mirror of
https://gitee.com/dromara/go-view.git
synced 2025-02-25 00:33:00 +08:00
feat: 新增预览接口数据动态获取功能
This commit is contained in:
parent
6b8b1e43ae
commit
b98aeb1976
@ -1,3 +0,0 @@
|
|||||||
import Doc from './index.vue';
|
|
||||||
|
|
||||||
export { Doc };
|
|
3
src/components/GoDoc/index.ts
Normal file
3
src/components/GoDoc/index.ts
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
import GoDoc from './index.vue';
|
||||||
|
|
||||||
|
export { GoDoc };
|
@ -1,14 +1,17 @@
|
|||||||
import { toRefs, watchEffect } from 'vue'
|
import { ref, toRefs, watchEffect, nextTick } from 'vue'
|
||||||
|
import type VChart from 'vue-echarts'
|
||||||
import { http } from '@/api/http'
|
import { http } from '@/api/http'
|
||||||
import { CreateComponentType } from '@/packages/index.d'
|
import { CreateComponentType } from '@/packages/index.d'
|
||||||
import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
|
import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
|
||||||
import { RequestDataTypeEnum } from '@/enums/httpEnum'
|
import { RequestDataTypeEnum } from '@/enums/httpEnum'
|
||||||
|
import { isPreview } from '@/utils'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 数据监听与更改
|
* 图表的 setdata 数据监听与更改
|
||||||
* @param chartConfig
|
* @param chartConfig
|
||||||
*/
|
*/
|
||||||
export const useChartDataFetch = (chartConfig: CreateComponentType) => {
|
export const useChartDataFetch = (chartConfig: CreateComponentType) => {
|
||||||
|
const vChartRef = ref<typeof VChart | null>(null)
|
||||||
let fetchInterval: any = 0
|
let fetchInterval: any = 0
|
||||||
|
|
||||||
watchEffect(() => {
|
watchEffect(() => {
|
||||||
@ -25,15 +28,23 @@ export const useChartDataFetch = (chartConfig: CreateComponentType) => {
|
|||||||
// 处理地址
|
// 处理地址
|
||||||
if (requestUrl?.value && requestInterval.value > 0) {
|
if (requestUrl?.value && requestInterval.value > 0) {
|
||||||
// requestOriginUrl 允许为空
|
// requestOriginUrl 允许为空
|
||||||
const completePath = requestOriginUrl && requestOriginUrl.value + requestUrl.value
|
const completePath =
|
||||||
|
requestOriginUrl && requestOriginUrl.value + requestUrl.value
|
||||||
if (!completePath) return
|
if (!completePath) return
|
||||||
|
|
||||||
fetchInterval = setInterval(async () => {
|
fetchInterval = setInterval(async () => {
|
||||||
const res = await http(requestHttpType.value)(completePath || '', {})
|
const res = await http(requestHttpType.value)(completePath || '', {})
|
||||||
if (res.data) {
|
if (res.data) {
|
||||||
|
nextTick(() => {
|
||||||
chartConfig.option.dataset = res.data as any
|
chartConfig.option.dataset = res.data as any
|
||||||
|
if(isPreview() && vChartRef.value) {
|
||||||
|
vChartRef.value.setOption(chartConfig.option)
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}, requestInterval.value * 1000)
|
}, requestInterval.value * 1000)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
return { vChartRef }
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ import hljs from 'highlight.js/lib/core'
|
|||||||
import json from 'highlight.js/lib/languages/json'
|
import json from 'highlight.js/lib/languages/json'
|
||||||
import typescript from 'highlight.js/lib/languages/typescript'
|
import typescript from 'highlight.js/lib/languages/typescript'
|
||||||
|
|
||||||
|
// * code 展示
|
||||||
export const useCode = () => {
|
export const useCode = () => {
|
||||||
hljs.registerLanguage('json', json)
|
hljs.registerLanguage('json', json)
|
||||||
hljs.registerLanguage('typescript', typescript)
|
hljs.registerLanguage('typescript', typescript)
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import { ref } from 'vue'
|
import { ref } from 'vue'
|
||||||
import throttle from 'lodash/throttle'
|
import throttle from 'lodash/throttle'
|
||||||
|
|
||||||
|
// * 屏幕缩放适配
|
||||||
export const usePreviewScale = (
|
export const usePreviewScale = (
|
||||||
width: number,
|
width: number,
|
||||||
height: number,
|
height: number,
|
||||||
|
@ -5,7 +5,7 @@ import { borderRadius } from '@/settings/designSetting'
|
|||||||
import { toLight } from '@/utils'
|
import { toLight } from '@/utils'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设置全局主题
|
* * 设置全局主题
|
||||||
*/
|
*/
|
||||||
export const useThemeOverridesHook = () => {
|
export const useThemeOverridesHook = () => {
|
||||||
const designStore = useDesignStore()
|
const designStore = useDesignStore()
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<v-chart :theme="themeColor" :option="option" autoresize></v-chart>
|
<v-chart ref="vChartRef" :theme="themeColor" :option="option" :manual-update="isPreview()" autoresize></v-chart>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
@ -12,6 +12,7 @@ import { includes } from './config'
|
|||||||
import { mergeTheme } from '@/packages/public/chart'
|
import { mergeTheme } from '@/packages/public/chart'
|
||||||
import { useChartDataFetch } from '@/hooks/useChartDataFetch.hook'
|
import { useChartDataFetch } from '@/hooks/useChartDataFetch.hook'
|
||||||
import { CreateComponentType } from '@/packages/index.d'
|
import { CreateComponentType } from '@/packages/index.d'
|
||||||
|
import { isPreview } from '@/utils'
|
||||||
import {
|
import {
|
||||||
DatasetComponent,
|
DatasetComponent,
|
||||||
GridComponent,
|
GridComponent,
|
||||||
@ -47,5 +48,5 @@ const option = computed(() => {
|
|||||||
return mergeTheme(props.chartConfig.option, props.themeSetting, includes)
|
return mergeTheme(props.chartConfig.option, props.themeSetting, includes)
|
||||||
})
|
})
|
||||||
|
|
||||||
useChartDataFetch(props.chartConfig)
|
const { vChartRef } = useChartDataFetch(props.chartConfig)
|
||||||
</script>
|
</script>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<v-chart :theme="themeColor" :option="option" autoresize></v-chart>
|
<v-chart ref="vChartRef" :theme="themeColor" :option="option" :manual-update="isPreview()" autoresize></v-chart>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
@ -11,6 +11,7 @@ import { BarChart } from 'echarts/charts'
|
|||||||
import { mergeTheme } from '@/packages/public/chart'
|
import { mergeTheme } from '@/packages/public/chart'
|
||||||
import config, { includes } from './config'
|
import config, { includes } from './config'
|
||||||
import { useChartDataFetch } from '@/hooks/useChartDataFetch.hook'
|
import { useChartDataFetch } from '@/hooks/useChartDataFetch.hook'
|
||||||
|
import { isPreview } from '@/utils'
|
||||||
import {
|
import {
|
||||||
DatasetComponent,
|
DatasetComponent,
|
||||||
GridComponent,
|
GridComponent,
|
||||||
@ -46,5 +47,5 @@ const option = computed(() => {
|
|||||||
return mergeTheme(props.chartConfig.option, props.themeSetting, includes)
|
return mergeTheme(props.chartConfig.option, props.themeSetting, includes)
|
||||||
})
|
})
|
||||||
|
|
||||||
useChartDataFetch(props.chartConfig)
|
const { vChartRef } = useChartDataFetch(props.chartConfig)
|
||||||
</script>
|
</script>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<v-chart :theme="themeColor" :option="option.options" autoresize></v-chart>
|
<v-chart ref="vChartRef" :theme="themeColor" :option="option.options" :manual-update="isPreview()" autoresize></v-chart>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
@ -13,6 +13,8 @@ import { mergeTheme } from '@/packages/public/chart'
|
|||||||
import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
|
import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
|
||||||
import { chartColorsSearch, defaultTheme } from '@/settings/chartThemes/index'
|
import { chartColorsSearch, defaultTheme } from '@/settings/chartThemes/index'
|
||||||
import { DatasetComponent, GridComponent, TooltipComponent, LegendComponent } from 'echarts/components'
|
import { DatasetComponent, GridComponent, TooltipComponent, LegendComponent } from 'echarts/components'
|
||||||
|
import { useChartDataFetch } from '@/hooks/useChartDataFetch.hook'
|
||||||
|
import { isPreview } from '@/utils'
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
themeSetting: {
|
themeSetting: {
|
||||||
@ -45,7 +47,7 @@ const option = reactive({
|
|||||||
|
|
||||||
// 初始化与渐变色处理
|
// 初始化与渐变色处理
|
||||||
watch(() => chartEditStore.getEditCanvasConfig.chartThemeColor, (newColor: keyof typeof chartColorsSearch) => {
|
watch(() => chartEditStore.getEditCanvasConfig.chartThemeColor, (newColor: keyof typeof chartColorsSearch) => {
|
||||||
if (!document.location.hash.includes('preview')) {
|
if (!isPreview()) {
|
||||||
const themeColor = chartColorsSearch[newColor] || chartColorsSearch[defaultTheme]
|
const themeColor = chartColorsSearch[newColor] || chartColorsSearch[defaultTheme]
|
||||||
props.chartConfig.option.series.forEach((value: any) => {
|
props.chartConfig.option.series.forEach((value: any) => {
|
||||||
value.lineStyle.shadowColor = themeColor[2]
|
value.lineStyle.shadowColor = themeColor[2]
|
||||||
@ -64,4 +66,6 @@ watch(() => props.chartConfig.option.dataset, () => {
|
|||||||
}, {
|
}, {
|
||||||
deep: true
|
deep: true
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const { vChartRef } = useChartDataFetch(props.chartConfig)
|
||||||
</script>
|
</script>
|
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<v-chart :theme="themeColor" :option="option.options" autoresize></v-chart>
|
<v-chart ref="vChartRef" :theme="themeColor" :option="option.options" :manual-update="isPreview()" autoresize></v-chart>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
@ -13,6 +13,8 @@ import { mergeTheme } from '@/packages/public/chart'
|
|||||||
import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
|
import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
|
||||||
import { chartColorsSearch, defaultTheme } from '@/settings/chartThemes/index'
|
import { chartColorsSearch, defaultTheme } from '@/settings/chartThemes/index'
|
||||||
import { DatasetComponent, GridComponent, TooltipComponent, LegendComponent } from 'echarts/components'
|
import { DatasetComponent, GridComponent, TooltipComponent, LegendComponent } from 'echarts/components'
|
||||||
|
import { useChartDataFetch } from '@/hooks/useChartDataFetch.hook'
|
||||||
|
import { isPreview } from '@/utils'
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
themeSetting: {
|
themeSetting: {
|
||||||
@ -45,7 +47,7 @@ const option = reactive({
|
|||||||
|
|
||||||
// 渐变色处理
|
// 渐变色处理
|
||||||
watch(() => chartEditStore.getEditCanvasConfig.chartThemeColor, (newColor: keyof typeof chartColorsSearch) => {
|
watch(() => chartEditStore.getEditCanvasConfig.chartThemeColor, (newColor: keyof typeof chartColorsSearch) => {
|
||||||
if (!document.location.hash.includes('preview')) {
|
if (!isPreview()) {
|
||||||
const themeColor = chartColorsSearch[newColor] || chartColorsSearch[defaultTheme]
|
const themeColor = chartColorsSearch[newColor] || chartColorsSearch[defaultTheme]
|
||||||
props.chartConfig.option.series.forEach((value: any, index: number) => {
|
props.chartConfig.option.series.forEach((value: any, index: number) => {
|
||||||
value.areaStyle.color = new graphic.LinearGradient(0, 0, 0, 1, [
|
value.areaStyle.color = new graphic.LinearGradient(0, 0, 0, 1, [
|
||||||
@ -71,4 +73,6 @@ watch(() => props.chartConfig.option.dataset, () => {
|
|||||||
}, {
|
}, {
|
||||||
deep: true
|
deep: true
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const { vChartRef } = useChartDataFetch(props.chartConfig)
|
||||||
</script>
|
</script>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<v-chart :theme="themeColor" :option="option.options" autoresize></v-chart>
|
<v-chart ref="vChartRef" :theme="themeColor" :option="option.options" :manual-update="isPreview()" autoresize></v-chart>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
@ -13,6 +13,8 @@ import { mergeTheme } from '@/packages/public/chart'
|
|||||||
import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
|
import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
|
||||||
import { chartColorsSearch, defaultTheme } from '@/settings/chartThemes/index'
|
import { chartColorsSearch, defaultTheme } from '@/settings/chartThemes/index'
|
||||||
import { DatasetComponent, GridComponent, TooltipComponent, LegendComponent } from 'echarts/components'
|
import { DatasetComponent, GridComponent, TooltipComponent, LegendComponent } from 'echarts/components'
|
||||||
|
import { useChartDataFetch } from '@/hooks/useChartDataFetch.hook'
|
||||||
|
import { isPreview } from '@/utils'
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
themeSetting: {
|
themeSetting: {
|
||||||
@ -45,7 +47,7 @@ const option = reactive({
|
|||||||
|
|
||||||
// 渐变色处理
|
// 渐变色处理
|
||||||
watch(() => chartEditStore.getEditCanvasConfig.chartThemeColor, (newColor: keyof typeof chartColorsSearch) => {
|
watch(() => chartEditStore.getEditCanvasConfig.chartThemeColor, (newColor: keyof typeof chartColorsSearch) => {
|
||||||
if (!document.location.hash.includes('preview')) {
|
if (!isPreview()) {
|
||||||
const themeColor = chartColorsSearch[newColor] || chartColorsSearch[defaultTheme]
|
const themeColor = chartColorsSearch[newColor] || chartColorsSearch[defaultTheme]
|
||||||
props.chartConfig.option.series.forEach((value: any, index: number) => {
|
props.chartConfig.option.series.forEach((value: any, index: number) => {
|
||||||
value.areaStyle.color = new graphic.LinearGradient(0, 0, 0, 1, [
|
value.areaStyle.color = new graphic.LinearGradient(0, 0, 0, 1, [
|
||||||
@ -70,4 +72,6 @@ watch(() => props.chartConfig.option.dataset, () => {
|
|||||||
}, {
|
}, {
|
||||||
deep: true
|
deep: true
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const { vChartRef } = useChartDataFetch(props.chartConfig)
|
||||||
</script>
|
</script>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<v-chart :theme="themeColor" :option="option" autoresize></v-chart>
|
<v-chart ref="vChartRef" :theme="themeColor" :option="option" :manual-update="isPreview()" autoresize></v-chart>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
@ -10,6 +10,8 @@ import { CanvasRenderer } from 'echarts/renderers'
|
|||||||
import { PieChart } from 'echarts/charts'
|
import { PieChart } from 'echarts/charts'
|
||||||
import { mergeTheme } from '@/packages/public/chart'
|
import { mergeTheme } from '@/packages/public/chart'
|
||||||
import config, { includes } from './config'
|
import config, { includes } from './config'
|
||||||
|
import { useChartDataFetch } from '@/hooks/useChartDataFetch.hook'
|
||||||
|
import { isPreview } from '@/utils'
|
||||||
import {
|
import {
|
||||||
DatasetComponent,
|
DatasetComponent,
|
||||||
GridComponent,
|
GridComponent,
|
||||||
@ -45,4 +47,6 @@ use([
|
|||||||
const option = computed(() => {
|
const option = computed(() => {
|
||||||
return mergeTheme(props.chartConfig.option, props.themeSetting, includes)
|
return mergeTheme(props.chartConfig.option, props.themeSetting, includes)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const { vChartRef } = useChartDataFetch(props.chartConfig)
|
||||||
</script>
|
</script>
|
||||||
|
@ -128,6 +128,10 @@ export const openGiteeSourceCode = () => {
|
|||||||
openNewWindow(giteeSourceCodePath)
|
openNewWindow(giteeSourceCodePath)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const isPreview = () => {
|
||||||
|
return document.location.hash.includes('preview')
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* * 获取当前路由下的参数
|
* * 获取当前路由下的参数
|
||||||
* @returns object
|
* @returns object
|
||||||
|
@ -4,6 +4,14 @@ import screenfull from 'screenfull'
|
|||||||
import throttle from 'lodash/throttle'
|
import throttle from 'lodash/throttle'
|
||||||
import Image_404 from '../assets/images/exception/image-404.png'
|
import Image_404 from '../assets/images/exception/image-404.png'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* * 判断是否是开发环境
|
||||||
|
* @return { Boolean }
|
||||||
|
*/
|
||||||
|
export const isDev = () => {
|
||||||
|
return import.meta.env.DEV
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* * 生成一个不重复的ID
|
* * 生成一个不重复的ID
|
||||||
* @param { Number } randomLength
|
* @param { Number } randomLength
|
||||||
|
@ -6,13 +6,15 @@
|
|||||||
:options="selectOptions"
|
:options="selectOptions"
|
||||||
/>
|
/>
|
||||||
</setting-item-box>
|
</setting-item-box>
|
||||||
|
|
||||||
<setting-item-box name="源地址:" :alone="true">
|
<setting-item-box name="源地址:" :alone="true">
|
||||||
<n-text type="info">{{ requestOriginUrl || '暂无' }}</n-text>
|
<n-text type="info">{{ requestOriginUrl || '暂无' }}</n-text>
|
||||||
</setting-item-box>
|
</setting-item-box>
|
||||||
|
|
||||||
<setting-item-box :alone="true">
|
<setting-item-box :alone="true">
|
||||||
<template #name>
|
<template #name>
|
||||||
地址
|
地址
|
||||||
<n-tooltip trigger="hover" v-if="ISDEV">
|
<n-tooltip trigger="hover" v-if="isDev()">
|
||||||
<template #trigger>
|
<template #trigger>
|
||||||
<n-icon size="21" :depth="3">
|
<n-icon size="21" :depth="3">
|
||||||
<help-outline-icon></help-outline-icon>
|
<help-outline-icon></help-outline-icon>
|
||||||
@ -33,6 +35,7 @@
|
|||||||
placeholder="请输入地址(去除源)"
|
placeholder="请输入地址(去除源)"
|
||||||
/>
|
/>
|
||||||
</setting-item-box>
|
</setting-item-box>
|
||||||
|
|
||||||
<setting-item-box name="测试" :alone="true">
|
<setting-item-box name="测试" :alone="true">
|
||||||
<n-space>
|
<n-space>
|
||||||
<n-button @click="sendHandle">
|
<n-button @click="sendHandle">
|
||||||
@ -45,7 +48,9 @@
|
|||||||
</n-button>
|
</n-button>
|
||||||
</n-space>
|
</n-space>
|
||||||
</setting-item-box>
|
</setting-item-box>
|
||||||
|
|
||||||
<go-skeleton :load="loading" :repeat="3"></go-skeleton>
|
<go-skeleton :load="loading" :repeat="3"></go-skeleton>
|
||||||
|
|
||||||
<chart-data-matching-and-show
|
<chart-data-matching-and-show
|
||||||
v-show="showMatching && !loading"
|
v-show="showMatching && !loading"
|
||||||
:ajax="true"
|
:ajax="true"
|
||||||
@ -63,13 +68,12 @@ import { http } from '@/api/http'
|
|||||||
import { SelectHttpType } from '../../index.d'
|
import { SelectHttpType } from '../../index.d'
|
||||||
import { ChartDataMatchingAndShow } from '../ChartDataMatchingAndShow'
|
import { ChartDataMatchingAndShow } from '../ChartDataMatchingAndShow'
|
||||||
import { useTargetData } from '../../../hooks/useTargetData.hook'
|
import { useTargetData } from '../../../hooks/useTargetData.hook'
|
||||||
|
import { isDev } from '@/utils'
|
||||||
|
|
||||||
const { HelpOutlineIcon, FlashIcon } = icon.ionicons5
|
const { HelpOutlineIcon, FlashIcon } = icon.ionicons5
|
||||||
|
|
||||||
const { targetData, chartEditStore } = useTargetData()
|
const { targetData, chartEditStore } = useTargetData()
|
||||||
const { requestOriginUrl } = toRefs(chartEditStore.getRequestGlobalConfig)
|
const { requestOriginUrl } = toRefs(chartEditStore.getRequestGlobalConfig)
|
||||||
// 是否是开发环境
|
|
||||||
const ISDEV = import.meta.env.DEV === true
|
|
||||||
// 是否展示数据分析
|
// 是否展示数据分析
|
||||||
const loading = ref(false)
|
const loading = ref(false)
|
||||||
const showMatching = ref(false)
|
const showMatching = ref(false)
|
||||||
@ -96,6 +100,7 @@ const sendHandle = async () => {
|
|||||||
}
|
}
|
||||||
const completePath = requestOriginUrl && requestOriginUrl.value + requestUrl
|
const completePath = requestOriginUrl && requestOriginUrl.value + requestUrl
|
||||||
const res = await http(requestHttpType)(completePath || '', {})
|
const res = await http(requestHttpType)(completePath || '', {})
|
||||||
|
setTimeout(() => {
|
||||||
loading.value = false
|
loading.value = false
|
||||||
if (res.status === 200) {
|
if (res.status === 200) {
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
@ -104,6 +109,7 @@ const sendHandle = async () => {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
window['$message'].warning('数据异常,请检查接口数据!')
|
window['$message'].warning('数据异常,请检查接口数据!')
|
||||||
|
}, 500)
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user