Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
D
DC-TOM
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
刘照晖
DC-TOM
Commits
41b4f571
Commit
41b4f571
authored
Jul 03, 2025
by
Cai Wei
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' of
https://app.bmetech.com/liuzhaohui/dctomproject
into dev
parents
5082b90e
6e679ff5
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
1131 additions
and
1040 deletions
+1131
-1040
AboutView.vue
src/views/AboutView/AboutView.vue
+3
-0
myAgency.vue
src/views/closeManage/myAgency.vue
+660
-611
myDone.vue
src/views/closeManage/myDone.vue
+467
-429
collectorList.vue
src/views/collectorList/collectorList.vue
+1
-0
No files found.
src/views/AboutView/AboutView.vue
View file @
41b4f571
...
...
@@ -44,6 +44,7 @@
range-separator=
"~"
start-placeholder=
"开始时间"
end-placeholder=
"结束时间"
popper-class=
"date-picker-popper"
:teleported=
"false"
/>
</el-form-item>
...
...
@@ -128,6 +129,7 @@
v-model=
"equSubmitInfo.startTime"
type=
"datetime"
placeholder=
"选择开始时间"
popper-class=
"date-picker-popper"
/>
</el-form-item>
<el-form-item
label=
"结束时间"
prop=
"endTime"
>
...
...
@@ -135,6 +137,7 @@
v-model=
"equSubmitInfo.endTime"
type=
"datetime"
placeholder=
"选择结束时间"
popper-class=
"date-picker-popper"
/>
</el-form-item>
</el-form>
...
...
src/views/closeManage/myAgency.vue
View file @
41b4f571
...
...
@@ -2,68 +2,79 @@
<div
class=
"my-agency all-select-btn"
>
<el-form
:inline=
"true"
:model=
"formInline"
class=
"demo-form-inline"
>
<el-form-item
label=
"事件名称:"
>
<el-input
v-model=
"formInline.eventName"
>
</el-input>
<el-input
v-model=
"formInline.eventName"
>
</el-input>
</el-form-item>
<el-form-item
label=
"发生位置:"
>
<el-input
v-model=
"formInline.keyword"
placeholder=
"请输入"
></el-input>
</el-form-item>
<el-form-item
label=
"所属工序:"
>
<el-select
v-model=
"formInline.productionLineId"
placeholder=
"请选择"
style=
"width: 180px"
<el-select
v-model=
"formInline.productionLineId"
placeholder=
"请选择"
style=
"width: 180px"
>
<el-option
v-for=
"(item, index) in basicConfiguration.productLineList"
:key=
"item.productionLineId"
:label=
"item.productionLineName"
:value=
"item.productionLineId"
<el-option
v-for=
"(item, index) in basicConfiguration.productLineList"
:key=
"item.productionLineId"
:label=
"item.productionLineName"
:value=
"item.productionLineId"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"设备类型"
>
<el-select
v-model=
"formInline.deviceType"
style=
"width: 180px"
placeholder=
"请选择"
<el-select
v-model=
"formInline.deviceType"
style=
"width: 180px"
placeholder=
"请选择"
>
<el-option
label=
"全部"
value=
""
/>
<el-option
v-for=
"(item, index) in basicConfiguration.deviceList"
index=
"item.id"
:label=
"item.desc"
:value=
"item.code"
v-for=
"(item, index) in basicConfiguration.deviceList"
index=
"item.id"
:label=
"item.desc"
:value=
"item.code"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"发生时间"
>
<el-date-picker
type=
"datetimerange"
v-model=
"formInline.createTime"
range-separator=
"至"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
format=
"YYYY-MM-DD HH:mm:ss"
value-format=
"YYYY-MM-DD HH:mm:ss"
<el-date-picker
type=
"datetimerange"
v-model=
"formInline.createTime"
range-separator=
"至"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
format=
"YYYY-MM-DD HH:mm:ss"
value-format=
"YYYY-MM-DD HH:mm:ss"
popper-class=
"date-picker-popper"
/>
</el-form-item>
<el-form-item>
<el-button
class=
"default-btn reset-btn-balck-theme"
@
click=
"onReset"
>
重置
</el-button>
<el-button
type=
"default"
class=
"default-btn search-btn-balck-theme"
@
click=
"onSearch"
>
查询
</el-button>
<el-button
class=
"default-btn reset-btn-balck-theme"
@
click=
"onReset"
>
重置
</el-button
>
<el-button
type=
"default"
class=
"default-btn search-btn-balck-theme"
@
click=
"onSearch"
>
查询
</el-button
>
</el-form-item>
</el-form>
<div
class=
"table-box"
>
<common-table
:data=
"tableData"
:columns=
"tableColumns"
:default-page-size=
"20"
:total=
"total"
@
pagination-change=
"handlePaginationChange"
:pagination-texts=
"
{
total: '共',
sizeChange: '条/页',
prev: '前一页',
next: '后一页',
jumper: '跳至',
}"
:data=
"tableData"
:columns=
"tableColumns"
:default-page-size=
"20"
:total=
"total"
@
pagination-change=
"handlePaginationChange"
:pagination-texts=
"
{
total: '共',
sizeChange: '条/页',
prev: '前一页',
next: '后一页',
jumper: '跳至',
}"
>
<template
#
index=
"
{ $index }">
{{
getIndex
(
$index
)
}}
...
...
@@ -77,8 +88,8 @@
<span
class=
"view-btn green-color"
@
click=
"handleDone(row)"
>
处理
</span>
<span
class=
"table-btn"
>
|
</span>
<span
class=
"view-btn green-color"
@
click=
"handleDispatch(row)"
>
<span
class=
"table-btn"
>
|
</span>
<span
class=
"view-btn green-color"
@
click=
"handleDispatch(row)"
>
分派
</span>
<span
class=
"table-btn"
>
|
</span>
...
...
@@ -89,62 +100,65 @@
</common-table>
</div>
<common-dialog
:show-dialog=
"doneDialog.show"
:title=
"doneDialog.title"
:width=
"doneDialog.width"
:btn-group=
"doneDialog.btnGroup"
@
handleBtn=
"saveDeal"
@
close:showDialog=
"doneDialog.show = false"
:show-dialog=
"doneDialog.show"
:title=
"doneDialog.title"
:width=
"doneDialog.width"
:btn-group=
"doneDialog.btnGroup"
@
handleBtn=
"saveDeal"
@
close:showDialog=
"doneDialog.show = false"
>
<div
class=
"form-box"
>
<el-form
ref=
"form"
:model=
"formModel"
>
<el-row
:gutter=
"24"
>
<el-col
:span=
"24"
>
<div
class=
"label-title"
>
闭环控制分派
</div>
<el-form-item
label=
"已分派人:"
>
<el-tag
v-for=
"(ele,eIndex) in personTag"
<el-form
ref=
"form"
:model=
"formModel"
>
<el-row
:gutter=
"24"
>
<el-col
:span=
"24"
>
<div
class=
"label-title"
>
闭环控制分派
</div>
<el-form-item
label=
"已分派人:"
>
<el-tag
v-for=
"(ele,
eIndex) in personTag"
:key=
"ele.name"
:type=
"ele.type"
>
{{ele.name}}
</el-tag>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"24"
>
<el-col
:span=
"24"
>
<div
class=
"label-title"
>
闭环控制信息
</div>
<div
class=
"alarm-content"
>
<div
class=
"content-item"
>
<span
class=
"name"
>
编号:
</span>
<span
class=
"value"
>
{{ workSheetDetail?.workTicketNo }}
</span>
</div>
<div
class=
"content-item"
>
<span
class=
"name"
>
创建时间:
</span>
<span
class=
"value"
>
{{ workSheetDetail?.createTime }}
</span>
</div>
<div
class=
"content-item"
>
<span
class=
"name"
>
闭环控制状态:
</span>
<span
class=
"value work-status"
>
{{ workSheetDetail?.desc }}
</span>
:type=
"ele.type"
>
{{ ele.name }}
</el-tag>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"24"
>
<el-col
:span=
"24"
>
<div
class=
"label-title"
>
闭环控制信息
</div>
<div
class=
"alarm-content"
>
<div
class=
"content-item"
>
<span
class=
"name"
>
编号:
</span>
<span
class=
"value"
>
{{ workSheetDetail?.workTicketNo }}
</span>
</div>
<div
class=
"content-item"
>
<span
class=
"name"
>
创建时间:
</span>
<span
class=
"value"
>
{{ workSheetDetail?.createTime }}
</span>
</div>
<div
class=
"content-item"
>
<span
class=
"name"
>
闭环控制状态:
</span>
<span
class=
"value work-status"
>
{{
workSheetDetail?.desc
}}
</span>
</div>
</div>
</div>
</el-col>
</el-row>
<el-row
:gutter=
"24"
v-if=
"workSheetDetail?.warnType !== 5"
>
<el-col
:span=
"24"
>
<div
class=
"label-title"
>
告警信息
</div>
<div
class=
"alarm-content"
>
<div
class=
"content-item"
>
<span
class=
"name"
>
所属工序:
</span>
<span
class=
"value"
>
{{
</el-col>
</el-row>
<el-row
:gutter=
"24"
v-if=
"workSheetDetail?.warnType !== 5"
>
<el-col
:span=
"24"
>
<div
class=
"label-title"
>
告警信息
</div>
<div
class=
"alarm-content"
>
<div
class=
"content-item"
>
<span
class=
"name"
>
所属工序:
</span>
<span
class=
"value"
>
{{
workSheetDetail?.productionLine || "--"
}}
</span>
</div>
<div
class=
"content-item"
>
<span
class=
"name"
>
发生位置:
</span>
<span
class=
"value"
>
{{ workSheetDetail?.deviceName }}
</span>
</div>
<div
</div>
<div
class=
"content-item"
>
<span
class=
"name"
>
发生位置:
</span>
<span
class=
"value"
>
{{ workSheetDetail?.deviceName }}
</span>
</div>
<div
class=
"content-item"
v-if=
"
workSheetDetail?.warnType &&
...
...
@@ -157,40 +171,48 @@
workSheetDetail?.warnType != 21) ||
workSheetDetail?.warnType == 4)
"
>
>
<span
class=
"name"
v-if=
"
class=
"name"
v-if=
"
workSheetDetail?.warnType != 99 &&
workSheetDetail?.warnType != 4 &&
workSheetDetail?.warnType != 20 &&
workSheetDetail?.warnType != 21
"
>
告警值:
</span>
<span
class=
"name"
v-else-if=
"workSheetDetail?.warnType == 4"
>
离线时长:
</span>
<span
>
告警值:
</span
>
<span
class=
"name"
v-else-if=
"workSheetDetail?.warnType == 4"
>
离线时长:
</span
>
<span
class=
"value alarm-value"
v-if=
"
workSheetDetail.warnType != 99 &&
workSheetDetail.warnType != 4 &&
workSheetDetail.warnType != 18
"
>
{{ workSheetDetail?.value }}{{ workSheetDetail?.unit }}
</span
>
<span
>
{{ workSheetDetail?.value
}}{{ workSheetDetail?.unit }}
</span
>
<span
class=
"value alarm-value"
v-else-if=
"workSheetDetail?.warnType == 4"
>
{{ warnValueFilter(workSheetDetail?.offlineTime) }}
</span>
</div>
<div
class=
"content-item"
v-if=
"workSheetDetail?.convertValue"
>
<span
class=
"name"
>
折算值:
</span>
<span
class=
"value alarm-value"
>
{{ workSheetDetail?.convertValue }}{{ workSheetDetail?.unit }}
</span>
</div>
<div
class=
"content-item"
>
<span
class=
"name"
>
告警时间:
</span>
<span
class=
"value"
>
{{ workSheetDetail.eventTime }}
</span>
</div>
<div
>
{{ warnValueFilter(workSheetDetail?.offlineTime) }}
</span
>
</div>
<div
class=
"content-item"
v-if=
"workSheetDetail?.convertValue"
>
<span
class=
"name"
>
折算值:
</span>
<span
class=
"value alarm-value"
>
{{ workSheetDetail?.convertValue
}}{{ workSheetDetail?.unit }}
</span
>
</div>
<div
class=
"content-item"
>
<span
class=
"name"
>
告警时间:
</span>
<span
class=
"value"
>
{{ workSheetDetail.eventTime }}
</span>
</div>
<div
class=
"content-item"
v-if=
"
workSheetDetail?.warnType &&
...
...
@@ -202,285 +224,288 @@
workSheetDetail?.warnType != 150 &&
workSheetDetail?.warnType != 18
"
>
<span
class=
"name"
>
当前监测值:
</span>
<span
class=
"value cur-alarm-value"
>
>
<span
class=
"name"
>
当前监测值:
</span>
<span
class=
"value cur-alarm-value"
>
{{ workSheetDetail.realtimeValue || "--"
}}{{ workSheetDetail.unit }}
}}{{ workSheetDetail.unit }}
</span>
</div>
<div
</div>
<div
class=
"content-item"
v-if=
"
workSheetDetail?.warnType &&
workSheetDetail?.warnType != 3 &&
workSheetDetail?.warnType != 9
"
>
<span
class=
"name"
>
告警指标:
</span>
<span
class=
"value"
>
{{ workSheetDetail.metric }}
</span>
</div>
<div
>
<span
class=
"name"
>
告警指标:
</span>
<span
class=
"value"
>
{{ workSheetDetail.metric }}
</span>
</div>
<div
class=
"content-item"
v-if=
"
workSheetDetail?.warnType &&
workSheetDetail?.warnType != 3 &&
workSheetDetail?.warnType != 9
"
>
<span
class=
"name"
>
告警级别:
</span>
<div
>
<span
class=
"name"
>
告警级别:
</span>
<div
class=
"value"
:class=
"getColor(workSheetDetail.level)"
></div>
</div>
<div
></div>
</div>
<div
class=
"content-item new-content-item-style"
v-if=
"workSheetDetail.metric == 'TSP浓度'"
>
<span
class=
"name change-style"
>
TSP粉尘污染溯源结果:
</span>
<span
class=
"value"
>
{{
>
<span
class=
"name change-style"
>
TSP粉尘污染溯源结果:
</span>
<span
class=
"value"
>
{{
workSheetDetail.sourceTrace || "无"
}}
</span>
</div>
<div
</div>
<div
class=
"content-item"
v-if=
"
workSheetDetail?.warnType && workSheetDetail?.warnType == 18
"
>
<span
class=
"name"
>
故障类型:
</span>
<span
class=
"value"
>
>
<span
class=
"name"
>
故障类型:
</span>
<span
class=
"value"
>
{{ viewData[workSheetDetail.cemsBreakdownTag] }}
</span>
</div>
</div>
</div>
</el-col>
</el-row>
<el-row
:gutter=
"24"
v-if=
"workSheetDetail?.relationAnalysis"
>
<el-col
:span=
"24"
>
<div
class=
"label-title"
>
数据异常定位分析
</div>
<div
class=
"alarm-content"
>
<div
class=
"content-item"
>
<span
class=
"name"
>
离线原因:
</span>
<span
class=
"value"
>
{{
</el-col>
</el-row>
<el-row
:gutter=
"24"
v-if=
"workSheetDetail?.relationAnalysis"
>
<el-col
:span=
"24"
>
<div
class=
"label-title"
>
数据异常定位分析
</div>
<div
class=
"alarm-content"
>
<div
class=
"content-item"
>
<span
class=
"name"
>
离线原因:
</span>
<span
class=
"value"
>
{{
workSheetDetail.analysisMessage || "--"
}}
</span>
</div>
<div
class=
"content-item"
>
<el-button
</div>
<div
class=
"content-item"
>
<el-button
type=
"primary"
style=
"margin-left: 80px"
class=
"led-btn"
@
click=
"openPage(workSheetDetail)"
>
关联台账
</el-button
>
>
关联台账
</el-button
>
</div>
</div>
</div>
</el-col>
</el-row>
<el-row
:gutter=
"24"
v-if=
"workSheetDetail?.warnType === 5"
>
<el-col
:span=
"24"
>
<div
class=
"label-title"
>
道路信息
</div>
<div
class=
"alarm-content"
>
<div
class=
"content-item"
>
<span
class=
"name"
>
发生位置:
</span>
<span
class=
"value"
>
</el-col>
</el-row>
<el-row
:gutter=
"24"
v-if=
"workSheetDetail?.warnType === 5"
>
<el-col
:span=
"24"
>
<div
class=
"label-title"
>
道路信息
</div>
<div
class=
"alarm-content"
>
<div
class=
"content-item"
>
<span
class=
"name"
>
发生位置:
</span>
<span
class=
"value"
>
{{
workSheetDetail.analyzeResult
&&
workSheetDetail.analyzeResult.roadName
workSheetDetail.analyzeResult
&&
workSheetDetail.analyzeResult.roadName
? workSheetDetail.analyzeResult.roadName
: "--"
}}
}}
</span>
</div>
<div
class=
"content-item"
>
<span
class=
"name"
>
全厂PM10均值:
</span>
<span
class=
"value"
>
</div>
<div
class=
"content-item"
>
<span
class=
"name"
>
全厂PM10均值:
</span>
<span
class=
"value"
>
{{
workSheetDetail.analyzeResult
&&
workSheetDetail.analyzeResult.pm10AvgFactory
workSheetDetail.analyzeResult
&&
workSheetDetail.analyzeResult.pm10AvgFactory
? workSheetDetail.analyzeResult.pm10AvgFactory +
" μg/m³"
" μg/m³"
: "--"
}}
}}
</span>
</div>
<div
class=
"content-item"
>
<span
class=
"name"
>
统计时间:
</span>
<span
class=
"value"
>
</div>
<div
class=
"content-item"
>
<span
class=
"name"
>
统计时间:
</span>
<span
class=
"value"
>
{{
workSheetDetail.analyzeResult
workSheetDetail.analyzeResult
? workSheetDetail.analyzeResult.startTime +
"—" +
workSheetDetail.analyzeResult.endTime
"—" +
workSheetDetail.analyzeResult.endTime
: ""
}}
}}
</span>
</div>
<div
class=
"content-item"
>
<span
class=
"name"
>
PM10均值:
</span>
<span
class=
"value"
>
</div>
<div
class=
"content-item"
>
<span
class=
"name"
>
PM10均值:
</span>
<span
class=
"value"
>
{{
workSheetDetail.analyzeResult
&&
workSheetDetail.analyzeResult.pm10AvgRoad
workSheetDetail.analyzeResult
&&
workSheetDetail.analyzeResult.pm10AvgRoad
? workSheetDetail.analyzeResult.pm10AvgRoad + " μg/m³"
: "--"
}}
}}
</span>
</div>
<div
class=
"content-item"
>
<span
class=
"name"
>
道路清洁度指数:
</span>
<
template
v-if=
"workSheetDetail.analyzeResult"
>
<div
</div>
<div
class=
"content-item"
>
<span
class=
"name"
>
道路清洁度指数:
</span>
<
template
v-if=
"workSheetDetail.analyzeResult"
>
<div
v-for=
"(item, i) in Number(
workSheetDetail.analyzeResult.riskLevel
)
? Number(workSheetDetail.analyzeResult.riskLevel)
: 0"
:key=
"i"
>
>
<span
v-if=
"Number(workSheetDetail.analyzeResult.riskLevel)"
v-if=
"Number(workSheetDetail.analyzeResult.riskLevel)"
>
<img
src=
"@/assets/star.png"
alt=
"⭐️"
/>
</span>
</div>
</
template
>
</div>
</
template
>
<div
<div
v-if=
"
workSheetDetail.analyzeResult &&
workSheetDetail.analyzeResult.riskLevel == '-'
"
>
>
<span
class=
"value"
>
{{ workSheetDetail.analyzeResult.riskLevel }}
</span>
</div>
</div>
</div>
<div
class=
"content-item"
>
<span
class=
"name"
>
VDM均值:
</span>
<span
class=
"value"
>
<div
class=
"content-item"
>
<span
class=
"name"
>
VDM均值:
</span>
<span
class=
"value"
>
{{
workSheetDetail.analyzeResult
&&
workSheetDetail.analyzeResult.vdmAvgRoad
workSheetDetail.analyzeResult
&&
workSheetDetail.analyzeResult.vdmAvgRoad
? workSheetDetail.analyzeResult.vdmAvgRoad + " μg/m³"
: ""
}}
}}
</span>
</div>
</div>
</div>
</el-col>
</el-row>
</el-col>
</el-row>
<el-row
:gutter=
"24"
v-if=
"workSheetDetail?.alarmImags"
>
<el-col>
<div
class=
"label-title"
>
告警图片
</div>
<div
class=
"demo-image__preview"
>
<div
<el-row
:gutter=
"24"
v-if=
"workSheetDetail?.alarmImags"
>
<el-col>
<div
class=
"label-title"
>
告警图片
</div>
<div
class=
"demo-image__preview"
>
<div
class=
"image-preview"
v-for=
"(item, index) in alarmImg"
:key=
"index"
>
<el-image
>
<el-image
style=
"width: 100px; height: 100px"
:lazy=
"true"
:src=
"item"
:preview-src-list=
"alarmImg"
></el-image>
></el-image>
</div>
</div>
</div>
</el-col>
</el-row>
</el-col>
</el-row>
<el-row
<el-row
:gutter=
"24"
v-if=
"
workSheetDetail?.forwards &&
workSheetDetail?.forwards[0] &&
workSheetDetail?.triggerType === 2
"
>
<el-col
:span=
"24"
>
<div
class=
"label-title"
>
问题描述
</div>
<div
class=
"input-style-text"
>
{{ workSheetDetail.forwards[0].forward }}
</div>
<div
class=
"demo-image__preview"
>
<div
>
<el-col
:span=
"24"
>
<div
class=
"label-title"
>
问题描述
</div>
<div
class=
"input-style-text"
>
{{ workSheetDetail.forwards[0].forward }}
</div>
<div
class=
"demo-image__preview"
>
<div
class=
"image-preview"
v-for=
"(item, index) in imgUrlList"
:key=
"index"
>
<el-image
>
<el-image
style=
"width: 100px; height: 100px"
:lazy=
"true"
:src=
"item"
:preview-src-list=
"imgUrlList"
></el-image>
></el-image>
</div>
</div>
</div>
<div
<div
class=
"input-style-text"
v-if=
" !workSheetDetail?.forwards[0]?.forward && imgUrlList.length == 0"
>
暂无描述
</div>
</el-col>
</el-row>
v-if=
"
!workSheetDetail?.forwards[0]?.forward &&
imgUrlList.length == 0
"
>
暂无描述
</div>
</el-col>
</el-row>
<el-row
:gutter=
"24"
v-if=
"srcList.length"
>
<el-col
:span=
"24"
>
<div
class=
"label-title"
>
告警图片
</div>
<div
class=
"demo-image__preview"
>
<div
<el-row
:gutter=
"24"
v-if=
"srcList.length"
>
<el-col
:span=
"24"
>
<div
class=
"label-title"
>
告警图片
</div>
<div
class=
"demo-image__preview"
>
<div
class=
"image-preview"
v-for=
"(item, index) in srcList"
:key=
"index"
>
<el-image
>
<el-image
style=
"width: 100px; height: 100px"
:lazy=
"true"
:src=
"item"
:preview-src-list=
"srcList"
></el-image>
></el-image>
</div>
</div>
</div>
</el-col>
</el-row>
</el-col>
</el-row>
<el-row
<el-row
:gutter=
"24"
v-if=
"workSheetDetail?.warnType && workSheetDetail?.warnType == 444"
>
<el-col
:span=
"24"
class=
"deal-line-wrap"
>
<div
class=
"label-title"
>
问题描述
</div>
<div
>
<el-col
:span=
"24"
class=
"deal-line-wrap"
>
<div
class=
"label-title"
>
问题描述
</div>
<div
class=
"qusetion-records"
v-if=
"
workSheetDetail?.questionDescList &&
workSheetDetail?.questionDescList.length > 0
"
>
<div
>
<div
class=
"qusetion-records-item"
v-for=
"(item, index) in workSheetDetail?.questionDescList"
:key=
"index"
>
{{ item }}
>
{{ item }}
</div>
</div>
</div>
<div
v-else
class=
"input-style-text"
>
暂无数据
</div>
</el-col>
</el-row>
<el-row
<div
v-else
class=
"input-style-text"
>
暂无数据
</div>
</el-col>
</el-row>
<el-row
:gutter=
"24"
v-if=
"functionAuthority && functionAuthority?.close_loop_upgrade"
>
<el-col
:span=
"24"
class=
"deal-line-wrap"
>
<div
class=
"label-title"
>
落实管理制度
</div>
<div
>
<el-col
:span=
"24"
class=
"deal-line-wrap"
>
<div
class=
"label-title"
>
落实管理制度
</div>
<div
class=
"processing-records"
:class=
"[
workSheetDetail?.levelManageList.length == 1
...
...
@@ -491,100 +516,110 @@
workSheetDetail?.levelManageList &&
workSheetDetail?.levelManageList.length > 0
"
>
<div
>
<div
class=
"processing-records-item"
v-for=
"(item, index) in workSheetDetail?.levelManageList"
:key=
"index"
>
<div
class=
"steps-line"
>
<div
class=
"header"
v-show=
"index !== 0"
></div>
<div
>
<div
class=
"steps-line"
>
<div
class=
"header"
v-show=
"index !== 0"
></div>
<div
class=
"footer"
v-show=
"
index !== workSheetDetail?.levelManageList.length - 1
"
></div>
</div>
<span
class=
"handler"
>
{{ item.userName }}
</span>
<span
class=
"circle"
></span>
<span
class=
"step-name"
>
></div>
</div>
<span
class=
"handler"
>
{{ item.userName }}
</span>
<span
class=
"circle"
></span>
<span
class=
"step-name"
>
{{
item.state == 0
item.state == 0
? "处理中"
: item.state == 1
? "已处理"
: ""
}}
? "已处理"
: ""
}}
</span>
<span
class=
"partment"
>
{{ item.officeName || "无" }}
</span>
<span
class=
"handler-time"
>
{{ item.date }}
</span>
<span
class=
"partment"
>
{{ item.officeName || "无" }}
</span>
<span
class=
"handler-time"
>
{{ item.date }}
</span>
</div>
</div>
</div>
<div
v-else
class=
"input-style-text"
>
暂无数据
</div>
</el-col>
</el-row>
<div
v-else
class=
"input-style-text"
>
暂无数据
</div>
</el-col>
</el-row>
<el-row
:gutter=
"24"
>
<el-col
:span=
"24"
>
<div
class=
"label-title"
>
原因分析
</div>
<el-input
<el-row
:gutter=
"24"
>
<el-col
:span=
"24"
>
<div
class=
"label-title"
>
原因分析
</div>
<el-input
class=
"input-style"
v-model=
"dialogReason"
type=
"textarea"
:rows=
"3"
placeholder=
"请输入内容"
/>
</el-col>
</el-row>
/>
</el-col>
</el-row>
<el-row
:gutter=
"24"
>
<el-col
:span=
"24"
>
<div
class=
"label-title"
>
处理措施
</div>
<div>
<el-input
<el-row
:gutter=
"24"
>
<el-col
:span=
"24"
>
<div
class=
"label-title"
>
处理措施
</div>
<div>
<el-input
class=
"input-style"
v-model=
"dialogMeasure"
type=
"textarea"
:rows=
"3"
placeholder=
"请输入内容"
/>
</div>
</el-col>
</el-row>
</el-form>
</div>
/>
</div>
</el-col>
</el-row>
</el-form>
</div>
</common-dialog>
<common-dialog
:showDialog=
"assignDialog.show"
:title=
"assignDialog.title"
:btn-group=
"assignDialog.btnGroup"
:width=
"assignDialog.width"
@
handleBtn=
"saveAssign"
@
close:showDialog=
"assignDialog.show = false"
:showDialog=
"assignDialog.show"
:title=
"assignDialog.title"
:btn-group=
"assignDialog.btnGroup"
:width=
"assignDialog.width"
@
handleBtn=
"saveAssign"
@
close:showDialog=
"assignDialog.show = false"
>
<el-form>
<el-form-item
label=
"分派人:"
>
<div
class=
"inline-box"
>
<el-select
v-model=
"handlerPeopleId"
filterable
placeholder=
"请选择分派人"
>
<el-select
v-model=
"handlerPeopleId"
filterable
placeholder=
"请选择分派人"
>
<el-option
v-for=
"(item, i) in handlerPeople"
:key=
"i"
:label=
"item.name"
:value=
"item.id"
v-for=
"(item, i) in handlerPeople"
:key=
"i"
:label=
"item.name"
:value=
"item.id"
></el-option>
</el-select>
<el-button
type=
"default"
class=
"addBtn search-btn-balck-theme"
@
click=
"addPerson"
>
新增
</el-button>
<el-button
type=
"default"
class=
"addBtn search-btn-balck-theme"
@
click=
"addPerson"
>
新增
</el-button
>
</div>
</el-form-item>
<el-form-item
label=
"已分派人:"
>
<el-tag
v-for=
"(ele,eIndex) in personTag"
:key=
"ele.name"
closable
@
close=
"delPerson(eIndex)"
:type=
"ele.type"
>
{{ele.name}}
v-for=
"(ele, eIndex) in personTag"
:key=
"ele.name"
closable
@
close=
"delPerson(eIndex)"
:type=
"ele.type"
>
{{ ele.name }}
</el-tag>
</el-form-item>
</el-form>
...
...
@@ -599,9 +634,14 @@
>
<el-form>
<el-form-item
label=
"第几行:"
>
<el-select
v-model=
"bagRow"
placeholder=
"请选择第几行"
@
change=
"getCol"
>
<el-select
v-model=
"bagRow"
placeholder=
"请选择第几行"
@
change=
"getCol"
>
<el-option
v-for=
"item in rowList"
:key=
"item"
v-for=
"item in rowList"
:key=
"item"
:label=
"item"
:value=
"item"
>
...
...
@@ -611,9 +651,10 @@
<el-form-item
label=
"第几列:"
>
<el-select
v-model=
"bagCol"
placeholder=
"请选择第几列"
>
<el-option
v-for=
"item in colList"
:key=
"item"
:label=
"item"
:value=
"item"
v-for=
"item in colList"
:key=
"item"
:label=
"item"
:value=
"item"
>
</el-option>
</el-select>
...
...
@@ -624,27 +665,33 @@
</template>
<
script
setup
>
import
{
ref
,
reactive
,
onMounted
,
onBeforeUnmount
,
computed
}
from
'vue'
import
{
ref
,
reactive
,
onMounted
,
onBeforeUnmount
,
computed
}
from
"vue"
;
import
CommonTable
from
"@/components/commonTable/index.vue"
;
import
commonDialog
from
"./components/dialog.vue"
;
import
{
getData
,
getDataFun
,
postData
,
postDataJson
,
postDataJSON
}
from
'@/request/method.js'
;
import
moment
from
'moment'
;
import
{
getToken
}
from
'@/utils/auth.js'
;
import
{
ElMessage
}
from
'element-plus'
import
{
storeToRefs
}
from
'pinia'
import
{
getData
,
getDataFun
,
postData
,
postDataJson
,
postDataJSON
,
}
from
"@/request/method.js"
;
import
moment
from
"moment"
;
import
{
getToken
}
from
"@/utils/auth.js"
;
import
{
ElMessage
}
from
"element-plus"
;
import
{
storeToRefs
}
from
"pinia"
;
import
{
useUsersStore
}
from
"@/pinia/user.js"
;
import
{
useRoute
,
useRouter
}
from
"vue-router"
;
const
router
=
useRouter
();
const
route
=
useRoute
();
const
{
functionAuthority
}
=
storeToRefs
(
useUsersStore
());
const
{
functionAuthority
}
=
storeToRefs
(
useUsersStore
());
const
total
=
ref
(
0
);
const
formInline
=
ref
({
eventName
:
''
,
keyword
:
''
,
warnType
:
''
,
productionLineId
:
''
,
deviceType
:
''
,
eventName
:
""
,
keyword
:
""
,
warnType
:
""
,
productionLineId
:
""
,
deviceType
:
""
,
createTime
:
route
.
query
.
startTime
?
[
moment
(
new
Date
(
route
.
query
.
startTime
).
getTime
()).
format
(
...
...
@@ -654,16 +701,16 @@ const formInline = ref({
"YYYY-MM-DD HH:mm:ss"
),
]
:
[
''
,
''
]
:
[
""
,
""
],
});
const
workTicketNo
=
ref
(
''
);
const
workTicketNo
=
ref
(
""
);
const
handlerPeopleId
=
ref
(
''
);
const
handlerPeopleId
=
ref
(
""
);
const
handlerPeople
=
ref
([]);
const
getHandlerPeople
=
async
()
=>
{
const
url
=
'/transfer-work-ticket-pc/getTicketHandler?pageSize=999&pageNo=1'
;
const
url
=
"/transfer-work-ticket-pc/getTicketHandler?pageSize=999&pageNo=1"
;
try
{
let
result
=
await
getData
(
url
);
if
(
result
&&
result
.
code
===
1
)
{
...
...
@@ -672,180 +719,180 @@ const getHandlerPeople = async () => {
}
}
catch
(
e
)
{
ElMessage
({
message
:
'接口报错'
,
type
:
'error'
})
message
:
"接口报错"
,
type
:
"error"
,
})
;
}
}
}
;
const
assignDialog
=
ref
({
title
:
'闭环控制分派'
,
title
:
"闭环控制分派"
,
show
:
false
,
width
:
'30%'
,
width
:
"30%"
,
btnGroup
:
[
{
attrKey
:
'save'
,
label
:
'保存'
}
]
attrKey
:
"save"
,
label
:
"保存"
,
}
,
]
,
});
const
bagDialog
=
ref
({
title
:
'更换布袋'
,
title
:
"更换布袋"
,
show
:
false
,
width
:
'30%'
,
width
:
"30%"
,
btnGroup
:
[
{
attrKey
:
'save'
,
label
:
'保存'
}
]
attrKey
:
"save"
,
label
:
"保存"
,
}
,
]
,
});
const
bagRow
=
ref
(
''
);
const
bagCol
=
ref
(
''
);
const
bagRow
=
ref
(
""
);
const
bagCol
=
ref
(
""
);
const
rowList
=
ref
([]);
const
colList
=
ref
([]);
const
saveBag
=
()
=>
{
if
(
bagRow
.
value
===
''
)
{
ElMessage
({
type
:
'warning'
,
message
:
'请选择第几行'
});
return
;
}
if
(
bagCol
.
value
===
''
)
{
ElMessage
({
type
:
'warning'
,
message
:
'请选择第几列'
});
return
;
}
const
params
=
{
workTicketNo
:
workTicketNo
.
value
,
row
:
bagRow
.
value
,
column
:
bagCol
.
value
};
postDataJSON
(
'/transaction/doc/changeBag'
,
params
).
then
(
res
=>
{
if
(
res
.
code
===
1
)
{
ElMessage
({
type
:
'success'
,
message
:
'更换布袋成功'
});
bagDialog
.
value
.
show
=
false
;
searchData
();
}
});
}
const
saveBag
=
()
=>
{
if
(
bagRow
.
value
===
""
)
{
ElMessage
({
type
:
"warning"
,
message
:
"请选择第几行"
,
});
return
;
}
if
(
bagCol
.
value
===
""
)
{
ElMessage
({
type
:
"warning"
,
message
:
"请选择第几列"
,
});
return
;
}
const
params
=
{
workTicketNo
:
workTicketNo
.
value
,
row
:
bagRow
.
value
,
column
:
bagCol
.
value
,
};
postDataJSON
(
"/transaction/doc/changeBag"
,
params
).
then
((
res
)
=>
{
if
(
res
.
code
===
1
)
{
ElMessage
({
type
:
"success"
,
message
:
"更换布袋成功"
,
});
bagDialog
.
value
.
show
=
false
;
searchData
();
}
});
};
const
rowLineMap
=
ref
(
null
);
const
getBagRowLine
=
(
no
)
=>
{
const
url
=
'/bag/cycle/getCompartEnumList'
;
const
url
=
"/bag/cycle/getCompartEnumList"
;
const
params
=
{
deviceNo
:
no
}
getDataFun
(
url
,
params
).
then
(
res
=>
{
deviceNo
:
no
,
}
;
getDataFun
(
url
,
params
).
then
((
res
)
=>
{
if
(
res
.
code
===
1
)
{
rowLineMap
.
value
=
res
.
data
;
res
.
data
.
forEach
(
item
=>
{
res
.
data
.
forEach
(
(
item
)
=>
{
rowList
.
value
.
push
(
item
.
row
);
});
}
})
}
})
;
}
;
const
getCol
=
()
=>
{
rowLineMap
.
value
.
forEach
(
item
=>
{
const
getCol
=
()
=>
{
rowLineMap
.
value
.
forEach
(
(
item
)
=>
{
if
(
item
.
row
===
bagRow
.
value
)
{
colList
.
value
=
item
.
columns
;
colList
.
value
=
item
.
columns
;
}
});
}
}
;
const
personTag
=
ref
([]);
const
addPerson
=
()
=>
{
const
target
=
handlerPeople
.
value
.
find
(
item
=>
item
.
id
===
handlerPeopleId
.
value
);
const
addPerson
=
()
=>
{
const
target
=
handlerPeople
.
value
.
find
(
(
item
)
=>
item
.
id
===
handlerPeopleId
.
value
);
personTag
.
value
.
push
({
userId
:
target
.
id
,
userName
:
target
.
name
,
name
:
target
.
name
,
type
:
'info'
type
:
"info"
,
});
}
}
;
const
delPerson
=
(
index
)
=>
{
personTag
.
value
.
splice
(
index
,
1
);
}
const
delPerson
=
(
index
)
=>
{
personTag
.
value
.
splice
(
index
,
1
);
}
;
const
getIndex
=
(
index
)
=>
{
return
(
currentPage
.
value
-
1
)
*
pageSize
.
value
+
index
+
1
;
};
const
saveAssign
=
()
=>
{
const
saveAssign
=
()
=>
{
if
(
personTag
.
value
.
length
===
0
)
{
ElMessage
({
showClose
:
true
,
type
:
'warning'
,
message
:
'请选择分派人'
})
type
:
"warning"
,
message
:
"请选择分派人"
,
})
;
}
const
tempArr
=
[];
personTag
.
value
.
forEach
(
item
=>
{
personTag
.
value
.
forEach
(
(
item
)
=>
{
tempArr
.
push
({
userId
:
item
.
userId
,
userName
:
item
.
userName
})
userName
:
item
.
userName
,
})
;
});
const
params
=
{
workTicketNo
:
workTicketNo
.
value
,
receiveUser
:
''
,
receiveUserName
:
''
,
handleUsers
:
tempArr
}
const
url
=
'/transaction/doc/transferTransaction'
;
receiveUser
:
""
,
receiveUserName
:
""
,
handleUsers
:
tempArr
,
}
;
const
url
=
"/transaction/doc/transferTransaction"
;
dispatchHandle
(
url
,
params
);
}
}
;
const
dispatchHandle
=
async
(
url
,
param
)
=>
{
const
dispatchHandle
=
async
(
url
,
param
)
=>
{
try
{
let
result
=
await
postDataJSON
(
url
,
param
);
let
result
=
await
postDataJSON
(
url
,
param
);
if
(
result
&&
result
.
code
===
1
)
{
assignDialog
.
value
.
show
=
false
;
ElMessage
({
message
:
'处理成功'
,
type
:
'success'
message
:
"处理成功"
,
type
:
"success"
,
});
searchData
();
}
}
catch
(
e
)
{
}
}
}
catch
(
e
)
{}
};
const
basicConfiguration
=
reactive
({
ticketEventName
:
[{
name
:
'全部'
,
id
:
''
}],
ticketEventName
:
[{
name
:
"全部"
,
id
:
""
}],
eventTypeList
:
[],
productLineList
:
[{
productionLineName
:
'全部'
,
productionLineId
:
''
}],
deviceList
:
[]
productLineList
:
[{
productionLineName
:
"全部"
,
productionLineId
:
""
}],
deviceList
:
[]
,
});
const
workSheetDetail
=
ref
(
null
);
const
getColor
=
computed
(()
=>
{
return
(
level
)
=>
{
if
(
level
==
2
)
{
return
'red'
}
else
if
(
level
==
1
)
{
return
'yellow'
}
else
{
return
'purple'
}
}
const
getColor
=
computed
(()
=>
{
return
(
level
)
=>
{
if
(
level
==
2
)
{
return
"red"
;
}
else
if
(
level
==
1
)
{
return
"yellow"
;
}
else
{
return
"purple"
;
}
};
});
const
warnValueFilter
=
computed
(()
=>
{
return
(
offlineTime
)
=>
{
const
warnValueFilter
=
computed
(()
=>
{
return
(
offlineTime
)
=>
{
if
(
offlineTime
==
null
||
offlineTime
<=
0
)
{
return
"--"
;
}
...
...
@@ -857,7 +904,7 @@ const warnValueFilter = computed(()=> {
return
offlineTime
/
60
+
"小时"
;
}
else
{
return
(
parseInt
(
offlineTime
/
60
)
+
"小时"
+
(
offlineTime
%
60
)
+
"分钟"
parseInt
(
offlineTime
/
60
)
+
"小时"
+
(
offlineTime
%
60
)
+
"分钟"
);
}
}
else
{
...
...
@@ -874,71 +921,69 @@ const warnValueFilter = computed(()=> {
}
return
s
;
}
}
}
;
});
const
onSearch
=
()
=>
{
searchData
();
}
const
onSearch
=
()
=>
{
searchData
();
}
;
const
onReset
=
()
=>
{
const
onReset
=
()
=>
{
currentPage
.
value
=
1
;
pageSize
.
value
=
20
;
formInline
.
value
.
eventName
=
''
;
formInline
.
value
.
keyword
=
''
;
formInline
.
value
.
productionLineId
=
''
;
formInline
.
value
.
deviceType
=
''
;
formInline
.
value
.
createTime
=
[
''
,
''
]
formInline
.
value
.
eventName
=
""
;
formInline
.
value
.
keyword
=
""
;
formInline
.
value
.
productionLineId
=
""
;
formInline
.
value
.
deviceType
=
""
;
formInline
.
value
.
createTime
=
[
""
,
""
];
searchData
();
}
}
;
const
doneDialog
=
ref
({
title
:
'闭环控制分派'
,
title
:
"闭环控制分派"
,
show
:
false
,
width
:
'45%'
,
width
:
"45%"
,
btnGroup
:
[
{
attrKey
:
'save'
,
label
:
'处理'
}
]
attrKey
:
"save"
,
label
:
"处理"
,
}
,
]
,
});
const
viewData
=
{
D
:
"在线监控(监测)仪器仪表故障"
,
B
:
"在线监控(监测)仪器仪表与数采通讯异常"
,
VGD
:
"在线监控(监测)仪器仪表与数采通讯异常"
,
}
}
;
const
handleDone
=
async
(
data
)
=>
{
const
handleDone
=
async
(
data
)
=>
{
doneDialog
.
value
.
title
=
data
.
eventName
;
workTicketNo
.
value
=
data
.
workTicketNo
;
let
res
=
await
getDetail
(
data
.
workTicketNo
);
doneDialog
.
value
.
show
=
true
;
personTag
.
value
=
[];
if
(
res
.
handleUsers
&&
res
.
handleUsers
.
length
>
0
)
{
res
.
handleUsers
.
forEach
(
item
=>
{
res
.
handleUsers
.
forEach
(
(
item
)
=>
{
personTag
.
value
.
push
({
type
:
'info'
,
type
:
"info"
,
name
:
item
.
userName
,
userId
:
item
.
userId
,
userName
:
item
.
userName
userName
:
item
.
userName
,
});
});
}
disposeWorkSheetDetail
(
res
);
}
}
;
const
saveDeal
=
()
=>
{
const
{
workTicketNo
,
handleValue
,
imgUrl
}
=
workSheetDetail
.
value
;
const
reason
=
dialogReason
.
value
;
const
measure
=
dialogMeasure
.
value
;
const
param
=
{
workTicketNo
,
handleValue
,
reason
,
measure
,
imgUrl
};
const
url
=
'/transaction/doc/finishTransaction'
;
const
url
=
"/transaction/doc/finishTransaction"
;
disposeHandle
(
url
,
param
);
}
}
;
const
disposeHandle
=
async
(
url
,
param
)
=>
{
try
{
...
...
@@ -947,141 +992,147 @@ const disposeHandle = async (url, param) => {
doneDialog
.
value
.
show
=
false
;
searchData
();
ElMessage
({
message
:
'处理成功'
,
type
:
'success'
message
:
"处理成功"
,
type
:
"success"
,
});
}
}
catch
(
e
)
{
ElMessage
({
message
:
'处理失败'
,
type
:
'error'
message
:
"处理失败"
,
type
:
"error"
,
});
}
};
// 分派
const
handleDispatch
=
async
(
data
)
=>
{
getHandlerPeople
();
workTicketNo
.
value
=
data
.
workTicketNo
;
let
res
=
await
getDetail
(
data
.
workTicketNo
);
assignDialog
.
value
.
show
=
true
;
personTag
.
value
=
[];
if
(
res
.
handleUsers
&&
res
.
handleUsers
.
length
>
0
)
{
res
.
handleUsers
.
forEach
(
item
=>
{
personTag
.
value
.
push
({
type
:
'info'
,
name
:
item
.
userName
,
userId
:
item
.
userId
,
userName
:
item
.
userName
});
});
}
}
const
handleDispatch
=
async
(
data
)
=>
{
getHandlerPeople
();
workTicketNo
.
value
=
data
.
workTicketNo
;
let
res
=
await
getDetail
(
data
.
workTicketNo
);
assignDialog
.
value
.
show
=
true
;
personTag
.
value
=
[];
if
(
res
.
handleUsers
&&
res
.
handleUsers
.
length
>
0
)
{
res
.
handleUsers
.
forEach
((
item
)
=>
{
personTag
.
value
.
push
({
type
:
"info"
,
name
:
item
.
userName
,
userId
:
item
.
userId
,
userName
:
item
.
userName
,
});
});
}
}
;
const
getDetail
=
(
workTicketNo
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
const
url
=
'/transaction/doc/detail'
;
return
new
Promise
((
resolve
,
reject
)
=>
{
const
url
=
"/transaction/doc/detail"
;
const
params
=
{
workTicketNo
}
getDataFun
(
url
,
params
).
then
(
res
=>
{
workSheetDetail
.
value
=
res
.
data
;
resolve
(
res
.
data
);
}).
catch
(
err
=>
{
reject
();
});
workTicketNo
,
};
getDataFun
(
url
,
params
)
.
then
((
res
)
=>
{
workSheetDetail
.
value
=
res
.
data
;
resolve
(
res
.
data
);
})
.
catch
((
err
)
=>
{
reject
();
});
});
}
}
;
const
changeBag
=
(
data
)
=>
{
workTicketNo
.
value
=
data
.
workTicketNo
;
getBagRowLine
(
data
.
deviceNo
);
bagDialog
.
value
.
show
=
true
;
}
const
changeBag
=
(
data
)
=>
{
workTicketNo
.
value
=
data
.
workTicketNo
;
getBagRowLine
(
data
.
deviceNo
);
bagDialog
.
value
.
show
=
true
;
}
;
const
tableData
=
ref
([]);
const
tableColumns
=
ref
([
{
prop
:
'index'
,
label
:
'序号'
,
width
:
'6%'
prop
:
"index"
,
label
:
"序号"
,
width
:
"6%"
,
},
{
prop
:
'workTicketNo'
,
label
:
'编号'
,
width
:
'10%'
prop
:
"workTicketNo"
,
label
:
"编号"
,
width
:
"10%"
,
},
{
prop
:
'eventName'
,
label
:
'事件名称'
,
width
:
'10%'
prop
:
"eventName"
,
label
:
"事件名称"
,
width
:
"10%"
,
},
{
prop
:
'deviceName'
,
label
:
'发生位置'
,
width
:
'10%'
prop
:
"deviceName"
,
label
:
"发生位置"
,
width
:
"10%"
,
},
{
prop
:
'deviceNo'
,
label
:
'设备编码'
,
width
:
'10%'
prop
:
"deviceNo"
,
label
:
"设备编码"
,
width
:
"10%"
,
},
{
prop
:
'typeName'
,
label
:
'设备类型'
,
width
:
'10%'
prop
:
"typeName"
,
label
:
"设备类型"
,
width
:
"10%"
,
},
{
prop
:
'signalName'
,
label
:
'信号名称'
,
width
:
'10%'
prop
:
"signalName"
,
label
:
"信号名称"
,
width
:
"10%"
,
},
{
prop
:
'productionLine'
,
label
:
'所属工序'
,
width
:
'10%'
},
{
prop
:
'warnTypeName'
,
label
:
'类型'
,
width
:
'10%'
},
{
prop
:
'createTime'
,
label
:
'发生时间'
,
width
:
'10%'
},
{
prop
:
'desc'
,
label
:
'闭环状态'
,
width
:
'10%'
},
{
prop
:
'handleUser'
,
label
:
'处理人'
,
width
:
'10%'
},
{
prop
:
'level'
,
label
:
'级别'
,
width
:
'5%'
},
prop
:
"productionLine"
,
label
:
"所属工序"
,
width
:
"10%"
,
},
{
prop
:
"warnTypeName"
,
label
:
"类型"
,
width
:
"10%"
},
{
prop
:
"createTime"
,
label
:
"发生时间"
,
width
:
"10%"
},
{
prop
:
"desc"
,
label
:
"闭环状态"
,
width
:
"10%"
},
{
prop
:
"handleUser"
,
label
:
"处理人"
,
width
:
"10%"
},
{
prop
:
"level"
,
label
:
"级别"
,
width
:
"5%"
},
{
prop
:
"operation"
,
label
:
"操作"
,
width
:
'15%'
width
:
"15%"
,
},
]);
const
customerId
=
getToken
(
'customerId'
);
const
customerId
=
getToken
(
"customerId"
);
const
getWarnAndTicketConfigMap
=
()
=>
{
const
url
=
'/system/getWarnAndTicketConfigMap'
;
const
getWarnAndTicketConfigMap
=
()
=>
{
const
url
=
"/system/getWarnAndTicketConfigMap"
;
const
params
=
{
customerId
}
getDataFun
(
url
,
params
).
then
(
res
=>
{
customerId
,
}
;
getDataFun
(
url
,
params
).
then
((
res
)
=>
{
if
(
res
&&
res
.
code
===
1
)
{
const
{
ticketEventName
}
=
res
.
data
;
basicConfiguration
.
ticketEventName
=
basicConfiguration
.
ticketEventName
.
concat
(
ticketEventName
);
basicConfiguration
.
ticketEventName
=
basicConfiguration
.
ticketEventName
.
concat
(
ticketEventName
);
}
});
};
const
getDeviceType
=
()
=>
{
const
url
=
'/alarm/getDeviceType'
;
getData
(
url
).
then
(
res
=>
{
const
getDeviceType
=
()
=>
{
const
url
=
"/alarm/getDeviceType"
;
getData
(
url
).
then
(
(
res
)
=>
{
basicConfiguration
.
deviceList
=
res
.
data
;
});
}
}
;
let
realBtn
=
''
;
let
realBtn
=
""
;
const
searchData
=
()
=>
{
const
searchData
=
()
=>
{
currentPage
.
value
=
1
;
pageSize
.
value
=
20
;
getTableData
();
}
}
;
const
getTableData
=
()
=>
{
const
getTableData
=
()
=>
{
let
keyWord
=
formInline
.
value
.
keyword
;
const
params
=
{
eventName
:
formInline
.
value
.
eventName
,
...
...
@@ -1095,77 +1146,76 @@ const getTableData = ()=> {
handleState
:
1
,
belongTo
:
1
,
isDcTom
:
1
,
deviceType
:
formInline
.
value
.
deviceType
}
deviceType
:
formInline
.
value
.
deviceType
,
}
;
tableData
.
value
=
[];
const
url
=
'/transaction/doc/getListParamPage'
;
getDataFun
(
url
,
params
).
then
(
res
=>
{
const
url
=
"/transaction/doc/getListParamPage"
;
getDataFun
(
url
,
params
).
then
((
res
)
=>
{
if
(
res
&&
res
.
code
===
1
)
{
const
{
list
}
=
res
.
data
;
total
.
value
=
res
.
data
.
total
;
disposeType
(
list
);
tableData
.
value
=
list
;
tableData
.
value
.
forEach
(
item
=>
{
item
.
handleUser
=
''
;
item
.
handleUsers
.
forEach
((
ele
,
eIndex
)
=>
{
tableData
.
value
.
forEach
(
(
item
)
=>
{
item
.
handleUser
=
""
;
item
.
handleUsers
.
forEach
((
ele
,
eIndex
)
=>
{
if
(
eIndex
>
0
)
{
item
.
handleUser
+=
','
+
ele
.
userName
;
item
.
handleUser
+=
","
+
ele
.
userName
;
}
else
{
item
.
handleUser
+=
ele
.
userName
;
}
});
});
}
});
}
}
;
const
disposeType
=
(
list
)
=>
{
const
disposeType
=
(
list
)
=>
{
if
(
list
.
length
)
{
list
.
forEach
(
l
=>
{
list
.
forEach
(
(
l
)
=>
{
if
(
!
l
.
deviceNo
)
{
l
.
deviceNo
=
'--'
;
l
.
deviceNo
=
"--"
;
}
switch
(
l
.
warnType
)
{
case
0
:
l
.
warnType
=
'人工提交'
break
l
.
warnType
=
"人工提交"
;
break
;
case
1
:
l
.
warnType
=
'超标'
break
l
.
warnType
=
"超标"
;
break
;
case
2
:
l
.
warnType
=
'超低'
break
l
.
warnType
=
"超低"
;
break
;
case
3
:
l
.
warnType
=
'生产治理同步率'
break
l
.
warnType
=
"生产治理同步率"
;
break
;
case
4
:
l
.
warnType
=
'离线'
break
l
.
warnType
=
"离线"
;
break
;
case
5
:
l
.
warnType
=
'其他'
break
l
.
warnType
=
"其他"
;
break
;
case
10
:
l
.
warnType
=
'持续超标'
break
l
.
warnType
=
"持续超标"
;
break
;
case
11
:
l
.
warnType
=
'三倍超标'
break
l
.
warnType
=
"三倍超标"
;
break
;
case
99
:
l
.
warnType
=
'恒值'
break
l
.
warnType
=
"恒值"
;
break
;
}
})
})
;
}
}
}
;
const
srcList
=
ref
([]);
const
dialogReason
=
ref
(
''
);
const
dialogMeasure
=
ref
(
''
);
const
dialogReason
=
ref
(
""
);
const
dialogMeasure
=
ref
(
""
);
const
imgUrlList
=
ref
([]);
const
alarmImg
=
ref
([]);
const
disposeWorkSheetDetail
=
(
obj
)
=>
{
const
disposeWorkSheetDetail
=
(
obj
)
=>
{
const
{
reason
,
measure
,
...
...
@@ -1178,15 +1228,15 @@ const disposeWorkSheetDetail = (obj)=> {
if
(
forwards
.
length
>
0
)
{
let
receiveUserItem
=
forwards
.
slice
(
-
1
)[
0
];
}
dialogMeasure
.
value
=
''
;
dialogMeasure
.
value
=
''
;
dialogMeasure
.
value
=
""
;
dialogMeasure
.
value
=
""
;
srcList
.
value
=
[];
imgUrlList
.
value
=
[];
if
(
imagParams
)
{
let
arr
=
[];
for
(
let
item
of
imagParams
)
{
srcList
.
value
=
arr
.
concat
(
item
.
url
.
split
(
";"
));
srcList
.
value
=
arr
.
concat
(
item
.
url
.
split
(
";"
));
}
}
if
(
alarmImags
&&
alarmImags
.
length
)
{
...
...
@@ -1197,7 +1247,7 @@ const disposeWorkSheetDetail = (obj)=> {
if
(
imgUrl
)
{
imgUrlList
.
value
=
imgUrl
.
split
(
";"
);
}
}
}
;
// 其他页面跳转当前页面,携带参数初始化
const
getInitParams
=
()
=>
{
if
(
route
.
query
)
{
...
...
@@ -1212,8 +1262,8 @@ const getInitParams = () => {
formInline
.
value
.
createTime
[
1
]
=
suspendEndTime
;
}
}
}
onMounted
(()
=>
{
}
;
onMounted
(()
=>
{
getInitParams
();
getProDuctLine
();
getWarnAndTicketConfigMap
();
...
...
@@ -1224,13 +1274,12 @@ onMounted(()=>{
const
formModel
=
ref
({
selectReason
:
[],
});
const
getProDuctLine
=
()
=>
{
const
url
=
'/transaction/getProductionLine'
;
getData
(
url
).
then
(
res
=>
{
const
getProDuctLine
=
()
=>
{
const
url
=
"/transaction/getProductionLine"
;
getData
(
url
).
then
(
(
res
)
=>
{
basicConfiguration
.
productLineList
.
push
(...
res
.
data
);
});
}
};
const
currentPage
=
ref
(
1
);
const
pageSize
=
ref
(
20
);
...
...
@@ -1246,7 +1295,7 @@ const handlePaginationChange = (pagination) => {
width
:
100%
;
height
:
calc
(
100%
-
14px
);
box-sizing
:
border-box
;
background
:
#181
D
21
;
background
:
#181
d
21
;
padding
:
20px
;
display
:
flex
;
flex-direction
:
column
;
...
...
@@ -1402,18 +1451,18 @@ const handlePaginationChange = (pagination) => {
line-height
:
33px
;
&
:first-child
{
background
:
linear-gradient
(
225deg
,
rgba
(
255
,
133
,
128
,
0
.65
)
0%
,
rgba
(
255
,
58
,
71
,
0
.61
)
100%
,
#0049fa
100%
225deg
,
rgba
(
255
,
133
,
128
,
0
.65
)
0%
,
rgba
(
255
,
58
,
71
,
0
.61
)
100%
,
#0049fa
100%
);
}
&
:last-child
{
background
:
linear-gradient
(
225deg
,
rgba
(
128
,
255
,
178
,
0
.65
)
0%
,
rgba
(
58
,
120
,
255
,
0
.61
)
100%
,
#0049fa
100%
225deg
,
rgba
(
128
,
255
,
178
,
0
.65
)
0%
,
rgba
(
58
,
120
,
255
,
0
.61
)
100%
,
#0049fa
100%
);
}
.road-cleanliness-index
{
...
...
src/views/closeManage/myDone.vue
View file @
41b4f571
...
...
@@ -2,68 +2,79 @@
<div
class=
"my-agency all-select-btn"
>
<el-form
:inline=
"true"
:model=
"formInline"
class=
"demo-form-inline"
>
<el-form-item
label=
"事件名称:"
>
<el-input
v-model=
"formInline.eventName"
>
</el-input>
<el-input
v-model=
"formInline.eventName"
>
</el-input>
</el-form-item>
<el-form-item
label=
"发生位置:"
>
<el-input
v-model=
"formInline.keyword"
placeholder=
"请输入"
></el-input>
</el-form-item>
<el-form-item
label=
"所属工序:"
>
<el-select
v-model=
"formInline.productionLineId"
placeholder=
"请选择"
style=
"width: 180px"
<el-select
v-model=
"formInline.productionLineId"
placeholder=
"请选择"
style=
"width: 180px"
>
<el-option
v-for=
"(item, index) in basicConfiguration.productLineList"
:key=
"item.productionLineId"
:label=
"item.productionLineName"
:value=
"item.productionLineId"
<el-option
v-for=
"(item, index) in basicConfiguration.productLineList"
:key=
"item.productionLineId"
:label=
"item.productionLineName"
:value=
"item.productionLineId"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"设备类型"
>
<el-select
v-model=
"formInline.deviceType"
style=
"width: 180px"
placeholder=
"请选择"
<el-select
v-model=
"formInline.deviceType"
style=
"width: 180px"
placeholder=
"请选择"
>
<el-option
label=
"全部"
value=
""
/>
<el-option
v-for=
"(item, index) in basicConfiguration.deviceList"
:key=
"item.code"
:label=
"item.desc"
:value=
"item.code"
v-for=
"(item, index) in basicConfiguration.deviceList"
:key=
"item.code"
:label=
"item.desc"
:value=
"item.code"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"发生时间"
>
<el-date-picker
type=
"datetimerange"
v-model=
"formInline.createTime"
range-separator=
"至"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
format=
"YYYY-MM-DD HH:mm:ss"
value-format=
"YYYY-MM-DD HH:mm:ss"
<el-date-picker
type=
"datetimerange"
v-model=
"formInline.createTime"
range-separator=
"至"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
format=
"YYYY-MM-DD HH:mm:ss"
value-format=
"YYYY-MM-DD HH:mm:ss"
popper-class=
"date-picker-popper"
/>
</el-form-item>
<el-form-item>
<el-button
type=
"default"
class=
"reset-btn-balck-theme"
@
click=
"onReset"
>
重置
</el-button>
<el-button
type=
"default"
class=
"search-btn-balck-theme"
@
click=
"onSearch"
>
查询
</el-button>
<el-button
type=
"default"
class=
"reset-btn-balck-theme"
@
click=
"onReset"
>
重置
</el-button
>
<el-button
type=
"default"
class=
"search-btn-balck-theme"
@
click=
"onSearch"
>
查询
</el-button
>
</el-form-item>
</el-form>
<div
class=
"table-box"
>
<common-table
:data=
"tableData"
:columns=
"tableColumns"
:default-page-size=
"20"
:total=
"total"
@
pagination-change=
"handlePaginationChange"
:pagination-texts=
"
{
total: '共',
sizeChange: '条/页',
prev: '前一页',
next: '后一页',
jumper: '跳至',
}"
:data=
"tableData"
:columns=
"tableColumns"
:default-page-size=
"20"
:total=
"total"
@
pagination-change=
"handlePaginationChange"
:pagination-texts=
"
{
total: '共',
sizeChange: '条/页',
prev: '前一页',
next: '后一页',
jumper: '跳至',
}"
>
<template
#
index=
"
{ $index }">
{{
getIndex
(
$index
)
}}
...
...
@@ -77,7 +88,7 @@
<span
class=
"view-btn green-color"
@
click=
"handleView(row)"
>
查看
</span>
<!--
<span
class=
"table-btn"
>
|
</span>
<!--
<span
class=
"table-btn"
>
|
</span>
<span
class=
"view-btn"
@
click=
"handleReject(row)"
>
驳回
</span>
...
...
@@ -89,10 +100,10 @@
</common-table>
</div>
<common-dialog
:show-dialog=
"viewDialog.show"
:title=
"viewDialog.title"
:width=
"viewDialog.width"
@
close:showDialog=
"viewDialog.show = false"
:show-dialog=
"viewDialog.show"
:title=
"viewDialog.title"
:width=
"viewDialog.width"
@
close:showDialog=
"viewDialog.show = false"
>
<div
class=
"form-box"
>
<el-form
ref=
"form"
:model=
"formModel"
>
...
...
@@ -111,8 +122,8 @@
<div
class=
"content-item"
>
<span
class=
"name"
>
闭环控制状态:
</span>
<span
class=
"value work-status"
>
{{
workSheetDetail.desc
}}
</span>
workSheetDetail.desc
}}
</span>
</div>
</div>
</el-col>
...
...
@@ -125,42 +136,47 @@
<div
class=
"content-item"
>
<span
class=
"name"
>
所属工序:
</span>
<span
class=
"value"
>
{{
workSheetDetail.productionLine || "--"
}}
</span>
workSheetDetail.productionLine || "--"
}}
</span>
</div>
<div
class=
"content-item"
>
<span
class=
"name"
>
发生位置:
</span>
<span
class=
"value"
>
{{ workSheetDetail.deviceName }}
</span>
</div>
<div
class=
"content-item"
v-if=
"
class=
"content-item"
v-if=
"
workSheetDetail.warnType &&
workSheetDetail.warnType != 3 &&
workSheetDetail.warnType != 18
"
>
<span
class=
"name"
v-if=
"
class=
"name"
v-if=
"
workSheetDetail.warnType != 99 &&
workSheetDetail.warnType != 4 &&
workSheetDetail.warnType != 20 &&
workSheetDetail.warnType != 21
"
>
告警值:
</span>
<span
class=
"name"
v-else-if=
"workSheetDetail.warnType == 4"
>
离线时长:
</span>
>
告警值:
</span
>
<span
class=
"name"
v-else-if=
"workSheetDetail.warnType == 4"
>
离线时长:
</span
>
<span
class=
"value alarm-value"
v-if=
"
class=
"value alarm-value"
v-if=
"
workSheetDetail.warnType != 99 &&
workSheetDetail.warnType != 4
"
>
{{ workSheetDetail.value }}{{ workSheetDetail.unit }}
</span>
>
{{ workSheetDetail.value }}{{ workSheetDetail.unit }}
</span
>
<span
class=
"value alarm-value"
v-else-if=
"workSheetDetail.warnType == 4"
>
{{ warnValueFilter(workSheetDetail?.offlineTime) }}
</span>
class=
"value alarm-value"
v-else-if=
"workSheetDetail.warnType == 4"
>
{{ warnValueFilter(workSheetDetail?.offlineTime) }}
</span
>
<span
class=
"value alarm-value"
v-else
>
{{ workSheetDetail.totalConstantTime }}
</span>
...
...
@@ -168,7 +184,7 @@
<div
class=
"content-item"
v-if=
"workSheetDetail.convertValue"
>
<span
class=
"name"
>
折算值:
</span>
<span
class=
"value alarm-value"
>
{{ workSheetDetail.convertValue
>
{{ workSheetDetail.convertValue
}}{{ workSheetDetail.unit }}
</span
>
</div>
...
...
@@ -177,8 +193,8 @@
<span
class=
"value"
>
{{ workSheetDetail.eventTime }}
</span>
</div>
<div
class=
"content-item"
v-if=
"
class=
"content-item"
v-if=
"
workSheetDetail.warnType &&
workSheetDetail.warnType != 3 &&
workSheetDetail.warnType != 9
...
...
@@ -188,8 +204,8 @@
<span
class=
"value"
>
{{ workSheetDetail.metric }}
</span>
</div>
<div
class=
"content-item"
v-if=
"
class=
"content-item"
v-if=
"
workSheetDetail.warnType &&
workSheetDetail.warnType != 3 &&
workSheetDetail.warnType != 9
...
...
@@ -197,8 +213,8 @@
>
<span
class=
"name"
>
告警级别:
</span>
<span
class=
"value"
:class=
"[
class=
"value"
:class=
"[
workSheetDetail.level == 2
? 'red'
: workSheetDetail.level == 1
...
...
@@ -208,8 +224,8 @@
></span>
</div>
<div
class=
"content-item"
v-if=
"
class=
"content-item"
v-if=
"
workSheetDetail.warnType && workSheetDetail.warnType == 18
"
>
...
...
@@ -219,18 +235,22 @@
</span>
</div>
<div
class=
"content-item"
v-if=
"workSheetDetail.warnType && workSheetDetail.warnType == 3"
class=
"content-item"
v-if=
"
workSheetDetail.warnType && workSheetDetail.warnType == 3
"
>
<span
class=
"name"
>
运行状态:
</span>
<span
class=
"value"
>
{{ workSheetDetail.runState }}
</span>
</div>
<div
class=
"content-item new-content-item-style"
v-if=
"workSheetDetail.metric == 'TSP浓度'"
class=
"content-item new-content-item-style"
v-if=
"workSheetDetail.metric == 'TSP浓度'"
>
<span
class=
"name change-style"
>
TSP粉尘污染溯源结果:
</span>
<span
class=
"value"
>
{{ workSheetDetail.sourceTrace || "无"}}
</span>
<span
class=
"value"
>
{{
workSheetDetail.sourceTrace || "无"
}}
</span>
</div>
</div>
</el-col>
...
...
@@ -246,8 +266,8 @@
{{
workSheetDetail.analyzeResult
&&
workSheetDetail.analyzeResult.roadName
? workSheetDetail.analyzeResult.roadName
: "--"
? workSheetDetail.analyzeResult.roadName
: "--"
}}
</span>
</div>
...
...
@@ -257,9 +277,9 @@
{{
workSheetDetail.analyzeResult
&&
workSheetDetail.analyzeResult.pm10AvgFactory
? workSheetDetail.analyzeResult.pm10AvgFactory +
? workSheetDetail.analyzeResult.pm10AvgFactory +
" μg/m³"
: "--"
: "--"
}}
</span>
</div>
...
...
@@ -268,10 +288,10 @@
<span
class=
"value"
>
{{
workSheetDetail.analyzeResult
? workSheetDetail.analyzeResult.startTime +
? workSheetDetail.analyzeResult.startTime +
"—" +
workSheetDetail.analyzeResult.endTime
: ""
: ""
}}
</span>
</div>
...
...
@@ -281,8 +301,8 @@
{{
workSheetDetail.analyzeResult
&&
workSheetDetail.analyzeResult.pm10AvgRoad
? workSheetDetail.analyzeResult.pm10AvgRoad + " μg/m³"
: "--"
? workSheetDetail.analyzeResult.pm10AvgRoad + " μg/m³"
: "--"
}}
</span>
</div>
...
...
@@ -290,15 +310,15 @@
<span
class=
"name"
>
道路清洁度指数:
</span>
<
template
v-if=
"workSheetDetail.analyzeResult"
>
<div
v-for=
"(item, i) in Number(
v-for=
"(item, i) in Number(
workSheetDetail.analyzeResult.riskLevel
)
? Number(workSheetDetail.analyzeResult.riskLevel)
: 0"
:key=
"i"
:key=
"i"
>
<span
v-if=
"Number(workSheetDetail.analyzeResult.riskLevel)"
v-if=
"Number(workSheetDetail.analyzeResult.riskLevel)"
>
<img
src=
"@/assets/star.png"
alt=
"⭐️"
/>
</span>
...
...
@@ -306,7 +326,7 @@
</
template
>
<div
v-if=
"
v-if=
"
workSheetDetail.analyzeResult &&
workSheetDetail.analyzeResult.riskLevel == '-'
"
...
...
@@ -323,8 +343,8 @@
{{
workSheetDetail.analyzeResult
&&
workSheetDetail.analyzeResult.vdmAvgRoad
? workSheetDetail.analyzeResult.vdmAvgRoad + " μg/m³"
: "--"
? workSheetDetail.analyzeResult.vdmAvgRoad + " μg/m³"
: "--"
}}
</span>
</div>
...
...
@@ -333,8 +353,8 @@
</el-row>
<el-row
:gutter=
"24"
v-if=
"
:gutter=
"24"
v-if=
"
workSheetDetail.forwards &&
workSheetDetail.forwards[0] &&
workSheetDetail.triggerType === 2
...
...
@@ -346,8 +366,8 @@
{{ workSheetDetail.forwards[0].forward }}
</div>
<div
class=
"input-style-text"
v-if=
"
class=
"input-style-text"
v-if=
"
!workSheetDetail.forwards[0].forward && imgUrlList.length == 0
"
>
...
...
@@ -361,15 +381,15 @@
<div
class=
"label-title"
>
告警图片
</div>
<div
class=
"demo-image__preview"
>
<div
class=
"image-preview"
v-for=
"(item, index) in alarmImg"
:key=
"index"
class=
"image-preview"
v-for=
"(item, index) in alarmImg"
:key=
"index"
>
<el-image
style=
"width: 100px; height: 100px"
:lazy=
"true"
:src=
"item"
:preview-src-list=
"alarmImg"
style=
"width: 100px; height: 100px"
:lazy=
"true"
:src=
"item"
:preview-src-list=
"alarmImg"
></el-image>
</div>
</div>
...
...
@@ -377,8 +397,8 @@
</el-row>
<el-row
:gutter=
"24"
v-if=
"
:gutter=
"24"
v-if=
"
workSheetDetail.typeName == 'CEMS' &&
(workSheetDetail.leftAvgValue > 0 ||
workSheetDetail.leftAvgValue == 0)
...
...
@@ -393,8 +413,8 @@
<span
class=
"value"
>
{{
workSheetDetail.leftAvgValue
? workSheetDetail.leftAvgValue.toFixed(2)
: ""
? workSheetDetail.leftAvgValue.toFixed(2)
: ""
}}
</span>
{{ workSheetDetail.unit }}
...
...
@@ -410,15 +430,15 @@
<div
class=
"label-title"
>
告警图片
</div>
<div
class=
"demo-image__preview"
>
<div
class=
"image-preview"
v-for=
"(item, index) in srcList"
:key=
"index"
class=
"image-preview"
v-for=
"(item, index) in srcList"
:key=
"index"
>
<el-image
style=
"width: 100px; height: 100px"
:lazy=
"true"
:src=
"item"
:preview-src-list=
"srcList"
style=
"width: 100px; height: 100px"
:lazy=
"true"
:src=
"item"
:preview-src-list=
"srcList"
></el-image>
</div>
</div>
...
...
@@ -426,33 +446,33 @@
</el-row>
<el-row
:gutter=
"24"
v-if=
"functionAuthority && functionAuthority.close_loop_upgrade"
:gutter=
"24"
v-if=
"functionAuthority && functionAuthority.close_loop_upgrade"
>
<el-col
:span=
"24"
class=
"deal-line-wrap"
>
<div
class=
"label-title"
>
落实管理制度
</div>
<div
class=
"processing-records"
:class=
"[
class=
"processing-records"
:class=
"[
workSheetDetail.levelManageList.length == 1
? 'one-record'
: '',
]"
v-if=
"
v-if=
"
workSheetDetail.levelManageList &&
workSheetDetail.levelManageList.length > 0
"
>
<div
class=
"processing-records-item"
v-for=
"(item, index) in workSheetDetail.levelManageList"
:key=
"index"
class=
"processing-records-item"
v-for=
"(item, index) in workSheetDetail.levelManageList"
:key=
"index"
>
<div
class=
"steps-line"
>
<div
class=
"header"
v-show=
"index !== 0"
></div>
<div
class=
"footer"
v-show=
"
class=
"footer"
v-show=
"
index !== workSheetDetail.levelManageList.length - 1
"
></div>
...
...
@@ -462,10 +482,10 @@
<span
class=
"step-name"
>
{{
item.state == 0
? "处理中"
: item.state == 1
? "已处理"
: ""
? "处理中"
: item.state == 1
? "已处理"
: ""
}}
</span>
<span
class=
"partment"
>
{{ item.officeName || "无" }}
</span>
...
...
@@ -490,21 +510,21 @@
<div
class=
"label-title"
>
现场图片
</div>
<div
class=
"demo-image__preview"
>
<div
class=
"image-preview"
v-for=
"(item, index) in imgUrlList"
:key=
"index"
class=
"image-preview"
v-for=
"(item, index) in imgUrlList"
:key=
"index"
>
<el-image
style=
"width: 100px; height: 100px"
:lazy=
"true"
:src=
"item"
:preview-src-list=
"imgUrlList"
style=
"width: 100px; height: 100px"
:lazy=
"true"
:src=
"item"
:preview-src-list=
"imgUrlList"
></el-image>
</div>
</div>
<div
class=
"input-style-text"
v-if=
"
class=
"input-style-text"
v-if=
"
!workSheetDetail.forwards[0].forward && imgUrlList.length == 0
"
>
...
...
@@ -523,14 +543,14 @@
</el-row>
<el-row
:gutter=
"24"
v-if=
"workSheetDetail.warnType && workSheetDetail.warnType === 5"
:gutter=
"24"
v-if=
"workSheetDetail.warnType && workSheetDetail.warnType === 5"
>
<el-col
:span=
"24"
>
<div
class=
"label-title"
>
改善情况
</div>
<div
class=
"improve-situation"
v-if=
"workSheetDetail.analyzeResult"
class=
"improve-situation"
v-if=
"workSheetDetail.analyzeResult"
>
<div
class=
"improve-situation-item"
>
<span>
改善前
</span>
...
...
@@ -538,7 +558,7 @@
<div
class=
"star"
v-if=
"workSheetDetail.analyzeResult"
>
<div
v-for=
"(item, i) in starList"
:key=
"i"
>
<span
v-if=
"
v-if=
"
Number(
workSheetDetail.analyzeResult
? workSheetDetail.analyzeResult.riskLevel
...
...
@@ -559,7 +579,7 @@
<div
class=
"star"
v-if=
"workSheetDetail.analyzeResult"
>
<div
v-for=
"(item, i) in 3"
:key=
"i"
>
<span
v-if=
"
v-if=
"
Number(
workSheetDetail.analyzeResult
? workSheetDetail.analyzeResult.riskLevel
...
...
@@ -580,8 +600,8 @@
</el-row>
<el-row
:gutter=
"24"
v-if=
"
:gutter=
"24"
v-if=
"
workSheetDetail.warnType &&
workSheetDetail.warnType !== 3 &&
workSheetDetail.warnType != 9 &&
...
...
@@ -608,10 +628,10 @@
<span
class=
"value"
>
{{ workSheetDetail.handleValue }}
<span>
{{
workSheetDetail.warnTypeName == "高频高幅"
? "μg/m³"
: workSheetDetail.unit
}}
</span>
workSheetDetail.warnTypeName == "高频高幅"
? "μg/m³"
: workSheetDetail.unit
}}
</span>
</span>
</div>
</div>
...
...
@@ -619,48 +639,48 @@
</el-row>
<el-row
:gutter=
"24"
v-if=
"workSheetDetail.forwards && workSheetDetail.forwards.length"
:gutter=
"24"
v-if=
"workSheetDetail.forwards && workSheetDetail.forwards.length"
>
<el-col
:span=
"24"
class=
"deal-line-wrap"
>
<div
class=
"label-title"
>
处理记录
</div>
<div
class=
"processing-records"
:class=
"[
class=
"processing-records"
:class=
"[
workSheetDetail.forwards.length == 1 ? 'one-record' : '',
]"
>
<div
class=
"processing-records-item"
v-for=
"(item, index) in workSheetDetail.forwards"
:key=
"index"
class=
"processing-records-item"
v-for=
"(item, index) in workSheetDetail.forwards"
:key=
"index"
>
<div
class=
"steps-line"
>
<div
class=
"header"
v-show=
"index !== 0"
></div>
<div
class=
"footer"
v-show=
"index !== workSheetDetail.forwards.length - 1"
class=
"footer"
v-show=
"index !== workSheetDetail.forwards.length - 1"
></div>
</div>
<span
class=
"handler"
>
{{
index === 0
&&
item.state === 1
? item.sendUserName
: item.receiveUserName
}}
</span>
index === 0
&&
item.state === 1
? item.sendUserName
: item.receiveUserName
}}
</span>
<span
class=
"circle"
></span>
<span
class=
"step-name"
>
{{
item.state == 0
? "未送达"
: item.state == 1
? "已创建"
: item.state == 2
? "已处理"
: item.state == 3
? "已分配"
: item.state == 4
? "处理中"
: ""
? "未送达"
: item.state == 1
? "已创建"
: item.state == 2
? "已处理"
: item.state == 3
? "已分配"
: item.state == 4
? "处理中"
: ""
}}
</span>
<span
class=
"handler-time"
>
...
...
@@ -674,46 +694,57 @@
</div>
</common-dialog>
<common-dialog
:show-dialog=
"rejectDialog.show"
:title=
"rejectDialog.title"
:width=
"rejectDialog.width"
@
handleBtn=
"saveReject"
@
close:showDialog=
"rejectDialog.show = false"
:show-dialog=
"rejectDialog.show"
:title=
"rejectDialog.title"
:width=
"rejectDialog.width"
@
handleBtn=
"saveReject"
@
close:showDialog=
"rejectDialog.show = false"
>
<el-form>
<el-form-item
label=
"驳回原因"
>
<el-select
v-model=
"rejectType"
>
<el-option
v-for=
"(item, i) in reasonList"
:key=
"i"
:label=
"item.description"
:value=
"item.rejectType"
<el-option
v-for=
"(item, i) in reasonList"
:key=
"i"
:label=
"item.description"
:value=
"item.rejectType"
>
</el-option>
</el-select>
</el-form-item>
<el-row>
<el-col
:span=
"24"
>
<el-input
type=
"textarea"
v-model=
"rejectReason"
:autosize=
"{ minRows: 2, maxRows: 12 }"
placeholder=
"请输入内容"
>
<el-input
type=
"textarea"
v-model=
"rejectReason"
:autosize=
"{ minRows: 2, maxRows: 12 }"
placeholder=
"请输入内容"
>
</el-input>
</el-col>
</el-row>
</el-form>
</common-dialog>
<common-dialog
:show-dialog=
"bagDialog.show"
:title=
"bagDialog.title"
:btn-group=
"bagDialog.btnGroup"
:width=
"bagDialog.width"
@
handleBtn=
"saveBag"
@
close:showDialog=
"bagDialog.show = false"
:show-dialog=
"bagDialog.show"
:title=
"bagDialog.title"
:btn-group=
"bagDialog.btnGroup"
:width=
"bagDialog.width"
@
handleBtn=
"saveBag"
@
close:showDialog=
"bagDialog.show = false"
>
<el-form>
<el-form-item
label=
"第几行:"
>
<el-select
v-model=
"bagRow"
placeholder=
"请选择第几行"
@
change=
"getCol"
>
<el-select
v-model=
"bagRow"
placeholder=
"请选择第几行"
@
change=
"getCol"
>
<el-option
v-for=
"item in rowList"
:key=
"item"
:label=
"item"
:value=
"item"
v-for=
"item in rowList"
:key=
"item"
:label=
"item"
:value=
"item"
>
</el-option>
</el-select>
...
...
@@ -721,9 +752,10 @@
<el-form-item
label=
"第几列:"
>
<el-select
v-model=
"bagCol"
placeholder=
"请选择第几列"
>
<el-option
v-for=
"item in colList"
:key=
"item"
:label=
"item"
:value=
"item"
v-for=
"item in colList"
:key=
"item"
:label=
"item"
:value=
"item"
>
</el-option>
</el-select>
...
...
@@ -734,24 +766,26 @@
</template>
<
script
setup
>
import
{
ref
,
reactive
,
onMounted
,
onBeforeUnmount
,
computed
}
from
'vue'
import
{
ref
,
reactive
,
onMounted
,
onBeforeUnmount
,
computed
}
from
"vue"
;
import
CommonTable
from
"@/components/commonTable/index.vue"
;
import
commonDialog
from
"./components/dialog.vue"
;
import
{
getData
,
getDataFun
,
postDataJSON
}
from
'@/request/method.js'
;
import
moment
from
'moment'
;
import
{
getToken
}
from
'@/utils/auth.js'
;
import
{
ElMessage
}
from
'element-plus'
;
import
{
router
}
from
'@/router/index.js'
;
import
{
getData
,
getDataFun
,
postDataJSON
}
from
"@/request/method.js"
;
import
moment
from
"moment"
;
import
{
getToken
}
from
"@/utils/auth.js"
;
import
{
ElMessage
}
from
"element-plus"
;
import
{
router
}
from
"@/router/index.js"
;
const
formInline
=
ref
({
eventName
:
''
,
keyword
:
''
,
warnType
:
''
,
productionLineId
:
''
,
deviceType
:
''
,
eventName
:
""
,
keyword
:
""
,
warnType
:
""
,
productionLineId
:
""
,
deviceType
:
""
,
createTime
:
[
moment
(
new
Date
().
getTime
()
-
1000
*
60
*
60
*
24
*
30
).
format
(
'YYYY-MM-DD HH:mm:ss'
),
moment
(
new
Date
()).
format
(
'YYYY-MM-DD HH:mm:ss'
)
]
moment
(
new
Date
().
getTime
()
-
1000
*
60
*
60
*
24
*
30
).
format
(
"YYYY-MM-DD HH:mm:ss"
),
moment
(
new
Date
()).
format
(
"YYYY-MM-DD HH:mm:ss"
),
],
});
const
formModel
=
ref
({
...
...
@@ -759,90 +793,90 @@ const formModel = ref({
});
const
viewDialog
=
ref
({
title
:
'闭环控制分派'
,
title
:
"闭环控制分派"
,
show
:
false
,
width
:
'45%'
,
width
:
"45%"
,
});
const
bagDialog
=
ref
({
title
:
'更换布袋'
,
title
:
"更换布袋"
,
show
:
false
,
width
:
'30%'
,
width
:
"30%"
,
btnGroup
:
[
{
attrKey
:
'save'
,
label
:
'保存'
}
]
attrKey
:
"save"
,
label
:
"保存"
,
}
,
]
,
});
const
bagRow
=
ref
(
''
);
const
bagCol
=
ref
(
''
);
const
bagRow
=
ref
(
""
);
const
bagCol
=
ref
(
""
);
const
rowList
=
ref
([]);
const
colList
=
ref
([]);
const
saveBag
=
()
=>
{
if
(
bagRow
.
value
===
''
)
{
const
saveBag
=
()
=>
{
if
(
bagRow
.
value
===
""
)
{
ElMessage
({
type
:
'warning'
,
message
:
'请选择第几行'
type
:
"warning"
,
message
:
"请选择第几行"
,
});
return
;
}
if
(
bagCol
.
value
===
''
)
{
if
(
bagCol
.
value
===
""
)
{
ElMessage
({
type
:
'warning'
,
message
:
'请选择第几列'
type
:
"warning"
,
message
:
"请选择第几列"
,
});
return
;
}
const
params
=
{
workTicketNo
:
workTicketNo
.
value
,
row
:
bagRow
.
value
,
column
:
bagCol
.
value
column
:
bagCol
.
value
,
};
postDataJSON
(
'/transaction/doc/changeBag'
,
params
).
then
(
res
=>
{
postDataJSON
(
"/transaction/doc/changeBag"
,
params
).
then
((
res
)
=>
{
if
(
res
.
code
===
1
)
{
ElMessage
({
type
:
'success'
,
message
:
'更换布袋成功'
type
:
"success"
,
message
:
"更换布袋成功"
,
});
bagDialog
.
value
.
show
=
false
;
}
});
}
}
;
const
rowLineMap
=
ref
(
null
);
const
getBagRowLine
=
(
no
)
=>
{
const
url
=
'/bag/cycle/getCompartEnumList'
;
const
url
=
"/bag/cycle/getCompartEnumList"
;
const
params
=
{
deviceNo
:
no
}
getDataFun
(
url
,
params
).
then
(
res
=>
{
if
(
res
.
code
===
1
)
{
rowLineMap
.
value
=
res
.
data
;
res
.
data
.
forEach
(
item
=>
{
rowList
.
value
.
push
(
item
.
row
);
});
}
})
}
deviceNo
:
no
,
}
;
getDataFun
(
url
,
params
).
then
((
res
)
=>
{
if
(
res
.
code
===
1
)
{
rowLineMap
.
value
=
res
.
data
;
res
.
data
.
forEach
((
item
)
=>
{
rowList
.
value
.
push
(
item
.
row
);
});
}
});
}
;
const
getCol
=
()
=>
{
rowLineMap
.
value
.
forEach
(
item
=>
{
const
getCol
=
()
=>
{
rowLineMap
.
value
.
forEach
(
(
item
)
=>
{
if
(
item
.
row
===
bagRow
.
value
)
{
colList
.
value
=
item
.
columns
;
}
});
}
}
;
const
viewData
=
{
D
:
"在线监控(监测)仪器仪表故障"
,
B
:
"在线监控(监测)仪器仪表与数采通讯异常"
,
VGD
:
"在线监控(监测)仪器仪表与数采通讯异常"
,
}
}
;
const
warnValueFilter
=
computed
(()
=>
{
return
(
offlineTime
)
=>
{
const
warnValueFilter
=
computed
(()
=>
{
return
(
offlineTime
)
=>
{
if
(
offlineTime
==
null
||
offlineTime
<=
0
)
{
return
"--"
;
}
...
...
@@ -854,7 +888,7 @@ const warnValueFilter = computed(()=> {
return
offlineTime
/
60
+
"小时"
;
}
else
{
return
(
parseInt
(
offlineTime
/
60
)
+
"小时"
+
(
offlineTime
%
60
)
+
"分钟"
parseInt
(
offlineTime
/
60
)
+
"小时"
+
(
offlineTime
%
60
)
+
"分钟"
);
}
}
else
{
...
...
@@ -871,28 +905,28 @@ const warnValueFilter = computed(()=> {
}
return
s
;
}
}
}
;
});
const
imgUrlList
=
ref
([]);
const
alarmImg
=
ref
([]);
const
srcList
=
ref
([]);
const
workTicketNo
=
ref
(
''
);
const
rejectType
=
ref
(
''
);
const
workTicketNo
=
ref
(
""
);
const
rejectType
=
ref
(
""
);
const
reasonList
=
ref
([]);
const
rejectReason
=
ref
(
''
);
const
rejectReason
=
ref
(
""
);
const
rejectDialog
=
ref
({
title
:
'驳回申请'
,
title
:
"驳回申请"
,
show
:
false
,
width
:
'35%'
,
width
:
"35%"
,
btnGroup
:
[
{
attrKey
:
'save'
,
label
:
'保存'
}
]
attrKey
:
"save"
,
label
:
"保存"
,
}
,
]
,
});
const
getIndex
=
(
index
)
=>
{
...
...
@@ -902,47 +936,49 @@ const getIndex = (index) => {
const
basicConfiguration
=
reactive
({
ticketEventName
:
[],
deviceList
:
[],
productLineList
:
[{
productionLineName
:
'全部'
,
productionLineId
:
''
}],
productLineList
:
[{
productionLineName
:
"全部"
,
productionLineId
:
""
}],
});
const
workSheetDetail
=
ref
(
null
);
const
getProDuctLine
=
()
=>
{
const
url
=
'/transaction/getProductionLine'
;
getData
(
url
).
then
(
res
=>
{
const
getProDuctLine
=
()
=>
{
const
url
=
"/transaction/getProductionLine"
;
getData
(
url
).
then
(
(
res
)
=>
{
basicConfiguration
.
productLineList
.
push
(...
res
.
data
);
});
}
}
;
const
getColor
=
computed
(()
=>
{
const
getColor
=
computed
(()
=>
{
return
(
level
)
=>
{
if
(
level
==
2
)
{
return
'red'
return
"red"
;
}
else
if
(
level
==
1
)
{
return
'yellow'
return
"yellow"
;
}
else
{
return
'purple'
return
"purple"
;
}
}
}
;
});
const
onSearch
=
()
=>
{
searchData
();
}
const
onSearch
=
()
=>
{
searchData
();
}
;
const
onReset
=
()
=>
{
const
onReset
=
()
=>
{
currentPage
.
value
=
1
;
pageSize
.
value
=
20
;
formInline
.
value
.
eventName
=
''
;
formInline
.
value
.
keyword
=
''
;
formInline
.
value
.
productionLineId
=
''
;
formInline
.
value
.
deviceType
=
''
;
formInline
.
value
.
eventName
=
""
;
formInline
.
value
.
keyword
=
""
;
formInline
.
value
.
productionLineId
=
""
;
formInline
.
value
.
deviceType
=
""
;
formInline
.
value
.
createTime
=
[
moment
(
new
Date
().
getTime
()
-
1000
*
60
*
60
*
24
*
30
).
format
(
'YYYY-MM-DD HH:mm:ss'
),
moment
(
new
Date
()).
format
(
'YYYY-MM-DD HH:mm:ss'
)
]
moment
(
new
Date
().
getTime
()
-
1000
*
60
*
60
*
24
*
30
).
format
(
"YYYY-MM-DD HH:mm:ss"
),
moment
(
new
Date
()).
format
(
"YYYY-MM-DD HH:mm:ss"
),
];
searchData
();
}
}
;
const
personTag
=
ref
([]);
const
handleView
=
async
(
data
)
=>
{
viewDialog
.
value
.
title
=
data
.
eventName
;
...
...
@@ -950,21 +986,20 @@ const handleView = async (data) => {
viewDialog
.
value
.
show
=
true
;
personTag
.
value
=
[];
if
(
res
.
handleUsers
&&
res
.
handleUsers
.
length
>
0
)
{
res
.
handleUsers
.
forEach
(
item
=>
{
res
.
handleUsers
.
forEach
(
(
item
)
=>
{
personTag
.
value
.
push
({
type
:
'info'
,
type
:
"info"
,
name
:
item
.
userName
,
userId
:
item
.
userId
,
userName
:
item
.
userName
userName
:
item
.
userName
,
});
});
}
disposeWorkSheetDetail
(
res
);
}
const
dialogReason
=
ref
(
''
);
const
dialogMeasure
=
ref
(
''
);
const
disposeWorkSheetDetail
=
(
obj
)
=>
{
};
const
dialogReason
=
ref
(
""
);
const
dialogMeasure
=
ref
(
""
);
const
disposeWorkSheetDetail
=
(
obj
)
=>
{
const
{
reason
,
measure
,
...
...
@@ -977,8 +1012,8 @@ const disposeWorkSheetDetail = (obj)=> {
if
(
forwards
.
length
>
0
)
{
let
receiveUserItem
=
forwards
.
slice
(
-
1
)[
0
];
}
dialogMeasure
.
value
=
''
;
dialogMeasure
.
value
=
''
;
dialogMeasure
.
value
=
""
;
dialogMeasure
.
value
=
""
;
srcList
.
value
=
[];
imgUrlList
.
value
=
[];
...
...
@@ -996,140 +1031,143 @@ const disposeWorkSheetDetail = (obj)=> {
if
(
imgUrl
)
{
imgUrlList
.
value
=
imgUrl
.
split
(
";"
);
}
}
}
;
// 拒绝
const
handleReject
=
(
data
)
=>
{
const
handleReject
=
(
data
)
=>
{
workTicketNo
.
value
=
data
.
workTicketNo
;
rejectDialog
.
value
.
show
=
true
;
}
}
;
const
saveReject
=
()
=>
{
const
url
=
'/transaction/doc/reject'
;
const
saveReject
=
()
=>
{
const
url
=
"/transaction/doc/reject"
;
const
params
=
{
workTicketNo
:
workTicketNo
.
value
,
workTicketNo
:
workTicketNo
.
value
,
rejectType
:
rejectType
.
value
,
rejectReason
:
rejectReason
.
value
,
isDcTom
:
1
}
postDataJSON
(
url
,
params
).
then
(
res
=>
{
workTicketNo
.
value
=
''
;
rejectReason
.
value
=
''
;
rejectType
.
value
=
''
;
isDcTom
:
1
,
}
;
postDataJSON
(
url
,
params
).
then
((
res
)
=>
{
workTicketNo
.
value
=
""
;
rejectReason
.
value
=
""
;
rejectType
.
value
=
""
;
rejectDialog
.
value
.
show
=
false
;
ElMessage
({
type
:
'success'
,
message
:
'操作成功'
type
:
"success"
,
message
:
"操作成功"
,
});
searchData
();
});
}
}
;
const
getDetail
=
(
workTicketNo
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
const
url
=
'/transaction/doc/detail'
;
return
new
Promise
((
resolve
,
reject
)
=>
{
const
url
=
"/transaction/doc/detail"
;
const
params
=
{
workTicketNo
}
getDataFun
(
url
,
params
).
then
(
res
=>
{
workSheetDetail
.
value
=
res
.
data
;
resolve
(
res
.
data
);
}).
catch
(
err
=>
{
reject
();
});
workTicketNo
,
};
getDataFun
(
url
,
params
)
.
then
((
res
)
=>
{
workSheetDetail
.
value
=
res
.
data
;
resolve
(
res
.
data
);
})
.
catch
((
err
)
=>
{
reject
();
});
});
}
}
;
const
changeBag
=
(
data
)
=>
{
const
changeBag
=
(
data
)
=>
{
workTicketNo
.
value
=
data
.
workTicketNo
;
getBagRowLine
(
data
.
deviceNo
);
bagDialog
.
value
.
show
=
true
;
}
}
;
const
tableData
=
ref
([]);
const
tableColumns
=
ref
([
{
prop
:
'index'
,
label
:
'序号'
,
width
:
'6%'
prop
:
"index"
,
label
:
"序号"
,
width
:
"6%"
,
},
{
prop
:
'workTicketNo'
,
label
:
'编号'
,
width
:
'10%'
prop
:
"workTicketNo"
,
label
:
"编号"
,
width
:
"10%"
,
},
{
prop
:
'eventName'
,
label
:
'事件名称'
,
width
:
'10%'
prop
:
"eventName"
,
label
:
"事件名称"
,
width
:
"10%"
,
},
{
prop
:
'deviceName'
,
label
:
'发生位置'
,
width
:
'10%'
prop
:
"deviceName"
,
label
:
"发生位置"
,
width
:
"10%"
,
},
{
prop
:
'deviceNo'
,
label
:
'设备编码'
,
width
:
'10%'
prop
:
"deviceNo"
,
label
:
"设备编码"
,
width
:
"10%"
,
},
{
prop
:
'typeName'
,
label
:
'设备类型'
,
width
:
'10%'
prop
:
"typeName"
,
label
:
"设备类型"
,
width
:
"10%"
,
},
{
prop
:
'signalName'
,
label
:
'信号名称'
,
width
:
'10%'
prop
:
"signalName"
,
label
:
"信号名称"
,
width
:
"10%"
,
},
{
prop
:
'productionLine'
,
label
:
'所属工序'
,
width
:
'10%'
},
{
prop
:
'warnTypeName'
,
label
:
'类型'
,
width
:
'10%'
},
{
prop
:
'createTime'
,
label
:
'发生时间'
,
width
:
'10%'
},
{
prop
:
'desc'
,
label
:
'闭环状态'
,
width
:
'10%'
},
{
prop
:
'handleUser'
,
label
:
'处理人'
,
width
:
'10%'
},
{
prop
:
'finishTime'
,
label
:
'完成时间'
,
width
:
'10%'
},
{
prop
:
'level'
,
label
:
'级别'
,
width
:
'5%'
},
prop
:
"productionLine"
,
label
:
"所属工序"
,
width
:
"10%"
,
},
{
prop
:
"warnTypeName"
,
label
:
"类型"
,
width
:
"10%"
},
{
prop
:
"createTime"
,
label
:
"发生时间"
,
width
:
"10%"
},
{
prop
:
"desc"
,
label
:
"闭环状态"
,
width
:
"10%"
},
{
prop
:
"handleUser"
,
label
:
"处理人"
,
width
:
"10%"
},
{
prop
:
"finishTime"
,
label
:
"完成时间"
,
width
:
"10%"
},
{
prop
:
"level"
,
label
:
"级别"
,
width
:
"5%"
},
{
prop
:
"operation"
,
label
:
"操作"
,
width
:
'15%'
width
:
"15%"
,
},
]);
const
customerId
=
getToken
(
"customerId"
);
const
customerId
=
getToken
(
'customerId'
);
const
getWarnAndTicketConfigMap
=
()
=>
{
const
url
=
'/system/getWarnAndTicketConfigMap'
;
const
getWarnAndTicketConfigMap
=
()
=>
{
const
url
=
"/system/getWarnAndTicketConfigMap"
;
const
params
=
{
customerId
}
getDataFun
(
url
,
params
).
then
(
res
=>
{
customerId
,
}
;
getDataFun
(
url
,
params
).
then
((
res
)
=>
{
if
(
res
&&
res
.
code
===
1
)
{
const
{
ticketEventName
}
=
res
.
data
;
basicConfiguration
.
ticketEventName
=
basicConfiguration
.
ticketEventName
.
concat
(
ticketEventName
);
basicConfiguration
.
ticketEventName
=
basicConfiguration
.
ticketEventName
.
concat
(
ticketEventName
);
}
});
};
let
realBtn
=
''
;
let
realBtn
=
""
;
const
searchData
=
()
=>
{
const
searchData
=
()
=>
{
currentPage
.
value
=
1
;
pageSize
.
value
=
20
;
getTableData
();
}
}
;
const
total
=
ref
(
0
);
const
getTableData
=
()
=>
{
const
getTableData
=
()
=>
{
let
keyWord
=
formInline
.
value
.
keyword
;
const
params
=
{
eventName
:
formInline
.
value
.
eventName
,
...
...
@@ -1143,75 +1181,75 @@ const getTableData = ()=> {
handleState
:
2
,
belongTo
:
1
,
isDcTom
:
1
,
deviceType
:
formInline
.
value
.
deviceType
}
deviceType
:
formInline
.
value
.
deviceType
,
}
;
tableData
.
value
=
[];
const
url
=
'/transaction/doc/getListParamPage'
;
getDataFun
(
url
,
params
).
then
(
res
=>
{
const
url
=
"/transaction/doc/getListParamPage"
;
getDataFun
(
url
,
params
).
then
((
res
)
=>
{
if
(
res
&&
res
.
code
===
1
)
{
const
{
list
}
=
res
.
data
;
total
.
value
=
res
.
data
.
total
;
disposeType
(
list
);
tableData
.
value
=
list
;
tableData
.
value
.
forEach
(
item
=>
{
item
.
handleUser
=
''
;
item
.
handleUsers
.
forEach
((
ele
,
eIndex
)
=>
{
if
(
eIndex
>
0
)
{
item
.
handleUser
+=
','
+
ele
.
userName
;
}
else
{
item
.
handleUser
+=
ele
.
userName
;
}
});
tableData
.
value
.
forEach
(
(
item
)
=>
{
item
.
handleUser
=
""
;
item
.
handleUsers
.
forEach
((
ele
,
eIndex
)
=>
{
if
(
eIndex
>
0
)
{
item
.
handleUser
+=
","
+
ele
.
userName
;
}
else
{
item
.
handleUser
+=
ele
.
userName
;
}
});
});
}
});
}
}
;
const
disposeType
=
(
list
)
=>
{
const
disposeType
=
(
list
)
=>
{
if
(
list
.
length
)
{
list
.
forEach
(
l
=>
{
list
.
forEach
(
(
l
)
=>
{
if
(
!
l
.
deviceNo
)
{
l
.
deviceNo
=
'--'
;
l
.
deviceNo
=
"--"
;
}
switch
(
l
.
warnType
)
{
case
0
:
l
.
warnType
=
'人工提交'
break
l
.
warnType
=
"人工提交"
;
break
;
case
1
:
l
.
warnType
=
'超标'
break
l
.
warnType
=
"超标"
;
break
;
case
2
:
l
.
warnType
=
'超低'
break
l
.
warnType
=
"超低"
;
break
;
case
3
:
l
.
warnType
=
'生产治理同步率'
break
l
.
warnType
=
"生产治理同步率"
;
break
;
case
4
:
l
.
warnType
=
'离线'
break
l
.
warnType
=
"离线"
;
break
;
case
5
:
l
.
warnType
=
'其他'
break
l
.
warnType
=
"其他"
;
break
;
case
10
:
l
.
warnType
=
'持续超标'
break
l
.
warnType
=
"持续超标"
;
break
;
case
11
:
l
.
warnType
=
'三倍超标'
break
l
.
warnType
=
"三倍超标"
;
break
;
case
99
:
l
.
warnType
=
'恒值'
break
l
.
warnType
=
"恒值"
;
break
;
}
})
})
;
}
}
}
;
const
getDeviceType
=
()
=>
{
const
url
=
'/alarm/getDeviceType'
;
getData
(
url
).
then
(
res
=>
{
const
getDeviceType
=
()
=>
{
const
url
=
"/alarm/getDeviceType"
;
getData
(
url
).
then
(
(
res
)
=>
{
basicConfiguration
.
deviceList
=
res
.
data
;
});
}
}
;
onMounted
(()
=>
{
getProDuctLine
();
...
...
@@ -1235,7 +1273,7 @@ const handlePaginationChange = (pagination) => {
width
:
100%
;
height
:
calc
(
100%
-
14px
);
box-sizing
:
border-box
;
background
:
#181
D
21
;
background
:
#181
d
21
;
padding
:
20px
;
display
:
flex
;
flex-direction
:
column
;
...
...
@@ -1256,7 +1294,7 @@ const handlePaginationChange = (pagination) => {
// color: #faa508;
position
:
relative
;
&
:
:
before
{
content
:
' '
;
content
:
" "
;
width
:
8px
;
height
:
8px
;
border-radius
:
50%
;
...
...
@@ -1269,7 +1307,7 @@ const handlePaginationChange = (pagination) => {
.red
{
position
:
relative
;
&
:
:
before
{
content
:
' '
;
content
:
" "
;
width
:
8px
;
height
:
8px
;
border-radius
:
50%
;
...
...
@@ -1283,7 +1321,7 @@ const handlePaginationChange = (pagination) => {
.purple
{
position
:
relative
;
&
:
:
before
{
content
:
' '
;
content
:
" "
;
width
:
8px
;
height
:
8px
;
border-radius
:
50%
;
...
...
@@ -1312,18 +1350,18 @@ const handlePaginationChange = (pagination) => {
line-height
:
33px
;
&
:first-child
{
background
:
linear-gradient
(
225deg
,
rgba
(
255
,
133
,
128
,
0
.65
)
0%
,
rgba
(
255
,
58
,
71
,
0
.61
)
100%
,
#0049fa
100%
225deg
,
rgba
(
255
,
133
,
128
,
0
.65
)
0%
,
rgba
(
255
,
58
,
71
,
0
.61
)
100%
,
#0049fa
100%
);
}
&
:last-child
{
background
:
linear-gradient
(
225deg
,
rgba
(
128
,
255
,
178
,
0
.65
)
0%
,
rgba
(
58
,
120
,
255
,
0
.61
)
100%
,
#0049fa
100%
225deg
,
rgba
(
128
,
255
,
178
,
0
.65
)
0%
,
rgba
(
58
,
120
,
255
,
0
.61
)
100%
,
#0049fa
100%
);
}
.road-cleanliness-index
{
...
...
@@ -1482,18 +1520,18 @@ const handlePaginationChange = (pagination) => {
line-height
:
33px
;
&
:first-child
{
background
:
linear-gradient
(
225deg
,
rgba
(
255
,
133
,
128
,
0
.65
)
0%
,
rgba
(
255
,
58
,
71
,
0
.61
)
100%
,
#0049fa
100%
225deg
,
rgba
(
255
,
133
,
128
,
0
.65
)
0%
,
rgba
(
255
,
58
,
71
,
0
.61
)
100%
,
#0049fa
100%
);
}
&
:last-child
{
background
:
linear-gradient
(
225deg
,
rgba
(
128
,
255
,
178
,
0
.65
)
0%
,
rgba
(
58
,
120
,
255
,
0
.61
)
100%
,
#0049fa
100%
225deg
,
rgba
(
128
,
255
,
178
,
0
.65
)
0%
,
rgba
(
58
,
120
,
255
,
0
.61
)
100%
,
#0049fa
100%
);
}
.road-cleanliness-index
{
...
...
@@ -1685,7 +1723,7 @@ const handlePaginationChange = (pagination) => {
margin-bottom
:
20px
;
}
}
.label-title-content
{
width
:
90%
;
padding-left
:
30px
;
...
...
@@ -1737,16 +1775,16 @@ const handlePaginationChange = (pagination) => {
margin-right
:
10px
;
}
.input-style
{
padding-left
:
50px
;
}
.input-style-text
{
padding
:
0
50px
;
font-size
:
14px
;
font-weight
:
400
;
color
:
#3b3b3b
;
line-height
:
24px
;
}
.input-style
{
padding-left
:
50px
;
}
.input-style-text
{
padding
:
0
50px
;
font-size
:
14px
;
font-weight
:
400
;
color
:
#3b3b3b
;
line-height
:
24px
;
}
.default-btn
{
width
:
85px
;
...
...
src/views/collectorList/collectorList.vue
View file @
41b4f571
...
...
@@ -26,6 +26,7 @@
range-separator=
"~"
start-placeholder=
"开始时间"
end-placeholder=
"结束时间"
popper-class=
"date-picker-popper"
:teleported=
"false"
/>
</el-form-item>
...
...
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