| | |
| | | <template> |
| | | <GlobalWindow |
| | | :title="title" |
| | | width="80%" |
| | | width="85%" |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | @confirm="confirm"> |
| | | <div class="modal_wrap"> |
| | | <div class="modal_content"> |
| | | <div class="header"> |
| | | <img v-if="info.status == '3'" class="head_bg" |
| | | src="@/assets/task/bg_shenhe_fail@2x.png" alt=""> |
| | | <img v-else-if="info.status == '4'" class="head_bg" |
| | | <!-- <img v-if="info.status == '0'" class="head_bg" |
| | | src="@/assets/task/bg_shenhe_fail@2x.png" alt="">--> |
| | | <img v-if="info.status == '4' || info.status == '3'||info.status == '5'||info.status == '6'" class="head_bg" |
| | | src="@/assets/task/bg_shenhe_pass@2x.png" alt=""> |
| | | <img v-else class="head_bg" src="@/assets/task/bg_shenhe@2x.png" alt=""> |
| | | <div class="left"> |
| | | <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" :style="(info.status ==0 ||info.status ==1 || info.status ==2)?'min-width: 90px':''" :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.happenTime }}</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.locationName }}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="label">具体位置</div> |
| | | <div class="value">{{ info.remark }}</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 |
| | | "> |
| | |
| | | <div v-if="item.approveType == 1" class="childList"> |
| | | <div class="m_content company" v-for="item1 in item.approveList" :key="item1.id"> |
| | | <img v-if="item1.faceImg != null && item1.faceImg != ''" :src="item1.faceImg" class="avatar" alt="" /> |
| | | <img v-if="item1.faceImg == null || item1.faceImg == ''" src="@/assets/avatar/man.png" class="avatar" |
| | | <img v-if="item1.faceImg == null || item1.faceImg == ''" src="../../assets/avatar/man.png" class="avatar" |
| | | alt="" /> |
| | | <span> {{ item1.memberName }}</span> |
| | | </div> |
| | |
| | | <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: '待审核', |
| | | 0: '处理中', |
| | | 1: '处理中', |
| | | 2: '已同意', |
| | | 3: '已拒绝', |
| | | 4: '已取消', |
| | | 2: '处理中', |
| | | 3: '已处理', |
| | | 4: '已处理', |
| | | 5: '已处理' |
| | | }, |
| | | cateList: { |
| | | 0: 'SHE事件工单', |
| | | 1: '跌绊滑事件工单', |
| | | 2: 'DCA事件提交记录', |
| | | 3: 'DCA事件工单' |
| | | 1: 'DCA事件提交记录', |
| | | 2: 'DCA事件工单', |
| | | 3: '跌绊滑事件工单' |
| | | } |
| | | } |
| | | }, |
| | |
| | | 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 () { }, |
| | |
| | | |
| | | .modal_wrap { |
| | | display: flex; |
| | | height: 100%; |
| | | height: auto; |
| | | |
| | | .modal_content { |
| | | flex: 1; |
| | |
| | | |
| | | .item { |
| | | display: flex; |
| | | width: 40%; |
| | | width: 50%; |
| | | font-size: 14px; |
| | | margin-bottom: 20px; |
| | | |
| | | &:nth-of-type(2n) { |
| | | width: 60%; |
| | | width: 50%; |
| | | } |
| | | |
| | | .label { |
| | |
| | | } |
| | | |
| | | .value { |
| | | width: calc(100% - 100px); |
| | | color: #111111; |
| | | } |
| | | } |
| | |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | vertical-align: center; |
| | | padding: 20px 30px; |
| | | margin: 0 -30px; |
| | | border-radius: 8px 8px 0 0; |