Commit b7d78a24a4da45b4093e783a678756be0dd2fb36
1 parent
c5408965
trade:完成管理后台的订单详情的简单对接
Showing
5 changed files
with
102 additions
and
136 deletions
yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/order/TradeOrderItemAfterSaleStatusEnum.java
| ... | ... | @@ -16,9 +16,9 @@ import java.util.Arrays; |
| 16 | 16 | @Getter |
| 17 | 17 | public enum TradeOrderItemAfterSaleStatusEnum implements IntArrayValuable { |
| 18 | 18 | |
| 19 | - NONE(0, "未申请"), | |
| 20 | - APPLY(1, "已申请"), | |
| 21 | - SUCCESS(2, "申请成功"); | |
| 19 | + NONE(0, "未售后"), | |
| 20 | + APPLY(1, "售后中"), | |
| 21 | + SUCCESS(2, "已退款"); | |
| 22 | 22 | |
| 23 | 23 | public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(TradeOrderItemAfterSaleStatusEnum::getStatus).toArray(); |
| 24 | 24 | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/order/vo/TradeOrderBaseVO.java
| ... | ... | @@ -24,6 +24,9 @@ public class TradeOrderBaseVO { |
| 24 | 24 | @ApiModelProperty(value = "创建时间", required = true, notes = "下单时间") |
| 25 | 25 | private Date createTime; |
| 26 | 26 | |
| 27 | + @ApiModelProperty(value = "订单类型", required = true, example = "1", notes = "参见 TradeOrderTypeEnum 枚举") | |
| 28 | + private Integer type; | |
| 29 | + | |
| 27 | 30 | @ApiModelProperty(value = "订单来源", required = true, example = "1", notes = "参见 TerminalEnum 枚举") |
| 28 | 31 | private Integer terminal; |
| 29 | 32 | ... | ... |
yudao-ui-admin/src/utils/dict.js
| ... | ... | @@ -67,6 +67,7 @@ export const DICT_TYPE = { |
| 67 | 67 | TRADE_AFTER_SALE_TYPE: 'trade_after_sale_type', // 售后 - 类型 |
| 68 | 68 | TRADE_ORDER_TYPE: 'trade_order_type', // 订单 - 类型 |
| 69 | 69 | TRADE_ORDER_STATUS: 'trade_order_status', // 订单 - 状态 |
| 70 | + TRADE_ORDER_ITEM_AFTER_SALE_STATUS: 'trade_order_item_after_sale_status', // 订单项 - 售后状态 | |
| 70 | 71 | |
| 71 | 72 | // ========== MALL - PROMOTION 模块 ========== |
| 72 | 73 | PROMOTION_DISCOUNT_TYPE: 'promotion_discount_type', // 优惠类型 | ... | ... |
yudao-ui-admin/src/views/mall/trade/order/detail.vue
| ... | ... | @@ -2,23 +2,104 @@ |
| 2 | 2 | <div class="app-container order-detail-page"> |
| 3 | 3 | <!-- 订单信息 --> |
| 4 | 4 | <el-descriptions title="订单信息"> |
| 5 | - <el-descriptions-item label="支付单号">123</el-descriptions-item> | |
| 5 | + <el-descriptions-item label="订单号">{{ order.no }}</el-descriptions-item> | |
| 6 | + <el-descriptions-item label="配送方式">物流配送</el-descriptions-item> <!-- TODO 芋艿:待实现 --> | |
| 7 | + <el-descriptions-item label="营销活动">物流配送</el-descriptions-item> <!-- TODO 芋艿:待实现 --> | |
| 8 | + <el-descriptions-item label="订单类型"> | |
| 9 | + <dict-tag :type="DICT_TYPE.TRADE_ORDER_TYPE" :value="order.type" /> | |
| 10 | + </el-descriptions-item> | |
| 11 | + <el-descriptions-item label="收货人">{{ order.receiverName }}</el-descriptions-item> | |
| 12 | + <el-descriptions-item label="买家留言">{{ order.userRemark }}</el-descriptions-item> | |
| 13 | + <el-descriptions-item label="订单来源"> | |
| 14 | + <dict-tag :type="DICT_TYPE.TERMINAL" :value="order.terminal" /> | |
| 15 | + </el-descriptions-item> | |
| 16 | + <el-descriptions-item label="联系电话">{{ order.receiverMobile }}</el-descriptions-item> | |
| 17 | + <el-descriptions-item label="商家备注">{{ order.remark }}</el-descriptions-item> | |
| 18 | + <el-descriptions-item label="支付单号">{{ order.payOrderId }}</el-descriptions-item> | |
| 19 | + <el-descriptions-item label="付款方式"> | |
| 20 | + <dict-tag :type="DICT_TYPE.PAY_CHANNEL_CODE_TYPE" :value="order.payChannelCode" /> | |
| 21 | + </el-descriptions-item> | |
| 22 | + <el-descriptions-item label="买家">{{ order.user.nickname }}</el-descriptions-item> <!-- TODO 芋艿:待实现:跳转会员 --> | |
| 23 | + <el-descriptions-item label="收货地址"> | |
| 24 | + {{ order.receiverAreaName }} {{ order.receiverDetailAddress }} | |
| 25 | + <el-link v-clipboard:copy="order.receiverAreaName + ' ' + order.receiverDetailAddress" | |
| 26 | + v-clipboard:success="clipboardSuccess" icon="el-icon-document-copy" type="primary"/> | |
| 27 | + </el-descriptions-item> | |
| 28 | + </el-descriptions> | |
| 29 | + | |
| 30 | + <!-- 订单状态 --> | |
| 31 | + <el-descriptions title="订单状态" :column="1"> | |
| 32 | + <el-descriptions-item label="订单状态"> | |
| 33 | + <dict-tag :type="DICT_TYPE.TRADE_ORDER_STATUS" :value="order.status" /> | |
| 34 | + </el-descriptions-item> | |
| 35 | + <el-descriptions-item label-class-name="no-colon"> | |
| 36 | + <el-button type="primary" size="small">调整价格</el-button> <!-- TODO 芋艿:待实现 --> | |
| 37 | + <el-button type="primary" size="small">备注</el-button> <!-- TODO 芋艿:待实现 --> | |
| 38 | + <el-button type="primary" size="small">发货</el-button> <!-- TODO 芋艿:待实现 --> | |
| 39 | + <el-button type="primary" size="small">关闭订单</el-button> <!-- TODO 芋艿:待实现 --> | |
| 40 | + <el-button type="primary" size="small">修改地址</el-button> <!-- TODO 芋艿:待实现 --> | |
| 41 | + <el-button type="primary" size="small">打印电子面单</el-button> <!-- TODO 芋艿:待实现 --> | |
| 42 | + <el-button type="primary" size="small">打印发货单</el-button> <!-- TODO 芋艿:待实现 --> | |
| 43 | + <el-button type="primary" size="small">确认收货</el-button> <!-- TODO 芋艿:待实现 --> | |
| 44 | + </el-descriptions-item> | |
| 45 | + <el-descriptions-item label="提醒" label-style="color: red"> | |
| 46 | + 买家付款成功后,货款将直接进入您的商户号(微信、支付宝)<br /> | |
| 47 | + 请及时关注你发出的包裹状态,确保可以配送至买家手中 <br /> | |
| 48 | + 如果买家表示没收到货或货物有问题,请及时联系买家处理,友好协商 | |
| 49 | + </el-descriptions-item> | |
| 50 | + </el-descriptions> | |
| 51 | + | |
| 52 | + <!-- 物流信息 TODO --> | |
| 53 | + | |
| 54 | + <!-- 商品信息 --> | |
| 55 | + <el-descriptions title="商品信息" :column="6"> | |
| 56 | + <el-descriptions-item labelClassName="no-colon"> | |
| 57 | + <el-table :data="order.items" border> | |
| 58 | + <el-table-column prop="spuName" label="商品" width="700"> | |
| 59 | + <template slot-scope="{ row }"> | |
| 60 | + {{row.spuName}} | |
| 61 | + <el-tag size="medium" v-for="property in row.properties">{{property.propertyName}}:{{property.valueName}}</el-tag> | |
| 62 | + </template> | |
| 63 | + </el-table-column> | |
| 64 | + <el-table-column prop="originalUnitPrice" label="单价(元)" width="180"> | |
| 65 | + <template slot-scope="{ row }"> | |
| 66 | + ¥{{ (row.originalUnitPrice / 100.0).toFixed(2) }} | |
| 67 | + </template> | |
| 68 | + </el-table-column> | |
| 69 | + <el-table-column prop="count" label="数量" width="180"/> | |
| 70 | + <el-table-column prop="originalPrice" label="小计(元)" width="180"> | |
| 71 | + <template slot-scope="{ row }"> | |
| 72 | + ¥{{ (row.originalPrice / 100.0).toFixed(2) }} | |
| 73 | + </template> | |
| 74 | + </el-table-column> | |
| 75 | + <el-table-column prop="afterSaleStatus" label="退款状态"> | |
| 76 | + <template slot-scope="{ row }"> | |
| 77 | + <dict-tag :type="DICT_TYPE.TRADE_ORDER_ITEM_AFTER_SALE_STATUS" :value="row.afterSaleStatus" /> | |
| 78 | + </template> | |
| 79 | + </el-table-column> | |
| 80 | + </el-table> | |
| 81 | + </el-descriptions-item> | |
| 82 | + <el-descriptions-item v-for="(item,index) in 5" label-class-name="no-colon" /> <!-- 占位 --> | |
| 83 | + <el-descriptions-item label="商品总额">¥{{ (order.originalPrice / 100.0).toFixed(2) }}</el-descriptions-item> | |
| 84 | + <el-descriptions-item label="运费金额">¥{{ (order.deliveryPrice / 100.0).toFixed(2) }}</el-descriptions-item> | |
| 85 | + <el-descriptions-item label="订单调价">¥{{ (order.adjustPrice / 100.0).toFixed(2) }}</el-descriptions-item> | |
| 86 | + <el-descriptions-item label="商品优惠" label-style="color: red"> | |
| 87 | + ¥{{ ((order.originalPrice - order.originalPrice) / 100.0).toFixed(2) }} | |
| 88 | + </el-descriptions-item> | |
| 89 | + <el-descriptions-item label="订单优惠" label-style="color: red"> | |
| 90 | + ¥{{ (order.discountPrice / 100.0).toFixed(2) }} | |
| 91 | + </el-descriptions-item> | |
| 92 | + <el-descriptions-item label="积分抵扣" label-style="color: red"> | |
| 93 | + ¥{{ (order.pointPrice / 100.0).toFixed(2) }} | |
| 94 | + </el-descriptions-item> | |
| 95 | + <el-descriptions-item v-for="(item,index) in 5" label-class-name="no-colon" /> <!-- 占位 --> | |
| 96 | + <el-descriptions-item label="应付金额"> | |
| 97 | + ¥{{ (order.payPrice / 100.0).toFixed(2) }} | |
| 98 | + </el-descriptions-item> | |
| 6 | 99 | </el-descriptions> |
| 7 | 100 | |
| 8 | 101 | <template v-for="(group, index) in detailGroups"> |
| 9 | 102 | <el-descriptions v-bind="group.groupProps" :key="`group_${index}`" :title="group.title"> |
| 10 | - <!-- 商品信息 --> | |
| 11 | - <el-descriptions-item v-if="group.key === 'goodsInfo'" labelClassName="no-colon"> | |
| 12 | - <el-table border> | |
| 13 | - <el-table-column prop="date" label="商品" width="180"/> | |
| 14 | - <el-table-column prop="jg" label="价格"/> | |
| 15 | - <el-table-column prop="spbm" label="商品编码"/> | |
| 16 | - <el-table-column prop="xl" label="数量"/> | |
| 17 | - <el-table-column prop="xj" label="小计(元)"/> | |
| 18 | - <el-table-column prop="tkzt" label="退款状态"/> | |
| 19 | - <el-table-column prop="zt" label="状态"/> | |
| 20 | - </el-table> | |
| 21 | - </el-descriptions-item> | |
| 22 | 103 | |
| 23 | 104 | <!-- 订单操作日志 --> |
| 24 | 105 | <el-descriptions-item v-if="group.key === 'orderLog'" labelClassName="no-colon"> |
| ... | ... | @@ -74,30 +155,12 @@ |
| 74 | 155 | </el-tab-pane> |
| 75 | 156 | </el-tabs> |
| 76 | 157 | </el-descriptions-item> |
| 77 | - | |
| 78 | - <!--订单详情、订单状态--> | |
| 79 | - <el-descriptions-item v-else v-for="(child, cIdx) in group.children" v-bind="child.childProps" :key="`child_${cIdx}`" :label="child.label"> | |
| 80 | - | |
| 81 | - <!-- 操作按钮(订单状态)--> | |
| 82 | - <template v-if="group.key === 'orderStatus' && child.valueKey === 'actions'" slot="label"> | |
| 83 | - <el-button type="primary">备注</el-button> | |
| 84 | - <el-button type="primary">打印发货单</el-button> | |
| 85 | - </template> | |
| 86 | - | |
| 87 | - <!-- 内容 --> | |
| 88 | - <template v-else> | |
| 89 | - {{detailInfo[child.valueKey]}} | |
| 90 | - <!--复制地址(订单详情) --> | |
| 91 | - <el-link v-if="child.valueKey==='shdz'" v-clipboard:copy="detailInfo[child.valueKey]" v-clipboard:success="clipboardSuccess" icon="el-icon-document-copy" type="primary"/> | |
| 92 | - </template> | |
| 93 | - </el-descriptions-item> | |
| 94 | 158 | </el-descriptions> |
| 95 | 159 | </template> |
| 96 | 160 | </div> |
| 97 | 161 | </template> |
| 98 | 162 | |
| 99 | 163 | <script> |
| 100 | -import {DICT_TYPE, getDictDatas} from "@/utils/dict"; | |
| 101 | 164 | import { getOrderDetail } from "@/api/mall/trade/order"; |
| 102 | 165 | |
| 103 | 166 | export default { |
| ... | ... | @@ -106,72 +169,22 @@ export default { |
| 106 | 169 | return { |
| 107 | 170 | detailGroups: [ |
| 108 | 171 | { |
| 109 | - title: '订单详情', | |
| 110 | - children: [ | |
| 111 | - { label: '支付单号', valueKey: 'jylsh'}, | |
| 112 | - { label: '配送方式', valueKey: 'psfs'}, | |
| 113 | - { label: '营销活动', valueKey: 'yxhd'}, | |
| 114 | - { label: '订单编号', valueKey: 'ddbh'}, | |
| 115 | - { label: '收货人', valueKey: 'shr'}, | |
| 116 | - { label: '买家留言', valueKey: 'mjly'}, | |
| 117 | - { label: '订单类型', valueKey: 'ddlx'}, | |
| 118 | - { label: '联系电话', valueKey: 'lxdh'}, | |
| 119 | - { label: '备注', valueKey: 'bz'}, | |
| 120 | - { label: '订单来源', valueKey: 'ddly'}, | |
| 121 | - { label: '付款方式', valueKey: 'fkfs'}, | |
| 122 | - { label: '买家', valueKey: 'mj'}, | |
| 123 | - { label: '收货地址', valueKey: 'shdz'} | |
| 124 | - ] | |
| 125 | - }, | |
| 126 | - { | |
| 127 | - title: '订单状态', | |
| 128 | - key: 'orderStatus', | |
| 129 | - groupProps: { | |
| 130 | - column: 1 | |
| 131 | - }, | |
| 132 | - children: [ | |
| 133 | - { label: '订单状态', valueKey: 'ddzt', childProps: { contentStyle: { color: 'red' }}}, | |
| 134 | - { label: '', valueKey: 'actions', childProps: { labelClassName: 'no-colon'}}, | |
| 135 | - { label: '提醒', valueKey: 'tx', childProps: { labelStyle: { color: 'red' }}} | |
| 136 | - ] | |
| 137 | - }, | |
| 138 | - { | |
| 139 | 172 | title: '物流信息', |
| 140 | 173 | key: 'expressInfo', |
| 141 | 174 | children: [ |
| 142 | 175 | { label: '发货时间', valueKey: 'fhsj'}, |
| 143 | 176 | { label: '物流公司', valueKey: 'wlgs'}, |
| 144 | 177 | { label: '运单号', valueKey: 'ydh'}, |
| 145 | - { label: '商品信息', valueKey: 'goodsList', childProps: { span: 3 }}, | |
| 146 | 178 | { label: '物流状态', valueKey: 'wlzt', childProps: { span: 3 }}, |
| 147 | 179 | { label: '物流详情', valueKey: 'wlxq'} |
| 148 | 180 | ] |
| 149 | 181 | }, |
| 150 | 182 | { |
| 151 | - title: '商品信息', | |
| 152 | - key: 'goodsInfo' | |
| 153 | - }, | |
| 154 | - { | |
| 155 | 183 | title: '订单操作日志', |
| 156 | 184 | key: 'orderLog' |
| 157 | 185 | } |
| 158 | 186 | ], |
| 159 | 187 | detailInfo: { |
| 160 | - jylsh: '16674653573152181000', | |
| 161 | - psfs: '物流配送', | |
| 162 | - yxhd: '', | |
| 163 | - ddbh: '20221103164918001', | |
| 164 | - shr: '', | |
| 165 | - mjly: '', | |
| 166 | - ddlx: '', | |
| 167 | - lxdh: '', | |
| 168 | - bz: '', | |
| 169 | - ddly: '', | |
| 170 | - shdz: '陕西省-西安市-莲湖区-九座花园西区(莲湖区二环南路西段202)陕西省-西安市-莲湖区-九座花园西区(莲湖区二环南路西段202)', | |
| 171 | - fkfs: '', | |
| 172 | - mj: '', | |
| 173 | - ddzt: '已完成', | |
| 174 | - tx: '买家付款成功后,货款将直接进入您的商户号(微信、支付宝)请及时关注你发出的包裹状态,确保可以配送至买家手中如果买家表示没收到货或货物有问题,请及时联系买家处理,友好协商', | |
| 175 | 188 | expressInfo: [ // 物流信息 |
| 176 | 189 | { |
| 177 | 190 | label: '包裹1', |
| ... | ... | @@ -201,42 +214,7 @@ export default { |
| 201 | 214 | content: '快件已发车', |
| 202 | 215 | timestamp: '2018-04-11 12:55:52' |
| 203 | 216 | } |
| 204 | - ], | |
| 205 | - goodsList: [ // 包裹下的商品列表 | |
| 206 | - { | |
| 207 | - name: 'Otic 巴拉啦小魔仙联名麦克风儿童早教家用一体卡拉OK宝宝话筒唱歌 魔仙粉', | |
| 208 | - count: 6, | |
| 209 | - imgUrl: 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg' | |
| 210 | - }, | |
| 211 | - { | |
| 212 | - name: 'Otic 巴拉啦小魔仙联名麦克风儿童早教家用一体卡拉OK宝宝话筒唱歌 魔仙粉', | |
| 213 | - count: 6, | |
| 214 | - imgUrl: 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg' | |
| 215 | - }, | |
| 216 | - { | |
| 217 | - name: 'Otic 巴拉啦小魔仙联名麦克风儿童早教家用一体卡拉OK宝宝话筒唱歌 魔仙粉', | |
| 218 | - count: 6, | |
| 219 | - imgUrl: 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg' | |
| 220 | - } | |
| 221 | 217 | ] |
| 222 | - }, | |
| 223 | - { | |
| 224 | - label: '包裹2', | |
| 225 | - name: 'bg1', | |
| 226 | - fhsj: '', | |
| 227 | - wlgs: '', | |
| 228 | - ydh: '', | |
| 229 | - wlzt: '', | |
| 230 | - goodsInfo: {} | |
| 231 | - }, | |
| 232 | - { | |
| 233 | - label: '包裹3', | |
| 234 | - name: 'bg1', | |
| 235 | - fhsj: '', | |
| 236 | - wlgs: '', | |
| 237 | - ydh: '', | |
| 238 | - wlzt: '', | |
| 239 | - goodsInfo: {} | |
| 240 | 218 | } |
| 241 | 219 | ], |
| 242 | 220 | orderLog: [ // 订单操作日志 |
| ... | ... | @@ -253,6 +231,7 @@ export default { |
| 253 | 231 | }, |
| 254 | 232 | order: { |
| 255 | 233 | items: [], |
| 234 | + user: {}, | |
| 256 | 235 | }, |
| 257 | 236 | } |
| 258 | 237 | }, | ... | ... |
yudao-ui-admin/src/views/mall/trade/order/index.vue
| ... | ... | @@ -89,23 +89,6 @@ |
| 89 | 89 | </el-col> |
| 90 | 90 | <el-col :span="6" align="right"> |
| 91 | 91 | <el-button type="text" @click="goToDetail(row)">详情</el-button> |
| 92 | - <el-dropdown style="margin-left: 10px"> | |
| 93 | - <el-button type="text"> | |
| 94 | - 更多操作<i class="el-icon-arrow-down el-icon--right"></i> | |
| 95 | - </el-button> | |
| 96 | - <el-dropdown-menu slot="dropdown"> | |
| 97 | - <!-- TODO @芋艿:【暂未开发】关闭订单 --> | |
| 98 | - <el-dropdown-item><el-button type="text">关闭订单</el-button></el-dropdown-item> | |
| 99 | - <!-- TODO @芋艿:【暂未开发】修改地址 --> | |
| 100 | - <el-dropdown-item><el-button type="text">修改地址</el-button></el-dropdown-item> | |
| 101 | - <!-- TODO @芋艿:【暂未开发】调整价格 --> | |
| 102 | - <el-dropdown-item><el-button type="text">调整价格</el-button></el-dropdown-item> | |
| 103 | - <!-- TODO @芋艿:【暂未开发】备注 --> | |
| 104 | - <el-dropdown-item><el-button type="text">备注</el-button></el-dropdown-item> | |
| 105 | - <!-- TODO @芋艿:【暂未开发】关闭订单 --> | |
| 106 | - <el-dropdown-item><el-button type="text">打印发货单</el-button></el-dropdown-item> | |
| 107 | - </el-dropdown-menu> | |
| 108 | - </el-dropdown> | |
| 109 | 92 | </el-col> |
| 110 | 93 | </el-row> |
| 111 | 94 | <!-- 订单下的商品 --> | ... | ... |