1 changed files with 91 additions and 0 deletions
@ -1,3 +1,94 @@ |
|||||||
<script lang="ts" setup> |
<script lang="ts" setup> |
||||||
|
import { onMounted } from 'vue' |
||||||
|
import { BasicForm, useForm } from '@/components/Form' |
||||||
|
import type { FormSchema } from '@/components/From/src/types/form' |
||||||
|
import { PageWrapper } from '@/components/Page' |
||||||
|
import { getConfig, saveConfig } from '@/api/member/point/config' |
||||||
|
import { useI18n } from '@/hooks/web/useI18n' |
||||||
|
import { useMessage } from '@/hooks/web/useMessage' |
||||||
|
|
||||||
defineOptions({ name: 'MemberPointConfig' }) |
defineOptions({ name: 'MemberPointConfig' }) |
||||||
|
const { t } = useI18n() |
||||||
|
const { createMessage } = useMessage() |
||||||
|
|
||||||
|
const formSchema: FormSchema[] = [ |
||||||
|
{ |
||||||
|
label: '编号', |
||||||
|
field: 'id', |
||||||
|
show: false, |
||||||
|
component: 'Input', |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: '积分抵扣', |
||||||
|
field: 'tradeDeductEnable', |
||||||
|
component: 'Switch', |
||||||
|
helpMessage: '下单积分是否抵用订单金额', |
||||||
|
colProps: { span: 8 }, |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: '积分抵扣', |
||||||
|
field: 'tradeDeductUnitPrice', |
||||||
|
required: true, |
||||||
|
helpMessage: '积分抵用比例(1 积分抵多少金额),单位:元', |
||||||
|
component: 'InputNumber', |
||||||
|
componentProps: { |
||||||
|
precision: 2, |
||||||
|
}, |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: '积分抵扣最大值', |
||||||
|
field: 'tradeDeductMaxPrice', |
||||||
|
required: true, |
||||||
|
helpMessage: '单次下单积分使用上限,0 不限制', |
||||||
|
component: 'InputNumber', |
||||||
|
componentProps: { |
||||||
|
precision: 2, |
||||||
|
}, |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: '1 元赠送多少分', |
||||||
|
field: 'tradeGivePoint', |
||||||
|
required: true, |
||||||
|
helpMessage: '下单支付金额按比例赠送积分(实际支付 1 元赠送多少积分)', |
||||||
|
component: 'InputNumber', |
||||||
|
componentProps: { |
||||||
|
precision: 2, |
||||||
|
}, |
||||||
|
}, |
||||||
|
] |
||||||
|
|
||||||
|
const [registerForm, { setFieldsValue, resetFields, validate }] = useForm({ |
||||||
|
labelWidth: 140, |
||||||
|
baseColProps: { span: 24 }, |
||||||
|
schemas: formSchema, |
||||||
|
showResetButton: false, |
||||||
|
submitButtonOptions: { text: t('common.saveText') }, |
||||||
|
actionColOptions: { span: 23 }, |
||||||
|
}) |
||||||
|
|
||||||
|
async function getConfigPage() { |
||||||
|
resetFields() |
||||||
|
const res = await getConfig() |
||||||
|
setFieldsValue({ ...res }) |
||||||
|
} |
||||||
|
|
||||||
|
async function handleSubmit() { |
||||||
|
try { |
||||||
|
const values = await validate() |
||||||
|
await saveConfig(values) |
||||||
|
} |
||||||
|
finally { |
||||||
|
createMessage.success(t('common.saveSuccessText')) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
onMounted(async () => { |
||||||
|
await getConfigPage() |
||||||
|
}) |
||||||
</script> |
</script> |
||||||
|
|
||||||
|
<template> |
||||||
|
<PageWrapper> |
||||||
|
<BasicForm class="w-200" @register="registerForm" @submit="handleSubmit" /> |
||||||
|
</PageWrapper> |
||||||
|
</template> |
||||||
|
Loading…
Reference in new issue