chenrui 6 tháng trước cách đây
mục cha
commit
0c300a49ac

+ 40 - 25
src/api/dealer.js

@@ -6,7 +6,7 @@ export const dealerDetailBySn = (params) => {
     url: `/dealer/findBySn/${params.sn}`,
     data: params,
     method: 'get',
-    headers:{
+    headers: {
       'module': encodeURIComponent('经销商详情')
     }
   })
@@ -17,7 +17,7 @@ export const dealerTypeTreeList = (params) => {
     url: `/dealerType/queryTree`,
     data: params,
     method: 'post',
-    headers:{
+    headers: {
       'module': encodeURIComponent('查询商户类型')
     }
   })
@@ -28,7 +28,7 @@ export const dealerFindUpdateInfoBySn = (params) => {
     url: `/dealer/findUpdateInfoBySn/${params.sn}`,
     data: params,
     method: 'get',
-    headers:{
+    headers: {
       'module': encodeURIComponent('修改过的经销商详情')
     }
   })
@@ -53,7 +53,7 @@ export const dealerQueryList = (params) => {
     url: url,
     data: params,
     method: 'post',
-    headers:{
+    headers: {
       'module': encodeURIComponent('经销商列表查询')
     }
   })
@@ -67,7 +67,7 @@ export const dealerSubareaScopeList = (params) => {
     url: url,
     data: params,
     method: 'post',
-    headers:{
+    headers: {
       'module': encodeURIComponent('经销商列表查询')
     }
   })
@@ -78,7 +78,7 @@ export const dealerSave = (params) => {
     url: '/dealer/save',
     data: params,
     method: 'post',
-    headers:{
+    headers: {
       'module': encodeURIComponent('保存')
     }
   })
@@ -90,7 +90,7 @@ export const dealerExport = (params) => {
     data: params,
     method: 'post',
     responseType: 'blob',
-    headers:{
+    headers: {
       'module': encodeURIComponent('导出')
     }
   })
@@ -100,7 +100,7 @@ export const dealerAudit = (params) => {
   return axios({
     url: `/dealer/audit/${params.dealerAuditSn}/${params.auditState}`,
     method: 'get',
-    headers:{
+    headers: {
       'module': encodeURIComponent('审核')
     }
   })
@@ -111,7 +111,7 @@ export const updateDealerLevel = (params) => {
   return axios({
     url: `/dealer/updateDealerLevel/${params.dealerSn}/${params.dealerLevel}`,
     method: 'get',
-    headers:{
+    headers: {
       'module': encodeURIComponent('级别设置')
     }
   })
@@ -123,7 +123,7 @@ export const updateCooperate = (params) => {
     url: '/dealer/updateCooperate',
     data: params,
     method: 'post',
-    headers:{
+    headers: {
       'module': encodeURIComponent('合作设置')
     }
   })
@@ -138,7 +138,7 @@ export const dealerUserList = (params) => {
     url: url,
     data: params,
     method: 'post',
-    headers:{
+    headers: {
       'module': encodeURIComponent('列表查询')
     }
   })
@@ -148,7 +148,7 @@ export const dealerUserDetail = (params) => {
   return axios({
     url: `/dealer/user/findById/${params.id}`,
     method: 'get',
-    headers:{
+    headers: {
       'module': encodeURIComponent('详情查看')
     }
   })
@@ -158,7 +158,7 @@ export const dealerUserDel = (params) => {
   return axios({
     url: `/dealer/user/delete/${params.id}`,
     method: 'get',
-    headers:{
+    headers: {
       'module': encodeURIComponent('删除')
     }
   })
@@ -168,7 +168,7 @@ export const dealerUserEnable = (params) => {
   return axios({
     url: `/dealer/user/enable/${params.id}/${params.flag}`,
     method: 'get',
-    headers:{
+    headers: {
       'module': encodeURIComponent('启用禁用')
     }
   })
@@ -179,7 +179,7 @@ export const dealerUserChangeP = (params) => {
     url: `/dealer/user/changePWD`,
     data: params,
     method: 'post',
-    headers:{
+    headers: {
       'module': encodeURIComponent('修改密码')
     }
   })
@@ -190,7 +190,7 @@ export const dealerUserResetP = (params) => {
     url: `/dealer/user/resetPwd`,
     data: params,
     method: 'post',
-    headers:{
+    headers: {
       'module': encodeURIComponent('重置密码')
     }
   })
@@ -201,7 +201,7 @@ export const dealerUserSave = (params) => {
     url: `/dealer/user/save`,
     data: params,
     method: 'post',
-    headers:{
+    headers: {
       'module': encodeURIComponent('新增')
     }
   })
@@ -213,7 +213,7 @@ export const getDealerListInfo = (params) => {
     url: `/dealer/queryBySns`,
     data: params,
     method: 'post',
-    headers:{
+    headers: {
       'module': encodeURIComponent('选择经销商')
     }
   })
@@ -226,7 +226,7 @@ export const dealerUpsList = (params) => {
     url: url,
     data: params,
     method: 'post',
-    headers:{
+    headers: {
       'module': encodeURIComponent('经销商差价设置列表')
     }
   })
@@ -239,18 +239,18 @@ export const dealerUpsDelete = (params) => {
     url: url,
     data: params,
     method: 'post',
-    headers:{
+    headers: {
       'module': encodeURIComponent('经销商差价设置删除')
     }
   })
 }
-// 差价品类列表 
+// 差价品类列表
 export const dealerUpsPlTree = (params) => {
   return axios({
     url: `/dealerUps/queryWaitingData`,
     data: params,
     method: 'post',
-    headers:{
+    headers: {
       'module': encodeURIComponent('经销商差价设置品类树数据')
     }
   })
@@ -262,7 +262,7 @@ export const dealerUpsCreate = (params) => {
     url: `/dealerUps/create`,
     data: params,
     method: 'post',
-    headers:{
+    headers: {
       'module': encodeURIComponent('经销商差价设置保存')
     }
   })
@@ -273,8 +273,23 @@ export const dealerUpsUpdate = (params) => {
     url: `/dealerUps/update`,
     data: params,
     method: 'post',
-    headers:{
+    headers: {
       'module': encodeURIComponent('经销商差价设置编辑')
     }
   })
-}
+}
+
+// 有轮胎(三级分类)的经销商 列表
+export const queryTireDealerPage = (params) => {
+  const url = `/dealer/queryTireDealerPage/${params.pageNo}/${params.pageSize}`
+  delete params.pageNo
+  delete params.pageSize
+  return axios({
+    url: url,
+    data: params,
+    method: 'post',
+    headers: {
+      'module': encodeURIComponent('经销商轮胎列表')
+    }
+  })
+}

+ 53 - 9
src/api/sales.js

@@ -5,7 +5,7 @@ export const supperCodeByVin = (params) => {
   return axios({
     url: `/vinIdentify/queryPartCodeByVin/${params.vin}`,
     method: 'get',
-    headers:{
+    headers: {
       'module': encodeURIComponent('按车架号查询列表')
     }
   })
@@ -17,7 +17,7 @@ export const vinCodeParse = params => {
     method: 'post',
     data: params,
     responseType: 'blob',
-    headers:{
+    headers: {
       'module': encodeURIComponent('车架号图片识别')
     }
   })
@@ -29,7 +29,7 @@ export const salesPrint = (params) => {
     url: '/sales/print',
     data: params,
     method: 'post',
-    headers:{
+    headers: {
       'module': encodeURIComponent('销售打印')
     }
   })
@@ -41,7 +41,7 @@ export const salesPrintPreview = (params) => {
     url: '/sales/printPreview',
     data: params,
     method: 'post',
-    headers:{
+    headers: {
       'module': encodeURIComponent('销售打印预览')
     }
   })
@@ -74,18 +74,18 @@ export const salesPromoCount = (params) => {
     method: 'post'
   })
 }
- 
+
 // 销售 详情  打印
 export const salesDetailPrint = params => {
   const url = `/sales/print/${params.priceType}`
-  const id = params.priceType.indexOf('_TYPE')>=0 ? '销售分类打印' : '销售打印'
+  const id = params.priceType.indexOf('_TYPE') >= 0 ? '销售分类打印' : '销售打印'
   delete params.priceType
   return axios.request({
     url: url,
     data: params,
     method: 'post',
     responseType: 'blob',
-    headers:{
+    headers: {
       'module': encodeURIComponent(id)
     }
   })
@@ -99,7 +99,7 @@ export const salesDetailExcel = params => {
     data: params,
     method: 'post',
     responseType: 'blob',
-    headers:{
+    headers: {
       'module': encodeURIComponent('导出')
     }
   })
@@ -112,8 +112,52 @@ export const salesDetailTypeExcel = params => {
     data: params,
     method: 'post',
     responseType: 'blob',
-    headers:{
+    headers: {
       'module': encodeURIComponent('分类导出')
     }
   })
 }
+
+// 销售  详情  选择发货经销商  弹窗列表
+export const querySuperiorDealer = (params) => {
+  return axios({
+    url: '/sales/tire/querySuperiorDealer',
+    data: params,
+    method: 'post'
+  })
+}
+
+// 销售  详情  选择发货经销商  确定
+export const queryTransferDealerStock = (params) => {
+  return axios({
+    url: '/sales/tire/detail/queryTransferDealerStock',
+    data: params,
+    method: 'post'
+  })
+}
+
+// 转单校验
+export const transferVerify = (params) => {
+  return axios({
+    url: '/sales/tire/transferVerify',
+    data: params,
+    method: 'post'
+  })
+}
+
+// 转单
+export const transfer = (params) => {
+  return axios({
+    url: '/sales/tire/transfer',
+    data: params,
+    method: 'post'
+  })
+}
+// 转单审核
+export const transferAudit = (params) => {
+  return axios({
+    url: '/sales/tire/audit',
+    data: params,
+    method: 'post'
+  })
+}

+ 489 - 477
src/config/salesManageService.js

@@ -6,482 +6,494 @@ import {
   PageView
 } from '@/layouts'
 export default {
-        path: '/salesManWarehouse',
-        redirect: '/salesManagement/salesQueryNew',
-        component: PageView,
-        meta: {
-          title: '销售管理',
-          icon: 'account-book',
-          permission: 'M_salesManagement'
+  path: '/salesManWarehouse',
+  redirect: '/salesManagement/salesQueryNew',
+  component: PageView,
+  meta: {
+    title: '销售管理',
+    icon: 'account-book',
+    permission: 'M_salesManagement'
+  },
+  children: [
+    {
+      path: '/salesManagement/salesQueryNew',
+      redirect: '/salesManagement/salesQueryNew/list',
+      name: 'salesQueryNew',
+      component: BlankLayout,
+      meta: {
+        title: '销售单查询',
+        icon: 'monitor',
+        permission: 'M_salesQueryList'
+      },
+      hideChildrenInMenu: true,
+      children: [
+        {
+          path: 'list',
+          name: 'salesQueryNewList',
+          component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/salesQueryNew/list.vue'),
+          meta: {
+            title: '销售单列表',
+            icon: 'monitor',
+            hidden: true,
+            permission: 'M_salesQueryList'
+          }
+        },
+        {
+          path: 'detail/:sn/:pageType',
+          name: 'salesNewDetail',
+          component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/salesQueryNew/detail.vue'),
+          meta: {
+            title: '销售单详情',
+            icon: 'monitor',
+            hidden: true,
+            replaceTab: true,
+            permission: 'B_salesDetail'
+          }
+        },
+        {
+          path: 'detail/:sn/:pageType',
+          name: 'salesNewDetailAudit',
+          component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/salesQueryNew/detail.vue'),
+          meta: {
+            title: '销售单审核',
+            icon: 'monitor',
+            hidden: true,
+            replaceTab: true,
+            permission: 'B_salesAudit'
+          }
+        },
+        {
+          path: 'detail/:sn/:pageType',
+          name: 'salesNewDetailTransfer',
+          component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/salesQueryNew/detail.vue'),
+          meta: {
+            title: '销售单转单',
+            icon: 'monitor',
+            hidden: true,
+            replaceTab: true
+            // permission: 'B_salesTransfer'
+          }
+        },
+        {
+          path: 'add/:sn',
+          name: 'salesNewAdd',
+          component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/salesQueryNew/edit.vue'),
+          meta: {
+            title: '新增销售单',
+            icon: 'monitor',
+            hidden: true,
+            permission: 'B_salesEdit'
+          }
+        },
+        {
+          path: 'edit/:sn',
+          name: 'salesNewEdit',
+          component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/salesQueryNew/edit.vue'),
+          meta: {
+            title: '编辑销售单',
+            icon: 'monitor',
+            hidden: true,
+            permission: 'B_salesEdit'
+          }
+        },
+        {
+          path: 'waitDispatch/:salesBillSn',
+          name: 'waitDispatchNew',
+          component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/waitDispatchNew/edit.vue'),
+          meta: {
+            title: '下推销售单',
+            icon: 'monitor',
+            replaceTab: true,
+            hidden: true,
+            permission: 'B_salesDispatch'
+          }
+        },
+        {
+          path: 'waitCostOrder',
+          name: 'waitCostOrder',
+          component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/waitCostOrder/list.vue'),
+          meta: {
+            title: '待转费用报销单',
+            icon: 'monitor',
+            hidden: true,
+            permission: 'B_salesDispatch'
+          }
+        }
+      ]
+    },
+    {
+      path: '/salesManagement/salesOrderWarehouse',
+      redirect: '/salesManagement/salesOrderWarehouse/list',
+      name: 'salesOrderWarehouse',
+      component: BlankLayout,
+      meta: {
+        title: '仓库销售单',
+        icon: 'vertical-align-bottom',
+        permission: 'M_salesOrderWarehouseList'
+      },
+      hideChildrenInMenu: true,
+      children: [
+        {
+          path: 'list',
+          name: 'salesOrderWarehouseList',
+          component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/salesOrderWarehouse/list.vue'),
+          meta: {
+            title: '仓库销售单列表',
+            icon: 'vertical-align-bottom',
+            hidden: true,
+            permission: 'M_salesOrderWarehouseList'
+          }
         },
-        children: [
-          {
-            path: '/salesManagement/salesQueryNew',
-            redirect: '/salesManagement/salesQueryNew/list',
-            name: 'salesQueryNew',
-            component: BlankLayout,
-            meta: {
-              title: '销售单查询',
-              icon: 'monitor',
-              permission: 'M_salesQueryList'
-            },
-            hideChildrenInMenu: true,
-            children: [
-              {
-                path: 'list',
-                name: 'salesQueryNewList',
-                component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/salesQueryNew/list.vue'),
-                meta: {
-                  title: '销售单列表',
-                  icon: 'monitor',
-                  hidden: true,
-                  permission: 'M_salesQueryList'
-                }
-              },
-              {
-                path: 'detail/:sn',
-                name: 'salesNewDetail',
-                component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/salesQueryNew/detail.vue'),
-                meta: {
-                  title: '销售单详情',
-                  icon: 'monitor',
-                  hidden: true,
-                  replaceTab: true,
-                  permission: 'B_salesDetail'
-                }
-              },
-              {
-                path: 'detail/:sn',
-                name: 'salesNewDetailAudit',
-                component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/salesQueryNew/detail.vue'),
-                meta: {
-                  title: '销售单审核',
-                  icon: 'monitor',
-                  hidden: true,
-                  replaceTab: true,
-                  permission: 'B_salesAudit'
-                }
-              },
-              {
-                path: 'add/:sn',
-                name: 'salesNewAdd',
-                component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/salesQueryNew/edit.vue'),
-                meta: {
-                  title: '新增销售单',
-                  icon: 'monitor',
-                  hidden: true,
-                  permission: 'B_salesEdit'
-                }
-              },
-              {
-                path: 'edit/:sn',
-                name: 'salesNewEdit',
-                component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/salesQueryNew/edit.vue'),
-                meta: {
-                  title: '编辑销售单',
-                  icon: 'monitor',
-                  hidden: true,
-                  permission: 'B_salesEdit'
-                }
-              },
-              {
-                path: 'waitDispatch/:salesBillSn',
-                name: 'waitDispatchNew',
-                component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/waitDispatchNew/edit.vue'),
-                meta: {
-                  title: '下推销售单',
-                  icon: 'monitor',
-                  replaceTab: true,
-                  hidden: true,
-                  permission: 'B_salesDispatch'
-                }
-              },
-              {
-                path: 'waitCostOrder',
-                name: 'waitCostOrder',
-                component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/waitCostOrder/list.vue'),
-                meta: {
-                  title: '待转费用报销单',
-                  icon: 'monitor',
-                  hidden: true,
-                  permission: 'B_salesDispatch'
-                }
-              }
-            ]
-          },
-          {
-            path: '/salesManagement/salesOrderWarehouse',
-            redirect: '/salesManagement/salesOrderWarehouse/list',
-            name: 'salesOrderWarehouse',
-            component: BlankLayout,
-            meta: {
-              title: '仓库销售单',
-              icon: 'vertical-align-bottom',
-              permission: 'M_salesOrderWarehouseList'
-            },
-            hideChildrenInMenu: true,
-            children: [
-              {
-                path: 'list',
-                name: 'salesOrderWarehouseList',
-                component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/salesOrderWarehouse/list.vue'),
-                meta: {
-                  title: '仓库销售单列表',
-                  icon: 'vertical-align-bottom',
-                  hidden: true,
-                  permission: 'M_salesOrderWarehouseList'
-                }
-              },
-              {
-                path: 'detail/:sn/:wsn',
-                name: 'saleOrderDetail',
-                component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/salesOrderWarehouse/detail.vue'),
-                meta: {
-                  title: '仓库销售单列表详情',
-                  icon: 'vertical-align-bottom',
-                  replaceTab: true,
-                  hidden: true,
-                  permission: 'B_salesOrderWarehouseDetail'
-                }
-              }
-            ]
-          },
-          {
-            path: '/salesManagement/pushOrderManagement',
-            redirect: '/salesManagement/pushOrderManagement/list',
-            name: 'pushOrderManagement',
-            component: BlankLayout,
-            meta: {
-              title: '下推订单列表',
-              icon: 'vertical-align-bottom',
-              permission: 'M_pushOrderManagementList'
-            },
-            hideChildrenInMenu: true,
-            children: [
-              {
-                path: 'list',
-                name: 'pushOrderManagementList',
-                component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/pushOrderManagement/list.vue'),
-                meta: {
-                  title: '下推订单列表',
-                  icon: 'vertical-align-bottom',
-                  hidden: true,
-                  permission: 'M_pushOrderManagementList'
-                }
-              },
-              {
-                path: 'detail/:sn/:type',
-                name: 'pushOrderDetail',
-                component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/pushOrderManagement/detail.vue'),
-                meta: {
-                  title: '下推订单详情',
-                  icon: 'vertical-align-bottom',
-                  replaceTab: true,
-                  hidden: true,
-                  permission: 'B_dispatchDetail'
-                }
-              }
-            ]
-          },
-          {
-            path: '/salesManagement/salesCollection',
-            redirect: '/salesManagement/salesCollection/list',
-            name: 'salesCollection',
-            component: BlankLayout,
-            meta: {
-              title: '销售收款',
-              icon: 'vertical-align-bottom',
-              permission: 'M_salesCollectionList'
-            },
-            hideChildrenInMenu: true,
-            children: [
-              {
-                path: 'list',
-                name: 'salesCollectionList',
-                component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/salesCollection/list.vue'),
-                meta: {
-                  title: '销售收款',
-                  icon: 'vertical-align-bottom',
-                  hidden: true,
-                  permission: 'M_salesCollectionList'
-                }
-              }
-            ]
-          },
-          {
-            path: '/salesManagement/stockPrint',
-            redirect: '/salesManagement/stockPrint/list',
-            name: 'stockPrint',
-            component: BlankLayout,
-            meta: {
-              title: '备货打印',
-              icon: 'vertical-align-bottom',
-              permission: 'M_stockPrintList'
-            },
-            hideChildrenInMenu: true,
-            children: [
-              {
-                path: 'list',
-                name: 'stockPrintList',
-                component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/stockPrint/list.vue'),
-                meta: {
-                  title: '备货打印',
-                  icon: 'vertical-align-bottom',
-                  hidden: true,
-                  permission: 'M_stockPrintList'
-                }
-              }
-            ]
-          },
-          {
-            path: '/salesManagement/receiptPrint',
-            redirect: '/salesManagement/receiptPrint/list',
-            name: 'receiptPrint',
-            component: BlankLayout,
-            meta: {
-              title: '收款打印',
-              icon: 'vertical-align-bottom',
-              permission: 'M_receiptPrintList'
-            },
-            hideChildrenInMenu: true,
-            children: [
-              {
-                path: 'list',
-                name: 'receiptPrintList',
-                component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/receiptPrint/list.vue'),
-                meta: {
-                  title: '收款打印',
-                  icon: 'vertical-align-bottom',
-                  hidden: true,
-                  permission: 'M_receiptPrintList'
-                }
-              }
-            ]
-          },
-          {
-            path: '/salesManagement/matchSendOutOrder',
-            redirect: '/salesManagement/matchSendOutOrder/list',
-            name: 'matchSendOutOrder',
-            component: BlankLayout,
-            meta: {
-              title: '发货对单',
-              icon: 'vertical-align-bottom',
-              permission: 'M_matchSendOutOrderList'
-            },
-            hideChildrenInMenu: true,
-            children: [
-              {
-                path: 'list',
-                name: 'matchSendOutOrderList',
-                component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/matchSendOutOrder/list.vue'),
-                meta: {
-                  title: '发货对单',
-                  icon: 'vertical-align-bottom',
-                  hidden: true,
-                  permission: 'M_matchSendOutOrderList'
-                }
-              }
-            ]
-          },
-          {
-            path: '/salesManagement/examineVerify',
-            redirect: '/salesManagement/examineVerify/list',
-            name: 'examineVerify',
-            component: BlankLayout,
-            meta: {
-              title: '备货审核',
-              icon: 'audit',
-              permission: 'M_examineVerifyList'
-            },
-            hideChildrenInMenu: true,
-            children: [
-              {
-                path: 'list',
-                name: 'examineVerifyList',
-                component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/examineVerify/list.vue'),
-                meta: {
-                  title: '备货审核列表',
-                  icon: 'audit',
-                  hidden: true,
-                  permission: 'M_examineVerifyList'
-                }
-              }
-            ]
-          },
-          {
-            path: '/salesManagement/outboundOrder',
-            redirect: '/salesManagement/outboundOrder/list',
-            name: 'outboundOrder',
-            component: BlankLayout,
-            meta: {
-              title: '出库',
-              icon: 'export',
-              permission: 'M_outboundOrderList'
-            },
-            hideChildrenInMenu: true,
-            children: [
-              {
-                path: 'list',
-                name: 'outboundOrderList',
-                component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/outboundOrder/list.vue'),
-                meta: {
-                  title: '出库列表',
-                  icon: 'export',
-                  hidden: true,
-                  permission: 'M_outboundOrderList'
-                }
-              }
-            ]
-          },
-          {
-            path: '/salesManagement/sendOutOrder',
-            redirect: '/salesManagement/sendOutOrder/list',
-            name: 'sendOutOrder',
-            component: BlankLayout,
-            meta: {
-              title: '发货单列表',
-              icon: 'export',
-              permission: 'M_sendOutOrderList'
-            },
-            hideChildrenInMenu: true,
-            children: [
-              {
-                path: 'list',
-                name: 'sendOutOrderList',
-                component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/sendOutOrder/list.vue'),
-                meta: {
-                  title: '发货单列表',
-                  icon: 'export',
-                  hidden: true,
-                  permission: 'M_sendOutOrderList'
-                }
-              }
-            ]
-          },
-          {
-            path: '/salesManagement/backorder',
-            redirect: '/salesManagement/backorder/list',
-            name: 'backorder',
-            component: BlankLayout,
-            meta: {
-              title: '销售缺货列表',
-              icon: 'exception',
-              permission: 'M_backorderList'
-            },
-            hideChildrenInMenu: true,
-            children: [
-              {
-                path: 'list',
-                name: 'backorderList',
-                component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/backorder/list.vue'),
-                meta: {
-                  title: '销售缺货列表',
-                  icon: 'exception',
-                  hidden: true,
-                  permission: 'M_backorderList'
-                }
-              }
-            ]
-          },
-          {
-            path: '/salesManagement/shortageStatisticsC',
-            redirect: '/salesManagement/shortageStatisticsC/list',
-            name: 'shortageStatisticsC',
-            component: BlankLayout,
-            meta: {
-              title: '缺货统计(按客户)',
-              icon: 'file-done',
-              permission: 'M_shortageStatisticsCList'
-            },
-            hideChildrenInMenu: true,
-            children: [
-              {
-                path: 'list',
-                name: 'shortageStatisticsCList',
-                component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/shortageStatisticsC/list.vue'),
-                meta: {
-                  title: '缺货统计(按客户)',
-                  icon: 'file-done',
-                  hidden: true,
-                  permission: 'M_shortageStatisticsCList'
-                }
-              }
-            ]
-          },
-          {
-            path: '/salesManagement/shortageStatisticsP',
-            redirect: '/salesManagement/shortageStatisticsP/list',
-            name: 'shortageStatisticsP',
-            component: BlankLayout,
-            meta: {
-              title: '缺货统计(按产品)',
-              icon: 'file-protect',
-              permission: 'M_shortageStatisticsPList'
-            },
-            hideChildrenInMenu: true,
-            children: [
-              {
-                path: 'list',
-                name: 'shortageStatisticsPList',
-                component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/shortageStatisticsP/list.vue'),
-                meta: {
-                  title: '缺货统计(按产品)',
-                  icon: 'file-protect',
-                  hidden: true,
-                  permission: 'M_shortageStatisticsPList'
-                }
-              }
-            ]
-          },
-          {
-            path: '/salesManagement/priceInquiry',
-            redirect: '/salesManagement/priceInquiry/list',
-            name: 'priceInquiry',
-            component: BlankLayout,
-            meta: {
-              title: '价格查询',
-              icon: 'file-protect',
-              permission: 'M_priceInquiryList'
-            },
-            hideChildrenInMenu: true,
-            children: [
-              {
-                path: 'list',
-                name: 'priceInquiryList',
-                component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/priceInquiry/list.vue'),
-                meta: {
-                  title: '价格查询列表',
-                  icon: 'file-protect',
-                  hidden: true,
-                  permission: 'M_priceInquiryList'
-                }
-              }
-            ]
-          },
-          {
-            path: '/salesManagement/salesList',
-            redirect: '/salesManagement/salesList/list',
-            name: 'salesList',
-            component: BlankLayout,
-            meta: {
-              title: '销售一览表',
-              icon: 'file-protect',
-              permission: 'M_salesList'
-            },
-            hideChildrenInMenu: true,
-            children: [
-              {
-                path: 'list',
-                name: 'salesMainList',
-                component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/salesList/list.vue'),
-                meta: {
-                  title: '销售一览表',
-                  icon: 'file-protect',
-                  hidden: true,
-                  permission: 'M_salesList'
-                }
-              }
-            ]
+        {
+          path: 'detail/:sn/:wsn',
+          name: 'saleOrderDetail',
+          component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/salesOrderWarehouse/detail.vue'),
+          meta: {
+            title: '仓库销售单列表详情',
+            icon: 'vertical-align-bottom',
+            replaceTab: true,
+            hidden: true,
+            permission: 'B_salesOrderWarehouseDetail'
+          }
+        }
+      ]
+    },
+    {
+      path: '/salesManagement/pushOrderManagement',
+      redirect: '/salesManagement/pushOrderManagement/list',
+      name: 'pushOrderManagement',
+      component: BlankLayout,
+      meta: {
+        title: '下推订单列表',
+        icon: 'vertical-align-bottom',
+        permission: 'M_pushOrderManagementList'
+      },
+      hideChildrenInMenu: true,
+      children: [
+        {
+          path: 'list',
+          name: 'pushOrderManagementList',
+          component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/pushOrderManagement/list.vue'),
+          meta: {
+            title: '下推订单列表',
+            icon: 'vertical-align-bottom',
+            hidden: true,
+            permission: 'M_pushOrderManagementList'
+          }
+        },
+        {
+          path: 'detail/:sn/:type',
+          name: 'pushOrderDetail',
+          component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/pushOrderManagement/detail.vue'),
+          meta: {
+            title: '下推订单详情',
+            icon: 'vertical-align-bottom',
+            replaceTab: true,
+            hidden: true,
+            permission: 'B_dispatchDetail'
+          }
+        }
+      ]
+    },
+    {
+      path: '/salesManagement/salesCollection',
+      redirect: '/salesManagement/salesCollection/list',
+      name: 'salesCollection',
+      component: BlankLayout,
+      meta: {
+        title: '销售收款',
+        icon: 'vertical-align-bottom',
+        permission: 'M_salesCollectionList'
+      },
+      hideChildrenInMenu: true,
+      children: [
+        {
+          path: 'list',
+          name: 'salesCollectionList',
+          component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/salesCollection/list.vue'),
+          meta: {
+            title: '销售收款',
+            icon: 'vertical-align-bottom',
+            hidden: true,
+            permission: 'M_salesCollectionList'
+          }
+        }
+      ]
+    },
+    {
+      path: '/salesManagement/stockPrint',
+      redirect: '/salesManagement/stockPrint/list',
+      name: 'stockPrint',
+      component: BlankLayout,
+      meta: {
+        title: '备货打印',
+        icon: 'vertical-align-bottom',
+        permission: 'M_stockPrintList'
+      },
+      hideChildrenInMenu: true,
+      children: [
+        {
+          path: 'list',
+          name: 'stockPrintList',
+          component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/stockPrint/list.vue'),
+          meta: {
+            title: '备货打印',
+            icon: 'vertical-align-bottom',
+            hidden: true,
+            permission: 'M_stockPrintList'
+          }
+        }
+      ]
+    },
+    {
+      path: '/salesManagement/receiptPrint',
+      redirect: '/salesManagement/receiptPrint/list',
+      name: 'receiptPrint',
+      component: BlankLayout,
+      meta: {
+        title: '收款打印',
+        icon: 'vertical-align-bottom',
+        permission: 'M_receiptPrintList'
+      },
+      hideChildrenInMenu: true,
+      children: [
+        {
+          path: 'list',
+          name: 'receiptPrintList',
+          component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/receiptPrint/list.vue'),
+          meta: {
+            title: '收款打印',
+            icon: 'vertical-align-bottom',
+            hidden: true,
+            permission: 'M_receiptPrintList'
+          }
+        }
+      ]
+    },
+    {
+      path: '/salesManagement/matchSendOutOrder',
+      redirect: '/salesManagement/matchSendOutOrder/list',
+      name: 'matchSendOutOrder',
+      component: BlankLayout,
+      meta: {
+        title: '发货对单',
+        icon: 'vertical-align-bottom',
+        permission: 'M_matchSendOutOrderList'
+      },
+      hideChildrenInMenu: true,
+      children: [
+        {
+          path: 'list',
+          name: 'matchSendOutOrderList',
+          component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/matchSendOutOrder/list.vue'),
+          meta: {
+            title: '发货对单',
+            icon: 'vertical-align-bottom',
+            hidden: true,
+            permission: 'M_matchSendOutOrderList'
+          }
+        }
+      ]
+    },
+    {
+      path: '/salesManagement/examineVerify',
+      redirect: '/salesManagement/examineVerify/list',
+      name: 'examineVerify',
+      component: BlankLayout,
+      meta: {
+        title: '备货审核',
+        icon: 'audit',
+        permission: 'M_examineVerifyList'
+      },
+      hideChildrenInMenu: true,
+      children: [
+        {
+          path: 'list',
+          name: 'examineVerifyList',
+          component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/examineVerify/list.vue'),
+          meta: {
+            title: '备货审核列表',
+            icon: 'audit',
+            hidden: true,
+            permission: 'M_examineVerifyList'
+          }
+        }
+      ]
+    },
+    {
+      path: '/salesManagement/outboundOrder',
+      redirect: '/salesManagement/outboundOrder/list',
+      name: 'outboundOrder',
+      component: BlankLayout,
+      meta: {
+        title: '出库',
+        icon: 'export',
+        permission: 'M_outboundOrderList'
+      },
+      hideChildrenInMenu: true,
+      children: [
+        {
+          path: 'list',
+          name: 'outboundOrderList',
+          component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/outboundOrder/list.vue'),
+          meta: {
+            title: '出库列表',
+            icon: 'export',
+            hidden: true,
+            permission: 'M_outboundOrderList'
+          }
+        }
+      ]
+    },
+    {
+      path: '/salesManagement/sendOutOrder',
+      redirect: '/salesManagement/sendOutOrder/list',
+      name: 'sendOutOrder',
+      component: BlankLayout,
+      meta: {
+        title: '发货单列表',
+        icon: 'export',
+        permission: 'M_sendOutOrderList'
+      },
+      hideChildrenInMenu: true,
+      children: [
+        {
+          path: 'list',
+          name: 'sendOutOrderList',
+          component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/sendOutOrder/list.vue'),
+          meta: {
+            title: '发货单列表',
+            icon: 'export',
+            hidden: true,
+            permission: 'M_sendOutOrderList'
+          }
+        }
+      ]
+    },
+    {
+      path: '/salesManagement/backorder',
+      redirect: '/salesManagement/backorder/list',
+      name: 'backorder',
+      component: BlankLayout,
+      meta: {
+        title: '销售缺货列表',
+        icon: 'exception',
+        permission: 'M_backorderList'
+      },
+      hideChildrenInMenu: true,
+      children: [
+        {
+          path: 'list',
+          name: 'backorderList',
+          component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/backorder/list.vue'),
+          meta: {
+            title: '销售缺货列表',
+            icon: 'exception',
+            hidden: true,
+            permission: 'M_backorderList'
+          }
+        }
+      ]
+    },
+    {
+      path: '/salesManagement/shortageStatisticsC',
+      redirect: '/salesManagement/shortageStatisticsC/list',
+      name: 'shortageStatisticsC',
+      component: BlankLayout,
+      meta: {
+        title: '缺货统计(按客户)',
+        icon: 'file-done',
+        permission: 'M_shortageStatisticsCList'
+      },
+      hideChildrenInMenu: true,
+      children: [
+        {
+          path: 'list',
+          name: 'shortageStatisticsCList',
+          component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/shortageStatisticsC/list.vue'),
+          meta: {
+            title: '缺货统计(按客户)',
+            icon: 'file-done',
+            hidden: true,
+            permission: 'M_shortageStatisticsCList'
+          }
+        }
+      ]
+    },
+    {
+      path: '/salesManagement/shortageStatisticsP',
+      redirect: '/salesManagement/shortageStatisticsP/list',
+      name: 'shortageStatisticsP',
+      component: BlankLayout,
+      meta: {
+        title: '缺货统计(按产品)',
+        icon: 'file-protect',
+        permission: 'M_shortageStatisticsPList'
+      },
+      hideChildrenInMenu: true,
+      children: [
+        {
+          path: 'list',
+          name: 'shortageStatisticsPList',
+          component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/shortageStatisticsP/list.vue'),
+          meta: {
+            title: '缺货统计(按产品)',
+            icon: 'file-protect',
+            hidden: true,
+            permission: 'M_shortageStatisticsPList'
+          }
+        }
+      ]
+    },
+    {
+      path: '/salesManagement/priceInquiry',
+      redirect: '/salesManagement/priceInquiry/list',
+      name: 'priceInquiry',
+      component: BlankLayout,
+      meta: {
+        title: '价格查询',
+        icon: 'file-protect',
+        permission: 'M_priceInquiryList'
+      },
+      hideChildrenInMenu: true,
+      children: [
+        {
+          path: 'list',
+          name: 'priceInquiryList',
+          component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/priceInquiry/list.vue'),
+          meta: {
+            title: '价格查询列表',
+            icon: 'file-protect',
+            hidden: true,
+            permission: 'M_priceInquiryList'
+          }
+        }
+      ]
+    },
+    {
+      path: '/salesManagement/salesList',
+      redirect: '/salesManagement/salesList/list',
+      name: 'salesList',
+      component: BlankLayout,
+      meta: {
+        title: '销售一览表',
+        icon: 'file-protect',
+        permission: 'M_salesList'
+      },
+      hideChildrenInMenu: true,
+      children: [
+        {
+          path: 'list',
+          name: 'salesMainList',
+          component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/salesManagement/salesList/list.vue'),
+          meta: {
+            title: '销售一览表',
+            icon: 'file-protect',
+            hidden: true,
+            permission: 'M_salesList'
           }
-        ]
-      }
+        }
+      ]
+    }
+  ]
+}

+ 7 - 2
src/views/common/dealerSubareaScopeList.vue

@@ -22,7 +22,7 @@
 </template>
 <script>
 import debounce from 'lodash/debounce'
-import { dealerSubareaScopeList, dealerDetailBySn } from '@/api/dealer'
+import { dealerSubareaScopeList, dealerDetailBySn, queryTireDealerPage } from '@/api/dealer'
 export default {
   props: {
     size: {
@@ -36,6 +36,10 @@ export default {
     disabled: {
       type: Boolean,
       default: false
+    },
+    dealertype: {
+      type: String,
+      default: ''
     }
   },
   data () {
@@ -55,7 +59,8 @@ export default {
       const fetchId = this.lastFetchId
       this.data = []
       this.fetching = true
-      dealerSubareaScopeList({ nameLike: dealerName.replace(/\s+/g, ''), pageNo: 1, pageSize: 20 }).then(res => {
+      const ajaxName = this.dealertype && this.dealertype.length ? queryTireDealerPage : dealerSubareaScopeList
+      ajaxName({ nameLike: dealerName.replace(/\s+/g, ''), pageNo: 1, pageSize: 20 }).then(res => {
         if (fetchId !== this.lastFetchId) {
           return
         }

+ 20 - 67
src/views/salesManagement/salesQueryNew/auditModal.vue

@@ -7,104 +7,64 @@
     :title="modalTit"
     v-model="isShow"
     @cancel="isShow=false"
-    :width="500">
+    :width="550">
     <a-spin :spinning="spinning" tip="Loading...">
       <a-form-model
         id="audit-modal-form"
         ref="ruleForm"
-        :model="form"
-        :rules="rules"
+        :model="detailData"
         :label-col="formItemLayout.labelCol"
         :wrapper-col="formItemLayout.wrapperCol"
       >
-        <a-form-model-item label="客户名称">{{ form.buyerName || '--' }}</a-form-model-item>
-        <a-form-model-item label="发货经销商" prop="dataScope">
-          <custList
-            id="audit-modal-dataScope"
-            ref="custList"
-            :notDealerSn="notDealer"
-            @change="dealerChange"
-            placeholder="请输入发货经销商"></custList>
-        </a-form-model-item>
-        <a-form-model-item>
-          由于***(发货经销商)非***(客户名称)的轮胎上级或省仓,需上级审核通过后完成转单。
+        <a-form-model-item label="客户名称">{{ detailData.buyerName || '--' }}</a-form-model-item>
+        <a-form-model-item label="发货经销商">
+          {{ detailData.transferDealerName||'--' }}
         </a-form-model-item>
+        <div style="margin-top:20px;">由于{{ detailData.transferDealerName }}非{{ detailData.buyerName }}的轮胎上级或省仓,需上级审核通过后完成转单。</div>
       </a-form-model>
       <div class="btn-cont">
-        <a-button id="audit-modal-back" @click="handleCancel">审核不通过</a-button>
-        <a-button type="primary" style="margin-left: 15px;" id="audit-modal-save" @click="handleSave">审核通过</a-button>
+        <a-button id="audit-modal-back" @click="handleSave('0')">审核不通过</a-button>
+        <a-button type="primary" style="margin-left: 15px;" id="audit-modal-save" @click="handleSave('1')">审核通过</a-button>
       </div>
     </a-spin>
   </a-modal>
 </template>
 
 <script>
-import custList from '@/views/common/custList.vue'
 export default {
-  name: 'TransferOrderModal',
-  components: { custList },
+  name: 'AuditConfirmModal',
   props: {
     openModal: { //  弹框显示状态
       type: Boolean,
       default: false
+    },
+    detailData: {
+      type: Object,
+      default: () => {
+        return {}
+      }
     }
   },
   data () {
     return {
       isShow: this.openModal, //  是否打开弹框
-      // 导出选项
-      form: {
-        buyerName: '',
-        dataScope: undefined
-      },
-      // 选项校验
-      rules: {
-        dataScope: [{ required: true, message: '请输入发货经销商', trigger: 'change' }]
-      },
       formItemLayout: {
         labelCol: { span: 6 },
-        wrapperCol: { span: 15 }
+        wrapperCol: { span: 16 }
       },
       spinning: false
     }
   },
   computed: {
     modalTit () {
-      const title = '转单申请 (年月日时分秒(转单提交的时间))'
+      const title = '转单申请' + (this.detailData && this.detailData.transferDate) ? '(' + this.detailData.transferDate + ')' : ''
       return title
     }
   },
   methods: {
-    // 选择经销商
-    dealerChange (val) {
-      this.queryParam.dealer.dealerSn = val.key
-      this.queryParam.dealer.dealerName = val.key ? (val.label.replace('\n', '')).trim() : ''
-    },
-    // 确认
-    handleSave (isPrint) {
-      const _this = this
-      this.$refs.ruleForm.validate(valid => {
-        if (valid) {
-          // 价格类型
-          _this.form.priceType = _this.form.dataScope == 'ENOUGH' ? 'SALES_BILL_NOT_LACK' : 'SALES_BILL'
-          _this.form.priceType += _this.form.orgCode == '1' ? '_ORIG_CODE' : ''
-          const obj = {
-            salesBillSn: _this.itemData.salesBillSn,
-            priceType: _this.form.priceType,
-            dataScope: _this.form.dataScope == 'all' ? '' : _this.form.dataScope,
-            type: isPrint || 'preview'
-          }
-          _this.$emit('ok', obj)
-          _this.isShow = false
-        } else {
-          console.log('error submit!!')
-          return false
-        }
-      })
-    },
-    // 取消选择分类
-    handleCancel () {
-      this.isShow = false
+    // 确认审核
+    handleSave (val) {
+      this.$emit('ok', val)
     }
   },
   watch: {
@@ -116,13 +76,6 @@ export default {
     isShow (newValue, oldValue) {
       if (!newValue) {
         this.$emit('close')
-        // 重置表单
-        this.form = {
-          buyerName: '',
-          dataScope: undefined
-        }
-        this.$refs.custList.resetForm()
-        this.$refs.ruleForm.resetFields()
       }
     }
   }

+ 51 - 25
src/views/salesManagement/salesQueryNew/comps/dealerStockModal.vue

@@ -1,7 +1,7 @@
 <template>
   <a-modal
     v-model="isShow"
-    title="经销商库存"
+    title="选择发货经销商"
     centered
     :maskClosable="false"
     :confirmLoading="confirmLoading"
@@ -11,16 +11,17 @@
     <a-spin :spinning="spinning" tip="Loading...">
       <div style="padding: 0 30px;">
         <a-radio-group v-model="chooseVal">
-          <a-radio :style="radioStyle" v-for="(item,index) in dealerList" :key="item.id" :value="index">
-            {{ item.nameInfo }}
-            <custList
-              id="dealerStockModal-custList"
+          <!-- SUPERIORS 上级 purchase  省仓 -->
+          <a-radio :style="radioStyle" v-for="(item,index) in dealerList" :key="item.dealerSn" :value="item.dealerSn">
+            {{ item.dealerName }}{{ item.parentType?item.parentType==='SUPERIORS'?'(上级)':'(省仓)' :'' }}
+            <dealerSubareaScopeList
               v-if="index==dealerList.length-1"
-              ref="custList"
+              dealertype="tire"
+              placeholder="请输入发货经销商名称"
+              ref="dealerSubareaScopeList"
+              id="dealerStockModal-custList"
               style="margin-left:10px;"
-              :notDealerSn="notDealer"
-              @change="dealerChange"
-              placeholder="请输入经销商名称搜索"></custList>
+              @change="dealerChange" />
           </a-radio>
         </a-radio-group>
       </div>
@@ -34,8 +35,8 @@
 
 <script>
 import { commonMixin } from '@/utils/mixin'
-import { salesPromoMatchProduct } from '@/api/salesNew'
-import custList from '@/views/common/custList.vue'
+import { querySuperiorDealer, queryTransferDealerStock } from '@/api/sales'
+import dealerSubareaScopeList from '@/views/common/dealerSubareaScopeList.vue'
 export default {
   name: 'DealerStockModal',
   mixins: [commonMixin],
@@ -43,9 +44,13 @@ export default {
     openModal: { //  弹框显示状态
       type: Boolean,
       default: false
+    },
+    itemSn: {
+      type: String,
+      default: ''
     }
   },
-  components: { custList },
+  components: { dealerSubareaScopeList },
   data () {
     return {
       isShow: this.openModal,
@@ -53,38 +58,55 @@ export default {
       confirmLoading: false,
       chooseVal: null,
       radioStyle: "display:block;height: '30px';lineHeight: '30px';padding:5px 0;",
-      dealerList: [{ id: 1, nameInfo: '大兴店库存(上级)' }, { id: 2, nameInfo: '东莞服务中心库存(省仓)' }, { id: 3, nameInfo: '其他经销商库存' }],
-      editRow: null,
-      promoRuleSn: null
+      dealerList: [{ dealerName: '其他经销商', dealerSn: 'a1' }],
+      salesBillSn: null,
+      selectDealerSn: undefined, // 已选发货经销商
+      selectDealerName: undefined
     }
   },
   methods: {
-    getActiveList (data, record) {
-      this.promoRuleSn = data.promoRuleSn
-      this.editRow = record
+    getDealerList () {
       this.spinning = true
-      salesPromoMatchProduct(data).then(res => {
-        this.activeList = res.data || []
+      querySuperiorDealer({ salesBillSn: this.itemSn }).then(res => {
+        this.dealerList = res.data.concat(this.dealerList)
         this.spinning = false
       })
     },
     // 选择经销商
     dealerChange (val) {
-      this.queryParam.dealer.dealerSn = val.key
-      this.queryParam.dealer.dealerName = val.key ? (val.label.replace('\n', '')).trim() : ''
+      if (val && val.key) {
+        this.selectDealerSn = val.key
+        this.selectDealerName = val.key
+      }
     },
     //  保存
     handleSubmit (e) {
       e.preventDefault()
       const _this = this
-      if (_this.upActiveVal) {
+      let chooseRow = []
+      if (_this.chooseVal) {
+        if (_this.chooseVal === 'a1') {
+          chooseRow.push({
+            dealerSn: _this.selectDealerSn,
+            dealerName: _this.selectDealerName
+          })
+        } else {
+          chooseRow = _this.dealerList.filter(item => item.dealerSn == _this.chooseVal)
+        }
         _this.confirmLoading = true
-        _this.$emit('ok', _this.upActiveVal, _this.editRow)
+        queryTransferDealerStock({ salesBillSn: _this.itemSn, transferDealerSn: _this.chooseVal === 'a1' ? _this.selectDealerSn : _this.chooseVal }).then(res => {
+          _this.confirmLoading = false
+          _this.cancel()
+          _this.$emit('ok', chooseRow[0], res.data)
+        })
       } else {
-        _this.$message.info('请选择活动规则!')
+        _this.$message.info('请选择发货经销商类型!')
       }
     },
     cancel () {
+      this.dealerList = [{ dealerName: '其他经销商', dealerSn: 'a1' }]
+      this.$refs.dealerSubareaScopeList[0].resetForm()
+      this.chooseVal = null
       this.isShow = false
     }
   },
@@ -97,6 +119,10 @@ export default {
     isShow (newValue, oldValue) {
       if (!newValue) {
         this.$emit('close')
+      } else {
+        if (this.itemSn && this.itemSn.length > 0) {
+          this.getDealerList()
+        }
       }
     }
   }

+ 36 - 1
src/views/salesManagement/salesQueryNew/comps/detailProductList.vue

@@ -83,6 +83,14 @@ export default {
     showHeader: {
       type: Boolean,
       default: true
+    },
+    transferQty: {// 发货经销商库存
+      type: [String, Number],
+      default: ''
+    },
+    chooseList: { // 发货经销商库存
+      type: Array,
+      default: function () { return [] }
     }
   },
   data () {
@@ -246,7 +254,7 @@ export default {
         }
       }
       this.colspanNums = this.colspanNums + 4
-      arr.push({ title: '经销商库存', field: 'thirdStockQty1', width: 80, key: 'mm', align: 'center', operationColumn: false, renderBodyCell: ({ row, column, rowIndex }, h) => { return numsFormat(row[column.field]) } })
+      arr.push({ title: '发货经销商库存', field: 'transferDealerStockQty', width: 100, key: 'mm', align: 'center', operationColumn: false, renderBodyCell: ({ row, column, rowIndex }, h) => { return numsFormat(row[column.field]) } })
       arr = arr.concat([
         { title: '待下推数', field: 'unpushedQty', width: 80, key: 'o', align: 'center', operationColumn: false, renderBodyCell: ({ row, column, rowIndex }, h) => { return numsFormat(row[column.field]) } },
         { title: '已下推数', field: 'pushedQty', width: 80, key: 'p', align: 'center', operationColumn: false, renderBodyCell: ({ row, column, rowIndex }, h) => { return numsFormat(row[column.field]) } }
@@ -320,6 +328,33 @@ export default {
     showThreeStock () {
       this.showStockCol = true
     },
+    // 有发货经销商时,查询
+    reSearchTable () {
+      // 查询参数
+      const params = {
+        salesBillSn: this.salesBillSn,
+        showStock: this.showStock,
+        warehouseSn: this.warehouseSn,
+        promotionFlag: this.promoFlag == '' ? undefined : this.promoFlag
+      }
+      salesDetailAllList(params).then(res => {
+        if (res.status == 200) {
+          res.data.forEach(item => {
+            this.chooseList.forEach(con => {
+              if (con.id === item.id) {
+                item.transferDealerStockQty = con.transferDealerStockQty
+              }
+            })
+          })
+          if (this.transferQty || this.transferQty == 0) {
+            res.data = res.data.filter(item => {
+              return item.transferDealerStockQty == this.transferQty
+            })
+          }
+          this.dataSource = res.data
+        }
+      })
+    },
     // 查询表格数据
     async searchTable () {
       this.dataSource = []

+ 101 - 23
src/views/salesManagement/salesQueryNew/detail.vue

@@ -61,7 +61,7 @@
             <a-descriptions-item label="财务状态">{{ detailData&&detailData.financialStatusDictValue || '--' }}</a-descriptions-item>
             <a-descriptions-item label="改单时间" v-if="detailData&&detailData.salesBillSource=='PURCHASE'&&detailData.submitDate">{{ detailData.submitDate }}</a-descriptions-item>
             <a-descriptions-item label="最新提交时间" v-if="detailData&&detailData.salesBillSource=='SALES'&&detailData.submitDate">{{ detailData.submitDate }}</a-descriptions-item>
-            <a-descriptions-item label="发货经销商">{{ detailData&&detailData.billStatusDictValue || '--' }}</a-descriptions-item>
+            <a-descriptions-item label="发货经销商" v-if="detailData&&detailData.billStatus&&(detailData.billStatus=='TRANSFER_YES'||detailData.billStatus=='TRANSFER_AUDIT_REJECT'||detailData.billStatus=='TRANSFER_FINISH')">{{ detailData.transferDealerName || '--' }}</a-descriptions-item>
             <a-descriptions-item label="备注" :span="2">{{ detailData&&detailData.remarks || '--' }}</a-descriptions-item>
           </a-descriptions>
         </div>
@@ -126,14 +126,14 @@
                       </a-select>
                     </a-form-item>
                   </a-col>
-                  <a-col flex="260px">
-                    <a-form-item label="经销商库存">
+                  <a-col flex="260px" v-if="$route.params.pageType!='salesNewDetailAudit'">
+                    <a-form-item label="发货经销商库存">
                       <v-select
-                        code="FLAG"
-                        id="purchaseOrder-basicInfo-settleStyleSn"
-                        v-model="settleStyleSn"
+                        code="SALES_BILL_ORDER_TYPE"
+                        id="purchaseOrder-basicInfo-transferQty"
+                        v-model="transferQty"
                         allowClear
-                        placeholder="请选择经销商库存是否满足"
+                        placeholder="请选择发货经销商库存是否满足"
                       ></v-select>
                     </a-form-item>
                   </a-col>
@@ -145,7 +145,14 @@
               </a-form>
             </div>
             <div style="margin-bottom: 10px;">
-              <a-button id="salesDetail-updateStock" type="primary" style="margin-right: 10px;" @click="openDealerModal" class="button-dealerStock">经销商库存</a-button>
+              <span v-if="selectedDealer">(发货经销商:{{ selectedDealer }})</span>
+              <a-button
+                id="salesDetail-updateStock"
+                type="primary"
+                v-if="$route.params.pageType!='salesNewDetailAudit'"
+                style="margin:0 10px;"
+                @click="openDealerModal"
+                class="button-dealerStock">选择发货经销商</a-button>
               <a-button id="salesDetail-updateStock" type="primary" v-if="showStock" @click="getThreeStock" class="button-info">第三方库存</a-button>
               <a-button id="salesDetail-stockOut" v-if="detailData && (detailData.billStatus == 'WAIT_AUDIT' || detailData.billStatus == 'HQ_CHANGE')" type="link" @click="openStockOut">缺货明细</a-button>
               <a-checkbox id="salesDetail-cityPrice" v-model="isCityPrice" v-if="$hasPermissions(authCode + '_cityPrice')"><span style="display: inline-block;margin-top: 1px;">市级价</span></a-checkbox>
@@ -162,6 +169,8 @@
             :salesBillSn="$route.params.sn || bizSn"
             :authCode="authCode"
             :maxHeight="pageHeight"
+            :chooseList="chooseDealerList"
+            :transferQty="transferQty"
             :showCityPrice="isCityPrice">
           </detailProductList>
         </div>
@@ -174,6 +183,7 @@
         type="primary"
         class="button-info"
         id="salesDetail-audit-btn"
+        v-if="$route.params.pageType!='salesNewDetailAudit'&&detailData&&detailData.billStatus != 'SUPERIOR_WAIT_AUDIT'"
         @click="handleOrder()"
       >
         转单
@@ -184,11 +194,23 @@
         type="primary"
         class="button-info"
         id="salesDetail-audit-btn"
-        v-if="detailData&&detailData.billStatus == 'WAIT_AUDIT'&&$hasPermissions('B_salesAudit')"
+        v-if="detailData&&detailData.billStatus == 'WAIT_AUDIT'&&$hasPermissions('B_salesAudit')&&$route.params.pageType!='salesNewDetailTransfer'"
         @click="handleAudit()"
       >
         审核
       </a-button>
+      <!-- 转单审核 -->
+      <a-button
+        style="width: 100px;"
+        :disabled="spinning"
+        type="primary"
+        class="button-info"
+        id="salesDetail-audit-btn"
+        v-if="detailData&&detailData.billStatus == 'SUPERIOR_WAIT_AUDIT'"
+        @click="handleTransferAudit"
+      >
+        审核
+      </a-button>
       <a-button
         type="primary"
         :disabled="spinning"
@@ -215,7 +237,7 @@
         type="primary"
         class="button-success"
         id="salesDetail-batchAudit-btn"
-        v-if="detailData&&detailData.billStatus == 'WAIT_AUDIT'&&$hasPermissions('B_salesAudit')"
+        v-if="detailData&&detailData.billStatus == 'WAIT_AUDIT'&&$hasPermissions('B_salesAudit')&&$route.params.pageType!='salesNewDetailTransfer'"
         @click="handleAudit('batch')"
       >
         一键审核
@@ -245,10 +267,10 @@
     <stockOutDetail :openModal="showStockOut" :detailData="detailData" :salesBillSn="$route.params.sn || bizSn" @close="showStockOut=false"></stockOutDetail>
     <!-- 改单 -->
     <tipModal ref="tipModal" :openModal="openTipModal" :dataList="sourceData" @close="closeTipModal" @ok="openTipModalOk"></tipModal>
-    <!-- 经销商库存 弹窗 -->
-    <dealerStockModal :openModal="openDealerStock" @close="closeDealerStock" @ok="openDealerStockOk"></dealerStockModal>
+    <!-- 发货经销商库存 弹窗 -->
+    <dealerStockModal :itemSn="$route.params.sn" :openModal="openDealerStock" @close="openDealerStock = false" @ok="openDealerStockOk"></dealerStockModal>
     <!-- 审核弹窗 -->
-    <auditConfirmModal :openModal="openTransferOrder"></auditConfirmModal>
+    <auditConfirmModal :openModal="openTransferOrder" :detailData="detailData" @ok="transferOrderAuditOk" @close="openTransferOrder=false"></auditConfirmModal>
   </div>
 </template>
 
@@ -268,6 +290,7 @@ import tipModal from './tipModal.vue'
 import auditConfirmModal from './auditModal.vue'
 // 接口
 import { salesDetailBySn, salesDetailPrint, salesDetailExcel, salesDetailTypeExcel, salesWriteAuditPass, salesWriteAuditReject, salesWriteAuditPush, getThirdStockQty, salesPromoValidaSubmit, changeBillCheckUpdatePrice, changeBillCheck } from '@/api/salesNew'
+import { transferVerify, transfer, transferAudit } from '@/api/sales'
 
 export default {
   name: 'SalesDetailNew',
@@ -300,9 +323,12 @@ export default {
       promoFlag: undefined, // 产品类型
       openTipModal: false, // 改单弹窗
       sourceData: undefined, // 价格变动数据
-      settleStyleSn: undefined, // 经销商库存查询
+      transferQty: undefined, // 发货经销商库存查询
       openDealerStock: false, // 打开经销商库存弹窗
-      openTransferOrder: false // 打开转单弹窗
+      openTransferOrder: false, // 打开转单弹窗
+      selectedDealer: '', // 发货经销商名称
+      selectedDealerSn: undefined, // 发货经销商sn
+      chooseDealerList: []// 发货经销商数据
     }
   },
   computed: {
@@ -345,15 +371,18 @@ export default {
     handleBack () {
       this.$router.push({ name: 'salesQueryNewList' })
     },
-    // 打开 经销商库存弹窗
+    // 打开 发货经销商库存弹窗
     openDealerModal () {
       this.openDealerStock = true
     },
-    closeDealerStock () {
-
-    },
-    openDealerStockOk () {
-
+    openDealerStockOk (val, data) {
+      this.selectedDealer = val.dealerName
+      this.selectedDealerSn = val.dealerSn
+      this.chooseDealerList = data
+      this.openDealerStock = false
+      this.$nextTick(() => {
+        this.searchTable()
+      })
     },
     // 编辑
     handleEdit () {
@@ -412,7 +441,11 @@ export default {
     },
     // 查询数据
     searchTable () {
-      this.$refs.productList.searchTable()
+      if (this.chooseDealerList && this.chooseDealerList.length) {
+        this.$refs.productList.reSearchTable()
+      } else {
+        this.$refs.productList.searchTable()
+      }
     },
     // 查询第三方库存
     getThreeStock () {
@@ -451,10 +484,55 @@ export default {
     handleDispatch (row) {
       this.$router.push({ name: 'waitDispatchNew', params: { salesBillSn: row.salesBillSn } })
     },
-    // 转单
+    // 验证转单
     handleOrder () {
+      const _this = this
+      if (!_this.selectedDealerSn) {
+        _this.$message.warning('请选择发货经销商!')
+        return
+      }
+      transferVerify({ salesBillSn: _this.$route.params.sn, transferDealerSn: _this.selectedDealerSn }).then(res => {
+        if (res.status == 200) {
+          if (res.data && res.data.length) {
+            _this.$confirm({
+              title: '提示',
+              content: res.data,
+              centered: true,
+              closable: true,
+              okText: '提交',
+              onOk () {
+                _this.spinning = true
+                // 验证成功
+                _this.handleTransfer()
+              }
+            })
+          } else {
+            this.handleTransfer()
+          }
+        }
+      })
+    },
+    // 转单
+    handleTransfer () {
+      transfer({ salesBillSn: this.$route.params.sn, transferDealerSn: this.selectedDealerSn }).then(res => {
+        if (res.status == 200) {
+          this.$message.success(res.message)
+        }
+      })
+    },
+    // 打开 转单审核弹窗
+    handleTransferAudit () {
       this.openTransferOrder = true
     },
+    // 转单审核
+    transferOrderAuditOk (val) {
+      transferAudit({ salesBillSn: this.$route.params.sn, auditPassFlag: val }).then(res => {
+        if (res.status == 200) {
+          this.openTransferOrder = false
+          this.$message.success(res.message)
+        }
+      })
+    },
     // 打开审核/一键审核弹框
     async  handleAudit (isBatch) {
       // 校验产品是否付个促销活动规则

+ 27 - 15
src/views/salesManagement/salesQueryNew/list.vue

@@ -97,7 +97,7 @@
               </a-col>
               <a-col :md="6" :sm="24">
                 <a-form-item label="发货经销商">
-                  <dealerSubareaScopeList ref="dealerSubareaScopeList" id="salesManagementList-buyerName" @change="custChange" />
+                  <dealerSubareaScopeList ref="dealerTireScopeList" placeholder="请输入发货经销商" id="salesManagementList-transferDealerSn" @change="custTireChange" />
                 </a-form-item>
               </a-col>
               <a-col :md="6" :sm="24">
@@ -115,7 +115,7 @@
                 </a-form-item>
               </a-col>
             </template>
-            <a-col :md="8" :sm="24">
+            <a-col :md="6" :sm="24">
               <a-button type="primary" :disabled="disabled" @click="$refs.table.refresh(true)">查询</a-button>
               <a-button style="margin-left: 10px" :disabled="disabled" @click="resetSearchForm()">重置</a-button>
               <a-button
@@ -193,11 +193,11 @@
           bordered>
           <!-- 销售单号 -->
           <template slot="salesBillNo" slot-scope="text, record">
-            <span v-if="$hasPermissions('B_salesDetail')" class="link-bule" @click="handleDetail(record)">{{ record.salesBillNo }}</span>
+            <span v-if="$hasPermissions('B_salesDetail')" class="link-bule" @click="handleDetail(record,'salesNewDetail')">{{ record.salesBillNo }}</span>
             <span v-else>{{ record.salesBillNo }}</span>
             <a-badge :count="'改'+record.changeTimes" :number-style="{ zoom:'80%' }" v-if="record.changeTimes>0"></a-badge>
-            <a-badge count="促" v-if="record.promoFlag==1" :number-style="{ backgroundColor: '#52c41a', zoom:'80%' }"></a-badge>
-            <a-badge count="转" :number-style="{ backgroundColor: '#ccb01e', zoom:'80%' }"></a-badge>
+            <a-badge count="促" :number-style="{ backgroundColor: '#52c41a', zoom:'80%' }"></a-badge>
+            <a-badge count="转" v-if="record.transferFlag==1" :number-style="{ backgroundColor: '#ccb01e', zoom:'80%' }"></a-badge>
           </template>
           <!-- 出库仓库 -->
           <template slot="warehouseBox" slot-scope="text, record">
@@ -223,7 +223,7 @@
                 type="link"
                 class="button-warning"
                 v-if="record.billStatus == 'WAIT_AUDIT'&&$hasPermissions('B_salesAudit')"
-                @click="handleDetailAudit(record)"
+                @click="handleDetail(record,'salesNewDetailAudit')"
               >审核</a-button>
               <a-button
                 size="small"
@@ -241,6 +241,16 @@
               >
                 编辑
               </a-button>
+              <!-- 转单显示条件:$hasPermissions('B_salesTransfer')&& 业务状态  待审核;非促销单;下级提交,且产品类型是“轮胎产品”的销售单 -->
+              <a-button
+                size="small"
+                type="link"
+                class="button-info"
+                v-if="record.promoFlag!=1&&record.billStatus == 'WAIT_AUDIT'&&record.salesBillSource==='PURCHASE'&&record.orderType==='TIRE'"
+                @click="handleDetail(record,'salesNewDetailTransfer')"
+              >
+                转单
+              </a-button>
               <a-button
                 size="small"
                 type="link"
@@ -381,7 +391,8 @@ export default {
         warehouseSn: undefined, // 仓库
         promoFlag: undefined, // 是否促销单
         expenseClainFlag: undefined, // 转费用报销单状态
-        bizUserSn: undefined // 客服
+        bizUserSn: undefined, // 客服
+        transferDealerSn: undefined// 发货经销商
       },
       // 统计数据
       totalData: {
@@ -546,6 +557,10 @@ export default {
     custChange (val) {
       this.queryParam.buyerSn = val.key
     },
+    // 选择发货经销商
+    custTireChange (val) {
+      this.queryParam.transferDealerSn = val.key
+    },
     // 所在区域
     subareaChange (val) {
       this.queryParam.subareaArea.subareaSn = val[0] ? val[0] : undefined
@@ -567,13 +582,9 @@ export default {
     handleDispatch (row) {
       this.$router.push({ name: 'waitDispatchNew', params: { salesBillSn: row.salesBillSn } })
     },
-    // 详情
-    handleDetail (row) {
-      this.$router.push({ name: 'salesNewDetail', params: { sn: row.salesBillSn } })
-    },
-    // 审核
-    handleDetailAudit (row) {
-      this.$router.push({ name: 'salesNewDetailAudit', params: { sn: row.salesBillSn } })
+    // 详情 审核  转单
+    handleDetail (row, name) {
+      this.$router.push({ name, params: { sn: row.salesBillSn, pageType: name } })
     },
     // 编辑
     handleEdit (row) {
@@ -801,8 +812,10 @@ export default {
       this.queryParam.promoFlag = undefined
       this.queryParam.expenseClainFlag = undefined
       this.queryParam.bizUserSn = undefined
+      this.queryParam.transferDealerSn = undefined
       if (this.advanced) {
         this.$refs.subarea.clearData()
+        this.$refs.dealerTireScopeList.resetForm()
       }
       this.$refs.table.refresh(true)
     },
@@ -824,7 +837,6 @@ export default {
       this.pageInit()
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
-      console.log(newValue)
       this.setTableH()
     }
   },