This commit is contained in:
lcw
2026-01-20 17:07:25 +08:00
20 changed files with 644 additions and 170 deletions

View File

@ -232,6 +232,18 @@ export const publicRoutes = [
meta: { title: "积分排名", icon: "article-create" }, meta: { title: "积分排名", icon: "article-create" },
component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/scoreRanking/index"), component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/scoreRanking/index"),
}, },
{
path: "/sevenWarning",
name: "sevenWarning",
meta: { title: "七类重点人员", icon: "article" },
component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/sevenWarning/index.vue"),
},
{
path: "/sevenWarningFail",
name: "sevenWarningFail",
meta: { title: "报错", icon: "article" },
component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/sevenWarningFail/index.vue"),
},
// { // {
// path: "/modelWarning", // path: "/modelWarning",
// name: "modelWarning", // name: "modelWarning",

View File

@ -26,7 +26,7 @@
</Searchs> </Searchs>
</div> </div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox" :style="{ height: (pageData.tableHeight + 40) + 'px' }"> <div class="tabBox tabBox_zdy" :style="{ height: (pageData.tableHeight + 40) + 'px' }">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight" <MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth" :key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
:expand="true" @chooseData="handleChooseData"> :expand="true" @chooseData="handleChooseData">
@ -148,20 +148,16 @@ const pageData = reactive({
pageSize: 20, pageSize: 20,
pageCurrent: 1 pageCurrent: 1
}, //分页 }, //分页
controlsWidth: 160, //操作栏宽度 controlsWidth: 220, //操作栏宽度
tableColumn: [ tableColumn: [
{ label: "状态", prop: "czzt", showSolt: true },
{ label: "预警时间", prop: "yjsj" },
{ label: "姓名", prop: "xm" }, { label: "姓名", prop: "xm" },
{ label: "身份证号", prop: "sfzh", width: 200 }, { label: "身份证号", prop: "sfzh" },
// { label: "电话", prop: "dh", width: 150 }, { label: "标签", prop: "yjbqmc" },
{ label: "行为大类", prop: "xldlmc" }, { label: "接收单位", prop: "ssbm" },
{ label: "行为子类", prop: "xwzlmc", showOverflowTooltip: true }, { label: "活动频次", prop: "xwcs", showSolt: true },
{ label: "行为描述", prop: "xwms", showOverflowTooltip: true }, { label: "预警分值", prop: "xwfz", },
{ label: "行为次数", prop: "xwcs", showSolt: true },
{ label: "行为颜色", prop: "bqys", showSolt: true },
{ label: "行为分值", prop: "xwfz", },
{ label: "处置状态", prop: "czzt", showSolt: true },
{ label: "所属县局", prop: "ssxgaj" },
{ label: "处置单位", prop: "ssbm" },
] ]
}); });
@ -359,17 +355,14 @@ const handleChooseData = (val) => {
} }
const exportExl = () => { const exportExl = () => {
const titleObj = { const titleObj = {
czzt_cname: "状态",
yjsj: "预警时间",
xm: "姓名", xm: "姓名",
sfzh: "身份证号", sfzh: "身份证号",
dh: "电话", yjbqmc: "标签",
xldlmc: "行为大类", ssbm: "接收单位",
xwzlmc: "行为子类", sfcs: "活动频次",
xwms: "行为描述", sffz: "预警分值",
xwcs: "行为次数",
bqys_cname: "行为颜色",
xwfz: "行为分值",
czzt_cname: "处置状态",
ssbm: "所属县局",
} }
/** 导出【选中】的数据 (没有就全部)*/ /** 导出【选中】的数据 (没有就全部)*/
const needArr = selectRows.value?.length > 0 ? selectRows.value : pageData.tableData const needArr = selectRows.value?.length > 0 ? selectRows.value : pageData.tableData
@ -386,7 +379,7 @@ const exportExl = () => {
</script> </script>
<style> <style lang="scss">
.el-loading-mask { .el-loading-mask {
background: rgba(0, 0, 0, 0.5) !important; background: rgba(0, 0, 0, 0.5) !important;
} }
@ -398,4 +391,11 @@ const exportExl = () => {
border-color: #c2c203; border-color: #c2c203;
outline-color: #0000ff; outline-color: #0000ff;
} }
.tabBox_zdy{
.el-table--fit {
overflow: unset !important;
}
}
</style> </style>

View File

@ -11,9 +11,8 @@
<div class="info-item">建议内容<span>{{ it.jynr || '暂无' }}</span></div> <div class="info-item">建议内容<span>{{ it.jynr || '暂无' }}</span></div>
</div> </div>
<div> <div>
<el-empty v-if="list.length === 0" description="暂无数据" /> <el-empty v-if="list.length === 0" :image-size="0.5" description="暂无数据" />
</div> </div>
<el-divider content-position="left">反馈内容</el-divider> <el-divider content-position="left">反馈内容</el-divider>
<div class="item-row" v-for="(it,idx) in Fklist" :key="idx"> <div class="item-row" v-for="(it,idx) in Fklist" :key="idx">
<div class="info-item"> <div class="info-item">
@ -28,13 +27,13 @@
</div> </div>
</div> </div>
<div> <div>
<el-empty v-if="Fklist.length === 0" description="暂无数据" /> <el-empty v-if="Fklist.length === 0" :image-size="0.5" description="暂无数据" />
</div> </div>
</div> </div>
</template> </template>
<script setup> <script setup>
import { ref, computed, onMounted } from 'vue' import { ref, onMounted } from 'vue'
import { qcckPost,qcckGet } from "@/api/qcckApi.js"; import { qcckPost,qcckGet } from "@/api/qcckApi.js";
const props = defineProps({ const props = defineProps({
@ -61,7 +60,6 @@ onMounted(() => {
Fklist.value = res.fkList || [] Fklist.value = res.fkList || []
}) })
}) })
// console.log('row😃: ', props.row);
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.warning-item { .warning-item {
@ -86,4 +84,11 @@ onMounted(() => {
} }
} }
::v-deep .el-empty{
--el-empty-padding: 0px;
margin-bottom: 18px;
--el-empty-description-margin-top: 10px;
}
</style> </style>

View File

@ -26,7 +26,7 @@
</Searchs> </Searchs>
</div> </div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox" :style="{ height: (pageData.tableHeight + 40) + 'px' }"> <div class="tabBox tabBox_zdy" :style="{ height: (pageData.tableHeight + 40) + 'px' }">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight" <MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth" :key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
:expand="true" @chooseData="handleChooseData"> :expand="true" @chooseData="handleChooseData">
@ -40,7 +40,7 @@
<DictTag :value="row.czzt" :options="D_GSXT_YJXX_CZZT" /> <DictTag :value="row.czzt" :options="D_GSXT_YJXX_CZZT" />
</template> </template>
<template #expand="{ props }"> <template #expand="{ props }">
<div class="expand-content" style="max-width: 100%; max-height: 400px; overflow-y: auto; padding: 10px;"> <div>
<Items :row="props || {}" :dict="dict" /> <Items :row="props || {}" :dict="dict" />
</div> </div>
</template> </template>
@ -141,19 +141,14 @@ const pageData = reactive({
}, },
controlsWidth: 200, controlsWidth: 200,
tableColumn: [ tableColumn: [
{ label: "状态", prop: "czzt", showSolt: true },
{ label: "预警时间", prop: "yjsj"},
{ label: "姓名", prop: "xm" }, { label: "姓名", prop: "xm" },
{ label: "身份证号", prop: "sfzh" , width: 200 }, { label: "身份证号", prop: "sfzh" },
// { label: "电话", prop: "dh" }, { label: "标签", prop: "yjbqmc" },
{ label: "预警标签", prop: "yjbqmc" }, { label: "接收单位", prop: "ssbm" },
// { label: "组合大类", prop: "sfdlmc" }, { label: "活动频次", prop: "sfcs" },
// { label: "组合小类", prop: "sfzlmc" },
{ label: "组合次数", prop: "sfcs", showSolt: true },
{ label: "标签颜色", prop: "bqys", showSolt: true },
{ label: "预警时间", prop: "yjsj" , width: 200 },
{ label: "预警分值", prop: "sffz" }, { label: "预警分值", prop: "sffz" },
{ label: "处置状态", prop: "czzt", showSolt: true },
{ label: "所属县局", prop: "ssxgaj" },
{ label: "处置单位", prop: "ssbm" },
] ]
}); });
@ -344,19 +339,15 @@ const handleChooseData = (val) => {
selectRows.value = val selectRows.value = val
} }
const exportExl = () => { const exportExl = () => {
const titleObj = { const titleObj = {
czzt_cname: "状态",
yjsj: "预警时间",
xm: "姓名", xm: "姓名",
sfzh: "身份证号", sfzh: "身份证号",
dh: "电话", yjbqmc: "标签",
sfdlmc: "组合大类", ssbm: "接收单位",
sfzlmc: "组合小类", sfcs: "活动频次",
sfcs: "组合次数",
bqys_cname: "标签颜色",
yjsj: "预警时间",
sffz: "预警分值", sffz: "预警分值",
czzt_cname: "处置状态",
ssbm: "所属县局",
} }
/** 导出【选中】的数据 (没有就全部)*/ /** 导出【选中】的数据 (没有就全部)*/
const needArr = selectRows.value?.length > 0 ? selectRows.value : pageData.tableData const needArr = selectRows.value?.length > 0 ? selectRows.value : pageData.tableData
@ -373,9 +364,17 @@ const exportExl = () => {
</script> </script>
<style> <style lang="scss">
.el-loading-mask { .el-loading-mask {
background: rgba(0, 0, 0, 0.5) !important; background: rgba(0, 0, 0, 0.5) !important;
} }
.tabBox_zdy{
.el-table--fit {
overflow: unset !important;
}
}
</style> </style>

View File

@ -1,6 +1,5 @@
<template> <template>
<div class="warning-item" > <div class="warning-item" >
<el-divider content-position="left">处置建议</el-divider> <el-divider content-position="left">处置建议</el-divider>
<div class="item-row" v-for="(it,idx) in list" :key="idx"> <div class="item-row" v-for="(it,idx) in list" :key="idx">
<div class="info-item"> <div class="info-item">
@ -11,7 +10,7 @@
<div class="info-item">建议内容<span>{{ it.jynr || '暂无' }}</span></div> <div class="info-item">建议内容<span>{{ it.jynr || '暂无' }}</span></div>
</div> </div>
<div> <div>
<el-empty v-if="list.length === 0" description="暂无数据" /> <el-empty v-if="list.length === 0" :image-size="0.5" description="暂无数据" />
</div> </div>
<el-divider content-position="left">反馈内容</el-divider> <el-divider content-position="left">反馈内容</el-divider>
@ -28,7 +27,7 @@
</div> </div>
</div> </div>
<div> <div>
<el-empty v-if="Fklist.length === 0" description="暂无数据" /> <el-empty v-if="Fklist.length === 0" :image-size="0.5" description="暂无数据" />
</div> </div>
</div> </div>
@ -67,6 +66,7 @@ onMounted(() => {
.warning-item { .warning-item {
width: 100%; width: 100%;
padding: 15px; padding: 15px;
box-sizing: border-box;
border-radius: 8px; border-radius: 8px;
background-color: #fafafa; background-color: #fafafa;
} }
@ -85,5 +85,9 @@ onMounted(() => {
margin-right: 10px; margin-right: 10px;
} }
} }
::v-deep .el-empty{
--el-empty-padding: 0px;
margin-bottom: 18px;
--el-empty-description-margin-top: 10px;
}
</style> </style>

View File

@ -23,7 +23,7 @@
</Searchs> </Searchs>
</div> </div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox" :style="{ height: (pageData.tableHeight + 40) + 'px' }"> <div class="tabBox tabBox_zdy" :style="{ height: (pageData.tableHeight + 40) + 'px' }">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight" <MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth" expand :key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth" expand
@chooseData="handleChooseData"> @chooseData="handleChooseData">
@ -38,6 +38,22 @@
<template #czzt="{ row }"> <template #czzt="{ row }">
<DictTag :value="row.czzt" :options="D_GSXT_YJXX_CZZT" /> <DictTag :value="row.czzt" :options="D_GSXT_YJXX_CZZT" />
</template> </template>
<template #sex="{ row }">
<span v-if="row.yjRysfzh"> {{ IdCard(row.yjRysfzh,2) }} </span>
</template>
<template #age="{ row }">
<span v-if="row.yjRysfzh"> {{ IdCard(row.yjRysfzh,3) }} </span>
</template>
<template #yjLylx="{ row }">
<DictTag :value="row.yjLylx" :tag="false" :options="D_BZ_YJLY" />
</template>
<template #bqdl="{ row }">
<DictTag :value="row.bqdl" :tag="false" :options="D_GS_QLZDRLX" />
</template>
<template #controls="{ row }"> <template #controls="{ row }">
<el-link type="warning" @click="pushAssess(row)">全息档案</el-link> <el-link type="warning" @click="pushAssess(row)">全息档案</el-link>
<el-link type="primary" @click="handleCzjy(row)" v-if="roleCode">处置建议</el-link> <el-link type="primary" @click="handleCzjy(row)" v-if="roleCode">处置建议</el-link>
@ -59,6 +75,7 @@
</template> </template>
<script setup> <script setup>
import { IdCard } from '@/utils/validate.js'
import Czjy from './components/czjy.vue' import Czjy from './components/czjy.vue'
import { getItem, setItem } from '@/utils/storage' import { getItem, setItem } from '@/utils/storage'
import PageTitle from "@/components/aboutTable/PageTitle.vue"; import PageTitle from "@/components/aboutTable/PageTitle.vue";
@ -77,7 +94,7 @@ import { getMultiDictVal } from "@/utils/dict.js"
const czjyRef = ref() const czjyRef = ref()
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const searchBox = ref(); const searchBox = ref();
const { D_GSXT_YJXX_CZZT, D_GS_SSYJ,D_BZ_YJJB } = proxy.$dict("D_GSXT_YJXX_CZZT", "D_GS_SSYJ",'D_BZ_YJJB') const { D_GS_QLZDRLX,D_BZ_YJLY,D_GSXT_YJXX_CZZT, D_GS_SSYJ,D_BZ_YJJB } = proxy.$dict('D_GS_QLZDRLX','D_BZ_YJLY',"D_GSXT_YJXX_CZZT", "D_GS_SSYJ",'D_BZ_YJJB')
const dict = reactive({ D_GSXT_YJXX_CZZT, D_GS_SSYJ }) const dict = reactive({ D_GSXT_YJXX_CZZT, D_GS_SSYJ })
// 搜索配置 // 搜索配置
const searchConfiger = ref([ const searchConfiger = ref([
@ -111,16 +128,19 @@ const pageData = reactive({
}, },
controlsWidth: 200, //操作栏宽度 controlsWidth: 200, //操作栏宽度
tableColumn: [ tableColumn: [
{ label: "预警人员姓名", prop: "yjRyxm" }, { label: "状态", prop: "czzt", showSolt: true },
{ label: "预警人员身份证号码", prop: "yjRysfzh",width: 200 }, { label: "预警时间", prop: "yjFssj" },
{ label: "预警标签", prop: "yjbqmc" }, { label: "人员姓名", prop: "yjRyxm" },
{ label: "今日预警次数", prop: "yjJrcs" }, { label: "身份证号码", prop: "yjRysfzh"},
{ label: "标签颜色", prop: "yjJb", showSolt: true }, { label: "性别", prop: "sex" ,showSolt: true },
{ label: "预警内容", prop: "yjNr",showOverflowTooltip: true }, { label: "年龄", prop: "age", showSolt: true },
{ label: "预警时间", prop: "yjFssj" ,width: 200}, { label: "预警级别", prop: "yjJb", showSolt: true },
{ label: "处置状态", prop: "czzt", showSolt: true }, { label: "人员类别", prop: "bqdl", showSolt: true },
{ label: "所属县局", prop: "ssxgaj" }, { label: "细类", prop: "yjbqmc" },
{ label: "处置单位", prop: "ssbm" }, { label: "轨迹类别", prop: "yjLylx", showSolt: true },
{ label: "活动发生地", prop: "yjDz" },
{ label: "接收单位", prop: "ssbm" },
{ label: "预警次数", prop: "yjCs" },
] ]
}); });
@ -273,8 +293,15 @@ const exportExl = () => {
</script> </script>
<style> <style lang="scss">
.el-loading-mask { .el-loading-mask {
background: rgba(0, 0, 0, 0.5) !important; background: rgba(0, 0, 0, 0.5) !important;
} }
.tabBox_zdy{
.el-table--fit {
overflow: unset !important;
}
}
</style> </style>

View File

@ -11,7 +11,7 @@
<div class="info-item">建议内容<span>{{ it.jynr || '暂无' }}</span></div> <div class="info-item">建议内容<span>{{ it.jynr || '暂无' }}</span></div>
</div> </div>
<div> <div>
<el-empty v-if="list.length === 0" description="暂无数据" /> <el-empty v-if="list.length === 0" :image-size="0.5" description="暂无数据" />
</div> </div>
<el-divider content-position="left">反馈内容</el-divider> <el-divider content-position="left">反馈内容</el-divider>
@ -28,7 +28,7 @@
</div> </div>
</div> </div>
<div> <div>
<el-empty v-if="Fklist.length === 0" description="暂无数据" /> <el-empty v-if="Fklist.length === 0" :image-size="0.5" description="暂无数据" />
</div> </div>
</div> </div>
@ -67,6 +67,7 @@ onMounted(() => {
.warning-item { .warning-item {
width: 100%; width: 100%;
padding: 15px; padding: 15px;
box-sizing: border-box;
border-radius: 8px; border-radius: 8px;
background-color: #fafafa; background-color: #fafafa;
} }
@ -86,4 +87,10 @@ onMounted(() => {
} }
} }
::v-deep .el-empty{
--el-empty-padding: 0px;
margin-bottom: 18px;
--el-empty-description-margin-top: 10px;
}
</style> </style>

View File

@ -26,21 +26,18 @@
</Searchs> </Searchs>
</div> </div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox" :style="{ height: (pageData.tableHeight + 40) + 'px' }"> <div class="tabBox tabBox_zdy" :style="{ height: (pageData.tableHeight + 40) + 'px' }">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight" <MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth" expand :key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth" expand
@chooseData="handleChooseData"> @chooseData="handleChooseData">
<template #expand="{ props }"> <template #expand="{ props }">
<div class="expand-content" style="max-width: 100%"> <div style="max-width: 100%">
<Items :row="props || {}" :dict="dict" /> <Items :row="props || {}" :dict="dict" />
</div> </div>
</template> </template>
<template #sfcs="{ row }"> <template #sfcs="{ row }">
<span style="color: #0072ff;" @click="handleClick(row)">{{ row.sfcs }}</span> <span style="color: #0072ff;" @click="handleClick(row)">{{ row.sfcs }}</span>
</template> </template>
<template #bqys="{ row }">
<DictTag :value="row.bqys" :tag="false" :color="bqYs(row.bqys)" :options="D_GS_SSYJ" />
</template>
<template #czzt="{ row }"> <template #czzt="{ row }">
<DictTag :value="row.czzt" :options="D_GSXT_YJXX_CZZT" /> <DictTag :value="row.czzt" :options="D_GSXT_YJXX_CZZT" />
</template> </template>
@ -139,26 +136,20 @@ const pageData = reactive({
}, },
controlsWidth: 200, //操作栏宽度 controlsWidth: 200, //操作栏宽度
tableColumn: [ tableColumn: [
{ label: "状态", prop: "czzt", showSolt: true },
{ label: "预警时间", prop: "yjsj"},
{ label: "姓名", prop: "xm" }, { label: "姓名", prop: "xm" },
{ label: "身份证号", prop: "sfzh" , width: 200 }, { label: "身份证号", prop: "sfzh" },
// { label: "电话", prop: "dh" }, { label: "标签", prop: "yjbqmc" },
{ label: "预警标签", prop: "yjbqmc" }, { label: "接收单位", prop: "ssbm" },
// { label: "组合大类", prop: "sfdlmc" }, { label: "活动频次", prop: "sfcs" },
// { label: "组合小类", prop: "sfzlmc" },
{ label: "组合次数", prop: "sfcs", showSolt: true },
{ label: "标签颜色", prop: "bqys", showSolt: true },
{ label: "预警时间", prop: "yjsj", width: 200 },
{ label: "预警分值", prop: "sffz" }, { label: "预警分值", prop: "sffz" },
{ label: "处置状态", prop: "czzt", showSolt: true },
{ label: "所属县局", prop: "ssxgaj" },
{ label: "处置单位", prop: "ssbm" },
] ]
}); });
onMounted(() => { onMounted(() => {
let str = getItem('deptId') ? getItem('deptId')[0].deptLevel : '' let str = getItem('deptId') ? getItem('deptId')[0].deptLevel : ''
permission_sfqs.value = str.startsWith('2'||'3') ? false : true; permission_sfqs.value = str.startsWith('2'||'3') ? false : true;
let rols = getItem('roleList') ? getItem('roleList'):[] let rols = getItem('roleList') ? getItem('roleList'):[]
let obj = rols.find(item => { let obj = rols.find(item => {
return ['JS_666666','JS_777777','JS_888888'].includes(item.roleCode) return ['JS_666666','JS_777777','JS_888888'].includes(item.roleCode)
@ -208,7 +199,6 @@ const getList = () => {
bqys_cname: getMultiDictVal(item.bqys, D_GS_SSYJ), bqys_cname: getMultiDictVal(item.bqys, D_GS_SSYJ),
czzt_cname: getMultiDictVal(item.czzt, D_GSXT_YJXX_CZZT), czzt_cname: getMultiDictVal(item.czzt, D_GSXT_YJXX_CZZT),
} }
}) })
pageData.total = res?.total || 0; pageData.total = res?.total || 0;
pageData.tableConfiger.loading = false; pageData.tableConfiger.loading = false;
@ -365,17 +355,14 @@ const handleChooseData = (val) => {
} }
const exportExl = () => { const exportExl = () => {
const titleObj = { const titleObj = {
czzt_cname: "状态",
yjsj: "预警时间",
xm: "姓名", xm: "姓名",
sfzh: "身份证号", sfzh: "身份证号",
dh: "电话", yjbqmc: "标签",
sfdlmc: "组合大类", ssbm: "接收单位",
sfzlmc: "组合小类", sfcs: "活动频次",
sfcs: "组合次数",
bqys_cname: "标签颜色",
yjsj: "预警时间",
sffz: "预警分值", sffz: "预警分值",
czzt_cname: "处置状态",
ssbm: "所属县局",
} }
/** 导出【选中】的数据 (没有就全部)*/ /** 导出【选中】的数据 (没有就全部)*/
const needArr = selectRows.value?.length > 0 ? selectRows.value : pageData.tableData const needArr = selectRows.value?.length > 0 ? selectRows.value : pageData.tableData
@ -392,8 +379,17 @@ const exportExl = () => {
</script> </script>
<style> <style scoped >
</style>
<style lang="scss">
.el-loading-mask { .el-loading-mask {
background: rgba(0, 0, 0, 0.5) !important; background: rgba(0, 0, 0, 0.5) !important;
} }
.tabBox_zdy{
.el-table--fit {
overflow: unset !important;
}
}
</style> </style>

View File

@ -1,7 +1,6 @@
<template> <template>
<div class="warning-item" > <div class="warning-item" >
<el-divider content-position="left">处置建议</el-divider>
<el-divider content-position="left">处置建议</el-divider>
<div class="item-row" v-for="(it,idx) in list" :key="idx"> <div class="item-row" v-for="(it,idx) in list" :key="idx">
<div class="info-item"> <div class="info-item">
<span class="text">预警人姓名{{ it.jryXm }}</span> <span class="text">预警人姓名{{ it.jryXm }}</span>
@ -10,10 +9,7 @@
</div> </div>
<div class="info-item">建议内容<span>{{ it.jynr || '暂无' }}</span></div> <div class="info-item">建议内容<span>{{ it.jynr || '暂无' }}</span></div>
</div> </div>
<div> <el-empty v-if="list.length === 0" :image-size="0.5" description="暂无数据" />
<el-empty v-if="list.length === 0" description="暂无数据" />
</div>
<el-divider content-position="left">反馈内容</el-divider> <el-divider content-position="left">反馈内容</el-divider>
<div class="item-row" v-for="(it,idx) in Fklist" :key="idx"> <div class="item-row" v-for="(it,idx) in Fklist" :key="idx">
<div class="info-item"> <div class="info-item">
@ -27,14 +23,11 @@
<span class="text">常控立线侦察评估依据<span>{{ it.cklxzcpgyj || '暂无' }}</span></span> <span class="text">常控立线侦察评估依据<span>{{ it.cklxzcpgyj || '暂无' }}</span></span>
</div> </div>
</div> </div>
<div> <el-empty :image-size="0.5" v-if="Fklist.length === 0" description="暂无数据" />
<el-empty v-if="Fklist.length === 0" description="暂无数据" />
</div>
</div> </div>
</template> </template>
<script setup> <script setup>
import { ref, computed, onMounted } from 'vue' import { ref, onMounted } from 'vue'
import { qcckPost,qcckGet } from "@/api/qcckApi.js"; import { qcckPost,qcckGet } from "@/api/qcckApi.js";
const props = defineProps({ const props = defineProps({
@ -61,20 +54,18 @@ onMounted(() => {
Fklist.value = res.fkList || [] Fklist.value = res.fkList || []
}) })
}) })
// console.log('row😃: ', props.row);
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.warning-item { .warning-item {
width: 100%; width: 100%;
padding: 15px; padding: 15px;
box-sizing: border-box;
border-radius: 8px; border-radius: 8px;
background-color: #fafafa; background-color: #fafafa;
} }
.item-row{ .item-row{
border-bottom: 1px dashed #e8e8e8; border-bottom: 1px dashed #e8e8e8;
line-height: 36px; line-height: 36px;
padding-bottom: 10px;
margin-bottom: 10px;
} }
.info-item{ .info-item{
line-height: 36px; line-height: 36px;
@ -86,4 +77,10 @@ onMounted(() => {
} }
} }
::v-deep .el-empty{
--el-empty-padding: 0px;
margin-bottom: 18px;
--el-empty-description-margin-top: 10px;
}
</style> </style>

View File

@ -30,6 +30,9 @@
<template #yjlb="{ row }"> <template #yjlb="{ row }">
<DictTag :value="row.yjlb" :options="D_BZ_YJLX" /> <DictTag :value="row.yjlb" :options="D_BZ_YJLX" />
</template> </template>
<template #sffz="{ row }">
<span :style="row.sffz > 100 ? 'color: #ff0000;' : 'color: #0072ff;'">{{ row.sffz }}</span>
</template>
<!-- <template #yjjb="{ row }"> <!-- <template #yjjb="{ row }">
<DictTag :value="row.yjjb" :tag="false" :color="bqYs(row.yjjb)" :options="D_BZ_YJJB" /> <DictTag :value="row.yjjb" :tag="false" :color="bqYs(row.yjjb)" :options="D_BZ_YJJB" />
@ -52,6 +55,7 @@
</template> </template>
<template #controls="{ row }"> <template #controls="{ row }">
<el-link type="success" @click="handleToImportantMan(row)">转重点人</el-link> <el-link type="success" @click="handleToImportantMan(row)">转重点人</el-link>
<el-link type="success" @click="pushAssess(row)">全息档案</el-link>
<!-- <el-link type="primary" @click="openAddFrom(row)">详情</el-link> --> <!-- <el-link type="primary" @click="openAddFrom(row)">详情</el-link> -->
</template> </template>
</MyTable> </MyTable>
@ -69,6 +73,7 @@
</template> </template>
<script setup> <script setup>
import { holographicProfileJump } from "@/utils/tools.js"
import PageTitle from "@/components/aboutTable/PageTitle.vue"; import PageTitle from "@/components/aboutTable/PageTitle.vue";
import Searchs from "@/components/aboutTable/Search.vue"; import Searchs from "@/components/aboutTable/Search.vue";
import MyTable from "@/components/aboutTable/MyTable.vue"; import MyTable from "@/components/aboutTable/MyTable.vue";
@ -120,6 +125,7 @@ const pageData = reactive({
}, //分页 }, //分页
controlsWidth: 300, //操作栏宽度 controlsWidth: 300, //操作栏宽度
tableColumn: [ tableColumn: [
{ label: "身份分值", prop: "sffz", showSolt: true },
// { label: "预警图片", prop: "yjtp", showSlot: true, width: 100 }, // { label: "预警图片", prop: "yjtp", showSlot: true, width: 100 },
// { label: "预警时间", prop: "yjsj", showOverflowTooltip: true, width: 150 }, // { label: "预警时间", prop: "yjsj", showOverflowTooltip: true, width: 150 },
{ label: "姓名", prop: "ryxm", showOverflowTooltip: true }, { label: "姓名", prop: "ryxm", showOverflowTooltip: true },
@ -133,7 +139,7 @@ const pageData = reactive({
{ label: "预警类别", prop: "yjlb", showSolt: true }, { label: "预警类别", prop: "yjlb", showSolt: true },
{ label: "预警类型", prop: "yjlx", showSolt: true }, { label: "预警类型", prop: "yjlx", showSolt: true },
// { label: "身份次数", prop: "sfcs", showSlot: true }, // { label: "身份次数", prop: "sfcs", showSlot: true },
{ label: "身份分值", prop: "sffz" },
{ label: "预警内容", prop: "yjnr", showOverflowTooltip: true }, { label: "预警内容", prop: "yjnr", showOverflowTooltip: true },
] ]
}); });
@ -158,6 +164,10 @@ const changeSize = (val) => {
getList() getList()
} }
const pushAssess = (val) => {
return holographicProfileJump(val.yjlx,val) // 全息档案跳转
}
// 获取标签大类数据 // 获取标签大类数据
const gettbGsxtBqglSelectList = (val) => { const gettbGsxtBqglSelectList = (val) => {
tbGsxtBqglSelectList({ sflx: val }).then(res => { tbGsxtBqglSelectList({ sflx: val }).then(res => {

View File

@ -0,0 +1,182 @@
<template>
<div>
<div class="titleBox">
<PageTitle title="七类重点人员" />
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount">
<template #age="{ row }">
<div class="ageBox">
<el-input v-model="queryFrom.age_s" placeholder="开始年龄" type="number" :min="1" :max="100" style="width: 102px;"></el-input>
<span style="color: #333;" class="ml5 mr5"></span>
<el-input v-model="queryFrom.age_b" placeholder="结束年龄" type="number" :min="parseInt(queryFrom.age_s)+1" :max="100" style="width: 102px;"></el-input>
</div>
</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 #czzt="{ row }">
<DictTag :value="row.czzt" :tag="false" :options="D_GSXT_YJXX_CZZT" />
</template>
<template #sex="{ row }">
<span v-if="row.yjRysfzh"> {{ IdCard(row.yjRysfzh,2) }} </span>
</template>
<template #age="{ row }">
<span v-if="row.yjRysfzh"> {{ IdCard(row.yjRysfzh,3) }} </span>
</template>
<template #yjJb="{ row }">
<DictTag :value="row.yjJb" :tag="false" :options="D_BZ_YJJB" />
</template>
<template #bqdl="{ row }">
<DictTag :value="row.bqdl" :tag="false" :options="D_GS_QLZDRLX" />
</template>
<template #yjLylx="{ row }">
<DictTag :value="row.yjLylx" :tag="false" :options="D_BZ_YJLY" />
</template>
<template #yjLx="{ row }">
<DictTag :value="row.yjLx" :tag="false" :options="D_GS_QLZDRYXX" />
</template>
<template #controls="{ row }">
<el-link type="warning" v-if="row.sfbc != '1'" @click="failWarning(row)">报错</el-link>
<el-link type="warning" @click="pushWarning(row)">指派</el-link>
</template>
</MyTable>
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
...pageData.pageConfiger,
total: pageData.total
}"></Pages>
</div>
</div>
<ZpForm v-model="warningShow" :dataList="dataList"/>
</template>
<script setup>
import ZpForm from "./zpForm.vue";
import { IdCard } from '@/utils/validate.js'
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, qcckPost } from "@/api/qcckApi.js";
import { reactive, ref, onMounted, getCurrentInstance, } from "vue";
const { proxy } = getCurrentInstance();
const { D_BZ_YJLY,D_GS_QLZDRLX,D_BZ_YJJB, D_GS_QLZDRYXX,D_BZ_XB,D_GSXT_YJXX_CZZT } = proxy.$dict('D_BZ_YJLY','D_GS_QLZDRLX',"D_BZ_YJJB", "D_GS_QLZDRYXX", "D_BZ_XB","D_GSXT_YJXX_CZZT"); //获取字典数据
const searchBox = ref(); //搜索框
const warningShow = ref(false);
const dataList = ref([]);
const searchConfiger = ref(
[
{ label: "姓名", prop: 'yjRyxm', placeholder: "请输入姓名", showType: "input" },
// { label: "年龄段", prop: 'age', placeholder: "请输入身份证号码", showType: "Slot" },
{ label: "性别", prop: 'xbdm', placeholder: "请选择性别", showType: "select", options: D_BZ_XB },
{ label: "身份证", prop: 'yjRysfzh', placeholder: "请输入身份证号码", showType: "input" },
{ label: "预警时间", prop: 'times', showType: "datetimerange" },
{ label: "状态", prop: 'czzt', placeholder: "请选择状态", showType: "select", options: D_GSXT_YJXX_CZZT },
{ label: "人员类别", prop: 'bqdl', placeholder: "请选择人员类别", showType: "select", options: D_GS_QLZDRLX },
{ label: "细类", prop: 'yjbqmc', placeholder: "请输入细类", showType: "input" },
{ label: "活动发生地址", prop: 'yjDz', placeholder: "请输入活动发生地址", showType: "input" },
{ label: "接收单位", prop: 'ssbmdm',showType: "department" },
]);
const queryFrom = ref({});
const pageData = reactive({
tableData: [], //表格数据
keyCount: 0,
tableConfiger: {
rowHieght: 61,
showSelectType: "null",
loading: false,
haveControls: true
},
total: 0,
pageConfiger: {
pageSize: 20,
pageCurrent: 1
}, //分页
controlsWidth: 160, //操作栏宽度
tableColumn: [
{ label: "状态", prop: "czzt", showSolt: true },
{ label: "预警时间", prop: "yjSj" },
{ label: "人员姓名", prop: "yjRyxm", },
{ label: "身份证号", prop: "yjRysfzh", },
{ label: "性别", prop: "sex" ,showSolt: true },
{ label: "年龄", prop: "age", showSolt: true },
{ label: "预警级别", prop: "yjJb", showSolt: true },
{ label: "人员类别", prop: "bqdl", showSolt: true },
{ label: "细类", prop: "yjbqmc" },
{ label: "轨迹类别", prop: "yjLylx", showSolt: true },
{ label: "活动发生地", prop: "yjDz" },
{ label: "接收单位", prop: "ssbm" },
{ label: "预警次数", prop: "yjCs" },
]
});
onMounted(() => {
tabHeightFn();
getList()
});
// 搜索
const onSearch = (val) => {
queryFrom.value = { ...val }
queryFrom.value.startTime = val.times ? val.times[0] : ''
queryFrom.value.endTime = val.times ? val.times[1] : ''
pageData.pageConfiger.pageCurrent = 1;
getList()
}
const changeNo = (val) => {
pageData.pageConfiger.pageCurrent = val;
getList()
}
const changeSize = (val) => {
pageData.pageConfiger.pageSize = val;
getList()
}
const getList = () => {
pageData.tableConfiger.loading = true;
const promes = {
...queryFrom.value,
pageCurrent: pageData.pageConfiger.pageCurrent,
pageSize: pageData.pageConfiger.pageSize,
}
delete promes.times;
qcckPost(promes, '/mosty-gsxt/tbYjxx/getQlzdrPageList').then((res) => {
pageData.total = res.total || 0;
pageData.tableConfiger.loading = false;
pageData.tableData = res.records || []
}).catch(() => {
pageData.tableConfiger.loading = false;
})
}
const pushWarning = (val) => {
warningShow.value = true;
dataList.value = val;
}
const failWarning = (val) => {
let ids = [val.id]
qcckPost({ids}, '/mosty-gsxt/tbYjxx/yjbc').then((res) => {
proxy.$message({ type: "success", message: "成功" });
getList();
}).catch(() => {
proxy.$message({ type: "error", message: "失败" });
});
}
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
window.onresize = function () { tabHeightFn(); };
};
</script>
<style>
.el-loading-mask {
background: rgba(0, 0, 0, 0.5) !important;
}
</style>

View File

@ -0,0 +1,76 @@
<!--预警指派展示组件 -->
<template>
<el-dialog :draggable="true" :model-value="modelValue" :title="title" :width="width" @close="close" append-to-body>
<div class="archive-container">
<FormMessage :formList="formData" v-model="listQuery" ref="elform" :rules="rules" :labelWidth="90">
</FormMessage>
</div>
<template #footer>
<div class="dialog-footer" style="text-align: center;">
<el-button type="primary" @click="submit">确定</el-button>
<el-button @click="close">关闭</el-button>
</div>
</template>
</el-dialog>
</template>
<script setup>
import { ref, defineProps, defineEmits, reactive, getCurrentInstance } from 'vue';
import FormMessage from "@/components/aboutTable/FormMessage.vue";
import { tbYjxxYjzp } from '@/api/yj'
const { proxy } = getCurrentInstance();
const props = defineProps({
modelValue: {
type: Boolean,
default: false
},
title: {
type: String,
default: '预警指派'
},
width: {
type: String,
default: '50%'
},
url: {
type: String,
default: ''
},
dataList: {
type: Object,
default: () => ({})
}
});
const listQuery = ref()
const formData = ref([
{ label: "指派部门", prop: "zpbmdm", depMc: 'zpbm', type: "department", width: '45%' },
{ label: "指派原因", prop: "zpyy", type: "textarea", width: '80%' },
])
const rules = reactive({
zpbmdm: [{ required: true, message: "请选择指派部门", trigger: "blur" }],
zpyy: [{ required: true, message: "请输入指派原因", trigger: "change" }],
});
const elform = ref(null)
const submit = async () => {
elform.value.submit(() => {
const params = { ...listQuery.value, yjid: props.dataList.id };
tbYjxxYjzp(params).then((res) => {
proxy.$message({ type: "success", message: "成功" });
close();
}).catch(() => {
proxy.$message({ type: "error", message: "失败" });
});
});
}
// 定义事件
const emit = defineEmits(['update:modelValue']);
const close = () => {
elform.value.reset()
emit('update:modelValue', false);
};
</script>
<style scoped>
</style>

View File

@ -0,0 +1,168 @@
<template>
<div>
<div class="titleBox">
<PageTitle title="报错" />
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount">
<template #age="{ row }">
<div class="ageBox">
<el-input v-model="queryFrom.age_s" placeholder="开始年龄" type="number" :min="1" :max="100" style="width: 102px;"></el-input>
<span style="color: #333;" class="ml5 mr5"></span>
<el-input v-model="queryFrom.age_b" placeholder="结束年龄" type="number" :min="parseInt(queryFrom.age_s)+1" :max="100" style="width: 102px;"></el-input>
</div>
</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 #czzt="{ row }">
<DictTag :value="row.czzt" :tag="false" :options="D_GSXT_YJXX_CZZT" />
</template>
<template #sex="{ row }">
<span v-if="row.yjRysfzh"> {{ IdCard(row.yjRysfzh,2) }} </span>
</template>
<template #age="{ row }">
<span v-if="row.yjRysfzh"> {{ IdCard(row.yjRysfzh,3) }} </span>
</template>
<template #yjJb="{ row }">
<DictTag :value="row.yjJb" :tag="false" :options="D_BZ_YJJB" />
</template>
<template #bqdl="{ row }">
<DictTag :value="row.bqdl" :tag="false" :options="D_GS_QLZDRLX" />
</template>
<template #yjLylx="{ row }">
<DictTag :value="row.yjLylx" :tag="false" :options="D_BZ_YJLY" />
</template>
<template #yjLx="{ row }">
<DictTag :value="row.yjLx" :tag="false" :options="D_GS_QLZDRYXX" />
</template>
<template #controls="{ row }">
<el-link type="warning" @click="pushAssess(row)">全息档案</el-link>
</template>
</MyTable>
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
...pageData.pageConfiger,
total: pageData.total
}"></Pages>
</div>
</div>
</template>
<script setup>
import { holographicProfileJump } from "@/utils/tools.js"
import { IdCard } from '@/utils/validate.js'
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, qcckPost } from "@/api/qcckApi.js";
import { reactive, ref, onMounted, getCurrentInstance, } from "vue";
const { proxy } = getCurrentInstance();
const { D_BZ_YJLY,D_GS_QLZDRLX,D_BZ_YJJB, D_GS_QLZDRYXX,D_BZ_XB,D_GSXT_YJXX_CZZT } = proxy.$dict('D_BZ_YJLY','D_GS_QLZDRLX',"D_BZ_YJJB", "D_GS_QLZDRYXX", "D_BZ_XB","D_GSXT_YJXX_CZZT"); //获取字典数据
const searchBox = ref(); //搜索框
const searchConfiger = ref(
[
{ label: "姓名", prop: 'yjRyxm', placeholder: "请输入姓名", showType: "input" },
// { label: "年龄段", prop: 'age', placeholder: "请输入身份证号码", showType: "Slot" },
{ label: "性别", prop: 'xbdm', placeholder: "请选择性别", showType: "select", options: D_BZ_XB },
{ label: "身份证", prop: 'yjRysfzh', placeholder: "请输入身份证号码", showType: "input" },
{ label: "预警时间", prop: 'times', showType: "datetimerange" },
{ label: "状态", prop: 'czzt', placeholder: "请选择状态", showType: "select", options: D_GSXT_YJXX_CZZT },
{ label: "人员类别", prop: 'bqdl', placeholder: "请选择人员类别", showType: "select", options: D_GS_QLZDRLX },
{ label: "细类", prop: 'yjbqmc', placeholder: "请输入细类", showType: "input" },
{ label: "活动发生地址", prop: 'yjDz', placeholder: "请输入活动发生地址", showType: "input" },
{ label: "接收单位", prop: 'ssbmdm',showType: "department" },
]);
const queryFrom = ref({});
const pageData = reactive({
tableData: [], //表格数据
keyCount: 0,
tableConfiger: {
rowHieght: 61,
showSelectType: "null",
loading: false,
haveControls: true
},
total: 0,
pageConfiger: {
pageSize: 20,
pageCurrent: 1
}, //分页
controlsWidth: 160, //操作栏宽度
tableColumn: [
{ label: "状态", prop: "czzt", showSolt: true },
{ label: "预警时间", prop: "yjSj" },
{ label: "人员姓名", prop: "yjRyxm", },
{ label: "身份证号", prop: "yjRysfzh", },
{ label: "性别", prop: "sex" ,showSolt: true },
{ label: "年龄", prop: "age", showSolt: true },
{ label: "预警级别", prop: "yjJb", showSolt: true },
{ label: "人员类别", prop: "bqdl", showSolt: true },
{ label: "细类", prop: "yjbqmc" },
{ label: "轨迹类别", prop: "yjLylx", showSolt: true },
{ label: "活动发生地", prop: "yjDz" },
{ label: "接收单位", prop: "ssbm" },
{ label: "预警次数", prop: "yjCs" },
]
});
onMounted(() => {
tabHeightFn();
getList()
});
// 搜索
const onSearch = (val) => {
queryFrom.value = { ...val }
queryFrom.value.startTime = val.times ? val.times[0] : ''
queryFrom.value.endTime = val.times ? val.times[1] : ''
pageData.pageConfiger.pageCurrent = 1;
getList()
}
const changeNo = (val) => {
pageData.pageConfiger.pageCurrent = val;
getList()
}
const changeSize = (val) => {
pageData.pageConfiger.pageSize = val;
getList()
}
const getList = () => {
pageData.tableConfiger.loading = true;
const promes = {
...queryFrom.value,
pageCurrent: pageData.pageConfiger.pageCurrent,
pageSize: pageData.pageConfiger.pageSize,
sfbc:'1'
}
delete promes.times;
qcckPost(promes, '/mosty-gsxt/tbYjxx/getQlzdrPageList').then((res) => {
pageData.total = res.total || 0;
pageData.tableConfiger.loading = false;
pageData.tableData = res.records || []
}).catch(() => {
pageData.tableConfiger.loading = false;
})
}
const pushAssess = (val) => {
return holographicProfileJump(null,val) // 全息档案跳转
}
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
window.onresize = function () { tabHeightFn(); };
};
</script>
<style>
.el-loading-mask {
background: rgba(0, 0, 0, 0.5) !important;
}
</style>

View File

@ -1,12 +1,12 @@
<template> <template>
<div> <div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox" :style="{ height: !search ? maxHeight + 200 + 'px' : (maxHeight + 150) + 'px' }"> <div class="tabBox tabBox_zdy" :style="{ height: maxHeight + 130 + 'px' }">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="maxHeight + 'px'" <MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="maxHeight + 'px'"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth" :key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
:expand="true" @chooseData="handleChooseData"> :expand="true" @chooseData="handleChooseData">
<template #expand="{ props }"> <template #expand="{ props }">
<div class="expand-content" style="max-width: 100%"> <div>
<Items :row="props" :dict="dict" /> <Items :row="props" :dict="dict" />
</div> </div>
</template> </template>
@ -106,7 +106,8 @@ const props = defineProps({
maxHeight: { maxHeight: {
type: [Number, String], type: [Number, String],
default: 666 default: 666
}, search: { },
search: {
type: Boolean, type: Boolean,
default: false default: false
}, },
@ -145,7 +146,7 @@ const pageData = reactive({
{ label: "数据来源", prop: "yjLylx", showOverflowTooltip: true, showSolt: true }, { label: "数据来源", prop: "yjLylx", showOverflowTooltip: true, showSolt: true },
{ label: "身份证", prop: "yjRysfzh", showOverflowTooltip: true, width: 200 }, { label: "身份证", prop: "yjRysfzh", showOverflowTooltip: true, width: 200 },
// { label: "预警级别", prop: "yjJb", showSolt: true }, // { label: "预警级别", prop: "yjJb", showSolt: true },
// { label: "相似度", prop: "xsd", showSolt: true }, { label: "相似度", prop: "xsd", showSolt: true },
{ label: "布控车牌号", prop: "yjClcph", showOverflowTooltip: true }, { label: "布控车牌号", prop: "yjClcph", showOverflowTooltip: true },
{ label: "所属部门", prop: "ssbm", showOverflowTooltip: true }, { label: "所属部门", prop: "ssbm", showOverflowTooltip: true },
] ]
@ -325,7 +326,7 @@ defineExpose({
}) })
</script> </script>
<style> <style lang="scss">
.el-loading-mask { .el-loading-mask {
background: rgba(0, 0, 0, 0.5) !important; background: rgba(0, 0, 0, 0.5) !important;
} }
@ -370,4 +371,10 @@ defineExpose({
.warning-level-04 td { .warning-level-04 td {
background-color: transparent !important; background-color: transparent !important;
} }
.tabBox_zdy{
.el-table--fit {
overflow: unset !important;
}
}
</style> </style>

View File

@ -1,7 +1,6 @@
<template> <template>
<div> <div>
<div class="titleBox"> <div class="titleBox">
<PageTitle title="人像预警"> <PageTitle title="人像预警">
<el-button type="success" @click="openSearch"> <el-button type="success" @click="openSearch">
<Search style="width: 1em; height: 1em; margin-right: 8px" /> <Search style="width: 1em; height: 1em; margin-right: 8px" />
@ -69,6 +68,7 @@
<template #nl="{ row }"> <template #nl="{ row }">
{{ IdCard(row.yjRysfzh, 3) }} {{ IdCard(row.yjRysfzh, 3) }}
</template> </template>
<template #sxd="{ row }"> {{ row.sxd }}% </template>
<template #yjLylx="{ row }"> <template #yjLylx="{ row }">
<DictTag v-model:value="row.yjLylx" :options="D_BZ_YJLY" /> <DictTag v-model:value="row.yjLylx" :options="D_BZ_YJLY" />
</template> </template>
@ -81,9 +81,6 @@
<template #yjJb="{ row }"> <template #yjJb="{ row }">
<DictTag v-model:value="row.yjJb" :options="D_BZ_YJJB" /> <DictTag v-model:value="row.yjJb" :options="D_BZ_YJJB" />
</template> </template>
<template #xsd="{ row }">
{{ row.xsd }}%
</template>
<!-- 操作 --> <!-- 操作 -->
</MyTable> </MyTable>
<template #footer> <template #footer>
@ -167,7 +164,8 @@ const pageData = reactive({
}, //分页 }, //分页
controlsWidth: 160, //操作栏宽度 controlsWidth: 160, //操作栏宽度
tableColumn: [ tableColumn: [
{ label: "预警图片", prop: "yjTp", showSolt: true }, { label: "相似度", prop: "sxd", showSolt: true },
{ label: "预警图片11", prop: "yjTp", showSolt: true },
{ label: "处置状态", prop: "czzt", showSolt: true }, { label: "处置状态", prop: "czzt", showSolt: true },
{ label: "预警时间", prop: "yjSj", showOverflowTooltip: true }, { label: "预警时间", prop: "yjSj", showOverflowTooltip: true },
{ label: "姓名", prop: "yjRyxm" }, { label: "姓名", prop: "yjRyxm" },
@ -175,7 +173,6 @@ const pageData = reactive({
{ label: "数据来源", prop: "yjLylx", showOverflowTooltip: true,showSolt:D_BZ_YJLY }, { label: "数据来源", prop: "yjLylx", showOverflowTooltip: true,showSolt:D_BZ_YJLY },
{ label: "性别", prop: "xb", showSolt: true }, { label: "性别", prop: "xb", showSolt: true },
{ label: "预警级别", prop: "yjJb", showSolt: true }, { label: "预警级别", prop: "yjJb", showSolt: true },
{ label: "相似度", prop: "xsd", showSolt: true },
{ label: "预警地点", prop: "yjDz", showOverflowTooltip: true }, { label: "预警地点", prop: "yjDz", showOverflowTooltip: true },
{ label: "预警次数", prop: "yjCs", showOverflowTooltip: true }, { label: "预警次数", prop: "yjCs", showOverflowTooltip: true },
{ label: "布控手机号", prop: "yjRysjh", showOverflowTooltip: true }, { label: "布控手机号", prop: "yjRysjh", showOverflowTooltip: true },

View File

@ -1,6 +1,5 @@
<template> <template>
<div class="warning-item" > <div class="warning-item" >
<el-divider content-position="left">处置建议</el-divider> <el-divider content-position="left">处置建议</el-divider>
<div class="item-row" v-for="(it,idx) in list" :key="idx"> <div class="item-row" v-for="(it,idx) in list" :key="idx">
<div class="info-item"> <div class="info-item">
@ -11,7 +10,7 @@
<div class="info-item">建议内容<span>{{ it.jynr || '暂无' }}</span></div> <div class="info-item">建议内容<span>{{ it.jynr || '暂无' }}</span></div>
</div> </div>
<div> <div>
<el-empty v-if="list.length === 0" description="暂无数据" /> <el-empty v-if="list.length === 0" :image-size="0.5" description="暂无数据" />
</div> </div>
<el-divider content-position="left">反馈内容</el-divider> <el-divider content-position="left">反馈内容</el-divider>
@ -28,7 +27,7 @@
</div> </div>
</div> </div>
<div> <div>
<el-empty v-if="Fklist.length === 0" description="暂无数据" /> <el-empty v-if="Fklist.length === 0" :image-size="0.5" description="暂无数据" />
</div> </div>
</div> </div>
@ -66,6 +65,7 @@ onMounted(() => {
.warning-item { .warning-item {
width: 100%; width: 100%;
padding: 15px; padding: 15px;
box-sizing: border-box;
border-radius: 8px; border-radius: 8px;
background-color: #fafafa; background-color: #fafafa;
} }
@ -84,5 +84,9 @@ onMounted(() => {
margin-right: 10px; margin-right: 10px;
} }
} }
::v-deep .el-empty{
--el-empty-padding: 0px;
margin-bottom: 18px;
--el-empty-description-margin-top: 10px;
}
</style> </style>

View File

@ -1,7 +1,7 @@
<template> <template>
<div> <div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox" :style="{ height: !search ? maxHeight + 200 + 'px' : (maxHeight + 150) + 'px' }"> <div class="tabBox tabBox_zdy" :style="{ height: maxHeight + 130 + 'px' }">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="maxHeight + 'px'" <MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="maxHeight + 'px'"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth" :key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
:expand="true" @chooseData="handleChooseData"> :expand="true" @chooseData="handleChooseData">
@ -25,6 +25,7 @@
</template> </template>
</el-image> </el-image>
</template> </template>
<template #nl="{ row }"> <template #nl="{ row }">
{{ IdCard(row.yjRysfzh, 3) }} {{ IdCard(row.yjRysfzh, 3) }}
</template> </template>
@ -129,19 +130,17 @@ const pageData = reactive({
pageSize: 20, pageSize: 20,
pageCurrent: 1 pageCurrent: 1
}, //分页 }, //分页
controlsWidth: 300, //操作栏宽度 controlsWidth: 200, //操作栏宽度
tableColumn: [ tableColumn: [
{ label: "状态", prop: "czzt", showSolt: true },
{ label: "预警图片", prop: "yjTp", showSolt: true, width: 100 }, { label: "预警图片", prop: "yjTp", showSolt: true, width: 100 },
{ label: "布控车牌号", prop: "yjClcph", showOverflowTooltip: true }, { label: "布控车牌号", prop: "yjClcph", showOverflowTooltip: true },
{ label: "处置状态", prop: "czzt", showSolt: true }, { label: "处置状态", prop: "czzt", showSolt: true },
{ label: "预警时间", prop: "yjSj", showOverflowTooltip: true }, { label: "预警时间", prop: "yjSj", showOverflowTooltip: true },
{ label: "标题", prop: "yjBt" }, { label: "标题", prop: "yjBt" },
{ label: "所属部门", prop: "ssbm", showOverflowTooltip: true }, { label: "预警地址", prop: "yjDz", showOverflowTooltip: true },
{ label: "内容", prop: "yjNr", showOverflowTooltip: true }, { label: "接收单位", prop: "ssbm", showOverflowTooltip: true },
{ label: "数据来源", prop: "yjLylx", showOverflowTooltip: true, showSolt: true }, { label: "内容", prop: "yjNr", showOverflowTooltip: true },
] ]
}); });
@ -202,8 +201,6 @@ const assessShow = ref(false)
const dataList = ref() const dataList = ref()
const pushAssess = (val) => { const pushAssess = (val) => {
return holographicProfileJump(val.yjLx,val) // 全息档案跳转 return holographicProfileJump(val.yjLx,val) // 全息档案跳转
// assessShow.value = true;
// dataList.value = val;
} }
// 处理签收 // 处理签收
const handleQsFk = (val, type) => { const handleQsFk = (val, type) => {
@ -317,7 +314,7 @@ defineExpose({
}) })
</script> </script>
<style> <style lang="scss">
.el-loading-mask { .el-loading-mask {
background: rgba(0, 0, 0, 0.5) !important; background: rgba(0, 0, 0, 0.5) !important;
} }
@ -362,4 +359,11 @@ defineExpose({
.warning-level-04 td { .warning-level-04 td {
background-color: transparent !important; background-color: transparent !important;
} }
.tabBox_zdy{
.el-table--fit {
overflow: unset !important;
}
}
</style> </style>

View File

@ -158,7 +158,7 @@ const pageData = reactive({
controlsWidth: 160, //操作栏宽度 controlsWidth: 160, //操作栏宽度
tableColumn: [ tableColumn: [
{ label: "预警图片", prop: "yjTp", showSolt: true }, { label: "预警图片", prop: "yjTp", showSolt: true },
{ label: "处置状态", prop: "czzt", showSolt: true }, { label: "状态", prop: "czzt", showSolt: true },
{ label: "预警时间", prop: "yjSj", showOverflowTooltip: true }, { label: "预警时间", prop: "yjSj", showOverflowTooltip: true },
{ label: "姓名", prop: "yjRyxm" }, { label: "姓名", prop: "yjRyxm" },
{ label: "年龄", prop: "nl", showSolt: true }, { label: "年龄", prop: "nl", showSolt: true },
@ -166,7 +166,7 @@ const pageData = reactive({
{ label: "性别", prop: "xb", showSolt: true }, { label: "性别", prop: "xb", showSolt: true },
{ label: "预警级别", prop: "yjJb", showSolt: true }, { label: "预警级别", prop: "yjJb", showSolt: true },
{ label: "相似度", prop: "xsd", showSolt: true }, { label: "相似度", prop: "xsd", showSolt: true },
{ label: "预警地", prop: "yjDz", showOverflowTooltip: true }, { label: "预警地", prop: "yjDz", showOverflowTooltip: true },
{ label: "预警次数", prop: "yjCs", showOverflowTooltip: true }, { label: "预警次数", prop: "yjCs", showOverflowTooltip: true },
{ label: "布控手机号", prop: "yjRysjh", showOverflowTooltip: true }, { label: "布控手机号", prop: "yjRysjh", showOverflowTooltip: true },
{ label: "布控车牌号", prop: "yjClcph", showOverflowTooltip: true }, { label: "布控车牌号", prop: "yjClcph", showOverflowTooltip: true },
@ -175,16 +175,13 @@ const pageData = reactive({
] ]
}); });
const showDc = ref(false) const showDc = ref(false)
const activeName = ref('local')
const addFromRefs = ref(null) const addFromRefs = ref(null)
onMounted(() => { onMounted(() => {
tabHeightFn(); tabHeightFn();
emitter.on('openAddFrom', (val) => { emitter.on('openAddFrom', (val) => {
console.log(addFromRefs.value);
if (addFromRefs.value) { if (addFromRefs.value) {
addFromRefs.value.init('add', val) addFromRefs.value.init('add', val)
} }
// addFromRefs.value.init('add', val)
}) })
}); });
const listQuery = ref({ const listQuery = ref({
@ -205,30 +202,13 @@ const onSearch = () => {
localWarningRef.value.getList(promes) localWarningRef.value.getList(promes)
} }
const loading = ref(false) const loading = ref(false)
const remoteMethod = (query) => {
if (query) {
loading.value = true
tbGsxtZdrySelectList({ ryXm: query }).then(res => {
opentions.value = res
}).finally(() => {
loading.value = false
})
} else {
opentions.value = []
}
}
const searchArr = ref() const searchArr = ref()
const resetForm = (formEl) => { const resetForm = (formEl) => {
listQuery.value = {} listQuery.value = {}
localWarningRef.value.getList() localWarningRef.value.getList()
} }
// // 表格高度计算
// const tabHeightFn = () => {
// pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
// window.onresize = function () {
// tabHeightFn();
// };
// };
// 搜索栏 // 搜索栏
const search = ref(false) const search = ref(false)
const openSearch = () => { const openSearch = () => {

View File

@ -11,7 +11,7 @@
<div class="info-item">建议内容<span>{{ it.jynr || '暂无' }}</span></div> <div class="info-item">建议内容<span>{{ it.jynr || '暂无' }}</span></div>
</div> </div>
<div> <div>
<el-empty v-if="list.length === 0" description="暂无数据" /> <el-empty v-if="list.length === 0" :image-size="0.5" description="暂无数据" />
</div> </div>
<el-divider content-position="left">反馈内容</el-divider> <el-divider content-position="left">反馈内容</el-divider>
@ -28,7 +28,7 @@
</div> </div>
</div> </div>
<div> <div>
<el-empty v-if="Fklist.length === 0" description="暂无数据" /> <el-empty v-if="Fklist.length === 0" :image-size="0.5" description="暂无数据" />
</div> </div>
</div> </div>
@ -62,7 +62,6 @@ onMounted(() => {
Fklist.value = res.fkList || [] Fklist.value = res.fkList || []
}) })
}) })
// console.log('row😃: ', props.row);
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.warning-item { .warning-item {
@ -86,5 +85,9 @@ onMounted(() => {
margin-right: 10px; margin-right: 10px;
} }
} }
::v-deep .el-empty{
--el-empty-padding: 0px;
margin-bottom: 18px;
--el-empty-description-margin-top: 10px;
}
</style> </style>

View File

@ -50,11 +50,7 @@ const rules = reactive({
zpbmdm: [{ required: true, message: "请选择指派部门", trigger: "blur" }], zpbmdm: [{ required: true, message: "请选择指派部门", trigger: "blur" }],
zpyy: [{ required: true, message: "请输入指派原因", trigger: "change" }], zpyy: [{ required: true, message: "请输入指派原因", trigger: "change" }],
}); });
watch(() => props.modelValue, (newVal, oldVal) => {
if (newVal) {
}
})
const elform = ref(null) const elform = ref(null)
const submit = async () => { const submit = async () => {
elform.value.submit(() => { elform.value.submit(() => {