mirror of
https://github.com/continew-org/continew-admin-ui.git
synced 2025-09-13 14:57:14 +08:00
perf: 文件管理、分析页、代码生成等部分组件调整为异步加载
This commit is contained in:
@@ -4,7 +4,6 @@
|
|||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { registerMap } from 'echarts/core'
|
import { registerMap } from 'echarts/core'
|
||||||
import { ref } from 'vue'
|
|
||||||
import VCharts from 'vue-echarts'
|
import VCharts from 'vue-echarts'
|
||||||
import worldMap from './world.json'
|
import worldMap from './world.json'
|
||||||
import chinaMap from './china.json'
|
import chinaMap from './china.json'
|
||||||
|
@@ -12,6 +12,7 @@ import { useChart } from '@/hooks'
|
|||||||
import { type DashboardChartCommonResp, getAnalysisTimeslot as getData } from '@/apis/common'
|
import { type DashboardChartCommonResp, getAnalysisTimeslot as getData } from '@/apis/common'
|
||||||
import handleIcon from '@/assets/icons/slider.svg'
|
import handleIcon from '@/assets/icons/slider.svg'
|
||||||
|
|
||||||
|
const Chart = defineAsyncComponent(() => import('@/components/Chart/index.vue'))
|
||||||
// 提示框
|
// 提示框
|
||||||
const tooltipItemsHtmlString = (items) => {
|
const tooltipItemsHtmlString = (items) => {
|
||||||
return items
|
return items
|
||||||
|
@@ -13,6 +13,7 @@ import type { EChartsOption } from 'echarts'
|
|||||||
import { useChart } from '@/hooks'
|
import { useChart } from '@/hooks'
|
||||||
import { type DashboardChartCommonResp, getAnalysisBrowser as getData } from '@/apis/common'
|
import { type DashboardChartCommonResp, getAnalysisBrowser as getData } from '@/apis/common'
|
||||||
|
|
||||||
|
const Chart = defineAsyncComponent(() => import('@/components/Chart/index.vue'))
|
||||||
const xAxis = ref<string[]>([])
|
const xAxis = ref<string[]>([])
|
||||||
const chartData = ref([])
|
const chartData = ref([])
|
||||||
const { chartOption } = useChart((isDark: EChartsOption) => {
|
const { chartOption } = useChart((isDark: EChartsOption) => {
|
||||||
|
@@ -42,6 +42,7 @@ import { computed } from 'vue'
|
|||||||
import { useChart } from '@/hooks'
|
import { useChart } from '@/hooks'
|
||||||
import { useAppStore } from '@/stores'
|
import { useAppStore } from '@/stores'
|
||||||
|
|
||||||
|
const Chart = defineAsyncComponent(() => import('@/components/Chart/index.vue'))
|
||||||
const appStore = useAppStore()
|
const appStore = useAppStore()
|
||||||
const isDark = computed(() => appStore.theme === 'dark')
|
const isDark = computed(() => appStore.theme === 'dark')
|
||||||
|
|
||||||
|
@@ -42,6 +42,7 @@ import { computed } from 'vue'
|
|||||||
import { useChart } from '@/hooks'
|
import { useChart } from '@/hooks'
|
||||||
import { useAppStore } from '@/stores'
|
import { useAppStore } from '@/stores'
|
||||||
|
|
||||||
|
const Chart = defineAsyncComponent(() => import('@/components/Chart/index.vue'))
|
||||||
const appStore = useAppStore()
|
const appStore = useAppStore()
|
||||||
const isDark = computed(() => appStore.theme === 'dark')
|
const isDark = computed(() => appStore.theme === 'dark')
|
||||||
|
|
||||||
|
@@ -43,6 +43,7 @@ import { useChart } from '@/hooks'
|
|||||||
import { useAppStore } from '@/stores'
|
import { useAppStore } from '@/stores'
|
||||||
import { type DashboardChartCommonResp, getDashboardOverviewIp as getData } from '@/apis'
|
import { type DashboardChartCommonResp, getDashboardOverviewIp as getData } from '@/apis'
|
||||||
|
|
||||||
|
const Chart = defineAsyncComponent(() => import('@/components/Chart/index.vue'))
|
||||||
const appStore = useAppStore()
|
const appStore = useAppStore()
|
||||||
const isDark = computed(() => appStore.theme === 'dark')
|
const isDark = computed(() => appStore.theme === 'dark')
|
||||||
|
|
||||||
|
@@ -45,7 +45,7 @@ import { type DashboardChartCommonResp, getDashboardOverviewPv as getData } from
|
|||||||
|
|
||||||
const appStore = useAppStore()
|
const appStore = useAppStore()
|
||||||
const isDark = computed(() => appStore.theme === 'dark')
|
const isDark = computed(() => appStore.theme === 'dark')
|
||||||
|
const Chart = defineAsyncComponent(() => import('@/components/Chart/index.vue'))
|
||||||
const count = ref(0)
|
const count = ref(0)
|
||||||
const today = ref(0)
|
const today = ref(0)
|
||||||
const growth = ref(0)
|
const growth = ref(0)
|
||||||
|
@@ -30,6 +30,8 @@ import type { EChartsOption } from 'echarts'
|
|||||||
import { getAnalysisGeo as getData } from '@/apis/common/dashboard'
|
import { getAnalysisGeo as getData } from '@/apis/common/dashboard'
|
||||||
import { useChart } from '@/hooks'
|
import { useChart } from '@/hooks'
|
||||||
|
|
||||||
|
const Chart = defineAsyncComponent(() => import('@/components/Chart/index.vue'))
|
||||||
|
|
||||||
const chartRef = useTemplateRef('chartRef')
|
const chartRef = useTemplateRef('chartRef')
|
||||||
const chartData = ref([])
|
const chartData = ref([])
|
||||||
const totalValue = ref(0)
|
const totalValue = ref(0)
|
||||||
|
@@ -13,6 +13,8 @@ import type { EChartsOption } from 'echarts'
|
|||||||
import { useChart } from '@/hooks'
|
import { useChart } from '@/hooks'
|
||||||
import { type DashboardChartCommonResp, getAnalysisModule as getData } from '@/apis/common'
|
import { type DashboardChartCommonResp, getAnalysisModule as getData } from '@/apis/common'
|
||||||
|
|
||||||
|
const Chart = defineAsyncComponent(() => import('@/components/Chart/index.vue'))
|
||||||
|
|
||||||
const yAxis = ref<string[]>([])
|
const yAxis = ref<string[]>([])
|
||||||
const chartData = ref([])
|
const chartData = ref([])
|
||||||
const { chartOption } = useChart((isDark: EChartsOption) => {
|
const { chartOption } = useChart((isDark: EChartsOption) => {
|
||||||
|
@@ -13,6 +13,7 @@ import type { EChartsOption } from 'echarts'
|
|||||||
import { useChart } from '@/hooks'
|
import { useChart } from '@/hooks'
|
||||||
import { type DashboardChartCommonResp, getAnalysisOs as getData } from '@/apis/common'
|
import { type DashboardChartCommonResp, getAnalysisOs as getData } from '@/apis/common'
|
||||||
|
|
||||||
|
const Chart = defineAsyncComponent(() => import('@/components/Chart/index.vue'))
|
||||||
const xAxis = ref<string[]>([])
|
const xAxis = ref<string[]>([])
|
||||||
const chartData = ref([])
|
const chartData = ref([])
|
||||||
const { chartOption } = useChart((isDark: EChartsOption) => {
|
const { chartOption } = useChart((isDark: EChartsOption) => {
|
||||||
|
@@ -35,9 +35,10 @@ import Geo from './components/Geo.vue'
|
|||||||
import Os from './components/Os.vue'
|
import Os from './components/Os.vue'
|
||||||
import Browser from './components/Browser.vue'
|
import Browser from './components/Browser.vue'
|
||||||
import Module from './components/Module.vue'
|
import Module from './components/Module.vue'
|
||||||
import AccessTimeslot from './components/AccessTimeslot.vue'
|
import AccessTimeslot from '@/views/dashboard/analysis/components/AccessTimeslot.vue'
|
||||||
|
|
||||||
defineOptions({ name: 'Analysis' })
|
defineOptions({ name: 'Analysis' })
|
||||||
|
// const AccessTimeslot = defineAsyncComponent(() => import('./components/AccessTimeslot.vue'))
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped></style>
|
<style lang="scss" scoped></style>
|
||||||
|
@@ -40,16 +40,9 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import FileImage from './FileImage.vue'
|
|
||||||
import FileRightMenu from './FileRightMenu.vue'
|
import FileRightMenu from './FileRightMenu.vue'
|
||||||
import type { FileItem } from '@/apis/system'
|
import type { FileItem } from '@/apis/system'
|
||||||
|
|
||||||
interface Props {
|
|
||||||
data?: FileItem[]
|
|
||||||
selectedFileIds?: string[]
|
|
||||||
isBatchMode?: boolean
|
|
||||||
}
|
|
||||||
|
|
||||||
const props = withDefaults(defineProps<Props>(), {
|
const props = withDefaults(defineProps<Props>(), {
|
||||||
data: () => [], // 文件数据
|
data: () => [], // 文件数据
|
||||||
selectedFileIds: () => [], // 批量模式下选中的文件id数组
|
selectedFileIds: () => [], // 批量模式下选中的文件id数组
|
||||||
@@ -62,6 +55,14 @@ const emit = defineEmits<{
|
|||||||
(e: 'right-menu-click', mode: string, item: FileItem): void
|
(e: 'right-menu-click', mode: string, item: FileItem): void
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
|
const FileImage = defineAsyncComponent(() => import('./FileImage.vue'))
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
data?: FileItem[]
|
||||||
|
selectedFileIds?: string[]
|
||||||
|
isBatchMode?: boolean
|
||||||
|
}
|
||||||
|
|
||||||
// 文件名称带后缀
|
// 文件名称带后缀
|
||||||
const getFileName = (item: FileItem) => {
|
const getFileName = (item: FileItem) => {
|
||||||
return `${item.name}${item.extension ? `.${item.extension}` : ''}`
|
return `${item.name}${item.extension ? `.${item.extension}` : ''}`
|
||||||
|
@@ -65,17 +65,10 @@
|
|||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import type { TableInstance, TableRowSelection } from '@arco-design/web-vue'
|
import type { TableInstance, TableRowSelection } from '@arco-design/web-vue'
|
||||||
import FileImage from './FileImage.vue'
|
|
||||||
import FileRightMenu from './FileRightMenu.vue'
|
import FileRightMenu from './FileRightMenu.vue'
|
||||||
import type { FileItem } from '@/apis/system'
|
import type { FileItem } from '@/apis/system'
|
||||||
import { formatFileSize } from '@/utils'
|
import { formatFileSize } from '@/utils'
|
||||||
|
|
||||||
interface Props {
|
|
||||||
data?: FileItem[]
|
|
||||||
selectedFileIds?: string[]
|
|
||||||
isBatchMode?: boolean
|
|
||||||
}
|
|
||||||
|
|
||||||
const props = withDefaults(defineProps<Props>(), {
|
const props = withDefaults(defineProps<Props>(), {
|
||||||
data: () => [], // 文件数据
|
data: () => [], // 文件数据
|
||||||
selectedFileIds: () => [],
|
selectedFileIds: () => [],
|
||||||
@@ -88,6 +81,14 @@ const emit = defineEmits<{
|
|||||||
(e: 'right-menu-click', mode: string, item: FileItem): void
|
(e: 'right-menu-click', mode: string, item: FileItem): void
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
|
const FileImage = defineAsyncComponent(() => import('./FileImage.vue'))
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
data?: FileItem[]
|
||||||
|
selectedFileIds?: string[]
|
||||||
|
isBatchMode?: boolean
|
||||||
|
}
|
||||||
|
|
||||||
// 文件名称带后缀
|
// 文件名称带后缀
|
||||||
const getFileName = (item: FileItem) => {
|
const getFileName = (item: FileItem) => {
|
||||||
return `${item.name}${item.extension ? `.${item.extension}` : ''}`
|
return `${item.name}${item.extension ? `.${item.extension}` : ''}`
|
||||||
|
@@ -99,9 +99,11 @@ import { type FileItem, type FileQuery, deleteFile, listFile, uploadFile } from
|
|||||||
import { ImageTypes, OfficeTypes } from '@/constant/file'
|
import { ImageTypes, OfficeTypes } from '@/constant/file'
|
||||||
import 'viewerjs/dist/viewer.css'
|
import 'viewerjs/dist/viewer.css'
|
||||||
import { downloadByUrl } from '@/utils/downloadFile'
|
import { downloadByUrl } from '@/utils/downloadFile'
|
||||||
import FilePreview from '@/components/FilePreview/index.vue'
|
|
||||||
import type { ExcelConfig } from '@/components/FilePreview/type'
|
import type { ExcelConfig } from '@/components/FilePreview/type'
|
||||||
|
|
||||||
|
const FilePreview = defineAsyncComponent(() => import('@/components/FilePreview/index.vue'))
|
||||||
|
|
||||||
const FileList = defineAsyncComponent(() => import('./FileList.vue'))
|
const FileList = defineAsyncComponent(() => import('./FileList.vue'))
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const { mode, selectedFileIds, toggleMode, addSelectedFileItem } = useFileManage()
|
const { mode, selectedFileIds, toggleMode, addSelectedFileItem } = useFileManage()
|
||||||
|
@@ -42,14 +42,14 @@
|
|||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import GenConfigDrawer from './GenConfigDrawer.vue'
|
import GenConfigDrawer from './GenConfigDrawer.vue'
|
||||||
import GenPreviewModal from './GenPreviewModal.vue'
|
|
||||||
import { generate, listGenerator } from '@/apis/tool'
|
import { generate, listGenerator } from '@/apis/tool'
|
||||||
import type { TableInstanceColumns } from '@/components/GiTable/type'
|
import type { TableInstanceColumns } from '@/components/GiTable/type'
|
||||||
import { useTable } from '@/hooks'
|
import { useTable } from '@/hooks'
|
||||||
import { isMobile } from '@/utils'
|
import { isMobile } from '@/utils'
|
||||||
|
|
||||||
defineOptions({ name: 'Generator' })
|
defineOptions({ name: 'Generator' })
|
||||||
|
const GenPreviewModal = defineAsyncComponent(() => import('./GenPreviewModal.vue'))
|
||||||
const queryForm = reactive({
|
const queryForm = reactive({
|
||||||
tableName: undefined,
|
tableName: undefined,
|
||||||
sort: ['createTime,desc'],
|
sort: ['createTime,desc'],
|
||||||
|
Reference in New Issue
Block a user