From 239f117fab7b05566914fb3f4f445203f08ded3d Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期三, 27 八月 2025 13:19:06 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_JLMY' into dev_JLMY

---
 src/api/salesManagement/invoiceLedger.js                                |   92 +++++++
 src/api/salesManagement/salesLedger.js                                  |  111 ++++++++
 src/views/salesOutbound/index.vue                                       |  157 ++++++++++++
 src/views/personnelManagement/contractManagement/components/formDia.vue |    9 
 src/views/personnelManagement/contractManagement/filesDia.vue           |   16 +
 src/api/salesManagement/invoiceRegistration.js                          |   54 ++++
 src/views/accountReceivableLedger/index.vue                             |  224 +++++++++++++++++
 src/api/salesManagement/receiptPayment.js                               |   84 ++++++
 8 files changed, 743 insertions(+), 4 deletions(-)

diff --git a/src/api/salesManagement/invoiceLedger.js b/src/api/salesManagement/invoiceLedger.js
new file mode 100644
index 0000000..6a54493
--- /dev/null
+++ b/src/api/salesManagement/invoiceLedger.js
@@ -0,0 +1,92 @@
+// 寮�绁ㄥ彴璐﹂〉闈㈡帴鍙�
+import request from '@/utils/request'
+
+// 鍒嗛〉鏌ヨ
+export function invoiceLedgerList(query) {
+    return request({
+        url: '/invoiceLedger/page',
+        method: 'get',
+        params: query
+    })
+}
+
+// 鏂板
+export function invoiceLedgerSaveOrUpdate(query) {
+    return request({
+        url: '/invoiceLedger/saveOrUpdate',
+        method: 'post',
+        data: query
+    })
+}
+
+// 寮�绁ㄥ彴璐﹀垹闄�
+export function invoiceLedgerDel(query) {
+    return request({
+        url: '/invoiceLedger/del',
+        method: 'delete',
+        data: query
+    })
+}
+
+// 璇︽儏鏌ヨ
+export function invoiceLedgerDetail(query) {
+    return request({
+        url: '/invoiceLedger/info',
+        method: 'get',
+        params: query
+    })
+}
+
+// 闄勪欢鎻愪氦
+export function commitFile(query) {
+    return request({
+        url: '/invoiceLedger/commitFile',
+        method: 'post',
+        data: query
+    })
+}
+
+// 寮�绁ㄥ彴璐﹂儴鍒嗕篃鏌ヨ
+export function invoiceLedgerListNoPage(query) {
+    return request({
+        url: '/invoiceLedger/list',
+        method: 'get',
+        data: query
+    })
+}
+
+// 鍒嗛〉鏌ヨ
+export function invoiceLedgerSalesAccount(query) {
+    return request({
+        url: '/invoiceLedger/salesAccount',
+        method: 'get',
+        params: query
+    })
+}
+
+// 浜у搧寮�绁ㄨ褰曞垎椤垫煡璇�
+export function registrationProductPage(query) {
+    return request({
+        url: '/invoiceLedger/registrationProductPage',
+        method: 'get',
+        params: query
+    })
+}
+
+// 浜у搧寮�绁ㄨ鎯呮煡璇�
+export function invoiceLedgerProductInfo(query) {
+    return request({
+        url: '/invoiceLedger/invoiceLedgerProductInfo',
+        method: 'get',
+        params: query
+    })
+}
+
+export function delInvoiceLedgerByRegProductId(invoiceRegistrationProductId) {
+    return request({
+        url: '/invoiceLedger/delInvoiceLedger/'+ invoiceRegistrationProductId,
+        method: 'delete'
+    })
+}
+
+
diff --git a/src/api/salesManagement/invoiceRegistration.js b/src/api/salesManagement/invoiceRegistration.js
new file mode 100644
index 0000000..4bc33ce
--- /dev/null
+++ b/src/api/salesManagement/invoiceRegistration.js
@@ -0,0 +1,54 @@
+// 閿�鍞彴璐﹂〉闈㈡帴鍙�
+import request from '@/utils/request'
+
+// 鍒嗛〉鏌ヨ
+export function invoiceRegistrationList(query) {
+    return request({
+        url: '/invoiceRegistration/listPage',
+        method: 'get',
+        params: query
+    })
+}
+// 寮�绁ㄧ櫥璁版柊澧�
+export function invoiceRegistrationSave(query) {
+    return request({
+        url: '/invoiceRegistration/save',
+        method: 'post',
+        data: query
+    })
+}
+// 寮�绁ㄧ櫥璁板垹闄�
+export function invoiceRegistrationDel(query) {
+    return request({
+        url: '/invoiceRegistration/del',
+        method: 'delete',
+        data: query
+    })
+}
+// 瀛愯〃鏍兼煡璇�
+export function productList(query) {
+    return request({
+        url: '/invoiceRegistration/productList',
+        method: 'get',
+        params: query
+    })
+}
+
+// 寮�绁ㄧ櫥璁拌鎯�
+export function invoiceRegistrationDetail(query) {
+    return request({
+        url: '/invoiceRegistration/detail',
+        method: 'get',
+        params: query
+    })
+}
+
+// 瀵煎嚭寮�绁ㄧ櫥璁�
+export function invoiceRegistrationExport(query) {
+    return request({
+        url: '/invoiceRegistration/export',
+        method: 'get',
+        params: query,
+        responseType: 'blob'
+    })
+}
diff --git a/src/api/salesManagement/receiptPayment.js b/src/api/salesManagement/receiptPayment.js
new file mode 100644
index 0000000..b5d0cf5
--- /dev/null
+++ b/src/api/salesManagement/receiptPayment.js
@@ -0,0 +1,84 @@
+// 寮�绁ㄧ櫥璁伴〉闈㈡帴鍙�
+import request from '@/utils/request'
+
+// 鏂板/淇敼
+export function receiptPaymentSaveOrUpdate(query) {
+    return request({
+        url: '/receiptPayment/saveOrUpdate',
+        method: 'post',
+        data: query
+    })
+}
+
+// 瀹㈡埛寰�鏉ヨ褰曟煡璇�
+export function customerInteractions(query) {
+    return request({
+        url: '/receiptPayment/customerInteractions',
+        method: 'get',
+        params: query
+    })
+}
+
+// 璇︽儏
+export function receiptPaymentInfo(query) {
+    return request({
+        url: '/receiptPayment/info',
+        method: 'get',
+        params: query
+    })
+}
+
+// 鍒犻櫎
+export function receiptPaymentDel(query) {
+    return request({
+        url: '/receiptPayment/del',
+        method: 'delete',
+        data: query
+    })
+}
+
+// 鏌ヨ宸茬粡缁戝畾鍙戠エ鐨勫紑绁ㄥ彴璐�
+export function bindInvoiceNoRegPage(query) {
+    return request({
+        url: '/receiptPayment/bindInvoiceNoRegPage',
+        method: 'get',
+        params: query
+    })
+}
+
+// 寮�绁ㄥ彴璐﹁鎯�
+export function invoiceInfo(query) {
+    return request({
+        url: '/receiptPayment/invoiceInfo',
+        method: 'get',
+        params: query
+    })
+}
+
+// 璇㈠洖娆捐褰�
+export function receiptPaymentHistoryList(query) {
+    return request({
+        url: '/receiptPayment/receiptPaymentHistoryList',
+        method: 'get',
+        params: query
+    })
+}
+
+/**
+ * 鏌ヨ鍥炴璁板綍鍒嗛〉鏌ヨ
+ */
+export function receiptPaymentHistoryListPage(query) {
+    return request({
+        url: '/receiptPayment/receiptPaymentHistoryListPage',
+        method: 'get',
+        params: query
+    })
+}
+
+export function receiptPaymentHistoryListNoPage(query) {
+    return request({
+        url: '/receiptPayment/receiptPaymentHistoryListNoPage',
+        method: 'get',
+        params: query
+    })
+}
diff --git a/src/api/salesManagement/salesLedger.js b/src/api/salesManagement/salesLedger.js
new file mode 100644
index 0000000..3a2fa22
--- /dev/null
+++ b/src/api/salesManagement/salesLedger.js
@@ -0,0 +1,111 @@
+// 閿�鍞彴璐﹂〉闈㈡帴鍙�
+import request from "@/utils/request";
+
+// 鍒嗛〉鏌ヨ
+export function ledgerList(query) {
+  return request({
+    url: "/sales/ledger/list",
+    method: "get",
+    params: query,
+  });
+}
+// 瀛愯〃鏍兼煡璇�
+export function productList(query) {
+  return request({
+    url: "/sales/product/list",
+    method: "get",
+    params: query,
+  });
+}
+// 鏌ヨ瀹㈡埛鍚嶇О鍒楄〃
+export function customerList(query) {
+  return request({
+    url: "/basic/customer/customerList",
+    method: "get",
+    params: query,
+  });
+}
+// 鏂板銆佷慨鏀归攢鍞彴璐�
+export function addOrUpdateSalesLedger(query) {
+  return request({
+    url: "/sales/ledger/addOrUpdateSalesLedger",
+    method: "post",
+    data: query,
+  });
+}
+// 鍒犻櫎閿�鍞彴璐�
+export function delLedger(query) {
+  return request({
+    url: "/sales/ledger/delLedger",
+    method: "delete",
+    data: query,
+  });
+}
+// 鏌ヨ閿�鍞彴璐﹁鎯�
+export function getSalesLedgerWithProducts(query) {
+  return request({
+    url: "/sales/ledger/getSalesLedgerWithProducts",
+    method: "get",
+    params: query,
+  });
+}
+// 瀹炴椂淇敼浜у搧淇℃伅
+export function addOrUpdateSalesLedgerProduct(query) {
+  return request({
+    url: "/sales/product/addOrUpdateSalesLedgerProduct",
+    method: "post",
+    data: query,
+  });
+}
+// 鍒犻櫎浜у搧
+export function delProduct(query) {
+  return request({
+    url: "/sales/product/delProduct",
+    method: "delete",
+    data: query,
+  });
+}
+// 涓婁紶闄勪欢
+export function upload(query) {
+  return request({
+    url: "/file/upload",
+    method: "post",
+    data: query,
+    responseType: "blob",
+  });
+}
+// 缂栬緫鏃跺垹闄ら檮浠�
+export function delLedgerFile(query) {
+  return request({
+    url: "/sales/ledger/delLedgerFile",
+    method: "delete",
+    data: query,
+  });
+}
+
+// 閿�鍞笉鍒嗛〉鏌ヨ
+export function ledgerListNoPage(query) {
+  return request({
+    url: "/sales/ledger/listNoPage",
+    method: "get",
+    params: query,
+  });
+}
+
+// 鍒嗛〉鏌ヨ
+export function ledgerListPage(query) {
+  return request({
+    url: "/sales/ledger/listPage",
+    method: "get",
+    params: query,
+  });
+}
+
+// 鏍规嵁閿�鍞悎鍚屽彿鏌ヤ骇鍝佷俊鎭�
+export function getProductInfoByContractNo(query) {
+  return request({
+    url: "/purchase/ledger/getProductBySalesNo",
+    method: "get",
+    params: query,
+  });
+}
diff --git a/src/views/accountReceivableLedger/index.vue b/src/views/accountReceivableLedger/index.vue
new file mode 100644
index 0000000..0dc1a0a
--- /dev/null
+++ b/src/views/accountReceivableLedger/index.vue
@@ -0,0 +1,224 @@
+<template>
+  <div class="app-container">
+    <el-form :model="searchForm" :inline="true">
+      <el-form-item label="瀹㈡埛鍚嶇О">
+        <el-input
+          v-model="searchForm.customer"
+          placeholder="杈撳叆瀹㈡埛鍚嶇О鎼滅储"
+          @change="handleQuery"
+          clearable
+          :prefix-icon="Search"
+        />
+      </el-form-item>
+      <el-form-item label="鐓ょ">
+        <el-input
+          v-model="searchForm.coal"
+          placeholder="杈撳叆鐓ょ"
+          @change="handleQuery"
+          clearable
+          :prefix-icon="Search"
+        />
+      </el-form-item>
+      <!-- <el-form-item label="椤圭洰鍚嶇О">
+        <el-input
+          v-model="searchForm.projectName"
+          placeholder="杈撳叆椤圭洰鍚嶇О"
+          @change="handleQuery"
+          clearable
+          :prefix-icon="Search"
+        />
+      </el-form-item> -->
+      <el-form-item label="搴旀敹鏃ユ湡">
+        <el-date-picker
+          v-model="searchForm.receiptPaymentDate"
+          value-format="YYYY-MM-DD"
+          format="YYYY-MM-DD"
+          type="daterange"
+          start-placeholder="寮�濮嬫椂闂�"
+          end-placeholder="缁撴潫鏃堕棿"
+          clearable
+          style="width: 300px"
+          @change="changeDateRange"
+          @clear="clearRange"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" @click="handleQuery"> 鎼滅储 </el-button>
+      </el-form-item>
+    </el-form>
+    <div class="table_list">
+      <PIMTable
+        rowKey="id"
+        :column="tableColumn"
+        :tableData="tableData"
+        :page="page"
+        :isSelection="true"
+        :isShowSummary="isShowSummarySon"
+        :summaryMethod="summarizeMainTable1"
+        :tableLoading="tableLoading"
+        :total="page.total"
+        @pagination="pagination"
+        @selection-change="handleSelectionChange"
+      ></PIMTable>
+    </div>
+  </div>
+</template>
+
+<script setup>
+import { ref } from "vue";
+import { Search } from "@element-plus/icons-vue";
+import { receiptPaymentHistoryListPage } from "@/api/salesManagement/receiptPayment.js";
+import PIMTable from "@/components/PIMTable/PIMTable.vue";
+import useFormData from "@/hooks/useFormData";
+import dayjs from "dayjs";
+
+const { proxy } = getCurrentInstance();
+const tableColumn = ref([
+  {
+    label: "瀹㈡埛鍚嶇О",
+    prop: "customer",
+    width:300
+  },
+  {
+    label: "鐓ょ",
+    prop: "coal",
+    width:240
+  },
+  {
+    label: "搴旀敹鏃ユ湡",
+    prop: "receiptPaymentDate",
+    width:300
+  },
+  // {
+  //   label: "瀹㈡埛鍚嶇О",
+  //   prop: "customerName",
+  //   width:240
+  // },
+  // {
+  //   label: "椤圭洰鍚嶇О",
+  //   prop: "projectName",
+  //   width:200
+  // },
+  {
+    label: "搴旀敹閲戦锛堝厓锛�",
+    prop: "receiptPaymentAmount",
+    width:200,
+    formatData: (params) => {
+      return params ? parseFloat(params).toFixed(2) : 0;
+    },
+  },
+  {
+    label: "搴旀敹鏂瑰紡",
+    prop: "receiptPaymentType",
+    width:200,
+    dataType: "tag",
+    formatData: (params) => {
+      if (params == 0) {
+        return "鐢垫眹";
+      } else if (params == 1) {
+        return "鎵垮厬";
+      } else {
+        return null;
+      }
+    },
+    formatType: (params) => {
+      return "info";
+    },
+  },
+  {
+    label: "鐧昏浜�",
+    prop: "registrant",
+    width:200
+  },
+  {
+    label: "鐧昏鏃ユ湡",
+    prop: "createTime",
+    width:300
+  },
+]);
+const tableData = ref([]);
+const selectedRows = ref([]);
+const tableLoading = ref(false);
+const page = reactive({
+  current: 1,
+  size: 100,
+	total: 0,
+});
+const total = ref(0);
+
+const { form: searchForm } = useFormData({
+  searchText: undefined,
+  receiptPaymentDate: [
+    dayjs().startOf("month").format("YYYY-MM-DD"),
+    dayjs().endOf("month").format("YYYY-MM-DD"),
+  ],
+  receiptPaymentDateStart: dayjs()
+    .startOf("month")
+    .format("YYYY-MM-DD 00:00:00"),
+  receiptPaymentDateEnd: dayjs().endOf("month").format("YYYY-MM-DD 23:59:59"),
+  customerContractNo: undefined,
+  projectName: undefined,
+});
+const { receipt_payment_type } = proxy.useDict("receipt_payment_type");
+const isShowSummarySon = ref(true);
+// 鏌ヨ鍒楄〃
+/** 鎼滅储鎸夐挳鎿嶄綔 */
+const handleQuery = () => {
+  page.current = 1;
+  getList();
+};
+const pagination = (obj) => {
+  page.current = obj.page;
+  page.size = obj.limit;
+  getList();
+};
+const getList = () => {
+  tableLoading.value = true;
+  const { receiptPaymentDate, ...rest } = searchForm;
+  receiptPaymentHistoryListPage({ ...rest, ...page }).then((res) => {
+    tableLoading.value = false;
+    tableData.value = res.records;
+		page.total = res.total;
+  });
+};
+// 瀛愯〃鍚堣鏂规硶
+const summarizeMainTable1 = (param) => {
+  return proxy.summarizeTable(param, ["receiptPaymentAmount"], {
+    ticketsNum: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
+    futureTickets: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
+  });
+};
+// 琛ㄦ牸閫夋嫨鏁版嵁
+const handleSelectionChange = (selection) => {
+  selectedRows.value = selection;
+};
+
+const changeDateRange = (date) => {
+  if (date) {
+    searchForm.receiptPaymentDateStart = dayjs(date[0]).format(
+      "YYYY-MM-DD 00:00:00"
+    );
+    searchForm.receiptPaymentDateEnd = dayjs(date[1]).format(
+      "YYYY-MM-DD 23:59:59"
+    );
+    getList();
+  }
+};
+
+const clearRange = () => {
+  searchForm.receiptPaymentDate = [];
+  searchForm.receiptPaymentDateStart = undefined;
+  searchForm.receiptPaymentDateEnd = undefined;
+  getList();
+};
+
+onMounted(() => {
+  getList();
+});
+</script>
+
+<style scoped lang="scss">
+.table_list {
+  margin-top: unset;
+}
+</style>
diff --git a/src/views/personnelManagement/contractManagement/components/formDia.vue b/src/views/personnelManagement/contractManagement/components/formDia.vue
index fdea8ab..1770ad3 100644
--- a/src/views/personnelManagement/contractManagement/components/formDia.vue
+++ b/src/views/personnelManagement/contractManagement/components/formDia.vue
@@ -18,6 +18,14 @@
           <el-button @click="closeDia">鍙栨秷</el-button>
         </div>
       </template>
+      <fileUpload
+        ref="fileUploadRef"
+        :fileSize="1024"
+        :fileType="['pdf', 'docx', 'txt', 'xlsx', 'pptx....']"
+        :limit="10"
+        :drag="false"
+        v-model:modelValue="modelValue"
+    />
     </el-dialog>
   </div>
 </template>
@@ -26,6 +34,7 @@
 import {ref} from "vue";
 import {staffOnJobInfo} from "@/api/personnelManagement/employeeRecord.js";
 import PIMTable from "@/components/PIMTable/PIMTable.vue";
+import fileUpload from "@/components/FileUpload/index.vue";
 const { proxy } = getCurrentInstance()
 const emit = defineEmits(['close'])
 
diff --git a/src/views/personnelManagement/contractManagement/filesDia.vue b/src/views/personnelManagement/contractManagement/filesDia.vue
index b797d2f..4734717 100644
--- a/src/views/personnelManagement/contractManagement/filesDia.vue
+++ b/src/views/personnelManagement/contractManagement/filesDia.vue
@@ -6,7 +6,7 @@
         width="50%"
         @close="closeDia"
     >
-      <div style="margin-bottom: 10px;text-align: right">
+      <!-- <div style="margin-bottom: 10px;text-align: right">
         <el-upload
             v-model:file-list="fileList"
             class="upload-demo"
@@ -20,6 +20,7 @@
         >
           <el-button type="primary">涓婁紶闄勪欢</el-button>
         </el-upload>
+
         <el-button type="danger" plain @click="handleDelete">鍒犻櫎</el-button>
       </div>
       <PIMTable
@@ -39,12 +40,20 @@
 				:total="total"
 				:page="page.current"
 				:limit="page.size"
-			/>
+			/> -->
       <template #footer>
         <div class="dialog-footer">
           <el-button @click="closeDia">鍙栨秷</el-button>
         </div>
       </template>
+      <fileUpload
+        ref="fileUploadRef"
+        :fileSize="1024"
+        :fileType="['pdf', 'docx', 'txt', 'xlsx', 'pptx....']"
+        :limit="10"
+        :drag="false"
+        v-model:modelValue="modelValue"
+    />
     </el-dialog>
     <filePreview ref="filePreviewRef" />
   </div>
@@ -62,6 +71,7 @@
   fileListPage
 } from "@/api/financialManagement/revenueManagement.js";
 import Pagination from "@/components/PIMTable/Pagination.vue";
+import fileUpload from "@/components/FileUpload/index.vue";
 const { proxy } = getCurrentInstance()
 const emit = defineEmits(['close'])
 
@@ -108,7 +118,7 @@
 const headers = ref({
   Authorization: "Bearer " + getToken(),
 });
-const uploadUrl = ref(import.meta.env.VITE_APP_BASE_API + "/file/upload"); // 涓婁紶鐨勫浘鐗囨湇鍔″櫒鍦板潃
+// const uploadUrl = ref(import.meta.env.VITE_APP_BASE_API + "/file/upload"); // 涓婁紶鐨勫浘鐗囨湇鍔″櫒鍦板潃
 
 // 鎵撳紑寮规
 const openDialog = (row,type) => {
diff --git a/src/views/salesOutbound/index.vue b/src/views/salesOutbound/index.vue
index fef7e86..8f06840 100644
--- a/src/views/salesOutbound/index.vue
+++ b/src/views/salesOutbound/index.vue
@@ -37,6 +37,7 @@
       </el-tabs>
       <!-- 鎿嶄綔鎸夐挳鍖� -->
       <el-space>
+        <el-button type="primary" @click="openForm('add')">鏂板搴旀敹</el-button>
         <el-button type="primary" :icon="Plus" @click="openDia(undefined, 'add')">鏂板缓</el-button>
         <el-button type="danger" :icon="Delete" @click="handleDelete">鍒犻櫎</el-button>
         <el-button type="info" plain :icon="Download" @click="handleExport">瀵煎嚭</el-button>
@@ -65,18 +66,136 @@
       />
     </el-card>
     <form-dia ref="formDia" @closeDia="handleQuery"></form-dia>
+    
+    <!-- 鏂板搴旀敹寮圭獥 -->
+    <el-dialog
+      v-model="dialogFormVisible"
+      title="鏂板搴旀敹"
+      width="70%"
+      @close="closeDia"
+    >
+      <el-form
+        :model="former"
+        label-width="140px"
+        label-position="top"
+        :rules="rules"
+        ref="formRef"
+      >
+        <el-row :gutter="30">
+          <el-col :span="12">
+            <el-form-item label="瀹㈡埛鍚嶇О锛�" prop="customer">
+              <el-input
+                v-model="former.customer"
+                placeholder="鑷姩濉厖"
+                disabled
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="鐓ょ锛�" prop="coal">
+              <el-input
+                v-model="former.coal"
+                placeholder="鑷姩濉厖"
+                disabled
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          <el-col :span="12">
+            <el-form-item label="閿�鍞�婚噾棰�(鍏�)锛�" prop="totalAmount">
+              <el-input
+                type="number"
+                v-model="former.totalAmount"
+                placeholder="鑷姩濉厖"
+                :step="0.01"
+                disabled
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="鏈搴旀敹閲戦锛�" prop="receiptPaymentAmount">
+              <el-input-number :step="0.01" :min="0" style="width: 100%"
+															 :precision="2"
+                v-model="former.receiptPaymentAmount"
+                placeholder="璇疯緭鍏�"
+                clearable
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          <el-col :span="12">
+            <el-form-item label="鍥炴褰㈠紡锛�" prop="receiptPaymentType">
+              <el-select
+                v-model="former.receiptPaymentType"
+                placeholder="璇烽�夋嫨"
+                clearable
+              >
+                <el-option
+                  v-for="item in receipt_payment_type"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="鐧昏浜猴細" prop="registrant">
+              <el-input
+                v-model="former.registrant"
+                placeholder="璇疯緭鍏�"
+                clearable
+                disabled
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          <el-col :span="12">
+            <el-form-item label="鏉ユ鏃ユ湡锛�" prop="receiptPaymentDate">
+              <el-date-picker
+                style="width: 100%"
+                v-model="former.receiptPaymentDate"
+                value-format="YYYY-MM-DD"
+                format="YYYY-MM-DD"
+                type="date"
+                placeholder="璇烽�夋嫨"
+                clearable
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary" @click="submitForm">纭</el-button>
+          <el-button @click="closeDia">鍙栨秷</el-button>
+        </div>
+      </template>
+    </el-dialog>
   </div>
 </template>
 
 <script setup>
-import {ref, reactive, onMounted} from "vue";
+import {ref, reactive, onMounted, nextTick} from "vue";
 const { proxy } = getCurrentInstance()
+const { receipt_payment_type } = proxy.useDict("receipt_payment_type");
 import {Delete, Download, Plus} from "@element-plus/icons-vue";
 import { ElMessage } from "element-plus";
 import ETable from "@/components/Table/ETable.vue";
 import Pagination from "@/components/Pagination/index.vue";
 import FormDia from "@/views/salesOutbound/components/formDia.vue";
 import {delSalesRecord, salesRecordList} from "@/api/salesOutbound/index.js";
+import {
+  receiptPaymentSaveOrUpdate,
+  bindInvoiceNoRegPage,
+  invoiceInfo,
+  receiptPaymentHistoryListNoPage,
+  receiptPaymentDel,
+} from "@/api/salesManagement/receiptPayment.js";
+
 
 const formDia = ref()
 const activeTab = ref("out");
@@ -87,6 +206,7 @@
 // 琛ㄦ牸鏁版嵁
 const operationsArr = ref(['edit', 'viewRow']);
 const tableLoading = ref(false);
+const dialogFormVisible = ref(false);
 const tableData = ref([]);
 const columns = ref([
   { prop: "saleDate", label: "閿�鍞棩鏈�", minWidth: 160 },
@@ -111,6 +231,8 @@
 const total = ref(0);
 const pageNum = ref(1);
 const pageSize = ref(10);
+const former = ref({})
+
 // 鏌ヨ鍙傛暟
 const queryParams = reactive({
 	saleDate: "",
@@ -200,6 +322,39 @@
 const handleSelectionChange = (selection) => {
   selectedRows.value = selection;
 };
+
+// 鎵撳紑寮规
+const openForm = () => {
+  if (selectedRows.value.length !== 1) {
+    proxy.$modal.msgError("璇烽�夋嫨涓�鏉℃暟鎹�");
+    return;
+  }
+  invoiceInfo({ id: selectedRows.value[0].id }).then((res) => {
+    console.log(res.data)
+    former.value = { ...res.data };
+    former.value.salesRecordId = former.value.id;
+    former.value.id = "";
+    // form.value.registrant = userStore.nickName;
+  });
+  dialogFormVisible.value = true;
+};
+// 鎻愪氦琛ㄥ崟
+const submitForm = () => {
+  proxy.$refs["formRef"].validate((valid) => {
+    if (valid) {
+      receiptPaymentSaveOrUpdate(former.value).then((res) => {
+        proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
+        closeDia();
+        getList();
+      });
+    }
+  });
+};
+// 鍏抽棴寮规
+const closeDia = () => {
+  proxy.resetForm("formRef");
+  dialogFormVisible.value = false;
+};
 </script>
 
 <style scoped>

--
Gitblit v1.9.3