Browse Source

feat: 客户群数据 - 新增"导出"逻辑

zhengxy 1 year ago
parent
commit
1663566142
1 changed files with 62 additions and 3 deletions
  1. 62 3
      project/src/components/dataBoard/chatGroupData.vue

+ 62 - 3
project/src/components/dataBoard/chatGroupData.vue

@@ -1,7 +1,7 @@
1 1
 <template>
2 2
   <div>
3 3
     <div class="screenBox">
4
-      <div class="flex-align-center" style="flex-wrap: wrap;margin-right: 60px;">
4
+      <div class="flex-align-center" style="flex-wrap: wrap;margin-right: 60px;min-height: 60px;">
5 5
         <datePicker title="创建时间" :quickFlag="false" :afferent_time="default_time" :clearFlag='true' :reset="resetFlag" @changeTime="onChangeTime" style="margin-right: 10px;" />
6 6
         <!-- 企微主体 -->
7 7
         <!-- <selfSelectCorp style="margin-right: 30px;" v-model="filter.corpid" @change="onChangeCorpid" /> -->
@@ -11,7 +11,7 @@
11 11
         <customerServiceCorpV2 title="群主" :reset="resetFlag" :isRequired="false"  @customerDefine="onChangeMultiCorpUsers" />
12 12
       </div>
13 13
       <div class="reset" @click="resetEvent">重置</div>
14
-      <!-- <el-button v-if="isCanExport" class="export-btn" type="primary" size="mini" @click="onClickExport">导出Excel</el-button> -->
14
+      <el-button v-if="isCanExport" class="export-btn" type="primary" size="mini" @click="onClickExport">导出Excel</el-button>
15 15
     </div>
16 16
     <div class="dataInfoBox" v-loading="dataLoading">
17 17
       <div class="dataInfoItem" v-for="(item, index) in dataInfoArrs" :key="index">
@@ -184,7 +184,7 @@ export default {
184 184
         this.dataLoading = false
185 185
       }
186 186
     },
187
-    async init (page, type) {
187
+    async init (page) {
188 188
       this.page = page ? page : this.page;
189 189
       this.loading = true
190 190
       const url = `${this.URL.BASEURL}${this.URL.dataBoard_chatGroupData_list}`
@@ -282,6 +282,65 @@ export default {
282 282
       this.init_predata()
283 283
       this.init(1)
284 284
     },
285
+
286
+    // 监听点击"导出"按钮
287
+    async onClickExport() {
288
+      if (!this.total) return this.$message.warning('暂无数据可导出')
289
+      this.loading = true
290
+      const url = `${this.URL.BASEURL}${this.URL.dataBoard_chatGroupData_list}`
291
+      const params = {
292
+        corpid: this.filter.corpid,
293
+        owner: this.filter.owner,
294
+        owner_list: this.filter.multiple_senders,
295
+        create_time_st: this.filter.time[0] || '',
296
+        create_time_et: this.filter.time[1] || '',
297
+        page: 1,
298
+        page_size: this.$store.state.exportNumber,
299
+      }
300
+      try {
301
+        const { data: res = {} } = await this.$axios.post(url, params)
302
+        if (res && res.errno == 0) {
303
+          this.handleExport(res.rst.data)
304
+        } else if (res.errno != 4002) {
305
+          this.$message.warning(res.err)
306
+        }
307
+      } catch (error) {
308
+        console.log('error => ', error)
309
+      } finally {
310
+        this.loading = false
311
+      }
312
+    },
313
+    handleExport(list) {
314
+      let tHeader = []
315
+      let filterVal = []
316
+      let tableDatas = []
317
+
318
+      list.forEach(item => {
319
+        item['status'] = this.getChatGroupStatusDesc(item['status']).label
320
+      })
321
+
322
+      tHeader = [
323
+        ...this.desCol.map(d => `${d.label}`),
324
+      ]
325
+
326
+      filterVal = [
327
+        ...this.desCol.map(d => `${d.prop}`),
328
+      ]
329
+
330
+      tableDatas = [
331
+        ...list,
332
+      ]
333
+
334
+      const excelDatas = [
335
+        {
336
+          tHeader, // sheet表一头部
337
+          filterVal, // 表一的数据字段
338
+          tableDatas, // 表一的整体json数据
339
+          sheetName: ''// 表一的sheet名字
340
+        }
341
+      ]
342
+      this.$exportOrder({ excelDatas, name: `客户群数据统计(导出时间:${this.$getDay(0)})` })
343
+    },
285 344
   }
286 345
 }
287 346
 </script>