Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
confucius
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
罗超
confucius
Commits
f6db8716
Commit
f6db8716
authored
Oct 22, 2021
by
zhengke
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改
parent
b7bf1364
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
1157 additions
and
0 deletions
+1157
-0
tougao-form.vue
src/components/flow/tougao-form.vue
+410
-0
tougao-form.vue
src/components/sale/tougao-form.vue
+726
-0
processSet.vue
src/pages/system/processSet.vue
+10
-0
changeClassManager.vue
src/pages/teacher/changeClassManager.vue
+11
-0
No files found.
src/components/flow/tougao-form.vue
0 → 100644
View file @
f6db8716
<
style
>
.changeClassProcess
{
width
:
350px
;
}
.changeClassProcess
.processList
{
width
:
100%
;
height
:
auto
;
}
.changeClassProcess
.processTop
{
width
:
100%
;
height
:
54px
;
background-color
:
#f1f1f1
;
color
:
#000000
;
text-align
:
center
;
line-height
:
54px
;
border-radius
:
2px
;
cursor
:
pointer
;
position
:
relative
;
}
.changeClassProcess
.processLine
{
width
:
100%
;
height
:
54px
;
background-color
:
#fff
;
color
:
#bbb6b6
;
text-align
:
center
;
line-height
:
54px
;
}
.changeClassProcess
.processLine
i
{
font-size
:
25px
;
font-weight
:
bold
;
}
.changeClassProcess
.otherList
{
background-color
:
#2961fe
!important
;
color
:
#fff
;
font-weight
:
bold
;
}
.changeClassProcess
.process_TwoList
{
display
:
flex
;
background-color
:
#2961fe
!important
;
color
:
#fff
;
font-weight
:
bold
;
align-items
:
center
;
justify-content
:
center
;
}
.changeClassProcess
.process_He
{
width
:
36px
;
height
:
36px
;
background-color
:
#3fc4ff
;
text-align
:
center
;
line-height
:
36px
;
color
:
#fff
;
border-radius
:
50%
;
}
.changeClassProcess
.process_Left
{
width
:
40%
;
height
:
100%
;
text-align
:
right
;
}
.changeClassProcess
.process_center
{
width
:
20%
;
height
:
100%
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
}
.changeClassProcess
.process_Right
{
width
:
40%
;
height
:
100%
;
text-align
:
left
;
}
.changeClassProcess
.process_OR
{
background-color
:
#f28c1d
;
}
.changeClassProcess
.addProcessBtn
{
width
:
100%
;
height
:
45px
;
text-align
:
center
;
line-height
:
45px
;
color
:
#2961fe
;
border
:
1px
dashed
#2961fe
;
border-radius
:
2px
;
cursor
:
pointer
;
}
.changeClassProcess
.process_BtnList
{
margin-top
:
30px
;
width
:
100%
;
display
:
flex
;
justify-content
:
center
;
}
.changeClassProcess
.process_BtnOne
{
width
:
90px
;
height
:
38px
;
text-align
:
center
;
line-height
:
38px
;
border-radius
:
2px
;
border
:
1px
solid
#a1aab2
;
color
:
#000000
;
cursor
:
pointer
;
margin-right
:
50px
;
}
.changeClassProcess
.SetShouSun
{
display
:
inline-block
;
border-radius
:
2px
;
background-color
:
#8175fb
;
color
:
#fff
;
position
:
absolute
;
right
:
10px
;
width
:
60px
;
height
:
27px
;
left
:
0
;
top
:
0
;
line-height
:
27px
;
font-size
:
13px
;
}
.changeClassProcess
.operationDiv
{
position
:
absolute
;
right
:
0
;
top
:
0
;
height
:
30px
;
line-height
:
30px
;
padding-right
:
10px
;
vertical-align
:
top
;
}
.changeClassProcess
.operationDiv
i
:first-child
{
font-size
:
13px
;
}
.changeClassProcess
.operationDiv
i
:hover
{
color
:
red
;
}
.changeClassProcess
.justTwoClass
{
margin-left
:
8px
;
}
</
style
>
<
template
>
<div
class=
"changeClassProcess"
>
<div
class=
"processList"
>
<div
class=
"processTop"
>
发起人
</div>
<div
class=
"processLine"
>
<i
class=
"iconfont icon-down"
></i>
</div>
</div>
<template
v-for=
"(item, index) in flowObj.FlowNodeList"
>
<div
class=
"processList"
@
click=
"getItem(index)"
>
<template
v-if=
"item.FlowAduitList && item.FlowAduitList.length == 1"
>
<div
class=
"processTop otherList"
>
{{
item
.
FlowAduitList
[
0
].
AduitName
}}
<template
v-if=
"
item.FlowAduitList &&
item.FlowAduitList.length > 0 &&
item.FlowAduitList[0].IsSpecNode == 1
"
>
<span
class=
"SetShouSun"
>
设定收损
</span>
</
template
>
<div
class=
"operationDiv"
>
<i
class=
"iconfont icon-shanchu"
style=
"position: relative; top: -2px"
@
click
.
stop=
"DeleteNode(index)"
></i>
<i
style=
"margin: 0 8px"
class=
"iconfont icon-shangyi2"
v-if=
"index != 0"
@
click
.
stop=
"moveDown(index, 0)"
></i>
<i
class=
"iconfont icon-xiayi"
:class=
"{ justTwoClass: index == 0 }"
@
click
.
stop=
"moveDown(index, 1)"
v-if=
"index != flowObj.FlowNodeList.length - 1"
></i>
</div>
</div>
<div
class=
"processLine"
v-if=
"index != flowObj.FlowNodeList.length - 1"
>
<i
class=
"iconfont icon-down"
></i>
</div>
</template>
<
template
v-else
>
<div
class=
"processTop process_TwoList"
>
<div
class=
"process_Left"
>
{{
item
.
FlowAduitList
[
0
].
AduitName
}}
</div>
<div
class=
"process_center"
>
<template
v-if=
"item.FlowAduitList[0].AuditWay == 2"
>
<div
class=
"process_He"
>
和
</div>
</
template
>
<
template
v-if=
"item.FlowAduitList[0].AuditWay == 3"
>
<div
class=
"process_He process_OR"
>
或者
</div>
</
template
>
</div>
<div
class=
"process_Right"
>
<
template
v-for=
"(subItem, subIndex) in item.FlowAduitList"
v-if=
"subIndex > 0"
>
{{
subItem
.
AduitName
}}
</
template
>
</div>
<
template
v-if=
"
item.FlowAduitList &&
item.FlowAduitList.length > 0 &&
item.FlowAduitList[0].IsSpecNode == 1
"
>
<span
class=
"SetShouSun"
>
设定收损
</span>
</
template
>
<div
class=
"operationDiv"
>
<i
class=
"iconfont icon-shanchu"
style=
"position: relative; top: -2px"
@
click
.
stop=
"DeleteNode(index)"
></i>
<i
style=
"margin: 0 8px"
class=
"iconfont icon-shangyi2"
v-if=
"index != 0"
@
click
.
stop=
"moveDown(index, 0)"
></i>
<i
class=
"iconfont icon-xiayi"
:class=
"{ justTwoClass: index == 0 }"
@
click
.
stop=
"moveDown(index, 1)"
v-if=
"index != flowObj.FlowNodeList.length - 1"
></i>
</div>
</div>
<div
class=
"processLine"
v-if=
"index != flowObj.FlowNodeList.length - 1"
>
<i
class=
"iconfont icon-down"
></i>
</div>
</template>
</div>
</template>
<br
/>
<div
class=
"addProcessBtn"
@
click=
"AddNode"
>
新增节点
</div>
<div
class=
"process_BtnList"
>
<q-btn
label=
"保存"
color=
"accent q-px-md"
style=
"font-weight: 400 !important"
@
click=
"setBackClassFlow"
/>
</div>
<process-form
v-if=
"isShowProcess"
:save-obj=
"processObj"
:NodeIndex=
"ChooseNodeIndex"
@
close=
"closeProcessForm"
@
success=
"refreshPage"
:authObj=
"showObj"
>
</process-form>
</div>
</template>
<
script
>
import
processForm
from
"../../components/flow/process-form"
;
import
{
queryBackClassFlow
,
saveBackClassFlow
}
from
"../../api/system/index"
;
export
default
{
meta
:
{
title
:
""
,
},
components
:
{
processForm
,
},
data
()
{
return
{
msg
:
{
FlowId
:
10
,
},
isShowProcess
:
false
,
//显示旁边弹窗
processObj
:
{},
//传递子组件
flowObj
:
{
FlowId
:
10
,
FlowName
:
"投稿审批"
,
FlowNodeList
:
[],
//审核节点列表
},
//显示对象
showObj
:
{
isShowShouSun
:
0
,
//不显示收损
},
ChooseNodeIndex
:
0
,
};
},
created
()
{},
mounted
()
{
this
.
getBackClassFlow
();
},
methods
:
{
//新增节点
AddNode
()
{
this
.
flowObj
.
FlowNodeList
.
push
({
FlowId
:
0
,
NodeId
:
0
,
NodeName
:
"新增节点"
,
SortNum
:
0
,
FlowAduitList
:
[
{
AduitName
:
"新增节点"
,
AuditType
:
2
,
AuditWay
:
2
,
CheckId
:
0
,
FlowId
:
0
,
IsSpecNode
:
0
,
NodeId
:
8
,
PostType
:
0
,
UserId
:
0
,
},
],
});
},
//删除节点
DeleteNode
(
index
)
{
this
.
$q
.
dialog
({
title
:
"提示信息"
,
message
:
"是否确定删除该流程"
,
cancel
:
true
,
persistent
:
true
,
ok
:
"确定"
,
cancel
:
"取消"
,
})
.
onOk
(()
=>
{
this
.
flowObj
.
FlowNodeList
.
splice
(
index
,
1
);
})
.
onCancel
(()
=>
{});
},
getBackClassFlow
()
{
queryBackClassFlow
(
this
.
msg
).
then
((
res
)
=>
{
if
(
res
.
Code
==
1
&&
res
.
Data
)
{
this
.
flowObj
=
res
.
Data
;
}
});
},
//点开旁边
getItem
(
nodeIndex
)
{
this
.
processObj
=
this
.
flowObj
;
this
.
ChooseNodeIndex
=
nodeIndex
;
this
.
isShowProcess
=
true
;
},
//关闭
closeProcessForm
()
{
this
.
isShowProcess
=
false
;
},
//成功刷新
refreshPage
()
{
this
.
isShowProcess
=
false
;
this
.
getBackClassFlow
();
},
//保存退课流程
setBackClassFlow
()
{
saveBackClassFlow
(
this
.
flowObj
).
then
((
res
)
=>
{
if
(
res
.
Code
==
1
)
{
this
.
$q
.
notify
({
icon
:
"iconfont icon-chenggong"
,
color
:
"accent"
,
timeout
:
2000
,
message
:
"操作成功"
,
position
:
"top"
,
});
this
.
refreshPage
();
}
});
},
//下移下移
moveDown
(
index
,
IsUp
)
{
var
currentItem
=
this
.
flowObj
.
FlowNodeList
[
index
];
if
(
IsUp
==
0
)
{
if
(
index
>
0
)
{
var
upItem
=
this
.
flowObj
.
FlowNodeList
[
index
-
1
];
this
.
$set
(
this
.
flowObj
.
FlowNodeList
,
index
-
1
,
currentItem
);
this
.
$set
(
this
.
flowObj
.
FlowNodeList
,
index
,
upItem
);
}
}
else
{
if
(
index
!=
this
.
flowObj
.
FlowNodeList
.
length
-
1
)
{
var
downItem
=
this
.
flowObj
.
FlowNodeList
[
index
+
1
];
this
.
$set
(
this
.
flowObj
.
FlowNodeList
,
index
+
1
,
currentItem
);
this
.
$set
(
this
.
flowObj
.
FlowNodeList
,
index
,
downItem
);
}
}
},
},
};
</
script
>
src/components/sale/tougao-form.vue
0 → 100644
View file @
f6db8716
<!--组卷审核信息-->
<
style
>
.backbill-Dialog
.drawerTop
{
width
:
100%
;
height
:
50px
;
display
:
flex
;
justify-content
:
space-between
;
background-color
:
#f0f5fb
;
padding
:
5px
10px
;
align-items
:
center
;
}
.backbill-Dialog
.classFirst
{
color
:
#000000
;
font-weight
:
bold
;
}
.backbill-Dialog
.className
{
margin-left
:
10px
;
}
.backbill-Dialog
.classStatus
{
padding
:
3px
8px
;
background-color
:
#c8d7fc
;
color
:
#2961fe
;
font-size
:
12px
;
border-radius
:
2px
;
margin-left
:
20px
;
}
.backbill-Dialog
.normalName
{
color
:
#999999
;
}
.backbill-Dialog
.normalInner
{
color
:
#111111
;
}
.drop_NameDown
{
margin-top
:
20px
;
width
:
300px
;
}
.backinfoContent
.replayReason
{
width
:
100%
;
min-height
:
100px
;
background-color
:
#f7f7f7
;
border-radius
:
3px
;
padding
:
20px
;
margin
:
20px
0
;
}
.backinfoContent
.replay_Title
{
font-weight
:
700
;
color
:
#111
;
}
.backinfoContent
.baseInfo_Item
{
margin-bottom
:
20px
;
}
.backinfoContent
.EmpList
{
background-color
:
#f7f7f7
;
min-height
:
70px
;
margin-right
:
15px
;
border-radius
:
3px
;
padding
:
15px
;
}
.backinfoContent
.EmpList
:last-child
{
margin-right
:
0
;
}
.backinfoContent
.normalName
{
color
:
#999999
;
font-size
:
12px
;
}
.backinfoContent
.normalInner
{
color
:
#111111
;
font-weight
:
bold
;
font-size
:
13px
;
margin-top
:
5px
;
}
.changeBTable
th
{
font-size
:
12px
;
font-weight
:
400
;
background-color
:
rgba
(
0
,
0
,
0
,
0.12
);
height
:
40px
;
line-height
:
40px
;
}
.changeBTable
td
{
text-align
:
center
;
height
:
30px
;
}
.BillredClass
{
color
:
red
;
}
._addUpload_box
{
display
:
block
;
margin-top
:
15px
;
}
._addUpload_box
img
{
width
:
100%
;
}
._addUpload_box
>
div
{
float
:
left
;
width
:
138px
;
height
:
92px
;
border
:
1px
dashed
rgba
(
210
,
210
,
210
,
1
);
border-radius
:
2px
;
cursor
:
pointer
;
margin-bottom
:
10px
;
padding
:
5px
;
margin-right
:
10px
;
position
:
relative
;
text-align
:
center
;
}
._addUpload_box
>
div
:hover
{
background-color
:
#f5f5f5
;
}
._addFile_name
{
padding-left
:
15px
;
max-width
:
450px
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
}
._addUpload_box
.icon-guanbi1
{
font-size
:
12px
;
color
:
white
;
display
:
inline-block
;
margin-left
:
15px
;
position
:
absolute
;
right
:
-6px
;
top
:
-9px
;
background-color
:
#f56c6c
;
border-radius
:
50%
;
height
:
20px
;
width
:
20px
;
text-align
:
center
;
line-height
:
20px
;
}
._addUpload_box
.icon-guanbi1
:hover
{
font-size
:
12px
;
color
:
#c94052
;
}
._addUpload_box
.icon-excel
,
._addUpload_box
.icon-pdf
,
._addUpload_box
.icon-txt
,
._addUpload_box
.icon-wenjian
,
._addUpload_box
.icon-yasuobao
,
._addUpload_box
.icon-shipin
,
._addUpload_box
.icon-word
{
text-align
:
center
;
font-size
:
38px
;
color
:
green
;
line-height
:
75px
;
}
._addUpload_box
.icon-yasuobao
{
color
:
gray
;
}
._show_img_box
{
position
:
fixed
;
background
:
rgba
(
0
,
0
,
0
,
0.6
);
left
:
0
;
top
:
0
;
width
:
100%
;
height
:
100%
;
z-index
:
999
;
text-align
:
center
;
}
._addUpload_tips
{
font-size
:
12px
;
color
:
#999999
;
}
._jump_page
{
cursor
:
pointer
;
text-decoration
:
underline
;
}
._jump_page
:hover
{
color
:
#c94052
;
}
.tougao_ImgList
{
width
:
150px
;
height
:
150px
;
margin
:
0
5px
10px
;
}
</
style
>
<
template
>
<q-dialog
v-model=
"persistent"
maximized
full-height
seamless
position=
"right"
@
hide=
"closeShenheForm"
>
<q-card
style=
"margin-top: 61px; width: 850px"
class=
"no-border-radius backbill-Dialog"
>
<div
class=
"drawerTop"
>
<div
style=
"display: flex; align-items: center"
>
<div
class=
"className"
>
<div
class=
"classFirst"
>
{{
changeTitle
}}
</div>
</div>
</div>
</div>
<q-tabs
style=
"margin: 15px"
v-model=
"tabCheck"
narrow-indicator
dense
align=
"left"
class=
"text-primary"
>
<q-tab
:ripple=
"false"
name=
"first"
label=
"详细信息"
/>
<q-tab
:ripple=
"false"
name=
"second"
label=
"审批记录"
/>
</q-tabs>
<div
v-if=
"tabCheck == 'first'"
style=
"margin: 0 15px"
>
<div
class=
"backinfoContent"
>
<div>
<div
class=
"topBaseInfo"
>
<div
class=
"backinfo_Item"
>
<span
class=
"role_Line"
></span>
基本信息
</div>
<div
class=
"row backInfo_One"
>
<div
class=
"col-6"
>
<span
class=
"backInfo_Title"
>
编号:
</span>
<span
class=
"backOtherInfo"
v-if=
"setingObj.DataObj"
>
{{
setingObj
.
DataObj
.
Id
}}
</span>
</div>
<div
class=
"col-6"
>
<span
class=
"backInfo_Title"
>
申请人:
</span>
<span
class=
"backOtherInfo"
>
{{
setingObj
.
CreateByName
}}
</span>
</div>
</div>
<div
class=
"row backInfo_One"
>
<div
class=
"col-12"
>
<span
class=
"backInfo_Title"
>
申请时间:
</span>
<span
class=
"backOtherInfo"
>
{{
setingObj
.
CreateTime
}}
</span>
</div>
</div>
</div>
<div
class=
"topBaseInfo"
>
<div
class=
"backinfo_Item"
>
<span
class=
"role_Line"
></span>
详细信息
</div>
<div
class=
"backInfo_One"
>
<template
v-if=
"setingObj.DataObj.Type==1"
>
<div>
<el-tag>
写新图文
</el-tag>
</div>
<div
style=
"margin:20px 0;display:flex;"
>
<div
style=
"flex-shrink:0;"
>
标题:
</div>
<div
class=
"backOtherInfo"
v-if=
"setingObj.DataObj"
>
{{
setingObj
.
DataObj
.
Title
}}
</div>
</div>
<div>
<span>
作者:
</span>
<span
class=
"backOtherInfo"
v-if=
"setingObj.DataObj"
>
{{
setingObj
.
DataObj
.
Author
}}
</span>
</div>
<div
style=
"margin:20px 0;"
v-html=
"setingObj.DataObj.Content"
></div>
<div
style=
"margin-top:20px;display:flex;"
>
<div
style=
"margin-bottom:10px;"
>
封面图:
</div>
<div
class=
"tougao_ImgList"
>
<el-image
style=
"width: 100%; height: 100%"
:src=
"setingObj.DataObj.CoverImagePath"
fit=
"cover"
></el-image>
</div>
</div>
<div
style=
"margin-top:20px;display:flex;"
>
<div
style=
"margin-bottom:10px;flex-shrink:0;width:60px;"
>
描述:
</div>
<div>
{{
setingObj
.
DataObj
.
Description
}}
</div>
</div>
</
template
>
<
template
v-if=
"setingObj.DataObj.Type==2"
>
<div>
<el-tag>
文本消息
</el-tag>
</div>
<div
style=
"margin-top:20px;"
v-html=
"setingObj.DataObj.Content"
></div>
</
template
>
<
template
v-if=
"setingObj.DataObj.Type==4"
>
<div>
<el-tag>
音频消息
</el-tag>
</div>
<div
style=
"margin:20px 0;display:flex;"
>
<div
style=
"flex-shrink:0"
>
标题:
</div>
<div
class=
"backOtherInfo"
v-if=
"setingObj.DataObj"
>
{{
setingObj
.
DataObj
.
Title
}}
</div>
</div>
<div>
{{
setingObj
.
DataObj
.
Description
}}
</div>
<div
style=
"margin-top:20px;width:300px;"
v-if=
"setingObj.DataObj.VideoMediumPath"
>
<audio
:src=
"setingObj.DataObj.VideoMediumPath"
controls=
"controls"
></audio>
</div>
</
template
>
<
template
v-if=
"setingObj.DataObj.Type==5"
>
<div>
<el-tag>
图片消息
</el-tag>
</div>
<div
style=
"margin:20px 0;"
>
{{
setingObj
.
DataObj
.
Description
}}
</div>
<div
style=
"display:flex;"
>
<div
class=
"tougao_ImgList"
v-for=
"(x,y) in setingObj.DataObj.ImageList"
:key=
'y'
>
<el-image
style=
"width: 100%; height: 100%"
:src=
"x.ImageUrl"
fit=
"cover"
></el-image>
</div>
</div>
<div
style=
"margin-top:20px;display:flex;"
>
<div
style=
"margin-bottom:10px;"
>
封面图:
</div>
<div
class=
"tougao_ImgList"
>
<el-image
style=
"width: 100%; height: 100%"
:src=
"setingObj.DataObj.CoverImagePath"
fit=
"cover"
></el-image>
</div>
</div>
</
template
>
</div>
</div>
<div
v-if=
"showType == 2"
>
<div
style=
"
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 20px;
"
>
<div>
审批意见
</div>
<div>
<q-radio
v-model=
"changeBillMsg.AuditStatus"
:val=
"2"
label=
"通过"
/>
<q-radio
v-model=
"changeBillMsg.AuditStatus"
:val=
"3"
label=
"驳回"
/>
</div>
</div>
<q-input
filled
stack-label
:dense=
"false"
v-model=
"changeBillMsg.Description"
type=
"textarea"
label=
"审批意见"
/>
</div>
<div
style=
"margin-top: 20px"
>
<div
class=
"row"
>
<div
class=
"col-6"
style=
"display: flex; align-items: top"
>
<
template
v-if=
"tempPeople.length > 0"
>
<div
style=
"display: inline-block; width: 45px"
>
抄送:
</div>
<div
style=
"
display: inline-block;
margin-left: 5px;
width: 340px;
"
>
<span
class=
"chaosong_Peo"
v-for=
"(childItem, cindex) in tempPeople"
>
{{
getName
(
childItem
)
}}
</span>
</div>
</
template
>
</div>
<div
class=
"col-6"
style=
"
justify-content: flex-end;
display: flex;
align-items: center;
"
>
<i
class=
"iconfont icon-aite"
style=
"
font-size: 20px;
margin: 7px 20px 0 0;
cursor: pointer;
"
v-if=
"showType == 2"
>
<q-popup-proxy>
<q-banner>
<div
style=
"width: 350px"
>
<div
style=
"margin: 10px 0 15px 0"
>
抄送
</div>
<q-select
class=
"col-6 q-pb-lg q-pr-lg"
multiple
clearable
filled
stack-label
use-input
option-value=
"Id"
option-label=
"EmployeeName"
v-model=
"tempPeople"
ref=
"ManagerId"
:options=
"EmployeeList"
label=
"选择人员"
:dense=
"false"
emit-value
map-options
@
filter=
"filterFn"
>
<
template
v-slot:no-option
>
<q-item>
<q-item-section
class=
"text-grey"
>
未找到相关数据
</q-item-section>
</q-item>
</
template
>
</q-select>
</div>
</q-banner>
</q-popup-proxy>
</i>
<q-btn
class=
"q-mr-md"
label=
"关闭"
@
click=
"closeBackInfo"
/>
<q-btn
v-if=
"showType == 2"
color=
"accent q-px-md"
label=
"确认"
@
click=
"saveBackClassInfo()"
/>
</div>
</div>
</div>
</div>
</div>
</div>
<div
v-if=
"tabCheck == 'second'"
>
<flowinfoForm
:seting-obj=
"setingObj"
:showType=
"showType"
@
close=
"closeShenheForm"
@
success=
"refreshPage"
>
</flowinfoForm>
</div>
</q-card>
<div
class=
"dialog-out-close"
@
click=
"closeShenheForm"
style=
"
height: 40px !important;
border-top-left-radius: 4px !important;
border-bottom-left-radius: 4px !important;
"
>
<q-icon
name=
"iconfont icon-jujue1"
size=
"26px"
/>
</div>
<div
v-if=
"picIsShow"
class=
"_show_img_box"
@
click=
"(picIsShow = false), (picObj = [])"
>
<div
style=
"
position: absolute;
max-width: 800px;
height: auto;
left: 50%;
top: 50%;
margin-left: -400px;
transform: translateY(-50%);
"
>
<el-image
style=
"width: 100%; height: 100%"
fit=
"cover"
v-for=
"(item, index) in picObj"
:key=
"index"
:src=
"item"
:preview-src-list=
"picObj"
>
</el-image>
</div>
</div>
</q-dialog>
</template>
<
script
>
import
flowinfoForm
from
"../sale/flowinfo-form"
;
import
{
saveBackBillAduit
}
from
"../../api/sale/bill"
;
import
{
queryEmployee
}
from
"../../api/users/user"
;
export
default
{
props
:
{
setingObj
:
{
type
:
Object
,
default
:
null
,
},
showType
:
{
type
:
Number
,
default
:
1
,
},
},
components
:
{
flowinfoForm
,
},
data
()
{
return
{
persistent
:
true
,
tabCheck
:
"first"
,
//默认选第一个
loading
:
false
,
changeBillMsg
:
{
Id
:
0
,
Description
:
""
,
//审批意见
AuditStatus
:
2
,
//审核状态
SpecialNode
:
0
,
//是否特殊节点
RecipientIds
:
""
,
//抄送人
},
classPriceObj
:
{},
//课程价格信息
EmployeeList
:
[],
AllemployeeList
:
[],
tempPeople
:
[],
//抄送人数组
changeTitle
:
"投稿审批"
,
dataList
:
[],
picIsShow
:
false
,
picObj
:
[],
initialIndex
:
0
,
};
},
computed
:
{
fj
()
{
let
arr
=
[];
let
fjlist
=
this
.
setingObj
.
ReceiptFileList
;
fjlist
.
map
((
item
)
=>
{
let
suffix
=
item
.
split
(
"."
)[
item
.
split
(
"."
).
length
-
1
].
toUpperCase
();
if
(
"DOCX|DOC|XLSX|XLS|PPT|PPTX|PDF|TXT"
.
indexOf
(
suffix
)
!=
"-1"
)
{
let
obj
=
{
url
:
item
,
type
:
1
,
suffix
:
suffix
,
};
arr
.
push
(
obj
);
}
else
if
(
"GIF|JPG|JPEG|PNG|BMP|WEBP"
.
indexOf
(
suffix
)
!=
"-1"
)
{
let
obj
=
{
url
:
item
,
type
:
2
,
suffix
:
suffix
,
};
arr
.
push
(
obj
);
}
else
if
(
"ZIP|RAR|7Z|TAR"
.
indexOf
(
suffix
)
!=
"-1"
)
{
let
obj
=
{
url
:
item
,
type
:
3
,
suffix
:
suffix
,
};
arr
.
push
(
obj
);
}
else
if
(
"MP4|3GP|AVI|MOV|WMV|RMVB|MKV|M4V|FLV"
.
indexOf
(
suffix
)
!=
"-1"
)
{
let
obj
=
{
url
:
item
,
type
:
4
,
suffix
:
suffix
,
};
arr
.
push
(
obj
);
}
else
{
let
obj
=
{
url
:
item
,
type
:
5
,
suffix
:
suffix
,
};
arr
.
push
(
obj
);
}
});
return
arr
;
},
},
created
()
{
this
.
getEmployee
();
},
mounted
()
{
this
.
changeBillMsg
.
Id
=
this
.
setingObj
.
Id
;
this
.
changeBillMsg
.
SpecialNode
=
this
.
setingObj
.
SpecialNode
;
},
methods
:
{
closeBackInfo
()
{
this
.
persistent
=
false
;
this
.
$emit
(
"close"
);
},
//退课单据审核
saveBackClassInfo
()
{
var
str
=
""
;
if
(
this
.
tempPeople
&&
this
.
tempPeople
.
length
>
0
)
{
this
.
tempPeople
.
forEach
((
item
)
=>
{
str
+=
","
+
item
;
});
}
if
(
str
&&
str
!=
""
)
{
str
=
str
.
substr
(
1
);
}
this
.
changeBillMsg
.
RecipientIds
=
str
;
if
(
this
.
changeBillMsg
.
AuditStatus
==
3
)
{
if
(
this
.
changeBillMsg
.
Description
==
""
||
!
this
.
changeBillMsg
.
Description
)
{
this
.
$q
.
notify
({
type
:
"negative"
,
message
:
"请填写驳回理由"
,
position
:
"top"
,
timeout
:
2000
,
});
return
;
}
this
.
$q
.
dialog
({
title
:
"提示信息"
,
message
:
"确定要驳回吗?"
,
cancel
:
true
,
persistent
:
true
,
ok
:
"确定"
,
cancel
:
"取消"
,
})
.
onOk
(()
=>
{
saveBackBillAduit
(
this
.
changeBillMsg
).
then
((
res
)
=>
{
if
(
res
.
Code
==
1
)
{
this
.
$q
.
notify
({
icon
:
"iconfont icon-chenggong"
,
color
:
"accent"
,
timeout
:
2000
,
message
:
"审核成功!"
,
position
:
"top"
,
});
//调用父页面成功方法
this
.
$emit
(
"success"
);
this
.
$emit
(
"close"
);
}
});
})
.
onCancel
(()
=>
{});
}
else
{
saveBackBillAduit
(
this
.
changeBillMsg
).
then
((
res
)
=>
{
if
(
res
.
Code
==
1
)
{
this
.
$q
.
notify
({
icon
:
"iconfont icon-chenggong"
,
color
:
"accent"
,
timeout
:
2000
,
message
:
"审核成功!"
,
position
:
"top"
,
});
//调用父页面成功方法
this
.
$emit
(
"success"
);
this
.
$emit
(
"close"
);
}
});
}
},
//获取员工列表
getEmployee
()
{
var
qMsg
=
{
EmployeeName
:
""
,
};
queryEmployee
(
qMsg
).
then
((
res
)
=>
{
if
(
res
.
Code
==
1
)
{
var
jsonData
=
res
.
Data
;
if
(
jsonData
&&
jsonData
.
length
>
0
)
{
this
.
AllemployeeList
=
JSON
.
parse
(
JSON
.
stringify
(
jsonData
));
this
.
EmployeeList
=
JSON
.
parse
(
JSON
.
stringify
(
jsonData
));
}
}
});
},
//筛选员工
filterFn
(
val
,
update
)
{
update
(()
=>
{
if
(
val
===
""
)
{
this
.
EmployeeList
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
AllemployeeList
));
}
else
{
const
needle
=
val
.
toLowerCase
();
this
.
EmployeeList
=
this
.
AllemployeeList
.
filter
(
(
v
)
=>
v
.
EmployeeName
.
toLowerCase
().
indexOf
(
needle
)
>
-
1
);
}
});
},
//获取员工姓名
getName
(
id
)
{
let
str
=
""
;
this
.
EmployeeList
.
forEach
((
x
)
=>
{
if
(
id
==
x
.
Id
)
{
str
=
x
.
EmployeeName
;
}
});
return
str
;
},
refreshPage
()
{
this
.
persistent
=
false
;
this
.
$emit
(
"success"
);
},
closeShenheForm
()
{
this
.
persistent
=
false
;
this
.
$emit
(
"close"
);
},
},
};
</
script
>
src/pages/system/processSet.vue
View file @
f6db8716
...
@@ -47,6 +47,10 @@
...
@@ -47,6 +47,10 @@
<!-- 请假流程 -->
<!-- 请假流程 -->
<leave-form></leave-form>
<leave-form></leave-form>
</
template
>
</
template
>
<
template
v-if=
"tabCheck == '8'"
>
<!-- 投稿审批 -->
<tougao-form></tougao-form>
</
template
>
</div>
</div>
</div>
</div>
</template>
</template>
...
@@ -58,6 +62,7 @@ import transferForm from "../../components/flow/transfer-form";
...
@@ -58,6 +62,7 @@ import transferForm from "../../components/flow/transfer-form";
import
temporaryClassForm
from
"../../components/flow/temporaryClass-form"
;
import
temporaryClassForm
from
"../../components/flow/temporaryClass-form"
;
import
separateForm
from
"../../components/flow/separate-form"
;
import
separateForm
from
"../../components/flow/separate-form"
;
import
leaveForm
from
"../../components/flow/leave-form"
;
import
leaveForm
from
"../../components/flow/leave-form"
;
import
tougaoForm
from
"../../components/flow/tougao-form"
;
export
default
{
export
default
{
meta
:
{
meta
:
{
title
:
"流程设置"
,
title
:
"流程设置"
,
...
@@ -70,6 +75,7 @@ export default {
...
@@ -70,6 +75,7 @@ export default {
temporaryClassForm
,
temporaryClassForm
,
separateForm
,
separateForm
,
leaveForm
,
leaveForm
,
tougaoForm
},
},
data
()
{
data
()
{
return
{
return
{
...
@@ -102,6 +108,10 @@ export default {
...
@@ -102,6 +108,10 @@ export default {
name
:
"7"
,
name
:
"7"
,
label
:
"请假流程"
,
label
:
"请假流程"
,
},
},
{
name
:
"8"
,
label
:
"投稿审批"
}
],
],
tabCheck
:
"1"
,
tabCheck
:
"1"
,
};
};
...
...
src/pages/teacher/changeClassManager.vue
View file @
f6db8716
...
@@ -160,6 +160,9 @@
...
@@ -160,6 +160,9 @@
<!-- 考试申请 -->
<!-- 考试申请 -->
<examBillForm
v-if=
"isShowExamBillForm"
:seting-obj=
"billObj"
:showType=
"showType"
@
close=
"closeBillForm"
<examBillForm
v-if=
"isShowExamBillForm"
:seting-obj=
"billObj"
:showType=
"showType"
@
close=
"closeBillForm"
@
success=
"refreshPage"
></examBillForm>
@
success=
"refreshPage"
></examBillForm>
<!-- 投稿审批 -->
<tougaoForm
v-if=
"isShowTougaoForm"
:seting-obj=
"billObj"
:showType=
"showType"
@
close=
"closeBillForm"
@
success=
"refreshPage"
></tougaoForm>
</div>
</div>
</div>
</div>
</template>
</template>
...
@@ -179,6 +182,7 @@
...
@@ -179,6 +182,7 @@
import
leaveBillForm
from
"../../components/sale/leavebill-form.vue"
;
import
leaveBillForm
from
"../../components/sale/leavebill-form.vue"
;
import
zujuanBillForm
from
"../../components/sale/zujuanbill-form.vue"
;
import
zujuanBillForm
from
"../../components/sale/zujuanbill-form.vue"
;
import
examBillForm
from
"../../components/sale/exambill-form.vue"
;
import
examBillForm
from
"../../components/sale/exambill-form.vue"
;
import
tougaoForm
from
"../../components/sale/tougao-form.vue"
;
export
default
{
export
default
{
meta
:
{
meta
:
{
title
:
"业务单据"
,
title
:
"业务单据"
,
...
@@ -193,6 +197,7 @@
...
@@ -193,6 +197,7 @@
leaveBillForm
,
leaveBillForm
,
zujuanBillForm
,
zujuanBillForm
,
examBillForm
,
examBillForm
,
tougaoForm
},
},
data
()
{
data
()
{
return
{
return
{
...
@@ -284,6 +289,7 @@
...
@@ -284,6 +289,7 @@
isShowLeaveBillForm
:
false
,
//是否显示请假申请单详情
isShowLeaveBillForm
:
false
,
//是否显示请假申请单详情
isShowZujuanBillForm
:
false
,
//是否显示组卷申请单详情
isShowZujuanBillForm
:
false
,
//是否显示组卷申请单详情
isShowExamBillForm
:
false
,
//是否显示考试申请详情
isShowExamBillForm
:
false
,
//是否显示考试申请详情
isShowTougaoForm
:
false
//是否显示投稿申请详情
};
};
},
},
created
()
{
created
()
{
...
@@ -340,6 +346,7 @@
...
@@ -340,6 +346,7 @@
this
.
isShowLeaveBillForm
=
false
;
this
.
isShowLeaveBillForm
=
false
;
this
.
isShowZujuanBillForm
=
false
;
this
.
isShowZujuanBillForm
=
false
;
this
.
isShowExamBillForm
=
false
;
this
.
isShowExamBillForm
=
false
;
this
.
isShowTougaoForm
=
false
;
this
.
billObj
=
{};
this
.
billObj
=
{};
},
},
//显示表单
//显示表单
...
@@ -376,6 +383,10 @@
...
@@ -376,6 +383,10 @@
else
if
(
item
.
ReceiptType
==
9
)
{
else
if
(
item
.
ReceiptType
==
9
)
{
this
.
isShowExamBillForm
=
true
;
this
.
isShowExamBillForm
=
true
;
}
}
//投稿审批
else
if
(
item
.
ReceiptType
==
10
){
this
.
isShowTougaoForm
=
true
;
}
this
.
showType
=
type
;
this
.
showType
=
type
;
this
.
billObj
=
item
;
this
.
billObj
=
item
;
},
},
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment