zhuhao 1 год назад
Родитель
Сommit
e7f7748fdf

+ 6 - 0
src/api/event.js

@@ -32,5 +32,11 @@ export default {
   deleteEvent(data) {
    return axios.post('/xiaoshi/event/deleteEvent', data)
   },
+  /**
+  * 事件分组
+  */
+  groupEvent(data) {
+   return axios.post('/xiaoshi/event/groupEvent', data)
+  },
 
 }

+ 2 - 0
src/utils/direct/index.js

@@ -215,6 +215,7 @@ const dragControllerDiv2=(el,binding)=> {
 const SelectLazyLoading=(el,binding)=>{
    
     let SELECT_DOM = el.querySelector(".el-select-dropdown .el-select-dropdown__wrap") || el.querySelector('.el-autocomplete-suggestion__wrap') ;
+
     if(!SELECT_DOM){
         return false
     }
@@ -222,6 +223,7 @@ const SelectLazyLoading=(el,binding)=>{
         // scrollHeight:当前所有选项的高度
       // scrollTop:滚动的距离
       // clientHeight:下拉框的高度
+      console.log(this.scrollHeight , this.scrollTop, this.clientHeight)
       let condition = this.scrollHeight - this.scrollTop - 1 <= this.clientHeight;
       if (condition) {
         binding.value();

+ 1 - 0
src/views/client/index.vue

@@ -207,6 +207,7 @@ export default {
     },
     //获取客户信息
     getList() {
+      console.log(this.queryParams);
       this.loading = true
       this.$api.getAdminClientList(this.queryParams).then(response => {
         this.tableData = response.data.records

+ 31 - 10
src/views/event/components/dialog/addEvent.vue

@@ -11,13 +11,19 @@
               @select="handleSelectQuestion" @blur="blur($event, { $index: 0 })" style="width: 100%;">
             </el-autocomplete>
           </el-form-item>
-          <el-form-item label="所属客户" prop="clientId" v-if="userinfo.tenantType == 1">
-            <el-select v-model="formData[0].clientId" :disabled="(formData[0].id && !this.row) ? true : false"
+          <el-form-item label="所属客户" prop="clientId" v-if="userinfo.tenantType == 1" >
+          <!-- <el-form-item label="所属客户" prop="clientId"> -->
+            <!-- <el-select v-model="formData[0].clientId" :disabled="(formData[0].id && !this.row) ? true : false" -->
+            <el-select v-model="formData[0].clientId" clearable
               style="width: 100%;" placeholder="请选择客户">
               <el-option
                 v-for="item in clientList"
-                :key="parseInt(item.value)" :label="item.label" :value="parseInt(item.value)">
+                :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">
@@ -27,8 +33,9 @@
               >
             </el-date-picker>
           </el-form-item>
-          <el-form-item label="事件场景" prop="assistPerson">
-            <el-select v-model="formData[0].applicationScenarios[0]" :disabled="(formData[0].id && !this.row) ? true : false"
+          <el-form-item label="事件场景" prop="scenarioId">
+            <!-- <el-select v-model="formData[0].applicationScenarios[0]" :disabled="(formData[0].id && !this.row) ? true : false" -->
+            <el-select v-model="formData[0].scenarioId" 
               style="width: 100%;" placeholder="请选择事件场景">
               <el-option
                 v-for="item in commonData.ENTERPRISE_APPLICATION_SCENARIO ? commonData.ENTERPRISE_APPLICATION_SCENARIO : []"
@@ -150,7 +157,7 @@ export default {
       type: 1,
       queryParams: {
         current: 1,
-        size:2,
+        size:10,
       },
       eventInput:'',
       //客户集合
@@ -166,8 +173,21 @@ export default {
     await this.getCommonData()
   },
   methods: {
+    //获取客户信息
+    getAdminClientList() {
+      let params = {
+        current: 1,
+        size:9999
+      }
+      this.$api.getAdminClientList(params).then(response => {
+        this.clientList = response.data.records
+      }).catch(error => {
+
+      })
+    },
     //打开弹窗,判断是编辑还是添加,同时判断是批量添加还是添加单个事件(type==1是单个,type==2是批量)
     open(data, type) {
+      this.getAdminClientList()
       this.type = type
       if (data) {
         this.title = '编辑事件'
@@ -194,6 +214,7 @@ export default {
     //关闭弹窗
     handleClose() {
       if (this.type=='1') {
+        console.log(this.type);
         this.$refs.ruleForm.resetFields()
       }
       this.dialogVisible = false
@@ -239,9 +260,9 @@ export default {
           return false
         }
         var edit = false
-        if (this.row) {
-          edit = true
-        }
+        // if (this.row) {
+        //   edit = true
+        // }
         this.addFormData({ list: list, option: 1, edit })
         // this.$emit('formData', { list: list, option: 1, edit })
       } catch (error) {
@@ -330,7 +351,7 @@ export default {
     },
     // 懒加载方法
     load() {
-      this.queryParams.size += 2
+      this.queryParams.size += 10
       this.questionEventList()
     },
     // 查询事件

+ 55 - 34
src/views/event/components/index.vue

@@ -45,6 +45,10 @@
             :commonData="commonData"
             @on-sort="handleSort"
             @option="handleOption"
+            
+            :groupBy='groupingValue'
+            :groupingOption="groupingOption"
+            :searchOption="searchOption"
           ></component>
         </div>
       </el-main>
@@ -118,7 +122,7 @@ export default {
       //显示视图
       showView: false,
       //场景
-      scene:[],
+      scene: [],
     };
   },
   watch: {},
@@ -126,9 +130,9 @@ export default {
   created() { },
   async mounted() {
     await this.getCommonData()
+    //获取table栏位及分组字段
+    await this.getColumn()
     this.getList()
-    //获取table栏位及分组字段v
-    this.getColumn()
   },
   methods: {
     // 请求应用场景(是通过字典还是接口待定)
@@ -153,21 +157,25 @@ export default {
       })
     },
     //获取table栏位及分组字段、检索字段
-    getColumn() {
+    async getColumn() {
       let params = ['event']
-      this.$api.getParamsCommon(params).then(res => {
+      await this.$api.getParamsCommon(params).then(res => {
         if (res.code == 200) {
-          this.columnList = res.data[0].conditionDTOList
-          this.groupingOption=res.data[0].conditionDTOList.filter(item => {
+          // 显示栏位
+          this.columnList = res.data[0].conditionDTOList.filter(item => {
+            return item.name != 'Id' && item.ifShow == true
+          })
+          // 分组字段
+          let conditionDTOList= JSON.parse(JSON.stringify(res.data[0].conditionDTOList))
+          this.groupingOption = conditionDTOList.filter(item => {
+            var reg = /时间/;
+            if (item.name.indexOf('时间') != -1) {
+              let a = item.name.replace(reg, '月份')
+              item.name=a
+            }
             return item.ifGroup == true
           })
-        //   {
-        //   label: '事件名称',
-        //   value: 'name',
-        //   type: 3,
-        //   placeholder: '请输入事件名称',
-        //   options: [{value: 1,label:2}],
-        // },
+          // 搜索字段
           this.searchFiled = res.data[0].conditionDTOList.filter(item => {
             item.label = item.name
             if (['createTime','eventDate'].includes(item.value)) {
@@ -205,8 +213,7 @@ export default {
       this.queryParams.current=1
       this.isGrouping()
     },
-   
-
+  
     // 分页
     handleCurrentChange(val) {
       this.queryParams.current = val;
@@ -218,10 +225,9 @@ export default {
       let params = {
         ...this.queryParams,//分页信息
         ...this.searchOption,//检索条件
-        orderDTOList:this.sort,//排序
+        orderDTOList: this.sort,//排序
       }
       this.$api.queryEvent(params).then(res => {
-        
         if (res.code == 200) {
           this.tableData = res.data.data
           this.total=res.data.total
@@ -249,19 +255,24 @@ export default {
         ...this.queryParams,//分页信息
         ...this.searchOption,//检索信息
         orderDTOList:this.sort,//排序
-        grouping:this.groupingValue,//分组信息
+        groupBy:this.groupingValue,//分组信息
       }
-      // this.$api.query(params).then(res => {
-      //   if (res.code == 200) {
-      //    this.tableData = rea.data
-      //   }
-      // })
+      this.$api.groupEvent(params).then(res => {
+        if (res.code == 200) {
+          this.commonData=res.data.data.values
+          this.total=res.data.total
+        }
+      }).catch(err => {
+        this.commonData = []
+        this.total=0
+      })
     },
 
     //切换视图
     onChange2(type) {
       this.viewSelected = type
-      // this.getList()
+      this.queryParams.current=1
+      this.getList()
     },
 
     //新增事件的选项(1是添加单个事件,2是批量添加)
@@ -270,17 +281,27 @@ export default {
     },
 
     //获取排序字段// 子组件table排序
-    handleSort({ column, prop, order ,str}) {
-      let params = {
-        orderBy:prop,
+    handleSort({ column, prop, order, str }) {
+      if (order == 'null') {
+        return;
+      }
+      var orderType = {
+        ascending: 0,
+        descending:1
       }
-      if (order == 'ascending') {
-        params.orderType = 0
+      var params = this.sort.find(item => {
+        return item.orderBy == prop
+      })
+      if (params) {
+        params.orderType = orderType[order]
       } else {
-        params.orderType=1
+        params = {}
+        params.orderBy = prop
+        params.orderType = orderType[order]
+        this.sort.push(params)
       }
-      this.sort.push(params)
-      if (str == '展开行排序') {
+      //1表示展开行2表示基础表格
+      if (str == '1') {
         this.getGrouping()
       } else {//table排序
         this.getList()
@@ -308,7 +329,7 @@ export default {
         case 'cancel'://取消关联
           break;
         case 'edit'://编辑事件,打开单件事件弹窗
-          this.$refs.addEvent.open(row,1)
+          this.$refs.addEvent.open(row, 1)
           break;
       }
     },

+ 1 - 1
src/views/event/components/mixins/index.js

@@ -72,7 +72,7 @@ export default {
       this.$emit('option', { option: 'cancel', row })
     },
     //操作列事件
-    handleCommand(option, row) {
+    handleCommand(option, row) {  
       this.$emit('option', { option, row })
     },
     //新增报告

+ 13 - 12
src/views/event/components/view/card.vue

@@ -6,7 +6,7 @@
           <div slot="head">
             <div style="font-size:18px">
               <!-- <span># {{ (itemIndex + 1) + ((queryParams.current - 1) * queryParams.size)}}</span> -->
-              <span>{{ item.questionName }}</span>
+              <span>{{ item.name }}</span>
             </div>
             <div v-if="!projectId && !show">
               <el-dropdown @command="handleCommand($event, item)" trigger="click">
@@ -33,28 +33,29 @@
           </div>
           <div>
             <el-form label-position="left" label-width="110px">
-              <el-form-item label="报告数量:"> {{ item.reportNum || 0  }} </el-form-item>
-              <el-form-item label="专题库数量:">{{ item.reportNum || 0 }}</el-form-item>
+              <el-form-item label="报告数量:"> {{ item.reportProjectNum || 0  }} </el-form-item>
+              <el-form-item label="专题库数量:">{{ item.patentProjectNum || 0 }}</el-form-item>
               <el-form-item label="应用场景:">
-                <el-tooltip class="item" effect="light" placement="top">
-                  <div slot="content"><span v-for="name in item.scenarioNames">{{ name }}&nbsp;&nbsp;</span></div>
+                <el-tooltip class="item" effect="light" placement="top" :content="item.scenarioName">
+                  <div>{{ item.scenarioName }}</div>
+                  <!-- <div slot="content"><span v-for="name in item.scenarioNames">{{ name }}&nbsp;&nbsp;</span></div>
                   <span v-if="item.scenarioNames">{{ item.scenarioNames[0] }}
                     <span v-if="item.scenarioNames.length > 1">
                       <span><img src="@/assets/img/更多.png" style="width:18px;vertical-align:bottom" /></span>
                     </span>
-                  </span>
+                  </span> -->
                 </el-tooltip>
               </el-form-item>
-              <el-form-item label="时间:">{{ item.eventDate }}</el-form-item>
-              <el-form-item label="描述:">{{ item.description }}</el-form-item>
-              <el-form-item label="创建人:">{{ item.createPersonName }}</el-form-item>
-              <el-form-item label="创建时间:">{{ item.createTime }}</el-form-item>
+              <el-form-item label="时间:">{{ item.eventDate || '--' }}</el-form-item>
+              <el-form-item label="描述:">{{ item.description || '--'}}</el-form-item>
+              <el-form-item label="创建人:">{{ item.createName || '--'}}</el-form-item>
+              <el-form-item label="创建时间:">{{ item.createTime || '--'}}</el-form-item>
             </el-form>
           </div>
           <div slot="foot">
             <div class="btn">
-              <i class="el-icon-edit" @click="handleEdit(item)"></i>
-              <i class="el-icon-delete" @click="handleCommand('3', item)"></i>
+              <i class="el-icon-edit" @click="handleClick(item)"></i>
+              <i class="el-icon-delete" @click="handleCommand('10', item)"></i>
             </div>
           </div>
         </myCard>

+ 65 - 24
src/views/event/components/view/mergeTable.vue

@@ -8,8 +8,14 @@
           </div>
         </template>
       </el-table-column>
-      <el-table-column v-for="column in column" :key="column.value" :label="column.name" :prop="column.value" sortable="custom"
-        show-overflow-tooltip></el-table-column>
+      <el-table-column v-for="column in groupingOption.filter(item=> {return item.value == groupBy})" :key="column.value" :label="column.name" :prop="column.value" sortable="custom"
+        show-overflow-tooltip>
+        <template slot-scope="scope">
+          <div>
+            {{ scope.row.name?scope.row.name:'--' }}
+          </div>
+        </template>
+      </el-table-column>
     </el-table>
   </div>
 </template>
@@ -19,6 +25,22 @@ import Table from "./table";
 
 export default {
   props: {
+    // 检索条件
+    searchOption: {
+      type: Object,
+      default: () => {
+        return {}
+      }
+    },
+    // 分组的栏位
+    groupingOption: {
+      type: Array,
+      default: () => {
+        return []
+      }
+    },
+    // 分组的值
+    groupBy:String,
     commonData: Array,
     column: {//显示栏位管理数组
       type: Array,
@@ -88,9 +110,27 @@ export default {
     
   },
   methods: {
+    //查询事件数据
+    getList() {
+      let params = {
+        size:10,
+        current:1,//分页信息
+        ...this.searchOption,//检索条件
+        orderDTOList: this.sort,//排序
+      }
+      this.$api.queryEvent(params).then(res => {
+        if (res.code == 200) {
+          this.tableData = res.data.data
+          this.total=res.data.total
+        }
+      }).catch(err => {
+        this.tableData = []
+        this.total=0
+      })
+    },
     // 排序
     sortChange({ column, prop, order }) {
-      let str='展开行排序'
+      let str='1'
       this.$emit('on-sort',{ column, prop, order ,str})
     },
     //操作列事件
@@ -98,29 +138,30 @@ export default {
       this.$emit('option', data)
     },
     //打开展开行获取数据并保存起来
-    expandChange({ row, rowList }) {
-      this.$emit()
-      let a=this.expandList.findIndex(item => {
-        return item == row.id
-      })
-      if (a != -1) {
-        if (row.isSave && row.isSave.length>0) {//若有从这里拿出来给到子组件的tableDate
+    expandChange(row, expandedRows) {
+      // console.log(row);
+      this.$emit('on-expand',row)
+      // let a=this.expandList.findIndex(item => {
+      //   return item == row.id
+      // })
+      // if (a != -1) {
+      //   if (row.isSave && row.isSave.length>0) {//若有从这里拿出来给到子组件的tableDate
           
-        } else {
-          // 请求接口,并将返回的数据保存在row.isSave中
+      //   } else {
+      //     // 请求接口,并将返回的数据保存在row.isSave中
 
-        }
-      } else {
-        this.expandList.push(row.id)
-        // 请求查询接口,将数据给到tableData以及row中的isSave中
-        // this.$api.query(params).then(res => {
-        //   if (res.code == 200) {
-        //     row.isSave = res.data
-        //     this.tableData=res.data
-        // 
-        //   }
-        // })
-      }
+      //   }
+      // } else {
+      //   this.expandList.push(row.id)
+      //   // 请求查询接口,将数据给到tableData以及row中的isSave中
+      //   // this.$api.query(params).then(res => {
+      //   //   if (res.code == 200) {
+      //   //     row.isSave = res.data
+      //   //     this.tableData=res.data
+      //   // 
+      //   //   }
+      //   // })
+      // }
     }
   }
 }

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

@@ -12,7 +12,7 @@
           <div v-if="['name', 'reportProjectNum', 'patentProjectNum'].includes(item.value)">
             <el-link @click="handleItem(scope.row, item.value)">{{ scope.row[item.value] }}</el-link>
           </div>
-          <div v-else-if="['scenarioId'].includes(item.value)" v-html="getColumnData(scope.row, item.value)"></div>
+          <div v-else-if="['scenarioId','eventDate'].includes(item.value)" v-html="getColumnData(scope.row, item.value)"></div>
           <div v-else>{{ scope.row[item.value]?scope.row[item.value]:'--' }}</div>
         </template>
       </el-table-column>
@@ -128,6 +128,13 @@ export default {
           return row.scenarioName
         } else {
           return '--'
+        } 
+      }
+      else if (key == 'eventDate') {
+        if (row.eventDate) {
+          return row.eventDate.slice(0,10)
+        } else {
+          return '--'
         }
       }
     },