Compare commits

..

2 Commits

Author SHA1 Message Date
e87494ae2e 解决冲突 2026-01-25 11:59:22 +08:00
bc98b0ecb1 更新后台后大屏 2026-01-25 11:55:12 +08:00
14 changed files with 741 additions and 74 deletions

View File

@ -360,12 +360,7 @@ export const publicRoutes = [
// component: () => import("@/views/backOfficeSystem/HumanIntelligence/FollowLeads/index"),
// meta: { title: "转线索列表", icon: "article-create" },
// },
{
path: "/socialInformationCrculatec",
name: "recombinantSynthesis",
component: () => import("@/views/backOfficeSystem/HumanIntelligence/ConversionSynthesis/index"),
meta: { title: "转合成列表", icon: "article-create" },
},
// {
// path: "/CollectPoints",
// name: "CollectPoints",
@ -375,21 +370,13 @@ export const publicRoutes = [
// icon: "article-create"
// }
// },
{
path: "/transferConsultationList",
name: "transferConsultationList",
component: () => import("@/views/backOfficeSystem/transferConsultationList/index.vue"),
meta: {
title: "转会商列表",
icon: "article-create"
}
},
{
path: "/supplementReportList",
name: "supplementReportList",
component: () => import("@/views/backOfficeSystem/supplementReportList/index.vue"),
meta: {
title: "补充/续报列表",
title: "补充续报",
icon: "article-create"
}
},
@ -402,15 +389,15 @@ export const publicRoutes = [
icon: "article-create"
}
},
{
path: "/InformationReporting",
name: "InformationReporting",
component: () => import("@/views/backOfficeSystem/InformationReporting/index.vue"),
meta: {
title: "蜂群信息上报",
icon: "article-create"
}
},
// {
// path: "/InformationReporting",
// name: "InformationReporting",
// component: () => import("@/views/backOfficeSystem/InformationReporting/index.vue"),
// meta: {
// title: "蜂群信息",
// icon: "article-create"
// }
// },
// {
// path: "/MakeAcomment",
// name: "MakeAcomment",
@ -979,6 +966,21 @@ export const publicRoutes = [
icon: "article-ranking"
},
children: [
{
path: "/socialInformationCrculatec",
name: "recombinantSynthesis",
component: () => import("@/views/backOfficeSystem/HumanIntelligence/ConversionSynthesis/index"),
meta: { title: "转合成列表", icon: "article-create" },
},
{
path: "/transferConsultationList",
name: "transferConsultationList",
component: () => import("@/views/backOfficeSystem/transferConsultationList/index.vue"),
meta: {
title: "转会商列表",
icon: "article-create"
}
},
{
path: "/DatAcquisition",
name: "DatAcquisition",

View File

@ -44,9 +44,11 @@ service.interceptors.response.use(
const { success, code, msg, message, data, model } = response.data;
// 需要判断当前请求是否成功
if (success && code === 10000) {
return data ? data : response.data; // 成功后返回解析后的数据
return data || [null,0,undefined,''].includes(data) ? data : response.data; // 成功后返回解析后的数据
// return data ? data : response.data; // // 成功后返回解析后的数据
} else if (code === 200 || code == "00000" || code == "10000" || msg == 'success' || model || response.data.success == true) {
return data ? data : response.data; // // 成功后返回解析后的数据
return data || [null,0,undefined,''].includes(data) ? data : response.data; // 成功后返回解析后的数据
// return data ? data : response.data; // // 成功后返回解析后的数据
} else if (code === 401) {
store.dispatch('user/logout');
ElMessage.error(message); // 提示错误信息

View File

@ -90,13 +90,14 @@ const pageData = reactive({
pageSize: 20,
pageCurrent: 1
},
controlsWidth: 240,
controlsWidth: 100,
tableColumn: [
{ label: "情报标题", prop: "qbmc" },
{ label: "情报标题", prop: "qbmc",width:250 },
{ label: "编号", prop: "xsBh",width:190 },
// { label: "情报类型", prop: "qblx", showSolt: true },
// { label: "情报来源", prop: "cjlx", showSolt: true },
{ label: "转线索时间", prop: "zxssj" },
{ label: "情报内容", prop: "qbnr" },
{ label: "转线索时间", prop: "zxssj",width:190 },
{ label: "情报内容", prop: "qbnr",width:190 },
{ label: "所属部门", prop: "ssbm" },
]
});

View File

@ -0,0 +1,641 @@
<template>
<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">
<template #left>
<el-button type="primary" @click="addEdit('add')" size="small">
<el-icon class="vertical-middle">
<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>
<!-- 表格 -->
<div class="tabBox" :style="{ height: (pageData.tableHeight + 40) + 'px' }">
<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'">上报</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>
<!-- 新增 -->
<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>
<script setup>
import PageTitle from "@/components/aboutTable/PageTitle.vue";
import MyTable from "@/components/aboutTable/MyTable.vue";
import Pages from "@/components/aboutTable/Pages.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 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 { D_GS_XS_LY, D_BZ_SSSHZT, D_BZ_SSZT, D_BZ_SF, D_GS_XS_LX, D_BZ_BQJB,
D_GS_XS_QTLX, D_GS_ZDQT_LB,
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: '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) => {
const promes = {
...pageData.pageConfiger,
...val,
startTime: val.startTime ? val.startTime[0] : '',
endTime: val.endTime ? val.endTime[1] : '',
}
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(() => {
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 - 290;
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>
<style lang="scss" scoped>
.label-pop {
position: relative;
&::before {
position: absolute;
content: '*';
top: 0;
left: -7px;
color: red;
}
}
</style>
<style>
.el-loading-mask {
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>

View File

@ -14,11 +14,13 @@
<template #jbxx>
<div>
<h3 class="tags-title">报送情况</h3>
<div style="display: flex;justify-content:space-between;width: 200%;">
<div>录入人{{ userName }}</div>
<div>录入单位{{ userInfo.deptName }}</div>
<div>本年度报送信息量{{ tjcll.cnl || 0 }}</div>
<div>采纳量{{ tjcll.sbsl || 0 }}</div>
<div style="width: 200%;">
<el-descriptions :column="4" border>
<el-descriptions-item label="录入人">{{ userName }}</el-descriptions-item>
<el-descriptions-item label="录入单位">{{ userInfo.deptName }} </el-descriptions-item>
<el-descriptions-item label="本年度报送信息量:">{{ tjcll.cnl || 0 }}</el-descriptions-item>
<el-descriptions-item label="采纳量">{{ tjcll.sbsl || 0 }} </el-descriptions-item>
</el-descriptions>
</div>
</div>
</template>

View File

@ -19,34 +19,34 @@
</tr>
<tr>
<td class="hzd-label">布控来源</td>
<td class="hzd-value">{{ listQuery.ly }}</td>
<td class="hzd-value" contenteditable="true">{{ listQuery.ly }}</td>
<td class="hzd-label">布控范围</td>
<td class="hzd-value">全市工布江达县</td>
<td class="hzd-value" contenteditable="true">全市工布江达县</td>
</tr>
<tr>
<td class="hzd-label">布控级别</td>
<td class="hzd-value">{{ listQuery.dj }}</td>
<td class="hzd-value" contenteditable="true">{{ listQuery.dj }}</td>
<td class="hzd-label">处置要求</td>
<td class="hzd-value">{{ listQuery.czyq }}</td>
<td class="hzd-value" contenteditable="true">{{ listQuery.czyq }}</td>
</tr>
<tr>
<td class="hzd-label">经办人员</td>
<td class="hzd-value">{{ listQuery.bkcjrXm }}</td>
<td class="hzd-value" contenteditable="true">{{ listQuery.bkcjrXm }}</td>
<td class="hzd-label">联系方式</td>
<td class="hzd-value">
<el-input v-model="listQuery.lxfs" style="width: 100%" placeholder="请输入经办人联系方式" />
<div contenteditable="true"> {{ listQuery.lxfs }}</div>
</td>
</tr>
<tr>
<td class="hzd-label">布控理由</td>
<td class="hzd-value" colspan="3">
<el-input v-model="listQuery.bkSy" style="width: 100%" placeholder="请输入布控理由" />
<div contenteditable="true"> {{ listQuery.bkSy }}</div>
</td>
</tr>
<tr>
<td class="hzd-label">执法依据</td>
<td class="hzd-value" colspan="3">
<el-input v-model="listQuery.zfyj" style="width: 100%" placeholder="请输入执法依据" />
<div contenteditable="true"> {{ listQuery.zfyj }}</div>
</td>
</tr>
<tr>
@ -68,8 +68,7 @@
<tr>
<td class="hzd-label">备注</td>
<td class="hzd-value" colspan="3">
<el-input v-model="listQuery.bz" type="textarea" style="width: 100%" placeholder="请输入备注" />
<div v-show="false" class="input-value">{{ listQuery.bz }}</div>
<div contenteditable="true"> {{ listQuery.bz }}</div>
</td>
</tr>
</table>
@ -260,4 +259,10 @@ const exportWord = () => {
.hzd-table td[colspan="3"] {
width: calc(100% - 150px);
}
</style>
<style>
</style>

View File

@ -55,7 +55,7 @@
</template>
<!-- 审核通过后才有轨迹 -->
<el-link type="primary" size="small" @click="openShowHzd(row)">回执单</el-link>
<el-link type="primary" size="small" @click="openShowHzd(row)" v-if="row.bkZt == '05'">回执单</el-link>
<el-link type="primary" size="small" @click="handleAdd('detail', row)">详情</el-link>
<el-link type="danger" size="small" @click="handleRow(row.id)"
v-if="['01', '03', '06'].includes(row.bkZt)">删除</el-link>

View File

@ -122,6 +122,7 @@ const searchConfiger = ref(
{ label: "部门", prop: 'ssbmdm', placeholder: "请选择部门", showType: "department" },
{ label: "级别", prop: 'bqys', placeholder: "请选择级别", showType: "select" ,options: D_BZ_YJJB},
{ label: "积分段", prop: 'jfd', placeholder: "请选择积分段", showType: "Slot" },
{ label: "预警时间", prop: 'times', showType: "datetimerange" },
]);
const detailRef = ref()
@ -188,6 +189,8 @@ const handleCzjy = (row) => {
// 搜索
const onSearch = (val) => {
queryFrom.value = { ...queryFrom.value,...val };
queryFrom.value.startTime = val.times ? val.times[0] : ''
queryFrom.value.endTime = val.times ? val.times[1] : ''
pageData.pageConfiger.pageCurrent = 1;
getList()
}
@ -210,6 +213,7 @@ const getList = () => {
pageCurrent: pageData.pageConfiger.pageCurrent,
pageSize: pageData.pageConfiger.pageSize
}
delete promes.times;
qcckGet(promes, '/mosty-gsxt/yjzxXwyj/getPageList').then((res) => {
pageData.total = res.total || 0;
pageData.tableConfiger.loading = false;

View File

@ -114,6 +114,7 @@ const searchConfiger = ref([
{ label: "部门", prop: 'ssbmdm', placeholder: "请选择部门", showType: "department" },
{ label: "级别", prop: 'bqys', placeholder: "请选择级别", showType: "select", options: D_BZ_YJJB },
{ label: "积分段", prop: 'jfd', placeholder: "请选择积分段", showType: "Slot" },
{ label: "预警时间", prop: 'times', showType: "datetimerange" },
]);
const queryFrom = ref({});
@ -168,6 +169,8 @@ const handleCzjy = (row) => {
const onSearch = (val) => {
queryFrom.value = { ...queryFrom.value, ...val };
queryFrom.value.startTime = val.times ? val.times[0] : ''
queryFrom.value.endTime = val.times ? val.times[1] : ''
pageData.pageConfiger.pageCurrent = 1;
getList();
};
@ -195,6 +198,7 @@ const getList = () => {
pageCurrent: pageData.pageConfiger.pageCurrent,
pageSize: pageData.pageConfiger.pageSize
}
delete promes.times;
tbYjxxGetZbtj(promes).then((res) => {
pageData.tableData = res.records || [];

View File

@ -70,8 +70,8 @@ import { holographicProfileJump } from "@/utils/tools.js"
const searchConfiger = ref(
[
{ label: "预警级别", prop: 'yjjbList', placeholder: "请输入姓名", showType: "select", options: D_BZ_YJJB },
{ label: "来源类型", prop: 'yjlxList', placeholder: "请输入身份证号码", showType: "select", options: D_BZ_YJLY },
{ label: "部门", prop: 'ssdmdm', showType: "department"},
{ label: "来源类型", prop: 'yjlxList', placeholder: "请输入身份证号码", showType: "select", options: D_BZ_YJLY,multiple:true },
{ label: "部门", prop: 'ssbmdm', showType: "department"},
{ label: "时间", prop: 'timeRange', showType: "datetimerange"},
]);
@ -92,7 +92,7 @@ const pageData = reactive({
}, //分页
controlsWidth: 160, //操作栏宽度
tableColumn: [
{ label: "预警图片", prop: "yjtp", showSolt: true, width: 120 },
{ label: "预警图片", prop: "yjtp", showSolt: true, width: 100 },
{ label: "姓名", prop: "ryxm" },
{ label: "身份证号", prop: "rysfzh", width: 170 },
{ label: "预警标签", prop: "yjbq", width: 120 },

View File

@ -105,6 +105,7 @@ const searchConfiger = ref([
{ label: "部门", prop: 'ssbmdm', placeholder: "请选择部门", showType: "department" },
{ label: "级别", prop: 'bqys', placeholder: "请选择级别", showType: "select", options: D_BZ_YJJB },
{ label: "积分段", prop: 'jfd', placeholder: "请选择积分段", showType: "Slot" },
{ label: "预警时间", prop: 'times', showType: "datetimerange" },
]);
const permission_sfqs = ref(false)
@ -157,6 +158,8 @@ onMounted(() => {
const onSearch = (val) => {
queryFrom.value = { ...queryFrom.value, ...val };
queryFrom.value.startTime = val.times ? val.times[0] : ''
queryFrom.value.endTime = val.times ? val.times[1] : ''
pageData.pageConfiger.pageCurrent = 1;
getList();
};
@ -184,6 +187,7 @@ const getList = () => {
pageCurrent: pageData.pageConfiger.pageCurrent,
pageSize: pageData.pageConfiger.pageSize,
}
delete promes.times;
yjzxSfyjSelectList(params).then((res) => {
pageData.tableData = Array.isArray(res?.records) ? res.records : [];
pageData.tableData = pageData.tableData.map(item => {

View File

@ -45,7 +45,7 @@
<DictTag :value="row.hplx" :options="D_BZ_HPZL" />
</template>
<template #controls="{ row }">
<el-link type="success" @click="handleToImportantMan(row)">转重点人</el-link>
<!-- <el-link type="success" @click="handleToImportantMan(row)">转重点人</el-link> -->
<el-link type="success" @click="pushAssess(row)">全息档案</el-link>
<!-- <el-link type="primary" @click="openAddFrom(row)">详情</el-link> -->
</template>
@ -114,7 +114,7 @@ const pageData = reactive({
pageSize: 20,
pageCurrent: 1
}, //分页
controlsWidth: 300, //操作栏宽度
controlsWidth: 100, //操作栏宽度
tableColumn: [
{ label: "身份分值", prop: "sffz", showSolt: true },
// { label: "预警图片", prop: "yjtp", showSlot: true, width: 100 },

View File

@ -1,6 +1,5 @@
<template>
<div>
<!-- 搜索 -->
<div ref="searchBox" class="searchBoxlive mt10">
<div class="filter-title">
@ -10,24 +9,34 @@
</div>
<el-form :model="listQuery" label-width="auto" :inline="true" ref="searchArr">
<el-form-item label="布控人员" prop="yjRyxm ">
<el-select clearable v-model="listQuery.yjRyxm" filterable remote reserve-keyword placeholder="请输入布控人员"
:remote-method="remoteMethod" :loading="loading" style="width: 240px">
<el-select clearable v-model="listQuery.yjRyxm" :key="listQuery.yjRyxm"filterable remote allow-create default-first-optionreserve-keyword placeholder="请输入布控人员" :remote-method="remoteMethod" :loading="loading" style="width: 240px">
<el-option v-for="item in opentions" :key="item.rySfzh" :label="item.ryXm" :value="item.rySfzh" />
</el-select>
</el-form-item>
<el-form-item label="性别">
<el-select clearable v-model="listQuery.xbdm" filterable placeholder="请选择性别" style="width: 240px">
<el-option v-for="item in D_BZ_XB" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="身份证查询">
<el-input v-model="listQuery.yjRysfzh" placeholder="请输入身份证号" style="width: 240px" />
</el-form-item>
<el-form-item label="时间筛选">
<el-date-picker v-model="listQuery.time" type="datetimerange" :shortcuts="shortcuts" range-separator="To"
start-placeholder="开始时间" end-placeholder="结束时间" value-format="YYYY-MM-DD HH:mm:ss"
format="YYYY-MM-DD HH:mm:ss" />
</el-form-item>
<el-form-item label="状态">
<el-select clearable v-model="listQuery.czzt" filterable placeholder="请选择状态" style="width: 240px">
<el-option v-for="item in D_GSXT_YJXX_CZZT" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="预警级别">
<el-select clearable v-model="listQuery.yjJb" filterable placeholder="请选择预警级别" style="width: 240px">
<el-option v-for="item in D_BZ_YJJB" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="身份证查询">
<el-input v-model="listQuery.yjRysfzh" placeholder="请输入身份证号" style="width: 240px" />
</el-form-item>
<el-form-item label="所属部门">
<MOSTY.Department clearable v-model="listQuery.ssbmdm" />
</el-form-item>
@ -113,7 +122,7 @@ import * as XLSX from "xlsx";
const { proxy } = getCurrentInstance();
const { D_GSXT_YJXX_CZZT, D_BZ_YJJB, D_BZ_YJLYXT, D_BZ_YJLY } = proxy.$dict("D_GSXT_YJXX_CZZT", "D_BZ_YJJB", "D_BZ_YJLYXT", "D_BZ_YJLY")
const { D_GSXT_YJXX_CZZT, D_BZ_YJJB, D_BZ_YJLYXT, D_BZ_YJLY, D_BZ_XB } = proxy.$dict("D_GSXT_YJXX_CZZT", "D_BZ_YJJB", "D_BZ_YJLYXT", "D_BZ_YJLY", "D_BZ_XB")
const searchBox = ref(); //搜索框
const shortcuts = [
{
@ -212,16 +221,14 @@ const onSearch = () => {
}
const loading = ref(false)
const remoteMethod = (query) => {
if (query) {
if (!query) return opentions.value = [];
loading.value = true
tbGsxtZdrySelectList({ ryXm: query }).then(res => {
opentions.value = res
}).finally(() => {
opentions.value = res || [];
loading.value = false;
}).catch(() => {
loading.value = false
})
} else {
opentions.value = []
}
}
const searchArr = ref()
const resetForm = (formEl) => {

View File

@ -52,16 +52,11 @@ const title = ref('线索总数')
onMounted(() => {
qbcjDpxsCount({}, '/mosty-gsxt/qbcj/dpxsCount').then(res => {
res = res || {}
let val = res || {}
// 根据API返回的数据更新contentItem
contentItem.value = [
{ label: '信息采集总数', value: res.cjzs || 0, type: 'cjzs' },
{ label: '线索总数', value: res.xszs || 0, type: 'xszs' },
{ label: '下发总数', value: res.xfzs || 0, type: 'xfzs' },
{ label: '已签收', value: res.yqss || 0, type: 'yqss' },
{ label: '未签收', value: res.wfkzs || 0, type: 'wqss' },
{ label: '已反馈', value: res.fkzs || 0, type: 'fkzs' },
]
contentItem.value.forEach(item => {
item.value = val[item.type] || 0
})
})
})