This commit is contained in:
lcw
2025-11-27 14:27:59 +08:00
parent 93c49dff27
commit 85f1f3a6f7
75 changed files with 1321 additions and 360 deletions

View File

@ -111,6 +111,7 @@ import ExportFile from './components/exportFile.vue'
import CheckProcess from '../components/checkProcess.vue'
import { ElMessageBox } from 'element-plus'
import { getItem } from '@//utils/storage.js'
import {tbYjxxGetZbtj} from '@/api/yj.js'
const { proxy } = getCurrentInstance();
const { D_GS_XS_LY, D_BZ_SSZT, D_BZ_SF, D_GS_XS_LX, D_BZ_BQJB,
D_GS_XS_QTLX, D_GS_ZDQT_LB,

View File

@ -46,7 +46,7 @@ import Footer from './footer.vue'
// import useCallModule from '../sdk/call.js'
const { proxy } = getCurrentInstance();
// const Call = useCallModule()
lemon.login.login({
window.lemon.login.login({
username: "linzhigongan1",
password: "linzhigongan1",
realm: "puc.com",

View File

@ -14,20 +14,24 @@
<!-- 表格 -->
<div class="tabBox">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger">
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
<template #xwcs="{ row }">
<span style="color: #0072ff;" @click="handleClick(row)">{{ row.xwcs }}</span>
</template>
<template #bqYs="{ row }">
<!-- <div :style="{
backgroundColor: bqYs(row.bqys)
}"></div> -->
<DictTag :value="row.bqys" :tag="false" :color="bqYs(row.bqys)" :options="D_GS_SSYJ" />
<DictTag :value="row.bqys" :tag="false" :color="bqYs(row.bqys)" :options="D_GS_SSYJ" />
</template>
<template #czzt="{ row }">
<DictTag :value="row.czzt" :options="D_GSXT_YJXX_CZZT" />
</template>
<template #controls="{ row }">
<el-link type="primary">下发指令</el-link>
<el-link type="success">查看反馈</el-link>
<el-link type="warning" @click="pushAssess(row)">全息档案</el-link>
<el-link type="primary" @click="showDetail(row)">转合成</el-link>
<el-link type="danger" @click="delDictItem(row.id)">转会商</el-link>
<el-link type="success" @click="handleQsFk(row, '签收')" v-if="row.czzt == '01'">签收</el-link>
<el-link type="success" @click="handleQsFk(row, '反馈')" v-else-if="row.czzt == '02'">反馈</el-link>
<el-link type="success" @click="handleQsFk(row, '查看反馈')" v-else>查看反馈</el-link>
<el-link type="primary" @click="delDictItem(row.id)">详情</el-link>
</template>
</MyTable>
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
@ -38,6 +42,12 @@
</div>
<!-- 详情 -->
<Detail ref="detailRef"></Detail>
<HolographicArchive v-model="assessShow" :dataList="dataList" />
<FkDialog @change="getList" lx="02" />
<Information v-model="showDialog" title="发送指令" @submit='submit' @close='closeFszl'>
<SemdFqzl ref="semdFqzlRef" :itemData="itemData" @handleClose="handleClose" identification="yj"
:tacitly="tacitly" />
</Information>
</template>
<script setup>
@ -47,11 +57,16 @@ import PageTitle from "@/components/aboutTable/PageTitle.vue";
import Search from "@/components/aboutTable/Search.vue";
import MyTable from "@/components/aboutTable/MyTable.vue";
import Pages from "@/components/aboutTable/Pages.vue";
import { qcckGet } from "@/api/qcckApi.js";
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
import HolographicArchive from '@/views/home/components/holographicArchive.vue'
import { tbGsxtBqglSelectList } from '@/api/zdr'
import Information from "@/views/home/model/information.vue";
import SemdFqzl from '@/components/instructionHasBeen/sendFqzl.vue'
import emitter from "@/utils/eventBus.js";
import FkDialog from "@/views/backOfficeSystem/fourColorManage/warningControl/centerHome/components/fkDialog.vue";
import { reactive, ref, onMounted, getCurrentInstance, computed, watch } from "vue";
const { proxy } = getCurrentInstance();
const { D_GS_SSYJ } = proxy.$dict("D_GS_SSYJ"); //获取字典数据
const { D_GS_SSYJ ,D_GSXT_YJXX_CZZT} = proxy.$dict("D_GS_SSYJ","D_GSXT_YJXX_CZZT"); //获取字典数据
const searchBox = ref(); //搜索框
const bqLbData = ref({
bqXl: []
@ -77,23 +92,26 @@ const pageData = reactive({
rowHieght: 61,
showSelectType: "null",
loading: false,
haveControls: false,
haveControls: true
},
total: 0,
pageConfiger: {
pageSize: 20,
pageCurrent: 1
}, //分页
controlsWidth: 300, //操作栏宽度
tableColumn: [
{ label: "姓名", prop: "xm" },
{ label: "身份证号", prop: "sfzh" },
{ label: "电话", prop: "dh" },
{ label: "身份证号", prop: "sfzh", width: 200 },
{ label: "电话", prop: "dh", width: 150 },
{ label: "行为大类", prop: "xldlmc" },
{ label: "行为子类", prop: "xwzlmc", showOverflowTooltip: true },
{ label: "行为描述", prop: "xwms", showOverflowTooltip: true },
{ label: "行为次数", prop: "xwcs", showSolt: true },
{ label: "行为颜色", prop: "bqYs", showSolt: true },
{ label: "行为分值", prop: "xwfz", },
{ label: "处置状态", prop: "czzt", showSolt: true },
{ label: "所属县局", prop: "ssbm" },
]
});
@ -146,7 +164,7 @@ const getList = () => {
pageData.total = res.total || 0;
pageData.tableConfiger.loading = false;
pageData.tableData = res.records.map(item => {
return {...item,bqys: '01'}
return { ...item, bqys: '01' }
}) || [];
}).catch(() => {
pageData.tableConfiger.loading = false;
@ -179,6 +197,60 @@ const bqYs = (val) => {
return '#0000ff'
}
}
// 全息档案
const assessShow = ref(false)
const dataList = ref()
const pushAssess = (val) => {
assessShow.value = true;
dataList.value = val;
}
// 发送指令
const showDialog = ref(false)
const itemData = ref()
const showDetail = (item) => {
showDialog.value = true;
itemData.value = item
}
const handleClose = () => {
showDialog.value = false;
}
const semdFqzlRef = ref()
const tacitly = {
title: 'yjbt',
instructionContent: 'yjnr'
}
const submit = () => {
semdFqzlRef.value.getsendFqzl()
}
const closeFszl = () => {
semdFqzlRef.value.close()
}
// 处理签收
const handleQsFk = (val, type) => {
switch (type) {
case '签收':
proxy.$confirm("是否确定要签收?", "警告", { type: "warning" }).then(() => {
qcckPost({ id: val.id }, "/mosty-gsxt/yjzxXwyj/yjqs").then(() => {
val.czzt = '02'
getList()
proxy.$message({ type: "success", message: "签收成功" });
});
})
break;
case '反馈':
case '查看反馈':
emitter.emit("openFkDialog", { id: val.id, type });
break;
}
}
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;

View File

@ -1,21 +1,26 @@
<template>
<el-dialog v-model="showDialog" :append-to-body="true" :destroy-on-close="true" :title="title" :close-on-click-modal="false">
<FormMessage v-model="listQuery" :disabled="title == '反馈' ? false : true" :formList="formData" labelWidth="160px" ref="elform" :rules="rules">
<template #mbzrmjxm>
<MOSTY.Other width="100%" @click="handleChoose('mbzrmjxm')" clearable v-model="listQuery.mbzrmjxm" placeholder="请选择民警" :readonly="true" />
</template>
<template #czzrmj>
<MOSTY.Other width="100%" @click="handleChoose('czzrmj')" clearable v-model="listQuery.czzrmj" placeholder="请选择民警" :readonly="true" />
</template>
</FormMessage>
<template #footer>
<div class="flex just-center">
<el-button @click="close">取消</el-button>
<el-button type="primary" @click="submitForm" :loading="loading" v-if="title == '反馈'">确认</el-button>
</div>
</template>
<el-dialog :draggable="true" v-model="showDialog" :append-to-body="true" :destroy-on-close="true" :title="title"
:close-on-click-modal="false">
<FormMessage v-model="listQuery" :disabled="title == '反馈' ? false : true" :formList="formData" labelWidth="160px"
ref="elform" :rules="rules">
<template #mbzrmjxm>
<MOSTY.Other width="100%" @click="handleChoose('mbzrmjxm')" clearable v-model="listQuery.mbzrmjxm"
placeholder="请选择民警" :readonly="true" />
</template>
<template #czzrmj>
<MOSTY.Other width="100%" @click="handleChoose('czzrmj')" clearable v-model="listQuery.czzrmj"
placeholder="请选择民警" :readonly="true" />
</template>
</FormMessage>
<template #footer>
<div class="flex just-center">
<el-button @click="close">取消</el-button>
<el-button type="primary" @click="submitForm" :loading="loading" v-if="title == '反馈'">确认</el-button>
</div>
</template>
</el-dialog>
<ChooseUser v-model="chooseUserVisible" v-if="chooseUserVisible" @choosedUsers="handleUserSelected" :roleIds="roleIds" :Single="true" />
<ChooseUser v-model="chooseUserVisible" v-if="chooseUserVisible" @choosedUsers="handleUserSelected" :roleIds="roleIds"
:Single="true" />
</template>
<script setup>
@ -24,10 +29,16 @@ import * as MOSTY from "@/components/MyComponents/index";
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
import emitter from "@/utils/eventBus.js";
import FormMessage from "@/components/aboutTable/FormMessage.vue";
import { onMounted, reactive, ref ,getCurrentInstance} from 'vue';
import { onMounted, reactive, ref, getCurrentInstance,onUnmounted } from 'vue';
const props = defineProps({
lx: {
type: String,
default: '01'
}
})
const emit = defineEmits(['change'])
const { proxy } = getCurrentInstance();
const { D_BZ_SF ,D_YJXX_CZCSLX,D_YJXX_CZSSXZ,D_YJXX_CKCZJG,D_YJXX_CKZYLX } = proxy.$dict('D_YJXX_CKZYLX','D_BZ_SF','D_YJXX_CZCSLX','D_YJXX_CZSSXZ','D_YJXX_CKCZJG')
const { D_BZ_SF, D_YJXX_CZCSLX, D_YJXX_CZSSXZ, D_YJXX_CKCZJG, D_YJXX_CKZYLX } = proxy.$dict('D_YJXX_CKZYLX', 'D_BZ_SF', 'D_YJXX_CZCSLX', 'D_YJXX_CZSSXZ', 'D_YJXX_CKCZJG')
const chooseUserVisible = ref(false)
const roleIds = ref([])
const elform = ref()
@ -36,43 +47,43 @@ const loading = ref(false)
const choosetype = ref('')
const listQuery = ref({})
const formData = ref([
{ label: "发现目标状态", prop: "mbzt", type: "select",options: D_BZ_SF },
{ label: "发现目标责任单位", prop: "mbzrdwdm", type: "department" ,depMc:'mbzrdw'},
{ label: "发现目标责任民警", prop: "mbzrmjxm", type: "slot"},
{ label: "是否本人", prop: "sfbr", type: "select",options: D_BZ_SF },
{ label: "发现目标状态", prop: "mbzt", type: "select", options: D_BZ_SF },
{ label: "发现目标责任单位", prop: "mbzrdwdm", type: "department", depMc: 'mbzrdw' },
{ label: "发现目标责任民警", prop: "mbzrmjxm", type: "slot" },
{ label: "是否本人", prop: "sfbr", type: "select", options: D_BZ_SF },
{ label: "处置时间", prop: "czsj", type: "datetime" },
{ label: "处置地址", prop: "czdz", type: "textarea",width:'100%'},
{ label: "详细地址", prop: "xxdz", type: "textarea",width:'100%' },
{ label: "处置责任单位", prop: "czzrdwdm", type: "department",depMc:'czzrdw' },
{ label: "处置地址", prop: "czdz", type: "textarea", width: '100%' },
{ label: "详细地址", prop: "xxdz", type: "textarea", width: '100%' },
{ label: "处置责任单位", prop: "czzrdwdm", type: "department", depMc: 'czzrdw' },
{ label: "处置责任民警", prop: "czzrmj", type: "slot" },
{ label: "常控处置措施类型", prop: "ckczcslx", type: "select" ,options: D_YJXX_CZCSLX},
{ label: "常控处置措施细类", prop: "ckczcsxl", type: "select",options: D_YJXX_CZSSXZ},
{ label: "常控处置结果", prop: "ckczjg", type: "select",options: D_YJXX_CKCZJG },
{ label: "常控处置措施类型", prop: "ckczcslx", type: "select", options: D_YJXX_CZCSLX },
{ label: "常控处置措施细类", prop: "ckczcsxl", type: "select", options: D_YJXX_CZSSXZ },
{ label: "常控处置结果", prop: "ckczjg", type: "select", options: D_YJXX_CKCZJG },
{ label: "常控立线侦察评估", prop: "cklxzcpg", type: "input" },
{ label: "常控立线侦察依据", prop: "cklxzcpgyj", type: "input" },
{ label: "常控从事职业类型", prop: "ckzylx", type: "select",options: D_YJXX_CKZYLX },
{ label: "是否尿检", prop: "sfnj", type: "radio",options: D_BZ_SF },
{ label: "常控不尿检理由", prop: "ckbnjly", type: "textarea",width:'100%' },
{ label: "常控处置反馈补充信息", prop: "ckczbcxx", type: "textarea",width:'100%' },
{ label: "常控从事职业类型", prop: "ckzylx", type: "select", options: D_YJXX_CKZYLX },
{ label: "是否尿检", prop: "sfnj", type: "radio", options: D_BZ_SF },
{ label: "常控不尿检理由", prop: "ckbnjly", type: "textarea", width: '100%' },
{ label: "常控处置反馈补充信息", prop: "ckczbcxx", type: "textarea", width: '100%' },
])
const rules = reactive({
mbzt: [{ required: true, message: "请选择发现目标状态", trigger: "change" }],
fxmbzedw: [{ required: true, message: "请选择发现目标责任单位", trigger: "change" }],
mbzrmjxm: [{ required: true, message: "请选择发现目标责任民警", trigger: "change" }],
sfbr:[{ required: true, message: "请选择是否本人", trigger: "change" }],
czsj:[{ required: true, message: "请选择处置时间", trigger: "change" }],
czdz:[{ required: true, message: "请选择处置地址", trigger: "blur" }],
xxdz:[{ required: true, message: "请选择详细地址", trigger: "blur" }],
czzrdwdm:[{ required: true, message: "请选择处置责任单位", trigger: "change" }],
czzrmj:[{ required: true, message: "请选择处置责任民警", trigger: "change" }],
ckczcslx:[{ required: true, message: "请选择常控处置措施类型", trigger: "change" }],
ckczcsxl:[{ required: true, message: "请选择常控处置措施细类", trigger: "change" }],
ckczjg:[{ required: true, message: "请输入常控处置结果", trigger: "blur" }],
cklxzcpg:[{ required: true, message: "请输入常控立线侦察评估", trigger: "blur" }],
cklxzcpgyj:[{ required: true, message: "请输入常控立线侦察依据", trigger: "blur" }],
ckzylx:[{ required: true, message: "请选择常控从事职业类型", trigger: "change" }],
sfnj:[{ required: true, message: "请选择是否尿检", trigger: "change" }],
sfbr: [{ required: true, message: "请选择是否本人", trigger: "change" }],
czsj: [{ required: true, message: "请选择处置时间", trigger: "change" }],
czdz: [{ required: true, message: "请选择处置地址", trigger: "blur" }],
xxdz: [{ required: true, message: "请选择详细地址", trigger: "blur" }],
czzrdwdm: [{ required: true, message: "请选择处置责任单位", trigger: "change" }],
czzrmj: [{ required: true, message: "请选择处置责任民警", trigger: "change" }],
ckczcslx: [{ required: true, message: "请选择常控处置措施类型", trigger: "change" }],
ckczcsxl: [{ required: true, message: "请选择常控处置措施细类", trigger: "change" }],
ckczjg: [{ required: true, message: "请输入常控处置结果", trigger: "blur" }],
cklxzcpg: [{ required: true, message: "请输入常控立线侦察评估", trigger: "blur" }],
cklxzcpgyj: [{ required: true, message: "请输入常控立线侦察依据", trigger: "blur" }],
ckzylx: [{ required: true, message: "请选择常控从事职业类型", trigger: "change" }],
sfnj: [{ required: true, message: "请选择是否尿检", trigger: "change" }],
})
const title = ref('')
@ -80,31 +91,46 @@ onMounted(() => {
emitter.on("openFkDialog", (val) => {
showDialog.value = true;
listQuery.value = { yjid: val.id }
let url = ''
console.log(url);
switch (props.lx) {
case '01':
url = '/mosty-gsxt/tbYjxx/getInfo/'
break;
case '02':
url = '/mosty-gsxt/yjzxXwyj/'
break;
case '03':
url = '/mosty-gsxt/yjzxSfyj/'
break;
case '04':
url = '/mosty-gsxt/yjzxZhyj/'
break;
}
title.value = val.type;
if(val.type == '查看反馈'){
qcckGet({}, "/mosty-gsxt/tbYjxx/getInfo/"+val.id).then((res) => {
if (val.type == '查看反馈') {
qcckGet({}, url + val.id).then((res) => {
let list = res.fkList || []
listQuery.value = list.length > 0 ? list[0] : {};
listQuery.value = list.length > 0 ? list[0] : {};
});
}
})
})
const handleChoose = (type)=>{
const handleChoose = (type) => {
chooseUserVisible.value = true,
choosetype.value = type;
choosetype.value = type;
}
// 选取角色
const handleUserSelected = (val) => {
switch(choosetype.value){
switch (choosetype.value) {
case 'mbzrmjxm':
listQuery.value.mbzrmjxm = val[0].userName
listQuery.value.mbzrmjsfzh = val[0].inDustRialId
break;
case 'czzrmj':
case 'czzrmj':
listQuery.value.czzrmj = val[0].userName
listQuery.value.czzrmjsfzh = val[0].inDustRialId
break;
@ -112,13 +138,28 @@ const handleUserSelected = (val) => {
}
const submitForm = () =>{
elform.value.submit((val)=>{
loading.value = true;
const prome = {
...listQuery.value,
const submitForm = () => {
elform.value.submit((val) => {
loading.value = true;
const prome = {
...listQuery.value,
}
qcckPost(prome, "/mosty-gsxt/tbYjxx/yjfk").then(() => {
let url = ''
switch (props.lx) {
case '01':
url = '/mosty-gsxt/tbYjxx/yjfk'
break;
case '02':
url = '/mosty-gsxt/yjzxXwyj/yjfk'
break;
case '03':
url = '/mosty-gsxt/yjzxSfyj/yjfk'
break;
case '04':
url = '/mosty-gsxt/yjzxZhyj/yjfk'
break;
}
qcckPost(prome, url).then(() => {
loading.value = false;
proxy.$message({ type: "success", message: "反馈成功" });
emit('change')
@ -134,12 +175,16 @@ const close = () => {
listQuery.value = {}
showDialog.value = false;
}
onUnmounted(() => {
emitter.off("openFkDialog")
})
</script>
<style lang="scss" scoped>
.el-form{
max-height: 60vh;
overflow: hidden;
overflow-y: auto;
.el-form {
max-height: 60vh;
overflow: hidden;
overflow-y: auto;
}
</style>

View File

@ -0,0 +1,57 @@
<template>
<el-dialog :title="`组合预警次数详情(${pageData.tableData.length}`" v-model="dialogVisible" width="60%">
<MyTable
:tableData="pageData.tableData"
:tableColumn="pageData.tableColumn"
:tableHeight="pageData.tableHeight"
:key="pageData.keyCount"
:tableConfiger="pageData.tableConfiger"
>
</MyTable>
</el-dialog>
</template>
<script setup>
import { qcckGet } from "@/api/qcckApi.js";
import MyTable from "@/components/aboutTable/MyTable.vue";
import { ref , reactive , defineExpose} from 'vue'
const dialogVisible = ref(false)
const pageData = reactive({
tableData: [{jqbh:'JQBH-43',bjr:'张三',bjrdh:'15665255545',bjrsfzh:'510156565656525565',yjnr:'xxxxxxxxx',jsj:'2023-08-24 15:00:00'}], //表格数据
keyCount: 0,
tableConfiger: {
rowHieght: 61,
loading: false,
haveControls: false,
},
tableHeight:600,
total: 0,
pageConfiger: {
pageSize: 20,
pageCurrent: 1
}, //分页
tableColumn: [
{ label: "警情编号", prop: "jjdbh"},
{ label: "报警人", prop: "bjrmc" },
{ label: "报警人电话", prop: "bjdh" },
{ label: "报警人身份证", prop: "bjrzjhm"},
{ label: "预警内容", prop: "bjnr", showOverflowTooltip: true },
{ label: "报警时间", prop: "bjsj", showOverflowTooltip: true },
]
});
const init = (row) => {
dialogVisible.value = true;
pageData.tableConfiger.loading = true;
pageData.tableData = []
qcckGet({yjid:row.id},'/mosty-gsxt/yjzxZhyjxq/getPageList').then((res)=>{
pageData.tableData = res || [];
pageData.tableConfiger.loading = false;
}).catch(()=>{
pageData.tableConfiger.loading = false;
})
}
defineExpose({
init
})
</script>

View File

@ -13,26 +13,40 @@
</div>
<!-- 表格 -->
<div class="tabBox">
<MyTable
:tableData="pageData.tableData"
:tableColumn="pageData.tableColumn"
:tableHeight="pageData.tableHeight"
:key="pageData.keyCount"
:tableConfiger="pageData.tableConfiger"
:controlsWidth="pageData.controlsWidth"
>
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
<template #sfcs="{ row }">
<span style="color: #0072ff;" @click="handleClick(row)">{{ row.sfcs }}</span>
</template>
<template #bqys="{ row }">
<DictTag :value="row.bqys" :tag="false" :color="bqYs(row.bqys)" :options="D_GS_SSYJ" />
</template>
<template #czzt="{ row }">
<DictTag :value="row.czzt" :options="D_GSXT_YJXX_CZZT" />
</template>
<template #controls="{ row }">
<el-link type="warning" @click="pushAssess(row)">全息档案</el-link>
<el-link type="primary" @click="showDetail(row)">转合成</el-link>
<el-link type="danger" @click="delDictItem(row.id)">转会商</el-link>
<el-link type="success" @click="handleQsFk(row, '签收')" v-if="row.czzt == '01'">签收</el-link>
<el-link type="success" @click="handleQsFk(row, '反馈')" v-else-if="row.czzt == '02'">反馈</el-link>
<el-link type="success" @click="handleQsFk(row, '查看反馈')" v-else>查看反馈</el-link>
<el-link type="primary" @click="delDictItem(row.id)">详情</el-link>
</template>
</MyTable>
<Pages
@changeNo="changeNo"
@changeSize="changeSize"
:tableHeight="pageData.tableHeight"
:pageConfiger="{
...pageData.pageConfiger,
total: pageData.total
}"
></Pages>
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
...pageData.pageConfiger,
total: pageData.total
}"></Pages>
</div>
</div>
<Detail ref="detailRef" />
<HolographicArchive v-model="assessShow" :dataList="dataList" />
<FkDialog @change="getList" lx="04" />
<Information v-model="showDialog" title="发送指令" @submit='submit' @close='closeFszl'>
<SemdFqzl ref="semdFqzlRef" :itemData="itemData" @handleClose="handleClose" identification="yj"
:tacitly="tacitly" />
</Information>
</template>
<script setup>
@ -40,61 +54,65 @@ import PageTitle from "@/components/aboutTable/PageTitle.vue";
import Search from "@/components/aboutTable/Search.vue";
import MyTable from "@/components/aboutTable/MyTable.vue";
import Pages from "@/components/aboutTable/Pages.vue";
import { qcckGet } from "@/api/qcckApi.js";
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
const { proxy } = getCurrentInstance();
import { tbYjxxGetZbtj, tbGsxtBqzhSelectList } from '@/api/yj.js'
import HolographicArchive from '@/views/home/components/holographicArchive.vue'
import Information from "@/views/home/model/information.vue";
import SemdFqzl from '@/components/instructionHasBeen/sendFqzl.vue'
import FkDialog from "@/views/backOfficeSystem/fourColorManage/warningControl/centerHome/components/fkDialog.vue";
import { reactive, ref, onMounted, getCurrentInstance, watch } from "vue";
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
import Detail from './components/detail.vue'
import emitter from "@/utils/eventBus.js";
const searchBox = ref();
const { proxy } = getCurrentInstance();
const {D_GSXT_YJXX_CZZT} = proxy.$dict("D_GSXT_YJXX_CZZT")
// 搜索配置
const searchConfiger = ref([
{ label: "姓名", prop: 'xm', placeholder: "请输入姓名", showType: "input"},
{ label: "身份证号码", prop: 'sfzh', placeholder: "请输入身份证号码", showType: "input"},
{ label: "预警等级", prop: 'yjdj', placeholder: "请选择预警等级", showType: "select", options: [
{ label: "一级预警", value: "1" },
{ label: "二级预警", value: "2" },
{ label: "三级预警", value: "3" },
{ label: "四级预警", value: "4" }
]},
{ label: "姓名", prop: 'xm', placeholder: "请输入姓名", showType: "input" },
{ label: "身份证号码", prop: 'sfzh', placeholder: "请输入身份证号码", showType: "input" },
]);
const queryFrom = ref({});
// 页面数据
const pageData = reactive({
tableData: [],
tableData: [{ sfcs: 1 }],
keyCount: 0,
tableConfiger: {
rowHieght: 61,
showSelectType: "checkBox",
loading: false,
haveControls: false,
haveControls: true,
},
total: 0,
pageConfiger: {
pageSize: 20,
pageCurrent: 1
},
controlsWidth: 160,
controlsWidth: 300,
tableColumn: [
{ label: "姓名", prop: "xm" },
{ label: "身份证号", prop: "sfzh" },
{ label: "身份证号", prop: "sfzh" },
{ label: "电话", prop: "dh" },
{ label: "组合类", prop: "zhlx" },
{ label: "预警等级", prop: "yjdj" },
{ label: "预警原因", prop: "yjyy", showOverflowTooltip: true },
{ label: "预警时间", prop: "yjsj" },
{ label: "处理状态", prop: "clzt" },
{ label: "组合类", prop: "sfdlmc" },
{ label: "组合小类", prop: "sfzlmc" },
{ label: "组合次数", prop: "sfcs", showSolt: true },
{ label: "标签颜色", prop: "bqys", showSolt: true },
{ label: "预警时间", prop: "yjsj" },
{ label: "预警分值", prop: "sffz" },
{ label: "处置状态", prop: "czzt", showSolt: true },
{ label: "所属县局", prop: "ssbm" },
]
});
onMounted(() => {
tabHeightFn();
getList();
gettbGsxtBqglSelectList()
});
const onSearch = (val) => {
queryFrom.value = {...val};
queryFrom.value = { ...val };
pageData.pageConfiger.pageCurrent = 1;
getList();
};
@ -110,16 +128,102 @@ const changeSize = (val) => {
};
const getList = () => {
// pageData.tableConfiger.loading = true;
pageData.tableConfiger.loading = true;
// TODO: 替换为实际的组合预警API接口
// qcckGet(queryFrom.value, '/mosty-gsxt/combinedWarning/selectPage').then((res) => {
// pageData.tableData = res.records || [];
// pageData.total = res.total || 0;
// pageData.tableConfiger.loading = false;
// }).catch(() => {
// pageData.tableConfiger.loading = false;
// });
tbYjxxGetZbtj(queryFrom.value).then((res) => {
pageData.tableData = res.records || [];
pageData.total = res.total || 0;
pageData.tableConfiger.loading = false;
}).catch(() => {
pageData.tableConfiger.loading = false;
});
};
const bqYs = (val) => {
if (val == '01') {
return '#ff0202'
} else if (val == '02') {
return '#ff8c00'
} else if (val == '03') {
return '#ffff00'
} else if (val == '04') {
return '#0000ff'
}
}
const bqLbData = ref({
bqXl: []
})
const gettbGsxtBqglSelectList = (val) => {
tbGsxtBqzhSelectList({}).then((res) => {
bqLbData.value.bqXl = res.map(item => {
return {
label: item.bqMc,
value: item.bqDm
}
}) || []
})
}
watch(() => bqLbData.value.bqXl, (res) => {
searchConfiger.value.push({
label: "组合标签", prop: 'bqmc', placeholder: "请选择组合标签",
showType: "select", options: res
},)
}, { deep: true, immediate: true })
// 查看详情
const detailRef = ref()
const handleClick = (row) => {
detailRef.value.init(row)
}
const assessShow = ref(false)
const dataList = ref()
const pushAssess = (val) => {
assessShow.value = true;
dataList.value = val;
}
// 发送指令
const showDialog = ref(false)
const itemData = ref()
const showDetail = (item) => {
showDialog.value = true;
itemData.value = item
}
const handleClose = () => {
showDialog.value = false;
}
const semdFqzlRef = ref()
const tacitly = {
title: 'yjbt',
instructionContent: 'yjnr'
}
const submit = () => {
semdFqzlRef.value.getsendFqzl()
}
const closeFszl = () => {
semdFqzlRef.value.close()
}
// 处理签收
const handleQsFk = (val, type) => {
switch (type) {
case '签收':
proxy.$confirm("是否确定要签收?", "警告", { type: "warning" }).then(() => {
qcckPost({ id: val.id }, "/mosty-gsxt/yjzxZhyj/yjqs").then(() => {
val.czzt = '02'
getList()
proxy.$message({ type: "success", message: "签收成功" });
});
})
break;
case '反馈':
case '查看反馈':
emitter.emit("openFkDialog", { id: val.id, type });
break;
}
}
// 表格高度计算
const tabHeightFn = () => {

View File

@ -0,0 +1,57 @@
<template>
<el-dialog :title="`组合预警次数详情(${pageData.tableData.length}`" v-model="dialogVisible" width="60%">
<MyTable
:tableData="pageData.tableData"
:tableColumn="pageData.tableColumn"
:tableHeight="pageData.tableHeight"
:key="pageData.keyCount"
:tableConfiger="pageData.tableConfiger"
>
</MyTable>
</el-dialog>
</template>
<script setup>
import { qcckGet } from "@/api/qcckApi.js";
import MyTable from "@/components/aboutTable/MyTable.vue";
import { ref , reactive , defineExpose} from 'vue'
const dialogVisible = ref(false)
const pageData = reactive({
tableData: [{jqbh:'JQBH-43',bjr:'张三',bjrdh:'15665255545',bjrsfzh:'510156565656525565',yjnr:'xxxxxxxxx',jsj:'2023-08-24 15:00:00'}], //表格数据
keyCount: 0,
tableConfiger: {
rowHieght: 61,
loading: false,
haveControls: false,
},
tableHeight:600,
total: 0,
pageConfiger: {
pageSize: 20,
pageCurrent: 1
}, //分页
tableColumn: [
{ label: "警情编号", prop: "jjdbh"},
{ label: "报警人", prop: "bjrmc" },
{ label: "报警人电话", prop: "bjdh" },
{ label: "报警人身份证", prop: "bjrzjhm"},
{ label: "预警内容", prop: "bjnr", showOverflowTooltip: true },
{ label: "报警时间", prop: "bjsj", showOverflowTooltip: true },
]
});
const init = (row) => {
dialogVisible.value = true;
pageData.tableConfiger.loading = true;
pageData.tableData = []
qcckGet({yjid:row.id},'/mosty-gsxt/yjzxSfyjxq/selectList').then((res)=>{
pageData.tableData = res || [];
pageData.tableConfiger.loading = false;
}).catch(()=>{
pageData.tableConfiger.loading = false;
})
}
defineExpose({
init
})
</script>

View File

@ -9,34 +9,56 @@
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount">
<template #defaultSlot>
<el-select @change="gettbGsxtBqglSelectList" v-model="queryFrom.sfdl" placeholder="请选择身份类型"
style="width: 100%">
<el-option :label="item.label" :value="item.value" v-for="(item, index) in bqLbData.bqDl" :key="index" />
</el-select>
</template>
<template #nameSlot>
<el-select v-model="queryFrom.sfxl" placeholder="请选择身份类型" style="width: 100%">
<el-option :label="item.label" :value="item.value" v-for="(item, index) in bqLbData.bqXl" :key="index" />
</el-select>
</template>
</Search>
</div>
<!-- 表格 -->
<div class="tabBox">
<MyTable
:tableData="pageData.tableData"
:tableColumn="pageData.tableColumn"
:tableHeight="pageData.tableHeight"
:key="pageData.keyCount"
:tableConfiger="pageData.tableConfiger"
:controlsWidth="pageData.controlsWidth"
>
<template #controls="{ row }">
<el-link type="primary">下发指令</el-link>
<el-link type="success">查看反馈</el-link>
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
<template #sfcs="{ row }">
<span style="color: #0072ff;" @click="handleClick(row)">{{ row.sfcs }}</span>
</template>
<template #bqys="{ row }">
<DictTag :value="row.bqys" :tag="false" :color="bqYs(row.bqys)" :options="D_GS_SSYJ" />
</template>
<template #czzt="{ row }">
<DictTag :value="row.czzt" :options="D_GSXT_YJXX_CZZT" />
</template>
<template #controls="{ row }">
<el-link type="warning" @click="pushAssess(row)">全息档案</el-link>
<el-link type="primary" @click="showDetail(row)">转合成</el-link>
<el-link type="danger" @click="handleQsFk(row)">转会商</el-link>
<el-link type="success" @click="handleQsFk(row, '签收')" v-if="row.czzt == '01'">签收</el-link>
<el-link type="success" @click="handleQsFk(row, '反馈')" v-else-if="row.czzt == '02'">反馈</el-link>
<el-link type="success" @click="handleQsFk(row, '查看反馈')" v-else>查看反馈</el-link>
<el-link type="primary" @click="delDictItem(row.id)">详情</el-link>
</template>
</MyTable>
<Pages
@changeNo="changeNo"
@changeSize="changeSize"
:tableHeight="pageData.tableHeight"
:pageConfiger="{
...pageData.pageConfiger,
total: pageData.total
}"
></Pages>
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
...pageData.pageConfiger,
total: pageData.total
}"></Pages>
</div>
</div>
<Detail ref="detailRef" />
<HolographicArchive v-model="assessShow" :dataList="dataList" />
<FkDialog @change="getList" lx="03" />
<Information v-model="showDialog" title="发送指令" @submit='submit' @close='closeFszl'>
<SemdFqzl ref="semdFqzlRef" :itemData="itemData" @handleClose="handleClose" identification="yj"
:tacitly="tacitly" />
</Information>
</template>
<script setup>
@ -44,22 +66,26 @@ import PageTitle from "@/components/aboutTable/PageTitle.vue";
import Search from "@/components/aboutTable/Search.vue";
import MyTable from "@/components/aboutTable/MyTable.vue";
import Pages from "@/components/aboutTable/Pages.vue";
import { qcckGet } from "@/api/qcckApi.js";
import HolographicArchive from '@/views/home/components/holographicArchive.vue'
import Information from "@/views/home/model/information.vue";
import SemdFqzl from '@/components/instructionHasBeen/sendFqzl.vue'
import FkDialog from "@/views/backOfficeSystem/fourColorManage/warningControl/centerHome/components/fkDialog.vue";
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
import { yjzxSfyjSelectList } from "@/api/yj.js";
import { tbGsxtBqglSelectList } from '@/api/zdr'
import Detail from './components/detail.vue'
import { watch } from "vue";
import emitter from "@/utils/eventBus.js";
const { proxy } = getCurrentInstance();
const searchBox = ref();
const {D_GSXT_YJXX_CZZT} = proxy.$dict("D_GSXT_YJXX_CZZT")
// 搜索配置
const searchConfiger = ref([
{ label: "姓名", prop: 'xm', placeholder: "请输入姓名", showType: "input"},
{ label: "身份证号码", prop: 'sfzh', placeholder: "请输入身份证号码", showType: "input"},
{ label: "身份类型", prop: 'sflx', placeholder: "请选择身份类型", showType: "select", options: [
{ label: "重点人员", value: "1" },
{ label: "在逃人员", value: "2" },
{ label: "涉毒人员", value: "3" },
{ label: "涉恐人员", value: "4" }
]},
{ label: "姓名", prop: 'xm', placeholder: "请输入姓名", showType: "input" },
{ label: "身份证号码", prop: 'sfzh', placeholder: "请输入身份证号码", showType: "input" },
{ label: "标签大类", prop: 'sflx', placeholder: "请选择标签大类", showType: "defaultSlot" },
{ label: "标签小类", prop: 'bqxl', placeholder: "请选择标签小类", showType: "nameSlot" },
]);
const queryFrom = ref({});
@ -72,33 +98,37 @@ const pageData = reactive({
rowHieght: 61,
showSelectType: "checkBox",
loading: false,
// haveControls: false,
haveControls: true,
},
total: 0,
pageConfiger: {
pageSize: 20,
pageCurrent: 1
},
controlsWidth: 160,
controlsWidth: 300, //操作栏宽度
tableColumn: [
{ label: "姓名", prop: "xm",},
{ label: "身份证号", prop: "sfzh", },
{ label: "电话", prop: "dh", },
{ label: "身份类型", prop: "sflx",},
{ label: "身份等级", prop: "sfdj",},
{ label: "预警原因", prop: "yjyy", showOverflowTooltip: true },
{ label: "预警时间", prop: "yjsj",},
{ label: "处理状态", prop: "clzt",},
{ label: "姓名", prop: "xm" },
{ label: "身份证号", prop: "sfzh" },
{ label: "电话", prop: "dh" },
{ label: "组合大类", prop: "sfdlmc" },
{ label: "组合小类", prop: "sfzlmc" },
{ label: "组合次数", prop: "sfcs", showSolt: true },
{ label: "标签颜色", prop: "bqys", showSolt: true },
{ label: "预警时间", prop: "yjsj" },
{ label: "预警分值", prop: "sffz" },
{ label: "处置状态", prop: "czzt", showSolt: true },
{ label: "所属县局", prop: "ssbm" },
]
});
onMounted(() => {
gettbGsxtBqglSelectList()
tabHeightFn();
getList();
});
const onSearch = (val) => {
queryFrom.value = {...val};
queryFrom.value = { ...val, ...queryFrom.value };
pageData.pageConfiger.pageCurrent = 1;
getList();
};
@ -114,17 +144,118 @@ const changeSize = (val) => {
};
const getList = () => {
// pageData.tableConfiger.loading = true;
pageData.tableConfiger.loading = true;
// TODO: 替换为实际的身份预警API接口
// qcckGet(queryFrom.value, '/mosty-gsxt/identityWarning/selectPage').then((res) => {
// pageData.tableData = res.records || [];
// pageData.total = res.total || 0;
// pageData.tableConfiger.loading = false;
// }).catch(() => {
// pageData.tableConfiger.loading = false;
// });
yjzxSfyjSelectList(queryFrom.value).then((res) => {
pageData.tableData = res.records || [];
pageData.total = res.total || 0;
pageData.tableConfiger.loading = false;
}).catch(() => {
pageData.tableConfiger.loading = false;
});
};
// 标签
const bqLbData = ref({
bqDl: [],
bqXl: []
})
const gettbGsxtBqglSelectList = (val) => {
const promes = {
bqLx: '01',
bqLb: val ? '02' : "01",
bqDlId: val ? bqLbData.value.bqDl.find(item => item.value == val)?.id : ""
}
tbGsxtBqglSelectList(promes).then((res) => {
if (val) {
queryFrom.value.bqxl = ''
bqLbData.value.bqXl = res.data ? res.data.map(item => {
return {
label: item.bqMc,
value: item.bqDm,
}
}) : []
} else {
bqLbData.value.bqDl = res ? res.map(item => {
return {
label: item.bqMc,
value: item.bqDm,
id: item.id
}
}) : []
}
})
}
watch(() => bqLbData.value.bqXl, (res) => {
bqLbData.value.bqXl = res
}, { deep: true })
// 查看详情
const detailRef = ref()
const handleClick = (row) => {
detailRef.value.init(row)
}
// 处理签收
const handleQsFk = (val, type) => {
switch (type) {
case '签收':
proxy.$confirm("是否确定要签收?", "警告", { type: "warning" }).then(() => {
qcckPost({ id: val.id }, "/mosty-gsxt//yjzxSfyj/yjqs").then(() => {
val.czzt = '02'
getList()
proxy.$message({ type: "success", message: "签收成功" });
});
})
break;
case '反馈':
case '查看反馈':
emitter.emit("openFkDialog", { id: val.id, type });
break;
}
}
// 全息档案
const assessShow = ref(false)
const dataList = ref()
const pushAssess = (val) => {
assessShow.value = true;
dataList.value = val;
}
// 发送指令
const showDialog = ref(false)
const itemData = ref()
const showDetail = (item) => {
showDialog.value = true;
itemData.value = item
}
const handleClose = () => {
showDialog.value = false;
}
const semdFqzlRef = ref()
const tacitly = {
title: 'yjbt',
instructionContent: 'yjnr'
}
const submit = () => {
semdFqzlRef.value.getsendFqzl()
}
const closeFszl = () => {
semdFqzlRef.value.close()
}
const bqYs = (val) => {
if (val == '01') {
return '#ff0202'
} else if (val == '02') {
return '#ff8c00'
} else if (val == '03') {
return '#ffff00'
} else if (val == '04') {
return '#0000ff'
}
}
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;

View File

@ -110,15 +110,15 @@ const changeSize = (val) => {
};
const getList = () => {
// pageData.tableConfiger.loading = true;
pageData.tableConfiger.loading = true;
// TODO: 替换为实际的身份预警API接口
// qcckGet(queryFrom.value, '/mosty-gsxt/identityWarning/selectPage').then((res) => {
// pageData.tableData = res.records || [];
// pageData.total = res.total || 0;
// pageData.tableConfiger.loading = false;
// }).catch(() => {
// pageData.tableConfiger.loading = false;
// });
qcckGet(queryFrom.value, '/mosty-gsxt/identityWarning/selectPage').then((res) => {
pageData.tableData = res.records || [];
pageData.total = res.total || 0;
pageData.tableConfiger.loading = false;
}).catch(() => {
pageData.tableConfiger.loading = false;
});
};
// 表格高度计算
@ -134,4 +134,4 @@ const tabHeightFn = () => {
.el-loading-mask {
background: rgba(0, 0, 0, 0.5) !important;
}
</style>
</style>

View File

@ -20,8 +20,6 @@
</div>
</template>
</el-image>
<!-- <el-image :preview-teleported="true" style="width: 80px; height: 110px" :src="row.yjTp"
:preview-src-list="[row.yjTp]" /> -->
</template>
<template #nl="{ row }">
{{ IdCard(row.yjRysfzh, 3) }}
@ -30,12 +28,27 @@
{{ IdCard(row.yjRysfzh, 2) }}
</template>
<template #xsd="{ row }">
90%
{{ row.xsd }}%
</template>
<template #czzt="{ row }">
<DictTag v-model:value="row.czzt" :options="props.dict.D_GSXT_YJXX_CZZT" />
</template>
<template #yjJb="{ row }">
<DictTag v-model:value="row.yjJb" :options="props.dict.D_BZ_YJJB" />
</template>
<!-- 操作 -->
<template #controls="{ row }">
<el-link type="danger" @click="delDictItem(row.id)">删除</el-link>
<el-link type="warning" @click="pushAssess(row)">全息档案</el-link>
<el-link type="primary" @click="showDetail(row)">转合成</el-link>
<el-link type="danger" @click="delDictItem(row.id)">转会商</el-link>
<el-link type="success" @click="handleQsFk(row, '签收')" v-if="row.czzt == '01'">签收</el-link>
<el-link type="success" @click="handleQsFk(row, '反馈')" v-else-if="row.czzt == '02'">反馈</el-link>
<el-link type="success" @click="handleQsFk(row, '查看反馈')" v-else>查看反馈</el-link>
<el-link type="primary" @click="delDictItem(row.id)">详情</el-link>
</template>
<!-- <el-button type="success" @click="showFeedback(item, '签收')" v-if="item.czzt == '01'">签收</el-button>
<el-button type="success" @click="showFeedback(item, '反馈')" v-if="item.czzt == '02'">反馈</el-button>
<el-button type="success" @click="showFeedback(item, '查看反馈')" v-if="item.czzt == '03'">查看反馈</el-button> -->
</MyTable>
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
...pageData.pageConfiger,
@ -44,19 +57,33 @@
</div>
</div>
<HolographicArchive v-model="assessShow" :dataList="dataList" />
<FkDialog @change="getList" />
<Information v-model="showDialog" title="发送指令" @submit='submit' @close='closeFszl'>
<SemdFqzl ref="semdFqzlRef" :itemData="itemData" @handleClose="handleClose" identification="yj"
:tacitly="tacitly" />
</Information>
</template>
<script setup>
import MyTable from "@/components/aboutTable/MyTable.vue";
import Pages from "@/components/aboutTable/Pages.vue";
import { qcckGet, qcckPost, qcckDelete } from "@/api/qcckApi.js";
import { IdCard } from '@/utils/validate.js'
import { tbYjxxGetPageList } from '@/api/yj.js'
import { reactive, ref, onMounted, getCurrentInstance, nextTick } from "vue";
import HolographicArchive from '@/views/home/components/holographicArchive.vue'
import Information from "@/views/home/model/information.vue";
import SemdFqzl from '@/components/instructionHasBeen/sendFqzl.vue'
import FkDialog from "@/views/backOfficeSystem/fourColorManage/warningControl/centerHome/components/fkDialog.vue";
import emitter from "@/utils/eventBus.js";
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
const { proxy } = getCurrentInstance();
const detailDiloag = ref();
const queryFrom = ref({});
const props = defineProps({
dict: {
type: Object,
default: {}
}
});
const pageData = reactive({
tableData: [], //表格数据
keyCount: 0,
@ -64,7 +91,7 @@ const pageData = reactive({
rowHieght: 61,
showSelectType: "null",
loading: false,
haveControls: false
haveControls: true
},
total: 0,
@ -72,20 +99,26 @@ const pageData = reactive({
pageSize: 20,
pageCurrent: 1
}, //分页
controlsWidth: 160, //操作栏宽度
controlsWidth: 300, //操作栏宽度
tableColumn: [
{ label: "预警图片", prop: "yjTp", showSolt: true },
{ label: "姓名", prop: "yjRyxm" },
{ label: "姓名", prop: "yjRyxm", width: 150, showOverflowTooltip: true },
{ label: "年龄", prop: "nl", showSolt: true },
{ label: "性别", prop: "xb", showSolt: true },
{ label: "预警级别", prop: "yjJb" },
{ label: "性别", prop: "xb", showSolt: true, width: 100 },
{ label: "预警级别", prop: "yjJb", showSolt: true },
{ label: "相似度", prop: "xsd", showSolt: true },
{ label: "预警时间", prop: "yjSj", showOverflowTooltip: true },
{ label: "预警地点", prop: "yjDz", showOverflowTooltip: true },
{ label: "预警时间", prop: "yjSj", showOverflowTooltip: true, width: 200 },
{ label: "预警地点", prop: "yjDz", showOverflowTooltip: true, width: 200 },
{ label: "预警次数", prop: "yjCs", showOverflowTooltip: true },
{ label: "布控手机号", prop: "yjRysjh", showOverflowTooltip: true },
{ label: "布控车牌号", prop: "yjClcph", showOverflowTooltip: true },
{ label: "身份证", prop: "yjRysfzh", showOverflowTooltip: true },
{ label: "处置状态", prop: "czzt", showSolt: true, width: 100 },
{ label: "布控手机号", prop: "yjRysjh", showOverflowTooltip: true, width: 100 },
{ label: "布控车牌号", prop: "yjClcph", showOverflowTooltip: true, width: 100 },
{ label: "身份证", prop: "yjRysfzh", showOverflowTooltip: true, width: 200 },
{ label: "预警标签", prop: "yjbqmc", width: 250 },
{ label: "所属部门", prop: "ssbm", width: 100 },
{ label: "所属县局", prop: "ssxgaj", width: 100 },
{ label: "所属市局", prop: "sssgaj", width: 100 },
]
});
@ -96,12 +129,6 @@ const pageData = reactive({
onMounted(() => {
tabHeightFn();
getList()
@ -131,10 +158,55 @@ const getList = (val) => {
pageData.tableConfiger.loading = false;
})
}
// 全息档案
const assessShow = ref(false)
const dataList = ref()
const pushAssess = (val) => {
assessShow.value = true;
dataList.value = val;
}
// 处理签收
const handleQsFk = (val, type) => {
switch (type) {
case '签收':
proxy.$confirm("是否确定要签收?", "警告", { type: "warning" }).then(() => {
qcckPost({ id: val.id }, "/mosty-gsxt/tbYjxx/yjqs").then(() => {
val.czzt = '02'
getList()
proxy.$message({ type: "success", message: "签收成功" });
});
})
break;
case '反馈':
case '查看反馈':
emitter.emit("openFkDialog", { id: val.id, type });
break;
}
}
// 发送指令
const showDialog = ref(false)
const itemData = ref()
const showDetail = (item) => {
showDialog.value = true;
itemData.value = item
}
const handleClose = () => {
showDialog.value = false;
}
const semdFqzlRef = ref()
const tacitly = {
title: 'yjbt',
instructionContent: 'yjnr'
}
const submit = () => {
semdFqzlRef.value.getsendFqzl()
}
const closeFszl = () => {
semdFqzlRef.value.close()
}
function close() {
}
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - 430;

View File

@ -6,7 +6,7 @@
<!-- 搜索 -->
<div ref="searchBox" class="searchBox">
<el-form :model="listQuery" label-width="auto" :inline="true" ref="searchArr">
<el-form-item label="布控类型" prop="yjlx" >
<el-form-item label="布控类型" prop="yjlx">
<el-select v-model="listQuery.yjlx" placeholder="请选择预警类型">
<el-option v-for="item in D_BZ_YJLX" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
@ -31,10 +31,11 @@
</div>
<!-- 表格 -->
<div class="tabBox" :style="{ height: pageData.tableHeight + 'px' }">
<el-tabs v-model="activeName" type="card" class="demo-tabs" @tab-click="handleClick" style="position: relative;z-index: 1;">
<el-tabs v-model="activeName" type="card" class="demo-tabs" @tab-click="handleClick"
style="position: relative;z-index: 1;">
<el-tab-pane label="本地预警" name="local">
<div style="padding:0 10px;"> <el-button type="primary" @click="exportExcel">导出</el-button></div>
<LocalWarning ref="localWarningRef" />
<LocalWarning ref="localWarningRef" :dict="{D_GSXT_YJXX_CZZT, D_BZ_YJJB}"/>
</el-tab-pane>
<el-tab-pane label="区厅预警" name="district">区厅预警</el-tab-pane>
</el-tabs>
@ -45,27 +46,33 @@
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
<template #yjTp="{ row }">
<template v-if="!row.yjTp || row.yjTp.includes('baidu')">
<img src="@/assets/images/car.png" width="65" height="70" v-if="row.yjLx == 2" />
<img src="@/assets/images/default_male.png" width="65" height="70" v-else />
<img src="@/assets/images/car.png" width="65" height="70" v-if="row.yjLx == 2" />
<img src="@/assets/images/default_male.png" width="65" height="70" v-else />
</template>
<el-image v-else style="width: 80px; height:120px" :src="row.yjTp" :preview-src-list="[row.yjTp]" show-progress>
<template #error>
<div class="image-slot error">
<img src="@/assets/images/car.png" width="65" height="70" v-if="row.yjLx == 2" />
<img src="@/assets/images/default_male.png" width="65" height="70" v-else />
</div>
</template>
<el-image v-else style="width: 80px; height:120px" :src="row.yjTp" :preview-src-list="[row.yjTp]"
show-progress>
<template #error>
<div class="image-slot error">
<img src="@/assets/images/car.png" width="65" height="70" v-if="row.yjLx == 2" />
<img src="@/assets/images/default_male.png" width="65" height="70" v-else />
</div>
</template>
</el-image>
</el-image>
</template>
<template #nl="{ row }">
{{ IdCard(row.yjRysfzh, 3) }}
</template>
<template #xb="{ row }">
{{ IdCard(row.yjRysfzh, 2) }}
</template>
<template #czzt="{ row }">
<DictTag v-model:value="row.czzt" :options="D_GSXT_YJXX_CZZT" />
</template>
<template #yjJb="{ row }">
<DictTag v-model:value="row.yjJb" :options="D_BZ_YJJB" />
</template>
<template #xsd="{ row }">
90%
{{ row.xsd }}%
</template>
<!-- 操作 -->
</MyTable>
@ -94,7 +101,7 @@ import { reactive, ref, onMounted, getCurrentInstance, nextTick } from "vue";
import FileSaver from "file-saver";
import * as XLSX from "xlsx";
const { proxy } = getCurrentInstance();
const { D_BZ_YJLX } = proxy.$dict("D_BZ_YJLX")
const { D_BZ_YJLX, D_GSXT_YJXX_CZZT, D_BZ_YJJB } = proxy.$dict("D_BZ_YJLX", "D_GSXT_YJXX_CZZT","D_BZ_YJJB")
const searchBox = ref(); //搜索框
const form = ref({});
const shortcuts = [
@ -148,7 +155,7 @@ const pageData = reactive({
{ label: "姓名", prop: "yjRyxm" },
{ label: "年龄", prop: "nl", showSolt: true },
{ label: "性别", prop: "xb", showSolt: true },
{ label: "预警级别", prop: "yjJb" },
{ label: "预警级别", prop: "yjJb", showSolt: true },
{ label: "相似度", prop: "xsd", showSolt: true },
{ label: "预警时间", prop: "yjSj", showOverflowTooltip: true },
{ label: "预警地点", prop: "yjDz", showOverflowTooltip: true },
@ -156,6 +163,7 @@ const pageData = reactive({
{ label: "布控手机号", prop: "yjRysjh", showOverflowTooltip: true },
{ label: "布控车牌号", prop: "yjClcph", showOverflowTooltip: true },
{ label: "身份证", prop: "yjRysfzh", showOverflowTooltip: true },
{ label: "处置状态", prop: "czzt", showSolt: true },
]
});
const showDc = ref(false)
@ -249,16 +257,13 @@ const handleExport = () => {
// 处理表格数据
pageData.tableData.forEach((row, index) => {
const tr = document.createElement('tr');
// 添加序号
const indexTd = document.createElement('td');
indexTd.textContent = index + 1;
tr.appendChild(indexTd);
// 添加其他单元格数据
pageData.tableColumn.forEach(column => {
const td = document.createElement('td');
// 处理自定义插槽的情况
if (column.showSolt) {
if (column.prop === 'yjTp') {