Bläddra i källkod

订单-订单列表-增加导出功能

sunxbiao 1 år sedan
förälder
incheckning
81b42ca96c
1 ändrade filer med 103 tillägg och 119 borttagningar
  1. 103 119
      src/views/order/list/index.vue

+ 103 - 119
src/views/order/list/index.vue

@@ -3,129 +3,101 @@
3 3
     <el-card class="box-card">
4 4
       <div slot="header" class="clearfix">
5 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>全部 {{
10
-                    '(' + orderChartType.all ? orderChartType.all : 0 + ')'
11
-                  }}
12
-                </el-radio-button>
13
-                <el-radio-button
14
-                    label="1"
15
-                >待付款 {{ '(' + orderChartType.unpaid ? orderChartType.unpaid : 0 + ')' }}
16
-                </el-radio-button>
17
-                <el-radio-button
18
-                    label="2"
19
-                >待发货 {{ '(' + orderChartType.unshipped ? orderChartType.unshipped : 0 + ')' }}
20
-                </el-radio-button>
21
-                <el-radio-button
22
-                    label="3"
23
-                >待收货 {{ '(' + orderChartType.untake ? orderChartType.untake : 0 + ')' }}
24
-                </el-radio-button>
25
-                <el-radio-button
26
-                    label="4"
27
-                >待评价 {{ '(' + orderChartType.unevaluate ? orderChartType.unevaluate : 0 + ')' }}
28
-                </el-radio-button>
29
-                <el-radio-button
30
-                    label="5"
31
-                >交易完成 {{ '(' + orderChartType.complete ? orderChartType.complete : 0 + ')' }}
32
-                </el-radio-button>
33
-                <el-radio-button
34
-                    label="6"
35
-                >已退款 {{ '(' + orderChartType.refund ? orderChartType.refund : 0 + ')' }}
36
-                </el-radio-button>
37
-                <el-radio-button
38
-                    label="7"
39
-                >已删除 {{ '(' + orderChartType.del ? orderChartType.del : 0 + ')' }}
40
-                </el-radio-button>
41
-              </el-radio-group>
42
-            </el-form-item>
43
-            <el-form-item label="时间选择:" class="width100">
44
-              <el-radio-group
45
-                  v-model="tableFrom.date"
46
-                  type="button"
47
-                  class="mr20"
48
-                  size="small"
49
-                  @change="selectChange(tableFrom.date)"
50
-              >
51
-                <el-radio-button
52
-                    v-for="(item,i) in fromList.fromTxt"
53
-                    :key="i"
54
-                    :label="item.val"
55
-                >{{ item.text }}
56
-                </el-radio-button>
57
-              </el-radio-group>
58
-              <el-date-picker
59
-                  v-model="timeVal"
60
-                  value-format="yyyy/MM/dd HH:mm:ss"
61
-                  format="yyyy/MM/dd HH:mm:ss"
62
-                  size="small"
63
-                  type="datetimerange"
64
-                  placement="bottom-end"
65
-                  placeholder="自定义时间"
66
-                  style="width: 250px;"
67
-                  @change="onchangeTime"
68
-              />
69
-            </el-form-item>
70
-            <el-form-item label="商户名称:">
71
-              <el-select
72
-                  v-model="tableFrom.mer_id"
73
-                  clearable
74
-                  filterable
75
-                  placeholder="请选择"
76
-                  class="selWidth"
77
-                  @change="getList(1)"
78
-              >
79
-                <el-option
80
-                    v-for="item in merSelect"
81
-                    :key="item.mer_id"
82
-                    :label="item.mer_name"
83
-                    :value="item.mer_id"
84
-                />
85
-              </el-select>
86
-            </el-form-item>
87
-            <el-form-item label="支付类型:" class="check-status">
88
-              <el-select v-model="tableFrom.pay_type" placeholder="全部" class="filter-item" @change="getList(1)">
89
-                <el-option label="全部" value=""/>
90
-                <el-option label="微信" :value="1"/>
91
-                <el-option label="支付宝" :value="4"/>
92
-                <!-- <el-option label="虚拟支付" :value="0" /> -->
6
+          <el-form size="small" label-width="100px" class="responsive-form">
7
+            <el-row>
8
+              <!-- 订单状态独占一行 -->
9
+              <!-- el-col span="24" 确保此项占满整行 -->
10
+              <el-col :span="24">
11
+                <el-form-item label="订单状态:">
12
+                  <el-radio-group v-model="tableFrom.status" type="button" @change="getList(1)">
13
+                    <el-radio-button label>全部 {{ '(' + (orderChartType.all || 0) + ')' }}</el-radio-button>
14
+                    <el-radio-button label="1">待付款 {{ '(' + (orderChartType.unpaid || 0) + ')' }}</el-radio-button>
15
+                    <el-radio-button label="2">待发货 {{ '(' + (orderChartType.unshipped || 0) + ')' }}</el-radio-button>
16
+                    <el-radio-button label="3">待收货 {{ '(' + (orderChartType.untake || 0) + ')' }}</el-radio-button>
17
+                    <el-radio-button label="4">待评价 {{ '(' + (orderChartType.unevaluate || 0) + ')' }}</el-radio-button>
18
+                    <el-radio-button label="5">交易完成 {{ '(' + (orderChartType.complete || 0) + ')' }}</el-radio-button>
19
+                    <el-radio-button label="6">已退款 {{ '(' + (orderChartType.refund || 0) + ')' }}</el-radio-button>
20
+                    <el-radio-button label="7">已删除 {{ '(' + (orderChartType.del || 0) + ')' }}</el-radio-button>
21
+                  </el-radio-group>
22
+                </el-form-item>
23
+              </el-col>
93 24
 
94
-                <!-- <el-option label="红积分兑换" :value="6" /> -->
95
-              </el-select>
96
-            </el-form-item>
25
+              <!-- 时间选择独占一行 -->
26
+              <!-- el-col span="24" 确保此项占满整行 -->
27
+              <el-col :span="24">
28
+                <el-form-item label="时间选择:">
29
+                  <el-radio-group v-model="tableFrom.date" type="button" size="small"
30
+                                  @change="selectChange(tableFrom.date)">
31
+                    <el-radio-button v-for="(item, i) in fromList.fromTxt" :key="i" :label="item.val">{{
32
+                        item.text
33
+                      }}
34
+                    </el-radio-button>
35
+                  </el-radio-group>
36
+                  <el-date-picker v-model="timeVal" value-format="yyyy/MM/dd HH:mm:ss" format="yyyy/MM/dd HH:mm:ss"
37
+                                  size="small" type="datetimerange" placement="bottom-end" placeholder="自定义时间"
38
+                                  style="width: 250px;" @change="onchangeTime"/>
39
+                </el-form-item>
40
+              </el-col>
97 41
 
98
-            <el-form-item label="关键字:" class="width100">
99
-              <el-input
100
-                  v-model="tableFrom.keywords"
101
-                  placeholder="请输入订单号/收货人/联系方式"
102
-                  class="selWidth"
103
-                  size="small"
104
-              >
105
-                <el-button slot="append" icon="el-icon-search" size="small" @click="getList(1)"/>
106
-              </el-input>
107
-            </el-form-item>
108
-            <el-form-item label="用户信息:" class="width100">
109
-              <el-input
110
-                  v-model="tableFrom.username"
111
-                  placeholder="请输入用户昵称/手机号"
112
-                  class="selWidth"
113
-                  size="small"
114
-              >
115
-                <el-button slot="append" icon="el-icon-search" size="small" @click="getList(1)"/>
116
-              </el-input>
117
-            </el-form-item>
118
-            <el-form-item label="支付状态:" class="check-status">
119
-              <el-select v-model="tableFrom.paid" placeholder="全部" class="filter-item" @change="getList(1)">
120
-                <el-option label="全部" value=""/>
121
-                <el-option label="已支付" :value="1"/>
122
-                <el-option label="未支付" :value="0"/>
123
-                <!-- <el-option label="虚拟支付" :value="0" /> -->
42
+              <!-- 其余项自适应宽度: xs=1列, sm=2列, md=3列, lg=3列 -->
43
+              <!-- 注意:lg 的 span 从 6 改为 8 -->
44
+              <el-col :xs="24" :sm="12" :md="8" :lg="8">
45
+                <el-form-item label="商户名称:">
46
+                  <el-select v-model="tableFrom.mer_id" clearable filterable placeholder="请选择" @change="getList(1)">
47
+                    <el-option v-for="item in merSelect" :key="item.mer_id" :label="item.mer_name" :value="item.mer_id"/>
48
+                  </el-select>
49
+                </el-form-item>
50
+              </el-col>
51
+              <el-col :xs="24" :sm="12" :md="8" :lg="8">
52
+                <el-form-item label="支付类型:" class="check-status">
53
+                  <el-select v-model="tableFrom.pay_type" placeholder="全部" @change="getList(1)">
54
+                    <el-option label="全部" value=""/>
55
+                    <el-option label="微信" :value="1"/>
56
+                    <el-option label="支付宝" :value="4"/>
57
+                  </el-select>
58
+                </el-form-item>
59
+              </el-col>
60
+              <el-col :xs="24" :sm="12" :md="8" :lg="8">
61
+                <el-form-item label="支付状态:" class="check-status">
62
+                  <el-select v-model="tableFrom.paid" placeholder="全部" @change="getList(1)">
63
+                    <el-option label="全部" value=""/>
64
+                    <el-option label="已支付" :value="1"/>
65
+                    <el-option label="未支付" :value="0"/>
66
+                  </el-select>
67
+                </el-form-item>
68
+              </el-col>
69
+              <el-col :xs="24" :sm="12" :md="8" :lg="8">
70
+                <el-form-item label="关键字:">
71
+                  <el-input v-model="tableFrom.keywords" placeholder="请输入订单号/收货人/联系方式" size="small">
72
+                    <el-button slot="append" icon="el-icon-search" size="small" @click="getList(1)"/>
73
+                  </el-input>
74
+                </el-form-item>
75
+              </el-col>
76
+              <el-col :xs="24" :sm="12" :md="8" :lg="8">
77
+                <el-form-item label="用户信息:">
78
+                  <el-input v-model="tableFrom.username" placeholder="请输入用户昵称/手机号" size="small">
79
+                    <el-button slot="append" icon="el-icon-search" size="small" @click="getList(1)"/>
80
+                  </el-input>
81
+                </el-form-item>
82
+              </el-col>
83
+              <!-- 如果还有其他表单项,也放在这个 el-row 中并配置合适的响应式 span -->
124 84
 
125
-                <!-- <el-option label="红积分兑换" :value="6" /> -->
126
-              </el-select>
127
-            </el-form-item>
85
+              <!-- 搜索按钮或其他不属于网格布局的元素可以放在 el-row 之外,或者放在 el-row 中配合 el-col 布局 -->
86
+              <!-- 例如,如果您希望搜索按钮也参与布局,可以这样 -->
87
+<!--              <el-col :xs="24" :sm="12" :md="8" :lg="8">-->
88
+<!--                <el-form-item>-->
89
+<!--                  <el-button size="small" type="primary" @click="getList(1)">搜索</el-button>-->
90
+<!--                  &lt;!&ndash; 其他按钮 &ndash;&gt;-->
91
+<!--                </el-form-item>-->
92
+<!--              </el-col>-->
93
+            </el-row>
128 94
           </el-form>
95
+
96
+          <div class="bottom-button">
97
+            <el-button size="mini" type="primary" style="width: 100px; margin-top: 20px;" @click="exportSearchResult">
98
+              导出
99
+            </el-button>
100
+          </div>
129 101
         </div>
130 102
         <!-- <cards-data :card-lists="cardLists" /> -->
131 103
         <redCards-data :card-lists="cardLists" class="orderCount-box"/>
@@ -322,6 +294,7 @@ export default {
322 294
         order_ids: "",
323 295
         page: 1,
324 296
         limit: 20,
297
+        is_excel: 0
325 298
       },
326 299
       orderChartType: {},
327 300
       timeVal: [],
@@ -497,6 +470,17 @@ export default {
497 470
             this.$message.error(res.message);
498 471
           });
499 472
     },
473
+    exportSearchResult() {
474
+      this.tableFrom.is_excel = 1;
475
+      orderListApi(this.tableFrom).then((res) => {
476
+        this.tableFrom.is_excel = 0;
477
+        this.$message.success('导出成功')
478
+        window.open(res.data.path)
479
+      }).catch(() => {
480
+        this.tableFrom.is_excel = 0;
481
+        this.$message.error('导出失败');
482
+      })
483
+    },
500 484
   },
501 485
 };
502 486
 </script>