Compare commits

...

2 Commits

Author SHA1 Message Date
lcw
5b62d707ff lcw 2026-01-23 15:43:22 +08:00
lcw
47a7081963 lcw 2026-01-21 09:52:04 +08:00
77 changed files with 3439 additions and 943 deletions

View File

@ -203,3 +203,36 @@ export const xxcjXfxsSelectPage = (params) => {
params params
}) })
} }
// 线索研判列表
export const xxcjTjcll = (params) => {
return request({
url: api + `/xxcj/tjcll`,
method: "get",
params
})
}
// 送审
export const xxcjXxcjTjsh = (data) => {
return request({
url: api + `/xxcj/xxcjTjsh`,
method: "post",
data
})
}
// 审批列表
export const xxcjSelectDshPage = (params) => {
return request({
url: api + `/xxcj/selectDshPage`,
method: "get",
params
})
}
// 审批
export const xxcjXxcjSh = (data) => {
return request({
url: api + `/xxcj/xxcjSh`,
method: "post",
data
})
}

View File

@ -187,6 +187,14 @@ header {
border-radius: 4px; border-radius: 4px;
} }
.searchBoxlive {
// padding: 15px;
border-radius: 1px;
position: relative;
background: #fff;
border-radius: 4px;
}
.app-main { .app-main {
height: calc(100vh - 126px); height: calc(100vh - 126px);
position: relative; position: relative;
@ -256,6 +264,10 @@ header {
} }
} }
} }
.heightBox {
height: calc(100vh - 270px);
}
} }
::v-deep .el-card { ::v-deep .el-card {

View File

@ -282,6 +282,11 @@
display: block; display: block;
} }
// 外边距
.mt10 {
margin-top: 10px;
}
/**********字体大小和边距***********/ /**********字体大小和边距***********/
@for $i from 1 through 100 { @for $i from 1 through 100 {
.f#{$i} { .f#{$i} {

View File

@ -9,7 +9,7 @@
:action="actionUrl" :action="actionUrl"
:list-type="props.showBtn ? '' : 'picture-card'" :list-type="props.showBtn ? '' : 'picture-card'"
:file-list="fileList" :file-list="fileList"
show-file-list :show-file-list="showFileList"
:before-remove="beforeRemove" :before-remove="beforeRemove"
:on-exceed="handleExceed" :on-exceed="handleExceed"
:on-success="handlerSuccess" :on-success="handlerSuccess"
@ -82,6 +82,10 @@ const props = defineProps({
isAll: { isAll: {
type: Boolean, type: Boolean,
default: true //所有类型都可以用这个接口接口返回的是id default: true //所有类型都可以用这个接口接口返回的是id
},
showFileList: {
type: Boolean,
default: true
} }
}); });
const emits = defineEmits(["update:modelValue"]); const emits = defineEmits(["update:modelValue"]);
@ -102,9 +106,10 @@ watch(() => props.modelValue,(val) => {
// 确保file.url始终是字符串URL // 确保file.url始终是字符串URL
const fileUrl = props.isAll ? `/mosty-api/mosty-base/minio/image/download/` + el.id : el.url; const fileUrl = props.isAll ? `/mosty-api/mosty-base/minio/image/download/` + el.id : el.url;
return { return {
...el,
url: String(fileUrl || ''), url: String(fileUrl || ''),
name: el.name || '', name: el.name || '',
id: el
}; };
} else { } else {
return { return {
@ -113,6 +118,8 @@ watch(() => props.modelValue,(val) => {
}; };
} }
}); });
console.log(fileList.value, "fileList.value");
},{ immediate: true,deep:true }); },{ immediate: true,deep:true });
const actionUrl = computed(() => { const actionUrl = computed(() => {
@ -173,8 +180,16 @@ const handlerSuccess = (res, file) => {
let arr = [] let arr = []
if(props.isImg){ if(props.isImg){
arr = fileList.value.map((el) => el.id) arr = fileList.value.map((el) => el.id)
}else{ } else {
arr = fileList.value.map((el) => ({ id:el.id, name:el.name})) console.log(fileList,"测试");
arr = fileList.value.map((el) => {
console.log(el,'xunhuan');
return {
id: el.id, name: el.name
}
})
console.log(arr,"测试2222");
} }
emits("update:modelValue", arr); emits("update:modelValue", arr);
}; };

View File

@ -8,6 +8,8 @@
:stripe="getConfiger.stripe" :height="tableHeight" v-loading="tableConfiger.loading" :lazy="getConfiger.lazy" :stripe="getConfiger.stripe" :height="tableHeight" v-loading="tableConfiger.loading" :lazy="getConfiger.lazy"
:load="load" :tree-props="treePros" style="width: 100%" :header-cell-class-name="() => 'HeadBgColor'" :load="load" :tree-props="treePros" style="width: 100%" :header-cell-class-name="() => 'HeadBgColor'"
:highlight-current-row="getConfiger.showSelectType === 'radio'" :highlight-current-row="getConfiger.showSelectType === 'radio'"
@row-click="handleRowClick"
@cell-click="handleCellClick"
:row-style="(row, index) => getRowStyle(row, index)" :row-style="(row, index) => getRowStyle(row, index)"
:row-class-name="(row, index) => getRowClassName(row, index)"> :row-class-name="(row, index) => getRowClassName(row, index)">
@ -95,7 +97,7 @@ const props = defineProps({
} }
}); });
// 可选的时候选择的数据 // 可选的时候选择的数据
const emit = defineEmits(["chooseData"]); const emit = defineEmits(["chooseData","handleRowClick","handleCellClick"]);
const multipleTableRef = ref(); const multipleTableRef = ref();
const currentRow = ref(); const currentRow = ref();
let getConfiger = reactive({ let getConfiger = reactive({
@ -157,7 +159,6 @@ const load = (date, treeNode, resolve) => {
const getRowStyle = (row, index) => { const getRowStyle = (row, index) => {
// 基础行高样式 // 基础行高样式
const baseStyle = { height: getConfiger.rowHeight === 'auto' ? getConfiger.rowHeight : getConfiger.rowHeight + 'px' }; const baseStyle = { height: getConfiger.rowHeight === 'auto' ? getConfiger.rowHeight : getConfiger.rowHeight + 'px' };
// 如果有自定义行样式函数,合并样式 // 如果有自定义行样式函数,合并样式
if (props.rowStyle) { if (props.rowStyle) {
const customStyle = props.rowStyle(row, index); const customStyle = props.rowStyle(row, index);
@ -193,6 +194,13 @@ function setDefaultChoose() {
} }
}); });
} }
// 点击某行
const handleRowClick = (row) => {
emit("handleRowClick", row);
}
const handleCellClick = (row,column,event,cell) => {
emit("handleCellClick", {row,column,event,cell});
}
</script> </script>
<style lang="scss"></style> <style lang="scss"></style>

View File

@ -1,11 +1,11 @@
<template> <template>
<div class="pageTitle" :style="`margin-bottom: ${marginBottom}px;background-color: ${backgroundColor}`"> <div class="pageTitle" :style="`margin-bottom: ${marginBottom}px;margin-top: ${marginTop}px;background-color: ${backgroundColor};height: ${height}px;`">
<div class="title"> <div class="title">
<ul class="flex" v-if="Array.isArray(title)"> <ul class="flex" v-if="Array.isArray(title)">
<li :class=" idx == active ? 'hedBtn':''" @click="handleBtn(it,idx)" class="pointer ml10 mr10" v-for="(it,idx) in title" :key="it">{{ it }}</li> <li :class=" idx == active ? 'hedBtn':''" @click="handleBtn(it,idx)" class="pointer ml10 mr10" v-for="(it,idx) in title" :key="it">{{ it }}</li>
</ul> </ul>
<div class="font" v-else>{{ title }}</div> <div class="font" v-else>{{ title }}</div>
<div class="ml30"> <div :style="`margin-left: ${ malginLeft==0?30:malginLeft}px`">
<slot name="left"></slot> <slot name="left"></slot>
</div> </div>
</div> </div>
@ -28,15 +28,28 @@ defineProps({
marginBottom: { marginBottom: {
type: Number, type: Number,
default: 0 default: 0
},
malginLeft: {
type: Number,
default: 0
}, },
active: { active: {
type: Number, type: Number,
default: 0 default: 0
}, },
marginTop: {
type: Number,
default: 0
},
backgroundColor: { backgroundColor: {
type: String, type: String,
default: "rgb(255, 255, 255, 0)" default: "rgb(255, 255, 255, 0)"
},
height: {
type: Number,
default: 52
} }
}); });
const emit = defineEmits(["update:active","change"]); const emit = defineEmits(["update:active","change"]);
@ -55,7 +68,7 @@ const handleBtn = (it, idx) => {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
min-height: 52px; min-height: 30px;
.title { .title {
display: flex; display: flex;
margin: auto 0; margin: auto 0;

View File

@ -169,7 +169,7 @@ const props = defineProps({
}, },
marginBottom: { marginBottom: {
type: Number, type: Number,
default: 15 default: 0
}, },
backgroundColor: { backgroundColor: {
type: String, type: String,

View File

@ -155,31 +155,42 @@ export const publicRoutes = [
// component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/warningBk/index"), // component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/warningBk/index"),
// }, // },
{ {
path: "/fouColorWarning", path: "/YjData",
name: "fouColorWarning", name: "YjData",
meta: { title: "预警数据整合", icon: "article-create" }, meta: { title: "预警", icon: "article-create" },
component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/fouColorWarning/index"), component: () => import("@/views/backOfficeSystem/fourColorManage/YjData/index.vue"),
}, },
// {
// path: "/fouColorWarning",
// name: "fouColorWarning",
// meta: { title: "预警数据整合", icon: "article-create" },
// component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/fouColorWarning/index"),
// },
// {
// path: "/sevenWarning",
// name: "sevenWarning",
// meta: { title: "七类重点人员", icon: "article" },
// component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/sevenWarning/index.vue"),
// },
// {
// path: "/identityWarning",
// name: "identityWarning",
// meta: { title: "身份预警", icon: "article-create" },
// component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/identityWarning/index"),
// },
{ // {
path: "/identityWarning", // path: "/behaviorWarning",
name: "identityWarning", // name: "behaviorWarning",
meta: { title: "身份预警", icon: "article-create" }, // meta: { title: "行为预警", icon: "article-create" },
component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/identityWarning/index"), // component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/behaviorWarning/index"),
}, // },
// {
{ // path: "/combinedWarning",
path: "/behaviorWarning", // name: "combinedWarning",
name: "behaviorWarning", // meta: { title: "组合预警", icon: "article-create" },
meta: { title: "行为预警", icon: "article-create" }, // component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/combinedWarning/index"),
component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/behaviorWarning/index"), // },
},
{
path: "/combinedWarning",
name: "combinedWarning",
meta: { title: "组合预警", icon: "article-create" },
component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/combinedWarning/index"),
},
// { // {
// path: "/warningList", // path: "/warningList",
// name: "warningList", // name: "warningList",
@ -189,37 +200,37 @@ export const publicRoutes = [
// icon: "article-create" // icon: "article-create"
// } // }
// }, // },
{ // {
path: "/portraitWarning", // path: "/portraitWarning",
name: "portraitWarning", // name: "portraitWarning",
component: () => import("@/views/backOfficeSystem/fourColorManage/warningList/portraitWarning/index"), // component: () => import("@/views/backOfficeSystem/fourColorManage/warningList/portraitWarning/index"),
meta: { // meta: {
title: "人像预警", // title: "人像预警",
icon: "article-create" // icon: "article-create"
} // }
}, // },
{ // {
path: "/vehicleWarning", // path: "/vehicleWarning",
name: "vehicleWarning", // name: "vehicleWarning",
component: () => import("@/views/backOfficeSystem/fourColorManage/warningList/vehicleWarning/index"), // component: () => import("@/views/backOfficeSystem/fourColorManage/warningList/vehicleWarning/index"),
meta: { // meta: {
title: "车辆预警", // title: "车辆预警",
icon: "article-create" // icon: "article-create"
} // }
}, // },
{ // {
path: "/controlWarning", // path: "/controlWarning",
name: "controlWarning", // name: "controlWarning",
meta: { title: "布控预警", icon: "article-create" }, // meta: { title: "布控预警", icon: "article-create" },
component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/controlWarning/index"), // component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/controlWarning/index"),
}, // },
{ // {
path: "/regionalControl", // path: "/regionalControl",
name: "regionalControl", // name: "regionalControl",
meta: { title: "区域布控预警", icon: "article-create" }, // meta: { title: "区域布控预警", icon: "article-create" },
component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/regionalControl/index"), // component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/regionalControl/index"),
}, // },
// { // {
// path: "/fouColorWarning", // path: "/fouColorWarning",
// name: "fouColorWarning", // name: "fouColorWarning",
@ -232,16 +243,11 @@ export const publicRoutes = [
meta: { title: "积分排名", icon: "article-create" }, meta: { title: "积分排名", icon: "article-create" },
component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/scoreRanking/index"), component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/scoreRanking/index"),
}, },
{
path: "/sevenWarning",
name: "sevenWarning",
meta: { title: "七类重点人员", icon: "article" },
component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/sevenWarning/index.vue"),
},
{ {
path: "/sevenWarningFail", path: "/sevenWarningFail",
name: "sevenWarningFail", name: "sevenWarningFail",
meta: { title: "报错", icon: "article" }, meta: { title: "报错列表", icon: "article" },
component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/sevenWarningFail/index.vue"), component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/sevenWarningFail/index.vue"),
}, },
// { // {
@ -339,11 +345,17 @@ export const publicRoutes = [
component: () => import("@/views/backOfficeSystem/HumanIntelligence/listView/index"), component: () => import("@/views/backOfficeSystem/HumanIntelligence/listView/index"),
meta: { title: "共享列表", icon: "article-create", qbjbList: '01' }, meta: { title: "共享列表", icon: "article-create", qbjbList: '01' },
}, { }, {
path: "/socialInformationCrculated", path: "/auditList",
name: "changeTheClue", name: "auditList",
component: () => import("@/views/backOfficeSystem/HumanIntelligence/FollowLeads/index"), component: () => import("@/views/backOfficeSystem/HumanIntelligence/auditList/index"),
meta: { title: "转线索列表", icon: "article-create" }, meta: { title: "审批列表", icon: "article-create" },
}, },
// {
// path: "/socialInformationCrculated",
// name: "changeTheClue",
// component: () => import("@/views/backOfficeSystem/HumanIntelligence/FollowLeads/index"),
// meta: { title: "转线索列表", icon: "article-create" },
// },
{ {
path: "/socialInformationCrculatec", path: "/socialInformationCrculatec",
name: "recombinantSynthesis", name: "recombinantSynthesis",
@ -411,13 +423,13 @@ export const publicRoutes = [
name: "ResearchJudgment", name: "ResearchJudgment",
meta: { title: "线索落核盯办", icon: "article-ranking" }, meta: { title: "线索落核盯办", icon: "article-ranking" },
children: [ children: [
{ {
path: "/socialInformationCrculated", path: "/socialInformationCrculated",
name: "changeTheClue", name: "changeTheClue",
component: () => import("@/views/backOfficeSystem/HumanIntelligence/FollowLeads/index"), component: () => import("@/views/backOfficeSystem/HumanIntelligence/FollowLeads/index"),
meta: { title: "线索列表", icon: "article" }, meta: { title: "线索列表", icon: "article" },
}, },
{ {
path: "/lamXs", path: "/lamXs",
name: "lamXs", name: "lamXs",
component: () => import("@/views/backOfficeSystem/HumanIntelligence/lamXs/index"), component: () => import("@/views/backOfficeSystem/HumanIntelligence/lamXs/index"),
@ -459,50 +471,7 @@ export const publicRoutes = [
] ]
}, },
{
path: "/ExcavationResearch",
name: "ExcavationResearch",
meta: { title: "重点人发掘", icon: "article-ranking" },
children: [
{
path: "/PreliminaryExcavations",
name: "PreliminaryExcavations",
component: () =>
import(
"@/views/backOfficeSystem/ExcavationResearch/PreliminaryExcavations/index"
),
meta: {
title: "重点人员初步发掘",
icon: "article-create"
}
},
{
path: "/ZdryFjyp",
name: "ZdryFjyp",
component: () =>
import(
"@/views/backOfficeSystem/ExcavationResearch/ZdryFjyp/index"
),
meta: {
title: "重点人员深度发掘",
icon: "article-create"
}
},
{
path: "/LandingAudit",
name: "LandingAudit",
component: () =>
import(
"@/views/backOfficeSystem/ExcavationResearch/LandingAudit/index"
),
meta: {
title: "重点人员落地审核",
icon: "article-create"
}
},
]
},
{ {
path: "/JudgmentHome", path: "/JudgmentHome",
name: "JudgmentHome", name: "JudgmentHome",
@ -676,62 +645,76 @@ export const publicRoutes = [
meta: { title: "数据应用", icon: "article-ranking" }, meta: { title: "数据应用", icon: "article-ranking" },
children: [ children: [
{ {
path: "/IntegralCoefficient", path: "/Cspz",
name: "IntegralCoefficient", name: "Cspz",
component: () => component: () =>
import( import(
"@/views/backOfficeSystem/fourColorManage/IntegralCoefficient/index" "@/views/backOfficeSystem/fourColorManage/Cspz/index"
), ),
meta: { meta: {
title: "积分系数配置", title: "数配置",
icon: "article-create" icon: "article-create"
} }
}, },
{ // {
path: "/IdentityManage", // path: "/IntegralCoefficient",
name: "IdentityManage", // name: "IntegralCoefficient",
component: () => // component: () =>
import( // import(
"@/views/backOfficeSystem/fourColorManage/IdentityManage/index" // "@/views/backOfficeSystem/fourColorManage/IntegralCoefficient/index"
), // ),
meta: { // meta: {
title: "身份标签管理", // title: "积分系数配置",
icon: "article-create" // icon: "article-create"
} // }
}, // },
{
path: "/BehaviorLabels", // {
name: "BehaviorLabels", // path: "/IdentityManage",
component: () => // name: "IdentityManage",
import( // component: () =>
"@/views/backOfficeSystem/fourColorManage/BehaviorLabels/index" // import(
), // "@/views/backOfficeSystem/fourColorManage/IdentityManage/index"
meta: { // ),
title: "行为标签管理", // meta: {
icon: "article-create" // title: "身份标签管理",
} // icon: "article-create"
}, // }
{ // },
path: "/tagManage", // {
name: "tagManage", // path: "/BehaviorLabels",
component: () => // name: "BehaviorLabels",
import( // component: () =>
"@/views/backOfficeSystem/fourColorManage/tagManage/index" // import(
), // "@/views/backOfficeSystem/fourColorManage/BehaviorLabels/index"
meta: { // ),
title: "标签组合管理", // meta: {
icon: "article-create" // title: "行为标签管理",
} // icon: "article-create"
}, { // }
path: "/tsypHome", // },
name: "tsypHome", // {
component: () => import("@/views/backOfficeSystem/JudgmentHome/tsypHome/index"), // path: "/tagManage",
meta: { // name: "tagManage",
title: "模型管理", // component: () =>
icon: "article-create" // import(
} // "@/views/backOfficeSystem/fourColorManage/tagManage/index"
}, // ),
// meta: {
// title: "标签组合管理",
// icon: "article-create"
// }
// },
// {
// path: "/tsypHome",
// name: "tsypHome",
// component: () => import("@/views/backOfficeSystem/JudgmentHome/tsypHome/index"),
// meta: {
// title: "模型管理",
// icon: "article-create"
// }
// },
{ {
path: "/JobAppraisal", path: "/JobAppraisal",
@ -743,23 +726,32 @@ export const publicRoutes = [
} }
}, },
{ {
path: "/fileTransfer", path: "/FileData",
name: "fileTransfer", name: "FileData",
component: () => import("@/views/backOfficeSystem/HumanIntelligence/fileTransfer/index"), component: () => import("@/views/backOfficeSystem/HumanIntelligence/FileData/index"),
meta: { meta: {
title: "文件中转", title: "文件中转",
icon: "article-create" icon: "article-create"
} }
}, },
{ // {
path: "/fileOrientation", // path: "/fileTransfer",
name: "fileOrientation", // name: "fileTransfer",
component: () => import("@/views/backOfficeSystem/HumanIntelligence/fileOrientation/index"), // component: () => import("@/views/backOfficeSystem/HumanIntelligence/fileTransfer/index"),
meta: { // meta: {
title: "文件定向传输", // title: "文件中转",
icon: "article-create" // icon: "article-create"
} // }
}, // },
// {
// path: "/fileOrientation",
// name: "fileOrientation",
// component: () => import("@/views/backOfficeSystem/HumanIntelligence/fileOrientation/index"),
// meta: {
// title: "点对点",
// icon: "article-create"
// }
// },
{ {
path: "/ssemanticAnalysis", path: "/ssemanticAnalysis",
name: "semanticAnalysis", name: "semanticAnalysis",
@ -786,7 +778,31 @@ export const publicRoutes = [
title: "操作记录", title: "操作记录",
icon: "article-create" icon: "article-create"
} }
} }, {
path: "/dataMonitor",
name: "dataMonitor",
meta: { title: "数据监控", icon: "article-ranking" },
children: [
{
path: "/resourceMonitoring",
name: "resourceMonitoring",
component: () => import("@/views/backOfficeSystem/dataMonitor/resourceMonitoring/index.vue"),
meta: {
title: "数据资源检测",
icon: "article-create"
}
},
{
path: "/onlineUserMonitoring",
name: "onlineUserMonitoring",
component: () => import("@/views/backOfficeSystem/dataMonitor/onlineUserMonitoring/index.vue"),
meta: {
title: "在线用户监控",
icon: "article-create"
}
}
]
},
] ]
}, },
// { // {
@ -834,31 +850,7 @@ export const publicRoutes = [
icon: "article-ranking" icon: "article-ranking"
} }
}, },
{
path: "/dataMonitor",
name: "dataMonitor",
meta: { title: "数据监控", icon: "article-ranking" },
children: [
{
path: "/resourceMonitoring",
name: "resourceMonitoring",
component: () => import("@/views/backOfficeSystem/dataMonitor/resourceMonitoring/index.vue"),
meta: {
title: "数据资源检测",
icon: "article-create"
}
},
{
path: "/onlineUserMonitoring",
name: "onlineUserMonitoring",
component: () => import("@/views/backOfficeSystem/dataMonitor/onlineUserMonitoring/index.vue"),
meta: {
title: "在线用户监控",
icon: "article-create"
}
}
]
},
{ {
path: "/systemConfig", path: "/systemConfig",
// component: layout, // component: layout,
@ -992,7 +984,7 @@ export const publicRoutes = [
icon: "article" icon: "article"
} }
}, },
{ {
path: "/IntelligenceManagement", path: "/IntelligenceManagement",
name: "IntelligenceManagement", name: "IntelligenceManagement",
component: () => import("@/views/backOfficeSystem/ResearchJudgment/IntelligenceManagement/index"), component: () => import("@/views/backOfficeSystem/ResearchJudgment/IntelligenceManagement/index"),
@ -1079,6 +1071,50 @@ export const publicRoutes = [
icon: "article-create" icon: "article-create"
} }
}, },
{
path: "/ExcavationResearch",
name: "ExcavationResearch",
meta: { title: "重点人发掘", icon: "article-ranking" },
children: [
{
path: "/PreliminaryExcavations",
name: "PreliminaryExcavations",
component: () =>
import(
"@/views/backOfficeSystem/ExcavationResearch/PreliminaryExcavations/index"
),
meta: {
title: "重点人员初步发掘",
icon: "article-create"
}
},
{
path: "/ZdryFjyp",
name: "ZdryFjyp",
component: () =>
import(
"@/views/backOfficeSystem/ExcavationResearch/ZdryFjyp/index"
),
meta: {
title: "重点人员深度发掘",
icon: "article-create"
}
},
{
path: "/LandingAudit",
name: "LandingAudit",
component: () =>
import(
"@/views/backOfficeSystem/ExcavationResearch/LandingAudit/index"
),
meta: {
title: "重点人员落地审核",
icon: "article-create"
}
},
]
},
// { // {
// path: "/ResearchHome", // path: "/ResearchHome",
// name: "ResearchHome", // name: "ResearchHome",

View File

@ -13,6 +13,13 @@ const getChildrenRoutes = (routes) => {
// 在这个条件分支中也需要过滤掉/internalAuditor路由 // 在这个条件分支中也需要过滤掉/internalAuditor路由
result.push(...route.children); result.push(...route.children);
} else { } else {
if (route.path == '/HumanIntelligence') {
route.children.splice(route.children.findIndex(item => item.path == '/auditList'), 1)
result.push(...route.children);
} else {
result.push(...route.children);
}
if (route.path == '/JudgmentHome') { if (route.path == '/JudgmentHome') {
route.children.splice(route.children.findIndex(item => item.path == '/internalAuditor'), 1) route.children.splice(route.children.findIndex(item => item.path == '/internalAuditor'), 1)
result.push(...route.children); result.push(...route.children);
@ -37,9 +44,7 @@ export const filterRoutes = (routes) => {
return !childrenRoutes.find((childrenRoute) => { return !childrenRoutes.find((childrenRoute) => {
return childrenRoute.path === route.path; return childrenRoute.path === route.path;
}); });
}).filter(item => item.path != '/internalAuditor') }).filter(item => item.path != '/internalAuditor' && item.path != '/auditList')
console.log(childrenRoutes);
return data return data
}; };

View File

@ -1,12 +1,10 @@
<template> <template>
<div> <div>
<div class="titleBox"> <PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
<PageTitle title="基础库">
<template #left> <template #left>
<el-button v-for="(el,index) in tabBtn" :type="tabActive==index?'primary':''" @click="tabActive=index" :key="el">{{ el }}</el-button> <el-button size="small" v-for="(el,index) in tabBtn" :type="tabActive==index?'primary':''" @click="tabActive=index" :key="el">{{ el }}</el-button>
</template> </template>
</PageTitle> </PageTitle>
</div>
<ZdrPage v-if="tabActive==0" /> <ZdrPage v-if="tabActive==0" />
<ZdqtPage v-else-if="tabActive==1" /> <ZdqtPage v-else-if="tabActive==1" />
<ZdclPage v-else-if="tabActive==2" /> <ZdclPage v-else-if="tabActive==2" />

View File

@ -1,7 +1,12 @@
<template> <template>
<div> <div>
<div class="titleBox">
<PageTitle title="重点车辆管理"> <!-- 搜索 -->
<div ref="searchBox" class="mt10">
<Search :searchArr="searchConfiger" @submit="onSearch" />
</div>
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
<template #left>
<!-- <el-popover placement="bottom" :visible="visible" :width="400" trigger="click"> <!-- <el-popover placement="bottom" :visible="visible" :width="400" trigger="click">
<template #reference> <template #reference>
<el-button type="primary" @click="(visible = !visible), (visiblefp = false)" size="small">布控申请</el-button> <el-button type="primary" @click="(visible = !visible), (visiblefp = false)" size="small">布控申请</el-button>
@ -28,12 +33,8 @@
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon> <el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
<span style="vertical-align: middle">新增</span> <span style="vertical-align: middle">新增</span>
</el-button> </el-button>
</template>
</PageTitle> </PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" />
</div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox"> <div class="tabBox">
<MyTable <MyTable

View File

@ -1,7 +1,12 @@
<template> <template>
<div> <div>
<div class="titleBox">
<PageTitle title="重点群体管理"> <!-- 搜索 -->
<div ref="searchBox" class="mt10">
<Search :searchArr="searchConfiger" @submit="onSearch" />
</div>
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
<template #left>
<!-- <el-popover placement="bottom" :visible="visible" :width="400" trigger="click"> <!-- <el-popover placement="bottom" :visible="visible" :width="400" trigger="click">
<template #reference> <template #reference>
<el-button type="primary" @click="(visible = !visible), (visiblefp = false)" size="small">布控申请 <el-button type="primary" @click="(visible = !visible), (visiblefp = false)" size="small">布控申请
@ -33,12 +38,8 @@
</el-icon> </el-icon>
<span style="vertical-align: middle">新增</span> <span style="vertical-align: middle">新增</span>
</el-button> </el-button>
</template>
</PageTitle> </PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" />
</div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox"> <div class="tabBox">
<MyTable <MyTable

View File

@ -1,7 +1,12 @@
<template> <template>
<div> <div>
<div class="titleBox">
<PageTitle title="重点群体管理"> <!-- 搜索 -->
<div ref="searchBox" class="mt10">
<Search :searchArr="searchConfiger" @submit="onSearch" />
</div>
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
<template #left>
<!-- <el-popover placement="bottom" :visible="visible" :width="400" trigger="click"> <!-- <el-popover placement="bottom" :visible="visible" :width="400" trigger="click">
<template #reference> <template #reference>
<el-button type="primary" @click="(visible = !visible), (visiblefp = false)" size="small">布控申请 <el-button type="primary" @click="(visible = !visible), (visiblefp = false)" size="small">布控申请
@ -34,12 +39,8 @@
</el-icon> </el-icon>
<span style="vertical-align: middle">新增</span> <span style="vertical-align: middle">新增</span>
</el-button> </el-button>
</template>
</PageTitle> </PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" />
</div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox"> <div class="tabBox">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight" <MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"

View File

@ -1,7 +1,12 @@
<template> <template>
<div> <div>
<div class="titleBox">
<PageTitle title="重点群体审核"> <!-- 搜索 -->
<div ref="searchBox" class="mt10">
<Search :searchArr="searchConfiger" @submit="onSearch" />
</div>
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
<template #left>
<!-- <el-popover placement="bottom" :visible="visible" :width="400" trigger="click"> <!-- <el-popover placement="bottom" :visible="visible" :width="400" trigger="click">
<template #reference> <template #reference>
<el-button type="primary" @click="(visible = !visible), (visiblefp = false)" size="small">布控申请 <el-button type="primary" @click="(visible = !visible), (visiblefp = false)" size="small">布控申请
@ -31,12 +36,8 @@
</el-icon> </el-icon>
<span style="vertical-align: middle">新增</span> <span style="vertical-align: middle">新增</span>
</el-button> </el-button>
</template>
</PageTitle> </PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" />
</div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox"> <div class="tabBox">
<MyTable <MyTable

View File

@ -1,7 +1,11 @@
<template> <template>
<div> <div>
<div class="titleBox"> <!-- 搜索 -->
<PageTitle title="重点人管理"> <div ref="searchBox" class="mt10">
<Search :searchArr="searchConfiger" @submit="onSearch" />
</div>
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
<template #left>
<!-- <el-popover placement="bottom" :visible="visible" :width="400" trigger="click"> <!-- <el-popover placement="bottom" :visible="visible" :width="400" trigger="click">
<template #reference> <template #reference>
<el-button type="primary" @click="(visible = !visible), (visiblefp = false)" size="small">布控申请</el-button> <el-button type="primary" @click="(visible = !visible), (visiblefp = false)" size="small">布控申请</el-button>
@ -32,12 +36,8 @@
</el-icon> </el-icon>
<span style="vertical-align: middle">新增</span> <span style="vertical-align: middle">新增</span>
</el-button> </el-button>
</template>
</PageTitle> </PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" />
</div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox"> <div class="tabBox">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight" <MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"

View File

@ -1,7 +1,7 @@
<template> <template>
<div> <div>
<div class="titleBox"> <!-- <div class="titleBox">
<PageTitle title="重点人审批"> <PageTitle title="重点人审批"> -->
<!-- <el-popover placement="bottom" :visible="visible" :width="400" trigger="click"> <!-- <el-popover placement="bottom" :visible="visible" :width="400" trigger="click">
<template #reference> <template #reference>
<el-button type="primary" @click="(visible = !visible), (visiblefp = false)" size="small">布控申请</el-button> <el-button type="primary" @click="(visible = !visible), (visiblefp = false)" size="small">布控申请</el-button>
@ -24,14 +24,14 @@
</el-popover> </el-popover>
<el-button size="small" type="primary" @click="handleZxs">转线索</el-button> <el-button size="small" type="primary" @click="handleZxs">转线索</el-button>
<el-button size="small" type="primary" @click="handleMove">移交管控</el-button> --> <el-button size="small" type="primary" @click="handleMove">移交管控</el-button> -->
</PageTitle> <!-- </PageTitle>
</div> </div> -->
<!-- 搜索 --> <!-- 搜索 -->
<div ref="searchBox"> <div ref="searchBox" class="mt10 mb10">
<Search :searchArr="searchConfiger" @submit="onSearch" /> <Search :searchArr="searchConfiger" @submit="onSearch" />
</div> </div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox"> <div class="tabBox heightBox">
<MyTable <MyTable
:tableData="pageData.tableData" :tableData="pageData.tableData"
:tableColumn="pageData.tableColumn" :tableColumn="pageData.tableColumn"
@ -383,7 +383,7 @@ const addEdit = (type, row) => {
// 表格高度计算 // 表格高度计算
const tabHeightFn = () => { const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250; pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 200;
window.onresize = function () { window.onresize = function () {
tabHeightFn(); tabHeightFn();
}; };

View File

@ -1,14 +1,11 @@
<template> <template>
<div> <div>
<div class="titleBox">
<PageTitle title="重点人员深度发掘"></PageTitle>
</div>
<!-- 搜索 --> <!-- 搜索 -->
<div ref="searchBox"> <div ref="searchBox" class="mt10 mb10">
<Search :searchArr="searchConfiger" @submit="onSearch" /> <Search :searchArr="searchConfiger" @submit="onSearch" />
</div> </div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox"> <div class="tabBox heightBox">
<MyTable <MyTable
:tableData="pageData.tableData" :tableData="pageData.tableData"
:tableColumn="pageData.tableColumn" :tableColumn="pageData.tableColumn"
@ -192,7 +189,7 @@ const handleDetail = (val,type) =>{
} }
// 表格高度计算 // 表格高度计算
const tabHeightFn = () => { const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250; pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 200;
window.onresize = function () { window.onresize = function () {
tabHeightFn(); tabHeightFn();
}; };

View File

@ -122,7 +122,8 @@ const searchConfiger = ref([
} }
]); ]);
const active = ref(''); const active = ref('');
const btnsList = reactive(["级别变更","警种变更","指定分配","添加标签","导出","批量删除"]); // "级别变更","警种变更","指定分配","添加标签",
const btnsList = reactive(["导出","批量删除"]);
const chooselx = ref(""); const chooselx = ref("");
const ids = ref([]); const ids = ref([]);
const addFormDiloag = ref(); const addFormDiloag = ref();

View File

@ -1,15 +1,12 @@
<template> <template>
<div> <div>
<div class="titleBox">
<PageTitle title="转合成">
</PageTitle>
</div>
<!-- 搜索 --> <!-- 搜索 -->
<div ref="searchBox"> <div ref="searchBox" class="mt10 mb10">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" /> <Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" />
</div> </div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox"> <div class="tabBox heightBox">
<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"
@chooseData="chooseData"> @chooseData="chooseData">
@ -125,7 +122,7 @@ const getList = () => {
// 表格高度计算 // 表格高度计算
const tabHeightFn = () => { const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250; pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight -200
window.onresize = function () { window.onresize = function () {
tabHeightFn(); tabHeightFn();
}; };

View File

@ -0,0 +1,23 @@
<template>
<div>
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
<template #left>
<el-button :type="qh ? 'primary' : 'default'" @click="add(true)" size="small">文件中转</el-button>
<el-button :type="qh ? 'default' : 'primary'" @click="add(false)" size="small">点对点</el-button>
</template>
</PageTitle>
<FileTransfer v-if="qh" />
<FileOrientation v-else />
</div>
</template>
<script setup>
import PageTitle from "@/components/aboutTable/PageTitle.vue";
import FileTransfer from "@/views/backOfficeSystem/HumanIntelligence/fileTransfer/index.vue"
import FileOrientation from "@/views/backOfficeSystem/HumanIntelligence/fileOrientation/index.vue"
import { ref } from "vue";
const qh = ref(true)
const add = (flag) => {
qh.value = flag
}
</script>

View File

@ -1,15 +1,11 @@
<template> <template>
<div> <div>
<div class="titleBox">
<PageTitle title="转线索">
</PageTitle>
</div>
<!-- 搜索 --> <!-- 搜索 -->
<div ref="searchBox"> <div ref="searchBox" class="mt10 mb10">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" /> <Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" />
</div> </div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox"> <div class="tabBox heightBox">
<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"
@chooseData="chooseData"> @chooseData="chooseData">
@ -145,7 +141,7 @@ const getList = () => {
// 表格高度计算 // 表格高度计算
const tabHeightFn = () => { const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250; pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 200;
window.onresize = function () { window.onresize = function () {
tabHeightFn(); tabHeightFn();
}; };

View File

@ -1,17 +1,17 @@
<template> <template>
<div> <div>
<div class="titleBox"> <!-- 搜索 -->
<PageTitle title="工作考核"> <div ref="searchBox" class="mt10">
<el-button type="primary" @click="addEdit('add', '')"> <Search :searchArr="searchConfiger" @submit="onSearch" />
</div>
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
<template #left>
<el-button size="small" type="primary" @click="addEdit('add', '')">
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon> <el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
<span style="vertical-align: middle">新增</span> <span style="vertical-align: middle">新增</span>
</el-button> </el-button>
</template>
</PageTitle> </PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" />
</div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox"> <div class="tabBox">
<MyTable <MyTable

View File

@ -152,9 +152,7 @@ watch(() => D_BZ_BQJB, val => {
{ label: "情报类型", prop: 'qblx', placeholder: "请选择情报类型", showType: "select", options: D_GS_XS_LX }, { label: "情报类型", prop: 'qblx', placeholder: "请选择情报类型", showType: "select", options: D_GS_XS_LX },
{ label: "情报来源", prop: 'cjLx', placeholder: "请选择情报来源", showType: "select", options: D_BZ_CJLX }, { label: "情报来源", prop: 'cjLx', placeholder: "请选择情报来源", showType: "select", options: D_BZ_CJLX },
{ label: "情报处置状态", prop: 'czzt', placeholder: "请选择处置状态", showType: "select", options: D_BZ_QBCZZT }, { label: "情报处置状态", prop: 'czzt', placeholder: "请选择处置状态", showType: "select", options: D_BZ_QBCZZT },
{ {label: "标签级别", prop: 'qbjbList', placeholder: "请选择标签", showType: "select", options: list.value},
label: "标签级别", prop: 'qbjbList', placeholder: "请选择标签", showType: "select", options: list.value
},
{ label: "来源单位", prop: 'ssbmdm', placeholder: "请选择来源单位", showType: "department" }, { label: "来源单位", prop: 'ssbmdm', placeholder: "请选择来源单位", showType: "department" },
{ label: "关键字", prop: 'keyword', placeholder: "请输入关键字", showType: "input" }, { label: "关键字", prop: 'keyword', placeholder: "请输入关键字", showType: "input" },
] ]

View File

@ -0,0 +1,726 @@
<template>
<div class="dialog" v-if="dialogForm">
<div class="head_box">
<span class="title">{{ title }}</span>
<div>
<el-button @click="submitForm()" type="primary" v-if="!disabled">保存</el-button>
<el-button @click="close">关闭</el-button>
</div>
</div>
<div class="form-container">
<div class="form-content" v-loading="loading">
<!-- <div class="form_cnt"> -->
<FormMessage :disabled="disabled" v-model="listQuery" :formList="formData" ref="elform" :rules="rules">
<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>
</div>
</template>
<template #shzt>
<div v-if="disabled">
<h3 class="tags-title">审核状态</h3>
<div style="display: flex;justify-content:space-between;width: 200%;">
<div style="display: flex;">
市审核状态<DictTag v-model:value="listQuery.sldshzt" :options="dict.D_BZ_SSSHZT" :tag="false" />
</div>
<div style="display: flex;">
县审核状态<DictTag v-model:value="listQuery.xldshzt" :options="dict.D_BZ_SSSHZT" :tag="false" />
</div>
</div>
</div>
</template>
</FormMessage>
<!-- </div> -->
<div class="tags-section" v-if="disabled">
<h3 class="tags-title">关注部门</h3>
<div class="tags-container">
<div v-for="(tag, index) in listQuery.gzbmList" :key="tag.id || index" class="tag-item">
<div class="tag-content">
{{ tag.ssbm }}
</div>
</div>
<span v-if="!listQuery.gzbmList || listQuery.gzbmList.length === 0" class="no-tags">
暂无标签
</span>
</div>
</div>
<div class="tags-section" v-if="disabled">
<h3 class="tags-title">关联标签</h3>
<div class="tags-container">
<div v-for="(tag, index) in listQuery.glbqList" :key="tag.id || index" class="tag-item">
<div class="tag-content">
{{ tag.bqmc }}
</div>
</div>
<span v-if="!listQuery.glbqList || listQuery.glbqList.length === 0" class="no-tags">
暂无标签
</span>
</div>
</div>
<div class="tags-section" v-if="disabled">
<h3 class="tags-title">续报信息</h3>
<div class="list-container">
<div v-for="(item, index) in dataList.xb" :key="item.id || index" class="list-item">
<div class="list-content">
{{ item.bcnr }}
</div>
<div class="tag-actions">
<el-icon class="action-icon edit-icon" :size="32" @click="openPursue('续报信息', item)">
<EditPen />
</el-icon>
<el-icon class="action-icon delete-icon" :size="32" @click="handleDeleteTag(item)">
<Delete />
</el-icon>
</div>
</div>
<span v-if="!dataList.xb || dataList.xb.length === 0" class="no-tags">
暂无续报信息
</span>
</div>
</div>
<div class="tags-section" v-if="disabled">
<h3 class="tags-title">补充信息</h3>
<div class="list-container">
<div v-for="(item, index) in dataList.bc" :key="item.id || index" class="list-item">
<div class="list-content">
{{ item.bcnr }}
</div>
<div class="tag-actions">
<el-icon class="action-icon edit-icon" :size="32" @click="openPursue('信息追加', item)">
<EditPen />
</el-icon>
<el-icon class="action-icon delete-icon" :size="32" @click="handleDeleteTag(item)">
<Delete />
</el-icon>
</div>
</div>
<span v-if="!dataList.bc || dataList.bc.length === 0" class="no-tags">
暂无补充信息
</span>
</div>
</div>
</div>
<div class="ml50 mr50 timeline-container" v-if="disabled">
<div class="timeline-title">信息流程展示</div>
<el-timeline class="timeline-full-width">
<el-timeline-item :timestamp="item.czsj" placement="top" v-for="(item, index) in lcList" :key="index">
<el-card class="process-card">
<div class="process-info">
<div class="info-label">处置人</div>
<div class="info-value">{{ item.czrxm || '未记录' }}</div>
</div>
<div class="process-info">
<div class="info-label">处置结果</div>
<div class="info-value">
<DictTag :tag="false" :value="item.czzt" :options="dict.D_BZ_LCZT" />
</div>
</div>
</el-card>
</el-timeline-item>
</el-timeline>
<MOSTY.Empty :show="lcList.length == 0" :imgSize="100"></MOSTY.Empty>
</div>
</div>
</div>
<pursueContent v-model="pursueShow" :dataList="dataVals" :title="processtitle" :updeteBool="true" />
</template>
<script setup>
import FormMessage from "@/components/aboutTable/FormMessage.vue";
import { xxcjAddEntity, xxcjUpdateEntity, xxcjSelectByid, xxcjSelectCzlcList, xxcjSelectListBc, xxcjDeletesBc, addEntity, xxcjTjcll, xxcjXxzhs } from "@/api/xxcj.js"
import { EditPen, Delete } from '@element-plus/icons-vue'
import { ref, defineExpose, onMounted, defineEmits, watch, getCurrentInstance } from "vue"
import { ElMessage } from 'element-plus';
import { getItem } from '@//utils/storage.js'
import { useRoute, useRouter } from 'vue-router'
import pursueContent from "@/views/backOfficeSystem/HumanIntelligence/components/pursueContent.vue";
import * as MOSTY from "@/components/MyComponents/index";
const { proxy } = getCurrentInstance()
const emit = defineEmits(["getList"]);
const props = defineProps({
dict: Object,
titleData: {
type: String,
default: ""
},
showBc: {
type: Boolean,
default: false
}
});
const loading = ref(false)
const dialogForm = ref(false); //弹窗
const formData = ref();
const rules = ref({
qbmc: [{ required: true, message: "请输入情报标题", trigger: "blur" }],
qbnr: [{ required: true, message: "请输入情报内容", trigger: "blur" }],
bcnr: [{ required: true, message: "请输入续报内容", trigger: "blur" }],
})
const tjcll = ref({})
const getXxcjTjcll = () => {
xxcjTjcll({}).then(res => {
tjcll.value = res
}).catch(error => {
console.error('请求失败:', error)
})
}
watch(() => dialogForm.value, (val) => {
if (val) {
if (formType.value === 'followUpReport') {
formData.value = [
{ label: "情报标题", prop: "qbmc", type: "input", width: '45%', disabled: true },
{ label: "续报内容", prop: "bcnr", type: "textarea", width: '100%', rows: 100 },
]
} else {
formData.value = [
{ label: "情报标题", prop: "qbmc", type: "input", width: '45%' },
{ label: "情报内容", prop: "qbnr", type: "textarea", width: '100%', rows: 100 },
{ label: "附件上传", prop: "fjdz", type: "upload", width: '100%', isImg: false },
{ label: "", prop: "jbxx", type: "slot", width: '100%',},
{ label: "", prop: "shzt", type: "slot", width: '100%' },
]
}
}
}, { deep: true })
const fjdz = ref()
const listQuery = ref({}); //表单
const elform = ref();
onMounted(() => {
})
const msgeDat = ref()
const title = ref("")
const showPj = ref(false)
const disabled = ref(false)
/** 类型 add 新增 info 详情 edit 编辑 followUpReport 续报*/
const formType = ref('add')
const userInfo = ref({})
const userName = ref('')
// 初始化数据
const init = (type, row) => {
userInfo.value = getItem('deptId') ? getItem('deptId')[0] : {}
userName.value = getItem('USERNAME')
getXxcjTjcll()
const titleObj = {
add: "新增",
info: "详情",
edit: "编辑",
followUpReport: "续报"
}
title.value = titleObj[type]
disabled.value = type == 'info' ? true : false
fjdz.value = []
dialogForm.value = true;
formType.value = type
if (type == 'info' || type == 'edit' || type == 'followUpReport') {
showPj.value = true
msgeDat.value = row
getqbcjPldb(row.id)
getxxcjSelectListBc(row.id, '01')
getxxcjSelectListBc(row.id, '02')
// 初始化表单数据,并根据详情页设置禁用状态
if (row) getDataById(row.id);
// getqbcjCzztList()
} else {
showPj.value = false
}
};
// 根据id查询详情
const getDataById = (id) => {
xxcjSelectByid({ id }).then((res) => {
lcList.value = res.czlcList || []
listQuery.value = res;
listQuery.value.fjdz = res.fjdz ? res.fjdz?.split(",") : []
});
};
// 新增
const submitForm = () => {
elform.value.submit(valid => {
if (valid) {
loading.value = true
const promes = {
...listQuery.value,
fjdz: listQuery.value.fjdz && listQuery.value.fjdz.length > 0 ? listQuery.value.fjdz.map(item => {
return item.id
}).join(',') : '',
qbly: 0,
}
if (title.value == '新增') {
xxcjAddEntity(promes).then((res) => {
emit("getList")
close()
}).finally(() => {
loading.value = false
})
} else if (title.value == '编辑') {
xxcjUpdateEntity(promes).then((res) => {
emit("getList")
close()
}).finally(() => {
loading.value = false
})
} else if (title.value == '续报') {
const params = {
qbid: listQuery.value.id,
czlx: '01',
ysnr: listQuery.value.qbnr,
bcnr: promes.bcnr,
}
addEntity(params).then((res) => {
emit("getList")
close()
}).finally(() => {
loading.value = false
})
}
}
})
}
const route = useRoute()
const router = useRouter()
// 关闭
const close = () => {
if (route.query.id) {
const query = { ...route.query };
delete query.id;
router.replace({ query });
}
fjdz.value = []
lcList.value = []
listQuery.value = {};
dialogForm.value = false;
loading.value = false;
};
const lcList = ref([])
const getqbcjPldb = (id) => {
xxcjSelectCzlcList({ qbid: id }).then(res => {
console.log(res);
lcList.value = res || []
})
.catch(() => {
})
}
//
const dataList = ref({
xb: [],
bc: [],
})
const getxxcjSelectListBc = (id, lx) => {
xxcjSelectListBc({ qbid: id, czlx: lx }).then(res => {
if (lx == '01') {
dataList.value.xb = res || []
} else {
dataList.value.bc = res || []
}
})
}
// 处理标签删除
const handleDeleteTag = (tag) => {
proxy.$confirm("确定要删除吗?", "警告", { type: "warning" }).then(() => {
const userName = getItem('USERNAME')
if (userName == tag.bcrxm) {
xxcjDeletesBc({ ids: [tag.id] }).then(res => {
ElMessage({
message: '删除成功',
type: 'success',
showClose: true,
})
getxxcjSelectListBc(msgeDat.value.id, '01')
getxxcjSelectListBc(msgeDat.value.id, '02')
})
} else {
proxy.$message({
message: '您不是该数据的创建人,不能删除',
type: 'warning',
showClose: true,
})
}
})
}
//
const pursueShow = ref(false)
const dataVals = ref([])
const processtitle = ref()
const openPursue = (title, data) => {
const userName = getItem('USERNAME')
if (userName == data.bcrxm) {
pursueShow.value = true
processtitle.value = title
dataVals.value = data
} else {
proxy.$message({
message: '您不是该数据的创建人,不能进行操作',
type: 'warning',
showClose: true,
})
}
}
defineExpose({ init });
</script>
<style lang="scss" scoped>
@import "~@/assets/css/layout.scss";
@import "~@/assets/css/element-plus.scss";
::v-deep .el-tabs--card>.el-tabs__header .el-tabs__item.is-active {
color: #0072ff;
background: rgba(0, 114, 255, 0.3);
}
.boxlist {
width: 99%;
height: 225px;
margin-top: 10px;
overflow: hidden;
}
::v-deep .avatar-uploader {
display: flex;
align-items: center;
}
::v-deep .el-upload-list {
margin-left: 20px;
display: flex;
align-items: center;
}
::v-deep .el-upload-list__item-name .el-icon {
top: 3px;
}
.form_cnt {
// width: 75%;
flex: 1;
}
.person {
padding-left: 20px;
width: 25%;
// height: 100vh;
}
/* 补充信息样式 */
.supplement-title {
font-size: 14px;
font-weight: 500;
color: #333;
margin: 16px 0 10px 0;
padding-left: 5px;
border-left: 3px solid #24b6dd;
}
.supplement-list {
margin-left: 5px;
}
.supplement-item {
display: flex;
align-items: center;
justify-content: space-between;
padding: 8px 12px;
background-color: #f5f7fa;
border: 1px solid #e4e7ed;
border-radius: 4px;
margin-bottom: 8px;
margin-right: 10px;
transition: all 0.3s ease;
}
.supplement-item:hover {
background-color: #ecf5ff;
border-color: #c6e2ff;
}
.supplement-content {
flex: 1;
font-size: 14px;
color: #606266;
line-height: 1.5;
}
.supplement-actions {
display: flex;
gap: 12px;
}
.action-icon {
// font-size: 24px;
cursor: pointer;
transition: all 0.3s ease;
}
.edit-icon {
color: #24b6dd;
}
.edit-icon:hover {
color: #409eff;
transform: scale(1.1);
}
.delete-icon {
color: #f56c6c;
}
.delete-icon:hover {
color: #f78989;
transform: scale(1.1);
}
/* 时间线标题样式 */
.timeline-title {
font-size: 16px;
font-weight: 600;
color: #303133;
padding: 12px 16px;
margin-bottom: 10px;
background-color: #f5f7fa;
border-bottom: 1px solid #ebeef5;
border-radius: 4px 4px 0 0;
}
/* 时间线样式优化 */
.el-timeline {
margin-top: 20px;
}
/* 处置流程卡片样式 */
.process-card {
border: none;
border-radius: 8px;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.08);
transition: all 0.3s ease;
margin-bottom: 16px;
border-left: 3px solid #409EFF;
}
.process-card:hover {
box-shadow: 0 4px 20px 0 rgba(0, 0, 0, 0.12);
transform: translateY(-2px);
}
/* 卡片内部信息样式 */
.process-info {
display: flex;
align-items: flex-start;
margin-bottom: 12px;
flex-wrap: wrap;
}
.process-info:last-child {
margin-bottom: 0;
}
.info-label {
font-size: 14px;
font-weight: 600;
color: #409EFF;
margin-right: 8px;
min-width: 65px;
}
.info-value {
font-size: 14px;
color: #606266;
line-height: 1.6;
flex: 1;
word-break: break-word;
}
/* 时间戳样式 */
.el-timeline-item__timestamp {
font-size: 13px;
color: #909399;
margin-bottom: 8px;
}
/* 时间线节点样式 */
.el-timeline-item__node {
background-color: #409EFF;
}
::v-deep .el-textarea__inner {
height: 50vh !important;
}
/* 容器类样式 */
.form-container {
display: flex;
width: 100%;
}
.form-content {
// display: flex;
width: 80%;
}
.timeline-container {
border: 1px solid #ebeef5;
flex: 1;
margin: 0 10px;
}
/* 时间线宽度 */
.timeline-full-width {
width: 100%;
}
/* 标签区域样式 */
.tags-section {
margin-top: 20px;
}
/* 标签标题样式 */
.tags-title {
font-size: 14px;
font-weight: 600;
color: #303133;
margin-bottom: 8px;
padding-left: 5px;
border-left: 3px solid #409EFF;
}
/* 标签容器样式 */
.tags-container {
padding: 12px;
background-color: #f5f7fa;
border-radius: 4px;
display: flex;
flex-wrap: wrap;
gap: 12px;
align-items: center;
}
/* 标签项目样式 */
.tag-item {
display: flex;
align-items: center;
gap: 6px;
padding: 6px 10px;
background-color: #ecf5ff;
border-radius: 4px;
border: 1px solid #d9ecff;
transition: all 0.3s ease;
}
/* 标签项目悬停效果 */
.tag-item:hover {
background-color: #e6f7ff;
border-color: #91d5ff;
box-shadow: 0 2px 8px rgba(0, 123, 255, 0.15);
}
/* 标签内容样式 */
.tag-content {
margin: 0;
font-size: 14px;
color: #303133;
font-weight: 500;
}
/* 标签操作按钮样式 */
.tag-actions {
display: flex;
// align-items: flex-start;
gap: 8px;
}
/* 操作图标样式 */
.action-icon {
font-size: 18px;
cursor: pointer;
transition: all 0.3s ease;
padding: 6px 8px;
border-radius: 4px;
display: inline-flex;
align-items: center;
justify-content: center;
}
/* 编辑图标样式 */
.edit-icon {
color: #409EFF;
background-color: #ecf5ff;
}
.edit-icon:hover {
color: #66B1FF;
background-color: #e6f7ff;
transform: scale(1.05);
box-shadow: 0 2px 4px rgba(64, 158, 255, 0.2);
}
/* 列表容器样式 */
.list-container {
padding: 12px;
background-color: #f5f7fa;
border-radius: 4px;
}
/* 列表项样式 */
.list-item {
display: flex;
justify-content: space-between;
align-items: center;
padding: 10px 12px;
background-color: #ffffff;
border-radius: 4px;
margin-bottom: 8px;
border: 1px solid #e4e7ed;
transition: all 0.3s ease;
}
/* 列表项悬停效果 */
.list-item:hover {
background-color: #f5f7fa;
border-color: #dcdfe6;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
}
/* 列表内容样式 */
.list-content {
margin: 0;
font-size: 14px;
color: #303133;
font-weight: 500;
}
/* 删除图标样式 */
.delete-icon {
color: #F56C6C;
background-color: #fef0f0;
}
.delete-icon:hover {
color: #F78989;
background-color: #fde2e2;
transform: scale(1.05);
box-shadow: 0 2px 4px rgba(245, 108, 108, 0.2);
}
/* 无标签提示样式 */
.no-tags {
color: #909399;
font-size: 14px;
font-style: italic;
}
</style>

View File

@ -0,0 +1,89 @@
<!--文件导出 -->
<template>
<el-dialog :model-value="modelValue" :title="title" :width="width" @close="close" append-to-body>
<div style="height: 15vh;">
<FormMessage v-model="listQuery" :formList="formData" ref="elform" :rules="rules" :labelWidth="100" />
</div>
<template #footer>
<div class="dialog-footer">
<el-button @click="close">取消</el-button>
<el-button type="primary" @click="exportCurrentTable">确定 </el-button>
</div>
</template>
</el-dialog>
</template>
<script setup>
import { onMounted, reactive, watch, ref, getCurrentInstance } from 'vue'
import FormMessage from "@/components/aboutTable/FormMessage.vue";
import { xxcjXxcjSh } from "@/api/xxcj.js"
const { proxy } = getCurrentInstance();
const props = defineProps({
modelValue: {
type: Boolean,
default: false
},
width: {
type: String,
default: '30%'
}, dict: {
type: Object,
default: () => ({})
},
title: {
type: String,
default: '审批'
}, dataModel: {
type: Object,
default: () => ({})
}
})
const listQuery = ref({})
const elform = ref()
const rules = ref({
shzt: { required: true, message: '请选择审批状态', trigger: ['blur', 'change'] },
shyh: { required: true, message: '请输入不通过原因', trigger: ['blur', 'change'] }
})
const formData = ref([
{ label: "审批状态", prop: "shzt", type: "select", width: '100%', options: [{ label: "通过", value: "02" }, { label: "不通过", value: "03" }] },
{}
])
// watch(() => listQuery.value.modelValue, (newVal, oldVal) => {
// if (newVal) {
// listQuery.value.xxid = props.dataModel.id
// }
// })
watch(() => listQuery.value.shzt == '03', (newVal, oldVal) => {
if (newVal) {
formData.value[1] = { label: "不通过原因", prop: "shyh", type: "textarea", width: '100%', rows: 3 }
} else {
formData.value[1] = {}
}
})
const exportCurrentTable = () => {
elform.value.submit(valid => {
const params = { ...listQuery.value, xxid: props.dataModel.id}
xxcjXxcjSh(params).then(res => {
proxy.$message({ type: "success", message: "审批成功" });
emit('getList')
emit('update:modelValue', false)
elform.value.reset()
})
})
}
watch(() => props.modelValue, (newVal, oldVal) => {
if (newVal) {
listQuery.value.id = props.dataModel.id
}
})
const emit = defineEmits(['update:modelValue','getList'])
const close = () => {
emit('update:modelValue', false)
}
</script>

View File

@ -0,0 +1,205 @@
<template>
<div>
<!-- 搜索 -->
<div ref="searchBox" class="mt10 mb10">
<Searchs :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" />
</div>
<!-- 表格 -->
<div class="tabBox heightBox">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
<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 #xldshzt="{ row }">
<DictTag :tag="false" :value="row.sldshzt" :options="D_BZ_SSSHZT" />
</template>
<template #sldshzt="{ row }">
<DictTag :tag="false" :value="row.sldshzt" :options="D_BZ_SSSHZT" />
</template>
<template #controls="{ row }">
<el-link size="small" type="danger" @click="openDoingLogin(row)"
v-if="row.sldshzt == '01' && getRole() == '02'">审批</el-link>
<el-link size="small" type="danger" @click="openDoingLogin(row)"
v-if="row.xldshzt == '01' && getRole() == '01'">审批</el-link>
<el-link size="small" type="primary" @click="addEdit('info', row)">详情</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" :dict="{ D_BZ_LCZT, D_BZ_SSSHZT }" />
</div>
<Doinglogin v-model="doingloginModel" :dataModel="dataModel" :dict="{ D_BZ_SSSHZT }" @getList="getList" />
</template>
<script setup>
import MyTable from "@/components/aboutTable/MyTable.vue";
import Doinglogin from "./components/doinglogin.vue";
import Pages from "@/components/aboutTable/Pages.vue";
import Searchs from "@/components/aboutTable/Search.vue";
import AddForm from "./components/addForm.vue";
import { xxcjSelectDshPage } from '@/api/xxcj.js'
import { reactive, ref, onMounted, getCurrentInstance, nextTick } from "vue";
import { getItem } from "@/utils/storage";
const { proxy } = getCurrentInstance();
const { D_BZ_SSSHZT, D_GS_XS_LX, D_BZ_BQJB, D_BZ_QBCZZT, D_BZ_CJLX, D_BZ_LCZT } =
proxy.$dict('D_BZ_SSSHZT', 'D_GS_XS_LX', 'D_BZ_BQJB', 'D_BZ_QBCZZT', 'D_BZ_CJLX', 'D_BZ_LCZT'); //获取字典数据
const searchBox = ref(); //搜索框
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: 200,
tableColumn: [
{ label: "情报上报时间", prop: "sxsbsj" },
{ label: "情报编号", prop: "xsBh" },
{ label: "情报标题", prop: "qbmc" },
{ label: "情报来源", prop: "qbly", showSolt: true },
{ label: "上报人", prop: "xssbr" },
{ label: "上报单位", prop: "ssbm" },
{ label: "县审核", prop: "xldshzt", showSolt: true },
{ label: "市审核", prop: "sldshzt", showSolt: true },
]
});
const queryFrom = ref({});
/** 获取当前角色 */
function getRole() {
const { deptBizType, deptLevel } = getItem('deptId')[0]
/** 是否是市情指领导 */
const isShiQzLeader = getItem('roleList').find(item => item.roleCode == 'JS_666666') != undefined
if (isShiQzLeader) return '02'
const isXQzLeader = getItem('roleList').find(item => item.roleCode == 'JS_999999') != undefined
if (isXQzLeader) return '01'
}
// 搜索
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;
let data = { ...pageData.pageConfiger, ...queryFrom.value };
xxcjSelectDshPage(data).then(res => {
pageData.tableData = res.records || [];
pageData.total = res.total;
pageData.tableConfiger.loading = false;
}).catch(() => { pageData.tableConfiger.loading = false; })
}
onMounted(() => {
tabHeightFn()
getList()
});
//审批
const doingloginModel = ref(false)
const dataModel = ref({})
const openDoingLogin = (row) => {
dataModel.value = row
doingloginModel.value = true
}
const detailDiloag=ref()
const addEdit = (type, row) => {
setTimeout(() => {
detailDiloag.value.init(type, row);
}, 500)
};
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 200;
window.onresize = function () {
tabHeightFn();
};
};
</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

@ -0,0 +1,205 @@
<template>
<div style="width: 100%;">
<div style="margin: 0 auto;">
<MOSTY.Upload v-model="listQuery.img" :isImg="isImg" :limit="limit" :isAll="false" :disabled="disabled"
:showBtn="true" :showFileList="false" />
</div>
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
<!-- 操作 -->
<template #controls="{ row }">
<div class="operation-links">
<el-link size="small" type="primary" @click="previewFile(row)" class="link-item primary-link"
v-if="row.wjlx == '.png' || row.wjlx == '.jpg' || row.wjlx == '.jpeg'">预览</el-link>
<el-link size="small" type="primary" @click="downloadFile(row)" class="link-item primary-link">下载</el-link>
<el-link size="small" type="danger" @click="deleteFile(row)" class="link-item danger-link">删除</el-link>
</div>
</template>
</MyTable>
</div>
</template>
<script setup>
import * as MOSTY from "@/components/MyComponents/index";
import MyTable from "@/components/aboutTable/MyTable.vue";
import { reactive, watch,getCurrentInstance } from "vue";
const { proxy } = getCurrentInstance();
const props = defineProps({
isImg: {
type: Boolean,
default: false,
},
limit: {
type: Number,
default: 0,
}, disabled: {
type: Boolean,
default: () => { },
},
imgMsg: {
type: Array,
default: () => { },
}
});
const emit = defineEmits(["changeData"]);
const listQuery = reactive({
img: "",
});
const pageData = reactive({
tableData: [],
keyCount: 0,
tableConfiger: {
rowHieght: 61,
showSelectType: "null",
loading: false
},
total: 0,
pageConfiger: {
pageSize: 20,
pageCurrent: 1
},
controlsWidth: 280,
tableColumn: [
{ label: "文件名称", prop: "wjmc" },
{ label: "文件大小", prop: "wjdx" },
]
});
watch(() => listQuery.img, (newVal, oldVal) => {
pageData.tableData = newVal.map(item => {
return {
wjmc: item.name,
wjdx:parseFloat((item.id.fileSize/1024/1024).toFixed(2)),
url: item.id.url
}
})
emit("changeData", pageData.tableData);
})
watch(() => props.imgMsg, (newVal, oldVal) => {
pageData.tableData = newVal.map(item => {
return {
...item,
}
})
},{deep:true,immediate:true})
const deleteFile = (row) => {
pageData.tableData = pageData.tableData.filter(item => item.url !== row.url)
const data=pageData.tableData.map(item => {
return {
wjmc: item.wjmc,
wjdx: parseFloat(item.wjdx),
url: item.url
}
})
emit("changeData",data);
}
const downloadFile = async (item) => {
console.log(item);
try {
const dataList =[item]
if (dataList.length === 0) {
proxy.$message.warning('没有文件可下载');
return;
}
const downloadCount = dataList.length;
let successCount = 0;
let failCount = 0;
proxy.$message.info(`开始下载${downloadCount}个文件...`);
// 并行下载所有文件
const downloadPromises = dataList.map(async (fileData, index) => {
try {
// 使用fetch获取文件内容
const response = await fetch(fileData.url);
if (!response.ok) {
throw new Error('文件下载失败');
}
// 将响应转换为Blob对象
const blob = await response.blob();
// 创建下载链接
const downloadLink = document.createElement('a');
downloadLink.href = URL.createObjectURL(blob);
// 设置下载文件的名称,避免冲突
const fileName = dataList.length > 1
? `${item.wjmc}_${index + 1}`
: item.wjmc;
downloadLink.download = fileName;
// 触发下载
document.body.appendChild(downloadLink);
downloadLink.click();
// 清理
setTimeout(() => {
document.body.removeChild(downloadLink);
URL.revokeObjectURL(downloadLink.href);
}, 100);
successCount++;
} catch (error) {
console.error(`文件${index + 1}下载失败:`, error);
failCount++;
}
});
// 等待所有下载完成
await Promise.all(downloadPromises);
// 显示下载结果
if (failCount === 0) {
proxy.$message.success(`成功下载${successCount}个文件`);
} else if (successCount === 0) {
proxy.$message.error(`所有${failCount}个文件下载失败`);
} else {
proxy.$message.warning(`成功下载${successCount}个文件,失败${failCount}个文件`);
}
} catch (error) {
console.error('文件下载失败:', error);
proxy.$message.error('文件下载失败,请稍后重试');
}
}
</script>
<style scoped lang="scss">
.operation-links {
display: flex;
flex-wrap: wrap;
gap: 12px;
.link-item {
display: inline-block;
padding: 4px 12px;
border-radius: 4px;
font-size: 12px;
transition: all 0.3s ease;
&:hover {
opacity: 0.8;
transform: translateY(-1px);
}
}
.primary-link {
color: #409EFF;
background-color: #ECF5FF;
&:hover {
background-color: #D9ECFF;
}
}
.danger-link {
color: #F56C6C;
background-color: #FEF0F0;
&:hover {
background-color: #FEE2E2;
}
}
}
</style>

View File

@ -1,20 +1,19 @@
<template> <template>
<div> <div>
<div class="titleBox"> <!-- 搜索 -->
<PageTitle title="文件定向传输"> <div ref="searchBox" class="mt10">
<el-button type="primary" @click="getDataById('add', '')"> <Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" />
</div>
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
<template #left>
<el-button size="small" type="primary" @click="getDataById('add', '')">
<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>
</PageTitle> </PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" />
</div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox"> <div class="tabBox">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight" <MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
@ -28,11 +27,12 @@
</template> </template>
<!-- 操作 --> <!-- 操作 -->
<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="primary" @click="getDataById('detail',row)">详情</el-link> <el-link size="small" type="primary" @click="getDataById('detail', row)">详情</el-link>
<el-link size="small" type="primary" @click="previewFile(row)" v-if="row.wjlx == '.png'||row.wjlx == '.jpg'||row.wjlx == '.jpeg'">预览</el-link> <el-link size="small" type="primary" @click="previewFile(row)"
<el-link size="small" type="primary" @click="downloadFile(row)">下载</el-link> v-if="row.wjlx == '.png' || row.wjlx == '.jpg' || row.wjlx == '.jpeg'">预览</el-link>
<el-link size="small" type="danger" @click="deleteFile(row)">删除</el-link> <el-link size="small" type="primary" @click="downloadFile(row)">下载</el-link>
<el-link size="small" type="danger" @click="deleteFile(row)">删除</el-link>
</template> </template>
</MyTable> </MyTable>
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{ <Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
@ -41,7 +41,8 @@
}"></Pages> }"></Pages>
</div> </div>
</div> </div>
<AddForm ref="addForm" @getList="getList"/> <AddForm ref="addForm" @getList="getList" />
</template> </template>
<script setup> <script setup>
@ -53,7 +54,7 @@ import { useRoute } from 'vue-router'
import { reactive, ref, onMounted, getCurrentInstance, watch } from "vue"; import { reactive, ref, onMounted, getCurrentInstance, watch } from "vue";
import { getItem } from '@//utils/storage.js' import { getItem } from '@//utils/storage.js'
import { deleteWjZzzAddEntity, getWjZzzAddEntity ,selectDxzjList} from '@//api/qbcj.js' import { deleteWjZzzAddEntity, getWjZzzAddEntity, selectDxzjList } from '@//api/qbcj.js'
import AddForm from "@/views/backOfficeSystem/HumanIntelligence/fileTransfer/components/addForm.vue"; import AddForm from "@/views/backOfficeSystem/HumanIntelligence/fileTransfer/components/addForm.vue";
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
// const { D_BZ_CJLX, D_GS_XS_LX } = proxy.$dict("D_BZ_CJLX", "D_GS_XS_LX"); //获取字典数据 // const { D_BZ_CJLX, D_GS_XS_LX } = proxy.$dict("D_BZ_CJLX", "D_GS_XS_LX"); //获取字典数据
@ -88,7 +89,7 @@ const qxkz = reactive({
}) })
const searchConfiger = ref([ const searchConfiger = ref([
{ label: "情报标题", prop: 'qbmc', placeholder: "请输入情报标题", showType: "input" }, { label: "文件名称", prop: 'wjmc', placeholder: "请输入文件名称", showType: "input" },
// { label: "情报来源", prop: 'cjLx', placeholder: "请选择情报来源", showType: "select", options: D_BZ_CJLX }, // { label: "情报来源", prop: 'cjLx', placeholder: "请选择情报来源", showType: "select", options: D_BZ_CJLX },
// { label: "来源单位", prop: 'ssbmdm', placeholder: "请选择来源单位", showType: "department" } // { label: "来源单位", prop: 'ssbmdm', placeholder: "请选择来源单位", showType: "department" }
]); ]);
@ -109,12 +110,14 @@ const pageData = reactive({
controlsWidth: 240, controlsWidth: 240,
tableColumn: [ tableColumn: [
{ label: "文件名称", prop: "wjmc" }, { label: "文件名称", prop: "wjmc" },
{ label: "上传人", prop: "scrxm" },
{ label: "文件大小", prop: "wjdx", showSolt: true }, { label: "文件大小", prop: "wjdx", showSolt: true },
{ label: "文件类别", prop: "wjlb", showSolt: true }, { label: "文件类别", prop: "wjlb", showSolt: true },
{ label: "所属部门", prop: "ssbm" }, { label: "所属部门", prop: "ssbm" },
{ label: "文件描述", prop: "qbnr" }, { label: "文件描述", prop: "qbnr" },
] ]
}); });
const queryFrom = ref({}); const queryFrom = ref({});
// 搜索 // 搜索
@ -145,7 +148,7 @@ const changeSize = (val) => {
// 获取列表 // 获取列表
const getList = () => { const getList = () => {
pageData.tableConfiger.loading = true; pageData.tableConfiger.loading = true;
let data = { ...pageData.pageConfiger, ...queryFrom.value ,wjlb:'02'}; let data = { ...pageData.pageConfiger, ...queryFrom.value, wjlb: '02' };
selectDxzjList(data).then(res => { selectDxzjList(data).then(res => {
pageData.tableData = res.records || []; pageData.tableData = res.records || [];
pageData.total = res.total; pageData.total = res.total;
@ -156,7 +159,7 @@ const getList = () => {
// 表格高度计算 // 表格高度计算
const tabHeightFn = () => { const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250; pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 270;
window.onresize = function () { window.onresize = function () {
tabHeightFn(); tabHeightFn();
}; };
@ -168,47 +171,77 @@ const getRouter = () => {
} }
const addForm = ref(null) const addForm = ref(null)
const getDataById = (type, row) => { const getDataById = (type, row) => {
addForm.value.init(type, row,'02'); addForm.value.init(type, row, '02');
} }
const previewFile = (item) => { const previewFile = (item) => {
window.open(item.wjdz); window.open(item.wjdz);
} }
const downloadFile = async (item) => { const downloadFile = async (item) => {
console.log(item);
try { try {
// 显示加载提示 const dataList =JSON.parse(item.wjdz)
// proxy.$message({ if (dataList.length === 0) {
// message: '开始下载文件...', proxy.$message.warning('没有文件可下载');
// type: 'info', return;
// duration: 0,
// showClose: true
// });
proxy.$message.info('开始下载文件...');
// 使用fetch获取文件内容
const response = await fetch(item.wjdz);
if (!response.ok) {
throw new Error('文件下载失败');
} }
console.log(dataList);
// 将响应转换为Blob对象 const downloadCount = dataList.length;
const blob = await response.blob(); let successCount = 0;
let failCount = 0;
// 创建下载链接 proxy.$message.info(`开始下载${downloadCount}个文件...`);
const downloadLink = document.createElement('a');
downloadLink.href = URL.createObjectURL(blob);
// 设置下载文件的名称 // 并行下载所有文件
downloadLink.download = item.wjmc; const downloadPromises = dataList.map(async (fileData, index) => {
// 触发下载 try {
document.body.appendChild(downloadLink); // 使用fetch获取文件内容
downloadLink.click(); const response = await fetch(fileData.url);
if (!response.ok) {
throw new Error('文件下载失败');
}
// 清理 // 将响应转换为Blob对象
document.body.removeChild(downloadLink); const blob = await response.blob();
URL.revokeObjectURL(downloadLink.href);
// 显示下载成功提示 // 创建下载链接
proxy.$message.success('文件下载成功'); const downloadLink = document.createElement('a');
downloadLink.href = URL.createObjectURL(blob);
// 设置下载文件的名称,避免冲突
const fileName = dataList.length > 1
? `${item.wjmc}_${index + 1}`
: item.wjmc;
downloadLink.download = fileName;
// 触发下载
document.body.appendChild(downloadLink);
downloadLink.click();
// 清理
setTimeout(() => {
document.body.removeChild(downloadLink);
URL.revokeObjectURL(downloadLink.href);
}, 100);
successCount++;
} catch (error) {
console.error(`文件${index + 1}下载失败:`, error);
failCount++;
}
});
// 等待所有下载完成
await Promise.all(downloadPromises);
// 显示下载结果
if (failCount === 0) {
proxy.$message.success(`成功下载${successCount}个文件`);
} else if (successCount === 0) {
proxy.$message.error(`所有${failCount}个文件下载失败`);
} else {
proxy.$message.warning(`成功下载${successCount}个文件,失败${failCount}个文件`);
}
} catch (error) { } catch (error) {
console.error('文件下载失败:', error); console.error('文件下载失败:', error);
proxy.$message.error('文件下载失败,请稍后重试'); proxy.$message.error('文件下载失败,请稍后重试');
@ -220,7 +253,7 @@ const deleteFile = (row) => {
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
deleteWjZzzAddEntity({ids:[row.id]}).then(res => { deleteWjZzzAddEntity({ ids: [row.id] }).then(res => {
proxy.$message.success('删除成功'); proxy.$message.success('删除成功');
getList(); getList();
}).catch(() => { }).catch(() => {

View File

@ -8,11 +8,13 @@
</div> </div>
</div> </div>
<div class="form_cnt"> <div class="form_cnt">
<FormMessage v-model="listQuery" :formList="formData" ref="elform" :rules="rules"> <FormMessage v-model="listQuery" :formList="formData" ref="elform" :rules="rules">
<template #wjdz> <template #wjdz>
<div style="width: 100%;"> <FileUploadList @changeData="changeData" :imgMsg="imgMsg"/>
<!-- <div style="width: 100%;">
<UploadFile v-model="imgMsg" :limit="1" :isImg="false" :isAll="false" /> <UploadFile v-model="imgMsg" :limit="1" :isImg="false" :isAll="false" />
</div> </div> -->
</template> </template>
<template #jsrxm> <template #jsrxm>
<el-input v-model="listQuery.jsrxm" placeholder="请输入接收人" readonly @click="chooseUserVisible = true" /> <el-input v-model="listQuery.jsrxm" placeholder="请输入接收人" readonly @click="chooseUserVisible = true" />
@ -26,6 +28,7 @@
<script setup> <script setup>
import FormMessage from "@/components/aboutTable/FormMessage.vue"; import FormMessage from "@/components/aboutTable/FormMessage.vue";
import { qcckGet, qcckPost } from "@/api/qcckApi.js"; import { qcckGet, qcckPost } from "@/api/qcckApi.js";
import FileUploadList from "@/views/backOfficeSystem/HumanIntelligence/fileOrientation/components/fileUploadList.vue";
import UploadFile from "@/components/MyComponents/Upload/index.vue"; import UploadFile from "@/components/MyComponents/Upload/index.vue";
import ChooseUser from "@/components/ChooseList/ChooseUser/index.vue" import ChooseUser from "@/components/ChooseList/ChooseUser/index.vue"
import { ref, defineExpose, reactive, defineEmits, getCurrentInstance, watch } from "vue"; import { ref, defineExpose, reactive, defineEmits, getCurrentInstance, watch } from "vue";
@ -49,16 +52,16 @@ const formData = ref([
// }, // },
]); ]);
const listQuery = ref({}); //表单 const listQuery = ref({}); //表单
watch(() => imgMsg.value, (newVal, oldVal) => { // watch(() => imgMsg.value, (newVal, oldVal) => {
if (newVal.length > 0) { // if (newVal.length > 0) {
listQuery.value.wjdz= newVal[0].id?newVal[0].id.url:listQuery.value.wjdz, // listQuery.value.wjdz= newVal[0].id?newVal[0].id.url:listQuery.value.wjdz,
listQuery.value.wjdx= newVal[0].id?(newVal[0].id.fileSize / 1024 / 1024).toFixed(2):listQuery.value.wjdx, // listQuery.value.wjdx= newVal[0].id?(newVal[0].id.fileSize / 1024 / 1024).toFixed(2):listQuery.value.wjdx,
listQuery.value.wjmc= newVal[0].id?newVal[0].name:listQuery.value.wjmc, // listQuery.value.wjmc= newVal[0].id?newVal[0].name:listQuery.value.wjmc,
listQuery.value. wjlx= newVal[0].id?newVal[0].id.fileSuffix:listQuery.value.wjlx // listQuery.value. wjlx= newVal[0].id?newVal[0].id.fileSuffix:listQuery.value.wjlx
} else { // } else {
listQuery.value = {} // listQuery.value = {}
} // }
}, { deep: true }) // }, { deep: true })
watch(() => listQuery.value.wjlb, (newVal, oldVal) => { watch(() => listQuery.value.wjlb, (newVal, oldVal) => {
listQuery.value.wjlb = newVal listQuery.value.wjlb = newVal
if (newVal == '02') { if (newVal == '02') {
@ -75,7 +78,7 @@ watch(() => listQuery.value.wjlb, (newVal, oldVal) => {
{ label: "文件", prop: "wjdz", type: "slot", width: "100%" }, { label: "文件", prop: "wjdz", type: "slot", width: "100%" },
{ label: "文件大小", prop: "wjdx", type: "input", width: "30%", placeholder: "单位MB",disabled: true }, { label: "文件大小", prop: "wjdx", type: "input", width: "30%", placeholder: "单位MB",disabled: true },
{ label: "文件名称", prop: "wjmc", type: "input", width: "30%" }, { label: "文件名称", prop: "wjmc", type: "input", width: "30%" },
{ label: "文件文件类型", prop: "wjlx", type: "input", width: "30%" ,disabled: true}, // { label: "文件文件类型", prop: "wjlx", type: "input", width: "30%" },
{ label: "接收人", prop: "jsrxm", type: "slot", width: "100%" }, { label: "接收人", prop: "jsrxm", type: "slot", width: "100%" },
{ label: "接收部门", prop: "jsbmdm", type: "department", depMc: "jsbmmc", multiple: true }, { label: "接收部门", prop: "jsbmdm", type: "department", depMc: "jsbmmc", multiple: true },
{ label: "文件描述", prop: "wjms", type: "textarea", width: "100%" },] { label: "文件描述", prop: "wjms", type: "textarea", width: "100%" },]
@ -93,7 +96,7 @@ watch(() => listQuery.value.wjlb, (newVal, oldVal) => {
{ label: "文件", prop: "wjdz", type: "slot", width: "100%" }, { label: "文件", prop: "wjdz", type: "slot", width: "100%" },
{ label: "文件大小", prop: "wjdx", type: "input", width: "30%", placeholder: "单位MB" }, { label: "文件大小", prop: "wjdx", type: "input", width: "30%", placeholder: "单位MB" },
{ label: "文件名称", prop: "wjmc", type: "input", width: "30%" }, { label: "文件名称", prop: "wjmc", type: "input", width: "30%" },
{ label: "文件文件类型", prop: "wjlx", type: "input", width: "30%" }, // { label: "文件文件类型", prop: "wjlx", type: "input", width: "30%" },
{ label: "文件描述", prop: "wjms", type: "textarea", width: "100%" },] { label: "文件描述", prop: "wjms", type: "textarea", width: "100%" },]
} }
}) })
@ -103,6 +106,9 @@ const loading = ref(false);
const elform = ref(); const elform = ref();
const title = ref(""); const title = ref("");
const rules = reactive({ const rules = reactive({
wjmc: [
{ required: true, message: "请输入文件名称", trigger: "blur" },
],
}); });
// 初始化数据 // 初始化数据
@ -116,9 +122,8 @@ const init = (type, row,wjlb) => {
// 根据id查询详情 // 根据id查询详情
const getDataById = (id) => { const getDataById = (id) => {
getWjZzzAddEntityById(id).then((res) => { getWjZzzAddEntityById(id).then((res) => {
listQuery.value = res; listQuery.value = res;
imgMsg.value = res.wjdz.split(',') imgMsg.value =JSON.parse(res.wjdz)
listQuery.value.jsbmdm = res.jsdxList.filter(item => item.jsbmdm).map(item => item.jsbmdm) listQuery.value.jsbmdm = res.jsdxList.filter(item => item.jsbmdm).map(item => item.jsbmdm)
listQuery.value.jsbmmc=res.jsdxList.filter(item => item.jsbmdm).map(item => item.jsbmmc) listQuery.value.jsbmmc=res.jsdxList.filter(item => item.jsbmdm).map(item => item.jsbmmc)
userList.value = res.jsdxList.filter(item => { userList.value = res.jsdxList.filter(item => {
@ -133,7 +138,17 @@ const getDataById = (id) => {
listQuery.value.jsrxm=userList.value.map(item => item.userName).join(',') listQuery.value.jsrxm=userList.value.map(item => item.userName).join(',')
}); });
}; };
const wjList=ref({})
const changeData = (val) => {
console.log(val);
let wjsize=0
for (let i = 0; i < val.length; i++) {
console.log(val[i].wjdx);
wjsize+= val[i].wjdx
}
listQuery.value.wjdx = wjsize
wjList.value.wjdz =val
};
// 提交 // 提交
const submit = () => { const submit = () => {
elform.value.submit(async (data) => { elform.value.submit(async (data) => {
@ -150,7 +165,7 @@ const submit = () => {
jsbmmc: listQuery.value.jsbmmc[index], jsbmmc: listQuery.value.jsbmmc[index],
})):[] })):[]
const list = [...ryList, ...bmList] const list = [...ryList, ...bmList]
let params = { ...listQuery.value, jsdxList: list }; let params = { ...listQuery.value, jsdxList: list,...wjList.value,wjdz:JSON.stringify(wjList.value.wjdz) };
try { try {
loading.value = true; loading.value = true;
let res let res

View File

@ -1,20 +1,20 @@
<template> <template>
<div> <div>
<div class="titleBox">
<PageTitle title="文件中转"> <!-- 搜索 -->
<el-button type="primary" @click="getDataById('add', '')"> <div ref="searchBox" class="mt10">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" />
</div>
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
<template #left>
<el-button size="small" type="primary" @click="getDataById('add', '')">
<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>
</PageTitle> </PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" />
</div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox"> <div class="tabBox">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight" <MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
@ -28,11 +28,12 @@
</template> </template>
<!-- 操作 --> <!-- 操作 -->
<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="primary" @click="getDataById('detail',row)">详情</el-link> <el-link size="small" type="primary" @click="getDataById('detail', row)">详情</el-link>
<el-link size="small" type="primary" @click="previewFile(row)" v-if="row.wjlx == '.png'||row.wjlx == '.jpg'||row.wjlx == '.jpeg'">预览</el-link> <el-link size="small" type="primary" @click="previewFile(row)"
<el-link size="small" type="primary" @click="downloadFile(row)">下载</el-link> v-if="row.wjlx == '.png' || row.wjlx == '.jpg' || row.wjlx == '.jpeg'">预览</el-link>
<el-link size="small" type="danger" @click="deleteFile(row)">删除</el-link> <el-link size="small" type="primary" @click="downloadFile(row)">下载</el-link>
<el-link size="small" type="danger" @click="deleteFile(row)">删除</el-link>
</template> </template>
</MyTable> </MyTable>
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{ <Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
@ -41,7 +42,7 @@
}"></Pages> }"></Pages>
</div> </div>
</div> </div>
<AddForm ref="addForm" @getList="getList"/> <AddForm ref="addForm" @getList="getList" />
</template> </template>
<script setup> <script setup>
@ -53,7 +54,7 @@ import { useRoute } from 'vue-router'
import { qbcjZxsSelectPage } from "@/api/qbcj.js"; import { qbcjZxsSelectPage } from "@/api/qbcj.js";
import { reactive, ref, onMounted, getCurrentInstance, watch } from "vue"; import { reactive, ref, onMounted, getCurrentInstance, watch } from "vue";
import { getItem } from '@//utils/storage.js' import { getItem } from '@//utils/storage.js'
import { deleteWjZzzAddEntity, getWjZzzAddEntity } from '@//api/qbcj.js' import { deleteWjZzzAddEntity, getWjZzzAddEntity } from '@//api/qbcj.js'
import AddForm from "./components/addForm.vue"; import AddForm from "./components/addForm.vue";
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
// const { D_BZ_CJLX, D_GS_XS_LX } = proxy.$dict("D_BZ_CJLX", "D_GS_XS_LX"); //获取字典数据 // const { D_BZ_CJLX, D_GS_XS_LX } = proxy.$dict("D_BZ_CJLX", "D_GS_XS_LX"); //获取字典数据
@ -88,7 +89,7 @@ const qxkz = reactive({
}) })
const searchConfiger = ref([ const searchConfiger = ref([
{ label: "情报标题", prop: 'qbmc', placeholder: "请输入情报标题", showType: "input" }, { label: "文件名称", prop: 'wjmc', placeholder: "请输入文件名称", showType: "input" },
// { label: "情报来源", prop: 'cjLx', placeholder: "请选择情报来源", showType: "select", options: D_BZ_CJLX }, // { label: "情报来源", prop: 'cjLx', placeholder: "请选择情报来源", showType: "select", options: D_BZ_CJLX },
// { label: "来源单位", prop: 'ssbmdm', placeholder: "请选择来源单位", showType: "department" } // { label: "来源单位", prop: 'ssbmdm', placeholder: "请选择来源单位", showType: "department" }
]); ]);
@ -145,7 +146,7 @@ const changeSize = (val) => {
// 获取列表 // 获取列表
const getList = () => { const getList = () => {
pageData.tableConfiger.loading = true; pageData.tableConfiger.loading = true;
let data = { ...pageData.pageConfiger, ...queryFrom.value,wjlb:'01' }; let data = { ...pageData.pageConfiger, ...queryFrom.value, wjlb: '01' };
getWjZzzAddEntity(data).then(res => { getWjZzzAddEntity(data).then(res => {
pageData.tableData = res.records || []; pageData.tableData = res.records || [];
pageData.total = res.total; pageData.total = res.total;
@ -156,7 +157,7 @@ const getList = () => {
// 表格高度计算 // 表格高度计算
const tabHeightFn = () => { const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250; pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 270;
window.onresize = function () { window.onresize = function () {
tabHeightFn(); tabHeightFn();
}; };
@ -168,47 +169,78 @@ const getRouter = () => {
} }
const addForm = ref(null) const addForm = ref(null)
const getDataById = (type, row) => { const getDataById = (type, row) => {
addForm.value.init(type, row,'01'); addForm.value.init(type, row, '01');
} }
const previewFile = (item) => { const previewFile = (item) => {
window.open(item.wjdz); window.open(item.wjdz);
} }
const downloadFile = async (item) => { const downloadFile = async (item) => {
console.log(item);
try { try {
// 显示加载提示 const dataList =JSON.parse(item.wjdz)
// proxy.$message({ if (dataList.length === 0) {
// message: '开始下载文件...', proxy.$message.warning('没有文件可下载');
// type: 'info', return;
// duration: 0,
// showClose: true
// });
proxy.$message.info('开始下载文件...');
// 使用fetch获取文件内容
const response = await fetch(item.wjdz);
if (!response.ok) {
throw new Error('文件下载失败');
} }
console.log(dataList);
// 将响应转换为Blob对象 const downloadCount = dataList.length;
const blob = await response.blob(); let successCount = 0;
let failCount = 0;
// 创建下载链接 proxy.$message.info(`开始下载${downloadCount}个文件...`);
const downloadLink = document.createElement('a');
downloadLink.href = URL.createObjectURL(blob);
// 设置下载文件的名称 // 并行下载所有文件
downloadLink.download = item.wjmc; const downloadPromises = dataList.map(async (fileData, index) => {
// 触发下载 try {
document.body.appendChild(downloadLink); // 使用fetch获取文件内容
downloadLink.click(); const response = await fetch(fileData.url);
if (!response.ok) {
throw new Error('文件下载失败');
}
// 清理 // 将响应转换为Blob对象
document.body.removeChild(downloadLink); const blob = await response.blob();
URL.revokeObjectURL(downloadLink.href);
// 显示下载成功提示 // 创建下载链接
proxy.$message.success('文件下载成功'); const downloadLink = document.createElement('a');
downloadLink.href = URL.createObjectURL(blob);
// 设置下载文件的名称,避免冲突
const fileName = dataList.length > 1
? `${item.wjmc}_${index + 1}`
: item.wjmc;
downloadLink.download = fileName;
// 触发下载
document.body.appendChild(downloadLink);
downloadLink.click();
// 清理
setTimeout(() => {
document.body.removeChild(downloadLink);
URL.revokeObjectURL(downloadLink.href);
}, 100);
successCount++;
} catch (error) {
console.error(`文件${index + 1}下载失败:`, error);
failCount++;
}
});
// 等待所有下载完成
await Promise.all(downloadPromises);
// 显示下载结果
if (failCount === 0) {
proxy.$message.success(`成功下载${successCount}个文件`);
} else if (successCount === 0) {
proxy.$message.error(`所有${failCount}个文件下载失败`);
} else {
proxy.$message.warning(`成功下载${successCount}个文件,失败${failCount}个文件`);
}
} catch (error) { } catch (error) {
console.error('文件下载失败:', error); console.error('文件下载失败:', error);
proxy.$message.error('文件下载失败,请稍后重试'); proxy.$message.error('文件下载失败,请稍后重试');
@ -220,7 +252,7 @@ const deleteFile = (row) => {
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
deleteWjZzzAddEntity({ids:[row.id]}).then(res => { deleteWjZzzAddEntity({ ids: [row.id] }).then(res => {
proxy.$message.success('删除成功'); proxy.$message.success('删除成功');
getList(); getList();
}).catch(() => { }).catch(() => {

View File

@ -11,6 +11,30 @@
<div class="form-content" v-loading="loading"> <div class="form-content" v-loading="loading">
<!-- <div class="form_cnt"> --> <!-- <div class="form_cnt"> -->
<FormMessage :disabled="disabled" v-model="listQuery" :formList="formData" ref="elform" :rules="rules"> <FormMessage :disabled="disabled" v-model="listQuery" :formList="formData" ref="elform" :rules="rules">
<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>
</div>
</template>
<template #shzt>
<div v-if="disabled">
<h3 class="tags-title">审核状态</h3>
<div style="display: flex;justify-content:space-between;width: 200%;">
<div style="display: flex;">
市审核状态<DictTag v-model:value="listQuery.sldshzt" :options="dict.D_BZ_SSSHZT" :tag="false" />
</div>
<div style="display: flex;">
县审核状态<DictTag v-model:value="listQuery.xldshzt" :options="dict.D_BZ_SSSHZT" :tag="false" />
</div>
</div>
</div>
</template>
</FormMessage> </FormMessage>
<!-- </div> --> <!-- </div> -->
<div class="tags-section" v-if="disabled"> <div class="tags-section" v-if="disabled">
@ -109,7 +133,7 @@
<script setup> <script setup>
import FormMessage from "@/components/aboutTable/FormMessage.vue"; import FormMessage from "@/components/aboutTable/FormMessage.vue";
import { xxcjAddEntity, xxcjUpdateEntity, xxcjSelectByid, xxcjSelectCzlcList, xxcjSelectListBc, xxcjDeletesBc, addEntity, xxcjXxzhs } from "@/api/xxcj.js" import { xxcjAddEntity, xxcjUpdateEntity, xxcjSelectByid, xxcjSelectCzlcList, xxcjSelectListBc, xxcjDeletesBc, addEntity, xxcjTjcll, xxcjXxzhs } from "@/api/xxcj.js"
import { EditPen, Delete } from '@element-plus/icons-vue' import { EditPen, Delete } from '@element-plus/icons-vue'
import { ref, defineExpose, onMounted, defineEmits, watch, getCurrentInstance } from "vue" import { ref, defineExpose, onMounted, defineEmits, watch, getCurrentInstance } from "vue"
import { ElMessage } from 'element-plus'; import { ElMessage } from 'element-plus';
@ -117,6 +141,7 @@ import { getItem } from '@//utils/storage.js'
import { useRoute, useRouter } from 'vue-router' import { useRoute, useRouter } from 'vue-router'
import pursueContent from "@/views/backOfficeSystem/HumanIntelligence/components/pursueContent.vue"; import pursueContent from "@/views/backOfficeSystem/HumanIntelligence/components/pursueContent.vue";
import * as MOSTY from "@/components/MyComponents/index"; import * as MOSTY from "@/components/MyComponents/index";
const { proxy } = getCurrentInstance() const { proxy } = getCurrentInstance()
const emit = defineEmits(["getList"]); const emit = defineEmits(["getList"]);
const props = defineProps({ const props = defineProps({
@ -138,7 +163,14 @@ const rules = ref({
qbnr: [{ required: true, message: "请输入情报内容", trigger: "blur" }], qbnr: [{ required: true, message: "请输入情报内容", trigger: "blur" }],
bcnr: [{ required: true, message: "请输入续报内容", trigger: "blur" }], bcnr: [{ required: true, message: "请输入续报内容", trigger: "blur" }],
}) })
const tjcll = ref({})
const getXxcjTjcll = () => {
xxcjTjcll({}).then(res => {
tjcll.value = res
}).catch(error => {
console.error('请求失败:', error)
})
}
watch(() => dialogForm.value, (val) => { watch(() => dialogForm.value, (val) => {
if (val) { if (val) {
if (formType.value === 'followUpReport') { if (formType.value === 'followUpReport') {
@ -151,6 +183,8 @@ watch(() => dialogForm.value, (val) => {
{ label: "情报标题", prop: "qbmc", type: "input", width: '45%' }, { label: "情报标题", prop: "qbmc", type: "input", width: '45%' },
{ label: "情报内容", prop: "qbnr", type: "textarea", width: '100%', rows: 100 }, { label: "情报内容", prop: "qbnr", type: "textarea", width: '100%', rows: 100 },
{ label: "附件上传", prop: "fjdz", type: "upload", width: '100%', isImg: false }, { label: "附件上传", prop: "fjdz", type: "upload", width: '100%', isImg: false },
{ label: "", prop: "jbxx", type: "slot", width: '100%',},
{ label: "", prop: "shzt", type: "slot", width: '100%' },
] ]
} }
} }
@ -159,6 +193,7 @@ const fjdz = ref()
const listQuery = ref({}); //表单 const listQuery = ref({}); //表单
const elform = ref(); const elform = ref();
onMounted(() => { onMounted(() => {
}) })
const msgeDat = ref() const msgeDat = ref()
const title = ref("") const title = ref("")
@ -166,8 +201,13 @@ const showPj = ref(false)
const disabled = ref(false) const disabled = ref(false)
/** 类型 add 新增 info 详情 edit 编辑 followUpReport 续报*/ /** 类型 add 新增 info 详情 edit 编辑 followUpReport 续报*/
const formType = ref('add') const formType = ref('add')
const userInfo = ref({})
const userName = ref('')
// 初始化数据 // 初始化数据
const init = (type, row) => { const init = (type, row) => {
userInfo.value = getItem('deptId') ? getItem('deptId')[0] : {}
userName.value = getItem('USERNAME')
getXxcjTjcll()
const titleObj = { const titleObj = {
add: "新增", add: "新增",
info: "详情", info: "详情",
@ -266,7 +306,6 @@ const lcList = ref([])
const getqbcjPldb = (id) => { const getqbcjPldb = (id) => {
xxcjSelectCzlcList({ qbid: id }).then(res => { xxcjSelectCzlcList({ qbid: id }).then(res => {
console.log(res); console.log(res);
lcList.value = res || [] lcList.value = res || []
}) })
.catch(() => { .catch(() => {

View File

@ -1,63 +1,42 @@
<template> <template>
<div> <div>
<div class="titleBox">
<PageTitle :title="titleData">
<el-button type="primary" @click="addEdit('add')">
<el-icon style="vertical-align: middle">
<CirclePlus />
</el-icon>
<span style="vertical-align: middle">新增</span>
</el-button>
<el-button type="primary" @click="dologCancel()">
<el-icon style="vertical-align: middle">
<CirclePlus />
</el-icon>
<span style="vertical-align: middle">导出</span>
</el-button>
<el-button type="primary" :disabled="ids.length === 0" @click="FollowUpOnLeads(ids)"
v-if="qxkz.deptLevel == '01'">
<el-icon style="vertical-align: middle">
<CirclePlus />
</el-icon>
<span style="vertical-align: middle">转线索</span>
</el-button>
<!-- <el-button type="primary" :disabled="ids.length === 0" @click="batchMark(ids)" v-if="qxkz.deptLevel == '01'">
<el-icon style="vertical-align: middle">
<CirclePlus />
</el-icon>
<span style="vertical-align: middle">转合成</span>
</el-button> -->
<!-- <el-button type="primary" :disabled="ids.length === 0" @click="batchMark(ids)" v-if="qxkz.deptLevel == '01'">
<el-icon style="vertical-align: middle">
<CirclePlus />
</el-icon>
<span style="vertical-align: middle">分组</span>
</el-button> -->
<el-button type="primary" :disabled="ids.length === 0" @click="handleSumbit(ids)" v-if="qxkz.deptLevel != '01'">
<el-icon style="vertical-align: middle">
<CirclePlus />
</el-icon>
<span style="vertical-align: middle">上报</span>
</el-button>
<el-button type="primary" :disabled="ids.length === 0" @click="delDictItem(ids)">
<el-icon style="vertical-align: middle">
<CirclePlus />
</el-icon>
<span style="vertical-align: middle">删除</span>
</el-button>
</PageTitle>
</div>
<!-- 搜索 --> <!-- 搜索 -->
<div ref="searchBox"> <div ref="searchBox" class="mt10">
<Searchs :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" /> <Searchs :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" />
</div> </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' }"> <div class="tabBox" :style="{ height: (pageData.tableHeight + 40) + 'px' }">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight" <MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth" :key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
@chooseData="chooseData"> @chooseData="chooseData" @handleCellClick="openXxqk">
<template #qblx="{ row }"> <template #qblx="{ row }">
<DictTag :tag="false" :value="row.qblx" :options="D_GS_XS_LX" /> <DictTag :tag="false" :value="row.qblx" :options="D_GS_XS_LX" />
</template> </template>
@ -70,39 +49,48 @@
<template #lczt="{ row }"> <template #lczt="{ row }">
<DictTag :tag="false" :value="row.lczt" :options="D_BZ_LCZT" /> <DictTag :tag="false" :value="row.lczt" :options="D_BZ_LCZT" />
</template> </template>
<!-- 操作 -->
<template #controls="{ row }"> <template #cyqk="{ row }">
<!-- 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)">上报</el-link>
<!-- 只有上报状态才能进行采纳 -->
<el-link v-if="isShowBtn('采纳')" size="small" type="danger" @click="cnMsg(row)" <el-link v-if="isShowBtn('采纳')" size="small" type="danger" @click="cnMsg(row)"
:disabled="butcontroll('02',row.lczt)">采纳</el-link> :disabled="butcontroll('04', row.lczt)">采纳</el-link>
<!-- 只有上报状态才能回退 --> <!-- 只有上报状态才能回退 -->
<el-link v-if="isShowBtn('回退')" size="small" type="danger" @click="rollbackNewspapers(row)" <el-link v-if="isShowBtn('回退')" size="small" type="danger" @click="rollbackNewspapers(row)"
:disabled="butcontroll('03',row.lczt)">回退</el-link> :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)" <el-link v-if="isShowBtn('分组')" size="small" type="primary" @click="opneMsg(row)"
:disabled="butcontroll('01',row.lczt)">分组</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" @click="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" <el-link v-if="isShowBtn('续报', row)" size="small" type="primary" @click="addEdit('followUpReport', row)">续报</el-link>
@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="butcontroll('01',row.lczt)">转线索</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('关注部门')" size="small" type="primary" @click="FollowUpOnDept(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)" <el-link v-if="isShowBtn('打标签')" size="small" type="primary" @click="openCustomTag(row)"
:disabled="butcontroll('01',row.lczt)">打标签</el-link> :disabled="row.sldshzt != '02' ">打标签</el-link>
</template> </template>
</MyTable> </MyTable>
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{ <Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
@ -111,7 +99,7 @@
}"></Pages> }"></Pages>
</div> </div>
<!-- 新增 --> <!-- 新增 -->
<AddForm ref="detailDiloag" @getList="getList" :titleData="titleData" :dict="{D_BZ_LCZT}" /> <AddForm ref="detailDiloag" @getList="getList" :titleData="titleData" :dict="{ D_BZ_LCZT, D_BZ_SSSHZT }" />
</div> </div>
<ExportFile v-model="exportFileModel" :tableColumn="tableColumn" :dict="{ D_GS_XS_LY, D_GS_XS_LX, D_GS_XS_LX }" <ExportFile v-model="exportFileModel" :tableColumn="tableColumn" :dict="{ D_GS_XS_LY, D_GS_XS_LX, D_GS_XS_LX }"
:dataModel="pageData.tableData" /> :dataModel="pageData.tableData" />
@ -135,7 +123,7 @@ import Searchs from "@/components/aboutTable/Search.vue";
import AddForm from "./components/addForm.vue"; import AddForm from "./components/addForm.vue";
import { useRouter, useRoute } from 'vue-router' import { useRouter, useRoute } from 'vue-router'
import { qbcjSelectQbsbPage, qbcjDeletes, qbcjCzzt, qbcjPlsb } from "@/api/Intelligence.js"; import { qbcjSelectQbsbPage, qbcjDeletes, qbcjCzzt, qbcjPlsb } from "@/api/Intelligence.js";
import { xxcjSelectXxsbPage, xxcjDeletes, xxcjXxzsx, xxcjUpdateCzlc, xxcjXxqd } from '@/api/xxcj.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 MakeTag from '../components/maketag.vue'
import ExportFile from './components/exportFile.vue' import ExportFile from './components/exportFile.vue'
@ -148,11 +136,11 @@ import transferMerchant from "./components/transferMerchant.vue";
import { isShiQingZhi } from "@/utils/auth.js" import { isShiQingZhi } from "@/utils/auth.js"
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const { D_GS_XS_LY, D_BZ_SSZT, D_BZ_SF, D_GS_XS_LX, D_BZ_BQJB, 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_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_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 } = D_XXCJ_BQLX } =
proxy.$dict("D_BZ_BMJB", "D_GS_XS_LY", 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_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"); //获取字典数据 "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 detailDiloag = ref();
@ -173,12 +161,13 @@ const isShowTransferMerchantTc = ref(false)
const isShow = ref(false) const isShow = ref(false)
const searchConfiger = ref([ const searchConfiger = ref([
{ label: "录入人", prop: 'xssbr', placeholder: "请输入录入人", showType: "input" },
{ label: "录入单位", prop: "ssbmdm", placeholder: "请选择录入单位", showType: "department" },
{ label: "编号", prop: 'xsBh', placeholder: "请输入编号", showType: "input" },
{ label: "时间", prop: "startTime", placeholder: "请选择时间", showType: "daterange" }, { label: "时间", prop: "startTime", placeholder: "请选择时间", showType: "daterange" },
{ label: "所属单位", prop: "ssbmdm", placeholder: "请选择所属单位", showType: "department" },
{ label: "情报标题", prop: 'qbmc', placeholder: "请输入情报标题", showType: "input" }, { label: "情报标题", prop: 'qbmc', placeholder: "请输入情报标题", showType: "input" },
{ 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: 'xsBh', placeholder: "请输入线索编号", showType: "input" },
{ label: "关键字", prop: 'keyword', placeholder: "请输入关键字", showType: "input" }, { label: "关键字", prop: 'keyword', placeholder: "请输入关键字", showType: "input" },
]); ]);
const pageData = reactive({ const pageData = reactive({
@ -200,7 +189,11 @@ const pageData = reactive({
{ label: "情报编号", prop: "xsBh" }, { label: "情报编号", prop: "xsBh" },
{ label: "情报标题", prop: "qbmc" }, { label: "情报标题", prop: "qbmc" },
{ label: "情报来源", prop: "qbly", showSolt: true }, { label: "情报来源", prop: "qbly", showSolt: true },
{ label: "上报人", prop: "xssbr" },
{ label: "上报单位", prop: "ssbm" },
{ label: "流程状态", prop: "lczt", showSolt: true }, { label: "流程状态", prop: "lczt", showSolt: true },
{ label: "采用情况", prop: "cyqk", showSolt: true },
// { label: "标签内容", prop: "lczt", showSolt: true },
// { label: "消息状态", prop: "czzt", showSolt: true }, // { label: "消息状态", prop: "czzt", showSolt: true },
] ]
}); });
@ -212,12 +205,12 @@ const dataList = ref()
// 采纳 // 采纳
const cnMsg = (item) => { const cnMsg = (item) => {
// if ( qxkz.depBool) { // if ( qxkz.depBool) {
proxy.$confirm("确定要采纳", "警告", { type: "warning" }).then(() => { proxy.$confirm("确定要采纳", "警告", { type: "warning" }).then(() => {
xxcjUpdateCzlc({ id: item.id, lczt: '04' }).then(res => { xxcjUpdateCzlc({ id: item.id, lczt: '04' }).then(res => {
proxy.$message({ type: "success", message: "采纳成功" }); proxy.$message({ type: "success", message: "采纳成功" });
getList(); getList();
}) })
}).catch(() => { }); }).catch(() => { });
// } // }
@ -242,7 +235,7 @@ const rollbackNewspapers = (item) => {
// }) // })
// return // return
// } // }
if ( item.qbjb == '00') { if (item.qbjb == '00') {
ElMessageBox.prompt('请输入回退原因', '警告', { ElMessageBox.prompt('请输入回退原因', '警告', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
@ -288,8 +281,8 @@ const appearNewspapers = (item) => {
} }
// 分组 // 分组
const opneMsg = (item) => { const opneMsg = (item) => {
chooseRow.value = true chooseRow.value = true
dataList.value = [item] dataList.value = [item]
} }
// 打标签 // 打标签
const customTagShow = ref(false) const customTagShow = ref(false)
@ -361,6 +354,7 @@ const handleSumbit = () => {
// <!-- [04、06、07、08、09] -->打标签 // <!-- [04、06、07、08、09] -->打标签
// <!-- [03、05] -->采纳 // <!-- [03、05] -->采纳
// <!-- [04] -->回退 // <!-- [04] -->回退
// <!-- 01 提交 02 上报县局 03 上班市局 04 采纳 05 退回 06 打标签 07 转合成 08 转线索 09 转会商v-if="qxkz.deptLevel == '01'" -->
const butcontroll = (val, zt) => { const butcontroll = (val, zt) => {
switch (val) { switch (val) {
case '01': case '01':
@ -368,7 +362,9 @@ const butcontroll = (val, zt) => {
case '02': case '02':
return !(['03', '05'].includes(zt)) return !(['03', '05'].includes(zt))
case '03': case '03':
return !(['02','03','04'].includes(zt)) return !(['02', '03', '04'].includes(zt))
case '04':
return ([ '04', '05' ,'06', '07', '08', '09'].includes(zt))
} }
} }
@ -436,7 +432,14 @@ const addEdit = (type, row) => {
detailDiloag.value.init(type, row); detailDiloag.value.init(type, row);
}, 500) }, 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 route = useRoute()
const titleData = ref() const titleData = ref()
const qxkz = reactive({ const qxkz = reactive({
@ -445,6 +448,8 @@ const qxkz = reactive({
roleCode: false, roleCode: false,
depBool: false depBool: false
}); });
const qxzt = ref(false)
onMounted(() => { onMounted(() => {
const { deptBizType, deptLevel } = getItem('deptId')[0] const { deptBizType, deptLevel } = getItem('deptId')[0]
const Jb = deptLevel[0] == '2' ? '01' : deptLevel[0] == '3' ? '02' : '03' const Jb = deptLevel[0] == '2' ? '01' : deptLevel[0] == '3' ? '02' : '03'
@ -481,7 +486,7 @@ const dologCancel = () => {
// 表格高度计算 // 表格高度计算
const tabHeightFn = () => { const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250; pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
window.onresize = function () { window.onresize = function () {
tabHeightFn(); tabHeightFn();
}; };
@ -521,6 +526,13 @@ const openFkDialogszl = (row) => {
} }
} }
/** 获取当前角色 */ /** 获取当前角色 */
function getRole() { function getRole() {
const { deptBizType, deptLevel } = getItem('deptId')[0] const { deptBizType, deptLevel } = getItem('deptId')[0]
@ -542,8 +554,8 @@ const isShowBtn = (btnName, row = {}) => {
/** 按钮权限 */ /** 按钮权限 */
const buttonPermissions = { const buttonPermissions = {
"市情指领导": ["肯定", "采纳", "回退", "分组", "转线索", "转合成", "转会商", "打标签", "修改", "详情", "关注部门"], "市情指领导": ["肯定", "采纳", "回退", "分组", "转线索", "转合成", "转会商", "打标签", "修改", "详情", "关注部门"],
"市情指挥人员": ["采纳", "回退", "分组", "转线索", "转合成", "转会商", "打标签", "修改", "详情", "关注部门"], "市情指挥人员": ["采纳", "回退", "分组", "转线索", "转合成", "转会商", "打标签", "修改", "详情", "关注部门", "送审"],
"县情指人员": ["上报", "回退", "修改", "详情"], "县情指人员": ["上报", "回退", "修改", "详情", "送审"],
"部门": ["上报", "新增", "修改", "续报", "详情"] "部门": ["上报", "新增", "修改", "续报", "详情"]
}; };
@ -564,7 +576,29 @@ const handleTransferMerchant = (row) => {
} }
// 送审
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>
@ -600,4 +634,8 @@ const handleTransferMerchant = (row) => {
height: calc(100% - 50px); height: calc(100% - 50px);
overflow: auto; overflow: auto;
} }
.vertical-middle {
vertical-align: middle;
}
</style> </style>

View File

@ -1,25 +1,25 @@
<template> <template>
<div> <div>
<div class="titleBox">
<PageTitle title="临安码线索"> <!-- 搜索 -->
<el-button type="primary" @click="addEdit('add', null)"> <div ref="searchBox" class="mt10">
<Search :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" size="small" @click="addEdit('add', null)">
<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>
<el-button type="danger" @click="plDelDictItem"> <el-button type="danger" size="small" @click="plDelDictItem">
<el-icon style="vertical-align: middle"> <el-icon style="vertical-align: middle">
<Dete /> <Dete />
</el-icon> </el-icon>
<span style="vertical-align: middle">批量删除</span> <span style="vertical-align: middle">批量删除</span>
</el-button> </el-button></template>
</PageTitle> </PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" />
</div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox"> <div class="tabBox">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight" <MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"

View File

@ -1,13 +1,20 @@
<template> <template>
<div> <div>
<div class="titleBox">
<PageTitle :title="routerMate.title"> <!-- 搜索 -->
<el-button type="primary" @click="dologCancel()"> <div ref="searchBox" class="mt10">
<Search :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="dologCancel()" size="small">
<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>
<!-- <el-button v-if="qxkz.deptLevel == '01'" type="primary" :disabled="ids.length === 0" @click="batchMark(ids)"> <!-- <el-button v-if="qxkz.deptLevel == '01'" type="primary" :disabled="ids.length === 0" @click="batchMark(ids)">
<el-icon style="vertical-align: middle"> <el-icon style="vertical-align: middle">
<CirclePlus /> <CirclePlus />
@ -15,12 +22,6 @@
<span style="vertical-align: middle">批量打标</span> <span style="vertical-align: middle">批量打标</span>
</el-button> --> </el-button> -->
</PageTitle> </PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" />
</div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox"> <div class="tabBox">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight" <MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"

View File

@ -1,14 +1,11 @@
<template> <template>
<div> <div>
<div class="titleBox">
<PageTitle title="蜂群信息上报"/>
</div>
<!-- 搜索 --> <!-- 搜索 -->
<div ref="searchBox"> <div ref="searchBox" class="mt10 mb10">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search> <Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
</div> </div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox"> <div class="tabBox heightBox">
<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">
@ -147,7 +144,7 @@ addForm.value.init(type, row,);
// 表格高度计算 // 表格高度计算
const tabHeightFn = () => { const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250; pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 200;
window.onresize = function() { window.onresize = function() {
tabHeightFn(); tabHeightFn();
}; };

View File

@ -1,22 +1,22 @@
<template> <template>
<div> <div>
<div class="titleBox"> <!-- 搜索 -->
<PageTitle title="布控区域" > <div ref="searchBox" class="mt10 mb10">
<el-button type="primary" @click="handleRow('add', '')"> <Search :searchArr="searchConfiger" @submit="onSearch" />
</div>
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
<template #left>
<el-button type="primary" @click="handleRow('add', '')" size="small">
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon> <el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
<span style="vertical-align: middle">新增</span> <span style="vertical-align: middle">新增</span>
</el-button> </el-button>
<el-button type="danger" @click="handleRow('moreDelete', '')">批量删除</el-button> <el-button type="danger" size="small" @click="handleRow('moreDelete', '')">批量删除</el-button>
</PageTitle> </template>
</div> </PageTitle>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" />
</div>
<!-- 按钮组 --> <!-- 按钮组 -->
<div class="content"> <div class="content">
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox"> <div class="tabBox heightBox">
<MyTable <MyTable
:tableData="pageData.tableData" :tableData="pageData.tableData"
:tableColumn="pageData.tableColumn" :tableColumn="pageData.tableColumn"

View File

@ -1,17 +1,18 @@
<template> <template>
<div> <div>
<div class="titleBox">
<PageTitle title="标签布控" > <!-- 搜索 -->
<el-button type="primary" size="small" @click="AddFrom('add', '')"> <div ref="searchBox" class="mt10">
<Search :searchArr="searchConfiger" @submit="onSearch"></Search>
</div>
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
<template #left>
<el-button type="primary" size="small" @click="AddFrom('add', '')">
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon> <el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
<span style="vertical-align: middle">新增</span> <span style="vertical-align: middle">新增</span>
</el-button> </el-button>
</template>
</PageTitle> </PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch"></Search>
</div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox"> <div class="tabBox">
<MyTable <MyTable

View File

@ -68,7 +68,7 @@
</div> </div>
<div style="width: 100%;" class="mt10"> <div style="width: 100%;" class="mt10">
<el-form-item prop="bkDj" label="布控部门" v-if="props.name == 'myControl'"> <el-form-item prop="bkDj" label="布控等级" v-if="props.name == 'myControl'">
<MOSTY.Select v-model="listQuery.bkDj" :dictEnum="props.dic.D_GS_SSYJ" placeholder="请选择布控级别" <MOSTY.Select v-model="listQuery.bkDj" :dictEnum="props.dic.D_GS_SSYJ" placeholder="请选择布控级别"
clearable /> clearable />
</el-form-item> </el-form-item>
@ -192,6 +192,7 @@ const rules = reactive({
czJsdwdm: [{ required: true, message: "请选择处置接收单位", trigger: "change" }], czJsdwdm: [{ required: true, message: "请选择处置接收单位", trigger: "change" }],
bkshrSsbmdm: [{ required: true, message: "请选择审核部门", trigger: "change" }], bkshrSsbmdm: [{ required: true, message: "请选择审核部门", trigger: "change" }],
bksprSsbmdm: [{ required: true, message: "请选择审批部门", trigger: "change" }], bksprSsbmdm: [{ required: true, message: "请选择审批部门", trigger: "change" }],
czYq: [{ required: true, message: "请选择处置要求", trigger: "change" }],
}) })
let tableDate = reactive({ let tableDate = reactive({
keyCount: 0, keyCount: 0,

View File

@ -0,0 +1,263 @@
<template>
<el-dialog :model-value="modelValue" :destroy-on-close="true" title="回执单" @close="close"
:close-on-click-modal="false">
<div class="hzd-container">
<h2 class="hzd-title">林芝市公安局临时布控工作回执单</h2>
<table class="hzd-table">
<tr>
<td class="hzd-label">布控对象</td>
<td class="hzd-value">{{ listQuery.bkdx }}</td>
<td class="hzd-label">申请日期</td>
<td class="hzd-value">
<el-date-picker v-model="listQuery.sqrq" type="datetime" value-format="YYYY-MM-DD HH:mm:ss"
placeholder="请选择日期" style="width: 100%" />
</td>
</tr>
<tr>
<td class="hzd-label">对象信息</td>
<td class="hzd-value" colspan="3">{{ listQuery.bkdxList }}</td>
</tr>
<tr>
<td class="hzd-label">布控来源</td>
<td class="hzd-value">{{ listQuery.ly }}</td>
<td class="hzd-label">布控范围</td>
<td class="hzd-value">全市工布江达县</td>
</tr>
<tr>
<td class="hzd-label">布控级别</td>
<td class="hzd-value">{{ listQuery.dj }}</td>
<td class="hzd-label">处置要求</td>
<td class="hzd-value">{{ listQuery.czyq }}</td>
</tr>
<tr>
<td class="hzd-label">经办人员</td>
<td class="hzd-value">{{ listQuery.bkcjrXm }}</td>
<td class="hzd-label">联系方式</td>
<td class="hzd-value">
<el-input v-model="listQuery.lxfs" style="width: 100%" placeholder="请输入经办人联系方式" />
</td>
</tr>
<tr>
<td class="hzd-label">布控理由</td>
<td class="hzd-value" colspan="3">
<el-input v-model="listQuery.bkSy" style="width: 100%" placeholder="请输入布控理由" />
</td>
</tr>
<tr>
<td class="hzd-label">执法依据</td>
<td class="hzd-value" colspan="3">
<el-input v-model="listQuery.zfyj" style="width: 100%" placeholder="请输入执法依据" />
</td>
</tr>
<tr>
<td class="hzd-label">布控时间</td>
<td class="hzd-value">
<el-date-picker v-model="listQuery.bkSjKs" type="datetime" value-format="YYYY-MM-DD HH:mm:ss"
placeholder="请选择日期" style="width: 100%" />
</td>
<td class="hzd-label">布控时间</td>
<td class="hzd-value">
<el-date-picker v-model="listQuery.bkSjJs" type="datetime" value-format="YYYY-MM-DD HH:mm:ss"
placeholder="请选择日期" style="width: 100%" />
</td>
</tr>
<tr>
<td class="hzd-label">布控结果</td>
<td class="hzd-value" colspan="3">{{ listQuery.bkzt }}</td>
</tr>
<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>
</td>
</tr>
</table>
</div>
<template #footer>
<div class="flex just-center">
<el-button @click="close">取消</el-button>
<el-button type="primary" @click="exportWord">导出Word</el-button>
</div>
</template>
</el-dialog>
</template>
<script setup>
import { reactive, ref, getCurrentInstance, watch } from 'vue';
import { timeValidate } from '@/utils/tools'
import { saveAs } from 'file-saver'
const props = defineProps({
modelValue: {
type: Boolean,
default: false
},
bkDx: {
type: String,
default: '01'
},
dataList: {
type: Object,
default: () => ({})
}, dict: {
type: Object,
default: () => ({})
},
name: {
type: String,
default: ''
}
})
const emits = defineEmits(["update:modelValue", "choosed", "choosedAdd"]);
const { proxy } = getCurrentInstance();
const { D_BZ_XB, D_GS_ZDR_YJDJ } = proxy.$dict("D_BZ_XB", "D_GS_ZDR_YJDJ"); // 获取字典数据
const input = ref('')
const value1 = ref('')
const value2 = ref('')
const listQuery = ref({})
watch(() => props.dataList, (newVal) => {
if (newVal) {
listQuery.value = newVal
listQuery.value.bkdxList = newVal.bkdxList.map(item => {
return item.rySfzh
}).join(',')
listQuery.value.sqrq = timeValidate()
listQuery.value.bkdx = props.dict.D_GS_BK_NEWDX.find(item => item.dm == listQuery.value.bkDx).zdmc
listQuery.value.ly = props.dict.D_BZ_BKLYS.find(item => item.dm == listQuery.value.bkly).zdmc
listQuery.value.czyq =listQuery.value.czYq? props.dict.D_GS_BK_CZYQ.find(item => item.dm == listQuery.value.czYq).zdmc:""
listQuery.value.bkzt = props.dict.D_GZL_SHZT.find(item => item.dm == listQuery.value.bkZt).zdmc
if (props.name == 'myControl') {
listQuery.value.dj = props.dict.D_GS_SSYJ.find(item => item.dm == listQuery.value.bkDj).zdmc
} else {
listQuery.value.dj = props.dict.D_BZ_JQDJ.find(item => item.dm == listQuery.value.bkDj).zdmc
}
}
})
// options: route.name == 'myControl' ? D_GS_SSYJ : D_BZ_JQDJ
const submitForm = () => {
elform.value.submit((val) => {
val.id = new Date().getTime()
emits('choosedAdd', val)
close()
})
}
const close = async () => {
emits("update:modelValue", false);
}
const exportWord = () => {
// 获取表格HTML内容
const tableElement = document.querySelector('.hzd-table');
if (!tableElement) return;
// 克隆表格以避免修改原始DOM
const clonedTable = tableElement.cloneNode(true);
// 处理备注输入框的值
const noteCell = clonedTable.querySelector('.hzd-value[colspan="3"]:last-child');
if (noteCell) {
const inputElement = noteCell.querySelector('el-input');
const inputValue = noteCell.querySelector('.input-value');
if (inputValue) {
// 清空单元格内容并添加纯文本值
noteCell.innerHTML = inputValue.textContent || '';
}
}
// 处理其他输入框和日期选择器的值
const inputElements = clonedTable.querySelectorAll('input');
inputElements.forEach(input => {
const parentTd = input.closest('td');
if (parentTd) {
// 替换为输入框的值
parentTd.innerHTML = input.value || '';
}
});
// 构建完整的HTML内容
const htmlContent = `
<html>
<head>
<meta charset="utf-8">
<style>
body { font-family: SimSun, serif; }
h2 { text-align: center; margin-bottom: 20px; }
table {
width: 100%;
border-collapse: collapse;
margin: 0 auto;
}
td {
border: 1px solid #000;
padding: 8px;
text-align: left;
}
.hzd-label {
font-weight: bold;
width: 150px;
background-color: #f5f7fa;
}
</style>
</head>
<body>
<h2>林芝市公安局临时布控工作回执单</h2>
${clonedTable.outerHTML}
</body>
</html>
`;
// 创建Blob对象并下载
const blob = new Blob([htmlContent], { type: 'application/msword' });
saveAs(blob, '布控工作回执单.doc');
}
</script>
<style lang="scss" scoped>
.hzd-container {
width: 100%;
padding: 20px;
box-sizing: border-box;
}
.hzd-title {
text-align: center;
font-size: 18px;
font-weight: bold;
margin-bottom: 20px;
}
.hzd-table {
width: 100%;
border-collapse: collapse;
border: 1px solid #000;
}
.hzd-table td {
border: 1px solid #000;
padding: 8px;
text-align: left;
}
.hzd-label {
font-weight: bold;
width: 150px;
background-color: #f5f7fa;
}
.hzd-value {
width: calc((100% - 150px) / 3);
}
.hzd-table td[colspan="3"] {
width: calc(100% - 150px);
}
</style>

View File

@ -1,14 +1,14 @@
<template> <template>
<div> <div>
<div class="titleBox">
<PageTitle :title=" route.meta.title ">
<el-button type="primary" @click="handleAdd('add', null)">发起布控</el-button>
</PageTitle>
</div>
<!-- 搜索 --> <!-- 搜索 -->
<div ref="searchBox"> <div ref="searchBox" class="mt10">
<Search :searchArr="searchConfiger" @submit="onSearch" /> <Search :searchArr="searchConfiger" @submit="onSearch" />
</div> </div>
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
<template #left>
<el-button type="primary" size="small" @click="handleAdd('add', null)">发起布控</el-button>
</template>
</PageTitle>
<!-- 按钮组 --> <!-- 按钮组 -->
<div class="content"> <div class="content">
<!-- 表格 --> <!-- 表格 -->
@ -20,8 +20,8 @@
<DictTag :tag="false" :value="row.bkZt" :options="D_GS_BK_ZT" /> <DictTag :tag="false" :value="row.bkZt" :options="D_GS_BK_ZT" />
</template> </template>
<template #bkDj="{ row }"> <template #bkDj="{ row }">
<DictTag :tag="false" :value="row.bkDj" :options="D_GS_SSYJ" v-if="route.name=='myControl'" /> <DictTag :tag="false" :value="row.bkDj" :options="D_GS_SSYJ" v-if="route.name == 'myControl'" />
<DictTag :tag="false" :value="row.bkDj" :options="D_BZ_JQDJ" v-else/> <DictTag :tag="false" :value="row.bkDj" :options="D_BZ_JQDJ" v-else />
</template> </template>
<template #bkDx="{ row }"> <template #bkDx="{ row }">
<DictTag :tag="false" :value="row.bkDx" :options="D_GS_BK_NEWDX" /> <DictTag :tag="false" :value="row.bkDx" :options="D_GS_BK_NEWDX" />
@ -49,12 +49,13 @@
<template v-if="!row.gzlid"> <template v-if="!row.gzlid">
<el-link type="primary" v-if="['01', '03', '06'].includes(row.bkZt)" size="small" <el-link type="primary" v-if="['01', '03', '06'].includes(row.bkZt)" size="small"
@click="createProcess(row)">送审</el-link> @click="createProcess(row)">送审</el-link>
<el-link type="primary" size="small" @click="tbGsxtBkQuashList( row)" v-else>撤控</el-link> <el-link type="primary" size="small" @click="tbGsxtBkQuashList(row)" v-else>撤控</el-link>
<el-link type="primary" v-if="['01', '03', '06'].includes(row.bkZt)" size="small" <el-link type="primary" v-if="['01', '03', '06'].includes(row.bkZt)" size="small"
@click="handleAdd('edit', row)">编辑</el-link> @click="handleAdd('edit', row)">编辑</el-link>
</template> </template>
<!-- 审核通过后才有轨迹 --> <!-- 审核通过后才有轨迹 -->
<el-link type="primary" size="small" @click="openShowHzd(row)">回执单</el-link>
<el-link type="primary" size="small" @click="handleAdd('detail', row)">详情</el-link> <el-link type="primary" size="small" @click="handleAdd('detail', row)">详情</el-link>
<el-link type="danger" size="small" @click="handleRow(row.id)" <el-link type="danger" size="small" @click="handleRow(row.id)"
v-if="['01', '03', '06'].includes(row.bkZt)">删除</el-link> v-if="['01', '03', '06'].includes(row.bkZt)">删除</el-link>
@ -69,13 +70,14 @@
</div> </div>
<!-- 布控类型 --> <!-- 布控类型 -->
<AddBkdx ref="addBkdxForm" @change="getList" :name="route.name" :dic="{ <AddBkdx ref="addBkdxForm" @change="getList" :name="route.name" :dic="{
D_GS_BK_NEWDX, D_GS_BK_BKYS, D_BZ_XB, D_GS_BK_CZYQ,D_BZ_JQDJ,D_BZ_BKLYS, D_GS_BK_NEWDX, D_GS_BK_BKYS, D_BZ_XB, D_GS_BK_CZYQ, D_BZ_JQDJ, D_BZ_BKLYS,
D_GS_SSYJ, BD_BK_CLYJBQ, D_GS_BK_CZJSDWLX, D_GS_BK_TJFS, D_GS_ZDR_YJDJ, D_GS_SSYJ, BD_BK_CLYJBQ, D_GS_BK_CZJSDWLX, D_GS_BK_TJFS, D_GS_ZDR_YJDJ,
}" /> }" />
<!-- 预警弹窗 --> <!-- 预警弹窗 -->
<YjDialog ref="warningkdxForm"></YjDialog> <YjDialog ref="warningkdxForm"></YjDialog>
<SubmissionProcess v-model="showSp" :data="rowData" :userData="{ ajmc: '布控审批', flowType: 'BKSP', modelName: '布控' }" <SubmissionProcess v-model="showSp" :data="rowData" :userData="{ ajmc: '布控审批', flowType: 'BKSP', modelName: '布控' }"
:path="fixedValue" @getList="getList" /> :path="fixedValue" @getList="getList" />
<Hzd v-model="hzdVisible" :dataList="dataList" :dict="{D_GS_BK_NEWDX,D_BZ_BKLYS,D_GS_SSYJ,D_BZ_JQDJ,D_GZL_SHZT,D_GS_BK_CZYQ}" :name="route.name" />
</template> </template>
<script setup> <script setup>
@ -87,18 +89,19 @@ import Pages from "@/components/aboutTable/Pages.vue";
import Search from "@/components/aboutTable/Search.vue"; import Search from "@/components/aboutTable/Search.vue";
import { qcckGet, qcckPost, qcckDelete } from "@/api/qcckApi.js"; import { qcckGet, qcckPost, qcckDelete } from "@/api/qcckApi.js";
import SubmissionProcess from '@/components/flowPath/submissionProcess.vue' import SubmissionProcess from '@/components/flowPath/submissionProcess.vue'
import {tbGsxtBkQuash} from '@/api/zdr.js' import { tbGsxtBkQuash } from '@/api/zdr.js'
import { useRouter, useRoute } from 'vue-router' import { useRouter, useRoute } from 'vue-router'
import { reactive, ref, onMounted, getCurrentInstance } from "vue"; import { reactive, ref, onMounted, getCurrentInstance } from "vue";
import Hzd from "./components/dolog/hzd.vue";
import { rotate } from "ol/transform"; import { rotate } from "ol/transform";
const router = useRouter() const router = useRouter()
const route = useRoute() const route = useRoute()
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const { D_GS_BK_BKYS, D_BZ_XB, D_GS_BK_SJLX, D_GS_SSYJ, BD_BK_CLYJBQ, D_GS_ZDR_YJDJ, const { D_GS_BK_BKYS, D_BZ_XB, D_GS_BK_SJLX, D_GS_SSYJ, BD_BK_CLYJBQ, D_GS_ZDR_YJDJ,
D_GS_BK_NEWDX, D_GS_BK_ZT, D_GS_BK_CZYQ, D_GS_BK_CZJSDWLX, D_GS_BK_TJFS,D_BZ_BKLYS, D_GS_BK_NEWDX, D_GS_BK_ZT, D_GS_BK_CZYQ, D_GS_BK_CZJSDWLX, D_GS_BK_TJFS, D_BZ_BKLYS,D_GZL_SHZT,
D_BZ_JQDJ } = proxy.$dict("D_GS_ZDR_YJDJ", "D_GS_BK_BKYS", "D_BZ_XB", "D_GS_BK_SJLX", D_BZ_JQDJ } = proxy.$dict("D_GS_ZDR_YJDJ", "D_GS_BK_BKYS", "D_BZ_XB", "D_GS_BK_SJLX",
"D_GS_SSYJ", "D_GS_BK_NEWDX", "D_GS_BK_ZT", "D_GS_BK_CZYQ", "D_GS_BK_CZJSDWLX", "D_GS_BK_TJFS", "D_GS_SSYJ", "D_GS_BK_NEWDX", "D_GS_BK_ZT", "D_GS_BK_CZYQ", "D_GS_BK_CZJSDWLX", "D_GS_BK_TJFS",'D_GZL_SHZT',
'BD_BK_CLYJBQ', 'D_BZ_JQDJ',"D_BZ_BKLYS"); //获取字典数据 'BD_BK_CLYJBQ', 'D_BZ_JQDJ', "D_BZ_BKLYS"); //获取字典数据
const addBkdxForm = ref(null); //布控对象组件 const addBkdxForm = ref(null); //布控对象组件
const warningkdxForm = ref(); //布控对象组件 const warningkdxForm = ref(); //布控对象组件
const searchBox = ref(); //搜索框 const searchBox = ref(); //搜索框
@ -124,11 +127,16 @@ const searchConfiger = ref([
showType: "select", showType: "select",
options: D_GS_BK_ZT options: D_GS_BK_ZT
}, },
{ {
label: "布控时间", label: "布控时间",
prop: "startTime", prop: "startTime",
placeholder: "请选择布控时间", placeholder: "请选择布控时间",
showType: "datetimerange", showType: "datetimerange",
}, {
label: "布控部门",
prop: "bkfqrSsbmdm",
placeholder: "请选择布控部门",
showType: "department",
}, },
]); ]);
const queryFrom = ref({}); const queryFrom = ref({});
@ -179,8 +187,8 @@ onMounted(() => {
const onSearch = (val) => { const onSearch = (val) => {
queryFrom.value = { queryFrom.value = {
...val, ...val,
startTime: val.startTime? val.startTime[0]: '', startTime: val.startTime ? val.startTime[0] : '',
endTime: val.startTime? val.startTime[1]: '' endTime: val.startTime ? val.startTime[1] : ''
}; };
pageData.pageConfiger.pageCurrent = 1; pageData.pageConfiger.pageCurrent = 1;
getList(); getList();
@ -199,7 +207,6 @@ const changeSize = (val) => {
const getList = () => { const getList = () => {
pageData.tableConfiger.loading = true; pageData.tableConfiger.loading = true;
let bklx = '' let bklx = ''
console.log();
if (route.name == 'myControl') { if (route.name == 'myControl') {
bklx = '01' bklx = '01'
@ -234,7 +241,13 @@ const handleRow = (id) => {
}); });
}) })
}; };
// 回执单
const hzdVisible = ref(false)
const dataList= ref({})
const openShowHzd = (row) => {
hzdVisible.value = true
dataList.value = row
}
// 表格高度计算 // 表格高度计算
const tabHeightFn = () => { const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 270; pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 270;
@ -243,7 +256,7 @@ const tabHeightFn = () => {
}; };
}; };
const tbGsxtBkQuashList = (item) => { const tbGsxtBkQuashList = (item) => {
tbGsxtBkQuash({id:item.id}).then(res=>{ tbGsxtBkQuash({ id: item.id }).then(res => {
proxy.$message({ type: "success", message: "操作成功" }); proxy.$message({ type: "success", message: "操作成功" });
getList(); getList();
}) })

View File

@ -1,18 +1,19 @@
<template> <template>
<div> <div>
<div class="titleBox">
<PageTitle :title=" route.meta.title ">
<el-button type="primary" @click="handleAdd('add', null)">发起布控</el-button>
</PageTitle>
</div>
<!-- 搜索 --> <!-- 搜索 -->
<div ref="searchBox"> <div ref="searchBox" class="mt10 mb10">
<Search :searchArr="searchConfiger" @submit="onSearch" /> <Search :searchArr="searchConfiger" @submit="onSearch" />
</div> </div>
<PageTitle :title="route.meta.title" :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5"
:marginTop="5">
<template #left>
<el-button type="primary" size="small" @click="handleAdd('add', null)">发起布控</el-button>
</template>
</PageTitle>
<!-- 按钮组 --> <!-- 按钮组 -->
<div class="content"> <div class="content">
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox"> <div class="tabBox heightBox">
<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">
@ -48,7 +49,7 @@
<template v-if="!row.gzlid"> <template v-if="!row.gzlid">
<el-link type="primary" v-if="['01', '03', '06'].includes(row.bkZt)" size="small" <el-link type="primary" v-if="['01', '03', '06'].includes(row.bkZt)" size="small"
@click="createProcess(row)">送审</el-link> @click="createProcess(row)">送审</el-link>
<el-link type="primary" size="small" @click="tbGsxtBkQuashList( row)" v-else>撤控</el-link> <el-link type="primary" size="small" @click="tbGsxtBkQuashList(row)" v-else>撤控</el-link>
<el-link type="primary" v-if="['01', '03', '06'].includes(row.bkZt)" size="small" <el-link type="primary" v-if="['01', '03', '06'].includes(row.bkZt)" size="small"
@click="handleAdd('edit', row)">编辑</el-link> @click="handleAdd('edit', row)">编辑</el-link>
</template> </template>
@ -86,7 +87,7 @@ import Pages from "@/components/aboutTable/Pages.vue";
import Search from "@/components/aboutTable/Search.vue"; import Search from "@/components/aboutTable/Search.vue";
import { qcckGet, qcckPost, qcckDelete } from "@/api/qcckApi.js"; import { qcckGet, qcckPost, qcckDelete } from "@/api/qcckApi.js";
import SubmissionProcess from '@/components/flowPath/submissionProcess.vue' import SubmissionProcess from '@/components/flowPath/submissionProcess.vue'
import {tbGsxtBkQuash} from '@/api/zdr.js' import { tbGsxtBkQuash } from '@/api/zdr.js'
import { useRouter, useRoute } from 'vue-router' import { useRouter, useRoute } from 'vue-router'
import { reactive, ref, onMounted, getCurrentInstance } from "vue"; import { reactive, ref, onMounted, getCurrentInstance } from "vue";
const router = useRouter() const router = useRouter()
@ -119,7 +120,7 @@ const searchConfiger = ref([
showType: "select", showType: "select",
options: D_GS_BK_ZT options: D_GS_BK_ZT
}, },
{ {
label: "布控时间", label: "布控时间",
prop: "startTime", prop: "startTime",
placeholder: "请选择布控时间", placeholder: "请选择布控时间",
@ -174,8 +175,8 @@ onMounted(() => {
const onSearch = (val) => { const onSearch = (val) => {
queryFrom.value = { queryFrom.value = {
...val, ...val,
startTime: val.startTime? val.startTime[0]: '', startTime: val.startTime ? val.startTime[0] : '',
endTime: val.startTime? val.startTime[1]: '' endTime: val.startTime ? val.startTime[1] : ''
}; };
pageData.pageConfiger.pageCurrent = 1; pageData.pageConfiger.pageCurrent = 1;
getList(); getList();
@ -238,7 +239,7 @@ const tabHeightFn = () => {
}; };
}; };
const tbGsxtBkQuashList = (item) => { const tbGsxtBkQuashList = (item) => {
tbGsxtBkQuash({id:item.id}).then(res=>{ tbGsxtBkQuash({ id: item.id }).then(res => {
proxy.$message({ type: "success", message: "操作成功" }); proxy.$message({ type: "success", message: "操作成功" });
getList(); getList();
}) })

View File

@ -1,17 +1,18 @@
<template> <template>
<div class="titleBox"> <div ref="searchBox" class="mt10">
<PageTitle title="网上会议室"> <Search :searchArr="searchConfiger" @submit="onSearch" />
<el-button type="primary" @click="addEdit('add', '')"> </div>
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
<template #left>
<el-button size="small" type="primary" @click="addEdit('add', '')">
<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>
</PageTitle> </PageTitle>
</div>
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" />
</div>
<div class="tabBox"> <div class="tabBox">
<ul class="list noScollLine" v-loading="pageData.loading"> <ul class="list noScollLine" v-loading="pageData.loading">
<li class="list-item" v-for="(item, index) in pageData.list" :key="`tableData${index}`"> <li class="list-item" v-for="(item, index) in pageData.list" :key="`tableData${index}`">

View File

@ -1,20 +1,19 @@
<template> <template>
<div> <div>
<div class="titleBox"> <!-- 搜索 -->
<PageTitle title="数据整理"> <div ref="searchBox" class="mt10">
<el-button type="primary" @click="getDataById('add', '')"> <Search :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" size="small" @click="getDataById('add', '')">
<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>
</PageTitle> </PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" />
</div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox"> <div class="tabBox">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight" <MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"

View File

@ -1,14 +1,11 @@
<template> <template>
<div> <div>
<div class="titleBox">
<PageTitle title="内部审核" />
</div>
<!-- 搜索 --> <!-- 搜索 -->
<div ref="searchBox"> <div ref="searchBox" class="mt10 mb10">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" /> <Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" />
</div> </div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox"> <div class="tabBox heightBox">
<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 #bglx="{ row }"> <template #bglx="{ row }">
@ -154,7 +151,7 @@ const createProcess = (row) => {
// 表格高度计算 // 表格高度计算
const tabHeightFn = () => { const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250; pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 200;
window.onresize = function () { window.onresize = function () {
tabHeightFn(); tabHeightFn();
}; };

View File

@ -1,20 +1,19 @@
<template> <template>
<div> <div>
<div class="titleBox"> <!-- 搜索 -->
<PageTitle title="研判指令"> <div ref="searchBox" class="mt10">
<el-button type="primary" @click="getDataById('add', '')"> <Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" />
</div>
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
<template #left>
<el-button size="small" type="primary" @click="getDataById('add', '')">
<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>
</PageTitle> </PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" />
</div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox"> <div class="tabBox">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight" <MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
@ -35,8 +34,8 @@
<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="primary" @click="getDataById('detail', row)">详情</el-link> <el-link size="small" type="primary" @click="getDataById('detail', row)">详情</el-link>
<el-link size="small" type="danger" @click="deleteFile(row)">删除</el-link> <el-link size="small" type="danger" @click="deleteFile(row)">删除</el-link>
<el-link v-if="showBtn(row)=='sign'" size="small" type="success" @click="sign(row)">签收</el-link> <el-link v-if="showBtn(row) == 'sign'" size="small" type="success" @click="sign(row)">签收</el-link>
<el-link v-if="showBtn(row)=='feedback'" size="small" type="warning" @click="feedback(row)">反馈</el-link> <el-link v-if="showBtn(row) == 'feedback'" size="small" type="warning" @click="feedback(row)">反馈</el-link>
</template> </template>
</MyTable> </MyTable>
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{ <Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{

View File

@ -1,20 +1,20 @@
<template> <template>
<div> <div>
<div class="titleBox">
<PageTitle title="战略研判"> <!-- 搜索 -->
<el-button type="primary" @click="selfCreateResearch('add')"> <div ref="searchBox" class="mt10">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" />
</div>
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
<template #left>
<el-button size="small" type="primary" @click="selfCreateResearch('add')">
<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>
</PageTitle> </PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" />
</div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox"> <div class="tabBox">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight" <MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
@ -28,7 +28,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="primary" @click="getDataById('detail', row)">详情</el-link> <el-link size="small" type="primary" @click="getDataById('detail', row)">详情</el-link>
<el-link size="small" type="primary" @click="createReport(row)">{{ row.ypbg?.id ? '编辑' : '创建' }}报告</el-link> <el-link size="small" type="primary" @click="createReport(row)">{{ row.ypbg?.id ? '编辑' : '创建' }}报告</el-link>
<el-link size="small" type="success" @click="createMeeting(row)">创建会议</el-link> <el-link size="small" type="success" @click="createMeeting(row)">创建会议</el-link>
@ -57,7 +57,7 @@ import Search from "@/components/aboutTable/Search.vue";
import { useRoute, useRouter } from 'vue-router' import { useRoute, useRouter } from 'vue-router'
import { tacticalGet, strategicDelete } from "@/api/huiShangyp/tacticalApi.js"; import { tacticalGet, strategicDelete } from "@/api/huiShangyp/tacticalApi.js";
import { reactive, ref, onMounted, getCurrentInstance, watch, computed, nextTick } from "vue"; import { reactive, ref, onMounted, getCurrentInstance, watch, computed, nextTick } from "vue";
import {ypbgSjzlTjspId} from "@/api/huiShangyp/strategicApi.js" import { ypbgSjzlTjspId } from "@/api/huiShangyp/strategicApi.js"
import addReport from "./addReport.vue"; import addReport from "./addReport.vue";
import AddForm from "./addForm.vue"; import AddForm from "./addForm.vue";
import addMeeting from "./addMeeting.vue"; import addMeeting from "./addMeeting.vue";
@ -160,7 +160,7 @@ const getList = () => {
// 表格高度计算 // 表格高度计算
const tabHeightFn = () => { const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250; pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
window.onresize = function() { window.onresize = function () {
tabHeightFn(); tabHeightFn();
}; };
}; };

View File

@ -1,20 +1,20 @@
<template> <template>
<div> <div>
<div class="titleBox">
<PageTitle title="战术研判"> <!-- 搜索 -->
<el-button type="primary" @click="selfCreateResearch('add')"> <div ref="searchBox" class="mt10">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" />
</div>
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
<template #left>
<el-button size="small" type="primary" @click="selfCreateResearch('add')">
<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>
</PageTitle> </PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" />
</div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox"> <div class="tabBox">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight" <MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
@ -27,7 +27,7 @@
</template> </template>
<!-- 操作 --> <!-- 操作 -->
<template #controls="{ row }"> <template #controls="{ row }">
<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="primary" @click="getDataById('edit', row)">修改</el-link> --> <!-- <el-link size="small" type="primary" @click="getDataById('edit', row)">修改</el-link> -->
<el-link size="small" type="primary" @click="getDataById('detail', row)">详情</el-link> <el-link size="small" type="primary" @click="getDataById('detail', row)">详情</el-link>
<el-link size="small" type="primary" @click="createReport(row)">{{ row.ypbg?.id ? '编辑' : '创建' }}报告</el-link> <el-link size="small" type="primary" @click="createReport(row)">{{ row.ypbg?.id ? '编辑' : '创建' }}报告</el-link>
@ -56,7 +56,7 @@ import Pages from "@/components/aboutTable/Pages.vue";
import Search from "@/components/aboutTable/Search.vue"; import Search from "@/components/aboutTable/Search.vue";
import { useRoute, useRouter } from 'vue-router' import { useRoute, useRouter } from 'vue-router'
import { tacticalGet, strategicDelete, } from "@/api/huiShangyp/tacticalApi.js"; import { tacticalGet, strategicDelete, } from "@/api/huiShangyp/tacticalApi.js";
import {ypbgSjzlTjspId} from "@/api/huiShangyp/strategicApi.js" import { ypbgSjzlTjspId } from "@/api/huiShangyp/strategicApi.js"
import { reactive, ref, onMounted, getCurrentInstance, watch, computed, nextTick } from "vue"; import { reactive, ref, onMounted, getCurrentInstance, watch, computed, nextTick } from "vue";
import addReport from "./addReport.vue"; import addReport from "./addReport.vue";
import AddForm from "./addForm.vue"; import AddForm from "./addForm.vue";
@ -160,7 +160,7 @@ const getList = () => {
// 表格高度计算 // 表格高度计算
const tabHeightFn = () => { const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250; pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
window.onresize = function() { window.onresize = function () {
tabHeightFn(); tabHeightFn();
}; };
}; };

View File

@ -1,16 +1,17 @@
<template> <template>
<!-- 研判类型 --> <!-- 研判类型 -->
<div class="content"> <div class="content">
<div class="titleBox">
<PageTitle title="模型平台"> <div ref="searchBox" class="mt10">
<el-button type="primary" @click="openAddModel('add')" :icon="CirclePlus">
新增模型
</el-button>
</PageTitle>
</div>
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch"> </Search> <Search :searchArr="searchConfiger" @submit="onSearch"> </Search>
</div> </div>
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
<template #left>
<el-button size="small" type="primary" @click="openAddModel('add')" :icon="CirclePlus">
新增模型
</el-button>
</template>
</PageTitle>
<ul class="cntlsit mb10" v-if="show" v-infinite-scroll="load" :style="{ height: listHeight + 'px' }" <ul class="cntlsit mb10" v-if="show" v-infinite-scroll="load" :style="{ height: listHeight + 'px' }"
v-loading="loading"> v-loading="loading">
<li class="model-card" v-for="(it, idx) in list" :key="idx"> <li class="model-card" v-for="(it, idx) in list" :key="idx">

View File

@ -1,17 +1,18 @@
<template> <template>
<div> <div>
<div class="titleBox"> <!-- 搜索 -->
<PageTitle title="指令信息"> <div ref="searchBox" class="mt10">
<el-button type="primary" @click="addEdit('add', '')"> <Search :searchArr="searchConfiger" @submit="onSearch"/>
</div>
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
<template #left>
<el-button type="primary" size="small" @click="addEdit('add', '')">
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon> <el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
<span style="vertical-align: middle">新增</span> <span style="vertical-align: middle">新增</span>
</el-button> </el-button>
</template>
</PageTitle> </PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch"/>
</div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox"> <div class="tabBox">
<MyTable <MyTable

View File

@ -1,14 +1,11 @@
<template> <template>
<div> <div>
<div class="titleBox">
<PageTitle title="操作记录"/>
</div>
<!-- 搜索 --> <!-- 搜索 -->
<div ref="searchBox"> <div ref="searchBox" class="mt10 mb10">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"/> <Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"/>
</div> </div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox"> <div class="tabBox heightBox">
<MyTable <MyTable
:tableData="pageData.tableData" :tableData="pageData.tableData"
:tableColumn="pageData.tableColumn" :tableColumn="pageData.tableColumn"

View File

@ -1,22 +1,22 @@
<template> <template>
<div> <div>
<div class="titleBox">
<PageTitle title="行为标签管理"> <!-- 搜索 -->
<template #left> <div ref="searchBox" class="mt10">
<el-button v-for="(it,idx) in D_GS_BQ_LB " :key="idx" :type="type == it.zdmc ? 'success':''" @click="chooseListType(it.zdmc)"> <Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
</div>
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
<template #left>
<el-button size="small" v-for="(it,idx) in D_GS_BQ_LB " :key="idx" :type="type == it.zdmc ? 'success':''" @click="chooseListType(it.zdmc)">
<span style="vertical-align: middle">{{ it.zdmc }}</span> <span style="vertical-align: middle">{{ it.zdmc }}</span>
</el-button> </el-button>
</template> <el-button size="small" type="primary" @click="addEdit('add', '')">
<el-button type="primary" @click="addEdit('add', '')">
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon> <el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
<span style="vertical-align: middle">新增</span> <span style="vertical-align: middle">新增</span>
</el-button> </el-button>
</template>
</PageTitle> </PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
</div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox" :style="{height:pageData.tableHeight+20+'px'}"> <div class="tabBox" :style="{height:pageData.tableHeight+20+'px'}">
<MyTable <MyTable
@ -168,7 +168,7 @@ const addEdit = (type, row) => {
// 表格高度计算 // 表格高度计算
const tabHeightFn = () => { const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250; pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 270;
window.onresize = function () { tabHeightFn(); }; window.onresize = function () { tabHeightFn(); };
}; };
</script> </script>

View File

@ -0,0 +1,38 @@
<template>
<div>
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
<template #left>
<el-button v-for="(item, index) in butList" :key="index" :type="qh == index + 1 ? 'primary' : 'default'"
@click="add(index + 1)" size="small">{{ item }}</el-button>
</template>
</PageTitle>
<IntegralCoefficient v-if="qh == 1" />
<IdentityManage v-if="qh == 2" />
<BehaviorLabels v-if="qh == 3" />
<TagManage v-if="qh == 4" />
<TsypHome v-if="qh == 5" />
</div>
</template>
<script setup>
import PageTitle from "@/components/aboutTable/PageTitle.vue";
import IntegralCoefficient from "@/views/backOfficeSystem/fourColorManage/IntegralCoefficient/index"
import IdentityManage from "@/views/backOfficeSystem/fourColorManage/IdentityManage/index"
import BehaviorLabels from "@/views/backOfficeSystem/fourColorManage/BehaviorLabels/index"
import TagManage from "@/views/backOfficeSystem/fourColorManage/tagManage/index"
import TsypHome from "@/views/backOfficeSystem/JudgmentHome/tsypHome/index"
import { ref } from "vue";
const butList = ref(["积分系数配置", "身份标签管理", "行为标签管理", "标签组合管理", "模型管理"])
const qh = ref(1)
const add = (flag) => {
qh.value = flag
}
</script>

View File

@ -1,22 +1,22 @@
<template> <template>
<div> <div>
<div class="titleBox">
<PageTitle title="身份标签管理"> <!-- 搜索 -->
<template #left> <div ref="searchBox" class="mt10">
<el-button v-for="(it,idx) in D_GS_BQ_LB " :key="idx" :type="type == it.zdmc ? 'success':''" @click="chooseListType(it.zdmc)"> <Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
</div>
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
<template #left>
<el-button size="small" v-for="(it,idx) in D_GS_BQ_LB " :key="idx" :type="type == it.zdmc ? 'success':''" @click="chooseListType(it.zdmc)">
<span style="vertical-align: middle">{{ it.zdmc }}</span> <span style="vertical-align: middle">{{ it.zdmc }}</span>
</el-button> </el-button>
</template> <el-button size="small" type="primary" @click="addEdit('add', '')">
<el-button type="primary" @click="addEdit('add', '')">
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon> <el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
<span style="vertical-align: middle">新增</span> <span style="vertical-align: middle">新增</span>
</el-button> </el-button>
</template>
</PageTitle> </PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
</div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox" :style="{height:pageData.tableHeight+20+'px'}"> <div class="tabBox" :style="{height:pageData.tableHeight+20+'px'}">
<MyTable <MyTable
@ -167,7 +167,7 @@ const addEdit = (type, row) => {
// 表格高度计算 // 表格高度计算
const tabHeightFn = () => { const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250; pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 270;
window.onresize = function () { tabHeightFn(); }; window.onresize = function () { tabHeightFn(); };
}; };
</script> </script>

View File

@ -1,17 +1,19 @@
<template> <template>
<div> <div>
<div class="titleBox">
<PageTitle title="积分系数配置"> <!-- 搜索 -->
<el-button type="primary" @click="addEdit('add', '')"> <div ref="searchBox" class="mt10">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
</div>
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
<template #left>
<el-button type="primary" size="small" @click="addEdit('add', '')">
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon> <el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
<span style="vertical-align: middle">新增</span> <span style="vertical-align: middle">新增</span>
</el-button> </el-button>
</template>
</PageTitle> </PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
</div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox" :style="{height:pageData.tableHeight+20+'px'}"> <div class="tabBox" :style="{height:pageData.tableHeight+20+'px'}">
<MyTable <MyTable
@ -137,7 +139,7 @@ const addEdit = (type, row) => {
// 表格高度计算 // 表格高度计算
const tabHeightFn = () => { const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250; pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 270;
window.onresize = function () { tabHeightFn(); }; window.onresize = function () { tabHeightFn(); };
}; };
</script> </script>

View File

@ -0,0 +1,43 @@
<template>
<div>
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
<template #left>
<el-button v-for="(item,index) in butList" :key="index" :type="qh == index+1 ? 'primary' : 'default'" @click="add(index+1)" size="small">{{item}}</el-button>
</template>
</PageTitle>
<FouColorWarning v-if="qh==1" />
<SevenWarning v-if="qh==2" />
<IdentityWarning v-if="qh==3" />
<BehaviorWarning v-if="qh==4" />
<CombinedWarning v-if="qh==5" />
<PortraitWarning v-if="qh==6" />
<VehicleWarning v-if="qh==7" />
<ControlWarning v-if="qh==8" />
<RegionalControl v-if="qh==9" />
</div>
</template>
<script setup>
import PageTitle from "@/components/aboutTable/PageTitle.vue";
import FouColorWarning from "@/views/backOfficeSystem/fourColorManage/warningControl/fouColorWarning/index.vue"
import SevenWarning from "@/views/backOfficeSystem/fourColorManage/warningControl/sevenWarning/index.vue"
import IdentityWarning from "@/views/backOfficeSystem/fourColorManage/warningControl/identityWarning/index.vue"
import BehaviorWarning from "@/views/backOfficeSystem/fourColorManage/warningControl/behaviorWarning/index.vue"
import CombinedWarning from "@/views/backOfficeSystem/fourColorManage/warningControl/combinedWarning/index.vue"
import PortraitWarning from "@/views/backOfficeSystem/fourColorManage/warningList/portraitWarning/index.vue"
import VehicleWarning from "@/views/backOfficeSystem/fourColorManage/warningList/vehicleWarning/index.vue"
import ControlWarning from "@/views/backOfficeSystem/fourColorManage/warningControl/controlWarning/index.vue"
import RegionalControl from "@/views/backOfficeSystem/fourColorManage/warningControl/regionalControl/index.vue"
import { ref } from "vue";
const butList=ref(["预警整合","七类重点","身份预警","行为预警","组合预警","人像预警","车辆预警","布控预警","区域预警"])
const qh = ref(1)
const add = (flag) => {
qh.value = flag
}
</script>

View File

@ -1,7 +1,12 @@
<template> <template>
<div> <div>
<div class="titleBox">
<PageTitle title="标签组合管理"> <!-- 搜索 -->
<div ref="searchBox" class="mt10">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
</div>
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
<template #left>
<!-- <el-button> <!-- <el-button>
<span style="vertical-align: middle">调级</span> <span style="vertical-align: middle">调级</span>
</el-button> </el-button>
@ -11,18 +16,14 @@
<el-button> <el-button>
<span style="vertical-align: middle">导入</span> <span style="vertical-align: middle">导入</span>
</el-button> --> </el-button> -->
<el-button type="primary" @click="addEdit('add', '')"> <el-button size="small" type="primary" @click="addEdit('add', '')">
<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>
</PageTitle> </PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
</div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox"> <div class="tabBox">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight" <MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
@ -163,7 +164,7 @@ const chooseJfFun = (val) => {
// 表格高度计算 // 表格高度计算
const tabHeightFn = () => { const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250; pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 270;
window.onresize = function () { window.onresize = function () {
tabHeightFn(); tabHeightFn();
}; };

View File

@ -1,16 +1,7 @@
<template> <template>
<div> <div>
<div class="titleBox">
<PageTitle title="行为预警">
<!-- <el-button type="primary" @click="exportExcel">
<span style="vertical-align: middle">导出</span>
</el-button> -->
<el-button type="primary" @click="exportExl">导出</el-button>
</PageTitle>
</div>
<!-- 搜索 --> <!-- 搜索 -->
<div ref="searchBox"> <div ref="searchBox" class="mt10">
<Searchs :searchArr="searchConfiger" @submit="onSearch" @reset="reset" :key="pageData.keyCount"> <Searchs :searchArr="searchConfiger" @submit="onSearch" @reset="reset" :key="pageData.keyCount">
<template #jfd> <template #jfd>
<div> <div>
@ -21,6 +12,11 @@
</template> </template>
</Searchs> </Searchs>
</div> </div>
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
<template #left>
<el-button type="primary" @click="exportExl" size="small">导出</el-button>
</template>
</PageTitle>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox tabBox_zdy" :style="{ height: (pageData.tableHeight + 40) + 'px' }"> <div class="tabBox tabBox_zdy" :style="{ height: (pageData.tableHeight + 40) + 'px' }">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight" <MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
@ -328,7 +324,7 @@ const chooseJfFun = (val) => {
// 表格高度计算 // 表格高度计算
const tabHeightFn = () => { const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250; pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 280;
window.onresize = function() { window.onresize = function() {
tabHeightFn(); tabHeightFn();

View File

@ -1,14 +1,6 @@
<template> <template>
<div> <div>
<div class="titleBox">
<PageTitle title="组合预警">
<!-- <el-button>
<span style="vertical-align: middle">导出</span>
</el-button> -->
<el-button type="primary" @click="exportExl">导出</el-button>
</PageTitle>
</div>
<!-- 搜索 --> <!-- 搜索 -->
<div ref="searchBox"> <div ref="searchBox">
<Searchs :searchArr="searchConfiger" @submit="onSearch" @reset="reset" :key="pageData.keyCount"> <Searchs :searchArr="searchConfiger" @submit="onSearch" @reset="reset" :key="pageData.keyCount">
@ -21,11 +13,16 @@
</template> </template>
</Searchs> </Searchs>
</div> </div>
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
<template #left>
<el-button type="primary" @click="exportExl" size="small">导出</el-button>
</template>
</PageTitle>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox tabBox_zdy" :style="{ height: (pageData.tableHeight + 40) + 'px' }"> <div class="tabBox tabBox_zdy" :style="{ height: (pageData.tableHeight + 40) + 'px' }">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight" <MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth" :key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
:expand="true" @chooseData="handleChooseData"> :expand="true" @chooseData="handleChooseData">
<template #sfcs="{ row }"> <template #sfcs="{ row }">
<span style="color: #0072ff;" @click="handleClick(row)">{{ row.sfcs }}</span> <span style="color: #0072ff;" @click="handleClick(row)">{{ row.sfcs }}</span>
</template> </template>
@ -43,11 +40,12 @@
<template #controls="{ row }"> <template #controls="{ row }">
<el-link type="warning" @click="pushAssess(row)">全息档案</el-link> <el-link type="warning" @click="pushAssess(row)">全息档案</el-link>
<el-link type="primary" @click="handleCzjy(row)" v-if="roleCode">处置建议</el-link> <el-link type="primary" @click="handleCzjy(row)" v-if="roleCode">处置建议</el-link>
<el-link type="primary" @click="chooseJfFun(row)" >配置系统</el-link> <el-link type="primary" @click="chooseJfFun(row)">配置系统</el-link>
<!-- <el-link type="primary" @click="showDetail(row)">转合成</el-link> <!-- <el-link type="primary" @click="showDetail(row)">转合成</el-link>
<el-link type="danger" @click="delDictItem(row.id)">转会商</el-link> --> <el-link type="danger" @click="delDictItem(row.id)">转会商</el-link> -->
<el-link type="success" @click="handleQsFk(row, '签收')" v-if="row.czzt == '01' && permission_sfqs">签收</el-link> <el-link type="success" @click="handleQsFk(row, '签收')" v-if="row.czzt == '01' && permission_sfqs">签收</el-link>
<el-link type="success" @click="handleQsFk(row, '反馈')" v-else-if="row.czzt == '02'&& permission_sfqs">反馈</el-link> <el-link type="success" @click="handleQsFk(row, '反馈')"
v-else-if="row.czzt == '02' && permission_sfqs">反馈</el-link>
<!-- <el-link type="success" @click="handleQsFk(row, '查看反馈')" v-else>查看反馈</el-link> --> <!-- <el-link type="success" @click="handleQsFk(row, '查看反馈')" v-else>查看反馈</el-link> -->
<el-link type="primary" @click="openAddModel(row)">详情</el-link> <el-link type="primary" @click="openAddModel(row)">详情</el-link>
</template> </template>
@ -69,8 +67,8 @@
<!-- 处置建议 --> <!-- 处置建议 -->
<Czjy ref="czjyRef" @okSubmit="getList"></Czjy> <Czjy ref="czjyRef" @okSubmit="getList"></Czjy>
<ChooseJf v-model="chooseJfShow" titleValue="选择系数" :Single="false" <ChooseJf v-model="chooseJfShow" titleValue="选择系数" :Single="false" :chooseJfBh="chooseJfBh" url="/yjzxZhyj/sjxspz"
:chooseJfBh="chooseJfBh" url="/yjzxZhyj/sjxspz" :roleIds="roleIds"/> :roleIds="roleIds" />
</template> </template>
<script setup> <script setup>
@ -82,7 +80,7 @@ import MyTable from "@/components/aboutTable/MyTable.vue";
import Pages from "@/components/aboutTable/Pages.vue"; import Pages from "@/components/aboutTable/Pages.vue";
import Items from "./item/items.vue"; import Items from "./item/items.vue";
import ChooseJf from '@/components/ChooseList/ChooseJf/index.vue' import ChooseJf from '@/components/ChooseList/ChooseJf/index.vue'
import { tbYjxxGetZbtj, tbGsxtBqzhSelectList,yjzxZhyjSelectList } from '@/api/yj.js' import { tbYjxxGetZbtj, tbGsxtBqzhSelectList, yjzxZhyjSelectList } from '@/api/yj.js'
import HolographicArchive from '@/views/home/components/holographicArchive.vue' import HolographicArchive from '@/views/home/components/holographicArchive.vue'
import Information from "@/views/home/model/information.vue"; import Information from "@/views/home/model/information.vue";
import SemdFqzl from '@/components/instructionHasBeen/sendFqzl.vue' import SemdFqzl from '@/components/instructionHasBeen/sendFqzl.vue'
@ -114,7 +112,7 @@ const searchConfiger = ref([
{ label: "身份证号码", prop: 'sfzh', placeholder: "请输入身份证号码", showType: "input" }, { label: "身份证号码", prop: 'sfzh', placeholder: "请输入身份证号码", showType: "input" },
{ label: "预警标签", prop: 'yjbqmc', placeholder: "请输入预警标签", showType: "input" }, { label: "预警标签", prop: 'yjbqmc', placeholder: "请输入预警标签", showType: "input" },
{ label: "部门", prop: 'ssbmdm', placeholder: "请选择部门", showType: "department" }, { label: "部门", prop: 'ssbmdm', placeholder: "请选择部门", showType: "department" },
{ label: "级别", prop: 'bqys', placeholder: "请选择级别", showType: "select" ,options: D_BZ_YJJB}, { label: "级别", prop: 'bqys', placeholder: "请选择级别", showType: "select", options: D_BZ_YJJB },
{ label: "积分段", prop: 'jfd', placeholder: "请选择积分段", showType: "Slot" }, { label: "积分段", prop: 'jfd', placeholder: "请选择积分段", showType: "Slot" },
]); ]);
@ -138,7 +136,7 @@ const pageData = reactive({
controlsWidth: 200, controlsWidth: 200,
tableColumn: [ tableColumn: [
{ label: "状态", prop: "czzt", showSolt: true }, { label: "状态", prop: "czzt", showSolt: true },
{ label: "预警时间", prop: "yjsj"}, { label: "预警时间", prop: "yjsj" },
{ label: "姓名", prop: "xm" }, { label: "姓名", prop: "xm" },
{ label: "身份证号", prop: "sfzh" }, { label: "身份证号", prop: "sfzh" },
{ label: "标签", prop: "yjbqmc" }, { label: "标签", prop: "yjbqmc" },
@ -150,11 +148,11 @@ const pageData = reactive({
onMounted(() => { onMounted(() => {
let str = getItem('deptId') ? getItem('deptId')[0].deptLevel : '' let str = getItem('deptId') ? getItem('deptId')[0].deptLevel : ''
permission_sfqs.value = str.startsWith('2'||'3') ? false : true; permission_sfqs.value = str.startsWith('2' || '3') ? false : true;
let rols = getItem('roleList') ? getItem('roleList'):[] let rols = getItem('roleList') ? getItem('roleList') : []
let obj = rols.find(item => { let obj = rols.find(item => {
return ['JS_666666','JS_777777','JS_888888'].includes(item.roleCode) return ['JS_666666', 'JS_777777', 'JS_888888'].includes(item.roleCode)
}) })
roleCode.value = obj ? true : false; roleCode.value = obj ? true : false;
@ -165,11 +163,11 @@ onMounted(() => {
const handleCzjy = (row) => { const handleCzjy = (row) => {
czjyRef.value.init( row) czjyRef.value.init(row)
} }
const onSearch = (val) => { const onSearch = (val) => {
queryFrom.value = { ...queryFrom.value,...val }; queryFrom.value = { ...queryFrom.value, ...val };
pageData.pageConfiger.pageCurrent = 1; pageData.pageConfiger.pageCurrent = 1;
getList(); getList();
}; };
@ -242,7 +240,7 @@ const assessShow = ref(false)
const selectRows = ref([]) const selectRows = ref([])
const dataList = ref() const dataList = ref()
const pushAssess = (val) => { const pushAssess = (val) => {
return holographicProfileJump(val.yjlx,val) // 全息档案跳转 return holographicProfileJump(val.yjlx, val) // 全息档案跳转
// assessShow.value = true; // assessShow.value = true;
// dataList.value = val; // dataList.value = val;
} }
@ -301,21 +299,21 @@ const openAddModel = (row) => {
// 选择系数 // 选择系数
const chooseJfShow = ref(false) const chooseJfShow = ref(false)
const chooseJfBh = ref() const chooseJfBh = ref()
const roleIds=ref() const roleIds = ref()
const chooseJfFun = (val) => { const chooseJfFun = (val) => {
chooseJfBh.value=val.id chooseJfBh.value = val.id
yjzxZhyjSelectList(val.id).then(res => { yjzxZhyjSelectList(val.id).then(res => {
roleIds.value=res.sjxspzList.map(item => item.xsid) roleIds.value = res.sjxspzList.map(item => item.xsid)
chooseJfShow.value = true chooseJfShow.value = true
}) })
} }
// 表格高度计算 // 表格高度计算
const tabHeightFn = () => { const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250; pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 270;
window.onresize = function() { window.onresize = function () {
tabHeightFn(); tabHeightFn();
}; };
}; };
@ -355,12 +353,9 @@ const exportExl = () => {
background: rgba(0, 0, 0, 0.5) !important; background: rgba(0, 0, 0, 0.5) !important;
} }
.tabBox_zdy{ .tabBox_zdy {
.el-table--fit { .el-table--fit {
overflow: unset !important; overflow: unset !important;
} }
} }
</style> </style>

View File

@ -1,13 +1,9 @@
<template> <template>
<div> <div>
<div class="titleBox">
<PageTitle title="预警布控">
<el-button type="primary" @click="exportExl">导出</el-button>
</PageTitle>
</div>
<!-- 搜索 --> <!-- 搜索 -->
<div ref="searchBox" > <div ref="searchBox" class="mt10">
<Searchs :searchArr="searchConfiger" @submit="onSearch" @reset="reset" :key="pageData.keyCount"> <Searchs :searchArr="searchConfiger" @submit="onSearch" @reset="reset" :key="pageData.keyCount">
<template #jfd> <template #jfd>
<div> <div>
@ -18,6 +14,11 @@
</template> </template>
</Searchs> </Searchs>
</div> </div>
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
<template #left>
<el-button type="primary" @click="exportExl" size="small">导出</el-button>
</template>
</PageTitle>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox tabBox_zdy" :style="{ height: (pageData.tableHeight + 40) + 'px' }"> <div class="tabBox tabBox_zdy" :style="{ height: (pageData.tableHeight + 40) + 'px' }">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight" <MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
@ -56,6 +57,7 @@
<el-link type="success" @click="handleQsFk(row, '签收')" v-if="row.czzt == '01' && permission_sfqs">签收</el-link> <el-link type="success" @click="handleQsFk(row, '签收')" v-if="row.czzt == '01' && permission_sfqs">签收</el-link>
<el-link type="success" @click="handleQsFk(row, '反馈')" v-if="row.czzt == '02' && permission_sfqs" >反馈</el-link> <el-link type="success" @click="handleQsFk(row, '反馈')" v-if="row.czzt == '02' && permission_sfqs" >反馈</el-link>
<el-link type="primary" @click="openAddFrom(row)">详情</el-link> <el-link type="primary" @click="openAddFrom(row)">详情</el-link>
<el-link type="primary" @click="pushWarning(row)">指派</el-link>
</template> </template>
</MyTable> </MyTable>
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{ <Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
@ -68,6 +70,7 @@
<AddFrom ref="addModelRef" :dict="{ D_GSXT_YJXX_CZZT, D_BZ_YJJB, D_GS_SSYJ }" /> <AddFrom ref="addModelRef" :dict="{ D_GSXT_YJXX_CZZT, D_BZ_YJJB, D_GS_SSYJ }" />
<!-- 处置建议 --> <!-- 处置建议 -->
<Czjy ref="czjyRef" @okSubmit="getList"></Czjy> <Czjy ref="czjyRef" @okSubmit="getList"></Czjy>
<ZpForm v-model="warningShow" :dataList="dataList"/>
</template> </template>
<script setup> <script setup>
@ -80,6 +83,7 @@ import MyTable from "@/components/aboutTable/MyTable.vue";
import Pages from "@/components/aboutTable/Pages.vue"; import Pages from "@/components/aboutTable/Pages.vue";
import AddFrom from "./components/addFrom.vue"; import AddFrom from "./components/addFrom.vue";
import FkDialog from "@/views/backOfficeSystem/fourColorManage/warningControl/centerHome/components/fkDialog.vue"; import FkDialog from "@/views/backOfficeSystem/fourColorManage/warningControl/centerHome/components/fkDialog.vue";
import ZpForm from "@/views/backOfficeSystem/fourColorManage/warningControl/sevenWarning/zpForm.vue";
import { reactive, ref, onMounted, getCurrentInstance, nextTick } from "vue"; import { reactive, ref, onMounted, getCurrentInstance, nextTick } from "vue";
import { qcckGet, qcckPost } from "@/api/qcckApi.js"; import { qcckGet, qcckPost } from "@/api/qcckApi.js";
import emitter from "@/utils/eventBus.js"; import emitter from "@/utils/eventBus.js";
@ -100,6 +104,7 @@ const searchConfiger = ref([
{ label: "部门", prop: 'ssbmdm', placeholder: "请选择部门", showType: "department" }, { label: "部门", prop: 'ssbmdm', placeholder: "请选择部门", showType: "department" },
{ label: "级别", prop: 'yjJb', placeholder: "请选择级别", showType: "select" ,options: D_BZ_YJJB}, { label: "级别", prop: 'yjJb', placeholder: "请选择级别", showType: "select" ,options: D_BZ_YJJB},
{ label: "积分段", prop: 'jfd', placeholder: "请选择积分段", showType: "Slot" }, { label: "积分段", prop: 'jfd', placeholder: "请选择积分段", showType: "Slot" },
{ label: "布控时间", prop: 'startTime', placeholder: "请选择布控时间", showType: "datetimerange" },
]); ]);
const permission_sfqs = ref(false) const permission_sfqs = ref(false)
@ -122,7 +127,7 @@ const pageData = reactive({
pageSize: 20, pageSize: 20,
pageCurrent: 1 pageCurrent: 1
}, },
controlsWidth: 200, //操作栏宽度 controlsWidth: 240, //操作栏宽度
tableColumn: [ tableColumn: [
{ label: "状态", prop: "czzt", showSolt: true }, { label: "状态", prop: "czzt", showSolt: true },
{ label: "预警时间", prop: "yjFssj" }, { label: "预警时间", prop: "yjFssj" },
@ -154,7 +159,11 @@ onMounted(() => {
}); });
const onSearch = (val) => { const onSearch = (val) => {
queryFrom.value = { ...queryFrom.value,...val }; queryFrom.value = {
...queryFrom.value, ...val,
startTime: val.startTime ? val.startTime[0] : '',
endTime: val.startTime ? val.startTime[1] : '',
};
pageData.pageConfiger.pageCurrent = 1; pageData.pageConfiger.pageCurrent = 1;
getList(); getList();
}; };
@ -240,12 +249,23 @@ const handleCzjy = (row) => {
} }
// 表格高度计算 // 表格高度计算
const tabHeightFn = () => { const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250; pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 270;
window.onresize = function() { window.onresize = function() {
tabHeightFn(); tabHeightFn();
}; };
}; };
// 指派
const dataList = ref(null)
const warningShow = ref(false)
const pushWarning = (val) => {
warningShow.value = true;
dataList.value = val;
}
/** 选中项 */ /** 选中项 */
const selectRows = ref([]) const selectRows = ref([])
const handleChooseData = (val) => { const handleChooseData = (val) => {

View File

@ -1,15 +1,12 @@
<template> <template>
<div> <div>
<div class="titleBox"> <div ref="searchBox" class="mt10 mb10">
<PageTitle title="预警数据整合" />
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search> <Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
</div> </div>
<!-- 搜索 -->
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox"> <div class="tabBox heightBox">
<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 #yjtp="{ row }"> <template #yjtp="{ row }">
@ -32,7 +29,7 @@
<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" />
</template> </template>
<template #yjlx="{ row }"> <template #yjlx="{ row }">
<DictTag :value="row.yjlx" :tag="false" :options="D_GS_ZDQT_YJLB" /> <DictTag :value="row.yjlx" :tag="false" :options="D_GS_ZDQT_YJLB" />
</template> </template>
<template #yjlb="{ row }"> <template #yjlb="{ row }">
<DictTag :value="row.yjlb" :options="D_BZ_YJLX" /> <DictTag :value="row.yjlb" :options="D_BZ_YJLX" />
@ -54,7 +51,7 @@
</div> </div>
</div> </div>
<!-- 详情 --> <!-- 详情 -->
<HolographicArchive v-model="assessShow" :dataList="dataList" /> <HolographicArchive v-model="assessShow" :dataList="dataList" />
</template> </template>
<script setup> <script setup>
@ -101,7 +98,7 @@ const pageData = reactive({
{ label: "预警级别", prop: "yjjb", showSolt: true }, { label: "预警级别", prop: "yjjb", showSolt: true },
{ label: "预警类别", prop: "yjlb", showSolt: true }, { label: "预警类别", prop: "yjlb", showSolt: true },
{ label: "预警类型", prop: "yjlx", showSolt: true }, { label: "预警类型", prop: "yjlx", showSolt: true },
{ label: "预警时间", prop: "yjsj" , width: 200}, { label: "预警时间", prop: "yjsj", width: 200 },
{ label: "所属部门", prop: "ssbm" }, { label: "所属部门", prop: "ssbm" },
{ label: "车牌号", prop: "cph" }, { label: "车牌号", prop: "cph" },
] ]
@ -168,7 +165,7 @@ const bqYs = (val) => {
const assessShow = ref(false) const assessShow = ref(false)
const dataList = ref() const dataList = ref()
const pushAssess = (val) => { const pushAssess = (val) => {
return holographicProfileJump(val?.yjlb,val) // 全息档案跳转 return holographicProfileJump(val?.yjlb, val) // 全息档案跳转
} }
@ -185,7 +182,7 @@ const pushAssess = (val) => {
// 表格高度计算 // 表格高度计算
const tabHeightFn = () => { const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250; pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 240;
window.onresize = function () { tabHeightFn(); }; window.onresize = function () { tabHeightFn(); };
}; };
</script> </script>

View File

@ -1,15 +1,7 @@
<template> <template>
<div> <div>
<div class="titleBox">
<PageTitle title="身份预警">
<!-- <el-button>
<span style="vertical-align: middle">导出</span>
</el-button> -->
<el-button type="primary" @click="exportExl">导出</el-button>
</PageTitle>
</div>
<!-- 搜索 --> <!-- 搜索 -->
<div ref="searchBox"> <div ref="searchBox" class="mt10 mb10">
<Searchs :searchArr="searchConfiger" @submit="onSearch" @reset="reset" :key="pageData.keyCount"> <Searchs :searchArr="searchConfiger" @submit="onSearch" @reset="reset" :key="pageData.keyCount">
<template #jfd> <template #jfd>
<div> <div>
@ -20,8 +12,13 @@
</template> </template>
</Searchs> </Searchs>
</div> </div>
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
<template #left>
<el-button type="primary" size="small" @click="exportExl">导出</el-button>
</template>
</PageTitle>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox tabBox_zdy" :style="{ height: (pageData.tableHeight + 40) + 'px' }"> <div class="tabBox tabBox_zdy heightBox" :style="{ height: (pageData.tableHeight + 40) + 'px' }">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight" <MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth" expand :key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth" expand
@chooseData="handleChooseData"> @chooseData="handleChooseData">
@ -39,11 +36,12 @@
<template #controls="{ row }"> <template #controls="{ row }">
<el-link type="warning" @click="pushAssess(row)">全息档案</el-link> <el-link type="warning" @click="pushAssess(row)">全息档案</el-link>
<el-link type="primary" @click="handleCzjy(row)" v-if="roleCode">处置建议</el-link> <el-link type="primary" @click="handleCzjy(row)" v-if="roleCode">处置建议</el-link>
<el-link type="primary" @click="chooseJfFun(row)" >配置系统</el-link> <el-link type="primary" @click="chooseJfFun(row)">配置系统</el-link>
<!-- <el-link type="primary" @click="showDetail(row)">转合成</el-link> <!-- <el-link type="primary" @click="showDetail(row)">转合成</el-link>
<el-link type="danger" @click="handleQsFk(row)">转会商</el-link> --> <el-link type="danger" @click="handleQsFk(row)">转会商</el-link> -->
<el-link type="success" @click="handleQsFk(row, '签收')" v-if="row.czzt == '01' && permission_sfqs">签收</el-link> <el-link type="success" @click="handleQsFk(row, '签收')" v-if="row.czzt == '01' && permission_sfqs">签收</el-link>
<el-link type="success" @click="handleQsFk(row, '反馈')" v-else-if="row.czzt == '02' && permission_sfqs">反馈</el-link> <el-link type="success" @click="handleQsFk(row, '反馈')"
v-else-if="row.czzt == '02' && permission_sfqs">反馈</el-link>
<!-- <el-link type="success" @click="handleQsFk(row, '查看反馈')" v-else>查看反馈</el-link> --> <!-- <el-link type="success" @click="handleQsFk(row, '查看反馈')" v-else>查看反馈</el-link> -->
<el-link type="primary" @click="openAddFrom(row)">详情</el-link> <el-link type="primary" @click="openAddFrom(row)">详情</el-link>
</template> </template>
@ -66,8 +64,8 @@
<!-- 处置建议 --> <!-- 处置建议 -->
<Czjy ref="czjyRef" @okSubmit="getList"></Czjy> <Czjy ref="czjyRef" @okSubmit="getList"></Czjy>
<ChooseJf v-model="chooseJfShow" titleValue="选择系数" :Single="false" <ChooseJf v-model="chooseJfShow" titleValue="选择系数" :Single="false" :chooseJfBh="chooseJfBh" url="/yjzxSfyj/sjxspz"
:chooseJfBh="chooseJfBh" url="/yjzxSfyj/sjxspz" :roleIds="roleIds"/> :roleIds="roleIds" />
</template> </template>
<script setup> <script setup>
@ -85,7 +83,7 @@ import ChooseJf from '@/components/ChooseList/ChooseJf/index.vue'
import FkDialog from "@/views/backOfficeSystem/fourColorManage/warningControl/centerHome/components/fkDialog.vue"; import FkDialog from "@/views/backOfficeSystem/fourColorManage/warningControl/centerHome/components/fkDialog.vue";
import { reactive, ref, onMounted, getCurrentInstance, nextTick } from "vue"; import { reactive, ref, onMounted, getCurrentInstance, nextTick } from "vue";
import { qcckGet, qcckPost } from "@/api/qcckApi.js"; import { qcckGet, qcckPost } from "@/api/qcckApi.js";
import { yjzxSfyjSelectList,yjzxyjzxSfyjSelectList } from "@/api/yj.js"; import { yjzxSfyjSelectList, yjzxyjzxSfyjSelectList } from "@/api/yj.js";
import { tbGsxtBqglSelectList } from '@/api/zdr' import { tbGsxtBqglSelectList } from '@/api/zdr'
import Detail from './components/detail.vue' import Detail from './components/detail.vue'
import { watch } from "vue"; import { watch } from "vue";
@ -97,7 +95,7 @@ import { getMultiDictVal } from "@/utils/dict.js"
const czjyRef = ref() const czjyRef = ref()
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const searchBox = ref(); const searchBox = ref();
const { D_GSXT_YJXX_CZZT, D_GS_SSYJ,D_BZ_YJJB } = proxy.$dict("D_GSXT_YJXX_CZZT", "D_GS_SSYJ",'D_BZ_YJJB') const { D_GSXT_YJXX_CZZT, D_GS_SSYJ, D_BZ_YJJB } = proxy.$dict("D_GSXT_YJXX_CZZT", "D_GS_SSYJ", 'D_BZ_YJJB')
const dict = reactive({ D_GSXT_YJXX_CZZT, D_GS_SSYJ }) const dict = reactive({ D_GSXT_YJXX_CZZT, D_GS_SSYJ })
// 搜索配置 // 搜索配置
const searchConfiger = ref([ const searchConfiger = ref([
@ -105,7 +103,7 @@ const searchConfiger = ref([
{ label: "身份证号码", prop: 'sfzh', placeholder: "请输入身份证号码", showType: "input" }, { label: "身份证号码", prop: 'sfzh', placeholder: "请输入身份证号码", showType: "input" },
{ label: "预警标签", prop: 'yjbqmc', placeholder: "请输入预警标签", showType: "input" }, { label: "预警标签", prop: 'yjbqmc', placeholder: "请输入预警标签", showType: "input" },
{ label: "部门", prop: 'ssbmdm', placeholder: "请选择部门", showType: "department" }, { label: "部门", prop: 'ssbmdm', placeholder: "请选择部门", showType: "department" },
{ label: "级别", prop: 'bqys', placeholder: "请选择级别", showType: "select" ,options: D_BZ_YJJB}, { label: "级别", prop: 'bqys', placeholder: "请选择级别", showType: "select", options: D_BZ_YJJB },
{ label: "积分段", prop: 'jfd', placeholder: "请选择积分段", showType: "Slot" }, { label: "积分段", prop: 'jfd', placeholder: "请选择积分段", showType: "Slot" },
]); ]);
@ -132,9 +130,9 @@ const pageData = reactive({
controlsWidth: 200, //操作栏宽度 controlsWidth: 200, //操作栏宽度
tableColumn: [ tableColumn: [
{ label: "状态", prop: "czzt", showSolt: true }, { label: "状态", prop: "czzt", showSolt: true },
{ label: "预警时间", prop: "yjsj"}, { label: "预警时间", prop: "yjsj" ,width: 180},
{ label: "姓名", prop: "xm" }, { label: "姓名", prop: "xm" },
{ label: "身份证号", prop: "sfzh" }, { label: "身份证号", prop: "sfzh" ,width: 180},
{ label: "标签", prop: "yjbqmc" }, { label: "标签", prop: "yjbqmc" },
{ label: "接收单位", prop: "ssbm" }, { label: "接收单位", prop: "ssbm" },
{ label: "活动频次", prop: "sfcs" }, { label: "活动频次", prop: "sfcs" },
@ -144,10 +142,10 @@ const pageData = reactive({
onMounted(() => { onMounted(() => {
let str = getItem('deptId') ? getItem('deptId')[0].deptLevel : '' let str = getItem('deptId') ? getItem('deptId')[0].deptLevel : ''
permission_sfqs.value = str.startsWith('2'||'3') ? false : true; permission_sfqs.value = str.startsWith('2' || '3') ? false : true;
let rols = getItem('roleList') ? getItem('roleList'):[] let rols = getItem('roleList') ? getItem('roleList') : []
let obj = rols.find(item => { let obj = rols.find(item => {
return ['JS_666666','JS_777777','JS_888888'].includes(item.roleCode) return ['JS_666666', 'JS_777777', 'JS_888888'].includes(item.roleCode)
}) })
roleCode.value = obj ? true : false; roleCode.value = obj ? true : false;
@ -158,7 +156,7 @@ onMounted(() => {
const onSearch = (val) => { const onSearch = (val) => {
queryFrom.value = { ...queryFrom.value,...val }; queryFrom.value = { ...queryFrom.value, ...val };
pageData.pageConfiger.pageCurrent = 1; pageData.pageConfiger.pageCurrent = 1;
getList(); getList();
}; };
@ -267,7 +265,7 @@ const handleQsFk = (val, type) => {
const assessShow = ref(false) const assessShow = ref(false)
const dataList = ref() const dataList = ref()
const pushAssess = (val) => { const pushAssess = (val) => {
return holographicProfileJump(val.yjlb,val) // 全息档案跳转 return holographicProfileJump(val.yjlb, val) // 全息档案跳转
} }
// 发送指令 // 发送指令
@ -311,25 +309,25 @@ const openAddFrom = (row) => {
// 选择系数 // 选择系数
const chooseJfShow = ref(false) const chooseJfShow = ref(false)
const chooseJfBh = ref() const chooseJfBh = ref()
const roleIds=ref() const roleIds = ref()
const chooseJfFun = (val) => { const chooseJfFun = (val) => {
chooseJfBh.value=val.id chooseJfBh.value = val.id
yjzxyjzxSfyjSelectList(val.id).then(res => { yjzxyjzxSfyjSelectList(val.id).then(res => {
roleIds.value=res.sjxspzList.map(item => item.xsid) roleIds.value = res.sjxspzList.map(item => item.xsid)
chooseJfShow.value = true chooseJfShow.value = true
}) })
} }
const handleCzjy = (row) => { const handleCzjy = (row) => {
czjyRef.value.init( row) czjyRef.value.init(row)
} }
// 表格高度计算 // 表格高度计算
const tabHeightFn = () => { const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250; pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 280;
window.onresize = function() { window.onresize = function () {
tabHeightFn(); tabHeightFn();
}; };
}; };
@ -364,17 +362,15 @@ const exportExl = () => {
</script> </script>
<style scoped > <style scoped></style>
</style>
<style lang="scss"> <style lang="scss">
.el-loading-mask { .el-loading-mask {
background: rgba(0, 0, 0, 0.5) !important; background: rgba(0, 0, 0, 0.5) !important;
} }
.tabBox_zdy{
.tabBox_zdy {
.el-table--fit { .el-table--fit {
overflow: unset !important; overflow: unset !important;
} }
} }
</style> </style>

View File

@ -1,16 +1,7 @@
<template> <template>
<div> <div>
<div class="titleBox">
<PageTitle title="区域布控预警">
<!-- <el-button>
<span style="vertical-align: middle">导出</span>
</el-button> -->
<el-button type="primary" @click="exportExl">导出</el-button>
</PageTitle>
</div>
<!-- 搜索 --> <!-- 搜索 -->
<div ref="searchBox" > <div ref="searchBox" class="mt10" >
<Searchs :searchArr="searchConfiger" @submit="onSearch" @reset="reset" :key="pageData.keyCount"> <Searchs :searchArr="searchConfiger" @submit="onSearch" @reset="reset" :key="pageData.keyCount">
<template #jfd> <template #jfd>
<div> <div>
@ -21,6 +12,11 @@
</template> </template>
</Searchs> </Searchs>
</div> </div>
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
<template #left>
<el-button type="primary" @click="exportExl" size="small">导出</el-button>
</template>
</PageTitle>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox" :style="{ height: (pageData.tableHeight + 40) + 'px' }"> <div class="tabBox" :style="{ height: (pageData.tableHeight + 40) + 'px' }">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight" <MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
@ -311,7 +307,7 @@ const chooseJfFun = (val) => {
// 表格高度计算 // 表格高度计算
const tabHeightFn = () => { const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250; pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 270;
window.onresize = function () { window.onresize = function () {
tabHeightFn(); tabHeightFn();
}; };

View File

@ -1,17 +1,12 @@
<template> <template>
<div> <div>
<div class="titleBox">
<PageTitle title="积分排名">
</PageTitle>
</div>
<!-- 搜索 --> <!-- 搜索 -->
<div ref="searchBox"> <div ref="searchBox" class="mt10 mb10">
<Searchs :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"> <Searchs :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount">
</Searchs> </Searchs>
</div> </div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox" :style="{ height: (pageData.tableHeight + 40) + 'px' }"> <div class="tabBox heightBox" >
<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 }">
@ -239,7 +234,7 @@ const getRowClassName = (row) => {
// 表格高度计算 // 表格高度计算
const tabHeightFn = () => { const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - (searchBox.value?.offsetHeight || 0) - 250; pageData.tableHeight = window.innerHeight - (searchBox.value?.offsetHeight || 0) - 200;
window.onresize = function() { window.onresize = function() {
tabHeightFn(); tabHeightFn();
}; };

View File

@ -1,10 +1,8 @@
<template> <template>
<div> <div>
<div class="titleBox">
<PageTitle title="七类重点人员" />
</div>
<!-- 搜索 --> <!-- 搜索 -->
<div ref="searchBox"> <div ref="searchBox" class="mt10 mb10">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"> <Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount">
<template #age="{ row }"> <template #age="{ row }">
<div class="ageBox"> <div class="ageBox">
@ -16,7 +14,7 @@
</Search> </Search>
</div> </div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox"> <div class="tabBox heightBox">
<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 #czzt="{ row }"> <template #czzt="{ row }">
@ -56,6 +54,7 @@
<script setup> <script setup>
import ZpForm from "./zpForm.vue"; import ZpForm from "./zpForm.vue";
import { IdCard } from '@/utils/validate.js' import { IdCard } from '@/utils/validate.js'
import PageTitle from "@/components/aboutTable/PageTitle.vue"; import PageTitle from "@/components/aboutTable/PageTitle.vue";
import Search from "@/components/aboutTable/Search.vue"; import Search from "@/components/aboutTable/Search.vue";
@ -170,7 +169,7 @@ const failWarning = (val) => {
// 表格高度计算 // 表格高度计算
const tabHeightFn = () => { const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250; pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 240;
window.onresize = function () { tabHeightFn(); }; window.onresize = function () { tabHeightFn(); };
}; };
</script> </script>

View File

@ -1,10 +1,7 @@
<template> <template>
<div> <div>
<div class="titleBox">
<PageTitle title="报错" />
</div>
<!-- 搜索 --> <!-- 搜索 -->
<div ref="searchBox"> <div ref="searchBox" class="mt10 mb10">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"> <Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount">
<template #age="{ row }"> <template #age="{ row }">
<div class="ageBox"> <div class="ageBox">
@ -16,7 +13,7 @@
</Search> </Search>
</div> </div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox"> <div class="tabBox heightBox">
<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 #czzt="{ row }"> <template #czzt="{ row }">
@ -156,7 +153,7 @@ const pushAssess = (val) => {
// 表格高度计算 // 表格高度计算
const tabHeightFn = () => { const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250; pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 200;
window.onresize = function () { tabHeightFn(); }; window.onresize = function () { tabHeightFn(); };
}; };
</script> </script>

View File

@ -4,7 +4,7 @@
<div class="tabBox tabBox_zdy" :style="{ height: maxHeight + 130 + 'px' }"> <div class="tabBox tabBox_zdy" :style="{ height: maxHeight + 130 + 'px' }">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="maxHeight + 'px'" <MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="maxHeight + 'px'"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth" :key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
:expand="true" @chooseData="handleChooseData"> :expand="true" @chooseData="handleChooseData" :rowClassName="getRowClassName">
<template #expand="{ props }"> <template #expand="{ props }">
<div> <div>
<Items :row="props" :dict="dict" /> <Items :row="props" :dict="dict" />
@ -53,6 +53,7 @@
<el-link type="success" @click="handleQsFk(row, '反馈')" v-else-if="row.czzt == '02' && permission_sfqs">反馈</el-link> <el-link type="success" @click="handleQsFk(row, '反馈')" v-else-if="row.czzt == '02' && permission_sfqs">反馈</el-link>
<!-- <el-link type="success" @click="handleQsFk(row, '查看反馈')" v-else>查看反馈</el-link> --> <!-- <el-link type="success" @click="handleQsFk(row, '查看反馈')" v-else>查看反馈</el-link> -->
<el-link type="primary" @click="openAddFrom(row)">详情</el-link> <el-link type="primary" @click="openAddFrom(row)">详情</el-link>
<el-link type="primary" @click="pushWarning(row)">指派</el-link>
</template> </template>
<!-- <el-button type="success" @click="showFeedback(item, '签收')" v-if="item.czzt == '01'">签收</el-button> <!-- <el-button type="success" @click="showFeedback(item, '签收')" v-if="item.czzt == '01'">签收</el-button>
<el-button type="success" @click="showFeedback(item, '反馈')" v-if="item.czzt == '02'">反馈</el-button> <el-button type="success" @click="showFeedback(item, '反馈')" v-if="item.czzt == '02'">反馈</el-button>
@ -74,11 +75,13 @@
<!-- <AddFrom ref="addFrom" /> --> <!-- <AddFrom ref="addFrom" /> -->
<!-- 处置建议 --> <!-- 处置建议 -->
<Czjy ref="czjyRef" @okSubmit="getList"></Czjy> <Czjy ref="czjyRef" @okSubmit="getList"></Czjy>
<ZpForm v-model="warningShow" :dataList="dataList"/>
</template> </template>
<script setup> <script setup>
import Czjy from './czjy.vue' import Czjy from './czjy.vue'
import { getItem, setItem } from '@/utils/storage' import { getItem, setItem } from '@/utils/storage'
import ZpForm from "@/views/backOfficeSystem/fourColorManage/warningControl/sevenWarning/zpForm.vue";
import Items from '../item/items.vue' import Items from '../item/items.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";
@ -133,7 +136,7 @@ const pageData = reactive({
pageSize: 20, pageSize: 20,
pageCurrent: 1 pageCurrent: 1
}, //分页 }, //分页
controlsWidth: 200, //操作栏宽度 controlsWidth: 250, //操作栏宽度
tableColumn: [ tableColumn: [
{ label: "预警图片", prop: "yjTp", showSolt: true, width: 100 }, { label: "预警图片", prop: "yjTp", showSolt: true, width: 100 },
{ label: "处置状态", prop: "czzt", showSolt: true }, { label: "处置状态", prop: "czzt", showSolt: true },
@ -144,7 +147,7 @@ const pageData = reactive({
{ label: "身份证", prop: "yjRysfzh", showOverflowTooltip: true, width: 200 }, { label: "身份证", prop: "yjRysfzh", showOverflowTooltip: true, width: 200 },
// { label: "预警级别", prop: "yjJb", showSolt: true }, // { label: "预警级别", prop: "yjJb", showSolt: true },
{ label: "相似度", prop: "xsd", showSolt: true }, { label: "相似度", prop: "xsd", showSolt: true },
{ label: "布控车牌号", prop: "yjClcph", showOverflowTooltip: true }, // { label: "布控车牌号", prop: "yjClcph", showOverflowTooltip: true },
{ label: "所属部门", prop: "ssbm", showOverflowTooltip: true }, { label: "所属部门", prop: "ssbm", showOverflowTooltip: true },
] ]
}); });
@ -268,7 +271,13 @@ const getRowClassName = (row) => {
if (level === '04' || level.includes('蓝')) return 'warning-level-04'; if (level === '04' || level.includes('蓝')) return 'warning-level-04';
return ''; return '';
}; };
//
const warningShow = ref(false)
const pushWarning = (val) => {
warningShow.value = true
dataList.value = val;
}
// // 表格高度计算 // // 表格高度计算
// const tabHeightFn = () => { // const tabHeightFn = () => {
// pageData.tableHeight = window.innerHeight - 430; // pageData.tableHeight = window.innerHeight - 430;

View File

@ -1,13 +1,13 @@
<template> <template>
<div> <div>
<div class="titleBox">
<PageTitle title="人像预警">
<el-button type="primary" @click="exportExl">导出</el-button>
</PageTitle>
</div>
<!-- 搜索 --> <!-- 搜索 -->
<div ref="searchBox" class="searchBox" > <div ref="searchBox" class="searchBoxlive mt10">
<div class="filter-title">
<span class="filter-label"><el-icon>
<Filter />
</el-icon>筛选条件</span>
</div>
<el-form :model="listQuery" label-width="auto" :inline="true" ref="searchArr"> <el-form :model="listQuery" label-width="auto" :inline="true" ref="searchArr">
<el-form-item label="布控人员" prop="yjRyxm "> <el-form-item label="布控人员" prop="yjRyxm ">
<el-select clearable v-model="listQuery.yjRyxm" filterable remote reserve-keyword placeholder="请输入布控人员" <el-select clearable v-model="listQuery.yjRyxm" filterable remote reserve-keyword placeholder="请输入布控人员"
@ -37,11 +37,16 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
<template #left>
<el-button type="primary" size="small" @click="exportExl">导出</el-button>
</template>
</PageTitle>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox" :style="{ height: (pageData.tableHeight + 40) + 'px', paddingTop: '10px' }"> <div class="tabBox" :style="{ height: (pageData.tableHeight + 40) + 'px', paddingTop: '10px' }">
<!-- <div style="padding:0 10px;"> <el-button type="primary" @click="exportExcel">导出</el-button></div> --> <!-- <div style="padding:0 10px;"> <el-button type="primary" @click="exportExcel">导出</el-button></div> -->
<LocalWarning :maxHeight="pageData.tableHeight - 160" <LocalWarning :maxHeight="pageData.tableHeight - 160" ref="localWarningRef"
ref="localWarningRef" :dict="{ D_GSXT_YJXX_CZZT, D_BZ_YJJB, D_BZ_YJLYXT,D_BZ_YJLY }" excelTitle="人像预警" /> :dict="{ D_GSXT_YJXX_CZZT, D_BZ_YJJB, D_BZ_YJLYXT, D_BZ_YJLY }" excelTitle="人像预警" />
</div> </div>
</div> </div>
<el-dialog v-model="showDc" title="导出预警" width="80%"> <el-dialog v-model="showDc" title="导出预警" width="80%">
@ -64,7 +69,7 @@
<template #nl="{ row }"> <template #nl="{ row }">
{{ IdCard(row.yjRysfzh, 3) }} {{ IdCard(row.yjRysfzh, 3) }}
</template> </template>
<template #sxd="{ row }"> {{ row.sxd }}% </template> <template #sxd="{ row }"> {{ row.sxd }}% </template>
<template #yjLylx="{ row }"> <template #yjLylx="{ row }">
<DictTag v-model:value="row.yjLylx" :options="D_BZ_YJLY" /> <DictTag v-model:value="row.yjLylx" :options="D_BZ_YJLY" />
</template> </template>
@ -108,7 +113,7 @@ import * as XLSX from "xlsx";
const { proxy } = getCurrentInstance(); 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 } = proxy.$dict("D_GSXT_YJXX_CZZT", "D_BZ_YJJB", "D_BZ_YJLYXT", "D_BZ_YJLY")
const searchBox = ref(); //搜索框 const searchBox = ref(); //搜索框
const shortcuts = [ const shortcuts = [
{ {
@ -161,12 +166,12 @@ const pageData = reactive({
controlsWidth: 160, //操作栏宽度 controlsWidth: 160, //操作栏宽度
tableColumn: [ tableColumn: [
{ label: "相似度", prop: "sxd", showSolt: true }, { label: "相似度", prop: "sxd", showSolt: true },
{ label: "预警图片11", prop: "yjTp", showSolt: true }, { label: "预警图片", prop: "yjTp", showSolt: true },
{ label: "处置状态", prop: "czzt", showSolt: true }, { label: "处置状态", prop: "czzt", showSolt: true },
{ label: "预警时间", prop: "yjSj", showOverflowTooltip: true }, { label: "预警时间", prop: "yjSj", showOverflowTooltip: true },
{ label: "姓名", prop: "yjRyxm" }, { label: "姓名", prop: "yjRyxm" },
{ label: "年龄", prop: "nl", showSolt: true }, { label: "年龄", prop: "nl", showSolt: true },
{ label: "数据来源", prop: "yjLylx", showOverflowTooltip: true,showSolt:D_BZ_YJLY }, { label: "数据来源", prop: "yjLylx", showOverflowTooltip: true, showSolt: D_BZ_YJLY },
{ label: "性别", prop: "xb", showSolt: true }, { label: "性别", prop: "xb", showSolt: true },
{ label: "预警级别", prop: "yjJb", showSolt: true }, { label: "预警级别", prop: "yjJb", showSolt: true },
{ label: "预警地点", prop: "yjDz", showOverflowTooltip: true }, { label: "预警地点", prop: "yjDz", showOverflowTooltip: true },
@ -234,8 +239,8 @@ const resetForm = (formEl) => {
// 表格高度计算 // 表格高度计算
const tabHeightFn = () => { const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - (searchBox.value?.offsetHeight || 0) - 250; pageData.tableHeight = window.innerHeight - (searchBox.value?.offsetHeight || 0) - 220;
window.onresize = function() { window.onresize = function () {
tabHeightFn(); tabHeightFn();
}; };
}; };
@ -350,6 +355,30 @@ const exportExl = () => {
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.filter-title {
display: flex;
align-items: center;
margin-bottom: 10px;
width: 100%;
background: linear-gradient(to right, #9ed7ff, #e6f0f8);
padding: 5px 15px;
.filter-label {
display: flex;
align-items: center;
font-weight: bold;
color: #000;
margin-right: 10px;
white-space: nowrap;
}
.filter-line {
flex: 1;
height: 1px;
background-color: #ccc;
}
}
::v-deep .el-table--fit { ::v-deep .el-table--fit {
height: calc(100% - 50px) !important; height: calc(100% - 50px) !important;
} }

View File

@ -4,7 +4,7 @@
<div class="tabBox tabBox_zdy" :style="{ height: maxHeight + 130 + 'px' }"> <div class="tabBox tabBox_zdy" :style="{ height: maxHeight + 130 + 'px' }">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="maxHeight + 'px'" <MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="maxHeight + 'px'"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth" :key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
:expand="true" @chooseData="handleChooseData"> :expand="true" @chooseData="handleChooseData" :rowClassName="getRowClassName">
<template #expand="{ props }"> <template #expand="{ props }">
<div class="expand-content" style="max-width: 100%"> <div class="expand-content" style="max-width: 100%">
<Items :row="props" :dict="dict" /> <Items :row="props" :dict="dict" />
@ -54,6 +54,7 @@
<el-link type="success" @click="handleQsFk(row, '反馈')" v-else-if="row.czzt == '02' && permission_sfqs">反馈</el-link> <el-link type="success" @click="handleQsFk(row, '反馈')" v-else-if="row.czzt == '02' && permission_sfqs">反馈</el-link>
<!-- <el-link type="success" @click="handleQsFk(row, '查看反馈')" v-else>查看反馈</el-link> --> <!-- <el-link type="success" @click="handleQsFk(row, '查看反馈')" v-else>查看反馈</el-link> -->
<el-link type="primary" @click="openAddFrom(row)">详情</el-link> <el-link type="primary" @click="openAddFrom(row)">详情</el-link>
<el-link type="primary" @click="pushWarning(row)">指派</el-link>
</template> </template>
<!-- <el-button type="success" @click="showFeedback(item, '签收')" v-if="item.czzt == '01'">签收</el-button> <!-- <el-button type="success" @click="showFeedback(item, '签收')" v-if="item.czzt == '01'">签收</el-button>
<el-button type="success" @click="showFeedback(item, '反馈')" v-if="item.czzt == '02'">反馈</el-button> <el-button type="success" @click="showFeedback(item, '反馈')" v-if="item.czzt == '02'">反馈</el-button>
@ -75,6 +76,7 @@
<!-- <AddFrom ref="addFrom" /> --> <!-- <AddFrom ref="addFrom" /> -->
<!-- 处置建议 --> <!-- 处置建议 -->
<Czjy ref="czjyRef" @okSubmit="getList"></Czjy> <Czjy ref="czjyRef" @okSubmit="getList"></Czjy>
<ZpForm v-model="warningShow" :dataList="dataList"/>
</template> </template>
<script setup> <script setup>
@ -89,6 +91,7 @@ import HolographicArchive from '@/views/home/components/holographicArchive.vue'
import Information from "@/views/home/model/information.vue"; import Information from "@/views/home/model/information.vue";
import SemdFqzl from '@/components/instructionHasBeen/sendFqzl.vue' import SemdFqzl from '@/components/instructionHasBeen/sendFqzl.vue'
import FkDialog from "@/views/backOfficeSystem/fourColorManage/warningControl/centerHome/components/fkDialog.vue"; import FkDialog from "@/views/backOfficeSystem/fourColorManage/warningControl/centerHome/components/fkDialog.vue";
import ZpForm from "@/views/backOfficeSystem/fourColorManage/warningControl/sevenWarning/zpForm.vue";
import emitter from "@/utils/eventBus.js"; import emitter from "@/utils/eventBus.js";
import { holographicProfileJump } from "@/utils/tools.js" import { holographicProfileJump } from "@/utils/tools.js"
import { exportExlByObj } from "@/utils/exportExcel.js" import { exportExlByObj } from "@/utils/exportExcel.js"
@ -127,7 +130,7 @@ const pageData = reactive({
pageSize: 20, pageSize: 20,
pageCurrent: 1 pageCurrent: 1
}, //分页 }, //分页
controlsWidth: 200, //操作栏宽度 controlsWidth: 250, //操作栏宽度
tableColumn: [ tableColumn: [
{ label: "状态", prop: "czzt", showSolt: true }, { label: "状态", prop: "czzt", showSolt: true },
{ label: "预警图片", prop: "yjTp", showSolt: true, width: 100 }, { label: "预警图片", prop: "yjTp", showSolt: true, width: 100 },
@ -266,7 +269,12 @@ const getRowClassName = (row) => {
// tabHeightFn(); // tabHeightFn();
// }; // };
// }; // };
// 指派
const warningShow = ref(false)
const pushWarning = (val) => {
warningShow.value = true;
dataList.value = val;
}
const handleChooseData = (val) => { const handleChooseData = (val) => {
selectRows.value = val selectRows.value = val

View File

@ -1,15 +1,12 @@
<template> <template>
<div> <div>
<div class="titleBox"> <div ref="searchBox" class="searchBoxlive mt10">
<div class="filter-title">
<PageTitle title="车辆预警"> <span class="filter-label"><el-icon>
<Filter />
<el-button type="primary" @click="exportExl">导出</el-button> </el-icon>筛选条件</span>
</PageTitle> </div>
</div> <el-form :model="listQuery" label-width="auto" :inline="true" ref="searchArr" style="margin-left: 10px;">
<!-- 搜索 -->
<div ref="searchBox" class="searchBox">
<el-form :model="listQuery" label-width="auto" :inline="true" ref="searchArr">
<el-form-item label="时间筛选"> <el-form-item label="时间筛选">
<el-date-picker v-model="listQuery.time" type="datetimerange" :shortcuts="shortcuts" range-separator="To" <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" start-placeholder="开始时间" end-placeholder="结束时间" value-format="YYYY-MM-DD HH:mm:ss"
@ -32,11 +29,18 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
<template #left>
<el-button type="primary" @click="exportExl" size="small">导出</el-button>
</template>
</PageTitle>
<!-- 搜索 -->
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox" :style="{ height: (pageData.tableHeight + 40) + 'px', paddingTop: '10px' }"> <div class="tabBox" :style="{ height: (pageData.tableHeight + 40) + 'px', paddingTop: '10px' }">
<!-- <div style="padding:0 10px;"> <el-button type="primary" @click="exportExcel">导出</el-button></div> --> <!-- <div style="padding:0 10px;"> <el-button type="primary" @click="exportExcel">导出</el-button></div> -->
<LocalWarning :maxHeight=" pageData.tableHeight - 160" <LocalWarning :maxHeight="pageData.tableHeight - 160" ref="localWarningRef"
ref="localWarningRef" :dict="{ D_GSXT_YJXX_CZZT, D_BZ_YJJB, D_BZ_YJLYXT ,D_BZ_YJLY}" excelTitle="车辆预警" /> :dict="{ D_GSXT_YJXX_CZZT, D_BZ_YJJB, D_BZ_YJLYXT, D_BZ_YJLY }" excelTitle="车辆预警" />
</div> </div>
</div> </div>
<el-dialog v-model="showDc" title="导出预警" width="80%"> <el-dialog v-model="showDc" title="导出预警" width="80%">
@ -60,7 +64,7 @@
{{ IdCard(row.yjRysfzh, 3) }} {{ IdCard(row.yjRysfzh, 3) }}
</template> </template>
<template #yjLylx="{ row }"> <template #yjLylx="{ row }">
<DictTag v-model:value="row.yjLylx" :options="D_BZ_YJLY" /> <DictTag v-model:value="row.yjLylx" :options="D_BZ_YJLY" />
</template> </template>
<template #xb="{ row }"> <template #xb="{ row }">
{{ IdCard(row.yjRysfzh, 2) }} {{ IdCard(row.yjRysfzh, 2) }}
@ -158,7 +162,7 @@ const pageData = reactive({
{ label: "预警时间", prop: "yjSj", showOverflowTooltip: true }, { label: "预警时间", prop: "yjSj", showOverflowTooltip: true },
{ label: "姓名", prop: "yjRyxm" }, { label: "姓名", prop: "yjRyxm" },
{ label: "年龄", prop: "nl", showSolt: true }, { label: "年龄", prop: "nl", showSolt: true },
{ label: "数据来源", prop: "yjLylx", showOverflowTooltip: true , showSolt: true }, { label: "数据来源", prop: "yjLylx", showOverflowTooltip: true, showSolt: true },
{ label: "性别", prop: "xb", showSolt: true }, { label: "性别", prop: "xb", showSolt: true },
{ label: "预警级别", prop: "yjJb", showSolt: true }, { label: "预警级别", prop: "yjJb", showSolt: true },
{ label: "相似度", prop: "xsd", showSolt: true }, { label: "相似度", prop: "xsd", showSolt: true },
@ -208,8 +212,8 @@ const resetForm = (formEl) => {
// 表格高度计算 // 表格高度计算
const tabHeightFn = () => { const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - (searchBox.value?.offsetHeight || 0) - 250; pageData.tableHeight = window.innerHeight - (searchBox.value?.offsetHeight || 0) - 270;
window.onresize = function() { window.onresize = function () {
tabHeightFn(); tabHeightFn();
}; };
}; };
@ -328,6 +332,30 @@ const exportExl = () => {
::v-deep .el-table--fit { ::v-deep .el-table--fit {
height: calc(100% - 50px) !important; height: calc(100% - 50px) !important;
} }
.filter-title {
display: flex;
align-items: center;
margin-bottom: 10px;
width: 100%;
background: linear-gradient(to right, #9ed7ff, #e6f0f8);
padding: 5px 15px;
.filter-label {
display: flex;
align-items: center;
font-weight: bold;
color: #000;
margin-right: 10px;
white-space: nowrap;
}
.filter-line {
flex: 1;
height: 1px;
background-color: #ccc;
}
}
</style> </style>
<style> <style>
.el-loading-mask { .el-loading-mask {

View File

@ -1,19 +1,13 @@
<template> <template>
<div> <div>
<div class="titleBox">
<PageTitle title="积分列表">
<!-- <el-button type="primary" @click="addEdit('add', '')">
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
<span style="vertical-align: middle">新增</span>
</el-button> -->
</PageTitle>
</div>
<!-- 搜索 --> <!-- 搜索 -->
<div ref="searchBox"> <div ref="searchBox" class="mt10 mb10">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search> <Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
</div> </div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox"> <div class="tabBox heightBox">
<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">
@ -163,7 +157,7 @@ const addEdit = (type, row) => {
// 表格高度计算 // 表格高度计算
const tabHeightFn = () => { const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250; pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 200;
window.onresize = function() { window.onresize = function() {
tabHeightFn(); tabHeightFn();
}; };

View File

@ -1,19 +1,19 @@
<template> <template>
<div> <div>
<div class="titleBox"> <!-- <div class="titleBox">
<PageTitle title="警情管理"> <PageTitle title="警情管理">
<!-- <el-button type="primary" @click="addEdit('add', '')"> <el-button type="primary" @click="addEdit('add', '')">
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon> <el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
<span style="vertical-align: middle">新增</span> <span style="vertical-align: middle">新增</span>
</el-button> --> </el-button>
</PageTitle> </PageTitle>
</div> </div> -->
<!-- 搜索 --> <!-- 搜索 -->
<div ref="searchBox"> <div ref="searchBox" class="mt10 mb10">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search> <Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
</div> </div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox"> <div class="tabBox heightBox">
<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 #jjlx="{ row }"> <!-- <template #jjlx="{ row }">
@ -188,7 +188,7 @@ const handleYP = (type, row) => {
// 表格高度计算 // 表格高度计算
const tabHeightFn = () => { const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250; pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 200;
window.onresize = function () { window.onresize = function () {
tabHeightFn(); tabHeightFn();
}; };

View File

@ -1,19 +1,11 @@
<template> <template>
<div> <div>
<div class="titleBox">
<PageTitle title="补充/续报列表">
<!-- <el-button type="primary" @click="addEdit('add', '')">
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
<span style="vertical-align: middle">新增</span>
</el-button> -->
</PageTitle>
</div>
<!-- 搜索 --> <!-- 搜索 -->
<div ref="searchBox"> <div ref="searchBox" class="mt10 mb10">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search> <Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
</div> </div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox"> <div class="tabBox heightBox">
<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 #jjlx="{ row }"> <!-- <template #jjlx="{ row }">
@ -146,7 +138,7 @@ const addEdit = (type, row) => {
// 表格高度计算 // 表格高度计算
const tabHeightFn = () => { const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250; pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight -200
window.onresize = function() { window.onresize = function() {
tabHeightFn(); tabHeightFn();
}; };

View File

@ -1,19 +1,11 @@
<template> <template>
<div> <div>
<div class="titleBox">
<PageTitle title="转会商列表">
<!-- <el-button type="primary" @click="addEdit('add', '')">
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
<span style="vertical-align: middle">新增</span>
</el-button> -->
</PageTitle>
</div>
<!-- 搜索 --> <!-- 搜索 -->
<div ref="searchBox"> <div ref="searchBox" class="mt10 mb10">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search> <Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
</div> </div>
<!-- 表格 --> <!-- 表格 -->
<div class="tabBox"> <div class="tabBox heightBox" >
<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 #jjlx="{ row }"> <!-- <template #jjlx="{ row }">
@ -150,7 +142,7 @@ const addEdit = (type, row) => {
// 表格高度计算 // 表格高度计算
const tabHeightFn = () => { const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250; pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 200;
window.onresize = function() { window.onresize = function() {
tabHeightFn(); tabHeightFn();
}; };

View File

@ -3,7 +3,7 @@
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search> <Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
<MyTable customClass="zdy_peo_table" :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" <MyTable customClass="zdy_peo_table" :tableData="pageData.tableData" :tableColumn="pageData.tableColumn"
:tableHeight="pageData.tableHeight" :key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :tableHeight="pageData.tableHeight" :key="pageData.keyCount" :tableConfiger="pageData.tableConfiger"
:controlsWidth="pageData.controlsWidth"> :controlsWidth="pageData.controlsWidth" @handleCellClick="clickTag">
<template #qblx="{ row }"> <template #qblx="{ row }">
<DictTag :tag="false" :value="row.qblx" :options="D_GS_XS_LX" /> <DictTag :tag="false" :value="row.qblx" :options="D_GS_XS_LX" />
</template> </template>
@ -30,12 +30,14 @@
</div> </div>
</template> </template>
</el-dialog> </el-dialog>
<Xq v-model:modelValue="xqDialog" :dict="dict" :dataList="dataList" />
</template> </template>
<script setup> <script setup>
import MyTable from "@/components/aboutTable/MyTable.vue"; import MyTable from "@/components/aboutTable/MyTable.vue";
import Search from "@/components/aboutTable/Search.vue"; import Search from "@/components/aboutTable/Search.vue";
import Pages from "@/components/aboutTable/Pages.vue"; import Pages from "@/components/aboutTable/Pages.vue";
import Xq from "./xq.vue";
import { qbcjSelectPage } from "@/api/Intelligence.js"; import { qbcjSelectPage } from "@/api/Intelligence.js";
import {xxcjSelectPage,xxcjXxzsx} from '@/api/xxcj.js' import {xxcjSelectPage,xxcjXxzsx} from '@/api/xxcj.js'
import { ref, reactive, getCurrentInstance, watch } from "vue"; import { ref, reactive, getCurrentInstance, watch } from "vue";
@ -67,7 +69,8 @@ const searchConfiger = ref([
placeholder: "请选择上报来源", placeholder: "请选择上报来源",
showType: "select", showType: "select",
options: D_BZ_QBSBLY options: D_BZ_QBSBLY
}, { },
{
label: "上报时间", label: "上报时间",
prop: "startTime", prop: "startTime",
placeholder: "请选择时间", placeholder: "请选择时间",
@ -99,10 +102,10 @@ const pageData = reactive({
{ label: "上报人姓名", prop: "xssbr" }, { label: "上报人姓名", prop: "xssbr" },
{ label: "情报编号", prop: "xsBh" }, { label: "情报编号", prop: "xsBh" },
{ label: "情报标题", prop: "qbmc" }, { label: "情报标题", prop: "qbmc" },
{ label: "情报类型", prop: "qblx", showSolt: true }, // { label: "情报类型", prop: "qblx", showSolt: true },
{ label: "情报来源", prop: "qbly", showSolt: true }, // { label: "情报来源", prop: "qbly", showSolt: true },
{ label: "情报上报时间", prop: "sxsbsj" }, { label: "情报上报时间", prop: "sxsbsj" ,watch:'300'},
{ label: "指向地点", prop: "zxdz" }, // { label: "指向地点", prop: "zxdz" },
{ label: "情报内容", prop: "qbnr" }, { label: "情报内容", prop: "qbnr" },
], ],
tableHeight: "50vh", tableHeight: "50vh",
@ -150,6 +153,17 @@ const changeSize = (val) => {
pageData.pageConfiger.pageSize = val; pageData.pageConfiger.pageSize = val;
changePage() changePage()
} }
const xqDialog = ref(false)
const dataList = ref({})
const clickTag = (row) => {
if (row.column.property == 'qbmc' || row.column.property == 'xsBh') {
xqDialog.value = true;
dataList.value = row.row;
}
}
</script> </script>
<style scoped></style> <style scoped lang="scss">
</style>

View File

@ -0,0 +1,560 @@
<template>
<el-dialog :model-value="modelValue" title="情报详情" width="70%" @close="closeDialog" destroy-on-close>
<div style="height: 60vh;overflow: auto; ">
<div class="form-container">
<div class="form-content">
<!-- <div class="form_cnt"> -->
<FormMessage :disabled="disabled" v-model="listQuery" :formList="formData" ref="elform" >
<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>
</div>
</template>
<template #shzt>
<div v-if="disabled">
<h3 class="tags-title">审核状态</h3>
<div style="display: flex;justify-content:space-between;width: 200%;">
<div style="display: flex;">
市审核状态
<DictTag v-model:value="listQuery.sldshzt" :options="dict.D_BZ_SSSHZT" :tag="false" />
</div>
<div style="display: flex;">
县审核状态
<DictTag v-model:value="listQuery.xldshzt" :options="dict.D_BZ_SSSHZT" :tag="false" />
</div>
</div>
</div>
</template>
</FormMessage>
<!-- </div> -->
<div class="tags-section" v-if="disabled">
<h3 class="tags-title">关注部门</h3>
<div class="tags-container">
<div v-for="(tag, index) in listQuery.gzbmList" :key="tag.id || index" class="tag-item">
<div class="tag-content">
{{ tag.ssbm }}
</div>
</div>
<span v-if="!listQuery.gzbmList || listQuery.gzbmList.length === 0" class="no-tags">
暂无标签
</span>
</div>
</div>
<div class="tags-section" v-if="disabled">
<h3 class="tags-title">关联标签</h3>
<div class="tags-container">
<div v-for="(tag, index) in listQuery.glbqList" :key="tag.id || index" class="tag-item">
<div class="tag-content">
{{ tag.bqmc }}
</div>
</div>
<span v-if="!listQuery.glbqList || listQuery.glbqList.length === 0" class="no-tags">
暂无标签
</span>
</div>
</div>
<div class="tags-section" v-if="disabled">
<h3 class="tags-title">续报信息</h3>
<div class="list-container">
<div v-for="(item, index) in dataList.xb" :key="item.id || index" class="list-item">
<div class="list-content">
{{ item.bcnr }}
</div>
<div class="tag-actions">
<el-icon class="action-icon edit-icon" :size="32" @click="openPursue('续报信息', item)">
<EditPen />
</el-icon>
<el-icon class="action-icon delete-icon" :size="32" @click="handleDeleteTag(item)">
<Delete />
</el-icon>
</div>
</div>
<span v-if="!dataList.xb || dataList.xb.length === 0" class="no-tags">
暂无续报信息
</span>
</div>
</div>
<div class="tags-section" v-if="disabled">
<h3 class="tags-title">补充信息</h3>
<div class="list-container">
<div v-for="(item, index) in dataList.bc" :key="item.id || index" class="list-item">
<div class="list-content">
{{ item.bcnr }}
</div>
<div class="tag-actions">
<el-icon class="action-icon edit-icon" :size="32" @click="openPursue('信息追加', item)">
<EditPen />
</el-icon>
<el-icon class="action-icon delete-icon" :size="32" @click="handleDeleteTag(item)">
<Delete />
</el-icon>
</div>
</div>
<span v-if="!dataList.bc || dataList.bc.length === 0" class="no-tags">
暂无补充信息
</span>
</div>
</div>
</div>
<div class="ml50 mr50 timeline-container" v-if="disabled">
<div class="timeline-title">信息流程展示</div>
<el-timeline class="timeline-full-width">
<el-timeline-item :timestamp="item.czsj" placement="top" v-for="(item, index) in lcList" :key="index">
<el-card class="process-card">
<div class="process-info">
<div class="info-label">处置人</div>
<div class="info-value">{{ item.czrxm || '未记录' }}</div>
</div>
<div class="process-info">
<div class="info-label">处置结果</div>
<div class="info-value">
<DictTag :tag="false" :value="item.czzt" :options="D_BZ_LCZT" />
</div>
</div>
</el-card>
</el-timeline-item>
</el-timeline>
<MOSTY.Empty :show="lcList.length == 0" :imgSize="100"></MOSTY.Empty>
</div>
</div></div>
<template #footer>
<div class="dialog-footer">
<el-button @click="closeDialog">取消</el-button>
<el-button type="primary" @click="closeDialog">确认 </el-button>
</div>
</template>
</el-dialog>
<pursueContent v-model="pursueShow" :dataList="dataVals" :title="processtitle" :updeteBool="true" />
</template>
<script setup>
import FormMessage from "@/components/aboutTable/FormMessage.vue";
import { xxcjAddEntity, xxcjUpdateEntity, xxcjSelectByid, xxcjSelectCzlcList, xxcjSelectListBc, xxcjDeletesBc, addEntity, xxcjTjcll, xxcjXxzhs } from "@/api/xxcj.js"
import { ref, reactive, getCurrentInstance, watch } from "vue";
import { useRoute, useRouter } from 'vue-router'
import pursueContent from "@/views/backOfficeSystem/HumanIntelligence/components/pursueContent.vue";
import * as MOSTY from "@/components/MyComponents/index";
import { getItem } from '@//utils/storage.js'
const router = useRouter()
const { proxy } = getCurrentInstance()
const { D_BZ_LCZT} = proxy.$dict("D_BZ_LCZT")
const props = defineProps({
modelValue: {
type: Boolean,
default: false
},
dict: {
type: Object,
default: () => ({})
}, dataList: {
type: Object,
default: () => ({})
}
})
const emit = defineEmits(['update:modelValue'])
const closeDialog = () => {
emit('update:modelValue', false)
}
//
const disabled = true
const listQuery = ref({})
const userInfo = ref({})
const userName = ref('')
const formData = ref([
{ label: "情报标题", prop: "qbmc", type: "input", width: '45%' },
{ label: "情报内容", prop: "qbnr", type: "textarea", width: '100%', rows: 10 },
{ label: "附件上传", prop: "fjdz", type: "upload", width: '100%', isImg: false },
{ label: "", prop: "jbxx", type: "slot", width: '100%', },
{ label: "", prop: "shzt", type: "slot", width: '100%' },
])
// 根据id查询详情
const getDataById = (id) => {
xxcjSelectByid({ id }).then((res) => {
listQuery.value = res;
listQuery.value.fjdz = res.fjdz ? res.fjdz?.split(",") : []
});
};
watch(() => props.modelValue, (newVal, oldVal) => {
if (newVal) {
userInfo.value = getItem('deptId') ? getItem('deptId')[0] : {}
userName.value = getItem('USERNAME')
getDataById(props.dataList.id)
getqbcjPldb(props.dataList.id)
getXxcjTjcll()
}
})
// 流程
const lcList = ref([])
const getqbcjPldb = (id) => {
xxcjSelectCzlcList({ qbid: id }).then(res => {
lcList.value = res || []
})
.catch(() => {
})
}
// 统计
const tjcll = ref({})
const getXxcjTjcll = () => {
xxcjTjcll({}).then(res => {
tjcll.value = res
}).catch(error => {
console.error('请求失败:', error)
})
}
</script>
<style scoped lang="scss">
::v-deep .el-tabs--card>.el-tabs__header .el-tabs__item.is-active {
color: #0072ff;
background: rgba(0, 114, 255, 0.3);
}
.boxlist {
width: 99%;
height: 225px;
margin-top: 10px;
overflow: hidden;
}
::v-deep .avatar-uploader {
display: flex;
align-items: center;
}
::v-deep .el-upload-list {
margin-left: 20px;
display: flex;
align-items: center;
}
::v-deep .el-upload-list__item-name .el-icon {
top: 3px;
}
.form_cnt {
// width: 75%;
flex: 1;
}
.person {
padding-left: 20px;
width: 25%;
// height: 100vh;
}
/* 补充信息样式 */
.supplement-title {
font-size: 14px;
font-weight: 500;
color: #333;
margin: 16px 0 10px 0;
padding-left: 5px;
border-left: 3px solid #24b6dd;
}
.supplement-list {
margin-left: 5px;
}
.supplement-item {
display: flex;
align-items: center;
justify-content: space-between;
padding: 8px 12px;
background-color: #f5f7fa;
border: 1px solid #e4e7ed;
border-radius: 4px;
margin-bottom: 8px;
margin-right: 10px;
transition: all 0.3s ease;
}
.supplement-item:hover {
background-color: #ecf5ff;
border-color: #c6e2ff;
}
.supplement-content {
flex: 1;
font-size: 14px;
color: #606266;
line-height: 1.5;
}
.supplement-actions {
display: flex;
gap: 12px;
}
.action-icon {
// font-size: 24px;
cursor: pointer;
transition: all 0.3s ease;
}
.edit-icon {
color: #24b6dd;
}
.edit-icon:hover {
color: #409eff;
transform: scale(1.1);
}
.delete-icon {
color: #f56c6c;
}
.delete-icon:hover {
color: #f78989;
transform: scale(1.1);
}
/* 时间线标题样式 */
.timeline-title {
font-size: 16px;
font-weight: 600;
color: #303133;
padding: 12px 16px;
margin-bottom: 10px;
background-color: #f5f7fa;
border-bottom: 1px solid #ebeef5;
border-radius: 4px 4px 0 0;
}
/* 时间线样式优化 */
.el-timeline {
margin-top: 20px;
}
/* 处置流程卡片样式 */
.process-card {
border: none;
border-radius: 8px;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.08);
transition: all 0.3s ease;
margin-bottom: 16px;
border-left: 3px solid #409EFF;
}
.process-card:hover {
box-shadow: 0 4px 20px 0 rgba(0, 0, 0, 0.12);
transform: translateY(-2px);
}
/* 卡片内部信息样式 */
.process-info {
display: flex;
align-items: flex-start;
margin-bottom: 12px;
flex-wrap: wrap;
}
.process-info:last-child {
margin-bottom: 0;
}
.info-label {
font-size: 14px;
font-weight: 600;
color: #409EFF;
margin-right: 8px;
min-width: 65px;
}
.info-value {
font-size: 14px;
color: #606266;
line-height: 1.6;
flex: 1;
word-break: break-word;
}
/* 时间戳样式 */
.el-timeline-item__timestamp {
font-size: 13px;
color: #909399;
margin-bottom: 8px;
}
/* 时间线节点样式 */
.el-timeline-item__node {
background-color: #409EFF;
}
/* 容器类样式 */
.form-container {
display: flex;
width: 100%;
}
.form-content {
// display: flex;
width: 80%;
}
.timeline-container {
border: 1px solid #ebeef5;
flex: 1;
margin: 0 10px;
height: 100vh;
overflow: auto;
}
/* 时间线宽度 */
.timeline-full-width {
width: 100%;
}
/* 标签区域样式 */
.tags-section {
margin-top: 20px;
}
/* 标签标题样式 */
.tags-title {
font-size: 14px;
font-weight: 600;
color: #303133;
margin-bottom: 8px;
padding-left: 5px;
border-left: 3px solid #409EFF;
}
/* 标签容器样式 */
.tags-container {
padding: 12px;
background-color: #f5f7fa;
border-radius: 4px;
display: flex;
flex-wrap: wrap;
gap: 12px;
align-items: center;
}
/* 标签项目样式 */
.tag-item {
display: flex;
align-items: center;
gap: 6px;
padding: 6px 10px;
background-color: #ecf5ff;
border-radius: 4px;
border: 1px solid #d9ecff;
transition: all 0.3s ease;
}
/* 标签项目悬停效果 */
.tag-item:hover {
background-color: #e6f7ff;
border-color: #91d5ff;
box-shadow: 0 2px 8px rgba(0, 123, 255, 0.15);
}
/* 标签内容样式 */
.tag-content {
margin: 0;
font-size: 14px;
color: #303133;
font-weight: 500;
}
/* 标签操作按钮样式 */
.tag-actions {
display: flex;
// align-items: flex-start;
gap: 8px;
}
/* 操作图标样式 */
.action-icon {
font-size: 18px;
cursor: pointer;
transition: all 0.3s ease;
padding: 6px 8px;
border-radius: 4px;
display: inline-flex;
align-items: center;
justify-content: center;
}
/* 编辑图标样式 */
.edit-icon {
color: #409EFF;
background-color: #ecf5ff;
}
.edit-icon:hover {
color: #66B1FF;
background-color: #e6f7ff;
transform: scale(1.05);
box-shadow: 0 2px 4px rgba(64, 158, 255, 0.2);
}
/* 列表容器样式 */
.list-container {
padding: 12px;
background-color: #f5f7fa;
border-radius: 4px;
}
/* 列表项样式 */
.list-item {
display: flex;
justify-content: space-between;
align-items: center;
padding: 10px 12px;
background-color: #ffffff;
border-radius: 4px;
margin-bottom: 8px;
border: 1px solid #e4e7ed;
transition: all 0.3s ease;
}
/* 列表项悬停效果 */
.list-item:hover {
background-color: #f5f7fa;
border-color: #dcdfe6;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
}
/* 列表内容样式 */
.list-content {
margin: 0;
font-size: 14px;
color: #303133;
font-weight: 500;
}
/* 删除图标样式 */
.delete-icon {
color: #F56C6C;
background-color: #fef0f0;
}
.delete-icon:hover {
color: #F78989;
background-color: #fde2e2;
transform: scale(1.05);
box-shadow: 0 2px 4px rgba(245, 108, 108, 0.2);
}
/* 无标签提示样式 */
.no-tags {
color: #909399;
font-size: 14px;
font-style: italic;
}
</style>

View File

@ -199,7 +199,7 @@ onUnmounted(() => {
z-index: 10; z-index: 10;
cursor: pointer; cursor: pointer;
font-size: 14px; font-size: 14px;
margin-left: 20px; margin-left: 45%;
color: rgb(255, 146, 4); color: rgb(255, 146, 4);
font-family: 'YSBTH'; font-family: 'YSBTH';
} }

View File

@ -5,12 +5,12 @@ function resolve(dir) {
} }
// http://47.108.232.77:9537/mosty-api/mosty-zhgj/docs.html // http://47.108.232.77:9537/mosty-api/mosty-zhgj/docs.html
// const serverHost = "http://47.108.232.77:9537"//线上 // const serverHost = "http://47.108.232.77:9537"//线上
const serverHost = "http://192.168.2.206:8006"//线上 // const serverHost = "http://192.168.2.206:8006"//线上
// const serverHost = "http://192.168.191.75:8006"//周 // const serverHost = "http://192.168.191.75:8006"//周
// const serverHost = "http://192.168.212.75:8016"//周 // const serverHost = "http://192.168.212.75:8016"//周
// const serverHost = "http://192.168.1.98:8006"//毛毛 // const serverHost = "http://192.168.1.98:8006"//毛毛
// const serverHost = "http://192.168.193.75:8006"//线上 // const serverHost = "http://192.168.193.75:8006"//线上
// const serverHost = "http://47.108.232.77:9537"//线上 const serverHost = "http://47.108.232.77:9537"//线上
module.exports = { module.exports = {
// configureWebpack: { // configureWebpack: {
// resolve: { // resolve: {