Commit 41b4f571 authored by Cai Wei's avatar Cai Wei

Merge branch 'dev' of https://app.bmetech.com/liuzhaohui/dctomproject into dev

parents 5082b90e 6e679ff5
......@@ -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>
......
......@@ -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: #181D21;
background: #181d21;
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 {
......
......@@ -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: #181D21;
background: #181d21;
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;
......
......@@ -26,6 +26,7 @@
range-separator="~"
start-placeholder="开始时间"
end-placeholder="结束时间"
popper-class="date-picker-popper"
:teleported="false"
/>
</el-form-item>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment