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
f57dae51
Commit
f57dae51
authored
Aug 11, 2021
by
罗超
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gitlab.oytour.com/luochao/confucius
parents
7f0196be
34122328
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
1279 additions
and
284 deletions
+1279
-284
applet-form.vue
src/components/enterprise/applet-form.vue
+103
-42
imagetext-form.vue
src/components/enterprise/imagetext-form.vue
+116
-44
selectMaterial.vue
src/components/enterprise/selectMaterial.vue
+154
-53
question-form.vue
src/components/exam/question-form.vue
+0
-1
questionbank-form.vue
src/components/exam/questionbank-form.vue
+140
-0
leave-form.vue
src/components/flow/leave-form.vue
+410
-0
addWelcome.vue
src/pages/enterprise/addWelcome.vue
+109
-20
welcomeList.vue
src/pages/enterprise/welcomeList.vue
+1
-1
examCreate.vue
src/pages/exam/examCreate.vue
+101
-0
examEdit.vue
src/pages/exam/examEdit.vue
+46
-51
examManagement.vue
src/pages/exam/examManagement.vue
+10
-6
processSet.vue
src/pages/system/processSet.vue
+84
-66
routes.js
src/router/routes.js
+5
-0
No files found.
src/components/enterprise/applet-form.vue
View file @
f57dae51
...
...
@@ -61,42 +61,37 @@
<q-card-section
class=
"q-pt-none"
>
<el-form
ref=
"addMsg"
:model=
"addMsg"
label-width=
"120px"
>
<el-form-item
label=
"添加方式:"
>
<q-radio
v-model=
"addMsg.Addtype"
val=
"1"
label=
"新建"
/>
<q-radio
v-model=
"addMsg.Addtype"
val=
"2"
label=
"导入"
/>
<q-radio
v-model=
"Addtype"
val=
"1"
label=
"新建"
/>
<q-radio
v-model=
"Addtype"
val=
"2"
label=
"导入"
/>
</el-form-item>
<div
v-if=
"Addtype ==1 "
>
<el-form-item
label=
"素材分组:"
>
<q-select
filled
stack-label
option-value=
"Id"
option-label=
"Name"
style=
"width: 80%;"
v-model=
"addMsg.MediaGroupId"
ref=
"Id"
:options=
"classifyList"
label=
"分组"
:dense=
"false"
emit-value
map-options
/>
</el-form-item>
<div
v-if=
"addMsg.Addtype ==1 "
>
<el-form-item
label=
"图片封面:"
required
>
<div
class=
"up-box"
@
click=
"selectimg(2)"
>
<span
v-if=
"addMsg.
CoverImage
==''"
>
+
</span>
<q-img
v-else
:src=
"addMsg.
CoverImage
"
style=
"width: 100%;height: 100%;display: flex;"
>
<span
v-if=
"addMsg.
AppletModel.ImagePath
==''"
>
+
</span>
<q-img
v-else
:src=
"addMsg.
AppletModel.ImagePath
"
style=
"width: 100%;height: 100%;display: flex;"
>
</q-img>
</div>
</el-form-item>
<el-form-item
label=
"添加标题:"
required
>
<q-input
clearable
standout=
"bg-primary text-white"
v-model=
"addMsg.title"
label=
"标题"
style=
"width: 80%;"
/>
<q-input
clearable
standout=
"bg-primary text-white"
filled
v-model=
"addMsg.AppletModel.Title"
label=
"标题"
style=
"width: 80%;"
:rules=
"[val => !!val || '请输入标题']"
/>
</el-form-item>
<el-form-item
label=
"AppID:"
required
>
<q-input
clearable
standout=
"bg-primary text-white"
v-model=
"addMsg.AppID"
label=
"请填写小程序AppID,必须是关联到企业的小程序应用"
style=
"width: 80%;"
/>
<q-input
clearable
standout=
"bg-primary text-white"
filled
v-model=
"addMsg.AppletModel.AppletId"
label=
"请填写小程序AppID,必须是关联到企业的小程序应用"
style=
"width: 80%;"
:rules=
"[val => !!val || '请输入小程序ID']"
/>
</el-form-item>
<el-form-item
label=
"page路径:"
required
>
<q-input
clearable
standout=
"bg-primary text-white"
v-model=
"addMsg.link"
label=
"请填写小程序路径,例如:pages/index"
style=
"width: 80%;"
/>
<q-input
clearable
standout=
"bg-primary text-white"
filled
v-model=
"addMsg.AppletModel.Page"
label=
"请填写小程序路径,例如:pages/index"
style=
"width: 80%;"
:rules=
"[val => !!val || '请输入路径']"
/>
</el-form-item>
<el-form-item
label=
"素材同步:"
>
<div
class=
"q-gutter-sm"
style=
"align-items: flex-start;display: flex;"
>
<q-radio
v-model=
"addMsg.issynchro"
val=
"2"
label=
"不同步"
/>
<q-radio
v-model=
"addMsg.issynchro"
val=
"1"
label=
"同步至【内容引擎】"
/>
<div
v-if=
"addMsg.issynchro==1"
style=
"width: 200px;"
>
<q-select
filled
stack-label
option-value=
"ID"
option-label=
"Name"
v-model=
"addMsg.classifyId"
ref=
"ID"
:options=
"classifyList"
label=
"分类"
:dense=
"false"
emit-value
map-options
/>
</div>
</div>
</el-form-item>
</div>
<div
v-if=
"
addMsg.
Addtype ==2 "
>
<div
v-if=
"Addtype ==2 "
>
<el-form-item
label=
"小程序:"
required
>
<q-btn
color=
"accent"
class=
"q-mr-md"
label=
"选择小程序"
@
click=
"selectimg(
4
)"
/>
<q-btn
color=
"accent"
class=
"q-mr-md"
label=
"选择小程序"
@
click=
"selectimg(
6
)"
/>
</el-form-item>
</div>
...
...
@@ -106,12 +101,12 @@
<q-separator
/>
<q-card-actions
align=
"right"
class=
"bg-white"
>
<q-btn
class=
"q-mr-md"
label=
"取消"
@
click=
"closeEditOrder"
/>
<q-btn
color=
"accent"
class=
"q-mr-md"
label=
"
保存
"
@
click=
"saveOrderInfo()"
/>
<q-btn
color=
"accent"
class=
"q-mr-md"
label=
"
确定
"
@
click=
"saveOrderInfo()"
/>
</q-card-actions>
</q-card>
</q-dialog>
<!-- 图片 -->
<selectMaterial
v-if=
"isshowselectMaterial"
:materialType=
"materialType"
:saveobj=
'Selectobj'
<selectMaterial
v-if=
"isshowselectMaterial"
:materialType=
"materialType"
:saveobj=
'Selectobj'
:classifyList=
'classifyList'
@
close=
"getclose()"
@
success=
'getsuccess'
>
</selectMaterial>
</div>
...
...
@@ -121,6 +116,9 @@
import
{
UploadSelfFile
}
from
"../../api/common/common"
;
//上传图片
import
{
setWeChatMediumInfo
,
//新增素材
}
from
'../../api/system/wechat'
;
import
selectMaterial
from
"./selectMaterial"
export
default
{
...
...
@@ -129,6 +127,10 @@
type
:
Object
,
default
:
null
,
},
classifyList
:
{
type
:
Array
,
default
:
[],
},
},
components
:
{
selectMaterial
,
...
...
@@ -136,30 +138,28 @@
data
()
{
return
{
IsShow
:
true
,
Addtype
:
"1"
,
//添加方式 1为新建
addMsg
:
{
Addtype
:
'1'
,
//添加方式 1为新建
CoverImage
:
''
,
title
:
''
,
Content
:
''
,
issynchro
:
'1'
,
classifyId
:
''
,
AppID
:
''
,
link
:
''
,
Id
:
0
,
Type
:
6
,
Is_Sync
:
1
,
MediaGroupId
:
''
,
AppletModel
:{
AppletId
:
''
,
Page
:
''
,
Title
:
''
,
ImageName
:
''
,
ImagePath
:
''
,
}
},
materialType
:
2
,
Selectobj
:
{},
isshowselectMaterial
:
false
,
classifyList
:[
{
Name
:
'活动'
,
ID
:
1
,},
{
Name
:
'产品'
,
ID
:
2
,},
{
Name
:
'校园'
,
ID
:
3
,},
],
}
},
created
()
{
if
(
JSON
.
stringify
(
this
.
saveobj
)
!==
'{}'
)
{
this
.
addMsg
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
saveobj
))
}
},
mounted
()
{
...
...
@@ -180,15 +180,76 @@
this
.
isshowselectMaterial
=
false
},
getsuccess
(
data
)
{
//选择数据回来
this
.
Selectobj
=
data
if
(
this
.
materialType
==
2
){
this
.
addMsg
.
AppletModel
.
ImageName
=
data
.
ImageModel
.
ImageName
this
.
addMsg
.
AppletModel
.
ImagePath
=
data
.
ImageModel
.
ImagePath
}
else
{
this
.
$emit
(
'success'
,
data
)
}
this
.
addMsg
.
CoverImage
=
data
.
img
this
.
isshowselectMaterial
=
false
},
saveOrderInfo
(){
this
.
$emit
(
'success'
,
this
.
addMsg
)
setWeChat
(){
setWeChatMediumInfo
(
this
.
addMsg
).
then
(
res
=>
{
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
timeout
:
2000
,
message
:
'操作成功'
,
position
:
'top'
})
this
.
Selectobj
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
addMsg
))
this
.
Selectobj
.
Id
=
res
.
Data
this
.
$emit
(
'success'
,
this
.
Selectobj
)
})
},
saveOrderInfo
()
{
//小程序
if
(
this
.
addMsg
.
MediaGroupId
==
''
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
message
:
`请选择分组选择`
,
position
:
'top'
})
return
}
if
(
this
.
addMsg
.
AppletModel
.
ImagePath
==
''
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
message
:
`请填写上传图片`
,
position
:
'top'
})
return
}
if
(
this
.
addMsg
.
AppletModel
.
AppletId
==
''
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
message
:
`请填写小程序ID`
,
position
:
'top'
})
return
}
if
(
this
.
addMsg
.
AppletModel
.
Page
==
''
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
message
:
`请填写路径`
,
position
:
'top'
})
return
}
if
(
this
.
addMsg
.
AppletModel
.
Title
==
''
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
message
:
`请填写小程序标题`
,
position
:
'top'
})
return
}
this
.
setWeChat
()
},
...
...
src/components/enterprise/imagetext-form.vue
View file @
f57dae51
...
...
@@ -61,39 +61,41 @@
<q-card-section
class=
"q-pt-none"
>
<el-form
ref=
"addMsg"
:model=
"addMsg"
label-width=
"120px"
>
<el-form-item
label=
"添加方式:"
>
<q-radio
v-model=
"addMsg.Addtype"
val=
"1"
label=
"新建"
/>
<q-radio
v-model=
"addMsg.Addtype"
val=
"2"
label=
"导入"
/>
<q-radio
v-model=
"Addtype"
val=
"1"
label=
"新建"
/>
<q-radio
v-model=
"Addtype"
val=
"2"
label=
"导入"
/>
</el-form-item>
<div
v-if=
"Addtype ==1 "
>
<el-form-item
label=
"分组:"
>
<q-select
filled
stack-label
option-value=
"Id"
option-label=
"Name"
style=
"width: 80%;"
v-model=
"addMsg.MediaGroupId"
ref=
"Id"
:options=
"classifyList"
label=
"分组"
:dense=
"false"
emit-value
map-options
/>
</el-form-item>
<div
v-if=
"addMsg.Addtype ==1 "
>
<el-form-item
label=
"图片封面:"
required
>
<div
class=
"up-box"
@
click=
"selectimg(2)"
>
<span
v-if=
"addMsg.CoverImage==''"
>
+
</span>
<q-img
v-else
:src=
"addMsg.CoverImage"
style=
"width: 100%;height: 100%;display: flex;"
>
<span
v-if=
"addMsg.ImgTextModel.ImgPath==''"
>
+
</span>
<q-img
v-else
:src=
"addMsg.ImgTextModel.ImgPath"
style=
"width: 100%;height: 100%;display: flex;"
>
</q-img>
</div>
</el-form-item>
<el-form-item
label=
"添加标题:"
required
>
<q-input
clearable
standout=
"bg-primary text-white"
v-model=
"addMsg.title"
label=
"标题"
style=
"width: 80%;"
/>
</el-form-item>
<el-form-item
label=
"添加描述:"
>
<q-input
v-model=
"addMsg.Content"
filled
clearable
type=
"textarea"
label=
"文本内容"
style=
"width: 80%;"
/>
</el-form-item>
<el-form-item
label=
"素材同步:"
>
<div
class=
"q-gutter-sm"
style=
"align-items: flex-start;display: flex;"
>
<q-radio
v-model=
"addMsg.issynchro"
val=
"2"
label=
"不同步"
/>
<q-radio
v-model=
"addMsg.issynchro"
val=
"1"
label=
"同步至【内容引擎】"
/>
<div
v-if=
"addMsg.issynchro==1"
style=
"width: 200px;"
>
<q-select
filled
stack-label
option-value=
"ID"
option-label=
"Name"
v-model=
"addMsg.classifyId"
ref=
"ID"
:options=
"classifyList"
label=
"分类"
:dense=
"false"
emit-value
map-options
/>
</div>
</div>
<q-input
clearable
standout=
"bg-primary text-white"
filled
v-model=
"addMsg.ImgTextModel.Title"
label=
"标题"
style=
"width: 80%;"
:rules=
"[val => !!val || '请输入标题']"
/>
</el-form-item>
<el-form-item
label=
"点击链接:"
required
>
<q-input
clearable
standout=
"bg-primary text-white"
v-model=
"addMsg.link"
label=
"请输入跳转链接,且必须以http://或https://开头"
style=
"width: 80%;"
/>
<q-input
clearable
standout=
"bg-primary text-white"
filled
v-model=
"addMsg.ImgTextModel.ImgLink"
label=
"请输入跳转链接,且必须以http://或https://开头"
style=
"width: 80%;"
:rules=
"[ val => !!val || '请输入跳转链接']"
/>
</el-form-item>
<el-form-item
label=
"添加描述:"
>
<q-input
v-model=
"addMsg.ImgTextModel.Description"
filled
clearable
type=
"textarea"
label=
"文本内容"
style=
"width: 80%;"
/>
</el-form-item>
</div>
<div
v-if=
"
addMsg.
Addtype ==2 "
>
<div
v-if=
"Addtype ==2 "
>
<el-form-item
label=
"图片:"
required
>
<q-btn
color=
"accent"
class=
"q-mr-md"
label=
"选择图文"
@
click=
"selectimg(3)"
/>
</el-form-item>
...
...
@@ -105,12 +107,12 @@
<q-separator
/>
<q-card-actions
align=
"right"
class=
"bg-white"
>
<q-btn
class=
"q-mr-md"
label=
"取消"
@
click=
"closeEditOrder"
/>
<q-btn
color=
"accent"
class=
"q-mr-md"
label=
"
保存
"
@
click=
"saveOrderInfo()"
/>
<q-btn
color=
"accent"
class=
"q-mr-md"
label=
"
确定
"
@
click=
"saveOrderInfo()"
/>
</q-card-actions>
</q-card>
</q-dialog>
<!-- 图片 -->
<selectMaterial
v-if=
"isshowselectMaterial"
:materialType=
"materialType"
:
saveobj=
'Selectobj
'
<selectMaterial
v-if=
"isshowselectMaterial"
:materialType=
"materialType"
:
classifyList=
'classifyList
'
@
close=
"getclose()"
@
success=
'getsuccess'
>
</selectMaterial>
</div>
...
...
@@ -120,6 +122,9 @@
import
{
UploadSelfFile
}
from
"../../api/common/common"
;
//上传图片
import
{
setWeChatMediumInfo
,
//新增素材
}
from
'../../api/system/wechat'
;
import
selectMaterial
from
"./selectMaterial"
export
default
{
...
...
@@ -128,6 +133,10 @@
type
:
Object
,
default
:
null
,
},
classifyList
:
{
type
:
Array
,
default
:
[],
},
},
components
:
{
selectMaterial
,
...
...
@@ -135,29 +144,28 @@
data
()
{
return
{
IsShow
:
true
,
Addtype
:
"1"
,
//添加方式 1为新建
addMsg
:
{
Addtype
:
'1'
,
//添加方式 1为新建
CoverImage
:
''
,
title
:
''
,
Content
:
''
,
issynchro
:
'1'
,
classifyId
:
''
,
link
:
''
,
Id
:
0
,
Type
:
3
,
Is_Sync
:
1
,
MediaGroupId
:
''
,
ImgTextModel
:
{
ImgName
:
''
,
ImgPath
:
''
,
Title
:
''
,
Description
:
''
,
ImgLink
:
''
,
}
},
materialType
:
2
,
Selectobj
:
{},
isshowselectMaterial
:
false
,
classifyList
:[
{
Name
:
'活动'
,
ID
:
1
,},
{
Name
:
'产品'
,
ID
:
2
,},
{
Name
:
'校园'
,
ID
:
3
,},
],
}
},
created
()
{
if
(
JSON
.
stringify
(
this
.
saveobj
)
!==
'{}'
)
{
this
.
addMsg
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
saveobj
))
}
},
mounted
()
{
...
...
@@ -178,13 +186,77 @@
this
.
isshowselectMaterial
=
false
},
getsuccess
(
data
)
{
//选择数据回来
this
.
Selectobj
=
data
this
.
addMsg
.
CoverImage
=
data
.
img
console
.
log
(
data
)
if
(
this
.
materialType
==
2
){
this
.
addMsg
.
ImgTextModel
.
ImgName
=
data
.
ImageModel
.
ImageName
this
.
addMsg
.
ImgTextModel
.
ImgPath
=
data
.
ImageModel
.
ImagePath
}
else
{
this
.
$emit
(
'success'
,
data
)
}
this
.
isshowselectMaterial
=
false
},
saveOrderInfo
(){
this
.
$emit
(
'success'
,
this
.
addMsg
)
saveOrderInfo
()
{
//图文提交
if
(
this
.
addMsg
.
MediaGroupId
==
''
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
message
:
`请选择分组选择`
,
position
:
'top'
})
return
}
if
(
this
.
addMsg
.
ImgTextModel
.
ImgPath
==
''
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
message
:
`请上传图片`
,
position
:
'top'
})
return
}
if
(
this
.
addMsg
.
ImgTextModel
.
Title
==
''
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
message
:
`请填写标题`
,
position
:
'top'
})
return
}
if
(
this
.
addMsg
.
ImgTextModel
.
ImgLink
==
''
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
message
:
`请填写跳转链接`
,
position
:
'top'
})
return
}
var
Expression
=
/http
(
s
)?
:
\/\/([\w
-
]
+
\.)
+
[\w
-
]
+
(\/[\w
- .
\/
?%&=
]
*
)?
/
;
var
objExp
=
new
RegExp
(
Expression
);
if
(
objExp
.
test
(
this
.
addMsg
.
ImgTextModel
.
ImgLink
))
{
// plus.runtime.openWeb(this.link)
}
else
{
this
.
$q
.
notify
({
type
:
'negative'
,
message
:
`上传的链接开头非http或https`
,
position
:
'top'
})
return
}
this
.
setWeChat
()
},
setWeChat
()
{
setWeChatMediumInfo
(
this
.
addMsg
).
then
(
res
=>
{
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
timeout
:
2000
,
message
:
'操作成功'
,
position
:
'top'
})
this
.
Selectobj
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
addMsg
))
this
.
Selectobj
.
Id
=
res
.
Data
this
.
$emit
(
'success'
,
this
.
Selectobj
)
})
}
...
...
src/components/enterprise/selectMaterial.vue
View file @
f57dae51
<
style
>
.selectMaterial
.imgstyle
{
width
:
100%
;
height
:
126px
;
...
...
@@ -27,7 +23,8 @@
border
:
1px
dashed
#d9d9d9
;
line-height
:
118px
;
}
.selectMaterial
.onetext
{
.selceimg
.onetext
{
overflow
:
hidden
;
white-space
:
nowrap
;
text-overflow
:
ellipsis
;
...
...
@@ -51,7 +48,7 @@
<div
class=
"col row wrap q-mr-lg q-col-gutter-md"
style=
"margin-top: 0;"
>
<div
class=
"col-4"
>
<q-select
filled
stack-label
@
input=
"resetSearch"
option-value=
"Id"
option-label=
"Name"
v-model=
"msg.MediaGroupId"
ref=
"Id"
:options=
"
classify
List"
label=
"分组"
:dense=
"false"
emit-value
v-model=
"msg.MediaGroupId"
ref=
"Id"
:options=
"
xiala
List"
label=
"分组"
:dense=
"false"
emit-value
map-options
/>
</div>
<div
class=
"col-4"
>
...
...
@@ -65,13 +62,28 @@
</div>
<div
class=
"q-pa-md"
>
<div
class=
"q-col-gutter-md row items-start"
v-if=
"data.length>0"
>
<div
class=
"col-2"
v-for=
"(x,y) in data"
@
click=
"Selectobj = x"
>
<q-img
:src=
"x.ImageModel.ImagePath"
class=
"imgstyle"
v-if=
"x.Type==2"
:style=
"
{border:x.Id == Selectobj.Id?'2px solid #91d5ff':'2px solid #FFF'}">
<div
class=
"absolute-bottom text-subtitle1 text-center onetext"
style=
"padding: 0;padding: 0 5px;font-size: 12px;"
>
<div
class=
"col-2 selceimg"
v-for=
"(x,y) in data"
@
click=
"Selectobj = x"
>
<q-img
v-if=
"x.Type==2"
:src=
"x.ImageModel.ImagePath"
class=
"imgstyle"
:style=
"
{border:x.Id == Selectobj.Id?'3px solid #91d5ff':'3px solid #FFF'}">
<div
class=
"absolute-bottom text-subtitle1 text-center onetext"
style=
"padding: 0;padding: 0 5px;font-size: 12px;"
>
{{
x
.
ImageModel
.
ImageName
}}
</div>
</q-img>
<q-img
v-if=
"x.Type==3 && x.ImgTextModel"
:src=
"x.ImgTextModel.ImgPath"
class=
"imgstyle"
:style=
"
{border:x.Id == Selectobj.Id?'3px solid #91d5ff':'3px solid #FFF'}">
<div
class=
"absolute-bottom text-subtitle1 text-center onetext"
style=
"padding: 0;padding: 0 5px;font-size: 12px;"
>
{{
x
.
ImgTextModel
.
Title
}}
</div>
</q-img>
<q-img
v-if=
"x.Type==6 && x.AppletModel"
:src=
"x.AppletModel.ImagePath"
class=
"imgstyle"
:style=
"
{border:x.Id == Selectobj.Id?'3px solid #91d5ff':'3px solid #FFF'}">
<div
class=
"absolute-bottom text-subtitle1 text-center onetext"
style=
"padding: 0;padding: 0 5px;font-size: 12px;"
>
{{
x
.
AppletModel
.
Title
}}
</div>
</q-img>
</div>
<q-pagination
class=
"full-width justify-end"
v-model=
"msg.pageIndex"
color=
"primary"
:max=
"pageCount"
:input=
"true"
@
input=
"changePage"
/>
...
...
@@ -87,7 +99,7 @@
<q-separator
/>
<q-card-actions
align=
"right"
class=
"bg-white"
>
<q-btn
class=
"q-mr-md"
label=
"取消"
@
click=
"closeEditOrder"
/>
<q-btn
color=
"accent"
class=
"q-mr-md"
label=
"
保存
"
@
click=
"saveOrderInfo()"
/>
<q-btn
color=
"accent"
class=
"q-mr-md"
label=
"
确定
"
@
click=
"saveOrderInfo()"
/>
</q-card-actions>
</q-card>
</q-dialog>
...
...
@@ -98,29 +110,27 @@
</q-card-section>
<q-separator
/>
<q-card-section
class=
"q-pt-none"
style=
"margin-top: 15px;height: 300px;"
>
<el-form
ref=
"localMsg"
:model=
"localMsg"
label-width=
"120px"
>
<el-form
ref=
"localMsg"
:model=
"localMsg"
label-width=
"120px"
v-if=
"materialType==2 "
>
<el-form-item
label=
"素材分组:"
>
<div
class=
"q-gutter-sm"
style=
"align-items: flex-start;display: flex;"
>
<div
style=
"width: 400px;"
>
<q-select
filled
stack-label
option-value=
"Id"
option-label=
"Name"
v-model=
"localMsg.MediaGroupId"
ref=
"Id"
:options=
"classifyList"
label=
"分组"
:dense=
"false"
emit-value
map-options
/>
</div>
</div>
</el-form-item>
<el-form-item
label=
"上传图片:"
>
<el-upload
class=
"avatar-uploader addDutyMain"
action=
""
:before-upload=
"uploadFile"
:show-file-list=
"false"
>
<i
class=
"el-icon-plus avatar-uploader-icon"
v-if=
"localMsg.
img
==''"
></i>
<q-img
v-else
:src=
"localMsg.
img
"
style=
"width: 100%;height: 100%;border-radius: 6px;display: flex;"
>
<i
class=
"el-icon-plus avatar-uploader-icon"
v-if=
"localMsg.
ImageModel.ImagePath
==''"
></i>
<q-img
v-else
:src=
"localMsg.
ImageModel.ImagePath
"
style=
"width: 100%;height: 100%;border-radius: 6px;display: flex;"
>
</q-img>
</el-upload>
<div>
(图片大小不超过2M,支持JPG、JPEG及PNG格式)
</div>
</el-form-item>
<el-form-item
label=
"素材同步:"
>
<div
class=
"q-gutter-sm"
style=
"align-items: flex-start;display: flex;"
>
<q-radio
v-model=
"localMsg.issynchro"
val=
"2"
label=
"不同步"
/>
<q-radio
v-model=
"localMsg.issynchro"
val=
"1"
label=
"同步至【内容引擎】"
/>
<div
v-if=
"localMsg.issynchro==1"
style=
"width: 200px;"
>
<q-select
filled
stack-label
option-value=
"ID"
option-label=
"Name"
v-model=
"localMsg.classifyId"
ref=
"ID"
:options=
"classifyList"
label=
"分类"
:dense=
"false"
emit-value
map-options
/>
</div>
</div>
</el-form-item>
</el-form>
</q-card-section>
<q-separator
/>
...
...
@@ -142,13 +152,11 @@
getMediumTypeEnumList
,
getWeChatMediumGroupList
,
getWeChatMediumPageList
,
//素材列表
setWeChatMediumInfo
,
//新增素材
}
from
'../../api/system/wechat'
;
export
default
{
props
:
{
saveobj
:
{
type
:
Object
,
default
:
null
,
},
materialType
:
{
type
:
Number
,
default
:
1
...
...
@@ -174,22 +182,27 @@
},
data
:
[],
pageCount
:
0
,
Selectobj
:
null
,
Selectobj
:
{
Id
:
0
}
,
localMsg
:
{
//本地上传对象
img
:
''
,
issynchro
:
'1'
,
//是否同步 1是
classifyID
:
0
,
//同步的时候的分类id
}
Id
:
0
,
Type
:
0
,
Is_Sync
:
1
,
MediaGroupId
:
''
,
},
xialaList
:
[],
}
},
created
()
{
this
.
Selectobj
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
saveobj
))
this
.
msg
.
Type
=
this
.
materialType
;
let
obj
=
{
Id
:
0
,
Name
:
'全部'
this
.
gettype
()
let
obj
=
{
Id
:
0
,
Name
:
'全部'
}
this
.
classifyList
=
this
.
classifyList
.
unshift
(
obj
)
let
data
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
classifyList
))
data
.
unshift
(
obj
)
this
.
xialaList
=
data
this
.
getList
()
},
mounted
()
{
...
...
@@ -199,6 +212,34 @@
},
methods
:
{
gettype
()
{
this
.
localMsg
.
Type
=
this
.
materialType
;
this
.
localMsg
.
Id
=
0
;
this
.
localMsg
.
Is_Sync
=
1
;
this
.
localMsg
.
MediaGroupId
=
''
;
if
(
this
.
materialType
==
2
)
{
//图片
this
.
localMsg
.
ImageModel
=
{
ImageName
:
''
,
ImagePath
:
''
};
}
else
if
(
this
.
materialType
==
3
)
{
//图文
this
.
localMsg
.
ImgTextModel
=
{
ImgName
:
''
,
ImgPath
:
''
,
Title
:
''
,
Description
:
''
,
ImgLink
:
''
,
};
}
else
if
(
this
.
materialType
==
6
)
{
//小程序
this
.
localMsg
.
AppletModel
=
{
AppletId
:
''
,
Page
:
''
,
Title
:
''
,
ImageName
:
''
,
ImagePath
:
''
,
};
}
},
//关闭弹窗
closeEditOrder
()
{
// this.IsShowEditOrder = false;
...
...
@@ -210,7 +251,7 @@
this
.
loading
=
false
this
.
data
=
res
.
Data
.
PageData
;
this
.
pageCount
=
res
.
Data
.
PageCount
this
.
data
List
.
forEach
(
x
=>
{
this
.
data
.
forEach
(
x
=>
{
x
.
check
=
false
})
...
...
@@ -226,7 +267,7 @@
this
.
getList
()
},
saveOrderInfo
()
{
//保存返回数据
if
(
JSON
.
stringify
(
this
.
Selectobj
)
==
"{}"
)
{
if
(
this
.
Selectobj
.
Id
==
0
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
message
:
`还未选择`
,
...
...
@@ -243,13 +284,73 @@
savelocal
()
{
//本地上传操作
//这里做上传操作 刷新列表
setWeChatMediumInfo
(
this
.
localMsg
).
then
(
res
=>
{
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
timeout
:
2000
,
message
:
'操作成功'
,
position
:
'top'
})
this
.
Selectobj
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
localMsg
))
this
.
Selectobj
.
Id
=
res
.
Data
this
.
$emit
(
'success'
,
this
.
Selectobj
)
this
.
gettype
()
})
},
uploadFile
(
files
)
{
UploadSelfFile
(
"course"
,
files
,
res
=>
{
uploadFile
(
files
)
{
//图片上传
if
(
this
.
materialType
==
2
||
this
.
materialType
==
3
||
this
.
materialType
==
6
)
{
//图文和图片、小程序的时候处理
let
types
=
[
'image/jpeg'
,
'image/jpg'
,
'image/png'
];
const
isImage
=
types
.
includes
(
files
.
type
);
if
(
this
.
materialType
==
2
||
this
.
materialType
==
3
)
{
const
isLtSize
=
files
.
size
/
1024
/
1024
<
2
;
if
(
!
isLtSize
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
message
:
`上传图片大小不能超过 2MB!`
,
position
:
'top'
})
return
false
;
}
}
else
{
const
isLtSize
=
files
.
size
/
1024
/
1024
<
1
;
if
(
!
isLtSize
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
message
:
`上传图片大小不能超过 1MB!`
,
position
:
'top'
})
return
false
;
}
}
if
(
!
isImage
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
message
:
`上传图片只能是 JPG、JPEG、PNG 格式!`
,
position
:
'top'
})
}
else
{
wechatUploadSelfFile
(
'wechatcatalogue'
,
files
,
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
localMsg
.
img
=
res
.
FileUrl
;
if
(
this
.
materialType
==
2
)
{
this
.
localMsg
.
ImageModel
.
ImageName
=
res
.
FileName
;
this
.
localMsg
.
ImageModel
.
ImagePath
=
res
.
FileUrl
;
}
else
if
(
this
.
materialType
==
3
)
{
this
.
localMsg
.
ImgTextModel
.
ImgName
=
res
.
FileName
;
this
.
localMsg
.
ImgTextModel
.
ImgPath
=
res
.
FileUrl
;
}
else
{
this
.
localMsg
.
AppletModel
.
ImageName
=
res
.
FileName
;
this
.
localMsg
.
AppletModel
.
ImagePath
=
res
.
FileUrl
;
}
});
this
.
$forceUpdate
();
}
})
}
}
},
...
...
src/components/exam/question-form.vue
View file @
f57dae51
...
...
@@ -172,7 +172,6 @@
getQuestionList
()
{
this
.
loading
=
true
;
queryQuestionPageList
(
this
.
msg
).
then
(
res
=>
{
console
.
log
(
res
,
'res'
);
this
.
loading
=
false
;
this
.
dataList
=
res
.
Data
.
PageData
;
this
.
pageCount
=
res
.
Data
.
PageCount
;
...
...
src/components/exam/questionbank-form.vue
0 → 100644
View file @
f57dae51
<
template
>
<q-dialog
v-model=
"persistent"
content-class=
"bg-grey-1"
persistent
transition-show=
"scale"
transition-hide=
"scale"
>
<q-card
style=
"width: 850px;max-width:900px;"
>
<q-card-section>
<div
class=
"text-h6"
>
题库信息
</div>
</q-card-section>
<q-card-section
class=
"q-pt-none scroll"
style=
"max-height: 70vh"
>
<div
class=
"page-search row items-center"
>
<div
class=
"col row wrap q-mr-lg q-col-gutter-md"
>
<div
class=
"col-12"
>
<q-input
@
input=
"research"
clearable
standout=
"bg-primary text-white"
v-model=
"msg.BankName"
label=
"关键字"
@
clear=
"research"
maxlength=
"20"
/>
</div>
</div>
</div>
<div
class=
"page-content"
>
<q-table
:pagination=
"msg"
:loading=
"loading"
no-data-label=
"暂无相关数据"
flat
class=
"sticky-column-table sticky-right-column-table"
separator=
"none"
:data=
"dataList"
:columns=
"columns"
row-key=
"BankId"
selection=
"multiple"
:selected
.
sync=
"selectedQuestionBank"
>
<template
v-slot:top=
"props"
>
<div
class=
"col-2 q-table__title"
>
题库列表
</div>
<q-space
/>
</
template
>
<
template
v-slot:body-cell-Title=
"props"
>
<td
style=
"width:400px;"
>
<div
@
click=
"goDetail(props.row)"
v-html=
"props.row.Title"
class=
"quetion_Title"
>
</div>
</td>
</
template
>
<
template
v-slot:bottom
>
<q-pagination
class=
"full-width justify-end"
v-model=
"msg.pageIndex"
color=
"primary"
:max=
"pageCount"
:input=
"true"
@
input=
"changePage"
/>
</
template
>
</q-table>
</div>
</q-card-section>
<q-separator
/>
<q-card-actions
align=
"right"
class=
"bg-white"
>
<q-btn
label=
"取消"
flat
color=
"grey-10"
style=
"font-weight:400 !important"
@
click=
"closeSaveForm"
/>
<q-btn
label=
"确认选择"
color=
"accent q-px-md"
style=
"font-weight:400 !important"
@
click=
"sureQuestionBank"
/>
</q-card-actions>
</q-card>
</q-dialog>
</template>
<
script
>
import
{
queryQuestionBankPage
,
}
from
'../../api/question/question'
;
export
default
{
data
()
{
return
{
persistent
:
true
,
msg
:
{
pageIndex
:
1
,
pageSize
:
12
,
rowsPerPage
:
12
,
BankName
:
''
},
pageCount
:
0
,
//总页数
loading
:
false
,
//表格加载进度条
columns
:
[{
name
:
'RowNum'
,
label
:
'编号'
,
field
:
'RowNum'
,
align
:
'left'
},
{
name
:
'BankNo'
,
label
:
'题库序号'
,
field
:
'BankNo'
,
align
:
'left'
,
},
{
name
:
'BankName'
,
label
:
'题库名称'
,
field
:
'BankName'
,
align
:
'left'
,
},
{
name
:
'CreateByName'
,
label
:
'创建人'
,
field
:
'CreateByName'
,
align
:
'left'
},
{
name
:
'QuestionCount'
,
label
:
'题量'
,
field
:
'QuestionCount'
,
align
:
'left'
},
],
dataList
:
[],
//数据列表
selectedQuestionBank
:
[],
//选择的题库
}
},
mounted
()
{
this
.
getQuestionBankPage
();
},
methods
:
{
//获取题库分页列表
getQuestionBankPage
()
{
queryQuestionBankPage
(
this
.
msg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
dataList
=
res
.
Data
.
PageData
;
this
.
pageCount
=
res
.
Data
.
PageCount
;
}
})
},
//翻页
changePage
(
val
)
{
this
.
msg
.
pageIndex
=
val
;
this
.
getQuestionBankPage
()
},
research
()
{
this
.
msg
.
pageIndex
=
1
;
this
.
getQuestionBankPage
();
},
//关闭弹窗
closeSaveForm
()
{
this
.
$emit
(
'close'
)
this
.
persistent
=
false
},
//确认选择
sureQuestionBank
()
{
this
.
persistent
=
false
;
var
tempArray
=
[];
if
(
this
.
selectedQuestionBank
&&
this
.
selectedQuestionBank
.
length
>
0
)
{
this
.
selectedQuestionBank
.
forEach
(
item
=>
{
tempArray
.
push
({
BankId
:
item
.
BankId
,
BankName
:
item
.
BankName
,
})
})
}
this
.
$emit
(
'success'
,
tempArray
);
},
},
}
</
script
>
src/components/flow/leave-form.vue
0 → 100644
View file @
f57dae51
<
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
:
7
,
},
isShowProcess
:
false
,
//显示旁边弹窗
processObj
:
{},
//传递子组件
flowObj
:
{
FlowId
:
7
,
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/pages/enterprise/addWelcome.vue
View file @
f57dae51
...
...
@@ -56,6 +56,37 @@
{{
addMsg
.
Content
}}
</div>
</div>
<div
style=
"display: flex;align-items: flex-start;margin-top: 15px;"
v-for=
"(item,index) in MediumModel"
:key=
"index"
>
<i
class=
"el-icon-user"
style=
"margin-right:20px;font-size: 40px;color: #1890ff;"
></i>
<div
v-if=
"item.Type==2"
style=
"width: 1px; flex:1;"
>
<q-img
:src=
"item.ImageModel.ImagePath"
style=
"width: 70%;"
>
</q-img>
</div>
<div
v-if=
"item.Type==3"
style=
"width: 1px; flex:1;padding: 10px 15px; border: 1px solid #eee; border-radius: 4px; background: #fff;"
>
<div>
{{
item
.
ImgTextModel
.
Title
}}
</div>
<div
style=
"display: flex;align-items: flex-start;justify-content: space-between;"
>
<div
style=
"width: 1px;flex:1"
>
{{
item
.
ImgTextModel
.
Description
}}
</div>
<q-img
:src=
"item.ImgTextModel.ImgPath"
style=
"width: 80px;height: 80px;margin-left: 10px;"
>
</q-img>
</div>
</div>
<div
v-if=
"item.Type==6"
style=
"width: 70%;padding: 10px 15px; border: 1px solid #eee; border-radius: 4px; background: #fff;"
>
<div>
{{
item
.
AppletModel
.
Title
}}
</div>
<q-img
:src=
"item.AppletModel.ImagePath"
style=
"width: 100%;"
>
</q-img>
</div>
</div>
</div>
</div>
<div
class=
"box_r"
>
...
...
@@ -87,8 +118,9 @@
<div
v-if=
"MediumModel.length>0"
>
<div
class=
"row items-center"
v-for=
"(x,y) in MediumModel"
:key=
"y"
>
<i
class=
"el-icon-link"
></i>
<span
style=
"margin-left: 10px;cursor: pointer;"
@
click=
"selectimg"
>
{{
Selectobj
.
name
}}
</span>
<i
style=
"margin-left: 10px;cursor: pointer"
class=
"el-icon-close"
@
click=
"Selectobj=
{}">
</i>
<span
style=
"margin-left: 10px;cursor: pointer;"
>
{{
getType
(
x
,
'title'
)
}}
</span>
<i
style=
"margin-left: 10px;cursor: pointer"
class=
"el-icon-close"
@
click=
"deleteModel(y)"
></i>
</div>
</div>
...
...
@@ -108,7 +140,8 @@
</el-form-item>
</el-form>
<q-card-actions
align=
"left"
class=
"bg-white"
style=
"margin-top: 15px;"
>
<q-btn
color=
"accent"
class=
"q-mr-md"
label=
"保存"
@
click=
"savemove()"
style=
"width: 100px;"
:loading=
"loading"
/>
<q-btn
color=
"accent"
class=
"q-mr-md"
label=
"保存"
@
click=
"savemove()"
style=
"width: 100px;"
:loading=
"loading"
/>
<q-btn
class=
"q-mr-md"
label=
"返回"
@
click=
"goblck()"
style=
"width: 60px;"
/>
</q-card-actions>
</div>
...
...
@@ -139,14 +172,13 @@
</div>
</el-dialog>
<!-- 图片 -->
<selectMaterial
v-if=
"isshowselectMaterial"
:materialType=
"materialType"
:
saveobj=
'Selectobj'
:
classifyList=
'classifyList'
<selectMaterial
v-if=
"isshowselectMaterial"
:materialType=
"materialType"
:classifyList=
'classifyList'
@
close=
"getclose()"
@
success=
'getsuccess'
>
</selectMaterial>
<!-- 图文 -->
<imagetextform
v-if=
"isshowimagetext"
:saveobj=
'Selectobj'
@
close=
"gettwclose()"
@
success=
'gettwsuccess'
>
</imagetextform>
<imagetextform
v-if=
"isshowimagetext"
@
close=
"gettwclose()"
@
success=
'gettwsuccess'
:classifyList=
'classifyList'
></imagetextform>
<!-- 小程序 -->
<appletform
v-if=
"isshowapplet"
:saveobj=
'Selectobj'
@
close=
"getxcxclose()"
@
success=
'getxcxsuccess
'
>
<appletform
v-if=
"isshowapplet"
@
close=
"getxcxclose()"
@
success=
'getxcxsuccess'
:classifyList=
'classifyList
'
>
</appletform>
</div>
</
template
>
...
...
@@ -179,7 +211,7 @@
outerVisible
:
false
,
//选择人员弹窗
filterText
:
''
,
//人员选择 帅选
memberList
:
[],
//
allmemberList
:[],
allmemberList
:
[],
showMember
:
[],
membertype
:
'1'
,
ryList
:
[],
...
...
@@ -198,9 +230,8 @@
isshowselectMaterial
:
false
,
isshowimagetext
:
false
,
isshowapplet
:
false
,
Selectobj
:
{},
//选中对象
MediumModel
:[],
classifyList
:[],
MediumModel
:
[],
//已选的添加内容
classifyList
:
[],
}
},
created
()
{
...
...
@@ -219,7 +250,7 @@
queryEmployee
({}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
memberList
=
res
.
Data
;
this
.
allmemberList
=
JSON
.
parse
(
JSON
.
stringify
(
res
.
Data
))
;
this
.
allmemberList
=
JSON
.
parse
(
JSON
.
stringify
(
res
.
Data
));
}
}).
catch
(()
=>
{
...
...
@@ -258,7 +289,7 @@
if
(
!
value
)
return
true
;
return
data
.
DepartmentName
.
indexOf
(
value
)
!==
-
1
;
},
getmemlist
(){
getmemlist
()
{
if
(
this
.
filterText
===
''
)
{
this
.
memberList
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
allmemberList
))
}
else
{
...
...
@@ -285,9 +316,34 @@
},
getsuccess
(
data
)
{
//选择数据回来
this
.
Selectobj
=
data
this
.
ISidentical
(
data
)
this
.
isshowselectMaterial
=
false
},
ISidentical
(
data
){
//返回来的数据进行判断再添加
if
(
this
.
MediumModel
.
length
>
0
){
let
isyes
=
false
this
.
MediumModel
.
map
(
x
=>
{
if
(
x
.
Id
==
data
.
Id
){
isyes
=
true
;
return
}
})
if
(
isyes
==
false
){
this
.
MediumModel
.
push
(
data
)
}
else
{
this
.
$q
.
notify
({
type
:
'negative'
,
message
:
`重复选择、请您重新选择!`
,
position
:
'top'
})
return
}
}
else
{
this
.
MediumModel
=
[];
this
.
MediumModel
.
push
(
data
)
}
},
selecttextimg
()
{
//图文
this
.
isshowimagetext
=
true
;
...
...
@@ -299,7 +355,7 @@
this
.
isshowimagetext
=
false
;
},
gettwsuccess
(
data
)
{
//图文返回成功
this
.
Selectobj
=
data
this
.
ISidentical
(
data
)
this
.
isshowimagetext
=
false
},
...
...
@@ -314,8 +370,8 @@
getxcxclose
()
{
//小程序 关闭
this
.
isshowapplet
=
false
;
},
getxcxsuccess
()
{
//小程序 关闭
this
.
Selectobj
=
data
getxcxsuccess
(
data
)
{
//小程序 关闭
this
.
ISidentical
(
data
)
this
.
isshowapplet
=
false
},
savemove
()
{
//保存
...
...
@@ -336,6 +392,16 @@
return
}
}
this
.
addMsg
.
MediumIds
==
''
if
(
this
.
MediumModel
&&
this
.
MediumModel
.
length
>
0
){
let
ids
=
[]
this
.
MediumModel
.
forEach
(
x
=>
{
ids
.
push
(
x
.
Id
)
})
this
.
addMsg
.
MediumIds
=
ids
.
join
(
','
)
}
if
(
this
.
addMsg
.
MediumIds
==
''
)
{
this
.
addMsg
.
Type
=
1
;
if
(
this
.
addMsg
.
Content
==
''
)
{
...
...
@@ -367,6 +433,29 @@
goblck
()
{
//返回上一个页面
this
.
$router
.
go
(
-
1
);
//返回上一层
},
getType
(
row
,
name
)
{
let
title
=
''
let
content
=
''
if
(
row
.
Type
==
2
)
{
title
=
row
.
ImageModel
.
ImageName
content
=
row
.
ImageModel
.
ImagePath
}
else
if
(
row
.
Type
==
3
)
{
title
=
row
.
ImgTextModel
.
Title
content
=
row
.
ImgTextModel
.
ImgPath
}
else
if
(
row
.
Type
==
6
)
{
title
=
row
.
AppletModel
.
Title
content
=
row
.
AppletModel
.
ImagePath
}
if
(
name
==
'title'
)
{
return
title
}
else
if
(
name
==
'content'
)
{
return
content
}
},
deleteModel
(
index
){
this
.
MediumModel
.
splice
(
index
,
1
)
}
}
...
...
src/pages/enterprise/welcomeList.vue
View file @
f57dae51
...
...
@@ -161,7 +161,7 @@
getWeChatWelcomesPageList
(
this
.
msg
).
then
(
res
=>
{
this
.
loading
=
false
this
.
data
=
res
.
Data
.
PageData
;
this
.
pageCount
=
res
.
Data
.
Count
this
.
pageCount
=
res
.
Data
.
Page
Count
this
.
data
.
forEach
(
x
=>
{
x
.
UserIdName
=
''
x
.
UserIdList
.
map
((
j
,
i
)
=>
{
...
...
src/pages/exam/examCreate.vue
0 → 100644
View file @
f57dae51
<!--组卷-->
<
style
>
.examCreate
{
margin-left
:
100px
;
}
</
style
>
<
template
>
<div
class=
"examCreate"
>
<br
/>
组卷题库(*):
{{
ShowBankName
}}
<a
style=
"cursor:pointer;color:blue"
@
click=
"showQuestionBank"
>
选择题库
</a>
<br
/>
<q-btn
color=
"accent"
size=
"sm"
@
click=
"postMsg.GenerateType==1"
class=
"q-mr-md"
label=
"智能组卷"
/>
<q-btn
color=
"accent"
size=
"sm"
@
click=
"postMsg.GenerateType==2,setExamPaper"
class=
"q-mr-md"
label=
"手动组卷"
/>
<br
/>
<br
/>
<template
v-if=
"postMsg.GenerateType==1"
>
</
template
>
<
template
v-if=
"postMsg.GenerateType==2"
>
</
template
>
<questionbankForm
v-if=
"isShowQuestionBank"
@
close=
"closeQuestionBankForm"
@
success=
"getBankData"
>
</questionbankForm>
</div>
</template>
<
script
>
import
questionbankForm
from
'../../components/exam/questionbank-form'
import
{
queryQuestionTypeList
,
queryDifficultyType
,
queryQuestionCategory
,
queryQuestionLevelType
}
from
'../../api/question/question'
import
{
savePaperInfo
,
}
from
'../../api/teacher/index'
;
export
default
{
components
:
{
questionbankForm
},
meta
:
{
title
:
"组卷"
},
data
()
{
return
{
isShowQuestionBank
:
false
,
//是否显示题库列表
postMsg
:
{
PaperId
:
0
,
//试卷编号
PaperName
:
"新建试卷"
,
//试卷名称
QuestionBandIds
:
""
,
//题库编号【多个逗号分割】
DifficultyType
:
1
,
//难易程度
GenerateType
:
0
,
//组卷类型(1-智能组卷,2-手动组卷,3-智能导入)
},
ShowBankName
:
""
,
//显示题库名称
}
},
created
()
{
},
mounted
()
{
},
methods
:
{
//显示题库
showQuestionBank
()
{
this
.
isShowQuestionBank
=
true
;
},
//关闭题库
closeQuestionBankForm
()
{
this
.
isShowQuestionBank
=
false
;
},
//获取选择的题库
getBankData
(
bankArray
)
{
this
.
isShowQuestionBank
=
false
;
var
qBankIds
=
""
;
var
sBankName
=
""
;
if
(
bankArray
&&
bankArray
.
length
>
0
)
{
bankArray
.
forEach
(
item
=>
{
qBankIds
+=
","
+
item
.
BankId
;
sBankName
+=
","
+
item
.
BankName
;
});
}
if
(
qBankIds
.
substr
(
0
,
1
)
==
','
)
{
qBankIds
=
qBankIds
.
substr
(
1
);
}
if
(
sBankName
.
substr
(
0
,
1
)
==
','
)
{
sBankName
=
sBankName
.
substr
(
1
);
}
this
.
postMsg
.
QuestionBandIds
=
qBankIds
;
this
.
ShowBankName
=
sBankName
;
},
//保存试卷信息
setExamPaper
()
{
savePaperInfo
(
this
.
postMsg
).
then
(
res
=>
{
});
}
}
}
</
script
>
src/pages/exam/examEdit.vue
View file @
f57dae51
...
...
@@ -82,7 +82,7 @@
width
:
328px
;
}
.List-ul
li
{
.List-ul
li
{
display
:
block
;
padding-left
:
25px
;
line-height
:
33px
;
...
...
@@ -93,7 +93,7 @@
text-decoration
:
none
;
min-width
:
250px
;
overflow
:
hidden
;
padding-right
:
20px
;
padding-right
:
20px
;
white-space
:
nowrap
;
text-overflow
:
ellipsis
}
...
...
@@ -119,6 +119,7 @@
justify-content
:
space-between
;
align-items
:
center
;
}
.List-bt
{
width
:
318px
;
height
:
27px
;
...
...
@@ -127,34 +128,40 @@
line-height
:
27px
;
padding-left
:
10px
;
}
.List-ul
li
:hover
{
.List-ul
li
:hover
{
background
:
#a6a6a6
;
color
:
#333
;
}
.left-btn-list
{
padding
:
5px
10px
;
.left-btn-list
{
padding
:
5px
10px
;
display
:
inline-block
;
color
:
#555
;
border-radius
:
3px
;
font-size
:
14px
;
border
:
1px
solid
#999
;
margin-right
:
10px
;
font-size
:
14px
;
border
:
1px
solid
#999
;
margin-right
:
10px
;
cursor
:
pointer
;
}
#btn1
{
background
:
#26a69a
!important
;
#btn1
{
background
:
#26a69a
!important
;
}
.difficulty_Degree
{
.difficulty_Degree
{
display
:
inline-block
;
width
:
80px
;
width
:
80px
;
text-align
:
right
;
line-height
:
56px
;
}
.commonDalei
{
.commonDalei
{
display
:
flex
;
align-content
:
center
;
margin-bottom
:
20px
;
margin-bottom
:
20px
;
}
</
style
>
<
template
>
<div
class=
"examPaper"
>
...
...
@@ -164,8 +171,8 @@
<q-input
filled
label=
"标题"
v-model=
"DataObj.PaperName"
/>
</div>
<div
style=
"width:20%;"
>
<q-select
filled
option-value=
"Id"
option-label=
"Name"
:options=
"
easyList"
emit-value
map-options
label=
"难度"
use-input
clearable
v-model=
"DataObj.DifficultyType"
/>
<q-select
filled
option-value=
"Id"
option-label=
"Name"
:options=
"
questionDifficultyTypeList"
emit-value
map-options
label=
"难度"
use-input
clearable
v-model=
"DataObj.DifficultyType"
/>
</div>
</div>
<div
style=
"width:20%;text-align:right;"
>
...
...
@@ -200,13 +207,10 @@
</div>
<div
class=
"Exam-right f1"
>
<div
class=
"Left-btn"
>
<div>
<!-- <template v-for="(fItem,fIndex) in firstTypeList">
<span class="left-btn-list" :key="fIndex" @click="onItemClick(fItem)">{{fItem.Name}}</span>
</template> -->
<div>
<
template
v-for=
"(fItem,fIndex) in firstTypeList"
>
<q-btn
:key=
"fIndex"
color=
"accent"
:id=
"commonIndex==fIndex?'btn1':''"
size=
"sm"
:label=
"fItem.Name"
style=
"margin-left:5px;"
@
click=
"onItemClick(fItem,fIndex)"
/>
<q-btn
:key=
"fIndex"
color=
"accent"
:id=
"commonIndex==fIndex?'btn1':''"
size=
"sm"
:label=
"fItem.Name"
style=
"margin-left:5px;"
@
click=
"onItemClick(fItem,fIndex)"
/>
</
template
>
<q-btn-dropdown
color=
"accent"
size=
"sm"
label=
"更多"
style=
"margin-left:5px;"
>
<q-list>
...
...
@@ -219,9 +223,10 @@
</q-list>
</q-btn-dropdown>
</div>
<div>
<q-btn
color=
"accent"
size=
"sm"
@
click=
"isShowQuestion=true"
class=
"q-mr-md"
label=
"题库选题"
/>
</div>
<div>
<q-btn
color=
"accent"
size=
"sm"
@
click=
"isShowQuestion=true"
class=
"q-mr-md"
label=
"题库选题"
/>
</div>
</div>
<div
class=
"row wrap"
v-if=
"ChooseItem"
style=
"padding:20px;"
>
<div
class=
"edit_stem"
>
...
...
@@ -282,19 +287,19 @@
<div
class=
"col-12 commonDalei"
style=
"margin-top:20px;"
>
<span
class=
"difficulty_Degree"
>
难度:
</span>
<q-select
filled
option-value=
"Id"
size=
"sm"
style=
"display:inline-block;width:300px;"
option-label=
"Name"
v-model=
"ChooseItem.DifficultyType"
:options=
"questionDifficultyTypeList"
emit-value
map-options
/>
v-model=
"ChooseItem.DifficultyType"
:options=
"questionDifficultyTypeList"
emit-value
map-options
/>
</div>
<div
class=
"col-12 commonDalei"
>
<br
/>
<span
class=
"difficulty_Degree"
>
所属大类:
</span>
<q-select
filled
option-value=
"Id"
size=
"sm"
style=
"display:inline-block;width:300px;"
option-label=
"Name"
v-model=
"ChooseItem.Category"
:options=
"questionCategoryList"
emit-value
map-options
/>
v-model=
"ChooseItem.Category"
:options=
"questionCategoryList"
emit-value
map-options
/>
</div>
<div
class=
"col-12 commonDalei"
>
<br
/>
<span
class=
"difficulty_Degree"
>
考级程度:
</span>
<q-select
filled
option-value=
"Id"
size=
"sm"
style=
"display:inline-block;width:300px;"
option-label=
"Name"
v-model=
"ChooseItem.LevelType"
:options=
"questionLevalTypeList"
emit-value
map-options
/>
v-model=
"ChooseItem.LevelType"
:options=
"questionLevalTypeList"
emit-value
map-options
/>
</div>
<div
class=
"col-12"
>
<span
class=
"difficulty_Degree"
>
知识点:
</span>
...
...
@@ -328,7 +333,7 @@
import
cloze
from
'../../components/questiontype/cloze'
import
readingComprehensio
from
'../../components/questiontype/reading-comprehensio'
import
sharingChoose
from
'../../components/questiontype/sharing-choose'
import
questionForm
from
'../../components/exam/question-form'
import
questionForm
from
'../../components/exam/question-form'
import
{
GetPaper
,
savePaperInfo
,
...
...
@@ -365,16 +370,6 @@
initialFrameWidth
:
null
,
initialFrameHeight
:
80
,
},
easyList
:
[{
Id
:
1
,
Name
:
'难'
},
{
Id
:
2
,
Name
:
'中'
},
{
Id
:
3
,
Name
:
'易'
}],
msg
:
{
PaperId
:
0
},
...
...
@@ -388,8 +383,8 @@
choosePointArray
:
[],
//选择知识点
firstTypeList
:
[],
//第一类题型
secondTypeList
:
[],
//第二类题型
isShowQuestion
:
false
,
commonIndex
:
-
1
isShowQuestion
:
false
,
commonIndex
:
-
1
}
},
created
()
{
...
...
@@ -418,7 +413,7 @@
});
},
//题型点击
onItemClick
(
item
,
index
)
{
onItemClick
(
item
,
index
)
{
// this.AnswerList = [];
// this.questionObj = item;
// this.objOption.QuestionTypeId = item.QId;
...
...
@@ -428,7 +423,7 @@
// if (obj) {
// this.objOption.QuestionContent = JSON.stringify(obj);
// }
this
.
commonIndex
=
index
this
.
commonIndex
=
index
},
//获取问题大类
getQuestionCategory
()
{
...
...
@@ -470,10 +465,10 @@
console
.
log
(
"res"
,
res
);
})
},
closeQuestForm
(){
closeQuestForm
()
{
this
.
isShowQuestion
=
false
;
},
refreshPage
(){
refreshPage
()
{
}
}
...
...
src/pages/exam/examManagement.vue
View file @
f57dae51
...
...
@@ -30,10 +30,7 @@
<div
class=
"page-body"
>
<div
class=
"page-search row items-center"
>
<div
class=
"col row wrap q-mr-lg q-col-gutter-md"
>
<!--
<div
class=
"col-3"
>
<q-select
@
input=
"getList"
standout=
"bg-primary text-white"
option-value=
"Id"
option-label=
"Name"
v-model=
"msg.tikuName"
:options=
"tikuList"
emit-value
map-options
label=
"所属题库"
/>
</div>
-->
<div
class=
"col-3"
>
<q-input
@
change=
"getList"
clearable
filled
v-model=
"msg.PaperName"
@
clear=
"getList"
maxlength=
"20"
label=
"输入试卷名称、组卷人查找"
/>
...
...
@@ -47,7 +44,8 @@
<template
v-slot:top=
"props"
>
<div
class=
"col-2 q-table__title"
>
试卷管理
</div>
<q-space
/>
<q-btn
color=
"accent"
size=
"sm"
class=
"q-mr-md"
label=
"组卷"
/>
<q-btn
color=
"accent"
size=
"sm"
class=
"q-mr-md"
label=
"新增文件夹"
@
click=
"CreatePaper()"
/>
<q-btn
color=
"accent"
size=
"sm"
class=
"q-mr-md"
label=
"新增试卷"
@
click=
"CreatePaper()"
/>
</
template
>
<
template
v-slot:bottom
>
<q-pagination
class=
"full-width justify-end"
v-model=
"msg.pageIndex"
color=
"primary"
:max=
"pageCount"
...
...
@@ -139,6 +137,11 @@
this
.
getList
();
},
methods
:
{
//创建试卷
CreatePaper
()
{
this
.
OpenNewUrl
(
'/exam/examCreate'
,
{
})
},
//翻页
changePage
(
val
)
{
this
.
msg
.
pageIndex
=
val
;
...
...
@@ -162,13 +165,14 @@
},
//点击编辑 跳转
goExameEdit
(
item
)
{
console
.
log
(
"item"
,
item
);
console
.
log
(
"item"
,
item
);
this
.
OpenNewUrl
(
'/exam/examEdit'
,
{
Id
:
item
.
PaperId
})
}
}
}
</
script
>
<
style
lang=
"sass"
>
@import
url('~assets/css/table.sass')
...
...
src/pages/system/processSet.vue
View file @
f57dae51
<
style
>
</
style
>
<
template
>
<div
class=
"page-body"
>
<q-tabs
style=
"margin-bottom:20px;"
v-model=
"tabCheck"
narrow-indicator
dense
align=
"left"
class=
"text-primary"
>
<q-tab
:ripple=
"false"
v-for=
"(qitem,qindex) in tabList"
:name=
"qitem.name"
:label=
"qitem.label"
:key=
"qindex"
/>
<q-tabs
style=
"margin-bottom: 20px"
v-model=
"tabCheck"
narrow-indicator
dense
align=
"left"
class=
"text-primary"
>
<q-tab
:ripple=
"false"
v-for=
"(qitem, qindex) in tabList"
:name=
"qitem.name"
:label=
"qitem.label"
:key=
"qindex"
/>
</q-tabs>
<div>
<template
v-if=
"tabCheck
==
'1'"
>
<template
v-if=
"tabCheck
==
'1'"
>
<!--退课流程-->
<backclassflow-form></backclassflow-form>
</
template
>
<
template
v-if=
"tabCheck
==
'2'"
>
<
template
v-if=
"tabCheck
==
'2'"
>
<!--调课流程-->
<changeclassflow-form></changeclassflow-form>
</
template
>
<
template
v-if=
"tabCheck==
'3'"
>
<
template
v-if=
"tabCheck ==
'3'"
>
<!--停课流程-->
<stopclassflow-form></stopclassflow-form>
</
template
>
<
template
v-if=
"tabCheck
==
'4'"
>
<
template
v-if=
"tabCheck
==
'4'"
>
<!-- 转班流程 -->
<transfer-form></transfer-form>
</
template
>
<
template
v-if=
"tabCheck
==
'5'"
>
<
template
v-if=
"tabCheck
==
'5'"
>
<!-- 临时上课邀请流程 -->
<temporaryClass-form></temporaryClass-form>
</
template
>
<
template
v-if=
"tabCheck
==
'6'"
>
<
template
v-if=
"tabCheck
==
'6'"
>
<!-- 分拆 -->
<separate-form></separate-form>
</
template
>
<
template
v-if=
"tabCheck == '7'"
>
<!-- 请假流程 -->
<leave-form></leave-form>
</
template
>
</div>
</div>
</template>
<
script
>
import
backclassflowForm
from
'../../components/flow/backclassflow-form'
;
import
changeclassflowForm
from
'../../components/flow/changeclassflow-form'
;
import
stopclassflowForm
from
'../../components/flow/stopclassflow-form'
;
import
transferForm
from
'../../components/flow/transfer-form'
;
import
temporaryClassForm
from
'../../components/flow/temporaryClass-form'
;
import
separateForm
from
'../../components/flow/separate-form'
export
default
{
import
backclassflowForm
from
"../../components/flow/backclassflow-form"
;
import
changeclassflowForm
from
"../../components/flow/changeclassflow-form"
;
import
stopclassflowForm
from
"../../components/flow/stopclassflow-form"
;
import
transferForm
from
"../../components/flow/transfer-form"
;
import
temporaryClassForm
from
"../../components/flow/temporaryClass-form"
;
import
separateForm
from
"../../components/flow/separate-form"
;
import
leaveForm
from
"../../components/flow/leave-form"
;
export
default
{
meta
:
{
title
:
"流程设置"
title
:
"流程设置"
,
},
components
:
{
backclassflowForm
,
...
...
@@ -51,11 +68,13 @@
stopclassflowForm
,
transferForm
,
temporaryClassForm
,
separateForm
separateForm
,
leaveForm
,
},
data
()
{
return
{
tabList
:
[{
tabList
:
[
{
name
:
"1"
,
label
:
"退课流程"
,
},
...
...
@@ -69,27 +88,26 @@
},
{
name
:
"4"
,
label
:
"转班流程"
label
:
"转班流程"
,
},
{
name
:
"5"
,
label
:
"临时上课邀请流程"
label
:
"临时上课邀请流程"
,
},
{
name
:
"6"
,
label
:
"分拆"
}
label
:
"分拆"
,
},
// {
// name: "7",
// label: "请假流程",
// },
],
tabCheck
:
'1'
,
}
tabCheck
:
"1"
,
};
},
created
()
{},
mounted
()
{
},
methods
:
{
}
}
mounted
()
{},
methods
:
{},
};
</
script
>
src/router/routes.js
View file @
f57dae51
...
...
@@ -1048,6 +1048,11 @@ const routes = [{
component
:
()
=>
import
(
"pages/exam/examEdit"
)
},
{
path
:
"/exam/examCreate"
,
//考试组卷
component
:
()
=>
import
(
"pages/exam/examCreate"
)
},
{
path
:
"/teacher/testdatabase"
,
//题库查询
component
:
()
=>
...
...
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