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
7535a9a7
Commit
7535a9a7
authored
Jan 09, 2024
by
jiaxu.yan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat(填写调查问卷): 填写调查问卷对接接口
parent
4d14fce1
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
407 additions
and
216 deletions
+407
-216
task.js
src/api/task/task.js
+27
-0
index.vue
src/views/processing/processed-review/index.vue
+1
-1
index.vue
src/views/processing/unprocessed-review/index.vue
+63
-22
senceDialog.vue
...ws/processing/write-check-form/components/senceDialog.vue
+132
-0
index.vue
src/views/processing/write-check-form/index.vue
+151
-168
index.vue
src/views/task/detail/index.vue
+17
-1
index.vue
src/views/task/task-detail/index.vue
+16
-24
No files found.
src/api/task/task.js
0 → 100644
View file @
7535a9a7
import
request
from
'@/utils/request'
// 获取任务详情
export
function
taskDetail
(
data
)
{
return
request
({
url
:
'/system/review/task/view'
,
method
:
'post'
,
data
})
}
export
function
reviewDetailsSubmit
(
data
)
{
return
request
({
url
:
'/review/details/result/save'
,
method
:
'post'
,
data
})
}
// 提交审查问卷
export
function
taskSubmit
(
data
)
{
return
request
({
url
:
'/system/review/task/submit'
,
method
:
'post'
,
data
})
}
\ No newline at end of file
src/views/processing/processed-review/index.vue
View file @
7535a9a7
...
...
@@ -138,7 +138,7 @@ export default {
data
()
{
return
{
pageType
:
'1'
,
listUrl
:
'/
finishTasklist
'
,
listUrl
:
'/
system/review/task/findInFinish
'
,
showSearch
:
true
,
tableData
:
[]
}
...
...
src/views/processing/unprocessed-review/index.vue
View file @
7535a9a7
...
...
@@ -70,26 +70,26 @@
开始时间
</div>
<div
class=
"cell-value"
>
{{
item
.
startTime
?
item
.
startTime
:
'---'
}}
{{
item
.
taskBeginTime
?
parseTime
(
item
.
taskBeginTime
)
:
'---'
}}
</div>
</div>
<div
class=
"card-cell"
>
<div
class=
"cell-lable"
>
任务编号
</div>
<div
class=
"cell-value"
>
{{
item
.
missionNo
?
item
.
mission
No
:
'---'
}}
{{
item
.
taskNo
?
item
.
task
No
:
'---'
}}
</div>
</div>
<div
class=
"card-cell"
>
<div
class=
"cell-lable"
>
任务名称
</div>
<div
class=
"cell-value"
>
{{
item
.
tit
?
item
.
tit
:
'---'
}}
{{
item
.
name
?
item
.
name
:
'---'
}}
</div>
</div>
<div
class=
"card-cell"
>
<div
class=
"cell-lable"
>
任务组长
</div>
<div
class=
"cell-value"
>
<i
class=
"el-icon-user"
></i>
{{
item
.
owener
?
item
.
owen
er
:
'---'
}}
{{
item
.
leader
?
item
.
lead
er
:
'---'
}}
</div>
</div>
<div
v-if=
"!isSysReview"
class=
"card-cell"
>
...
...
@@ -154,9 +154,9 @@
</div>
<div
v-if=
"isSysReview"
class=
"card-cell"
>
<div
class=
"cell-lable"
>
任务状态
</div>
<div
v-if=
"item.
costTime === 0
"
class=
"cell-value"
>
● 未开始
</div>
<div
v-
else
class=
"cell-value yellow"
>
● 已耗时(
{{
item
.
costTime
}}
小时)
<div
v-if=
"item.
taskStatus === 'NEW'
"
class=
"cell-value"
>
● 未开始
</div>
<div
v-
if=
"item.taskStatus === 'PENDING'"
class=
"cell-value yellow"
>
● 已耗时(
{{
getHourDiff
(
item
.
taskBeginTime
)
}}
小时)
</div>
</div>
<div
v-if=
"isSysReview"
class=
"card-cell"
>
...
...
@@ -165,16 +165,13 @@
<el-link
v-if=
"item.progress === 0"
type=
"primary"
@
click=
"handleReviewForm"
@
click=
"handleReviewForm
(item.id)
"
>
查看检查表单
</el-link
>
<el-link
v-else-if=
"item.progress
<
90
"
type=
"primary"
@
click=
"handleReviewQuestionnaire"
>
填写审查问卷
</el-link
>
<el-link
v-else
type=
"primary"
@
click=
"handleConfirmFindings"
><br
/>
<el-link
type=
"primary"
@
click=
"handleReviewQuestionnaire(item.id)"
>
填写检查表单
</el-link
><br
/>
<el-link
type=
"primary"
@
click=
"handleConfirmFindings(item.id)"
>
确认审查结果
</el-link
>
</div>
...
...
@@ -195,6 +192,7 @@
icon=
"el-icon-arrow-right"
circle
title=
"任务详情"
@
click=
"goDetail(item.id)"
></el-button>
<el-button
type=
"warning"
...
...
@@ -228,11 +226,12 @@
@
click=
"handleFileLibrary(item)"
></el-button>
<el-button
v-if=
"item.
progress === 0
"
v-if=
"item.
taskStatus === 'NEW'
"
type=
"danger"
icon=
"el-icon-video-play"
circle
title=
"开始"
@
click=
"startTask(item)"
></el-button>
</div>
</div>
...
...
@@ -255,6 +254,7 @@
<
script
>
import
page
from
'@/mixins/page'
import
taskDialog
from
'./components/dialog'
import
request
from
'@/utils/request'
export
default
{
dicts
:
[
'sys_job_status'
,
'sys_scene_type'
,
'task_type'
],
components
:
{
taskDialog
},
...
...
@@ -273,7 +273,7 @@ export default {
},
dialogVisible
:
false
,
pageType
:
'1'
,
// 代办任务类型 1-体系审查 其他-车型测评
listUrl
:
'/
tasklist
'
,
listUrl
:
'/
system/review/task/findInProcess
'
,
showSearch
:
true
,
tableData
:
[]
}
...
...
@@ -307,6 +307,24 @@ export default {
path
:
'/processing/fileLibrary'
})
},
startTask
(
item
)
{
request
({
url
:
'/system/review/task/start'
,
method
:
'post'
,
data
:
{
taskId
:
item
.
id
}
}).
then
(
res
=>
{
console
.
log
(
res
)
this
.
loadData
()
})
},
goDetail
(
id
)
{
this
.
$router
.
push
({
path
:
'/task/task-detail?id='
+
id
})
},
closeDialog
()
{
this
.
dialogVisible
=
false
},
...
...
@@ -320,9 +338,9 @@ export default {
path
:
'/processing/reviewReport'
})
},
handleReviewQuestionnaire
()
{
handleReviewQuestionnaire
(
id
)
{
this
.
$router
.
push
({
path
:
'/processing/write-check-form
'
path
:
'/processing/write-check-form
?id='
+
id
})
},
handleReviewForm
()
{
...
...
@@ -337,9 +355,9 @@ export default {
path
:
'/processing/review-form'
})
},
handleConfirmFindings
()
{
handleConfirmFindings
(
id
)
{
this
.
$router
.
push
({
path
:
'/processing/confirm-result
'
path
:
'/processing/confirm-result
?id='
+
id
})
},
handleTaskContent
(
msg
)
{
...
...
@@ -348,6 +366,19 @@ export default {
path
:
'/processing/vehicle-type'
})
}
},
getHourDiff
(
time
)
{
// 获取当前时间
var
now
=
new
Date
()
// 设置目标时间(这里为2021年9月30日)
var
targetTime
=
new
Date
(
time
)
// 注意月份从0开始计数,所以8表示九月
// 计算时间差(单位为毫秒)
var
timeDiff
=
Math
.
abs
(
targetTime
-
now
)
// 将时间差转换成小时
return
Math
.
floor
(
timeDiff
/
(
60
*
60
*
1000
))
}
}
}
...
...
@@ -363,19 +394,24 @@ export default {
flex-wrap
:
nowrap
;
min-width
:
111px
;
}
.status-multiple-cell
{
width
:
150px
;
}
.option-cell
{
width
:
240px
;
}
.box-card
{
margin-bottom
:
15px
;
font-size
:
14px
;
::v-deep
.el-card__body
{
display
:
flex
;
justify-content
:
space-between
;
}
::v-deep
.el-link.is-underline
::after
{
position
:
absolute
;
right
:
0
;
...
...
@@ -385,20 +421,25 @@ export default {
border-bottom
:
1px
solid
#1890ff
;
content
:
''
;
}
.cell-progress
{
width
:
200px
;
}
.cell-lable
{
color
:
#515a6e
;
font-size
:
13px
;
}
.cell-value
{
font-size
:
14px
;
color
:
#606266
;
}
.cell-value.yellow
{
color
:
#fea623
;
}
.cell-value.green
{
color
:
#19be6b
;
}
...
...
src/views/processing/write-check-form/components/senceDialog.vue
0 → 100644
View file @
7535a9a7
<
template
>
<el-dialog
title=
"新增场景对话框"
:visible
.
sync=
"dialogManger.dialogVisible"
width=
"35%"
append-to-body
:close-on-click-modal=
"false"
:close-on-press-escape=
"false"
:before-close=
"handleSceneClose"
>
<div
class=
"file-prompt"
>
<div>
<i
class=
"el-icon-info"
/>
新增场景,需要组织评审,评审通过后新增场景自动进入场景库。
</div>
</div>
<el-form
ref=
"sceneForm"
:model=
"sceneForm"
:rules=
"sceneRules"
label-width=
"80px"
class=
"scene-form"
>
<el-form-item
label=
"评审类型"
prop=
"reviewType"
>
<!-- 下拉框 -->
<el-select
v-model=
"sceneForm.reviewType"
placeholder=
"请选择评审类型"
style=
"width: 100%"
>
<el-option
v-for=
"item in reviewTypeOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"场景分类"
prop=
"sceneClassification"
>
<el-select
v-model=
"sceneForm.sceneClassification"
placeholder=
"请选择评审类型"
style=
"width: 100%"
>
<el-option
v-for=
"item in reviewTypeOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"场景内容"
prop=
"sceneContent"
>
<el-input
v-model=
"sceneForm.sceneContent"
maxlength=
"100"
show-word-limit
type=
"textarea"
/>
</el-form-item>
<el-form-item
label=
"评审人员"
prop=
"assessor"
>
<div>
组长-xxx
</div>
<div>
组员-xxx、xxx、xxx
</div>
</el-form-item>
<el-form-item
label=
"备注信息"
prop=
"remark"
>
<el-input
v-model=
"sceneForm.remark"
maxlength=
"100"
show-word-limit
type=
"textarea"
/>
</el-form-item>
</el-form>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"handleSceneClose()"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"handleSaveNewScene()"
>
确 定
</el-button>
</span>
</el-dialog>
</
template
>
<
script
>
export
default
{
dicts
:
[
'file_status'
],
props
:
{
dialogManger
:
{
type
:
Object
,
default
()
{
return
{
dialogVisible
:
false
}
}
}
},
data
()
{
return
{
sceneForm
:
{},
sceneRules
:
{
reviewType
:
[
{
required
:
true
,
message
:
'请选择评审类型'
,
trigger
:
'change'
}
],
sceneClassification
:
[
{
required
:
true
,
message
:
'请选择场景分类'
,
trigger
:
'change'
}
],
sceneContent
:
[
{
required
:
true
,
message
:
'请输入场景内容'
,
trigger
:
'blur'
}
]
},
reviewTypeOptions
:
[]
}
},
methods
:
{
// 新增场景对话框关闭时触发的回调函数
handleSceneClose
()
{
this
.
dialogManger
.
dialogVisible
=
false
this
.
$refs
.
sceneForm
.
resetFields
()
},
/**
* 保存新场景
*/
handleSaveNewScene
()
{
// vue表单校验vue表单校验
this
.
$refs
.
sceneForm
.
validate
(
valid
=>
{
if
(
valid
)
{
this
.
handleSceneClose
()
}
})
}
}
}
</
script
>
src/views/processing/write-check-form/index.vue
View file @
7535a9a7
...
...
@@ -2,7 +2,7 @@
<div
class=
"app-container"
>
<el-card
class=
"custom-card"
>
<div
slot=
"header"
class=
"clearfix"
>
<span>
填写检查表单(所属任务:
广汽丰田体系审查
)
</span>
<span>
填写检查表单(所属任务:
{{
model
.
systemReviewTask
.
name
}}
)
</span>
<el-button
icon=
"el-icon-back"
class=
"back-btn"
@
click=
"handleBack"
>
返回
</el-button>
...
...
@@ -10,7 +10,11 @@
</div>
<div
class=
"main-content"
>
<div
class=
"prompt-message"
>
<span>
问卷填写情况:共10条审查细则,已完成1条,未完成9条
</span>
<span
>
问卷填写情况:共
{{
model
.
detailsList
.
length
}}
条审查细则,已完成
{{
readNumber
}}
条,未完成
{{
model
.
detailsList
.
length
-
readNumber
}}
条
</span
>
<!--
<span
class=
"center-text"
>
有 3 条场景变更待处理
</span>
-->
<el-checkbox
v-model=
"checked"
>
仅显示未完成页面
</el-checkbox>
</div>
...
...
@@ -18,25 +22,28 @@
<!-- 步骤条 -->
<el-col
:span=
"2"
>
<div
class=
"left-content"
style=
"height: 300px; width: 110px"
>
<div
v-for=
"(item, index) in
circle
List"
:key=
"index"
>
<div
v-for=
"(item, index) in
model.details
List"
:key=
"index"
>
<div
:class=
"
{
'exclamation-point':
item.problem ===
true,
'no-exclamation-point':
item.problem ===
false
'exclamation-point': true,
'no-exclamation-point': false
}"
>
<div
v-show=
"
item.problem
"
class=
"exclamation"
>
!
</div>
<div
v-show=
"
true
"
class=
"exclamation"
>
!
</div>
</div>
<div
class=
"no-select-circle"
:class=
"
{
'select-circle': item.checked === true,
'no-select-circle': item.checked === false
'select-circle': index === activeModel
}"
@click="handleCircle(i
tem
)"
@click="handleCircle(i
ndex
)"
>
<span
class=
"inner-text"
>
{{
i
tem
.
id
}}
</span>
<span
class=
"inner-text"
>
{{
i
ndex
+
1
}}
</span>
</div>
<span
v-show=
"item.tick"
class=
"tick-class"
>
<span
v-show=
"item.result && item.result.passed !== null"
class=
"tick-class"
>
<i
class=
"el-icon-check"
/>
</span>
</div>
...
...
@@ -48,24 +55,20 @@
ref=
"form"
class=
"right-content"
:model=
"form"
:rules=
"rules"
label-width=
"90px"
>
<el-form-item
label=
"标准章节"
>
<span>
5.1
</span>
<span>
{{
taskModel
.
chapter
}}
</span>
</el-form-item>
<el-form-item
label=
"标准要求"
>
<span
>
车辆制造商应具备车辆全生命周期的汽车信息安全管理体系。
注:车辆全生命周期包括车辆的开发阶段、生产阶段及后生产阶段。
</span
>
<span>
{{
taskModel
.
standardText
}}
</span>
</el-form-item>
<el-form-item
label=
"审查要点"
>
<span>
车辆制造商是否建立汽车信息安全管理制度。
</span>
<span>
{{
taskModel
.
reviewKeypointText
}}
</span>
</el-form-item>
<el-form-item
label=
"审查细则"
>
<span
>
车辆制造商是否能够提供/展示汽车信息安全管理制度文件,制度文件应定义信息安全政策以及信息安全规则和流程,信息安全政策应致力于管理与车辆制造商活动相关的信息安全风险。
</span
>
<span>
{{
taskModel
.
text
}}
</span>
</el-form-item>
<el-form-item
:label=
"'符合场景'"
>
<template
slot=
"label"
>
...
...
@@ -80,18 +83,21 @@
</el-button>
</
template
>
<div
class=
"match-scene"
>
<div>
1.管理制度发布会红头文件
</div>
<div>
2.管理制度正式发布会议纪要
</div>
<div>
3.专用系统正式发布流程或记录
</div>
<div
v-for=
"(scene, key) in taskModel.reviewSceneList"
:key=
"key"
>
{{ scene.text }}
</div>
</div>
</el-form-item>
<el-form-item
label=
"审查结果"
>
<el-radio-group
v-model=
"
radio
"
>
<el-form-item
label=
"审查结果"
prop=
"passed"
>
<el-radio-group
v-model=
"
form.passed
"
>
<el-radio
:label=
"1"
>
符合
</el-radio>
<el-radio
:label=
"
2
"
>
不符合
</el-radio>
<el-radio
:label=
"
0
"
>
不符合
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
label=
"相关记录"
>
<
!-- <
el-form-item label="相关记录">
<el-row>
<el-col :span="8">
<div>
...
...
@@ -112,14 +118,14 @@
</div>
</el-col>
</el-row>
<!-- 文件第一次提示 -->
//文件第一次提示
<div class="file-prompt">
<div>
<i class="el-icon-info"></i
>该文件第一次出现,请维护如下相关信息
</div>
</div>
<!-- 车企文件信息 -->
//车企文件信息
<el-card>
<div slot="header" class="clearfix">
<span>车企文件信息</span>
...
...
@@ -226,128 +232,56 @@
>保存车企文件</el-button
>
</el-card>
</el-form-item>
</el-form-item>
-->
<el-form-item
label=
"条目填写人"
>
<span>
赵小刚
</span>
<span>
{{ name }}
</span>
</el-form-item>
</el-form>
</el-col>
</el-row>
</div>
<div
class=
"bottom-btn"
>
<el-button
type=
"warning"
@
click=
"s
aveCurrentItem
"
>
<el-button
type=
"warning"
@
click=
"s
ubmitQuestionnaire(1)
"
>
保存当前边界
</el-button>
<el-button
type=
"primary"
@
click=
"submitQuestionnaire"
<el-button
type=
"primary"
@
click=
"submitQuestionnaire
(2)
"
>
提交表格
</el-button
>
</div>
</el-card>
<!-- 新增场景对话框 -->
<el-dialog
title=
"新增场景对话框"
:visible
.
sync=
"senceDialogVisible"
width=
"35%"
append-to-body
:close-on-click-modal=
"false"
:close-on-press-escape=
"false"
:before-close=
"handleSceneClose"
>
<div
class=
"file-prompt"
>
<div>
<i
class=
"el-icon-info"
/>
新增场景,需要组织评审,评审通过后新增场景自动进入场景库。
</div>
</div>
<el-form
ref=
"sceneForm"
:model=
"sceneForm"
:rules=
"sceneRules"
label-width=
"80px"
class=
"scene-form"
>
<el-form-item
label=
"评审类型"
prop=
"reviewType"
>
<!-- 下拉框 -->
<el-select
v-model=
"sceneForm.reviewType"
placeholder=
"请选择评审类型"
style=
"width: 100%"
>
<el-option
v-for=
"item in reviewTypeOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"场景分类"
prop=
"sceneClassification"
>
<el-select
v-model=
"sceneForm.sceneClassification"
placeholder=
"请选择评审类型"
style=
"width: 100%"
>
<el-option
v-for=
"item in reviewTypeOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"场景内容"
prop=
"sceneContent"
>
<el-input
v-model=
"sceneForm.sceneContent"
maxlength=
"100"
show-word-limit
type=
"textarea"
/>
</el-form-item>
<el-form-item
label=
"评审人员"
prop=
"assessor"
>
<div>
组长-xxx
</div>
<div>
组员-xxx、xxx、xxx
</div>
</el-form-item>
<el-form-item
label=
"备注信息"
prop=
"remark"
>
<el-input
v-model=
"sceneForm.remark"
maxlength=
"100"
show-word-limit
type=
"textarea"
/>
</el-form-item>
</el-form>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"senceDialogVisible = false"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"handleSaveNewScene"
>
确 定
</el-button>
</span>
</el-dialog>
<sence-dialog
:dialog-manger=
"senceManger"
></sence-dialog>
</div>
</template>
<
script
>
import
{
taskDetail
,
reviewDetailsSubmit
}
from
'@/api/task/task'
import
senceDialog
from
'./components/senceDialog.vue'
import
{
mapGetters
}
from
'vuex'
export
default
{
dicts
:
[
'file_status'
],
components
:
{
'sence-dialog'
:
senceDialog
},
data
()
{
return
{
sceneForm
:
{},
senceDialogVisible
:
false
,
form
:
{},
senceManger
:
{
dialogVisible
:
false
},
form
:
{
passed
:
null
},
model
:
{
systemReviewTask
:
{},
reviewSceneChangeTasks
:
{},
detailsList
:
[]
},
taskModel
:
{},
activeModel
:
0
,
checked
:
false
,
circleList
:
[
{
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
}
],
rules
:
{
passed
:
[{
required
:
true
,
message
:
'请选择审查结果'
,
trigger
:
'blur'
}]
},
fileRules
:
{
enterpriseName
:
[
{
required
:
true
,
message
:
'请输入企业名称'
,
trigger
:
'blur'
}
...
...
@@ -374,17 +308,6 @@ export default {
{
required
:
true
,
message
:
'请选择文件照片'
,
trigger
:
'change'
}
]
},
sceneRules
:
{
reviewType
:
[
{
required
:
true
,
message
:
'请选择评审类型'
,
trigger
:
'change'
}
],
sceneClassification
:
[
{
required
:
true
,
message
:
'请选择场景分类'
,
trigger
:
'change'
}
],
sceneContent
:
[
{
required
:
true
,
message
:
'请输入场景内容'
,
trigger
:
'blur'
}
]
},
// TODO 删除
checkedTwo
:
false
,
checkedThree
:
false
,
...
...
@@ -400,22 +323,59 @@ export default {
storageLocation
:
''
},
value1
:
''
,
reviewTypeOptions
:
[]
taskId
:
''
}
},
created
()
{
console
.
log
(
'人'
,
this
.
$store
.
state
.
user
.
name
)
computed
:
{
readNumber
()
{
let
num
=
0
this
.
model
.
detailsList
.
map
(
i
=>
{
if
(
i
.
result
&&
i
.
result
.
passed
!==
null
)
{
num
++
}
})
return
num
},
...
mapGetters
([
'name'
])
},
mounted
()
{
this
.
taskId
=
this
.
$route
.
query
.
id
this
.
getTask
()
},
methods
:
{
getTask
()
{
taskDetail
({
taskId
:
this
.
taskId
}).
then
(
res
=>
{
if
(
res
.
code
===
200
)
{
this
.
model
=
res
.
data
this
.
handleCircle
(
0
)
}
})
},
/**
* 点击左侧圆圈触发的回调函数
* @param item 圆圈对象
*/
handleCircle
(
item
)
{
this
.
circleList
.
forEach
(
item
=>
{
item
.
checked
=
false
})
item
.
checked
=
true
handleCircle
(
index
)
{
this
.
activeModel
=
index
this
.
taskModel
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
model
.
detailsList
[
index
]))
if
(
this
.
taskModel
.
result
)
{
this
.
form
=
{
passed
:
this
.
taskModel
.
result
.
passed
,
reviewDetailsId
:
this
.
taskModel
.
id
,
taskId
:
this
.
taskId
}
}
else
{
this
.
form
=
{
passed
:
null
,
reviewDetailsId
:
this
.
taskModel
.
id
,
taskId
:
this
.
taskId
}
}
},
// 返回
handleBack
()
{
...
...
@@ -423,33 +383,30 @@ export default {
},
// 新增场景
handleAddScene
()
{
this
.
senceDialogVisible
=
true
console
.
log
(
'a'
)
this
.
senceManger
.
dialogVisible
=
true
},
// 保存当前条目
saveCurrentItem
()
{
this
.
$modal
.
msgSuccess
(
'保存当前边界成功'
)
},
submitQuestionnaire
()
{
this
.
$modal
.
msgSuccess
(
'提交表格成功'
)
this
.
$router
.
back
()
},
// 新增场景对话框关闭时触发的回调函数
handleSceneClose
()
{
this
.
senceDialogVisible
=
false
this
.
$refs
.
sceneForm
.
resetFields
()
},
handleSaveFile
()
{
// vue表单校验
this
.
$refs
.
fileRef
.
validate
(
valid
=>
{
submitQuestionnaire
(
type
)
{
this
.
$refs
.
form
.
validate
(
valid
=>
{
if
(
valid
)
{
console
.
log
(
'ddd'
)
reviewDetailsSubmit
(
this
.
form
).
then
(
res
=>
{
if
(
res
.
code
===
200
)
{
if
(
!
this
.
model
.
detailsList
[
this
.
activeModel
].
result
)
{
this
.
model
.
detailsList
[
this
.
activeModel
].
result
=
{
passed
:
0
}
}
this
.
model
.
detailsList
[
this
.
activeModel
].
result
.
passed
=
this
.
form
.
passed
this
.
$modal
.
msgSuccess
(
'提交表格成功'
)
}
else
{
this
.
$modal
.
msgError
(
res
.
msg
)
}
})
}
})
},
handleSave
NewScen
e
()
{
// vue表单校验
vue表单校验
this
.
$refs
.
sceneForm
.
validate
(
valid
=>
{
handleSave
Fil
e
()
{
// vue表单校验
this
.
$refs
.
fileRef
.
validate
(
valid
=>
{
if
(
valid
)
{
console
.
log
(
'ddd'
)
}
...
...
@@ -462,44 +419,54 @@ export default {
<
style
scoped
lang=
"scss"
>
.app-container
{
padding
:
20px
;
.custom-card
{
::v-deep
.el-card__header
{
background-color
:
#f9f9f9
;
}
.back-btn
{
margin-left
:
10px
;
float
:
right
;
}
.other-btn
{
float
:
right
;
}
.main-content
{
min-height
:
550px
;
.prompt-message
{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
margin-bottom
:
40px
;
.center-text
{
color
:
#f56c6c
;
}
}
.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
;
...
...
@@ -515,6 +482,7 @@ export default {
font-size
:
24px
;
font-weight
:
bold
;
margin-bottom
:
5px
;
.exclamation
{
position
:
absolute
;
font-size
:
12px
;
...
...
@@ -522,6 +490,7 @@ export default {
font-weight
:
bold
;
}
}
.no-select-circle
{
cursor
:
pointer
;
width
:
35px
;
...
...
@@ -535,6 +504,7 @@ export default {
font-weight
:
bold
;
position
:
relative
;
margin-bottom
:
5px
;
.inner-text
{
position
:
absolute
;
font-size
:
16px
;
...
...
@@ -542,6 +512,7 @@ export default {
color
:
#c0c0c0
;
}
}
.select-circle
{
cursor
:
pointer
;
width
:
35px
;
...
...
@@ -555,6 +526,7 @@ export default {
font-weight
:
bold
;
position
:
relative
;
margin-bottom
:
5px
;
.inner-text
{
position
:
absolute
;
font-size
:
16px
;
...
...
@@ -563,23 +535,28 @@ export default {
}
}
}
.right-content
{
.file-form-class
{
::v-deep
.el-form-item
{
margin-bottom
:
20px
;
}
}
.match-scene
{
display
:
flex
;
flex-direction
:
column
;
background-color
:
#fafafa
;
padding
:
5px
;
}
.file-prompt
{
margin
:
10px
0
10px
0
;
background-color
:
#ebf5ff
;
div
{
padding-left
:
10px
;
i
{
color
:
#409eff
;
margin-right
:
10px
;
...
...
@@ -588,27 +565,33 @@ export default {
}
}
}
.bottom-btn
{
display
:
flex
;
justify-content
:
center
;
}
}
}
.file-prompt
{
margin
:
0
0
10px
0
;
padding
:
10px
;
background-color
:
#ebf5ff
;
div
{
font-size
:
12px
;
padding-left
:
10px
;
i
{
color
:
#409eff
;
margin-right
:
10px
;
}
}
}
.label-btn
{
width
:
60px
;
span
{
font-size
:
12px
;
position
:
relative
;
...
...
src/views/task/detail/index.vue
View file @
7535a9a7
...
...
@@ -29,7 +29,7 @@
<el-row
:gutter=
"20"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"任务编码"
prop=
"status"
>
<el-input
v-model=
"model.
status
"
placeholder=
"请输入"
clearable
/>
<el-input
v-model=
"model.
taskNo
"
placeholder=
"请输入"
clearable
/>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
...
...
@@ -237,6 +237,7 @@
</template>
<
script
>
import
image
from
'@/assets/images/login-background.jpg'
import
request
from
'@/utils/request'
export
default
{
data
()
{
return
{
...
...
@@ -256,8 +257,23 @@ export default {
}
}
},
mounted
()
{
this
.
getTask
(
this
.
$route
.
query
.
id
)
console
.
log
(
this
.
$route
.
query
.
id
)
},
dicts
:
[
'sys_task_status'
,
'sys_pro'
],
methods
:
{
getTask
(
id
)
{
request
({
url
:
'/system/review/task/view'
,
method
:
'post'
,
data
:
{
taskId
:
id
}
}).
then
(
res
=>
{
console
.
log
(
res
)
})
},
handleAvatarSuccess
(
res
,
file
)
{
this
.
imageUrl
=
URL
.
createObjectURL
(
file
.
raw
)
},
...
...
src/views/task/task-detail/index.vue
View file @
7535a9a7
...
...
@@ -314,6 +314,7 @@
</page-standard>
</template>
<
script
>
import
{
taskDetail
}
from
'@/api/task/task'
export
default
{
dicts
:
[
'sys_task_status'
,
'sys_pro'
],
data
()
{
...
...
@@ -323,30 +324,8 @@ export default {
formType
:
1
,
/* 表单对象*/
model
:
{
no
:
'12345'
,
status
:
'资产审查任务'
,
taskStatus
:
'1'
,
pname
:
'广汽丰田'
,
carType
:
'油车'
,
weituo
:
'广汽丰田汽车有限公司'
,
weituoAddress
:
'广州市南沙区黄阁镇市南大道8号'
,
phonenumber
:
'15320986678'
,
youzheng
:
'233546'
,
type
:
'小型车'
,
shibie
:
'ZGH6788'
,
yangpin
:
'全新第四代汉兰达'
,
shengchan
:
'广汽丰田汽车有限公司'
,
songyangzhe
:
'赵平'
,
songyangdata
:
'2023-08-05'
,
shangbiao
:
'ZGH6788'
,
shuliang
:
'200'
,
riqi
:
'2022-12-23'
,
yijv
:
'ZGH6788'
,
jianyan
:
'广汽丰田汽车有限公司'
,
qianfa
:
'2023-11-02'
,
bianhao
:
'91440101717852200L'
,
jielun
:
'广汽丰田汽车有限公司(GAC TOYOTA),成立于2004年9月1日,由广汽集团股份有限公司与日本丰田汽车公司各出资50%组建,合作期限30年,注册资本16.92亿元。 公司位于中国极具活力的珠三角的几何中心--广州南沙区,占地面积187万平方米,建筑面积40万平方米,起步产能20万辆/年。共有员工5500余人,其中大专及其以上学历者达24.9%,平均年龄为26岁。'
systemReviewTask
:
{},
reviewSceneChangeTasks
:
{}
},
loading
:
false
,
/* 表格对象*/
...
...
@@ -463,7 +442,20 @@ export default {
]
}
},
mounted
()
{
this
.
getTask
(
this
.
$route
.
query
.
id
)
console
.
log
(
this
.
$route
.
query
.
id
)
},
methods
:
{
getTask
(
id
)
{
taskDetail
({
taskId
:
id
}).
then
(
res
=>
{
if
(
res
.
code
===
200
)
{
this
.
model
=
res
.
data
}
})
},
/**
* 小组信息修改
* @param row 行内信息
...
...
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