|
29 | 29 | </el-col>
|
30 | 30 | <el-col :span="6" :xs="24">
|
31 | 31 | <el-form-item label="订单来源">
|
32 |
| - <el-select v-model="queryParams.orderSource" clearable style="width: 240px"> |
33 |
| - <el-option v-for="dict in dicData.orderSource" v-bind="dict" :key="dict.value"/> |
| 32 | + <el-select v-model="queryParams.terminal" clearable style="width: 240px"> |
| 33 | + <el-option v-for="dict in this.getDictDatas(DICT_TYPE.TERMINAL)" |
| 34 | + :key="dict.value" :label="dict.label" :value="dict.value"/> |
34 | 35 | </el-select>
|
35 | 36 | </el-form-item>
|
36 | 37 | </el-col>
|
37 | 38 | <el-col :span="6" :xs="24">
|
38 |
| - <el-form-item label="付款方式"> |
39 |
| - <el-select v-model="queryParams.payWay" clearable style="width: 240px"> |
40 |
| - <el-option v-for="dict in dicData.payWay" v-bind="dict" :key="dict.value"/> |
41 |
| - </el-select> |
42 |
| - </el-form-item> |
43 |
| - </el-col> |
44 |
| - <el-col :span="6" :xs="24"> |
45 |
| - <el-form-item label="营销类型"> |
46 |
| - <el-select v-model="queryParams.marketingType" clearable style="width: 240px"> |
47 |
| - <el-option v-for="dict in dicData.marketingType" v-bind="dict" :key="dict.value"/> |
| 39 | + <el-form-item label="支付方式"> |
| 40 | + <el-select v-model="queryParams.payChannelCode" clearable style="width: 240px"> |
| 41 | + <el-option v-for="dict in this.getDictDatas(DICT_TYPE.PAY_CHANNEL_CODE_TYPE)" |
| 42 | + :key="dict.value" :label="dict.label" :value="dict.value"/> |
48 | 43 | </el-select>
|
49 | 44 | </el-form-item>
|
50 | 45 | </el-col>
|
51 | 46 | <el-col :span="6" :xs="24">
|
52 | 47 | <el-form-item label="下单时间">
|
53 | 48 | <el-date-picker v-model="queryParams.date" type="daterange" range-separator="至"
|
54 |
| - start-placeholder="开始日期" end-placeholder="结束日期" :picker-options="rangePickerOptions" style="width: 240px"/> |
| 49 | + start-placeholder="开始日期" end-placeholder="结束日期" :picker-options="datePickerOptions" style="width: 240px"/> |
55 | 50 | </el-form-item>
|
56 | 51 | </el-col>
|
57 | 52 | <el-col :span="6" :xs="24" style="line-height: 32px">
|
58 | 53 | <el-button type="primary" icon="el-icon-search" size="mini">搜索</el-button>
|
59 | 54 | <el-button icon="el-icon-refresh" size="mini">重置</el-button>
|
60 |
| - <el-button icon="el-icon-document" size="mini">导出订单</el-button> |
61 | 55 | </el-col>
|
62 | 56 | </el-form>
|
63 | 57 | </el-row>
|
|
66 | 60 | <el-tabs v-model="activeTabName" type="card">
|
67 | 61 | <el-tab-pane v-for="tabPane in tabPanes" :label="tabPane.text" :name="tabPane.name">
|
68 | 62 | <!-- table -->
|
69 |
| - <el-table :data="tableData" :show-header="false" class="order-table"> |
| 63 | + <el-table :data="list" :show-header="false" class="order-table"> |
70 | 64 | <el-table-column>
|
71 | 65 | <template slot-scope="{ row }">
|
72 | 66 | <el-row type="flex" align="middle">
|
73 | 67 | <el-col :span="5">
|
74 |
| - 订单号:{{row.orderNo}} |
75 |
| - <el-popover title="支付流水号:" :content="row.orderNo" placement="right" width="200" trigger="click"> |
| 68 | + 订单号:{{row.no}} |
| 69 | + <el-popover title="支付单号:" :content="row.payOrderId + ''" placement="right" width="200" trigger="click"> |
76 | 70 | <el-button slot="reference" type="text">更多</el-button>
|
77 | 71 | </el-popover>
|
78 | 72 | </el-col>
|
79 |
| - <el-col :span="5">下单时间:{{row.time}}</el-col> |
80 |
| - <el-col :span="4">订单来源:{{row.orderSource}}</el-col> |
81 |
| - <el-col :span="4">支付方式:{{row.payWay}}</el-col> |
| 73 | + <el-col :span="5">下单时间:{{ parseTime(row.createTime) }}</el-col> |
| 74 | + <el-col :span="4">订单来源: |
| 75 | + <dict-tag :type="DICT_TYPE.TERMINAL" :value="row.terminal" /> |
| 76 | + </el-col> |
| 77 | + <el-col :span="4">支付方式: |
| 78 | + <dict-tag v-if="row.payChannelCode" :type="DICT_TYPE.PAY_CHANNEL_CODE_TYPE" :value="row.payChannelCode" /> |
| 79 | + <span v-else>未支付</span> |
| 80 | + </el-col> |
82 | 81 | <el-col :span="6" align="right">
|
83 |
| - <el-button type="text">关闭订单</el-button> |
84 |
| - <el-button type="text">修改地址</el-button> |
85 |
| - <el-button type="text">调整价格</el-button> |
| 82 | + <el-button type="text" @click="goToDetail(row)">详情</el-button> |
86 | 83 | <el-dropdown style="margin-left: 10px">
|
87 | 84 | <el-button type="text">
|
88 | 85 | 更多操作<i class="el-icon-arrow-down el-icon--right"></i>
|
89 | 86 | </el-button>
|
90 | 87 | <el-dropdown-menu slot="dropdown">
|
91 |
| - <el-dropdown-item><el-button type="text">打印发货单</el-button></el-dropdown-item> |
92 |
| - <el-dropdown-item><el-button type="text" @click="goToDetail(row)">详情</el-button></el-dropdown-item> |
| 88 | + <!-- TODO @芋艿:【暂未开发】关闭订单 --> |
| 89 | + <el-dropdown-item><el-button type="text">关闭订单</el-button></el-dropdown-item> |
| 90 | + <!-- TODO @芋艿:【暂未开发】修改地址 --> |
| 91 | + <el-dropdown-item><el-button type="text">修改地址</el-button></el-dropdown-item> |
| 92 | + <!-- TODO @芋艿:【暂未开发】调整价格 --> |
| 93 | + <el-dropdown-item><el-button type="text">调整价格</el-button></el-dropdown-item> |
| 94 | + <!-- TODO @芋艿:【暂未开发】备注 --> |
93 | 95 | <el-dropdown-item><el-button type="text">备注</el-button></el-dropdown-item>
|
| 96 | + <!-- TODO @芋艿:【暂未开发】关闭订单 --> |
| 97 | + <el-dropdown-item><el-button type="text">打印发货单</el-button></el-dropdown-item> |
94 | 98 | </el-dropdown-menu>
|
95 | 99 | </el-dropdown>
|
96 | 100 | </el-col>
|
97 | 101 | </el-row>
|
98 | 102 | <!-- 订单下的商品 -->
|
99 |
| - <el-table :data="row.goods" border :show-header="true"> |
| 103 | + <el-table :data="row.items" border :show-header="true"> |
100 | 104 | <el-table-column label="商品" prop="goods" header-align="center" width="auto" min-width="300">
|
101 | 105 | <template slot-scope="{ row, $index }">
|
102 | 106 | <div class="goods-info">
|
103 |
| - <img :src="row.picture"/> |
104 |
| - <span class="ellipsis-2" :title="row.name">{{row.name}}</span> |
| 107 | + <img :src="row.picUrl"/> |
| 108 | + <span class="ellipsis-2" :title="row.spuName">{{row.spuName}}</span> |
| 109 | + <!-- TODO @小程:下面是商品属性,想当度一行,放在商品名下面 --> |
| 110 | + <el-tag size="medium" v-for="property in row.properties">{{property.propertyName}}:{{property.valueName}}</el-tag> |
105 | 111 | </div>
|
106 | 112 | </template>
|
107 | 113 | </el-table-column>
|
108 | 114 | <el-table-column label="单价(元)/数量" prop="fee" align="center" width="115">
|
109 | 115 | <template slot-scope="{ row }">
|
110 |
| - <div>{{row.price}}</div> |
111 |
| - <div>{{row.count}}</div> |
| 116 | + <div>¥{{ (row.originalUnitPrice / 100.0).toFixed(2) }}</div> |
| 117 | + <div>{{row.count}} 件</div> |
112 | 118 | </template>
|
113 | 119 | </el-table-column>
|
114 |
| - <el-table-column label="维权" prop="safeguard" align="center" width="100"/> |
| 120 | + <!-- TODO @小程:这里应该是一个订单下,多个商品,只展示订单上的总金额,就是 order.payPrice --> |
115 | 121 | <el-table-column label="实付金额(元)" prop="amount" align="center" width="100"/>
|
| 122 | + <!-- TODO @小程:这里应该是一个订单下,多个商品,只展示订单上的收件信息;使用 order.receiverXXX 开头的字段 --> |
116 | 123 | <el-table-column label="买家/收货人" prop="buyer" header-align="center" width="auto" min-width="300">
|
117 | 124 | <template slot-scope="{ row }">
|
| 125 | + <!-- TODO @芋艿:以后增加一个会员详情界面 --> |
118 | 126 | <div>{{row.buyer}}</div>
|
119 | 127 | <div>{{row.receiver}}{{row.tel}}</div>
|
120 | 128 | <div class="ellipsis-2" :title="row.address">{{row.address}}</div>
|
121 | 129 | </template>
|
122 | 130 | </el-table-column>
|
123 |
| - <el-table-column label="配送方式" prop="sendWay" align="center" width="100"/> |
| 131 | + <!-- TODO @小程:这里应该是一个订单下,多个商品,交易状态是统一的;使用 order.status 字段 --> |
124 | 132 | <el-table-column label="交易状态" prop="status" align="center" width="100"/>
|
125 | 133 | </el-table>
|
126 | 134 | </template>
|
|
132 | 140 | </template>
|
133 | 141 |
|
134 | 142 | <script>
|
135 |
| - const dicData = { |
| 143 | +import { getOrderPage } from "@/api/mall/trade/order"; |
| 144 | +import { datePickerOptions } from "@/utils/constants"; |
| 145 | +
|
| 146 | +const dicData = { |
136 | 147 | searchType: [
|
137 | 148 | { label: '订单号', value: 'ddh' },
|
138 | 149 | { label: '交易流水号', value: 'jylsh' },
|
|
143 | 154 | { label: '会员昵称', value: 'hync' },
|
144 | 155 | { label: '商品编号', value: 'spbh' }
|
145 | 156 | ],
|
146 |
| - orderType: [ |
147 |
| - { label: '全部', value: 'qb' }, |
148 |
| - { label: '物流订单', value: 'wldd' }, |
149 |
| - { label: '自提订单', value: 'ztdd' }, |
150 |
| - { label: '外卖订单', value: 'wmdd' }, |
151 |
| - { label: '虚拟订单', value: 'xndd' }, |
152 |
| - { label: '收银订单', value: 'sydd' } |
153 |
| - ], |
154 | 157 | orderStatus: [
|
155 | 158 | { label: '全部', value: 'qb' },
|
156 | 159 | { label: '待支付', value: 'dzf' },
|
|
161 | 164 | { label: '已关闭', value: 'ygb' },
|
162 | 165 | { label: '退款中', value: 'tkz' }
|
163 | 166 | ],
|
164 |
| - orderSource: [ |
165 |
| - { label: '全部', value: 'qb' }, |
166 |
| - { label: '微信公众号', value: 'wxgzh' }, |
167 |
| - { label: '微信小程序', value: 'wxxcx' }, |
168 |
| - { label: 'PC', value: 'pc' }, |
169 |
| - { label: 'H5', value: 'h5' }, |
170 |
| - { label: 'APP', value: 'app' }, |
171 |
| - { label: '收银台', value: 'syt' }, |
172 |
| - { label: '代客下单', value: 'dkxd' } |
173 |
| - ], |
174 |
| - payWay: [ |
175 |
| - { label: '全部', value: 'qb' }, |
176 |
| - { label: '在线支付', value: 'zxzf' }, |
177 |
| - { label: '余额支付', value: 'yezf' }, |
178 |
| - { label: '线下支付', value: 'xxzf' }, |
179 |
| - { label: '积分兑换', value: 'jfdh' }, |
180 |
| - { label: '支付宝支付', value: 'zfbzf' }, |
181 |
| - { label: '微信支付', value: 'wxzf' } |
182 |
| - ], |
183 |
| - marketingType: [ |
184 |
| - { label: '全部', value: 'qb' }, |
185 |
| - { label: '一口价', value: 'ykj' }, |
186 |
| - { label: '专题', value: 'zt' }, |
187 |
| - { label: '团购', value: 'tg' }, |
188 |
| - { label: '拼团', value: 'pt' }, |
189 |
| - { label: '拼团返利', value: 'ptfl' }, |
190 |
| - { label: '盲盒', value: 'mh' }, |
191 |
| - { label: '砍价', value: 'kj' }, |
192 |
| - { label: '礼品卡优惠', value: 'lpkyh' }, |
193 |
| - { label: '秒杀', value: 'ms' }, |
194 |
| - { label: '积分兑换', value: 'jfdh' }, |
195 |
| - { label: '组合套餐', value: 'zhtc' }, |
196 |
| - { label: '预售', value: 'ys' } |
197 |
| - ] |
198 |
| - } |
199 |
| - const rangePickerOptions = { |
200 |
| - shortcuts: [{ |
201 |
| - text: '最近一周', |
202 |
| - onClick(picker) { |
203 |
| - const end = new Date(); |
204 |
| - const start = new Date(); |
205 |
| - start.setTime(start.getTime() - 3600 * 1000 * 24 * 7); |
206 |
| - picker.$emit('pick', [start, end]); |
207 |
| - } |
208 |
| - }, { |
209 |
| - text: '最近一个月', |
210 |
| - onClick(picker) { |
211 |
| - const end = new Date(); |
212 |
| - const start = new Date(); |
213 |
| - start.setTime(start.getTime() - 3600 * 1000 * 24 * 30); |
214 |
| - picker.$emit('pick', [start, end]); |
215 |
| - } |
216 |
| - }, { |
217 |
| - text: '最近三个月', |
218 |
| - onClick(picker) { |
219 |
| - const end = new Date(); |
220 |
| - const start = new Date(); |
221 |
| - start.setTime(start.getTime() - 3600 * 1000 * 24 * 90); |
222 |
| - picker.$emit('pick', [start, end]); |
223 |
| - } |
224 |
| - }] |
225 | 167 | }
|
226 | 168 | export default {
|
227 | 169 | name: "index",
|
228 | 170 | data () {
|
229 | 171 | return {
|
230 | 172 | dicData,
|
231 |
| - rangePickerOptions, |
| 173 | + // 遮罩层 |
| 174 | + loading: true, |
| 175 | + // 导出遮罩层 |
| 176 | + exportLoading: false, |
| 177 | + // 显示搜索条件 |
| 178 | + showSearch: true, |
| 179 | + // 总条数 |
| 180 | + total: 0, |
| 181 | + // 交易售后列表 |
| 182 | + list: [], |
232 | 183 | queryParams: {
|
| 184 | + pageNo: 1, |
| 185 | + pageSize: 10, |
233 | 186 | searchType: 'ddh',
|
234 | 187 | orderType: ''
|
235 | 188 | },
|
|
244 | 197 | { text: '已关闭', name: 'closed' },
|
245 | 198 | { text: '退款中', name: 'refund' }
|
246 | 199 | ],
|
247 |
| - tableData: [ |
248 |
| - { |
249 |
| - orderInfo: '', |
250 |
| - orderNo: '20221026220424001', |
251 |
| - payNo: '20221026220424001', |
252 |
| - time: '2022-10-26 22:04:20', |
253 |
| - orderSource: 'PC', |
254 |
| - payWay: '微信支付', |
255 |
| - goods: [ |
256 |
| - { |
257 |
| - name: '颜衫短袖男polo衫夏季翻领衣服潮牌休闲上衣夏天翻领半袖男士t恤', |
258 |
| - picture: 'https://b2c-v5-yanshi.oss-cn-hangzhou.aliyuncs.com/upload/1/common/images/20220723/20220723115621165854858145027_SMALL.webp', |
259 |
| - price: '199', |
260 |
| - count: '5件', |
261 |
| - amount: 460, |
262 |
| - safeguard: '主动退款', |
263 |
| - buyer: '小明', |
264 |
| - receiver: '小花', |
265 |
| - tel: '15823655095', |
266 |
| - address: '北京市-北京市-东城区 观音桥', |
267 |
| - sendWay: '物流配送', |
268 |
| - status: '已完成' |
269 |
| - }, |
270 |
| - { |
271 |
| - name: '颜衫短袖男polo衫夏季翻领衣服潮牌休闲上衣夏天翻领半袖男士t恤', |
272 |
| - picture: 'https://b2c-v5-yanshi.oss-cn-hangzhou.aliyuncs.com/upload/1/common/images/20220723/20220723115621165854858145027_SMALL.webp', |
273 |
| - price: '199', |
274 |
| - count: '5件', |
275 |
| - amount: 460, |
276 |
| - safeguard: '主动退款', |
277 |
| - buyer: '小明', |
278 |
| - receiver: '小花', |
279 |
| - tel: '15823655095', |
280 |
| - address: '北京市-北京市-东城区 观音桥', |
281 |
| - sendWay: '物流配送', |
282 |
| - status: '已完成' |
283 |
| - } |
284 |
| - ] |
285 |
| - }, |
286 |
| - { |
287 |
| - orderInfo: '', |
288 |
| - orderNo: '20221026220424001', |
289 |
| - payNo: '20221026220424001', |
290 |
| - time: '2022-10-26 22:04:20', |
291 |
| - orderSource: 'PC', |
292 |
| - payWay: '微信支付', |
293 |
| - goods: [ |
294 |
| - { |
295 |
| - name: '颜衫短袖男polo衫夏季翻领衣服潮牌休闲上衣夏天翻领半袖男士t恤', |
296 |
| - picture: 'https://b2c-v5-yanshi.oss-cn-hangzhou.aliyuncs.com/upload/1/common/images/20220723/20220723115621165854858145027_SMALL.webp', |
297 |
| - price: '199', |
298 |
| - count: '5件', |
299 |
| - amount: 460, |
300 |
| - safeguard: '主动退款', |
301 |
| - buyer: '小明', |
302 |
| - receiver: '小花', |
303 |
| - tel: '15823655095', |
304 |
| - address: '北京市-北京市-东城区 观音桥', |
305 |
| - sendWay: '物流配送', |
306 |
| - status: '已完成' |
307 |
| - }, |
308 |
| - { |
309 |
| - name: '颜衫短袖男polo衫夏季翻领衣服潮牌休闲上衣夏天翻领半袖男士t恤', |
310 |
| - picture: 'https://b2c-v5-yanshi.oss-cn-hangzhou.aliyuncs.com/upload/1/common/images/20220723/20220723115621165854858145027_SMALL.webp', |
311 |
| - price: '199', |
312 |
| - count: '5件', |
313 |
| - amount: 460, |
314 |
| - safeguard: '主动退款', |
315 |
| - buyer: '小明', |
316 |
| - receiver: '小花', |
317 |
| - tel: '15823655095', |
318 |
| - address: '北京市-北京市-东城区 观音桥', |
319 |
| - sendWay: '物流配送', |
320 |
| - status: '已完成' |
321 |
| - } |
322 |
| - ] |
323 |
| - } |
324 |
| - ] |
| 200 | + // 静态变量 |
| 201 | + datePickerOptions: datePickerOptions |
325 | 202 | }
|
326 | 203 | },
|
| 204 | + created() { |
| 205 | + this.getList(); |
| 206 | + // 设置 statuses 过滤 |
| 207 | + // for (const dict of getDictDatas(DICT_TYPE.TRADE_AFTER_SALE_STATUS)) { |
| 208 | + // this.statusTabs.push({ |
| 209 | + // label: dict.label, |
| 210 | + // value: dict.value |
| 211 | + // }) |
| 212 | + // } |
| 213 | + }, |
327 | 214 | methods: {
|
| 215 | + /** 查询列表 */ |
| 216 | + getList() { |
| 217 | + this.loading = true; |
| 218 | + // 执行查询 |
| 219 | + getOrderPage(this.queryParams).then(response => { |
| 220 | + this.list = response.data.list; |
| 221 | + this.total = response.data.total; |
| 222 | + this.loading = false; |
| 223 | + }); |
| 224 | + }, |
328 | 225 | goToDetail (row) {
|
329 | 226 | this.$router.push({ path: '/mall/trade/order/detail', query: { orderNo: row.orderNo }})
|
330 | 227 | }
|
|
0 commit comments