refactor: 优化部分代码

This commit is contained in:
2024-11-18 20:37:38 +08:00
parent f702e03124
commit 901213d133
16 changed files with 110 additions and 97 deletions

View File

@@ -146,6 +146,9 @@ const options: Options = {
grid: { cols: 2 },
btns: { hide: true },
}
const { form, resetForm } = useForm({
isOverride: false,
})
const formColumns: Columns = reactive([
{
label: '作者名称',
@@ -198,8 +201,8 @@ const formColumns: Columns = reactive([
type: 'switch',
props: {
type: 'round',
checkedValue: 1,
uncheckedValue: 2,
checkedValue: true,
uncheckedValue: false,
checkedText: '是',
uncheckedText: '否',
},
@@ -233,10 +236,6 @@ const columns: TableInstanceColumns[] = [
{ title: '关联字典', slotName: 'dictCode' },
]
const { form, resetForm } = useForm({
isOverride: false,
})
// 重置
const reset = () => {
formRef.value?.formRef?.resetFields()
@@ -281,6 +280,7 @@ const onOpen = async (tableName: string, comment: string) => {
// 查询生成配置
const { data } = await getGenConfig(tableName)
Object.assign(form, data)
form.isOverride = form.isOverride || false
visible.value = true
// 查询字段配置
await getDataList(tableName, false)

View File

@@ -113,7 +113,7 @@ const handleLogin = async () => {
})
tabsStore.reset()
const { redirect, ...othersQuery } = router.currentRoute.value.query
router.push({
await router.push({
path: (redirect as string) || '/',
query: {
...othersQuery,

View File

@@ -37,6 +37,10 @@ const options: Options = {
btns: { hide: true },
}
const { form, resetForm } = useForm({
status: 1,
})
const columns: Columns = reactive([
{
label: '名称',
@@ -46,7 +50,7 @@ const columns: Columns = reactive([
},
{
label: '失效时间',
field: 'expirationTime',
field: 'expireTime',
type: 'date-picker',
props: {
placeholder: '请选择失效时间',
@@ -76,10 +80,6 @@ const columns: Columns = reactive([
},
])
const { form, resetForm } = useForm({
status: 1,
})
// 重置
const reset = () => {
formRef.value?.formRef?.resetFields()

View File

@@ -4,7 +4,7 @@
:title="title"
:mask-closable="false"
:esc-to-close="false"
:width="width >= 600 ? 600 : '100%'"
:width="width >= 700 ? 700 : '100%'"
@before-ok="save"
@close="reset"
>
@@ -182,6 +182,7 @@ 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'
const emit = defineEmits<{
(e: 'save-success'): void
@@ -196,7 +197,7 @@ const visible = ref(false)
const isUpdate = computed(() => !!dataId.value)
const title = computed(() => (isUpdate.value ? '修改任务' : '新增任务'))
const formRef = ref<FormInstance>()
const groupList = ref()
const groupList = ref<LabelValueState[]>([])
const genModal = ref()
const { job_trigger_type_enum, job_task_type_enum, job_route_strategy_enum, job_block_strategy_enum } = useDict(
'job_trigger_type_enum',

View File

@@ -17,17 +17,27 @@
import { useWindowSize } from '@vueuse/core'
import { Message } from '@arco-design/web-vue'
import { updateUserBaseInfo } from '@/apis/system'
import { type Columns, GiForm } from '@/components/GiForm'
import { type Columns, GiForm, type Options } from '@/components/GiForm'
import { useForm } from '@/hooks'
import { useUserStore } from '@/stores'
const { width } = useWindowSize()
const userStore = useUserStore()
const userInfo = computed(() => userStore.userInfo)
const visible = ref(false)
const formRef = ref<InstanceType<typeof GiForm>>()
const options: Options = {
form: { size: 'large' },
btns: { hide: true },
}
const { form, resetForm } = useForm({
nickname: userInfo.value.nickname,
gender: userInfo.value.gender,
})
const columns: Columns = reactive([
{
label: '昵称',
@@ -48,27 +58,12 @@ const columns: Columns = reactive([
},
])
const userStore = useUserStore()
const userInfo = computed(() => userStore.userInfo)
const { form, resetForm } = useForm({
nickname: userInfo.value.nickname,
gender: userInfo.value.gender,
})
const formRef = ref<InstanceType<typeof GiForm>>()
// 重置
const reset = () => {
formRef.value?.formRef?.resetFields()
resetForm()
}
const visible = ref(false)
// 修改
const onUpdate = async () => {
reset()
visible.value = true
}
// 保存
const save = async () => {
const isInvalid = await formRef.value?.formRef?.validate()
@@ -84,5 +79,11 @@ const save = async () => {
}
}
// 修改
const onUpdate = async () => {
reset()
visible.value = true
}
defineExpose({ onUpdate })
</script>

View File

@@ -55,6 +55,11 @@ const options: Options = {
btns: { hide: true },
}
const { form, resetForm } = useForm({
sort: 999,
status: 1,
})
const columns: Columns = reactive([
{
label: '上级部门',
@@ -118,11 +123,6 @@ const columns: Columns = reactive([
},
])
const { form, resetForm } = useForm({
sort: 999,
status: 1,
})
// 重置
const reset = () => {
formRef.value?.formRef?.resetFields()

View File

@@ -23,6 +23,7 @@
<script setup lang="ts">
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'
@@ -31,6 +32,8 @@ const emit = defineEmits<{
(e: 'save-success'): void
}>()
const { width } = useWindowSize()
const dataId = ref('')
const dictId = ref('')
const visible = ref(false)
@@ -43,6 +46,12 @@ const options: Options = {
btns: { hide: true },
}
const { form, resetForm } = useForm({
color: 'blue',
sort: 999,
status: 1,
})
const columns: Columns = reactive([
{ label: '标签', field: 'label', type: 'input', rules: [{ required: true, message: '请输入标签' }] },
{ label: '值', field: 'value', type: 'input', rules: [{ required: true, message: '请输入值' }] },
@@ -79,12 +88,6 @@ const columns: Columns = reactive([
},
])
const { form, resetForm } = useForm({
color: 'blue',
sort: 999,
status: 1,
})
// 重置
const reset = () => {
formRef.value?.formRef?.resetFields()

View File

@@ -37,6 +37,8 @@ const options: Options = {
btns: { hide: true },
}
const { form, resetForm } = useForm({})
const columns: Columns = reactive([
{ label: '名称', field: 'name', type: 'input', rules: [{ required: true, message: '请输入名称' }] },
{ label: '编码', field: 'code', type: 'input', disabled: () => isUpdate.value, rules: [{ required: true, message: '请输入编码' }] },
@@ -51,8 +53,6 @@ const columns: Columns = reactive([
},
])
const { form, resetForm } = useForm({})
// 重置
const reset = () => {
formRef.value?.formRef?.resetFields()

View File

@@ -11,7 +11,7 @@
</a-space>
<div v-if="chartData.length > 0">
<a-divider />
<VCharts :option="option" autoresize :style="{ height: '120px', width: '150px' }" />
<VCharts :option="chartOption" autoresize :style="{ height: '120px', width: '150px' }" />
</div>
</section>
</template>
@@ -38,7 +38,7 @@ const totalData = ref<FileStatisticsResp>({
})
const chartData = ref<Array<{ name: string, value: number, size: string }>>([])
const statisticValueStyle = { 'color': '#5856D6', 'font-size': '18px' }
const { option } = useChart(() => {
const { chartOption } = useChart(() => {
return {
grid: {
left: 0,

View File

@@ -2,15 +2,15 @@
<div ref="containerRef" class="detail">
<div class="detail_header">
<a-affix :target="(containerRef as HTMLElement)">
<a-page-header title="通知公告" :subtitle="type === 'edit' ? '修改' : '新增'" @back="onBack">
<a-page-header title="通知公告" :subtitle="title" @back="onBack">
<template #extra>
<a-button type="primary" @click="onReleased">
<a-button type="primary" @click="save">
<template #icon>
<icon-save v-if="type === 'edit'" />
<icon-save v-if="isUpdate" />
<icon-send v-else />
</template>
<template #default>
{{ type === 'edit' ? '保存' : '发布' }}
{{ isUpdate ? '保存' : '发布' }}
</template>
</a-button>
</template>
@@ -59,21 +59,32 @@
import { Message } from '@arco-design/web-vue'
import { useWindowSize } from '@vueuse/core'
import AiEditor from './components/index.vue'
import { useTabsStore } from '@/stores'
import { addNotice, getNotice, updateNotice } from '@/apis/system/notice'
import { listUserDict } from '@/apis'
import { type Columns, GiForm, type Options } from '@/components/GiForm'
import { addNotice, getNotice, updateNotice } from '@/apis/system'
import type { LabelValueState } from '@/types/global'
import { useTabsStore } from '@/stores'
import { useForm } from '@/hooks'
import { useDict } from '@/hooks/app'
import { listUserDict } from '@/apis'
import type { LabelValueState } from '@/types/global'
const { width } = useWindowSize()
const { notice_type } = useDict('notice_type')
const containerRef = ref<HTMLElement | null>()
const tabsStore = useTabsStore()
const route = useRoute()
const formRef = ref<InstanceType<typeof GiForm>>()
const router = useRouter()
const tabsStore = useTabsStore()
const { id, type } = route.query
const isUpdate = computed(() => type === 'update')
const title = computed(() => (isUpdate.value ? '修改' : '新增'))
const containerRef = ref<HTMLElement | null>()
const formRef = ref<InstanceType<typeof GiForm>>()
const { notice_type } = useDict('notice_type')
const options: Options = {
form: { size: 'large' },
grid: { cols: 2 },
btns: { hide: true },
}
const { form, resetForm } = useForm({
title: '',
type: '',
@@ -82,11 +93,6 @@ const { form, resetForm } = useForm({
content: '',
noticeScope: 1,
})
const options: Options = {
form: { size: 'large' },
grid: { cols: 2 },
btns: { hide: true },
}
const columns: Columns = reactive([
{
@@ -149,17 +155,18 @@ const onUpdate = async (id: string) => {
// 返回
const onBack = () => {
router.back()
tabsStore.closeCurrent(route.path)
}
// 发布
const onReleased = async () => {
// 保存
const save = async () => {
const isInvalid = await formRef.value?.formRef?.validate()
if (isInvalid) return false
try {
// 通知范围 所有人 去除指定用户
form.noticeUsers = form.noticeScope === 1 ? null : form.noticeUsers
if (type === 'edit') {
if (isUpdate.value) {
await updateNotice(form, id as string)
Message.success('修改成功')
} else {
@@ -194,9 +201,9 @@ const onSelectUser = (value: string[]) => {
const userList = ref<LabelValueState[]>([])
onMounted(async () => {
// 当id存在与type为edit时,执行修改操作
if (id && type === 'edit') {
onUpdate(id as string)
// 当id存在与type为update时,执行修改操作
if (id && isUpdate.value) {
await onUpdate(id as string)
}
// 获取所有用户
const { data } = await listUserDict()

View File

@@ -39,15 +39,16 @@
<script setup lang="ts">
import AiEditor from './components/index.vue'
import { useTabsStore } from '@/stores'
import { getNotice } from '@/apis/system/notice'
import { useTabsStore } from '@/stores'
import { useForm } from '@/hooks'
const containerRef = ref<HTMLElement | null>()
const tabsStore = useTabsStore()
const route = useRoute()
const router = useRouter()
const tabsStore = useTabsStore()
const { id } = route.query
const containerRef = ref<HTMLElement | null>()
const { form, resetForm } = useForm({
title: '',
createUserString: '',
@@ -56,19 +57,21 @@ const { form, resetForm } = useForm({
content: '',
})
// 修改
const onDetail = async (id: string) => {
resetForm()
const res = await getNotice(id)
Object.assign(form, res.data)
}
// 回退
const onBack = () => {
router.back()
tabsStore.closeCurrent(route.path)
}
// 打开
const onOpen = async (id: string) => {
resetForm()
const { data } = await getNotice(id)
Object.assign(form, data)
}
onMounted(() => {
onDetail(id as string)
onOpen(id as string)
})
</script>

View File

@@ -123,7 +123,7 @@ const onAdd = () => {
// 修改
const onUpdate = (record: NoticeResp) => {
router.push({ path: '/system/notice/add', query: { id: record.id, type: 'edit' } })
router.push({ path: '/system/notice/add', query: { id: record.id, type: 'update' } })
}
// 详情

View File

@@ -42,6 +42,11 @@ const options: Options = {
btns: { hide: true },
}
const { form, resetForm } = useForm({
gender: 1 as Gender,
status: 1 as Status,
})
const columns: Columns = reactive([
{
label: '用户名',
@@ -160,11 +165,6 @@ const columns: Columns = reactive([
},
])
const { form, resetForm } = useForm({
gender: 1 as Gender,
status: 1 as Status,
})
// 重置
const reset = () => {
formRef.value?.formRef?.resetFields()

View File

@@ -34,12 +34,12 @@ const options: Options = {
btns: { hide: true },
}
const { form, resetForm } = useForm({})
const columns: Columns = reactive([
{ label: '密码', field: 'newPassword', type: 'input-password', rules: [{ required: true, message: '请输入密码' }] },
])
const { form, resetForm } = useForm({})
// 重置
const reset = () => {
formRef.value?.formRef?.resetFields()

View File

@@ -36,6 +36,8 @@ const options: Options = {
btns: { hide: true },
}
const { form, resetForm } = useForm({})
const columns: Columns = reactive([
{
label: '角色',
@@ -52,8 +54,6 @@ const columns: Columns = reactive([
},
])
const { form, resetForm } = useForm({})
// 重置
const reset = () => {
formRef.value?.formRef?.resetFields()

View File

@@ -101,13 +101,13 @@ import UserImportDrawer from './UserImportDrawer.vue'
import UserDetailDrawer from './UserDetailDrawer.vue'
import UserResetPwdModal from './UserResetPwdModal.vue'
import UserUpdateRoleModal from './UserUpdateRoleModal.vue'
import { type UserQuery, type UserResp, deleteUser, exportUser, listUser } from '@/apis/system/user'
import { type UserResp, deleteUser, exportUser, listUser } from '@/apis/system/user'
import type { Columns, Options } from '@/components/GiForm'
import type { TableInstanceColumns } from '@/components/GiTable/type'
import { useDownload, useTable } from '@/hooks'
import { DisEnableStatusList } from '@/constant/common'
import { useDownload, useForm, useTable } from '@/hooks'
import { isMobile } from '@/utils'
import has from '@/utils/has'
import { DisEnableStatusList } from '@/constant/common'
defineOptions({ name: 'SystemUser' })
@@ -116,6 +116,9 @@ const options: Options = reactive({
grid: { cols: { xs: 1, sm: 1, md: 2, lg: 3, xl: 3, xxl: 3 } },
fold: { enable: true, index: 1, defaultCollapsed: true },
})
const { form: queryForm, resetForm } = useForm({
sort: ['t1.id,desc'],
})
const queryFormColumns: Columns = reactive([
{
type: 'input',
@@ -147,9 +150,6 @@ const queryFormColumns: Columns = reactive([
},
},
])
const queryForm = reactive<UserQuery>({
sort: ['t1.id,desc'],
})
const {
tableData: dataList,
@@ -207,9 +207,7 @@ const columns: TableInstanceColumns[] = [
// 重置
const reset = () => {
queryForm.description = undefined
queryForm.status = undefined
queryForm.createTime = []
resetForm()
search()
}