feat: 优化 GiTable(同步 GiDemo 更新)

This commit is contained in:
2025-03-18 21:34:58 +08:00
parent 348c497876
commit eaabe47546
23 changed files with 199 additions and 125 deletions

View File

@@ -123,7 +123,6 @@ import { Message } from '@arco-design/web-vue'
import { useWindowSize } from '@vueuse/core'
import { type FieldConfigResp, type GeneratorConfigResp, getGenConfig, listFieldConfig, listFieldConfigDict, saveGenConfig } from '@/apis/code/generator'
import type { LabelValueState } from '@/types/global'
import type { TableInstanceColumns } from '@/components/GiTable/type'
import { type ColumnItem, GiForm } from '@/components/GiForm'
import { useResetReactive } from '@/hooks'
import { useDict } from '@/hooks/app'
@@ -222,7 +221,7 @@ const getDataList = async (tableName: string, requireSync: boolean) => {
}
// Table 字段配置
const columns: TableInstanceColumns[] = [
const columns: TableInstance['columns'] = [
{ title: '名称', slotName: 'fieldName' },
{ title: '类型', slotName: 'fieldType' },
{ title: '描述', slotName: 'comment', width: 170 },

View File

@@ -61,10 +61,10 @@
</template>
<script setup lang="ts">
import type { TableInstance } from '@arco-design/web-vue'
import { Message } from '@arco-design/web-vue'
import GenConfigDrawer from './GenConfigDrawer.vue'
import { downloadCode, generateCode, listGenConfig } from '@/apis/code/generator'
import type { TableInstanceColumns } from '@/components/GiTable/type'
import { useTable } from '@/hooks'
import { isMobile } from '@/utils'
@@ -84,7 +84,7 @@ const {
selectAll,
search,
} = useTable((page) => listGenConfig({ ...queryForm, ...page }), { immediate: true, formatResult: (data) => data.map((i) => ({ ...i, disabled: !i.createTime })) })
const columns: TableInstanceColumns[] = [
const columns: TableInstance['columns'] = [
{
title: '序号',
width: 66,

View File

@@ -46,8 +46,8 @@
<script setup lang="ts">
import dayjs from 'dayjs'
import type { TableInstance } from '@arco-design/web-vue'
import { type LogQuery, exportLoginLog, listLog } from '@/apis/monitor'
import type { TableInstanceColumns } from '@/components/GiTable/type'
import DateRangePicker from '@/components/DateRangePicker/index.vue'
import { useDownload, useTable } from '@/hooks'
@@ -69,7 +69,7 @@ const {
search,
} = useTable((page) => listLog({ ...queryForm, ...page }), { immediate: true })
const columns: TableInstanceColumns[] = [
const columns: TableInstance['columns'] = [
{
title: '序号',
width: 66,

View File

@@ -57,9 +57,9 @@
<script setup lang="ts">
import dayjs from 'dayjs'
import type { TableInstance } from '@arco-design/web-vue'
import OperationLogDetailDrawer from './OperationLogDetailDrawer.vue'
import { type LogQuery, type LogResp, exportOperationLog, listLog } from '@/apis/monitor'
import type { TableInstanceColumns } from '@/components/GiTable/type'
import DateRangePicker from '@/components/DateRangePicker/index.vue'
import { useDownload, useTable } from '@/hooks'
import has from '@/utils/has'
@@ -80,7 +80,7 @@ const {
pagination,
search,
} = useTable((page) => listLog({ ...queryForm, ...page }), { immediate: true })
const columns: TableInstanceColumns[] = [
const columns: TableInstance['columns'] = [
{
title: '序号',
width: 66,

View File

@@ -44,9 +44,9 @@
</template>
<script setup lang="ts">
import type { TableInstance } from '@arco-design/web-vue'
import { Message } from '@arco-design/web-vue'
import { type OnlineUserQuery, kickout, listOnlineUser } from '@/apis/monitor'
import type { TableInstanceColumns } from '@/components/GiTable/type'
import DateRangePicker from '@/components/DateRangePicker/index.vue'
import { useUserStore } from '@/stores'
import { useTable } from '@/hooks'
@@ -68,7 +68,7 @@ const {
pagination,
search,
} = useTable((page) => listOnlineUser({ ...queryForm, ...page }), { immediate: true })
const columns: TableInstanceColumns[] = [
const columns: TableInstance['columns'] = [
{
title: '序号',
width: 66,

View File

@@ -86,6 +86,7 @@
</template>
<script setup lang="ts">
import type { TableInstance } from '@arco-design/web-vue'
import { Message, Modal } from '@arco-design/web-vue'
import AppAddModal from './AppAddModal.vue'
import AppDetailDrawer from './AppDetailDrawer.vue'
@@ -98,7 +99,6 @@ import {
listApp,
resetAppSecret,
} from '@/apis/open/app'
import type { TableInstanceColumns } from '@/components/GiTable/type'
import { useDownload, useTable } from '@/hooks'
import { isMobile } from '@/utils'
import has from '@/utils/has'
@@ -116,7 +116,7 @@ const {
search,
handleDelete,
} = useTable((page) => listApp({ ...queryForm, ...page }), { immediate: true })
const columns: TableInstanceColumns[] = [
const columns: TableInstance['columns'] = [
{
title: '序号',
width: 66,

View File

@@ -79,12 +79,12 @@
</template>
<script setup lang="ts">
import type { TableInstance } from '@arco-design/web-vue'
import { Message } from '@arco-design/web-vue'
import { useRouter } from 'vue-router'
import JobAddModal from './JobAddModal.vue'
import JobDetailDrawer from './JobDetailDrawer.vue'
import { type JobQuery, type JobResp, deleteJob, listGroup, listJob, triggerJob, updateJobStatus } from '@/apis/schedule'
import type { TableInstanceColumns } from '@/components/GiTable/type'
import { useTable } from '@/hooks'
import { useDict } from '@/hooks/app'
import { isMobile, parseCron } from '@/utils'
@@ -105,7 +105,7 @@ const {
search,
handleDelete,
} = useTable((page) => listJob({ ...queryForm, ...page }), { immediate: false })
const columns: TableInstanceColumns[] = [
const columns: TableInstance['columns'] = [
{
title: '序号',
width: 66,

View File

@@ -65,12 +65,12 @@
</template>
<script setup lang="ts">
import type { TableInstance } from '@arco-design/web-vue'
import { Message } from '@arco-design/web-vue'
import { useRoute } from 'vue-router'
import dayjs from 'dayjs'
import LogDetailDrawer from './LogDetailDrawer.vue'
import { type JobLogQuery, type JobLogResp, listGroup, listJobLog, retryJob, stopJob } from '@/apis/schedule'
import type { TableInstanceColumns } from '@/components/GiTable/type'
import { useTable } from '@/hooks'
import { useDict } from '@/hooks/app'
import { isMobile } from '@/utils'
@@ -93,7 +93,7 @@ const {
loading,
search,
} = useTable((page) => listJobLog({ ...queryForm, ...page }), { immediate: false })
const columns: TableInstanceColumns[] = [
const columns: TableInstance['columns'] = [
{
title: '序号',
width: 66,

View File

@@ -63,9 +63,9 @@
</template>
<script setup lang="ts">
import type { TableInstance } from '@arco-design/web-vue'
import { Message, Modal } from '@arco-design/web-vue'
import { type MessageQuery, deleteMessage, listMessage, readMessage } from '@/apis'
import type { TableInstanceColumns } from '@/components/GiTable/type'
import { useTable } from '@/hooks'
import { useDict } from '@/hooks/app'
@@ -88,7 +88,7 @@ const {
handleDelete,
} = useTable((page) => listMessage({ ...queryForm, ...page }), { immediate: true })
const columns: TableInstanceColumns[] = [
const columns: TableInstance['columns'] = [
{
title: '序号',
width: 66,

View File

@@ -63,10 +63,10 @@
<script setup lang="tsx">
import type { LabelValue } from '@arco-design/web-vue/es/tree-select/interface'
import type { TableInstance } from '@arco-design/web-vue'
import ClientAddModal from './ClientAddModal.vue'
import ClientDetailDrawer from './ClientDetailDrawer.vue'
import { type ClientQuery, type ClientResp, deleteClient, listClient } from '@/apis/system/client'
import type { TableInstanceColumns } from '@/components/GiTable/type'
import { DisEnableStatusList } from '@/constant/common'
import { useTable } from '@/hooks'
import { useDict } from '@/hooks/app'
@@ -105,7 +105,7 @@ const {
search,
handleDelete,
} = useTable((page) => listClient({ ...queryForm, ...page }), { immediate: true })
const columns: TableInstanceColumns[] = [
const columns: TableInstance['columns'] = [
{
title: '序号',
width: 66,

View File

@@ -95,9 +95,9 @@
<script setup lang="ts">
import 'vue3-tree-org/lib/vue3-tree-org.css'
import { Vue3TreeOrg } from 'vue3-tree-org'
import type { TableInstance } from '@arco-design/web-vue'
import DeptAddModal from './DeptAddModal.vue'
import { type DeptQuery, type DeptResp, deleteDept, exportDept, listDept } from '@/apis/system/dept'
import type { TableInstanceColumns } from '@/components/GiTable/type'
import type GiTable from '@/components/GiTable/index.vue'
import { useDownload, useTable } from '@/hooks'
import { isMobile } from '@/utils'
@@ -158,7 +158,7 @@ const dataList = computed(() => {
return searchData(name.value)
})
const columns: TableInstanceColumns[] = [
const columns: TableInstance['columns'] = [
{ title: '名称', dataIndex: 'name', minWidth: 170, ellipsis: true, tooltip: true },
{ title: '状态', dataIndex: 'status', slotName: 'status', align: 'center' },
{ title: '排序', dataIndex: 'sort', align: 'center', show: false },

View File

@@ -65,11 +65,11 @@
</template>
<script setup lang="ts">
import type { TableInstance } from '@arco-design/web-vue'
import { Message, Modal } from '@arco-design/web-vue'
import DictTree from './tree/index.vue'
import DictItemAddModal from './DictItemAddModal.vue'
import { type DictItemQuery, type DictItemResp, clearDictCache, deleteDictItem, listDictItem } from '@/apis/system/dict'
import type { TableInstanceColumns } from '@/components/GiTable/type'
import { useTable } from '@/hooks'
import { isMobile } from '@/utils'
import has from '@/utils/has'
@@ -88,7 +88,7 @@ const {
search,
handleDelete,
} = useTable((page) => listDictItem({ ...queryForm, ...page }), { immediate: false })
const columns: TableInstanceColumns[] = [
const columns: TableInstance['columns'] = [
{
title: '序号',
width: 66,

View File

@@ -90,10 +90,10 @@
</template>
<script setup lang="ts">
import type { TableInstance } from '@arco-design/web-vue'
import { Message, Modal } from '@arco-design/web-vue'
import MenuAddModal from './MenuAddModal.vue'
import { type MenuQuery, type MenuResp, clearMenuCache, deleteMenu, listMenu } from '@/apis/system/menu'
import type { TableInstanceColumns } from '@/components/GiTable/type'
import type GiTable from '@/components/GiTable/index.vue'
import { useTable } from '@/hooks'
import { isMobile } from '@/utils'
@@ -138,7 +138,7 @@ const dataList = computed(() => {
return searchData(title.value)
})
const columns: TableInstanceColumns[] = [
const columns: TableInstance['columns'] = [
{ title: '菜单标题', dataIndex: 'title', slotName: 'title', width: 170, fixed: !isMobile() ? 'left' : undefined },
{ title: '类型', dataIndex: 'type', slotName: 'type', align: 'center' },
{ title: '状态', dataIndex: 'status', slotName: 'status', align: 'center' },

View File

@@ -51,8 +51,8 @@
</template>
<script setup lang="ts">
import type { TableInstance } from '@arco-design/web-vue'
import { type NoticeQuery, type NoticeResp, deleteNotice, listNotice } from '@/apis/system'
import type { TableInstanceColumns } from '@/components/GiTable/type'
import { useTable } from '@/hooks'
import { useDict } from '@/hooks/app'
import { isMobile } from '@/utils'
@@ -74,7 +74,7 @@ const {
search,
handleDelete,
} = useTable((page) => listNotice({ ...queryForm, ...page }), { immediate: true })
const columns: TableInstanceColumns[] = [
const columns: TableInstance['columns'] = [
{
title: '序号',
width: 66,

View File

@@ -58,7 +58,6 @@
import { nextTick, ref } from 'vue'
import { Message, type TableInstance } from '@arco-design/web-vue'
import { type MenuResp, listMenu } from '@/apis/system/menu'
import type { TableInstanceColumns } from '@/components/GiTable/type'
import { isMobile } from '@/utils'
import type GiTable from '@/components/GiTable/index.vue'
import { useTable } from '@/hooks'
@@ -166,7 +165,7 @@ const {
},
})
const columns: TableInstanceColumns[] = [
const columns: TableInstance['columns'] = [
{ title: '菜单', dataIndex: 'title', slotName: 'title', width: 170, fixed: !isMobile() ? 'left' : undefined },
{ title: '权限', dataIndex: 'permissions', slotName: 'permissions' },
]

View File

@@ -61,11 +61,11 @@
</template>
<script lang='tsx' setup>
import type { TableInstance } from '@arco-design/web-vue'
import { Message, Modal } from '@arco-design/web-vue'
import RoleAssignModal from '../RoleAssignModal.vue'
import { useResetReactive, useTable } from '@/hooks'
import { type RoleUserQuery, type RoleUserResp, listRoleUser, unassignFromUsers } from '@/apis/system/role'
import type { TableInstanceColumns } from '@/components/GiTable/type'
import { isMobile } from '@/utils'
import has from '@/utils/has'
@@ -90,7 +90,7 @@ const {
selectAll,
handleDelete,
} = useTable((page) => listRoleUser(props.roleId, { ...queryForm, ...page }), { immediate: false })
const columns: TableInstanceColumns[] = [
const columns: TableInstance['columns'] = [
{
title: '序号',
width: 66,

View File

@@ -90,6 +90,7 @@
</template>
<script setup lang="ts">
import type { TableInstance } from '@arco-design/web-vue'
import DeptTree from './dept/index.vue'
import UserAddDrawer from './UserAddDrawer.vue'
import UserImportDrawer from './UserImportDrawer.vue'
@@ -97,7 +98,6 @@ import UserDetailDrawer from './UserDetailDrawer.vue'
import UserResetPwdModal from './UserResetPwdModal.vue'
import UserUpdateRoleModal from './UserUpdateRoleModal.vue'
import { type UserResp, deleteUser, exportUser, listUser } from '@/apis/system/user'
import type { TableInstanceColumns } from '@/components/GiTable/type'
import { DisEnableStatusList } from '@/constant/common'
import { useDownload, useResetReactive, useTable } from '@/hooks'
import { isMobile } from '@/utils'
@@ -150,7 +150,7 @@ const {
search,
handleDelete,
} = useTable((page) => listUser({ ...queryForm, ...page }), { immediate: false })
const columns: TableInstanceColumns[] = [
const columns: TableInstance['columns'] = [
{
title: '序号',
width: 66,