refactor: useForm => useResetReactive(同步 GiDemo 更新)

This commit is contained in:
2024-11-23 21:04:48 +08:00
parent be4356fa04
commit 6c45483fae
20 changed files with 53 additions and 38 deletions

View File

@@ -7,3 +7,4 @@ export * from './modules/useForm'
export * from './modules/useDevice'
export * from './modules/useBreakpoint'
export * from './modules/useDownload'
export * from './modules/useResetReactive'

View File

@@ -0,0 +1,15 @@
import { reactive } from 'vue'
import { cloneDeep } from 'lodash-es'
export function useResetReactive<T extends object>(value: T) {
const getInitValue = () => cloneDeep(value)
const state = reactive(getInitValue())
const reset = () => {
Object.keys(state).forEach((key) => delete state[key])
Object.assign(state, getInitValue())
}
return [state, reset] as const
}

View File

@@ -125,7 +125,7 @@ import { type FieldConfigResp, type GeneratorConfigResp, getGenConfig, listField
import type { LabelValueState } from '@/types/global'
import type { TableInstanceColumns } from '@/components/GiTable/type'
import { type Columns, GiForm, type Options } from '@/components/GiForm'
import { useForm } from '@/hooks'
import { useResetReactive } from '@/hooks'
import { useDict } from '@/hooks/app'
const emit = defineEmits<{
@@ -146,7 +146,7 @@ const options: Options = {
grid: { cols: 2 },
btns: { hide: true },
}
const { form, resetForm } = useForm({
const [form, resetForm] = useResetReactive({
isOverride: false,
})
const formColumns: Columns = reactive([

View File

@@ -18,7 +18,7 @@ import { Message } from '@arco-design/web-vue'
import { useWindowSize } from '@vueuse/core'
import { addApp, getApp, updateApp } from '@/apis/open/app'
import { type Columns, GiForm, type Options } from '@/components/GiForm'
import { useForm } from '@/hooks'
import { useResetReactive } from '@/hooks'
const emit = defineEmits<{
(e: 'save-success'): void
@@ -37,7 +37,7 @@ const options: Options = {
btns: { hide: true },
}
const { form, resetForm } = useForm({
const [form, resetForm] = useResetReactive({
status: 1,
})

View File

@@ -180,10 +180,9 @@
import { type ColProps, type FormInstance, Message } from '@arco-design/web-vue'
import { useWindowSize } from '@vueuse/core'
import { addJob, listGroup, updateJob } from '@/apis/schedule/job'
import { useForm } from '@/hooks'
import { useDict } from '@/hooks/app'
import CronGeneratorModal from '@/components/GenCron/CronModel/index.vue'
import type { LabelValueState } from '@/types/global'
import { useResetReactive } from '@/hooks'
import { useDict } from '@/hooks/app'
const emit = defineEmits<{
(e: 'save-success'): void
@@ -221,7 +220,7 @@ const rules: FormInstance['rules'] = {
parallelNum: [{ required: true, message: '请输入并行数' }],
}
const { form, resetForm } = useForm({
const [form, resetForm] = useResetReactive({
triggerType: 2,
triggerInterval: 60,
taskType: 1,

View File

@@ -29,7 +29,7 @@ import { type BehaviorCaptchaReq, getEmailCaptcha, updateUserEmail, updateUserPa
import { encryptByRsa } from '@/utils/encrypt'
import { useUserStore } from '@/stores'
import { type Columns, GiForm, type Options } from '@/components/GiForm'
import { useForm } from '@/hooks'
import { useResetReactive } from '@/hooks'
import * as Regexp from '@/utils/regexp'
import modalErrorWrapper from '@/utils/modal-error-wrapper'
import router from '@/router'
@@ -49,7 +49,7 @@ const options: Options = {
btns: { hide: true },
}
const { form, resetForm } = useForm({
const [form, resetForm] = useResetReactive({
phone: '',
email: '',
captcha: '',

View File

@@ -18,8 +18,8 @@ import { useWindowSize } from '@vueuse/core'
import { Message } from '@arco-design/web-vue'
import { updateUserBaseInfo } from '@/apis/system'
import { type Columns, GiForm, type Options } from '@/components/GiForm'
import { useForm } from '@/hooks'
import { useUserStore } from '@/stores'
import { useResetReactive } from '@/hooks'
const { width } = useWindowSize()
const userStore = useUserStore()
@@ -33,7 +33,7 @@ const options: Options = {
btns: { hide: true },
}
const { form, resetForm } = useForm({
const [form, resetForm] = useResetReactive({
nickname: userInfo.value.nickname,
gender: userInfo.value.gender,
})

View File

@@ -19,7 +19,7 @@ import { useWindowSize } from '@vueuse/core'
import { mapTree } from 'xe-utils'
import { type DeptResp, addDept, getDept, updateDept } from '@/apis/system/dept'
import { type Columns, GiForm, type Options } from '@/components/GiForm'
import { useForm } from '@/hooks'
import { useResetReactive } from '@/hooks'
interface Props {
depts: DeptResp[]
@@ -55,7 +55,7 @@ const options: Options = {
btns: { hide: true },
}
const { form, resetForm } = useForm({
const [form, resetForm] = useResetReactive({
sort: 999,
status: 1,
})

View File

@@ -26,7 +26,7 @@ import { Message } from '@arco-design/web-vue'
import { useWindowSize } from '@vueuse/core'
import { addDictItem, getDictItem, updateDictItem } from '@/apis/system/dict'
import { type Columns, GiForm, type Options } from '@/components/GiForm'
import { useForm } from '@/hooks'
import { useResetReactive } from '@/hooks'
const emit = defineEmits<{
(e: 'save-success'): void
@@ -46,7 +46,7 @@ const options: Options = {
btns: { hide: true },
}
const { form, resetForm } = useForm({
const [form, resetForm] = useResetReactive({
color: 'blue',
sort: 999,
status: 1,

View File

@@ -18,7 +18,7 @@ import { Message } from '@arco-design/web-vue'
import { useWindowSize } from '@vueuse/core'
import { addDict, getDict, updateDict } from '@/apis/system/dict'
import { type Columns, GiForm, type Options } from '@/components/GiForm'
import { useForm } from '@/hooks'
import { useResetReactive } from '@/hooks'
const emit = defineEmits<{
(e: 'save-success'): void
@@ -37,7 +37,7 @@ const options: Options = {
btns: { hide: true },
}
const { form, resetForm } = useForm({})
const [form, resetForm] = useResetReactive({})
const columns: Columns = reactive([
{ label: '名称', field: 'name', type: 'input', rules: [{ required: true, message: '请输入名称' }] },

View File

@@ -119,7 +119,7 @@ import { type FormInstance, Message, type TreeNodeData } from '@arco-design/web-
import { useWindowSize } from '@vueuse/core'
import { mapTree } from 'xe-utils'
import { type MenuResp, addMenu, getMenu, updateMenu } from '@/apis/system/menu'
import { useForm } from '@/hooks'
import { useResetReactive } from '@/hooks'
import { filterTree, transformPathToName } from '@/utils'
interface Props {
@@ -141,7 +141,7 @@ const isUpdate = computed(() => !!dataId.value)
const title = computed(() => (isUpdate.value ? '修改菜单' : '新增菜单'))
const formRef = ref<FormInstance>()
const { form, resetForm } = useForm({
const [form, resetForm] = useResetReactive({
type: 1,
sort: 999,
isExternal: false,

View File

@@ -64,7 +64,7 @@ import { listUserDict } from '@/apis'
import { type Columns, GiForm, type Options } from '@/components/GiForm'
import type { LabelValueState } from '@/types/global'
import { useTabsStore } from '@/stores'
import { useForm } from '@/hooks'
import { useResetReactive } from '@/hooks'
import { useDict } from '@/hooks/app'
const { width } = useWindowSize()
@@ -85,7 +85,7 @@ const options: Options = {
btns: { hide: true },
}
const { form, resetForm } = useForm({
const [form, resetForm] = useResetReactive({
title: '',
type: '',
effectiveTime: '',

View File

@@ -41,7 +41,7 @@
import AiEditor from './components/index.vue'
import { getNotice } from '@/apis/system/notice'
import { useTabsStore } from '@/stores'
import { useForm } from '@/hooks'
import { useResetReactive } from '@/hooks'
const route = useRoute()
const router = useRouter()
@@ -49,7 +49,7 @@ const tabsStore = useTabsStore()
const { id } = route.query
const containerRef = ref<HTMLElement | null>()
const { form, resetForm } = useForm({
const [form, resetForm] = useResetReactive({
title: '',
createUserString: '',
effectiveTime: '',

View File

@@ -105,7 +105,7 @@
import { type FormInstance, Message, type TreeNodeData } from '@arco-design/web-vue'
import { useWindowSize } from '@vueuse/core'
import { addRole } from '@/apis/system/role'
import { useForm } from '@/hooks'
import { useResetReactive } from '@/hooks'
import { useDept, useDict, useMenu } from '@/hooks/app'
const emit = defineEmits<{
@@ -127,7 +127,7 @@ const rules: FormInstance['rules'] = {
dataScope: [{ required: true, message: '请选择数据权限' }],
}
const { form, resetForm } = useForm({
const [form, resetForm] = useResetReactive({
menuCheckStrictly: true,
deptCheckStrictly: true,
sort: 999,

View File

@@ -84,7 +84,7 @@
import { type FormInstance, Message, type TreeNodeData } from '@arco-design/web-vue'
import { useWindowSize } from '@vueuse/core'
import { getRole, updateRole } from '@/apis/system/role'
import { useForm } from '@/hooks'
import { useResetReactive } from '@/hooks'
import { useDept, useDict, useMenu } from '@/hooks/app'
const emit = defineEmits<{
@@ -106,7 +106,7 @@ const rules: FormInstance['rules'] = {
dataScope: [{ required: true, message: '请选择数据权限' }],
}
const { form, resetForm } = useForm({
const [form, resetForm] = useResetReactive({
menuCheckStrictly: true,
deptCheckStrictly: true,
sort: 999,

View File

@@ -95,7 +95,7 @@
import { type FormInstance, Message } from '@arco-design/web-vue'
import { useWindowSize } from '@vueuse/core'
import { addStorage, getStorage, updateStorage } from '@/apis/system/storage'
import { useForm } from '@/hooks'
import { useResetReactive } from '@/hooks'
import { useDict } from '@/hooks/app'
import { encryptByRsa } from '@/utils/encrypt'
import { isIPv4 } from '@/utils/validate'
@@ -123,7 +123,7 @@ const rules: FormInstance['rules'] = {
bucketName: [{ required: true, message: '请输入桶名称' }],
}
const { form, resetForm } = useForm({
const [form, resetForm] = useResetReactive({
type: 2,
isDefault: false,
sort: 999,

View File

@@ -19,7 +19,7 @@ import { addUser, getUser, updateUser } from '@/apis/system/user'
import { type Columns, GiForm, type Options } from '@/components/GiForm'
import type { Gender, Status } from '@/types/global'
import { GenderList } from '@/constant/common'
import { useForm } from '@/hooks'
import { useResetReactive } from '@/hooks'
import { useDept, useRole } from '@/hooks/app'
import { encryptByRsa } from '@/utils/encrypt'
@@ -42,7 +42,7 @@ const options: Options = {
btns: { hide: true },
}
const { form, resetForm } = useForm({
const [form, resetForm] = useResetReactive({
gender: 1 as Gender,
status: 1 as Status,
})

View File

@@ -94,7 +94,7 @@ import {
importUser,
parseImportUser,
} from '@/apis/system/user'
import { useDownload, useForm } from '@/hooks'
import { useDownload, useResetReactive } from '@/hooks'
const emit = defineEmits<{
(e: 'save-success'): void
@@ -106,7 +106,7 @@ const visible = ref(false)
const formRef = ref<FormInstance>()
const uploadFile = ref([])
const { form, resetForm } = useForm({
const [form, resetForm] = useResetReactive({
errorPolicy: 1,
duplicateUser: 1,
duplicateEmail: 1,

View File

@@ -18,7 +18,7 @@
import { Message } from '@arco-design/web-vue'
import { resetUserPwd } from '@/apis/system'
import { type Columns, GiForm } from '@/components/GiForm'
import { useForm } from '@/hooks'
import { useResetReactive } from '@/hooks'
import { encryptByRsa } from '@/utils/encrypt'
const emit = defineEmits<{
@@ -34,7 +34,7 @@ const options: Options = {
btns: { hide: true },
}
const { form, resetForm } = useForm({})
const [form, resetForm] = useResetReactive({})
const columns: Columns = reactive([
{ label: '密码', field: 'newPassword', type: 'input-password', rules: [{ required: true, message: '请输入密码' }] },

View File

@@ -18,7 +18,7 @@ import { Message } from '@arco-design/web-vue'
import { useWindowSize } from '@vueuse/core'
import { getUser, updateUserRole } from '@/apis/system'
import { type Columns, GiForm, type Options } from '@/components/GiForm'
import { useForm } from '@/hooks'
import { useResetReactive } from '@/hooks'
import { useRole } from '@/hooks/app'
const emit = defineEmits<{
@@ -36,7 +36,7 @@ const options: Options = {
btns: { hide: true },
}
const { form, resetForm } = useForm({})
const [form, resetForm] = useResetReactive({})
const columns: Columns = reactive([
{