Ver código fonte

新增话费模块

xialei 1 ano atrás
pai
commit
9950196c08

+ 8 - 0
src/api/order.js

@@ -41,6 +41,14 @@ export function VipOrderListApi(data) {
41 41
 export function TBOrderListApi(data) {
42 42
   return request.get(`third/order/tb`, data)
43 43
 }
44
+
45
+/**
46
+ * @description 订单 -- 列表 -- 话费
47
+ */
48
+export function HFOrderListApi(data) {
49
+  return request.get(`third/order/hf`, data)
50
+}
51
+
44 52
 /**
45 53
  * @description 订单 -- 表头
46 54
  */

+ 23 - 0
src/filters/commFilter.js

@@ -145,6 +145,29 @@ export function takeOrderStatusFilter(status) {
145 145
 
146 146
 
147 147
 /**
148
+ * @description 话费的订单状态
149
+ */
150
+export function HFOrderStatusFilter(status) {
151
+  const statusMap = {
152
+    '0': '待支付',
153
+    '1': '已付充值中',
154
+    '2': '充值成功',
155
+    '3': '充值失败需要退款',
156
+    '4': '退款成功',
157
+    '5': '已超时',
158
+    '6': '待充值',
159
+    '7': '已匹配',
160
+    '8': '已存单',
161
+    '9': '已取消',
162
+    '10': '返销',
163
+    '11': '部分到账',
164
+    '12': '取消中',
165
+  }
166
+  return statusMap[status]
167
+}
168
+
169
+
170
+/**
148 171
  * @description 京东的订单状态
149 172
  */
150 173
 export function JDOrderStatusFilter(status) {

+ 8 - 0
src/router/modules/order.js

@@ -84,6 +84,14 @@ const orderRouter =
84 84
         },
85 85
         component: () => import('@/views/order/tb/index')
86 86
       },
87
+      {
88
+        path: 'huafei',
89
+        name: 'OrderHuafei',
90
+        meta: {
91
+          title: '话费'
92
+        },
93
+        component: () => import('@/views/order/huafei/index')
94
+      },
87 95
     ]
88 96
   }
89 97
 

+ 370 - 0
src/views/order/huafei/index.vue

@@ -0,0 +1,370 @@
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="订单状态:">
8
+              <el-radio-group v-model="tableFrom.status" type="button" @change="getList(1)">
9
+                <el-radio-button label="0">待支付 </el-radio-button>
10
+                <el-radio-button label="1">已付充值中</el-radio-button>
11
+                <el-radio-button label="2">充值成功 </el-radio-button>
12
+                <el-radio-button label="3">充值失败需要退款 </el-radio-button>
13
+                <el-radio-button label="4">退款成功 </el-radio-button>
14
+                <el-radio-button label="5">已超时 </el-radio-button>
15
+                <el-radio-button label="6">待充值 </el-radio-button>
16
+                <el-radio-button label="7">已匹配 </el-radio-button>
17
+                <el-radio-button label="8">已存单 </el-radio-button>
18
+                <el-radio-button label="9">已取消</el-radio-button>
19
+                <el-radio-button label="10">返销</el-radio-button>
20
+                <el-radio-button label="11">部分到账</el-radio-button>
21
+                <el-radio-button label="12">取消中</el-radio-button>
22
+              </el-radio-group>
23
+            </el-form-item>
24
+            <el-form-item label="返金状态:">
25
+              <el-radio-group v-model="tableFrom.bill_status" type="button" @change="getList(1)">
26
+                <el-radio-button label="0">平台未结算</el-radio-button>
27
+                <el-radio-button label="1">已结算</el-radio-button>
28
+                <el-radio-button label="2">失效</el-radio-button>
29
+              </el-radio-group>
30
+            </el-form-item>
31
+            <el-form-item label="时间选择:" class="width100">
32
+              <el-radio-group
33
+                v-model="tableFrom.date"
34
+                type="button"
35
+                class="mr20"
36
+                size="small"
37
+                @change="selectChange(tableFrom.date)"
38
+              >
39
+                <el-radio-button
40
+                  v-for="(item,i) in fromList.fromTxt"
41
+                  :key="i"
42
+                  :label="item.val"
43
+                >{{ item.text }}</el-radio-button>
44
+              </el-radio-group>
45
+              <el-date-picker
46
+                v-model="timeVal"
47
+                value-format="yyyy/MM/dd"
48
+                format="yyyy/MM/dd"
49
+                size="small"
50
+                type="daterange"
51
+                placement="bottom-end"
52
+                placeholder="自定义时间"
53
+                style="width: 250px;"
54
+                @change="onchangeTime"
55
+              />
56
+            </el-form-item>
57
+            <el-form-item label="关键字:" class="width100">
58
+              <el-input
59
+                v-model="tableFrom.keywords"
60
+                placeholder="请输入关键字搜索手机号/uid"
61
+                class="selWidth"
62
+                size="small"
63
+              >
64
+                <el-button slot="append" icon="el-icon-search" size="small" @click="getList(1)" />
65
+              </el-input>
66
+            </el-form-item>
67
+            <el-form-item label="订单号:" class="width100">
68
+              <el-input
69
+                v-model="tableFrom.order_sn"
70
+                placeholder="请输入订单号"
71
+                class="selWidth"
72
+                size="small"
73
+              >
74
+                <el-button slot="append" icon="el-icon-search" size="small" @click="getList(1)" />
75
+              </el-input>
76
+            </el-form-item>
77
+            <el-form-item>
78
+              <el-button class="ResetSearch mr10" size="small" @click="reset('tableFrom')">重置</el-button>
79
+            </el-form-item>
80
+          </el-form>
81
+        </div>
82
+      </div>
83
+      <el-table
84
+        v-loading="listLoading"
85
+        :data="tableData.data"
86
+        style="width: 100%"
87
+        size="mini"
88
+        class="table"
89
+        highlight-current-row
90
+        :cell-class-name="addTdClass"
91
+      >
92
+        <el-table-column prop="order_huafei_id" label="订单id" min-width="100" />
93
+        <el-table-column label="UID" min-width="60">
94
+          <template slot-scope="scope">
95
+            <span>{{ scope.row.uid}}</span>
96
+          </template>
97
+        </el-table-column>
98
+        <!-- <el-table-column prop="pid" label="推广者pid" min-width="100" /> -->
99
+        <el-table-column label="账号" min-width="120">
100
+          <template slot-scope="scope">
101
+            <span>{{ scope.row.account}}</span>
102
+          </template>
103
+        </el-table-column>
104
+        <el-table-column label="订单编号" min-width="170">
105
+          <template slot-scope="scope">
106
+            <span style="display: block;" v-text="scope.row.order_sn" />
107
+          </template>
108
+        </el-table-column>
109
+        <el-table-column prop="order_number" label="平台单号" min-width="160" />
110
+        <el-table-column prop="amount_price" label="充值金额" min-width="100" />
111
+        <el-table-column prop="fanli_price" label="返利金额" min-width="130" />
112
+        <el-table-column prop="cost_price" label="成本金额" min-width="130" />
113
+        <el-table-column prop="arrived_amount" label="到账金额" min-width="130" />
114
+        <el-table-column prop="pay_money" label="实际金额" min-width="130" />
115
+        <el-table-column prop="commission" label="订单总佣金" min-width="130" />
116
+        <el-table-column label="订单状态" min-width="90">
117
+          <template slot-scope="scope">
118
+            <span>{{ scope.row.status | HFOrderStatusFilter }}</span>
119
+          </template>
120
+        </el-table-column>
121
+        <el-table-column label="返金状态" min-width="90">
122
+          <template slot-scope="scope">
123
+            <span>{{ scope.row.bill_status == 0 ? "平台未结算" : scope.row.bill_status == 1 ? "已结算" : "失效" }}</span>
124
+          </template>
125
+        </el-table-column>
126
+        <el-table-column prop="create_time" label="下单时间" min-width="150" />
127
+        <el-table-column label="操作" min-width="80" fixed="right" align="center">
128
+          <template slot-scope="scope">
129
+            <el-button type="text" size="small" @click="onOrderDetails(scope.row.order_huafei_id)">详情</el-button>
130
+          </template>
131
+        </el-table-column>
132
+      </el-table>
133
+      <div class="block">
134
+        <el-pagination
135
+          :page-sizes="[20, 40, 60, 80]"
136
+          :page-size="tableFrom.limit"
137
+          :current-page="tableFrom.page"
138
+          layout="total, sizes, prev, pager, next, jumper"
139
+          :total="tableData.total"
140
+          @size-change="handleSizeChange"
141
+          @current-change="pageChange"
142
+        />
143
+      </div>
144
+    </el-card>
145
+    <!--详情-->
146
+    <details-from ref="orderDetail" />
147
+  </div>
148
+</template>
149
+
150
+<script>
151
+import { HFOrderListApi, chartApi } from "@/api/order";
152
+import { merSelectApi } from "@/api/product";
153
+import detailsFrom from "./orderDetail";  
154
+// import cardsData from "@/components/cards/index";
155
+import { fromList } from "@/libs/constants.js";
156
+export default {
157
+  components: { detailsFrom },
158
+  data() {
159
+    return {
160
+      orderId: 0,
161
+      tableData: {
162
+        data: [],
163
+        total: 0,
164
+      },
165
+      listLoading: true,
166
+      tableFrom: {
167
+        order_sn: this.$route.query.order_sn ? this.$route.query.order_sn : "", // 订单号
168
+        keywords: "", // 关键字搜索商品名/uid
169
+        status: '', //  1:未知,2.无效-拆单,3.无效-取消,4.无效-京东帮帮主订单,5.无效-账号异常,6.无效-赠品类目不返佣,7.无效-校园订单,8.无效-企业订单,9.无效-团购订单,11.无效-乡村推广员下单,13.无效-违规订单,14.无效-来源与备案网址不符,15.待付款,16.已付款,17.已完成(购买用户确认收货),20.无效-此复购订单对应的首购订单无效,21.无效-云店订单
170
+        date: "", // 时间
171
+        page: 1, // 页
172
+        limit: 20, // 限制条数,
173
+        bill_status: '' // 0平台未结算1已结算2失效 默认不传此参数
174
+      },
175
+      orderChartType: {},
176
+      timeVal: [],
177
+      fromList: fromList,
178
+      selectionList: [],
179
+      ids: "",
180
+      tableFromLog: {
181
+        page: 1,
182
+        limit: 10,
183
+      },
184
+      tableDataLog: {
185
+        data: [],
186
+        total: 0,
187
+      },
188
+      LogLoading: false,
189
+      dialogVisible: false,
190
+      cardLists: [],
191
+      orderDatalist: null,
192
+      merSelect: [],
193
+    };
194
+  },
195
+  mounted() {
196
+    if (this.$route.query.hasOwnProperty("order_sn")) {
197
+      this.tableFrom.order_sn = this.$route.query.order_sn;
198
+    } else {
199
+      this.tableFrom.order_sn = "";
200
+    }
201
+    this.headerList();
202
+    this.getMerSelect();
203
+    this.getList();
204
+  },
205
+  // 被缓存接收参数
206
+  activated() {
207
+    if (this.$route.query.hasOwnProperty("order_sn")) {
208
+      this.tableFrom.order_sn = this.$route.query.order_sn;
209
+    } else {
210
+      this.tableFrom.order_sn = "";
211
+    }
212
+    this.headerList();
213
+    this.getMerSelect();
214
+    this.getList();
215
+  },
216
+  methods: {
217
+    // 退款详情页
218
+    onRefundDetail(sn) {
219
+      console.log(sn, "sn");
220
+      this.$router.push({
221
+        path: "refund",
222
+        query: {
223
+          sn: sn,
224
+        },
225
+      });
226
+    },
227
+    // 订单筛选
228
+    orderFilter(item) {
229
+      let status = false;
230
+      item.orderProduct.forEach((el) => {
231
+        if (el.refund_num > 0 && el.refund_num < el.product_num) {
232
+          status = true;
233
+        }
234
+      });
235
+      return status;
236
+    },
237
+    // 表格某一行添加特定的样式
238
+    addTdClass(val) {
239
+      if (val.row.status > 0 && val.row.paid == 1) {
240
+        for (let i = 0; i < val.row.orderProduct.length; i++) {
241
+          if (val.row.orderProduct[i].refund_num > 0 && val.row.orderProduct[i].refund_num < val.row.orderProduct[i].product_num) {
242
+            return "row-bg";
243
+          }
244
+        }
245
+      } else {
246
+        return " ";
247
+      }
248
+    },
249
+    // 商户列表;
250
+    getMerSelect() {
251
+      merSelectApi()
252
+        .then((res) => {
253
+          this.merSelect = res.data;
254
+        })
255
+        .catch((res) => {
256
+          this.$message.error(res.message);
257
+        });
258
+    },
259
+    // 详情
260
+    onOrderDetails(id) {
261
+      this.orderId = id;
262
+      this.$refs.orderDetail.dialogVisible = true;
263
+      this.$refs.orderDetail.onOrderDetails(id);
264
+    },
265
+    pageChangeLog(page) {
266
+      this.tableFromLog.page = page;
267
+      this.getList();
268
+    },
269
+    handleSizeChangeLog(val) {
270
+      this.tableFromLog.limit = val;
271
+      this.getList();
272
+    },
273
+    // 选择时间
274
+    selectChange(tab) {
275
+      this.tableFrom.date = tab;
276
+      this.tableFrom.page = 1;
277
+      this.timeVal = [];
278
+      this.getList();
279
+    },
280
+    // 具体日期
281
+    onchangeTime(e) {
282
+      this.timeVal = e;
283
+      this.tableFrom.date = e ? this.timeVal.join("-") : "";
284
+      this.tableFrom.page = 1;
285
+      this.getList();
286
+    },
287
+    // 列表
288
+    getList(num) {
289
+      this.listLoading = true;
290
+      this.tableFrom.page = num ? num : this.tableFrom.page;
291
+      HFOrderListApi(this.tableFrom)
292
+        .then((res) => {
293
+          this.tableData.data = res.data.list;
294
+          this.tableData.total = res.data.count;
295
+          this.listLoading = false;
296
+        })
297
+        .catch((res) => {
298
+          this.$message.error(res.message);
299
+          this.listLoading = false;
300
+        });
301
+    },
302
+    pageChange(page) {
303
+      this.tableFrom.page = page;
304
+      this.getList();
305
+    },
306
+    handleSizeChange(val) {
307
+      this.tableFrom.limit = val;
308
+      this.getList();
309
+    },
310
+    headerList() {
311
+      chartApi()
312
+        .then((res) => {
313
+          this.orderChartType = res.data;
314
+        })
315
+        .catch((res) => {
316
+          this.$message.error(res.message);
317
+        });
318
+    },
319
+    // 重置
320
+    reset() {
321
+      this.tableFrom = {
322
+        order_sn: this.$route.query.order_sn ? this.$route.query.order_sn : "", // 订单号
323
+        keywords: "", // 关键字搜索商品名/uid
324
+        status: '', //  1:未知,2.无效-拆单,3.无效-取消,4.无效-京东帮帮主订单,5.无效-账号异常,6.无效-赠品类目不返佣,7.无效-校园订单,8.无效-企业订单,9.无效-团购订单,11.无效-乡村推广员下单,13.无效-违规订单,14.无效-来源与备案网址不符,15.待付款,16.已付款,17.已完成(购买用户确认收货),20.无效-此复购订单对应的首购订单无效,21.无效-云店订单
325
+        date: "", // 时间
326
+        page: 1, // 页
327
+        limit: 20, // 限制条数,
328
+        bill_status: '' // 0平台未结算1已结算2失效 默认不传此参数
329
+      }
330
+      this.getList()
331
+    },
332
+  },
333
+};
334
+</script>
335
+
336
+<style lang="scss" scoped>
337
+.demo-table-expand {
338
+  /deep/ label {
339
+    width: 83px !important;
340
+  }
341
+}
342
+.selWidth {
343
+  width: 300px;
344
+}
345
+.el-dropdown-link {
346
+  cursor: pointer;
347
+  color: #409eff;
348
+  font-size: 12px;
349
+}
350
+.el-icon-arrow-down {
351
+  font-size: 12px;
352
+}
353
+.tabBox_tit {
354
+  width: 60%;
355
+  font-size: 12px !important;
356
+  margin: 0 2px 0 10px;
357
+  letter-spacing: 1px;
358
+  padding: 5px 0;
359
+  box-sizing: border-box;
360
+}
361
+
362
+/deep/.row-bg {
363
+  .cell {
364
+    color: red !important;
365
+  }
366
+}
367
+/deep/ .el-radio-button--small .el-radio-button__inner{
368
+  padding:9px 10px;
369
+}
370
+</style>

+ 132 - 0
src/views/order/huafei/orderDetail.vue

@@ -0,0 +1,132 @@
1
+<template>
2
+  <div>
3
+    <el-dialog
4
+      title="订单信息"
5
+      :visible.sync="dialogVisible"
6
+      width="700px"
7
+      v-if="dialogVisible"
8
+    >
9
+      <div v-loading="loading">
10
+        <div class="description" v-if="orderDatalist">
11
+          <div class="title">订单信息</div>
12
+          <div class="acea-row">
13
+            <div class="description-term">订单id:{{ orderDatalist.order_huafei_id }}</div>
14
+            <div class="description-term">UID:{{ orderDatalist.uid }}</div>
15
+            <div class="description-term">pid:{{ orderDatalist.p_id ?orderDatalist.p_id : '无'}}</div>
16
+            <div class="description-term">订单编号:{{ orderDatalist.order_sn }}</div>
17
+            <div class="description-term">平台单号: {{ orderDatalist.order_number }}</div>
18
+            <div class="description-term">充值金额: {{ orderDatalist.amount_price }}</div>
19
+            <div class="description-term">返利金额: {{ orderDatalist.fanli_price }}</div>
20
+            <div class="description-term">成本金额: {{ orderDatalist.cost_price }}</div>
21
+            <div class="description-term">到账金额: {{ orderDatalist.arrived_amount }}</div>
22
+            <div class="description-term">实际金额: {{ orderDatalist.pay_money }}</div>
23
+            <div class="description-term">订单状态:{{ orderDatalist.status | HFOrderStatusFilter }}</div>
24
+            <div class="description-term">创建时间:{{ orderDatalist.create_time }}</div>
25
+            <div class="description-term">完成时间:{{ orderDatalist.finish_time }}</div>
26
+            <div class="description-term">修改时间{{ orderDatalist.modify_time }}</div>
27
+            <!-- <div class="description-term">商家名称:{{ orderDatalist.shop_name }}</div>
28
+            <div class="description-term">商家id:{{ orderDatalist.shop_id }}</div> -->
29
+            <div class="description-term">佣金比例:{{ orderDatalist.commission_share }}</div>
30
+            <div class="description-term">佣金金额:{{ orderDatalist.commission }}</div>
31
+            <div class="description-term">养老金:{{ orderDatalist.yanglao }}</div>
32
+            <div class="description-term">返金状态:{{ orderDatalist.bill_status == 0 ? "平台未结算" : orderDatalist.bill_status == 1 ? "已结算" : "失效"  }}</div>
33
+            <div class="description-term">平台结算时间:{{ orderDatalist.bill_create_time }}</div>
34
+            <div class="description-term">平台可以进行结算的时间:{{ orderDatalist.bill_end_time }}</div>
35
+          </div>
36
+        </div>
37
+      </div>
38
+    </el-dialog>
39
+  </div>
40
+</template>
41
+
42
+<script>
43
+import { getExpress, thirdOrderDetailApi } from '@/api/order'
44
+export default {
45
+  name: 'OrderDetail',
46
+  data() {
47
+    return {
48
+      dialogVisible: false,
49
+      loading: false,
50
+      orderDatalist: null
51
+    }
52
+  },
53
+  mounted() {
54
+  },
55
+  methods: {
56
+    onOrderDetails(id) {
57
+      this.loading = true
58
+      thirdOrderDetailApi(id,{
59
+        table: 'huafei', // tb 淘宝订单详情, jd 京东, vip 唯品会, pdd 拼多多, su  苏宁 huafei 话费
60
+      }).then(res => {  
61
+        this.orderDatalist = res.data
62
+        this.loading = false
63
+      }).catch(({ message }) => {
64
+        this.loading = false
65
+        this.$message.error(message)
66
+      })
67
+    }
68
+  }
69
+}
70
+</script>
71
+
72
+<style scoped lang="scss">
73
+.title{
74
+  margin-bottom: 16px;
75
+  color: #17233d;
76
+  font-weight: 500;
77
+  font-size: 14px;
78
+}
79
+.description{
80
+  &-term {
81
+    display: table-cell;
82
+    padding-bottom: 10px;
83
+    line-height: 20px;
84
+    width: 50%;
85
+    font-size: 12px;
86
+  }
87
+}
88
+.logistics{
89
+  align-items: center;
90
+  padding: 10px 0px;
91
+  .logistics_img{
92
+    width: 45px;
93
+    height: 45px;
94
+    margin-right: 12px;
95
+    img{
96
+      width: 100%;
97
+      height: 100%;
98
+    }
99
+  }
100
+  .logistics_cent{
101
+    span{
102
+      display: block;
103
+      font-size: 12px;
104
+    }
105
+  }
106
+}
107
+.trees-coadd{
108
+  width: 100%;
109
+  height: 400px;
110
+  border-radius: 4px;
111
+  overflow: hidden;
112
+  .scollhide{
113
+    width: 100%;
114
+    height: 100%;
115
+    overflow: auto;
116
+    margin-left: 18px;
117
+    padding: 10px 0 10px 0;
118
+    box-sizing: border-box;
119
+    .content{
120
+      font-size: 12px;
121
+    }
122
+    .time{
123
+      font-size: 12px;
124
+      color: #2d8cf0;
125
+    }
126
+  }
127
+}
128
+.scollhide::-webkit-scrollbar {
129
+  display: none; /* Chrome Safari */
130
+}
131
+
132
+</style>