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