Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
school-paper-admin-front
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
school-paper
school-paper-admin-front
Commits
7c5063c1
Commit
7c5063c1
authored
Jul 26, 2023
by
H.wb.wang.peixun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
接口对接
parent
fbd877c9
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
401 additions
and
180 deletions
+401
-180
src/api/school-paper/dict.js
+5
-5
src/api/school-paper/questionBank.js
+4
-3
src/api/school-paper/testPaper.js
+10
-2
src/components/ImageUpload/index.vue
+84
-35
src/config/index.js
+12
-0
src/views/school-paper/banner/index.vue
+1
-1
src/views/school-paper/dict/index.vue
+14
-40
src/views/school-paper/questionBank/index.vue
+9
-16
src/views/school-paper/testPaper/components/treeselect.vue
+111
-0
src/views/school-paper/testPaper/index.vue
+56
-42
src/views/system/role/index.vue
+2
-2
src/views/system/user/index.vue
+90
-32
vue.config.js
+3
-2
No files found.
src/api/school-paper/dict.js
View file @
7c5063c1
...
...
@@ -3,7 +3,7 @@ import request from '@/utils/request'
// 查询字典列表
export
function
listDict
(
query
)
{
return
request
({
url
:
'/school-paper/
dict
/list'
,
url
:
'/school-paper/
question-type
/list'
,
method
:
'get'
,
params
:
query
})
...
...
@@ -12,7 +12,7 @@ export function listDict(query) {
// 查询字典详细
export
function
getDict
(
id
)
{
return
request
({
url
:
'/school-paper/
dict
/'
+
id
,
url
:
'/school-paper/
question-type
/'
+
id
,
method
:
'get'
})
}
...
...
@@ -20,7 +20,7 @@ export function getDict(id) {
// 新增字典
export
function
addDict
(
data
)
{
return
request
({
url
:
'/school-paper/
dict
'
,
url
:
'/school-paper/
question-type
'
,
method
:
'post'
,
data
:
data
})
...
...
@@ -29,7 +29,7 @@ export function addDict(data) {
// 修改字典
export
function
updateDict
(
data
)
{
return
request
({
url
:
'/school-paper/
dict
'
,
url
:
'/school-paper/
question-type
'
,
method
:
'put'
,
data
:
data
})
...
...
@@ -38,7 +38,7 @@ export function updateDict(data) {
// 删除字典
export
function
delDict
(
id
)
{
return
request
({
url
:
'/school-paper/
dict
/'
+
id
,
url
:
'/school-paper/
question-type
/'
+
id
,
method
:
'delete'
})
}
src/api/school-paper/questionBank.js
View file @
7c5063c1
...
...
@@ -43,9 +43,9 @@ export function updateQuestionBank(data) {
}
// 删除题库主
export
function
delQuestionBank
(
id
)
{
export
function
delQuestionBank
(
id
s
)
{
return
request
({
url
:
'/school-paper/questionBank/'
+
id
,
url
:
'/school-paper/questionBank/'
+
id
s
,
method
:
'delete'
})
}
}
\ No newline at end of file
src/api/school-paper/testPaper.js
View file @
7c5063c1
...
...
@@ -16,11 +16,10 @@ export function getTestPaper(id) {
method
:
'get'
})
}
// 新增试卷
export
function
addTestPaper
(
data
)
{
return
request
({
url
:
'/school-paper/testPaper'
,
url
:
'/school-paper/testPaper
/randomGeneration
'
,
method
:
'post'
,
data
:
data
})
...
...
@@ -42,3 +41,12 @@ export function delTestPaper(id) {
method
:
'delete'
})
}
// 查询题库主列表
export
function
questionType
(
query
)
{
return
request
({
url
:
'/school-paper/question-type/list'
,
method
:
'get'
,
params
:
query
})
}
src/components/ImageUpload/index.vue
View file @
7c5063c1
...
...
@@ -15,7 +15,7 @@
:headers=
"headers"
:file-list=
"fileList"
:on-preview=
"handlePictureCardPreview"
:class=
"
{
hide: this.fileList.length >= this.limit
}"
:class=
"
{
hide: this.fileList.length >= this.limit
}"
>
<i
class=
"el-icon-plus"
></i>
</el-upload>
...
...
@@ -23,8 +23,12 @@
<!-- 上传提示 -->
<div
class=
"el-upload__tip"
slot=
"tip"
v-if=
"showTip"
>
请上传
<template
v-if=
"fileSize"
>
大小不超过
<b
style=
"color: #f56c6c"
>
{{
fileSize
}}
MB
</b>
</
template
>
<
template
v-if=
"fileType"
>
格式为
<b
style=
"color: #f56c6c"
>
{{
fileType
.
join
(
"/"
)
}}
</b>
</
template
>
<template
v-if=
"fileSize"
>
大小不超过
<b
style=
"color: #f56c6c"
>
{{
fileSize
}}
MB
</b>
</
template
>
<
template
v-if=
"fileType"
>
格式为
<b
style=
"color: #f56c6c"
>
{{
fileType
.
join
(
"/"
)
}}
</b>
</
template
>
的文件
</div>
...
...
@@ -56,7 +60,7 @@ export default {
},
// 大小限制(MB)
fileSize
:
{
type
:
Number
,
type
:
Number
,
default
:
5
,
},
// 文件类型, 例如['png', 'jpg', 'jpeg']
...
...
@@ -67,8 +71,8 @@ export default {
// 是否显示提示
isShowTip
:
{
type
:
Boolean
,
default
:
true
}
default
:
true
,
}
,
},
data
()
{
return
{
...
...
@@ -78,40 +82,68 @@ export default {
dialogVisible
:
false
,
hideUpload
:
false
,
baseUrl
:
process
.
env
.
VUE_APP_BASE_API
,
uploadImgUrl
:
process
.
env
.
VUE_APP_BASE_API
+
"/school-paper/banner/uploadFile"
,
// 上传的图片服务器地址
// uploadImgUrl: "https://farming.nyinhong.com/api/admin/bicycle/maintenance/upload", // 上传的图片服务器地址
// uploadImgUrl: process.env.VUE_APP_BASE_API + "/admin/bicycle/maintenance/uploadFile", // 上传的图片服务器地址
// headers: {
// Authorization: "Bearer " + getToken(),
// },
uploadImgUrl
:
process
.
env
.
VUE_APP_BASE_API
+
'/admin/bicycle/maintenance/uploadFile'
,
headers
:
{
Authorization
:
"Bearer "
+
getToken
(),
},
fileList
:
[]
fileList
:
[]
,
};
},
watch
:
{
value
:
{
async
handler
(
val
)
{
if
(
val
)
{
// 首先将值转为数组
let
list
;
let
list
=
[];
// 用于确定传递的值是否是一个
if
(
Array
.
isArray
(
val
))
{
list
=
val
;
}
else
{
await
listByIds
(
val
).
then
(
res
=>
{
list
=
res
.
data
;
})
list
.
push
(
val
);
// await listByIds(val).then(res => {
// list = res.data;
// })
}
// 然后将数组转为对象数组
this
.
fileList
=
list
.
map
(
item
=>
{
this
.
fileList
=
list
.
map
((
item
)
=>
{
// 此处name使用ossId 防止删除出现重名
item
=
{
name
:
item
.
ossId
,
url
:
item
.
url
,
ossId
:
item
.
ossId
};
if
(
item
.
hasOwnProperty
(
"url"
))
{
item
=
{
url
:
item
.
url
};
}
else
{
item
=
{
url
:
item
};
}
return
item
;
});
console
.
log
(
this
.
fileList
,
"土地你"
);
// this.uploadList = this.fileList
// 然后将数组转为对象数组
// 首先将值转为数组
// let list;
// if (Array.isArray(val)) {
// list = val;
// } else {
// await listByIds(val).then(res => {
// list = res.data;
// })
// }
// // 然后将数组转为对象数组
// this.fileList = list.map(item => {
// // 此处name使用ossId 防止删除出现重名
// item = { name: item.ossId, url: item.url, ossId: item.ossId };
// return item;
// });
}
else
{
this
.
fileList
=
[];
return
[];
}
},
deep
:
true
,
immediate
:
true
}
immediate
:
true
,
}
,
},
computed
:
{
// 是否显示提示
...
...
@@ -138,7 +170,9 @@ export default {
}
if
(
!
isImg
)
{
this
.
$modal
.
msgError
(
`文件格式不正确, 请上传
${
this
.
fileType
.
join
(
"/"
)}
图片格式文件!`
);
this
.
$modal
.
msgError
(
`文件格式不正确, 请上传
${
this
.
fileType
.
join
(
"/"
)}
图片格式文件!`
);
return
false
;
}
if
(
this
.
fileSize
)
{
...
...
@@ -157,8 +191,10 @@ export default {
},
// 上传成功回调
handleUploadSuccess
(
res
,
file
)
{
console
.
log
(
res
,
"上传成功回调"
);
if
(
res
.
code
===
200
)
{
this
.
uploadList
.
push
({
name
:
res
.
data
.
fileName
,
url
:
res
.
data
.
url
,
ossId
:
res
.
data
.
ossId
});
// this.uploadList.push({ name: res.data.fileName, url: res.data.url, ossId: res.data.ossId });
this
.
uploadList
.
push
({
url
:
res
.
data
.
url
});
this
.
uploadedSuccessfully
();
}
else
{
this
.
number
--
;
...
...
@@ -170,13 +206,19 @@ export default {
},
// 删除图片
handleDelete
(
file
)
{
const
findex
=
this
.
fileList
.
map
(
f
=>
f
.
name
).
indexOf
(
file
.
name
);
if
(
findex
>
-
1
)
{
let
ossId
=
this
.
fileList
[
findex
].
ossId
;
delOss
(
ossId
);
console
.
log
(
file
,
'文件'
)
const
findex
=
this
.
fileList
.
map
((
f
)
=>
f
.
url
).
indexOf
(
file
.
url
);
if
(
findex
>
-
1
)
{
this
.
fileList
.
splice
(
findex
,
1
);
this
.
$emit
(
"input"
,
this
.
listToString
(
this
.
fileList
)
);
this
.
$emit
(
"input"
,
this
.
fileList
);
}
// const findex = this.fileList.map((f) => f.name).indexOf(file.name);
// if (findex > -1) {
// let ossId = this.fileList[findex].ossId;
// delOss(ossId);
// this.fileList.splice(findex, 1);
// this.$emit("input", this.listToString(this.fileList));
// }
},
// 上传失败
handleUploadError
(
res
)
{
...
...
@@ -185,11 +227,13 @@ export default {
},
// 上传结束处理
uploadedSuccessfully
()
{
if
(
this
.
number
>
0
&&
this
.
uploadList
.
length
===
this
.
number
)
{
// && this.uploadList.length === this.number
if
(
this
.
number
>
0
)
{
this
.
fileList
=
this
.
fileList
.
concat
(
this
.
uploadList
);
this
.
uploadList
=
[];
this
.
number
=
0
;
this
.
$emit
(
"input"
,
this
.
listToString
(
this
.
fileList
));
this
.
$emit
(
"input"
,
this
.
fileList
);
// this.$emit("input", this.listToString(this.fileList));
this
.
$modal
.
closeLoading
();
}
},
...
...
@@ -203,29 +247,34 @@ export default {
let
strs
=
""
;
separator
=
separator
||
","
;
for
(
let
i
in
list
)
{
if
(
list
[
i
].
ossId
)
{
strs
+=
list
[
i
].
ossId
+
separator
;
if
(
list
[
i
].
url
)
{
strs
+=
list
[
i
].
url
+
separator
;
}
}
// for (let i in list) {
// if (list[i].ossId) {
// strs += list[i].ossId + separator;
// }
// }
return
strs
!=
""
?
strs
.
substr
(
0
,
strs
.
length
-
1
)
:
""
;
}
}
}
,
}
,
};
</
script
>
<
style
scoped
lang=
"scss"
>
//
.el-upload--picture-card
控制加号部分
::v-deep
.hide
.el-upload--picture-card
{
display
:
none
;
display
:
none
;
}
//
去掉动画效果
::v-deep
.el-list-enter-active
,
::v-deep
.el-list-leave-active
{
transition
:
all
0s
;
transition
:
all
0s
;
}
::v-deep
.el-list-enter
,
.el-list-leave-active
{
::v-deep
.el-list-enter
,
.el-list-leave-active
{
opacity
:
0
;
transform
:
translateY
(
0
);
}
</
style
>
src/config/index.js
0 → 100644
View file @
7c5063c1
// 图片上传地址
let
hostUrl
=
'http://farming.nyinhong.com/api'
// 基础配置
const
apiBaseConfig
=
{
// 图片上传地址
domain
:
hostUrl
,
//后端请求路径
}
export
default
apiBaseConfig
\ No newline at end of file
src/views/school-paper/banner/index.vue
View file @
7c5063c1
...
...
@@ -100,7 +100,7 @@
<el-input
v-model=
"form.bannerTitle"
placeholder=
"请输入标题"
/>
</el-form-item>
<el-form-item
label=
"上传"
prop=
"url"
>
<imageUpload
:limit=
"1"
v-model=
"form.url"
/>
<imageUpload
:limit=
"1"
v-model=
"form.url"
ref=
"refUpload"
placeholder=
"请上传图片"
/>
</el-form-item>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
style=
"text-align: center;"
>
...
...
src/views/school-paper/dict/index.vue
View file @
7c5063c1
...
...
@@ -71,7 +71,7 @@
<el-table
v-loading=
"loading"
:data=
"dictList"
@
selection-change=
"handleSelectionChange"
>
<!--
<el-table-column
type=
"selection"
width=
"55"
align=
"center"
/>
-->
<el-table-column
label=
"类别名称"
prop=
"
nam
e"
/>
<el-table-column
label=
"类别名称"
prop=
"
typeValu
e"
/>
<!--
<el-table-column
label=
"父级id"
align=
"center"
prop=
"parentId"
/>
<el-table-column
label=
"类型:1 类别,2 阶段,3 班级"
align=
"center"
prop=
"type"
/>
<el-table-column
label=
"名称"
align=
"center"
prop=
"typeValue"
/>
...
...
@@ -107,18 +107,18 @@
<!-- 添加或修改字典对话框 -->
<el-dialog
:title=
"title"
:visible
.
sync=
"open"
width=
"500px"
append-to-body
>
<
!-- <
el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="父级id" prop="parentId">
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"80px"
>
<
!-- <
el-form-item label="父级id" prop="parentId">
<el-input v-model="form.parentId" placeholder="请输入父级id" />
</el-form-item>
<el-form-item label="名称" prop="typeValue">
<el-input v-model="form.typeValue" placeholder="请输入名称" />
</el-form-item> -->
<el-form-item
label=
"类别名称"
prop=
"typeValue"
>
<el-input
v-model=
"form.typeValue"
placeholder=
"请输入类别名称"
/>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item>
</el-form> -->
<el-input
v-model=
"form.remark"
placeholder=
"请输入类别名称"
/>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
style=
"text-align: center;"
>
<el-button
:loading=
"buttonLoading"
type=
"primary"
@
click=
"submitForm"
>
确 定
</el-button>
...
...
@@ -129,7 +129,7 @@
</template>
<
script
>
//
import { listDict, getDict, delDict, addDict, updateDict } from "@/api/school-paper/dict";
import
{
listDict
,
getDict
,
delDict
,
addDict
,
updateDict
}
from
"@/api/school-paper/dict"
;
export
default
{
name
:
"Dict"
,
...
...
@@ -150,9 +150,7 @@ export default {
// 总条数
total
:
0
,
// 字典表格数据
dictList
:
[{
name
:
'1'
}],
dictList
:
[],
// 弹出层标题
title
:
""
,
// 是否显示弹出层
...
...
@@ -170,29 +168,14 @@ export default {
form
:
{},
// 表单校验
rules
:
{
id
:
[
{
required
:
true
,
message
:
"主键id不能为空"
,
trigger
:
"blur"
}
],
parentId
:
[
{
required
:
true
,
message
:
"父级id不能为空"
,
trigger
:
"blur"
}
],
type
:
[
{
required
:
true
,
message
:
"类型:1 类别,2 阶段,3 班级不能为空"
,
trigger
:
"change"
}
],
typeValue
:
[
{
required
:
true
,
message
:
"名称不能为空"
,
trigger
:
"blur"
}
],
remark
:
[
{
required
:
true
,
message
:
"备注不能为空"
,
trigger
:
"blur"
}
],
typeStatus
:
[
{
required
:
true
,
message
:
"状态:0正常,1删除不能为空"
,
trigger
:
"change"
}
{
required
:
true
,
message
:
"请输入类别名称"
,
trigger
:
"blur"
}
],
}
};
},
created
()
{
//
this.getList();
this
.
getList
();
},
methods
:
{
/** 查询字典列表 */
...
...
@@ -212,16 +195,7 @@ export default {
// 表单重置
reset
()
{
this
.
form
=
{
id
:
undefined
,
parentId
:
undefined
,
type
:
undefined
,
typeValue
:
undefined
,
remark
:
undefined
,
typeStatus
:
undefined
,
createTime
:
undefined
,
updateTime
:
undefined
,
createBy
:
undefined
,
updateBy
:
undefined
};
this
.
resetForm
(
"form"
);
},
...
...
@@ -245,7 +219,7 @@ export default {
handleAdd
()
{
this
.
reset
();
this
.
open
=
true
;
this
.
title
=
"
请输入类别名称
"
;
this
.
title
=
"
新增类别
"
;
},
/** 修改按钮操作 */
handleUpdate
(
row
)
{
...
...
@@ -256,7 +230,7 @@ export default {
this
.
loading
=
false
;
this
.
form
=
response
.
data
;
this
.
open
=
true
;
this
.
title
=
"修改
字典
"
;
this
.
title
=
"修改
类别
"
;
});
},
/** 提交按钮 */
...
...
src/views/school-paper/questionBank/index.vue
View file @
7c5063c1
...
...
@@ -2,21 +2,14 @@
<div
class=
"app-container"
>
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:inline=
"true"
v-show=
"showSearch"
label-width=
"100px"
>
<el-form-item
label=
"题库类别"
prop=
"categoryId"
>
<el-select
clearable
v-model=
"queryParams.categoryId"
placeholder=
"请选择题库类别"
@
change=
"handleQuery"
>
<el-option
v-for=
"item in [
{ label: '全部', value: '' },
{ label: '集合', value: '1' },
{ label: '不等式', value: '2' },
{ label: '函数', value: '3' },
{ label: '数列', value: '4' },
{ label: '立体几何', value: '5' },
]" :key="item.value" :label="item.label" :value="item.value">
<el-select
clearable
v-model=
"queryParams.categoryId"
placeholder=
"请选择题库类别"
>
<el-option
v-for=
"item in category"
:key=
"item.id"
:label=
"item.typeValue"
:value=
"item.id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"习题种类:"
prop=
"species"
>
<!-- 1填空,2选择,3解答 -->
<el-select
clearable
v-model=
"queryParams.species"
placeholder=
"请选择习题种类"
@
change=
"handleQuery"
>
<el-select
clearable
v-model=
"queryParams.species"
placeholder=
"请选择习题种类"
>
<el-option
v-for=
"item in [
{ label: '全部', value: '' },
{ label: '填空', value: '1' },
...
...
@@ -27,7 +20,7 @@
</el-select>
</el-form-item>
<el-form-item
label=
"阶段"
prop=
"phaseId"
>
<el-select
clearable
v-model=
"queryParams.phaseId"
placeholder=
"请选择阶段"
@
change=
"handleQuery"
>
<el-select
clearable
v-model=
"queryParams.phaseId"
placeholder=
"请选择阶段"
>
<el-option
v-for=
"item in [
{ label: '全部', value: '' },
{ label: '高一', value: '1' },
...
...
@@ -38,7 +31,7 @@
</el-select>
</el-form-item>
<el-form-item
label=
"类型"
prop=
"type"
>
<el-select
clearable
v-model=
"queryParams.type"
placeholder=
"请选择类型"
@
change=
"handleQuery"
>
<el-select
clearable
v-model=
"queryParams.type"
placeholder=
"请选择类型"
>
<el-option
v-for=
"item in [
{ label: '全部', value: '' },
{ label: '典例精讲', value: '1' },
...
...
@@ -48,7 +41,7 @@
</el-form-item>
<el-form-item
label=
"强度分类:"
prop=
"intensity"
>
<!-- 1基础,2中等,3提高 -->
<el-select
clearable
v-model=
"queryParams.intensity"
placeholder=
"请选择强度"
@
change=
"handleQuery"
>
<el-select
clearable
v-model=
"queryParams.intensity"
placeholder=
"请选择强度"
>
<el-option
v-for=
"item in [
{ label: '全部', value: '' },
{ label: '基础', value: '1' },
...
...
@@ -153,7 +146,7 @@
<div
class=
"app-container-list-item-html"
v-html=
"item.topic"
></div>
<div
class=
"app-container-list-item-footer"
>
<el-button
icon=
"el-icon-edit-outline"
@
click=
"handleUpdate(item)"
>
编辑
</el-button>
<el-button
icon=
"el-icon-delete"
>
删除
</el-button>
<el-button
icon=
"el-icon-delete"
@
click=
"handleDelete(item)"
>
删除
</el-button>
</div>
</div>
</div>
...
...
@@ -230,7 +223,7 @@
<el-col
:span=
"6"
>
<el-form-item
label=
"题库类别:"
prop=
"categoryId"
>
<el-select
clearable
v-model=
"form.categoryId"
placeholder=
"请选择题库类别"
>
<el-option
v-for=
"item in category"
:key=
"item.id"
:label=
"item.
remark
"
:value=
"item.id"
>
<el-option
v-for=
"item in category"
:key=
"item.id"
:label=
"item.
typeValue
"
:value=
"item.id"
>
</el-option>
</el-select>
</el-form-item>
...
...
@@ -297,7 +290,7 @@
</div>
</el-form-item>
<el-form-item
label=
"标准答案"
prop=
"rightAnswers"
v-if=
"form.options && form.options.length"
>
<el-radio-group
v-model=
"form.rightAnswers"
@
change=
'changeRadio'
>
<el-radio-group
v-model=
"form.rightAnswers"
>
<el-radio
:label=
"index"
v-for=
"(item, index) in form.options"
:key=
"index"
>
{{
index
|
filterType
(
form
.
options
)
}}
</el-radio>
</el-radio-group>
...
...
src/views/school-paper/testPaper/components/treeselect.vue
0 → 100644
View file @
7c5063c1
<
template
>
<!--
<div
class=
"main"
>
<div
class=
"tree"
>
-->
<Treeselect
v-model=
"value"
:options=
"options"
:placeholder=
"'请选择人员'"
:multiple=
"multiple"
@
input=
"treeSelectInput"
@
select=
"treeSelectChange"
@
deselect=
"treeSelectDeselect"
@
search-change=
"treeSelectSearch"
@
open=
"treeSelectOpen"
@
close=
"treeSelectClose"
/>
<!--
</div>
</div>
-->
</
template
>
<
script
>
import
Treeselect
from
"@riophae/vue-treeselect"
;
import
"@riophae/vue-treeselect/dist/vue-treeselect.css"
;
import
{
listUser
,
getUser
,
delUser
,
addUser
,
updateUser
,
resetUserPwd
,
changeUserStatus
,
deptTreeSelect
}
from
"@/api/system/user"
;
// import treeData from './data/tree'
export
default
{
data
()
{
return
{
value
:
null
,
options
:
[]
}
},
props
:{
multiple
:{
type
:
false
}
},
components
:
{
Treeselect
},
mounted
(){
// 延迟模拟请求数据
setTimeout
(()
=>
{
// this.options = treeData
// this.value = [ "1682295245318119426", "1682295184152584194"] // 测试回显操作
},
300
)
this
.
getDeptTree
()
},
methods
:{
/** 查询部门下拉树结构 */
getDeptTree
()
{
deptTreeSelect
().
then
(
response
=>
{
this
.
options
=
response
.
data
;
});
},
// 选中触发(第一次回显的时候会触发,清除值的时候会触发, value值为undefined) input事件用于v-model双向绑定组件更新父组件值
treeSelectInput
(
value
,
instanceId
)
{
console
.
log
(
value
,
'input事件'
)
console
.
log
(
this
.
value
,
'this.value -- input'
)
// 这个不需要 延迟
},
// 选中触发(清除值的时候不会触发)
treeSelectChange
(
raw
,
instanceId
)
{
console
.
log
(
raw
,
'当前的对象'
)
setTimeout
(()
=>
{
// 如果用到this.value 需要setTimeout延迟一下拿到最新的值
console
.
log
(
this
.
value
,
'this.value -- select'
)
})
},
// 移除选项时触发 当设置multiple为true时生效 raw为当前移除的对象
treeSelectDeselect
(
raw
,
instanceId
)
{
console
.
log
(
raw
,
'deselect-->>'
)
},
// 搜索
treeSelectSearch
(
searchQuery
,
instanceId
)
{
console
.
log
(
searchQuery
,
'当前搜索的值'
)
},
// 展开触发
treeSelectOpen
(
instanceId
)
{
console
.
log
(
'展开了'
)
},
// 关闭触发
treeSelectClose
(
value
,
instanceId
)
{
console
.
log
(
value
,
'当前的value值'
)
},
// 字段默认 id label 用于规范化数据源
tenantIdnormalizer
(
node
,
instanceId
)
{
if
(
node
.
children
&&
!
node
.
children
.
length
)
{
delete
node
.
children
}
return
{
id
:
node
.
id
,
label
:
node
.
title
,
children
:
node
.
children
}
}
}
}
</
script
>
<
style
scoped
>
.main
{
width
:
100%
;
height
:
100%
;
padding
:
60px
0
0
200px
;
}
.main
.tree
{
width
:
240px
;
height
:
40px
;
}
::v-deep
.vue-treeselect__label
{
color
:
#606266
;
}
</
style
>
\ No newline at end of file
src/views/school-paper/testPaper/index.vue
View file @
7c5063c1
...
...
@@ -2,7 +2,7 @@
<div
class=
"app-container"
>
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:inline=
"true"
v-show=
"showSearch"
label-width=
"68px"
>
<el-form-item
label=
"审批阅卷"
prop=
"testName"
>
<el-input
v-model=
"queryParams.testName"
placeholder=
"请输入试卷名称搜索"
clearable
@
keyup
.
enter
.
native=
"handleQuery"
/>
<el-input
v-model=
"queryParams.testName"
placeholder=
"请输入试卷名称搜索"
clearable
/>
</el-form-item>
<el-form-item
label=
"阶段"
prop=
"categoryId"
>
<el-select
v-model=
"value"
placeholder=
"请选择"
>
...
...
@@ -91,7 +91,7 @@
<el-table-column
label=
"状态:0正常,1删除"
align=
"center"
prop=
"status"
/>
-->
<el-table-column
label=
"操作"
align=
"center"
class-name=
"small-padding fixed-width"
>
<template
slot-scope=
"scope"
>
<el-button
type=
"primary"
size=
"medium "
@
click=
"handle
Query
"
>
查看试题
</el-button>
<el-button
type=
"primary"
size=
"medium "
@
click=
"handle
Update(scope.row)
"
>
查看试题
</el-button>
</
template
>
</el-table-column>
</el-table>
...
...
@@ -105,23 +105,24 @@
<el-form-item
label=
"试卷名称"
prop=
"testName"
>
<el-input
v-model=
"form.testName"
placeholder=
"请输入试卷名称"
/>
</el-form-item>
<el-form-item
label=
"
试卷类型
"
prop=
"categoryId"
>
<el-select
v-model=
"
value"
placeholder=
"请选择试卷类型"
>
<el-option
v-for=
"item in
options"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value
"
>
<el-form-item
label=
"
题库类别
"
prop=
"categoryId"
>
<el-select
v-model=
"
form.categoryId"
placeholder=
"请选择题库类别"
>
<el-option
v-for=
"item in
category"
:key=
"item.id"
:label=
"item.typeValue"
:value=
"item.id
"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"阶段"
prop=
"phaseId"
>
<el-select
v-model=
"value"
placeholder=
"请选择阶段"
>
<el-option
v-for=
"item in options"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
>
<el-form-item
label=
"强度"
prop=
"intensitys"
>
<el-select
v-model=
"form.intensitys"
placeholder=
"请选择强度"
multiple
collapse-tags
>
<el-option
v-for=
"item in [
{ label: '基础', id: 1 },
{ label: '中等', id: 2 },
{ label: '提高', id: 3 },
]"
:key=
"item.id"
:label=
"item.label"
:value=
"item.id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"班级"
prop=
"classId"
>
<el-select
v-model=
"value"
placeholder=
"请选择班级"
>
<el-option
v-for=
"item in options"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
>
</el-option>
</el-select>
<treeselect
ref=
"refSelect"
:multiple=
"multiple"
/>
</el-form-item>
</el-form>
<div
class=
"mark"
>
...
...
@@ -140,7 +141,7 @@
</el-dialog>
<!-- 详情对话框 -->
<el-dialog
:title=
"title"
:visible
.
sync=
"opens"
append-to-body
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"80px"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules
t
"
label-width=
"80px"
>
<el-form-item
label=
"题目"
prop=
"userId"
>
<editor
v-model=
"form.optionContent"
:min-height=
"192"
:iconType=
"['image']"
/>
</el-form-item>
...
...
@@ -167,13 +168,21 @@
</template>
<
script
>
import
{
listTestPaper
,
getTestPaper
,
delTestPaper
,
addTestPaper
,
updateTestPaper
}
from
"@/api/school-paper/testPaper"
;
import
{
listTestPaper
,
getTestPaper
,
delTestPaper
,
addTestPaper
,
updateTestPaper
,
questionType
}
from
"@/api/school-paper/testPaper"
;
import
Treeselect
from
"./components/treeselect.vue"
export
default
{
name
:
"TestPaper"
,
components
:
{
Treeselect
},
data
()
{
return
{
markSiz
:
0
,
rightAnswers
:
''
,
srcList
:
[],
url
:
''
,
category
:
[],
// 题库类别
options
:
[],
textarea
:
''
,
markSiz
:
1
,
value
:
''
,
// 按钮loading
buttonLoading
:
false
,
...
...
@@ -184,7 +193,7 @@ export default {
// 非单个禁用
single
:
true
,
// 非多个禁用
multiple
:
tru
e
,
multiple
:
fals
e
,
// 显示搜索条件
showSearch
:
true
,
// 总条数
...
...
@@ -195,7 +204,7 @@ export default {
title
:
""
,
// 是否显示弹出层
open
:
false
,
opens
:
tru
e
,
opens
:
fals
e
,
// 查询参数
queryParams
:
{
pageNum
:
1
,
...
...
@@ -207,34 +216,23 @@ export default {
totalPoints
:
undefined
,
status
:
undefined
,
},
rulest
:{},
// 表单参数
form
:
{},
// 表单校验
rules
:
{
id
:
[
{
required
:
true
,
message
:
"主键id不能为空"
,
trigger
:
"blur"
}
],
testName
:
[
{
required
:
true
,
message
:
"试卷名称不能为空"
,
trigger
:
"blur"
}
],
categoryId
:
[
{
required
:
true
,
message
:
"
类别id不能为空
"
,
trigger
:
"blur"
}
{
required
:
true
,
message
:
"
请选择题库类别
"
,
trigger
:
"blur"
}
],
phaseId
:
[
{
required
:
true
,
message
:
"
阶段id不能为空
"
,
trigger
:
"blur"
}
intensitys
:
[
{
required
:
true
,
message
:
"
请选择强度
"
,
trigger
:
"blur"
}
],
classId
:
[
{
required
:
true
,
message
:
"班级id不能为空"
,
trigger
:
"blur"
}
],
totalPoints
:
[
{
required
:
true
,
message
:
"总分:100,150不能为空"
,
trigger
:
"blur"
}
],
remark
:
[
{
required
:
true
,
message
:
"备注不能为空"
,
trigger
:
"blur"
}
],
status
:
[
{
required
:
true
,
message
:
"状态:0正常,1删除不能为空"
,
trigger
:
"change"
}
],
},
checkList
:
[{
html
:
""
,
...
...
@@ -281,8 +279,17 @@ export default {
},
created
()
{
this
.
getList
();
this
.
questionType
()
},
methods
:
{
//题库类别
questionType
()
{
questionType
({
pageSize
:
9999
,
pageNum
:
1
}).
then
((
res
)
=>
{
this
.
category
=
res
.
rows
// console.log(res,'this.questionBankList======')
})
},
clickMark
(
val
)
{
// if(val == 1){
this
.
markSiz
=
val
...
...
@@ -305,18 +312,10 @@ export default {
// 表单重置
reset
()
{
this
.
form
=
{
id
:
undefined
,
testName
:
undefined
,
categoryId
:
undefined
,
phaseId
:
undefined
,
intensitys
:
undefined
,
classId
:
undefined
,
totalPoints
:
undefined
,
remark
:
undefined
,
status
:
undefined
,
createTime
:
undefined
,
createBy
:
undefined
,
updateTime
:
undefined
,
updateBy
:
undefined
};
this
.
resetForm
(
"form"
);
},
...
...
@@ -325,6 +324,10 @@ export default {
this
.
queryParams
.
pageNum
=
1
;
this
.
getList
();
},
// 查看试卷
clickView
(){
this
.
opens
=
true
},
/** 重置按钮操作 */
resetQuery
()
{
this
.
resetForm
(
"queryForm"
);
...
...
@@ -334,13 +337,16 @@ export default {
handleSelectionChange
(
selection
)
{
this
.
ids
=
selection
.
map
(
item
=>
item
.
id
)
this
.
single
=
selection
.
length
!==
1
this
.
multiple
=
!
selection
.
length
//
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd
()
{
this
.
reset
();
this
.
open
=
true
;
this
.
title
=
"添加试卷"
;
setTimeout
(()
=>
{
this
.
$refs
[
'refSelect'
].
value
=
null
},
300
)
},
/** 修改按钮操作 */
handleUpdate
(
row
)
{
...
...
@@ -356,6 +362,14 @@ export default {
},
/** 提交按钮 */
submitForm
()
{
// this.form.lassId = this.$refs['refSelect'].value
this
.
$set
(
this
.
form
,
'classId'
,
this
.
$refs
[
'refSelect'
].
value
)
console
.
log
(
this
.
form
,
'this.form========'
)
if
(
this
.
markSiz
==
1
)
{
this
.
form
.
totalPoints
=
100
}
else
{
this
.
form
.
totalPoints
=
150
}
this
.
$refs
[
"form"
].
validate
(
valid
=>
{
if
(
valid
)
{
this
.
buttonLoading
=
true
;
...
...
src/views/system/role/index.vue
View file @
7c5063c1
...
...
@@ -127,13 +127,13 @@
@
click=
"handleUpdate(scope.row)"
v-hasPermi=
"['system:role:edit']"
>
修改
</el-button>
<el-button
<
!--
<
el-button
size=
"mini"
type=
"text"
icon=
"el-icon-delete"
@
click=
"handleDelete(scope.row)"
v-hasPermi=
"['system:role:remove']"
>
删除
</el-button>
>
删除
</el-button>
-->
<el-dropdown
size=
"mini"
@
command=
"(command) => handleCommand(command, scope.row)"
v-hasPermi=
"['system:role:edit']"
>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-d-arrow-right"
>
更多
</el-button>
<el-dropdown-menu
slot=
"dropdown"
>
...
...
src/views/system/user/index.vue
View file @
7c5063c1
This diff is collapsed.
Click to expand it.
vue.config.js
View file @
7c5063c1
...
...
@@ -35,8 +35,9 @@ module.exports = {
proxy
:
{
// detail: https://cli.vuejs.org/config/#devserver-proxy
[
process
.
env
.
VUE_APP_BASE_API
]:
{
// target: `https://farming.nyinhong.com/api`,
target
:
`http://192.168.0.195:8111/`
,
target
:
`http://farming.nyinhong.com/api`
,
// target: `http://192.168.0.195:8111/`,
// target: `http://192.168.0.165:8111/`,
changeOrigin
:
true
,
pathRewrite
:
{
[
'^'
+
process
.
env
.
VUE_APP_BASE_API
]:
''
...
...
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