MrShi
2025-01-02 a0a1c206612de9a3e9d64f3d45564c0ff03f93f6
h5/pages/workOrder/detail.vue
@@ -2,67 +2,71 @@
   <view>
      <view class="main_info">
         <view class="title">
            <text>阜宁文体中心/A座/401</text>
            <text class="status">待处理</text>
            <text>{{ info.projectName }}/{{ info.buildingName }}/{{info.roomNum || info.floorName}}</text>
            <text class="status" v-if="info.dealStatus == 0">待处理</text>
            <text class="status" v-if="info.dealStatus == 1">待处理</text>
            <text class="status gray" v-if="info.dealStatus == 2">已处理</text>
         </view>
         <view class="desc">西边走廊的一个顶灯坏了,不亮需要维修西边</view>
         <view class="desc">{{ info.content }}</view>
         <view class="file_list">
            <view class="file">
            <view class="file" v-for="(item,index) in info.fileList">
               <image v-if="item.type == 0" :src="item.fileurlFull" mode="aspectFill"></image>
               <video v-if="item.type == 1" :src="item.fileurlFull" :controls="false"></video>
            </view>
         </view>
         <view class="content">
            <view class="line">
            <view class="line" v-if="info.categoryName">
               <view class="la">工单类型:</view>
               <view class="val">1111</view>
               <view class="val">{{info.categoryName}}</view>
            </view>
            <view class="line">
               <view class="la">上报人:</view>
               <view class="val">1111</view>
               <view class="val">{{ info.creatorName }}{{info.creatorCompany ? '-' + info.creatorCompany : ''}}</view>
            </view>
            <view class="line">
            <view class="line"  v-if="info.creatorPhone || info.creatorMobile">
               <view class="la">联系电话:</view>
               <view class="val">1111</view>
               <view class="val">{{ info.creatorMobile || info.creatorPhone }}</view>
            </view>
            <view class="line">
               <view class="la">上报时间:</view>
               <view class="val">1111</view>
               <view class="val">{{ info.createDate }}</view>
            </view>
            <view class="line">
            <view class="line" v-if="info.getDate">
               <view class="la">上门时间:</view>
               <view class="val">1111</view>
               <view class="val">{{ info.getDate.slice(0, 16) }}</view>
            </view>
         </view>
         <view class="result_wrap">
         <view class="result_wrap" v-if="info.dealStatus == 2">
            <div class="title">处理结果</div>
            <view class="file_list">
               <view class="file">
            <view v-if="info.dealFileList && info.dealFileList.length > 0" class="file_list">
               <view class="file" v-for="item in info.dealFileList">
                  <image v-if="item.type == 0" :src="item.fileurlFull" mode="aspectFill"></image>
                  <video v-if="item.type == 1" :src="item.fileurlFull" :controls="false"></video>
               </view>
            </view>
            <view class="content">
               已更换灯泡和灯罩已更换灯泡和灯罩已更换灯
            <view v-if="info.dealInfo" class="content">
               {{info.dealInfo}}
            </view>
            <view class="line">
               <view class="la">处理人:</view>
               <view class="val">{{ 1111 }}</view>
               <view class="val">{{ info.dealUserName }}{{info.dealUserCompany ? '-' + info.dealUserCompany : ''}}</view>
            </view>
            <view class="line">
               <view class="la">处理时间:</view>
               <view class="val">{{ 1111 }}</view>
               <view class="val">{{ info.dealDate }}</view>
            </view>
         </view>
      </view>
      <!--  -->
      <view class="btns">
         <view class="btn">
      <view class="btns" v-if="info.dealStatus == 0 || (info.dealUserId === userInfo.id && info.dealStatus == 1)">
         <view class="btn" @click="handleCall">
            <image src="@/static/side/phoneed.png" class="icon"></image>
            <text>上报人</text>
         </view>
         <view class="btn active" @click="isShowHandle = true">去处理</view>
      </view>
      <!--  -->
      <u-popup :show="showUpload" @close="showUpload = false" closeOnClickOverlay>
      <u-popup :show="showUpload" @close="showUpload = false" zIndex="10076" closeOnClickOverlay>
         <view class="sel_upload_wrap">
            <view class="btn" @click="uploadImage">选择图片</view>
            <view class="btn" @click="uploadVideo">选择视频</view>
@@ -70,11 +74,12 @@
      </u-popup>
      <!--  -->
      <!-- 工单处理 -->
      <u-popup :show="isShowHandle" :round="10" :safeAreaInsetBottom="true" mode="bottom" closeable @close="isShowHandle = false">
      <u-popup :show="isShowHandle" :round="10" :safeAreaInsetBottom="true" mode="bottom" closeable
         @close="isShowHandle = false">
         <view class="appr_modal">
            <view class="title">工单处理</view>
            <view class="df_sb">
               <view>处理时间</view>
               <view><text class="red">*</text>处理时间</view>
               <view class="df_ac" @click="isShowHandleDate = true" v-if="handleParam.dealTime">
                  {{ handleParam.dealTime }}
                  <u-icon name="arrow-right"></u-icon>
@@ -86,7 +91,6 @@
            </view>
            <view class="label">
               <text>*</text>
               上传图片/视频
            </view>
            <view class="upload_wrap">
@@ -96,7 +100,7 @@
               </view>
               <view class="adduser_list_item_ipt1_upload" v-for="(item, i) in dealFileList" :key="i">
                  <u-icon class="close" size="20" name="close-circle-fill" color="red"
                     @click="fileDel('dealBeforeFileList', i)"></u-icon>
                     @click="fileDel('dealFileList', i)"></u-icon>
                  <image v-if="item.type == 0" :src="item.fileurlFull" mode="widthFix"></image>
                  <video v-if="item.type == 1" :src="item.fileurlFull" :controls="false"></video>
               </view>
@@ -119,22 +123,54 @@
<script>
   import {
      uploadUrl
      uploadUrl,
      ywWorkorderD,
      ywWorkorderDeal
   } from '@/api'
   import dayjs from 'dayjs';
   export default {
      data() {
         return {
            id: '',
            info: {},
            showUpload: false,
            isShowHandle: false,
            isShowHandleDate: false,
            isShowHandleDate: false,
            userInfo: uni.getStorageSync('userInfo') || {},
            handleParam: {},
            dealFileList: []
         };
      },
      onLoad(option) {
         console.log(option);
         this.id = option.id
         this.getDetail()
      },
      methods: {
         onSubmit() {
         onSubmit() {
            const { handleParam, dealFileList, id } = this
            if (!handleParam.dealTime) return this.showToast('处理时间不能为空')
            ywWorkorderDeal({
               ...handleParam,
               id,
               dealFileList
            }).then(res => {
               if(res.code == 200){
                  this.showToast('操作成功')
                  uni.navigateBack()
               }
            })
         },
         handleCall() {
            const { info } = this
            uni.makePhoneCall({
               phoneNumber: info.creatorMobile
            });
         },
         getDetail() {
            ywWorkorderD(this.id).then(res => {
               this.info = res.data
            })
         },
         callPhone() {
            uni.makePhoneCall({
@@ -152,7 +188,7 @@
            this.showUpload = false;
            let token = uni.getStorageSync('token') || '';
            uni.chooseImage({
               count: 4,
               count: 6,
               success: chooseImageRes => {
                  uni.showLoading({
                     title: '上传中',
@@ -170,7 +206,7 @@
                     files: imgs,
                     name: 'file',
                     formData: {
                        folder: 'HIDDEN_DANGER_FILE'
                        folder: 'YW_WORKORDER_FILE'
                     },
                     header: {
                        Dm_user_token: token
@@ -182,7 +218,7 @@
                              i.type = 0;
                              i.fileurl = i.imgaddr;
                              i.fileurlFull = i.url;
                              this.submitFileList.push(i);
                              this.dealFileList.push(i);
                           });
                        }
                     },
@@ -216,7 +252,7 @@
                     },
                     name: 'file',
                     formData: {
                        folder: 'HIDDEN_DANGER_FILE'
                        folder: 'YW_WORKORDER_FILE'
                     },
                     success: uploadFileRes => {
                        let res = JSON.parse(uploadFileRes.data);
@@ -225,7 +261,7 @@
                              i.type = 1;
                              i.fileurl = i.imgaddr;
                              i.fileurlFull = i.url;
                              this.submitFileList.push(i);
                              this.dealFileList.push(i);
                           });
                        }
                     },
@@ -264,6 +300,10 @@
            font-size: 28rpx;
            color: $primaryColor;
         }
         .gray {
            color: #999999;
         }
      }
      .file_list {
@@ -279,6 +319,12 @@
            &:nth-of-type(4n) {
               margin-right: 0;
            }
            image,
            video {
               width: 156rpx;
               height: 156rpx;
            }
         }
      }
@@ -368,7 +414,7 @@
   .sel_upload_wrap {
      width: 100%;
      border-top: 1px solid #333333;
      border-top: 1px solid #666666;
      box-shadow: 0 1 1 #333333;
      .btn {