wjt
2024-06-25 244d89b41c0e0e995d38f635a126a0959b9ba25b
policy/reportDetails/reportDetails.vue
@@ -4,108 +4,135 @@
         <view class="form">
            <view class="form-item">
               <view class="label">执法主题</view>
               <view class="input">24年5月份消防突击检查</view>
               <view class="input">{{details.enforceReason}}</view>
            </view>
            <view class="form-item">
               <view class="label">执法对象</view>
               <view class="input">24年5月份消防突击检查</view>
               <view class="input">{{details.companyName}}</view>
            </view>
            <view class="form-item">
               <view class="label">执法时间</view>
               <view class="input">24年5月份消防突击检查</view>
               <view class="input">{{details.planTime}}</view>
            </view>
            <view class="form-item">
               <view class="label">执法类型</view>
               <view class="input">24年5月份消防突击检查</view>
               <view class="input">{{enforceType}}</view>
            </view>
            <view class="form-item">
               <view class="label">执法人员</view>
               <view class="input">24年5月份消防突击检查</view>
               <view class="input">{{details.executeUser}}</view>
            </view>
            <view class="form-item">
               <view class="label">执法部门</view>
               <view class="input">24年5月份消防突击检查</view>
               <view class="input">{{details.executeDeptName}}</view>
            </view>
         </view>
      </view>
      <view class="box">
         <view class="form-input">
            <view class="form-input-item">
               <view class="form-label require">执法结果</view>
               <u-textarea count v-model="form.reasoon" maxlength="500"></u-textarea>
            <view class="form-input-item" style="margin-bottom: 40rpx;">
               <view class="form-label require" style="margin-bottom: 40rpx;">执法结果</view>
               <view>
                  <u-radio-group v-model="form.regionStatus">
                     <u-radio shape="circle" label="正常" name="0"></u-radio>
                     <u-radio shape="circle" label="待整改" name="1"></u-radio>
                  </u-radio-group>
               </view>
            </view>
            <view class="form-input-item">
               <view class="form-label require">执法结果说明</view>
               <u-textarea placeholder="请输入..." count v-model="form.regionReason" maxlength="500"></u-textarea>
            </view>
            <view class="form-input-item">
               <view class="form-label require">执法照片</view>
               <view>
                  <u-upload :fileList="fileList1" @afterRead="afterRead" @delete="deletePic" name="1" multiple
                     :maxCount="10"></u-upload>
                  <view class="show-hint">可上传9张图,单张不得超过10M</view>
               </view>
               <view>
                  <uploadImage ref="uploadImage"></uploadImage>
               </view>
            </view>
         </view>
      </view>
      <view class="down">
         <view class="button">
            上报记录
         <view class="button" @click="startReport">
            上报结果
         </view>
      </view>
   </view>
</template>
<script>
   import uploadImage from '@/policy/components/upload.vue'
   import { orderDetails,orderUpd } from '@/api/policy.js'
   import { getDicts } from '@/api/data.js'
   export default {
      components: {
         uploadImage
      },
      data() {
         return {
            form: {
               reasoon: ''
               regionReason: '',
               regionStatus: '0'
            },
            fileList1: []
            fileList1: [],
            details: {},
            enforceType: ""
         }
      },
      onLoad(options) {
         this.orderDetails(options.id)
      },
      methods: {
         // 删除图片
         deletePic(event) {
            this[`fileList${event.name}`].splice(event.index, 1)
         // 获取执法类型枚举
         getDicts() {
            getDicts('enforce_type').then(val => {
               if(val.data.data) {
                  this.enforceType = val.data.data.find(item => item.dictCode == this.details.enforceType).dictLabel
               }
            })
         },
         // 新增图片
         async afterRead(event) {
            // 当设置 multiple 为 true 时, file 为数组格式,否则为对象格式
            let lists = [].concat(event.file)
            let fileListLen = this[`fileList${event.name}`].length
            lists.map((item) => {
               this[`fileList${event.name}`].push({
                  ...item,
                  status: 'uploading',
                  message: '上传中'
         // 获取执法单详情
         orderDetails(id) {
            orderDetails({orderId: id}).then(val => {
               this.details = val.data.data
               this.getDicts()
            })
         },
         // 上报执行结果
         startReport() {
            if(!this.form.regionReason){
               uni.showToast({
                  title: '请填写执法结果',
                  icon: 'none'
               })
            })
            for (let i = 0; i < lists.length; i++) {
               const result = await this.uploadFilePromise(lists[i].url)
               let item = this[`fileList${event.name}`][fileListLen]
               this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
                  status: 'success',
                  message: '',
                  url: result
               }))
               fileListLen++
               return
            }
         },
         uploadFilePromise(url) {
            return new Promise((resolve, reject) => {
               let a = uni.uploadFile({
                  url: 'http://192.168.2.21:7001/upload', // 仅为示例,非真实的接口地址
                  filePath: url,
                  name: 'file',
                  formData: {
                     user: 'test'
                  },
                  success: (res) => {
                     setTimeout(() => {
                        resolve(res.data.data)
                     }, 1000)
                  }
               });
            const image = this.$refs.uploadImage.imageList
            if(!image.length){
               uni.showToast({
                  title: '请上传执法图片',
                  icon: 'none'
               })
               return
            }
            this.details.regionReason = this.form.regionReason
            this.form.regionImgs = image.join()
            this.form.orderId = this.details.orderId
            orderUpd(this.form).then(val  =>{
               if(val.data.code == 200) {
                  uni.showToast({
                     title: '上报成功',
                     icon: 'none'
                  })
                  setTimeout(() => {
                     uni.navigateBack()
                  }, 500)
               }
            })
         },
         }
      }
   }
</script>
@@ -116,4 +143,7 @@
</style>
<style lang="scss" scoped>
   @import "./reportDetails.scss";
   /deep/ .u-radio{
      margin-right: 80rpx;
   }
</style>