From 07f9f8657d057a38792c3822acc9b08d83478967 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期四, 07 五月 2026 14:23:10 +0800
Subject: [PATCH] 合并代码

---
 src/views/collaborativeApproval/rulesRegulationsManagement/index.vue |  198 +++++++++++++++----------------------------------
 1 files changed, 60 insertions(+), 138 deletions(-)

diff --git a/src/views/collaborativeApproval/rulesRegulationsManagement/index.vue b/src/views/collaborativeApproval/rulesRegulationsManagement/index.vue
index 6c3004d..f7ba9d9 100644
--- a/src/views/collaborativeApproval/rulesRegulationsManagement/index.vue
+++ b/src/views/collaborativeApproval/rulesRegulationsManagement/index.vue
@@ -42,68 +42,15 @@
             </el-button>
           </el-col>
         </el-row>
-        <el-table :data="regulations"
-                  border
-                  v-loading="tableLoading"
-                  style="width: 100%">
-          <el-table-column prop="regulationNum"
-                           label="鍒跺害缂栧彿"
-                           width="120" />
-          <el-table-column prop="title"
-                           label="鍒跺害鏍囬"
-                           min-width="150" />
-          <el-table-column prop="category"
-                           label="鍒嗙被"
-                           width="120">
-            <template #default="scope">
-              <el-tag>{{ getCategoryText(scope.row.category) }}</el-tag>
-            </template>
-          </el-table-column>
-          <el-table-column prop="version"
-                           label="鐗堟湰"
-                           width="120" />
-          <el-table-column prop="createUserName"
-                           label="鍙戝竷浜�"
-                           width="120" />
-          <el-table-column prop="createTime"
-                           label="鍙戝竷鏃堕棿"
-                           width="180" />
-          <el-table-column prop="status"
-                           label="鐘舵��"
-                           width="100">
-            <template #default="scope">
-              <el-tag :type="scope.row.status === 'active' ? 'success' : 'info'">
-                {{ scope.row.status === 'active' ? '鐢熸晥涓�' : '宸插簾姝�' }}
-              </el-tag>
-            </template>
-          </el-table-column>
-          <el-table-column prop="readCount"
-                           label="宸茶浜烘暟"
-                           width="100" />
-          <el-table-column label="鎿嶄綔"
-                           width="320"
-                           fixed="right">
-            <template #default="scope">
-              <el-button link
-                         @click="viewRegulation(scope.row)">鏌ョ湅</el-button>
-              <el-button link
-                         type="primary"
-                         @click="handleEdit(scope.row)">缂栬緫</el-button>
-              <el-button link
-                         type="danger"
-                         @click="repealEdit(scope.row)">搴熷純</el-button>
-              <el-button link
-                         type="success"
-                         @click="viewVersionHistory(scope.row)">鐗堟湰鍘嗗彶</el-button>
-              <!-- <el-button link type="warning" @click="viewReadStatus(scope.row)">闃呰鐘舵��</el-button> -->
-              <el-button link
-                         type="primary"
-                         @click="openFileDialog(scope.row)">闄勪欢</el-button>
-            </template>
-          </el-table-column>
-        </el-table>
-        <pagination v-show="page.total > 0" :total="page.total" layout="total, sizes, prev, pager, next, jumper"
-                    :page="page.current" :limit="page.size" @pagination="paginationChange" />
+        <PIMTable
+          rowKey="id"
+          :column="regulationTableColumn"
+          :tableData="regulations"
+          :tableLoading="tableLoading"
+          :page="page"
+          :isShowPagination="true"
+          @pagination="paginationChange"
+        />
       </div>
     </el-card>
     <!-- 鐢ㄥ嵃鐢宠瀵硅瘽妗嗭紙宸茬Щ闄わ級 -->
@@ -179,9 +126,8 @@
       </el-form>
       <template #footer>
         <span class="dialog-footer">
+          <el-button type="primary" @click="submitRegulation">鍙戝竷鍒跺害</el-button>
           <el-button @click="showRegulationDialog = false">鍙栨秷</el-button>
-          <el-button type="primary"
-                     @click="submitRegulation">鍙戝竷鍒跺害</el-button>
         </span>
       </template>
     </el-dialog>
@@ -266,14 +212,7 @@
         </el-table-column>
       </el-table>
     </el-dialog>
-    <FileListDialog ref="fileListDialogRef"
-                    v-model="fileDialogVisible"
-                    :show-upload-button="true"
-                    :show-delete-button="true"
-                    :delete-method="handleAttachmentDelete"
-                    :rules-regulations-management-id="currentFileRuleId"
-                    :name-column-label="'闄勪欢鍚嶇О'"
-                    @upload="handleAttachmentUpload"/>
+    <FileList v-if="fileDialogVisible"  v-model:visible="fileDialogVisible" record-type="rules_regulations_management" :record-id="recordId"  />
   </div>
 </template>
 
@@ -289,12 +228,13 @@
     addReadingStatus,
     updateReadingStatus,
   } from "@/api/collaborativeApproval/sealManagement.js";
-  import FileListDialog from "@/components/Dialog/FileListDialog.vue";
+  const FileList = defineAsyncComponent(() => import("@/components/Dialog/FileList.vue"));
   import {
     listRuleFiles,
     delRuleFile,
     addRuleFile,
   } from "@/api/collaborativeApproval/rulesRegulationsManagementFile.js";
+  import PIMTable from "@/components/PIMTable/PIMTable.vue";
 
   // 鍝嶅簲寮忔暟鎹�
   const operationType = ref("add");
@@ -307,14 +247,7 @@
     total: 0,
   });
   // 闄勪欢寮圭獥
-  const fileDialogVisible = ref(false);
-  const fileListDialogRef = ref(null);
   const currentFileRuleId = ref(null);
-  const filePage = reactive({
-    current: 1,
-    size: 1000,
-    total: 0,
-  });
   // 瑙勭珷鍒跺害鐩稿叧
   const showRegulationDialog = ref(false);
   const showRegulationDetailDialog = ref(false);
@@ -362,6 +295,45 @@
   });
 
   const regulations = ref([]);
+
+  // 琛ㄦ牸鍒楅厤缃�
+  const regulationTableColumn = ref([
+    { label: "鍒跺害缂栧彿", prop: "regulationNum"},
+    { label: "鍒跺害鏍囬", prop: "title" },
+    {
+      label: "鍒嗙被",
+      prop: "category",
+      dataType: "tag",
+      formatData: (v) => getCategoryText(v),
+      formatType: () => "info",
+    },
+    { label: "鐗堟湰", prop: "version", width: 120 },
+    { label: "鍙戝竷浜�", prop: "createUserName", width: 120 },
+    { label: "鍙戝竷鏃堕棿", prop: "createTime", width: 180 },
+    {
+      label: "鐘舵��",
+      prop: "status",
+      width: 100,
+      dataType: "tag",
+      formatData: (v) => (v === "active" ? "鐢熸晥涓�" : "宸插簾姝�"),
+      formatType: (v) => (v === "active" ? "success" : "info"),
+    },
+    { label: "宸茶浜烘暟", prop: "readCount", width: 100 },
+    {
+      dataType: "action",
+      label: "鎿嶄綔",
+      width: 320,
+      fixed: "right",
+      align: "center",
+      operation: [
+        { name: "缂栬緫", clickFun: (row) => handleEdit(row) },
+        { name: "搴熷純", clickFun: (row) => repealEdit(row) },
+        { name: "鐗堟湰鍘嗗彶", clickFun: (row) => viewVersionHistory(row) },
+        { name: "璇︽儏", clickFun: (row) => viewRegulation(row) },
+        { name: "闄勪欢", clickFun: (row) => openFileDialog(row) },
+      ],
+    },
+  ]);
 
   const versionHistory = ref([]);
 
@@ -578,63 +550,15 @@
     );
   };
 
-  // 闄勪欢锛氭煡璇�
-  const fetchRuleFiles = async rulesRegulationsManagementId => {
-    const params = {
-      current: filePage.current,
-      size: filePage.size,
-      rulesRegulationsManagementId,
-    };
-    const res = await listRuleFiles(params);
-    const records = res?.data?.records || [];
-    filePage.total = res?.data?.total || records.length;
-    const mapped = records.map(item => ({
-      id: item.id,
-      name: item.fileName || item.name,
-      url: item.fileUrl || item.url,
-      raw: item,
-    }));
-    fileListDialogRef.value?.setList(mapped);
-  };
-
   // 鎵撳紑闄勪欢寮圭獥
-  const openFileDialog = async row => {
-    currentFileRuleId.value = row.id;
-    fileDialogVisible.value = true;
-    await fetchRuleFiles(row.id);
-  };
+  const recordId =ref(0)
+  const fileDialogVisible = ref(false)
 
-  // 鍒锋柊闄勪欢鍒楄〃
-  const refreshFileList = async () => {
-    if (!currentFileRuleId.value) return;
-    await fetchRuleFiles(currentFileRuleId.value);
-  };
-
-  // 涓婁紶闄勪欢锛堢敱瀛愮粍浠惰Е鍙戯級
-  const handleAttachmentUpload = async filePayload => {
-    if (!currentFileRuleId.value) return;
-    const payload = {
-      name: filePayload?.fileName || filePayload?.name,
-      url: filePayload?.fileUrl || filePayload?.url,
-      rulesRegulationsManagementId: currentFileRuleId.value,
-    };
-    await addRuleFile(payload);
-    ElMessage.success("鏂囦欢涓婁紶鎴愬姛");
-    await refreshFileList();
-  };
-
-  // 鍒犻櫎闄勪欢
-  const handleAttachmentDelete = async row => {
-    if (!row?.id) return false;
-    try {
-      await ElMessageBox.confirm("纭鍒犻櫎璇ラ檮浠讹紵", "鎻愮ず", { type: "warning" });
-    } catch {
-      return false;
-    }
-    await delRuleFile([row.id]);
-    ElMessage.success("鍒犻櫎鎴愬姛");
-    await refreshFileList();
-  };
+  // 鎵撳紑闄勪欢寮规
+  const openFileDialog = async (row) => {
+    recordId.value = row.id
+    fileDialogVisible.value = true
+  }
 
   // 鑾峰彇瑙勭珷鍒跺害鍒楄〃鏁版嵁
   const getRegulationList = async () => {
@@ -700,8 +624,6 @@
   }
 
   .dialog-footer {
-    display: flex;
-    justify-content: flex-end;
-    gap: 10px;
+    text-align: center;
   }
 </style>

--
Gitblit v1.9.3