瀏覽代碼

Merge branch 'develop_yh9' of http://git.chelingzhu.com/jianguan-web/jg-ocs-html into pre-release

lilei 2 年之前
父節點
當前提交
01f4e27dc0
共有 69 個文件被更改,包括 1458 次插入195 次删除
  1. 7 0
      src/api/expenseManagement.js
  2. 8 0
      src/api/pickUp.js
  3. 0 1
      src/api/salesReturn.js
  4. 25 0
      src/api/sendBill.js
  5. 9 0
      src/api/spareParts.js
  6. 31 3
      src/components/Table/index.js
  7. 9 0
      src/components/index.less
  8. 93 0
      src/core/directives/dragModal.js
  9. 1 1
      src/core/use.js
  10. 8 2
      src/views/allocationManagement/transferOut/list.vue
  11. 7 1
      src/views/allocationManagement/transferReturn/list.vue
  12. 8 2
      src/views/allocationManagement/transfersPrint/list.vue
  13. 1 0
      src/views/common/commonModal.vue
  14. 8 2
      src/views/dealerManagement/dealerAccountManagement/list.vue
  15. 7 1
      src/views/dealerManagement/dealerRelationshipBinding/list.vue
  16. 7 1
      src/views/dealerManagement/marketingDivisionSet/list.vue
  17. 9 3
      src/views/dealerManagement/merchantInfoManagement/list.vue
  18. 1 1
      src/views/dealerManagement/rebateSettings/list.vue
  19. 1 1
      src/views/expenseManagement/expenseReimbursement/list.vue
  20. 1 1
      src/views/financialManagement/allocateReturnConfirmation/list.vue
  21. 3 3
      src/views/financialManagement/financialCollection/list.vue
  22. 1 1
      src/views/financialManagement/returnConfirmation/list.vue
  23. 2 1
      src/views/financialManagement/warehousingConfirmation/list.vue
  24. 1 1
      src/views/inventoryManagement/intelligentReplenishment/list.vue
  25. 1 1
      src/views/inventoryManagement/inventoryQuery/list.vue
  26. 3 2
      src/views/productManagement/productBrand/list.vue
  27. 7 1
      src/views/productManagement/productCategory/list.vue
  28. 2 2
      src/views/productManagement/productInfo/list.vue
  29. 7 1
      src/views/productManagement/productLevel/list.vue
  30. 2 2
      src/views/productManagement/productPricing/list.vue
  31. 1 1
      src/views/productManagement/productUniversal/list.vue
  32. 2 2
      src/views/productManagement/shelfNoManage/list.vue
  33. 1 1
      src/views/promotionRulesManagement/orderStatistics/list.vue
  34. 1 1
      src/views/promotionRulesManagement/productStatistics/list.vue
  35. 1 1
      src/views/promotionRulesManagement/promotionRules/list.vue
  36. 30 4
      src/views/purchasingManagement/bulkWarehousingOrder/list.vue
  37. 2 2
      src/views/reportData/returnGoodsPresentation/list.vue
  38. 1 1
      src/views/salesManagement/backorder/list.vue
  39. 14 2
      src/views/salesManagement/examineVerify/list.vue
  40. 8 1
      src/views/salesManagement/outboundOrder/list.vue
  41. 218 0
      src/views/salesManagement/outboundOrder/selectGlOrderModal.vue
  42. 101 32
      src/views/salesManagement/outboundOrder/sendGoodModal.vue
  43. 1 1
      src/views/salesManagement/priceInquiry/list.vue
  44. 1 1
      src/views/salesManagement/pushOrderManagement/list.vue
  45. 1 1
      src/views/salesManagement/receiptPrint/list.vue
  46. 23 3
      src/views/salesManagement/salesCollection/list.vue
  47. 1 1
      src/views/salesManagement/salesCollection/voucherModal.vue
  48. 1 1
      src/views/salesManagement/salesQuery/list.vue
  49. 253 0
      src/views/salesManagement/sendOutOrder/chooseImportModal.vue
  50. 199 0
      src/views/salesManagement/sendOutOrder/importGuideModal.vue
  51. 18 4
      src/views/salesManagement/sendOutOrder/list.vue
  52. 9 9
      src/views/salesManagement/stockPrint/list.vue
  53. 1 1
      src/views/salesReturnManagement/billOfLading/add.vue
  54. 1 1
      src/views/salesReturnManagement/billOfLading/detail.vue
  55. 39 37
      src/views/salesReturnManagement/billOfLading/list.vue
  56. 4 4
      src/views/salesReturnManagement/billOfLading/selectXtModal.vue
  57. 1 0
      src/views/salesReturnManagement/custConfirm/list.vue
  58. 45 5
      src/views/salesReturnManagement/pickUp/list.vue
  59. 13 2
      src/views/salesReturnManagement/receiveCheck/chooseProductsModal.vue
  60. 39 1
      src/views/salesReturnManagement/receiveCheck/receiving.vue
  61. 80 0
      src/views/salesReturnManagement/salesReturn/auditDetail.vue
  62. 15 0
      src/views/salesReturnManagement/salesReturn/chooseDepartUserModal.vue
  63. 2 2
      src/views/salesReturnManagement/salesReturn/detail.vue
  64. 23 31
      src/views/salesReturnManagement/salesReturn/list.vue
  65. 26 1
      src/views/salesReturnManagement/salesReturn/queryPart.vue
  66. 4 1
      src/views/salesReturnManagement/salesReturn/salesReturnEdit.vue
  67. 5 1
      src/views/salesReturnManagement/salesReturn/verifyModal.vue
  68. 2 3
      src/views/setting/notice/list.vue
  69. 1 1
      vue.config.js

+ 7 - 0
src/api/expenseManagement.js

@@ -193,6 +193,13 @@ export const getProcessInstance = (params) => {
     method: 'post'
   })
 }
+// 审核进度历史查看
+export const getProcessInstanceList = (params) => {
+  return axios({
+    url: `/dingTalk/getProcessInstanceList/${params.businessType}/${params.businessSn}`,
+    method: 'get'
+  })
+}
 // 钉钉部门
 export const getDingTalkDepartmentList = (params) => {
   return axios({

+ 8 - 0
src/api/pickUp.js

@@ -11,6 +11,14 @@ export const pickUpQueryPage = (params) => {
     method: 'post'
   })
 }
+// 提货
+export const pickUpFinish = (params) => {
+  return axios({
+    url: `/pickUp/finish/${params.pickUpSn}`,
+    data: params,
+    method: 'post'
+  })
+}
 // 保存提货单
 export const pickUpSave = (params) => {
   return axios({

+ 0 - 1
src/api/salesReturn.js

@@ -8,7 +8,6 @@ export const salesReturnAudit = (params) => {
     method: 'post'
   })
 }
-
 //  销售退货 品检
 export const salesReturnCheck = (params) => {
   return axios({

+ 25 - 0
src/api/sendBill.js

@@ -15,6 +15,14 @@ export const sendBillUpdate = params => {
     method: 'post'
   })
 }
+// 删除出库单修改发货状态
+export const deleteSendBillStockOut = params => {
+  return axios({
+    url: '/sendBill/deleteSendBillStockOut',
+    data: params,
+    method: 'post'
+  })
+}
 // 获取客户信息
 export const getCustomerInfo = params => {
   return axios({
@@ -42,6 +50,23 @@ export const sendBillQueryPageList = (params) => {
     method: 'post'
   })
 }
+// 导入发货单 
+export const sendBillInsertBatch = (params) => {
+  return axios({
+    url: '/sendBill/insertBatch',
+    data: params,
+    method: 'post',
+  })
+}
+// 导出错误项
+export const exportImportError = (params) => {
+  return axios({
+    url: '/sendBill/exportImportError',
+    data: params,
+    method: 'post',
+    responseType: 'blob'
+  })
+}
 // 导出
 export const sendBillExcel = (params) => {
   const url = `/sendBill/excel`

+ 9 - 0
src/api/spareParts.js

@@ -12,6 +12,15 @@ export const sparePartsList = (params) => {
   })
 }
 
+export const sparePartsDetailExport = (params) => {
+  return axios({
+    url: '/report/spareParts/exportDetail',
+    data: params,
+    method: 'post',
+    responseType: 'blob'
+  })
+}
+
 // 审核
 export const sparePartsAudit = (params) => {
   return axios({

+ 31 - 3
src/components/Table/index.js

@@ -10,7 +10,8 @@ export default {
       localLoading: false,
       localDataSource: [],
       localPagination: Object.assign({}, this.pagination),
-      isSucceed: true //  是否请求成功
+      isSucceed: true ,//  是否请求成功
+      leftAlignId:"",
     }
   },
   props: Object.assign({}, T.props, {
@@ -342,7 +343,34 @@ export default {
           </template>
         </a-alert>
       )
-    }
+    },
+    // 自定义行
+    customRows(record, index) {
+      return {
+        // 自定义属性,也就是官方文档中的props,可通过条件来控制样式
+        style: {
+          // 设置字体颜色
+          // 'color': record.id === this.leftAlignId ? '#fff' : '',
+          //  设置行背景色
+          'background-color': record.id === this.leftAlignId ? '#fff1c5' : ''
+          // 设置字体类型
+          // 'font-family': 'Microsoft YaHei',
+          // // 下划线
+          // 'text-decoration': 'underline',
+          // // 字体样式-斜体
+          // 'font-style': 'italic',
+          // // 字体加粗
+          // 'font-weight': 'bold'
+        },
+        on: {
+          // 鼠标单击行
+          click: event => {
+            // 记录当前点击的行标识
+            this.leftAlignId = record.id
+          }
+        }
+      }
+    },
   },
 
   render () {
@@ -386,7 +414,7 @@ export default {
     }
     // isSucceed
     const table = (
-      <a-table {...{ props, scopedSlots: { ...this.$scopedSlots } }} onChange={this.loadData}>
+      <a-table {...{ props, scopedSlots: { ...this.$scopedSlots } }} customRow={this.customRows} onChange={this.loadData}>
         { Object.keys(this.$slots).map(name => (<template slot={name}>{this.$slots[name]}</template>)) }
       </a-table>
     )

+ 9 - 0
src/components/index.less

@@ -35,6 +35,15 @@
     border-color: #3d80bf;
   }
 }
+.ant-btn-background-ghost.ant-btn-primary.button-info{
+  background-color: transparent;
+  color: #39f;
+  &:hover, &:focus {
+    color: #52a6fb;
+    border-color: #52a6fb;
+    opacity: 0.8;
+  }
+}
 .ant-btn-primary.button-primary[disabled],.ant-btn-primary.button-info[disabled],.ant-btn-primary.button-warning[disabled],.ant-btn-primary.button-geekblue[disabled],.ant-btn-primary.button-purple[disabled]{
    color: rgba(255, 255, 255, 0.5);
  }

+ 93 - 0
src/core/directives/dragModal.js

@@ -0,0 +1,93 @@
+import Vue from 'vue'
+
+// 弹窗拖拽属性
+/**
+ * @directive 自定义属性
+ * @todo 弹窗拖拽属性
+ * @desc 使用在弹窗内部任意加载的html添加v-drag
+ * @param .ant-modal-header 弹窗头部用来拖动的属性
+ * @param .ant-modal 拖动的属性
+*/
+const dragModal = Vue.directive('drag', (el, binding, vnode, oldVnode) => {
+  // inserted (el, binding, vnode, oldVnode) {
+  Vue.nextTick(() => {
+    const isThemeModal = el.classList.contains('grid-theme')
+    const dialogHeaderEl = isThemeModal ? el.querySelector('.ant-tabs-bar') : el.querySelector('.ant-modal-header')
+    const dragDom = isThemeModal ? el.querySelector('.ant-modal') : el.querySelector('.ant-modal')
+    // dialogHeaderEl.style.cursor = 'move';
+    dialogHeaderEl.style.cssText += ';cursor:move;user-select:none;'
+    // dragDom.style.cssText += ';top:0px;'
+    dragDom.style.cssText += `;left:0px;top:0px;`
+    // 获取原有属性 ie dom元素.currentStyle 火狐谷歌 window.getComputedStyle(dom元素, null);
+    const sty = (function () {
+      if (window.document.currentStyle) {
+        return (dom, attr) => dom.currentStyle[attr]
+      } else {
+        return (dom, attr) => getComputedStyle(dom, false)[attr]
+      }
+    })()
+
+    dialogHeaderEl.onmousedown = (e) => {
+      // 鼠标按下,计算当前元素距离可视区的距离
+      const disX = e.clientX - dialogHeaderEl.offsetLeft
+      const disY = e.clientY - dialogHeaderEl.offsetTop
+
+      const screenWidth = document.body.clientWidth // body当前宽度
+      const screenHeight = document.documentElement.clientHeight // 可见区域高度(应为body高度,可某些环境下无法获取)
+
+      const dragDomWidth = dragDom.offsetWidth // 对话框宽度
+      const dragDomheight = dragDom.offsetHeight // 对话框高度
+
+      const minDragDomLeft = dragDom.offsetLeft
+      const maxDragDomLeft = screenWidth - dragDom.offsetLeft - dragDomWidth - (isThemeModal ? 10 : 0)
+
+      const minDragDomTop = dragDom.offsetTop
+      const maxDragDomTop = screenHeight - dragDom.offsetTop - dragDomheight - (isThemeModal ? 10 : 0)
+
+      // 获取到的值带px 正则匹配替换
+      let styL = sty(dragDom, 'left')
+      let styT = sty(dragDom, 'top')
+      
+      // 注意在ie中 第一次获取到的值为组件自带50% 移动之后赋值为px
+      if (styL.includes('%')) {
+        // eslint-disable-next-line no-useless-escape
+        styL = +document.body.clientWidth * (+styL.replace(/\%/g, '') / 100)
+        // eslint-disable-next-line no-useless-escape
+        styT = +document.body.clientHeight * (+styT.replace(/\%/g, '') / 100)
+      } else {
+        styL = +styL.replace(/\px/g, '')
+        styT = +styT.replace(/\px/g, '')
+      };
+
+      document.onmousemove = function (e) {
+        // 通过事件委托,计算移动的距离
+        let left = e.clientX - disX
+        let top = e.clientY - disY
+
+        // 边界处理
+        if (-(left) > minDragDomLeft) {
+          left = -(minDragDomLeft)
+        } else if (left > maxDragDomLeft) {
+          left = maxDragDomLeft
+        }
+
+        if (-(top) > minDragDomTop) {
+          top = -(minDragDomTop)
+        } else if (top > maxDragDomTop) {
+          top = maxDragDomTop
+        }
+        // 移动当前元素
+        dragDom.style.cssText += `;left:${left + styL}px;top:${top + styT}px;`
+      }
+
+      document.onmouseup = function (e) {
+        document.onmousemove = null
+        document.onmouseup = null
+        dragDom.releaseCapture && dragDom.releaseCapture();
+      }
+       dragDom.setCapture && dragDom.setCapture();
+    }
+  })
+})
+
+export default dragModal

+ 1 - 1
src/core/use.js

@@ -15,7 +15,7 @@ import PageLoading from '@/components/PageLoading'
 import PermissionHelper from '@/utils/helper/permission'
 // import '@/components/use'
 import './directives/hasPermission'
-
+import './directives/dragModal'
 VueClipboard.config.autoSetContainer = true
 
 Vue.use(Antd)

+ 8 - 2
src/views/allocationManagement/transferOut/list.vue

@@ -157,9 +157,15 @@
       </s-table>
     </a-spin>
     <!-- 新增 -->
-    <basic-info-modal :openModal="openModal" @ok="handleOk" @close="openModal=false" />
+    <basic-info-modal v-drag :openModal="openModal" @ok="handleOk" @close="openModal=false" />
     <!-- 审核 -->
-    <auditModal :openModal="visibleAudit" :spinning="spinningAudit" @close="visibleAudit=false" @ok="auditOrder('WAIT_OUT_WAREHOUSE')" @fail="auditOrder('AUDIT_REJECT')" />
+    <auditModal
+      v-drag
+      :openModal="visibleAudit"
+      :spinning="spinningAudit"
+      @close="visibleAudit=false"
+      @ok="auditOrder('WAIT_OUT_WAREHOUSE')"
+      @fail="auditOrder('AUDIT_REJECT')" />
   </a-card>
 </template>
 

+ 7 - 1
src/views/allocationManagement/transferReturn/list.vue

@@ -126,7 +126,13 @@
     <!-- 新增 -->
     <basic-info-modal :openModal="openModal" @ok="handleEdit" @close="openModal=false" />
     <!-- 审核 -->
-    <auditModal :openModal="visibleAudit" :spinning="spinningAudit" @close="visibleAudit=false" @ok="auditOrder('WAIT_CHECK')" @fail="auditOrder('AUDIT_REJECT')" />
+    <auditModal
+      v-drag
+      :openModal="visibleAudit"
+      :spinning="spinningAudit"
+      @close="visibleAudit=false"
+      @ok="auditOrder('WAIT_CHECK')"
+      @fail="auditOrder('AUDIT_REJECT')" />
   </a-card>
 </template>
 

+ 8 - 2
src/views/allocationManagement/transfersPrint/list.vue

@@ -134,9 +134,15 @@
       </a-spin>
     </a-card>
     <!-- 打印导出 -->
-    <print-modal :openModal="openModal" :itemData="itemData" nowType="dbflPrint" @ok="handleOk" @close="openModal=false" />
+    <print-modal
+      v-drag
+      :openModal="openModal"
+      :itemData="itemData"
+      nowType="dbflPrint"
+      @ok="handleOk"
+      @close="openModal=false" />
     <!-- 打印记录 -->
-    <recordModal ref="recordModal" modalTit="打印记录" :openModal="showRecordModal" @cancel="showRecordModal=false"></recordModal>
+    <recordModal v-drag ref="recordModal" modalTit="打印记录" :openModal="showRecordModal" @cancel="showRecordModal=false"></recordModal>
   </div>
 </template>
 

+ 1 - 0
src/views/common/commonModal.vue

@@ -1,6 +1,7 @@
 <template>
   <a-modal
     centered
+    v-drag
     class="common-modal"
     :footer="null"
     :maskClosable="false"

+ 8 - 2
src/views/dealerManagement/dealerAccountManagement/list.vue

@@ -82,9 +82,15 @@
       </s-table>
     </a-spin>
     <!-- 新增/编辑 -->
-    <dealer-account-edit-modal :openModal="openModal" :nowData="nowData" :itemId="itemId" @ok="$refs.table.refresh(true)" @close="closeModal" />
+    <dealer-account-edit-modal
+      v-drag
+      :openModal="openModal"
+      :nowData="nowData"
+      :itemId="itemId"
+      @ok="$refs.table.refresh(true)"
+      @close="closeModal" />
     <!-- 查看 -->
-    <dealer-account-detail-modal :openModal="openDetailModal" :itemId="itemId" @close="closeDetailModal" />
+    <dealer-account-detail-modal v-drag :openModal="openDetailModal" :itemId="itemId" @close="closeDetailModal" />
   </a-card>
 </template>
 

+ 7 - 1
src/views/dealerManagement/dealerRelationshipBinding/list.vue

@@ -77,7 +77,13 @@
         @changePage="changePage" />
     </a-spin>
     <!-- 关联下级 -->
-    <associate-modal :openModal="openModal" :nowData="nowData" :tabInd="tabInd" @ok="addItemOk" @close="openModal=false" />
+    <associate-modal
+      v-drag
+      :openModal="openModal"
+      :nowData="nowData"
+      :tabInd="tabInd"
+      @ok="addItemOk"
+      @close="openModal=false" />
   </a-card>
 </template>
 I

+ 7 - 1
src/views/dealerManagement/marketingDivisionSet/list.vue

@@ -50,7 +50,13 @@
       </s-table>
     </a-spin>
     <!-- 编辑分区 -->
-    <marketing-division-set-edit-modal :nowData="nowData" :openModal="openModal" :itemId="itemId" @ok="$refs.table.refresh()" @close="closeModal" />
+    <marketing-division-set-edit-modal
+      v-drag
+      :nowData="nowData"
+      :openModal="openModal"
+      :itemId="itemId"
+      @ok="$refs.table.refresh()"
+      @close="closeModal" />
   </a-card>
 </template>
 

+ 9 - 3
src/views/dealerManagement/merchantInfoManagement/list.vue

@@ -92,11 +92,17 @@
       </s-table>
     </a-spin>
     <!-- 产品详情 -->
-    <merchant-info-management-detail-modal :openModal="openModal" :isAudit="isAudit" :itemId="itemId" @ok="resetForm" @close="closeModal" />
+    <merchant-info-management-detail-modal
+      v-drag
+      :openModal="openModal"
+      :isAudit="isAudit"
+      :itemId="itemId"
+      @ok="resetForm"
+      @close="closeModal" />
     <!-- 合作设置 -->
-    <UpdateCooperate ref="updateCooperate" :openUcModal="openUcModal" @ok="resetForm" @close="openUcModal=false"></UpdateCooperate>
+    <UpdateCooperate ref="updateCooperate" v-drag :openUcModal="openUcModal" @ok="resetForm" @close="openUcModal=false"></UpdateCooperate>
     <!-- 级别设置 -->
-    <UpdateDealerLeve ref="updateDealerLevel" :openUdModal="openUdModal" @ok="resetForm" @close="openUdModal=false"></UpdateDealerLeve>
+    <UpdateDealerLeve ref="updateDealerLevel" v-drag :openUdModal="openUdModal" @ok="resetForm" @close="openUdModal=false"></UpdateDealerLeve>
   </a-card>
 </template>
 

+ 1 - 1
src/views/dealerManagement/rebateSettings/list.vue

@@ -63,7 +63,7 @@
       </s-table>
     </a-spin>
     <!-- 关联下级 -->
-    <associate-modal :openModal="openModal" :nowData="nowData" @ok="$refs.table.refresh(true)" @close="closeModal" />
+    <associate-modal v-drag :openModal="openModal" :nowData="nowData" @ok="$refs.table.refresh(true)" @close="closeModal" />
   </a-card>
 </template>
 

+ 1 - 1
src/views/expenseManagement/expenseReimbursement/list.vue

@@ -140,7 +140,7 @@
       </s-table>
     </a-spin>
     <!-- 审核进度 -->
-    <verifyModal :openModal="openModal" :itemSn="itemSn" @close="openModal=false"></verifyModal>
+    <verifyModal v-drag :openModal="openModal" :itemSn="itemSn" @close="openModal=false"></verifyModal>
     <!-- 新增 -->
     <baseDataModal :show="openBaseModal" @close="openBaseModal=false"></baseDataModal>
   </a-card>

+ 1 - 1
src/views/financialManagement/allocateReturnConfirmation/list.vue

@@ -86,7 +86,7 @@
       </s-table>
     </a-spin>
     <!-- 查看 -->
-    <AllocateReturnDetailModal :openModal="openModal" :itemSn="itemSn" @close="closeModal" />
+    <AllocateReturnDetailModal v-drag :openModal="openModal" :itemSn="itemSn" @close="closeModal" />
   </a-card>
 </template>
 

+ 3 - 3
src/views/financialManagement/financialCollection/list.vue

@@ -141,11 +141,11 @@
       </s-table>
     </a-spin>
     <!-- 审核进度 -->
-    <verifyModal :openModal="openModal" :itemSn="itemSn" @close="openModal=false"></verifyModal>
+    <verifyModal v-drag :openModal="openModal" :itemSn="itemSn" @close="openModal=false"></verifyModal>
     <!-- 基础信息 -->
-    <baseModal :show="baseModal" @cancel="baseModal=false"></baseModal>
+    <baseModal v-drag :show="baseModal" @cancel="baseModal=false"></baseModal>
     <!-- 关联备货单 -->
-    <dispatchModal ref="openDisModal" :openModal="openDisModal" :itemSn="itemSn" @close="openDisModal=false"></dispatchModal>
+    <dispatchModal v-drag ref="openDisModal" :openModal="openDisModal" :itemSn="itemSn" @close="openDisModal=false"></dispatchModal>
   </a-card>
 </template>
 

+ 1 - 1
src/views/financialManagement/returnConfirmation/list.vue

@@ -86,7 +86,7 @@
       </s-table>
     </a-spin>
     <!-- 查看 -->
-    <confirmation-detail-modal :openModal="openModal" :itemSn="itemSn" @close="closeModal" />
+    <confirmation-detail-modal v-drag :openModal="openModal" :itemSn="itemSn" @close="closeModal" />
   </a-card>
 </template>
 

+ 2 - 1
src/views/financialManagement/warehousingConfirmation/list.vue

@@ -68,10 +68,11 @@
       </s-table>
     </a-spin>
     <!-- 查看 -->
-    <confirmation-detail-modal :openModal="openModal" :itemSn="itemSn" :nowData="nowData" @close="closeModal" />
+    <confirmation-detail-modal v-drag :openModal="openModal" :itemSn="itemSn" :nowData="nowData" @close="closeModal" />
     <!-- 入库确认 -->
     <a-modal
       centered
+      v-drag
       class="confirmation-modal"
       :footer="null"
       :maskClosable="false"

+ 1 - 1
src/views/inventoryManagement/intelligentReplenishment/list.vue

@@ -57,7 +57,7 @@
       </s-table>
     </a-spin>
     <!-- 详情 -->
-    <intelligent-replenishment-detail-modal :openModal="openDetailModal" :itemSn="itemSn" @close="closeModal" />
+    <intelligent-replenishment-detail-modal v-drag :openModal="openDetailModal" :itemSn="itemSn" @close="closeModal" />
   </a-card>
 </template>
 

+ 1 - 1
src/views/inventoryManagement/inventoryQuery/list.vue

@@ -107,7 +107,7 @@
       </s-table>
     </a-spin>
     <!-- 库存详情 -->
-    <inventory-query-detail-modal :openModal="openModal" :itemId="itemId" @close="closeModal" />
+    <inventory-query-detail-modal v-drag :openModal="openModal" :itemId="itemId" @close="closeModal" />
     <!-- 导出Excel -->
     <export-excel-modal :openModal="openExcelModal" @ok="handleExcelOk" @close="openExcelModal=false" />
   </a-card>

+ 3 - 2
src/views/productManagement/productBrand/list.vue

@@ -77,12 +77,13 @@
       </s-table>
     </a-spin>
     <!-- 新增/编辑产品品牌 -->
-    <product-brand-edit-modal :openModal="openModal" :nowData="nowData" :itemSn="itemSn" @ok="$refs.table.refresh()" @close="closeModal" />
+    <product-brand-edit-modal v-drag :openModal="openModal" :nowData="nowData" :itemSn="itemSn" @ok="$refs.table.refresh()" @close="closeModal" />
     <!-- 查看产品品牌 -->
-    <product-brand-detail-modal :openModal="openDetailModal" :itemSn="itemSn" @close="closeDetailModal" />
+    <product-brand-detail-modal v-drag :openModal="openDetailModal" :itemSn="itemSn" @close="closeDetailModal" />
     <!-- 查看图片 -->
     <a-modal
       centered
+      v-drag
       class="productBrandList-modal"
       :footer="null"
       :maskClosable="false"

+ 7 - 1
src/views/productManagement/productCategory/list.vue

@@ -49,7 +49,13 @@
       </s-table>
     </a-spin>
     <!-- 新增/编辑产品分类 -->
-    <product-category-edit-modal :openModal="openModal" :nowData="nowData" :itemSn="itemSn" @ok="handleOk" @close="closeModal" />
+    <product-category-edit-modal
+      v-drag
+      :openModal="openModal"
+      :nowData="nowData"
+      :itemSn="itemSn"
+      @ok="handleOk"
+      @close="closeModal" />
   </a-card>
 </template>
 

+ 2 - 2
src/views/productManagement/productInfo/list.vue

@@ -201,9 +201,9 @@
       </s-table>
     </a-spin>
     <!-- 产品详情 -->
-    <product-info-detail-modal :openModal="openModal" :itemSn="itemSn" @close="closeModal" />
+    <product-info-detail-modal v-drag :openModal="openModal" :itemSn="itemSn" @close="closeModal" />
     <!-- 产品下线 -->
-    <product-info-offline-modal :openModal="openOfflineModal" :offlineProductList="offlineProductList" @close="closeOfflineModal" @ok="$refs.table.refresh()" />
+    <product-info-offline-modal v-drag :openModal="openOfflineModal" :offlineProductList="offlineProductList" @close="closeOfflineModal" @ok="$refs.table.refresh()" />
   </a-card>
 </template>
 

+ 7 - 1
src/views/productManagement/productLevel/list.vue

@@ -86,7 +86,13 @@
       </template>
     </s-table>
     <!-- 编辑价格 -->
-    <product-level-edit-modal :openModal="openModal" :itemId="itemId" :nowData="nowData" @close="closeModal" @ok="$refs.table.refresh()" />
+    <product-level-edit-modal
+      v-drag
+      :openModal="openModal"
+      :itemId="itemId"
+      :nowData="nowData"
+      @close="closeModal"
+      @ok="$refs.table.refresh()" />
   </a-card>
 </template>
 

+ 2 - 2
src/views/productManagement/productPricing/list.vue

@@ -130,9 +130,9 @@
       </s-table>
     </a-spin>
     <!-- 编辑价格 -->
-    <product-pricing-edit-modal :openModal="openModal" :itemSn="itemSn" @close="closeModal" @ok="$refs.table.refresh()" />
+    <product-pricing-edit-modal v-drag :openModal="openModal" :itemSn="itemSn" @close="closeModal" @ok="$refs.table.refresh()" />
     <!-- 审核价格 -->
-    <product-pricing-audit-modal :openModal="openAuditModal" :itemSn="itemSn" @close="closeAuditModal" @ok="auditSuccess" />
+    <product-pricing-audit-modal v-drag :openModal="openAuditModal" :itemSn="itemSn" @close="closeAuditModal" @ok="auditSuccess" />
     <!-- 导入产品 -->
     <importGuideModal :openModal="openGuideModal" @close="openGuideModal=false" @ok="hanldeOk" />
   </a-card>

+ 1 - 1
src/views/productManagement/productUniversal/list.vue

@@ -85,7 +85,7 @@
       </s-table>
     </a-spin>
     <!-- 新增/编辑 -->
-    <product-universal-edit-modal :openModal="openModal" :itemId="itemId" @close="closeModal" @ok="$refs.table.refresh()" />
+    <product-universal-edit-modal v-drag :openModal="openModal" :itemId="itemId" @close="closeModal" @ok="$refs.table.refresh()" />
   </a-card>
 </template>
 

+ 2 - 2
src/views/productManagement/shelfNoManage/list.vue

@@ -123,9 +123,9 @@
     <!-- 导入产品 -->
     <importGuideModal :openModal="openGuideModal" @close="openGuideModal=false" @ok="hanldeOk" />
     <!-- 编辑 -->
-    <editHwModal :openModal="openModal" :nowData="nowData" @ok="editOk" @close="closeModal" />
+    <editHwModal v-drag :openModal="openModal" :nowData="nowData" @ok="editOk" @close="closeModal" />
     <!-- 变更记录 -->
-    <changeRecordModal :openModal="recordModal" :detailData="nowData" @close="closeModal"></changeRecordModal>
+    <changeRecordModal v-drag :openModal="recordModal" :detailData="nowData" @close="closeModal"></changeRecordModal>
   </a-card>
 </template>
 

+ 1 - 1
src/views/promotionRulesManagement/orderStatistics/list.vue

@@ -89,7 +89,7 @@
       </s-table>
     </a-spin>
     <!-- 详情 -->
-    <orderStatisticsDetailModal :openModal="openModal" :itemSn="itemSn" :nowData="nowData" @close="closeModal" />
+    <orderStatisticsDetailModal v-drag :openModal="openModal" :itemSn="itemSn" :nowData="nowData" @close="closeModal" />
   </a-card>
 </template>
 

+ 1 - 1
src/views/promotionRulesManagement/productStatistics/list.vue

@@ -85,7 +85,7 @@
       </s-table>
     </a-spin>
     <!-- 详情 -->
-    <productStatisticsDetailModal :openModal="openModal" :itemSn="itemSn" :nowData="nowData" @close="closeModal" />
+    <productStatisticsDetailModal v-drag :openModal="openModal" :itemSn="itemSn" :nowData="nowData" @close="closeModal" />
   </a-card>
 </template>
 

+ 1 - 1
src/views/promotionRulesManagement/promotionRules/list.vue

@@ -90,7 +90,7 @@
       </s-table>
     </a-spin>
     <!-- 新增 -->
-    <basic-info-modal :openModal="openModal" :itemSn="itemSn" @ok="handleOk" @close="closeModal" />
+    <basic-info-modal v-drag :openModal="openModal" :itemSn="itemSn" @ok="handleOk" @close="closeModal" />
   </a-card>
 </template>
 

+ 30 - 4
src/views/purchasingManagement/bulkWarehousingOrder/list.vue

@@ -57,6 +57,15 @@
               <span class="table-page-search-submitButtons">
                 <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="bulkWarehousingOrderList-refresh">查询</a-button>
                 <a-button style="margin-left: 5px" @click="resetSearchForm()" :disabled="disabled" id="bulkWarehousingOrderList-reset">重置</a-button>
+                <a-button
+                  style="margin-left: 10px"
+                  v-if="$hasPermissions('B_sparePartsExport')"
+                  type="primary"
+                  class="button-warning"
+                  @click="handleExport"
+                  :disabled="disabled"
+                  :loading="exportLoading"
+                >导出明细</a-button>
               </span>
             </a-col>
           </a-row>
@@ -125,8 +134,10 @@
       </s-table>
     </a-spin>
     <!-- 选择基本信息弹框 -->
-    <basic-info-modal :openModal="openModal" @ok="handleOk" @close="openModal=false" />
-    <sparePartsDetailModal :openModal="openDetailModal" :itemSn="itemSn" @close="closeDetailModal" />
+    <basic-info-modal v-drag :openModal="openModal" @ok="handleOk" @close="openModal=false" />
+    <sparePartsDetailModal v-drag :openModal="openDetailModal" :itemSn="itemSn" @close="closeDetailModal" />
+    <!-- 导出提示框 -->
+    <reportModal :visible="showExport" @close="showExport=false"></reportModal>
   </a-card>
 </template>
 
@@ -135,16 +146,20 @@ import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import basicInfoModal from './basicInfoModal.vue'
 import sparePartsDetailModal from './detailModal.vue'
-import { sparePartsList, sparePartsDelete, sparePartsAudit } from '@/api/spareParts'
+import reportModal from '@/views/common/reportModal.vue'
+import { hdExportExcel } from '@/libs/exportExcel'
+import { sparePartsList, sparePartsDelete, sparePartsAudit, sparePartsDetailExport } from '@/api/spareParts'
 export default {
   name: 'BulkWarehousingOrderList',
   mixins: [commonMixin],
-  components: { STable, VSelect, basicInfoModal, sparePartsDetailModal },
+  components: { STable, VSelect, basicInfoModal, sparePartsDetailModal, reportModal },
   data () {
     return {
       spinning: false,
       disabled: false, //  查询、重置按钮是否可操作
       openModal: false, // 基本信息弹框是否显示
+      showExport: false,
+      exportLoading: false,
       tableHeight: 0,
       // 查询参数
       queryParam: {
@@ -206,6 +221,17 @@ export default {
     rowSelectionFun (obj) {
       this.rowSelectionInfo = obj || null
     },
+    //  导出
+    handleExport () {
+      const _this = this
+      _this.exportLoading = true
+      _this.spinning = true
+      hdExportExcel(sparePartsDetailExport, _this.queryParam, '散件入库明细', function () {
+        _this.exportLoading = false
+        _this.spinning = false
+        _this.showExport = true
+      })
+    },
     //  新增
     handleAdd () {
       this.openModal = true

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

@@ -13,7 +13,7 @@
           @keyup.enter.native="handleSearch">
           <a-row :gutter="15">
             <a-col :md="6" :sm="24">
-              <a-form-model-item label="确认日期" prop="time">
+              <a-form-model-item label="退货日期" prop="time">
                 <rangeDate ref="rangeDate" :value="queryParam.time" @change="dateChange" />
               </a-form-model-item>
             </a-col>
@@ -213,7 +213,7 @@ export default {
         { title: '区域', dataIndex: 'dealer.subareaNameSet', width: 120, align: 'center', customRender: function (text) { return (text && text.length > 0) ? text.join('/') : '--' } },
         { title: '退货单号', dataIndex: 'salesReturnBillNo', width: 160, align: 'center', customRender: function (text) { return text || '--' } },
         { title: '省份', dataIndex: 'dealer.provinceName', width: 90, align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '客户名称', dataIndex: 'dealer.dealerName', width: 120,align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
+        { title: '客户名称', dataIndex: 'dealer.dealerName', width: 120, align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
         { title: '客户级别', dataIndex: 'dealer.dealerLevelDictValue', width: 120, align: 'center', customRender: function (text) { return text || '--' } },
         { title: '品牌',
           align: 'center',

+ 1 - 1
src/views/salesManagement/backorder/list.vue

@@ -48,7 +48,7 @@
       </s-table>
     </a-spin>
     <!-- 详情 -->
-    <backorder-detail-modal :openModal="openModal" :itemSn="itemSn" @close="closeModal" />
+    <backorder-detail-modal v-drag :openModal="openModal" :itemSn="itemSn" @close="closeModal" />
   </a-card>
 </template>
 

+ 14 - 2
src/views/salesManagement/examineVerify/list.vue

@@ -117,8 +117,20 @@
       </s-table>
     </a-spin>
     <!-- 审核 -->
-    <auditModal :openModal="visibleAudit" :spinning="spinningAudit" @close="visibleAudit=false" @ok="auditOrder('OUTING_WAREHOUSE')" @fail="auditOrder('STOCK_UP_REJECT')" />
-    <auditRejectModal :openModal="visibleAuditReject" :spinning="spinningAuditReject" :itemData="auditInfo" @close="visibleAuditReject=false" @ok="auditReject" />
+    <auditModal
+      v-drag
+      :openModal="visibleAudit"
+      :spinning="spinningAudit"
+      @close="visibleAudit=false"
+      @ok="auditOrder('OUTING_WAREHOUSE')"
+      @fail="auditOrder('STOCK_UP_REJECT')" />
+    <auditRejectModal
+      v-drag
+      :openModal="visibleAuditReject"
+      :spinning="spinningAuditReject"
+      :itemData="auditInfo"
+      @close="visibleAuditReject=false"
+      @ok="auditReject" />
   </a-card>
 </template>
 

+ 8 - 1
src/views/salesManagement/outboundOrder/list.vue

@@ -146,6 +146,7 @@
     <!-- 详情 -->
     <a-modal
       centered
+      v-drag
       class="outboundOrderDetail-modal"
       :footer="null"
       :maskClosable="false"
@@ -160,7 +161,13 @@
       </div>
     </a-modal>
     <!-- 发货信息 -->
-    <sendGoodModal ref="detailModal" modalTit="新增发货单" :openModal="showDetailModal" @ok="sendSuccess" @cancel="showDetailModal=false"></sendGoodModal>
+    <sendGoodModal
+      v-drag
+      ref="detailModal"
+      modalTit="新增发货单"
+      :openModal="showDetailModal"
+      @ok="sendSuccess"
+      @cancel="showDetailModal=false"></sendGoodModal>
   </a-card>
 </template>
 

+ 218 - 0
src/views/salesManagement/outboundOrder/selectGlOrderModal.vue

@@ -0,0 +1,218 @@
+<template>
+  <a-modal
+    centered
+    class="collection-detail-modal"
+    :footer="null"
+    :maskClosable="false"
+    v-model="isShow"
+    :title="modalTit"
+    :bodyStyle="{padding: modalTit?'25px 32px 20px':'50px 32px 15px'}"
+    @cancel="isShow=false"
+    width="80%">
+    <a-spin :spinning="spinning" tip="Loading...">
+      <div class="common-main">
+        <!-- 搜索条件 -->
+        <div ref="tableSearch" class="table-page-search-wrapper">
+          <a-form layout="inline">
+            <a-row :gutter="15">
+              <a-col :md="6" :sm="24">
+                <a-form-item label="业务单号">
+                  <a-input v-model.trim="queryParam.outBizSubNo" allowClear placeholder="请输入业务单号"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="6" :sm="24">
+                <a-form-item label="客户名称">
+                  <a-input v-model.trim="queryParam.demanderName" allowClear placeholder="请输入客户名称"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="6" :sm="24">
+                <a-form-item label="收货客户名称">
+                  <dealerSubareaScopeList ref="dealerSubareaScopeList" defValKey="buyerSn" @change="custChange" v-model="queryParam.receiverSn" />
+                </a-form-item>
+              </a-col>
+              <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>
+                </span>
+              </a-col>
+            </a-row>
+          </a-form>
+        </div>
+        <!-- 表格数据 -->
+        <s-table
+          class="sTable"
+          ref="table"
+          size="small"
+          :rowKey="(record) => record.id"
+          :columns="columns"
+          :data="loadData"
+          :scroll="{ y: 400 }"
+          :pageSize="10"
+          bordered>
+          <!-- 操作 -->
+          <template slot="action" slot-scope="text, record">
+            <div v-if="!(record.outBizType == 'SALES'&&record.financialStatus=='WAIT')&&record.sendFlag==0">
+              <a-button
+                size="small"
+                type="link"
+                class="button-warning"
+                v-if="!record.checked"
+                @click="handleChoose(record)"
+              >选择</a-button>
+              <span style="color:#55aa00;" v-else>已选</span>
+            </div>
+            <span style="color:#55aa00;" v-else>
+              {{ record.checked?'已选':'--' }}
+            </span>
+          </template>
+        </s-table>
+      </div>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+import { STable, VSelect } from '@/components'
+import { stockOutList } from '@/api/stockOut'
+import dealerSubareaScopeList from '@/views/common/dealerSubareaScopeList.vue'
+export default {
+  name: 'SelectGlOrderModal',
+  components: { STable, VSelect, dealerSubareaScopeList },
+  props: {
+    openModal: { //  弹框显示状态
+      type: Boolean,
+      default: false
+    },
+    modalTit: { // 弹框标题
+      type: String,
+      default: null
+    },
+    chooseData: {
+      type: Array,
+      default: function () {
+        return []
+      }
+    }
+  },
+  data () {
+    return {
+      isShow: this.openModal, //  是否打开弹框
+      disabled: false,
+      spinning: false,
+      handlePlData: [],
+      queryParam: {
+        outBizSubNo: '',
+        demanderName: '',
+        receiverSn: undefined,
+        outBizTypeList: ['SALES', 'ALLOCATE']
+      },
+      columns: [
+        { title: '序号', dataIndex: 'no', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '出库单号', dataIndex: 'stockOutNo', width: '10%', align: 'center' },
+        { title: '业务单号', dataIndex: 'outBizSubNo', width: '12%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '出库类型', dataIndex: 'outBizTypeDictValue', width: '8%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '发货编号', dataIndex: 'sendNo', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '客户名称', dataIndex: 'demanderName', width: '10%', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
+        { title: '收货客户名称', dataIndex: 'receiverName', width: '10%', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
+        { title: '产品款数', dataIndex: 'productTotalCategory', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '产品数量', dataIndex: 'productTotalQty', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '单据审核时间', dataIndex: 'auditTime', width: '8%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '收款状态', dataIndex: 'financialStatusDictValue', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '发货状态', dataIndex: 'sendFlagDictValue', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '操作', scopedSlots: { customRender: 'action' }, width: '6%', align: 'center' }
+      ],
+      orginData: [],
+      // 加载数据方法 必须为 Promise 对象
+      loadData: parameter => {
+        this.disabled = true
+        this.spinning = true
+        return stockOutList(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
+              const index = this.chooseData.findIndex(item => data.list[i].stockOutSn == item.stockOutSn)
+              data.list[i].checked = index >= 0
+            }
+            this.disabled = false
+          }
+          this.spinning = false
+          this.orginData = data.list
+          return data
+        })
+      },
+      snList: []
+    }
+  },
+  computed: {
+    totalAmount () {
+      let ret = 0
+      this.handlePlData.map(item => {
+        ret = ret + item.totalAmount
+      })
+      return ret.toFixed(2)
+    }
+  },
+  methods: {
+    custChange (val) {
+      this.queryParam.receiverSn = val.key || ''
+    },
+    // 删除
+    handleDel (row) {
+      const i = this.chooseData.findIndex(item => row.stockOutSn == item.stockOutSn)
+      this.chooseData.splice(i, 1)
+      const oi = this.orginData.findIndex(item => row.stockOutSn == item.stockOutSn)
+      if (oi >= 0) {
+        this.orginData[oi].checked = false
+      }
+    },
+    // 选择
+    handleChoose (row) {
+      row.checked = true
+      this.chooseData.push(row)
+      this.$emit('choose')
+    },
+    // 取消
+    handleCommonCancel () {
+      this.$emit('cancel')
+    },
+    // 重置
+    resetSearchForm () {
+      this.queryParam = {
+        outBizSubNo: '',
+        demanderName: '',
+        receiverSn: undefined,
+        outBizTypeList: ['SALES', 'ALLOCATE']
+      }
+      this.orginData = []
+      this.$nextTick(() => {
+        this.$refs.dealerSubareaScopeList.resetForm()
+      })
+      if (this.$refs.table) {
+        this.$refs.table.refresh(true)
+      }
+    }
+  },
+  watch: {
+    //  父页面传过来的弹框状态
+    openModal (newValue, oldValue) {
+      this.isShow = newValue
+    },
+    //  重定义的弹框状态
+    isShow (newValue, oldValue) {
+      if (!newValue) {
+        this.handleCommonCancel()
+      } else {
+        this.resetSearchForm()
+      }
+    }
+  }
+}
+</script>
+
+<style lang="less">
+
+</style>

+ 101 - 32
src/views/salesManagement/outboundOrder/sendGoodModal.vue

@@ -10,9 +10,31 @@
     width="60%">
     <a-spin :spinning="spinning" tip="Loading...">
       <div class="common-main">
-        <a-alert type="info" v-if="detail.length" style="margin-bottom:10px">
-          <div slot="message">{{ customeName }},共 {{ detail && detail.length }} 个出库单,产品款数合计 <span>{{ productTotal&&productTotal.totalCategory }}</span> ,产品数量合计 <span>{{ productTotal&&productTotal.totalQty }}</span>。</div>
-        </a-alert>
+        <div style="display:flex;margin-bottom:10px;align-items: center;">
+          <a-button @click="showGlModal=true" type="primary" class="button-info" ghost v-if="isEdit">选择关联单据</a-button>
+          <div style="padding:0 15px;" v-if="sendBillStockOutList.length">
+            <div>{{ customeName }},共 {{ sendBillStockOutList && sendBillStockOutList.length }} 个出库单,产品款数合计 <span>{{ productTotal&&productTotal.totalCategory }}</span> ,产品数量合计 <span>{{ productTotal&&productTotal.totalQty }}</span>。</div>
+          </div>
+        </div>
+        <div style="margin-bottom:10px;" v-if="isEdit">
+          <a-table :columns="glColumns" :pagination="false" :scroll="{ y: 200 }" :data-source="sendBillStockOutList" bordered>
+            <!-- 客户名称 -->
+            <template slot="buyerName" slot-scope="text, record">
+              {{ record.buyerName || record.demanderName }}
+            </template>
+            <!-- 操作 -->
+            <template slot="action" slot-scope="text, record">
+              <a-button
+                size="small"
+                type="link"
+                class="button-error"
+                @click="delStockOutList(record)"
+              >
+                删除
+              </a-button>
+            </template>
+          </a-table>
+        </div>
         <div class="toolsBar">
           <a-form-model
             ref="ruleForm"
@@ -22,42 +44,42 @@
             :wrapper-col="formItemLayout.wrapperCol"
           >
             <a-row>
-              <a-col span="12">
+              <a-col span="8">
                 <a-form-model-item label="托运日期" prop="sendDate">
                   <a-date-picker :allowClear="false" inputReadOnly v-model="form.sendDate" :locale="locale"/>
                 </a-form-model-item>
               </a-col>
-              <a-col span="12">
-                <a-form-model-item label="目的地">
-                  <a-input placeholder="请输入目的地(最多30字符)" :maxLength="30" v-model.trim="form.customerAddress"></a-input>
-                </a-form-model-item>
-              </a-col>
-              <a-col span="12">
+              <a-col span="8">
                 <a-form-model-item label="收货人" prop="customerCacateName">
                   <a-input placeholder="请输入收货人(最多30字符)" :maxLength="30" v-model.trim="form.customerCacateName"></a-input>
                 </a-form-model-item>
               </a-col>
-              <a-col span="12">
+              <a-col span="8">
                 <a-form-model-item label="电话" prop="customerCacatePhone">
                   <a-input placeholder="请输入电话" :maxLength="30" v-model.trim="form.customerCacatePhone"></a-input>
                 </a-form-model-item>
               </a-col>
               <a-col span="24">
-                <a-form-model-item label="详细地址" prop="customerAddressDetail" :label-col="{span:3}" :wrapper-col="{span:19}">
+                <a-form-model-item label="详细地址" prop="customerAddressDetail" :label-col="{span:2}" :wrapper-col="{span:21}">
                   <a-textarea placeholder="请输入详细地址(最多300字符)" :maxLength="300" v-model.trim="form.customerAddressDetail"></a-textarea>
                 </a-form-model-item>
               </a-col>
-              <a-col span="12">
+              <a-col span="8">
+                <a-form-model-item label="目的地">
+                  <a-input placeholder="请输入目的地(最多30字符)" :maxLength="30" v-model.trim="form.customerAddress"></a-input>
+                </a-form-model-item>
+              </a-col>
+              <a-col span="8">
                 <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-col span="8">
                 <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-col span="8">
                 <a-form-model-item label="付款方式">
                   <v-select
                     v-model="form.payType"
@@ -67,7 +89,7 @@
                     allowClear></v-select>
                 </a-form-model-item>
               </a-col>
-              <a-col span="12">
+              <a-col span="8">
                 <a-form-model-item label="交货方式">
                   <v-select
                     v-model="form.handoverType"
@@ -77,7 +99,7 @@
                     allowClear></v-select>
                 </a-form-model-item>
               </a-col>
-              <a-col span="12">
+              <a-col span="8">
                 <a-form-model-item label="运费合计">
                   <!-- <a-input disabled placeholder="请输入运费合计" v-model.trim="form.totalSendAmount"></a-input> -->
                   {{ form.totalSendAmount||'--' }}
@@ -104,7 +126,7 @@
             </template>
             <!-- 数量 -->
             <template slot="qty" slot-scope="text, record">
-              <a-input-number style="width: 100%;" :precision="0" v-model="record.goodsQty" :min="0" :max="999999"></a-input-number>
+              <a-input-number style="width: 100%;" :precision="0" v-model="record.goodsQty" :min="1" :max="999999"></a-input-number>
             </template>
             <!-- 体积 -->
             <template slot="volume" slot-scope="text, record">
@@ -170,10 +192,18 @@
         </div>
       </div>
       <div class="btn-box">
-        <a-button @click="handleCommonCancel" v-if="isCancel">{{ cancelText }}</a-button>
-        <a-button type="primary" @click="handleCommonOk">{{ okText }}</a-button>
+        <a-button size="large" @click="handleCommonCancel" v-if="isCancel">{{ cancelText }}</a-button>
+        <a-button size="large" type="primary" @click="handleCommonOk">{{ okText }}</a-button>
       </div>
     </a-spin>
+    <!-- 关联单据 -->
+    <selectGlOrderModal
+      ref="selGlModal"
+      modalTit="选择关联单据"
+      :chooseData="sendBillStockOutList"
+      :openModal="showGlModal"
+      @choose="getProductTotal"
+      @cancel="showGlModal=false"></selectGlOrderModal>
   </a-modal>
 </template>
 
@@ -181,10 +211,11 @@
 import moment from 'moment'
 import locale from 'ant-design-vue/es/date-picker/locale/zh_CN'
 import { STable, VSelect } from '@/components'
-import { sendBillInsert, sendBillFindBySn, sendBillUpdate } from '@/api/sendBill'
+import selectGlOrderModal from './selectGlOrderModal.vue'
+import { sendBillInsert, sendBillFindBySn, sendBillUpdate, deleteSendBillStockOut } from '@/api/sendBill'
 export default {
   name: 'SendGoodModal',
-  components: { STable, VSelect },
+  components: { STable, VSelect, selectGlOrderModal },
   props: {
     openModal: { //  弹框显示状态
       type: Boolean,
@@ -213,6 +244,7 @@ export default {
       isShow: this.openModal, //  是否打开弹框
       disabled: false,
       spinning: false,
+      showGlModal: false,
       form: {
         'stockOutSnList': [], // 出库单列表
         'sendDate': moment(), // 托运时间
@@ -237,7 +269,21 @@ export default {
         labelCol: { span: 6 },
         wrapperCol: { span: 15 }
       },
-      detail: [],
+      sendBillStockOutList: [],
+      glColumns: [
+        { title: '序号', dataIndex: 'no', width: '6%', align: 'center', customRender: function (text) { return text } },
+        { title: '出库单号', dataIndex: 'stockOutNo', width: '10%', align: 'center' },
+        { title: '业务单号', dataIndex: 'outBizSubNo', width: '12%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '出库类型', dataIndex: 'outBizTypeDictValue', width: '8%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '发货编号', dataIndex: 'sendNo', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '客户名称', scopedSlots: { customRender: 'buyerName' }, width: '12%', align: 'center', ellipsis: true },
+        { title: '收货客户名称', dataIndex: 'receiverName', width: '12%', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
+        { title: '产品款数', dataIndex: 'productTotalCategory', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '产品数量', dataIndex: 'productTotalQty', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '单据审核时间', dataIndex: 'auditTime', width: '8%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '收款时间', dataIndex: 'settleTime', width: '8%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '操作', scopedSlots: { customRender: 'action' }, width: '6%', align: 'center' }
+      ],
       productTotal: null,
       tableData: [],
       columns: [
@@ -261,7 +307,7 @@ export default {
   methods: {
     // 新增,出库单和收货人信息
     setData (data, customeInfo) {
-      this.detail = data
+      this.sendBillStockOutList = data
       this.customeName = data[0].demanderName
       this.isEdit = false
       this.getProductTotal()
@@ -271,6 +317,25 @@ export default {
         this.form.customerAddressDetail = customeInfo.addr
       }
     },
+    // 删除出库单
+    delStockOutList (row) {
+      const ri = this.sendBillStockOutList.findIndex(item => row.stockOutSn == item.stockOutSn)
+      // 新加的
+      if (row.id) {
+        this.sendBillStockOutList.splice(ri, 1)
+        this.getProductTotal()
+      } else {
+        // 删除后修改发货状态
+        this.spinning = true
+        deleteSendBillStockOut({ stockOutSn: row.stockOutSn, sendBillSn: this.form.sendBillSn }).then(res => {
+          if (res.status == 200) {
+            this.sendBillStockOutList.splice(ri, 1)
+            this.getProductTotal()
+          }
+          this.spinning = false
+        })
+      }
+    },
     // 编辑
     getDetail (data) {
       this.spinning = true
@@ -280,7 +345,7 @@ export default {
         console.log(res)
         this.spinning = false
         if (res.data) {
-          this.detail = res.data.sendBillStockOutList // 出库单
+          this.sendBillStockOutList = res.data.sendBillStockOutList // 出库单
           this.tableData = res.data.detailList // 发货明细
           this.tableData.map((item, i) => {
             item.no = i + 1
@@ -310,19 +375,21 @@ export default {
         totalQty: 0
       }
       const stockOutSnList = []
-      this.detail.map(item => {
+      this.sendBillStockOutList.map((item, index) => {
+        item.no = index + 1
         ret.totalCategory = ret.totalCategory + item.productTotalCategory
         ret.totalQty = ret.totalQty + item.productTotalQty
         stockOutSnList.push(item.stockOutSn)
       })
       // 编辑时不需要传
-      this.form.stockOutSnList = this.isEdit ? [] : stockOutSnList
+      this.form.stockOutSnList = stockOutSnList
       this.productTotal = ret
     },
     // 计算运费合计
     getTotalSendAmount () {
       let ret = 0
-      this.tableData.map(item => {
+      this.tableData.map((item, i) => {
+        item.no = i + 1
         ret = ret + Number(item.totalAmount || 0)
       })
       this.form.totalSendAmount = ret.toFixed(2)
@@ -336,9 +403,6 @@ export default {
     // 删除
     handleDel (row, index) {
       this.tableData.splice(index, 1)
-      this.tableData.map((item, i) => {
-        item.no = i + 1
-      })
       this.getTotalSendAmount()
     },
     // 添加
@@ -386,6 +450,10 @@ export default {
             _this.$message.info('请选择物品!')
             return false
           }
+          if (_this.vaildGood('goodsQty').indexOf(false) >= 0) {
+            _this.$message.info('请输入件数!')
+            return false
+          }
           if (_this.vaildGood('totalAmount').indexOf(false) >= 0) {
             _this.$message.info('请输入费用!')
             return false
@@ -410,7 +478,7 @@ export default {
     handleCommonCancel () {
       this.$emit('cancel')
       this.tableData = []
-      this.detail = []
+      this.sendBillStockOutList = []
       this.spinning = false
       this.$refs.ruleForm.resetFields()
       this.form = {
@@ -448,6 +516,7 @@ export default {
   .sendGood-detail-modal{
     .common-main{
        .toolsBar{
+         padding-top:15px;
          border:1px solid #eee;
          border-radius: 3px;
          display: flex;

+ 1 - 1
src/views/salesManagement/priceInquiry/list.vue

@@ -111,7 +111,7 @@
       </template>
     </s-table>
     <!-- 查看车辆信息 -->
-    <car-info-modal ref="carInfoModal" :openModal="openCarInfoModal" :infoData="vinInfoData&&vinInfoData.vinInfo" @close="openCarInfoModal=false" />
+    <car-info-modal v-drag ref="carInfoModal" :openModal="openCarInfoModal" :infoData="vinInfoData&&vinInfoData.vinInfo" @close="openCarInfoModal=false" />
   </a-card>
 </template>
 

+ 1 - 1
src/views/salesManagement/pushOrderManagement/list.vue

@@ -180,7 +180,7 @@
         <salesDetail v-if="showDetailModal" ref="salesDetail" :bizSn="bizSn"></salesDetail>
       </commonModal>
       <!-- 发货说明 -->
-      <explainInfoModal :rowData="tipData" :openModal="showInfoModal" @close="canselModal"></explainInfoModal>
+      <explainInfoModal v-drag :rowData="tipData" :openModal="showInfoModal" @close="canselModal"></explainInfoModal>
     </a-spin>
   </a-card>
 </template>

+ 1 - 1
src/views/salesManagement/receiptPrint/list.vue

@@ -162,7 +162,7 @@
           <printModel ref="printModel" @cancel="closeTipModal" @printOk="printOk"></printModel>
         </commonModal>
         <!-- 打印记录 -->
-        <recordModal ref="recordModal" modalTit="打印记录" :openModal="showRecordModal" @cancel="showRecordModal=false"></recordModal>
+        <recordModal v-drag ref="recordModal" modalTit="打印记录" :openModal="showRecordModal" @cancel="showRecordModal=false"></recordModal>
         <!-- 查看销售单或备货单详情 -->
         <commonModal
           :modalTit="detailType?'备货单详情':'销售单详情'"

+ 23 - 3
src/views/salesManagement/salesCollection/list.vue

@@ -91,6 +91,17 @@
                     allowClear></v-select>
                 </a-form-item>
               </a-col>
+              <a-col :md="6" :sm="24">
+                <a-form-item label="对单状态">
+                  <v-select
+                    v-model="queryParam.checkStatus"
+                    ref="checkStatus"
+                    id="salesCollectionList-checkStatus"
+                    code="CHECK_STATUS"
+                    placeholder="请选择对单状态"
+                    allowClear></v-select>
+                </a-form-item>
+              </a-col>
               <a-col :md="6" :sm="24">
                 <a-form-item label="所在区域">
                   <subarea id="salesCollectionList-subarea" v-model="queryParam.subareaSn"></subarea>
@@ -171,9 +182,15 @@
       </s-table>
 
       <!-- 关联收款单 -->
-      <detailModal ref="detailModal" modalTit="关联收款单" @ok="relationSuccess" :openModal="showDetail" @cancel="showDetail=false"></detailModal>
+      <detailModal
+        v-drag
+        ref="detailModal"
+        modalTit="关联收款单"
+        @ok="relationSuccess"
+        :openModal="showDetail"
+        @cancel="showDetail=false"></detailModal>
       <!-- 销售收款凭证 -->
-      <voucherModal ref="voucherModal" modalTit="销售收款凭证" :openModal="showVoucher" @cancel="showVoucher=false"></voucherModal>
+      <voucherModal v-drag ref="voucherModal" modalTit="销售收款凭证" :openModal="showVoucher" @cancel="showVoucher=false"></voucherModal>
 
       <!-- 销售收款弹框 -->
       <commonModal
@@ -259,7 +276,8 @@ export default {
         voidFlag: undefined,
         dealerProvinceSn: undefined,
         dealerCitySn: undefined,
-        dealerCountySn: undefined
+        dealerCountySn: undefined,
+        checkStatus: undefined
       },
       disabled: false, //  查询、重置按钮是否可操作
       auditDate: [], //  审核时间
@@ -321,6 +339,7 @@ export default {
         { title: '业务状态', dataIndex: 'billStatusDictValue', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '财务状态', dataIndex: 'settleStateDictValue', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '单据状态', dataIndex: 'voidFlagDictValue', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '对单状态', dataIndex: 'checkStatusDictValue', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '操作', scopedSlots: { customRender: 'action' }, width: '4%', align: 'center' }
       ]
       if (this.$hasPermissions('B_isShowPrice')) { //  售价权限
@@ -382,6 +401,7 @@ export default {
       this.queryParam.dealerProvinceSn = undefined
       this.queryParam.dealerCitySn = undefined
       this.queryParam.dealerCountySn = undefined
+      this.queryParam.checkStatus = undefined
       this.$refs.table.refresh(true)
       this.$refs.table.clearSelected()
     },

+ 1 - 1
src/views/salesManagement/salesCollection/voucherModal.vue

@@ -8,7 +8,7 @@
     :title="modalTit"
     :bodyStyle="{padding: modalTit?'25px 32px 20px':'50px 32px 15px'}"
     @cancel="handleCommonCancel"
-    width="80%">
+    width="60%">
     <a-spin :spinning="spinning" tip="Loading...">
       <div class="common-main" v-if="detail">
         <div class="toolsBar">

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

@@ -396,13 +396,13 @@ export default {
     //  导出
     handleExport () {
       const _this = this
-      _this.showExport = true
       const params = _this.queryParam
       _this.exportLoading = true
       _this.spinning = true
       hdExportExcel(salesDetailExport, params, '销售明细', function () {
         _this.exportLoading = false
         _this.spinning = false
+        _this.showExport = true
       })
     },
     //  时间  change

+ 253 - 0
src/views/salesManagement/sendOutOrder/chooseImportModal.vue

@@ -0,0 +1,253 @@
+<template>
+  <a-modal
+    centered
+    class="chooseImport-modal"
+    :footer="null"
+    :maskClosable="false"
+    title="确认导入"
+    v-model="isShow"
+    @cancel="isShow=false"
+    width="80%">
+    <div class="chooseImport-con">
+      <!-- 可导入数据 -->
+      <p class="">可导入数据{{ loadData.length }}条</p>
+      <a-table
+        class="sTable"
+        ref="table"
+        size="small"
+        :rowKey="(record) => record.id"
+        :columns="nowColumns"
+        :dataSource="loadData"
+        :loading="loading"
+        :scroll="{ y: 200 }"
+        :pagination="false"
+        bordered>
+      </a-table>
+      <a-divider />
+      <!-- 不可导入数据 -->
+      <p class="red">不可导入数据{{ unLoadData.length }}条</p>
+      <a-table
+        class="unTable"
+        ref="unTable"
+        size="small"
+        :rowKey="(record) => record.id"
+        :columns="nowUnColumns"
+        :dataSource="unLoadData"
+        :loading="loading"
+        :scroll="{ y: 200 }"
+        :pagination="false"
+        bordered>
+      </a-table>
+      <!-- 按钮 -->
+      <div class="btn-con">
+        <a-button
+          type="primary"
+          id="chooseImport-submit"
+          size="large"
+          :class="loadData.length==0?'button-grey':'button-primary'"
+          @click="handleSubmit"
+          :loading="bloading"
+          style="padding: 0 40px;">确认导入</a-button>
+        <a-button
+          id="chooseImport-cancel"
+          size="large"
+          class="button-cancel"
+          :loading="bloading"
+          @click="isShow=false"
+          style="padding: 0 40px;margin-left: 15px;">取消</a-button>
+        <a-button
+          type="primary"
+          id="chooseImport-error"
+          size="large"
+          class="button-error"
+          :loading="bloading"
+          @click="handleError"
+          style="padding: 0 40px;margin-left: 15px;">导出错误项</a-button>
+      </div>
+    </div>
+  </a-modal>
+</template>
+
+<script>
+import { hdExportExcel } from '@/libs/exportExcel'
+import { sendBillInsertBatch, exportImportError } from '@/api/sendBill'
+import { toThousands } from '@/libs/tools.js'
+export default {
+  name: 'ChooseImportModal',
+  props: {
+    openModal: { //  弹框显示状态
+      type: Boolean,
+      default: false
+    },
+    paramsData: {
+      type: Object,
+      default: () => {
+        return {}
+      }
+    }
+  },
+  data () {
+    const renderContent = (value, row, index) => {
+      const obj = {
+        children: value || '--',
+        attrs: { rowSpan: row.sendBillDetailList ? row.sendBillDetailList.length : 0 }
+      }
+      return obj
+    }
+    const renderContentError = (value, row, index) => {
+      const obj = {
+        children: <a-popover placement="topRight">
+          <template slot="content">
+            { row.importErrorMsgList.map(item => { return <div>{item}</div> }) }
+          </template>
+          <a-button type="link">
+            查看
+          </a-button>
+        </a-popover>,
+        attrs: { rowSpan: row.sendBillDetailList ? row.sendBillDetailList.length : 0 }
+      }
+      return obj
+    }
+    return {
+      bloading: false,
+      isShow: this.openModal, //  是否打开弹框
+      nowColumns: [
+        { title: '序号', dataIndex: 'no', width: '4%', align: 'center', customRender: renderContent },
+        { title: '客户名称', dataIndex: 'customeName', width: '8%', align: 'left', customRender: renderContent },
+        { title: '物流单号', dataIndex: 'transportNo', width: '8%', align: 'center', customRender: renderContent },
+        { title: '物流电话', dataIndex: 'transportTele', width: '8%', align: 'center', customRender: renderContent },
+        { title: '托运日期', dataIndex: 'sendDate', width: '8%', align: 'center', customRender: renderContent },
+        { title: '收货人', dataIndex: 'customerCacateName', width: '6%', align: 'left', customRender: renderContent },
+        { title: '收货电话', dataIndex: 'customerCacatePhone', width: '8%', align: 'center', customRender: renderContent },
+        { title: '收货地址', dataIndex: 'customerAddressDetail', width: '8%', align: 'center', customRender: renderContent },
+        { title: '目的地', dataIndex: 'customerAddress', width: '6%', align: 'center', customRender: renderContent },
+        { title: '付款方式', dataIndex: 'payTypeDictValue', width: '6%', align: 'center', customRender: renderContent },
+        { title: '交货方式', dataIndex: 'handoverTypeDictValue', width: '6%', align: 'center', customRender: renderContent },
+        { title: '货物名称', dataIndex: 'goodsName', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '件数', dataIndex: 'goodsQtyStr', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '体积(m3)', dataIndex: 'goodsVolumeStr', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? toThousands(text,2) : '--') } },
+        { title: '立方/元', dataIndex: 'cubeAmount', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '重量(kg)', dataIndex: 'goodsWeightStr', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? toThousands(text,2) : '--') } },
+        { title: '每吨/元', dataIndex: 'tonAmount', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '运费(元)', dataIndex: 'transportAmountStr', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '送货费(元)', dataIndex: 'sendAmountStr', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? toThousands(text,2) : '--') } },
+        { title: '其他(元)', dataIndex: 'otherAmountStr', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? toThousands(text,2) : '--') } },
+        { title: '保价(万)', dataIndex: 'supportValueStr', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? toThousands(text,2) : '--') } }
+      ],
+      loadData: [],
+      nowUnColumns: [
+        { title: '序号', dataIndex: 'no', width: '4%', align: 'center', customRender: renderContent },
+        { title: '客户名称', dataIndex: 'customeName', width: '8%', align: 'left', customRender: renderContent },
+        { title: '物流单号', dataIndex: 'transportNo', width: '8%', align: 'center', customRender: renderContent },
+        { title: '物流电话', dataIndex: 'transportTele', width: '8%', align: 'center', customRender: renderContent },
+        { title: '托运日期', dataIndex: 'sendDate', width: '8%', align: 'center', customRender: renderContent },
+        { title: '收货人', dataIndex: 'customerCacateName', width: '6%', align: 'left', customRender: renderContent },
+        { title: '收货电话', dataIndex: 'customerCacatePhone', width: '8%', align: 'center', customRender: renderContent },
+        { title: '收货地址', dataIndex: 'customerAddressDetail', width: '8%', align: 'center', customRender: renderContent },
+        { title: '目的地', dataIndex: 'customerAddress', width: '6%', align: 'center', customRender: renderContent },
+        { title: '付款方式', dataIndex: 'payTypeDictValue', width: '6%', align: 'center', customRender: renderContent },
+        { title: '交货方式', dataIndex: 'handoverTypeDictValue', width: '6%', align: 'center', customRender: renderContent },
+        { title: '货物名称', dataIndex: 'goodsName', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '件数', dataIndex: 'goodsQtyStr', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '体积(m3)', dataIndex: 'goodsVolumeStr', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? toThousands(text,2) : '--') } },
+        { title: '立方/元', dataIndex: 'cubeAmountStr', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '重量(kg)', dataIndex: 'goodsWeightStr', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? toThousands(text,2) : '--') } },
+        { title: '每吨/元', dataIndex: 'tonAmountStr', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '运费(元)', dataIndex: 'transportAmountStr', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '送货费(元)', dataIndex: 'sendAmountStr', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? toThousands(text,2) : '--') } },
+        { title: '其他(元)', dataIndex: 'otherAmountStr', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? toThousands(text,2) : '--') } },
+        { title: '保价(万)', dataIndex: 'supportValueStr', width: '6%', align: 'center', customRender: function (text) { return ((text || text == 0) ? toThousands(text,2) : '--') } },
+        { title: '错误说明', dataIndex: 'importErrorMsgList', width: '10%', align: 'center', customRender: renderContentError }
+      ],
+      unLoadData: [],
+      loading: false
+    }
+  },
+  methods: {
+    formatData (data) {
+      const ret = []
+      data.map((item, index) => {
+        item.no = index + 1
+        item.id = new Date().getTime() + index
+        const clist = item.sendBillDetailList
+        clist.map((k, i) => {
+          if (i > 0) {
+            ret.push(k)
+          } else {
+            ret.push(Object.assign(item, k))
+          }
+        })
+      })
+      return ret
+    },
+    getData () {
+      const paramsData = JSON.parse(JSON.stringify(this.paramsData))
+      this.loadData = this.formatData(paramsData.rightList || [])
+      this.unLoadData = this.formatData(paramsData.errorList || [])
+      console.log(this.loadData)
+      console.log(this.unLoadData)
+    },
+    // 确认导入
+    handleSubmit () {
+      if (this.paramsData.rightList.length == 0) {
+        this.$message.warning('没有可导入的发货单!')
+      } else {
+        const data = this.paramsData.rightList
+        this.bloading = true
+        sendBillInsertBatch(data).then(res => {
+          if (res.status == 200) {
+            this.isShow = false
+            this.$emit('ok')
+          }
+          this.bloading = false
+        })
+      }
+    },
+    // 错误项
+    handleError () {
+      const _this = this
+      if (_this.paramsData.errorList.length < 1) {
+        _this.$message.info('暂无错误项!')
+        return
+      }
+      _this.bloading = true
+      hdExportExcel(exportImportError, _this.paramsData.errorList, '发货单导出错误项', function () {
+        _this.bloading = false
+      })
+    }
+  },
+  watch: {
+    //  父页面传过来的弹框状态
+    openModal (newValue, oldValue) {
+      this.isShow = newValue
+    },
+    //  重定义的弹框状态
+    isShow (newValue, oldValue) {
+      if (!newValue) {
+        this.$emit('close')
+        this.loadData = []
+        this.unLoadData = []
+      } else {
+        this.getData()
+      }
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+  .chooseImport-modal{
+    .chooseImport-con{
+      .red{
+        color: #f30;
+      }
+      .btn-con{
+        text-align: center;
+        margin: 30px 0 20px;
+        .button-cancel,.button-error{
+          font-size: 12px;
+        }
+      }
+    }
+  }
+</style>

+ 199 - 0
src/views/salesManagement/sendOutOrder/importGuideModal.vue

@@ -0,0 +1,199 @@
+<template>
+  <a-modal
+    centered
+    class="importGuide-modal"
+    :footer="null"
+    :maskClosable="false"
+    title="导入费用明细"
+    v-model="isShow"
+    @cancel="isShow=false"
+    :width="800">
+    <div class="importGuide-con">
+      <div class="explain-con">
+        <div class="explain-item">
+          <div class="explain-tit">
+            <span>1</span>准备导入
+          </div>
+          <ul>
+            <li>1) 请先下载导入模板,模板中已标示出必填项</li>
+            <li>2) 如果物流单号相同,则视为同一个发货单</li>
+            <li>3) 同一个发货单可有多个不同类型的类型,包括易损件、电池、机油</li>
+          </ul>
+          <a-button type="link" icon="download" style="padding: 0 0 0 23px;" @click="handleExport">下载导入模板</a-button>
+        </div>
+        <div class="explain-item">
+          <div class="explain-tit">
+            <span>2</span>上传数据文件
+          </div>
+          <p>目前支持的文件类型*.xls,*.xlsx.</p>
+          <div style="overflow: hidden;padding-left: 23px;">
+            <Upload
+              id="importGuide-attachList"
+              ref="importUpload"
+              :maxNums="1"
+              fileType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel"
+              uploadType="attach"
+              :action="attachAction"
+              :uploadParams="uploadParams"
+              upText="选择导入文件"
+              @remove="resetSearchForm"
+              @change="changeImport"></Upload>
+          </div>
+        </div>
+      </div>
+      <!-- 按钮 -->
+      <div class="btn-con">
+        <a-button
+          type="primary"
+          id="importGuide-nextStep"
+          size="large"
+          class="button-primary"
+          @click="handlerNextStep"
+          style="padding: 0 60px;">下一步</a-button>
+        <a-button
+          id="importGuide-cancel"
+          size="large"
+          class="button-cancel"
+          @click="isShow=false"
+          style="padding: 0 60px;margin-left: 15px;">取消</a-button>
+      </div>
+    </div>
+    <!-- 导入 -->
+    <chooseImportModal :openModal="openImportModal" :paramsData="paramsData" @close="handleClose" @ok="hanldeOk" />
+  </a-modal>
+</template>
+
+<script>
+import ChooseImportModal from './chooseImportModal.vue'
+import { Upload } from '@/components'
+export default {
+  name: 'ImportGuideModal',
+  components: { ChooseImportModal, Upload },
+  props: {
+    openModal: { //  弹框显示状态
+      type: Boolean,
+      default: false
+    },
+    params: {
+      type: Object,
+      default: null
+    }
+  },
+  data () {
+    return {
+      isShow: this.openModal, //  是否打开弹框
+      openImportModal: false, //  导入
+      attachAction: process.env.VUE_APP_API_BASE_URL + '/sendBill/importSendBill',
+      paramsData: null,
+      uploadParams: {
+        savePathType: 'local'
+      }
+    }
+  },
+  methods: {
+    // 清空数据
+    resetSearchForm () {
+      this.$refs.importUpload.setFileList() //  清空导入文件
+      this.paramsData = null //  清空上传数据
+    },
+    // 下一步
+    handlerNextStep () {
+      if (this.paramsData) {
+        this.openImportModal = true
+      } else {
+        this.$message.warning('添加文件后再进行下一步操作!')
+      }
+    },
+    // 上传文件  change
+    changeImport (file) {
+      // console.log(file, JSON.parse(file))
+      if (file && JSON.parse(file).length > 0) {
+        this.paramsData = Object.assign({}, JSON.parse(file)[0] || null, this.params)
+      } else {
+        this.paramsData = null
+      }
+    },
+    // 导入
+    hanldeOk (obj) {
+      this.$emit('ok', obj)
+      this.isShow = false
+    },
+    // 关闭
+    handleClose () {
+      this.openImportModal = false
+      this.isShow = false
+    },
+    // 下载模板
+    handleExport () {
+      const link = document.createElement('a')
+      link.style.display = 'none'
+      link.href = 'https://jg-ocs.oss-cn-beijing.aliyuncs.com/templ/promo/sendOutOrderImport.xlsx?t=' + new Date().getTime()
+      link.setAttribute('download', '发货单信息导入模板' + '.xlsx')
+      document.body.appendChild(link)
+      link.click()
+      document.body.removeChild(link)
+    }
+  },
+  watch: {
+    //  父页面传过来的弹框状态
+    openModal (newValue, oldValue) {
+      this.isShow = newValue
+    },
+    //  重定义的弹框状态
+    isShow (newValue, oldValue) {
+      if (!newValue) {
+        this.$emit('close')
+        this.resetSearchForm()
+      }
+    }
+  }
+}
+</script>
+
+<style lang="less" scoped>
+  .importGuide-modal{
+    .importGuide-con{
+      .explain-con{
+        .explain-item{
+          margin-bottom: 10px;
+          .explain-tit{
+            font-weight: bold;
+            span{
+              display: inline-block;
+              width: 18px;
+              height: 18px;
+              line-height: 16px;
+              text-align: center;
+              margin-right: 5px;
+              border-radius: 50%;
+              border: 1px solid rgba(0, 0, 0, 0.3);
+            }
+          }
+          p{
+            margin: 8px 0;
+            padding-left: 23px;
+          }
+          ul{
+            list-style: none;
+            padding: 0;
+            padding-left: 23px;
+            margin: 0;
+            li{
+              line-height: 26px;
+            }
+          }
+        }
+        #importGuide-attachList{
+          width: 100%;
+        }
+      }
+      .btn-con{
+        margin: 10px 0 20px;
+        text-align: center;
+        .button-cancel{
+          font-size: 12px;
+        }
+      }
+    }
+  }
+</style>

+ 18 - 4
src/views/salesManagement/sendOutOrder/list.vue

@@ -88,6 +88,10 @@
             </a-col>
           </a-row>
         </a-form>
+        <!-- 操作按钮 -->
+        <div class="table-operator">
+          <a-button type="primary" class="button-error" v-if="$hasPermissions('B_sendOutPlImport')" @click="openGuideModal=true">批量导入</a-button>
+        </div>
       </div>
       <!-- 列表 -->
       <s-table
@@ -127,9 +131,17 @@
       </s-table>
     </a-spin>
     <!-- 发货单详情 -->
-    <detailModal ref="detailModal" :openModal="showTipModal" @cancel="showTipModal=false" @ok="sendSuccess"></detailModal>
+    <detailModal v-drag ref="detailModal" :openModal="showTipModal" @cancel="showTipModal=false" @ok="sendSuccess"></detailModal>
     <!-- 编辑发货单 -->
-    <sendGoodModal ref="sendGoodModal" modalTit="编辑发货单" :openModal="showSendGoodModal" @ok="sendSuccess" @cancel="showSendGoodModal=false"></sendGoodModal>
+    <sendGoodModal
+      v-drag
+      ref="sendGoodModal"
+      modalTit="编辑发货单"
+      :openModal="showSendGoodModal"
+      @ok="sendSuccess"
+      @cancel="showSendGoodModal=false"></sendGoodModal>
+    <!-- 导入发货单 -->
+    <importGuideModal v-drag :openModal="openGuideModal" @close="openGuideModal=false" @ok="resetSearchForm" />
   </a-card>
 </template>
 
@@ -142,17 +154,19 @@ import detailModal from './detailModal.vue'
 import sendGoodModal from '../outboundOrder/sendGoodModal.vue'
 import Area from '@/views/common/area.js'
 import subarea from '@/views/common/subarea.js'
+import ImportGuideModal from './importGuideModal.vue'
 import { sendBillQueryPageList, sendBillExcel } from '@/api/sendBill'
 export default {
   name: 'SendOutOrderList',
   mixins: [commonMixin],
-  components: { STable, VSelect, rangeDate, detailModal, sendGoodModal, Area, subarea },
+  components: { STable, VSelect, rangeDate, detailModal, sendGoodModal, Area, subarea, ImportGuideModal },
   data () {
     return {
       spinning: false,
       exportLoading: false,
       advanced: true, // 高级搜索 展开/关闭
       disabled: false, //  查询、重置按钮是否可操作
+      openGuideModal: false,
       tableHeight: 0,
       time: [],
       sendtime: [],
@@ -284,7 +298,7 @@ export default {
     },
     setTableH () {
       const tableSearchH = this.$refs.tableSearch.offsetHeight
-      this.tableHeight = window.innerHeight - tableSearchH - 210
+      this.tableHeight = window.innerHeight - tableSearchH - 205
     }
   },
   watch: {

+ 9 - 9
src/views/salesManagement/stockPrint/list.vue

@@ -108,7 +108,7 @@
           :rowKey="(record) => record.id"
           :columns="columns"
           :data="loadData"
-          :scroll="{ y:tableHeight, x: 1600 }"
+          :scroll="{ y:tableHeight, x: 1500 }"
           :defaultLoadData="false"
           bordered>
           <!-- 销售单号 -->
@@ -159,9 +159,9 @@
           </template>
         </s-table>
         <!-- 分类打印 -->
-        <sendTypeModal ref="typePrint" :openModal="showTipModal" @ok="handlePrintOk" @close="showTipModal=false" />
+        <sendTypeModal v-drag ref="typePrint" :openModal="showTipModal" @ok="handlePrintOk" @close="showTipModal=false" />
         <!-- 打印记录 -->
-        <recordModal ref="recordModal" modalTit="打印记录" :openModal="showRecordModal" @cancel="showRecordModal=false"></recordModal>
+        <recordModal v-drag ref="recordModal" modalTit="打印记录" :openModal="showRecordModal" @cancel="showRecordModal=false"></recordModal>
         <!-- 查看销售单或备货单详情 -->
         <commonModal
           :modalTit="detailType?'备货单详情':'销售单详情'"
@@ -184,7 +184,7 @@
           </div>
         </commonModal>
         <!-- 发货说明 -->
-        <explainInfoModal mode="view" :rowData="tipData" :openModal="showInfoModal" @close="canselModal"></explainInfoModal>
+        <explainInfoModal v-drag mode="view" :rowData="tipData" :openModal="showInfoModal" @close="canselModal"></explainInfoModal>
       </a-spin>
     </a-card>
   </div>
@@ -263,13 +263,13 @@ export default {
     columns () {
       const arr = [
         { title: '序号', dataIndex: 'no', width: '60px', align: 'center' },
-        { title: '创建时间', dataIndex: 'createDate', width: '120px', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '创建时间', dataIndex: 'createDate', width: '100px', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '销售单号', scopedSlots: { customRender: 'salesBillNo' }, width: '120px', align: 'center' },
         { title: '备货单号', scopedSlots: { customRender: 'dispatchBillNo' }, width: '120px', align: 'center' },
         { title: '发货编号', dataIndex: 'sendNo', width: '70px', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '发货说明', scopedSlots: { customRender: 'explainInfo' }, width: '150px', align: 'center', ellipsis: true },
-        { title: '客户名称', dataIndex: 'buyerName', width: '150px', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true },
-        { title: '收货客户名称', dataIndex: 'receiverName', width: '150px', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true },
+        { title: '发货说明', scopedSlots: { customRender: 'explainInfo' }, width: '100px', align: 'center', ellipsis: true },
+        { title: '客户名称', dataIndex: 'buyerName', width: '100px', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true },
+        { title: '收货客户名称', dataIndex: 'receiverName', width: '100px', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true },
         { title: '产品款数', dataIndex: 'totalCategory', width: '70px', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
         { title: '产品数量', dataIndex: 'totalQty', width: '70px', 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 : '--') } },
@@ -285,7 +285,7 @@ export default {
       ]
       if (this.$hasPermissions('B_isShowPrice')) { //  售价权限
         arr.splice(9, 0, { slots: { title: 'costTitle' }, dataIndex: 'receiveTotalAmount', width: '90px', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } })
-        arr.splice(10, 0, { title: '易损件售价', dataIndex: 'receiveYsjTotalAmount', width: '70px', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } })
+        arr.splice(10, 0, { title: '易损件售价', dataIndex: 'receiveYsjTotalAmount', width: '90px', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } })
         arr.splice(11, 0, { title: '电池售价', dataIndex: 'receiveDcTotalAmount', width: '70px', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } })
         arr.splice(12, 0, { title: '机油售价', dataIndex: 'receiveJyTotalAmount', width: '70px', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } })
       }

+ 1 - 1
src/views/salesReturnManagement/billOfLading/add.vue

@@ -241,7 +241,7 @@ export default {
         { title: '序号', scopedSlots: { customRender: 'no' }, width: '8%', align: 'center' },
         { title: '总部销退单号', scopedSlots: { customRender: 'salesReturnNo' }, width: '15%', align: 'center' },
         { title: '客户名称', dataIndex: 'buyerName', width: '20%', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
-        { title: '申请退货数量', dataIndex: 'totalQty', width: '15%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '申请退货数量', dataIndex: 'totalInitialQty', width: '15%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
         { title: '审核时间', dataIndex: 'auditTime', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '业务状态', dataIndex: 'billStatusDictValue', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '操作', scopedSlots: { customRender: 'action' }, width: '12%', align: 'center' }

+ 1 - 1
src/views/salesReturnManagement/billOfLading/detail.vue

@@ -198,7 +198,7 @@ export default {
         { title: '序号', scopedSlots: { customRender: 'no' }, width: '8%', align: 'center' },
         { title: '总部销退单号', dataIndex: 'salesReturnBillNo', width: '15%', align: 'center' },
         { title: '客户名称', dataIndex: 'buyerName', width: '20%', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
-        { title: '申请退货数量', dataIndex: 'totalQty', width: '15%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '申请退货数量', dataIndex: 'totalInitialQty', width: '15%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
         { title: '审核时间', dataIndex: 'auditTime', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '业务状态', dataIndex: 'billStatusDictValue', width: '15%', align: 'center', customRender: function (text) { return text || '--' } }
       ],

+ 39 - 37
src/views/salesReturnManagement/billOfLading/list.vue

@@ -16,7 +16,7 @@
               </a-form-item>
             </a-col>
             <a-col :md="6" :sm="24">
-              <a-form-item label="关联销退单号">
+              <a-form-item label="总部销退单号">
                 <a-input id="billOfLading-salesReturnBillNo" v-model.trim="queryParam.salesReturnBillNo" allowClear placeholder="请输入总部销退单号"/>
               </a-form-item>
             </a-col>
@@ -96,37 +96,36 @@
         </template>
         <!-- 操作 -->
         <template slot="action" slot-scope="text, record">
-          <a-button
-            size="small"
-            type="link"
-            class="button-warning"
-            v-if="record.state == 'WAIT_AUDIT'&&$hasPermissions('B_auditPickUp')"
-            @click="handleEexamine(record)"
-            id="billOfLading-eexamine-btn">审核进度</a-button>
-          <a-button
-            size="small"
-            type="link"
-            class="button-warning"
-            v-if="record.state == 'AUDIT_REJECT'&&$hasPermissions('B_asginEditPickUp')"
-            @click="handleAgainEdit(record)"
-            id="billOfLading-eexamine-btn">再次编辑</a-button>
-          <a-button
-            size="small"
-            v-if="record.state == 'WAIT_SUBMIT'&&$hasPermissions('B_editPickUp')"
-            type="link"
-            class="button-info"
-            @click="handleEdit(record)"
-            id="billOfLading-edit-btn">编辑</a-button>
-          <a-button
-            size="small"
-            v-if="record.state == 'WAIT_SUBMIT'&&$hasPermissions('B_delPickUp')"
-            type="link"
-            class="button-error"
-            @click="handleDel(record)"
-            id="billOfLading-del-btn">删除</a-button>
-          <span v-if="record.state == 'AUDIT_PASS'">
-            --
-          </span>
+          <div>
+            <a-button
+              size="small"
+              type="link"
+              class="button-warning"
+              v-if="record.state == 'WAIT_AUDIT'&&$hasPermissions('B_auditPickUp')"
+              @click="handleEexamine(record)"
+              id="billOfLading-eexamine-btn">审核进度</a-button>
+            <a-button
+              size="small"
+              type="link"
+              class="button-warning"
+              v-if="record.state == 'AUDIT_REJECT'&&$hasPermissions('B_asginEditPickUp')"
+              @click="handleAgainEdit(record)"
+              id="billOfLading-eexamine-btn">再次编辑</a-button>
+            <a-button
+              size="small"
+              v-if="record.state == 'WAIT_SUBMIT'&&$hasPermissions('B_editPickUp')"
+              type="link"
+              class="button-info"
+              @click="handleEdit(record)"
+              id="billOfLading-edit-btn">编辑</a-button>
+            <a-button
+              size="small"
+              v-if="record.state == 'WAIT_SUBMIT'&&$hasPermissions('B_delPickUp')"
+              type="link"
+              class="button-error"
+              @click="handleDel(record)"
+              id="billOfLading-del-btn">删除</a-button>
+          </div>
         </template>
       </s-table>
     </a-spin>
@@ -293,7 +292,7 @@ export default {
         }
       })
     },
-    resetSearchForm () {
+    resetSearchForm (flag) {
       this.$refs.rangeCreateDate.resetDate()
       if (this.advanced) {
         this.$refs.rangeExamineDate.resetDate()
@@ -307,7 +306,7 @@ export default {
       this.queryParam.senderSn = undefined
       this.queryParam.applyPersonSn = undefined
       this.queryParam.logisticsPoint = undefined
-      this.queryParam.salesReturnBillNo = ''
+      this.queryParam.salesReturnBillNo = flag ? this.$route.query.billNo : ''
       this.queryParam.state = undefined
       this.$refs.table.refresh(true)
     },
@@ -335,19 +334,22 @@ export default {
   },
   mounted () {
     if (!this.$store.state.app.isNewTab) { // 页签刷新时调用
+      this.resetSearchForm(!!this.$route.query.billNo)
       this.pageInit()
-      this.resetSearchForm()
     }
   },
   activated () {
     // 如果是新页签打开,则重置当前页面
     if (this.$store.state.app.isNewTab) {
+      this.resetSearchForm(!!this.$route.query.billNo)
       this.pageInit()
-      this.resetSearchForm()
+    } else {
+      this.setTableH()
+      this.resetSearchForm(!!this.$route.query.billNo)
     }
     // 仅刷新列表,不重置页面
     if (this.$store.state.app.updateList) {
-      this.pageInit()
+      this.setTableH()
       this.$refs.table.refresh()
     }
   },

+ 4 - 4
src/views/salesReturnManagement/billOfLading/selectXtModal.vue

@@ -106,7 +106,7 @@ export default {
         { title: '序号', dataIndex: 'no', width: '8%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '总部销退单号', scopedSlots: { customRender: 'salesReturnBillNo' }, width: '15%', align: 'center' },
         { title: '客户名称', dataIndex: 'buyerName', width: '20%', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
-        { title: '申请退货数量', dataIndex: 'totalQty', width: '15%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '申请退货数量', dataIndex: 'totalInitialQty', width: '15%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
         { title: '审核时间', dataIndex: 'auditTime', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '业务状态', dataIndex: 'billStatusDictValue', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '操作', scopedSlots: { customRender: 'action' }, width: '12%', align: 'center' }
@@ -174,10 +174,10 @@ export default {
         buyerSn: undefined
       }
       this.orginData = []
-      this.$refs.dealerSubareaScopeList.resetForm()
-      if (this.$refs.table) {
+      this.$nextTick(() => {
+        this.$refs.dealerSubareaScopeList.resetForm()
         this.$refs.table.refresh(true)
-      }
+      })
     }
   },
   watch: {

+ 1 - 0
src/views/salesReturnManagement/custConfirm/list.vue

@@ -172,6 +172,7 @@
     </a-spin>
     <!-- 设置退货单价 -->
     <setPriceModal
+      v-drag
       ref="setPriceModal"
       modalTit="设置退货单价"
       :chooseData="chooseData"

+ 45 - 5
src/views/salesReturnManagement/pickUp/list.vue

@@ -36,6 +36,18 @@
                   <dealerSubareaScopeList placeholder="请输入客户名称搜索" ref="dealerSubareaScopeList" id="pickUp-senderSn" @change="custChange" />
                 </a-form-item>
               </a-col>
+              <a-col :md="6" :sm="24">
+                <a-form-item label="状态">
+                  <v-select
+                    v-model="queryParam.state"
+                    ref="state"
+                    id="pickUp-state"
+                    code="PICK_UP_STATE"
+                    :notIn="['WAIT_SUBMIT','WAIT_AUDIT','AUDIT_REJECT']"
+                    placeholder="请选择状态"
+                  ></v-select>
+                </a-form-item>
+              </a-col>
             </template>
             <a-col :md="6" :sm="24">
               <span class="table-page-search-submitButtons">
@@ -80,9 +92,16 @@
             size="small"
             type="link"
             class="button-info"
-            v-if="record.state == 'AUDIT_PASS'&&$hasPermissions('M_detailPickUp')"
+            v-if="(record.state == 'AUDIT_PASS'||record.state == 'FINISH')&&$hasPermissions('M_detailPickUp')"
             @click="handleDetail(record)"
             id="pickUp-detail-btn">详情</a-button>
+          <a-button
+            size="small"
+            type="link"
+            class="button-error"
+            v-if="record.state == 'AUDIT_PASS'&&$hasPermissions('B_pickUp')"
+            @click="handlePickUp(record)"
+            id="pickUp-detail-btn">提货</a-button>
         </template>
       </s-table>
     </a-spin>
@@ -96,7 +115,7 @@ import dealerSubareaScopeList from '@/views/common/dealerSubareaScopeList.vue'
 import employee from '../../expenseManagement/expenseReimbursement/employee.js'
 import logisticsPoint from '../billOfLading/logisticsPoint'
 import rangeDate from '@/views/common/rangeDate.vue'
-import { pickUpQueryPage } from '@/api/pickUp'
+import { pickUpQueryPage, pickUpFinish } from '@/api/pickUp'
 export default {
   name: 'PickUpList',
   mixins: [commonMixin],
@@ -112,7 +131,7 @@ export default {
     return {
       spinning: false,
       // 高级搜索 展开/关闭
-      advanced: false,
+      advanced: true,
       tableHeight: 0,
       disabled: false, //  查询、重置按钮是否可操作
       // 查询参数
@@ -124,7 +143,8 @@ export default {
         salesReturnBillNo: undefined, //  总部销退单号
         logisticsPoint: undefined, // 物流点
         senderSn: undefined, //  发货人
-        state: 'AUDIT_PASS' // 业务状态
+        state: 'AUDIT_PASS', // 业务状态
+        stateList: ['FINISH', 'AUDIT_PASS']
       },
       // 加载数据方法 必须为 Promise 对象
       loadData: parameter => {
@@ -181,6 +201,25 @@ export default {
     handleDetail (row) {
       this.$router.push({ name: 'billOfLadingDetail', params: { sn: row.pickUpSn } })
     },
+    // 提货
+    handlePickUp (row) {
+      const _this = this
+      this.$confirm({
+        title: '提示',
+        content: '确认已经提货吗?',
+        centered: true,
+        onOk () {
+          _this.spinning = true
+          pickUpFinish({ pickUpSn: row.pickUpSn }).then(res => {
+            _this.spinning = false
+            if (res.status == 200) {
+              _this.$message.info(res.message)
+              _this.$refs.table.refresh()
+            }
+          })
+        }
+      })
+    },
     resetSearchForm () {
       if (this.advanced) {
         this.$refs.rangeExamineDate.resetDate()
@@ -193,7 +232,8 @@ export default {
       this.queryParam.applyPersonSn = undefined
       this.queryParam.logisticsPoint = undefined
       this.queryParam.salesReturnBillNo = ''
-      this.queryParam.state = 'AUDIT_PASS'
+      this.queryParam.state = undefined
+      this.queryParam.stateList = ['FINISH', 'AUDIT_PASS']
       this.$refs.table.refresh(true)
     },
     pageInit () {

+ 13 - 2
src/views/salesReturnManagement/receiveCheck/chooseProductsModal.vue

@@ -12,7 +12,13 @@
       <div class="products-con">
         <div>
           <!-- 查询配件列表 -->
-          <queryPart ref="partQuery" :isShowPrice="isShowPrice" :returnReasonList="returnReasonList" :newLoading="isInster" @add="saveProduct"></queryPart>
+          <queryPart
+            ref="partQuery"
+            :showReceiveQty="true"
+            :isShowPrice="isShowPrice"
+            :returnReasonList="returnReasonList"
+            :newLoading="isInster"
+            @add="saveProduct"></queryPart>
         </div>
       </div>
     </a-spin>
@@ -59,6 +65,10 @@ export default {
       if (this.isInster) {
         return
       }
+      if (!row.receiveQty) {
+        this.$message.info('请输入仓库实收数量')
+        return
+      }
       if (!row.returnReason) {
         this.$message.info('请选择退货原因')
         return
@@ -68,7 +78,8 @@ export default {
         'cost': row.lastStockCost,
         'returnReason': row.returnReason,
         'productSn': row.productSn,
-        'initialQty': row.qty
+        'initialQty': row.qty,
+        'receiveQty': row.receiveQty
       }
       this.isInster = true
       this.$emit('addProduct', params)

+ 39 - 1
src/views/salesReturnManagement/receiveCheck/receiving.vue

@@ -42,6 +42,20 @@
           :scroll="{ y: tableHeight }"
           :defaultLoadData="false"
           bordered>
+          <!-- 申请退货数量 -->
+          <template slot="initialQty" slot-scope="text, record">
+            <a-input-number
+              size="small"
+              v-if="record.addFlag == '1'&&record.addType == 'WAREHOUSE_RECEIVE'"
+              v-model="record.initialQty"
+              :precision="0"
+              :min="0"
+              :max="999999"
+              @blur="e => onCellBlurInitialQty(e.target.value, record)"
+              placeholder="请输入"
+              style="width: 100%;" />
+            <span v-else>{{ record.initialQty }}</span>
+          </template>
           <!-- 仓库实收数量 -->
           <template slot="receiveQty" slot-scope="text, record">
             <a-input-number
@@ -144,6 +158,7 @@ export default {
             for (var i = 0; i < data.list.length; i++) {
               data.list[i].no = no + i + 1
               data.list[i].receiveQtyBackups = data.list[i].receiveQty
+              data.list[i].initialQtyBackups = data.list[i].initialQty
               data.list[i].returnReasonBackups = data.list[i].returnReason
             }
             this.disabled = false
@@ -165,7 +180,7 @@ export default {
         { title: '序号', dataIndex: 'no', width: '4%', align: 'center' },
         { title: '产品编码', dataIndex: 'productEntity.code', align: 'center', width: '10%', customRender: function (text) { return text || '--' } },
         { title: '产品名称', dataIndex: 'productEntity.name', width: '20%', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true },
-        { title: '申请退货数量', dataIndex: 'initialQty', align: 'center', width: '10%', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '申请退货数量', dataIndex: 'initialQty', align: 'center', width: '10%', scopedSlots: { customRender: 'initialQty' } },
         { title: '仓库实收数量', dataIndex: 'receiveQty', align: 'center', width: '10%', scopedSlots: { customRender: 'receiveQty' } },
         { title: '单位', dataIndex: 'productEntity.unit', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
         // { title: '退货单价', dataIndex: 'price', align: 'center', width: '10%', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
@@ -251,6 +266,29 @@ export default {
         }
       })
     },
+    // 申请退货数量修改
+    onCellBlurInitialQty (val, record) {
+      //  光标移出,值发生改变再调用编辑接口
+      if (val && val != record.initialQtyBackups) {
+        this.loading = true
+        this.spinning = true
+        salesReturnDetailUpdateReceiveQty({
+          salesReturnDetailSn: record.salesReturnDetailSn,
+          initialQty: val
+        }).then(res => {
+          if (res.status == 200) {
+            this.resetSearchForm(false)
+            this.$message.success(res.message)
+          } else {
+            record.initialQty = record.initialQtyBackups
+          }
+          this.loading = false
+          this.spinning = false
+        })
+      } else {
+        record.initialQty = record.initialQtyBackups
+      }
+    },
     // 仓库实收数量修改
     onCellBlurReceiveQty (val, record) {
       //  光标移出,值发生改变再调用编辑接口

+ 80 - 0
src/views/salesReturnManagement/salesReturn/auditDetail.vue

@@ -0,0 +1,80 @@
+<template>
+  <div>
+    <p>说明:以下信息来自钉钉</p>
+    <a-spin :spinning="spinning" tip="Loading...">
+      <div style="margin-bottom:10px;" v-for="item in list" :key="item.businessId">
+        <div style="margin-bottom:10px;font-weight:bold;">提审时间:{{ item.createTime }}</div>
+        <a-table
+          class="sTable fixPagination"
+          ref="table"
+          size="small"
+          :rowKey="(record) => record.businessId"
+          :columns="columns"
+          :dataSource="item.taskVOList"
+          :scroll="{ y: 500 }"
+          :pagination="false"
+          bordered>
+        </a-table>
+      </div>
+    </a-spin>
+  </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { getProcessInstanceList } from '@/api/expenseManagement'
+export default {
+  name: 'AuditDetail',
+  components: { STable },
+  props: {
+    openModal: {
+      type: Boolean,
+      default: false
+    },
+    itemSn: {
+      type: [Number, String],
+      default: ''
+    },
+    businessType: {
+      type: [Number, String],
+      default: ''
+    }
+  },
+  data () {
+    return {
+      spinning: false,
+      columns: [{ title: '序号', dataIndex: 'no', width: '8%', align: 'center' },
+        { title: '人员姓名', width: '12%', dataIndex: 'userName', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '人员类型', dataIndex: 'userType', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '状态', dataIndex: 'state', width: '10%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '审批意见', dataIndex: 'remark', width: '20%', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
+        { title: '附件', dataIndex: 'hasAttachments', width: '20%', align: 'center', customRender: function (text) { return text != '0' ? '请在钉钉中查看附件内容' : '--' } },
+        { title: '操作时间', dataIndex: 'date', width: '20%', align: 'center', customRender: function (text) { return text || '--' } }],
+      list: []
+    }
+  },
+  methods: {
+    clearTable () {
+      this.list = []
+    },
+    refresh () {
+      this.getData()
+    },
+    getData () {
+      this.spinning = true
+      getProcessInstanceList({ businessType: this.businessType, businessSn: this.itemSn }).then(res => {
+        if (res.status == 200) {
+          this.list = res.data
+          this.list.map(item => {
+            item.taskVOList.map((a, index) => a.no = index + 1)
+          })
+        }
+        this.spinning = false
+      })
+    }
+  }
+}
+</script>
+
+<style>
+</style>

+ 15 - 0
src/views/salesReturnManagement/salesReturn/chooseDepartUserModal.vue

@@ -81,6 +81,7 @@
 import { VSelect, Upload } from '@/components'
 import dingDepartUser from '@/views/common/dingDepartUser.js'
 import employee from '@/views/expenseManagement/expenseReimbursement/employee.js'
+import { sign } from 'core-js/fn/number'
 export default {
   name: 'ChooseDepartUserModal',
   components: { dingDepartUser, employee, VSelect, Upload },
@@ -173,6 +174,20 @@ export default {
         }
       })
     },
+    getDetail (data) {
+      this.form = Object.assign(this.form, {
+        salesReturnType: data.salesReturnType,
+        applyPersonSn: data.applyPersonSn
+      })
+      // 获取附件列表
+      this.form.attachmentList = ''
+      this.attachList = data.attachmentList
+      this.$nextTick(() => {
+        if (this.attachList.length) {
+          this.$refs.attachList.setFileList(this.attachList)
+        }
+      })
+    },
     resetForm () {
       this.$nextTick(() => {
         this.$refs.ruleForm.resetFields()

+ 2 - 2
src/views/salesReturnManagement/salesReturn/detail.vue

@@ -51,7 +51,7 @@
               <a-descriptions-item label="创建时间">{{ detailData&&detailData.createDate || '--' }}</a-descriptions-item>
               <a-descriptions-item label="审核时间">{{ detailData&&detailData.auditTime || '--' }}</a-descriptions-item>
               <a-descriptions-item label="退货类型">{{ detailData&&detailData.salesReturnTypeDictValue || '--' }}</a-descriptions-item>
-              <a-descriptions-item label="附件" :span="3">
+              <a-descriptions-item label="附件" v-if="detailData" :span="3">
                 <a target="_blank" style="color: #00aaff;text-decoration: underline;margin-right: 15px;" :href="item.filePath" v-for="item in detailData.attachmentList" :key="item.id">
                   {{ item.fileName }}
                 </a>
@@ -120,7 +120,7 @@
 import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import { printFun, exportExcel } from '@/libs/JGPrint.js'
-import auditDetail from '@/views/common/auditDetail.vue'
+import auditDetail from './auditDetail.vue'
 import printModal from './printModal.vue'
 import { salesReturnDetail, salesReturnChangeLogList, salesReturnPrint, salesReturnExport } from '@/api/salesReturn'
 import { salesReturnDetailList } from '@/api/salesReturnDetail'

+ 23 - 31
src/views/salesReturnManagement/salesReturn/list.vue

@@ -129,6 +129,10 @@
           </div>
           <div v-else>{{ record.salesReturnBillNo }}</div>
         </template>
+        <!-- 提货单 -->
+        <template slot="pickUpSalesReturnNum" slot-scope="text, record">
+          <span class="link-bule" @click="handleBillOfLadingDetail(record)">{{ record.pickUpSalesReturnNum }}</span>
+        </template>
         <!-- 操作 -->
         <template slot="action" slot-scope="text, record">
           <div>
@@ -155,7 +159,7 @@
               id="salesReturn-edit-btn">{{ record.salesReturnBillSource == 'SALES' ? '编辑' : '改单' }}</a-button>
             <a-button
               size="small"
-              v-if="record.billStatus == 'WAIT_SUBMIT' && $hasPermissions('B_salesReturnDel')"
+              v-if="(record.billStatus == 'WAIT_SUBMIT'|| record.billStatus == 'AUDIT_REJECT') && $hasPermissions('B_salesReturnDel')"
               type="link"
               class="button-error"
               @click="handleDel(record)"
@@ -164,9 +168,9 @@
               size="small"
               type="link"
               class="button-info"
-              v-if="record.salesReturnBillSource == 'SALES'&&record.billStatus == 'AUDIT_REJECT'&& $hasPermissions('B_salesReturnAgainEdit')"
-              @click="handleAgainEdit(record)"
-              id="salesReturn-edit-btn">再次编辑</a-button>
+              v-if="record.billStatus == 'AUDIT_REJECT'&& $hasPermissions('B_salesReturnAgainSubmit')"
+              @click="handleEdit(record)"
+              id="salesReturn-edit-btn">再次提交</a-button>
             <a-button
               size="small"
               type="link"
@@ -188,9 +192,9 @@
     <!-- 选择客户弹框 -->
     <choose-custom-modal :show="openModal" @ok="handleEdit" @cancel="openModal=false"></choose-custom-modal>
     <!-- 审核进度 -->
-    <verifyModal :openModal="visibleAudit" :itemSn="auditInfo&&auditInfo.salesReturnBillSn" @close="visibleAudit=false"></verifyModal>
+    <verifyModal v-drag :openModal="visibleAudit" :itemSn="auditInfo&&auditInfo.salesReturnBillSn" @close="visibleAudit=false"></verifyModal>
     <!-- 选择审核人员 -->
-    <chooseDepartUserModal :openModal="openDepartUserModal" @close="openDepartUserModal=false" @submit="handleSubmit"></chooseDepartUserModal>
+    <chooseDepartUserModal v-drag :openModal="openDepartUserModal" @close="openDepartUserModal=false" @submit="handleSubmit"></chooseDepartUserModal>
   </a-card>
 </template>
 
@@ -280,8 +284,8 @@ export default {
     columns () {
       const arr = [
         { title: '编号', dataIndex: 'no', width: '4%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '创建时间', dataIndex: 'createDate', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '单据来源', dataIndex: 'salesReturnBillSourceDictValue', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '创建时间', dataIndex: 'createDate', width: '5%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '单据来源', dataIndex: 'salesReturnBillSourceDictValue', width: '5%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '是否同步给客户', dataIndex: 'syncFlag', width: '5%', align: 'center', customRender: function (text) { return text ? ['否', '是'][text] : '--' } },
         { title: '客户采退申请单号', dataIndex: 'purchaseReturnApplyNo', width: '8%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '总部销退单号', scopedSlots: { customRender: 'salesReturnBillNo' }, width: '10%', align: 'center' },
@@ -292,8 +296,9 @@ export default {
         { title: '良品数量', dataIndex: 'totalGoodQty', width: '5%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
         { title: '返库数量', dataIndex: 'totalBackStockQty', width: '5%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
         { title: '实际退货金额', dataIndex: 'totalAmount', width: '5%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
-        { title: '审核时间', dataIndex: 'auditTime', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '业务状态', dataIndex: 'billStatusDictValue', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '审核时间', dataIndex: 'auditTime', width: '5%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '提货单', dataIndex: 'pickUpSalesReturnNum', scopedSlots: { customRender: 'pickUpSalesReturnNum' }, width: '4%', align: 'center' },
+        { title: '业务状态', dataIndex: 'billStatusDictValue', width: '5%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '操作', scopedSlots: { customRender: 'action' }, width: '8%', align: 'center' }
       ]
       return arr
@@ -331,31 +336,18 @@ export default {
     handleEdit (row) {
       this.$router.push({ name: 'salesReturnEdit', params: { sn: row.salesReturnBillSn, buyerSn: row.buyerSn } })
     },
-    // 再次编辑
-    handleAgainEdit (row) {
-      const _this = this
-      this.$confirm({
-        title: '提示',
-        content: '系统将自动生成一个新的销售退货单,与原单据内容相同。确认再次编辑吗?',
-        centered: true,
-        onOk () {
-          _this.spinning = true
-          updateAgain({ salesReturnBillSn: row.salesReturnBillSn }).then(res => {
-            if (res.status == 200) {
-              _this.$message.success(res.message)
-              _this.$refs.table.refresh()
-              _this.spinning = false
-            } else {
-              _this.spinning = false
-            }
-          })
-        }
-      })
-    },
     // 详情
     handleDetail (row) {
       this.$router.push({ name: 'salesReturnDetail', params: { sn: row.salesReturnBillSn } })
     },
+    // 提货单查看
+    handleBillOfLadingDetail (row) {
+      if (row.pickUpSalesReturnNum == '0单') {
+        this.$message.info('此销售退货单没有提货单')
+      } else {
+        this.$router.push({ name: 'billOfLadingList', query: { billNo: row.salesReturnBillNo } })
+      }
+    },
     // 删除
     handleDel (row) {
       const _this = this

+ 26 - 1
src/views/salesReturnManagement/salesReturn/queryPart.vue

@@ -42,6 +42,19 @@
             size="small"
             v-model="record.qty"
             :precision="0"
+            :min="showReceiveQty?0:1"
+            :max="999999"
+            style="width: 100%;"
+            placeholder="请输入" />
+        </div>
+      </template>
+      <!-- 仓库实收数量 -->
+      <template slot="receiveQty" slot-scope="text, record">
+        <div @dblclick.stop>
+          <a-input-number
+            size="small"
+            v-model="record.receiveQty"
+            :precision="0"
             :min="1"
             :max="999999"
             style="width: 100%;"
@@ -91,6 +104,11 @@ export default {
     isShowPrice: {
       type: Boolean,
       default: true
+    },
+    // 是否显示仓库实收数量
+    showReceiveQty: {
+      type: Boolean,
+      default: false
     }
   },
   data () {
@@ -114,7 +132,8 @@ export default {
             const no = (data.pageNo - 1) * data.pageSize
             for (var i = 0; i < data.list.length; i++) {
               data.list[i].no = no + i + 1
-              data.list[i].qty = 1
+              data.list[i].qty = this.showReceiveQty ? 0 : 1
+              data.list[i].receiveQty = 1
             }
             this.disabled = false
           }
@@ -156,8 +175,14 @@ export default {
         { title: '退货原因', dataIndex: 'returnReason', width: '10%', align: 'center', scopedSlots: { customRender: 'returnReason' } },
         { slots: { title: 'customTitle' }, scopedSlots: { customRender: 'action' }, width: '10%', align: 'center' }
       ]
+      let i = 5
       if (this.$hasPermissions('B_isShowPrice') && this.isShowPrice) { //  售价权限
         arr.splice(4, 0, { title: '当前售价', dataIndex: 'productPrice', width: '9%', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } })
+        i = 6
+      }
+      // 实收数量是否显示
+      if (this.showReceiveQty) {
+        arr.splice(i, 0, { title: '仓库实收数量', dataIndex: 'receiveQty', width: '9%', align: 'center', scopedSlots: { customRender: 'receiveQty' } })
       }
       this.columns = arr
       this.resetSearchForm()

+ 4 - 1
src/views/salesReturnManagement/salesReturn/salesReturnEdit.vue

@@ -130,7 +130,7 @@
         id="salesReturn-handleSubmit">提交</a-button>
     </div>
     <!-- 选择审核人员 -->
-    <chooseDepartUserModal :openModal="openDepartUserModal" @close="openDepartUserModal=false" @submit="handleSubmit"></chooseDepartUserModal>
+    <chooseDepartUserModal ref="chooseDepart" :openModal="openDepartUserModal" @close="openDepartUserModal=false" @submit="handleSubmit"></chooseDepartUserModal>
     <!-- 导入产品 -->
     <importGuideModal :openModal="openGuideModal" :params="{salesReturnBillSn: $route.params.sn}" @close="closeGuideModel" @ok="hanldeOk" />
     <!-- 批量设置退货原因 -->
@@ -418,6 +418,9 @@ export default {
           this.$message.warning('请输入退货原因!')
         } else {
           this.openDepartUserModal = true
+          if (this.ordeDetail.billStatus == 'AUDIT_REJECT') {
+            this.$refs.chooseDepart.getDetail(this.ordeDetail)
+          }
         }
       } else {
         this.$message.warning('请添加产品!')

+ 5 - 1
src/views/salesReturnManagement/salesReturn/verifyModal.vue

@@ -12,7 +12,7 @@
 </template>
 
 <script>
-import auditDetail from '@/views/common/auditDetail.vue'
+import auditDetail from './auditDetail.vue'
 export default {
   name: 'VerifyModal',
   components: { auditDetail },
@@ -39,6 +39,10 @@ export default {
       if (!nVal) {
         this.$emit('close')
         this.$refs.auditDetail.clearTable()
+      } else {
+        this.$nextTick(() => {
+          this.$refs.auditDetail.refresh()
+        })
       }
     }
   }

+ 2 - 3
src/views/setting/notice/list.vue

@@ -49,7 +49,7 @@
       @changePageSize="changePageSize"
       @changePage="changePage" />
     <!-- 公告详情 -->
-    <notice-detail-modal :openModal="openModal" :itemId="itemId" @close="closeModal" />
+    <notice-detail-modal v-drag :openModal="openModal" :itemId="itemId" @close="closeModal" />
   </a-card>
 </template>
 
@@ -196,7 +196,7 @@ export default {
     },
     setTableH () {
       const tableSearchH = this.$refs.tableSearch.offsetHeight
-      this.tableHeight = window.innerHeight - tableSearchH - 195
+      this.tableHeight = window.innerHeight - tableSearchH - 240
     }
   },
   watch: {
@@ -239,6 +239,5 @@ export default {
 </script>
 <style lang="less">
   .noticeList-wrap{
-    margin: -12px -12px 0px;
   }
 </style>

+ 1 - 1
vue.config.js

@@ -107,7 +107,7 @@ const vueConfig = {
     // If you want to turn on the proxy, please remove the mockjs /src/main.jsL11
     proxy: {
       '/api': {
-        // target: 'http://192.168.0.183:8602/ocs-admin',
+        target: 'http://192.168.0.215:8602/ocs-admin',
         // target: 'https://t.ocs.360arrow.com/ocs-admin', //  Á·Ï°
         target: 'http://p.ocs.360arrow.com/ocs-admin', //  Ô¤·¢²¼
         ws: false,