From 8194a67f3b9248cc80137c78bd3e005949ec38dc Mon Sep 17 00:00:00 2001
From: wujianwei <wjw@11.com>
Date: 星期二, 23 十二月 2025 17:48:44 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/cwxt_master' into cwxt_master
---
ui/admin-ui3/src/views/cwgl/receivableBillManagement/index.vue | 599 +++++++++++++++++++++++++++++++++++++----------------------
1 files changed, 377 insertions(+), 222 deletions(-)
diff --git a/ui/admin-ui3/src/views/cwgl/receivableBillManagement/index.vue b/ui/admin-ui3/src/views/cwgl/receivableBillManagement/index.vue
index 5a0b088..4cb4a1d 100644
--- a/ui/admin-ui3/src/views/cwgl/receivableBillManagement/index.vue
+++ b/ui/admin-ui3/src/views/cwgl/receivableBillManagement/index.vue
@@ -1,245 +1,400 @@
<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:receivableBillManagement:edit']"
- @click="handleUpdate">淇敼
+ <!-- <el-button type="success" icon="Edit" :disabled="pageF.single"
+ v-hasPermi="['cwgl:receivableBillManagement:edit']" @click="handleUpdate">淇敼
</el-button>
- <el-button
- type="danger"
- icon="Delete"
- :disabled="pageF.multiple"
- @click="handleDelete"
- v-hasPermi="['cwgl:receivableBillManagement:remove']"
- >鍒犻櫎
+ <el-button type="danger" icon="Delete" :disabled="pageF.multiple" @click="handleDelete"
+ v-hasPermi="['cwgl:receivableBillManagement:remove']">鍒犻櫎
+ </el-button> -->
+ <el-button type="warning" plain icon="Download" @click="handleExport"
+ v-hasPermi="['cwgl:receivableBillManagement:export']">瀵煎嚭
</el-button>
- <el-button
- type="warning"
- plain
- icon="Download"
- @click="handleExport"
- v-hasPermi="['cwgl:receivableBillManagement:export']"
- >瀵煎嚭
- </el-button>
+ </template>
+ <template #menu="{ size, row, index }">
+ <el-link class="link-btn" type="primary" v-if="row.status == 0 || row.status == 1" :underline="false" plain :size="size" @click="handleSettle(row)"
+ v-hasPermi="['cwgl:receivableBillManagement:view']"> 缁撶畻
+ </el-link>
+ <el-link class="link-btn" type="primary" v-if="row.status == 0 || row.status == 1|| row.status == 3" :underline="false" plain :size="size" @click="handleViewHistory(row)"
+ v-hasPermi="['cwgl:receivableBillManagement:view']"> 缁撶畻鏄庣粏
+ </el-link>
+ <el-link class="link-btn" type="primary" :underline="false" plain :size="size" @click="handleViewFeeDetail(row)"
+ v-hasPermi="['cwgl:receivableBillManagement:view']"> 璇︽儏
+ </el-link>
+ <!-- <el-link class="link-btn" v-if="row.status == 0" type="primary" :underline="false" plain :size="size"
+ icon="el-icon-edit" @click="handleEdit(row)" v-hasPermi="['cwgl:receivableFeeManagement:edit']"> 缂栬緫
+ </el-link> -->
+ <el-link class="link-btn" v-if="row.status == 0" type="primary"
+ :underline="false"
+ plain @click="handleInvalid(row)" v-hasPermi="['cwgl:receivableBillManagement:invalid']"> 浣滃簾
+ </el-link>
+
+ <el-button type="text" icon="View" @click="handleFlow(row)"
+ v-hasPermi="['cwgl:receivableBillManagement:flow']">鏃ュ織</el-button>
+
</template>
</avue-crud>
</basicContainer>
+
+ <SettlementDialog ref="settleDialogRef" :type="currentType" @success="handleRefresh" />
+ <BillSettlementHistory ref="historyRef" :type="activeType" />
+ <NestedDetailDialog ref="feeDetailRef" :type="activeType" />
+ <OperationLogModal ref="logModalRef" />
+
</template>
<script setup name="receivableBillManagement" lang="ts">
- import {ReceivableBillManagementI,addReceivableBillManagement, delReceivableBillManagement, exportReceivableBillManagement, getReceivableBillManagement, listReceivableBillManagement, updateReceivableBillManagement} from "@/api/cwgl/receivableBillManagement";
- 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 { ReceivableBillManagementI, addReceivableBillManagement, delReceivableBillManagement, exportReceivableBillManagement, getReceivableBillManagement, listReceivableBillManagement, updateReceivableBillManagement,receivableBillManagementVoid } from "@/api/cwgl/receivableBillManagement";
+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 SettlementDialog from '@/components/SettlementDialog/index.vue';
+import BillSettlementHistory from '../../../components/BillSettlementHistory/index.vue';
+import NestedDetailDialog from '../../../components/NestedDetailDialog/index.vue';
+import OperationLogModal from '@/components/OperationLogModal/index.vue';
+ import { listReceivableBillManagementLog} from "@/api/cwgl/receivableBillManagementLog";
- const { proxy } = useCurrentInstance();
- const crudRef = ref();
+import { addReceivableBillSettlementDetail, } from "@/api/cwgl/receivableBillSettlementDetail";
+const { proxy } = useCurrentInstance();
+const crudRef = ref();
- const permissionList = computed(()=>{
- return {
- addBtn: hasPermission(["cwgl:receivableBillManagement:add"]),
- delBtn: hasPermission(["cwgl:receivableBillManagement:remove"]),
- editBtn: hasPermission(["cwgl:receivableBillManagement:edit"]),
- viewBtn: hasPermission(["cwgl:receivableBillManagement:query"]),
- }
- })
+const permissionList = computed(() => {
+ return {
+ addBtn: hasPermission(["cwgl:receivableBillManagement:add"]),
+ delBtn: hasPermission(["cwgl:receivableBillManagement:remove"]),
+ editBtn: hasPermission(["cwgl:receivableBillManagement:edit"]),
+ viewBtn: hasPermission(["cwgl:receivableBillManagement:query"]),
+ }
+})
- const data = reactive({
- form:<ReceivableBillManagementI>{},
- queryParams:<ReceivableBillManagementI&PageQueryInterface>{},
- page: <PagesInterface>{
- pageSize: 10,
- total: 0,
- currentPage: 1,
+const data = reactive({
+ form: <ReceivableBillManagementI>{},
+ queryParams: <ReceivableBillManagementI & PageQueryInterface>{},
+ page: <PagesInterface>{
+ pageSize: 10,
+ total: 0,
+ currentPage: 1,
+ },
+ selectionList: [],
+})
+const { queryParams, form, page, selectionList } = toRefs(data);
+const option = ref({
+ pageKey: 'ReceivableBillManagement',
+ rowKey: 'id',
+ labelWidth: 150,
+ delBtn: false,
+ addBtn: false,
+ viewBtn: false,
+ editBtn: false,
+ searchLabelWidth: 120,
+ column: {
+ // id: {
+ // label: 'ID',
+ // },
+ systemNo: {
+ label: '绯荤粺缂栧彿',
+ minWidth: 150,
+ search: true,
+
+ rules: [
+ {
+ required: true,
+ message: "绯荤粺缂栧彿涓嶈兘涓虹┖", trigger: "blur"
+ }
+ ],
},
- selectionList:[],
- })
- const {queryParams,form,page,selectionList} = toRefs(data);
- const option = ref({
- pageKey: 'ReceivableBillManagement',
- rowKey: 'id',
- column: {
- id: {
- label: 'ID',
- },
- systemNo: {
- label: '绯荤粺缂栧彿',
- rules: [
- {
- required: true,
- message: "绯荤粺缂栧彿涓嶈兘涓虹┖", trigger: "blur" }
- ], },
- billName: {
- label: '璐﹀崟鍚嶇О',
- rules: [
- {
- required: true,
- message: "璐﹀崟鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }
- ], },
- customerName: {
- label: '瀹㈡埛鍚嶇О',
- rules: [
- {
- required: true,
- message: "瀹㈡埛鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }
- ], },
- isInternalSettlement: {
- label: '鏄惁鍐呴儴缁撶畻',
- rules: [
- {
- required: true,
- message: "鏄惁鍐呴儴缁撶畻涓嶈兘涓虹┖", trigger: "blur" }
- ], },
- internalSettlementUnit: {
- label: '鍐呴儴缁撶畻鍗曚綅',
- },
- documentCount: {
- label: '鍗曟嵁鏁伴噺',
- },
- totalAmount: {
- label: '搴旂粨绠楅噾棰�',
- },
- currency: {
- label: '甯佸埗',
- },
- discountAmount: {
- label: '鍑忓厤閲戦',
- },
- receivedAmount: {
- label: '宸叉敹閲戦',
- },
- pendingAmount: {
- label: '寰呮敹閲戦',
- },
- exchangeRate: {
- label: '姹囩巼',
- },
- cnyAmount: {
- label: '浜烘皯甯侀噾棰�',
- },
- periodType: {
- label: '鍛ㄦ湡绫诲瀷',
- rules: [
- {
- required: true,
- message: "鍛ㄦ湡绫诲瀷涓嶈兘涓虹┖", trigger: "change"
- }
- ], },
- businessStartDate: {
- label: '涓氬姟鏈熼棿寮�濮嬫棩鏈�',
- rules: [
- {
- required: true,
- message: "涓氬姟鏈熼棿寮�濮嬫棩鏈熶笉鑳戒负绌�", trigger: "blur" }
- ], },
- businessEndDate: {
- label: '涓氬姟鏈熼棿缁撴潫鏃ユ湡',
- rules: [
- {
- required: true,
- message: "涓氬姟鏈熼棿缁撴潫鏃ユ湡涓嶈兘涓虹┖", trigger: "blur" }
- ], },
- billingStartDate: {
- label: '璐︽湡寮�濮嬫棩鏈�',
- rules: [
- {
- required: true,
- message: "璐︽湡寮�濮嬫棩鏈熶笉鑳戒负绌�", trigger: "blur" }
- ], },
- billingEndDate: {
- label: '璐︽湡缁撴潫鏃ユ湡',
- rules: [
- {
- required: true,
- message: "璐︽湡缁撴潫鏃ユ湡涓嶈兘涓虹┖", trigger: "blur" }
- ], },
- billGenerateDate: {
- label: '璐﹀崟鐢熸垚鏃ユ湡',
- rules: [
- {
- required: true,
- message: "璐﹀崟鐢熸垚鏃ユ湡涓嶈兘涓虹┖", trigger: "blur" }
- ], },
- billSendDate: {
- label: '璐﹀崟鍙戦�佹棩鏈�',
- },
- billDueDate: {
- label: '璐﹀崟鍒版湡鏃ユ湡',
- rules: [
- {
- required: true,
- message: "璐﹀崟鍒版湡鏃ユ湡涓嶈兘涓虹┖", trigger: "blur" }
- ], },
- status: {
- label: '鐘舵��(draft:鑽夌;generated:宸茬敓鎴�;sent:宸插彂閫�;partial_paid:閮ㄥ垎鏀舵;paid:宸叉敹娆�;cancelled:宸插彇娑�)',
- },
- remark: {
- label: '澶囨敞',
- type: 'textarea', minRows: 3, maxRows: 5,
- },
- createBy: {
- label: '鍒涘缓浜�',
- },
- createTime: {
- label: '鍒涘缓鏃堕棿',
- },
- updateBy: {
- label: '鏇存柊浜�',
- },
- updateTime: {
- label: '鏇存柊鏃堕棿',
- },
- deleted: {
- label: '鍒犻櫎鏍囪(0:姝e父;1:鍒犻櫎)',
- },
- }
- })
+ billName: {
+ label: '璐﹀崟鍚嶇О',
+ minWidth: 150,
+ search: true,
- 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:listReceivableBillManagement,
- getDetailApi:getReceivableBillManagement,
- exportApi:exportReceivableBillManagement,
- deleteApi:delReceivableBillManagement,
- addApi:addReceivableBillManagement,
- updateApi:updateReceivableBillManagement,
- handleUpdateFunc:()=>{
+
+ rules: [
+ {
+ required: true,
+ message: "璐﹀崟鍚嶇О涓嶈兘涓虹┖", trigger: "blur"
+ }
+ ],
+ },
+ customerName: {
+ label: '瀹㈡埛鍚嶇О',
+ minWidth: 150,
+ search: true,
+
+
+ rules: [
+ {
+ required: true,
+ message: "瀹㈡埛鍚嶇О涓嶈兘涓虹┖", trigger: "blur"
+ }
+ ],
+ },
+ // isInternalSettlement: {
+ // label: '鏄惁鍐呴儴缁撶畻',
+ // rules: [
+ // {
+ // required: true,
+ // message: "鏄惁鍐呴儴缁撶畻涓嶈兘涓虹┖", trigger: "blur"
+ // }
+ // ],
+ // },
+ // internalSettlementUnit: {
+ // label: '鍐呴儴缁撶畻鍗曚綅',
+ // },
+ documentCount: {
+ label: '鍗曟嵁鏁伴噺',
+ minWidth: 100,
+
+ },
+ totalAmount: {
+ label: '搴旂粨绠楅噾棰�',
+ minWidth: 100,
+
+ },
+ currency: {
+ label: '甯佸埗',
+ minWidth: 100,
+
+ },
+ discountAmount: {
+ label: '鍑忓厤閲戦',
+ minWidth: 100,
+
+ },
+ receivedAmount: {
+ label: '宸叉敹閲戦',
+ minWidth: 100,
+
+ },
+ pendingAmount: {
+ label: '寰呮敹閲戦',
+ minWidth: 100,
+
+ },
+ // exchangeRate: {
+ // label: '姹囩巼',
+ // },
+ // cnyAmount: {
+ // label: '浜烘皯甯侀噾棰�',
+ // },
+ // 鍦� option 鐨� column 涓慨鏀� periodType
+ periodType: {
+ label: '鍛ㄦ湡绫诲瀷',
+ minWidth: 200, // 澧炲姞瀹藉害浠ュ绾虫棩鏈熻寖鍥�
+
+ },
+ businessStartDateArray: {
+ label: '涓氬姟鏈熼棿',
+ formatter: (row) => {
+ if (row.businessEndDate && row.businessStartDate) {
+ return `${row.businessStartDate} 鑷� ${row.businessEndDate}`;
+ }
+ return row.periodType || '-';
+ }
+ },
+ businessDateArray: {
+ label: '璐﹀崟鍛ㄦ湡',
+ formatter: (row) => {
+ if (row.billingStartDate && row.billingEndDate) {
+ return `${row.billingStartDate} 鑷� ${row.billingEndDate}`;
+ }
+ return row.periodType || '-';
+ }
+ },
+ // businessEndDate: {
+ // label: '涓氬姟鏈熼棿缁撴潫鏃ユ湡',
+ // rules: [
+ // {
+ // required: true,
+ // message: "涓氬姟鏈熼棿缁撴潫鏃ユ湡涓嶈兘涓虹┖", trigger: "blur"
+ // }
+ // ],
+ // },
+ // billingStartDate: {
+ // label: '璐︽湡寮�濮嬫棩鏈�',
+ // rules: [
+ // {
+ // required: true,
+ // message: "璐︽湡寮�濮嬫棩鏈熶笉鑳戒负绌�", trigger: "blur"
+ // }
+ // ],
+ // },
+ // billingEndDate: {
+ // label: '璐︽湡缁撴潫鏃ユ湡',
+ // rules: [
+ // {
+ // required: true,
+ // message: "璐︽湡缁撴潫鏃ユ湡涓嶈兘涓虹┖", trigger: "blur"
+ // }
+ // ],
+ // },
+ billGenerateDate: {
+ label: '璐﹀崟鐢熸垚鏃ユ湡',
+ minWidth: 150,
+
+ rules: [
+ {
+ required: true,
+ message: "璐﹀崟鐢熸垚鏃ユ湡涓嶈兘涓虹┖", trigger: "blur"
+ }
+ ],
+ },
+ billSendDate: {
+ label: '璐﹀崟鍙戦�佹棩鏈�',
+ minWidth: 150,
+
+ },
+ billDueDate: {
+ label: '璐﹀崟鍒版湡鏃ユ湡',
+ minWidth: 150,
+
+ rules: [
+ {
+ required: true,
+ message: "璐﹀崟鍒版湡鏃ユ湡涓嶈兘涓虹┖", trigger: "blur"
+ }
+ ],
+ },
+
+
+ // remark: {
+ // label: '澶囨敞',
+ // type: 'textarea', minRows: 3, maxRows: 5,
+ // },
+ createBy: {
+ label: '鍒涘缓浜�',
+ minWidth: 150,
+
+ },
+ createTime: {
+ label: '鍒涘缓鏃堕棿',
+ minWidth: 200,
+
+ },
+ updateBy: {
+ label: '鏇存柊浜�',
+ minWidth: 150,
+
+ },
+ updateTime: {
+ label: '鏇存柊鏃堕棿',
+ minWidth: 200,
+
+ },
+ status: {
+ label: '鐘舵��',
+ minWidth: 120,
+ fixed: 'right',
+ type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/sys_bill_status',
+ search: true,
+ rules: [
+ {
+ required: true,
+ message: "鐘舵�佷笉鑳戒负绌�", trigger: "blur"
+ }
+ ],
+ },
+ // 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: listReceivableBillManagement,
+ getDetailApi: getReceivableBillManagement,
+ exportApi: exportReceivableBillManagement,
+ deleteApi: delReceivableBillManagement,
+ addApi: addReceivableBillManagement,
+ updateApi: updateReceivableBillManagement,
+ handleUpdateFunc: () => {
crudRef.value.rowEdit(selectionList.value[0]);
},
- handleSelectionChangeFunc:(selection:any)=>{
+ handleSelectionChangeFunc: (selection: any) => {
selectionList.value = selection;
}
})
+const settleDialogRef = ref()
+const currentType = ref<'receivable' | 'payable'>('receivable')
+const ids = ref('')
+const handleSettle = (row) => {
+ currentType.value = 'receivable'
+ ids.value = row.id
+ getReceivableBillManagement(row.id).then((res) => {
+ if (res.code === 200) {
+ settleDialogRef.value.open(res.data)
+ }
+ })
+
+}
+
+
+const handleRefresh = (data) => {
+ console.log(data);
+ // ids.value
+ data.billId = ids.value
+ addReceivableBillSettlementDetail(data).then((res) => {
+ if (res.code == 200) {
+ settleDialogRef.value.openIshpw()
+ proxy.$modal.msgSuccess(res.msg);
+ onLoad(page.value)
+
+ }
+ })
+}
+// 缁撶畻鍘嗗彶寮圭獥寮曠敤
+const historyRef = ref();
+const activeType = ref('receivable');
+/** 鏌ョ湅缁撶畻璁板綍 */
+const handleViewHistory = (row: any) => {
+ // 鍋囪鐖剁粍浠堕�氳繃鏌愮鏂瑰紡鐭ラ亾褰撳墠鏄簲鏀惰繕鏄簲浠橀�昏緫
+ // 鎴栬�呯洿鎺ヤ粠 row 閲岀殑鏌愪釜瀛楁鍒ゆ柇
+ historyRef.value.open(row);
+};
+
+/* 鑾峰彇缁撶畻鍘嗗彶鏁版嵁 */
+// 2. 瀹氫箟寮曠敤鍜岀被鍨�
+const feeDetailRef = ref();
+
+/** 鏌ョ湅璐圭敤鏄庣粏鎸夐挳鐐瑰嚮浜嬩欢 */
+const handleViewFeeDetail = (row: any) => {
+ // 璁剧疆褰撳墠涓氬姟绫诲瀷锛堝簲鏀堕〉闈紶 'receivable'锛屽簲浠橀〉闈紶 'payable'锛�
+ activeType.value = 'receivable';
+ feeDetailRef.value.open(row);
+
+};
+const handleInvalid = (row: any) => {
+ proxy.$modal.confirm(`鏄惁浣滃簾璇ョ郴缁熺紪鍙� 锛�${row.systemNo}?`).then(function () {
+ return receivableBillManagementVoid(row.id);
+ }).then((res) => {
+ onLoad(page.value);
+ proxy.$modal.msgSuccess(res.msg);
+ })
+
+}
+const logModalRef = ref(null);
+const handleFlow = (row: any,) => {
+ // 杩欓噷鍙互浠� row 涓洿鎺ヨ幏鍙栨棩蹇楋紝鎴栬�呰皟鐢ㄥ悗绔帴鍙f煡璇�
+ listReceivableBillManagementLog({billId:row.id}).then((res) => {
+ if (res.code == 200) {
+ logModalRef.value.open(res.rows,'listReceivableBillManagementLog');
+
+ }
+ });
+}
</script>
--
Gitblit v1.8.0