Ver código fonte

Merge branch 'dev1.0' of http://192.168.0.200:3000/suf/factoring-trade-c-front-end into chang

changjiaming 5 meses atrás
pai
commit
4148fea737

+ 1 - 1
babel.config.js

@@ -11,5 +11,5 @@ module.exports = {
       'plugins': ['dynamic-import-node']
       // '@vue/babel-plugin-jsx'
     }
-  },
+  }
 }

+ 19 - 0
src/api/mySettlement/divideAccountsManage.js

@@ -0,0 +1,19 @@
+import request from '@/utils/request'
+
+// 获取分账管理列表
+export function getList(data) {
+  return request({
+    url: '/ledger/doList',
+    method: 'post',
+    data
+  })
+}
+
+// 获取分账管理列表
+export function getDetails(params) {
+  return request({
+    url: '/ledger/doView',
+    method: 'get',
+    params
+  })
+}

+ 7 - 0
src/router/moudules/mySettlement.js

@@ -23,6 +23,13 @@ export default {
           component: () => import('@/views/mySettlement/invoicesManagement/applyInvoicing'),
           hidden: true,
           meta: { title: '申请开票', icon: 'dashboard' }
+        },
+        {
+          path: '/mySettlement/divideAccountsManage/see/:id',
+          name: 'MySettlementDivideAccountsSee',
+          component: () => import('@/views/mySettlement/divideAccountsManage/see'),
+          hidden: true,
+          meta: { title: '查看分账', icon: 'dashboard' }
         }
       ]
     }

+ 2 - 1
src/store/modules/constant.js

@@ -14,7 +14,8 @@ export default {
       salesContractPersonType: [],
       amountKind: [],
       invoiceType: [],
-      InvoiceStatus: []
+      InvoiceStatus: [],
+      ledgerStatus: []
     }
   },
   mutations: {

+ 2 - 2
src/utils/index.js

@@ -221,8 +221,8 @@ export function exportFile(res, name) {
   var newName = ''
   var filename = res.headers
   filename = filename['content-disposition']
-  filename = filename.split(';')[1].split('filename=')[1].split('.')
-  newName = decodeURI(filename[0]) + '.' + filename[1]
+  filename = filename.split(';')[1].split('filename=')[1]
+  newName = decodeURI(filename)
   link.setAttribute(
     'download',
     name || newName

+ 4 - 4
src/utils/perview/vendors/pdf/PdfView.vue

@@ -12,7 +12,7 @@
         v-for="page in pdf_pages"
         :id="'the_canvas' + page"
         :key="page"
-      ></canvas>
+      />
     </div>
   </div>
 </template>
@@ -30,7 +30,7 @@ export default {
   },
   data() {
     return {
-      pdf_scale: 1.0, // pdf放大系数
+      pdf_scale: 1.4, // pdf放大系数
       pdf_pages: [],
       pdf_div_width: '',
       currentPage: 1
@@ -44,9 +44,9 @@ export default {
       // 放大
       let max = 0
       if (window.screen.width > 1440) {
-        max = 1.4
+        max = 2.0
       } else {
-        max = 1.2
+        max = 1.6
       }
       if (this.pdf_scale >= max) {
         return

+ 1 - 1
src/utils/perview/vendors/xlsx/Table.vue

@@ -1,7 +1,7 @@
 <template>
   <div>
     <div>
-      <hot-table ref="table" :settings="hotSettings"></hot-table>
+      <hot-table ref="table" :settings="hotSettings" />
     </div>
     <div class="btn-group">
       <button

+ 1 - 2
src/views/login/index.vue

@@ -98,9 +98,8 @@ export default {
     }
   }
   .login-container-box {
-    height: 85%;
+    height: 600px;
     width: 1000px;
-    min-height: 540px;
     background: #fff;
     border-radius: 20px;
     display: flex;

+ 1 - 1
src/views/myBusiness/supplementaryInfo/components/FinancialSituation.vue

@@ -23,7 +23,7 @@
           :file-data="taxReturn"
           :upload-from-orange-status="true"
           file-type="pdf"
-          placeholder="请上传纳税申报表"
+          placeholder="请上传上年度以及上个月的制式纳税申报表、报表(格式为:pdf)"
         />
       </el-form-item>
       <cy-info-title>

+ 3 - 0
src/views/myBusiness/supplementaryInfo/index.vue

@@ -171,6 +171,9 @@ export default {
           })
         } else {
           this.$message.success('暂存成功')
+          this.$router.push({
+            name: 'MyBusiness'
+          })
         }
       })
     }

+ 2 - 2
src/views/myFinancing/financingMain.vue

@@ -32,7 +32,7 @@
       :columns="columns"
       :data="tableData"
       :count="count"
-      parentComponent="FinancingMain"
+      parent-component="FinancingMain"
     />
   </div>
 </template>
@@ -132,7 +132,7 @@ export default {
               {
                 msg: '还款计划',
                 icon: 'iconfont icon-a-Group1087',
-                power: 'projectNumber:empty',
+                power: '',
                 rowPower: [],
                 category: 'play'
               }

+ 13 - 0
src/views/myFinancing/repaymentPlay/index.vue

@@ -35,7 +35,20 @@
       </cy-info-title>
       <cy-info-title type="collapse" name="收放款计划(融资款)" style="margin-top: 20px;">
         <collect-discharge-play type="financing" />
+        <div style="display: flex;">
+          <el-form-item label="IRR" prop="name">
+            <el-input v-model="ruleForm.name" placeholder="请输入IRR" />
+          </el-form-item>
+          <el-form-item label="授信-预期IRR" prop="name">
+            <el-input v-model="ruleForm.name" placeholder="请输入授信-预期IRR" />
+          </el-form-item>
+          <el-form-item label="额度支用-预期IRR" prop="name">
+            <el-input v-model="ruleForm.name" placeholder="请输入额度支用-预期IRR" />
+          </el-form-item>
+        </div>
+
       </cy-info-title>
+
       <cy-info-title type="collapse" name="收放款计划(应收账款)" style="margin-top: 20px;">
         <collect-discharge-play type="receivable" />
       </cy-info-title>

+ 96 - 0
src/views/mySettlement/divideAccountsManage/components/AcceptanceGoods.vue

@@ -0,0 +1,96 @@
+<template>
+  <div class="acceptance-goods">
+    <cy-comm-table
+      ref="commTable"
+      :columns="columns"
+      :data="tableData"
+      :count="0"
+      row-key="acceptanceGoodsNumber"
+      :select-data="selectData"
+    />
+  </div>
+</template>
+
+<script>
+import { handleMoney } from '@/utils'
+export default {
+  props: {
+    tableData: {
+      type: Array,
+      default: () => []
+    },
+    selectData: {
+      type: Array,
+      default: () => []
+    }
+  },
+  data() {
+    return {
+      columns: [{
+        type: 'selection',
+        single: false
+      },
+      {
+        label: '序号',
+        index: true
+      },
+      {
+        label: '验收单货物编号',
+        prop: 'acceptanceGoodsNumber',
+        showTooltip: true
+      },
+      {
+        label: '结算单编号',
+        prop: 'settlementNumber',
+        showTooltip: true
+      },
+      {
+        label: '预计/结算日期',
+        prop: 'loanDate',
+        showTooltip: true
+      },
+      {
+        label: '供应商名称',
+        prop: 'supplierName',
+        showTooltip: true
+      },
+      {
+        label: '待分配金额',
+        prop: 'toAssignedAmount',
+        showTooltip: true,
+        render: (h, row) => {
+          return <span> { handleMoney(row.toAssignedAmount) }</span>
+        }
+      },
+      {
+        label: '验收状态',
+        prop: 'acceptanceStatus',
+        showTooltip: true
+      },
+      {
+        label: '结算状态',
+        prop: 'settlementStatus',
+        showTooltip: true
+      },
+      {
+        label: '开票状态',
+        prop: 'invoiceStatus',
+        showTooltip: true
+      }
+      ]
+    }
+  },
+
+  methods: {
+    getData() {
+      return this.$refs.commTable.multipleSelection
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.financing-goods {
+
+}
+</style>

+ 91 - 0
src/views/mySettlement/divideAccountsManage/components/FinancingGoods.vue

@@ -0,0 +1,91 @@
+<template>
+  <div class="financing-goods">
+    <cy-comm-table
+      ref="commTable"
+      :columns="columns"
+      :data="tableData"
+      :select-data="selectData"
+      :count="0"
+    />
+  </div>
+</template>
+
+<script>
+import { handleMoney } from '@/utils'
+export default {
+  props: {
+    tableData: {
+      type: Array,
+      default: () => []
+    },
+    selectData: {
+      type: Array,
+      default: () => []
+    }
+  },
+  data() {
+    return {
+      columns: [{
+        type: 'selection'
+      },
+      {
+        label: '序号',
+        index: true
+      },
+      {
+        label: '业务编号',
+        prop: 'businessNumber',
+        showTooltip: true
+      },
+      {
+        label: '保理合同编号',
+        prop: 'contractNo',
+        showTooltip: true
+      },
+      {
+        label: '支用批次',
+        prop: 'quotaDisburseBatch',
+        showTooltip: true
+      },
+      {
+        label: '供应商名称',
+        prop: 'supplierName',
+        showTooltip: true
+      },
+      {
+        label: '放款日期',
+        prop: 'loanDate',
+        showTooltip: true
+      },
+      {
+        label: '放款金额',
+        prop: 'loanAmount',
+        showTooltip: true,
+        render: (h, row) => {
+          return <span> { handleMoney(row.loanAmount) }</span>
+        }
+      },
+      {
+        label: '待回款金额',
+        prop: 'returnedAmount',
+        showTooltip: true,
+        render: (h, row) => {
+          return <span> { handleMoney(row.returnedAmount) }</span>
+        }
+      }
+      ]
+    }
+  },
+  methods: {
+    getData() {
+      return this.$refs.commTable.multipleSelection
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.financing-goods {
+
+}
+</style>

+ 143 - 0
src/views/mySettlement/divideAccountsManage/components/ViewIncomePlan.vue

@@ -0,0 +1,143 @@
+<template>
+  <div class="view-income-plan">
+    <cy-comm-table
+      v-loading="loading"
+      :columns="columns"
+      :data="tableData"
+      :count="total"
+    />
+  </div>
+</template>
+
+<script>
+import { handleMoney } from '@/utils'
+// import { getLoanDisbursementPlan } from '@/api/divideAccountsManage/divideAccountsManage'
+export default {
+  props: {
+    incomePlanData: {
+      type: Object,
+      default: () => {}
+    }
+  },
+  data() {
+    return {
+      total: 0,
+      loading: false,
+      tableData: [],
+      columns: [
+        {
+          label: '序号',
+          index: true
+        },
+        {
+          label: '金额类型',
+          prop: 'amountType.name',
+          showTooltip: true
+        },
+        {
+          label: '收放款类型',
+          prop: 'paymentCollectionType',
+          showTooltip: true
+        },
+        {
+          label: '收款主体',
+          prop: 'receivingSubject',
+          showTooltip: true
+        },
+        {
+          label: '约定日期',
+          prop: 'planDate',
+          showTooltip: true
+        },
+        {
+          label: '应收/付金额',
+          prop: 'amount',
+          showTooltip: true,
+          render: (h, row) => {
+            return <span> { handleMoney(row.amount) }</span>
+          }
+
+        },
+        {
+          label: '实收/付日期',
+          prop: 'postName',
+          showTooltip: true,
+          render: (h, row) => {
+            let list = []
+            if (row.paymentCollectionType === '放款') {
+              list = row.loanRecordList.map(item => {
+                return { amount: item.thisLoanAmount, date: item.thisLoanDate }
+              })
+            } else {
+              list = row.amountAllocationList.map(item => {
+                return { amount: item.actualAmount, date: item.actualDate }
+              })
+            }
+            return list.map(item => {
+              return <div> { item.date }</div>
+            })
+          }
+        },
+        {
+          label: '实收/付总金额',
+          prop: 'toAssignedAmount',
+          showTooltip: true,
+          render: (h, row) => {
+            let list = []
+            if (row.paymentCollectionType === '放款') {
+              list = row.loanRecordList.map(item => {
+                return { amount: item.thisLoanAmount, date: item.thisLoanDate }
+              })
+            } else {
+              list = row.amountAllocationList.map(item => {
+                return { amount: item.actualAmount, date: item.actualDate }
+              })
+            }
+            return list.map(item => {
+              return <div> { handleMoney(item.amount) }</div>
+            })
+          }
+        },
+        {
+          label: '状态',
+          prop: 'status.name',
+          showTooltip: true
+        }
+      ]
+    }
+  },
+  watch: {
+    incomePlanData: {
+      handler(val) {
+        if (val === undefined) return
+        // this.featchData(val)
+      },
+      immediate: true,
+      deep: true
+    }
+  },
+  methods: {
+    featchData(row) {
+      this.loading = true
+      const { billingFactoringBusinessLoanRecordId, sopAccountsReceivableId } = row
+      // const params = {
+      //   page: this.page || 1,
+      //   rows: this.size || 10,
+      //   billingFactoringBusinessLoanRecordId,
+      //   sopAccountsReceivableId
+      // }
+      // getLoanDisbursementPlan(params).then(({ rows, records }) => {
+      //   this.loading = false
+      //   this.tableData = rows
+      //   this.total = records
+      // })
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.view-income-plan {
+
+}
+</style>

+ 85 - 29
src/views/mySettlement/divideAccountsManage/index.vue

@@ -9,7 +9,7 @@
         <div>
           <el-select v-model="search.status" placeholder="请选择状态" clearable>
             <el-option
-              v-for="item in constant.InvoiceStatus"
+              v-for="item in constant.ledgerStatus"
               :key="item.code"
               :label="item.name"
               :value="item.code"
@@ -17,7 +17,7 @@
           </el-select>
         </div>
         <div>
-          <el-input v-model="search.fastSearch" style="width: 300px" placeholder="请输入项目名称/主企业名称/核心企业名称" clearable />
+          <el-input v-model="search.customerName" style="width: 300px" placeholder="请输入项目名称/主企业名称/核心企业名称" clearable />
         </div>
         <div class="leftBtn">
           <el-button type="primary" @click="fetchData('search')">查询</el-button>
@@ -37,7 +37,7 @@
 
 <script>
 import { mapGetters } from 'vuex'
-import { getInvoicesManagementList } from '@/api/mySettlement/invoicesManagement'
+import { getList } from '@/api/mySettlement/divideAccountsManage'
 import { formatMoney } from '@/utils/index'
 export default {
   name: 'DivideAccountsManage',
@@ -48,7 +48,7 @@ export default {
       search: {
         businessNo: '',
         status: '',
-        fastSearch: ''
+        customerName: ''
       },
       total: 0,
       columns: [
@@ -58,37 +58,90 @@ export default {
         },
         {
           label: '分账单号',
-          prop: 'businessNumber',
+          prop: 'ledgerNumber',
           showTooltip: true
         },
         {
           label: '核心企业名称',
           showTooltip: true,
-          prop: 'businessName'
-        },
-        {
-          label: '入账金额(元)',
-          prop: 'openAmount',
-          showTooltip: true,
+          prop: 'enterprise',
           render: (h, row) => {
-            return <div>{ formatMoney(row.openAmount) }</div>
+            const btnList = row.assignVoList || []
+            const options = btnList.map(item => {
+              return (
+                <el-tooltip class='item' effect='dark' content={item.enterprise} placement='top'>
+                  <div class='one-ellipsis'>
+                    {item.enterprise}
+                  </div>
+                </el-tooltip>
+              )
+            })
+            return <div>{ options }</div>
           }
         },
+
         {
           label: '项目名称',
-          prop: 'taskName'
+          prop: 'projectName',
+          render: (h, row) => {
+            const btnList = row.assignVoList || []
+            const options = btnList.map(item => {
+              return (
+                <el-tooltip class='item' effect='dark' content={item.projectName} placement='top'>
+                  <div class='one-ellipsis'>
+                    {item.projectName}
+                  </div>
+                </el-tooltip>
+              )
+            })
+            return <div>{ options }</div>
+          }
         },
         {
           label: '保理合同编号',
-          prop: 'taskName'
+          prop: 'taskName',
+          render: (h, row) => {
+            const btnList = row.assignVoList || []
+            const options = btnList.map(item => {
+              return (
+                <el-tooltip class='item' effect='dark' content={item.contractNo} placement='top'>
+                  <div class='one-ellipsis'>
+                    {item.contractNo}
+                  </div>
+                </el-tooltip>
+              )
+            })
+            return <div>{ options }</div>
+          }
         },
         {
           label: '支用批次',
-          prop: 'taskName'
+          prop: 'quotaDisburseBatch',
+          render: (h, row) => {
+            const btnList = row.assignVoList || []
+            const options = btnList.map(item => {
+              return (
+                <el-tooltip class='item' effect='dark' content={item.quotaDisburseBatch} placement='top'>
+                  <div class='one-ellipsis'>
+                    {item.quotaDisburseBatch}
+                  </div>
+                </el-tooltip>
+              )
+            })
+            return <div>{ options }</div>
+          }
+        },
+        {
+          label: '入账金额(元)',
+          prop: 'ledgerAmount',
+          showTooltip: true,
+          render: (h, row) => {
+            return <div>{ formatMoney(row.ledgerAmount) }</div>
+          }
         },
         {
           label: '状态',
-          prop: 'status.name',
+          prop: 'ledgerStatusDict.name',
           showTooltip: true
         },
         {
@@ -100,7 +153,8 @@ export default {
                 msg: '查看',
                 icon: 'iconfont icon-orange icon-a-Group957',
                 power: 'projectNumber:delete',
-                category: 'see'
+                category: 'see',
+                rowPower: ['已完成']
               }
             ]
             const options = btnList.map(item => {
@@ -126,7 +180,7 @@ export default {
       return ({ item, row }) => {
         const { rowPower } = item
         if (rowPower) {
-          if (rowPower.includes(row.taskName)) {
+          if (rowPower.includes(row.ledgerStatusDict.name)) {
             return true
           }
         } else {
@@ -136,20 +190,24 @@ export default {
     }
   },
   mounted() {
-    // this.fetchData()
+    this.fetchData()
   },
   created() {
-    this.$store.dispatch('getConstant', ['InvoiceStatus'])
+    this.$store.dispatch('getConstant', ['ledgerStatus'])
   },
   methods: {
     fetchData(type) {
+      if (type === 'search') {
+        this.page = 1
+        this.size = 10
+      }
       this.loading = true
       const params = {
         ...this.search,
-        page: this.page,
-        rows: this.size
+        page: this.page || 1,
+        rows: this.size || 10
       }
-      getInvoicesManagementList(params).then(({ data }) => {
+      getList(params).then(({ data }) => {
         this.tableData = data.rows
         this.total = data.records
         this.loading = false
@@ -157,14 +215,12 @@ export default {
     },
     handlerOperate(type, row) {
       this.$router.push({
-        name: 'MySettlementInvoicesManagementApplyInvoicing',
-        params: { id: 'children' },
+        name: 'MySettlementDivideAccountsSee',
+        params: { id: row.id },
         query: {
-          module: '发票管理',
-          id: row.id,
-          taskId: row.taskId,
+          module: '分账管理',
           type,
-          status: row.status.code
+          supplierId: row.supplierId
         }
       })
     }

+ 483 - 0
src/views/mySettlement/divideAccountsManage/see.vue

@@ -0,0 +1,483 @@
+<template>
+  <div class="divide-account-edit">
+    <el-form ref="ruleForm" :key="key" :model="ruleForm" :rules="rules" label-width="150px" label-position="top" class="rule-form-orange">
+      <cy-info-title>基础信息</cy-info-title>
+      <el-form-item label="企业名称">
+        <el-input v-model="ledgerAccountBasicInfo.customerName" disabled placeholder="请输入企业名称" />
+      </el-form-item>
+      <el-form-item label="标签">
+        <el-radio-group v-model="ledgerAccountBasicInfo.label" disabled>
+          <el-radio :label="0">下游回款</el-radio>
+          <el-radio :label="1">上游回购</el-radio>
+        </el-radio-group>
+      </el-form-item>
+      <el-form-item label="分账单号">
+        <el-input v-model="ledgerAccountBasicInfo.ledgerNumber" disabled placeholder="请输入分账单号" />
+      </el-form-item>
+      <el-form-item label="入账类型">
+        <el-input v-model="ledgerAccountBasicInfo.ledgerTypeDict.name" disabled placeholder="请输入入账类型" />
+      </el-form-item>
+      <el-form-item label="入账金额">
+        <cy-amount-input v-model="ledgerAccountBasicInfo.ledgerAmount" disabled placeholder="请输入入账金额" />
+      </el-form-item>
+      <el-form-item label="入账日期">
+        <el-input v-model="ledgerAccountBasicInfo.ledgerDate" disabled placeholder="请输入入账日期" />
+      </el-form-item>
+      <template v-if="ledgerAccountBasicInfo.ledgerTypeDict.code === 'entryType_bills_discounted'">
+        <cy-info-title>贴现费用</cy-info-title>
+        <el-form-item label="贴现费用">
+          <cy-amount-input v-model="ledgerAccountBasicInfo.discountCharge" disabled placeholder="请输入贴现费用" />
+        </el-form-item>
+        <el-form-item label="说明" class="two-form-item">
+          <el-input v-model="ruleForm.remark" placeholder="请输入说明" :disabled="disabled" />
+        </el-form-item>
+      </template>
+
+      <cy-info-title>
+        货款分配
+      </cy-info-title>
+      <el-form-item label="货款金额" prop="name" style="width: 100%">
+        <div slot="label">
+          <span>货款金额</span>
+          <span class="form-label">(特别提醒:如一键计算后的分账结果不满足需求,请与风控经理沟通,调整还款方式为手动生成后进行收放款计划变更,再进行分账。)</span>
+        </div>
+        <cy-amount-input v-model="goodsMoney" disabled placeholder="请输入货款金额" />
+      </el-form-item>
+      <el-form-item style="width: 100%; margin-top: 20px">
+        <cy-comm-table
+          :columns="loanColumns"
+          :data="loanTableData"
+          :count="0"
+        />
+        <div class="calc-box">
+          <span>逾期利息合计:{{ handlerMoneyEmpty(getloanCalc.financingOverdueInterest) }}</span>
+          <span>融资利息合计:{{ handlerMoneyEmpty(getloanCalc.financingInterest) }}</span>
+          <span>融资管理费合计:{{ handlerMoneyEmpty(getloanCalc.financingManagementFee) }}</span>
+          <span>融资本金合计:{{ handlerMoneyEmpty(getloanCalc.financingPrincipal) }}</span>
+          <span>计提金额合计:{{ handlerMoneyEmpty(getloanCalc.accrualAmount) }}</span>
+          <span>平台利润合计:{{ handlerMoneyEmpty(getloanCalc.platformProfit) }}</span>
+          <span>质保金合计:{{ handlerMoneyEmpty(getloanCalc.guarantee) }}</span>
+          <span>实退金额合计:{{ handlerMoneyEmpty(getloanCalc.discountAmount) }}</span>
+          <span>应退利息合计:{{ handlerMoneyEmpty(getloanCalc.refundInterest) }}</span>
+          <span>应退管理费合计:{{ handlerMoneyEmpty(getloanCalc.refundManagementFee) }}</span>
+        </div>
+      </el-form-item>
+
+      <cy-info-title>
+        关联收款账号
+        <!-- <div slot="right">
+          <el-button type="primary" @click="paymentAccountClick">一键获取收款账号</el-button>
+        </div> -->
+      </cy-info-title>
+      <el-form-item style="width: 100%; margin-top: 20px">
+        <cy-comm-table
+          :columns="accountColumns"
+          :data="accountTableData"
+          :count="0"
+        />
+      </el-form-item>
+
+      <cy-info-title>回款合计</cy-info-title>
+      <el-form-item label="货款金额" class="one-form-item">
+        <cy-amount-input v-model="goodsMoney" disabled placeholder="请输入货款金额" />
+      </el-form-item>
+      <el-form-item v-if="ledgerAccountBasicInfo.ledgerTypeDict.code === 'entryType_bills_discounted'" label="贴现费用" class="one-form-item">
+        <cy-amount-input v-model="ledgerAccountBasicInfo.discountCharge" disabled placeholder="请输入贴现费用" />
+      </el-form-item>
+    </el-form>
+  </div>
+</template>
+
+<script>
+import { getDetails } from '@/api/mySettlement/divideAccountsManage'
+import { handleMoney } from '@/utils'
+export default {
+  name: 'DivideAccountEdit',
+  data() {
+    return {
+      ruleForm: {
+        remark: ''
+      },
+      rules: {},
+      key: 0,
+      loanTableData: [],
+      accountTableData: [],
+      accountColumns: [
+        {
+          label: '供应商名称',
+          prop: 'supplierName'
+        },
+        {
+          label: '所属银行',
+          prop: 'bankName'
+        },
+        {
+          label: '账户名称',
+          prop: 'accountName'
+        },
+        {
+          label: '账号',
+          prop: 'accountNumber'
+        }
+      ],
+      detailsInfo: {},
+      financingGoodsList: [],
+      acceptanceGoodsList: [],
+      ledgerAccountBasicInfo: {
+        ledgerTypeDict: {}
+      },
+      selectFinancingGoodsList: [],
+      selectAcceptanceGoodsList: [],
+      oneCalcStatus: false,
+      incomePlanData: {},
+      disabled: false
+    }
+  },
+  computed: {
+    goodsMoney() {
+      return this.loanTableData.length ? this.loanTableData.reduce((total, item) => {
+        return total * 1 + item.currentAssignAmount * 1
+      }, 0) : '0.00'
+    },
+    getloanCalc() {
+      const obj = {
+        financingOverdueInterest: 0,
+        financingInterest: 0,
+        financingManagementFee: 0,
+        financingPrincipal: 0,
+        accrualAmount: 0,
+        platformProfit: 0,
+        guarantee: 0,
+        discountAmount: 0,
+        refundInterest: 0,
+        refundManagementFee: 0
+      }
+      this.loanTableData.forEach(item => {
+        obj.financingOverdueInterest += Number(item.financingOverdueInterest)
+        obj.financingInterest += Number(item.financingInterest)
+        obj.financingManagementFee += Number(item.financingManagementFee)
+        obj.financingPrincipal += Number(item.financingPrincipal)
+        obj.accrualAmount += Number(item.accrualAmount)
+        obj.platformProfit += Number(item.platformProfit)
+        obj.guarantee += Number(item.guarantee)
+        obj.discountAmount += Number(item.discountAmount)
+        obj.refundInterest += Number(item.refundInterest)
+        obj.refundManagementFee += Number(item.refundManagementFee)
+      })
+      return obj
+    },
+    loanColumns() {
+      return [
+        {
+          label: '序号',
+          index: true
+        },
+        {
+          label: '结算单号',
+          prop: 'settlementNumber',
+          showTooltip: true,
+          width: '120'
+        },
+        {
+          label: '业务编号',
+          prop: 'businessNumber',
+          showTooltip: true,
+          width: '120'
+        },
+        {
+          label: '保理合同编号',
+          width: '110',
+          prop: 'contractNo',
+          showTooltip: true
+        },
+        {
+          label: '支用批次',
+          prop: 'quotaDisburseBatch',
+          showTooltip: true
+        },
+        {
+          label: '供应商名称',
+          prop: 'supplierName',
+          width: '150',
+          showTooltip: true
+        },
+        {
+          label: '销售总价',
+          prop: 'salesTotalPrice',
+          showTooltip: true,
+          width: '120',
+          render: (h, row) => {
+            return <span> { this.handlerMoneyEmpty(row.salesTotalPrice) }</span>
+          }
+        },
+        {
+          label: '采购总价',
+          prop: 'purchaseTotalPrice',
+          showTooltip: true,
+          width: '120',
+          render: (h, row) => {
+            return <span> { this.handlerMoneyEmpty(row.purchaseTotalPrice) }</span>
+          }
+        },
+        {
+          label: '待分配金额',
+          prop: 'toAssignedAmount',
+          width: '150',
+          showTooltip: true,
+          render: (h, row) => {
+            return <span> { this.handlerMoneyEmpty(row.toAssignedAmount) }</span>
+          }
+        },
+        {
+          label: '放款日期结算日期',
+          prop: 'loanDate',
+          showTooltip: true,
+          width: '80'
+        },
+        {
+          label: '待回款金额',
+          prop: 'returnedAmount',
+          width: '120',
+          showTooltip: true,
+          render: (h, row) => {
+            return <span> { this.handlerMoneyEmpty(row.returnedAmount) }</span>
+          }
+        },
+        {
+          label: '本次分配金额',
+          prop: 'currentAssignAmount',
+          width: '160',
+          render: (h, row) => {
+            return <cy-amount-input disabled={this.disabled} v-model={row.currentAssignAmount} placeholder='请输入本次分配金额' onBlur={ this.oneCalc }></cy-amount-input>
+          }
+        },
+        {
+          label: '是否计提(履约保证金)',
+          prop: 'accrual',
+          showTooltip: true,
+          width: '80',
+          render: (h, row) => {
+            return <el-select v-model={ row.accrual } disabled={this.disabled} onChange={() => { this.oneCalc('click') }} placeholder='请选择是否计提'>
+              <el-option label='是' value={true}></el-option>
+              <el-option label='否' value={false}></el-option>
+            </el-select>
+          }
+        },
+        {
+          label: '是否分配逾期利息',
+          prop: 'hasAssignOverdueInterest',
+          showTooltip: true,
+          width: '80',
+          render: (h, row) => {
+            return <el-select disabled={this.disabled} v-model={ row.hasAssignOverdueInterest } onChange={() => { this.oneCalc('click') }} placeholder='请选择是否'>
+              <el-option label='是' value={true}></el-option>
+              <el-option label='否' value={false}></el-option>
+            </el-select>
+          }
+        },
+        {
+          label: '逾期利息',
+          prop: 'financingOverdueInterest',
+          showTooltip: true,
+          show: this.oneCalcStatus,
+          width: '120',
+          render: (h, row) => {
+            return <span> { this.handlerMoneyEmpty(row.financingOverdueInterest) }</span>
+          }
+        },
+        {
+          label: '是否分配融资利息',
+          prop: 'hasAssignInterest',
+          showTooltip: true,
+          width: '80',
+          render: (h, row) => {
+            return <el-select disabled={this.disabled} v-model={ row.hasAssignInterest } onChange={() => { this.oneCalc('click') }} placeholder='请选择是否'>
+              <el-option label='是' value={true}></el-option>
+              <el-option label='否' value={false}></el-option>
+            </el-select>
+          }
+        },
+        {
+          label: '融资利息',
+          prop: 'financingInterest',
+          showTooltip: true,
+          show: this.oneCalcStatus,
+          width: '120',
+          render: (h, row) => {
+            return <span> { this.handlerMoneyEmpty(row.financingInterest) }</span>
+          }
+        },
+        {
+          label: '是否分配管理费',
+          prop: 'hasAssignManagementFee',
+          showTooltip: true,
+          width: '80',
+          render: (h, row) => {
+            return <el-select disabled={this.disabled} v-model={ row.hasAssignManagementFee } onChange={() => { this.oneCalc('click') }} placeholder='请选择是否'>
+              <el-option label='是' value={true}></el-option>
+              <el-option label='否' value={false}></el-option>
+            </el-select>
+          }
+        },
+        {
+          label: '融资管理费',
+          prop: 'financingManagementFee',
+          width: '120',
+          showTooltip: true,
+          show: this.oneCalcStatus,
+          render: (h, row) => {
+            return <span> { this.handlerMoneyEmpty(row.financingManagementFee) }</span>
+          }
+
+        },
+        {
+          label: '融资本金',
+          prop: 'financingPrincipal',
+          showTooltip: true,
+          show: this.oneCalcStatus,
+          width: '120',
+          render: (h, row) => {
+            return <span> { this.handlerMoneyEmpty(row.financingPrincipal) }</span>
+          }
+        },
+        {
+          label: '履约保证金',
+          prop: 'accrualAmount',
+          showTooltip: true,
+          show: this.oneCalcStatus,
+          width: '120',
+          render: (h, row) => {
+            return <span> { this.handlerMoneyEmpty(row.accrualAmount) }</span>
+          }
+        },
+        {
+          label: '平台利润',
+          prop: 'platformProfit',
+          showTooltip: true,
+          width: '120',
+          render: (h, row) => {
+            return <span> { this.handlerMoneyEmpty(row.platformProfit) }</span>
+          }
+        },
+        {
+          label: '质保金',
+          prop: 'guarantee',
+          showTooltip: true,
+          show: this.oneCalcStatus,
+          width: '120',
+          render: (h, row) => {
+            return <span> { this.handlerMoneyEmpty(row.guarantee) }</span>
+          }
+        },
+        {
+          label: '实退金额',
+          prop: 'discountAmount',
+          showTooltip: true,
+          show: this.oneCalcStatus,
+          width: '120',
+          render: (h, row) => {
+            return <span> { this.handlerMoneyEmpty(row.discountAmount) }</span>
+          }
+        },
+        {
+          label: '应退利息',
+          prop: 'refundInterest',
+          showTooltip: true,
+          show: this.oneCalcStatus,
+          width: '120',
+          render: (h, row) => {
+            return <span> { this.handlerMoneyEmpty(row.refundInterest) }</span>
+          }
+        },
+        {
+          label: '应退管理费',
+          prop: 'refundManagementFee',
+          width: '120',
+          showTooltip: true,
+          show: this.oneCalcStatus,
+          render: (h, row) => {
+            return <span> { this.handlerMoneyEmpty(row.refundManagementFee) }</span>
+          }
+        },
+        {
+          label: '操作',
+          width: '100',
+          show: !this.disabled,
+          render: (h, row, index) => {
+            const btnList = [
+              { msg: '删除', icon: 'el-icon-delete', category: 'delete' }
+            ]
+            if (row.contractNo && row.quotaDisburseBatch) {
+              btnList.unshift({ msg: '查看放款计划', icon: 'iconfont icon-Magnifier', category: 'see' })
+            }
+            const options = btnList.map(item => {
+              return (
+                <el-tooltip class='item' effect='dark' content={item.msg} placement='top'>
+                  <span class='table-icon-box'>
+                    <i class={item.icon} onClick={() => { this.handlerOperate(item.category, row, index) }}></i>
+                  </span>
+                </el-tooltip>
+              )
+            })
+            return <div>{ options }</div>
+          }
+        }
+      ]
+    }
+  },
+  created() {
+    this.getDetails()
+    const { type } = this.$route.query
+    if (type === 'see') {
+      this.disabled = true
+    }
+  },
+  methods: {
+    getDetails() {
+      const { id } = this.$route.params
+      const { supplierId } = this.$route.query
+      getDetails({ id, supplierId }).then((data) => {
+        const { ledgerAccountBasicInfo, goodsAssignList, supplierBankCardInfoList } = data.data
+        this.ledgerAccountBasicInfo = ledgerAccountBasicInfo
+        this.loanTableData = goodsAssignList
+        this.accountTableData = supplierBankCardInfoList
+        if (goodsAssignList.length) {
+          this.oneCalcStatus = true
+        }
+      })
+    },
+
+    handlerMoneyEmpty(val) {
+      return val || Number(val === 0) ? handleMoney(val) : val
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.divide-account-edit {
+  .form-label {
+    color: red;
+    margin-left: 10px;
+  }
+  .calc-box {
+    width: 100%;
+    padding: 5px 10px;
+    background: #F5F6F6;
+    // margin-top: 20px;
+    & > span {
+      margin-right: 10px;
+    }
+  }
+}
+</style>
+
+<style lang="scss">
+.divide-account-edit {
+  .el-icon-delete {
+    color: #FE7D0B;
+    font-size: 16px;
+  }
+}
+
+</style>

+ 3 - 4
src/views/mySettlement/tradeMain.vue

@@ -52,14 +52,13 @@ export default {
     }
   },
   created() {
-    const { type } = this.$route.query
-    if (type) {
-      this.type = type
-    }
+    // const { type } = this.$route.query
+    this.type = this.$store.state.user.myTradeType || 'InvoicesManagement'
   },
   methods: {
     handlerOptions(name) {
       this.type = name
+      this.$store.commit('user/SET_TRADE_TYPE', name)
     }
   }
 }

+ 4 - 1
src/views/myTrade/acceptanceManagement/components/HistoryView.vue

@@ -13,6 +13,7 @@
           </template>
           <add v-if="item.formBusinessName === '录入验收单'" :details-info="item.obj" />
           <price-adjust v-if="item.formBusinessName.includes( '单价调整')" :details-info="item.obj" />
+          <sign-confirm v-if="item.formBusinessName === '签署确认'" :details-info="item.obj" />
         </el-collapse-item>
       </el-collapse>
       <!-- <el-empty v-else style="height: calc(100vh - 0.85rem - 90px)"></el-empty> -->
@@ -25,11 +26,13 @@ import { getHisDetails } from '@/api/myTrade/acceptanceManagement/index'
 import collapseSeeMix from '@/mixins/collapseSeeMix'
 import Add from './historyViewContent/add'
 import PriceAdjust from './historyViewContent/priceAdjust'
+import SignConfirm from './historyViewContent/signConfirm.vue'
 
 export default {
   components: {
     Add,
-    PriceAdjust
+    PriceAdjust,
+    SignConfirm
   },
   mixins: [collapseSeeMix],
   data() {

+ 143 - 0
src/views/myTrade/acceptanceManagement/components/historyViewContent/signConfirm.vue

@@ -0,0 +1,143 @@
+<template>
+  <div v-loading="isLoading" class="acceptance-sign">
+
+    <!-- 电子合同信息 -->
+    <cy-info-title> 电子合同信息 </cy-info-title>
+    <table border class="view-table" cellspacing="0">
+      <tr>
+        <th rowspan="100" style="width: 150px;">{{ electronicSignaturePersonal.name }}</th>
+        <td style="width: 150px;">认证链接</td>
+        <td>
+          <div style="display: flex; flex-direction: row; justify-content: space-between;">
+            <span>{{ electronicSignaturePersonal.shortAuthUrl }}</span>
+          </div>
+        </td>
+        <td style="width: 250px;">
+          认证状态:{{ electronicSignaturePersonal.authStatus ? '已认证' : '未认证' }}
+        </td>
+      </tr>
+      <tr>
+        <td>签署链接</td>
+        <td colspan="2">
+          <div style="display: flex; flex-direction: row; justify-content: space-between;">
+            <span>{{ shortContractLink }}</span>
+          </div>
+        </td>
+      </tr>
+      <tr v-for="item in acceptanceSignConfirmationElectronicInfoHistories" :key="item.id">
+        <td colspan="2">{{ item.contractName }}</td>
+        <td>
+          签署状态:{{ item.signStatus ? '已签署' : '未签署' }}
+        </td>
+      </tr>
+    </table>
+
+    <!-- 签署结论 -->
+    <cy-info-title style="margin: 10px 0 0px;"> 签署结论 </cy-info-title>
+    <el-form
+      ref="ruleFormRef"
+      :model="ruleForm"
+      label-position="top"
+      label-width="150px"
+      class="rule-form-orange"
+      :style="formStyle"
+    >
+      <el-form-item label="签署结论" prop="signConclusion" style="width: 100%;">
+        <el-radio-group v-model="ruleForm.signConclusion">
+          <el-radio :label="1" disabled>完成</el-radio>
+          <el-radio :label="0" disabled>终止</el-radio>
+        </el-radio-group>
+      </el-form-item>
+      <el-form-item label="说明" style="width: 100%;" prop="remark">
+        <el-input v-model="ruleForm.remark" type="textarea" :rows="3" placeholder="请输入说明" disabled />
+      </el-form-item>
+    </el-form>
+
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'AcceptanceSign',
+  props: {
+    'formStyle': {
+      type: Object,
+      default: () => {}
+    },
+    detailsInfo: {
+      type: Object,
+      default: () => {}
+    }
+  },
+  data() {
+    return {
+      ruleForm: {
+        signConclusion: '',
+        remark: ''
+      },
+      electronicSignaturePersonal: '',
+      shortContractLink: '',
+      acceptanceSignConfirmationElectronicInfoHistories: [],
+      isLoading: false
+
+    }
+  },
+  watch: {
+    detailsInfo: {
+      handler(newV) {
+        if (Object.keys(newV).length) {
+          const {
+            electronicSignaturePersonal,
+            shortContractLink,
+            acceptanceSignConfirmationElectronicInfoHistories,
+            signConclusion,
+            remark
+          } = JSON.parse(JSON.stringify(newV))
+          this.ruleForm = { signConclusion, remark }
+
+          this.electronicSignaturePersonal = electronicSignaturePersonal
+          this.shortContractLink = shortContractLink
+          this.acceptanceSignConfirmationElectronicInfoHistories = acceptanceSignConfirmationElectronicInfoHistories
+        }
+      },
+      immediate: true,
+      deep: true
+    }
+  }
+}
+</script>
+    <style lang="scss" scoped>
+    .acceptance-sign {
+      padding: 10px 20px;
+
+      .view-table {
+        width: 100%;
+        border-color: rgba(228, 228, 228, .2);
+        margin-bottom: 20px;
+        table-layout: fixed;
+        tr {
+          width: 100%;
+          td, th {
+            border-width: 1px;
+            border-color: rgba(228, 228, 228, .2);
+            height: 40px;
+            padding-left: 10px;
+            background-color: #ffffff;
+            word-break: break-all;
+          }
+          th {
+            background-color: #f5f6f6;
+            font-weight: normal;
+          }
+        }
+      }
+      .el-form {
+          padding: 10px 20px;
+      }
+      .statistics {
+          color: #FF0000;
+          margin-left: 20px;
+          font-size: 14px;
+      }
+    }
+    </style>

+ 1 - 1
src/views/myTrade/acceptanceManagement/index.vue

@@ -58,7 +58,7 @@
 import { MessageBox } from 'element-ui'
 import { mapGetters } from 'vuex'
 import indexTable from './indexTable'
-import { exportFile, exportUrl } from '@/utils/index'
+import { exportFile } from '@/utils/index'
 import { getAcceptanceFormList, applyApproval, deleteAcceptance, downloadFinishedFiles, previewFinishedFiles } from '@/api/myTrade/acceptanceManagement/index'
 export default {
   name: 'AcceptanceManagement',

+ 3 - 3
src/views/myTrade/acceptanceManagement/indexTable.js

@@ -121,8 +121,8 @@ export default {
               if (row.showPriceChange) {
                 btnList.push({ msg: '单价调整', icon: 'iconfont icon-orange icon-a-Group990', category: 'change' })
               }
-              btnList.push({ msg: '预览签署附件', icon: 'iconfont icon-orange icon-Union4', category: 'preview' })
-              btnList.push({ msg: '下载签署附件', icon: 'iconfont icon-orange icon-Union', category: 'download' })
+              btnList.push({ msg: '预览签署附件', icon: 'iconfont icon-orange icon-a-Group8141', category: 'preview' })
+              btnList.push({ msg: '下载签署附件', icon: 'iconfont icon-orange icon-Union', category: 'download', style: 'display: inline-block; transform: scale(0.65)' })
             }
             // btnList.push({
             //   msg: '删除',
@@ -134,7 +134,7 @@ export default {
                 // this.tablePower({ item, row }) &&
                 <el-tooltip class='item' effect='dark' content={item.msg} placement='top' >
                   <span class='table-icon-box' style={{ 'margin-right': '10px' }}>
-                    <i class={item.icon} style={ item.category === 'download' || item.category === 'preview' ? { 'font-size': '16px', 'margin-top': '20px' } : ''} onClick={() => { this.handlerOperate(item.category, row) }}></i>
+                    <i class={item.icon} style={item.style} onClick={() => { this.handlerOperate(item.category, row) }}></i>
                   </span>
                 </el-tooltip>
               )

+ 0 - 2
src/views/perview/index.vue

@@ -42,10 +42,8 @@ export default {
       this.loading = true
       try {
         const [file] = e.target.files
-        console.log(file, 777)
         const arrayBuffer = await readBuffer(file)
         this.loading = false
-        console.log(arrayBuffer, 999)
         this.last = await this.displayResult(arrayBuffer, file)
       } catch (e) {
         console.error(e)