Selaa lähdekoodia

fix(前端优化):选择产品组件跨页多选,列表页添加缓存及回车搜索

wanglj 3 vuotta sitten
vanhempi
commit
f8e7023a29

+ 10 - 2
src/components/select/SelectProduct.vue

@@ -32,8 +32,13 @@
           table-type="selectProductTable" />
       </el-col>
     </el-row>
-    <el-table ref="productTable" v-loading="listLoading" :data="list" @selection-change="setSelectRows">
-      <el-table-column align="center" type="selection" />
+    <el-table
+      ref="productTable"
+      v-loading="listLoading"
+      :data="list"
+      :row-key="getRowKey"
+      @selection-change="setSelectRows">
+      <el-table-column align="center" :reserve-selection="true" type="selection" />
       <el-table-column
         v-for="(item, index) in showColumns"
         :key="index + Math.random()"
@@ -168,6 +173,9 @@
       this.getOptions()
     },
     methods: {
+      getRowKey(row) {
+        return row.id
+      },
       getOptions() {
         Promise.all([this.getDicts('sys_product_line')])
           .then(([productLine]) => {

+ 38 - 7
src/views/base/distributor/index.vue

@@ -29,13 +29,25 @@
           <vab-query-form-top-panel>
             <el-form :inline="true" :model="queryForm" @submit.native.prevent>
               <el-form-item>
-                <el-input v-model.trim="queryForm.distCode" clearable placeholder="经销商编码" />
+                <el-input
+                  v-model.trim="queryForm.distCode"
+                  clearable
+                  placeholder="经销商编码"
+                  @keyup.enter.native="queryData" />
               </el-form-item>
               <el-form-item>
-                <el-input v-model.trim="queryForm.distName" clearable placeholder="经销商名称" />
+                <el-input
+                  v-model.trim="queryForm.distName"
+                  clearable
+                  placeholder="经销商名称"
+                  @keyup.enter.native="queryData" />
               </el-form-item>
               <el-form-item>
-                <el-input v-model.trim="queryForm.belongSale" clearable placeholder="所属销售" />
+                <el-input
+                  v-model.trim="queryForm.belongSale"
+                  clearable
+                  placeholder="所属销售"
+                  @keyup.enter.native="queryData" />
               </el-form-item>
               <el-form-item>
                 <el-button icon="el-icon-search" type="primary" @click="queryData">查询</el-button>
@@ -57,10 +69,17 @@
         <vab-query-form-right-panel>
           <table-tool :columns="columns" :show-columns.sync="showColumns" table-type="distributorTable" />
         </vab-query-form-right-panel>
-        <el-table v-loading="listLoading" :data="list" :height="$baseTableHeight(2)" @selection-change="setSelectRows">
+        <el-table
+          :key="tableKey"
+          ref="table"
+          v-loading="listLoading"
+          border
+          :data="list"
+          :height="$baseTableHeight(2)"
+          @selection-change="setSelectRows">
           <el-table-column
             v-for="(item, index) in showColumns"
-            :key="index + Math.random()"
+            :key="index"
             align="center"
             :label="item.label"
             :prop="item.prop"
@@ -75,7 +94,7 @@
             </template>
           </el-table-column>
 
-          <el-table-column align="center" label="操作" show-overflow-tooltip width="85">
+          <el-table-column align="center" fixed="right" label="操作" show-overflow-tooltip width="85">
             <template #default="{ row }">
               <el-button v-permissions="['base:distributor:edit']" type="text" @click="handleEdit(row)">编辑</el-button>
               <el-button v-permissions="['base:distributor:delete']" type="text" @click="handleDelete(row)">
@@ -110,10 +129,11 @@
   import TableTool from '@/components/table/TableTool'
 
   export default {
-    name: 'Distr',
+    name: 'Distributor',
     components: { Edit, TableTool },
     data() {
       return {
+        tableKey: 0,
         list: [],
         listLoading: true,
         layout: 'total, sizes, prev, pager, next, jumper',
@@ -171,6 +191,15 @@
         treeDefaultExpandAll: true,
       }
     },
+    watch: {
+      showColumns: function () {
+        this.tableKey++
+        this.$nextTick(() => this.$refs.table.doLayout())
+      },
+    },
+    activated() {
+      this.fetchData()
+    },
     created() {
       this.fetchData()
       this.getRegionTree()
@@ -252,6 +281,8 @@
         this.list = list
         this.total = total
         this.listLoading = false
+        this.tableKey++
+        this.$nextTick(() => this.$refs.table.doLayout())
       },
       reset() {
         this.queryForm = {

+ 24 - 4
src/views/base/product/index.vue

@@ -19,13 +19,26 @@
           <vab-query-form-top-panel>
             <el-form :inline="true" :model="queryForm" @submit.native.prevent>
               <el-form-item>
-                <el-input v-model.trim="queryForm.prodCode" clearable placeholder="产品编码" />
+                <el-input
+                  v-model.trim="queryForm.prodCode"
+                  clearable
+                  placeholder="产品编码"
+                  @keyup.enter.native="queryData" />
               </el-form-item>
               <el-form-item>
-                <el-input v-model.trim="queryForm.prodName" clearable placeholder="产品名称" />
+                <el-input
+                  v-model.trim="queryForm.prodName"
+                  clearable
+                  placeholder="产品名称"
+                  @keyup.enter.native="queryData" />
               </el-form-item>
               <el-form-item>
-                <el-select v-model="queryForm.prodClass" clearable placeholder="产品类别" style="width: 100%">
+                <el-select
+                  v-model="queryForm.prodClass"
+                  clearable
+                  placeholder="产品类别"
+                  style="width: 100%"
+                  @keyup.enter.native="queryData">
                   <el-option v-for="item in prodClassOptions" :key="item.key" :label="item.value" :value="item.key" />
                 </el-select>
               </el-form-item>
@@ -50,6 +63,7 @@
         </vab-query-form>
 
         <el-table
+          ref="table"
           v-loading="listLoading"
           border
           :data="list"
@@ -62,7 +76,7 @@
           </el-table-column>
           <el-table-column
             v-for="(item, index) in showColumns"
-            :key="index + Math.random()"
+            :key="index"
             align="center"
             :label="item.label"
             :min-width="item.minWidth"
@@ -124,6 +138,7 @@
   import TableTool from '@/components/table/TableTool'
 
   export default {
+    name: 'Product',
     components: { Edit, TableTool },
     data() {
       return {
@@ -195,6 +210,11 @@
         prodClassOptions: [], //产品分类
       }
     },
+    watch: {
+      showColumns: function () {
+        this.$nextTick(() => this.$refs.table.doLayout())
+      },
+    },
     created() {
       this.getOptions()
       this.fetchData()

+ 13 - 4
src/views/base/productAuth/index.vue

@@ -2,7 +2,7 @@
  * @Author: wanglj 471442253@qq.com
  * @Date: 2023-02-13 11:50:01
  * @LastEditors: wanglj
- * @LastEditTime: 2023-02-14 09:32:28
+ * @LastEditTime: 2023-03-22 15:07:02
  * @Description: file content
  * @FilePath: \opms_frontend\src\views\base\productAuth\index.vue
 -->
@@ -12,7 +12,7 @@
       <vab-query-form-left-panel>
         <el-form ref="queryForm" :inline="true" :model="queryForm" @submit.native.prevent>
           <el-form-item>
-            <el-input v-model="queryForm.keyWords" placeholder="姓名" />
+            <el-input v-model="queryForm.keyWords" placeholder="姓名" @keyup.enter.native="handleSearch" />
           </el-form-item>
           <el-form-item>
             <el-button icon="el-icon-search" type="primary" @click="handleSearch">查询</el-button>
@@ -24,10 +24,10 @@
         <table-tool :columns="columns" :show-columns.sync="showColumns" table-type="productAuthTable" />
       </vab-query-form-right-panel>
     </vab-query-form>
-    <el-table v-loading="listLoading" border :data="list" :height="$baseTableHeight(1)">
+    <el-table :key="tableKey" ref="table" v-loading="listLoading" border :data="list" :height="$baseTableHeight(1)">
       <el-table-column
         v-for="(item, index) in showColumns"
-        :key="index + Math.random()"
+        :key="index"
         align="center"
         :label="item.label"
         :prop="item.prop"
@@ -88,6 +88,7 @@
     },
     data() {
       return {
+        tableKey: 0,
         total: 0,
         queryForm: {
           pageNum: 1,
@@ -145,6 +146,12 @@
         },
       }
     },
+    watch: {
+      showColumns: function () {
+        this.tableKey++
+        this.$nextTick(() => this.$refs.table.doLayout())
+      },
+    },
     mounted() {
       this.getProducts()
       this.fetchData()
@@ -155,6 +162,8 @@
         if (err) return
         this.list = res.data.list || []
         this.total = res.data.total
+        this.tableKey++
+        this.$refs.table.doLayout()
       },
       handleSearch() {
         this.queryForm.pageNum = 1

+ 20 - 6
src/views/base/region/index.vue

@@ -47,14 +47,21 @@
           <vab-query-form-top-panel>
             <el-form :inline="true" :model="queryForm" @submit.native.prevent>
               <el-form-item>
-                <el-input v-model="filterText" placeholder="输入关键字进行过滤" />
+                <el-input v-model="filterText" placeholder="输入关键字进行过滤" @keyup.enter.native="queryData" />
               </el-form-item>
               <el-form-item prop="custCode">
-                <el-input v-model="queryForm.custCode" clearable placeholder="客户编码" />
+                <el-input
+                  v-model="queryForm.custCode"
+                  clearable
+                  placeholder="客户编码"
+                  @keyup.enter.native="queryData" />
               </el-form-item>
-
               <el-form-item prop="custName">
-                <el-input v-model="queryForm.custName" clearable placeholder="客户名称" />
+                <el-input
+                  v-model="queryForm.custName"
+                  clearable
+                  placeholder="客户名称"
+                  @keyup.enter.native="queryData" />
               </el-form-item>
               <el-form-item label="" prop="custIndustry">
                 <el-select v-model="custIndustry" placeholder="请选择客户行业" style="width: 100%">
@@ -65,7 +72,6 @@
                     :value="item.value" />
                 </el-select>
               </el-form-item>
-
               <el-form-item>
                 <el-button icon="el-icon-search" type="primary" @click="queryData">查询</el-button>
                 <el-button icon="el-icon-refresh-right" @click="reset">重置</el-button>
@@ -86,6 +92,7 @@
           </vab-query-form-right-panel>
         </vab-query-form>
         <el-table
+          :key="tableKey"
           ref="regionTable"
           v-loading="listLoading"
           border
@@ -95,7 +102,7 @@
           @selection-change="setSelectRows">
           <el-table-column
             v-for="(item, index) in showColumns"
-            :key="index + Math.random()"
+            :key="index"
             align="center"
             :label="item.label"
             :min-width="item.minWidth"
@@ -150,6 +157,7 @@
     components: { RegionDetailsEdit, RegionEdit, TableTool },
     data() {
       return {
+        tableKey: 0,
         current: '',
         list: [],
         listLoading: true,
@@ -219,6 +227,10 @@
       filterText(val) {
         this.$refs.tree.filter(val)
       },
+      showColumns: function () {
+        this.tableKey++
+        this.$nextTick(() => this.$refs.regionTable.doLayout())
+      },
     },
     created() {
       // this.fetchData()
@@ -359,6 +371,8 @@
         this.list = list
         this.total = total
         this.listLoading = false
+        this.tableKey++
+        this.$nextTick(() => this.$refs.regionTable.doLayout())
       },
     },
   }

+ 16 - 5
src/views/base/regionAuth/index.vue

@@ -2,17 +2,17 @@
  * @Author: wanglj 471442253@qq.com
  * @Date: 2023-02-13 13:51:45
  * @LastEditors: wanglj
- * @LastEditTime: 2023-02-27 11:29:24
+ * @LastEditTime: 2023-03-22 15:09:09
  * @Description: file content
  * @FilePath: \opms_frontend\src\views\base\regionAuth\index.vue
 -->
 <template>
   <div class="region-auth-container">
     <vab-query-form>
-      <el-form ref="queryForm">
+      <el-form ref="queryForm" :model="queryForm">
         <vab-query-form-left-panel>
-          <el-form-item>
-            <el-input v-model="queryForm.keyWords" placeholder="姓名" />
+          <el-form-item prop="keyWords">
+            <el-input v-model="queryForm.keyWords" placeholder="姓名" @keyup.enter.native="handleSearch" />
           </el-form-item>
           <el-form-item>
             <el-button icon="el-icon-search" type="primary" @click="handleSearch">查询</el-button>
@@ -34,6 +34,8 @@
     <el-row :gutter="10">
       <el-col :span="12">
         <el-table
+          :key="tableKey"
+          ref="table"
           v-loading="listLoading"
           border
           :data="list"
@@ -42,7 +44,7 @@
           @row-click="handleRowClick">
           <el-table-column
             v-for="(item, index) in showColumns"
-            :key="index + Math.random()"
+            :key="index"
             align="center"
             :label="item.label"
             :prop="item.prop"
@@ -146,6 +148,7 @@
     },
     data() {
       return {
+        tableKey: 0,
         queryForm: {
           pageNum: 1,
           pageSize: 10,
@@ -201,6 +204,12 @@
         allocated: [], //已被分配的城市
       }
     },
+    watch: {
+      showColumns: function () {
+        this.tableKey++
+        this.$nextTick(() => this.$refs.table.doLayout())
+      },
+    },
     mounted() {
       this.fetchData()
     },
@@ -215,6 +224,8 @@
           checkList: [],
         }
         this.regionList = []
+        this.tableKey++
+        this.$nextTick(() => this.$refs.table.doLayout())
       },
       handleRowClick(row) {
         this.form.userId = row.userId

+ 22 - 7
src/views/collection/index.vue

@@ -1,10 +1,10 @@
 <!--
  * @Author: liuzhenlin 461480418@qq.ocm
  * @Date: 2023-01-10 13:40:41
- * @LastEditors: liuzhenlin
- * @LastEditTime: 2023-01-11 15:38:46
+ * @LastEditors: wanglj
+ * @LastEditTime: 2023-03-22 11:26:48
  * @Description: file content
- * @FilePath: \订单全流程管理系统\src\views\collection\index.vue
+ * @FilePath: \opms_frontend\src\views\collection\index.vue
 -->
 <template>
   <div class="collection-manage">
@@ -39,11 +39,17 @@
         <table-tool :columns="columns" :show-columns.sync="showColumns" table-type="collectionTable" />
       </vab-query-form-right-panel>
     </vab-query-form>
-    <el-table v-loading="listLoading" border :data="list" :height="height" @selection-change="setSelectRows">
+    <el-table
+      ref="table"
+      v-loading="listLoading"
+      border
+      :data="list"
+      :height="height"
+      @selection-change="setSelectRows">
       <el-table-column align="center" show-overflow-tooltip type="selection" />
       <el-table-column
         v-for="(item, index) in showColumns"
-        :key="index + Math.random()"
+        :key="index"
         align="center"
         :label="item.label"
         :min-width="item.width"
@@ -62,7 +68,7 @@
             {{ row.contractCode }}
           </el-button>
           <span v-else-if="item.prop == 'collectionType'">
-            {{ collectionTypeOption.filter((item) => item.key == row.collectionType)[0].value || '-' }}
+            {{ selectDictLabel(collectionTypeOption, row.collectionType) }}
           </span>
           <span v-else-if="item.prop == 'approStatus'">{{ row.approStatus == '10' ? '未回款' : '已回款' }}</span>
           <span v-else-if="item.prop == 'updatedTime'">{{ parseTime(row.updatedTime, '{y}-{m}-{d}') }}</span>
@@ -94,7 +100,7 @@
   import collectionApi from '@/api/contract/collection'
   import TableTool from '@/components/table/TableTool'
   export default {
-    name: 'OpenSea',
+    name: 'Collection',
     components: {
       TableTool,
     },
@@ -197,6 +203,14 @@
         ],
       }
     },
+    watch: {
+      showColumns: function () {
+        this.$nextTick(() => this.$refs.table.doLayout())
+      },
+    },
+    activated() {
+      this.queryData()
+    },
     async mounted() {
       await this.getOptions()
       this.queryData()
@@ -217,6 +231,7 @@
         this.list = res.data.list || []
         this.total = res.data.total
         this.listLoading = false
+        this.$nextTick(() => this.$refs.table.doLayout())
       },
       reset() {
         this.queryForm = {

+ 16 - 6
src/views/collection/plan.vue

@@ -1,10 +1,10 @@
 <!--
  * @Author: liuzhenlin 461480418@qq.ocm
  * @Date: 2023-01-10 13:40:41
- * @LastEditors: liuzhenlin
- * @LastEditTime: 2023-01-11 15:41:44
+ * @LastEditors: wanglj
+ * @LastEditTime: 2023-03-22 14:54:55
  * @Description: file content
- * @FilePath: \订单全流程管理系统\src\views\collection\plan.vue
+ * @FilePath: \opms_frontend\src\views\collection\plan.vue
 -->
 <template>
   <div class="collection-plan">
@@ -34,11 +34,17 @@
         <table-tool :columns="columns" :show-columns.sync="showColumns" table-type="collectionPlanTable" />
       </vab-query-form-right-panel>
     </vab-query-form>
-    <el-table v-loading="listLoading" border :data="list" :height="height" @selection-change="setSelectRows">
+    <el-table
+      ref="table"
+      v-loading="listLoading"
+      border
+      :data="list"
+      :height="height"
+      @selection-change="setSelectRows">
       <el-table-column align="center" show-overflow-tooltip type="selection" />
       <el-table-column
         v-for="(item, index) in showColumns"
-        :key="index + Math.random()"
+        :key="index"
         align="center"
         :label="item.label"
         :min-width="item.width"
@@ -93,7 +99,7 @@
   import collectionPlanApi from '@/api/contract/collectionPlan'
   import TableTool from '@/components/table/TableTool'
   export default {
-    name: 'OpenSea',
+    name: 'CollectionPlan',
     components: {
       TableTool,
     },
@@ -205,6 +211,9 @@
         ],
       }
     },
+    activated() {
+      this.queryData()
+    },
     mounted() {
       this.queryData()
     },
@@ -217,6 +226,7 @@
         this.list = res.data.list || []
         this.total = res.data.total
         this.listLoading = false
+        this.$nextTick(() => this.$refs.table.doLayout())
       },
       reset() {
         this.queryForm = {

+ 15 - 6
src/views/contract/index.vue

@@ -1,9 +1,9 @@
 <!--
  * @Author: liuzhenlin 461480418@qq.ocm
  * @Date: 2023-01-05 11:28:51
- * @LastEditors: liuzhenlin
- * @LastEditTime: 2023-01-11 15:09:48
- * @FilePath: \订单全流程管理系统\src\views\contract\index.vue
+ * @LastEditors: wanglj
+ * @LastEditTime: 2023-03-22 14:53:09
+ * @FilePath: \opms_frontend\src\views\contract\index.vue
 -->
 <template>
   <div class="contract-container">
@@ -63,11 +63,11 @@
         <table-tool :columns="columns" :show-columns.sync="showColumns" table-type="contractTable" />
       </vab-query-form-right-panel>
     </vab-query-form>
-    <el-table v-loading="listLoading" :data="list" :height="height" @selection-change="setSelectRows">
+    <el-table ref="table" v-loading="listLoading" :data="list" :height="height" @selection-change="setSelectRows">
       <el-table-column align="center" show-overflow-tooltip type="selection" />
       <el-table-column
         v-for="(item, index) in showColumns"
-        :key="index + Math.random()"
+        :key="index"
         align="center"
         :label="item.label"
         :min-width="item.width"
@@ -175,7 +175,7 @@
   import ApplyContract from './components/ApplyContract'
 
   export default {
-    name: 'OpenSea',
+    name: 'Contract',
     components: {
       Edit,
       TableTool,
@@ -307,6 +307,14 @@
         ],
       }
     },
+    watch: {
+      showColumns: function () {
+        this.$nextTick(() => this.$refs.table.doLayout())
+      },
+    },
+    activated() {
+      this.queryData()
+    },
     mounted() {
       this.queryData()
       this.getOptions()
@@ -330,6 +338,7 @@
         this.list = res.data.list || []
         this.total = res.data.total
         this.listLoading = false
+        this.$nextTick(() => this.$refs.table.doLayout())
       },
       handleApply(id) {
         this.$refs.applyContract.form.id = id

+ 19 - 7
src/views/contract/invoice.vue

@@ -1,10 +1,10 @@
 <!--
  * @Author: liuzhenlin 461480418@qq.ocm
  * @Date: 2023-01-10 13:40:41
- * @LastEditors: liuzhenlin
- * @LastEditTime: 2023-01-11 18:59:03
+ * @LastEditors: wanglj
+ * @LastEditTime: 2023-03-22 11:36:06
  * @Description: file content
- * @FilePath: \订单全流程管理系统\src\views\contract\invoice.vue
+ * @FilePath: \opms_frontend\src\views\contract\invoice.vue
 -->
 <template>
   <div class="collection-plan">
@@ -31,11 +31,17 @@
         <table-tool :columns="columns" :show-columns.sync="showColumns" table-type="contractInvoiceTable" />
       </vab-query-form-right-panel>
     </vab-query-form>
-    <el-table v-loading="listLoading" border :data="invoiceData" :height="height" @selection-change="setSelectRows">
+    <el-table
+      ref="table"
+      v-loading="listLoading"
+      border
+      :data="invoiceData"
+      :height="height"
+      @selection-change="setSelectRows">
       <el-table-column align="center" show-overflow-tooltip type="selection" />
       <el-table-column
         v-for="(item, index) in showColumns"
-        :key="index + Math.random()"
+        :key="index"
         align="center"
         :label="item.label"
         :min-width="item.width"
@@ -44,7 +50,7 @@
         :sortable="item.sortable">
         <template #default="{ row }">
           <span v-if="item.prop == 'invoiceType'">
-            {{ invoiceTypeData.filter((item) => item.key == row.invoiceType)[0].value || '-' }}
+            {{ selectDictLabel(invoiceTypeData, row.collectionType) }}
           </span>
           <span v-else-if="item.prop == 'approStatus'">
             {{
@@ -114,7 +120,7 @@
   import ApplyInvoice from './components/ApplyInvoice'
 
   export default {
-    name: 'DetailsInvoice',
+    name: 'ContractInvoice',
     components: { Invoicing, TableTool, ApplyInvoice },
     props: {
       details: {
@@ -191,6 +197,11 @@
         ],
       }
     },
+    watch: {
+      showColumns: function () {
+        this.$nextTick(() => this.$refs.table.doLayout())
+      },
+    },
     async mounted() {
       await this.getOptions()
       this.queryData()
@@ -247,6 +258,7 @@
         if (err) return
         this.invoiceData = res.data.list
         this.listLoading = false
+        this.$nextTick(() => this.$refs.table.doLayout())
       },
     },
   }

+ 6 - 7
src/views/customer/follow.vue

@@ -2,7 +2,7 @@
  * @Author: wanglj 471442253@qq.com
  * @Date: 2022-12-15 15:38:21
  * @LastEditors: wanglj
- * @LastEditTime: 2023-01-04 15:10:43
+ * @LastEditTime: 2023-03-22 14:43:27
  * @Description: file content
  * @FilePath: \opms_frontend\src\views\customer\follow.vue
 -->
@@ -10,7 +10,7 @@
   <div class="follow-container">
     <el-row :gutter="10" style="margin-bottom: 10px">
       <el-col :span="4">
-        <el-input v-model="queryForm.custName" placeholder="客户" />
+        <el-input v-model="queryForm.custName" placeholder="客户" @keyup.enter.native="search" />
       </el-col>
       <!-- <el-col :span="4">
         <el-date-picker
@@ -22,7 +22,7 @@
           type="daterange" />
       </el-col> -->
       <el-col :span="4">
-        <el-input v-model.number="queryForm.daysBeforeToday" placeholder="查询天数">
+        <el-input v-model.number="queryForm.daysBeforeToday" placeholder="查询天数" @keyup.enter.native="search">
           <template slot="append">天</template>
         </el-input>
       </el-col>
@@ -32,10 +32,10 @@
         </el-select>
       </el-col>
       <el-col :span="4">
-        <el-input v-model.number="queryForm.targetName" placeholder="跟进对象" />
+        <el-input v-model.number="queryForm.targetName" placeholder="跟进对象" @keyup.enter.native="search" />
       </el-col>
       <el-col :span="4">
-        <el-input v-model="queryForm.createdName" placeholder="跟进人" />
+        <el-input v-model="queryForm.createdName" placeholder="跟进人" @keyup.enter.native="search" />
       </el-col>
       <el-col :span="4">
         <el-button icon="el-icon-plus" type="primary" @click="search">查询</el-button>
@@ -43,7 +43,7 @@
         <el-button icon="el-icon-refresh-right" @click="reset">重置</el-button>
       </el-col>
     </el-row>
-    <div class="follow">
+    <div class="follow" :style="{ height: $baseTableHeight(0) }">
       <ul
         v-infinite-scroll="load"
         class="records infinite-list"
@@ -305,7 +305,6 @@
 <style lang="scss" scoped>
   $base: '.follow';
   .follow {
-    height: calc(100vh - 240px);
     display: flex;
 
     .comment {

+ 23 - 6
src/views/customer/list.vue

@@ -2,7 +2,7 @@
  * @Author: wanglj 471442253@qq.com
  * @Date: 2022-12-26 16:34:37
  * @LastEditors: wanglj
- * @LastEditTime: 2023-02-28 16:08:54
+ * @LastEditTime: 2023-03-22 10:54:33
  * @Description: file content
  * @FilePath: \opms_frontend\src\views\customer\list.vue
 -->
@@ -15,13 +15,18 @@
     </el-tabs>
     <el-row :gutter="10" style="margin-bottom: 10px">
       <el-col :span="4">
-        <el-input v-model="queryForm.custCode" placeholder="客户编码" />
+        <el-input v-model="queryForm.custCode" placeholder="客户编码" @keyup.enter.native="handleSearch" />
       </el-col>
       <el-col :span="4">
-        <el-input v-model="queryForm.custName" placeholder="客户名称" />
+        <el-input v-model="queryForm.custName" placeholder="客户名称" @keyup.enter.native="handleSearch" />
       </el-col>
       <el-col :span="4">
-        <el-select v-model="queryForm.custIndustry" clearable placeholder="客户类型" style="width: 100%">
+        <el-select
+          v-model="queryForm.custIndustry"
+          clearable
+          placeholder="客户类型"
+          style="width: 100%"
+          @keyup.enter.native="handleSearch">
           <el-option v-for="item in industryOptions" :key="item.key" :label="item.value" :value="item.key" />
         </el-select>
       </el-col>
@@ -36,7 +41,8 @@
           placeholder="最后跟进时间"
           style="width: 100%"
           type="date"
-          value-format="yyyy-MM-dd" />
+          value-format="yyyy-MM-dd"
+          @keyup.enter.native="handleSearch" />
       </el-col>
       <el-col :span="4">
         <el-button icon="el-icon-plus" type="primary" @click="handleSearch">查询</el-button>
@@ -84,6 +90,7 @@
       </vab-query-form-right-panel>
     </vab-query-form>
     <el-table
+      ref="table"
       v-loading="listLoading"
       border
       :data="list"
@@ -92,7 +99,7 @@
       <el-table-column align="center" show-overflow-tooltip type="selection" />
       <el-table-column
         v-for="(item, index) in showColumns"
-        :key="index + Math.random()"
+        :key="index"
         align="center"
         :label="item.label"
         :min-width="item.width"
@@ -158,6 +165,7 @@
   import downloadFileByByte from '@/utils/base64ToFile'
 
   export default {
+    name: 'ReserveCustomer',
     components: {
       Edit,
       Contact,
@@ -275,6 +283,14 @@
         ],
       }
     },
+    watch: {
+      showColumns: function () {
+        this.$nextTick(() => this.$refs.table.doLayout())
+      },
+    },
+    activated() {
+      this.fetchData()
+    },
     mounted() {
       this.getOptions()
       this.fetchData()
@@ -302,6 +318,7 @@
         this.list = res.data.list || []
         this.total = res.data.total
         this.listLoading = false
+        this.$nextTick(() => this.$refs.table.doLayout())
       },
       handleSearch() {
         this.queryForm.pageNum = 1

+ 23 - 7
src/views/customer/openSea.vue

@@ -2,7 +2,7 @@
  * @Author: wanglj 471442253@qq.com
  * @Date: 2022-12-15 15:38:21
  * @LastEditors: wanglj
- * @LastEditTime: 2023-02-13 17:47:45
+ * @LastEditTime: 2023-03-22 10:43:54
  * @Description: file content
  * @FilePath: \opms_frontend\src\views\customer\openSea.vue
 -->
@@ -12,13 +12,18 @@
       <vab-query-form-top-panel>
         <el-form :inline="true" :model="queryForm" @submit.native.prevent>
           <el-form-item>
-            <el-input v-model="queryForm.custCode" placeholder="客户编码" />
+            <el-input v-model="queryForm.custCode" placeholder="客户编码" @keyup.enter.native="handleSearch" />
           </el-form-item>
           <el-form-item>
-            <el-input v-model="queryForm.custName" placeholder="客户名称" />
+            <el-input v-model="queryForm.custName" placeholder="客户名称" @keyup.enter.native="handleSearch" />
           </el-form-item>
           <el-form-item>
-            <el-select v-model="queryForm.custIndustry" clearable placeholder="客户类型" style="width: 100%">
+            <el-select
+              v-model="queryForm.custIndustry"
+              clearable
+              placeholder="客户类型"
+              style="width: 100%"
+              @keyup.enter.native="handleSearch">
               <el-option v-for="item in industryOptions" :key="item.key" :label="item.value" :value="item.key" />
             </el-select>
           </el-form-item>
@@ -33,7 +38,8 @@
               placeholder="最后跟进时间"
               style="width: 100%"
               type="date"
-              value-format="yyyy-MM-dd" />
+              value-format="yyyy-MM-dd"
+              @keyup.enter.native="handleSearch" />
           </el-form-item>
           <el-form-item>
             <el-button icon="el-icon-plus" type="primary" @click="handleSearch">查询</el-button>
@@ -58,6 +64,7 @@
       </vab-query-form-right-panel>
     </vab-query-form>
     <el-table
+      ref="table"
       v-loading="listLoading"
       border
       :data="list"
@@ -66,7 +73,7 @@
       <el-table-column align="center" show-overflow-tooltip type="selection" />
       <el-table-column
         v-for="(item, index) in showColumns"
-        :key="index + Math.random()"
+        :key="index"
         align="center"
         :label="item.label"
         :min-width="item.width"
@@ -168,7 +175,7 @@
   import downloadFileByByte from '@/utils/base64ToFile'
 
   export default {
-    name: 'OpenSea',
+    name: 'OpenSeaCustomer',
     components: {
       Contact,
       Edit,
@@ -285,6 +292,14 @@
         ],
       }
     },
+    watch: {
+      showColumns: function () {
+        this.$nextTick(() => this.$refs.table.doLayout())
+      },
+    },
+    activated() {
+      this.fetchData()
+    },
     mounted() {
       this.fetchData()
       this.getOptions()
@@ -307,6 +322,7 @@
         this.list = res.data.list || []
         this.total = res.data.total
         this.listLoading = false
+        this.$nextTick(() => this.$refs.table.doLayout())
       },
       handleSearch() {
         this.queryForm.pageNum = 1

+ 4 - 3
src/views/plat/punchRecords/index.vue

@@ -2,10 +2,10 @@
   <div class="follow-container">
     <el-row :gutter="10" style="margin-bottom: 10px">
       <el-col :span="4">
-        <el-input v-model="queryForm.userNickName" placeholder="销售工程师" />
+        <el-input v-model="queryForm.userNickName" placeholder="销售工程师" @keyup.enter.native="fetchData" />
       </el-col>
       <el-col :span="4">
-        <el-input v-model.number="queryForm.daysBeforeToday" placeholder="查询天数">
+        <el-input v-model.number="queryForm.daysBeforeToday" placeholder="查询天数" @keyup.enter.native="fetchData">
           <template slot="append">天</template>
         </el-input>
       </el-col>
@@ -17,7 +17,8 @@
           start-placeholder="开始日期"
           style="width: 100%"
           type="daterange"
-          value-format="yyyy-MM-dd" />
+          value-format="yyyy-MM-dd"
+          @keyup.enter.native="fetchData" />
       </el-col>
       <el-col :span="4">
         <el-button icon="el-icon-plus" type="primary" @click="fetchData">查询</el-button>

+ 20 - 4
src/views/plat/questionnaire/index.vue

@@ -16,16 +16,32 @@
       <vab-query-form-top-panel>
         <el-form :inline="true" :model="queryForm" @submit.native.prevent>
           <el-form-item label="单位名称" prop="unitName">
-            <el-input v-model.trim="queryForm.unitName" clearable placeholder="请输入单位名称" />
+            <el-input
+              v-model.trim="queryForm.unitName"
+              clearable
+              placeholder="请输入单位名称"
+              @keyup.enter.native="queryData" />
           </el-form-item>
           <el-form-item label="职位" prop="objPosition">
-            <el-input v-model.trim="queryForm.objPosition" clearable placeholder="请输入职位" />
+            <el-input
+              v-model.trim="queryForm.objPosition"
+              clearable
+              placeholder="请输入职位"
+              @keyup.enter.native="queryData" />
           </el-form-item>
           <el-form-item label="称呼" prop="objName">
-            <el-input v-model.trim="queryForm.objName" clearable placeholder="请输入称呼" />
+            <el-input
+              v-model.trim="queryForm.objName"
+              clearable
+              placeholder="请输入称呼"
+              @keyup.enter.native="queryData" />
           </el-form-item>
           <el-form-item label="电话" prop="objPhone">
-            <el-input v-model.trim="queryForm.objPhone" clearable placeholder="请输入电话" />
+            <el-input
+              v-model.trim="queryForm.objPhone"
+              clearable
+              placeholder="请输入电话"
+              @keyup.enter.native="queryData" />
           </el-form-item>
           <el-form-item label="跟进状态" prop="reportType">
             <el-select v-model="queryForm.qstStatus" clearable placeholder="跟进状态">

+ 16 - 3
src/views/plat/task/index.vue

@@ -62,7 +62,11 @@
           <vab-query-form-top-panel>
             <el-form :inline="true" :model="queryForm" @submit.native.prevent>
               <el-form-item>
-                <el-input v-model.trim="queryForm.taskTitle" clearable placeholder="请输入督办标题" />
+                <el-input
+                  v-model.trim="queryForm.taskTitle"
+                  clearable
+                  placeholder="请输入督办标题"
+                  @keyup.enter.native="queryData" />
               </el-form-item>
               <el-form-item>
                 <el-button icon="el-icon-search" type="primary" @click="queryData">查询</el-button>
@@ -81,10 +85,10 @@
           </vab-query-form-right-panel>
         </vab-query-form>
         <!-- 主页面 -->
-        <el-table v-loading="listLoading" border :data="list" :height="height" width="100%">
+        <el-table ref="table" v-loading="listLoading" border :data="list" :height="height" width="100%">
           <el-table-column
             v-for="(item, index) in showColumns"
-            :key="index + Math.random()"
+            :key="index"
             align="center"
             :label="item.label"
             :prop="item.prop"
@@ -289,6 +293,14 @@
         ],
       }
     },
+    watch: {
+      showColumns: function () {
+        this.$nextTick(() => this.$refs.table.doLayout())
+      },
+    },
+    activated() {
+      this.fetchData()
+    },
     async created() {
       this.queryForm.operateType = '1'
       this.statistics()
@@ -428,6 +440,7 @@
             }
             this.total = res.data.total
             this.listLoading = false
+            this.$nextTick(() => this.$refs.table.doLayout())
           })
           .catch((err) => {
             this.listLoading = false

+ 18 - 2
src/views/proj/business/index.vue

@@ -96,11 +96,17 @@
       </vab-query-form-right-panel>
     </vab-query-form>
 
-    <el-table ref="busTable" v-loading="listLoading" :data="list" :height="height" @selection-change="setSelectRows">
+    <el-table
+      :key="tableKey"
+      ref="busTable"
+      v-loading="listLoading"
+      :data="list"
+      :height="height"
+      @selection-change="setSelectRows">
       <el-table-column align="center" show-overflow-tooltip type="selection" />
       <el-table-column
         v-for="(item, index) in showColumns"
-        :key="index + Math.random()"
+        :key="index"
         align="center"
         :label="item.label"
         :min-width="item.minWidth"
@@ -205,6 +211,7 @@
     components: { Edit, Transfer, TableTool, FollowAdd },
     data() {
       return {
+        tableKey: 0,
         activeName: '',
         height: this.$baseTableHeight(4),
         queryForm: {
@@ -419,6 +426,10 @@
       }
     },
     watch: {
+      showColumns: function () {
+        this.tableKey++
+        this.$nextTick(() => this.$refs.table.doLayout())
+      },
       activeName(newValue) {
         this.tableType = 'businessTable' + this.selectDictLabel(this.nboTypeOptions, newValue)
         switch (newValue) {
@@ -438,6 +449,9 @@
         }
       },
     },
+    activated() {
+      this.fetchData()
+    },
     created() {
       this.activeName = 'all'
       if (this.$route.params && this.$route.params.length > 0) {
@@ -581,6 +595,8 @@
         this.list = list
         this.total = total
         this.listLoading = false
+        this.tableKey++
+        this.$nextTick(() => this.$refs.busTable.doLayout())
       },
     },
   }

+ 1 - 1
src/views/system/config/index.vue

@@ -27,7 +27,7 @@
 
           <el-form-item>
             <el-button icon="el-icon-search" type="primary" @click="queryData">查询</el-button>
-            <el-button icon="el-icon-refresh" type="primary" @click="resetQuery">重置</el-button>
+            <el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
           </el-form-item>
         </el-form>
       </vab-query-form-top-panel>

+ 6 - 2
src/views/system/dept/index.vue

@@ -4,7 +4,11 @@
       <vab-query-form-top-panel>
         <el-form :inline="true" :model="queryForm" @submit.native.prevent>
           <el-form-item>
-            <el-input v-model.trim="queryForm.deptName" clearable placeholder="请输入名称" />
+            <el-input
+              v-model.trim="queryForm.deptName"
+              clearable
+              placeholder="请输入名称"
+              @keyup.enter.native="queryData" />
           </el-form-item>
           <el-form-item>
             <el-button icon="el-icon-search" type="primary" @click="queryData">查询</el-button>
@@ -47,7 +51,7 @@
       <el-table-column show-overflow-tooltip type="selection" />
       <el-table-column
         v-for="(item, index) in showColumns"
-        :key="index + Math.random()"
+        :key="index"
         align="center"
         :label="item.label"
         :prop="item.prop"

+ 10 - 2
src/views/system/dict/index.vue

@@ -20,10 +20,18 @@
       <vab-query-form-right-panel :span="19">
         <el-form :inline="true" :model="queryForm" @submit.native.prevent>
           <el-form-item prop="dictName">
-            <el-input v-model.trim="queryForm.dictName" clearable placeholder="请输入字典名称" />
+            <el-input
+              v-model.trim="queryForm.dictName"
+              clearable
+              placeholder="请输入字典名称"
+              @keyup.enter.native="queryData" />
           </el-form-item>
           <el-form-item prop="dictType">
-            <el-input v-model.trim="queryForm.dictType" clearable placeholder="请输入字典类型" />
+            <el-input
+              v-model.trim="queryForm.dictType"
+              clearable
+              placeholder="请输入字典类型"
+              @keyup.enter.native="queryData" />
           </el-form-item>
           <el-form-item prop="status">
             <el-select v-model="queryForm.status" clearable placeholder="字典状态">

+ 1 - 1
src/views/system/loginLog/index.vue

@@ -69,7 +69,7 @@
       <el-table-column align="center" type="selection" />
       <el-table-column
         v-for="(item, index) in showColumns"
-        :key="index + Math.random()"
+        :key="index"
         align="center"
         :label="item.label"
         :prop="item.prop"

+ 1 - 1
src/views/system/notice/index.vue

@@ -42,7 +42,7 @@
       <el-table-column align="center" show-overflow-tooltip type="selection" />
       <el-table-column
         v-for="(item, index) in showColumns"
-        :key="index + Math.random()"
+        :key="index"
         align="center"
         :formatter="item.formatter"
         :label="item.label"

+ 10 - 2
src/views/system/post/index.vue

@@ -16,10 +16,18 @@
       <vab-query-form-right-panel :span="20">
         <el-form :inline="true" :model="queryForm" @submit.native.prevent>
           <el-form-item label="岗位名称" prop="postName">
-            <el-input v-model.trim="queryForm.postName" clearable placeholder="请输入岗位名称" />
+            <el-input
+              v-model.trim="queryForm.postName"
+              clearable
+              placeholder="请输入岗位名称"
+              @keyup.enter.native="queryData" />
           </el-form-item>
           <el-form-item label="岗位编码" prop="postCode">
-            <el-input v-model.trim="queryForm.postCode" clearable placeholder="请输入岗位编码" />
+            <el-input
+              v-model.trim="queryForm.postCode"
+              clearable
+              placeholder="请输入岗位编码"
+              @keyup.enter.native="queryData" />
           </el-form-item>
           <el-form-item label="状态" prop="status">
             <el-select v-model="queryForm.status" clearable placeholder="状态">

+ 10 - 2
src/views/system/report/index.vue

@@ -16,10 +16,18 @@
       <vab-query-form-right-panel :span="19">
         <el-form :inline="true" :model="queryForm" @submit.native.prevent>
           <el-form-item label="报表名称" prop="reportName">
-            <el-input v-model.trim="queryForm.reportName" clearable placeholder="请输入报表名称" />
+            <el-input
+              v-model.trim="queryForm.reportName"
+              clearable
+              placeholder="请输入报表名称"
+              @keyup.enter.native="queryData" />
           </el-form-item>
           <el-form-item label="报表代码" prop="reportCode">
-            <el-input v-model.trim="queryForm.reportCode" clearable placeholder="请输入报表代码" />
+            <el-input
+              v-model.trim="queryForm.reportCode"
+              clearable
+              placeholder="请输入报表代码"
+              @keyup.enter.native="queryData" />
           </el-form-item>
           <el-form-item label="报表类型" prop="reportType">
             <el-select v-model="queryForm.reportType" clearable placeholder="类型">

+ 5 - 1
src/views/system/role/index.vue

@@ -16,7 +16,11 @@
       <vab-query-form-right-panel :span="12">
         <el-form :inline="true" :model="queryForm" @submit.native.prevent>
           <el-form-item>
-            <el-input v-model.trim="queryForm.roleName" clearable placeholder="请输入角色" />
+            <el-input
+              v-model.trim="queryForm.roleName"
+              clearable
+              placeholder="请输入角色"
+              @keyup.enter.native="queryData" />
           </el-form-item>
           <el-form-item>
             <el-button icon="el-icon-search" type="primary" @click="queryData">查询</el-button>

+ 7 - 2
src/views/system/user/index.vue

@@ -10,7 +10,8 @@
             placeholder="请输入部门名称"
             prefix-icon="el-icon-search"
             size="small"
-            style="margin-bottom: 20px" />
+            style="margin-bottom: 20px"
+            @keyup.enter.native="getTreeselect" />
         </div>
         <div class="head-container">
           <el-tree
@@ -45,7 +46,11 @@
           <vab-query-form-right-panel :span="12">
             <el-form :inline="true" :model="queryForm" @submit.native.prevent>
               <el-form-item>
-                <el-input v-model.trim="queryForm.keyWords" clearable placeholder="请输入用户名" />
+                <el-input
+                  v-model.trim="queryForm.keyWords"
+                  clearable
+                  placeholder="请输入用户名"
+                  @keyup.enter.native="queryData" />
               </el-form-item>
               <el-form-item>
                 <el-button icon="el-icon-search" type="primary" @click="queryData">查询</el-button>

+ 20 - 6
src/views/work/order/index.vue

@@ -4,18 +4,23 @@
       <vab-query-form-top-panel>
         <el-form ref="queryForm" :inline="true" :model="queryForm" @submit.native.prevent>
           <el-form-item prop="name">
-            <el-input v-model="queryForm.name" placeholder="工单名称" />
+            <el-input v-model="queryForm.name" placeholder="工单名称" @keyup.enter.native="fetchData" />
           </el-form-item>
           <el-form-item prop="orderTypeName">
-            <el-input v-model="queryForm.orderTypeName" placeholder="工单类型" />
+            <el-input v-model="queryForm.orderTypeName" placeholder="工单类型" @keyup.enter.native="fetchData" />
           </el-form-item>
           <el-form-item prop="orderStatus">
-            <el-select v-model="queryForm.orderStatus" clearable placeholder="工单状态" style="width: 100%">
+            <el-select
+              v-model="queryForm.orderStatus"
+              clearable
+              placeholder="工单状态"
+              style="width: 100%"
+              @keyup.enter.native="fetchData">
               <el-option v-for="item in orderStatusOptions" :key="item.key" :label="item.value" :value="item.key" />
             </el-select>
           </el-form-item>
           <el-form-item prop="assignUserName">
-            <el-input v-model="queryForm.assignUserName" placeholder="分派人员姓名" />
+            <el-input v-model="queryForm.assignUserName" placeholder="分派人员姓名" @keyup.enter.native="fetchData" />
           </el-form-item>
 
           <el-form-item>
@@ -32,10 +37,10 @@
       </vab-query-form-right-panel>
     </vab-query-form>
 
-    <el-table v-loading="listLoading" border :data="list" :height="$baseTableHeight(1)">
+    <el-table ref="table" v-loading="listLoading" border :data="list" :height="$baseTableHeight(2)">
       <el-table-column
         v-for="(item, index) in showColumns"
-        :key="index + Math.random()"
+        :key="index"
         align="center"
         :label="item.label"
         :prop="item.prop"
@@ -148,6 +153,14 @@
         orderStatusOptions: [],
       }
     },
+    watch: {
+      showColumns: function () {
+        this.$nextTick(() => this.$refs.table.doLayout())
+      },
+    },
+    activated() {
+      this.fetchData()
+    },
     mounted() {
       this.fetchData()
     },
@@ -168,6 +181,7 @@
         this.list = res.data.list || []
         this.total = res.data.total
         this.listLoading = false
+        this.$nextTick(() => this.$refs.table.doLayout())
       },
       handleEdit(row) {
         if (row.id) {