lilei il y a 3 ans
Parent
commit
d64dd0c7bb
100 fichiers modifiés avec 843 ajouts et 381 suppressions
  1. 26 8
      package-lock.json
  2. 1 0
      package.json
  3. 36 8
      src/components/Menu/SideMenu.vue
  4. 13 11
      src/components/MultiTab/MultiTab.vue
  5. 3 0
      src/components/Table/index.js
  6. 7 0
      src/components/global.less
  7. 147 106
      src/config/router.config.js
  8. 20 17
      src/layouts/BasicLayout.vue
  9. 3 1
      src/layouts/BlankLayout.vue
  10. 3 70
      src/layouts/PageView.vue
  11. 1 1
      src/layouts/UserLayout.vue
  12. 8 1
      src/main.js
  13. 3 1
      src/store/getters.js
  14. 6 1
      src/store/modules/app.js
  15. 66 2
      src/utils/mixin.js
  16. 60 12
      src/utils/request.js
  17. 4 1
      src/views/allocationManagement/chainTransferIn/detail.vue
  18. 4 1
      src/views/allocationManagement/chainTransferIn/edit.vue
  19. 5 2
      src/views/allocationManagement/chainTransferIn/list.vue
  20. 2 0
      src/views/allocationManagement/chainTransferOut/basicInfoModal.vue
  21. 4 1
      src/views/allocationManagement/chainTransferOut/detail.vue
  22. 4 1
      src/views/allocationManagement/chainTransferOut/edit.vue
  23. 15 4
      src/views/allocationManagement/chainTransferOut/list.vue
  24. 2 0
      src/views/allocationManagement/storeTransferOut/basicInfoModal.vue
  25. 4 1
      src/views/allocationManagement/storeTransferOut/detail.vue
  26. 4 1
      src/views/allocationManagement/storeTransferOut/edit.vue
  27. 15 4
      src/views/allocationManagement/storeTransferOut/list.vue
  28. 2 0
      src/views/allocationManagement/warehouseAllocation/basicInfoModal.vue
  29. 4 1
      src/views/allocationManagement/warehouseAllocation/detail.vue
  30. 4 1
      src/views/allocationManagement/warehouseAllocation/edit.vue
  31. 15 4
      src/views/allocationManagement/warehouseAllocation/list.vue
  32. 2 0
      src/views/basicData/bulkPartsTypeManagement/editModal.vue
  33. 3 0
      src/views/basicData/bulkPartsTypeManagement/list.vue
  34. 2 0
      src/views/basicData/customerTypeManagement/editModal.vue
  35. 3 0
      src/views/basicData/customerTypeManagement/list.vue
  36. 2 0
      src/views/basicData/expenseType/editModal.vue
  37. 3 0
      src/views/basicData/expenseType/list.vue
  38. 2 0
      src/views/basicData/storeTransferOutTypeManagement/editModal.vue
  39. 3 0
      src/views/basicData/storeTransferOutTypeManagement/list.vue
  40. 5 2
      src/views/bulkManagement/bulkImport/list.vue
  41. 2 0
      src/views/bulkManagement/bulkReturnGoods/basicInfoModal.vue
  42. 2 0
      src/views/bulkManagement/bulkReturnGoods/detailModal.vue
  43. 4 1
      src/views/bulkManagement/bulkReturnGoods/edit.vue
  44. 4 1
      src/views/bulkManagement/bulkReturnGoods/grabEdit.vue
  45. 15 4
      src/views/bulkManagement/bulkReturnGoods/list.vue
  46. 23 21
      src/views/bulkManagement/bulkWarehousingOrder/basicInfoModal.vue
  47. 4 1
      src/views/bulkManagement/bulkWarehousingOrder/detail.vue
  48. 4 1
      src/views/bulkManagement/bulkWarehousingOrder/edit.vue
  49. 15 4
      src/views/bulkManagement/bulkWarehousingOrder/list.vue
  50. 2 2
      src/views/common/auditModal.vue
  51. 4 0
      src/views/common/custList.vue
  52. 1 1
      src/views/customerManagement/customerInfo/detailModal.vue
  53. 3 1
      src/views/customerManagement/customerInfo/edit.vue
  54. 5 2
      src/views/customerManagement/customerInfo/list.vue
  55. 4 1
      src/views/financialManagement/companyCollectionPayment/detail.vue
  56. 6 3
      src/views/financialManagement/companyCollectionPayment/list.vue
  57. 2 0
      src/views/financialManagement/companyReceivablePayable/chooseBillModal.vue
  58. 4 1
      src/views/financialManagement/companyReceivablePayable/collectionPayment.vue
  59. 5 2
      src/views/financialManagement/companyReceivablePayable/detail.vue
  60. 3 0
      src/views/financialManagement/companyReceivablePayable/list.vue
  61. 3 1
      src/views/financialManagement/expenseManagement/edit.vue
  62. 6 3
      src/views/financialManagement/expenseManagement/list.vue
  63. 24 7
      src/views/financialManagement/financialCollection/list.vue
  64. 24 8
      src/views/financialManagement/financialPayment/list.vue
  65. 5 2
      src/views/financialManagement/inventoryCheckAudit/list.vue
  66. 5 2
      src/views/financialManagement/ledgerRecord/list.vue
  67. 4 1
      src/views/financialManagement/warehousingAudit/detail.vue
  68. 16 5
      src/views/financialManagement/warehousingAudit/list.vue
  69. 2 0
      src/views/financialManagement/withdrawalManagement/cashOutModal.vue
  70. 5 2
      src/views/financialManagement/withdrawalManagement/list.vue
  71. 2 0
      src/views/inventoryManagement/inventoryChecking/basicInfoModal.vue
  72. 2 0
      src/views/inventoryManagement/inventoryChecking/detailModal.vue
  73. 5 2
      src/views/inventoryManagement/inventoryChecking/list.vue
  74. 4 1
      src/views/inventoryManagement/inventoryChecking/makeInventory.vue
  75. 4 1
      src/views/inventoryManagement/inventoryChecking/overall.vue
  76. 2 0
      src/views/inventoryManagement/inventoryChecking/printModal.vue
  77. 4 1
      src/views/inventoryManagement/inventoryChecking/selfDisk.vue
  78. 5 2
      src/views/inventoryManagement/inventoryImport/list.vue
  79. 2 0
      src/views/inventoryManagement/inventoryQuery/detailModal.vue
  80. 5 2
      src/views/inventoryManagement/inventoryQuery/list.vue
  81. 6 3
      src/views/inventoryManagement/inventoryQuery/warehouseDetail.vue
  82. 6 3
      src/views/inventoryManagement/inventoryWarning/list.vue
  83. 3 1
      src/views/inventoryManagement/satelliteWarehouseInventory/addModal.vue
  84. 3 0
      src/views/inventoryManagement/satelliteWarehouseInventory/list.vue
  85. 2 0
      src/views/inventoryManagement/warehouse/editModal.vue
  86. 3 0
      src/views/inventoryManagement/warehouse/list.vue
  87. 2 0
      src/views/inventoryManagement/warehouse/storingLocation/editModal.vue
  88. 5 2
      src/views/inventoryManagement/warehouse/storingLocation/list.vue
  89. 11 9
      src/views/notice/detailModal.vue
  90. 3 0
      src/views/notice/list.vue
  91. 3 0
      src/views/numsGoodsShelves/shelfMonitoring/list.vue
  92. 16 5
      src/views/outboundOrderManagement/outboundOrder/list.vue
  93. 2 0
      src/views/power/OperateJournal/OperateJournal.vue
  94. 1 1
      src/views/power/dataDictionary/dataDictionary.vue
  95. 1 1
      src/views/power/register/register.vue
  96. 3 1
      src/views/productManagement/newProduct/detail.vue
  97. 5 2
      src/views/productManagement/newProduct/list.vue
  98. 2 0
      src/views/productManagement/newProduct/modal.vue
  99. 6 3
      src/views/productManagement/priceChangeRecord/list.vue
  100. 3 1
      src/views/productManagement/productBrand/editModal.vue

+ 26 - 8
package-lock.json

@@ -7373,12 +7373,14 @@
         "balanced-match": {
           "version": "1.0.0",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "brace-expansion": {
           "version": "1.1.11",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "balanced-match": "^1.0.0",
             "concat-map": "0.0.1"
@@ -7399,12 +7401,14 @@
         "concat-map": {
           "version": "0.0.1",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "console-control-strings": {
           "version": "1.1.0",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "core-util-is": {
           "version": "1.0.2",
@@ -7549,6 +7553,7 @@
           "version": "3.0.4",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "brace-expansion": "^1.1.7"
           }
@@ -7556,12 +7561,14 @@
         "minimist": {
           "version": "0.0.8",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "minipass": {
           "version": "2.3.5",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "safe-buffer": "^5.1.2",
             "yallist": "^3.0.0"
@@ -7580,6 +7587,7 @@
           "version": "0.5.1",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "minimist": "0.0.8"
           }
@@ -7673,6 +7681,7 @@
           "version": "1.4.0",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "wrappy": "1"
           }
@@ -7758,7 +7767,8 @@
         "safe-buffer": {
           "version": "5.1.2",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "safer-buffer": {
           "version": "2.1.2",
@@ -7858,12 +7868,14 @@
         "wrappy": {
           "version": "1.0.2",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "yallist": {
           "version": "3.0.3",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         }
       }
     },
@@ -14523,7 +14535,8 @@
       "version": "4.0.8",
       "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz",
       "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=",
-      "dev": true
+      "dev": true,
+      "optional": true
     },
     "rx-lite-aggregates": {
       "version": "4.0.8",
@@ -16897,6 +16910,11 @@
         "vue": "^2.0"
       }
     },
+    "vuescroll": {
+      "version": "4.17.3",
+      "resolved": "https://registry.npmjs.org/vuescroll/-/vuescroll-4.17.3.tgz",
+      "integrity": "sha512-5P3hje/fYjo1eAB0Y8zboLbaq/mnPNczYyZ1aPHHM6wIFKcqal9Mi42CBCZizUnEtoXtbsGlnyLcVbnalTNptA=="
+    },
     "vuex": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.1.1.tgz",

+ 1 - 0
package.json

@@ -40,6 +40,7 @@
     "vue-svg-component-runtime": "^1.0.1",
     "vue-video-player": "^5.0.2",
     "vue2.0-zoom": "^2.1.1",
+    "vuescroll": "^4.17.3",
     "vuex": "^3.1.1",
     "wangeditor": "^3.1.1"
   },

+ 36 - 8
src/components/Menu/SideMenu.vue

@@ -5,14 +5,16 @@
     :collapsible="collapsible"
     v-model="collapsed"
     :trigger="null">
-    <logo />
-    <s-menu
-      :collapsed="collapsed"
-      :menu="menus"
-      :theme="theme"
-      :mode="mode"
-      @select="onSelect"
-      style="padding: 10px 0px;"></s-menu>
+    <vue-scroll :ops="ops" style="width:100%;height:100%">
+      <logo />
+      <s-menu
+        :collapsed="collapsed"
+        :menu="menus"
+        :theme="theme"
+        :mode="mode"
+        @select="onSelect"
+        style="padding: 10px 0px;"></s-menu>
+    </vue-scroll>
   </a-layout-sider>
 
 </template>
@@ -52,6 +54,24 @@ export default {
       required: true
     }
   },
+  data () {
+    return {
+      ops: {
+        vuescroll: {},
+        scrollPanel: {},
+        rail: {
+          keepShow: true
+        },
+        bar: {
+          hoverStyle: true,
+          onlyShowBarOnScroll: false, // 是否只有滚动的时候才显示滚动条
+          background: '#00557f', // 滚动条颜色
+          opacity: 0.5, // 滚动条透明度
+          'overflow-x': 'hidden'
+        }
+      }
+    }
+  },
   methods: {
     onSelect (obj) {
       this.$emit('menuSelect', obj)
@@ -59,3 +79,11 @@ export default {
   }
 }
 </script>
+<style lang="less">
+  /deep/.__bar-is-vertical {
+    right: -1px !important;
+  }
+  /deep/.__bar-is-horizontal {
+    display: none !important;
+  }
+</style>

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

@@ -65,6 +65,7 @@ export default {
       if (!this.tabsList.includes(this.activeKey)) {
         this.selectedLastPath()
       }
+      this.$store.state.app.closeTabPages.push(targetKey)
     },
     selectedLastPath () {
       this.activeKey = this.tabsList[this.tabsList.length - 1]
@@ -170,18 +171,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
         if ((na || nb || nc || nxt || oa || ob || oc || oxt) && hasChildren) {
           // 替换当前页签
           this.replaceTab(newVal, oldMenu)
@@ -202,6 +203,7 @@ export default {
           } else {
             // this.$message.info('您当前打开窗口太多,请关闭一些,窗口不能超过' + this.maxTabNums + '个')
             const _this = this
+            this.$store.state.app.closeTabPages.push(newVal.name)
             this.$warning({
               title: '提示',
               content: '您当前打开窗口太多,请关闭一些,窗口不能超过' + this.maxTabNums + '个',
@@ -211,13 +213,13 @@ 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
       }
     },

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

@@ -147,6 +147,7 @@ export default {
     },
     // 重置表格为空
     clearTable () {
+      this.localLoading = false
       this.localDataSource = []
       this.localPagination = Object.assign({}, {
         current: 1, pageSize: this.pageSize, total: 0
@@ -210,6 +211,8 @@ export default {
           }
           this.localDataSource = list // 返回结果中的数组数据
           this.localLoading = false
+        }).catch(err => {
+          this.clearTable()
         })
       }
     },

+ 7 - 0
src/components/global.less

@@ -450,7 +450,14 @@ body {
     .logo{
       // padding-left: 20px;
     }
+    .ant-menu-inline-collapsed > .ant-menu-item .anticon,
+    .ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item .anticon, 
+    .ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-submenu > .ant-menu-submenu-title .anticon, 
+    .ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title .anticon{
+      font-size: 18px;
+    }
   }
+  
   &.light {
     background-color: #fff;
     box-shadow: 2px 0px 8px 0px rgba(29, 35, 41, 0.05);

+ 147 - 106
src/config/router.config.js

@@ -29,48 +29,51 @@ export const asyncRouterMap = [
           {
             path: '/home',
             name: 'home',
-            component: () => import(/* webpackChunkName: "home" */ '@/views/Home'),
+            redirect: '/home',
+            name: 'home',
+            component: BlankLayout,
             meta: {
               title: '首页',
               icon: 'home',
-              hide: true
-            }
+              hidden: true
+            },
+            hideChildrenInMenu: true,
+            children:[
+              {
+                path: '/home',
+                name: 'home',
+                component: () => import(/* webpackChunkName: "home" */ '@/views/Home'),
+                meta: {
+                  title: '首页',
+                  icon: 'home',
+                  hidden: true
+                },
+              },
+              {
+                path: '/changePwd',
+                name: 'changePwd',
+                component: () => import(/* webpackChunkName: "home" */ '@/views/user/ChangePwd'),
+                meta: {
+                  title: '修改密码',
+                  icon: 'home'
+                },
+                hidden: true
+              },
+              // 公告
+              {
+                path: '/notice',
+                name: 'notice',
+                component: () => import(/* webpackChunkName: "home" */ '@/views/notice/list'),
+                meta: {
+                  title: '公告',
+                  icon: 'bell',
+                  hidden: true
+                },
+              }
+            ]
           }
         ]
       },
-      {
-        path: '/changePwd',
-        name: 'changePwd',
-        component: () => import(/* webpackChunkName: "home" */ '@/views/user/ChangePwd'),
-        meta: {
-          title: '修改密码',
-          icon: 'home'
-        },
-        hidden: true
-      },
-      // 新品列表-下线产品
-      {
-        path: '/newProduct/list/:onlineFalg',
-        name: 'newProductList',
-        component: () => import(/* webpackChunkName: "home" */ '@/views/productManagement/newProduct/list'),
-        meta: {
-          title: '新品信息',
-          icon: 'home'
-        },
-        hidden: true
-      },
-      // 产品详情
-      {
-        path: '/viewProduct/:sn',
-        name: 'viewProduct',
-        component: () => import(/* webpackChunkName: "home" */ '@/views/productManagement/newProduct/detail'),
-        meta: {
-          title: '产品详情',
-          icon: 'home',
-          replaceTab: true
-        },
-        hidden: true
-      },
       // 数字货架
       {
         path: '/numsGoodsShelves',
@@ -524,6 +527,7 @@ export const asyncRouterMap = [
                   title: '采购单详情',
                   icon: 'money-collect',
                   hidden: true,
+                  replaceTab: true,
                   permission: 'B_purchaseDetail'
                 }
               },
@@ -1276,23 +1280,51 @@ export const asyncRouterMap = [
           },
           {
             path: '/inventoryManagement/inventoryWarning',
-            name: 'inventoryWarningList',
-            component: () => import(/* webpackChunkName: "inventoryManagement" */ '@/views/inventoryManagement/inventoryWarning/list.vue'),
+            name: 'inventoryWarning',
+            redirect: '/inventoryManagement/inventoryWarning/list',
+            component: BlankLayout,
             meta: {
               title: '库存预警',
               icon: 'alert',
               permission: 'M_inventoryWarningList'
-            }
+            },
+            hideChildrenInMenu: true,
+            children: [
+              {
+                path: 'list',
+                name: 'inventoryWarningList',
+                component: () => import(/* webpackChunkName: "inventoryManagement" */ '@/views/inventoryManagement/inventoryWarning/list.vue'),
+                meta: {
+                  title: '库存预警',
+                  icon: 'alert',
+                  permission: 'M_inventoryWarningList'
+                },
+              }
+            ]
           },
           {
             path: '/inventoryManagement/satelliteWarehouseInventory',
-            name: 'satelliteWarehouseInventoryList',
-            component: () => import(/* webpackChunkName: "inventoryManagement" */ '@/views/inventoryManagement/satelliteWarehouseInventory/list.vue'),
+            name: 'satelliteWarehouseInventory',
+            redirect: '/inventoryManagement/satelliteWarehouseInventory/list',
+            component: BlankLayout,
             meta: {
               title: '卫星仓库存',
               icon: 'flag',
               permission: 'M_satelliteWarehouseInventoryList'
-            }
+            },
+            hideChildrenInMenu: true,
+            children: [
+              {
+                path: 'list',
+                name: 'satelliteWarehouseInventoryList',
+                component: () => import(/* webpackChunkName: "inventoryManagement" */ '@/views/inventoryManagement/satelliteWarehouseInventory/list.vue'),
+                meta: {
+                  title: '卫星仓库存',
+                  icon: 'flag',
+                  permission: 'M_satelliteWarehouseInventoryList'
+                }, 
+              }
+            ]
           },
           {
             path: '/inventoryManagement/inventoryChecking',
@@ -2088,7 +2120,7 @@ export const asyncRouterMap = [
                   hidden: true,
                   permission: 'B_product_dealerProduct_edit'
                 }
-              }
+              },
             ]
           },
           {
@@ -2138,7 +2170,44 @@ export const asyncRouterMap = [
                   hidden: true,
                   permission: 'M_productOnlineInfoList'
                 }
-              }
+              },
+            ]
+          },
+          {
+            path: '/productManagement/newProductList',
+            redirect: '/newProduct/list/:onlineFalg',
+            name: 'newProductList',
+            component: BlankLayout,
+            meta: {
+              title: '产品信息',
+              icon: 'sketch',
+              permission: 'M_newProductList'
+            },
+            hideChildrenInMenu: true,
+            children: [
+              // 新品列表-下线产品
+              {
+                path: '/newProduct/list/:onlineFalg',
+                name: 'newProductList',
+                component: () => import(/* webpackChunkName: "productManagement" */ '@/views/productManagement/newProduct/list'),
+                meta: {
+                  title: '新品信息',
+                  icon: 'file-text',
+                  hidden: true,
+                },
+              },
+              // 产品详情
+              {
+                path: '/viewProduct/:sn',
+                name: 'viewProduct',
+                component: () => import(/* webpackChunkName: "productManagement" */ '@/views/productManagement/newProduct/detail'),
+                meta: {
+                  title: '产品详情',
+                  icon: 'file-text',
+                  replaceTab: true,
+                  hidden: true
+                },
+              },
             ]
           },
           {
@@ -2470,82 +2539,54 @@ export const asyncRouterMap = [
         children: [
           {
             path: '/auth/userList',
-            name: 'powerUserList',
-            component: () => import(/* webpackChunkName: "auth" */ '@/views/power/user/userList.vue'),
+            name: 'powerUser',
+            redirect: '/auth/userList/list',
+            component: BlankLayout,
             meta: {
               title: '用户管理',
               icon: 'user',
               permission: 'M_powerMD_user_list'
-            }
+            },
+            hideChildrenInMenu: true,
+            children: [
+              {
+                path: 'list',
+                name: 'powerUserList',
+                component: () => import(/* webpackChunkName: "auth" */ '@/views/power/user/userList.vue'),
+                meta: {
+                  title: '用户管理',
+                  icon: 'user',
+                  permission: 'M_powerMD_user_list'
+                },
+              }
+            ]
           },
           {
             path: '/auth/roleList',
-            name: 'powerRoleList',
-            component: () => import(/* webpackChunkName: "auth" */ '@/views/power/role/roleList.vue'),
+            name: 'powerRole',
+            redirect: '/auth/roleList/list',
+            component: BlankLayout,
             meta: {
               title: '角色管理',
               icon: 'solution',
               permission: 'M_powerMD_role_list'
-            }
+            },
+            hideChildrenInMenu: true,
+            children: [
+              {
+                path: 'list',
+                name: 'powerRoleList',
+                component: () => import(/* webpackChunkName: "auth" */ '@/views/power/role/roleList.vue'),
+                meta: {
+                  title: '角色管理',
+                  icon: 'solution',
+                  permission: 'M_powerMD_role_list'
+                },
+              }
+            ]
           }
         ]
       },
-      // 系统设置
-      // {
-      //   path: '/setting',
-      //   redirect: '/setting/userList',
-      //   component: PageView,
-      //   meta: {
-      //     title: '系统设置',
-      //     icon: 'setting'
-      //     // permission: 'M_setting_0'
-      //   },
-      //   children: [
-      //     {
-      //       path: '/setting/dataDictionary',
-      //       name: 'powerDD',
-      //       component: () => import(/* webpackChunkName: "setting" */
-      //         '@/views/power/dataDictionary/dataDictionary.vue'),
-      //       meta: {
-      //         title: '数据字典管理',
-      //         icon: 'database'
-      //         // permission: 'M_sys_dataDictionary'
-      //       }
-      //     },
-      //     // {
-      //     //   path: '/setting/register',
-      //     //   name: 'powerRegister',
-      //     //   component: () => import(/* webpackChunkName: "setting" */ '@/views/power/register/register.vue'),
-      //     //   meta: {
-      //     //     title: '参数管理',
-      //     //     icon: 'key',
-      //     //     permission: 'M_sys_register'
-      //     //   }
-      //     // },
-      //     {
-      //       path: '/setting/OperateJournal',
-      //       name: 'powerOperateJournal',
-      //       component: () => import(/* webpackChunkName: "setting" */
-      //         '@/views/power/OperateJournal/OperateJournal.vue'),
-      //       meta: {
-      //         title: '操作日志',
-      //         icon: 'read'
-      //         // permission: 'M_operateJournal'
-      //       }
-      //     }
-      //   ]
-      // }
-      // 公告
-      {
-        path: '/notice',
-        name: 'notice',
-        component: () => import(/* webpackChunkName: "home" */ '@/views/notice/list'),
-        meta: {
-          title: '公告',
-          icon: 'bell'
-        },
-        hidden: true
-      }
     ]
   },
   {

+ 20 - 17
src/layouts/BasicLayout.vue

@@ -41,26 +41,29 @@
       <!-- layout content -->
       <a-layout-content :style="{ height: '100%', margin: '30px 20px 0', paddingTop: multiTab&&fixedHeader ? '66px' : (!multiTab&&fixedHeader?'45px':'0') }">
         <transition name="page-transition">
-          <route-view v-if="isRouterAlive"/>
+          <!-- <route-view v-if="isRouterAlive"/> -->
+          <router-view ></router-view>
         </transition>
       </a-layout-content>
       <!-- 视频播放弹窗 -->
-      <a-modal
-        v-model="isShowVideoVal"
-        wrapClassName="vidio_cont"
-        :footer="null"
-        centered
-        :maskClosable="false"
-        :destroyOnClose="true"
-        :width="1000"
-        @cancel="closeVido">
-        <video-player
-          class="video-player vjs-custom-skin"
-          ref="videoPlayer"
-          :playsinline="true"
-          :options="playerOptions"
-        ></video-player>
-      </a-modal>
+      <div v-if="isShowVideoVal">
+        <a-modal
+          v-model="isShowVideoVal"
+          wrapClassName="vidio_cont"
+          :footer="null"
+          centered
+          :maskClosable="false"
+          :destroyOnClose="true"
+          :width="1000"
+          @cancel="closeVido">
+          <video-player
+            class="video-player vjs-custom-skin"
+            ref="videoPlayer"
+            :playsinline="true"
+            :options="playerOptions"
+          ></video-player>
+        </a-modal>
+      </div>
       <!-- layout footer -->
       <a-layout-footer>
         <!-- <global-footer /> -->

+ 3 - 1
src/layouts/BlankLayout.vue

@@ -1,6 +1,8 @@
 <template>
   <div>
-    <router-view />
+    <keep-alive>
+      <router-view :key="$route.name"></router-view>
+    </keep-alive>
   </div>
 </template>
 

+ 3 - 70
src/layouts/PageView.vue

@@ -1,51 +1,9 @@
 <template>
   <div :style="!$route.meta.hiddenHeaderContent ? 'margin: -24px -24px 0px;' : null">
-    <!-- pageHeader , route meta :true on hide -->
-    <!-- <page-header v-if="!$route.meta.hiddenHeaderContent" :title="pageTitle" :logo="logo" :avatar="avatar"> -->
-    <page-header v-if="false" :title="pageTitle" :logo="logo" :avatar="avatar">
-      <slot slot="action" name="action"></slot>
-      <slot slot="content" name="headerContent"></slot>
-      <div slot="content" v-if="!this.$slots.headerContent && description">
-        <p style="font-size: 14px;color: rgba(0,0,0,.65)">{{ description }}</p>
-        <div class="link">
-          <template v-for="(link, index) in linkList">
-            <a :key="index" :href="link.href">
-              <a-icon :type="link.icon" />
-              <span>{{ link.title }}</span>
-            </a>
-          </template>
-        </div>
-      </div>
-      <slot slot="extra" name="extra">
-        <div class="extra-img">
-          <img v-if="typeof extraImage !== 'undefined'" :src="extraImage"/>
-        </div>
-      </slot>
-      <div slot="pageMenu">
-        <div class="page-menu-search" v-if="search">
-          <a-input-search
-            style="width: 80%; max-width: 522px;"
-            placeholder="请输入..."
-            size="large"
-            enterButton="搜索"
-          />
-        </div>
-        <div class="page-menu-tabs" v-if="tabs && tabs.items">
-          <!-- @change="callback" :activeKey="activeKey" -->
-          <a-tabs :tabBarStyle="{margin: 0}" :activeKey="tabs.active()" @change="tabs.callback">
-            <a-tab-pane v-for="item in tabs.items" :tab="item.title" :key="item.key"></a-tab-pane>
-          </a-tabs>
-        </div>
-      </div>
-    </page-header>
     <div class="content" :style="{ height: pageHeight+'px' }">
       <div class="page-header-index-wide">
         <slot>
-          <!-- keep-alive  -->
-          <keep-alive v-if="multiTab">
-            <router-view ref="content" />
-          </keep-alive>
-          <router-view v-else ref="content" />
+          <router-view ref="content" />
         </slot>
       </div>
     </div>
@@ -54,12 +12,10 @@
 
 <script>
 import { mapState } from 'vuex'
-import PageHeader from '@/components/PageHeader'
 
 export default {
   name: 'PageView',
   components: {
-    PageHeader
   },
   props: {
     avatar: {
@@ -92,15 +48,12 @@ export default {
   },
   computed: {
     ...mapState({
-      multiTab: state => state.app.multiTab
+      multiTab: state => state.app.multiTab,
+      closeTabPages: state => state.app.closeTabPages
     })
-    // contHeight () {
-    //   return window.innerHeight - 80
-    // }
   },
   mounted () {
     this.tabs = this.directTabs
-    this.getPageMeta()
     this.setpageH()
     const _this = this
     window.onresize = () => {
@@ -112,32 +65,12 @@ export default {
   activated () {
     this.setpageH()
   },
-  updated () {
-    this.getPageMeta()
-  },
   methods: {
     setpageH () {
       this.$nextTick(() => {
         this.$store.dispatch('SetWinHeight', window.innerHeight)
         this.pageHeight = window.innerHeight - 85
       })
-    },
-    getPageMeta () {
-      // eslint-disable-next-line
-      this.pageTitle = (typeof(this.title) === 'string' || !this.title) ? this.title : this.$route.meta.title
-
-      const content = this.$refs.content
-      if (content) {
-        if (content.pageMeta) {
-          Object.assign(this, content.pageMeta)
-        } else {
-          this.description = content.description
-          this.linkList = content.linkList
-          this.extraImage = content.extraImage
-          this.search = content.search === true
-          this.tabs = content.tabs
-        }
-      }
     }
   }
 }

+ 1 - 1
src/layouts/UserLayout.vue

@@ -41,7 +41,7 @@ export default {
     return {
       title: process.env.VUE_APP_PRO_NAME,
       company: process.env.VUE_APP_COM_NAME, //  公司
-      icp: process.env.VUE_APP_ICP, //  备案号
+      icp: process.env.VUE_APP_ICP //  备案号
       // logo: require(process.env.VUE_APP_LOGO) //  logo
     }
   },

+ 8 - 1
src/main.js

@@ -1,6 +1,5 @@
 // ie polyfill
 import '@babel/polyfill'
-
 import Vue from 'vue'
 import App from './App.vue'
 import router from './router'
@@ -30,9 +29,17 @@ Vue.config.productionTip = false
 Vue.use(VueAxios)
 Vue.use(VueCookies)
 Vue.$cookies.config('7d')
+
+// 视频播放插件
 require('video.js/dist/video-js.css')
 require('vue-video-player/src/custom-theme.css')
 Vue.use(VideoPlayer)
+
+//引入vuescroll自定义滚动条
+import vuescroll from "vuescroll"
+import "vuescroll/dist/vuescroll.css"
+Vue.use(vuescroll)
+
 /**
  * 权限检查
  */

+ 3 - 1
src/store/getters.js

@@ -17,7 +17,9 @@ const getters = {
   nowRoute: state => state.app.nowRoute,
   isShowVideo: state => state.app.isShowVideo,
   isNewTab: state => state.app.isNewTab,
-  isNewSubTab: state => state.app.isNewSubTab
+  isNewSubTab: state => state.app.isNewSubTab,
+  closeTabPages: state => state.app.closeTabPages,
+  loadingStatus: state => state.app.loadingStatus
 }
 
 export default getters

+ 6 - 1
src/store/modules/app.js

@@ -28,8 +28,10 @@ const app = {
     nowRoute: '', // 当前路由
     isShowVideo: false, // 是否显示视频弹窗
     isNewTab: false,
+    closeTabPages: [], // 已关闭的页面
     isNewSubTab: false,
     updateList: false,
+    loadingStatus: false,
     winHeight: 0 //  窗口高度
   },
   mutations: {
@@ -91,7 +93,10 @@ const app = {
     },
     SET_WIN_HEIGHT: (state, val) => {
       state.winHeight = val
-    }
+    },
+    SET_loadingStatus: (state, val) => {
+      state.loadingStatus = val
+    },
   },
   actions: {
     setSidebar ({

+ 66 - 2
src/utils/mixin.js

@@ -74,5 +74,69 @@ const AppDeviceEnquire = {
     })
   }
 }
-
-export { mixin, AppDeviceEnquire, mixinDevice }
+// 所有页
+const commonMixin = {
+  watch: {
+    '$store.state.app.loadingStatus': function (a,b) {
+      if(!a){
+        if(this.disabled!== undefined){
+          this.disabled = a
+        }
+        if(this.spinning!== undefined){
+          this.spinning = a
+        }
+      }
+    }
+  },
+  methods:{
+    // 清除组件缓存
+    clearCompCache(cache,keys,key){
+      if (cache[key]&&cache[key].componentInstance){
+        cache[key].componentInstance.$destroy()
+        if (keys.length) {
+            var index = keys.indexOf(key);
+            if (index > -1) {
+                keys.splice(index, 1);
+            }
+        }
+        delete cache[key];
+      }
+    }
+  },
+  beforeRouteLeave(to, from, next) {
+    const newVal = to
+    const oldVal = from
+    // 是否时同一个父级菜单下的页面
+    const mnlen = newVal.matched.length < 3
+    const newMatched = newVal.matched[mnlen ? 1 : 2]
+    const molen = oldVal.matched.length < 3
+    const oldMatched = oldVal.matched[molen ? 1 : 2]
+    const hasChildren = newMatched.name == oldMatched.name
+    // 判断是否是新增,编辑,详情页
+    const oa = oldVal.meta.title.indexOf('详情') >= 0
+    const ob = oldVal.meta.title.indexOf('新增') >= 0
+    const oc = oldVal.meta.title.indexOf('编辑') >= 0
+    const oxt = oldVal.meta.replaceTab
+    // console.log(hasChildren,oa||ob||oc||oxt)
+    const key = this.$vnode.key
+    const parentNode = this.$vnode.parent
+    const cache = parentNode&&parentNode.componentInstance?parentNode.componentInstance.cache:null
+    const keys = parentNode&&parentNode.componentInstance?parentNode.componentInstance.keys:null
+    const closeTabPages = this.$store.state.app.closeTabPages
+    // console.log(closeTabPages,key)
+    // 清空同级路由的组件缓存
+    if(hasChildren&&(oa||ob||oc||oxt)&&cache&&keys){
+      this.clearCompCache(cache,keys,key)
+    }
+    // 批量清空组件缓存
+    if(closeTabPages.length&&cache&&keys){
+      for(let i=0;i<closeTabPages.length;i++){
+        this.clearCompCache(cache,keys,closeTabPages[i])
+      }
+      this.$store.state.app.closeTabPages = []
+    }
+    // console.log(cache,keys)
+    next()
+  }
+}
+export { mixin, AppDeviceEnquire, mixinDevice, commonMixin }

+ 60 - 12
src/utils/request.js

@@ -1,38 +1,82 @@
-// import Vue from 'vue'
+import Vue from 'vue'
 import axios from 'axios'
 import store from '@/store'
 import notification from 'ant-design-vue/es/notification'
 import modal from 'ant-design-vue/es/modal'
 import { VueAxios } from './axios'
-// import { ACCESS_TOKEN } from '@/store/mutation-types'
-console.log(window.location.protocol)
+ 
 // 创建 axios 实例
 const service = axios.create({
   baseURL: process.env.VUE_APP_API_BASE_URL, // api base_url
-  timeout: 60000 // 请求超时时间
+  timeout: 10000 ,// 请求超时时间
 })
 
 const err = (error) => {
-  console.log(error, 'error')
+  let config = error.config;
+  // 网络连接出错
+  if (error.message.indexOf('Network Error') >= 0) {
+    notification.destroy()
+    notification.error({
+      message: '提示',
+      description: '无网络连接,请检查网络是否连接正常'
+    })
+    store.commit('SET_loadingStatus', false)
+    return Promise.reject(err)
+  }
+  
+  // 业务错误提示
   if (error.response) {
     const status = error.response.status
-    if ((status == 503 || status == 500) && window.location.pathname != '/user/login') {
+    if ((status == 503 || status == 500)) {
       notification.destroy()
       notification.error({
         message: '提示',
         description: error.response.data.message
       })
     }
+    store.commit('SET_loadingStatus', false)
+    return Promise.reject(err)
   }
+  
   // 超时无法访问服务
-  if (error.message.indexOf('timeout') >= 0 && window.location.pathname != '/user/login') {
+  if (error.message.indexOf('timeout') >= 0) {
     notification.destroy()
     notification.error({
       message: '提示',
-      description: '请求超时'
+      description: '网络连接超时,正在重连...'
     })
+    // If config does not exist or the retry option is not set, reject
+    if(!config || !config.retry) return Promise.reject(err);
+    // Set the variable for keeping track of the retry count
+    config.__retryCount = Vue.ls.get(config.url+'__retryCount') || 0;
+    // Check if we've maxed out the total number of retries
+    if(config.__retryCount >= config.retry) {
+        Vue.ls.remove(config.url+'__retryCount')
+        notification.destroy()
+        notification.error({
+          message: '提示',
+          description: '网络重连失败,请检测网络连接是否正常'
+        })
+        store.commit('SET_loadingStatus', false)
+        // Reject with the error
+        return Promise.reject(err);
+    }
+    // Increase the retry count
+    config.__retryCount += 1;
+    Vue.ls.set(config.url+'__retryCount',config.__retryCount)
+    // Create new promise to handle exponential backoff
+    config.url = config.url.replace('/api','')
+    let backoff = new Promise(function(resolve) {
+        setTimeout(function() {
+            resolve();
+        }, config.retryDelay || 1);
+    });
+    
+    // Return the promise in which recalls axios to retry the request
+    return backoff.then(function() {
+        return service(config);
+    });
   }
-  return Promise.reject(error)
 }
 
 // request interceptor
@@ -43,13 +87,16 @@ service.interceptors.request.use(config => {
     config.headers['access-token'] = token // 让每个请求携带自定义 token 请根据实际情况自行修改
     config.headers['access-org'] = changeOrg // 当前要切换的账号 sn
   }
+  config.retry = 3
+  config.retryDelay = 1000
+  store.commit('SET_loadingStatus', true)
   return config
 }, err)
 
 // response interceptor
 service.interceptors.response.use((response) => {
-  // console.log(response, 'response.data.status')
   const et = sessionStorage.getItem('errorTips')
+  // 无权限或登录超时
   if ((response.data.status == '1001' || response.data.status == '1099') && !et) {
     sessionStorage.setItem('errorTips', 1)
     modal.destroyAll()
@@ -63,14 +110,15 @@ service.interceptors.response.use((response) => {
         })
       }
     })
-  }
-  if ((response.data.status == '401' || response.data.status == '900' || response.data.status == '500') && window.location.pathname != '/user/login') {
+  }else if(response.data.status != 200 && response.data.status){
+    // 其它业务错误提示
     notification.destroy()
     notification.error({
       message: '提示',
       description: response.data.message
     })
   }
+  store.commit('SET_loadingStatus', false)
   return response.data
 }, err)
 

+ 4 - 1
src/views/allocationManagement/chainTransferIn/detail.vue

@@ -57,13 +57,16 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import { getOperationalPrecision } from '@/libs/tools.js'
 import { allocLinkagePutDetailList, allocLinkagePutDetailSn, allocLinkagePutDetailCount, allocLinkagePutDetailPrint } from '@/api/allocLinkagePut'
 import Print from '@/views/common/print.vue'
 import { hdPrint } from '@/libs/JGPrint'
 export default {
+  name: 'AllocLinkagePutDetail',
   components: { STable, VSelect, Print },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,
@@ -114,7 +117,7 @@ export default {
   methods: {
     //  返回列表
     handleBack () {
-      this.$router.push({ path: '/allocationManagement/chainTransferIn/list', query: { closeLastOldTab: true } })
+      this.$router.push({ path: '/allocationManagement/chainTransferIn/list' })
     },
     // 基本信息
     getDetail () {

+ 4 - 1
src/views/allocationManagement/chainTransferIn/edit.vue

@@ -109,6 +109,7 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import { getOperationalPrecision } from '@/libs/tools.js'
 import { dealerProductTypeList } from '@/api/dealerProductType'
@@ -117,7 +118,9 @@ import { allocLinkagePutDetailSn, allocLinkagePutDetailList, allocLinkagePutDeta
 import Print from '@/views/common/print.vue'
 import { hdPrint } from '@/libs/JGPrint'
 export default {
+  name: 'AllocLinkagePutEdit',
   components: { STable, VSelect, Print },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,
@@ -229,7 +232,7 @@ export default {
     },
     //  返回列表
     handleBack () {
-      this.$router.push({ path: '/allocationManagement/chainTransferIn/list', query: { closeLastOldTab: true } })
+      this.$router.push({ path: '/allocationManagement/chainTransferIn/list' })
     },
     //  产品分类  change
     changeProductType (val, opt) {

+ 5 - 2
src/views/allocationManagement/chainTransferIn/list.vue

@@ -118,12 +118,15 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import rangeDate from '@/views/common/rangeDate.vue'
 import { allocLinkagePutList, allocLinkagePutAudit } from '@/api/allocLinkagePut'
 import { getTenantList } from '@/api/allocLinkageOut'
 export default {
+  name: 'AllocLinkagePutList',
   components: { STable, VSelect, rangeDate },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,
@@ -249,9 +252,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 - 0
src/views/allocationManagement/chainTransferOut/basicInfoModal.vue

@@ -51,11 +51,13 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { VSelect } from '@/components'
 import { getTenantList, allocLinkageOutSave } from '@/api/allocLinkageOut'
 export default {
   name: 'ChainTransferOutBasicInfoModal',
   components: { VSelect },
+  mixins: [commonMixin],
   props: {
     openModal: {
       //  弹框显示状态

+ 4 - 1
src/views/allocationManagement/chainTransferOut/detail.vue

@@ -63,13 +63,16 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import { getOperationalPrecision } from '@/libs/tools.js'
 import { allocLinkageOutDetailSn, allocLinkageOutDetailList, allocLinkageOutDetailCount, allocLinkageOutDetailPrint } from '@/api/allocLinkageOut'
 import Print from '@/views/common/print.vue'
 import { hdPrint } from '@/libs/JGPrint'
 export default {
+  name: 'AllocLinkageOutDetail',
   components: { STable, VSelect, Print },
+  mixins: [commonMixin],
   props: {
     outBizSn: { //  有值则为弹框,无值则为页面
       type: [Number, String],
@@ -124,7 +127,7 @@ export default {
   methods: {
     //  返回列表
     handleBack () {
-      this.$router.push({ path: '/allocationManagement/chainTransferOut/list', query: { closeLastOldTab: true } })
+      this.$router.push({ path: '/allocationManagement/chainTransferOut/list' })
     },
     // 基本信息
     getDetail () {

+ 4 - 1
src/views/allocationManagement/chainTransferOut/edit.vue

@@ -190,6 +190,7 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import { getOperationalPrecision } from '@/libs/tools.js'
 import { allocLinkageOutDetailSn, allocLinkageOutDetailList, allocLinkageOutDetailSave, allocLinkageOutDetailDel, allocLinkageOutDetailCount, allocLinkageOutSubmit, allocLinkageOutDetailDelAll, allocLinkageOutDetailPrint } from '@/api/allocLinkageOut'
@@ -200,7 +201,9 @@ import { warehouseAllList } from '@/api/warehouse'
 import Print from '@/views/common/print.vue'
 import { hdPrint } from '@/libs/JGPrint'
 export default {
+  name: 'AllocLinkageOutEdit',
   components: { STable, VSelect, Print },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,
@@ -424,7 +427,7 @@ export default {
     },
     //  返回列表
     handleBack () {
-      this.$router.push({ path: '/allocationManagement/chainTransferOut/list', query: { closeLastOldTab: true } })
+      this.$router.push({ path: '/allocationManagement/chainTransferOut/list' })
     },
     filterOption (input, option) {
       return (

+ 15 - 4
src/views/allocationManagement/chainTransferOut/list.vue

@@ -131,13 +131,16 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import rangeDate from '@/views/common/rangeDate.vue'
 import basicInfoModal from './basicInfoModal.vue'
 import getDate from '@/libs/getDate.js'
 import { allocLinkageOutList, allocLinkageAudit, allocLinkageOutDel, allocLinkageOutStock, getTenantList } from '@/api/allocLinkageOut'
 export default {
+  name: 'AllocLinkageOutList',
   components: { STable, VSelect, basicInfoModal, rangeDate },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,
@@ -201,6 +204,11 @@ export default {
     },
     //  重置
     resetSearchForm () {
+      this.resetData()
+      this.$refs.table.refresh(true)
+    },
+    // 重置数据
+    resetData () {
       this.$refs.rangeDate.resetDate(this.time)
       this.queryParam.beginDate = getDate.getCurrMonthDays().starttime
       this.queryParam.endDate = getDate.getCurrMonthDays().endtime
@@ -208,7 +216,6 @@ export default {
       this.queryParam.allocationType = undefined
       this.queryParam.state = undefined
       this.queryParam.settleState = undefined
-      this.$refs.table.refresh(true)
     },
     //  基本信息  保存
     handleOk (data) {
@@ -316,9 +323,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()
@@ -333,8 +340,12 @@ export default {
   activated () {
     // 如果是新页签打开,则重置当前页面
     if (this.$store.state.app.isNewTab) {
+      this.resetData()
+      if (this.$route.query.pageParams) {
+        this.queryParam.state = this.$route.query.pageParams.state
+      }
       this.pageInit()
-      this.resetSearchForm()
+      this.$refs.table.refresh(true)
     }
     // 仅刷新列表,不重置页面
     if (this.$store.state.app.updateList) {

+ 2 - 0
src/views/allocationManagement/storeTransferOut/basicInfoModal.vue

@@ -44,6 +44,7 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { VSelect } from '@/components'
 import { storeCallOutSave } from '@/api/storeCallOut'
 import { getLookUpData } from '@/api/data'
@@ -52,6 +53,7 @@ import { storeCallOutTypeAllList } from '@/api/storeCallOutType'
 export default {
   name: 'StoreTransferOutBasicInfoModal',
   components: { VSelect, custList },
+  mixins: [commonMixin],
   props: {
     openModal: {
       //  弹框显示状态

+ 4 - 1
src/views/allocationManagement/storeTransferOut/detail.vue

@@ -59,13 +59,16 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import { getOperationalPrecision } from '@/libs/tools.js'
 import { storeCallOutDetailList, storeCallOutDetailCount, storeCallOutDetailSn, storeCallOutDetailPrint } from '@/api/storeCallOut'
 import Print from '@/views/common/print.vue'
 import { hdPrint } from '@/libs/JGPrint'
 export default {
+  name: 'StoreCallOutDetail',
   components: { STable, VSelect, Print },
+  mixins: [commonMixin],
   props: {
     outBizSn: { //  有值则为弹框,无值则为页面
       type: [Number, String],
@@ -119,7 +122,7 @@ export default {
   methods: {
     //  返回列表
     handleBack () {
-      this.$router.push({ path: '/allocationManagement/storeTransferOut/list', query: { closeLastOldTab: true } })
+      this.$router.push({ path: '/allocationManagement/storeTransferOut/list' })
     },
     // 打印预览/快捷打印
     handlePrint (type, printerType) {

+ 4 - 1
src/views/allocationManagement/storeTransferOut/edit.vue

@@ -192,6 +192,7 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import { getOperationalPrecision } from '@/libs/tools.js'
 import { storeCallOutDetailList, storeCallOutDetail, storeCallOutDetailCount, storeCallOutDetailSave, storeCallOutDetailDel, storeCallOutSubmit, storeCallOutDetailPrint } from '@/api/storeCallOut'
@@ -202,7 +203,9 @@ import { productQuery } from '@/api/allocWarehouse'
 import Print from '@/views/common/print.vue'
 import { hdPrint } from '@/libs/JGPrint'
 export default {
+  name: 'StoreCallOutEdit',
   components: { STable, VSelect, Print },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,
@@ -426,7 +429,7 @@ export default {
     },
     //  返回列表
     handleBack () {
-      this.$router.push({ path: '/allocationManagement/storeTransferOut/list', query: { closeLastOldTab: true } })
+      this.$router.push({ path: '/allocationManagement/storeTransferOut/list' })
     },
     // 已选产品 调出数量  blur
     outQtyBlur (val, record) {

+ 15 - 4
src/views/allocationManagement/storeTransferOut/list.vue

@@ -120,6 +120,7 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import rangeDate from '@/views/common/rangeDate.vue'
 import getDate from '@/libs/getDate.js'
@@ -127,7 +128,9 @@ import basicInfoModal from './basicInfoModal.vue'
 import { storeCallOutList, storeCallOutAudit, storeCallOutDel, storeCallOutOut } from '@/api/storeCallOut'
 import { storeCallOutTypeAllList } from '@/api/storeCallOutType'
 export default {
+  name: 'StoreCallOutList',
   components: { STable, VSelect, basicInfoModal, rangeDate },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,
@@ -191,6 +194,11 @@ export default {
     },
     //  重置
     resetSearchForm () {
+      this.resetData()
+      this.$refs.table.refresh(true)
+    },
+    // 重置数据
+    resetData () {
       this.$refs.rangeDate.resetDate(this.time)
       this.queryParam.beginDate = getDate.getCurrMonthDays().starttime
       this.queryParam.endDate = getDate.getCurrMonthDays().endtime
@@ -198,7 +206,6 @@ export default {
       this.queryParam.callOutType = undefined
       this.queryParam.state = undefined
       this.queryParam.settleState = undefined
-      this.$refs.table.refresh(true)
     },
     //  基本信息  保存
     handleOk (data) {
@@ -301,9 +308,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()
@@ -318,8 +325,12 @@ export default {
   activated () {
     // 如果是新页签打开,则重置当前页面
     if (this.$store.state.app.isNewTab) {
+      this.resetData()
+      if (this.$route.query.pageParams) {
+        this.queryParam.state = this.$route.query.pageParams.state
+      }
       this.pageInit()
-      this.resetSearchForm()
+      this.$refs.table.refresh(true)
     }
     // 仅刷新列表,不重置页面
     if (this.$store.state.app.updateList) {

+ 2 - 0
src/views/allocationManagement/warehouseAllocation/basicInfoModal.vue

@@ -46,12 +46,14 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { VSelect } from '@/components'
 import { warehouseAllList } from '@/api/warehouse.js'
 import { allocWarehouseSave } from '@/api/allocWarehouse.js'
 export default {
   name: 'WarehouseAllocationBasicInfoModal',
   components: { VSelect },
+  mixins: [commonMixin],
   props: {
     openModal: {
       //  弹框显示状态

+ 4 - 1
src/views/allocationManagement/warehouseAllocation/detail.vue

@@ -69,10 +69,13 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import { allocWarehouseDetailSn, allocWarehouseDetailCount, allocWarehouseDetailList } from '@/api/allocWarehouse.js'
 export default {
+  name: 'AllocWarehouseDetail',
   components: { STable, VSelect },
+  mixins: [commonMixin],
   props: {
     outBizSn: { //  有值则为弹框,无值则为页面
       type: [Number, String],
@@ -122,7 +125,7 @@ export default {
   methods: {
     //  返回列表
     handleBack () {
-      this.$router.push({ path: '/allocationManagement/warehouseAllocation/list', query: { closeLastOldTab: true } })
+      this.$router.push({ path: '/allocationManagement/warehouseAllocation/list' })
     },
     //  新增/编辑
     handleEdit () {

+ 4 - 1
src/views/allocationManagement/warehouseAllocation/edit.vue

@@ -230,13 +230,16 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import { allocWarehouseDetailList, allocWarehouseDetail, productQuery, allocWarehouseDetailCount, allocWarehouseDetailSave, allocWarehouseDetailDel, allocWarehouseSubmit } from '@/api/allocWarehouse'
 import { dealerProductBrandQuery } from '@/api/dealerProductBrand'
 import { dealerProductTypeList } from '@/api/dealerProductType'
 import { warehouseLocAllList } from '@/api/warehouse'
 export default {
+  name: 'AllocWarehouseEdit',
   components: { STable, VSelect },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,
@@ -476,7 +479,7 @@ export default {
     },
     //  返回列表
     handleBack () {
-      this.$router.push({ path: '/allocationManagement/warehouseAllocation/list', query: { closeLastOldTab: true } })
+      this.$router.push({ path: '/allocationManagement/warehouseAllocation/list' })
     },
     // 已选产品 调出数量  blur
     outQtyBlur (val, record) {

+ 15 - 4
src/views/allocationManagement/warehouseAllocation/list.vue

@@ -107,6 +107,7 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { allocWarehouseList, allocWarehouseAudit, allocWarehouseDel } from '@/api/allocWarehouse'
 import { warehouseAllList } from '@/api/warehouse.js'
 import { STable, VSelect } from '@/components'
@@ -114,7 +115,9 @@ import basicInfoModal from './basicInfoModal.vue'
 import rangeDate from '@/views/common/rangeDate.vue'
 import getDate from '@/libs/getDate.js'
 export default {
+  name: 'AllocWarehouseList',
   components: { STable, VSelect, basicInfoModal, rangeDate },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,
@@ -185,13 +188,17 @@ export default {
     },
     //  重置
     resetSearchForm () {
+      this.resetData()
+      this.$refs.table.refresh(true)
+    },
+    // 重置数据
+    resetData () {
       this.$refs.rangeDate.resetDate(this.time)
       this.queryParam.beginDate = getDate.getCurrMonthDays().starttime
       this.queryParam.endDate = getDate.getCurrMonthDays().endtime,
       this.queryParam.outWarehouseSn = undefined
       this.queryParam.putWarehouseSn = undefined
       this.queryParam.state = undefined
-      this.$refs.table.refresh(true)
     },
     //  删除
     handleDel (row) {
@@ -258,9 +265,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()
@@ -275,8 +282,12 @@ export default {
   activated () {
     // 如果是新页签打开,则重置当前页面
     if (this.$store.state.app.isNewTab) {
+      this.resetData()
+      if (this.$route.query.pageParams) {
+        this.queryParam.state = this.$route.query.pageParams.state
+      }
       this.pageInit()
-      this.resetSearchForm()
+      this.$refs.table.refresh(true)
     }
     // 仅刷新列表,不重置页面
     if (this.$store.state.app.updateList) {

+ 2 - 0
src/views/basicData/bulkPartsTypeManagement/editModal.vue

@@ -39,11 +39,13 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable } from '@/components'
 import { sparePartsPutTypeSave } from '@/api/sparePartsPutType'
 export default {
   name: 'BulkPartsTypeEditModal',
   components: { STable },
+  mixins: [commonMixin],
   props: {
     openModal: { //  弹框显示状态
       type: Boolean,

+ 3 - 0
src/views/basicData/bulkPartsTypeManagement/list.vue

@@ -45,11 +45,14 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { sparePartsPutTypeList, sparePartsPutTypeDel } from '@/api/sparePartsPutType'
 import { STable, VSelect } from '@/components'
 import bulkPartsTypeEditModal from './editModal.vue'
 export default {
+  name: 'BulkPartsTypeList',
   components: { STable, VSelect, bulkPartsTypeEditModal },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,

+ 2 - 0
src/views/basicData/customerTypeManagement/editModal.vue

@@ -39,11 +39,13 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable } from '@/components'
 import { custTypeSave } from '@/api/custType'
 export default {
   name: 'CustomerTypeEditModal',
   components: { STable },
+  mixins: [commonMixin],
   props: {
     openModal: { //  弹框显示状态
       type: Boolean,

+ 3 - 0
src/views/basicData/customerTypeManagement/list.vue

@@ -60,11 +60,14 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { custTypeList, custTypeDel } from '@/api/custType'
 import { STable, VSelect } from '@/components'
 import customerTypeEditModal from './editModal.vue'
 export default {
+  name: 'CustomerTypeList',
   components: { STable, VSelect, customerTypeEditModal },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,

+ 2 - 0
src/views/basicData/expenseType/editModal.vue

@@ -42,11 +42,13 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable } from '@/components'
 import { costTypeSave } from '@/api/costType'
 export default {
   name: 'ExpenseTypeEditModal',
   components: { STable },
+  mixins: [commonMixin],
   props: {
     openModal: { //  弹框显示状态
       type: Boolean,

+ 3 - 0
src/views/basicData/expenseType/list.vue

@@ -56,11 +56,14 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { costTypeAllQuery, costTypeDel } from '@/api/costType'
 import { STable } from '@/components'
 import expenseTypeEditModal from './editModal.vue'
 export default {
+  name: 'ExpenseTypeList',
   components: { STable, expenseTypeEditModal },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,

+ 2 - 0
src/views/basicData/storeTransferOutTypeManagement/editModal.vue

@@ -39,11 +39,13 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable } from '@/components'
 import { storeCallOutTypeSave } from '@/api/storeCallOutType'
 export default {
   name: 'StoreTransferOutTypeEditModal',
   components: { STable },
+  mixins: [commonMixin],
   props: {
     openModal: { //  弹框显示状态
       type: Boolean,

+ 3 - 0
src/views/basicData/storeTransferOutTypeManagement/list.vue

@@ -49,11 +49,14 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import storeTransferOutTypeEditModal from './editModal.vue'
 import { storeCallOutTypeList, storeCallOutTypeDel } from '@/api/storeCallOutType'
 export default {
+  name: 'StoreCallOutTypeList',
   components: { STable, VSelect, storeTransferOutTypeEditModal },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,

+ 5 - 2
src/views/bulkManagement/bulkImport/list.vue

@@ -69,11 +69,14 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, Upload } from '@/components'
 import { stockImportList, stockImportFinish, stockImportCancel, stockImportExportError } from '@/api/stockImport'
 import { downloadExcel } from '@/libs/JGPrint.js'
 export default {
+  name: 'StockImportList',
   components: { STable, Upload },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,
@@ -218,9 +221,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 - 0
src/views/bulkManagement/bulkReturnGoods/basicInfoModal.vue

@@ -50,6 +50,7 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { VSelect } from '@/components'
 import supplierInfoEditModal from '@/views/supplierManagement/supplierInfo/editModal.vue'
 import { supplierAllList } from '@/api/supplier'
@@ -57,6 +58,7 @@ import { sparePartsRetSave } from '@/api/sparePartsRet'
 export default {
   name: 'BulkReturnGoodsBasicInfoModal',
   components: { VSelect, supplierInfoEditModal },
+  mixins: [commonMixin],
   props: {
     openModal: {
       //  弹框显示状态

+ 2 - 0
src/views/bulkManagement/bulkReturnGoods/detailModal.vue

@@ -51,6 +51,7 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable } from '@/components'
 import Print from '@/views/common/print.vue'
 import { hdPrint } from '@/libs/JGPrint'
@@ -58,6 +59,7 @@ import { sparePartsRetDetail, sparePartsRetDetailList, sparePartsRetDetailCount,
 export default {
   name: 'BulkReturnGoodsDetailModal',
   components: { STable, Print },
+  mixins: [commonMixin],
   props: {
     openModal: { //  弹框显示状态
       type: Boolean,

+ 4 - 1
src/views/bulkManagement/bulkReturnGoods/edit.vue

@@ -184,6 +184,7 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import Print from '@/views/common/print.vue'
 import { hdPrint } from '@/libs/JGPrint'
@@ -198,7 +199,9 @@ import {
   sparePartsRetDetailPrint,
   sparePartsRetDetailExport } from '@/api/sparePartsRet'
 export default {
+  name: 'BulkReturnGoodsEdit',
   components: { STable, VSelect, Print },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,
@@ -420,7 +423,7 @@ export default {
     },
     //  返回列表
     handleBack () {
-      this.$router.push({ path: '/bulkManagement/bulkReturnGoods/list', query: { closeLastOldTab: true } })
+      this.$router.push({ path: '/bulkManagement/bulkReturnGoods/list' })
     },
     // 双击快速添加
     handleClickRow (record) {

+ 4 - 1
src/views/bulkManagement/bulkReturnGoods/grabEdit.vue

@@ -175,6 +175,7 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import Print from '@/views/common/print.vue'
 import { hdPrint } from '@/libs/JGPrint'
@@ -189,7 +190,9 @@ import {
   sparePartsRetDetailPrint,
   sparePartsRetDetailExport } from '@/api/sparePartsRet'
 export default {
+  name: 'BulkReturnGoodsgrabEdit',
   components: { STable, VSelect, Print },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,
@@ -413,7 +416,7 @@ export default {
     },
     //  返回列表
     handleBack () {
-      this.$router.push({ path: '/bulkManagement/bulkReturnGoods/list', query: { closeLastOldTab: true } })
+      this.$router.push({ path: '/bulkManagement/bulkReturnGoods/list' })
     },
     //  导入明细
     handleImport () {

+ 15 - 4
src/views/bulkManagement/bulkReturnGoods/list.vue

@@ -122,6 +122,7 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import basicInfoModal from './basicInfoModal.vue'
 import bulkReturnGoodsDetailModal from './detailModal.vue'
@@ -131,7 +132,9 @@ import auditModal from '@/views/common/auditModal.vue'
 import { supplierAllList } from '@/api/supplier'
 import { sparePartsRetList, sparePartsRetDel, sparePartsRetOutStock, sparePartsRetAudit } from '@/api/sparePartsRet'
 export default {
+  name: 'BulkReturnGoodsList',
   components: { STable, VSelect, basicInfoModal, rangeDate, bulkReturnGoodsDetailModal, auditModal },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,
@@ -206,6 +209,11 @@ export default {
     },
     //  重置
     resetSearchForm () {
+      this.resetData()
+      this.$refs.table.refresh(true)
+    },
+    // 重置数据
+    resetData () {
       this.$refs.rangeDate.resetDate(this.time)
       this.queryParam.beginDate = getDate.getCurrMonthDays().starttime
       this.queryParam.endDate = getDate.getCurrMonthDays().endtime
@@ -214,7 +222,6 @@ export default {
       this.queryParam.isGrab = undefined
       this.queryParam.settleState = undefined
       this.queryParam.state = undefined
-      this.$refs.table.refresh(true)
     },
     //  基本信息  保存
     handleOk (data) {
@@ -331,9 +338,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()
@@ -348,8 +355,12 @@ export default {
   activated () {
     // 如果是新页签打开,则重置当前页面
     if (this.$store.state.app.isNewTab) {
+      this.resetData()
+      if (this.$route.query.pageParams) {
+        this.queryParam.state = this.$route.query.pageParams.state
+      }
       this.pageInit()
-      this.resetSearchForm()
+      this.$refs.table.refresh(true)
     }
     // 仅刷新列表,不重置页面
     if (this.$store.state.app.updateList) {

+ 23 - 21
src/views/bulkManagement/bulkWarehousingOrder/basicInfoModal.vue

@@ -17,30 +17,30 @@
         :label-col="formItemLayout.labelCol"
         :wrapper-col="formItemLayout.wrapperCol" >
         <a-form-model-item label="供应商" prop="supplierSn">
-        <a-select
-          placeholder="请输入名称查询,如果没有请点击 '+' 新增"
-          allowClear
-          v-model="form.supplierSn"
-          :showSearch="true"
-          option-filter-prop="children"
-          :filter-option="filterOption"
-          style="width: 80%;">
-          <a-select-option v-for="item in supplierList" :key="item.supplierSn" :value="item.supplierSn" :disabled="item.enabledFlag==0">{{ item.supplierName }}</a-select-option>
-        </a-select>
-        <a-button icon="plus" size="small" @click="openSupplierModal=true" id="bulkWarehousingOrder-basicInfo-add-btn" style="margin-left: 10px;"></a-button>
+          <a-select
+            placeholder="请输入名称查询,如果没有请点击 '+' 新增"
+            allowClear
+            v-model="form.supplierSn"
+            :showSearch="true"
+            option-filter-prop="children"
+            :filter-option="filterOption"
+            style="width: 80%;">
+            <a-select-option v-for="item in supplierList" :key="item.supplierSn" :value="item.supplierSn" :disabled="item.enabledFlag==0">{{ item.supplierName }}</a-select-option>
+          </a-select>
+          <a-button icon="plus" size="small" @click="openSupplierModal=true" id="bulkWarehousingOrder-basicInfo-add-btn" style="margin-left: 10px;"></a-button>
         </a-form-model-item>
         <a-form-model-item label="散件入库类型" prop="sparePartsType">
-        <a-select id="bulkWarehousingOrder-basicInfo-sparePartsType" placeholder="请选择散件入库类型" allowClear v-model="form.sparePartsType">
-          <a-select-option v-for="item in sparePartsPutTypeList" :key="item.sparePartsPutTypeSn" :value="item.sparePartsPutTypeSn">{{ item.name }}</a-select-option>
-        </a-select>
+          <a-select id="bulkWarehousingOrder-basicInfo-sparePartsType" placeholder="请选择散件入库类型" allowClear v-model="form.sparePartsType">
+            <a-select-option v-for="item in sparePartsPutTypeList" :key="item.sparePartsPutTypeSn" :value="item.sparePartsPutTypeSn">{{ item.name }}</a-select-option>
+          </a-select>
         </a-form-model-item>
         <a-form-model-item label="备注" prop="remarks">
-        <a-textarea
-          id="bulkWarehousingOrder-remarks"
-          :maxLength="200"
-          v-model="form.remarks"
-          placeholder="请输入备注(最多200个字符)"
-          allowClear />
+          <a-textarea
+            id="bulkWarehousingOrder-remarks"
+            :maxLength="200"
+            v-model="form.remarks"
+            placeholder="请输入备注(最多200个字符)"
+            allowClear />
         </a-form-model-item>
       </a-form-model>
       <div class="btn-cont">
@@ -54,6 +54,7 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { VSelect } from '@/components'
 import supplierInfoEditModal from '@/views/supplierManagement/supplierInfo/editModal.vue'
 import { supplierAllList } from '@/api/supplier'
@@ -62,6 +63,7 @@ import { sparePartsPurSave } from '@/api/sparePartsPur'
 export default {
   name: 'BulkWarehousingOrderBasicInfoModal',
   components: { VSelect, supplierInfoEditModal },
+  mixins: [commonMixin],
   props: {
     openModal: { //  弹框显示状态
       type: Boolean,
@@ -110,7 +112,7 @@ export default {
                 _this.$emit('ok', res.data)
                 _this.spinning = false
               }, 1000)
-            }else{
+            } else {
               _this.spinning = false
             }
           })

+ 4 - 1
src/views/bulkManagement/bulkWarehousingOrder/detail.vue

@@ -96,13 +96,16 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import { getOperationalPrecision } from '@/libs/tools.js'
 import { sparePartsPurDetail, sparePartsPurDetailList, sparePartsPurDetailCount, sparePartsPurDetailPrint } from '@/api/sparePartsPur'
 import Print from '@/views/common/print.vue'
 import { hdPrint } from '@/libs/JGPrint'
 export default {
+  name: 'BulkWarehousingDetail',
   components: { STable, VSelect, Print },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,
@@ -152,7 +155,7 @@ export default {
   methods: {
     //  返回列表
     handleBack () {
-      this.$router.push({ path: '/bulkManagement/bulkWarehousingOrder/list', query: { closeLastOldTab: true } })
+      this.$router.push({ path: '/bulkManagement/bulkWarehousingOrder/list' })
     },
     // 打印预览/快捷打印
     handlePrint (type, printerType) {

+ 4 - 1
src/views/bulkManagement/bulkWarehousingOrder/edit.vue

@@ -216,6 +216,7 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import basicInfoModal from './basicInfoModal.vue'
 import { getOperationalPrecision } from '@/libs/tools.js'
@@ -227,7 +228,9 @@ import ProductBrand from '../../common/productBrand.js'
 import Print from '@/views/common/print.vue'
 import { hdPrint } from '@/libs/JGPrint'
 export default {
+  name: 'BulkWarehousingEdit',
   components: { STable, VSelect, basicInfoModal, Print, ProductType, ProductBrand },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,
@@ -489,7 +492,7 @@ export default {
     },
     //  返回列表
     handleBack () {
-      this.$router.push({ path: '/bulkManagement/bulkWarehousingOrder/list', query: { closeLastOldTab: true } })
+      this.$router.push({ path: '/bulkManagement/bulkWarehousingOrder/list' })
     },
     // 合计
     getDetailCount (params) {

+ 15 - 4
src/views/bulkManagement/bulkWarehousingOrder/list.vue

@@ -139,6 +139,7 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import rangeDate from '@/views/common/rangeDate.vue'
 import getDate from '@/libs/getDate.js'
@@ -147,7 +148,9 @@ import { sparePartsPurList, sparePartsPurCount, sparePartsPurDel, sparePartsPurP
 import { supplierAllList } from '@/api/supplier'
 import { downloadExcel } from '@/libs/JGPrint.js'
 export default {
+  name: 'BulkWarehousingList',
   components: { STable, VSelect, basicInfoModal, rangeDate },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,
@@ -283,6 +286,11 @@ export default {
     },
     //  重置
     resetSearchForm () {
+      this.resetData()
+      this.$refs.table.refresh(true)
+    },
+    // 重置数据
+    resetData () {
       this.$refs.rangeDate.resetDate(this.time)
       this.queryParam.beginDate = getDate.getCurrMonthDays().starttime
       this.queryParam.endDate = getDate.getCurrMonthDays().endtime
@@ -290,7 +298,6 @@ export default {
       this.queryParam.supplierSn = undefined
       this.queryParam.state = undefined
       this.queryParam.settleState = undefined
-      this.$refs.table.refresh(true)
     },
     filterOption (input, option) {
       return (
@@ -347,9 +354,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()
@@ -364,8 +371,12 @@ export default {
   activated () {
     // 如果是新页签打开,则重置当前页面
     if (this.$store.state.app.isNewTab) {
+      this.resetData()
+      if (this.$route.query.pageParams) {
+        this.queryParam.state = this.$route.query.pageParams.state
+      }
       this.pageInit()
-      this.resetSearchForm()
+      this.$refs.table.refresh(true)
     }
     // 仅刷新列表,不重置页面
     if (this.$store.state.app.updateList) {

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

@@ -75,7 +75,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;
@@ -83,7 +83,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;
         }

+ 4 - 0
src/views/common/custList.vue

@@ -9,6 +9,7 @@
     :filter-option="false"
     :not-found-content="fetching ? undefined : null"
     :dropdownMatchSelectWidth="false"
+    @blur="blurSelect"
     @search="fetchUser"
     @change="handleChange"
     allowClear
@@ -90,6 +91,9 @@ export default {
         data: [],
         fetching: false
       })
+    },
+    blurSelect () {
+      this.data = []
     }
   },
   mounted () {

+ 1 - 1
src/views/customerManagement/customerInfo/detailModal.vue

@@ -110,7 +110,7 @@ export default {
       .item-label {
         width: 115px;
         font-size: 14px;
-        color: rgba(0, 0, 0, 0.85);
+        color: rgba(0, 0, 0);
         flex-shrink: 0;
       }
       .item-main {

+ 3 - 1
src/views/customerManagement/customerInfo/edit.vue

@@ -133,6 +133,7 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import { getArea } from '@/api/data'
 import { custSave, custFindById, settleStyleFindAllList } from '@/api/customer'
@@ -140,6 +141,7 @@ import { custTypeFindAllList } from '@/api/custType'
 export default {
   name: 'CustomerManagementEdit',
   components: { STable, VSelect },
+  mixins: [commonMixin],
   props: {
     model: {
       type: String,
@@ -261,7 +263,7 @@ export default {
     },
     //  返回列表
     handleBack () {
-      this.$router.push({ path: '/customerManagement/customerInfo/list', query: { closeLastOldTab: true } })
+      this.$router.push({ path: '/customerManagement/customerInfo/list' })
     },
     // 获取城市列表
     getCityList (val) {

+ 5 - 2
src/views/customerManagement/customerInfo/list.vue

@@ -120,6 +120,7 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { getArea } from '@/api/data'
 import { custList, custDel, updateEnableStatus } from '@/api/customer'
 import { custTypeFindAllList } from '@/api/custType'
@@ -127,7 +128,9 @@ import { STable, VSelect } from '@/components'
 import rangeDate from '@/views/common/rangeDate.vue'
 import customerManagementDetailModal from './detailModal.vue'
 export default {
+  name: 'CustomerManagementList',
   components: { STable, VSelect, customerManagementDetailModal, rangeDate },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,
@@ -343,9 +346,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()

+ 4 - 1
src/views/financialManagement/companyCollectionPayment/detail.vue

@@ -57,10 +57,13 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import { settleUnitDetailList, settleUnitDetail } from '@/api/settle'
 export default {
+  name: 'CompanyCollectionPaymentDetail',
   components: { STable, VSelect },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,
@@ -107,7 +110,7 @@ export default {
   methods: {
     //  返回列表
     handleBack () {
-      this.$router.push({ path: '/financialManagement/companyCollectionPayment/list', query: { closeLastOldTab: true } })
+      this.$router.push({ path: '/financialManagement/companyCollectionPayment/list' })
     },
     // 详情
     getDetail () {

+ 6 - 3
src/views/financialManagement/companyCollectionPayment/list.vue

@@ -96,12 +96,15 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import rangeDate from '@/views/common/rangeDate.vue'
 import { settleStyleQueryAll } from '@/api/settleStyle'
 import { settleUnitList, settleUnitQuerySum } from '@/api/settle'
 export default {
+  name: 'CompanyCollectionPaymentList',
   components: { STable, VSelect, rangeDate },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,
@@ -216,9 +219,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()
@@ -249,7 +252,7 @@ export default {
       cursor: pointer;
     }
     .common{
-      color: rgba(0, 0, 0, 0.65);
+      color: rgba(0, 0, 0);
     }
   }
 </style>

+ 2 - 0
src/views/financialManagement/companyReceivablePayable/chooseBillModal.vue

@@ -64,12 +64,14 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import rangeDate from '@/views/common/rangeDate.vue'
 import { settleInfoAllList } from '@/api/settle'
 export default {
   name: 'ChooseBillModal',
   components: { STable, VSelect, rangeDate },
+  mixins: [commonMixin],
   props: {
     openModal: { //  弹框显示状态
       type: Boolean,

+ 4 - 1
src/views/financialManagement/companyReceivablePayable/collectionPayment.vue

@@ -147,12 +147,15 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import chooseBillModal from './chooseBillModal.vue'
 import { settleStyleQueryAll } from '@/api/settleStyle'
 import { settleUnitSave } from '@/api/settle'
 export default {
+  name: 'CollectionPaymentDetail',
   components: { STable, VSelect, chooseBillModal },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,
@@ -300,7 +303,7 @@ export default {
     },
     // 返回列表
     handleBack () {
-      this.$router.push({ path: `/financialManagement/companyReceivablePayable/list`, query: { closeLastOldTab: true } })
+      this.$router.push({ path: `/financialManagement/companyReceivablePayable/list` })
     },
     // 关闭
     handleClose () {

+ 5 - 2
src/views/financialManagement/companyReceivablePayable/detail.vue

@@ -72,12 +72,15 @@
 </template>
 
 <script>
-import { downloadExcel } from '@/libs/JGPrint.js'
+import { commonMixin } from '@/utils/mixin'
+// import { downloadExcel } from '@/libs/JGPrint.js'
 import { STable, VSelect } from '@/components'
 import rangeDate from '@/views/common/rangeDate.vue'
 import { settleInfoList, settleInfoQueryReceiptOrPaySum } from '@/api/settle'
 export default {
+  name: 'CompanyReceivablePayableDetail',
   components: { STable, VSelect, rangeDate },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,
@@ -132,7 +135,7 @@ export default {
     },
     //  返回列表
     handleBack () {
-      this.$router.push({ path: '/financialManagement/companyReceivablePayable/list', query: { closeLastOldTab: true } })
+      this.$router.push({ path: '/financialManagement/companyReceivablePayable/list' })
     },
     // 合计
     getTotal (param) {

+ 3 - 0
src/views/financialManagement/companyReceivablePayable/list.vue

@@ -74,10 +74,13 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import { settleUnitClientList, settleInfoQuerySum } from '@/api/settle'
 export default {
+  name: 'CollectionPaymentList',
   components: { STable, VSelect },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,

+ 3 - 1
src/views/financialManagement/expenseManagement/edit.vue

@@ -66,6 +66,7 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import { settleExpenseSave, findExpenseDetail } from '@/api/settleExpense'
 import { costTypeAllQuery } from '@/api/costType'
@@ -73,6 +74,7 @@ import { settleStyleQueryAll } from '@/api/settleStyle'
 export default {
   name: 'ExpenseManagementEdit',
   components: { STable, VSelect },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,
@@ -187,7 +189,7 @@ export default {
     },
     //  返回列表
     handleBack () {
-      this.$router.push({ path: '/financialManagement/expenseManagement/list', query: { closeLastOldTab: true } })
+      this.$router.push({ path: '/financialManagement/expenseManagement/list' })
     },
     pageInit () {
       const vm = this

+ 6 - 3
src/views/financialManagement/expenseManagement/list.vue

@@ -119,13 +119,16 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import rangeDate from '@/views/common/rangeDate.vue'
 import { settleExpenseQuery, delExpense, settleExpenseQuerySum, auditExpense } from '@/api/settleExpense'
 import { costTypeAllQuery } from '@/api/costType'
 import expenseManagementDetailModal from './detailModal.vue'
 export default {
+  name: 'ExpenseManagementList',
   components: { STable, VSelect, expenseManagementDetailModal, rangeDate },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,
@@ -321,9 +324,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()
@@ -362,7 +365,7 @@ export default {
 		cursor: pointer;
 	}
 	.common{
-		color: rgba(0, 0, 0, 0.65);
+		color: rgba(0, 0, 0);
 	}
   }
 </style>

+ 24 - 7
src/views/financialManagement/financialCollection/list.vue

@@ -2,7 +2,7 @@
   <a-card size="small" :bordered="false" class="financialCollectionList-wrap">
     <a-spin :spinning="spinning" tip="Loading...">
       <!-- 标签页 -->
-      <a-tabs type="card" default-active-key="ALL" @change="handleTabChange" class="financialCollectionList-tabs ">
+      <a-tabs type="card" v-model="queryParam.bizType" @change="handleTabChange" class="financialCollectionList-tabs ">
         <a-tab-pane v-for="item in tabPaneData" :key="item.bizType">
           <span slot="tab">{{ item.bizName }}({{ item.countNum }})</span>
         </a-tab-pane>
@@ -117,12 +117,15 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import detailModal from './detailModal.vue'
 import rangeDate from '@/views/common/rangeDate.vue'
 import { settleReceiptQuery, queryByTypeSum, settleReceiptMoney, settleReceiptQuerySum } from '@/api/settleReceipt'
 export default {
+  name: 'FinancialCollectionList',
   components: { STable, VSelect, detailModal, rangeDate },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,
@@ -130,6 +133,7 @@ export default {
       disabled: false, //  查询、重置按钮是否可操作
       openModal: false, // 详情弹框
       tableHeight: 0,
+      curBizType: 'ALL',
       // 查询参数
       queryParam: {
         bizType: 'ALL',
@@ -236,7 +240,12 @@ export default {
       queryByTypeSum({}).then(res => {
         if (res.data && res.status == 200) {
           this.tabPaneData = res.data
-          this.queryParam.bizType = res.data[0].bizType
+          if (this.$route.query.pageParams) {
+            this.queryParam.bizType = JSON.parse(this.$route.query.pageParams).bizType
+          } else {
+            this.queryParam.bizType = res.data[0].bizType
+          }
+          this.$refs.table.refresh(true)
         }
       })
     },
@@ -289,6 +298,11 @@ export default {
     },
     // 重置
     resetSearchForm () {
+      this.resetData()
+      this.$refs.table.refresh(true)
+    },
+    // 重置数据
+    resetData () {
       if (this.advanced) {
         this.$refs.rangeDate.resetDate()
       }
@@ -301,7 +315,6 @@ export default {
         auditBeginDate: '',
         auditEndDate: ''
       }
-      this.$refs.table.refresh(true)
     },
     onSelectChange (record, selected, selectedRows, nativeEvent) {
       if (selected) { //  选择
@@ -344,9 +357,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()
@@ -354,15 +367,19 @@ export default {
   },
   mounted () {
     if (!this.$store.state.app.isNewTab) { // 页签刷新时调用
+      this.resetData()
       this.pageInit()
-      this.resetSearchForm()
     }
   },
   activated () {
     // 如果是新页签打开,则重置当前页面
     if (this.$store.state.app.isNewTab) {
+      this.resetData()
+      if (this.$route.query.pageParams) {
+        this.queryParam.bizType = JSON.parse(this.$route.query.pageParams).bizType
+        this.queryParam.billState = JSON.parse(this.$route.query.pageParams).billState
+      }
       this.pageInit()
-      this.resetSearchForm()
     }
   },
   beforeRouteEnter (to, from, next) {

+ 24 - 8
src/views/financialManagement/financialPayment/list.vue

@@ -2,7 +2,7 @@
   <a-card size="small" :bordered="false" class="finacialPay-wrap">
     <a-spin :spinning="spinning" tip="Loading...">
       <!-- 标签页 -->
-      <a-tabs type="card" size="small" default-active-key="0" @change="handleTabChange" class="finacialPay-tabs">
+      <a-tabs type="card" size="small" v-model="queryParam.bizType" @change="handleTabChange" class="finacialPay-tabs">
         <a-tab-pane v-for="item in tabPaneData" :key="item.bizType">
           <span slot="tab">{{ item.bizName }}({{ item.countNum }})</span>
         </a-tab-pane>
@@ -115,12 +115,15 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import detailModal from './detailModal.vue'
 import { settlePayQuery, queryByTypeSum, settlePayMoney, settlePayQuerySum } from '@/api/settlePay.js'
 import rangeDate from '@/views/common/rangeDate.vue'
 export default {
+  name: 'FinancialPaymentList',
   components: { STable, VSelect, detailModal, rangeDate },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,
@@ -128,7 +131,7 @@ export default {
       disabled: false, //  查询、重置按钮是否可操作
       openModal: false, // 详情弹框
       tableHeight: 0,
-      curBizType: '',
+      curBizType: 'ALL',
       // 查询参数
       queryParam: {
         bizType: 'ALL',
@@ -235,7 +238,12 @@ export default {
       queryByTypeSum({}).then(res => {
         if (res.data && res.status == 200) {
           this.tabPaneData = res.data
-          this.queryParam.bizType = res.data[0].bizType
+          if (this.$route.query.pageParams) {
+            this.queryParam.bizType = JSON.parse(this.$route.query.pageParams).bizType
+          } else {
+            this.queryParam.bizType = res.data[0].bizType
+          }
+          this.$refs.table.refresh(true)
         }
       })
     },
@@ -288,6 +296,11 @@ export default {
     },
     //  重置
     resetSearchForm () {
+      this.resetData()
+      this.$refs.table.refresh(true)
+    },
+    // 重置数据
+    resetData () {
       if (this.advanced) {
         this.$refs.rangeDate.resetDate()
       }
@@ -300,7 +313,6 @@ export default {
         auditBeginDate: '',
         auditEndDate: ''
       }
-      this.$refs.table.refresh(true)
     },
     onSelectChange (record, selected, selectedRows, nativeEvent) {
       if (selected) { //  选择
@@ -343,9 +355,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()
@@ -353,15 +365,19 @@ export default {
   },
   mounted () {
     if (!this.$store.state.app.isNewTab) { // 页签刷新时调用
+      this.resetData()
       this.pageInit()
-      this.resetSearchForm()
     }
   },
   activated () {
     // 如果是新页签打开,则重置当前页面
     if (this.$store.state.app.isNewTab) {
+      this.resetData()
+      if (this.$route.query.pageParams) {
+        this.queryParam.bizType = JSON.parse(this.$route.query.pageParams).bizType
+        this.queryParam.billState = JSON.parse(this.$route.query.pageParams).billState
+      }
       this.pageInit()
-      this.resetSearchForm()
     }
   },
   beforeRouteEnter (to, from, next) {

+ 5 - 2
src/views/financialManagement/inventoryCheckAudit/list.vue

@@ -71,12 +71,15 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import rangeDate from '@/views/common/rangeDate.vue'
 import inventoryCheckingDetailModal from '@/views/inventoryManagement/inventoryChecking/detailModal.vue'
 import { checkWarehouseAuditList, checkWarehouseFinanceAudit, checkWarehouseReInventory } from '@/api/checkWarehouse'
 export default {
+  name: 'InventoryCheckingList',
   components: { STable, VSelect, rangeDate, inventoryCheckingDetailModal },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,
@@ -201,9 +204,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()

+ 5 - 2
src/views/financialManagement/ledgerRecord/list.vue

@@ -63,13 +63,16 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import getDate from '@/libs/getDate.js'
 import { STable, VSelect } from '@/components'
 import rangeDate from '@/views/common/rangeDate.vue'
 import custSatelliteList from '@/views/common/custSatelliteList.vue'
 import { satelliteWHSeparateList, satelliteWHSeparateTotal } from '@/api/satelliteWH'
 export default {
+  name: 'LedgerRecordList',
   components: { STable, VSelect, rangeDate, custSatelliteList },
+  mixins: [commonMixin],
   data () {
     return {
       advanced: true, //  高级搜索 展开/关闭
@@ -172,9 +175,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()

+ 4 - 1
src/views/financialManagement/warehousingAudit/detail.vue

@@ -55,12 +55,15 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import { receivingDetailList, receivingDetailSn, receivingDetailPrint } from '@/api/receiving'
 import Print from '@/views/common/print.vue'
 import { hdPrint } from '@/libs/JGPrint'
 export default {
+  name: 'WarehousingAuditDetail',
   components: { STable, VSelect, Print },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,
@@ -105,7 +108,7 @@ export default {
   methods: {
     //  返回列表
     handleBack () {
-      this.$router.push({ path: '/financialManagement/warehousingAudit/list', query: { closeLastOldTab: true } })
+      this.$router.push({ path: '/financialManagement/warehousingAudit/list' })
     },
     // 打印预览/快捷打印
     handlePrint (type, printerType) {

+ 16 - 5
src/views/financialManagement/warehousingAudit/list.vue

@@ -94,13 +94,16 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import moment from 'moment'
 import getDate from '@/libs/getDate'
 import { STable, VSelect } from '@/components'
 import rangeDate from '@/views/common/rangeDate.vue'
 import { receivingAuditList, receivingStockInAudit, receivingCount } from '@/api/receiving'
 export default {
+  name: 'WarehousingAuditList',
   components: { STable, VSelect, rangeDate },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,
@@ -207,13 +210,17 @@ export default {
     },
     //  重置
     resetSearchForm () {
+      this.resetData()
+      this.$refs.table.refresh(true)
+    },
+    // 重置数据
+    resetData () {
       this.$refs.rangeDate.resetDate(this.auditTime)
       this.queryParam.beginDate = getDate.getThreeMonthDays().starttime + ' 00:00:00'
       this.queryParam.endDate = getDate.getCurrMonthDays().endtime + ' 23:59:59'
       this.queryParam.purchaseBillNo = ''
       this.queryParam.receivingBillNo = ''
       this.queryParam.auditState = 'WAIT_PUT_WAREHOUSE_AUDIT'
-      this.$refs.table.refresh(true)
     },
     pageInit () {
       const _this = this
@@ -229,9 +236,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()
@@ -246,8 +253,12 @@ export default {
   activated () {
     // 如果是新页签打开,则重置当前页面
     if (this.$store.state.app.isNewTab) {
+      this.resetData()
+      if (this.$route.query.pageParams) {
+        this.queryParam.auditState = this.$route.query.pageParams.auditState
+      }
       this.pageInit()
-      this.resetSearchForm()
+      this.$refs.table.refresh(true)
     }
   },
   beforeRouteEnter (to, from, next) {
@@ -262,7 +273,7 @@ export default {
       cursor: pointer;
     }
     .common{
-      color: rgba(0, 0, 0, 0.65);
+      color: rgba(0, 0, 0);
     }
   }
 </style>

+ 2 - 0
src/views/financialManagement/withdrawalManagement/cashOutModal.vue

@@ -47,9 +47,11 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { satelliteWHWithdrawalApply } from '@/api/satelliteWH'
 export default {
   name: 'ProductBrandEditModal',
+  mixins: [commonMixin],
   props: {
     openModal: { //  弹框显示状态
       type: Boolean,

+ 5 - 2
src/views/financialManagement/withdrawalManagement/list.vue

@@ -54,12 +54,15 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import rangeDateTime from '@/views/common/rangeDateTime.vue'
 import cashOutModal from './cashOutModal.vue'
 import { satelliteWHWithdrawalList, satelliteWHWithdrawalAccount } from '@/api/satelliteWH'
 export default {
+  name: 'SatelliteWHWithdrawalList',
   components: { STable, VSelect, rangeDateTime, cashOutModal },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,
@@ -163,9 +166,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 - 0
src/views/inventoryManagement/inventoryChecking/basicInfoModal.vue

@@ -42,11 +42,13 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { VSelect } from '@/components'
 import { checkWarehouseSave, checkWarehouseWarehouse } from '@/api/checkWarehouse'
 export default {
   name: 'ChainTransferOutBasicInfoModal',
   components: { VSelect },
+  mixins: [commonMixin],
   props: {
     openModal: {
       //  弹框显示状态

+ 2 - 0
src/views/inventoryManagement/inventoryChecking/detailModal.vue

@@ -154,6 +154,7 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { downloadExcel } from '@/libs/JGPrint.js'
 import { STable } from '@/components'
 import printModal from './printModal.vue'
@@ -163,6 +164,7 @@ import { checkWarehouseDetailList, checkWarehouseDetail, checkWarehouseDetailCou
 export default {
   name: 'InventoryCheckingDetailModal',
   components: { STable, ProductType, printModal },
+  mixins: [commonMixin],
   props: {
     openModal: { //  弹框显示状态
       type: Boolean,

+ 5 - 2
src/views/inventoryManagement/inventoryChecking/list.vue

@@ -116,6 +116,7 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import rangeDate from '@/views/common/rangeDate.vue'
 import auditModal from '@/views/common/auditModal.vue'
@@ -123,7 +124,9 @@ import basicInfoModal from './basicInfoModal.vue'
 import inventoryCheckingDetailModal from './detailModal.vue'
 import { checkWarehouseList, checkWarehouseDel, checkWarehouseAudit, checkWarehouseValidate, checkWarehouseReInventory } from '@/api/checkWarehouse'
 export default {
+  name: 'InventoryCheckingList',
   components: { STable, VSelect, rangeDate, auditModal, basicInfoModal, inventoryCheckingDetailModal },
+  mixins: [commonMixin],
   data () {
     return {
       queryParam: { //  查询条件
@@ -310,9 +313,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()

+ 4 - 1
src/views/inventoryManagement/inventoryChecking/makeInventory.vue

@@ -168,13 +168,16 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import ProductType from '@/views/common/productType.js'
 import printModal from './printModal.vue'
 import { downloadExcel } from '@/libs/JGPrint.js'
 import { checkWarehouseDetailList, checkWarehouseDetailCount, checkWarehouseInventory, checkWarehouseDetail, checkWarehouseDetailSave, checkWarehouseCheckZero, checkWarehouseWarehouse, checkWarehouseDetailExport, checkWarehouseDetailPrint } from '@/api/checkWarehouse'
 export default {
+  name: 'MakeInventory',
   components: { STable, VSelect, ProductType, printModal },
+  mixins: [commonMixin],
   props: {},
   data () {
     return {
@@ -340,7 +343,7 @@ export default {
     },
     //  返回列表
     handleBack () {
-      this.$router.push({ path: '/inventoryManagement/inventoryChecking/list', query: { closeLastOldTab: true } })
+      this.$router.push({ path: '/inventoryManagement/inventoryChecking/list' })
     },
     // 查询基础信息
     getDetail () {

+ 4 - 1
src/views/inventoryManagement/inventoryChecking/overall.vue

@@ -79,10 +79,13 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import { checkWarehouseDetailList, checkWarehouseDetailCount, checkWarehouseSubmit, checkWarehouseDetail } from '@/api/checkWarehouse'
 export default {
+  name: 'CheckWarehouseOverall',
   components: { STable, VSelect },
+  mixins: [commonMixin],
   props: {},
   data () {
     return {
@@ -149,7 +152,7 @@ export default {
     },
     //  返回列表
     handleBack () {
-      this.$router.push({ path: '/inventoryManagement/inventoryChecking/list', query: { closeLastOldTab: true } })
+      this.$router.push({ path: '/inventoryManagement/inventoryChecking/list' })
     },
     // 查询基础信息
     getDetail () {

+ 2 - 0
src/views/inventoryManagement/inventoryChecking/printModal.vue

@@ -49,7 +49,9 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 export default {
+  mixins: [commonMixin],
   props: {
     openModal: { //  弹框显示状态
       type: Boolean,

+ 4 - 1
src/views/inventoryManagement/inventoryChecking/selfDisk.vue

@@ -222,12 +222,15 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import ProductType from '@/views/common/productType.js'
 import ProductBrand from '@/views/common/productBrand.js'
 import { checkWarehouseDetail, checkWarehouseDetailStockList, checkWarehouseDetailList, checkWarehouseDetailCount, checkWarehouseDetailSave, checkWarehouseDetailSaveBatch, checkWarehouseDetailDel, checkWarehouseSubmit } from '@/api/checkWarehouse'
 export default {
+  name: 'CheckWarehouseSelfDisk',
   components: { STable, VSelect, ProductType, ProductBrand },
+  mixins: [commonMixin],
   props: {},
   data () {
     return {
@@ -483,7 +486,7 @@ export default {
     },
     //  返回列表
     handleBack () {
-      this.$router.push({ path: '/inventoryManagement/inventoryChecking/list', query: { closeLastOldTab: true } })
+      this.$router.push({ path: '/inventoryManagement/inventoryChecking/list' })
     },
     // 查询基础信息
     getDetail () {

+ 5 - 2
src/views/inventoryManagement/inventoryImport/list.vue

@@ -70,11 +70,14 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, Upload } from '@/components'
 import { stockImportList, stockImportFinish, stockImportCancel, stockImportKCExportError } from '@/api/stockImport'
 import { downloadExcel } from '@/libs/JGPrint.js'
 export default {
+  name: 'StockImportList',
   components: { STable, Upload },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,
@@ -212,9 +215,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 - 0
src/views/inventoryManagement/inventoryQuery/detailModal.vue

@@ -36,11 +36,13 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable } from '@/components'
 import { stockDetailList, stockByProductSn } from '@/api/stock'
 export default {
   name: 'InventoryQueryDetailModal',
   components: { STable },
+  mixins: [commonMixin],
   props: {
     openModal: { //  弹框显示状态
       type: Boolean,

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

@@ -123,6 +123,7 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { stockList, stockCount, stockExport } from '@/api/stock'
 import { dealerProductTypeList } from '@/api/dealerProductType'
 import { dealerProductBrandQuery } from '@/api/dealerProductBrand'
@@ -130,7 +131,9 @@ import { STable, VSelect } from '@/components'
 import inventoryQueryDetailModal from './detailModal.vue'
 import { downloadExcel } from '@/libs/JGPrint.js'
 export default {
+  name: 'InventoryQueryList',
   components: { STable, VSelect, inventoryQueryDetailModal },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,
@@ -341,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()

+ 6 - 3
src/views/inventoryManagement/inventoryQuery/warehouseDetail.vue

@@ -97,13 +97,16 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import rangeDate from '@/views/common/rangeDate.vue'
 import { stockFlowList } from '@/api/stockFlow'
 import { stockByProductSn } from '@/api/stock'
 import { warehouseAllList } from '@/api/warehouse'
 export default {
+  name: 'WarehouseDetail',
   components: { STable, VSelect, rangeDate },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,
@@ -193,7 +196,7 @@ export default {
     },
     //  返回列表
     handleBack () {
-      this.$router.push({ path: '/inventoryManagement/inventoryQuery/list', query: { closeLastOldTab: true } })
+      this.$router.push({ path: '/inventoryManagement/inventoryQuery/list' })
     },
     // 仓库下拉数据
     getWarehouseList (type) {
@@ -221,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()

+ 6 - 3
src/views/inventoryManagement/inventoryWarning/list.vue

@@ -177,13 +177,16 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import { stockWarnList, stockWarnSaveBatch } from '@/api/stockWarn'
 import { dealerProductBrandQuery } from '@/api/dealerProductBrand'
 import { dealerProductTypeList } from '@/api/dealerProductType'
-import { downloadExcel } from '@/libs/JGPrint.js'
+// import { downloadExcel } from '@/libs/JGPrint.js'
 export default {
+  name: 'InventoryWarning',
   components: { STable, VSelect },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,
@@ -430,9 +433,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 - 1
src/views/inventoryManagement/satelliteWarehouseInventory/addModal.vue

@@ -63,11 +63,13 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable } from '@/components'
 import { satelliteWHSupplyList, satelliteWHSupplyUpdate, satelliteWHSupplyDel, satelliteWHSupplyValidateStock, satelliteWHSupplyAddSales } from '@/api/satelliteWH'
 export default {
   name: 'SatelliteWarehouseInventoryAddModal',
   components: { STable },
+  mixins: [commonMixin],
   props: {
     openModal: { //  弹框显示状态
       type: Boolean,
@@ -234,7 +236,7 @@ export default {
       .item-label {
         width: 115px;
         font-size: 14px;
-        color: rgba(0, 0, 0, 0.85);
+        color: rgba(0, 0, 0);
         flex-shrink: 0;
       }
       .item-main {

+ 3 - 0
src/views/inventoryManagement/satelliteWarehouseInventory/list.vue

@@ -65,12 +65,15 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import satelliteWarehouseInventoryAddModal from './addModal.vue'
 import custSatelliteList from '@/views/common/custSatelliteList.vue'
 import { satelliteWHStockList, satelliteWHSupplyInsert } from '@/api/satelliteWH'
 export default {
+  name: 'SatelliteWHStockList',
   components: { STable, VSelect, satelliteWarehouseInventoryAddModal, custSatelliteList },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,

+ 2 - 0
src/views/inventoryManagement/warehouse/editModal.vue

@@ -49,11 +49,13 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable } from '@/components'
 import { warehouseSave } from '@/api/warehouse'
 export default {
   name: 'WarehouseEditModal',
   components: { STable },
+  mixins: [commonMixin],
   props: {
     openModal: { //  弹框显示状态
       type: Boolean,

+ 3 - 0
src/views/inventoryManagement/warehouse/list.vue

@@ -67,11 +67,14 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { warehouseList, warehouseDel } from '@/api/warehouse'
 import { STable } from '@/components'
 import warehouseEditModal from './editModal.vue'
 export default {
+  name: 'WarehouseList',
   components: { STable, warehouseEditModal },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,

+ 2 - 0
src/views/inventoryManagement/warehouse/storingLocation/editModal.vue

@@ -53,11 +53,13 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable } from '@/components'
 import { warehouseLocSave, warehouseAllList } from '@/api/warehouse'
 export default {
   name: 'StoringLocationEditModal',
   components: { STable },
+  mixins: [commonMixin],
   props: {
     openModal: { //  弹框显示状态
       type: Boolean,

+ 5 - 2
src/views/inventoryManagement/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">
@@ -69,11 +69,14 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { warehouseLocList, warehouseLocDel } from '@/api/warehouse'
 import { STable } from '@/components'
 import storingLocationEditModal from './editModal.vue'
 export default {
+  name: 'WarehouseLocList',
   components: { STable, storingLocationEditModal },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,
@@ -166,7 +169,7 @@ export default {
     },
     //  返回列表
     handleBack () {
-      this.$router.push({ path: '/inventoryManagement/warehouse/list', query: { closeLastOldTab: true } })
+      this.$router.push({ path: '/inventoryManagement/warehouse/list' })
     },
     pageInit () {
       const _this = this

+ 11 - 9
src/views/notice/detailModal.vue

@@ -44,11 +44,13 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable } from '@/components'
 import { noticeUserDetail } from '@/api/noticeUser'
 export default {
   name: 'NoticeDetailModal',
   components: { STable },
+  mixins: [commonMixin],
   props: {
     openModal: { //  弹框显示状态
       type: Boolean,
@@ -62,11 +64,11 @@ export default {
   computed: {
     typeDictValue () { //  类别  数据字典name
       let str = ''
-      if (this.detailsData&&this.detailsData.type == 'notity') {
+      if (this.detailsData && this.detailsData.type == 'notity') {
         str = '公告'
-      } else if (this.detailsData&&this.detailsData.type == 'news_company') {
+      } else if (this.detailsData && this.detailsData.type == 'news_company') {
         str = '企业新闻'
-      } else if (this.detailsData&&this.detailsData.type == 'news_trade') {
+      } else if (this.detailsData && this.detailsData.type == 'news_trade') {
         str = '行业咨询'
       } else {
         str = '--'
@@ -75,11 +77,11 @@ export default {
     },
     toAppNameDictValue () { //  可见性  数据字典name
       let str = ''
-      if (this.detailsData&&this.detailsData.toAppName == '1,2') {
+      if (this.detailsData && this.detailsData.toAppName == '1,2') {
         str = '所有'
-      } else if (this.detailsData&&this.detailsData.toAppName == '2') {
+      } else if (this.detailsData && this.detailsData.toAppName == '2') {
         str = '经销商'
-      } else if (this.detailsData&&this.detailsData.toAppName == '1') {
+      } else if (this.detailsData && this.detailsData.toAppName == '1') {
         str = '总部'
       } else {
         str = '--'
@@ -88,14 +90,14 @@ export default {
     },
     imgPathsArr () { //  图片数组
       let arr = []
-      if(this.detailsData && this.detailsData.imgPaths){
+      if (this.detailsData && this.detailsData.imgPaths) {
         arr = this.detailsData.imgPaths.split(',')
       }
       return arr
     },
     attachPathsArr () { //  附件数组
       let arr = []
-      if(this.detailsData && this.detailsData.attachList){
+      if (this.detailsData && this.detailsData.attachList) {
         arr = this.detailsData.attachList
       }
       return arr
@@ -192,7 +194,7 @@ export default {
     }
     .attachLink{
       display: inline-block;
-      color: rgba(0, 0, 0, 0.65);
+      color: rgba(0, 0, 0);
       &:hover{
         text-decoration: underline;
       }

+ 3 - 0
src/views/notice/list.vue

@@ -54,13 +54,16 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable } from '@/components'
 import tablePagination from '@/views/common/tablePagination.vue'
 import rangeDate from '@/views/common/rangeDate.vue'
 import { mapActions } from 'vuex'
 import noticeDetailModal from './detailModal.vue'
 export default {
+  name: 'NoticeList',
   components: { STable, noticeDetailModal, rangeDate, tablePagination },
+  mixins: [commonMixin],
   data () {
     return {
       queryParam: { //  查询条件

+ 3 - 0
src/views/numsGoodsShelves/shelfMonitoring/list.vue

@@ -103,10 +103,13 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import { storeCallOutList } from '@/api/storeCallOut'
 export default {
+  name: 'ShelfMonitoring',
   components: { STable, VSelect },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,

+ 16 - 5
src/views/outboundOrderManagement/outboundOrder/list.vue

@@ -111,6 +111,7 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import moment from 'moment'
 import { STable, VSelect } from '@/components'
 import rangeDate from '@/views/common/rangeDate.vue'
@@ -123,7 +124,9 @@ import warehouseAllocationDetailModal from '@/views/allocationManagement/warehou
 import { stockOutList, stockOutOut, stockOutBatchOut } from '@/api/stockOut'
 import getDate from '@/libs/getDate.js'
 export default {
+  name: 'OutboundOrderList',
   components: { STable, VSelect, rangeDate, pushOrderDetailModal, salesDetailModal, urgentDetailModal, storeTransferOutDetailModal, chainTransferOutDetailModal, warehouseAllocationDetailModal },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,
@@ -243,13 +246,17 @@ export default {
     },
     //  重置
     resetSearchForm () {
+      this.resetData()
+      this.$refs.table.refresh(true)
+    },
+    // 重置数据
+    resetData () {
       this.$refs.rangeDate.resetDate(this.time)
       this.queryParam.beginDate = getDate.getCurrMonthDays().starttime
       this.queryParam.endDate = getDate.getCurrMonthDays().endtime
       this.queryParam.demanderName = undefined
       this.queryParam.outBizType = undefined
       this.queryParam.state = undefined
-      this.$refs.table.refresh(true)
     },
     //  详情
     handleDetail (row) {
@@ -340,7 +347,6 @@ export default {
       })
     },
     onSelectChange (record, selected, selectedRows, nativeEvent) {
-      console.log(record, selected, selectedRows, nativeEvent)
       if (selected) { //  选择
         this.selectedRows.push(record)
       } else { //  取消
@@ -382,9 +388,9 @@ export default {
   watch: {
     advanced (newValue, oldValue) {
       const _this = this
-      setTimeout(() => {
+      this.$nextTick(() => { // 页面渲染完成后的回调
         _this.setTableH()
-      }, 400)
+      })
     },
     '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
       this.setTableH()
@@ -399,8 +405,13 @@ export default {
   activated () {
     // 如果是新页签打开,则重置当前页面
     if (this.$store.state.app.isNewTab) {
+      this.resetData()
+      if (this.$route.query.pageParams) {
+        this.queryParam.state = JSON.parse(this.$route.query.pageParams).state
+        this.queryParam.outBizType = JSON.parse(this.$route.query.pageParams).outBizType
+      }
       this.pageInit()
-      this.resetSearchForm()
+      this.$refs.table.refresh(true)
     }
   },
   beforeRouteEnter (to, from, next) {

+ 2 - 0
src/views/power/OperateJournal/OperateJournal.vue

@@ -36,6 +36,7 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable } from '@/components'
 import { journalList } from '@/api/OperateJournal.js'
 import getDate from '@/libs/getDate'
@@ -43,6 +44,7 @@ import moment from 'moment'
 export default {
   name: 'OperateJournal',
   components: { STable },
+  mixins: [commonMixin],
   data () {
     return {
       // 列表

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

@@ -379,7 +379,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;

+ 3 - 1
src/views/productManagement/newProduct/detail.vue

@@ -48,11 +48,13 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import imgZoom from 'vue2.0-zoom'
 import { productDetail } from '@/api/product.js'
 export default {
   name: 'ProductInfoDetail',
   components: { imgZoom },
+  mixins: [commonMixin],
   computed: {
     productTypeName () {
       const productTypeName1 = this.detailsData && this.detailsData.productTypeName1 ? this.detailsData.productTypeName1 : ''
@@ -90,7 +92,7 @@ export default {
     },
     // 返回
     goBack () {
-      this.$router.push({ path: this.prevPageInfo && this.prevPageInfo.path, query: { closeLastOldTab: true } })
+      this.$router.push({ path: this.prevPageInfo && this.prevPageInfo.path })
     }
   },
   mounted () {

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

@@ -106,13 +106,16 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { dealerProductBrandQuery } from '@/api/dealerProductBrand'
 import { dealerProductTypeList } from '@/api/dealerProductType'
 import { queryNewProductPage } from '@/api/product'
 import { STable, VSelect } from '@/components'
 import rangeDate from '@/views/common/rangeDate.vue'
 export default {
+  name: 'NewProductList',
   components: { STable, VSelect, rangeDate },
+  mixins: [commonMixin],
   data () {
     return {
       spinning: false,
@@ -241,9 +244,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 - 0
src/views/productManagement/newProduct/modal.vue

@@ -22,11 +22,13 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable } from '@/components'
 import { queryNewProductPage } from '@/api/product'
 export default {
   name: 'NewProduct',
   components: { STable },
+  mixins: [commonMixin],
   props: {
     onlineFalg: { // 上下线标识  1为上线,0为下线
       type: [ String, Number ],

+ 6 - 3
src/views/productManagement/priceChangeRecord/list.vue

@@ -114,6 +114,7 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import moment from 'moment'
 import getDate from '@/libs/getDate.js'
 import { STable, VSelect } from '@/components'
@@ -121,9 +122,11 @@ import rangeDate from '@/views/common/rangeDate.vue'
 import { productBrandQuery } from '@/api/productBrand'
 import { productTypeQuery } from '@/api/productType'
 import { productPriceChangeList, getCurrentDealer } from '@/api/product'
-import { downloadExcel } from '@/libs/JGPrint.js'
+// import { downloadExcel } from '@/libs/JGPrint.js'
 export default {
+  name: 'ProductPriceChangeList',
   components: { STable, VSelect, rangeDate },
+  mixins: [commonMixin],
   data () {
     return {
       advanced: true, // 高级搜索 展开/关闭
@@ -326,9 +329,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 - 1
src/views/productManagement/productBrand/editModal.vue

@@ -39,11 +39,13 @@
 </template>
 
 <script>
+import { commonMixin } from '@/utils/mixin'
 import { STable } from '@/components'
 import { dealerProductBrandSave } from '@/api/dealerProductBrand'
 export default {
   name: 'ProductBrandEditModal',
   components: { STable },
+  mixins: [commonMixin],
   props: {
     openModal: { //  弹框显示状态
       type: Boolean,
@@ -108,7 +110,7 @@ export default {
               _this.$emit('ok')
               _this.isShow = false
               _this.spinning = false
-            }else{
+            } else {
               _this.spinning = false
             }
           })

Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff