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
b92c788d
Commit
b92c788d
authored
Aug 20, 2021
by
罗超
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gitlab.oytour.com/luochao/confucius
into master
parents
76b8090e
e3cdf48e
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
1094 additions
and
297 deletions
+1094
-297
App.vue
src/App.vue
+1
-1
wechat.js
src/api/system/wechat.js
+1
-1
chaneelcode-form.vue
src/components/enterprise/chaneelcode-form.vue
+11
-11
welcome-from.vue
src/components/enterprise/welcome-from.vue
+1
-2
classstutree-form.vue
src/components/exam/classstutree-form.vue
+330
-14
addchannelcode.vue
src/pages/enterprise/addchannelcode.vue
+348
-91
paperCreate.vue
src/pages/exam/paperCreate.vue
+18
-4
paperEdit.vue
src/pages/exam/paperEdit.vue
+363
-170
paperInfo.vue
src/pages/exam/paperInfo.vue
+1
-1
paperPublish.vue
src/pages/exam/paperPublish.vue
+20
-2
No files found.
src/App.vue
View file @
b92c788d
...
...
@@ -20,7 +20,7 @@ export default {
</
script
>
<
style
>
@import
url("//at.alicdn.com/t/font_2077629_
ou0hmd4zmr8
.css")
;
@import
url("//at.alicdn.com/t/font_2077629_
wob6liq2kxn
.css")
;
.q-scrollarea__thumb
{
z-index
:
999999
!important
;
}
...
...
src/api/system/wechat.js
View file @
b92c788d
...
...
@@ -312,7 +312,7 @@ export function SetSynvEduEmployee(data) {
*/
export
function
getWeChatChannelInfo
(
data
)
{
return
request
({
url
:
'/QYWeChat/GetWeChatChannelInfo'
,
url
:
'/QYWeChat/GetWeChatChannelInfo
_V2
'
,
method
:
'post'
,
data
})
...
...
src/components/enterprise/chaneelcode-form.vue
View file @
b92c788d
...
...
@@ -93,11 +93,11 @@
<el-form-item
label=
"固定时段:"
v-if=
"peopletype==1"
>
<div
v-for=
"(x,y) in addMsg "
:key=
"y"
style=
"display: flex;align-items: center;margin-top: 10px;"
>
<el-time-select
:disabled=
"y==0"
placeholder=
"起始时间"
v-model=
"x.S
r
artHours"
<el-time-select
:disabled=
"y==0"
placeholder=
"起始时间"
v-model=
"x.S
t
artHours"
:picker-options=
"
{ start: '00:00', step: '01:00', end: '23:00', }">
</el-time-select>
<el-time-select
:disabled=
"y==0"
placeholder=
"结束时间"
v-model=
"x.EndHours"
:picker-options=
"
{ start: '00:00', step: '01:00', end: '23:00', minTime: x.S
r
artHours}">
:picker-options=
"
{ start: '00:00', step: '01:00', end: '23:00', minTime: x.S
t
artHours}">
</el-time-select>
<el-select
v-model=
"x.EmpId"
placeholder=
"请选择"
@
change=
"selectPersonnel(y)"
>
<el-option
filterable
v-for=
"item in Employeelist"
:key=
"item.Id"
...
...
@@ -112,11 +112,11 @@
<el-form-item
label=
"固定时段:"
v-if=
"peopletype==2"
>
<div
v-for=
"(x,y) in addMsg "
:key=
"y"
>
<div
style=
"display: flex;align-items: flex-start;margin-top: 10px;"
>
<el-time-select
:disabled=
"y==0"
placeholder=
"起始时间"
v-model=
"x.S
r
artHours"
<el-time-select
:disabled=
"y==0"
placeholder=
"起始时间"
v-model=
"x.S
t
artHours"
:picker-options=
"
{ start: '00:00', step: '01:00', end: '23:00', }">
</el-time-select>
<el-time-select
:disabled=
"y==0"
placeholder=
"结束时间"
v-model=
"x.EndHours"
:picker-options=
"
{ start: '00:00', step: '01:00', end: '23:00', minTime: x.S
r
artHours}">
:picker-options=
"
{ start: '00:00', step: '01:00', end: '23:00', minTime: x.S
t
artHours}">
</el-time-select>
<div
style=
"max-width: 320px;"
>
<div>
...
...
@@ -184,7 +184,7 @@
default
:
''
,
},
peopletype
:
{
type
:
String
,
type
:
Number
,
default
:
1
,
},
...
...
@@ -212,11 +212,11 @@
created
()
{
if
(
this
.
peopletype
==
1
)
{
//单人模式
this
.
addMsg
=
[
{
Id
:
0
,
Week
:
''
,
IsDefault
:
1
,
S
r
artHours
:
'00:00'
,
EndHours
:
"00:00"
,
EmpId
:
''
,
EmpName
:
''
,
}
{
Id
:
0
,
Week
:
''
,
IsDefault
:
1
,
S
t
artHours
:
'00:00'
,
EndHours
:
"00:00"
,
EmpId
:
''
,
EmpName
:
''
,
}
]
}
else
{
this
.
addMsg
=
[
{
Id
:
0
,
Week
:
''
,
IsDefault
:
1
,
S
r
artHours
:
'00:00'
,
EndHours
:
"00:00"
,
EmpList
:
[],
DeptList
:
[],
returnString
:[],}
{
Id
:
0
,
Week
:
''
,
IsDefault
:
1
,
S
t
artHours
:
'00:00'
,
EndHours
:
"00:00"
,
EmpList
:
[],
DeptList
:
[],
returnString
:[],}
]
}
if
(
this
.
lsday
!=
''
)
{
//修改单独周几
...
...
@@ -271,10 +271,10 @@
},
adddata
()
{
if
(
this
.
peopletype
==
1
)
{
//单人模式
let
obj
=
{
Id
:
0
,
Week
:
''
,
IsDefault
:
2
,
S
r
artHours
:
''
,
EndHours
:
""
,
EmpId
:
''
,
EmpName
:
''
,
}
let
obj
=
{
Id
:
0
,
Week
:
''
,
IsDefault
:
2
,
S
t
artHours
:
''
,
EndHours
:
""
,
EmpId
:
''
,
EmpName
:
''
,
}
this
.
addMsg
.
push
(
obj
)
}
else
{
let
obj
=
{
Id
:
0
,
Week
:
''
,
IsDefault
:
2
,
S
r
artHours
:
''
,
EndHours
:
""
,
EmpList
:
[],
DeptList
:
[],
returnString
:[],}
let
obj
=
{
Id
:
0
,
Week
:
''
,
IsDefault
:
2
,
S
t
artHours
:
''
,
EndHours
:
""
,
EmpList
:
[],
DeptList
:
[],
returnString
:[],}
this
.
addMsg
.
push
(
obj
)
}
},
...
...
@@ -306,7 +306,7 @@
let
isHours
=
false
;
this
.
addMsg
.
map
((
x
,
i
)
=>
{
if
(
i
>
0
)
{
if
(
x
.
S
r
artHours
==
''
||
x
.
EndHours
==
''
)
{
if
(
x
.
S
t
artHours
==
''
||
x
.
EndHours
==
''
)
{
isHours
=
true
;
return
}
...
...
@@ -386,7 +386,7 @@
let
isHours
=
false
;
this
.
addMsg
.
map
((
x
,
i
)
=>
{
if
(
i
>
0
)
{
if
(
x
.
S
r
artHours
==
''
||
x
.
EndHours
==
''
)
{
if
(
x
.
S
t
artHours
==
''
||
x
.
EndHours
==
''
)
{
isHours
=
true
;
return
}
...
...
src/components/enterprise/welcome-from.vue
View file @
b92c788d
...
...
@@ -98,7 +98,7 @@
</div>
</el-form-item>
<el-form-item
label=
"添加内容:"
>
<div
v-if=
"addMsg.MediumModel.length>0"
>
<div
v-if=
"addMsg.MediumModel
&& addMsg.MediumModel
.length>0"
>
<div
class=
"row items-center"
v-for=
"(x,y) in addMsg.MediumModel"
:key=
"y"
>
<i
class=
"el-icon-link"
></i>
<span
style=
"margin-left: 10px;cursor: pointer;"
>
{{
getType
(
x
,
'title'
)
}}
</span>
...
...
@@ -229,7 +229,6 @@
if
(
type
==
1
){
this
.
outerVisible
=
true
}
this
.
dialogTitle
=
this
.
$t
(
'fnc.xzrenyuan'
);
queryEmployee
({}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
memberList
=
res
.
Data
;
...
...
src/components/exam/classstutree-form.vue
View file @
b92c788d
<
style
>
.TreeCked
{
margin
:
20px
20px
0
20px
;
color
:
#A8A8B3
;
font-size
:
14px
;
}
.SendContent
{
display
:
flex
;
height
:
450px
;
}
.SendOne_Left
{
width
:
60%
;
}
.SendOne_Right
{
width
:
40%
;
}
.object_tit
{
font-size
:
14px
;
color
:
#A8A8B3
;
line-height
:
35px
;
margin-top
:
12px
;
overflow
:
hidden
;
padding-right
:
30px
;
display
:
flex
;
justify-content
:
space-between
;
}
.object_tit
span
{
display
:
inline-block
;
}
.objectList
{
width
:
100%
;
height
:
380px
;
overflow
:
auto
;
outline
:
none
;
margin-right
:
15px
;
}
.objectList
::-webkit-scrollbar
{
width
:
3px
;
height
:
3px
;
background-color
:
#F5F5F5
;
}
/*!*定义滚动条轨道 内阴影+圆角*!*/
.objectList
::-webkit-scrollbar-track
{
-webkit-box-shadow
:
inset
0
0
6px
rgba
(
0
,
0
,
0
,
0.3
);
border-radius
:
10px
;
background-color
:
#F5F5F5
;
}
/*!*定义滑块 内阴影+圆角*!*/
.objectList
::-webkit-scrollbar-thumb
{
border-radius
:
10px
;
-webkit-box-shadow
:
-webkit-gradient
(
linear
,
0
0
,
0
100%
,
color-stop
(
.5
,
rgba
(
255
,
255
,
255
,
.2
)),
color-stop
(
.5
,
transparent
),
to
(
transparent
));
background-color
:
#0ae
;
}
.objectList
ul
{
padding
:
0
;
}
.objectList
ul
li
{
list-style-type
:
none
;
}
.objectList
ul
li
div
{
height
:
40px
;
line-height
:
40px
;
font-size
:
14px
;
cursor
:
pointer
;
position
:
relative
;
z-index
:
3
;
}
.objectList
ul
li
a
{
display
:
block
;
padding-left
:
16px
;
width
:
80%
;
white-space
:
nowrap
;
text-overflow
:
ellipsis
;
-o-text-overflow
:
ellipsis
;
overflow
:
hidden
;
float
:
left
;
height
:
40px
;
line-height
:
40px
;
font-size
:
14px
;
color
:
#181E33
;
text-decoration
:
none
;
}
.objectList
ul
li
a
i
{
color
:
#cad5e6
;
}
.manageTitl
:hover
{
background
:
#F7FAFC
;
}
.stuChilden
{
display
:
none
;
overflow-y
:
auto
;
}
.showChild
{
display
:
block
;
}
.selectedCon
{
height
:
380px
;
overflow
:
auto
;
}
.selectedCon
ul
{
margin
:
0
;
padding
:
0
;
}
.selectedCon
ul
li
{
height
:
50px
;
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
padding
:
0
20px
;
margin-left
:
8px
;
}
.selectedCon
ul
li
i
{
font-size
:
18px
;
cursor
:
pointer
;
display
:
none
;
}
.selectedCon
ul
li
:hover
i
{
display
:
block
;
}
.selectedCon
ul
li
:hover
{
background-color
:
#F7FAFC
;
}
.selectedCon
::-webkit-scrollbar
{
width
:
3px
;
height
:
3px
;
background-color
:
#F5F5F5
;
}
/*!*定义滚动条轨道 内阴影+圆角*!*/
.selectedCon
::-webkit-scrollbar-track
{
-webkit-box-shadow
:
inset
0
0
6px
rgba
(
0
,
0
,
0
,
0.3
);
border-radius
:
10px
;
background-color
:
#F5F5F5
;
}
/*!*定义滑块 内阴影+圆角*!*/
.selectedCon
::-webkit-scrollbar-thumb
{
border-radius
:
10px
;
-webkit-box-shadow
:
-webkit-gradient
(
linear
,
0
0
,
0
100%
,
color-stop
(
.5
,
rgba
(
255
,
255
,
255
,
.2
)),
color-stop
(
.5
,
transparent
),
to
(
transparent
));
background-color
:
#0ae
;
}
</
style
>
<
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:9
00px;"
>
<q-card
style=
"width:
800px;max-width:8
00px;"
>
<q-card-section>
<div
class=
"text-h6"
>
选择学员
</div>
</q-card-section>
...
...
@@ -21,9 +188,56 @@
</div>
</div>
<q-card-section
class=
"q-pt-none scroll"
style=
"max-height: 50vh"
>
<el-tree
:data=
"dataList"
show-checkbox
node-key=
"GuestId"
ref=
"classStuTree"
highlight-current
:props=
"defaultProps"
>
</el-tree>
<div
class=
"SendContent"
>
<div
class=
"SendOne_Left"
>
<div
class=
"object_tit"
>
<span
style=
"margin-left:20px;"
>
班级/学生
</span>
<span>
全选
</span>
</div>
<div
class=
"objectList"
>
<ul>
<li
v-for=
"(item,index) in dataList"
:key=
"index"
>
<div
class=
"manageTitl"
@
click=
"getChildShow(item)"
>
<a
href=
"javascript:;"
:title=
"item.Name"
>
<i
class=
"iconfont icon-arrow-down"
v-if=
"item.isShowChild"
></i>
<i
class=
"iconfont icon-arrow-right3"
v-else
></i>
{{
item
.
Name
}}
</a>
<span
style=
"float:right;margin-right:35px;"
>
<el-checkbox
v-model=
"item.IsCheck"
@
change=
"getFatherCheck(item)"
></el-checkbox>
</span>
</div>
<ul
class=
"stuChilden"
:class=
"
{'showChild':item.isShowChild}">
<li
v-for=
"(subItem,subIndex) in item.SubList"
:key=
"subIndex"
>
<div
class=
"manageTitl"
style=
"display:flex;justify-content:space-between;"
>
<div
style=
"padding-left:40px;"
>
{{
subItem
.
Name
}}
</div>
<div
style=
"padding-right:35px;"
>
<el-checkbox
v-model=
"subItem.IsCheck"
@
change=
"getchildCheck(item)"
>
</el-checkbox>
</div>
</div>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div
class=
"SendOne_Right"
>
<div
class=
"TreeCked"
>
已选
{{
checkedStu
.
length
}}
人
</div>
<div
class=
"selectedCon"
>
<ul>
<li
v-for=
"(item,index) in checkedStu"
:key=
"index"
>
<div>
{{
item
.
Name
}}
</div>
<div>
<i
class=
"iconfont icon-shanchu2"
@
click=
"delChecked(item,index)"
></i>
</div>
</li>
</ul>
</div>
</div>
</div>
</q-card-section>
<q-separator
/>
<q-card-actions
align=
"right"
class=
"bg-white"
>
...
...
@@ -38,6 +252,12 @@
queryClassStudentTree
,
}
from
'../../api/course/class'
;
export
default
{
props
:
{
sendStudent
:
{
type
:
Array
,
default
:
null
}
},
data
()
{
return
{
persistent
:
true
,
...
...
@@ -52,12 +272,59 @@
},
//查询参数
loading
:
false
,
//表格加载进度条
dataList
:
[],
//数据列表
checkedStu
:
[],
//选中数据
checked
:
false
,
}
},
mounted
()
{
this
.
getClassStudentTree
();
},
methods
:
{
//点击父级全选或取消
getFatherCheck
(
item
)
{
if
(
item
&&
item
.
SubList
&&
item
.
SubList
.
length
>
0
)
{
item
.
SubList
.
forEach
(
y
=>
{
y
.
IsCheck
=
item
.
IsCheck
;
})
}
this
.
setStuChecked
();
},
//点击子节点选中或取消
getchildCheck
(
item
)
{
let
num
=
0
;
if
(
item
&&
item
.
SubList
&&
item
.
SubList
.
length
>
0
)
{
item
.
SubList
.
forEach
(
x
=>
{
if
(
x
.
IsCheck
)
{
num
++
}
})
if
(
num
==
item
.
SubList
.
length
)
{
item
.
IsCheck
=
true
;
}
else
{
item
.
IsCheck
=
false
;
}
}
this
.
setStuChecked
();
},
//删除选中名单
delChecked
(
item
,
index
)
{
this
.
checkedStu
.
splice
(
index
,
1
);
this
.
dataList
.
forEach
(
rootItem
=>
{
if
(
rootItem
.
SubList
&&
rootItem
.
SubList
.
length
>
0
)
{
var
chooseClassId
=
0
;
rootItem
.
SubList
.
forEach
(
sItem
=>
{
if
(
sItem
.
GuestId
==
item
.
GuestId
)
{
sItem
.
IsCheck
=
false
;
chooseClassId
=
sItem
.
ClassId
}
})
if
(
chooseClassId
>
0
&&
chooseClassId
==
rootItem
.
ClassId
)
{
rootItem
.
IsCheck
=
false
;
}
}
})
this
.
setStuChecked
();
},
//重新查询
research
()
{
this
.
getClassStudentTree
();
...
...
@@ -67,27 +334,76 @@
queryClassStudentTree
(
this
.
msg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
dataList
=
res
.
Data
;
this
.
dataList
.
forEach
(
x
=>
{
x
.
isShowChild
=
false
;
})
this
.
initStuCheck
();
}
})
},
//设置选中或取消选中
setStuChecked
()
{
this
.
checkedStu
=
[];
if
(
this
.
dataList
&&
this
.
dataList
.
length
>
0
)
{
this
.
dataList
.
forEach
(
rootItem
=>
{
if
(
rootItem
.
SubList
&&
rootItem
.
SubList
.
length
>
0
)
{
rootItem
.
SubList
.
forEach
(
sItem
=>
{
if
(
sItem
.
IsCheck
)
{
this
.
checkedStu
.
push
(
sItem
);
}
})
}
})
}
},
//初始化选中
initStuCheck
()
{
if
(
this
.
sendStudent
)
{
if
(
this
.
sendStudent
&&
this
.
sendStudent
.
length
>
0
&&
this
.
dataList
&&
this
.
dataList
.
length
>
0
)
{
this
.
dataList
.
forEach
(
rootItem
=>
{
if
(
rootItem
.
SubList
&&
rootItem
.
SubList
.
length
>
0
)
{
var
num
=
0
;
rootItem
.
SubList
.
forEach
(
sItem
=>
{
this
.
sendStudent
.
forEach
(
item
=>
{
if
(
sItem
.
GuestId
==
item
.
GuestId
)
{
sItem
.
IsCheck
=
true
;
num
++
;
this
.
checkedStu
.
push
(
sItem
);
}
})
})
if
(
num
==
rootItem
.
SubList
.
length
)
{
rootItem
.
IsCheck
=
true
;
}
else
{
rootItem
.
IsCheck
=
false
;
}
}
})
}
}
},
//关闭弹窗
closeSaveForm
()
{
this
.
$emit
(
'close'
)
},
//确认选择
sureQuestionBank
()
{
var
tempArray
=
[];
var
checkArray
=
this
.
$refs
.
classStuTree
.
getCheckedNodes
();
if
(
checkArray
&&
checkArray
.
length
>
0
)
{
checkArray
.
forEach
(
item
=>
{
if
(
item
.
SubList
&&
item
.
SubList
.
length
>
0
)
{}
else
{
tempArray
.
push
(
item
);
}
})
}
this
.
$emit
(
'success'
,
tempArray
);
this
.
$emit
(
'success'
,
this
.
checkedStu
);
},
//点击父级
getChildShow
(
item
)
{
item
.
isShowChild
=
!
item
.
isShowChild
;
this
.
$forceUpdate
();
}
},
watch
:
{
sendStudent
:
{
handler
(
newValue
)
{
this
.
initStuCheck
();
},
deep
:
true
},
}
}
</
script
>
...
...
src/pages/enterprise/addchannelcode.vue
View file @
b92c788d
...
...
@@ -116,13 +116,12 @@
ref=
"Id"
:options=
"GroupList"
label=
"分组"
:dense=
"false"
emit-value
map-options
/>
</el-form-item>
<el-form-item
label=
"活码名称:"
>
<q-input
v-model=
"addMsg.Name"
filled
clearable
label=
"活码名称"
:rules=
"[val => !!val || '请输入活码名称']"
/>
<q-input
v-model=
"addMsg.Name"
filled
clearable
label=
"活码名称"
:rules=
"[val => !!val || '请输入活码名称']"
:disable=
'Nameforbid'
/>
<div
style=
"color: red;"
>
(一旦创建,不可修改)
</div>
</el-form-item>
<el-form-item
label=
"自动添加好友:"
>
<div
class=
"q-gutter-sm"
style=
"align-items: center;display: flex;"
>
<q-radio
v-model=
"addMsg.SkipVerify"
val=
"1"
label=
"需验证"
/>
<q-radio
v-model=
"addMsg.SkipVerify"
val=
"2"
label=
"自动添加"
/>
<div
class=
"q-gutter-sm"
style=
"align-items: center;display: flex;width: 160%;"
>
<q-radio
v-model=
"addMsg.SkipVerify"
:val=
"x.Id"
:label=
"x.Name"
v-for=
"(x,y) in radiolist2"
:key=
'y'
/>
<span
style=
"color: red;"
>
(开启时,客户添加时无需企业成员确认,自动成为好友)
</span>
</div>
</el-form-item>
...
...
@@ -163,7 +162,7 @@
</el-form>
</div>
<div
class=
"page-body"
>
<div
class=
"page-body"
v-show=
"!loading"
>
<div
class=
"ant-card-head"
>
引流成员设置
</div>
...
...
@@ -173,8 +172,7 @@
<el-form
label-width=
"120px"
style=
"padding: 15px 0 ;"
>
<el-form-item
label=
"类型:"
>
<div
class=
"q-gutter-sm"
style=
"align-items: center;display: flex;"
>
<q-radio
v-model=
"addMsg.Type"
val=
"1"
label=
"单人"
@
input=
"btnType"
/>
<q-radio
v-model=
"addMsg.Type"
val=
"2"
label=
"多人"
@
input=
"btnType"
/>
<q-radio
:disable =
'Nameforbid'
v-model=
"addMsg.Type"
:val=
"x.Id"
:label=
"x.Name"
v-for=
"(x,y) in radiolist3"
:key=
'y'
@
input=
"btnType"
/>
<span
style=
"color: red;"
>
(一旦创建,不可修改)
</span>
</div>
</el-form-item>
...
...
@@ -193,9 +191,10 @@
<div
v-for=
"(x,y) in lsweeklist"
:key=
"y+'b'"
class=
"weekstyle2"
>
<div
v-for=
"(item,index) in x.lsMsg"
:key=
"index+'a1'"
style=
"width: 100%;;display: flex;flex-direction: column;align-items: center;border-bottom: 1px solid #e8e8e8;"
>
<div>
{{
item
.
S
r
artHours
}}
~
{{
item
.
EndHours
}}
</div>
<div>
{{
item
.
S
t
artHours
}}
~
{{
item
.
EndHours
}}
</div>
<div>
<q-btn
outline
color=
"primary"
disable
:label=
"item.EmpName"
size=
"sm"
/>
<q-btn
v-if=
"item.EmpId!=0"
outline
color=
"primary"
disable
:label=
"item.EmpName"
size=
"sm"
/>
<q-btn
v-if=
"item.EmpId==0"
outline
color=
"#FF0080"
disable
:label=
"item.EmpName"
size=
"sm"
/>
</div>
</div>
</div>
...
...
@@ -204,7 +203,7 @@
<div
v-for=
"(x,y) in lsweeklist"
:key=
"y+'b'"
class=
"weekstyle2"
>
<div
v-for=
"(item,index) in x.lsMsg"
:key=
"index+'a1'"
style=
"width: 100%;;display: flex;flex-direction: column;align-items: center;border-bottom: 1px solid #e8e8e8;"
>
<div>
{{
item
.
S
r
artHours
}}
~
{{
item
.
EndHours
}}
</div>
<div>
{{
item
.
S
t
artHours
}}
~
{{
item
.
EndHours
}}
</div>
<el-tooltip
class=
"item"
effect=
"dark"
:content=
"item.EmpName"
placement=
"top"
>
<div
style=
"width: 100%; overflow: hidden; white-space: nowrap;text-overflow: ellipsis;cursor: pointer;text-align: center;"
>
...
...
@@ -225,8 +224,7 @@
</el-form-item>
<el-form-item
label=
"特殊时期:"
>
<div
class=
"q-gutter-sm"
style=
"align-items: center;display: flex;"
>
<q-radio
v-model=
"addMsg.SpecialDateEnable"
val=
"1"
label=
"开启"
/>
<q-radio
v-model=
"addMsg.SpecialDateEnable"
val=
"2"
label=
"关闭"
/>
<q-radio
v-model=
"addMsg.SpecialDateEnable"
:val=
"x.Id"
:label=
"x.Name"
v-for=
"(x,y) in radiolist"
:key=
'y'
/>
<span
style=
"color: red;"
>
(如遇到国家节假日或是企业自身重要日子,在特殊时期内,需要更换活码成员)
</span>
</div>
<div
v-if=
"addMsg.SpecialDateEnable==1"
>
...
...
@@ -240,13 +238,13 @@
</el-date-picker>
<div
class=
"tsbox"
v-for=
"(item,index) in x.list"
:key=
'index'
>
<div
style=
"display: flex;align-items: flex-start;margin-top: 10px;"
>
<el-time-select
:disabled=
"i
ndex==0
"
placeholder=
"起始时间"
v-model=
"item.S
r
artHours"
size=
"small"
<el-time-select
:disabled=
"i
tem.IsDefault==1
"
placeholder=
"起始时间"
v-model=
"item.S
t
artHours"
size=
"small"
:picker-options=
"
{ start: '00:00', step: '01:00', end: '23:00', }">
</el-time-select>
<el-time-select
:disabled=
"i
ndex==0
"
placeholder=
"结束时间"
<el-time-select
:disabled=
"i
tem.IsDefault==1
"
placeholder=
"结束时间"
v-model=
"item.EndHours"
size=
"small"
:picker-options=
"
{ start: '00:00', step: '01:00', end: '23:00', minTime: item.S
r
artHours}">
:picker-options=
"
{ start: '00:00', step: '01:00', end: '23:00', minTime: item.S
t
artHours}">
</el-time-select>
<el-select
v-model=
"item.EmpList[0].Id"
placeholder=
"请选择"
size=
"small"
v-if=
"addMsg.Type==1"
@
change=
"selectPersonnel(y,index)"
>
...
...
@@ -264,11 +262,11 @@
<el-button
@
click=
"outerVisible=true,outerindex0=y,outerindex=index,byval=item.EmpList"
size=
"small"
>
选择企业成员
</el-button>
<q-btn
flat
color=
"red"
v-if=
"i
ndex>0
"
label=
"删除"
<q-btn
flat
color=
"red"
v-if=
"i
tem.IsDefault!=1
"
label=
"删除"
@
click=
"spweeklist[y].list.splice(index,1),getalluser()"
/>
</div>
</div>
<q-btn
flat
color=
"red"
v-if=
"i
ndex>0
&& addMsg.Type==1"
label=
"删除"
<q-btn
flat
color=
"red"
v-if=
"i
tem.IsDefault!=1
&& addMsg.Type==1"
label=
"删除"
@
click=
"spweeklist[y].list.splice(index,1),getalluser()"
/>
</div>
<div
v-if=
"addMsg.Type==2"
>
...
...
@@ -299,8 +297,7 @@
<el-form-item
label=
"员工添加上限:"
>
<div
class=
"q-gutter-sm"
style=
"align-items: center;display: flex;"
>
<q-radio
v-model=
"addMsg.EmpAddLimit"
val=
"1"
label=
"开启"
/>
<q-radio
v-model=
"addMsg.EmpAddLimit"
val=
"2"
label=
"关闭"
/>
<q-radio
v-model=
"addMsg.EmpAddLimit"
:val=
"x.Id"
:label=
"x.Name"
v-for=
"(x,y) in radiolist"
:key=
'y'
/>
<span
style=
"color: red;"
>
(因受官方限制,无法对动态部门的员工设置添加好友上限,只可针对指定活码成员进行设置)
</span>
</div>
<div
style=
"width: 70%;"
v-if=
"addMsg.EmpAddLimit==1"
>
...
...
@@ -343,8 +340,7 @@
<el-form
label-width=
"120px"
style=
"padding: 15px 0 ;"
>
<el-form-item
label=
"扫码推送:"
>
<div
class=
"q-gutter-sm"
style=
"align-items: center;display: flex;"
>
<q-radio
v-model=
"addMsg.WelcomeEnable"
val=
"1"
label=
"开启"
/>
<q-radio
v-model=
"addMsg.WelcomeEnable"
val=
"2"
label=
"关闭"
/>
<q-radio
v-model=
"addMsg.WelcomeEnable"
:val=
"x.Id"
:label=
"x.Name"
v-for=
"(x,y) in radiolist"
:key=
'y'
/>
<span
style=
"color: red;"
>
(关闭后,客户扫该渠道活码,依然可对该客户自动打标签,但仅收到系统的【欢迎语】消息)
</span>
</div>
</el-form-item>
...
...
@@ -373,8 +369,8 @@
<el-form
label-width=
"120px"
style=
"padding: 15px 0 ;"
>
<el-form-item
label=
"状态:"
>
<div
class=
"q-gutter-sm"
style=
"align-items: center;display: flex;"
>
<q-radio
v-model=
"addMsg.WelcomeWeekEnable"
val=
"1"
label=
"开启"
/>
<q-radio
v-model=
"addMsg.WelcomeWeekEnable"
val=
"2"
label=
"关闭"
/>
<q-radio
v-model=
"addMsg.WelcomeWeekEnable"
:val=
"x.Id"
:label=
"x.Name"
v-for=
"(x,y) in radiolist"
:key=
'y'
/>
</div>
</el-form-item>
</el-form>
...
...
@@ -399,12 +395,12 @@
<div
>
<div
style=
"display: flex;align-items: flex-start;"
class=
"tsbox"
>
<el-time-select
placeholder=
"起始时间"
v-model=
"x.S
r
artHours"
size=
"small"
v-model=
"x.S
t
artHours"
size=
"small"
:picker-options=
"
{ start: '00:00', step: '01:00', end: '23:00', }">
</el-time-select>
<el-time-select
placeholder=
"结束时间"
v-model=
"x.EndHours"
size=
"small"
:picker-options=
"
{ start: '00:00', step: '01:00', end: '23:00', minTime: x.S
r
artHours}">
:picker-options=
"
{ start: '00:00', step: '01:00', end: '23:00', minTime: x.S
t
artHours}">
</el-time-select>
<q-btn
flat
color=
"red"
v-if=
"y>0"
label=
"删除"
@
click=
"abv(index,y,x)"
/>
...
...
@@ -431,8 +427,7 @@
<el-form
label-width=
"120px"
style=
"padding: 15px 0 ;"
>
<el-form-item
label=
"状态:"
>
<div
class=
"q-gutter-sm"
style=
"align-items: center;display: flex;"
>
<q-radio
v-model=
"addMsg.WelcomeSpecialEnable"
val=
"1"
label=
"开启"
/>
<q-radio
v-model=
"addMsg.WelcomeSpecialEnable"
val=
"2"
label=
"关闭"
/>
<q-radio
v-model=
"addMsg.WelcomeSpecialEnable"
:val=
"x.Id"
:label=
"x.Name"
v-for=
"(x,y) in radiolist"
:key=
'y'
/>
</div>
</el-form-item>
</el-form>
...
...
@@ -457,12 +452,12 @@
<div
>
<div
style=
"display: flex;align-items: flex-start;"
class=
"tsbox"
>
<el-time-select
placeholder=
"起始时间"
v-model=
"x.S
r
artHours"
size=
"small"
v-model=
"x.S
t
artHours"
size=
"small"
:picker-options=
"
{ start: '00:00', step: '01:00', end: '23:00', }">
</el-time-select>
<el-time-select
placeholder=
"结束时间"
v-model=
"x.EndHours"
size=
"small"
:picker-options=
"
{ start: '00:00', step: '01:00', end: '23:00', minTime: x.S
r
artHours}">
:picker-options=
"
{ start: '00:00', step: '01:00', end: '23:00', minTime: x.S
t
artHours}">
</el-time-select>
<q-btn
flat
color=
"red"
v-if=
"y>0"
label=
"删除"
@
click=
"abv(index,y,x,2)"
/>
...
...
@@ -535,24 +530,27 @@
data
()
{
return
{
loading
:
false
,
radiolist
:[{
Id
:
1
,
Name
:
"开启"
},{
Id
:
2
,
Name
:
'关闭'
}],
radiolist2
:[{
Id
:
1
,
Name
:
"需验证"
},{
Id
:
2
,
Name
:
'自动添加'
}],
radiolist3
:[{
Id
:
1
,
Name
:
"单人"
},{
Id
:
2
,
Name
:
'多人'
}],
addMsg
:
{
Id
:
0
,
ChannelGroupId
:
''
,
//分组Id
Name
:
''
,
//渠道活码名称
SkipVerify
:
"1"
,
//自动添加好友 1需验证 2自动添加
SkipVerify
:
1
,
//自动添加好友 1需验证 2自动添加
LabelIdList
:
[],
//标签
Type
:
'1'
,
//类型 1单人 2多人
SpecialDateEnable
:
'2'
,
//特殊时期 1开启 2未开启
EmpAddLimit
:
'2'
,
//员工添加上限 1开启 2未开启
Type
:
1
,
//类型 1单人 2多人
SpecialDateEnable
:
2
,
//特殊时期 1开启 2未开启
EmpAddLimit
:
2
,
//员工添加上限 1开启 2未开启
WeekList
:
[],
//人员周期
SpecialWeekList
:
[],
//特殊周期
LimitList
:
[],
//员工添加上限
EmpBackUp
:
''
,
//备用员工 多人的话 英文逗号分隔
WelcomeEnable
:
'1'
,
//是否启用欢迎语 1是
WelcomeEnable
:
2
,
//是否启用欢迎语 1是
WelcomeList
:[{
Id
:
0
,
Content
:
''
,
MediumIds
:
''
,
MediumModel
:[]}],
//通用欢迎语
WelcomeWeekEnable
:
'2'
,
//周期欢迎语 1启用
WelcomeWeekEnable
:
2
,
//周期欢迎语 1启用
WelcomeWeekList
:[],
WelcomeSpecialEnable
:
'2'
,
//特殊时期欢迎语 1启用
WelcomeSpecialEnable
:
2
,
//特殊时期欢迎语 1启用
WelcomeSpecialList
:[],
},
GroupList
:
[],
//分组数据
...
...
@@ -560,11 +558,11 @@
Lableshow
:
false
,
ismember
:
false
,
//成员弹窗
lsMsg
:
[],
//人员临时的msg
lsweeklist
:
[{
Id
:
1
,
Name
:
'周一'
,
chek
:
false
},
{
Id
:
2
,
Name
:
'周二'
,
chek
:
false
},
{
Id
:
3
,
Name
:
'周三'
,
chek
:
false
},
{
Id
:
4
,
Name
:
'周四'
,
chek
:
false
},
{
Id
:
5
,
Name
:
'周五'
,
chek
:
false
},
{
Id
:
6
,
Name
:
'周六'
,
chek
:
false
},
{
Id
:
0
,
Name
:
'周日'
,
chek
:
false
}],
//周末
lsweeklist
:
[{
Id
:
1
,
Name
:
'周一'
,
chek
:
false
,
lsMsg
:[]},
{
Id
:
2
,
Name
:
'周二'
,
chek
:
false
,
lsMsg
:[]},
{
Id
:
3
,
Name
:
'周三'
,
chek
:
false
,
lsMsg
:[]},
{
Id
:
4
,
Name
:
'周四'
,
chek
:
false
,
lsMsg
:[]},
{
Id
:
5
,
Name
:
'周五'
,
chek
:
false
,
lsMsg
:[]},
{
Id
:
6
,
Name
:
'周六'
,
chek
:
false
,
lsMsg
:[]},
{
Id
:
0
,
Name
:
'周日'
,
chek
:
false
,
lsMsg
:[]
}],
//周末
editType
:
''
,
//选中修改
lsday
:
''
,
//修改的时候记录是哪天的
spweeklist
:
[
{
Id
:
0
,
StartDate
:
''
,
EndDate
:
''
,
value
:
''
,
list
:
[{
IsDefault
:
1
,
S
r
artHours
:
'00:00'
,
EndHours
:
'00:00'
,
EmpList
:
[{
Id
:
''
,
Name
:
''
}],
DeptList
:
[],
returnString
:
[]
}]
}
{
Id
:
0
,
StartDate
:
''
,
EndDate
:
''
,
value
:
''
,
list
:
[{
IsDefault
:
1
,
S
t
artHours
:
'00:00'
,
EndHours
:
'00:00'
,
EmpList
:
[{
Id
:
''
,
Name
:
''
}],
DeptList
:
[],
returnString
:
[]
}]
}
],
Employeelist
:
[],
//人员单选数据
deptl
:
[],
//部门下拉
...
...
@@ -578,12 +576,19 @@
splitterModel
:
13
,
welcomeindex
:
'0'
,
wwlist
:[{
weeklist
:[{
Id
:
1
,
Name
:
'周一'
,
chek
:
false
},
{
Id
:
2
,
Name
:
'周二'
,
chek
:
false
},
{
Id
:
3
,
Name
:
'周三'
,
chek
:
false
},
{
Id
:
4
,
Name
:
'周四'
,
chek
:
false
},
{
Id
:
5
,
Name
:
'周五'
,
chek
:
false
},
{
Id
:
6
,
Name
:
'周六'
,
chek
:
false
},
{
Id
:
0
,
Name
:
'周日'
,
chek
:
false
}],
childrenlist
:[{
S
r
artHours
:
''
,
EndHours
:
''
,
Id
:
0
,
Content
:
''
,
MediumIds
:
''
,
MediumModel
:[]}]
childrenlist
:[{
S
t
artHours
:
''
,
EndHours
:
''
,
Id
:
0
,
Content
:
''
,
MediumIds
:
''
,
MediumModel
:[]}]
}],
//周期欢迎语
editableTabsValue
:
'0'
,
editableTabsValue2
:
'0'
,
wsplist
:[{
StartDate
:
''
,
EndDate
:
''
,
value
:[],
childrenlist
:[{
S
r
artHours
:
''
,
EndHours
:
''
,
Id
:
0
,
Content
:
''
,
MediumIds
:
''
,
MediumModel
:[]}]
}],
//特殊欢迎语
wsplist
:[{
StartDate
:
''
,
EndDate
:
''
,
value
:[],
childrenlist
:[{
S
t
artHours
:
''
,
EndHours
:
''
,
Id
:
0
,
Content
:
''
,
MediumIds
:
''
,
MediumModel
:[]}]
}],
//特殊欢迎语
isall
:
false
,
//验证通过
Nameforbid
:
false
,
//渠道名称 修改时不能改变
}
},
mounted
(){
if
(
this
.
$route
.
query
&&
this
.
$route
.
query
.
Id
){
this
.
getqudaodetails
()
//获取详情
this
.
Nameforbid
=
true
}
},
created
()
{
...
...
@@ -591,31 +596,210 @@
this
.
getLableList
()
//获取标签列表
this
.
queryEmployee
()
//单选
this
.
getDepartList
()
//部门下拉
if
(
this
.
$route
.
query
&&
this
.
$route
.
query
.
Id
){
this
.
getqudaodetails
()
//获取详情
}
},
methods
:
{
getqudaodetails
(){
//渠道详情
getWeChatChannelInfo
({
ChannelId
:
this
.
$route
.
query
.
Id
}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
loading
=
true
this
.
addMsg
=
res
.
Data
console
.
log
(
this
.
addMsg
.
LabelIdList
)
this
.
addMsg
.
LabelIdList
.
map
(
z
=>
{
this
.
LableList
.
map
(
x
=>
{
let
isexist
=
false
x
.
ChildList
.
map
(
j
=>
{
if
(
z
==
x
.
Id
){
j
.
chek
=
true
isexist
=
true
if
(
this
.
addMsg
.
LabelIdList
&&
this
.
addMsg
.
LabelIdList
.
length
>
0
){
this
.
addMsg
.
LabelIdList
.
map
(
z
=>
{
//处理标签
this
.
LableList
.
map
(
x
=>
{
let
isexist
=
false
x
.
ChildList
.
map
(
j
=>
{
if
(
z
==
j
.
Id
){
j
.
chek
=
true
isexist
=
true
}
})
if
(
isexist
==
true
){
return
}
})
if
(
isexist
==
true
){
return
})
}
if
(
this
.
addMsg
.
Type
==
1
){
this
.
addMsg
.
WeekList
.
map
(
x
=>
{
//单人模式处理 人员
this
.
lsweeklist
.
map
(
j
=>
{
if
(
x
.
Week
==
j
.
Id
){
j
.
chek
=
true
;
// j.lsMsg= []
if
(
x
.
EmpList
&&
x
.
EmpList
.
length
>
0
){
x
.
EmpList
.
forEach
(
z
=>
{
let
obj
=
{
EmpId
:
z
.
Id
,
EmpName
:
z
.
Name
,
Id
:
x
.
Id
,
IsDefault
:
x
.
IsDefault
,
StartHours
:
x
.
StartHours
,
EndHours
:
x
.
EndHours
,
}
j
.
lsMsg
.
push
(
obj
)
})
}
else
{
let
obj
=
{
EmpId
:
0
,
EmpName
:
'离职'
,
Id
:
x
.
Id
,
IsDefault
:
x
.
IsDefault
,
StartHours
:
x
.
StartHours
,
EndHours
:
x
.
EndHours
,
}
j
.
lsMsg
.
push
(
obj
)
}
return
}
})
})
}
else
{
this
.
lsweeklist
.
map
(
x
=>
{
//多人模式
this
.
addMsg
.
WeekList
.
map
(
j
=>
{
if
(
x
.
Id
==
j
.
Week
){
x
.
chek
=
true
;
// x.lsMsg = []
let
eplist
=
[];
let
EmpName
=
''
;
j
.
EmpList
.
forEach
(
z
=>
{
let
obj
=
{
DeptId
:
z
.
Id
,
DeptName
:
z
.
Name
,
}
eplist
.
push
(
obj
)
EmpName
=
EmpName
+
z
.
Name
+
','
})
let
obj
=
{
Id
:
j
.
Id
,
IsDefault
:
j
.
IsDefault
,
StartHours
:
j
.
StartHours
,
EndHours
:
j
.
EndHours
,
EmpList
:
eplist
,
DeptList
:
j
.
DeptList
,
EmpName
:
EmpName
,
returnString
:[]
}
x
.
lsMsg
.
push
(
obj
)
}
})
})
//多人的时候 备用员工处理处理
if
(
this
.
addMsg
.
EmpBackUp
!=
''
){
let
data
=
this
.
addMsg
.
EmpBackUp
.
split
(
','
)
this
.
EmpBackUpList
=
[]
data
.
forEach
(
x
=>
{
this
.
Employeelist
.
map
(
j
=>
{
if
(
x
==
j
.
Id
){
let
obj
=
{
DeptId
:
j
.
Id
,
DeptName
:
j
.
EmployeeName
}
this
.
EmpBackUpList
.
push
(
obj
)
return
}
})
})
}
}
//特殊时期 数据处理
if
(
this
.
addMsg
.
SpecialDateEnable
==
1
&&
this
.
addMsg
.
SpecialWeekList
.
length
>
0
){
this
.
spweeklist
=
[];
this
.
addMsg
.
SpecialWeekList
.
forEach
((
x
,
y
)
=>
{
let
list
=
JSON
.
parse
(
JSON
.
stringify
(
x
.
ChlidList
))
if
(
this
.
addMsg
.
Type
==
2
){
setTimeout
(()
=>
{
list
=
[];
x
.
ChlidList
.
forEach
(
j
=>
{
let
returnString
=
[]
let
a
=
[]
j
.
EmpList
.
forEach
(
z
=>
{
let
epobj
=
{
DeptId
:
z
.
Id
,
DeptName
:
z
.
Name
,
}
a
.
push
(
epobj
)
})
j
.
DeptList
.
forEach
(
z
=>
{
returnString
.
push
(
z
.
Id
)
})
let
obj
=
{
DeptList
:
j
.
DeptList
,
EmpList
:
a
,
EndHours
:
j
.
EndHours
,
IsDefault
:
j
.
IsDefault
,
StartHours
:
j
.
StartHours
,
returnString
:
returnString
,
}
list
.
push
(
obj
)
})
this
.
spweeklist
[
y
].
list
=
JSON
.
parse
(
JSON
.
stringify
(
list
))
},
10
)
}
let
obj
=
{
StartDate
:
x
.
StartDate
,
EndDate
:
x
.
EndDate
,
value
:[
x
.
StartDate
,
x
.
EndDate
],
list
:
list
}
this
.
spweeklist
.
push
(
obj
)
})
}
if
(
this
.
addMsg
.
EmpAddLimit
==
1
){
this
.
addMsg
.
EmpBackUp
=
Number
(
this
.
addMsg
.
EmpBackUp
)
}
//欢迎语通用处理
if
(
this
.
addMsg
.
WelcomeList
==
null
||
this
.
addMsg
.
WelcomeList
.
length
==
0
){
this
.
addMsg
.
WelcomeList
=
[{
Id
:
0
,
Content
:
''
,
MediumIds
:
''
,
MediumModel
:[]}]
//通用欢迎语
}
else
if
(
this
.
addMsg
.
WelcomeList
.
length
>
0
){
this
.
addMsg
.
WelcomeList
[
0
].
MediumModel
=
this
.
addMsg
.
WelcomeList
[
0
].
MediumList
?
this
.
addMsg
.
WelcomeList
[
0
].
MediumList
:[]
}
//周期欢迎语的处理
if
(
this
.
addMsg
.
WelcomeWeekList
&&
this
.
addMsg
.
WelcomeWeekList
.
length
>
0
){
let
data
=
this
.
addMsg
.
WelcomeWeekList
data
.
forEach
(
x
=>
{
x
.
weeklist
=
[{
Id
:
1
,
Name
:
'周一'
,
chek
:
false
},
{
Id
:
2
,
Name
:
'周二'
,
chek
:
false
},
{
Id
:
3
,
Name
:
'周三'
,
chek
:
false
},
{
Id
:
4
,
Name
:
'周四'
,
chek
:
false
},
{
Id
:
5
,
Name
:
'周五'
,
chek
:
false
},
{
Id
:
6
,
Name
:
'周六'
,
chek
:
false
},
{
Id
:
0
,
Name
:
'周日'
,
chek
:
false
}]
x
.
childrenlist
=
x
.
ChildList
if
(
x
.
weeklist
&&
x
.
weeklist
.
length
>
0
){
x
.
weeklist
.
forEach
(
j
=>
{
if
(
x
.
Weeks
.
indexOf
(
j
.
Id
)
!=-
1
){
j
.
chek
=
true
}
})
}
if
(
x
.
childrenlist
&&
x
.
childrenlist
.
length
>
0
){
x
.
childrenlist
.
forEach
(
j
=>
{
j
.
MediumModel
=
j
.
MediumList
?
j
.
MediumList
:[]
})
}
})
})
this
.
wwlist
=
data
}
// wsplist:[{StartDate:'',EndDate:'', value:[],childrenlist:[{StartHours:'',EndHours:'',Id:0,Content:'',MediumIds:'',MediumModel:[]}] }],//特殊欢迎语
//特殊欢迎语的处理
if
(
this
.
addMsg
.
WelcomeSpecialList
&&
this
.
addMsg
.
WelcomeSpecialList
.
length
>
0
){
let
data
=
this
.
addMsg
.
WelcomeSpecialList
data
.
forEach
(
x
=>
{
x
.
value
=
[
x
.
StartDate
,
x
.
EndDate
]
x
.
childrenlist
=
x
.
ChildList
if
(
x
.
childrenlist
&&
x
.
childrenlist
.
length
>
0
){
x
.
childrenlist
.
forEach
(
j
=>
{
j
.
MediumModel
=
j
.
MediumList
?
j
.
MediumList
:[]
})
}
})
this
.
wsplist
=
data
}
this
.
loading
=
false
}
}).
catch
(()
=>
{
...
...
@@ -640,6 +824,7 @@
this
.
deptl
=
res
.
Data
;
}
})
},
getChannelGroupList
()
{
getWeChatChannelGroupList
({}).
then
(
res
=>
{
...
...
@@ -680,6 +865,7 @@
getsuccess
(
msg
,
lsweeklist
)
{
//人员选择返回数据
this
.
lsMsg
=
JSON
.
parse
(
JSON
.
stringify
(
msg
))
this
.
lsweeklist
=
lsweeklist
;
console
.
log
(
lsweeklist
)
if
(
this
.
addMsg
.
Type
==
2
)
{
//如果选择多人的时候
this
.
lsweeklist
.
forEach
(
x
=>
{
if
(
x
.
chek
==
true
)
{
...
...
@@ -697,10 +883,12 @@
},
getsuccess2
(
list
,
type
)
{
console
.
log
(
list
)
if
(
type
==
1
){
this
.
spweeklist
[
this
.
outerindex0
].
list
[
this
.
outerindex
].
EmpList
=
JSON
.
parse
(
JSON
.
stringify
(
list
))
this
.
outerVisible
=
false
;
this
.
getalluser
()
console
.
log
(
this
.
spweeklist
)
}
else
{
console
.
log
(
list
)
this
.
EmpBackUpList
=
list
...
...
@@ -720,9 +908,9 @@
this
.
lsweeklist
=
[{
Id
:
1
,
Name
:
'周一'
,
chek
:
false
},
{
Id
:
2
,
Name
:
'周二'
,
chek
:
false
},
{
Id
:
3
,
Name
:
'周三'
,
chek
:
false
},
{
Id
:
4
,
Name
:
'周四'
,
chek
:
false
},
{
Id
:
5
,
Name
:
'周五'
,
chek
:
false
},
{
Id
:
6
,
Name
:
'周六'
,
chek
:
false
},
{
Id
:
0
,
Name
:
'周日'
,
chek
:
false
}]
if
(
this
.
addMsg
.
Type
==
1
)
{
//单人模式
this
.
spweeklist
=
[{
Id
:
0
,
StartDate
:
''
,
EndDate
:
''
,
value
:
''
,
list
:
[{
IsDefault
:
1
,
S
r
artHours
:
'00:00'
,
EndHours
:
'00:00'
,
EmpList
:
[{
Id
:
''
,
Name
:
''
}],
DeptList
:
[],
returnString
:
[]
}]
}]
this
.
spweeklist
=
[{
Id
:
0
,
StartDate
:
''
,
EndDate
:
''
,
value
:
''
,
list
:
[{
IsDefault
:
1
,
S
t
artHours
:
'00:00'
,
EndHours
:
'00:00'
,
EmpList
:
[{
Id
:
''
,
Name
:
''
}],
DeptList
:
[],
returnString
:
[]
}]
}]
}
else
{
this
.
spweeklist
=
[{
Id
:
0
,
StartDate
:
''
,
EndDate
:
''
,
value
:
''
,
list
:
[{
IsDefault
:
1
,
S
r
artHours
:
'00:00'
,
EndHours
:
'00:00'
,
EmpList
:
[],
DeptList
:
[],
returnString
:
[]
}]
}]
this
.
spweeklist
=
[{
Id
:
0
,
StartDate
:
''
,
EndDate
:
''
,
value
:
''
,
list
:
[{
IsDefault
:
1
,
S
t
artHours
:
'00:00'
,
EndHours
:
'00:00'
,
EmpList
:
[],
DeptList
:
[],
returnString
:
[]
}]
}]
}
this
.
addMsg
.
LimitList
=
[];
this
.
addMsg
.
EmpBackUp
=
''
;
...
...
@@ -733,7 +921,7 @@
this
.
$router
.
go
(
-
1
);
//返回上一层
},
savemove
()
{
this
.
isall
=
=
false
//初始化
this
.
isall
=
false
//初始化
if
(
this
.
addMsg
.
ChannelGroupId
==
''
){
this
.
$q
.
notify
({
type
:
'negative'
,
...
...
@@ -761,10 +949,13 @@
})
this
.
addMsg
.
WeekList
=
[];
this
.
getWeekListdata
()
//处理企业人员的数据 给予后台
if
(
this
.
addMsg
.
SpecialDateEnable
==
1
)
{
console
.
log
(
'特殊验证'
,
this
.
isall
)
if
(
this
.
addMsg
.
SpecialDateEnable
==
1
&&
this
.
isall
==
false
)
{
this
.
getSpecialWeekListdata
()
//特殊时期的数据
}
if
(
this
.
addMsg
.
Type
==
2
&&
this
.
addMsg
.
EmpAddLimit
==
1
){
//多人 备用开启 处理备用人员数据
console
.
log
(
'处理备用人员数据'
,
this
.
isall
)
if
(
this
.
addMsg
.
Type
==
2
&&
this
.
addMsg
.
EmpAddLimit
==
1
&&
this
.
isall
==
false
){
//多人 备用开启 处理备用人员数据
if
(
this
.
EmpBackUpList
.
length
>
0
){
let
data
=
[]
this
.
EmpBackUpList
.
forEach
(
x
=>
{
...
...
@@ -774,7 +965,9 @@
}
}
//验证欢迎语
if
(
this
.
addMsg
.
WelcomeEnable
==
1
){
console
.
log
(
'验证欢迎语'
,
this
.
isall
)
if
(
this
.
addMsg
.
WelcomeEnable
==
1
&&
this
.
isall
==
false
){
this
.
welcometverification
()
}
if
(
this
.
isall
==
false
){
...
...
@@ -798,7 +991,7 @@
},
welcometverification
(){
//欢迎语的验证
//1 通用验证
if
(
this
.
addMsg
.
WelcomeList
[
0
].
Content
==
''
){
if
(
this
.
addMsg
.
WelcomeList
[
0
].
Content
==
''
||
this
.
addMsg
.
WelcomeList
[
0
].
Content
==
null
){
this
.
$q
.
notify
({
type
:
'negative'
,
message
:
`请输入通用欢迎语的内容`
,
...
...
@@ -807,12 +1000,21 @@
this
.
isall
=
true
return
}
if
(
this
.
addMsg
.
WelcomeList
[
0
].
MediumModel
&&
this
.
addMsg
.
WelcomeList
[
0
].
MediumModel
.
length
>
0
){
let
ids
=
[]
this
.
addMsg
.
WelcomeList
[
0
].
MediumModel
.
forEach
(
z
=>
{
ids
.
push
(
z
.
Id
)
})
this
.
addMsg
.
WelcomeList
[
0
].
MediumIds
=
ids
.
join
(
','
);
}
//2 周期欢迎语
if
(
this
.
addMsg
.
WelcomeWeekEnable
==
1
){
let
isweek
=
false
;
let
isContent
=
false
;
let
isHours
=
false
;
let
data
=
[]
this
.
wwlist
.
map
(
x
=>
{
isweek
=
false
;
let
obj
=
{}
...
...
@@ -834,7 +1036,7 @@
return
}
x
.
childrenlist
.
map
(
j
=>
{
if
(
j
.
S
r
artHours
==
''
||
j
.
EndHours
==
''
)
{
if
(
j
.
S
t
artHours
==
''
||
j
.
EndHours
==
''
)
{
isHours
=
true
;
return
}
...
...
@@ -842,7 +1044,7 @@
isContent
=
true
return
}
obj
.
S
rartHours
=
j
.
Sr
artHours
;
obj
.
S
tartHours
=
j
.
St
artHours
;
obj
.
EndHours
=
j
.
EndHours
;
obj
.
Id
=
j
.
Id
;
obj
.
Content
=
j
.
Content
;
...
...
@@ -900,7 +1102,7 @@
obj
.
StartDate
=
x
.
value
[
0
]
obj
.
EndDate
=
x
.
value
[
1
]
x
.
childrenlist
.
map
(
j
=>
{
if
(
j
.
S
r
artHours
==
''
||
j
.
EndHours
==
''
)
{
if
(
j
.
S
t
artHours
==
''
||
j
.
EndHours
==
''
)
{
isHours
=
true
;
return
}
...
...
@@ -908,7 +1110,7 @@
isContent
=
true
return
}
obj
.
S
rartHours
=
j
.
Sr
artHours
;
obj
.
S
tartHours
=
j
.
St
artHours
;
obj
.
EndHours
=
j
.
EndHours
;
obj
.
Id
=
j
.
Id
;
obj
.
Content
=
j
.
Content
;
...
...
@@ -960,7 +1162,7 @@
x
.
list
.
map
((
j
,
ji
)
=>
{
if
(
isEmpId
)
return
if
(
ji
>
0
)
{
if
(
j
.
S
r
artHours
==
''
||
j
.
EndHours
==
''
)
{
if
(
j
.
S
t
artHours
==
''
||
j
.
EndHours
==
''
)
{
isHours
=
true
;
return
}
...
...
@@ -1009,6 +1211,7 @@
list
.
push
(
obj
)
})
eplist
=
list
console
.
log
(
eplist
)
}
let
obj
=
{
...
...
@@ -1016,7 +1219,7 @@
StartDate
:
x
.
value
[
0
],
EndDate
:
x
.
value
[
1
],
IsDefault
:
j
.
IsDefault
,
S
rartHours
:
j
.
Sr
artHours
,
S
tartHours
:
j
.
St
artHours
,
EndHours
:
j
.
EndHours
,
EmpList
:
eplist
,
DeptList
:
dlist
,
...
...
@@ -1056,15 +1259,39 @@
},
getWeekListdata
()
{
this
.
lsweeklist
.
forEach
(
x
=>
{
let
show
=
false
let
show2
=
false
console
.
log
(
this
.
isall
,
'进入判断'
)
this
.
lsweeklist
.
map
(
x
=>
{
if
(
show
==
true
){
return
}
if
(
show2
==
true
){
return
}
if
(
x
.
chek
==
true
)
{
if
(
this
.
addMsg
.
Type
==
1
)
{
x
.
lsMsg
.
forEach
(
j
=>
{
x
.
lsMsg
.
map
(
j
=>
{
if
(
j
.
EmpId
==
0
){
//判断是否是离职的员工
this
.
isall
=
true
console
.
log
(
this
.
isall
,
'修改值 1 '
)
show2
=
true
this
.
$q
.
notify
({
type
:
'negative'
,
message
:
`周期人员有人离职,请重新选择`
,
position
:
'top'
})
return
}
if
(
show2
==
true
){
return
}
let
obj
=
{
Id
:
j
.
Id
,
Week
:
x
.
Id
,
IsDefault
:
j
.
IsDefault
,
S
rartHours
:
j
.
Sr
artHours
,
S
tartHours
:
j
.
St
artHours
,
EndHours
:
j
.
EndHours
,
EmpList
:
[
{
Id
:
j
.
EmpId
,
Name
:
j
.
EmpName
}
...
...
@@ -1074,29 +1301,51 @@
this
.
addMsg
.
WeekList
.
push
(
obj
)
})
}
else
{
x
.
lsMsg
.
forEach
(
j
=>
{
let
eplist
=
[]
j
.
EmpList
.
forEach
(
z
=>
{
let
epobj
=
{
Id
:
z
.
DeptId
,
Name
:
z
.
DeptName
,
}
eplist
.
push
(
epobj
)
})
let
obj
=
{
Id
:
j
.
Id
,
Week
:
x
.
Id
,
IsDefault
:
j
.
IsDefault
,
S
rartHours
:
j
.
Sr
artHours
,
S
tartHours
:
j
.
St
artHours
,
EndHours
:
j
.
EndHours
,
EmpList
:
j
.
EmpL
ist
,
EmpList
:
epl
ist
,
DeptList
:
j
.
DeptList
,
};
this
.
addMsg
.
WeekList
.
push
(
obj
)
})
}
}
else
{
console
.
log
(
this
.
isall
,
'修改值 2 '
)
this
.
$q
.
notify
({
type
:
'negative'
,
message
:
`请完善周期数据`
,
position
:
'top'
})
this
.
isall
=
true
show
=
true
return
}
})
},
adddata
(
y
)
{
//特殊时期的内部添加
let
obj
if
(
this
.
addMsg
.
Type
==
1
)
{
//单人模式
obj
=
{
IsDefault
:
2
,
S
r
artHours
:
''
,
EndHours
:
''
,
EmpList
:
[{
Id
:
''
,
Name
:
''
}],
DeptList
:
[],
returnString
:
[]
}
obj
=
{
IsDefault
:
2
,
S
t
artHours
:
''
,
EndHours
:
''
,
EmpList
:
[{
Id
:
''
,
Name
:
''
}],
DeptList
:
[],
returnString
:
[]
}
}
else
{
obj
=
{
IsDefault
:
2
,
S
r
artHours
:
''
,
EndHours
:
''
,
EmpList
:
[],
DeptList
:
[],
returnString
:
[]
}
obj
=
{
IsDefault
:
2
,
S
t
artHours
:
''
,
EndHours
:
''
,
EmpList
:
[],
DeptList
:
[],
returnString
:
[]
}
}
this
.
spweeklist
[
y
].
list
.
push
(
obj
)
...
...
@@ -1104,9 +1353,9 @@
addalldata
()
{
//特殊时期的外部添加
let
obj
if
(
this
.
addMsg
.
Type
==
1
)
{
//单人模式
obj
=
{
Id
:
0
,
StartDate
:
''
,
EndDate
:
''
,
value
:
''
,
list
:
[{
IsDefault
:
1
,
S
r
artHours
:
'00:00'
,
EndHours
:
'00:00'
,
EmpList
:
[{
Id
:
''
,
Name
:
''
}],
DeptList
:
[],
returnString
:
[]
}]
}
obj
=
{
Id
:
0
,
StartDate
:
''
,
EndDate
:
''
,
value
:
''
,
list
:
[{
IsDefault
:
1
,
S
t
artHours
:
'00:00'
,
EndHours
:
'00:00'
,
EmpList
:
[{
Id
:
''
,
Name
:
''
}],
DeptList
:
[],
returnString
:
[]
}]
}
}
else
{
obj
=
{
Id
:
0
,
StartDate
:
''
,
EndDate
:
''
,
value
:
''
,
list
:
[{
IsDefault
:
1
,
S
r
artHours
:
'00:00'
,
EndHours
:
'00:00'
,
EmpList
:
[],
DeptList
:
[],
returnString
:
[]
}]
}
obj
=
{
Id
:
0
,
StartDate
:
''
,
EndDate
:
''
,
value
:
''
,
list
:
[{
IsDefault
:
1
,
S
t
artHours
:
'00:00'
,
EndHours
:
'00:00'
,
EmpList
:
[],
DeptList
:
[],
returnString
:
[]
}]
}
}
this
.
spweeklist
.
push
(
obj
)
...
...
@@ -1204,18 +1453,19 @@
this
.
getalluser
()
},
getalluser
()
{
//获取所以选择的成员的 上限处理
this
.
addMsg
.
LimitList
=
[]
let
temporaryList
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
addMsg
.
LimitList
))
let
newList
=
[]
this
.
lsweeklist
.
forEach
(
x
=>
{
//企业成员
if
(
x
.
chek
==
true
){
x
.
lsMsg
.
forEach
(
j
=>
{
if
(
this
.
addMsg
.
Type
==
1
){
let
obj
=
{
Id
:
0
,
EmpId
:
j
.
EmpId
,
EmpName
:
j
.
EmpName
,
LimitNum
:
'0'
}
this
.
addMsg
.
Limit
List
.
push
(
obj
)
new
List
.
push
(
obj
)
}
else
{
j
.
EmpList
.
forEach
(
z
=>
{
let
obj
=
{
Id
:
0
,
EmpId
:
z
.
DeptId
,
EmpName
:
z
.
DeptName
,
LimitNum
:
'0'
}
this
.
addMsg
.
Limit
List
.
push
(
obj
)
new
List
.
push
(
obj
)
})
}
...
...
@@ -1225,7 +1475,7 @@
this
.
Employeelist
.
map
(
z
=>
{
if
(
item
.
Id
==
z
.
Dept_Id
){
let
obj
=
{
Id
:
0
,
EmpId
:
z
.
Id
,
EmpName
:
z
.
EmployeeName
,
LimitNum
:
'0'
}
this
.
addMsg
.
Limit
List
.
push
(
obj
)
new
List
.
push
(
obj
)
}
})
})
...
...
@@ -1242,11 +1492,11 @@
if
(
this
.
addMsg
.
Type
==
1
){
if
(
item
.
Id
!=
''
){
obj
=
{
Id
:
0
,
EmpId
:
item
.
Id
,
EmpName
:
item
.
Name
,
LimitNum
:
'0'
}
this
.
addMsg
.
Limit
List
.
push
(
obj
)
new
List
.
push
(
obj
)
}
}
else
{
obj
=
{
Id
:
0
,
EmpId
:
item
.
DeptId
,
EmpName
:
item
.
DeptName
,
LimitNum
:
'0'
}
this
.
addMsg
.
Limit
List
.
push
(
obj
)
new
List
.
push
(
obj
)
}
})
...
...
@@ -1256,7 +1506,7 @@
this
.
Employeelist
.
map
(
z
=>
{
if
(
item
.
Id
==
z
.
Dept_Id
){
let
obj
=
{
Id
:
0
,
EmpId
:
z
.
Id
,
EmpName
:
z
.
EmployeeName
,
LimitNum
:
'0'
}
this
.
addMsg
.
Limit
List
.
push
(
obj
)
new
List
.
push
(
obj
)
}
})
})
...
...
@@ -1266,9 +1516,16 @@
})
}
this
.
addMsg
.
LimitList
=
this
.
filterArr
(
this
.
addMsg
.
LimitList
,
'EmpId'
)
// console.log(this.addMsg.LimitList)
newList
=
this
.
filterArr
(
newList
,
'EmpId'
)
//去重
this
.
addMsg
.
LimitList
=
JSON
.
parse
(
JSON
.
stringify
(
newList
))
newList
.
forEach
((
x
,
y
)
=>
{
//如果人员没变动不修改输入值
temporaryList
.
map
(
j
=>
{
if
(
x
.
EmpId
==
j
.
EmpId
){
this
.
addMsg
.
LimitList
[
y
]
=
JSON
.
parse
(
JSON
.
stringify
(
j
))
return
}
})
})
},
filterArr
(
Arr
,
data
)
{
//根据参数去重
let
newarr
=
{};
...
...
@@ -1290,14 +1547,14 @@
handleTabsEdit
(
targetName
,
action
){
if
(
action
==
'add'
){
this
.
wwlist
.
push
({
weeklist
:[{
Id
:
1
,
Name
:
'周一'
,
chek
:
false
},
{
Id
:
2
,
Name
:
'周二'
,
chek
:
false
},
{
Id
:
3
,
Name
:
'周三'
,
chek
:
false
},
{
Id
:
4
,
Name
:
'周四'
,
chek
:
false
},
{
Id
:
5
,
Name
:
'周五'
,
chek
:
false
},
{
Id
:
6
,
Name
:
'周六'
,
chek
:
false
},
{
Id
:
0
,
Name
:
'周日'
,
chek
:
false
}],
childrenlist
:[{
S
r
artHours
:
''
,
EndHours
:
''
,
Id
:
0
,
Content
:
''
,
MediumIds
:
''
,
MediumModel
:[]}]
childrenlist
:[{
S
t
artHours
:
''
,
EndHours
:
''
,
Id
:
0
,
Content
:
''
,
MediumIds
:
''
,
MediumModel
:[]}]
})
this
.
$forceUpdate
();
}
},
handleTabsEdit2
(
targetName
,
action
){
if
(
action
==
'add'
){
this
.
wsplist
.
push
({
StartDate
:
''
,
EndDate
:
''
,
value
:[],
childrenlist
:[{
S
r
artHours
:
''
,
EndHours
:
''
,
Id
:
0
,
Content
:
''
,
MediumIds
:
''
,
MediumModel
:[]}]
})
this
.
wsplist
.
push
({
StartDate
:
''
,
EndDate
:
''
,
value
:[],
childrenlist
:[{
S
t
artHours
:
''
,
EndHours
:
''
,
Id
:
0
,
Content
:
''
,
MediumIds
:
''
,
MediumModel
:[]}]
})
this
.
$forceUpdate
();
}
},
...
...
@@ -1317,7 +1574,7 @@
},
addwelcomesjd
(
index
,
type
=
1
){
//周期添加欢迎语时间段
let
obj
=
{
S
r
artHours
:
''
,
EndHours
:
''
,
Id
:
0
,
Content
:
''
,
MediumIds
:
''
,
MediumModel
:[]}
let
obj
=
{
S
t
artHours
:
''
,
EndHours
:
''
,
Id
:
0
,
Content
:
''
,
MediumIds
:
''
,
MediumModel
:[]}
if
(
type
==
1
){
//周期
this
.
wwlist
[
index
].
childrenlist
.
push
(
obj
)
}
else
{
//特殊
...
...
src/pages/exam/paperCreate.vue
View file @
b92c788d
...
...
@@ -56,7 +56,7 @@
<q-radio
v-model=
"item.ChooseType"
:val=
"1"
label=
"从题库选题"
/>
<template
v-if=
"item.ChooseType==1"
>
<span
style=
"position:relative;top:2px;"
>
共
{{
item
.
QuestionTypeNum
}}
道 抽
<el-input
style=
"width:100px;"
size=
"small"
:disabled=
"item.QuestionTypeNum
<
=
0
"
v-model=
"item.ChooseNum"
@
keyup
.
native=
"checkInteger(item,'ChooseNum')"
maxlength=
"5"
></el-input>
<el-input
style=
"width:100px;"
size=
"small"
:disabled=
"item.QuestionTypeNum
<
=
0
"
@
input=
"getMaxInput(item)"
v-model=
"item.ChooseNum"
@
keyup
.
native=
"checkInteger(item,'ChooseNum')"
maxlength=
"5"
></el-input>
道
</span>
</
template
>
</span>
...
...
@@ -67,7 +67,7 @@
<div
style=
"margin:0 0 20px 40px;"
v-for=
"(subItem,subIndex) in item.ChooseList"
:key=
"subIndex"
>
{{
subItem
.
DifficultyTypeName
}}
(共
{{
subItem
.
DifficultyTypeCount
}}
道) 抽
<el-input
style=
"width:100px;"
size=
"small"
:disabled=
"subItem.DifficultyTypeCount
<
=
0
"
@
keyup
.
native=
"checkInteger(subItem,'ChooseNum')"
v-model=
"subItem.ChooseNum"
maxlength=
"5"
></el-input>
<el-input
style=
"width:100px;"
size=
"small"
:disabled=
"subItem.DifficultyTypeCount
<
=
0
"
@
input=
"getMaxMiniInput(subItem)"
@
keyup
.
native=
"checkInteger(subItem,'ChooseNum')"
v-model=
"subItem.ChooseNum"
maxlength=
"5"
></el-input>
道
</div>
</
template
>
...
...
@@ -84,7 +84,7 @@
<br
/>
<div
class=
"row"
>
<q-btn
color=
"accent"
size=
"sm"
@
click=
"setPaperTemplate"
class=
"q-mr-md"
label=
"保存"
/>
<q-btn
color=
"accent"
size=
"sm"
@
click=
"setPaperTemplate"
class=
"q-mr-md"
label=
"保存"
:loading=
"saveLoading"
/>
</div>
<questionbankForm
v-if=
"isShowQuestionBank"
@
close=
"closeExamForm"
@
success=
"getBankData"
>
</questionbankForm>
...
...
@@ -132,6 +132,7 @@
BankList
:
[],
MoreQuestionTypeId
:
""
,
//更多题型
questionTypeList
:
[],
//问题列表
saveLoading
:
false
}
},
created
()
{
...
...
@@ -142,6 +143,17 @@
},
methods
:
{
//设置最大值
getMaxInput
(
item
){
if
(
item
.
ChooseNum
>
item
.
QuestionTypeNum
){
item
.
ChooseNum
=
''
;
}
},
getMaxMiniInput
(
item
){
if
(
item
.
ChooseNum
>
item
.
DifficultyTypeCount
){
item
.
ChooseNum
=
''
;
}
},
//获取题型列表
getQuestionType
()
{
queryQuestionTypeList
({}).
then
(
res
=>
{
...
...
@@ -345,7 +357,7 @@
if
(
!
this
.
$refs
.
TemplateNum
.
hasError
)
{
let
TotalNum
=
0
;
for
(
let
i
=
0
;
i
<
this
.
templateMsg
.
TemplateData
.
length
;
i
++
){
if
(
this
.
templateMsg
.
TemplateData
[
i
].
ChooseType
==
1
&&
this
.
templateMsg
.
TemplateData
[
i
].
ChooseNum
==
''
){
if
(
this
.
templateMsg
.
TemplateData
[
i
].
ChooseType
==
1
&&
this
.
templateMsg
.
TemplateData
[
i
].
ChooseNum
==
=
''
){
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
"top"
,
...
...
@@ -363,7 +375,9 @@
})
return
}
this
.
saveLoading
=
true
;
savePaperTemplate
(
this
.
templateMsg
).
then
(
res
=>
{
this
.
saveLoading
=
false
;
if
(
res
.
Code
==
1
)
{
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
...
...
src/pages/exam/paperEdit.vue
View file @
b92c788d
...
...
@@ -235,7 +235,8 @@
</div>
<div
style=
"width:20%;text-align:right;"
>
<q-btn
color=
"accent"
size=
"sm"
class=
"q-mr-md"
label=
"预览"
/>
<q-btn
color=
"accent"
size=
"sm"
class=
"q-mr-md"
label=
"保存并返回"
@
click=
"SavePaper()"
/>
<q-btn
color=
"accent"
size=
"sm"
class=
"q-mr-md"
label=
"保存并返回"
:loading=
"savePaperLoading"
@
click=
"SavePaper()"
/>
</div>
</div>
<div
class=
"Exam-main"
>
...
...
@@ -250,7 +251,7 @@
<div
class=
"List-bt"
>
<strong
class=
"f1"
>
<template
v-if=
"!gItem.isShowEdit"
>
{{
gIndex
+
1
}}
{{
gItem
.
GroupName
}}
(共
{{
gItem
.
DetailsList
.
length
}}
题,
{{
gItem
.
GScore
}}
分)
</
template
>
(共
{{
gItem
.
DetailsList
?
gItem
.
DetailsList
.
length
:
0
}}
题,
{{
gItem
.
GScore
}}
分)
</
template
>
<
template
v-else
>
<input
style=
"width:160px;margin-right:10px;"
v-model=
"gItem.GroupName"
/>
<input
style=
"width:40px;"
filled
v-model=
"gItem.GScore"
@
input=
"changeGroupScore(gItem)"
/>
...
...
@@ -384,7 +385,7 @@
</div>
<div
class=
"col-12"
>
<span
class=
"difficulty_Degree"
>
知识点:
</span>
<a
class=
"addKnowledge"
@
click=
"isShowPoint=true"
>
<a
class=
"addKnowledge"
@
click=
"isShowPoint=true"
style=
"cursor:pointer;"
>
<i
class=
"iconfont icon-add"
style=
"position:relative;top:1px;"
></i>
选择知识点
</a>
<span
class=
"knowledge_List"
v-for=
"(x, i) in choosePointArray"
:key=
"i"
>
...
...
@@ -395,6 +396,10 @@
</div>
</div>
<questionForm
v-if=
"isShowQuestion"
@
close=
"closeQuestForm"
@
success=
"getQuestionList"
></questionForm>
<!--选择知识点-->
<questionpoint
v-if=
"isShowPoint"
CourseId=
"0"
:openDialog=
"isShowPoint"
@
closed=
"closeQuestionPoint"
:multiple=
"true"
@
selected=
"getPointList"
>
</questionpoint>
</div>
</div>
</template>
...
...
@@ -453,20 +458,26 @@
watch
:
{
'ChooseItem.Title'
:
{
handler
(
newValue
)
{
this
.
ChooseItem
.
ShowTitle
=
this
.
getRegItem
(
newValue
);
if
(
this
.
ChooseItem
)
{
this
.
ChooseItem
.
ShowTitle
=
this
.
getRegItem
(
newValue
);
}
},
deep
:
true
},
'ChooseItem.Score'
:
{
handler
(
newValue
)
{
this
.
ChooseItem
.
Score
=
newValue
;
this
.
calcPaper
();
if
(
this
.
ChooseItem
)
{
this
.
ChooseItem
.
Score
=
newValue
;
this
.
calcPaper
();
}
},
deep
:
true
},
'ChooseItem.QuestionContentObj'
:
{
handler
(
newValue
)
{
this
.
ChooseItem
.
QuestionContentObj
=
newValue
;
if
(
this
.
ChooseItem
)
{
this
.
ChooseItem
.
QuestionContentObj
=
newValue
;
}
},
deep
:
true
}
...
...
@@ -493,7 +504,7 @@
GroupList
:
[],
//试卷答题分类
},
//点击问题对象
ChooseItem
:
{}
,
ChooseItem
:
null
,
questionDifficultyTypeList
:
[],
//难易程度列表
questionLevalTypeList
:
[],
questionCategoryList
:
[],
//分类
...
...
@@ -506,7 +517,9 @@
examNum
:
0
,
//题量
examScore
:
0
,
//总分
ComOneIndex
:
-
1
,
ComCheckIndex
:
-
1
ComCheckIndex
:
-
1
,
savePaperLoading
:
false
,
isShowPoint
:
false
,
//选择知识点
}
},
created
()
{
...
...
@@ -524,6 +537,29 @@
}
},
methods
:
{
//关闭知识点弹窗
closeQuestionPoint
()
{
this
.
isShowPoint
=
false
;
},
//获取知识点列表
getPointList
(
obj
)
{
if
(
obj
&&
obj
.
length
>
0
)
{
if
(
this
.
choosePointArray
&&
this
.
choosePointArray
.
length
>
0
)
{
this
.
choosePointArray
=
this
.
choosePointArray
.
concat
(
obj
);
}
else
{
this
.
choosePointArray
=
obj
;
}
}
var
pointIds
=
""
;
if
(
this
.
choosePointArray
&&
this
.
choosePointArray
.
length
>
0
)
{
this
.
choosePointArray
.
forEach
(
item
=>
{
pointIds
+=
','
+
item
.
PointId
});
}
if
(
pointIds
!=
''
)
{
this
.
ChooseItem
.
Knowledge
=
pointIds
.
substring
(
1
);
}
},
//大类改变分数
changeGroupScore
(
gItem
)
{
var
subScore
=
0
;
...
...
@@ -624,7 +660,8 @@
}
else
{
let
msg
=
{
GId
:
item
.
GId
,
QuestionTypeId
:
item
.
QuestionTypeId
QuestionTypeId
:
item
.
QuestionTypeId
,
PaperId
:
this
.
msg
.
PaperId
,
}
DeletePaperGroup
(
msg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
...
...
@@ -820,7 +857,7 @@
},
//点击问题
ClickItem
(
questionItem
,
index
,
index2
)
{
this
.
ChooseItem
=
{}
;
this
.
ChooseItem
=
null
;
this
.
ComOneIndex
=
index
;
this
.
ComCheckIndex
=
index2
;
this
.
ChooseItem
=
questionItem
;
...
...
@@ -832,6 +869,11 @@
this
.
$refs
.
UE_AnswerParse
.
reloadNewValue
();
}
this
.
ChooseItem
.
AnswerParse
=
questionItem
.
AnswerParse
;
if
(
questionItem
.
QuestionPointList
)
{
this
.
choosePointArray
=
questionItem
.
QuestionPointList
;
}
else
{
this
.
choosePointArray
=
[]
}
this
.
$forceUpdate
();
},
//正则匹配替换
...
...
@@ -842,7 +884,9 @@
//保存题目
SavePaper
()
{
if
(
this
.
validateType
())
{
this
.
savePaperLoading
=
true
;
savePaperInfo
(
this
.
DataObj
).
then
(
res
=>
{
this
.
savePaperLoading
=
false
;
if
(
res
.
Code
==
1
)
{
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
...
...
@@ -851,11 +895,12 @@
message
:
'操作成功!'
,
position
:
'top'
})
// this.$router.push({
// path: '/exam/examPaper',
// query: {}
// });
this
.
GetPaperInfo
();
this
.
$router
.
push
({
path
:
'/exam/examPaper'
,
query
:
{}
});
// this.ChooseItem = null;
// this.GetPaperInfo();
}
else
{
this
.
$q
.
notify
({
type
:
'negative'
,
...
...
@@ -869,186 +914,334 @@
//验证
validateType
()
{
var
result
=
true
;
for
(
let
k
=
0
;
k
<
this
.
DataObj
.
GroupList
.
length
;
k
++
)
{
//连线题
if
(
this
.
DataObj
.
GroupList
[
k
].
QuestionTypeKey
==
'matching'
)
{
for
(
let
j
=
0
;
j
<
this
.
DataObj
.
GroupList
[
k
].
DetailsList
.
length
;
j
++
)
{
if
(
this
.
DataObj
.
GroupList
[
k
].
DetailsList
[
j
].
Title
==
''
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
"top"
,
message
:
`
${
this
.
DataObj
.
GroupList
[
k
].
GroupName
}
第
${
j
+
1
}
题标题为空!`
})
result
=
false
;
return
;
if
(
this
.
DataObj
&&
this
.
DataObj
.
GroupList
&&
this
.
DataObj
.
GroupList
.
length
>
0
)
{
for
(
let
k
=
0
;
k
<
this
.
DataObj
.
GroupList
.
length
;
k
++
)
{
var
gIndex
=
k
;
var
newKey
=
this
.
DataObj
.
GroupList
[
k
].
QuestionTypeKey
;
var
gName
=
this
.
DataObj
.
GroupList
[
k
].
GroupName
;
var
detailsList
=
this
.
DataObj
.
GroupList
[
k
].
DetailsList
;
var
retMessage
=
""
;
switch
(
newKey
)
{
//单选题
case
"single"
:
retMessage
=
this
.
chooseValidate
(
gName
,
detailsList
);
break
;
//多选题
case
'multiple'
:
retMessage
=
this
.
chooseValidate
(
gName
,
detailsList
);
break
;
//填空题
case
"fill-in"
:
retMessage
=
this
.
fillInValidate
(
gName
,
detailsList
);
break
;
//判断题
case
"judge"
:
retMessage
=
this
.
judgeValidate
(
gName
,
detailsList
);
break
;
//简答题
case
"short-answer"
:
retMessage
=
this
.
shortanswerValidate
(
gName
,
detailsList
);
break
;
//名词解释
case
"noun-explanation"
:
retMessage
=
this
.
shortanswerValidate
(
gName
,
detailsList
);
break
;
//论述题
case
"essay-question"
:
retMessage
=
this
.
shortanswerValidate
(
gName
,
detailsList
);
break
;
//计算题
case
"calculation"
:
retMessage
=
this
.
shortanswerValidate
(
gName
,
detailsList
);
break
;
//分录题
case
"entry-problem"
:
retMessage
=
this
.
fillInValidate
(
gName
,
detailsList
);
break
;
//资料题
case
"data-question"
:
retMessage
=
this
.
fillInValidate
(
gName
,
detailsList
);
break
;
//连线题
case
"matching"
:
retMessage
=
this
.
matchingValidate
(
gName
,
detailsList
);
break
;
//排序题
case
"sorting-problem"
:
retMessage
=
this
.
sortingproblemValidate
(
gName
,
detailsList
);
break
;
//完型填空
case
"cloze"
:
retMessage
=
this
.
clozeValidate
(
gName
,
detailsList
);
break
;
//阅读理解
case
"reading-comprehensio"
:
retMessage
=
this
.
readingcomprehensioValidate
(
gName
,
detailsList
);
break
;
//口语题
case
"spoken"
:
retMessage
=
this
.
shortanswerValidate
(
gName
,
detailsList
);
break
;
//听力题
case
"listening"
:
retMessage
=
this
.
readingcomprehensioValidate
(
gName
,
detailsList
);
break
;
//公用选项题
case
"sharing-choose"
:
retMessage
=
this
.
sharingchooseValidate
(
gName
,
detailsList
);
break
;
//其它题
case
"other"
:
retMessage
=
this
.
shortanswerValidate
(
gName
,
detailsList
);
break
;
//单选题-数字
case
"single-number"
:
retMessage
=
this
.
chooseValidate
(
gName
,
detailsList
);
break
;
}
if
(
retMessage
!=
''
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
"top"
,
message
:
retMessage
});
result
=
false
;
return
;
}
}
}
return
result
;
},
//【单选题、多选题、数字选择题】验证
chooseValidate
(
gName
,
detailsList
)
{
var
message
=
""
;
//单选题 多选题
if
(
detailsList
&&
detailsList
.
length
>
0
)
{
for
(
let
i
=
0
;
i
<
detailsList
.
length
;
i
++
)
{
var
Num
=
0
;
if
(
detailsList
[
i
].
Title
==
''
)
{
message
=
`请填写【
${
gName
}
】第
${
i
+
1
}
题 问题内容!`
;
return
message
;
}
for
(
let
j
=
0
;
j
<
detailsList
[
i
].
QuestionContentObj
.
length
;
j
++
)
{
if
(
detailsList
[
i
].
QuestionContentObj
[
j
].
Content
==
''
)
{
message
=
`请填写【
${
gName
}
】第
${
i
+
1
}
题,选项
${
detailsList
[
i
].
QuestionContentObj
[
j
].
Name
}
内容!`
;
return
message
;
}
if
(
this
.
DataObj
.
GroupList
[
k
].
DetailsList
[
j
].
QuestionContentObj
.
length
>
0
)
{
for
(
let
p
=
0
;
p
<
this
.
DataObj
.
GroupList
[
k
].
DetailsList
[
j
].
QuestionContentObj
[
0
].
length
;
p
++
)
{
if
(
this
.
DataObj
.
GroupList
[
k
].
DetailsList
[
j
].
QuestionContentObj
[
0
][
p
].
Content
==
''
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
"top"
,
message
:
`
${
this
.
DataObj
.
GroupList
[
k
].
GroupName
}
第
${
j
+
1
}
题第一组第
${
p
+
1
}
行数据内容为空!`
})
result
=
false
;
return
;
}
}
if
(
detailsList
[
i
].
QuestionContentObj
[
j
].
IsAnswer
)
{
Num
++
}
if
(
this
.
DataObj
.
GroupList
[
k
].
DetailsList
[
j
].
QuestionContentObj
.
length
>
0
)
{
for
(
let
p
=
0
;
p
<
this
.
DataObj
.
GroupList
[
k
].
DetailsList
[
j
].
QuestionContentObj
[
1
].
length
;
p
++
)
{
if
(
this
.
DataObj
.
GroupList
[
k
].
DetailsList
[
j
].
QuestionContentObj
[
1
][
p
].
Content
==
''
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
"top"
,
message
:
`
${
this
.
DataObj
.
GroupList
[
k
].
GroupName
}
第
${
j
+
1
}
题第二组第
${
p
+
1
}
行数据内容为空!`
})
result
=
false
;
return
;
}
}
}
if
(
Num
==
0
)
{
message
=
`请设置【
${
gName
}
】第
${
i
+
1
}
题 正确答案!`
;
return
message
;
}
}
}
return
message
;
},
//【填空题、分录题、资料题】验证
fillInValidate
(
gName
,
detailsList
)
{
var
message
=
""
;
for
(
let
i
=
0
;
i
<
detailsList
.
length
;
i
++
)
{
if
(
detailsList
[
i
].
Title
==
''
)
{
message
=
`请填写【
${
gName
}
】第
${
i
+
1
}
题 问题内容!`
;
return
message
;
}
for
(
let
j
=
0
;
j
<
detailsList
[
i
].
QuestionContentObj
.
length
;
j
++
)
{
if
(
detailsList
[
i
].
QuestionContentObj
[
j
].
Content
==
''
)
{
message
=
`请填写【
${
gName
}
】第
${
i
+
1
}
题,第
${
j
+
1
}
空 答案!`
;
return
message
;
}
}
}
return
message
;
},
//【判断题】验证
judgeValidate
(
gName
,
detailsList
)
{
var
message
=
""
;
for
(
let
i
=
0
;
i
<
detailsList
.
length
;
i
++
)
{
if
(
detailsList
[
i
].
Title
==
''
)
{
message
=
`请填写【
${
gName
}
】第
${
i
+
1
}
题 问题内容!`
;
return
message
;
}
}
return
message
;
},
//【简答题、名词解释、论述题、计算题、其它题】验证
shortanswerValidate
(
gName
,
detailsList
)
{
var
message
=
""
;
for
(
let
i
=
0
;
i
<
detailsList
.
length
;
i
++
)
{
if
(
detailsList
[
i
].
Title
==
''
)
{
message
=
`请填写【
${
gName
}
】第
${
i
+
1
}
题 问题内容!`
;
return
message
;
}
if
(
detailsList
[
i
].
Answer
==
''
)
{
message
=
`请填写【
${
gName
}
】第
${
i
+
1
}
题 问题答案!`
;
return
message
;
}
}
return
message
;
},
//【连线题】验证
matchingValidate
(
gName
,
detailsList
)
{
var
message
=
""
;
for
(
let
i
=
0
;
i
<
detailsList
.
length
;
i
++
)
{
if
(
detailsList
[
i
].
Title
==
''
)
{
message
=
`请填写【
${
gName
}
】第
${
i
+
1
}
题 问题内容!`
;
return
message
;
}
if
(
detailsList
[
i
].
QuestionContentObj
.
length
>
0
)
{
for
(
let
p
=
0
;
p
<
detailsList
[
i
].
QuestionContentObj
[
0
].
length
;
p
++
)
{
if
(
detailsList
[
i
].
QuestionContentObj
[
0
][
p
].
Content
==
''
)
{
message
=
`请填写【
${
gName
}
】第
${
i
+
1
}
题 第一组 选项
${
detailsList
[
i
].
QuestionContentObj
[
0
][
p
].
Name
}
内容!`
return
message
;
}
}
}
//单选题 多选题
if
(
this
.
DataObj
.
GroupList
[
k
].
QuestionTypeKey
==
'single'
||
this
.
DataObj
.
GroupList
[
k
].
QuestionTypeKey
==
'multiple'
)
{
for
(
let
i
=
0
;
i
<
this
.
DataObj
.
GroupList
[
k
].
DetailsList
.
length
;
i
++
)
{
var
Num
=
0
;
if
(
this
.
DataObj
.
GroupList
[
k
].
DetailsList
[
i
].
Title
==
''
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
"top"
,
message
:
`
${
this
.
DataObj
.
GroupList
[
k
].
GroupName
}
第
${
i
+
1
}
题标题为空!`
})
result
=
false
;
return
;
if
(
detailsList
[
i
].
QuestionContentObj
.
length
>
0
)
{
for
(
let
p
=
0
;
p
<
detailsList
[
i
].
QuestionContentObj
[
1
].
length
;
p
++
)
{
if
(
detailsList
[
i
].
QuestionContentObj
[
1
][
p
].
Content
==
''
)
{
message
=
`请填写【
${
gName
}
】第
${
i
+
1
}
题 第二组 选项
${
detailsList
[
i
].
QuestionContentObj
[
1
][
p
].
Name
}
内容!`
return
message
;
}
}
}
}
return
message
;
},
//【排序题】验证
sortingproblemValidate
(
gName
,
detailsList
)
{
var
message
=
""
;
if
(
detailsList
&&
detailsList
.
length
>
0
)
{
for
(
let
i
=
0
;
i
<
detailsList
.
length
;
i
++
)
{
if
(
detailsList
[
i
].
Title
==
''
)
{
message
=
`请填写【
${
gName
}
】第
${
i
+
1
}
题 问题内容!`
;
return
message
;
}
for
(
let
j
=
0
;
j
<
detailsList
[
i
].
QuestionContentObj
[
0
].
length
;
j
++
)
{
if
(
detailsList
[
i
].
QuestionContentObj
[
0
][
j
].
Content
==
''
)
{
message
=
`请填写【
${
gName
}
】第
${
i
+
1
}
题 选项
${
detailsList
[
i
].
QuestionContentObj
[
0
][
j
].
Name
}
内容!`
return
message
;
}
for
(
let
j
=
0
;
j
<
this
.
DataObj
.
GroupList
[
k
].
DetailsList
[
i
].
QuestionContentObj
.
length
;
j
++
)
{
if
(
this
.
DataObj
.
GroupList
[
k
].
DetailsList
[
i
].
QuestionContentObj
[
j
].
Content
==
''
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
"top"
,
message
:
`请填写
${
this
.
DataObj
.
GroupList
[
k
].
GroupName
}
第
${
i
+
1
}
题选项!`
})
result
=
false
;
return
;
}
}
}
return
message
;
},
//【完型填空】验证
clozeValidate
(
gName
,
detailsList
)
{
var
message
=
""
;
if
(
detailsList
&&
detailsList
.
length
>
0
)
{
for
(
let
i
=
0
;
i
<
detailsList
.
length
;
i
++
)
{
if
(
detailsList
[
i
].
Title
==
''
)
{
message
=
`请填写【
${
gName
}
】第
${
i
+
1
}
题 问题内容!`
;
return
message
;
}
for
(
let
j
=
0
;
j
<
detailsList
[
i
].
QuestionContentObj
.
length
;
j
++
)
{
var
Num
=
0
;
for
(
var
k
=
0
;
k
<
detailsList
[
i
].
QuestionContentObj
[
j
].
length
;
k
++
)
{
if
(
detailsList
[
i
].
QuestionContentObj
[
j
][
k
].
Content
==
''
)
{
message
=
`请填写【
${
gName
}
】第
${
i
+
1
}
题,第
${
j
+
1
}
小题 选项
${
detailsList
[
i
].
QuestionContentObj
[
j
][
k
].
Name
}
内容!`
;
return
message
;
}
if
(
this
.
DataObj
.
GroupList
[
k
].
DetailsList
[
i
].
QuestionContentObj
[
j
].
IsAnswer
)
{
if
(
detailsList
[
i
].
QuestionContentObj
[
j
][
k
].
IsAnswer
)
{
Num
++
}
}
if
(
Num
==
0
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
"top"
,
message
:
`请设置
${
this
.
DataObj
.
GroupList
[
k
].
GroupName
}
第
${
i
+
1
}
题答案选项`
})
result
=
false
;
return
;
message
=
`请设置【
${
gName
}
】第
${
i
+
1
}
题,第
${
j
+
1
}
小题 正确答案!`
;
return
message
;
}
}
}
//填空题
if
(
this
.
DataObj
.
GroupList
[
k
].
QuestionTypeKey
==
'fill-in'
)
{
for
(
let
i
=
0
;
i
<
this
.
DataObj
.
GroupList
[
k
].
DetailsList
.
length
;
i
++
)
{
if
(
this
.
DataObj
.
GroupList
[
k
].
DetailsList
[
i
].
Title
==
''
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
"top"
,
message
:
`
${
this
.
DataObj
.
GroupList
[
k
].
GroupName
}
第
${
i
+
1
}
题标题为空!`
})
result
=
false
;
return
;
}
for
(
let
j
=
0
;
j
<
this
.
DataObj
.
GroupList
[
k
].
DetailsList
[
i
].
QuestionContentObj
.
length
;
j
++
)
{
if
(
this
.
DataObj
.
GroupList
[
k
].
DetailsList
[
i
].
QuestionContentObj
[
j
].
Content
==
''
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
"top"
,
message
:
`请填写
${
this
.
DataObj
.
GroupList
[
k
].
GroupName
}
第
${
i
+
1
}
空!`
})
result
=
false
;
return
;
}
}
}
return
message
;
},
//【阅读理解、听力题】验证
readingcomprehensioValidate
(
gName
,
detailsList
)
{
var
message
=
""
;
if
(
detailsList
&&
detailsList
.
length
>
0
)
{
for
(
let
i
=
0
;
i
<
detailsList
.
length
;
i
++
)
{
if
(
detailsList
[
i
].
Title
==
''
)
{
message
=
`请填写【
${
gName
}
】第
${
i
+
1
}
题 问题内容!`
;
return
message
;
}
}
//判断题
if
(
this
.
DataObj
.
GroupList
[
k
].
QuestionTypeKey
==
'judge'
||
this
.
DataObj
.
GroupList
[
k
].
QuestionTypeKey
==
'reading-comprehensio'
||
this
.
DataObj
.
GroupList
[
k
].
QuestionTypeKey
==
'spoken'
||
this
.
DataObj
.
GroupList
[
k
].
QuestionTypeKey
==
'other'
||
this
.
DataObj
.
GroupList
[
k
].
QuestionTypeKey
==
'noun-explanation'
)
{
for
(
let
i
=
0
;
i
<
this
.
DataObj
.
GroupList
[
k
].
DetailsList
.
length
;
i
++
)
{
if
(
this
.
DataObj
.
GroupList
[
k
].
DetailsList
[
i
].
Title
==
''
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
"top"
,
message
:
`
${
this
.
DataObj
.
GroupList
[
k
].
GroupName
}
第
${
i
+
1
}
题标题为空!`
})
result
=
false
;
return
;
for
(
let
j
=
0
;
j
<
detailsList
[
i
].
QuestionContentObj
.
length
;
j
++
)
{
var
subQuestion
=
detailsList
[
i
].
QuestionContentObj
[
j
];
if
(
subQuestion
)
{
if
(
subQuestion
.
SubTitle
==
''
)
{
message
=
`请填写【
${
gName
}
】第
${
i
+
1
}
题,第
${
j
+
1
}
小题 问题内容!`
;
return
message
;
}
//单选题、多选题
if
(
subQuestion
.
QuestionKey
==
'single'
||
subQuestion
.
QuestionKey
==
"multiple"
)
{
var
singleNum
=
0
;
for
(
var
k
=
0
;
k
<
subQuestion
.
SubAnwser
.
length
;
k
++
)
{
if
(
subQuestion
.
SubAnwser
[
k
].
Content
==
''
)
{
message
=
`请填写【
${
gName
}
】第
${
i
+
1
}
题,第
${
j
+
1
}
小题 选项
${
subQuestion
.
SubAnwser
[
k
].
Name
}
内容!`
;
return
message
;
}
if
(
subQuestion
.
SubAnwser
[
k
].
IsAnswer
)
{
singleNum
++
}
}
if
(
singleNum
==
0
)
{
message
=
`请设置【
${
gName
}
】第
${
i
+
1
}
题,第
${
j
+
1
}
小题 正确答案!`
;
return
message
;
}
}
//填空题
if
(
subQuestion
.
QuestionKey
==
"fill-in"
)
{
for
(
var
k
=
0
;
k
<
subQuestion
.
SubAnwser
.
length
;
k
++
)
{
if
(
subQuestion
.
SubAnwser
[
k
].
Content
==
''
)
{
message
=
`请填写【
${
gName
}
】第
${
i
+
1
}
题,第
${
j
+
1
}
小题 第
${
k
+
1
}
空答案!`
;
return
message
;
}
}
}
//简答题
if
(
subQuestion
.
QuestionKey
==
"short-answer"
)
{
for
(
var
k
=
0
;
k
<
subQuestion
.
SubAnwser
.
length
;
k
++
)
{
if
(
subQuestion
.
SubAnwser
[
k
].
Content
==
''
)
{
message
=
`请填写【
${
gName
}
】第
${
i
+
1
}
题,第
${
j
+
1
}
小题答案!`
;
return
message
;
}
}
}
}
}
}
//简答题 论述题
if
(
this
.
DataObj
.
GroupList
[
k
].
QuestionTypeKey
==
'short-answer'
||
this
.
DataObj
.
GroupList
[
k
].
QuestionTypeKey
==
'essay-question'
||
this
.
DataObj
.
GroupList
[
k
].
QuestionTypeKey
==
'calculation'
||
this
.
DataObj
.
GroupList
[
k
].
QuestionTypeKey
==
'entry-problem'
||
this
.
DataObj
.
GroupList
[
k
].
QuestionTypeKey
==
'data-question'
)
{
for
(
let
i
=
0
;
i
<
this
.
DataObj
.
GroupList
[
k
].
DetailsList
.
length
;
i
++
)
{
if
(
this
.
DataObj
.
GroupList
[
k
].
DetailsList
[
i
].
Title
==
''
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
"top"
,
message
:
`
${
this
.
DataObj
.
GroupList
[
k
].
GroupName
}
第
${
i
+
1
}
题标题为空!`
})
result
=
false
;
return
;
}
if
(
this
.
DataObj
.
GroupList
[
k
].
DetailsList
[
i
].
Answer
==
''
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
"top"
,
message
:
`请输入
${
this
.
DataObj
.
GroupList
[
k
].
GroupName
}
第
${
i
+
1
}
题答案`
})
result
=
false
;
return
;
}
return
message
;
},
//【公用选项题】验证
sharingchooseValidate
(
gName
,
detailsList
)
{
var
message
=
""
;
if
(
detailsList
&&
detailsList
.
length
>
0
)
{
for
(
var
i
=
0
;
i
<
detailsList
.
length
;
i
++
)
{
for
(
var
j
=
0
;
j
<
detailsList
[
i
].
QuestionContentObj
[
0
].
length
;
j
++
)
{
if
(
detailsList
[
i
].
QuestionContentObj
[
0
][
j
].
Content
==
''
)
{
message
=
`请填写【
${
gName
}
】第
${
i
+
1
}
题 第一组 选项
${
detailsList
[
i
].
QuestionContentObj
[
0
][
j
].
Name
}
内容!`
;
return
message
;
}
}
}
//排序题
if
(
this
.
DataObj
.
GroupList
[
k
].
QuestionTypeKey
==
'sorting-problem'
)
{
for
(
let
i
=
0
;
i
<
this
.
DataObj
.
GroupList
[
k
].
DetailsList
.
length
;
i
++
)
{
if
(
this
.
DataObj
.
GroupList
[
k
].
DetailsList
[
i
].
Title
==
''
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
"top"
,
message
:
`
${
this
.
DataObj
.
GroupList
[
k
].
GroupName
}
第
${
i
+
1
}
题标题为空!`
})
result
=
false
;
return
;
for
(
var
j
=
0
;
j
<
detailsList
[
i
].
QuestionContentObj
[
1
].
length
;
j
++
)
{
if
(
detailsList
[
i
].
QuestionContentObj
[
1
][
j
].
Content
==
''
)
{
message
=
`请填写【
${
gName
}
】第
${
i
+
1
}
题 第二组 题干
${
j
+
1
}
内容!`
;
return
message
;
}
for
(
let
j
=
0
;
j
<
this
.
DataObj
.
GroupList
[
k
].
DetailsList
[
i
].
QuestionContentObj
[
0
].
length
;
j
++
)
{
if
(
this
.
DataObj
.
GroupList
[
k
].
DetailsList
[
i
].
QuestionContentObj
[
0
][
j
].
Content
==
''
)
{
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
"top"
,
message
:
`请填写
${
this
.
DataObj
.
GroupList
[
k
].
GroupName
}
第
${
i
+
1
}
题选项!`
})
result
=
false
;
return
;
}
if
(
detailsList
[
i
].
QuestionContentObj
[
1
][
j
].
Name
==
''
)
{
message
=
`请选择【
${
gName
}
】第
${
i
+
1
}
题 第二组 题干
${
j
+
1
}
答案!`
;
return
message
;
}
}
}
}
return
result
;
return
message
;
},
//关闭弹窗
closeQuestForm
()
{
this
.
isShowQuestion
=
false
;
},
...
...
src/pages/exam/paperInfo.vue
View file @
b92c788d
...
...
@@ -445,7 +445,7 @@
this
.
examNum
+=
x
.
DetailsList
.
length
;
x
.
DetailsList
.
forEach
(
y
=>
{
if
(
y
.
Score
)
{
this
.
examScore
+=
parseInt
(
y
.
Score
);
this
.
examScore
+=
Number
(
y
.
Score
);
}
})
}
...
...
src/pages/exam/paperPublish.vue
View file @
b92c788d
...
...
@@ -231,7 +231,7 @@
<div
class=
"row"
>
<q-btn
color=
"accent"
@
click=
"setPublishExam"
class=
"q-mr-md"
label=
"发布考试"
/>
</div>
<classstutreeForm
v-if=
"isShowClassStu"
@
close=
"closeClassStuForm"
@
success=
"getClassStuList"
>
<classstutreeForm
v-if=
"isShowClassStu"
:sendStudent=
"sendStudent"
@
close=
"closeClassStuForm"
@
success=
"getClassStuList"
>
</classstutreeForm>
</div>
</template>
...
...
@@ -282,6 +282,7 @@
},
isShowClassStu
:
false
,
//是否显示学员弹窗
sendStudent
:[],
//传送已选学生
}
},
created
()
{
...
...
@@ -295,6 +296,23 @@
},
mounted
()
{
},
watch
:{
"postMsg.StudentList"
:{
handler
(
val
){
this
.
sendStudent
=
[];
val
.
forEach
(
x
=>
{
let
obj
=
{
ClassId
:
x
.
ClassId
,
CourseId
:
x
.
CourseId
,
GuestId
:
x
.
GuestId
,
Name
:
x
.
GuestName
,
OrderId
:
x
.
OrderId
}
this
.
sendStudent
.
push
(
obj
);
})
}
}
},
methods
:
{
//删除发放对象
...
...
@@ -305,7 +323,6 @@
queryExamPublish
({
Id
:
this
.
postMsg
.
Id
}).
then
(
res
=>
{
console
.
log
(
"res"
,
res
);
if
(
res
.
Code
==
1
)
{
var
tempData
=
res
.
Data
;
if
(
tempData
)
{
...
...
@@ -347,6 +364,7 @@
},
//获取选中的需要列表
getClassStuList
(
array
)
{
this
.
postMsg
.
StudentList
=
[];
if
(
array
&&
array
.
length
>
0
)
{
array
.
forEach
(
item
=>
{
this
.
postMsg
.
StudentList
.
push
({
...
...
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