Blame view

src/views/users/list.vue 18.4 KB
50760eab9   Adam   auto commit the c...
1
2
3
4
5
  <template>
    <div class="app-container">
      <div class="filter-container">
        <el-input
          v-model="listQuery.title"
a6e433928   Adam   auto commit the c...
6
          :placeholder="$t('users.table.username') + ' or ' + $t('users.table.nickname')"
50760eab9   Adam   auto commit the c...
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
          style="width: 200px;"
          class="filter-item"
          @keyup.enter.native="handleFilter"
        />
        <el-select
          v-model="listQuery.importance"
          :placeholder="$t('table.importance')"
          clearable
          style="width: 90px"
          class="filter-item"
        >
          <el-option
            v-for="item in importanceOptions"
            :key="item"
            :label="item"
            :value="item"
          />
        </el-select>
        <el-select
          v-model="listQuery.type"
          :placeholder="$t('table.type')"
          clearable
          class="filter-item"
          style="width: 130px"
        >
          <el-option
            v-for="item in calendarTypeOptions"
            :key="item.key"
            :label="item.display_name+'('+item.key+')'"
            :value="item.key"
          />
        </el-select>
        <el-select
          v-model="listQuery.sort"
          style="width: 140px"
          class="filter-item"
          @change="handleFilter"
        >
          <el-option
            v-for="item in sortOptions"
            :key="item.key"
            :label="item.label"
            :value="item.key"
          />
        </el-select>
        <el-button
          v-waves
          class="filter-item"
          type="primary"
          icon="el-icon-search"
          @click="handleFilter"
        >
a6e433928   Adam   auto commit the c...
59
          {{ $t('users.search') }}
50760eab9   Adam   auto commit the c...
60
61
62
63
64
65
66
67
        </el-button>
        <el-button
          class="filter-item"
          style="margin-left: 10px;"
          type="primary"
          icon="el-icon-edit"
          @click="handleCreate"
        >
a6e433928   Adam   auto commit the c...
68
          {{ $t('users.add') }}
50760eab9   Adam   auto commit the c...
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
        </el-button>
        <el-button
          v-waves
          :loading="downloadLoading"
          class="filter-item"
          type="primary"
          icon="el-icon-download"
          @click="handleDownload"
        >
          {{ $t('table.export') }}
        </el-button>
        <el-checkbox
          v-model="showReviewer"
          class="filter-item"
          style="margin-left:15px;"
          @change="tableKey=tableKey+1"
        >
          {{ $t('table.reviewer') }}
        </el-checkbox>
      </div>
  
      <el-table
        :key="tableKey"
        v-loading="listLoading"
        :data="list"
        border
        fit
        highlight-current-row
        style="width: 100%;"
        @sort-change="sortChange"
      >
a6e433928   Adam   auto commit the c...
100
        <!--uid-->
50760eab9   Adam   auto commit the c...
101
        <el-table-column
a6e433928   Adam   auto commit the c...
102
          :label="$t('users.table.uid')"
50760eab9   Adam   auto commit the c...
103
104
105
106
107
108
109
110
111
112
          prop="id"
          sortable="custom"
          align="center"
          width="80"
          :class-name="getSortClass('id')"
        >
          <template slot-scope="{row}">
            <span>{{ row.uid }}</span>
          </template>
        </el-table-column>
a6e433928   Adam   auto commit the c...
113
        <!--create_time-->
50760eab9   Adam   auto commit the c...
114
        <el-table-column
a6e433928   Adam   auto commit the c...
115
          :label="$t('users.table.create_at')"
50760eab9   Adam   auto commit the c...
116
117
118
119
120
121
122
          width="150px"
          align="center"
        >
          <template slot-scope="{row}">
            <span>{{ row.create_time | parseTime('{y}-{m}-{d} {h}:{i}') }}</span>
          </template>
        </el-table-column>
a6e433928   Adam   auto commit the c...
123
        <!--openid-->
50760eab9   Adam   auto commit the c...
124
        <el-table-column
a6e433928   Adam   auto commit the c...
125
          :label="$t('users.table.openid')"
50760eab9   Adam   auto commit the c...
126
127
128
129
130
131
132
133
134
          min-width="150px"
        >
          <template slot-scope="{row}">
            <span
              class="link-type"
              @click="handleUpdate(row)"
            >{{ row.title }}</span>
          </template>
        </el-table-column>
a6e433928   Adam   auto commit the c...
135
        <!--nickname-->
50760eab9   Adam   auto commit the c...
136
        <el-table-column
a6e433928   Adam   auto commit the c...
137
          :label="$t('users.table.nickname')"
50760eab9   Adam   auto commit the c...
138
139
140
141
142
143
144
145
          width="110px"
          align="center"
        >
          <template slot-scope="{row}">
            <span>{{ row.nickname }}</span>
            <el-tag>{{ row.type | typeFilter }}</el-tag>
          </template>
        </el-table-column>
a6e433928   Adam   auto commit the c...
146
        <!--reviewer 审核人-->
50760eab9   Adam   auto commit the c...
147
148
149
150
151
152
153
154
155
156
        <el-table-column
          v-if="showReviewer"
          :label="$t('table.reviewer')"
          width="110px"
          align="center"
        >
          <template slot-scope="{row}">
            <span style="color:red;">{{ row.reviewer }}</span>
          </template>
        </el-table-column>
a6e433928   Adam   auto commit the c...
157
        <!--son_of_adv-->
50760eab9   Adam   auto commit the c...
158
        <el-table-column
a6e433928   Adam   auto commit the c...
159
160
161
          :label="$t('users.table.comefromperson')"
          align="center"
          width="95"
50760eab9   Adam   auto commit the c...
162
163
        >
          <template slot-scope="{row}">
a6e433928   Adam   auto commit the c...
164
165
166
167
168
169
            <span
              v-if="row.comefromperson"
              class="link-type"
              @click="handleFetchPv(row.comefromperson)"
            >{{ row.comefromperson }}</span>
            <span v-else>0</span>
50760eab9   Adam   auto commit the c...
170
171
          </template>
        </el-table-column>
a6e433928   Adam   auto commit the c...
172
        <!--son_of_adv-->
50760eab9   Adam   auto commit the c...
173
        <el-table-column
a6e433928   Adam   auto commit the c...
174
          :label="$t('users.table.son_of_adv')"
50760eab9   Adam   auto commit the c...
175
176
177
178
179
180
181
182
183
184
185
186
          align="center"
          width="95"
        >
          <template slot-scope="{row}">
            <span
              v-if="row.son_of_adv"
              class="link-type"
              @click="handleFetchPv(row.son_of_adv)"
            >{{ row.son_of_adv }}</span>
            <span v-else>0</span>
          </template>
        </el-table-column>
a6e433928   Adam   auto commit the c...
187
        <!--buy_value-->
50760eab9   Adam   auto commit the c...
188
        <el-table-column
a6e433928   Adam   auto commit the c...
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
          :label="$t('users.table.buyvalue')"
          align="center"
          width="95"
        >
          <template slot-scope="{row}">
            <span
              v-if="row.buyvalue"
              class="link-type"
              @click="handleFetchPv(row.buyvalue)"
            >{{ row.buyvalue }}</span>
            <span v-else>0</span>
          </template>
        </el-table-column>
        <!--buywill-->
        <el-table-column
          :label="$t('users.table.buywill')"
          align="center"
          width="95"
        >
          <template slot-scope="{row}">
            <span
              v-if="row.buywill"
              class="link-type"
              @click="handleFetchPv(row.buywill)"
            >{{ row.son_of_adv }}</span>
            <span v-else>0</span>
          </template>
        </el-table-column>
        <!--status-->
        <el-table-column
          :label="$t('users.table.status')"
50760eab9   Adam   auto commit the c...
220
221
222
223
224
225
226
          class-name="status-col"
          width="100"
        >
          <template slot-scope="{row}">
            <el-tag :type="row.status | statusFilter">{{ row.status }}</el-tag>
          </template>
        </el-table-column>
a6e433928   Adam   auto commit the c...
227
        <!--actions-->
50760eab9   Adam   auto commit the c...
228
        <el-table-column
a6e433928   Adam   auto commit the c...
229
          :label="$t('users.table.oper')"
50760eab9   Adam   auto commit the c...
230
231
232
233
234
235
236
237
238
          align="center"
          width="230"
          class-name="small-padding fixed-width"
        >
          <template slot-scope="{row,$index}">
            <el-button
              type="primary"
              size="mini"
              @click="handleUpdate(row)"
a6e433928   Adam   auto commit the c...
239
            >{{ $t('users.edit') }}</el-button>
50760eab9   Adam   auto commit the c...
240
241
242
243
244
            <el-button
              v-if="row.status!='deleted'"
              size="mini"
              type="danger"
              @click="handleDelete(row,$index)"
a6e433928   Adam   auto commit the c...
245
            >{{ $t('users.del') }}</el-button>
50760eab9   Adam   auto commit the c...
246
247
248
          </template>
        </el-table-column>
      </el-table>
a6e433928   Adam   auto commit the c...
249
      <!--分页-->
50760eab9   Adam   auto commit the c...
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
      <pagination
        v-show="total>0"
        :total="total"
        :page.sync="listQuery.page"
        :limit.sync="listQuery.limit"
        @pagination="getList"
      />
      <el-dialog
        :title="textMap[dialogStatus]"
        :visible.sync="dialogFormVisible"
      >
        <el-form
          ref="dataForm"
          :rules="rules"
          :model="temp"
          label-position="left"
          label-width="70px"
          style="width: 400px; margin-left:50px;"
        >
          <el-form-item
a6e433928   Adam   auto commit the c...
270
271
            :label="$t('users.table.roles')"
            prop="roles"
50760eab9   Adam   auto commit the c...
272
273
          >
            <el-select
a6e433928   Adam   auto commit the c...
274
              v-model="temp.roles"
50760eab9   Adam   auto commit the c...
275
276
277
278
              class="filter-item"
              placeholder="Please select"
            >
              <el-option
a6e433928   Adam   auto commit the c...
279
                v-for="item in roles"
50760eab9   Adam   auto commit the c...
280
                :key="item.key"
a6e433928   Adam   auto commit the c...
281
                :label="item.roles"
50760eab9   Adam   auto commit the c...
282
283
284
285
286
                :value="item.key"
              />
            </el-select>
          </el-form-item>
          <el-form-item
a6e433928   Adam   auto commit the c...
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
            v-model="temp.username"
            :rules="rules"
            :label="$t('users.table.username')"
            prop="username"
          >
            <el-input v-model="temp.username" />
          </el-form-item>
          <el-form-item
            v-model="temp.password"
            :rules="rules"
            :label="$t('users.table.password')"
            prop="password"
          >
            <el-input v-model="temp.password" />
          </el-form-item>
          <el-form-item
            :label="$t('users.table.create_at')"
            prop="create_at"
50760eab9   Adam   auto commit the c...
305
306
          >
            <el-date-picker
a6e433928   Adam   auto commit the c...
307
              v-model="temp.create_at"
50760eab9   Adam   auto commit the c...
308
309
310
311
312
              type="datetime"
              placeholder="Please pick a date"
            />
          </el-form-item>
          <el-form-item
a6e433928   Adam   auto commit the c...
313
            :label="$t('users.table.openid')"
50760eab9   Adam   auto commit the c...
314
315
316
317
            prop="title"
          >
            <el-input v-model="temp.title" />
          </el-form-item>
a6e433928   Adam   auto commit the c...
318

50760eab9   Adam   auto commit the c...
319
320
321
322
323
324
325
326
327
328
329
330
331
332
          <el-form-item :label="$t('table.status')">
            <el-select
              v-model="temp.status"
              class="filter-item"
              placeholder="Please select"
            >
              <el-option
                v-for="item in statusOptions"
                :key="item"
                :label="item"
                :value="item"
              />
            </el-select>
          </el-form-item>
a6e433928   Adam   auto commit the c...
333
          <el-form-item :label="$t('users.table.importance')">
50760eab9   Adam   auto commit the c...
334
335
336
337
338
339
340
            <el-rate
              v-model="temp.importance"
              :colors="['#99A9BF', '#F7BA2A', '#FF9900']"
              :max="3"
              style="margin-top:8px;"
            />
          </el-form-item>
a6e433928   Adam   auto commit the c...
341
          <el-form-item :label="$t('users.table.remark')">
50760eab9   Adam   auto commit the c...
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
            <el-input
              v-model="temp.remark"
              :autosize="{ minRows: 2, maxRows: 4}"
              type="textarea"
              placeholder="Please input"
            />
          </el-form-item>
        </el-form>
        <div
          slot="footer"
          class="dialog-footer"
        >
          <el-button @click="dialogFormVisible = false">{{ $t('table.cancel') }}</el-button>
          <el-button
            type="primary"
            @click="dialogStatus==='create'?createData():updateData()"
          >{{ $t('table.confirm') }}</el-button>
        </div>
      </el-dialog>
  
      <el-dialog
        :visible.sync="dialogPvVisible"
        title="Reading statistics"
      >
        <el-table
          :data="pvData"
          border
          fit
          highlight-current-row
          style="width: 100%"
        >
          <el-table-column
            prop="key"
            label="Channel"
          />
          <el-table-column
            prop="pv"
            label="Pv"
          />
        </el-table>
        <span
          slot="footer"
          class="dialog-footer"
        >
          <el-button
            type="primary"
            @click="dialogPvVisible = false"
          >{{ $t('table.confirm') }}</el-button>
        </span>
      </el-dialog>
    </div>
  </template>
  
  <script>
  import {
    fetchList,
    fetchPv,
    createUser,
    updateUser,
    delUser
  } from '@/api/user'
  import waves from '@/directive/waves' // waves directive
  import { parseTime } from '@/utils'
  import Pagination from '@/components/Pagination' // secondary package based on el-pagination
a6e433928   Adam   auto commit the c...
406
407
408
409
410
411
  const roles = [
    { key: 'runner', display_name: 'runner' },
    { key: 'admin', display_name: 'admin' },
    { key: 'assistant', display_name: 'assistant' },
    { key: 'shoper', display_name: 'shoper' }
  ]
50760eab9   Adam   auto commit the c...
412
  const calendarTypeOptions = [
a6e433928   Adam   auto commit the c...
413
    { key: 'CN', display_name: '中国' },
50760eab9   Adam   auto commit the c...
414
    { key: 'US', display_name: 'USA' },
a6e433928   Adam   auto commit the c...
415
    { key: 'JP', display_name: '日本国' },
50760eab9   Adam   auto commit the c...
416
417
418
419
420
421
422
423
424
425
    { key: 'EU', display_name: 'Eurozone' }
  ]
  
  // arr to obj, such as { CN : "China", US : "USA" }
  const calendarTypeKeyValue = calendarTypeOptions.reduce((acc, cur) => {
    acc[cur.key] = cur.display_name
    return acc
  }, {})
  
  export default {
a6e433928   Adam   auto commit the c...
426
427
428
    name: 'ComplexTable', // 名称
    components: { Pagination }, // 关联组件,分页
    directives: { waves }, // 特效指令
50760eab9   Adam   auto commit the c...
429
    filters: {
a6e433928   Adam   auto commit the c...
430
      // TODO::这是啥?//过滤器?没弄明白
50760eab9   Adam   auto commit the c...
431
      statusFilter(status) {
a6e433928   Adam   auto commit the c...
432
        // 过滤器?
50760eab9   Adam   auto commit the c...
433
434
435
436
437
438
439
440
        const statusMap = {
          published: 'success',
          draft: 'info',
          deleted: 'danger'
        }
        return statusMap[status]
      },
      typeFilter(type) {
a6e433928   Adam   auto commit the c...
441
        // 过滤器?
50760eab9   Adam   auto commit the c...
442
443
444
        return calendarTypeKeyValue[type]
      }
    },
a6e433928   Adam   auto commit the c...
445
    // 数据初始化
50760eab9   Adam   auto commit the c...
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
    data() {
      return {
        tableKey: 0,
        list: null,
        total: 0,
        listLoading: true,
        listQuery: {
          page: 1,
          limit: 20,
          importance: undefined,
          title: undefined,
          type: undefined,
          sort: '+id'
        },
        importanceOptions: [1, 2, 3],
        calendarTypeOptions,
a6e433928   Adam   auto commit the c...
462
        roles,
50760eab9   Adam   auto commit the c...
463
        sortOptions: [
a6e433928   Adam   auto commit the c...
464
465
466
467
          // { label: "ID Ascending", key: "+id" },
          // { label: "ID Descending", key: "-id" }
          { label: '按ID 正序排', key: '+id' },
          { label: '按ID 倒序排', key: '-id' }
50760eab9   Adam   auto commit the c...
468
        ],
a6e433928   Adam   auto commit the c...
469
        statusOptions: ['通过', '审核中', '删除'],
50760eab9   Adam   auto commit the c...
470
471
472
473
474
475
476
477
        showReviewer: false,
        temp: {
          id: undefined,
          importance: 1,
          remark: '',
          create_time: new Date(),
          title: '',
          type: '',
a6e433928   Adam   auto commit the c...
478
          status: '通过'
50760eab9   Adam   auto commit the c...
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
        },
        dialogFormVisible: false,
        dialogStatus: '',
        textMap: {
          update: 'Edit',
          create: 'Create'
        },
        dialogPvVisible: false,
        pvData: [],
        rules: {
          type: [
            { required: true, message: 'type is required', trigger: 'change' }
          ],
          create_time: [
            {
              type: 'date',
              required: true,
              message: 'create_time is required',
              trigger: 'change'
            }
          ],
          title: [
            { required: true, message: 'title is required', trigger: 'blur' }
          ]
        },
        downloadLoading: false
      }
    },
a6e433928   Adam   auto commit the c...
507
    // 页面状态 === created
50760eab9   Adam   auto commit the c...
508
    created: async function() {
a6e433928   Adam   auto commit the c...
509
      console.log('this.$route', this.$route)
50760eab9   Adam   auto commit the c...
510
      const params = {
a6e433928   Adam   auto commit the c...
511
        way: this.$route.path // TODO:::至少传了一个参过来了。。。
50760eab9   Adam   auto commit the c...
512
      }
a6e433928   Adam   auto commit the c...
513
      await this.getList(params)
50760eab9   Adam   auto commit the c...
514
515
    },
    methods: {
a6e433928   Adam   auto commit the c...
516
517
518
      // 查询数据
      getList(params) {
        console.log('参数:::', params)
50760eab9   Adam   auto commit the c...
519
        this.listLoading = true
a6e433928   Adam   auto commit the c...
520
        this.listQuery.params = params
50760eab9   Adam   auto commit the c...
521
522
523
        fetchList(this.listQuery).then(response => {
          this.list = response.data.items
          this.total = response.data.total
50760eab9   Adam   auto commit the c...
524
          // Just to simulate the time of the request
a6e433928   Adam   auto commit the c...
525
526
527
          // setTimeout(() => {
          this.listLoading = false
          // }, 1.5 * 1000);
50760eab9   Adam   auto commit the c...
528
529
        })
      },
a6e433928   Adam   auto commit the c...
530
      // 过滤器的事件
50760eab9   Adam   auto commit the c...
531
      handleFilter() {
a6e433928   Adam   auto commit the c...
532
533
534
535
        this.$message({
          message: 'handleFilter',
          type: 'success'
        })
50760eab9   Adam   auto commit the c...
536
537
538
        this.listQuery.page = 1
        this.getList()
      },
a6e433928   Adam   auto commit the c...
539
      // 状态变化修改
50760eab9   Adam   auto commit the c...
540
541
542
543
544
545
546
      handleModifyStatus(row, status) {
        this.$message({
          message: '操作成功',
          type: 'success'
        })
        row.status = status
      },
a6e433928   Adam   auto commit the c...
547
      // 搜索排序
50760eab9   Adam   auto commit the c...
548
549
550
551
552
553
      sortChange(data) {
        const { prop, order } = data
        if (prop === 'id') {
          this.sortByID(order)
        }
      },
a6e433928   Adam   auto commit the c...
554
      // 搜索排序
50760eab9   Adam   auto commit the c...
555
556
557
558
559
560
561
562
      sortByID(order) {
        if (order === 'ascending') {
          this.listQuery.sort = '+id'
        } else {
          this.listQuery.sort = '-id'
        }
        this.handleFilter()
      },
a6e433928   Adam   auto commit the c...
563

50760eab9   Adam   auto commit the c...
564
565
566
567
568
569
570
      resetTemp() {
        this.temp = {
          id: undefined,
          importance: 1,
          remark: '',
          create_time: new Date(),
          title: '',
a6e433928   Adam   auto commit the c...
571
          status: '通过',
50760eab9   Adam   auto commit the c...
572
573
574
          type: ''
        }
      },
a6e433928   Adam   auto commit the c...
575
      // 添加事件 -- 弹个框
50760eab9   Adam   auto commit the c...
576
      handleCreate() {
a6e433928   Adam   auto commit the c...
577
        // Notification(options);
50760eab9   Adam   auto commit the c...
578
579
580
581
582
583
        this.resetTemp()
        this.dialogStatus = 'create'
        this.dialogFormVisible = true
        this.$nextTick(() => {
          this.$refs['dataForm'].clearValidate()
        })
a6e433928   Adam   auto commit the c...
584
585
586
587
588
589
590
591
592
        const data = []
        createUser(data).then(() => {
          this.$notify({
            title: '成功',
            message: '添加成功',
            type: 'success',
            duration: 2000
          })
        })
50760eab9   Adam   auto commit the c...
593
      },
a6e433928   Adam   auto commit the c...
594
      // 添加事件 --上传数据
50760eab9   Adam   auto commit the c...
595
596
597
598
      createData() {
        this.$refs['dataForm'].validate(valid => {
          if (valid) {
            this.temp.id = parseInt(Math.random() * 100) + 1024 // mock a id
a6e433928   Adam   auto commit the c...
599
            this.temp.nickname = '秀野堂主'
50760eab9   Adam   auto commit the c...
600
            this.temp.author = '秀野堂主'
a6e433928   Adam   auto commit the c...
601
602
            // this.temp.level = "秀野堂主";
            this.temp.roles = 'admin'
50760eab9   Adam   auto commit the c...
603
604
605
606
607
608
609
610
611
612
613
614
615
            createUser(this.temp).then(() => {
              this.list.unshift(this.temp)
              this.dialogFormVisible = false
              this.$notify({
                title: '成功',
                message: '创建成功',
                type: 'success',
                duration: 2000
              })
            })
          }
        })
      },
a6e433928   Adam   auto commit the c...
616
      // 修改事件 -- 弹个框
50760eab9   Adam   auto commit the c...
617
618
619
620
621
622
623
624
625
      handleUpdate(row) {
        this.temp = Object.assign({}, row) // copy obj
        this.temp.create_time = new Date(this.temp.create_time)
        this.dialogStatus = 'update'
        this.dialogFormVisible = true
        this.$nextTick(() => {
          this.$refs['dataForm'].clearValidate()
        })
      },
a6e433928   Adam   auto commit the c...
626
      // 修改事件
50760eab9   Adam   auto commit the c...
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
      updateData() {
        this.$refs['dataForm'].validate(valid => {
          if (valid) {
            const tempData = Object.assign({}, this.temp)
            tempData.create_time = +new Date(tempData.create_time) // change Thu Nov 30 2017 16:41:05 GMT+0800 (CST) to 1512031311464
            updateUser(tempData).then(() => {
              const index = this.list.findIndex(v => v.id === this.temp.id)
              this.list.splice(index, 1, this.temp)
              this.dialogFormVisible = false
              this.$notify({
                title: '成功',
                message: '更新成功',
                type: 'success',
                duration: 2000
              })
            })
          }
        })
      },
a6e433928   Adam   auto commit the c...
646
      // 删除事件
50760eab9   Adam   auto commit the c...
647
648
649
650
651
652
653
654
655
656
657
658
      handleDelete(row, index) {
        const data = []
        delUser(data).then(() => {
          this.list.splice(index, 1)
          this.$notify({
            title: '成功',
            message: '删除成功',
            type: 'success',
            duration: 2000
          })
        })
      },
a6e433928   Adam   auto commit the c...
659
      // 页面跳转
50760eab9   Adam   auto commit the c...
660
661
662
663
664
665
      handleFetchPv(pv) {
        fetchPv(pv).then(response => {
          this.pvData = response.data.pvData
          this.dialogPvVisible = true
        })
      },
a6e433928   Adam   auto commit the c...
666
      // 下载
50760eab9   Adam   auto commit the c...
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
      handleDownload() {
        this.downloadLoading = true
        import('@/vendor/Export2Excel').then(excel => {
          const tHeader = [
            'create_time',
            'title',
            'type',
            'importance',
            'status'
          ]
          const filterVal = [
            'create_time',
            'title',
            'type',
            'importance',
            'status'
          ]
          const data = this.formatJson(filterVal)
          excel.export_json_to_excel({
            header: tHeader,
            data,
            filename: 'table-list'
          })
          this.downloadLoading = false
        })
      },
a6e433928   Adam   auto commit the c...
693
      // 格式化json
50760eab9   Adam   auto commit the c...
694
695
696
697
698
699
700
701
702
703
704
      formatJson(filterVal) {
        return this.list.map(v =>
          filterVal.map(j => {
            if (j === 'create_time') {
              return parseTime(v[j])
            } else {
              return v[j]
            }
          })
        )
      },
a6e433928   Adam   auto commit the c...
705
      // 排序规则
50760eab9   Adam   auto commit the c...
706
707
708
709
710
711
712
      getSortClass: function(key) {
        const sort = this.listQuery.sort
        return sort === `+${key}` ? 'ascending' : 'descending'
      }
    }
  }
  </script>