12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- import { ref, unref, nextTick } from 'vue'
- import { FormSchema, FormSetProps } from '@/components/Form'
- import { SearchExpose, SearchProps } from '@/components/Search'
- export const useSearch = () => {
- // Search实例
- const searchRef = ref<SearchExpose>()
- /**
- * @param ref Search实例
- * @param elRef ElForm实例
- */
- const register = (ref: SearchExpose) => {
- searchRef.value = ref
- }
- const getSearch = async () => {
- await nextTick()
- const search = unref(searchRef)
- if (!search) {
- console.error('The Search is not registered. Please use the register method to register')
- }
- return search
- }
- // 一些内置的方法
- const methods = {
- /**
- * @description 设置search组件的props
- * @param field FormItem的field
- */
- setProps: async (props: SearchProps = {}) => {
- const search = await getSearch()
- search?.setProps(props)
- if (props.model) {
- search?.setValues(props.model)
- }
- },
- /**
- * @description 设置form的值
- * @param data 需要设置的数据
- */
- setValues: async (data: Recordable) => {
- const search = await getSearch()
- search?.setValues(data)
- },
- /**
- * @description 设置schema
- * @param schemaProps 需要设置的schemaProps
- */
- setSchema: async (schemaProps: FormSetProps[]) => {
- const search = await getSearch()
- search?.setSchema(schemaProps)
- },
- /**
- * @description 新增schema
- * @param formSchema 需要新增数据
- * @param index 在哪里新增
- */
- addSchema: async (formSchema: FormSchema, index?: number) => {
- const search = await getSearch()
- search?.addSchema(formSchema, index)
- },
- /**
- * @description 删除schema
- * @param field 删除哪个数据
- */
- delSchema: async (field: string) => {
- const search = await getSearch()
- search?.delSchema(field)
- },
- /**
- * @description 获取表单数据
- * @returns form data
- */
- getFormData: async <T = Recordable>(): Promise<T> => {
- const search = await getSearch()
- return search?.formModel as T
- }
- }
- return {
- searchRegister: register,
- searchMethods: methods
- }
- }
|