This commit is contained in:
2025-07-16 20:59:42 +08:00
parent 726bae2652
commit 7407a43c85
4 changed files with 677 additions and 341 deletions

View File

@ -1,7 +1,7 @@
<template>
<div class="statistical-analysis">
<div class="left">
<div style="background:#fff" class="pl10 pr10 pb10 pt10">
<div style="background: #fff" class="pl10 pr10 pb10 pt10">
<div class="title">图像信息</div>
<MyTable
:tableData="pageData.tableData"
@ -19,17 +19,28 @@
<img width="60" height="60" :src="pro" alt="" />
</template>
<template #controls="{ row }">
<el-link size="small" type="success" @click="addEdit('edit', row)" >研判确认</el-link >
<el-link size="small" type="success" @click="addEdit('edit', row)"
>研判确认</el-link
>
<el-link size="small" type="primary">查看</el-link>
<el-link size="small" type="danger" @click="deleteRow(row)">删除</el-link>
<el-link size="small" type="danger" @click="deleteRow(row)"
>删除</el-link
>
</template>
</MyTable>
</div>
<div style="background:#fff" class="mt10 pl10 pr10 pb10 pt10" >
<div style="background: #fff" class="mt10 pl10 pr10 pb10 pt10">
<div class="flex align-center">
<div class="title mr20">人员信息</div>
<div class="mb13">
<el-button size="small" v-for="it in btnsList" :key="it" @click="chooseType(it)"> {{ it }} </el-button>
<el-button
size="small"
v-for="it in btnsList"
:key="it"
@click="chooseType(it)"
>
{{ it }}
</el-button>
</div>
</div>
<MyTable
@ -42,32 +53,56 @@
@chooseData="chooseDataBottom"
>
<template #ryXm="{ row }">
<div class="one_text_detail">姓名{{ row.ryXm }} &nbsp;</div>
<div class="one_text_detail">姓名{{ row.ryXm }} &nbsp;</div>
<div class="one_text_detail">电话{{ row.rySjhm }} &nbsp;</div>
<div class="one_text_detail">身份证{{ row.rySfzh }} </div>
<div class="one_text_detail">身份证{{ row.rySfzh }}</div>
</template>
<template #fxDj="{ row }">
<DictTag :tag="false" :value="row.fxDj" :options="D_GS_RQFJ_FXDJ"/>
<DictTag :tag="false" :value="row.fxDj" :options="D_GS_RQFJ_FXDJ" />
</template>
<template #fxLb="{ row }">
<DictTag :tag="false" :value="row.fxLb" :options="D_GS_RQFJ_FXLB"/>
<DictTag :tag="false" :value="row.fxLb" :options="D_GS_RQFJ_FXLB" />
</template>
<template #bqList="{ row }">
<div v-if="row.bqList">
<el-tag v-for="(it,idx) in row.bqList" :key="idx">{{ it.bqMc }}</el-tag>
<el-tag v-for="(it, idx) in row.bqList" :key="idx"
>{{ it.bqMc }}</el-tag
>
</div>
</template>
<template #czfs="{ row }">
<div>关注<DictTag :tag="false" style="display: inline;" :value="row.sfGz" :options="D_BZ_SF" /> &nbsp;</div>
<div>布控人员<DictTag :tag="false" style="display: inline;" :value="row.sfZbkry" :options="D_BZ_SF" />&nbsp;</div>
<div>重点人员<DictTag :tag="false" style="display: inline;" :value="row.sfZzdry" :options="D_BZ_SF" /></div>
<div>
关注<DictTag
:tag="false"
style="display: inline"
:value="row.sfGz"
:options="D_BZ_SF"
/>
&nbsp;
</div>
<div>
布控人员<DictTag
:tag="false"
style="display: inline"
:value="row.sfZbkry"
:options="D_BZ_SF"
/>&nbsp;
</div>
<div>
重点人员<DictTag
:tag="false"
style="display: inline"
:value="row.sfZzdry"
:options="D_BZ_SF"
/>
</div>
</template>
</MyTable>
<Pages
@changeNo="changeNo"
@changeSize="changeSize"
:tableHeight="pageData.tableHeight1"
:pageConfiger="{ ...pageData.pageConfiger, total: pageData.total }"
:pageConfiger="{ ...pageData.pageConfiger, total: pageData.total }"
/>
</div>
</div>
@ -75,20 +110,28 @@
<div class="title">轨迹信息</div>
<ul class="cntBox" v-loading="modelLoading">
<li class="step" v-for="(item, index) in stepList" :key="index">
<div style="color: #000;">{{ item.yjFssj }}</div>
<div class="desc">
<div class="one_text_detail mb5">事由{{ item.yjNr }}</div>
<div class="one_text_detail mb5">数据来源{{ item.yjGzymc }}</div>
<div class="one_text_detail">所在地址{{ item.yjDz }}</div>
</div>
<div style="color: #000">{{ item.yjFssj }}</div>
<div class="desc">
<div class="one_text_detail mb5">事由{{ item.yjNr }}</div>
<div class="one_text_detail mb5">数据来源{{ item.yjGzymc }}</div>
<div class="one_text_detail">所在地址{{ item.yjDz }}</div>
</div>
</li>
<MOSTY.Empty :show="!modelLoading && stepList.length <= 0"></MOSTY.Empty>
<MOSTY.Empty
:show="!modelLoading && stepList.length <= 0"
></MOSTY.Empty>
</ul>
</div>
</div>
<!-- 弹窗 -->
<Model v-model="isShow" :type="chooselx" :chooseList="chooseList" :ids="ids" @change="getList" :dic="{D_BZ_SF,D_GS_ZDRFJ_SPZT}"></Model>
<Model
v-model="isShow"
:type="chooselx"
:chooseList="chooseList"
:ids="ids"
@change="getList"
:dic="{ D_BZ_SF, D_GS_ZDRFJ_SPZT }"
></Model>
</template>
<script setup>
import * as MOSTY from "@/components/MyComponents/index";
@ -100,12 +143,13 @@ import MyTable from "@/components/aboutTable/MyTable.vue";
import Pages from "@/components/aboutTable/Pages.vue";
import { qcckPost } from "@/api/qcckApi.js";
const { proxy } = getCurrentInstance();
const {D_GS_ZDRFJ_SPZT,D_BZ_SF, D_GS_RQFJ_FXDJ, D_GS_RQFJ_FXLB } = proxy.$dict('D_GS_ZDRFJ_SPZT',"D_BZ_SF","D_GS_RQFJ_FXDJ","D_GS_RQFJ_FXLB"); //获取字典数据
const btnsList = reactive(['是否重点人','布控','是否关注','移交管控'])
const chooselx = ref('')
const isShow = ref(false)
const ids = ref([])
const chooseList = ref([])
const { D_GS_ZDRFJ_SPZT, D_BZ_SF, D_GS_RQFJ_FXDJ, D_GS_RQFJ_FXLB } =
proxy.$dict("D_GS_ZDRFJ_SPZT", "D_BZ_SF", "D_GS_RQFJ_FXDJ", "D_GS_RQFJ_FXLB"); //获取字典数据
const btnsList = reactive(["是否重点人", "布控", "是否关注", "移交管控"]);
const chooselx = ref("");
const isShow = ref(false);
const ids = ref([]);
const chooseList = ref([]);
const pageData = reactive({
tableData: [
{
@ -128,7 +172,7 @@ const pageData = reactive({
rowHieght: 61,
showSelectType: "checkBox",
loading: false,
haveControls:false
haveControls: false
},
total: 0,
pageConfiger: {
@ -145,24 +189,43 @@ const pageData = reactive({
{ label: "人像相似度", prop: "rxxsd" }
],
tableColumnPeople: [
{ label: "姓名", prop: "ryXm",showOverflowTooltip:true ,showSolt: true},
{ label: "户籍地址", prop: "ryHjdz" ,showOverflowTooltip:true},
{ label: "护照号码", prop: "ryHzhm" ,showOverflowTooltip:true},
{ label: "现住地址", prop: "ryXzdz" ,showOverflowTooltip:true},
{ label: "附件照片", prop: "ryFjZp" ,showOverflowTooltip:true},
{ label: "管辖单位", prop: "gxDwDm" ,showOverflowTooltip:true},
{ label: "责任部门", prop: "ssbm",showOverflowTooltip:true},
{ label: "标签", prop: "bqList",showOverflowTooltip:true,showSolt: true},
{ label: "风险积分", prop: "fxjf",showOverflowTooltip:true},
{ label: "风险等级", prop: "fxDj",showOverflowTooltip:true, showSolt: true },
{ label: "风险类别", prop: "fxLb",showOverflowTooltip:true, showSolt: true },
{ label: "处置方式", prop: "czfs",showOverflowTooltip:true, showSolt: true },
{ label: "姓名", prop: "ryXm", showOverflowTooltip: true, showSolt: true },
{ label: "户籍地址", prop: "ryHjdz", showOverflowTooltip: true },
{ label: "护照号码", prop: "ryHzhm", showOverflowTooltip: true },
{ label: "现住地址", prop: "ryXzdz", showOverflowTooltip: true },
{ label: "附件照片", prop: "ryFjZp", showOverflowTooltip: true },
{ label: "管辖单位", prop: "gxDwDm", showOverflowTooltip: true },
{ label: "责任部门", prop: "ssbm", showOverflowTooltip: true },
{
label: "标签",
prop: "bqList",
showOverflowTooltip: true,
showSolt: true
},
{ label: "风险积分", prop: "fxjf", showOverflowTooltip: true },
{
label: "风险等级",
prop: "fxDj",
showOverflowTooltip: true,
showSolt: true
},
{
label: "风险类别",
prop: "fxLb",
showOverflowTooltip: true,
showSolt: true
},
{
label: "处置方式",
prop: "czfs",
showOverflowTooltip: true,
showSolt: true
}
]
});
const modelLoading = ref(false)
const modelLoading = ref(false);
const stepList = ref([]);
const changeNo = (val) => {
pageData.pageConfiger.pageCurrent = val;
getList();
@ -172,85 +235,93 @@ const changeSize = (val) => {
getList();
};
//获取模型识别列表
const getList = () => {
let data = { ...pageData.pageConfiger };
qcckGet(data, "/mosty-gsxt/tbGsxtRqfjRy/selectPage").then((res) => {
pageData.tableDataPeople = res.records || [];
pageData.total = res.total;
if(pageData.tableDataPeople.length > 0) chooseDataBottom(pageData.tableDataPeople[0])
})
if (pageData.tableDataPeople.length > 0)
chooseDataBottom(pageData.tableDataPeople[0]);
});
};
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight =( window.innerHeight - 280 ) / 2;
pageData.tableHeight1 =(( window.innerHeight - 280 ) / 2 )- 50;
pageData.tableHeight = (window.innerHeight - 280) / 2;
pageData.tableHeight1 = (window.innerHeight - 280) / 2 - 50;
window.onresize = function () {
tabHeightFn();
};
};
// 选择数据
const chooseDataBottom = (val) =>{
if(Array.isArray(val)) {
ids.value = val.map(item=>item.id);
chooseList.value = val.filter(v=>{ if(v.sfZzdry == 0) return v; });
}else{
if(!val.rySfzh) {
const chooseDataBottom = (val) => {
if (Array.isArray(val)) {
ids.value = val.map((item) => item.id);
chooseList.value = val.filter((v) => {
if (v.sfZzdry != 1) return v;
});
} else {
if (!val.rySfzh) {
ElMessage.warning("该人员没有轨迹");
}else{
} else {
stepList.value = [];
modelLoading.value = true;
let params = { pageSize:1000, pageNum:1 ,yjRysfzh:val.rySfzh};
qcckPost(params,'/mosty-jmxf/tbYjxx/getPageList').then(res=>{
stepList.value = res.records || [];
modelLoading.value = false;
}).catch(()=>{
modelLoading.value = false;
})
let params = { pageSize: 1000, pageNum: 1, yjRysfzh: val.rySfzh };
qcckPost(params, "/mosty-jmxf/tbYjxx/getPageList")
.then((res) => {
stepList.value = res.records || [];
modelLoading.value = false;
})
.catch(() => {
modelLoading.value = false;
});
}
}
}
};
const chooseType = (val)=>{
const chooseType = (val) => {
chooselx.value = val;
if(ids.value.length == 0) return ElMessage.warning("请选择对应的数据");
switch(val){
case '布控':
proxy.$confirm("确定要布控", "警告", {type: "warning"}).then(() => {
let params = { ids:ids.value, sfbk:'1'}
qcckPost(params,'/mosty-gsxt/tbGsxtRqfjRy/updateBySfbkpz').then(res=>{
ElMessage.success("布控成功");
getList()
if (ids.value.length == 0) return ElMessage.warning("请选择对应的数据");
switch (val) {
case "布控":
proxy
.$confirm("确定要布控", "警告", { type: "warning" })
.then(() => {
let params = { ids: ids.value, sfbk: "1" };
qcckPost(params, "/mosty-gsxt/tbGsxtRqfjRy/updateBySfbkpz").then(
(res) => {
ElMessage.success("布控成功");
getList();
}
);
})
}).catch(() => {});
.catch(() => {});
break;
case '是否重点人':
if(chooseList.value.length == 0) return ElMessage.warning("选择的数据中都是重点人");
case "是否重点人":
if (chooseList.value.length == 0)
return ElMessage.warning("选择的数据中都是重点人");
isShow.value = true;
break;
case '是否关注':
case '移交管控':
case "是否关注":
case "移交管控":
isShow.value = true;
break;
}
}
};
onMounted(()=>{
onMounted(() => {
tabHeightFn();
getList()
})
getList();
});
</script>
<style lang="scss" scoped>
.statistical-analysis {
width: 100%;
height: 100%;
padding: 10px 10px 0 10px ;
padding: 10px 10px 0 10px;
box-sizing: border-box;
overflow: hidden;
.title {
@ -266,7 +337,11 @@ onMounted(()=>{
left: 0;
width: 78px;
height: 4px;
background: linear-gradient( 90deg, #3597f9c4 0%, rgba(53, 150, 249, 0) 100%);
background: linear-gradient(
90deg,
#3597f9c4 0%,
rgba(53, 150, 249, 0) 100%
);
border-radius: 4px 4px 4px 4px;
}
}
@ -283,7 +358,7 @@ onMounted(()=>{
float: right;
box-sizing: border-box;
background: #fff;
.cntBox{
.cntBox {
height: calc(100% - 60px);
overflow: hidden;
overflow-y: auto;
@ -293,9 +368,9 @@ onMounted(()=>{
position: relative;
border-left: 3px dashed #0072ff;
margin-left: 10px;
&::before{
&::before {
position: absolute;
content: '';
content: "";
width: 20px;
height: 20px;
background: #0072ff;

View File

@ -1,88 +1,147 @@
<template>
<el-dialog v-model="modelValue" title="提交" width="500px" @close="handleClose">
<el-dialog
v-model="modelValue"
title="提交"
width="500px"
@close="handleClose"
>
<el-form :model="listQuery" ref="formValidate" :rules="rules">
<el-form-item prop="sfGz" label="是否关注" v-if="props.type == '是否关注'">
<MOSTY.Select filterable v-model="listQuery.sfGz" :dictEnum="props.dic.D_BZ_SF" width="100%" clearable placeholder="请选择是否布控"/>
</el-form-item>
<el-form-item prop="sfZzdry" label="是否移交管控" v-if="props.type == '移交管控'">
<MOSTY.Select filterable v-model="listQuery.sfZzdry" :dictEnum="props.dic.D_BZ_SF" width="100%" clearable placeholder="请选择是否布控"/>
</el-form-item>
<el-form-item label="审核部门" prop="ssbmdm" style="width: 100%;" v-if="props.type == '是否重点人'">
<MOSTY.Department style="width: 100%;" clearable v-model="listQuery.ssbmdm" placeholder="请选择部门" />
</el-form-item>
<el-form-item label="审批部门" prop="ssbmdm" style="width: 100%;" v-if="props.type == '是否重点人'">
<MOSTY.Department style="width: 100%;" clearable v-model="listQuery.ssbmdm" placeholder="请选择部门" />
</el-form-item>
<el-form-item
prop="sfGz"
label="是否关注"
v-if="props.type == '是否关注'"
>
<MOSTY.Select
filterable
v-model="listQuery.sfGz"
:dictEnum="props.dic.D_BZ_SF"
width="100%"
clearable
placeholder="请选择是否布控"
/>
</el-form-item>
<el-form-item
prop="sfZzdry"
label="是否移交管控"
v-if="props.type == '移交管控'"
>
<MOSTY.Select
filterable
v-model="listQuery.sfZzdry"
:dictEnum="props.dic.D_BZ_SF"
width="100%"
clearable
placeholder="请选择是否布控"
/>
</el-form-item>
<el-form-item
label="审核部门"
prop="shSsbmdm"
style="width: 100%"
v-if="props.type == '是否重点人'"
>
<MOSTY.Department
style="width: 100%"
clearable
v-model="listQuery.shSsbmdm"
@getDepValue="changeSh"
placeholder="请选择部门"
/>
</el-form-item>
<el-form-item
label="审批部门"
prop="spSsbmdm"
style="width: 100%"
v-if="props.type == '是否重点人'"
>
<MOSTY.Department
style="width: 100%"
clearable
@getDepValue="changeSp"
v-model="listQuery.spSsbmdm"
placeholder="请选择部门"
/>
</el-form-item>
</el-form>
<template #footer>
<div class="tc">
<el-button @click="handleClose">取消</el-button>
<el-button type="primary" @click="submitForm">确定</el-button>
</div>
<div class="tc">
<el-button @click="handleClose">取消</el-button>
<el-button type="primary" @click="submitForm">确定</el-button>
</div>
</template>
</el-dialog>
</el-dialog>
</template>
<script setup>
import { ElMessage } from "element-plus";
import { qcckPost } from "@/api/qcckApi.js";
import * as MOSTY from "@/components/MyComponents/index";
import { ref ,defineProps,defineEmits, reactive} from 'vue';
import { ref, defineProps, defineEmits, reactive } from "vue";
const props = defineProps({
modelValue:{
type:Boolean,
default:false
},
ids:{
type:Array,
default:[]
},
chooseList:{
type:Array,
default:[]
},
type:{
type:String,
default:''
},
dic:{
type:Object,
default:''
},
})
modelValue: {
type: Boolean,
default: false
},
ids: {
type: Array,
default: []
},
chooseList: {
type: Array,
default: []
},
type: {
type: String,
default: ""
},
dic: {
type: Object,
default: ""
}
});
const emits = defineEmits(["update:modelValue"]);
const formValidate = ref()
const formValidate = ref();
const rules = reactive({
sfGz: [{ required: true, message: "请选择是否关注", trigger: "change" }],
sfZzdry: [{ required: true, message: "请选择是否移交管控", trigger: "change" }],
ssbmdm: [{ required: true, message: "请选择是部门", trigger: "change" }],
})
sfGz: [{ required: true, message: "请选择是否关注", trigger: "change" }],
sfZzdry: [
{ required: true, message: "请选择是否移交管控", trigger: "change" }
],
shSsbmdm: [{ required: true, message: "请选择审核部门", trigger: "change" }],
spSsbmdm: [{ required: true, message: "请选择审批部门", trigger: "change" }]
});
const listQuery = ref({});
const submitForm = () =>{
formValidate.value.validate((valid) => {
if (!valid) return false;
let params = { ids:props.ids, ...listQuery.value }
let url = ''
if( props.type == '是否关注') url = '/mosty-gsxt/tbGsxtRqfjRy/updateBySfgz'
if( props.type == '移交管控') url = '/mosty-gsxt/tbGsxtRqfjRy/updateByYjgk'
if( props.type == '是否重点人') url = '/mosty-gsxt/tbGsxtRqfjRy/updateByYjgk'
qcckPost(params,url).then(res=>{
ElMessage.success("成功");
emits('update:modelValue',false)
emits('change')
})
})
}
const submitForm = () => {
formValidate.value.validate((valid) => {
if (!valid) return false;
let params = { ids: props.ids, ...listQuery.value };
let url = "";
if (props.type == "是否关注") url = "/mosty-gsxt/tbGsxtRqfjRy/updateBySfgz";
if (props.type == "移交管控") url = "/mosty-gsxt/tbGsxtRqfjRy/updateByYjgk";
if (props.type == "是否重点人") {
url = " /mosty-gsxt/tbGsxtRqfjRy/sendZdrSs";
params.ids = props.chooseList.map((v) => v.id);
}
qcckPost(params, url).then((res) => {
ElMessage.success("成功");
emits("update:modelValue", false);
emits("change");
});
});
};
const handleClose = () =>{
emits('update:modelValue',false)
formValidate.value.resetFields();
}
const changeSh = (val) => {
listQuery.value.shSsbmmc = val ? val.orgName : "";
};
const changeSp = (val) => {
listQuery.value.spSsbmmc = val ? val.orgName : "";
};
const handleClose = () => {
emits("update:modelValue", false);
formValidate.value.resetFields();
};
</script>
<style lang="scss" scoped>
</style>