hurx 3 周之前
父節點
當前提交
5b12ec3a7a

+ 42 - 9
src/views/bill/statementInvoice/addDrawer.vue

@@ -16,20 +16,20 @@
 
         <el-row :gutter="20">
           <el-col :span="8">
-            <el-form-item label="客户名称" prop="customerId">
+            <el-form-item label="伙伴商名称" prop="customerId">
               <el-select
                 v-model="form.customerId"
                 filterable
                 remote
                 reserve-keyword
-                placeholder="请输入客户名称"
-                :remote-method="remoteSearchCustomer"
+                placeholder="请输入伙伴商名称"
+                :remote-method="remoteSearchPartner"
                 :loading="customerLoading"
                 clearable
                 style="width: 100%"
-                @change="handleCustomerChange"
+                @change="handlePartnerChange"
               >
-                <el-option v-for="item in customerOptions" :key="item.id" :label="item.customerName" :value="item.id" />
+                <el-option v-for="item in partnerOptions" :key="item.id" :label="item.partnerName" :value="item.id" />
               </el-select>
             </el-form-item>
           </el-col>
@@ -168,7 +168,8 @@ import { StatementOrderVO } from '@/api/bill/statementOrder/types';
 import StatementOrderDrawer from './statementOrderDrawer.vue';
 import FileSelector from '@/components/FileSelector/index.vue';
 import AddInvoiceDialog from './addInvoiceDialog.vue';
-
+import { getListByPartnerName } from '@/api/partner/merchant';
+import { PartnerMerchantVO } from '@/api/partner/merchant/types';
 const { proxy } = getCurrentInstance() as ComponentInternalInstance;
 const { invoice_type } = toRefs<any>(proxy?.useDict('invoice_type'));
 const initFormData: StatementInvoiceForm = {
@@ -192,7 +193,7 @@ const buttonLoading = ref(false);
 const form = ref<StatementInvoiceForm>({ ...initFormData });
 
 const rules = reactive({
-  customerId: [{ required: true, message: '请选择客户', trigger: 'change' }],
+  customerId: [{ required: true, message: '请选择伙伴商', trigger: 'change' }],
   invoiceTime: [{ required: true, message: '请选择开票日期', trigger: 'change' }]
 } as any);
 
@@ -219,7 +220,7 @@ const addInvoiceDialogRef = ref<any>();
 const currentSelectedStatements = ref<StatementOrderVO[]>([]);
 const invoiceList = ref<any[]>([]); // 发票列表
 const editingInvoiceIndex = ref<number>(-1);
-
+const partnerOptions = ref<PartnerMerchantVO[]>([]);
 /** 计算当前页的商品列表 */
 const pagedProductList = computed(() => {
   const start = (productPage.pageNum - 1) * productPage.pageSize;
@@ -279,6 +280,38 @@ const open = (id?: string | number, data?: StatementInvoiceForm) => {
   drawer.visible = true;
 };
 
+/** 远程搜索伙伴商 */
+const remoteSearchPartner = async (query: string) => {
+  if (query) {
+    customerLoading.value = true;
+    try {
+      const res = await getListByPartnerName(query);
+      partnerOptions.value = res.data;
+    } catch (error) {
+      console.error(error);
+    } finally {
+      customerLoading.value = false;
+    }
+  } else {
+    customerOptions.value = [];
+  }
+};
+
+/** 伙伴商变更 */
+const handlePartnerChange = async (customerId: string | number) => {
+  if (customerId) {
+    const partner = partnerOptions.value.find((item) => item.id === customerId);
+    if (partner) {
+      form.value.customerName = partner.partnerName;
+      form.value.customerNo = partner.partnerNo;
+    }
+    // 预加载订单列表
+  } else {
+    form.value.customerName = undefined;
+    form.value.customerNo = undefined;
+  }
+};
+
 /** 表单重置 */
 const reset = () => {
   form.value = { ...initFormData };
@@ -330,7 +363,7 @@ const handleCustomerChange = (value: string | number) => {
 /** 选择对账单 */
 const handleSelectStatement = () => {
   if (!form.value.customerId) {
-    proxy?.$modal.msgWarning('请先选择客户');
+    proxy?.$modal.msgWarning('请先选择伙伴商');
     return;
   }
 

+ 2 - 2
src/views/bill/statementInvoice/detailDrawer.vue

@@ -26,7 +26,7 @@
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="客户名称:" prop="customerName">
+            <el-form-item label="伙伴商名称:" prop="customerName">
               <el-input v-model="form.customerName" disabled />
             </el-form-item>
           </el-col>
@@ -173,7 +173,7 @@ const buttonLoading = ref(false);
 const form = ref<StatementInvoiceForm>({ ...initFormData });
 
 const rules = reactive({
-  customerId: [{ required: true, message: '请选择客户', trigger: 'change' }],
+  customerId: [{ required: true, message: '请选择伙伴商', trigger: 'change' }],
   invoiceTime: [{ required: true, message: '请选择开票日期', trigger: 'change' }]
 } as any);
 

+ 42 - 7
src/views/bill/statementInvoice/index.vue

@@ -3,7 +3,7 @@
     <transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
       <div v-show="showSearch" class="mb-[10px]">
         <el-card shadow="hover">
-          <el-form ref="queryFormRef" :model="queryParams" :inline="true">
+          <el-form ref="queryFormRef" :model="queryParams" :inline="true" label-width="100px">
             <el-form-item label="开票编号" prop="statementInvoiceNo">
               <el-input v-model="queryParams.statementInvoiceNo" placeholder="请输入发票编号" clearable @keyup.enter="handleQuery" />
             </el-form-item>
@@ -17,20 +17,20 @@
                 value-format="YYYY-MM-DD"
               />
             </el-form-item>
-            <el-form-item label="客户名称" prop="customerId">
+            <el-form-item label="伙伴商名称" prop="customerId">
               <el-select
                 v-model="queryParams.customerId"
                 filterable
                 remote
                 reserve-keyword
-                placeholder="请输入客户名称"
-                :remote-method="remoteSearchCustomer"
+                placeholder="请输入伙伴商名称"
+                :remote-method="remoteSearchPartner"
                 :loading="customerLoading"
                 clearable
                 style="width: 100%"
-                @change="handleCustomerChange"
+                @change="handlePartnerChange"
               >
-                <el-option v-for="item in customerOptions" :key="item.id" :label="item.customerName" :value="item.id" />
+                <el-option v-for="item in partnerOptions" :key="item.id" :label="item.partnerName" :value="item.id" />
               </el-select>
             </el-form-item>
             <el-form-item label="订单编号" prop="orderNo">
@@ -72,7 +72,7 @@
             <span>{{ parseTime(scope.row.invoiceTime, '{y}-{m}-{d}') }}</span>
           </template>
         </el-table-column>
-        <el-table-column label="客户名称" align="center" prop="customerName" />
+        <el-table-column label="伙伴商名称" align="center" prop="customerName" />
         <el-table-column label="开票金额" align="center" prop="invoiceAmount">
           <template #default="scope">
             <span>{{ Number(scope.row.invoiceAmount).toFixed(2) }}</span>
@@ -108,6 +108,8 @@ import { listStatementInvoice, getStatementInvoice, changeStatus } from '@/api/b
 import { StatementInvoiceVO, StatementInvoiceQuery, StatementInvoiceForm } from '@/api/bill/statementInvoice/types';
 import { getListBycustomerName } from '@/api/customer/customerFile/customerInfo';
 import { CustomerInfoVO } from '@/api/customer/customerFile/customerInfo/types';
+import { getListByPartnerName } from '@/api/partner/merchant';
+import { PartnerMerchantVO } from '@/api/partner/merchant/types';
 import AddDrawer from './addDrawer.vue';
 import DetailDrawer from './detailDrawer.vue';
 const { proxy } = getCurrentInstance() as ComponentInternalInstance;
@@ -127,6 +129,7 @@ const queryFormRef = ref<ElFormInstance>();
 const statementInvoiceFormRef = ref<ElFormInstance>();
 const customerLoading = ref(false);
 const customerOptions = ref<CustomerInfoVO[]>([]);
+const partnerOptions = ref<PartnerMerchantVO[]>([]);
 const dialog = reactive<DialogOption>({
   visible: false,
   title: ''
@@ -221,6 +224,38 @@ const handleCustomerChange = async (customerId: string | number) => {
   }
 };
 
+/** 远程搜索伙伴商 */
+const remoteSearchPartner = async (query: string) => {
+  if (query) {
+    customerLoading.value = true;
+    try {
+      const res = await getListByPartnerName(query);
+      partnerOptions.value = res.data;
+    } catch (error) {
+      console.error(error);
+    } finally {
+      customerLoading.value = false;
+    }
+  } else {
+    customerOptions.value = [];
+  }
+};
+
+/** 伙伴商变更 */
+const handlePartnerChange = async (customerId: string | number) => {
+  if (customerId) {
+    const partner = partnerOptions.value.find((item) => item.id === customerId);
+    if (partner) {
+      form.value.customerName = partner.partnerName;
+      form.value.customerNo = partner.partnerNo;
+    }
+    // 预加载订单列表
+  } else {
+    form.value.customerName = undefined;
+    form.value.customerNo = undefined;
+  }
+};
+
 /** 表单重置 */
 const reset = () => {
   form.value = { ...initFormData };

+ 2 - 2
src/views/bill/statementOrder/addDrawer.vue

@@ -296,7 +296,7 @@ const form = ref<
 >({ ...initFormData });
 
 const rules = reactive({
-  customerId: [{ required: true, message: '请输入客户名称', trigger: 'blur' }],
+  customerId: [{ required: true, message: '请输入伙伴商名称', trigger: 'blur' }],
   statementSelfId: [{ required: true, message: '请选择对账人', trigger: 'blur' }],
   statementSelfPhone: [
     { required: true, message: '请输入对账人手机号', trigger: 'blur' },
@@ -647,7 +647,7 @@ const handleOrderSelected = (data: any) => {
 /** 添加对账明细 */
 const handleAddDetail = () => {
   if (!form.value.customerId) {
-    proxy?.$modal.msgWarning('请先选择客户');
+    proxy?.$modal.msgWarning('请先选择伙伴商');
     return;
   }
   // 传递当前已选中的订单、产品列表、预加载的订单列表和总数

+ 2 - 2
src/views/bill/statementOrder/detailDrawer.vue

@@ -25,7 +25,7 @@
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="客户名称:" prop="customerName">
+            <el-form-item label="伙伴商名称:" prop="customerName">
               <el-input v-model="form.customerName" disabled />
             </el-form-item>
           </el-col>
@@ -232,7 +232,7 @@ const form = ref<
 >({ ...initFormData });
 
 const rules = reactive({
-  customerName: [{ required: true, message: '请输入客户名称', trigger: 'blur' }],
+  customerName: [{ required: true, message: '请输入伙伴商名称', trigger: 'blur' }],
   statementSelfId: [{ required: true, message: '请选择对账人', trigger: 'blur' }],
   statementSelfPhone: [
     { required: true, message: '请输入对账人手机号', trigger: 'blur' },

+ 3 - 3
src/views/bill/statementOrder/index.vue

@@ -3,7 +3,7 @@
     <transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
       <div v-show="showSearch" class="mb-[10px]">
         <el-card shadow="hover">
-          <el-form ref="queryFormRef" :model="queryParams" :inline="true">
+          <el-form ref="queryFormRef" :model="queryParams" :inline="true" label-width="100px">
             <el-form-item label="对账单号" prop="statementOrderNo">
               <el-input v-model="queryParams.statementOrderNo" placeholder="请输入对账单号" clearable @keyup.enter="handleQuery" />
             </el-form-item>
@@ -17,8 +17,8 @@
                 value-format="YYYY-MM-DD"
               />
             </el-form-item>
-            <el-form-item label="客户名称" prop="customerName">
-              <el-input v-model="queryParams.customerName" placeholder="请输入客户名称" clearable @keyup.enter="handleQuery" />
+            <el-form-item label="伙伴商名称" prop="customerName">
+              <el-input v-model="queryParams.customerName" placeholder="请输入伙伴商名称" clearable @keyup.enter="handleQuery" />
             </el-form-item>
             <!-- <el-form-item label="订单编号" prop="orderNo">
               <el-input v-model="queryParams.orderNo" placeholder="请输入客户名称" clearable @keyup.enter="handleQuery" />

+ 1 - 1
src/views/bill/statementOrder/orderMainDrawer.vue

@@ -1,5 +1,5 @@
 <template>
-  <!-- 客户订单抽屉 -->
+  <!-- 伙伴商订单抽屉 -->
   <el-drawer v-model="drawer.visible" title="对账单信息" size="68%" direction="rtl" :before-close="handleDrawerClose" :close-on-click-modal="true">
     <div class="drawer-content">
       <el-table ref="tableRef" v-loading="loading" :data="orderList" border @selection-change="handleSelectionChange">