Commit dcb3f1c8f05b0c58653628cd7ec9b031cc2b9df2

Authored by LAPTOP-CNV4CMCJ\cheng
1 parent 7bf37fcb

新增订单管理页面

yudao-ui-admin/src/router/index.js
@@ -196,6 +196,21 @@ export const constantRoutes = [ @@ -196,6 +196,21 @@ export const constantRoutes = [
196 meta: {title: '流程详情', activeMenu: '/bpm/task/my'} 196 meta: {title: '流程详情', activeMenu: '/bpm/task/my'}
197 } 197 }
198 ] 198 ]
  199 + },
  200 + {
  201 + path: '/order',
  202 + component: Layout,
  203 + name: '订单管理',
  204 + meta: { title: '订单管理' },
  205 + alwaysShow: true,
  206 + children: [
  207 + {
  208 + path: '/order/goods-order',
  209 + name: '商品订单',
  210 + meta: { title: '商品订单' },
  211 + component: (resolve) => require(['@/views/order/goodsOrder'], resolve)
  212 + }
  213 + ]
199 } 214 }
200 ] 215 ]
201 216
yudao-ui-admin/src/views/order/goodsOrder/index.vue 0 → 100644
  1 +<template>
  2 + <div class="app-container">
  3 + <el-row :gutter="20">
  4 + <el-form
  5 + :model="queryParams"
  6 + label-width="68px"
  7 + size="small"
  8 + >
  9 + <el-col :span="6" :xs="24">
  10 + <el-form-item label="搜索方式">
  11 + <el-input style="width: 240px">
  12 + <el-select
  13 + v-model="queryParams.searchType"
  14 + slot="prepend"
  15 + clearable
  16 + style="width: 100px"
  17 + >
  18 + <el-option
  19 + v-for="dict in dicData.searchType"
  20 + v-bind="dict"
  21 + :key="dict.value"
  22 + />
  23 + </el-select>
  24 + </el-input>
  25 + </el-form-item>
  26 + </el-col>
  27 + <el-col :span="6" :xs="24">
  28 + <el-form-item label="订单类型">
  29 + <el-select
  30 + v-model="queryParams.orderType"
  31 + clearable
  32 + style="width: 240px"
  33 + >
  34 + <el-option
  35 + v-for="dict in dicData.orderType"
  36 + v-bind="dict"
  37 + :key="dict.value"
  38 + />
  39 + </el-select>
  40 + </el-form-item>
  41 + </el-col>
  42 + <el-col :span="6" :xs="24">
  43 + <el-form-item label="订单状态">
  44 + <el-select
  45 + v-model="queryParams.orderStatus"
  46 + clearable
  47 + style="width: 240px"
  48 + >
  49 + <el-option
  50 + v-for="dict in dicData.orderStatus"
  51 + v-bind="dict"
  52 + :key="dict.value"
  53 + />
  54 + </el-select>
  55 + </el-form-item>
  56 + </el-col>
  57 + <el-col :span="6" :xs="24">
  58 + <el-form-item label="订单来源">
  59 + <el-select
  60 + v-model="queryParams.orderSource"
  61 + clearable
  62 + style="width: 240px"
  63 + >
  64 + <el-option
  65 + v-for="dict in dicData.orderSource"
  66 + v-bind="dict"
  67 + :key="dict.value"
  68 + />
  69 + </el-select>
  70 + </el-form-item>
  71 + </el-col>
  72 + <el-col :span="6" :xs="24">
  73 + <el-form-item label="付款方式">
  74 + <el-select
  75 + v-model="queryParams.payWay"
  76 + clearable
  77 + style="width: 240px"
  78 + >
  79 + <el-option
  80 + v-for="dict in dicData.payWay"
  81 + v-bind="dict"
  82 + :key="dict.value"
  83 + />
  84 + </el-select>
  85 + </el-form-item>
  86 + </el-col>
  87 + <el-col :span="6" :xs="24">
  88 + <el-form-item label="营销类型">
  89 + <el-select
  90 + v-model="queryParams.marketingType"
  91 + clearable
  92 + style="width: 240px"
  93 + >
  94 + <el-option
  95 + v-for="dict in dicData.marketingType"
  96 + v-bind="dict"
  97 + :key="dict.value"
  98 + />
  99 + </el-select>
  100 + </el-form-item>
  101 + </el-col>
  102 + <el-col :span="6" :xs="24">
  103 + <el-form-item label="下单时间">
  104 + <el-date-picker
  105 + v-model="queryParams.date"
  106 + type="daterange"
  107 + range-separator="至"
  108 + start-placeholder="开始日期"
  109 + end-placeholder="结束日期"
  110 + :picker-options="rangePickerOptions"
  111 + style="width: 240px"
  112 + />
  113 + </el-form-item>
  114 + </el-col>
  115 + <el-col :span="6" :xs="24" style="line-height: 32px">
  116 + <el-button type="primary" icon="el-icon-search" size="mini">搜索</el-button>
  117 + <el-button icon="el-icon-refresh" size="mini">重置</el-button>
  118 + <el-button icon="el-icon-document" size="mini">导出订单</el-button>
  119 + </el-col>
  120 + </el-form>
  121 + </el-row>
  122 +
  123 + <el-radio-group v-model="activeTabName">
  124 + <el-radio-button
  125 + v-for="tabPane in tabPanes"
  126 + :label="tabPane.label"
  127 + >{{tabPane.text}}</el-radio-button>
  128 + </el-radio-group>
  129 +
  130 + <el-table
  131 + :data="tableData"
  132 + :span-method="spanMethod"
  133 + :row-class-name="rowClassName"
  134 + border
  135 + >
  136 + <el-table-column type="selection" :selectable="(row, index) => index % 2"/>
  137 + <el-table-column label="商品" prop="goods" width="360">
  138 + <template slot-scope="{ row, $index }">
  139 + <el-row
  140 + v-if="$index % 2 === 0"
  141 + class="card-header"
  142 + >
  143 + <el-col :span="5">
  144 + 订单号:{{row.orderNo}}
  145 + <el-popover
  146 + title="支付流水号:"
  147 + :content="row.payNo"
  148 + ref="popover"
  149 + placement="right"
  150 + width="200"
  151 + trigger="click"
  152 + />
  153 + <el-button type="text" v-popover:popover>
  154 + 更多
  155 + </el-button>
  156 + </el-col>
  157 + <el-col :span="5">下单时间:{{row.time}}</el-col>
  158 + <el-col :span="5">订单来源:{{row.orderSource}}</el-col>
  159 + <el-col :span="5">支付方式:{{row.payWay}}</el-col>
  160 + <el-col :span="4" align="right">
  161 + <el-button type="text">打印发货单</el-button>
  162 + <el-button type="text">详情</el-button>
  163 + <el-button type="text">备注</el-button>
  164 + </el-col>
  165 + </el-row>
  166 + <div v-else class="goods-info">
  167 + <img :src="row.picture"/>
  168 + <span class="ellipsis-2">{{row.name}}</span>
  169 + </div>
  170 + </template>
  171 + </el-table-column>
  172 + <el-table-column label="单价(元)/数量" prop="fee" align="center" width="115">
  173 + <template slot-scope="{ row }">
  174 + <div>{{row.price}}</div>
  175 + <div>{{row.count}}</div>
  176 + </template>
  177 + </el-table-column>
  178 + <el-table-column label="维权" prop="safeguard" align="center" width="115"/>
  179 + <el-table-column label="实付金额(元)" prop="amount" align="center" width="115"/>
  180 + <el-table-column label="买家/收货人" prop="buyer" width="360">
  181 + <template slot-scope="{ row }">
  182 + <div>{{row.buyer}}</div>
  183 + <div>{{row.receiver}}{{row.tel}}</div>
  184 + <div class="ellipsis-2">{{row.address}}</div>
  185 + </template>
  186 + </el-table-column>
  187 + <el-table-column label="配送方式" prop="sendWay" width="115"/>
  188 + <el-table-column label="交易状态" prop="status"/>
  189 + </el-table>
  190 +
  191 + <pagination/>
  192 + </div>
  193 +</template>
  194 +
  195 +<script>
  196 +const dicData = {
  197 + searchType: [
  198 + { label: '订单号', value: 'ddh' },
  199 + { label: '交易流水号', value: 'jylsh' },
  200 + { label: '订单备注', value: 'ddbz' },
  201 + { label: '收货人姓名', value: 'shrxm' },
  202 + { label: '商品名称', value: 'spmc' },
  203 + { label: '收货人电话', value: 'shrdh' },
  204 + { label: '会员昵称', value: 'hync' },
  205 + { label: '商品编号', value: 'spbh' }
  206 + ],
  207 + orderType: [
  208 + { label: '全部', value: 'qb' },
  209 + { label: '物流订单', value: 'wldd' },
  210 + { label: '自提订单', value: 'ztdd' },
  211 + { label: '外卖订单', value: 'wmdd' },
  212 + { label: '虚拟订单', value: 'xndd' },
  213 + { label: '收银订单', value: 'sydd' }
  214 + ],
  215 + orderStatus: [
  216 + { label: '全部', value: 'qb' },
  217 + { label: '待支付', value: 'dzf' },
  218 + { label: '待发货', value: 'dfh' },
  219 + { label: '已发货', value: 'yfh' },
  220 + { label: '已收货', value: 'ysh' },
  221 + { label: '已完成', value: 'ywc' },
  222 + { label: '已关闭', value: 'ygb' },
  223 + { label: '退款中', value: 'tkz' }
  224 + ],
  225 + orderSource: [
  226 + { label: '全部', value: 'qb' },
  227 + { label: '微信公众号', value: 'wxgzh' },
  228 + { label: '微信小程序', value: 'wxxcx' },
  229 + { label: 'PC', value: 'pc' },
  230 + { label: 'H5', value: 'h5' },
  231 + { label: 'APP', value: 'app' },
  232 + { label: '收银台', value: 'syt' },
  233 + { label: '代客下单', value: 'dkxd' }
  234 + ],
  235 + payWay: [
  236 + { label: '全部', value: 'qb' },
  237 + { label: '在线支付', value: 'zxzf' },
  238 + { label: '余额支付', value: 'yezf' },
  239 + { label: '线下支付', value: 'xxzf' },
  240 + { label: '积分兑换', value: 'jfdh' },
  241 + { label: '支付宝支付', value: 'zfbzf' },
  242 + { label: '微信支付', value: 'wxzf' }
  243 + ],
  244 + marketingType: [
  245 + { label: '全部', value: 'qb' },
  246 + { label: '一口价', value: 'ykj' },
  247 + { label: '专题', value: 'zt' },
  248 + { label: '团购', value: 'tg' },
  249 + { label: '拼团', value: 'pt' },
  250 + { label: '拼团返利', value: 'ptfl' },
  251 + { label: '盲盒', value: 'mh' },
  252 + { label: '砍价', value: 'kj' },
  253 + { label: '礼品卡优惠', value: 'lpkyh' },
  254 + { label: '秒杀', value: 'ms' },
  255 + { label: '积分兑换', value: 'jfdh' },
  256 + { label: '组合套餐', value: 'zhtc' },
  257 + { label: '预售', value: 'ys' }
  258 + ]
  259 +}
  260 +const rangePickerOptions = {
  261 + shortcuts: [{
  262 + text: '最近一周',
  263 + onClick(picker) {
  264 + const end = new Date();
  265 + const start = new Date();
  266 + start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
  267 + picker.$emit('pick', [start, end]);
  268 + }
  269 + }, {
  270 + text: '最近一个月',
  271 + onClick(picker) {
  272 + const end = new Date();
  273 + const start = new Date();
  274 + start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
  275 + picker.$emit('pick', [start, end]);
  276 + }
  277 + }, {
  278 + text: '最近三个月',
  279 + onClick(picker) {
  280 + const end = new Date();
  281 + const start = new Date();
  282 + start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
  283 + picker.$emit('pick', [start, end]);
  284 + }
  285 + }]
  286 +}
  287 +export default {
  288 + name: "index",
  289 + data () {
  290 + return {
  291 + dicData,
  292 + rangePickerOptions,
  293 + queryParams: {
  294 + searchType: 'ddh',
  295 + orderType: ''
  296 + },
  297 + activeTabName: 'all',
  298 + tabPanes: [
  299 + { text: '全部', label: 'all' },
  300 + { text: '待支付', label: 'toBePay' },
  301 + { text: '待发货', label: 'toBeSend' },
  302 + { text: '已发货', label: 'send' },
  303 + { text: '已收货', label: 'received' },
  304 + { text: '已完成', label: 'finished' },
  305 + { text: '已关闭', label: 'closed' },
  306 + { text: '退款中', label: 'refund' }
  307 + ],
  308 + tableData: []
  309 + }
  310 + },
  311 + mounted () {
  312 + const data = [
  313 + {
  314 + orderNo: '20221026220424001',
  315 + payNo: '20221026220424001',
  316 + time: '2022-10-26 22:04:20',
  317 + orderSource: 'PC',
  318 + payWay: '微信支付',
  319 + name: '颜衫短袖男polo衫夏季翻领衣服潮牌休闲上衣夏天翻领半袖男士t恤',
  320 + picture: 'https://b2c-v5-yanshi.oss-cn-hangzhou.aliyuncs.com/upload/1/common/images/20220723/20220723115621165854858145027_SMALL.webp',
  321 + price: '199',
  322 + count: '5件',
  323 + amount: 460,
  324 + safeguard: '主动退款',
  325 + buyer: '小明',
  326 + receiver: '小花',
  327 + tel: '15823655095',
  328 + address: '北京市-北京市-东城区 观音桥',
  329 + sendWay: '物流配送',
  330 + status: '已完成'
  331 + },
  332 + {
  333 + orderNo: '20221026220424001',
  334 + payNo: '20221026220424001',
  335 + time: '2022-10-26 22:04:20',
  336 + orderSource: 'PC',
  337 + payWay: '微信支付',
  338 + name: '颜衫短袖男polo衫夏季翻领衣服潮牌休闲上衣夏天翻领半袖男士t恤',
  339 + picture: 'https://b2c-v5-yanshi.oss-cn-hangzhou.aliyuncs.com/upload/1/common/images/20220723/20220723115621165854858145027_SMALL.webp',
  340 + price: '199',
  341 + count: '5件',
  342 + amount: 460,
  343 + safeguard: '主动退款',
  344 + buyer: '小明',
  345 + receiver: '小花',
  346 + tel: '15823655095',
  347 + address: '北京市-北京市-东城区 观音桥',
  348 + sendWay: '物流配送',
  349 + status: '已完成'
  350 + },
  351 + {
  352 + orderNo: '20221026220424001',
  353 + payNo: '20221026220424001',
  354 + time: '2022-10-26 22:04:20',
  355 + orderSource: 'PC',
  356 + payWay: '微信支付',
  357 + name: '颜衫短袖男polo衫夏季翻领衣服潮牌休闲上衣夏天翻领半袖男士t恤',
  358 + picture: 'https://b2c-v5-yanshi.oss-cn-hangzhou.aliyuncs.com/upload/1/common/images/20220723/20220723115621165854858145027_SMALL.webp',
  359 + price: '199',
  360 + count: '5件',
  361 + amount: 460,
  362 + safeguard: '主动退款',
  363 + buyer: '小明',
  364 + receiver: '小花',
  365 + tel: '15823655095',
  366 + address: '北京市-北京市-东城区 观音桥',
  367 + sendWay: '物流配送',
  368 + status: '已完成'
  369 + },
  370 + {
  371 + orderNo: '20221026220424001',
  372 + payNo: '20221026220424001',
  373 + time: '2022-10-26 22:04:20',
  374 + orderSource: 'PC',
  375 + payWay: '微信支付',
  376 + name: '颜衫短袖男polo衫夏季翻领衣服潮牌休闲上衣夏天翻领半袖男士t恤',
  377 + picture: 'https://b2c-v5-yanshi.oss-cn-hangzhou.aliyuncs.com/upload/1/common/images/20220723/20220723115621165854858145027_SMALL.webp',
  378 + price: '199',
  379 + count: '5件',
  380 + amount: 460,
  381 + safeguard: '主动退款',
  382 + buyer: '小明',
  383 + receiver: '小花',
  384 + tel: '15823655095',
  385 + address: '北京市-北京市-东城区 观音桥',
  386 + sendWay: '物流配送',
  387 + status: '已完成'
  388 + }
  389 + ]
  390 + data.forEach((record, index) => {
  391 + data.splice(index, 0, record)
  392 + })
  393 + this.tableData = data
  394 + },
  395 + methods: {
  396 + spanMethod ({ row, column, rowIndex, columnIndex }) {
  397 + if (rowIndex % 2 === 0) {
  398 + if (columnIndex === 1) {
  399 + return [1, 8]
  400 + } else {
  401 + return [0, 0]
  402 + }
  403 + }
  404 + },
  405 + rowClassName ({ rowIndex }) {
  406 + if (rowIndex % 2 === 0) {
  407 + return 'even-row'
  408 + } else {
  409 + return 'odd-row'
  410 + }
  411 + }
  412 + }
  413 +}
  414 +</script>
  415 +
  416 +<style lang="scss" scoped>
  417 + ::v-deep .el-table {
  418 + margin-top: 20px;
  419 + .el-table__row{
  420 + &.even-row{
  421 + >.el-table__cell{
  422 + padding: 0;
  423 + .cell{
  424 + padding: 0;
  425 + .card-header{
  426 + padding: 0 10px;
  427 + line-height: 44px;
  428 + background: #f7f7f7;
  429 + color: #333;
  430 + }
  431 + }
  432 + }
  433 + }
  434 + >.el-table__cell{
  435 + .goods-info{
  436 + display: flex;
  437 + img{
  438 + margin-right: 10px;
  439 + width: 60px;
  440 + height: 60px;
  441 + border: 1px solid #e2e2e2;
  442 + }
  443 + }
  444 + .ellipsis-2{
  445 + display: -webkit-box;
  446 + overflow: hidden;
  447 + text-overflow: ellipsis;
  448 + white-space: normal;
  449 + -webkit-line-clamp: 2; /* 要显示的行数 */
  450 + -webkit-box-orient: vertical;
  451 + word-break: break-all;
  452 + line-height: 22px !important;
  453 + max-height: 44px !important;
  454 + }
  455 + }
  456 + }
  457 + }
  458 +</style>