Sfoglia il codice sorgente

Merge commit 'e6d5a0e87738b5711c234d56d4357a4f0c1f3bdd' into HEAD

gitadmin 3 anni fa
parent
commit
0e7789f80d
69 ha cambiato i file con 1248 aggiunte e 1330 eliminazioni
  1. 4 0
      public/version.json
  2. 34 0
      src/api/reportData.js
  3. 1 1
      src/components/Charts/RankList.vue
  4. 1 1
      src/components/DescriptionList/DescriptionList.vue
  5. 1 1
      src/components/GlobalFooter/GlobalFooter.vue
  6. 0 1
      src/components/Menu/menu.js
  7. 13 15
      src/components/MultiTab/MultiTab.vue
  8. 1 1
      src/components/PageHeader/PageHeader.vue
  9. 1 1
      src/components/Result/Result.vue
  10. 1 1
      src/components/SettingDrawer/SettingItem.vue
  11. 2 2
      src/components/global.less
  12. 8 0
      src/components/index.less
  13. 1 1
      src/components/tools/HeadInfo.vue
  14. 148 198
      src/config/router.config.js
  15. 1 1
      src/layouts/UserLayout.vue
  16. 28 0
      src/libs/versionUpdate.js
  17. 3 1
      src/permission.js
  18. 8 1
      src/utils/request.js
  19. 3 3
      src/views/allocationManagement/transferOut/list.vue
  20. 1 1
      src/views/basicData/warehouse/storingLocation/list.vue
  21. 1 1
      src/views/bnSetting/menu/adminMenus.vue
  22. 1 1
      src/views/bnSetting/menu/storeMenus.vue
  23. 2 2
      src/views/common/auditModal.vue
  24. 2 2
      src/views/common/commonModal.vue
  25. 2 2
      src/views/dealerManagement/merchantInfoManagement/list.vue
  26. 41 18
      src/views/financialManagement/financialCollection/list.vue
  27. 1 1
      src/views/financialManagement/inventoryConfirmation/list.vue
  28. 3 3
      src/views/financialManagement/returnConfirmation/list.vue
  29. 3 3
      src/views/financialManagement/warehousingConfirmation/list.vue
  30. 1 1
      src/views/inventoryManagement/inventoryCheck/list.vue
  31. 2 2
      src/views/inventoryManagement/inventoryQuery/list.vue
  32. 2 2
      src/views/inventoryManagement/inventoryQuery/warehouseDetail.vue
  33. 2 2
      src/views/inventoryManagement/inventoryWarning/list.vue
  34. 1 1
      src/views/inventoryManagement/makeInventory/list.vue
  35. 1 1
      src/views/inventoryManagement/supervisionDisk/list.vue
  36. 1 1
      src/views/power/dataDictionary/dataDictionary.vue
  37. 1 1
      src/views/power/menu/menu.vue
  38. 1 1
      src/views/power/register/register.vue
  39. 2 2
      src/views/productManagement/newProduct/list.vue
  40. 2 2
      src/views/productManagement/priceChangeRecord/list.vue
  41. 2 2
      src/views/productManagement/productInfo/list.vue
  42. 2 2
      src/views/productManagement/productLevel/list.vue
  43. 2 2
      src/views/productManagement/productOfflineAudit/list.vue
  44. 2 2
      src/views/productManagement/productPricing/list.vue
  45. 2 2
      src/views/productManagement/productUniversal/list.vue
  46. 2 2
      src/views/promotionRulesManagement/orderStatistics/list.vue
  47. 2 2
      src/views/promotionRulesManagement/productStatistics/list.vue
  48. 1 1
      src/views/purchasingManagement/bulkWarehousingOrder/list.vue
  49. 576 0
      src/views/reportData/allCountryCostReport/list.vue
  50. 0 177
      src/views/reportData/districtTypeSalesDetails/list.vue
  51. 0 440
      src/views/reportData/nationalCustomerCostStatistics/list.vue
  52. 0 193
      src/views/reportData/provinceTypeSalesDetails/list.vue
  53. 295 0
      src/views/reportData/regionTypeSalesReport/list.vue
  54. 0 196
      src/views/reportData/regionalPromotionCostStatistics/list.vue
  55. 1 1
      src/views/result/Error.vue
  56. 4 4
      src/views/result/Success.vue
  57. 2 2
      src/views/salesManagement/examineVerify/list.vue
  58. 3 3
      src/views/salesManagement/outboundOrder/list.vue
  59. 2 2
      src/views/salesManagement/priceInquiry/list.vue
  60. 2 2
      src/views/salesManagement/pushOrderManagement/list.vue
  61. 2 2
      src/views/salesManagement/salesQuery/list.vue
  62. 2 2
      src/views/salesManagement/salesReturn/list.vue
  63. 2 2
      src/views/salesManagement/shortageStatisticsC/list.vue
  64. 2 2
      src/views/salesManagement/shortageStatisticsP/list.vue
  65. 1 1
      src/views/setting/notice/detailModal.vue
  66. 1 1
      src/views/setting/noticeManagement/detailModal.vue
  67. 2 2
      src/views/supplierManagement/associatedProduct/add.vue
  68. 2 2
      src/views/supplierManagement/associatedProductDetails/list.vue
  69. 2 2
      vue.config.js

+ 4 - 0
public/version.json

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

+ 34 - 0
src/api/reportData.js

@@ -419,3 +419,37 @@ export const reportSalesReturnThjdReportExport = (params) => {
     responseType: 'blob'
   })
 }
+// 全国各省类销售明细报表
+export const realReportSalesByProvince = (params) => {
+  return axios({
+    url: '/report/realReportSales/queryListByProvince',
+    data: params,
+    method: 'post'
+  })
+}
+// 导出
+export const realReportSalesByProvinceExport = (params) => {
+  return axios({
+    url: '/report/realReportSales/exportByProvince',
+    data: params,
+    method: 'post',
+    responseType: 'blob'
+  })
+}
+// 全国各区类销售明细报表
+export const realReportSalesBySubArea = (params) => {
+  return axios({
+    url: '/report/realReportSales/queryListBySubArea',
+    data: params,
+    method: 'post'
+  })
+}
+// 导出
+export const realReportSalesBySubAreaExport = (params) => {
+  return axios({
+    url: '/report/realReportSales/exportBySubArea',
+    data: params,
+    method: 'post',
+    responseType: 'blob'
+  })
+}

+ 1 - 1
src/components/Charts/RankList.vue

@@ -42,7 +42,7 @@ export default {
         margin-top: 16px;
 
         span {
-          color: rgba(0, 0, 0, .65);
+          color: rgba(0, 0, 0);
           font-size: 14px;
           line-height: 22px;
 

+ 1 - 1
src/components/DescriptionList/DescriptionList.vue

@@ -122,7 +122,7 @@ export default {
 
       .title {
         font-size: 14px;
-        color: rgba(0, 0, 0, .65);
+        color: rgba(0, 0, 0);
         font-weight: normal;
         margin-bottom: 12px;
       }

+ 1 - 1
src/components/GlobalFooter/GlobalFooter.vue

@@ -45,7 +45,7 @@ export default {
       color: rgba(0, 0, 0, 0.45);
 
       &:hover {
-        color: rgba(0, 0, 0, 0.65);
+        color: rgba(0, 0, 0);
       }
 
       &:not(:last-child) {

+ 0 - 1
src/components/Menu/menu.js

@@ -112,7 +112,6 @@ export default {
           item.meta = Object.assign(item.meta, { hidden: true })
         })
       }
-
       return (
         <Item {...{ key: menu.path }}>
           <tag {...{ props, attrs }}>

+ 13 - 15
src/components/MultiTab/MultiTab.vue

@@ -36,7 +36,6 @@ export default {
       } catch (e) {
       }
     })
-    console.log('rename')
     if (this.pages.length <= this.maxTabNums) {
       this.pages.push(this.$route)
       this.tabsList.push(this.$route.name)
@@ -153,7 +152,7 @@ export default {
   watch: {
     '$route': function (newVal, oldVal) {
       if (newVal.name == oldVal.name) { return }
-      // console.log(newVal, oldVal, this.pages)
+      console.log(newVal, oldVal, this.pages)
       // 解决页面地址相同参数不同时打开多个页签问题(例 详情页id或sn不同时)
       const index = this.tabsList.indexOf(newVal.name)
 
@@ -171,18 +170,18 @@ export default {
       const molen = oldMenu.matched.length < 3
       const oldMatched = oldMenu.matched[molen ? 1 : 2]
       const hasChildren = newMatched.name == oldMatched.name
+      // 判断是否是新增,编辑,详情页
+      const na = newVal.meta.title.indexOf('详情') >= 0
+      const nb = newVal.meta.title.indexOf('新增') >= 0
+      const nc = newVal.meta.title.indexOf('编辑') >= 0
+      const nxt = newVal.meta.replaceTab
+      const oa = oldMenu.meta.title.indexOf('详情') >= 0
+      const ob = oldMenu.meta.title.indexOf('新增') >= 0
+      const oc = oldMenu.meta.title.indexOf('编辑') >= 0
+      const oxt = oldMenu.meta.replaceTab
 
       if (index < 0) { // 不存在
-        // console.log(1, hasChildren, '不存在')
-        // 判断是否是新增,编辑,详情页
-        const na = newVal.meta.title.indexOf('详情') >= 0
-        const nb = newVal.meta.title.indexOf('新增') >= 0
-        const nc = newVal.meta.title.indexOf('编辑') >= 0
-        const nxt = newVal.meta.replaceTab
-        const oa = oldMenu.meta.title.indexOf('详情') >= 0
-        const ob = oldMenu.meta.title.indexOf('新增') >= 0
-        const oc = oldMenu.meta.title.indexOf('编辑') >= 0
-        const oxt = oldMenu.meta.replaceTab
+        console.log(1, hasChildren, '不存在')
         if ((na || nb || nc || nxt || oa || ob || oc || oxt) && hasChildren) {
           // 替换当前页签
           this.replaceTab(newVal, oldMenu)
@@ -212,18 +211,17 @@ export default {
           }
         }
       } else { // 已存在
+        console.log(1, nxt, '已存在')
         this.pages.splice(index, 1, newVal)
         this.tabsList.splice(index, 1, newVal.name)
-        this.$store.state.app.isNewTab = false
+        this.$store.state.app.isNewTab = !!nxt
         if (hasEqChild) {
           this.$store.state.app.updateList = hasEqChild.name == oldVal.name
         }
-        // console.log(1, this.$store.state.app.updateList, '已存在')
         this.activeKey = newVal.name
       }
     },
     activeKey: function (newPathKey) {
-      console.log('-----' + newPathKey)
       const pages = this.pages.find(item => item.name == newPathKey)
       this.$router.push({ name: newPathKey, params: pages.params, query: pages.query })
     }

+ 1 - 1
src/components/PageHeader/PageHeader.vue

@@ -107,7 +107,7 @@ export default {
         font-size: 20px;
         line-height: 28px;
         font-weight: 500;
-        color: rgba(0, 0, 0, 0.85);
+        color: rgba(0, 0, 0);
         margin-bottom: 16px;
         flex: auto;
       }

+ 1 - 1
src/components/Result/Result.vue

@@ -77,7 +77,7 @@ export default {
     }
     .title {
       font-size: 24px;
-      color: rgba(0, 0, 0, .85);
+      color: rgba(0, 0, 0);
       font-weight: 500;
       line-height: 32px;
       margin-bottom: 16px;

+ 1 - 1
src/components/SettingDrawer/SettingItem.vue

@@ -29,7 +29,7 @@ export default {
 
     .setting-drawer-index-title {
       font-size: 14px;
-      color: rgba(0, 0, 0, .85);
+      color: rgba(0, 0, 0);
       line-height: 22px;
       margin-bottom: 12px;
     }

+ 2 - 2
src/components/global.less

@@ -183,7 +183,7 @@ body {
         display: inline-block;
         transition: all 0.3s;
         height: 100%;
-        color: rgba(0, 0, 0, 0.65);
+        color: rgba(0, 0, 0);
 
         &:hover {
           background: rgba(0, 0, 0, 0.025);
@@ -244,7 +244,7 @@ body {
         .header-index-wide {
           .header-index-left {
             .trigger {
-              color: rgba(0, 0, 0, 0.65);
+              color: rgba(0, 0, 0);
             }
           }
         }

+ 8 - 0
src/components/index.less

@@ -413,4 +413,12 @@
       padding-bottom: 8px!important;
     }
   }
+}
+.ant-form-item-label{
+  label{
+    color: #000000!important;
+  }
+}
+.ant-alert-message, .ant-card-head{
+  color: #000000!important;
 }

+ 1 - 1
src/components/tools/HeadInfo.vue

@@ -50,7 +50,7 @@ export default {
       margin-bottom: 4px;
     }
     p {
-      color: rgba(0, 0, 0, .85);
+      color: rgba(0, 0, 0);
       font-size: 24px;
       line-height: 32px;
       margin: 0;

+ 148 - 198
src/config/router.config.js

@@ -979,6 +979,79 @@ export const asyncRouterMap = [
               }
             ]
           },
+          {
+            path: '/reportData/actualSalesReport',
+            redirect: '/reportData/actualSalesReport/list',
+            name: 'actualSalesReport',
+            component: BlankLayout,
+            meta: {
+              title: '实售销售报表',
+              icon: 'profile',
+              permission: 'M_actualSalesReportList'
+            },
+            hideChildrenInMenu: true,
+            children: [
+              {
+                path: 'list',
+                name: 'actualSalesReportList',
+                component: () => import(/* webpackChunkName: "reportData" */ '@/views/reportData/actualSalesReport/list.vue'),
+                meta: {
+                  title: '实售销售列表',
+                  icon: 'profile',
+                  hidden: true,
+                  permission: 'M_actualSalesReportList'
+                }
+              }
+            ]
+          },
+          {
+            path: '/reportData/salesAmountReport',
+            redirect: '/reportData/salesAmountReport/list',
+            name: 'salesAmountReport',
+            component: BlankLayout,
+            meta: {
+              title: '开单销售报表',
+              icon: 'profile',
+              permission: 'M_salesAmountReportList'
+            },
+            hideChildrenInMenu: true,
+            children: [{
+              path: 'list',
+              name: 'salesAmountReportList',
+              component: () => import(/* webpackChunkName: "reportData" */
+                '@/views/reportData/salesAmountReport/list.vue'),
+              meta: {
+                title: '开单销售报表列表',
+                icon: 'profile',
+                hidden: true,
+                permission: 'M_salesAmountReportList'
+              }
+            }]
+          },
+          {
+            path: '/reportData/salesSlipReport',
+            redirect: '/reportData/salesSlipReport/list',
+            name: 'salesSlipReport',
+            component: BlankLayout,
+            meta: {
+              title: '开单销售单报表',
+              icon: 'profile',
+              permission: 'M_salesSlipReportList'
+            },
+            hideChildrenInMenu: true,
+            children: [{
+              path: 'list',
+              name: 'salesSlipReportList',
+              component: () => import(/* webpackChunkName: "reportData" */
+                '@/views/reportData/salesSlipReport/list.vue'),
+              meta: {
+                title: '开单销售单报表列表',
+                icon: 'profile',
+                hidden: true,
+                permission: 'M_salesSlipReportList'
+              }
+            }]
+          },
           {
             path: '/reportData/allocationOrderTotal',
             redirect: '/reportData/allocationOrderTotal/list',
@@ -1079,98 +1152,26 @@ export const asyncRouterMap = [
             }]
           },
           {
-            path: '/reportData/salesSlipReport',
-            redirect: '/reportData/salesSlipReport/list',
-            name: 'salesSlipReport',
-            component: BlankLayout,
-            meta: {
-              title: '开单销售单报表',
-              icon: 'profile',
-              permission: 'M_salesSlipReportList'
-            },
-            hideChildrenInMenu: true,
-            children: [{
-              path: 'list',
-              name: 'salesSlipReportList',
-              component: () => import(/* webpackChunkName: "reportData" */
-                '@/views/reportData/salesSlipReport/list.vue'),
-              meta: {
-                title: '开单销售单报表列表',
-                icon: 'profile',
-                hidden: true,
-                permission: 'M_salesSlipReportList'
-              }
-            }]
-          },
-          {
-            path: '/reportData/returnSlipReport',
-            redirect: '/reportData/returnSlipReport/list',
-            name: 'returnSlipReport',
-            component: BlankLayout,
-            meta: {
-              title: '开单退货单报表',
-              icon: 'profile',
-              permission: 'M_returnSlipReportList'
-            },
-            hideChildrenInMenu: true,
-            children: [{
-              path: 'list',
-              name: 'returnSlipReportList',
-              component: () => import(/* webpackChunkName: "reportData" */
-                '@/views/reportData/returnSlipReport/list.vue'),
-              meta: {
-                title: '开单退货单报表列表',
-                icon: 'profile',
-                hidden: true,
-                permission: 'M_returnSlipReportList'
-              }
-            }]
-          },
-          {
-            path: '/reportData/salesAmountReport',
-            redirect: '/reportData/salesAmountReport/list',
-            name: 'salesAmountReport',
-            component: BlankLayout,
-            meta: {
-              title: '开单销售报表',
-              icon: 'profile',
-              permission: 'M_salesAmountReportList'
-            },
-            hideChildrenInMenu: true,
-            children: [{
-              path: 'list',
-              name: 'salesAmountReportList',
-              component: () => import(/* webpackChunkName: "reportData" */
-                '@/views/reportData/salesAmountReport/list.vue'),
-              meta: {
-                title: '开单销售报表列表',
-                icon: 'profile',
-                hidden: true,
-                permission: 'M_salesAmountReportList'
-              }
-            }]
-          },
-          {
-            path: '/reportData/actualSalesReport',
-            redirect: '/reportData/actualSalesReport/list',
-            name: 'actualSalesReport',
+            path: '/reportData/salesReturnReport',
+            redirect: '/reportData/salesReturnReport/list',
+            name: 'salesReturnReport',
             component: BlankLayout,
             meta: {
-              title: '实售销售报表',
+              title: '实售退货报表',
               icon: 'profile',
-              permission: 'M_actualSalesReportList'
+              permission: 'M_salesReturnReportList'
             },
             hideChildrenInMenu: true,
             children: [
               {
                 path: 'list',
-                name: 'actualSalesReportList',
-                component: () => import(/* webpackChunkName: "reportData" */ '@/views/reportData/actualSalesReport/list.vue'),
+                name: 'salesReturnReportList',
+                component: () => import(/* webpackChunkName: "reportData" */ '@/views/reportData/salesReturnReport/list.vue'),
                 meta: {
-                  title: '实售销售列表',
+                  title: '实售退货列表',
                   icon: 'profile',
                   hidden: true,
-                  permission: 'M_actualSalesReportList'
+                  permission: 'M_salesReturnReportList'
                 }
               }
             ]
@@ -1201,29 +1202,28 @@ export const asyncRouterMap = [
             ]
           },
           {
-            path: '/reportData/salesReturnReport',
-            redirect: '/reportData/salesReturnReport/list',
-            name: 'salesReturnReport',
+            path: '/reportData/returnSlipReport',
+            redirect: '/reportData/returnSlipReport/list',
+            name: 'returnSlipReport',
             component: BlankLayout,
             meta: {
-              title: '实售退货报表',
+              title: '开单退货单报表',
               icon: 'profile',
-              permission: 'M_salesReturnReportList'
+              permission: 'M_returnSlipReportList'
             },
             hideChildrenInMenu: true,
-            children: [
-              {
-                path: 'list',
-                name: 'salesReturnReportList',
-                component: () => import(/* webpackChunkName: "reportData" */ '@/views/reportData/salesReturnReport/list.vue'),
-                meta: {
-                  title: '实售退货列表',
-                  icon: 'profile',
-                  hidden: true,
-                  permission: 'M_salesReturnReportList'
-                }
+            children: [{
+              path: 'list',
+              name: 'returnSlipReportList',
+              component: () => import(/* webpackChunkName: "reportData" */
+                '@/views/reportData/returnSlipReport/list.vue'),
+              meta: {
+                title: '开单退货单报表列表',
+                icon: 'profile',
+                hidden: true,
+                permission: 'M_returnSlipReportList'
               }
-            ]
+            }]
           },
           {
             path: '/reportData/hPriceDifferenceDetailReport',
@@ -1275,6 +1275,31 @@ export const asyncRouterMap = [
               }
             ]
           },
+          {
+            path: '/reportData/regionTypeSalesReport',
+            redirect: '/reportData/regionTypeSalesReport/list',
+            name: 'regionTypeSalesReport',
+            component: BlankLayout,
+            meta: {
+              title: '各省品类实售明细',
+              icon: 'profile',
+              permission: 'M_regionTypeSalesReportList'
+            },
+            hideChildrenInMenu: true,
+            children: [
+              {
+                path: 'list',
+                name: 'regionTypeSalesReportList',
+                component: () => import(/* webpackChunkName: "reportData" */ '@/views/reportData/regionTypeSalesReport/list.vue'),
+                meta: {
+                  title: '各省品类实售明细',
+                  icon: 'profile',
+                  hidden: true,
+                  permission: 'M_regionTypeSalesReportList'
+                }
+              }
+            ]
+          },
           {
             path: '/reportData/warehousingOrder',
             redirect: '/reportData/warehousingOrder/list',
@@ -1399,107 +1424,32 @@ export const asyncRouterMap = [
                 }
               }
             ]
-          },
-          {
-            path: '/reportData/provinceTypeSalesDetails',
-            redirect: '/reportData/provinceTypeSalesDetails/list',
-            name: 'provinceTypeSalesDetails',
-            component: BlankLayout,
-            meta: {
-              title: '全国各省品类实际销售明细',
-              icon: 'profile',
-              permission: 'M_provinceTypeSalesDetailsList'
-            },
-            hideChildrenInMenu: true,
-            children: [
-              {
-                path: 'list',
-                name: 'provinceTypeSalesDetailsList',
-                component: () => import(/* webpackChunkName: "reportData" */ '@/views/reportData/provinceTypeSalesDetails/list.vue'),
-                meta: {
-                  title: '全国各省品类实际销售明细列表',
-                  icon: 'profile',
-                  hidden: true,
-                  permission: 'M_provinceTypeSalesDetailsList'
-                }
-              }
-            ]
-          },
-          {
-            path: '/reportData/districtTypeSalesDetails',
-            redirect: '/reportData/districtTypeSalesDetails/list',
-            name: 'districtTypeSalesDetails',
-            component: BlankLayout,
-            meta: {
-              title: '全国各区品类实际销售明细',
-              icon: 'profile',
-              permission: 'M_districtTypeSalesDetailsList'
-            },
-            hideChildrenInMenu: true,
-            children: [
-              {
-                path: 'list',
-                name: 'districtTypeSalesDetailsList',
-                component: () => import(/* webpackChunkName: "reportData" */ '@/views/reportData/districtTypeSalesDetails/list.vue'),
-                meta: {
-                  title: '全国各区品类实际销售明细列表',
-                  icon: 'profile',
-                  hidden: true,
-                  permission: 'M_districtTypeSalesDetailsList'
-                }
-              }
-            ]
-          },
-          {
-            path: '/reportData/regionalPromotionCostStatistics',
-            redirect: '/reportData/regionalPromotionCostStatistics/list',
-            name: 'regionalPromotionCostStatistics',
-            component: BlankLayout,
-            meta: {
-              title: '区域促销费用统计',
-              icon: 'profile',
-              permission: 'M_regionalPromotionCostStatisticsList'
-            },
-            hideChildrenInMenu: true,
-            children: [
-              {
-                path: 'list',
-                name: 'regionalPromotionCostStatisticsList',
-                component: () => import(/* webpackChunkName: "reportData" */ '@/views/reportData/regionalPromotionCostStatistics/list.vue'),
-                meta: {
-                  title: '区域促销费用统计列表',
-                  icon: 'profile',
-                  hidden: true,
-                  permission: 'M_regionalPromotionCostStatisticsList'
-                }
-              }
-            ]
-          },
-          {
-            path: '/reportData/nationalCustomerCostStatistics',
-            redirect: '/reportData/nationalCustomerCostStatistics/list',
-            name: 'nationalCustomerCostStatistics',
-            component: BlankLayout,
-            meta: {
-              title: '全国客户费用统计',
-              icon: 'profile',
-              permission: 'M_nationalCustomerCostStatisticsList'
-            },
-            hideChildrenInMenu: true,
-            children: [
-              {
-                path: 'list',
-                name: 'nationalCustomerCostStatisticsList',
-                component: () => import(/* webpackChunkName: "reportData" */ '@/views/reportData/nationalCustomerCostStatistics/list.vue'),
-                meta: {
-                  title: '全国客户费用统计列表',
-                  icon: 'profile',
-                  hidden: true,
-                  permission: 'M_nationalCustomerCostStatisticsList'
-                }
-              }
-            ]
           }
+          // {
+          //   path: '/reportData/allCountryCostReport',
+          //   redirect: '/reportData/allCountryCostReport/list',
+          //   name: 'allCountryCostReport',
+          //   component: BlankLayout,
+          //   meta: {
+          //     title: '全国费用统计报表',
+          //     icon: 'profile'
+          //     // permission: 'M_nationalCustomerCostStatisticsList'
+          //   },
+          //   hideChildrenInMenu: true,
+          //   children: [
+          //     {
+          //       path: 'list',
+          //       name: 'allCountryCostReportList',
+          //       component: () => import(/* webpackChunkName: "reportData" */ '@/views/reportData/allCountryCostReport/list.vue'),
+          //       meta: {
+          //         title: '全国费用统计报表',
+          //         icon: 'profile',
+          //         hidden: true
+          //         // permission: 'M_nationalCustomerCostStatisticsList'
+          //       }
+          //     }
+          //   ]
+          // }
         ]
       },
       // 数据导出

+ 1 - 1
src/layouts/UserLayout.vue

@@ -107,7 +107,7 @@ export default {
 
 				.title {
 					font-size: 33px;
-					color: rgba(0, 0, 0, 0.85);
+					color: rgba(0, 0, 0);
 					font-family: Avenir, 'Helvetica Neue', Arial, Helvetica, sans-serif;
 					font-weight: 600;
 					position: relative;

+ 28 - 0
src/libs/versionUpdate.js

@@ -0,0 +1,28 @@
+import axios from 'axios'
+import modal from 'ant-design-vue/es/modal'
+const isNewVersion = () => {
+  const url = `//${window.location.host}/version.json?t=${new Date().getTime()}`
+  axios.get(url).then(res => {
+    if (res.status === 200) {
+      const vueVersion = res.data.version
+      const message = res.data.message
+      const localVueVersion = localStorage.getItem('vueVersion-ocs')
+      if (localVueVersion && localVueVersion != vueVersion) {
+        localStorage.setItem('vueVersion-ocs', vueVersion)
+        modal.info({
+          title: '提示',
+          content: message,
+          onOk () {
+            window.location.reload()
+          }
+        })
+      } else {
+        localStorage.setItem('vueVersion-ocs', vueVersion)
+      }
+    }
+  })
+}
+
+export default {
+  isNewVersion
+}

+ 3 - 1
src/permission.js

@@ -7,13 +7,15 @@ import '@/components/NProgress/nprogress.less' // progress bar custom style
 import notification from 'ant-design-vue/es/notification'
 import { setDocumentTitle, domTitle } from '@/utils/domUtil'
 import { ACCESS_TOKEN } from '@/store/mutation-types'
-
+import versionTood from '@/libs/versionUpdate'
 NProgress.configure({ showSpinner: false }) // NProgress Configuration
 
 const whiteList = ['login', 'register', 'registerResult'] // no redirect whitelist
 const defaultRoutePath = '/home'
 
 router.beforeEach((to, from, next) => {
+  // 判断当前代码版本是否与服务器中代码版本一致,如不一致则刷新页面获取最新
+  versionTood.isNewVersion()
   NProgress.start() // start progress bar
   to.meta && (typeof to.meta.title !== 'undefined' && setDocumentTitle(`${to.meta.title} - ${domTitle}`))
   let token = store.state.user.token || sessionStorage.getItem(ACCESS_TOKEN)

+ 8 - 1
src/utils/request.js

@@ -62,13 +62,20 @@ service.interceptors.response.use((response) => {
       }
     })
   }
-  if ((response.data.status == '401' || response.data.status == '900' || response.data.status == '500') && window.location.pathname != '/user/login') {
+  if ((response.data.status == '401' || response.data.status == '500') && window.location.pathname != '/user/login') {
     notification.destroy()
     notification.error({
       message: '提示',
       description: response.data.message
     })
   }
+  if (response.data.status == '900' && window.location.pathname != '/user/login') {
+    notification.destroy()
+    notification.error({
+      message: response.data.message,
+      description: response.data.code
+    })
+  }
   return response.data
 }, err)
 

+ 3 - 3
src/views/allocationManagement/transferOut/list.vue

@@ -301,9 +301,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()
@@ -338,6 +338,6 @@ export default {
 		cursor: pointer;
 	}
 	.common{
-		color: rgba(0, 0, 0, 0.65);
+		color: rgba(0, 0, 0);
 	}
 </style>

+ 1 - 1
src/views/basicData/warehouse/storingLocation/list.vue

@@ -5,7 +5,7 @@
         <!-- 自定义的二级文字标题 -->
         <template slot="subTitle">
           <a id="storingLocationList-back-btn" href="javascript:;" @click="handleBack"><a-icon type="left" /> 返回列表</a>
-          <strong style="color: rgba(0, 0, 0, 0.65);margin-left: 50px;">所属仓库:{{ $route.query.name }}</strong>
+          <strong style="color: rgba(0, 0, 0);margin-left: 50px;">所属仓库:{{ $route.query.name }}</strong>
         </template>
       </a-page-header>
       <a-card size="small" :bordered="false" class="storingLocationList-cont">

+ 1 - 1
src/views/bnSetting/menu/adminMenus.vue

@@ -449,7 +449,7 @@ export default {
     border-radius: 5px;
     padding: 5px 10px 5px 20px;
     margin: 10px 0;
-    color: rgba(0, 0, 0, 0.85);
+    color: rgba(0, 0, 0);
   }
   .imgSize{
     color: #2d8cf0;

+ 1 - 1
src/views/bnSetting/menu/storeMenus.vue

@@ -486,7 +486,7 @@ export default {
     border-radius: 5px;
     padding: 5px 10px 5px 20px;
     margin: 10px 0;
-    color: rgba(0, 0, 0, 0.85);
+    color: rgba(0, 0, 0);
   }
   .imgSize{
     color: #2d8cf0;

+ 2 - 2
src/views/common/auditModal.vue

@@ -91,7 +91,7 @@ export default {
       display: flex;
       .audit-cont{
         .audit-tit{
-          color: rgba(0, 0, 0, 0.85);
+          color: rgba(0, 0, 0);
           font-weight: 500;
           font-size: 16px;
           line-height: 1.4;
@@ -99,7 +99,7 @@ export default {
         }
         .audit-txt{
           margin: 8px 0 0;
-          color: rgba(0, 0, 0, 0.65);
+          color: rgba(0, 0, 0);
           font-size: 14px;
           line-height: 1.5;
         }

+ 2 - 2
src/views/common/commonModal.vue

@@ -90,7 +90,7 @@ export default {
       display: flex;
       .common-cont{
         .common-tit{
-          color: rgba(0, 0, 0, 0.85);
+          color: rgba(0, 0, 0);
           font-weight: 500;
           font-size: 16px;
           line-height: 1.4;
@@ -98,7 +98,7 @@ export default {
         }
         .common-txt{
           margin: 8px 0 0;
-          color: rgba(0, 0, 0, 0.65);
+          color: rgba(0, 0, 0);
           font-size: 14px;
           line-height: 1.5;
         }

+ 2 - 2
src/views/dealerManagement/merchantInfoManagement/list.vue

@@ -278,9 +278,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()

+ 41 - 18
src/views/financialManagement/financialCollection/list.vue

@@ -11,22 +11,32 @@
               </a-form-item>
             </a-col>
             <a-col :md="6" :sm="24">
-              <a-form-item label="经销商名称">
-                <a-input id="financialCollectionList-settleClientName" v-model.trim="queryParam.settleClientName" allowClear placeholder="请输入经销商名称"/>
+              <a-form-item label="销售单号">
+                <a-input id="financialCollectionList-bizNo" v-model.trim="queryParam.bizNo" allowClear placeholder="请输入销售单号"/>
               </a-form-item>
             </a-col>
             <a-col :md="6" :sm="24">
-              <a-form-item label="商户级别">
-                <v-select
-                  v-model="queryParam.dealerLevel"
-                  ref="dealerLevel"
-                  id="financialCollectionList-dealerLevel"
-                  code="DEALER_LEVEL"
-                  placeholder="请选择商户级别"
-                  allowClear></v-select>
+              <a-form-item label="备货单号">
+                <a-input id="financialCollectionList-dispatchBillNo" v-model.trim="queryParam.dispatchBillNo" allowClear placeholder="请输入备货单号"/>
               </a-form-item>
             </a-col>
             <template v-if="advanced">
+              <a-col :md="6" :sm="24">
+                <a-form-item label="经销商名称">
+                  <a-input id="financialCollectionList-settleClientName" v-model.trim="queryParam.settleClientName" allowClear placeholder="请输入经销商名称"/>
+                </a-form-item>
+              </a-col>
+              <a-col :md="6" :sm="24">
+                <a-form-item label="商户级别">
+                  <v-select
+                    v-model="queryParam.dealerLevel"
+                    ref="dealerLevel"
+                    id="financialCollectionList-dealerLevel"
+                    code="DEALER_LEVEL"
+                    placeholder="请选择商户级别"
+                    allowClear></v-select>
+                </a-form-item>
+              </a-col>
               <a-col :md="6" :sm="24">
                 <a-form-item label="收款方式">
                   <v-select
@@ -65,6 +75,17 @@
                     allowClear></v-select>
                 </a-form-item>
               </a-col>
+              <a-col :md="6" :sm="24">
+                <a-form-item label="单据状态">
+                  <v-select
+                    v-model="queryParam.voidFlag"
+                    ref="voidFlag"
+                    id="financialCollectionList-voidFlag"
+                    code="VOID_FLAG"
+                    placeholder="请选择单据状态"
+                    allowClear></v-select>
+                </a-form-item>
+              </a-col>
               <a-col :md="6" :sm="24">
                 <a-form-item label="收款时间">
                   <rangeDate ref="rangeSettleDate" @change="dateSettleChange" />
@@ -130,10 +151,6 @@
           <span :class="$hasPermissions('B_dispatchDetail')?'active':'common'" v-if="$hasPermissions('B_dispatchDetail')" @click="handleBhDetail(record)">{{ record.dispatchBillNo || '--' }}</span>
           <span v-else>{{ record.dispatchBillNo || '--' }}</span>
         </template>
-        <!-- 单据状态 -->
-        <template slot="voidFlag" slot-scope="text, record">
-          <span>{{ record.voidFlag==1 ? '作废' : record.voidFlag==0 ? '有效' : '--' }}</span>
-        </template>
         <!-- 操作 -->
         <template slot="action" slot-scope="text, record">
           <a-button
@@ -167,6 +184,8 @@ export default {
       queryParam: { //  查询条件
         beginDate: getDate.getThreeMonthDays().starttime + ' 00:00:00',
         endDate: getDate.getCurrMonthDays().endtime + ' 23:59:59',
+        bizNo: '',
+        dispatchBillNo: '',
         beginDateSettle: '',
         endDateSettle: '',
         settleClientName: '',
@@ -175,6 +194,7 @@ export default {
         subareaSn: undefined,
         billStatus: undefined,
         settleState: undefined,
+        voidFlag: undefined,
         dealerProvinceSn: undefined,
         dealerCitySn: undefined,
         dealerCountySn: undefined
@@ -226,7 +246,7 @@ export default {
         { title: '备注', dataIndex: 'remark', width: '7%', align: 'center', customRender: function (text) { return text || '--' }, ellipsis: true },
         { title: '业务状态', dataIndex: 'billStatusDictValue', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '财务状态', dataIndex: 'settleStateDictValue', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '单据状态', dataIndex: 'voidFlag', scopedSlots: { customRender: 'voidFlag' }, width: '6%', align: 'center' },
+        { title: '单据状态', dataIndex: 'voidFlagDictValue', width: '6%', align: 'center', customRender: function (text) { return text || '--' } },
         { title: '操作', scopedSlots: { customRender: 'action' }, width: '4%', align: 'center' }
       ]
       if (this.$hasPermissions('B_isShowPrice')) { //  售价权限
@@ -254,6 +274,8 @@ export default {
       }
       this.queryParam.beginDate = getDate.getThreeMonthDays().starttime + ' 00:00:00'
       this.queryParam.endDate = getDate.getCurrMonthDays().endtime + ' 23:59:59'
+      this.queryParam.bizNo = ''
+      this.queryParam.dispatchBillNo = ''
       this.queryParam.beginDateSettle = ''
       this.queryParam.endDateSettle = ''
       this.queryParam.settleClientName = ''
@@ -262,6 +284,7 @@ export default {
       this.queryParam.subareaSn = undefined
       this.queryParam.billStatus = undefined
       this.queryParam.settleState = undefined
+      this.queryParam.voidFlag = undefined
       this.queryParam.dealerProvinceSn = undefined
       this.queryParam.dealerCitySn = undefined
       this.queryParam.dealerCountySn = undefined
@@ -356,9 +379,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()
@@ -395,7 +418,7 @@ export default {
       cursor: pointer;
     }
     .common{
-      color: rgba(0, 0, 0, 0.65);
+      color: rgba(0, 0, 0);
     }
   }
 </style>

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

@@ -238,7 +238,7 @@ export default {
       cursor: pointer;
     }
     .common{
-      color: rgba(0, 0, 0, 0.65);
+      color: rgba(0, 0, 0);
     }
     // tab样式
     .inventoryConfirmationList-tabs.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-nav-container{

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

@@ -234,9 +234,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()
@@ -273,7 +273,7 @@ export default {
       cursor: pointer;
     }
     .common{
-      color: rgba(0, 0, 0, 0.65);
+      color: rgba(0, 0, 0);
     }
   }
 </style>

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

@@ -297,7 +297,7 @@ export default {
 		cursor: pointer;
 	}
 	.common{
-		color: rgba(0, 0, 0, 0.65);
+		color: rgba(0, 0, 0);
 	}
   .confirmation-modal{
     .ant-modal-body{
@@ -307,7 +307,7 @@ export default {
       display: flex;
       .confirmation-cont{
         .confirmation-tit{
-          color: rgba(0, 0, 0, 0.85);
+          color: rgba(0, 0, 0);
           font-weight: 500;
           font-size: 16px;
           line-height: 1.4;
@@ -315,7 +315,7 @@ export default {
         }
         .confirmation-txt{
           margin: 8px 0 0;
-          color: rgba(0, 0, 0, 0.65);
+          color: rgba(0, 0, 0);
           font-size: 14px;
           line-height: 1.5;
         }

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

@@ -275,7 +275,7 @@ export default {
       cursor: pointer;
     }
     .common{
-      color: rgba(0, 0, 0, 0.65);
+      color: rgba(0, 0, 0);
     }
     // tab样式
     .inventoryCheckList-tabs.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-nav-container{

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

@@ -311,9 +311,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()

+ 2 - 2
src/views/inventoryManagement/inventoryQuery/warehouseDetail.vue

@@ -267,9 +267,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()

+ 2 - 2
src/views/inventoryManagement/inventoryWarning/list.vue

@@ -394,9 +394,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()

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

@@ -152,7 +152,7 @@ export default {
       cursor: pointer;
     }
     .common{
-      color: rgba(0, 0, 0, 0.65);
+      color: rgba(0, 0, 0);
     }
   }
 </style>

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

@@ -155,7 +155,7 @@ export default {
       cursor: pointer;
     }
     .common{
-      color: rgba(0, 0, 0, 0.65);
+      color: rgba(0, 0, 0);
     }
   }
 </style>

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

@@ -398,7 +398,7 @@ export default {
     border-radius: 5px;
     padding: 5px 10px 5px 20px;
     margin: 10px 0;
-    color: rgba(0, 0, 0, 0.85);
+    color: rgba(0, 0, 0);
   }
   .imgSize{
     color: #2d8cf0;

+ 1 - 1
src/views/power/menu/menu.vue

@@ -450,7 +450,7 @@ export default {
     border-radius: 5px;
     padding: 5px 10px 5px 20px;
     margin: 10px 0;
-    color: rgba(0, 0, 0, 0.85);
+    color: rgba(0, 0, 0);
   }
   .imgSize{
     color: #2d8cf0;

+ 1 - 1
src/views/power/register/register.vue

@@ -421,7 +421,7 @@ export default {
     border-radius: 5px;
     padding: 5px 10px 5px 20px;
     margin: 10px 0;
-    color: rgba(0, 0, 0, 0.85);
+    color: rgba(0, 0, 0);
   }
   .imgSize{
     color: #2d8cf0;

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

@@ -228,9 +228,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()

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

@@ -344,9 +344,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()

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

@@ -583,9 +583,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()

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

@@ -247,9 +247,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()

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

@@ -296,9 +296,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()

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

@@ -283,9 +283,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()

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

@@ -224,9 +224,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()

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

@@ -240,9 +240,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()

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

@@ -250,9 +250,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()

+ 1 - 1
src/views/purchasingManagement/bulkWarehousingOrder/list.vue

@@ -362,7 +362,7 @@ export default {
       cursor: pointer;
     }
     .common{
-      color: rgba(0, 0, 0, 0.65);
+      color: rgba(0, 0, 0);
     }
   }
 </style>

+ 576 - 0
src/views/reportData/allCountryCostReport/list.vue

@@ -0,0 +1,576 @@
+<template>
+  <a-card>
+    <a-spin :spinning="spinning" tip="Loading...">
+      <a-tabs v-model="activeKey" type="card" @change="callback">
+        <a-tab-pane :key="item.id" :tab="item.name" v-for="item in tabsList">
+        </a-tab-pane>
+      </a-tabs>
+
+      <div class="table-page-search-wrapper">
+        <a-form-model
+          id="returnGoodsPresentationList-form"
+          ref="ruleForm"
+          class="form-model-con"
+          layout="inline"
+          :rules="rules"
+          :model="queryParam"
+          @keyup.enter.native="handleSearch">
+          <a-row :gutter="15">
+            <!-- <a-col :md="6" :sm="24">
+              <a-form-model-item label="创建时间" prop="time">
+                <a-date-picker
+                  style="width:100%"
+                  placeholder="请选择年份"
+                  format="YYYY"
+                  mode="year"
+                  :disabledDate="disabledDate"
+                  @change="onChange"
+                  :value="year"
+                  :open="open"
+                  @openChange="openChange"
+                  @panelChange="panelChange"
+                />
+              </a-form-model-item>
+            </a-col> -->
+            <a-col :md="6" :sm="24">
+              <a-form-model-item label="所在区域">
+                <subarea id="returnGoodsPresentationList-subareaSn" v-model="queryParam.dealer.subareaSn"></subarea>
+              </a-form-model-item>
+            </a-col>
+            <a-col :md="6" :sm="24" v-if="activeKey == 0">
+              <a-form-model-item prop="dealerProvinceSn" style="margin: 0;" label="地区">
+                <a-select v-model="queryParam.dealer.provinceSn" allowClear 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-model-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-button type="primary" @click="handleSearch" :disabled="disabled" id="returnGoodsPresentationList-refresh">查询</a-button>
+              <a-button style="margin-left: 5px" @click="resetSearchForm" :disabled="disabled" id="returnGoodsPresentationList-reset">重置</a-button>
+              <a-button
+                style="margin-left: 5px"
+                type="primary"
+                class="button-warning"
+                @click="handleExport"
+                :disabled="disabled"
+                :loading="exportLoading"
+                v-if="$hasPermissions('B_returnGoodsPresentationExport')"
+                id="returnGoodsPresentationList-export">导出</a-button>
+            </a-col>
+          </a-row>
+        </a-form-model>
+      </div>
+      <!-- 列表 -->
+      <s-table
+        class="sTable"
+        ref="table"
+        size="small"
+        :defaultLoadData="false"
+        :rowKey="(record) => record.id"
+        :columns="columns"
+        :showPagination="false"
+        :data="loadData"
+        :scroll="{ x: 2370 }"
+        bordered>
+        <template slot="footer">
+          <a-row>
+            <a-col span="2">合计:</a-col>
+            <a-col span="22">
+              <a-row>
+                <a-col span="4">1月:{{ (totalData && (totalData.jpYgpAmount || totalData.jpYgpAmount==0)) ? totalData.jpYgpAmount : '--' }}</a-col>
+                <a-col span="4">2月:{{ (totalData && (totalData.jpLbAmount || totalData.jpLbAmount==0)) ? totalData.jpLbAmount : '--' }}</a-col>
+                <a-col span="4">3月:{{ (totalData && (totalData.jpScpAmount || totalData.jpScpAmount==0)) ? totalData.jpScpAmount : '--' }}</a-col>
+                <a-col span="4">4月:{{ (totalData && (totalData.jpGyxAmount || totalData.jpGyxAmount==0)) ? totalData.jpGyxAmount : '--' }}</a-col>
+                <a-col span="4">5月:{{ (totalData && (totalData.gpYgpAmount || totalData.gpYgpAmount==0)) ? totalData.gpYgpAmount : '--' }}</a-col>
+                <a-col span="4">6月:{{ (totalData && (totalData.gpLqqAmount || totalData.gpLqqAmount==0)) ? totalData.gpLqqAmount : '--' }}</a-col>
+                <a-col span="4">7月:{{ (totalData && (totalData.gpScpAmount || totalData.gpScpAmount==0)) ? totalData.gpScpAmount : '--' }}</a-col>
+                <a-col span="4">8月:{{ (totalData && (totalData.gpScpAmount || totalData.gpScpAmount==0)) ? totalData.gpScpAmount : '--' }}</a-col>
+                <a-col span="4">9月:{{ (totalData && (totalData.gpScpAmount || totalData.gpScpAmount==0)) ? totalData.gpScpAmount : '--' }}</a-col>
+                <a-col span="4">10月:{{ (totalData && (totalData.gpScpAmount || totalData.gpScpAmount==0)) ? totalData.gpScpAmount : '--' }}</a-col>
+                <a-col span="4">11月:{{ (totalData && (totalData.gpScpAmount || totalData.gpScpAmount==0)) ? totalData.gpScpAmount : '--' }}</a-col>
+                <a-col span="4">12月:{{ (totalData && (totalData.gpScpAmount || totalData.gpScpAmount==0)) ? totalData.gpScpAmount : '--' }}</a-col>
+                <a-col span="4">1-12月费用:{{ (totalData && (totalData.hjAmount || totalData.hjAmount==0)) ? totalData.hjAmount : '--' }}</a-col>
+                <a-col span="4">实际销售额:{{ (totalData && (totalData.dlsAmount || totalData.dlsAmount==0)) ? totalData.dlsAmount : '--' }}</a-col>
+                <a-col span="4">费用占比(%):{{ (totalData && (totalData.wsAmount || totalData.wsAmount==0)) ? totalData.wsAmount : '--' }}</a-col>
+                <a-col span="4">正常配送品费用:{{ (totalData && (totalData.wsAmount || totalData.wsAmount==0)) ? totalData.wsAmount : '--' }}</a-col>
+                <a-col span="4">正常促销品费用:{{ (totalData && (totalData.wsAmount || totalData.wsAmount==0)) ? totalData.wsAmount : '--' }}</a-col>
+                <a-col span="4">特殊申请配送品费用:{{ (totalData && (totalData.tbuAmount || totalData.tbuAmount==0)) ? totalData.tbuAmount : '--' }}</a-col>
+                <a-col span="4">特殊申请促销品费用:{{ (totalData && (totalData.tbupAmount || totalData.tbupAmount==0)) ? totalData.tbupAmount : '--' }}</a-col>
+              </a-row>
+            </a-col>
+          </a-row>
+        </template>
+      </s-table>
+    </a-spin>
+  </a-card>
+</template>
+
+<script>
+import { STable, VSelect } from '@/components'
+import rangeDate from '@/views/common/rangeDate.vue'
+import { getArea } from '@/api/data'
+import subarea from '@/views/common/subarea.js'
+import { reportSalesReturnThjdReportList } from '@/api/reportData'
+import moment from 'moment'
+import reportData from '@/libs/reportData.js'
+export default {
+  components: { STable, VSelect, rangeDate, subarea, moment },
+  data () {
+    return {
+      spinning: false,
+      tabsList: [{ id: 0, name: '全国客户费用统计' }, { id: 1, name: '区域促销费用统计' }],
+      activeKey: 0,
+      open: false,
+      year: '',
+      queryParam: {
+        time: [],
+        beginDate: '',
+        endDate: '',
+        dealer: {
+          'dealerName': '',
+          'provinceSn': undefined,
+          'citySn': undefined,
+          'districtSn': undefined,
+          'subareaSn': undefined,
+          'dealerLevel': undefined
+        }
+      },
+      addrProvinceList: [], //  省下拉
+      disabled: false, //  查询、重置按钮是否可操作
+      exportLoading: false,
+      rules: {
+        'time': [{ required: true, message: '请选择月份', trigger: 'change' }]
+      },
+      // 加载数据方法 必须为 Promise 对象
+      loadData: parameter => {
+        const _this = this
+        _this.disabled = true
+        _this.spinning = true
+        return new Promise(function (resolve, reject) {
+          const data = {
+            list: reportData.nationalCustomerCostStatisticsList
+          }
+          for (var i = 0; i < data.list.length; i++) {
+            data.list[i].no = i + 1
+          }
+          _this.spinning = false
+          _this.disabled = false
+          resolve(data)
+        })
+
+        // const paramsPage = Object.assign(this.queryParam) //  有分页
+        // return reportSalesReturnThjdReportList(paramsPage).then(res => {
+        //   let data
+        //   if (res.status == 200) {
+        //     data = res.data
+        //     // this.getCount(paramsPage)
+        //     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
+        //   }
+        //   this.spinning = false
+        //   return data
+        // })
+      },
+      totalData: null
+    }
+  },
+  computed: {
+    columns () {
+      const arr = [
+        {
+          title: '区域',
+          dataIndex: 'area',
+          width: 200,
+          align: 'center',
+          customRender: function (text) {
+            return text || '--'
+          }
+        },
+        {
+          title: '客户名称',
+          dataIndex: '',
+          align: 'center',
+          customRender: function (text) {
+            return text || '--'
+          },
+          ellipsis: true
+        },
+        {
+          title: '费用类型',
+          dataIndex: '',
+          width: 120,
+          align: 'center',
+          customRender: function (text) {
+            return ((text || text == 0) ? text : '--')
+          }
+        },
+        {
+          title: '1月',
+          dataIndex: '',
+          width: 120,
+          align: 'center',
+          customRender: function (text) {
+            return ((text || text == 0) ? text : '--')
+          }
+        },
+        {
+          title: '2月',
+          dataIndex: '',
+          width: 120,
+          align: 'center',
+          customRender: function (text) {
+            return ((text || text == 0) ? text : '--')
+          }
+        },
+        {
+          title: '3月',
+          dataIndex: '',
+          width: 120,
+          align: 'center',
+          customRender: function (text) {
+            return ((text || text == 0) ? text : '--')
+          }
+        },
+        {
+          title: '4月',
+          dataIndex: '',
+          width: 120,
+          align: 'center',
+          customRender: function (text) {
+            return ((text || text == 0) ? text : '--')
+          }
+        },
+        {
+          title: '5月',
+          dataIndex: '',
+          width: 120,
+          align: 'center',
+          customRender: function (text) {
+            return ((text || text == 0) ? text : '--')
+          }
+        },
+        {
+          title: '6月',
+          dataIndex: '',
+          width: 120,
+          align: 'center',
+          customRender: function (text) {
+            return ((text || text == 0) ? text : '--')
+          }
+        },
+        {
+          title: '7月',
+          dataIndex: '',
+          width: 120,
+          align: 'center',
+          customRender: function (text) {
+            return ((text || text == 0) ? text : '--')
+          }
+        },
+        {
+          title: '8月',
+          dataIndex: '',
+          width: 120,
+          align: 'center',
+          customRender: function (text) {
+            return ((text || text == 0) ? text : '--')
+          }
+        },
+        {
+          title: '9月',
+          dataIndex: '',
+          width: 120,
+          align: 'center',
+          customRender: function (text) {
+            return ((text || text == 0) ? text : '--')
+          }
+        },
+        {
+          title: '10月',
+          dataIndex: '',
+          width: 120,
+          align: 'center',
+          customRender: function (text) {
+            return ((text || text == 0) ? text : '--')
+          }
+        },
+        {
+          title: '11月',
+          dataIndex: '',
+          width: 120,
+          align: 'center',
+          customRender: function (text) {
+            return ((text || text == 0) ? text : '--')
+          }
+        },
+        {
+          title: '12月',
+          dataIndex: '',
+          width: 120,
+          align: 'center',
+          customRender: function (text) {
+            return ((text || text == 0) ? text : '--')
+          }
+        },
+        {
+          title: '1-12月费用合计',
+          dataIndex: '',
+          width: 140,
+          align: 'center',
+          customRender: function (text) {
+            return ((text || text == 0) ? text : '--')
+          }
+        },
+        {
+          title: '实际销售额合计',
+          dataIndex: '',
+          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: '',
+          width: 140,
+          align: 'center',
+          customRender: function (text) {
+            return ((text || text == 0) ? text : '--')
+          }
+        },
+        {
+          title: '正常配送品费用',
+          dataIndex: '',
+          width: 120,
+          align: 'center',
+          customRender: function (text) {
+            return ((text || text == 0) ? text : '--')
+          }
+        },
+        {
+          title: '正常促销品费用',
+          dataIndex: '',
+          width: 120,
+          align: 'center',
+          customRender: function (text) {
+            return ((text || text == 0) ? text : '--')
+          }
+        },
+        {
+          title: '特殊申请配送品费用',
+          dataIndex: '',
+          width: 120,
+          align: 'center',
+          customRender: function (text) {
+            return ((text || text == 0) ? text : '--')
+          }
+        },
+        {
+          title: '特殊申请促销品费用',
+          dataIndex: '',
+          width: 120,
+          align: 'center',
+          customRender: function (text) {
+            return ((text || text == 0) ? text : '--')
+          }
+        }
+      ]
+      if (this.activeKey == 0) {
+        arr.splice(1, 0, { title: '省份', dataIndex: 'province', width: 90, align: 'center', customRender: function (text) { return text || '--' } })
+      }
+      return arr
+    }
+  },
+  methods: {
+    callback (key) {
+      this.activeKey = key
+      console.log(key, this.activeKey)
+    },
+    onChange (date, dateString) {
+      console.log(date, dateString)
+    },
+    openChange (status) {
+      if (status) {
+        this.open = true
+      } else {
+        this.open = false
+      }
+    },
+    panelChange (value) {
+      this.year = value
+      this.open = false
+    },
+    // 禁止选择的年份
+    disabledDate (currentDate) {
+      console.log(currentDate)
+      return currentDate && currentDate < moment().endOf('year')
+    },
+    // 分页
+
+    // 查询省
+    getProvinceData (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) {
+          console.log(res, '=============地区')
+          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 = []
+          }
+        }
+      })
+    },
+    //  创建时间  change
+    dateChange (date) {
+      if (date[0] && date[1]) {
+        this.queryParam.time = date
+      } else {
+        this.queryParam.time = []
+      }
+      this.queryParam.beginDate = date[0] || ''
+      this.queryParam.endDate = date[1] || ''
+    },
+    // 查询
+    handleSearch () {
+      const _this = this
+      this.$refs.ruleForm.validate(valid => {
+        if (valid) {
+          _this.$refs.table.refresh(true)
+        } else {
+          return false
+        }
+      })
+    },
+    //  重置
+    resetSearchForm () {
+      this.queryParam.time = []
+      this.$refs.rangeDate.resetDate(this.queryParam.time)
+      this.queryParam.beginDate = ''
+      this.queryParam.endDate = ''
+      this.queryParam.dealer = {
+        'dealerName': '',
+        'provinceSn': undefined,
+        'citySn': undefined,
+        'districtSn': undefined,
+        'subareaSn': undefined,
+        'dealerLevel': undefined
+      }
+      this.totalData = null
+      this.$refs.ruleForm.resetFields()
+      this.$refs.table.clearTable()
+    },
+    //  导出
+    handleExport () {
+      const _this = this
+      this.$refs.ruleForm.validate(valid => {
+        if (valid) {
+          const params = _this.queryParam
+          _this.exportLoading = true
+          _this.spinning = true
+          hdExportExcel(reportRebateExport, params, '全国各省品类实际销售明细报表', function () {
+            _this.exportLoading = false
+            _this.spinning = false
+          })
+        } else {
+          return false
+        }
+      })
+    },
+    pageInit () {
+      this.activeKey = 0
+      this.getProvinceData('province')
+    }
+  },
+  mounted () {
+    if (!this.$store.state.app.isNewTab) { // 页签刷新时调用
+      this.pageInit()
+      // this.resetSearchForm()
+    }
+  },
+  activated () {
+    // 如果是新页签打开,则重置当前页面
+    if (this.$store.state.app.isNewTab) {
+      this.pageInit()
+      // this.resetSearchForm()
+    }
+  },
+  beforeRouteEnter (to, from, next) {
+    next(vm => {})
+  }
+}
+</script>
+
+<style style="less">
+  .regionTypeSalesReportList-wrap{
+
+  }
+</style>

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

@@ -1,177 +0,0 @@
-<template>
-  <a-card size="small" :bordered="false" class="districtTypeSalesDetailsList-wrap">
-    <!-- 搜索条件 -->
-    <div class="table-page-search-wrapper">
-      <a-form-model
-        ref="ruleForm"
-        class="form-model-con"
-        layout="inline"
-        :rules="rules"
-        :model="queryParam"
-        @keyup.enter.native="$refs.table.refresh(true)">
-        <a-row :gutter="15">
-          <a-col :md="6" :sm="24">
-            <a-form-model-item label="创建时间" prop="time">
-              <rangeDate ref="rangeDate" :value="queryParam.time" @change="dateChange" />
-            </a-form-model-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-model>
-    </div>
-    <!-- 列表 -->
-    <s-table
-      class="sTable"
-      ref="table"
-      size="small"
-      :rowKey="(record) => record.id"
-      :columns="columns"
-      :data="loadData"
-      :scroll="{ x: 3450 }"
-      :defaultLoadData="false"
-      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 getDate from '@/libs/getDate.js'
-// import { allocateBillList, allocateBillDel, allocateBillAudit, allocateBillExport } from '@/api/allocateBill'
-// import { allocateTypeAllList } from '@/api/allocateType'
-export default {
-  components: { STable, VSelect, rangeDate },
-  data () {
-    return {
-      tableHeight: 0,
-      queryParam: { //  查询条件
-        time: [
-          getDate.getCurrMonthDays().starttime,
-          getDate.getCurrMonthDays().endtime
-        ],
-        beginDate: getDate.getCurrMonthDays().starttime,
-        endDate: getDate.getCurrMonthDays().endtime,
-        targetName: '', //  调往对象
-        allocateTypeSn: undefined, //  调拨类型
-        state: undefined, //  业务状态
-        allocateNo: '' //  调拨单号
-      },
-      disabled: false, //  查询、重置按钮是否可操作
-      exportLoading: false,
-      rules: {
-        'time': [{ required: true, message: '请选择创建时间', trigger: 'change' }]
-      },
-      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) {
-      if (date[0] && date[1]) {
-        this.queryParam.time = date
-      } else {
-        this.queryParam.time = []
-      }
-      this.queryParam.beginDate = date[0] || ''
-      this.queryParam.endDate = date[1] || ''
-    },
-    //  重置
-    resetSearchForm () {
-      this.$refs.rangeDate.resetDate(this.queryParam.time)
-      this.queryParam.time = [
-        getDate.getCurrMonthDays().starttime,
-        getDate.getCurrMonthDays().endtime
-      ]
-      this.queryParam.beginDate = getDate.getCurrMonthDays().starttime
-      this.queryParam.endDate = getDate.getCurrMonthDays().endtime
-      this.queryParam.targetName = ''
-      this.queryParam.allocateTypeSn = undefined
-      this.queryParam.state = undefined
-      this.queryParam.allocateNo = ''
-      this.$refs.table.refresh(true)
-    },
-    pageInit () {
-
-    }
-  },
-  mounted () {
-    if (!this.$store.state.app.isNewTab) { // 页签刷新时调用
-      this.pageInit()
-      this.resetSearchForm()
-    }
-  },
-  activated () {
-    // 如果是新页签打开,则重置当前页面
-    if (this.$store.state.app.isNewTab) {
-      this.pageInit()
-      this.resetSearchForm()
-    }
-  },
-  beforeRouteEnter (to, from, next) {
-    next(vm => {})
-  }
-}
-</script>

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

@@ -1,440 +0,0 @@
-<template>
-  <a-card size="small" :bordered="false" class="nationalCustomerCostStatisticsList-wrap">
-    <!-- 搜索条件 -->
-    <div class="table-page-search-wrapper">
-      <a-form-model
-        ref="ruleForm"
-        class="form-model-con"
-        layout="inline"
-        :rules="rules"
-        :model="queryParam"
-        @keyup.enter.native="$refs.table.refresh(true)">
-        <a-row :gutter="15">
-          <a-col :md="6" :sm="24">
-            <a-form-model-item label="创建时间" prop="time">
-              <rangeDate ref="rangeDate" :value="queryParam.time" @change="dateChange" />
-            </a-form-model-item>
-          </a-col>
-          <a-col :md="6" :sm="24">
-            <a-form-model-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-model-item>
-          </a-col>
-          <a-col :md="6" :sm="24">
-            <a-form-model-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-model-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-model>
-    </div>
-    <!-- 列表 -->
-    <s-table
-      class="sTable"
-      ref="table"
-      size="small"
-      :rowKey="(record) => record.id"
-      :columns="columns"
-      :showPagination="false"
-      :data="loadData"
-      :scroll="{ x: 2920 }"
-      :defaultLoadData="false"
-      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 getDate from '@/libs/getDate.js'
-// 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: { //  查询条件
-        time: [
-          getDate.getCurrMonthDays().starttime,
-          getDate.getCurrMonthDays().endtime
-        ],
-        beginDate: getDate.getCurrMonthDays().starttime,
-        endDate: getDate.getCurrMonthDays().endtime,
-        targetName: '', //  调往对象
-        allocateTypeSn: undefined, //  调拨类型
-        state: undefined, //  业务状态
-        allocateNo: '' //  调拨单号
-      },
-      disabled: false, //  查询、重置按钮是否可操作
-      exportLoading: false,
-      rules: {
-        'time': [{
-          required: true,
-          message: '请选择创建时间',
-          trigger: 'change'
-        }]
-      },
-      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) {
-      if (date[0] && date[1]) {
-        this.queryParam.time = date
-      } else {
-        this.queryParam.time = []
-      }
-      this.queryParam.beginDate = date[0] || ''
-      this.queryParam.endDate = date[1] || ''
-    },
-    //  重置
-    resetSearchForm () {
-      this.$refs.rangeDate.resetDate(this.queryParam.time)
-      this.queryParam.time = [getDate.getCurrMonthDays().starttime,
-        getDate.getCurrMonthDays().endtime
-      ]
-      this.queryParam.beginDate = getDate.getCurrMonthDays().starttime
-      this.queryParam.endDate = getDate.getCurrMonthDays().endtime
-      this.queryParam.targetName = ''
-      this.queryParam.allocateTypeSn = undefined
-      this.queryParam.state = undefined
-      this.queryParam.allocateNo = ''
-      this.$refs.table.refresh(true)
-    },
-    pageInit () {
-
-    }
-  },
-  mounted () {
-    if (!this.$store.state.app.isNewTab) { // 页签刷新时调用
-      this.pageInit()
-      this.resetSearchForm()
-    }
-  },
-  activated () {
-    // 如果是新页签打开,则重置当前页面
-    if (this.$store.state.app.isNewTab) {
-      this.pageInit()
-      this.resetSearchForm()
-    }
-  },
-  beforeRouteEnter (to, from, next) {
-    next(vm => {})
-  }
-}
-</script>

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

@@ -1,193 +0,0 @@
-<template>
-  <a-card size="small" :bordered="false" class="provinceTypeSalesDetailsList-wrap">
-    <!-- 搜索条件 -->
-    <div class="table-page-search-wrapper">
-      <a-form-model
-        ref="ruleForm"
-        class="form-model-con"
-        layout="inline"
-        :model="queryParam"
-        :rules="rules"
-        @keyup.enter.native="$refs.table.refresh(true)">
-        <a-row :gutter="15">
-          <a-col :md="6" :sm="24">
-            <a-form-model-item label="创建时间" prop="time">
-              <rangeDate ref="rangeDate" :value="queryParam.time" @change="dateChange" />
-            </a-form-model-item>
-          </a-col>
-          <a-col :md="6" :sm="24">
-            <a-form-model-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-model-item>
-          </a-col>
-          <a-col :md="6" :sm="24">
-            <a-form-model-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-model-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-model>
-    </div>
-    <!-- 列表 -->
-    <s-table
-      class="sTable"
-      ref="table"
-      size="small"
-      :rowKey="(record) => record.id"
-      :columns="columns"
-      :data="loadData"
-      :scroll="{ x: 3650 }"
-      :defaultLoadData="false"
-      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 getDate from '@/libs/getDate.js'
-// 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: { //  查询条件
-        time: [
-          getDate.getCurrMonthDays().starttime,
-          getDate.getCurrMonthDays().endtime
-        ],
-        beginDate: getDate.getCurrMonthDays().starttime,
-        endDate: getDate.getCurrMonthDays().endtime,
-        targetName: '', //  调往对象
-        allocateTypeSn: undefined, //  调拨类型
-        state: undefined, //  业务状态
-        allocateNo: '' //  调拨单号
-      },
-      disabled: false, //  查询、重置按钮是否可操作
-      exportLoading: false,
-      rules: {
-        'time': [{ required: true, message: '请选择创建时间', trigger: 'change' }]
-      },
-      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) {
-      if (date[0] && date[1]) {
-        this.queryParam.time = date
-      } else {
-        this.queryParam.time = []
-      }
-      this.queryParam.beginDate = date[0] || ''
-      this.queryParam.endDate = date[1] || ''
-    },
-    //  重置
-    resetSearchForm () {
-      this.queryParam.time = [
-        getDate.getCurrMonthDays().starttime,
-        getDate.getCurrMonthDays().endtime
-      ]
-      this.queryParam.beginDate = getDate.getCurrMonthDays().starttime
-      this.queryParam.endDate = getDate.getCurrMonthDays().endtime
-      this.queryParam.targetName = ''
-      this.queryParam.allocateTypeSn = undefined
-      this.queryParam.state = undefined
-      this.queryParam.allocateNo = ''
-      this.$refs.rangeDate.resetDate(this.queryParam.time)
-      this.$refs.table.refresh(true)
-    },
-    pageInit () {
-
-    }
-  },
-  mounted () {
-    if (!this.$store.state.app.isNewTab) { // 页签刷新时调用
-      this.pageInit()
-      this.resetSearchForm()
-    }
-  },
-  activated () {
-    // 如果是新页签打开,则重置当前页面
-    if (this.$store.state.app.isNewTab) {
-      this.pageInit()
-      this.resetSearchForm()
-    }
-  },
-  beforeRouteEnter (to, from, next) {
-    next(vm => {})
-  }
-}
-</script>

+ 295 - 0
src/views/reportData/regionTypeSalesReport/list.vue

@@ -0,0 +1,295 @@
+<template>
+  <a-card>
+    <a-spin :spinning="spinning" tip="Loading...">
+      <a-tabs v-model="activeKey" type="card" @change="callback">
+        <a-tab-pane :key="item.id" :tab="item.name" v-for="item in tabsList">
+        </a-tab-pane>
+      </a-tabs>
+      <div class="table-page-search-wrapper">
+        <a-form-model
+          id="returnGoodsPresentationList-form"
+          ref="ruleForm"
+          class="form-model-con"
+          layout="inline"
+          :rules="rules"
+          :model="queryParam"
+          @keyup.enter.native="handleSearch">
+          <a-row :gutter="15">
+            <a-col :md="6" :sm="24">
+              <a-form-model-item label="审核时间" prop="time">
+                <rangeDate ref="rangeDate" :value="queryParam.time" @change="dateChange"/>
+              </a-form-model-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-model-item label="销售状态" prop="salesStatusType">
+                <a-select v-model="queryParam.salesStatusType" allowClear placeholder="请选择销售状态">
+                  <a-select-option v-for="item in salesStatusTypeList" :value="item.code" :key="item.code">{{ item.name }}</a-select-option>
+                </a-select>
+              </a-form-model-item>
+              </a-form-model-item>
+            </a-col>
+            <a-col :md="6" :sm="24" v-if="activeKey==0">
+              <a-form-model-item label="所在区域">
+                <subarea id="returnGoodsPresentationList-subareaSn" v-model="queryParam.subareaSn"></subarea>
+              </a-form-model-item>
+            </a-col>
+            <template v-if="advanced && activeKey==0">
+              <a-col :md="6" :sm="24">
+                <a-form-model-item prop="dealerProvinceSn" style="margin: 0;" label="地区">
+                  <a-select v-model="queryParam.dealerProvinceSn" allowClear 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-model-item>
+              </a-col>
+            </template>
+            <a-col :md="6" :sm="24" style="margin-bottom: 10px;">
+              <a-button type="primary" @click="handleSearch" :disabled="disabled" id="returnGoodsPresentationList-refresh">查询</a-button>
+              <a-button style="margin-left: 5px" @click="resetSearchForm" :disabled="disabled" id="returnGoodsPresentationList-reset">重置</a-button>
+              <a-button
+                style="margin-left: 5px"
+                type="primary"
+                class="button-warning"
+                @click="handleExport"
+                :disabled="disabled"
+                :loading="exportLoading"
+                v-if="$hasPermissions('B_regionTypeSalesReportExport')"
+                id="returnGoodsPresentationList-export">导出</a-button>
+              <a @click="advanced=!advanced" style="margin-left: 5px" v-if="activeKey==0">
+                {{ advanced ? '收起' : '展开' }}
+                <a-icon :type="advanced ? 'up' : 'down'"/>
+              </a>
+            </a-col>
+          </a-row>
+        </a-form-model>
+      </div>
+      <!-- 列表 -->
+      <s-table
+        class="sTable"
+        ref="table"
+        size="small"
+        :defaultLoadData="false"
+        :rowKey="(record) => record.id"
+        :columns="columns"
+        :data="loadData"
+        :showPagination="false"
+        :scroll="{ x: 1550 }"
+        bordered>
+      </s-table>
+    </a-spin>
+  </a-card>
+</template>
+
+<script>
+import { STable, VSelect } from '@/components'
+import rangeDate from '@/views/common/rangeDate.vue'
+import { getArea } from '@/api/data'
+import subarea from '@/views/common/subarea.js'
+import { hdExportExcel } from '@/libs/exportExcel'
+import { realReportSalesByProvince, realReportSalesByProvinceExport, realReportSalesBySubArea, realReportSalesBySubAreaExport } from '@/api/reportData.js'
+export default {
+  components: { STable, VSelect, rangeDate, subarea },
+  data () {
+    return {
+      spinning: false,
+      tabsList: [{ id: 0, name: '各省品类实售明细' }, { id: 1, name: '各区品类实售明细' }],
+      salesStatusTypeList: [{ code: 'SALES', name: '实售销售' }, { code: 'SALES_RETURN', name: '实售退货' }, { code: 'REAL_SALES', name: '实际销售' }],
+      activeKey: 0,
+      advanced: true, // 高级搜索 展开/关闭
+      queryParam: {
+        time: [],
+        beginDate: '',
+        endDate: '',
+        dealerProvinceSn: undefined,
+        subareaSn: undefined,
+        salesStatusType: 'REAL_SALES'
+      },
+      addrProvinceList: [], //  省下拉
+      disabled: false, //  查询、重置按钮是否可操作
+      exportLoading: false,
+      rules: {
+        'time': [{ required: true, message: '请选择审核时间', trigger: 'change' }],
+        'salesStatusType': [{ required: true, message: '请选择销售状态', trigger: 'change' }]
+      },
+      // 加载数据方法 必须为 Promise 对象
+      loadData: parameter => {
+        this.disabled = true
+        this.spinning = true
+        const paramsPage = Object.assign(this.queryParam) //  无分页
+        const jkUrl = this.activeKey == 0 ? realReportSalesByProvince : realReportSalesBySubArea
+        return jkUrl(paramsPage).then(res => {
+          let data
+          if (res.status == 200) {
+            data = res.data
+          }
+          this.disabled = false
+          this.spinning = false
+          return data
+        })
+      }
+    }
+  },
+  computed: {
+    columns () {
+      const arr = [
+        { title: '区域',
+          dataIndex: 'subareaNames',
+          width: 50,
+          align: 'center',
+          customRender: function (text) { return text || '--' }
+        },
+        { title: '销售状态', dataIndex: 'salesStatus', width: 50, align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '箭牌滤清器', dataIndex: 'jpLqqAmount', width: 50, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '冠牌滤清器', dataIndex: 'gpLqqAmount', width: 50, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '滤清器合计', dataIndex: 'lqqAmount', width: 50, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '箭牌雨刮片', dataIndex: 'jpYgpAmount', width: 50, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '冠牌雨刮片', dataIndex: 'gpYgpAmount', width: 50, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '雨刮片合计', dataIndex: 'ygpAmount', width: 50, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '箭牌刹车片', dataIndex: 'jpScpAmount', width: 50, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '箭牌感应线', dataIndex: 'jpGyxAmount', width: 50, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '冠牌刹车片', dataIndex: 'gpScpAmount', width: 50, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: 'TBU刹车片', dataIndex: 'tbuScpAmount', width: 50, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: 'TBU刹车油', dataIndex: 'tbuScyAmount', width: 50, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: 'TBU感应线', dataIndex: 'tbuGyxAmount', width: 50, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '刹车片合计', dataIndex: 'scpAmount', width: 50, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: 'TBU-P', dataIndex: 'tbupAmount', align: 'center', width: 50, customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '德路斯润滑油', dataIndex: 'dlsRhyAmount', width: 50, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '德路斯刹车油', dataIndex: 'dlsScyAmount', width: 50, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '德路斯变速箱油', dataIndex: 'dlsBsxyAmount', width: 50, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '德路斯合计', dataIndex: 'dlsAmount', width: 50, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '稳升点火线圈', dataIndex: 'wsDhxqAmount', width: 50, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '稳升灯泡', dataIndex: 'wsDpAmount', width: 50, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '稳升合计', dataIndex: 'wsAmount', width: 50, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '汇箭', dataIndex: 'hjAmount', width: 50, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '布瑞斯', dataIndex: 'brsAmount', width: 50, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '箭牌喇叭', dataIndex: 'jpLbAmount', width: 50, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '品牌合计', dataIndex: 'ppAmount', width: 70, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: 'NGK', dataIndex: 'ngkAmount', width: 50, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '品牌+NGK总合计', dataIndex: 'ppAndNgkAmount', width: 80, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } }
+      ]
+      if (this.activeKey == 0) {
+        arr.splice(1, 0, { title: '省份', dataIndex: 'dealerProvinceName', width: 50, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } })
+      }
+      return arr
+    }
+  },
+  methods: {
+    callback (key) {
+      this.activeKey = key
+      this.resetSearchForm()
+      // this.queryParam.time = []
+      // this.$refs.rangeDate.resetDate(this.queryParam.time)
+      // this.$refs.ruleForm.resetFields()
+      // this.$refs.table.clearTable()
+      console.log(key, this.activeKey)
+    },
+    // 查询省
+    getProvinceData (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) {
+          console.log(res, '=============地区')
+          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 = []
+          }
+        }
+      })
+    },
+    //  创建时间  change
+    dateChange (date) {
+      if (date[0] && date[1]) {
+        this.queryParam.time = date
+      } else {
+        this.queryParam.time = []
+      }
+      this.queryParam.beginDate = date[0] || ''
+      this.queryParam.endDate = date[1] || ''
+    },
+    // 查询
+    handleSearch () {
+      const _this = this
+      this.$refs.ruleForm.validate(valid => {
+        if (valid) {
+          _this.$refs.table.refresh(true)
+        } else {
+          return false
+        }
+      })
+    },
+    //  重置
+    resetSearchForm () {
+      this.$refs.ruleForm.resetFields()
+      this.queryParam.time = []
+      this.$refs.rangeDate.resetDate(this.queryParam.time)
+      this.queryParam.beginDate = ''
+      this.queryParam.endDate = ''
+      this.queryParam.dealerProvinceSn = undefined
+      this.queryParam.subareaSn = undefined
+      this.queryParam.salesStatusType = 'REAL_SALES'
+      this.$refs.table.clearTable()
+    },
+    //  导出
+    handleExport () {
+      const _this = this
+      const jkUrl = _this.activeKey == 0 ? realReportSalesByProvinceExport : realReportSalesBySubAreaExport
+      const excelTitle = _this.activeKey == 0 ? '各省品类实售明细报表' : '各区品类实售明细报表'
+      this.$refs.ruleForm.validate(valid => {
+        if (valid) {
+          const params = _this.queryParam
+          _this.exportLoading = true
+          _this.spinning = true
+          hdExportExcel(jkUrl, params, excelTitle, function () {
+            _this.exportLoading = false
+            _this.spinning = false
+          })
+        } else {
+          return false
+        }
+      })
+    },
+    pageInit () {
+      this.activeKey = 0
+      this.getProvinceData('province')
+      this.resetSearchForm()
+    }
+  },
+  mounted () {
+    if (!this.$store.state.app.isNewTab) { // 页签刷新时调用
+      this.pageInit()
+      // this.resetSearchForm()
+    }
+  },
+  activated () {
+    // 如果是新页签打开,则重置当前页面
+    if (this.$store.state.app.isNewTab) {
+      this.pageInit()
+      // this.resetSearchForm()
+    }
+  },
+  beforeRouteEnter (to, from, next) {
+    next(vm => {})
+  }
+}
+</script>
+
+<style style="less">
+  .regionTypeSalesReportList-wrap{
+
+  }
+</style>

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

@@ -1,196 +0,0 @@
-<template>
-  <a-card size="small" :bordered="false" class="regionalPromotionCostStatisticsList-wrap">
-    <!-- 搜索条件 -->
-    <div class="table-page-search-wrapper">
-      <a-form-model
-        ref="ruleForm"
-        class="form-model-con"
-        layout="inline"
-        :rules="rules"
-        :model="queryParam"
-        @keyup.enter.native="$refs.table.refresh(true)">
-        <a-row :gutter="15">
-          <a-col :md="6" :sm="24">
-            <a-form-model-item label="创建时间" prop="time">
-              <rangeDate ref="rangeDate" :value="queryParam.time" @change="dateChange" />
-            </a-form-model-item>
-          </a-col>
-          <a-col :md="6" :sm="24">
-            <a-form-model-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-model-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-model>
-    </div>
-    <!-- 列表 -->
-    <s-table
-      class="sTable"
-      ref="table"
-      size="small"
-      :rowKey="(record) => record.id"
-      :columns="columns"
-      :showPagination="false"
-      :data="loadData"
-      :scroll="{ x: 2500 }"
-      :defaultLoadData="false"
-      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 getDate from '@/libs/getDate.js'
-// 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: { //  查询条件
-        time: [
-          getDate.getCurrMonthDays().starttime,
-          getDate.getCurrMonthDays().endtime
-        ],
-        beginDate: getDate.getCurrMonthDays().starttime,
-        endDate: getDate.getCurrMonthDays().endtime,
-        targetName: '', //  调往对象
-        allocateTypeSn: undefined, //  调拨类型
-        state: undefined, //  业务状态
-        allocateNo: '' //  调拨单号
-      },
-      disabled: false, //  查询、重置按钮是否可操作
-      exportLoading: false,
-      rules: {
-        'time': [{ required: true, message: '请选择创建时间', trigger: 'change' }]
-      },
-      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) {
-      if (date[0] && date[1]) {
-        this.queryParam.time = date
-      } else {
-        this.queryParam.time = []
-      }
-      this.queryParam.beginDate = date[0] || ''
-      this.queryParam.endDate = date[1] || ''
-    },
-    //  重置
-    resetSearchForm () {
-      this.$refs.rangeDate.resetDate(this.queryParam.time)
-      this.queryParam.time = [
-        getDate.getCurrMonthDays().starttime,
-        getDate.getCurrMonthDays().endtime
-      ]
-      this.queryParam.beginDate = getDate.getCurrMonthDays().starttime
-      this.queryParam.endDate = getDate.getCurrMonthDays().endtime
-      this.queryParam.targetName = ''
-      this.queryParam.allocateTypeSn = undefined
-      this.queryParam.state = undefined
-      this.queryParam.allocateNo = ''
-      this.$refs.table.refresh(true)
-    },
-    pageInit () {
-
-    }
-  },
-  mounted () {
-    if (!this.$store.state.app.isNewTab) { // 页签刷新时调用
-      this.pageInit()
-      this.resetSearchForm()
-    }
-  },
-  activated () {
-    // 如果是新页签打开,则重置当前页面
-    if (this.$store.state.app.isNewTab) {
-      this.pageInit()
-      this.resetSearchForm()
-    }
-  },
-  beforeRouteEnter (to, from, next) {
-    next(vm => {})
-  }
-}
-</script>

+ 1 - 1
src/views/result/Error.vue

@@ -5,7 +5,7 @@
         <a-button type="primary" >返回修改</a-button>
       </template>
       <div>
-        <div style="font-size: 16px; color: rgba(0, 0, 0, 0.85); font-weight: 500; margin-bottom: 16px">
+        <div style="font-size: 16px; color: rgba(0, 0, 0); font-weight: 500; margin-bottom: 16px">
           您提交的内容有如下错误:
         </div>
         <div style="margin-bottom: 16px">

+ 4 - 4
src/views/result/Success.vue

@@ -7,18 +7,18 @@
         <a-button style="margin-left: 8px">打印</a-button>
       </template>
       <div>
-        <div style="font-size: 16px; color: rgba(0, 0, 0, 0.85); font-weight: 500; margin-bottom: 20px;">项目名称</div>
+        <div style="font-size: 16px; color: rgba(0, 0, 0); font-weight: 500; margin-bottom: 20px;">项目名称</div>
         <a-row style="margin-bottom: 16px">
           <a-col :xs="24" :sm="12" :md="12" :lg="12" :xl="6">
-            <span style="color: rgba(0, 0, 0, 0.85)">项目 ID:</span>
+            <span style="color: rgba(0, 0, 0)">项目 ID:</span>
             20180724089
           </a-col>
           <a-col :xs="24" :sm="12" :md="12" :lg="12" :xl="6">
-            <span style="color: rgba(0, 0, 0, 0.85)">负责人:</span>
+            <span style="color: rgba(0, 0, 0)">负责人:</span>
             曲丽丽是谁?
           </a-col>
           <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12">
-            <span style="color: rgba(0, 0, 0, 0.85)">生效时间:</span>
+            <span style="color: rgba(0, 0, 0)">生效时间:</span>
             2016-12-12 ~ 2017-12-12
           </a-col>
         </a-row>

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

@@ -335,9 +335,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()

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

@@ -412,9 +412,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()
@@ -450,7 +450,7 @@ export default {
       cursor: pointer;
     }
     .common{
-      color: rgba(0, 0, 0, 0.65);
+      color: rgba(0, 0, 0);
     }
   }
 </style>

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

@@ -334,9 +334,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()

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

@@ -257,9 +257,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()

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

@@ -450,9 +450,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()

+ 2 - 2
src/views/salesManagement/salesReturn/list.vue

@@ -401,9 +401,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()

+ 2 - 2
src/views/salesManagement/shortageStatisticsC/list.vue

@@ -411,9 +411,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()

+ 2 - 2
src/views/salesManagement/shortageStatisticsP/list.vue

@@ -187,9 +187,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()

+ 1 - 1
src/views/setting/notice/detailModal.vue

@@ -192,7 +192,7 @@ export default {
     }
     .attachLink{
       display: inline-block;
-      color: rgba(0, 0, 0, 0.65);
+      color: rgba(0, 0, 0);
       &:hover{
         text-decoration: underline;
       }

+ 1 - 1
src/views/setting/noticeManagement/detailModal.vue

@@ -189,7 +189,7 @@ export default {
     }
     .attachLink{
       display: inline-block;
-      color: rgba(0, 0, 0, 0.65);
+      color: rgba(0, 0, 0);
       &:hover{
         text-decoration: underline;
       }

+ 2 - 2
src/views/supplierManagement/associatedProduct/add.vue

@@ -281,9 +281,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()

+ 2 - 2
src/views/supplierManagement/associatedProductDetails/list.vue

@@ -161,9 +161,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()

+ 2 - 2
vue.config.js

@@ -109,8 +109,8 @@ const vueConfig = {
     proxy: {
       '/api': {
         // target: 'http://192.168.16.188:8602/ocs-admin',
-        target: 'https://t.ocs.360arrow.com/ocs-admin', //  练习
-        // target: 'http://p.ocs.360arrow.com/ocs-admin', //  预发布
+        // target: 'https://t.ocs.360arrow.com/ocs-admin', //  练习
+        target: 'http://p.ocs.360arrow.com/ocs-admin', //  预发布
         // target: 'http://ocs-admin.360arrow.com/ocs-admin', //  生产
         ws: false,
         changeOrigin: true,