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
b37bb587
Commit
b37bb587
authored
Jan 30, 2024
by
jiaxu.yan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat(任务处理模块): 体系审查 页面修改
parent
3efc7c32
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
942 additions
and
592 deletions
+942
-592
.eslintrc.js
.eslintrc.js
+1
-0
index.scss
src/assets/styles/index.scss
+1
-1
process.scss
src/assets/styles/process.scss
+51
-0
standard.svg
src/assets/svg/standard.svg
+6
-0
collapse-item.vue
src/components/Collapse/collapse-item.vue
+125
-0
collapse-transition.js
src/components/Collapse/collapse-transition.js
+117
-0
collapse.vue
src/components/Collapse/collapse.vue
+73
-0
emitter.js
src/components/Collapse/emitter.js
+33
-0
index.vue
src/views/processing/carReview/review-form/index.vue
+87
-94
index.vue
src/views/processing/systemReview/confirm-result/index.vue
+145
-144
index.vue
src/views/processing/systemReview/review-form/index.vue
+122
-161
index.vue
src/views/processing/systemReview/source-record/index.vue
+115
-187
index.vue
src/views/processing/systemReview/write-check-form/index.vue
+22
-2
index.vue
src/views/processing/unprocessed-review/index.vue
+44
-3
No files found.
.eslintrc.js
View file @
b37bb587
...
@@ -29,6 +29,7 @@ module.exports = {
...
@@ -29,6 +29,7 @@ module.exports = {
"vue/multiline-html-element-content-newline"
:
"off"
,
"vue/multiline-html-element-content-newline"
:
"off"
,
"vue/name-property-casing"
:
[
"error"
,
"PascalCase"
],
"vue/name-property-casing"
:
[
"error"
,
"PascalCase"
],
"vue/no-v-html"
:
"off"
,
"vue/no-v-html"
:
"off"
,
"vue/no-v-for-template-key"
:
"off"
,
'accessor-pairs'
:
2
,
'accessor-pairs'
:
2
,
'arrow-spacing'
:
[
2
,
{
'arrow-spacing'
:
[
2
,
{
'before'
:
true
,
'before'
:
true
,
...
...
src/assets/styles/index.scss
View file @
b37bb587
...
@@ -6,7 +6,7 @@
...
@@ -6,7 +6,7 @@
@import
'./btn.scss'
;
@import
'./btn.scss'
;
@import
'./process.scss'
;
@import
'./process.scss'
;
@import
url(//at.alicdn.com/t/c/font_4370984_
m7nz5mfgt
6.css)
;
@import
url(//at.alicdn.com/t/c/font_4370984_
hp4hi2sk2a
6.css)
;
body
{
body
{
height
:
100%
;
height
:
100%
;
...
...
src/assets/styles/process.scss
View file @
b37bb587
...
@@ -25,3 +25,54 @@
...
@@ -25,3 +25,54 @@
margin-bottom
:
50px
;
margin-bottom
:
50px
;
/* 调整按钮距离底部的距离 */
/* 调整按钮距离底部的距离 */
}
}
/* 任务编号,名称,单位样式 */
.task
{
margin-top
:
20px
;
margin-bottom
:
40px
;
.task-label
{
font-weight
:
bold
;
color
:
rgb
(
153
,
153
,
153
);
font-size
:
18px
;
}
.task-content
{
color
:
rgb
(
153
,
153
,
153
);
font-size
:
18px
;
}
}
.standard-box
{
display
:
flex
;
justify-content
:
flex-start
;
align-items
:
center
;
.standard
{
color
:
#2b85e4
;
margin
:
0
10px
;
}
}
.message-list
{
display
:flex
;
flex-wrap
:wrap
;
display
:
-
webkit-flex
;
/* Safari */
padding
:
1
.5rem
4rem
1rem
4rem
;
.message-box
{
flex
:
1
;
display
:
flex
;
//
align-items
:
center
;
justify-content
:
flex-start
;
.icon
{
font-size
:
60px
;
}
.message-detail
{
display
:
flex
;
margin-left
:
10px
;
align-items
:flex-start
;
justify-content
:
flex-start
;
flex-flow
:
column
;
}
}
}
src/assets/svg/standard.svg
0 → 100644
View file @
b37bb587
<?xml version="1.0" encoding="utf-8"?>
<svg
version=
"1.1"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
width=
"350px"
height=
"30px"
xmlns=
"http://www.w3.org/2000/svg"
>
<g>
<path
d=
"M 12 0 C 12 0 8.99999999999999 0.128571428571429 8.99999999999999 0.128571428571429 C 8.99999999999999 0.128571428571429 0 15 0 15 C 0 15 8.99999999999999 29.8714285714286 8.99999999999999 29.8714285714286 C 8.99999999999999 29.8714285714286 12 30 12 30 C 12 30 350 30 350 30 C 350 30 350 0 350 0 C 350 0 12 0 12 0 Z "
fill-rule=
"nonzero"
fill=
"#fec03d"
stroke=
"none"
/>
</g>
</svg>
\ No newline at end of file
src/components/Collapse/collapse-item.vue
0 → 100644
View file @
b37bb587
<
template
>
<div
class=
"el-collapse-item"
:class=
"
{ 'is-active': isActive, 'is-disabled': disabled }"
>
<div
role=
"tab"
:aria-expanded=
"isActive"
:aria-controls=
"`el-collapse-content-$
{id}`"
:aria-describedby="`el-collapse-content-${id}`"
>
<div
class=
"el-collapse-item__header"
@
click=
"handleHeaderClick"
role=
"button"
:id=
"`el-collapse-head-$
{id}`"
:tabindex="disabled ? undefined : 0"
@keyup.space.enter.stop="handleEnterClick"
:class="{
focusing: focusing,
'is-active': isActive
}"
@focus="handleFocus"
@blur="focusing = false"
>
<i
class=
"iconfont"
:class=
"isActive ? 'icon-xiangxiazhankai-xianxingyuankuang' : 'icon-xiangshangshouqi-xianxingyuankuang'"
>
</i>
<slot
name=
"title"
></slot>
</div>
</div>
<collapse-transition>
<div
class=
"el-collapse-item__wrap"
v-show=
"isActive"
role=
"tabpanel"
:aria-hidden=
"!isActive"
:aria-labelledby=
"`el-collapse-head-$
{id}`"
:id="`el-collapse-content-${id}`"
>
<div
class=
"el-collapse-item__content"
>
<slot></slot>
</div>
</div>
</collapse-transition>
</div>
</
template
>
<
script
>
import
CollapseTransition
from
'./collapse-transition'
import
Emitter
from
'./emitter'
export
default
{
name
:
'CollapseItem'
,
componentName
:
'CollapseItem'
,
mixins
:
[
Emitter
],
components
:
{
CollapseTransition
},
data
()
{
return
{
contentWrapStyle
:
{
height
:
'auto'
,
display
:
'block'
},
contentHeight
:
0
,
focusing
:
false
,
isClick
:
false
,
id
:
Math
.
floor
(
Math
.
random
()
*
10000
)
}
},
inject
:
[
'collapse'
],
props
:
{
title
:
String
,
name
:
{
type
:
[
String
,
Number
],
default
()
{
return
this
.
_uid
}
},
disabled
:
Boolean
},
computed
:
{
isActive
()
{
return
this
.
collapse
.
activeNames
.
indexOf
(
this
.
name
)
>
-
1
}
},
methods
:
{
handleFocus
()
{
setTimeout
(()
=>
{
if
(
!
this
.
isClick
)
{
this
.
focusing
=
true
}
else
{
this
.
isClick
=
false
}
},
50
)
},
handleHeaderClick
()
{
if
(
this
.
disabled
)
return
this
.
dispatch
(
'Collapse'
,
'item-click'
,
this
)
this
.
focusing
=
false
this
.
isClick
=
true
},
handleEnterClick
()
{
this
.
dispatch
(
'Collapse'
,
'item-click'
,
this
)
}
}
}
</
script
>
<
style
scoped
>
.el-collapse-item__header
{
background-color
:
#f0f7ff
!important
;
padding
:
0
15px
!important
;
}
.el-collapse-item__content
{
padding-left
:
40px
!important
;
}
</
style
>
src/components/Collapse/collapse-transition.js
0 → 100644
View file @
b37bb587
/* istanbul ignore next */
function
addClass
(
el
,
cls
)
{
if
(
!
el
)
return
;
var
curClass
=
el
.
className
;
var
classes
=
(
cls
||
''
).
split
(
' '
);
for
(
var
i
=
0
,
j
=
classes
.
length
;
i
<
j
;
i
++
)
{
var
clsName
=
classes
[
i
];
if
(
!
clsName
)
continue
;
if
(
el
.
classList
)
{
el
.
classList
.
add
(
clsName
);
}
else
if
(
!
hasClass
(
el
,
clsName
))
{
curClass
+=
' '
+
clsName
;
}
}
if
(
!
el
.
classList
)
{
el
.
setAttribute
(
'class'
,
curClass
);
}
};
/* istanbul ignore next */
function
removeClass
(
el
,
cls
)
{
if
(
!
el
||
!
cls
)
return
;
var
classes
=
cls
.
split
(
' '
);
var
curClass
=
' '
+
el
.
className
+
' '
;
for
(
var
i
=
0
,
j
=
classes
.
length
;
i
<
j
;
i
++
)
{
var
clsName
=
classes
[
i
];
if
(
!
clsName
)
continue
;
if
(
el
.
classList
)
{
el
.
classList
.
remove
(
clsName
);
}
else
if
(
hasClass
(
el
,
clsName
))
{
curClass
=
curClass
.
replace
(
' '
+
clsName
+
' '
,
' '
);
}
}
if
(
!
el
.
classList
)
{
el
.
setAttribute
(
'class'
,
trim
(
curClass
));
}
};
class
Transition
{
beforeEnter
(
el
)
{
addClass
(
el
,
'collapse-transition'
);
if
(
!
el
.
dataset
)
el
.
dataset
=
{};
el
.
dataset
.
oldPaddingTop
=
el
.
style
.
paddingTop
;
el
.
dataset
.
oldPaddingBottom
=
el
.
style
.
paddingBottom
;
el
.
style
.
height
=
'0'
;
el
.
style
.
paddingTop
=
0
;
el
.
style
.
paddingBottom
=
0
;
}
enter
(
el
)
{
el
.
dataset
.
oldOverflow
=
el
.
style
.
overflow
;
if
(
el
.
scrollHeight
!==
0
)
{
el
.
style
.
height
=
el
.
scrollHeight
+
'px'
;
el
.
style
.
paddingTop
=
el
.
dataset
.
oldPaddingTop
;
el
.
style
.
paddingBottom
=
el
.
dataset
.
oldPaddingBottom
;
}
else
{
el
.
style
.
height
=
''
;
el
.
style
.
paddingTop
=
el
.
dataset
.
oldPaddingTop
;
el
.
style
.
paddingBottom
=
el
.
dataset
.
oldPaddingBottom
;
}
el
.
style
.
overflow
=
'hidden'
;
}
afterEnter
(
el
)
{
// for safari: remove class then reset height is necessary
removeClass
(
el
,
'collapse-transition'
);
el
.
style
.
height
=
''
;
el
.
style
.
overflow
=
el
.
dataset
.
oldOverflow
;
}
beforeLeave
(
el
)
{
if
(
!
el
.
dataset
)
el
.
dataset
=
{};
el
.
dataset
.
oldPaddingTop
=
el
.
style
.
paddingTop
;
el
.
dataset
.
oldPaddingBottom
=
el
.
style
.
paddingBottom
;
el
.
dataset
.
oldOverflow
=
el
.
style
.
overflow
;
el
.
style
.
height
=
el
.
scrollHeight
+
'px'
;
el
.
style
.
overflow
=
'hidden'
;
}
leave
(
el
)
{
if
(
el
.
scrollHeight
!==
0
)
{
// for safari: add class after set height, or it will jump to zero height suddenly, weired
addClass
(
el
,
'collapse-transition'
);
el
.
style
.
height
=
0
;
el
.
style
.
paddingTop
=
0
;
el
.
style
.
paddingBottom
=
0
;
}
}
afterLeave
(
el
)
{
removeClass
(
el
,
'collapse-transition'
);
el
.
style
.
height
=
''
;
el
.
style
.
overflow
=
el
.
dataset
.
oldOverflow
;
el
.
style
.
paddingTop
=
el
.
dataset
.
oldPaddingTop
;
el
.
style
.
paddingBottom
=
el
.
dataset
.
oldPaddingBottom
;
}
}
export
default
{
name
:
'ElCollapseTransition'
,
functional
:
true
,
render
(
h
,
{
children
})
{
const
data
=
{
on
:
new
Transition
()
};
return
h
(
'transition'
,
data
,
children
);
}
};
src/components/Collapse/collapse.vue
0 → 100644
View file @
b37bb587
<
template
>
<div
class=
"el-collapse"
role=
"tablist"
aria-multiselectable=
"true"
>
<slot></slot>
</div>
</
template
>
<
script
>
export
default
{
name
:
'Collapse'
,
componentName
:
'Collapse'
,
props
:
{
accordion
:
Boolean
,
value
:
{
type
:
[
Array
,
String
,
Number
],
default
()
{
return
[];
}
}
},
data
()
{
return
{
activeNames
:
[].
concat
(
this
.
value
)
};
},
provide
()
{
return
{
collapse
:
this
};
},
watch
:
{
value
(
value
)
{
this
.
activeNames
=
[].
concat
(
value
);
}
},
methods
:
{
setActiveNames
(
activeNames
)
{
activeNames
=
[].
concat
(
activeNames
);
let
value
=
this
.
accordion
?
activeNames
[
0
]
:
activeNames
;
this
.
activeNames
=
activeNames
;
this
.
$emit
(
'input'
,
value
);
this
.
$emit
(
'change'
,
value
);
},
handleItemClick
(
item
)
{
if
(
this
.
accordion
)
{
this
.
setActiveNames
(
(
this
.
activeNames
[
0
]
||
this
.
activeNames
[
0
]
===
0
)
&&
this
.
activeNames
[
0
]
===
item
.
name
?
''
:
item
.
name
);
}
else
{
let
activeNames
=
this
.
activeNames
.
slice
(
0
);
let
index
=
activeNames
.
indexOf
(
item
.
name
);
if
(
index
>
-
1
)
{
activeNames
.
splice
(
index
,
1
);
}
else
{
activeNames
.
push
(
item
.
name
);
}
this
.
setActiveNames
(
activeNames
);
}
}
},
created
()
{
this
.
$on
(
'item-click'
,
this
.
handleItemClick
);
}
};
</
script
>
\ No newline at end of file
src/components/Collapse/emitter.js
0 → 100644
View file @
b37bb587
function
broadcast
(
componentName
,
eventName
,
params
)
{
this
.
$children
.
forEach
(
child
=>
{
var
name
=
child
.
$options
.
componentName
;
if
(
name
===
componentName
)
{
child
.
$emit
.
apply
(
child
,
[
eventName
].
concat
(
params
));
}
else
{
broadcast
.
apply
(
child
,
[
componentName
,
eventName
].
concat
([
params
]));
}
});
}
export
default
{
methods
:
{
dispatch
(
componentName
,
eventName
,
params
)
{
var
parent
=
this
.
$parent
||
this
.
$root
;
var
name
=
parent
.
$options
.
componentName
;
while
(
parent
&&
(
!
name
||
name
!==
componentName
))
{
parent
=
parent
.
$parent
;
if
(
parent
)
{
name
=
parent
.
$options
.
componentName
;
}
}
if
(
parent
)
{
parent
.
$emit
.
apply
(
parent
,
[
eventName
].
concat
(
params
));
}
},
broadcast
(
componentName
,
eventName
,
params
)
{
broadcast
.
call
(
this
,
componentName
,
eventName
,
params
);
}
}
};
src/views/processing/carReview/review-form/index.vue
View file @
b37bb587
...
@@ -5,9 +5,7 @@
...
@@ -5,9 +5,7 @@
<div>
<div>
<!--1-抬头标题-->
<!--1-抬头标题-->
<div
class=
"title-style"
>
<div
class=
"title-style"
>
<div
class=
"title-content-style"
>
<div
class=
"title-content-style"
>
查看车型审查表单
</div>
查看车型审查表单(所属任务:
{{
model
.
carReviewTask
.
name
}}
)
</div>
<div
class=
"title-content-style"
>
<div
class=
"title-content-style"
>
<a
href=
"/processing/unprocessed-review"
>
返回
</a>
<a
href=
"/processing/unprocessed-review"
>
返回
</a>
</div>
</div>
...
@@ -15,105 +13,98 @@
...
@@ -15,105 +13,98 @@
<!--2-统计值-->
<!--2-统计值-->
<div
class=
"main-content-style"
>
<div
class=
"main-content-style"
>
<!--任务编号,名称,单位-->
<!--任务编号,名称,单位-->
<el-form
label-width=
"6.25rem"
class=
"task"
>
<el-row
:gutter=
"60"
class=
"task"
>
<el-row
:gutter=
"60"
>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<span
class=
"task-label"
>
任务编号:
</span>
<el-form-item
label=
"任务编号:"
>
<span
class=
"task-content"
>
<span>
{{
model
.
carReviewTask
.
taskNo
}}
</span>
{{
model
.
carReviewTask
.
taskNo
}}
</el-form-item>
</span>
</el-col>
</el-col>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"任务名称:"
>
<span
class=
"task-label"
>
任务名称:
</span>
<span>
{{
model
.
carReviewTask
.
name
}}
</span>
<span
class=
"task-content"
>
</el-form-item>
{{
model
.
carReviewTask
.
name
}}
</el-col>
</span>
<el-col
:span=
"8"
>
</el-col>
<el-form-item
label=
"委托单位:"
>
<el-col
:span=
"8"
>
<span>
{{
model
.
carReviewTask
.
taskInitiatorDept
}}
</span>
<span
class=
"task-label"
>
委托单位:
</span>
</el-form-item>
<span
class=
"task-content"
>
</el-col>
{{
model
.
carReviewTask
.
taskInitiatorDep
}}
</el-row>
</span>
</el-form>
</el-col>
</el-row>
<div
class=
"control-btns"
>
<div
class=
"control-btn"
@
click=
"openAll()"
>
<i
class=
"iconfont icon-xiangxiazhankai-yuankuang"
></i>
全部展开
</div>
<div
class=
"control-btn"
@
click=
"closeAll()"
>
<i
class=
"iconfont icon-xiangshangshouqi"
></i>
全部收起
</div>
</div>
<!--审查问卷概要-->
<!--审查问卷概要-->
<div
class=
"form-review-questionnaire"
>
<collapse
v-model=
"activeNames"
>
<table
class=
"table"
style=
"width: 100%"
border=
"1"
>
<collapse-item
<thead>
v-for=
"(item, key) in model.systemReviewTask.standard"
:key=
"key"
:name=
"item.chapter"
>
<span
slot=
"title"
>
<div
class=
"standard-box"
>
<div
class=
"standard"
>
标准:
</div>
<div
class=
"standard-title"
>
{{
item
.
chapter
+
item
.
text
}}
</div>
</div>
</span>
<table
class=
"table"
>
<tr>
<tr>
<th>
标准章节
</th>
<th>
标准要求
</th>
<th>
审查要点
</th>
<th>
审查要点
</th>
<th>
审查细则
</th>
<th>
审查细则
</th>
<th>
审查结果
</th>
<th>
审查结果
</th>
<th
colspan=
"2"
>
记录
</th>
<th>
填写人
</th>
<th>
填写人
</th>
</tr>
</tr>
</thead>
<template
v-for=
"(keyPoint, keyPointKey) in item.keyPointList"
>
<tbody>
<tr
:key=
"keyPointKey"
>
<!-- 循环遍历 arr -->
<td
:rowspan=
"keyPoint.reviewDetailsList.length + 1"
>
<template
v-for=
"(item, index) in model.carReviewTask.standard"
>
{{
keyPoint
.
text
}}
<tr
:key=
"'standard-' + index"
>
<td
align=
"center"
style=
"text-align: center"
:rowspan=
"getRows2(item)"
>
{{
item
.
chapter
}}
</td>
<td
align=
"center"
:rowspan=
"getRows2(item)"
>
{{
item
.
text
}}
</td>
</td>
</tr>
</tr>
<!-- 循环遍历 keyPointList -->
<template
<template
v-for=
"(i, PointIndex) in item.keyPointList"
>
v-for=
"(
<tr
:key=
"'PointIndex-2' + PointIndex + index"
>
reviewDetail, reviewDetailKey
<td
align=
"center"
:rowspan=
"getRows(i)"
>
) in keyPoint.reviewDetailsList"
{{
i
.
text
}}
>
<tr
:key=
"reviewDetailKey"
>
<td>
{{
reviewDetail
.
text
}}
</td>
<td
align=
"center"
>
{{
reviewDetail
.
result
?
reviewDetail
.
result
.
passed
===
null
?
'__'
:
reviewDetail
.
result
.
passed
===
0
?
'不通过'
:
'通过'
:
'__'
}}
</td>
</td>
</tr>
<td
align=
"center"
>
<!-- 循环遍历 reviewDetailsList -->
{{
<template
reviewDetail
.
result
v-for=
"(v, reviewDetailIndex) in i.reviewDetailsList"
?
reviewDetail
.
result
.
userName
>
?
reviewDetail
.
result
.
userName
<tr
:key=
"
'reviewDetailIndex-3' +
PointIndex +
reviewDetailIndex +
index
"
>
<td
align=
"center"
>
{{
v
.
text
}}
</td>
<td
align=
"center"
style=
"text-align: center"
>
{{
v
.
result
?
v
.
result
.
passed
===
null
?
'__'
:
v
.
result
.
passed
===
0
?
'不通过'
:
'通过'
:
'__'
}}
</td>
<td
align=
"center"
></td>
<td
align=
"center"
></td>
<td
align=
"center"
style=
"text-align: center"
>
{{
v
.
result
?
v
.
result
.
userName
?
v
.
result
.
userName
:
'__'
:
'__'
:
'__'
}}
:
'__'
</td>
}}
</t
r
>
</t
d
>
</
t
emplate
>
</t
r
>
</
template
>
</
template
>
</template>
</template>
</t
body
>
</t
able
>
</
table
>
</
collapse-item
>
</
div
>
</
collapse
>
<!--返回按钮-->
<!--返回按钮-->
<div
class=
"bottom-btn"
>
<div
class=
"bottom-btn"
>
...
@@ -133,13 +124,17 @@
...
@@ -133,13 +124,17 @@
<!--js逻辑-->
<!--js逻辑-->
<
script
>
<
script
>
import
{
checkTaskDetail
}
from
'@/api/task/task'
import
{
checkTaskDetail
}
from
'@/api/task/task'
import
{
getRows
,
getRows2
}
from
'@/utils/reviewDetailsTable.js'
import
collapse
from
'@/components/Collapse/collapse'
import
collapseItem
from
'@/components/Collapse/collapse-item'
export
default
{
export
default
{
components
:
{
collapse
:
collapse
,
'collapse-item'
:
collapseItem
},
data
()
{
data
()
{
return
{
return
{
model
:
{
model
:
{
carReviewTask
:
{},
carReviewTask
:
{},
systemReviewTask
:
{},
reviewSceneChangeTasks
:
{},
reviewSceneChangeTasks
:
{},
detailsList
:
[]
detailsList
:
[]
},
},
...
@@ -177,9 +172,7 @@ export default {
...
@@ -177,9 +172,7 @@ export default {
/* 返回跳转*/
/* 返回跳转*/
goToProcessedReview
()
{
goToProcessedReview
()
{
this
.
$router
.
push
(
'/processing/unprocessed-review'
)
this
.
$router
.
push
(
'/processing/unprocessed-review'
)
},
}
getRows
,
getRows2
}
}
}
}
</
script
>
</
script
>
...
...
src/views/processing/systemReview/confirm-result/index.vue
View file @
b37bb587
...
@@ -15,172 +15,145 @@
...
@@ -15,172 +15,145 @@
<!--2-统计值-->
<!--2-统计值-->
<div
class=
"main-content-style"
>
<div
class=
"main-content-style"
>
<!--任务编号,名称,单位-->
<!--任务编号,名称,单位-->
<el-form
label-width=
"6.25rem"
class=
"task"
>
<el-row
:gutter=
"60"
class=
"task"
>
<el-row
:gutter=
"60"
>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<span
class=
"task-label"
>
任务编号:
</span>
<el-form-item
label=
"任务编号:"
>
<span
class=
"task-content"
>
<span>
{{
model
.
systemReviewTask
.
taskNo
}}
</span>
{{
model
.
systemReviewTask
.
taskNo
}}
</el-form-item>
</span>
</el-col>
</el-col>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"任务名称:"
>
<span
class=
"task-label"
>
任务名称:
</span>
<span>
{{
model
.
systemReviewTask
.
name
}}
</span>
<span
class=
"task-content"
>
</el-form-item>
{{
model
.
systemReviewTask
.
name
}}
</el-col>
</span>
<el-col
:span=
"8"
>
</el-col>
<el-form-item
label=
"委托单位:"
>
<el-col
:span=
"8"
>
<span>
{{
model
.
systemReviewTask
.
taskInitiatorDept
}}
</span>
<span
class=
"task-label"
>
委托单位:
</span>
</el-form-item>
<span
class=
"task-content"
>
</el-col>
{{
model
.
systemReviewTask
.
taskInitiatorDep
}}
</el-row>
</span>
</el-form>
</el-col>
</el-row>
<!--card统计值-->
<!--card统计值-->
<el-row
<div
class=
"message-list"
>
:gutter=
"60"
<div
class=
"message-box"
>
style=
"display: flex; margin-left: 2rem; margin-right: 2rem"
<i
class=
"icon el-icon-tickets"
></i>
>
<div
class=
"message-detail"
>
<el-col
:span=
"6"
>
<div
class=
"detail-title"
>
审查细则(条)
</div>
<div
<div
class=
"detail-num mt10"
>
100
</div>
class=
"card-statistical-style"
style=
"background-color: #5ad8a6"
>
<span
class=
"content"
>
<span
class=
"value"
>
80%
</span>
<span
class=
"title"
>
审查通过率
</span>
</span>
<img
class=
"img"
src=
"@/assets/images/questionnaire/tongguolv.png"
/>
</div>
</div>
</el-col>
</div>
<el-col
:span=
"6"
>
<div
<div
class=
"message-box"
>
class=
"card-statistical-style"
<i
class=
"icon el-icon-tickets"
></i>
style=
"background-color: #ff99c3"
<div
class=
"message-detail"
>
>
<div
class=
"detail-title"
>
审查细则符合率(%)
</div>
<span
class=
"content"
>
<div
class=
"detail-num mt10"
>
100
</div>
<span
class=
"value"
>
20%
</span>
<span
class=
"title"
>
审查失败率
</span>
</span>
<img
class=
"img"
src=
"@/assets/images/questionnaire/shibailv.png"
/>
</div>
</div>
</el-col>
</div>
<el-col
:span=
"6"
>
<div
class=
"message-box"
>
<div
<i
class=
"icon el-icon-tickets"
></i>
class=
"card-statistical-style"
<div
class=
"message-detail"
>
style=
"background-color: #6dc8ec"
<div
class=
"detail-title"
>
标准条款(条)
</div>
>
<div
class=
"detail-num mt10"
>
100
</div>
<span
class=
"content"
>
<span
class=
"value"
>
100条
</span>
<span
class=
"title"
>
审查细则数
</span>
</span>
<img
class=
"img"
src=
"@/assets/images/questionnaire/xizeshu.png"
/>
</div>
</div>
</el-col>
</div>
<el-col
:span=
"6"
>
<div
class=
"message-box"
>
<div
<i
class=
"icon el-icon-tickets"
></i>
class=
"card-statistical-style"
<div
class=
"message-detail"
>
style=
"background-color: #5b8ff9"
<div
class=
"detail-title"
>
标准条款通过率(条)
</div>
>
<div
class=
"detail-num mt10"
>
100
</div>
<span
class=
"content"
>
<span
class=
"value"
>
5人
</span>
<span
class=
"title"
>
参与审查人数
</span>
</span>
<img
class=
"img"
src=
"@/assets/images/questionnaire/shencharenshu.png"
/>
</div>
</div>
</el-col>
</div>
</el-row>
<div
class=
"message-box"
>
<i
class=
"icon el-icon-tickets"
></i>
<div
class=
"message-detail"
>
<div
class=
"detail-title"
>
参与审查人数(人)
</div>
<div
class=
"detail-num mt10"
>
100
</div>
</div>
</div>
</div>
<!--审查问卷概要-->
<!--审查问卷概要-->
<div
v-if=
"isShow"
>
<div
v-if=
"isShow"
>
<div
class=
"form-review-questionnaire"
>
<div
class=
"form-review-questionnaire"
>
<div
class=
"title-display"
>
<div
class=
"title-display"
>
<span
class=
"title-i"
></span>
<span
class=
"title-i"
></span>
<span
class=
"title-content"
>
审查问卷概要
</span>
<span
class=
"title-content"
>
审查问卷概要
</span>
<div
class=
"control-btns"
>
<div
class=
"control-btn"
@
click=
"openAll()"
>
<i
class=
"iconfont icon-xiangxiazhankai-yuankuang"
></i>
全部展开
</div>
<div
class=
"control-btn"
@
click=
"closeAll()"
>
<i
class=
"iconfont icon-xiangshangshouqi"
></i>
全部收起
</div>
</div>
</div>
</div>
<div>
<!--审查问卷概要-->
<table
class=
"table"
style=
"width: 100%"
>
<collapse
v-model=
"activeNames"
class=
"mt10"
>
<thead>
<collapse-item
v-for=
"(item, key) in model.systemReviewTask.standard"
:key=
"key"
:name=
"item.chapter"
>
<span
slot=
"title"
>
<div
class=
"standard-box"
>
<div
class=
"standard"
>
标准:
</div>
<div
class=
"standard-title"
>
{{
item
.
chapter
+
item
.
text
}}
</div>
</div>
</span>
<table
class=
"table"
>
<tr>
<tr>
<th>
标准章节
</th>
<th>
标准要求
</th>
<th>
审查要点
</th>
<th>
审查要点
</th>
<th>
审查细则
</th>
<th>
审查细则
</th>
<th>
审查结果
</th>
<th>
审查结果
</th>
<th>
填写人
</th>
<th>
填写人
</th>
</tr>
</tr>
</thead>
<tbody>
<!-- 循环遍历 arr -->
<template
<template
v-for=
"(
item, index) in model.systemReviewTask.standard
"
v-for=
"(
keyPoint, keyPointKey) in item.keyPointList
"
>
>
<tr
:key=
"'standard-' + index"
>
<tr
:key=
"keyPointKey"
>
<td
align=
"center"
:rowspan=
"getRows2(item)"
>
<td
:rowspan=
"keyPoint.reviewDetailsList.length + 1"
>
{{
item
.
chapter
}}
{{
keyPoint
.
text
}}
</td>
<td
align=
"center"
:rowspan=
"getRows2(item)"
>
{{
item
.
text
}}
</td>
</td>
</tr>
</tr>
<!-- 循环遍历 keyPointList -->
<template
<template
v-for=
"(i, PointIndex) in item.keyPointList"
>
v-for=
"(
<tr
:key=
"'PointIndex-2' + PointIndex + index"
>
reviewDetail, reviewDetailKey
<td
align=
"center"
:rowspan=
"getRows(i)"
>
) in keyPoint.reviewDetailsList"
{{
i
.
text
}}
>
<tr
:key=
"reviewDetailKey"
>
<td
align=
"center"
>
{{
reviewDetail
.
text
}}
</td>
<td
align=
"center"
>
{{
reviewDetail
.
result
?
reviewDetail
.
result
.
passed
===
null
?
'__'
:
reviewDetail
.
result
.
passed
===
0
?
'不通过'
:
'通过'
:
'__'
}}
</td>
</td>
</tr>
<td
align=
"center"
>
<!-- 循环遍历 reviewDetailsList -->
{{
<template
reviewDetail
.
result
v-for=
"(v, reviewDetailIndex) in i.reviewDetailsList"
?
reviewDetail
.
result
.
userName
>
?
reviewDetail
.
result
.
userName
<tr
:key=
"
'reviewDetailIndex-3' +
PointIndex +
reviewDetailIndex +
index
"
>
<td
align=
"center"
>
{{
v
.
text
}}
</td>
<td
align=
"center"
>
{{
v
.
result
?
v
.
result
.
passed
===
null
?
'__'
:
v
.
result
.
passed
===
0
?
'不通过'
:
'通过'
:
'__'
}}
</td>
<td
align=
"center"
>
{{
v
.
result
?
v
.
result
.
userName
?
v
.
result
.
userName
:
'__'
:
'__'
:
'__'
}}
:
'__'
</td>
}}
</t
r
>
</t
d
>
</
t
emplate
>
</t
r
>
</
template
>
</
template
>
</template>
</template>
</t
body
>
</t
able
>
</
table
>
</
collapse-item
>
</
div
>
</
collapse
>
</div>
</div>
<!--确定车型试验范围-->
<!--确定车型试验范围-->
<div
v-if=
"type === '1'"
>
<div
v-if=
"type === '1'"
>
...
@@ -278,7 +251,13 @@
...
@@ -278,7 +251,13 @@
<
script
>
<
script
>
import
{
reviewTaskDetail
,
taskSubmit
}
from
'@/api/task/task'
import
{
reviewTaskDetail
,
taskSubmit
}
from
'@/api/task/task'
import
{
getRows
,
getRows2
}
from
'@/utils/reviewDetailsTable.js'
import
{
getRows
,
getRows2
}
from
'@/utils/reviewDetailsTable.js'
import
collapse
from
'@/components/Collapse/collapse'
import
collapseItem
from
'@/components/Collapse/collapse-item'
export
default
{
export
default
{
components
:
{
collapse
:
collapse
,
'collapse-item'
:
collapseItem
},
data
()
{
data
()
{
return
{
return
{
isShow
:
1
,
isShow
:
1
,
...
@@ -315,14 +294,16 @@ export default {
...
@@ -315,14 +294,16 @@ export default {
{
required
:
true
,
message
:
'请输入检验负责人'
,
trigger
:
'blur'
}
{
required
:
true
,
message
:
'请输入检验负责人'
,
trigger
:
'blur'
}
]
]
},
},
activeNames
:
[],
taskId
:
''
taskId
:
''
}
}
},
},
mounted
()
{
async
mounted
()
{
if
(
this
.
$route
.
query
.
id
)
{
if
(
this
.
$route
.
query
.
id
)
{
this
.
taskId
=
this
.
$route
.
query
.
id
this
.
taskId
=
this
.
$route
.
query
.
id
}
}
this
.
getTask
()
await
this
.
getTask
()
this
.
openAll
()
},
},
methods
:
{
methods
:
{
/**
/**
...
@@ -358,8 +339,14 @@ export default {
...
@@ -358,8 +339,14 @@ export default {
path
:
'/processing/systemReview/write-check-form?id='
+
this
.
taskId
path
:
'/processing/systemReview/write-check-form?id='
+
this
.
taskId
})
})
},
},
getRows
,
openAll
()
{
getRows2
this
.
activeNames
=
this
.
model
.
systemReviewTask
.
standard
.
map
(
i
=>
{
return
i
.
chapter
})
},
closeAll
()
{
this
.
activeNames
=
[]
}
}
}
}
}
</
script
>
</
script
>
...
@@ -501,6 +488,20 @@ export default {
...
@@ -501,6 +488,20 @@ export default {
}
}
}
}
.control-btns
{
display
:
flex
;
align-items
:
center
;
justify-content
:
flex-start
;
margin-left
:
20px
;
.control-btn
{
color
:
#ff9900
;
font-size
:
14px
;
margin-right
:
10px
;
cursor
:
pointer
;
}
}
::v-deep
.el-table--border
{
::v-deep
.el-table--border
{
width
:
unset
!
important
;
width
:
unset
!
important
;
}
}
...
...
src/views/processing/systemReview/review-form/index.vue
View file @
b37bb587
...
@@ -5,9 +5,7 @@
...
@@ -5,9 +5,7 @@
<div>
<div>
<!--1-抬头标题-->
<!--1-抬头标题-->
<div
class=
"title-style"
>
<div
class=
"title-style"
>
<div
class=
"title-content-style"
>
<div
class=
"title-content-style"
>
查看体系审查表单
</div>
查看体系审查表单(所属任务:
{{
model
.
systemReviewTask
.
name
}}
)
</div>
<div
class=
"title-content-style"
>
<div
class=
"title-content-style"
>
<a
href=
"/processing/unprocessed-review"
>
返回
</a>
<a
href=
"/processing/unprocessed-review"
>
返回
</a>
</div>
</div>
...
@@ -15,107 +13,97 @@
...
@@ -15,107 +13,97 @@
<!--2-统计值-->
<!--2-统计值-->
<div
class=
"main-content-style"
>
<div
class=
"main-content-style"
>
<!--任务编号,名称,单位-->
<!--任务编号,名称,单位-->
<el-form
label-width=
"6.25rem"
class=
"task"
>
<el-row
:gutter=
"60"
class=
"task"
>
<el-row
:gutter=
"60"
>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<span
class=
"task-label"
>
任务编号:
</span>
<el-form-item
label=
"任务编号:"
>
<span
class=
"task-content"
>
<span>
{{
model
.
systemReviewTask
.
taskNo
}}
</span>
{{
model
.
systemReviewTask
.
taskNo
}}
</el-form-item>
</span>
</el-col>
</el-col>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"任务名称:"
>
<span
class=
"task-label"
>
任务名称:
</span>
<span>
{{
model
.
systemReviewTask
.
name
}}
</span>
<span
class=
"task-content"
>
</el-form-item>
{{
model
.
systemReviewTask
.
name
}}
</el-col>
</span>
<el-col
:span=
"8"
>
</el-col>
<el-form-item
label=
"委托单位:"
>
<el-col
:span=
"8"
>
<span>
{{
model
.
systemReviewTask
.
taskInitiatorDep
}}
</span>
<span
class=
"task-label"
>
委托单位:
</span>
</el-form-item>
<span
class=
"task-content"
>
</el-col>
{{
model
.
systemReviewTask
.
taskInitiatorDep
}}
</el-row>
</span>
</el-form>
</el-col>
</el-row>
<div
class=
"control-btns"
>
<div
class=
"control-btn"
@
click=
"openAll()"
>
<i
class=
"iconfont icon-xiangxiazhankai-yuankuang"
></i>
全部展开
</div>
<div
class=
"control-btn"
@
click=
"closeAll()"
>
<i
class=
"iconfont icon-xiangshangshouqi"
></i>
全部收起
</div>
</div>
<!--审查问卷概要-->
<!--审查问卷概要-->
<div
class=
"form-review-questionnaire"
>
<collapse
v-model=
"activeNames"
>
<table
class=
"table"
style=
"width: 100%"
border=
"1"
>
<collapse-item
<thead>
v-for=
"(item, key) in model.systemReviewTask.standard"
:key=
"key"
:name=
"item.chapter"
>
<span
slot=
"title"
>
<div
class=
"standard-box"
>
<div
class=
"standard"
>
标准:
</div>
<div
class=
"standard-title"
>
{{
item
.
chapter
+
item
.
text
}}
</div>
</div>
</span>
<table
class=
"table"
>
<tr>
<tr>
<th>
标准章节
</th>
<th>
标准要求
</th>
<th>
审查要点
</th>
<th>
审查要点
</th>
<th>
审查细则
</th>
<th>
审查细则
</th>
<th>
审查结果
</th>
<th>
审查结果
</th>
<th
colspan=
"2"
>
记录
</th>
<th>
填写人
</th>
<th>
填写人
</th>
</tr>
</tr>
</thead>
<template
v-for=
"(keyPoint, keyPointKey) in item.keyPointList"
>
<tbody>
<tr
:key=
"keyPointKey"
>
<!-- 循环遍历 arr -->
<td
:rowspan=
"keyPoint.reviewDetailsList.length + 1"
>
<template
{{
keyPoint
.
text
}}
v-for=
"(item, index) in model.systemReviewTask.standard"
>
<tr
:key=
"'standard-' + index"
>
<td
align=
"center"
style=
"text-align: center"
:rowspan=
"getRows2(item)"
>
{{
item
.
chapter
}}
</td>
<td
align=
"center"
:rowspan=
"getRows2(item)"
>
{{
item
.
text
}}
</td>
</td>
</tr>
</tr>
<!-- 循环遍历 keyPointList -->
<template
<template
v-for=
"(i, PointIndex) in item.keyPointList"
>
v-for=
"(
<tr
:key=
"'PointIndex-2' + PointIndex + index"
>
reviewDetail, reviewDetailKey
<td
align=
"center"
:rowspan=
"getRows(i)"
>
) in keyPoint.reviewDetailsList"
{{
i
.
text
}}
>
<tr
:key=
"reviewDetailKey"
>
<td>
{{
reviewDetail
.
text
}}
</td>
<td
align=
"center"
>
{{
reviewDetail
.
result
?
reviewDetail
.
result
.
passed
===
null
?
'__'
:
reviewDetail
.
result
.
passed
===
0
?
'不通过'
:
'通过'
:
'__'
}}
</td>
</td>
</tr>
<td
align=
"center"
>
<!-- 循环遍历 reviewDetailsList -->
{{
<template
reviewDetail
.
result
v-for=
"(v, reviewDetailIndex) in i.reviewDetailsList"
?
reviewDetail
.
result
.
userName
>
?
reviewDetail
.
result
.
userName
<tr
:key=
"
'reviewDetailIndex-3' +
PointIndex +
reviewDetailIndex +
index
"
>
<td
align=
"center"
>
{{
v
.
text
}}
</td>
<td
align=
"center"
style=
"text-align: center"
>
{{
v
.
result
?
v
.
result
.
passed
===
null
?
'__'
:
v
.
result
.
passed
===
0
?
'不通过'
:
'通过'
:
'__'
}}
</td>
<td
align=
"center"
></td>
<td
align=
"center"
></td>
<td
align=
"center"
style=
"text-align: center"
>
{{
v
.
result
?
v
.
result
.
userName
?
v
.
result
.
userName
:
'__'
:
'__'
:
'__'
}}
:
'__'
</td>
}}
</t
r
>
</t
d
>
</
t
emplate
>
</t
r
>
</
template
>
</
template
>
</template>
</template>
</t
body
>
</t
able
>
</
table
>
</
collapse-item
>
</
div
>
</
collapse
>
<!--返回按钮-->
<!--返回按钮-->
<div
class=
"bottom-btn"
>
<div
class=
"bottom-btn"
>
<el-button
<el-button
...
@@ -134,8 +122,13 @@
...
@@ -134,8 +122,13 @@
<!--js逻辑-->
<!--js逻辑-->
<
script
>
<
script
>
import
{
reviewTaskDetail
}
from
'@/api/task/task'
import
{
reviewTaskDetail
}
from
'@/api/task/task'
import
{
getRows
,
getRows2
}
from
'@/utils/reviewDetailsTable.js'
import
collapse
from
'@/components/Collapse/collapse'
import
collapseItem
from
'@/components/Collapse/collapse-item'
export
default
{
export
default
{
components
:
{
collapse
:
collapse
,
'collapse-item'
:
collapseItem
},
data
()
{
data
()
{
return
{
return
{
model
:
{
model
:
{
...
@@ -145,6 +138,7 @@ export default {
...
@@ -145,6 +138,7 @@ export default {
detailsList
:
[]
detailsList
:
[]
},
},
taskId
:
1
,
taskId
:
1
,
activeNames
:
[],
rules
:
{
rules
:
{
enterpriseLeader
:
[
enterpriseLeader
:
[
{
required
:
true
,
message
:
'请输入车企负责人'
,
trigger
:
'blur'
}
{
required
:
true
,
message
:
'请输入车企负责人'
,
trigger
:
'blur'
}
...
@@ -155,13 +149,22 @@ export default {
...
@@ -155,13 +149,22 @@ export default {
}
}
}
}
},
},
created
()
{
async
created
()
{
if
(
this
.
$route
.
query
.
id
)
{
if
(
this
.
$route
.
query
.
id
)
{
this
.
taskId
=
this
.
$route
.
query
.
id
this
.
taskId
=
this
.
$route
.
query
.
id
}
}
this
.
getTask
()
await
this
.
getTask
()
this
.
openAll
()
},
},
methods
:
{
methods
:
{
openAll
()
{
this
.
activeNames
=
this
.
model
.
systemReviewTask
.
standard
.
map
(
i
=>
{
return
i
.
chapter
})
},
closeAll
()
{
this
.
activeNames
=
[]
},
/**
/**
* 获取任务详情
* 获取任务详情
*/
*/
...
@@ -180,8 +183,7 @@ export default {
...
@@ -180,8 +183,7 @@ export default {
goToProcessedReview
()
{
goToProcessedReview
()
{
this
.
$router
.
push
(
'/processing/unprocessed-review'
)
this
.
$router
.
push
(
'/processing/unprocessed-review'
)
},
},
getRows
,
handleChange
()
{}
getRows2
}
}
}
}
</
script
>
</
script
>
...
@@ -215,7 +217,7 @@ export default {
...
@@ -215,7 +217,7 @@ export default {
.main-content-style
{
.main-content-style
{
display
:
flex
;
display
:
flex
;
flex-direction
:
column
;
flex-direction
:
column
;
width
:
100%
;
margin
:
3rem
6rem
;
.btn
{
.btn
{
margin
:
0
8rem
8rem
4rem
;
margin
:
0
8rem
8rem
4rem
;
...
@@ -251,89 +253,48 @@ export default {
...
@@ -251,89 +253,48 @@ export default {
}
}
}
}
.form-custom
{
.control-btns
{
margin-top
:
3rem
;
display
:
flex
;
}
align-items
:
center
;
justify-content
:
flex-start
;
/* 任务编号,名称,单位样式 */
margin-bottom
:
40px
;
.task
{
padding
:
3rem
0
1rem
6rem
;
::v-deep
.el-form-item--medium
.el-form-item__label
{
font-size
:
1
.25rem
;
font-weight
:
bold
;
color
:
#999999
;
}
::v-deep
.el-form-item--medium
.el-form-item__content
{
.control-btn
{
font-size
:
1
.25rem
;
color
:
#ff9900
;
color
:
#767676
;
font-size
:
14px
;
margin-right
:
10px
;
cursor
:
pointer
;
}
}
}
}
::v-deep
.el-col-8
{
.form-custom
{
margin-right
:
13rem
;
margin-top
:
3rem
;
margin-left
:
unset
!
important
;
padding-left
:
unset
!
important
;
width
:
unset
!
important
;
}
/* 审查文件表格样式(最外层) */
.form-review-questionnaire
{
padding
:
2
.5rem
4rem
1rem
;
width
:
100%
;
height
:
max-content
;
.title-display
{
display
:
flex
;
justify-content
:
flex-start
;
align-items
:
center
;
.title-i
{
margin-right
:
1rem
;
width
:
0
.625rem
;
height
:
1
.625rem
;
background-color
:
#409eff
;
}
.title-content
{
font-size
:
1rem
;
font-weight
:
bold
;
color
:
#409eff
;
}
}
::v-deep
.el-table--border
{
width
:
unset
!
important
;
}
.table
{
border-collapse
:
collapse
;
th
{
text-align
:
center
;
}
}
}
}
/* 表格样式 */
table
{
table
{
margin-top
:
20px
;
margin-top
:
20px
;
border-collapse
:
collapse
;
border-collapse
:
collapse
;
width
:
100%
;
width
:
100%
;
}
}
/* 表格样式 */
thead
{
thead
{
background-color
:
#e7e6e6
;
background-color
:
#e7e6e6
;
}
}
/* 表格样式 */
th
{
th
,
border
:
1px
solid
#f4f4f4
;
td
{
padding
:
8px
;
padding
:
8px
;
text-align
:
left
;
width
:
300px
;
width
:
300px
;
height
:
100%
;
height
:
100%
;
border
:
1px
solid
black
;
color
:
#2b85e4
;
}
td
{
border
:
1px
solid
#f4f4f4
;
padding
:
8px
;
text-align
:
left
;
text-align
:
left
;
width
:
300px
;
height
:
100%
;
}
}
</
style
>
</
style
>
src/views/processing/systemReview/source-record/index.vue
View file @
b37bb587
...
@@ -5,9 +5,7 @@
...
@@ -5,9 +5,7 @@
<div>
<div>
<!--1-抬头标题-->
<!--1-抬头标题-->
<div
class=
"title-style"
>
<div
class=
"title-style"
>
<div
class=
"title-content-style"
>
<div
class=
"title-content-style"
>
体系审查原始记录
</div>
确认车型审查结果(所属任务:
{{
model
.
carReviewTask
.
name
}}
)
</div>
<div
class=
"title-content-style"
>
<div
class=
"title-content-style"
>
<el-button
type=
"text"
@
click=
"goToProcessedReview"
>
返回
</el-button>
<el-button
type=
"text"
@
click=
"goToProcessedReview"
>
返回
</el-button>
</div>
</div>
...
@@ -15,25 +13,26 @@
...
@@ -15,25 +13,26 @@
<!--2-统计值-->
<!--2-统计值-->
<div
class=
"main-content-style"
>
<div
class=
"main-content-style"
>
<!--任务编号,名称,单位-->
<!--任务编号,名称,单位-->
<el-form
label-width=
"6.25rem"
class=
"task"
>
<el-row
:gutter=
"60"
class=
"task"
>
<el-row
:gutter=
"60"
>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<span
class=
"task-label"
>
任务编号:
</span>
<el-form-item
label=
"任务编号:"
>
<span
class=
"task-content"
>
<span>
{{
model
.
carReviewTask
.
taskNo
}}
</span>
{{
model
.
systemReviewTask
.
taskNo
}}
</el-form-item>
</span>
</el-col>
</el-col>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"任务名称:"
>
<span
class=
"task-label"
>
任务名称:
</span>
<span>
{{
model
.
carReviewTask
.
name
}}
</span>
<span
class=
"task-content"
>
</el-form-item>
{{
model
.
systemReviewTask
.
name
}}
</el-col>
</span>
<el-col
:span=
"8"
>
</el-col>
<el-form-item
label=
"委托单位:"
>
<el-col
:span=
"8"
>
<span>
{{
model
.
carReviewTask
.
taskInitiatorDept
}}
</span>
<span
class=
"task-label"
>
委托单位:
</span>
</el-form-item>
<span
class=
"task-content"
>
</el-col>
{{
model
.
systemReviewTask
.
taskInitiatorDep
}}
</el-row>
</span>
</el-form>
</el-col>
</el-row>
<!--card统计值-->
<!--card统计值-->
<el-row
<el-row
:gutter=
"60"
:gutter=
"60"
...
@@ -100,122 +99,86 @@
...
@@ -100,122 +99,86 @@
</div>
</div>
</el-col>
</el-col>
</el-row>
</el-row>
<!--
检查表单
概要-->
<!--
审查问卷
概要-->
<div
v-if=
"isShow"
>
<div
v-if=
"isShow"
>
<div
class=
"form-review-questionnaire"
>
<div
class=
"form-review-questionnaire"
>
<div
class=
"title-display"
>
<div
class=
"title-display"
>
<span
class=
"title-i"
></span>
<span
class=
"title-i"
></span>
<span
class=
"title-content"
>
检查表单概要
</span>
<span
class=
"title-content"
>
审查问卷概要
</span>
<div
class=
"control-btns"
>
<div
class=
"control-btn"
@
click=
"openAll()"
>
<i
class=
"iconfont icon-xiangxiazhankai-yuankuang"
></i>
全部展开
</div>
<div
class=
"control-btn"
@
click=
"closeAll()"
>
<i
class=
"iconfont icon-xiangshangshouqi"
></i>
全部收起
</div>
</div>
</div>
</div>
<div>
<!--审查问卷概要-->
<table
class=
"table"
style=
"width: 100%"
>
<collapse
v-model=
"activeNames"
class=
"mt10"
>
<thead>
<collapse-item
v-for=
"(item, key) in model.systemReviewTask.standard"
:key=
"key"
:name=
"item.chapter"
>
<span
slot=
"title"
>
<div
class=
"standard-box"
>
<div
class=
"standard"
>
标准:
</div>
<div
class=
"standard-title"
>
{{
item
.
chapter
+
item
.
text
}}
</div>
</div>
</span>
<table
class=
"table"
>
<tr>
<tr>
<th>
标准章节
</th>
<th>
标准要求
</th>
<th>
审查要点
</th>
<th>
审查要点
</th>
<th>
审查细则
</th>
<th>
审查细则
</th>
<th>
审查结果
</th>
<th>
审查结果
</th>
<th
colspan=
"2"
>
记录
</th>
<th>
填写人
</th>
<th>
填写人
</th>
</tr>
</tr>
</thead>
<tbody>
<!-- 循环遍历 arr -->
<template
<template
v-for=
"(
item, index) in model.carReviewTask.standard
"
v-for=
"(
keyPoint, keyPointKey) in item.keyPointList
"
>
>
<tr
:key=
"'standard-' + index"
>
<tr
:key=
"keyPointKey"
>
<td
align=
"center"
:rowspan=
"getRows2(item)"
>
<td
:rowspan=
"keyPoint.reviewDetailsList.length + 1"
>
{{
item
.
chapter
}}
{{
keyPoint
.
text
}}
</td>
<td
align=
"center"
:rowspan=
"getRows2(item)"
>
{{
item
.
text
}}
</td>
</td>
</tr>
</tr>
<!-- 循环遍历 keyPointList -->
<template
<template
v-for=
"(i, PointIndex) in item.keyPointList"
>
v-for=
"(
<tr
:key=
"'PointIndex-2' + PointIndex + index"
>
reviewDetail, reviewDetailKey
<td
align=
"center"
:rowspan=
"getRows(i)"
>
) in keyPoint.reviewDetailsList"
{{
i
.
text
}}
>
<tr
:key=
"reviewDetailKey"
>
<td>
{{
reviewDetail
.
text
}}
</td>
<td
align=
"center"
>
{{
reviewDetail
.
result
?
reviewDetail
.
result
.
passed
===
null
?
'__'
:
reviewDetail
.
result
.
passed
===
0
?
'不通过'
:
'通过'
:
'__'
}}
</td>
</td>
</tr>
<td
align=
"center"
>
<!-- 循环遍历 reviewDetailsList -->
{{
<template
reviewDetail
.
result
v-for=
"(v, reviewDetailIndex) in i.reviewDetailsList"
?
reviewDetail
.
result
.
userName
>
?
reviewDetail
.
result
.
userName
<tr
:key=
"
'reviewDetailIndex-3' +
PointIndex +
reviewDetailIndex +
index
"
>
<td
align=
"center"
>
{{
v
.
text
}}
</td>
<td
align=
"center"
>
{{
v
.
result
?
v
.
result
.
passed
===
null
?
'__'
:
v
.
result
.
passed
===
0
?
'不通过'
:
'通过'
:
'__'
}}
</td>
<td
align=
"center"
></td>
<td
align=
"center"
></td>
<td
align=
"center"
>
{{
v
.
result
?
v
.
result
.
userName
?
v
.
result
.
userName
:
'__'
:
'__'
:
'__'
}}
:
'__'
</td>
}}
</t
r
>
</t
d
>
</
t
emplate
>
</t
r
>
</
template
>
</
template
>
</template>
</template>
</tbody>
</table>
</table>
</collapse-item>
</div>
</collapse>
</div>
<!--确定车型试验范围-->
<div
v-if=
"type === '1'"
>
<div
class=
"form-review-questionnaire"
>
<div
class=
"title-display"
>
<span
class=
"title-i"
></span>
<span
class=
"title-content"
>
确定车型试验范围
</span>
</div>
<el-form
ref=
"form"
:model=
"ruleForm"
:rules=
"rules"
class=
"img-display"
>
<el-form-item
prop=
"enterpriseLeader"
label=
"选择测试场景"
>
<br
/>
<el-checkbox-group
v-model=
"ruleForm.result"
class=
"result-select"
size=
"small"
>
<el-checkbox
v-for=
"city in cities"
:key=
"city"
:label=
"city"
border
>
{{ city }}
</el-checkbox
>
</el-checkbox-group>
</el-form-item>
</el-form>
</div>
</div>
</div>
<!--签字确认-->
<!--签字确认-->
<div
class=
"form-signature-confirmation"
>
<div
class=
"form-signature-confirmation"
>
...
@@ -248,9 +211,9 @@
...
@@ -248,9 +211,9 @@
<el-button
type=
"primary"
plain
@
click=
"$router.go(-1)"
>
<el-button
type=
"primary"
plain
@
click=
"$router.go(-1)"
>
返回
返回
</el-button>
</el-button>
<el-button
type=
"primary"
@
click=
"goToProcessedReview"
>
<
!-- <
el-button type="primary" @click="goToProcessedReview">
确认提交
确认提交
</el-button>
</el-button>
-->
</div>
</div>
</div>
</div>
<div
v-else
class=
"form-review-questionnaire"
>
<div
v-else
class=
"form-review-questionnaire"
>
...
@@ -279,9 +242,14 @@
...
@@ -279,9 +242,14 @@
</template>
</template>
<!--js逻辑-->
<!--js逻辑-->
<
script
>
<
script
>
import
{
checkTaskDetail
,
taskSubmit
}
from
'@/api/task/task'
import
{
reviewTaskDetail
,
taskSubmit
}
from
'@/api/task/task'
import
{
getRows
,
getRows2
}
from
'@/utils/reviewDetailsTable.js'
import
collapse
from
'@/components/Collapse/collapse'
import
collapseItem
from
'@/components/Collapse/collapse-item'
export
default
{
export
default
{
components
:
{
collapse
:
collapse
,
'collapse-item'
:
collapseItem
},
data
()
{
data
()
{
return
{
return
{
isShow
:
true
,
isShow
:
true
,
...
@@ -312,7 +280,7 @@ export default {
...
@@ -312,7 +280,7 @@ export default {
],
],
checkTestScenarioList
:
[],
checkTestScenarioList
:
[],
model
:
{
model
:
{
car
ReviewTask
:
{},
system
ReviewTask
:
{},
reviewSceneChangeTasks
:
{},
reviewSceneChangeTasks
:
{},
detailsList
:
[]
detailsList
:
[]
},
},
...
@@ -451,24 +419,34 @@ export default {
...
@@ -451,24 +419,34 @@ export default {
}
}
],
],
taskId
:
''
,
taskId
:
''
,
activeNames
:
[],
type
:
''
type
:
''
}
}
},
},
mounted
()
{
async
mounted
()
{
if
(
this
.
$route
.
query
.
id
)
{
if
(
this
.
$route
.
query
.
id
)
{
this
.
taskId
=
this
.
$route
.
query
.
id
this
.
taskId
=
this
.
$route
.
query
.
id
}
}
if
(
this
.
$route
.
query
.
type
)
{
if
(
this
.
$route
.
query
.
type
)
{
this
.
type
=
this
.
$route
.
query
.
type
this
.
type
=
this
.
$route
.
query
.
type
}
}
this
.
getTask
()
await
this
.
getTask
()
this
.
openAll
()
},
},
methods
:
{
methods
:
{
openAll
()
{
this
.
activeNames
=
this
.
model
.
systemReviewTask
.
standard
.
map
(
i
=>
{
return
i
.
chapter
})
},
closeAll
()
{
this
.
activeNames
=
[]
},
/**
/**
* 获取任务详情
* 获取任务详情
*/
*/
async
getTask
()
{
async
getTask
()
{
const
res
=
await
check
TaskDetail
({
const
res
=
await
review
TaskDetail
({
taskId
:
this
.
taskId
taskId
:
this
.
taskId
})
})
if
(
res
.
code
===
200
)
{
if
(
res
.
code
===
200
)
{
...
@@ -497,9 +475,7 @@ export default {
...
@@ -497,9 +475,7 @@ export default {
this
.
checkTestScenarioList
.
push
(
item
.
value
)
this
.
checkTestScenarioList
.
push
(
item
.
value
)
}
}
console
.
log
(
'李斯特'
,
this
.
checkTestScenarioList
)
console
.
log
(
'李斯特'
,
this
.
checkTestScenarioList
)
},
}
getRows
,
getRows2
}
}
}
}
</
script
>
</
script
>
...
@@ -731,64 +707,16 @@ td {
...
@@ -731,64 +707,16 @@ td {
}
}
}
}
.experimental-range
{
.control-btns
{
height
:
max-content
;
width
:
100%
;
padding
:
2
.5rem
4rem
1rem
4rem
;
.title-display
{
display
:
flex
;
align-items
:
center
;
justify-content
:
flex-start
;
.title-i
{
height
:
1
.625rem
;
margin-right
:
1rem
;
background-color
:
#409eff
;
width
:
0
.625rem
;
}
.title-content
{
color
:
#409eff
;
font-size
:
1rem
;
font-weight
:
bold
;
}
}
}
.test-scenario-container
{
display
:
flex
;
display
:
flex
;
flex-wrap
:
wrap
;
align-items
:
center
;
justify-content
:
flex-start
;
.test-scenario
{
margin-left
:
20px
;
width
:
220px
;
.control-btn
{
height
:
40px
;
color
:
#ff9900
;
border
:
1px
solid
#dcdfe6
;
font-size
:
14px
;
background-color
:
#ffffff
;
margin-right
:
10px
;
margin
:
0
10px
10px
0
;
cursor
:
pointer
;
border-radius
:
30px
;
div
{
text-align
:
center
;
position
:
relative
;
top
:
8px
;
}
}
.check-test-scenario
{
width
:
220px
;
height
:
40px
;
border
:
1px
solid
#a1cfff
;
background-color
:
#f0f7ff
;
margin
:
0
10px
10px
0
;
border-radius
:
30px
;
div
{
color
:
#68b6ff
;
text-align
:
center
;
position
:
relative
;
top
:
8px
;
}
}
}
}
}
</
style
>
</
style
>
src/views/processing/systemReview/write-check-form/index.vue
View file @
b37bb587
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
<div
class=
"app-container"
>
<div
class=
"app-container"
>
<el-card
class=
"custom-card"
>
<el-card
class=
"custom-card"
>
<div
slot=
"header"
class=
"clearfix"
>
<div
slot=
"header"
class=
"clearfix"
>
<span>
填写
检查表单(所属任务:
{{
model
.
systemReviewTask
.
name
}}
)
</span>
<span>
填写
体系审查表单
</span>
<div
class=
"back-btn"
>
<div
class=
"back-btn"
>
<el-button
type=
"primary"
plain
@
click=
"handlePreview"
>
<el-button
type=
"primary"
plain
@
click=
"handlePreview"
>
预览表单
预览表单
...
@@ -11,7 +11,27 @@
...
@@ -11,7 +11,27 @@
</div>
</div>
</div>
</div>
<div
class=
"main-content"
>
<div
class=
"main-content"
>
<div
class=
"prompt-message"
>
<el-row
:gutter=
"60"
class=
"task"
>
<el-col
:span=
"8"
>
<span
class=
"task-label"
>
任务编号:
</span>
<span
class=
"task-content"
>
{{
model
.
systemReviewTask
.
taskNo
}}
</span>
</el-col>
<el-col
:span=
"8"
>
<span
class=
"task-label"
>
任务名称:
</span>
<span
class=
"task-content"
>
{{
model
.
systemReviewTask
.
name
}}
</span>
</el-col>
<el-col
:span=
"8"
>
<span
class=
"task-label"
>
委托单位:
</span>
<span
class=
"task-content"
>
{{
model
.
systemReviewTask
.
taskInitiatorDep
}}
</span>
</el-col>
</el-row>
<div
class=
"prompt-message mt10"
>
<span
<span
>
问卷填写情况:共
{{
model
.
detailsList
.
length
}}
条审查细则,已完成
{{
>
问卷填写情况:共
{{
model
.
detailsList
.
length
}}
条审查细则,已完成
{{
readNumber
readNumber
...
...
src/views/processing/unprocessed-review/index.vue
View file @
b37bb587
...
@@ -77,6 +77,9 @@
...
@@ -77,6 +77,9 @@
</el-form-item>
</el-form-item>
</el-form>
</el-form>
<el-card
v-for=
"(item, index) in tableData"
:key=
"index"
class=
"box-card"
>
<el-card
v-for=
"(item, index) in tableData"
:key=
"index"
class=
"box-card"
>
<div
class=
"inspection-standard"
>
检验依据:GB XXXXX《汽车整车信息安全技术要求》
</div>
<div
class=
"card-cell"
>
<div
class=
"card-cell"
>
<div
class=
"cell-lable"
>
<div
class=
"cell-lable"
>
<i
class=
"el-icon-timer"
></i>
<i
class=
"el-icon-timer"
></i>
...
@@ -407,6 +410,29 @@ export default {
...
@@ -407,6 +410,29 @@ export default {
...
mapGetters
([
'userId'
])
...
mapGetters
([
'userId'
])
},
},
methods
:
{
methods
:
{
// loadData() {
// this.loading = true
// request({
// url: this.listUrl,
// method: 'post',
// data: this.queryParams
// })
// .then(res => {
// if (res.code === 200) {
// console.log(res.rows)
// res.rows[0].carReviewStatus = 'NEW'
// this.tableData = res.rows
// this.total = res.total
// }
// this.loading = false
// })
// .catch(error => {
// if (error.msg) {
// this.$message.error(error.msg)
// }
// this.loading = false
// })
// },
/**
/**
* 企业留档文件
* 企业留档文件
* @param item 对象
* @param item 对象
...
@@ -633,13 +659,14 @@ export default {
...
@@ -633,13 +659,14 @@ export default {
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
.card-cell
{
.card-cell
{
display
:
flex
;
display
:
flex
;
justify-content
:
space-around
;
justify-content
:
center
;
align-items
:
flex-start
;
align-items
:
flex-start
;
height
:
140px
;
height
:
140px
;
color
:
rgb
(
153
153
153
);
color
:
rgb
(
153
153
153
);
flex-direction
:
column
;
flex-direction
:
column
;
flex-wrap
:
nowrap
;
flex-wrap
:
nowrap
;
width
:
140px
;
width
:
140px
;
// padding-top: 30px;
}
}
.cell-option
{
.cell-option
{
...
@@ -660,6 +687,19 @@ export default {
...
@@ -660,6 +687,19 @@ export default {
.box-card
{
.box-card
{
margin-bottom
:
15px
;
margin-bottom
:
15px
;
font-size
:
14px
;
font-size
:
14px
;
position
:
relative
;
height
:
150px
;
.inspection-standard
{
position
:
absolute
;
top
:
0px
;
left
:
0px
;
background-image
:
url('~@/assets/svg/standard.svg')
;
line-height
:
30px
;
background-repeat
:
no-repeat
;
color
:
white
;
padding-left
:
15px
;
}
::v-deep
.el-card__body
{
::v-deep
.el-card__body
{
display
:
flex
;
display
:
flex
;
...
@@ -684,14 +724,15 @@ export default {
...
@@ -684,14 +724,15 @@ export default {
color
:
#515a6e
;
color
:
#515a6e
;
font-size
:
13px
;
font-size
:
13px
;
height
:
20px
;
height
:
20px
;
// margin-bottom: 10px;
}
}
.cell-value
{
.cell-value
{
height
:
80px
;
display
:
flex
;
display
:
flex
;
flex-flow
:
column
;
flex-flow
:
column
;
align-items
:
flex-start
;
align-items
:
flex-start
;
justify-content
:
center
;
justify-content
:
center
;
min-height
:
40px
;
}
}
.cell-status
{
.cell-status
{
...
@@ -701,7 +742,7 @@ export default {
...
@@ -701,7 +742,7 @@ export default {
.cell-item
{
.cell-item
{
height
:
25px
;
height
:
25px
;
margin
:
8px
0
;
margin
-top
:
8px
;
display
:
flex
;
display
:
flex
;
justify-content
:
center
;
justify-content
:
center
;
align-items
:
flex-start
;
align-items
:
flex-start
;
...
...
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