This commit is contained in:
lcw
2025-08-16 16:54:03 +08:00
parent 71487ac647
commit 42f5e37f65
69 changed files with 5913 additions and 978 deletions

View File

@ -1,7 +1,7 @@
<template>
<el-dialog v-model="showDialog" :destroy-on-close="true" title="新增车辆" @close="close" :close-on-click-modal="false">
<FormMessage v-model="listQuery" :formList="formData" labelWidth="120px" ref="elform" :rules="rules">
<template #bqList>
<!-- <template #bqList>
<div class="marks pointer" @click="chooseMarksVisible = true">
<span style="color: rgb(175 178 184);padding-left: 10px;"
v-if="!listQuery.bqList || listQuery.bqList.length == 0">请选择标签</span>
@ -10,7 +10,7 @@
:key="idx">{{ it.bqMc }}</el-tag>
</span>
</div>
</template>
</template> -->
</FormMessage>
<template #footer>
<div class="flex just-center">
@ -27,7 +27,7 @@ import ChooseMarks from "@/components/ChooseList/ChooseMarks/index.vue";
import FormMessage from "@/components/aboutTable/FormMessage.vue";
import { reactive, ref, getCurrentInstance } from 'vue';
const { proxy } = getCurrentInstance();
const { D_BZ_XB } = proxy.$dict("D_BZ_XB"); // 获取字典数据
const { D_GS_ZDR_YJDJ ,BD_BK_CLYJBQ} = proxy.$dict("D_GS_ZDR_YJDJ",'BD_BK_CLYJBQ'); // 获取字典数据
const elform = ref()
const roleIds = ref([])
const showDialog = ref(false)
@ -35,46 +35,42 @@ const chooseMarksVisible = ref(false)
const emit = defineEmits(['change'])
const listQuery = ref({})
const formData = ref([
{ label: "车牌号", prop: "hphm", type: "input" },
{ label: "车架号", prop: "clCjh", type: "input" },
{ label: "车牌号", prop: "clCph", type: "input" },
{
label: "车辆颜色",
prop: "clYs",
type: "input",
},
{ label: "车辆所有人", prop: "clSyr", type: "input" },
{ label: "人身份证", prop: "clSyrsfzh", type: "input" },
{ label: "责任单位", prop: "zrSsbmdm", depMc: 'zrSsbmmc', type: "department" },
{ label: "管辖单位", prop: "gxSsbmdm", depMc: 'gxSsbmmc', type: "department" },
{ label: "管控民警姓名", prop: "gkMjXm", type: "input" },
{ label: "管控民警警号", prop: "gkMjJh", type: "input" },
{ label: "管控原因", prop: "clLkyy", type: "textarea", width: "100%" },
{ label: "所有人身份证", prop: "clSyrsfzh", type: "input" },
{ label: "所属部门", prop: "ssbmdm", type: "department" },
{ label: "预警等级", prop: "yjdj", type: "select", options: D_GS_ZDR_YJDJ },
{ label: "预警标签", prop: "yjbq", type: "select", options: BD_BK_CLYJBQ },
{ label: "车辆照片", prop: "fjdz", type: "upload", width: "100%" },
])
const rules = reactive({
hphm: [{ required: true, message: "请输入车牌号", trigger: "blur" }],
clCjh: [{ required: true, message: "请输入车架号", trigger: "blur" }],
clYs: [{ required: true, message: "请输入车辆颜色", trigger: "blur" }],
clSyr: [{ required: true, message: "请输入车辆所有人", trigger: "blur" }],
clSyrsfzh: [{ required: true, message: "请输入人员身份证", trigger: "blur" }],
clCph: [{ required: true, message: "请输入车牌号", trigger: "blur" }],
yjdj: [{ required: true, message: "请选择预警等级", trigger: "change" }],
yjbq: [{ required: true, message: "请选择预警标签", trigger: "change" }],
ssbmdm:[{ required: true, message: "请选择所属部门", trigger: "change" }]
})
const init = () => {
showDialog.value = true;
}
// 选择标签
const choosed = (val) => {
listQuery.value.bqList = val.map(v => {
return { bqZl: v.bqLb, bqId: v.id, bqLx: v.bqLx, bqLb: v.bqLb, bqMc: v.bqMc, bqDm: v.bqDm }
});
roleIds.value = val.map(v => v.id)
}
// const choosed = (val) => {
// listQuery.value.bqList = val.map(v => {
// return { bqZl: v.bqLb, bqId: v.id, bqLx: v.bqLx, bqLb: v.bqLb, bqMc: v.bqMc, bqDm: v.bqDm }
// });
// roleIds.value = val.map(v => v.id)
// }
// 删除数据
const closeTag = (idx) => {
listQuery.value.bqList.splice(idx, 1)
roleIds.value.splice(idx, 1)
}
// const closeTag = (idx) => {
// listQuery.value.bqList.splice(idx, 1)
// roleIds.value.splice(idx, 1)
// }
const submitForm = () => {
elform.value.submit((val) => {
@ -86,6 +82,7 @@ const submitForm = () => {
const close = () => {
elform.value.reset();
listQuery.value = {}
listQuery.value.bqList = []
roleIds.value = []
showDialog.value = false;

View File

@ -1,46 +1,50 @@
<template>
<el-dialog width="1400px" :model-value="modelValue" append-to-body @close="closed">
<template #title>
<span class="mr10 f16">选择布控车辆</span>
<el-button type="primary" size="small" @click="zdyaddPerson">添加其他车辆</el-button>
<span class="mr10 f16">选择布控车辆</span>
<el-button type="primary" size="small" @click="zdyaddPerson">添加其他车辆</el-button>
</template>
<el-form :model="listQuery" :inline="true">
<el-form-item label="车牌号">
<el-input placeholder="请输入车牌号" v-model="listQuery.hphm" clearable ></el-input>
</el-form-item>
<el-form-item label="车架号">
<el-input placeholder="请输入车架号" v-model="listQuery.clCjh" clearable ></el-input>
</el-form-item>
<el-form-item label="车辆所有人">
<el-input placeholder="请输入车辆所有人" v-model="listQuery.clSyr" clearable ></el-input>
</el-form-item>
<el-form-item>
<el-button type="success" @click="handleFilter">查询</el-button>
<el-button type="info" @click="reset()"> 重置 </el-button>
</el-form-item>
<el-form-item label="车牌号">
<el-input placeholder="请输入车牌号" v-model="listQuery.hphm" clearable></el-input>
</el-form-item>
<el-form-item label="车架号">
<el-input placeholder="请输入车架号" v-model="listQuery.clCjh" clearable></el-input>
</el-form-item>
<el-form-item label="车辆所有人">
<el-input placeholder="请输入车辆所有人" v-model="listQuery.clSyr" clearable></el-input>
</el-form-item>
<el-form-item>
<el-button type="success" @click="handleFilter">查询</el-button>
<el-button type="info" @click="reset()"> 重置 </el-button>
</el-form-item>
</el-form>
<div class="tabBox" :class="props.Single ? 'tabBoxRadio' : ''" style="margin-top: 0px">
<el-table ref="multipleUserRef" :key="keyTabel" v-loading="loading" @selection-change="handleSelectionChange" :data="tableData" border :row-key="keyid" style="width: 100%" height="450">
<el-table-column type="selection" width="55" :reserve-selection="true"/>
<el-table-column prop="hphm" align="center" label="车牌号"/>
<el-table-column prop="clCjh" align="center" label="车号"/>
<el-table-column prop="clYs" align="center" label="车辆颜色"/>
<el-table-column prop="clSyr" align="center" label="车辆所有人"/>
<el-table-column prop="gxSsbmmc" align="center" label="管辖单位"/>
<el-table-column prop="gkMjXm" align="center" label="管控民警"/>
</el-table>
<el-table ref="multipleUserRef" :key="keyTabel" v-loading="loading" @selection-change="handleSelectionChange"
:data="tableData" border :row-key="keyid" style="width: 100%" height="450">
<el-table-column type="selection" width="55" :reserve-selection="true" />
<el-table-column prop="hphm" align="center" label="车号" />
<el-table-column prop="clCjh" align="center" label="车架号" />
<el-table-column prop="clYs" align="center" label="车辆颜色" />
<el-table-column prop="clSyr" align="center" label="车辆所有人" />
<el-table-column prop="gxSsbmmc" align="center" label="管辖单位" />
<el-table-column prop="gkMjXm" align="center" label="管控民警" />
<el-table-column prop="gxSsbmmc" align="center" label="预警等级">
<template #default="scope">
<DictTag :tag="false" :value="scope.row.yjdj" :options="D_GS_ZDR_YJDJ" />
</template>
</el-table-column>
<el-table-column prop="yjbq" align="center" label="预警标签">
<template #default="scope">
<DictTag :tag="false" :value="scope.row.yjbq" :options="BD_BK_CLYJBQ" />
</template>
</el-table-column>
</el-table>
</div>
<div class="fenye flex just-end " :style="{ top: tableHeight + 'px' }">
<el-pagination
class="pagination"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="listQuery.pageCurrent"
:page-sizes="[10, 20, 50, 100]"
:page-size="listQuery.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
></el-pagination>
<el-pagination class="pagination" @size-change="handleSizeChange" @current-change="handleCurrentChange"
:current-page="listQuery.pageCurrent" :page-sizes="[10, 20, 50, 100]" :page-size="listQuery.pageSize"
layout="total, sizes, prev, pager, next, jumper" :total="total"></el-pagination>
</div>
<template #footer>
<div class="flex just-center">
@ -56,14 +60,15 @@
<script setup>
import AddPeo from './addPeo.vue'
import { qcckGet} from "@/api/qcckApi.js";
import { defineProps, ref ,getCurrentInstance, watch} from "vue";
import { qcckGet } from "@/api/qcckApi.js";
import { Dict } from 'core-js';
import { defineProps, ref, getCurrentInstance, watch } from "vue";
const { proxy } = getCurrentInstance();
const { D_BZ_XB,D_BZ_MZ } = proxy.$dict("D_BZ_XB","D_BZ_MZ"); //获取字典数据
const { BD_BK_CLYJBQ, D_GS_ZDR_YJDJ } = proxy.$dict("BD_BK_CLYJBQ", "D_GS_ZDR_YJDJ"); //获取字典数据
const props = defineProps({
modelValue: {
type: Boolean,
default:false
default: false
},
LeaderType: {
type: String,
@ -89,7 +94,7 @@ const addPerson = ref()
const multipleUserRef = ref(null);
const multipleSelectionUser = ref([]);
const tableData = ref([]);
const emits = defineEmits(["update:modelValue", "choosed","choosedAdd"]);
const emits = defineEmits(["update:modelValue", "choosed", "choosedAdd"]);
const keyTabel = ref(0)
const keyid = (row) => {
return row.id;
@ -99,7 +104,7 @@ const closed = () => {
emits("update:modelValue", false);
};
const reset = () => {
listQuery.value = { pageCurrent: 1, pageSize: 20, };
listQuery.value = { pageCurrent: 1, pageSize: 20, };
getListData();
};
@ -140,14 +145,14 @@ const handleCurrentChange = (currentPage) => {
};
const getListData = () => {
keyTabel.value++
const params = {...listQuery.value}
const params = { ...listQuery.value }
loading.value = true;
qcckGet(params,'/mosty-gsxt/tbGsxtZdcl/selectPage').then(res=>{
qcckGet(params, '/mosty-gsxt/tbGsxtZdcl/selectPage').then(res => {
loading.value = false;
tableData.value = res.records || [];
total.value = res.total;
multipleUser();
}).catch(()=>{
}).catch(() => {
loading.value = false;
})
};
@ -155,7 +160,7 @@ const getListData = () => {
//列表回显
function multipleUser() {
tableData.value.forEach((item) => {
multipleUserRef.value.toggleRowSelection(item, false);
multipleUserRef.value.toggleRowSelection(item, false);
if (props.roleIds.some((id) => id == item.id)) {
multipleUserRef.value.toggleRowSelection(item, true);
}
@ -183,9 +188,9 @@ const zdyaddPerson = () => {
addPerson.value.init();
};
watch(()=>props.modelValue,val=>{
if(val) handleFilter();
},{immediate:true})
watch(() => props.modelValue, val => {
if (val) handleFilter();
}, { immediate: true })
</script>
@ -197,8 +202,8 @@ watch(()=>props.modelValue,val=>{
.tabBoxRadio .el-checkbox__inner {
border-radius: 50% !important;
}
.tabBoxRadio .el-table__header-wrapper .el-checkbox {
display: none;
}
</style>

View File

@ -25,7 +25,7 @@ import ChooseMarks from "@/components/ChooseList/ChooseMarks/index.vue";
import FormMessage from "@/components/aboutTable/FormMessage.vue";
import { reactive, ref,getCurrentInstance } from 'vue';
const { proxy } = getCurrentInstance();
const { D_BZ_XB } = proxy.$dict("D_BZ_XB"); // 获取字典数据
const { D_BZ_XB,D_GS_ZDR_YJDJ } = proxy.$dict("D_BZ_XB","D_GS_ZDR_YJDJ"); // 获取字典数据
const elform = ref()
const roleIds = ref([])
const showDialog = ref(false)
@ -37,21 +37,26 @@ const formData = ref([
{ label: "性别", prop: "ryXb", type: "select" ,width:'45%',options:D_BZ_XB},
{ label: "身份证号", prop: "rySfzh", type: "input" ,width:'45%'},
{ label: "手机号码", prop: "ryLxdh", type: "input",width:'45%' },
{ label: "户籍地址", prop: "hjdXz", type: "input",width:'100%'},
{ label: "户籍地派出所", prop: "hjdpcsdm",depMc:'hjdpcs', type: "department" ,width:'48%'},
{ label: "户籍地址", prop: "hjdXz", type: "input", width: '100%' },
{ label: "户籍地派出所", prop: "hjdpcsdm", depMc: 'hjdpcs', type: "department", width: '48%' },
{ label: "所属部门", prop: "ssbmdm", type: "department" },
{ label: "特征描述", prop: "qtTzms", type: "input" ,width:'100%'},
{ label: "人员标签", prop: "bqList", type: "slot" ,width:'100%'},
{ label: "车牌号", prop: "clCph", type: "input" ,width:'45%'},
{ label: "车架号", prop: "clCjh", type: "input" ,width:'45%'},
{ label: "车牌号", prop: "clCph", type: "input", width: '45%' },
{ label: "预警等级", prop: "yjdj", type: "select", options: D_GS_ZDR_YJDJ },
{ label: "车辆识别代码", prop: "clCjh", type: "input" ,width:'45%'},
{ label: "人员照片", prop: "fjZp", type: "upload" ,width:'100%'},
])
const rules = reactive({
// fjZp: [{ required: true, message: "请上传人员照片", trigger: "blur" }],
ryXm: [{ required: true, message: "请输入姓名", trigger: "blur" }],
rySfzh: [{ required: true, message: "请输入身份证号", trigger: "blur" }],
ryXb: [{ required: true, message: "请选择性别", trigger: "change" }],
ryLxdh: [{ required: true, message: "请输入手机号码", trigger: "blur" }],
hjdXz: [{ required: true, message: "请输入户籍地", trigger: "blur" }],
xzdXz: [{ required: true, message: "请输入现居住地址", trigger: "blur" }],
ryXb: [{ required: true, message: "请选择性别", trigger: "change" }],
yjdj: [{ required: true, message: "请选择预警等级", trigger: "change" }],
ssbmdm:[{ required: true, message: "请选择所属部门", trigger: "change" }]
// ryLxdh: [{ required: true, message: "请输入手机号码", trigger: "blur" }],
// hjdXz: [{ required: true, message: "请输入户籍地", trigger: "blur" }],
// xzdXz: [{ required: true, message: "请输入现居住地址", trigger: "blur" }],
})
const init = () =>{
showDialog.value = true;
@ -80,7 +85,9 @@ const submitForm = () =>{
}
const close = () =>{
elform.value.reset();
elform.value.reset();
listQuery.value = {}
listQuery.value.bqList = []
roleIds.value = []
showDialog.value = false;
@ -97,4 +104,4 @@ defineExpose({init})
border: 1px solid #e9e9e9;
border-radius: 4px;
}
</style>
</style>

View File

@ -39,8 +39,13 @@
<el-table-column prop="ryLxdh" align="center" label="手机号"/>
<el-table-column prop="qtXnsf" align="center" label="虚拟身份"/>
<el-table-column prop="clCph" align="center" label="车牌号"/>
<el-table-column prop="clCjh" align="center" label="车架号"/>
<el-table-column prop="clCjh" align="center" label="车辆识别代码"/>
<el-table-column prop="qtTzms" align="center" label="特征描述"/>
<el-table-column prop="zdrYjdj" align="center" label="预警等级">
<template #default="{ row }">
<DictTag :tag="false" :value="row.zdrYjdj" :options="D_GS_ZDR_YJDJ" />
</template>
</el-table-column>
<el-table-column prop="bqList" align="center" label="人员标签">
<template #default="{ row }">
<span v-if="row.bqList">
@ -79,7 +84,7 @@ import AddPeo from './addPeo.vue'
import { qcckGet} from "@/api/qcckApi.js";
import { defineProps, ref ,getCurrentInstance, watch} from "vue";
const { proxy } = getCurrentInstance();
const { D_BZ_XB,D_BZ_MZ } = proxy.$dict("D_BZ_XB","D_BZ_MZ"); //获取字典数据
const { D_BZ_XB,D_BZ_MZ,D_GS_ZDR_YJDJ } = proxy.$dict("D_BZ_XB","D_BZ_MZ",'D_GS_ZDR_YJDJ'); //获取字典数据
const props = defineProps({
modelValue: {
type: Boolean,