增加配送定价的设置

This commit is contained in:
aaron 2025-02-24 13:56:30 +08:00
parent aafb25db09
commit bd9e1e90ab

View File

@ -47,6 +47,7 @@
<template v-if="column.key === 'action'">
<a-space>
<a @click="handleEdit(record)">编辑</a>
<a @click="handleEditDeliveryPrice(record)">配送定价</a>
</a-space>
</template>
</template>
@ -152,6 +153,64 @@
</a-form-item>
</a-form>
</a-modal>
<!-- 配送定价模态框 -->
<a-modal
v-model:visible="deliveryPriceModalVisible"
title="配送定价设置"
@ok="handleDeliveryPriceSave"
@cancel="handleDeliveryPriceCancel"
:confirmLoading="deliveryPriceSaving"
>
<a-form layout="vertical">
<a-form-item
label="基础配送费(元)"
required
:rules="[{ required: true, message: '请输入基础配送费' }]"
>
<a-input-number
v-model:value="deliveryPriceForm.base_price"
:min="0"
:precision="2"
:step="0.5"
style="width: 100%"
placeholder="请输入基础配送费"
/>
<div class="form-item-tip">每单基础配送费</div>
</a-form-item>
<a-form-item
label="差额临界数(件)"
required
:rules="[{ required: true, message: '请输入差额临界数' }]"
>
<a-input-number
v-model:value="deliveryPriceForm.extra_package_threshold"
:min="1"
:precision="0"
style="width: 100%"
placeholder="请输入差额临界数"
/>
<div class="form-item-tip">超过该件数将收取超额配送费</div>
</a-form-item>
<a-form-item
label="超额配送费(元/件)"
required
:rules="[{ required: true, message: '请输入超额配送费' }]"
>
<a-input-number
v-model:value="deliveryPriceForm.extra_package_price"
:min="0"
:precision="2"
:step="0.5"
style="width: 100%"
placeholder="请输入超额配送费"
/>
<div class="form-item-tip">超过临界数后每件商品额外收取的费用</div>
</a-form-item>
</a-form>
</a-modal>
</div>
</page-container>
</template>
@ -571,6 +630,63 @@ export default defineComponent({
}
}
//
const deliveryPriceModalVisible = ref(false)
const deliveryPriceSaving = ref(false)
const deliveryPriceForm = ref({
base_price: 0,
extra_package_threshold: 1,
extra_package_price: 0
})
const currentCommunityId = ref(null)
//
const handleEditDeliveryPrice = (record) => {
currentCommunityId.value = record.id
deliveryPriceForm.value = {
base_price: record.base_price || 0,
extra_package_threshold: record.extra_package_threshold || 1,
extra_package_price: record.extra_package_price || 0
}
deliveryPriceModalVisible.value = true
}
//
const handleDeliveryPriceSave = async () => {
try {
deliveryPriceSaving.value = true
const res = await request.put(`/api/community/${currentCommunityId.value}`, {
base_price: deliveryPriceForm.value.base_price,
extra_package_threshold: deliveryPriceForm.value.extra_package_threshold,
extra_package_price: deliveryPriceForm.value.extra_package_price
})
if (res.code === 200) {
message.success('配送定价设置成功')
deliveryPriceModalVisible.value = false
fetchData() //
} else {
message.error(res.message || '设置失败')
}
} catch (error) {
console.error('设置配送定价失败:', error)
message.error('设置失败')
} finally {
deliveryPriceSaving.value = false
}
}
//
const handleDeliveryPriceCancel = () => {
deliveryPriceModalVisible.value = false
currentCommunityId.value = null
deliveryPriceForm.value = {
base_price: 0,
extra_package_threshold: 1,
extra_package_price: 0
}
}
onMounted(() => {
fetchData()
})
@ -605,7 +721,13 @@ export default defineComponent({
previewImage,
previewTitle,
handlePreviewCancel,
previewQRCode
previewQRCode,
deliveryPriceModalVisible,
deliveryPriceSaving,
deliveryPriceForm,
handleEditDeliveryPrice,
handleDeliveryPriceSave,
handleDeliveryPriceCancel
}
}
})
@ -697,7 +819,17 @@ export default defineComponent({
}
:deep(.ant-form-item-label) {
text-align: right;
height: 32px;
line-height: 32px;
text-align: left;
padding-right: 12px;
/* 调整必填星号的样式 */
> label.ant-form-item-required:not(.ant-form-item-required-mark-optional)::before {
color: #ff4d4f;
font-size: 14px;
margin-right: 4px;
}
}
:deep(.ant-form-item) {
@ -738,7 +870,7 @@ export default defineComponent({
}
:deep(.ant-modal-footer) {
text-align: right;
text-align: left;
padding: 16px 24px;
border-top: 1px solid #f0f0f0;
}
@ -752,22 +884,9 @@ export default defineComponent({
margin-bottom: 24px !important;
}
:deep(.ant-form-item-label) {
height: 32px;
line-height: 32px;
text-align: right;
:deep(.ant-form-item-control) {
text-align: left;
padding-right: 12px;
/* 调整必填星号的样式 */
> label.ant-form-item-required:not(.ant-form-item-required-mark-optional)::before {
color: #ff4d4f;
font-size: 14px;
margin-right: 4px;
}
}
:deep(.ant-form-item-control-input) {
min-height: 32px;
}
:deep(.ant-input),