Browse Source

新增统计相关

xialei 1 year ago
parent
commit
a48e3e3c87

+ 35 - 0
src/api/accounts.js

@@ -155,6 +155,41 @@ export function getPointCountApi(data) {
155 155
 }
156 156
 
157 157
 /**
158
+ * @description 京豆统计
159
+ */
160
+export function getJingdouCountApi(data) {
161
+  return request.get('finance/jingdou_list', data)
162
+}
163
+
164
+/**
165
+ * @description 贡献值统计
166
+ */
167
+export function getContributeCountApi(data) {
168
+  return request.get('finance/contribute_list', data)
169
+}
170
+
171
+/**
172
+ * @description 复购金统计
173
+ */
174
+export function getFugouCountApi(data) {
175
+  return request.get('finance/fugou_list', data)
176
+}
177
+
178
+/**
179
+ * @description 红包统计
180
+ */
181
+export function getHongbaoCountApi(data) {
182
+  return request.get('finance/hongbao_list', data)
183
+}
184
+
185
+/**
186
+ * @description VR统计
187
+ */
188
+export function getVrCountApi(data) {
189
+  return request.get('finance/vr_list', data)
190
+}
191
+
192
+/**
158 193
  * @description 佣金统计
159 194
  */
160 195
 export function getYongJinCountApi(data) {

+ 45 - 0
src/router/modules/accounts.js

@@ -150,6 +150,51 @@ const accountsRouter =
150 150
         component: () => import('@/views/accounts/caiwutongji/pension/index')
151 151
       },
152 152
       {
153
+        path: 'count/jingdou',
154
+        name: 'jingdou',
155
+        meta: {
156
+          title: '京豆统计',
157
+          noCache: true
158
+        },
159
+        component: () => import('@/views/accounts/caiwutongji/jingdou/index')
160
+      },
161
+      {
162
+        path: 'count/contribute',
163
+        name: 'contribute',
164
+        meta: {
165
+          title: '贡献值统计',
166
+          noCache: true
167
+        },
168
+        component: () => import('@/views/accounts/caiwutongji/contribute/index')
169
+      },
170
+      {
171
+        path: 'count/hongbao',
172
+        name: 'hongbao',
173
+        meta: {
174
+          title: '红包统计',
175
+          noCache: true
176
+        },
177
+        component: () => import('@/views/accounts/caiwutongji/hongbao/index')
178
+      },
179
+      {
180
+        path: 'count/fugou',
181
+        name: 'fugou',
182
+        meta: {
183
+          title: '复购金统计',
184
+          noCache: true
185
+        },
186
+        component: () => import('@/views/accounts/caiwutongji/fugou/index')
187
+      },
188
+      {
189
+        path: 'count/vr',
190
+        name: 'vr',
191
+        meta: {
192
+          title: 'vr统计',
193
+          noCache: true
194
+        },
195
+        component: () => import('@/views/accounts/caiwutongji/vr/index')
196
+      },
197
+      {
153 198
         path: 'record/bill',
154 199
         name: 'billRecord',
155 200
         meta: {

+ 447 - 0
src/views/accounts/caiwutongji/contribute/index.vue

@@ -0,0 +1,447 @@
1
+<template>
2
+<div class="divBox">
3
+    <el-card class="box-card">
4
+        <div slot="header" class="clearfix">
5
+            <div class="container">
6
+                <el-form size="small" label-width="100px">
7
+                    <el-form-item label="时间选择:" class="width100">
8
+                        <el-radio-group v-model="tableFrom.date" type="button" class="mr20" size="small" @change="selectChange(tableFrom.date)">
9
+                            <el-radio-button v-for="(item,i) in fromList.fromTxt" :key="i" :label="item.val">{{ item.text }}</el-radio-button>
10
+                        </el-radio-group>
11
+                        <el-date-picker v-model="timeVal" value-format="yyyy/MM/dd" format="yyyy/MM/dd" size="small" type="daterange" placement="bottom-end" placeholder="自定义时间" style="width: 250px;" @change="onchangeTime" />
12
+                    </el-form-item>
13
+                    <el-form-item label="用户手机号:" class="width100">
14
+                        <el-input v-model="tableFrom.phone" placeholder="请输入" class="selWidth" size="small">
15
+                        </el-input>
16
+                    </el-form-item>
17
+                    <!-- <el-form-item label="贡献值变动:" class="selected-kuang">
18
+                      <el-select
19
+                        v-model="tableFrom.pm"
20
+                        placeholder="全部"
21
+                        class="filter-item"
22
+                        @change="getList(1)"
23
+                      >
24
+                        <el-option label="全部" value="" />
25
+                        <el-option label="增加" value="1" />
26
+                        <el-option label="扣减" value="2" />
27
+                      </el-select>
28
+                    </el-form-item> -->
29
+                    <el-form-item label="贡献值状态:" class="selected-kuang">
30
+                      <el-select
31
+                        v-model="tableFrom.status"
32
+                        placeholder="全部"
33
+                        class="filter-item"
34
+                        @change="getList(1)"
35
+                      >
36
+                        <el-option label="全部" value="" />
37
+                        <el-option label="有效" value="1" />
38
+                        <el-option label="待确认" value="-1" />
39
+                        <el-option label="已失效" value="0" />
40
+                      </el-select>
41
+                    </el-form-item>
42
+
43
+                </el-form>
44
+
45
+                <div class="bottom-button">
46
+                  <el-button size="small" @click="reset" style="width: 100px; margin-top: 20px; border: 1px solid; " >重置</el-button>
47
+                  <!-- <el-button type="primary" size="small" @click="exportSearchResult" style="width: 100px; margin-top: 20px;">导出</el-button> -->
48
+
49
+                  <el-button type="primary" size="small" @click="getList(1)" style="width: 100px; margin-top: 20px;">查询</el-button>
50
+                </div>
51
+            </div>
52
+
53
+
54
+
55
+        </div>
56
+
57
+        <div style="display: flex">
58
+          <div class="jiangjintotal" v-for="(v,k) in cardLists" >
59
+            <span class="jiangjintotal-title">{{ v.name }}</span>
60
+            <span class="money">{{ v.count }}</span>
61
+          </div>
62
+        </div>
63
+
64
+        <el-table :data="tableData.data" style="width: 100%" size="mini" class="table" highlight-current-row >
65
+
66
+
67
+            <el-table-column label="ID" prop="id" min-width="100" />
68
+            <el-table-column label="时间" prop="addtime" min-width="150" />
69
+            <el-table-column label="用户昵称" prop="nickname"  min-width="130" />
70
+            <el-table-column label="用户账号(手机号)" prop="phone"  min-width="130" />
71
+
72
+            <el-table-column label="贡献值数" prop="number"  min-width="130" />
73
+            <el-table-column label="贡献值状态" prop="status"  min-width="130">
74
+              <template slot-scope="scope">
75
+                <span v-if="scope.row.status == 1">有效</span>  
76
+                <span v-if="scope.row.status == -1">待确认</span>
77
+                <span v-if="scope.row.status == 0">已失效</span>
78
+              </template>
79
+            </el-table-column>
80
+            <!-- <el-table-column label="贡献值变动" prop="status"  min-width="130">
81
+              <template slot-scope="scope">
82
+                <span v-if="scope.row.pm == 1">增加</span>
83
+                <span v-if="scope.row.pm == 2">扣减</span>
84
+              </template>
85
+            </el-table-column> -->
86
+            <el-table-column label="关联订单" prop="order_sn"  min-width="130">
87
+              <template slot-scope="scope">
88
+                <span style="color: blue; cursor: pointer;" @click="pushToOrderList(scope.row.order_sn)">{{ scope.row.order_sn }}</span>
89
+              </template>
90
+            </el-table-column>
91
+            <!-- <el-table-column label="说明" prop="mark"  min-width="130" /> -->
92
+        </el-table>
93
+        <div class="block">
94
+          <el-pagination :page-sizes="[20, 40, 60, 80]" :page-size="tableFrom.limit" :current-page="tableFrom.page"
95
+            layout="total, sizes, prev, pager, next, jumper" :total="tableData.total" @size-change="handleSizeChange"
96
+            @current-change="pageChange" />
97
+        </div>
98
+    </el-card>
99
+
100
+
101
+</div>
102
+</template>
103
+
104
+<script>
105
+import {
106
+    redPointListApi,
107
+    exportOrderApi,
108
+} from "@/api/order";
109
+
110
+import { performanceDivvyLstApi } from '@/api/protocol'
111
+
112
+import fileList from "@/components/exportFile/fileList";
113
+import cardsData from "@/components/cards/index";
114
+import {getZeroPointApi, getContributeCountApi} from "@/api/accounts";
115
+import {roterPre} from "@/settings";
116
+export default {
117
+    components: {
118
+        cardsData,
119
+        fileList
120
+    },
121
+    data() {
122
+        return {
123
+            performanceList:[],
124
+            merSelect: [],
125
+            timeVal: '',
126
+            tableData: {
127
+                data: [],
128
+                total: 0,
129
+            },
130
+            listLoading: true,
131
+            tableFrom: {
132
+                uid: "",
133
+                date: "",
134
+                page: 1,
135
+                limit: 20,
136
+                type: "",
137
+                pm: ""
138
+            },
139
+            fromList: {
140
+                title: "选择时间",
141
+                custom: true,
142
+                fromTxt: [{
143
+                        text: "全部",
144
+                        val: ""
145
+                    },
146
+                    {
147
+                        text: "今天",
148
+                        val: "today"
149
+                    },
150
+                    {
151
+                        text: "昨天",
152
+                        val: "yesterday"
153
+                    },
154
+                    {
155
+                        text: "最近7天",
156
+                        val: "lately7"
157
+                    },
158
+                    {
159
+                        text: "最近30天",
160
+                        val: "lately30"
161
+                    },
162
+                    {
163
+                        text: "本月",
164
+                        val: "month"
165
+                    },
166
+                    {
167
+                        text: "本年",
168
+                        val: "year"
169
+                    },
170
+                ],
171
+            },
172
+            fileVisible: false,
173
+            cardLists: [],
174
+            teamList: [],
175
+
176
+        };
177
+    },
178
+    mounted() {
179
+        this.getList(1);
180
+
181
+        performanceDivvyLstApi({'page':1,'limit':100,'state':1}).then(res => {
182
+          this.performanceList = res.data.list
183
+        }).catch(res => {
184
+          this.$message.error(res.message)
185
+        })
186
+        // 获取隶属团队
187
+        getZeroPointApi().then(res => {
188
+            this.teamList = res.data
189
+            console.log('隶属团队')
190
+            console.log(this.teamList)
191
+        }).catch((res) => {
192
+            this.$message.error(res.message);
193
+        });
194
+
195
+    },
196
+    methods: {
197
+
198
+      pushToOrderList(orderIds) {
199
+
200
+
201
+        // accounts/extract
202
+
203
+        this.$router.push({
204
+          path: roterPre + "/order/list/",
205
+          query: { order_sn: orderIds },
206
+        });
207
+      },
208
+
209
+      tanchuang() {
210
+        this.dialogVisible = true
211
+      },
212
+
213
+      selectData(name) {
214
+        if (name == '系统奖励红贡献值数') {
215
+          this.tableFrom.pm = '1'
216
+        } else if (name == '系统销毁红贡献值数') {
217
+          this.tableFrom.pm = '2'
218
+        } else if (name == '人工奖励红贡献值数') {
219
+          this.tableFrom.pm = '3'
220
+        } else if (name == '人工销毁红贡献值数') {
221
+          this.tableFrom.pm = '4'
222
+        }
223
+
224
+        this.getList(1)
225
+      },
226
+
227
+      // 重置
228
+      reset() {
229
+        this.tableFrom ={
230
+            uid: "",
231
+            date: "",
232
+            page: 1,
233
+            limit: 20,
234
+            type: "",
235
+            pm: ""
236
+          }
237
+        this.getList();
238
+      },
239
+      exportSearchResult() {
240
+        RewardExcelApi(this.paramsData).then(res => {
241
+          console.log( res.data)
242
+          console.log( res.data.path)
243
+          window.open( res.data.path)
244
+          // window.open(SettingMer.https + `/excel/download/0?token=` + getToken()+`&path=` + res.data.path)
245
+        }).catch((res) => {
246
+
247
+        })
248
+      },
249
+
250
+
251
+
252
+        // 表格某一行添加特定的样式
253
+        addTdClass(val) {
254
+            if (val.row.status > 0 && val.row.paid == 1) {
255
+                for (let i = 0; i < val.row.orderProduct.length; i++) {
256
+                    if (val.row.orderProduct[i].refund_num > 0 && val.row.orderProduct[i].refund_num < val.row.orderProduct[i].product_num) {
257
+                        return "row-bg";
258
+                    }
259
+                }
260
+            } else {
261
+                return " ";
262
+            }
263
+        },
264
+
265
+        // 导出
266
+        exportOrder() {
267
+            exportOrderApi(this.tableFrom)
268
+                .then((res) => {
269
+                    // this.$message.success(res.message);
270
+                    // this.fileVisible = true;
271
+                    // this.$refs.exportList.exportFileList();
272
+                  const h = this.$createElement;
273
+                  this.$msgbox({
274
+                    title: '提示',
275
+                    message: h('p', null, [
276
+                      h('span', null, '文件正在生成中,请稍后点击"'),
277
+                      h('span', { style: 'color: teal' }, '导出已生成列表'),
278
+                      h('span', null, '"查看~ '),
279
+                    ]),
280
+                    confirmButtonText: '我知道了',
281
+                  }).then(action => {
282
+
283
+                  });                })
284
+                .catch((res) => {
285
+                    this.$message.error(res.message);
286
+                });
287
+        },
288
+        getExportFileList() {
289
+            this.fileVisible = true;
290
+            this.$refs.exportList.exportFileList('order');
291
+        },
292
+
293
+        handleSelectionChange(val) {
294
+            this.selectionList = val;
295
+            const data = [];
296
+            this.selectionList.map((item) => {
297
+                data.push(item.order_id);
298
+            });
299
+            this.ids = data.join(",");
300
+        },
301
+        // 选择时间
302
+        selectChange(tab) {
303
+            this.timeVal = [];
304
+            this.tableFrom.date = tab;
305
+            this.getList(1);
306
+        },
307
+        // 具体日期
308
+        onchangeTime(e) {
309
+            this.timeVal = e;
310
+            this.tableFrom.date = e ? this.timeVal.join("-") : "";
311
+            this.getList(1);
312
+        },
313
+
314
+        // 列表
315
+        getList(num) {
316
+            this.tableFrom.page = num ? num : this.tableFrom.page;
317
+            getContributeCountApi(this.tableFrom).then((res) => {
318
+                console.log(res,'aaaaa');
319
+                this.tableData.data = res.data.list;
320
+                this.tableData.total = res.data.count;
321
+
322
+                this.cardLists = [
323
+                  { info: '', name: '贡献值奖励总数', count: res.data.statistics.all },
324
+                  { info: '', name: '已结算贡献值', count: res.data.statistics.clear },
325
+                  { info: '', name: '未结算贡献值', count: res.data.statistics.nclear },
326
+                  { info: '', name: '已失效贡献值', count: res.data.statistics.lost },
327
+                  // {info: '', name: '贡献值扣减总数', count: res.data.statistics.deduct},
328
+                  // {info: '', name: '剩余贡献值总数', count: res.data.statistics.all_mp1}
329
+                ]
330
+            }).catch((res) => {
331
+                this.$message.error(res.message);
332
+            });
333
+        },
334
+        pageChange(page) {
335
+            this.tableFrom.page = page;
336
+            this.getList('');
337
+        },
338
+        handleSizeChange(val) {
339
+            this.tableFrom.limit = val;
340
+            this.getList('');
341
+        },
342
+    }
343
+};
344
+</script>
345
+
346
+<style lang="scss" scoped>
347
+.selWidth {
348
+    width: 300px;
349
+}
350
+
351
+.el-dropdown-link {
352
+    cursor: pointer;
353
+    color: #409eff;
354
+    font-size: 12px;
355
+}
356
+
357
+.el-icon-arrow-down {
358
+    font-size: 12px;
359
+}
360
+
361
+.tabBox_tit {
362
+    width: 53%;
363
+    font-size: 12px !important;
364
+    margin: 0 2px 0 10px;
365
+    letter-spacing: 1px;
366
+    padding: 5px 0;
367
+    box-sizing: border-box;
368
+}
369
+
370
+/deep/.row-bg {
371
+    .cell {
372
+        color: red !important;
373
+    }
374
+}
375
+
376
+.filter-item {
377
+  width:50%;
378
+}
379
+
380
+
381
+.cancel-order-mark {
382
+    margin-top: 30px;
383
+
384
+    .cancel-order-select-reason {
385
+        height: 30px;
386
+    }
387
+
388
+    .canel-order-remark-input {
389
+        width: 75%;
390
+        margin-left: 35px;
391
+    }
392
+
393
+
394
+}
395
+
396
+.bottom-button {
397
+    margin-top: 30px;
398
+    margin-left: 300px;
399
+    width: 250px;
400
+    display: flex;
401
+    justify-content: space-between;
402
+  }
403
+
404
+.cancel-button {
405
+        display: flex;
406
+        justify-content: center;
407
+        margin-top: 20px;
408
+        gap:50px;
409
+        height: 30px;
410
+        // background-color: rebeccapurple;
411
+
412
+        .confirm {
413
+          width: 70px;
414
+          // height: 30px;
415
+        }
416
+        .cacnel-item {
417
+          width: 70px;
418
+          // height: 30px;
419
+        }
420
+    }
421
+
422
+.selected-kuang {
423
+  width: 500px;
424
+}
425
+
426
+
427
+.jiangjintotal {
428
+
429
+  display: flex;
430
+  flex-direction: column;
431
+  justify-content: center;
432
+  align-items: center;
433
+  margin-bottom: 10px;
434
+  border: 1px solid #999;
435
+  border-radius: 5px;
436
+  width: 150px;
437
+  height: 60px;
438
+  line-height: 25px;
439
+  margin-right: 10px;
440
+}
441
+
442
+.jiangjintotal .money {
443
+  font-size: 20px;
444
+}
445
+
446
+
447
+</style>

+ 447 - 0
src/views/accounts/caiwutongji/fugou/index.vue

@@ -0,0 +1,447 @@
1
+<template>
2
+<div class="divBox">
3
+    <el-card class="box-card">
4
+        <div slot="header" class="clearfix">
5
+            <div class="container">
6
+                <el-form size="small" label-width="100px">
7
+                    <el-form-item label="时间选择:" class="width100">
8
+                        <el-radio-group v-model="tableFrom.date" type="button" class="mr20" size="small" @change="selectChange(tableFrom.date)">
9
+                            <el-radio-button v-for="(item,i) in fromList.fromTxt" :key="i" :label="item.val">{{ item.text }}</el-radio-button>
10
+                        </el-radio-group>
11
+                        <el-date-picker v-model="timeVal" value-format="yyyy/MM/dd" format="yyyy/MM/dd" size="small" type="daterange" placement="bottom-end" placeholder="自定义时间" style="width: 250px;" @change="onchangeTime" />
12
+                    </el-form-item>
13
+                    <el-form-item label="用户手机号:" class="width100">
14
+                        <el-input v-model="tableFrom.phone" placeholder="请输入" class="selWidth" size="small">
15
+                        </el-input>
16
+                    </el-form-item>
17
+                    <!-- <el-form-item label="复购金变动:" class="selected-kuang">
18
+                      <el-select
19
+                        v-model="tableFrom.pm"
20
+                        placeholder="全部"
21
+                        class="filter-item"
22
+                        @change="getList(1)"
23
+                      >
24
+                        <el-option label="全部" value="" />
25
+                        <el-option label="增加" value="1" />
26
+                        <el-option label="扣减" value="2" />
27
+                      </el-select>
28
+                    </el-form-item> -->
29
+                    <el-form-item label="复购金状态:" class="selected-kuang">
30
+                      <el-select
31
+                        v-model="tableFrom.status"
32
+                        placeholder="全部"
33
+                        class="filter-item"
34
+                        @change="getList(1)"
35
+                      >
36
+                        <el-option label="全部" value="" />
37
+                        <el-option label="有效" value="1" />
38
+                        <el-option label="待确认" value="-1" />
39
+                        <el-option label="已失效" value="0" />
40
+                      </el-select>
41
+                    </el-form-item>
42
+
43
+                </el-form>
44
+
45
+                <div class="bottom-button">
46
+                  <el-button size="small" @click="reset" style="width: 100px; margin-top: 20px; border: 1px solid; " >重置</el-button>
47
+                  <!-- <el-button type="primary" size="small" @click="exportSearchResult" style="width: 100px; margin-top: 20px;">导出</el-button> -->
48
+
49
+                  <el-button type="primary" size="small" @click="getList(1)" style="width: 100px; margin-top: 20px;">查询</el-button>
50
+                </div>
51
+            </div>
52
+
53
+
54
+
55
+        </div>
56
+
57
+        <div style="display: flex">
58
+          <div class="jiangjintotal" v-for="(v,k) in cardLists" >
59
+            <span class="jiangjintotal-title">{{ v.name }}</span>
60
+            <span class="money">{{ v.count }}</span>
61
+          </div>
62
+        </div>
63
+
64
+        <el-table :data="tableData.data" style="width: 100%" size="mini" class="table" highlight-current-row >
65
+
66
+
67
+            <el-table-column label="ID" prop="id" min-width="100" />
68
+            <el-table-column label="时间" prop="addtime" min-width="150" />
69
+            <el-table-column label="用户昵称" prop="nickname"  min-width="130" />
70
+            <el-table-column label="用户账号(手机号)" prop="phone"  min-width="130" />
71
+
72
+            <el-table-column label="复购金数" prop="number"  min-width="130" />
73
+            <el-table-column label="复购金状态" prop="status"  min-width="130">
74
+              <template slot-scope="scope">
75
+                <span v-if="scope.row.status == 1">有效</span>  
76
+                <span v-if="scope.row.status == -1">待确认</span>
77
+                <span v-if="scope.row.status == 0">已失效</span>
78
+              </template>
79
+            </el-table-column>
80
+            <!-- <el-table-column label="复购金变动" prop="status"  min-width="130">
81
+              <template slot-scope="scope">
82
+                <span v-if="scope.row.pm == 1">增加</span>
83
+                <span v-if="scope.row.pm == 2">扣减</span>
84
+              </template>
85
+            </el-table-column> -->
86
+            <el-table-column label="关联订单" prop="order_sn"  min-width="130">
87
+              <template slot-scope="scope">
88
+                <span style="color: blue; cursor: pointer;" @click="pushToOrderList(scope.row.order_sn)">{{ scope.row.order_sn }}</span>
89
+              </template>
90
+            </el-table-column>
91
+            <!-- <el-table-column label="说明" prop="mark"  min-width="130" /> -->
92
+        </el-table>
93
+        <div class="block">
94
+          <el-pagination :page-sizes="[20, 40, 60, 80]" :page-size="tableFrom.limit" :current-page="tableFrom.page"
95
+            layout="total, sizes, prev, pager, next, jumper" :total="tableData.total" @size-change="handleSizeChange"
96
+            @current-change="pageChange" />
97
+        </div>
98
+    </el-card>
99
+
100
+
101
+</div>
102
+</template>
103
+
104
+<script>
105
+import {
106
+    redPointListApi,
107
+    exportOrderApi,
108
+} from "@/api/order";
109
+
110
+import { performanceDivvyLstApi } from '@/api/protocol'
111
+
112
+import fileList from "@/components/exportFile/fileList";
113
+import cardsData from "@/components/cards/index";
114
+import {getZeroPointApi, getFugouCountApi} from "@/api/accounts";
115
+import {roterPre} from "@/settings";
116
+export default {
117
+    components: {
118
+        cardsData,
119
+        fileList
120
+    },
121
+    data() {
122
+        return {
123
+            performanceList:[],
124
+            merSelect: [],
125
+            timeVal: '',
126
+            tableData: {
127
+                data: [],
128
+                total: 0,
129
+            },
130
+            listLoading: true,
131
+            tableFrom: {
132
+                uid: "",
133
+                date: "",
134
+                page: 1,
135
+                limit: 20,
136
+                type: "",
137
+                pm: ""
138
+            },
139
+            fromList: {
140
+                title: "选择时间",
141
+                custom: true,
142
+                fromTxt: [{
143
+                        text: "全部",
144
+                        val: ""
145
+                    },
146
+                    {
147
+                        text: "今天",
148
+                        val: "today"
149
+                    },
150
+                    {
151
+                        text: "昨天",
152
+                        val: "yesterday"
153
+                    },
154
+                    {
155
+                        text: "最近7天",
156
+                        val: "lately7"
157
+                    },
158
+                    {
159
+                        text: "最近30天",
160
+                        val: "lately30"
161
+                    },
162
+                    {
163
+                        text: "本月",
164
+                        val: "month"
165
+                    },
166
+                    {
167
+                        text: "本年",
168
+                        val: "year"
169
+                    },
170
+                ],
171
+            },
172
+            fileVisible: false,
173
+            cardLists: [],
174
+            teamList: [],
175
+
176
+        };
177
+    },
178
+    mounted() {
179
+        this.getList(1);
180
+
181
+        performanceDivvyLstApi({'page':1,'limit':100,'state':1}).then(res => {
182
+          this.performanceList = res.data.list
183
+        }).catch(res => {
184
+          this.$message.error(res.message)
185
+        })
186
+        // 获取隶属团队
187
+        getZeroPointApi().then(res => {
188
+            this.teamList = res.data
189
+            console.log('隶属团队')
190
+            console.log(this.teamList)
191
+        }).catch((res) => {
192
+            this.$message.error(res.message);
193
+        });
194
+
195
+    },
196
+    methods: {
197
+
198
+      pushToOrderList(orderIds) {
199
+
200
+
201
+        // accounts/extract
202
+
203
+        this.$router.push({
204
+          path: roterPre + "/order/list/",
205
+          query: { order_sn: orderIds },
206
+        });
207
+      },
208
+
209
+      tanchuang() {
210
+        this.dialogVisible = true
211
+      },
212
+
213
+      selectData(name) {
214
+        if (name == '系统奖励红复购金数') {
215
+          this.tableFrom.pm = '1'
216
+        } else if (name == '系统销毁红复购金数') {
217
+          this.tableFrom.pm = '2'
218
+        } else if (name == '人工奖励红复购金数') {
219
+          this.tableFrom.pm = '3'
220
+        } else if (name == '人工销毁红复购金数') {
221
+          this.tableFrom.pm = '4'
222
+        }
223
+
224
+        this.getList(1)
225
+      },
226
+
227
+      // 重置
228
+      reset() {
229
+        this.tableFrom ={
230
+            uid: "",
231
+            date: "",
232
+            page: 1,
233
+            limit: 20,
234
+            type: "",
235
+            pm: ""
236
+          }
237
+        this.getList();
238
+      },
239
+      exportSearchResult() {
240
+        RewardExcelApi(this.paramsData).then(res => {
241
+          console.log( res.data)
242
+          console.log( res.data.path)
243
+          window.open( res.data.path)
244
+          // window.open(SettingMer.https + `/excel/download/0?token=` + getToken()+`&path=` + res.data.path)
245
+        }).catch((res) => {
246
+
247
+        })
248
+      },
249
+
250
+
251
+
252
+        // 表格某一行添加特定的样式
253
+        addTdClass(val) {
254
+            if (val.row.status > 0 && val.row.paid == 1) {
255
+                for (let i = 0; i < val.row.orderProduct.length; i++) {
256
+                    if (val.row.orderProduct[i].refund_num > 0 && val.row.orderProduct[i].refund_num < val.row.orderProduct[i].product_num) {
257
+                        return "row-bg";
258
+                    }
259
+                }
260
+            } else {
261
+                return " ";
262
+            }
263
+        },
264
+
265
+        // 导出
266
+        exportOrder() {
267
+            exportOrderApi(this.tableFrom)
268
+                .then((res) => {
269
+                    // this.$message.success(res.message);
270
+                    // this.fileVisible = true;
271
+                    // this.$refs.exportList.exportFileList();
272
+                  const h = this.$createElement;
273
+                  this.$msgbox({
274
+                    title: '提示',
275
+                    message: h('p', null, [
276
+                      h('span', null, '文件正在生成中,请稍后点击"'),
277
+                      h('span', { style: 'color: teal' }, '导出已生成列表'),
278
+                      h('span', null, '"查看~ '),
279
+                    ]),
280
+                    confirmButtonText: '我知道了',
281
+                  }).then(action => {
282
+
283
+                  });                })
284
+                .catch((res) => {
285
+                    this.$message.error(res.message);
286
+                });
287
+        },
288
+        getExportFileList() {
289
+            this.fileVisible = true;
290
+            this.$refs.exportList.exportFileList('order');
291
+        },
292
+
293
+        handleSelectionChange(val) {
294
+            this.selectionList = val;
295
+            const data = [];
296
+            this.selectionList.map((item) => {
297
+                data.push(item.order_id);
298
+            });
299
+            this.ids = data.join(",");
300
+        },
301
+        // 选择时间
302
+        selectChange(tab) {
303
+            this.timeVal = [];
304
+            this.tableFrom.date = tab;
305
+            this.getList(1);
306
+        },
307
+        // 具体日期
308
+        onchangeTime(e) {
309
+            this.timeVal = e;
310
+            this.tableFrom.date = e ? this.timeVal.join("-") : "";
311
+            this.getList(1);
312
+        },
313
+
314
+        // 列表
315
+        getList(num) {
316
+            this.tableFrom.page = num ? num : this.tableFrom.page;
317
+            getFugouCountApi(this.tableFrom).then((res) => {
318
+                console.log(res,'aaaaa');
319
+                this.tableData.data = res.data.list;
320
+                this.tableData.total = res.data.count;
321
+
322
+                this.cardLists = [
323
+                  { info: '', name: '复购金奖励总数', count: res.data.statistics.all },
324
+                  { info: '', name: '已结算复购金', count: res.data.statistics.clear },
325
+                  { info: '', name: '未结算复购金', count: res.data.statistics.nclear },
326
+                  { info: '', name: '已失效复购金', count: res.data.statistics.lost },
327
+                  // {info: '', name: '复购金扣减总数', count: res.data.statistics.deduct},
328
+                  // {info: '', name: '剩余复购金总数', count: res.data.statistics.all_mp1}
329
+                ]
330
+            }).catch((res) => {
331
+                this.$message.error(res.message);
332
+            });
333
+        },
334
+        pageChange(page) {
335
+            this.tableFrom.page = page;
336
+            this.getList('');
337
+        },
338
+        handleSizeChange(val) {
339
+            this.tableFrom.limit = val;
340
+            this.getList('');
341
+        },
342
+    }
343
+};
344
+</script>
345
+
346
+<style lang="scss" scoped>
347
+.selWidth {
348
+    width: 300px;
349
+}
350
+
351
+.el-dropdown-link {
352
+    cursor: pointer;
353
+    color: #409eff;
354
+    font-size: 12px;
355
+}
356
+
357
+.el-icon-arrow-down {
358
+    font-size: 12px;
359
+}
360
+
361
+.tabBox_tit {
362
+    width: 53%;
363
+    font-size: 12px !important;
364
+    margin: 0 2px 0 10px;
365
+    letter-spacing: 1px;
366
+    padding: 5px 0;
367
+    box-sizing: border-box;
368
+}
369
+
370
+/deep/.row-bg {
371
+    .cell {
372
+        color: red !important;
373
+    }
374
+}
375
+
376
+.filter-item {
377
+  width:50%;
378
+}
379
+
380
+
381
+.cancel-order-mark {
382
+    margin-top: 30px;
383
+
384
+    .cancel-order-select-reason {
385
+        height: 30px;
386
+    }
387
+
388
+    .canel-order-remark-input {
389
+        width: 75%;
390
+        margin-left: 35px;
391
+    }
392
+
393
+
394
+}
395
+
396
+.bottom-button {
397
+    margin-top: 30px;
398
+    margin-left: 300px;
399
+    width: 250px;
400
+    display: flex;
401
+    justify-content: space-between;
402
+  }
403
+
404
+.cancel-button {
405
+        display: flex;
406
+        justify-content: center;
407
+        margin-top: 20px;
408
+        gap:50px;
409
+        height: 30px;
410
+        // background-color: rebeccapurple;
411
+
412
+        .confirm {
413
+          width: 70px;
414
+          // height: 30px;
415
+        }
416
+        .cacnel-item {
417
+          width: 70px;
418
+          // height: 30px;
419
+        }
420
+    }
421
+
422
+.selected-kuang {
423
+  width: 500px;
424
+}
425
+
426
+
427
+.jiangjintotal {
428
+
429
+  display: flex;
430
+  flex-direction: column;
431
+  justify-content: center;
432
+  align-items: center;
433
+  margin-bottom: 10px;
434
+  border: 1px solid #999;
435
+  border-radius: 5px;
436
+  width: 150px;
437
+  height: 60px;
438
+  line-height: 25px;
439
+  margin-right: 10px;
440
+}
441
+
442
+.jiangjintotal .money {
443
+  font-size: 20px;
444
+}
445
+
446
+
447
+</style>

+ 447 - 0
src/views/accounts/caiwutongji/hongbao/index.vue

@@ -0,0 +1,447 @@
1
+<template>
2
+<div class="divBox">
3
+    <el-card class="box-card">
4
+        <div slot="header" class="clearfix">
5
+            <div class="container">
6
+                <el-form size="small" label-width="100px">
7
+                    <el-form-item label="时间选择:" class="width100">
8
+                        <el-radio-group v-model="tableFrom.date" type="button" class="mr20" size="small" @change="selectChange(tableFrom.date)">
9
+                            <el-radio-button v-for="(item,i) in fromList.fromTxt" :key="i" :label="item.val">{{ item.text }}</el-radio-button>
10
+                        </el-radio-group>
11
+                        <el-date-picker v-model="timeVal" value-format="yyyy/MM/dd" format="yyyy/MM/dd" size="small" type="daterange" placement="bottom-end" placeholder="自定义时间" style="width: 250px;" @change="onchangeTime" />
12
+                    </el-form-item>
13
+                    <el-form-item label="用户手机号:" class="width100">
14
+                        <el-input v-model="tableFrom.phone" placeholder="请输入" class="selWidth" size="small">
15
+                        </el-input>
16
+                    </el-form-item>
17
+                    <!-- <el-form-item label="红包变动:" class="selected-kuang">
18
+                      <el-select
19
+                        v-model="tableFrom.pm"
20
+                        placeholder="全部"
21
+                        class="filter-item"
22
+                        @change="getList(1)"
23
+                      >
24
+                        <el-option label="全部" value="" />
25
+                        <el-option label="增加" value="1" />
26
+                        <el-option label="扣减" value="2" />
27
+                      </el-select>
28
+                    </el-form-item> -->
29
+                    <el-form-item label="红包状态:" class="selected-kuang">
30
+                      <el-select
31
+                        v-model="tableFrom.status"
32
+                        placeholder="全部"
33
+                        class="filter-item"
34
+                        @change="getList(1)"
35
+                      >
36
+                        <el-option label="全部" value="" />
37
+                        <el-option label="有效" value="1" />
38
+                        <el-option label="待确认" value="-1" />
39
+                        <el-option label="已失效" value="0" />
40
+                      </el-select>
41
+                    </el-form-item>
42
+
43
+                </el-form>
44
+
45
+                <div class="bottom-button">
46
+                  <el-button size="small" @click="reset" style="width: 100px; margin-top: 20px; border: 1px solid; " >重置</el-button>
47
+                  <!-- <el-button type="primary" size="small" @click="exportSearchResult" style="width: 100px; margin-top: 20px;">导出</el-button> -->
48
+
49
+                  <el-button type="primary" size="small" @click="getList(1)" style="width: 100px; margin-top: 20px;">查询</el-button>
50
+                </div>
51
+            </div>
52
+
53
+
54
+
55
+        </div>
56
+
57
+        <div style="display: flex">
58
+          <div class="jiangjintotal" v-for="(v,k) in cardLists" >
59
+            <span class="jiangjintotal-title">{{ v.name }}</span>
60
+            <span class="money">{{ v.count }}</span>
61
+          </div>
62
+        </div>
63
+
64
+        <el-table :data="tableData.data" style="width: 100%" size="mini" class="table" highlight-current-row >
65
+
66
+
67
+            <el-table-column label="ID" prop="id" min-width="100" />
68
+            <el-table-column label="时间" prop="addtime" min-width="150" />
69
+            <el-table-column label="用户昵称" prop="nickname"  min-width="130" />
70
+            <el-table-column label="用户账号(手机号)" prop="phone"  min-width="130" />
71
+
72
+            <el-table-column label="红包数" prop="number"  min-width="130" />
73
+            <el-table-column label="红包状态" prop="status"  min-width="130">
74
+              <template slot-scope="scope">
75
+                <span v-if="scope.row.status == 1">有效</span>  
76
+                <span v-if="scope.row.status == -1">待确认</span>
77
+                <span v-if="scope.row.status == 0">已失效</span>
78
+              </template>
79
+            </el-table-column>
80
+            <!-- <el-table-column label="红包变动" prop="status"  min-width="130">
81
+              <template slot-scope="scope">
82
+                <span v-if="scope.row.pm == 1">增加</span>
83
+                <span v-if="scope.row.pm == 2">扣减</span>
84
+              </template>
85
+            </el-table-column> -->
86
+            <el-table-column label="关联订单" prop="order_sn"  min-width="130">
87
+              <template slot-scope="scope">
88
+                <span style="color: blue; cursor: pointer;" @click="pushToOrderList(scope.row.order_sn)">{{ scope.row.order_sn }}</span>
89
+              </template>
90
+            </el-table-column>
91
+            <!-- <el-table-column label="说明" prop="mark"  min-width="130" /> -->
92
+        </el-table>
93
+        <div class="block">
94
+          <el-pagination :page-sizes="[20, 40, 60, 80]" :page-size="tableFrom.limit" :current-page="tableFrom.page"
95
+            layout="total, sizes, prev, pager, next, jumper" :total="tableData.total" @size-change="handleSizeChange"
96
+            @current-change="pageChange" />
97
+        </div>
98
+    </el-card>
99
+
100
+
101
+</div>
102
+</template>
103
+
104
+<script>
105
+import {
106
+    redPointListApi,
107
+    exportOrderApi,
108
+} from "@/api/order";
109
+
110
+import { performanceDivvyLstApi } from '@/api/protocol'
111
+
112
+import fileList from "@/components/exportFile/fileList";
113
+import cardsData from "@/components/cards/index";
114
+import {getZeroPointApi, getHongbaoCountApi} from "@/api/accounts";
115
+import {roterPre} from "@/settings";
116
+export default {
117
+    components: {
118
+        cardsData,
119
+        fileList
120
+    },
121
+    data() {
122
+        return {
123
+            performanceList:[],
124
+            merSelect: [],
125
+            timeVal: '',
126
+            tableData: {
127
+                data: [],
128
+                total: 0,
129
+            },
130
+            listLoading: true,
131
+            tableFrom: {
132
+                uid: "",
133
+                date: "",
134
+                page: 1,
135
+                limit: 20,
136
+                type: "",
137
+                pm: ""
138
+            },
139
+            fromList: {
140
+                title: "选择时间",
141
+                custom: true,
142
+                fromTxt: [{
143
+                        text: "全部",
144
+                        val: ""
145
+                    },
146
+                    {
147
+                        text: "今天",
148
+                        val: "today"
149
+                    },
150
+                    {
151
+                        text: "昨天",
152
+                        val: "yesterday"
153
+                    },
154
+                    {
155
+                        text: "最近7天",
156
+                        val: "lately7"
157
+                    },
158
+                    {
159
+                        text: "最近30天",
160
+                        val: "lately30"
161
+                    },
162
+                    {
163
+                        text: "本月",
164
+                        val: "month"
165
+                    },
166
+                    {
167
+                        text: "本年",
168
+                        val: "year"
169
+                    },
170
+                ],
171
+            },
172
+            fileVisible: false,
173
+            cardLists: [],
174
+            teamList: [],
175
+
176
+        };
177
+    },
178
+    mounted() {
179
+        this.getList(1);
180
+
181
+        performanceDivvyLstApi({'page':1,'limit':100,'state':1}).then(res => {
182
+          this.performanceList = res.data.list
183
+        }).catch(res => {
184
+          this.$message.error(res.message)
185
+        })
186
+        // 获取隶属团队
187
+        getZeroPointApi().then(res => {
188
+            this.teamList = res.data
189
+            console.log('隶属团队')
190
+            console.log(this.teamList)
191
+        }).catch((res) => {
192
+            this.$message.error(res.message);
193
+        });
194
+
195
+    },
196
+    methods: {
197
+
198
+      pushToOrderList(orderIds) {
199
+
200
+
201
+        // accounts/extract
202
+
203
+        this.$router.push({
204
+          path: roterPre + "/order/list/",
205
+          query: { order_sn: orderIds },
206
+        });
207
+      },
208
+
209
+      tanchuang() {
210
+        this.dialogVisible = true
211
+      },
212
+
213
+      selectData(name) {
214
+        if (name == '系统奖励红红包数') {
215
+          this.tableFrom.pm = '1'
216
+        } else if (name == '系统销毁红红包数') {
217
+          this.tableFrom.pm = '2'
218
+        } else if (name == '人工奖励红红包数') {
219
+          this.tableFrom.pm = '3'
220
+        } else if (name == '人工销毁红红包数') {
221
+          this.tableFrom.pm = '4'
222
+        }
223
+
224
+        this.getList(1)
225
+      },
226
+
227
+      // 重置
228
+      reset() {
229
+        this.tableFrom ={
230
+            uid: "",
231
+            date: "",
232
+            page: 1,
233
+            limit: 20,
234
+            type: "",
235
+            pm: ""
236
+          }
237
+        this.getList();
238
+      },
239
+      exportSearchResult() {
240
+        RewardExcelApi(this.paramsData).then(res => {
241
+          console.log( res.data)
242
+          console.log( res.data.path)
243
+          window.open( res.data.path)
244
+          // window.open(SettingMer.https + `/excel/download/0?token=` + getToken()+`&path=` + res.data.path)
245
+        }).catch((res) => {
246
+
247
+        })
248
+      },
249
+
250
+
251
+
252
+        // 表格某一行添加特定的样式
253
+        addTdClass(val) {
254
+            if (val.row.status > 0 && val.row.paid == 1) {
255
+                for (let i = 0; i < val.row.orderProduct.length; i++) {
256
+                    if (val.row.orderProduct[i].refund_num > 0 && val.row.orderProduct[i].refund_num < val.row.orderProduct[i].product_num) {
257
+                        return "row-bg";
258
+                    }
259
+                }
260
+            } else {
261
+                return " ";
262
+            }
263
+        },
264
+
265
+        // 导出
266
+        exportOrder() {
267
+            exportOrderApi(this.tableFrom)
268
+                .then((res) => {
269
+                    // this.$message.success(res.message);
270
+                    // this.fileVisible = true;
271
+                    // this.$refs.exportList.exportFileList();
272
+                  const h = this.$createElement;
273
+                  this.$msgbox({
274
+                    title: '提示',
275
+                    message: h('p', null, [
276
+                      h('span', null, '文件正在生成中,请稍后点击"'),
277
+                      h('span', { style: 'color: teal' }, '导出已生成列表'),
278
+                      h('span', null, '"查看~ '),
279
+                    ]),
280
+                    confirmButtonText: '我知道了',
281
+                  }).then(action => {
282
+
283
+                  });                })
284
+                .catch((res) => {
285
+                    this.$message.error(res.message);
286
+                });
287
+        },
288
+        getExportFileList() {
289
+            this.fileVisible = true;
290
+            this.$refs.exportList.exportFileList('order');
291
+        },
292
+
293
+        handleSelectionChange(val) {
294
+            this.selectionList = val;
295
+            const data = [];
296
+            this.selectionList.map((item) => {
297
+                data.push(item.order_id);
298
+            });
299
+            this.ids = data.join(",");
300
+        },
301
+        // 选择时间
302
+        selectChange(tab) {
303
+            this.timeVal = [];
304
+            this.tableFrom.date = tab;
305
+            this.getList(1);
306
+        },
307
+        // 具体日期
308
+        onchangeTime(e) {
309
+            this.timeVal = e;
310
+            this.tableFrom.date = e ? this.timeVal.join("-") : "";
311
+            this.getList(1);
312
+        },
313
+
314
+        // 列表
315
+        getList(num) {
316
+            this.tableFrom.page = num ? num : this.tableFrom.page;
317
+            getHongbaoCountApi(this.tableFrom).then((res) => {
318
+                console.log(res,'aaaaa');
319
+                this.tableData.data = res.data.list;
320
+                this.tableData.total = res.data.count;
321
+
322
+                this.cardLists = [
323
+                  { info: '', name: '红包奖励总数', count: res.data.statistics.all },
324
+                  { info: '', name: '已结算红包', count: res.data.statistics.clear },
325
+                  { info: '', name: '未结算红包', count: res.data.statistics.nclear },
326
+                  { info: '', name: '已失效红包', count: res.data.statistics.lost },
327
+                  // {info: '', name: '红包扣减总数', count: res.data.statistics.deduct},
328
+                  // {info: '', name: '剩余红包总数', count: res.data.statistics.all_mp1}
329
+                ]
330
+            }).catch((res) => {
331
+                this.$message.error(res.message);
332
+            });
333
+        },
334
+        pageChange(page) {
335
+            this.tableFrom.page = page;
336
+            this.getList('');
337
+        },
338
+        handleSizeChange(val) {
339
+            this.tableFrom.limit = val;
340
+            this.getList('');
341
+        },
342
+    }
343
+};
344
+</script>
345
+
346
+<style lang="scss" scoped>
347
+.selWidth {
348
+    width: 300px;
349
+}
350
+
351
+.el-dropdown-link {
352
+    cursor: pointer;
353
+    color: #409eff;
354
+    font-size: 12px;
355
+}
356
+
357
+.el-icon-arrow-down {
358
+    font-size: 12px;
359
+}
360
+
361
+.tabBox_tit {
362
+    width: 53%;
363
+    font-size: 12px !important;
364
+    margin: 0 2px 0 10px;
365
+    letter-spacing: 1px;
366
+    padding: 5px 0;
367
+    box-sizing: border-box;
368
+}
369
+
370
+/deep/.row-bg {
371
+    .cell {
372
+        color: red !important;
373
+    }
374
+}
375
+
376
+.filter-item {
377
+  width:50%;
378
+}
379
+
380
+
381
+.cancel-order-mark {
382
+    margin-top: 30px;
383
+
384
+    .cancel-order-select-reason {
385
+        height: 30px;
386
+    }
387
+
388
+    .canel-order-remark-input {
389
+        width: 75%;
390
+        margin-left: 35px;
391
+    }
392
+
393
+
394
+}
395
+
396
+.bottom-button {
397
+    margin-top: 30px;
398
+    margin-left: 300px;
399
+    width: 250px;
400
+    display: flex;
401
+    justify-content: space-between;
402
+  }
403
+
404
+.cancel-button {
405
+        display: flex;
406
+        justify-content: center;
407
+        margin-top: 20px;
408
+        gap:50px;
409
+        height: 30px;
410
+        // background-color: rebeccapurple;
411
+
412
+        .confirm {
413
+          width: 70px;
414
+          // height: 30px;
415
+        }
416
+        .cacnel-item {
417
+          width: 70px;
418
+          // height: 30px;
419
+        }
420
+    }
421
+
422
+.selected-kuang {
423
+  width: 500px;
424
+}
425
+
426
+
427
+.jiangjintotal {
428
+
429
+  display: flex;
430
+  flex-direction: column;
431
+  justify-content: center;
432
+  align-items: center;
433
+  margin-bottom: 10px;
434
+  border: 1px solid #999;
435
+  border-radius: 5px;
436
+  width: 150px;
437
+  height: 60px;
438
+  line-height: 25px;
439
+  margin-right: 10px;
440
+}
441
+
442
+.jiangjintotal .money {
443
+  font-size: 20px;
444
+}
445
+
446
+
447
+</style>

+ 447 - 0
src/views/accounts/caiwutongji/jingdou/index.vue

@@ -0,0 +1,447 @@
1
+<template>
2
+<div class="divBox">
3
+    <el-card class="box-card">
4
+        <div slot="header" class="clearfix">
5
+            <div class="container">
6
+                <el-form size="small" label-width="100px">
7
+                    <el-form-item label="时间选择:" class="width100">
8
+                        <el-radio-group v-model="tableFrom.date" type="button" class="mr20" size="small" @change="selectChange(tableFrom.date)">
9
+                            <el-radio-button v-for="(item,i) in fromList.fromTxt" :key="i" :label="item.val">{{ item.text }}</el-radio-button>
10
+                        </el-radio-group>
11
+                        <el-date-picker v-model="timeVal" value-format="yyyy/MM/dd" format="yyyy/MM/dd" size="small" type="daterange" placement="bottom-end" placeholder="自定义时间" style="width: 250px;" @change="onchangeTime" />
12
+                    </el-form-item>
13
+                    <el-form-item label="用户手机号:" class="width100">
14
+                        <el-input v-model="tableFrom.phone" placeholder="请输入" class="selWidth" size="small">
15
+                        </el-input>
16
+                    </el-form-item>
17
+                    <!-- <el-form-item label="京豆变动:" class="selected-kuang">
18
+                      <el-select
19
+                        v-model="tableFrom.pm"
20
+                        placeholder="全部"
21
+                        class="filter-item"
22
+                        @change="getList(1)"
23
+                      >
24
+                        <el-option label="全部" value="" />
25
+                        <el-option label="增加" value="1" />
26
+                        <el-option label="扣减" value="2" />
27
+                      </el-select>
28
+                    </el-form-item> -->
29
+                    <el-form-item label="京豆状态:" class="selected-kuang">
30
+                      <el-select
31
+                        v-model="tableFrom.status"
32
+                        placeholder="全部"
33
+                        class="filter-item"
34
+                        @change="getList(1)"
35
+                      >
36
+                        <el-option label="全部" value="" />
37
+                        <el-option label="有效" value="1" />
38
+                        <el-option label="待确认" value="-1" />
39
+                        <el-option label="已失效" value="0" />
40
+                      </el-select>
41
+                    </el-form-item>
42
+
43
+                </el-form>
44
+
45
+                <div class="bottom-button">
46
+                  <el-button size="small" @click="reset" style="width: 100px; margin-top: 20px; border: 1px solid; " >重置</el-button>
47
+                  <!-- <el-button type="primary" size="small" @click="exportSearchResult" style="width: 100px; margin-top: 20px;">导出</el-button> -->
48
+
49
+                  <el-button type="primary" size="small" @click="getList(1)" style="width: 100px; margin-top: 20px;">查询</el-button>
50
+                </div>
51
+            </div>
52
+
53
+
54
+
55
+        </div>
56
+
57
+        <div style="display: flex">
58
+          <div class="jiangjintotal" v-for="(v,k) in cardLists" >
59
+            <span class="jiangjintotal-title">{{ v.name }}</span>
60
+            <span class="money">{{ v.count }}</span>
61
+          </div>
62
+        </div>
63
+
64
+        <el-table :data="tableData.data" style="width: 100%" size="mini" class="table" highlight-current-row >
65
+
66
+
67
+            <el-table-column label="ID" prop="id" min-width="100" />
68
+            <el-table-column label="时间" prop="addtime" min-width="150" />
69
+            <el-table-column label="用户昵称" prop="nickname"  min-width="130" />
70
+            <el-table-column label="用户账号(手机号)" prop="phone"  min-width="130" />
71
+
72
+            <el-table-column label="京豆数" prop="number"  min-width="130" />
73
+            <el-table-column label="京豆状态" prop="status"  min-width="130">
74
+              <template slot-scope="scope">
75
+                <span v-if="scope.row.status == 1">有效</span>  
76
+                <span v-if="scope.row.status == -1">待确认</span>
77
+                <span v-if="scope.row.status == 0">已失效</span>
78
+              </template>
79
+            </el-table-column>
80
+            <!-- <el-table-column label="京豆变动" prop="status"  min-width="130">
81
+              <template slot-scope="scope">
82
+                <span v-if="scope.row.pm == 1">增加</span>
83
+                <span v-if="scope.row.pm == 2">扣减</span>
84
+              </template>
85
+            </el-table-column> -->
86
+            <el-table-column label="关联订单" prop="order_sn"  min-width="130">
87
+              <template slot-scope="scope">
88
+                <span style="color: blue; cursor: pointer;" @click="pushToOrderList(scope.row.order_sn)">{{ scope.row.order_sn }}</span>
89
+              </template>
90
+            </el-table-column>
91
+            <!-- <el-table-column label="说明" prop="mark"  min-width="130" /> -->
92
+        </el-table>
93
+        <div class="block">
94
+          <el-pagination :page-sizes="[20, 40, 60, 80]" :page-size="tableFrom.limit" :current-page="tableFrom.page"
95
+            layout="total, sizes, prev, pager, next, jumper" :total="tableData.total" @size-change="handleSizeChange"
96
+            @current-change="pageChange" />
97
+        </div>
98
+    </el-card>
99
+
100
+
101
+</div>
102
+</template>
103
+
104
+<script>
105
+import {
106
+    redPointListApi,
107
+    exportOrderApi,
108
+} from "@/api/order";
109
+
110
+import { performanceDivvyLstApi } from '@/api/protocol'
111
+
112
+import fileList from "@/components/exportFile/fileList";
113
+import cardsData from "@/components/cards/index";
114
+import {getZeroPointApi, getJingdouCountApi} from "@/api/accounts";
115
+import {roterPre} from "@/settings";
116
+export default {
117
+    components: {
118
+        cardsData,
119
+        fileList
120
+    },
121
+    data() {
122
+        return {
123
+            performanceList:[],
124
+            merSelect: [],
125
+            timeVal: '',
126
+            tableData: {
127
+                data: [],
128
+                total: 0,
129
+            },
130
+            listLoading: true,
131
+            tableFrom: {
132
+                uid: "",
133
+                date: "",
134
+                page: 1,
135
+                limit: 20,
136
+                type: "",
137
+                pm: ""
138
+            },
139
+            fromList: {
140
+                title: "选择时间",
141
+                custom: true,
142
+                fromTxt: [{
143
+                        text: "全部",
144
+                        val: ""
145
+                    },
146
+                    {
147
+                        text: "今天",
148
+                        val: "today"
149
+                    },
150
+                    {
151
+                        text: "昨天",
152
+                        val: "yesterday"
153
+                    },
154
+                    {
155
+                        text: "最近7天",
156
+                        val: "lately7"
157
+                    },
158
+                    {
159
+                        text: "最近30天",
160
+                        val: "lately30"
161
+                    },
162
+                    {
163
+                        text: "本月",
164
+                        val: "month"
165
+                    },
166
+                    {
167
+                        text: "本年",
168
+                        val: "year"
169
+                    },
170
+                ],
171
+            },
172
+            fileVisible: false,
173
+            cardLists: [],
174
+            teamList: [],
175
+
176
+        };
177
+    },
178
+    mounted() {
179
+        this.getList(1);
180
+
181
+        performanceDivvyLstApi({'page':1,'limit':100,'state':1}).then(res => {
182
+          this.performanceList = res.data.list
183
+        }).catch(res => {
184
+          this.$message.error(res.message)
185
+        })
186
+        // 获取隶属团队
187
+        getZeroPointApi().then(res => {
188
+            this.teamList = res.data
189
+            console.log('隶属团队')
190
+            console.log(this.teamList)
191
+        }).catch((res) => {
192
+            this.$message.error(res.message);
193
+        });
194
+
195
+    },
196
+    methods: {
197
+
198
+      pushToOrderList(orderIds) {
199
+
200
+
201
+        // accounts/extract
202
+
203
+        this.$router.push({
204
+          path: roterPre + "/order/list/",
205
+          query: { order_sn: orderIds },
206
+        });
207
+      },
208
+
209
+      tanchuang() {
210
+        this.dialogVisible = true
211
+      },
212
+
213
+      selectData(name) {
214
+        if (name == '系统奖励红京豆数') {
215
+          this.tableFrom.pm = '1'
216
+        } else if (name == '系统销毁红京豆数') {
217
+          this.tableFrom.pm = '2'
218
+        } else if (name == '人工奖励红京豆数') {
219
+          this.tableFrom.pm = '3'
220
+        } else if (name == '人工销毁红京豆数') {
221
+          this.tableFrom.pm = '4'
222
+        }
223
+
224
+        this.getList(1)
225
+      },
226
+
227
+      // 重置
228
+      reset() {
229
+        this.tableFrom ={
230
+            uid: "",
231
+            date: "",
232
+            page: 1,
233
+            limit: 20,
234
+            type: "",
235
+            pm: ""
236
+          }
237
+        this.getList();
238
+      },
239
+      exportSearchResult() {
240
+        RewardExcelApi(this.paramsData).then(res => {
241
+          console.log( res.data)
242
+          console.log( res.data.path)
243
+          window.open( res.data.path)
244
+          // window.open(SettingMer.https + `/excel/download/0?token=` + getToken()+`&path=` + res.data.path)
245
+        }).catch((res) => {
246
+
247
+        })
248
+      },
249
+
250
+
251
+
252
+        // 表格某一行添加特定的样式
253
+        addTdClass(val) {
254
+            if (val.row.status > 0 && val.row.paid == 1) {
255
+                for (let i = 0; i < val.row.orderProduct.length; i++) {
256
+                    if (val.row.orderProduct[i].refund_num > 0 && val.row.orderProduct[i].refund_num < val.row.orderProduct[i].product_num) {
257
+                        return "row-bg";
258
+                    }
259
+                }
260
+            } else {
261
+                return " ";
262
+            }
263
+        },
264
+
265
+        // 导出
266
+        exportOrder() {
267
+            exportOrderApi(this.tableFrom)
268
+                .then((res) => {
269
+                    // this.$message.success(res.message);
270
+                    // this.fileVisible = true;
271
+                    // this.$refs.exportList.exportFileList();
272
+                  const h = this.$createElement;
273
+                  this.$msgbox({
274
+                    title: '提示',
275
+                    message: h('p', null, [
276
+                      h('span', null, '文件正在生成中,请稍后点击"'),
277
+                      h('span', { style: 'color: teal' }, '导出已生成列表'),
278
+                      h('span', null, '"查看~ '),
279
+                    ]),
280
+                    confirmButtonText: '我知道了',
281
+                  }).then(action => {
282
+
283
+                  });                })
284
+                .catch((res) => {
285
+                    this.$message.error(res.message);
286
+                });
287
+        },
288
+        getExportFileList() {
289
+            this.fileVisible = true;
290
+            this.$refs.exportList.exportFileList('order');
291
+        },
292
+
293
+        handleSelectionChange(val) {
294
+            this.selectionList = val;
295
+            const data = [];
296
+            this.selectionList.map((item) => {
297
+                data.push(item.order_id);
298
+            });
299
+            this.ids = data.join(",");
300
+        },
301
+        // 选择时间
302
+        selectChange(tab) {
303
+            this.timeVal = [];
304
+            this.tableFrom.date = tab;
305
+            this.getList(1);
306
+        },
307
+        // 具体日期
308
+        onchangeTime(e) {
309
+            this.timeVal = e;
310
+            this.tableFrom.date = e ? this.timeVal.join("-") : "";
311
+            this.getList(1);
312
+        },
313
+
314
+        // 列表
315
+        getList(num) {
316
+            this.tableFrom.page = num ? num : this.tableFrom.page;
317
+            getJingdouCountApi(this.tableFrom).then((res) => {
318
+                console.log(res,'aaaaa');
319
+                this.tableData.data = res.data.list;
320
+                this.tableData.total = res.data.count;
321
+
322
+                this.cardLists = [
323
+                  { info: '', name: '京豆奖励总数', count: res.data.statistics.all },
324
+                  { info: '', name: '已结算京豆', count: res.data.statistics.clear },
325
+                  { info: '', name: '未结算京豆', count: res.data.statistics.nclear },
326
+                  { info: '', name: '已失效京豆', count: res.data.statistics.lost },
327
+                  // {info: '', name: '京豆扣减总数', count: res.data.statistics.deduct},
328
+                  // {info: '', name: '剩余京豆总数', count: res.data.statistics.all_mp1}
329
+                ]
330
+            }).catch((res) => {
331
+                this.$message.error(res.message);
332
+            });
333
+        },
334
+        pageChange(page) {
335
+            this.tableFrom.page = page;
336
+            this.getList('');
337
+        },
338
+        handleSizeChange(val) {
339
+            this.tableFrom.limit = val;
340
+            this.getList('');
341
+        },
342
+    }
343
+};
344
+</script>
345
+
346
+<style lang="scss" scoped>
347
+.selWidth {
348
+    width: 300px;
349
+}
350
+
351
+.el-dropdown-link {
352
+    cursor: pointer;
353
+    color: #409eff;
354
+    font-size: 12px;
355
+}
356
+
357
+.el-icon-arrow-down {
358
+    font-size: 12px;
359
+}
360
+
361
+.tabBox_tit {
362
+    width: 53%;
363
+    font-size: 12px !important;
364
+    margin: 0 2px 0 10px;
365
+    letter-spacing: 1px;
366
+    padding: 5px 0;
367
+    box-sizing: border-box;
368
+}
369
+
370
+/deep/.row-bg {
371
+    .cell {
372
+        color: red !important;
373
+    }
374
+}
375
+
376
+.filter-item {
377
+  width:50%;
378
+}
379
+
380
+
381
+.cancel-order-mark {
382
+    margin-top: 30px;
383
+
384
+    .cancel-order-select-reason {
385
+        height: 30px;
386
+    }
387
+
388
+    .canel-order-remark-input {
389
+        width: 75%;
390
+        margin-left: 35px;
391
+    }
392
+
393
+
394
+}
395
+
396
+.bottom-button {
397
+    margin-top: 30px;
398
+    margin-left: 300px;
399
+    width: 250px;
400
+    display: flex;
401
+    justify-content: space-between;
402
+  }
403
+
404
+.cancel-button {
405
+        display: flex;
406
+        justify-content: center;
407
+        margin-top: 20px;
408
+        gap:50px;
409
+        height: 30px;
410
+        // background-color: rebeccapurple;
411
+
412
+        .confirm {
413
+          width: 70px;
414
+          // height: 30px;
415
+        }
416
+        .cacnel-item {
417
+          width: 70px;
418
+          // height: 30px;
419
+        }
420
+    }
421
+
422
+.selected-kuang {
423
+  width: 500px;
424
+}
425
+
426
+
427
+.jiangjintotal {
428
+
429
+  display: flex;
430
+  flex-direction: column;
431
+  justify-content: center;
432
+  align-items: center;
433
+  margin-bottom: 10px;
434
+  border: 1px solid #999;
435
+  border-radius: 5px;
436
+  width: 150px;
437
+  height: 60px;
438
+  line-height: 25px;
439
+  margin-right: 10px;
440
+}
441
+
442
+.jiangjintotal .money {
443
+  font-size: 20px;
444
+}
445
+
446
+
447
+</style>

+ 445 - 0
src/views/accounts/caiwutongji/vr/index.vue

@@ -0,0 +1,445 @@
1
+<template>
2
+<div class="divBox">
3
+    <el-card class="box-card">
4
+        <div slot="header" class="clearfix">
5
+            <div class="container">
6
+                <el-form size="small" label-width="100px">
7
+                    <el-form-item label="时间选择:" class="width100">
8
+                        <el-radio-group v-model="tableFrom.date" type="button" class="mr20" size="small" @change="selectChange(tableFrom.date)">
9
+                            <el-radio-button v-for="(item,i) in fromList.fromTxt" :key="i" :label="item.val">{{ item.text }}</el-radio-button>
10
+                        </el-radio-group>
11
+                        <el-date-picker v-model="timeVal" value-format="yyyy/MM/dd" format="yyyy/MM/dd" size="small" type="daterange" placement="bottom-end" placeholder="自定义时间" style="width: 250px;" @change="onchangeTime" />
12
+                    </el-form-item>
13
+                    <el-form-item label="用户手机号:" class="width100">
14
+                        <el-input v-model="tableFrom.phone" placeholder="请输入" class="selWidth" size="small">
15
+                        </el-input>
16
+                    </el-form-item>
17
+                    <!-- <el-form-item label="VR变动:" class="selected-kuang">
18
+                      <el-select
19
+                        v-model="tableFrom.pm"
20
+                        placeholder="全部"
21
+                        class="filter-item"
22
+                        @change="getList(1)"
23
+                      >
24
+                        <el-option label="全部" value="" />
25
+                        <el-option label="增加" value="1" />
26
+                        <el-option label="扣减" value="2" />
27
+                      </el-select>
28
+                    </el-form-item> -->
29
+                    <el-form-item label="VR类型:" class="selected-kuang">
30
+                      <el-select
31
+                        v-model="tableFrom.type"
32
+                        placeholder="全部"
33
+                        class="filter-item"
34
+                        @change="getList(1)"
35
+                      >
36
+                        <el-option label="全部" value="" />
37
+                        <el-option label="兑换" value="1" />
38
+                        <el-option label="消耗" value="2" />
39
+                      </el-select>
40
+                    </el-form-item>
41
+
42
+                </el-form>
43
+
44
+                <div class="bottom-button">
45
+                  <el-button size="small" @click="reset" style="width: 100px; margin-top: 20px; border: 1px solid; " >重置</el-button>
46
+                  <!-- <el-button type="primary" size="small" @click="exportSearchResult" style="width: 100px; margin-top: 20px;">导出</el-button> -->
47
+
48
+                  <el-button type="primary" size="small" @click="getList(1)" style="width: 100px; margin-top: 20px;">查询</el-button>
49
+                </div>
50
+            </div>
51
+
52
+
53
+
54
+        </div>
55
+
56
+        <div style="display: flex">
57
+          <div class="jiangjintotal" v-for="(v,k) in cardLists" >
58
+            <span class="jiangjintotal-title">{{ v.name }}</span>
59
+            <span class="money">{{ v.count }}</span>
60
+          </div>
61
+        </div>
62
+
63
+        <el-table :data="tableData.data" style="width: 100%" size="mini" class="table" highlight-current-row >
64
+
65
+
66
+            <el-table-column label="ID" prop="id" min-width="100" />
67
+            <el-table-column label="时间" prop="addtime" min-width="150" />
68
+            <el-table-column label="用户昵称" prop="nickname"  min-width="130" />
69
+            <el-table-column label="用户账号(手机号)" prop="phone"  min-width="130" />
70
+
71
+            <el-table-column label="VR数" prop="number"  min-width="130" />
72
+            <el-table-column label="vr类型" prop="type"  min-width="130">
73
+              <template slot-scope="scope">
74
+                <span v-if="scope.row.type == 1">兑换</span>  
75
+                <span v-if="scope.row.type == 2">消耗</span>
76
+              </template>
77
+            </el-table-column>
78
+            <!-- <el-table-column label="VR变动" prop="status"  min-width="130">
79
+              <template slot-scope="scope">
80
+                <span v-if="scope.row.pm == 1">增加</span>
81
+                <span v-if="scope.row.pm == 2">扣减</span>
82
+              </template>
83
+            </el-table-column> -->
84
+            <el-table-column label="关联订单" prop="order_sn"  min-width="130">
85
+              <template slot-scope="scope">
86
+                <span style="color: blue; cursor: pointer;" @click="pushToOrderList(scope.row.order_sn)">{{ scope.row.order_sn }}</span>
87
+              </template>
88
+            </el-table-column>
89
+            <!-- <el-table-column label="说明" prop="mark"  min-width="130" /> -->
90
+        </el-table>
91
+        <div class="block">
92
+          <el-pagination :page-sizes="[20, 40, 60, 80]" :page-size="tableFrom.limit" :current-page="tableFrom.page"
93
+            layout="total, sizes, prev, pager, next, jumper" :total="tableData.total" @size-change="handleSizeChange"
94
+            @current-change="pageChange" />
95
+        </div>
96
+    </el-card>
97
+
98
+
99
+</div>
100
+</template>
101
+
102
+<script>
103
+import {
104
+    redPointListApi,
105
+    exportOrderApi,
106
+} from "@/api/order";
107
+
108
+import { performanceDivvyLstApi } from '@/api/protocol'
109
+
110
+import fileList from "@/components/exportFile/fileList";
111
+import cardsData from "@/components/cards/index";
112
+import {getZeroPointApi, getVrCountApi} from "@/api/accounts";
113
+import {roterPre} from "@/settings";
114
+export default {
115
+    components: {
116
+        cardsData,
117
+        fileList
118
+    },
119
+    data() {
120
+        return {
121
+            performanceList:[],
122
+            merSelect: [],
123
+            timeVal: '',
124
+            tableData: {
125
+                data: [],
126
+                total: 0,
127
+            },
128
+            listLoading: true,
129
+            tableFrom: {
130
+                uid: "",
131
+                date: "",
132
+                page: 1,
133
+                limit: 20,
134
+                type: "",
135
+                pm: ""
136
+            },
137
+            fromList: {
138
+                title: "选择时间",
139
+                custom: true,
140
+                fromTxt: [{
141
+                        text: "全部",
142
+                        val: ""
143
+                    },
144
+                    {
145
+                        text: "今天",
146
+                        val: "today"
147
+                    },
148
+                    {
149
+                        text: "昨天",
150
+                        val: "yesterday"
151
+                    },
152
+                    {
153
+                        text: "最近7天",
154
+                        val: "lately7"
155
+                    },
156
+                    {
157
+                        text: "最近30天",
158
+                        val: "lately30"
159
+                    },
160
+                    {
161
+                        text: "本月",
162
+                        val: "month"
163
+                    },
164
+                    {
165
+                        text: "本年",
166
+                        val: "year"
167
+                    },
168
+                ],
169
+            },
170
+            fileVisible: false,
171
+            cardLists: [],
172
+            teamList: [],
173
+
174
+        };
175
+    },
176
+    mounted() {
177
+        this.getList(1);
178
+
179
+        performanceDivvyLstApi({'page':1,'limit':100,'state':1}).then(res => {
180
+          this.performanceList = res.data.list
181
+        }).catch(res => {
182
+          this.$message.error(res.message)
183
+        })
184
+        // 获取隶属团队
185
+        getZeroPointApi().then(res => {
186
+            this.teamList = res.data
187
+            console.log('隶属团队')
188
+            console.log(this.teamList)
189
+        }).catch((res) => {
190
+            this.$message.error(res.message);
191
+        });
192
+
193
+    },
194
+    methods: {
195
+
196
+      pushToOrderList(orderIds) {
197
+
198
+
199
+        // accounts/extract
200
+
201
+        this.$router.push({
202
+          path: roterPre + "/order/list/",
203
+          query: { order_sn: orderIds },
204
+        });
205
+      },
206
+
207
+      tanchuang() {
208
+        this.dialogVisible = true
209
+      },
210
+
211
+      selectData(name) {
212
+        if (name == '系统奖励红VR数') {
213
+          this.tableFrom.pm = '1'
214
+        } else if (name == '系统销毁红VR数') {
215
+          this.tableFrom.pm = '2'
216
+        } else if (name == '人工奖励红VR数') {
217
+          this.tableFrom.pm = '3'
218
+        } else if (name == '人工销毁红VR数') {
219
+          this.tableFrom.pm = '4'
220
+        }
221
+
222
+        this.getList(1)
223
+      },
224
+
225
+      // 重置
226
+      reset() {
227
+        this.tableFrom ={
228
+            uid: "",
229
+            date: "",
230
+            page: 1,
231
+            limit: 20,
232
+            type: "",
233
+            pm: ""
234
+          }
235
+        this.getList();
236
+      },
237
+      exportSearchResult() {
238
+        RewardExcelApi(this.paramsData).then(res => {
239
+          console.log( res.data)
240
+          console.log( res.data.path)
241
+          window.open( res.data.path)
242
+          // window.open(SettingMer.https + `/excel/download/0?token=` + getToken()+`&path=` + res.data.path)
243
+        }).catch((res) => {
244
+
245
+        })
246
+      },
247
+
248
+
249
+
250
+        // 表格某一行添加特定的样式
251
+        addTdClass(val) {
252
+            if (val.row.status > 0 && val.row.paid == 1) {
253
+                for (let i = 0; i < val.row.orderProduct.length; i++) {
254
+                    if (val.row.orderProduct[i].refund_num > 0 && val.row.orderProduct[i].refund_num < val.row.orderProduct[i].product_num) {
255
+                        return "row-bg";
256
+                    }
257
+                }
258
+            } else {
259
+                return " ";
260
+            }
261
+        },
262
+
263
+        // 导出
264
+        exportOrder() {
265
+            exportOrderApi(this.tableFrom)
266
+                .then((res) => {
267
+                    // this.$message.success(res.message);
268
+                    // this.fileVisible = true;
269
+                    // this.$refs.exportList.exportFileList();
270
+                  const h = this.$createElement;
271
+                  this.$msgbox({
272
+                    title: '提示',
273
+                    message: h('p', null, [
274
+                      h('span', null, '文件正在生成中,请稍后点击"'),
275
+                      h('span', { style: 'color: teal' }, '导出已生成列表'),
276
+                      h('span', null, '"查看~ '),
277
+                    ]),
278
+                    confirmButtonText: '我知道了',
279
+                  }).then(action => {
280
+
281
+                  });                })
282
+                .catch((res) => {
283
+                    this.$message.error(res.message);
284
+                });
285
+        },
286
+        getExportFileList() {
287
+            this.fileVisible = true;
288
+            this.$refs.exportList.exportFileList('order');
289
+        },
290
+
291
+        handleSelectionChange(val) {
292
+            this.selectionList = val;
293
+            const data = [];
294
+            this.selectionList.map((item) => {
295
+                data.push(item.order_id);
296
+            });
297
+            this.ids = data.join(",");
298
+        },
299
+        // 选择时间
300
+        selectChange(tab) {
301
+            this.timeVal = [];
302
+            this.tableFrom.date = tab;
303
+            this.getList(1);
304
+        },
305
+        // 具体日期
306
+        onchangeTime(e) {
307
+            this.timeVal = e;
308
+            this.tableFrom.date = e ? this.timeVal.join("-") : "";
309
+            this.getList(1);
310
+        },
311
+
312
+        // 列表
313
+        getList(num) {
314
+            this.tableFrom.page = num ? num : this.tableFrom.page;
315
+            getVrCountApi(this.tableFrom).then((res) => {
316
+                console.log(res,'aaaaa');
317
+                this.tableData.data = res.data.list;
318
+                this.tableData.total = res.data.count;
319
+
320
+                this.cardLists = [
321
+                  { info: '', name: 'VR奖励总数', count: res.data.statistics.all },
322
+                  { info: '', name: '兑换总数', count: res.data.statistics.clear },
323
+                  { info: '', name: '消耗总数', count: res.data.statistics.nclear },
324
+                  // { info: '', name: '已失效VR', count: res.data.statistics.lost },
325
+                  // {info: '', name: 'VR扣减总数', count: res.data.statistics.deduct},
326
+                  // {info: '', name: '剩余VR总数', count: res.data.statistics.all_mp1}
327
+                ]
328
+            }).catch((res) => {
329
+                this.$message.error(res.message);
330
+            });
331
+        },
332
+        pageChange(page) {
333
+            this.tableFrom.page = page;
334
+            this.getList('');
335
+        },
336
+        handleSizeChange(val) {
337
+            this.tableFrom.limit = val;
338
+            this.getList('');
339
+        },
340
+    }
341
+};
342
+</script>
343
+
344
+<style lang="scss" scoped>
345
+.selWidth {
346
+    width: 300px;
347
+}
348
+
349
+.el-dropdown-link {
350
+    cursor: pointer;
351
+    color: #409eff;
352
+    font-size: 12px;
353
+}
354
+
355
+.el-icon-arrow-down {
356
+    font-size: 12px;
357
+}
358
+
359
+.tabBox_tit {
360
+    width: 53%;
361
+    font-size: 12px !important;
362
+    margin: 0 2px 0 10px;
363
+    letter-spacing: 1px;
364
+    padding: 5px 0;
365
+    box-sizing: border-box;
366
+}
367
+
368
+/deep/.row-bg {
369
+    .cell {
370
+        color: red !important;
371
+    }
372
+}
373
+
374
+.filter-item {
375
+  width:50%;
376
+}
377
+
378
+
379
+.cancel-order-mark {
380
+    margin-top: 30px;
381
+
382
+    .cancel-order-select-reason {
383
+        height: 30px;
384
+    }
385
+
386
+    .canel-order-remark-input {
387
+        width: 75%;
388
+        margin-left: 35px;
389
+    }
390
+
391
+
392
+}
393
+
394
+.bottom-button {
395
+    margin-top: 30px;
396
+    margin-left: 300px;
397
+    width: 250px;
398
+    display: flex;
399
+    justify-content: space-between;
400
+  }
401
+
402
+.cancel-button {
403
+        display: flex;
404
+        justify-content: center;
405
+        margin-top: 20px;
406
+        gap:50px;
407
+        height: 30px;
408
+        // background-color: rebeccapurple;
409
+
410
+        .confirm {
411
+          width: 70px;
412
+          // height: 30px;
413
+        }
414
+        .cacnel-item {
415
+          width: 70px;
416
+          // height: 30px;
417
+        }
418
+    }
419
+
420
+.selected-kuang {
421
+  width: 500px;
422
+}
423
+
424
+
425
+.jiangjintotal {
426
+
427
+  display: flex;
428
+  flex-direction: column;
429
+  justify-content: center;
430
+  align-items: center;
431
+  margin-bottom: 10px;
432
+  border: 1px solid #999;
433
+  border-radius: 5px;
434
+  width: 150px;
435
+  height: 60px;
436
+  line-height: 25px;
437
+  margin-right: 10px;
438
+}
439
+
440
+.jiangjintotal .money {
441
+  font-size: 20px;
442
+}
443
+
444
+
445
+</style>