Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
W
web
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
中汽测评-信息安全测评系统
web
Commits
d0f0ecf9
Commit
d0f0ecf9
authored
Dec 24, 2023
by
jiaxu.yan
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' into developer/yanjiaxu
parents
feff3990
382ef87f
Changes
20
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
2694 additions
and
724 deletions
+2694
-724
index.scss
src/assets/styles/index.scss
+2
-1
standard.vue
src/components/Page/standard.vue
+2
-7
page.js
src/mixins/page.js
+0
-1
task.js
src/router/modules/task.js
+12
-0
index.vue
src/views/processing/processed-review/index.vue
+9
-2
index.vue
src/views/processing/review-questionnaire/index.vue
+243
-340
index.vue
src/views/processing/unprocessed-review/index.vue
+8
-8
index.vue
src/views/review/already/index.vue
+282
-105
dialog.vue
src/views/review/wait/components/dialog.vue
+49
-23
index.vue
src/views/review/wait/index.vue
+370
-128
index.vue
src/views/setting/template/index.vue
+5
-3
index.vue
src/views/setting/useCaseLibrary/index.vue
+31
-7
index.vue
src/views/system/config/index.vue
+2
-1
index.vue
src/views/task/confirm-result/index.vue
+1
-0
index.vue
src/views/task/detail/index.vue
+2
-0
index.vue
src/views/task/edit/index.vue
+697
-0
index.vue
src/views/task/new/index.vue
+112
-39
index.vue
src/views/task/on/index.vue
+180
-18
index.vue
src/views/task/questionnaire/index.vue
+118
-41
index.vue
src/views/task/task-detail/index.vue
+569
-0
No files found.
src/assets/styles/index.scss
View file @
d0f0ecf9
...
...
@@ -283,8 +283,9 @@ aside {
.bottom-button
{
display
:
flex
;
width
:
100%
;
align-items
:
center
;
justify-content
:
flex-end
;
justify-content
:
center
;
}
.subtitle
{
...
...
src/components/Page/standard.vue
View file @
d0f0ecf9
...
...
@@ -36,28 +36,23 @@ export default {
// padding: 1.5rem 2rem;
font-size
:
16px
;
}
.box-card
{
min-height
:
80vh
;
// background-color: #000;
}
.tabList
{
}
.header
{
font-size
:
16px
;
font-weight
:
500
;
}
.page-title
{
padding
:
15px
;
// background-color: #f9f9f9;
// background-color: #999;
width
:
100%
;
padding
:
15px
15px
;
box-shadow
:
0
0
4px
#ccc
;
box-shadow
:
0
0
4px
#cccccc
;
}
::v-deep
{
.el-card__header
{
background-color
:
#f9f9f9
;
...
...
src/mixins/page.js
View file @
d0f0ecf9
...
...
@@ -3,7 +3,6 @@ export default {
data
()
{
return
{
listUrl
:
''
,
showSearch
:
true
,
queryParams
:
{
page
:
1
,
size
:
1
...
...
src/router/modules/task.js
View file @
d0f0ecf9
...
...
@@ -33,6 +33,18 @@ export default [
component
:
()
=>
import
(
'@/views/task/detail/index'
),
name
:
'任务详情'
,
meta
:
{
title
:
'已归档任务'
,
activeMenu
:
'/task/detail'
}
},
{
path
:
'edit'
,
component
:
()
=>
import
(
'@/views/task/edit/index'
),
name
:
'edit'
,
meta
:
{
title
:
'任务编辑'
,
activeMenu
:
'/task/edit'
}
},
{
path
:
'task-detail'
,
component
:
()
=>
import
(
'@/views/task/task-detail/index'
),
name
:
'task-detail'
,
meta
:
{
title
:
'任务详情'
,
activeMenu
:
'/task/task-detail'
}
}
]
}
...
...
src/views/processing/processed-review/index.vue
View file @
d0f0ecf9
...
...
@@ -100,7 +100,9 @@
<div
class=
"card-cell"
>
<div
class=
"cell-lable"
></div>
<div
class=
"cell-value"
>
<el-button
type=
"success"
>
查看审查问卷
</el-button>
<el-button
type=
"success"
@
click=
"handleDetail()"
>
查看审查问卷
</el-button
>
<el-button
type=
"success"
>
查看审查报告
</el-button>
<el-button
type=
"success"
>
查看企业留档文件
</el-button>
<el-button
type=
"success"
>
查看车企文件库
</el-button>
...
...
@@ -144,7 +146,12 @@ export default {
}
},
watch
:
{},
methods
:
{}
methods
:
{
/* 跳转到问卷详情*/
handleDetail
()
{
this
.
$router
.
push
({
path
:
'/processing/review-questionnaire'
})
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
...
...
src/views/processing/review-questionnaire/index.vue
View file @
d0f0ecf9
This diff is collapsed.
Click to expand it.
src/views/processing/unprocessed-review/index.vue
View file @
d0f0ecf9
...
...
@@ -267,13 +267,13 @@ export default {
</
script
>
<
style
lang=
"scss"
scoped
>
.card-cell
{
color
:
rgb
(
153
,
153
,
153
);
height
:
80px
;
display
:
flex
;
justify-content
:
space-around
;
align-items
:
flex-start
;
height
:
80px
;
color
:
rgb
(
153
153
153
);
flex-direction
:
column
;
flex-wrap
:
nowrap
;
align-items
:
flex-start
;
justify-content
:
space-around
;
}
.box-card
{
margin-bottom
:
15px
;
...
...
@@ -282,14 +282,14 @@ export default {
display
:
flex
;
justify-content
:
space-between
;
}
::v-deep
.el-link.is-underline
:after
{
content
:
''
;
::v-deep
.el-link.is-underline
::after
{
position
:
absolute
;
left
:
0
;
right
:
0
;
height
:
0
;
bottom
:
0
;
left
:
0
;
height
:
0
;
border-bottom
:
1px
solid
#1890ff
;
content
:
''
;
}
.cell-progress
{
width
:
200px
;
...
...
src/views/review/already/index.vue
View file @
d0f0ecf9
<
template
>
<page-standard>
<!--1-抬头标题-->
<div
class=
"title-style"
>
<div
class=
"title-content-style"
>
我的已审
</div>
</div>
<div
class=
"content-display"
>
<el-form
v-show=
"showSearch"
ref=
"queryForm"
...
...
@@ -7,14 +12,28 @@
size=
"small"
:inline=
"true"
>
<el-form-item
prop=
"deptNam
e"
>
<el-form-item
prop=
"configTyp
e"
>
<el-select
v-model=
"queryParams.configType"
placeholder=
"评审类型"
clearable
>
<el-option
v-for=
"dict in dict.type.review_type"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
/>
</el-select>
</el-form-item>
<el-form-item
prop=
"changjingType"
>
<el-select
v-model=
"queryParams.changjingType"
placeholder=
"场景分类"
clearable
>
<el-option
v-for=
"dict in dict.type.sys_
scene_type"
v-for=
"dict in dict.type.
scene_type"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
...
...
@@ -35,16 +54,14 @@
icon=
"el-icon-search"
size=
"mini"
@
click=
"handleQuery"
>
搜索
</el-button
>
>
查询
</el-button
>
<el-button
icon=
"el-icon-refresh"
size=
"mini"
@
click=
"resetQuery"
>
重置
</el-button
>
>
重置
</el-button
>
</el-form-item>
</el-form>
<el-table
v-if=
"refreshTable"
v-loading=
"loading"
style=
"width: 100%; min-height: 50vh"
border
...
...
@@ -56,26 +73,46 @@
<span>
{{
scope
.
$index
+
1
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"评审单编号"
sortable
align=
"center"
>
<el-table-column
label=
"评审单编号"
sortable
align=
"center"
prop=
"reviewNo"
>
</el-table-column>
<el-table-column
label=
"场景分类"
sortable
align=
"center"
>
<el-table-column
label=
"评审类型"
sortable
align=
"center"
prop=
"reviewType"
>
</el-table-column>
<el-table-column
label=
"场景内容"
align=
"center"
>
</el-table-column>
<el-table-column
label=
"评审人员"
align=
"center"
>
<
template
slot-scope=
"scope"
>
{{
scope
?
'xxx(主)、xxx、xxx、xxx、xxx'
:
'xxx(主)、xxx、xxx、xxx、xxx'
}}
</
template
>
<el-table-column
label=
"场景分类"
sortable
align=
"center"
prop=
"sceneCategory"
>
</el-table-column>
<el-table-column
label=
"等待时长"
align=
"center"
>
</el-table-column>
<el-table-column
label=
"发起时间"
align=
"left"
prop=
"createTime"
>
<
template
slot-scope=
"scope"
>
<span>
{{
parseTime
(
scope
.
row
.
createTime
)
}}
</span>
</
template
>
<el-table-column
label=
"场景内容"
align=
"center"
prop=
"sceneContent"
></el-table-column>
<el-table-column
label=
"评审人员"
align=
"center"
prop=
"reviewer"
>
</el-table-column>
<el-table-column
label=
"等待时长"
sortable
align=
"center"
prop=
"waitingTime"
></el-table-column>
<el-table-column
label=
"发起时间"
sortable
align=
"left"
prop=
"createTime"
></el-table-column>
<el-table-column
label=
"操作"
align=
"left"
...
...
@@ -86,15 +123,14 @@
v-hasPermi=
"['review:already:detail']"
size=
"mini"
type=
"primary"
icon=
"el-icon-edit"
plain
@
click=
"handleDetail(scope.row)"
>
查看
</el-button
>
>
查看
</el-button
>
</
template
>
</el-table-column>
</el-table>
<!--分页-->
<pagination
v-show=
"total > 0"
:total=
"total"
...
...
@@ -103,23 +139,89 @@
@
pagination=
"loadData"
>
</pagination>
</div>
<yan-dialog
:dialog-manger=
"dialogManger"
></yan-dialog>
</page-standard>
</template>
<
script
>
import
page
from
'@/mixins/page'
import
dialog
from
'./components/dialog.vue'
import
{
selectDictLabel
}
from
'@/utils/ruoyi'
export
default
{
components
:
{
'yan-dialog'
:
dialog
},
mixins
:
[
page
],
dicts
:
[
'
sys_
scene_type'
],
dicts
:
[
'
review_type'
,
'
scene_type'
],
data
()
{
return
{
queryParams
:
{
page
:
1
,
size
:
10
,
deptName
:
''
,
configType
:
''
,
changjingType
:
''
},
tableData
:
[],
tableData1
:
[
{
reviewNo
:
'20231209001'
,
reviewType
:
'新增场景'
,
sceneCategory
:
'车型审查'
,
sceneContent
:
'制度发布会音频文件'
,
reviewer
:
'赵晓东,盖献康,刘佳'
,
waitingTime
:
'1天12小时'
,
createTime
:
'2023-11-24 10:14:08'
},
{
reviewNo
:
'20231209002'
,
reviewType
:
'新增场景'
,
sceneCategory
:
'体系审查'
,
sceneContent
:
'TBOX-蜂窝以太网接口'
,
reviewer
:
'赵晓东,尚志伟,闫嘉旭'
,
waitingTime
:
'1天13小时'
,
createTime
:
'2023-11-22 13:56:34'
},
{
reviewNo
:
'20231209003'
,
reviewType
:
'修改场景'
,
sceneCategory
:
'体系审查'
,
sceneContent
:
'TBOX-车辆定位系统'
,
reviewer
:
'周朋,李宇涵,李亚涛'
,
waitingTime
:
'2天1小时'
,
createTime
:
'2023-11-13 17:26:54'
},
{
reviewNo
:
'20231209004'
,
reviewType
:
'修改场景'
,
sceneCategory
:
'车型审查'
,
sceneContent
:
'发布会车辆制动相关样品'
,
reviewer
:
'张鹏伟,李旭,张鑫'
,
waitingTime
:
'2天1小时'
,
createTime
:
'2023-11-12 14:43:22'
},
{
reviewNo
:
'20231209005'
,
reviewType
:
'删除场景'
,
sceneCategory
:
'车型审查'
,
sceneContent
:
'保障智能网联汽车时空数据存储文件'
,
reviewer
:
'孟同伟,孙钊涵,邵亮'
,
waitingTime
:
'3天3小时'
,
createTime
:
'2023-11-06 12:45:23'
},
{
reviewNo
:
'20231209001'
,
reviewType
:
'删除场景'
,
sceneCategory
:
'车型审查'
,
sceneContent
:
'智能网联汽车的访问控制-加密操作硬件'
,
reviewer
:
'李旭,孟同伟,张鑫'
,
waitingTime
:
'5天5小时'
,
createTime
:
'2023-11-02 08:12:56'
}
],
listUrl
:
'/system/role/list'
,
showSearch
:
true
,
tableData
:
[],
dialogManger
:
{
dialogVisible
:
false
,
refreshList
:
false
,
...
...
@@ -136,14 +238,89 @@ export default {
}
},
methods
:
{
/* 跳转审查详情*/
handleDetail
()
{
this
.
$router
.
push
({
path
:
'/review/view'
})
},
handleCancel
()
{
// const aaa = []
this
.
visible
=
false
/* 查询*/
handleQuery
()
{
this
.
queryParams
.
page
=
1
this
.
loadData
()
},
/* 重置*/
resetQuery
()
{
this
.
queryParams
.
page
=
1
this
.
queryParams
.
deptName
=
''
this
.
queryParams
.
configType
=
''
this
.
queryParams
.
changjingType
=
''
this
.
handleQuery
()
},
/* 假数据筛选*/
loadData
()
{
this
.
loading
=
true
setTimeout
(()
=>
{
/* 过滤器*/
this
.
tableData
=
this
.
tableData1
.
filter
(
item
=>
{
let
flag
=
true
if
(
this
.
queryParams
.
deptName
)
{
flag
&=
item
.
sceneContent
.
indexOf
(
this
.
queryParams
.
deptName
)
>
-
1
||
item
.
reviewNo
.
indexOf
(
this
.
queryParams
.
deptName
)
>
-
1
}
if
(
this
.
queryParams
.
configType
)
{
flag
&=
item
.
reviewType
===
selectDictLabel
(
this
.
dict
.
type
.
review_type
,
this
.
queryParams
.
configType
)
}
if
(
this
.
queryParams
.
changjingType
)
{
flag
&=
item
.
sceneCategory
===
selectDictLabel
(
this
.
dict
.
type
.
scene_type
,
this
.
queryParams
.
changjingType
)
}
return
flag
})
this
.
loading
=
false
},
1000
)
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
/* 标题样式 */
.title-style
{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
padding-right
:
2rem
;
width
:
100%
;
height
:
3
.5rem
;
background-color
:
#f9f9f9
;
}
/* 标题文字样式 */
.title-content-style
{
margin-left
:
1
.5rem
;
font-size
:
1rem
;
font-weight
:
bold
;
color
:
#666666
;
}
/*最外层的卡片样式去边距*/
::v-deep
.el-card__body
{
padding
:
unset
!
important
;
}
/* 主体内容样式 */
.content-display
{
display
:
flex
;
padding
:
1
.5rem
2rem
2rem
;
width
:
100%
;
flex-direction
:
column
;
}
</
style
>
src/views/review/wait/components/dialog.vue
View file @
d0f0ecf9
...
...
@@ -8,11 +8,11 @@
:before-close=
"handleClose"
>
<el-form
ref=
"form"
:model=
"model"
:rules=
"rules"
>
<el-form-item
label=
"细则分类"
prop=
"
status
"
>
<el-form-item
label=
"细则分类"
prop=
"
fenlei
"
>
<el-select
v-model=
"model.
status
"
v-model=
"model.
fenlei
"
style=
"width: 100%"
placeholder=
"请选择"
placeholder=
"请选择
细则分类
"
clearable
>
<el-option
...
...
@@ -23,47 +23,51 @@
/>
</el-select>
</el-form-item>
<el-form-item
label=
"标准章节"
prop=
"status"
>
<el-input
v-model=
"model.status"
placeholder=
"请输入"
clearable
/>
<el-form-item
label=
"标准章节"
prop=
"zhangjie"
>
<el-input
v-model=
"model.zhangjie"
placeholder=
"请输入标准章节"
clearable
/>
</el-form-item>
<el-form-item
label=
"标准要求"
prop=
"
status
"
>
<el-form-item
label=
"标准要求"
prop=
"
yaoqiu
"
>
<el-input
v-model=
"model.
status
"
placeholder=
"请输入"
v-model=
"model.
yaoqiu
"
placeholder=
"请输入
标准要求
"
type=
"textarea"
maxlength=
"100"
:autosize=
"
{ minRows: 4, maxRows: 4 }"
clearable
/>
</el-form-item>
<el-form-item
label=
"审查要点"
prop=
"
status
"
>
<el-form-item
label=
"审查要点"
prop=
"
yaodian
"
>
<el-input
v-model=
"model.
status
"
placeholder=
"请输入"
v-model=
"model.
yaodian
"
placeholder=
"请输入
审查要点
"
type=
"textarea"
maxlength=
"100"
:autosize=
"
{ minRows: 4, maxRows: 4 }"
clearable
/>
</el-form-item>
<el-form-item
label=
"审查细则"
prop=
"
status
"
>
<el-form-item
label=
"审查细则"
prop=
"
xize
"
>
<el-input
v-model=
"model.
status
"
placeholder=
"请输入"
v-model=
"model.
xize
"
placeholder=
"请输入
审查细则
"
type=
"textarea"
maxlength=
"100"
:autosize=
"
{ minRows: 4, maxRows: 4 }"
clearable
/>
</el-form-item>
<el-form-item
label=
"关联场景"
prop=
"
status
"
>
<el-button>
选择场景
</el-button>
<el-form-item
label=
"关联场景"
prop=
"
changjing
"
>
<el-button>
选择场景
</el-button>
</el-form-item>
</el-form>
<div
slot=
"footer"
>
<el-button
@
click=
"handleClose()"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"handleConfirm()"
>
保存
</el-button>
<el-button
@
click=
"handleClose()"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"handleConfirm()"
>
保存
</el-button>
</div>
</el-dialog>
</
template
>
...
...
@@ -82,11 +86,23 @@ export default {
return
{
model
:
{},
rules
:
{
status
:
[
{
required
:
true
,
message
:
'菜单名称不能为空'
,
trigger
:
'blur'
}
fenlei
:
[
{
required
:
true
,
message
:
'细则分类不能为空'
,
trigger
:
'blur'
}
],
zhangjie
:
[
{
required
:
true
,
message
:
'标准章节不能为空'
,
trigger
:
'blur'
}
],
yaoqiu
:
[
{
required
:
true
,
message
:
'标准要求不能为空'
,
trigger
:
'blur'
}
],
orderNum
:
[
{
required
:
true
,
message
:
'菜单顺序不能为空'
,
trigger
:
'blur'
}
yaodian
:
[
{
required
:
true
,
message
:
'审查要点不能为空'
,
trigger
:
'blur'
}
],
xize
:
[
{
required
:
true
,
message
:
'审查细则不能为空'
,
trigger
:
'blur'
}
],
changjing
:
[
{
required
:
true
,
message
:
'关联场景不能为空'
,
trigger
:
'blur'
}
],
path
:
[{
required
:
true
,
message
:
'路由地址不能为空'
,
trigger
:
'blur'
}]
}
...
...
@@ -105,7 +121,17 @@ export default {
handleConfirm
()
{
this
.
$refs
[
'form'
].
validate
(
valid
=>
{
if
(
valid
)
{
console
.
log
(
valid
)
this
.
$confirm
(
'确认提交吗?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
})
.
then
(()
=>
{
// 确认提交的逻辑
})
.
catch
(()
=>
{
// 取消提交的逻辑
})
}
})
}
...
...
src/views/review/wait/index.vue
View file @
d0f0ecf9
This diff is collapsed.
Click to expand it.
src/views/setting/template/index.vue
View file @
d0f0ecf9
...
...
@@ -38,16 +38,18 @@
<el-button
v-hasPermi=
"['setting:template:update']"
size=
"mini"
type=
"
text
"
type=
"
primary
"
icon=
"el-icon-edit"
plain
@
click=
"handleUpdate(scope.row)"
>
编辑
</el-button
修改
</el-button
>
<el-button
v-hasPermi=
"['setting:template:update']"
size=
"mini"
type=
"text"
type=
"primary"
plain
icon=
"el-icon-arrow-right"
@
click=
"viewTemplate(scope.row)"
>
...
...
src/views/setting/useCaseLibrary/index.vue
View file @
d0f0ecf9
...
...
@@ -87,7 +87,8 @@
<span>
{{
scope
.
$index
+
1
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"用例编号"
align=
"center"
prop=
"code"
/>
<el-table-column
label=
"检验场景"
align=
"center"
prop=
"code"
/>
<!-- <el-table-column label="用例编号" align="center" prop="code" />-->
<el-table-column
label=
"测试类型"
align=
"center"
prop=
"type"
/>
<el-table-column
label=
"工具"
align=
"center"
prop=
"tool"
/>
<el-table-column
label=
"对应输入"
align=
"center"
prop=
"corresponding"
/>
...
...
@@ -107,18 +108,18 @@
>
<
template
slot-scope=
"scope"
>
<el-button
v-hasPermi=
"['system:post:edit']"
size=
"mini"
type=
"
text
"
type=
"
primary
"
icon=
"el-icon-edit"
plain
@
click=
"handleUpdate(scope.row)"
>
修改
</el-button
>
<el-button
v-hasPermi=
"['system:post:remove']"
size=
"mini"
type=
"
text
"
type=
"
danger
"
icon=
"el-icon-delete"
plain
@
click=
"handleDelete(scope.row)"
>
删除
</el-button
>
...
...
@@ -147,7 +148,7 @@
clearable
class=
"select-width"
>
<el-option
:value=
"1"
>
type
</el-option>
<el-option
value=
"1"
label=
"type"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"工具"
prop=
"tool"
>
...
...
@@ -173,6 +174,29 @@
:rows=
"4"
/>
</el-form-item>
<el-form-item
label=
"风险等级"
prop=
"level"
>
<el-select
v-model=
"form.level"
placeholder=
"请选择风险等级"
clearable
class=
"select-width"
>
<el-option
value=
"1"
label=
"无风险"
></el-option>
<el-option
value=
"2"
label=
"低风险"
></el-option>
<el-option
value=
"3"
label=
"中风险"
></el-option>
<el-option
value=
"4"
label=
"高风险"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"漏洞危害"
prop=
"hazards"
>
<el-input
v-model=
"form.hazards"
type=
"textarea"
placeholder=
"请输入漏洞危害"
maxlength=
"100"
show-word-limit
:rows=
"4"
/>
</el-form-item>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"submitForm"
>
确 定
</el-button>
...
...
@@ -197,7 +221,7 @@ export default {
// 表格数据
postList
:
[
{
code
:
'
101
'
,
code
:
'
TBOX-蜂窝以太网接口
'
,
type
:
'系统服务漏扫'
,
tool
:
'CMW500+白卡、Nessus'
,
corresponding
:
...
...
src/views/system/config/index.vue
View file @
d0f0ecf9
...
...
@@ -291,7 +291,8 @@ export default {
pageSize
:
10
,
configName
:
undefined
,
configKey
:
undefined
,
configType
:
undefined
configType
:
undefined
,
changjingType
:
undefined
},
// 表单参数
form
:
{},
...
...
src/views/task/confirm-result/index.vue
View file @
d0f0ecf9
...
...
@@ -619,6 +619,7 @@ export default {
},
/* 返回跳转*/
goToProcessedReview
()
{
this
.
$modal
.
msgSuccess
(
'确认提交成功'
)
this
.
$router
.
push
(
'/task/on'
)
},
getRows
(
i
)
{
...
...
src/views/task/detail/index.vue
View file @
d0f0ecf9
...
...
@@ -236,10 +236,12 @@
</page-standard>
</template>
<
script
>
import
image
from
'@/assets/images/login-background.jpg'
export
default
{
data
()
{
return
{
formType
:
1
,
image
,
model
:
{},
loading
:
false
,
tableData
:
[],
...
...
src/views/task/edit/index.vue
0 → 100644
View file @
d0f0ecf9
This diff is collapsed.
Click to expand it.
src/views/task/new/index.vue
View file @
d0f0ecf9
...
...
@@ -129,9 +129,26 @@
/>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-form-item
label=
"保密等级"
prop=
"confidentialityLevel"
>
<el-select
v-model=
"model.confidentialityLevel"
placeholder=
"请选择"
clearable
style=
"width: 100%"
>
<el-option
v-for=
"(item, index) in dict.type.confidentiality_level"
:key=
"index"
:label=
"item.label"
:value=
"item.value"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<div
class=
"subtitle"
>
小组信息
</div>
<!-- :default-sort="
{ prop: 'createTime', order: 'descending' }" -->
<el-table
v-loading=
"loading"
style=
"width: 100%"
...
...
@@ -152,6 +169,7 @@
:key=
"index"
:label=
"item.name"
:value=
"item.name"
:disabled=
"item.disabled"
>
</el-option>
</el-select>
...
...
@@ -201,7 +219,7 @@
type=
"primary"
icon=
"el-icon-edit"
plain
@
click=
"handleSavePeople()"
@
click=
"handleSavePeople(
scope.row
)"
>
保存
</el-button>
...
...
@@ -239,25 +257,30 @@
</el-col>
<el-col
:span=
"8"
>
<el-form-item
label=
"生产企业"
prop=
"productionEnterprise"
>
<el-
inpu
t
<el-
selec
t
v-model=
"model.productionEnterprise"
placeholder=
"请
输入
"
placeholder=
"请
选择
"
clearable
/>
filterable
style=
"width: 100%"
>
<el-option
v-for=
"(item, index) in productionEnterpriseList"
:key=
"index"
:label=
"item.label"
:value=
"item.value"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-form-item
label=
"商标"
prop=
"trademark"
>
<el-upload
class=
"avatar-uploader"
action=
"https://jsonplaceholder.typicode.com/posts/"
:show-file-list=
"false"
:on-success=
"handleAvatarSuccess"
:before-upload=
"beforeAvatarUpload"
>
<img
v-if=
"imageUrl"
:src=
"imageUrl"
class=
"avatar"
/>
<i
v-else
class=
"el-icon-plus avatar-uploader-icon"
></i>
</el-upload>
<ImageUpload
v-model=
"model.trademark"
:is-show-tip=
"false"
:limit=
"1"
></ImageUpload>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
...
...
@@ -352,7 +375,7 @@
</template>
<
script
>
export
default
{
dicts
:
[
'sys_task_status'
,
'sys_pro'
],
dicts
:
[
'sys_task_status'
,
'sys_pro'
,
'confidentiality_level'
],
data
()
{
return
{
name
:
''
,
...
...
@@ -367,7 +390,7 @@ export default {
{
required
:
true
,
message
:
'任务名称不能为空'
,
trigger
:
'blur'
}
],
taskStatus
:
[
{
required
:
true
,
message
:
'任务状态不能为空'
,
trigger
:
'
blur
'
}
{
required
:
true
,
message
:
'任务状态不能为空'
,
trigger
:
'
change
'
}
],
productName
:
[
{
required
:
true
,
message
:
'产品名称不能为空'
,
trigger
:
'blur'
}
...
...
@@ -397,14 +420,17 @@ export default {
vehicleIdentificationNumber
:
[
{
required
:
true
,
message
:
'车辆识别码不能为空'
,
trigger
:
'blur'
}
],
confidentialityLevel
:
[
{
required
:
true
,
message
:
'保密等级不能为空'
,
trigger
:
'change'
}
],
sampleName
:
[
{
required
:
true
,
message
:
'样品名称不能为空'
,
trigger
:
'blur'
}
],
productionEnterprise
:
[
{
required
:
true
,
message
:
'生产企业不能为空'
,
trigger
:
'
blur
'
}
{
required
:
true
,
message
:
'生产企业不能为空'
,
trigger
:
'
change
'
}
],
trademark
:
[
{
required
:
true
,
message
:
'商标不能为空'
,
trigger
:
'
blur
'
}
{
required
:
true
,
message
:
'商标不能为空'
,
trigger
:
'
change
'
}
],
sampleSender
:
[
{
required
:
true
,
message
:
'送样者不能为空'
,
trigger
:
'blur'
}
...
...
@@ -422,25 +448,63 @@ export default {
{
required
:
true
,
message
:
'检验依据不能为空'
,
trigger
:
'blur'
}
],
inspectionItem
:
[
{
required
:
true
,
message
:
'检验项目不能为空'
,
trigger
:
'
blur
'
}
{
required
:
true
,
message
:
'检验项目不能为空'
,
trigger
:
'
change
'
}
]
},
userList
:
[
{
name
:
'小明'
,
role
:
'组长'
,
dept
:
'第一部门'
},
{
name
:
'小华'
,
role
:
'组员'
,
dept
:
'第一部门'
},
{
name
:
'小三'
,
role
:
'组员'
,
dept
:
'第一部门'
},
{
name
:
'小四'
,
role
:
'组员'
,
dept
:
'第一部门'
},
{
name
:
'小五'
,
role
:
'组员'
,
dept
:
'第一部门'
}
{
name
:
'老大'
,
role
:
'组长'
,
dept
:
'第一部门'
},
{
name
:
'老二'
,
role
:
'组员'
,
dept
:
'第一部门'
},
{
name
:
'老三'
,
role
:
'组员'
,
dept
:
'第一部门'
},
{
name
:
'老四'
,
role
:
'组员'
,
dept
:
'第一部门'
},
{
name
:
'老五'
,
role
:
'组员'
,
dept
:
'第一部门'
}
],
imageUrl
:
''
,
productionEnterpriseList
:
[
{
value
:
0
,
label
:
'车企一'
},
{
value
:
1
,
label
:
'车企二'
},
{
value
:
2
,
label
:
'车企三'
},
{
value
:
3
,
label
:
'车企四'
},
{
value
:
4
,
label
:
'车企五'
}
]
}
},
watch
:
{
'model.trademark'
:
{
handler
(
newValue
,
oldValue
)
{
if
(
newValue
)
{
console
.
log
(
'aaa'
)
this
.
$refs
.
form
.
clearValidate
(
'trademark'
)
}
else
{
this
.
$refs
.
form
.
validateField
(
'trademark'
)
}
}
}
},
methods
:
{
/**
* 小组信息修改
* @param row 行内信息
*/
handleUpdate
(
row
)
{
row
.
name
=
''
console
.
log
(
'修改'
,
row
)
// 取消禁用
this
.
userList
.
find
(
item
=>
item
.
name
===
row
.
name
).
disabled
=
false
this
.
tableData
.
find
(
item
=>
item
.
name
===
row
.
name
).
name
=
''
},
/**
* 小组信息删除
...
...
@@ -457,18 +521,22 @@ export default {
confirmButtonClass
:
'queryBtn'
}).
then
(()
=>
{
this
.
tableData
=
this
.
tableData
.
filter
(
item
=>
item
.
name
!==
row
.
name
)
// 把当前人取消禁用
this
.
userList
.
find
(
item
=>
item
.
name
===
row
.
name
).
disabled
=
false
})
},
/**
* 保存人员
* @param row
*/
handleSavePeople
()
{
console
.
log
(
'name'
,
this
.
name
)
handleSavePeople
(
row
)
{
const
obj
=
this
.
userList
.
find
(
item
=>
item
.
name
===
this
.
name
)
this
.
tableData
[
this
.
tableData
.
length
-
1
].
name
=
this
.
name
this
.
tableData
[
this
.
tableData
.
length
-
1
].
dept
=
obj
.
dept
this
.
tableData
[
this
.
tableData
.
length
-
1
].
role
=
obj
.
role
const
currentData
=
this
.
tableData
.
find
(
item
=>
item
.
name
===
row
.
name
)
currentData
.
name
=
this
.
name
currentData
.
dept
=
obj
.
dept
currentData
.
role
=
obj
.
role
// 已被选择的人做禁用
this
.
userList
.
find
(
item
=>
item
.
name
===
this
.
name
).
disabled
=
true
this
.
name
=
''
},
/**
...
...
@@ -483,11 +551,17 @@ export default {
* 添加小组成员点击按钮
*/
handleAddNumber
()
{
console
.
log
(
'
aaa
'
,
this
.
tableData
)
console
.
log
(
'
添加小组人
'
,
this
.
tableData
)
// 检验
if
(
this
.
tableData
.
length
>=
1
)
{
const
lastObj
=
this
.
tableData
[
this
.
tableData
.
length
-
1
]
if
(
lastObj
.
name
===
''
)
{
let
num
=
0
this
.
tableData
.
forEach
(
item
=>
{
if
(
item
.
name
===
''
)
{
num
++
}
})
if
(
lastObj
.
name
===
''
||
num
===
1
)
{
this
.
$message
.
error
(
'请填写完此成员信息'
)
return
}
else
{
...
...
@@ -496,10 +570,6 @@ export default {
}
else
{
this
.
tableData
.
push
({
name
:
''
})
}
// userList数组减去tableData数组相同的对象
this
.
userList
=
this
.
userList
.
filter
(
itemA
=>
!
this
.
tableData
.
some
(
itemB
=>
itemA
.
name
===
itemB
.
name
)
)
},
handleNameChange
(
value
)
{},
handleAvatarSuccess
(
res
,
file
)
{
...
...
@@ -521,7 +591,10 @@ export default {
handleAdd
()
{
this
.
$refs
.
form
.
validate
(
valid
=>
{
if
(
valid
)
{
console
.
log
(
'aaaa'
)
this
.
$modal
.
msgSuccess
(
'发布成功'
)
this
.
$router
.
push
({
path
:
'/task/on'
})
}
})
},
...
...
@@ -529,7 +602,7 @@ export default {
handleSave
()
{
this
.
$refs
.
form
.
validate
(
valid
=>
{
if
(
valid
)
{
console
.
log
(
'aaaa
'
)
this
.
$modal
.
msgSuccess
(
'暂存成功
'
)
}
})
}
...
...
src/views/task/on/index.vue
View file @
d0f0ecf9
<
template
>
<page-standard>
<div
slot=
"tab"
>
<div
class=
"mb10"
>
<el-radio-group
v-model=
"taskType"
>
<el-radio-button
label=
"0"
>
体系审查
</el-radio-button>
<el-radio-button
label=
"1"
>
车型测评
</el-radio-button>
<el-radio-group
v-model=
"queryParams.status"
@
change=
"handleQuery()"
>
<el-radio-button
:label=
"0"
>
全部任务
</el-radio-button>
<el-radio-button
v-for=
"dict in dict.type.sys_task_status"
:key=
"dict.value"
:label=
"dict.value"
>
{{
dict
.
label
}}
</el-radio-button>
</el-radio-group>
</div>
<el-form
v-show=
"showSearch"
ref=
"queryForm"
:model=
"queryParams"
size=
"small"
:inline=
"true"
>
<el-form-item
label=
"部门名称"
prop=
"deptName"
>
<el-input
v-model=
"queryParams.deptName"
placeholder=
"请输入部门名称"
clearable
@
keyup
.
enter
.
native=
"handleQuery"
/>
</el-form-item>
<el-form-item
label=
"状态"
prop=
"status"
>
<el-input
v-model=
"queryParams.deptName"
placeholder=
"请输入部门名称"
clearable
@
keyup
.
enter
.
native=
"handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
size=
"mini"
@
click=
"handleQuery"
>
搜索
</el-button
>
<el-button
icon=
"el-icon-refresh"
size=
"mini"
@
click=
"resetQuery"
>
重置
</el-button>
</el-form-item>
</el-form>
<el-table
v-if=
"refreshTable"
v-loading=
"loading"
style=
"width: 100%; min-height: 50vh"
border
:data=
"tableData"
>
<el-table-column
width=
"100"
label=
"序号"
align=
"center"
>
<template
slot-scope=
"scope"
>
<span>
{{
scope
.
$index
+
1
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"开始时间"
align=
"left"
prop=
"createTime"
>
<
template
slot-scope=
"{ row }"
>
<span>
{{
parseTime
(
row
.
createTime
)
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"任务名称"
align=
"left"
prop=
"createTime"
/>
<el-table-column
label=
"任务组长"
align=
"left"
prop=
"createTime"
/>
<el-table-column
label=
"任务状态"
align=
"left"
prop=
"status"
>
<
template
slot-scope=
"scope"
>
<div
class=
"task-status"
@
click=
"handleNotStarted(scope)"
>
<div
class=
"t0"
>
<div>
● 未开始
</div>
</div>
<systemReview
v-if=
"taskType === '0'"
/>
<vehicleModelEvaluation
v-if=
"taskType === '1'"
/>
<div
class=
"t1"
>
<div>
● 进行中
</div>
</div>
<div
class=
"t2"
>
<div>
● 暂停
</div>
</div>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"紧要程度"
align=
"left"
prop=
"createTime"
>
<
template
>
紧急
</
template
>
</el-table-column>
<el-table-column
label=
"审查问卷"
align=
"left"
prop=
"createTime"
>
<
template
slot-scope=
"scope"
>
<div
v-if=
"(scope.$index + 1) % 2 == 0"
class=
"task-status"
>
<div>
<div
@
click=
"handleCheckQuestionnaire"
>
确定结果
</div>
</div>
</div>
<div
v-else-if=
"(scope.$index + 1) % 2 == 1"
>
<a
@
click=
"handleWriteQuestionnaire(scope)"
>
填写问卷
</a>
</div>
<div
v-else
>
<a>
查看问卷
</a>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"完成进度"
width=
"200"
align=
"left"
prop=
"createTime"
>
<
template
slot-scope=
"{ row }"
>
<el-progress
:percentage=
"50"
@
click=
"handleProgress(row)"
></el-progress>
</
template
>
</el-table-column>
<el-table-column
label=
"操作"
align=
"left"
width=
"120"
class-name=
"small-padding fixed-width"
>
<
template
slot-scope=
"{ row }"
>
<div
class=
"button-list"
>
<div
class=
"button-item b1"
@
click=
"handleDetail(row)"
>
<i
class=
"iconfont icon-kaishi"
></i>
</div>
<div
class=
"button-item b2"
@
click=
"handleEdit(row)"
>
<i
class=
"iconfont icon-fenxiang"
></i>
</div>
<div
class=
"button-item b3"
>
<i
class=
"iconfont icon-feiji"
></i>
</div>
</div>
</
template
>
</el-table-column>
</el-table>
<pagination
v-show=
"total > 0"
:total=
"total"
:page
.
sync=
"queryParams.page"
:limit
.
sync=
"queryParams.size"
@
pagination=
"loadData"
/>
</page-standard>
</template>
<
script
>
import
systemReview
from
'./components/systemReview
'
import
vehicleModelEvaluation
from
'./components/vehicleModelEvaluation
'
import
page
from
'@/mixins/page
'
import
{
parseTime
}
from
'../../../utils/ruoyi
'
export
default
{
name
:
'Index'
,
components
:
{
systemReview
,
vehicleModelEvaluation
},
mixins
:
[
page
],
dicts
:
[
'sys_task_status'
],
data
()
{
return
{
taskType
:
'0'
listUrl
:
'/system/role/list'
,
showSearch
:
true
,
tableData
:
[],
queryParams
:
{
status
:
0
}
}
},
methods
:
{
parseTime
,
/* 跳转到任务详情*/
handleDetail
()
{
this
.
$router
.
push
({
path
:
'/task/task-detail'
})
},
methods
:
{}
/* 跳转到任务编辑*/
handleEdit
()
{
this
.
$router
.
push
({
path
:
'/task/edit'
})
},
handleAdd
()
{},
handleDelete
()
{},
handleUpdate
()
{},
// 点击填写问卷按钮回调函数
handleWriteQuestionnaire
(
scope
)
{
this
.
$router
.
push
({
path
:
'/task/questionnaire'
})
},
// 点击确认审查结果
handleCheckQuestionnaire
()
{
this
.
$router
.
push
({
path
:
'/task/confirm-result'
})
},
handleCeshi
(
row
)
{},
handleProgress
(
row
)
{},
handleNotStarted
(
scope
)
{}
}
}
</
script
>
src/views/task/questionnaire/index.vue
View file @
d0f0ecf9
...
...
@@ -18,10 +18,17 @@
<el-row>
<!-- 步骤条 -->
<el-col
:span=
"2"
>
<div
class=
"left-content"
style=
"height: 300px"
>
<div
class=
"left-content"
style=
"height: 300px; width: 110px"
>
<div
v-for=
"(item, index) in circleList"
:key=
"index"
>
<div
:class=
"
{
'exclamation-point': item.problem === true,
'no-exclamation-point': item.problem === false
}"
>
<div
v-show=
"item.problem"
class=
"exclamation"
>
!
</div>
</div>
<div
v-for=
"(item, index) in circleList"
:key=
"index"
:class=
"
{
'select-circle': item.checked === true,
'no-select-circle': item.checked === false
...
...
@@ -30,6 +37,10 @@
>
<span
class=
"inner-text"
>
{{
item
.
id
}}
</span>
</div>
<span
v-show=
"item.tick"
class=
"tick-class"
>
<i
class=
"el-icon-check"
/>
</span>
</div>
</div>
</el-col>
<!-- 内容 -->
...
...
@@ -57,20 +68,22 @@
>
车辆制造商是否能够提供/展示汽车信息安全管理制度文件,制度文件应定义信息安全政策以及信息安全规则和流程,信息安全政策应致力于管理与车辆制造商活动相关的信息安全风险。
</span
>
</el-form-item>
<el-form-item
label=
"符合场景"
>
<el-button
type=
"warning"
@
click=
"handleAddScene"
>
新增场景
<el-form-item
:label=
"'符合场景'"
>
<template
slot=
"label"
>
<span>
符合场景
</span>
<el-button
class=
"label-btn"
size=
"mini"
type=
"warning"
@
click=
"handleAddScene"
>
<span>
新增场景
</span>
</el-button>
</
template
>
<div
class=
"match-scene"
>
<el-checkbox
v-model=
"checked"
>
1.管理制度发布会红头文件
</el-checkbox>
<el-checkbox
v-model=
"checkedTwo"
>
2.管理制度正式发布会议纪要
</el-checkbox>
<el-checkbox
v-model=
"checkedThree"
>
3.专用系统正式发布流程或记录
</el-checkbox>
<div>
1.管理制度发布会红头文件
</div>
<div>
2.管理制度正式发布会议纪要
</div>
<div>
3.专用系统正式发布流程或记录
</div>
</div>
</el-form-item>
<el-form-item
label=
"审查结果"
>
...
...
@@ -94,7 +107,7 @@
<div>
章节条目或范围
<el-input
v-model=
"addData.
fileName
"
v-model=
"addData.
chapterEntry
"
placeholder=
"请输入具体章节条目或范围"
/>
</div>
...
...
@@ -216,22 +229,26 @@
</el-card>
</el-form-item>
<el-form-item
label=
"条目填写人"
>
<span>
赵
四
</span>
<span>
赵
小刚
</span>
</el-form-item>
</el-form>
</el-col>
</el-row>
</div>
<div
class=
"bottom-btn"
>
<el-button
type=
"warning"
>
保存当前条目
</el-button>
<el-button
type=
"primary"
>
提交问卷
</el-button>
<el-button
type=
"warning"
@
click=
"saveCurrentItem"
>
保存当前条目
</el-button>
<el-button
type=
"primary"
@
click=
"submitQuestionnaire"
>
提交问卷
</el-button
>
</div>
</el-card>
<!-- 新增场景对话框 -->
<el-dialog
title=
"新增场景对话框"
:visible
.
sync=
"senceDialogVisible"
width=
"3
0
%"
width=
"3
5
%"
append-to-body
:close-on-click-modal=
"false"
:close-on-press-escape=
"false"
...
...
@@ -256,6 +273,7 @@
<el-select
v-model=
"sceneForm.reviewType"
placeholder=
"请选择评审类型"
style=
"width: 100%"
>
<el-option
v-for=
"item in reviewTypeOptions"
...
...
@@ -269,6 +287,7 @@
<el-select
v-model=
"sceneForm.sceneClassification"
placeholder=
"请选择评审类型"
style=
"width: 100%"
>
<el-option
v-for=
"item in reviewTypeOptions"
...
...
@@ -319,16 +338,16 @@ export default {
form
:
{},
checked
:
false
,
circleList
:
[
{
id
:
1
,
checked
:
true
},
{
id
:
2
,
checked
:
false
},
{
id
:
3
,
checked
:
false
},
{
id
:
4
,
checked
:
false
},
{
id
:
5
,
checked
:
false
},
{
id
:
6
,
checked
:
false
},
{
id
:
7
,
checked
:
false
},
{
id
:
8
,
checked
:
false
},
{
id
:
9
,
checked
:
false
},
{
id
:
10
,
checked
:
false
}
{
id
:
1
,
checked
:
false
,
problem
:
false
,
tick
:
true
},
{
id
:
2
,
checked
:
true
,
problem
:
false
,
tick
:
false
},
{
id
:
3
,
checked
:
false
,
problem
:
true
,
tick
:
false
},
{
id
:
4
,
checked
:
false
,
problem
:
false
,
tick
:
false
},
{
id
:
5
,
checked
:
false
,
problem
:
false
,
tick
:
false
},
{
id
:
6
,
checked
:
false
,
problem
:
false
,
tick
:
false
},
{
id
:
7
,
checked
:
false
,
problem
:
false
,
tick
:
false
},
{
id
:
8
,
checked
:
false
,
problem
:
false
,
tick
:
false
},
{
id
:
9
,
checked
:
false
,
problem
:
false
,
tick
:
false
},
{
id
:
10
,
checked
:
false
,
problem
:
false
,
tick
:
false
}
],
fileRules
:
{
enterpriseName
:
[
...
...
@@ -372,7 +391,8 @@ export default {
checkedThree
:
false
,
radio
:
1
,
addData
:
{
fileName
:
''
fileName
:
''
,
chapterEntry
:
''
},
fileData
:
{
enterpriseName
:
''
,
...
...
@@ -384,6 +404,9 @@ export default {
reviewTypeOptions
:
[]
}
},
created
()
{
console
.
log
(
'人'
,
this
.
$store
.
state
.
user
.
name
)
},
methods
:
{
/**
* 点击左侧圆圈触发的回调函数
...
...
@@ -404,6 +427,14 @@ export default {
this
.
senceDialogVisible
=
true
console
.
log
(
'a'
)
},
// 保存当前条目
saveCurrentItem
()
{
this
.
$modal
.
msgSuccess
(
'保存当前条目成功'
)
},
submitQuestionnaire
()
{
this
.
$modal
.
msgSuccess
(
'提交问卷成功'
)
this
.
$router
.
back
()
},
// 新增场景对话框关闭时触发的回调函数
handleSceneClose
()
{
this
.
senceDialogVisible
=
false
...
...
@@ -455,6 +486,43 @@ export default {
}
}
.left-content
{
.tick-class
{
float
:
right
;
position
:
relative
;
top
:
-1
.8em
;
left
:
-1em
;
i
{
color
:
#25c173
;
}
}
.no-exclamation-point
{
float
:
left
;
width
:
1px
;
height
:
1px
;
padding-left
:
30px
;
}
.exclamation-point
{
float
:
left
;
margin-top
:
6px
;
margin-right
:
10px
;
position
:
relative
;
width
:
20px
;
height
:
20px
;
border
:
2px
solid
#f56c6c
;
border-radius
:
50%
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
font-size
:
24px
;
font-weight
:
bold
;
margin-bottom
:
5px
;
.exclamation
{
position
:
absolute
;
font-size
:
12px
;
color
:
#f56c6c
;
font-weight
:
bold
;
}
}
.no-select-circle
{
cursor
:
pointer
;
width
:
35px
;
...
...
@@ -528,10 +596,11 @@ export default {
}
}
.file-prompt
{
margin
:
10px
0
10px
0
;
margin
:
0
0
10px
0
;
padding
:
10px
;
background-color
:
#ebf5ff
;
div
{
font-size
:
12px
;
padding-left
:
10px
;
i
{
color
:
#409eff
;
...
...
@@ -539,4 +608,12 @@ export default {
}
}
}
.label-btn
{
width
:
60px
;
span
{
font-size
:
12px
;
position
:
relative
;
right
:
9px
;
}
}
</
style
>
src/views/task/task-detail/index.vue
0 → 100644
View file @
d0f0ecf9
This diff is collapsed.
Click to expand it.
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