Quellcode durchsuchen

Merge branch 'dev' into test

liujt vor 1 Tag
Ursprung
Commit
57439dfe6a

+ 18 - 0
src/api/financialManage/prepayment/index.js

@@ -53,3 +53,21 @@ export async function withdrawPrepayment(data) {
   }
   return Promise.reject(new Error(res.data.message));
 }
+
+// 完结
+export async function completeInfo(data) {
+  const res = await request.post('/eom/finprepay/complete?id=' + data.id);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+
+// 收款明细提交
+export async function saveDetailDetail(data) {
+  const res = await request.post('/eom/finprepay/saveDetail', data);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}

+ 2 - 0
src/directives/tableScrollSync.js

@@ -9,6 +9,8 @@ function setupScrollSync(el) {
   if (!table) return null;
 
   const outerWidth = table.offsetWidth;
+
+  // console.log('outerWidth~~~', outerWidth);
   // 取第一个内部 table 的宽度作为内容宽度
   const innerTable = table.querySelector('table');
   const contentWidth = innerTable ? innerTable.offsetWidth : outerWidth;

+ 23 - 8
src/views/financialManage/advanceReceipt/components/addDialog.vue

@@ -218,8 +218,11 @@
         <el-button @click="updateVisible(false)">关闭</el-button>
       </template>
       <template v-else>
-        <el-button type="primary" :loading="loading" @click="save">
-          确定
+        <el-button type="primary" :loading="loading" @click="save(0)">
+          保存
+        </el-button>
+        <el-button type="primary" :loading="loading" @click="save(1)">
+          提交
         </el-button>
         <el-button @click="updateVisible(false)">取消</el-button>
       </template>
@@ -258,7 +261,8 @@
   import {
     addAdvanceReceipt,
     updateAdvanceReceipt,
-    getAdvanceReceiptInfo
+    getAdvanceReceiptInfo,
+    submit
   } from '@/api/financialManage/advanceReceipt';
   import { getTreeByPid } from '@/api/classifyManage';
   import parentList from '@/views/saleManage/contact/components/parentList.vue';
@@ -279,7 +283,7 @@
     data() {
       return {
         activeComp: 'main',
-
+        businessId: '',
         tabOptions: [
           { key: 'main', name: '预收款项' },
           { key: 'bpm', name: '流程详情' }
@@ -419,7 +423,7 @@
         this.isDetail = type === 'detail';
         if ((this.isUpdate || this.isDetail) && row) {
           this.form = await getAdvanceReceiptInfo(row.id);
-
+          this.businessId = row.id;
           this.$nextTick(() => {
             this.$refs.inventoryTableDetailsRef &&
               this.$refs.inventoryTableDetailsRef.putTableValue(
@@ -518,7 +522,7 @@
         };
       },
 
-      save() {
+      save(type) {
         this.$refs.form.validate((valid) => {
           if (!valid) return;
           this.loading = true;
@@ -527,10 +531,12 @@
             ? updateAdvanceReceipt
             : addAdvanceReceipt;
           saveOrUpdate(this.form)
-            .then(() => {
+            .then((res) => {
               this.loading = false;
               this.$message.success(this.isUpdate ? '修改成功' : '新增成功');
-              this.updateVisible(false);
+              if(type === 1) {
+                this.sub(res);
+              }
               this.$emit('done');
             })
             .catch(() => {
@@ -539,6 +545,15 @@
         });
       },
 
+      async sub(res) {
+        const data = await getAdvanceReceiptInfo(
+          this.businessId || res
+        );
+        submit(data.id).then(() => {
+          this.$message.success('提交成功');
+        })
+      },
+
       updateVisible(value) {
         this.visible = value;
         if (!value) {

+ 14 - 1
src/views/financialManage/prepayment/components/addDialog.vue

@@ -197,7 +197,7 @@
        <div style="margin-top: 20px" v-if="isDetail">
         <headerTitle title="付款信息"></headerTitle>
         <div style="margin: 10px 0; font-size: 14px; color: #606266;">
-          <span>预付金额:{{ form.amount || 0 }} 元</span>
+          <span>预付金额:{{ form.prepayTotalPrice || 0 }} 元</span>
           <span style="margin-left: 20px;">已付金额:{{ paidAmount }} 元</span>
           <span style="margin-left: 20px;">未付金额:{{ unpaidAmount }} 元</span>
         </div>
@@ -384,6 +384,19 @@
         ]
       };
     },
+    computed: {
+      paidAmount() {
+        return this.form.tableData.reduce((sum, item) => {
+          const val = parseFloat(item.paidAmount);
+          return sum + (isNaN(val) ? 0 : val);
+        }, 0).toFixed(2);
+      },
+      unpaidAmount() {
+        const total = parseFloat(this.row.prepayTotalPrice) || 0;
+        const paid = parseFloat(this.paidAmount) || 0;
+        return (total - paid).toFixed(2);
+      }
+    },
     methods: {
       generateCode() {
         const now = new Date();

+ 48 - 42
src/views/financialManage/prepayment/components/payDialog.vue

@@ -13,7 +13,7 @@
       <!-- 付款信息 -->
       <headerTitle title="付款信息" size="16px"></headerTitle>
       <div style="margin: 10px 0; font-size: 14px; color: #606266;">
-        <span>预付金额:{{ row.amount || 0 }} 元</span>
+        <span>预付金额:{{ row.prepayTotalPrice || 0 }} 元</span>
         <span style="margin-left: 20px;">已付金额:{{ paidAmount }} 元</span>
         <span style="margin-left: 20px;">未付金额:{{ unpaidAmount }} 元</span>
       </div>
@@ -38,14 +38,14 @@
         :toolkit="[]"
       >
         <!-- 付款时间 -->
-        <template v-slot:payTime="{ row: r, $index }">
+        <template v-slot:paidDate="{ row: r, $index }">
           <el-form-item
-            :prop="`tableData.${$index}.payTime`"
+            :prop="`tableData.${$index}.paidDate`"
             :rules="{ required: true, message: '请选择付款时间', trigger: 'change' }"
             class="table-form-item"
           >
             <el-date-picker
-              v-model="r.payTime"
+              v-model="r.paidDate"
               type="date"
               placeholder="年/月/日"
               value-format="yyyy-MM-dd"
@@ -55,14 +55,14 @@
           </el-form-item>
         </template>
         <!-- 已付金额 -->
-        <template v-slot:paidAmount="{ row: r, $index }">
+        <template v-slot:paidTotalPrice="{ row: r, $index }">
           <el-form-item
-            :prop="`tableData.${$index}.paidAmount`"
+            :prop="`tableData.${$index}.paidTotalPrice`"
             :rules="{ required: true, message: '请输入已付金额', trigger: 'blur' }"
             class="table-form-item"
           >
             <el-input
-              v-model="r.paidAmount"
+              v-model="r.paidTotalPrice"
               placeholder="请输入"
               size="small"
               @input="calcAmount"
@@ -70,27 +70,23 @@
           </el-form-item>
         </template>
         <!-- 支付类型 -->
-        <template v-slot:payType="{ row: r, $index }">
+        <template v-slot:paymentType="{ row: r, $index }">
           <el-form-item
-            :prop="`tableData.${$index}.payType`"
+            :prop="`tableData.${$index}.paymentType`"
             :rules="{ required: true, message: '请选择支付类型', trigger: 'change' }"
             class="table-form-item"
           >
-            <el-select
-              v-model="r.payType"
+            <DictSelection
+              v-model="r.paymentType"
+              dictName="支付类型"
               placeholder="请选择"
-              size="small"
-              style="width: 100%"
-            >
-              <el-option label="现金" value="现金"></el-option>
-              <el-option label="银票" value="银票"></el-option>
-              <el-option label="商票" value="商票"></el-option>
-            </el-select>
+              class="payment-select"
+            />
           </el-form-item>
         </template>
         <!-- 附件 -->
-        <template v-slot:attachment="{ row: r }">
-          <fileMain v-model="r.attachment" :limit="1"></fileMain>
+        <template v-slot:files="{ row: r }">
+          <fileMain v-model="r.files" :limit="1"></fileMain>
         </template>
         <!-- 备注 -->
         <template v-slot:remark="{ row: r }">
@@ -126,6 +122,10 @@
 <script>
   import headerTitle from '@/components/header-title';
   import fileMain from '@/components/addDoc/index.vue';
+  import {
+      getPrepaymentInfo,
+      saveDetailDetail
+    } from '@/api/financialManage/prepayment';
 
   export default {
     components: {
@@ -149,32 +149,32 @@
             fixed: 'left'
           },
           {
-            prop: 'payTime',
+            prop: 'paidDate',
             label: '付款时间',
             align: 'center',
             minWidth: 160,
-            slot: 'payTime'
+            slot: 'paidDate'
           },
           {
-            prop: 'paidAmount',
+            prop: 'paidTotalPrice',
             label: '已付金额',
             align: 'center',
             minWidth: 140,
-            slot: 'paidAmount'
+            slot: 'paidTotalPrice'
           },
           {
-            prop: 'payType',
+            prop: 'paymentType',
             label: '支付类型',
             align: 'center',
             minWidth: 140,
-            slot: 'payType'
+            slot: 'paymentType'
           },
           {
-            prop: 'attachment',
+            prop: 'files',
             label: '附件',
             align: 'center',
             minWidth: 120,
-            slot: 'attachment'
+            slot: 'files'
           },
           {
             prop: 'remark',
@@ -203,24 +203,24 @@
         }, 0).toFixed(2);
       },
       unpaidAmount() {
-        const total = parseFloat(this.row.amount) || 0;
+        const total = parseFloat(this.row.prepayTotalPrice) || 0;
         const paid = parseFloat(this.paidAmount) || 0;
         return (total - paid).toFixed(2);
       }
     },
     methods: {
-      open(row) {
+      async open(row) {
         this.visible = true;
-        this.row = row || {};
-        this.form.tableData = [];
+        this.info = await getPrepaymentInfo(row.id);
+        this.form.tableData = this.info.detailList || [];
       },
 
       addRow() {
         this.form.tableData.push({
-          payTime: '',
-          paidAmount: '',
-          payType: '',
-          attachment: [],
+          paidDate: '',
+          paidTotalPrice: '',
+          paymentType: '',
+          files: [],
           remark: ''
         });
       },
@@ -246,28 +246,34 @@
         }
         for (let i = 0; i < this.form.tableData.length; i++) {
           const item = this.form.tableData[i];
-          if (!item.payTime) {
+          if (!item.paidDate) {
             this.$message.warning(`第${i + 1}行付款时间不能为空`);
             return;
           }
-          if (!item.paidAmount) {
+          if (!item.paidTotalPrice) {
             this.$message.warning(`第${i + 1}行已付金额不能为空`);
             return;
           }
-          if (!item.payType) {
+          if (!item.paymentType) {
             this.$message.warning(`第${i + 1}行支付类型不能为空`);
             return;
           }
         }
 
         this.loading = true;
-        // TODO: 调用付款保存接口
-        setTimeout(() => {
+        const params = this.form.tableData.map(item => {
+          return {
+            ...item,
+            prepayId: this.row.id,
+            prepayCode: this.row.code,
+          }
+        })
+        saveDetailDetail(params).then(res => {
           this.loading = false;
           this.$message.success('付款成功');
           this.updateVisible(false);
           this.$emit('done');
-        }, 500);
+        });
       },
 
       updateVisible(value) {

+ 7 - 2
src/views/financialManage/prepayment/index.vue

@@ -127,7 +127,8 @@
     prepaymentPageList,
     deletePrepayment,
     getPrepaymentInfo,
-    withdrawPrepayment
+    withdrawPrepayment,
+    completeInfo
   } from '@/api/financialManage/prepayment';
   import processSubmitDialog from '@/BIZComponents/processSubmitDialog/processSubmitDialog.vue';
 
@@ -407,11 +408,15 @@
       },
 
       // 完结
-      handleComplete() {
+      handleComplete(row) {
         this.$confirm('确定要完结该预付款吗?', '提示', { type: 'warning' }).then(() => {
+          completeInfo({
+            id: row.id
+          }).then(() => {
           // TODO: 调用完结接口
           this.$message.success('完结成功');
           this.reload();
+          });
         });
       }
     }

+ 27 - 15
src/views/financialManage/receivableManage/components/detailDialog.vue

@@ -27,7 +27,7 @@
       <el-form ref="form" :model="form" class="el-form-box" label-width="120px">
         <headerTitle title="基本信息"></headerTitle>
         <el-row :gutter="12">
-          <el-col :span="12">
+          <el-col :span="8">
             <el-form-item label="应收日期" prop="receivableDate">
               <el-date-picker
                 style="width: 100%"
@@ -39,7 +39,7 @@
               </el-date-picker>
             </el-form-item>
           </el-col>
-          <el-col :span="12">
+          <el-col :span="8">
             <el-form-item label="应收金额" prop="receivableTotalPrice">
               <el-input-number
                 disabled
@@ -51,9 +51,7 @@
               ></el-input-number>
             </el-form-item>
           </el-col>
-        </el-row>
-        <el-row :gutter="12">
-          <el-col :span="12">
+          <el-col :span="8">
             <el-form-item label="会计科目" prop="accountingSubjectId">
               <ele-tree-select
                 disabled
@@ -70,14 +68,31 @@
               />
             </el-form-item>
           </el-col>
-          <el-col :span="12">
+        </el-row>
+        <el-row :gutter="12">
+          <el-col :span="8">
             <el-form-item label="发票编码" prop="invoiceCode">
               <el-input disabled v-model="form.invoiceCode"></el-input>
             </el-form-item>
           </el-col>
+          <el-col :span="8">
+            <el-form-item label="发票号" prop="invoiceCode">
+              <el-input disabled v-model="form.invoiceCode"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="发票种类" prop="invoiceCode">
+              <el-input disabled v-model="form.invoiceCode"></el-input>
+            </el-form-item>
+          </el-col>
         </el-row>
         <el-row :gutter="12">
-          <el-col :span="12">
+          <el-col :span="8">
+            <el-form-item label="公司名称" prop="contactName">
+              <el-input disabled v-model="form.contactName"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
             <el-form-item label="来源类型" prop="sourceType">
               <el-input
                 :value="payAndReceiveEnum.find(item=>item.value==form.sourceType)?.label"
@@ -85,23 +100,20 @@
               ></el-input>
             </el-form-item>
           </el-col>
-          <el-col :span="12">
+          <el-col :span="8">
             <el-form-item label="来源编码" prop="sourceCode">
               <el-input v-model="form.sourceCode" disabled></el-input>
             </el-form-item>
           </el-col>
 
-          <el-col :span="12">
-            <el-form-item label="公司名称" prop="contactName">
-              <el-input disabled v-model="form.contactName"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
+          </el-row>
+          <el-row :gutter="12">
+          <el-col :span="8">
             <el-form-item label="备注" prop="remark">
               <el-input disabled v-model="form.remark"></el-input>
             </el-form-item>
           </el-col>
-          <el-col :span="12">
+          <el-col :span="8">
             <el-form-item label="附件">
               <fileMain v-model="form.files" type="view"></fileMain>
             </el-form-item>

+ 1 - 1
src/views/saleManage/saleOrder/components/drawer.vue

@@ -68,7 +68,7 @@
           <entrustedReceive :saleOrderData="row" :key="row.id"></entrustedReceive>
         </el-tab-pane>
         <el-tab-pane label="发货单" name="发货单">
-          <invoice :saleOrderData="row" :key="row.id"></invoice>
+          <invoice v-if="activeName == '发货单'" :saleOrderData="row" :key="row.id"></invoice>
         </el-tab-pane>
         <el-tab-pane label="退货单" name="退货单">
           <returnGoods :saleOrderData="row" :key="row.id"></returnGoods>

+ 7 - 8
src/views/saleManage/saleOrder/invoice/components/searchTable.vue

@@ -1,6 +1,6 @@
 <!-- 搜索表单 -->
 <template>
-  <seekPage :seekList="seekList" :formLength="3" @search="search"></seekPage>
+  <seekPage :seekList="seekList" :formLength="4" @search="search"></seekPage>
 </template>
 <script>
 import { receiptType ,orderStatusOptions} from '@/enum/dict';
@@ -30,6 +30,12 @@ export default {
           type: 'input',
           placeholder: '请输入'
         },
+        {
+          label: '客户名称:',
+          value: 'contactName',
+          type: 'input',
+          placeholder: '请输入'
+        },
         {
           label: '产品名称',
           value: 'productName',
@@ -65,13 +71,6 @@ export default {
           type: 'input',
           placeholder: '请输入'
         },
-        {
-          label: '客户名称:',
-          value: 'contactName',
-          width: 380,
-          type: 'input',
-          placeholder: '请输入'
-        },
         {
           label: '是否回执:',
           value: 'replied',