|  |  |  | 
|---|
|  |  |  | <div class="h1">{{ cateList[type] }}</div> | 
|---|
|  |  |  | <div class="time">提交时间:{{ info.createDate }}</div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="right"  :class="{ scs: info.status == '3' || info.status == '4' || info.status == '5',  msg: info.status == '6' }">{{statusMap[info.status] }}</div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="info"> | 
|---|
|  |  |  | <div class="title">工单信息</div> | 
|---|
|  |  |  | <div class="info">  <div class="title">工单信息</div> | 
|---|
|  |  |  | <div class="list"> | 
|---|
|  |  |  | <div class="item"> | 
|---|
|  |  |  | <div class="label">员工姓名</div> | 
|---|
|  |  |  | 
|---|
|  |  |  | <div class="value">{{ info.companyName }} </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="item"> | 
|---|
|  |  |  | <div class="label">观察主题</div> | 
|---|
|  |  |  | <div class="value">{{ info.typeName }}</div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="item"> | 
|---|
|  |  |  | <div class="label">上报时间</div> | 
|---|
|  |  |  | <div class="value">{{ info.submitDate }}</div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="item"> | 
|---|
|  |  |  | <div class="label">发生时间</div> | 
|---|
|  |  |  | <div class="label">发现时间</div> | 
|---|
|  |  |  | <div class="value">{{ info.happenTime}}</div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="item"> | 
|---|
|  |  |  | <div class="label">风险类型</div> | 
|---|
|  |  |  | <div class="value">{{ info.typeName }}</div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="item"> | 
|---|
|  |  |  | <div class="label">发生地点</div> | 
|---|
|  |  |  | <div class="label">位置</div> | 
|---|
|  |  |  | <div class="value">{{ info.locationName }}</div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="item"> | 
|---|
|  |  |  | <div class="label">风险描述</div> | 
|---|
|  |  |  | <div class="value">{{ info.riskInfo }}</div> | 
|---|
|  |  |  | <div class="label">通知人</div> | 
|---|
|  |  |  | <div class="value">{{ info.memberNames }}</div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="item"> | 
|---|
|  |  |  | <div class="label">观察项统计</div> | 
|---|
|  |  |  | <div class="value"  style="color: #1562e2" >符合:【{{ info.dcaYesNum || 0 }}】    不符合:【 <span  style="color: red" >{{(info.dcaNoNum||0)}}</span> 】</div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="item" style="width: 100%"> | 
|---|
|  |  |  | <div class="label">图片</div> | 
|---|
|  |  |  | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="side" > | 
|---|
|  |  |  | <div class="side_title">处理流程</div> | 
|---|
|  |  |  | <div class="list" v-if=" info.logList != null && info.logList.length != 0 | 
|---|
|  |  |  | "> | 
|---|
|  |  |  | <div class="item" v-for="(item, index) in info.logList" :key="item.id"> | 
|---|
|  |  |  | <div class="separate" v-if="index < info.logList.length - 1"></div> | 
|---|
|  |  |  | <div class="info"> | 
|---|
|  |  |  | <img src="@/assets/icons/ic_dangqian.png" class="iconnew"  /> | 
|---|
|  |  |  | <div class="content"> | 
|---|
|  |  |  | <div class="line"> | 
|---|
|  |  |  | <div class="name">{{ item.title }}</div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="line"> | 
|---|
|  |  |  | <div class="company"> | 
|---|
|  |  |  | 员工:<span>  {{ item.userName }} / {{item.companyName}}</span> | 
|---|
|  |  |  | <div style="display: block" >时间:<span>{{item.createDate}}</span></div> | 
|---|
|  |  |  | <div class="dealinfo"> | 
|---|
|  |  |  | <div style="display: block" v-if="item.param2" >处理人:<span>{{item.param2}}</span></div> | 
|---|
|  |  |  | <div style="display: block" v-if="item.remark" >说明:<span>{{item.remark}}</span></div> | 
|---|
|  |  |  | <div style="display: block;margin-top:10px"  v-if="item.multifileList !=null && item.multifileList.length"> | 
|---|
|  |  |  | <div v-for="item in item.multifileList" :key="item.id" style="display: inline;margin-right: 5px"> | 
|---|
|  |  |  | <video | 
|---|
|  |  |  | v-if="item.fileurlFull && item.fileurlFull.endsWith('.mp4')" | 
|---|
|  |  |  | ref="videoRef" | 
|---|
|  |  |  | controls | 
|---|
|  |  |  | preload="auto" | 
|---|
|  |  |  | style="width: 50px;height: 50px;object-fit: contain;" | 
|---|
|  |  |  | :src="item.fileurlFull" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | <el-image | 
|---|
|  |  |  | v-else-if="item.fileurlFull" | 
|---|
|  |  |  | style="width:50px; height: 50px;" | 
|---|
|  |  |  | :src="item.fileurlFull" | 
|---|
|  |  |  | :preview-src-list="[item.fileurlFull]"> | 
|---|
|  |  |  | </el-image> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="table_info"> | 
|---|
|  |  |  | <div class="title">不符合项工单列表</div> | 
|---|
|  |  |  | <el-table :data="info.dcaChildList" border fit> | 
|---|
|  |  |  | <el-table-column prop="index" label="序号" width="55" fixed="left"> | 
|---|
|  |  |  | <template slot-scope="scope">{{ scope.$index+1}}</template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column label="工单号" prop="code" min-width="100"> | 
|---|
|  |  |  | <template slot-scope="{row}"> | 
|---|
|  |  |  | <span style="color: #2E68EC;cursor: pointer" @click="$refs.OperaWorkorderDetailDcaInfoWindow.open('DCA不符合项工单详情', row)" >{{ row.code || '-'}}</span> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column label="一级主题" prop="typeName" min-width="60"> </el-table-column> | 
|---|
|  |  |  | <el-table-column label="二级主题" prop="categoryName" min-width="60"> </el-table-column> | 
|---|
|  |  |  | <el-table-column label="观察项" prop="problemTitle" min-width="100"> </el-table-column> | 
|---|
|  |  |  | <el-table-column label="不符合原因" prop="eventInfo" min-width="120" /> | 
|---|
|  |  |  | <el-table-column label="处理状态" prop="status" min-width="80"> | 
|---|
|  |  |  | <template slot-scope="{row}"> | 
|---|
|  |  |  | <span :class="'statusInfo'+row.status" v-if="row.status ==0">待处理</span> | 
|---|
|  |  |  | <span :class="'statusInfo'+row.status" v-else-if="row.status ==3 ||row.status ==4||row.status ==5">已处理</span> | 
|---|
|  |  |  | <span :class="'statusInfo'+row.status" v-else>处理中</span> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column label="操作" prop="status" min-width="80"> | 
|---|
|  |  |  | <template slot-scope="{row}"> | 
|---|
|  |  |  | <el-button type="text" @click="$refs.OperaWorkorderDetailDcaInfoWindow.open('DCA不符合项工单详情', row)" icon="el-icon-zoom-out" >查看详情</el-button> | 
|---|
|  |  |  | <!--<el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:workorder:delete']">删除</el-button>--> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | </el-table> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="table_info"> | 
|---|
|  |  |  | <div class="title">符合项列表</div> | 
|---|
|  |  |  | <el-table :data="dataList2" border fit> | 
|---|
|  |  |  | <el-table-column prop="index" label="序号" width="55" fixed="left"> | 
|---|
|  |  |  | <template slot-scope="scope">{{ scope.$index+1}}</template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column label="一级主题" prop="typeName" min-width="160"> </el-table-column> | 
|---|
|  |  |  | <el-table-column label="二级主题" prop="categoryName" min-width="150"> </el-table-column> | 
|---|
|  |  |  | <el-table-column label="观察项" prop="problemTitle" min-width="400"> </el-table-column> | 
|---|
|  |  |  | </el-table> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <!--  --> | 
|---|
|  |  |  | <template v-slot:footer> | 
|---|
|  |  |  | <el-button @click="close">返回</el-button> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | <OperaWorkorderDetailDcaInfoWindow ref="OperaWorkorderDetailDcaInfoWindow" /> | 
|---|
|  |  |  | </GlobalWindow> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <script> | 
|---|
|  |  |  | import BaseOpera from '@/components/base/BaseOpera' | 
|---|
|  |  |  | import GlobalWindow from '@/components/common/GlobalWindow' | 
|---|
|  |  |  | import OperaWorkorderDetailDcaInfoWindow from '@/components/business/OperaWorkorderDetailDcaInfoWindow' | 
|---|
|  |  |  | import { getById } from '@/api/business/workorder' | 
|---|
|  |  |  | export default { | 
|---|
|  |  |  | name: 'OperaWorkorderDetailDbhWindow', | 
|---|
|  |  |  | extends: BaseOpera, | 
|---|
|  |  |  | components: { GlobalWindow }, | 
|---|
|  |  |  | components: { GlobalWindow ,OperaWorkorderDetailDcaInfoWindow}, | 
|---|
|  |  |  | data () { | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | id: '', | 
|---|
|  |  |  | type: null, | 
|---|
|  |  |  | title: '工单详情', | 
|---|
|  |  |  | info: {}, | 
|---|
|  |  |  | dataList2: [], | 
|---|
|  |  |  | statusMap: { | 
|---|
|  |  |  | 0: '待分配WTS', | 
|---|
|  |  |  | 1: '待分配任务', | 
|---|
|  |  |  | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | cateList: { | 
|---|
|  |  |  | 0: 'SHE事件工单', | 
|---|
|  |  |  | 1: '跌绊滑事件工单', | 
|---|
|  |  |  | 2: 'DCA事件提交记录', | 
|---|
|  |  |  | 3: 'DCA事件工单' | 
|---|
|  |  |  | 1: 'DCA事件提交记录', | 
|---|
|  |  |  | 2: 'DCA事件工单', | 
|---|
|  |  |  | 3: '跌绊滑事件工单' | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | 
|---|
|  |  |  | getDetail () { | 
|---|
|  |  |  | getById(this.info.id).then(res => { | 
|---|
|  |  |  | this.info = res | 
|---|
|  |  |  | this.getDataListByRemak() | 
|---|
|  |  |  | if (this.info.logList && this.info.logList.length > 0) { | 
|---|
|  |  |  | this.info.logList.forEach(item => { | 
|---|
|  |  |  | if (item.approveList && item.approveList.length == 1 && item.type !== 1) { | 
|---|
|  |  |  | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | getDataListByRemak () { | 
|---|
|  |  |  | this.dataList2 =[] | 
|---|
|  |  |  | if(this.info.remark){ | 
|---|
|  |  |  | var obj = JSON.parse(this.info.remark) | 
|---|
|  |  |  | console.log(obj) | 
|---|
|  |  |  | if(obj && obj.childMapList){ | 
|---|
|  |  |  | obj.childMapList.forEach(item =>{ | 
|---|
|  |  |  | if(item && item.problemMapList){ | 
|---|
|  |  |  | item.problemMapList.forEach(item1 =>{ | 
|---|
|  |  |  | if(item1 && item1.status === 1){ | 
|---|
|  |  |  | this.dataList2.push({'typeName':this.info.typeName, 'categoryName':item.childTitle,'problemTitle':item1.title}) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | reject () { }, | 
|---|
|  |  |  | handleAvatarSuccess () { }, | 
|---|
|  |  |  | 
|---|
|  |  |  | .list { | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | flex-wrap: wrap; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .item { | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | width: 40%; | 
|---|
|  |  |  | width: 30%; | 
|---|
|  |  |  | font-size: 14px; | 
|---|
|  |  |  | margin-bottom: 20px; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | &:nth-of-type(2n) { | 
|---|
|  |  |  | width: 60%; | 
|---|
|  |  |  | width: 30%; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .label { | 
|---|
|  |  |  | color: #888888; | 
|---|
|  |  |  | width: 100px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .value { | 
|---|
|  |  |  | color: #111111; | 
|---|
|  |  |  | } | 
|---|