From 2aaa32f860d4f3fbda01eded1b20a7cab9d3a393 Mon Sep 17 00:00:00 2001
From: wujianwei <wjw@11.com>
Date: 星期三, 24 十二月 2025 10:58:20 +0800
Subject: [PATCH] 应付接口

---
 ui/admin-ui3/src/views/cwgl/payableFeeManagement/index.vue |  542 ++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 345 insertions(+), 197 deletions(-)

diff --git a/ui/admin-ui3/src/views/cwgl/payableFeeManagement/index.vue b/ui/admin-ui3/src/views/cwgl/payableFeeManagement/index.vue
index 5216549..60af6d6 100644
--- a/ui/admin-ui3/src/views/cwgl/payableFeeManagement/index.vue
+++ b/ui/admin-ui3/src/views/cwgl/payableFeeManagement/index.vue
@@ -1,221 +1,369 @@
 <template>
-  <basicContainer >
-    <avue-crud
-        :option="option"
-        :table-loading="pageF.loading"
-        :data="tableData"
-        :page="page"
-        :permission="permissionList"
-        :before-open="beforeOpen"
-        v-model="form"
-        ref="crudRef"
-        @row-update="rowUpdate"
-        @row-save="rowSave"
-        @refresh-change="refreshChange"
-        @row-del="rowDel"
-        @search-change="searchChange"
-        @search-reset="searchReset"
-        @selection-change="selectionChange"
-        @current-change="currentChange"
-        @size-change="sizeChange"
-        @on-load="onLoad"
-    >
+  <basicContainer>
+    <avue-crud :option="option" :table-loading="pageF.loading" :data="tableData" :page="page"
+      :permission="permissionList" :before-open="beforeOpen" v-model="form" ref="crudRef" @row-update="rowUpdate"
+      @row-save="rowSave" @refresh-change="refreshChange" @row-del="rowDel" @search-change="searchChange"
+      @search-reset="searchReset" @selection-change="selectionChange" @current-change="currentChange"
+      @size-change="sizeChange" @on-load="onLoad">
       <template #menu-left>
-        <el-button
-            type="success"
-            icon="Edit"
-            :disabled="pageF.single"
-            v-hasPermi="['cwgl:payableFeeManagement:edit']"
-            @click="handleUpdate">淇敼
+        <el-button type="primary" icon="el-icon-plus" v-hasPermi="['cwgl:payableFeeManagement:add']"
+          @click="showFeeDetail('payable')">鏂板
         </el-button>
-        <el-button
-            type="danger"
-            icon="Delete"
-            :disabled="pageF.multiple"
-            @click="handleDelete"
-            v-hasPermi="['cwgl:payableFeeManagement:remove']"
-        >鍒犻櫎
+        <!-- <el-button type="success" icon="Edit" :disabled="pageF.single" v-hasPermi="['cwgl:payableFeeManagement:edit']"
+          @click="handleUpdate">淇敼
+        </el-button> -->
+        <!-- <el-button type="danger" icon="Delete" :disabled="pageF.multiple" @click="handleDelete"
+          v-hasPermi="['cwgl:payableFeeManagement:remove']">鍒犻櫎
+        </el-button> -->
+        <el-button type="warning" plain icon="Download" @click="handleExport"
+          v-hasPermi="['cwgl:payableFeeManagement:export']">瀵煎嚭
         </el-button>
-        <el-button
-            type="warning"
-            plain
-            icon="Download"
-            @click="handleExport"
-            v-hasPermi="['cwgl:payableFeeManagement:export']"
-        >瀵煎嚭
+          <el-button type="warning" plain icon="Upload" @click="handleImport"
+          v-hasPermi="['cwgl:payableFeeManagement:import']">瀵煎叆
         </el-button>
+      </template>
+
+      <template #menu="{ size, row, index }">
+        <!-- <el-link class="link-btn" type="primary" :underline="false" plain :size="size" icon="View"
+          @click="handleExamine(row)" v-hasPermi="['cwgl:receivableFeeManagement:view']"> 鏌ョ湅
+        </el-link> -->
+        <el-link class="link-btn" type="primary" :underline="false" plain :size="size" icon="el-icon-edit"
+          @click="handleEdit(row)" v-hasPermi="['cwgl:payableFeeManagement:edit']"> 缂栬緫
+        </el-link>
+        <el-link class="link-btn" type="primary" :underline="false" plain :size="size" @click="handleCancellation(row)"
+          v-hasPermi="['cwgl:payableFeeManagement:invalid']"> 浣滃簾
+        </el-link>
+        <el-button type="text" icon="View" @click="handleFlow(row)"
+          v-hasPermi="['cwgl:payableFeeManagement:flow']">鏃ュ織</el-button>
       </template>
     </avue-crud>
   </basicContainer>
+  <FeeDetailModal ref="modalRef" :type="currentType" @submit="handleSave" />
+  <OperationLogModal ref="logModalRef" />
+
+    <XlsFileImport title="搴斾粯淇℃伅瀵煎叆" uploadUrl="/asset/management/importData" templateUrl="asset/management/importTemplate"
+      :open="pageF.importOpen" @submit="importSubmit" @cancel="pageF.importOpen = false" />
+
+
 </template>
 
 <script setup name="payableFeeManagement" lang="ts">
-  import {PayableFeeManagementI,addPayableFeeManagement, delPayableFeeManagement, exportPayableFeeManagement, getPayableFeeManagement, listPayableFeeManagement, updatePayableFeeManagement} from "@/api/cwgl/payableFeeManagement";
-  import useCurrentInstance from "@/utils/useCurrentInstance";
-  import {computed,reactive, ref, toRefs} from "vue";
-  import {PagesInterface, PageQueryInterface} from "@/utils/globalInterface";
-  import {usePagePlus} from "@/hooks/usePagePlus";
-  import {hasPermission} from "@/utils/permissionUtils";
+import { PayableFeeManagementI, addPayableFeeManagement, delPayableFeeManagement, exportPayableFeeManagement, getPayableFeeManagement, listPayableFeeManagement, updatePayableFeeManagement } from "@/api/cwgl/payableFeeManagement";
+import useCurrentInstance from "@/utils/useCurrentInstance";
+import { computed, reactive, ref, toRefs } from "vue";
+import { PagesInterface, PageQueryInterface } from "@/utils/globalInterface";
+import { usePagePlus } from "@/hooks/usePagePlus";
+import { hasPermission } from "@/utils/permissionUtils";
+import FeeDetailModal from '@/components/FeeDetailModal/index.vue';
+import OperationLogModal from '@/components/OperationLogModal/index.vue';
 
-  const { proxy } = useCurrentInstance();
-  const crudRef = ref();
 
-  const permissionList = computed(()=>{
-    return {
-      addBtn: hasPermission(["cwgl:payableFeeManagement:add"]),
-      delBtn: hasPermission(["cwgl:payableFeeManagement:remove"]),
-      editBtn: hasPermission(["cwgl:payableFeeManagement:edit"]),
-      viewBtn: hasPermission(["cwgl:payableFeeManagement:query"]),
-    }
-  })
+const { proxy } = useCurrentInstance();
+const crudRef = ref();
 
-  const data = reactive({
-    form:<PayableFeeManagementI>{},
-    queryParams:<PayableFeeManagementI&PageQueryInterface>{},
-    page: <PagesInterface>{
-      pageSize: 10,
-      total: 0,
-      currentPage: 1,
+const permissionList = computed(() => {
+  return {
+    addBtn: hasPermission(["cwgl:payableFeeManagement:add"]),
+    delBtn: hasPermission(["cwgl:payableFeeManagement:remove"]),
+    editBtn: hasPermission(["cwgl:payableFeeManagement:edit"]),
+    viewBtn: hasPermission(["cwgl:payableFeeManagement:query"]),
+  }
+})
+
+const data = reactive({
+  form: <PayableFeeManagementI>{},
+  queryParams: <PayableFeeManagementI & PageQueryInterface>{},
+  page: <PagesInterface>{
+    pageSize: 10,
+    total: 0,
+    currentPage: 1,
+  },
+  selectionList: [],
+})
+const { queryParams, form, page, selectionList } = toRefs(data);
+const option = ref({
+  pageKey: 'PayableFeeManagement',
+  rowKey: 'id',
+  labelWidth: 150,
+  searchLabelWidth: 120,
+  addBtn: false,
+  column: {
+    // id: {
+    //   label: 'ID1',
+    // },
+    systemNo: {
+      label: '绯荤粺缂栧彿',
+      minWidth: 150,
+      search: true,
+      rules: [
+        {
+          required: true,
+          message: "绯荤粺缂栧彿涓嶈兘涓虹┖", trigger: "blur"
+        }
+      ],
     },
-    selectionList:[],
-  })
-  const {queryParams,form,page,selectionList} = toRefs(data);
-  const option = ref({
-    pageKey: 'PayableFeeManagement',
-    rowKey: 'id',
-    column: {
-                                id: {
-          label: 'ID',
-                            },
-                                systemNo: {
-          label: '绯荤粺缂栧彿',
-                                rules: [
-              {
-                required: true,
-                message: "绯荤粺缂栧彿涓嶈兘涓虹┖", trigger: "blur" }
-            ],                  },
-                                relatedBillNo: {
-          label: '鍏宠仈璐﹀崟缂栧彿',
-                                rules: [
-              {
-                required: true,
-                message: "鍏宠仈璐﹀崟缂栧彿涓嶈兘涓虹┖", trigger: "blur" }
-            ],                  },
-                                sourceSystem: {
-          label: '鏉ユ簮绯荤粺',
-                                rules: [
-              {
-                required: true,
-                message: "鏉ユ簮绯荤粺涓嶈兘涓虹┖", trigger: "blur" }
-            ],                  },
-                                businessSector: {
-          label: '涓氬姟鏉垮潡',
-                                rules: [
-              {
-                required: true,
-                message: "涓氬姟鏉垮潡涓嶈兘涓虹┖", trigger: "blur" }
-            ],                  },
-                                documentType: {
-          label: '鍗曟嵁绫诲瀷',
-                                rules: [
-              {
-                required: true,
-                message: "鍗曟嵁绫诲瀷涓嶈兘涓虹┖", trigger: "change"
-                 }
-            ],                  },
-                                documentNo: {
-          label: '鍗曟嵁缂栧彿',
-                                rules: [
-              {
-                required: true,
-                message: "鍗曟嵁缂栧彿涓嶈兘涓虹┖", trigger: "blur" }
-            ],                  },
-                                isInternalSettlement: {
-          label: '鏄惁鍐呴儴缁撶畻',
-                                rules: [
-              {
-                required: true,
-                message: "鏄惁鍐呴儴缁撶畻涓嶈兘涓虹┖", trigger: "blur" }
-            ],                  },
-                                internalSettlementUnit: {
-          label: '鍐呴儴缁撶畻鍗曚綅',
-                            },
-                                supplierName: {
-          label: '渚涘簲鍟嗗悕绉�',
-                                rules: [
-              {
-                required: true,
-                message: "渚涘簲鍟嗗悕绉颁笉鑳戒负绌�", trigger: "blur" }
-            ],                  },
-                                projectName: {
-          label: '椤圭洰鍚嶇О',
-                            },
-                                businessTime: {
-          label: '涓氬姟鍙戠敓鏃堕棿',
-                                rules: [
-              {
-                required: true,
-                message: "涓氬姟鍙戠敓鏃堕棿涓嶈兘涓虹┖", trigger: "blur" }
-            ],                  },
-                                payableConfirmTime: {
-          label: '搴斾粯纭鏃堕棿',
-                                rules: [
-              {
-                required: true,
-                message: "搴斾粯纭鏃堕棿涓嶈兘涓虹┖", trigger: "blur" }
-            ],                  },
-                                payableAmount: {
-          label: '搴斾粯閲戦',
-                                rules: [
-              {
-                required: true,
-                message: "搴斾粯閲戦涓嶈兘涓虹┖", trigger: "blur" }
-            ],                  },
-                                status: {
-          label: '鐘舵��',
-                            },
-                                remark: {
-          label: '澶囨敞',
-                      type: 'textarea', minRows: 3, maxRows: 5,
-                            },
-                                createBy: {
-          label: '鍒涘缓浜�',
-                            },
-                                createTime: {
-          label: '鍒涘缓鏃堕棿',
-                            },
-                                updateBy: {
-          label: '鏇存柊浜�',
-                            },
-                                updateTime: {
-          label: '鏇存柊鏃堕棿',
-                            },
-                                deleted: {
-          label: '鍒犻櫎鏍囪(0:姝e父;1:鍒犻櫎)',
-                            },
-          }
-  })
+    relatedBillNo: {
+      label: '鍏宠仈璐﹀崟缂栧彿',
+      search: true,
+      minWidth: 150,
+      rules: [
+        {
+          required: true,
+          message: "鍏宠仈璐﹀崟缂栧彿涓嶈兘涓虹┖", trigger: "blur"
+        }
+      ],
+    },
+    sourceSystem: {
+      label: '鏉ユ簮绯荤粺',
+      minWidth: 120,
+      type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/sys_system',
+      search: true,
+      rules: [
+        {
+          required: true,
+          message: "鏉ユ簮绯荤粺涓嶈兘涓虹┖", trigger: "blur"
+        }
+      ],
+    },
+    businessSector: {
+      label: '涓氬姟鏉垮潡',
+      minWidth: 120,
+      type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/sys_business',
+      search: true,
+      // rules: [
+      //   {
+      //     required: true,
+      //     message: "涓氬姟鏉垮潡涓嶈兘涓虹┖", trigger: "blur"
+      //   }
+      // ],
+    },
+    documentType: {
+      label: '鍗曟嵁绫诲瀷',
+      search: true,
+      minWidth: 120,
+      type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/sys_receipts',
+      rules: [
+        {
+          required: true,
+          message: "鍗曟嵁绫诲瀷涓嶈兘涓虹┖", trigger: "change"
+        }
+      ],
+    },
+    documentNo: {
+      label: '鍗曟嵁缂栧彿',
+      search: true,
+      minWidth: 150,
 
-  const { tableData,pageF,rowSave,rowUpdate,rowDel,beforeOpen,searchChange,
-    searchReset,selectionChange,onLoad,currentChange,sizeChange,handleDelete,handleExport,handleUpdate,refreshChange} = usePagePlus({
-    form:form,
-    option:option,
-    queryParams:queryParams,
-    idKey:'id',
-    page:page.value,
-    getListApi:listPayableFeeManagement,
-    getDetailApi:getPayableFeeManagement,
-    exportApi:exportPayableFeeManagement,
-    deleteApi:delPayableFeeManagement,
-    addApi:addPayableFeeManagement,
-    updateApi:updatePayableFeeManagement,
-    handleUpdateFunc:()=>{
+      rules: [
+        {
+          required: true,
+          message: "鍗曟嵁缂栧彿涓嶈兘涓虹┖", trigger: "blur"
+        }
+      ],
+    },
+    isInternalSettlement: {
+      label: '鏄惁鍐呴儴缁撶畻',
+      search: true,
+      minWidth: 150,
+      rules: [
+        {
+          required: true,
+          message: "鏄惁鍐呴儴缁撶畻涓嶈兘涓虹┖", trigger: "blur"
+        }
+      ],
+    },
+    internalSettlementUnit: {
+      label: '鍐呴儴缁撶畻鍗曚綅',
+      search: true,
+      minWidth: 150,
+
+    },
+    supplierName: {
+      label: '渚涘簲鍟嗗悕绉�',
+      search: true,
+      minWidth: 150,
+
+      rules: [
+        {
+          required: true,
+          message: "渚涘簲鍟嗗悕绉颁笉鑳戒负绌�", trigger: "blur"
+        }
+      ],
+    },
+    projectName: {
+      label: '椤圭洰鍚嶇О',
+      search: true,
+      minWidth: 150,
+
+    },
+    businessTime: {
+      label: '涓氬姟鍙戠敓鏃堕棿',
+      minWidth: 150,
+
+      rules: [
+        {
+          required: true,
+          message: "涓氬姟鍙戠敓鏃堕棿涓嶈兘涓虹┖", trigger: "blur"
+        }
+      ],
+    },
+    payableConfirmTime: {
+      label: '搴斾粯纭鏃堕棿',
+      minWidth: 150,
+
+      rules: [
+        {
+          required: true,
+          message: "搴斾粯纭鏃堕棿涓嶈兘涓虹┖", trigger: "blur"
+        }
+      ],
+    },
+    payableAmount: {
+      label: '搴斾粯閲戦',
+      minWidth: 150,
+
+      rules: [
+        {
+          required: true,
+          message: "搴斾粯閲戦涓嶈兘涓虹┖", trigger: "blur"
+        }
+      ],
+    },
+
+    // remark: {
+    //   label: '澶囨敞',
+    //   type: 'textarea', minRows: 3, maxRows: 5,
+    // },
+    createBy: {
+      label: '鍒涘缓浜�',
+      minWidth: 150,
+    },
+    createTime: {
+      label: '鍒涘缓鏃堕棿',
+      minWidth: 150,
+
+    },
+    updateBy: {
+      label: '鏇存柊浜�',
+      minWidth: 150,
+
+    },
+    updateTime: {
+      label: '鏇存柊鏃堕棿',
+      minWidth: 150,
+
+    },
+    status: {
+      label: '鐘舵��',
+      minWidth: 150,
+
+    },
+    // deleted: {
+    //   label: '鍒犻櫎鏍囪(0:姝e父;1:鍒犻櫎)',
+    // },
+  }
+})
+
+const { tableData, pageF, rowSave, rowUpdate, rowDel, beforeOpen, searchChange,
+  searchReset, selectionChange, onLoad, currentChange, sizeChange, handleDelete, handleExport, handleUpdate, refreshChange } = usePagePlus({
+    form: form,
+    option: option,
+    queryParams: queryParams,
+    idKey: 'id',
+    page: page.value,
+    getListApi: listPayableFeeManagement,
+    getDetailApi: getPayableFeeManagement,
+    exportApi: exportPayableFeeManagement,
+    deleteApi: delPayableFeeManagement,
+    addApi: addPayableFeeManagement,
+    updateApi: updatePayableFeeManagement,
+    handleUpdateFunc: () => {
       crudRef.value.rowEdit(selectionList.value[0]);
     },
-    handleSelectionChangeFunc:(selection:any)=>{
+    handleSelectionChangeFunc: (selection: any) => {
       selectionList.value = selection;
     }
   })
 
+const modalRef = ref(null);
+const currentType = ref('payable');
+const addIshorw = ref(false);
+const showFeeDetail = (type) => {
+  currentType.value = type;
+  addIshorw.value = true;
+  modalRef.value.open();
+};
 
+/* 缂栬緫 */
+const handleEdit = (row) => {
+  currentType.value = 'payable';
+  addIshorw.value = false;
+  // getReceivableFeeManagement(row.id).then((res) => {
+  //   if (res.code === 200) {
+  //     modalRef.value.open(res.data);
+  //   }
+  // });
+
+};
+/* 鏂板缂栬緫 */
+const handleSave = (data, payableFeeDetailList) => {
+  if (addIshorw.value) {
+    data.payableFeeDetailList = payableFeeDetailList;
+    data.status = '0';
+    // addReceivableFeeManagement(data).then((res) => {
+    //   if (res.code === 200) {
+    //     proxy.$message.success(res.msg);
+    //     onLoad(page.value);
+    //     modalRef.value.canceleClick();
+
+    //   }
+    // })
+  } else {
+    data.payableFeeDetailList = payableFeeDetailList;
+    // updateReceivableFeeManagement(data).then((res) => {
+    //   if (res.code === 200) {
+    //     proxy.$message.success(res.msg);
+    //     onLoad(page.value);
+    //     modalRef.value.canceleClick();
+
+    //   }
+    // })
+  }
+};
+/* 瀵煎叆 */
+const handleImport = () => {
+  pageF.importOpen = true;
+}
+
+const importSubmit = () => {
+  pageF.importOpen = false;
+  onLoad(page.value);
+};
+/* 浣滃簾 */
+const handleCancellation = (row) => {
+  proxy.$confirm('鏄惁纭浣滃簾璇ユ潯鏁版嵁锛�', '鎻愮ず', {
+    confirmButtonText: '纭畾',
+    cancelButtonText: '鍙栨秷',
+    type: 'warning'
+  }).then(() => {
+    // delReceivableFeeManagement(row.id).then((res) => {
+    //   if (res.code === 200) {
+    //     proxy.$message.success(res.msg);
+    //     onLoad(page.value);
+    //   }
+    // });
+  })
+};
+/* 鏃ュ織 */
+const logModalRef = ref(null);
+const handleFlow = (row: any) => {
+// 杩欓噷鍙互浠� row 涓洿鎺ヨ幏鍙栨棩蹇楋紝鎴栬�呰皟鐢ㄥ悗绔帴鍙f煡璇�
+  // 绀轰緥妯℃嫙鏁版嵁
+  const mockLogs = [
+    { createBy: 'admin', createTime: '2025-12-19 10:00:00', type: 'add', description: '鍒涘缓搴旀敹鍗曟嵁' },
+    { createBy: '璐㈠姟涓撳憳01', createTime: '2025-12-19 14:30:00', type: 'edit', description: '淇敼搴旀敹閲戦涓� 1000.00' }
+  ];
+  
+  logModalRef.value.open(mockLogs);
+}
 </script>

--
Gitblit v1.8.0