Browse Source

修改表格报错问题

zhuliu 1 year ago
parent
commit
5ab1f968d4

+ 81 - 81
package-lock.json

@@ -1775,6 +1775,87 @@
         "webpack-chain": "^6.4.0",
         "webpack-dev-server": "^3.11.0",
         "webpack-merge": "^4.2.2"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+          "dev": true,
+          "optional": true
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+          "dev": true,
+          "optional": true
+        },
+        "loader-utils": {
+          "version": "2.0.4",
+          "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz",
+          "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^2.1.2"
+          }
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "has-flag": "^4.0.0"
+          }
+        },
+        "vue-loader-v16": {
+          "version": "npm:vue-loader@16.8.3",
+          "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-16.8.3.tgz",
+          "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "chalk": "^4.1.0",
+            "hash-sum": "^2.0.0",
+            "loader-utils": "^2.0.0"
+          }
+        }
       }
     },
     "@vue/cli-shared-utils": {
@@ -12410,87 +12491,6 @@
         }
       }
     },
-    "vue-loader-v16": {
-      "version": "npm:vue-loader@16.8.3",
-      "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz",
-      "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "chalk": "^4.1.0",
-        "hash-sum": "^2.0.0",
-        "loader-utils": "^2.0.0"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "color-convert": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-          "dev": true,
-          "optional": true
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-          "dev": true,
-          "optional": true
-        },
-        "loader-utils": {
-          "version": "2.0.4",
-          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
-          "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "big.js": "^5.2.2",
-            "emojis-list": "^3.0.0",
-            "json5": "^2.1.2"
-          }
-        },
-        "supports-color": {
-          "version": "7.2.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
     "vue-particles": {
       "version": "1.0.9",
       "resolved": "https://registry.npmmirror.com/vue-particles/-/vue-particles-1.0.9.tgz",

+ 34 - 0
src/api/newApi/product.js

@@ -18,5 +18,39 @@ export default {
   queryProductCategory(data) {
     return axios.post("/xiaoshi/productCategory/queryProductCategory", data);
   },
+  /**
+   * 删除产品类别
+   */
+  deleteProductCategory(data) {
+    return axios.post("/xiaoshi/productCategory/deleteProductCategory", data);
+  },
+  
+
+  /**
+   * 新增产品类别
+   */
+  addProduct(data) {
+    return axios.post("/xiaoshi/product/addProduct", data);
+  },
+  /**
+   * 修改产品类别
+   */
+  updateProduct(data) {
+    return axios.post("/xiaoshi/productCategory/updateProduct", data);
+  },
+  /**
+   * 查询产品类别
+   */
+  queryProduct(data) {
+    return axios.post("/xiaoshi/productCategory/queryProduct", data);
+  },
+  /**
+   * 删除产品类别
+   */
+  deleteProduct(data) {
+    return axios.post("/xiaoshi/productCategory/deleteProduct", data);
+  },
+ 
+  
   
 };

+ 1 - 1
src/views/components/dialog/ClientTable.vue

@@ -120,7 +120,7 @@ watch:{
         .getPersonList(this.queryParams)
         .then((response) => {
           this.tableData = response.data;
-          this.total = response.data.total;
+          this.total = response.pageColumn.total;
           this.loading = false;
         })
         .catch((error) => {

+ 2 - 6
src/views/event/components/dialog/addEvent.vue

@@ -19,10 +19,6 @@
                 v-for="item in clientList"
                 :key="parseInt(item.id)" :label="item.name" :value="parseInt(item.id)">
               </el-option>
-              <!-- <el-option
-                v-for="item in clientList"
-                :key="parseInt(item.value)" :label="item.label" :value="parseInt(item.value)">
-              </el-option> -->
             </el-select>
           </el-form-item>
           <el-form-item label="事件日期" prop="eventDate">
@@ -211,8 +207,8 @@ export default {
     //关闭弹窗
     handleClose() {
       if (this.type == '1') {
-        this.$refs.select.blur()
-        this.$refs.select2.blur()
+        // this.$refs.select.blur()
+        // this.$refs.select2.blur()
         this.$refs.ruleForm.resetFields()
       }
       this.dialogVisible = false

+ 1 - 1
src/views/event/components/view/table.vue

@@ -2,7 +2,7 @@
   <div class="eventTable height_100" v-DivHeight="getDivHeight" >
     <el-table :data="tableData" header-row-class-name="custom-table-header" @sort-change="sortChange"   
     v-if="showTable" :maxHeight="tableHeight" v-el-table-infinite-scroll="getList" :infinite-scroll-distance="10" 
-    :infinite-scroll-disabled="disabled" :height="row ? '300' : ''">
+    :infinite-scroll-disabled="disabled" >
       <el-table-column label="#" width="60" type="index" align="center">
         <template slot-scope="scope">
           <span>{{ (scope.$index + 1) + ((queryParams.current - 1) * queryParams.size) }}</span>

+ 44 - 4
src/views/product/components/dialog/addEditCategory.vue

@@ -9,12 +9,21 @@
         <el-form-item label="参考许可费率" prop="rate">
           <el-input v-model="form.licenseRate" placeholder="请输入参考许可费率(介于 0 ~ 1 之间)"></el-input>
         </el-form-item>
+        <el-form-item label="管理人" prop="rate">
+          <div class="manage">
+            <el-button size="small" @click="showDialog(2)">选择</el-button>
+            <div v-html="getNames(form.adminPersons)">
+
+            </div>
+          </div>
+          
+        </el-form-item>
         <el-form-item label="谁可以看" prop="rate">
             <div  v-for="item in $constants.showType" :key="item.value" >
               <div>
                 <el-radio :checked="item.value == form.showType" :label="item.value" v-model="form.showType" @input="changeShowType(item.value)">{{item.label}}</el-radio>
               </div>
-              <div v-if="form.showType && item.value == form.showType && [0,1].indexOf(item.value)==-1" class="person" @click="showDialog">
+              <div v-if="form.showType && item.value == form.showType && [0,1].indexOf(item.value)==-1" class="person" @click="showDialog(1)">
                 <p>选择朋友</p>
                 <p v-html="getNames(form.persons)">
                 </p>
@@ -68,7 +77,9 @@ export default {
         name: [ { required: true, message: '请输入类别名称', trigger: 'blur' },],
       },
       //待上传的文件
-      file:[]
+      file:[],
+      //选择类型是管理人还是谁都可以看
+      chooseType:1
     };
   },
   mounted() { },
@@ -146,14 +157,31 @@ export default {
       this.$set(this.form,'persons',[])
       this.$set(this.form,'showPersonId',[])
       if(this.form.showType == 2 || this.form.showType == 3){
-        this.showDialog()
+        this.showDialog(1)
       }
       
     },
-    showDialog(){
+    //打开人员弹窗
+    showDialog(type){
+      this.chooseType = type
+      if(type == 2){
+        this.$refs.choosePerson.open(this.form.adminIds,this.form.adminPersons)
+        return false
+      }
       this.$refs.choosePerson.open(this.form.showPersonId,this.form.persons)
     },
+    //获取人员信息
     getPersonIds({personIds,persons}){
+      if(this.chooseType == 2){
+        if(personIds.length>0){
+          this.$set(this.form,'adminPersons',persons)
+          this.$set(this.form,'adminIds',personIds)
+        }else{
+          this.$set(this.form,'adminPersons',[])
+          this.$set(this.form,'adminIds',[])
+        }
+        return false
+      }
       if(personIds.length>0){
         this.$set(this.form,'persons',persons)
         this.$set(this.form,'showPersonId',personIds)
@@ -183,6 +211,18 @@ export default {
 </script>
 
 <style lang="scss" scoped>
+.manage{
+  display: flex;
+  align-items: center;
+  height: 40px;
+  div{
+    width:100%;
+    padding-left:10px;
+    overflow: hidden;
+    white-space: nowrap;
+    text-overflow:ellipsis;
+  }
+}
 .person{
   height:50px;
   padding-left:30px;

+ 81 - 1
src/views/product/components/dialog/addEditProduct.vue

@@ -4,7 +4,23 @@
     <el-dialog :title="title" :visible.sync="dialogVisible" :before-close="handleClose" width="600px" :close-on-click-modal="false">
       <el-form :model="form" :rules="rules" ref="ruleForm" label-width="120px" class="demo-ruleForm">
         <el-form-item label="所属产品类别" prop="productCategoryId">
-          <el-input v-model="form.productCategoryName" placeholder="请输入所属产品类别"></el-input>
+          <el-select
+            v-model="form.productCategoryId"
+            multiple
+            filterable
+            remote
+            reserve-keyword
+            placeholder="请输入关键词"
+            v-SelectLazyLoading="lazyLoading"
+            :remote-method="remoteMethod"
+            :loading="loading">
+            <el-option
+              v-for="item in productCategoryList"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value">
+            </el-option>
+          </el-select>
         </el-form-item>
         <el-form-item label="产品名称" prop="productName">
           <el-input v-model="form.productName" placeholder="请输入产品名称"></el-input>
@@ -68,6 +84,15 @@ export default {
         productCategoryId: [{ required: true, message: '请输入所属产品类别', trigger: 'blur' },],
         productName: [{ required: true, message: '请输入产品名称', trigger: 'blur' },],
       },
+      //产品类别集合
+      productCategoryList:[],
+      //产品类别分页信息
+      queryParams:{
+        size:10,
+        current:1
+      },
+      //是否懒加载
+      isLazy:true,
     };
   },
   mounted() { },
@@ -108,6 +133,61 @@ export default {
       this.$refs.ruleForm.resetFields()
       this.dialogVisible = false;
     },
+    // 下拉框懒加载
+    lazyLoading() {
+      if(!this.isLazy){
+        return false
+      }
+      this.queryParams.current++;
+      this.getProductCategory();
+    },
+    //远程搜索产品类别
+    remoteMethod(query) {
+      this.isLazy = true
+        if (query !== '') {
+          this.loading = true;
+          this.queryParams = {
+            current:1,
+            size:10,
+            searchQuery:`name=${query}`
+          }
+          this.$api.queryProductCategory(this.queryParams).then(response=>{
+            if(response.code == 200){
+              this.loading = false;
+              this.productCategoryList = response.data.data
+            }
+          }).catch(error=>{
+            this.loading = false;
+          })
+        } else {
+          this.queryParams.name = null
+          this.productCategoryList = [];
+          this.getProductCategory()
+        }
+    },
+    //获取产品类别列表
+    getProductCategory(){
+      if(!this.isLazy){
+        return false
+      }
+      this.$api.queryProductCategory(this.queryParams).then(response=>{
+        if(response.code == 200){
+          if(response.data.data && response.data.data.length == 0){
+            this.isLazy = false
+          }
+          if(this.form.productCategoryId){
+            var index = response.data.data.findIndex(item=>{
+              return item.id == this.form.productCategoryId
+            })
+            if(index!=-1){
+              response.data.data.splice(index,1)
+            }
+          }
+          this.productCategoryList = [...this.productCategoryList, ...response.data.data];
+        }
+      }).catch(error=>{
+      })
+    }
   },
 };
 </script>

+ 45 - 16
src/views/product/components/index.vue

@@ -123,7 +123,7 @@ export default {
   methods: {
     //获取检索字段以及分组字段
     async getColumn() {
-      let params = ['event']
+      let params = ['product','productCategory']
       await this.$api.getParamsCommon(params).then(res => {
         if (res.code == 200) {
           // 显示栏位
@@ -132,21 +132,15 @@ export default {
           })
           // 分组字段
           let conditionDTOList= JSON.parse(JSON.stringify(res.data[0].conditionDTOList))
-          this.groupingOption = conditionDTOList.filter(item => {
-            return item.ifGroup == true
+          this.groupingOption = this.$commonJS.getField(conditionDTOList,(u)=> u.ifGroup == true,{
+            name: 'name',
+            value: 'value',
           })
           // 搜索字段
-          this.searchFiled = res.data[0].conditionDTOList.filter(item => {
-            item.label = item.name
-            if (['createTime','eventDate'].includes(item.value)) {
-              item.type=2
-            }else if (['scenarioId'].includes(item.value)) {
-              item.type = 3
-              item.options=this.scene
-            } else {
-              item.type=1
-            }
-            return item.ifSearch == true
+          this.searchFiled = this.$commonJS.getField(conditionDTOList,(u)=> u.ifSearch == true ,{
+            label: 'name',
+            value: 'value',
+            type:'type',
           })
         }
       })
@@ -161,11 +155,47 @@ export default {
         case '0'://编辑
           this.$refs.addEditCategory.open(row)
           break;
-      
+        case '1'://趋势图
+          break;
+        case '2'://预览图片
+          break;
+        case '3'://分类架构
+          break;
+        case '4'://专利布局可视化
+          break;
+        case '5'://删 除
+          this.deletes(row)
+          break;
         default:
           break;
       }
     },
+    //获取删除的id
+    deletes(row){
+      this.deleteData([row.id])
+    },
+    //删除数据
+    deleteData(ids){
+      this.$confirm('此操作将删除该产品类别, 是否继续?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        // 调用接口
+        this.$api.deleteProductCategory(ids).then(res => {
+          if (res.code == 200) {
+            this.getList()
+            // if(isLast){
+            //   this.isGrouping()
+            // }
+            // this.handleMessage = '删除成功'
+            // this.clearMessage()
+            this.$message.success('删除成功!');
+          }
+        })
+      }).catch(() => {
+      });
+    },
     // 右侧新增类别、产品
     handleCommand(event) {
       if (event == '0') {//新增类别
@@ -182,7 +212,6 @@ export default {
     },
     // 获取产品类别数据
     getList(){
-      console.log(23)
       var str = this.$commonJS.objectToString(this.searchOption)
       let params = {
         ...this.queryParams,//分页信息