Merge branch 'main' of http://61.139.16.27:26684/zy_oyj/sgxt_web
This commit is contained in:
@ -133,7 +133,6 @@ onBeforeUnmount(() => {
|
|||||||
});
|
});
|
||||||
// 带样式的下载方法
|
// 带样式的下载方法
|
||||||
const downloadWithStyles = () => {
|
const downloadWithStyles = () => {
|
||||||
|
|
||||||
const wordDocument = `
|
const wordDocument = `
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" >
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" >
|
||||||
<head>
|
<head>
|
||||||
|
|||||||
@ -732,6 +732,15 @@ export const publicRoutes = [
|
|||||||
// }
|
// }
|
||||||
// },
|
// },
|
||||||
|
|
||||||
|
{
|
||||||
|
path: "/permissionApply",
|
||||||
|
name: "permissionApply",
|
||||||
|
component: () => import("@/views/backOfficeSystem/HumanIntelligence/permissionApply/index"),
|
||||||
|
meta: {
|
||||||
|
title: "权限申请",
|
||||||
|
icon: "article-create"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path: "/JobAppraisal",
|
path: "/JobAppraisal",
|
||||||
name: "JobAppraisal",
|
name: "JobAppraisal",
|
||||||
|
|||||||
@ -173,20 +173,18 @@ const pageData = reactive({
|
|||||||
},
|
},
|
||||||
controlsWidth: 280,
|
controlsWidth: 280,
|
||||||
tableColumn: [
|
tableColumn: [
|
||||||
{ label: "群体名称", prop: "qtMc", width: 150 },
|
{ label: "群体名称", prop: "qtMc" },
|
||||||
{ label: "群体类别", prop: "qtLb", showSolt: true, width: 150 },
|
{ label: "群体类别", prop: "qtLb", showSolt: true },
|
||||||
{ label: "风险等级", prop: "qtFxdj", showSolt: true, width: 150 },
|
{ label: "风险等级", prop: "qtFxdj", showSolt: true },
|
||||||
{ label: "背景资料", prop: "qtBjzl", width: 150 },
|
// { label: "背景资料", prop: "qtBjzl" },
|
||||||
{ label: "背景信息", prop: "bgxx", showSolt: true, width: 150 },
|
{ label: "背景信息", prop: "bgxx", showSolt: true },
|
||||||
{ label: "管辖单位", prop: "gxSsdwmc", width: 150 },
|
{ label: "管辖单位", prop: "gxSsdwmc" },
|
||||||
{ label: "列控原因", prop: "zdrLkyy", width: 150 },
|
{ label: "列控原因", prop: "zdrLkyy" },
|
||||||
{ label: "开始时间", prop: "zdrRkkssj", width: 150 },
|
{ label: "开始时间", prop: "zdrRkkssj" },
|
||||||
{ label: "截至时间", prop: "zdrRkjssj", width: 150 },
|
{ label: "截至时间", prop: "zdrRkjssj" },
|
||||||
{ label: "稳控人数", prop: "zdryList", showSolt: true, width: 150 },
|
{ label: "稳控人数", prop: "zdryList", showSolt: true },
|
||||||
{ label: "状态", prop: "qtZt", showSolt: true, width: 150 },
|
{ label: "状态", prop: "qtZt", showSolt: true },
|
||||||
{ label: "标签", prop: "bqList", showSolt: true, showOverflowTooltip: true, width: 400 },
|
{ label: "标签", prop: "bqList", showSolt: true, showOverflowTooltip: true, },
|
||||||
{ label: "创建单位", prop: "xtCjbmmc", width: 150 },
|
|
||||||
{ label: "创建时间", prop: "xtCjsj", width: 150 },
|
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,232 @@
|
|||||||
|
<template>
|
||||||
|
<div class="inforReport">
|
||||||
|
<el-dialog :close-on-click-modal="false" :show-close="false" title="信息上报" v-model="visible" width="50%" top="5vh">
|
||||||
|
<div class="cntBox">
|
||||||
|
<Toolbar
|
||||||
|
style="border-bottom: 1px solid #ccc"
|
||||||
|
:editor="editorRef"
|
||||||
|
:defaultConfig="toolbarConfig"
|
||||||
|
:mode="mode"
|
||||||
|
/>
|
||||||
|
<Editor
|
||||||
|
style="height: 67vh; overflow-y: hidden;"
|
||||||
|
v-model="valueHtml"
|
||||||
|
:defaultConfig="editorConfig"
|
||||||
|
:mode="mode"
|
||||||
|
@onCreated="handleCreated"
|
||||||
|
@onChange="handChange"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="tc mt10">
|
||||||
|
<el-button @click="visible = false">取消</el-button>
|
||||||
|
<el-button type="primary" @click="downloadWithStyles">下载</el-button>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { connectSSEWithPost } from '@/utils/sse.js'
|
||||||
|
import { timeValidate } from '@/utils/tools'
|
||||||
|
import { getItem } from "@/utils/storage";
|
||||||
|
import "@wangeditor/editor/dist/css/style.css";
|
||||||
|
import { Editor, Toolbar } from "@wangeditor/editor-for-vue";
|
||||||
|
import { ref, shallowRef, computed, onBeforeUnmount, onMounted, watch } from "vue";
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
modelValue: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
type: Array,
|
||||||
|
default: () => []
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const baseInfo = {
|
||||||
|
ssbm:getItem('deptId') ? getItem("deptId")[0].deptName : '',
|
||||||
|
time:timeValidate(null,'ymd')
|
||||||
|
}
|
||||||
|
const emit = defineEmits(['update:modelValue'])
|
||||||
|
|
||||||
|
const visible = computed({
|
||||||
|
get: () => props.modelValue,
|
||||||
|
set: (val) => emit('update:modelValue', val)
|
||||||
|
})
|
||||||
|
|
||||||
|
// 编辑器实例,必须用 shallowRef
|
||||||
|
const editorRef = shallowRef()
|
||||||
|
const valueHtml = ref('')// 内容 HTML
|
||||||
|
const mode = 'default'
|
||||||
|
const toolbarConfig = {}
|
||||||
|
const editorConfig = { placeholder: '请输入内容...' }
|
||||||
|
// 带样式的下载方法
|
||||||
|
const downloadWithStyles = () => {
|
||||||
|
const wordDocument = `
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" >
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||||
|
<title>富文本导出</title>
|
||||||
|
<style>
|
||||||
|
/* 应用两端对齐样式 */
|
||||||
|
body {
|
||||||
|
text-align: justify;
|
||||||
|
text-justify: inter-character; /* 中文文本两端对齐 */
|
||||||
|
font-family: "Microsoft YaHei", Arial, sans-serif;
|
||||||
|
}
|
||||||
|
p {
|
||||||
|
text-align: justify;
|
||||||
|
text-justify: inter-character;
|
||||||
|
}
|
||||||
|
.w-e-text-container [data-slate-editor] .table-container{
|
||||||
|
border: none !important;
|
||||||
|
border-bottom: 1px solid #ccc !important;
|
||||||
|
padding: 10px 10px 0px !important;
|
||||||
|
border-radius: 0 !important;
|
||||||
|
}
|
||||||
|
.w-e-text-container [data-slate-editor] table td, .w-e-text-container [data-slate-editor] table th{
|
||||||
|
border: none !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
${valueHtml.value}
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
`;
|
||||||
|
|
||||||
|
const blob = new Blob([wordDocument], {
|
||||||
|
type: 'application/msword'
|
||||||
|
});
|
||||||
|
|
||||||
|
saveAs(blob, '情报信息报告.doc');
|
||||||
|
};
|
||||||
|
|
||||||
|
// 处理事件
|
||||||
|
const handleEvents = async () =>{
|
||||||
|
// 模拟
|
||||||
|
// setTimeout(async ()=>{
|
||||||
|
// let prompt = '对事件的性质、事件的发展,指向性、危害性、可控性等进行分析。'
|
||||||
|
// if (valueHtml.value.includes('事件分析中。。。')) {
|
||||||
|
// valueHtml.value = valueHtml.value.replace('事件分析中。。。', prompt)
|
||||||
|
// }
|
||||||
|
// },1500)
|
||||||
|
try {
|
||||||
|
let prompt = '对事件的性质、事件的发展,指向性、危害性、可控性等进行分析。'
|
||||||
|
await connectSSEWithPost(prompt, {
|
||||||
|
onChunk: (content) => {
|
||||||
|
valueHtml.value = valueHtml.value.replace('事件分析中。。。', content)
|
||||||
|
},
|
||||||
|
onComplete: () => {
|
||||||
|
console.log('SSE连接完成');
|
||||||
|
},
|
||||||
|
onError: (error) => {
|
||||||
|
console.error('SSE连接错误:', error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (err) {
|
||||||
|
valueHtml.value = valueHtml.value.replace('事件分析中。。。', '分析失败,请稍后重试')
|
||||||
|
console.error('分析失败:', err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 工作指引
|
||||||
|
const handleWork = async () =>{
|
||||||
|
// 模拟
|
||||||
|
// setTimeout(async ()=>{
|
||||||
|
// let prompt = '根据分析内容,针对性提出一些对策建议。'
|
||||||
|
// if (valueHtml.value.includes('工作指引分析中。。。')) {
|
||||||
|
// valueHtml.value = valueHtml.value.replace('工作指引分析中。。。', prompt)
|
||||||
|
// }
|
||||||
|
// },1500)
|
||||||
|
try {
|
||||||
|
let prompt = '根据分析内容,针对性提出一些对策建议。'
|
||||||
|
await connectSSEWithPost(prompt, {
|
||||||
|
onChunk: (content) => {
|
||||||
|
valueHtml.value = valueHtml.value.replace('工作指引分析中。。。', content)
|
||||||
|
},
|
||||||
|
onComplete: () => {
|
||||||
|
console.log('SSE连接完成');
|
||||||
|
},
|
||||||
|
onError: (error) => {
|
||||||
|
console.error('SSE连接错误:', error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (err) {
|
||||||
|
valueHtml.value = valueHtml.value.replace('工作指引分析中。。。', '分析失败,请稍后重试')
|
||||||
|
console.error('分析失败:', err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleHtml = async (val) =>{
|
||||||
|
|
||||||
|
let html = `<h1 style="text-align: center; font-size: 32px; font-weight: bold; font-family: 'Songti SC', 'SimSun', serif; margin-bottom: 20px;">
|
||||||
|
<span style="color: rgb(225, 60, 57);">林芝公安情报信息</span>
|
||||||
|
</h1>
|
||||||
|
<table style="width: 100%; border-bottom: 1px solid black; margin-bottom: 30px; font-family: 'FangSong', serif; font-size: 16px; border-collapse: collapse;">
|
||||||
|
<tr >
|
||||||
|
<td style="text-align: left; padding-bottom: 10px; border: none;">单位:${baseInfo.ssbm}</td>
|
||||||
|
<td style="text-align: right; padding-bottom: 10px; border: none;">时间:${baseInfo.time}</td>
|
||||||
|
</tr>
|
||||||
|
</table><h2 style="text-align: center;"></h2>
|
||||||
|
<h2 style="text-align: center; font-size: 24px; font-family: 'SimHei', sans-serif; margin-bottom: 20px;">关于对 XXXX 事件的综合研判</h2>
|
||||||
|
<p style="text-indent: 2em; line-height: 2; font-family: 'FangSong', serif; font-size: 18px;">近日,${baseInfo.ssbm}(单位)接报 ${val.length} 起关于 XXXXXX 事件的情报信息,合并研判如下:</p>
|
||||||
|
<h3 style="font-size: 20px; font-weight: bold; margin-top: 20px; margin-bottom: 10px; font-family: 'SimHei', sans-serif;">一、事件概况</h3>`
|
||||||
|
val.forEach((item,index)=>{
|
||||||
|
html+=`<p style="text-indent: 2em; line-height: 2; font-family: 'FangSong', serif; font-size: 18px;">事件 ${index+1}:${item.qbmc}(${item.xsBh});</p>`
|
||||||
|
})
|
||||||
|
html+=`<h3 style="font-size: 20px; font-weight: bold; margin-top: 20px; margin-bottom: 10px; font-family: 'SimHei', sans-serif;">二、事件分析</h3>`
|
||||||
|
html+=`<p style="text-indent: 2em; line-height: 2; font-family: 'FangSong', serif; font-size: 18px;">事件分析中。。。</p>`
|
||||||
|
html+=`<h3 style="font-size: 20px; font-weight: bold; margin-top: 20px; margin-bottom: 10px; font-family: 'SimHei', sans-serif;">三、工作指引</h3>
|
||||||
|
<p style="text-indent: 2em; line-height: 2; font-family: 'FangSong', serif; font-size: 18px;">工作指引分析中。。。</p>
|
||||||
|
`
|
||||||
|
valueHtml.value = html
|
||||||
|
await handleWork(html) //工作指引
|
||||||
|
await handleEvents(html) //处理事件
|
||||||
|
}
|
||||||
|
|
||||||
|
watch(()=>props.data,val=>{
|
||||||
|
handleHtml(val)
|
||||||
|
},{immediate:true,deep:true})
|
||||||
|
|
||||||
|
|
||||||
|
// 组件销毁时,也及时销毁编辑器
|
||||||
|
onBeforeUnmount(() => {
|
||||||
|
const editor = editorRef.value
|
||||||
|
if (editor == null) return
|
||||||
|
editor.destroy()
|
||||||
|
})
|
||||||
|
|
||||||
|
const handleCreated = (editor) => {
|
||||||
|
editorRef.value = editor // 记录 editor 实例,重要!
|
||||||
|
}
|
||||||
|
|
||||||
|
//内容发生变化
|
||||||
|
const handChange = (editor) => {
|
||||||
|
// 判断是否是一个空段落,是空就传空文本
|
||||||
|
console.log(editor.getHtml(), 'editor.getHtml()');
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.cntBox {
|
||||||
|
width: 100%;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
.inforReport{
|
||||||
|
.w-e-text-container [data-slate-editor] .table-container{
|
||||||
|
border: none !important;
|
||||||
|
border-bottom: 1px solid #ccc !important;
|
||||||
|
padding: 10px 10px 0px !important;
|
||||||
|
border-radius: 0 !important;
|
||||||
|
}
|
||||||
|
.w-e-text-container [data-slate-editor] table td, .w-e-text-container [data-slate-editor] table th{
|
||||||
|
border: none !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -12,7 +12,7 @@
|
|||||||
</el-icon>
|
</el-icon>
|
||||||
<span class="vertical-middle">新增</span>
|
<span class="vertical-middle">新增</span>
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button type="primary" @click="dologCancel()" size="small">
|
<el-button type="primary" @click="exportFileModel = true;" size="small">
|
||||||
<el-icon class="vertical-middle">
|
<el-icon class="vertical-middle">
|
||||||
<CirclePlus />
|
<CirclePlus />
|
||||||
</el-icon>
|
</el-icon>
|
||||||
@ -30,7 +30,12 @@
|
|||||||
<CirclePlus />
|
<CirclePlus />
|
||||||
</el-icon>
|
</el-icon>
|
||||||
<span class="vertical-middle">删除</span>
|
<span class="vertical-middle">删除</span>
|
||||||
</el-button></template>
|
</el-button>
|
||||||
|
<el-button type="primary" size="small" @click="handleReport">
|
||||||
|
<el-icon class="vertical-middle"><Edit /></el-icon>
|
||||||
|
<span class="vertical-middle">情报信息报告</span>
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
</PageTitle>
|
</PageTitle>
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox" :style="{ height: (pageData.tableHeight + 40) + 'px' }">
|
<div class="tabBox" :style="{ height: (pageData.tableHeight + 40) + 'px' }">
|
||||||
@ -49,7 +54,6 @@
|
|||||||
<template #lczt="{ row }">
|
<template #lczt="{ row }">
|
||||||
<DictTag :tag="false" :value="row.lczt" :options="D_BZ_LCZT" />
|
<DictTag :tag="false" :value="row.lczt" :options="D_BZ_LCZT" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template #cyqk="{ row }">
|
<template #cyqk="{ row }">
|
||||||
<el-link v-if="isShowBtn('采纳')" size="small" type="danger" @click="cnMsg(row)"
|
<el-link v-if="isShowBtn('采纳')" size="small" type="danger" @click="cnMsg(row)"
|
||||||
:disabled="butcontroll('04', row.lczt)">采纳</el-link>
|
:disabled="butcontroll('04', row.lczt)">采纳</el-link>
|
||||||
@ -68,11 +72,9 @@
|
|||||||
@click="postXxcjXxcjTjsh(row)">送审</el-link>
|
@click="postXxcjXxcjTjsh(row)">送审</el-link>
|
||||||
<!-- (01 提交 02 上报县局 03 上班市局 04 采纳 05 退回 06 打标签 07 转合成 08 转线索 09 转会商)v-if="qxkz.deptLevel == '01'" -->
|
<!-- (01 提交 02 上报县局 03 上班市局 04 采纳 05 退回 06 打标签 07 转合成 08 转线索 09 转会商)v-if="qxkz.deptLevel == '01'" -->
|
||||||
|
|
||||||
|
|
||||||
<el-link v-if="isShowBtn('上报') && qxkz.deptLevel == '03'" size="small" type="primary" @click="appearNewspapers(row)" :disabled="row.lczt != '01'">上报</el-link>
|
<el-link v-if="isShowBtn('上报') && qxkz.deptLevel == '03'" size="small" type="primary" @click="appearNewspapers(row)" :disabled="row.lczt != '01'">上报</el-link>
|
||||||
<el-link v-else-if="isShowBtn('上报')" size="small" type="primary" @click="appearNewspapers(row)"
|
<el-link v-else-if="isShowBtn('上报')" size="small" type="primary" @click="appearNewspapers(row)" :disabled="!(row.xldshzt == '02'&&row.lczt == '02')">上报</el-link>
|
||||||
:disabled="!(row.xldshzt == '02'&&row.lczt == '02')">上报</el-link>
|
<!-- && row.lczt != '02' -->
|
||||||
<!-- && row.lczt != '02' -->
|
|
||||||
<el-link v-if="isShowBtn('分组')" size="small" type="primary" @click="opneMsg(row)"
|
<el-link v-if="isShowBtn('分组')" size="small" type="primary" @click="opneMsg(row)"
|
||||||
:disabled="row.sldshzt != '02'">分组</el-link>
|
:disabled="row.sldshzt != '02'">分组</el-link>
|
||||||
<!-- 只有领导有肯定 -->
|
<!-- 只有领导有肯定 -->
|
||||||
@ -87,17 +89,13 @@
|
|||||||
<el-link v-if="isShowBtn('转线索')" size="small" type="primary" @click="FollowUpOnLeads(row)"
|
<el-link v-if="isShowBtn('转线索')" size="small" type="primary" @click="FollowUpOnLeads(row)"
|
||||||
:disabled="row.sldshzt != '02'">转线索</el-link>
|
:disabled="row.sldshzt != '02'">转线索</el-link>
|
||||||
<!-- 所有状态都能进行转合成 -->
|
<!-- 所有状态都能进行转合成 -->
|
||||||
<!-- <el-link v-if="isShowBtn('转合成')" size="small" type="primary" @click="openFkDialogszl(row)"
|
<!-- <el-link v-if="isShowBtn('转合成')" size="small" type="primary" @click="openFkDialogszl(row)" :disabled="butcontroll('01', row.lczt)">转合成</el-link> -->
|
||||||
:disabled="butcontroll('01', row.lczt)">转合成</el-link> -->
|
|
||||||
<!-- 所有状态都能进行转会商 -->
|
<!-- 所有状态都能进行转会商 -->
|
||||||
<!-- <el-link v-if="isShowBtn('转会商')" size="small" type="primary" @click="handleTransferMerchant(row)"
|
<!-- <el-link v-if="isShowBtn('转会商')" size="small" type="primary" @click="handleTransferMerchant(row)" :disabled="butcontroll('01', row.lczt)">转会商</el-link> -->
|
||||||
:disabled="butcontroll('01', row.lczt)">转会商</el-link> -->
|
|
||||||
|
|
||||||
<el-link v-if="isShowBtn('关注部门')" :disabled="row.sldshzt != '02'" size="small" type="primary"
|
<el-link v-if="isShowBtn('关注部门')" :disabled="row.sldshzt != '02'" size="small" type="primary" @click="FollowUpOnDept(row)">关注</el-link>
|
||||||
@click="FollowUpOnDept(row)">关注</el-link>
|
|
||||||
<!-- 市局能给所有数据创建标签 -->
|
<!-- 市局能给所有数据创建标签 -->
|
||||||
<el-link v-if="isShowBtn('打标签')" size="small" type="primary" @click="openCustomTag(row)"
|
<el-link v-if="isShowBtn('打标签')" size="small" type="primary" @click="openCustomTag(row)" :disabled="row.sldshzt != '02'">打标签</el-link>
|
||||||
:disabled="row.sldshzt != '02'">打标签</el-link>
|
|
||||||
</template>
|
</template>
|
||||||
</MyTable>
|
</MyTable>
|
||||||
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
|
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
|
||||||
@ -108,21 +106,55 @@
|
|||||||
<!-- 新增 -->
|
<!-- 新增 -->
|
||||||
<AddForm ref="detailDiloag" @getList="getList" :titleData="titleData" :dict="{ D_BZ_LCZT, D_BZ_SSSHZT }" />
|
<AddForm ref="detailDiloag" @getList="getList" :titleData="titleData" :dict="{ D_BZ_LCZT, D_BZ_SSSHZT }" />
|
||||||
</div>
|
</div>
|
||||||
<ExportFile v-model="exportFileModel" :tableColumn="tableColumn" :dict="{ D_GS_XS_LY, D_GS_XS_LX, D_GS_XS_LX }"
|
|
||||||
:dataModel="pageData.tableData" />
|
<ExportFile
|
||||||
<MakeTag v-model="chooseRow" :dataList="dataList" :dict="{ D_BZ_CJLX, D_BZ_QBCZZT, D_GS_XS_LX, D_BZ_BQJB }"
|
v-model="exportFileModel"
|
||||||
@getList="getList" />
|
:tableColumn="tableColumn"
|
||||||
<Fszl v-model="fszlShow" path="/xxcj/sendFqzl" :itemData="dataList" />
|
:dict="{ D_GS_XS_LY, D_GS_XS_LX, D_GS_XS_LX }"
|
||||||
<CustomTag v-model="customTagShow" :dataList="dataList" @getList="getList" :dict="{ D_XXCJ_BQLX }" />
|
:dataModel="pageData.tableData"
|
||||||
<Configuration v-model="configurationShow" :dataList="dataList" @getList="getList" />
|
/>
|
||||||
|
|
||||||
|
<MakeTag
|
||||||
|
v-model="chooseRow"
|
||||||
|
:dataList="dataList"
|
||||||
|
:dict="{ D_BZ_CJLX, D_BZ_QBCZZT, D_GS_XS_LX, D_BZ_BQJB }"
|
||||||
|
@getList="getList"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<Fszl
|
||||||
|
v-model="fszlShow"
|
||||||
|
path="/xxcj/sendFqzl"
|
||||||
|
:itemData="dataList"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<CustomTag
|
||||||
|
v-model="customTagShow"
|
||||||
|
:dataList="dataList"
|
||||||
|
@getList="getList"
|
||||||
|
:dict="{ D_XXCJ_BQLX }"
|
||||||
|
/>
|
||||||
|
<Configuration
|
||||||
|
v-model="configurationShow"
|
||||||
|
:dataList="dataList"
|
||||||
|
@getList="getList"
|
||||||
|
/>
|
||||||
|
|
||||||
<!-- 转会商 -->
|
<!-- 转会商 -->
|
||||||
<transferMerchant v-if="isShowTransferMerchantTc" :row="currRow" ref="transferMerchantRef" title="转会商"
|
<transferMerchant
|
||||||
@close="isShowTransferMerchantTc = false" @ok="getList" />
|
v-if="isShowTransferMerchantTc"
|
||||||
|
:row="currRow"
|
||||||
|
title="转会商"
|
||||||
|
@close="isShowTransferMerchantTc = false"
|
||||||
|
@ok="getList"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<!-- 情报信息报告 -->
|
||||||
|
<InforReport v-if="inforReportShow" v-model="inforReportShow" :data="tableList" />
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
|
import InforReport from './components/inforReport.vue'
|
||||||
import PageTitle from "@/components/aboutTable/PageTitle.vue";
|
import PageTitle from "@/components/aboutTable/PageTitle.vue";
|
||||||
import MyTable from "@/components/aboutTable/MyTable.vue";
|
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
import Pages from "@/components/aboutTable/Pages.vue";
|
import Pages from "@/components/aboutTable/Pages.vue";
|
||||||
@ -140,32 +172,28 @@ import Fszl from '@/views/backOfficeSystem/HumanIntelligence/components/fszl.vue
|
|||||||
import CustomTag from '../components/customTag.vue'
|
import CustomTag from '../components/customTag.vue'
|
||||||
import Configuration from '../components/configuration.vue'
|
import Configuration from '../components/configuration.vue'
|
||||||
import transferMerchant from "./components/transferMerchant.vue";
|
import transferMerchant from "./components/transferMerchant.vue";
|
||||||
import { isShiQingZhi } from "@/utils/auth.js"
|
import { Edit } from "@element-plus/icons";
|
||||||
|
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
const { D_GS_XS_LY, D_BZ_SSSHZT, D_BZ_SSZT, D_BZ_SF, D_GS_XS_LX, D_BZ_BQJB,
|
const { D_GS_XS_LY, D_BZ_SSSHZT, D_GS_XS_LX, D_BZ_BQJB,D_BZ_QBCZZT, D_BZ_CJLX, D_BZ_LCZT,D_XXCJ_BQLX } = proxy.$dict( "D_GS_XS_LY", 'D_BZ_SSSHZT',"D_GS_XS_LX", "D_BZ_QBCZZT", "D_BZ_CJLX", "D_BZ_BQJB", "D_BZ_LCZT", "D_XXCJ_BQLX"); //获取字典数据
|
||||||
D_GS_XS_QTLX, D_GS_ZDQT_LB,
|
const route = useRoute()
|
||||||
D_BZ_BMJB, D_BZ_CLPP, D_BZ_CLYS, D_BZ_CLLX, D_BZ_XZQHDM, D_BZ_QBCZZT, D_BZ_CJLX, D_BZ_LCZT,
|
const titleData = ref()
|
||||||
D_XXCJ_BQLX } =
|
const exportFileModel = ref(false)
|
||||||
proxy.$dict("D_BZ_BMJB", "D_GS_XS_LY", 'D_BZ_SSSHZT',
|
const qxkz = reactive({
|
||||||
"D_BZ_SSZT", "D_BZ_SF", "D_GS_XS_LX", "D_GS_XS_QTLX",
|
deptBizType: '',
|
||||||
"D_GS_ZDQT_LB", "D_BZ_CLPP", "D_BZ_CLYS", "D_BZ_CLLX", "D_BZ_XZQHDM", "D_BZ_QBCZZT", "D_BZ_CJLX", "D_BZ_BQJB", "D_BZ_LCZT", "D_XXCJ_BQLX"); //获取字典数据
|
deptLevel: '',
|
||||||
|
roleCode: false,
|
||||||
|
depBool: false
|
||||||
|
});
|
||||||
|
const fszlShow = ref(false)// 发送指令
|
||||||
const detailDiloag = ref();
|
const detailDiloag = ref();
|
||||||
|
const inforReportShow = ref(false) //情报信息报告
|
||||||
|
const customTagShow = ref(false)// 打标签
|
||||||
|
const configurationShow = ref(false)// 配置关注部门
|
||||||
const searchBox = ref(); //搜索框
|
const searchBox = ref(); //搜索框
|
||||||
const ids = ref([])
|
const ids = ref([])
|
||||||
const tableList = ref([]);
|
const tableList = ref([]);
|
||||||
const chooseData = (val) => {
|
|
||||||
ids.value = val.map(item => {
|
|
||||||
return item.id
|
|
||||||
})
|
|
||||||
tableList.value = val
|
|
||||||
}
|
|
||||||
/** 市情指 */
|
|
||||||
const cityIntelligenceCommand = isShiQingZhi()
|
|
||||||
const currRow = ref({})
|
const currRow = ref({})
|
||||||
const transferMerchantRef = ref()
|
|
||||||
const isShowTransferMerchantTc = ref(false)
|
const isShowTransferMerchantTc = ref(false)
|
||||||
|
|
||||||
const isShow = ref(false)
|
const isShow = ref(false)
|
||||||
const searchConfiger = ref([
|
const searchConfiger = ref([
|
||||||
{ label: "录入人", prop: 'xssbr', placeholder: "请输入录入人", showType: "input" },
|
{ label: "录入人", prop: 'xssbr', placeholder: "请输入录入人", showType: "input" },
|
||||||
@ -201,29 +229,38 @@ const pageData = reactive({
|
|||||||
{ label: "上报单位", prop: "ssbm" },
|
{ label: "上报单位", prop: "ssbm" },
|
||||||
{ label: "流程状态", prop: "lczt", showSolt: true },
|
{ label: "流程状态", prop: "lczt", showSolt: true },
|
||||||
{ label: "采用情况", prop: "cyqk", showSolt: true },
|
{ label: "采用情况", prop: "cyqk", showSolt: true },
|
||||||
// { label: "标签内容", prop: "lczt", showSolt: true },
|
|
||||||
// { label: "消息状态", prop: "czzt", showSolt: true },
|
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
// 导出数据
|
||||||
|
const tableColumn = reactive([
|
||||||
|
{ label: "上报人姓名", prop: "xssbr" },
|
||||||
|
{ label: "情报上报时间", prop: "sxsbsj" },
|
||||||
|
{ label: "情报编号", prop: "xsBh" },
|
||||||
|
{ label: "情报标题", prop: "qbmc" },
|
||||||
|
{ label: "情报来源", prop: "qbly", showSolt: true, zd: 'D_BZ_CJLX' },
|
||||||
|
])
|
||||||
const queryFrom = ref({});
|
const queryFrom = ref({});
|
||||||
|
|
||||||
const chooseRow = ref(false)
|
const chooseRow = ref(false)
|
||||||
const dataList = ref()
|
const dataList = ref()
|
||||||
|
|
||||||
|
const chooseData = (val) => {
|
||||||
|
ids.value = val.map(item => item.id)
|
||||||
|
tableList.value = val
|
||||||
|
}
|
||||||
|
|
||||||
// 采纳
|
// 采纳
|
||||||
const cnMsg = (item) => {
|
const cnMsg = (item) => {
|
||||||
// if ( qxkz.depBool) {
|
|
||||||
proxy.$confirm("确定要采纳", "警告", { type: "warning" }).then(() => {
|
proxy.$confirm("确定要采纳", "警告", { type: "warning" }).then(() => {
|
||||||
xxcjUpdateCzlc({ id: item.id, lczt: '04' }).then(res => {
|
xxcjUpdateCzlc({ id: item.id, lczt: '04' }).then(res => {
|
||||||
proxy.$message({ type: "success", message: "采纳成功" });
|
proxy.$message({ type: "success", message: "采纳成功" });
|
||||||
getList();
|
getList();
|
||||||
})
|
})
|
||||||
}).catch(() => { });
|
}).catch(() => { });
|
||||||
// }
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const handleReport = () => {
|
||||||
|
if(tableList.value.length == 0) return proxy.$message({ type: "warning", message: "请选择情报信息" });
|
||||||
|
inforReportShow.value = true
|
||||||
}
|
}
|
||||||
// 回退
|
// 回退
|
||||||
const rollbackNewspapers = (item) => {
|
const rollbackNewspapers = (item) => {
|
||||||
@ -271,17 +308,12 @@ const rollbackNewspapers = (item) => {
|
|||||||
const appearNewspapers = (item) => {
|
const appearNewspapers = (item) => {
|
||||||
if ((item.lczt == '01' || item.lczt == '05' || item.lczt == '02') && item.qbjb == '00' && qxkz.deptLevel != '01') {
|
if ((item.lczt == '01' || item.lczt == '05' || item.lczt == '02') && item.qbjb == '00' && qxkz.deptLevel != '01') {
|
||||||
proxy.$confirm("确定要上报", "警告", { type: "warning" }).then(() => {
|
proxy.$confirm("确定要上报", "警告", { type: "warning" }).then(() => {
|
||||||
let promes = {}
|
let promes = { id: item.id }
|
||||||
if (qxkz.deptLevel == '02') {
|
promes.lczt = qxkz.deptLevel == '02' ? '03' : '02';
|
||||||
promes = { id: item.id, lczt: '03' }
|
|
||||||
} else {
|
|
||||||
promes = { id: item.id, lczt: '02' }
|
|
||||||
}
|
|
||||||
xxcjUpdateCzlc(promes).then(res => {
|
xxcjUpdateCzlc(promes).then(res => {
|
||||||
proxy.$message({ type: "success", message: "上报成功" });
|
proxy.$message({ type: "success", message: "上报成功" });
|
||||||
getList();
|
getList();
|
||||||
})
|
})
|
||||||
|
|
||||||
}).catch(() => { });
|
}).catch(() => { });
|
||||||
} else {
|
} else {
|
||||||
proxy.$message({ type: "warning", message: "市局无法进行上报" });
|
proxy.$message({ type: "warning", message: "市局无法进行上报" });
|
||||||
@ -292,8 +324,7 @@ const opneMsg = (item) => {
|
|||||||
chooseRow.value = true
|
chooseRow.value = true
|
||||||
dataList.value = [item]
|
dataList.value = [item]
|
||||||
}
|
}
|
||||||
// 打标签
|
|
||||||
const customTagShow = ref(false)
|
|
||||||
const openCustomTag = (item) => {
|
const openCustomTag = (item) => {
|
||||||
if (qxkz.depBool) {
|
if (qxkz.depBool) {
|
||||||
customTagShow.value = true
|
customTagShow.value = true
|
||||||
@ -310,10 +341,9 @@ const affirm = (item) => {
|
|||||||
getList();
|
getList();
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
// 配置关注部门
|
|
||||||
const configurationShow = ref(false)
|
|
||||||
const FollowUpOnDept = (item) => {
|
const FollowUpOnDept = (item) => {
|
||||||
if (qxkz.depBool) {
|
if (qxkz.depBool) {
|
||||||
configurationShow.value = true
|
configurationShow.value = true
|
||||||
@ -321,12 +351,8 @@ const FollowUpOnDept = (item) => {
|
|||||||
} else {
|
} else {
|
||||||
proxy.$message.warning('暂无权限')
|
proxy.$message.warning('暂无权限')
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 批量分组
|
// 批量分组
|
||||||
// const batchMark = () => {
|
// const batchMark = () => {
|
||||||
// const listDb = tableList.value.filter(item => item.lczt != '04')
|
// const listDb = tableList.value.filter(item => item.lczt != '04')
|
||||||
@ -341,6 +367,7 @@ const FollowUpOnDept = (item) => {
|
|||||||
// })
|
// })
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
const handleSumbit = () => {
|
const handleSumbit = () => {
|
||||||
const listDb = tableList.value.filter(item => item.czzt != '01' && item.czzt != '04')
|
const listDb = tableList.value.filter(item => item.czzt != '01' && item.czzt != '04')
|
||||||
if (listDb.length == 0) {
|
if (listDb.length == 0) {
|
||||||
@ -351,11 +378,7 @@ const handleSumbit = () => {
|
|||||||
})
|
})
|
||||||
}).catch(() => { });
|
}).catch(() => { });
|
||||||
} else {
|
} else {
|
||||||
proxy.$message({
|
proxy.$message({ message: '请选择正确数据', type: 'warning', showClose: true })
|
||||||
message: '请选择正确数据',
|
|
||||||
type: 'warning',
|
|
||||||
showClose: true,
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -378,8 +401,6 @@ const butcontroll = (val, zt) => {
|
|||||||
|
|
||||||
// 搜索
|
// 搜索
|
||||||
const onSearch = (val) => {
|
const onSearch = (val) => {
|
||||||
console.log(val.bqdmList);
|
|
||||||
|
|
||||||
const promes = {
|
const promes = {
|
||||||
...pageData.pageConfiger,
|
...pageData.pageConfiger,
|
||||||
...val,
|
...val,
|
||||||
@ -387,7 +408,6 @@ const onSearch = (val) => {
|
|||||||
endTime: val.endTime ? val.endTime[1] : '',
|
endTime: val.endTime ? val.endTime[1] : '',
|
||||||
bqdmList: val.bqdmList ? val.bqdmList.join(',') : ""
|
bqdmList: val.bqdmList ? val.bqdmList.join(',') : ""
|
||||||
}
|
}
|
||||||
|
|
||||||
queryFrom.value = { ...promes }
|
queryFrom.value = { ...promes }
|
||||||
pageData.pageConfiger.pageCurrent = 1;
|
pageData.pageConfiger.pageCurrent = 1;
|
||||||
getList()
|
getList()
|
||||||
@ -405,8 +425,6 @@ const changeSize = (val) => {
|
|||||||
// 获取列表
|
// 获取列表
|
||||||
const getList = () => {
|
const getList = () => {
|
||||||
pageData.tableConfiger.loading = true;
|
pageData.tableConfiger.loading = true;
|
||||||
console.log(pageData.pageConfiger);
|
|
||||||
|
|
||||||
let data = { ...pageData.pageConfiger, ...queryFrom.value };
|
let data = { ...pageData.pageConfiger, ...queryFrom.value };
|
||||||
xxcjSelectXxsbPage(data).then(res => {
|
xxcjSelectXxsbPage(data).then(res => {
|
||||||
pageData.tableData = res.records || [];
|
pageData.tableData = res.records || [];
|
||||||
@ -419,22 +437,12 @@ const delDictItem = (id) => {
|
|||||||
proxy.$confirm("确定要删除", "警告", { type: "warning" }).then(() => {
|
proxy.$confirm("确定要删除", "警告", { type: "warning" }).then(() => {
|
||||||
xxcjDeletes({ ids: Array.isArray(id) ? id : [id] }).then((res) => {
|
xxcjDeletes({ ids: Array.isArray(id) ? id : [id] }).then((res) => {
|
||||||
proxy.$message({ type: "success", message: "删除成功" });
|
proxy.$message({ type: "success", message: "删除成功" });
|
||||||
getList();
|
getList();
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
})
|
})
|
||||||
}).catch(() => { });
|
}).catch(() => { });
|
||||||
}
|
}
|
||||||
// 导出数据
|
|
||||||
const tableColumn = reactive([
|
|
||||||
{ label: "上报人姓名", prop: "xssbr" },
|
|
||||||
{ label: "情报上报时间", prop: "sxsbsj" },
|
|
||||||
{ label: "情报编号", prop: "xsBh" },
|
|
||||||
{ label: "情报标题", prop: "qbmc" },
|
|
||||||
// { label: "情报类型", prop: "qblx", showSolt: true, zd: 'D_GS_XS_LX' },
|
|
||||||
{ label: "情报来源", prop: "qbly", showSolt: true, zd: 'D_BZ_CJLX' },
|
|
||||||
// { label: "指向地点", prop: "zxdz" },
|
|
||||||
// { label: "情报内容", prop: "qbnr", showOverflowTooltip: true },
|
|
||||||
])
|
|
||||||
// 详情
|
// 详情
|
||||||
const addEdit = (type, row) => {
|
const addEdit = (type, row) => {
|
||||||
isShow.value = true;
|
isShow.value = true;
|
||||||
@ -450,78 +458,25 @@ const openXxqk = (row) => {
|
|||||||
}, 500)
|
}, 500)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const route = useRoute()
|
|
||||||
const titleData = ref()
|
|
||||||
const qxkz = reactive({
|
|
||||||
deptBizType: '',
|
|
||||||
deptLevel: '',
|
|
||||||
roleCode: false,
|
|
||||||
depBool: false
|
|
||||||
});
|
|
||||||
const qxzt = ref(false)
|
|
||||||
|
|
||||||
onMounted(() => {
|
|
||||||
const { deptBizType, deptLevel } = getItem('deptId')[0]
|
|
||||||
const Jb = deptLevel[0] == '2' ? '01' : deptLevel[0] == '3' ? '02' : '03'
|
|
||||||
qxkz.roleCode = getItem('roleList').find(item => item.roleCode == 'JS_666666') != undefined
|
|
||||||
qxkz.deptBizType = deptBizType
|
|
||||||
qxkz.deptLevel = Jb
|
|
||||||
if (deptBizType == '23' && Jb == '01') {
|
|
||||||
qxkz.depBool = true
|
|
||||||
} else {
|
|
||||||
qxkz.depBool = false
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
getRouter()
|
|
||||||
tabHeightFn()
|
|
||||||
if (route.query.id) {
|
|
||||||
detailDiloag.value.init('edit', {
|
|
||||||
id: route.query.id
|
|
||||||
});
|
|
||||||
return
|
|
||||||
}
|
|
||||||
getList()
|
|
||||||
|
|
||||||
|
|
||||||
});
|
|
||||||
const getRouter = () => {
|
|
||||||
titleData.value = route.meta.title
|
|
||||||
}
|
|
||||||
const exportFileModel = ref(false)
|
|
||||||
const dologCancel = () => {
|
|
||||||
exportFileModel.value = true;
|
|
||||||
}
|
|
||||||
// 搜索栏
|
|
||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 280;
|
||||||
window.onresize = function () {
|
window.onresize = function () {
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
// 转线索
|
// 转线索
|
||||||
const FollowUpOnLeads = (row) => {
|
const FollowUpOnLeads = (row) => {
|
||||||
if (!qxkz.depBool) {
|
if (!qxkz.depBool) return proxy.$message({message: '权限不足',type: 'warning',showClose: true, })
|
||||||
proxy.$message({
|
proxy.$confirm("确定要转线索吗?", "警告", { type: "warning" }).then(() => {
|
||||||
message: '权限不足',
|
xxcjXxzsx({ ids: Array.isArray(row) ? row.join(',') : row.id }).then(res => {
|
||||||
type: 'warning',
|
proxy.$message({ type: "success", message: "转线索成功" });
|
||||||
showClose: true,
|
getList();
|
||||||
})
|
})
|
||||||
return
|
})
|
||||||
} else {
|
|
||||||
proxy.$confirm("确定要转线索吗?", "警告", { type: "warning" }).then(() => {
|
|
||||||
xxcjXxzsx({ ids: Array.isArray(row) ? row.join(',') : row.id }).then(res => {
|
|
||||||
proxy.$message({ type: "success", message: "转线索成功" });
|
|
||||||
getList();
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
// 发送指令
|
|
||||||
const fszlShow = ref(false)
|
|
||||||
const openFkDialogszl = (row) => {
|
const openFkDialogszl = (row) => {
|
||||||
if (!qxkz.depBool) {
|
if (!qxkz.depBool) {
|
||||||
proxy.$message({
|
proxy.$message({
|
||||||
@ -536,13 +491,6 @@ const openFkDialogszl = (row) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** 获取当前角色 */
|
/** 获取当前角色 */
|
||||||
function getRole() {
|
function getRole() {
|
||||||
const { deptBizType, deptLevel } = getItem('deptId')[0]
|
const { deptBizType, deptLevel } = getItem('deptId')[0]
|
||||||
@ -576,7 +524,6 @@ const isShowBtn = (btnName, row = {}) => {
|
|||||||
if (role === '部门') {
|
if (role === '部门') {
|
||||||
if (btnName === '续报') return lczt != '01'
|
if (btnName === '续报') return lczt != '01'
|
||||||
if (btnName === '修改') return lczt == '01'
|
if (btnName === '修改') return lczt == '01'
|
||||||
// if(btnName === '上报') return lczt == '01'
|
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
@ -584,8 +531,6 @@ const handleTransferMerchant = (row) => {
|
|||||||
currRow.value = row
|
currRow.value = row
|
||||||
isShowTransferMerchantTc.value = true
|
isShowTransferMerchantTc.value = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 送审
|
// 送审
|
||||||
const postXxcjXxcjTjsh = (row) => {
|
const postXxcjXxcjTjsh = (row) => {
|
||||||
proxy.$confirm("确定要送审吗", "提示", { type: "warning" }).then(() => {
|
proxy.$confirm("确定要送审吗", "提示", { type: "warning" }).then(() => {
|
||||||
@ -595,20 +540,25 @@ const postXxcjXxcjTjsh = (row) => {
|
|||||||
})
|
})
|
||||||
}).catch(() => { })
|
}).catch(() => { })
|
||||||
}
|
}
|
||||||
const getDisabled = (val, zt) => {
|
|
||||||
console.log(val, zt);
|
|
||||||
|
|
||||||
// switch (val) {
|
onMounted(() => {
|
||||||
// case '01':
|
const { deptBizType, deptLevel } = getItem('deptId')[0]
|
||||||
// return !(['04', '06', '07', '08', '09'].includes(zt))
|
const Jb = deptLevel[0] == '2' ? '01' : deptLevel[0] == '3' ? '02' : '03'
|
||||||
// case '02':
|
qxkz.roleCode = getItem('roleList').find(item => item.roleCode == 'JS_666666') != undefined
|
||||||
// return !(['03', '05'].includes(zt))
|
qxkz.deptBizType = deptBizType
|
||||||
// case '03':
|
qxkz.deptLevel = Jb
|
||||||
// return !(['02', '03', '04'].includes(zt))
|
if (deptBizType == '23' && Jb == '01') {
|
||||||
// case '04':
|
qxkz.depBool = true
|
||||||
// return ([ '04', '05' ,'06', '07', '08', '09'].includes(zt))
|
} else {
|
||||||
// }
|
qxkz.depBool = false
|
||||||
}
|
}
|
||||||
|
titleData.value = route.meta.title
|
||||||
|
tabHeightFn()
|
||||||
|
if (route.query.id) {
|
||||||
|
detailDiloag.value.init('edit', { id: route.query.id });
|
||||||
|
}
|
||||||
|
getList()
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|||||||
@ -0,0 +1,117 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<!-- 搜索 -->
|
||||||
|
<div ref="searchBox" class="mt10">
|
||||||
|
<Search :searchArr="searchConfiger" @submit="onSearch" />
|
||||||
|
</div>
|
||||||
|
<!-- 表格 -->
|
||||||
|
<div class="tabBox mt10" :style="{height: pageData.tableHeight +30+ 'px'}">
|
||||||
|
<MyTable
|
||||||
|
:tableData="pageData.tableData"
|
||||||
|
:tableColumn="pageData.tableColumn"
|
||||||
|
:tableHeight="pageData.tableHeight"
|
||||||
|
:key="pageData.keyCount"
|
||||||
|
:tableConfiger="pageData.tableConfiger"
|
||||||
|
:controlsWidth="pageData.controlsWidth"
|
||||||
|
>
|
||||||
|
</MyTable>
|
||||||
|
<Pages
|
||||||
|
@changeNo="changeNo"
|
||||||
|
@changeSize="changeSize"
|
||||||
|
:tableHeight="pageData.tableHeight"
|
||||||
|
:pageConfiger="{
|
||||||
|
...pageData.pageConfiger,
|
||||||
|
total: pageData.total
|
||||||
|
}"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
|
import Pages from "@/components/aboutTable/Pages.vue";
|
||||||
|
import Search from "@/components/aboutTable/Search.vue";
|
||||||
|
import { qcckGet } from "@/api/qcckApi.js";
|
||||||
|
import { reactive, ref, onMounted } from "vue";
|
||||||
|
const searchBox = ref(); //搜索框
|
||||||
|
const searchConfiger = ref([
|
||||||
|
{ label: "申请人姓名", prop: "xm", placeholder: "请输入申请人姓名", showType: "input" },
|
||||||
|
{ label: "申请人身份证", prop: "sfzh", placeholder: "请输入申请人身份证号", showType: "input"},
|
||||||
|
{ label: "申请人联系电话", prop: "lxdh", placeholder: "请输入申请人联系电话", showType: "input"}
|
||||||
|
]);
|
||||||
|
|
||||||
|
const pageData = reactive({
|
||||||
|
tableData: [],
|
||||||
|
keyCount: 0,
|
||||||
|
tableConfiger: {
|
||||||
|
rowHieght: 61,
|
||||||
|
showSelectType: "null",
|
||||||
|
loading: false,
|
||||||
|
haveControls: false
|
||||||
|
},
|
||||||
|
total: 0,
|
||||||
|
pageConfiger: {
|
||||||
|
pageSize: 20,
|
||||||
|
pageCurrent: 1
|
||||||
|
},
|
||||||
|
controlsWidth: 200,
|
||||||
|
tableColumn: [
|
||||||
|
{ label: "申请人姓名", prop: "xm" },
|
||||||
|
{ label: "申请人身份证", prop: "sfzh"},
|
||||||
|
{ label: "申请人联系电话", prop: "lxdh"},
|
||||||
|
{ label: "权限说明", prop: "qxsm" },
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
const queryFrom = ref({});
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
getList();
|
||||||
|
tabHeightFn();
|
||||||
|
});
|
||||||
|
|
||||||
|
// 搜索
|
||||||
|
const onSearch = (val) => {
|
||||||
|
queryFrom.value = { ...val };
|
||||||
|
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;
|
||||||
|
let data = { ...pageData.pageConfiger, ...queryFrom.value };
|
||||||
|
qcckGet(data, "/mosty-gsxt/gsxt/qxsq/getPageList").then((res) => {
|
||||||
|
pageData.tableData = res.records || [];
|
||||||
|
pageData.total = res.total;
|
||||||
|
pageData.tableConfiger.loading = false;
|
||||||
|
}).catch(() => {
|
||||||
|
pageData.tableConfiger.loading = false;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// 表格高度计算
|
||||||
|
const tabHeightFn = () => {
|
||||||
|
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 220;
|
||||||
|
window.onresize = function () {
|
||||||
|
tabHeightFn();
|
||||||
|
};
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.el-loading-mask {
|
||||||
|
background: rgba(0, 0, 0, 0.5) !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -10,7 +10,16 @@
|
|||||||
<el-radio v-for="(it,idx) in timeList" :key="idx" :label="it.num" >{{ it.label }}</el-radio>
|
<el-radio v-for="(it,idx) in timeList" :key="idx" :label="it.num" >{{ it.label }}</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
<span class="ml5 mr5">自定义:</span>
|
<span class="ml5 mr5">自定义:</span>
|
||||||
<el-date-picker @change="handleDateChange" v-model="formSearch.dateRange" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" format="YYYY-MM-DD" value-format="YYYY-MM-DD" />
|
<el-date-picker
|
||||||
|
@change="handleDateChange"
|
||||||
|
v-model="formSearch.dateRange"
|
||||||
|
:unlink-panels="true"
|
||||||
|
type="daterange"
|
||||||
|
range-separator="至"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
end-placeholder="结束日期"
|
||||||
|
format="YYYY-MM-DD"
|
||||||
|
value-format="YYYY-MM-DD" />
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
|
|||||||
@ -31,13 +31,12 @@ const props = defineProps({
|
|||||||
})
|
})
|
||||||
const legendList = ref([])
|
const legendList = ref([])
|
||||||
watch(() => props.data, (newVal) => {
|
watch(() => props.data, (newVal) => {
|
||||||
console.log(newVal,'-------------监听');
|
|
||||||
if (newVal.length) {
|
if (newVal.length) {
|
||||||
const total = newVal.reduce((s, v) => s + v.value, 0);
|
const total = newVal.reduce((s, v) => s + v.value, 0);
|
||||||
legendList.value = newVal.map((d, i) => ({
|
legendList.value = newVal.map((d, i) => ({
|
||||||
name: d.name,
|
name: d.name,
|
||||||
value: 20,
|
value: d.value,
|
||||||
percent: Math.round((d.value / total )* 100),
|
percent: total > 0 ? Math.round((d.value / total )* 100) : 0,
|
||||||
dotColor: i === 0 ? 'linear-gradient(90deg, #FF8DA7 0%, #D66A8D 100%)': d.color
|
dotColor: i === 0 ? 'linear-gradient(90deg, #FF8DA7 0%, #D66A8D 100%)': d.color
|
||||||
}))
|
}))
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
|
|||||||
@ -17,11 +17,11 @@
|
|||||||
import PageTitle from "@/components/aboutTable/PageTitle.vue";
|
import PageTitle from "@/components/aboutTable/PageTitle.vue";
|
||||||
import QbtjCount from './qbtjCount.vue'
|
import QbtjCount from './qbtjCount.vue'
|
||||||
import YjCount from './yjCount.vue'
|
import YjCount from './yjCount.vue'
|
||||||
import XxhjCount from './xxhjCount.vue'
|
|
||||||
import QygktjCount from './qygktjCount.vue'
|
import QygktjCount from './qygktjCount.vue'
|
||||||
|
import XxhjCount from './xxhjCount.vue'
|
||||||
import { ref } from "vue";
|
import { ref } from "vue";
|
||||||
const butList=ref(["情报统计分析","预警统计",'全域管控统计','信息汇聚统计'])
|
const butList=ref(["情报统计分析","预警统计",'全域管控统计','信息汇聚统计'])
|
||||||
const qh = ref('预警统计')
|
const qh = ref('情报统计分析')
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|||||||
@ -14,10 +14,10 @@
|
|||||||
</li>
|
</li>
|
||||||
<li class="cnt-item">
|
<li class="cnt-item">
|
||||||
<div class="common-title">
|
<div class="common-title">
|
||||||
<div class="title">管控状态统计</div>
|
<div class="title">重点人等级</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="echratsBox">
|
<div class="echratsBox">
|
||||||
<StatusCount :data="obj.gkztList" id="gkztCount" />
|
<StatusCount :data="obj.zdrdjList" id="gkztCount" />
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li class="cnt-item">
|
<li class="cnt-item">
|
||||||
@ -29,9 +29,12 @@
|
|||||||
<li class="cnt-item">
|
<li class="cnt-item">
|
||||||
<div class="common-title">
|
<div class="common-title">
|
||||||
<div class="title">各部门管控数量统计</div>
|
<div class="title">各部门管控数量统计</div>
|
||||||
|
<div class="btn-group">
|
||||||
|
<div class="btn" @click="handle_gbmgk" v-if="activeTab">返回</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="echratsBox">
|
<div class="echratsBox" v-loading="loading">
|
||||||
<DbarEcharts echartsId="bardepDChart" :key="ketcount" :data="obj.gbmgkList" />
|
<DbarEcharts echartsId="bardepDChart" :rotate="25" :key="ketcount" :data="obj.gbmgkList" @click="handleClick" />
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@ -39,6 +42,8 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
|
import { getItem } from "@/utils/storage";
|
||||||
|
import { qcckGet } from '@/api/qcckApi'
|
||||||
import * as echarts from 'echarts'
|
import * as echarts from 'echarts'
|
||||||
import HeadLayout from './components/headLayout.vue'
|
import HeadLayout from './components/headLayout.vue'
|
||||||
import BqyjslCount from './components/bqyjslCount.vue'
|
import BqyjslCount from './components/bqyjslCount.vue'
|
||||||
@ -48,59 +53,153 @@ import { onMounted, reactive, ref } from "vue";
|
|||||||
const searchRef = ref() //筛选组件实例
|
const searchRef = ref() //筛选组件实例
|
||||||
const boxHeight = ref() //盒子高度
|
const boxHeight = ref() //盒子高度
|
||||||
const formSearch = ref({}) //查询条件
|
const formSearch = ref({}) //查询条件
|
||||||
|
const activeTab = ref(false)
|
||||||
|
const loading = ref(false)
|
||||||
const ketcount = ref(0)
|
const ketcount = ref(0)
|
||||||
const obj = reactive({
|
const obj = reactive({
|
||||||
gkztList: [
|
|
||||||
{ name: '失控', value: 85 ,color: new echarts.graphic.LinearGradient(0, 0, 1, 1, [{ offset: 0, color: '#FF8DA7' },{ offset: 1, color: '#D66A8D' }])},
|
|
||||||
{ name: '在控', value: 55 ,color: '#17C0AE'},
|
|
||||||
],//管控状态统计
|
|
||||||
bqgkslList: [
|
|
||||||
{ label: '涉兼爆炸等恐怖袭击人员', value: 100 },
|
|
||||||
{ label: '全国涉稳重点人', value: 80 },
|
|
||||||
{ label: '国保涉稳人员', value: 70 },
|
|
||||||
{ label: '涉政涉恐涉稳重点人员', value: 60 },
|
|
||||||
{ label: '区涉稳人员', value: 50 },
|
|
||||||
],//各类标签预警数量统计
|
|
||||||
sevenList: [
|
|
||||||
{ label:'涉恐',value:30 },
|
|
||||||
{ label:'涉暴',value:20 },
|
|
||||||
{ label:'涉恐暴',value:10 },
|
|
||||||
{ label:'涉睡',value:30 },
|
|
||||||
{ label:'涉睡暴',value:20 },
|
|
||||||
{ label:'涉睡恐',value:10 },
|
|
||||||
{ label:'涉睡恐暴',value:5 },
|
|
||||||
],//7类重点人员预警统计
|
|
||||||
rylyList: {
|
rylyList: {
|
||||||
list: [
|
list: [
|
||||||
{ label:'基础库',value:50 },
|
{ label:'基础库',value:0 },
|
||||||
{ label:'重点库',value:40 },
|
{ label:'重点库',value:0 },
|
||||||
{ label:'关注库',value:10 },
|
{ label:'关注库',value:0 },
|
||||||
{ label:'重点群体',value:50 },
|
{ label:'重点群体',value:0 },
|
||||||
{ label:'重点车辆',value:40 },
|
{ label:'重点车辆',value:0 },
|
||||||
],
|
],
|
||||||
topColor:'#17c8c3',
|
topColor:'#17c8c3',
|
||||||
colors: ["#28EEBF","#0DBAC5"],
|
colors: ["#28EEBF","#0DBAC5"],
|
||||||
},//人员来源统计
|
},//人员来源统计
|
||||||
|
|
||||||
|
zdrdjList: [
|
||||||
|
{ name: '一级', value: 0 ,color: new echarts.graphic.LinearGradient(0, 0, 1, 1, [{ offset: 0, color: '#FF8DA7' },{ offset: 1, color: '#D66A8D' }])},
|
||||||
|
{ name: '二级', value: 0 ,color: '#FFB944'},
|
||||||
|
{ name: '三级', value: 0 ,color: '#fcfc54'},
|
||||||
|
{ name: '四级', value: 0 ,color: '#0072ff'},
|
||||||
|
],//重点人等级
|
||||||
|
|
||||||
|
bqgkslList: [
|
||||||
|
{ label: '涉嫌爆炸等恐怖袭击人员', value: 0 },
|
||||||
|
{ label: '全国涉稳重点人', value: 0 },
|
||||||
|
{ label: '自治区涉稳人员', value: 0 },
|
||||||
|
{ label: '国保涉稳人员', value: 0 },
|
||||||
|
{ label: '涉政涉恐涉稳重点人员', value: 0 },
|
||||||
|
],//各类标签预警数量统计
|
||||||
|
|
||||||
gbmgkList: {
|
gbmgkList: {
|
||||||
list: [
|
list: [
|
||||||
{ label:'国家保',value:100 },
|
{ label:'巴宜区',value:0,ssbmdm: "540402000000" },
|
||||||
{ label:'省保',value:80 },
|
{ label:'工布江达县',value:0,ssbmdm: "540421000000" },
|
||||||
{ label:'市保',value:70 },
|
{ label:'米林县',value:0,ssbmdm: "540481000000" },
|
||||||
{ label:'区保',value:60 },
|
{ label:'墨脱县',value:0,ssbmdm: "540423000000" },
|
||||||
{ label:'其他保',value:50 },
|
{ label:'波密县',value:0,ssbmdm: "540424000000" },
|
||||||
|
{ label:'察隅县',value:0,ssbmdm: "540425000000" },
|
||||||
|
{ label:'朗县',value:0,ssbmdm: "540426000000" },
|
||||||
|
{ label:'雅下分局',value:0,ssbmdm: "540481450000" },
|
||||||
],
|
],
|
||||||
topColor:'#17c8c3',
|
topColor:'#17c8c3',
|
||||||
colors: ["#28EEBF","#0DBAC5"],
|
colors: ["#28EEBF","#0DBAC5"],
|
||||||
},//各部门管控数量统计
|
},//各部门管控数量统计
|
||||||
})
|
})
|
||||||
|
// 2开头是市、3开头是县、4开头派出所级
|
||||||
|
const userInfo = getItem("deptId")[0];
|
||||||
onMounted(()=>{
|
onMounted(()=>{
|
||||||
|
init()
|
||||||
tabHeightFn()
|
tabHeightFn()
|
||||||
})
|
})
|
||||||
|
|
||||||
// 筛选
|
// 筛选
|
||||||
const handleChange = (val) => {
|
const handleChange = (val) => {
|
||||||
formSearch.value = val
|
formSearch.value = {...val }
|
||||||
|
formSearch.value.startTime = val.dateRange ? val.dateRange[0] : ''
|
||||||
|
formSearch.value.endTime = val.dateRange ? val.dateRange[1] : ''
|
||||||
|
delete formSearch.value.dateRange;
|
||||||
|
init()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 初始化
|
||||||
|
const init = () =>{
|
||||||
|
handle_ryly(); //人员来源统计
|
||||||
|
handle_gkjb(); //管控级别统计
|
||||||
|
handle_bq(); //各类标签预警数量统计
|
||||||
|
handle_gbmgk(); //各部门管控数量统计
|
||||||
|
}
|
||||||
|
|
||||||
|
//人员来源统计
|
||||||
|
const handle_ryly = async () => {
|
||||||
|
let params = {...formSearch.value}
|
||||||
|
let res = await qcckGet(params,'/mosty-gsxt/tbGsxtZdry/lytjCount');
|
||||||
|
let list = res || [];
|
||||||
|
obj.rylyList.list = list.map(item => ({
|
||||||
|
label: item.mc,
|
||||||
|
value: item.sl || 0,
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
|
||||||
|
// 重点人等级
|
||||||
|
const handle_gkjb = async () => {
|
||||||
|
let params = {...formSearch.value}
|
||||||
|
let res = await qcckGet(params,'/mosty-gsxt/tbGsxtZdry/gkdjCount');
|
||||||
|
let color = [
|
||||||
|
new echarts.graphic.LinearGradient(0, 0, 1, 1, [{ offset: 0, color: '#FF8DA7' },{ offset: 1, color: '#D66A8D' }]),
|
||||||
|
'#FFB944',
|
||||||
|
'#fcfc54',
|
||||||
|
'#0072ff'
|
||||||
|
]
|
||||||
|
obj.zdrdjList = (res || []).map((item,idx) => ({
|
||||||
|
name: item.zdmc,
|
||||||
|
value: Number(item.sl) || 0,
|
||||||
|
color: color[idx],
|
||||||
|
}))
|
||||||
|
console.log(obj.zdrdjList,'=====00');
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//各类标签预警数量统计
|
||||||
|
const handle_bq = async () => {
|
||||||
|
let params = {...formSearch.value}
|
||||||
|
let res = await qcckGet(params,'/mosty-gsxt/tbGsxtZdry/rybqCount');
|
||||||
|
let list = res || [];
|
||||||
|
obj.bqgkslList = list.map(item => ({
|
||||||
|
label: item.bqmc,
|
||||||
|
value: item['count(bq_mc)'] || 0,
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
|
||||||
|
// 部门点击事件
|
||||||
|
const handleClick = async (val) =>{
|
||||||
|
// 当前部门是派出所 bb
|
||||||
|
if(userInfo?.deptLevel?.startsWith('4')) return;
|
||||||
|
if(val.includes('派出所')) return;
|
||||||
|
let info = obj.gbmgkList.list.find(i => i.label === val);
|
||||||
|
let params = {...formSearch.value }
|
||||||
|
params.ssbmdm = info.ssbmdm;
|
||||||
|
loading.value = true;
|
||||||
|
let res = await qcckGet(params,'/mosty-gsxt/tbGsxtZdry/bmCount');
|
||||||
|
activeTab.value = true;
|
||||||
|
loading.value = false;
|
||||||
|
obj.gbmgkList.list = (res || []).map(v=>{
|
||||||
|
return {
|
||||||
|
label: v.ssbmmc,
|
||||||
|
value: Number(v.sl),
|
||||||
|
ssbmdm:v.ssbmdm
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//各部门管控数量统计
|
||||||
|
const handle_gbmgk = async () => {
|
||||||
|
activeTab.value = false;
|
||||||
|
let params = {...formSearch.value}
|
||||||
|
params.ssbmdm = userInfo?.deptCode;
|
||||||
|
loading.value = true;
|
||||||
|
let res = await qcckGet(params,'/mosty-gsxt/tbGsxtZdry/bmCount');
|
||||||
|
loading.value = false;
|
||||||
|
obj.gbmgkList.list = (res || []).map(v=>{
|
||||||
|
return {
|
||||||
|
label: v.ssbmmc,
|
||||||
|
value: Number(v.sl),
|
||||||
|
ssbmdm:v.ssbmdm
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
|
|||||||
@ -30,10 +30,21 @@
|
|||||||
</li>
|
</li>
|
||||||
<li class="cnt-item cnt-item-last">
|
<li class="cnt-item cnt-item-last">
|
||||||
<div class="common-title">
|
<div class="common-title">
|
||||||
<div class="title">各部门管控数量统计</div>
|
<div class="title">标签统计</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="echratsBox">
|
<div class="echratsBox">
|
||||||
<DbarEcharts echartsId="bardepDChart" :key="ketcount" :data="obj.bqList" />
|
<BqyjslCount :data="obj.bqList"/>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li class="cnt-item cnt-item-last">
|
||||||
|
<div class="common-title">
|
||||||
|
<div class="title">各部门管控数量统计</div>
|
||||||
|
<div class="btn-group">
|
||||||
|
<div class="btn" @click="handle_bm" v-if="activeTab">返回</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="echratsBox" v-loading="loading">
|
||||||
|
<DbarEcharts echartsId="bardepDChart" :rotate="25" :key="ketcount" @click="handleClick" :data="obj.bmList" />
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@ -41,6 +52,9 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
|
import { getItem } from "@/utils/storage";
|
||||||
|
import BqyjslCount from './components/bqyjslCount.vue'
|
||||||
|
import { qcckGet } from '@/api/qcckApi'
|
||||||
import * as echarts from 'echarts'
|
import * as echarts from 'echarts'
|
||||||
import HeadLayout from './components/headLayout.vue'
|
import HeadLayout from './components/headLayout.vue'
|
||||||
import StatusCount from './components/statusCount.vue'
|
import StatusCount from './components/statusCount.vue'
|
||||||
@ -50,46 +64,152 @@ const searchRef = ref() //筛选组件实例
|
|||||||
const boxHeight = ref() //盒子高度
|
const boxHeight = ref() //盒子高度
|
||||||
const formSearch = ref({}) //查询条件
|
const formSearch = ref({}) //查询条件
|
||||||
const ketcount = ref(0)
|
const ketcount = ref(0)
|
||||||
|
const activeTab = ref(true)
|
||||||
|
const loading = ref(false)
|
||||||
const obj = reactive({
|
const obj = reactive({
|
||||||
|
// 采用情况统计
|
||||||
cyqkList: [
|
cyqkList: [
|
||||||
{ name:'采纳',value:30,color:'#0dbac5' },
|
{ name:'采纳',value:0,color:'#0dbac5' },
|
||||||
{ name:'退回',value:20,color:'#ff7700' },
|
{ name:'退回',value:0,color:'#ff7700' },
|
||||||
],
|
],
|
||||||
|
|
||||||
|
// 分组统计
|
||||||
fzList: [
|
fzList: [
|
||||||
{ name:'内部',value:30,color:'#fdbc3a' },
|
{ name:'内部',value:0,color:'#fdbc3a' },
|
||||||
{ name:'共享',value:20,color:'#ff7700' },
|
{ name:'共享',value:0,color:'#ff7700' },
|
||||||
],
|
],
|
||||||
|
|
||||||
|
// 状态统计
|
||||||
ztList: [
|
ztList: [
|
||||||
{ name: '送审', value: 85 ,color: new echarts.graphic.LinearGradient(0, 0, 1, 1, [{ offset: 0, color: '#FF8DA7' },{ offset: 1, color: '#D66A8D' }])},
|
{ name: '送审', value: 0 ,color: new echarts.graphic.LinearGradient(0, 0, 1, 1, [{ offset: 0, color: '#FF8DA7' },{ offset: 1, color: '#D66A8D' }])},
|
||||||
{ name: '转线索', value: 55 ,color: '#17C0AE'},
|
{ name: '转线索', value: 0 ,color: '#17C0AE'},
|
||||||
],
|
],
|
||||||
bqList: {
|
bqList: [],//标签
|
||||||
|
bmList: {
|
||||||
list: [
|
list: [
|
||||||
{ label:'肇事肇祸',value:100 },
|
{ label:'巴宜区',value:0,ssbmdm: "540402000000" },
|
||||||
{ label:'涉稳人员',value:80 },
|
{ label:'工布江达县',value:0,ssbmdm: "540421000000" },
|
||||||
{ label:'前科人员',value:70 },
|
{ label:'米林县',value:0,ssbmdm: "540481000000" },
|
||||||
{ label:'肇事肇祸',value:100 },
|
{ label:'墨脱县',value:0,ssbmdm: "540423000000" },
|
||||||
{ label:'涉稳人员',value:80 },
|
{ label:'波密县',value:0,ssbmdm: "540424000000" },
|
||||||
{ label:'前科人员',value:70 },
|
{ label:'察隅县',value:0,ssbmdm: "540425000000" },
|
||||||
{ label:'肇事肇祸',value:100 },
|
{ label:'朗县',value:0,ssbmdm: "540426000000" },
|
||||||
{ label:'涉稳人员',value:80 },
|
{ label:'雅下分局',value:0,ssbmdm: "540481450000" },
|
||||||
{ label:'前科人员',value:70 },
|
|
||||||
{ label:'肇事肇祸',value:100 },
|
|
||||||
{ label:'涉稳人员',value:80 },
|
|
||||||
{ label:'前科人员',value:70 },
|
|
||||||
],
|
],
|
||||||
topColor:'#17c8c3',
|
topColor:'#17c8c3',
|
||||||
colors: ["#28EEBF","#0DBAC5"],
|
colors: ["#28EEBF","#0DBAC5"],
|
||||||
},//各部门管控数量统计
|
},//各部门管控数量统计
|
||||||
})
|
})
|
||||||
|
// 2开头是市、3开头是县、4开头派出所级
|
||||||
|
const userInfo = getItem("deptId")[0];
|
||||||
onMounted(()=>{
|
onMounted(()=>{
|
||||||
|
init()
|
||||||
tabHeightFn()
|
tabHeightFn()
|
||||||
})
|
})
|
||||||
|
|
||||||
// 筛选
|
// 筛选
|
||||||
const handleChange = (val) => {
|
const handleChange = (val) => {
|
||||||
formSearch.value = val
|
formSearch.value = {...val }
|
||||||
|
formSearch.value.startTime = val.dateRange ? val.dateRange[0] : ''
|
||||||
|
formSearch.value.endTime = val.dateRange ? val.dateRange[1] : ''
|
||||||
|
delete formSearch.value.dateRange;
|
||||||
|
init()
|
||||||
|
}
|
||||||
|
|
||||||
|
const init = async () => {
|
||||||
|
await handle_cyqk(); //采用情况统计
|
||||||
|
await handle_fz(); //分组统计
|
||||||
|
await handle_zt(); //状态统计
|
||||||
|
await handle_bq(); //标签统计
|
||||||
|
await handle_bm(); //各部门管控数量统计
|
||||||
|
}
|
||||||
|
|
||||||
|
//采用情况统计
|
||||||
|
const handle_cyqk = async () => {
|
||||||
|
let params = {...formSearch.value}
|
||||||
|
let res = await qcckGet(params,'/mosty-gsxt/xxcj/cyqkCount');
|
||||||
|
let list = res || [];
|
||||||
|
let color = ['#0dbac5','#ff7700','#409eff']
|
||||||
|
obj.cyqkList = list.map((item,idx) => ({
|
||||||
|
name: item.dmmc,
|
||||||
|
value: item.sl || 0,
|
||||||
|
color: color[idx] || '#0dbac5',
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
|
||||||
|
//分组统计
|
||||||
|
const handle_fz = async () => {
|
||||||
|
let params = {...formSearch.value}
|
||||||
|
let res = await qcckGet(params,'/mosty-gsxt/xxcj/fzCount');
|
||||||
|
let list = res || [];
|
||||||
|
let color = ['#fdbc3a','#ff7700','#409eff']
|
||||||
|
obj.fzList = list.map((item,idx) => ({
|
||||||
|
name: item.dmmc,
|
||||||
|
value: item.sl || 0,
|
||||||
|
color: color[idx] || '#0dbac5',
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
|
||||||
|
//状态统计
|
||||||
|
const handle_zt = async () => {
|
||||||
|
let params = {...formSearch.value}
|
||||||
|
let res = await qcckGet(params,'/mosty-gsxt/xxcj/ztCount');
|
||||||
|
let list = res || [];
|
||||||
|
let color = [new echarts.graphic.LinearGradient(0, 0, 1, 1, [{ offset: 0, color: '#FF8DA7' },{ offset: 1, color: '#D66A8D' }]),'#17C0AE','#409eff']
|
||||||
|
obj.ztList = list.map((item,idx) => ({
|
||||||
|
name: item.dmmc,
|
||||||
|
value: item.sl || 0,
|
||||||
|
color: color[idx] || '#0dbac5',
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
|
||||||
|
//标签
|
||||||
|
const handle_bq = async () => {
|
||||||
|
let params = {...formSearch.value}
|
||||||
|
let res = await qcckGet(params,'/mosty-gsxt/xxcj/bqCount');
|
||||||
|
let list = res || [];
|
||||||
|
obj.bqList = list.map((item) => ({
|
||||||
|
label: item.bqmc,
|
||||||
|
value: item['count(bqmc)'] || 0,
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
|
||||||
|
// 部门点击事件
|
||||||
|
const handleClick = async (val) =>{
|
||||||
|
// 当前部门是派出所 bb
|
||||||
|
if(userInfo?.deptLevel?.startsWith('4')) return;
|
||||||
|
if(val.includes('派出所')) return;
|
||||||
|
let info = obj.bmList.list.find(i => i.label === val);
|
||||||
|
let params = {...formSearch.value }
|
||||||
|
params.ssbmdm = info.ssbmdm;
|
||||||
|
loading.value = true;
|
||||||
|
let res = await qcckGet(params,'/mosty-gsxt/tbGsxtZdry/bmCount');
|
||||||
|
activeTab.value = true;
|
||||||
|
loading.value = false;
|
||||||
|
obj.bmList.list = (res || []).map(v=>{
|
||||||
|
return {
|
||||||
|
label: v.ssbmmc,
|
||||||
|
value: Number(v.sl),
|
||||||
|
ssbmdm:v.ssbmdm
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//各部门管控数量统计
|
||||||
|
const handle_bm = async () => {
|
||||||
|
activeTab.value = false;
|
||||||
|
let params = {...formSearch.value}
|
||||||
|
params.ssbmdm = userInfo?.deptCode;
|
||||||
|
loading.value = true;
|
||||||
|
let res = await qcckGet(params,'/mosty-gsxt/xxcj/bmCount');
|
||||||
|
loading.value = false;
|
||||||
|
obj.bmList.list = (res || []).map(v=>{
|
||||||
|
return {
|
||||||
|
label: v.ssbmmc,
|
||||||
|
value: Number(v.sl),
|
||||||
|
ssbmdm:v.ssbmdm
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
@ -139,6 +259,32 @@ const tabHeightFn = () => {
|
|||||||
background: linear-gradient(to right, #409EFF, #ffffff);
|
background: linear-gradient(to right, #409EFF, #ffffff);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.btn-group {
|
||||||
|
display: flex;
|
||||||
|
gap: 10px;
|
||||||
|
.btn {
|
||||||
|
padding: 3px 16px;
|
||||||
|
border: 1px solid #dcdfe6;
|
||||||
|
border-radius: 4px;
|
||||||
|
font-size: 12px;
|
||||||
|
cursor: pointer;
|
||||||
|
color: #606266;
|
||||||
|
transition: all 0.3s;
|
||||||
|
user-select: none;
|
||||||
|
|
||||||
|
&.active {
|
||||||
|
background: #409EFF;
|
||||||
|
color: #fff;
|
||||||
|
border-color: #409EFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover:not(.active) {
|
||||||
|
color: #409EFF;
|
||||||
|
border-color: #c6e2ff;
|
||||||
|
background-color: #ecf5ff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.echratsBox{
|
.echratsBox{
|
||||||
height: calc(100% - 40px);
|
height: calc(100% - 40px);
|
||||||
@ -146,7 +292,7 @@ const tabHeightFn = () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
.cnt-item-last{
|
.cnt-item-last{
|
||||||
width: 100%;
|
width: 49.8%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -44,7 +44,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="echratsBox" v-loading="loading">
|
<div class="echratsBox" v-loading="loading">
|
||||||
<DbarEcharts echartsId="bar3DChart" :key="ketcount" :data="obj.cnList" @click="handleClick" />
|
<DbarEcharts echartsId="bar3DChart" :rotate="25" :key="ketcount" :data="obj.cnList" @click="handleClick" />
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li class="cnt-item">
|
<li class="cnt-item">
|
||||||
@ -58,7 +58,7 @@
|
|||||||
<div class="title">7类重点人员预警统计</div>
|
<div class="title">7类重点人员预警统计</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="echratsBox">
|
<div class="echratsBox">
|
||||||
<LineEcharts echartsId="seventTypeChart" color="#333333" :data="obj.sevenList" />
|
<LineEcharts echartsId="seventTypeChart" color="#333333" :data="obj.sevenList" name="预警数量" />
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li class="cnt-item">
|
<li class="cnt-item">
|
||||||
@ -87,18 +87,26 @@ const activeTab = ref(false)
|
|||||||
const loading = ref(false)
|
const loading = ref(false)
|
||||||
const ketcount = ref(0)
|
const ketcount = ref(0)
|
||||||
const countList = ref([
|
const countList = ref([
|
||||||
{ zddm:'01',label: '红色预警', hb:0,tb:0, dysl: '0', sysl: '0', snsl: '0', icon: require('@/assets/images/icon-red.png') },
|
{ zddm:'01',label: '红色预警', hb:0,tb:0, dysl: 0, sysl: 0, snsl: 0, icon: require('@/assets/images/icon-red.png') },
|
||||||
{ zddm:'02',label: '橙色预警', hb:0,tb:0, dysl: '0', sysl: '0', snsl: '0', icon: require('@/assets/images/icon-orange.png') },
|
{ zddm:'02',label: '橙色预警', hb:0,tb:0, dysl: 0, sysl: 0, snsl: 0, icon: require('@/assets/images/icon-orange.png') },
|
||||||
{ zddm:'03',label: '黄色预警', hb:0,tb:0, dysl: '0', sysl: '0', snsl: '0', icon: require('@/assets/images/icon-yellow.png') },
|
{ zddm:'03',label: '黄色预警', hb:0,tb:0, dysl: 0, sysl: 0, snsl: 0, icon: require('@/assets/images/icon-yellow.png') },
|
||||||
{ zddm:'04',label: '蓝色预警', hb:0,tb:0, dysl: '0', sysl: '0', snsl: '0', icon: require('@/assets/images/icon-blue.png') },
|
{ zddm:'04',label: '蓝色预警', hb:0,tb:0, dysl: 0, sysl: 0, snsl: 0, icon: require('@/assets/images/icon-blue.png') },
|
||||||
])
|
])
|
||||||
const obj = reactive({
|
const obj = reactive({
|
||||||
bqyjslList: [], //各类标签预警数量统计 { label: '涉毒人员', value: 0 },
|
bqyjslList: [], //各类标签预警数量统计 { label: '涉毒人员', value: 0 },
|
||||||
sevenList: [], //7类重点人员预警统计 { label:'涉恐',value:0 },
|
sevenList: [], //7类重点人员预警统计 { label:'涉恐',value:0 },
|
||||||
|
|
||||||
// 2开头是市、3开头是县、4开头派出所级 { label:'工布江达县',value:0 },
|
// 2开头是市、3开头是县、4开头派出所级 { label:'工布江达县',value:0 },
|
||||||
cnList: {
|
cnList: {
|
||||||
list: [],
|
list: [
|
||||||
|
{ label:'巴宜区',value:0,ssbmdm: "540402000000" },
|
||||||
|
{ label:'工布江达县',value:0,ssbmdm: "540421000000" },
|
||||||
|
{ label:'米林县',value:0,ssbmdm: "540481000000" },
|
||||||
|
{ label:'墨脱县',value:0,ssbmdm: "540423000000" },
|
||||||
|
{ label:'波密县',value:0,ssbmdm: "540424000000" },
|
||||||
|
{ label:'察隅县',value:0,ssbmdm: "540425000000" },
|
||||||
|
{ label:'朗县',value:0,ssbmdm: "540426000000" },
|
||||||
|
{ label:'雅下分局',value:0,ssbmdm: "540481450000" },
|
||||||
|
],
|
||||||
topColor:'#17c8c3',
|
topColor:'#17c8c3',
|
||||||
colors: ["#28EEBF","#0DBAC5"],
|
colors: ["#28EEBF","#0DBAC5"],
|
||||||
},
|
},
|
||||||
@ -128,11 +136,11 @@ const handleChange = (val) => {
|
|||||||
|
|
||||||
// 初始化
|
// 初始化
|
||||||
const init = () =>{
|
const init = () =>{
|
||||||
handle_yjfl();
|
handle_yjfl(); //预警分类统计 同比、环比
|
||||||
handle_gbm();
|
handle_gbm(); // 各部门预警数量统计
|
||||||
handle_yjbq();
|
handle_yjbq(); // 预警标签统计
|
||||||
handle_seven();
|
handle_seven(); // 7类重点人员预警统计
|
||||||
handle_czzt();
|
handle_czzt(); // 处置状态统计
|
||||||
}
|
}
|
||||||
|
|
||||||
// 预警分类统计 同比、环比
|
// 预警分类统计 同比、环比
|
||||||
@ -144,15 +152,15 @@ const handle_yjfl = async () =>{
|
|||||||
let obj = list.find(i => i.zddm === item.zddm);
|
let obj = list.find(i => i.zddm === item.zddm);
|
||||||
obj.hb = Number(obj.hb.substring(0, obj.hb.length - 1));
|
obj.hb = Number(obj.hb.substring(0, obj.hb.length - 1));
|
||||||
obj.tb = Number(obj.tb.substring(0, obj.tb.length - 1));
|
obj.tb = Number(obj.tb.substring(0, obj.tb.length - 1));
|
||||||
return obj ? {...item,obj} : item
|
return obj ? { ...item, ...obj } : item;
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 部门点击事件
|
// 部门点击事件
|
||||||
const handleClick = async (val) =>{
|
const handleClick = async (val) =>{
|
||||||
// 当前部门是派出所 bb
|
// 当前部门是派出所 bb
|
||||||
if(userInfo?.deptLevel?.startsWith('4')) return;
|
if(userInfo?.deptLevel?.startsWith('4')) return;
|
||||||
|
if(val.includes('派出所')) return;
|
||||||
let info = obj.cnList.list.find(i => i.label === val);
|
let info = obj.cnList.list.find(i => i.label === val);
|
||||||
let params = {...formSearch.value }
|
let params = {...formSearch.value }
|
||||||
params.ssbmdm = info.ssbmdm;
|
params.ssbmdm = info.ssbmdm;
|
||||||
@ -169,8 +177,6 @@ const handleClick = async (val) =>{
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 各部门预警数量统计
|
// 各部门预警数量统计
|
||||||
const handle_gbm = async () =>{
|
const handle_gbm = async () =>{
|
||||||
activeTab.value = false;
|
activeTab.value = false;
|
||||||
@ -187,16 +193,17 @@ const handle_gbm = async () =>{
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 预警标签统计
|
// 预警标签统计
|
||||||
const handle_yjbq = async () =>{
|
const handle_yjbq = async () =>{
|
||||||
let params = {...formSearch.value}
|
let params = {...formSearch.value}
|
||||||
params.ssbmdm = userInfo?.deptCode;
|
|
||||||
let res = await qcckGet(params,'/mosty-gsxt/yjxx/tj/yjbqtj');
|
let res = await qcckGet(params,'/mosty-gsxt/yjxx/tj/yjbqtj');
|
||||||
obj.bqyjslList = (res || []).map(item => ({
|
obj.bqyjslList = (res || []).map(item => ({
|
||||||
label: item.yjbq,
|
label: item.yjbq,
|
||||||
value: Number(item.count),
|
value: Number(item.count),
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 7类重点人员预警统计
|
// 7类重点人员预警统计
|
||||||
const handle_seven = async () =>{
|
const handle_seven = async () =>{
|
||||||
let params = {...formSearch.value}
|
let params = {...formSearch.value}
|
||||||
@ -206,6 +213,7 @@ const handle_seven = async () =>{
|
|||||||
value: Number(item.sl),
|
value: Number(item.sl),
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 处置状态统计
|
// 处置状态统计
|
||||||
const handle_czzt = async () =>{
|
const handle_czzt = async () =>{
|
||||||
let params = {...formSearch.value}
|
let params = {...formSearch.value}
|
||||||
@ -216,7 +224,6 @@ const handle_czzt = async () =>{
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 表格高度计算
|
// 表格高度计算
|
||||||
const tabHeightFn = () => {
|
const tabHeightFn = () => {
|
||||||
boxHeight.value = window.innerHeight - searchRef.value.offsetHeight - 300;
|
boxHeight.value = window.innerHeight - searchRef.value.offsetHeight - 300;
|
||||||
@ -318,7 +325,7 @@ const tabHeightFn = () => {
|
|||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
align-content: space-between;
|
align-content: space-between;
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
overflow: hidden;
|
// overflow: hidden;
|
||||||
.cnt-item{
|
.cnt-item{
|
||||||
width: 49.8%;
|
width: 49.8%;
|
||||||
height: 49.5%;
|
height: 49.5%;
|
||||||
@ -375,7 +382,7 @@ const tabHeightFn = () => {
|
|||||||
}
|
}
|
||||||
.echratsBox{
|
.echratsBox{
|
||||||
height: calc(100% - 40px);
|
height: calc(100% - 40px);
|
||||||
overflow: hidden;
|
/* overflow: hidden; */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -33,6 +33,21 @@
|
|||||||
<template #expand="{ props }">
|
<template #expand="{ props }">
|
||||||
<Items :row="props || {}" :dict="dict" />
|
<Items :row="props || {}" :dict="dict" />
|
||||||
</template>
|
</template>
|
||||||
|
<template #yjTp="{ row }">
|
||||||
|
<template v-if="!row.yjTp || row.yjTp.includes('baidu')">
|
||||||
|
<img src="@/assets/images/car.png" width="30" height="30" v-if="row.yjLx == 2" />
|
||||||
|
<img src="@/assets/images/default_male.png" width="30" height="30" v-else />
|
||||||
|
</template>
|
||||||
|
<el-image v-else style="width: 30px; height:30px" :src="row.yjTp" :preview-src-list="[row.yjTp]"
|
||||||
|
show-progress>
|
||||||
|
<template #error>
|
||||||
|
<div class="image-slot error">
|
||||||
|
<img src="@/assets/images/car.png" width="30" height="30" v-if="row.yjLx == 2" />
|
||||||
|
<img src="@/assets/images/default_male.png" width="30" height="30" v-else />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-image>
|
||||||
|
</template>
|
||||||
<template #yjJb="{ row }">
|
<template #yjJb="{ row }">
|
||||||
<DictTag :value="row.yjJb" :tag="false" :color="bqYs(row.yjJb)" :options="D_GS_SSYJ" />
|
<DictTag :value="row.yjJb" :tag="false" :color="bqYs(row.yjJb)" :options="D_GS_SSYJ" />
|
||||||
</template>
|
</template>
|
||||||
@ -53,7 +68,9 @@
|
|||||||
<template #bqdl="{ row }">
|
<template #bqdl="{ row }">
|
||||||
<DictTag :value="row.bqdl" :tag="false" :options="D_GS_QLZDRLX" />
|
<DictTag :value="row.bqdl" :tag="false" :options="D_GS_QLZDRLX" />
|
||||||
</template>
|
</template>
|
||||||
|
<template #xsd="{ row }">
|
||||||
|
{{ row.xsd }}%
|
||||||
|
</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>
|
||||||
@ -110,7 +127,8 @@ const searchConfiger = ref([
|
|||||||
{ label: "积分段", prop: 'jfd', placeholder: "请选择积分段", showType: "Slot" },
|
{ label: "积分段", prop: 'jfd', placeholder: "请选择积分段", showType: "Slot" },
|
||||||
{ label: "布控时间", prop: 'startTime', placeholder: "请选择布控时间", showType: "datetimerange" },
|
{ label: "布控时间", prop: 'startTime', placeholder: "请选择布控时间", showType: "datetimerange" },
|
||||||
]);
|
]);
|
||||||
|
const ORDIMG = 'https://89.40.7.122:38496/image'
|
||||||
|
const IMGYM = 'https://sg.lz.dsj.xz/dhimage'
|
||||||
const permission_sfqs = ref(false)
|
const permission_sfqs = ref(false)
|
||||||
const roleCode = ref(false)
|
const roleCode = ref(false)
|
||||||
|
|
||||||
@ -133,19 +151,17 @@ const pageData = reactive({
|
|||||||
},
|
},
|
||||||
controlsWidth: 180, //操作栏宽度
|
controlsWidth: 180, //操作栏宽度
|
||||||
tableColumn: [
|
tableColumn: [
|
||||||
{ label: "状态", prop: "czzt", showSolt: true },
|
{ label: "预警图片", prop: "yjTp", showSolt: true, width: 100 },
|
||||||
{ label: "预警时间", prop: "yjFssj" ,width: 160},
|
{ label: "处置状态", prop: "czzt", showSolt: true },
|
||||||
{ label: "人员姓名", prop: "yjRyxm" },
|
{ label: "预警时间", prop: "yjSj", showOverflowTooltip: true, width: 200 },
|
||||||
{ label: "身份证号码", prop: "yjRysfzh" ,width: 180},
|
{ label: "姓名", prop: "yjRyxm" },
|
||||||
{ label: "性别", prop: "sex" ,showSolt: true,width: 60 },
|
{ label: "性别", prop: "sex", showSolt: true, width: 80 },
|
||||||
// { label: "年龄", prop: "age", showSolt: true,width: 60 },
|
{ label: "年龄", prop: "age", showSolt: true, width: 80 },
|
||||||
{ label: "预警级别", prop: "yjJb", showSolt: true,width: 84 },
|
{ label: "数据来源", prop: "yjLylx", showOverflowTooltip: true, showSolt: true },
|
||||||
// { label: "人员类别", prop: "bqdl", showSolt: true ,width: 84},
|
{ label: "身份证", prop: "yjRysfzh", showOverflowTooltip: true, width: 200 },
|
||||||
{ label: "细类", prop: "yjbqmc",width: 84 },
|
{ label: "预警级别", prop: "yjJb", showSolt: true },
|
||||||
{ label: "轨迹类别", prop: "yjLylx", showSolt: true ,width: 84},
|
{ label: "相似度", prop: "xsd", showSolt: true },
|
||||||
{ label: "活动发生地", prop: "yjDz" },
|
{ label: "所属部门", prop: "ssbm", showOverflowTooltip: true },
|
||||||
{ label: "接收单位", prop: "ssbm" },
|
|
||||||
{ label: "预警次数", prop: "yjCs" ,width: 84 },
|
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -277,24 +293,31 @@ const handleChooseData = (val) => {
|
|||||||
}
|
}
|
||||||
const exportExl = () => {
|
const exportExl = () => {
|
||||||
const titleObj = {
|
const titleObj = {
|
||||||
yjRyxm: "预警人员姓名",
|
czzt_cname: "处置状态",
|
||||||
yjRysfzh: "预警人员身份证号码",
|
yjSj: "预警时间",
|
||||||
yjbqmc: "预警标签",
|
yjRyxm: "姓名",
|
||||||
yjJrcs: "今日预警次数",
|
nl_cname: "年龄", // IdCard(row.yjRysfzh, 3)
|
||||||
yjJb_name: "标签颜色",
|
yjLylx: "数据来源",
|
||||||
yjNr: "预警内容",
|
xb_cname: "性别",
|
||||||
yjFssj: "预警时间",
|
yjJb_cname: "预警级别",
|
||||||
czzt_name: "处置状态",
|
xsd_cname: "相似度",
|
||||||
ssxgaj: "所属县局",
|
yjDz: "预警地点",
|
||||||
ssbm: "处置单位",
|
yjCs: "预警次数",
|
||||||
|
yjRysjh: "布控手机号",
|
||||||
|
yjClcph: "布控车牌号",
|
||||||
|
yjRysfzh: "身份证",
|
||||||
}
|
}
|
||||||
/** 导出【选中】的数据 (没有就全部)*/
|
/** 导出【选中】的数据 (没有就全部)*/
|
||||||
const needArr = selectRows.value?.length > 0 ? selectRows.value : pageData.tableData
|
const needArr = selectRows.value?.length > 0 ? selectRows.value : pageData.tableData
|
||||||
const data = needArr.map(item => {
|
const data = needArr.map(item => {
|
||||||
return {
|
return {
|
||||||
...item,
|
...item,
|
||||||
|
nl_cname: IdCard(item.yjRysfzh, 3),
|
||||||
|
xb_cname: IdCard(item.yjRysfzh, 2),
|
||||||
|
xsd_cname: (item.xsd > 0 ? item.xsd : 0) + '%',
|
||||||
yjJb_name: getMultiDictVal(item.yjJb, D_GS_SSYJ),
|
yjJb_name: getMultiDictVal(item.yjJb, D_GS_SSYJ),
|
||||||
czzt_name: getMultiDictVal(item.czzt, D_GSXT_YJXX_CZZT),
|
czzt_name: getMultiDictVal(item.czzt, D_GSXT_YJXX_CZZT),
|
||||||
|
yjJb_cname: getMultiDictVal(item.yjJb, D_BZ_YJJB),
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
exportExlByObj(titleObj, data, '预警布控')
|
exportExlByObj(titleObj, data, '预警布控')
|
||||||
|
|||||||
@ -234,7 +234,7 @@ const getList = () => {
|
|||||||
pageData.tableData = res.records.map(item => {
|
pageData.tableData = res.records.map(item => {
|
||||||
return {
|
return {
|
||||||
...item,
|
...item,
|
||||||
yjTp: item.yjlx == '01' ? item.yjTpreplace(ORDIMG, IMGYM) : item.yjTp
|
yjTp: item.yjlx == '01' ? item.yjTp.replace(ORDIMG, IMGYM) : item.yjTp
|
||||||
}
|
}
|
||||||
}) || [];
|
}) || [];
|
||||||
pageData.total = res.total;
|
pageData.total = res.total;
|
||||||
|
|||||||
@ -1,6 +1,13 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog :model-value="modelValue" :title="title" width="70%" @close="closeDialog" destroy-on-close append-to-body>
|
<el-dialog :model-value="modelValue" width="70%" @close="closeDialog" destroy-on-close append-to-body>
|
||||||
<div style="height: 60vh; overflow: auto;">
|
<template #title>
|
||||||
|
<div class="flex just-between align-center">
|
||||||
|
<span class="f18">{{ title }}</span>
|
||||||
|
<span @click="exportFile" class="f14 pointer" style="color: #0072ff;">下载</span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<div>
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
|
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
|
||||||
<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">
|
||||||
@ -33,6 +40,8 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
|
import { getMultiDictVal } from "@/utils/dict.js"
|
||||||
|
import { exportExlByObj } from "@/utils/exportExcel.js"
|
||||||
import MyTable from "@/components/aboutTable/MyTable.vue";
|
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
import Search from "@/components/aboutTable/Search.vue";
|
import Search from "@/components/aboutTable/Search.vue";
|
||||||
import Pages from "@/components/aboutTable/Pages.vue";
|
import Pages from "@/components/aboutTable/Pages.vue";
|
||||||
@ -141,6 +150,24 @@ const changeSize = (val) => {
|
|||||||
pageData.pageConfiger.pageSize = val;
|
pageData.pageConfiger.pageSize = val;
|
||||||
changePage()
|
changePage()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 导出
|
||||||
|
const exportFile = () =>{
|
||||||
|
const titleObj = {
|
||||||
|
sxsbsj: "情报上报时间",
|
||||||
|
xsBh: "情报编号",
|
||||||
|
qbmc: "情报标题",
|
||||||
|
qbly_name: "情报来源",
|
||||||
|
lczt_name: "流程状态",
|
||||||
|
}
|
||||||
|
let list = pageData.tableData.map(item => ({
|
||||||
|
...item,
|
||||||
|
qbly_name: getMultiDictVal(item.jqdjdm, D_BZ_CJLX),
|
||||||
|
lczt_name: getMultiDictVal(item.jqlbdm, D_BZ_QBCZZT),
|
||||||
|
}))
|
||||||
|
exportExlByObj(titleObj, list, props.title)
|
||||||
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped></style>
|
<style scoped></style>
|
||||||
|
|||||||
@ -1,7 +1,13 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog :model-value="modelValue" title="重点群体" width="70%" @close="closeDialog" destroy-on-close append-to-body>
|
<el-dialog :model-value="modelValue" width="70%" @close="closeDialog" destroy-on-close append-to-body :close-on-click-modal="false">
|
||||||
<div style="height: 60vh; overflow: auto;">
|
<template #title>
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
|
<div class="flex just-between align-center">
|
||||||
|
<span class="f18">重点群体</span>
|
||||||
|
<span @click="exportFile" class="f14 pointer" style="color: #0072ff;">下载</span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<div>
|
||||||
|
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
|
||||||
<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"
|
||||||
fixed="right" :expand="true">
|
fixed="right" :expand="true">
|
||||||
@ -45,6 +51,8 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
|
import { getMultiDictVal } from "@/utils/dict.js"
|
||||||
|
import { exportExlByObj } from "@/utils/exportExcel.js"
|
||||||
import MyTable from "@/components/aboutTable/MyTable.vue";
|
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
import Search from "@/components/aboutTable/Search.vue";
|
import Search from "@/components/aboutTable/Search.vue";
|
||||||
import Pages from "@/components/aboutTable/Pages.vue";
|
import Pages from "@/components/aboutTable/Pages.vue";
|
||||||
@ -149,7 +157,6 @@ const changePage = () => {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const changeNo = (val) => {
|
const changeNo = (val) => {
|
||||||
pageData.pageConfiger.pageCurrent = val;
|
pageData.pageConfiger.pageCurrent = val;
|
||||||
changePage()
|
changePage()
|
||||||
@ -158,6 +165,25 @@ const changeSize = (val) => {
|
|||||||
pageData.pageConfiger.pageSize = val;
|
pageData.pageConfiger.pageSize = val;
|
||||||
changePage()
|
changePage()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 导出
|
||||||
|
const exportFile = () =>{
|
||||||
|
const titleObj = {
|
||||||
|
qtMc: "群体名称",
|
||||||
|
qtLb_name: "群体类别",
|
||||||
|
qtFxdj_name: "风险等级",
|
||||||
|
qtBjzl: "背景资料",
|
||||||
|
bgxx_name: "背景信息",
|
||||||
|
gxSsdwmc: "管辖单位",
|
||||||
|
}
|
||||||
|
let list = pageData.tableData.map(item => ({
|
||||||
|
...item,
|
||||||
|
qtLb_name: getMultiDictVal(item.qtLb, D_GS_ZDQT_LB),
|
||||||
|
qtFxdj_name: getMultiDictVal(item.qtFxdj, D_GS_ZDQT_FXDJ),
|
||||||
|
}))
|
||||||
|
exportExlByObj(titleObj, list, '重点群体')
|
||||||
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped></style>
|
<style scoped></style>
|
||||||
|
|||||||
@ -1,9 +1,13 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog :model-value="modelValue" title="重点人总数" width="70%" @close="closeDialog" destroy-on-close append-to-body>
|
<el-dialog :model-value="modelValue" width="70%" @close="closeDialog" destroy-on-close append-to-body :close-on-click-modal="false">
|
||||||
<div style="height: 60vh; overflow: auto;">
|
<template #title>
|
||||||
|
<div class="flex just-between align-center">
|
||||||
|
<span class="f18">重点人总数</span>
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
|
<span @click="exportFile" class="f14 pointer" style="color: #0072ff;">下载</span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<div>
|
||||||
|
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
|
||||||
<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">
|
:expand="true">
|
||||||
@ -63,6 +67,8 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
|
import { getMultiDictVal } from "@/utils/dict.js"
|
||||||
|
import { exportExlByObj } from "@/utils/exportExcel.js"
|
||||||
import MyTable from "@/components/aboutTable/MyTable.vue";
|
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
import Search from "@/components/aboutTable/Search.vue";
|
import Search from "@/components/aboutTable/Search.vue";
|
||||||
import Pages from "@/components/aboutTable/Pages.vue";
|
import Pages from "@/components/aboutTable/Pages.vue";
|
||||||
@ -140,7 +146,7 @@ const pageData = reactive({
|
|||||||
pageCurrent: 1
|
pageCurrent: 1
|
||||||
}, //分页
|
}, //分页
|
||||||
tableColumn: [
|
tableColumn: [
|
||||||
{ label: "姓名", prop: "ryXm" },
|
{ label: "姓名", prop: "ryXm" },
|
||||||
{ label: "性别", prop: "ryXb", showSolt: true },
|
{ label: "性别", prop: "ryXb", showSolt: true },
|
||||||
{ label: "籍贯", prop: "ryJg", showSolt: true},
|
{ label: "籍贯", prop: "ryJg", showSolt: true},
|
||||||
{ label: "身份证", prop: "rySfzh" },
|
{ label: "身份证", prop: "rySfzh" },
|
||||||
@ -175,16 +181,6 @@ const changePage = () => {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查看详情
|
|
||||||
const showDetail = (item) => {
|
|
||||||
router.push({
|
|
||||||
path: '/CollectCrculate',
|
|
||||||
query: {
|
|
||||||
id: item.id
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
const changeNo = (val) => {
|
const changeNo = (val) => {
|
||||||
pageData.pageConfiger.pageCurrent = val;
|
pageData.pageConfiger.pageCurrent = val;
|
||||||
changePage()
|
changePage()
|
||||||
@ -193,6 +189,28 @@ const changeSize = (val) => {
|
|||||||
pageData.pageConfiger.pageSize = val;
|
pageData.pageConfiger.pageSize = val;
|
||||||
changePage()
|
changePage()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 导出
|
||||||
|
const exportFile = () =>{
|
||||||
|
const titleObj = {
|
||||||
|
ryXm: "姓名",
|
||||||
|
ryXb_name: "性别",
|
||||||
|
ryJg_name: "籍贯",
|
||||||
|
rySfzh: "身份证",
|
||||||
|
ryMz_name: "民族",
|
||||||
|
hjdQh_name: "户籍地区划",
|
||||||
|
hjdPcsmc: "户籍派出所",
|
||||||
|
}
|
||||||
|
let list = pageData.tableData.map(item => ({
|
||||||
|
...item,
|
||||||
|
ryXb_name: getMultiDictVal(item.ryXb, D_BZ_XB),
|
||||||
|
ryJg_name: getMultiDictVal(item.ryJg, D_BZ_XZQHDM),
|
||||||
|
ryMz_name: getMultiDictVal(item.ryMz, D_BZ_MZ),
|
||||||
|
hjdQh_name: getMultiDictVal(item.hjdQh, D_BZ_XZQHDM),
|
||||||
|
}))
|
||||||
|
exportExlByObj(titleObj, list, '重点人总数')
|
||||||
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|||||||
@ -1,6 +1,13 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog :model-value="modelValue" :title="title" width="70%" @close="closeDialog" destroy-on-close append-to-body>
|
<el-dialog :model-value="modelValue" width="70%" @close="closeDialog" destroy-on-close append-to-body>
|
||||||
<div style="height: 60vh; overflow: auto;">
|
|
||||||
|
<template #title>
|
||||||
|
<div class="flex just-between align-center">
|
||||||
|
<span class="f18">{{ title }}</span>
|
||||||
|
<span @click="exportFile" class="f14 pointer" style="color: #0072ff;">下载</span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<div>
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
|
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
|
||||||
<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">
|
||||||
@ -54,6 +61,8 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
|
import { exportExlByObj } from "@/utils/exportExcel.js"
|
||||||
|
import { getMultiDictVal } from "@/utils/dict.js"
|
||||||
import MyTable from "@/components/aboutTable/MyTable.vue";
|
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
import Search from "@/components/aboutTable/Search.vue";
|
import Search from "@/components/aboutTable/Search.vue";
|
||||||
import Pages from "@/components/aboutTable/Pages.vue";
|
import Pages from "@/components/aboutTable/Pages.vue";
|
||||||
@ -196,6 +205,30 @@ const changeSize = (val) => {
|
|||||||
pageData.pageConfiger.pageSize = val;
|
pageData.pageConfiger.pageSize = val;
|
||||||
changePage()
|
changePage()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 导出
|
||||||
|
const exportFile = () =>{
|
||||||
|
const titleObj = {
|
||||||
|
ryxm: "姓名",
|
||||||
|
rysfzh: "身份证号",
|
||||||
|
yjbq: "预警标签",
|
||||||
|
yjdz: "预警地址",
|
||||||
|
yjjb_name: "预警级别",
|
||||||
|
yjlb_name: "预警类别",
|
||||||
|
yjlx_name: "预警类型",
|
||||||
|
yjsj: "预警时间",
|
||||||
|
ssbm: "所属部门",
|
||||||
|
cph: "车牌号",
|
||||||
|
}
|
||||||
|
let list = pageData.tableData.map(item => ({
|
||||||
|
...item,
|
||||||
|
yjjb_name: getMultiDictVal(item.yjjb, D_BZ_YJJB),
|
||||||
|
yjlb_name: getMultiDictVal(item.yjlb, D_BZ_YJLX),
|
||||||
|
yjlx_name: getMultiDictVal(item.yjlx, D_GS_ZDQT_YJLB),
|
||||||
|
}))
|
||||||
|
exportExlByObj(titleObj, list, title.value)
|
||||||
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped></style>
|
<style scoped></style>
|
||||||
|
|||||||
@ -1,8 +1,12 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog :model-value="modelValue" title="警情总数" width="70%" @close="closeDialog" destroy-on-close append-to-body>
|
<el-dialog :model-value="modelValue" width="70%" @close="closeDialog" :close-on-click-modal="false" destroy-on-close append-to-body>
|
||||||
<div style="height: 60vh; overflow: auto;">
|
<template #title>
|
||||||
|
<div class="flex just-between align-center">
|
||||||
|
<span class="f18">警情总数</span>
|
||||||
|
<span @click="exportFile" class="f14 pointer" style="color: #0072ff;">下载</span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<div>
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
|
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
|
||||||
<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">
|
||||||
@ -43,6 +47,8 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
|
import { getMultiDictVal } from "@/utils/dict.js"
|
||||||
|
import { exportExlByObj } from "@/utils/exportExcel.js"
|
||||||
import MyTable from "@/components/aboutTable/MyTable.vue";
|
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
import Search from "@/components/aboutTable/Search.vue";
|
import Search from "@/components/aboutTable/Search.vue";
|
||||||
import Pages from "@/components/aboutTable/Pages.vue";
|
import Pages from "@/components/aboutTable/Pages.vue";
|
||||||
@ -127,7 +133,7 @@ const pageData = reactive({
|
|||||||
{ label: "补充接警内容", prop: "bcjjnr", showOverflowTooltip: true },
|
{ label: "补充接警内容", prop: "bcjjnr", showOverflowTooltip: true },
|
||||||
{ label: "研判状态", prop: "ypzt",showSolt:true },
|
{ label: "研判状态", prop: "ypzt",showSolt:true },
|
||||||
],
|
],
|
||||||
tableHeight: "43vh",
|
tableHeight: "40vh",
|
||||||
});
|
});
|
||||||
const parameter = ref()
|
const parameter = ref()
|
||||||
const onSearch = (val) => {
|
const onSearch = (val) => {
|
||||||
@ -153,7 +159,6 @@ pageData.tableConfiger.loading = true;
|
|||||||
...parameter.value
|
...parameter.value
|
||||||
}
|
}
|
||||||
lzJcjPjdbSelectPage(params).then(res => {
|
lzJcjPjdbSelectPage(params).then(res => {
|
||||||
console.log(res);
|
|
||||||
pageData.tableData = res.records || [];
|
pageData.tableData = res.records || [];
|
||||||
pageData.total = res.total;
|
pageData.total = res.total;
|
||||||
|
|
||||||
@ -162,16 +167,6 @@ pageData.tableConfiger.loading = true;
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查看详情
|
|
||||||
const showDetail = (item) => {
|
|
||||||
router.push({
|
|
||||||
path: '/CollectCrculate',
|
|
||||||
query: {
|
|
||||||
id: item.id
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
const changeNo = (val) => {
|
const changeNo = (val) => {
|
||||||
pageData.pageConfiger.pageCurrent = val;
|
pageData.pageConfiger.pageCurrent = val;
|
||||||
changePage()
|
changePage()
|
||||||
@ -180,6 +175,29 @@ const changeSize = (val) => {
|
|||||||
pageData.pageConfiger.pageSize = val;
|
pageData.pageConfiger.pageSize = val;
|
||||||
changePage()
|
changePage()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 导出
|
||||||
|
const exportFile = () =>{
|
||||||
|
const titleObj = {
|
||||||
|
jjdbh: "接警单编号",
|
||||||
|
bjdh: "报警电话",
|
||||||
|
bjsj: "报警时间",
|
||||||
|
bjnr: "报警内容",
|
||||||
|
jjyxm: "接警员姓名",
|
||||||
|
jqdjdm_name: "警情级别",
|
||||||
|
jqlbdm_name: "警情类型",
|
||||||
|
jqdz: "警情地址",
|
||||||
|
bcjjnr: "补充接警内容",
|
||||||
|
ypzt_name: "研判状态",
|
||||||
|
}
|
||||||
|
let list = pageData.tableData.map(item => ({
|
||||||
|
...item,
|
||||||
|
jqdjdm_name: getMultiDictVal(item.jqdjdm, D_GS_BQ_DJ),
|
||||||
|
jqlbdm_name: getMultiDictVal(item.jqlbdm, JQLB),
|
||||||
|
ypzt_name: item.ypzt == '01' ? '已研判' : '未研判'
|
||||||
|
}))
|
||||||
|
exportExlByObj(titleObj, list, '警情总数')
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped></style>
|
<style scoped></style>
|
||||||
|
|||||||
77
src/views/home/components/qxsqDialog.vue
Normal file
77
src/views/home/components/qxsqDialog.vue
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-dialog title="权限申请" v-model="showDialog" width="500px" :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false" >
|
||||||
|
<el-form :model="listQuery" label-width="120px" :rules="rules" ref="formRef">
|
||||||
|
<el-form-item label="申请人姓名" prop="xm">
|
||||||
|
<el-input placeholder="请输入申请人姓名" v-model="listQuery.xm" clearable></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="申请人身份证" prop="sfzh">
|
||||||
|
<el-input placeholder="请输入申请人身份证" v-model="listQuery.sfzh" clearable></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="申请人联系电话" prop="lxdh">
|
||||||
|
<el-input placeholder="请输入申请人联系电话" v-model="listQuery.lxdh" clearable></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="权限说明" prop="qxsm">
|
||||||
|
<el-input placeholder="请输入权限说明" v-model="listQuery.qxsm" clearable type="textarea" :rows="3"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<div class="tc">
|
||||||
|
<el-button type="primary" :loading="loading" @click="okSubit">确定</el-button>
|
||||||
|
<el-button @click="reset()"> 重置 </el-button>
|
||||||
|
</div>
|
||||||
|
</el-form>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script setup>
|
||||||
|
import { getItem } from "@/utils/storage";
|
||||||
|
import { ElMessage } from "element-plus";
|
||||||
|
import { qcckGet ,qcckPost} from "@/api/qcckApi.js";
|
||||||
|
import emitter from "@/utils/eventBus.js";
|
||||||
|
import { onMounted, ref,onUnmounted } from 'vue'
|
||||||
|
const showDialog = ref(false)
|
||||||
|
const listQuery = ref({
|
||||||
|
xm: getItem("USERNAME") || '',
|
||||||
|
sfzh: getItem("idEntityCard") || '',
|
||||||
|
lxdh: '',
|
||||||
|
qxsm: '',
|
||||||
|
})
|
||||||
|
const formRef = ref()
|
||||||
|
const rules = ref({
|
||||||
|
xm: [{ required: true, message: '请输入申请人姓名', trigger: 'blur' }],
|
||||||
|
sfzh: [{ required: true, message: '请输入申请人身份证', trigger: 'blur' }],
|
||||||
|
lxdh: [{ required: true, message: '请输入申请人联系电话', trigger: 'blur' }],
|
||||||
|
qxsm: [{ required: true, message: '请输入权限说明', trigger: 'blur' }],
|
||||||
|
})
|
||||||
|
const loading = ref(false)
|
||||||
|
|
||||||
|
onMounted(()=>{
|
||||||
|
emitter.on("openPermminsion", () => {
|
||||||
|
showDialog.value = true
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
// 提交
|
||||||
|
const okSubit = async () => {
|
||||||
|
formRef.value.validate((valid) => {
|
||||||
|
if (!valid) return false;
|
||||||
|
loading.value = true
|
||||||
|
qcckPost(listQuery.value, "/mosty-gsxt/gsxt/qxsq/addEntity").then(() => {
|
||||||
|
ElMessage.success("提交成功");
|
||||||
|
showDialog.value = false;
|
||||||
|
loading.value = false
|
||||||
|
}).catch(() => {
|
||||||
|
ElMessage.error("提交失败");
|
||||||
|
loading.value = false
|
||||||
|
});
|
||||||
|
})
|
||||||
|
// 提交表单
|
||||||
|
console.log(listQuery.value)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 重置
|
||||||
|
const reset = () => {
|
||||||
|
listQuery.value = {}
|
||||||
|
formRef.value.resetFields()
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
@ -1,6 +1,12 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog :model-value="modelValue" :title="title" width="70%" @close="closeDialog" destroy-on-close append-to-body>
|
<el-dialog :model-value="modelValue" width="70%" @close="closeDialog" destroy-on-close append-to-body :close-on-click-modal="false" >
|
||||||
<div style="height: 60vh; overflow: auto;">
|
<template #title>
|
||||||
|
<div class="flex just-between align-center">
|
||||||
|
<span class="f18">{{ props.title }}</span>
|
||||||
|
<span @click="exportFile" class="f14 pointer" style="color: #0072ff;">下载</span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<div>
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
|
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
|
||||||
<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">
|
||||||
@ -36,13 +42,15 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
|
import { getMultiDictVal } from "@/utils/dict.js"
|
||||||
|
import { exportExlByObj } from "@/utils/exportExcel.js"
|
||||||
import MyTable from "@/components/aboutTable/MyTable.vue";
|
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
import Search from "@/components/aboutTable/Search.vue";
|
import Search from "@/components/aboutTable/Search.vue";
|
||||||
import Pages from "@/components/aboutTable/Pages.vue";
|
import Pages from "@/components/aboutTable/Pages.vue";
|
||||||
import { xxcjXfxsSelectPage } from "@/api/xxcj.js"
|
import { xxcjXfxsSelectPage } from "@/api/xxcj.js"
|
||||||
import { ref, reactive, getCurrentInstance, watch } from "vue";
|
import { ref, reactive, getCurrentInstance, watch } from "vue";
|
||||||
const { proxy } = getCurrentInstance()
|
const { proxy } = getCurrentInstance()
|
||||||
const { D_GS_XS_SJLY, D_GS_XS_ZLLX, D_GS_ZDQT_FXDJ, D_GS_XS_CZZT } = proxy.$dict('D_GS_XS_SJLY', 'D_GS_XS_ZLLX', 'D_GS_ZDQT_FXDJ', 'D_GS_XS_CZZT')
|
const { D_BZ_SF,D_GS_XS_SJLY, D_GS_XS_ZLLX, D_GS_ZDQT_FXDJ, D_GS_XS_CZZT } = proxy.$dict('D_BZ_SF','D_GS_XS_SJLY', 'D_GS_XS_ZLLX', 'D_GS_ZDQT_FXDJ', 'D_GS_XS_CZZT')
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
modelValue: {
|
modelValue: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
@ -51,7 +59,8 @@ const props = defineProps({
|
|||||||
dict: {
|
dict: {
|
||||||
type: Object,
|
type: Object,
|
||||||
default: () => ({})
|
default: () => ({})
|
||||||
}, title: {
|
},
|
||||||
|
title: {
|
||||||
default: "下发总数",
|
default: "下发总数",
|
||||||
type: String
|
type: String
|
||||||
},
|
},
|
||||||
@ -140,6 +149,29 @@ const changeSize = (val) => {
|
|||||||
pageData.pageConfiger.pageSize = val;
|
pageData.pageConfiger.pageSize = val;
|
||||||
changePage()
|
changePage()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 导出
|
||||||
|
const exportFile = () =>{
|
||||||
|
const titleObj = {
|
||||||
|
zlbt: "指令标题",
|
||||||
|
zllx_name: "指令类型",
|
||||||
|
zldj_name: "指令等级",
|
||||||
|
jssj: "反馈截止时间",
|
||||||
|
czzt_name: "处置状态",
|
||||||
|
jsffk_name: "是否反馈",
|
||||||
|
sfqs_name: "是否签收",
|
||||||
|
}
|
||||||
|
let list = pageData.tableData.map(item => ({
|
||||||
|
...item,
|
||||||
|
zllx_name: getMultiDictVal(item.zllx, D_GS_XS_ZLLX),
|
||||||
|
zldj_name: getMultiDictVal(item.zldj, D_GS_ZDQT_FXDJ),
|
||||||
|
czzt_name: getMultiDictVal(item.czzt, D_GS_XS_CZZT),
|
||||||
|
sffk_name: getMultiDictVal(item.sffk, D_BZ_SF),
|
||||||
|
sfqs_name: getMultiDictVal(item.sfqs, D_BZ_SF),
|
||||||
|
}))
|
||||||
|
exportExlByObj(titleObj, list, props.title)
|
||||||
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped></style>
|
<style scoped></style>
|
||||||
|
|||||||
@ -1,6 +1,12 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog :model-value="modelValue" title="线索总数" width="70%" @close="closeDialog" destroy-on-close append-to-body>
|
<el-dialog :model-value="modelValue" width="70%" @close="closeDialog" destroy-on-close append-to-body>
|
||||||
<div style="height: 60vh; overflow: auto;">
|
<template #title>
|
||||||
|
<div class="flex just-between align-center">
|
||||||
|
<span class="f18">线索总数</span>
|
||||||
|
<span @click="exportFile" class="f14 pointer" style="color: #0072ff;">下载</span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<div>
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
|
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
|
||||||
<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">
|
||||||
@ -33,6 +39,8 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
|
import { getMultiDictVal } from "@/utils/dict.js"
|
||||||
|
import { exportExlByObj } from "@/utils/exportExcel.js"
|
||||||
import MyTable from "@/components/aboutTable/MyTable.vue";
|
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
import Search from "@/components/aboutTable/Search.vue";
|
import Search from "@/components/aboutTable/Search.vue";
|
||||||
import Pages from "@/components/aboutTable/Pages.vue";
|
import Pages from "@/components/aboutTable/Pages.vue";
|
||||||
@ -83,7 +91,6 @@ const pageData = reactive({
|
|||||||
{ label: "线索来源", prop: "cjLx",showSolt:true },
|
{ label: "线索来源", prop: "cjLx",showSolt:true },
|
||||||
{ label: "上报时间", prop: "sxsbsj",showOverflowTooltip:true },
|
{ label: "上报时间", prop: "sxsbsj",showOverflowTooltip:true },
|
||||||
{ label: "线索内容", prop: "qbnr"},
|
{ label: "线索内容", prop: "qbnr"},
|
||||||
|
|
||||||
{ label: "审核状态", prop: "shzt", showSolt: true },
|
{ label: "审核状态", prop: "shzt", showSolt: true },
|
||||||
],
|
],
|
||||||
tableHeight: "43vh",
|
tableHeight: "43vh",
|
||||||
@ -124,6 +131,27 @@ const changeSize = (val) => {
|
|||||||
pageData.pageConfiger.pageSize = val;
|
pageData.pageConfiger.pageSize = val;
|
||||||
changePage()
|
changePage()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 导出
|
||||||
|
const exportFile = () =>{
|
||||||
|
const titleObj = {
|
||||||
|
xsBh: "线索编号",
|
||||||
|
qbmc: "线索名称",
|
||||||
|
qblx_name: "线索类型",
|
||||||
|
cjLx_name: "线索来源",
|
||||||
|
sxsbsj: "上报时间",
|
||||||
|
qbnr: "线索内容",
|
||||||
|
shzt_name: "审核状态",
|
||||||
|
}
|
||||||
|
let list = pageData.tableData.map(item => ({
|
||||||
|
...item,
|
||||||
|
qblx_name: getMultiDictVal(item.qblx, D_GS_XS_LX),
|
||||||
|
cjLx_name: getMultiDictVal(item.cjLx, D_GS_XS_LY),
|
||||||
|
shzt_name: getMultiDictVal(item.shzt, D_BZ_XSSHZT),
|
||||||
|
}))
|
||||||
|
exportExlByObj(titleObj, list, '线索总数')
|
||||||
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped></style>
|
<style scoped></style>
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="noScollLine">
|
<div class="noScollLine">
|
||||||
|
<!-- 情报上报列表 -->
|
||||||
|
<Intelligence v-model="isShow.showQbsb" v-if="isShow.showQbsb" />
|
||||||
<!-- 预警信息弹框 -->
|
<!-- 预警信息弹框 -->
|
||||||
<Home_YJ v-if="isShow.showYj" :show="isShow.showYj" :data="list.Info_YJ" />
|
<Home_YJ v-if="isShow.showYj" :show="isShow.showYj" :data="list.Info_YJ" />
|
||||||
<PopupWarning v-if="isShow.showWarning" :show="isShow.showWarning" :data="list.Info_Warning" />
|
<PopupWarning v-if="isShow.showWarning" :show="isShow.showWarning" :data="list.Info_Warning" />
|
||||||
@ -10,11 +12,13 @@
|
|||||||
import emitter from "@/utils/eventBus.js";
|
import emitter from "@/utils/eventBus.js";
|
||||||
import Home_YJ from "./components/home_yj.vue";
|
import Home_YJ from "./components/home_yj.vue";
|
||||||
import PopupWarning from './components/popupWarning'
|
import PopupWarning from './components/popupWarning'
|
||||||
|
import Intelligence from "@/views/home/model/mesgSwitch/intelligence.vue";
|
||||||
import { ref, onMounted, onUnmounted, reactive, getCurrentInstance } from "vue";
|
import { ref, onMounted, onUnmounted, reactive, getCurrentInstance } from "vue";
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
const isShow = ref({
|
const isShow = ref({
|
||||||
showYj: false, //预警弹窗
|
showYj: false, //预警弹窗
|
||||||
showWarning: false
|
showWarning: false, //预警弹窗
|
||||||
|
showQbsb: false, //情报上报列表弹窗
|
||||||
});
|
});
|
||||||
const list = reactive({
|
const list = reactive({
|
||||||
Info_YJ: [], //预警数据
|
Info_YJ: [], //预警数据
|
||||||
@ -32,6 +36,10 @@ onMounted(() => {
|
|||||||
isShow.value.showWarning = res ? true : false;
|
isShow.value.showWarning = res ? true : false;
|
||||||
if (res) list.Info_Warning = res;
|
if (res) list.Info_Warning = res;
|
||||||
});
|
});
|
||||||
|
// 展示情报上报列表
|
||||||
|
emitter.on("lookQbsbList", (res) => {
|
||||||
|
isShow.value.showQbsb = res ? true : false;
|
||||||
|
});
|
||||||
});
|
});
|
||||||
onUnmounted(() => {
|
onUnmounted(() => {
|
||||||
emitter.off("showHomeYJ");
|
emitter.off("showHomeYJ");
|
||||||
|
|||||||
@ -12,6 +12,10 @@ const props = defineProps({
|
|||||||
data: {
|
data: {
|
||||||
type: Object,
|
type: Object,
|
||||||
default: () => { }
|
default: () => { }
|
||||||
|
},
|
||||||
|
rotate: {
|
||||||
|
type: Number,
|
||||||
|
default: 0
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
const emit = defineEmits(['click']);
|
const emit = defineEmits(['click']);
|
||||||
@ -108,7 +112,7 @@ function chartFn() {
|
|||||||
top: '15%',
|
top: '15%',
|
||||||
left: '2%',
|
left: '2%',
|
||||||
right: '2%',
|
right: '2%',
|
||||||
bottom: '15%',
|
bottom: '0%',
|
||||||
containLabel: true
|
containLabel: true
|
||||||
},
|
},
|
||||||
tooltip: {
|
tooltip: {
|
||||||
@ -139,12 +143,13 @@ function chartFn() {
|
|||||||
show: true
|
show: true
|
||||||
},
|
},
|
||||||
axisLabel: {
|
axisLabel: {
|
||||||
interval: 1, // 控制标签的显示间隔,0 表示全部显示,可以根据需要调整为其他值,例如 1 表示每隔一个显示一个标签。
|
interval: 0, // 控制标签的显示间隔,0 表示全部显示,可以根据需要调整为其他值,例如 1 表示每隔一个显示一个标签。
|
||||||
color: '#666666'
|
color: '#666666',
|
||||||
|
rotate: props.rotate || 0,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
yAxis: {
|
yAxis: {
|
||||||
type: "value",
|
type: "value",
|
||||||
splitLine: {
|
splitLine: {
|
||||||
show:true ,
|
show:true ,
|
||||||
lineStyle: {
|
lineStyle: {
|
||||||
@ -155,7 +160,6 @@ function chartFn() {
|
|||||||
axisTick: { show: false },
|
axisTick: { show: false },
|
||||||
axisLine: { show: false },
|
axisLine: { show: false },
|
||||||
axisLabel: { color: props.color },
|
axisLabel: { color: props.color },
|
||||||
|
|
||||||
},
|
},
|
||||||
series: [
|
series: [
|
||||||
{
|
{
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
import * as echarts from "echarts";
|
import * as echarts from "echarts";
|
||||||
import { onMounted, ref, reactive, defineProps, onUnmounted, watch, nextTick } from "vue";
|
import { defineProps, watch, nextTick } from "vue";
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
echartsId:{
|
echartsId:{
|
||||||
type:String,
|
type:String,
|
||||||
@ -18,25 +18,14 @@ const props = defineProps({
|
|||||||
default:[]
|
default:[]
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
// 监听数据变化
|
||||||
// 保存echarts实例
|
watch(()=>props.data,val=>{
|
||||||
const myChart = ref(null);
|
nextTick(()=>{ chartFn(val) })
|
||||||
|
},{immediate:true,deep:true})
|
||||||
// 定义resize处理函数
|
|
||||||
const handleResize = () => {
|
|
||||||
if (myChart.value) {
|
|
||||||
myChart.value.resize();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
function chartFn() {
|
function chartFn() {
|
||||||
// 如果已有实例,先销毁
|
|
||||||
if (myChart.value) {
|
|
||||||
myChart.value.dispose();
|
|
||||||
}
|
|
||||||
|
|
||||||
// 创建新实例
|
// 创建新实例
|
||||||
myChart.value = echarts.init(document.getElementById(props.echartsId));
|
let myChart = echarts.init(document.getElementById(props.echartsId));
|
||||||
var option = {
|
var option = {
|
||||||
grid: {
|
grid: {
|
||||||
top: "8%",
|
top: "8%",
|
||||||
@ -86,6 +75,7 @@ function chartFn() {
|
|||||||
},
|
},
|
||||||
series: [
|
series: [
|
||||||
{
|
{
|
||||||
|
name: props.name,
|
||||||
type: "line",
|
type: "line",
|
||||||
smooth:true,
|
smooth:true,
|
||||||
showSymbol:false,
|
showSymbol:false,
|
||||||
@ -115,28 +105,14 @@ function chartFn() {
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
option && myChart.value.setOption(option);
|
option && myChart.setOption(option);
|
||||||
|
window.addEventListener('resize',function(){
|
||||||
|
myChart.resize();
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 监听数据变化
|
|
||||||
watch(()=>props.data,val=>{
|
|
||||||
nextTick(()=>{ chartFn() })
|
|
||||||
},{immediate:true,deep:true})
|
|
||||||
|
|
||||||
// 组件挂载时初始化图表并添加事件监听
|
|
||||||
onMounted(()=>{
|
|
||||||
chartFn();
|
|
||||||
window.addEventListener('resize', handleResize);
|
|
||||||
});
|
|
||||||
|
|
||||||
// 组件卸载时清理资源
|
|
||||||
onUnmounted(()=>{
|
|
||||||
if (myChart.value) {
|
|
||||||
myChart.value.dispose();
|
|
||||||
myChart.value = null;
|
|
||||||
}
|
|
||||||
window.removeEventListener('resize', handleResize);
|
|
||||||
});
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|||||||
@ -100,7 +100,7 @@ function chartFn(series) {
|
|||||||
axisTick: { alignWithLabel: true },
|
axisTick: { alignWithLabel: true },
|
||||||
axisLine: { show: false },
|
axisLine: { show: false },
|
||||||
axisLabel: {
|
axisLabel: {
|
||||||
rotate:props.rotate, // 设置标签旋转角度为45度
|
rotate:props.rotate, // 设置标签旋转角度为45度
|
||||||
show: true,
|
show: true,
|
||||||
color: props.data.labelColor || "#fff",
|
color: props.data.labelColor || "#fff",
|
||||||
interval: props.data.interval || 0, // 强制显示所有标签
|
interval: props.data.interval || 0, // 强制显示所有标签
|
||||||
|
|||||||
@ -130,9 +130,13 @@
|
|||||||
<LeftDialog></LeftDialog>
|
<LeftDialog></LeftDialog>
|
||||||
<!-- 人员弹窗 -->
|
<!-- 人员弹窗 -->
|
||||||
<PeoDialog ref="peoDialogRef"></PeoDialog>
|
<PeoDialog ref="peoDialogRef"></PeoDialog>
|
||||||
|
|
||||||
|
<!-- 权限申请 -->
|
||||||
|
<QxsqDialog />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
|
import QxsqDialog from './components/qxsqDialog.vue'
|
||||||
import { qcckGet ,qcckPost} from "@/api/qcckApi.js";
|
import { qcckGet ,qcckPost} from "@/api/qcckApi.js";
|
||||||
import { ref, onMounted, onUnmounted,getCurrentInstance } from 'vue'
|
import { ref, onMounted, onUnmounted,getCurrentInstance } from 'vue'
|
||||||
import PeoDialog from './components/peoDialog.vue'
|
import PeoDialog from './components/peoDialog.vue'
|
||||||
|
|||||||
@ -106,15 +106,11 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import FlowLine from './flowLine.vue'
|
import FlowLine from './flowLine.vue'
|
||||||
import { getItem } from "@/utils/storage";
|
import { getItem } from "@/utils/storage";
|
||||||
|
import emitter from "@/utils/eventBus.js";
|
||||||
import { timeValidate, weekValidate } from "@/utils/tools.js";
|
import { timeValidate, weekValidate } from "@/utils/tools.js";
|
||||||
import { useRouter, useRoute, onBeforeRouteLeave } from "vue-router";
|
import { useRouter, useRoute, onBeforeRouteLeave } from "vue-router";
|
||||||
import { useStore } from "vuex";
|
import { useStore } from "vuex";
|
||||||
import { getUserIsRed } from "@/api/sys.js"
|
import { getUserIsRed } from "@/api/sys.js"
|
||||||
import xinxi from "@/assets/images/icon_045.png";
|
|
||||||
import tool from "@/assets/images/icon_044.png";
|
|
||||||
|
|
||||||
|
|
||||||
const icon1 = require("@/assets/images/icon_048.png"); //晴天
|
const icon1 = require("@/assets/images/icon_048.png"); //晴天
|
||||||
const icon2 = require("@/assets/images/icon_049.png"); //小雨
|
const icon2 = require("@/assets/images/icon_049.png"); //小雨
|
||||||
const icon3 = require("@/assets/images/icon_050.png"); //高温
|
const icon3 = require("@/assets/images/icon_050.png"); //高温
|
||||||
@ -152,11 +148,11 @@ const btns = reactive({
|
|||||||
leftBtn: ["数据整合", '分析研判'],
|
leftBtn: ["数据整合", '分析研判'],
|
||||||
moreBtn: [
|
moreBtn: [
|
||||||
{ name: '后台', img: require('@/assets/images/Group427322486.png') },
|
{ name: '后台', img: require('@/assets/images/Group427322486.png') },
|
||||||
|
{ name: '权限申请', img: require('@/assets/images/Group427322486.png') },
|
||||||
{ name: '退出登录', img: require('@/assets/images/Group427322485.png') }]
|
{ name: '退出登录', img: require('@/assets/images/Group427322485.png') }]
|
||||||
});
|
});
|
||||||
const btnsActive = ref("");
|
const btnsActive = ref("");
|
||||||
|
|
||||||
|
|
||||||
const showMore = ref(false); //更多
|
const showMore = ref(false); //更多
|
||||||
const activeText = ref("");
|
const activeText = ref("");
|
||||||
const day = ref(0);
|
const day = ref(0);
|
||||||
@ -201,6 +197,9 @@ const handleBtns = (val) => {
|
|||||||
case "退出登录":
|
case "退出登录":
|
||||||
store.dispatch("user/logout");
|
store.dispatch("user/logout");
|
||||||
break;
|
break;
|
||||||
|
case "权限申请":
|
||||||
|
emitter.emit("openPermminsion")
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -79,7 +79,6 @@ const openTc = (val) => {
|
|||||||
title.value = '信息采集总数'
|
title.value = '信息采集总数'
|
||||||
break;
|
break;
|
||||||
case 'xszs':
|
case 'xszs':
|
||||||
|
|
||||||
openShow.xszs = true
|
openShow.xszs = true
|
||||||
title.value = '线索总数'
|
title.value = '线索总数'
|
||||||
break;
|
break;
|
||||||
|
|||||||
@ -1,5 +1,11 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog :model-value="modelValue" title="情报列表" width="70%" @close="closeDialog" destroy-on-close>
|
<el-dialog :model-value="modelValue" width="70%" @close="closeDialog" :destroy-on-close="true" :close-on-click-modal="false" >
|
||||||
|
<template #title>
|
||||||
|
<div class="flex just-between align-center">
|
||||||
|
<span class="f18" style="color: #333;">情报列表</span>
|
||||||
|
<span @click="exportFile" class="f14 pointer" style="color: #0072ff;">下载</span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
|
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
|
||||||
<MyTable customClass="zdy_peo_table" :tableData="pageData.tableData" :tableColumn="pageData.tableColumn"
|
<MyTable customClass="zdy_peo_table" :tableData="pageData.tableData" :tableColumn="pageData.tableColumn"
|
||||||
:tableHeight="pageData.tableHeight" :key="pageData.keyCount" :tableConfiger="pageData.tableConfiger"
|
:tableHeight="pageData.tableHeight" :key="pageData.keyCount" :tableConfiger="pageData.tableConfiger"
|
||||||
@ -10,7 +16,6 @@
|
|||||||
<template #qbly="{ row }">
|
<template #qbly="{ row }">
|
||||||
<DictTag :tag="false" :value="row.qbly" :options="D_GS_XS_LY" />
|
<DictTag :tag="false" :value="row.qbly" :options="D_GS_XS_LY" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template #shzt="{ row }">
|
<template #shzt="{ row }">
|
||||||
<!-- 采纳(将这条信息推送到情报管理),退回! -->
|
<!-- 采纳(将这条信息推送到情报管理),退回! -->
|
||||||
<DictTag :tag="false" :value="row.shzt" :options="D_BZ_XSSHZT" @clickTag="clickTag(row.shzt)" />
|
<DictTag :tag="false" :value="row.shzt" :options="D_BZ_XSSHZT" @clickTag="clickTag(row.shzt)" />
|
||||||
@ -34,15 +39,14 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
|
import { exportExlByObj } from "@/utils/exportExcel.js"
|
||||||
import MyTable from "@/components/aboutTable/MyTable.vue";
|
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
import Search from "@/components/aboutTable/Search.vue";
|
import Search from "@/components/aboutTable/Search.vue";
|
||||||
import Pages from "@/components/aboutTable/Pages.vue";
|
import Pages from "@/components/aboutTable/Pages.vue";
|
||||||
import Xq from "./xq.vue";
|
import Xq from "./xq.vue";
|
||||||
import { qbcjSelectPage } from "@/api/Intelligence.js";
|
import {xxcjSelectPage} from '@/api/xxcj.js'
|
||||||
import {xxcjSelectPage,xxcjXxzsx} from '@/api/xxcj.js'
|
import { ref, reactive, getCurrentInstance, watch, onMounted } from "vue";
|
||||||
import { ref, reactive, getCurrentInstance, watch } from "vue";
|
|
||||||
import { useRoute,useRouter } from 'vue-router'
|
import { useRoute,useRouter } from 'vue-router'
|
||||||
const route = useRoute()
|
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
const { proxy } = getCurrentInstance()
|
const { proxy } = getCurrentInstance()
|
||||||
const { D_BZ_QBSBLY,D_GS_XS_LX,D_GS_XS_LY ,D_BZ_XSSHZT} = proxy.$dict("D_BZ_QBSBLY","D_GS_XS_LX","D_GS_XS_LY","D_BZ_XSSHZT")
|
const { D_BZ_QBSBLY,D_GS_XS_LX,D_GS_XS_LY ,D_BZ_XSSHZT} = proxy.$dict("D_BZ_QBSBLY","D_GS_XS_LX","D_GS_XS_LY","D_BZ_XSSHZT")
|
||||||
@ -102,29 +106,26 @@ const pageData = reactive({
|
|||||||
{ label: "上报人姓名", prop: "xssbr" },
|
{ label: "上报人姓名", prop: "xssbr" },
|
||||||
{ label: "情报编号", prop: "xsBh" },
|
{ label: "情报编号", prop: "xsBh" },
|
||||||
{ label: "情报标题", prop: "qbmc" },
|
{ label: "情报标题", prop: "qbmc" },
|
||||||
// { label: "情报类型", prop: "qblx", showSolt: true },
|
|
||||||
// { label: "情报来源", prop: "qbly", showSolt: true },
|
|
||||||
{ label: "情报上报时间", prop: "sxsbsj" ,watch:'300'},
|
{ label: "情报上报时间", prop: "sxsbsj" ,watch:'300'},
|
||||||
// { label: "指向地点", prop: "zxdz" },
|
|
||||||
{ label: "情报内容", prop: "qbnr" },
|
{ label: "情报内容", prop: "qbnr" },
|
||||||
],
|
],
|
||||||
tableHeight: "50vh",
|
tableHeight: "40vh",
|
||||||
});
|
});
|
||||||
const parameter = ref()
|
const parameter = ref()
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
changePage()
|
||||||
|
})
|
||||||
|
|
||||||
const onSearch = (val) => {
|
const onSearch = (val) => {
|
||||||
const promes = {
|
const promes = {
|
||||||
startTime: val.startTime && val.startTime.length > 0 ? val.startTime[0] : '',
|
startTime: val.startTime ? val.startTime[0] : '',
|
||||||
endTime: val.startTime && val.startTime.length > 0 ? val.startTime[1] : '',
|
endTime: val.endTime ? val.endTime[1] : '',
|
||||||
}
|
}
|
||||||
parameter.value = { ...val, ...promes }
|
parameter.value = { ...val, ...promes }
|
||||||
pageData.pageConfiger.pageCurrent = 1;
|
pageData.pageConfiger.pageCurrent = 1;
|
||||||
changePage()
|
changePage()
|
||||||
}
|
}
|
||||||
watch(() => props.modelValue, (val) => {
|
|
||||||
if (val) {
|
|
||||||
changePage()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
const changePage = () => {
|
const changePage = () => {
|
||||||
pageData.tableConfiger.loading = true;
|
pageData.tableConfiger.loading = true;
|
||||||
let data = { ...pageData.pageConfiger, ...parameter.value,qbjb:'01' };
|
let data = { ...pageData.pageConfiger, ...parameter.value,qbjb:'01' };
|
||||||
@ -162,6 +163,19 @@ const clickTag = (row) => {
|
|||||||
dataList.value = row.row;
|
dataList.value = row.row;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 导出
|
||||||
|
const exportFile = () =>{
|
||||||
|
const titleObj = {
|
||||||
|
xssbr: "上报人姓名",
|
||||||
|
xsBh: "情报编号",
|
||||||
|
qbmc: "情报标题",
|
||||||
|
sxsbsj: "情报上报时间",
|
||||||
|
qbnr: "情报内容",
|
||||||
|
}
|
||||||
|
exportExlByObj(titleObj, pageData.tableData, '情报列表')
|
||||||
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
|
|||||||
@ -1,33 +1,18 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="comom-title">
|
<div class="comom-title">
|
||||||
<span class="title">情报上报统计<span class="titleFz ml18" @click.stop="reversalPush">切换</span></span>
|
<span class="title">情报上报统计<span class="titleFz ml18" @click.stop="reversalPush">切换</span></span>
|
||||||
<div class="title titleFz" @click="visible = true">
|
<div class="title titleFz" @click="lookList">查看列表</div>
|
||||||
查看列表
|
|
||||||
</div>
|
|
||||||
<!-- <el-popover placement="right" :width="430" :visible="visible">
|
|
||||||
<template #reference>
|
|
||||||
</template>
|
|
||||||
<div>
|
|
||||||
<div class="qbltData">
|
|
||||||
<div>查询</div>
|
|
||||||
<div class="close" @click.stop="close()">X</div>
|
|
||||||
</div>
|
|
||||||
<TimeData v-if="visible" @changeTime="changeTime" />
|
|
||||||
</div>
|
|
||||||
</el-popover> -->
|
|
||||||
</div>
|
</div>
|
||||||
<div class="comom-cnt qxsbBox">
|
<div class="comom-cnt qxsbBox">
|
||||||
<LineEcharts echartsId="qbsbEcharts" :data="dataList" :dataZoom="false" :rotate="-25"></LineEcharts >
|
<LineEcharts echartsId="qbsbEcharts" :data="dataList" :dataZoom="false" :rotate="-25"></LineEcharts >
|
||||||
</div>
|
</div>
|
||||||
<Intelligence v-model="visible" :dict="{D_BZ_QBSBLY}"/>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
|
import emitter from "@/utils/eventBus.js";
|
||||||
import { qcckPost } from "@/api/qcckApi.js";
|
import { qcckPost } from "@/api/qcckApi.js";
|
||||||
import LineEcharts from "../echarts/moreLineEcharts.vue";
|
import LineEcharts from "../echarts/moreLineEcharts.vue";
|
||||||
import Intelligence from "@/views/home/model/mesgSwitch/intelligence.vue";
|
|
||||||
import { defineEmits, onMounted, ref, } from 'vue';
|
import { defineEmits, onMounted, ref, } from 'vue';
|
||||||
// import TimeData from '@/views/home/model/mesgSwitch/timeData.vue'
|
|
||||||
const emit = defineEmits(['change'])
|
const emit = defineEmits(['change'])
|
||||||
|
|
||||||
const dataList = ref({
|
const dataList = ref({
|
||||||
@ -55,15 +40,8 @@ const getCount = () => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const visible = ref(false)
|
const lookList = () => {
|
||||||
const changeTime = (val) => {
|
emitter.emit('lookQbsbList',true)
|
||||||
listQuery.value = {
|
|
||||||
...val
|
|
||||||
}
|
|
||||||
getCount()
|
|
||||||
}
|
|
||||||
const close = () => {
|
|
||||||
visible.value = false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const reversalPush = () => {
|
const reversalPush = () => {
|
||||||
|
|||||||
@ -3,8 +3,8 @@
|
|||||||
<div class="flex align-center" v-for="(item, idx) in contentItem" :key="idx">
|
<div class="flex align-center" v-for="(item, idx) in contentItem" :key="idx">
|
||||||
<div class="mr10"><img :src="item.icon" alt=""></div>
|
<div class="mr10"><img :src="item.icon" alt=""></div>
|
||||||
<div class="vountItem">
|
<div class="vountItem">
|
||||||
<div style="color:#ffffff" class="f16 lh20">{{ item.label }} <span @click="openTc(item.type,'zs')" v-if="item.type == 'yjzs'">{{ item.value }}</span></div>
|
<div style="color:#ffffff" class="f16 lh20">{{ item.label }} <span class="pointer" @click="openTc(item.type,'zs')" v-if="item.type == 'yjzs'">{{ item.value }}</span></div>
|
||||||
<div v-if="!item.isChild" class="mt4 f12" style="color: #ffffff;font-size: 24px;">{{ item.value }}</div>
|
<div v-if="!item.isChild" class="mt4 f12 pointer" style="color: #ffffff;font-size: 24px;" @click="openTc(item.type,'zs')" >{{ item.value }}</div>
|
||||||
<div v-else class="mt4 flex align-center just-between" style="color: #ffffff;">
|
<div v-else class="mt4 flex align-center just-between" style="color: #ffffff;">
|
||||||
<span class="f12" style="color: #ff0000;" @click="openTc(item.type,'wqs')">未签收:{{ item.wqsyj }}</span>
|
<span class="f12" style="color: #ff0000;" @click="openTc(item.type,'wqs')">未签收:{{ item.wqsyj }}</span>
|
||||||
<span class="f12" style="color: #4cf35d;" @click="openTc(item.type,'yfk')">已反馈:{{ item.yfkyj }}</span>
|
<span class="f12" style="color: #4cf35d;" @click="openTc(item.type,'yfk')">已反馈:{{ item.yfkyj }}</span>
|
||||||
|
|||||||
Reference in New Issue
Block a user