From 0a0070a4b951c4ac9309465d55f28de2cef66b56 Mon Sep 17 00:00:00 2001 From: Shan Ao <178391389@qq.com> Date: Wed, 23 Jul 2025 09:34:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=A3=E9=97=A8=E9=97=A8=E7=A6=81=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E8=A1=8C=E9=A9=B6=E8=AF=81=E7=85=A7=E7=89=87=EF=BC=8C?= =?UTF-8?q?=E8=BD=A6=E8=BE=86=E7=85=A7=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/index.js | 3 +- .../share_office_vehicle_info/add.vue | 101 +++++++++++++++++- .../share_office_vehicle_info/view.vue | 35 ++++++ 3 files changed, 135 insertions(+), 4 deletions(-) diff --git a/api/index.js b/api/index.js index d0ce131..030c6fe 100644 --- a/api/index.js +++ b/api/index.js @@ -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(不上传到数据库,返回文件地址) diff --git a/pages/door_access_control/share_office_vehicle_info/add.vue b/pages/door_access_control/share_office_vehicle_info/add.vue index cc18daa..bdd77cc 100644 --- a/pages/door_access_control/share_office_vehicle_info/add.vue +++ b/pages/door_access_control/share_office_vehicle_info/add.vue @@ -31,6 +31,27 @@ + + + + + + @@ -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) + } + } + }) + }, }, } diff --git a/pages/door_access_control/share_office_vehicle_info/view.vue b/pages/door_access_control/share_office_vehicle_info/view.vue index e06fe72..0f4d83e 100644 --- a/pages/door_access_control/share_office_vehicle_info/view.vue +++ b/pages/door_access_control/share_office_vehicle_info/view.vue @@ -26,6 +26,28 @@ 车辆归属人 {{ info.U_NAME }} + + 行驶证照片: + + + + + + + + + + 车辆照片: + + + + + + + + @@ -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, + }); }, } }