更新代码

This commit is contained in:
2026-04-07 17:18:19 +08:00
parent ef3c23a03a
commit 970596f922
14 changed files with 274 additions and 291 deletions

BIN
src/assets/images/17.mp3 Normal file

Binary file not shown.

BIN
src/assets/images/18.mp3 Normal file

Binary file not shown.

BIN
src/assets/images/19.mp3 Normal file

Binary file not shown.

View File

@ -64,7 +64,10 @@ const audioPaths = {
"13": require("@/assets/images/13.mp3"), //有新的研判约稿通知
"14": require("@/assets/images/14.mp3"), //有新的公文发布
"15": require("@/assets/images/15.mp3"), //有新的警情监测预警,请注意查收
"16": require("@/assets/images/16.mp3") //有新的一级临控预警,请及时签收处理!
"16": require("@/assets/images/16.mp3"), //有新的一级临控预警,请及时签收处理!
"17": require("@/assets/images/17.mp3"), //有新的紧急预警信息,请及时签收处理!
"18": require("@/assets/images/18.mp3"), //滴滴滴~~~叮~~~~
"19": require("@/assets/images/19.mp3"), //有新的预警信息,请您注意查收
};
// 初始化音频播放器
@ -88,24 +91,30 @@ const playAudioByType = (val) => {
case "01":
switch (val.yjJb) {
case "01":
audioPlayers.value["01"].play();
audioPlayers.value["06"].play();
audioPlayers.value["18"].play();
audioPlayers.value["17"].play();
// audioPlayers.value["01"].play();
// audioPlayers.value["06"].play();
break;
default:
audioPlayers.value["02"].play();
audioPlayers.value["07"].play();
audioPlayers.value["19"].play();
// audioPlayers.value["02"].play();
// audioPlayers.value["07"].play();
break;
}
break;
case "02":
switch (val.yjJb) {
case "01":
audioPlayers.value["01"].play();
audioPlayers.value["04"].play();
audioPlayers.value["18"].play();
audioPlayers.value["17"].play();
// audioPlayers.value["01"].play();
// audioPlayers.value["04"].play();
break;
default:
audioPlayers.value["02"].play();
audioPlayers.value["05"].play();
audioPlayers.value["19"].play();
// audioPlayers.value["02"].play();
// audioPlayers.value["05"].play();
break;
}
break;
@ -129,9 +138,18 @@ const playAudioByType = (val) => {
audioPlayers.value["03"].play();
audioPlayers.value["11"].play();
break;
case "06": //监测
audioPlayers.value["02"].play();
audioPlayers.value["15"].play();
case "06": //检测警情
switch (val.jqdjdm) {
case "01":
audioPlayers.value["18"].play();
audioPlayers.value["17"].play();
break;
default:
audioPlayers.value["19"].play();
break;
}
// audioPlayers.value["02"].play();
// audioPlayers.value["15"].play();
break;
// case '07':
// audioPlayers.value['07'].play()

View File

@ -57,6 +57,12 @@
<template #zdrZt="{ row }">
<DictTag :tag="false" :value="row.zdrZt" :options="D_GS_ZDQT_ZT" />
</template>
<template #zdrSsjz="{ row }">
<DictTag :tag="false" :value="row.zdrSsjz" :options="D_GS_BK_SSJZ" />
</template>
<template #zdrSjjz="{ row }">
<DictTag :tag="false" :value="row.zdrSjjz" :options="D_GS_BK_SSJZ" />
</template>
<template #xtSjzt="{ row }">
<div>
@ -242,7 +248,21 @@ const searchConfiger = ref([
placeholder: "请输入人员级别",
showType: "select",
options: D_GS_ZDR_RYJB
}
},
{
label: "所属警种",
prop: "zdrSsjz",
placeholder: "请选择所属警种",
showType: "select",
options: D_GS_BK_SSJZ
},
{
label: "涉及警种",
prop: "zdrSjjz",
placeholder: "请选择涉及警种",
showType: "select",
options: D_GS_BK_SSJZ
},
]);
const queryFrom = ref({});
const pageData = reactive({
@ -280,6 +300,8 @@ const pageData = reactive({
},
{ label: "审核状态", prop: "zdrZt", slotName: "zdrZt", width: 100 },
{ label: "入库时间", prop: "zdrRkkssj" },
{ label: "所属警种", prop: "zdrSsjz",slotName: "zdrSsjz", },
{ label: "涉及警种", prop: "zdrSjjz",slotName: "zdrSjjz", },
{
label: "操作",
prop: "controls",

View File

@ -9,23 +9,14 @@
</div>
<div class="form_cnt">
<FormMessage v-model="listQuery" :formList="formData" ref="elform" :rules="rules" :disabled="title == '详情'">
<template #bkyj>
<el-divider content-position="left"><span style="color: blue;">布控预警</span></el-divider>
<template #yjNum>
<el-divider content-position="left"><span style="color: blue;">预警</span></el-divider>
</template>
<template #clyj>
<el-divider content-position="left"><span style="color: blue;">车辆预警</span></el-divider>
<template #csfs>
<el-divider content-position="left"><span style="color: blue;">信息</span></el-divider>
</template>
<template #qlry>
<el-divider content-position="left"><span style="color: blue;">7类重点人员预警</span></el-divider>
</template>
<template #rxyj>
<el-divider content-position="left"><span style="color: blue;">人像预警</span></el-divider>
</template>
<template #zbyj>
<el-divider content-position="left"><span style="color: blue;">政保预警</span></el-divider>
</template>
<template #fs>
<el-divider content-position="left"><span style="color: blue;">考核分数</span></el-divider>
<template #ypNum>
<el-divider content-position="left"><span style="color: blue;">研判</span></el-divider>
</template>
</FormMessage>
</div>
@ -62,25 +53,21 @@ const formData = ref([
{ label: "考核开始日期", prop: "ksrq", type: "date" },
{ label: "考核结束日期", prop: "jsrq", type: "date" },
{ label: "考核描述", prop: "khzbms", type: "textarea", width: "100%" },
{ prop: "fs", type: "slot", width: "100%" },
{ label: "采集分数", prop: "cjfs", type: "number", min: 0, max: 100, step: 1 },
{ label: "研判分数", prop: "ypfs", type: "number", min: 0, max: 100, step: 1 },
{ prop: "bkyj", type: "slot", width: "100%" },
{ prop: "yjNum", type: "slot", width: "100%" },
{ label: "布控预警反馈率", prop: "bkyjFkl", type: "number", min: 0, max: 100, step: 0.01 },
{ label: "布控预警签收率", prop: "bkyjQsl", type: "number", min: 0, max: 100, step: 0.01 },
{ prop: "clyj", type: "slot", width: "100%" },
{ label: "车辆预警反馈率", prop: "clyjFkl", type: "number", min: 0, max: 100, step: 0.01 },
{ label: "车辆预警签收率", prop: "clyjQsl", type: "number", min: 0, max: 100, step: 0.01 },
{ prop: "qlry", type: "slot", width: "100%" },
{ label: "7类重点人员反馈率", prop: "qlryFkl", type: "number", min: 0, max: 100, step: 0.01 },
{ label: "7类重点人员签收率", prop: "qlryQsl", type: "number", min: 0, max: 100, step: 0.01 },
{ prop: "rxyj", type: "slot", width: "100%" },
{ label: "人像预警反馈率", prop: "rxyjFkl", type: "number", min: 0, max: 100, step: 0.01 },
{ label: "7类重点人员反馈率", prop: "qlryFkl", type: "number", min: 0, max: 100, step: 0.01 },
{ label: "人像预警签收率", prop: "rxyjQsl", type: "number", min: 0, max: 100, step: 0.01 },
{ prop: "zbyj", type: "slot", width: "100%" },
{ label: "政保预警反馈率", prop: "zbyjFkl", type: "number", min: 0, max: 100, step: 0.01 },
{ label: "人像预警反馈率", prop: "rxyjFkl", type: "number", min: 0, max: 100, step: 0.01 },
{ label: "政保预警签收率", prop: "zbyjQsl", type: "number", min: 0, max: 100, step: 0.01 },
{ label: "政保预警反馈率", prop: "zbyjFkl", type: "number", min: 0, max: 100, step: 0.01 },
{ prop: "csfs", type: "slot", width: "100%" },
{ label: "采集分数", prop: "cjfs", type: "number", min: 0, max: 100, step: 1 },
{ prop: "ypNum", type: "slot", width: "100%" },
{ label: "研判分数", prop: "ypfs", type: "number", min: 0, max: 100, step: 1 },
]);
const loading = ref(false);

View File

@ -28,10 +28,10 @@
</el-icon>
<span class="vertical-middle">删除</span>
</el-button>
<el-button type="primary" size="small" @click="handleReport">
<!-- <el-button type="primary" size="small" @click="handleReport">
<el-icon class="vertical-middle"><Edit /></el-icon>
<span class="vertical-middle">情报信息报告</span>
</el-button>
</el-button> -->
</Searchs>
</div>

View File

@ -92,7 +92,7 @@ const searchConfiger = ref([
},
{
label: "监测时间",
prop: "startTime",
prop: "datatime",
placeholder: "请选择监测时间",
showType: "datetimerange"
},
@ -120,23 +120,15 @@ const pageData = reactive({
}, //分页
controlsWidth: 250, //操作栏宽度
tableColumn: [
{ label: "规则描述", prop: "gzms", showOverflowTooltip: true },
{ label: "内容关键字", prop: "jqgjz", showOverflowTooltip: true },
{
label: "警情等级",
prop: "jqdjdm",
showOverflowTooltip: true,
showSolt: true
},
{
label: "警情类型",
prop: "jqzldm",
showOverflowTooltip: true,
showSolt: true
},
{ label: "警情等级", prop: "jqdjdm", showOverflowTooltip: true, showSolt: true },
{ label: "警情类型", prop: "jqzldm", showOverflowTooltip: true, showSolt: true },
{ label: "录入人姓名", prop: "lrrXm", showOverflowTooltip: true },
{ label: "录入人身份证号", prop: "lrrSfzh", showOverflowTooltip: true },
{ label: "所属部门", prop: "ssbm" }
{ label: "监测开始时间", prop: "kssj", showOverflowTooltip: true },
{ label: "监测结束时间", prop: "jssj", showOverflowTooltip: true },
{ label: "所属部门", prop: "ssbm" },
{ label: "规则描述", prop: "gzms", showOverflowTooltip: true },
]
});
@ -150,8 +142,8 @@ onMounted(() => {
const onSearch = (val) => {
queryFrom.value = {
...val,
kssj: val.startTime ? val.startTime[0] : "",
jssj: val.startTime ? val.startTime[1] : ""
startTime: val.datatime ? val.datatime[0] : "",
endTime: val.datatime ? val.datatime[1] : ""
};
pageData.pageConfiger.pageCurrent = 1;
getList();
@ -172,6 +164,7 @@ const getList = () => {
...pageData.pageConfiger,
...queryFrom.value
};
delete promes.datatime;
qcckGet(promes, "/mosty-gsxt/jqjczg/getPageList")
.then((res) => {
pageData.tableData = res.records || [];

View File

@ -131,12 +131,18 @@ const props = defineProps({
searchArr: {
type: Array,
default: () => []
}
},
});
const emit = defineEmits(["search", "submit", "reset"]);
const emit = defineEmits(['update:modelValue',"search", "submit", "reset"]);
const formState = reactive({});
watch(()=>formState,val=>{
emit('update:modelValue',val)
},{immediate:true})
const renderFields = computed(() => {
const source = props.searchArr.length ? props.searchArr : props.fields;
return source

View File

@ -8,15 +8,10 @@
@search="onSearch"
>
<template #but>
<el-button type="primary" @click="exportExl" size="small"
>导出</el-button
>
<el-button type="primary" size="small" @click="handleQs"
>签收</el-button
>
<el-button type="primary" size="small" @click="handleRelatedWarning"
>关联预警</el-button
>
<el-button type="primary" @click="exportExl" size="small">导出</el-button>
<el-button type="primary" :loading="btnLoading" size="small" @click="exportExcelAll">筛选导出</el-button>
<el-button type="primary" size="small" @click="handleQs">签收</el-button>
<el-button type="primary" size="small" @click="handleRelatedWarning">关联预警</el-button>
</template>
</QueryFormPanel>
</div>
@ -204,7 +199,7 @@ const searchConfiger = ref([
},
{
label: "预警时间",
prop: "startTime",
prop: "datetime",
showType: "datetimerange",
placeholder: "请选择预警时间"
},
@ -279,6 +274,7 @@ const ORDIMG = "https://89.40.7.122:38496/image";
const IMGYM = "https://sg.lz.dsj.xz/dhimage";
const permission_sfqs = ref(false);
const roleCode = ref(false);
const btnLoading = ref(false);
const queryFrom = ref({});
@ -349,8 +345,8 @@ const onSearch = (val) => {
queryFrom.value = {
...queryFrom.value,
...val,
startTime: val.startTime ? val.startTime[0] : "",
endTime: val.startTime ? val.startTime[1] : "",
startTime: val.datetime ? val.datetime[0] : "",
endTime: val.datetime ? val.datetime[1] : "",
bkkssj: val.bksj ? val.bksj[0] : "",
bkjssj: val.bksj ? val.bksj[1] : "",
yjJb: val.yjJb?.join(",") || ""
@ -383,8 +379,9 @@ const getList = () => {
pageSize: pageData.pageConfiger.pageSize,
yjlb: "01"
};
qcckPost(params, "/mosty-gsxt/tbYjxx/getPageList")
.then((res) => {
delete params.datetime;
delete params.bksj;
qcckPost(params, "/mosty-gsxt/tbYjxx/getPageList").then((res) => {
pageData.tableData = res?.records || [];
pageData.total = res?.total || 0;
pageData.tableConfiger.loading = false;
@ -468,6 +465,31 @@ const handleChooseData = (val) => {
selectRows.value = val;
};
const exportExl = () => {
/** 导出【选中】的数据 (没有就全部)*/
const needArr = selectRows.value?.length > 0 ? selectRows.value : pageData.tableData;
handleExportData(needArr)
};
const exportExcelAll = () =>{
btnLoading.value = true;
let params = { ...queryFrom.value,yjlb:'01' }
params.startTime = queryFrom.value.datetime ? queryFrom.value.datetime[0] : "";
params.endTime = queryFrom.value.datetime ? queryFrom.value.datetime[1] : "";
params.bkkssj = queryFrom.value.bksj ? queryFrom.value.bksj[0] : "";
params.bkjssj = queryFrom.value.bksj ? queryFrom.value.bksj[1] : "";
params.yjJb = queryFrom.value.yjJb ? queryFrom.value.yjJb.join(',') : "";
delete params.datetime;
delete params.bksj;
qcckGet(params,'/mosty-gsxt/tbYjxx/getList').then(res=>{
btnLoading.value = false;
handleExportData(res || []);
})
}
// 导出处理数据
const handleExportData = (arr) =>{
const titleObj = {
index: "序号",
czzt_name: "处置状态",
@ -487,10 +509,7 @@ const exportExl = () => {
cszt_name: "超时状态",
zkzt_name: "在控状态"
};
/** 导出【选中】的数据 (没有就全部)*/
const needArr =
selectRows.value?.length > 0 ? selectRows.value : pageData.tableData;
const data = needArr.map((item, index) => {
const data = arr.map((item, index) => {
return {
index: index + 1,
czzt_name: getMultiDictVal(item.czzt, D_GSXT_YJXX_CZZT),
@ -506,7 +525,9 @@ const exportExl = () => {
};
});
exportExlByObj(titleObj, data, "预警布控");
};
}
const handleQs = () => {
if (selectRows.value?.length === 0)

View File

@ -12,57 +12,22 @@
>
<template #yjCs>
<div>
<el-input
v-model="queryFrom.yjkscs"
type="number"
placeholder="开始次数"
style="width: 130px"
clearable
:min="0"
></el-input>
<el-input
v-model="queryFrom.yjjscs"
type="number"
placeholder="结束次数"
style="width: 130px"
clearable
:min="0"
></el-input>
<el-input v-model="queryFrom.yjkscs" type="number" placeholder="开始次数" style="width: 130px" clearable :min="0" ></el-input>
<el-input v-model="queryFrom.yjjscs" type="number" placeholder="结束次数" style="width: 130px" clearable :min="0"></el-input>
</div>
</template>
<template #nl>
<div>
<el-input
v-model="queryFrom.ksnl"
type="number"
placeholder="开始年龄"
style="width: 130px"
clearable
:min="0"
></el-input>
<el-input
v-model="queryFrom.jsnl"
type="number"
placeholder="结束年龄"
style="width: 130px"
clearable
:min="0"
></el-input>
<el-input v-model="queryFrom.ksnl" type="number" placeholder="开始年龄" style="width: 130px" clearable :min="0" ></el-input>
<el-input v-model="queryFrom.jsnl" type="number" placeholder="结束年龄" style="width: 130px" clearable :min="0" ></el-input>
</div>
</template>
<template #but>
<el-button type="primary" size="small" @click="exportExl"
>批量导出</el-button
>
<el-button type="primary" size="small" @click="handleQs"
>批量签收</el-button
>
<el-button type="primary" size="small" @click="handleQs"
>批量分析</el-button
>
<el-button type="primary" size="small" @click="countPeople"
>计算人数</el-button
>
<el-button type="primary" size="small" @click="exportExl">批量导出</el-button>
<el-button type="primary" :loading="btnLoading" size="small" @click="exportExcelAll">筛选导出</el-button>
<el-button type="primary" size="small" @click="handleQs">批量签收</el-button>
<el-button type="primary" size="small" @click="handleQs">批量分析</el-button>
<el-button type="primary" size="small" @click="countPeople">计算人数</el-button>
</template>
</QueryFormPanel>
</div>
@ -73,7 +38,7 @@
<el-button type="primary" size="small" @click="handleQs">批量分析</el-button>
<el-button type="primary" size="small" @click="countPeople">计算人数</el-button>
</template>
</PageTitle> -->
</PageTitle> -->
<!-- 表格 -->
<div style="background-color: #fff">
<WarnDataTable
@ -85,24 +50,14 @@
@selectionChange="handleChooseData"
>
<template #status="{ row }">
<DictTag
:value="row.czzt"
:color="row.czzt === '01' ? '#ff2424' : '#1d72e8'"
:tag="false"
:options="D_GSXT_YJXX_CZZT"
/>
<DictTag :value="row.czzt" :color="row.czzt === '01' ? '#ff2424' : '#1d72e8'" :tag="false" :options="D_GSXT_YJXX_CZZT"/>
</template>
<template #xbdm="{ row }">
<DictTag :value="row.xbdm" :tag="false" :options="D_BZ_XB" />
</template>
<template #yjJb="{ row }">
<div :style="{ 'background-color': bqYs(row.yjJb) }">
<DictTag
:value="row.yjJb"
color="#fff"
:tag="false"
:options="D_BZ_YJJB"
/>
<DictTag :value="row.yjJb" color="#fff" :tag="false" :options="D_BZ_YJJB"/>
</div>
</template>
<template #bqdl="{ row }">
@ -116,31 +71,12 @@
</template>
<template #operation="{ row }">
<div style="display: flex; justify-content: space-between">
<span
class="primary"
@click="handleQsFk(row)"
v-if="row.czzt == '01'"
>签收</span
>
<span
class="primary"
@click="handleQsFk(row, '反馈')"
v-else-if="row.czzt == '02'"
>反馈</span
>
<span class="primary" @click="handleQsFk(row)" v-if="row.czzt == '01'" >签收</span>
<span class="primary" @click="handleQsFk(row, '反馈')" v-else-if="row.czzt == '02'" >反馈</span>
<span class="primary" @click="particularsOpen(row)">详情</span>
<span class="warning" @click="pushWarning(row)">指派</span>
<span
class="warning"
v-if="row.sfbc != '1'"
@click="failWarning(row)"
>报错</span
>
<span
:class="row.sfgz == 0 ? 'primary' : 'danger'"
@click="payAttention(row)"
>{{ row.sfgz == 0 ? "关注" : "取消关注" }}
</span>
<span class="warning" @click="failWarning(row)" v-if="row.sfbc != '1'">报错</span>
<span @click="payAttention(row)" :class="row.sfgz == 0 ? 'primary' : 'danger'">{{ row.sfgz == 0 ? "关注" : "取消关注" }}</span>
</div>
</template>
</WarnDataTable>
@ -189,7 +125,6 @@ const {
D_GS_ZDR_GJLB,
D_BZ_YJJB,
D_GS_CSZT,
D_GS_QLZDRYXX,
D_BZ_XB,
D_GSXT_YJXX_CZZT,
D_GS_ZDR_RYJB,
@ -198,7 +133,6 @@ const {
"D_BZ_YJLY",
"D_GS_QLZDRLX",
"D_BZ_YJJB",
"D_GS_QLZDRYXX",
"D_BZ_XB",
"D_GSXT_YJXX_CZZT",
"D_GS_ZDR_RYJB",
@ -211,7 +145,7 @@ const warningShow = ref(false);
const dataList = ref([]);
const searchConfiger = ref([
{
key: "startTime",
key: "dateTime",
label: "预警时间",
type: "datetimerange",
placeholder: "请选择预警时间"
@ -307,7 +241,7 @@ const searchConfiger = ref([
placeholder: "请输入人员细类"
}
]);
const btnLoading = ref(false)
const queryFrom = ref({});
const pageData = reactive({
tableData: [], //表格数据
@ -352,9 +286,9 @@ onMounted(() => {
// 搜索
const onSearch = (val) => {
queryFrom.value = { ...val, yjJb: val.yjJb?.join(",") || "" };
queryFrom.value.startTime = val.startTime ? val.startTime[0] : "";
queryFrom.value.endTime = val.startTime ? val.startTime[1] : "";
queryFrom.value = { ...val};
queryFrom.value.startTime = val.dateTime ? val.dateTime[0] : "";
queryFrom.value.endTime = val.dateTime ? val.dateTime[1] : "";
// queryFrom.value.sfglyj = val.sfglyj?.join(',') || ''
// queryFrom.value.sfgz = val.sfgz?.join(',') || ''
// queryFrom.value.sfzp = val.sfzp?.join(',') || ''
@ -377,6 +311,9 @@ const getList = () => {
pageSize: pageData.pageConfiger.pageSize,
yjlb: "03"
};
promes.yjJb = queryFrom.value.yjJb?.join(",") || ""
delete promes.dateTime;
delete promes.times;
qcckPost(promes, "/mosty-gsxt/tbYjxx/getPageList")
.then((res) => {
@ -412,6 +349,28 @@ const handleChooseData = (val) => {
selectRows.value = val;
};
const exportExl = () => {
/** 导出【选中】的数据 (没有就全部)*/
const needArr = selectRows.value?.length > 0 ? selectRows.value : pageData.tableData;
handleExportData(needArr)
};
const exportExcelAll = () =>{
btnLoading.value = true;
let params = { ...queryFrom.value,yjlb:'03' }
params.startTime = queryFrom.value.dateTime ? queryFrom.value.dateTime[0] : "";
params.endTime = queryFrom.value.dateTime ? queryFrom.value.dateTime[1] : "";
params.yjJb = queryFrom.value.yjJb ? queryFrom.value.yjJb.join(',') : "";
delete params.yjCs;
delete params.dateTime;
qcckGet(params,'/mosty-gsxt/tbYjxx/getList').then(res=>{
btnLoading.value = false;
handleExportData(res || []);
})
}
// 导出处理数据
const handleExportData = (arr) =>{
const titleObj = {
index: "序号",
czzt_name: "预警状态",
@ -429,10 +388,7 @@ const exportExl = () => {
yjCs: "次数",
cszt_name: "超时状态"
};
/** 导出【选中】的数据 (没有就全部)*/
const needArr =
selectRows.value?.length > 0 ? selectRows.value : pageData.tableData;
const data = needArr.map((item, index) => {
const data = arr.map((item, index) => {
return {
index: index + 1,
czzt_name: getMultiDictVal(item.czzt, D_GSXT_YJXX_CZZT),
@ -444,8 +400,10 @@ const exportExl = () => {
...item
};
});
exportExlByObj(titleObj, data, "七类重点");
};
exportExlByObj(titleObj, data, "政保预警");
}
// 批量签收
const handleQs = () => {
if (selectRows.value?.length === 0)
@ -542,11 +500,11 @@ const countPeople = () => {
const promes = {
...searchDom.value.formState,
yjJb: searchDom.value.formState.yjJb?.join(",") || "",
startTime: searchDom.value.formState.startTime
? searchDom.value.formState.startTime[0]
startTime: searchDom.value.formState.dateTime
? searchDom.value.formState.dateTime[0]
: "",
endTime: searchDom.value.formState.endTime
? searchDom.value.formState.endTime[1]
endTime: searchDom.value.formState.dateTime
? searchDom.value.formState.dateTime[1]
: ""
};
qcckPost(promes, "/mosty-gsxt/tbYjxx/bkyjQctj")

View File

@ -54,6 +54,9 @@
<el-button type="primary" size="small" @click="exportExl"
>批量导出</el-button
>
<el-button type="primary" :loading="btnLoading" size="small" @click="exportExcelAll"
>筛选导出</el-button
>
<el-button type="primary" size="small" @click="handleQs"
>批量签收</el-button
>
@ -189,7 +192,6 @@ import Particulars from "./particulars.vue";
import WarnDataTable from "@/views/backOfficeSystem/ces/components/WarnDataTable.vue";
import QueryFormPanel from "@/views/backOfficeSystem/ces/components/QueryFormPanel.vue";
import FkDialog from "@/views/backOfficeSystem/fourColorManage/warningControl/centerHome/components/fkDialog.vue";
// import MyTable from "@/components/aboutTable/MyTable.vue";
import Pages from "@/components/aboutTable/Pages.vue";
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
@ -224,12 +226,13 @@ const {
"D_BZ_QBLY",
"D_BZ_QBLYJB"
); //获取字典数据
const searchBox = ref(); //搜索框
const warningShow = ref(false);
const dataList = ref([]);
const searchConfiger = ref([
{
key: "startTime",
key: "dateTime",
label: "预警时间",
type: "datetimerange",
placeholder: "请选择预警时间"
@ -339,7 +342,6 @@ const searchConfiger = ref([
placeholder: "请选择情报来源级别"
}
]);
const queryFrom = ref({});
const pageData = reactive({
tableData: [], //表格数据
@ -387,8 +389,8 @@ onMounted(() => {
// 搜索
const onSearch = (val) => {
queryFrom.value = { ...val, yjJb: val.yjJb?.join(",") || "" };
queryFrom.value.startTime = val.startTime ? val.startTime[0] : "";
queryFrom.value.endTime = val.startTime ? val.startTime[1] : "";
queryFrom.value.startTime = val.dateTime ? val.dateTime[0] : "";
queryFrom.value.endTime = val.dateTime ? val.dateTime[1] : "";
// queryFrom.value.sfglyj = val.sfglyj?.join(',') || ''
// queryFrom.value.sfgz = val.sfgz?.join(',') || ''
// queryFrom.value.sfzp = val.sfzp?.join(',') || ''
@ -410,7 +412,9 @@ const getList = () => {
pageCurrent: pageData.pageConfiger.pageCurrent,
pageSize: pageData.pageConfiger.pageSize
};
promes.yjJb = queryFrom.value.yjJb ? queryFrom.value.yjJb.join(',') : "";
delete promes.times;
delete promes.dateTime;
qcckPost(promes, "/mosty-gsxt/tbYjxx/getQlzdrPageList")
.then((res) => {
pageData.total = res.total || 0;
@ -422,41 +426,23 @@ const getList = () => {
});
};
const pushWarning = (val) => {
warningShow.value = true;
dataList.value = val;
};
const failWarning = (val) => {
let ids = [val.id];
qcckPost({ ids }, "/mosty-gsxt/tbYjxx/yjbc")
.then((res) => {
proxy.$message({ type: "success", message: "成功" });
getList();
const btnLoading = ref(false)
const exportExcelAll = () =>{
btnLoading.value = true;
let params = { ...queryFrom.value,yjlb:'02' }
params.startTime = queryFrom.value.dateTime ? queryFrom.value.dateTime[0] : "";
params.endTime = queryFrom.value.dateTime ? queryFrom.value.dateTime[1] : "";
params.yjJb = queryFrom.value.yjJb ? queryFrom.value.yjJb.join(',') : "";
delete params.yjCs;
delete params.dateTime;
qcckGet(params,'/mosty-gsxt/tbYjxx/getList').then(res=>{
btnLoading.value = false;
handleExportData(res || []);
})
.catch(() => {
proxy.$message({ type: "error", message: "失败" });
});
};
}
// 处理签收
const handleQsFk = (val, type) => {
console.log(val.id, "xxxxxxxxxxxxxxxxxxxxxxxx");
switch (type) {
case "反馈":
case "查看反馈":
emitter.emit("openFkDialog", { id: val.id, type });
break;
}
};
/** 选中项 */
const selectRows = ref([]);
const handleChooseData = (val) => {
selectRows.value = val;
};
const exportExl = () => {
// 导出处理数据
const handleExportData = (arr) =>{
const titleObj = {
index: "序号",
czzt_name: "预警状态",
@ -476,10 +462,7 @@ const exportExl = () => {
yjCs: "次数",
cszt_name: "超时状态"
};
/** 导出【选中】的数据 (没有就全部)*/
const needArr =
selectRows.value?.length > 0 ? selectRows.value : pageData.tableData;
const data = needArr.map((item, index) => {
const data = arr.map((item, index) => {
return {
index: index + 1,
czzt_name: getMultiDictVal(item.czzt, D_GSXT_YJXX_CZZT),
@ -494,6 +477,44 @@ const exportExl = () => {
};
});
exportExlByObj(titleObj, data, "七类重点");
}
const pushWarning = (val) => {
warningShow.value = true;
dataList.value = val;
};
const failWarning = (val) => {
let ids = [val.id];
qcckPost({ ids }, "/mosty-gsxt/tbYjxx/yjbc").then((res) => {
proxy.$message({ type: "success", message: "成功" });
getList();
}).catch(() => {
proxy.$message({ type: "error", message: "失败" });
});
};
// 处理签收
const handleQsFk = (val, type) => {
switch (type) {
case "反馈":
case "查看反馈":
emitter.emit("openFkDialog", { id: val.id, type });
break;
}
};
/** 选中项 */
const selectRows = ref([]);
const handleChooseData = (val) => {
selectRows.value = val;
};
const exportExl = () => {
/** 导出【选中】的数据 (没有就全部)*/
const needArr = selectRows.value?.length > 0 ? selectRows.value : pageData.tableData;
handleExportData(needArr);
};
// 批量签收
const handleQs = () => {
@ -602,6 +623,7 @@ const handleRelatedWarning = () => {
selectDataVisible.value = true;
};
// 确认关联预警
const handleSelectConfirm = (selectedData) => {
console.log("关联预警数据:", selectedData);
@ -611,11 +633,11 @@ const countPeople = () => {
const promes = {
...searchDom.value.formState,
yjJb: searchDom.value.formState.yjJb?.join(",") || "",
startTime: searchDom.value.formState.startTime
? searchDom.value.formState.startTime[0]
startTime: searchDom.value.formState.dateTime
? searchDom.value.formState.dateTime[0]
: "",
endTime: searchDom.value.formState.endTime
? searchDom.value.formState.endTime[1]
endTime: searchDom.value.formState.dateTime
? searchDom.value.formState.dateTime[1]
: ""
};
qcckPost(promes, "/mosty-gsxt/tbYjxx/bkyjQctj")

View File

@ -354,9 +354,7 @@ const closeLayBack = () => {
// 初始化音频播放器
const initAudioPlayer = () => {
// 使用工具类初始化音频播放器
audioPlayer
.init(require("@/assets/images/yjsy.mp3"))
.then(() => {
audioPlayer.init(require("@/assets/images/yjsy.mp3")).then(() => {
console.log("音频播放器初始化成功");
// 只有当ispLayBack为true时才播放
if (ispLayBack.value) {
@ -373,11 +371,7 @@ const startPopupLoop = () => {
popupTimer.value = setInterval(() => {
if (!showNotification.value && allDep.value.length > 0) {
emitter.emit("deletePointArea", "hm_pop");
emitter.emit("makerPopup", {
data: allDep.value[indexNum.value],
flag: "hm_pop",
type: "Custom"
});
emitter.emit("makerPopup", { data: allDep.value[indexNum.value], flag: "hm_pop", type: "Custom" });
indexNum.value = (indexNum.value + 1) % allDep.value.length;
}
}, 10000);
@ -386,10 +380,7 @@ const startPopupLoop = () => {
// 搜索
const handleSearch = () => {
if (!searchText.value) return proxy.$message.warning("请输入身份证号");
qcckPost(
{ rysfzh: searchText.value },
"/mosty-gsxt/tbYjxx/getPageAllList"
).then((res) => {
qcckPost({ rysfzh: searchText.value },"/mosty-gsxt/tbYjxx/getPageAllList").then((res) => {
peoDialogRef.value.init(res.records || []);
});
};
@ -398,22 +389,8 @@ const handleSearch = () => {
const getTbYjxxGetList = () => {
// 设置为当天时间范围00:00:00 到 23:59:59
const today = new Date();
const startTime = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate(),
0,
0,
0
).getTime();
const endTime = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate(),
23,
59,
59
).getTime();
const startTime = new Date(today.getFullYear(), today.getMonth(), today.getDate(),0,0,0).getTime();
const endTime = new Date( today.getFullYear(), today.getMonth(), today.getDate(), 23, 59, 59).getTime();
const promes = {
startTime: timeValidate(startTime),
endTime: timeValidate(endTime)
@ -434,12 +411,7 @@ const getTbYjxxGetList = () => {
};
});
const icon = require("@/assets/point/yj.png");
emitter.emit("addPoint", {
coords: coords,
icon: icon,
flag: "yj",
fontColor: "#FF0000"
});
emitter.emit("addPoint", { coords: coords, icon: icon, flag: "yj", fontColor: "#FF0000"});
});
};
@ -490,12 +462,9 @@ onMounted(() => {
emitter.on("openYp", (newsDate) => {
// 使用工具类播放音频,自动处理静音切换
if (ispLayBack.value) {
audioPlayer
.play()
.then(() => {
audioPlayer.play().then(() => {
console.log("WebSocket触发音频播放成功");
})
.catch((error) => {
}).catch((error) => {
console.error("WebSocket触发音频播放失败:", error);
});
const coords = {

View File

@ -66,6 +66,9 @@ const getList = (type) => {
let arr = Array.isArray(res?.records) ? res.records : [];
personList.value = pageNum.value == 1 ? arr : personList.value.concat(arr);
total.value = res?.total || 0;
if(pageNum.value == 1 && total.value > 3 ){
startAutoScroll();
}
}).catch(() => {
loading.value = false;
loadingMore.value = false;
@ -94,12 +97,11 @@ const autoScroll = () => {
// 开始自动滚动
const startAutoScroll = () => {
if(total.value < 3) return;
if (isAutoScrolling.value || !carouselList.value) return;
isAutoScrolling.value = true;
// 清除可能存在的定时器
if (scrollTimer) {
clearInterval(scrollTimer);
}
if (scrollTimer) clearInterval(scrollTimer);
// 设置新的定时器,控制滚动速度
scrollTimer = setInterval(autoScroll, 30);
};
@ -118,29 +120,14 @@ const chooseItem = (item) => {
stopAutoScroll(); // 点击时停止自动滚动
const path = props.bglx === '01' ? '/tacticalResearch' : '/strategicResearch'
router.push({
// path: '/forumPost',
path: path,
query: { id: item.id }
})
};
// 添加跳转
const chooseForumPost = () => {
stopAutoScroll(); // 点击时停止自动滚动
const path = props.bglx === '01' ? '/tacticalResearch' : '/strategicResearch'
router.push({ path: path })
};
// 生命周期
onMounted(() => {
getList();
// 数据加载完成后启动自动滚动
setTimeout(() => {
if (personList.value.length > 0) {
startAutoScroll();
}
}, 1000);
});
// 组件卸载前清除定时器