This commit is contained in:
aaron 2025-03-26 23:19:33 +08:00
parent 9ab24be577
commit 59b3386ff4

View File

@ -49,16 +49,6 @@
<template v-if="['product_price', 'sale_price', 'settlement_amount'].includes(column.key)">
¥{{ text }}
</template>
<!-- 标签列 -->
<template v-if="column.key === 'tags'">
<a-tag
v-for="tag in text?.split(',')"
:key="tag"
color="blue"
>
{{ tag }}
</a-tag>
</template>
<!-- 状态列 -->
<template v-if="column.key === 'status'">
<a-tag :color="getStatusColor(record.status)">
@ -226,35 +216,6 @@
<div class="form-item-help">消费金额的百分比例如10表示赠送10%作为积分</div>
</a-form-item>
<a-form-item
label="促销文本"
name="promotion_text"
>
<a-input
v-model:value="formState.promotion_text"
placeholder="例如:新人三折"
:maxLength="5"
show-count
/>
<div class="form-item-help">显示在商品下方的促销文本限5个字以内</div>
</a-form-item>
<a-form-item label="标签" name="tags">
<a-input v-model:value="formState.tags" placeholder="多个标签用逗号分隔" />
</a-form-item>
<a-form-item label="限购次数" name="purchase_limit">
<a-input-number
v-model:value="formState.purchase_limit"
:min="0"
style="width: 100%"
placeholder="0表示不限购"
>
<template #addonAfter></template>
</a-input-number>
<div class="form-item-help">0 次表示不限购</div>
</a-form-item>
<!-- 配送时间类型 -->
<a-form-item label="配送时间类型" name="delivery_time_type" required>
<a-radio-group
@ -289,11 +250,11 @@
<a-form-item
label="自提日期"
name="pickup_date"
name="delivery_date"
required
>
<a-date-picker
v-model:value="formState.pickup_date"
v-model:value="formState.delivery_date"
:disabled-date="disabledDate"
format="YYYY-MM-DD"
valueFormat="YYYY-MM-DD"
@ -313,7 +274,7 @@
>
<a-time-picker
v-model:value="pickupTimeFrom"
format="HH:mm"
format="HH:mm:ss"
placeholder="开始时间"
style="width: 100%"
@change="updatePickupTimeFrom"
@ -327,7 +288,7 @@
>
<a-time-picker
v-model:value="pickupTimeTo"
format="HH:mm"
format="HH:mm:ss"
placeholder="结束时间"
style="width: 100%"
@change="updatePickupTimeTo"
@ -493,35 +454,6 @@
<div class="form-item-help">消费金额的百分比例如10表示赠送10%作为积分</div>
</a-form-item>
<a-form-item
label="促销文本"
name="promotion_text"
>
<a-input
v-model:value="editFormState.promotion_text"
placeholder="例如:新人三折"
:maxLength="5"
show-count
/>
<div class="form-item-help">显示在商品下方的促销文本限5个字以内</div>
</a-form-item>
<a-form-item label="标签" name="tags">
<a-input v-model:value="editFormState.tags" placeholder="多个标签用逗号分隔" />
</a-form-item>
<a-form-item label="限购次数" name="purchase_limit">
<a-input-number
v-model:value="editFormState.purchase_limit"
:min="0"
style="width: 100%"
placeholder="0表示不限购"
>
<template #addonAfter></template>
</a-input-number>
<div class="form-item-help">0 次表示不限购</div>
</a-form-item>
<!-- 配送时间类型 -->
<a-form-item label="配送时间类型" name="delivery_time_type" required>
<a-radio-group
@ -556,11 +488,11 @@
<a-form-item
label="自提日期"
name="pickup_date"
name="delivery_date"
required
>
<a-date-picker
v-model:value="editFormState.pickup_date"
v-model:value="editFormState.delivery_date"
:disabled-date="disabledDate"
format="YYYY-MM-DD"
valueFormat="YYYY-MM-DD"
@ -580,7 +512,7 @@
>
<a-time-picker
v-model:value="editPickupTimeFrom"
format="HH:mm"
format="HH:mm:ss"
placeholder="开始时间"
style="width: 100%"
@change="updateEditPickupTimeFrom"
@ -594,7 +526,7 @@
>
<a-time-picker
v-model:value="editPickupTimeTo"
format="HH:mm"
format="HH:mm:ss"
placeholder="结束时间"
style="width: 100%"
@change="updateEditPickupTimeTo"
@ -717,18 +649,14 @@ export default defineComponent({
product_price: null,
sale_price: null,
settlement_amount: null,
purchase_limit: 0,
tags: '',
gift_points_rate: 0,
promotion_text: '',
qty: 0,
delivery_type: 'DELIVERY', //
pickup_place: '',
pickup_time_from: '',
pickup_time_to: '',
pickup_date: null, //
delivery_date: null, //
delivery_time_type: 'IMMEDIATE', //
delivery_date: dayjs().format('YYYY-MM-DD'), //
product_detail: '<h1>商品详情</h1><p>这里是商品的详细描述,支持<strong>富文本</strong>格式。</p><ul><li>特点一</li><li>特点二</li><li>特点三</li></ul>',
purchase_note: ''
})
@ -741,18 +669,14 @@ export default defineComponent({
product_price: null,
sale_price: null,
settlement_amount: null,
purchase_limit: 0,
tags: '',
gift_points_rate: 0,
promotion_text: '',
qty: 0,
delivery_type: 'DELIVERY', //
pickup_place: '',
pickup_time_from: '',
pickup_time_to: '',
pickup_date: null, //
delivery_date: null, //
delivery_time_type: 'IMMEDIATE', //
delivery_date: dayjs().format('YYYY-MM-DD'), //
product_detail: '<h1>商品详情</h1><p>这里是商品的详细描述,支持<strong>富文本</strong>格式。</p><ul><li>特点一</li><li>特点二</li><li>特点三</li></ul>',
purchase_note: ''
})
@ -776,21 +700,21 @@ export default defineComponent({
title: '所属商家',
dataIndex: 'merchant_name',
key: 'merchant_name',
width: '15%',
width: '12%',
ellipsis: true
},
{
title: '商品名称',
dataIndex: 'name',
key: 'name',
width: '25%',
width: '15%',
ellipsis: true
},
{
title: '销售价格',
dataIndex: 'sale_price',
key: 'sale_price',
width: '10%',
width: '8%',
align: 'right'
},
{
@ -814,32 +738,57 @@ export default defineComponent({
}
},
{
title: '限购',
dataIndex: 'purchase_limit',
key: 'purchase_limit',
width: '10%',
title: '自提信息',
key: 'pickup_info',
dataIndex: 'delivery_time_type',
width: '15%',
align: 'center',
customRender: ({ text }) => {
return h(
'span',
{
class: `purchase-limit-tag ${text === 0 ? 'default' : 'highlight'}`
},
text === 0 ? '不限购' : `${text}`
)
customRender: ({ text, record }) => {
// ""
if (text === 'IMMEDIATE') {
return h('span', { style: { color: '#999' } }, '无需自提');
}
//
let infoText = '';
//
if (record.delivery_date) {
infoText += `日期: ${record.delivery_date}`;
}
//
if (record.pickup_time_from && record.pickup_time_to) {
infoText += infoText ? '\n' : '';
infoText += `时间: ${record.pickup_time_from.substring(0, 5)}-${record.pickup_time_to.substring(0, 5)}`;
}
//
if (record.pickup_place) {
infoText += infoText ? '\n' : '';
infoText += `地点: ${record.pickup_place}`;
}
return h('span', {
style: {
whiteSpace: 'pre-line',
lineHeight: '1.5',
fontSize: '12px'
}
}, infoText || '暂无自提信息');
}
},
{
title: '状态',
dataIndex: 'status',
key: 'status',
width: '10%',
width: '8%',
align: 'center'
},
{
title: '操作',
key: 'action',
width: '15%',
width: '12%',
align: 'center'
}
]
@ -1071,6 +1020,13 @@ export default defineComponent({
markdownToHtml(record.product_detail) :
'<h1>商品详情</h1><p>这里是商品的详细描述,支持<strong>富文本</strong>格式。</p><ul><li>特点一</li><li>特点二</li><li>特点三</li></ul>';
// dayjs
console.log('原始自提时间数据:', record.pickup_time_from, record.pickup_time_to, record.delivery_time_type);
//
editPickupTimeFrom.value = null;
editPickupTimeTo.value = null;
editFormState.value = {
operation_type: record.operation_type || 'MERCHANT',
name: record.name,
@ -1078,24 +1034,38 @@ export default defineComponent({
product_price: record.product_price,
sale_price: record.sale_price,
settlement_amount: record.settlement_amount,
purchase_limit: record.purchase_limit,
tags: record.tags,
gift_points_rate: record.gift_points_rate,
promotion_text: record.promotion_text,
qty: record.qty || 0,
delivery_time_type: record.delivery_time_type || 'IMMEDIATE',
delivery_date: record.delivery_date || null,
delivery_date: record.delivery_date ? dayjs(record.delivery_date) : null,
product_detail: productDetailHtml,
purchase_note: record.purchase_note || ''
purchase_note: record.purchase_note || '',
//
pickup_place: record.pickup_place || '',
pickup_time_from: record.pickup_time_from || '',
pickup_time_to: record.pickup_time_to || ''
}
//
editEditorContent.value = productDetailHtml;
editModalVisible.value = true
//
// 使 nextTick
nextTick(() => {
//
editActiveTabKey.value = 'basic'
//
if (record.pickup_time_from) {
editPickupTimeFrom.value = dayjs(record.pickup_time_from, 'HH:mm:ss');
console.log('设置自提开始时间:', editPickupTimeFrom.value);
}
if (record.pickup_time_to) {
editPickupTimeTo.value = dayjs(record.pickup_time_to, 'HH:mm:ss');
console.log('设置自提结束时间:', editPickupTimeTo.value);
}
})
}
@ -1190,7 +1160,7 @@ export default defineComponent({
//
const updatePickupTimeFrom = () => {
if (pickupTimeFrom.value) {
formState.value.pickup_time_from = dayjs(pickupTimeFrom.value).format('HH:mm');
formState.value.pickup_time_from = dayjs(pickupTimeFrom.value).format('HH:mm:ss');
} else {
formState.value.pickup_time_from = '';
}
@ -1199,7 +1169,7 @@ export default defineComponent({
//
const updatePickupTimeTo = () => {
if (pickupTimeTo.value) {
formState.value.pickup_time_to = dayjs(pickupTimeTo.value).format('HH:mm');
formState.value.pickup_time_to = dayjs(pickupTimeTo.value).format('HH:mm:ss');
} else {
formState.value.pickup_time_to = '';
}
@ -1208,7 +1178,7 @@ export default defineComponent({
//
const updateEditPickupTimeFrom = () => {
if (editPickupTimeFrom.value) {
editFormState.value.pickup_time_from = dayjs(editPickupTimeFrom.value).format('HH:mm');
editFormState.value.pickup_time_from = dayjs(editPickupTimeFrom.value).format('HH:mm:ss');
} else {
editFormState.value.pickup_time_from = '';
}
@ -1217,7 +1187,7 @@ export default defineComponent({
//
const updateEditPickupTimeTo = () => {
if (editPickupTimeTo.value) {
editFormState.value.pickup_time_to = dayjs(editPickupTimeTo.value).format('HH:mm');
editFormState.value.pickup_time_to = dayjs(editPickupTimeTo.value).format('HH:mm:ss');
} else {
editFormState.value.pickup_time_to = '';
}
@ -1272,7 +1242,7 @@ export default defineComponent({
return Promise.resolve();
}
}],
pickup_date: [{
delivery_date: [{
required: true,
message: '请选择自提日期',
trigger: 'change',
@ -1323,26 +1293,26 @@ export default defineComponent({
//
formData.delivery_type = 'DELIVERY'
formData.delivery_date = dayjs().format('YYYY-MM-DD')
formData.pickup_place = ''
formData.pickup_time_from = ''
formData.pickup_time_to = ''
formData.pickup_date = null
//
delete formData.pickup_place
delete formData.pickup_time_from
delete formData.pickup_time_to
} else if (formData.delivery_time_type === 'SCHEDULED') {
//
formData.delivery_type = 'PICKUP'
formData.delivery_date = null
//
if (formData.pickup_date) {
formData.pickup_date = dayjs(formData.pickup_date).format('YYYY-MM-DD')
if (formData.delivery_date) {
formData.delivery_date = dayjs(formData.delivery_date).format('YYYY-MM-DD')
}
//
if (pickupTimeFrom.value) {
formData.pickup_time_from = dayjs(pickupTimeFrom.value).format('HH:mm')
formData.pickup_time_from = dayjs(pickupTimeFrom.value).format('HH:mm:ss')
}
if (pickupTimeTo.value) {
formData.pickup_time_to = dayjs(pickupTimeTo.value).format('HH:mm')
formData.pickup_time_to = dayjs(pickupTimeTo.value).format('HH:mm:ss')
}
}
@ -1379,19 +1349,15 @@ export default defineComponent({
product_price: null,
sale_price: null,
settlement_amount: null,
purchase_limit: 0,
tags: '',
gift_points_rate: 0,
promotion_text: '',
qty: 0,
delivery_type: 'DELIVERY',
pickup_place: '',
pickup_time_from: '',
pickup_time_to: '',
pickup_date: null,
delivery_date: null,
delivery_time_type: 'IMMEDIATE',
delivery_date: dayjs().format('YYYY-MM-DD'),
product_detail: '<h1>商品详情</h1><p>这里是商品的详细描述,支持<strong>富文本</strong>格式。</p><ul><li>特点一</li><li>特点二</li><li>特点三</li></ul>',
product_detail: '',
purchase_note: ''
}
//
@ -1527,26 +1493,26 @@ export default defineComponent({
//
formData.delivery_type = 'DELIVERY'
formData.delivery_date = dayjs().format('YYYY-MM-DD')
formData.pickup_place = ''
formData.pickup_time_from = ''
formData.pickup_time_to = ''
formData.pickup_date = null
//
delete formData.pickup_place
delete formData.pickup_time_from
delete formData.pickup_time_to
} else if (formData.delivery_time_type === 'SCHEDULED') {
//
formData.delivery_type = 'PICKUP'
formData.delivery_date = null
//
if (formData.pickup_date) {
formData.pickup_date = dayjs(formData.pickup_date).format('YYYY-MM-DD')
if (formData.delivery_date) {
formData.delivery_date = dayjs(formData.delivery_date).format('YYYY-MM-DD')
}
//
if (editPickupTimeFrom.value) {
formData.pickup_time_from = dayjs(editPickupTimeFrom.value).format('HH:mm')
formData.pickup_time_from = dayjs(editPickupTimeFrom.value).format('HH:mm:ss')
}
if (editPickupTimeTo.value) {
formData.pickup_time_to = dayjs(editPickupTimeTo.value).format('HH:mm')
formData.pickup_time_to = dayjs(editPickupTimeTo.value).format('HH:mm:ss')
}
}
@ -1582,19 +1548,15 @@ export default defineComponent({
product_price: null,
sale_price: null,
settlement_amount: null,
purchase_limit: 0,
tags: '',
gift_points_rate: 0,
promotion_text: '',
qty: 0,
delivery_type: 'DELIVERY',
pickup_place: '',
pickup_time_from: '',
pickup_time_to: '',
pickup_date: null,
delivery_date: null,
delivery_time_type: 'IMMEDIATE',
delivery_date: dayjs().format('YYYY-MM-DD'),
product_detail: '<h1>商品详情</h1><p>这里是商品的详细描述,支持<strong>富文本</strong>格式。</p><ul><li>特点一</li><li>特点二</li><li>特点三</li></ul>',
product_detail: '',
purchase_note: ''
}
//
@ -1615,11 +1577,9 @@ export default defineComponent({
formState.value.pickup_place = ''
formState.value.pickup_time_from = ''
formState.value.pickup_time_to = ''
formState.value.pickup_date = null
formState.value.delivery_date = dayjs().format('YYYY-MM-DD')
pickupTimeFrom.value = null
pickupTimeTo.value = null
//
formState.value.delivery_date = dayjs().format('YYYY-MM-DD')
} else if (e.target.value === 'SCHEDULED') {
// -
formState.value.delivery_type = 'PICKUP'
@ -1635,15 +1595,14 @@ export default defineComponent({
editFormState.value.pickup_place = ''
editFormState.value.pickup_time_from = ''
editFormState.value.pickup_time_to = ''
editFormState.value.pickup_date = null
editFormState.value.delivery_date = dayjs().format('YYYY-MM-DD')
editPickupTimeFrom.value = null
editPickupTimeTo.value = null
//
editFormState.value.delivery_date = dayjs().format('YYYY-MM-DD')
} else if (e.target.value === 'SCHEDULED') {
// -
editFormState.value.delivery_type = 'PICKUP'
editFormState.value.delivery_date = null
// delivery_date
// pickup_time_from pickup_time_to
}
}
@ -1704,7 +1663,9 @@ export default defineComponent({
initEditEditor,
htmlToMarkdown,
markdownToHtml,
mode
mode,
handleDeliveryTimeTypeChange,
handleEditDeliveryTimeTypeChange
}
}
})