<template>
|
<app-dialog-form
|
v-bind="dialogFormProps"
|
v-loading="appStore.getLoading('entityset')"
|
>
|
<app-form-fields v-bind="formFieldsProps">
|
</app-form-fields>
|
</app-dialog-form>
|
</template>
|
|
<script setup>
|
|
import {useI18n} from 'vue-i18n';
|
|
const {t} = useI18n();
|
|
import {meta} from "@/hooks";
|
|
const {useMetaData} = meta;
|
|
import {useEntityStore, useAppStore} from '@/store/modules';
|
import * as tools from "@/utils/tools.js";
|
|
const [, , fields] = useMetaData(
|
'hd_discount_policy',
|
async () => {
|
}
|
);
|
|
const entityStore = useEntityStore();
|
const appStore = useAppStore();
|
|
const dialogFormRef = ref();
|
const formFieldsRef = ref();
|
|
const props = defineProps({
|
subReload: {
|
type: Function,
|
default: () => {
|
}
|
},
|
});
|
|
const formFieldsProps = {
|
ref: formFieldsRef,
|
fields
|
}
|
|
const dialogFormProps = {
|
title: '',
|
ref: dialogFormRef,
|
subSubmit: async () => {
|
const data = await formFieldsRef.value.onValidate();
|
|
const {id, code, parent_id, parent_codes, parent_sort, parent = {}} = formFieldsRef.value.getDefaultModel();
|
|
await entityStore.saveEntity({
|
dataName: 'hd_discount_policy',
|
data: {
|
hd_discount_policy: {
|
...(id ? {
|
id,
|
code,
|
parent_codes,
|
parent_sort,
|
parent_id
|
} : {
|
code: `${tools.convertPinyin(data.name)}_${tools.randomString(6)}`,
|
parent_codes: `${parent.parent_codes ? parent.parent_codes + '->' : ''}${parent.code}`,
|
parent_sort: `${parent.parent_sort ? parent.parent_sort + ',' : ''}${parent.name}`,
|
parent_id: parent.id,
|
}),
|
type: 'policy_object',
|
...data
|
}
|
}
|
});
|
|
props.subReload(Boolean(!id));
|
},
|
subReset: async () => {
|
formFieldsRef.value.onReset();
|
}
|
};
|
const onOpen = async (row) => {
|
dialogFormProps.title = t(row.id ? 'common.dialog.title.edit' : 'common.dialog.title.add');
|
dialogFormRef.value.$forceUpdate(dialogFormProps);
|
dialogFormRef.value.onOpen();
|
|
await nextTick();
|
formFieldsProps.fields = fields;
|
formFieldsRef.value.$forceUpdate(formFieldsProps);
|
formFieldsRef.value.setDefaultModel(row);
|
}
|
|
defineExpose({
|
onOpen,
|
});
|
|
</script>
|