Files
sgxt_web/src/views/backOfficeSystem/ExcavationResearch/ZdryFjyp/index.vue

342 lines
10 KiB
Vue
Raw Normal View History

2025-04-17 14:09:09 +08:00
<template>
<div class="statistical-analysis">
2025-07-03 17:47:01 +08:00
<div class="left">
<div style="background:#fff" class="pl10 pr10 pb10 pt10">
<div class="title">图像信息</div>
<MyTable
:tableData="pageData.tableData"
:tableColumn="pageData.tableColumn"
:tableHeight="pageData.tableHeight"
:key="pageData.keyCount"
:tableConfiger="pageData.tableConfiger"
:controlsWidth="pageData.controlsWidth"
@chooseData="chooseData"
>
<template #cjhx>
<img width="60" height="60" :src="pro" alt="" />
</template>
<template #ytp>
<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="primary">查看</el-link>
<el-link size="small" type="danger" @click="deleteRow(row)">删除</el-link>
</template>
</MyTable>
2025-04-17 14:09:09 +08:00
</div>
2025-07-03 17:47:01 +08:00
<div style="background:#fff" class="mt10 pl10 pr10 pb10 pt10" >
2025-07-03 21:15:39 +08:00
<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>
</div>
</div>
2025-07-03 17:47:01 +08:00
<MyTable
:tableData="pageData.tableDataPeople"
:tableColumn="pageData.tableColumnPeople"
:tableHeight="pageData.tableHeight1"
:key="pageData.keyCount"
:tableConfiger="pageData.tableConfiger1"
:controlsWidth="pageData.controlsWidth"
2025-07-03 21:15:39 +08:00
@chooseData="chooseDataBottom"
2025-07-03 17:47:01 +08:00
>
<template #ryXm="{ row }">
2025-07-16 11:45:07 +08:00
<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>
2025-07-03 17:47:01 +08:00
</template>
<template #fxDj="{ row }">
<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"/>
</template>
2025-07-16 11:54:27 +08:00
<template #bqList="{ row }">
<div v-if="row.bqList">
<el-tag v-for="(it,idx) in row.bqList" :key="idx">{{ it.bqMc }}</el-tag>
</div>
</template>
2025-07-03 17:47:01 +08:00
<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>
2025-07-04 10:09:13 +08:00
<div>重点人员<DictTag :tag="false" style="display: inline;" :value="row.sfZzdry" :options="D_BZ_SF" /></div>
2025-07-03 17:47:01 +08:00
</template>
</MyTable>
<Pages
@changeNo="changeNo"
@changeSize="changeSize"
:tableHeight="pageData.tableHeight1"
:pageConfiger="{ ...pageData.pageConfiger, total: pageData.total }"
/>
2025-04-17 14:09:09 +08:00
</div>
</div>
2025-07-03 17:47:01 +08:00
<div class="right">
<div class="title">轨迹信息</div>
2025-07-16 11:45:07 +08:00
<ul class="cntBox" v-loading="modelLoading">
2025-07-03 17:47:01 +08:00
<li class="step" v-for="(item, index) in stepList" :key="index">
2025-07-16 11:45:07 +08:00
<div style="color: #000;">{{ item.yjFssj }}</div>
2025-07-03 17:47:01 +08:00
<div class="desc">
2025-07-16 11:45:07 +08:00
<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>
2025-07-03 17:47:01 +08:00
</div>
</li>
2025-07-16 11:45:07 +08:00
<MOSTY.Empty :show="!modelLoading && stepList.length <= 0"></MOSTY.Empty>
2025-07-03 17:47:01 +08:00
</ul>
</div>
2025-04-17 14:09:09 +08:00
</div>
2025-07-16 11:10:37 +08:00
<!-- 弹窗 -->
2025-07-16 11:45:07 +08:00
<Model v-model="isShow" :type="chooselx" :chooseList="chooseList" :ids="ids" @change="getList" :dic="{D_BZ_SF,D_GS_ZDRFJ_SPZT}"></Model>
2025-07-16 11:03:44 +08:00
2025-04-17 14:09:09 +08:00
</template>
<script setup>
2025-07-16 11:45:07 +08:00
import * as MOSTY from "@/components/MyComponents/index";
2025-07-16 11:10:37 +08:00
import { ElMessage } from "element-plus";
2025-07-03 21:15:39 +08:00
import Model from "./model.vue";
2025-07-03 17:47:01 +08:00
import { qcckGet } from "@/api/qcckApi.js";
import { ref, reactive, onMounted, getCurrentInstance } from "vue";
2025-06-17 20:04:43 +08:00
import MyTable from "@/components/aboutTable/MyTable.vue";
import Pages from "@/components/aboutTable/Pages.vue";
2025-07-03 17:47:01 +08:00
import { qcckPost } from "@/api/qcckApi.js";
2025-06-17 20:04:43 +08:00
const { proxy } = getCurrentInstance();
2025-07-16 11:45:07 +08:00
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"); //获取字典数据
2025-07-16 11:10:37 +08:00
const btnsList = reactive(['是否重点人','布控','是否关注','移交管控'])
2025-07-03 21:15:39 +08:00
const chooselx = ref('')
const isShow = ref(false)
const ids = ref([])
2025-07-16 11:03:44 +08:00
const chooseList = ref([])
2025-06-17 20:04:43 +08:00
const pageData = reactive({
tableData: [
2025-07-03 17:47:01 +08:00
{
tpzy: "GBJD01",
dwmc: "工布江达重点人",
zylyxz: "涉稳",
cjhx: "系统新增",
ytp: "低级",
rxxsd: "2025/05/05"
2025-04-25 17:06:47 +08:00
}
2025-06-17 20:04:43 +08:00
],
2025-07-03 17:47:01 +08:00
tableDataPeople: [],
2025-06-17 20:04:43 +08:00
keyCount: 0,
tableConfiger: {
rowHieght: 61,
showSelectType: "checkBox",
loading: false
},
2025-07-03 17:47:01 +08:00
tableConfiger1: {
2025-06-17 20:04:43 +08:00
rowHieght: 61,
2025-07-03 21:15:39 +08:00
showSelectType: "checkBox",
2025-06-17 20:04:43 +08:00
loading: false,
2025-07-03 17:47:01 +08:00
haveControls:false
2025-06-17 20:04:43 +08:00
},
total: 0,
pageConfiger: {
pageSize: 20,
pageCurrent: 1
},
2025-07-03 17:47:01 +08:00
controlsWidth: 220,
2025-06-17 20:04:43 +08:00
tableColumn: [
2025-07-03 17:47:01 +08:00
{ label: "图片资源", prop: "tpzy" },
{ label: "单位名称", prop: "dwmc" },
{ label: "资源来源详址", prop: "zylyxz" },
{ label: "采集画像", prop: "cjhx", showSolt: true },
{ label: "原图片", prop: "ytp", showSolt: true },
{ label: "人像相似度", prop: "rxxsd" }
2025-06-17 20:04:43 +08:00
],
2025-07-03 17:47:01 +08:00
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},
2025-07-16 11:54:27 +08:00
{ label: "标签", prop: "bqList",showOverflowTooltip:true,showSolt: true},
2025-07-16 11:45:07 +08:00
{ label: "风险积分", prop: "fxjf",showOverflowTooltip:true},
2025-07-03 17:47:01 +08:00
{ label: "风险等级", prop: "fxDj",showOverflowTooltip:true, showSolt: true },
{ label: "风险类别", prop: "fxLb",showOverflowTooltip:true, showSolt: true },
{ label: "处置方式", prop: "czfs",showOverflowTooltip:true, showSolt: true },
2025-06-17 20:04:43 +08:00
]
});
2025-07-16 11:45:07 +08:00
const modelLoading = ref(false)
const stepList = ref([]);
2025-04-17 14:09:09 +08:00
2025-07-03 17:47:01 +08:00
2025-06-17 20:04:43 +08:00
const changeNo = (val) => {
pageData.pageConfiger.pageCurrent = val;
2025-07-03 17:47:01 +08:00
getList();
2025-06-17 20:04:43 +08:00
};
const changeSize = (val) => {
pageData.pageConfiger.pageSize = val;
2025-07-03 17:47:01 +08:00
getList();
2025-06-17 20:04:43 +08:00
};
2025-07-03 17:47:01 +08:00
2025-06-17 20:04:43 +08:00
//获取模型识别列表
2025-07-03 17:47:01 +08:00
const getList = () => {
2025-06-17 20:04:43 +08:00
let data = { ...pageData.pageConfiger };
2025-07-03 17:47:01 +08:00
qcckGet(data, "/mosty-gsxt/tbGsxtRqfjRy/selectPage").then((res) => {
pageData.tableDataPeople = res.records || [];
pageData.total = res.total;
2025-07-16 11:45:07 +08:00
if(pageData.tableDataPeople.length > 0) chooseDataBottom(pageData.tableDataPeople[0])
2025-07-03 17:47:01 +08:00
})
2025-06-17 20:04:43 +08:00
};
2025-04-25 17:06:47 +08:00
2025-07-03 17:47:01 +08:00
// 表格高度计算
2025-06-17 20:04:43 +08:00
const tabHeightFn = () => {
2025-07-03 17:47:01 +08:00
pageData.tableHeight =( window.innerHeight - 280 ) / 2;
pageData.tableHeight1 =(( window.innerHeight - 280 ) / 2 )- 50;
2025-06-17 20:04:43 +08:00
window.onresize = function () {
2025-04-25 17:06:47 +08:00
tabHeightFn();
2025-06-17 20:04:43 +08:00
};
};
2025-07-03 21:15:39 +08:00
// 选择数据
const chooseDataBottom = (val) =>{
2025-07-16 11:03:44 +08:00
if(Array.isArray(val)) {
ids.value = val.map(item=>item.id);
chooseList.value = val;
2025-07-16 11:45:07 +08:00
}else{
if(!val.rySfzh) {
ElMessage.warning("该人员没有轨迹");
}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;
})
}
2025-07-16 11:03:44 +08:00
}
2025-07-03 21:15:39 +08:00
}
const chooseType = (val)=>{
chooselx.value = val;
2025-07-16 11:03:44 +08:00
if(ids.value.length == 0) return ElMessage.warning("请选择对应的数据");
2025-07-03 21:15:39 +08:00
switch(val){
case '布控':
2025-07-16 11:03:44 +08:00
proxy.$confirm("确定要布控", "警告", {type: "warning"}).then(() => {
let params = { ids:ids.value, sfbk:'1'}
qcckPost(params,'/mosty-gsxt/tbGsxtRqfjRy/updateBySfbkpz').then(res=>{
ElMessage.success("布控成功");
getList()
2025-07-03 21:15:39 +08:00
})
2025-07-16 11:03:44 +08:00
}).catch(() => {});
2025-07-03 21:15:39 +08:00
break;
2025-07-16 11:10:37 +08:00
case '是否重点人':
2025-07-03 21:15:39 +08:00
case '是否关注':
case '移交管控':
2025-07-04 10:09:13 +08:00
isShow.value = true;
2025-07-03 21:15:39 +08:00
break;
}
}
2025-07-16 11:10:37 +08:00
2025-07-16 11:03:44 +08:00
2025-07-03 17:47:01 +08:00
onMounted(()=>{
2025-06-17 20:04:43 +08:00
tabHeightFn();
2025-07-03 17:47:01 +08:00
getList()
})
2025-04-17 14:09:09 +08:00
</script>
<style lang="scss" scoped>
2025-06-17 20:04:43 +08:00
.statistical-analysis {
width: 100%;
height: 100%;
2025-07-03 17:47:01 +08:00
padding: 10px 10px 0 10px ;
box-sizing: border-box;
overflow: hidden;
.title {
font-size: 20px;
font-weight: 700;
margin-bottom: 20px;
position: relative;
color: #333;
&::after {
content: "";
position: absolute;
bottom: -4px;
left: 0;
width: 78px;
height: 4px;
background: linear-gradient( 90deg, #3597f9c4 0%, rgba(53, 150, 249, 0) 100%);
border-radius: 4px 4px 4px 4px;
}
2025-06-17 20:04:43 +08:00
}
2025-07-03 17:47:01 +08:00
.left {
width: calc(100% - 410px);
height: 100%;
2025-06-17 20:04:43 +08:00
float: left;
2025-07-03 17:47:01 +08:00
}
.right {
width: 400px;
2025-04-17 14:09:09 +08:00
height: 100%;
2025-07-03 17:47:01 +08:00
padding: 10px 10px 0 10px;
2025-06-17 20:04:43 +08:00
margin-left: 10px;
2025-07-03 17:47:01 +08:00
float: right;
2025-06-17 20:04:43 +08:00
box-sizing: border-box;
2025-07-03 17:47:01 +08:00
background: #fff;
.cntBox{
height: calc(100% - 60px);
overflow: hidden;
overflow-y: auto;
.step {
padding-left: 20px;
box-sizing: border-box;
position: relative;
border-left: 3px dashed #0072ff;
margin-left: 10px;
&::before{
position: absolute;
content: '';
width: 20px;
height: 20px;
background: #0072ff;
border-radius: 50%;
left: -12px;
top: 0;
}
.desc {
margin: 5px;
color: #929090;
}
}
}
}
.form-row {
display: flex;
.el-form-item {
flex: 1;
2025-04-17 14:09:09 +08:00
}
}
2025-07-03 17:47:01 +08:00
.upload-group {
display: flex;
// gap: 20px;
.el-form-item {
flex: 1;
}
}
.unit {
margin-left: 5px;
}
::v-deep .el-input__inner {
height: 36px !important;
line-height: 36px !important;
border-radius: 0;
color: #777575;
}
}
.el-form-item--default {
margin-bottom: 0px;
2025-06-17 20:04:43 +08:00
}
2025-04-17 14:09:09 +08:00
</style>