diff --git a/.gitignore b/.gitignore index 42331951..e12136fb 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,6 @@ dist dist-ssr *.local .vscode -stats.html \ No newline at end of file +stats.html +auto-imports.d.ts +components.d.ts \ No newline at end of file diff --git a/package.json b/package.json index 131522ae..19c591e4 100644 --- a/package.json +++ b/package.json @@ -61,6 +61,8 @@ "sass": "^1.49.11", "sass-loader": "^12.6.0", "typescript": "^4.6.3", + "unplugin-auto-import": "^0.10.1", + "unplugin-vue-components": "^0.21.1", "vite": "2.9.5", "vite-plugin-compression": "^0.5.1", "vite-plugin-imagemin": "^0.6.1", diff --git a/src/components/Pages/ChartItemSetting/GlobalSetting.vue b/src/components/Pages/ChartItemSetting/GlobalSetting.vue index 0548cfc4..d0cbe872 100644 --- a/src/components/Pages/ChartItemSetting/GlobalSetting.vue +++ b/src/components/Pages/ChartItemSetting/GlobalSetting.vue @@ -7,22 +7,30 @@ size="small" > - - - - - - + + + + + - + { const legend = computed(() => { return props.optionData.legend }) + +const textAlignOptions = [ + {label: '自动', value: 'auto'}, + {label: '左对齐', value: 'left'}, + {label: '右对齐', value: 'right'}, + {label: '居中对齐', value: 'center'}, +] diff --git a/src/main.ts b/src/main.ts index cf9b86df..23fac8f0 100644 --- a/src/main.ts +++ b/src/main.ts @@ -20,7 +20,7 @@ async function appInit() { const app = createApp(App) // 注册全局常用的 naive-ui 组件 - setupNaive(app) + // setupNaive(app) // 注册全局自定义指令 setupDirectives(app) diff --git a/src/packages/components/Charts/Mores/Funnel/config.ts b/src/packages/components/Charts/Mores/Funnel/config.ts new file mode 100644 index 00000000..e7712ef4 --- /dev/null +++ b/src/packages/components/Charts/Mores/Funnel/config.ts @@ -0,0 +1,41 @@ +import { FunnelConfig } from './index' +import dataJson from './data.json' +import { echartOptionProfixHandle, publicConfig } from '@/packages/public' +import { CreateComponentType } from '@/packages/index.d' +import cloneDeep from 'lodash/cloneDeep' + +export const includes = ['legend'] + +export const option = { + title: { + textStyle: {}, + }, + legend: {}, + color: [ + '#142f53', '#13407e', '#0f62d4', '#0c73ff' + ], + tooltip: { + show: true, + trigger: 'item', + }, + dataset: { + ...dataJson + }, + series: { + sort: 'descending', + orient: 'vertical', + type: 'funnel', + label: { + show: true, + position: 'inside' + } + }, + } + + export default class Config extends publicConfig implements CreateComponentType { + public key = FunnelConfig.key + public chartConfig = cloneDeep(FunnelConfig) + // 图表配置项 + public option = echartOptionProfixHandle(option, includes) + } + \ No newline at end of file diff --git a/src/packages/components/Charts/Mores/Funnel/config.vue b/src/packages/components/Charts/Mores/Funnel/config.vue index 44a7bc22..21088284 100644 --- a/src/packages/components/Charts/Mores/Funnel/config.vue +++ b/src/packages/components/Charts/Mores/Funnel/config.vue @@ -1,6 +1,62 @@ diff --git a/src/packages/components/Charts/Mores/Funnel/data.json b/src/packages/components/Charts/Mores/Funnel/data.json new file mode 100644 index 00000000..c0373b13 --- /dev/null +++ b/src/packages/components/Charts/Mores/Funnel/data.json @@ -0,0 +1,9 @@ +{ + "source": [ + ["name","value"], + ["Visit", 20], + ["Inquiry", 40], + ["Order", 60], + ["Click", 80] + ] +} \ No newline at end of file diff --git a/src/packages/components/Charts/Mores/Funnel/index.ts b/src/packages/components/Charts/Mores/Funnel/index.ts index 7a89239c..7667b5ca 100644 --- a/src/packages/components/Charts/Mores/Funnel/index.ts +++ b/src/packages/components/Charts/Mores/Funnel/index.ts @@ -1,14 +1,14 @@ +import { getComponentConfig } from './../../../../../utils/componets'; import image from '@/assets/images/chart/charts/funnel.png' import { ConfigType, PackagesCategoryEnum } from '@/packages/index.d' import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d' -export const FunnelConfig: ConfigType = { +export const FunnelConfig: ConfigType = getComponentConfig({ key: 'Funnel', - chartKey: 'VFunnel', - conKey: 'VCFunnel', title: '漏斗图', category: ChatCategoryEnum.MORE, categoryName: ChatCategoryEnumName.MORE, package: PackagesCategoryEnum.CHARTS, image -} +}) + diff --git a/src/packages/components/Charts/Mores/Funnel/index.vue b/src/packages/components/Charts/Mores/Funnel/index.vue index 31fe77be..91920ddd 100644 --- a/src/packages/components/Charts/Mores/Funnel/index.vue +++ b/src/packages/components/Charts/Mores/Funnel/index.vue @@ -1,10 +1,54 @@ diff --git a/src/packages/public/chart.ts b/src/packages/public/chart.ts index d36a850e..e129802f 100644 --- a/src/packages/public/chart.ts +++ b/src/packages/public/chart.ts @@ -7,7 +7,7 @@ import { globalThemeJson } from '@/settings/chartThemes/index' * * 合并 color 和全局配置项 * @param option 配置 * @param themeSetting 设置 - * @param excludes 排除元素 + * @param includes 合并元素 * @returns object */ export const mergeTheme = (option: T, themeSetting: U, includes: string[]) => { diff --git a/vite.config.ts b/vite.config.ts index 94e076cc..289cef4e 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -7,6 +7,10 @@ import { viteMockServe } from 'vite-plugin-mock' import monacoEditorPlugin from 'vite-plugin-monaco-editor' import { visualizer } from "rollup-plugin-visualizer"; import viteImagemin from 'vite-plugin-imagemin' +import AutoImport from 'unplugin-auto-import/vite' +import Components from 'unplugin-vue-components/vite' +import { NaiveUiResolver +} from 'unplugin-vue-components/resolvers' function pathResolve(dir: string) { return resolve(process.cwd(), '.', dir) @@ -20,6 +24,19 @@ const plugins = [ ] const devPlugins = [ + AutoImport( + { + imports: [ + 'vue', + 'vue-router', + ] + } + ), + Components({ + resolvers: [ + NaiveUiResolver() + ] + }), viteMockServe({ mockPath: '/src/api/mock', // 开发打包开关