From 93eeec32dec3b3f00681185c1366e8ba07736892 Mon Sep 17 00:00:00 2001
From: sen <sen@qq.com>
Date: 星期三, 24 十二月 2025 16:08:48 +0800
Subject: [PATCH] 修改应付账单,增加供应商银行配置
---
ui/admin-ui3/src/views/cwgl/payableFeeManagement/index.vue | 299 ++++++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 234 insertions(+), 65 deletions(-)
diff --git a/ui/admin-ui3/src/views/cwgl/payableFeeManagement/index.vue b/ui/admin-ui3/src/views/cwgl/payableFeeManagement/index.vue
index 60af6d6..942baf4 100644
--- a/ui/admin-ui3/src/views/cwgl/payableFeeManagement/index.vue
+++ b/ui/admin-ui3/src/views/cwgl/payableFeeManagement/index.vue
@@ -15,23 +15,26 @@
<!-- <el-button type="danger" icon="Delete" :disabled="pageF.multiple" @click="handleDelete"
v-hasPermi="['cwgl:payableFeeManagement:remove']">鍒犻櫎
</el-button> -->
+ <el-button type="success" :disabled="selectDisplay" v-hasPermi="['cwgl:payableFeeManagement:edit']"
+ @click="handleBill">鐢熸垚搴斾粯璐﹀崟
+ </el-button>
<el-button type="warning" plain icon="Download" @click="handleExport"
v-hasPermi="['cwgl:payableFeeManagement:export']">瀵煎嚭
</el-button>
- <el-button type="warning" plain icon="Upload" @click="handleImport"
+ <!-- <el-button type="warning" plain icon="Upload" @click="handleImport"
v-hasPermi="['cwgl:payableFeeManagement:import']">瀵煎叆
- </el-button>
+ </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 class="link-btn" type="primary" :underline="false" plain :size="size" icon="View"
+ @click="handleExamine(row)" v-hasPermi="['cwgl:payableFeeManagement:view']"> 鏌ョ湅
</el-link>
- <el-link class="link-btn" type="primary" :underline="false" plain :size="size" @click="handleCancellation(row)"
- v-hasPermi="['cwgl:payableFeeManagement:invalid']"> 浣滃簾
+ <el-link class="link-btn" type="primary" v-if="row.status == 0" :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" v-if="row.status == 0" :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>
@@ -40,23 +43,29 @@
</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" />
-
-
+ <OperationLogModal ref="logModalRef" />
+ <GenerateBillDialog ref="billDialogRef" @confirm="onBillConfirm" />
+ <DetailModal ref="detailModalRef" />
+ <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 {
+ PayableFeeManagementI, addPayableFeeManagement, delPayableFeeManagement, exportPayableFeeManagement, getPayableFeeManagement, listPayableFeeManagement, updatePayableFeeManagement,
+ payableFeeManagementVoid, getPayableFeeManagementStatistics, addpayableFeeManagementCreateBill
+} 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';
+import FeeDetailModal from '@/components/FeeDetailModal/index.vue';
+import GenerateBillDialog from '@/components/GenerateBillDialog/index.vue';
+import DetailModal from '@/components/DetailModal/index.vue';
+import OperationLogModal from '@/components/OperationLogModal/index.vue';
+import { listPayableFeeManagementLog } from "@/api/cwgl/payableFeeManagementLog";
const { proxy } = useCurrentInstance();
const crudRef = ref();
@@ -79,14 +88,19 @@
currentPage: 1,
},
selectionList: [],
+ selectDisplay: true,
})
-const { queryParams, form, page, selectionList } = toRefs(data);
+const { queryParams, form, page, selectionList, selectDisplay } = toRefs(data);
const option = ref({
pageKey: 'PayableFeeManagement',
rowKey: 'id',
+ searchSpan: 5,
+ addBtn: false,
+ editBtn: false,
+ viewBtn: false,
+ delBtn: false,
labelWidth: 150,
searchLabelWidth: 120,
- addBtn: false,
column: {
// id: {
// label: 'ID1',
@@ -149,6 +163,23 @@
}
],
},
+ payableAmountStr: {
+ label: '搴斾粯閲戦',
+ // label: '搴斾粯閲戦鎻忚堪',
+
+ minWidth: 150,
+ search: true,
+ formatter: (row) => {
+ if (!row.payableAmountStr) return '-';
+ // 灏嗙┖鏍兼浛鎹负鎹㈣绗︺�傚鏋滃悗绔繑鍥炵殑鏄� "0娓竵 2420浜烘皯甯�"
+ // 鎴戜滑灏嗗叾杞崲涓� "0娓竵\n2420浜烘皯甯�"
+ return row.payableAmountStr.replace(/\s+/g, '\n');
+ },
+ styles: {
+ whiteSpace: 'pre-wrap',
+ lineHeight: '1.5'
+ },
+ },
documentNo: {
label: '鍗曟嵁缂栧彿',
search: true,
@@ -161,14 +192,16 @@
}
],
},
+
isInternalSettlement: {
label: '鏄惁鍐呴儴缁撶畻',
search: true,
- minWidth: 150,
+ minWidth: 120,
+ type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/sys_whether_type',
rules: [
{
required: true,
- message: "鏄惁鍐呴儴缁撶畻涓嶈兘涓虹┖", trigger: "blur"
+ message: "鍗曟嵁绫诲瀷涓嶈兘涓虹┖", trigger: "change"
}
],
},
@@ -207,6 +240,19 @@
}
],
},
+ businessTimeArray: {
+ label: '涓氬姟鍙戠敓鏃堕棿',
+ minWidth: 150,
+ search: true,
+ searchRange: true,
+ addDisplay: false, // 鏂板鏃朵笉鏄剧ず
+ editDisplay: false, // 淇敼鏃朵笉鏄剧ず
+ type: 'daterange',
+ startPlaceholder: '寮�濮嬫棩鏈�',
+ endPlaceholder: '缁撴潫鏃ユ湡',
+ valueFormat: 'YYYY-MM-DD',
+ hide: true
+ },
payableConfirmTime: {
label: '搴斾粯纭鏃堕棿',
minWidth: 150,
@@ -218,17 +264,30 @@
}
],
},
- payableAmount: {
- label: '搴斾粯閲戦',
+ payableConfirmTimeArray: {
+ label: '搴斾粯纭鏃堕棿',
minWidth: 150,
-
- rules: [
- {
- required: true,
- message: "搴斾粯閲戦涓嶈兘涓虹┖", trigger: "blur"
- }
- ],
+ search: true,
+ searchRange: true,
+ addDisplay: false, // 鏂板鏃朵笉鏄剧ず
+ editDisplay: false, // 淇敼鏃朵笉鏄剧ず
+ type: 'daterange',
+ startPlaceholder: '寮�濮嬫棩鏈�',
+ endPlaceholder: '缁撴潫鏃ユ湡',
+ valueFormat: 'YYYY-MM-DD',
+ hide: true
},
+ // payableAmount: {
+ // label: '搴斾粯閲戦',
+ // minWidth: 150,
+
+ // rules: [
+ // {
+ // required: true,
+ // message: "搴斾粯閲戦涓嶈兘涓虹┖", trigger: "blur"
+ // }
+ // ],
+ // },
// remark: {
// label: '澶囨敞',
@@ -243,6 +302,18 @@
minWidth: 150,
},
+ createdTimeArray: {
+ label: '鍒涘缓鏃堕棿',
+ search: true,
+ searchRange: true,
+ addDisplay: false, // 鏂板鏃朵笉鏄剧ず
+ editDisplay: false, // 淇敼鏃朵笉鏄剧ず
+ type: 'daterange',
+ startPlaceholder: '寮�濮嬫棩鏈�',
+ endPlaceholder: '缁撴潫鏃ユ湡',
+ valueFormat: 'YYYY-MM-DD',
+ hide: true
+ },
updateBy: {
label: '鏇存柊浜�',
minWidth: 150,
@@ -253,10 +324,24 @@
minWidth: 150,
},
+ updateTimeArray: {
+ label: '鏇存柊鏃堕棿',
+ search: true,
+ searchRange: true,
+ addDisplay: false, // 鏂板鏃朵笉鏄剧ず
+ editDisplay: false, // 淇敼鏃朵笉鏄剧ず
+ type: 'daterange',
+ startPlaceholder: '寮�濮嬫棩鏈�',
+ endPlaceholder: '缁撴潫鏃ユ湡',
+ valueFormat: 'YYYY-MM-DD',
+ hide: true
+ },
status: {
+ search: true,
label: '鐘舵��',
- minWidth: 150,
-
+ fixed: 'right',
+ minWidth: 120,
+ type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/sys_charge',
},
// deleted: {
// label: '鍒犻櫎鏍囪(0:姝e父;1:鍒犻櫎)',
@@ -280,9 +365,46 @@
handleUpdateFunc: () => {
crudRef.value.rowEdit(selectionList.value[0]);
},
+
handleSelectionChangeFunc: (selection: any) => {
+ // 鍋囪浣犺瀵规瘮鐨勫瓧娈靛悕鏄� customerFullName isInternalSettlement internalSettlementUnit
+
+ // 1. 鏁扮粍闀垮害蹇呴』澶т簬 0
+ if (selection && selection.length > 0) {
+ // 鍙栧嚭绗竴椤逛綔涓哄姣斿熀鍑�
+ const firstItem = selection[0];
+
+ // 2. 妫�鏌ユ瘡涓�椤规槸鍚﹂兘涓庣涓�椤圭殑涓変釜鍏抽敭瀛楁瀹屽叏涓�鑷�
+ const isAllMatch = selection.every(item =>
+ item.internalSettlementUnit === firstItem.internalSettlementUnit &&
+ item.supplierName === firstItem.supplierName &&
+ item.status == 0
+ );
+ // 濡傛灉鍏ㄩ儴鍖归厤锛宻electDisplay 涓� false锛屽惁鍒欎负 true
+ selectDisplay.value = !isAllMatch;
+ } else {
+ // 3. 濡傛灉鏁扮粍涓虹┖锛屾牴鎹綘鐨勯�昏緫閫氬父杩斿洖 true (鍗充笉鏄剧ず鎴栫鐢�)
+ selectDisplay.value = true;
+ }
selectionList.value = selection;
+ },
+ getBeginListFunc: (params = {}) => {
+ // 鍒涘缓鏂板弬鏁板璞�
+ let newParams = { ...params };
+ newParams = proxy.addDateRangeNew(newParams, newParams?.createdTimeArray, 'createTime') || [];
+ newParams = proxy.addDateRangeNew(newParams, newParams?.updateTimeArray, 'updateTime') || [];
+ newParams = proxy.addDateRangeNew(newParams, newParams?.businessTimeArray, 'businessTime') || [];
+ newParams = proxy.addDateRangeNew(newParams, newParams?.payableConfirmTimeArray, 'payableConfirmTime') || [];
+
+ delete newParams.createdTimeArray;
+ delete newParams.updateTimeArray;
+ delete newParams.businessTimeArray;
+ delete newParams.payableConfirmTimeArray;
+
+ queryParams.value = newParams;
+ return newParams;
}
+
})
const modalRef = ref(null);
@@ -298,11 +420,11 @@
const handleEdit = (row) => {
currentType.value = 'payable';
addIshorw.value = false;
- // getReceivableFeeManagement(row.id).then((res) => {
- // if (res.code === 200) {
- // modalRef.value.open(res.data);
- // }
- // });
+ getPayableFeeManagement(row.id).then((res) => {
+ if (res.code === 200) {
+ modalRef.value.open(res.data);
+ }
+ });
};
/* 鏂板缂栬緫 */
@@ -310,24 +432,24 @@
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();
+ addPayableFeeManagement(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();
+ updatePayableFeeManagement(data).then((res) => {
+ if (res.code === 200) {
+ proxy.$message.success(res.msg);
+ onLoad(page.value);
+ modalRef.value.canceleClick();
- // }
- // })
+ }
+ })
}
};
/* 瀵煎叆 */
@@ -346,24 +468,71 @@
cancelButtonText: '鍙栨秷',
type: 'warning'
}).then(() => {
- // delReceivableFeeManagement(row.id).then((res) => {
- // if (res.code === 200) {
- // proxy.$message.success(res.msg);
- // onLoad(page.value);
- // }
- // });
+ payableFeeManagementVoid(row.id).then((res) => {
+ if (res.code === 200) {
+ proxy.$message.success(res.msg);
+ onLoad(page.value);
+ }
+ });
})
+};
+const detailModalRef = ref(null);
+const handleExamine = (row) => {
+ getPayableFeeManagement(row.id).then((res) => {
+ if (res.code === 200) {
+ detailModalRef.value.open(res.data, 'payable');
+ }
+ });
+
};
/* 鏃ュ織 */
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);
+ listPayableFeeManagementLog({ payableFeeId: row.id }).then((res) => {
+ if (res.code == 200) {
+ logModalRef.value.open(res.rows, 'receivable');
+
+ }
+ });
}
+/* */
+const billDialogRef = ref(null);
+const handleBill = () => {
+ const ids = selectionList.value.map(item => item.id).join(',');
+ getPayableFeeManagementStatistics(ids).then((res) => {
+ if (res.code === 200) {
+ // 鎵撳紑寮圭獥骞朵紶鍏ユ暟鎹�
+ billDialogRef.value.open(res.data, selectionList.value, 'payable');
+ }
+ });
+
+};
+
+const onBillConfirm = (statisticsData, obj: any) => {
+ const payload = {
+ billType: obj.billType,
+ billName: obj.billName,
+ statisticsData: statisticsData,
+ customerName: selectionList.value[0].customerName,
+ isInternalSettlement: selectionList.value[0].isInternalSettlement,
+ internalSettlementUnit: selectionList.value[0].internalSettlementUnit,
+ supplierName: selectionList.value[0].supplierName,
+
+ };
+ addpayableFeeManagementCreateBill(payload).then((res) => {
+ if (res.code === 200) {
+ proxy.$message.success(res.msg);
+ billDialogRef.value.cancel();
+ onLoad(page.value);
+ }
+ });
+
+};
</script>
+<style scoped>
+/* 纭繚 el-table 鑳藉璇嗗埆鎹㈣绗� */
+:deep(.el-table .cell) {
+ white-space: pre-wrap !important;
+ word-break: break-all;
+}
+</style>
--
Gitblit v1.8.0