diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..3e79c95 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,10 @@ +{ + "printWidth": 100, + "tabWidth": 2, + "semi": true, + "singleQuote": true, + "trailingComma": "es5", + "arrowParens": "avoid", + "htmlWhitespaceSensitivity": "ignore", + "vueIndentScriptAndStyle": false +} \ No newline at end of file diff --git a/packages/screen/src/assets/RiskWarning_img/隐患点弹窗背景@2x.png b/packages/screen/src/assets/RiskWarning_img/隐患点弹窗背景@2x.png new file mode 100644 index 0000000..e2b6a67 Binary files /dev/null and b/packages/screen/src/assets/RiskWarning_img/隐患点弹窗背景@2x.png differ diff --git a/packages/screen/src/router/index.js b/packages/screen/src/router/index.js index 13d592b..5992040 100644 --- a/packages/screen/src/router/index.js +++ b/packages/screen/src/router/index.js @@ -190,6 +190,17 @@ const routes = [ parentRoute: 'warningManagement3' } }, + { + path: '/messageManagement', + name: 'messageManagement', + component: () => import('../views/WarningManagement/law/messageManagement/index.vue'), + meta: { + title: '消息推送设置', + breadcrumb: true, + parentRoute: 'warningManagement3' + } + }, + // 项目管理 - 区县 { diff --git a/packages/screen/src/views/RiskWarning/Dialog/clearanceSituationDialog.vue b/packages/screen/src/views/RiskWarning/Dialog/clearanceSituationDialog.vue index 93035db..1eed77a 100644 --- a/packages/screen/src/views/RiskWarning/Dialog/clearanceSituationDialog.vue +++ b/packages/screen/src/views/RiskWarning/Dialog/clearanceSituationDialog.vue @@ -16,7 +16,7 @@ diff --git a/packages/screen/src/views/RiskWarning/Dialog/controlSituationDialog.vue b/packages/screen/src/views/RiskWarning/Dialog/controlSituationDialog.vue index 6848144..fd938ff 100644 --- a/packages/screen/src/views/RiskWarning/Dialog/controlSituationDialog.vue +++ b/packages/screen/src/views/RiskWarning/Dialog/controlSituationDialog.vue @@ -17,7 +17,7 @@ + + + + diff --git a/packages/screen/src/views/RiskWarning/Dialog/impactPointDialog.vue b/packages/screen/src/views/RiskWarning/Dialog/impactPointDialog.vue index 0014b13..1cb1358 100644 --- a/packages/screen/src/views/RiskWarning/Dialog/impactPointDialog.vue +++ b/packages/screen/src/views/RiskWarning/Dialog/impactPointDialog.vue @@ -79,7 +79,7 @@ :teleported="false" v-model="filterForm.region" size="small" - placeholder="影响区域" + placeholder="行政区域" class="filter-select" > { // 基础数据 const baseData = { id: item.id, - // 影响区域 + // 行政区域 region: item.GL1_QXMC || item.COUNTY || @@ -600,7 +600,7 @@ const processUnifiedData = (item, type) => { if (cardTypeVal.value === "桥梁") { return { ...baseData, - // 影响区域 - 使用区县名称 + // 行政区域 - 使用区县名称 region: item.GL1_QXMC || "-", // 影响点位置 - 使用桥梁名称 pointLocation: item.GL1_QLMC || "-", @@ -641,7 +641,7 @@ const processUnifiedData = (item, type) => { if (cardTypeVal.value === "隧道") { return { ...baseData, - // 影响区域 - 使用区县名称 + // 行政区域 - 使用区县名称 region: item.GL1_QXMC || item.GL1_QXBM || "-", // 影响点位置 - 使用隧道名称 pointLocation: item.GL1_SDMC || "-", @@ -682,8 +682,8 @@ const processUnifiedData = (item, type) => { if (cardTypeVal.value === "路段") { return { ...baseData, - // 影响区域 - 使用区县名称 - region: item.GL1_QXMC || "-", + // 行政区域 - 使用区县名称 + region: item.GL1_ZDMC || "-", // 影响点位置 - 使用路线名称+起终点桩号 pointLocation: `${item.GL1_GLMC || item.GL1_GLBH || "-"} (${item.GL1_QDZH || "-"} - ${item.GL1_ZDZH || "-"})`, // 影响点等级 - 使用风险等级 @@ -721,7 +721,7 @@ const processUnifiedData = (item, type) => { if (cardTypeVal.value === "项目") { return { ...baseData, - // 影响区域 - 使用COUNTY字段 + // 行政区域 - 使用COUNTY字段 region: item.COUNTY || item.county || item.county_name || "-", // 影响点位置 - 使用项目名称 pointLocation: item.PROJECT_NAME || item.projectName || item.name || "-", diff --git a/packages/screen/src/views/RiskWarning/Dialog/responseStatusDialog.vue b/packages/screen/src/views/RiskWarning/Dialog/responseStatusDialog.vue index 5fffb6e..a8b2e81 100644 --- a/packages/screen/src/views/RiskWarning/Dialog/responseStatusDialog.vue +++ b/packages/screen/src/views/RiskWarning/Dialog/responseStatusDialog.vue @@ -19,78 +19,20 @@
-
+
- 影响桥梁 - (1430) -
-
-
-
-
- 影响边坡 - (933) -
-
-
-
-
- 影响隧道 - (1033) -
-
-
-
-
- 影响项目 - (832) -
-
-
-
-
- 影响路段 - (832) + {{ item.label }} + {{ item.value }}
@@ -115,7 +57,8 @@ -->
影响点等级 -
是否回应 - @@ -160,11 +102,7 @@ {{ row.trafficDept.name }}
@@ -197,11 +135,11 @@ - diff --git a/packages/screen/src/views/RiskWarning/bottom.vue b/packages/screen/src/views/RiskWarning/bottom.vue index 6255ded..080b133 100644 --- a/packages/screen/src/views/RiskWarning/bottom.vue +++ b/packages/screen/src/views/RiskWarning/bottom.vue @@ -8,13 +8,15 @@ :class="{ active: activeIndex === index }" @click="handleClick(item, index)" > -
+ +
@@ -30,11 +32,7 @@
-
+
- -
-
- -
-
气象预警监测
-
- - - - -
-
-
- - - - - - - - -
-
-
diff --git a/packages/screen/src/views/RiskWarning/component/ChongqingMap.vue b/packages/screen/src/views/RiskWarning/component/ChongqingMap.vue index f4f29f0..e5f3ee3 100644 --- a/packages/screen/src/views/RiskWarning/component/ChongqingMap.vue +++ b/packages/screen/src/views/RiskWarning/component/ChongqingMap.vue @@ -9,17 +9,13 @@ {{ error }}
- - + > --> + + diff --git a/packages/screen/src/views/RiskWarning/component/WeatherWarningTable.vue b/packages/screen/src/views/RiskWarning/component/WeatherWarningTable.vue new file mode 100644 index 0000000..0863caf --- /dev/null +++ b/packages/screen/src/views/RiskWarning/component/WeatherWarningTable.vue @@ -0,0 +1,448 @@ + + + + + diff --git a/packages/screen/src/views/RiskWarning/component/index.js b/packages/screen/src/views/RiskWarning/component/index.js index daab8f2..5f6ed0a 100644 --- a/packages/screen/src/views/RiskWarning/component/index.js +++ b/packages/screen/src/views/RiskWarning/component/index.js @@ -1,32 +1,74 @@ // 弹窗组件统一数据配置 +import { ref } from 'vue'; +import { request } from '@/utils/request'; // 行政区域选项 -export const regionOptions = [ - { label: "重庆市", value: "重庆市" }, - { label: "万州区", value: "万州区" }, - { label: "沙坪坝区", value: "沙坪坝区" }, - { label: "渝中区", value: "渝中区" }, - { label: "巫溪县", value: "巫溪县" }, - { label: "涪陵区", value: "涪陵区" }, - { label: "合川区", value: "合川区" }, - { label: "万盛区", value: "万盛区" }, - { label: "长寿区", value: "长寿区" }, - { label: "城口区", value: "城口区" }, - { label: "柏梓镇", value: "柏梓镇" }, - { label: "江北区", value: "江北区" }, -]; +export const regionOptions = ref([ + // { label: "重庆市", value: "重庆市" }, + // { label: "万州区", value: "万州区" }, + // { label: "沙坪坝区", value: "沙坪坝区" }, + // { label: "渝中区", value: "渝中区" }, + // { label: "巫溪县", value: "巫溪县" }, + // { label: "涪陵区", value: "涪陵区" }, + // { label: "合川区", value: "合川区" }, + // { label: "万盛区", value: "万盛区" }, + // { label: "长寿区", value: "长寿区" }, + // { label: "城口区", value: "城口区" }, + // { label: "柏梓镇", value: "柏梓镇" }, + // { label: "江北区", value: "江北区" }, +]); -// 类型选项 -export const typeOptions = [ - { label: "边坡坍塌", value: "边坡坍塌" }, - { label: "路面塌陷", value: "路面塌陷" }, - { label: "桥梁损坏", value: "桥梁损坏" }, - { label: "隧道事故", value: "隧道事故" }, - { label: "交通主管部门", value: "交通主管部门" }, - { label: "公路机构", value: "公路机构" }, - { label: "养护站", value: "养护站" }, - { label: "护路员", value: "护路员" }, -]; +// 获取行政区域选项 +export const fetchDistrictOptions = async () => { + try { + const res = await request({ + url: '/snow-ops-platform/sm-event/dashboard/district-options', + method: 'GET', + }); + if (res && res.code === '00000' && Array.isArray(res.data)) { + // 将接口返回的数据转换为选项格式 + const options = res.data.map(item => ({ + label: item.qxmc, + value: item.xzdm, + })); + // 保留"全部"选项,并添加接口返回的数据 + regionOptions.value = [ + { label: "全部", value: "" }, + ...options, + ]; + return options; + } + } catch (error) { + console.error('获取行政区域选项失败:', error); + } + return regionOptions.value; +}; + +// 路况类型选项(默认数据,会被API数据替换) +export const typeOptions = ref([ +]); + +// 获取路况类型选项 +export const fetchRoadConditionOptions = async () => { + try { + const res = await request({ + url: '/snow-ops-platform/sm-event/dashboard/road-condition-options', + method: 'GET', + }); + if (res && res.code === '00000' && Array.isArray(res.data)) { + // 将接口返回的字符串数组转换为选项格式 + const options = res.data.map(item => ({ + label: item, + value: item, + })); + typeOptions.value = options; + return options; + } + } catch (error) { + console.error('获取路况类型选项失败:', error); + } + return typeOptions.value; +}; // 管控措施选项 export const controlMeasureOptions = [ @@ -84,15 +126,9 @@ export const isEndedOptions = [ ]; // 行政区域选项(带全部) -export const regionOptionsWithAll = [ - { label: "全部", value: "" }, - { label: "万州区", value: "wanzhou" }, - { label: "涪陵区", value: "fuling" }, - { label: "合川区", value: "hechuan" }, - { label: "万盛区", value: "wansheng" }, - { label: "长寿区", value: "changshou" }, - { label: "城口区", value: "chengkou" }, -]; +export const regionOptionsWithAll = ref([ +]); + // 格式化日期时间为接口所需格式 export const formatDateTime = (date) => { @@ -120,4 +156,6 @@ export default { isEndedOptions, regionOptionsWithAll, formatDateTime, -}; \ No newline at end of file + fetchRoadConditionOptions, + fetchDistrictOptions, +}; diff --git a/packages/screen/src/views/RiskWarning/index.vue b/packages/screen/src/views/RiskWarning/index.vue index 1967cdf..d1ff5ee 100644 --- a/packages/screen/src/views/RiskWarning/index.vue +++ b/packages/screen/src/views/RiskWarning/index.vue @@ -1,17 +1,9 @@ @@ -502,7 +601,7 @@ onMounted(() => { position: relative; width: 100%; height: 100%; - background-image: url("../../assets/RiskWarning_img/遮罩层.png"); + background-image: url('../../assets/RiskWarning_img/遮罩层.png'); background-size: cover; background-position: center; } @@ -571,9 +670,17 @@ onMounted(() => { position: absolute; bottom: 5px; left: 25%; - width: 50%; + width: 20%; height: 43%; } +.weather-warning-table { + position: absolute; + bottom: 5px; + left: 30%; + width: 40%; + height: 43%; + // z-index: 1; +} .top { position: absolute; @@ -591,7 +698,7 @@ onMounted(() => { // left: 25%; width: 100%; height: 100%; - z-index: 2; + // z-index: 2; } /* 地图底层 - 填满整个容器 */ @@ -609,8 +716,7 @@ onMounted(() => { z-index: 1; pointer-events: none; /* 不阻挡交互 */ - background: url(../../assets/RiskWarning_img/遮罩层.png) no-repeat - center/cover; + background: url(../../assets/RiskWarning_img/遮罩层.png) no-repeat center/cover; } // 四个角的装饰 diff --git a/packages/screen/src/views/RiskWarning/left.vue b/packages/screen/src/views/RiskWarning/left.vue index 924e2ef..28c6bde 100644 --- a/packages/screen/src/views/RiskWarning/left.vue +++ b/packages/screen/src/views/RiskWarning/left.vue @@ -404,8 +404,24 @@ const districtLoadLoad = async () => { if (res.code == "00000") { const data = res.data; if (data) { + // 简化区县名称 + const simplifyDistrictName = (name) => { + if (!name) return name; + return name + .replace("彭水苗族土家族自治县", "彭水县") + .replace("石柱土家族自治县", "石柱县") + .replace("秀山土家族苗族自治县", "秀山县") + .replace("酉阳土家族苗族自治县", "酉阳县"); + }; + + // 处理数据,简化区县名称 + const processedData = data.map((item) => ({ + ...item, + name: simplifyDistrictName(item.name), + })); + // 根据路段、桥梁、隧道、边坡、项目的总数进行排序(数值越大越靠前) - const sortedData = data.sort((a, b) => { + const sortedData = processedData.sort((a, b) => { const totalA = (a.roadSectionCount || 0) + (a.bridgeCount || 0) + diff --git a/packages/screen/src/views/RiskWarning/right.vue b/packages/screen/src/views/RiskWarning/right.vue index 481fa64..33eaf3b 100644 --- a/packages/screen/src/views/RiskWarning/right.vue +++ b/packages/screen/src/views/RiskWarning/right.vue @@ -19,7 +19,8 @@
{{ item.label }}
- {{ item.value }}{{ item.unit }} + {{ item.value }} + {{ item.unit }}
@@ -28,8 +29,8 @@
-
管控路段数 2
-
管控项目 2
+
管控路段数
+
管控项目
@@ -78,11 +79,7 @@
-
+
{{ item.value }}
{{ item.label }}
@@ -93,16 +90,13 @@
抢险投入情况
-
+
- {{ item.value }}{{ item.unit }} + {{ item.value }} + {{ item.unit }}
{{ item.label }}
@@ -116,9 +110,7 @@ @@ -699,7 +708,7 @@ watch( .section-header { display: flex; justify-content: space-between; - background-image: url("../../assets/RiskWarning_img/标题bg@2x.png"); + background-image: url('../../assets/RiskWarning_img/标题bg@2x.png'); align-items: center; margin-bottom: vw(8); height: vw(50); @@ -721,7 +730,7 @@ watch( justify-content: center; &::before { - content: "←"; + content: '←'; color: #fff; font-size: vw(10); } @@ -751,12 +760,7 @@ watch( padding: vw(4) vw(8); background: linear-gradient(270deg, rgba(18, 52, 97, 0) 0%, #203555 100%); border: 2px solid transparent; - border-image: linear-gradient( - 270deg, - rgba(80, 145, 201, 0), - rgba(39, 77, 153, 1) - ) - 2 2; + border-image: linear-gradient(270deg, rgba(80, 145, 201, 0), rgba(39, 77, 153, 1)) 2 2; border-radius: 6px; border-right: 0px; @@ -771,16 +775,16 @@ watch( font-size: vw(18); &.icon-team::before { - content: "👷"; + content: '👷'; } &.icon-person::before { - content: "👤"; + content: '👤'; } &.icon-equip::before { - content: "🚛"; + content: '🚛'; } &.icon-material::before { - content: "📦"; + content: '📦'; } } @@ -837,7 +841,7 @@ watch( grid-template-columns: repeat(2, 1fr); // background: rgba(62, 106, 172, 0.36); // box-shadow: inset 0px 0px 8px 0px #379bff; - background-image: url("../../assets/RiskWarning_img/路径 62@2x.png"); + background-image: url('../../assets/RiskWarning_img/路径 62@2x.png'); background-size: 100% 100%; background-position: right; gap: vw(8); @@ -904,7 +908,7 @@ watch( padding: vw(6) vw(5); // background: rgba(64, 169, 255, 0.1); // border-radius: 4px; - background-image: url("../../assets/RiskWarning_img/路径62@2x (1).png"); + background-image: url('../../assets/RiskWarning_img/路径62@2x (1).png'); background-size: 100% 100%; background-position: right; @@ -946,7 +950,7 @@ watch( // background: rgba(64, 169, 255, 0.1); // border: 1px solid rgba(64, 169, 255, 0.2); // border-radius: 6px; - background-image: url("../../assets/RiskWarning_img/路径62@2x (1).png"); + background-image: url('../../assets/RiskWarning_img/路径62@2x (1).png'); background-size: 100% 100%; background-position: right; @@ -960,13 +964,13 @@ watch( margin-left: vw(5); &.icon-rescue-person::before { - content: "👷"; + content: '👷'; } &.icon-rescue-equip::before { - content: "🚜"; + content: '🚜'; } &.icon-rescue-clear::before { - content: "🏔️"; + content: '🏔️'; } } @@ -1030,7 +1034,7 @@ watch( // display: grid; // grid-template-columns: repeat(5, 1fr); // gap: 10px; - background-image: url("../../assets/RiskWarning_img/编组22@2x.png"); + background-image: url('../../assets/RiskWarning_img/编组22@2x.png'); background-size: 100% 100%; background-position: center; @@ -1038,12 +1042,7 @@ watch( width: 2px; height: vw(40); margin: auto 0; - background: linear-gradient( - 180deg, - transparent 0%, - #18f2f9 50%, - transparent 100% - ); + background: linear-gradient(180deg, transparent 0%, #18f2f9 50%, transparent 100%); // margin: 0 auto; } @@ -1116,7 +1115,7 @@ watch( padding: vw(4) 0; // background: rgba(64, 169, 255, 0.1); // border-radius: 6px; - background-image: url("../../assets/RiskWarning_img/路径62@2x.png"); + background-image: url('../../assets/RiskWarning_img/路径62@2x.png'); background-size: 100% 100%; background-position: left; @@ -1159,7 +1158,7 @@ watch( padding: vw(12); // background: rgba(64, 169, 255, 0.1); // border-radius: 6px; - background-image: url("../../assets/RiskWarning_img/编组5@2x.png"); + background-image: url('../../assets/RiskWarning_img/编组5@2x.png'); background-size: 100% 100%; background-position: left; diff --git a/packages/screen/src/views/RiskWarning/top.vue b/packages/screen/src/views/RiskWarning/top.vue index 62bb2c4..49fb4e8 100644 --- a/packages/screen/src/views/RiskWarning/top.vue +++ b/packages/screen/src/views/RiskWarning/top.vue @@ -1,9 +1,7 @@ diff --git a/packages/screen/src/views/WarningManagement/law/index.js b/packages/screen/src/views/WarningManagement/law/index.js index 2f731a6..5453d4b 100644 --- a/packages/screen/src/views/WarningManagement/law/index.js +++ b/packages/screen/src/views/WarningManagement/law/index.js @@ -372,6 +372,12 @@ export default () => { path: '/dutyManagement' }); }; + // 跳转到消息推送设置 + const gotoMessagePage = () => { + router.push({ + path: '/messageManagement' + }); + } onMounted(() => { getTableData(); @@ -396,6 +402,7 @@ export default () => { columns, gotoLedgerPage, gotoDutyPage, + gotoMessagePage, modelVisible, model, diff --git a/packages/screen/src/views/WarningManagement/law/index.vue b/packages/screen/src/views/WarningManagement/law/index.vue index 5bb49f2..1677d54 100644 --- a/packages/screen/src/views/WarningManagement/law/index.vue +++ b/packages/screen/src/views/WarningManagement/law/index.vue @@ -17,6 +17,7 @@ 线下帮扶台账 立即排班 值班管理 + 消息推送设置 导出 diff --git a/packages/screen/src/views/WarningManagement/law/messageManagement/addDialog.vue b/packages/screen/src/views/WarningManagement/law/messageManagement/addDialog.vue new file mode 100644 index 0000000..bac4316 --- /dev/null +++ b/packages/screen/src/views/WarningManagement/law/messageManagement/addDialog.vue @@ -0,0 +1,267 @@ + + + + + \ No newline at end of file diff --git a/packages/screen/src/views/WarningManagement/law/messageManagement/index.js b/packages/screen/src/views/WarningManagement/law/messageManagement/index.js new file mode 100644 index 0000000..bd41e74 --- /dev/null +++ b/packages/screen/src/views/WarningManagement/law/messageManagement/index.js @@ -0,0 +1,224 @@ +import { h, ref, onMounted, reactive, watch, toRaw, nextTick } from "vue"; +import { request } from "@/utils/request"; +import { useRoute, useRouter } from 'vue-router' +import AddDialog from "./addDialog.vue"; + +const modelVisible = ref(false); // 弹窗状态 +const drawerVisible = ref(false); // 抽屉状态 +// 弹窗内容 +const model = reactive({ + +}); +const form = reactive({ + +}); +const INIT_FORM = { + +}; +// 抽屉内容 +const drawer = reactive({ + title: '', + content: null, + props: {}, + onCancel: null, + onConfirm: null, + direction: 'rtl', + size: '50%' +}); +const dialogRef = ref(null); // 弹窗实例 +const drawerRef = ref(null); // 抽屉实例 + +// 消息推送组织列表(固定六个),增加personList存储该组织的人员数组 +const messageOrgList = ref([ + { title: '中心领导', orgName: '中心领导', personList: [] }, + { title: '法规处', orgName: '法规处', personList: [] }, + { title: '养护处', orgName: '养护处', personList: [] }, + { title: '农村公路处', orgName: '农村公路处', personList: [] }, + { title: '建设处', orgName: '建设处', personList: [] }, + { title: '市公路应急中心/管理段', orgName: '公路管理段', personList: [] }, +]) + +const messagePushPerson = ref([]) +const userOrgsList = ref([]) + +// 查询所有消息推送人员 +const getAllMessagePushPerson = async () => { + try { + const res = await request({ + url: '/snow-ops-platform/messagePushPerson/listAll', + method: 'GET', + }) + if (res.code === '00000') { + messagePushPerson.value = res.data + + // 按orgId分组填充人员数据到对应组织 + messageOrgList.value.forEach(org => { + org.personList = messagePushPerson.value.filter(person => person.orgId === org.orgId) + }); + + // console.log('@@@@@@', messageOrgList.value); + + } else { + throw new Error(res.message) + } + } catch (error) { + ElMessage.error('获取消息推送人员失败'); + console.error('获取消息推送人员失败:', error); + } +} + + +// 查询所有组织 +const getUserOrgs = async () => { + try { + const res = await request({ + url: '/snow-ops-platform/user/userOrgs', + method: 'GET', + }) + if (res.code === '00000') { + userOrgsList.value = res.data.data + + // 遍历后端返回的组织数据,与固定组织列表匹配并赋值orgId + messageOrgList.value.forEach(fixedOrg => { + const matchedOrg = userOrgsList.value.find(org => + org.orgName === fixedOrg.orgName + ); + if (matchedOrg) { + fixedOrg.orgId = matchedOrg.orgId; + } + }); + + // 在获取到orgId后,立即根据orgId填充对应的人员数据 + messageOrgList.value.forEach(org => { + org.personList = messagePushPerson.value.filter(person => person.orgId === org.orgId) + }); + + // console.log('@@@@',messageOrgList.value); + } else { + throw new Error(res.message) + } + } catch (error) { + ElMessage.error('获取组织失败'); + console.error('获取组织失败:', error); + } +} + +// 添加消息推送人 +const handelAdd = async (data) => { + try { + const loading = ElLoading.service({ + lock: true, + text: '操作中', + background: 'rgba(0, 0, 0, 0.7)', + }) + const res = await request({ + url: '/snow-ops-platform/messagePushPerson/add', + method: 'POST', + data: data + }) + loading.close(); + if (res.code === '00000') { + ElMessage.success('添加成功'); + modelVisible.value = false; + await getAllMessagePushPerson(); + } else { + throw new Error(res.message) + } + } catch (error) { + ElMessage.error('添加失败'); + console.error('添加失败:', error); + } +} + + +// 打开添加人员弹窗 +const openAddDialog = (orgId, orgName) => { + model.title = '添加人员'; + Object.assign(form, INIT_FORM); + model.props = { + orgId: orgId, + orgName: orgName, + form: form, + }; + model.content = AddDialog; + model.onCancel = () => { + modelVisible.value = false; + }; + model.onConfirm = async () => { + await dialogRef?.value?.dynamicComponentRef?.formRef.validate().then(async () => { + // console.log('@@@@@@form',form); + await handelAdd(form.data) + // await addSchedule(form) + // await publishWarning(form) + }) + .catch((err) => { + ElMessage.error('请处理表单中的错误项'); + }); + }; + model.width = "70%" + modelVisible.value = true; +} + +// 删除消息推送人 +const deletePushPerson = async (person) => { + try { + await ElMessageBox.confirm( + `确定要删除【${person.realName}】吗?`, + '删除确认', + { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', + } + ) + const loading = ElLoading.service({ + lock: true, + text: '操作中', + background: 'rgba(0, 0, 0, 0.7)', + }) + const res = await request({ + url: '/snow-ops-platform/messagePushPerson/deleteByUserId', + method: 'POST', + data: { + userId: person.userId + } + }) + loading.close(); + if (res.code === '00000') { + ElMessage.success('删除成功'); + await getAllMessagePushPerson(); + } else { + throw new Error(res.message) + } + } catch (error) { + if (error !== 'cancel') { + ElMessage.error('删除失败'); + console.error('删除失败:', error); + } + } +} + +export default () => { + + const router = useRouter(); + + onMounted(async () => { + await getUserOrgs(); + await getAllMessagePushPerson(); + + }) + + return { + modelVisible, + model, + drawerVisible, + drawer, + dialogRef, + drawerRef, + openAddDialog, + deletePushPerson, + + messageOrgList, + + } +} \ No newline at end of file diff --git a/packages/screen/src/views/WarningManagement/law/messageManagement/index.vue b/packages/screen/src/views/WarningManagement/law/messageManagement/index.vue new file mode 100644 index 0000000..2920ca2 --- /dev/null +++ b/packages/screen/src/views/WarningManagement/law/messageManagement/index.vue @@ -0,0 +1,121 @@ + + + + + \ No newline at end of file