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
})
}
// 线索研判列表
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;
}
.searchBoxlive {
// padding: 15px;
border-radius: 1px;
position: relative;
background: #fff;
border-radius: 4px;
}
.app-main {
height: calc(100vh - 126px);
position: relative;
@ -256,6 +264,10 @@ header {
}
}
}
.heightBox {
height: calc(100vh - 270px);
}
}
::v-deep .el-card {

View File

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

View File

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

View File

@ -8,6 +8,8 @@
: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'"
:highlight-current-row="getConfiger.showSelectType === 'radio'"
@row-click="handleRowClick"
@cell-click="handleCellClick"
:row-style="(row, index) => getRowStyle(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 currentRow = ref();
let getConfiger = reactive({
@ -157,7 +159,6 @@ const load = (date, treeNode, resolve) => {
const getRowStyle = (row, index) => {
// 基础行高样式
const baseStyle = { height: getConfiger.rowHeight === 'auto' ? getConfiger.rowHeight : getConfiger.rowHeight + 'px' };
// 如果有自定义行样式函数,合并样式
if (props.rowStyle) {
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>
<style lang="scss"></style>

View File

@ -1,11 +1,11 @@
<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">
<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>
</ul>
<div class="font" v-else>{{ title }}</div>
<div class="ml30">
<div :style="`margin-left: ${ malginLeft==0?30:malginLeft}px`">
<slot name="left"></slot>
</div>
</div>
@ -28,15 +28,28 @@ defineProps({
marginBottom: {
type: Number,
default: 0
},
malginLeft: {
type: Number,
default: 0
},
active: {
type: Number,
default: 0
},
marginTop: {
type: Number,
default: 0
},
backgroundColor: {
type: String,
default: "rgb(255, 255, 255, 0)"
},
height: {
type: Number,
default: 52
}
});
const emit = defineEmits(["update:active","change"]);
@ -55,7 +68,7 @@ const handleBtn = (it, idx) => {
display: flex;
justify-content: space-between;
align-items: center;
min-height: 52px;
min-height: 30px;
.title {
display: flex;
margin: auto 0;

View File

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

View File

@ -155,31 +155,42 @@ export const publicRoutes = [
// component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/warningBk/index"),
// },
{
path: "/fouColorWarning",
name: "fouColorWarning",
meta: { title: "预警数据整合", icon: "article-create" },
component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/fouColorWarning/index"),
path: "/YjData",
name: "YjData",
meta: { title: "预警", icon: "article-create" },
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",
name: "identityWarning",
meta: { title: "身份预警", icon: "article-create" },
component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/identityWarning/index"),
},
{
path: "/behaviorWarning",
name: "behaviorWarning",
meta: { title: "行为预警", icon: "article-create" },
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: "/behaviorWarning",
// name: "behaviorWarning",
// meta: { title: "行为预警", icon: "article-create" },
// 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",
// name: "warningList",
@ -189,37 +200,37 @@ export const publicRoutes = [
// icon: "article-create"
// }
// },
{
path: "/portraitWarning",
name: "portraitWarning",
component: () => import("@/views/backOfficeSystem/fourColorManage/warningList/portraitWarning/index"),
meta: {
title: "人像预警",
icon: "article-create"
}
},
// {
// path: "/portraitWarning",
// name: "portraitWarning",
// component: () => import("@/views/backOfficeSystem/fourColorManage/warningList/portraitWarning/index"),
// meta: {
// title: "人像预警",
// icon: "article-create"
// }
// },
{
path: "/vehicleWarning",
name: "vehicleWarning",
component: () => import("@/views/backOfficeSystem/fourColorManage/warningList/vehicleWarning/index"),
meta: {
title: "车辆预警",
icon: "article-create"
}
},
{
path: "/controlWarning",
name: "controlWarning",
meta: { title: "布控预警", icon: "article-create" },
component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/controlWarning/index"),
},
{
path: "/regionalControl",
name: "regionalControl",
meta: { title: "区域布控预警", icon: "article-create" },
component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/regionalControl/index"),
},
// {
// path: "/vehicleWarning",
// name: "vehicleWarning",
// component: () => import("@/views/backOfficeSystem/fourColorManage/warningList/vehicleWarning/index"),
// meta: {
// title: "车辆预警",
// icon: "article-create"
// }
// },
// {
// path: "/controlWarning",
// name: "controlWarning",
// meta: { title: "布控预警", icon: "article-create" },
// component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/controlWarning/index"),
// },
// {
// path: "/regionalControl",
// name: "regionalControl",
// meta: { title: "区域布控预警", icon: "article-create" },
// component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/regionalControl/index"),
// },
// {
// path: "/fouColorWarning",
// name: "fouColorWarning",
@ -232,16 +243,11 @@ export const publicRoutes = [
meta: { title: "积分排名", icon: "article-create" },
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",
name: "sevenWarningFail",
meta: { title: "报错", icon: "article" },
meta: { title: "报错列表", icon: "article" },
component: () => import("@/views/backOfficeSystem/fourColorManage/warningControl/sevenWarningFail/index.vue"),
},
// {
@ -339,11 +345,17 @@ export const publicRoutes = [
component: () => import("@/views/backOfficeSystem/HumanIntelligence/listView/index"),
meta: { title: "共享列表", icon: "article-create", qbjbList: '01' },
}, {
path: "/socialInformationCrculated",
name: "changeTheClue",
component: () => import("@/views/backOfficeSystem/HumanIntelligence/FollowLeads/index"),
meta: { title: "转线索列表", icon: "article-create" },
path: "/auditList",
name: "auditList",
component: () => import("@/views/backOfficeSystem/HumanIntelligence/auditList/index"),
meta: { title: "审批列表", icon: "article-create" },
},
// {
// path: "/socialInformationCrculated",
// name: "changeTheClue",
// component: () => import("@/views/backOfficeSystem/HumanIntelligence/FollowLeads/index"),
// meta: { title: "转线索列表", icon: "article-create" },
// },
{
path: "/socialInformationCrculatec",
name: "recombinantSynthesis",
@ -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",
name: "JudgmentHome",
@ -676,62 +645,76 @@ export const publicRoutes = [
meta: { title: "数据应用", icon: "article-ranking" },
children: [
{
path: "/IntegralCoefficient",
name: "IntegralCoefficient",
path: "/Cspz",
name: "Cspz",
component: () =>
import(
"@/views/backOfficeSystem/fourColorManage/IntegralCoefficient/index"
"@/views/backOfficeSystem/fourColorManage/Cspz/index"
),
meta: {
title: "积分系数配置",
title: "数配置",
icon: "article-create"
}
},
{
path: "/IdentityManage",
name: "IdentityManage",
component: () =>
import(
"@/views/backOfficeSystem/fourColorManage/IdentityManage/index"
),
meta: {
title: "身份标签管理",
icon: "article-create"
}
},
{
path: "/BehaviorLabels",
name: "BehaviorLabels",
component: () =>
import(
"@/views/backOfficeSystem/fourColorManage/BehaviorLabels/index"
),
meta: {
title: "行为标签管理",
icon: "article-create"
}
},
{
path: "/tagManage",
name: "tagManage",
component: () =>
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: "/IntegralCoefficient",
// name: "IntegralCoefficient",
// component: () =>
// import(
// "@/views/backOfficeSystem/fourColorManage/IntegralCoefficient/index"
// ),
// meta: {
// title: "积分系数配置",
// icon: "article-create"
// }
// },
// {
// path: "/IdentityManage",
// name: "IdentityManage",
// component: () =>
// import(
// "@/views/backOfficeSystem/fourColorManage/IdentityManage/index"
// ),
// meta: {
// title: "身份标签管理",
// icon: "article-create"
// }
// },
// {
// path: "/BehaviorLabels",
// name: "BehaviorLabels",
// component: () =>
// import(
// "@/views/backOfficeSystem/fourColorManage/BehaviorLabels/index"
// ),
// meta: {
// title: "行为标签管理",
// icon: "article-create"
// }
// },
// {
// path: "/tagManage",
// name: "tagManage",
// component: () =>
// 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",
@ -743,23 +726,32 @@ export const publicRoutes = [
}
},
{
path: "/fileTransfer",
name: "fileTransfer",
component: () => import("@/views/backOfficeSystem/HumanIntelligence/fileTransfer/index"),
path: "/FileData",
name: "FileData",
component: () => import("@/views/backOfficeSystem/HumanIntelligence/FileData/index"),
meta: {
title: "文件中转",
icon: "article-create"
}
},
{
path: "/fileOrientation",
name: "fileOrientation",
component: () => import("@/views/backOfficeSystem/HumanIntelligence/fileOrientation/index"),
meta: {
title: "文件定向传输",
icon: "article-create"
}
},
// {
// path: "/fileTransfer",
// name: "fileTransfer",
// component: () => import("@/views/backOfficeSystem/HumanIntelligence/fileTransfer/index"),
// meta: {
// title: "文件中转",
// icon: "article-create"
// }
// },
// {
// path: "/fileOrientation",
// name: "fileOrientation",
// component: () => import("@/views/backOfficeSystem/HumanIntelligence/fileOrientation/index"),
// meta: {
// title: "点对点",
// icon: "article-create"
// }
// },
{
path: "/ssemanticAnalysis",
name: "semanticAnalysis",
@ -786,7 +778,31 @@ export const publicRoutes = [
title: "操作记录",
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"
}
},
{
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",
// component: layout,
@ -1079,6 +1071,50 @@ export const publicRoutes = [
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",
// name: "ResearchHome",

View File

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

View File

@ -1,12 +1,10 @@
<template>
<div>
<div class="titleBox">
<PageTitle title="基础库">
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
<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>
</PageTitle>
</div>
<ZdrPage v-if="tabActive==0" />
<ZdqtPage v-else-if="tabActive==1" />
<ZdclPage v-else-if="tabActive==2" />

View File

@ -1,7 +1,12 @@
<template>
<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">
<template #reference>
<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>
<span style="vertical-align: middle">新增</span>
</el-button>
</template>
</PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" />
</div>
<!-- 表格 -->
<div class="tabBox">
<MyTable

View File

@ -1,7 +1,12 @@
<template>
<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">
<template #reference>
<el-button type="primary" @click="(visible = !visible), (visiblefp = false)" size="small">布控申请
@ -33,12 +38,8 @@
</el-icon>
<span style="vertical-align: middle">新增</span>
</el-button>
</template>
</PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" />
</div>
<!-- 表格 -->
<div class="tabBox">
<MyTable

View File

@ -1,7 +1,12 @@
<template>
<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">
<template #reference>
<el-button type="primary" @click="(visible = !visible), (visiblefp = false)" size="small">布控申请
@ -34,12 +39,8 @@
</el-icon>
<span style="vertical-align: middle">新增</span>
</el-button>
</template>
</PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" />
</div>
<!-- 表格 -->
<div class="tabBox">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"

View File

@ -1,7 +1,12 @@
<template>
<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">
<template #reference>
<el-button type="primary" @click="(visible = !visible), (visiblefp = false)" size="small">布控申请
@ -31,12 +36,8 @@
</el-icon>
<span style="vertical-align: middle">新增</span>
</el-button>
</template>
</PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" />
</div>
<!-- 表格 -->
<div class="tabBox">
<MyTable

View File

@ -1,7 +1,11 @@
<template>
<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">
<template #reference>
<el-button type="primary" @click="(visible = !visible), (visiblefp = false)" size="small">布控申请</el-button>
@ -32,12 +36,8 @@
</el-icon>
<span style="vertical-align: middle">新增</span>
</el-button>
</template>
</PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" />
</div>
<!-- 表格 -->
<div class="tabBox">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"

View File

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

View File

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

View File

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

View File

@ -1,15 +1,12 @@
<template>
<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" />
</div>
<!-- 表格 -->
<div class="tabBox">
<div class="tabBox heightBox">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
@chooseData="chooseData">
@ -125,7 +122,7 @@ const getList = () => {
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight -200
window.onresize = function () {
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>
<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" />
</div>
<!-- 表格 -->
<div class="tabBox">
<div class="tabBox heightBox">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
@chooseData="chooseData">
@ -145,7 +141,7 @@ const getList = () => {
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 200;
window.onresize = function () {
tabHeightFn();
};

View File

@ -1,17 +1,17 @@
<template>
<div>
<div class="titleBox">
<PageTitle title="工作考核">
<el-button type="primary" @click="addEdit('add', '')">
<!-- 搜索 -->
<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-button size="small" type="primary" @click="addEdit('add', '')">
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
<span style="vertical-align: middle">新增</span>
</el-button>
</template>
</PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" />
</div>
<!-- 表格 -->
<div class="tabBox">
<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: 'cjLx', placeholder: "请选择情报来源", showType: "select", options: D_BZ_CJLX },
{ 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: '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>
<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">
<CirclePlus />
</el-icon>
<span style="vertical-align: middle">新增</span>
</el-button>
</template>
</PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" />
</div>
<!-- 表格 -->
<div class="tabBox">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
@ -30,7 +29,8 @@
<template #controls="{ row }">
<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="previewFile(row)" v-if="row.wjlx == '.png'||row.wjlx == '.jpg'||row.wjlx == '.jpeg'">预览</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="downloadFile(row)">下载</el-link>
<el-link size="small" type="danger" @click="deleteFile(row)">删除</el-link>
</template>
@ -42,6 +42,7 @@
</div>
</div>
<AddForm ref="addForm" @getList="getList" />
</template>
<script setup>
@ -88,7 +89,7 @@ const qxkz = reactive({
})
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: 'ssbmdm', placeholder: "请选择来源单位", showType: "department" }
]);
@ -109,12 +110,14 @@ const pageData = reactive({
controlsWidth: 240,
tableColumn: [
{ label: "文件名称", prop: "wjmc" },
{ label: "上传人", prop: "scrxm" },
{ label: "文件大小", prop: "wjdx", showSolt: true },
{ label: "文件类别", prop: "wjlb", showSolt: true },
{ label: "所属部门", prop: "ssbm" },
{ label: "文件描述", prop: "qbnr" },
]
});
const queryFrom = ref({});
// 搜索
@ -156,7 +159,7 @@ const getList = () => {
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 270;
window.onresize = function () {
tabHeightFn();
};
@ -174,17 +177,27 @@ const previewFile = (item) => {
window.open(item.wjdz);
}
const downloadFile = async (item) => {
console.log(item);
try {
const dataList =JSON.parse(item.wjdz)
if (dataList.length === 0) {
proxy.$message.warning('没有文件可下载');
return;
}
console.log(dataList);
const downloadCount = dataList.length;
let successCount = 0;
let failCount = 0;
proxy.$message.info(`开始下载${downloadCount}个文件...`);
// 并行下载所有文件
const downloadPromises = dataList.map(async (fileData, index) => {
try {
// 显示加载提示
// proxy.$message({
// message: '开始下载文件...',
// type: 'info',
// duration: 0,
// showClose: true
// });
proxy.$message.info('开始下载文件...');
// 使用fetch获取文件内容
const response = await fetch(item.wjdz);
const response = await fetch(fileData.url);
if (!response.ok) {
throw new Error('文件下载失败');
}
@ -196,19 +209,39 @@ const downloadFile = async (item) => {
const downloadLink = document.createElement('a');
downloadLink.href = URL.createObjectURL(blob);
// 设置下载文件的名称
downloadLink.download = item.wjmc;
// 设置下载文件的名称,避免冲突
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);
// 显示下载成功提示
proxy.$message.success('文件下载成功');
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('文件下载失败,请稍后重试');

View File

@ -8,11 +8,13 @@
</div>
</div>
<div class="form_cnt">
<FormMessage v-model="listQuery" :formList="formData" ref="elform" :rules="rules">
<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" />
</div>
</div> -->
</template>
<template #jsrxm>
<el-input v-model="listQuery.jsrxm" placeholder="请输入接收人" readonly @click="chooseUserVisible = true" />
@ -26,6 +28,7 @@
<script setup>
import FormMessage from "@/components/aboutTable/FormMessage.vue";
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 ChooseUser from "@/components/ChooseList/ChooseUser/index.vue"
import { ref, defineExpose, reactive, defineEmits, getCurrentInstance, watch } from "vue";
@ -49,16 +52,16 @@ const formData = ref([
// },
]);
const listQuery = ref({}); //表单
watch(() => imgMsg.value, (newVal, oldVal) => {
if (newVal.length > 0) {
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.wjmc= newVal[0].id?newVal[0].name:listQuery.value.wjmc,
listQuery.value. wjlx= newVal[0].id?newVal[0].id.fileSuffix:listQuery.value.wjlx
} else {
listQuery.value = {}
}
}, { deep: true })
// watch(() => imgMsg.value, (newVal, oldVal) => {
// if (newVal.length > 0) {
// 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.wjmc= newVal[0].id?newVal[0].name:listQuery.value.wjmc,
// listQuery.value. wjlx= newVal[0].id?newVal[0].id.fileSuffix:listQuery.value.wjlx
// } else {
// listQuery.value = {}
// }
// }, { deep: true })
watch(() => listQuery.value.wjlb, (newVal, oldVal) => {
listQuery.value.wjlb = newVal
if (newVal == '02') {
@ -75,7 +78,7 @@ watch(() => listQuery.value.wjlb, (newVal, oldVal) => {
{ label: "文件", prop: "wjdz", type: "slot", width: "100%" },
{ label: "文件大小", prop: "wjdx", type: "input", width: "30%", placeholder: "单位MB",disabled: true },
{ 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: "jsbmdm", type: "department", depMc: "jsbmmc", multiple: true },
{ 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: "wjdx", type: "input", width: "30%", placeholder: "单位MB" },
{ 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%" },]
}
})
@ -103,6 +106,9 @@ const loading = ref(false);
const elform = ref();
const title = ref("");
const rules = reactive({
wjmc: [
{ required: true, message: "请输入文件名称", trigger: "blur" },
],
});
// 初始化数据
@ -116,9 +122,8 @@ const init = (type, row,wjlb) => {
// 根据id查询详情
const getDataById = (id) => {
getWjZzzAddEntityById(id).then((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.jsbmmc=res.jsdxList.filter(item => item.jsbmdm).map(item => item.jsbmmc)
userList.value = res.jsdxList.filter(item => {
@ -133,7 +138,17 @@ const getDataById = (id) => {
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 = () => {
elform.value.submit(async (data) => {
@ -150,7 +165,7 @@ const submit = () => {
jsbmmc: listQuery.value.jsbmmc[index],
})):[]
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 {
loading.value = true;
let res

View File

@ -1,20 +1,20 @@
<template>
<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">
<CirclePlus />
</el-icon>
<span style="vertical-align: middle">新增</span>
</el-button>
</template>
</PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" />
</div>
<!-- 表格 -->
<div class="tabBox">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
@ -30,7 +30,8 @@
<template #controls="{ row }">
<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="previewFile(row)" v-if="row.wjlx == '.png'||row.wjlx == '.jpg'||row.wjlx == '.jpeg'">预览</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="downloadFile(row)">下载</el-link>
<el-link size="small" type="danger" @click="deleteFile(row)">删除</el-link>
</template>
@ -88,7 +89,7 @@ const qxkz = reactive({
})
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: 'ssbmdm', placeholder: "请选择来源单位", showType: "department" }
]);
@ -156,7 +157,7 @@ const getList = () => {
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 270;
window.onresize = function () {
tabHeightFn();
};
@ -174,17 +175,27 @@ const previewFile = (item) => {
window.open(item.wjdz);
}
const downloadFile = async (item) => {
console.log(item);
try {
const dataList =JSON.parse(item.wjdz)
if (dataList.length === 0) {
proxy.$message.warning('没有文件可下载');
return;
}
console.log(dataList);
const downloadCount = dataList.length;
let successCount = 0;
let failCount = 0;
proxy.$message.info(`开始下载${downloadCount}个文件...`);
// 并行下载所有文件
const downloadPromises = dataList.map(async (fileData, index) => {
try {
// 显示加载提示
// proxy.$message({
// message: '开始下载文件...',
// type: 'info',
// duration: 0,
// showClose: true
// });
proxy.$message.info('开始下载文件...');
// 使用fetch获取文件内容
const response = await fetch(item.wjdz);
const response = await fetch(fileData.url);
if (!response.ok) {
throw new Error('文件下载失败');
}
@ -196,19 +207,40 @@ const downloadFile = async (item) => {
const downloadLink = document.createElement('a');
downloadLink.href = URL.createObjectURL(blob);
// 设置下载文件的名称
downloadLink.download = item.wjmc;
// 设置下载文件的名称,避免冲突
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);
// 显示下载成功提示
proxy.$message.success('文件下载成功');
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('文件下载失败,请稍后重试');

View File

@ -11,6 +11,30 @@
<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">
@ -109,7 +133,7 @@
<script setup>
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 { ref, defineExpose, onMounted, defineEmits, watch, getCurrentInstance } from "vue"
import { ElMessage } from 'element-plus';
@ -117,6 +141,7 @@ 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({
@ -138,7 +163,14 @@ const rules = ref({
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') {
@ -151,6 +183,8 @@ watch(() => dialogForm.value, (val) => {
{ 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%' },
]
}
}
@ -159,6 +193,7 @@ const fjdz = ref()
const listQuery = ref({}); //表单
const elform = ref();
onMounted(() => {
})
const msgeDat = ref()
const title = ref("")
@ -166,8 +201,13 @@ 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: "详情",
@ -266,7 +306,6 @@ const lcList = ref([])
const getqbcjPldb = (id) => {
xxcjSelectCzlcList({ qbid: id }).then(res => {
console.log(res);
lcList.value = res || []
})
.catch(() => {

View File

@ -1,63 +1,42 @@
<template>
<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" />
</div>
<PageTitle :malginLeft="10" :height="35" backgroundColor="#ffff" :marginBottom="5" :marginTop="5">
<template #left>
<el-button type="primary" @click="addEdit('add')" size="small">
<el-icon class="vertical-middle">
<CirclePlus />
</el-icon>
<span class="vertical-middle">新增</span>
</el-button>
<el-button type="primary" @click="dologCancel()" size="small">
<el-icon class="vertical-middle">
<CirclePlus />
</el-icon>
<span class="vertical-middle">导出</span>
</el-button>
<el-button type="primary" :disabled="ids.length === 0" @click="handleSumbit(ids)" v-if="qxkz.deptLevel != '01'"
size="small">
<el-icon class="vertical-middle">
<CirclePlus />
</el-icon>
<span class="vertical-middle">上报</span>
</el-button>
<el-button type="primary" :disabled="ids.length === 0" @click="delDictItem(ids)" size="small">
<el-icon class="vertical-middle">
<CirclePlus />
</el-icon>
<span class="vertical-middle">删除</span>
</el-button></template>
</PageTitle>
<!-- 表格 -->
<div class="tabBox" :style="{ height: (pageData.tableHeight + 40) + 'px' }">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth"
@chooseData="chooseData">
@chooseData="chooseData" @handleCellClick="openXxqk">
<template #qblx="{ row }">
<DictTag :tag="false" :value="row.qblx" :options="D_GS_XS_LX" />
</template>
@ -70,39 +49,48 @@
<template #lczt="{ row }">
<DictTag :tag="false" :value="row.lczt" :options="D_BZ_LCZT" />
</template>
<!-- 操作 -->
<template #controls="{ 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>
<!-- 只有上报状态才能进行采纳 -->
<template #cyqk="{ 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)"
: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)"
: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="delDictItem(row.id)">删除</el-link>
<!-- <el-link v-if="isShowBtn('肯定')" size="small" type="primary" @click="affirm(row)">肯定</el-link> -->
<el-link v-if="isShowBtn('删除')" size="small" type="primary" @clic.stopk="delDictItem(row.id)">删除</el-link>
<el-link v-if="isShowBtn('修改', row)" size="small" type="primary" @click="addEdit('edit', row)">修改</el-link>
<el-link v-if="isShowBtn('续报', row)" size="small" type="primary"
@click="addEdit('followUpReport', row)">续报</el-link>
<el-link v-if="isShowBtn('续报', row)" size="small" type="primary" @click="addEdit('followUpReport', row)">续报</el-link>
<el-link v-if="isShowBtn('详情')" size="small" type="primary" @click="addEdit('info', row)">详情</el-link>
<!-- 所有状态都能进行转线索 -->
<el-link v-if="isShowBtn('转线索')" size="small" type="primary" @click="FollowUpOnLeads(row)" :disabled="butcontroll('01',row.lczt)">转线索</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="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="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('关注部门')" :disabled="row.sldshzt != '02'" size="small" type="primary" @click="FollowUpOnDept(row)">关注</el-link>
<!-- 市局能给所有数据创建标签 -->
<el-link v-if="isShowBtn('打标签')" size="small" type="primary" @click="openCustomTag(row)"
:disabled="butcontroll('01',row.lczt)">打标签</el-link>
:disabled="row.sldshzt != '02' ">打标签</el-link>
</template>
</MyTable>
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
@ -111,7 +99,7 @@
}"></Pages>
</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>
<ExportFile v-model="exportFileModel" :tableColumn="tableColumn" :dict="{ D_GS_XS_LY, D_GS_XS_LX, D_GS_XS_LX }"
:dataModel="pageData.tableData" />
@ -135,7 +123,7 @@ import Searchs from "@/components/aboutTable/Search.vue";
import AddForm from "./components/addForm.vue";
import { useRouter, useRoute } from 'vue-router'
import { qbcjSelectQbsbPage, qbcjDeletes, qbcjCzzt, qbcjPlsb } from "@/api/Intelligence.js";
import { xxcjSelectXxsbPage, xxcjDeletes, xxcjXxzsx, xxcjUpdateCzlc, xxcjXxqd } from '@/api/xxcj.js'
import { xxcjSelectXxsbPage, xxcjDeletes, xxcjXxzsx, xxcjUpdateCzlc, xxcjXxqd, xxcjXxcjTjsh } from '@/api/xxcj.js'
import { reactive, ref, onMounted, getCurrentInstance, nextTick } from "vue";
import MakeTag from '../components/maketag.vue'
import ExportFile from './components/exportFile.vue'
@ -148,11 +136,11 @@ import transferMerchant from "./components/transferMerchant.vue";
import { isShiQingZhi } from "@/utils/auth.js"
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_BZ_BMJB, D_BZ_CLPP, D_BZ_CLYS, D_BZ_CLLX, D_BZ_XZQHDM, D_BZ_QBCZZT, D_BZ_CJLX, D_BZ_LCZT,
D_XXCJ_BQLX } =
proxy.$dict("D_BZ_BMJB", "D_GS_XS_LY",
proxy.$dict("D_BZ_BMJB", "D_GS_XS_LY", 'D_BZ_SSSHZT',
"D_BZ_SSZT", "D_BZ_SF", "D_GS_XS_LX", "D_GS_XS_QTLX",
"D_GS_ZDQT_LB", "D_BZ_CLPP", "D_BZ_CLYS", "D_BZ_CLLX", "D_BZ_XZQHDM", "D_BZ_QBCZZT", "D_BZ_CJLX", "D_BZ_BQJB", "D_BZ_LCZT", "D_XXCJ_BQLX"); //获取字典数据
const detailDiloag = ref();
@ -173,12 +161,13 @@ const isShowTransferMerchantTc = ref(false)
const isShow = ref(false)
const searchConfiger = ref([
{ label: "录入人", prop: 'xssbr', placeholder: "请输入录入人", showType: "input" },
{ label: "录入单位", prop: "ssbmdm", placeholder: "请选择录入单位", showType: "department" },
{ label: "编号", prop: 'xsBh', placeholder: "请输入编号", showType: "input" },
{ label: "时间", prop: "startTime", placeholder: "请选择时间", showType: "daterange" },
{ label: "所属单位", prop: "ssbmdm", placeholder: "请选择所属单位", showType: "department" },
{ 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: 'xsBh', placeholder: "请输入线索编号", showType: "input" },
{ label: "关键字", prop: 'keyword', placeholder: "请输入关键字", showType: "input" },
]);
const pageData = reactive({
@ -200,7 +189,11 @@ const pageData = reactive({
{ label: "情报编号", prop: "xsBh" },
{ label: "情报标题", prop: "qbmc" },
{ label: "情报来源", prop: "qbly", showSolt: true },
{ label: "上报人", prop: "xssbr" },
{ label: "上报单位", prop: "ssbm" },
{ label: "流程状态", prop: "lczt", showSolt: true },
{ label: "采用情况", prop: "cyqk", showSolt: true },
// { label: "标签内容", prop: "lczt", showSolt: true },
// { label: "消息状态", prop: "czzt", showSolt: true },
]
});
@ -361,6 +354,7 @@ const handleSumbit = () => {
// <!-- [04、06、07、08、09] -->打标签
// <!-- [03、05] -->采纳
// <!-- [04] -->回退
// <!-- 01 提交 02 上报县局 03 上班市局 04 采纳 05 退回 06 打标签 07 转合成 08 转线索 09 转会商v-if="qxkz.deptLevel == '01'" -->
const butcontroll = (val, zt) => {
switch (val) {
case '01':
@ -369,6 +363,8 @@ const butcontroll = (val, zt) => {
return !(['03', '05'].includes(zt))
case '03':
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);
}, 500)
};
const openXxqk = (row) => {
if (row.column.property == 'qbmc' || row.column.property == 'xsBh') {
isShow.value = true;
setTimeout(() => {
detailDiloag.value.init('info', row.row);
}, 500)
}
}
const route = useRoute()
const titleData = ref()
const qxkz = reactive({
@ -445,6 +448,8 @@ const qxkz = reactive({
roleCode: false,
depBool: false
});
const qxzt = ref(false)
onMounted(() => {
const { deptBizType, deptLevel } = getItem('deptId')[0]
const Jb = deptLevel[0] == '2' ? '01' : deptLevel[0] == '3' ? '02' : '03'
@ -521,6 +526,13 @@ const openFkDialogszl = (row) => {
}
}
/** 获取当前角色 */
function getRole() {
const { deptBizType, deptLevel } = getItem('deptId')[0]
@ -542,8 +554,8 @@ const isShowBtn = (btnName, row = {}) => {
/** 按钮权限 */
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>
<style lang="scss" scoped>
@ -600,4 +634,8 @@ const handleTransferMerchant = (row) => {
height: calc(100% - 50px);
overflow: auto;
}
.vertical-middle {
vertical-align: middle;
}
</style>

View File

@ -1,25 +1,25 @@
<template>
<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">
<CirclePlus />
</el-icon>
<span style="vertical-align: middle">新增</span>
</el-button>
<el-button type="danger" @click="plDelDictItem">
<el-button type="danger" size="small" @click="plDelDictItem">
<el-icon style="vertical-align: middle">
<Dete />
</el-icon>
<span style="vertical-align: middle">批量删除</span>
</el-button>
</el-button></template>
</PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" />
</div>
<!-- 表格 -->
<div class="tabBox">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"

View File

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

View File

@ -1,14 +1,11 @@
<template>
<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>
</div>
<!-- 表格 -->
<div class="tabBox">
<div class="tabBox heightBox">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
@ -147,7 +144,7 @@ addForm.value.init(type, row,);
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 200;
window.onresize = function() {
tabHeightFn();
};

View File

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

View File

@ -1,17 +1,18 @@
<template>
<div>
<div class="titleBox">
<PageTitle title="标签布控" >
<!-- 搜索 -->
<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>
<span style="vertical-align: middle">新增</span>
</el-button>
</template>
</PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch"></Search>
</div>
<!-- 表格 -->
<div class="tabBox">
<MyTable

View File

@ -68,7 +68,7 @@
</div>
<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="请选择布控级别"
clearable />
</el-form-item>
@ -192,6 +192,7 @@ const rules = reactive({
czJsdwdm: [{ required: true, message: "请选择处置接收单位", trigger: "change" }],
bkshrSsbmdm: [{ required: true, message: "请选择审核部门", trigger: "change" }],
bksprSsbmdm: [{ required: true, message: "请选择审批部门", trigger: "change" }],
czYq: [{ required: true, message: "请选择处置要求", trigger: "change" }],
})
let tableDate = reactive({
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>
<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" />
</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">
<!-- 表格 -->
@ -52,9 +52,10 @@
<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"
@click="handleAdd('edit', row)">编辑</el-link>
</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="danger" size="small" @click="handleRow(row.id)"
v-if="['01', '03', '06'].includes(row.bkZt)">删除</el-link>
@ -76,6 +77,7 @@
<YjDialog ref="warningkdxForm"></YjDialog>
<SubmissionProcess v-model="showSp" :data="rowData" :userData="{ ajmc: '布控审批', flowType: 'BKSP', modelName: '布控' }"
: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>
<script setup>
@ -90,14 +92,15 @@ import SubmissionProcess from '@/components/flowPath/submissionProcess.vue'
import { tbGsxtBkQuash } from '@/api/zdr.js'
import { useRouter, useRoute } from 'vue-router'
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
import Hzd from "./components/dolog/hzd.vue";
import { rotate } from "ol/transform";
const router = useRouter()
const route = useRoute()
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,
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_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"); //获取字典数据
const addBkdxForm = ref(null); //布控对象组件
const warningkdxForm = ref(); //布控对象组件
@ -129,6 +132,11 @@ const searchConfiger = ref([
prop: "startTime",
placeholder: "请选择布控时间",
showType: "datetimerange",
}, {
label: "布控部门",
prop: "bkfqrSsbmdm",
placeholder: "请选择布控部门",
showType: "department",
},
]);
const queryFrom = ref({});
@ -199,7 +207,6 @@ const changeSize = (val) => {
const getList = () => {
pageData.tableConfiger.loading = true;
let bklx = ''
console.log();
if (route.name == 'myControl') {
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 = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 270;

View File

@ -1,18 +1,19 @@
<template>
<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" />
</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="tabBox">
<div class="tabBox heightBox">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">

View File

@ -1,17 +1,18 @@
<template>
<div class="titleBox">
<PageTitle title="网上会议室">
<el-button type="primary" @click="addEdit('add', '')">
<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-button size="small" type="primary" @click="addEdit('add', '')">
<el-icon style="vertical-align: middle">
<CirclePlus />
</el-icon>
<span style="vertical-align: middle">新增</span>
</el-button>
</template>
</PageTitle>
</div>
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" />
</div>
<div class="tabBox">
<ul class="list noScollLine" v-loading="pageData.loading">
<li class="list-item" v-for="(item, index) in pageData.list" :key="`tableData${index}`">

View File

@ -1,20 +1,19 @@
<template>
<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 type="primary" size="small" @click="getDataById('add', '')">
<el-icon style="vertical-align: middle">
<CirclePlus />
</el-icon>
<span style="vertical-align: middle">新增</span>
</el-button>
</template>
</PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" />
</div>
<!-- 表格 -->
<div class="tabBox">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"

View File

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

View File

@ -1,20 +1,19 @@
<template>
<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">
<CirclePlus />
</el-icon>
<span style="vertical-align: middle">新增</span>
</el-button>
</template>
</PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" />
</div>
<!-- 表格 -->
<div class="tabBox">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"

View File

@ -1,20 +1,20 @@
<template>
<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">
<CirclePlus />
</el-icon>
<span style="vertical-align: middle">自建研判</span>
</el-button>
</template>
</PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" />
</div>
<!-- 表格 -->
<div class="tabBox">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"

View File

@ -1,20 +1,20 @@
<template>
<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">
<CirclePlus />
</el-icon>
<span style="vertical-align: middle">自建研判</span>
</el-button>
</template>
</PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount" />
</div>
<!-- 表格 -->
<div class="tabBox">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"

View File

@ -1,16 +1,17 @@
<template>
<!-- 研判类型 -->
<div class="content">
<div class="titleBox">
<PageTitle title="模型平台">
<el-button type="primary" @click="openAddModel('add')" :icon="CirclePlus">
新增模型
</el-button>
</PageTitle>
</div>
<div ref="searchBox">
<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 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' }"
v-loading="loading">
<li class="model-card" v-for="(it, idx) in list" :key="idx">

View File

@ -1,17 +1,18 @@
<template>
<div>
<div class="titleBox">
<PageTitle title="指令信息">
<el-button type="primary" @click="addEdit('add', '')">
<!-- 搜索 -->
<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-button type="primary" size="small" @click="addEdit('add', '')">
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
<span style="vertical-align: middle">新增</span>
</el-button>
</template>
</PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch"/>
</div>
<!-- 表格 -->
<div class="tabBox">
<MyTable

View File

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

View File

@ -1,22 +1,22 @@
<template>
<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 v-for="(it,idx) in D_GS_BQ_LB " :key="idx" :type="type == it.zdmc ? 'success':''" @click="chooseListType(it.zdmc)">
<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>
</el-button>
</template>
<el-button type="primary" @click="addEdit('add', '')">
<el-button size="small" type="primary" @click="addEdit('add', '')">
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
<span style="vertical-align: middle">新增</span>
</el-button>
</template>
</PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
</div>
<!-- 表格 -->
<div class="tabBox" :style="{height:pageData.tableHeight+20+'px'}">
<MyTable
@ -168,7 +168,7 @@ const addEdit = (type, row) => {
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 270;
window.onresize = function () { tabHeightFn(); };
};
</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>
<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 v-for="(it,idx) in D_GS_BQ_LB " :key="idx" :type="type == it.zdmc ? 'success':''" @click="chooseListType(it.zdmc)">
<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>
</el-button>
</template>
<el-button type="primary" @click="addEdit('add', '')">
<el-button size="small" type="primary" @click="addEdit('add', '')">
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
<span style="vertical-align: middle">新增</span>
</el-button>
</template>
</PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
</div>
<!-- 表格 -->
<div class="tabBox" :style="{height:pageData.tableHeight+20+'px'}">
<MyTable
@ -167,7 +167,7 @@ const addEdit = (type, row) => {
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 270;
window.onresize = function () { tabHeightFn(); };
};
</script>

View File

@ -1,17 +1,19 @@
<template>
<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>
<span style="vertical-align: middle">新增</span>
</el-button>
</template>
</PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
</div>
<!-- 表格 -->
<div class="tabBox" :style="{height:pageData.tableHeight+20+'px'}">
<MyTable
@ -137,7 +139,7 @@ const addEdit = (type, row) => {
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 270;
window.onresize = function () { tabHeightFn(); };
};
</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>
<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>
<span style="vertical-align: middle">调级</span>
</el-button>
@ -11,18 +16,14 @@
<el-button>
<span style="vertical-align: middle">导入</span>
</el-button> -->
<el-button type="primary" @click="addEdit('add', '')">
<el-button size="small" type="primary" @click="addEdit('add', '')">
<el-icon style="vertical-align: middle">
<CirclePlus />
</el-icon>
<span style="vertical-align: middle">新增</span>
</el-button>
</template>
</PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
</div>
<!-- 表格 -->
<div class="tabBox">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
@ -163,7 +164,7 @@ const chooseJfFun = (val) => {
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 270;
window.onresize = function () {
tabHeightFn();
};

View File

@ -1,16 +1,7 @@
<template>
<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">
<template #jfd>
<div>
@ -21,6 +12,11 @@
</template>
</Searchs>
</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' }">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
@ -328,7 +324,7 @@ const chooseJfFun = (val) => {
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 280;
window.onresize = function() {
tabHeightFn();

View File

@ -1,14 +1,6 @@
<template>
<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">
<Searchs :searchArr="searchConfiger" @submit="onSearch" @reset="reset" :key="pageData.keyCount">
@ -21,6 +13,11 @@
</template>
</Searchs>
</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' }">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
@ -47,7 +44,8 @@
<!-- <el-link type="primary" @click="showDetail(row)">转合成</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-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="primary" @click="openAddModel(row)">详情</el-link>
</template>
@ -69,8 +67,8 @@
<!-- 处置建议 -->
<Czjy ref="czjyRef" @okSubmit="getList"></Czjy>
<ChooseJf v-model="chooseJfShow" titleValue="选择系数" :Single="false"
:chooseJfBh="chooseJfBh" url="/yjzxZhyj/sjxspz" :roleIds="roleIds"/>
<ChooseJf v-model="chooseJfShow" titleValue="选择系数" :Single="false" :chooseJfBh="chooseJfBh" url="/yjzxZhyj/sjxspz"
:roleIds="roleIds" />
</template>
<script setup>
@ -313,7 +311,7 @@ const chooseJfFun = (val) => {
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 270;
window.onresize = function () {
tabHeightFn();
@ -360,7 +358,4 @@ const exportExl = () => {
overflow: unset !important;
}
}
</style>

View File

@ -1,13 +1,9 @@
<template>
<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">
<template #jfd>
<div>
@ -18,6 +14,11 @@
</template>
</Searchs>
</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' }">
<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 == '02' && permission_sfqs" >反馈</el-link>
<el-link type="primary" @click="openAddFrom(row)">详情</el-link>
<el-link type="primary" @click="pushWarning(row)">指派</el-link>
</template>
</MyTable>
<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 }" />
<!-- 处置建议 -->
<Czjy ref="czjyRef" @okSubmit="getList"></Czjy>
<ZpForm v-model="warningShow" :dataList="dataList"/>
</template>
<script setup>
@ -80,6 +83,7 @@ import MyTable from "@/components/aboutTable/MyTable.vue";
import Pages from "@/components/aboutTable/Pages.vue";
import AddFrom from "./components/addFrom.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 { qcckGet, qcckPost } from "@/api/qcckApi.js";
import emitter from "@/utils/eventBus.js";
@ -100,6 +104,7 @@ const searchConfiger = ref([
{ label: "部门", prop: 'ssbmdm', placeholder: "请选择部门", showType: "department" },
{ label: "级别", prop: 'yjJb', placeholder: "请选择级别", showType: "select" ,options: D_BZ_YJJB},
{ label: "积分段", prop: 'jfd', placeholder: "请选择积分段", showType: "Slot" },
{ label: "布控时间", prop: 'startTime', placeholder: "请选择布控时间", showType: "datetimerange" },
]);
const permission_sfqs = ref(false)
@ -122,7 +127,7 @@ const pageData = reactive({
pageSize: 20,
pageCurrent: 1
},
controlsWidth: 200, //操作栏宽度
controlsWidth: 240, //操作栏宽度
tableColumn: [
{ label: "状态", prop: "czzt", showSolt: true },
{ label: "预警时间", prop: "yjFssj" },
@ -154,7 +159,11 @@ onMounted(() => {
});
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;
getList();
};
@ -240,12 +249,23 @@ const handleCzjy = (row) => {
}
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 270;
window.onresize = function() {
tabHeightFn();
};
};
// 指派
const dataList = ref(null)
const warningShow = ref(false)
const pushWarning = (val) => {
warningShow.value = true;
dataList.value = val;
}
/** 选中项 */
const selectRows = ref([])
const handleChooseData = (val) => {

View File

@ -1,15 +1,12 @@
<template>
<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>
</div>
<!-- 搜索 -->
<!-- 表格 -->
<div class="tabBox">
<div class="tabBox heightBox">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
<template #yjtp="{ row }">
@ -185,7 +182,7 @@ const pushAssess = (val) => {
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 240;
window.onresize = function () { tabHeightFn(); };
};
</script>

View File

@ -1,15 +1,7 @@
<template>
<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">
<template #jfd>
<div>
@ -20,8 +12,13 @@
</template>
</Searchs>
</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"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth" expand
@chooseData="handleChooseData">
@ -43,7 +40,8 @@
<!-- <el-link type="primary" @click="showDetail(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-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="primary" @click="openAddFrom(row)">详情</el-link>
</template>
@ -66,8 +64,8 @@
<!-- 处置建议 -->
<Czjy ref="czjyRef" @okSubmit="getList"></Czjy>
<ChooseJf v-model="chooseJfShow" titleValue="选择系数" :Single="false"
:chooseJfBh="chooseJfBh" url="/yjzxSfyj/sjxspz" :roleIds="roleIds"/>
<ChooseJf v-model="chooseJfShow" titleValue="选择系数" :Single="false" :chooseJfBh="chooseJfBh" url="/yjzxSfyj/sjxspz"
:roleIds="roleIds" />
</template>
<script setup>
@ -132,9 +130,9 @@ const pageData = reactive({
controlsWidth: 200, //操作栏宽度
tableColumn: [
{ label: "状态", prop: "czzt", showSolt: true },
{ label: "预警时间", prop: "yjsj"},
{ label: "预警时间", prop: "yjsj" ,width: 180},
{ label: "姓名", prop: "xm" },
{ label: "身份证号", prop: "sfzh" },
{ label: "身份证号", prop: "sfzh" ,width: 180},
{ label: "标签", prop: "yjbqmc" },
{ label: "接收单位", prop: "ssbm" },
{ label: "活动频次", prop: "sfcs" },
@ -328,7 +326,7 @@ const handleCzjy = (row) => {
}
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 280;
window.onresize = function () {
tabHeightFn();
};
@ -364,17 +362,15 @@ const exportExl = () => {
</script>
<style scoped >
</style>
<style scoped></style>
<style lang="scss">
.el-loading-mask {
background: rgba(0, 0, 0, 0.5) !important;
}
.tabBox_zdy {
.el-table--fit {
overflow: unset !important;
}
}
</style>

View File

@ -1,16 +1,7 @@
<template>
<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">
<template #jfd>
<div>
@ -21,6 +12,11 @@
</template>
</Searchs>
</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' }">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
@ -311,7 +307,7 @@ const chooseJfFun = (val) => {
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 270;
window.onresize = function () {
tabHeightFn();
};

View File

@ -1,17 +1,12 @@
<template>
<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>
</div>
<!-- 表格 -->
<div class="tabBox" :style="{ height: (pageData.tableHeight + 40) + 'px' }">
<div class="tabBox heightBox" >
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
<template #sfcs="{ row }">
@ -239,7 +234,7 @@ const getRowClassName = (row) => {
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - (searchBox.value?.offsetHeight || 0) - 250;
pageData.tableHeight = window.innerHeight - (searchBox.value?.offsetHeight || 0) - 200;
window.onresize = function() {
tabHeightFn();
};

View File

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

View File

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

View File

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

View File

@ -1,13 +1,13 @@
<template>
<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-item label="布控人员" prop="yjRyxm ">
<el-select clearable v-model="listQuery.yjRyxm" filterable remote reserve-keyword placeholder="请输入布控人员"
@ -37,11 +37,16 @@
</el-form-item>
</el-form>
</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 style="padding:0 10px;"> <el-button type="primary" @click="exportExcel">导出</el-button></div> -->
<LocalWarning :maxHeight="pageData.tableHeight - 160"
ref="localWarningRef" :dict="{ D_GSXT_YJXX_CZZT, D_BZ_YJJB, D_BZ_YJLYXT,D_BZ_YJLY }" excelTitle="人像预警" />
<LocalWarning :maxHeight="pageData.tableHeight - 160" ref="localWarningRef"
:dict="{ D_GSXT_YJXX_CZZT, D_BZ_YJJB, D_BZ_YJLYXT, D_BZ_YJLY }" excelTitle="人像预警" />
</div>
</div>
<el-dialog v-model="showDc" title="导出预警" width="80%">
@ -161,7 +166,7 @@ const pageData = reactive({
controlsWidth: 160, //操作栏宽度
tableColumn: [
{ label: "相似度", prop: "sxd", showSolt: true },
{ label: "预警图片11", prop: "yjTp", showSolt: true },
{ label: "预警图片", prop: "yjTp", showSolt: true },
{ label: "处置状态", prop: "czzt", showSolt: true },
{ label: "预警时间", prop: "yjSj", showOverflowTooltip: true },
{ label: "姓名", prop: "yjRyxm" },
@ -234,7 +239,7 @@ const resetForm = (formEl) => {
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - (searchBox.value?.offsetHeight || 0) - 250;
pageData.tableHeight = window.innerHeight - (searchBox.value?.offsetHeight || 0) - 220;
window.onresize = function () {
tabHeightFn();
};
@ -350,6 +355,30 @@ const exportExl = () => {
};
</script>
<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 {
height: calc(100% - 50px) !important;
}

View File

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

View File

@ -1,15 +1,12 @@
<template>
<div>
<div class="titleBox">
<PageTitle title="车辆预警">
<el-button type="primary" @click="exportExl">导出</el-button>
</PageTitle>
<div ref="searchBox" class="searchBoxlive mt10">
<div class="filter-title">
<span class="filter-label"><el-icon>
<Filter />
</el-icon>筛选条件</span>
</div>
<!-- 搜索 -->
<div ref="searchBox" class="searchBox">
<el-form :model="listQuery" label-width="auto" :inline="true" ref="searchArr">
<el-form :model="listQuery" label-width="auto" :inline="true" ref="searchArr" style="margin-left: 10px;">
<el-form-item label="时间筛选">
<el-date-picker v-model="listQuery.time" type="datetimerange" :shortcuts="shortcuts" range-separator="To"
start-placeholder="开始时间" end-placeholder="结束时间" value-format="YYYY-MM-DD HH:mm:ss"
@ -32,11 +29,18 @@
</el-form-item>
</el-form>
</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 style="padding:0 10px;"> <el-button type="primary" @click="exportExcel">导出</el-button></div> -->
<LocalWarning :maxHeight=" pageData.tableHeight - 160"
ref="localWarningRef" :dict="{ D_GSXT_YJXX_CZZT, D_BZ_YJJB, D_BZ_YJLYXT ,D_BZ_YJLY}" excelTitle="车辆预警" />
<LocalWarning :maxHeight="pageData.tableHeight - 160" ref="localWarningRef"
:dict="{ D_GSXT_YJXX_CZZT, D_BZ_YJJB, D_BZ_YJLYXT, D_BZ_YJLY }" excelTitle="车辆预警" />
</div>
</div>
<el-dialog v-model="showDc" title="导出预警" width="80%">
@ -208,7 +212,7 @@ const resetForm = (formEl) => {
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - (searchBox.value?.offsetHeight || 0) - 250;
pageData.tableHeight = window.innerHeight - (searchBox.value?.offsetHeight || 0) - 270;
window.onresize = function () {
tabHeightFn();
};
@ -328,6 +332,30 @@ const exportExl = () => {
::v-deep .el-table--fit {
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>
.el-loading-mask {

View File

@ -1,19 +1,13 @@
<template>
<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>
</div>
<!-- 表格 -->
<div class="tabBox">
<div class="tabBox heightBox">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
@ -163,7 +157,7 @@ const addEdit = (type, row) => {
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 200;
window.onresize = function() {
tabHeightFn();
};

View File

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

View File

@ -1,19 +1,11 @@
<template>
<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>
</div>
<!-- 表格 -->
<div class="tabBox">
<div class="tabBox heightBox">
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
<!-- <template #jjlx="{ row }">
@ -146,7 +138,7 @@ const addEdit = (type, row) => {
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight -200
window.onresize = function() {
tabHeightFn();
};

View File

@ -1,19 +1,11 @@
<template>
<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>
</div>
<!-- 表格 -->
<div class="tabBox">
<div class="tabBox heightBox" >
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
<!-- <template #jjlx="{ row }">
@ -150,7 +142,7 @@ const addEdit = (type, row) => {
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 200;
window.onresize = function() {
tabHeightFn();
};

View File

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

View File

@ -5,12 +5,12 @@ function resolve(dir) {
}
// http://47.108.232.77:9537/mosty-api/mosty-zhgj/docs.html
// 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.212.75:8016"//周
// const serverHost = "http://192.168.1.98: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 = {
// configureWebpack: {
// resolve: {