Commit cfbc2ed7 by YunaiV

code review:订单列表、订单详情

parent 69a66b2a
...@@ -20,7 +20,7 @@ export interface BargainActivityVO { ...@@ -20,7 +20,7 @@ export interface BargainActivityVO {
successCount?: number // 砍价成功数量 successCount?: number // 砍价成功数量
} }
// 砍价活动所需属性。 选择的商品和属性的时候使用方便使用活动的通用封装 // 砍价活动所需属性。选择的商品和属性的时候使用方便使用活动的通用封装
export interface BargainProductVO { export interface BargainProductVO {
spuId: number spuId: number
skuId: number skuId: number
......
...@@ -90,6 +90,7 @@ export enum DICT_TYPE { ...@@ -90,6 +90,7 @@ export enum DICT_TYPE {
USER_TYPE = 'user_type', USER_TYPE = 'user_type',
COMMON_STATUS = 'common_status', COMMON_STATUS = 'common_status',
SYSTEM_TENANT_PACKAGE_ID = 'system_tenant_package_id', SYSTEM_TENANT_PACKAGE_ID = 'system_tenant_package_id',
TERMINAL = 'terminal', // 终端
// ========== SYSTEM 模块 ========== // ========== SYSTEM 模块 ==========
SYSTEM_USER_SEX = 'system_user_sex', SYSTEM_USER_SEX = 'system_user_sex',
...@@ -130,7 +131,7 @@ export enum DICT_TYPE { ...@@ -130,7 +131,7 @@ export enum DICT_TYPE {
BPM_OA_LEAVE_TYPE = 'bpm_oa_leave_type', BPM_OA_LEAVE_TYPE = 'bpm_oa_leave_type',
// ========== PAY 模块 ========== // ========== PAY 模块 ==========
PAY_CHANNEL_CODE_TYPE = 'pay_channel_code_type', // 支付渠道编码类型 PAY_CHANNEL_CODE = 'pay_channel_code', // 支付渠道编码类型
PAY_ORDER_STATUS = 'pay_order_status', // 商户支付订单状态 PAY_ORDER_STATUS = 'pay_order_status', // 商户支付订单状态
PAY_REFUND_STATUS = 'pay_refund_status', // 退款订单状态 PAY_REFUND_STATUS = 'pay_refund_status', // 退款订单状态
PAY_NOTIFY_STATUS = 'pay_notify_status', // 商户支付回调状态 PAY_NOTIFY_STATUS = 'pay_notify_status', // 商户支付回调状态
...@@ -155,7 +156,7 @@ export enum DICT_TYPE { ...@@ -155,7 +156,7 @@ export enum DICT_TYPE {
TRADE_ORDER_TYPE = 'trade_order_type', // 订单 - 类型 TRADE_ORDER_TYPE = 'trade_order_type', // 订单 - 类型
TRADE_ORDER_STATUS = 'trade_order_status', // 订单 - 状态 TRADE_ORDER_STATUS = 'trade_order_status', // 订单 - 状态
TRADE_ORDER_ITEM_AFTER_SALE_STATUS = 'trade_order_item_after_sale_status', // 订单项 - 售后状态 TRADE_ORDER_ITEM_AFTER_SALE_STATUS = 'trade_order_item_after_sale_status', // 订单项 - 售后状态
TERMINAL = 'terminal', // 终端 TRADE_DELIVERY_TYPE = 'trade_delivery_type', // 配送方式
// ========== MALL - 营销模块 ========== // ========== MALL - 营销模块 ==========
PROMOTION_DISCOUNT_TYPE = 'promotion_discount_type', // 优惠类型 PROMOTION_DISCOUNT_TYPE = 'promotion_discount_type', // 优惠类型
...@@ -164,8 +165,5 @@ export enum DICT_TYPE { ...@@ -164,8 +165,5 @@ export enum DICT_TYPE {
PROMOTION_COUPON_STATUS = 'promotion_coupon_status', // 优惠劵的状态 PROMOTION_COUPON_STATUS = 'promotion_coupon_status', // 优惠劵的状态
PROMOTION_COUPON_TAKE_TYPE = 'promotion_coupon_take_type', // 优惠劵的领取方式 PROMOTION_COUPON_TAKE_TYPE = 'promotion_coupon_take_type', // 优惠劵的领取方式
PROMOTION_ACTIVITY_STATUS = 'promotion_activity_status', // 优惠活动的状态 PROMOTION_ACTIVITY_STATUS = 'promotion_activity_status', // 优惠活动的状态
PROMOTION_CONDITION_TYPE = 'promotion_condition_type', // 营销的条件类型枚举 PROMOTION_CONDITION_TYPE = 'promotion_condition_type' // 营销的条件类型枚举
// ========== MALL - 物流模块 ==========
DELIVERY_TYPE = 'delivery_type' // 配送方式
} }
...@@ -83,17 +83,17 @@ const ruleConfig: RuleConfig[] = [ ...@@ -83,17 +83,17 @@ const ruleConfig: RuleConfig[] = [
{ {
name: 'productConfig.bargainFirstPrice', name: 'productConfig.bargainFirstPrice',
rule: (arg) => arg > 0, rule: (arg) => arg > 0,
message: '商品砍价起始价格不能小于0 !!!' message: '商品砍价起始价格不能小于 0 !!!'
}, },
{ {
name: 'productConfig.bargainPrice', name: 'productConfig.bargainPrice',
rule: (arg) => arg >= 0, rule: (arg) => arg >= 0,
message: '商品砍价底价不能小于0 !!!' message: '商品砍价底价不能小于 0 !!!'
}, },
{ {
name: 'productConfig.stock', name: 'productConfig.stock',
rule: (arg) => arg >= 1, rule: (arg) => arg >= 1,
message: '商品活动库存不能小于1 !!!' message: '商品活动库存不能小于 1 !!!'
} }
] ]
const selectSpu = (spuId: number, skuIds: number[]) => { const selectSpu = (spuId: number, skuIds: number[]) => {
......
...@@ -33,6 +33,7 @@ ...@@ -33,6 +33,7 @@
import * as DeliveryExpressApi from '@/api/mall/trade/delivery/express' import * as DeliveryExpressApi from '@/api/mall/trade/delivery/express'
import * as TradeOrderApi from '@/api/mall/trade/order' import * as TradeOrderApi from '@/api/mall/trade/order'
// TODO @puhui999:是不是名字叫 OrderDeliveryForm 保持统一
defineOptions({ name: 'DeliveryOrderForm' }) defineOptions({ name: 'DeliveryOrderForm' })
const { t } = useI18n() // 国际化 const { t } = useI18n() // 国际化
...@@ -40,7 +41,7 @@ const message = useMessage() // 消息弹窗 ...@@ -40,7 +41,7 @@ const message = useMessage() // 消息弹窗
const dialogVisible = ref(false) // 弹窗的是否展示 const dialogVisible = ref(false) // 弹窗的是否展示
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用 const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
const radio = ref('1') const radio = ref('1') // TODO @puhui999:尽量不用 radio 这种命名,无业务含义。这里的话,可以考虑用 expressType,如果值是 express,则是快递;none 则是无;未来做同城配送,就比较容易拓展啦;
const formData = ref<TradeOrderApi.DeliveryVO>({ const formData = ref<TradeOrderApi.DeliveryVO>({
id: 0, // 订单编号 id: 0, // 订单编号
logisticsId: null, // 物流公司编号 logisticsId: null, // 物流公司编号
...@@ -48,6 +49,7 @@ const formData = ref<TradeOrderApi.DeliveryVO>({ ...@@ -48,6 +49,7 @@ const formData = ref<TradeOrderApi.DeliveryVO>({
}) })
const formRef = ref() // 表单 Ref const formRef = ref() // 表单 Ref
// TODO @puhui999:每次点击发货的时候,是不是可以把之前的信息带过来哈。
/** 打开弹窗 */ /** 打开弹窗 */
const open = async (orderId: number) => { const open = async (orderId: number) => {
resetForm() resetForm()
...@@ -65,6 +67,7 @@ const submitForm = async () => { ...@@ -65,6 +67,7 @@ const submitForm = async () => {
try { try {
const data = unref(formData) const data = unref(formData)
if (radio.value === '2') { if (radio.value === '2') {
// 无需发货的情况
data.logisticsId = 0 data.logisticsId = 0
data.logisticsNo = '' data.logisticsNo = ''
} }
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
<el-form-item label="收件人手机"> <el-form-item label="收件人手机">
<el-input v-model="formData.receiverMobile" /> <el-input v-model="formData.receiverMobile" />
</el-form-item> </el-form-item>
<!-- TODO @puhui999:应该是个地区下拉框,可以看下 UserForm 所在地 -->
<el-form-item label="收件人地区编号"> <el-form-item label="收件人地区编号">
<el-input v-model="formData.receiverAreaId" /> <el-input v-model="formData.receiverAreaId" />
</el-form-item> </el-form-item>
...@@ -24,6 +25,7 @@ ...@@ -24,6 +25,7 @@
import * as TradeOrderApi from '@/api/mall/trade/order' import * as TradeOrderApi from '@/api/mall/trade/order'
import { copyValueToTarget } from '@/utils' import { copyValueToTarget } from '@/utils'
// TODO @puhui999:OrderAdjustAddressForm 改成 OrderUpdateAddressForm 更新哈,保持统一;
defineOptions({ name: 'OrderAdjustAddressForm' }) defineOptions({ name: 'OrderAdjustAddressForm' })
const { t } = useI18n() // 国际化 const { t } = useI18n() // 国际化
......
...@@ -23,6 +23,7 @@ import * as TradeOrderApi from '@/api/mall/trade/order' ...@@ -23,6 +23,7 @@ import * as TradeOrderApi from '@/api/mall/trade/order'
import { convertToInteger, formatToFraction } from '@/utils' import { convertToInteger, formatToFraction } from '@/utils'
import { cloneDeep } from 'lodash-es' import { cloneDeep } from 'lodash-es'
// TODO @puhui999:OrderAdjustPriceForm 改成 OrderUpdatePriceForm 更新哈,保持统一;
defineOptions({ name: 'OrderAdjustPriceForm' }) defineOptions({ name: 'OrderAdjustPriceForm' })
const { t } = useI18n() // 国际化 const { t } = useI18n() // 国际化
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<el-descriptions title="订单信息"> <el-descriptions title="订单信息">
<el-descriptions-item label="订单号: ">{{ orderInfo.no }}</el-descriptions-item> <el-descriptions-item label="订单号: ">{{ orderInfo.no }}</el-descriptions-item>
<el-descriptions-item label="配送方式: "> <el-descriptions-item label="配送方式: ">
<dict-tag :type="DICT_TYPE.DELIVERY_TYPE" :value="orderInfo.deliveryType" /> <dict-tag :type="DICT_TYPE.TRADE_DELIVERY_TYPE" :value="orderInfo.deliveryType" />
</el-descriptions-item> </el-descriptions-item>
<!-- TODO 营销活动待实现 --> <!-- TODO 营销活动待实现 -->
<el-descriptions-item label="营销活动: ">秒杀活动</el-descriptions-item> <el-descriptions-item label="营销活动: ">秒杀活动</el-descriptions-item>
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
<el-descriptions-item label="商家备注: ">{{ orderInfo.remark }}</el-descriptions-item> <el-descriptions-item label="商家备注: ">{{ orderInfo.remark }}</el-descriptions-item>
<el-descriptions-item label="支付单号: ">{{ orderInfo.payOrderId }}</el-descriptions-item> <el-descriptions-item label="支付单号: ">{{ orderInfo.payOrderId }}</el-descriptions-item>
<el-descriptions-item label="付款方式: "> <el-descriptions-item label="付款方式: ">
<dict-tag :type="DICT_TYPE.PAY_CHANNEL_CODE_TYPE" :value="orderInfo.payChannelCode" /> <dict-tag :type="DICT_TYPE.PAY_CHANNEL_CODE" :value="orderInfo.payChannelCode" />
</el-descriptions-item> </el-descriptions-item>
<!-- <el-descriptions-item label="买家: ">{{ orderInfo.user.nickname }}</el-descriptions-item> --> <!-- <el-descriptions-item label="买家: ">{{ orderInfo.user.nickname }}</el-descriptions-item> -->
<!-- TODO 芋艿:待实现:跳转会员 --> <!-- TODO 芋艿:待实现:跳转会员 -->
...@@ -41,14 +41,10 @@ ...@@ -41,14 +41,10 @@
<dict-tag :type="DICT_TYPE.TRADE_ORDER_STATUS" :value="orderInfo.status" /> <dict-tag :type="DICT_TYPE.TRADE_ORDER_STATUS" :value="orderInfo.status" />
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label-class-name="no-colon"> <el-descriptions-item label-class-name="no-colon">
<el-button size="small" type="primary" @click="openForm('adjustPrice')">调整价格</el-button> <el-button type="primary" @click="openForm('adjustPrice')">调整价格</el-button>
<el-button size="small" type="primary" @click="openForm('remark')">备注</el-button> <el-button type="primary" @click="openForm('remark')">备注</el-button>
<el-button size="small" type="primary" @click="openForm('delivery')">发货</el-button> <el-button type="primary" @click="openForm('delivery')">发货</el-button>
<el-button size="small" type="primary" @click="openForm('adjustAddress')"> <el-button type="primary" @click="openForm('adjustAddress')">修改地址</el-button>
修改地址
</el-button>
<!-- TODO 后台商家也需要收货功能吗? -->
<el-button size="small" type="primary">确认收货</el-button>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label><span style="color: red">提醒: </span></template> <template #label><span style="color: red">提醒: </span></template>
...@@ -201,6 +197,8 @@ ...@@ -201,6 +197,8 @@
</el-descriptions> </el-descriptions>
</div> </div>
</ContentWrap> </ContentWrap>
<!-- 各种操作的弹窗 -->
<DeliveryOrderForm ref="deliveryFormRef" @success="getDetail" /> <DeliveryOrderForm ref="deliveryFormRef" @success="getDetail" />
<OrderRemarksForm ref="remarksFormRef" @success="getDetail" /> <OrderRemarksForm ref="remarksFormRef" @success="getDetail" />
<OrderAdjustAddressForm ref="adjustAddressFormRef" @success="getDetail" /> <OrderAdjustAddressForm ref="adjustAddressFormRef" @success="getDetail" />
...@@ -215,10 +213,12 @@ import DeliveryOrderForm from '@/views/mall/trade/order/components/DeliveryOrder ...@@ -215,10 +213,12 @@ import DeliveryOrderForm from '@/views/mall/trade/order/components/DeliveryOrder
import OrderAdjustAddressForm from '@/views/mall/trade/order/components/OrderAdjustAddressForm.vue' import OrderAdjustAddressForm from '@/views/mall/trade/order/components/OrderAdjustAddressForm.vue'
import OrderAdjustPriceForm from '@/views/mall/trade/order/components/OrderAdjustPriceForm.vue' import OrderAdjustPriceForm from '@/views/mall/trade/order/components/OrderAdjustPriceForm.vue'
// TODO @puhui999:TradeOrderDetailForm 可以挪到 order/detail/index.vue 中,它是一个 vue 界面哈。
defineOptions({ name: 'TradeOrderDetailForm' }) defineOptions({ name: 'TradeOrderDetailForm' })
const message = useMessage() // 消息弹窗 const message = useMessage() // 消息弹窗
const { params } = useRoute() // 查询参数 const { params } = useRoute() // 查询参数
// TODO @puhui999:orderInfo 应该不用把属性弄出来也;
const orderInfo = ref<TradeOrderApi.OrderVO>({ const orderInfo = ref<TradeOrderApi.OrderVO>({
no: '', no: '',
createTime: null, createTime: null,
...@@ -263,6 +263,7 @@ const orderInfo = ref<TradeOrderApi.OrderVO>({ ...@@ -263,6 +263,7 @@ const orderInfo = ref<TradeOrderApi.OrderVO>({
user: {} user: {}
}) })
// TODO @puhui999:这个改成直接读属性,不用按照这种写法;
const detailGroups = ref([ const detailGroups = ref([
{ {
title: '物流信息', title: '物流信息',
...@@ -281,6 +282,7 @@ const detailGroups = ref([ ...@@ -281,6 +282,7 @@ const detailGroups = ref([
} }
]) ])
// TODO @puhui999:从后台读数据哈。
const detailInfo = ref({ const detailInfo = ref({
// 物流信息 // 物流信息
expressInfo: { expressInfo: {
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
<script lang="ts" setup> <script lang="ts" setup>
import * as TradeOrderApi from '@/api/mall/trade/order' import * as TradeOrderApi from '@/api/mall/trade/order'
// TODO @puhui999:OrderRemarksForm 改成 OrderUpdateRemarkForm 更新哈,保持统一;
defineOptions({ name: 'OrderRemarksForm' }) defineOptions({ name: 'OrderRemarksForm' })
const { t } = useI18n() // 国际化 const { t } = useI18n() // 国际化
......
...@@ -70,7 +70,7 @@ ...@@ -70,7 +70,7 @@
<el-form-item <el-form-item
label="修改原因" label="修改原因"
prop="levelReason" prop="levelReason"
v-if="formData.levelId != originLevelId" v-if="formData.levelId !== originLevelId"
> >
<el-input type="text" v-model="formData.levelReason" placeholder="请输入修改原因" /> <el-input type="text" v-model="formData.levelReason" placeholder="请输入修改原因" />
</el-form-item> </el-form-item>
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
class="!w-240px" class="!w-240px"
> >
<el-option <el-option
v-for="dict in getStrDictOptions(DICT_TYPE.PAY_CHANNEL_CODE_TYPE)" v-for="dict in getStrDictOptions(DICT_TYPE.PAY_CHANNEL_CODE)"
:key="dict.value" :key="dict.value"
:label="dict.label" :label="dict.label"
:value="dict.value" :value="dict.value"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment