|  | @@ -1,25 +1,25 @@
 | 
	
		
			
				|  |  | -import type { ComputedRef, Ref } from 'vue';
 | 
	
		
			
				|  |  | -import type { FormProps, FormSchema, FormActionType } from '../types/form';
 | 
	
		
			
				|  |  | -import type { NamePath } from 'ant-design-vue/lib/form/interface';
 | 
	
		
			
				|  |  | +import type { ComputedRef, Ref } from 'vue'
 | 
	
		
			
				|  |  | +import type { FormProps, FormSchema, FormActionType } from '../types/form'
 | 
	
		
			
				|  |  | +import type { NamePath } from 'ant-design-vue/lib/form/interface'
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -import { unref, toRaw } from 'vue';
 | 
	
		
			
				|  |  | +import { unref, toRaw } from 'vue'
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -import { isArray, isFunction, isObject, isString } from '/@/utils/is';
 | 
	
		
			
				|  |  | -import { deepMerge } from '/@/utils';
 | 
	
		
			
				|  |  | -import { dateItemType, handleInputNumberValue } from '../helper';
 | 
	
		
			
				|  |  | -import { dateUtil } from '/@/utils/dateUtil';
 | 
	
		
			
				|  |  | -import { cloneDeep, uniqBy } from 'lodash-es';
 | 
	
		
			
				|  |  | -import { error } from '/@/utils/log';
 | 
	
		
			
				|  |  | +import { isArray, isFunction, isObject, isString } from '/@/utils/is'
 | 
	
		
			
				|  |  | +import { deepMerge } from '/@/utils'
 | 
	
		
			
				|  |  | +import { dateItemType, handleInputNumberValue } from '../helper'
 | 
	
		
			
				|  |  | +import { dateUtil } from '/@/utils/dateUtil'
 | 
	
		
			
				|  |  | +import { cloneDeep, uniqBy } from 'lodash-es'
 | 
	
		
			
				|  |  | +import { error } from '/@/utils/log'
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  interface UseFormActionContext {
 | 
	
		
			
				|  |  | -  emit: EmitType;
 | 
	
		
			
				|  |  | -  getProps: ComputedRef<FormProps>;
 | 
	
		
			
				|  |  | -  getSchema: ComputedRef<FormSchema[]>;
 | 
	
		
			
				|  |  | -  formModel: Recordable;
 | 
	
		
			
				|  |  | -  defaultValueRef: Ref<Recordable>;
 | 
	
		
			
				|  |  | -  formElRef: Ref<FormActionType>;
 | 
	
		
			
				|  |  | -  schemaRef: Ref<FormSchema[]>;
 | 
	
		
			
				|  |  | -  handleFormValues: Fn;
 | 
	
		
			
				|  |  | +  emit: EmitType
 | 
	
		
			
				|  |  | +  getProps: ComputedRef<FormProps>
 | 
	
		
			
				|  |  | +  getSchema: ComputedRef<FormSchema[]>
 | 
	
		
			
				|  |  | +  formModel: Recordable
 | 
	
		
			
				|  |  | +  defaultValueRef: Ref<Recordable>
 | 
	
		
			
				|  |  | +  formElRef: Ref<FormActionType>
 | 
	
		
			
				|  |  | +  schemaRef: Ref<FormSchema[]>
 | 
	
		
			
				|  |  | +  handleFormValues: Fn
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  export function useFormEvents({
 | 
	
		
			
				|  |  |    emit,
 | 
	
	
		
			
				|  | @@ -29,21 +29,21 @@ export function useFormEvents({
 | 
	
		
			
				|  |  |    defaultValueRef,
 | 
	
		
			
				|  |  |    formElRef,
 | 
	
		
			
				|  |  |    schemaRef,
 | 
	
		
			
				|  |  | -  handleFormValues,
 | 
	
		
			
				|  |  | +  handleFormValues
 | 
	
		
			
				|  |  |  }: UseFormActionContext) {
 | 
	
		
			
				|  |  |    async function resetFields(): Promise<void> {
 | 
	
		
			
				|  |  | -    const { resetFunc, submitOnReset } = unref(getProps);
 | 
	
		
			
				|  |  | -    resetFunc && isFunction(resetFunc) && (await resetFunc());
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    const formEl = unref(formElRef);
 | 
	
		
			
				|  |  | -    if (!formEl) return;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    Object.keys(formModel).forEach((key) => {
 | 
	
		
			
				|  |  | -      formModel[key] = defaultValueRef.value[key];
 | 
	
		
			
				|  |  | -    });
 | 
	
		
			
				|  |  | -    clearValidate();
 | 
	
		
			
				|  |  | -    emit('reset', toRaw(formModel));
 | 
	
		
			
				|  |  | -    submitOnReset && handleSubmit();
 | 
	
		
			
				|  |  | +    const { resetFunc, submitOnReset } = unref(getProps)
 | 
	
		
			
				|  |  | +    resetFunc && isFunction(resetFunc) && (await resetFunc())
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    const formEl = unref(formElRef)
 | 
	
		
			
				|  |  | +    if (!formEl) return
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    Object.keys(formModel).forEach(key => {
 | 
	
		
			
				|  |  | +      formModel[key] = defaultValueRef.value[key]
 | 
	
		
			
				|  |  | +    })
 | 
	
		
			
				|  |  | +    clearValidate()
 | 
	
		
			
				|  |  | +    emit('reset', toRaw(formModel))
 | 
	
		
			
				|  |  | +    submitOnReset && handleSubmit()
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    /**
 | 
	
	
		
			
				|  | @@ -51,53 +51,53 @@ export function useFormEvents({
 | 
	
		
			
				|  |  |     */
 | 
	
		
			
				|  |  |    async function setFieldsValue(values: Recordable): Promise<void> {
 | 
	
		
			
				|  |  |      const fields = unref(getSchema)
 | 
	
		
			
				|  |  | -      .map((item) => item.field)
 | 
	
		
			
				|  |  | -      .filter(Boolean);
 | 
	
		
			
				|  |  | +      .map(item => item.field)
 | 
	
		
			
				|  |  | +      .filter(Boolean)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    const validKeys: string[] = [];
 | 
	
		
			
				|  |  | -    Object.keys(values).forEach((key) => {
 | 
	
		
			
				|  |  | -      const schema = unref(getSchema).find((item) => item.field === key);
 | 
	
		
			
				|  |  | -      let value = values[key];
 | 
	
		
			
				|  |  | +    const validKeys: string[] = []
 | 
	
		
			
				|  |  | +    Object.keys(values).forEach(key => {
 | 
	
		
			
				|  |  | +      const schema = unref(getSchema).find(item => item.field === key)
 | 
	
		
			
				|  |  | +      let value = values[key]
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -      const hasKey = Reflect.has(values, key);
 | 
	
		
			
				|  |  | +      const hasKey = Reflect.has(values, key)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -      value = handleInputNumberValue(schema?.component, value);
 | 
	
		
			
				|  |  | +      value = handleInputNumberValue(schema?.component, value)
 | 
	
		
			
				|  |  |        // 0| '' is allow
 | 
	
		
			
				|  |  |        if (hasKey && fields.includes(key)) {
 | 
	
		
			
				|  |  |          // time type
 | 
	
		
			
				|  |  |          if (itemIsDateType(key)) {
 | 
	
		
			
				|  |  |            if (Array.isArray(value)) {
 | 
	
		
			
				|  |  | -            const arr: moment.Moment[] = [];
 | 
	
		
			
				|  |  | +            const arr: moment.Moment[] = []
 | 
	
		
			
				|  |  |              for (const ele of value) {
 | 
	
		
			
				|  |  | -              arr.push(dateUtil(ele));
 | 
	
		
			
				|  |  | +              arr.push(dateUtil(ele))
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            formModel[key] = arr;
 | 
	
		
			
				|  |  | +            formModel[key] = arr
 | 
	
		
			
				|  |  |            } else {
 | 
	
		
			
				|  |  | -            formModel[key] = dateUtil(value);
 | 
	
		
			
				|  |  | +            formModel[key] = dateUtil(value)
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |          } else {
 | 
	
		
			
				|  |  | -          formModel[key] = value;
 | 
	
		
			
				|  |  | +          formModel[key] = value
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        validKeys.push(key);
 | 
	
		
			
				|  |  | +        validKeys.push(key)
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  | -    });
 | 
	
		
			
				|  |  | -    validateFields(validKeys);
 | 
	
		
			
				|  |  | +    })
 | 
	
		
			
				|  |  | +    validateFields(validKeys)
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |    /**
 | 
	
		
			
				|  |  |     * @description: Delete based on field name
 | 
	
		
			
				|  |  |     */
 | 
	
		
			
				|  |  |    async function removeSchemaByFiled(fields: string | string[]): Promise<void> {
 | 
	
		
			
				|  |  | -    const schemaList: FormSchema[] = cloneDeep(unref(getSchema));
 | 
	
		
			
				|  |  | -    if (!fields) return;
 | 
	
		
			
				|  |  | +    const schemaList: FormSchema[] = cloneDeep(unref(getSchema))
 | 
	
		
			
				|  |  | +    if (!fields) return
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    let fieldList: string[] = isString(fields) ? [fields] : fields;
 | 
	
		
			
				|  |  | +    let fieldList: string[] = isString(fields) ? [fields] : fields
 | 
	
		
			
				|  |  |      if (isString(fields)) {
 | 
	
		
			
				|  |  | -      fieldList = [fields];
 | 
	
		
			
				|  |  | +      fieldList = [fields]
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      for (const field of fieldList) {
 | 
	
		
			
				|  |  | -      _removeSchemaByFiled(field, schemaList);
 | 
	
		
			
				|  |  | +      _removeSchemaByFiled(field, schemaList)
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -    schemaRef.value = schemaList;
 | 
	
		
			
				|  |  | +    schemaRef.value = schemaList
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    /**
 | 
	
	
		
			
				|  | @@ -105,9 +105,9 @@ export function useFormEvents({
 | 
	
		
			
				|  |  |     */
 | 
	
		
			
				|  |  |    function _removeSchemaByFiled(field: string, schemaList: FormSchema[]): void {
 | 
	
		
			
				|  |  |      if (isString(field)) {
 | 
	
		
			
				|  |  | -      const index = schemaList.findIndex((schema) => schema.field === field);
 | 
	
		
			
				|  |  | +      const index = schemaList.findIndex(schema => schema.field === field)
 | 
	
		
			
				|  |  |        if (index !== -1) {
 | 
	
		
			
				|  |  | -        schemaList.splice(index, 1);
 | 
	
		
			
				|  |  | +        schemaList.splice(index, 1)
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |    }
 | 
	
	
		
			
				|  | @@ -116,102 +116,102 @@ export function useFormEvents({
 | 
	
		
			
				|  |  |     * @description: Insert after a certain field, if not insert the last
 | 
	
		
			
				|  |  |     */
 | 
	
		
			
				|  |  |    async function appendSchemaByField(schema: FormSchema, prefixField?: string, first = false) {
 | 
	
		
			
				|  |  | -    const schemaList: FormSchema[] = cloneDeep(unref(getSchema));
 | 
	
		
			
				|  |  | +    const schemaList: FormSchema[] = cloneDeep(unref(getSchema))
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    const index = schemaList.findIndex((schema) => schema.field === prefixField);
 | 
	
		
			
				|  |  | -    const hasInList = schemaList.some((item) => item.field === prefixField || schema.field);
 | 
	
		
			
				|  |  | +    const index = schemaList.findIndex(schema => schema.field === prefixField)
 | 
	
		
			
				|  |  | +    const hasInList = schemaList.some(item => item.field === prefixField || schema.field)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    if (!hasInList) return;
 | 
	
		
			
				|  |  | +    if (!hasInList) return
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      if (!prefixField || index === -1 || first) {
 | 
	
		
			
				|  |  | -      first ? schemaList.unshift(schema) : schemaList.push(schema);
 | 
	
		
			
				|  |  | -      schemaRef.value = schemaList;
 | 
	
		
			
				|  |  | -      return;
 | 
	
		
			
				|  |  | +      first ? schemaList.unshift(schema) : schemaList.push(schema)
 | 
	
		
			
				|  |  | +      schemaRef.value = schemaList
 | 
	
		
			
				|  |  | +      return
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      if (index !== -1) {
 | 
	
		
			
				|  |  | -      schemaList.splice(index + 1, 0, schema);
 | 
	
		
			
				|  |  | +      schemaList.splice(index + 1, 0, schema)
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -    schemaRef.value = schemaList;
 | 
	
		
			
				|  |  | +    schemaRef.value = schemaList
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    async function updateSchema(data: Partial<FormSchema> | Partial<FormSchema>[]) {
 | 
	
		
			
				|  |  | -    let updateData: Partial<FormSchema>[] = [];
 | 
	
		
			
				|  |  | +    let updateData: Partial<FormSchema>[] = []
 | 
	
		
			
				|  |  |      if (isObject(data)) {
 | 
	
		
			
				|  |  | -      updateData.push(data as FormSchema);
 | 
	
		
			
				|  |  | +      updateData.push(data as FormSchema)
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      if (isArray(data)) {
 | 
	
		
			
				|  |  | -      updateData = [...data];
 | 
	
		
			
				|  |  | +      updateData = [...data]
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    const hasField = updateData.every((item) => Reflect.has(item, 'field') && item.field);
 | 
	
		
			
				|  |  | +    const hasField = updateData.every(item => Reflect.has(item, 'field') && item.field)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      if (!hasField) {
 | 
	
		
			
				|  |  |        error(
 | 
	
		
			
				|  |  |          'All children of the form Schema array that need to be updated must contain the `field` field'
 | 
	
		
			
				|  |  | -      );
 | 
	
		
			
				|  |  | -      return;
 | 
	
		
			
				|  |  | +      )
 | 
	
		
			
				|  |  | +      return
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -    const schema: FormSchema[] = [];
 | 
	
		
			
				|  |  | -    updateData.forEach((item) => {
 | 
	
		
			
				|  |  | -      unref(getSchema).forEach((val) => {
 | 
	
		
			
				|  |  | +    const schema: FormSchema[] = []
 | 
	
		
			
				|  |  | +    updateData.forEach(item => {
 | 
	
		
			
				|  |  | +      unref(getSchema).forEach(val => {
 | 
	
		
			
				|  |  |          if (val.field === item.field) {
 | 
	
		
			
				|  |  | -          const newSchema = deepMerge(val, item);
 | 
	
		
			
				|  |  | -          schema.push(newSchema as FormSchema);
 | 
	
		
			
				|  |  | +          const newSchema = deepMerge(val, item)
 | 
	
		
			
				|  |  | +          schema.push(newSchema as FormSchema)
 | 
	
		
			
				|  |  |          } else {
 | 
	
		
			
				|  |  | -          schema.push(val);
 | 
	
		
			
				|  |  | +          schema.push(val)
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -      });
 | 
	
		
			
				|  |  | -    });
 | 
	
		
			
				|  |  | -    schemaRef.value = uniqBy(schema, 'field');
 | 
	
		
			
				|  |  | +      })
 | 
	
		
			
				|  |  | +    })
 | 
	
		
			
				|  |  | +    schemaRef.value = uniqBy(schema, 'field')
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    function getFieldsValue(): Recordable {
 | 
	
		
			
				|  |  | -    const formEl = unref(formElRef);
 | 
	
		
			
				|  |  | -    if (!formEl) return {};
 | 
	
		
			
				|  |  | -    return handleFormValues(toRaw(unref(formModel)));
 | 
	
		
			
				|  |  | +    const formEl = unref(formElRef)
 | 
	
		
			
				|  |  | +    if (!formEl) return {}
 | 
	
		
			
				|  |  | +    return handleFormValues(toRaw(unref(formModel)))
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    /**
 | 
	
		
			
				|  |  |     * @description: Is it time
 | 
	
		
			
				|  |  |     */
 | 
	
		
			
				|  |  |    function itemIsDateType(key: string) {
 | 
	
		
			
				|  |  | -    return unref(getSchema).some((item) => {
 | 
	
		
			
				|  |  | -      return item.field === key ? dateItemType.includes(item.component) : false;
 | 
	
		
			
				|  |  | -    });
 | 
	
		
			
				|  |  | +    return unref(getSchema).some(item => {
 | 
	
		
			
				|  |  | +      return item.field === key ? dateItemType.includes(item.component) : false
 | 
	
		
			
				|  |  | +    })
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    async function validateFields(nameList?: NamePath[] | undefined) {
 | 
	
		
			
				|  |  | -    return unref(formElRef)?.validateFields(nameList);
 | 
	
		
			
				|  |  | +    return unref(formElRef)?.validateFields(nameList)
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    async function validate(nameList?: NamePath[] | undefined) {
 | 
	
		
			
				|  |  | -    return await unref(formElRef)?.validate(nameList);
 | 
	
		
			
				|  |  | +    return await unref(formElRef)?.validate(nameList)
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    async function clearValidate(name?: string | string[]) {
 | 
	
		
			
				|  |  | -    await unref(formElRef)?.clearValidate(name);
 | 
	
		
			
				|  |  | +    await unref(formElRef)?.clearValidate(name)
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    async function scrollToField(name: NamePath, options?: ScrollOptions | undefined) {
 | 
	
		
			
				|  |  | -    await unref(formElRef)?.scrollToField(name, options);
 | 
	
		
			
				|  |  | +    await unref(formElRef)?.scrollToField(name, options)
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    /**
 | 
	
		
			
				|  |  |     * @description: Form submission
 | 
	
		
			
				|  |  |     */
 | 
	
		
			
				|  |  |    async function handleSubmit(e?: Event): Promise<void> {
 | 
	
		
			
				|  |  | -    e && e.preventDefault();
 | 
	
		
			
				|  |  | -    const { submitFunc } = unref(getProps);
 | 
	
		
			
				|  |  | +    e && e.preventDefault()
 | 
	
		
			
				|  |  | +    const { submitFunc } = unref(getProps)
 | 
	
		
			
				|  |  |      if (submitFunc && isFunction(submitFunc)) {
 | 
	
		
			
				|  |  | -      await submitFunc();
 | 
	
		
			
				|  |  | -      return;
 | 
	
		
			
				|  |  | +      await submitFunc()
 | 
	
		
			
				|  |  | +      return
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -    const formEl = unref(formElRef);
 | 
	
		
			
				|  |  | -    if (!formEl) return;
 | 
	
		
			
				|  |  | +    const formEl = unref(formElRef)
 | 
	
		
			
				|  |  | +    if (!formEl) return
 | 
	
		
			
				|  |  |      try {
 | 
	
		
			
				|  |  | -      const values = await validate();
 | 
	
		
			
				|  |  | -      const res = handleFormValues(values);
 | 
	
		
			
				|  |  | -      emit('submit', res);
 | 
	
		
			
				|  |  | +      const values = await validate()
 | 
	
		
			
				|  |  | +      const res = handleFormValues(values)
 | 
	
		
			
				|  |  | +      emit('submit', res)
 | 
	
		
			
				|  |  |      } catch (error) {}
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -226,6 +226,6 @@ export function useFormEvents({
 | 
	
		
			
				|  |  |      removeSchemaByFiled,
 | 
	
		
			
				|  |  |      resetFields,
 | 
	
		
			
				|  |  |      setFieldsValue,
 | 
	
		
			
				|  |  | -    scrollToField,
 | 
	
		
			
				|  |  | -  };
 | 
	
		
			
				|  |  | +    scrollToField
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  |  }
 |