Procházet zdrojové kódy

Merge branch 'develop_yh10' of jianguan-web/jg-ocs-html into develop_yh11

李磊 před 2 roky
rodič
revize
61b085a35d

+ 1 - 1
public/version.json

@@ -1,4 +1,4 @@
 {
-    "version": "2.1.71",
+    "version": "2.1.72",
     "message": "发现有新版本发布,确定更新系统?"
 }

+ 3 - 1
src/components/index.less

@@ -275,7 +275,9 @@
 .ant-page-header{
   padding: 5px 10px!important;
 }
-
+.ant-radio-disabled + span{
+    color: rgba(0, 0, 0, 0.6)!important;
+  }
 // 表格 样式
 .sTable{
   .ant-table{

+ 106 - 0
src/views/common/dealerSearchList.vue

@@ -0,0 +1,106 @@
+<template>
+  <a-select
+    show-search
+    label-in-value
+    :size="size"
+    :value="dealerName"
+    mode="combobox"
+    :placeholder="placeholder"
+    style="width: 100%"
+    :filter-option="false"
+    :not-found-content="fetching ? undefined : null"
+    :dropdownMatchSelectWidth="false"
+    :defaultActiveFirstOption="false"
+    @search="fetchUser"
+    @change="handleChange"
+    allowClear
+    :disabled="disabled"
+  >
+    <a-spin v-if="fetching" slot="notFoundContent" size="small" />
+    <a-select-option v-for="item in data" :key="item.dealerSn" :value="item.dealerName">
+      {{ item.dealerName }}
+    </a-select-option>
+  </a-select>
+</template>
+<script>
+import debounce from 'lodash/debounce'
+import { dealerSubareaScopeList, dealerDetailBySn } from '@/api/dealer'
+export default {
+  props: {
+    size: {
+      type: String,
+      default: 'default'
+    },
+    placeholder: {
+      type: String,
+      default: '请输入名称搜索'
+    },
+    disabled: {
+      type: Boolean,
+      default: false
+    }
+  },
+  data () {
+    this.lastFetchId = 0
+    this.fetchUser = debounce(this.fetchUser, 800)
+    return {
+      data: [],
+      dealerName: [],
+      fetching: false
+    }
+  },
+  methods: {
+    fetchUser (dealerName) {
+      console.log('fetching user', dealerName)
+      if (dealerName == '') return
+      this.lastFetchId += 1
+      const fetchId = this.lastFetchId
+      this.data = []
+      this.fetching = true
+      dealerSubareaScopeList({ nameLike: dealerName.replace(/\s+/g, ''), pageNo: 1, pageSize: 20 }).then(res => {
+        if (fetchId !== this.lastFetchId) {
+          return
+        }
+        this.data = res.data && res.data.list ? res.data.list : []
+        this.fetching = false
+      })
+    },
+    handleChange (value) {
+      if (value && value.key) {
+        const obj = this.data.find(item => item.dealerName.replace(/\s+/g, '') == value.key)
+        value.name = obj ? obj.dealerName : ''
+        value.row = obj
+      }
+      Object.assign(this, {
+        dealerName: value,
+        data: [],
+        fetching: false
+      })
+      this.$emit('change', value || { key: undefined })
+    },
+    resetForm () {
+      this.dealerName = []
+      Object.assign(this, {
+        dealerName: undefined,
+        data: [],
+        fetching: false
+      })
+    },
+    // 查询详细
+    getDetail (sn) {
+      dealerDetailBySn({ sn: sn }).then(res => {
+        const val = { key: sn }
+        val.label = res.data.dealerName
+        val.row = res.data
+        Object.assign(this, {
+          dealerName: val,
+          data: [res.data],
+          fetching: false
+        })
+        this.$emit('change', val)
+        this.$emit('dealerDetail', res.data || null)
+      })
+    }
+  }
+}
+</script>

+ 2 - 1
src/views/financialManagement/financialCollection/baseModal.vue

@@ -27,12 +27,13 @@
             v-model="form.payerType"
             showType="radio"
             code="PAYER_TYPE"
+            :disabled="!!bookSn"
             @change="payerTypeChange"
             placeholder="请选择付款方类型"
           ></v-select>
         </a-form-model-item>
         <a-form-model-item v-if="form.payerType=='DEALER'" label="付款方" prop="dealerSn">
-          <dealerSubareaScopeList ref="settleClientName" @change="custChange" />
+          <dealerSubareaScopeList :disabled="!!bookSn" ref="settleClientName" @change="custChange" />
         </a-form-model-item>
         <a-form-model-item v-if="form.payerType=='DEPT'" label="付款方" prop="payerName">
           <a-input :maxLength="30" placeholder="请输入付款方名称" v-model="form.payerName"></a-input>

+ 4 - 0
src/views/financialManagement/financialCollection/detail.vue

@@ -51,6 +51,7 @@
           :rowKey="(record) => record.id"
           :columns="columns"
           :data="loadData"
+          :defaultLoadData="false"
           :showPagination="false"
           bordered>
           <template slot="expandedRowRender" slot-scope="record">
@@ -164,6 +165,9 @@ export default {
           this.disabled = false
         }
       })
+      this.$nextTick(()=>{
+        this.$refs.table.refresh(true)
+      })
     },
     // 返回
     handleBack (data) {

+ 2 - 0
src/views/financialManagement/financialCollection/edit.vue

@@ -276,6 +276,7 @@ export default {
             for (var i = 0; i < data.length; i++) {
               data[i].no = i + 1
               const cons = data[i].bizType == 'DISPATCH' ? {
+                createDate:data[i].dispatchBill.createDate,
                 buyerName: data[i].dispatchBill.buyerName,
                 receiverName: data[i].dispatchBill.receiverName,
                 sendNo: data[i].dispatchBill.sendNo,
@@ -287,6 +288,7 @@ export default {
                 dispatchBillSn: data[i].dispatchBill.dispatchBillSn,
                 salesBillSn: data[i].dispatchBill.salesBillSn
               } : {
+                createDate:data[i].allocateBill.createDate,
                 buyerName: data[i].allocateBill.targetName,
                 receiverName: data[i].allocateBill.receiverName,
                 sendNo: data[i].allocateBill.sendNo,

+ 23 - 9
src/views/financialManagement/financialCollection/selectGlAllocatModal.vue

@@ -22,12 +22,12 @@
               </a-col>
               <a-col :md="6" :sm="24">
                 <a-form-item label="客户名称" :label-col="{ span:7 }" :wrapper-col="{ span:17}">
-                  <dealerSubareaScopeList ref="dealerSubareaScopeList" id="pushOrder-buyerName" @change="custChange" />
+                  <dealerSearchList ref="dealerSubareaScopeList" id="pushOrder-buyerName" @change="custChange" />
                 </a-form-item>
               </a-col>
               <a-col :md="6" :sm="24">
                 <a-form-item label="收货客户名称" :label-col="{ span:7 }" :wrapper-col="{ span:17}">
-                  <dealerSubareaScopeList ref="shbuyerName" id="pushOrder-shbuyerName" @change="shcustChange" />
+                  <dealerSearchList ref="shbuyerName" id="pushOrder-shbuyerName" @change="shcustChange" />
                 </a-form-item>
               </a-col>
               <a-col :md="4" :sm="24">
@@ -92,10 +92,10 @@ import { STable, VSelect } from '@/components'
 import { allocateBillList } from '@/api/allocateBill'
 import commonModal from '@/views/common/commonModal.vue'
 import allocationDetailModal from '@/views/allocationManagement/transferOut/detail.vue'
-import dealerSubareaScopeList from '@/views/common/dealerSubareaScopeList.vue'
+import dealerSearchList from '@/views/common/dealerSearchList.vue'
 export default {
   name: 'SelectGlAllocatModal',
-  components: { STable, VSelect, dealerSubareaScopeList, commonModal, allocationDetailModal },
+  components: { STable, VSelect, dealerSearchList, commonModal, allocationDetailModal },
   props: {
     openModal: { //  弹框显示状态
       type: Boolean,
@@ -128,7 +128,7 @@ export default {
       showDetailModal: false,
       bizSn: null,
       queryParam: {
-        buyerSn: undefined, //  客户名称
+        targetSn: undefined, //  客户名称
         receiverSn: undefined, // 收货客户
         allocateNo: '' //  调拨单号
       },
@@ -179,10 +179,24 @@ export default {
   },
   methods: {
     custChange (val) {
-      this.queryParam.buyerSn = val.key
+      console.log(val)
+      if(val.row){
+        this.queryParam.targetSn = val.row.dealerSn
+        this.queryParam.targetName = undefined
+      }else{
+        this.queryParam.targetSn = undefined
+        this.queryParam.targetName = val.key
+      }
     },
     shcustChange (val) {
-      this.queryParam.receiverSn = val.key
+      console.log(val)
+      if(val.row){
+        this.queryParam.receiverSn = val.row.dealerSn
+        this.queryParam.receiverName = undefined
+      }else{
+        this.queryParam.receiverSn = undefined
+        this.queryParam.receiverName = val.key
+      }
     },
     handleDetail (row, type) {
       this.bizSn = row.allocateSn
@@ -215,7 +229,7 @@ export default {
     // 重置
     resetSearchForm (flag) {
       this.queryParam = {
-        buyerSn: undefined, //  客户名称
+        targetSn: undefined, //  客户名称
         receiverSn: undefined, // 收货客户
         allocateNo: '' //  调拨单号
       }
@@ -245,7 +259,7 @@ export default {
         if (this.dealerSn) {
           this.resetSearchForm(1)
           // 回显客户
-          this.queryParam.buyerSn = this.dealerSn
+          this.queryParam.targetSn = this.dealerSn
           this.$nextTick(() => {
             this.$refs.dealerSubareaScopeList.getDetail(this.dealerSn)
             this.$refs.table.refresh(true)

+ 21 - 5
src/views/salesManagement/receiptPrint/list.vue

@@ -161,7 +161,7 @@ export default {
       loadData: parameter => {
         this.disabled = true
         this.spinning = true
-        if(this.currentTab == 1){
+        if (this.currentTab == 1) {
           this.queryParam.isAll = '1'
           this.queryParam.status = 'AUDIT_PASS'
         }
@@ -236,20 +236,34 @@ export default {
       const auditInfo = await getBatchLastProcessInstance({ 'businessType': 'FINANCE_BOOK', 'businessSnList': bookSns }).then(res => res.data)
       console.log(auditInfo)
       bookSns.map(item => {
+        // 授信明细
         const rs = rows.filter(a => a.bookSn == item)
         let detailItemUseStr = ''
         rs.map(b => {
           if (b.detailItemUseList) {
-            b.detailItemUseList.map(k => {
-              detailItemUseStr = detailItemUseStr + k.itemName + '(' + k.itemAmount + ');'
+            b.detailItemUseList.map((k, i) => {
+              detailItemUseStr = detailItemUseStr + k.itemName + '(' + k.itemAmount + ')' + (i == b.detailItemUseList.length - 1 ? '。' : ';')
             })
           }
         })
-        retArr.push({ audit: auditInfo[item], detail: detailItemUseStr, subList: rs })
+        // 审核信息
+        const auditStr = this.getAuditInfo(auditInfo[item])
+        retArr.push({ audit: auditStr, detail: detailItemUseStr, subList: rs })
       })
       console.log(retArr, '------------')
       this.handlePrint(retArr, 1, rows, bookSns)
     },
+    // 获取审核信息
+    getAuditInfo (auditList) {
+      let auditStr = ''
+      if (auditList && auditList.taskVOList) {
+        const auditLists = auditList.taskVOList.filter(item => item.userType == '审批人')
+        auditLists.map((a, i) => {
+          auditStr = auditStr + a.userName + '(' + a.state + ')' + (i == auditLists.length - 1 ? '。' : ';')
+        })
+      }
+      return auditStr
+    },
     // 收款打印
     async handlePrint (row, type, list, bookSns) {
       this.spinning = true
@@ -266,7 +280,9 @@ export default {
             detailItemUseStr = detailItemUseStr + k.itemName + '(' + k.itemAmount + ');'
           })
         }
-        this.$refs.printModel.getData(type ? row : [{ audit: auditInfo[list.bookSn], detail: detailItemUseStr, subList: [row] }], type ? list : [list])
+        // 审核信息
+        const auditStr = auditInfo ? this.getAuditInfo(auditInfo[list.bookSn]) : ''
+        this.$refs.printModel.getData(type ? row : [{ audit: auditStr, detail: detailItemUseStr, subList: [row] }], type ? list : [list])
       })
     },
     printOk () {

+ 3 - 9
src/views/salesManagement/receiptPrint/printModel.vue

@@ -63,14 +63,8 @@
                       </tr>
                     </table>
                     <div style="padding:5pt 0;border-bottom: 1px solid #333;">使用授信明细:{{ fcItem.detail||'暂无。' }}</div>
-                    <div style="padding:5pt 0;" v-if="fcItem.audit&&fcItem.audit.taskVOList">
-                      审批人员:
-                      <span v-for="audit in fcItem.audit.taskVOList" :key="audit.processInstanceId" v-if="audit.userType == '审批人'">
-                        {{ audit.userName }}({{ audit.state }});
-                      </span>
-                    </div>
-                    <div style="padding:5pt 0;" v-else>
-                      审批人员:
+                    <div style="padding:5pt 0;">
+                      审批人员:{{ fcItem.audit||'暂无。' }}
                     </div>
                   </div>
                 </div>
@@ -141,7 +135,7 @@ export default {
       }, this.printNums, this.financeBookList)
     },
     getData (data, list) {
-      console.log(data)
+      console.log(data, list)
       this.financeBookList = data
       list.map(item => {
         this.printNums.push({

+ 1 - 11
src/views/salesManagement/salesCollection/list.vue

@@ -193,17 +193,7 @@
       >
         <div style="text-align: center;line-height: 24px;">
           <div v-if="handlePlData.length">{{ handlePlData[0].settleClientName }},共 {{ handlePlData && handlePlData.length }} 个备货单,合计 {{ totalAmount }} 元</div>
-          <div style="padding: 15px 0;font-weight: bold;">请选择收款类型</div>
-          <div>
-            <a-radio-group v-model="collectionType">
-              <!-- <a-radio :value="1">
-                关联收款单
-              </a-radio> -->
-              <a-radio :value="0">
-                仅标记收款
-              </a-radio>
-            </a-radio-group>
-          </div>
+          <div style="padding: 15px 0;font-weight: bold;font-size:14px;">请确认收款类型变更为标记收款吗?</div>
         </div>
       </commonModal>
 

+ 57 - 15
src/views/salesManagement/salesCollection/voucherModal.vue

@@ -78,19 +78,11 @@
       </div>
       <div class="btn-box">
         <a-button @click="handleCommonCancel" v-if="isCancel">{{ cancelText }}</a-button>
-        <a-button :loading="spinning" type="primary" @click="handlePrint()">收款打印</a-button>
+        <a-button v-if="detail&&detail.keepType =='RELATION_BOOK'" :loading="spinning" type="primary" @click="handlePlPrint()">收款打印</a-button>
       </div>
     </a-spin>
     <!-- 收款打印 -->
-    <commonModal
-      modalTit="收款打印预览"
-      bodyPadding="10px"
-      width="1024px"
-      :showFooter="false"
-      :openModal="showTipModal"
-      @cancel="canselPrintView">
-      <printModel ref="printModel" @cancel="showTipModal=false"></printModel>
-    </commonModal>
+    <printModel ref="printModel" @cancel="canselPrintView"></printModel>
     <!-- 查看财务收款详情 -->
     <commonModal
       modalTit="财务收款详情"
@@ -118,7 +110,8 @@ import commonModal from '@/views/common/commonModal.vue'
 import printModel from '../receiptPrint/printModel.vue'
 import detailModal from '@/views/financialManagement/financialCollection/detail.vue'
 import collectDetailModal from './detailModal.vue'
-import { settleReceiptFindBySn, settleReceiptBookBatch } from '@/api/settleReceipt.js'
+import { settleReceiptFindBySn } from '@/api/settleReceipt.js'
+import { getBatchLastProcessInstance } from '@/api/financeBook'
 export default {
   name: 'VoucherModal',
   components: { STable, VSelect, commonModal, printModel, detailModal, collectDetailModal },
@@ -190,16 +183,65 @@ export default {
         this.spinning = false
       })
     },
+    // 获取审核信息
+    getAuditInfo (auditList) {
+      let auditStr = ''
+      if (auditList && auditList.taskVOList) {
+        const auditLists = auditList.taskVOList.filter(item => item.userType == '审批人')
+        auditLists.map((a, i) => {
+          auditStr = auditStr + a.userName + '(' + a.state + ')' + (i == auditLists.length - 1 ? '。' : ';')
+        })
+      }
+      return auditStr
+    },
+    // 批量打印
+    async handlePlPrint () {
+      this.spinning = true
+      const rows = [] 
+      const bookSns = []
+      this.tableData.map(item => {
+        if(item.financeBookDetailList){
+          rows.push(item.financeBookDetailList[0])
+          const booksn = item.financeBookDetailList[0].bookSn
+          if (bookSns.indexOf(booksn) < 0) {
+            bookSns.push(booksn)
+          }
+        }
+      })
+      const retArr = []
+      const auditInfo = await getBatchLastProcessInstance({ 'businessType': 'FINANCE_BOOK', 'businessSnList': bookSns }).then(res => res.data)
+      console.log(bookSns,auditInfo)
+      bookSns.map(item => {
+        // 授信明细
+        const rs = rows.filter(a => a.bookSn == item)
+        let detailItemUseStr = ''
+        rs.map(b => {
+          if (b.detailItemUseList) {
+            b.detailItemUseList.map((k, i) => {
+              detailItemUseStr = detailItemUseStr + k.itemName + '(' + k.itemAmount + ')' + (i == b.detailItemUseList.length - 1 ? '。' : ';')
+            })
+          }
+        })
+        // 审核信息
+        const auditStr = this.getAuditInfo(auditInfo[item])
+        retArr.push({ audit: auditStr, detail: detailItemUseStr, subList: rs })
+      })
+      console.log(retArr, '------------')
+      this.handlePrint(retArr, rows)
+    },
     // 收款打印
-    handlePrint () {
+    async handlePrint (row, list) {
+      this.spinning = true
       this.showTipModal = true
       this.$nextTick(() => {
-        this.$refs.printModel.getData(this.detail, true)
+        // 审核信息
+        this.$refs.printModel.getData(row, list)
       })
     },
     canselPrintView () {
       this.showTipModal = false
-      this.$refs.printModel.handleCommonCancel()
+      this.spinning = false
+      this.$refs.printModel.clearData()
     },
     // 取消
     handleCommonCancel () {
@@ -212,7 +254,7 @@ export default {
       const snList = []
       snList.push(this.handlePlData.accountReceiptSn)
       this.showCollectDetail = true
-      this.$nextTick(()=>{
+      this.$nextTick(() => {
         this.$refs.collectDetailModal.setData([this.handlePlData], snList)
       })
     },