From d7f9fc20b91f72f52cb76e699858458d995c6c76 Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期四, 21 五月 2026 10:51:55 +0800
Subject: [PATCH] 公告通知页面复用
---
src/views/officeProcessAutomation/NoticeAnnouncement/notice-manage/index.vue | 255 +-------------------------------------------------
1 files changed, 7 insertions(+), 248 deletions(-)
diff --git a/src/views/officeProcessAutomation/NoticeAnnouncement/notice-manage/index.vue b/src/views/officeProcessAutomation/NoticeAnnouncement/notice-manage/index.vue
index 4599ced..3f65cb7 100644
--- a/src/views/officeProcessAutomation/NoticeAnnouncement/notice-manage/index.vue
+++ b/src/views/officeProcessAutomation/NoticeAnnouncement/notice-manage/index.vue
@@ -1,253 +1,12 @@
-<!--OA妯″潡锛歂oticeAnnouncement 閫氱煡鍏憡-->
+<!--
+ 妯″潡涓枃鍚嶏細閫氱煡鍏憡
+ 鐩綍鏍囪瘑锛歂oticeAnnouncement/notice-manage
+ 澶嶇敤椤甸潰锛欯/views/collaborativeApproval/noticeManagement/index.vue锛堝崗鍚屽鎵�-閫氱煡鍏憡锛�
+-->
<template>
- <div class="app-container notice-announcement-page">
- <div class="search_form mb20">
- <div class="search_fields">
- <span class="search_title">鍏抽敭璇嶏細</span>
- <el-input
- v-model="searchForm.keyword"
- style="width: 200px"
- placeholder="鏍囬 / 缂栧彿"
- clearable
- :prefix-icon="Search"
- @keyup.enter="handleQuery"
- />
- <span class="search_title" style="margin-left: 12px">绫诲瀷锛�</span>
- <el-select v-model="searchForm.noticeType" placeholder="鍏ㄩ儴" clearable style="width: 130px">
- <el-option v-for="opt in NOTICE_TYPE_OPTIONS" :key="opt.value" :label="opt.label" :value="opt.value" />
- </el-select>
- <span class="search_title" style="margin-left: 12px">浼樺厛绾э細</span>
- <el-select v-model="searchForm.priority" placeholder="鍏ㄩ儴" clearable style="width: 110px">
- <el-option v-for="opt in PRIORITY_OPTIONS" :key="opt.value" :label="opt.label" :value="opt.value" />
- </el-select>
- <span class="search_title" style="margin-left: 12px">鐘舵�侊細</span>
- <el-select v-model="searchForm.publishStatus" placeholder="鍏ㄩ儴" clearable style="width: 110px">
- <el-option v-for="opt in PUBLISH_STATUS_OPTIONS" :key="opt.value" :label="opt.label" :value="opt.value" />
- </el-select>
- <span class="search_title" style="margin-left: 12px">鍙戝竷鏃ユ湡锛�</span>
- <el-date-picker
- v-model="searchForm.publishDateRange"
- type="daterange"
- range-separator="-"
- start-placeholder="寮�濮�"
- end-placeholder="缁撴潫"
- format="YYYY-MM-DD"
- value-format="YYYY-MM-DD"
- style="width: 260px"
- clearable
- />
- <el-button type="primary" :icon="Search" class="ml10" @click="handleQuery">鎼滅储</el-button>
- <el-button :icon="RefreshRight" @click="resetSearch">閲嶇疆</el-button>
- </div>
- <div class="search_actions">
- <el-button type="primary" :icon="Plus" @click="openFormDialog('add')">娣诲姞鍏憡</el-button>
- </div>
- </div>
-
- <div class="table_list">
- <PIMTable
- rowKey="id"
- :column="tableColumn"
- :tableData="tableData"
- :page="page"
- :isSelection="false"
- :tableLoading="tableLoading"
- :total="page.total"
- @pagination="pagination"
- >
- <template #noticeType="{ row }">
- <span class="notice-type-tag" :style="{ color: noticeTypeColor(row.noticeType) }">
- {{ noticeTypeLabel(row.noticeType) }}
- </span>
- </template>
- </PIMTable>
- </div>
-
- <!-- 娣诲姞 / 淇敼 -->
- <el-dialog
- v-model="formDialog.visible"
- :title="formDialog.title"
- width="800px"
- append-to-body
- destroy-on-close
- class="notice-form-dialog"
- @closed="formRef?.resetFields?.()"
- >
- <el-form
- ref="formRef"
- :model="form"
- :rules="formRules"
- label-width="100px"
- :disabled="formDialog.readonly"
- >
- <el-form-item label="鏍囬" prop="title">
- <el-input v-model="form.title" placeholder="璇疯緭鍏ュ叕鍛婃爣棰�" maxlength="100" show-word-limit />
- </el-form-item>
- <el-row :gutter="20">
- <el-col :span="12">
- <el-form-item label="鍏憡绫诲瀷" prop="noticeType">
- <el-select v-model="form.noticeType" placeholder="璇烽�夋嫨" style="width: 100%" @change="onNoticeTypeChange">
- <el-option v-for="opt in NOTICE_TYPE_OPTIONS" :key="opt.value" :label="opt.label" :value="opt.value" />
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="浼樺厛绾�">
- <el-select v-model="form.priority" placeholder="璇烽�夋嫨" style="width: 100%">
- <el-option v-for="opt in PRIORITY_OPTIONS" :key="opt.value" :label="opt.label" :value="opt.value" />
- </el-select>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="20">
- <el-col :span="12">
- <el-form-item label="鍙戝竷鏃ユ湡" prop="publishDate">
- <el-date-picker
- v-model="form.publishDate"
- type="date"
- placeholder="鍙戝竷鏃ユ湡"
- format="YYYY-MM-DD"
- value-format="YYYY-MM-DD"
- style="width: 100%"
- />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="杩囨湡鏃ユ湡">
- <el-date-picker
- v-model="form.expireDate"
- type="date"
- placeholder="鍙�夛紝鐣欑┖涓洪暱鏈熸湁鏁�"
- format="YYYY-MM-DD"
- value-format="YYYY-MM-DD"
- style="width: 100%"
- clearable
- />
- </el-form-item>
- </el-col>
- </el-row>
- <el-form-item label="闃呰鑼冨洿">
- <el-radio-group v-model="form.readScope">
- <el-radio v-for="opt in READ_SCOPE_OPTIONS" :key="opt.value" :value="opt.value">
- {{ opt.label }}
- </el-radio>
- </el-radio-group>
- </el-form-item>
- <el-form-item v-if="form.readScope === 'department'" label="鍙閮ㄩ棬">
- <el-select v-model="form.targetDeptIds" multiple placeholder="閫夋嫨閮ㄩ棬" style="width: 100%">
- <el-option v-for="d in DEPT_OPTIONS" :key="d.value" :label="d.label" :value="d.value" />
- </el-select>
- </el-form-item>
- <el-form-item v-if="form.noticeType === 'emergency'" label="蹇呰纭">
- <el-switch v-model="form.requireReadConfirm" active-text="绱ф�ラ�氱煡闇�鍛樺伐纭宸茶" />
- </el-form-item>
- <el-form-item label="鍐呭" prop="contentHtml">
- <Editor v-model="form.contentHtml" :min-height="280" placeholder="璇疯緭鍏ュ唴瀹�" />
- </el-form-item>
- <el-form-item label="鍙戝竷浜�">
- <el-input v-model="form.publisherName" placeholder="濡傦細琛屾斂閮�" maxlength="50" />
- </el-form-item>
- </el-form>
- <template v-if="!formDialog.readonly" #footer>
- <el-button @click="formDialog.visible = false">鍙� 娑�</el-button>
- <el-button @click="onSave(false)">瀛樿崏绋�</el-button>
- <el-button type="primary" @click="onSave(true)">纭� 瀹�</el-button>
- </template>
- </el-dialog>
-
- <!-- 璇︽儏 -->
- <el-dialog v-model="detailDialog.visible" title="鍏憡璇︽儏" width="800px" append-to-body destroy-on-close>
- <NoticeDetailPanel :row="detailRow" />
- <template #footer>
- <el-button @click="detailDialog.visible = false">鍏� 闂�</el-button>
- </template>
- </el-dialog>
- </div>
+ <NoticeManagement />
</template>
<script setup>
-import { Plus, RefreshRight } from "@element-plus/icons-vue";
-import { ElMessage } from "element-plus";
-import { onMounted } from "vue";
-import Editor from "@/components/Editor/index.vue";
-import { noticeTypeColor } from "./noticeAnnouncementUtils.js";
-import NoticeDetailPanel from "./components/NoticeDetailPanel.vue";
-import { useNoticeAnnouncement } from "./useNoticeAnnouncement.js";
-
-const {
- Search,
- NOTICE_TYPE_OPTIONS,
- PRIORITY_OPTIONS,
- PUBLISH_STATUS_OPTIONS,
- READ_SCOPE_OPTIONS,
- DEPT_OPTIONS,
- noticeTypeLabel,
- searchForm,
- tableLoading,
- page,
- tableData,
- tableColumn,
- formDialog,
- form,
- formRef,
- formRules,
- detailDialog,
- detailRow,
- handleQuery,
- resetSearch,
- pagination,
- openFormDialog,
- saveForm,
-} = useNoticeAnnouncement();
-
-function onNoticeTypeChange(type) {
- if (type === "emergency") {
- form.priority = "urgent";
- form.requireReadConfirm = true;
- }
-}
-
-function onSave(publish) {
- const ret = saveForm(publish);
- if (ret?.message) {
- ElMessage.warning(ret.message);
- return;
- }
- if (ret?.ok) {
- ElMessage.success(publish ? "鍏憡宸插彂甯�" : "宸蹭繚瀛樿崏绋�");
- }
-}
-
-onMounted(() => {
- handleQuery();
-});
+import NoticeManagement from "@/views/collaborativeApproval/noticeManagement/index.vue";
</script>
-
-<style scoped>
-.notice-announcement-page .search_form {
- display: flex;
- flex-wrap: wrap;
- justify-content: space-between;
- align-items: flex-start;
- gap: 12px;
-}
-.search_fields {
- display: flex;
- flex-wrap: wrap;
- align-items: center;
- gap: 4px;
-}
-.search_actions {
- flex-shrink: 0;
-}
-.notice-type-tag {
- font-weight: 600;
- font-size: 13px;
-}
-.ml10 {
- margin-left: 10px;
-}
-.mb20 {
- margin-bottom: 20px;
-}
-</style>
--
Gitblit v1.9.3