口门门禁增加行驶证照片,车辆照片
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 submitLogin = (params) => post("/sys/login", params) // 登录
|
||||||
export const getUserInfo = (params) => post("/sys/user/info/app", 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 setVehiclemessageDelete = (params) => post("/vehiclemessage/deleteVehicleMessage", params);
|
||||||
export const getAuditUserList = (params) => post("/sys/user/audit/user", params);
|
export const getAuditUserList = (params) => post("/sys/user/audit/user", params);
|
||||||
export const goCheckLicenceNo = (params) => post("/vehiclemessage/goCheckLicenceNo", 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-form-item label="车辆归属人" prop="USERNAME" borderBottom required>
|
||||||
<u-input :value="userInfo.USERNAME" border="none" readonly input-align="right"/>
|
<u-input :value="userInfo.USERNAME" border="none" readonly input-align="right"/>
|
||||||
</u-form-item>
|
</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>
|
</u-form>
|
||||||
<view class="mt-10">
|
<view class="mt-10">
|
||||||
<u-button type="primary" text="提交" @click="$u.debounce(fnSubmit, 1000, true)"/>
|
<u-button type="primary" text="提交" @click="$u.debounce(fnSubmit, 1000, true)"/>
|
||||||
|
@ -47,7 +68,8 @@ import {
|
||||||
getVehiclemessageView,
|
getVehiclemessageView,
|
||||||
goCheckLicenceNo,
|
goCheckLicenceNo,
|
||||||
setVehiclemessageSave,
|
setVehiclemessageSave,
|
||||||
setVehiclemessageUpdate
|
setVehiclemessageUpdate,
|
||||||
|
uploadSmd
|
||||||
} from "@/api";
|
} from "@/api";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
@ -79,6 +101,9 @@ export default {
|
||||||
QY_AUDITOR_NAME: '',
|
QY_AUDITOR_NAME: '',
|
||||||
portId: '',
|
portId: '',
|
||||||
portName: '',
|
portName: '',
|
||||||
|
drivingImgFiles: [],
|
||||||
|
vehicleImgFiles: [],
|
||||||
|
deleteFileIds: [],
|
||||||
},
|
},
|
||||||
rules: {
|
rules: {
|
||||||
LICENCE_TYPE: [{type: 'string', required: true, message: '请选择车牌类型', trigger: ['blur', 'change']}],
|
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']}],
|
VEHICLE_TYPE: [{type: 'string', required: true, message: '请选择车辆类型', trigger: ['blur', 'change']}],
|
||||||
QY_AUDITOR: [{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']}],
|
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: {
|
picker: {
|
||||||
show: false,
|
show: false,
|
||||||
|
@ -172,6 +199,24 @@ export default {
|
||||||
if (auditor) {
|
if (auditor) {
|
||||||
this.form.QY_AUDITOR_NAME = auditor.name;
|
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() {
|
async getUserList() {
|
||||||
const resData = await getAuditUserList({corpinfoId: this.userInfo.CORPINFO_ID});
|
const resData = await getAuditUserList({corpinfoId: this.userInfo.CORPINFO_ID});
|
||||||
|
@ -189,6 +234,26 @@ export default {
|
||||||
uni.$u.toast('车牌号已存在')
|
uni.$u.toast('车牌号已存在')
|
||||||
return
|
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;
|
this.form.OLD_LICENCE_NO = this.form.LICENCE_NO;
|
||||||
const params = {
|
const params = {
|
||||||
...this.form,
|
...this.form,
|
||||||
|
@ -197,14 +262,44 @@ export default {
|
||||||
USER_NAME: this.userInfo.NAME,
|
USER_NAME: this.userInfo.NAME,
|
||||||
VEHICLE_DEPARTMENT_ID: this.userInfo.DEPARTMENT_ID,
|
VEHICLE_DEPARTMENT_ID: this.userInfo.DEPARTMENT_ID,
|
||||||
VEHICLE_DEPARTMENT_NAME: this.userInfo.DEPARTMENT_NAME,
|
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)
|
this.VEHICLE_ID ? await setVehiclemessageUpdate(params) : await setVehiclemessageSave(params)
|
||||||
console.log(params)
|
|
||||||
uni.navigateBack(); // 返回上一页
|
uni.navigateBack(); // 返回上一页
|
||||||
} catch {
|
} catch {
|
||||||
uni.$u.toast('请补全必填项')
|
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>
|
</script>
|
||||||
|
|
|
@ -26,6 +26,28 @@
|
||||||
<view slot="title" class="title">车辆归属人</view>
|
<view slot="title" class="title">车辆归属人</view>
|
||||||
<view slot="label" class="mt-10">{{ info.U_NAME }}</view>
|
<view slot="label" class="mt-10">{{ info.U_NAME }}</view>
|
||||||
</u-cell>
|
</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>
|
</u-cell-group>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
@ -64,6 +86,19 @@ export default {
|
||||||
async getData() {
|
async getData() {
|
||||||
const resData = await getVehiclemessageView({VEHICLE_ID: this.$route.query.VEHICLE_ID });
|
const resData = await getVehiclemessageView({VEHICLE_ID: this.$route.query.VEHICLE_ID });
|
||||||
this.info = resData.pd;
|
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