Browse Source

Merge branch 'develop_lb2' of http://git.chelingzhu.com/jianguan-web/jg-ocs-html into develop_xsth

合并迭代4的内容
lilei 2 năm trước cách đây
mục cha
commit
b853a08ee6
34 tập tin đã thay đổi với 1136 bổ sung232 xóa
  1. 1 1
      public/version.json
  2. 15 1
      src/api/dispatch.js
  3. 24 0
      src/api/financeBook.js
  4. 10 1
      src/api/salesBillReport.js
  5. 18 0
      src/api/sendBill.js
  6. 17 0
      src/components/index.less
  7. 26 1
      src/config/router.config.js
  8. 13 1
      src/views/allocationManagement/transferOut/dsModal.vue
  9. 56 18
      src/views/allocationManagement/transferOut/edit.vue
  10. 19 1
      src/views/allocationManagement/transfersPrint/list.vue
  11. 33 14
      src/views/common/dingDepartUser.js
  12. 3 2
      src/views/expenseManagement/expenseReimbursement/chooseDepartUserModal.vue
  13. 313 0
      src/views/financialManagement/collectionDetailStatic/list.vue
  14. 3 9
      src/views/financialManagement/financialCollection/detail.vue
  15. 4 1
      src/views/financialManagement/financialCollection/edit.vue
  16. 30 8
      src/views/reportData/actualSalesReport/list.vue
  17. 48 12
      src/views/reportData/returnGoodsPresentation/list.vue
  18. 48 12
      src/views/reportData/returnSlipReport/list.vue
  19. 2 2
      src/views/reportData/salesAmountReport/list.vue
  20. 48 12
      src/views/reportData/salesPresentation/list.vue
  21. 30 8
      src/views/reportData/salesReturnReport/list.vue
  22. 48 12
      src/views/reportData/salesSlipReport/list.vue
  23. 2 1
      src/views/salesManagement/matchSendOutOrder/list.vue
  24. 13 13
      src/views/salesManagement/outboundOrder/list.vue
  25. 20 2
      src/views/salesManagement/outboundOrder/sendGoodModal.vue
  26. 1 10
      src/views/salesManagement/pushOrderManagement/detail.vue
  27. 6 4
      src/views/salesManagement/salesCollection/list.vue
  28. 3 0
      src/views/salesManagement/salesCollection/voucherModal.vue
  29. 1 1
      src/views/salesManagement/salesQuery/chooseCustomModal.vue
  30. 4 11
      src/views/salesManagement/salesQuery/detail.vue
  31. 151 61
      src/views/salesManagement/salesQuery/list.vue
  32. 3 0
      src/views/salesManagement/sendOutOrder/detailModal.vue
  33. 51 5
      src/views/salesManagement/sendOutOrder/list.vue
  34. 72 8
      src/views/salesManagement/waitDispatch/dsModal.vue

+ 1 - 1
public/version.json

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

+ 15 - 1
src/api/dispatch.js

@@ -23,7 +23,13 @@ export const dispatchDetaillList = (params) => {
     method: 'post'
   })
 }
-
+// 根据销售单sn查询关联的所有发货单
+export const queryBySalesBillSn = (params) => {
+  return axios({
+    url: `/dispatch/queryBySalesBillSn/${params.salesBillSn}`,
+    method: 'get'
+  })
+}
 // 根据销售单SN查询发货单
 export const findBySalesBillSn = (params) => {
   return axios({
@@ -77,6 +83,14 @@ export const dispatchPrintStatus = (params) => {
     method: 'get'
   })
 }
+// 批量备货打印
+export const dispatchBatchPrintStatus = (params) => {
+  return axios({
+    url: `/dispatch/batchUpdatePrintStatus`,
+    data: params,
+    method: 'post'
+  })
+}
 // 下推 详情  打印
 export const dispatchDetailPrint = params => {
   const url = `/dispatch/print/${params.type}`

+ 24 - 0
src/api/financeBook.js

@@ -11,6 +11,30 @@ export const financeBookQueryPage = (params) => {
     method: 'post'
   })
 }
+
+// 财务收款明细-分页列表
+export const financeBookDetailQueryPage = (params) => {
+  const url = `/report/financeBook/detail/queryPage/${params.pageNo}/${params.pageSize}`
+  delete params.pageNo
+  delete params.pageSize
+  return axios({
+    url: url,
+    data: params,
+    method: 'post'
+  })
+}
+
+// 财务收款明细-导出
+export const financeBookDetailExport = (params) => {
+  const url = `/report/financeBook/detail/export`
+  return axios({
+    url: url,
+    data: params,
+    method: 'post',
+    responseType: 'blob'
+  })
+}
+
 // 详情
 export const financeBookFindBySn = (params) => {
   const url = `/financeBook/queryBySn/${params.bookSn}`

+ 10 - 1
src/api/salesBillReport.js

@@ -24,7 +24,7 @@ export const salesBillReportGroupByBuyerList = (params) => {
   })
 }
 
-//  开单销售单报表/开单销售报表   合计
+//  开单销售单报表合计
 export const salesBillReportCount = (params) => {
   return axios({
     url: '/report/salesBillReport/totalSaleAmount',
@@ -33,6 +33,15 @@ export const salesBillReportCount = (params) => {
   })
 }
 
+//  开单销售报表合计
+export const salesBillReportCountByBuyer = (params) => {
+  return axios({
+    url: '/report/salesBillReport/totalGroupByBuyer',
+    data: params,
+    method: 'post'
+  })
+}
+
 // 实售销售报表
 export const salesBillRealAmountQueryPageList = (params) => {
   const url = `/report/salesBillReport/realAmountQueryPageGroupByBuyer/${params.pageNo}/${params.pageSize}`

+ 18 - 0
src/api/sendBill.js

@@ -23,6 +23,14 @@ export const getCustomerInfo = params => {
     method: 'post'
   })
 }
+// 发货前校验销售单
+export const validateStockOut = params => {
+  return axios({
+    url: '/sendBill/validateStockOut',
+    data: params,
+    method: 'post'
+  })
+}
 // 发货单列表分页查询
 export const sendBillQueryPageList = (params) => {
   const url = `/sendBill/queryPage/${params.pageNo}/${params.pageSize}`
@@ -34,6 +42,16 @@ export const sendBillQueryPageList = (params) => {
     method: 'post'
   })
 }
+// 导出
+export const sendBillExcel = (params) => {
+  const url = `/sendBill/excel`
+  return axios({
+    url: url,
+    data: params,
+    method: 'post',
+    responseType: 'blob'
+  })
+}
 // 更新发货单物流信息
 export const updateTransportInfo = params => {
   return axios({

+ 17 - 0
src/components/index.less

@@ -294,6 +294,23 @@
     color: #fff!important;
     -webkit-text-fill-color: #fff!important;
   }
+  .ant-table-row{
+    td{
+      > div:empty::after{
+        content: '--';
+      }
+    }
+  }
+  .ant-table-small > .ant-table-content .ant-table-body,.ant-table-fixed-right{
+    margin: 0;
+    tr:hover{
+      td{
+        > div:empty::after{
+          content: '--';
+        }
+      }
+    }
+  }
 }
 .sTable.fixPagination{
   >.ant-table-wrapper{

+ 26 - 1
src/config/router.config.js

@@ -920,7 +920,32 @@ export const asyncRouterMap = [
                 }
               }
             ]
-          }
+          },
+          {
+            path: '/financialManagement/collectionDetailStatic',
+            redirect: '/financialManagement/collectionDetailStatic/list',
+            name: 'collectionDetailStatic',
+            component: BlankLayout,
+            meta: {
+              title: '财务收款明细统计',
+              icon: 'vertical-align-top',
+              permission: 'M_FC_Details_list'
+            },
+            hideChildrenInMenu: true,
+            children: [
+              {
+                path: 'list',
+                name: 'collectionDetailStaticList',
+                component: () => import(/* webpackChunkName: "financialManagement" */ '@/views/financialManagement/collectionDetailStatic/list.vue'),
+                meta: {
+                  title: '财务收款明细统计列表',
+                  icon: 'vertical-align-top',
+                  hidden: true,
+                  permission: 'M_FC_Details_list'
+                }
+              }
+            ]
+          },
         ]
       },
       // 费用报销

+ 13 - 1
src/views/allocationManagement/transferOut/dsModal.vue

@@ -19,9 +19,17 @@
           :label-col="formItemLayout.labelCol"
           :wrapper-col="formItemLayout.wrapperCol"
         >
-          <a-form-model-item label="收货客户名称">
+          <a-form-model-item label="收货客户名称" v-if="dealerLevel != 'OTHER'">
             <dealerSubareaScopeList ref="custList" defValKey="buyerSn" @change="custChange" v-model="form.receiverSn" />
           </a-form-model-item>
+          <a-form-model-item label="收货客户名称" v-else>
+            <a-input
+              id="dealerAccountEdit-receiverName"
+              :maxLength="30"
+              v-model.trim="form.receiverName"
+              placeholder="请输入收货客户名称"
+              allowClear />
+          </a-form-model-item>
           <a-form-model-item label="发货编号" prop="sendNo">
             <a-input
               id="dealerAccountEdit-phone"
@@ -64,6 +72,10 @@ export default {
     openModal: { //  弹框显示状态
       type: Boolean,
       default: false
+    },
+    dealerLevel: {
+      type: String,
+      default: ''
     }
   },
   data () {

+ 56 - 18
src/views/allocationManagement/transferOut/edit.vue

@@ -53,7 +53,10 @@
                 <span v-if="basicInfoData&&(basicInfoData.promoStartDate || basicInfoData.promoEndDate)">{{ (basicInfoData&&basicInfoData.promoStartDate) || '--' }} ~ {{ (basicInfoData&&basicInfoData.promoEndDate) || '--' }}</span>
                 <span v-else>--</span>
               </a-descriptions-item>
-              <a-descriptions-item label="备注">{{ (basicInfoData&&basicInfoData.remark) || '--' }}</a-descriptions-item>
+              <a-descriptions-item label="备注">
+                {{ (basicInfoData&&basicInfoData.remark) }}
+                <a-icon type="form" title="编辑备注" @click="editRemark = true" style="color: dodgerblue;font-size: 14px;" />
+              </a-descriptions-item>
             </a-descriptions>
           </a-collapse-panel>
         </a-collapse>
@@ -223,7 +226,29 @@
     <!-- 打印导出 -->
     <print-modal :openModal="openModal" :itemData="basicInfoData" :nowType="nowType" @ok="handleOk" @close="openModal=false" />
     <!-- 提交调拨单 -->
-    <dsModal ref="dsModal" :openModal="showDsModal" @close="showDsModal=false" @ok="handleSubmit" />
+    <dsModal ref="dsModal" :dealerLevel="$route.params.dealerLevel" :openModal="showDsModal" @close="showDsModal=false" @ok="handleSubmit" />
+    <!-- 修改基础信息 -->
+    <a-modal
+      centered
+      wrapClassName="allocateBill-editRemark-modal"
+      v-if="basicInfoData"
+      :footer="null"
+      :maskClosable="false"
+      title="修改备注"
+      v-model="editRemark"
+      @cancel="editRemark = false"
+      :width="600">
+      <a-textarea
+        v-model="basicInfoData.remark"
+        placeholder="请输入备注(最多120个字符)"
+        :maxLength="120"
+        :auto-size="{ minRows: 3, maxRows: 5 }"
+      />
+      <div class="btn-cont">
+        <a-button type="primary" id="allocateBill-basicInfo-modal-save" @click="handleEditRemark">保存</a-button>
+        <a-button id="allocateBill-basicInfo-modal-back" @click="editRemark = false" style="margin-left: 15px;">取消</a-button>
+      </div>
+    </a-modal>
   </div>
 </template>
 
@@ -247,6 +272,7 @@ export default {
     return {
       spinning: false,
       showDsModal: false,
+      editRemark: false,
       queryParam: {
         productCode: '',
         productName: '',
@@ -352,6 +378,27 @@ export default {
     }
   },
   methods: {
+    // 修改备注
+    handleEditRemark () {
+      const _this = this
+      const params = _this.basicInfoData
+      allocateBillSave({
+        allocateSn: params.allocateSn,
+        targetType: params.targetType,
+        targetSn: params.targetSn,
+        targetName: params.targetName,
+        allocateTypeSn: params.allocateTypeSn,
+        remark: params.remark
+      }).then(res => {
+        if (res.status == 200) {
+          _this.$message.success(res.message)
+          _this.getDetail()
+        } else {
+          _this.spinning = false
+        }
+      })
+      _this.editRemark = false
+    },
     // 修改调拨类型
     changeAllocateType (val) {
       const _this = this
@@ -360,22 +407,7 @@ export default {
         content: '确定要更改调拨类型吗?',
         centered: true,
         onOk () {
-          const params = _this.basicInfoData
-          allocateBillSave({
-            allocateSn: params.allocateSn,
-            targetType: params.targetType,
-            targetSn: params.targetSn,
-            targetName: params.targetName,
-            allocateTypeSn: params.allocateTypeSn,
-            remark: params.remark
-          }).then(res => {
-            if (res.status == 200) {
-              _this.$message.success(res.message)
-              _this.getDetail()
-            } else {
-              _this.spinning = false
-            }
-          })
+          _this.handleEditRemark()
         },
         onCancel () {
           _this.getDetail()
@@ -654,4 +686,10 @@ export default {
       }
     }
   }
+  .allocateBill-editRemark-modal{
+    .btn-cont{
+      text-align: center;
+      padding-top: 20px;
+    }
+  }
 </style>

+ 19 - 1
src/views/allocationManagement/transfersPrint/list.vue

@@ -93,6 +93,14 @@
             <span v-if="$hasPermissions('M_tfoPrint_detail')" class="link-bule" @click="handleDetail(record)">{{ record.allocateNo }}</span>
             <span v-else>{{ record.allocateNo }}</span>
           </template>
+          <div slot="costTitle">
+            <a-tooltip placement="top">
+              <template slot="title">
+                当调拨对象是经销商时,如果收货客户名称不为空,则按照收货客户的价格级别计算得到。
+              </template>
+              <span style="margin-right: 5px;">实际总售价</span> <a-icon type="question-circle" />
+            </a-tooltip>
+          </div>
           <!-- 操作 -->
           <template slot="action" slot-scope="text, record">
             <a-button
@@ -106,7 +114,7 @@
               size="small"
               type="link"
               v-else-if="record.printState == 'PRINT'&&$hasPermissions('B_tfoPrint_record')"
-              class="button-warning"
+              class="button-success"
               @click="handlePrintRecord(record)"
               id="allocateBillList-printRecord">打印记录</a-button>
             <span v-else>--</span>
@@ -196,12 +204,22 @@ export default {
         { title: '发货编号', dataIndex: 'sendNo', width: '5%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
         { title: '收货客户名称', dataIndex: 'receiverName', width: '10%', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true },
         { title: '总数量', dataIndex: 'totalQty', width: '5%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        // { slots: { title: 'costTitle' }, dataIndex: 'receiveTotalAmount', width: '90px', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        // { title: '易损件售价', dataIndex: 'receiveYsjTotalAmount', width: '70px', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        // { title: '电池售价', dataIndex: 'receiveDcTotalAmount', width: '70px', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        // { title: '机油售价', dataIndex: 'receiveJyTotalAmount', width: '70px', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
         { title: '调拨类型', dataIndex: 'allocateTypeName', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '业务状态', dataIndex: 'stateDictValue', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '打印状态', dataIndex: 'printStateDictValue', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '打印次数', dataIndex: 'printCount', width: '5%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
         { title: '操作', scopedSlots: { customRender: 'action' }, width: '8%', align: 'center' }
       ]
+      if (this.$hasPermissions('B_isShowPrice')) { //  售价权限
+        arr.splice(7, 0, { slots: { title: 'costTitle' }, dataIndex: 'receiveTotalAmount', width: '90px', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } })
+        arr.splice(8, 0, { title: '易损件售价', dataIndex: 'receiveYsjTotalAmount', width: '70px', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } })
+        arr.splice(9, 0, { title: '电池售价', dataIndex: 'receiveDcTotalAmount', width: '70px', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } })
+        arr.splice(10, 0, { title: '机油售价', dataIndex: 'receiveJyTotalAmount', width: '70px', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } })
+      }
       return arr
     }
   },

+ 33 - 14
src/views/common/dingDepartUser.js

@@ -62,10 +62,12 @@ const DingDepartUser = {
       this.$emit('input', value);
     },
     // 格式化数据
-    formatData(data,type){
+    formatData(data){
+      console.log(data)
       const ret = []
       data.map(item => {
-        if(type == 'bm'){
+        // 部门
+        if(item.deptId){
           const node = {
             title: item.name,
             id:item.deptId,
@@ -74,19 +76,21 @@ const DingDepartUser = {
             autoAddUser: item.autoAddUser,
             createDeptGroup: item.createDeptGroup,
             disableCheckbox: true,
-            checkable: false
+            checkable: false,
+            children: []
           }
-          if(item.deptUserList){
-            node.children = this.formatData(item.deptUserList,'yg')
-          }
-          if(item.deptList){
-            node.children = this.formatData(item.deptList,'bm')
+          if(item.deptUserList && item.deptList){
+            node.children = this.formatData(item.deptList.concat(item.deptUserList?item.deptUserList:[]))
+          }else if(item.deptUserList && !item.deptList){
+            node.children = this.formatData(item.deptUserList)
+          }else if(!item.deptUserList && item.deptList){
+            node.children = this.formatData(item.deptList)
           }
           ret.push(node)
         }else{
           ret.push({
             title: item.name,
-            id: item.userid,
+            id: item.deptOrder,
             value: item.userid,
             pId: item.parentId,
             avatar: item.avatar,
@@ -98,24 +102,39 @@ const DingDepartUser = {
             isLeaf: true
           })
         }
+         
       })
       return ret
     },
     // 获取部门人员
     async genTreeNode() {
        let ret = await getDingTalkAllDeptUser().then(res => res.data)
-       console.log(ret)
        const res1 = ret.deptList||[]
        const res2 = ret.deptUserList||[]
-       this.treeData = this.treeData.concat(this.formatData(res1,'bm')).concat(this.formatData(res2,'yg'));
+       this.treeData = this.treeData = this.formatData(res1.concat(res2));
+       console.log(this.treeData,'----')
     },
     // 更新人员数据
     updateDeptUser(){
+      const _this = this
       refashDingTalkAllDeptUser().then(res => {
-        this.$message.info(res.message)
         if(res.status == 200){
-          this.treeData = []
-          this.genTreeNode()
+          // this.treeData = []
+          // this.genTreeNode()
+          const h = this.$createElement;
+          this.$info({
+            title: '提示',
+            centered: true,
+            content: h('div', {}, [
+              h('p', '数据正在刷新中...'),
+              h('p', '请10分钟后(按F5刷新页面)再进行操作!'),
+            ]),
+            onOk() {
+              _this.$emit("close")
+            },
+          });
+        }else{
+          this.$message.error(res.message)
         }
         this.$emit("loaded")
       })

+ 3 - 2
src/views/expenseManagement/expenseReimbursement/chooseDepartUserModal.vue

@@ -4,7 +4,7 @@
     class="departUser-modal"
     :footer="null"
     :maskClosable="false"
-    :title="title+'费用明细'"
+    :title="title+'选择审批人员'"
     v-model="isShow"
     @cancel="isShow=false"
     width="60%">
@@ -22,6 +22,7 @@
               <dingDepartUser
                 ref="departUserApp"
                 @loaded="uploading=false"
+                @close="isShow=false"
                 id="departUser-approvers"
                 :disabled="uploading"
                 v-model="form.approvers"
@@ -92,7 +93,7 @@ export default {
     updateUser () {
       this.uploading = true
       this.$refs.departUserApp.updateDeptUser()
-      this.$refs.departUserCc.updateDeptUser()
+      // this.$refs.departUserCc.updateDeptUser()
     },
     changeApprovers (value) {
       this.form.approvers = value

+ 313 - 0
src/views/financialManagement/collectionDetailStatic/list.vue

@@ -0,0 +1,313 @@
+<template>
+  <a-card size="small" :bordered="false" class="collectionDetail-wrap">
+    <a-spin :spinning="spinning" tip="Loading...">
+      <!-- 搜索条件 -->
+      <div ref="tableSearch" class="table-page-search-wrapper">
+        <a-form layout="inline" @keyup.enter.native="$refs.table.refresh(true)">
+          <a-row :gutter="15">
+            <a-col :md="6" :sm="24">
+              <a-form-item label="审核时间">
+                <rangeDate ref="rangeAuditDate" :value="auditDate" @change="dateAuditChange" />
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="收款单号">
+                <a-input id="collectionDetail-bookNo" v-model.trim="queryParam.bookNo" allowClear placeholder="请输入收款单号"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="申请人">
+                <employee style="width: 100%;" id="collectionDetail-Employee" placeholder="请选择申请人" v-model="queryParam.applyPersonSn"></employee>
+              </a-form-item>
+            </a-col>
+
+            <a-col :md="6" :sm="24">
+              <a-form-item label="收款日期">
+                <rangeDate ref="receiptDate" :value="receiptDate" @change="receiptDateChange" />
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="客户名称">
+                <dealerSubareaScopeList id="collectionDetail-Employee" ref="settleClientName" @change="custChange" />
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="客户编码">
+                <a-input id="collectionDetail-kdMidCustomerFnumber" placeholder="请输入客户编码" v-model="queryParam.kdMidCustomerFnumber"></a-input>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="营业执照名称">
+                <a-input id="collectionDetail-licenseName" placeholder="请输入营业执照名称" v-model="queryParam.licenseName"></a-input>
+              </a-form-item>
+            </a-col>
+            <template v-if="advanced">
+              <a-col :md="4" :sm="24">
+                <a-form-item label="足额打款">
+                  <v-select
+                    v-model="queryParam.fullPaymentFlag"
+                    ref="fullPaymentFlag"
+                    id="collectionDetail-fullPaymentFlag"
+                    code="FLAG"
+                    placeholder="请选择是否足额打款"
+                    allowClear></v-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="4" :sm="24">
+                <a-form-item label="汇入银行">
+                  <a-select placeholder="请选择汇入银行" v-model="queryParam.bankName" style="width: 100%">
+                    <a-select-option v-for="item in bankNameList" :value="item">
+                      {{ item }}
+                    </a-select-option>
+                  </a-select>
+                </a-form-item>
+              </a-col>
+              <a-col :md="4" :sm="24">
+                <a-form-item label="所属区域">
+                  <subarea id="collectionDetail-subarea" v-model="queryParam.subareaSn"></subarea>
+                </a-form-item>
+              </a-col>
+              <a-col :md="4" :sm="24">
+                <a-form-item label="所属省份">
+                  <Area id="collectionDetail-provinceSn" v-model="queryParam.provinceSn" placeholder="请选择省"></Area>
+                </a-form-item>
+              </a-col>
+            </template>
+            <a-col :md="6" :sm="24" style="margin-bottom: 10px;">
+              <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="collectionDetail-refresh">查询</a-button>
+              <a-button style="margin-left: 5px" @click="resetSearchForm" :disabled="disabled" id="collectionDetail-reset">重置</a-button>
+              <a-button
+                style="margin-left: 10px"
+                type="primary"
+                class="button-warning"
+                @click="handleExport"
+                :disabled="disabled"
+                :loading="exportLoading"
+                v-if="$hasPermissions('M_FC_Details_Export')"
+                id="sendOut-export">导出</a-button>
+              <a @click="advanced=!advanced" style="margin-left: 5px">
+                {{ advanced ? '收起' : '展开' }}
+                <a-icon :type="advanced ? 'up' : 'down'"/>
+              </a>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+      <!-- 列表 -->
+      <s-table
+        class="sTable fixPagination"
+        ref="table"
+        :style="{ height: tableHeight+84.5+'px' }"
+        size="small"
+        :rowKey="(record) => record.id"
+        :columns="columns"
+        :data="loadData"
+        :scroll="{ y: tableHeight }"
+        bordered>
+      </s-table>
+    </a-spin>
+  </a-card>
+</template>
+
+<script>
+import { commonMixin } from '@/utils/mixin'
+import { STable, VSelect } from '@/components'
+import getDate from '@/libs/getDate.js'
+import rangeDate from '@/views/common/rangeDate.vue'
+import subarea from '@/views/common/subarea.js'
+import Area from '@/views/common/area.js'
+import { hdExportExcel } from '@/libs/exportExcel'
+import employee from '../../expenseManagement/expenseReimbursement/employee.js'
+import dealerSubareaScopeList from '@/views/common/dealerSubareaScopeList.vue'
+import { financeBookDetailQueryPage, financeBookDetailExport } from '@/api/financeBook.js'
+export default {
+  name: 'CollectionDetailStaticList',
+  mixins: [commonMixin],
+  components: { STable, VSelect, rangeDate, employee, dealerSubareaScopeList, subarea, Area },
+  data () {
+    return {
+      spinning: false,
+      exportLoading: false,
+      tableHeight: 0,
+      queryParam: { //  查询条件
+        bookNo: '',
+        auditBeginDate: getDate.getCurrMonthDays().starttime + ' 00:00:00',
+        auditEndDate: getDate.getCurrMonthDays().endtime + ' 23:59:59',
+        receiptBeginDate: '',
+        receiptEndDate: '',
+        applyPersonSn: undefined,
+        dealerSn: undefined,
+        kdMidCustomerFnumber: '',
+        licenseName: '',
+        fullPaymentFlag: undefined,
+        bankName: undefined,
+        subareaSn: undefined,
+        provinceSn: undefined
+      },
+      disabled: false, //  查询、重置按钮是否可操作
+      receiptDate: [], //  收款时间
+      auditDate: [
+        getDate.getCurrMonthDays().starttime,
+        getDate.getCurrMonthDays().endtime
+      ], // 审核时间
+      advanced: false,
+      // 加载数据方法 必须为 Promise 对象
+      loadData: parameter => {
+        this.disabled = true
+        this.spinning = true
+        return financeBookDetailQueryPage(Object.assign(parameter, this.queryParam)).then(res => {
+          let data
+          if (res.status == 200) {
+            data = res.data
+            const no = (data.pageNo - 1) * data.pageSize
+            for (var i = 0; i < data.list.length; i++) {
+              data.list[i].no = no + i + 1
+            }
+            this.total = data.count || 0
+            this.disabled = false
+          }
+          this.spinning = false
+          return data
+        })
+      },
+      total: 0, // 合计
+      bankNameList: ['东莞银行', '九江银行', '建设银行', '微信收款', '农业银行']
+    }
+  },
+  // 根据权限显示列表字段
+  computed: {
+    columns () {
+      const arr = [
+        { title: '序号', dataIndex: 'no', width: '4%', align: 'center' },
+        { title: '审核时间', dataIndex: 'auditDate', width: '8%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '收款单号', dataIndex: 'bookNo', width: '8%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '申请人', dataIndex: 'applyPersonName', align: 'center', width: '5%', customRender: function (text) { return text || '--' }, ellipsis: true },
+        { title: '收款事由', dataIndex: 'bookReason', width: '8%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '收款日期', dataIndex: 'receiptDate', width: '8%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '客户名称', dataIndex: 'dealerName', align: 'center', width: '8%', customRender: function (text) { return text || '--' } },
+        { title: '客户编码', dataIndex: 'kdMidCustomerFnumber', align: 'center', width: '8%', customRender: function (text) { return text || '--' } },
+        { title: '营业执照名称', dataIndex: 'licenseName', align: 'center', width: '8%', customRender: function (text) { return text || '--' } },
+        { title: '订单金额', dataIndex: 'orderAmount', align: 'center', width: '5%', customRender: function (text) { return (text == 0 || text) ? text : '--' } },
+        { title: '收款金额', dataIndex: 'receiptAmount', align: 'center', width: '5%', customRender: function (text) { return (text == 0 || text) ? text : '--' } },
+        { title: '使用授信', dataIndex: 'useCreditAmount', align: 'center', width: '5%', customRender: function (text) { return (text == 0 || text) ? text : '--' } },
+        { title: '授信还款', dataIndex: 'payCreditAmount', align: 'center', width: '5%', customRender: function (text) { return (text == 0 || text) ? text : '--' } },
+        { title: '余款抵扣', dataIndex: 'balanceAmount', align: 'center', width: '5%', customRender: function (text) { return (text == 0 || text) ? text : '--' } },
+        { title: '跨月打款', dataIndex: 'nextMonthAmount', align: 'center', width: '5%', customRender: function (text) { return (text == 0 || text) ? text : '--' } },
+        { title: '户名', dataIndex: 'bankAccount', align: 'center', width: '5%', customRender: function (text) { return text || '--' } },
+        { title: '汇入银行', dataIndex: 'bankName', align: 'center', width: '5%', customRender: function (text) { return text || '--' } },
+        { title: '足额打款', dataIndex: 'fullPaymentFlagDictValue', align: 'center', width: '5%', customRender: function (text) { return (text == 0 || text) ? text : '--' } },
+        { title: '备注', dataIndex: 'remarks', align: 'center', width: '8%', customRender: function (text) { return text || '--' }, ellipsis: true }
+      ]
+      return arr
+    }
+  },
+  methods: {
+    custChange (val) {
+      this.queryParam.dealerSn = val.key
+    },
+    //  创建时间  change
+    receiptDateChange (date) {
+      this.queryParam.receiptBeginDate = date[0] ? date[0] + ' 00:00:00' : ''
+      this.queryParam.receiptEndDate = date[1] ? date[1] + ' 23:59:59' : ''
+    },
+    //  审核时间  change
+    dateAuditChange (date) {
+      this.queryParam.auditBeginDate = date[0] ? date[0] + ' 00:00:00' : ''
+      this.queryParam.auditEndDate = date[1] ? date[1] + ' 23:59:59' : ''
+    },
+    //  重置
+    resetSearchForm () {
+      this.receiptDate = []
+      this.queryParam.receiptBeginDate = ''
+      this.queryParam.receiptEndDate = ''
+      if (this.advanced) {
+        this.$refs.receiptDate.resetDate(this.receiptDate)
+      }
+      this.auditDate = [
+        getDate.getCurrMonthDays().starttime,
+        getDate.getCurrMonthDays().endtime
+      ]
+      this.$refs.rangeAuditDate.resetDate(this.auditDate)
+      this.queryParam.auditBeginDate = getDate.getCurrMonthDays().starttime + ' 00:00:00'
+      this.queryParam.auditEndDate = getDate.getCurrMonthDays().endtime + ' 23:59:59'
+
+      this.queryParam.bookNo = ''
+      this.queryParam.dispatchBillNo = ''
+      this.queryParam.applyPersonSn = undefined
+      this.queryParam.kdMidCustomerFnumber = ''
+      this.queryParam.dealerSn = undefined
+      this.queryParam.licenseName = ''
+      this.queryParam.fullPaymentFlag = undefined
+      this.queryParam.bankName = undefined
+      this.queryParam.subareaSn = undefined
+      this.queryParam.provinceSn = undefined
+      this.$refs.settleClientName.resetForm()
+      this.$refs.table.refresh(true)
+    },
+    //  导出
+    handleExport () {
+      const _this = this
+      _this.exportLoading = true
+      _this.spinning = true
+      hdExportExcel(financeBookDetailExport, _this.queryParam, '财务收款明细统计', function () {
+        _this.exportLoading = false
+        _this.spinning = false
+      })
+    },
+    pageInit () {
+      const _this = this
+      this.$nextTick(() => { // 页面渲染完成后的回调
+        _this.setTableH()
+      })
+    },
+    setTableH () {
+      const tableSearchH = this.$refs.tableSearch.offsetHeight
+      this.tableHeight = window.innerHeight - tableSearchH - 195
+    }
+  },
+  watch: {
+    advanced (newValue, oldValue) {
+      const _this = this
+      this.$nextTick(() => { // 页面渲染完成后的回调
+        _this.setTableH()
+      })
+    },
+    '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
+      this.setTableH()
+    }
+  },
+  mounted () {
+    if (!this.$store.state.app.isNewTab) { // 页签刷新时调用
+      this.pageInit()
+      this.resetSearchForm()
+    }
+  },
+  activated () {
+    // 如果是新页签打开,则重置当前页面
+    if (this.$store.state.app.isNewTab) {
+      this.pageInit()
+      this.resetSearchForm()
+    }
+    // 仅刷新列表,不重置页面
+    if (this.$store.state.app.updateList) {
+      this.pageInit()
+      this.$refs.table.refresh()
+    }
+  },
+  beforeRouteEnter (to, from, next) {
+    next(vm => {})
+  }
+}
+</script>
+
+<style lang="less">
+  .collectionDetail-wrap{
+    .active{
+      color: #ed1c24;
+      cursor: pointer;
+    }
+    .common{
+      color: rgba(0, 0, 0);
+    }
+  }
+</style>

+ 3 - 9
src/views/financialManagement/financialCollection/detail.vue

@@ -49,7 +49,6 @@
           :rowKey="(record) => record.id"
           :columns="columns"
           :data="loadData"
-          :defaultLoadData="false"
           :showPagination="false"
           bordered>
           <template slot="expandedRowRender" slot-scope="record">
@@ -148,19 +147,14 @@ export default {
       return ret.toFixed(2)
     },
     //  财务单基础详情
-    getDetail (type) {
+    getDetail () {
       this.spinning = true
       this.disabled = true
       financeBookFindBySn({ bookSn: this.$route.params.sn || this.bookSn }).then(res => {
         if (res.status == 200) {
           this.detailData = res.data
-          if (!type) {
-            // 刷新明细列表
-            this.$refs.table.refresh()
-          } else {
-            this.spinning = false
-            this.disabled = false
-          }
+          this.spinning = false
+          this.disabled = false
         }
       })
     },

+ 4 - 1
src/views/financialManagement/financialCollection/edit.vue

@@ -282,7 +282,7 @@ export default {
     },
     pageInit () {
       if (this.$route.params.sn) { //  编辑页
-        this.getDetail()
+        this.getDetail(false)
       }
     }
   },
@@ -295,6 +295,9 @@ export default {
     // 如果是新页签打开或者进入新的子页(例:存在列表第2条数据编辑页页签时再打开第4条数据的编辑页),则重置当前页面
     if (this.$store.state.app.isNewTab || !this.$store.state.app.isNewSubTab) {
       this.pageInit()
+    } else {
+      // 刷新明细列表
+      this.$refs.table.refresh()
     }
   },
   beforeRouteEnter (to, from, next) {

+ 30 - 8
src/views/reportData/actualSalesReport/list.vue

@@ -104,6 +104,7 @@
             <a-col span="22">
               <a-row>
                 <a-col span="4">箭牌滤清器:{{ (totalData && (totalData.jpLqqAmount || totalData.jpLqqAmount==0)) ? totalData.jpLqqAmount : '--' }}</a-col>
+                <a-col span="4">箭牌变速箱滤清器:{{ (totalData && (totalData.jpBsxLqqAmount || totalData.jpBsxLqqAmount==0)) ? totalData.jpBsxLqqAmount : '--' }}</a-col>
                 <a-col span="4">箭牌雨刮片:{{ (totalData && (totalData.jpYgpAmount || totalData.jpYgpAmount==0)) ? totalData.jpYgpAmount : '--' }}</a-col>
                 <a-col span="4">箭牌喇叭:{{ (totalData && (totalData.jpLbAmount || totalData.jpLbAmount==0)) ? totalData.jpLbAmount : '--' }}</a-col>
                 <a-col span="4">箭牌刹车片:{{ (totalData && (totalData.jpScpAmount || totalData.jpScpAmount==0)) ? totalData.jpScpAmount : '--' }}</a-col>
@@ -111,9 +112,10 @@
                 <a-col span="4">冠牌滤清器:{{ (totalData && (totalData.gpLqqAmount || totalData.gpLqqAmount==0)) ? totalData.gpLqqAmount : '--' }}</a-col>
                 <a-col span="4">冠牌雨刮片:{{ (totalData && (totalData.gpYgpAmount || totalData.gpYgpAmount==0)) ? totalData.gpYgpAmount : '--' }}</a-col>
                 <a-col span="4">冠牌刹车片:{{ (totalData && (totalData.gpScpAmount || totalData.gpScpAmount==0)) ? totalData.gpScpAmount : '--' }}</a-col>
+                <a-col span="4">稳升点火线圈:{{ (totalData && (totalData.wsDhxqAmount || totalData.wsDhxqAmount==0)) ? totalData.wsDhxqAmount : '--' }}</a-col>
+                <a-col span="4">稳升灯泡:{{ (totalData && (totalData.wsDpAmount || totalData.wsDpAmount==0)) ? totalData.wsDpAmount : '--' }}</a-col>
                 <a-col span="4">汇箭:{{ (totalData && (totalData.hjAmount || totalData.hjAmount==0)) ? totalData.hjAmount : '--' }}</a-col>
                 <a-col span="4">德路斯:{{ (totalData && (totalData.dlsAmount || totalData.dlsAmount==0)) ? totalData.dlsAmount : '--' }}</a-col>
-                <a-col span="4">稳升:{{ (totalData && (totalData.wsAmount || totalData.wsAmount==0)) ? totalData.wsAmount : '--' }}</a-col>
                 <a-col span="4">TBU:{{ (totalData && (totalData.tbuAmount || totalData.tbuAmount==0)) ? totalData.tbuAmount : '--' }}</a-col>
                 <a-col span="4">TBU-P:{{ (totalData && (totalData.tbupAmount || totalData.tbupAmount==0)) ? totalData.tbupAmount : '--' }}</a-col>
                 <a-col span="4">布瑞斯:{{ (totalData && (totalData.brsAmount || totalData.brsAmount==0)) ? totalData.brsAmount : '--' }}</a-col>
@@ -229,6 +231,13 @@ export default {
                   width: 80,
                   customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
                 },
+                {
+                  title: '变速箱滤清器',
+                  dataIndex: 'jpBsxLqqAmount',
+                  align: 'center',
+                  width: 80,
+                  customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
+                },
                 {
                   title: '雨刮片',
                   dataIndex: 'jpYgpAmount',
@@ -286,6 +295,26 @@ export default {
                 }
               ]
             },
+            {
+              title: '稳升',
+              align: 'center',
+              children: [
+                {
+                  title: '点火线圈',
+                  dataIndex: 'wsDhxqAmount',
+                  align: 'center',
+                  width: 80,
+                  customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '灯泡',
+                  dataIndex: 'wsDpAmount',
+                  align: 'center',
+                  width: 80,
+                  customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
+                }
+              ]
+            },
             {
               title: '汇箭',
               dataIndex: 'hjAmount',
@@ -300,13 +329,6 @@ export default {
               width: 80,
               customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
             },
-            {
-              title: '稳升',
-              dataIndex: 'wsAmount',
-              align: 'center',
-              width: 80,
-              customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
-            },
             {
               title: 'TBU',
               dataIndex: 'tbuAmount',

+ 48 - 12
src/views/reportData/returnGoodsPresentation/list.vue

@@ -109,6 +109,7 @@
             <a-col span="22">
               <a-row>
                 <a-col span="4">箭牌滤清器:{{ (totalData && (totalData.jpLqqAmount || totalData.jpLqqAmount==0)) ? totalData.jpLqqAmount : '--' }}</a-col>
+                <a-col span="4">箭牌变速箱滤清器:{{ (totalData && (totalData.jpBsxLqqAmount || totalData.jpBsxLqqAmount==0)) ? totalData.jpBsxLqqAmount : '--' }}</a-col>
                 <a-col span="4">箭牌雨刮片:{{ (totalData && (totalData.jpYgpAmount || totalData.jpYgpAmount==0)) ? totalData.jpYgpAmount : '--' }}</a-col>
                 <a-col span="4">箭牌喇叭:{{ (totalData && (totalData.jpLbAmount || totalData.jpLbAmount==0)) ? totalData.jpLbAmount : '--' }}</a-col>
                 <a-col span="4">箭牌刹车片:{{ (totalData && (totalData.jpScpAmount || totalData.jpScpAmount==0)) ? totalData.jpScpAmount : '--' }}</a-col>
@@ -116,10 +117,12 @@
                 <a-col span="4">冠牌滤清器:{{ (totalData && (totalData.gpLqqAmount || totalData.gpLqqAmount==0)) ? totalData.gpLqqAmount : '--' }}</a-col>
                 <a-col span="4">冠牌雨刮片:{{ (totalData && (totalData.gpYgpAmount || totalData.gpYgpAmount==0)) ? totalData.gpYgpAmount : '--' }}</a-col>
                 <a-col span="4">冠牌刹车片:{{ (totalData && (totalData.gpScpAmount || totalData.gpScpAmount==0)) ? totalData.gpScpAmount : '--' }}</a-col>
+                <a-col span="4">稳升点火线圈:{{ (totalData && (totalData.wsDhxqAmount || totalData.wsDhxqAmount==0)) ? totalData.wsDhxqAmount : '--' }}</a-col>
+                <a-col span="4">稳升灯泡:{{ (totalData && (totalData.wsDpAmount || totalData.wsDpAmount==0)) ? totalData.wsDpAmount : '--' }}</a-col>
                 <a-col span="4">汇箭:{{ (totalData && (totalData.hjAmount || totalData.hjAmount==0)) ? totalData.hjAmount : '--' }}</a-col>
                 <a-col span="4">德路斯:{{ (totalData && (totalData.dlsAmount || totalData.dlsAmount==0)) ? totalData.dlsAmount : '--' }}</a-col>
-                <a-col span="4">稳升:{{ (totalData && (totalData.wsAmount || totalData.wsAmount==0)) ? totalData.wsAmount : '--' }}</a-col>
-                <a-col span="4">TBU:{{ (totalData && (totalData.tbuAmount || totalData.tbuAmount==0)) ? totalData.tbuAmount : '--' }}</a-col>
+                <a-col span="4">TBU刹车片:{{ (totalData && (totalData.tbuScpAmount || totalData.tbuScpAmount==0)) ? totalData.tbuScpAmount : '--' }}</a-col>
+                <a-col span="4">TBU刹车油:{{ (totalData && (totalData.tbuScyAmount || totalData.tbuScyAmount==0)) ? totalData.tbuScyAmount : '--' }}</a-col>
                 <a-col span="4">TBU-P:{{ (totalData && (totalData.tbupAmount || totalData.tbupAmount==0)) ? totalData.tbupAmount : '--' }}</a-col>
                 <a-col span="4">布瑞斯:{{ (totalData && (totalData.brsAmount || totalData.brsAmount==0)) ? totalData.brsAmount : '--' }}</a-col>
                 <a-col span="4">NGK:{{ (totalData && (totalData.ngkAmount || totalData.ngkAmount==0)) ? totalData.ngkAmount : '--' }}</a-col>
@@ -226,6 +229,13 @@ export default {
                   width: 80,
                   customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
                 },
+                {
+                  title: '变速箱滤清器',
+                  dataIndex: 'jpBsxLqqAmount',
+                  align: 'center',
+                  width: 80,
+                  customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
+                },
                 {
                   title: '雨刮片',
                   dataIndex: 'jpYgpAmount',
@@ -283,6 +293,26 @@ export default {
                 }
               ]
             },
+            {
+              title: '稳升',
+              align: 'center',
+              children: [
+                {
+                  title: '点火线圈',
+                  dataIndex: 'wsDhxqAmount',
+                  align: 'center',
+                  width: 80,
+                  customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '灯泡',
+                  dataIndex: 'wsDpAmount',
+                  align: 'center',
+                  width: 80,
+                  customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
+                }
+              ]
+            },
             {
               title: '汇箭',
               dataIndex: 'hjAmount',
@@ -297,19 +327,25 @@ export default {
               width: 80,
               customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
             },
-            {
-              title: '稳升',
-              dataIndex: 'wsAmount',
-              align: 'center',
-              width: 80,
-              customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
-            },
             {
               title: 'TBU',
-              dataIndex: 'tbuAmount',
               align: 'center',
-              width: 80,
-              customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
+              children: [
+                {
+                  title: '刹车片',
+                  dataIndex: 'tbuScpAmount',
+                  align: 'center',
+                  width: 80,
+                  customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '刹车油',
+                  dataIndex: 'tbuScyAmount',
+                  align: 'center',
+                  width: 80,
+                  customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
+                }
+              ]
             },
             {
               title: 'TBU-P',

+ 48 - 12
src/views/reportData/returnSlipReport/list.vue

@@ -109,6 +109,7 @@
             <a-col span="22">
               <a-row>
                 <a-col span="4">箭牌滤清器:{{ (totalData && (totalData.jpLqqAmount || totalData.jpLqqAmount==0)) ? totalData.jpLqqAmount : '--' }}</a-col>
+                <a-col span="4">箭牌变速箱滤清器:{{ (totalData && (totalData.jpBsxLqqAmount || totalData.jpBsxLqqAmount==0)) ? totalData.jpBsxLqqAmount : '--' }}</a-col>
                 <a-col span="4">箭牌雨刮片:{{ (totalData && (totalData.jpYgpAmount || totalData.jpYgpAmount==0)) ? totalData.jpYgpAmount : '--' }}</a-col>
                 <a-col span="4">箭牌喇叭:{{ (totalData && (totalData.jpLbAmount || totalData.jpLbAmount==0)) ? totalData.jpLbAmount : '--' }}</a-col>
                 <a-col span="4">箭牌刹车片:{{ (totalData && (totalData.jpScpAmount || totalData.jpScpAmount==0)) ? totalData.jpScpAmount : '--' }}</a-col>
@@ -116,10 +117,12 @@
                 <a-col span="4">冠牌滤清器:{{ (totalData && (totalData.gpLqqAmount || totalData.gpLqqAmount==0)) ? totalData.gpLqqAmount : '--' }}</a-col>
                 <a-col span="4">冠牌雨刮片:{{ (totalData && (totalData.gpYgpAmount || totalData.gpYgpAmount==0)) ? totalData.gpYgpAmount : '--' }}</a-col>
                 <a-col span="4">冠牌刹车片:{{ (totalData && (totalData.gpScpAmount || totalData.gpScpAmount==0)) ? totalData.gpScpAmount : '--' }}</a-col>
+                <a-col span="4">稳升点火线圈:{{ (totalData && (totalData.wsDhxqAmount || totalData.wsDhxqAmount==0)) ? totalData.wsDhxqAmount : '--' }}</a-col>
+                <a-col span="4">稳升灯泡:{{ (totalData && (totalData.wsDpAmount || totalData.wsDpAmount==0)) ? totalData.wsDpAmount : '--' }}</a-col>
                 <a-col span="4">汇箭:{{ (totalData && (totalData.hjAmount || totalData.hjAmount==0)) ? totalData.hjAmount : '--' }}</a-col>
                 <a-col span="4">德路斯:{{ (totalData && (totalData.dlsAmount || totalData.dlsAmount==0)) ? totalData.dlsAmount : '--' }}</a-col>
-                <a-col span="4">稳升:{{ (totalData && (totalData.wsAmount || totalData.wsAmount==0)) ? totalData.wsAmount : '--' }}</a-col>
-                <a-col span="4">TBU:{{ (totalData && (totalData.tbuAmount || totalData.tbuAmount==0)) ? totalData.tbuAmount : '--' }}</a-col>
+                <a-col span="4">TBU刹车片:{{ (totalData && (totalData.tbuScpAmount || totalData.tbuScpAmount==0)) ? totalData.tbuScpAmount : '--' }}</a-col>
+                <a-col span="4">TBU刹车油:{{ (totalData && (totalData.tbuScyAmount || totalData.tbuScyAmount==0)) ? totalData.tbuScyAmount : '--' }}</a-col>
                 <a-col span="4">TBU-P:{{ (totalData && (totalData.tbupAmount || totalData.tbupAmount==0)) ? totalData.tbupAmount : '--' }}</a-col>
                 <a-col span="4">布瑞斯:{{ (totalData && (totalData.brsAmount || totalData.brsAmount==0)) ? totalData.brsAmount : '--' }}</a-col>
                 <a-col span="4">NGK:{{ (totalData && (totalData.ngkAmount || totalData.ngkAmount==0)) ? totalData.ngkAmount : '--' }}</a-col>
@@ -234,6 +237,13 @@ export default {
                   width: 80,
                   customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
                 },
+                {
+                  title: '变速箱滤清器',
+                  dataIndex: 'jpBsxLqqAmount',
+                  align: 'center',
+                  width: 80,
+                  customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
+                },
                 {
                   title: '雨刮片',
                   dataIndex: 'jpYgpAmount',
@@ -291,6 +301,26 @@ export default {
                 }
               ]
             },
+            {
+              title: '稳升',
+              align: 'center',
+              children: [
+                {
+                  title: '点火线圈',
+                  dataIndex: 'wsDhxqAmount',
+                  align: 'center',
+                  width: 80,
+                  customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '灯泡',
+                  dataIndex: 'wsDpAmount',
+                  align: 'center',
+                  width: 80,
+                  customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
+                }
+              ]
+            },
             {
               title: '汇箭',
               dataIndex: 'hjAmount',
@@ -305,19 +335,25 @@ export default {
               width: 80,
               customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
             },
-            {
-              title: '稳升',
-              dataIndex: 'wsAmount',
-              align: 'center',
-              width: 80,
-              customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
-            },
             {
               title: 'TBU',
-              dataIndex: 'tbuAmount',
               align: 'center',
-              width: 80,
-              customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
+              children: [
+                {
+                  title: '刹车片',
+                  dataIndex: 'tbuScpAmount',
+                  align: 'center',
+                  width: 80,
+                  customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '刹车油',
+                  dataIndex: 'tbuScyAmount',
+                  align: 'center',
+                  width: 80,
+                  customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
+                }
+              ]
             },
             {
               title: 'TBU-P',

+ 2 - 2
src/views/reportData/salesAmountReport/list.vue

@@ -146,7 +146,7 @@ import subarea from '@/views/common/subarea.js'
 import reportModal from '@/views/common/reportModal.vue'
 import { getArea } from '@/api/data'
 import { hdExportExcel } from '@/libs/exportExcel'
-import { salesBillReportGroupByBuyerList, salesBillReportCount } from '@/api/salesBillReport'
+import { salesBillReportGroupByBuyerList, salesBillReportCountByBuyer } from '@/api/salesBillReport'
 import { salesAmountExport } from '@/api/reportData'
 export default {
   name: 'SalesAmountReportList',
@@ -413,7 +413,7 @@ export default {
     },
     // 总计
     getCount (params) {
-      salesBillReportCount(params).then(res => {
+      salesBillReportCountByBuyer(params).then(res => {
         if (res.status == 200 && res.data) {
           this.totalData = res.data
         } else {

+ 48 - 12
src/views/reportData/salesPresentation/list.vue

@@ -109,6 +109,7 @@
             <a-col span="22">
               <a-row>
                 <a-col span="4">箭牌滤清器:{{ (totalData && (totalData.jpLqqAmount || totalData.jpLqqAmount==0)) ? totalData.jpLqqAmount : '--' }}</a-col>
+                <a-col span="4">箭牌变速箱滤清器:{{ (totalData && (totalData.jpBsxLqqAmount || totalData.jpBsxLqqAmount==0)) ? totalData.jpBsxLqqAmount : '--' }}</a-col>
                 <a-col span="4">箭牌雨刮片:{{ (totalData && (totalData.jpYgpAmount || totalData.jpYgpAmount==0)) ? totalData.jpYgpAmount : '--' }}</a-col>
                 <a-col span="4">箭牌喇叭:{{ (totalData && (totalData.jpLbAmount || totalData.jpLbAmount==0)) ? totalData.jpLbAmount : '--' }}</a-col>
                 <a-col span="4">箭牌刹车片:{{ (totalData && (totalData.jpScpAmount || totalData.jpScpAmount==0)) ? totalData.jpScpAmount : '--' }}</a-col>
@@ -116,10 +117,12 @@
                 <a-col span="4">冠牌滤清器:{{ (totalData && (totalData.gpLqqAmount || totalData.gpLqqAmount==0)) ? totalData.gpLqqAmount : '--' }}</a-col>
                 <a-col span="4">冠牌雨刮片:{{ (totalData && (totalData.gpYgpAmount || totalData.gpYgpAmount==0)) ? totalData.gpYgpAmount : '--' }}</a-col>
                 <a-col span="4">冠牌刹车片:{{ (totalData && (totalData.gpScpAmount || totalData.gpScpAmount==0)) ? totalData.gpScpAmount : '--' }}</a-col>
+                <a-col span="4">稳升点火线圈:{{ (totalData && (totalData.wsDhxqAmount || totalData.wsDhxqAmount==0)) ? totalData.wsDhxqAmount : '--' }}</a-col>
+                <a-col span="4">稳升灯泡:{{ (totalData && (totalData.wsDpAmount || totalData.wsDpAmount==0)) ? totalData.wsDpAmount : '--' }}</a-col>
                 <a-col span="4">汇箭:{{ (totalData && (totalData.hjAmount || totalData.hjAmount==0)) ? totalData.hjAmount : '--' }}</a-col>
                 <a-col span="4">德路斯:{{ (totalData && (totalData.dlsAmount || totalData.dlsAmount==0)) ? totalData.dlsAmount : '--' }}</a-col>
-                <a-col span="4">稳升:{{ (totalData && (totalData.wsAmount || totalData.wsAmount==0)) ? totalData.wsAmount : '--' }}</a-col>
-                <a-col span="4">TBU:{{ (totalData && (totalData.tbuAmount || totalData.tbuAmount==0)) ? totalData.tbuAmount : '--' }}</a-col>
+                <a-col span="4">TBU刹车片:{{ (totalData && (totalData.tbuScpAmount || totalData.tbuScpAmount==0)) ? totalData.tbuScpAmount : '--' }}</a-col>
+                <a-col span="4">TBU刹车油:{{ (totalData && (totalData.tbuScyAmount || totalData.tbuScyAmount==0)) ? totalData.tbuScyAmount : '--' }}</a-col>
                 <a-col span="4">TBU-P:{{ (totalData && (totalData.tbupAmount || totalData.tbupAmount==0)) ? totalData.tbupAmount : '--' }}</a-col>
                 <a-col span="4">布瑞斯:{{ (totalData && (totalData.brsAmount || totalData.brsAmount==0)) ? totalData.brsAmount : '--' }}</a-col>
                 <a-col span="4">NGK:{{ (totalData && (totalData.ngkAmount || totalData.ngkAmount==0)) ? totalData.ngkAmount : '--' }}</a-col>
@@ -227,6 +230,13 @@ export default {
                   width: 80,
                   customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
                 },
+                {
+                  title: '变速箱滤清器',
+                  dataIndex: 'jpBsxLqqAmount',
+                  align: 'center',
+                  width: 80,
+                  customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
+                },
                 {
                   title: '雨刮片',
                   dataIndex: 'jpYgpAmount',
@@ -284,6 +294,26 @@ export default {
                 }
               ]
             },
+            {
+              title: '稳升',
+              align: 'center',
+              children: [
+                {
+                  title: '点火线圈',
+                  dataIndex: 'wsDhxqAmount',
+                  align: 'center',
+                  width: 80,
+                  customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '灯泡',
+                  dataIndex: 'wsDpAmount',
+                  align: 'center',
+                  width: 80,
+                  customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
+                }
+              ]
+            },
             {
               title: '汇箭',
               dataIndex: 'hjAmount',
@@ -298,19 +328,25 @@ export default {
               width: 80,
               customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
             },
-            {
-              title: '稳升',
-              dataIndex: 'wsAmount',
-              align: 'center',
-              width: 80,
-              customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
-            },
             {
               title: 'TBU',
-              dataIndex: 'tbuAmount',
               align: 'center',
-              width: 80,
-              customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
+              children: [
+                {
+                  title: '刹车片',
+                  dataIndex: 'tbuScpAmount',
+                  align: 'center',
+                  width: 80,
+                  customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '刹车油',
+                  dataIndex: 'tbuScyAmount',
+                  align: 'center',
+                  width: 80,
+                  customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
+                }
+              ]
             },
             {
               title: 'TBU-P',

+ 30 - 8
src/views/reportData/salesReturnReport/list.vue

@@ -104,6 +104,7 @@
             <a-col span="22">
               <a-row>
                 <a-col span="4">箭牌滤清器:{{ (totalData && (totalData.jpLqqAmount || totalData.jpLqqAmount==0)) ? totalData.jpLqqAmount : '--' }}</a-col>
+                <a-col span="4">箭牌变速箱滤清器:{{ (totalData && (totalData.jpBsxLqqAmount || totalData.jpBsxLqqAmount==0)) ? totalData.jpBsxLqqAmount : '--' }}</a-col>
                 <a-col span="4">箭牌雨刮片:{{ (totalData && (totalData.jpYgpAmount || totalData.jpYgpAmount==0)) ? totalData.jpYgpAmount : '--' }}</a-col>
                 <a-col span="4">箭牌喇叭:{{ (totalData && (totalData.jpLbAmount || totalData.jpLbAmount==0)) ? totalData.jpLbAmount : '--' }}</a-col>
                 <a-col span="4">箭牌刹车片:{{ (totalData && (totalData.jpScpAmount || totalData.jpScpAmount==0)) ? totalData.jpScpAmount : '--' }}</a-col>
@@ -111,9 +112,10 @@
                 <a-col span="4">冠牌滤清器:{{ (totalData && (totalData.gpLqqAmount || totalData.gpLqqAmount==0)) ? totalData.gpLqqAmount : '--' }}</a-col>
                 <a-col span="4">冠牌雨刮片:{{ (totalData && (totalData.gpYgpAmount || totalData.gpYgpAmount==0)) ? totalData.gpYgpAmount : '--' }}</a-col>
                 <a-col span="4">冠牌刹车片:{{ (totalData && (totalData.gpScpAmount || totalData.gpScpAmount==0)) ? totalData.gpScpAmount : '--' }}</a-col>
+                <a-col span="4">稳升点火线圈:{{ (totalData && (totalData.wsDhxqAmount || totalData.wsDhxqAmount==0)) ? totalData.wsDhxqAmount : '--' }}</a-col>
+                <a-col span="4">稳升灯泡:{{ (totalData && (totalData.wsDpAmount || totalData.wsDpAmount==0)) ? totalData.wsDpAmount : '--' }}</a-col>
                 <a-col span="4">汇箭:{{ (totalData && (totalData.hjAmount || totalData.hjAmount==0)) ? totalData.hjAmount : '--' }}</a-col>
                 <a-col span="4">德路斯:{{ (totalData && (totalData.dlsAmount || totalData.dlsAmount==0)) ? totalData.dlsAmount : '--' }}</a-col>
-                <a-col span="4">稳升:{{ (totalData && (totalData.wsAmount || totalData.wsAmount==0)) ? totalData.wsAmount : '--' }}</a-col>
                 <a-col span="4">TBU:{{ (totalData && (totalData.tbuAmount || totalData.tbuAmount==0)) ? totalData.tbuAmount : '--' }}</a-col>
                 <a-col span="4">TBU-P:{{ (totalData && (totalData.tbupAmount || totalData.tbupAmount==0)) ? totalData.tbupAmount : '--' }}</a-col>
                 <a-col span="4">布瑞斯:{{ (totalData && (totalData.brsAmount || totalData.brsAmount==0)) ? totalData.brsAmount : '--' }}</a-col>
@@ -229,6 +231,13 @@ export default {
                   width: 80,
                   customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
                 },
+                {
+                  title: '变速箱滤清器',
+                  dataIndex: 'jpBsxLqqAmount',
+                  align: 'center',
+                  width: 80,
+                  customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
+                },
                 {
                   title: '雨刮片',
                   dataIndex: 'jpYgpAmount',
@@ -286,6 +295,26 @@ export default {
                 }
               ]
             },
+            {
+              title: '稳升',
+              align: 'center',
+              children: [
+                {
+                  title: '点火线圈',
+                  dataIndex: 'wsDhxqAmount',
+                  align: 'center',
+                  width: 80,
+                  customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '灯泡',
+                  dataIndex: 'wsDpAmount',
+                  align: 'center',
+                  width: 80,
+                  customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
+                }
+              ]
+            },
             {
               title: '汇箭',
               dataIndex: 'hjAmount',
@@ -300,13 +329,6 @@ export default {
               width: 80,
               customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
             },
-            {
-              title: '稳升',
-              dataIndex: 'wsAmount',
-              align: 'center',
-              width: 80,
-              customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
-            },
             {
               title: 'TBU',
               dataIndex: 'tbuAmount',

+ 48 - 12
src/views/reportData/salesSlipReport/list.vue

@@ -109,6 +109,7 @@
             <a-col span="22">
               <a-row>
                 <a-col span="4">箭牌滤清器:{{ (totalData && (totalData.jpLqqAmount || totalData.jpLqqAmount==0)) ? totalData.jpLqqAmount : '--' }}</a-col>
+                <a-col span="4">箭牌变速箱滤清器:{{ (totalData && (totalData.jpBsxLqqAmount || totalData.jpBsxLqqAmount==0)) ? totalData.jpBsxLqqAmount : '--' }}</a-col>
                 <a-col span="4">箭牌雨刮片:{{ (totalData && (totalData.jpYgpAmount || totalData.jpYgpAmount==0)) ? totalData.jpYgpAmount : '--' }}</a-col>
                 <a-col span="4">箭牌喇叭:{{ (totalData && (totalData.jpLbAmount || totalData.jpLbAmount==0)) ? totalData.jpLbAmount : '--' }}</a-col>
                 <a-col span="4">箭牌刹车片:{{ (totalData && (totalData.jpScpAmount || totalData.jpScpAmount==0)) ? totalData.jpScpAmount : '--' }}</a-col>
@@ -116,10 +117,12 @@
                 <a-col span="4">冠牌滤清器:{{ (totalData && (totalData.gpLqqAmount || totalData.gpLqqAmount==0)) ? totalData.gpLqqAmount : '--' }}</a-col>
                 <a-col span="4">冠牌雨刮片:{{ (totalData && (totalData.gpYgpAmount || totalData.gpYgpAmount==0)) ? totalData.gpYgpAmount : '--' }}</a-col>
                 <a-col span="4">冠牌刹车片:{{ (totalData && (totalData.gpScpAmount || totalData.gpScpAmount==0)) ? totalData.gpScpAmount : '--' }}</a-col>
+                <a-col span="4">稳升点火线圈:{{ (totalData && (totalData.wsDhxqAmount || totalData.wsDhxqAmount==0)) ? totalData.wsDhxqAmount : '--' }}</a-col>
+                <a-col span="4">稳升灯泡:{{ (totalData && (totalData.wsDpAmount || totalData.wsDpAmount==0)) ? totalData.wsDpAmount : '--' }}</a-col>
                 <a-col span="4">汇箭:{{ (totalData && (totalData.hjAmount || totalData.hjAmount==0)) ? totalData.hjAmount : '--' }}</a-col>
                 <a-col span="4">德路斯:{{ (totalData && (totalData.dlsAmount || totalData.dlsAmount==0)) ? totalData.dlsAmount : '--' }}</a-col>
-                <a-col span="4">稳升:{{ (totalData && (totalData.wsAmount || totalData.wsAmount==0)) ? totalData.wsAmount : '--' }}</a-col>
-                <a-col span="4">TBU:{{ (totalData && (totalData.tbuAmount || totalData.tbuAmount==0)) ? totalData.tbuAmount : '--' }}</a-col>
+                <a-col span="4">TBU刹车片:{{ (totalData && (totalData.tbuScpAmount || totalData.tbuScpAmount==0)) ? totalData.tbuScpAmount : '--' }}</a-col>
+                <a-col span="4">TBU刹车油:{{ (totalData && (totalData.tbuScyAmount || totalData.tbuScyAmount==0)) ? totalData.tbuScyAmount : '--' }}</a-col>
                 <a-col span="4">TBU-P:{{ (totalData && (totalData.tbupAmount || totalData.tbupAmount==0)) ? totalData.tbupAmount : '--' }}</a-col>
                 <a-col span="4">布瑞斯:{{ (totalData && (totalData.brsAmount || totalData.brsAmount==0)) ? totalData.brsAmount : '--' }}</a-col>
                 <a-col span="4">NGK:{{ (totalData && (totalData.ngkAmount || totalData.ngkAmount==0)) ? totalData.ngkAmount : '--' }}</a-col>
@@ -236,6 +239,13 @@ export default {
                   width: 80,
                   customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
                 },
+                {
+                  title: '变速箱滤清器',
+                  dataIndex: 'jpBsxLqqAmount',
+                  align: 'center',
+                  width: 80,
+                  customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
+                },
                 {
                   title: '雨刮片',
                   dataIndex: 'jpYgpAmount',
@@ -293,6 +303,26 @@ export default {
                 }
               ]
             },
+            {
+              title: '稳升',
+              align: 'center',
+              children: [
+                {
+                  title: '点火线圈',
+                  dataIndex: 'wsDhxqAmount',
+                  align: 'center',
+                  width: 80,
+                  customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '灯泡',
+                  dataIndex: 'wsDpAmount',
+                  align: 'center',
+                  width: 80,
+                  customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
+                }
+              ]
+            },
             {
               title: '汇箭',
               dataIndex: 'hjAmount',
@@ -307,19 +337,25 @@ export default {
               width: 80,
               customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
             },
-            {
-              title: '稳升',
-              dataIndex: 'wsAmount',
-              align: 'center',
-              width: 80,
-              customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
-            },
             {
               title: 'TBU',
-              dataIndex: 'tbuAmount',
               align: 'center',
-              width: 80,
-              customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
+              children: [
+                {
+                  title: '刹车片',
+                  dataIndex: 'tbuScpAmount',
+                  align: 'center',
+                  width: 80,
+                  customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '刹车油',
+                  dataIndex: 'tbuScyAmount',
+                  align: 'center',
+                  width: 80,
+                  customRender: function (text) { return (text || text == 0) ? ('¥' + text) : '--' }
+                }
+              ]
             },
             {
               title: 'TBU-P',

+ 2 - 1
src/views/salesManagement/matchSendOutOrder/list.vue

@@ -81,7 +81,8 @@
                       <Area id="matchSoo-shippingAddrProvinceSn" v-model="queryParam.shippingAddrProvinceSn" placeholder="请选择省"></Area>
                     </a-form-model-item>
                   </a-form-model-item>
-                  </a-form-model-item></a-col>
+                  </a-form-model-item>
+                </a-col>
               </template>
               <a-col :md="6" :sm="24">
                 <span class="table-page-search-submitButtons">

+ 13 - 13
src/views/salesManagement/outboundOrder/list.vue

@@ -176,7 +176,7 @@ import allocationDetailModal from '@/views/allocationManagement/transferOut/deta
 import sendGoodModal from './sendGoodModal.vue'
 import { STable, VSelect } from '@/components'
 import { stockOutList, stockOutOut } from '@/api/stockOut'
-import { getCustomerInfo } from '@/api/sendBill'
+import { getCustomerInfo, validateStockOut } from '@/api/sendBill'
 export default {
   name: 'OutboundOrderList',
   mixins: [commonMixin],
@@ -234,10 +234,10 @@ export default {
       const arr = [
         { title: '创建时间', dataIndex: 'createDate', width: '8%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '审核时间', dataIndex: 'auditTime', width: '8%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '出库单号', scopedSlots: { customRender: 'stockOutNo' }, width: '15%', align: 'center' },
+        { title: '出库单号', scopedSlots: { customRender: 'stockOutNo' }, width: '10%', align: 'center' },
         { title: '业务单号', dataIndex: 'outBizNo', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '出库类型', dataIndex: 'outBizTypeDictValue', width: '8%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '客户名称', dataIndex: 'demanderName', width: '12%', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
+        { title: '客户名称', dataIndex: 'demanderName', width: '17%', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
         { title: '数量', dataIndex: 'productTotalQty', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
         // { title: '售价', dataIndex: 'productTotalPrice', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
         { title: '出库时间', dataIndex: 'outTime', width: '8%', align: 'center', customRender: function (text) { return text || '--' } },
@@ -382,18 +382,18 @@ export default {
         }
       })
     },
-    // 发货/批量发货
-    getCustome (data, stockOutSnList) {
-      const _this = this
+    // 获取客户信息
+    async getCustome (data, stockOutSnList) {
       this.spinning = true
-      getCustomerInfo({ stockOutSnList: stockOutSnList }).then(res => {
-        if (res.status == 200) {
-          _this.showDetailModal = true
-          _this.$refs.detailModal.setData(data, res.data)
-          _this.spinning = false
-        }
-      })
+      const customer = await getCustomerInfo({ stockOutSnList: stockOutSnList })
+      const validRet = await validateStockOut({ stockOutSnList, ...customer.data })
+      if (validRet.status == 200) {
+        this.showDetailModal = true
+        this.$refs.detailModal.setData(data, customer.data)
+        this.spinning = false
+      }
     },
+    // 发货/批量发货
     handleSendGood (row) {
       const _this = this
       let stockOutSnList = []

+ 20 - 2
src/views/salesManagement/outboundOrder/sendGoodModal.vue

@@ -47,6 +47,16 @@
                   <a-textarea placeholder="请输入详细地址(最多300字符)" :maxLength="300" v-model.trim="form.customerAddressDetail"></a-textarea>
                 </a-form-model-item>
               </a-col>
+              <a-col span="12">
+                <a-form-model-item label="物流电话" prop="transportTele">
+                  <a-input placeholder="请输入物流电话" :maxLength="30" v-model.trim="form.transportTele"></a-input>
+                </a-form-model-item>
+              </a-col>
+              <a-col span="12">
+                <a-form-model-item label="物流单号" prop="transportNo">
+                  <a-input placeholder="请输入物流单号" :maxLength="30" v-model.trim="form.transportNo"></a-input>
+                </a-form-model-item>
+              </a-col>
               <a-col span="12">
                 <a-form-model-item label="付款方式">
                   <v-select
@@ -208,6 +218,8 @@ export default {
         'sendDate': moment(), // 托运时间
         'customerAddress': '', // 目的地
         'customerAddressDetail': '', // 详细地址
+        'transportTele': '', // 物流电话
+        'transportNo': '', // 物流单号
         'customerCacateName': '', // 收货人
         'customerCacatePhone': '', // 收货人电话
         'payType': '', // 收款方式
@@ -280,6 +292,8 @@ export default {
           this.form.customerCacatePhone = res.data.customerCacatePhone
           this.form.customerAddress = res.data.customerAddress
           this.form.customerAddressDetail = res.data.customerAddressDetail
+          this.form.transportTele = res.data.transportTele
+          this.form.transportNo = res.data.transportNo
           this.form.sendDate = res.data.sendDate
           this.form.payType = res.data.payType
           this.form.handoverType = res.data.handoverType
@@ -363,6 +377,7 @@ export default {
       this.$refs.ruleForm.validate(valid => {
         _this.form.sendBillDetailList = _this.tableData
         if (valid) {
+          console.log(_this.form, this.isEdit)
           if (_this.form.sendBillDetailList.length == 0) {
             _this.$message.info('请新增发货明细!')
             return false
@@ -375,16 +390,16 @@ export default {
             _this.$message.info('请输入费用!')
             return false
           }
-          console.log(_this.form, this.isEdit)
+
           const baseUrl = this.isEdit ? sendBillUpdate : sendBillInsert
           _this.spinning = true
           baseUrl(_this.form).then(res => {
             if (res.status == 200) {
               _this.$emit('ok')
               _this.isShow = false
-              _this.spinning = false
               _this.$message.success(res.message)
             }
+            _this.spinning = false
           })
         } else {
           return false
@@ -396,12 +411,15 @@ export default {
       this.$emit('cancel')
       this.tableData = []
       this.detail = []
+      this.spinning = false
       this.$refs.ruleForm.resetFields()
       this.form = {
         'stockOutSnList': [], // 出库单列表
         'sendDate': moment(), // 托运时间
         'customerAddress': '', // 目的地
         'customerAddressDetail': '', // 详细地址
+        'transportTele': '', // 物流电话
+        'transportNo': '', // 物流单号
         'customerCacateName': '', // 收货人
         'customerCacatePhone': '', // 收货人电话
         'payType': '', // 收款方式

+ 1 - 10
src/views/salesManagement/pushOrderManagement/detail.vue

@@ -190,16 +190,7 @@ export default {
   methods: {
     //  返回
     handleBack () {
-      // if (this.$route.params.type == 'pushOrder') { // 下推
-      //   this.$router.push({ path: '/salesManagement/pushOrderManagement/list', query: { closeLastOldTab: true } })
-      // } else if (this.$route.params.type == 'examineVerify') { // 备货审核
-      //   this.$router.push({ path: '/salesManagement/examineVerify/list', query: { closeLastOldTab: true } })
-      // } else if (this.$route.params.type == 'financialCollection') { // 财务收款
-      //   this.$router.push({ path: '/financialManagement/financialCollection/list', query: { closeLastOldTab: true } })
-      // } else if (this.$route.params.type == 'salesCollection') { // 销售收款
-      //   this.$router.push({ path: '/salesManagement/salesCollection/list', query: { closeLastOldTab: true } })
-      // }
-      this.$router.push({ name: this.fromRouter ? this.fromRouter.name : 'pushOrderManagementList' })
+      this.$router.push({ name: 'pushOrderManagementList' })
     },
     //  详情
     getDetail () {

+ 6 - 4
src/views/salesManagement/salesCollection/list.vue

@@ -169,6 +169,12 @@
           <span v-if="record.settleState=='WAIT' && record.voidFlag==1">--</span>
         </template>
       </s-table>
+
+      <!-- 关联收款单 -->
+      <detailModal ref="detailModal" modalTit="关联收款单" @ok="relationSuccess" :openModal="showDetail" @cancel="showDetail=false"></detailModal>
+      <!-- 销售收款凭证 -->
+      <voucherModal ref="voucherModal" modalTit="销售收款凭证" :openModal="showVoucher" @cancel="showVoucher=false"></voucherModal>
+
       <!-- 销售收款弹框 -->
       <commonModal
         :openModal="showSkModal"
@@ -191,10 +197,6 @@
           </div>
         </div>
       </commonModal>
-      <!-- 关联收款单 -->
-      <detailModal ref="detailModal" modalTit="关联收款单" @ok="relationSuccess" :openModal="showDetail" @cancel="showDetail=false"></detailModal>
-      <!-- 销售收款凭证 -->
-      <voucherModal ref="voucherModal" modalTit="销售收款凭证" :openModal="showVoucher" @cancel="showVoucher=false"></voucherModal>
     </a-spin>
   </a-card>
 </template>

+ 3 - 0
src/views/salesManagement/salesCollection/voucherModal.vue

@@ -58,6 +58,9 @@
             <a-descriptions-item label="收款人">
               {{ detail.settlePersonName || '--' }}
             </a-descriptions-item>
+            <a-descriptions-item label="操作时间">
+              {{ detail.operateTime || '--' }}
+            </a-descriptions-item>
           </a-descriptions>
         </div>
         <div v-if="detail.keepType == 'RELATION_BOOK'">

+ 1 - 1
src/views/salesManagement/salesQuery/chooseCustomModal.vue

@@ -85,7 +85,7 @@ export default {
       rules: {
         buyerSn: [ { required: true, message: '请选择客户', trigger: ['change', 'blur'] } ],
         settleStyleSn: [ { required: true, message: '请选择支付方式', trigger: ['change', 'blur'] } ],
-        consigneeTel: [ { required: true, message: '收货人手机号码不能为空', trigger: ['change', 'blur'] } ]
+        consigneeTel: [ { required: true, message: '请选择收货地址', trigger: ['change', 'blur'] } ]
       },
       addressVal: '选择地址', //  选择地址/更换地址
       chooseAddr: '', //  当前已选地址信息

+ 4 - 11
src/views/salesManagement/salesQuery/detail.vue

@@ -184,7 +184,7 @@
       @ok="auditOrder('AUDIT_PASS')"
       @fail="auditOrder('AUDIT_REJECT')" />
     <!-- 审核加下推 -->
-    <dsModal ref="dsModal" :openModal="showDsModal" @close="showDsModal=false" @ok="handleOnceAudit" />
+    <dsModal ref="dsModal" title="销售单一键审核" :openModal="showDsModal" @close="showDsModal=false" @ok="handleOnceAudit" />
   </div>
 </template>
 
@@ -318,16 +318,7 @@ export default {
   methods: {
     //  返回
     handleBack () {
-      // if (this.$route.params.type == 'pushOrder') { // 下推
-      //   this.$router.push({ path: '/salesManagement/pushOrderManagement/list', query: { closeLastOldTab: true } })
-      // } else if (this.$route.params.type == 'financialCollection') { // 财务收款
-      //   this.$router.push({ path: '/financialManagement/financialCollection/list', query: { closeLastOldTab: true } })
-      // } else if (this.$route.params.type == 'salesCollection') { // 销售收款
-      //   this.$router.push({ path: '/salesManagement/salesCollection/list', query: { closeLastOldTab: true } })
-      // } else {
-      //   this.$router.push({ path: '/salesManagement/salesQuery/list', query: { closeLastOldTab: true } })
-      // }
-      this.$router.push({ name: this.fromRouter ? this.fromRouter.name : 'salesQueryList' })
+      this.$router.push({ name: 'salesQueryList' })
     },
     // 编辑
     handleEdit () {
@@ -363,10 +354,12 @@ export default {
         dispatchBill: data
       }
       this.spinningAudit = true
+      this.spinning = true
       salesWriteAuditPush(params).then(res => {
         if (res.status == 200) {
           this.$message.success(res.message)
           this.spinningAudit = false
+          this.spinning = false
           //  关闭详情跳列表
           this.handleBack()
         }

+ 151 - 61
src/views/salesManagement/salesQuery/list.vue

@@ -27,7 +27,7 @@
                 </a-form-item>
               </a-col>
               <a-col :md="6" :sm="24">
-                <a-form-item label="打印状态">
+                <a-form-item label="备货打印状态">
                   <v-select
                     v-model="queryParam.printStatus"
                     ref="printStatus"
@@ -156,66 +156,88 @@
         </template>
         <!-- 操作 -->
         <template slot="action" slot-scope="text, record">
-          <a-button
-            size="small"
-            type="link"
-            class="button-warning"
-            v-if="record.billStatus == 'WAIT_AUDIT'&&$hasPermissions('B_salesAudit')"
-            @click="handleDetail(record)"
-          >审核</a-button>
-          <a-button
-            size="small"
-            type="link"
-            class="button-warning"
-            v-if="record.billStatus == 'WAIT_PUSH'&&$hasPermissions('B_salesDispatch')"
-            @click="handleDispatch(record)"
-          >下推</a-button>
-          <a-button
-            size="small"
-            type="link"
-            class="button-info"
-            v-if="(record.salesBillSource == 'SALES' && (record.billStatus == 'WAIT_SUBMIT' || record.billStatus == 'WAIT_AUDIT' || record.billStatus == 'AUDIT_REJECT' || record.billStatus == 'HQ_CHANGE'))&&$hasPermissions('B_salesEdit')"
-            @click="handleEdit(record)"
-          >
-            编辑
-          </a-button>
-          <a-button
-            size="small"
-            type="link"
-            class="button-info"
-            v-if="record.salesBillSource == 'PURCHASE' && (record.billStatus == 'WAIT_AUDIT' || record.billStatus == 'HQ_CHANGE') && $hasPermissions('B_salesEdit')"
-            @click="handleEdit(record)"
-          >
-            改单
-          </a-button>
-          <a-button
-            size="small"
-            type="link"
-            class="button-error"
-            v-if="(record.salesBillSource == 'SALES' && (record.billStatus == 'WAIT_SUBMIT' || record.billStatus == 'WAIT_AUDIT' || record.billStatus == 'AUDIT_REJECT' || record.billStatus == 'HQ_CHANGE'))&&$hasPermissions('B_salesDel')"
-            @click="handleDel(record)"
-          >
-            删除
-          </a-button>
-          <a-button
-            size="small"
-            type="link"
-            class="button-error"
-            v-if="record.salesBillSource == 'PURCHASE' && (record.billStatus == 'WAIT_AUDIT' || record.billStatus == 'HQ_CHANGE') && $hasPermissions('B_salesDel')"
-            @click="handleDel(record)"
-          >
-            取消
-          </a-button>
-          <span
-            v-if="!(record.billStatus == 'WAIT_AUDIT'&&$hasPermissions('B_salesAudit')) &&
-              !(record.billStatus == 'WAIT_PUSH'&&$hasPermissions('B_salesDispatch')) &&
-              !(record.salesBillSource == 'SALES' && (record.billStatus == 'WAIT_SUBMIT' || record.billStatus == 'WAIT_AUDIT' || record.billStatus == 'AUDIT_REJECT' || record.billStatus == 'HQ_CHANGE')&&($hasPermissions('B_salesEdit') || $hasPermissions('B_salesDel'))) &&
-              !(record.salesBillSource == 'PURCHASE' && (record.billStatus == 'WAIT_AUDIT' || record.billStatus == 'HQ_CHANGE') && ($hasPermissions('B_salesEdit') || $hasPermissions('B_salesDel')))">--</span>
+          <div>
+            <a-button
+              size="small"
+              type="link"
+              class="button-warning"
+              v-if="record.billStatus == 'WAIT_AUDIT'&&$hasPermissions('B_salesAudit')"
+              @click="handleDetail(record)"
+            >审核</a-button>
+            <a-button
+              size="small"
+              type="link"
+              class="button-warning"
+              v-if="record.billStatus == 'WAIT_PUSH'&&$hasPermissions('B_salesDispatch')"
+              @click="handleDispatch(record)"
+            >下推</a-button>
+            <a-button
+              size="small"
+              type="link"
+              class="button-info"
+              v-if="(record.salesBillSource == 'SALES' && (record.billStatus == 'WAIT_SUBMIT' || record.billStatus == 'WAIT_AUDIT' || record.billStatus == 'AUDIT_REJECT' || record.billStatus == 'HQ_CHANGE'))&&$hasPermissions('B_salesEdit')"
+              @click="handleEdit(record)"
+            >
+              编辑
+            </a-button>
+            <a-button
+              size="small"
+              type="link"
+              class="button-info"
+              v-if="record.salesBillSource == 'PURCHASE' && (record.billStatus == 'WAIT_AUDIT' || record.billStatus == 'HQ_CHANGE') && $hasPermissions('B_salesEdit')"
+              @click="handleEdit(record)"
+            >
+              改单
+            </a-button>
+            <a-button
+              size="small"
+              type="link"
+              class="button-error"
+              v-if="(record.salesBillSource == 'SALES' && (record.billStatus == 'WAIT_SUBMIT' || record.billStatus == 'WAIT_AUDIT' || record.billStatus == 'AUDIT_REJECT' || record.billStatus == 'HQ_CHANGE'))&&$hasPermissions('B_salesDel')"
+              @click="handleDel(record)"
+            >
+              删除
+            </a-button>
+            <a-button
+              size="small"
+              type="link"
+              class="button-error"
+              v-if="record.salesBillSource == 'PURCHASE' && (record.billStatus == 'WAIT_AUDIT' || record.billStatus == 'HQ_CHANGE') && $hasPermissions('B_salesDel')"
+              @click="handleDel(record)"
+            >
+              取消
+            </a-button>
+            <a-button
+              size="small"
+              type="link"
+              class="button-warning"
+              v-if="record.printStatus=='UNABLE_PRINT'&&$hasPermissions('B_Sales_UNABLE_PRINT')"
+              @click="handlePrint(record)"
+            >允许备货打印</a-button>
+          </div>
         </template>
       </s-table>
     </a-spin>
     <!-- 选择客户弹框 -->
     <choose-custom-modal :show="openModal" @ok="chooseCustomOk" @cancel="openModal=false"></choose-custom-modal>
+    <!-- 操作提示 -->
+    <commonModal modalTit="操作提示" :width="this.tipData&&this.tipData.length == 1?'500px':'800px'" :openModal="showTipModal" @cancel="canselModal" @ok="updatePrintStatus">
+      <div style="text-align: center;" v-if="this.tipData&&this.tipData.length">
+        <div style="margin-bottom: 15px;font-size: 14px;"><strong>确认允许此单进行备货打印吗?</strong></div>
+        <div style="line-height: 24px;" v-if="this.tipData.length == 1">
+          <div>备货单号:{{ tipData[0]&&tipData[0].dispatchBillNo }}</div>
+          <div>客户名称:{{ tipData[0]&&tipData[0].buyerName }}</div>
+        </div>
+        <div v-else>
+          <a-table
+            :row-selection="{ selectedRowKeys: selectedRowKeys,onChange: onSelectChange, getCheckboxProps: record => ({ props: { disabled: record.printStatus!=='UNABLE_PRINT' }})}"
+            :columns="bhColumns"
+            :data-source="tipData"
+            :pagination="false"
+          />
+        </div>
+      </div>
+    </commonModal>
   </a-card>
 </template>
 
@@ -227,20 +249,22 @@ import subarea from '@/views/common/subarea.js'
 import { getArea } from '@/api/data'
 import rangeDate from '@/views/common/rangeDate.vue'
 import { STable, VSelect } from '@/components'
+import commonModal from '@/views/common/commonModal.vue'
 import chooseCustomModal from './chooseCustomModal.vue'
 import dealerSubareaScopeList from '@/views/common/dealerSubareaScopeList.vue'
 import { salesList, salesDel, salesCount } from '@/api/sales'
-import { findBySalesBillSn } from '@/api/dispatch'
+import { findBySalesBillSn, dispatchBatchPrintStatus, queryBySalesBillSn } from '@/api/dispatch'
 export default {
   name: 'SalesQueryList',
   mixins: [commonMixin],
-  components: { STable, VSelect, chooseCustomModal, dealerSubareaScopeList, rangeDate, subarea },
+  components: { STable, VSelect, chooseCustomModal, dealerSubareaScopeList, rangeDate, subarea, commonModal },
   data () {
     return {
       spinning: false,
       advanced: false, // 高级搜索 展开/关闭
       disabled: false, //  查询、重置按钮是否可操作
       openModal: false, // 选择客户弹框是否显示
+      showTipModal: false, // 备货打印弹框
       tableHeight: 0,
       time: [
         moment(getDate.getThreeMonthDays().starttime, 'YYYY-MM-DD'),
@@ -299,7 +323,25 @@ export default {
         })
       },
       addrProvinceList: [], //  省下拉
-      showCancelNum: false //  是否显示取消数量和待下推数量
+      showCancelNum: false, //  是否显示取消数量和待下推数量
+      tipData: null, // 备货单信息
+      tempSalesBillSn: null,
+      // 允许备货打印
+      selectedRowKeys: [],
+      bhColumns: [
+        {
+          title: '备货单号',
+          dataIndex: 'dispatchBillNo'
+        },
+        {
+          title: '客户名称',
+          dataIndex: 'buyerName'
+        },
+        {
+          title: '备货打印状态',
+          dataIndex: 'printStatusDictValue'
+        }
+      ]
     }
   },
   computed: {
@@ -307,7 +349,6 @@ export default {
       const arr = [
         { title: '创建时间', dataIndex: 'createDate', width: '6%', align: 'center', customRender: function (text) { return text || '--' }, sorter: true },
         { title: '销售单号', scopedSlots: { customRender: 'salesBillNo' }, width: '7%', align: 'center' },
-        // { title: '采购单号', dataIndex: 'purchaseBillNo', width: '7%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '提交时间', dataIndex: 'submitDate', width: '6%', align: 'center', customRender: function (text) { return text || '--' }, sorter: true },
         { title: '客户名称', dataIndex: 'buyerName', width: '8%', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true },
         { title: '总数量', dataIndex: 'totalQty', scopedSlots: { customRender: 'totalQty' }, width: '4%', align: 'center' },
@@ -320,7 +361,7 @@ export default {
         { title: '最近备货时间', dataIndex: 'lastStockUpDate', width: '6%', align: 'center', customRender: function (text) { return text || '--' }, sorter: true },
         { title: '业务状态', dataIndex: 'billStatusDictValue', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '财务状态', dataIndex: 'financialStatusDictValue', width: '5%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '打印次数', dataIndex: 'detailPrintTimes', width: '5%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '备货打印状态', dataIndex: 'printStatusDictValue', width: '5%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
         { title: '操作', scopedSlots: { customRender: 'action' }, width: '7%', align: 'center' }
       ]
       if (this.showCancelNum) {
@@ -392,6 +433,55 @@ export default {
         }
       })
     },
+    // 允许备货打印
+    handlePrint (row) {
+      // 获取关联的下推单
+      this.tempSalesBillSn = row.salesBillSn
+      queryBySalesBillSn({ salesBillSn: row.salesBillSn }).then(res => {
+        this.tipData = res.data || []
+        this.tipData.map(item => {
+          item.key = item.dispatchBillSn
+          if (item.printStatus == 'UNABLE_PRINT') {
+            this.selectedRowKeys.push(item.dispatchBillSn)
+          }
+        })
+        this.showTipModal = true
+      })
+    },
+    canselModal () {
+      this.tipData = null
+      this.showTipModal = false
+      this.tempSalesBillSn = null
+      this.selectedRowKeys = []
+    },
+    onSelectChange (selectedRowKeys) {
+      this.selectedRowKeys = selectedRowKeys
+    },
+    // 允许备货打印状态
+    updatePrintStatus () {
+      const isOne = this.tipData.length
+      if (isOne > 1 && this.selectedRowKeys.length == 0) {
+        this.$message.info('请选择备货单!')
+        return
+      }
+      const dispatchBillSnList = []
+      this.tipData.map(item => {
+        dispatchBillSnList.push(item.dispatchBillSn)
+      })
+
+      const params = {
+        'salesBillSn': this.tempSalesBillSn,
+        'dispatchBillSnList': isOne > 1 ? this.selectedRowKeys : dispatchBillSnList,
+        'printStatus': 'NO_PRINT'
+      }
+      dispatchBatchPrintStatus(params).then(res => {
+        if (res.status == 200) {
+          this.canselModal()
+          this.$message.info(res.message)
+          this.$refs.table.refresh()
+        }
+      })
+    },
     // 重置
     resetSearchForm () {
       this.$refs.rangeDate.resetDate(this.time)

+ 3 - 0
src/views/salesManagement/sendOutOrder/detailModal.vue

@@ -27,6 +27,9 @@
           <div style="flex-basis:35%">收款方式:{{ detail.payTypeDictValue||'--' }}</div>
           <div style="flex-basis:35%">交货方式:{{ detail.handoverTypeDictValue||'--' }}</div>
           <div style="flex-basis:30%">运费合计:{{ detail.totalSendAmount }}</div>
+          <div style="flex-basis:35%">物流电话:{{ detail.transportTele||'--' }}</div>
+          <div style="flex-basis:35%">物流单号:{{ detail.transportNo||'--' }}</div>
+          <div style="flex-basis:30%"></div>
           <!-- <div style="flex-basis:100%;word-break: break-all;">发货备注:{{ detail.sendRemark||'--' }}</div> -->
           <div style="flex-basis:35%" :class="type==0?'requerd':''">物流情况:
             <v-select

+ 51 - 5
src/views/salesManagement/sendOutOrder/list.vue

@@ -53,11 +53,33 @@
                     allowClear></v-select>
                 </a-form-item>
               </a-col>
+              <a-col :md="6" :sm="24">
+                <a-form-model-item label="所在区域">
+                  <subarea id="sendOut-subarea" v-model="queryParam.subareaSn"></subarea>
+                </a-form-model-item>
+              </a-col>
+              <a-col :md="6" :sm="24">
+                <a-form-model-item label="地区">
+                  <a-form-model-item >
+                    <Area id="sendOut-provinceSn" v-model="queryParam.provinceSn" placeholder="请选择省"></Area>
+                  </a-form-model-item>
+                </a-form-model-item>
+                </a-form-model-item>
+              </a-col>
             </template>
             <a-col :md="6" :sm="24">
               <span class="table-page-search-submitButtons">
                 <a-button type="primary" :disabled="disabled" @click="$refs.table.refresh(true)">查询</a-button>
                 <a-button style="margin-left: 8px" :disabled="disabled" @click="resetSearchForm()">重置</a-button>
+                <a-button
+                  style="margin-left: 10px"
+                  type="primary"
+                  class="button-warning"
+                  @click="handleExport"
+                  :disabled="disabled"
+                  :loading="exportLoading"
+                  v-if="$hasPermissions('B_sendOutExport')"
+                  id="sendOut-export">导出</a-button>
                 <a @click="advanced=!advanced" style="margin-left: 8px">
                   {{ advanced ? '收起' : '展开' }}
                   <a-icon :type="advanced ? 'up' : 'down'"/>
@@ -114,17 +136,21 @@
 <script>
 import { commonMixin } from '@/utils/mixin'
 import rangeDate from '@/views/common/rangeDate.vue'
+import { hdExportExcel } from '@/libs/exportExcel'
 import { STable, VSelect } from '@/components'
 import detailModal from './detailModal.vue'
 import sendGoodModal from '../outboundOrder/sendGoodModal.vue'
-import { sendBillQueryPageList } from '@/api/sendBill'
+import Area from '@/views/common/area.js'
+import subarea from '@/views/common/subarea.js'
+import { sendBillQueryPageList, sendBillExcel } from '@/api/sendBill'
 export default {
   name: 'SendOutOrderList',
   mixins: [commonMixin],
-  components: { STable, VSelect, rangeDate, detailModal, sendGoodModal },
+  components: { STable, VSelect, rangeDate, detailModal, sendGoodModal, Area, subarea },
   data () {
     return {
       spinning: false,
+      exportLoading: false,
       advanced: true, // 高级搜索 展开/关闭
       disabled: false, //  查询、重置按钮是否可操作
       tableHeight: 0,
@@ -140,7 +166,9 @@ export default {
         sendBillNo: '', //  发货单号
         bizNos: '', //  业务单号
         transportState: undefined, //  物流状态
-        receiveFlag: undefined // 收货状态
+        receiveFlag: undefined, // 收货状态
+        subareaSn: undefined,
+        provinceSn: undefined
       },
       totalData: {
         totalAmount: 0,
@@ -174,12 +202,18 @@ export default {
       const arr = [
         { title: '序号', dataIndex: 'no', width: '4%', align: 'center' },
         { title: '创建时间', dataIndex: 'createDate', width: '10%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '发货单号', scopedSlots: { customRender: 'sendBillNo' }, width: '10%', align: 'center' },
-        { title: '客户名称', dataIndex: 'customeName', width: '14%', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true },
+        { title: '发货单号', scopedSlots: { customRender: 'sendBillNo' }, width: '12%', align: 'center' },
+        { title: '所在区域', dataIndex: 'subareaNameSet', width: '8%', align: 'center', customRender: function (text) { return text.toString() || '--' } },
+        { title: '地区', dataIndex: 'provinceName', width: '8%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '客户名称', dataIndex: 'customeName', width: '10%', align: 'left', customRender: function (text) { return text || '--' } },
         { title: '托运日期', dataIndex: 'sendDate', width: '8%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '收货人', dataIndex: 'customerCacateName', width: '10%', align: 'left', customRender: function (text) { return text || '--' } },
+        { title: '物流电话', dataIndex: 'transportTele', width: '8%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '物流单号', dataIndex: 'transportNo', width: '8%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '总件数', dataIndex: 'totalQty', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
         { title: '运费合计', dataIndex: 'totalSendAmount', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
         { title: '收货状态', dataIndex: 'receiveFlagDictValue', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '收款时间', dataIndex: 'settleTime', width: '8%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '收货时间', dataIndex: 'receiveDate', width: '8%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '物流情况', dataIndex: 'transportStateDictValue', width: '8%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '备注', dataIndex: 'transportRemark', width: '8%', align: 'center', customRender: function (text) { return text || '--' } },
@@ -213,6 +247,16 @@ export default {
       this.showTipModal = false
       this.$refs.table.refresh()
     },
+    //  导出
+    handleExport () {
+      const _this = this
+      _this.exportLoading = true
+      _this.spinning = true
+      hdExportExcel(sendBillExcel, _this.queryParam, '发货单列表', function () {
+        _this.exportLoading = false
+        _this.spinning = false
+      })
+    },
     // 重置
     resetSearchForm () {
       this.time = []
@@ -228,6 +272,8 @@ export default {
       this.queryParam.bizNos = ''
       this.queryParam.transportState = undefined
       this.queryParam.receiveFlag = undefined
+      this.queryParam.subareaSn = undefined
+      this.queryParam.provinceSn = undefined
       this.$refs.table.refresh(true)
     },
     pageInit () {

+ 72 - 8
src/views/salesManagement/waitDispatch/dsModal.vue

@@ -4,7 +4,7 @@
     class="dealerAccountEdit-modal"
     :footer="null"
     :maskClosable="false"
-    title="下推销售单"
+    :title="title"
     v-model="isShow"
     @cancel="isShow=false"
     :width="800">
@@ -25,6 +25,12 @@
           <a-form-model-item label="收货客户名称" extra="如果收货客户和下单客户相同,则不需要选择收货客户名称">
             <dealerSubareaScopeList ref="dealerSubareaScopeList" defValKey="buyerSn" @change="custChange" v-model="form.receiverSn" />
           </a-form-model-item>
+          <a-form-model-item label="收货地址" prop="dealerRecevieAddressSn" v-if="form.receiverSn">
+            <div style="display:flex;padding-top:6px;">
+              <div style="width:80%;flex-grow:1;line-height: 24px;">{{ chooseAddr }}</div>
+              <a-button size="small" type="link" @click="openAddrModal = true">{{ addressVal }} >></a-button>
+            </div>
+          </a-form-model-item>
           <a-form-model-item label="发货编号" prop="sendNo">
             <a-input
               id="dealerAccountEdit-phone"
@@ -52,21 +58,29 @@
           <a-button type="primary" id="dealerAccountEdit-save" @click="handleSave" style="margin-left: 15px;">确定下推</a-button>
         </div>
       </a-spin>
+      <!-- 选择地址 -->
+      <choose-address-modal :openModal="openAddrModal" :paramsData="form.receiverSn" @ok="handleOk" @verify="verifyFun" @close="openAddrModal=false" />
     </div>
   </a-modal>
 </template>
 
 <script>
 import { commonMixin } from '@/utils/mixin'
+import chooseAddressModal from '../salesQuery/receivingAddress/chooseAddressModal.vue'
 import dealerSubareaScopeList from '@/views/common/dealerSubareaScopeList.vue'
+import { dealerRecevieAddrQuery } from '@/api/dealerRecevieAddr'
 export default {
   name: 'DsModal',
   mixins: [commonMixin],
-  components: { dealerSubareaScopeList },
+  components: { dealerSubareaScopeList, chooseAddressModal },
   props: {
     openModal: { //  弹框显示状态
       type: Boolean,
       default: false
+    },
+    title: {
+      type: String,
+      default: '下推销售单'
     }
   },
   data () {
@@ -82,13 +96,19 @@ export default {
         printStatus: undefined,
         buyerName: '',
         receiverSn: '',
-        receiverName: ''
+        receiverName: '',
+        dealerRecevieAddressSn: '' // 地址sn
       },
       rules: {
         sendNo: [{ required: true, message: '请输入发货编号', trigger: 'change' }],
-        printStatus: [{ required: true, message: '请选择备货打印', trigger: 'change' }]
+        printStatus: [{ required: true, message: '请选择备货打印', trigger: 'change' }],
+        dealerRecevieAddressSn: [ { required: true, message: '请选择收货地址', trigger: 'change' } ]
       },
-      detailData: null //  详情数据
+      detailData: null, //  详情数据
+      addressVal: '选择地址', //  选择地址/更换地址
+      chooseAddr: '', //  当前已选地址信息
+      openAddrModal: false, // 选择地址弹框是否显示
+      addressId: undefined
     }
   },
   methods: {
@@ -96,9 +116,39 @@ export default {
       this.form.sendNo = i
       this.$refs.ruleForm.validateField('sendNo')
     },
+    // 客户 change
     custChange (val) {
-      this.form.receiverSn = val.key || ''
-      this.form.receiverName = val.name || ''
+      if (val && val.key) {
+        this.form.receiverSn = val.key || undefined
+        this.form.receiverName = val.name || ''
+        this.$refs.ruleForm.clearValidate()
+        this.getDefaultAddress()
+      } else {
+        this.form.receiverSn = undefined
+        this.form.receiverName = ''
+        this.verifyFun(this.addressId)
+      }
+    },
+    // 获取默认地址
+    getDefaultAddress () {
+      dealerRecevieAddrQuery({ defaultFlag: 1, dealerSn: this.form.receiverSn }).then(res => {
+        if (res.status == 200) {
+          if (res.data.length == 1) {
+            const ret = res.data[0]
+            ret.address = (ret.provinceName ? (ret.provinceName + '-') : '') + (ret.cityName ? (ret.cityName + '-') : '') + (ret.countyName ? (ret.countyName + '-') : '') + ret.addr
+            this.handleOk(ret)
+          } else {
+            this.verifyFun(this.addressId)
+          }
+        }
+      })
+    },
+    verifyFun (id) {
+      if (id == this.addressId) {
+        this.chooseAddr = ''
+        this.addressVal = '选择地址'
+        this.form.dealerRecevieAddressSn = ''
+      }
     },
     //  保存
     handleSave () {
@@ -113,6 +163,18 @@ export default {
         }
       })
     },
+    //  地址保存
+    handleOk (data) {
+      console.log(data, 'chooseAddr')
+      this.chooseAddr = (data.consigneeName || '') + '(' + (data.consigneeTel || '-') + ')' + ' ' + (data.address || '')
+      this.addressVal = '更换地址'
+      this.form.dealerRecevieAddressSn = data.dealerRecevieAddressSn || ''
+      this.addressId = data.id || undefined
+      this.openAddrModal = false
+      // 移除表单项的校验结果
+      console.log(this.form.dealerRecevieAddressSn)
+      this.$refs.ruleForm.validateField('dealerRecevieAddressSn')
+    },
     //  获取详情
     setDetail (data) {
       this.detailData = data
@@ -126,9 +188,11 @@ export default {
         printStatus: undefined,
         buyerName: '',
         receiverSn: '',
-        receiverName: ''
+        receiverName: '',
+        dealerRecevieAddressSn: ''
       }
       this.$refs.dealerSubareaScopeList.resetForm()
+      this.verifyFun(this.addressId)
     }
   },
   watch: {