|  |  |  | 
|---|
|  |  |  | <template> | 
|---|
|  |  |  | <GlobalWindow | 
|---|
|  |  |  | :title="title" | 
|---|
|  |  |  | width="80%" | 
|---|
|  |  |  | width="85%" | 
|---|
|  |  |  | :visible.sync="visible" | 
|---|
|  |  |  | :confirm-working="isWorking" | 
|---|
|  |  |  | @confirm="confirm"> | 
|---|
|  |  |  | 
|---|
|  |  |  | <div class="h1">{{ cateList[type] }}</div> | 
|---|
|  |  |  | <div class="time">提交时间:{{ info.createDate }}</div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="right"  :class="{ scs: info.status == '4', msg: info.status == '3' }">{{   statusMap[info.status] }}</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="title">工单信息</div> | 
|---|
|  |  |  | <div class="list"> | 
|---|
|  |  |  | <div class="item"> | 
|---|
|  |  |  | <div class="label">被访人</div> | 
|---|
|  |  |  | <div class="value">{{ info.visitUserName }}</div> | 
|---|
|  |  |  | <div class="label">员工姓名</div> | 
|---|
|  |  |  | <div class="value">{{ info.memberName }} - {{ info.memberPhone || '[无手机号]' }}</div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="item"> | 
|---|
|  |  |  | <div class="label">来访时间</div> | 
|---|
|  |  |  | <div class="value">{{ info.visitTime }}</div> | 
|---|
|  |  |  | <div class="label">所属部门</div> | 
|---|
|  |  |  | <div class="value">{{ info.companyName }} </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="item"> | 
|---|
|  |  |  | <div class="label">来访事由</div> | 
|---|
|  |  |  | <div class="value">{{ info.visitReason }}</div> | 
|---|
|  |  |  | <div class="label">上报时间</div> | 
|---|
|  |  |  | <div class="value">{{ info.submitDate +' '}}</div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="item"> | 
|---|
|  |  |  | <div class="label">随行车辆</div> | 
|---|
|  |  |  | <div class="value">{{ info.carNos }}</div> | 
|---|
|  |  |  | <div class="label">涉及人员</div> | 
|---|
|  |  |  | <div class="value" v-if="info.memberType == 2">供应商-{{info.memberNames}}</div> | 
|---|
|  |  |  | <div class="value" v-else-if="info.memberType == 1">同事-{{info.memberNames}}</div> | 
|---|
|  |  |  | <div class="value" v-else>本人</div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="item"> | 
|---|
|  |  |  | <div class="label">涉及施工作业</div> | 
|---|
|  |  |  | <div class="value">{{ info.type == "0" ? "否" : "是" }}</div> | 
|---|
|  |  |  | <div class="label">发生地点</div> | 
|---|
|  |  |  | <div class="value">{{ info.locationName }}</div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="item"> | 
|---|
|  |  |  | <div class="label">施工内容</div> | 
|---|
|  |  |  | <div class="value">{{ info.constructionReason }}</div> | 
|---|
|  |  |  | <div class="label">外部就医</div> | 
|---|
|  |  |  | <div class="value">{{ info.outJiuyi == "0" ? "否" : "是" }}</div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="item" v-if="info.outJiuyi == '0'"> | 
|---|
|  |  |  | <div class="label">医务室</div> | 
|---|
|  |  |  | <div class="value">{{ info.isYiwushi == "0" ? "否" : "是" }}</div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="item" v-if="info.isYiwushi == '0'"> | 
|---|
|  |  |  | <div class="label">是否受伤</div> | 
|---|
|  |  |  | <div class="value">{{ info.isHurted == "0" ? "否" : "是" }}</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.workRelated == "0" ? "否" : "是" }}</div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="item"> | 
|---|
|  |  |  | <div class="label">事件说明</div> | 
|---|
|  |  |  | <div class="value">{{ info.eventInfo || '-'}}</div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="item" style="width: 100%"> | 
|---|
|  |  |  | <div class="label">图片</div> | 
|---|
|  |  |  | <div class="value" v-if="info.multifileList ==null || !info.multifileList.length">无</div> | 
|---|
|  |  |  | <div class="value" v-if="info.multifileList !=null && info.multifileList.length"> | 
|---|
|  |  |  | <div v-for="item in info.multifileList" :key="item.id" style="display: inline;margin-right: 20px"> | 
|---|
|  |  |  | <video | 
|---|
|  |  |  | v-if="item.fileurlFull && item.fileurlFull.endsWith('.mp4')" | 
|---|
|  |  |  | ref="videoRef" | 
|---|
|  |  |  | controls | 
|---|
|  |  |  | preload="auto" | 
|---|
|  |  |  | style="width: 80px;height: 80px;object-fit: contain;" | 
|---|
|  |  |  | :src="item.fileurlFull" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | <el-image | 
|---|
|  |  |  | v-else-if="item.fileurlFull" | 
|---|
|  |  |  | style="width:80px; height: 80px" | 
|---|
|  |  |  | :src="item.fileurlFull" | 
|---|
|  |  |  | :preview-src-list="[item.fileurlFull]"> | 
|---|
|  |  |  | </el-image> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="side"> | 
|---|
|  |  |  | <div class="side" v-if="false"> | 
|---|
|  |  |  | <div class="side_title">操作历史</div> | 
|---|
|  |  |  | <div class="list" v-if=" info.logList != null && info.logList.length != 0 | 
|---|
|  |  |  | "> | 
|---|
|  |  |  | 
|---|
|  |  |  | <script> | 
|---|
|  |  |  | import BaseOpera from '@/components/base/BaseOpera' | 
|---|
|  |  |  | import GlobalWindow from '@/components/common/GlobalWindow' | 
|---|
|  |  |  | import {getById } from '@/api/business/workorder' | 
|---|
|  |  |  | export default { | 
|---|
|  |  |  | name: 'OperaWorkorderWindow', | 
|---|
|  |  |  | extends: BaseOpera, | 
|---|
|  |  |  | 
|---|
|  |  |  | title: '工单详情', | 
|---|
|  |  |  | info: {}, | 
|---|
|  |  |  | statusMap: { | 
|---|
|  |  |  | 0: '待审核', | 
|---|
|  |  |  | 1: '处理中', | 
|---|
|  |  |  | 2: '已同意', | 
|---|
|  |  |  | 3: '已拒绝', | 
|---|
|  |  |  | 4: '已取消', | 
|---|
|  |  |  | 0: '待分配WTS', | 
|---|
|  |  |  | 1: '待分配任务', | 
|---|
|  |  |  | 2: '待处理', | 
|---|
|  |  |  | 3: '已解决', | 
|---|
|  |  |  | 4: '已解决', | 
|---|
|  |  |  | 5: '已解决' | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | cateList: { | 
|---|
|  |  |  | 0: 'SHE事件工单', | 
|---|
|  |  |  | 
|---|
|  |  |  | this.title = title | 
|---|
|  |  |  | this.visible = true | 
|---|
|  |  |  | this.info = target | 
|---|
|  |  |  | this.getDetail() | 
|---|
|  |  |  | this.type = this.info.type | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | close () { | 
|---|
|  |  |  | this.visible = false | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | getDetail () { | 
|---|
|  |  |  | const { id, type } = this | 
|---|
|  |  |  | switch (type) { | 
|---|
|  |  |  | case 0: | 
|---|
|  |  |  | getVisitedDetail({ id }).then(res => { | 
|---|
|  |  |  | this.info = res | 
|---|
|  |  |  | if (this.info.approveDateVO && this.info.approveDateVO.approveList.length > 0) { | 
|---|
|  |  |  | this.info.approveDateVO.approveList.forEach(item => { | 
|---|
|  |  |  | if (item.approveList && item.approveList.length == 1 && item.type !== 1) { | 
|---|
|  |  |  | item.title = item.approveList[0].title | 
|---|
|  |  |  | item.faceImg = item.approveList[0].faceImg | 
|---|
|  |  |  | item.memberName = item.approveList[0].memberName | 
|---|
|  |  |  | item.statusInfo = item.approveList[0].statusInfo | 
|---|
|  |  |  | item.approveList = [] | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | break | 
|---|
|  |  |  |  | 
|---|
|  |  |  | default: | 
|---|
|  |  |  | break | 
|---|
|  |  |  | } | 
|---|
|  |  |  | getById(this.info.id).then(res => { | 
|---|
|  |  |  | this.info = res | 
|---|
|  |  |  | if (this.info.logList && this.info.logList.length > 0) { | 
|---|
|  |  |  | this.info.logList.forEach(item => { | 
|---|
|  |  |  | if (item.approveList && item.approveList.length == 1 && item.type !== 1) { | 
|---|
|  |  |  | item.title = item.approveList[0].title | 
|---|
|  |  |  | item.faceImg = item.approveList[0].faceImg | 
|---|
|  |  |  | item.memberName = item.approveList[0].memberName | 
|---|
|  |  |  | item.statusInfo = item.approveList[0].statusInfo | 
|---|
|  |  |  | item.approveList = [] | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | reject () { }, | 
|---|
|  |  |  | handleAvatarSuccess () { }, | 
|---|
|  |  |  | 
|---|
|  |  |  | .item { | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | width: 40%; | 
|---|
|  |  |  | font-size: 14px; | 
|---|
|  |  |  | margin-bottom: 20px; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | &:nth-of-type(2n) { | 
|---|
|  |  |  | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | justify-content: space-between; | 
|---|
|  |  |  | align-items: center; | 
|---|
|  |  |  | vertical-align: center; | 
|---|
|  |  |  | padding: 20px 30px; | 
|---|
|  |  |  | margin: 0 -30px; | 
|---|
|  |  |  | border-radius: 8px 8px 0 0; | 
|---|