|  |  | 
 |  |  | <template> | 
 |  |  |   <GlobalWindow width="900px" title="工单详情" :visible.sync="visible" :confirm-working="isWorking" @close="close" | 
 |  |  |   <GlobalWindow width="960px" title="工单详情" :visible.sync="visible" :confirm-working="isWorking" @close="close" | 
 |  |  |     @confirm="confirm"> | 
 |  |  |     <div class="main"> | 
 |  |  |       <div class="title"> | 
 |  |  |         <span>工单详情</span> | 
 |  |  |         <div> | 
 |  |  |           <div class="status primaryColor" v-if="info.dealStatus == 0 || info.dealStatus == null">待指派</div> | 
 |  |  |           <div class="status" v-if="info.dealStatus == 1">已指派</div> | 
 |  |  |           <div class="status green" v-if="info.dealStatus == 1">已指派</div> | 
 |  |  |           <div class="status gray" v-if="info.dealStatus == 2">已处理</div> | 
 |  |  |         </div> | 
 |  |  |       </div> | 
 |  |  | 
 |  |  |           </div> | 
 |  |  |           <div class="item"> | 
 |  |  |             <div class="la">对应位置</div> | 
 |  |  |             <div class="val">{{ info.buildingName }} / {{ info.roomNum || info.floorName }}</div> | 
 |  |  |             <div class="val">{{ info.projectName }}/{{ info.buildingName }} / {{ info.roomNum || info.floorName }}</div> | 
 |  |  |           </div> | 
 |  |  |           <div class="item"> | 
 |  |  |             <div class="la">工单类别</div> | 
 |  |  |             <div class="la">工单分类</div> | 
 |  |  |             <div class="val">{{ info.categoryName }}</div> | 
 |  |  |           </div> | 
 |  |  |           <div class="item"> | 
 |  |  |             <div class="la">上报人</div> | 
 |  |  |             <div class="val">{{ info.creatorName }}</div> | 
 |  |  |             <div class="val">{{ info.creatorName }}{{ info.creatorCompany ? "-" + info.creatorCompany : '' }}</div> | 
 |  |  |           </div> | 
 |  |  |           <div class="item"> | 
 |  |  |             <div class="la">上报人电话</div> | 
 |  |  |             <div class="val">{{ info.creatorPhone }}</div> | 
 |  |  |             <div class="val">{{ info.creatorPhone || info.creatorMobile }}</div> | 
 |  |  |           </div> | 
 |  |  |           <div class="item"> | 
 |  |  |             <div class="la">上报时间</div> | 
 |  |  |             <div class="val">{{ info.createDate }}</div> | 
 |  |  |           </div> | 
 |  |  |           <div class="item max"> | 
 |  |  |           <div class="item max" v-if="info.areaType == 0"> | 
 |  |  |             <div class="la">上门时间</div> | 
 |  |  |             <div class="val">{{ info.getDate }}</div> | 
 |  |  |           </div> | 
 |  |  | 
 |  |  |           </div> | 
 |  |  |         </div> | 
 |  |  |         <div class="side"> | 
 |  |  |           <div class="title">工单流转记录员</div> | 
 |  |  |           <div class="title">工单流转记录</div> | 
 |  |  |           <div class="flow_list"> | 
 |  |  |             <div class="item" v-for="item,i in info.logList"> | 
 |  |  |               <div class="icon"> | 
 |  |  | 
 |  |  |                 <div class="name">{{ item.title }}</div> | 
 |  |  |                 <div class="time">操作时间:{{ item.createDate }}</div> | 
 |  |  |                 <div class="creator">操作人:{{ item.param1 }}</div> | 
 |  |  |                 <div class="creator" v-if="item.param2">指派给:{{ item.param2 }}</div> | 
 |  |  |               </div> | 
 |  |  |             </div> | 
 |  |  |           </div> | 
 |  |  |         </div> | 
 |  |  |       </div> | 
 |  |  |       <div class="title">工单处理</div> | 
 |  |  |       <div class="title">{{ info.dealStatus == 0 || info.dealStatus == 1 ? '工单处理' : '处理结果' }}</div> | 
 |  |  |       <el-form :model="param" ref="form" :rules="rules"> | 
 |  |  |         <template v-if="info.dealStatus == 0 || info.dealStatus == null"> | 
 |  |  |           <el-form-item label="处理方式" prop="dealType"> | 
 |  |  | 
 |  |  |               <el-radio v-model="param.dealType" :label="0">指派</el-radio> | 
 |  |  |               <el-radio v-model="param.dealType" :label="1">直接回复</el-radio> | 
 |  |  |             </div> | 
 |  |  |           </el-form-item> | 
 |  |  |           </el-form-item>  | 
 |  |  |           <el-form-item v-if="param.dealType == 0" label="指派给" prop="dealUserId"> | 
 |  |  |             <el-select v-model="param.dealUserId" clearable filterable class="w400"> | 
 |  |  |               <el-option v-for="item in staffList" :label="item.realname" :value="item.id"></el-option> | 
 |  |  | 
 |  |  |             <el-date-picker type="datetime" class="w400" v-model="param.getDate" format="yyyy-MM-dd HH:mm" | 
 |  |  |               value-format="yyyy-MM-dd HH:mm:ss" placeholder="请选择"></el-date-picker> | 
 |  |  |           </el-form-item> | 
 |  |  |           <el-form-item label="回复内容" prop="dealInfo"> | 
 |  |  |           <el-form-item label="处理说明" prop="dealInfo"> | 
 |  |  |             <el-input type="textarea" class="w400" :rows="4" v-model="param.dealInfo" placeholder="请填写说明"></el-input> | 
 |  |  |           </el-form-item> | 
 |  |  |           <el-form-item label="现场图片"> | 
 |  |  |             <div class="file_list"> | 
 |  |  |               <el-upload class="avatar-uploader" :data="uploadData" multiple :limit="6" :auto-upload="true" | 
 |  |  |               <el-upload class="avatar-uploader" :data="uploadData" :auto-upload="true" | 
 |  |  |                 :action="uploadImgUrl" :show-file-list="false" :on-success="uploadAvatarSuccess" :on-error="uploadError" | 
 |  |  |                 :before-upload="beforeUpload"> | 
 |  |  |                 <div class="upload_wrap"> | 
 |  |  | 
 |  |  |         <template v-if="info.dealStatus == 2"> | 
 |  |  |           <div class="list"> | 
 |  |  |             <div class="item item2"> | 
 |  |  |               <div class="la">处理时间:</div> | 
 |  |  |               <div class="val">{{ info.getDate }}</div> | 
 |  |  |               <div class="la">{{ info.dispatchUserId ? '处理人' : '回复人' }}:</div> | 
 |  |  |               <div class="val">{{ info.dealUserName }}{{ info.dealUserCompany ? '-' + info.dealUserCompany : '' }}</div> | 
 |  |  |             </div> | 
 |  |  |             <div class="item item2"> | 
 |  |  |               <div class="la">处理备注:</div> | 
 |  |  |               <div class="la">{{ info.dispatchUserId ? '处理时间' : '回复时间' }}:</div> | 
 |  |  |               <div class="val">{{ info.dealDate || info.getDate }}</div> | 
 |  |  |             </div> | 
 |  |  |             <div class="item item2"> | 
 |  |  |               <div class="la">{{ info.dispatchUserId ? '处理说明' : '回复内容' }}:</div> | 
 |  |  |               <div class="val">{{ info.dealInfo }}</div> | 
 |  |  |             </div> | 
 |  |  |             <div class="item item2"> | 
 |  |  |             <div v-if="info.dealFileList != null && info.dealFileList.length" class="item item2"> | 
 |  |  |               <div class="la">现场照片:</div> | 
 |  |  |               <div class="value" v-if="info.dealFileList == null || !info.dealFileList.length">无</div> | 
 |  |  |               <div class="value" v-if="info.dealFileList != null && info.dealFileList.length"> | 
 |  |  | 
 |  |  | import { detailById, dispatchOrder, dealOrder } from '@/api/workorder/ywWorkorder' | 
 |  |  | import { getUserList } from '@/api/system/user' | 
 |  |  | import { Message, Loading } from 'element-ui' | 
 |  |  | import dayjs from 'dayjs' | 
 |  |  | export default { | 
 |  |  |   components: { | 
 |  |  |     GlobalWindow | 
 |  |  | 
 |  |  |       const { id } = this | 
 |  |  |       detailById(id).then(res => { | 
 |  |  |         this.info = res | 
 |  |  |         if(this.info.dealStatus == 1){ | 
 |  |  |           this.$set(this.param, 'getDate',dayjs().format('YYYY-MM-DD HH:mm:ss') ) | 
 |  |  |         } | 
 |  |  |       }) | 
 |  |  |     }, | 
 |  |  |     getStaff() { | 
 |  |  | 
 |  |  |     align-items: center; | 
 |  |  |  | 
 |  |  |     .status { | 
 |  |  |       padding: 0 6px; | 
 |  |  |       height: 22px; | 
 |  |  |       line-height: 22px; | 
 |  |  |       padding: 0 12px; | 
 |  |  |       height: 24px; | 
 |  |  |       line-height: 24px; | 
 |  |  |       border-radius: 2px; | 
 |  |  |       border: 1px solid #00BA92; | 
 |  |  |       color: #00BA92; | 
 |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     .primaryColor { | 
 |  |  |       border: 1px solid $primary-color; | 
 |  |  |       border: 1px solid rgba(63, 126, 239,.2); | 
 |  |  |       background-color: rgba(63, 126, 239,.2); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     .green{ | 
 |  |  |       background-color: rgba(83, 183, 148, .2); | 
 |  |  |       border: 1px solid rgba(83, 183, 148, .2); | 
 |  |  |     } | 
 |  |  |     .gray { | 
 |  |  |       color: gray; | 
 |  |  |       border: 1px solid gray; | 
 |  |  |       color: #333333; | 
 |  |  |       background-color: rgba(128, 128, 128, .2); | 
 |  |  |       border: 1px solid rgba(128, 128, 128, .2); | 
 |  |  |     } | 
 |  |  |   } | 
 |  |  |  | 
 |  |  | 
 |  |  |  | 
 |  |  |     .item { | 
 |  |  |       width: 33.3%; | 
 |  |  |       margin-bottom: 12px; | 
 |  |  |       margin-bottom: 14px; | 
 |  |  |  | 
 |  |  |       .la { | 
 |  |  |         color: #7f7f7f; | 
 |  |  |         margin-top: 2px; | 
 |  |  |         margin-bottom: 6px; | 
 |  |  |       } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |       width: 100%; | 
 |  |  |       display: flex; | 
 |  |  |       align-items: center; | 
 |  |  |       .la{ | 
 |  |  |         margin-bottom: 0; | 
 |  |  |         width: 72px; | 
 |  |  |       } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     .max { | 
 |  |  | 
 |  |  |   .main_content{ | 
 |  |  |     display: flex; | 
 |  |  |     .side{ | 
 |  |  |       width: 240px; | 
 |  |  |       width: 370px; | 
 |  |  |       .title{ | 
 |  |  |         font-size: 14px; | 
 |  |  |       } |