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 {
FILTER_MODE_OPTIONS_STRING,
FILTER_MODE_OPTIONS_NUM,
FILTER_MODE_OPTIONS_BOOL
} from '@/components/DyFormForHighQuery/DyFormForHighQueryOptions';
// ÒýÈ빫¹²±íµ¥¹¤¾ßÎļþ
import { collectFormDataForHighQuery,onResetForHighSelect,onResetForHighQuery } from '@/utils/myformUtils';
import {
BOOLEAN_OPTIONS
} from '@/utils/commonOptionConstants';
export const use$EntityName$QueryDrawer = (props: any, ctx?: any) => {
const $PageMenuInstanceName$Drawer = injectModel<$EntityName$Drawer>('$EntityName$Drawer')
/**
* ÓÃÀ´¶Ô±ÈµÄ³õʼ»¯Êý¾Ý
*/
const initiateData: Ref> = ref({})
const formData = ref>({})
// ref
const formRef = ref()
const disabled = ref(false)
const current = computed(() => {
return props.row || null
})
const inputNumber = (attrs) => {
return (
)
}
const datePickerRange = (attrs) => {
return (
)
}
const dateTimePickerRange = (attrs) => {
return (
)
}
const visible = computed({
get() {
return props.modelValue
},
set(val) {
ctx.emit('update:modelValue', val)
},
})
/**
* ¸ß¼¶²éѯµÄform×Ö¶Î
*/
const formItems = reactive([
$PageAddFormAttributes_Query$
])
/**
* УÑéÊÇ·ñÓÐÊý¾Ý±ä»¯
*/
const checkIsEqualObject = () => {
const data = {
formData: formData.value,
}
const check = isEqual(initiateData.value, data)
return check
}
const onClose = (done: () => void) => {
if (visible.value) {
visible.value = false
const data =collectFormDataForHighQuery(formItems,formData);
ctx.emit('close', data)
}
}
/**
* È·Èϲéѯ
*/
const onConfirmQuery = async () => {
const data =collectFormDataForHighQuery(formItems,formData);
ctx.emit('confirmQuery', data)
}
/**
* ÖØÖòéѯ - ÓÅ»¯°æ
*/
const onReset = async () => {
// 1. Çå¿ÕËùÓлù´¡×ֶΣ¨²»°üº¬¹ýÂËģʽ×ֶΣ©,Ó¦Óûù´¡×ֶγõʼֵ
onResetForHighQuery(formItems,formData);
// 2. ʹÓÃÔÓз½·¨ÖØÖùýÂËģʽ×Ö¶Î
onResetForHighSelect(formItems,formData);
// 3. Ïò¸¸×é¼þ·¢ËÍ×Ô¶¨Òåʼþ
ctx.emit('restQuery');
}
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()
onResetForHighSelect(formItems,formData);//ÖØÖù«¹²select²éѯ
/**
* µ¯´°´ò¿ª»ñÈ¡ÏêÇé
*/
const onOpen = async () => {
disabled.value = false
updateCheckData()
}
watch(() => current.value, onOpen)
return {
formItems,
formData,
visible,
formRef,
onOpen,
onClose,
onConfirmQuery,
onReset,
}
}