From 075d8b76626b2c830cc3bef11fb32e89d6067a3e Mon Sep 17 00:00:00 2001
From: sen <sen@qq.com>
Date: 星期一, 23 三月 2026 10:34:00 +0800
Subject: [PATCH] 增加应收款分析管理界面
---
ui/admin-ui3/src/components/makeOutInvoice/index.vue | 132 ++++++++++++++++++++++++++++++--------------
1 files changed, 90 insertions(+), 42 deletions(-)
diff --git a/ui/admin-ui3/src/components/makeOutInvoice/index.vue b/ui/admin-ui3/src/components/makeOutInvoice/index.vue
index 505e202..e100c94 100644
--- a/ui/admin-ui3/src/components/makeOutInvoice/index.vue
+++ b/ui/admin-ui3/src/components/makeOutInvoice/index.vue
@@ -1,10 +1,5 @@
<template>
- <el-dialog
- v-model="visible"
- :title="dialogTitle"
- width="1200px"
- destroy-on-close
- >
+ <el-dialog v-model="visible" :title="dialogTitle" width="1200px" destroy-on-close>
<el-descriptions title="璐﹀崟鍩烘湰淇℃伅" :column="3" border class="mb-5">
<el-descriptions-item label="绯荤粺缂栧彿">{{ billInfo.systemNo }}</el-descriptions-item>
<el-descriptions-item label="璐﹀崟鍚嶇О">{{ billInfo.billName }}</el-descriptions-item>
@@ -12,30 +7,29 @@
{{ type.includes('搴旀敹') ? billInfo.customerName : billInfo.supplierName }}
</el-descriptions-item>
<el-descriptions-item label="鍗曟嵁鏁伴噺">{{ billInfo.documentCount }}</el-descriptions-item>
- <el-descriptions-item label="搴旂粨绠楅噾棰�"><span class="text-bold">{{ billInfo.totalAmount }}</span></el-descriptions-item>
+ <el-descriptions-item label="搴旂粨绠楅噾棰�"><span class="text-bold">{{ billInfo.totalAmount
+ }}</span></el-descriptions-item>
<el-descriptions-item label="甯佸埗">{{ billInfo.currency }}</el-descriptions-item>
<el-descriptions-item label="鍑忓厤閲戦">{{ billInfo.discountAmount }}</el-descriptions-item>
- <el-descriptions-item :label="type.includes('搴旀敹') ? '宸叉敹閲戦' : '宸蹭粯閲戦'">{{ billInfo.receivedAmount }}</el-descriptions-item>
+ <el-descriptions-item :label="type.includes('搴旀敹') ? '宸叉敹閲戦' : '宸蹭粯閲戦'">{{ billInfo.receivedAmount
+ }}</el-descriptions-item>
<el-descriptions-item :label="type.includes('搴旀敹') ? '寰呮敹閲戦' : '寰呬粯閲戦'">
<span class="text-danger">{{ billInfo.pendingAmount }}</span>
</el-descriptions-item>
- <el-descriptions-item label="鍛ㄦ湡绫诲瀷">{{ billInfo.periodType }}</el-descriptions-item>
- <el-descriptions-item label="涓氬姟鏈熼棿">{{ billInfo.businessStartDate }} ~ {{ billInfo.businessEndDate }}</el-descriptions-item>
- <el-descriptions-item label="璐﹀崟鍛ㄦ湡">{{ billInfo.billingStartDate }} ~ {{ billInfo.billingEndDate }}</el-descriptions-item>
+
+ <el-descriptions-item label="鍛ㄦ湡绫诲瀷">{{ dictFormat(sys_period_type,billInfo.periodType) }}</el-descriptions-item>
+ <el-descriptions-item label="涓氬姟鏈熼棿">{{ billInfo.businessStartDate }} ~ {{ billInfo.businessEndDate
+ }}</el-descriptions-item>
+ <el-descriptions-item label="璐﹀崟鍛ㄦ湡">{{ billInfo.billingStartDate }} ~ {{ billInfo.billingEndDate
+ }}</el-descriptions-item>
</el-descriptions>
- <div v-if="InvoiceDetails !== '寮�绁ㄦ槑缁�'" class="section-header">
+ <div v-if="InvoiceDetails !== '寮�绁ㄦ槑缁�'" class="section-header">
<h3 class="section-title">鍙戠エ鍟嗗搧鏄庣粏</h3>
- <el-button
-
- type="primary"
- size="small"
- icon="Plus"
- @click="addItemRow"
- >鏂板</el-button>
+ <el-button type="primary" size="small" icon="Plus" @click="addItemRow">鏂板</el-button>
</div>
-
- <el-table v-if="InvoiceDetails !== '寮�绁ㄦ槑缁�'" :data="form.invoiceBillDetails" border class="mb-5">
+
+ <el-table v-if="InvoiceDetails !== '寮�绁ㄦ槑缁�'" :data="form.invoiceBillDetails" border class="mb-5">
<el-table-column label="鍟嗗搧鍚嶇О" prop="goodsName">
<template #default="{ row }">
<el-input v-if="!row.isSaved && InvoiceDetails !== '寮�绁ㄦ槑缁�'" v-model="row.goodsName" placeholder="鍟嗗搧鍚嶇О" />
@@ -44,7 +38,8 @@
</el-table-column>
<el-table-column label="鍗曚环" prop="price" width="200">
<template #default="{ row }">
- <el-input-number v-if="!row.isSaved && InvoiceDetails !== '寮�绁ㄦ槑缁�'" v-model="row.price" :precision="2" style="width:100%" />
+ <el-input-number v-if="!row.isSaved && InvoiceDetails !== '寮�绁ㄦ槑缁�'" v-model="row.price" :precision="2"
+ style="width:100%" />
<span v-else>{{ row.price }}</span>
</template>
</el-table-column>
@@ -70,8 +65,16 @@
<el-form ref="formRef" :model="form" :rules="formRules" label-width="130px">
<el-row :gutter="20">
<el-col :span="8">
- <el-form-item label="鎶ご鍏徃" prop="invoiceCompanyName">
+ <!-- <el-form-item label="鎶ご鍏徃" prop="invoiceCompanyName">
<el-input v-model="form.invoiceCompanyName" placeholder="璇疯緭鍏�" />
+ </el-form-item> -->
+ <el-form-item label="鎶ご鍏徃" prop="invoiceCompanyName">
+ <el-input v-model="form.invoiceCompanyName" @click="openBankDialog" readonly
+ placeholder="璇疯緭鍏ユ姮澶村叕鍙�">
+ <template #append>
+ <el-button icon="Search" @click="openBankDialog" />
+ </template>
+ </el-input>
</el-form-item>
</el-col>
<el-col :span="8">
@@ -86,15 +89,18 @@
</el-select>
</el-form-item>
</el-col>
- <el-col :span="8"><el-form-item label="寮�鎴烽摱琛�"><el-input v-model="form.invoiceBankName" /></el-form-item></el-col>
+ <el-col :span="8"><el-form-item label="寮�鎴烽摱琛�"><el-input
+ v-model="form.invoiceBankName" /></el-form-item></el-col>
<el-col :span="8"><el-form-item label="鍩烘湰璐﹀彿"><el-input v-model="form.invoiceBankNo" /></el-form-item></el-col>
- <el-col :span="8"><el-form-item label="宸插紑绁ㄩ噾棰�"><el-input v-model="billInfo.invoicedAmount" disabled /></el-form-item></el-col>
+ <el-col :span="8"><el-form-item label="宸插紑绁ㄩ噾棰�"><el-input v-model="billInfo.invoicedAmount"
+ disabled /></el-form-item></el-col>
<el-col :span="8">
<el-form-item label="鏈寮�绁ㄩ噾棰�" prop="currentInvoicedAmount">
<el-input-number v-model="form.currentInvoicedAmount" disabled :precision="2" style="width:100%" />
</el-form-item>
</el-col>
- <el-col :span="16"><el-form-item label="鍙戠エ澶囨敞"><el-input v-model="form.invoiceRemark" type="textarea" /></el-form-item></el-col>
+ <el-col :span="16"><el-form-item label="鍙戠エ澶囨敞"><el-input v-model="form.invoiceRemark"
+ type="textarea" /></el-form-item></el-col>
</el-row>
</el-form>
</template>
@@ -110,7 +116,8 @@
<el-table-column label="璐拱鏂瑰悕绉�" prop="buyerName" align="center" />
<el-table-column label="閿�鍞柟鍚嶇О" prop="sellerName" align="center" />
</el-table>
- <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="fetchRecords" />
+ <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
+ v-model:limit="queryParams.pageSize" @pagination="fetchRecords" />
</template>
<template #footer>
@@ -118,20 +125,26 @@
<el-button @click="openIshpw">鍏抽棴</el-button>
</template>
</el-dialog>
+
+ <invoiceManagementDialog v-model:visible="supplierBankIsible" :default-selected-id="form.invoiceInfoId"
+ @confirm="handleBankCardfirm" />
</template>
<script setup lang="ts">
-import { ref, reactive, computed,watch } from 'vue'
+import { ref, reactive, computed, watch } from 'vue'
import useCurrentInstance from "@/utils/useCurrentInstance";
+import invoiceManagementDialog from "../invoiceManagementDialog/index.vue";
const { proxy } = useCurrentInstance();
-const { sys_invoice_type } = proxy.useDict('sys_invoice_type');
+const { sys_invoice_type,sys_period_type } = proxy.useDict('sys_invoice_type','sys_period_type');
const props = defineProps<{
type: string, // '搴旀敹璐﹀崟寮�绁�' 绛�
InvoiceDetails: string // '鏈寮�绁ㄤ俊鎭�' 鎴� '寮�绁ㄦ槑缁�'
}>()
-
+const dictFormat = (dict: any, value: any) => {
+ return proxy.selectDictLabel(dict, value);
+}
const visible = ref(false)
const loading = ref(false)
const billInfo = ref<any>({})
@@ -174,7 +187,7 @@
billInfo.value = row;
recordList.value = row.recordList || [];
queryParams.billId = row.id;
-
+
if (props.InvoiceDetails === '寮�绁ㄦ槑缁�') {
fetchRecords();
} else {
@@ -185,11 +198,11 @@
// 5. 鏂板琛屽垵濮嬪寲
const addItemRow = () => {
- form.invoiceBillDetails.push({
- goodsName: '',
- price: 0,
- withTaxFlag: 0,
- isSaved: false
+ form.invoiceBillDetails.push({
+ goodsName: '',
+ price: 0,
+ withTaxFlag: 0,
+ isSaved: false
});
}
const emit = defineEmits(['success']);
@@ -246,13 +259,48 @@
const openIshpw = () => {
visible.value = false;
}
-defineExpose({ open,openIshpw })
+const supplierBankIsible = ref(false);
+
+const openBankDialog = () => {
+ supplierBankIsible.value = true;
+}
+const handleBankCardfirm = (data) => {
+ form.invoiceCompanyName = data.invoiceCompanyName;
+ form.invoiceCreditCode = data.invoiceCreditCode;
+ form.invoiceType = data.invoiceType;
+ form.invoiceBankName = data.invoiceBankName;
+ form.invoiceBankNo = data.invoiceBankNo;
+ form.invoiceInfoId = data.id; // 寤鸿鍦� formData 澧炲姞姝� ID 瀛楁鐢ㄤ簬鍥炴樉
+};
+// 寮圭獥鏄剧ず鐘舵��
+defineExpose({ open, openIshpw })
</script>
<style scoped>
-.mb-5 { margin-bottom: 20px; }
-.section-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; }
-.section-title { font-size: 16px; font-weight: bold; border-left: 4px solid #409eff; padding-left: 10px; margin: 15px 0; }
-.text-bold { font-weight: bold; }
-.text-danger { color: #f56c6c; }
+.mb-5 {
+ margin-bottom: 20px;
+}
+
+.section-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-bottom: 10px;
+}
+
+.section-title {
+ font-size: 16px;
+ font-weight: bold;
+ border-left: 4px solid #409eff;
+ padding-left: 10px;
+ margin: 15px 0;
+}
+
+.text-bold {
+ font-weight: bold;
+}
+
+.text-danger {
+ color: #f56c6c;
+}
</style>
\ No newline at end of file
--
Gitblit v1.8.0