Преглед изворни кода

Merge commit '653b517e309b5e05f21b517f20a73a6112b02642' into HEAD

gitadmin пре 6 месеци
родитељ
комит
61153afed2

+ 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'
           }
-        ]
-      }
+        }
+      ]
+    }
+  ]
+}

+ 6 - 1
src/views/common/custList.vue

@@ -57,6 +57,11 @@ export default {
     notDealerSn: {
       type: Array,
       default: function () { return [] }
+    },
+    // 默认有权限
+    dataAuthFlag: {
+      type: [String, Number],
+      default: 1
     }
   },
   data () {
@@ -76,7 +81,7 @@ export default {
       const fetchId = this.lastFetchId
       this.data = []
       this.fetching = true
-      const params = { pageNo: 1, pageSize: 20 }
+      const params = { pageNo: 1, pageSize: 20, dataAuthFlag: this.dataAuthFlag }
       if (this.itemSn) {
         params.dealerSn = this.itemSn
       } else {

+ 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
         }

+ 1 - 0
src/views/expenseManagement/expenseReimbursement/epenseDetailModal.vue

@@ -39,6 +39,7 @@
                     id="epenseDetailModal-accountName1"
                     v-show="form.accountType=='CUSTOMER'"
                     cooperateFlag="1"
+                    dataAuthFlag="0"
                     ref="custList"
                     @change="accountNameSnChange"
                     placeholder="请选择记账名称(输入名称搜索)"></custList>

+ 0 - 1
src/views/power/dataDictionary/dataDictionary.vue

@@ -335,7 +335,6 @@ export default {
           delLookUpItem({
             id: row.id
           }).then(res => {
-            console.log(res, 'res1111')
             if (res.status == 200) {
               _this.$message.success('删除成功')
               _this.$refs.table.refresh()

+ 95 - 0
src/views/salesManagement/salesQueryNew/auditModal.vue

@@ -0,0 +1,95 @@
+<template>
+  <a-modal
+    centered
+    :footer="null"
+    :maskClosable="false"
+    class="audit-modal"
+    :title="modalTit"
+    v-model="isShow"
+    @cancel="isShow=false"
+    :width="550">
+    <a-spin :spinning="spinning" tip="Loading...">
+      <a-form-model
+        id="audit-modal-form"
+        ref="ruleForm"
+        :model="detailData"
+        :label-col="formItemLayout.labelCol"
+        :wrapper-col="formItemLayout.wrapperCol"
+      >
+        <a-form-model-item label="客户名称">{{ detailData&&detailData.buyerName || '--' }}</a-form-model-item>
+        <a-form-model-item label="发货经销商">
+          {{ detailData&&detailData.transferDealerName||'--' }}
+        </a-form-model-item>
+        <div style="margin:20px auto;width:80%;">由于<strong style="color:#ed1c24;">{{ detailData&&detailData.transferDealerName }}</strong>非<strong style="color:#ed1c24;">{{ detailData&&detailData.buyerName }}</strong>的轮胎上级或省仓,需上级审核通过后完成转单。</div>
+      </a-form-model>
+      <div class="btn-cont">
+        <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>
+export default {
+  name: 'AuditConfirmModal',
+  props: {
+    openModal: { //  弹框显示状态
+      type: Boolean,
+      default: false
+    },
+    detailData: {
+      type: Object,
+      default: () => {
+        return null
+      }
+    }
+  },
+  data () {
+    return {
+      isShow: this.openModal, //  是否打开弹框
+      formItemLayout: {
+        labelCol: { span: 6 },
+        wrapperCol: { span: 16 }
+      },
+      spinning: false
+    }
+  },
+  computed: {
+    modalTit () {
+      const title = (this.detailData && this.detailData.transferDate) ? '(' + this.detailData.transferDate + ')' : ''
+      return '转单申请' + title
+    }
+  },
+  methods: {
+    // 确认审核
+    handleSave (val) {
+      this.$emit('ok', val)
+    }
+  },
+  watch: {
+    //  父页面传过来的弹框状态
+    openModal (newValue, oldValue) {
+      this.isShow = newValue
+    },
+    //  重定义的弹框状态
+    isShow (newValue, oldValue) {
+      if (!newValue) {
+        this.$emit('close')
+      }
+    }
+  }
+}
+</script>
+
+<style lang="less">
+  .audit-modal{
+    .ant-form-item{
+      margin-bottom: 10px;
+    }
+    .btn-cont {
+      text-align: center;
+      margin: 40px 0 10px;
+    }
+  }
+</style>

+ 140 - 0
src/views/salesManagement/salesQueryNew/comps/dealerStockModal.vue

@@ -0,0 +1,140 @@
+<template>
+  <a-modal
+    v-model="isShow"
+    title="选择发货经销商"
+    centered
+    :maskClosable="false"
+    :confirmLoading="confirmLoading"
+    width="500px"
+    :footer="null"
+    @cancel="cancel">
+    <a-spin :spinning="spinning" tip="Loading...">
+      <div style="padding: 0 30px;">
+        <a-radio-group v-model="chooseVal">
+          <!-- 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&&chooseVal=='a1'"
+              dealertype="tire"
+              placeholder="请输入发货经销商名称"
+              ref="dealerSubareaScopeList"
+              id="dealerStockModal-custList"
+              style="margin-left:10px;width:280px;"
+              @change="dealerChange" />
+          </a-radio>
+        </a-radio-group>
+      </div>
+      <div style="padding: 30px 0 0;text-align: center;">
+        <a-button @click="cancel" style="margin-right: 15px" type="default" id="chooseCustom-btn-back">取消</a-button>
+        <a-button type="primary" :loading="confirmLoading" @click="handleSubmit" id="chooseCustom-btn-submit">确定</a-button>
+      </div>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+import { commonMixin } from '@/utils/mixin'
+import { querySuperiorDealer, queryTransferDealerStock } from '@/api/sales'
+import dealerSubareaScopeList from '@/views/common/dealerSubareaScopeList.vue'
+export default {
+  name: 'DealerStockModal',
+  mixins: [commonMixin],
+  props: {
+    openModal: { //  弹框显示状态
+      type: Boolean,
+      default: false
+    },
+    itemSn: {
+      type: String,
+      default: ''
+    }
+  },
+  components: { dealerSubareaScopeList },
+  data () {
+    return {
+      isShow: this.openModal,
+      spinning: false,
+      confirmLoading: false,
+      chooseVal: null,
+      radioStyle: "display:block;height: '30px';lineHeight: '30px';padding:5px 0;",
+      dealerList: [{ dealerName: '其他经销商', dealerSn: 'a1' }],
+      salesBillSn: null,
+      selectDealerSn: undefined, // 已选发货经销商
+      selectDealerName: undefined
+    }
+  },
+  methods: {
+    getDealerList () {
+      this.spinning = true
+      querySuperiorDealer({ salesBillSn: this.itemSn }).then(res => {
+        this.dealerList = res.data.concat(this.dealerList)
+        // 默认选中第一项
+        this.chooseVal = this.dealerList[0].dealerSn
+        this.spinning = false
+      })
+    },
+    // 选择经销商
+    dealerChange (val) {
+      if (val && val.key) {
+        this.selectDealerSn = val.key
+        this.selectDealerName = val.name
+      }
+    },
+    //  保存
+    handleSubmit (e) {
+      e.preventDefault()
+      const _this = this
+      let chooseRow = []
+      if (_this.chooseVal) {
+        if (_this.chooseVal === 'a1') {
+          if (!_this.selectDealerSn || !_this.selectDealerName) {
+            _this.$message.warning('请选择发货经销商!')
+            return
+          }
+          chooseRow.push({
+            dealerSn: _this.selectDealerSn,
+            dealerName: _this.selectDealerName
+          })
+        } else {
+          chooseRow = _this.dealerList.filter(item => item.dealerSn == _this.chooseVal)
+        }
+        _this.confirmLoading = true
+        queryTransferDealerStock({ salesBillSn: _this.itemSn, transferDealerSn: _this.chooseVal === 'a1' ? _this.selectDealerSn : _this.chooseVal }).then(res => {
+          if (res.status == 200) {
+            _this.confirmLoading = false
+            _this.cancel()
+            _this.$emit('ok', chooseRow[0], res.data)
+          }
+        })
+      } else {
+        _this.$message.info('请选择发货经销商类型!')
+      }
+    },
+    cancel () {
+      this.dealerList = [{ dealerName: '其他经销商', dealerSn: 'a1' }]
+      if (this.$refs && Object.keys(this.$refs).length && this.chooseVal == 'a1') {
+        this.$refs.dealerSubareaScopeList[0].resetForm()
+      }
+      this.chooseVal = null
+      this.isShow = false
+    }
+  },
+  watch: {
+    //  父页面传过来的弹框状态
+    openModal (newValue, oldValue) {
+      this.isShow = newValue
+    },
+    //  重定义的弹框状态
+    isShow (newValue, oldValue) {
+      if (!newValue) {
+        this.$emit('close')
+      } else {
+        if (this.itemSn && this.itemSn.length > 0) {
+          this.getDealerList()
+        }
+      }
+    }
+  }
+}
+</script>

+ 47 - 3
src/views/salesManagement/salesQueryNew/comps/detailProductList.vue

@@ -83,6 +83,18 @@ export default {
     showHeader: {
       type: Boolean,
       default: true
+    },
+    transferQty: {// 发货经销商库存
+      type: [String, Number],
+      default: ''
+    },
+    chooseList: { // 发货经销商库存
+      type: Array,
+      default: function () { return [] }
+    },
+    showTransferDealer: {// 显示发货经销商库存
+      type: Boolean,
+      default: true
     }
   },
   data () {
@@ -134,6 +146,15 @@ export default {
       const numsFormat = function (data) {
         return data || data == 0 ? data : '--'
       }
+
+      // 发货经销商库存
+      const transferDealerInfo = function (record, data, h) {
+        return (
+          <div>
+            {(!data || data && data * 1 < record.qty * 1) ? <span style="color:#ed1c24;">{data || '--'}</span> : <span>{data}</span>}
+          </div>)
+      }
+
       // 销售单号
       const codeFormat = function (record, data, h) {
         let ftext = ''
@@ -245,6 +266,10 @@ export default {
           arr.push({ title: '第三方库存', field: 'thirdStockQty', width: 80, key: 'mm', align: 'center', operationColumn: false, renderBodyCell: ({ row, column, rowIndex }, h) => { return numsFormat(row[column.field]) } })
         }
       }
+      if (this.showTransferDealer) {
+        arr.push({ title: '发货经销商库存', field: 'transferDealerStockQty', width: 100, key: 'tt', align: 'center', operationColumn: false, renderBodyCell: ({ row, column, rowIndex }, h) => { return transferDealerInfo(row, row[column.field], h) } })
+        this.colspanNums = this.colspanNums + 1
+      }
       this.colspanNums = this.colspanNums + 3
       arr = arr.concat([
         { title: '待下推数', field: 'unpushedQty', width: 80, key: 'o', align: 'center', operationColumn: false, renderBodyCell: ({ row, column, rowIndex }, h) => { return numsFormat(row[column.field]) } },
@@ -319,6 +344,18 @@ export default {
     showThreeStock () {
       this.showStockCol = true
     },
+    // 当满足发货经销商显示条件时  查询
+    searchTableData (list) {
+      this.dataSource = list.filter(item => {
+        if (this.transferQty == '0') { // 不满足
+          return (!item.transferDealerStockQty || (item.transferDealerStockQty && item.transferDealerStockQty * 1 < item.qty * 1))
+        } else if (this.transferQty == '1') { // 满足
+          return (item.transferDealerStockQty && item.transferDealerStockQty * 1 >= item.qty * 1)
+        }
+      }).filter(item => {
+        return item.warehouseSn == this.warehouseSn
+      })
+    },
     // 查询表格数据
     async searchTable () {
       this.dataSource = []
@@ -389,9 +426,16 @@ export default {
           }
         }
       }
-      // 赋值
-      this.dataSource = listData
-
+      // 发货经销商时 查询
+      if (this.chooseList && this.chooseList.length) {
+        this.dataSource = this.chooseList
+        if (this.transferQty) {
+          this.searchTableData(this.chooseList)
+        }
+      } else {
+        // 赋值
+        this.dataSource = listData
+      }
       // 格式化数据
       let f = 0
       let str = ''

+ 145 - 14
src/views/salesManagement/salesQueryNew/detail.vue

@@ -6,7 +6,7 @@
           <a id="salesDetail-back-btn" href="javascript:;" @click="handleBack"><a-icon type="left" /> 返回列表</a>
           <span style="margin: 0 15px;color: #666;font-weight: bold;">单号:{{ detailData&&detailData.salesBillNo }}</span>
           <span v-if="detailData&&detailData.salesBillNoSource">(原:{{ detailData&&detailData.salesBillNoSource || '--' }})</span>
-          <span style="margin: 0 10px;color: #666;">客户名称:{{ detailData&&detailData.buyerName }}</span>
+          <span style="margin: 0 10px;color: #666;">客户名称:{{ detailData&&detailData.buyerName ||'--' }}</span>
           <a-button size="small" type="link" class="button-default" @click="showDetail=!showDetail">
             <a-icon :type="showDetail ? 'eye-invisible' : 'eye'"/> {{ showDetail?'隐藏':'查看' }}信息
           </a-button>
@@ -57,11 +57,12 @@
             <a-descriptions-item label="收货电话">{{ detailData&&detailData.salesBillExtEntity&&detailData.salesBillExtEntity.consigneeTel || '--' }}</a-descriptions-item>
             <a-descriptions-item label="收款方式">{{ detailData&&detailData.settleStyleSnDictValue || '--' }}</a-descriptions-item>
             <a-descriptions-item label="审核时间">{{ detailData&&detailData.auditDate || '--' }}</a-descriptions-item>
-            <a-descriptions-item label="业务状态">{{ detailData&&detailData.billStatusDictValue || '--' }}</a-descriptions-item>
+            <a-descriptions-item label="业务状态" v-if="detailData">{{ detailData.billStatusDictValue || '--' }}{{ (detailData.billStatus=='SUPERIOR_AUDIT_REJECT'||detailData.billStatus=='TRANSFER_AUDIT_REJECT')?'('+detailData.transferDealerName+')':'' }}</a-descriptions-item>
             <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="备注" :span="3">{{ detailData&&detailData.remarks || '--' }}</a-descriptions-item>
+            <a-descriptions-item label="发货经销商" v-if="detailData&&detailData.billStatus&&(detailData.billStatus=='TRANSFER_YES'||detailData.billStatus=='TRANSFER_FINISH')">{{ detailData.transferDealerName || '--' }}</a-descriptions-item>
+            <a-descriptions-item label="备注" :span="2">{{ detailData&&detailData.remarks || '--' }}</a-descriptions-item>
           </a-descriptions>
         </div>
       </a-card>
@@ -96,12 +97,12 @@
             <div style="flex-grow: 1;width: 60%;">
               <a-form layout="inline" @keyup.enter.native="searchTable">
                 <a-row :gutter="15" type="flex">
-                  <a-col flex="300px">
+                  <a-col flex="260px">
                     <a-form-item label="出库仓库">
                       <chooseWarehouse id="salesDetail-warehouse" ref="warehouse" v-model="warehouseSn"></chooseWarehouse>
                     </a-form-item>
                   </a-col>
-                  <a-col flex="300px" v-if="hasPrompActive">
+                  <a-col flex="260px" v-if="hasPrompActive">
                     <a-form-item label="产品类型">
                       <a-select v-model.trim="promoFlag" id="salesDetail-promoFlag" allowClear :dropdownMatchSelectWidth="false" placeholder="请选择产品类型">
                         <a-select-option value="0">
@@ -125,6 +126,17 @@
                       </a-select>
                     </a-form-item>
                   </a-col>
+                  <a-col flex="260px" v-if="showTransferDealer">
+                    <a-form-item label="发货经销商库存">
+                      <v-select
+                        code="STOCK_LABEL"
+                        id="purchaseOrder-basicInfo-transferQty"
+                        v-model="transferQty"
+                        allowClear
+                        placeholder="请选择发货经销商库存是否满足"
+                      ></v-select>
+                    </a-form-item>
+                  </a-col>
                   <a-col :md="6" :sm="24" style="margin-bottom: 10px;">
                     <a-button type="primary" @click="searchTable" :disabled="disabled" id="salesDetail-refresh">查询</a-button>
                     <a-button style="margin-left: 5px" @click="resetSearchForm" id="salesDetail-reset">重置</a-button>
@@ -132,7 +144,15 @@
                 </a-row>
               </a-form>
             </div>
-            <div>
+            <div style="margin-bottom: 10px;">
+              <span v-if="selectedDealer">(发货经销商:{{ selectedDealer }})</span>
+              <a-button
+                id="salesDetail-updateStock"
+                type="primary"
+                v-if="showTransferDealer"
+                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>
@@ -149,23 +169,49 @@
             :salesBillSn="$route.params.sn || bizSn"
             :authCode="authCode"
             :maxHeight="pageHeight"
-            :showCityPrice="isCityPrice">
+            :chooseList="chooseDealerList"
+            :transferQty="transferQty"
+            :showCityPrice="isCityPrice"
+            :showTransferDealer="showTransferDealer">
           </detailProductList>
         </div>
       </a-card>
     </a-spin>
     <div class="affix-cont" :style="{padding:hideFooter?0:'7px 0 4px'}">
+      <a-button
+        style="width: 100px;margin-right:20px;"
+        :disabled="spinning"
+        type="primary"
+        class="button-info"
+        id="salesDetail-audit-btn"
+        v-if="$hasPermissions('B_salesTransfer')&&$route.params.pageType!='salesNewDetailAudit'&&(detailData&&detailData.promoFlag!=1&&(detailData.billStatus == 'WAIT_AUDIT'||detailData.billStatus == 'SUPERIOR_AUDIT_REJECT' || detailData.billStatus == 'TRANSFER_AUDIT_REJECT')&&detailData.salesBillSource=='PURCHASE'&&detailData.orderType=='TIRE')"
+        @click="handleOrder()"
+      >
+        转单
+      </a-button>
       <a-button
         style="width: 100px;"
         :disabled="spinning"
         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'||detailData.billStatus == 'SUPERIOR_AUDIT_REJECT' || detailData.billStatus == 'TRANSFER_AUDIT_REJECT')&&$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="$hasPermissions('B_higherLevelAudit')&&detailData&&detailData.billStatus == 'SUPERIOR_WAIT_AUDIT'"
+        @click="handleTransferAudit"
+      >
+        审核
+      </a-button>
       <a-button
         type="primary"
         :disabled="spinning"
@@ -181,7 +227,7 @@
         :disabled="spinning"
         type="primary"
         id="salesDetail-edit1-btn"
-        v-if="detailData&&detailData.salesBillSource == 'PURCHASE' && (detailData.billStatus == 'WAIT_AUDIT'||detailData.billStatus == 'HQ_CHANGE')&&$hasPermissions('B_salesEdit')"
+        v-if="detailData&&detailData.salesBillSource == 'PURCHASE' && (detailData.billStatus == 'WAIT_AUDIT'||detailData.billStatus == 'HQ_CHANGE'||detailData.billStatus == 'SUPERIOR_AUDIT_REJECT' || detailData.billStatus == 'TRANSFER_AUDIT_REJECT')&&$hasPermissions('B_salesEdit')"
         @click="handleChangeOrder()"
       >
         改单
@@ -192,7 +238,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'||detailData.billStatus == 'SUPERIOR_AUDIT_REJECT' || detailData.billStatus == 'TRANSFER_AUDIT_REJECT')&&$hasPermissions('B_salesAudit')&&$route.params.pageType!='salesNewDetailTransfer'"
         @click="handleAudit('batch')"
       >
         一键审核
@@ -222,6 +268,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 :itemSn="$route.params.sn" :openModal="openDealerStock" @close="openDealerStock = false" @ok="openDealerStockOk"></dealerStockModal>
+    <!-- 审核弹窗 -->
+    <auditConfirmModal :openModal="openTransferOrder" :detailData="detailData" @ok="transferOrderAuditOk" @close="openTransferOrder=false"></auditConfirmModal>
   </div>
 </template>
 
@@ -236,14 +286,17 @@ import dsModal from '@/views/salesManagement/waitDispatchNew/dsModal.vue'
 import stockOutDetail from './stockOutDetailModal.vue'
 import chooseWarehouse from '@/views/common/chooseWarehouse'
 import detailProductList from './comps/detailProductList.vue'
+import dealerStockModal from './comps/dealerStockModal.vue'
 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',
   mixins: [commonMixin],
-  components: { VSelect, printModal, auditModal, dsModal, stockOutDetail, chooseWarehouse, detailProductList, tipModal },
+  components: { VSelect, printModal, auditModal, dsModal, stockOutDetail, chooseWarehouse, detailProductList, dealerStockModal, tipModal, auditConfirmModal },
   props: {
     bizSn: { //  有值则为弹框,无值则为页面
       type: [Number, String],
@@ -270,7 +323,13 @@ export default {
       warehouseSn: undefined, // 所在仓库
       promoFlag: undefined, // 产品类型
       openTipModal: false, // 改单弹窗
-      sourceData: undefined// 价格变动数据
+      sourceData: undefined, // 价格变动数据
+      transferQty: undefined, // 发货经销商库存查询
+      openDealerStock: false, // 打开经销商库存弹窗
+      openTransferOrder: false, // 打开转单弹窗
+      selectedDealer: '', // 发货经销商名称
+      selectedDealerSn: undefined, // 发货经销商sn
+      chooseDealerList: []// 发货经销商数据
     }
   },
   computed: {
@@ -289,7 +348,7 @@ export default {
     // 是否因此底部栏按钮
     hideFooter () {
       const detailData = this.detailData
-      return detailData && (detailData.billStatus == 'HQ_CHANGE' || (detailData.salesBillSource != 'SALES' && detailData.billStatus == 'AUDIT_REJECT') || detailData.billStatus == 'FINISH' || detailData.billStatus == 'OUTING_WAREHOUSE')
+      return detailData && ((detailData.salesBillSource != 'SALES' && detailData.billStatus == 'AUDIT_REJECT') || detailData.billStatus == 'FINISH' || detailData.billStatus == 'OUTING_WAREHOUSE' || detailData.billStatus == 'TRANSFER_FINISH' || detailData.billStatus == 'TRANSFER_YES')
     },
     // 是否有促销活动产品
     hasPrompActive () {
@@ -301,7 +360,11 @@ export default {
     },
     // 是否显示库存列
     showStock () {
-      return this.detailData && (this.detailData.billStatus == 'WAIT_AUDIT' || this.detailData.billStatus == 'HQ_CHANGE') && this.$hasPermissions('B_salesAudit')
+      return this.detailData && (this.detailData.billStatus == 'WAIT_AUDIT' || this.detailData.billStatus == 'HQ_CHANGE' || this.detailData.billStatus == 'SUPERIOR_AUDIT_REJECT' || this.detailData.billStatus == 'TRANSFER_AUDIT_REJECT') && this.$hasPermissions('B_salesAudit')
+    },
+    // 是否显示发货经销商按钮  发货经销商库存
+    showTransferDealer () {
+      return this.$hasPermissions('B_salesTransfer') && this.$route.params.pageType != 'salesNewDetailAudit' && (this.detailData && this.detailData.promoFlag != 1 && (this.detailData.billStatus == 'WAIT_AUDIT' || this.detailData.billStatus == 'SUPERIOR_AUDIT_REJECT' || this.detailData.billStatus == 'TRANSFER_AUDIT_REJECT') && this.detailData.salesBillSource == 'PURCHASE' && this.detailData.orderType == 'TIRE')
     },
     // 表格高度计算
     pageHeight () {
@@ -313,6 +376,19 @@ export default {
     handleBack () {
       this.$router.push({ name: 'salesQueryNewList' })
     },
+    // 打开 发货经销商库存弹窗
+    openDealerModal () {
+      this.openDealerStock = true
+    },
+    openDealerStockOk (val, data) {
+      this.selectedDealer = val.dealerName
+      this.selectedDealerSn = val.dealerSn
+      this.chooseDealerList = data
+      this.openDealerStock = false
+      this.$nextTick(() => {
+        this.searchTable()
+      })
+    },
     // 编辑
     handleEdit () {
       const row = this.detailData
@@ -363,6 +439,7 @@ export default {
     //  重置
     resetSearchForm () {
       this.warehouseSn = undefined
+      this.transferQty = undefined
       this.promoFlag = undefined
       setTimeout(() => {
         this.searchTable()
@@ -409,6 +486,60 @@ 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 && Object.keys(res.data).length) {
+            _this.$confirm({
+              title: '提示',
+              content: <div><strong style="color:#ed1c24;">{res.data.dealerName}</strong>非<strong style="color:#ed1c24;">{res.data.buyerName}</strong>的轮胎上级或省仓,提交后待上级审核通过完成转单</div>,
+              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.spinning = false
+          this.$message.success(res.message)
+          //  转单成功 关闭详情跳列表
+          this.handleBack()
+        }
+      })
+    },
+    // 打开 转单审核弹窗
+    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)
+          //  转单成功 关闭详情跳列表
+          this.handleBack()
+        }
+      })
+    },
     // 打开审核/一键审核弹框
     async  handleAudit (isBatch) {
       // 校验产品是否付个促销活动规则

+ 45 - 16
src/views/salesManagement/salesQueryNew/list.vue

@@ -95,6 +95,11 @@
                     allowClear></v-select>
                 </a-form-item>
               </a-col>
+              <a-col :md="6" :sm="24">
+                <a-form-item label="发货经销商">
+                  <custList id="salesManagementList-transferDealerSn" dataAuthFlag="0" placeholder="请输入发货经销商" ref="dealerTireScopeList" @change="custTireChange" />
+                </a-form-item>
+              </a-col>
               <a-col :md="6" :sm="24">
                 <a-form-item label="转费用报销单">
                   <a-select v-model="queryParam.expenseClainFlag" placeholder="请选择转费用报销单状态" allowClear>
@@ -110,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
@@ -188,10 +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="转" v-if="record.transferFlag==1" :number-style="{ backgroundColor: '#ccb01e', zoom:'80%' }"></a-badge>
           </template>
           <!-- 出库仓库 -->
           <template slot="warehouseBox" slot-scope="text, record">
@@ -216,8 +222,8 @@
                 size="small"
                 type="link"
                 class="button-warning"
-                v-if="record.billStatus == 'WAIT_AUDIT'&&$hasPermissions('B_salesAudit')"
-                @click="handleDetailAudit(record)"
+                v-if="(record.billStatus == 'WAIT_AUDIT' || record.billStatus == 'SUPERIOR_AUDIT_REJECT' || record.billStatus == 'TRANSFER_AUDIT_REJECT')&&$hasPermissions('B_salesAudit')"
+                @click="handleDetail(record,'salesNewDetailAudit')"
               >审核</a-button>
               <a-button
                 size="small"
@@ -239,11 +245,31 @@
                 size="small"
                 type="link"
                 class="button-info"
-                v-if="record.salesBillSource == 'PURCHASE' && (record.billStatus == 'WAIT_AUDIT' || record.billStatus == 'HQ_CHANGE') && $hasPermissions('B_salesEdit')"
+                v-if="record.salesBillSource == 'PURCHASE' && (record.billStatus == 'WAIT_AUDIT' || record.billStatus == 'HQ_CHANGE' || record.billStatus == 'SUPERIOR_AUDIT_REJECT' || record.billStatus == 'TRANSFER_AUDIT_REJECT') && $hasPermissions('B_salesEdit')"
                 @click="handleChangeOrder(record)"
               >
                 改单
               </a-button>
+              <!-- 转单显示条件: 业务状态  待审核;非促销单;下级提交,且产品类型是“轮胎产品”的销售单 -->
+              <a-button
+                size="small"
+                type="link"
+                class="button-success"
+                v-if="$hasPermissions('B_salesTransfer')&&record.promoFlag!=1&&(record.billStatus == 'WAIT_AUDIT'||record.billStatus == 'SUPERIOR_AUDIT_REJECT' || record.billStatus == 'TRANSFER_AUDIT_REJECT')&&record.salesBillSource=='PURCHASE'&&record.orderType==='TIRE'"
+                @click="handleDetail(record,'salesNewDetailTransfer')"
+              >
+                转单
+              </a-button>
+              <!-- 上级审核 -->
+              <a-button
+                size="small"
+                type="link"
+                class="button-info"
+                v-if="$hasPermissions('B_higherLevelAudit')&&record.billStatus == 'SUPERIOR_WAIT_AUDIT'"
+                @click="handleDetail(record,'salesNewDetailTransfer')"
+              >
+                上级审核
+              </a-button>
               <a-button
                 size="small"
                 type="link"
@@ -257,7 +283,7 @@
                 size="small"
                 type="link"
                 class="button-error"
-                v-if="record.salesBillSource == 'PURCHASE' && (record.billStatus == 'WAIT_AUDIT' || record.billStatus == 'HQ_CHANGE') && $hasPermissions('B_salesDel')"
+                v-if="record.salesBillSource == 'PURCHASE' && (record.billStatus == 'WAIT_AUDIT' || record.billStatus == 'HQ_CHANGE'||record.billStatus == 'SUPERIOR_AUDIT_REJECT' || record.billStatus == 'TRANSFER_AUDIT_REJECT') && $hasPermissions('B_salesDel')"
                 @click="handleDel(record)"
               >
                 取消
@@ -328,6 +354,7 @@ import baseDataModal from '@/views/expenseManagement/expenseReimbursement/baseDa
 import reportModal from '@/views/common/reportModal.vue'
 import chooseWarehouse from '@/views/common/chooseWarehouse'
 import customerService from '@/views/common/customerService'
+import custList from '@/views/common/custList.vue'
 // 接口
 import { dispatchBatchPrintStatus, queryBySalesBillSn } from '@/api/dispatch'
 import { salesList, salesDel, salesCancle, salesCount, queryCreateBySalesBillSn, expenseAccountSave, changeBillCheckUpdatePrice, changeBillCheck } from '@/api/salesNew'
@@ -336,7 +363,7 @@ import { salesDetailExport } from '@/api/salesBillReport'
 export default {
   name: 'SalesQueryList',
   mixins: [commonMixin],
-  components: { STable, VSelect, tipModal, chooseCustomModal, dealerSubareaScopeList, Area, rangeDate, subarea, commonModal, reportModal, chooseWarehouse, baseDataModal, customerService },
+  components: { STable, VSelect, tipModal, chooseCustomModal, dealerSubareaScopeList, Area, rangeDate, subarea, commonModal, reportModal, custList, chooseWarehouse, baseDataModal, customerService },
   data () {
     return {
       spinning: false,
@@ -375,7 +402,8 @@ export default {
         warehouseSn: undefined, // 仓库
         promoFlag: undefined, // 是否促销单
         expenseClainFlag: undefined, // 转费用报销单状态
-        bizUserSn: undefined // 客服
+        bizUserSn: undefined, // 客服
+        transferDealerSn: undefined// 发货经销商
       },
       // 统计数据
       totalData: {
@@ -540,6 +568,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
@@ -561,13 +593,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) {
@@ -795,8 +823,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)
     },
@@ -818,7 +848,6 @@ export default {
       this.pageInit()
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
-      console.log(newValue)
       this.setTableH()
     }
   },