Sfoglia il codice sorgente

收付款条件功能

liujt 2 settimane fa
parent
commit
df20964d1f

+ 42 - 24
src/api/rulesManagement/paymentTerms/index.js

@@ -1,37 +1,55 @@
 import request from '@/utils/request';
 
 // 获取付款条件列表
-export function getTableList(data) {
-  return request({
-    url: '/api/paymentTerms/list',
-    method: 'post',
-    data
-  });
+export async function getTableList(data) {
+  const res = await request.post(`/api/paymentTerms/list`, data);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+
+// 获取付款条件详情
+export async function getInfo(id) {
+  const res = await request.get(`/api/paymentTerms/getById/${id}`);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
 }
 
 // 新增付款条件
-export function addPaymentTerms(data) {
-  return request({
-    url: '/api/paymentTerms',
-    method: 'post',
-    data
-  });
+export async function addPaymentTerms(data) {
+  const res = await request.post(`/api/paymentTerms`, data);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
 }
 
 // 修改付款条件
-export function updatePaymentTerms(data) {
-  return request({
-    url: '/api/paymentTerms',
-    method: 'put',
-    data
-  });
+export async function updatePaymentTerms(data) {
+  const res = await request.put(`/api/paymentTerms`, data);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+
+// 启用停用
+export async function updateRuleState(data) {
+  const res = await request.put(`/api/paymentTerms/updateRuleState`, data);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
 }
 
 // 删除付款条件
-export function deleteInformation(data) {
-  return request({
-    url: '/api/paymentTerms',
-    method: 'delete',
-    data
-  });
+export async function deleteInformation(id) {
+  const res = await request.delete(`/api/paymentTerms`, { data: { id } });
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
 }

+ 19 - 19
src/views/rulesManagement/paymentTerms/components/searchForm.vue

@@ -13,27 +13,27 @@
         return [
           {
             label: '关键词:',
-            value: 'searchName',
-            type: 'input',
-            placeholder: '编码、名称、型号、规格'
-          },
-          {
-            label: '下拉检索:',
-            value: 'searchType',
-            type: 'select',
-            placeholder: '请选择',
-            planList: [
-              { value: 1, label: '选项一' },
-              { value: 2, label: '选项二' },
-              { value: 3, label: '选项三' }
-            ]
-          },
-          {
-            label: '关键词:',
-            value: 'searchName2',
+            value: 'keyword',
             type: 'input',
             placeholder: '编码、名称、型号、规格'
           },
+          // {
+          //   label: '下拉检索:',
+          //   value: 'searchType',
+          //   type: 'select',
+          //   placeholder: '请选择',
+          //   planList: [
+          //     { value: 1, label: '选项一' },
+          //     { value: 2, label: '选项二' },
+          //     { value: 3, label: '选项三' }
+          //   ]
+          // },
+          // {
+          //   label: '关键词:',
+          //   value: 'searchName2',
+          //   type: 'input',
+          //   placeholder: '编码、名称、型号、规格'
+          // },
           {
             label: '创建时间:',
             value: 'createTime',
@@ -41,7 +41,7 @@
             dateType: 'daterange',
             placeholder: '',
             width: 380,
-            valueAr: ['createTimeStart', 'createTimeEnd']
+            valueAr: ['startCreateTime', 'endCreateTime']
           }
         ];
       }

+ 25 - 19
src/views/rulesManagement/paymentTerms/index.vue

@@ -64,18 +64,19 @@
       </div>
     </el-card>
 
-    <add-dialog ref="addDialogRef" @done="reload"></add-dialog>
+    <add-dialog ref="addDialogRef" conditionType="terms" @done="reload"></add-dialog>
   </div>
 </template>
 
 <script>
   import searchForm from './components/searchForm.vue';
-  import addDialog from './components/addDialog.vue';
+  import addDialog from '@/views/rulesManagement/receiveTerms/components/addDialog.vue';
   import tabMixins from '@/mixins/tableColumnsMixin';
+  import { calcReceiveDateTypeOp, payConfirmTypeOp, dateUnitOptions } from '@/enum/dict';
   import {
     getTableList,
     deleteInformation
-  } from '@/api/rulesManagement/paymentTerms';
+  } from '@/api/rulesManagement/receiveTerms';
 
   export default {
     mixins: [tabMixins],
@@ -125,14 +126,7 @@
             showOverflowTooltip: true,
             minWidth: 160,
             formatter: (row) => {
-              const map = {
-                1: '订单日期',
-                2: '入库日期',
-                3: '收票日期',
-                4: '对账单日期',
-                5: '应付单日期'
-              };
-              return map[row.calcDateType] || '';
+              return calcReceiveDateTypeOp.find(item => item.value === row.dateType)?.label || '';
             }
           },
           {
@@ -140,7 +134,10 @@
             label: '支付方式',
             align: 'center',
             showOverflowTooltip: true,
-            minWidth: 180
+            minWidth: 180,
+            formatter: (row) => {
+              return this.buildPaymentMethod(row.rulesTypePOList);
+            }
           },
           {
             prop: 'confirmType',
@@ -149,16 +146,12 @@
             showOverflowTooltip: true,
             minWidth: 140,
             formatter: (row) => {
-              const map = {
-                1: '交易日',
-                2: 'X天后'
-              };
-              return map[row.confirmType] || '';
+              return payConfirmTypeOp.find(item => item.value === row.determinationMethod)?.label || '';
             }
           },
           {
-            prop: 'confirmDesc',
-            label: '付款日确认方式描述',
+            prop: 'remark',
+            label: '备注',
             align: 'center',
             showOverflowTooltip: true,
             minWidth: 180
@@ -189,11 +182,24 @@
       datasource({ page, limit, where }) {
         return getTableList({
           pageNum: page,
+          conditionConfigurationType: 'terms',
           size: limit,
           ...where
         });
       },
 
+      // 构建支付方式字符串
+      buildPaymentMethod(list) {
+        return list
+          .map(item => {
+            const unit =
+              (dateUnitOptions.find(opt => opt.value === item.dateType) || {}).label ||
+              '月';
+            return `${item.percentage}% ${item.paymentSum}${unit} ${item.paymentType}`;
+          })
+          .join(',');
+      },
+
       /* 刷新表格 */
       reload(where) {
         this.$refs.table.reload({ page: 1, where });

+ 21 - 12
src/views/rulesManagement/receiveTerms/components/addDialog.vue

@@ -6,7 +6,7 @@
     :append-to-body="true"
     :close-on-click-modal="false"
     custom-class="ele-dialog-form"
-    :title="isDetail ? '收款条件详情' : (isUpdate ? '修改收款条件' : '新增收款条件')"
+    :title="isDetail ? '详情' : (isUpdate ? '修改' : '新增')"
     @update:visible="updateVisible"
   >
     <el-form
@@ -15,8 +15,8 @@
       :rules="rules"
       label-width="140px"
     >
-      <!-- 收款条件编码 -->
-      <el-form-item label="收款条件编码:" prop="code">
+      <!-- 收/付款条件编码 -->
+      <el-form-item :label="conditionType == 'rules' ? '收款条件编码:' : '付款条件编码:'" prop="code">
         <el-input
           v-model="form.code"
           placeholder="自动生成"
@@ -25,17 +25,17 @@
       </el-form-item>
 
       <!-- 收款条件名称 -->
-      <el-form-item label="收款条件名称:" prop="name">
+      <el-form-item :label="conditionType == 'rules' ? '收款条件名称:' : '付款条件名称:'" prop="name">
         <el-input
           clearable
           v-model="form.name"
-          placeholder="请输入收款条件名称"
+          placeholder="请输入条件名称"
           :disabled="isDetail"
         />
       </el-form-item>
 
-      <!-- 收款日计算日期 -->
-      <el-form-item label="收款日计算日期:" prop="dateType">
+      <!-- 收/付款日计算日期 -->
+      <el-form-item :label="conditionType == 'rules' ? '收款日计算日期:' : '付款日计算日期:'" prop="dateType">
         <el-select
           v-model="form.dateType"
           placeholder="请选择"
@@ -46,8 +46,8 @@
         </el-select>
       </el-form-item>
 
-      <!-- 收款日确定方式 -->
-      <el-form-item label="收款日确定方式:" prop="determinationMethod">
+      <!-- 收/付款日确定方式 -->
+      <el-form-item :label="conditionType == 'rules' ? '收款日确定方式:' : '付款日确定方式:'" prop="determinationMethod">
         <el-select
           v-model="form.determinationMethod"
           placeholder="请选择"
@@ -177,6 +177,13 @@
   let paymentId = 0;
 
   export default {
+    props: {
+      // 收款/付款:rules/terms
+      conditionType: {
+        type: String,
+        default: ''
+      }
+    },
     data() {
       return {
         visible: false,
@@ -197,7 +204,8 @@
           determinationMethodDay: 0,
           rulesTypePOList: [],
           remark: '',
-          ruleState: 1
+          ruleState: 1,
+          conditionConfigurationType: this.conditionType
         },
         rules: {
           // code: [{ required: true, message: '请输入收款条件编码', trigger: 'blur' }],
@@ -254,7 +262,8 @@
           determinationMethodDay: 0,
           rulesTypePOList: [this.createEmptyPayment()], // 默认:100% 0月 现金
           remark: '',
-          ruleState: 1
+          ruleState: 1,
+          conditionConfigurationType: this.conditionType
         };
       },
 
@@ -264,7 +273,7 @@
           percentage: 100,
           paymentSum: 0,
           dateType: 'month',
-          paymentType: 1
+          paymentType: '1'
         };
       },
 

+ 1 - 1
src/views/rulesManagement/receiveTerms/index.vue

@@ -76,7 +76,7 @@
       </div>
     </el-card>
 
-    <add-dialog ref="addDialogRef" @done="reload"></add-dialog>
+    <add-dialog ref="addDialogRef" conditionType="rules" @done="reload"></add-dialog>
   </div>
 </template>