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
29cbd7ee
Commit
29cbd7ee
authored
Apr 01, 2024
by
mengzixuan
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' of
http://gitlab.91isoft.com:90/car-test/web
into mengzixuan
parents
e2795b5c
4289fec7
Changes
41
Hide whitespace changes
Inline
Side-by-side
Showing
41 changed files
with
1476 additions
and
155 deletions
+1476
-155
home.js
src/api/system/home.js
+38
-0
process.scss
src/assets/styles/process.scss
+3
-2
collapse-item.vue
src/components/Collapse/collapse-item.vue
+1
-2
index.vue
src/components/Editor/index.vue
+9
-2
index.vue
src/components/FileUpload/index.vue
+1
-1
index.vue
src/layout/components/Sidebar/index.vue
+1
-1
averageTest.vue
src/views/echartHome/averageTest.vue
+1
-1
confidentialityTasks.vue
src/views/echartHome/confidentialityTasks.vue
+35
-6
standardClassification.vue
src/views/echartHome/standardClassification.vue
+36
-10
index.vue
src/views/index.vue
+153
-72
index.vue
src/views/monitor/logininfor/index.vue
+6
-0
index.vue
src/views/processing/archivedTask/index.vue
+2
-2
index.vue
src/views/processing/carReview/review-form/index.vue
+8
-1
index.vue
src/views/processing/carReview/source-record/index.vue
+9
-1
index.vue
src/views/processing/carReview/vehicle-type/index.vue
+7
-0
previewView.vue
...ing/carReview/write-check-form/components/previewView.vue
+2
-1
index.vue
src/views/processing/carReview/write-check-form/index.vue
+31
-4
index.vue
src/views/processing/carTest/confirmation-test/index.vue
+4
-0
SchemeView.vue
...ing/carTest/execution-test-plan/components/SchemeView.vue
+273
-0
index.vue
src/views/processing/carTest/execution-test-plan/index.vue
+37
-5
index.vue
src/views/processing/carTest/review-form/index.vue
+6
-0
index.vue
src/views/processing/carTest/source-record/index.vue
+319
-0
index.vue
src/views/processing/checkFileLibrary/index.vue
+7
-0
index.vue
src/views/processing/fileLibrary/index.vue
+9
-0
index.vue
src/views/processing/processed-review/index.vue
+1
-1
index.vue
src/views/processing/retention-file/index.vue
+9
-0
index.vue
src/views/processing/systemReview/confirm-result/index.vue
+7
-0
index.vue
src/views/processing/systemReview/review-form/index.vue
+7
-0
index.vue
src/views/processing/systemReview/source-record/index.vue
+9
-1
previewView.vue
.../systemReview/write-check-form/components/previewView.vue
+2
-1
index.vue
src/views/processing/systemReview/write-check-form/index.vue
+23
-4
index.vue
src/views/processing/unprocessed-review/index.vue
+5
-5
index.vue
src/views/setting/materialLibrary/index.vue
+2
-1
index.vue
src/views/setting/sample/index.vue
+7
-3
index.vue
src/views/setting/sample/taskDetails/index.vue
+8
-2
index.vue
src/views/system/notice/index.vue
+1
-12
index.vue
src/views/task/edit/index.vue
+23
-6
DocumentInfo.vue
src/views/task/new/components/DocumentInfo.vue
+325
-0
index.vue
src/views/task/new/index.vue
+28
-3
index.vue
src/views/task/on/index.vue
+5
-5
index.vue
src/views/task/task-detail/index.vue
+16
-0
No files found.
src/api/system/home.js
0 → 100644
View file @
29cbd7ee
import
request
from
'@/utils/request'
export
function
selectQuantityStatistics
(
data
){
return
request
({
url
:
'/home/statistics/quantityStatistics'
,
method
:
'post'
,
data
:
data
})
}
export
function
selectStandardCategoryStatistics
(){
return
request
({
url
:
'/home/statistics/standardCategory'
,
method
:
'post'
})
}
export
function
selectConfidentialityLevelStatistics
(){
return
request
({
url
:
'/home/statistics/confidentialityLevel'
,
method
:
'post'
})
}
export
function
selectAverageInspectionRate
(){
return
request
({
url
:
'/home/statistics/averageInspectionRate'
,
method
:
'post'
})
}
export
function
selectTaskParticipationStatistics
(){
return
request
({
url
:
'/home/statistics/taskParticipation'
,
method
:
'post'
})
}
src/assets/styles/process.scss
View file @
29cbd7ee
...
...
@@ -89,7 +89,7 @@
display
:
flex
;
justify-content
:
flex-start
;
align-items
:
center
;
width
:
calc
(
100%
-
100px
)
;
width
:
60vw
;
}
.standard-title
{
width
:
calc
(
70%
-
40px
);
...
...
@@ -108,7 +108,8 @@
.standard-result
{
color
:
#303133
;
font-weight
:
bold
;
width
:
120px
;
width
:
100px
;
white-space
:
nowrap
;
}
}
.i-icon
{
...
...
src/components/Collapse/collapse-item.vue
View file @
29cbd7ee
...
...
@@ -124,8 +124,7 @@ export default {
.el-collapse-item__header
{
background-color
:
#f2f2f2
!important
;
height
:
40px
;
list-style
:
40px
;
padding
:
0
13px
;
padding-left
:
13px
;
}
.el-collapse-item__content
{
padding
:
0
!important
;
...
...
src/components/Editor/index.vue
View file @
29cbd7ee
...
...
@@ -60,7 +60,7 @@ export default {
},
data
()
{
return
{
uploadUrl
:
process
.
env
.
VUE_APP_BASE_API
+
'/common/upload'
,
// 上传的图片服务器地址
uploadUrl
:
process
.
env
.
VUE_APP_BASE_API
+
'/common/upload
Minio
'
,
// 上传的图片服务器地址
headers
:
{
Authorization
:
'Bearer '
+
getToken
()
},
...
...
@@ -109,6 +109,9 @@ export default {
this
.
currentValue
=
val
===
null
?
''
:
val
if
(
this
.
Quill
)
{
this
.
Quill
.
pasteHTML
(
this
.
currentValue
)
this
.
$nextTick
(()
=>
{
this
.
Quill
.
setSelection
(
this
.
currentValue
.
length
,
0
)
})
}
}
},
...
...
@@ -117,6 +120,9 @@ export default {
},
mounted
()
{
this
.
init
()
this
.
$nextTick
(()
=>
{
this
.
Quill
.
setSelection
(
this
.
currentValue
.
length
,
0
)
})
},
beforeDestroy
()
{
this
.
Quill
=
null
...
...
@@ -185,7 +191,8 @@ export default {
quill
.
insertEmbed
(
length
,
'image'
,
process
.
env
.
VUE_APP_BASE_API
+
res
.
fileName
// process.env.VUE_APP_BASE_API + res.fileName
process
.
env
.
VUE_APP_IMAGE_API
+
res
.
url
)
// 调整光标到最后
quill
.
setSelection
(
length
+
1
)
...
...
src/components/FileUpload/index.vue
View file @
29cbd7ee
...
...
@@ -99,7 +99,7 @@ export default {
number
:
0
,
uploadList
:
[],
baseUrl
:
process
.
env
.
VUE_APP_BASE_API
,
uploadFileUrl
:
process
.
env
.
VUE_APP_BASE_API
+
'/common/upload'
,
// 上传文件服务器地址
uploadFileUrl
:
process
.
env
.
VUE_APP_BASE_API
+
'/common/upload
Minio
'
,
// 上传文件服务器地址
headers
:
{
Authorization
:
'Bearer '
+
getToken
()
},
...
...
src/layout/components/Sidebar/index.vue
View file @
29cbd7ee
...
...
@@ -9,7 +9,7 @@
}"
>
<logo
v-if=
"showLogo"
:collapse=
"isCollapse"
/>
<el-scrollbar
:class=
"settings.sideTheme"
wrap-class=
"scrollbar-wrapper"
>
<el-scrollbar
:class=
"settings.sideTheme"
style=
"padding-bottom: 30px;"
wrap-class=
"scrollbar-wrapper"
>
<el-menu
:default-active=
"activeMenu"
:collapse=
"isCollapse"
...
...
src/views/echartHome/averageTest.vue
View file @
29cbd7ee
...
...
@@ -97,7 +97,7 @@ export default {
},
data
:
[
{
value
:
54
value
:
this
.
value
}
]
},
...
...
src/views/echartHome/confidentialityTasks.vue
View file @
29cbd7ee
...
...
@@ -5,17 +5,51 @@
></div>
</
template
>
<
script
>
import
{
getDicts
}
from
'../../api/system/dict/data'
import
{
selectConfidentialityLevelStatistics
}
from
'../../api/system/home'
export
default
{
name
:
'ConfidentialityTasks'
,
data
()
{
return
{
confidentialityLevel
:
[],
dictType
:
[],
chart
:
null
}
},
watch
:
{
confidentialityLevel
:
{
deep
:
true
,
handler
()
{
this
.
init
()
}
}
},
mounted
()
{
this
.
init
()
},
created
()
{
this
.
getConfidentialityLevelStatistics
()
},
methods
:
{
async
getConfidentialityLevelStatistics
()
{
await
getDicts
(
'confidentiality_level'
).
then
(
res
=>
{
this
.
dictType
=
res
.
data
})
await
selectConfidentialityLevelStatistics
().
then
(
res
=>
{
this
.
confidentialityLevel
=
res
.
data
this
.
dictReturn
(
this
.
confidentialityLevel
,
this
.
dictType
)
})
},
dictReturn
(
a
,
b
)
{
a
.
forEach
((
aItem
,
index
)
=>
{
b
.
forEach
(
bItem
=>
{
if
(
aItem
.
name
===
bItem
.
dictValue
)
{
a
[
index
].
name
=
bItem
.
dictLabel
}
})
})
},
init
()
{
// 2.初始化
this
.
chart
=
this
.
$echarts
.
init
(
this
.
$refs
.
chart
)
...
...
@@ -74,12 +108,7 @@ export default {
labelLine
:
{
show
:
false
},
data
:
[
{
value
:
1048
,
name
:
'A'
},
{
value
:
735
,
name
:
'B'
},
{
value
:
580
,
name
:
'C'
},
{
value
:
484
,
name
:
'D'
}
]
data
:
this
.
confidentialityLevel
}
]
}
...
...
src/views/echartHome/standardClassification.vue
View file @
29cbd7ee
...
...
@@ -5,17 +5,51 @@
></div>
</
template
>
<
script
>
import
{
selectStandardCategoryStatistics
}
from
'../../api/system/home'
import
{
getDicts
}
from
'../../api/system/dict/data'
export
default
{
name
:
'StandardClassification'
,
data
()
{
return
{
standardCategory
:
[],
dictType
:
[],
chart
:
null
}
},
watch
:
{
standardCategory
:
{
deep
:
true
,
handler
(
newValue
)
{
this
.
init
()
}
}
},
mounted
()
{
this
.
init
()
},
created
()
{
this
.
getStandardCategoryForm
()
},
methods
:
{
async
getStandardCategoryForm
()
{
await
getDicts
(
'sys_detailed_classification'
).
then
(
res
=>
{
this
.
dictType
=
res
.
data
})
await
selectStandardCategoryStatistics
().
then
(
res
=>
{
this
.
standardCategory
=
res
.
data
this
.
dictReturn
(
this
.
standardCategory
,
this
.
dictType
)
})
},
dictReturn
(
a
,
b
)
{
a
.
forEach
((
aItem
,
index
)
=>
{
b
.
forEach
(
bItem
=>
{
if
(
aItem
.
name
===
bItem
.
dictValue
)
{
a
[
index
].
name
=
bItem
.
dictLabel
}
})
})
},
init
()
{
// 2.初始化
this
.
chart
=
this
.
$echarts
.
init
(
this
.
$refs
.
chart
)
...
...
@@ -59,11 +93,7 @@ export default {
length
:
25
,
// 挨着图例的直线的长度
length2
:
10
// 挨着文字的直线的长度
},
data
:
[
{
value
:
40
,
name
:
'网络安全'
},
{
value
:
38
,
name
:
'软件升级'
},
{
value
:
32
,
name
:
'数据安全'
}
]
data
:
this
.
standardCategory
},
{
name
:
'Nightingale Chart'
,
...
...
@@ -84,11 +114,7 @@ export default {
labelLine
:
{
show
:
false
},
data
:
[
{
value
:
40
,
name
:
'网络安全'
},
{
value
:
38
,
name
:
'软件升级'
},
{
value
:
32
,
name
:
'数据安全'
}
]
data
:
this
.
standardCategory
}
]
}
...
...
src/views/index.vue
View file @
29cbd7ee
...
...
@@ -8,31 +8,51 @@
<li
style=
"color: #278ce9"
>
<div
class=
"textLayout"
>
<span
class=
"cardOneTitle"
>
支持标准数量
</span
><span
class=
"cardOneNumber"
>
319
</span>
><span
class=
"cardOneNumber"
>
{{
quantityStatisticsForm
.
standardQuantity
?
quantityStatisticsForm
.
standardQuantity
:
0
}}
</span>
</div>
</li>
<li
style=
"color: #f96f21"
>
<div
class=
"textLayout"
>
<span
class=
"cardOneTitle"
>
任务数量
</span
><span
class=
"cardOneNumber"
>
319
</span>
><span
class=
"cardOneNumber"
>
{{
quantityStatisticsForm
.
numberTasks
?
quantityStatisticsForm
.
numberTasks
:
0
}}
</span>
</div>
</li>
<li
style=
"color: #13be24"
>
<div
class=
"textLayout"
>
<span
class=
"cardOneTitle"
>
检验员数量
</span
><span
class=
"cardOneNumber"
>
319
</span>
><span
class=
"cardOneNumber"
>
{{
quantityStatisticsForm
.
numberInspectors
?
quantityStatisticsForm
.
numberInspectors
:
0
}}
</span>
</div>
</li>
<li
style=
"color: #e88069"
>
<div
class=
"textLayout"
>
<span
class=
"cardOneTitle"
>
整车样品数量
</span
><span
class=
"cardOneNumber"
>
319
</span>
><span
class=
"cardOneNumber"
>
{{
quantityStatisticsForm
.
numberVehicleSamples
?
quantityStatisticsForm
.
numberVehicleSamples
:
0
}}
</span>
</div>
</li>
<li
style=
"color: #7f69e8"
>
<div
class=
"textLayout"
>
<span
class=
"cardOneTitle"
>
测试类型数量
</span
><span
class=
"cardOneNumber"
>
319
</span>
<span
class=
"cardOneTitle"
>
测试方法数量
</span
><span
class=
"cardOneNumber"
>
{{
quantityStatisticsForm
.
numberMethods
?
quantityStatisticsForm
.
numberMethods
:
0
}}
</span>
</div>
</li>
</ul>
...
...
@@ -42,31 +62,51 @@
<li
style=
"color: #12cdaa"
>
<div
class=
"textLayout"
>
<span
class=
"cardOneTitle"
>
测试用例数量
</span
><span
class=
"cardOneNumber"
>
319
</span>
><span
class=
"cardOneNumber"
>
{{
quantityStatisticsForm
.
numberUseCases
?
quantityStatisticsForm
.
numberUseCases
:
0
}}
</span>
</div>
</li>
<li
style=
"color: #f9a221"
>
<div
class=
"textLayout"
>
<span
class=
"cardOneTitle"
>
检验报告数量
</span
><span
class=
"cardOneNumber"
>
319
</span>
><span
class=
"cardOneNumber"
>
{{
quantityStatisticsForm
.
numberReports
?
quantityStatisticsForm
.
numberReports
:
0
}}
</span>
</div>
</li>
<li
style=
"color: #e55868"
>
<div
class=
"textLayout"
>
<span
class=
"cardOneTitle"
>
车企数量
</span
><span
class=
"cardOneNumber"
>
319
</span>
><span
class=
"cardOneNumber"
>
{{
quantityStatisticsForm
.
numberCompanies
?
quantityStatisticsForm
.
numberCompanies
:
0
}}
</span>
</div>
</li>
<li
style=
"color: #278ce9"
>
<div
class=
"textLayout"
>
<span
class=
"cardOneTitle"
>
零部件样品数量
</span
><span
class=
"cardOneNumber"
>
319
</span>
><span
class=
"cardOneNumber"
>
{{
quantityStatisticsForm
.
numberComponentSamples
?
quantityStatisticsForm
.
numberComponentSamples
:
0
}}
</span>
</div>
</li>
<li
style=
"color: #41d1ff"
>
<div
class=
"textLayout"
>
<span
class=
"cardOneTitle"
>
测试场景数量
</span
><span
class=
"cardOneNumber"
>
319
</span>
><span
class=
"cardOneNumber"
>
{{
quantityStatisticsForm
.
numberScenes
?
quantityStatisticsForm
.
numberScenes
:
0
}}
</span>
</div>
</li>
</ul>
...
...
@@ -86,7 +126,13 @@
<div>
<iconpark-icon
name=
"renwuwancheng"
size=
"36"
></iconpark-icon>
</div>
<span>
已完成 :43个
</span>
<span
>
已完成 :
{{
quantityStatisticsForm
.
completedTaskNumber
?
quantityStatisticsForm
.
completedTaskNumber
:
0
}}
个
</span
>
<div>
<el-progress
:percentage=
"40"
...
...
@@ -94,7 +140,13 @@
:stroke-width=
"10"
:show-text=
"false"
></el-progress>
<div
style=
"margin-top: 10px; text-align: center"
>
40%
</div>
<div
style=
"margin-top: 10px; text-align: center"
>
{{
quantityStatisticsForm
.
completedTaskProportion
?
quantityStatisticsForm
.
completedTaskProportion
:
0
}}
%
</div>
</div>
</div>
<div
class=
"cardChild"
style=
"background: rgba(230, 88, 104, 0.08)"
>
...
...
@@ -104,7 +156,13 @@
size=
"36"
></iconpark-icon>
</div>
<span>
未完成 :43个
</span>
<span
>
未完成 :
{{
quantityStatisticsForm
.
executeTasksNumber
?
quantityStatisticsForm
.
executeTasksNumber
:
0
}}
个
</span
>
<div>
<el-progress
:percentage=
"40"
...
...
@@ -112,7 +170,13 @@
:stroke-width=
"10"
:show-text=
"false"
></el-progress>
<div
style=
"margin-top: 10px; text-align: center"
>
40%
</div>
<div
style=
"margin-top: 10px; text-align: center"
>
{{
quantityStatisticsForm
.
executeTaskProportion
?
quantityStatisticsForm
.
executeTaskProportion
:
0
}}
%
</div>
</div>
</div>
</div>
...
...
@@ -177,7 +241,7 @@
<div
class=
"cardStyle"
>
<el-carousel
height=
"460px"
:autoplay=
"false"
>
<el-carousel-item
v-for=
"(item, index) in average
TestList
"
v-for=
"(item, index) in average
InspectionRate
"
:key=
"index"
>
<div
style=
"display: flex; justify-content: space-between"
>
...
...
@@ -185,17 +249,17 @@
<div
style=
"color: #1a6fd7; font-weight: 700; font-size: 16px"
>
{{
item
.
standard
}}
{{
item
.
standard
Number
}}
</div>
</div>
<AverageTest
v-if=
"averageTestShow"
:value=
"item.
valu
e"
:value=
"item.
passingRat
e"
></AverageTest>
<div
style=
"color: #606266; font-size: 16px; text-align: center"
>
检验项目:
{{
item
.
name
}}
检验项目:
{{
item
.
inspectionItems
}}
</div>
</el-carousel-item>
</el-carousel>
...
...
@@ -205,29 +269,38 @@
<el-row>
<el-col
:span=
"24"
>
<div
class=
"cardStyle"
style=
"height: 500px"
>
<div
class=
"cardTitle"
>
参与任务情况
</div>
<div
style=
"
display: flex;
flex-wrap: wrap;
justify-content: space-between;
"
>
<div
v-for=
"(item, index) in taskCompleted"
<el-carousel
height=
"460px"
:autoplay=
"false"
>
<el-carousel-item
v-for=
"(item, index) in taskCompletedGroup"
:key=
"index"
style=
"width: calc(50% - 30px); margin-bottom: 30px"
>
<div
style=
"margin-bottom: 10px"
>
{{
item
.
name
}}
</div>
<el-progress
:percentage=
"item.value"
color=
"#1A6FD7"
show-text=
"true"
:stroke-width=
"15"
:format=
"format"
></el-progress>
</div>
</div>
<div
class=
"cardTitle"
>
参与任务情况
</div>
<div
style=
"
display: flex;
flex-wrap: wrap;
justify-content: space-between;
"
>
<div
v-for=
"(itemChiid, indexChild) in item"
:key=
"indexChild"
style=
"width: calc(50% - 30px); margin-bottom: 30px"
>
<div
style=
"margin-bottom: 10px"
>
{{
itemChiid
.
userName
}}
</div>
<el-progress
:percentage=
"itemChiid.taskNum"
color=
"#1A6FD7"
show-text=
"true"
:stroke-width=
"15"
:format=
"format"
></el-progress>
</div>
</div>
</el-carousel-item>
</el-carousel>
</div>
</el-col>
</el-row>
...
...
@@ -241,6 +314,12 @@ import ConfidentialityTasks from './echartHome/confidentialityTasks.vue'
import
UseCaseRisk
from
'./echartHome/useCaseRisk.vue'
import
UseCaseTest
from
'./echartHome/useCaseTest.vue'
import
AverageTest
from
'./echartHome/averageTest.vue'
import
{
selectAverageInspectionRate
,
selectQuantityStatistics
,
selectTaskParticipationStatistics
}
from
'../api/system/home'
import
{
getDicts
}
from
'../api/system/dict/data'
export
default
{
name
:
'HomePage'
,
...
...
@@ -253,44 +332,46 @@ export default {
},
data
()
{
return
{
quantityStatisticsForm
:
{},
averageTestShow
:
false
,
averageTestList
:
[
{
name
:
'汽车信息安全管理体系要求'
,
value
:
54
,
standard
:
'GB2020-2023'
},
{
name
:
'汽车信息安全管理体系要求'
,
value
:
54
,
standard
:
'GB2020-2023'
},
{
name
:
'汽车信息安全管理体系要求'
,
value
:
54
,
standard
:
'GB2020-2023'
}
],
taskCompleted
:
[
{
name
:
'张晓刚'
,
value
:
90
},
{
name
:
'王小虎'
,
value
:
90
},
{
name
:
'刘生'
,
value
:
90
},
{
name
:
'李丽'
,
value
:
90
},
{
name
:
'赵明明'
,
value
:
90
},
{
name
:
'张晓刚'
,
value
:
90
},
{
name
:
'王小虎'
,
value
:
90
},
{
name
:
'刘生'
,
value
:
90
},
{
name
:
'李丽'
,
value
:
90
},
{
name
:
'赵明明'
,
value
:
90
}
]
averageInspectionRate
:
[],
taskCompleted
:
[],
taskCompletedGroup
:
[]
}
},
created
()
{
this
.
$nextTick
(()
=>
{
this
.
averageTestShow
=
true
}
)
this
.
getAverageInspectionRate
()
this
.
getQuantityStatistics
()
this
.
getTaskCompleted
(
)
},
methods
:
{
getTaskCompleted
()
{
selectTaskParticipationStatistics
().
then
(
res
=>
{
this
.
taskCompleted
=
res
.
data
if
(
this
.
taskCompleted
.
length
>
0
)
{
var
chunkedArray
=
[]
const
groupSize
=
10
for
(
var
i
=
0
;
i
<
this
.
taskCompleted
.
length
;
i
+=
groupSize
)
{
chunkedArray
.
push
(
this
.
taskCompleted
.
slice
(
i
,
i
+
groupSize
))
}
this
.
taskCompletedGroup
=
chunkedArray
}
})
},
getAverageInspectionRate
()
{
selectAverageInspectionRate
().
then
(
res
=>
{
this
.
averageInspectionRate
=
res
.
data
this
.
$nextTick
(()
=>
{
this
.
averageTestShow
=
true
})
})
},
getQuantityStatistics
()
{
selectQuantityStatistics
({}).
then
(
res
=>
{
this
.
quantityStatisticsForm
=
res
.
data
})
},
// 进度条文字显示格式
format
(
percentage
)
{
return
(
percentage
=
`
${
percentage
}
个`
)
}
...
...
src/views/monitor/logininfor/index.vue
View file @
29cbd7ee
...
...
@@ -285,6 +285,8 @@ export default {
const
infoIds
=
row
.
infoId
||
this
.
ids
this
.
$modal
.
confirm
(
'是否确认删除访问编号为"'
+
infoIds
+
'"的数据项?'
,
{
type
:
'warning'
,
title
:
'确认'
,
closeOnClickModal
:
false
})
.
then
(
function
()
{
...
...
@@ -300,6 +302,8 @@ export default {
handleClean
()
{
this
.
$modal
.
confirm
(
'是否确认清空所有登录日志数据项?'
,
{
type
:
'warning'
,
title
:
'确认'
,
closeOnClickModal
:
false
})
.
then
(
function
()
{
...
...
@@ -316,6 +320,8 @@ export default {
const
username
=
this
.
selectName
this
.
$modal
.
confirm
(
'是否确认解锁用户"'
+
username
+
'"数据项?'
,
{
type
:
'warning'
,
title
:
'确认'
,
closeOnClickModal
:
false
})
.
then
(
function
()
{
...
...
src/views/processing/archivedTask/index.vue
View file @
29cbd7ee
...
...
@@ -168,13 +168,13 @@
>
车型审查原始记录
</el-button
>
<el-button
v-if=
"item.
carReview
TaskId"
v-if=
"item.
modelTest
TaskId"
type=
"primary"
plain
size=
"mini"
@
click=
"
goNext(
'/processing/car
Review
/source-record?id=' +
'/processing/car
Test
/source-record?id=' +
item.modelTestTaskId
)
"
...
...
src/views/processing/carReview/review-form/index.vue
View file @
29cbd7ee
...
...
@@ -196,7 +196,14 @@ export default {
loading
:
false
}
},
async
created
()
{
async
mounted
()
{
if
(
this
.
$route
.
query
.
id
)
{
this
.
taskId
=
this
.
$route
.
query
.
id
}
await
this
.
getTask
()
this
.
openAll
()
},
async
activated
()
{
if
(
this
.
$route
.
query
.
id
)
{
this
.
taskId
=
this
.
$route
.
query
.
id
}
...
...
src/views/processing/carReview/source-record/index.vue
View file @
29cbd7ee
...
...
@@ -215,7 +215,8 @@
<div
v-if=
"reviewDetail.result"
>
<div
v-if=
"reviewDetail.result.fileList"
>
<template
v-for=
"i in reviewDetail.result.fileList"
>
《
{{
i
.
fileName
}}
》
{{
i
.
catalogue
}}
{{
i
.
fileName
?
`《${i.fileName
}
》`
:
'__'
}}
{{
i
.
catalogue
}}
<
/template
>
<
/div
>
<
div
v
-
if
=
"reviewDetail.result.comment"
>
...
...
@@ -360,6 +361,13 @@ export default {
await
this
.
getTask
()
this
.
openAll
()
}
,
async
activated
()
{
if
(
this
.
$route
.
query
.
id
)
{
this
.
taskId
=
this
.
$route
.
query
.
id
}
await
this
.
getTask
()
this
.
openAll
()
}
,
methods
:
{
openAll
()
{
this
.
activeNames
=
this
.
model
.
carReviewTask
.
standard
.
map
(
i
=>
{
...
...
src/views/processing/carReview/vehicle-type/index.vue
View file @
29cbd7ee
...
...
@@ -369,6 +369,13 @@ export default {
await
this
.
getTask
()
this
.
openAll
()
},
async
activated
()
{
if
(
this
.
$route
.
query
.
id
)
{
this
.
taskId
=
this
.
$route
.
query
.
id
}
await
this
.
getTask
()
this
.
openAll
()
},
methods
:
{
/**
* 获取任务详情
...
...
src/views/processing/carReview/write-check-form/components/previewView.vue
View file @
29cbd7ee
...
...
@@ -102,7 +102,8 @@
<div
v-if=
"reviewDetail.result"
>
<div
v-if=
"reviewDetail.result.fileList"
>
<template
v-for=
"i in reviewDetail.result.fileList"
>
《
{{
i
.
fileName
}}
》
{{
i
.
catalogue
}}
{{
i
.
fileName
?
`《${i.fileName
}
》`
:
'__'
}}
{{
i
.
catalogue
}}
<
/template
>
<
/div
>
<
div
v
-
if
=
"reviewDetail.result.comment"
>
...
...
src/views/processing/carReview/write-check-form/index.vue
View file @
29cbd7ee
...
...
@@ -127,13 +127,15 @@
:rules=
"rules"
>
<el-form-item
class=
"right-content-item"
label=
"标准章节"
>
<
span>
{{
taskModel
.
chapter
}}
</span
>
<
div
style=
"display: flex"
>
{{
taskModel
.
chapter
}}
</div
>
</el-form-item>
<el-form-item
class=
"right-content-item"
label=
"标准要求"
>
<
span>
{{
taskModel
.
standardText
}}
</span
>
<
div
style=
"display: flex"
>
{{
taskModel
.
standardText
}}
</div
>
</el-form-item>
<el-form-item
class=
"right-content-item"
label=
"审查要点"
>
<span>
{{
taskModel
.
reviewKeypointText
}}
</span>
<div
style=
"display: flex"
>
{{
taskModel
.
reviewKeypointText
}}
</div>
</el-form-item>
<el-form-item
class=
"right-content-item"
label=
"审查细则"
>
<div
class=
"scene-content"
>
...
...
@@ -325,7 +327,10 @@
</el-form>
</div>
</div>
<div
v-else
class=
"empty-message"
>
-暂无未完成条目-
</div>
<div
v-else
class=
"empty-message"
>
<iconpark-icon
name=
"wutiaomu"
size=
"120px"
></iconpark-icon>
<span>
无未完成条目
</span>
</div>
</div>
<div
class=
"bottom-btn"
>
<footer-button
...
...
@@ -461,6 +466,14 @@ export default {
await
this
.
getTask
()
this
.
handleCircle
(
0
)
},
async
activated
()
{
this
.
taskId
=
this
.
$route
.
query
.
id
this
.
$store
.
dispatch
(
'processing/getCompanyFiles'
,
{
taskId
:
this
.
$route
.
query
.
taskId
})
await
this
.
getTask
()
this
.
handleCircle
(
0
)
},
methods
:
{
/**
* 企业文件保存回调
...
...
@@ -749,6 +762,20 @@ export default {
*确认车型审查
*/
submitFrom
()
{
if
(
this
.
$refs
.
form
)
{
this
.
$refs
.
form
.
validate
(
valid
=>
{
if
(
valid
)
{
this
.
submitFromData
()
}
})
}
else
{
this
.
submitFromData
()
}
},
/**
*确认车型审查
*/
submitFromData
()
{
this
.
$modal
.
confirm
(
'是否确认提交表单,提交后不可修改'
,
{
type
:
'warning'
,
...
...
src/views/processing/carTest/confirmation-test/index.vue
View file @
29cbd7ee
...
...
@@ -281,6 +281,10 @@ export default {
this
.
getTest
()
await
this
.
getTestDetail
()
},
activated
()
{
this
.
getTest
()
this
.
getTestDetail
()
},
methods
:
{
getRows3
,
testmMthod
()
{
...
...
src/views/processing/carTest/execution-test-plan/components/SchemeView.vue
0 → 100644
View file @
29cbd7ee
<
template
>
<el-drawer
title=
"实验方案"
:visible
.
sync=
"dialogManger.dialogVisible"
direction=
"rtl"
size=
"80%"
:before-close=
"handleClose"
:wrapper-closable=
"false"
>
<template
slot=
"title"
>
<div
class=
"custom_title"
>
实验方案
</div>
</
template
>
<div
class=
"main-content-style"
>
<!--card统计值-->
<div
class=
"message-list"
>
<div
class=
"message-box"
style=
"background-color: #2eba3c"
>
<div
class=
"message-detail"
>
<div
class=
"detail-title"
>
审查细则(条)
</div>
<div
class=
"detail-num mt10"
>
<!-- {{ model.systemReviewTask.details }} -->
</div>
</div>
<svg-icon
class=
"message-icon"
width=
"64px"
height=
"64px"
icon-class=
"tag_shechaxize"
></svg-icon>
</div>
<div
class=
"message-box"
style=
"background-color: #477bba"
>
<div
class=
"message-detail"
>
<div
class=
"detail-title"
>
审查细则符合率(%)
</div>
<div
class=
"detail-num mt10"
>
<!-- {{ model.systemReviewTask.detailsPass }}% -->
</div>
</div>
<svg-icon
class=
"message-icon"
width=
"64px"
height=
"64px"
icon-class=
"tag_fuhelv"
></svg-icon>
</div>
<div
class=
"message-box"
style=
"background-color: #eca740"
>
<div
class=
"message-detail"
>
<div
class=
"detail-title"
>
标准条款(条)
</div>
<div
class=
"detail-num mt10"
>
<!-- {{ model.systemReviewTask.standards }} -->
</div>
</div>
<svg-icon
class=
"message-icon"
width=
"64px"
height=
"64px"
icon-class=
"tag_biaozhuntiaokuan"
></svg-icon>
</div>
<div
class=
"message-box"
style=
"background-color: #47baba"
>
<div
class=
"message-detail"
>
<div
class=
"detail-title"
>
标准条款通过率(%)
</div>
<div
class=
"detail-num mt10"
>
<!-- {{ model.systemReviewTask.standardsPass }}% -->
</div>
</div>
<svg-icon
class=
"message-icon"
width=
"64px"
height=
"64px"
icon-class=
"tag_biaozhuntiaokuan"
></svg-icon>
</div>
<div
class=
"message-box"
style=
"background-color: #6c47ba"
>
<div
class=
"message-detail"
>
<div
class=
"detail-title"
>
参与审查人数(人)
</div>
<div
class=
"detail-num mt10"
>
<!-- {{ model.systemReviewTask.person }} -->
</div>
</div>
<svg-icon
class=
"message-icon"
icon-class=
"tag_shenehrenshu"
width=
"64px"
height=
"64px"
></svg-icon>
</div>
</div>
<!--审查表单概要-->
<div
class=
"form-review-questionnaire"
>
<div
class=
"title-display"
>
<span
class=
"title-i"
></span>
<span
class=
"title-content"
>
审查表单概要
</span>
<div
class=
"control-btns"
>
<div
class=
"control-btn"
@
click=
"openAll()"
>
<icon-park
type=
"down-c"
theme=
"outline"
size=
"16"
style=
"margin-right: 5px"
fill=
"#303133"
/>
全部展开
</div>
<div
class=
"control-btn"
@
click=
"closeAll()"
>
<icon-park
type=
"up-c"
theme=
"outline"
size=
"16"
style=
"margin-right: 5px"
fill=
"#303133"
/>
全部收起
</div>
</div>
</div>
<!--审查表单概要-->
<collapse
v-model=
"activeNames"
class=
"mt10"
>
<collapse-item
v-for=
"(item, key) in model"
:key=
"key"
:name=
"item.chapter"
>
<span
slot=
"title"
style=
"width: 100%"
>
<div
class=
"standard-box"
>
<div
class=
"standard-left"
>
<div
class=
"standard"
>
标准要求:
</div>
<div
class=
"standard-title"
>
{{ item.chapter + item.text }}
</div>
</div>
<!-- <div class="standard-result">
审查结果:
<span v-if="item.passed == 1" class="green">符合</span>
<span v-else class="orange">不符合</span>
</div> -->
</div>
</span>
<table
class=
"table"
>
<tr>
<th>
测试场景
</th>
<th>
测试方法
</th>
<th>
用例编号
</th>
<th>
用例名称
</th>
<th>
对应输入
</th>
<th
class=
"investigate-result"
>
测试结果
</th>
</tr>
<
template
v-for=
"(v, k) in item.testCaseList"
>
<tr
:key=
"k"
>
<td>
{{
v
.
testScenario
}}
</td>
<td>
{{
v
.
testScenario
}}
</td>
<td>
{{
v
.
usecaseNo
}}
</td>
<td>
{{
v
.
testScenario
}}
</td>
<td></td>
<td
align=
"center"
class=
"investigate-result"
>
<!--
<el-tag
v-if=
"reviewDetail.result.passed === 1"
size=
"medium"
type=
"success"
>
通过
</el-tag
>
-->
<el-tag
size=
"medium"
type=
"warning"
>
不通过
</el-tag>
</td>
</tr>
</
template
>
</table>
</collapse-item>
</collapse>
</div>
</div>
<div
class=
"dialog-button"
>
<el-button
size=
"mini"
@
click=
"dialogManger.dialogVisible = false"
>
关 闭
</el-button
>
</div>
</el-drawer>
</template>
<
script
>
import
{
testDetail
}
from
'@/api/task/test'
import
collapse
from
'@/components/Collapse/collapse'
import
collapseItem
from
'@/components/Collapse/collapse-item'
export
default
{
components
:
{
collapse
:
collapse
,
'collapse-item'
:
collapseItem
},
props
:
{
dialogManger
:
{
type
:
Object
,
default
:
()
=>
{
return
{
dialogVisible
:
false
,
source
:
{},
dialogEditId
:
undefined
}
}
}
},
data
()
{
return
{
loading
:
true
,
model
:
[],
activeNames
:
[]
}
},
watch
:
{
async
'dialogManger.dialogVisible'
(
newValue
)
{
if
(
newValue
)
{
await
this
.
getTestDetail
(
this
.
dialogManger
.
dialogEditId
)
this
.
openAll
()
}
}
},
methods
:
{
/** 关闭抽屉 */
handleClose
()
{
this
.
dialogManger
.
dialogVisible
=
false
},
/** 获取任务详情 */
async
getTestDetail
(
id
)
{
this
.
loading
=
true
const
res
=
await
testDetail
({
taskId
:
id
})
this
.
model
=
res
.
data
this
.
loading
=
false
},
/** 全部展开 */
openAll
()
{
this
.
activeNames
=
this
.
model
.
map
(
i
=>
{
return
i
.
chapter
})
},
/** 全部收起 */
closeAll
()
{
this
.
activeNames
=
[]
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.dialog-button
{
position
:
fixed
;
bottom
:
0px
;
background
:
#ffffff
;
right
:
0
;
padding
:
20px
;
text-align
:
end
;
}
.form-review-questionnaire
{
padding
:
0
38px
;
}
.el-table
{
width
:
auto
;
}
::v-deep
.el-drawer__header
{
margin-bottom
:
0px
!
important
;
}
.custom_title
{
color
:
#303133
!
important
;
font-size
:
18px
;
font-weight
:
400
;
}
</
style
>
src/views/processing/carTest/execution-test-plan/index.vue
View file @
29cbd7ee
<!-- 测试用例详情 -->
<
template
>
<task-standard>
<div
slot=
"header-right"
>
<header-button
icon=
"preview-open"
type=
"default"
@
click=
"handlePreview"
>
查看实验方案
</header-button>
<header-button
icon=
"arrow-left"
class=
"back-btn"
type=
"no-line"
@
click=
"goBack"
>
返回
</header-button>
</div>
<div
class=
"web-page"
>
<iframe
:src=
"url"
frameborder=
"0"
style=
"width: 100%; height: 100%"
></iframe>
<scheme-view
:dialog-manger=
"dialogManger"
></scheme-view>
</div>
</task-standard>
</
template
>
<
script
>
import
{
NewFileTestProject
}
from
'@/api/graphql/client.graphql'
import
SchemeView
from
'./components/SchemeView.vue'
import
routerMixins
from
'@/mixins/router'
export
default
{
name
:
'Index'
,
name
:
'Scheme'
,
components
:
{
SchemeView
:
SchemeView
},
mixins
:
[
routerMixins
],
data
()
{
return
{
id
:
this
.
$route
.
query
,
url
:
''
url
:
''
,
dialogManger
:
{
dialogVisible
:
false
,
dialogEditId
:
null
}
}
},
mounted
()
{
const
id
=
this
.
$route
.
query
.
id
this
.
dialogManger
.
dialogEditId
=
this
.
$route
.
query
.
taskid
this
.
url
=
`https://10.12.48.78:8090/car/complianceTestingCenter/projectOverView/
${
id
}
`
},
activated
()
{
const
id
=
this
.
$route
.
query
.
id
this
.
dialogManger
.
dialogEditId
=
this
.
$route
.
query
.
taskid
this
.
url
=
`https://10.12.48.78:8090/car/complianceTestingCenter/projectOverView/
${
id
}
`
},
methods
:
{}
methods
:
{
handlePreview
()
{
this
.
dialogManger
.
dialogVisible
=
true
}
}
}
</
script
>
...
...
src/views/processing/carTest/review-form/index.vue
View file @
29cbd7ee
...
...
@@ -173,6 +173,12 @@ export default {
}
},
mounted
()
{
console
.
log
(
'mounted'
)
this
.
getTestDetail
()
this
.
getTest
()
},
activated
()
{
console
.
log
(
'activated'
)
this
.
getTestDetail
()
this
.
getTest
()
},
...
...
src/views/processing/carTest/source-record/index.vue
0 → 100644
View file @
29cbd7ee
<
template
>
<!--查看审查问卷页面-->
<task-standard
v-loading=
"loading"
>
<div
slot=
"header-right"
>
<header-button
icon=
"arrow-left"
type=
"no-line"
@
click=
"goBack"
>
返回
</header-button>
</div>
<!--2-统计值-->
<div
class=
"main-content-style"
>
<!--任务编号,名称,单位-->
<div
class=
"task-box"
>
<div
class=
"task-header"
>
<div
class=
"task-item"
>
<span
class=
"task-label"
>
任务编号:
</span>
<span
class=
"task-content"
>
{{
task
.
taskNo
}}
</span>
</div>
<div
class=
"task-item"
>
<span
class=
"task-label"
>
任务名称:
</span>
<span
class=
"task-content"
>
{{
task
.
taskName
}}
</span>
</div>
<div
class=
"task-item"
>
<span
class=
"task-label"
>
委托单位:
</span>
<span
class=
"task-content"
>
{{
task
.
entrustedUnit
}}
</span>
</div>
<!--
<div
class=
"task-item"
>
-->
<!--
<span
class=
"task-label"
>
任务状态:
</span>
-->
<!--
<span
class=
"task-content"
>
-->
<!--
{{
getDictData
(
dict
.
type
.
task_test_status
,
task
.
taskStatus
)
}}
-->
<!--
</span>
-->
<!--
</div>
-->
</div>
<div
class=
"task-body"
>
<!--card统计值-->
<div
class=
"message-list"
>
<div
class=
"message-box"
style=
"background-color: #2eba3c"
>
<div
class=
"message-detail"
>
<div
class=
"detail-title"
>
测试用例(条)
</div>
<div
class=
"detail-num mt10"
>
{{
model
.
carReviewTask
.
details
}}
</div>
</div>
<svg-icon
class=
"message-icon"
width=
"64px"
height=
"64px"
icon-class=
"tag_shechaxize"
></svg-icon>
</div>
<div
class=
"message-box"
style=
"background-color: #477bba"
>
<div
class=
"message-detail"
>
<div
class=
"detail-title"
>
标准条款(条)
</div>
<div
class=
"detail-num mt10"
>
{{
model
.
carReviewTask
.
detailsPass
}}
</div>
</div>
<svg-icon
class=
"message-icon"
width=
"64px"
height=
"64px"
icon-class=
"tag_fuhelv"
></svg-icon>
</div>
<div
class=
"message-box"
style=
"background-color: #eca740"
>
<div
class=
"message-detail"
>
<div
class=
"detail-title"
>
测试通过率(%)
</div>
<div
class=
"detail-num mt10"
>
{{
model
.
carReviewTask
.
standards
}}
%
</div>
</div>
<svg-icon
class=
"message-icon"
width=
"64px"
height=
"64px"
icon-class=
"tag_biaozhuntiaokuan"
></svg-icon>
</div>
<div
class=
"message-box"
style=
"background-color: #47baba"
>
<div
class=
"message-detail"
>
<div
class=
"detail-title"
>
测试通过(个)
</div>
<div
class=
"detail-num mt10"
>
{{
model
.
carReviewTask
.
standardsPass
}}
</div>
</div>
<svg-icon
class=
"message-icon"
width=
"64px"
height=
"64px"
icon-class=
"tag_biaozhuntiaokuan"
></svg-icon>
</div>
<div
class=
"message-box"
style=
"background-color: #6c47ba"
>
<div
class=
"message-detail"
>
<div
class=
"detail-title"
>
测试未通过(个)
</div>
<div
class=
"detail-num mt10"
>
{{
model
.
carReviewTask
.
person
}}
</div>
</div>
<svg-icon
class=
"message-icon"
icon-class=
"tag_shenehrenshu"
width=
"64px"
height=
"64px"
></svg-icon>
</div>
</div>
</div>
</div>
<!--测试情况概要-->
<div>
<div
class=
"form-review-questionnaire"
>
<div
class=
"title-display"
>
<span
class=
"title-i"
></span>
<span
class=
"title-content"
>
测试情况概要
</span>
</div>
<!--审查表单概要-->
<table
class=
"table"
>
<col
style=
"width: 100px"
/>
<thead>
<tr>
<th
style=
"width: 100px"
>
章节号
</th>
<th>
标准技术要求
</th>
<th>
标准测试方法
</th>
<th>
测试场景
</th>
<th>
测试类型
</th>
<th>
用例编号
</th>
<th>
测试结果
</th>
<!--
<th>
用例名称
</th>
-->
<!--
<th>
工具
</th>
-->
<!--
<th>
对应输入
</th>
-->
<!--
<th
style=
"width: 370px"
>
测试用例
</th>
-->
</tr>
</thead>
<tbody>
<template
v-for=
"(i, PointIndex) in tableData"
>
<tr
:key=
"'PointIndex1' + PointIndex"
>
<td
align=
"center"
:rowspan=
"getRows3(i)"
>
{{
i
.
chapter
}}
</td>
<td
align=
"center"
:rowspan=
"getRows3(i)"
>
{{
i
.
text
}}
</td>
<td
align=
"center"
:rowspan=
"getRows3(i)"
>
{{
i
.
testMethod
}}
</td>
</tr>
<template
v-for=
"(v, testCaseIndex) in i.testCaseList"
>
<tr
:key=
"'testCaseIndex' + PointIndex + testCaseIndex"
>
<td
align=
"center"
rowspan=
"1"
>
{{
v
.
testScenario
}}
</td>
<td
align=
"center"
rowspan=
"1"
>
{{
v
.
testType
}}
</td>
<td
align=
"center"
rowspan=
"1"
>
{{
v
.
usecaseNo
}}
</td>
<td
align=
"center"
rowspan=
"1"
>
{{
''
}}
</td>
<!--
<td
align=
"center"
rowspan=
"1"
>
-->
<!--
{{
v
.
name
}}
-->
<!--
</td>
-->
<!--
<td
align=
"center"
rowspan=
"1"
>
-->
<!--
{{
v
.
tools
}}
-->
<!--
</td>
-->
<!--
<td
align=
"center"
rowspan=
"1"
>
-->
<!--
{{
v
.
input
}}
-->
<!--
</td>
-->
<!--
<td
align=
"center"
rowspan=
"1"
>
-->
<!--
{{
v
.
description
}}
-->
<!--
</td>
-->
</tr>
</
template
>
</template>
</tbody>
</table>
</div>
<!--签字确认-->
<div
class=
"form-signature-confirmation"
>
<div
class=
"title-display"
>
<span
class=
"title-i"
></span>
<span
class=
"title-content"
>
签字确认
</span>
</div>
<div
class=
"img-display"
>
<div
class=
"img-item"
>
<div
class=
"img-label label-required"
>
检验负责人
</div>
<img
v-if=
"ruleForm.inspectionLeader"
class=
"img"
:src=
"ruleForm.inspectionLeader"
/>
<div
v-else
class=
"img"
>
<iconpark-icon
name=
"wuqianzi"
size=
"120"
></iconpark-icon>
<div
class=
"img-text"
>
暂无签字
</div>
</div>
</div>
</div>
</div>
<!--返回按钮-->
<div
class=
"bottom-btn"
>
<footer-button
type=
"default"
icon=
"arrow-left"
@
click=
"$router.go(-1)"
>
返回
</footer-button>
<footer-button
v-if=
"this.isLeader !== false"
type=
"primary"
icon=
"hard-disk-one"
@
click=
"goToProcessedReview"
>
确认提交
</footer-button>
</div>
</div>
</div>
</task-standard>
</template>
<!--js逻辑-->
<
script
>
import
routerMixins
from
'@/mixins/router'
import
{
getRows3
}
from
'@/utils/reviewDetailsTable'
import
{
testDetail
}
from
'@/api/task/test'
import
{
getBySubtaskId
,
taskImageSubmit
}
from
'@/api/task/task'
export
default
{
name
:
'Index'
,
dicts
:
[
'task_test_status'
],
mixins
:
[
routerMixins
],
data
()
{
return
{
tableData
:
[],
task
:
{},
model
:
{
carReviewTask
:
{},
reviewSceneChangeTasks
:
{},
detailsList
:
[]
},
ruleForm
:
{
enterpriseLeader
:
''
,
inspectionLeader
:
''
,
result
:
[]
},
loading
:
false
,
isLeader
:
''
}
},
mounted
()
{
this
.
getTest
()
this
.
getTestDetail
()
},
methods
:
{
getRows3
,
/* 返回跳转*/
goToProcessedReview
()
{
// this.ruleForm.taskId = '1771093631118106626'
const
formData
=
{
// imagesUrl: [
// this.ruleForm.enterpriseLeader,
// this.ruleForm.inspectionLeader
// ],
imagesUrl
:
[{}],
taskId
:
this
.
$route
.
query
.
id
}
console
.
log
(
'formData'
,
formData
)
taskImageSubmit
(
formData
).
then
(
res
=>
{
if
(
res
.
code
===
200
)
{
this
.
$modal
.
msgSuccess
(
'确认提交成功'
)
this
.
$router
.
push
({
path
:
'/processing/unprocessed-review'
})
}
else
{
this
.
$modal
.
msgError
(
res
.
msg
)
}
})
},
/** 获取任务详情 */
getTest
()
{
getBySubtaskId
({
id
:
this
.
$route
.
query
.
id
}).
then
(
res
=>
{
if
(
res
.
code
===
200
)
{
this
.
task
=
res
.
data
const
auditors
=
res
.
data
.
auditors
this
.
isLeader
=
auditors
.
some
(
item
=>
item
.
isLeader
===
1
)
console
.
log
(
'found'
,
this
.
isLeader
)
// 输出: true 如果找到,否则输出: false
}
})
},
getTestDetail
()
{
this
.
loading
=
true
testDetail
({
taskId
:
this
.
$route
.
query
.
id
}).
then
(
res
=>
{
this
.
tableData
=
res
.
data
this
.
loading
=
false
})
}
}
}
</
script
>
<
style
scoped
>
.form-signature-confirmation
.img-item
.img
{
width
:
50%
!important
;
}
.table
{
margin-top
:
20px
;
}
.table
th
{
background-color
:
#f2f2f2
!important
;
}
</
style
>
src/views/processing/checkFileLibrary/index.vue
View file @
29cbd7ee
...
...
@@ -75,6 +75,7 @@
sortable
min-width=
"210"
prop=
"enterpriseName"
show-overflow-tooltip
align=
"left"
>
</el-table-column>
...
...
@@ -82,6 +83,7 @@
prop=
"fileName"
label=
"文件名称"
min-width=
"220"
show-overflow-tooltip
align=
"left"
>
</el-table-column>
...
...
@@ -89,6 +91,7 @@
prop=
"version"
label=
"文件版本"
min-width=
"100"
show-overflow-tooltip
align=
"left"
>
</el-table-column>
...
...
@@ -121,6 +124,7 @@
prop
=
"storage"
label
=
"存储位置"
min
-
width
=
"210"
show
-
overflow
-
tooltip
align
=
"left"
>
<
/el-table-column
>
...
...
@@ -128,6 +132,7 @@
prop
=
"identifyNumber"
label
=
"文件识别号"
min
-
width
=
"170"
show
-
overflow
-
tooltip
align
=
"left"
>
<
/el-table-column
>
...
...
@@ -139,11 +144,13 @@
>
<
template
slot
-
scope
=
"scope"
>
<
el
-
image
v
-
if
=
"scope.row.photo"
style
=
"width: 36px; height: 36px"
:
src
=
"baseUrl + scope.row.photo"
:
preview
-
src
-
list
=
"[baseUrl + scope.row.photo]"
>
<
/el-image
>
<
div
v
-
else
>--<
/div
>
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
...
...
src/views/processing/fileLibrary/index.vue
View file @
29cbd7ee
...
...
@@ -146,11 +146,13 @@
>
<
template
slot
-
scope
=
"scope"
>
<
el
-
image
v
-
if
=
"scope.row.photo"
style
=
"width: 36px; height: 36px"
:
src
=
"baseUrl + scope.row.photo"
:
preview
-
src
-
list
=
"[baseUrl + scope.row.photo]"
>
<
/el-image
>
<
div
v
-
else
>--<
/div
>
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
...
...
@@ -223,6 +225,13 @@ export default {
refreshList
:
false
,
dialogEditId
:
0
}
,
queryParams
:
{
pageNum
:
1
,
pageSize
:
10
,
taskId
:
this
.
$route
.
query
.
id
,
isAsc
:
'desc'
,
orderByColumn
:
'createTime'
}
,
refreshList
:
false
,
baseUrl
:
process
.
env
.
VUE_APP_IMAGE_API
,
listUrl
:
'/review/enterprise/archive/findEnterpriseArchiveByTaskId'
,
...
...
src/views/processing/processed-review/index.vue
View file @
29cbd7ee
...
...
@@ -173,7 +173,7 @@
size=
"mini"
@
click=
"
goNext(
'/processing/car
Review
/source-record?id=' +
'/processing/car
Test
/source-record?id=' +
item.modelTestTaskId
)
"
...
...
src/views/processing/retention-file/index.vue
View file @
29cbd7ee
...
...
@@ -46,6 +46,15 @@
frameborder=
"0"
style=
"width: 100%; height: 100%"
></iframe>
<!--
<object
id=
"pdf-object"
:data=
"fileUrl"
type=
"application/pdf"
width=
"100%"
height=
"100%"
>
<param
name=
"filename"
value=
"检验报告.pdf"
/>
</object>
-->
</div>
</task-standard>
</
template
>
...
...
src/views/processing/systemReview/confirm-result/index.vue
View file @
29cbd7ee
...
...
@@ -332,6 +332,13 @@ export default {
await
this
.
getTask
()
this
.
openAll
()
},
async
activated
()
{
if
(
this
.
$route
.
query
.
id
)
{
this
.
taskId
=
this
.
$route
.
query
.
id
}
await
this
.
getTask
()
this
.
openAll
()
},
methods
:
{
async
getTask
()
{
this
.
loading
=
true
...
...
src/views/processing/systemReview/review-form/index.vue
View file @
29cbd7ee
...
...
@@ -214,6 +214,13 @@ export default {
await
this
.
getTask
()
this
.
openAll
()
},
async
activated
()
{
if
(
this
.
$route
.
query
.
id
)
{
this
.
taskId
=
this
.
$route
.
query
.
id
}
await
this
.
getTask
()
this
.
openAll
()
},
methods
:
{
/**
* 获取任务详情
...
...
src/views/processing/systemReview/source-record/index.vue
View file @
29cbd7ee
...
...
@@ -220,7 +220,8 @@
<div
v-if=
"reviewDetail.result"
>
<div
v-if=
"reviewDetail.result.fileList"
>
<template
v-for=
"i in reviewDetail.result.fileList"
>
《
{{
i
.
fileName
}}
》
{{
i
.
catalogue
}}
{{
i
.
fileName
?
`《${i.fileName
}
》`
:
'__'
}}
{{
i
.
catalogue
}}
<
/template
>
<
/div
>
<
div
v
-
if
=
"reviewDetail.result.comment"
>
...
...
@@ -373,6 +374,13 @@ export default {
await
this
.
getTask
()
this
.
openAll
()
}
,
async
activated
()
{
if
(
this
.
$route
.
query
.
id
)
{
this
.
taskId
=
this
.
$route
.
query
.
id
}
await
this
.
getTask
()
this
.
openAll
()
}
,
methods
:
{
/**
* 获取子任务详情
...
...
src/views/processing/systemReview/write-check-form/components/previewView.vue
View file @
29cbd7ee
...
...
@@ -102,7 +102,8 @@
<div
v-if=
"reviewDetail.result"
>
<div
v-if=
"reviewDetail.result.fileList"
>
<template
v-for=
"i in reviewDetail.result.fileList"
>
《
{{
i
.
fileName
}}
》
{{
i
.
catalogue
}}
{{
i
.
fileName
?
`《${i.fileName
}
》`
:
'__'
}}
{{
i
.
catalogue
}}
<
/template
>
<
/div
>
<
div
v
-
if
=
"reviewDetail.result.comment"
>
...
...
src/views/processing/systemReview/write-check-form/index.vue
View file @
29cbd7ee
...
...
@@ -485,6 +485,14 @@ export default {
await
this
.
getTask
()
this
.
handleCircle
(
0
)
},
async
activated
()
{
this
.
taskId
=
this
.
$route
.
query
.
id
this
.
$store
.
dispatch
(
'processing/getCompanyFiles'
,
{
taskId
:
this
.
$route
.
query
.
taskId
})
await
this
.
getTask
()
this
.
handleCircle
(
0
)
},
methods
:
{
/**
* 企业文件保存回调
...
...
@@ -783,6 +791,20 @@ export default {
*确认体系审查
*/
submitFrom
()
{
if
(
this
.
$refs
.
form
)
{
this
.
$refs
.
form
.
validate
(
valid
=>
{
if
(
valid
)
{
this
.
submitFromData
()
}
})
}
else
{
this
.
submitFromData
()
}
},
/**
*确认体系审查
*/
submitFromData
()
{
this
.
$modal
.
confirm
(
'是否确认提交表单,提交后不可修改'
,
{
type
:
'warning'
,
...
...
@@ -793,10 +815,7 @@ export default {
reviewTaskConfirm
({
taskId
:
this
.
taskId
}).
then
(
res
=>
{
this
.
$modal
.
msgSuccess
(
'确认提交成功'
)
this
.
$router
.
push
({
path
:
'/processing/unprocessed-review'
})
this
.
$router
.
go
(
-
1
)
})
})
.
catch
(()
=>
{})
...
...
src/views/processing/unprocessed-review/index.vue
View file @
29cbd7ee
...
...
@@ -298,7 +298,7 @@
>
<span
v-if=
"item.testStatus !== 'NEW'"
>
{{
item
.
testStatus
!==
'FINISH'
?
'(共耗时'
:
'(已耗时'
}}{{
getHourDiff
(
item
.
t
ask
BeginTime
)
}}
)
</span
}}{{
getHourDiff
(
item
.
t
est
BeginTime
)
}}
)
</span
>
</div>
</div>
...
...
@@ -314,7 +314,7 @@
<el-progress
class=
"cell-progress"
:stroke-width=
"12"
:percentage=
"item.systemReview"
:percentage=
"item.systemReview
|| 0
"
></el-progress>
</div>
...
...
@@ -325,7 +325,7 @@
<el-progress
class=
"cell-progress"
:stroke-width=
"12"
:percentage=
"item.carReview"
:percentage=
"item.carReview
|| 0
"
></el-progress>
</div>
<div
...
...
@@ -335,7 +335,7 @@
<el-progress
class=
"cell-progress"
:stroke-width=
"12"
:percentage=
"item.
carTest
"
:percentage=
"item.
test || 0
"
></el-progress>
</div>
</div>
...
...
@@ -594,7 +594,7 @@ export default {
// 执行试验方案
case
'PENDING'
:
this
.
$router
.
push
({
path
:
`/processing/carTest/execution-test-plan?id=
${
testSchemeId
}
`
path
:
`/processing/carTest/execution-test-plan?
taskid=
${
id
}
&
id=
${
testSchemeId
}
`
})
break
// 确认测试结果
...
...
src/views/setting/materialLibrary/index.vue
View file @
29cbd7ee
...
...
@@ -177,10 +177,11 @@ export default {
}
}
.submit-button
{
text-align
:
end
;
position
:
fixed
;
bottom
:
0px
;
background
:
#ffffff
;
width
:
10
0%
;
width
:
3
0%
;
padding
:
20px
;
}
</
style
>
src/views/setting/sample/index.vue
View file @
29cbd7ee
...
...
@@ -328,6 +328,7 @@
>
</el-input>
</el-form-item>
<div
style=
"height: 60px"
></div>
<div
class=
"dialog-button"
>
<el-button
v-loading=
"addLoading"
...
...
@@ -705,9 +706,12 @@ export default {
</
script
>
<
style
lang=
"scss"
scoped
>
.dialog-button
{
display
:
flex
;
justify-content
:
flex-end
;
margin-right
:
20px
;
position
:
fixed
;
bottom
:
0px
;
background
:
#ffffff
;
width
:
39%
;
padding
:
20px
;
text-align
:
end
;
}
.custom-link
{
...
...
src/views/setting/sample/taskDetails/index.vue
View file @
29cbd7ee
...
...
@@ -616,13 +616,16 @@
class=
"sampleCard"
>
<div
class=
"sampleHeader"
>
<div
class=
"avater"
>
<div
v-if=
"item.trademark"
class=
"avater"
>
<image-preview
width=
"62px"
height=
"62px"
:src=
"item.trademark"
></image-preview>
</div>
<div
v-else
class=
"avater"
>
<iconpark-icon
name=
"yangpinxinxi"
size=
"62"
></iconpark-icon>
</div>
<div
class=
"title"
>
<div
class=
"top"
>
{{
item
.
sampleNumber
}}
</div>
<div
class=
"bottom"
>
{{
item
.
sampleName
}}
</div>
...
...
@@ -735,13 +738,16 @@
class=
"sampleCard"
>
<div
class=
"sampleHeader"
>
<div
class=
"avater"
>
<div
v-if=
"item.trademark"
class=
"avater"
>
<image-preview
width=
"62px"
height=
"62px"
:src=
"item.trademark"
></image-preview>
</div>
<div
v-else
class=
"avater"
>
<iconpark-icon
name=
"yangpinxinxi"
size=
"62"
></iconpark-icon>
</div>
<div
class=
"title"
>
<div
class=
"top"
>
{{
item
.
sampleNumber
}}
</div>
<div
class=
"bottom"
>
{{
item
.
sampleName
}}
</div>
...
...
src/views/system/notice/index.vue
View file @
29cbd7ee
...
...
@@ -67,18 +67,7 @@
>
新增
</el-button
>
</el-col>
<el-col
:span=
"1.5"
>
<el-button
v-hasPermi=
"['system:notice:edit']"
type=
"success"
plain
icon=
"el-icon-edit"
size=
"mini"
:disabled=
"single"
@
click=
"handleUpdate"
>
修改
</el-button
>
</el-col>
<!-- common/upload -->
<el-col
:span=
"1.5"
>
<el-button
v-hasPermi=
"['system:notice:remove']"
...
...
src/views/task/edit/index.vue
View file @
29cbd7ee
...
...
@@ -296,6 +296,16 @@
@
change=
"handleModChange"
/>
</el-form>
<!-- 文件上传 -->
<div
class=
"tip-navigation"
>
<div
class=
"tip"
></div>
<div
class=
"tip-title"
>
文件信息
</div>
</div>
<DocumentInfo
class=
"global-left-margin"
:pass-data=
"passDocumentInfoArr"
@
change=
"handleDocumentInfoChange"
/>
<!--返回按钮-->
<div
class=
"bottom-btn"
>
<footer-button
...
...
@@ -328,6 +338,7 @@ import {
}
from
'@/api/task/task'
import
{
mapGetters
}
from
'vuex'
import
{
getDicts
}
from
'@/api/system/dict/data'
import
DocumentInfo
from
'@/views/task/new/components/DocumentInfo.vue'
export
default
{
dicts
:
[
...
...
@@ -337,11 +348,14 @@ export default {
'inspection_item'
],
components
:
{
DocumentInfo
,
CarInfo
,
PartInfo
},
data
()
{
return
{
passDocumentInfoArr
:
[],
// 接详情、传入子组件
documentInfoArr
:
[],
// 调用新增接口,使用(拿取的子组件数据)
// 最终提交
taskCreateRequest
:
{
standardId
:
''
,
// 检验依据
...
...
@@ -609,6 +623,9 @@ export default {
...
mapGetters
([
'standard'
,
'standardList'
,
'testScenarioList'
])
},
methods
:
{
handleDocumentInfoChange
(
value
)
{
this
.
documentInfoArr
=
value
},
getTaskDetail
(
taskId
)
{
getTaskById
({
id
:
taskId
}).
then
(
response
=>
{
console
.
log
(
'response'
,
response
)
...
...
@@ -677,12 +694,8 @@ export default {
item
.
flag
=
1
})
}
console
.
log
(
'零件样品信息'
,
this
.
taskDetail
.
partVehicleSample
,
this
.
partInfoArr
)
console
.
log
(
'model'
,
this
.
model
)
// 文件
this
.
passDocumentInfoArr
=
this
.
taskDetail
.
fileList
})
},
selectAll
()
{
...
...
@@ -770,6 +783,8 @@ export default {
item
.
flag
=
1
})
}
// 文件信息
this
.
passDocumentInfoArr
=
this
.
taskTemporaryStorage
.
fileList
}
})
},
...
...
@@ -1058,6 +1073,8 @@ export default {
this
.
taskCreateRequest
.
partSample
.
forEach
(
item
=>
{
delete
item
.
id
})
// 文件
this
.
taskCreateRequest
.
fileList
=
this
.
documentInfoArr
console
.
log
(
'发布...'
,
this
.
taskCreateRequest
)
if
(
this
.
taskId
===
undefined
)
{
createTask
(
this
.
taskCreateRequest
).
then
(
response
=>
{
...
...
src/views/task/new/components/DocumentInfo.vue
0 → 100644
View file @
29cbd7ee
<
template
>
<div
class=
"upload-file"
>
<!-- 上传按钮 -->
<el-upload
v-if=
"!isDetail"
multiple
ref=
"fileUpload"
:action=
"uploadFileUrl"
:before-upload=
"handleBeforeUpload"
:file-list=
"fileList"
:limit=
"limit"
:on-error=
"handleUploadError"
:on-exceed=
"handleExceed"
:on-success=
"handleUploadSuccess"
:show-file-list=
"false"
:headers=
"headers"
class=
"upload-file-uploader"
>
<!-- 上传按钮 -->
<el-button
size=
"mini"
type=
"primary"
>
选取文件
</el-button>
</el-upload>
<!-- 表格 -->
<el-table
style=
"width: 100%"
border
:data=
"tableData"
>
<el-table-column
label=
"文件名称"
align=
"left"
prop=
"name"
>
<template
slot-scope=
"
{ row }">
<span>
{{
row
.
name
}}
</span>
</
template
>
</el-table-column>
<!-- <el-table-column v-if="isDetail" label="文件" align="left" prop="url">-->
<!-- <template slot-scope="{ row }">-->
<!-- <el-image-->
<!-- style="width: 36px; height: 36px"-->
<!-- :src="showUrl + row.url"-->
<!-- :preview-src-list="[showUrl + row.url]"-->
<!-- >-->
<!-- </el-image>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column
v-if=
"!isDetail"
label=
"排序"
align=
"center"
prop=
"orderIndex"
width=
"200"
>
<
template
slot-scope=
"scope"
>
<div
class=
"sortable-handle-table"
>
<icon-park
type=
"sort-three"
size=
"14"
fill=
"#F9A221"
/>
</div>
</
template
>
</el-table-column>
<el-table-column
v-if=
"!isDetail"
width=
"240"
label=
"操作"
align=
"center"
class-name=
"small-padding fixed-width"
>
<
template
slot-scope=
"scope"
>
<div
class=
"actions-container"
>
<page-button
icon=
"delete"
title=
"删除"
class=
"button-item"
@
click=
"handleDeleteFile(scope.row)"
></page-button>
</div>
</
template
>
</el-table-column>
</el-table>
</div>
</template>
<
script
>
import
Sortable
from
'sortablejs'
import
{
getToken
}
from
'@/utils/auth'
export
default
{
name
:
'DocumentInfo'
,
props
:
{
// 值
value
:
[
String
,
Object
,
Array
],
// 数量限制
limit
:
{
type
:
Number
,
default
:
5
},
// 大小限制(MB)
fileSize
:
{
type
:
Number
,
default
:
5
},
// 文件类型, 例如['png', 'jpg', 'jpeg']
fileType
:
{
type
:
Array
,
default
:
()
=>
[
'doc'
,
'xls'
,
'ppt'
,
'txt'
,
'pdf'
,
'jpg'
,
'png'
,
'jpeg'
]
},
passData
:
{
type
:
Array
,
default
:
()
=>
[]
},
isDetail
:
{
type
:
Boolean
,
default
:
false
}
},
data
()
{
return
{
number
:
0
,
uploadList
:
[],
showUrl
:
'http://49.232.167.247:22038'
,
baseUrl
:
process
.
env
.
VUE_APP_BASE_API
,
uploadFileUrl
:
process
.
env
.
VUE_APP_BASE_API
+
'/common/uploadMinio'
,
// 上传文件服务器地址
headers
:
{
Authorization
:
'Bearer '
+
getToken
()
},
fileList
:
[],
tableData
:
[],
currentFile
:
{}
// 当前上传文件
}
},
watch
:
{
value
:
{
handler
(
val
)
{
if
(
val
)
{
let
temp
=
1
// 首先将值转为数组
const
list
=
Array
.
isArray
(
val
)
?
val
:
this
.
value
.
split
(
','
)
// 然后将数组转为对象数组
this
.
fileList
=
list
.
map
(
item
=>
{
if
(
typeof
item
===
'string'
)
{
item
=
{
name
:
item
,
url
:
item
}
}
item
.
uid
=
item
.
uid
||
new
Date
().
getTime
()
+
temp
++
return
item
})
}
else
{
this
.
fileList
=
[]
return
[]
}
},
deep
:
true
,
immediate
:
true
},
tableData
:
{
handler
(
newValue
,
oldValue
)
{
console
.
log
(
'new'
,
newValue
)
this
.
emitChange
()
},
deep
:
true
},
passData
:
{
handler
(
newValue
,
oldValue
)
{
this
.
tableData
=
JSON
.
parse
(
JSON
.
stringify
(
newValue
))
},
deep
:
true
}
},
created
()
{
// this.tableData = this.passTableData
this
.
$nextTick
(()
=>
{
this
.
rowDrop
()
})
},
methods
:
{
handleDeleteFile
(
row
)
{
this
.
$confirm
(
'是否确认删除此文件'
,
'删除'
,
{
confirmButtonText
:
'确定'
,
concelButtonText
:
'取消'
,
type
:
'warning'
,
customClass
:
'box-logout'
,
cancelButtonClass
:
'resetBtn'
,
closeOnClickModal
:
false
,
confirmButtonClass
:
'queryBtn'
}).
then
(()
=>
{
const
index
=
this
.
tableData
.
findIndex
(
item
=>
item
===
row
)
if
(
index
>
-
1
)
{
this
.
tableData
.
splice
(
index
,
1
)
}
})
},
emitChange
()
{
this
.
$emit
(
'change'
,
this
.
tableData
)
},
// 上传前校检格式和大小
handleBeforeUpload
(
file
)
{
// 校检文件类型
if
(
this
.
fileType
)
{
const
fileName
=
file
.
name
.
split
(
'.'
)
const
fileExt
=
fileName
[
fileName
.
length
-
1
]
const
isTypeOk
=
this
.
fileType
.
indexOf
(
fileExt
)
>=
0
if
(
!
isTypeOk
)
{
this
.
$modal
.
msgError
(
`文件格式不正确, 请上传
${
this
.
fileType
.
join
(
'/'
)}
格式文件!`
)
return
false
}
}
// 校检文件大小
if
(
this
.
fileSize
)
{
const
isLt
=
file
.
size
/
1024
/
1024
<
this
.
fileSize
if
(
!
isLt
)
{
this
.
$modal
.
msgError
(
`上传文件大小不能超过
${
this
.
fileSize
}
MB!`
)
return
false
}
}
this
.
$modal
.
loading
(
'正在上传文件,请稍候...'
)
this
.
number
++
return
true
},
// 文件个数超出
handleExceed
()
{
this
.
$modal
.
msgError
(
`上传文件数量不能超过
${
this
.
limit
}
个!`
)
},
// 上传失败
handleUploadError
(
err
)
{
console
.
log
(
'err'
,
err
)
this
.
$modal
.
msgError
(
'上传文件失败,请重试'
)
this
.
$modal
.
closeLoading
()
},
// 上传成功回调
handleUploadSuccess
(
res
,
file
)
{
if
(
res
.
code
===
200
)
{
console
.
log
(
'res成功'
,
res
)
this
.
tableData
.
push
({
name
:
res
.
originalFilename
,
url
:
res
.
url
,
edit
:
1
})
this
.
uploadList
.
push
({
name
:
res
.
fileName
,
url
:
res
.
fileName
})
this
.
uploadedSuccessfully
()
}
else
{
this
.
number
--
this
.
$modal
.
closeLoading
()
this
.
$modal
.
msgError
(
res
.
msg
)
this
.
$refs
.
fileUpload
.
handleRemove
(
file
)
this
.
uploadedSuccessfully
()
}
},
// 删除文件
handleDelete
(
index
)
{
this
.
fileList
.
splice
(
index
,
1
)
this
.
$emit
(
'input'
,
this
.
listToString
(
this
.
fileList
))
},
// 上传结束处理
uploadedSuccessfully
()
{
if
(
this
.
number
>
0
&&
this
.
uploadList
.
length
===
this
.
number
)
{
this
.
fileList
=
this
.
fileList
.
concat
(
this
.
uploadList
)
this
.
uploadList
=
[]
this
.
number
=
0
this
.
$emit
(
'input'
,
this
.
listToString
(
this
.
fileList
))
this
.
$modal
.
closeLoading
()
}
},
// 获取文件名称
getFileName
(
name
)
{
// 如果是url那么取最后的名字 如果不是直接返回
if
(
name
.
lastIndexOf
(
'/'
)
>
-
1
)
{
return
name
.
slice
(
name
.
lastIndexOf
(
'/'
)
+
1
)
}
else
{
return
name
}
},
// 对象转成指定字符串分隔
listToString
(
list
,
separator
)
{
let
strs
=
''
separator
=
separator
||
','
for
(
const
i
in
list
)
{
strs
+=
list
[
i
].
url
+
separator
}
return
strs
!==
''
?
strs
.
substr
(
0
,
strs
.
length
-
1
)
:
''
},
/** 行-拖拽 */
rowDrop
()
{
const
tbody
=
document
.
querySelector
(
'.upload-file .el-table__body-wrapper tbody'
)
const
_this
=
this
Sortable
.
create
(
tbody
,
{
handle
:
'.sortable-handle-table'
,
onEnd
(
evt
)
{
_this
.
tableData
.
splice
(
evt
.
newIndex
,
0
,
_this
.
tableData
.
splice
(
evt
.
oldIndex
,
1
)[
0
]
)
const
newArray
=
_this
.
tableData
.
slice
(
0
)
_this
.
tableData
=
[]
_this
.
$nextTick
(()
=>
{
_this
.
tableData
=
newArray
})
}
})
}
}
}
</
script
>
<
style
scoped
lang=
"scss"
>
.upload-file-uploader
{
margin-bottom
:
5px
;
}
.upload-file-list
.el-upload-list__item
{
border
:
1px
solid
#e4e7ed
;
line-height
:
2
;
margin-bottom
:
10px
;
position
:
relative
;
}
.upload-file-list
.ele-upload-list__item-content
{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
color
:
inherit
;
}
.ele-upload-list__item-content-action
.el-link
{
margin-right
:
10px
;
}
.actions-container
{
display
:
flex
;
justify-content
:
center
;
}
.sortable-handle-table
{
cursor
:
move
;
}
</
style
>
src/views/task/new/index.vue
View file @
29cbd7ee
...
...
@@ -295,6 +295,16 @@
@
change=
"handleModChange"
/>
</el-form>
<!-- 文件上传 -->
<div
class=
"tip-navigation"
>
<div
class=
"tip"
></div>
<div
class=
"tip-title"
>
文件信息
</div>
</div>
<DocumentInfo
class=
"global-left-margin"
:pass-data=
"passDocumentInfoArr"
@
change=
"handleDocumentChange"
/>
<!--返回按钮-->
<div
class=
"bottom-btn"
>
<footer-button
...
...
@@ -313,7 +323,6 @@
</template>
<
script
>
import
Sortable
from
'sortablejs'
import
{
manufacturerData
}
from
'../../../api/task/new'
import
CarInfo
from
'./components/CarInfo'
import
PartInfo
from
'./components/PartInfo'
import
{
selectSamplePage
}
from
'@/api/system/sample'
...
...
@@ -328,6 +337,8 @@ import {
}
from
'@/api/task/task'
import
{
mapGetters
}
from
'vuex'
import
{
getDicts
}
from
'@/api/system/dict/data'
import
DocumentInfo
from
'@/views/task/new/components/DocumentInfo.vue'
export
default
{
dicts
:
[
'sys_task_status'
,
...
...
@@ -336,11 +347,15 @@ export default {
'inspection_item'
],
components
:
{
DocumentInfo
,
CarInfo
,
PartInfo
},
data
()
{
return
{
passDocumentInfoArr
:
[],
// 文件信息
documentInfoArr
:
[],
// 最终提交
taskCreateRequest
:
{
standardId
:
''
,
// 检验依据
...
...
@@ -377,7 +392,9 @@ export default {
sampleId
:
''
,
// 样品id
flag
:
1
}
]
],
// 文件
fileList
:
[]
},
// 当前填写的整车样品信息
currentVehicleSampleInformation
:
[],
...
...
@@ -781,6 +798,7 @@ export default {
item
.
flag
=
1
})
}
this
.
passDocumentInfoArr
=
this
.
taskTemporaryStorage
.
fileList
}
})
},
...
...
@@ -801,6 +819,9 @@ export default {
this
.
currentPartSampleInformation
=
cards
console
.
log
(
'PartInfo组件传值'
,
cards
)
},
handleDocumentChange
(
data
)
{
this
.
documentInfoArr
=
data
},
getSampleInformation
()
{
// 查询整车样品信息
selectSamplePage
({
pageNum
:
1
,
pageSize
:
999
,
flag
:
0
}).
then
(
...
...
@@ -1115,6 +1136,8 @@ export default {
this
.
taskCreateRequest
.
partSample
.
forEach
(
item
=>
{
delete
item
.
id
})
// 文件
this
.
taskCreateRequest
.
fileList
=
this
.
documentInfoArr
console
.
log
(
'发布...'
,
this
.
taskCreateRequest
)
if
(
this
.
taskId
===
undefined
)
{
createTask
(
this
.
taskCreateRequest
).
then
(
response
=>
{
...
...
@@ -1156,7 +1179,8 @@ export default {
this
.
areAllPropertiesEmpty
(
this
.
model
)
&&
this
.
tableData
.
length
===
0
&&
this
.
currentVehicleSampleInformation
.
length
===
0
&&
this
.
currentPartSampleInformation
.
length
===
0
this
.
currentPartSampleInformation
.
length
===
0
&&
this
.
passDocumentInfoArr
.
length
===
0
)
{
this
.
$modal
.
msgError
(
'请填写部分内容再进行暂存'
)
return
...
...
@@ -1182,6 +1206,7 @@ export default {
this
.
taskCreateRequest
.
partSample
.
forEach
(
item
=>
{
delete
item
.
id
})
this
.
taskCreateRequest
.
fileList
=
this
.
documentInfoArr
console
.
log
(
'暂存'
,
this
.
taskCreateRequest
)
if
(
this
.
taskTemporaryStorage
!==
null
)
{
// 暂存有数据再次暂存走编辑
...
...
src/views/task/on/index.vue
View file @
29cbd7ee
...
...
@@ -291,7 +291,7 @@
>
<span
v-if=
"item.testStatus !== 'NEW'"
>
{{
item
.
testStatus
!==
'FINISH'
?
'(共耗时'
:
'(已耗时'
}}{{
getHourDiff
(
item
.
t
ask
BeginTime
)
}}
)
</span
}}{{
getHourDiff
(
item
.
t
est
BeginTime
)
}}
)
</span
>
</div>
</div>
...
...
@@ -307,7 +307,7 @@
<el-progress
class=
"cell-progress"
:stroke-width=
"12"
:percentage=
"item.systemReview"
:percentage=
"item.systemReview
|| 0
"
></el-progress>
</div>
...
...
@@ -318,7 +318,7 @@
<el-progress
class=
"cell-progress"
:stroke-width=
"12"
:percentage=
"item.carReview"
:percentage=
"item.carReview
|| 0
"
></el-progress>
</div>
<div
...
...
@@ -328,7 +328,7 @@
<el-progress
class=
"cell-progress"
:stroke-width=
"12"
:percentage=
"item.
carTest
"
:percentage=
"item.
test || 0
"
></el-progress>
</div>
</div>
...
...
@@ -442,7 +442,7 @@
size=
"mini"
@
click=
"
goNext(
'/processing/car
Review
/source-record?id=' +
'/processing/car
Test
/source-record?id=' +
item.modelTestTaskId
)
"
...
...
src/views/task/task-detail/index.vue
View file @
29cbd7ee
...
...
@@ -249,6 +249,16 @@
:part-sample-information=
"partSampleInformationList"
@
change=
"handleModChange"
/>
<!-- 文件上传 -->
<div
class=
"tip-navigation"
>
<div
class=
"tip"
></div>
<div
class=
"tip-title"
>
文件信息
</div>
</div>
<DocumentInfo
class=
"global-left-margin"
:pass-data=
"passDocumentInfoArr"
:is-detail=
"true"
/>
</el-form>
</page-standard>
</template>
...
...
@@ -262,6 +272,7 @@ import { getUserByRole } from '@/api/system/user'
import
{
createTask
,
getTaskById
}
from
'@/api/task/task'
import
{
mapGetters
}
from
'vuex'
import
{
getDicts
}
from
'@/api/system/dict/data'
import
DocumentInfo
from
'@/views/task/new/components/DocumentInfo.vue'
export
default
{
dicts
:
[
'sys_task_status'
,
...
...
@@ -270,6 +281,7 @@ export default {
'inspection_item'
],
components
:
{
DocumentInfo
,
CarInfo
,
PartInfo
},
...
...
@@ -312,6 +324,8 @@ export default {
}
]
},
// 文件信息
passDocumentInfoArr
:
[],
// 当前填写的整车样品信息
currentVehicleSampleInformation
:
[],
// 当前填写的零部件样品信息
...
...
@@ -584,6 +598,8 @@ export default {
item
.
flag
=
1
})
}
// 文件信息
this
.
passDocumentInfoArr
=
this
.
taskDetail
.
fileList
const
taskList
=
this
.
taskDetail
.
taskList
.
split
(
','
)
if
(
(
taskList
.
length
===
1
&&
taskList
.
includes
(
'trfis'
))
||
...
...
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