This commit is contained in:
2026-04-27 10:12:53 +08:00
parent 9332db0198
commit 48dd162ead
2 changed files with 36 additions and 71 deletions

View File

@ -182,7 +182,7 @@ export function getEventUnfinished(params) {
*/ */
export function addSsPai(data) { export function addSsPai(data) {
return service({ return service({
url: '/api/traffic/sspai', url: '/traffic/sspai',
method: 'post', method: 'post',
data data
}); });

View File

@ -26,8 +26,8 @@
</div> </div>
<div class="section-body" v-show="openSections.device"> <div class="section-body" v-show="openSections.device">
<van-cell-group :border="false"> <van-cell-group :border="false">
<van-field v-model="formData.sbbh" @click="openPicker('设备编号', 'sbbh')" is-link readonly name="设备编号" label="设备编号" placeholder="请选择" required :rules="[{ required: true, message: '请选择设备编号' }]"/> <van-field v-model="formData.sbbhMc" @click="openPicker('设备编号', 'sbbh')" is-link readonly name="设备编号" label="设备编号" placeholder="请选择" required :rules="[{ required: true, message: '请选择设备编号' }]"/>
<van-field v-model="formData.zfmj" @click="openPicker('执法民警', 'zfmj')" is-link readonly name="执法民警" label="执法民警" placeholder="请选择" required :rules="[{ required: true, message: '请选择执法民警' }]"/> <van-field v-model="formData.zqmjMc" @click="openPicker('执法民警', 'zqmj')" is-link readonly name="执法民警" label="执法民警" placeholder="请选择" required :rules="[{ required: true, message: '请选择执法民警' }]"/>
</van-cell-group> </van-cell-group>
</div> </div>
</div> </div>
@ -43,9 +43,9 @@
</div> </div>
<div class="section-body" v-show="openSections.vehicle"> <div class="section-body" v-show="openSections.vehicle">
<van-cell-group :border="false"> <van-cell-group :border="false">
<van-field v-model="formData.clfl" @click="openPicker('车辆分类', 'clfl')" is-link readonly name="车辆分类" label="车辆分类" placeholder="请选择"/> <van-field v-model="formData.clflMc" @click="openPicker('车辆分类', 'clfl')" is-link readonly name="车辆分类" label="车辆分类" placeholder="请选择"/>
<van-field v-model="formData.hpzl" @click="openPicker('号牌种类', 'hpzl')" is-link readonly name="号牌种类" label="号牌种类" placeholder="请选择"/> <van-field v-model="formData.hpzlMc" @click="openPicker('号牌种类', 'hpzl')" is-link readonly name="号牌种类" label="号牌种类" placeholder="请选择"/>
<van-field v-model="formData.hppch" name="号牌牌号" label="号牌牌号" placeholder="请输入" maxlength="10" /> <van-field v-model="formData.hphm" name="号牌牌号" label="号牌牌号" placeholder="请输入" maxlength="10" />
</van-cell-group> </van-cell-group>
</div> </div>
</div> </div>
@ -61,16 +61,16 @@
</div> </div>
<div class="section-body" v-show="openSections.violation"> <div class="section-body" v-show="openSections.violation">
<van-cell-group :border="false"> <van-cell-group :border="false">
<van-field v-model="formData.wgxzq" @click="openPicker('非法行政区划', 'wgxzq')" is-link readonly name="非法行政区划" label="非法行政区划" placeholder="请输入非法行政区划" /> <van-field v-model="formData.xzqhMc" @click="openPicker('非法行政区划', 'xzqh')" is-link readonly name="非法行政区划" label="非法行政区划" placeholder="请输入非法行政区划" />
<van-field v-model="formData.wgdd" name="违法地点" label="违法地点" placeholder="请输入违法地点" required :rules="[{ required: true, message: '请输入违法地点' }]" /> <van-field v-model="formData.wgddMc" name="违法地点" label="违法地点" placeholder="请输入违法地点" required :rules="[{ required: true, message: '请输入违法地点' }]" />
<van-field v-model="formData.ldmkms" name="路段码公里数" label="路段码公里数" placeholder="请输入路段码公里数" /> <van-field v-model="formData.lddmMc" name="路段码公里数" label="路段码公里数" placeholder="请输入路段码公里数" />
<van-field v-model="formData.ddmcs" name="地点米数" label="地点米数" placeholder="请输入地点米数" /> <van-field v-model="formData.ddmsMc" name="地点米数" label="地点米数" placeholder="请输入地点米数" />
<van-field v-model="formData.wfdz" name="违法地址" label="违法地址" placeholder="请输入违法地址" /> <van-field v-model="formData.wfdzMc" name="违法地址" label="违法地址" placeholder="请输入违法地址" />
<van-field v-model="formData.wffssj" @click="openPicker('违法发生时间', 'wffssj')" is-link readonly name="违法发生时间" label="违法发生时间" placeholder="请选择违法发生时间"/> <van-field v-model="formData.wfsj" @click="openPicker('违法发生时间', 'wfsj')" is-link readonly name="违法发生时间" label="违法发生时间" placeholder="请选择违法发生时间"/>
<van-field v-model="formData.wfsj" name="违法时间" label="违法时间" placeholder="请输入违法时间" readonly /> <van-field v-model="formData.wfsj1" @click="openPicker('违法时间', 'wfsj1')" is-link readonly name="违法时间" label="违法时间" placeholder="请选择违法时间" />
<van-field v-model="formData.scz" name="实测值" label="实测值" placeholder="请输入实测值" /> <van-field v-model="formData.scz" name="实测值" label="实测值" placeholder="请输入实测值" />
<van-field v-model="formData.bzz" name="标准值" label="标准值" placeholder="请输入标准值" /> <van-field v-model="formData.bzz" name="标准值" label="标准值" placeholder="请输入标准值" />
<van-field v-model="formData.wffxjg" name="违法发现机关" label="违法发现机关" placeholder="请输入违法发现机关" /> <van-field v-model="formData.fxjg" name="违法发现机关" label="违法发现机关" placeholder="请输入违法发现机关" />
</van-cell-group> </van-cell-group>
</div> </div>
</div> </div>
@ -101,9 +101,9 @@
</div> </div>
<!-- 照片基本信息 --> <!-- 照片基本信息 -->
<van-cell-group :border="false"> <van-cell-group :border="false">
<van-field v-model="formData.zpsl" name="照片数量" label="照片数量" type="number" placeholder="请输入照片数量" required :rules="[{ required: true, message: '请输入照片数量' }]" /> <van-field v-model="formData.zpsl" name="照片数量" label="照片数量" readonly type="number" placeholder="请输入照片数量" required :rules="[{ required: true, message: '请输入照片数量' }]" />
<van-field v-model="formData.tpmc" name="图片文件名" label="图片文件名" placeholder="请输入图片文件名" /> <van-field v-model="formData.zpxm" name="图片文件名" label="图片文件名" placeholder="请输入图片文件名" />
<van-field v-model="formData.tpfs" @click="openPicker('图片方式', 'tpfs')" is-link readonly name="图片方式" label="图片方式" placeholder="请选择图片方式"/> <van-field v-model="formData.tpfsMc" @click="openPicker('图片方式', 'tpfs')" is-link readonly name="图片方式" label="图片方式" placeholder="请选择图片方式"/>
<van-field v-model="formData.wfspdz" name="违法视频地址" label="违法视频地址" placeholder="请输入违法视频地址" /> <van-field v-model="formData.wfspdz" name="违法视频地址" label="违法视频地址" placeholder="请输入违法视频地址" />
</van-cell-group> </van-cell-group>
</div> </div>
@ -120,7 +120,7 @@
</div> </div>
<div class="section-body" v-show="openSections.other"> <div class="section-body" v-show="openSections.other">
<van-cell-group :border="false"> <van-cell-group :border="false">
<van-field v-model="formData.qtlx" name="通知书号" label="通知书号" placeholder="请输入通知书号"/> <van-field v-model="formData.tzsh" name="通知书号" label="通知书号" placeholder="请输入通知书号"/>
<van-field v-model="formData.tzrq" @click="openPicker('通知日期', 'tzrq')" is-link readonly name="通知日期" label="通知日期" placeholder="请输入通知日期" /> <van-field v-model="formData.tzrq" @click="openPicker('通知日期', 'tzrq')" is-link readonly name="通知日期" label="通知日期" placeholder="请输入通知日期" />
</van-cell-group> </van-cell-group>
</div> </div>
@ -175,20 +175,13 @@ const photoList = ref([
]); ]);
function chooseDate(val) { function chooseDate(val) {
console.log("选择的值:", val);
switch (pop.type) { switch (pop.type) {
case 'list': case 'list':
formData[chooseType.value] = val.text; let mcKey = chooseType.value + 'Mc';
let dmKey = chooseType.value + 'dm'; formData[mcKey] = val.text;
formData[dmKey] = val.value; formData[chooseType.value] = val.value;
break; break;
case 'datetime': case 'datetime':
if(chooseType.value === 'wffssj') {
formData.wffssj = val.value;
formData.wfrq = val.value.slice(0, 10);
formData.wfsj = val.value.slice(11, 19);
}
break;
case 'date': case 'date':
formData[chooseType.value] = val.value; formData[chooseType.value] = val.value;
break; break;
@ -270,6 +263,7 @@ function openPicker(name,type) {
]; ];
break; break;
case '违法发生时间': case '违法发生时间':
case '违法时间':
pop.type = 'datetime'; pop.type = 'datetime';
break; break;
case '图片方式': case '图片方式':
@ -285,8 +279,6 @@ function openPicker(name,type) {
break; break;
} }
pop.show = true; pop.show = true;
console.log(pop);
} }
@ -320,48 +312,18 @@ async function handleSubmit() {
try { try {
// 字段映射:页面字段 -> API字段 // 字段映射:页面字段 -> API字段
const submitData = { const submitData = { ...formData };
sbbh: formData.sbbhdm || formData.sbbh,
zqmj: formData.zfmj,
clfl: formData.clfldm || formData.clfl,
hpzl: formData.hpzldm || formData.hpzl,
hphm: formData.hppch,
xzqh: formData.wgxzqdm || formData.wgxzq,
wfdd: formData.wgdd,
lddm: formData.ldmkms,
ddms: formData.ddmcs,
wfdz: formData.wfdz,
wfsj: formData.wffssj,
wfsj1: formData.wfsj,
scz: formData.scz,
bzz: formData.bzz,
zpsl: formData.zpsl,
zpxm: formData.tpmc,
wfspdz: formData.wfspdz,
fxjg: formData.wffxjg,
tpfs: formData.tpfsdm || formData.tpfs,
tzsh: formData.qtlx,
tzrq: formData.tzrq,
};
// 照片处理base64 或 URL
const uploadedPhotos = photoList.value.filter(p => p.url); const uploadedPhotos = photoList.value.filter(p => p.url);
uploadedPhotos.forEach((photo, index) => { uploadedPhotos.forEach((photo, index) => {
if (index < 3) { submitData[`zpstr${index + 1}`] = photo.url;
// 判断是 base64 还是 URL submitData[`zpur1${index + 1}`] = photo.url;
if (photo.url.startsWith('data:')) {
submitData[`zpstr${index + 1}`] = photo.url;
} else {
submitData[`zpur1${index + 1}`] = photo.url;
}
}
}); });
console.log("提交数据:", submitData); const res = await addSsPai(submitData);
// const res = await addSsPai(submitData); console.log("提交数据:", res);
// Toast("提交成功");
// router.back();
// if (res.code === 200 || res.code === 0) { // if (res.code === 200 || res.code === 0) {
// Toast("提交成功");
// router.back();
// } else { // } else {
// Toast(res.msg || "提交失败"); // Toast(res.msg || "提交失败");
// } // }
@ -376,10 +338,8 @@ async function handleSubmit() {
onMounted(() => { onMounted(() => {
// 获取用户信息 // 获取用户信息
const userInfo = JSON.parse(localStorage.getItem("userInfo") || "{}"); const userInfo = JSON.parse(localStorage.getItem("userInfo") || "{}");
if (userInfo.userName) { formData.zqmjMc = userInfo.username;
formData.zfmj = userInfo.userName; formData.zqmj = userInfo.workNo;
formData.zfmjdm = userInfo.userId;
}
}); });
</script> </script>
@ -684,4 +644,9 @@ onMounted(() => {
font-weight: 600; font-weight: 600;
} }
} }
::v-deep .van-image{
width: 135px !important;
height: 135px !important;
}
</style> </style>