口门门禁增加行驶证照片,车辆照片
							parent
							
								
									eeaf5f96af
								
							
						
					
					
						commit
						0a0070a4b9
					
				| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
import {post, upload, uploads,videoApiGet} from "../utils/request";
 | 
			
		||||
import {post, upload, uploads,videoApiGet} from "@/utils/request";
 | 
			
		||||
 | 
			
		||||
export const submitLogin = (params) => post("/sys/login", params) // 登录
 | 
			
		||||
export const getUserInfo = (params) => post("/sys/user/info/app", params); // 获取用户信息
 | 
			
		||||
| 
						 | 
				
			
			@ -163,3 +163,4 @@ export const setVehiclemessageUpdate = (params) => post("/vehiclemessage/updateV
 | 
			
		|||
export const setVehiclemessageDelete = (params) => post("/vehiclemessage/deleteVehicleMessage", params);
 | 
			
		||||
export const getAuditUserList = (params) => post("/sys/user/audit/user", params);
 | 
			
		||||
export const goCheckLicenceNo = (params) => post("/vehiclemessage/goCheckLicenceNo", params);
 | 
			
		||||
export const uploadSmd = (params) => upload("/busImgfiles/upload/smd", params); // 上传图片至smd(不上传到数据库,返回文件地址)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -31,6 +31,27 @@
 | 
			
		|||
        <u-form-item label="车辆归属人" prop="USERNAME" borderBottom required>
 | 
			
		||||
          <u-input :value="userInfo.USERNAME" border="none" readonly input-align="right"/>
 | 
			
		||||
        </u-form-item>
 | 
			
		||||
        <u-form-item label="行驶证照片" prop="drivingImgFiles" borderBottom required labelPosition="top"
 | 
			
		||||
                     labelWidth="auto">
 | 
			
		||||
          <u-upload class="mt-10"
 | 
			
		||||
                    multiple
 | 
			
		||||
                    :fileList="form.drivingImgFiles"
 | 
			
		||||
                    :maxCount="2"
 | 
			
		||||
                    :preview-full-image="true"
 | 
			
		||||
                    @afterRead="fnAfterRead($event, 'drivingImgFiles')"
 | 
			
		||||
                    @delete="fnDeletePic($event, 'drivingImgFiles')"
 | 
			
		||||
          ></u-upload>
 | 
			
		||||
        </u-form-item>
 | 
			
		||||
        <u-form-item label="车辆照片" prop="vehicleImgFiles" borderBottom required labelPosition="top"
 | 
			
		||||
                     labelWidth="auto">
 | 
			
		||||
          <u-upload class="mt-10"
 | 
			
		||||
                    multiple
 | 
			
		||||
                    :fileList="form.vehicleImgFiles"
 | 
			
		||||
                    :preview-full-image="true"
 | 
			
		||||
                    @afterRead="fnAfterRead($event, 'vehicleImgFiles')"
 | 
			
		||||
                    @delete="fnDeletePic($event, 'vehicleImgFiles')"
 | 
			
		||||
          ></u-upload>
 | 
			
		||||
        </u-form-item>
 | 
			
		||||
      </u-form>
 | 
			
		||||
      <view class="mt-10">
 | 
			
		||||
        <u-button type="primary" text="提交" @click="$u.debounce(fnSubmit, 1000, true)"/>
 | 
			
		||||
| 
						 | 
				
			
			@ -47,7 +68,8 @@ import {
 | 
			
		|||
  getVehiclemessageView,
 | 
			
		||||
  goCheckLicenceNo,
 | 
			
		||||
  setVehiclemessageSave,
 | 
			
		||||
  setVehiclemessageUpdate
 | 
			
		||||
  setVehiclemessageUpdate,
 | 
			
		||||
  uploadSmd
 | 
			
		||||
} from "@/api";
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
| 
						 | 
				
			
			@ -79,6 +101,9 @@ export default {
 | 
			
		|||
        QY_AUDITOR_NAME: '',
 | 
			
		||||
        portId: '',
 | 
			
		||||
        portName: '',
 | 
			
		||||
        drivingImgFiles: [],
 | 
			
		||||
        vehicleImgFiles: [],
 | 
			
		||||
        deleteFileIds: [],
 | 
			
		||||
      },
 | 
			
		||||
      rules: {
 | 
			
		||||
        LICENCE_TYPE: [{type: 'string', required: true, message: '请选择车牌类型', trigger: ['blur', 'change']}],
 | 
			
		||||
| 
						 | 
				
			
			@ -86,6 +111,8 @@ export default {
 | 
			
		|||
        VEHICLE_TYPE: [{type: 'string', required: true, message: '请选择车辆类型', trigger: ['blur', 'change']}],
 | 
			
		||||
        QY_AUDITOR: [{type: 'string', required: true, message: '请选择审批人', trigger: ['blur', 'change']}],
 | 
			
		||||
        portId: [{type: 'string', required: true, message: '请选择范围', trigger: ['blur', 'change']}],
 | 
			
		||||
        vehicleImgFiles: [{type: 'array', required: true, message: '请上传车辆照片', trigger: ['blur', 'change']}],
 | 
			
		||||
        drivingImgFiles: [{type: 'array', required: true, message: '请上传行驶证照片', trigger: ['blur', 'change']}]
 | 
			
		||||
      },
 | 
			
		||||
      picker: {
 | 
			
		||||
        show: false,
 | 
			
		||||
| 
						 | 
				
			
			@ -172,6 +199,24 @@ export default {
 | 
			
		|||
      if (auditor) {
 | 
			
		||||
        this.form.QY_AUDITOR_NAME = auditor.name;
 | 
			
		||||
      }
 | 
			
		||||
      for (let i = 0; i < resData.pd.drivingImgs.length; i++) {
 | 
			
		||||
        if (!Array.isArray(this.form.drivingImgFiles)) {
 | 
			
		||||
          this.$set(this.form, "drivingImgFiles", []);
 | 
			
		||||
        }
 | 
			
		||||
        this.form.drivingImgFiles.push({
 | 
			
		||||
          url: this.$store.state.filePath + resData.pd.drivingImgs[i].filepath,
 | 
			
		||||
          ...resData.pd.drivingImgs[i],
 | 
			
		||||
        });
 | 
			
		||||
      }
 | 
			
		||||
      for (let i = 0; i < resData.pd.vehicleImgs.length; i++) {
 | 
			
		||||
        if (!Array.isArray(this.form.vehicleImgFiles)) {
 | 
			
		||||
          this.$set(this.form, "vehicleImgFiles", []);
 | 
			
		||||
        }
 | 
			
		||||
        this.form.vehicleImgFiles.push({
 | 
			
		||||
          url: this.$store.state.filePath + resData.pd.vehicleImgs[i].filepath,
 | 
			
		||||
          ...resData.pd.vehicleImgs[i],
 | 
			
		||||
        });
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    async getUserList() {
 | 
			
		||||
      const resData = await getAuditUserList({corpinfoId: this.userInfo.CORPINFO_ID});
 | 
			
		||||
| 
						 | 
				
			
			@ -189,6 +234,26 @@ export default {
 | 
			
		|||
          uni.$u.toast('车牌号已存在')
 | 
			
		||||
          return
 | 
			
		||||
        }
 | 
			
		||||
        const vehicleImgs = [];
 | 
			
		||||
        const drivingImgs = [];
 | 
			
		||||
        for (let i = 0; i < this.form.vehicleImgFiles.length; i++) {
 | 
			
		||||
          if (!this.form.vehicleImgFiles[i].imgfilesId) {
 | 
			
		||||
            const { imgUrl } = await uploadSmd({
 | 
			
		||||
              filePath: this.form.vehicleImgFiles[i].url,
 | 
			
		||||
              name: "file",
 | 
			
		||||
            });
 | 
			
		||||
            vehicleImgs.push(imgUrl);
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
        for (let i = 0; i < this.form.drivingImgFiles.length; i++) {
 | 
			
		||||
          if (!this.form.drivingImgFiles[i].imgfilesId) {
 | 
			
		||||
            const { imgUrl } = await uploadSmd({
 | 
			
		||||
              filePath: this.form.drivingImgFiles[i].url,
 | 
			
		||||
              name: "file",
 | 
			
		||||
            });
 | 
			
		||||
            drivingImgs.push(imgUrl);
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
        this.form.OLD_LICENCE_NO = this.form.LICENCE_NO;
 | 
			
		||||
        const params = {
 | 
			
		||||
          ...this.form,
 | 
			
		||||
| 
						 | 
				
			
			@ -197,14 +262,44 @@ export default {
 | 
			
		|||
          USER_NAME: this.userInfo.NAME,
 | 
			
		||||
          VEHICLE_DEPARTMENT_ID: this.userInfo.DEPARTMENT_ID,
 | 
			
		||||
          VEHICLE_DEPARTMENT_NAME: this.userInfo.DEPARTMENT_NAME,
 | 
			
		||||
          vehicleImgs: JSON.stringify(vehicleImgs),
 | 
			
		||||
          drivingImgs: JSON.stringify(drivingImgs),
 | 
			
		||||
          deleteFileIds: JSON.stringify(this.form.deleteFileIds),
 | 
			
		||||
          vehicleImgFiles: null,
 | 
			
		||||
          drivingImgFiles: null,
 | 
			
		||||
        }
 | 
			
		||||
        this.VEHICLE_ID ? await setVehiclemessageUpdate(params) : await setVehiclemessageSave(params)
 | 
			
		||||
        console.log(params)
 | 
			
		||||
        uni.navigateBack(); // 返回上一页
 | 
			
		||||
      } catch {
 | 
			
		||||
        uni.$u.toast('请补全必填项')
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    },
 | 
			
		||||
    fnAfterRead(event, key) {
 | 
			
		||||
      // 统一处理为数组格式 (兼容单文件/多文件上传)
 | 
			
		||||
      const fileList = Array.isArray(event.file) ? event.file : [event.file];
 | 
			
		||||
      // 确保目标字段是响应式数组
 | 
			
		||||
      if (!Array.isArray(this.form[key])) {
 | 
			
		||||
        this.$set(this.form, key, []);
 | 
			
		||||
      }
 | 
			
		||||
      // 批量创建新对象并追加 (浅拷贝)
 | 
			
		||||
      const newFiles = fileList.map(file => ({ ...file }));
 | 
			
		||||
      this.form[key] = [...this.form[key], ...newFiles];
 | 
			
		||||
    },
 | 
			
		||||
    fnDeletePic(event, key) {
 | 
			
		||||
      uni.showModal({
 | 
			
		||||
        title: '提示',
 | 
			
		||||
        content: '确定删除该图片吗?',
 | 
			
		||||
        success: (res) => {
 | 
			
		||||
          if (res.confirm) {
 | 
			
		||||
            if (event?.file?.imgfilesId) {
 | 
			
		||||
              this.form.deleteFileIds = this.form.deleteFileIds == null ? [] : this.form.deleteFileIds
 | 
			
		||||
              this.form.deleteFileIds.push(event.file.imgfilesId);
 | 
			
		||||
            }
 | 
			
		||||
            this.form[key].splice(event.index, 1)
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,6 +26,28 @@
 | 
			
		|||
          <view slot="title" class="title">车辆归属人</view>
 | 
			
		||||
          <view slot="label" class="mt-10">{{ info.U_NAME }}</view>
 | 
			
		||||
        </u-cell>
 | 
			
		||||
        <u-cell v-if="info.drivingImgs && info.drivingImgs.length > 0">
 | 
			
		||||
          <view slot="title" class="title">行驶证照片:</view>
 | 
			
		||||
          <view slot="label" class="mt-10">
 | 
			
		||||
            <view style="display: flex;flex-wrap: wrap">
 | 
			
		||||
              <view v-for="item in info.drivingImgs" :key="item" class="ml-10 mt-10">
 | 
			
		||||
                <u--image :showLoading="true" :src="item.FILEPATH" width="80px" height="80px"
 | 
			
		||||
                          @click="previewImage(item.FILEPATH, info.drivingImgs)"></u--image>
 | 
			
		||||
              </view>
 | 
			
		||||
            </view>
 | 
			
		||||
          </view>
 | 
			
		||||
        </u-cell>
 | 
			
		||||
        <u-cell v-if="info.vehicleImgs && info.vehicleImgs.length > 0" >
 | 
			
		||||
          <view slot="title" class="title">车辆照片:</view>
 | 
			
		||||
          <view slot="label" class="mt-10">
 | 
			
		||||
            <view style="display: flex;flex-wrap: wrap">
 | 
			
		||||
              <view v-for="item in info.vehicleImgs" :key="item" class="ml-10 mt-10">
 | 
			
		||||
                <u--image :showLoading="true" :src="item.FILEPATH" width="80px" height="80px"
 | 
			
		||||
                          @click="previewImage(item.FILEPATH, info.vehicleImgs)"></u--image>
 | 
			
		||||
              </view>
 | 
			
		||||
            </view>
 | 
			
		||||
          </view>
 | 
			
		||||
        </u-cell>
 | 
			
		||||
      </u-cell-group>
 | 
			
		||||
    </view>
 | 
			
		||||
    </view>
 | 
			
		||||
| 
						 | 
				
			
			@ -64,6 +86,19 @@ export default {
 | 
			
		|||
    async getData() {
 | 
			
		||||
      const resData = await getVehiclemessageView({VEHICLE_ID: this.$route.query.VEHICLE_ID });
 | 
			
		||||
      this.info = resData.pd;
 | 
			
		||||
      for (let i = 0; i < resData.pd.drivingImgs?.length; i++) {
 | 
			
		||||
        this.info.drivingImgs[i].FILEPATH = this.$store.state.filePath + resData.pd.drivingImgs[i].filepath;
 | 
			
		||||
      }
 | 
			
		||||
      for (let i = 0; i < resData.pd.vehicleImgs?.length; i++) {
 | 
			
		||||
        this.info.vehicleImgs[i].FILEPATH = this.$store.state.filePath + resData.pd.vehicleImgs[i].filepath;
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    previewImage(src, srcArr) {
 | 
			
		||||
      const urls = srcArr.map((item) => item.FILEPATH);
 | 
			
		||||
      uni.previewImage({
 | 
			
		||||
        urls,
 | 
			
		||||
        current: src,
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue