import { ref, onMounted, reactive, computed, Ref, watch, SetupContext, h, } from 'vue' import { injectModel } from '@/libs/Provider/Provider' import { $EntityName$Drawer } from '../Models/$EntityName$Drawer' import { ElMessage } from 'element-plus' import isEqual from 'lodash/isEqual' import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox' import { cloneDeep } from 'lodash' // ÒýÈ빫¹²Ñ¡ÏîÅäÖà import { BOOLEAN_OPTIONS_AddEdit } from '@/utils/commonOptionConstants'; // ÒýÈ빫¹²±íµ¥¹¤¾ßÎļþ import { extractFormDataForOnConfirm,extractAndAssignFormData } from '@/utils/myformUtils'; export const use$EntityName$Drawer = (props: any, ctx?: any) => { const $PageMenuInstanceName$Drawer = injectModel<$EntityName$Drawer>('$PageMenuInstanceName$Drawer') /** * ÓÃÀ´¶Ô±ÈµÄ³õʼ»¯Êý¾Ý */ const initiateData: Ref> = ref({}) const formData = ref>({}) // ref const formRef = ref() const disabled = ref(false) const current = computed(() => { return props.row || null }) const datePicker = (attrs) => { return ( ) } const inputNumber = (attrs) => { return ( ) } const dateTimePicker = (attrs) => { return ( ) } const visible = computed({ get() { return props.modelValue }, set(val) { ctx.emit('update:modelValue', val) }, }) /** * Ìí¼ÓµÄform×Ö¶Î */ const formItems = reactive([ $PageAddFormAttributes_formItems$ ]) /** * УÑéÊÇ·ñÓÐÊý¾Ý±ä»¯ */ const checkIsEqualObject = () => { const data = { formData: formData.value, } const check = isEqual(initiateData.value, data) return check } const onClose = (done: () => void) => { if (visible.value) { if (checkIsEqualObject()) { visible.value = false done && done() } else { ConfirmBox('ÊÇ·ñ±£´æÉèÖã¿') .then(() => { onConfirm() }) .catch(() => { visible.value = false done && done() }) } } } /** * ±£´æ */ const onConfirm = async () => { await formRef.value?.validate() const data=extractFormDataForOnConfirm(formData); if (!current.value) { await $PageMenuInstanceName$Drawer.add$EntityName$(data) } else { const id = current.value.id await $PageMenuInstanceName$Drawer.update$EntityName$(id, data) } ElMessage.success('±£´æ³É¹¦') ctx.emit('confirm') } const updateCheckData = () => { initiateData.value = { formData: { ...formData.value, }, } } const updateFormItemOptions = (propName: string, enumData: any[]) => { const item = formItems.find((item) => item.prop === propName) if (item && enumData) { item.options = enumData.map((item) => ({ label: item.description, value: item.value, })) } } /** * ͨÓòéѯö¾Ù */ const commonQueryEnumForFrom = async () => { $CommonQueryEnumForFrom$ } commonQueryEnumForFrom() /** * µ¯´°´ò¿ª»ñÈ¡ÏêÇé */ const onOpen = async () => { if (current.value) { const res = await $PageMenuInstanceName$Drawer.get$EntityName$Detail(current.value) extractAndAssignFormData(res,formData); disabled.value = true updateCheckData() } else { formData.value = {} disabled.value = false updateCheckData() } } watch(() => current.value, onOpen) return { formItems, formData, visible, formRef, onOpen, onClose, onConfirm, } }