| <template> | 
|   <GlobalWindow | 
|       :title="title" | 
|       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" | 
|                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 == '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="list"> | 
|             <div class="item"> | 
|               <div class="label">员工姓名</div> | 
|               <div class="value">{{ info.memberName }} - {{ info.memberPhone || '[无手机号]' }}</div> | 
|             </div> | 
|             <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.submitDate }}</div> | 
|             </div> | 
|             <div class="item"> | 
|               <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="value">{{ info.locationName }}</div> | 
|             </div> | 
|             <div class="item"> | 
|               <div class="label">风险描述</div> | 
|               <div class="value">{{ info.riskInfo }}</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_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" v-if="item.param2||item.remark||(item.multifileList !=null && item.multifileList.length)"> | 
|                       <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> | 
|       </div> | 
|     </div> | 
|     <!--  --> | 
|     <template v-slot:footer> | 
|       <el-button @click="close">返回</el-button> | 
|     </template> | 
|   </GlobalWindow> | 
| </template> | 
|   | 
| <script> | 
| import BaseOpera from '@/components/base/BaseOpera' | 
| import GlobalWindow from '@/components/common/GlobalWindow' | 
| import { getById } from '@/api/business/workorder' | 
| export default { | 
|   name: 'OperaWorkorderDetailDbhWindow', | 
|   extends: BaseOpera, | 
|   components: { GlobalWindow }, | 
|   data () { | 
|     return { | 
|       id: '', | 
|       type: null, | 
|       title: '工单详情', | 
|       info: {}, | 
|       statusMap: { | 
|         0: '待分配WTS', | 
|         1: '待分配任务', | 
|         2: '待处理', | 
|         3: '已解决', | 
|         4: '已解决', | 
|         5: '已解决' | 
|       }, | 
|       cateList: { | 
|         0: 'SHE事件工单', | 
|         1: 'DCA事件提交记录', | 
|         2: 'DCA事件工单', | 
|         3: '跌绊滑事件工单' | 
|       } | 
|     } | 
|   }, | 
|   methods: { | 
|     open (title, target) { | 
|       this.title = title | 
|       this.visible = true | 
|       this.info = target | 
|       this.getDetail() | 
|       this.type = this.info.type | 
|     }, | 
|     close () { | 
|       this.visible = false | 
|     }, | 
|     getDetail () { | 
|       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 () { }, | 
|     beforeAvatarUpload () { } | 
|   } | 
| } | 
| </script> | 
|   | 
| <style lang="scss" scoped> | 
| @import "@/assets/style/variables.scss"; | 
|   | 
| .upload_box { | 
|   width: 84px; | 
|   height: 84px; | 
|   border-radius: 4px; | 
|   background-color: #f7f7f7; | 
|   display: flex; | 
|   flex-direction: column; | 
|   justify-content: center; | 
|   align-items: center; | 
|   color: #999999; | 
|   border: 1px solid #e4e4e4; | 
|   | 
|   .icon { | 
|     font-size: 24px; | 
|   } | 
|   | 
|   .text { | 
|     font-size: 12px; | 
|   } | 
| } | 
|   | 
| .side_title { | 
|   font-weight: 600; | 
|   font-size: 18px; | 
|   color: #111111; | 
|   margin-bottom: 20px; | 
|   margin-left: 20px; | 
|   margin-top: 20px; | 
| } | 
|   | 
| .modal_wrap { | 
|   display: flex; | 
|   height: 100%; | 
|   | 
|   .modal_content { | 
|     flex: 1; | 
|     padding: 0px 30px; | 
|     border-radius: 8px; | 
|     overflow: hidden; | 
|     height: 100%; | 
|   | 
|     .title { | 
|       font-weight: 600; | 
|       font-size: 18px; | 
|       color: #333333; | 
|       margin-bottom: 20px; | 
|       margin-top: 30px; | 
|     } | 
|   | 
|     .info { | 
|       .list { | 
|         display: flex; | 
|         flex-wrap: wrap; | 
|   | 
|         .item { | 
|           display: flex; | 
|           width: 40%; | 
|           font-size: 14px; | 
|           margin-bottom: 20px; | 
|   | 
|           &:nth-of-type(2n) { | 
|             width: 60%; | 
|           } | 
|   | 
|           .label { | 
|             color: #888888; | 
|             width: 100px; | 
|           } | 
|   | 
|           .value { | 
|             color: #111111; | 
|           } | 
|         } | 
|       } | 
|     } | 
|   | 
|     .header { | 
|       display: flex; | 
|       justify-content: space-between; | 
|       align-items: center; | 
|       vertical-align: center; | 
|       padding: 20px 30px; | 
|       margin: 0 -30px; | 
|       border-radius: 8px 8px 0 0; | 
|       position: relative; | 
|   | 
|       .head_bg { | 
|         position: absolute; | 
|         width: 100%; | 
|         height: 100%; | 
|         left: 0; | 
|         top: 0; | 
|         z-index: 9; | 
|       } | 
|   | 
|       .h1 { | 
|         font-weight: 600; | 
|         font-size: 22px; | 
|         color: #111111; | 
|         margin-bottom: 8px; | 
|       } | 
|   | 
|       .time { | 
|         font-size: 14px; | 
|         color: #999999; | 
|       } | 
|   | 
|       .right { | 
|         height: 40px; | 
|         font-size: 16px; | 
|         color: #ffffff; | 
|         line-height: 40px; | 
|         padding: 0 20px; | 
|         background: #207ff7; | 
|         box-shadow: 4px 4px 0px 0px rgba(32, 127, 247, 0.16); | 
|         border-radius: 16px 0px 16px 0px; | 
|         position: relative; | 
|         z-index: 99; | 
|       } | 
|   | 
|       .scs { | 
|         background-color: #00BA67; | 
|       } | 
|   | 
|       .msg { | 
|         background-color: #ED4545; | 
|       } | 
|     } | 
|   | 
|     .table_info { | 
|       .name_wrap { | 
|         display: flex; | 
|         align-items: center; | 
|   | 
|         .avatar { | 
|           width: 40px; | 
|           height: 40px; | 
|           border-radius: 50%; | 
|           margin-right: 12px; | 
|         } | 
|   | 
|         .content { | 
|           .line { | 
|             display: flex; | 
|           } | 
|           .tag { | 
|             color: #b2cbf9; | 
|             border: 1px solid #b2cbf9; | 
|             padding: 0px 4px; | 
|             border-radius: 4px; | 
|             margin-left: 6px; | 
|           } | 
|         } | 
|       } | 
|     } | 
|   } | 
|   | 
|   .side { | 
|     height: 100%; | 
|     width: 420px; | 
|     background: #ffffff; | 
|     border-left: 20px solid #f7f7f7; | 
|   | 
|     .list { | 
|       .item { | 
|         padding: 8px 0; | 
|         position: relative; | 
|   | 
|         .separate { | 
|           position: absolute; | 
|           border-left: 2px dashed #cccccc; | 
|           left: 31px; | 
|           height: calc(100% - 0px); | 
|           top: 30px; | 
|         } | 
|   | 
|         .avatar { | 
|           width: 40px; | 
|           height: 40px; | 
|           border-radius: 50%; | 
|           margin: 0 12px 0 16px; | 
|           //border: 1px solid; | 
|         } | 
|   | 
|         .childList { | 
|           display: flex; | 
|           flex-wrap: wrap; | 
|           margin-left: 100px; | 
|         } | 
|   | 
|         .company { | 
|           font-size: 13px; | 
|           color: #888888; | 
|           width: calc(100% - 20px); | 
|           .status { | 
|             color: $primaryColor; | 
|           } | 
|          /* span{ | 
|             color: black; | 
|           }*/ | 
|           .dealinfo{ | 
|             background-color: #f2f2f2; | 
|             padding: 8px; | 
|             display: block; | 
|             margin-top: 5px; | 
|             width: calc(100% - 20px); | 
|           } | 
|         } | 
|   | 
|         .m_content { | 
|           display: flex; | 
|           flex-direction: column; | 
|           align-items: center; | 
|           justify-content: center; | 
|           margin-bottom: 4px; | 
|         } | 
|   | 
|         .info { | 
|           display: flex; | 
|           /*align-items: center;*/ | 
|           margin-left: 20px; | 
|   | 
|           .icon { | 
|             position: relative; | 
|             z-index: 11; | 
|             color: #53b76f; | 
|             font-size: 24px; | 
|           } | 
|   | 
|           .icon1 { | 
|             position: relative; | 
|             z-index: 11; | 
|             color: deepskyblue; | 
|             font-size: 24px; | 
|           } | 
|   | 
|           .icon2 { | 
|             position: relative; | 
|             z-index: 11; | 
|             color: #dc362e; | 
|             font-size: 24px; | 
|           } | 
|   | 
|           .iconnew { | 
|             width: 24px; | 
|             height: 24px; | 
|           } | 
|   | 
|           .icon3 { | 
|             position: relative; | 
|             z-index: 11; | 
|             color: gray; | 
|             font-size: 24px; | 
|           } | 
|   | 
|           .content { | 
|             flex: 1; | 
|   | 
|             .line { | 
|               display: flex; | 
|               justify-content: space-between; | 
|               align-content: center; | 
|               margin-bottom: 6px; | 
|   | 
|               .status { | 
|                 color: #888888; | 
|               } | 
|   | 
|               .padding { | 
|                 color: $primaryColor; | 
|               } | 
|   | 
|               .name { | 
|                 font-weight: 600; | 
|                 font-size: 16px; | 
|                 color: #111111; | 
|               } | 
|   | 
|               .time { | 
|                 color: #888888; | 
|               } | 
|             } | 
|           } | 
|         } | 
|   | 
|         .remark { | 
|           background: #f7f7f7; | 
|           border-radius: 4px; | 
|           padding: 13px 15px; | 
|           color: #666666; | 
|           margin-left: 100px; | 
|         } | 
|       } | 
|     } | 
|   } | 
| } | 
| </style> |