Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
center-qa
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
center-qa
Commits
e4ec0804
提交
e4ec0804
authored
2月 25, 2022
作者:
lihuihui
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
updata
上级
afbb2d97
隐藏空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
316 行增加
和
65 行删除
+316
-65
Index.vue
src/components/tinymce/Index.vue
+2
-2
api.js
src/modules/question/api.js
+7
-1
Detail.vue
src/modules/question/components/Detail.vue
+135
-15
QTypeCheckbox.vue
src/modules/question/components/QTypeCheckbox.vue
+29
-13
QTypeJudgment.vue
src/modules/question/components/QTypeJudgment.vue
+23
-3
QTypeRadio.vue
src/modules/question/components/QTypeRadio.vue
+20
-10
Create.vue
src/modules/question/views/Create.vue
+1
-9
List.vue
src/modules/question/views/List.vue
+99
-12
没有找到文件。
src/components/tinymce/Index.vue
浏览文件 @
e4ec0804
...
@@ -12,8 +12,8 @@ export default {
...
@@ -12,8 +12,8 @@ export default {
data
()
{
data
()
{
return
{
return
{
init
:
{
init
:
{
min_height
:
4
00
,
min_height
:
2
00
,
max_height
:
4
00
,
max_height
:
2
00
,
menubar
:
false
,
menubar
:
false
,
statusbar
:
false
,
statusbar
:
false
,
plugins
:
'table autoresize charmap fullscreen hr lists link code preview quickbars'
,
plugins
:
'table autoresize charmap fullscreen hr lists link code preview quickbars'
,
...
...
src/modules/question/api.js
浏览文件 @
e4ec0804
...
@@ -25,11 +25,17 @@ export function updateQuestionCategory(id, data) {
...
@@ -25,11 +25,17 @@ export function updateQuestionCategory(id, data) {
return
httpRequest
.
put
(
`/api/qbs/admin/v1/question-category/
${
id
}
`
,
data
)
return
httpRequest
.
put
(
`/api/qbs/admin/v1/question-category/
${
id
}
`
,
data
)
}
}
/**
/**
*
获取应用列表
*
知识点标签搜索
*/
*/
export
function
searchTag
(
params
)
{
export
function
searchTag
(
params
)
{
return
httpRequest
.
get
(
'/api/qbs/admin/v1/knowledge-point/search/x1'
,
{
params
})
return
httpRequest
.
get
(
'/api/qbs/admin/v1/knowledge-point/search/x1'
,
{
params
})
}
}
/**
* 新建试题
*/
export
function
addQuestion
(
data
)
{
return
httpRequest
.
post
(
'/api/qbs/admin/v1/question'
,
data
)
}
/**
/**
* 获取应用详情
* 获取应用详情
...
...
src/modules/question/components/Detail.vue
浏览文件 @
e4ec0804
<
template
>
<
template
>
<div>
<div>
<el-form
:model=
"ruleForm"
:rules=
"rules"
ref=
"ruleForm"
label-width=
"100px"
class=
"demo-ruleForm"
>
<el-form
:model=
"ruleForm"
:rules=
"rules"
ref=
"ruleForm"
label-width=
"100px"
class=
"demo-ruleForm"
>
<el-form-item
label=
"题库范围"
prop=
"permission"
>
<el-radio
v-model=
"ruleForm.permission"
label=
"1"
>
我的题库
</el-radio>
<el-radio
v-model=
"ruleForm.permission"
label=
"2"
>
公共题库
</el-radio>
</el-form-item>
<el-form-item
label=
"题目类型"
prop=
"question_type"
>
<el-form-item
label=
"题目类型"
prop=
"question_type"
>
<!--
<el-input
v-model=
"ruleForm.name"
></el-input>
-->
<!--
<el-input
v-model=
"ruleForm.name"
></el-input>
-->
<el-select
v-model=
"ruleForm.question_type"
placeholder=
"请选择活题目类型"
@
change=
"changeQuestionType"
>
<el-select
v-model=
"ruleForm.question_type"
placeholder=
"请选择活题目类型"
@
change=
"changeQuestionType"
>
...
@@ -20,34 +24,61 @@
...
@@ -20,34 +24,61 @@
<el-form-item
label=
"题干内容"
prop=
"question_content"
required
>
<el-form-item
label=
"题干内容"
prop=
"question_content"
required
>
<v-editor
v-model=
"ruleForm.question_content"
></v-editor>
<v-editor
v-model=
"ruleForm.question_content"
></v-editor>
</el-form-item>
</el-form-item>
<el-form-item
label=
"选项"
prop=
"
delivery"
required
>
<el-form-item
label=
"选项"
prop=
"
question_options"
v-if=
"ruleForm.question_type != 3"
>
<!-- 单选题 -->
<!-- 单选题 -->
<radio
v-if=
"ruleForm.question_type == 1"
></radio>
<radio
ref=
"options"
v-if=
"ruleForm.question_type == 1"
></radio>
<!-- 多选题 -->
<!-- 多选题 -->
<checkbox
v-if=
"ruleForm.question_type == 2"
></checkbox>
<checkbox
ref=
"options"
v-if=
"ruleForm.question_type == 2"
></checkbox>
<!-- 判断题 -->
<!-- 判断题 -->
<judgment
v-if=
"ruleForm.question_type == 6"
></judgment>
<judgment
ref=
"options"
v-if=
"ruleForm.question_type == 6"
></judgment>
</el-form-item>
</el-form-item>
<el-form-item
label=
"标签"
prop=
"type"
>
<el-form-item
label=
"标签"
prop=
"type"
>
<el-input
v-model=
"ruleForm.
type
"
></el-input>
<el-input
v-model=
"ruleForm.
question_tag
"
></el-input>
</el-form-item>
</el-form-item>
<el-form-item
label=
"题目解析"
prop=
"question_analysis"
>
<el-form-item
label=
"题目解析"
prop=
"question_analysis"
>
<v-editor
v-model=
"ruleForm.question_analysis"
></v-editor>
<v-editor
v-model=
"ruleForm.question_analysis"
></v-editor>
</el-form-item>
</el-form-item>
<el-form-item
label=
"试题分类"
prop=
"question_category"
>
<el-form-item
label=
"试题分类"
prop=
"question_category"
>
<el-select
v-model=
"ruleForm.question_category"
placeholder=
"请选择试题分类"
>
<div
class=
"filter-input"
>
<el-option
label=
"区域一"
value=
"shanghai"
></el-option>
<el-select
v-model=
"ruleForm.question_category"
placeholder=
"请选择试题分类"
>
<el-option
label=
"区域二"
value=
"beijing"
></el-option>
<el-option
v-if=
"!dialogVisible"
:label=
"treeValue.name"
:value=
"treeValue.id"
></el-option>
</el-select>
</el-select>
<div
class=
"pop"
@
click=
"dialogVisible = true"
></div>
</div>
</el-form-item>
</el-form-item>
<el-form-item
label=
"知识点"
prop=
"knowledge_point"
>
<el-form-item
label=
"知识点"
prop=
"knowledge_point"
>
<el-input
v-model=
"ruleForm.knowledge_point"
></el-input>
<el-select
v-model=
"ruleForm.knowledge_point"
filterable
remote
reserve-keyword
placeholder=
"请输入关键词"
:remote-method=
"remoteMethod"
>
<el-option
v-for=
"item in pointOptions"
:key=
"item.id"
:label=
"item.title"
:value=
"item.id"
>
</el-option>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item>
<el-form-item>
<el-button
type=
"primary"
@
click=
"submitForm('ruleForm')"
>
立即创建
</el-button>
<el-button
type=
"primary"
@
click=
"submitForm('ruleForm')"
>
立即创建
</el-button>
<
el-button
@
click=
"resetForm('ruleForm')"
>
重置
</el-button
>
<
!--
<el-button
@
click=
"resetForm('ruleForm')"
>
重置
</el-button>
--
>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
<el-dialog
title=
"提示"
:visible
.
sync=
"dialogVisible"
width=
"30%"
:before-close=
"handleClose"
>
<el-tree
:data=
"treeList"
:props=
"defaultProps"
@
node-click=
"handleNodeClick"
:expand-on-click-node=
"false"
></el-tree>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"handleClose"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"dialogConfirm"
>
确 定
</el-button>
</span>
</el-dialog>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
...
@@ -55,20 +86,31 @@ import VEditor from '@/components/tinymce/Index.vue'
...
@@ -55,20 +86,31 @@ import VEditor from '@/components/tinymce/Index.vue'
import
Radio
from
'../components/QTypeRadio.vue'
import
Radio
from
'../components/QTypeRadio.vue'
import
Checkbox
from
'../components/QTypeCheckbox.vue'
import
Checkbox
from
'../components/QTypeCheckbox.vue'
import
Judgment
from
'../components/QTypeJudgment.vue'
import
Judgment
from
'../components/QTypeJudgment.vue'
import
{
getQuestionCategory
,
searchTag
,
addQuestion
}
from
'../api'
export
default
{
export
default
{
components
:
{
VEditor
,
Radio
,
Checkbox
,
Judgment
},
components
:
{
VEditor
,
Radio
,
Checkbox
,
Judgment
},
data
()
{
data
()
{
return
{
return
{
pointOptions
:
''
,
treeList
:
[],
defaultProps
:
''
,
treeValue
:
{
name
:
''
,
id
:
''
},
dialogVisible
:
false
,
ruleForm
:
{
ruleForm
:
{
permission
:
'1'
,
project_prefix
:
'x1'
,
project_prefix
:
'x1'
,
question_type
:
1
,
question_type
:
1
,
question_difficulty
:
''
,
question_difficulty
:
''
,
question_title
:
''
,
question_title
:
''
,
question_content
:
''
,
question_content
:
''
,
question_options
:
[],
//
question_options: [],
question_analysis
:
''
,
question_analysis
:
''
,
question_category
:
''
,
question_category
:
''
,
knowledge_point
:
''
knowledge_point
:
''
,
question_tag
:
''
},
},
qType
:
[
qType
:
[
{
label
:
'单选题'
,
value
:
1
},
{
label
:
'单选题'
,
value
:
1
},
...
@@ -86,15 +128,30 @@ export default {
...
@@ -86,15 +128,30 @@ export default {
question_content
:
[{
required
:
true
,
message
:
'请填写题干内容'
,
trigger
:
'blur'
}],
question_content
:
[{
required
:
true
,
message
:
'请填写题干内容'
,
trigger
:
'blur'
}],
question_analysis
:
[{
required
:
true
,
message
:
'请填写题干内容'
,
trigger
:
'blur'
}],
question_analysis
:
[{
required
:
true
,
message
:
'请填写题干内容'
,
trigger
:
'blur'
}],
question_category
:
[{
required
:
true
,
message
:
'请选择试题分类'
,
trigger
:
'change'
}],
question_category
:
[{
required
:
true
,
message
:
'请选择试题分类'
,
trigger
:
'change'
}],
knowledge_point
:
[{
required
:
true
,
message
:
'请输入题目知识点内容'
,
trigger
:
'blur'
}]
knowledge_point
:
[{
required
:
true
,
message
:
'请输入题目知识点内容'
,
trigger
:
'blur'
}],
question_options
:
[{
required
:
true
,
message
:
' '
,
trigger
:
'blur'
}]
}
}
}
}
},
},
mounted
()
{
this
.
getTreeList
()
},
methods
:
{
methods
:
{
submitForm
(
formName
)
{
submitForm
(
formName
)
{
if
(
parseInt
(
this
.
ruleForm
.
question_type
)
!==
3
)
{
const
isValue
=
this
.
$refs
.
options
.
datas
.
find
(
item
=>
item
.
option
===
''
)
if
(
!
isValue
)
this
.
ruleForm
.
question_options
=
this
.
$refs
.
options
.
datas
}
this
.
$refs
[
formName
].
validate
(
valid
=>
{
this
.
$refs
[
formName
].
validate
(
valid
=>
{
if
(
valid
)
{
if
(
valid
)
{
alert
(
'submit!'
)
// alert('submit!')
addQuestion
(
this
.
ruleForm
).
then
(
res
=>
{
if
(
res
.
code
===
0
)
{
this
.
$router
.
push
({
path
:
'/question/list'
})
}
})
}
else
{
}
else
{
console
.
log
(
'error submit!!'
)
console
.
log
(
'error submit!!'
)
return
false
return
false
...
@@ -106,10 +163,73 @@ export default {
...
@@ -106,10 +163,73 @@ export default {
},
},
changeQuestionType
()
{
changeQuestionType
()
{
console
.
log
(
this
.
ruleForm
.
question_type
)
console
.
log
(
this
.
ruleForm
.
question_type
)
},
// 点击选中tree
handleNodeClick
(
data
)
{
this
.
treeValue
.
name
=
data
.
label
this
.
treeValue
.
id
=
data
.
id
},
// 关闭选择tree弹窗
handleClose
()
{
this
.
dialogVisible
=
false
},
// tree确认选择
dialogConfirm
()
{
this
.
dialogVisible
=
false
this
.
ruleForm
.
question_category
=
this
.
treeValue
.
id
},
// 获取tree列表
getTreeList
()
{
getQuestionCategory
(
'x1'
).
then
(
res
=>
{
if
(
Array
.
isArray
(
res
.
data
))
{
this
.
initTree
(
res
.
data
)
}
})
},
// 过滤数据 变成tree组件需要的数据
initTree
(
data
)
{
this
.
treeList
=
data
.
reduce
((
a
,
b
)
=>
{
b
.
label
=
b
.
category_name
if
(
b
.
children
.
length
)
{
setData
(
b
.
children
)
}
a
.
push
(
b
)
return
a
},
[])
function
setData
(
item
)
{
return
item
.
map
(
element
=>
{
if
(
element
.
children
.
length
)
{
setData
(
element
.
children
)
element
.
label
=
element
.
category_name
}
else
{
element
.
label
=
element
.
category_name
}
return
element
})
}
},
// 知识点搜索
remoteMethod
(
query
)
{
console
.
log
(
query
)
searchTag
({
title
:
query
}).
then
(
res
=>
{
this
.
pointOptions
=
res
.
data
.
data
console
.
log
(
res
,
'query'
)
})
}
}
}
}
}
}
</
script
>
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
>
.filter-input
{
position
:
relative
;
.pop
{
position
:
absolute
;
top
:
0
;
left
:
0
;
width
:
200px
;
height
:
100%
;
cursor
:
pointer
;
}
}
</
style
>
</
style
>
src/modules/question/components/QTypeCheckbox.vue
浏览文件 @
e4ec0804
<
template
>
<
template
>
<div
class=
"radio-box"
>
<div
class=
"radio-box"
>
<template
v-for=
"(item, index) in
radioList
"
>
<template
v-for=
"(item, index) in
datas
"
>
<div
class=
"opt"
:key=
"index"
>
<div
class=
"opt"
:key=
"index"
>
<el-checkbox
v-model=
"
radioValue"
:label=
"index
"
>
<el-checkbox
v-model=
"
checkboxValue"
:label=
"index"
@
change=
"checkboxChange
"
>
<el-tag>
{{
A_Z
()[
index
]
}}
</el-tag>
<el-tag>
{{
A_Z
()[
index
]
}}
</el-tag>
<el-input
v-model=
"item.
value
"
maxlength=
"80"
show-word-limit
></el-input>
<el-input
v-model=
"item.
option
"
maxlength=
"80"
show-word-limit
></el-input>
</el-checkbox>
</el-checkbox>
<i
class=
"el-icon-remove-outline icon-style"
v-if=
"index !=
radioList
.length - 1"
@
click=
"remove(index)"
></i>
<i
class=
"el-icon-remove-outline icon-style"
v-if=
"index !=
datas
.length - 1"
@
click=
"remove(index)"
></i>
<i
class=
"el-icon-circle-plus-outline icon-style"
v-else
@
click=
"add"
></i>
<i
class=
"el-icon-circle-plus-outline icon-style"
v-else
@
click=
"add"
></i>
</div>
</div>
</
template
>
</
template
>
...
@@ -17,27 +17,33 @@
...
@@ -17,27 +17,33 @@
export
default
{
export
default
{
data
()
{
data
()
{
return
{
return
{
radioValue
:
[
],
checkboxValue
:
[
0
],
radioList
:
[
datas
:
[
{
{
value
:
''
checked
:
true
,
option
:
''
},
},
{
{
value
:
''
checked
:
false
,
option
:
''
},
},
{
{
value
:
''
checked
:
false
,
option
:
''
},
{
checked
:
false
,
option
:
''
}
}
],
]
ruleForm
:
''
}
}
},
},
methods
:
{
methods
:
{
add
()
{
add
()
{
this
.
radioList
.
push
({
value
:
''
})
this
.
datas
.
push
({
option
:
''
,
checked
:
false
})
},
},
remove
(
index
)
{
remove
(
index
)
{
this
.
radioList
.
splice
(
index
,
1
)
this
.
datas
.
splice
(
index
,
1
)
},
},
A_Z
()
{
A_Z
()
{
const
result
=
[]
const
result
=
[]
...
@@ -45,6 +51,16 @@ export default {
...
@@ -45,6 +51,16 @@ export default {
result
.
push
(
String
.
fromCharCode
(
65
+
i
))
result
.
push
(
String
.
fromCharCode
(
65
+
i
))
}
}
return
result
return
result
},
checkboxChange
()
{
this
.
datas
.
map
(
item
=>
{
item
.
checked
=
false
return
item
})
this
.
checkboxValue
.
forEach
(
item
=>
{
this
.
datas
[
item
].
checked
=
true
})
console
.
log
(
this
.
datas
)
}
}
}
}
}
}
...
...
src/modules/question/components/QTypeJudgment.vue
浏览文件 @
e4ec0804
<
template
>
<
template
>
<div>
<div>
<el-radio
v-model=
"radio"
label=
"1
"
><i
class=
"el-icon-check"
></i></el-radio>
<el-radio
v-model=
"radio"
label=
"0"
@
change=
"radioChange
"
><i
class=
"el-icon-check"
></i></el-radio>
<el-radio
v-model=
"radio"
label=
"2
"
><i
class=
"el-icon-close"
></i></el-radio>
<el-radio
v-model=
"radio"
label=
"1"
@
change=
"radioChange
"
><i
class=
"el-icon-close"
></i></el-radio>
</div>
</div>
</
template
>
</
template
>
...
@@ -9,7 +9,27 @@
...
@@ -9,7 +9,27 @@
export
default
{
export
default
{
data
()
{
data
()
{
return
{
return
{
radio
:
'1'
radio
:
'0'
,
datas
:
[
{
option
:
'正确'
,
checked
:
true
},
{
option
:
'错误'
,
checked
:
false
}
]
}
},
methods
:
{
radioChange
()
{
this
.
datas
.
map
(
item
=>
{
item
.
checked
=
false
this
.
datas
[
this
.
radio
].
checked
=
true
return
item
})
console
.
log
(
this
.
datas
,
'datas'
)
}
}
}
}
}
}
...
...
src/modules/question/components/QTypeRadio.vue
浏览文件 @
e4ec0804
<
template
>
<
template
>
<div
class=
"radio-box"
>
<div
class=
"radio-box"
>
<template
v-for=
"(item, index) in
radioList
"
>
<template
v-for=
"(item, index) in
datas
"
>
<div
class=
"opt"
:key=
"index"
>
<div
class=
"opt"
:key=
"index"
>
<el-radio
v-model=
"radioValue"
:label=
"index"
>
<el-radio
v-model=
"radioValue"
:label=
"index"
@
change=
"radioChange"
>
<el-tag>
{{
A_Z
()[
index
]
}}
</el-tag>
<el-tag>
{{
A_Z
()[
index
]
}}
</el-tag>
<el-input
v-model=
"item.
value
"
maxlength=
"80"
show-word-limit
></el-input>
<el-input
v-model=
"item.
option
"
maxlength=
"80"
show-word-limit
></el-input>
</el-radio>
</el-radio>
<i
class=
"el-icon-remove-outline icon-style"
v-if=
"index !=
radioList
.length - 1"
@
click=
"remove(index)"
></i>
<i
class=
"el-icon-remove-outline icon-style"
v-if=
"index !=
datas
.length - 1"
@
click=
"remove(index)"
></i>
<i
class=
"el-icon-circle-plus-outline icon-style"
v-else
@
click=
"add"
></i>
<i
class=
"el-icon-circle-plus-outline icon-style"
v-else
@
click=
"add"
></i>
</div>
</div>
</
template
>
</
template
>
...
@@ -19,15 +19,18 @@ export default {
...
@@ -19,15 +19,18 @@ export default {
data
()
{
data
()
{
return
{
return
{
radioValue
:
0
,
radioValue
:
0
,
radioList
:
[
datas
:
[
{
{
value
:
''
checked
:
true
,
option
:
''
},
},
{
{
value
:
''
checked
:
false
,
option
:
''
},
},
{
{
value
:
''
checked
:
false
,
option
:
''
}
}
],
],
ruleForm
:
''
ruleForm
:
''
...
@@ -35,10 +38,10 @@ export default {
...
@@ -35,10 +38,10 @@ export default {
},
},
methods
:
{
methods
:
{
add
()
{
add
()
{
this
.
radioList
.
push
({
value
:
''
})
this
.
datas
.
push
({
option
:
''
,
checked
:
false
})
},
},
remove
(
index
)
{
remove
(
index
)
{
this
.
radioList
.
splice
(
index
,
1
)
this
.
datas
.
splice
(
index
,
1
)
},
},
A_Z
()
{
A_Z
()
{
const
result
=
[]
const
result
=
[]
...
@@ -46,6 +49,13 @@ export default {
...
@@ -46,6 +49,13 @@ export default {
result
.
push
(
String
.
fromCharCode
(
65
+
i
))
result
.
push
(
String
.
fromCharCode
(
65
+
i
))
}
}
return
result
return
result
},
radioChange
()
{
this
.
datas
.
map
(
item
=>
{
item
.
checked
=
false
this
.
datas
[
this
.
radioValue
].
checked
=
true
return
item
})
}
}
}
}
}
}
...
...
src/modules/question/views/Create.vue
浏览文件 @
e4ec0804
<
template
>
<
template
>
<app-card>
<app-card>
<detail>
<detail></detail>
<!-- 单选题 -->
<!--
<radio></radio>
-->
<!-- 多选题 -->
<!--
<checkbox></checkbox>
-->
<!-- 判断题 -->
<!--
<judgment></judgment>
-->
</detail>
<!--
<v-editor></v-editor>
-->
</app-card>
</app-card>
</
template
>
</
template
>
...
...
src/modules/question/views/List.vue
浏览文件 @
e4ec0804
...
@@ -8,7 +8,7 @@
...
@@ -8,7 +8,7 @@
<
template
v-slot:input-filter
>
<
template
v-slot:input-filter
>
<div
class=
"filter-input"
>
<div
class=
"filter-input"
>
<el-input
v-model=
"filterInput"
placeholder=
"请选择"
></el-input>
<el-input
v-model=
"filterInput"
placeholder=
"请选择"
></el-input>
<div
class=
"pop"
></div>
<div
class=
"pop"
@
click=
"dialogVisible = true"
></div>
</div>
</div>
</
template
>
</
template
>
<div
class=
"operate-btn"
>
<div
class=
"operate-btn"
>
...
@@ -23,6 +23,18 @@
...
@@ -23,6 +23,18 @@
<el-button
type=
"text"
@
click=
"handleSettings(row)"
>
查看详情
</el-button>
<el-button
type=
"text"
@
click=
"handleSettings(row)"
>
查看详情
</el-button>
<el-button
type=
"text"
@
click=
"handleSettings(row)"
>
删除
</el-button>
<el-button
type=
"text"
@
click=
"handleSettings(row)"
>
删除
</el-button>
</
template
>
</
template
>
<el-dialog
title=
"提示"
:visible
.
sync=
"dialogVisible"
width=
"30%"
:before-close=
"handleClose"
>
<el-tree
:data=
"treeList"
:props=
"defaultProps"
@
node-click=
"handleNodeClick"
:expand-on-click-node=
"false"
></el-tree>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"handleClose"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"dialogConfirm"
>
确 定
</el-button>
</span>
</el-dialog>
</app-list>
</app-list>
</app-card>
</app-card>
</template>
</template>
...
@@ -33,9 +45,16 @@ import { getAppList, getQuestionCategory } from '../api'
...
@@ -33,9 +45,16 @@ import { getAppList, getQuestionCategory } from '../api'
export
default
{
export
default
{
data
()
{
data
()
{
return
{
return
{
dialogVisible
:
false
,
visible
:
false
,
visible
:
false
,
radio
:
'1'
,
radio
:
'1'
,
filterInput
:
''
filterInput
:
''
,
treeList
:
[],
defaultProps
:
''
,
treeValue
:
{
name
:
''
,
id
:
''
}
}
}
},
},
computed
:
{
computed
:
{
...
@@ -97,27 +116,81 @@ export default {
...
@@ -97,27 +116,81 @@ export default {
httpRequest
:
getAppList
,
httpRequest
:
getAppList
,
params
:
{
params
:
{
permission
:
this
.
radio
,
permission
:
this
.
radio
,
project_prefix
:
'x1'
project_prefix
:
'x1'
,
question_category
:
this
.
treeValue
.
id
},
callback
(
data
)
{
const
questionType
=
{
1
:
'单选题'
,
2
:
'多选题'
,
3
:
'简答题'
,
5
:
'案例题'
,
6
:
'判断题'
,
7
:
'实操题'
,
8
:
'情景题'
}
const
questionDifficulty
=
{
1
:
'易'
,
2
:
'中'
,
3
:
'难'
}
return
data
.
data
.
reduce
((
a
,
b
)
=>
{
b
.
question_type
=
questionType
[
b
.
question_type
]
b
.
question_difficulty
=
questionDifficulty
[
b
.
question_difficulty
]
a
.
push
(
b
)
return
a
},
[])
}
}
},
},
columns
:
[
columns
:
[
{
label
:
'序号'
,
prop
:
'order'
},
{
type
:
'selection'
,
minWidth
:
'50px'
,
fixed
:
'left'
},
{
label
:
'题目类型'
,
prop
:
'type'
},
{
label
:
'序号'
,
prop
:
'question_order'
},
{
label
:
'试题分类'
,
prop
:
'sort'
},
{
label
:
'题目类型'
,
prop
:
'question_type'
},
{
label
:
'题目目标'
,
prop
:
'title'
},
{
label
:
'试题分类'
,
prop
:
'question_category.category_name'
},
{
label
:
'知识点'
,
prop
:
'points'
},
{
label
:
'题目标题'
,
prop
:
'question_title'
},
{
label
:
'等级难度'
,
prop
:
'grade'
},
{
label
:
'知识点'
,
prop
:
'knowledge_point.title'
},
{
label
:
'更新人'
,
prop
:
'update_people'
},
{
label
:
'等级难度'
,
prop
:
'question_difficulty'
},
{
label
:
'更新时间'
,
prop
:
'update_time'
},
{
label
:
'更新人'
,
prop
:
'operator.nickname'
},
{
label
:
'更新时间'
,
prop
:
'updated_at'
},
{
label
:
'操作'
,
slots
:
'table-x'
,
align
:
'right'
}
{
label
:
'操作'
,
slots
:
'table-x'
,
align
:
'right'
}
]
]
}
}
}
}
},
},
mounted
()
{
mounted
()
{
getQuestionCategory
(
'x1'
).
then
()
this
.
getTreeList
()
},
},
methods
:
{
methods
:
{
// 获取tree列表
getTreeList
()
{
getQuestionCategory
(
'x1'
).
then
(
res
=>
{
if
(
Array
.
isArray
(
res
.
data
))
{
this
.
initTree
(
res
.
data
)
}
})
},
// 过滤数据 变成tree组件需要的数据
initTree
(
data
)
{
this
.
treeList
=
data
.
reduce
((
a
,
b
)
=>
{
b
.
label
=
b
.
category_name
if
(
b
.
children
.
length
)
{
setData
(
b
.
children
)
}
a
.
push
(
b
)
return
a
},
[])
function
setData
(
item
)
{
return
item
.
map
(
element
=>
{
if
(
element
.
children
.
length
)
{
setData
(
element
.
children
)
element
.
label
=
element
.
category_name
}
else
{
element
.
label
=
element
.
category_name
}
return
element
})
}
},
// 创建成功刷新列表
// 创建成功刷新列表
handleCreateSuccess
()
{
handleCreateSuccess
()
{
this
.
$refs
.
list
.
refetch
()
this
.
$refs
.
list
.
refetch
()
...
@@ -129,6 +202,20 @@ export default {
...
@@ -129,6 +202,20 @@ export default {
handleSettings
(
row
)
{
handleSettings
(
row
)
{
// tan ~~~~~
// tan ~~~~~
this
.
$router
.
push
({
path
:
'/settings/users'
,
query
:
{
appid
:
row
.
id
}
})
this
.
$router
.
push
({
path
:
'/settings/users'
,
query
:
{
appid
:
row
.
id
}
})
},
handleNodeClick
(
data
)
{
this
.
treeValue
.
name
=
data
.
label
this
.
treeValue
.
id
=
data
.
id
},
handleClose
()
{
this
.
treeValue
.
name
=
''
this
.
treeValue
.
id
=
''
this
.
dialogVisible
=
false
},
dialogConfirm
()
{
this
.
dialogVisible
=
false
this
.
filterInput
=
this
.
treeValue
.
name
this
.
$refs
.
list
.
refetch
()
}
}
},
},
watch
:
{
watch
:
{
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论