浏览代码

Merge branch 'deploy' of jianguan-web/jg-ocs-html into master

陈瑞 4 年之前
父节点
当前提交
6dfaa73a24

+ 409 - 0
src/config/router.config.js

@@ -1572,6 +1572,415 @@ export const asyncRouterMap = [
           }
         ]
       },
+      // 报表
+      {
+        path: '/reportData',
+        redirect: '/reportData/countryTypeProvinceSalesDetails',
+        component: PageView,
+        meta: {
+          title: '报表',
+          icon: 'project'
+          // permission: 'M_basicData'
+        },
+        children: [
+          {
+            path: '/reportData/salesDetails',
+            redirect: '/reportData/salesDetails/list',
+            name: 'salesDetails',
+            component: RouteView,
+            meta: {
+              title: '销售明细(开单统计)',
+              icon: 'profile'
+              // permission: 'M_warehouseList'
+            },
+            hideChildrenInMenu: true,
+            children: [
+              {
+                path: 'list',
+                name: 'salesDetailsList',
+                component: () => import(/* webpackChunkName: "reportData" */ '@/views/reportData/salesDetails/list.vue'),
+                meta: {
+                  title: '销售明细列表',
+                  icon: 'profile',
+                  hidden: true
+                  // permission: 'M_warehouseList'
+                }
+              }
+            ]
+          },
+          {
+            path: '/reportData/allocationOrderTotal',
+            redirect: '/reportData/allocationOrderTotal/list',
+            name: 'allocationOrderTotal',
+            component: RouteView,
+            meta: {
+              title: '调拨开单统计',
+              icon: 'profile'
+              // permission: 'M_warehouseList'
+            },
+            hideChildrenInMenu: true,
+            children: [
+              {
+                path: 'list',
+                name: 'allocationOrderTotalList',
+                component: () => import(/* webpackChunkName: "reportData" */ '@/views/reportData/allocationOrderTotal/list.vue'),
+                meta: {
+                  title: '调拨开单列表',
+                  icon: 'profile',
+                  hidden: true
+                  // permission: 'M_warehouseList'
+                }
+              }
+            ]
+          },
+          {
+            path: '/reportData/allocationDetails',
+            redirect: '/reportData/allocationDetails/list',
+            name: 'allocationDetails',
+            component: RouteView,
+            meta: {
+              title: '调拨明细',
+              icon: 'profile'
+              // permission: 'M_warehouseList'
+            },
+            hideChildrenInMenu: true,
+            children: [
+              {
+                path: 'list',
+                name: 'allocationDetailsList',
+                component: () => import(/* webpackChunkName: "reportData" */ '@/views/reportData/allocationDetails/list.vue'),
+                meta: {
+                  title: '调拨明细列表',
+                  icon: 'profile',
+                  hidden: true
+                  // permission: 'M_warehouseList'
+                }
+              }
+            ]
+          },
+          {
+            path: '/reportData/salesReturnsReport',
+            redirect: '/reportData/salesReturnsReport/list',
+            name: 'salesReturnsReport',
+            component: RouteView,
+            meta: {
+              title: '销售退货单报表',
+              icon: 'profile'
+              // permission: 'M_warehouseList'
+            },
+            hideChildrenInMenu: true,
+            children: [
+              {
+                path: 'list',
+                name: 'salesReturnsReportList',
+                component: () => import(/* webpackChunkName: "reportData" */ '@/views/reportData/salesReturnsReport/list.vue'),
+                meta: {
+                  title: '销售退货单报表列表',
+                  icon: 'profile',
+                  hidden: true
+                  // permission: 'M_warehouseList'
+                }
+              }
+            ]
+          },
+          {
+            path: '/reportData/salesReturnDetailReport',
+            redirect: '/reportData/salesReturnDetailReport/list',
+            name: 'salesReturnDetailReport',
+            component: RouteView,
+            meta: {
+              title: '销售退货明细报表',
+              icon: 'profile'
+              // permission: 'M_warehouseList'
+            },
+            hideChildrenInMenu: true,
+            children: [{
+              path: 'list',
+              name: 'salesReturnDetailReportList',
+              component: () => import(/* webpackChunkName: "shop" */
+                '@/views/reportData/salesReturnDetailReport/list.vue'),
+              meta: {
+                title: '销售退货明细报表列表',
+                icon: 'profile',
+                hidden: true
+                // permission: 'M_warehouseList'
+              }
+            }]
+          },
+          {
+            path: '/reportData/salesSlipReport',
+            redirect: '/reportData/salesSlipReport/list',
+            name: 'salesSlipReport',
+            component: RouteView,
+            meta: {
+              title: '开单销售单报表',
+              icon: 'profile'
+              // permission: 'M_warehouseList'
+            },
+            hideChildrenInMenu: true,
+            children: [{
+              path: 'list',
+              name: 'salesSlipReportList',
+              component: () => import(/* webpackChunkName: "shop" */
+                '@/views/reportData/salesSlipReport/list.vue'),
+              meta: {
+                title: '开单销售单报表列表',
+                icon: 'profile',
+                hidden: true
+                // permission: 'M_warehouseList'
+              }
+            }]
+          },
+          {
+            path: '/reportData/returnSlipReport',
+            redirect: '/reportData/returnSlipReport/list',
+            name: 'returnSlipReport',
+            component: RouteView,
+            meta: {
+              title: '开单退货单报表',
+              icon: 'profile'
+              // permission: 'M_warehouseList'
+            },
+            hideChildrenInMenu: true,
+            children: [{
+              path: 'list',
+              name: 'returnSlipReportList',
+              component: () => import(/* webpackChunkName: "shop" */
+                '@/views/reportData/returnSlipReport/list.vue'),
+              meta: {
+                title: '开单退货单报表列表',
+                icon: 'profile',
+                hidden: true
+                // permission: 'M_warehouseList'
+              }
+            }]
+          },
+          {
+            path: '/reportData/salesAmountReport',
+            redirect: '/reportData/salesAmountReport/list',
+            name: 'salesAmountReport',
+            component: RouteView,
+            meta: {
+              title: '开单销售报表',
+              icon: 'profile'
+              // permission: 'M_warehouseList'
+            },
+            hideChildrenInMenu: true,
+            children: [{
+              path: 'list',
+              name: 'salesAmountReportList',
+              component: () => import(/* webpackChunkName: "shop" */
+                '@/views/reportData/salesAmountReport/list.vue'),
+              meta: {
+                title: '开单销售报表列表',
+                icon: 'profile',
+                hidden: true
+                // permission: 'M_warehouseList'
+              }
+            }]
+          },
+          {
+            path: '/reportData/actualSalesReport',
+            redirect: '/reportData/actualSalesReport/list',
+            name: 'actualSalesReport',
+            component: RouteView,
+            meta: {
+              title: '实售销售报表',
+              icon: 'profile'
+              // permission: 'M_warehouseList'
+            },
+            hideChildrenInMenu: true,
+            children: [
+              {
+                path: 'list',
+                name: 'actualSalesReportList',
+                component: () => import(/* webpackChunkName: "reportData" */ '@/views/reportData/actualSalesReport/list.vue'),
+                meta: {
+                  title: '实售销售列表',
+                  icon: 'profile',
+                  hidden: true
+                  // permission: 'M_warehouseList'
+                }
+              }
+            ]
+          },
+          {
+            path: '/reportData/billingReturnReport',
+            redirect: '/reportData/billingReturnReport/list',
+            name: 'billingReturnReport',
+            component: RouteView,
+            meta: {
+              title: '开单退货报表',
+              icon: 'profile'
+              // permission: 'M_warehouseList'
+            },
+            hideChildrenInMenu: true,
+            children: [
+              {
+                path: 'list',
+                name: 'billingReturnReportList',
+                component: () => import(/* webpackChunkName: "reportData" */ '@/views/reportData/billingReturnReport/list.vue'),
+                meta: {
+                  title: '开单退货列表',
+                  icon: 'profile',
+                  hidden: true
+                  // permission: 'M_warehouseList'
+                }
+              }
+            ]
+          },
+          {
+            path: '/reportData/salesReturnReport',
+            redirect: '/reportData/salesReturnReport/list',
+            name: 'salesReturnReport',
+            component: RouteView,
+            meta: {
+              title: '实售退货报表',
+              icon: 'profile'
+              // permission: 'M_warehouseList'
+            },
+            hideChildrenInMenu: true,
+            children: [
+              {
+                path: 'list',
+                name: 'salesReturnReportList',
+                component: () => import(/* webpackChunkName: "reportData" */ '@/views/reportData/salesReturnReport/list.vue'),
+                meta: {
+                  title: '实售退货列表',
+                  icon: 'profile',
+                  hidden: true
+                  // permission: 'M_warehouseList'
+                }
+              }
+            ]
+          },
+          {
+            path: '/reportData/priceDifferenceDetailReport',
+            redirect: '/reportData/priceDifferenceDetailReport/list',
+            name: 'priceDifferenceDetailReport',
+            component: RouteView,
+            meta: {
+              title: '总部差价明细报表',
+              icon: 'profile'
+              // permission: 'M_warehouseList'
+            },
+            hideChildrenInMenu: true,
+            children: [
+              {
+                path: 'list',
+                name: 'priceDifferenceDetailReportList',
+                component: () => import(/* webpackChunkName: "reportData" */ '@/views/reportData/priceDifferenceDetailReport/list.vue'),
+                meta: {
+                  title: '总部差价明细列表',
+                  icon: 'profile',
+                  hidden: true
+                  // permission: 'M_warehouseList'
+                }
+              }
+            ]
+          },
+          {
+            path: '/reportData/provinceTypeSalesDetails',
+            redirect: '/reportData/provinceTypeSalesDetails/list',
+            name: 'provinceTypeSalesDetails',
+            component: RouteView,
+            meta: {
+              title: '全国各省品类实际销售明细',
+              icon: 'profile'
+              // permission: 'M_warehouseList'
+            },
+            hideChildrenInMenu: true,
+            children: [
+              {
+                path: 'list',
+                name: 'provinceTypeSalesDetailsList',
+                component: () => import(/* webpackChunkName: "shop" */ '@/views/reportData/provinceTypeSalesDetails/list.vue'),
+                meta: {
+                  title: '全国各省品类实际销售明细列表',
+                  icon: 'profile',
+                  hidden: true
+                  // permission: 'M_warehouseList'
+                }
+              }
+            ]
+          },
+          {
+            path: '/reportData/districtTypeSalesDetails',
+            redirect: '/reportData/districtTypeSalesDetails/list',
+            name: 'districtTypeSalesDetails',
+            component: RouteView,
+            meta: {
+              title: '全国各区品类实际销售明细',
+              icon: 'profile'
+              // permission: 'M_warehouseList'
+            },
+            hideChildrenInMenu: true,
+            children: [
+              {
+                path: 'list',
+                name: 'districtTypeSalesDetailsList',
+                component: () => import(/* webpackChunkName: "shop" */ '@/views/reportData/districtTypeSalesDetails/list.vue'),
+                meta: {
+                  title: '全国各区品类实际销售明细列表',
+                  icon: 'profile',
+                  hidden: true
+                  // permission: 'M_warehouseList'
+                }
+              }
+            ]
+          },
+          {
+            path: '/reportData/regionalPromotionCostStatistics',
+            redirect: '/reportData/regionalPromotionCostStatistics/list',
+            name: 'regionalPromotionCostStatistics',
+            component: RouteView,
+            meta: {
+              title: '区域促销费用统计',
+              icon: 'profile'
+              // permission: 'M_warehouseList'
+            },
+            hideChildrenInMenu: true,
+            children: [
+              {
+                path: 'list',
+                name: 'regionalPromotionCostStatisticsList',
+                component: () => import(/* webpackChunkName: "shop" */ '@/views/reportData/regionalPromotionCostStatistics/list.vue'),
+                meta: {
+                  title: '区域促销费用统计列表',
+                  icon: 'profile',
+                  hidden: true
+                  // permission: 'M_warehouseList'
+                }
+              }
+            ]
+          },
+          {
+            path: '/reportData/nationalCustomerCostStatistics',
+            redirect: '/reportData/nationalCustomerCostStatistics/list',
+            name: 'nationalCustomerCostStatistics',
+            component: RouteView,
+            meta: {
+              title: '全国客户费用统计',
+              icon: 'profile'
+              // permission: 'M_warehouseList'
+            },
+            hideChildrenInMenu: true,
+            children: [
+              {
+                path: 'list',
+                name: 'nationalCustomerCostStatisticsList',
+                component: () => import(/* webpackChunkName: "shop" */ '@/views/reportData/nationalCustomerCostStatistics/list.vue'),
+                meta: {
+                  title: '全国客户费用统计列表',
+                  icon: 'profile',
+                  hidden: true
+                  // permission: 'M_warehouseList'
+                }
+              }
+            ]
+          }
+        ]
+      },
       // 权限管理
       {
         path: '/auth',

+ 98 - 0
src/libs/reportData.js

@@ -0,0 +1,98 @@
+// 报表 数据
+export default {
+  provinceTypeSalesList: [ //  全国各省品类实际销售明细
+    { id: '1', area: 'A区', province: '广西省', targetName: 100.00, dealerLevelDictValue: 200.00, totalQty: 300.00, totalCost: 300.00, totalPrice: 400.00, auditTime: 700.00, allocateTypeName: 500.00, stateDictValue: 600.00, printStateDictValue: 700.00, printCount: 800.00, printCounts: 900.00, printCsounts: 1000.00, printdCounts: 4500.00, prfintCounts: 100.00, printCogunts: 200.00, phrintCounts: 300.00, printCsountss: 600.00, prinftCounts: 400.00, prisntCogunts: 500.00, prinxtCounts: 900.00, printCocunts: 600.00, printCvounts: 700.00, printCgounts: 800.00, printCouhnts: 9100.00, printCoujnts: 900.00, printCournts: 10000.00 },
+    { id: '2', area: 'A区', province: '贵州省', targetName: 100.00, dealerLevelDictValue: 200.00, totalQty: 300.00, totalCost: 300.00, totalPrice: 400.00, auditTime: 700.00, allocateTypeName: 500.00, stateDictValue: 600.00, printStateDictValue: 700.00, printCount: 800.00, printCounts: 900.00, printCsounts: 1000.00, printdCounts: 4500.00, prfintCounts: 100.00, printCogunts: 200.00, phrintCounts: 300.00, printCsountss: 600.00, prinftCounts: 400.00, prisntCogunts: 500.00, prinxtCounts: 900.00, printCocunts: 600.00, printCvounts: 700.00, printCgounts: 800.00, printCouhnts: 9100.00, printCoujnts: 900.00, printCournts: 10000.00 },
+    { id: '3', area: 'A区', province: '海南省', targetName: 100.00, dealerLevelDictValue: 200.00, totalQty: 300.00, totalCost: 300.00, totalPrice: 400.00, auditTime: 700.00, allocateTypeName: 500.00, stateDictValue: 600.00, printStateDictValue: 700.00, printCount: 800.00, printCounts: 900.00, printCsounts: 1000.00, printdCounts: 4500.00, prfintCounts: 100.00, printCogunts: 200.00, phrintCounts: 300.00, printCsountss: 600.00, prinftCounts: 400.00, prisntCogunts: 500.00, prinxtCounts: 900.00, printCocunts: 600.00, printCvounts: 700.00, printCgounts: 800.00, printCouhnts: 9100.00, printCoujnts: 900.00, printCournts: 10000.00 },
+    { id: '4', area: 'A区', province: '四川省', targetName: 100.00, dealerLevelDictValue: 200.00, totalQty: 300.00, totalCost: 300.00, totalPrice: 400.00, auditTime: 700.00, allocateTypeName: 500.00, stateDictValue: 600.00, printStateDictValue: 700.00, printCount: 800.00, printCounts: 900.00, printCsounts: 1000.00, printdCounts: 4500.00, prfintCounts: 100.00, printCogunts: 200.00, phrintCounts: 300.00, printCsountss: 600.00, prinftCounts: 400.00, prisntCogunts: 500.00, prinxtCounts: 900.00, printCocunts: 600.00, printCvounts: 700.00, printCgounts: 800.00, printCouhnts: 9100.00, printCoujnts: 900.00, printCournts: 10000.00 },
+    { id: '5', area: 'B区', province: '安徽省', targetName: 100.00, dealerLevelDictValue: 200.00, totalQty: 300.00, totalCost: 300.00, totalPrice: 400.00, auditTime: 700.00, allocateTypeName: 500.00, stateDictValue: 600.00, printStateDictValue: 700.00, printCount: 800.00, printCounts: 900.00, printCsounts: 1000.00, printdCounts: 4500.00, prfintCounts: 100.00, printCogunts: 200.00, phrintCounts: 300.00, printCsountss: 600.00, prinftCounts: 400.00, prisntCogunts: 500.00, prinxtCounts: 900.00, printCocunts: 600.00, printCvounts: 700.00, printCgounts: 800.00, printCouhnts: 9100.00, printCoujnts: 900.00, printCournts: 10000.00 },
+    { id: '6', area: 'B区', province: '福建省', targetName: 100.00, dealerLevelDictValue: 200.00, totalQty: 300.00, totalCost: 300.00, totalPrice: 400.00, auditTime: 700.00, allocateTypeName: 500.00, stateDictValue: 600.00, printStateDictValue: 700.00, printCount: 800.00, printCounts: 900.00, printCsounts: 1000.00, printdCounts: 4500.00, prfintCounts: 100.00, printCogunts: 200.00, phrintCounts: 300.00, printCsountss: 600.00, prinftCounts: 400.00, prisntCogunts: 500.00, prinxtCounts: 900.00, printCocunts: 600.00, printCvounts: 700.00, printCgounts: 800.00, printCouhnts: 9100.00, printCoujnts: 900.00, printCournts: 10000.00 },
+    { id: '7', area: 'B区', province: '湖南省', targetName: 100.00, dealerLevelDictValue: 200.00, totalQty: 300.00, totalCost: 300.00, totalPrice: 400.00, auditTime: 700.00, allocateTypeName: 500.00, stateDictValue: 600.00, printStateDictValue: 700.00, printCount: 800.00, printCounts: 900.00, printCsounts: 1000.00, printdCounts: 4500.00, prfintCounts: 100.00, printCogunts: 200.00, phrintCounts: 300.00, printCsountss: 600.00, prinftCounts: 400.00, prisntCogunts: 500.00, prinxtCounts: 900.00, printCocunts: 600.00, printCvounts: 700.00, printCgounts: 800.00, printCouhnts: 9100.00, printCoujnts: 900.00, printCournts: 10000.00 },
+    { id: '8', area: 'B区', province: '上海市', targetName: 100.00, dealerLevelDictValue: 200.00, totalQty: 300.00, totalCost: 300.00, totalPrice: 400.00, auditTime: 700.00, allocateTypeName: 500.00, stateDictValue: 600.00, printStateDictValue: 700.00, printCount: 800.00, printCounts: 900.00, printCsounts: 1000.00, printdCounts: 4500.00, prfintCounts: 100.00, printCogunts: 200.00, phrintCounts: 300.00, printCsountss: 600.00, prinftCounts: 400.00, prisntCogunts: 500.00, prinxtCounts: 900.00, printCocunts: 600.00, printCvounts: 700.00, printCgounts: 800.00, printCouhnts: 9100.00, printCoujnts: 900.00, printCournts: 10000.00 },
+    { id: '9', area: '合计', province: '20个', targetName: 800.00, dealerLevelDictValue: 1600.00, totalQty: 2400.00, totalCost: 2400.00, totalPrice: 3200.00, auditTime: 5600.00, allocateTypeName: 4000.00, stateDictValue: 4800.00, printStateDictValue: 5600.00, printCount: 6400.00, printCounts: 7200.00, printCsounts: 8000.00, printdCounts: 36000.00, prfintCounts: 800.00, printCogunts: 1600.00, phrintCounts: 2400.00, printCsountss: 4800.00, prinftCounts: 3200.00, prisntCogunts: 4000.00, prinxtCounts: 7200.00, printCocunts: 4800.00, printCvounts: 5600.00, printCgounts: 6400.00, printCouhnts: 72800.00, printCoujnts: 7200.00, printCournts: 80000.00 }
+  ],
+  districtTypeSalesList: [ //  全国各区品类实际销售明细
+    { id: '1', area: 'A区', targetName: 100.00, dealerLevelDictValue: 200.00, totalQty: 300.00, totalCost: 300.00, totalPrice: 400.00, auditTime: 700.00, allocateTypeName: 500.00, stateDictValue: 600.00, printStateDictValue: 700.00, printCount: 800.00, printCounts: 900.00, printCsounts: 1000.00, printdCounts: 4500.00, prfintCounts: 100.00, printCogunts: 200.00, phrintCounts: 300.00, printCsountss: 600.00, prinftCounts: 400.00, prisntCogunts: 500.00, prinxtCounts: 900.00, printCocunts: 600.00, printCvounts: 700.00, printCgounts: 800.00, printCouhnts: 9100.00, printCoujnts: 900.00, printCournts: 10000.00 },
+    { id: '2', area: 'B区', targetName: 100.00, dealerLevelDictValue: 200.00, totalQty: 300.00, totalCost: 300.00, totalPrice: 400.00, auditTime: 700.00, allocateTypeName: 500.00, stateDictValue: 600.00, printStateDictValue: 700.00, printCount: 800.00, printCounts: 900.00, printCsounts: 1000.00, printdCounts: 4500.00, prfintCounts: 100.00, printCogunts: 200.00, phrintCounts: 300.00, printCsountss: 600.00, prinftCounts: 400.00, prisntCogunts: 500.00, prinxtCounts: 900.00, printCocunts: 600.00, printCvounts: 700.00, printCgounts: 800.00, printCouhnts: 9100.00, printCoujnts: 900.00, printCournts: 10000.00 },
+    { id: '3', area: 'C区', targetName: 100.00, dealerLevelDictValue: 200.00, totalQty: 300.00, totalCost: 300.00, totalPrice: 400.00, auditTime: 700.00, allocateTypeName: 500.00, stateDictValue: 600.00, printStateDictValue: 700.00, printCount: 800.00, printCounts: 900.00, printCsounts: 1000.00, printdCounts: 4500.00, prfintCounts: 100.00, printCogunts: 200.00, phrintCounts: 300.00, printCsountss: 600.00, prinftCounts: 400.00, prisntCogunts: 500.00, prinxtCounts: 900.00, printCocunts: 600.00, printCvounts: 700.00, printCgounts: 800.00, printCouhnts: 9100.00, printCoujnts: 900.00, printCournts: 10000.00 },
+    { id: '4', area: 'D区', targetName: 100.00, dealerLevelDictValue: 200.00, totalQty: 300.00, totalCost: 300.00, totalPrice: 400.00, auditTime: 700.00, allocateTypeName: 500.00, stateDictValue: 600.00, printStateDictValue: 700.00, printCount: 800.00, printCounts: 900.00, printCsounts: 1000.00, printdCounts: 4500.00, prfintCounts: 100.00, printCogunts: 200.00, phrintCounts: 300.00, printCsountss: 600.00, prinftCounts: 400.00, prisntCogunts: 500.00, prinxtCounts: 900.00, printCocunts: 600.00, printCvounts: 700.00, printCgounts: 800.00, printCouhnts: 9100.00, printCoujnts: 900.00, printCournts: 10000.00 },
+    { id: '5', area: '广东区', targetName: 100.00, dealerLevelDictValue: 200.00, totalQty: 300.00, totalCost: 300.00, totalPrice: 400.00, auditTime: 700.00, allocateTypeName: 500.00, stateDictValue: 600.00, printStateDictValue: 700.00, printCount: 800.00, printCounts: 900.00, printCsounts: 1000.00, printdCounts: 4500.00, prfintCounts: 100.00, printCogunts: 200.00, phrintCounts: 300.00, printCsountss: 600.00, prinftCounts: 400.00, prisntCogunts: 500.00, prinxtCounts: 900.00, printCocunts: 600.00, printCvounts: 700.00, printCgounts: 800.00, printCouhnts: 9100.00, printCoujnts: 900.00, printCournts: 10000.00 },
+    { id: '6', area: '合计', targetName: 500.00, dealerLevelDictValue: 1000.00, totalQty: 1500.00, totalCost: 1500.00, totalPrice: 2000.00, auditTime: 3500.00, allocateTypeName: 2500.00, stateDictValue: 3000.00, printStateDictValue: 3500.00, printCount: 4000.00, printCounts: 4500.00, printCsounts: 5000.00, printdCounts: 22500.00, prfintCounts: 500.00, printCogunts: 1000.00, phrintCounts: 1500.00, printCsountss: 2400.00, prinftCounts: 2000.00, prisntCogunts: 2500.00, prinxtCounts: 4500.00, printCocunts: 3000.00, printCvounts: 3500.00, printCgounts: 4000.00, printCouhnts: 45500.00, printCoujnts: 4500.00, printCournts: 50000.00 }
+  ],
+  regionalPromotionCostStatisticsList: [ //  区域促销费用统计
+    { id: '1', province: '广东省', targetName: '工单促销费用', dealerLevelDictValue: 100.00, totalQty: 100.00, totalCost: 100.00, totalPrice: 100.00, auditTime: 100.00, allocateTypeName: 100.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 600.00, printCogunts: 24000.00, phrintCounts: 2.5, printCsountss: 450.00, prinftCounts: 150.00 },
+    { id: '2', province: '广东省', targetName: '促销品费用', dealerLevelDictValue: 100.00, totalQty: 100.00, totalCost: 100.00, totalPrice: 100.00, auditTime: 100.00, allocateTypeName: 100.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 600.00, printCogunts: 24000.00, phrintCounts: 2.5, printCsountss: 450.00, prinftCounts: 150.00 },
+    { id: '3', province: '广东省', targetName: '配送品费用', dealerLevelDictValue: 100.00, totalQty: 100.00, totalCost: 100.00, totalPrice: 100.00, auditTime: 100.00, allocateTypeName: 100.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 600.00, printCogunts: 24000.00, phrintCounts: 2.5, printCsountss: 450.00, prinftCounts: 150.00 },
+    { id: '4', province: '广东省', targetName: '营销费用', dealerLevelDictValue: 100.00, totalQty: 100.00, totalCost: 100.00, totalPrice: 100.00, auditTime: 100.00, allocateTypeName: 100.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 600.00, printCogunts: 24000.00, phrintCounts: 2.5, printCsountss: 450.00, prinftCounts: 150.00 },
+    { id: '5', province: '广东省', targetName: '客户费用', dealerLevelDictValue: 0.00, totalQty: 0.00, totalCost: 0.00, totalPrice: 0.00, auditTime: 0.00, allocateTypeName: 0.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 0.00, printCogunts: 24000.00, phrintCounts: 0.00, printCsountss: 0.00, prinftCounts: 0.00 },
+    { id: '6', province: '', targetName: '合计', dealerLevelDictValue: 400.00, totalQty: 400.00, totalCost: 400.00, totalPrice: 400.00, auditTime: 400.00, allocateTypeName: 400.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 2400.00, printCogunts: 24000.00, phrintCounts: 10, printCsountss: 1800.00, prinftCounts: 600.00 },
+    { id: '7', province: 'A区', targetName: '工单促销费用', dealerLevelDictValue: 100.00, totalQty: 100.00, totalCost: 100.00, totalPrice: 100.00, auditTime: 100.00, allocateTypeName: 100.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 600.00, printCogunts: 24000.00, phrintCounts: 2.5, printCsountss: 450.00, prinftCounts: 150.00 },
+    { id: '8', province: 'A区', targetName: '促销品费用', dealerLevelDictValue: 100.00, totalQty: 100.00, totalCost: 100.00, totalPrice: 100.00, auditTime: 100.00, allocateTypeName: 100.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 600.00, printCogunts: 24000.00, phrintCounts: 2.5, printCsountss: 450.00, prinftCounts: 150.00 },
+    { id: '9', province: 'A区', targetName: '配送品费用', dealerLevelDictValue: 100.00, totalQty: 100.00, totalCost: 100.00, totalPrice: 100.00, auditTime: 100.00, allocateTypeName: 100.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 600.00, printCogunts: 24000.00, phrintCounts: 2.5, printCsountss: 450.00, prinftCounts: 150.00 },
+    { id: '10', province: 'A区', targetName: '营销费用', dealerLevelDictValue: 100.00, totalQty: 100.00, totalCost: 100.00, totalPrice: 100.00, auditTime: 100.00, allocateTypeName: 100.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 600.00, printCogunts: 24000.00, phrintCounts: 2.5, printCsountss: 450.00, prinftCounts: 150.00 },
+    { id: '11', province: 'A区', targetName: '客户费用', dealerLevelDictValue: 0.00, totalQty: 0.00, totalCost: 0.00, totalPrice: 0.00, auditTime: 0.00, allocateTypeName: 0.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 0.00, printCogunts: 24000.00, phrintCounts: 0.00, printCsountss: 0.00, prinftCounts: 0.00 },
+    { id: '12', province: '', targetName: '合计', dealerLevelDictValue: 400.00, totalQty: 400.00, totalCost: 400.00, totalPrice: 400.00, auditTime: 400.00, allocateTypeName: 400.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 2400.00, printCogunts: 24000.00, phrintCounts: 10, printCsountss: 1800.00, prinftCounts: 600.00 },
+    { id: '13', province: 'B区', targetName: '工单促销费用', dealerLevelDictValue: 100.00, totalQty: 100.00, totalCost: 100.00, totalPrice: 100.00, auditTime: 100.00, allocateTypeName: 100.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 600.00, printCogunts: 100000.00, phrintCounts: 2.5, printCsountss: 450.00, prinftCounts: 150.00 },
+    { id: '14', province: 'B区', targetName: '促销品费用', dealerLevelDictValue: 100.00, totalQty: 100.00, totalCost: 100.00, totalPrice: 100.00, auditTime: 100.00, allocateTypeName: 100.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 600.00, printCogunts: 100000.00, phrintCounts: 2.5, printCsountss: 450.00, prinftCounts: 150.00 },
+    { id: '15', province: 'B区', targetName: '配送品费用', dealerLevelDictValue: 100.00, totalQty: 100.00, totalCost: 100.00, totalPrice: 100.00, auditTime: 100.00, allocateTypeName: 100.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 600.00, printCogunts: 100000.00, phrintCounts: 2.5, printCsountss: 450.00, prinftCounts: 150.00 },
+    { id: '16', province: 'B区', targetName: '营销费用', dealerLevelDictValue: 100.00, totalQty: 100.00, totalCost: 100.00, totalPrice: 100.00, auditTime: 100.00, allocateTypeName: 100.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 600.00, printCogunts: 100000.00, phrintCounts: 2.5, printCsountss: 450.00, prinftCounts: 150.00 },
+    { id: '17', province: '', targetName: '合计', dealerLevelDictValue: 400.00, totalQty: 400.00, totalCost: 400.00, totalPrice: 400.00, auditTime: 400.00, allocateTypeName: 400.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 2400.00, printCogunts: 100000.00, phrintCounts: 10, printCsountss: 1800.00, prinftCounts: 600.00 },
+    { id: '18', province: '全国', targetName: '工单促销费用', dealerLevelDictValue: 1000.00, totalQty: 1000.00, totalCost: 1000.00, totalPrice: 1000.00, auditTime: 1000.00, allocateTypeName: 1000.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 6000.00, printCogunts: 100000.00, phrintCounts: 6, printCsountss: 5000.00, prinftCounts: 1000.00 },
+    { id: '19', province: '全国', targetName: '促销品费用', dealerLevelDictValue: 1000.00, totalQty: 1000.00, totalCost: 1000.00, totalPrice: 1000.00, auditTime: 1000.00, allocateTypeName: 1000.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 6000.00, printCogunts: 100000.00, phrintCounts: 6, printCsountss: 5000.00, prinftCounts: 1000.00 },
+    { id: '20', province: '全国', targetName: '配送品费用', dealerLevelDictValue: 1000.00, totalQty: 1000.00, totalCost: 1000.00, totalPrice: 1000.00, auditTime: 1000.00, allocateTypeName: 1000.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 6000.00, printCogunts: 100000.00, phrintCounts: 6, printCsountss: 5000.00, prinftCounts: 1000.00 },
+    { id: '21', province: '全国', targetName: '营销费用', dealerLevelDictValue: 1000.00, totalQty: 1000.00, totalCost: 1000.00, totalPrice: 1000.00, auditTime: 1000.00, allocateTypeName: 1000.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 6000.00, printCogunts: 100000.00, phrintCounts: 6, printCsountss: 5000.00, prinftCounts: 1000.00 },
+    { id: '22', province: '', targetName: '合计', dealerLevelDictValue: 4000.00, totalQty: 4000.00, totalCost: 4000.00, totalPrice: 4000.00, auditTime: 4000.00, allocateTypeName: 4000.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 24000.00, printCogunts: 100000.00, phrintCounts: 24, printCsountss: 5000.00, prinftCounts: 1000.00 }
+  ],
+  nationalCustomerCostStatisticsList: [ //  全国客户费用统计
+    { id: '1', area: '1区', province: '广东省', customerName: '箭冠汽配潮州潮安店', targetName: '配送品费用', dealerLevelDictValue: 100.00, totalQty: 100.00, totalCost: 100.00, totalPrice: 100.00, auditTime: 100.00, allocateTypeName: 100.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 600.00, printCogunts: 24000.00, phrintCounts: 2.5, printCsountss: 450.00, prinftCounts: 150.00 },
+    { id: '2', area: '1区', province: '广东省', customerName: '箭冠汽配潮州潮安店', targetName: '促销费用', dealerLevelDictValue: 100.00, totalQty: 100.00, totalCost: 100.00, totalPrice: 100.00, auditTime: 100.00, allocateTypeName: 100.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 600.00, printCogunts: 24000.00, phrintCounts: 2.5, printCsountss: 450.00, prinftCounts: 150.00 },
+    { id: '3', area: '1区', province: '广东省', customerName: '箭冠汽配潮州潮安店', targetName: '配送品费用', dealerLevelDictValue: 100.00, totalQty: 100.00, totalCost: 100.00, totalPrice: 100.00, auditTime: 100.00, allocateTypeName: 100.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 600.00, printCogunts: 24000.00, phrintCounts: 2.5, printCsountss: 450.00, prinftCounts: 150.00 },
+    { id: '4', area: '1区', province: '广东省', customerName: '箭冠汽配潮州潮安店', targetName: '促销费用', dealerLevelDictValue: 100.00, totalQty: 100.00, totalCost: 100.00, totalPrice: 100.00, auditTime: 100.00, allocateTypeName: 100.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 600.00, printCogunts: 24000.00, phrintCounts: 2.5, printCsountss: 450.00, prinftCounts: 150.00 },
+    { id: '5', area: '', province: '1区', customerName: '广东省汇总', targetName: '合计:', dealerLevelDictValue: 400.00, totalQty: 400.00, totalCost: 400.00, totalPrice: 400.00, auditTime: 400.00, allocateTypeName: 400.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 2400.00, printCogunts: 24000.00, phrintCounts: 10, printCsountss: 1800.00, prinftCounts: 600.00 },
+    { id: '6', area: 'A区', province: '广西省', customerName: '广西省贺州市万和润滑油商行', targetName: '配送品费用', dealerLevelDictValue: 100.00, totalQty: 100.00, totalCost: 100.00, totalPrice: 100.00, auditTime: 100.00, allocateTypeName: 100.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 600.00, printCogunts: 24000.00, phrintCounts: 2.5, printCsountss: 450.00, prinftCounts: 150.00 },
+    { id: '7', area: 'A区', province: '广西省', customerName: '广西省贺州市万和润滑油商行', targetName: '配送品费用', dealerLevelDictValue: 100.00, totalQty: 100.00, totalCost: 100.00, totalPrice: 100.00, auditTime: 100.00, allocateTypeName: 100.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 600.00, printCogunts: 24000.00, phrintCounts: 2.5, printCsountss: 450.00, prinftCounts: 150.00 },
+    { id: '8', area: 'A区', province: '广西省', customerName: '箭冠汽配防城港东兴店', targetName: '配送品费用', dealerLevelDictValue: 100.00, totalQty: 100.00, totalCost: 100.00, totalPrice: 100.00, auditTime: 100.00, allocateTypeName: 100.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 600.00, printCogunts: 24000.00, phrintCounts: 2.5, printCsountss: 450.00, prinftCounts: 150.00 },
+    { id: '9', area: 'A区', province: '广西省', customerName: '箭冠汽配防城港东兴店', targetName: '促销费用', dealerLevelDictValue: 100.00, totalQty: 100.00, totalCost: 100.00, totalPrice: 100.00, auditTime: 100.00, allocateTypeName: 100.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 600.00, printCogunts: 24000.00, phrintCounts: 2.5, printCsountss: 450.00, prinftCounts: 150.00 },
+    { id: '10', area: '', province: 'A区', customerName: '广西省汇总', targetName: '合计:', dealerLevelDictValue: 400.00, totalQty: 400.00, totalCost: 400.00, totalPrice: 400.00, auditTime: 400.00, allocateTypeName: 400.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 2400.00, printCogunts: 24000.00, phrintCounts: 10, printCsountss: 1800.00, prinftCounts: 600.00 },
+    { id: '11', area: 'A区', province: '贵州省', customerName: '箭冠汽配贵阳南明店', targetName: '配送品费用', dealerLevelDictValue: 100.00, totalQty: 100.00, totalCost: 100.00, totalPrice: 100.00, auditTime: 100.00, allocateTypeName: 100.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 600.00, printCogunts: 24000.00, phrintCounts: 2.5, printCsountss: 450.00, prinftCounts: 150.00 },
+    { id: '12', area: 'A区', province: '贵州省', customerName: '箭冠汽配贵阳南明店', targetName: '促销费用', dealerLevelDictValue: 100.00, totalQty: 100.00, totalCost: 100.00, totalPrice: 100.00, auditTime: 100.00, allocateTypeName: 100.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 600.00, printCogunts: 24000.00, phrintCounts: 2.5, printCsountss: 450.00, prinftCounts: 150.00 },
+    { id: '13', area: 'A区', province: '贵州省', customerName: '箭冠汽配黔南独山店', targetName: '配送品费用', dealerLevelDictValue: 100.00, totalQty: 100.00, totalCost: 100.00, totalPrice: 100.00, auditTime: 100.00, allocateTypeName: 100.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 600.00, printCogunts: 24000.00, phrintCounts: 2.5, printCsountss: 450.00, prinftCounts: 150.00 },
+    { id: '14', area: 'A区', province: '贵州省', customerName: '箭冠汽配黔南独山店', targetName: '促销费用', dealerLevelDictValue: 100.00, totalQty: 100.00, totalCost: 100.00, totalPrice: 100.00, auditTime: 100.00, allocateTypeName: 100.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 600.00, printCogunts: 24000.00, phrintCounts: 2.5, printCsountss: 450.00, prinftCounts: 150.00 },
+    { id: '15', area: '', province: 'A区', customerName: '贵州省汇总', targetName: '合计:', dealerLevelDictValue: 400.00, totalQty: 400.00, totalCost: 400.00, totalPrice: 400.00, auditTime: 400.00, allocateTypeName: 400.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 2400.00, printCogunts: 24000.00, phrintCounts: 10, printCsountss: 1800.00, prinftCounts: 600.00 },
+    { id: '16', area: '', province: '', customerName: 'A区汇总', targetName: '合计:', dealerLevelDictValue: 800.00, totalQty: 800.00, totalCost: 800.00, totalPrice: 800.00, auditTime: 800.00, allocateTypeName: 800.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 4800.00, printCogunts: 48000.00, phrintCounts: 10, printCsountss: 3600.00, prinftCounts: 1200.00 },
+    { id: '17', area: '合计:', province: '', customerName: '', targetName: '', dealerLevelDictValue: 4000.00, totalQty: 4000.00, totalCost: 4000.00, totalPrice: 4000.00, auditTime: 4000.00, allocateTypeName: 4000.00, stateDictValue: undefined, printStateDictValue: undefined, printCount: undefined, printCounts: undefined, printCsounts: undefined, printdCounts: undefined, prfintCounts: 10000.00, printCogunts: 100000.00, phrintCounts: 10, printCsountss: 8000.00, prinftCounts: 2000.00 }
+  ],
+  salesReturnDetailReportList: [ //  销售退货明细报表数据
+	  { id: '1', area: '1区', province: '黑龙江省', returnNo: 'CGTK20210715666497351035', customerName: '箭冠汽配潮州潮安店', targetName: '配送品费用', dealerLevelDictValue: '市级经销商', directCustomName: '箭冠汽配哈尔滨南港店', IndirectCustomName: '', returnFinTime: '2020-08-12 10:20:36', type: '箭牌', totalCost: 100.00, totalPrice: 100.00, auditTime: 100.00, allocateTypeName: '雨刮片', stateDictValue: '箭牌A3系列有骨雨刮片', printStateDictValue: 'JW_A3018', productUnit: '支', printCount: undefined, printCounts: 1, printCsounts: 0, printdCounts: 1, prfintCounts: 9.00, printCogunts: 9.00, phrintCounts: 7.50, printCsountss: 7.50, prinftCounts: 9.00, prisntCogunts: 1.50, prinxtCounts: 0.00, printCocunts: '0', printCvounts: 0, printCgounts: '0.00', printCouhnts: '0.00', printCournts: '0.00' },
+	  { id: '2', area: '2区', province: '黑龙江省', returnNo: 'CGTK20210815666497311458', customerName: '箭冠汽配潮州潮安店', targetName: '促销费用', dealerLevelDictValue: '市级经销商', directCustomName: '箭冠汽配哈尔滨南港店', IndirectCustomName: '', returnFinTime: '2020-10-12 16:37:20', type: '箭牌', productUnit: '支', totalCost: 100.00, totalPrice: 100.00, auditTime: 100.00, allocateTypeName: '雨刮片', stateDictValue: '箭牌A3系列有骨雨刮片', printStateDictValue: 'JW_A3019', printCount: undefined, printCounts: 1, printCsounts: 0, printdCounts: 1, prfintCounts: 9.00, printCogunts: 9.00, phrintCounts: 7.50, printCsountss: 7.50, prinftCounts: 9.00, prisntCogunts: 1.50, prinxtCounts: 0.00, printCocunts: '0', printCvounts: 0, printCgounts: '0.00', printCouhnts: '0.00', printCournts: '0.00' },
+	  { id: '3', area: '1区', province: '黑龙江省', returnNo: 'CGTK20210815666497357845', customerName: '箭冠汽配潮州潮安店', targetName: '配送品费用', dealerLevelDictValue: '市级经销商', directCustomName: '箭冠汽配哈尔滨南港店', IndirectCustomName: '', returnFinTime: '2021-03-12 15:36:28', type: '冠牌', productUnit: '支', totalCost: 100.00, totalPrice: 100.00, auditTime: 100.00, allocateTypeName: '雨刮片', stateDictValue: '冠牌A3系列有骨雨刮片', printStateDictValue: 'GW_A3028', printCount: undefined, printCounts: 1, printCsounts: 0, printdCounts: 1, pprfintCounts: 9.00, printCogunts: 9.00, phrintCounts: 7.50, printCsountss: 7.50, prinftCounts: 9.00, prisntCogunts: 1.50, prinxtCounts: 0.00, printCocunts: '0', printCvounts: 0, printCgounts: '0.00', printCouhnts: '0.00', printCournts: '0.00' }
+  ],
+  salesDetailsList: [
+	    { id: 1, data1: 'A区', data2: 'XS210680000001', data3: '广东省', data4: '张先生', data5: '省级服务中心', data6: undefined, data7: undefined, data8: '2021-07-15 11:25:36', data9: '2021-07-15 11:45:12', data10: '箭牌', data11: '火花塞', data12: 'TBU刹车片感应线 A4旅行车(8K5)  [2007-]A4四门轿车 (8K2)  [2007-]Q5  前感应线', data13: 'TB-11048', data14: '件', data15: '2', data16: '2', data17: '30', data18: '31', data19: '31', data20: '37', data21: '0', data22: '0', data23: 'zhang-dan' },
+	    { id: 2, data1: 'C区', data2: 'XS210680000010', data3: '陕西省', data4: '李', data5: '省级服务中心', data6: undefined, data7: undefined, data8: '2021-07-15 18:05:36', data9: '2021-07-15 17:23:12', data10: '箭牌', data11: '火花塞', data12: 'TBU刹车片感应线 A4旅行车(8K5)  [2007-]A4四门轿车 (8K2)  [2007-]Q5  前感应线', data13: 'TB-11048', data14: '件', data15: '2', data16: '2', data17: '30', data18: '31', data19: '31', data20: '37', data21: '0', data22: '0', data23: 'lisa' },
+	    { id: 3, data1: 'A区', data2: 'XS210680500001', data3: '广东省', data4: '陈', data5: '省级服务中心', data6: undefined, data7: undefined, data8: '2021-07-15 11:25:36', data9: '2021-07-15 11:45:12', data10: '箭牌', data11: '火花塞', data12: 'TBU刹车片感应线 A4旅行车(8K5)  [2007-]A4四门轿车 (8K2)  [2007-]Q5  前感应线', data13: 'TB-11048', data14: '件', data15: '2', data16: '2', data17: '30', data18: '31', data19: '31', data20: '37', data21: '0', data22: '0', data23: 'jack' }
+	  ],
+	  allocationOrderTotalList: [
+	    { id: 1, data1: 'DB210680000061', data2: '2021-07-12 09:22:01', data3: '箭冠汽配郑州金水店', data4: '1', data5: '10.02', data6: '-10.02', data7: 'zhangx' },
+	    { id: 2, data1: 'DB210680000060', data2: '2021-07-11 08:55:26', data3: '箭冠汽配郑州立达店', data4: '156', data5: '1447.20', data6: '-1447.20', data7: 'zhangx' },
+	    { id: 3, data1: 'DB210680000059', data2: '2021-07-11 15:01:10', data3: '箭冠汽配安宁立达店', data4: '12', data5: '86.40', data6: '-86.40', data7: 'suffa' },
+	    { id: 4, data1: 'DB210680000058', data2: '2021-07-11 15:00:01', data3: '箭冠汽配安宁立达店', data4: '0', data5: '0', data6: '0', data7: 'zhangx' },
+	    { id: 5, data1: 'DB210680000057', data2: '2021-07-11 14:22:45', data3: '箭冠汽配吕梁离石店', data4: '2', data5: '30', data6: '-30', data7: 'suffa' },
+	    { id: 6, data1: 'DB210680000056', data2: '2021-07-11 14:18:36', data3: '箭冠汽配郑州金水店', data4: '1', data5: '10.02', data6: '-10.02', data7: 'zhangx' },
+	    { id: 7, data1: 'DB210680000055', data2: '2021-07-11 13:57:02', data3: '箭冠汽配义乌沈村店', data4: '1260', data5: '7080.00', data6: '-7080.00', data7: 'suffa' },
+	    { id: 8, data1: 'DB210680000054', data2: '2021-07-11 11:38:01', data3: '箭冠汽配郑州华南城店', data4: '150', data5: '831.00', data6: '-831.00', data7: 'kf02' },
+	    { id: 9, data1: 'DB210680000053', data2: '2021-07-10 18:36:54', data3: '箭冠汽配郑州金水店', data4: '240', data5: '1520.00', data6: '-1520.00', data7: 'kf01' },
+	    { id: 10, data1: 'DB210680000052', data2: '2021-07-10 17:45:25', data3: '箭冠汽配丽水龙泉店', data4: '1', data5: '70.23', data6: '-70.23', data7: 'suffa' },
+	    { id: 11, data1: 'DB210680000051', data2: '2021-07-10 16:52:36', data3: '箭冠汽配合肥三里街店', data4: '1', data5: '25.38', data6: '-25.38', data7: 'lily' }
+	  ],
+	  allocationDetailsList: [
+	    { id: 1, data1: 'A区/03区', data2: 'DB210680000061', data3: '2021-07-12 09:22:01', data4: '河南省', data5: '箭冠汽配丽水龙泉店', data6: '省级服务中心', data7: '箭牌', data8: '滤清器', data9: '箭牌空气滤清器 BMW X6 3.5 X5', data10: 'JA 23097U', data11: '1', data12: '个', data13: '10.00', data14: '15.00', data15: '20.00', data16: '5.00', data17: '仓库一', data18: '仓位一', data19: 'zhangx', data20: '客诉样品调拨' },
+	    { id: 2, data1: 'A区/03区', data2: 'DB210680000061', data3: '2021-07-12 09:22:01', data4: '甘肃省', data5: '箭冠汽配合肥三里街店', data6: '省级服务中心', data7: '箭牌', data8: '滤清器', data9: '箭牌空气滤清器 BMW X6 3.5 X5', data10: 'JA 23097U', data11: '1', data12: '个', data13: '12.00', data14: '33.00', data15: '10.00', data16: '23.00', data17: '仓库一', data18: '仓位一', data19: 'zhangx', data20: '客诉样品调拨' },
+	    { id: 3, data1: 'A区/03区', data2: 'DB210680000061', data3: '2021-07-12 09:22:01', data4: '甘肃省', data5: '箭冠汽配合肥三里街店', data6: '省级服务中心', data7: '箭牌', data8: '滤清器', data9: '箭牌空气滤清器 BMW X6 3.5 X5', data10: 'JA 23097U', data11: '1', data12: '个', data13: '12.00', data14: '18.00', data15: '12.00', data16: '6.00', data17: '仓库一', data18: '仓位一', data19: 'zhangx', data20: '客诉样品调拨' },
+	    { id: 4, data1: 'A区/03区', data2: 'DB210680000061', data3: '2021-07-12 09:22:01', data4: '甘肃省', data5: '箭冠汽配丽水龙泉店', data6: '省级服务中心', data7: '箭牌', data8: '滤清器', data9: '箭牌空气滤清器 BMW X6 3.5 X5', data10: 'JA 23097U', data11: '1', data12: '个', data13: '11.00', data14: '17.00', data15: '11.00', data16: '6.00', data17: '仓库一', data18: '仓位一', data19: 'zhangx', data20: '特殊申请促销调拨' },
+	    { id: 5, data1: 'A区/03区', data2: 'DB210680000061', data3: '2021-07-12 09:22:01', data4: '甘肃省', data5: '箭冠汽配郑州华南城店', data6: '省级服务中心', data7: '箭牌', data8: '滤清器', data9: '箭牌空气滤清器 BMW X6 3.5 X5', data10: 'JA 23097U', data11: '1', data12: '个', data13: '10.00', data14: '23.00', data15: '10.00', data16: '13.00', data17: '仓库一', data18: '仓位一', data19: 'zhangx', data20: '特殊申请促销调拨' }
+  ],
+  salesReturnsReportList: [
+	    { id: 1, data1: 'TH210660000001', data2: '2021-07-12 09:22:01', data3: '箭冠汽配丽水龙泉店', data4: '市级经销商', data5: '箭冠汽配丽水龙泉店', data6: undefined, data7: '130', data8: '1688.50', data9: '1688.50', data10: '55.50', data11: '1856.00', data12: '1476.50', data13: '212.00', data14: '0.00', data15: '130.00', data16: 'zhangx' }
+	  ]
+}

+ 37 - 9
src/views/power/user/updateAreal.vue

@@ -20,12 +20,21 @@
           <a-form-model-item label="用户名称">
             {{ form.name }}
           </a-form-model-item>
-          <a-form-model-item label="所属营销分区" prop="subareaSn">
-            <subarea id="user-subarea" v-model="form.subareaSn"></subarea>
+          <a-form-model-item label="所属营销分区" prop="subareaSnList">
+            <!-- <subarea id="user-subarea" v-model="form.subareaSn"></subarea> -->
+            <a-select
+              placeholder="请选择分区"
+              allowClear
+              mode="multiple"
+              v-model="form.subareaSnList"
+              :showSearch="true"
+              :filter-option="filterOption">
+              <a-select-option v-for="item in subareaList" :key="item.subareaSn" :value="item.subareaSn">{{ item.subareaName }}</a-select-option>
+            </a-select>
           </a-form-model-item>
           <div style="display: flex;justify-content: center;padding: 30px 0;">
             <a-button type="primary" @click="onSubmit">确定</a-button>
-            <a-button style="margin-left: 50px;" @click="cansel">取消</a-button>
+            <a-button style="margin-left: 15px;" @click="cansel">取消</a-button>
           </div>
         </a-form-model>
       </a-spin>
@@ -36,6 +45,7 @@
 <script>
 import { VSelect } from '@/components'
 import { userSubareaSave } from '@/api/power-user'
+import { subareaQueryAll } from '@/api/subarea'
 import subarea from '@/views/common/subarea.js'
 export default {
   name: 'UpdateArea',
@@ -56,21 +66,22 @@ export default {
       other: '',
       form: {
         name: '',
-        subareaSn: undefined
+        subareaSnList: undefined
       },
       rules: {
-        subareaSn: [
-          { required: true, message: '请选择所属营销分区', trigger: 'blur' }
+        subareaSnList: [
+          { required: true, message: '请选择所属营销分区', trigger: 'change' }
         ]
       },
-      nowData: undefined
+      nowData: undefined,
+      subareaList: []
     }
   },
   methods: {
     setData (row) {
       this.form.id = row.id
       this.form.name = row.name
-      this.form.subareaSn = row.subareaSn || undefined
+      this.form.subareaSnList = row.subareaSnList || undefined
       this.nowData = row
     },
     onSubmit () {
@@ -83,11 +94,26 @@ export default {
         }
       })
     },
+    filterOption (input, option) {
+      return (
+        option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
+      )
+    },
+    getSubareaList () {
+      const _this = this
+      subareaQueryAll().then(res => {
+        if (res.status == 200) {
+          _this.subareaList = res.data || []
+        } else {
+          _this.subareaList = []
+        }
+      })
+    },
     submitForm () {
       const _this = this
       const params = {
         userSn: _this.nowData.sn,
-        subareaSn: _this.form.subareaSn
+        subareaSnList: _this.form.subareaSnList
       }
       _this.spinning = true
       userSubareaSave(params).then(res => {
@@ -115,6 +141,8 @@ export default {
     isShow (newValue, oldValue) {
       if (!newValue) {
         this.$emit('close')
+      } else {
+        this.getSubareaList()
       }
     }
   }

+ 7 - 4
src/views/power/user/userList.vue

@@ -42,7 +42,9 @@
       <span slot="status" slot-scope="text, record">
         <!-- <a-switch v-if="$hasPermissions('B_powerMD_user_enable')" checkedChildren="启用" unCheckedChildren="禁用" v-model="record.loginFlag" @change="changeFlagHandle(text, record)"/>
         <span v-else>{{ record.loginFlag==1?'已启用':'已禁用' }}</span> -->
-        <a-switch checkedChildren="启用" unCheckedChildren="禁用" v-model="record.loginFlag" @change="changeFlagHandle(text, record)"/>
+        <!-- 超级管理员不可删除不可编辑不可启禁用 -->
+        <a-switch v-if="record.superAdmin!=1" checkedChildren="启用" unCheckedChildren="禁用" v-model="record.loginFlag" @change="changeFlagHandle(text, record)"/>
+        <span v-if="record.superAdmin==1">{{ record.loginFlag==1?'已启用':'已禁用' }}</span>
       </span>
       <span slot="action" slot-scope="text, record">
         <!-- <a-icon
@@ -67,20 +69,21 @@
         <a-icon
           type="edit"
           title="编辑"
+          v-if="record.superAdmin!=1"
           :style="{fontSize: '20px',color:' #1890FF',padding:' 0 10px'}"
           @click="handleEdit(record)"
         />
         <a-icon
           type="unlock"
           title="重置密码"
-          v-if="record.loginFlag==1"
+          v-if="record.loginFlag==1 && record.superAdmin!=1"
           :style="{fontSize: '20px',color:' #ffaa00',padding: '0 10px'}"
           @click="resetPassword(record)" />
         <a-icon
           type="delete"
           title="删除"
           :style="{fontSize: '20px',color: '#f00',padding: '0 10px'}"
-          v-if="record.loginFlag==0"
+          v-if="record.loginFlag==0 && record.superAdmin!=1"
           @click="delect(record)"/>
         <a-icon
           type="setting"
@@ -123,7 +126,7 @@ export default {
         { title: '用户名称', dataIndex: 'name', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
         { title: '手机号码', dataIndex: 'phone', width: 150, align: 'center', customRender: function (text) { return text || '--' } },
         { title: '用户账号', dataIndex: 'loginName', width: 150, align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '所属分区', dataIndex: 'subareaName', width: 150, align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
+        { title: '所属分区', dataIndex: 'allSubareaName', width: 150, align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
         { title: '角色', dataIndex: 'roleNames', width: 200, align: 'center', customRender: function (text) { return text || '--' } },
         { title: '状态', width: 100, align: 'center', scopedSlots: { customRender: 'status' }, fixed: 'right' },
         { title: '操作', width: 160, align: 'center', scopedSlots: { customRender: 'action' }, fixed: 'right' }

+ 541 - 0
src/views/reportData/actualSalesReport/list.vue

@@ -0,0 +1,541 @@
+<template>
+  <a-card size="small" :bordered="false" class="shortageStatisticsCList-wrap">
+    <!-- 搜索条件 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline" @keyup.enter.native="$refs.table.refresh(true)">
+        <a-row :gutter="15">
+          <a-col :md="6" :sm="24">
+            <a-form-item label="销售日期">
+              <rangeDate ref="rangeDate" :value="time" @change="dateChange" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="24">
+            <a-form-item label="客户名称">
+              <custList ref="custList" id="shortageStatisticsCList-buyerSn" @change="custChange"></custList>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="24">
+            <a-form-item label="客户类型">
+              <custList ref="custList" id="shortageStatisticsCList-buyerSn" @change="custChange"></custList>
+            </a-form-item>
+          </a-col>
+          <template v-if="advanced">
+            <a-col :md="6" :sm="24">
+              <a-form-item label="所在区域">
+                <subarea id="shortageStatisticsCList-subarea" v-model="queryParam.subareaSn"></subarea>
+              </a-form-item>
+            </a-col>
+            <a-col :md="12" :sm="24">
+              <a-row>
+                <a-form-item label="地区">
+                  <a-col span="7">
+                    <a-form-item prop="dealerProvinceSn" style="margin: 0;">
+                      <a-select v-model="queryParam.dealerProvinceSn" @change="getCityList" placeholder="请选择省">
+                        <a-select-option v-for="item in addrProvinceList" :value="item.id" :key="item.id + 'a'">{{ item.name }}</a-select-option>
+                      </a-select>
+                    </a-form-item>
+                  </a-col>
+                  <a-col span="7" offset="1">
+                    <a-form-item prop="dealerCitySn" style="margin: 0;">
+                      <a-select v-model="queryParam.dealerCitySn" @change="getAreaList" placeholder="请选择市">
+                        <a-select-option v-for="item in addrCityList" :value="item.id" :key="item.id + 'b'">{{ item.name }}</a-select-option>
+                      </a-select>
+                    </a-form-item>
+                  </a-col>
+                  <a-col span="7" offset="1">
+                    <a-form-item prop="dealerCountySn" style="margin: 0;">
+                      <a-select v-model="queryParam.dealerCountySn" placeholder="请选择区/县">
+                        <a-select-option v-for="item in addrDistrictList" :value="item.id" :key="item.id + 'c'">{{ item.name }}</a-select-option>
+                      </a-select>
+                    </a-form-item>
+                  </a-col>
+                </a-form-item>
+              </a-row>
+            </a-col>
+          </template>
+          <a-col :md="6" :sm="24">
+            <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="shortageStatisticsCList-refresh">查询</a-button>
+            <a-button style="margin-left: 8px" @click="resetSearchForm" :disabled="disabled" id="shortageStatisticsCList-reset">重置</a-button>
+            <a @click="advanced=!advanced" style="margin-left: 8px">
+              {{ advanced ? '收起' : '展开' }}
+              <a-icon :type="advanced ? 'up' : 'down'"/>
+            </a>
+          </a-col>
+        </a-row>
+      </a-form>
+    </div>
+    <!-- 列表 -->
+    <s-table
+      class="sTable"
+      ref="table"
+      size="small"
+      :rowKey="(record) => record.id"
+      :columns="columns"
+      :data="loadData"
+      :scroll="{ x: 2880, y: tableHeight }"
+      bordered>
+    </s-table>
+  </a-card>
+</template>
+
+<script>
+import moment from 'moment'
+import getDate from '@/libs/getDate.js'
+import { STable, VSelect } from '@/components'
+import rangeDate from '@/views/common/rangeDate.vue'
+import custList from '@/views/common/custList.vue'
+import subarea from '@/views/common/subarea.js'
+import { getArea } from '@/api/data'
+import { oosBuyerList, oosBuyerDetailCount, oosBuyerDetailPageCount, oosDetailExport } from '@/api/oos'
+export default {
+  components: { STable, VSelect, custList, subarea, rangeDate },
+  data () {
+    return {
+      advanced: false, // 高级搜索 展开/关闭
+      tableHeight: 0,
+      queryParam: { //  查询条件
+        beginDate: '',
+        endDate: '',
+        buyerSn: undefined,
+        subareaSn: undefined, //  区域
+        provinceSn: undefined,
+        citySn: undefined,
+        districtSn: undefined
+      },
+      disabled: false, //  查询、重置按钮是否可操作
+      exportLoading: false, // 导出loading
+      addrProvinceList: [], //  省下拉
+      addrCityList: [], //  市下拉
+      addrDistrictList: [], //  区下拉
+      time: [], //  创建时间
+      columns: [
+        { title: '序号', dataIndex: 'no', width: 80, align: 'center' },
+        { title: '区域',
+          dataIndex: 'area',
+          width: 150,
+          align: 'center',
+          customRender: (text, row, index) => {
+            if (text == '合计') {
+              return {
+                children: <span>{ text }</span>,
+                attrs: {
+                  colSpan: 4
+                }
+              }
+            }
+            return text
+          }
+        },
+        { title: '省份',
+          dataIndex: 'provinceName',
+          width: 150,
+          align: 'center',
+          customRender: function (text, row, index) {
+            if (text == '合计') {
+              return {
+                children: <span>{ text }</span>,
+                attrs: {
+                  colSpan: 0
+                }
+              }
+            }
+            return text || '--'
+          } },
+        { title: '客户名称',
+          dataIndex: 'custName',
+          width: 200,
+          align: 'center',
+          customRender: function (text, row, index) {
+            if (text == '合计') {
+              return {
+                children: <span>{ text }</span>,
+                attrs: {
+                  colSpan: 0
+                }
+              }
+            }
+            return text || '--'
+          } },
+        { title: '客户类型',
+          dataIndex: 'custType',
+          width: 200,
+          align: 'center',
+          customRender: function (text, row, index) {
+            if (text == '合计') {
+              return {
+                children: <span>{ text }</span>,
+                attrs: {
+                  colSpan: 0
+                }
+              }
+            }
+            return text || '--'
+          } },
+        { title: '品牌',
+          align: 'center',
+          children: [
+            {
+              title: '箭牌',
+              align: 'center',
+              children: [
+                {
+                  title: '滤清器',
+                  dataIndex: 'pp1',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '雨刮片',
+                  dataIndex: 'pp2',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '喇叭',
+                  dataIndex: 'pp3',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '刹车片',
+                  dataIndex: 'pp4',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '感应线',
+                  dataIndex: 'pp5',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                }
+              ]
+            },
+            {
+              title: '冠牌',
+              align: 'center',
+              children: [
+                {
+                  title: '滤清器',
+                  dataIndex: 'pp6',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '雨刮片',
+                  dataIndex: 'pp7',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '刹车片',
+                  dataIndex: 'pp8',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                }
+              ]
+            },
+            {
+              title: '汇箭',
+              dataIndex: 'pp9',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '德路斯',
+              dataIndex: 'pp10',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '稳升',
+              dataIndex: 'pp11',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: 'TBU',
+              dataIndex: 'pp12',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            }
+          ] },
+        { title: '代理品牌',
+          align: 'center',
+          children: [
+            {
+              title: 'NGK',
+              dataIndex: 'pp13',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '飞利浦',
+              dataIndex: 'pp14',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '车仆',
+              dataIndex: 'pp15',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '瓦尔塔',
+              dataIndex: 'pp16',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '雷贝斯托',
+              dataIndex: 'pp17',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '德尔福',
+              dataIndex: 'pp18',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '巴诺德',
+              dataIndex: 'pp19',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            }
+          ] },
+        { title: '实际销售合计金额', width: 200, dataIndex: 'totalAmount', align: 'center', customRender: function (text) { return text ? ('¥' + text) : '--' } }
+      ],
+      // 加载数据方法 必须为 Promise 对象
+      loadData: parameter => {
+        // this.disabled = true
+        // if (this.tableHeight == 0) {
+        //   this.tableHeight = window.innerHeight - 380
+        // }
+        // const paramsPage = Object.assign(this.queryParam, { pageNo: parameter.pageNo, pageSize: parameter.pageSize }) //  有分页
+        // const params = Object.assign(parameter, this.queryParam) //  无分页
+        // return oosBuyerList(params).then(res => {
+        //   const data = res.data
+        //   const no = (data.pageNo - 1) * data.pageSize
+        //   for (var i = 0; i < data.list.length; i++) {
+        //     data.list[i].no = no + i + 1
+        //   }
+        //   this.disabled = false
+        //   return data
+        // })
+        const _this = this
+        return new Promise(function (resolve, reject) {
+          const data = {
+            pageNo: 1,
+            pageSize: 10,
+            list: [{
+              area: 'A区',
+              provinceName: '广东省',
+              custName: '支持省级',
+              custType: '省级服务中心',
+              pp1: '125.02',
+              pp2: '73.00',
+              pp3: '0',
+              pp4: '0',
+              pp5: '0',
+              pp6: '0',
+              pp7: '0',
+              pp8: '0',
+              pp9: '0',
+              pp10: '0',
+              pp11: '0',
+              pp12: '0',
+              pp13: '0',
+              pp14: '0',
+              pp15: '0',
+              pp16: '0',
+              pp17: '0',
+              pp18: '0',
+              pp19: '0',
+              totalAmount: '198.02'
+            },
+            {
+              area: '合计',
+              provinceName: '合计',
+              custName: '合计',
+              custType: '合计',
+              pp1: '125.02',
+              pp2: '73.00',
+              pp3: '0',
+              pp4: '0',
+              pp5: '0',
+              pp6: '0',
+              pp7: '0',
+              pp8: '0',
+              pp9: '0',
+              pp10: '0',
+              pp11: '0',
+              pp12: '0',
+              pp13: '0',
+              pp14: '0',
+              pp15: '0',
+              pp16: '0',
+              pp17: '0',
+              pp18: '0',
+              pp19: '0',
+              totalAmount: '198.02'
+            }],
+            count: 1
+          }
+          for (var i = 0; i < data.list.length; i++) {
+            data.list[i].no = i + 1
+          }
+          _this.disabled = false
+          resolve(data)
+        })
+      },
+      productType: [],
+      productTotal: null,
+      currentTotal: null
+    }
+  },
+  methods: {
+    //  创建时间  change
+    dateChange (date) {
+      this.queryParam.beginDate = date[0]
+      this.queryParam.endDate = date[1]
+    },
+    custChange (obj) {
+      this.queryParam.buyerSn = obj.key
+    },
+    // 获取城市列表
+    getCityList (val) {
+      const index = this.addrProvinceList.findIndex(item => item.areaSn == val)
+      if (index >= 0) {
+        this.queryParam.provinceName = this.addrProvinceList[index].name
+      }
+      this.addrCityList = []
+      this.addrDistrictList = []
+      this.queryParam.citySn = undefined
+      this.queryParam.districtSn = undefined
+      this.queryParam.address = ''
+      this.getArea('city', val)
+    },
+    // 获取区县列表
+    getAreaList (val) {
+      const index = this.addrCityList.findIndex(item => item.areaSn == val)
+      if (index >= 0) {
+        this.queryParam.cityName = this.addrCityList[index].name
+      }
+      this.addrDistrictList = []
+      this.queryParam.districtSn = undefined
+      this.queryParam.address = ''
+      this.getArea('district', val)
+    },
+    // 区县变更
+    areaCharged (val) {
+      const index = this.addrDistrictList.findIndex(item => item.areaSn == val)
+      if (index >= 0) {
+        this.queryParam.districtName = this.addrDistrictList[index].name
+      }
+      this.queryParam.address = ''
+    },
+    //  省/市/区
+    getArea (leve, sn) {
+      let params
+      if (leve == 'province') {
+        params = { type: '2' }
+      } else {
+        params = { parentId: sn, type: leve == 'city' ? '3' : '4' }
+      }
+      getArea(params).then(res => {
+        if (res.status == 200) {
+          if (leve == 'province') {
+            this.addrProvinceList = res.data || []
+          } else if (leve == 'city') {
+            this.addrCityList = res.data || []
+          } else if (leve == 'district') {
+            this.addrDistrictList = res.data || []
+          }
+        } else {
+          if (leve == 'province') {
+            this.addrProvinceList = []
+          } else if (leve == 'city') {
+            this.addrCityList = []
+          } else if (leve == 'district') {
+            this.addrDistrictList = []
+          }
+        }
+      })
+    },
+    //  重置
+    resetSearchForm () {
+      this.$refs.rangeDate.resetDate(this.time)
+      this.queryParam.beginDate = getDate.getThreeMonthDays().starttime
+      this.queryParam.endDate = getDate.getCurrMonthDays().endtime
+      this.queryParam.buyerSn = undefined
+      this.queryParam.subareaSn = undefined
+      this.queryParam.productName = ''
+      this.queryParam.productCode = ''
+      this.queryParam.productTypeSn1 = ''
+      this.queryParam.productTypeSn2 = ''
+      this.queryParam.productTypeSn3 = ''
+      this.queryParam.salesBillNo = ''
+      this.productType = []
+      this.$refs.table.refresh(true)
+    },
+    // 详情
+    handleDetail (row) {
+      this.$router.push({ name: 'salesDetail', params: { sn: row.salesBillSn } })
+    },
+    //  导出
+    handleExport () {
+      const params = this.queryParam
+      if (this.time && this.time.length) {
+        params.beginDate = moment(this.time[0]).format('YYYY-MM-DD')
+        params.endDate = moment(this.time[1]).format('YYYY-MM-DD')
+      } else {
+        params.beginDate = ''
+        params.endDate = ''
+      }
+      this.exportLoading = true
+      oosDetailExport(params).then(res => {
+        this.exportLoading = false
+        this.download(res)
+      })
+    },
+    download (data) {
+      if (!data) { return }
+      const url = window.URL.createObjectURL(new Blob([data]))
+      const link = document.createElement('a')
+      link.style.display = 'none'
+      link.href = url
+      const a = moment().format('YYYYMMDDHHmmss')
+      const fname = '缺货统计(按客户)' + a
+      link.setAttribute('download', fname + '.xlsx')
+      document.body.appendChild(link)
+      link.click()
+    }
+  },
+  beforeRouteEnter (to, from, next) {
+    next(vm => {
+      vm.getArea('province')
+    })
+  }
+}
+</script>

+ 278 - 0
src/views/reportData/allocationDetails/list.vue

@@ -0,0 +1,278 @@
+<template>
+  <a-card size="small" :bordered="false" class="provinceTypeSalesDetailsList-wrap">
+    <!-- 搜索条件 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline" @keyup.enter.native="$refs.table.refresh(true)">
+        <a-row :gutter="15">
+          <a-col :md="6" :sm="24">
+            <a-form-item label="调拨开单日期">
+              <rangeDate ref="rangeDate" @change="dateChange" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="24">
+            <a-form-item label="调拨单号">
+              <a-input id="bulkWarehousingOrderList-productCode" v-model.trim="queryParam.productCode" allowClear placeholder="请输入销售单号"/>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="24">
+            <a-form-item label="产品编码">
+              <a-input id="productPricingList-queryWord" v-model.trim="queryParam.queryWord" allowClear placeholder="请输入产品编码"/>
+            </a-form-item>
+          </a-col>
+          <template v-if="advanced">
+            <a-col :md="6" :sm="24">
+              <a-form-item label="所在区域">
+                <a-select id="provinceTypeSalesDetailsList-allocateTypeSn" v-model="queryParam.allocateTypeSn" placeholder="请选择区域" allowClear >
+                  <a-select-option v-for="item in allocateTypeList" :key="item.allocateTypeSn" :value="item.allocateTypeSn">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="省份">
+                <a-select id="provinceTypeSalesDetailsList-state" v-model="queryParam.state" placeholder="请选择省份" allowClear >
+                  <a-select-option v-for="item in allocateTypeList" :key="item.allocateTypeSn" :value="item.allocateTypeSn">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="排序">
+                <a-select id="provinceTypeSalesDetailsList-state" v-model="queryParam.state" placeholder="请选择排序" allowClear >
+                  <a-select-option v-for="item in allocateTypeList" :key="item.allocateTypeSn" :value="item.allocateTypeSn">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="操作员">
+                <a-select id="provinceTypeSalesDetailsList-state" v-model="queryParam.state" placeholder="请选择操作员" allowClear >
+                  <a-select-option v-for="item in allocateTypeList" :key="item.allocateTypeSn" :value="item.allocateTypeSn">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="产品名称">
+                <a-input id="productPricingList-name" v-model.trim="queryParam.name" allowClear placeholder="请输入产品名称"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="客户名称">
+                <a-input id="productPricingList-name" v-model.trim="queryParam.name" allowClear placeholder="请输入客户名称"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="产品品牌">
+                <a-select
+                  placeholder="请选择"
+                  id="productPricingList-productBrandSn"
+                  allowClear
+                  v-model="queryParam.productBrandSn"
+                  :showSearch="true"
+                  option-filter-prop="children"
+                  :filter-option="filterOption">
+                  <a-select-option v-for="item in productBrandList" :key="item.brandSn" :value="item.brandSn">{{ item.brandName }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="客户级别">
+                <a-select
+                  placeholder="请选择"
+                  id="productPricingList-productBrandSn"
+                  allowClear
+                  v-model="queryParam.productBrandSn"
+                  :showSearch="true"
+                  option-filter-prop="children"
+                  :filter-option="filterOption">
+                  <a-select-option v-for="item in productBrandList" :key="item.brandSn" :value="item.brandSn">{{ item.brandName }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="品牌类别">
+                <v-select code="BRAND_TYPE" id="productBrandList-brandType" v-model="queryParam.brandType" allowClear placeholder="请选择品牌分类"></v-select>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="二级分类">
+                <a-select
+                  placeholder="请选择"
+                  id="productPricingList-productBrandSn"
+                  allowClear
+                  v-model="queryParam.productBrandSn"
+                  :showSearch="true"
+                  option-filter-prop="children"
+                  :filter-option="filterOption">
+                  <a-select-option v-for="item in productBrandList" :key="item.brandSn" :value="item.brandSn">{{ item.brandName }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="三级分类">
+                <a-select
+                  placeholder="请选择"
+                  id="productPricingList-productBrandSn"
+                  allowClear
+                  v-model="queryParam.productBrandSn"
+                  :showSearch="true"
+                  option-filter-prop="children"
+                  :filter-option="filterOption">
+                  <a-select-option v-for="item in productBrandList" :key="item.brandSn" :value="item.brandSn">{{ item.brandName }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="盘点区间日期">
+                <a-checkbox @change="onChange"></a-checkbox>
+              </a-form-item>
+            </a-col>
+          </template>
+          <a-col :md="6" :sm="24">
+            <a-button style="margin-bottom: 18px;" type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="productPricingList-refresh">查询</a-button>
+            <a-button style="margin: 0 0 18px 8px" @click="resetSearchForm" :disabled="disabled" id="productPricingList-reset">重置</a-button>
+            <a @click="advanced=!advanced" style="margin-left: 8px">
+              {{ advanced ? '收起' : '展开' }}
+              <a-icon :type="advanced ? 'up' : 'down'"/>
+            </a>
+          </a-col>
+        </a-row>
+      </a-form>
+    </div>
+    <!-- 列表 -->
+    <s-table
+      class="sTable"
+      ref="table"
+      size="small"
+      :rowKey="(record) => record.id"
+      :columns="columns"
+      :data="loadData"
+      :scroll="{ x: 2960 }"
+      bordered>
+      <template slot="footer" slot-scope="currentPageData">
+        <a-row :gutter="15">
+          <a-col :md="4" :sm="24">
+            总数量:263320
+          </a-col>
+          <a-col :md="4" :sm="24">
+            总进价:1,827,311.38
+          </a-col>
+          <a-col :md="4" :sm="24">
+            总毛利:1187.11
+          </a-col>
+          <a-col :md="4" :sm="24">
+            总售价:2,233,739.75
+          </a-col>
+        </a-row>
+      </template>
+    </s-table>
+  </a-card>
+</template>
+
+<script>
+import { STable, VSelect } from '@/components'
+import reportData from '@/libs/reportData'
+import rangeDate from '@/views/common/rangeDate.vue'
+// import { allocateBillList, allocateBillDel, allocateBillAudit, allocateBillExport } from '@/api/allocateBill'
+// import { allocateTypeAllList } from '@/api/allocateType'
+export default {
+  components: { STable, VSelect, rangeDate },
+  data () {
+    return {
+      advanced: false, // 高级搜索 展开/关闭
+      tableHeight: 0,
+      queryParam: { //  查询条件
+        beginDate: '',
+        endDate: '',
+        targetName: '', //  调往对象
+        allocateTypeSn: undefined, //  调拨类型
+        state: undefined, //  业务状态
+        allocateNo: '' //  调拨单号
+      },
+      disabled: false, //  查询、重置按钮是否可操作
+      exportLoading: false,
+      checkVal: '',
+      reportData: reportData.reportDataList,
+      columns: [
+        { title: '序号', dataIndex: 'no', width: 80, align: 'center', fixed: 'left' },
+        { title: '区域', dataIndex: 'data1', width: 200, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '调拨单号', dataIndex: 'data2', width: 200, align: 'center', sorter: true, customRender: function (text) { return text || '--' } },
+        { title: '调拨开单日期', dataIndex: 'data3', width: 160, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '省份', dataIndex: 'data4', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '客户名称', dataIndex: 'data5', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') }, ellipsis: true },
+        { title: '客户类型', dataIndex: 'data6', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '品牌', dataIndex: 'data7', width: 200, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') }, ellipsis: true },
+        { title: '二级类别', dataIndex: 'data8', width: 200, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '产品名称', dataIndex: 'data9', align: 'center', sorter: true, customRender: function (text) { return ((text || text == 0) ? text : '--') }, ellipsis: true },
+        { title: '产品编码', dataIndex: 'data10', width: 120, align: 'center', sorter: true, customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '调拨数量', dataIndex: 'data11', width: 100, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '单位', dataIndex: 'data12', width: 100, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '进价', dataIndex: 'data13', width: 100, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '售价', dataIndex: 'data14', width: 100, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '总进价', dataIndex: 'data15', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '毛利', dataIndex: 'data16', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '仓库', dataIndex: 'data17', width: 120, align: 'center', sorter: true, customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '仓位', dataIndex: 'data18', width: 120, align: 'center', sorter: true, customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '操作员', dataIndex: 'data19', width: 120, align: 'center', sorter: true, customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '调拨类型', dataIndex: 'data20', width: 140, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } }
+      ],
+      // 加载数据方法 必须为 Promise 对象
+      loadData: parameter => {
+        this.disabled = true
+        // return allocateBillList(Object.assign(parameter, this.queryParam)).then(res => {
+        //   const data = res.data
+        //   const no = (data.pageNo - 1) * data.pageSize
+        //   for (var i = 0; i < data.list.length; i++) {
+        //     data.list[i].no = no + i + 1
+        //   }
+        //   this.disabled = false
+        //   return data
+        // })
+        const _this = this
+        return new Promise(function (resolve, reject) {
+          const data = {
+            pageNo: 1,
+            pageSize: 10,
+            list: reportData.allocationDetailsList,
+            count: 10
+          }
+          for (var i = 0; i < data.list.length; i++) {
+            data.list[i].no = i + 1
+          }
+          _this.disabled = false
+          resolve(data)
+        })
+      },
+      allocateTypeList: [], //  调拨类型
+      openModal: false //  新增编辑  弹框
+    }
+  },
+  methods: {
+    handleFooterShow (currentPageData) {
+      console.log(currentPageData, '[=currentPageData]')
+    },
+    //  创建时间  change
+    dateChange (date) {
+      this.queryParam.beginDate = date[0]
+      this.queryParam.endDate = date[1]
+    },
+    // 选择盘点日期
+    onChange (e) {
+      console.log(e)
+      // this.checkVal
+    },
+
+    //  重置
+    resetSearchForm () {
+      this.$refs.rangeDate.resetDate()
+      this.queryParam.beginDate = ''
+      this.queryParam.endDate = ''
+      this.queryParam.targetName = ''
+      this.queryParam.allocateTypeSn = undefined
+      this.queryParam.state = undefined
+      this.queryParam.allocateNo = ''
+      this.$refs.table.refresh(true)
+    }
+  },
+  beforeRouteEnter (to, from, next) {
+    next(vm => {})
+  }
+}
+</script>

+ 179 - 0
src/views/reportData/allocationOrderTotal/list.vue

@@ -0,0 +1,179 @@
+<template>
+  <a-card size="small" :bordered="false" class="provinceTypeSalesDetailsList-wrap">
+    <!-- 搜索条件 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline" @keyup.enter.native="$refs.table.refresh(true)">
+        <a-row :gutter="15">
+          <a-col :md="6" :sm="24">
+            <a-form-item label="调拨开单日期">
+              <rangeDate ref="rangeDate" @change="dateChange" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="24">
+            <a-form-item label="调拨单号">
+              <a-input id="bulkWarehousingOrderList-productCode" v-model.trim="queryParam.productCode" allowClear placeholder="请输入销售单号"/>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="24">
+            <a-form-item label="操作员">
+              <a-select id="provinceTypeSalesDetailsList-allocateTypeSn" v-model="queryParam.allocateTypeSn" placeholder="请选择区域" allowClear >
+                <a-select-option v-for="item in allocateTypeList" :key="item.allocateTypeSn" :value="item.allocateTypeSn">{{ item.name }}</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <template v-if="advanced">
+            <a-col :md="6" :sm="24">
+              <a-form-item label="调拨类型">
+                <a-select
+                  placeholder="请选择"
+                  id="productPricingList-productBrandSn"
+                  allowClear
+                  v-model="queryParam.productBrandSn"
+                  :showSearch="true"
+                  option-filter-prop="children"
+                  :filter-option="filterOption">
+                  <a-select-option v-for="item in productBrandList" :key="item.brandSn" :value="item.brandSn">{{ item.brandName }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="盘点区间日期">
+                <a-checkbox @change="onChange"></a-checkbox>
+              </a-form-item>
+            </a-col>
+          </template>
+          <a-col :md="6" :sm="24">
+            <a-button style="margin-bottom: 18px;" type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="productPricingList-refresh">查询</a-button>
+            <a-button style="margin: 0 0 18px 8px" @click="resetSearchForm" :disabled="disabled" id="productPricingList-reset">重置</a-button>
+            <a @click="advanced=!advanced" style="margin-left: 8px">
+              {{ advanced ? '收起' : '展开' }}
+              <a-icon :type="advanced ? 'up' : 'down'"/>
+            </a>
+          </a-col>
+        </a-row>
+      </a-form>
+    </div>
+    <!-- 列表 -->
+    <s-table
+      class="sTable"
+      ref="table"
+      size="small"
+      :rowKey="(record) => record.id"
+      :columns="columns"
+      :data="loadData"
+      :scroll="{ x: 1140 }"
+      bordered>
+      <template slot="footer" slot-scope="currentPageData">
+        <a-row :gutter="15">
+          <a-col :md="4" :sm="24">
+            总数量:752325
+          </a-col>
+          <a-col :md="4" :sm="24">
+            总进价:4,405,812.22
+          </a-col>
+          <a-col :md="4" :sm="24">
+            总毛利:-4,405,812.22
+          </a-col>
+        </a-row>
+      </template>
+    </s-table>
+  </a-card>
+</template>
+
+<script>
+import { STable, VSelect } from '@/components'
+import reportData from '@/libs/reportData'
+import rangeDate from '@/views/common/rangeDate.vue'
+// import { allocateBillList, allocateBillDel, allocateBillAudit, allocateBillExport } from '@/api/allocateBill'
+// import { allocateTypeAllList } from '@/api/allocateType'
+export default {
+  components: { STable, VSelect, rangeDate },
+  data () {
+    return {
+      advanced: false, // 高级搜索 展开/关闭
+      tableHeight: 0,
+      queryParam: { //  查询条件
+        beginDate: '',
+        endDate: '',
+        targetName: '', //  调往对象
+        allocateTypeSn: undefined, //  调拨类型
+        state: undefined, //  业务状态
+        allocateNo: '' //  调拨单号
+      },
+      disabled: false, //  查询、重置按钮是否可操作
+      exportLoading: false,
+      checkVal: '',
+      reportData: reportData.reportDataList,
+      columns: [
+        { title: '序号', dataIndex: 'no', width: 80, align: 'center', fixed: 'left' },
+        { title: '调拨单号', dataIndex: 'data1', width: 200, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '调拨开单日期', dataIndex: 'data2', width: 160, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '客户名称', dataIndex: 'data3', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '调拨数量', dataIndex: 'data4', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '进价', dataIndex: 'data5', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '毛利', dataIndex: 'data6', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '操作员', dataIndex: 'data7', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } }
+      ],
+      // 加载数据方法 必须为 Promise 对象
+      loadData: parameter => {
+        this.disabled = true
+        // return allocateBillList(Object.assign(parameter, this.queryParam)).then(res => {
+        //   const data = res.data
+        //   const no = (data.pageNo - 1) * data.pageSize
+        //   for (var i = 0; i < data.list.length; i++) {
+        //     data.list[i].no = no + i + 1
+        //   }
+        //   this.disabled = false
+        //   return data
+        // })
+        const _this = this
+        return new Promise(function (resolve, reject) {
+          const data = {
+            pageNo: 1,
+            pageSize: 10,
+            list: reportData.allocationOrderTotalList,
+            count: 10
+          }
+          for (var i = 0; i < data.list.length; i++) {
+            data.list[i].no = i + 1
+          }
+          _this.disabled = false
+          resolve(data)
+        })
+      },
+      allocateTypeList: [], //  调拨类型
+      openModal: false //  新增编辑  弹框
+    }
+  },
+  methods: {
+    handleFooterShow (currentPageData) {
+      console.log(currentPageData, '[=currentPageData]')
+    },
+    //  创建时间  change
+    dateChange (date) {
+      this.queryParam.beginDate = date[0]
+      this.queryParam.endDate = date[1]
+    },
+    // 选择盘点日期
+    onChange (e) {
+      console.log(e)
+      // this.checkVal
+    },
+
+    //  重置
+    resetSearchForm () {
+      this.$refs.rangeDate.resetDate()
+      this.queryParam.beginDate = ''
+      this.queryParam.endDate = ''
+      this.queryParam.targetName = ''
+      this.queryParam.allocateTypeSn = undefined
+      this.queryParam.state = undefined
+      this.queryParam.allocateNo = ''
+      this.$refs.table.refresh(true)
+    }
+  },
+  beforeRouteEnter (to, from, next) {
+    next(vm => {})
+  }
+}
+</script>

+ 567 - 0
src/views/reportData/billingReturnReport/list.vue

@@ -0,0 +1,567 @@
+<template>
+  <a-card size="small" :bordered="false" class="shortageStatisticsCList-wrap">
+    <!-- 搜索条件 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline" @keyup.enter.native="$refs.table.refresh(true)">
+        <a-row :gutter="15">
+          <a-col :md="6" :sm="24">
+            <a-form-item label="销售日期">
+              <rangeDate ref="rangeDate" :value="time" @change="dateChange" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="24">
+            <a-form-item label="客户名称">
+              <custList ref="custList" id="shortageStatisticsCList-buyerSn" @change="custChange"></custList>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="24">
+            <a-form-item label="客户类型">
+              <custList ref="custList" id="shortageStatisticsCList-buyerSn" @change="custChange"></custList>
+            </a-form-item>
+          </a-col>
+          <template v-if="advanced">
+            <a-col :md="6" :sm="24">
+              <a-form-item label="所在区域">
+                <subarea id="shortageStatisticsCList-subarea" v-model="queryParam.subareaSn"></subarea>
+              </a-form-item>
+            </a-col>
+            <a-col :md="12" :sm="24">
+              <a-row>
+                <a-form-item label="地区">
+                  <a-col span="7">
+                    <a-form-item prop="dealerProvinceSn" style="margin: 0;">
+                      <a-select v-model="queryParam.dealerProvinceSn" @change="getCityList" placeholder="请选择省">
+                        <a-select-option v-for="item in addrProvinceList" :value="item.id" :key="item.id + 'a'">{{ item.name }}</a-select-option>
+                      </a-select>
+                    </a-form-item>
+                  </a-col>
+                  <a-col span="7" offset="1">
+                    <a-form-item prop="dealerCitySn" style="margin: 0;">
+                      <a-select v-model="queryParam.dealerCitySn" @change="getAreaList" placeholder="请选择市">
+                        <a-select-option v-for="item in addrCityList" :value="item.id" :key="item.id + 'b'">{{ item.name }}</a-select-option>
+                      </a-select>
+                    </a-form-item>
+                  </a-col>
+                  <a-col span="7" offset="1">
+                    <a-form-item prop="dealerCountySn" style="margin: 0;">
+                      <a-select v-model="queryParam.dealerCountySn" placeholder="请选择区/县">
+                        <a-select-option v-for="item in addrDistrictList" :value="item.id" :key="item.id + 'c'">{{ item.name }}</a-select-option>
+                      </a-select>
+                    </a-form-item>
+                  </a-col>
+                </a-form-item>
+              </a-row>
+            </a-col>
+          </template>
+          <a-col :md="6" :sm="24">
+            <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="shortageStatisticsCList-refresh">查询</a-button>
+            <a-button style="margin-left: 8px" @click="resetSearchForm" :disabled="disabled" id="shortageStatisticsCList-reset">重置</a-button>
+            <a @click="advanced=!advanced" style="margin-left: 8px">
+              {{ advanced ? '收起' : '展开' }}
+              <a-icon :type="advanced ? 'up' : 'down'"/>
+            </a>
+          </a-col>
+        </a-row>
+      </a-form>
+    </div>
+    <!-- 列表 -->
+    <s-table
+      class="sTable"
+      ref="table"
+      size="small"
+      :rowKey="(record) => record.id"
+      :columns="columns"
+      :data="loadData"
+      :scroll="{ x: 2880, y: tableHeight }"
+      bordered>
+    </s-table>
+  </a-card>
+</template>
+
+<script>
+import moment from 'moment'
+import getDate from '@/libs/getDate.js'
+import { STable, VSelect } from '@/components'
+import rangeDate from '@/views/common/rangeDate.vue'
+import custList from '@/views/common/custList.vue'
+import subarea from '@/views/common/subarea.js'
+import { getArea } from '@/api/data'
+import { oosBuyerList, oosBuyerDetailCount, oosBuyerDetailPageCount, oosDetailExport } from '@/api/oos'
+export default {
+  components: { STable, VSelect, custList, subarea, rangeDate },
+  data () {
+    return {
+      advanced: false, // 高级搜索 展开/关闭
+      tableHeight: 0,
+      queryParam: { //  查询条件
+        beginDate: '',
+        endDate: '',
+        buyerSn: undefined,
+        subareaSn: undefined, //  区域
+        provinceSn: undefined,
+        citySn: undefined,
+        districtSn: undefined
+      },
+      disabled: false, //  查询、重置按钮是否可操作
+      exportLoading: false, // 导出loading
+      addrProvinceList: [], //  省下拉
+      addrCityList: [], //  市下拉
+      addrDistrictList: [], //  区下拉
+      time: [], //  创建时间
+      columns: [
+        { title: '序号', dataIndex: 'no', width: 80, align: 'center' },
+        { title: '区域',
+          dataIndex: 'area',
+          width: 150,
+          align: 'center',
+          customRender: (text, row, index) => {
+            if (text == '合计') {
+              return {
+                children: <span>{ text }</span>,
+                attrs: {
+                  colSpan: 4
+                }
+              }
+            }
+            return text
+          }
+        },
+        { title: '省份',
+          dataIndex: 'provinceName',
+          width: 150,
+          align: 'center',
+          customRender: function (text, row, index) {
+            if (text == '合计') {
+              return {
+                children: <span>{ text }</span>,
+                attrs: {
+                  colSpan: 0
+                }
+              }
+            }
+            return text || '--'
+          } },
+        { title: '客户名称',
+          dataIndex: 'custName',
+          width: 200,
+          align: 'center',
+          customRender: function (text, row, index) {
+            if (text == '合计') {
+              return {
+                children: <span>{ text }</span>,
+                attrs: {
+                  colSpan: 0
+                }
+              }
+            }
+            return text || '--'
+          } },
+        { title: '客户类型',
+          dataIndex: 'custType',
+          width: 200,
+          align: 'center',
+          customRender: function (text, row, index) {
+            if (text == '合计') {
+              return {
+                children: <span>{ text }</span>,
+                attrs: {
+                  colSpan: 0
+                }
+              }
+            }
+            return text || '--'
+          } },
+        { title: '品牌',
+          align: 'center',
+          children: [
+            {
+              title: '箭牌',
+              align: 'center',
+              children: [
+                {
+                  title: '滤清器',
+                  dataIndex: 'pp1',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '雨刮片',
+                  dataIndex: 'pp2',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '喇叭',
+                  dataIndex: 'pp3',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '刹车片',
+                  dataIndex: 'pp4',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '感应线',
+                  dataIndex: 'pp5',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                }
+              ]
+            },
+            {
+              title: '冠牌',
+              align: 'center',
+              children: [
+                {
+                  title: '滤清器',
+                  dataIndex: 'pp6',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '雨刮片',
+                  dataIndex: 'pp7',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '刹车片',
+                  dataIndex: 'pp8',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                }
+              ]
+            },
+            {
+              title: '汇箭',
+              dataIndex: 'pp9',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '德路斯',
+              dataIndex: 'pp10',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '稳升',
+              dataIndex: 'pp11',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: 'TBU',
+              dataIndex: 'pp12',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            }
+          ] },
+        { title: '代理品牌',
+          align: 'center',
+          children: [
+            {
+              title: 'NGK',
+              dataIndex: 'pp13',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '飞利浦',
+              dataIndex: 'pp14',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '车仆',
+              dataIndex: 'pp15',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '瓦尔塔',
+              dataIndex: 'pp16',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '雷贝斯托',
+              dataIndex: 'pp17',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '德尔福',
+              dataIndex: 'pp18',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '巴诺德',
+              dataIndex: 'pp19',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            }
+          ] },
+        { title: '开单退货合计金额', width: 200, dataIndex: 'totalAmount', align: 'center', customRender: function (text) { return text ? ('¥' + text) : '--' } }
+      ],
+      // 加载数据方法 必须为 Promise 对象
+      loadData: parameter => {
+        // this.disabled = true
+        // if (this.tableHeight == 0) {
+        //   this.tableHeight = window.innerHeight - 380
+        // }
+        // const paramsPage = Object.assign(this.queryParam, { pageNo: parameter.pageNo, pageSize: parameter.pageSize }) //  有分页
+        // const params = Object.assign(parameter, this.queryParam) //  无分页
+        // return oosBuyerList(params).then(res => {
+        //   const data = res.data
+        //   const no = (data.pageNo - 1) * data.pageSize
+        //   for (var i = 0; i < data.list.length; i++) {
+        //     data.list[i].no = no + i + 1
+        //   }
+        //   this.disabled = false
+        //   return data
+        // })
+        const _this = this
+        return new Promise(function (resolve, reject) {
+          const data = {
+            pageNo: 1,
+            pageSize: 10,
+            list: [{
+              area: 'A区',
+              provinceName: '广东省',
+              custName: '剪冠汽配佛山白坭店',
+              custType: '省级服务中心',
+              pp1: '0',
+              pp2: '0',
+              pp3: '0',
+              pp4: '0',
+              pp5: '0',
+              pp6: '0',
+              pp7: '0',
+              pp8: '0',
+              pp9: '0',
+              pp10: '0',
+              pp11: '0',
+              pp12: '0',
+              pp13: '37.00',
+              pp14: '0',
+              pp15: '0',
+              pp16: '0',
+              pp17: '0',
+              pp18: '0',
+              pp19: '0',
+              totalAmount: '37.00'
+            },
+            {
+              area: 'A区',
+              provinceName: '广东省',
+              custName: '支持省级',
+              custType: '省级服务中心',
+              pp1: '0',
+              pp2: '36.50',
+              pp3: '0',
+              pp4: '0',
+              pp5: '0',
+              pp6: '0',
+              pp7: '0',
+              pp8: '0',
+              pp9: '0',
+              pp10: '0',
+              pp11: '0',
+              pp12: '0',
+              pp13: '0',
+              pp14: '0',
+              pp15: '0',
+              pp16: '0',
+              pp17: '0',
+              pp18: '0',
+              pp19: '0',
+              totalAmount: '36.50'
+            },
+            {
+              area: '合计',
+              provinceName: '合计',
+              custName: '合计',
+              custType: '合计',
+              pp1: '0',
+              pp2: '36.50',
+              pp3: '0',
+              pp4: '0',
+              pp5: '0',
+              pp6: '0',
+              pp7: '0',
+              pp8: '0',
+              pp9: '0',
+              pp10: '0',
+              pp11: '0',
+              pp12: '0',
+              pp13: '37.00',
+              pp14: '0',
+              pp15: '0',
+              pp16: '0',
+              pp17: '0',
+              pp18: '0',
+              pp19: '0',
+              totalAmount: '73.50'
+            }],
+            count: 1
+          }
+          for (var i = 0; i < data.list.length; i++) {
+            data.list[i].no = i + 1
+          }
+          _this.disabled = false
+          resolve(data)
+        })
+      },
+      productType: [],
+      productTotal: null,
+      currentTotal: null
+    }
+  },
+  methods: {
+    //  创建时间  change
+    dateChange (date) {
+      this.queryParam.beginDate = date[0]
+      this.queryParam.endDate = date[1]
+    },
+    custChange (obj) {
+      this.queryParam.buyerSn = obj.key
+    },
+    // 获取城市列表
+    getCityList (val) {
+      const index = this.addrProvinceList.findIndex(item => item.areaSn == val)
+      if (index >= 0) {
+        this.queryParam.provinceName = this.addrProvinceList[index].name
+      }
+      this.addrCityList = []
+      this.addrDistrictList = []
+      this.queryParam.citySn = undefined
+      this.queryParam.districtSn = undefined
+      this.queryParam.address = ''
+      this.getArea('city', val)
+    },
+    // 获取区县列表
+    getAreaList (val) {
+      const index = this.addrCityList.findIndex(item => item.areaSn == val)
+      if (index >= 0) {
+        this.queryParam.cityName = this.addrCityList[index].name
+      }
+      this.addrDistrictList = []
+      this.queryParam.districtSn = undefined
+      this.queryParam.address = ''
+      this.getArea('district', val)
+    },
+    // 区县变更
+    areaCharged (val) {
+      const index = this.addrDistrictList.findIndex(item => item.areaSn == val)
+      if (index >= 0) {
+        this.queryParam.districtName = this.addrDistrictList[index].name
+      }
+      this.queryParam.address = ''
+    },
+    //  省/市/区
+    getArea (leve, sn) {
+      let params
+      if (leve == 'province') {
+        params = { type: '2' }
+      } else {
+        params = { parentId: sn, type: leve == 'city' ? '3' : '4' }
+      }
+      getArea(params).then(res => {
+        if (res.status == 200) {
+          if (leve == 'province') {
+            this.addrProvinceList = res.data || []
+          } else if (leve == 'city') {
+            this.addrCityList = res.data || []
+          } else if (leve == 'district') {
+            this.addrDistrictList = res.data || []
+          }
+        } else {
+          if (leve == 'province') {
+            this.addrProvinceList = []
+          } else if (leve == 'city') {
+            this.addrCityList = []
+          } else if (leve == 'district') {
+            this.addrDistrictList = []
+          }
+        }
+      })
+    },
+    //  重置
+    resetSearchForm () {
+      this.$refs.rangeDate.resetDate(this.time)
+      this.queryParam.beginDate = getDate.getThreeMonthDays().starttime
+      this.queryParam.endDate = getDate.getCurrMonthDays().endtime
+      this.queryParam.buyerSn = undefined
+      this.queryParam.subareaSn = undefined
+      this.queryParam.productName = ''
+      this.queryParam.productCode = ''
+      this.queryParam.productTypeSn1 = ''
+      this.queryParam.productTypeSn2 = ''
+      this.queryParam.productTypeSn3 = ''
+      this.queryParam.salesBillNo = ''
+      this.productType = []
+      this.$refs.table.refresh(true)
+    },
+    // 详情
+    handleDetail (row) {
+      this.$router.push({ name: 'salesDetail', params: { sn: row.salesBillSn } })
+    },
+    //  导出
+    handleExport () {
+      const params = this.queryParam
+      if (this.time && this.time.length) {
+        params.beginDate = moment(this.time[0]).format('YYYY-MM-DD')
+        params.endDate = moment(this.time[1]).format('YYYY-MM-DD')
+      } else {
+        params.beginDate = ''
+        params.endDate = ''
+      }
+      this.exportLoading = true
+      oosDetailExport(params).then(res => {
+        this.exportLoading = false
+        this.download(res)
+      })
+    },
+    download (data) {
+      if (!data) { return }
+      const url = window.URL.createObjectURL(new Blob([data]))
+      const link = document.createElement('a')
+      link.style.display = 'none'
+      link.href = url
+      const a = moment().format('YYYYMMDDHHmmss')
+      const fname = '缺货统计(按客户)' + a
+      link.setAttribute('download', fname + '.xlsx')
+      document.body.appendChild(link)
+      link.click()
+    }
+  },
+  beforeRouteEnter (to, from, next) {
+    next(vm => {
+      vm.getArea('province')
+    })
+  }
+}
+</script>

+ 138 - 0
src/views/reportData/districtTypeSalesDetails/list.vue

@@ -0,0 +1,138 @@
+<template>
+  <a-card size="small" :bordered="false" class="districtTypeSalesDetailsList-wrap">
+    <!-- 搜索条件 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline" @keyup.enter.native="$refs.table.refresh(true)">
+        <a-row :gutter="15">
+          <a-col :md="6" :sm="24">
+            <a-form-item label="创建时间">
+              <rangeDate ref="rangeDate" @change="dateChange" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="24">
+            <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="districtTypeSalesDetailsList-refresh">查询</a-button>
+            <a-button style="margin-left: 5px" @click="resetSearchForm" :disabled="disabled" id="districtTypeSalesDetailsList-reset">重置</a-button>
+          </a-col>
+        </a-row>
+      </a-form>
+    </div>
+    <!-- 列表 -->
+    <s-table
+      class="sTable"
+      ref="table"
+      size="small"
+      :rowKey="(record) => record.id"
+      :columns="columns"
+      :data="loadData"
+      :scroll="{ x: 3450 }"
+      bordered>
+    </s-table>
+  </a-card>
+</template>
+
+<script>
+import { STable, VSelect } from '@/components'
+import reportData from '@/libs/reportData'
+import rangeDate from '@/views/common/rangeDate.vue'
+// import { allocateBillList, allocateBillDel, allocateBillAudit, allocateBillExport } from '@/api/allocateBill'
+// import { allocateTypeAllList } from '@/api/allocateType'
+export default {
+  components: { STable, VSelect, rangeDate },
+  data () {
+    return {
+      advanced: false, // 高级搜索 展开/关闭
+      tableHeight: 0,
+      queryParam: { //  查询条件
+        beginDate: '',
+        endDate: '',
+        targetName: '', //  调往对象
+        allocateTypeSn: undefined, //  调拨类型
+        state: undefined, //  业务状态
+        allocateNo: '' //  调拨单号
+      },
+      disabled: false, //  查询、重置按钮是否可操作
+      exportLoading: false,
+      columns: [
+        { title: '序号', dataIndex: 'no', width: 80, align: 'center', fixed: 'left' },
+        { title: '区域', dataIndex: 'area', width: 200, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '箭牌滤清器', dataIndex: 'targetName', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '冠牌滤清器', dataIndex: 'dealerLevelDictValue', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '滤清器合计', dataIndex: 'totalQty', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '箭牌雨刮片', dataIndex: 'totalCost', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '冠牌雨刮片', dataIndex: 'totalPrice', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '雨刮片合计', dataIndex: 'auditTime', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '箭牌刹车片', dataIndex: 'allocateTypeName', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '箭牌感应线', dataIndex: 'stateDictValue', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '冠牌刹车片', dataIndex: 'printStateDictValue', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: 'TBU刹车片', dataIndex: 'printCount', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: 'TBU刹车油', dataIndex: 'printCounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: 'TBU感应线', dataIndex: 'printCsounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '刹车片合计', dataIndex: 'printdCounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '德路斯润滑油', dataIndex: 'prfintCounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '德路斯刹车油', dataIndex: 'printCogunts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '德路斯变速箱油', dataIndex: 'phrintCounts', width: 140, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '德路斯合计', dataIndex: 'printCsountss', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '稳升点火线圈', dataIndex: 'prinftCounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '稳升灯泡', dataIndex: 'prisntCogunts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '稳升合计', dataIndex: 'prinxtCounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '汇箭', dataIndex: 'printCocunts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '布瑞斯', dataIndex: 'printCvounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '箭牌喇叭', dataIndex: 'printCgounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '品牌合计', dataIndex: 'printCouhnts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: 'NGK', dataIndex: 'printCoujnts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '品牌+NGK总合计', dataIndex: 'printCournts', width: 150, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } }
+      ],
+      // 加载数据方法 必须为 Promise 对象
+      loadData: parameter => {
+        this.disabled = true
+        // return allocateBillList(Object.assign(parameter, this.queryParam)).then(res => {
+        //   const data = res.data
+        //   const no = (data.pageNo - 1) * data.pageSize
+        //   for (var i = 0; i < data.list.length; i++) {
+        //     data.list[i].no = no + i + 1
+        //   }
+        //   this.disabled = false
+        //   return data
+        // })
+        const _this = this
+        return new Promise(function (resolve, reject) {
+          const data = {
+            pageNo: 1,
+            pageSize: 10,
+            list: reportData.districtTypeSalesList,
+            count: 10
+          }
+          for (var i = 0; i < data.list.length; i++) {
+            data.list[i].no = i + 1
+          }
+          _this.disabled = false
+          resolve(data)
+        })
+      },
+      allocateTypeList: [], //  调拨类型
+      openModal: false //  新增编辑  弹框
+    }
+  },
+  methods: {
+    //  创建时间  change
+    dateChange (date) {
+      this.queryParam.beginDate = date[0]
+      this.queryParam.endDate = date[1]
+    },
+    //  重置
+    resetSearchForm () {
+      this.$refs.rangeDate.resetDate()
+      this.queryParam.beginDate = ''
+      this.queryParam.endDate = ''
+      this.queryParam.targetName = ''
+      this.queryParam.allocateTypeSn = undefined
+      this.queryParam.state = undefined
+      this.queryParam.allocateNo = ''
+      this.$refs.table.refresh(true)
+    }
+  },
+  beforeRouteEnter (to, from, next) {
+    next(vm => {})
+  }
+}
+</script>

+ 174 - 0
src/views/reportData/nationalCustomerCostStatistics/list.vue

@@ -0,0 +1,174 @@
+<template>
+  <a-card size="small" :bordered="false" class="nationalCustomerCostStatisticsList-wrap">
+    <!-- 搜索条件 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline" @keyup.enter.native="$refs.table.refresh(true)">
+        <a-row :gutter="15">
+          <a-col :md="6" :sm="24">
+            <a-form-item label="创建时间">
+              <rangeDate ref="rangeDate" @change="dateChange" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="24">
+            <a-form-item label="区域">
+              <a-select id="nationalCustomerCostStatisticsList-allocateTypeSn" v-model="queryParam.allocateTypeSn" placeholder="请选择区域" allowClear >
+                <a-select-option v-for="item in allocateTypeList" :key="item.allocateTypeSn" :value="item.allocateTypeSn">{{ item.name }}</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="24">
+            <a-form-item label="省份">
+              <a-select id="nationalCustomerCostStatisticsList-state" v-model="queryParam.state" placeholder="请选择省份" allowClear >
+                <a-select-option v-for="item in allocateTypeList" :key="item.allocateTypeSn" :value="item.allocateTypeSn">{{ item.name }}</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="24">
+            <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="nationalCustomerCostStatisticsList-refresh">查询</a-button>
+            <a-button style="margin-left: 5px" @click="resetSearchForm" :disabled="disabled" id="nationalCustomerCostStatisticsList-reset">重置</a-button>
+          </a-col>
+        </a-row>
+      </a-form>
+    </div>
+    <!-- 列表 -->
+    <s-table
+      class="sTable"
+      ref="table"
+      size="small"
+      :rowKey="(record) => record.id"
+      :columns="columns"
+      :showPagination="false"
+      :data="loadData"
+      :scroll="{ x: 2920 }"
+      bordered>
+    </s-table>
+  </a-card>
+</template>
+
+<script>
+import { STable, VSelect } from '@/components'
+import reportData from '@/libs/reportData'
+import rangeDate from '@/views/common/rangeDate.vue'
+// import { allocateBillList, allocateBillDel, allocateBillAudit, allocateBillExport } from '@/api/allocateBill'
+// import { allocateTypeAllList } from '@/api/allocateType'
+export default {
+  components: { STable, VSelect, rangeDate },
+  data () {
+    return {
+      advanced: false, // 高级搜索 展开/关闭
+      tableHeight: 0,
+      queryParam: { //  查询条件
+        beginDate: '',
+        endDate: '',
+        targetName: '', //  调往对象
+        allocateTypeSn: undefined, //  调拨类型
+        state: undefined, //  业务状态
+        allocateNo: '' //  调拨单号
+      },
+      disabled: false, //  查询、重置按钮是否可操作
+      exportLoading: false,
+      columns: [
+        { title: '序号', dataIndex: 'no', width: 80, align: 'center', fixed: 'left' },
+        { title: '区域', dataIndex: 'area', width: 200, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '省份', dataIndex: 'province', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '客户名称', dataIndex: 'customerName', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
+        { title: '费用类型', dataIndex: 'targetName', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '1月', dataIndex: 'dealerLevelDictValue', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '2月', dataIndex: 'totalQty', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '3月', dataIndex: 'totalCost', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '4月', dataIndex: 'totalPrice', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '5月', dataIndex: 'auditTime', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '6月', dataIndex: 'allocateTypeName', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '7月', dataIndex: 'stateDictValue', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '8月', dataIndex: 'printStateDictValue', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '9月', dataIndex: 'printCount', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '10月', dataIndex: 'printCounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '11月', dataIndex: 'printCsounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '12月', dataIndex: 'printdCounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '1-12月费用合计', dataIndex: 'prfintCounts', width: 140, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        {
+          title: '实际销售额合计',
+          dataIndex: 'printCogunts',
+          width: 140,
+          align: 'center',
+          customRender: (value, row, index) => {
+            const obj = {
+              children: value,
+              attrs: {}
+            }
+            if (index === 0) { obj.attrs.rowSpan = 5 }
+            if (index === 1) { obj.attrs.rowSpan = 0 }
+            if (index === 2) { obj.attrs.rowSpan = 0 }
+            if (index === 3) { obj.attrs.rowSpan = 0 }
+            if (index === 4) { obj.attrs.rowSpan = 0 }
+            if (index === 5) { obj.attrs.rowSpan = 5 }
+            if (index === 6) { obj.attrs.rowSpan = 0 }
+            if (index === 7) { obj.attrs.rowSpan = 0 }
+            if (index === 8) { obj.attrs.rowSpan = 0 }
+            if (index === 9) { obj.attrs.rowSpan = 0 }
+            if (index === 10) { obj.attrs.rowSpan = 5 }
+            if (index === 11) { obj.attrs.rowSpan = 0 }
+            if (index === 12) { obj.attrs.rowSpan = 0 }
+            if (index === 13) { obj.attrs.rowSpan = 0 }
+            if (index === 14) { obj.attrs.rowSpan = 0 }
+            return obj
+          }
+        },
+        { title: '费用占比(%)', dataIndex: 'phrintCounts', width: 140, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '正常费用', dataIndex: 'printCsountss', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '特殊申请费用', dataIndex: 'prinftCounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } }
+      ],
+      // 加载数据方法 必须为 Promise 对象
+      loadData: parameter => {
+        this.disabled = true
+        // return allocateBillList(Object.assign(parameter, this.queryParam)).then(res => {
+        //   const data = res.data
+        //   const no = (data.pageNo - 1) * data.pageSize
+        //   for (var i = 0; i < data.list.length; i++) {
+        //     data.list[i].no = no + i + 1
+        //   }
+        //   this.disabled = false
+        //   return data
+        // })
+        const _this = this
+        return new Promise(function (resolve, reject) {
+          const data = {
+            pageNo: 1,
+            pageSize: 10,
+            list: reportData.nationalCustomerCostStatisticsList,
+            count: 10
+          }
+          for (var i = 0; i < data.list.length; i++) {
+            data.list[i].no = i + 1
+          }
+          _this.disabled = false
+          resolve(data)
+        })
+      },
+      allocateTypeList: [], //  调拨类型
+      openModal: false //  新增编辑  弹框
+    }
+  },
+  methods: {
+    //  创建时间  change
+    dateChange (date) {
+      this.queryParam.beginDate = date[0]
+      this.queryParam.endDate = date[1]
+    },
+    //  重置
+    resetSearchForm () {
+      this.$refs.rangeDate.resetDate()
+      this.queryParam.beginDate = ''
+      this.queryParam.endDate = ''
+      this.queryParam.targetName = ''
+      this.queryParam.allocateTypeSn = undefined
+      this.queryParam.state = undefined
+      this.queryParam.allocateNo = ''
+      this.$refs.table.refresh(true)
+    }
+  },
+  beforeRouteEnter (to, from, next) {
+    next(vm => {})
+  }
+}
+</script>

+ 483 - 0
src/views/reportData/priceDifferenceDetailReport/list.vue

@@ -0,0 +1,483 @@
+<template>
+  <a-card size="small" :bordered="false" class="shortageStatisticsCList-wrap">
+    <!-- 搜索条件 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline" @keyup.enter.native="$refs.table.refresh(true)">
+        <a-row :gutter="15">
+          <a-col :md="6" :sm="24">
+            <a-form-item label="日期">
+              <rangeDate ref="rangeDate" :value="time" @change="dateChange" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="24">
+            <a-form-item label="单号">
+              <a-input placeholder="请输入单号" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="24">
+            <a-form-item label="客户名称">
+              <custList ref="custList" id="shortageStatisticsCList-buyerSn" @change="custChange"></custList>
+            </a-form-item>
+          </a-col>
+          <template v-if="advanced">
+            <a-col :md="6" :sm="24">
+              <a-form-item label="客户类型">
+                <custList ref="custList" id="shortageStatisticsCList-buyerSn" @change="custChange"></custList>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="品牌类别">
+                <a-select placeholder="选择品牌类别">
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="产品品牌">
+                <ProductBrand id="productInfoList-productBrandSn" v-model="queryParam.brandSn"></ProductBrand>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="二级品类">
+                <ProductType id="productInfoList-productType" v-model="productType" @change="changeProductType"></ProductType>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="所在区域">
+                <subarea id="shortageStatisticsCList-subarea" v-model="queryParam.subareaSn"></subarea>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="省级区域" prop="provinceSn">
+                <a-select id="supplierInfoEdit-provinceSn" @change="getCityList" v-model="queryParam.provinceSn" placeholder="请选择省">
+                  <a-select-option v-for="item in addrProvinceList" :value="item.areaSn" :key="item.areaSn + 'a'">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="类型">
+                <subarea id="shortageStatisticsCList-subarea" v-model="queryParam.subareaSn"></subarea>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="">
+                <a-checkbox>
+                  盘点区间日期
+                </a-checkbox>
+              </a-form-item>
+            </a-col>
+          </template>
+          <a-col :md="6" :sm="24">
+            <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="shortageStatisticsCList-refresh">查询</a-button>
+            <a-button style="margin-left: 8px" @click="resetSearchForm" :disabled="disabled" id="shortageStatisticsCList-reset">重置</a-button>
+            <a @click="advanced=!advanced" style="margin-left: 8px">
+              {{ advanced ? '收起' : '展开' }}
+              <a-icon :type="advanced ? 'up' : 'down'"/>
+            </a>
+          </a-col>
+        </a-row>
+      </a-form>
+    </div>
+    <!-- 列表 -->
+    <s-table
+      class="sTable"
+      ref="table"
+      size="small"
+      :rowKey="(record) => record.id"
+      :columns="columns"
+      :data="loadData"
+      :scroll="{ x: 2250, y: tableHeight }"
+      bordered>
+      <template slot="footer" slot-scope="currentPageData">
+        <a-row :gutter="15">
+          <a-col :md="4" :sm="24">
+            分公司金额:11175.40
+          </a-col>
+          <a-col :md="4" :sm="24">
+            加盟商金额:12182.40
+          </a-col>
+          <a-col :md="4" :sm="24">
+            特约加盟店金额:--
+          </a-col>
+          <a-col :md="4" :sm="24">
+            直接差价金额:1007.00
+          </a-col>
+          <a-col :md="4" :sm="24">
+            间接差价金额:0
+          </a-col>
+        </a-row>
+      </template>
+    </s-table>
+  </a-card>
+</template>
+
+<script>
+import moment from 'moment'
+import getDate from '@/libs/getDate.js'
+import { STable, VSelect } from '@/components'
+import rangeDate from '@/views/common/rangeDate.vue'
+import custList from '@/views/common/custList.vue'
+import subarea from '@/views/common/subarea.js'
+import { getArea } from '@/api/data'
+import ProductBrand from '@/views/common/productBrand.js'
+import ProductType from '@/views/common/productType.js'
+// import { oosBuyerList, oosBuyerDetailCount, oosBuyerDetailPageCount, oosDetailExport } from '@/api/oos'
+export default {
+  components: { STable, VSelect, custList, subarea, rangeDate, ProductBrand, ProductType },
+  data () {
+    return {
+      advanced: false, // 高级搜索 展开/关闭
+      tableHeight: 0,
+      queryParam: { //  查询条件
+        beginDate: '',
+        endDate: '',
+        buyerSn: undefined,
+        subareaSn: undefined, //  区域
+        provinceSn: undefined,
+        citySn: undefined,
+        districtSn: undefined
+      },
+      disabled: false, //  查询、重置按钮是否可操作
+      exportLoading: false, // 导出loading
+      addrProvinceList: [], //  省下拉
+      addrCityList: [], //  市下拉
+      addrDistrictList: [], //  区下拉
+      time: [], //  创建时间
+      columns: [
+        { title: '序号', dataIndex: 'no', width: 80, align: 'center' },
+        { title: '区域',
+          dataIndex: 'area',
+          width: 150,
+          align: 'center',
+          customRender: function (text) { return text || '--' }
+        },
+        { title: '订单号',
+          dataIndex: 'orderNo',
+          width: 150,
+          align: 'center',
+          customRender: function (text) { return text || '--' }
+        },
+        { title: '日期',
+          dataIndex: 'creatDate',
+          width: 200,
+          align: 'center',
+          customRender: function (text) { return text || '--' }
+        },
+        { title: '省份',
+          dataIndex: 'provinceName',
+          width: 100,
+          align: 'center',
+          customRender: function (text) { return text || '--' }
+        },
+        { title: '直接绑定客户名称',
+          dataIndex: 'zjCustName',
+          width: 200,
+          align: 'center',
+          customRender: function (text) { return text || '--' }
+        },
+        { title: '间接绑定客户名称',
+          dataIndex: 'djCustName',
+          width: 200,
+          align: 'center',
+          customRender: function (text) { return text || '--' }
+        },
+        { title: '客户名称',
+          dataIndex: 'custName',
+          width: 200,
+          align: 'center',
+          customRender: function (text) { return text || '--' }
+        },
+        { title: '客户类型',
+          dataIndex: 'custType',
+          width: 150,
+          align: 'center',
+          customRender: function (text) { return text || '--' }
+        },
+        { title: '品牌',
+          dataIndex: 'brand',
+          width: 100,
+          align: 'center',
+          customRender: function (text) { return text || '--' }
+        },
+        { title: '二级分类',
+          dataIndex: 'proCls',
+          width: 100,
+          align: 'center',
+          customRender: function (text) { return text || '--' }
+        },
+        { title: '数量',
+          dataIndex: 'nums',
+          width: 100,
+          align: 'center',
+          customRender: function (text) { return text || '--' }
+        },
+        { title: '分公司金额', width: 100, dataIndex: 'p1', align: 'center', customRender: function (text) { return text ? ('¥' + text) : '--' } },
+        { title: '加盟商金额', width: 100, dataIndex: 'p2', align: 'center', customRender: function (text) { return text ? ('¥' + text) : '--' } },
+        { title: '特约加盟商金额', width: 100, dataIndex: 'p3', align: 'center', customRender: function (text) { return text ? ('¥' + text) : '--' } },
+        { title: '直接差价', width: 100, dataIndex: 'p4', align: 'center', customRender: function (text) { return text ? ('¥' + text) : '--' } },
+        { title: '间接差价', width: 100, dataIndex: 'p5', align: 'center', customRender: function (text) { return text ? ('¥' + text) : '--' } },
+        { title: '类型', width: 100, dataIndex: 'type', align: 'center', customRender: function (text) { return text || '--' } }
+      ],
+      // 加载数据方法 必须为 Promise 对象
+      loadData: parameter => {
+        // this.disabled = true
+        // if (this.tableHeight == 0) {
+        //   this.tableHeight = window.innerHeight - 380
+        // }
+        // const paramsPage = Object.assign(this.queryParam, { pageNo: parameter.pageNo, pageSize: parameter.pageSize }) //  有分页
+        // const params = Object.assign(parameter, this.queryParam) //  无分页
+        // return oosBuyerList(params).then(res => {
+        //   const data = res.data
+        //   const no = (data.pageNo - 1) * data.pageSize
+        //   for (var i = 0; i < data.list.length; i++) {
+        //     data.list[i].no = no + i + 1
+        //   }
+        //   this.disabled = false
+        //   return data
+        // })
+        const _this = this
+        return new Promise(function (resolve, reject) {
+          const data = {
+            pageNo: 1,
+            pageSize: 10,
+            list: [
+              {
+                area: 'A区',
+                orderNo: 'XS2106210000118',
+                creatDate: '2021/6/21 19:16:18',
+                provinceName: '浙江省',
+                zjCustName: '剪冠汽配杭州金球店',
+                djCustName: '',
+                custName: '剪冠汽配丽水龙泉店',
+                custType: '市级加盟商',
+                brand: '箭牌',
+                proCls: '滤清器',
+                nums: '100',
+                p1: '700.00',
+                p2: '780.00',
+                p3: '',
+                p4: '80.00',
+                p5: '0.00',
+                type: '采购差价'
+              },
+              {
+                area: 'B区/04区',
+                orderNo: 'XS2106210000168',
+                creatDate: '2021/6/21 16:23:06',
+                provinceName: '广西区',
+                zjCustName: '剪冠汽配南宁兴宁店',
+                djCustName: '',
+                custName: '剪冠汽配梧州万秀店',
+                custType: '市级加盟商',
+                brand: '冠牌',
+                proCls: '滤清器',
+                nums: '44',
+                p1: '362.00',
+                p2: '406.00',
+                p3: '',
+                p4: '44.00',
+                p5: '0.00',
+                type: '采购差价'
+              },
+              {
+                area: 'B区/04区',
+                orderNo: 'XS2106210000168',
+                creatDate: '2021/6/21 16:23:06',
+                provinceName: '广西区',
+                zjCustName: '剪冠汽配南宁兴宁店',
+                djCustName: '',
+                custName: '剪冠汽配梧州万秀店',
+                custType: '市级加盟商',
+                brand: '汇箭',
+                proCls: '蓄电池',
+                nums: '19',
+                p1: '3942.40',
+                p2: '4126.40',
+                p3: '',
+                p4: '184.00',
+                p5: '0.00',
+                type: '采购差价'
+              },
+              {
+                area: 'B区/04区',
+                orderNo: 'XS2106210000168',
+                creatDate: '2021/6/21 16:23:06',
+                provinceName: '广西区',
+                zjCustName: '剪冠汽配南宁兴宁店',
+                djCustName: '',
+                custName: '剪冠汽配梧州万秀店',
+                custType: '市级加盟商',
+                brand: '箭牌',
+                proCls: '滤清器',
+                nums: '186',
+                p1: '1691.00',
+                p2: '1886.00',
+                p3: '',
+                p4: '195.00',
+                p5: '0.00',
+                type: '采购差价'
+              },
+              {
+                area: 'D区/06区',
+                orderNo: 'XS2106210000045',
+                creatDate: '2021/6/21 16:00:37',
+                provinceName: '内蒙古',
+                zjCustName: '剪冠汽配锡林浩特快驰店',
+                djCustName: '',
+                custName: '剪冠汽配锡林浩特快驰店1',
+                custType: '市级加盟商',
+                brand: '箭牌',
+                proCls: '滤清器',
+                nums: '525',
+                p1: '4480.00',
+                p2: '4984.00',
+                p3: '',
+                p4: '504.00',
+                p5: '0.00',
+                type: '采购差价'
+              }
+            ],
+            count: 1
+          }
+          for (var i = 0; i < data.list.length; i++) {
+            data.list[i].no = i + 1
+          }
+          _this.disabled = false
+          resolve(data)
+        })
+      },
+      productType: [],
+      productTotal: null,
+      currentTotal: null
+    }
+  },
+  methods: {
+    //  创建时间  change
+    dateChange (date) {
+      this.queryParam.beginDate = date[0]
+      this.queryParam.endDate = date[1]
+    },
+    custChange (obj) {
+      this.queryParam.buyerSn = obj.key
+    },
+    //  产品分类  change
+    changeProductType (val, opt) {
+      this.queryParam.productTypeSn1 = val[0] ? val[0] : ''
+      this.queryParam.productTypeSn2 = val[1] ? val[1] : ''
+      this.queryParam.productTypeSn3 = val[2] ? val[2] : ''
+    },
+    // 获取城市列表
+    getCityList (val) {
+      const index = this.addrProvinceList.findIndex(item => item.areaSn == val)
+      if (index >= 0) {
+        this.queryParam.provinceName = this.addrProvinceList[index].name
+      }
+      this.addrCityList = []
+      this.addrDistrictList = []
+      this.queryParam.citySn = undefined
+      this.queryParam.districtSn = undefined
+      this.queryParam.address = ''
+      this.getArea('city', val)
+    },
+    // 获取区县列表
+    getAreaList (val) {
+      const index = this.addrCityList.findIndex(item => item.areaSn == val)
+      if (index >= 0) {
+        this.queryParam.cityName = this.addrCityList[index].name
+      }
+      this.addrDistrictList = []
+      this.queryParam.districtSn = undefined
+      this.queryParam.address = ''
+      this.getArea('district', val)
+    },
+    // 区县变更
+    areaCharged (val) {
+      const index = this.addrDistrictList.findIndex(item => item.areaSn == val)
+      if (index >= 0) {
+        this.queryParam.districtName = this.addrDistrictList[index].name
+      }
+      this.queryParam.address = ''
+    },
+    //  省/市/区
+    getArea (leve, sn) {
+      let params
+      if (leve == 'province') {
+        params = { type: '2' }
+      } else {
+        params = { parentId: sn, type: leve == 'city' ? '3' : '4' }
+      }
+      getArea(params).then(res => {
+        if (res.status == 200) {
+          if (leve == 'province') {
+            this.addrProvinceList = res.data || []
+          } else if (leve == 'city') {
+            this.addrCityList = res.data || []
+          } else if (leve == 'district') {
+            this.addrDistrictList = res.data || []
+          }
+        } else {
+          if (leve == 'province') {
+            this.addrProvinceList = []
+          } else if (leve == 'city') {
+            this.addrCityList = []
+          } else if (leve == 'district') {
+            this.addrDistrictList = []
+          }
+        }
+      })
+    },
+    //  重置
+    resetSearchForm () {
+      this.$refs.rangeDate.resetDate(this.time)
+      this.queryParam.beginDate = getDate.getThreeMonthDays().starttime
+      this.queryParam.endDate = getDate.getCurrMonthDays().endtime
+      this.queryParam.buyerSn = undefined
+      this.queryParam.subareaSn = undefined
+      this.queryParam.productName = ''
+      this.queryParam.productCode = ''
+      this.queryParam.productTypeSn1 = ''
+      this.queryParam.productTypeSn2 = ''
+      this.queryParam.productTypeSn3 = ''
+      this.queryParam.salesBillNo = ''
+      this.productType = []
+      this.$refs.table.refresh(true)
+    },
+    // 详情
+    handleDetail (row) {
+      this.$router.push({ name: 'salesDetail', params: { sn: row.salesBillSn } })
+    },
+    //  导出
+    handleExport () {
+      const params = this.queryParam
+      if (this.time && this.time.length) {
+        params.beginDate = moment(this.time[0]).format('YYYY-MM-DD')
+        params.endDate = moment(this.time[1]).format('YYYY-MM-DD')
+      } else {
+        params.beginDate = ''
+        params.endDate = ''
+      }
+      this.exportLoading = true
+      oosDetailExport(params).then(res => {
+        this.exportLoading = false
+        this.download(res)
+      })
+    },
+    download (data) {
+      if (!data) { return }
+      const url = window.URL.createObjectURL(new Blob([data]))
+      const link = document.createElement('a')
+      link.style.display = 'none'
+      link.href = url
+      const a = moment().format('YYYYMMDDHHmmss')
+      const fname = '缺货统计(按客户)' + a
+      link.setAttribute('download', fname + '.xlsx')
+      document.body.appendChild(link)
+      link.click()
+    }
+  },
+  beforeRouteEnter (to, from, next) {
+    next(vm => {
+      vm.getArea('province')
+    })
+  }
+}
+</script>

+ 153 - 0
src/views/reportData/provinceTypeSalesDetails/list.vue

@@ -0,0 +1,153 @@
+<template>
+  <a-card size="small" :bordered="false" class="provinceTypeSalesDetailsList-wrap">
+    <!-- 搜索条件 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline" @keyup.enter.native="$refs.table.refresh(true)">
+        <a-row :gutter="15">
+          <a-col :md="6" :sm="24">
+            <a-form-item label="创建时间">
+              <rangeDate ref="rangeDate" @change="dateChange" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="24">
+            <a-form-item label="区域">
+              <a-select id="provinceTypeSalesDetailsList-allocateTypeSn" v-model="queryParam.allocateTypeSn" placeholder="请选择区域" allowClear >
+                <a-select-option v-for="item in allocateTypeList" :key="item.allocateTypeSn" :value="item.allocateTypeSn">{{ item.name }}</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="24">
+            <a-form-item label="省份">
+              <a-select id="provinceTypeSalesDetailsList-state" v-model="queryParam.state" placeholder="请选择省份" allowClear >
+                <a-select-option v-for="item in allocateTypeList" :key="item.allocateTypeSn" :value="item.allocateTypeSn">{{ item.name }}</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="24">
+            <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="provinceTypeSalesDetailsList-refresh">查询</a-button>
+            <a-button style="margin-left: 5px" @click="resetSearchForm" :disabled="disabled" id="provinceTypeSalesDetailsList-reset">重置</a-button>
+          </a-col>
+        </a-row>
+      </a-form>
+    </div>
+    <!-- 列表 -->
+    <s-table
+      class="sTable"
+      ref="table"
+      size="small"
+      :rowKey="(record) => record.id"
+      :columns="columns"
+      :data="loadData"
+      :scroll="{ x: 3650 }"
+      bordered>
+    </s-table>
+  </a-card>
+</template>
+
+<script>
+import { STable, VSelect } from '@/components'
+import reportData from '@/libs/reportData'
+import rangeDate from '@/views/common/rangeDate.vue'
+// import { allocateBillList, allocateBillDel, allocateBillAudit, allocateBillExport } from '@/api/allocateBill'
+// import { allocateTypeAllList } from '@/api/allocateType'
+export default {
+  components: { STable, VSelect, rangeDate },
+  data () {
+    return {
+      advanced: false, // 高级搜索 展开/关闭
+      tableHeight: 0,
+      queryParam: { //  查询条件
+        beginDate: '',
+        endDate: '',
+        targetName: '', //  调往对象
+        allocateTypeSn: undefined, //  调拨类型
+        state: undefined, //  业务状态
+        allocateNo: '' //  调拨单号
+      },
+      disabled: false, //  查询、重置按钮是否可操作
+      exportLoading: false,
+      columns: [
+        { title: '序号', dataIndex: 'no', width: 80, align: 'center', fixed: 'left' },
+        { title: '区域', dataIndex: 'area', width: 200, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '省份', dataIndex: 'province', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '箭牌滤清器', dataIndex: 'targetName', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '冠牌滤清器', dataIndex: 'dealerLevelDictValue', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '滤清器合计', dataIndex: 'totalQty', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '箭牌雨刮片', dataIndex: 'totalCost', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '冠牌雨刮片', dataIndex: 'totalPrice', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '雨刮片合计', dataIndex: 'auditTime', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '箭牌刹车片', dataIndex: 'allocateTypeName', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '箭牌感应线', dataIndex: 'stateDictValue', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '冠牌刹车片', dataIndex: 'printStateDictValue', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: 'TBU刹车片', dataIndex: 'printCount', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: 'TBU刹车油', dataIndex: 'printCounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: 'TBU感应线', dataIndex: 'printCsounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '刹车片合计', dataIndex: 'printdCounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '德路斯润滑油', dataIndex: 'prfintCounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '德路斯刹车油', dataIndex: 'printCogunts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '德路斯变速箱油', dataIndex: 'phrintCounts', width: 140, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '德路斯合计', dataIndex: 'printCsountss', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '稳升点火线圈', dataIndex: 'prinftCounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '稳升灯泡', dataIndex: 'prisntCogunts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '稳升合计', dataIndex: 'prinxtCounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '汇箭', dataIndex: 'printCocunts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '布瑞斯', dataIndex: 'printCvounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '箭牌喇叭', dataIndex: 'printCgounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '品牌合计', dataIndex: 'printCouhnts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: 'NGK', dataIndex: 'printCoujnts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '品牌+NGK总合计', dataIndex: 'printCournts', width: 150, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } }
+      ],
+      // 加载数据方法 必须为 Promise 对象
+      loadData: parameter => {
+        this.disabled = true
+        // return allocateBillList(Object.assign(parameter, this.queryParam)).then(res => {
+        //   const data = res.data
+        //   const no = (data.pageNo - 1) * data.pageSize
+        //   for (var i = 0; i < data.list.length; i++) {
+        //     data.list[i].no = no + i + 1
+        //   }
+        //   this.disabled = false
+        //   return data
+        // })
+        const _this = this
+        return new Promise(function (resolve, reject) {
+          const data = {
+            pageNo: 1,
+            pageSize: 10,
+            list: reportData.provinceTypeSalesList,
+            count: 10
+          }
+          for (var i = 0; i < data.list.length; i++) {
+            data.list[i].no = i + 1
+          }
+          _this.disabled = false
+          resolve(data)
+        })
+      },
+      allocateTypeList: [], //  调拨类型
+      openModal: false //  新增编辑  弹框
+    }
+  },
+  methods: {
+    //  创建时间  change
+    dateChange (date) {
+      this.queryParam.beginDate = date[0]
+      this.queryParam.endDate = date[1]
+    },
+    //  重置
+    resetSearchForm () {
+      this.$refs.rangeDate.resetDate()
+      this.queryParam.beginDate = ''
+      this.queryParam.endDate = ''
+      this.queryParam.targetName = ''
+      this.queryParam.allocateTypeSn = undefined
+      this.queryParam.state = undefined
+      this.queryParam.allocateNo = ''
+      this.$refs.table.refresh(true)
+    }
+  },
+  beforeRouteEnter (to, from, next) {
+    next(vm => {})
+  }
+}
+</script>

+ 156 - 0
src/views/reportData/regionalPromotionCostStatistics/list.vue

@@ -0,0 +1,156 @@
+<template>
+  <a-card size="small" :bordered="false" class="regionalPromotionCostStatisticsList-wrap">
+    <!-- 搜索条件 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline" @keyup.enter.native="$refs.table.refresh(true)">
+        <a-row :gutter="15">
+          <a-col :md="6" :sm="24">
+            <a-form-item label="创建时间">
+              <rangeDate ref="rangeDate" @change="dateChange" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="24">
+            <a-form-item label="区域">
+              <a-select id="regionalPromotionCostStatisticsList-allocateTypeSn" v-model="queryParam.allocateTypeSn" placeholder="请选择区域" allowClear >
+                <a-select-option v-for="item in allocateTypeList" :key="item.allocateTypeSn" :value="item.allocateTypeSn">{{ item.name }}</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="24">
+            <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="regionalPromotionCostStatisticsList-refresh">查询</a-button>
+            <a-button style="margin-left: 5px" @click="resetSearchForm" :disabled="disabled" id="regionalPromotionCostStatisticsList-reset">重置</a-button>
+          </a-col>
+        </a-row>
+      </a-form>
+    </div>
+    <!-- 列表 -->
+    <s-table
+      class="sTable"
+      ref="table"
+      size="small"
+      :rowKey="(record) => record.id"
+      :columns="columns"
+      :showPagination="false"
+      :data="loadData"
+      :scroll="{ x: 2500 }"
+      bordered>
+    </s-table>
+  </a-card>
+</template>
+
+<script>
+import { STable, VSelect } from '@/components'
+import reportData from '@/libs/reportData'
+import rangeDate from '@/views/common/rangeDate.vue'
+// import { allocateBillList, allocateBillDel, allocateBillAudit, allocateBillExport } from '@/api/allocateBill'
+// import { allocateTypeAllList } from '@/api/allocateType'
+export default {
+  components: { STable, VSelect, rangeDate },
+  data () {
+    return {
+      advanced: false, // 高级搜索 展开/关闭
+      tableHeight: 0,
+      queryParam: { //  查询条件
+        beginDate: '',
+        endDate: '',
+        targetName: '', //  调往对象
+        allocateTypeSn: undefined, //  调拨类型
+        state: undefined, //  业务状态
+        allocateNo: '' //  调拨单号
+      },
+      disabled: false, //  查询、重置按钮是否可操作
+      exportLoading: false,
+      columns: [
+        { title: '序号', dataIndex: 'no', width: 80, align: 'center', fixed: 'left' },
+        { title: '省份', dataIndex: 'province', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '所属调拨类列', dataIndex: 'targetName', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '1月', dataIndex: 'dealerLevelDictValue', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '2月', dataIndex: 'totalQty', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '3月', dataIndex: 'totalCost', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '4月', dataIndex: 'totalPrice', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '5月', dataIndex: 'auditTime', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '6月', dataIndex: 'allocateTypeName', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '7月', dataIndex: 'stateDictValue', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '8月', dataIndex: 'printStateDictValue', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '9月', dataIndex: 'printCount', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '10月', dataIndex: 'printCounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '11月', dataIndex: 'printCsounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '12月', dataIndex: 'printdCounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '1-12月费用合计', dataIndex: 'prfintCounts', width: 140, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        {
+          title: '实际销售额合计',
+          dataIndex: 'printCogunts',
+          width: 140,
+          align: 'center',
+          customRender: (value, row, index) => {
+            const obj = {
+              children: value,
+              attrs: {}
+            }
+            if (index === 0) { obj.attrs.rowSpan = 6 }
+            if (index === 1) { obj.attrs.rowSpan = 0 }
+            if (index === 2) { obj.attrs.rowSpan = 0 }
+            if (index === 3) { obj.attrs.rowSpan = 0 }
+            if (index === 4) { obj.attrs.rowSpan = 0 }
+            if (index === 5) { obj.attrs.rowSpan = 0 }
+            return obj
+          }
+        },
+        { title: '费用占比(%)', dataIndex: 'phrintCounts', width: 140, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '正常费用', dataIndex: 'printCsountss', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '特殊申请费用', dataIndex: 'prinftCounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } }
+      ],
+      // 加载数据方法 必须为 Promise 对象
+      loadData: parameter => {
+        this.disabled = true
+        // return allocateBillList(Object.assign(parameter, this.queryParam)).then(res => {
+        //   const data = res.data
+        //   const no = (data.pageNo - 1) * data.pageSize
+        //   for (var i = 0; i < data.list.length; i++) {
+        //     data.list[i].no = no + i + 1
+        //   }
+        //   this.disabled = false
+        //   return data
+        // })
+        const _this = this
+        return new Promise(function (resolve, reject) {
+          const data = {
+            pageNo: 1,
+            pageSize: 10,
+            list: reportData.regionalPromotionCostStatisticsList,
+            count: 10
+          }
+          for (var i = 0; i < data.list.length; i++) {
+            data.list[i].no = i + 1
+          }
+          _this.disabled = false
+          resolve(data)
+        })
+      },
+      allocateTypeList: [], //  调拨类型
+      openModal: false //  新增编辑  弹框
+    }
+  },
+  methods: {
+    //  创建时间  change
+    dateChange (date) {
+      this.queryParam.beginDate = date[0]
+      this.queryParam.endDate = date[1]
+    },
+    //  重置
+    resetSearchForm () {
+      this.$refs.rangeDate.resetDate()
+      this.queryParam.beginDate = ''
+      this.queryParam.endDate = ''
+      this.queryParam.targetName = ''
+      this.queryParam.allocateTypeSn = undefined
+      this.queryParam.state = undefined
+      this.queryParam.allocateNo = ''
+      this.$refs.table.refresh(true)
+    }
+  },
+  beforeRouteEnter (to, from, next) {
+    next(vm => {})
+  }
+}
+</script>

+ 590 - 0
src/views/reportData/returnSlipReport/list.vue

@@ -0,0 +1,590 @@
+<template>
+  <a-card size="small" :bordered="false" class="shortageStatisticsCList-wrap">
+    <!-- 搜索条件 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline" @keyup.enter.native="$refs.table.refresh(true)">
+        <a-row :gutter="15">
+          <a-col :md="6" :sm="24">
+            <a-form-item label="销售日期">
+              <rangeDate ref="rangeDate" :value="time" @change="dateChange" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="24">
+            <a-form-item label="客户名称">
+              <custList ref="custList" id="shortageStatisticsCList-buyerSn" @change="custChange"></custList>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="24">
+            <a-form-item label="客户类型">
+              <custList ref="custList" id="shortageStatisticsCList-buyerSn" @change="custChange"></custList>
+            </a-form-item>
+          </a-col>
+          <template v-if="advanced">
+            <a-col :md="6" :sm="24">
+              <a-form-item label="退货单号">
+                <a-input id="salesSlipReportList-allocateTypeSn" v-model.trim="queryParam.allocateTypeSn" allowClear placeholder="请输入退货单号"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="所在区域">
+                <subarea id="shortageStatisticsCList-subarea" v-model="queryParam.subareaSn"></subarea>
+              </a-form-item>
+            </a-col>
+            <a-col :md="12" :sm="24">
+              <a-row>
+                <a-form-item label="地区">
+                  <a-col span="7">
+                    <a-form-item prop="dealerProvinceSn" style="margin: 0;">
+                      <a-select v-model="queryParam.dealerProvinceSn" @change="getCityList" placeholder="请选择省">
+                        <a-select-option v-for="item in addrProvinceList" :value="item.id" :key="item.id + 'a'">{{ item.name }}</a-select-option>
+                      </a-select>
+                    </a-form-item>
+                  </a-col>
+                  <a-col span="7" offset="1">
+                    <a-form-item prop="dealerCitySn" style="margin: 0;">
+                      <a-select v-model="queryParam.dealerCitySn" @change="getAreaList" placeholder="请选择市">
+                        <a-select-option v-for="item in addrCityList" :value="item.id" :key="item.id + 'b'">{{ item.name }}</a-select-option>
+                      </a-select>
+                    </a-form-item>
+                  </a-col>
+                  <a-col span="7" offset="1">
+                    <a-form-item prop="dealerCountySn" style="margin: 0;">
+                      <a-select v-model="queryParam.dealerCountySn" placeholder="请选择区/县">
+                        <a-select-option v-for="item in addrDistrictList" :value="item.id" :key="item.id + 'c'">{{ item.name }}</a-select-option>
+                      </a-select>
+                    </a-form-item>
+                  </a-col>
+                </a-form-item>
+              </a-row>
+            </a-col>
+          </template>
+          <a-col :md="6" :sm="24">
+            <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="shortageStatisticsCList-refresh">查询</a-button>
+            <a-button style="margin-left: 8px" @click="resetSearchForm" :disabled="disabled" id="shortageStatisticsCList-reset">重置</a-button>
+            <a @click="advanced=!advanced" style="margin-left: 8px">
+              {{ advanced ? '收起' : '展开' }}
+              <a-icon :type="advanced ? 'up' : 'down'"/>
+            </a>
+          </a-col>
+        </a-row>
+      </a-form>
+    </div>
+    <!-- 列表 -->
+    <s-table
+      class="sTable"
+      ref="table"
+      size="small"
+      :rowKey="(record) => record.id"
+      :columns="columns"
+      :data="loadData"
+      :scroll="{ x: 2880, y: tableHeight }"
+      bordered>
+    </s-table>
+  </a-card>
+</template>
+
+<script>
+import moment from 'moment'
+import getDate from '@/libs/getDate.js'
+import { STable, VSelect } from '@/components'
+import rangeDate from '@/views/common/rangeDate.vue'
+import custList from '@/views/common/custList.vue'
+import subarea from '@/views/common/subarea.js'
+import { getArea } from '@/api/data'
+import { oosBuyerList, oosBuyerDetailCount, oosBuyerDetailPageCount, oosDetailExport } from '@/api/oos'
+export default {
+  components: { STable, VSelect, custList, subarea, rangeDate },
+  data () {
+    return {
+      advanced: false, // 高级搜索 展开/关闭
+      tableHeight: 0,
+      queryParam: { //  查询条件
+        beginDate: '',
+        endDate: '',
+        buyerSn: undefined,
+        subareaSn: undefined, //  区域
+        provinceSn: undefined,
+        citySn: undefined,
+        districtSn: undefined
+      },
+      disabled: false, //  查询、重置按钮是否可操作
+      exportLoading: false, // 导出loading
+      addrProvinceList: [], //  省下拉
+      addrCityList: [], //  市下拉
+      addrDistrictList: [], //  区下拉
+      time: [], //  创建时间
+      columns: [
+        { title: '序号', dataIndex: 'no', width: 80, align: 'center' },
+        { title: '区域',
+          dataIndex: 'area',
+          width: 150,
+          align: 'center',
+          customRender: (text, row, index) => {
+            if (text == '合计') {
+              return {
+                children: <span>{ text }</span>,
+                attrs: {
+                  colSpan: 4
+                }
+              }
+            }
+            return text
+          }
+        },
+        { title: '退货单号',
+		  dataIndex: 'allocateTypeSn',
+		  width: 150,
+		  align: 'center',
+		  customRender: (text, row, index) => {
+		    if (text == '合计') {
+		      return {
+		        children: <span>{ text }</span>,
+		        attrs: {
+		          colSpan: 4
+		        }
+		      }
+		    }
+		    return text
+		  }
+        },
+        { title: '省份',
+          dataIndex: 'provinceName',
+          width: 150,
+          align: 'center',
+          customRender: function (text, row, index) {
+            if (text == '合计') {
+              return {
+                children: <span>{ text }</span>,
+                attrs: {
+                  colSpan: 0
+                }
+              }
+            }
+            return text || '--'
+          } },
+        { title: '客户名称',
+          dataIndex: 'custName',
+          width: 200,
+          align: 'center',
+          customRender: function (text, row, index) {
+            if (text == '合计') {
+              return {
+                children: <span>{ text }</span>,
+                attrs: {
+                  colSpan: 0
+                }
+              }
+            }
+            return text || '--'
+          } },
+        { title: '客户类型',
+          dataIndex: 'custType',
+          width: 200,
+          align: 'center',
+          customRender: function (text, row, index) {
+            if (text == '合计') {
+              return {
+                children: <span>{ text }</span>,
+                attrs: {
+                  colSpan: 0
+                }
+              }
+            }
+            return text || '--'
+          } },
+        { title: '品牌',
+          align: 'center',
+          children: [
+            {
+              title: '箭牌',
+              align: 'center',
+              children: [
+                {
+                  title: '滤清器',
+                  dataIndex: 'pp1',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '雨刮片',
+                  dataIndex: 'pp2',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '喇叭',
+                  dataIndex: 'pp3',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '刹车片',
+                  dataIndex: 'pp4',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '感应线',
+                  dataIndex: 'pp5',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                }
+              ]
+            },
+            {
+              title: '冠牌',
+              align: 'center',
+              children: [
+                {
+                  title: '滤清器',
+                  dataIndex: 'pp6',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '雨刮片',
+                  dataIndex: 'pp7',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '刹车片',
+                  dataIndex: 'pp8',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                }
+              ]
+            },
+            {
+              title: '汇箭',
+              dataIndex: 'pp9',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '德路斯',
+              dataIndex: 'pp10',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '稳升',
+              dataIndex: 'pp11',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: 'TBU',
+              dataIndex: 'pp12',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            }
+          ] },
+        { title: '代理品牌',
+          align: 'center',
+          children: [
+            {
+              title: 'NGK',
+              dataIndex: 'pp13',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '飞利浦',
+              dataIndex: 'pp14',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '车仆',
+              dataIndex: 'pp15',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '瓦尔塔',
+              dataIndex: 'pp16',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '雷贝斯托',
+              dataIndex: 'pp17',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '德尔福',
+              dataIndex: 'pp18',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '巴诺德',
+              dataIndex: 'pp19',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            }
+          ] },
+        { title: '开单退货合计金额', width: 200, dataIndex: 'totalAmount', align: 'center', customRender: function (text) { return text ? ('¥' + text) : '--' } }
+      ],
+      // 加载数据方法 必须为 Promise 对象
+      loadData: parameter => {
+        // this.disabled = true
+        // if (this.tableHeight == 0) {
+        //   this.tableHeight = window.innerHeight - 380
+        // }
+        // const paramsPage = Object.assign(this.queryParam, { pageNo: parameter.pageNo, pageSize: parameter.pageSize }) //  有分页
+        // const params = Object.assign(parameter, this.queryParam) //  无分页
+        // return oosBuyerList(params).then(res => {
+        //   const data = res.data
+        //   const no = (data.pageNo - 1) * data.pageSize
+        //   for (var i = 0; i < data.list.length; i++) {
+        //     data.list[i].no = no + i + 1
+        //   }
+        //   this.disabled = false
+        //   return data
+        // })
+        const _this = this
+        return new Promise(function (resolve, reject) {
+          const data = {
+            pageNo: 1,
+            pageSize: 10,
+            list: [{
+              area: 'A区',
+			  allocateTypeSn: 'TH201622021245541',
+              provinceName: '广东省',
+              custName: '剪冠汽配佛山白坭店',
+              custType: '省级服务中心',
+              pp1: '0',
+              pp2: '0',
+              pp3: '0',
+              pp4: '0',
+              pp5: '0',
+              pp6: '0',
+              pp7: '0',
+              pp8: '0',
+              pp9: '0',
+              pp10: '0',
+              pp11: '0',
+              pp12: '0',
+              pp13: '37.00',
+              pp14: '0',
+              pp15: '0',
+              pp16: '0',
+              pp17: '0',
+              pp18: '0',
+              pp19: '0',
+              totalAmount: '37.00'
+            },
+            {
+              area: 'A区',
+			  allocateTypeSn: 'TH201722021245582',
+              provinceName: '广东省',
+              custName: '支持省级',
+              custType: '省级服务中心',
+              pp1: '0',
+              pp2: '36.50',
+              pp3: '0',
+              pp4: '0',
+              pp5: '0',
+              pp6: '0',
+              pp7: '0',
+              pp8: '0',
+              pp9: '0',
+              pp10: '0',
+              pp11: '0',
+              pp12: '0',
+              pp13: '0',
+              pp14: '0',
+              pp15: '0',
+              pp16: '0',
+              pp17: '0',
+              pp18: '0',
+              pp19: '0',
+              totalAmount: '36.50'
+            },
+            {
+              area: '合计',
+              provinceName: '合计',
+              custName: '合计',
+              custType: '合计',
+              pp1: '0',
+              pp2: '36.50',
+              pp3: '0',
+              pp4: '0',
+              pp5: '0',
+              pp6: '0',
+              pp7: '0',
+              pp8: '0',
+              pp9: '0',
+              pp10: '0',
+              pp11: '0',
+              pp12: '0',
+              pp13: '37.00',
+              pp14: '0',
+              pp15: '0',
+              pp16: '0',
+              pp17: '0',
+              pp18: '0',
+              pp19: '0',
+              totalAmount: '73.50'
+            }],
+            count: 1
+          }
+          for (var i = 0; i < data.list.length; i++) {
+            data.list[i].no = i + 1
+          }
+          _this.disabled = false
+          resolve(data)
+        })
+      },
+      productType: [],
+      productTotal: null,
+      currentTotal: null
+    }
+  },
+  methods: {
+    //  创建时间  change
+    dateChange (date) {
+      this.queryParam.beginDate = date[0]
+      this.queryParam.endDate = date[1]
+    },
+    custChange (obj) {
+      this.queryParam.buyerSn = obj.key
+    },
+    // 获取城市列表
+    getCityList (val) {
+      const index = this.addrProvinceList.findIndex(item => item.areaSn == val)
+      if (index >= 0) {
+        this.queryParam.provinceName = this.addrProvinceList[index].name
+      }
+      this.addrCityList = []
+      this.addrDistrictList = []
+      this.queryParam.citySn = undefined
+      this.queryParam.districtSn = undefined
+      this.queryParam.address = ''
+      this.getArea('city', val)
+    },
+    // 获取区县列表
+    getAreaList (val) {
+      const index = this.addrCityList.findIndex(item => item.areaSn == val)
+      if (index >= 0) {
+        this.queryParam.cityName = this.addrCityList[index].name
+      }
+      this.addrDistrictList = []
+      this.queryParam.districtSn = undefined
+      this.queryParam.address = ''
+      this.getArea('district', val)
+    },
+    // 区县变更
+    areaCharged (val) {
+      const index = this.addrDistrictList.findIndex(item => item.areaSn == val)
+      if (index >= 0) {
+        this.queryParam.districtName = this.addrDistrictList[index].name
+      }
+      this.queryParam.address = ''
+    },
+    //  省/市/区
+    getArea (leve, sn) {
+      let params
+      if (leve == 'province') {
+        params = { type: '2' }
+      } else {
+        params = { parentId: sn, type: leve == 'city' ? '3' : '4' }
+      }
+      getArea(params).then(res => {
+        if (res.status == 200) {
+          if (leve == 'province') {
+            this.addrProvinceList = res.data || []
+          } else if (leve == 'city') {
+            this.addrCityList = res.data || []
+          } else if (leve == 'district') {
+            this.addrDistrictList = res.data || []
+          }
+        } else {
+          if (leve == 'province') {
+            this.addrProvinceList = []
+          } else if (leve == 'city') {
+            this.addrCityList = []
+          } else if (leve == 'district') {
+            this.addrDistrictList = []
+          }
+        }
+      })
+    },
+    //  重置
+    resetSearchForm () {
+      this.$refs.rangeDate.resetDate(this.time)
+      this.queryParam.beginDate = getDate.getThreeMonthDays().starttime
+      this.queryParam.endDate = getDate.getCurrMonthDays().endtime
+      this.queryParam.buyerSn = undefined
+      this.queryParam.subareaSn = undefined
+      this.queryParam.productName = ''
+      this.queryParam.productCode = ''
+      this.queryParam.productTypeSn1 = ''
+      this.queryParam.productTypeSn2 = ''
+      this.queryParam.productTypeSn3 = ''
+      this.queryParam.salesBillNo = ''
+      this.productType = []
+      this.$refs.table.refresh(true)
+    },
+    // 详情
+    handleDetail (row) {
+      this.$router.push({ name: 'salesDetail', params: { sn: row.salesBillSn } })
+    },
+    //  导出
+    handleExport () {
+      const params = this.queryParam
+      if (this.time && this.time.length) {
+        params.beginDate = moment(this.time[0]).format('YYYY-MM-DD')
+        params.endDate = moment(this.time[1]).format('YYYY-MM-DD')
+      } else {
+        params.beginDate = ''
+        params.endDate = ''
+      }
+      this.exportLoading = true
+      oosDetailExport(params).then(res => {
+        this.exportLoading = false
+        this.download(res)
+      })
+    },
+    download (data) {
+      if (!data) { return }
+      const url = window.URL.createObjectURL(new Blob([data]))
+      const link = document.createElement('a')
+      link.style.display = 'none'
+      link.href = url
+      const a = moment().format('YYYYMMDDHHmmss')
+      const fname = '缺货统计(按客户)' + a
+      link.setAttribute('download', fname + '.xlsx')
+      document.body.appendChild(link)
+      link.click()
+    }
+  },
+  beforeRouteEnter (to, from, next) {
+    next(vm => {
+      vm.getArea('province')
+    })
+  }
+}
+</script>

+ 423 - 0
src/views/reportData/salesAmountReport/list.vue

@@ -0,0 +1,423 @@
+<template>
+  <a-card size="small" :bordered="false" class="salesAmountReportList-wrap">
+    <!-- 搜索条件 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline" @keyup.enter.native="$refs.table.refresh(true)">
+        <a-row :gutter="15">
+          <a-col :md="6" :sm="24">
+            <a-form-item label="销售日期">
+              <rangeDate ref="rangeDate" @change="dateChange" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="24">
+            <a-form-item label="客户名称">
+              <a-input id="salesAmountReportList-allocateTypeSn" v-model.trim="queryParam.allocateTypeSn" allowClear placeholder="请输入客户名称"/>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="24">
+            <a-form-item label="客户类型">
+              <a-select id="salesAmountReportList-allocateTypeSn" v-model="queryParam.allocateTypeSn" placeholder="请选择客户类型" allowClear >
+                <a-select-option v-for="item in allocateTypeList" :key="item.allocateTypeSn" :value="item.allocateTypeSn">{{ item.name }}</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <template v-if="advanced">
+            <a-col :md="6" :sm="24">
+              <a-form-item label="所在区域">
+                <subarea id="salesAmountReportList-allocateTypeSn" v-model="queryParam.subareaSn"></subarea>
+              </a-form-item>
+            </a-col>
+            <a-col :md="12" :sm="24">
+              <a-row>
+                <a-form-item label="地区">
+                  <a-col span="7">
+                    <a-form-item prop="dealerProvinceSn" style="margin: 0;">
+                      <a-select v-model="queryParam.dealerProvinceSn" @change="getCityList" placeholder="请选择省">
+                        <a-select-option v-for="item in addrProvinceList" :value="item.id" :key="item.id + 'a'">{{ item.name }}</a-select-option>
+                      </a-select>
+                    </a-form-item>
+                  </a-col>
+                  <a-col span="7" offset="1">
+                    <a-form-item prop="dealerCitySn" style="margin: 0;">
+                      <a-select v-model="queryParam.dealerCitySn" @change="getAreaList" placeholder="请选择市">
+                        <a-select-option v-for="item in addrCityList" :value="item.id" :key="item.id + 'b'">{{ item.name }}</a-select-option>
+                      </a-select>
+                    </a-form-item>
+                  </a-col>
+                  <a-col span="7" offset="1">
+                    <a-form-item prop="dealerCountySn" style="margin: 0;">
+                      <a-select v-model="queryParam.dealerCountySn" placeholder="请选择区/县">
+                        <a-select-option v-for="item in addrDistrictList" :value="item.id" :key="item.id + 'c'">{{ item.name }}</a-select-option>
+                      </a-select>
+                    </a-form-item>
+                  </a-col>
+                </a-form-item>
+              </a-row>
+            </a-col>
+          </template>
+          <a-col :md="6" :sm="24">
+            <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="salesAmountReportList-refresh">查询</a-button>
+            <a-button style="margin-left: 5px" @click="resetSearchForm" :disabled="disabled" id="salesAmountReportList-reset">重置</a-button>
+            <a @click="advanced=!advanced" style="margin-left: 8px">
+              {{ advanced ? '收起' : '展开' }}
+              <a-icon :type="advanced ? 'up' : 'down'"/>
+            </a>
+          </a-col>
+        </a-row>
+      </a-form>
+    </div>
+    <!-- 列表 -->
+    <s-table
+      class="sTable"
+      ref="table"
+      size="small"
+      :rowKey="(record) => record.id"
+      :columns="columns"
+      :data="loadData"
+      :scroll="{ x: 3120 }"
+      bordered>
+    </s-table>
+  </a-card>
+</template>
+
+<script>
+import { STable, VSelect } from '@/components'
+import reportData from '@/libs/reportData'
+import rangeDate from '@/views/common/rangeDate.vue'
+import subarea from '@/views/common/subarea.js'
+import { getArea } from '@/api/data'
+// import { allocateBillList, allocateBillDel, allocateBillAudit, allocateBillExport } from '@/api/allocateBill'
+// import { allocateTypeAllList } from '@/api/allocateType'
+export default {
+  components: { STable, VSelect, rangeDate, subarea },
+  data () {
+    return {
+      advanced: false, // 高级搜索 展开/关闭
+      tableHeight: 0,
+      queryParam: { //  查询条件
+        beginDate: '',
+        endDate: '',
+        targetName: '', //  调往对象
+        allocateTypeSn: undefined, //  调拨类型
+        state: undefined, //  业务状态
+        allocateNo: '' //  调拨单号
+      },
+      disabled: false, //  查询、重置按钮是否可操作
+      exportLoading: false,
+      columns: [
+        { title: '序号', dataIndex: 'no', width: 80, align: 'center', fixed: 'left' },
+        { title: '区域', dataIndex: 'area', width: 220, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '省份', dataIndex: 'provinceName', width: 200, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '客户名称', dataIndex: 'custName', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '客户类型', dataIndex: 'custType', width: 200, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '品牌',
+          align: 'center',
+          children: [
+            {
+              title: '箭牌',
+              align: 'center',
+              children: [
+                {
+                  title: '滤清器',
+                  dataIndex: 'pp1',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '雨刮片',
+                  dataIndex: 'pp2',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '喇叭',
+                  dataIndex: 'pp3',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '刹车片',
+                  dataIndex: 'pp4',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '感应线',
+                  dataIndex: 'pp5',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                }
+              ]
+            },
+            {
+              title: '冠牌',
+              align: 'center',
+              children: [
+                {
+                  title: '滤清器',
+                  dataIndex: 'pp6',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '雨刮片',
+                  dataIndex: 'pp7',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '刹车片',
+                  dataIndex: 'pp8',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                }
+              ]
+            },
+            {
+              title: '汇箭',
+              dataIndex: 'pp9',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '德路斯',
+              dataIndex: 'pp10',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '稳升',
+              dataIndex: 'pp11',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: 'TBU',
+              dataIndex: 'pp12',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            }
+          ] },
+        { title: '代理品牌',
+          align: 'center',
+          children: [
+            {
+              title: 'NGK',
+              dataIndex: 'pp13',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '飞利浦',
+              dataIndex: 'pp14',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '车仆',
+              dataIndex: 'pp15',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '瓦尔塔',
+              dataIndex: 'pp16',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '雷贝斯托',
+              dataIndex: 'pp17',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '德尔福',
+              dataIndex: 'pp18',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '巴诺德',
+              dataIndex: 'pp19',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            }
+          ] },
+        { title: '实际销售合计金额', width: 200, dataIndex: 'totalAmount', align: 'center', customRender: function (text) { return text ? ('¥' + text) : '--' } }
+      ],
+      // 加载数据方法 必须为 Promise 对象
+      loadData: parameter => {
+        // this.disabled = true
+        // if (this.tableHeight == 0) {
+        //   this.tableHeight = window.innerHeight - 380
+        // }
+        // const paramsPage = Object.assign(this.queryParam, { pageNo: parameter.pageNo, pageSize: parameter.pageSize }) //  有分页
+        // const params = Object.assign(parameter, this.queryParam) //  无分页
+        // return oosBuyerList(params).then(res => {
+        //   const data = res.data
+        //   const no = (data.pageNo - 1) * data.pageSize
+        //   for (var i = 0; i < data.list.length; i++) {
+        //     data.list[i].no = no + i + 1
+        //   }
+        //   this.disabled = false
+        //   return data
+        // })
+        const _this = this
+        return new Promise(function (resolve, reject) {
+          const data = {
+            pageNo: 1,
+            pageSize: 10,
+            list: [{
+              area: 'A区',
+              provinceName: '广东省',
+              custName: '箭冠汽配佛山白坭店',
+              custType: '市级经销商',
+              pp1: '0.00',
+              pp2: '0.00',
+              pp3: '0.00',
+              pp4: '0.00',
+              pp5: '0.00',
+              pp6: '0.00',
+              pp7: '0.00',
+              pp8: '0.00',
+              pp9: '0.00',
+              pp10: '0.00',
+              pp11: '0.00',
+              pp12: '0.00',
+              pp13: '92.50',
+              pp14: '0.00',
+              pp15: '0.00',
+              pp16: '0.00',
+              pp17: '0.00',
+              pp18: '0.00',
+              pp19: '0.00',
+              totalAmount: '92.50'
+            },
+            {
+              area: '合计:',
+              provinceName: '',
+              custName: '',
+              custType: '',
+              pp1: '0.00',
+              pp2: '0.00',
+              pp3: '0.00',
+              pp4: '0.00',
+              pp5: '0.00',
+              pp6: '0.00',
+              pp7: '0.00',
+              pp8: '0.00',
+              pp9: '0.00',
+              pp10: '0.00',
+              pp11: '0.00',
+              pp12: '0.00',
+              pp13: '92.50',
+              pp14: '0.00',
+              pp15: '0.00',
+              pp16: '0.00',
+              pp17: '0.00',
+              pp18: '0.00',
+              pp19: '0.00',
+              totalAmount: '92.50'
+            }],
+            count: 1
+          }
+          for (var i = 0; i < data.list.length; i++) {
+            data.list[i].no = i + 1
+          }
+          _this.disabled = false
+          resolve(data)
+        })
+      },
+      addrProvinceList: [], //  省下拉
+      addrCityList: [], //  市下拉
+      addrDistrictList: [], //  区下拉
+      allocateTypeList: [] //  调拨类型
+    }
+  },
+  methods: {
+    //  创建时间  change
+    dateChange (date) {
+      this.queryParam.beginDate = date[0]
+      this.queryParam.endDate = date[1]
+    },
+    //  重置
+    resetSearchForm () {
+      this.$refs.rangeDate.resetDate()
+      this.queryParam.beginDate = ''
+      this.queryParam.endDate = ''
+      this.queryParam.targetName = ''
+      this.queryParam.allocateTypeSn = undefined
+      this.queryParam.state = undefined
+      this.queryParam.allocateNo = ''
+      this.$refs.table.refresh(true)
+    },
+    // 获取城市列表
+    getCityList (val) {
+      this.addrCityList = []
+      this.addrDistrictList = []
+      this.queryParam.dealerCitySn = undefined
+      this.queryParam.dealerCountySn = undefined
+      this.getArea('city', val)
+    },
+    // 获取区县列表
+    getAreaList (val) {
+      this.addrDistrictList = []
+      this.queryParam.dealerCountySn = undefined
+      this.getArea('district', val)
+    },
+    //  省/市/区
+    getArea (leve, sn) {
+      let params
+      if (leve == 'province') {
+        params = { type: '2' }
+      } else {
+        params = { parentId: sn, type: leve == 'city' ? '3' : '4' }
+      }
+      getArea(params).then(res => {
+        if (res.status == 200) {
+          if (leve == 'province') {
+            this.addrProvinceList = res.data || []
+          } else if (leve == 'city') {
+            this.addrCityList = res.data || []
+          } else if (leve == 'district') {
+            this.addrDistrictList = res.data || []
+          }
+        } else {
+          if (leve == 'province') {
+            this.addrProvinceList = []
+          } else if (leve == 'city') {
+            this.addrCityList = []
+          } else if (leve == 'district') {
+            this.addrDistrictList = []
+          }
+        }
+      })
+    }
+  },
+  beforeRouteEnter (to, from, next) {
+    next(vm => {
+      vm.getArea('province')
+    })
+  }
+}
+</script>

+ 270 - 0
src/views/reportData/salesDetails/list.vue

@@ -0,0 +1,270 @@
+<template>
+  <a-card size="small" :bordered="false" class="provinceTypeSalesDetailsList-wrap">
+    <!-- 搜索条件 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline" @keyup.enter.native="$refs.table.refresh(true)">
+        <a-row :gutter="15">
+          <a-col :md="6" :sm="24">
+            <a-form-item label="销售日期">
+              <rangeDate ref="rangeDate" @change="dateChange" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="24">
+            <a-form-item label="销售单号">
+              <a-input id="bulkWarehousingOrderList-productCode" v-model.trim="queryParam.productCode" allowClear placeholder="请输入销售单号"/>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="24">
+            <a-form-item label="产品编码">
+              <a-input id="productPricingList-queryWord" v-model.trim="queryParam.queryWord" allowClear placeholder="请输入产品编码"/>
+            </a-form-item>
+          </a-col>
+          <template v-if="advanced">
+            <a-col :md="6" :sm="24">
+              <a-form-item label="区域">
+                <a-select id="provinceTypeSalesDetailsList-allocateTypeSn" v-model="queryParam.allocateTypeSn" placeholder="请选择区域" allowClear >
+                  <a-select-option v-for="item in allocateTypeList" :key="item.allocateTypeSn" :value="item.allocateTypeSn">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="省份">
+                <a-select id="provinceTypeSalesDetailsList-state" v-model="queryParam.state" placeholder="请选择省份" allowClear >
+                  <a-select-option v-for="item in allocateTypeList" :key="item.allocateTypeSn" :value="item.allocateTypeSn">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="产品名称">
+                <a-input id="productPricingList-name" v-model.trim="queryParam.name" allowClear placeholder="请输入产品名称"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="客户名称">
+                <a-input id="productPricingList-name" v-model.trim="queryParam.name" allowClear placeholder="请输入客户名称"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="产品品牌">
+                <a-select
+                  placeholder="请选择"
+                  id="productPricingList-productBrandSn"
+                  allowClear
+                  v-model="queryParam.productBrandSn"
+                  :showSearch="true"
+                  option-filter-prop="children"
+                  :filter-option="filterOption">
+                  <a-select-option v-for="item in productBrandList" :key="item.brandSn" :value="item.brandSn">{{ item.brandName }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="客户级别">
+                <a-select
+                  placeholder="请选择"
+                  id="productPricingList-productBrandSn"
+                  allowClear
+                  v-model="queryParam.productBrandSn"
+                  :showSearch="true"
+                  option-filter-prop="children"
+                  :filter-option="filterOption">
+                  <a-select-option v-for="item in productBrandList" :key="item.brandSn" :value="item.brandSn">{{ item.brandName }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="品牌类别">
+                <v-select code="BRAND_TYPE" id="productBrandList-brandType" v-model="queryParam.brandType" allowClear placeholder="请选择品牌分类"></v-select>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="二级分类">
+                <a-select
+                  placeholder="请选择"
+                  id="productPricingList-productBrandSn"
+                  allowClear
+                  v-model="queryParam.productBrandSn"
+                  :showSearch="true"
+                  option-filter-prop="children"
+                  :filter-option="filterOption">
+                  <a-select-option v-for="item in productBrandList" :key="item.brandSn" :value="item.brandSn">{{ item.brandName }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="三级分类">
+                <a-select
+                  placeholder="请选择"
+                  id="productPricingList-productBrandSn"
+                  allowClear
+                  v-model="queryParam.productBrandSn"
+                  :showSearch="true"
+                  option-filter-prop="children"
+                  :filter-option="filterOption">
+                  <a-select-option v-for="item in productBrandList" :key="item.brandSn" :value="item.brandSn">{{ item.brandName }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="盘点区间日期">
+                <a-checkbox @change="onChange"></a-checkbox>
+              </a-form-item>
+            </a-col>
+          </template>
+          <a-col :md="6" :sm="24">
+            <a-button style="margin-bottom: 18px;" type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="productPricingList-refresh">查询</a-button>
+            <a-button style="margin: 0 0 18px 8px" @click="resetSearchForm" :disabled="disabled" id="productPricingList-reset">重置</a-button>
+            <a @click="advanced=!advanced" style="margin-left: 8px">
+              {{ advanced ? '收起' : '展开' }}
+              <a-icon :type="advanced ? 'up' : 'down'"/>
+            </a>
+          </a-col>
+        </a-row>
+      </a-form>
+    </div>
+    <!-- 列表 -->
+    <s-table
+      class="sTable"
+      ref="table"
+      size="small"
+      :rowKey="(record) => record.id"
+      :columns="columns"
+      :data="loadData"
+      :scroll="{ x: 3500 }"
+      bordered>
+      <template slot="footer" slot-scope="currentPageData">
+        <a-row :gutter="15">
+          <a-col :md="4" :sm="24">
+            数量:69
+          </a-col>
+          <a-col :md="4" :sm="24">
+            实售价:1130.36
+          </a-col>
+          <a-col :md="4" :sm="24">
+            开单价:1187.11
+          </a-col>
+          <a-col :md="4" :sm="24">
+            成本:1052.30
+          </a-col>
+          <a-col :md="4" :sm="24">
+            折后金额:1187.11
+          </a-col>
+        </a-row>
+      </template>
+    </s-table>
+  </a-card>
+</template>
+
+<script>
+import { STable, VSelect } from '@/components'
+import reportData from '@/libs/reportData'
+import rangeDate from '@/views/common/rangeDate.vue'
+// import { allocateBillList, allocateBillDel, allocateBillAudit, allocateBillExport } from '@/api/allocateBill'
+// import { allocateTypeAllList } from '@/api/allocateType'
+export default {
+  components: { STable, VSelect, rangeDate },
+  data () {
+    return {
+      advanced: false, // 高级搜索 展开/关闭
+      tableHeight: 0,
+      queryParam: { //  查询条件
+        beginDate: '',
+        endDate: '',
+        targetName: '', //  调往对象
+        allocateTypeSn: undefined, //  调拨类型
+        state: undefined, //  业务状态
+        allocateNo: '' //  调拨单号
+      },
+      disabled: false, //  查询、重置按钮是否可操作
+      exportLoading: false,
+      checkVal: '',
+      reportData: reportData.reportDataList,
+      columns: [
+        { title: '序号', dataIndex: 'no', width: 80, align: 'center', fixed: 'left' },
+        { title: '区域', dataIndex: 'data1', width: 200, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '销售单号', dataIndex: 'data2', width: 200, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '省份', dataIndex: 'data3', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '客户名称', dataIndex: 'data4', width: 220, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '客户类型', dataIndex: 'data5', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '直接绑定客户类型', dataIndex: 'data6', width: 200, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '间接绑定客户类型', dataIndex: 'data7', width: 200, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '开单日期', dataIndex: 'data8', width: 160, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '销售日期', dataIndex: 'data9', width: 160, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '品牌', dataIndex: 'data10', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '二级类别', dataIndex: 'data11', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '产品名称', dataIndex: 'data12', width: 120, align: 'center', ellipsis: true, customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '产品编码', dataIndex: 'data13', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '单位', dataIndex: 'data14', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '产品批次', dataIndex: 'data15', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '销售数量', dataIndex: 'data16', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '成本价', dataIndex: 'data17', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '实售价', dataIndex: 'data18', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '开单价', dataIndex: 'data19', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '市级价', dataIndex: 'data20', width: 140, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '直接差价', dataIndex: 'data21', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '间接差价', dataIndex: 'data22', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '操作员', dataIndex: 'data23', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } }
+      ],
+      // 加载数据方法 必须为 Promise 对象
+      loadData: parameter => {
+        this.disabled = true
+        // return allocateBillList(Object.assign(parameter, this.queryParam)).then(res => {
+        //   const data = res.data
+        //   const no = (data.pageNo - 1) * data.pageSize
+        //   for (var i = 0; i < data.list.length; i++) {
+        //     data.list[i].no = no + i + 1
+        //   }
+        //   this.disabled = false
+        //   return data
+        // })
+        const _this = this
+        return new Promise(function (resolve, reject) {
+          const data = {
+            pageNo: 1,
+            pageSize: 10,
+            list: reportData.salesDetailsList,
+            count: 10
+          }
+          for (var i = 0; i < data.list.length; i++) {
+            data.list[i].no = i + 1
+          }
+          _this.disabled = false
+          resolve(data)
+        })
+      },
+      allocateTypeList: [], //  调拨类型
+      openModal: false //  新增编辑  弹框
+    }
+  },
+  methods: {
+    handleFooterShow (currentPageData) {
+      console.log(currentPageData, '[=currentPageData]')
+    },
+    //  创建时间  change
+    dateChange (date) {
+      this.queryParam.beginDate = date[0]
+      this.queryParam.endDate = date[1]
+    },
+    // 选择盘点日期
+    onChange (e) {
+      console.log(e)
+      // this.checkVal
+    },
+
+    //  重置
+    resetSearchForm () {
+      this.$refs.rangeDate.resetDate()
+      this.queryParam.beginDate = ''
+      this.queryParam.endDate = ''
+      this.queryParam.targetName = ''
+      this.queryParam.allocateTypeSn = undefined
+      this.queryParam.state = undefined
+      this.queryParam.allocateNo = ''
+      this.$refs.table.refresh(true)
+    }
+  },
+  beforeRouteEnter (to, from, next) {
+    next(vm => {})
+  }
+}
+</script>

+ 259 - 0
src/views/reportData/salesReturnDetailReport/list.vue

@@ -0,0 +1,259 @@
+<template>
+  <a-card size="small" :bordered="false" class="provinceTypeSalesDetailsList-wrap">
+    <!-- 搜索条件 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline" @keyup.enter.native="$refs.table.refresh(true)">
+        <a-row :gutter="15">
+          <a-col :md="6" :sm="24">
+            <a-form-item label="退货完成日期">
+              <rangeDate ref="rangeDate" @change="dateChange" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="24">
+            <a-form-item label="盘点区间日期">
+              <rangeDate ref="rangeDate" @change="dateChange" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="24">
+            <a-form-item label="退货单号" :label-col="{ span:7 }" :wrapper-col="{ span:17}">
+              <a-input id="salesReturn-salesReturnBillNo" v-model.trim="queryParam.salesReturnBillNo" allowClear placeholder="请输入退货单号"/>
+            </a-form-item>
+          </a-col>
+          <template v-if="advanced">
+            <a-col :md="6" :sm="24">
+              <a-form-item label="产品编码" :label-col="{ span:7 }" :wrapper-col="{ span:17}">
+                <a-input id="salesReturn-salesReturnBillNo" v-model.trim="queryParam.salesReturnBillNo" allowClear placeholder="请输入产品编码"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="产品名称" :label-col="{ span:7 }" :wrapper-col="{ span:17}">
+                <a-input id="salesReturn-salesReturnBillNo" v-model.trim="queryParam.salesReturnBillNo" allowClear placeholder="请输入产品名称"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="客户名称" :label-col="{ span:7 }" :wrapper-col="{ span:17}">
+                <custList id="salesReturn-buyerSn" ref="custList" @change="custChange"></custList>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="客户类型">
+                <custList ref="custList" id="shortageStatisticsCList-buyerSn" @change="custChange"></custList>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="品牌类别">
+                <a-select id="provinceTypeSalesDetailsList-allocateTypeSn" v-model="queryParam.allocateTypeSn" placeholder="请选择" allowClear >
+                  <a-select-option v-for="item in allocateTypeList" :key="item.allocateTypeSn" :value="item.allocateTypeSn">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="产品品牌">
+                <a-select id="provinceTypeSalesDetailsList-allocateTypeSn" v-model="queryParam.allocateTypeSn" placeholder="请选择" allowClear >
+                  <a-select-option v-for="item in allocateTypeList" :key="item.allocateTypeSn" :value="item.allocateTypeSn">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="二级类别">
+                <a-select id="provinceTypeSalesDetailsList-allocateTypeSn" v-model="queryParam.allocateTypeSn" placeholder="请选择" allowClear >
+                  <a-select-option v-for="item in allocateTypeList" :key="item.allocateTypeSn" :value="item.allocateTypeSn">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="三级类别">
+                <a-select id="provinceTypeSalesDetailsList-allocateTypeSn" v-model="queryParam.allocateTypeSn" placeholder="请选择" allowClear >
+                  <a-select-option v-for="item in allocateTypeList" :key="item.allocateTypeSn" :value="item.allocateTypeSn">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="所在区域">
+                <a-select id="provinceTypeSalesDetailsList-allocateTypeSn" v-model="queryParam.allocateTypeSn" placeholder="请选择区域" allowClear >
+                  <a-select-option v-for="item in allocateTypeList" :key="item.allocateTypeSn" :value="item.allocateTypeSn">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="省份">
+                <a-select id="provinceTypeSalesDetailsList-state" v-model="queryParam.state" placeholder="请选择省份" allowClear >
+                  <a-select-option v-for="item in allocateTypeList" :key="item.allocateTypeSn" :value="item.allocateTypeSn">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="市">
+                <a-select id="provinceTypeSalesDetailsList-state" v-model="queryParam.state" placeholder="请选择市" allowClear >
+                  <a-select-option v-for="item in allocateTypeList" :key="item.allocateTypeSn" :value="item.allocateTypeSn">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="区">
+                <a-select id="provinceTypeSalesDetailsList-state" v-model="queryParam.state" placeholder="请选择区" allowClear >
+                  <a-select-option v-for="item in allocateTypeList" :key="item.allocateTypeSn" :value="item.allocateTypeSn">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+          </template>
+          <a-col :md="6" :sm="24">
+            <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="provinceTypeSalesDetailsList-refresh">查询</a-button>
+            <a-button style="margin-left: 5px" @click="resetSearchForm" :disabled="disabled" id="provinceTypeSalesDetailsList-reset">重置</a-button>
+            <a @click="advanced=!advanced" style="margin-left: 8px">
+              {{ advanced ? '收起' : '展开' }}
+              <a-icon :type="advanced ? 'up' : 'down'"/>
+            </a>
+          </a-col>
+        </a-row>
+      </a-form>
+    </div>
+    <!-- 列表 -->
+    <s-table
+      class="sTable"
+      ref="table"
+      size="small"
+      :rowKey="(record) => record.id"
+      :columns="columns"
+      :data="loadData"
+      :scroll="{ x: 3750 }"
+      bordered>
+      <template slot="footer" slot-scope="currentPageData">
+        <a-table
+          ref="table_footer"
+          size="small"
+          :pagination="false"
+          :bordered="false"
+          :rowKey="(record) => record.id"
+          :columns="columnsTotal"
+          :data-source="totalData"
+        >
+        </a-table>
+      </template>
+    </s-table>
+  </a-card>
+</template>
+
+<script>
+import { STable, VSelect } from '@/components'
+import reportData from '@/libs/reportData'
+import rangeDate from '@/views/common/rangeDate.vue'
+import custList from '@/views/common/custList.vue'
+// import { allocateBillList, allocateBillDel, allocateBillAudit, allocateBillExport } from '@/api/allocateBill'
+// import { allocateTypeAllList } from '@/api/allocateType'
+export default {
+  components: { STable, VSelect, rangeDate, custList },
+  data () {
+    return {
+      advanced: false, // 高级搜索 展开/关闭
+      tableHeight: 0,
+      queryParam: { //  查询条件
+        beginDate: '',
+        endDate: '',
+        targetName: '', //  调往对象
+        allocateTypeSn: undefined, //  调拨类型
+        state: undefined, //  业务状态
+        allocateNo: '' //  调拨单号
+      },
+      disabled: false, //  查询、重置按钮是否可操作
+      exportLoading: false,
+      reportData: reportData.salesReturnDetailReportList,
+      totalData: [
+        { printCsountss: 3, prinftCounts: 27, prisntCogunts: 22.5, prinxtCounts: '0', printCocunts: 3, printCvounts: '0', printCgounts: '0.00', printCouhnts: '0.00', printCournts: '0.00' }
+      ],
+      columns: [
+        { title: '序号', dataIndex: 'no', width: 80, align: 'center', fixed: 'left' },
+        { title: '区域', dataIndex: 'area', width: 200, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '退货单号', dataIndex: 'returnNo', width: 220, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '省份', dataIndex: 'province', width: 100, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '客户名称', dataIndex: 'customerName', width: 200, align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
+        { title: '客户类型', dataIndex: 'dealerLevelDictValue', width: 120, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '直接绑定客户名称', dataIndex: 'directCustomName', width: 140, align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
+        { title: '间接绑定客户名称', dataIndex: 'IndirectCustomName', width: 140, align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
+        { title: '退货完成日期', dataIndex: 'returnFinTime', width: 120, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '品牌', dataIndex: 'type', width: 120, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '二级类别', dataIndex: 'allocateTypeName', width: 120, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '产品名称', dataIndex: 'stateDictValue', width: 220, align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
+        { title: '产品编码', dataIndex: 'printStateDictValue', width: 120, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '单位', dataIndex: 'productUnit', width: 120, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '退货数量', dataIndex: 'printCounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '返库数量', dataIndex: 'printCsounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '坏件数量', dataIndex: 'printdCounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '退货开单价', dataIndex: 'prfintCounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '退货开单金额', dataIndex: 'printCogunts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '退货实售价', dataIndex: 'phrintCounts', width: 140, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '退货实售金额', dataIndex: 'printCsountss', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '市级价金额', dataIndex: 'prinftCounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '直接差价', dataIndex: 'prisntCogunts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '间接差价', dataIndex: 'prinxtCounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '再入库单价', dataIndex: 'printCocunts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '正常退货数量', dataIndex: 'printCvounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '正常退货金额', dataIndex: 'printCgounts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '正常再入库金额', dataIndex: 'printCouhnts', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '正常退货入库差额', dataIndex: 'printCournts', width: 150, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } }
+      ],
+	  columnsTotal: [
+		  { title: '退货数量', dataIndex: 'printCsountss', width: 200, align: 'center', customRender: function (text) { return text || '--' } },
+		  { title: '开单退货金额', dataIndex: 'prinftCounts', width: 200, align: 'center', customRender: function (text) { return text || '--' } },
+		  { title: '实售退货金额', dataIndex: 'prisntCogunts', width: 100, align: 'center', customRender: function (text) { return text || '--' } },
+		  { title: '返库数量', dataIndex: 'prinxtCounts', width: 120, align: 'center', customRender: function (text) { return text || '--' } },
+		  { title: '坏件数量', dataIndex: 'printCocunts', width: 120, align: 'center', customRender: function (text) { return text || '--' } },
+		  { title: '正常退货数量', dataIndex: 'printCvounts', width: 120, align: 'center', customRender: function (text) { return text || '--' } },
+		  { title: '正常退货金额', dataIndex: 'printCgounts', width: 120, align: 'center', customRender: function (text) { return text || '--' } },
+		  { title: '正常再入库金额', dataIndex: 'printCouhnts', width: 120, align: 'center', customRender: function (text) { return text || '--' } },
+		  { title: '正常退货入库差额', dataIndex: 'printCournts', width: 120, align: 'center', customRender: function (text) { return text || '--' } }
+	  ],
+      // 加载数据方法 必须为 Promise 对象
+      loadData: parameter => {
+        this.disabled = true
+        // return allocateBillList(Object.assign(parameter, this.queryParam)).then(res => {
+        //   const data = res.data
+        //   const no = (data.pageNo - 1) * data.pageSize
+        //   for (var i = 0; i < data.list.length; i++) {
+        //     data.list[i].no = no + i + 1
+        //   }
+        //   this.disabled = false
+        //   return data
+        // })
+        const _this = this
+        return new Promise(function (resolve, reject) {
+          const data = {
+            pageNo: 1,
+            pageSize: 10,
+            list: reportData.salesReturnDetailReportList,
+            count: 10
+          }
+          for (var i = 0; i < data.list.length; i++) {
+            data.list[i].no = i + 1
+          }
+          _this.disabled = false
+          resolve(data)
+        })
+      },
+      allocateTypeList: [], //  调拨类型
+      openModal: false //  新增编辑  弹框
+    }
+  },
+  methods: {
+    //  创建时间  change
+    dateChange (date) {
+      this.queryParam.beginDate = date[0]
+      this.queryParam.endDate = date[1]
+    },
+    //  重置
+    resetSearchForm () {
+      this.$refs.rangeDate.resetDate()
+      this.queryParam.beginDate = ''
+      this.queryParam.endDate = ''
+      this.queryParam.targetName = ''
+      this.queryParam.allocateTypeSn = undefined
+      this.queryParam.state = undefined
+      this.queryParam.allocateNo = ''
+      this.$refs.table.refresh(true)
+    }
+  },
+  beforeRouteEnter (to, from, next) {
+    next(vm => {})
+  }
+}
+</script>

+ 542 - 0
src/views/reportData/salesReturnReport/list.vue

@@ -0,0 +1,542 @@
+<template>
+  <a-card size="small" :bordered="false" class="shortageStatisticsCList-wrap">
+    <!-- 搜索条件 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline" @keyup.enter.native="$refs.table.refresh(true)">
+        <a-row :gutter="15">
+          <a-col :md="6" :sm="24">
+            <a-form-item label="销售日期">
+              <rangeDate ref="rangeDate" :value="time" @change="dateChange" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="24">
+            <a-form-item label="客户名称">
+              <custList ref="custList" id="shortageStatisticsCList-buyerSn" @change="custChange"></custList>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="24">
+            <a-form-item label="客户类型">
+              <custList ref="custList" id="shortageStatisticsCList-buyerSn" @change="custChange"></custList>
+            </a-form-item>
+          </a-col>
+          <template v-if="advanced">
+            <a-col :md="6" :sm="24">
+              <a-form-item label="所在区域">
+                <subarea id="shortageStatisticsCList-subarea" v-model="queryParam.subareaSn"></subarea>
+              </a-form-item>
+            </a-col>
+            <a-col :md="12" :sm="24">
+              <a-row>
+                <a-form-item label="地区">
+                  <a-col span="7">
+                    <a-form-item prop="dealerProvinceSn" style="margin: 0;">
+                      <a-select v-model="queryParam.dealerProvinceSn" @change="getCityList" placeholder="请选择省">
+                        <a-select-option v-for="item in addrProvinceList" :value="item.id" :key="item.id + 'a'">{{ item.name }}</a-select-option>
+                      </a-select>
+                    </a-form-item>
+                  </a-col>
+                  <a-col span="7" offset="1">
+                    <a-form-item prop="dealerCitySn" style="margin: 0;">
+                      <a-select v-model="queryParam.dealerCitySn" @change="getAreaList" placeholder="请选择市">
+                        <a-select-option v-for="item in addrCityList" :value="item.id" :key="item.id + 'b'">{{ item.name }}</a-select-option>
+                      </a-select>
+                    </a-form-item>
+                  </a-col>
+                  <a-col span="7" offset="1">
+                    <a-form-item prop="dealerCountySn" style="margin: 0;">
+                      <a-select v-model="queryParam.dealerCountySn" placeholder="请选择区/县">
+                        <a-select-option v-for="item in addrDistrictList" :value="item.id" :key="item.id + 'c'">{{ item.name }}</a-select-option>
+                      </a-select>
+                    </a-form-item>
+                  </a-col>
+                </a-form-item>
+              </a-row>
+            </a-col>
+          </template>
+          <a-col :md="6" :sm="24">
+            <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="shortageStatisticsCList-refresh">查询</a-button>
+            <a-button style="margin-left: 8px" @click="resetSearchForm" :disabled="disabled" id="shortageStatisticsCList-reset">重置</a-button>
+            <a @click="advanced=!advanced" style="margin-left: 8px">
+              {{ advanced ? '收起' : '展开' }}
+              <a-icon :type="advanced ? 'up' : 'down'"/>
+            </a>
+          </a-col>
+        </a-row>
+      </a-form>
+    </div>
+    <!-- 列表 -->
+    <s-table
+      class="sTable"
+      ref="table"
+      size="small"
+      :rowKey="(record) => record.id"
+      :columns="columns"
+      :data="loadData"
+      :scroll="{ x: 2880, y: tableHeight }"
+      bordered>
+    </s-table>
+  </a-card>
+</template>
+
+<script>
+import moment from 'moment'
+import getDate from '@/libs/getDate.js'
+import { STable, VSelect } from '@/components'
+import rangeDate from '@/views/common/rangeDate.vue'
+import custList from '@/views/common/custList.vue'
+import subarea from '@/views/common/subarea.js'
+import { getArea } from '@/api/data'
+// import { oosBuyerList, oosBuyerDetailCount, oosBuyerDetailPageCount, oosDetailExport } from '@/api/oos'
+export default {
+  components: { STable, VSelect, custList, subarea, rangeDate },
+  data () {
+    return {
+      advanced: false, // 高级搜索 展开/关闭
+      tableHeight: 0,
+      queryParam: { //  查询条件
+        beginDate: '',
+        endDate: '',
+        buyerSn: undefined,
+        subareaSn: undefined, //  区域
+        provinceSn: undefined,
+        citySn: undefined,
+        districtSn: undefined
+      },
+      disabled: false, //  查询、重置按钮是否可操作
+      exportLoading: false, // 导出loading
+      addrProvinceList: [], //  省下拉
+      addrCityList: [], //  市下拉
+      addrDistrictList: [], //  区下拉
+      time: [], //  创建时间
+      columns: [
+        { title: '序号', dataIndex: 'no', width: 80, align: 'center' },
+        { title: '区域',
+          dataIndex: 'area',
+          width: 150,
+          align: 'center',
+          customRender: (text, row, index) => {
+            if (text == '合计') {
+              return {
+                children: <span>{ text }</span>,
+                attrs: {
+                  colSpan: 4
+                }
+              }
+            }
+            return text
+          }
+        },
+        { title: '省份',
+          dataIndex: 'provinceName',
+          width: 150,
+          align: 'center',
+          customRender: function (text, row, index) {
+            if (text == '合计') {
+              return {
+                children: <span>{ text }</span>,
+                attrs: {
+                  colSpan: 0
+                }
+              }
+            }
+            return text || '--'
+          } },
+        { title: '客户名称',
+          dataIndex: 'custName',
+          width: 200,
+          align: 'center',
+          customRender: function (text, row, index) {
+            if (text == '合计') {
+              return {
+                children: <span>{ text }</span>,
+                attrs: {
+                  colSpan: 0
+                }
+              }
+            }
+            return text || '--'
+          } },
+        { title: '客户类型',
+          dataIndex: 'custType',
+          width: 200,
+          align: 'center',
+          customRender: function (text, row, index) {
+            if (text == '合计') {
+              return {
+                children: <span>{ text }</span>,
+                attrs: {
+                  colSpan: 0
+                }
+              }
+            }
+            return text || '--'
+          } },
+        { title: '品牌',
+          align: 'center',
+          children: [
+            {
+              title: '箭牌',
+              align: 'center',
+              children: [
+                {
+                  title: '滤清器',
+                  dataIndex: 'pp1',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '雨刮片',
+                  dataIndex: 'pp2',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '喇叭',
+                  dataIndex: 'pp3',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '刹车片',
+                  dataIndex: 'pp4',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '感应线',
+                  dataIndex: 'pp5',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                }
+              ]
+            },
+            {
+              title: '冠牌',
+              align: 'center',
+              children: [
+                {
+                  title: '滤清器',
+                  dataIndex: 'pp6',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '雨刮片',
+                  dataIndex: 'pp7',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '刹车片',
+                  dataIndex: 'pp8',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                }
+              ]
+            },
+            {
+              title: '汇箭',
+              dataIndex: 'pp9',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '德路斯',
+              dataIndex: 'pp10',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '稳升',
+              dataIndex: 'pp11',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: 'TBU',
+              dataIndex: 'pp12',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            }
+          ] },
+        { title: '代理品牌',
+          align: 'center',
+          children: [
+            {
+              title: 'NGK',
+              dataIndex: 'pp13',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '飞利浦',
+              dataIndex: 'pp14',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '车仆',
+              dataIndex: 'pp15',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '瓦尔塔',
+              dataIndex: 'pp16',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '雷贝斯托',
+              dataIndex: 'pp17',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '德尔福',
+              dataIndex: 'pp18',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '巴诺德',
+              dataIndex: 'pp19',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            }
+          ] },
+        { title: '实售退货合计金额', width: 200, dataIndex: 'totalAmount', align: 'center', customRender: function (text) { return text ? ('¥' + text) : '--' } }
+      ],
+      // 加载数据方法 必须为 Promise 对象
+      loadData: parameter => {
+        // this.disabled = true
+        // if (this.tableHeight == 0) {
+        //   this.tableHeight = window.innerHeight - 380
+        // }
+        // const paramsPage = Object.assign(this.queryParam, { pageNo: parameter.pageNo, pageSize: parameter.pageSize }) //  有分页
+        // const params = Object.assign(parameter, this.queryParam) //  无分页
+        // return oosBuyerList(params).then(res => {
+        //   const data = res.data
+        //   const no = (data.pageNo - 1) * data.pageSize
+        //   for (var i = 0; i < data.list.length; i++) {
+        //     data.list[i].no = no + i + 1
+        //   }
+        //   this.disabled = false
+        //   return data
+        // })
+        const _this = this
+        return new Promise(function (resolve, reject) {
+          const data = {
+            pageNo: 1,
+            pageSize: 10,
+            list: [
+              {
+                area: 'A区',
+                provinceName: '广东省',
+                custName: '支持省级',
+                custType: '省级服务中心',
+                pp1: '0',
+                pp2: '36.50',
+                pp3: '0',
+                pp4: '0',
+                pp5: '0',
+                pp6: '0',
+                pp7: '0',
+                pp8: '0',
+                pp9: '0',
+                pp10: '0',
+                pp11: '0',
+                pp12: '0',
+                pp13: '0',
+                pp14: '0',
+                pp15: '0',
+                pp16: '0',
+                pp17: '0',
+                pp18: '0',
+                pp19: '0',
+                totalAmount: '36.50'
+              },
+              {
+                area: '合计',
+                provinceName: '合计',
+                custName: '合计',
+                custType: '合计',
+                pp1: '0',
+                pp2: '36.50',
+                pp3: '0',
+                pp4: '0',
+                pp5: '0',
+                pp6: '0',
+                pp7: '0',
+                pp8: '0',
+                pp9: '0',
+                pp10: '0',
+                pp11: '0',
+                pp12: '0',
+                pp13: '37.00',
+                pp14: '0',
+                pp15: '0',
+                pp16: '0',
+                pp17: '0',
+                pp18: '0',
+                pp19: '0',
+                totalAmount: '36.50'
+              }],
+            count: 1
+          }
+          for (var i = 0; i < data.list.length; i++) {
+            data.list[i].no = i + 1
+          }
+          _this.disabled = false
+          resolve(data)
+        })
+      },
+      productType: [],
+      productTotal: null,
+      currentTotal: null
+    }
+  },
+  methods: {
+    //  创建时间  change
+    dateChange (date) {
+      this.queryParam.beginDate = date[0]
+      this.queryParam.endDate = date[1]
+    },
+    custChange (obj) {
+      this.queryParam.buyerSn = obj.key
+    },
+    // 获取城市列表
+    getCityList (val) {
+      const index = this.addrProvinceList.findIndex(item => item.areaSn == val)
+      if (index >= 0) {
+        this.queryParam.provinceName = this.addrProvinceList[index].name
+      }
+      this.addrCityList = []
+      this.addrDistrictList = []
+      this.queryParam.citySn = undefined
+      this.queryParam.districtSn = undefined
+      this.queryParam.address = ''
+      this.getArea('city', val)
+    },
+    // 获取区县列表
+    getAreaList (val) {
+      const index = this.addrCityList.findIndex(item => item.areaSn == val)
+      if (index >= 0) {
+        this.queryParam.cityName = this.addrCityList[index].name
+      }
+      this.addrDistrictList = []
+      this.queryParam.districtSn = undefined
+      this.queryParam.address = ''
+      this.getArea('district', val)
+    },
+    // 区县变更
+    areaCharged (val) {
+      const index = this.addrDistrictList.findIndex(item => item.areaSn == val)
+      if (index >= 0) {
+        this.queryParam.districtName = this.addrDistrictList[index].name
+      }
+      this.queryParam.address = ''
+    },
+    //  省/市/区
+    getArea (leve, sn) {
+      let params
+      if (leve == 'province') {
+        params = { type: '2' }
+      } else {
+        params = { parentId: sn, type: leve == 'city' ? '3' : '4' }
+      }
+      getArea(params).then(res => {
+        if (res.status == 200) {
+          if (leve == 'province') {
+            this.addrProvinceList = res.data || []
+          } else if (leve == 'city') {
+            this.addrCityList = res.data || []
+          } else if (leve == 'district') {
+            this.addrDistrictList = res.data || []
+          }
+        } else {
+          if (leve == 'province') {
+            this.addrProvinceList = []
+          } else if (leve == 'city') {
+            this.addrCityList = []
+          } else if (leve == 'district') {
+            this.addrDistrictList = []
+          }
+        }
+      })
+    },
+    //  重置
+    resetSearchForm () {
+      this.$refs.rangeDate.resetDate(this.time)
+      this.queryParam.beginDate = getDate.getThreeMonthDays().starttime
+      this.queryParam.endDate = getDate.getCurrMonthDays().endtime
+      this.queryParam.buyerSn = undefined
+      this.queryParam.subareaSn = undefined
+      this.queryParam.productName = ''
+      this.queryParam.productCode = ''
+      this.queryParam.productTypeSn1 = ''
+      this.queryParam.productTypeSn2 = ''
+      this.queryParam.productTypeSn3 = ''
+      this.queryParam.salesBillNo = ''
+      this.productType = []
+      this.$refs.table.refresh(true)
+    },
+    // 详情
+    handleDetail (row) {
+      this.$router.push({ name: 'salesDetail', params: { sn: row.salesBillSn } })
+    },
+    //  导出
+    handleExport () {
+      const params = this.queryParam
+      if (this.time && this.time.length) {
+        params.beginDate = moment(this.time[0]).format('YYYY-MM-DD')
+        params.endDate = moment(this.time[1]).format('YYYY-MM-DD')
+      } else {
+        params.beginDate = ''
+        params.endDate = ''
+      }
+      this.exportLoading = true
+      oosDetailExport(params).then(res => {
+        this.exportLoading = false
+        this.download(res)
+      })
+    },
+    download (data) {
+      if (!data) { return }
+      const url = window.URL.createObjectURL(new Blob([data]))
+      const link = document.createElement('a')
+      link.style.display = 'none'
+      link.href = url
+      const a = moment().format('YYYYMMDDHHmmss')
+      const fname = '缺货统计(按客户)' + a
+      link.setAttribute('download', fname + '.xlsx')
+      document.body.appendChild(link)
+      link.click()
+    }
+  },
+  beforeRouteEnter (to, from, next) {
+    next(vm => {
+      vm.getArea('province')
+    })
+  }
+}
+</script>

+ 211 - 0
src/views/reportData/salesReturnsReport/list.vue

@@ -0,0 +1,211 @@
+<template>
+  <a-card size="small" :bordered="false" class="provinceTypeSalesDetailsList-wrap">
+    <!-- 搜索条件 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline" @keyup.enter.native="$refs.table.refresh(true)">
+        <a-row :gutter="15">
+          <a-col :md="6" :sm="24">
+            <a-form-item label="退货完成日期">
+              <rangeDate ref="rangeDate" @change="dateChange" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="24">
+            <a-form-item label="退货单号">
+              <a-input id="bulkWarehousingOrderList-productCode" v-model.trim="queryParam.productCode" allowClear placeholder="请输入销售单号"/>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="24">
+            <a-form-item label="产品编码">
+              <a-input id="productPricingList-queryWord" v-model.trim="queryParam.queryWord" allowClear placeholder="请输入产品编码"/>
+            </a-form-item>
+          </a-col>
+          <template v-if="advanced">
+            <a-col :md="6" :sm="24">
+              <a-form-item label="区域">
+                <a-select id="provinceTypeSalesDetailsList-allocateTypeSn" v-model="queryParam.allocateTypeSn" placeholder="请选择区域" allowClear >
+                  <a-select-option v-for="item in allocateTypeList" :key="item.allocateTypeSn" :value="item.allocateTypeSn">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="省份">
+                <a-select id="provinceTypeSalesDetailsList-state" v-model="queryParam.state" placeholder="请选择省份" allowClear >
+                  <a-select-option v-for="item in allocateTypeList" :key="item.allocateTypeSn" :value="item.allocateTypeSn">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="客户名称">
+                <a-input id="productPricingList-name" v-model.trim="queryParam.name" allowClear placeholder="请输入客户名称"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="客户级别">
+                <a-select
+                  placeholder="请选择"
+                  id="productPricingList-productBrandSn"
+                  allowClear
+                  v-model="queryParam.productBrandSn">
+                  <a-select-option v-for="item in allocateTypeList" :key="item.brandSn" :value="item.brandSn">{{ item.brandName }}</a-select-option>
+                </a-select>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="盘点区间日期">
+                <a-checkbox @change="onChange"></a-checkbox>
+              </a-form-item>
+            </a-col>
+          </template>
+          <a-col :md="6" :sm="24">
+            <a-button style="margin-bottom: 18px;" type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="productPricingList-refresh">查询</a-button>
+            <a-button style="margin: 0 0 18px 8px" @click="resetSearchForm" :disabled="disabled" id="productPricingList-reset">重置</a-button>
+            <a @click="advanced=!advanced" style="margin-left: 8px">
+              {{ advanced ? '收起' : '展开' }}
+              <a-icon :type="advanced ? 'up' : 'down'"/>
+            </a>
+          </a-col>
+        </a-row>
+      </a-form>
+    </div>
+    <!-- 列表 -->
+    <s-table
+      class="sTable"
+      ref="table"
+      size="small"
+      :rowKey="(record) => record.id"
+      :columns="columns"
+      :data="loadData"
+      :scroll="{ x: 2380 }"
+      bordered>
+      <template slot="footer" slot-scope="currentPageData">
+        <a-row :gutter="15">
+          <a-col :md="4" :sm="24">
+            总数量:130
+          </a-col>
+          <a-col :md="4" :sm="24">
+            开单退货金额:1688.50
+          </a-col>
+          <a-col :md="4" :sm="24">
+            实售退货金额:1476.50
+          </a-col>
+          <a-col :md="4" :sm="24">
+            经销商金额:1688.50
+          </a-col>
+          <a-col :md="4" :sm="24">
+            服务中心金额:55.50
+          </a-col>
+          <a-col :md="4" :sm="24">
+            特约加盟店金额:1856.00
+          </a-col>
+        </a-row>
+      </template>
+    </s-table>
+  </a-card>
+</template>
+
+<script>
+import { STable, VSelect } from '@/components'
+import reportData from '@/libs/reportData'
+import rangeDate from '@/views/common/rangeDate.vue'
+// import { allocateBillList, allocateBillDel, allocateBillAudit, allocateBillExport } from '@/api/allocateBill'
+// import { allocateTypeAllList } from '@/api/allocateType'
+export default {
+  components: { STable, VSelect, rangeDate },
+  data () {
+    return {
+      advanced: false, // 高级搜索 展开/关闭
+      tableHeight: 0,
+      queryParam: { //  查询条件
+        beginDate: '',
+        endDate: '',
+        targetName: '', //  调往对象
+        allocateTypeSn: undefined, //  调拨类型
+        state: undefined, //  业务状态
+        allocateNo: '' //  调拨单号
+      },
+      disabled: false, //  查询、重置按钮是否可操作
+      exportLoading: false,
+      checkVal: '',
+      reportData: reportData.salesReturnsReportList,
+      columns: [
+        { title: '序号', dataIndex: 'no', width: 80, align: 'center', fixed: 'left' },
+        { title: '退货单号', dataIndex: 'data1', width: 200, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '退货完成日期', dataIndex: 'data2', width: 160, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '客户名称', dataIndex: 'data3', align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '客户类型', dataIndex: 'data4', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '直接绑定客户类型', dataIndex: 'data5', width: 200, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '间接绑定客户类型', dataIndex: 'data6', width: 200, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '退货数量', dataIndex: 'data7', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '开单退货金额', dataIndex: 'data8', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '经销商价', dataIndex: 'data9', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '服务中心价', dataIndex: 'data10', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '特约加盟价', dataIndex: 'data11', width: 120, align: 'center', ellipsis: true, customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '实售退货价', dataIndex: 'data12', width: 120, align: 'center', ellipsis: true, customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '直接差价', dataIndex: 'data13', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '间接差价', dataIndex: 'data14', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '坏件数量', dataIndex: 'data15', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '操作员', dataIndex: 'data16', width: 120, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } }
+      ],
+      // 加载数据方法 必须为 Promise 对象
+      loadData: parameter => {
+        this.disabled = true
+        // return allocateBillList(Object.assign(parameter, this.queryParam)).then(res => {
+        //   const data = res.data
+        //   const no = (data.pageNo - 1) * data.pageSize
+        //   for (var i = 0; i < data.list.length; i++) {
+        //     data.list[i].no = no + i + 1
+        //   }
+        //   this.disabled = false
+        //   return data
+        // })
+        const _this = this
+        return new Promise(function (resolve, reject) {
+          const data = {
+            pageNo: 1,
+            pageSize: 10,
+            list: reportData.salesReturnsReportList,
+            count: 10
+          }
+          for (var i = 0; i < data.list.length; i++) {
+            data.list[i].no = i + 1
+          }
+          _this.disabled = false
+          resolve(data)
+        })
+      },
+      allocateTypeList: [], //  调拨类型
+      openModal: false //  新增编辑  弹框
+    }
+  },
+  methods: {
+    handleFooterShow (currentPageData) {
+      console.log(currentPageData, '[=currentPageData]')
+    },
+    //  创建时间  change
+    dateChange (date) {
+      this.queryParam.beginDate = date[0]
+      this.queryParam.endDate = date[1]
+    },
+    // 选择盘点日期
+    onChange (e) {
+      console.log(e)
+      // this.checkVal
+    },
+
+    //  重置
+    resetSearchForm () {
+      this.$refs.rangeDate.resetDate()
+      this.queryParam.beginDate = ''
+      this.queryParam.endDate = ''
+      this.queryParam.targetName = ''
+      this.queryParam.allocateTypeSn = undefined
+      this.queryParam.state = undefined
+      this.queryParam.allocateNo = ''
+      this.$refs.table.refresh(true)
+    }
+  },
+  beforeRouteEnter (to, from, next) {
+    next(vm => {})
+  }
+}
+</script>

+ 431 - 0
src/views/reportData/salesSlipReport/list.vue

@@ -0,0 +1,431 @@
+<template>
+  <a-card size="small" :bordered="false" class="salesSlipReportList-wrap">
+    <!-- 搜索条件 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline" @keyup.enter.native="$refs.table.refresh(true)">
+        <a-row :gutter="15">
+          <a-col :md="6" :sm="24">
+            <a-form-item label="销售日期">
+              <rangeDate ref="rangeDate" @change="dateChange" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="24">
+            <a-form-item label="客户名称">
+              <a-input id="salesSlipReportList-allocateTypeSn" v-model.trim="queryParam.allocateTypeSn" allowClear placeholder="请输入客户名称"/>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="24">
+            <a-form-item label="客户类型">
+              <a-select id="salesSlipReportList-allocateTypeSn" v-model="queryParam.allocateTypeSn" placeholder="请选择客户类型" allowClear >
+                <a-select-option v-for="item in allocateTypeList" :key="item.allocateTypeSn" :value="item.allocateTypeSn">{{ item.name }}</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <template v-if="advanced">
+            <a-col :md="6" :sm="24">
+              <a-form-item label="销售单号">
+                <a-input id="salesSlipReportList-allocateTypeSn" v-model.trim="queryParam.allocateTypeSn" allowClear placeholder="请输入销售单号"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="所在区域">
+                <subarea id="salesSlipReportList-allocateTypeSn" v-model="queryParam.subareaSn"></subarea>
+              </a-form-item>
+            </a-col>
+            <a-col :md="12" :sm="24">
+              <a-row>
+                <a-form-item label="地区">
+                  <a-col span="7">
+                    <a-form-item prop="dealerProvinceSn" style="margin: 0;">
+                      <a-select v-model="queryParam.dealerProvinceSn" @change="getCityList" placeholder="请选择省">
+                        <a-select-option v-for="item in addrProvinceList" :value="item.id" :key="item.id + 'a'">{{ item.name }}</a-select-option>
+                      </a-select>
+                    </a-form-item>
+                  </a-col>
+                  <a-col span="7" offset="1">
+                    <a-form-item prop="dealerCitySn" style="margin: 0;">
+                      <a-select v-model="queryParam.dealerCitySn" @change="getAreaList" placeholder="请选择市">
+                        <a-select-option v-for="item in addrCityList" :value="item.id" :key="item.id + 'b'">{{ item.name }}</a-select-option>
+                      </a-select>
+                    </a-form-item>
+                  </a-col>
+                  <a-col span="7" offset="1">
+                    <a-form-item prop="dealerCountySn" style="margin: 0;">
+                      <a-select v-model="queryParam.dealerCountySn" placeholder="请选择区/县">
+                        <a-select-option v-for="item in addrDistrictList" :value="item.id" :key="item.id + 'c'">{{ item.name }}</a-select-option>
+                      </a-select>
+                    </a-form-item>
+                  </a-col>
+                </a-form-item>
+              </a-row>
+            </a-col>
+          </template>
+          <a-col :md="6" :sm="24">
+            <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="salesSlipReportList-refresh">查询</a-button>
+            <a-button style="margin-left: 5px" @click="resetSearchForm" :disabled="disabled" id="salesSlipReportList-reset">重置</a-button>
+            <a @click="advanced=!advanced" style="margin-left: 8px">
+              {{ advanced ? '收起' : '展开' }}
+              <a-icon :type="advanced ? 'up' : 'down'"/>
+            </a>
+          </a-col>
+        </a-row>
+      </a-form>
+    </div>
+    <!-- 列表 -->
+    <s-table
+      class="sTable"
+      ref="table"
+      size="small"
+      :rowKey="(record) => record.id"
+      :columns="columns"
+      :data="loadData"
+      :scroll="{ x: 3220 }"
+      bordered>
+    </s-table>
+  </a-card>
+</template>
+
+<script>
+import { STable, VSelect } from '@/components'
+import reportData from '@/libs/reportData'
+import rangeDate from '@/views/common/rangeDate.vue'
+import subarea from '@/views/common/subarea.js'
+import { getArea } from '@/api/data'
+// import { allocateBillList, allocateBillDel, allocateBillAudit, allocateBillExport } from '@/api/allocateBill'
+// import { allocateTypeAllList } from '@/api/allocateType'
+export default {
+  components: { STable, VSelect, rangeDate, subarea },
+  data () {
+    return {
+      advanced: false, // 高级搜索 展开/关闭
+      tableHeight: 0,
+      queryParam: { //  查询条件
+        beginDate: '',
+        endDate: '',
+        targetName: '', //  调往对象
+        allocateTypeSn: undefined, //  调拨类型
+        state: undefined, //  业务状态
+        allocateNo: '' //  调拨单号
+      },
+      disabled: false, //  查询、重置按钮是否可操作
+      exportLoading: false,
+      columns: [
+        { title: '序号', dataIndex: 'no', width: 80, align: 'center', fixed: 'left' },
+        { title: '区域', dataIndex: 'area', width: 220, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '销售单号', dataIndex: 'salesBillNo', width: 220, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '省份', dataIndex: 'provinceName', width: 200, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '客户名称', dataIndex: 'custName', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '客户类型', dataIndex: 'custType', width: 200, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '品牌',
+          align: 'center',
+          children: [
+            {
+              title: '箭牌',
+              align: 'center',
+              children: [
+                {
+                  title: '滤清器',
+                  dataIndex: 'pp1',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '雨刮片',
+                  dataIndex: 'pp2',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '喇叭',
+                  dataIndex: 'pp3',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '刹车片',
+                  dataIndex: 'pp4',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '感应线',
+                  dataIndex: 'pp5',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                }
+              ]
+            },
+            {
+              title: '冠牌',
+              align: 'center',
+              children: [
+                {
+                  title: '滤清器',
+                  dataIndex: 'pp6',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '雨刮片',
+                  dataIndex: 'pp7',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                },
+                {
+                  title: '刹车片',
+                  dataIndex: 'pp8',
+                  align: 'center',
+                  width: 100,
+                  customRender: function (text) { return text ? ('¥' + text) : '--' }
+                }
+              ]
+            },
+            {
+              title: '汇箭',
+              dataIndex: 'pp9',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '德路斯',
+              dataIndex: 'pp10',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '稳升',
+              dataIndex: 'pp11',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: 'TBU',
+              dataIndex: 'pp12',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            }
+          ] },
+        { title: '代理品牌',
+          align: 'center',
+          children: [
+            {
+              title: 'NGK',
+              dataIndex: 'pp13',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '飞利浦',
+              dataIndex: 'pp14',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '车仆',
+              dataIndex: 'pp15',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '瓦尔塔',
+              dataIndex: 'pp16',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '雷贝斯托',
+              dataIndex: 'pp17',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '德尔福',
+              dataIndex: 'pp18',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            },
+            {
+              title: '巴诺德',
+              dataIndex: 'pp19',
+              align: 'center',
+              width: 100,
+              customRender: function (text) { return text ? ('¥' + text) : '--' }
+            }
+          ] },
+        { title: '实际销售合计金额', width: 200, dataIndex: 'totalAmount', align: 'center', customRender: function (text) { return text ? ('¥' + text) : '--' } }
+      ],
+      // 加载数据方法 必须为 Promise 对象
+      loadData: parameter => {
+        // this.disabled = true
+        // if (this.tableHeight == 0) {
+        //   this.tableHeight = window.innerHeight - 380
+        // }
+        // const paramsPage = Object.assign(this.queryParam, { pageNo: parameter.pageNo, pageSize: parameter.pageSize }) //  有分页
+        // const params = Object.assign(parameter, this.queryParam) //  无分页
+        // return oosBuyerList(params).then(res => {
+        //   const data = res.data
+        //   const no = (data.pageNo - 1) * data.pageSize
+        //   for (var i = 0; i < data.list.length; i++) {
+        //     data.list[i].no = no + i + 1
+        //   }
+        //   this.disabled = false
+        //   return data
+        // })
+        const _this = this
+        return new Promise(function (resolve, reject) {
+          const data = {
+            pageNo: 1,
+            pageSize: 10,
+            list: [{
+              area: 'A区',
+              salesBillNo: 'XS2106020000001',
+              provinceName: '广东省',
+              custName: '箭冠汽配佛山白坭店',
+              custType: '市级经销商',
+              pp1: '0.00',
+              pp2: '0.00',
+              pp3: '0.00',
+              pp4: '0.00',
+              pp5: '0.00',
+              pp6: '0.00',
+              pp7: '0.00',
+              pp8: '0.00',
+              pp9: '0.00',
+              pp10: '0.00',
+              pp11: '0.00',
+              pp12: '0.00',
+              pp13: '92.50',
+              pp14: '0.00',
+              pp15: '0.00',
+              pp16: '0.00',
+              pp17: '0.00',
+              pp18: '0.00',
+              pp19: '0.00',
+              totalAmount: '92.50'
+            },
+            {
+              area: '合计:',
+              salesBillNo: '',
+              provinceName: '',
+              custName: '',
+              custType: '',
+              pp1: '0.00',
+              pp2: '0.00',
+              pp3: '0.00',
+              pp4: '0.00',
+              pp5: '0.00',
+              pp6: '0.00',
+              pp7: '0.00',
+              pp8: '0.00',
+              pp9: '0.00',
+              pp10: '0.00',
+              pp11: '0.00',
+              pp12: '0.00',
+              pp13: '92.50',
+              pp14: '0.00',
+              pp15: '0.00',
+              pp16: '0.00',
+              pp17: '0.00',
+              pp18: '0.00',
+              pp19: '0.00',
+              totalAmount: '92.50'
+            }],
+            count: 1
+          }
+          for (var i = 0; i < data.list.length; i++) {
+            data.list[i].no = i + 1
+          }
+          _this.disabled = false
+          resolve(data)
+        })
+      },
+      addrProvinceList: [], //  省下拉
+      addrCityList: [], //  市下拉
+      addrDistrictList: [], //  区下拉
+      allocateTypeList: [] //  调拨类型
+    }
+  },
+  methods: {
+    //  创建时间  change
+    dateChange (date) {
+      this.queryParam.beginDate = date[0]
+      this.queryParam.endDate = date[1]
+    },
+    //  重置
+    resetSearchForm () {
+      this.$refs.rangeDate.resetDate()
+      this.queryParam.beginDate = ''
+      this.queryParam.endDate = ''
+      this.queryParam.targetName = ''
+      this.queryParam.allocateTypeSn = undefined
+      this.queryParam.state = undefined
+      this.queryParam.allocateNo = ''
+      this.$refs.table.refresh(true)
+    },
+    // 获取城市列表
+    getCityList (val) {
+      this.addrCityList = []
+      this.addrDistrictList = []
+      this.queryParam.dealerCitySn = undefined
+      this.queryParam.dealerCountySn = undefined
+      this.getArea('city', val)
+    },
+    // 获取区县列表
+    getAreaList (val) {
+      this.addrDistrictList = []
+      this.queryParam.dealerCountySn = undefined
+      this.getArea('district', val)
+    },
+    //  省/市/区
+    getArea (leve, sn) {
+      let params
+      if (leve == 'province') {
+        params = { type: '2' }
+      } else {
+        params = { parentId: sn, type: leve == 'city' ? '3' : '4' }
+      }
+      getArea(params).then(res => {
+        if (res.status == 200) {
+          if (leve == 'province') {
+            this.addrProvinceList = res.data || []
+          } else if (leve == 'city') {
+            this.addrCityList = res.data || []
+          } else if (leve == 'district') {
+            this.addrDistrictList = res.data || []
+          }
+        } else {
+          if (leve == 'province') {
+            this.addrProvinceList = []
+          } else if (leve == 'city') {
+            this.addrCityList = []
+          } else if (leve == 'district') {
+            this.addrDistrictList = []
+          }
+        }
+      })
+    }
+  },
+  beforeRouteEnter (to, from, next) {
+    next(vm => {
+      vm.getArea('province')
+    })
+  }
+}
+</script>

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

@@ -118,7 +118,7 @@ export default {
       disabled: false, //  查询、重置按钮是否可操作
       columns: [
         { title: '创建时间', dataIndex: 'createDate', width: 160, align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '审核时间', dataIndex: 'auditDate', width: 160, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '审核时间', dataIndex: 'auditTime', width: 160, align: 'center', customRender: function (text) { return text || '--' } },
         { title: '出库单号', scopedSlots: { customRender: 'stockOutNo' }, width: 220, align: 'center' },
         { title: '业务单号', dataIndex: 'outBizNo', width: 220, align: 'center', customRender: function (text) { return text || '--' } },
         { title: '出库类型', dataIndex: 'outBizTypeDictValue', width: 140, align: 'center', customRender: function (text) { return text || '--' } },

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

@@ -119,7 +119,7 @@ export default {
         { title: '下推数量', dataIndex: 'totalQty', width: 100, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
         { title: '下推金额', dataIndex: 'totalAmount', width: 100, align: 'center', customRender: function (text) { return '¥' + (text || 0) } },
         { title: '备货时间', dataIndex: 'stockUpDate', width: 160, align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '出库时间', dataIndex: 'settleDate', width: 160, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '出库时间', dataIndex: 'stockOutDate', width: 160, align: 'center', customRender: function (text) { return text || '--' } },
         { title: '业务状态', dataIndex: 'billStatusDictValue', width: 110, align: 'center' }
       ],
       // 加载数据方法 必须为 Promise 对象