This commit is contained in:
lcw
2026-01-26 17:35:04 +08:00
24 changed files with 454 additions and 908 deletions

View File

@ -76,6 +76,11 @@ export const publicRoutes = [
name: "clueVerification", name: "clueVerification",
component: () => import("@/views/backOfficeSystem/ApprovalInformation/Clue/index.vue"), component: () => import("@/views/backOfficeSystem/ApprovalInformation/Clue/index.vue"),
}, },
{
path: "/ReviewListSH",
name: "ReviewListSH",
component: () => import("@/views/backOfficeSystem/JudgmentHome/ReviewList/detail.vue"),
},
// 重点人发掘 // 重点人发掘
{ {
path: "/focusExploration", path: "/focusExploration",
@ -518,6 +523,15 @@ export const publicRoutes = [
icon: "article-create" icon: "article-create"
} }
}, },
{
path: "/ReviewList",
name: "ReviewList",
component: () => import("@/views/backOfficeSystem/JudgmentHome/ReviewList/index.vue"),
meta: {
title: "审核列表",
icon: "article-create"
}
},
{ {
path: "/judgmentCommand", path: "/judgmentCommand",
name: "judgmentCommand", name: "judgmentCommand",
@ -588,7 +602,7 @@ export const publicRoutes = [
name: "gzPeo", name: "gzPeo",
component: () => import("@/views/backOfficeSystem/DeploymentDisposal/gzPeo/index"), component: () => import("@/views/backOfficeSystem/DeploymentDisposal/gzPeo/index"),
meta: { meta: {
title: "关注库", title: "关注人员库",
icon: "article-create" icon: "article-create"
} }
}, },
@ -1146,6 +1160,7 @@ export const publicRoutes = [
icon: "article-create" icon: "article-create"
} }
}, },
{ {
path: "/strategicResearch", path: "/strategicResearch",
name: "strategicResearch", name: "strategicResearch",

View File

@ -36,14 +36,10 @@
<div class="grid-item flex just-between" style="" v-for="(item, index) in srcList" :key="index"> <div class="grid-item flex just-between" style="" v-for="(item, index) in srcList" :key="index">
<div class="names">{{ item.name }}</div> <div class="names">{{ item.name }}</div>
<div class="icon"><a :href="setAddress(item.id)" download><el-icon><Download /></el-icon></a></div> <div class="icon"><a :href="setAddress(item.id)" download><el-icon><Download /></el-icon></a></div>
</div> </div>
</div> </div>
</el-card> </el-card>
</div> </div>
</template> </template>
<script setup> <script setup>
@ -116,7 +112,6 @@ const route = useRoute()
onMounted(() => { onMounted(() => {
const id = route.query.id const id = route.query.id
getDataById(id) getDataById(id)
}) })
// const onSubmit = async (val) => { // const onSubmit = async (val) => {
// const data = [] // const data = []

View File

@ -65,7 +65,7 @@
<DictTag :tag="false" :value="row.zdrRyjb" :options="D_GS_ZDR_RYJB" /> <DictTag :tag="false" :value="row.zdrRyjb" :options="D_GS_ZDR_RYJB" />
</template> </template>
<template #zdrBkZt="{ row }"> <template #zdrBkZt="{ row }">
<DictTag :tag="false" :value="row.zdrBkZt" :options="D_GS_ZDR_BK_ZT" /> <DictTag :tag="false" :value="row.zdrBkZt" :options="D_ZDRGK_GKZT" />
</template> </template>
<template #zdrCzzt="{ row }"> <template #zdrCzzt="{ row }">
<DictTag :tag="false" :value="row.zdrCzzt" :options="D_GS_ZDR_CZZT" /> <DictTag :tag="false" :value="row.zdrCzzt" :options="D_GS_ZDR_CZZT" />
@ -120,8 +120,8 @@ import { useRouter, useRoute } from 'vue-router'
const router = useRouter() const router = useRouter()
const route = useRoute() const route = useRoute()
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const { D_GS_ZDQT_ZT, D_GS_ZDR_RYJB, D_BZ_XB, D_BZ_MZ, D_BZ_XZQHDM, D_GS_ZDR_BK_ZT, D_GS_ZDR_CZZT, D_GS_BQ_ZL, D_GS_BQ_LB, D_GS_BQ_LX, D_GS_ZDR_YJDJ, D_GS_BK_SSJZ, D_GS_BK_SQLX, D_BZ_SF, D_GS_XS_LY, D_BZ_SSZT, D_GS_XS_LX, D_GS_XS_QTLX } = const { D_ZDRGK_GKZT,D_GS_ZDQT_ZT, D_GS_ZDR_RYJB, D_BZ_XB, D_BZ_MZ, D_BZ_XZQHDM, D_GS_ZDR_BK_ZT, D_GS_ZDR_CZZT, D_GS_BQ_ZL, D_GS_BQ_LB, D_GS_BQ_LX, D_GS_ZDR_YJDJ, D_GS_BK_SSJZ, D_GS_BK_SQLX, D_BZ_SF, D_GS_XS_LY, D_BZ_SSZT, D_GS_XS_LX, D_GS_XS_QTLX } =
proxy.$dict("D_GS_ZDQT_ZT", "D_GS_ZDR_RYJB", "D_BZ_XB", "D_BZ_MZ", "D_BZ_XZQHDM", "D_GS_ZDR_BK_ZT", "D_GS_ZDR_CZZT", "D_GS_BQ_ZL", "D_GS_BQ_LB", "D_GS_BQ_LX", "D_GS_ZDR_YJDJ", "D_GS_BK_SSJZ", "D_GS_BK_SQLX", "D_BZ_SF", "D_GS_XS_LY", "D_BZ_SSZT", "D_GS_XS_LX", "D_GS_XS_QTLX"); proxy.$dict('D_ZDRGK_GKZT',"D_GS_ZDQT_ZT", "D_GS_ZDR_RYJB", "D_BZ_XB", "D_BZ_MZ", "D_BZ_XZQHDM", "D_GS_ZDR_BK_ZT", "D_GS_ZDR_CZZT", "D_GS_BQ_ZL", "D_GS_BQ_LB", "D_GS_BQ_LX", "D_GS_ZDR_YJDJ", "D_GS_BK_SSJZ", "D_GS_BK_SQLX", "D_BZ_SF", "D_GS_XS_LY", "D_BZ_SSZT", "D_GS_XS_LX", "D_GS_XS_QTLX");
const obj = ref({}); const obj = ref({});
const showzxs = ref(false); const showzxs = ref(false);
const zxsDilof = ref(); const zxsDilof = ref();
@ -176,22 +176,16 @@ const pageData = reactive({
}, },
controlsWidth: 250, controlsWidth: 250,
tableColumn: [ tableColumn: [
{ label: "姓名", prop: "ryXm", width: 150 }, { label: "姓名", prop: "ryXm",width: 100 },
{ label: "性别", prop: "ryXb", showSolt: true, width: 100 }, { label: "性别", prop: "ryXb", showSolt: true, width: 80 },
{ label: "籍贯", prop: "ryJg", showSolt: true, width: 100 }, { label: "身份证", prop: "rySfzh", width: 170 },
{ label: "身份证", prop: "rySfzh", width: 200 }, { label: "民族", prop: "ryMz", showSolt: true, width: 80 },
{ label: "民族", prop: "ryMz", showSolt: true, width: 100 }, { label: "户籍派出所", prop: "hjdPcsmc" },
{ label: "户籍地区划", prop: "hjdQh", showSolt: true, width: 150 }, { label: "标签", prop: "bqList", showSolt: true, showOverflowTooltip: true },
{ label: "户籍派出所", prop: "hjdPcsmc", width: 200 }, { label: "管辖单位", prop: "gxSsbmmc" },
{ label: "户籍地详址", prop: "hjdXz", width: 200 }, { label: "管控状态", prop: "zdrBkZt", showOverflowTooltip: true,showSolt: true, width: 100 },
{ label: "标签", prop: "bqList", showSolt: true, width: 400, showOverflowTooltip: true }, { label: "审核状态", prop: "zdrZt", showSolt: true, width: 100 },
{ label: "管辖单位", prop: "gxSsbmmc", width: 200 }, { label: "入库时间", prop: "zdrRkkssj", },
{ label: "人员级别", prop: "zdrRyjb", showSolt: true, width: 130 },
{ label: "管控原因", prop: "zdrLkyy", width: 200, showOverflowTooltip: true },
{ label: "管控状态", prop: "zdrBkZt", width: 200, showOverflowTooltip: true },
{ label: "处置状态", prop: "zdrCzzt", showSolt: true },
{ label: "审核状态", prop: "zdrZt", showSolt: true },
{ label: "状态", prop: "xtSjzt", showSolt: true },
] ]
}); });

View File

@ -65,7 +65,7 @@
<DictTag :tag="false" :value="row.zdrRyjb" :options="D_GS_ZDR_RYJB" /> <DictTag :tag="false" :value="row.zdrRyjb" :options="D_GS_ZDR_RYJB" />
</template> </template>
<template #zdrBkZt="{ row }"> <template #zdrBkZt="{ row }">
<DictTag :tag="false" :value="row.zdrBkZt" :options="D_GS_ZDR_BK_ZT" /> <DictTag :tag="false" :value="row.zdrBkZt" :options="D_ZDRGK_GKZT" />
</template> </template>
<template #zdrCzzt="{ row }"> <template #zdrCzzt="{ row }">
<DictTag :tag="false" :value="row.zdrCzzt" :options="D_GS_ZDR_CZZT" /> <DictTag :tag="false" :value="row.zdrCzzt" :options="D_GS_ZDR_CZZT" />
@ -96,7 +96,7 @@
</div> </div>
<!-- 详情 --> <!-- 详情 -->
<AddForm ref="addFormDiloag" @updateDate="getList" <AddForm ref="addFormDiloag" @updateDate="getList"
:dic="{ D_GS_ZDR_RYJB, D_BZ_XB, D_BZ_MZ, D_BZ_XZQHDM, D_GS_ZDR_BK_ZT, D_GS_ZDR_CZZT, D_GS_BQ_ZL, D_GS_BQ_LB, D_GS_BQ_LX, D_GS_ZDR_YJDJ, D_GS_BK_SSJZ }" /> :dic="{ D_GS_ZDR_RYJB, D_BZ_XB, D_BZ_MZ, D_BZ_XZQHDM, D_ZDRGK_GKZT, D_GS_ZDR_CZZT, D_GS_BQ_ZL, D_GS_BQ_LB, D_GS_BQ_LX, D_GS_ZDR_YJDJ, D_GS_BK_SSJZ }" />
<!-- 选择用户 --> <!-- 选择用户 -->
<ChooseUser v-model="chooseUserVisible" @choosedUsers="handleUserSelected" :roleIds="roleIds" /> <ChooseUser v-model="chooseUserVisible" @choosedUsers="handleUserSelected" :roleIds="roleIds" />
<!-- 转线索 --> <!-- 转线索 -->
@ -120,8 +120,8 @@ import { useRouter, useRoute } from 'vue-router'
const router = useRouter() const router = useRouter()
const route = useRoute() const route = useRoute()
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const { D_GS_ZDQT_ZT, D_GS_ZDR_RYJB, D_BZ_XB, D_BZ_MZ, D_BZ_XZQHDM, D_GS_ZDR_BK_ZT, D_GS_ZDR_CZZT, D_GS_BQ_ZL, D_GS_BQ_LB, D_GS_BQ_LX, D_GS_ZDR_YJDJ, D_GS_BK_SSJZ, D_GS_BK_SQLX, D_BZ_SF, D_GS_XS_LY, D_BZ_SSZT, D_GS_XS_LX, D_GS_XS_QTLX } = const { D_GS_ZDQT_ZT, D_GS_ZDR_RYJB, D_BZ_XB, D_BZ_MZ, D_BZ_XZQHDM, D_ZDRGK_GKZT, D_GS_ZDR_CZZT, D_GS_BQ_ZL, D_GS_BQ_LB, D_GS_BQ_LX, D_GS_ZDR_YJDJ, D_GS_BK_SSJZ, D_GS_BK_SQLX, D_BZ_SF, D_GS_XS_LY, D_BZ_SSZT, D_GS_XS_LX, D_GS_XS_QTLX } =
proxy.$dict("D_GS_ZDQT_ZT", "D_GS_ZDR_RYJB", "D_BZ_XB", "D_BZ_MZ", "D_BZ_XZQHDM", "D_GS_ZDR_BK_ZT", "D_GS_ZDR_CZZT", "D_GS_BQ_ZL", "D_GS_BQ_LB", "D_GS_BQ_LX", "D_GS_ZDR_YJDJ", "D_GS_BK_SSJZ", "D_GS_BK_SQLX", "D_BZ_SF", "D_GS_XS_LY", "D_BZ_SSZT", "D_GS_XS_LX", "D_GS_XS_QTLX"); proxy.$dict("D_GS_ZDQT_ZT", "D_GS_ZDR_RYJB", "D_BZ_XB", "D_BZ_MZ", "D_BZ_XZQHDM", "D_ZDRGK_GKZT", "D_GS_ZDR_CZZT", "D_GS_BQ_ZL", "D_GS_BQ_LB", "D_GS_BQ_LX", "D_GS_ZDR_YJDJ", "D_GS_BK_SSJZ", "D_GS_BK_SQLX", "D_BZ_SF", "D_GS_XS_LY", "D_BZ_SSZT", "D_GS_XS_LX", "D_GS_XS_QTLX");
const obj = ref({}); const obj = ref({});
const showzxs = ref(false); const showzxs = ref(false);
const zxsDilof = ref(); const zxsDilof = ref();
@ -176,22 +176,16 @@ const pageData = reactive({
}, },
controlsWidth: 250, controlsWidth: 250,
tableColumn: [ tableColumn: [
{ label: "姓名", prop: "ryXm", width: 150 }, { label: "姓名", prop: "ryXm",width: 100 },
{ label: "性别", prop: "ryXb", showSolt: true, width: 100 }, { label: "性别", prop: "ryXb", showSolt: true, width: 80 },
{ label: "籍贯", prop: "ryJg", showSolt: true, width: 100 }, { label: "身份证", prop: "rySfzh", width: 170 },
{ label: "身份证", prop: "rySfzh", width: 200 }, { label: "民族", prop: "ryMz", showSolt: true, width: 80 },
{ label: "民族", prop: "ryMz", showSolt: true, width: 100 }, { label: "户籍派出所", prop: "hjdPcsmc" },
{ label: "户籍地区划", prop: "hjdQh", showSolt: true, width: 150 }, { label: "标签", prop: "bqList", showSolt: true, showOverflowTooltip: true },
{ label: "户籍派出所", prop: "hjdPcsmc", width: 200 }, { label: "管辖单位", prop: "gxSsbmmc" },
{ label: "户籍地详址", prop: "hjdXz", width: 200 }, { label: "管控状态", prop: "zdrBkZt", showOverflowTooltip: true,showSolt: true, width: 100 },
{ label: "标签", prop: "bqList", showSolt: true, width: 400, showOverflowTooltip: true }, { label: "审核状态", prop: "zdrZt", showSolt: true, width: 100 },
{ label: "管辖单位", prop: "gxSsbmmc", width: 200 }, { label: "入库时间", prop: "zdrRkkssj", },
{ label: "人员级别", prop: "zdrRyjb", showSolt: true, width: 130 },
{ label: "管控原因", prop: "zdrLkyy", width: 200, showOverflowTooltip: true },
{ label: "管控状态", prop: "zdrBkZt", width: 200, showOverflowTooltip: true },
{ label: "处置状态", prop: "zdrCzzt", showSolt: true },
{ label: "审核状态", prop: "zdrZt", showSolt: true },
{ label: "状态", prop: "xtSjzt", showSolt: true },
] ]
}); });

View File

@ -1,645 +1,40 @@
<template> <template>
<div> <div>
<!-- 搜索 -->
<div ref="searchBox" class="mt10">
<Searchs :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" />
</div>
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5"> <PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
<template #left> <template #left>
<el-button type="primary" @click="addEdit('add')" size="small"> <el-button size="small" v-for="el in tabBtn" :type="tabActive==el?'primary':''" @click="tabActive=el" :key="el">{{ el }}</el-button>
<el-icon class="vertical-middle"> </template>
<CirclePlus />
</el-icon>
<span class="vertical-middle">新增</span>
</el-button>
<el-button type="primary" @click="dologCancel()" size="small">
<el-icon class="vertical-middle">
<CirclePlus />
</el-icon>
<span class="vertical-middle">导出</span>
</el-button>
<el-button type="primary" :disabled="ids.length === 0" @click="handleSumbit(ids)" v-if="qxkz.deptLevel != '01'"
size="small">
<el-icon class="vertical-middle">
<CirclePlus />
</el-icon>
<span class="vertical-middle">上报</span>
</el-button>
<el-button type="primary" :disabled="ids.length === 0" @click="delDictItem(ids)" size="small">
<el-icon class="vertical-middle">
<CirclePlus />
</el-icon>
<span class="vertical-middle">删除</span>
</el-button></template>
</PageTitle> </PageTitle>
<!-- 表格 --> <Infomation v-if="tabActive=='信息采集'" />
<div class="tabBox" :style="{ height: (pageData.tableHeight + 40) + 'px' }"> <FQXX v-else-if="tabActive=='蜂群信息'" />
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
@chooseData="chooseData" @handleCellClick="openXxqk">
<template #qblx="{ row }">
<DictTag :tag="false" :value="row.qblx" :options="D_GS_XS_LX" />
</template>
<template #qbly="{ row }">
<DictTag :tag="false" :value="row.qbly" :options="D_BZ_CJLX" />
</template>
<template #czzt="{ row }">
<DictTag :tag="false" :value="row.czzt" :options="D_BZ_QBCZZT" />
</template>
<template #lczt="{ row }">
<DictTag :tag="false" :value="row.lczt" :options="D_BZ_LCZT" />
</template>
<template #cyqk="{ row }">
<el-link v-if="isShowBtn('采纳')" size="small" type="danger" @click="cnMsg(row)"
:disabled="butcontroll('04', row.lczt)">采纳</el-link>
<!-- 只有上报状态才能回退 -->
<el-link v-if="isShowBtn('回退')" size="small" type="danger" @click="rollbackNewspapers(row)"
:disabled="butcontroll('04', row.lczt)">回退</el-link>
</template>
<!-- 操作 -->
<!-- "市情指挥人员": ["采纳", "回退", "分组", "转线索", "转合成", "转会商", "打标签", "修改", "详情", "关注部门", "送审"], -->
<!-- "县情指人员": ["上报", "回退", "修改", "详情", "送审"], -->
<template #controls="{ row }">
<el-link v-if="isShowBtn('送审', row) && qxkz.deptLevel == '01'" :disabled="row.sldshzt != '00'||row.lczt == '04'" size="small"
type="primary" @click="postXxcjXxcjTjsh(row)">送审</el-link>
<el-link v-if="isShowBtn('送审', row) && qxkz.deptLevel == '02'" :disabled="row.xldshzt != '00'||row.lczt == '04'" size="small"
type="primary" @click="postXxcjXxcjTjsh(row)">送审</el-link>
<!-- 01 提交 02 上报县局 03 上班市局 04 采纳 05 退回 06 打标签 07 转合成 08 转线索 09 转会商v-if="qxkz.deptLevel == '01'" -->
<!-- 在提交和退回得状态才能进行上报 -->
<el-link v-if="isShowBtn('上报')" size="small" type="primary" @click="appearNewspapers(row)"
:disabled="row.xldshzt != '02'||(row.lczt != '02'||row.lczt != '03')">上报</el-link>
<el-link v-if="isShowBtn('分组')" size="small" type="primary" @click="opneMsg(row)"
:disabled="row.sldshzt != '02'">分组</el-link>
<!-- 只有领导有肯定 -->
<!-- <el-link v-if="isShowBtn('肯定')" size="small" type="primary" @click="affirm(row)">肯定</el-link> -->
<el-link v-if="isShowBtn('删除')" size="small" type="primary" @clic.stopk="delDictItem(row.id)">删除</el-link>
<el-link v-if="isShowBtn('修改', row)" size="small" type="primary" @click="addEdit('edit', row)">修改</el-link>
<el-link v-if="isShowBtn('续报', row)" size="small" type="primary" @click="addEdit('followUpReport', row)">续报</el-link>
<el-link v-if="isShowBtn('详情')" size="small" type="primary" @click="addEdit('info', row)">详情</el-link>
<!-- 所有状态都能进行转线索 -->
<el-link v-if="isShowBtn('转线索')" size="small" type="primary" @click="FollowUpOnLeads(row)"
:disabled="row.sldshzt != '02' ">转线索</el-link>
<!-- 所有状态都能进行转合成 -->
<!-- <el-link v-if="isShowBtn('转合成')" size="small" type="primary" @click="openFkDialogszl(row)"
:disabled="butcontroll('01', row.lczt)">转合成</el-link> -->
<!-- 所有状态都能进行转会商 -->
<!-- <el-link v-if="isShowBtn('转会商')" size="small" type="primary" @click="handleTransferMerchant(row)"
:disabled="butcontroll('01', row.lczt)">转会商</el-link> -->
<el-link v-if="isShowBtn('关注部门')" :disabled="row.sldshzt != '02'" size="small" type="primary" @click="FollowUpOnDept(row)">关注</el-link>
<!-- 市局能给所有数据创建标签 -->
<el-link v-if="isShowBtn('打标签')" size="small" type="primary" @click="openCustomTag(row)"
:disabled="row.sldshzt != '02' ">打标签</el-link>
</template>
</MyTable>
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
...pageData.pageConfiger,
total: pageData.total
}"></Pages>
</div> </div>
<!-- 新增 -->
<AddForm ref="detailDiloag" @getList="getList" :titleData="titleData" :dict="{ D_BZ_LCZT, D_BZ_SSSHZT }" />
</div>
<ExportFile v-model="exportFileModel" :tableColumn="tableColumn" :dict="{ D_GS_XS_LY, D_GS_XS_LX, D_GS_XS_LX }"
:dataModel="pageData.tableData" />
<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="转会商"
@close="isShowTransferMerchantTc = false" @ok="getList" />
</template> </template>
<script setup> <script setup>
import PageTitle from "@/components/aboutTable/PageTitle.vue"; import PageTitle from "@/components/aboutTable/PageTitle.vue";
import MyTable from "@/components/aboutTable/MyTable.vue"; import Infomation from "./infomation.vue";
import Pages from "@/components/aboutTable/Pages.vue"; import FQXX from "@/views/backOfficeSystem/InformationReporting/index.vue";
import Searchs from "@/components/aboutTable/Search.vue";
import AddForm from "./components/addForm.vue";
import { useRouter, useRoute } from 'vue-router'
import { qbcjSelectQbsbPage, qbcjDeletes, qbcjCzzt, qbcjPlsb } from "@/api/Intelligence.js";
import { xxcjSelectXxsbPage, xxcjDeletes, xxcjXxzsx, xxcjUpdateCzlc, xxcjXxqd, xxcjXxcjTjsh } from '@/api/xxcj.js'
import { reactive, ref, onMounted, getCurrentInstance, nextTick } from "vue"; import { reactive, ref, onMounted, getCurrentInstance, nextTick } from "vue";
import MakeTag from '../components/maketag.vue'
import ExportFile from './components/exportFile.vue'
import { ElMessageBox } from 'element-plus'
import { getItem } from '@//utils/storage.js'
import Fszl from '@/views/backOfficeSystem/HumanIntelligence/components/fszl.vue'
import CustomTag from '../components/customTag.vue'
import Configuration from '../components/configuration.vue'
import transferMerchant from "./components/transferMerchant.vue";
import { isShiQingZhi } from "@/utils/auth.js"
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 tabBtn=ref(["信息采集","蜂群信息"])
D_GS_XS_QTLX, D_GS_ZDQT_LB, const tabActive=ref('信息采集')
D_BZ_BMJB, D_BZ_CLPP, D_BZ_CLYS, D_BZ_CLLX, D_BZ_XZQHDM, D_BZ_QBCZZT, D_BZ_CJLX, D_BZ_LCZT,
D_XXCJ_BQLX } =
proxy.$dict("D_BZ_BMJB", "D_GS_XS_LY", 'D_BZ_SSSHZT',
"D_BZ_SSZT", "D_BZ_SF", "D_GS_XS_LX", "D_GS_XS_QTLX",
"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"); //获取字典数据
const detailDiloag = ref();
const searchBox = ref(); //搜索框
const ids = 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 transferMerchantRef = ref()
const isShowTransferMerchantTc = ref(false)
const isShow = ref(false)
const searchConfiger = ref([
{ label: "录入人", prop: 'xssbr', placeholder: "请输入录入人", showType: "input" },
{ label: "录入单位", prop: "ssbmdm", placeholder: "请选择录入单位", showType: "department" },
{ label: "编号", prop: 'xsBh', placeholder: "请输入编号", showType: "input" },
{ label: "时间", prop: "startTime", placeholder: "请选择时间", showType: "daterange" },
{ label: "情报标题", prop: 'qbmc', placeholder: "请输入情报标题", showType: "input" },
{ label: "标签内容", prop: 'bqdmList', placeholder: "请选择标签内容", showType: "select", options: D_XXCJ_BQLX,multiple:true},
{ label: "标签级别", prop: 'qbjb', placeholder: "请选择标签级别", showType: "select", options: D_BZ_BQJB },
{ label: "情报处置状态", prop: 'lczt', placeholder: "请选择处置状态", showType: "select", options: D_BZ_LCZT },
{ label: "关键字", prop: 'keyword', placeholder: "请输入关键字", showType: "input" },
]);
const pageData = reactive({
tableData: [],
keyCount: 0,
tableConfiger: {
rowHieght: 61,
showSelectType: "checkBox",
loading: false
},
total: 0,
pageConfiger: {
pageSize: 20,
pageCurrent: 1
},
controlsWidth: 300,
tableColumn: [
{ label: "情报上报时间", prop: "sxsbsj" },
{ label: "情报编号", prop: "xsBh" },
{ label: "情报标题", prop: "qbmc" },
{ label: "情报来源", prop: "qbly", showSolt: true },
{ label: "上报人", prop: "xssbr" },
{ label: "上报单位", prop: "ssbm" },
{ label: "流程状态", prop: "lczt", showSolt: true },
{ label: "采用情况", prop: "cyqk", showSolt: true },
// { label: "标签内容", prop: "lczt", showSolt: true },
// { label: "消息状态", prop: "czzt", showSolt: true },
]
});
const queryFrom = ref({});
const chooseRow = ref(false)
const dataList = ref()
// 采纳
const cnMsg = (item) => {
// if ( qxkz.depBool) {
proxy.$confirm("确定要采纳", "警告", { type: "warning" }).then(() => {
xxcjUpdateCzlc({ id: item.id, lczt: '04' }).then(res => {
proxy.$message({ type: "success", message: "采纳成功" });
getList();
})
}).catch(() => { });
// }
}
// 回退
const rollbackNewspapers = (item) => {
// if (item.lczt == '04') {
// proxy.$message({
// message: '已经采纳的信息无法回退',
// type: 'warning',
// showClose: true,
// })
// return
// }
// if (item.lczt == '03') {
// proxy.$message({
// message: '无法回退市局上报信息',
// type: 'warning',
// showClose: true,
// })
// return
// }
if (item.qbjb == '00') {
ElMessageBox.prompt('请输入回退原因', '警告', {
confirmButtonText: '确定',
cancelButtonText: '取消',
})
.then(({ value }) => {
xxcjUpdateCzlc({ id: item.id, lczt: '05', czthyy: value }).then(res => {
proxy.$message({ type: "success", message: "回退成功" });
getList();
})
})
.catch(() => {
})
} else {
proxy.$message({
message: '只能回退已上报的情报',
type: 'warning',
showClose: true,
})
}
}
// 上报
const appearNewspapers = (item) => {
if ((item.lczt == '01' || item.lczt == '05' || item.lczt == '02') && item.qbjb == '00' && qxkz.deptLevel != '01') {
proxy.$confirm("确定要上报", "警告", { type: "warning" }).then(() => {
let promes = {}
if (qxkz.deptLevel == '02') {
promes = { id: item.id, lczt: '03' }
} else {
promes = { id: item.id, lczt: '02' }
}
xxcjUpdateCzlc(promes).then(res => {
proxy.$message({ type: "success", message: "上报成功" });
getList();
})
}).catch(() => { });
} else {
proxy.$message({ type: "warning", message: "市局无法进行上报" });
}
}
// 分组
const opneMsg = (item) => {
chooseRow.value = true
dataList.value = [item]
}
// 打标签
const customTagShow = ref(false)
const openCustomTag = (item) => {
if (qxkz.depBool) {
customTagShow.value = true
dataList.value = item
} else {
proxy.$message.warning('暂无权限')
}
}
// 肯定
const affirm = (item) => {
proxy.$confirm("确定要肯定吗?", "警告", { type: "warning" }).then(() => {
xxcjXxqd({ ids: item.id }).then(res => {
proxy.$message({ type: "success", message: "肯定成功" });
getList();
})
})
}
// 配置关注部门
const configurationShow = ref(false)
const FollowUpOnDept = (item) => {
if (qxkz.depBool) {
configurationShow.value = true
dataList.value = item
} else {
proxy.$message.warning('暂无权限')
}
}
// 批量分组
// const batchMark = () => {
// const listDb = tableList.value.filter(item => item.lczt != '04')
// if (listDb.length == 0) {
// chooseRow.value = true
// dataList.value = tableList.value
// } else {
// proxy.$message({
// message: '还有情报未采纳',
// type: 'warning',
// showClose: true,
// })
// }
// }
const handleSumbit = () => {
const listDb = tableList.value.filter(item => item.czzt != '01' && item.czzt != '04')
if (listDb.length == 0) {
proxy.$confirm("确定要上报", "警告", { type: "warning" }).then(() => {
qbcjPlsb({ ids: ids.value, qbjb: '00' }).then(res => {
proxy.$message({ type: "success", message: "上报成功" });
getList();
})
}).catch(() => { });
} else {
proxy.$message({
message: '请选择正确数据',
type: 'warning',
showClose: true,
})
}
}
// <!-- [04、06、07、08、09] -->打标签
// <!-- [03、05] -->采纳
// <!-- [04] -->回退
// <!-- 01 提交 02 上报县局 03 上班市局 04 采纳 05 退回 06 打标签 07 转合成 08 转线索 09 转会商v-if="qxkz.deptLevel == '01'" -->
const butcontroll = (val, zt) => {
switch (val) {
case '01':
return !(['04', '06', '07', '08', '09'].includes(zt))
case '02':
return !(['03', '05'].includes(zt))
case '03':
return !(['02', '03', '04'].includes(zt))
case '04':
return ([ '04', '05' ,'06', '07', '08', '09'].includes(zt))
}
}
// 搜索
const onSearch = (val) => {
console.log(val.bqdmList);
const promes = {
...pageData.pageConfiger,
...val,
startTime: val.startTime ? val.startTime[0] : '',
endTime: val.endTime ? val.endTime[1] : '',
bqdmList:val.bqdmList?val.bqdmList.join(','):""
}
queryFrom.value = { ...promes }
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;
console.log(pageData.pageConfiger);
let data = { ...pageData.pageConfiger, ...queryFrom.value };
xxcjSelectXxsbPage(data).then(res => {
pageData.tableData = res.records || [];
pageData.total = res.total;
pageData.tableConfiger.loading = false;
}).catch(() => { pageData.tableConfiger.loading = false; })
}
// 删除
const delDictItem = (id) => {
proxy.$confirm("确定要删除", "警告", { type: "warning" }).then(() => {
xxcjDeletes({ ids: Array.isArray(id) ? id : [id] }).then((res) => {
proxy.$message({ type: "success", message: "删除成功" });
getList();
}).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) => {
isShow.value = true;
setTimeout(() => {
detailDiloag.value.init(type, row);
}, 500)
};
const openXxqk = (row) => {
if (row.column.property == 'qbmc' || row.column.property == 'xsBh') {
isShow.value = true;
setTimeout(() => {
detailDiloag.value.init('info', row.row);
}, 500)
}
}
const route = useRoute()
const titleData = ref()
const qxkz = reactive({
deptBizType: '',
deptLevel: '',
roleCode: false,
depBool: false
});
const qxzt = ref(false)
onMounted(() => { 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 = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
window.onresize = function () {
tabHeightFn();
};
};
// 转线索
const FollowUpOnLeads = (row) => {
if (!qxkz.depBool) {
proxy.$message({
message: '权限不足',
type: 'warning',
showClose: true,
})
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) => {
if (!qxkz.depBool) {
proxy.$message({
message: '权限不足',
type: 'warning',
showClose: true,
})
return
} else {
fszlShow.value = true
dataList.value = row
}
}
/** 获取当前角色 */
function getRole() {
const { deptBizType, deptLevel } = getItem('deptId')[0]
/** 是否是市情指领导 */
const isShiQzLeader = getItem('roleList').find(item => item.roleCode == 'JS_666666') != undefined
if (isShiQzLeader) return '市情指领导'
/** 是否是市情指人员 */
const isShiQz = getItem('roleList').find(item => item.roleCode == 'JS_777777') != undefined
if (isShiQz) return '市情指挥人员'
/** 是否是县情指人员 */
const isXianQz = getItem('roleList').find(item => item.roleCode == 'JS_888888') != undefined
if (isXianQz) return '县情指人员'
return '部门'
}
/** 是否展示按钮 */
const isShowBtn = (btnName, row = {}) => {
/** @type {String} 流程状态01 提交 02 上报县局 03 上班市局 04 采纳 05 退回 06 打标签 08 转线索) */
const lczt = row.lczt
/** 按钮权限 */
const buttonPermissions = {
"市情指领导": ["肯定", "采纳", "回退", "分组", "转线索", "转合成", "转会商", "打标签", "修改", "详情", "关注部门"],
"市情指挥人员": ["采纳", "回退", "分组", "转线索", "转合成", "转会商", "打标签", "修改", "详情", "关注部门", "送审"],
"县情指人员": ["上报", "回退", "修改", "详情", "送审"],
"部门": ["上报", "新增", "修改", "续报", "详情"]
};
const role = getRole(); // 角色
const isHadAuth = buttonPermissions[role]?.includes(btnName) // 当前角色所有会显示的按钮
if (!isHadAuth) return false
// 拦截部分逻辑
if (role === '部门') {
if (btnName === '续报') return lczt != '01'
if (btnName === '修改') return lczt == '01'
// if(btnName === '上报') return lczt == '01'
}
return true
}
const handleTransferMerchant = (row) => {
currRow.value = row
isShowTransferMerchantTc.value = true
}
// 送审
const postXxcjXxcjTjsh = (row) => {
proxy.$confirm("确定要送审吗", "提示", { type: "warning" }).then(() => {
xxcjXxcjTjsh({ xxid: row.id }).then(res => {
proxy.$message({ type: "success", message: "送审成功" });
getList();
})
}).catch(() => { })
}
const getDisabled = (val, zt) => {
console.log(val, zt);
// switch (val) {
// case '01':
// return !(['04', '06', '07', '08', '09'].includes(zt))
// case '02':
// return !(['03', '05'].includes(zt))
// case '03':
// return !(['02', '03', '04'].includes(zt))
// case '04':
// return ([ '04', '05' ,'06', '07', '08', '09'].includes(zt))
// }
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.label-pop { .marks {
position: relative; padding: 0 4px;
white-space: nowrap;
&::before { background: #73acf1;
position: absolute; border-radius: 4px;
content: '*'; color: #fff;
top: 0;
left: -7px;
color: red;
}
} }
</style> </style>
<style> <style>
.el-loading-mask { .el-loading-mask {
background: rgba(0, 0, 0, 0.5) !important; background: rgba(0, 0, 0, 0.5) !important;
} }
:v-deep .el-dialog {
width: 90% !important;
}
.zdy-model-dialogs {
/* background-color: rgb(50, 148, 214); */
background: url("~@/assets/images/bg46.png") no-repeat center center;
background-size: 100% 100%;
padding: 8px 10px;
box-sizing: border-box;
pointer-events: auto !important;
height: calc(100% - 50px);
overflow: auto;
}
.vertical-middle {
vertical-align: middle;
}
</style> </style>

View File

@ -61,20 +61,24 @@
<!-- "市情指挥人员": ["采纳", "回退", "分组", "转线索", "转合成", "转会商", "打标签", "修改", "详情", "关注部门", "送审"], --> <!-- "市情指挥人员": ["采纳", "回退", "分组", "转线索", "转合成", "转会商", "打标签", "修改", "详情", "关注部门", "送审"], -->
<!-- "县情指人员": ["上报", "回退", "修改", "详情", "送审"], --> <!-- "县情指人员": ["上报", "回退", "修改", "详情", "送审"], -->
<template #controls="{ row }"> <template #controls="{ row }">
<el-link v-if="isShowBtn('送审', row) && qxkz.deptLevel == '01'" :disabled="row.sldshzt != '00'||row.lczt != '04'" size="small" <el-link v-if="isShowBtn('送审', row) && qxkz.deptLevel == '01'"
type="primary" @click="postXxcjXxcjTjsh(row)">送审</el-link> :disabled="row.sldshzt != '00' || row.lczt != '04'" size="small" type="primary"
<el-link v-if="isShowBtn('送审', row) && qxkz.deptLevel == '02'" :disabled="row.xldshzt != '00'||row.lczt != '04'" size="small" @click="postXxcjXxcjTjsh(row)">送审</el-link>
type="primary" @click="postXxcjXxcjTjsh(row)">送审</el-link> <el-link v-if="isShowBtn('送审', row) && qxkz.deptLevel == '02'"
:disabled="row.xldshzt != '00' || row.lczt != '04'" size="small" type="primary"
@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('上报')" size="small" type="primary" @click="appearNewspapers(row)" :disabled="row.xldshzt != '02'">上报</el-link> <el-link v-if="isShowBtn('上报')" size="small" type="primary" @click="appearNewspapers(row)"
:disabled="row.xldshzt != '02' || (row.lczt != '02' || row.lczt != '03')">上报</el-link>
<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>
<!-- 只有领导有肯定 --> <!-- 只有领导有肯定 -->
<!-- <el-link v-if="isShowBtn('肯定')" size="small" type="primary" @click="affirm(row)">肯定</el-link> --> <!-- <el-link v-if="isShowBtn('肯定')" size="small" type="primary" @click="affirm(row)">肯定</el-link> -->
<el-link v-if="isShowBtn('删除')" size="small" type="primary" @clic.stopk="delDictItem(row.id)">删除</el-link> <el-link v-if="isShowBtn('删除')" size="small" type="primary" @clic.stopk="delDictItem(row.id)">删除</el-link>
<el-link v-if="isShowBtn('修改', row)" size="small" type="primary" @click="addEdit('edit', row)">修改</el-link> <el-link v-if="isShowBtn('修改', row)" size="small" type="primary" @click="addEdit('edit', row)">修改</el-link>
<el-link v-if="isShowBtn('续报', row)" size="small" type="primary" @click="addEdit('followUpReport', row)">续报</el-link> <el-link v-if="isShowBtn('续报', row)" size="small" type="primary"
@click="addEdit('followUpReport', row)">续报</el-link>
<el-link v-if="isShowBtn('详情')" size="small" type="primary" @click="addEdit('info', row)">详情</el-link> <el-link v-if="isShowBtn('详情')" size="small" type="primary" @click="addEdit('info', row)">详情</el-link>
<!-- 所有状态都能进行转线索 --> <!-- 所有状态都能进行转线索 -->
@ -87,7 +91,8 @@
<!-- <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" @click="FollowUpOnDept(row)">关注</el-link> <el-link v-if="isShowBtn('关注部门')" :disabled="row.sldshzt != '02'" size="small" type="primary"
@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>
@ -166,6 +171,7 @@ const searchConfiger = ref([
{ label: "编号", prop: 'xsBh', placeholder: "请输入编号", showType: "input" }, { label: "编号", prop: 'xsBh', placeholder: "请输入编号", showType: "input" },
{ label: "时间", prop: "startTime", placeholder: "请选择时间", showType: "daterange" }, { label: "时间", prop: "startTime", placeholder: "请选择时间", showType: "daterange" },
{ label: "情报标题", prop: 'qbmc', placeholder: "请输入情报标题", showType: "input" }, { label: "情报标题", prop: 'qbmc', placeholder: "请输入情报标题", showType: "input" },
{ label: "标签内容", prop: 'bqdmList', placeholder: "请选择标签内容", showType: "select", options: D_XXCJ_BQLX, multiple: true },
{ label: "标签级别", prop: 'qbjb', placeholder: "请选择标签级别", showType: "select", options: D_BZ_BQJB }, { label: "标签级别", prop: 'qbjb', placeholder: "请选择标签级别", showType: "select", options: D_BZ_BQJB },
{ label: "情报处置状态", prop: 'lczt', placeholder: "请选择处置状态", showType: "select", options: D_BZ_LCZT }, { label: "情报处置状态", prop: 'lczt', placeholder: "请选择处置状态", showType: "select", options: D_BZ_LCZT },
{ label: "关键字", prop: 'keyword', placeholder: "请输入关键字", showType: "input" }, { label: "关键字", prop: 'keyword', placeholder: "请输入关键字", showType: "input" },
@ -370,12 +376,14 @@ const butcontroll = (val, zt) => {
// //
const onSearch = (val) => { const onSearch = (val) => {
console.log(val.bqdmList);
const promes = { const promes = {
...pageData.pageConfiger, ...pageData.pageConfiger,
...val, ...val,
startTime: val.startTime ? val.startTime[0] : '', startTime: val.startTime ? val.startTime[0] : '',
endTime: val.endTime ? val.endTime[1] : '', endTime: val.endTime ? val.endTime[1] : '',
bqdmList: val.bqdmList ? val.bqdmList.join(',') : ""
} }
queryFrom.value = { ...promes } queryFrom.value = { ...promes }
@ -486,7 +494,7 @@ const dologCancel = () => {
// //
const tabHeightFn = () => { const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 290; pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
window.onresize = function () { window.onresize = function () {
tabHeightFn(); tabHeightFn();
}; };

View File

@ -76675,35 +76675,40 @@ export const centralPoint = [
95.7692249914358, 95.7692249914358,
29.85943760031867 29.85943760031867
] ]
}, { },
{
name: '察隅县', name: '察隅县',
ssbmdm: '540425000000', ssbmdm: '540425000000',
point: [ point: [
97.46698612723947, 97.46698612723947,
28.661228694163327 28.661228694163327
] ]
}, { },
{
name: '工布江达县', name: '工布江达县',
ssbmdm: '540421000000', ssbmdm: '540421000000',
point: [ point: [
93.24660931130188, 93.24660931130188,
29.88459424127838 29.88459424127838
] ]
}, { },
{
name: '朗县', name: '朗县',
ssbmdm: '540426000000', ssbmdm: '540426000000',
point: [ point: [
93.07449497318652, 93.07449497318652,
29.045416229209337 29.045416229209337
] ]
}, { },
{
name: '米林县', name: '米林县',
ssbmdm: '540422000000', ssbmdm: '540422000000',
point: [ point: [
94.21305189935441, 94.21305189935441,
29.21583429482142 29.21583429482142
] ]
}, { },
{
name: '雅下分局', name: '雅下分局',
ssbmdm: '540481450000', ssbmdm: '540481450000',
point: [ point: [

View File

@ -70,15 +70,12 @@ const disabled = ref(false);
// 初始化数据 // 初始化数据
const init = (type, row) => { const init = (type, row) => {
title.value = type == 'edit' ? '编辑' : '新增'
dialogForm.value = true; dialogForm.value = true;
if(type == 'edit'){
}
}; };
// 根据id查询详情
const getDataById = (id) => {
// qcckGet({id}, "/mosty-gsxt/tbGsxtZdcl/selectByid").then((res) => {
// listQuery.value = res;
// listQuery.value.fjdz = listQuery.value.fjdz?.split(",");
// });
};
// 提交 // 提交
const submit = () => { const submit = () => {
@ -90,9 +87,6 @@ const submit = () => {
return { bqdl: listQuery.value.dlid, bqdm: item.bqDm, bqmc: item.bqMc, bqsm: item.bqSm, bqys: item.bqYs } return { bqdl: listQuery.value.dlid, bqdm: item.bqDm, bqmc: item.bqMc, bqsm: item.bqSm, bqys: item.bqYs }
}) })
const promes = [...a, ...b] const promes = [...a, ...b]
// data.fjdz = data.fjdz?.join(",");
let url = title.value == "新增" ? "/mosty-gsxt/gsxt/bqbk/saveList" : "/mosty-gsxt/tbGsxtZdcl/update"; let url = title.value == "新增" ? "/mosty-gsxt/gsxt/bqbk/saveList" : "/mosty-gsxt/tbGsxtZdcl/update";
loading.value = true; loading.value = true;

View File

@ -139,8 +139,8 @@ const getList = () => {
pageData.tableConfiger.loading = false; pageData.tableConfiger.loading = false;
}); });
}; };
const AddFrom = () => { const AddFrom = (type,row) => {
addForm.value.init() addForm.value.init(type,row)
} }
const handleItem = (type,row) => { const handleItem = (type,row) => {
proxy.$confirm('确认撤控吗?', '提示', { proxy.$confirm('确认撤控吗?', '提示', {

View File

@ -27,7 +27,7 @@
<div class="mid"> <div class="mid">
<div class="left"> <div class="left">
<!-- <div class="title ellipsis">参会人员{{ item.chry }}</div> --> <!-- <div class="title ellipsis">参会人员{{ item.chry }}</div> -->
<div class="desc"> <div class="desc noScollLine">
<div class="info ellipsis" v-for="(el, i) in item.xsplList" :key="i">{{ i + 1 }}{{ el.plnr }}</div> <div class="info ellipsis" v-for="(el, i) in item.xsplList" :key="i">{{ i + 1 }}{{ el.plnr }}</div>
</div> </div>
</div> </div>

View File

@ -0,0 +1,49 @@
<template>
<div class="detail_box">
<el-descriptions title="审核详情信息" border>
<el-descriptions-item :rowspan="2" label="研判名称" >{{detail.ypmc}}</el-descriptions-item>
<el-descriptions-item label="报告名称">{{detail.bgmc}}</el-descriptions-item>
<el-descriptions-item label="所属部门">{{ detail.ssbm }}</el-descriptions-item>
<el-descriptions-item label="报告类型"><DictTag :tag="false" :value="detail.bglx" :options="D_BZ_YPLX" /></el-descriptions-item>
<el-descriptions-item label="审核状态"><DictTag :tag="false" :value="detail.shzt" :options="D_BZ_XSSHZT" /></el-descriptions-item>
<el-descriptions-item label="创建人姓名">{{ detail.cjrxm }}</el-descriptions-item>
<el-descriptions-item label="创建人身份证号">{{ detail.cjrsfzh }}</el-descriptions-item>
<el-descriptions-item label="报告内容">{{ detail.bgnr }}</el-descriptions-item>
</el-descriptions>
</div>
</template>
<script setup>
import { ref, onMounted, getCurrentInstance } from 'vue'
import { useRoute } from 'vue-router'
import { qcckGet } from "@/api/qcckApi.js";
const { proxy } = getCurrentInstance();
const { D_BZ_YPLX ,D_BZ_XSSHZT } = proxy.$dict('D_BZ_YPFS',"D_BZ_YPLX" ,'D_BZ_XSSHZT')
const route = useRoute();
const detail = ref({});
onMounted(() => {
getDetail();
})
const getDetail = () => {
qcckGet({}, "/mosty-gsxt/gsxtYpbg/" + route.query.id).then((res) => {
detail.value = res || {};
console.log(detail.value);
})
}
</script>
<style lang="scss" scoped>
.detail_box {
padding: 20px 10vw;
box-sizing: border-box;
width: 100%;
height: 100vh;
overflow: hidden;
overflow-y: auto;
}
</style>

View File

@ -0,0 +1,186 @@
<template>
<div>
<!-- 搜索 -->
<div ref="searchBox" class="mt10 mb10">
<Search :searchArr="searchConfiger" @submit="onSearch" />
</div>
<!-- 表格 -->
<div class="tabBox" :style="{height: pageData.tableHeight + 10 +'px'}">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight" :key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
<template #bglx="{ row }">
<DictTag :tag="false" :value="row.bglx" :options="D_BZ_YPLX" />
</template>
<template #shzt="{ row }">
<DictTag :tag="false" :value="row.shzt" :options="D_BZ_XSSHZT" />
</template>
<!-- 操作 -->
<template #controls="{ row }">
<el-link type="primary" @click="addEdit('detail', row)">详情</el-link>
<el-link type="danger" ref="buttonRef" @click="showPopover(row)">审核</el-link>
</template>
</MyTable>
<Pages
@changeNo="changeNo"
@changeSize="changeSize"
:tableHeight="pageData.tableHeight"
:pageConfiger="{ ...pageData.pageConfiger, total: pageData.total }"
/>
</div>
<!-- 详情 -->
<Detail bglx="02" ref="detailDiloag" :dict="{ D_BZ_YPFS, D_BZ_YPLX }"/>
</div>
</template>
<script setup>
import Detail from "@/views/backOfficeSystem/JudgmentHome/strategicResearch/addReport.vue";
import MyTable from "@/components/aboutTable/MyTable.vue";
import Pages from "@/components/aboutTable/Pages.vue";
import Search from "@/components/aboutTable/Search.vue";
import { qcckGet, qcckPost, qcckDelete } from "@/api/qcckApi.js";
import { reactive, ref, onMounted, getCurrentInstance, nextTick } from "vue";
import { useRouter } from 'vue-router';
const router = useRouter();
const { proxy } = getCurrentInstance();
const { D_BZ_YPFS,D_BZ_YPLX ,D_BZ_XSSHZT } = proxy.$dict('D_GZL_SHZT','D_BZ_YPFS',"D_BZ_YPLX" ,'D_BZ_XSSHZT')
const detailDiloag = ref();
const searchBox = ref(); //搜索框
const searchConfiger = ref([
{
label: "研判名称",
prop: "ypmc",
placeholder: "请输入研判名称",
showType: "input"
},
{
label: "报告名称",
prop: "bgmc",
placeholder: "请输入报告名称",
showType: "input"
},
{
label: "所属部门",
prop: "ssbmdm",
placeholder: "请选择所属部门",
showType: "department",
},
{
label: "报告类型",
prop: "bglx",
placeholder: "请选择报告类型",
showType: "select",
options: D_BZ_YPLX
},
{
label: "审核状态",
prop: "shzt",
placeholder: "请选择审核状态",
showType: "select",
options: D_BZ_XSSHZT
},
]);
const queryFrom = ref({});
const pageData = reactive({
tableData: [], //表格数据
keyCount: 0,
tableConfiger: {
rowHieght: 61,
showSelectType: "null",
loading: false
},
total: 0,
pageConfiger: {
pageSize: 20,
pageCurrent: 1
}, //分页
controlsWidth: 160, //操作栏宽度
tableColumn: [
{
label: "研判名称",
prop: "ypmc"
},
{
label: "报告名称",
prop: "bgmc"
},{
label: "所属部门",
prop: "ssbm"
},
{
label: "报告类型",
prop: "bglx",
showSolt: true,
},
{
label: "审核状态",
prop: "shzt",
showSolt: true,
},
]
});
onMounted(() => {
tabHeightFn();
getList();
});
// 搜索
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 params = {
...queryFrom.value,
pageCurrent:pageData.pageConfiger.pageCurrent,
pageSize:pageData.pageConfiger.pageSize
}
qcckGet(params, "/mosty-gsxt/gsxtYpbg/queryShList").then((res) => {
pageData.tableData = res.records;
pageData.total = res.total;
pageData.tableConfiger.loading = false;
})
.catch(() => {
pageData.tableConfiger.loading = false;
});
};
// 详情
const addEdit = (type, row) => {
detailDiloag.value.init(type, row)
};
const showPopover = (row) => {
const url = router.resolve({ path: '/ReviewListSH', query:{id:row.id} });
window.open(url.href, '_blank');
}
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 210;
window.onresize = function () {
tabHeightFn();
};
};
</script>
<style>
.el-loading-mask {
background: rgba(0, 0, 0, 0.5) !important;
}
</style>

View File

@ -52,7 +52,7 @@
<!-- 底部按钮 --> <!-- 底部按钮 -->
<div class="bottom-actions" v-if="title !== '新增' && listQuery.id && listQuery.ssbmdm == userInfo.deptCode"> <div class="bottom-actions" v-if="title !== '新增' && listQuery.id && listQuery.ssbmdm == userInfo.deptCode">
<el-button type="primary" size="small" @click="sendNotice" :loading="noticeLoading">下发通知</el-button> <el-button type="primary" size="small" @click="sendNotice" :loading="noticeLoading">下发通知</el-button>
<el-button type="success" size="small" @click="confirmJudgment" :loading="confirmLoading">确认研判</el-button> <!-- <el-button type="success" size="small" @click="confirmJudgment" :loading="confirmLoading">确认研判</el-button> -->
</div> </div>
</div> </div>

View File

@ -8,26 +8,27 @@
</div> </div>
</div> </div>
<div class="form_cnt"> <div class="form_cnt">
<FormMessage :formList="formData" v-model="listQuery" ref="elform" :rules="rules"> <FormMessage :formList="formData" :disabled="title=='详情'" v-model="listQuery" ref="elform" :rules="rules">
<template #bgnr>
<el-input v-model="listQuery.bgnr" style="width: 100%" placeholder="请输入关键字" class="input-with-select">
<template #append>
<el-button :icon="Search" type="primary">搜索</el-button>
</template>
</el-input>
</template>
<template #fj><el-button type="primary" @click="showText = true">附件上传</el-button></template> <template #fj><el-button type="primary" @click="showText = true">附件上传</el-button></template>
</FormMessage> </FormMessage>
<div class="cntBox"> <div class="cntBox">
<!-- 工具栏 --> <!-- 工具栏 -->
<Toolbar style="border-bottom: 1px solid #ccc" :editor="editorRef" :defaultConfig="toolbarConfig" <Toolbar
style="border-bottom: 1px solid #ccc"
:editor="editorRef"
:defaultConfig="toolbarConfig"
:mode="mode" /> :mode="mode" />
<!-- 编辑器 --> <!-- 编辑器 -->
<Editor :style="`height: 480px; overflow-y: hidden`" :model-value="textContent" :defaultConfig="editorConfig" <Editor
:mode="mode" @onCreated="handleCreated" @onChange="handChange" /> :style="`height: 480px; overflow-y: hidden`"
v-model="textContent"
:defaultConfig="editorConfig"
:mode="mode"
@onCreated="handleCreated"
@onChange="handChange"
/>
</div> </div>
<div v-if="outRow.id" style="display: flex; justify-content: center;"> <div v-if="listQuery.id" style="display: flex; justify-content: center;">
<!-- <el-button style="display: block;" type="primary" @click="ConsultationShow = true">网上会商</el-button> --> <!-- <el-button style="display: block;" type="primary" @click="ConsultationShow = true">网上会商</el-button> -->
<el-button style="display: block;" type="primary" @click="downloadWithStyles(textContent)">下载</el-button> <el-button style="display: block;" type="primary" @click="downloadWithStyles(textContent)">下载</el-button>
</div> </div>
@ -51,15 +52,12 @@ import { Editor, Toolbar } from "@wangeditor/editor-for-vue";
import { ref, defineExpose, reactive, defineEmits, getCurrentInstance, shallowRef, onBeforeUnmount, watch } from "vue"; import { ref, defineExpose, reactive, defineEmits, getCurrentInstance, shallowRef, onBeforeUnmount, watch } from "vue";
import { gsxtYpbgAddEntity, gsxtYpbgEditEntity, gsxtYpbgId } from "@/api/huiShangyp/strategicApi.js" import { gsxtYpbgAddEntity, gsxtYpbgEditEntity, gsxtYpbgId } from "@/api/huiShangyp/strategicApi.js"
const emit = defineEmits(["updateDate", 'ok']); const emit = defineEmits(["updateDate", 'ok']);
const props = defineProps({ const { proxy } = getCurrentInstance();
dic: Object, const { D_BZ_YPLX } = proxy.$dict("D_BZ_YPLX")
}); const props = defineProps({});
const ConsultationShow = ref(false) const ConsultationShow = ref(false)
const showText = ref(false); const showText = ref(false);
const textContent = ref() const textContent = ref()
const { proxy } = getCurrentInstance();
const editorRef = shallowRef(); const editorRef = shallowRef();
const dialogForm = ref(false); //弹窗 const dialogForm = ref(false); //弹窗
const mode = "default"; const mode = "default";
@ -107,85 +105,68 @@ const rules = reactive({
{ required: true, message: "请输入经验内容", trigger: "blur" } { required: true, message: "请输入经验内容", trigger: "blur" }
] ]
}); });
const formData = ref(); const formData = ref([
watch(() =>props.dic.D_BZ_YPLX, (newVal) => {
if(newVal){
formData.value=[
{ label: "报告名称", prop: "bgmc", type: "input", width: "100%", blur: setEditorTextContent }, { label: "报告名称", prop: "bgmc", type: "input", width: "100%", blur: setEditorTextContent },
{ {
label: "报告类型", prop: "bglx", type: "select", width: "100%", options: props.dic.D_BZ_YPLX label: "报告类型", prop: "bglx", type: "select", width: "100%", options: D_BZ_YPLX
}, },
{ label: "报告内容", prop: "bgnr", type: "slot", width: "100%", blur: setEditorTextContent }, ]);
] const listQuery = ref({}); //表单
}
})
const listQuery = ref({
bgmc: "",
bgnr: "",
fj: ""
}); //表单
const loading = ref(false); const loading = ref(false);
const elform = ref(); const elform = ref();
const title = ref(""); const title = ref("");
/** 外面行数据 */
const outRow = ref({})
// 初始化数据 // 初始化数据
const init = (type, reportData, row) => { const init = (type, row) => {
if(row) listQuery.value = JSON.parse(JSON.stringify(row));
listQuery.value = {
bgmc: reportData.bgmc,
bgnr: reportData.bgnr,
id: reportData.id,
bglx: reportData.bglx,
}
outRow.value = { ...row }
dialogForm.value = true; dialogForm.value = true;
title.value = type == "add" ? "新增" :type == "edit"? "编辑" : "详情"; title.value = type == "add" ? "新增" :type == "edit"? "编辑" : "详情";
setEditorTextContent() setEditorTextContent()
}; };
const getText = (val, row = {}) => { const getText = (val) => {
listQuery.value.fj = val.text; listQuery.value.fj = val.text;
setEditorTextContent() setEditorTextContent()
} }
function setEditorTextContent() { function stripReportHeader(html) {
let html = dataBt.value; const source = typeof html === "string" ? html : "";
if (!source) return "";
const hrMatch = source.match(/<hr\b[^>]*\/?>/i);
html += `<p style="text-align: center;"><span style="font-size: 22px;">${listQuery.value.bgmc || ''}</span></p>` if (hrMatch && typeof hrMatch.index === "number") {
html += `<p>${listQuery.value.fj || ''}</p>` return source.slice(hrMatch.index + hrMatch[0].length).trim();
textContent.value = html }
if (typeof dataBt.value === "string" && source.startsWith(dataBt.value)) {
return source.slice(dataBt.value.length).trim();
}
return source.trim();
} }
// watch(() => listQuery.value, (val) => { function setEditorTextContent() {
let html = dataBt.value;
html += `<p style="text-align: center;"><span style="font-size: 22px;">${listQuery.value.bgnr || ''}</span></p>`
html += `<p>${listQuery.value.fj || ''}</p>`
textContent.value = html;
}
// },
// {
// deep: true, immediate: true
// })
// 提交 // 提交
const submit = () => { const submit = () => {
elform.value.submit((data) => { elform.value.submit( async (data) => {
// let url = title.value == "新增" ? "/mosty-gsxt/gsxt/jyfx/add" : "/mosty-gsxt/gsxt/jyfx/edit"; loading.value = true;
const params = {
let params = {
...data, ...data,
ypid: outRow.value.id, bgnr: stripReportHeader(textContent.value)
ypmc: outRow.value.ypyt
}; };
const apiFun = !listQuery.value.id ? gsxtYpbgAddEntity : gsxtYpbgEditEntity const apiFun = !listQuery.value.id ? gsxtYpbgAddEntity : gsxtYpbgEditEntity;
if (!listQuery.value.id) delete params.id if (!listQuery.value.id) delete params.id;
apiFun(params).then(() => { try {
await apiFun(params);
loading.value = false; loading.value = false;
proxy.$message({ type: "success", message: title.value + "成功" }); proxy.$message({ type: "success", message: title.value + "成功" });
emit("ok"); emit("ok");
close(); close();
}).catch(() => { } catch (e) {
loading.value = false; loading.value = false;
}) }
}); });
}; };
//编辑器创建成功 //编辑器创建成功
@ -194,9 +175,8 @@ const handleCreated = (editor) => {
}; };
//内容发生变化 //内容发生变化
const handChange = (editor) => { const handChange = (editor) => {
// 判断是否是一个空段落,是空就传空文本 // 判断是否是一个空段落,是空就传空文本
}; };
onBeforeUnmount(() => { onBeforeUnmount(() => {
const editor = editorRef.value; const editor = editorRef.value;
@ -206,7 +186,6 @@ onBeforeUnmount(() => {
// 关闭 // 关闭
const close = () => { const close = () => {
listQuery.value = {};
loading.value = false; loading.value = false;
dialogForm.value = false; dialogForm.value = false;
listQuery.value = {} listQuery.value = {}

View File

@ -11,7 +11,7 @@
<el-icon style="vertical-align: middle"> <el-icon style="vertical-align: middle">
<CirclePlus /> <CirclePlus />
</el-icon> </el-icon>
<span style="vertical-align: middle">自建研判</span> <span style="vertical-align: middle">创建报告</span>
</el-button> </el-button>
</template> </template>
</PageTitle> </PageTitle>
@ -29,6 +29,7 @@
<template #controls="{ row }"> <template #controls="{ row }">
<!-- <el-link size="small" type="primary" @click="getDataById('edit', row)">修改</el-link> --> <!-- <el-link size="small" type="primary" @click="getDataById('edit', row)">修改</el-link> -->
<!-- <el-link size="small" type="danger" @click="getypbgSjzlTjspId(row.id)">提交申请</el-link> --> <!-- <el-link size="small" type="danger" @click="getypbgSjzlTjspId(row.id)">提交申请</el-link> -->
<el-link size="small" type="warning" @click="handleRow(row)">送审</el-link>
<el-link size="small" type="primary" @click="createReport('edit', row)">编辑</el-link> <el-link size="small" type="primary" @click="createReport('edit', row)">编辑</el-link>
<el-link size="small" type="primary" @click="createReport('detail', row)">详情</el-link> <el-link size="small" type="primary" @click="createReport('detail', row)">详情</el-link>
@ -51,6 +52,7 @@
</template> </template>
<script setup> <script setup>
import { qcckGet } from "@/api/qcckApi";
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";
@ -84,6 +86,22 @@ onMounted(() => {
} }
getList() getList()
}); });
// 提交审核
const handleRow = (row) => {
proxy.$confirm('确定提交审核?', '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning'}).then(() => {
qcckGet({},'/mosty-gsxt/gsxtYpbg/tjsp/'+row.id).then(res => {
proxy.$message.success('提交成功');
getList();
}).catch(() => {
proxy.$message.error('提交失败');
});
})
}
/** 是否市情报指挥中心 */ /** 是否市情报指挥中心 */
const isShiQingBaoZhongXin = computed(() => { const isShiQingBaoZhongXin = computed(() => {
const Jb = deptLevel[0] == '2' ? '01' : deptLevel[0] == '3' ? '02' : '03' const Jb = deptLevel[0] == '2' ? '01' : deptLevel[0] == '3' ? '02' : '03'
@ -149,7 +167,6 @@ const getList = () => {
let data = { ...pageData.pageConfiger, ...queryFrom.value}; let data = { ...pageData.pageConfiger, ...queryFrom.value};
gsxtYpbgGetPageList(data).then(res => { gsxtYpbgGetPageList(data).then(res => {
console.log(res); console.log(res);
pageData.tableData = res.records || []; pageData.tableData = res.records || [];
pageData.total = res.total; pageData.total = res.total;
pageData.tableConfiger.loading = false; pageData.tableConfiger.loading = false;
@ -193,7 +210,6 @@ const selfCreateResearch = (type = 'add') => {
} }
/** 创建报告 */ /** 创建报告 */
const createReport = (type,row) => { const createReport = (type,row) => {
console.log(row);
reportTc.value.init(type, row) reportTc.value.init(type, row)
// currRow.value = { ...row } // currRow.value = { ...row }
// isShowReport.value = true // isShowReport.value = true

View File

@ -171,6 +171,7 @@ const getDataById = (type, row) => {
addForm.value.init(type, row, '01'); addForm.value.init(type, row, '01');
} }
const deleteFile = (row) => { const deleteFile = (row) => {
proxy.$confirm('确定删除选中数据吗?', '提示', { proxy.$confirm('确定删除选中数据吗?', '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',

View File

@ -32,9 +32,9 @@
<DictTag :value="row.czzt" :options="D_GSXT_YJXX_CZZT" /> <DictTag :value="row.czzt" :options="D_GSXT_YJXX_CZZT" />
</template> </template>
<template #xwfz> <template #xwfz>
<el-table-column prop="bqfz" align="center" label="标签分值" /> <el-table-column prop="bqfz" width="80" align="center" label="标签分值" />
<el-table-column prop="pzxs" align="center" label="系数" /> <el-table-column prop="pzxs" width="60" align="center" label="系数" />
<el-table-column prop="xwfz" align="center" label="计算分值"/> <el-table-column prop="xwfz" width="90" align="center" label="计算分值"/>
</template> </template>
<template #expand="{ props }"> <template #expand="{ props }">
<div class="expand-content" style="max-width: 100%"> <div class="expand-content" style="max-width: 100%">
@ -146,7 +146,7 @@ const pageData = reactive({
pageSize: 20, pageSize: 20,
pageCurrent: 1 pageCurrent: 1
}, //分页 }, //分页
controlsWidth: 220, //操作栏宽度 controlsWidth: 300, //操作栏宽度
tableColumn: [ tableColumn: [
{ label: "状态", prop: "czzt", showSolt: true }, { label: "状态", prop: "czzt", showSolt: true },
{ label: "预警时间", prop: "yjsj" }, { label: "预警时间", prop: "yjsj" },
@ -154,7 +154,7 @@ const pageData = reactive({
{ label: "身份证号", prop: "sfzh" }, { label: "身份证号", prop: "sfzh" },
{ label: "标签", prop: "xwms" }, { label: "标签", prop: "xwms" },
{ label: "接收单位", prop: "ssbm" }, { label: "接收单位", prop: "ssbm" },
{ label: "活动频次", prop: "xwcs", showSolt: true }, { label: "活动频次", prop: "xwcs", showSolt: true,width: 90 },
{ label: "预警分值", prop: "xwfz",showSolt: true }, { label: "预警分值", prop: "xwfz",showSolt: true },
] ]
}); });

View File

@ -33,9 +33,9 @@
<DictTag :value="row.czzt" :options="D_GSXT_YJXX_CZZT" /> <DictTag :value="row.czzt" :options="D_GSXT_YJXX_CZZT" />
</template> </template>
<template #sffz> <template #sffz>
<el-table-column prop="bqfz" align="center" label="标签分值" /> <el-table-column prop="bqfz" width="80" align="center" label="标签分值" />
<el-table-column prop="pzxs" align="center" label="系数" /> <el-table-column prop="pzxs" width="60" align="center" label="系数" />
<el-table-column prop="sffz" align="center" label="计算分值"/> <el-table-column prop="sffz" width="90" align="center" label="计算分值"/>
</template> </template>
<template #expand="{ props }"> <template #expand="{ props }">
<div> <div>
@ -139,7 +139,7 @@ const pageData = reactive({
pageSize: 20, pageSize: 20,
pageCurrent: 1 pageCurrent: 1
}, },
controlsWidth: 200, controlsWidth: 300,
tableColumn: [ tableColumn: [
{ label: "状态", prop: "czzt", showSolt: true }, { label: "状态", prop: "czzt", showSolt: true },
{ label: "预警时间", prop: "yjsj" }, { label: "预警时间", prop: "yjsj" },
@ -147,7 +147,7 @@ const pageData = reactive({
{ label: "身份证号", prop: "sfzh" }, { label: "身份证号", prop: "sfzh" },
{ label: "标签", prop: "yjbqmc" }, { label: "标签", prop: "yjbqmc" },
{ label: "接收单位", prop: "ssbm" }, { label: "接收单位", prop: "ssbm" },
{ label: "活动频次", prop: "sfcs" }, { label: "活动频次", prop: "sfcs",width:'90' },
{ label: "预警分值", prop: "sffz",showSolt: true }, { label: "预警分值", prop: "sffz",showSolt: true },
] ]
}); });

View File

@ -69,8 +69,9 @@ const searchBox = ref(); //搜索框
import { holographicProfileJump } from "@/utils/tools.js" import { holographicProfileJump } from "@/utils/tools.js"
const searchConfiger = ref( const searchConfiger = ref(
[ [
{ label: "预警级别", prop: 'yjjbList', placeholder: "请输入姓名", showType: "select", options: D_BZ_YJJB }, { label: "预警级别", prop: 'yjjbList', placeholder: "请选择预警级别", showType: "select", options: D_BZ_YJJB },
{ label: "来源类型", prop: 'yjlxList', placeholder: "请输入身份证号码", showType: "select", options: D_BZ_YJLY,multiple:true }, { label: "来源类型", prop: 'yjlxList', placeholder: "请选择来源类型", showType: "select", options: D_BZ_YJLY,multiple:true },
{ label: "身份证号", prop: 'rysfzh', placeholder: "请输入身份证", showType: "input",},
{ label: "部门", prop: 'ssbmdm', showType: "department"}, { label: "部门", prop: 'ssbmdm', showType: "department"},
{ label: "时间", prop: 'timeRange', showType: "datetimerange"}, { label: "时间", prop: 'timeRange', showType: "datetimerange"},
]); ]);

View File

@ -34,9 +34,9 @@
<DictTag :value="row.czzt" :options="D_GSXT_YJXX_CZZT" /> <DictTag :value="row.czzt" :options="D_GSXT_YJXX_CZZT" />
</template> </template>
<template #sffz> <template #sffz>
<el-table-column prop="bqfz" align="center" label="标签分值" /> <el-table-column prop="bqfz" width="80" align="center" label="标签分值" />
<el-table-column prop="pzxs" align="center" label="系数" /> <el-table-column prop="pzxs" width="60" align="center" label="系数" />
<el-table-column prop="sffz" align="center" label="计算分值"/> <el-table-column prop="sffz" width="90" align="center" label="计算分值"/>
</template> </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>
@ -133,7 +133,7 @@ const pageData = reactive({
pageSize: 20, pageSize: 20,
pageCurrent: 1 pageCurrent: 1
}, },
controlsWidth: 200, //操作栏宽度 controlsWidth: 300, //操作栏宽度
tableColumn: [ tableColumn: [
{ label: "状态", prop: "czzt", showSolt: true }, { label: "状态", prop: "czzt", showSolt: true },
{ label: "预警时间", prop: "yjsj" ,width: 180}, { label: "预警时间", prop: "yjsj" ,width: 180},
@ -141,7 +141,7 @@ const pageData = reactive({
{ label: "身份证号", prop: "sfzh" ,width: 180}, { label: "身份证号", prop: "sfzh" ,width: 180},
{ label: "标签", prop: "yjbqmc" }, { label: "标签", prop: "yjbqmc" },
{ label: "接收单位", prop: "ssbm" }, { label: "接收单位", prop: "ssbm" },
{ label: "活动频次", prop: "sfcs" }, { label: "活动频次", prop: "sfcs",width: 90 },
{ label: "预警分值", prop: "sffz",showSolt: true }, { label: "预警分值", prop: "sffz",showSolt: true },
] ]
}); });

View File

@ -10,7 +10,7 @@
<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">
<template #sfcs="{ row }"> <template #sfcs="{ row }">
<span style="color: #0072ff;" @click="handleClick(row)">{{ row.sfcs }}</span> <span style="color: #0072ff;">{{ row.sfcs }}</span>
</template> </template>
<template #yjjb="{ row }"> <template #yjjb="{ row }">
<DictTag :value="row.yjjb" :tag="false" :color="bqYs(row.yjjb)" :options="D_BZ_YJJB" /> <DictTag :value="row.yjjb" :tag="false" :color="bqYs(row.yjjb)" :options="D_BZ_YJJB" />
@ -24,10 +24,6 @@
<template #sffz="{ row }"> <template #sffz="{ row }">
<span :style="row.sffz > 100 ? 'color: #ff0000;' : 'color: #0072ff;'">{{ row.sffz }}</span> <span :style="row.sffz > 100 ? 'color: #ff0000;' : 'color: #0072ff;'">{{ row.sffz }}</span>
</template> </template>
<!-- <template #yjjb="{ row }">
<DictTag :value="row.yjjb" :tag="false" :color="bqYs(row.yjjb)" :options="D_BZ_YJJB" />
</template> -->
<template #yjtp="{ row }"> <template #yjtp="{ row }">
<template v-if="!row.yjtp || row.yjtp.includes('baidu')"> <template v-if="!row.yjtp || row.yjtp.includes('baidu')">
<img src="@/assets/images/car.png" width="30" height="30" /> <img src="@/assets/images/car.png" width="30" height="30" />
@ -91,14 +87,13 @@ const searchConfiger = ref([
{ label: "预警类型", prop: 'yjlxList', placeholder: "请选择预警类型", showType: "select", options: [],multiple:true }, { label: "预警类型", prop: 'yjlxList', placeholder: "请选择预警类型", showType: "select", options: [],multiple:true },
{ label: "预警级别", prop: 'yjjbList', placeholder: "请选择预警级别", showType: "select", options: [],multiple:true }, { label: "预警级别", prop: 'yjjbList', placeholder: "请选择预警级别", showType: "select", options: [],multiple:true },
{ label: "预警类别", prop: 'yjlbList', placeholder: "请选择预警级别", showType: "select", options: [],multiple:true }, { label: "预警类别", prop: 'yjlbList', placeholder: "请选择预警级别", showType: "select", options: [],multiple:true },
{ label: "时间", prop: 'times', showType: "datetimerange" },
{ label: "部门", prop: 'ssbmdm', placeholder: "请选择部门", showType: "department" },
// { label: "号牌类型", prop: 'hplx', placeholder: "请选择号牌类型", showType: "select", options: [] }, // { label: "号牌类型", prop: 'hplx', placeholder: "请选择号牌类型", showType: "select", options: [] },
]); ]);
const queryFrom = ref({}); const queryFrom = ref({});
const bqLbData = ref({});
const listQuery = reactive({
yjlx: []
})
const pageData = reactive({ const pageData = reactive({
tableData: [], //表格数据 tableData: [], //表格数据
keyCount: 0, keyCount: 0,
@ -118,7 +113,7 @@ const pageData = reactive({
tableColumn: [ tableColumn: [
{ label: "身份分值", prop: "sffz", showSolt: true }, { label: "身份分值", prop: "sffz", showSolt: true },
// { label: "预警图片", prop: "yjtp", showSlot: true, width: 100 }, // { label: "预警图片", prop: "yjtp", showSlot: true, width: 100 },
// { label: "预警时间", prop: "yjsj", showOverflowTooltip: true, width: 150 }, { label: "预警时间", prop: "yjsj",},
{ label: "姓名", prop: "ryxm", showOverflowTooltip: true }, { label: "姓名", prop: "ryxm", showOverflowTooltip: true },
// { label: "车牌号", prop: "cph", showOverflowTooltip: true }, // { label: "车牌号", prop: "cph", showOverflowTooltip: true },
// { label: "号牌类型", prop: "hplx", showOverflowTooltip: true }, // { label: "号牌类型", prop: "hplx", showOverflowTooltip: true },
@ -159,25 +154,16 @@ const pushAssess = (val) => {
return holographicProfileJump(val.yjlx,val) // 全息档案跳转 return holographicProfileJump(val.yjlx,val) // 全息档案跳转
} }
// 获取标签大类数据
const gettbGsxtBqglSelectList = (val) => {
tbGsxtBqglSelectList({ sflx: val }).then(res => {
bqLbData.value.bqXl = res
})
}
// 获取数据 // 获取数据
const getList = (val) => { const getList = () => {
pageData.tableConfiger.loading = true; pageData.tableConfiger.loading = true;
const promes = { const promes = {
...val,
...queryFrom.value, ...queryFrom.value,
pageCurrent: pageData.pageConfiger.pageCurrent, pageCurrent: pageData.pageConfiger.pageCurrent,
pageSize: pageData.pageConfiger.pageSize pageSize: pageData.pageConfiger.pageSize
} }
if(listQuery.yjlxList?.length) promes.yjlxList = listQuery.yjlxList; delete promes.times;
if(listQuery.yjjbList?.length) promes.yjjbList = listQuery.yjjbList;
if(listQuery.yjlbList?.length) promes.yjlbList = listQuery.yjlbList;
qcckPost(promes, '/mosty-gsxt/tbYjxx/selectYjxxFzPage').then((res) => { qcckPost(promes, '/mosty-gsxt/tbYjxx/selectYjxxFzPage').then((res) => {
pageData.tableData = res.records || []; pageData.tableData = res.records || [];
pageData.total = res.total; pageData.total = res.total;
@ -217,21 +203,6 @@ const openAddFrom = (row) => {
emitter.emit('openAddFrom', row) emitter.emit('openAddFrom', row)
} }
const handleClick = (row) => {
}
// 根据身份分值设置行样式
const getRowClassName = (row) => {
if (!row.row.sffz) return '';
const score = Number(row.row.sffz);
if (score >= 90) return 'score-level-high';
if (score >= 70) return 'score-level-medium';
if (score >= 50) return 'score-level-low';
return '';
};
// 表格高度计算 // 表格高度计算
const tabHeightFn = () => { const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - (searchBox.value?.offsetHeight || 0) - 200; pageData.tableHeight = window.innerHeight - (searchBox.value?.offsetHeight || 0) - 200;
@ -242,9 +213,9 @@ const tabHeightFn = () => {
// 搜索 // 搜索
const onSearch = (obj) => { const onSearch = (obj) => {
listQuery.yjlxList = obj.yjlxList || null queryFrom.value = {...obj }
listQuery.yjjbList = obj.yjjbList || null queryFrom.value.startTime = obj.times ? obj.times[0] : ''
listQuery.yjlbList = obj.yjlbList || null queryFrom.value.endTime = obj.times ? obj.times[1] : ''
getList() getList()
} }

View File

@ -90,14 +90,14 @@ const pageData = reactive({
pageSize: 20, pageSize: 20,
pageCurrent: 1 pageCurrent: 1
}, //分页 }, //分页
controlsWidth: 160, //操作栏宽度 controlsWidth: 100, //操作栏宽度
tableColumn: [ tableColumn: [
{ label: "状态", prop: "czzt", showSolt: true }, { label: "状态", prop: "czzt", showSolt: true },
{ label: "预警时间", prop: "yjSj" }, { label: "预警时间", prop: "yjSj",width:180 },
{ label: "人员姓名", prop: "yjRyxm", }, { label: "人员姓名", prop: "yjRyxm", },
{ label: "身份证号", prop: "yjRysfzh", }, { label: "身份证号", prop: "yjRysfzh",width:180 },
{ label: "性别", prop: "sex" ,showSolt: true }, { label: "性别", prop: "sex" ,showSolt: true,width:80 },
{ label: "年龄", prop: "age", showSolt: true }, { label: "年龄", prop: "age", showSolt: true,width:80 },
{ label: "预警级别", prop: "yjJb", showSolt: true }, { label: "预警级别", prop: "yjJb", showSolt: true },
{ label: "人员类别", prop: "bqdl", showSolt: true }, { label: "人员类别", prop: "bqdl", showSolt: true },
{ label: "细类", prop: "yjbqmc" }, { label: "细类", prop: "yjbqmc" },

View File

@ -253,73 +253,10 @@ const handleOpenNotification = () => {
} }
const makerCenter = () => { const makerCenter = () => {
const dw = require("@/assets/point/dingwei.png") const dw = require("@/assets/point/dingwei.png")
// qcckGet({},'/mosty-gsxt/lzJcjPjdb/selectCount').then(res=>{
// // qcckGet({},'/mosty-gsxt/tbYjxx/selectSsbm').then(res=>{
// emitter.emit('deletePointArea','hm')
// let list = res || [];
// list.forEach(item => {
// (item.jqjb || []).forEach(v=>{
// v.jbmc = D_BZ_JQDJ.value.find(itm => itm.value == v.jbdm).label
// })
// let obj = centralPoint.find(i => i.name == item.ssbm || i.ssbmdm == item.ssbmdm);
// if(obj){
// item.jd = obj.point[0];
// item.wd = obj.point[1];
// }
// })
// allDep.value = list;
// console.log( allDep.value);
// emitter.emit("addPointArea", { coords:list, icon: dw, flag: "hm", size: '14px', showTitle: false, offset: [0, -25] });
// })
qcckGet({}, '/mosty-gsxt/lzJcjPjdb/selectCountNew').then(res => { qcckGet({}, '/mosty-gsxt/lzJcjPjdb/selectCountNew').then(res => {
console.log(res);
let list = res || []; let list = res || [];
list.forEach(item => {
// (item.jqjb || []).forEach(v=>{
// v.jbmc = D_BZ_JQDJ.value.find(itm => itm.value == v.jbdm).label
// })
// console.log(item);
// jbmc:item.jqjb.jbmc
let obj = centralPoint.find(i => i.name == item.ssbm || i.ssbmdm == item.ssbmdm);
if(obj){
item.jd = obj.point[0];
item.wd = obj.point[1];
}
})
allDep.value = list; allDep.value = list;
emitter.emit("addPointArea", { coords:list, icon: dw, flag: "hm", size: '14px', showTitle: false, offset: [0, -25] }); emitter.emit("addPointArea", { coords:list, icon: dw, flag: "hm", size: '14px', showTitle: false, offset: [0, -25] });
// let obj = centralPoint.find(i => i.name == item.ssbm || i.ssbmdm == item.ssbmdm);
// if(obj){
// item.jd = obj.point[0];
// item.wd = obj.point[1];
// }
// qcckGet({},'/mosty-gsxt/tbYjxx/selectSsbm').then(res=>{
// emitter.emit('deletePointArea','hm')
// let list = res || [];
// list.forEach(item => {
// (item.jqjb || []).forEach(v=>{
// v.jbmc = D_BZ_JQDJ.value.find(itm => itm.value == v.jbdm).label
// })
// let obj = centralPoint.find(i => i.name == item.ssbm || i.ssbmdm == item.ssbmdm);
// if(obj){
// item.jd = obj.point[0];
// item.wd = obj.point[1];
// }
// })
// allDep.value = list;
// console.log( allDep.value);
// emitter.emit("addPointArea", { coords:list, icon: dw, flag: "hm", size: '14px', showTitle: false, offset: [0, -25] });
}) })
} }

View File

@ -4,7 +4,13 @@
<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 }}</div> <div style="color:#ffffff" class="f16 lh20">{{ item.label }}</div>
<div class="mt4 f12" style="color: #ffffff;font-size: 24px;">{{ item.value }}</div> <div v-if="!item.isChild" class="mt4 f12" style="color: #ffffff;font-size: 24px;">{{ item.value }}</div>
<div v-else class="mt4 flex align-center just-between" style="color: #ffffff;">
<!-- 未处置 -->
<span class="f24" style="color: #ff0000;" title="未处置">0</span>
<!-- 已处置 -->
<span class="f24" style="color: #4cf35d;" title="已处置">0</span>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -24,9 +30,9 @@ import keyGroups from "@/views/home/components/keyGroups.vue";
const contentItem = ref([ const contentItem = ref([
{ type:"jqzs", label: "今日警情", value: "0" ,icon:require('@/assets/images/top-1.png')}, { type:"jqzs", label: "今日警情", value: "0" ,icon:require('@/assets/images/top-1.png')},
{ type:"yjzs", label: "今日预警", value: "0",icon:require('@/assets/images/top-2.png') },
{ type:"zdry", label: "重点人员总数", value: "0",icon:require('@/assets/images/top-3.png') }, { type:"zdry", label: "重点人员总数", value: "0",icon:require('@/assets/images/top-3.png') },
{ type:"zdqt", label: "重点群体总数", value: "0" ,icon:require('@/assets/images/top-4.png')}, { type:"zdqt", label: "重点群体总数", value: "0" ,icon:require('@/assets/images/top-4.png')},
{ type:"yjzs", label: "今日预警", value: "0",isChild:true,icon:require('@/assets/images/top-2.png') },
]); ]);
onMounted(() => { onMounted(() => {