Skip to content

Commit 2e945d2

Browse files
YunaiVgitee-org
authored andcommitted
!227 商品列表:修复添加属性时会返回已存在属性值的问题
Merge pull request !227 from puhui999/dev-to-dev
2 parents 29b8d06 + 264a29e commit 2e945d2

File tree

10 files changed

+102
-57
lines changed

10 files changed

+102
-57
lines changed

src/router/modules/remaining.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -393,21 +393,21 @@ const remainingRouter: AppRouteRecordRaw[] = [
393393
]
394394
},
395395
{
396-
path: '/trade/order',
396+
path: '/trade',
397397
component: Layout,
398398
name: 'Order',
399399
meta: {
400400
hidden: true
401401
},
402402
children: [
403403
{
404-
path: 'orderDetail/:orderId(\\d+)', // TODO @puhui999:路径合理的是 trade/order/detail
404+
path: 'order/detail/:orderId(\\d+)',
405405
component: () => import('@/views/mall/trade/order/detail/index.vue'),
406-
name: 'TradeOrderDetail', // TODO @puhui999:路径合理的是 trade/after-sale/detail
406+
name: 'TradeOrderDetail',
407407
meta: { title: '订单详情', icon: '', activeMenu: '/trade/trade/order' }
408408
},
409409
{
410-
path: 'afterSaleDetail/:orderId(\\d+)',
410+
path: 'after-sale/detail/:orderId(\\d+)',
411411
component: () => import('@/views/mall/trade/afterSale/detail/index.vue'),
412412
name: 'TradeAfterSaleDetail',
413413
meta: { title: '退款详情', icon: '', activeMenu: '/trade/trade/after-sale' }

src/views/mall/product/spu/form/ProductPropertyAddForm.vue

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ const submitForm = async () => {
8080
if (res[0].values === null) {
8181
res[0].values = []
8282
}
83+
// 不需要属性值
84+
res[0].values = []
8385
attributeList.value.push(res[0]) // 因为只用一个
8486
}
8587
message.success(t('common.createSuccess'))

src/views/mall/trade/afterSale/detail/index.vue

Lines changed: 75 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
<el-descriptions-item label="配送方式: ">
77
<dict-tag :type="DICT_TYPE.TRADE_DELIVERY_TYPE" :value="formData.order.deliveryType" />
88
</el-descriptions-item>
9+
<!-- TODO 营销活动待实现 -->
910
<el-descriptions-item label="订单类型: ">
1011
<dict-tag :type="DICT_TYPE.TRADE_ORDER_TYPE" :value="formData.order.type" />
1112
</el-descriptions-item>
@@ -38,35 +39,45 @@
3839
<el-descriptions-item label="申请时间: ">
3940
{{ formatDate(formData.auditTime) }}
4041
</el-descriptions-item>
41-
<!-- TODO 营销活动待实现 -->
4242
<el-descriptions-item label="售后类型: ">
4343
<dict-tag :type="DICT_TYPE.TRADE_AFTER_SALE_TYPE" :value="formData.type" />
4444
</el-descriptions-item>
4545
<el-descriptions-item label="售后方式: ">
4646
<dict-tag :type="DICT_TYPE.TRADE_AFTER_SALE_WAY" :value="formData.way" />
4747
</el-descriptions-item>
48-
<!-- TODO @puhui999:金额的格式化 -->
49-
<el-descriptions-item label="退款金额: ">{{ formData.refundPrice }}</el-descriptions-item>
48+
<el-descriptions-item label="退款金额: ">
49+
{{ floatToFixed2(formData.refundPrice) }}
50+
</el-descriptions-item>
5051
<el-descriptions-item label="退款原因: ">{{ formData.applyReason }}</el-descriptions-item>
5152
<el-descriptions-item label="补充描述: ">
5253
{{ formData.applyDescription }}
5354
</el-descriptions-item>
54-
<!-- TODO @puhui999:数组,图片 -->
55-
<el-descriptions-item label="凭证图片: "> {{ formData.applyPicUrls }}</el-descriptions-item>
55+
<el-descriptions-item label="凭证图片: ">
56+
<el-image
57+
v-for="(item, index) in formData.applyPicUrls"
58+
:key="index"
59+
:src="item.url"
60+
class="w-60px h-60px mr-10px"
61+
@click="imagePreview(formData.applyPicUrls)"
62+
/>
63+
</el-descriptions-item>
5664
</el-descriptions>
5765

5866
<!-- 退款状态 -->
5967
<el-descriptions :column="1" title="退款状态">
6068
<el-descriptions-item label="退款状态: ">
6169
<dict-tag :type="DICT_TYPE.TRADE_AFTER_SALE_STATUS" :value="formData.status" />
6270
</el-descriptions-item>
63-
<!-- TODO @puhui999:不同状态,展示不同按钮 -->
6471
<el-descriptions-item label-class-name="no-colon">
65-
<el-button type="primary" @click="openForm('agree')">同意售后</el-button>
66-
<el-button type="primary" @click="openForm('disagree')">拒绝售后</el-button>
67-
<el-button type="primary" @click="openForm('receive')">确认收货</el-button>
68-
<el-button type="primary" @click="openForm('refuse')">拒绝收货</el-button>
69-
<el-button type="primary" @click="openForm('refund')">确认退款</el-button>
72+
<el-button v-if="formData.status === 10" type="primary" @click="agree">同意售后</el-button>
73+
<el-button v-if="formData.status === 10" type="primary" @click="disagree">
74+
拒绝售后
75+
</el-button>
76+
<el-button v-if="formData.status === 30" type="primary" @click="receive">
77+
确认收货
78+
</el-button>
79+
<el-button v-if="formData.status === 30" type="primary" @click="refuse">拒绝收货</el-button>
80+
<el-button v-if="formData.status === 40" type="primary" @click="refund">确认退款</el-button>
7081
</el-descriptions-item>
7182
<el-descriptions-item>
7283
<template #label><span style="color: red">提醒: </span></template>
@@ -123,7 +134,9 @@ import * as AfterSaleApi from '@/api/mall/trade/afterSale/index'
123134
import { floatToFixed2 } from '@/utils'
124135
import { DICT_TYPE } from '@/utils/dict'
125136
import { formatDate } from '@/utils/formatTime'
126-
import UpdateAuditReasonForm from '@/views/mall/trade/afterSale/components/UpdateAuditReasonForm.vue'
137+
import UpdateAuditReasonForm from '@/views/mall/trade/afterSale/form/AfterSaleDisagreeForm.vue'
138+
import { createImageViewer } from '@/components/ImageViewer'
139+
import { isArray } from '@/utils/is'
127140
128141
defineOptions({ name: 'TradeOrderDetailForm' })
129142
@@ -141,34 +154,57 @@ const getDetail = async () => {
141154
formData.value = await AfterSaleApi.getAfterSale(id)
142155
}
143156
}
144-
145-
/** 各种操作 TODO @puhui999:是不是每个一个方法好点,干净点 */
146-
const openForm = (type: string) => {
147-
switch (type) {
148-
case 'agree':
149-
message.confirm('是否同意售后?').then(() => {
150-
AfterSaleApi.agree(formData.value.id)
151-
})
152-
break
153-
case 'disagree':
154-
updateAuditReasonFormRef.value?.open(formData.value)
155-
break
156-
case 'receive':
157-
message.confirm('是否确认收货?').then(() => {
158-
AfterSaleApi.receive(formData.value.id)
159-
})
160-
break
161-
case 'refuse':
162-
message.confirm('是否拒绝收货?').then(() => {
163-
AfterSaleApi.refuse(formData.value.id)
164-
})
165-
break
166-
case 'refund':
167-
message.confirm('是否确认退款?').then(() => {
168-
AfterSaleApi.refund(formData.value.id)
169-
})
170-
break
157+
/**
158+
* 同意售后
159+
*/
160+
const agree = () => {
161+
message.confirm('是否同意售后?').then(() => {
162+
AfterSaleApi.agree(formData.value.id)
163+
})
164+
}
165+
/**
166+
* 拒绝售后
167+
*/
168+
const disagree = () => {
169+
updateAuditReasonFormRef.value?.open(formData.value)
170+
}
171+
/**
172+
* 确认收货
173+
*/
174+
const receive = () => {
175+
message.confirm('是否确认收货?').then(() => {
176+
AfterSaleApi.receive(formData.value.id)
177+
})
178+
}
179+
/**
180+
* 拒绝收货
181+
*/
182+
const refuse = () => {
183+
message.confirm('是否拒绝收货?').then(() => {
184+
AfterSaleApi.refuse(formData.value.id)
185+
})
186+
}
187+
/**
188+
* 确认退款
189+
*/
190+
const refund = () => {
191+
message.confirm('是否确认退款?').then(() => {
192+
AfterSaleApi.refund(formData.value.id)
193+
})
194+
}
195+
/** 图片预览 */
196+
const imagePreview = (args) => {
197+
const urlList = []
198+
if (isArray(args)) {
199+
args.forEach((item) => {
200+
urlList.push(item.url)
201+
})
202+
} else {
203+
urlList.push(args)
171204
}
205+
createImageViewer({
206+
urlList
207+
})
172208
}
173209
onMounted(async () => {
174210
await getDetail()

src/views/mall/trade/afterSale/components/UpdateAuditReasonForm.vue renamed to src/views/mall/trade/afterSale/form/AfterSaleDisagreeForm.vue

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,7 @@
1919
<script lang="ts" setup>
2020
import * as AfterSaleApi from '@/api/mall/trade/afterSale/index'
2121
22-
// TODO @puhui999:是不是改成 AfterSaleDisagreeForm ,更明确
23-
defineOptions({ name: 'UpdateAuditReasonForm' })
22+
defineOptions({ name: 'AfterSaleDisagreeForm' })
2423
2524
const { t } = useI18n() // 国际化
2625
const message = useMessage() // 消息弹窗

src/views/mall/trade/order/detail/index.vue

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -208,10 +208,10 @@
208208
import * as TradeOrderApi from '@/api/mall/trade/order'
209209
import { floatToFixed2 } from '@/utils'
210210
import { DICT_TYPE } from '@/utils/dict'
211-
import OrderUpdateRemarkForm from '@/views/mall/trade/order/components/OrderUpdateRemarkForm.vue'
212-
import OrderDeliveryForm from '@/views/mall/trade/order/components/OrderDeliveryForm.vue'
213-
import OrderUpdateAddressForm from '@/views/mall/trade/order/components/OrderUpdateAddressForm.vue'
214-
import OrderUpdatePriceForm from '@/views/mall/trade/order/components/OrderUpdatePriceForm.vue'
211+
import OrderUpdateRemarkForm from '@/views/mall/trade/order/form/OrderUpdateRemarkForm.vue'
212+
import OrderDeliveryForm from '@/views/mall/trade/order/form/OrderDeliveryForm.vue'
213+
import OrderUpdateAddressForm from '@/views/mall/trade/order/form/OrderUpdateAddressForm.vue'
214+
import OrderUpdatePriceForm from '@/views/mall/trade/order/form/OrderUpdatePriceForm.vue'
215215
216216
defineOptions({ name: 'TradeOrderDetailForm' })
217217

src/views/mall/trade/order/components/OrderDeliveryForm.vue renamed to src/views/mall/trade/order/form/OrderDeliveryForm.vue

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ import * as DeliveryExpressApi from '@/api/mall/trade/delivery/express'
3434
import * as TradeOrderApi from '@/api/mall/trade/order'
3535
import { copyValueToTarget } from '@/utils'
3636
37-
// TODO @puhui999:要不 Form 保持和别的模块一样,和 index.vue 放在一个目录下,不作为 components;components 更多要支持给多个模块使用哈。
3837
defineOptions({ name: 'OrderDeliveryForm' })
3938
4039
const { t } = useI18n() // 国际化

src/views/mall/trade/order/index.vue

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,17 @@
6464
/>
6565
</el-select>
6666
</el-form-item>
67-
<!-- TODO @puhui999:要不加个 deliveryType 筛选;配送方式;然后如果选了快递,就有【快递公司】筛选;如果选了自提,就有【自提门店】;然后把他们这 3 个,坐在一个 el-form-item 里;
68-
目的是;有的时候,会筛选门店,然后做核销;这个时候,就需要筛选自提门店;
69-
-->
70-
<el-form-item label="快递公司" prop="type">
67+
<el-form-item label="配送方式" prop="deliveryType">
68+
<el-select v-model="queryParams.deliveryType" class="!w-280px" clearable placeholder="全部">
69+
<el-option
70+
v-for="dict in getIntDictOptions(DICT_TYPE.TRADE_DELIVERY_TYPE)"
71+
:key="dict.value"
72+
:label="dict.label"
73+
:value="dict.value"
74+
/>
75+
</el-select>
76+
</el-form-item>
77+
<el-form-item v-if="queryParams.deliveryType === 1" label="快递公司">
7178
<el-select v-model="queryParams.logisticsId" class="!w-280px" clearable placeholder="全部">
7279
<el-option
7380
v-for="item in deliveryExpressList"
@@ -77,7 +84,7 @@
7784
/>
7885
</el-select>
7986
</el-form-item>
80-
<el-form-item label="自提门店" prop="type">
87+
<el-form-item v-if="queryParams.deliveryType === 2" label="自提门店">
8188
<el-select
8289
v-model="queryParams.pickUpStoreId"
8390
class="!w-280px"
@@ -309,8 +316,8 @@
309316

310317
<script lang="ts" setup>
311318
import type { FormInstance, TableColumnCtx } from 'element-plus'
312-
import OrderDeliveryForm from './components/OrderDeliveryForm.vue'
313-
import OrderUpdateRemarkForm from './components/OrderUpdateRemarkForm.vue'
319+
import OrderDeliveryForm from '@/views/mall/trade/order/form/OrderDeliveryForm.vue'
320+
import OrderUpdateRemarkForm from '@/views/mall/trade/order/form/OrderUpdateRemarkForm.vue'
314321
import * as TradeOrderApi from '@/api/mall/trade/order'
315322
import * as PickUpStoreApi from '@/api/mall/trade/delivery/pickUpStore'
316323
import { DICT_TYPE, getIntDictOptions, getStrDictOptions } from '@/utils/dict'
@@ -337,11 +344,13 @@ const queryParams = reactive({
337344
userMobile: '',
338345
receiverName: '',
339346
receiverMobile: '',
347+
340348
terminal: '',
341349
type: null,
342350
status: null,
343351
payChannelCode: '',
344352
createTime: [],
353+
deliveryType: null,
345354
spuName: '',
346355
itemCount: '',
347356
pickUpStoreId: [],

0 commit comments

Comments
 (0)