chore: 框架构建流程调整
This commit is contained in:
		
							parent
							
								
									9438489a11
								
							
						
					
					
						commit
						b0f2b93bbf
					
				
							
								
								
									
										6
									
								
								apps/designer/.vscode/extensions.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								apps/designer/.vscode/extensions.json
									
									
									
									
										vendored
									
									
								
							| @ -1,5 +1,3 @@ | |||||||
| { | { | ||||||
|   "recommendations": [ |   "recommendations": ["vue.volar"] | ||||||
|     "vue.volar" | } | ||||||
|   ] |  | ||||||
| } |  | ||||||
|  | |||||||
| @ -13,17 +13,17 @@ | |||||||
|     "clean": "rimraf node_modules" |     "clean": "rimraf node_modules" | ||||||
|   }, |   }, | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|     "@vtj/core": "^0.10.10", |     "@vtj/core": "^0.10.12", | ||||||
|     "@vtj/designer": "0.10.10", |     "@vtj/designer": "0.10.12", | ||||||
|     "@vtj/icons": "0.10.10", |     "@vtj/icons": "0.10.12", | ||||||
|     "@vtj/local": "^0.10.10", |     "@vtj/local": "^0.10.12", | ||||||
|     "@vtj/materials": "^0.10.10", |     "@vtj/materials": "^0.10.12", | ||||||
|     "@vtj/node": "0.10.2", |     "@vtj/node": "0.10.2", | ||||||
|     "@vtj/pro": "^0.10.10", |     "@vtj/pro": "^0.10.12", | ||||||
|     "@vtj/renderer": "^0.10.10", |     "@vtj/renderer": "^0.10.12", | ||||||
|     "@vtj/ui": "^0.10.10", |     "@vtj/ui": "^0.10.12", | ||||||
|     "@vtj/utils": "0.10.10", |     "@vtj/utils": "0.10.12", | ||||||
|     "@vtj/web": "^0.10.10", |     "@vtj/web": "^0.10.12", | ||||||
|     "axios": "^1.8.1", |     "axios": "^1.8.1", | ||||||
|     "element-plus": "^2.9.4", |     "element-plus": "^2.9.4", | ||||||
|     "licia-es": "^1.46.0", |     "licia-es": "^1.46.0", | ||||||
|  | |||||||
| @ -1,7 +1,8 @@ | |||||||
| import { rm } from 'fs/promises'; | import { rm } from 'node:fs/promises'; | ||||||
|  | 
 | ||||||
| console.log('开始清理...'); | console.log('开始清理...'); | ||||||
| await rm('node_modules', { recursive: true, force: true }); | await rm('node_modules', { recursive: true, force: true }); | ||||||
| await rm('dist', { recursive: true, force: true }); | await rm('dist', { recursive: true, force: true }); | ||||||
| await rm('package-lock.json', { recursive: true, force: true }); | await rm('package-lock.json', { recursive: true, force: true }); | ||||||
| await rm('pnpm-lock.yaml', { recursive: true, force: true }); | await rm('pnpm-lock.yaml', { recursive: true, force: true }); | ||||||
| console.log('开始完成!'); | console.log('开始完成!'); | ||||||
|  | |||||||
							
								
								
									
										165
									
								
								apps/designer/src/auto-imports.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										165
									
								
								apps/designer/src/auto-imports.d.ts
									
									
									
									
										vendored
									
									
								
							| @ -6,98 +6,83 @@ | |||||||
| // biome-ignore lint: disable
 | // biome-ignore lint: disable
 | ||||||
| export {} | export {} | ||||||
| declare global { | declare global { | ||||||
|   const EffectScope: (typeof import('vue'))['EffectScope']; |   const EffectScope: typeof import('vue')['EffectScope'] | ||||||
|   const acceptHMRUpdate: (typeof import('pinia'))['acceptHMRUpdate']; |   const acceptHMRUpdate: typeof import('pinia')['acceptHMRUpdate'] | ||||||
|   const computed: (typeof import('vue'))['computed']; |   const computed: typeof import('vue')['computed'] | ||||||
|   const createApp: (typeof import('vue'))['createApp']; |   const createApp: typeof import('vue')['createApp'] | ||||||
|   const createPinia: (typeof import('pinia'))['createPinia']; |   const createPinia: typeof import('pinia')['createPinia'] | ||||||
|   const customRef: (typeof import('vue'))['customRef']; |   const customRef: typeof import('vue')['customRef'] | ||||||
|   const defineAsyncComponent: (typeof import('vue'))['defineAsyncComponent']; |   const defineAsyncComponent: typeof import('vue')['defineAsyncComponent'] | ||||||
|   const defineComponent: (typeof import('vue'))['defineComponent']; |   const defineComponent: typeof import('vue')['defineComponent'] | ||||||
|   const defineStore: (typeof import('pinia'))['defineStore']; |   const defineStore: typeof import('pinia')['defineStore'] | ||||||
|   const effectScope: (typeof import('vue'))['effectScope']; |   const effectScope: typeof import('vue')['effectScope'] | ||||||
|   const getActivePinia: (typeof import('pinia'))['getActivePinia']; |   const getActivePinia: typeof import('pinia')['getActivePinia'] | ||||||
|   const getCurrentInstance: (typeof import('vue'))['getCurrentInstance']; |   const getCurrentInstance: typeof import('vue')['getCurrentInstance'] | ||||||
|   const getCurrentScope: (typeof import('vue'))['getCurrentScope']; |   const getCurrentScope: typeof import('vue')['getCurrentScope'] | ||||||
|   const h: (typeof import('vue'))['h']; |   const h: typeof import('vue')['h'] | ||||||
|   const inject: (typeof import('vue'))['inject']; |   const inject: typeof import('vue')['inject'] | ||||||
|   const isProxy: (typeof import('vue'))['isProxy']; |   const isProxy: typeof import('vue')['isProxy'] | ||||||
|   const isReactive: (typeof import('vue'))['isReactive']; |   const isReactive: typeof import('vue')['isReactive'] | ||||||
|   const isReadonly: (typeof import('vue'))['isReadonly']; |   const isReadonly: typeof import('vue')['isReadonly'] | ||||||
|   const isRef: (typeof import('vue'))['isRef']; |   const isRef: typeof import('vue')['isRef'] | ||||||
|   const mapActions: (typeof import('pinia'))['mapActions']; |   const mapActions: typeof import('pinia')['mapActions'] | ||||||
|   const mapGetters: (typeof import('pinia'))['mapGetters']; |   const mapGetters: typeof import('pinia')['mapGetters'] | ||||||
|   const mapState: (typeof import('pinia'))['mapState']; |   const mapState: typeof import('pinia')['mapState'] | ||||||
|   const mapStores: (typeof import('pinia'))['mapStores']; |   const mapStores: typeof import('pinia')['mapStores'] | ||||||
|   const mapWritableState: (typeof import('pinia'))['mapWritableState']; |   const mapWritableState: typeof import('pinia')['mapWritableState'] | ||||||
|   const markRaw: (typeof import('vue'))['markRaw']; |   const markRaw: typeof import('vue')['markRaw'] | ||||||
|   const nextTick: (typeof import('vue'))['nextTick']; |   const nextTick: typeof import('vue')['nextTick'] | ||||||
|   const onActivated: (typeof import('vue'))['onActivated']; |   const onActivated: typeof import('vue')['onActivated'] | ||||||
|   const onBeforeMount: (typeof import('vue'))['onBeforeMount']; |   const onBeforeMount: typeof import('vue')['onBeforeMount'] | ||||||
|   const onBeforeRouteLeave: (typeof import('vue-router'))['onBeforeRouteLeave']; |   const onBeforeRouteLeave: typeof import('vue-router')['onBeforeRouteLeave'] | ||||||
|   const onBeforeRouteUpdate: (typeof import('vue-router'))['onBeforeRouteUpdate']; |   const onBeforeRouteUpdate: typeof import('vue-router')['onBeforeRouteUpdate'] | ||||||
|   const onBeforeUnmount: (typeof import('vue'))['onBeforeUnmount']; |   const onBeforeUnmount: typeof import('vue')['onBeforeUnmount'] | ||||||
|   const onBeforeUpdate: (typeof import('vue'))['onBeforeUpdate']; |   const onBeforeUpdate: typeof import('vue')['onBeforeUpdate'] | ||||||
|   const onDeactivated: (typeof import('vue'))['onDeactivated']; |   const onDeactivated: typeof import('vue')['onDeactivated'] | ||||||
|   const onErrorCaptured: (typeof import('vue'))['onErrorCaptured']; |   const onErrorCaptured: typeof import('vue')['onErrorCaptured'] | ||||||
|   const onMounted: (typeof import('vue'))['onMounted']; |   const onMounted: typeof import('vue')['onMounted'] | ||||||
|   const onRenderTracked: (typeof import('vue'))['onRenderTracked']; |   const onRenderTracked: typeof import('vue')['onRenderTracked'] | ||||||
|   const onRenderTriggered: (typeof import('vue'))['onRenderTriggered']; |   const onRenderTriggered: typeof import('vue')['onRenderTriggered'] | ||||||
|   const onScopeDispose: (typeof import('vue'))['onScopeDispose']; |   const onScopeDispose: typeof import('vue')['onScopeDispose'] | ||||||
|   const onServerPrefetch: (typeof import('vue'))['onServerPrefetch']; |   const onServerPrefetch: typeof import('vue')['onServerPrefetch'] | ||||||
|   const onUnmounted: (typeof import('vue'))['onUnmounted']; |   const onUnmounted: typeof import('vue')['onUnmounted'] | ||||||
|   const onUpdated: (typeof import('vue'))['onUpdated']; |   const onUpdated: typeof import('vue')['onUpdated'] | ||||||
|   const onWatcherCleanup: (typeof import('vue'))['onWatcherCleanup']; |   const onWatcherCleanup: typeof import('vue')['onWatcherCleanup'] | ||||||
|   const provide: (typeof import('vue'))['provide']; |   const provide: typeof import('vue')['provide'] | ||||||
|   const reactive: (typeof import('vue'))['reactive']; |   const reactive: typeof import('vue')['reactive'] | ||||||
|   const readonly: (typeof import('vue'))['readonly']; |   const readonly: typeof import('vue')['readonly'] | ||||||
|   const ref: (typeof import('vue'))['ref']; |   const ref: typeof import('vue')['ref'] | ||||||
|   const resolveComponent: (typeof import('vue'))['resolveComponent']; |   const resolveComponent: typeof import('vue')['resolveComponent'] | ||||||
|   const setActivePinia: (typeof import('pinia'))['setActivePinia']; |   const setActivePinia: typeof import('pinia')['setActivePinia'] | ||||||
|   const setMapStoreSuffix: (typeof import('pinia'))['setMapStoreSuffix']; |   const setMapStoreSuffix: typeof import('pinia')['setMapStoreSuffix'] | ||||||
|   const shallowReactive: (typeof import('vue'))['shallowReactive']; |   const shallowReactive: typeof import('vue')['shallowReactive'] | ||||||
|   const shallowReadonly: (typeof import('vue'))['shallowReadonly']; |   const shallowReadonly: typeof import('vue')['shallowReadonly'] | ||||||
|   const shallowRef: (typeof import('vue'))['shallowRef']; |   const shallowRef: typeof import('vue')['shallowRef'] | ||||||
|   const storeToRefs: (typeof import('pinia'))['storeToRefs']; |   const storeToRefs: typeof import('pinia')['storeToRefs'] | ||||||
|   const toRaw: (typeof import('vue'))['toRaw']; |   const toRaw: typeof import('vue')['toRaw'] | ||||||
|   const toRef: (typeof import('vue'))['toRef']; |   const toRef: typeof import('vue')['toRef'] | ||||||
|   const toRefs: (typeof import('vue'))['toRefs']; |   const toRefs: typeof import('vue')['toRefs'] | ||||||
|   const toValue: (typeof import('vue'))['toValue']; |   const toValue: typeof import('vue')['toValue'] | ||||||
|   const triggerRef: (typeof import('vue'))['triggerRef']; |   const triggerRef: typeof import('vue')['triggerRef'] | ||||||
|   const unref: (typeof import('vue'))['unref']; |   const unref: typeof import('vue')['unref'] | ||||||
|   const useAttrs: (typeof import('vue'))['useAttrs']; |   const useAttrs: typeof import('vue')['useAttrs'] | ||||||
|   const useCssModule: (typeof import('vue'))['useCssModule']; |   const useCssModule: typeof import('vue')['useCssModule'] | ||||||
|   const useCssVars: (typeof import('vue'))['useCssVars']; |   const useCssVars: typeof import('vue')['useCssVars'] | ||||||
|   const useId: (typeof import('vue'))['useId']; |   const useId: typeof import('vue')['useId'] | ||||||
|   const useLink: (typeof import('vue-router'))['useLink']; |   const useLink: typeof import('vue-router')['useLink'] | ||||||
|   const useModel: (typeof import('vue'))['useModel']; |   const useModel: typeof import('vue')['useModel'] | ||||||
|   const useRoute: (typeof import('vue-router'))['useRoute']; |   const useRoute: typeof import('vue-router')['useRoute'] | ||||||
|   const useRouter: (typeof import('vue-router'))['useRouter']; |   const useRouter: typeof import('vue-router')['useRouter'] | ||||||
|   const useSlots: (typeof import('vue'))['useSlots']; |   const useSlots: typeof import('vue')['useSlots'] | ||||||
|   const useTemplateRef: (typeof import('vue'))['useTemplateRef']; |   const useTemplateRef: typeof import('vue')['useTemplateRef'] | ||||||
|   const watch: (typeof import('vue'))['watch']; |   const watch: typeof import('vue')['watch'] | ||||||
|   const watchEffect: (typeof import('vue'))['watchEffect']; |   const watchEffect: typeof import('vue')['watchEffect'] | ||||||
|   const watchPostEffect: (typeof import('vue'))['watchPostEffect']; |   const watchPostEffect: typeof import('vue')['watchPostEffect'] | ||||||
|   const watchSyncEffect: (typeof import('vue'))['watchSyncEffect']; |   const watchSyncEffect: typeof import('vue')['watchSyncEffect'] | ||||||
| } | } | ||||||
| // for type re-export
 | // for type re-export
 | ||||||
| declare global { | declare global { | ||||||
|   // @ts-ignore
 |   // @ts-ignore
 | ||||||
|   export type { |   export type { Component, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue' | ||||||
|     Component, |   import('vue') | ||||||
|     ComponentPublicInstance, |  | ||||||
|     ComputedRef, |  | ||||||
|     DirectiveBinding, |  | ||||||
|     ExtractDefaultPropTypes, |  | ||||||
|     ExtractPropTypes, |  | ||||||
|     ExtractPublicPropTypes, |  | ||||||
|     InjectionKey, |  | ||||||
|     PropType, |  | ||||||
|     Ref, |  | ||||||
|     MaybeRef, |  | ||||||
|     MaybeRefOrGetter, |  | ||||||
|     VNode, |  | ||||||
|     WritableComputedRef |  | ||||||
|   } from 'vue'; |  | ||||||
|   import('vue'); |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,2 +1 @@ | |||||||
| // @ts-ignore
 | export const currentEnv = import.meta.env; | ||||||
| export const currentEnv = __APP_ENV__; |  | ||||||
|  | |||||||
							
								
								
									
										4
									
								
								apps/designer/src/env.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								apps/designer/src/env.d.ts
									
									
									
									
										vendored
									
									
								
							| @ -3,11 +3,11 @@ | |||||||
| declare module '*.vue' { | declare module '*.vue' { | ||||||
|   import type { DefineComponent } from 'vue'; |   import type { DefineComponent } from 'vue'; | ||||||
| 
 | 
 | ||||||
|   const component: DefineComponent<{}, {}, any>; |   const component: DefineComponent<object, object, any>; | ||||||
|   export default component; |   export default component; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| declare namespace NodeJS { | declare namespace _NodeJS { | ||||||
|   interface ProcessEnv { |   interface ProcessEnv { | ||||||
|     [key: string]: any; |     [key: string]: any; | ||||||
|   } |   } | ||||||
|  | |||||||
| @ -2,6 +2,16 @@ import type { MaterialDescription } from '@vtj/core'; | |||||||
| 
 | 
 | ||||||
| import instance from './instance'; | import instance from './instance'; | ||||||
| 
 | 
 | ||||||
|  | type MaterialData = { | ||||||
|  |   created_at?: string; | ||||||
|  |   // 从原interface合并的字段
 | ||||||
|  |   id?: number; | ||||||
|  |   name?: string; | ||||||
|  |   project_id: number; | ||||||
|  |   updated_at?: string; | ||||||
|  |   value: Record<string, MaterialDescription>; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
| // 定义响应类型
 | // 定义响应类型
 | ||||||
| interface MaterialResponse { | interface MaterialResponse { | ||||||
|   code: number; |   code: number; | ||||||
| @ -51,16 +61,6 @@ export const getMaterials = async (id: number): Promise<MaterialResponse> => { | |||||||
|   return response.data; |   return response.data; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| type MaterialData = { |  | ||||||
|   created_at?: string; |  | ||||||
|   // 从原interface合并的字段
 |  | ||||||
|   id?: number; |  | ||||||
|   name?: string; |  | ||||||
|   project_id: number; |  | ||||||
|   updated_at?: string; |  | ||||||
|   value: Record<string, MaterialDescription>; |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| function transformMaterialData(data: MaterialData) { | function transformMaterialData(data: MaterialData) { | ||||||
|   return { |   return { | ||||||
|     ...data, |     ...data, | ||||||
|  | |||||||
| @ -1,3 +1,5 @@ | |||||||
|  | // @ts-nocheck 忽略所有类型检查
 | ||||||
|  | 
 | ||||||
| import type { | import type { | ||||||
|   BlockFile, |   BlockFile, | ||||||
|   BlockSchema, |   BlockSchema, | ||||||
| @ -6,8 +8,8 @@ import type { | |||||||
|   HistorySchema, |   HistorySchema, | ||||||
|   MaterialDescription, |   MaterialDescription, | ||||||
|   NodeFromPlugin, |   NodeFromPlugin, | ||||||
|   PageFile, |   ProjectSchema as OriginalProjectSchema, | ||||||
|   ProjectSchema |   PageFile | ||||||
| } from '@vtj/core'; | } from '@vtj/core'; | ||||||
| 
 | 
 | ||||||
| import { | import { | ||||||
| @ -47,17 +49,22 @@ const stringifyFields = new Set([ | |||||||
|   'pages' |   'pages' | ||||||
| ]); | ]); | ||||||
| 
 | 
 | ||||||
|  | // 扩展原始类型
 | ||||||
|  | type ProjectSchema = Omit<OriginalProjectSchema, 'projectId'> & { | ||||||
|  |   projectId: number | string; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
| let initProject: ProjectSchema; | let initProject: ProjectSchema; | ||||||
| 
 | 
 | ||||||
| export class LowCodeService extends BaseService { | export class LowCodeService extends BaseService { | ||||||
|   public api = (type: string, data: any): Promise<any> => { |   public api = (_type: string, _data: any): Promise<any> => { | ||||||
|     // console.log('api', type, data);
 |     // console.log('api', type, data);
 | ||||||
|     return Promise.resolve(true); |     return Promise.resolve(true); | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   public getExtension(): Promise<ExtensionConfig | undefined> { |   public getExtension(): Promise<ExtensionConfig | undefined> { | ||||||
|     const extension = storage.get('extension'); |     const extension = storage.get('extension'); | ||||||
|     console.log('ExtensionConfig', extension); |     // console.log('ExtensionConfig', extension);
 | ||||||
|     return Promise.resolve(extension as ExtensionConfig | undefined); |     return Promise.resolve(extension as ExtensionConfig | undefined); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
| @ -65,10 +72,9 @@ export class LowCodeService extends BaseService { | |||||||
|     return getLowCodeFile(id).then((lowCodeFile) => { |     return getLowCodeFile(id).then((lowCodeFile) => { | ||||||
|       return lowCodeFile.dsl |       return lowCodeFile.dsl | ||||||
|         ? Promise.resolve(lowCodeFile.dsl as BlockSchema) |         ? Promise.resolve(lowCodeFile.dsl as BlockSchema) | ||||||
|         : Promise.reject(null); |         : Promise.reject(new Error('文件不存在')); | ||||||
|     }); |     }); | ||||||
|   } |   } | ||||||
| 
 |  | ||||||
|   public async getHistory(fileId: string): Promise<HistorySchema> { |   public async getHistory(fileId: string): Promise<HistorySchema> { | ||||||
|     const histories = await getLowCodeHistories({ |     const histories = await getLowCodeHistories({ | ||||||
|       project_id: initProject.id, |       project_id: initProject.id, | ||||||
| @ -95,13 +101,12 @@ export class LowCodeService extends BaseService { | |||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   public getPluginMaterial( |   public getPluginMaterial( | ||||||
|     from: NodeFromPlugin |     _from: NodeFromPlugin | ||||||
|   ): Promise<MaterialDescription | null> { |   ): Promise<MaterialDescription | null> { | ||||||
|     return Promise.resolve(null); |     return Promise.resolve(null); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   public async init(project: ProjectSchema): Promise<ProjectSchema> { |   public async init(project: ProjectSchema): Promise<ProjectSchema> { | ||||||
|     console.log('init', project); |  | ||||||
|     initProject = project; |     initProject = project; | ||||||
|     const remoteProject = await getProject(initProject.id); |     const remoteProject = await getProject(initProject.id); | ||||||
|     const arrayFields = ['pages', 'blocks', 'apis', 'meta', 'dependencies']; |     const arrayFields = ['pages', 'blocks', 'apis', 'meta', 'dependencies']; | ||||||
| @ -110,9 +115,7 @@ export class LowCodeService extends BaseService { | |||||||
|         remoteProject[field] = []; |         remoteProject[field] = []; | ||||||
|       } |       } | ||||||
|     }); |     }); | ||||||
|     console.log('remoteProject', remoteProject); |  | ||||||
|     const model = new ProjectModel(remoteProject); |     const model = new ProjectModel(remoteProject); | ||||||
|     console.log('model', model || { id: initProject.id }); |  | ||||||
|     const dsl = model.toDsl(); |     const dsl = model.toDsl(); | ||||||
|     return dsl; |     return dsl; | ||||||
|   } |   } | ||||||
| @ -147,7 +150,6 @@ export class LowCodeService extends BaseService { | |||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   public async saveFile(file: BlockSchema): Promise<boolean> { |   public async saveFile(file: BlockSchema): Promise<boolean> { | ||||||
|     console.log('saveFile', file); |  | ||||||
|     if (file.id) { |     if (file.id) { | ||||||
|       const existFile = await getLowCodeFile(file.id); |       const existFile = await getLowCodeFile(file.id); | ||||||
|       return existFile.file_id |       return existFile.file_id | ||||||
| @ -178,7 +180,7 @@ export class LowCodeService extends BaseService { | |||||||
|     return false; |     return false; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   public async saveHistory(history: HistorySchema): Promise<boolean> { |   public async saveHistory(_history: HistorySchema): Promise<boolean> { | ||||||
|     return true; |     return true; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
| @ -201,25 +203,20 @@ export class LowCodeService extends BaseService { | |||||||
|     materials: Map<string, MaterialDescription> |     materials: Map<string, MaterialDescription> | ||||||
|   ): Promise<boolean> { |   ): Promise<boolean> { | ||||||
|     const materialData = mapToObject(materials); |     const materialData = mapToObject(materials); | ||||||
|     // storage.save(`materials_${project.id}`, materialData);
 |  | ||||||
|     // console.log('saveMaterials', materialData);
 |  | ||||||
|     // @ts-ignore
 |  | ||||||
|     const existMaterials = await getLowCodeMaterials(project?.id); |     const existMaterials = await getLowCodeMaterials(project?.id); | ||||||
|     if (existMaterials) { |  | ||||||
|       // 更新物料
 |  | ||||||
|       await updateLowCodeMaterials({ |  | ||||||
|         project_id: project?.id, |  | ||||||
|         value: materialData |  | ||||||
|       }); |  | ||||||
|     } else { |  | ||||||
|       // 创建物料
 |  | ||||||
|       await postLowCodeMaterials({ |  | ||||||
|         project_id: project?.id, |  | ||||||
|         value: materialData |  | ||||||
|       }); |  | ||||||
|     } |  | ||||||
| 
 | 
 | ||||||
|     // @ts-ignore
 |     // 根据是否存在物料决定更新或创建
 | ||||||
|  |     existMaterials | ||||||
|  |       ? await updateLowCodeMaterials({ | ||||||
|  |           project_id: project?.id, | ||||||
|  |           value: materialData | ||||||
|  |         }) | ||||||
|  |       : await postLowCodeMaterials({ | ||||||
|  |           project_id: project?.id, | ||||||
|  |           value: materialData | ||||||
|  |         }); | ||||||
|  | 
 | ||||||
|  |     // @ts-ignore - 暂时禁用此行代码,保留以备后续可能需要删除物料的操作
 | ||||||
|     // await deleteLowCodeMaterials(project.id);
 |     // await deleteLowCodeMaterials(project.id);
 | ||||||
|     return true; |     return true; | ||||||
|   } |   } | ||||||
| @ -238,8 +235,7 @@ export class LowCodeService extends BaseService { | |||||||
|     return true; |     return true; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   protected uploader = (file: File, projectId: string): Promise<any> => { |   protected uploader = (_file: File, _projectId: string): Promise<any> => { | ||||||
|     // console.log('uploader', file, projectId);
 |  | ||||||
|     return Promise.resolve(true); |     return Promise.resolve(true); | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
|  | |||||||
| @ -31,7 +31,7 @@ onMounted(async () => { | |||||||
|       req.headers.set('Authorization', `Bearer ${model.accessToken}`); |       req.headers.set('Authorization', `Bearer ${model.accessToken}`); | ||||||
|       return req; |       return req; | ||||||
|     }); |     }); | ||||||
|     const engine = new Engine({ |     const _engine = new Engine({ | ||||||
|       container, |       container, | ||||||
|       service, |       service, | ||||||
|       project: { |       project: { | ||||||
|  | |||||||
| @ -1,27 +1,19 @@ | |||||||
| { | { | ||||||
|   "extends": "./node_modules/@vtj/cli/config/tsconfig.web.json", |   "extends": "./node_modules/@vtj/cli/config/tsconfig.web.json", | ||||||
|   "compilerOptions": { |   "compilerOptions": { | ||||||
|     "noUnusedLocals": false, |  | ||||||
|     "noUnusedParameters": false, |  | ||||||
|     "baseUrl": "./", |     "baseUrl": "./", | ||||||
|     "paths": { |     "paths": { | ||||||
|       "@/*": [ |       "@/*": ["src/*"], | ||||||
|         "src/*" |       "$vtj/*": [".vtj/*"] | ||||||
|       ], |     }, | ||||||
|       "$vtj/*": [ |     "noUnusedLocals": false, | ||||||
|         ".vtj/*" |     "noUnusedParameters": false | ||||||
|       ] |  | ||||||
|     } |  | ||||||
|   }, |   }, | ||||||
|   "include": [ |  | ||||||
|     "src" |  | ||||||
|   ], |  | ||||||
|   "exclude": [ |  | ||||||
|     ".vtj", |  | ||||||
|   ], |  | ||||||
|   "references": [ |   "references": [ | ||||||
|     { |     { | ||||||
|       "path": "./tsconfig.node.json" |       "path": "./tsconfig.node.json" | ||||||
|     } |     } | ||||||
|   ] |   ], | ||||||
| } |   "include": ["src"], | ||||||
|  |   "exclude": [".vtj"] | ||||||
|  | } | ||||||
|  | |||||||
| @ -1,13 +1,10 @@ | |||||||
| { | { | ||||||
|   "compilerOptions": { |   "compilerOptions": { | ||||||
|     "composite": true, |     "composite": true, | ||||||
|     "skipLibCheck": true, |  | ||||||
|     "module": "ESNext", |     "module": "ESNext", | ||||||
|     "moduleResolution": "bundler", |     "moduleResolution": "bundler", | ||||||
|     "allowSyntheticDefaultImports": true |     "allowSyntheticDefaultImports": true, | ||||||
|  |     "skipLibCheck": true | ||||||
|   }, |   }, | ||||||
|   "include": [ |   "include": ["vite.config.ts", "proxy.config.ts"] | ||||||
|     "vite.config.ts", | } | ||||||
|     "proxy.config.ts" |  | ||||||
|   ] |  | ||||||
| } |  | ||||||
|  | |||||||
| @ -28,7 +28,6 @@ const config = createViteConfig({ | |||||||
|   ] |   ] | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| // @ts-ignore
 |  | ||||||
| export default defineConfig(({ mode }) => { | export default defineConfig(({ mode }) => { | ||||||
|   console.log('mode', mode); |   console.log('mode', mode); | ||||||
|   // 加载环境变量(支持 .env.development/.env.production)
 |   // 加载环境变量(支持 .env.development/.env.production)
 | ||||||
| @ -37,7 +36,7 @@ export default defineConfig(({ mode }) => { | |||||||
|     ...config, |     ...config, | ||||||
|     server: { |     server: { | ||||||
|       https: true, |       https: true, | ||||||
|       port: env.VITE_PORT, |       port: Number(env.VITE_PORT), | ||||||
|       host: true |       host: true | ||||||
|     }, |     }, | ||||||
|     define: { |     define: { | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| import instance from './instance'; | import instance from './instance'; | ||||||
| 
 | 
 | ||||||
| export const login = async (data: { username: string; password: string }) => { | export const login = async (data: { password: string; username: string }) => { | ||||||
|   const response = await instance.post('/login', data); |   const response = await instance.post('/login', data); | ||||||
|   return response.data; |   return response.data; | ||||||
| }; | }; | ||||||
|  | |||||||
| @ -7,13 +7,16 @@ import mkcert from 'vite-plugin-mkcert'; | |||||||
| // @ts-ignore
 | // @ts-ignore
 | ||||||
| export default defineConfig(({ mode }) => { | export default defineConfig(({ mode }) => { | ||||||
|   console.log('mode', mode); |   console.log('mode', mode); | ||||||
|   const env = loadEnv(mode, process.cwd(), ['VITE_', 'Y_CODE_']); |   const env = loadEnv(mode, process.cwd(), ['VITE_']); | ||||||
|  |   const isDev = env.VITE_NODE_ENV === 'development'; | ||||||
| 
 | 
 | ||||||
|   return { |   return { | ||||||
|     server: { |     server: isDev | ||||||
|       port: Number(env.VITE_PORT), |       ? { | ||||||
|       cors: true, |           port: Number(env.VITE_PORT), | ||||||
|     }, |           cors: true, | ||||||
|  |         } | ||||||
|  |       : undefined, | ||||||
|     // @ts-ignore coding
 |     // @ts-ignore coding
 | ||||||
|     vitePlugins: [vue(), mkcert({ source: 'coding' })], |     vitePlugins: [vue(), mkcert({ source: 'coding' })], | ||||||
|     compilation: { |     compilation: { | ||||||
|  | |||||||
| @ -3,11 +3,11 @@ | |||||||
|   "version": "1.0.0", |   "version": "1.0.0", | ||||||
|   "type": "module", |   "type": "module", | ||||||
|   "scripts": { |   "scripts": { | ||||||
|     "dev": "farm dev --mode development", |     "dev": "vite dev --mode development", | ||||||
|     "start": "farm start --mode production", |     "start": "vite start --mode production", | ||||||
|     "build": "farm build --mode production", |     "build": "vite build --mode production", | ||||||
|     "build:staging": "farm build --mode staging", |     "build:staging": "vite build --mode staging", | ||||||
|     "preview": "farm preview", |     "preview": "vite preview", | ||||||
|     "clean:lock": "rimraf pnpm-lock.yaml && rimraf package.lock.json", |     "clean:lock": "rimraf pnpm-lock.yaml && rimraf package.lock.json", | ||||||
|     "clean:lib": "rimraf node_modules", |     "clean:lib": "rimraf node_modules", | ||||||
|     "test": "echo 'test", |     "test": "echo 'test", | ||||||
| @ -17,14 +17,14 @@ | |||||||
|     "@iframe-resizer/child": "^5.3.3", |     "@iframe-resizer/child": "^5.3.3", | ||||||
|     "@sy/web-vitals": "workspace:*", |     "@sy/web-vitals": "workspace:*", | ||||||
|     "@tanstack/vue-query": "^5.66.9", |     "@tanstack/vue-query": "^5.66.9", | ||||||
|     "@vtj/core": "^0.10.10", |     "@vtj/core": "^0.10.12", | ||||||
|     "@vtj/icons": "0.10.10", |     "@vtj/icons": "0.10.12", | ||||||
|     "@vtj/materials": "^0.10.10", |     "@vtj/materials": "^0.10.12", | ||||||
|     "@vtj/pro": "^0.10.10", |     "@vtj/pro": "^0.10.12", | ||||||
|     "@vtj/renderer": "^0.10.10", |     "@vtj/renderer": "^0.10.12", | ||||||
|     "@vtj/ui": "^0.10.10", |     "@vtj/ui": "^0.10.12", | ||||||
|     "@vtj/utils": "^0.10.10", |     "@vtj/utils": "^0.10.12", | ||||||
|     "@vtj/web": "^0.10.10", |     "@vtj/web": "^0.10.12", | ||||||
|     "axios": "catalog:", |     "axios": "catalog:", | ||||||
|     "core-js": "^3.40.0", |     "core-js": "^3.40.0", | ||||||
|     "element-plus": "catalog:", |     "element-plus": "catalog:", | ||||||
| @ -35,9 +35,10 @@ | |||||||
|   }, |   }, | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|     "@farmfe/cli": "^1.0.4", |     "@farmfe/cli": "^1.0.4", | ||||||
|     "@farmfe/core": "^1.6.6", |     "@farmfe/core": "^1.6.7", | ||||||
|     "@vitejs/plugin-vue": "^5.2.1", |     "@vitejs/plugin-vue": "^5.2.1", | ||||||
|     "@vtj/cli": "^0.10.2", |     "@vtj/cli": "^0.10.2", | ||||||
|  |     "vite": "catalog:", | ||||||
|     "vite-plugin-mkcert": "catalog:" |     "vite-plugin-mkcert": "catalog:" | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,12 +1,14 @@ | |||||||
| <script setup lang="ts"> | <script setup lang="ts"> | ||||||
| import { computed, watch, ref, getCurrentInstance } from 'vue'; | import { getCurrentInstance, ref, watch } from 'vue'; | ||||||
|  | 
 | ||||||
|  | import { useQuery } from '@tanstack/vue-query'; | ||||||
|  | import { jsonp, request } from '@vtj/utils'; | ||||||
|  | import { createProvider } from '@vtj/web'; | ||||||
| import { ElLoading } from 'element-plus'; | import { ElLoading } from 'element-plus'; | ||||||
| import Postmate from 'postmate'; | import Postmate from 'postmate'; | ||||||
| import { createProvider } from '@vtj/web'; | 
 | ||||||
| import { useQuery } from '@tanstack/vue-query'; |  | ||||||
| import { LowCodeService } from './service'; |  | ||||||
| import { getFile } from './io'; | import { getFile } from './io'; | ||||||
| import { request, jsonp } from '@vtj/utils'; | import { LowCodeService } from './service'; | ||||||
| // import * as VtjUI from '@vtj/ui' | // import * as VtjUI from '@vtj/ui' | ||||||
| 
 | 
 | ||||||
| // 响应式状态 | // 响应式状态 | ||||||
|  | |||||||
| @ -1,21 +1,21 @@ | |||||||
| { | { | ||||||
|   "extends": "./node_modules/@vtj/cli/config/tsconfig.web.json", |   "extends": "./node_modules/@vtj/cli/config/tsconfig.web.json", | ||||||
|   "compilerOptions": { |   "compilerOptions": { | ||||||
|     "module": "nodenext", |  | ||||||
|     "lib": ["ESNext", "DOM"], |     "lib": ["ESNext", "DOM"], | ||||||
|     "moduleResolution": "nodenext", |  | ||||||
|     "noUnusedLocals": false, |  | ||||||
|     "noUnusedParameters": false, |  | ||||||
|     "baseUrl": "./", |     "baseUrl": "./", | ||||||
|  |     "module": "nodenext", | ||||||
|  |     "moduleResolution": "nodenext", | ||||||
|     "paths": { |     "paths": { | ||||||
|       "@/*": ["src/*"] |       "@/*": ["src/*"] | ||||||
|     } |     }, | ||||||
|  |     "noUnusedLocals": false, | ||||||
|  |     "noUnusedParameters": false | ||||||
|   }, |   }, | ||||||
|   "include": ["src"], |  | ||||||
|   "exclude": [".vtj"], |  | ||||||
|   "references": [ |   "references": [ | ||||||
|     { |     { | ||||||
|       "path": "./tsconfig.node.json" |       "path": "./tsconfig.node.json" | ||||||
|     } |     } | ||||||
|   ] |   ], | ||||||
|  |   "include": ["src"], | ||||||
|  |   "exclude": [".vtj"] | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,10 +1,10 @@ | |||||||
| { | { | ||||||
|   "compilerOptions": { |   "compilerOptions": { | ||||||
|     "composite": true, |     "composite": true, | ||||||
|     "skipLibCheck": true, |  | ||||||
|     "module": "ESNext", |     "module": "ESNext", | ||||||
|     "moduleResolution": "bundler", |     "moduleResolution": "bundler", | ||||||
|     "allowSyntheticDefaultImports": true |     "allowSyntheticDefaultImports": true, | ||||||
|  |     "skipLibCheck": true | ||||||
|   }, |   }, | ||||||
|   "include": ["vite.config.ts"] |   "include": ["vite.config.ts"] | ||||||
| } | } | ||||||
|  | |||||||
							
								
								
									
										55
									
								
								apps/renderer/vite.config.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								apps/renderer/vite.config.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,55 @@ | |||||||
|  | import path from 'node:path'; | ||||||
|  | 
 | ||||||
|  | import vue from '@vitejs/plugin-vue'; | ||||||
|  | import { defineConfig, loadEnv } from 'vite'; | ||||||
|  | import mkcert from 'vite-plugin-mkcert'; | ||||||
|  | 
 | ||||||
|  | export default defineConfig(({ mode }) => { | ||||||
|  |   console.log('mode', mode); | ||||||
|  |   const env = loadEnv(mode, process.cwd(), ['VITE_']); | ||||||
|  |   const isDev = env.VITE_NODE_ENV === 'development'; | ||||||
|  | 
 | ||||||
|  |   return { | ||||||
|  |     // 服务器配置
 | ||||||
|  |     server: isDev | ||||||
|  |       ? { | ||||||
|  |           port: Number(env.VITE_PORT), | ||||||
|  |           cors: true, | ||||||
|  |           https: true, // mkcert 需要 https
 | ||||||
|  |         } | ||||||
|  |       : undefined, | ||||||
|  | 
 | ||||||
|  |     // 插件配置
 | ||||||
|  |     plugins: [vue(), mkcert({ source: 'coding' })], | ||||||
|  | 
 | ||||||
|  |     // 解析配置
 | ||||||
|  |     resolve: { | ||||||
|  |       alias: { | ||||||
|  |         '@': path.resolve(process.cwd(), 'src'), | ||||||
|  |         $vtj: path.resolve(process.cwd(), '.vtj'), | ||||||
|  |       }, | ||||||
|  |     }, | ||||||
|  | 
 | ||||||
|  |     // 定义全局变量
 | ||||||
|  |     define: { | ||||||
|  |       'process.env': JSON.stringify(env), | ||||||
|  |     }, | ||||||
|  | 
 | ||||||
|  |     // 构建配置
 | ||||||
|  |     build: { | ||||||
|  |       // outDir: path.resolve(process.cwd(), "../../dist/renderer"),
 | ||||||
|  |       // emptyOutDir: true,
 | ||||||
|  |       target: 'es2022', | ||||||
|  |     }, | ||||||
|  | 
 | ||||||
|  |     // 优化依赖
 | ||||||
|  |     optimizeDeps: { | ||||||
|  |       include: [], | ||||||
|  |     }, | ||||||
|  | 
 | ||||||
|  |     // CSS 配置
 | ||||||
|  |     css: { | ||||||
|  |       // 预处理器配置
 | ||||||
|  |     }, | ||||||
|  |   }; | ||||||
|  | }); | ||||||
| @ -3,7 +3,7 @@ require('@rushstack/eslint-patch/modern-module-resolution'); | |||||||
| 
 | 
 | ||||||
| module.exports = { | module.exports = { | ||||||
|   root: true, |   root: true, | ||||||
|   'extends': [ |   extends: [ | ||||||
|     'plugin:vue/vue3-essential', |     'plugin:vue/vue3-essential', | ||||||
|     'eslint:recommended', |     'eslint:recommended', | ||||||
|     '@vue/eslint-config-typescript', |     '@vue/eslint-config-typescript', | ||||||
| @ -15,7 +15,9 @@ module.exports = { | |||||||
|     semi: 0, |     semi: 0, | ||||||
|     'vue/multi-word-component-names': 0, |     'vue/multi-word-component-names': 0, | ||||||
|     indent: [ |     indent: [ | ||||||
|       2, 2, { |       2, | ||||||
|  |       2, | ||||||
|  |       { | ||||||
|         SwitchCase: 1, |         SwitchCase: 1, | ||||||
|       }, |       }, | ||||||
|     ], |     ], | ||||||
|  | |||||||
							
								
								
									
										68
									
								
								apps/y-code-v1/components.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										68
									
								
								apps/y-code-v1/components.d.ts
									
									
									
									
										vendored
									
									
								
							| @ -7,39 +7,39 @@ export {} | |||||||
| 
 | 
 | ||||||
| declare module 'vue' { | declare module 'vue' { | ||||||
|   export interface GlobalComponents { |   export interface GlobalComponents { | ||||||
|     ABreadcrumb: (typeof import('ant-design-vue/es'))['Breadcrumb']; |     ABreadcrumb: typeof import('ant-design-vue/es')['Breadcrumb'] | ||||||
|     ABreadcrumbItem: (typeof import('ant-design-vue/es'))['BreadcrumbItem']; |     ABreadcrumbItem: typeof import('ant-design-vue/es')['BreadcrumbItem'] | ||||||
|     AButton: (typeof import('ant-design-vue/es'))['Button']; |     AButton: typeof import('ant-design-vue/es')['Button'] | ||||||
|     ACheckbox: (typeof import('ant-design-vue/es'))['Checkbox']; |     ACheckbox: typeof import('ant-design-vue/es')['Checkbox'] | ||||||
|     ACheckboxGroup: (typeof import('ant-design-vue/es'))['CheckboxGroup']; |     ACheckboxGroup: typeof import('ant-design-vue/es')['CheckboxGroup'] | ||||||
|     ACol: (typeof import('ant-design-vue/es'))['Col']; |     ACol: typeof import('ant-design-vue/es')['Col'] | ||||||
|     AConfigProvider: (typeof import('ant-design-vue/es'))['ConfigProvider']; |     AConfigProvider: typeof import('ant-design-vue/es')['ConfigProvider'] | ||||||
|     ADropdown: (typeof import('ant-design-vue/es'))['Dropdown']; |     ADropdown: typeof import('ant-design-vue/es')['Dropdown'] | ||||||
|     AFloatButton: (typeof import('ant-design-vue/es'))['FloatButton']; |     AFloatButton: typeof import('ant-design-vue/es')['FloatButton'] | ||||||
|     AForm: (typeof import('ant-design-vue/es'))['Form']; |     AForm: typeof import('ant-design-vue/es')['Form'] | ||||||
|     AFormItem: (typeof import('ant-design-vue/es'))['FormItem']; |     AFormItem: typeof import('ant-design-vue/es')['FormItem'] | ||||||
|     AImage: (typeof import('ant-design-vue/es'))['Image']; |     AImage: typeof import('ant-design-vue/es')['Image'] | ||||||
|     AInput: (typeof import('ant-design-vue/es'))['Input']; |     AInput: typeof import('ant-design-vue/es')['Input'] | ||||||
|     AInputNumber: (typeof import('ant-design-vue/es'))['InputNumber']; |     AInputNumber: typeof import('ant-design-vue/es')['InputNumber'] | ||||||
|     AInputPassword: (typeof import('ant-design-vue/es'))['InputPassword']; |     AInputPassword: typeof import('ant-design-vue/es')['InputPassword'] | ||||||
|     AMenu: (typeof import('ant-design-vue/es'))['Menu']; |     AMenu: typeof import('ant-design-vue/es')['Menu'] | ||||||
|     AMenuItem: (typeof import('ant-design-vue/es'))['MenuItem']; |     AMenuItem: typeof import('ant-design-vue/es')['MenuItem'] | ||||||
|     AModal: (typeof import('ant-design-vue/es'))['Modal']; |     AModal: typeof import('ant-design-vue/es')['Modal'] | ||||||
|     APagination: (typeof import('ant-design-vue/es'))['Pagination']; |     APagination: typeof import('ant-design-vue/es')['Pagination'] | ||||||
|     APopconfirm: (typeof import('ant-design-vue/es'))['Popconfirm']; |     APopconfirm: typeof import('ant-design-vue/es')['Popconfirm'] | ||||||
|     ARadio: (typeof import('ant-design-vue/es'))['Radio']; |     ARadio: typeof import('ant-design-vue/es')['Radio'] | ||||||
|     ARadioButton: (typeof import('ant-design-vue/es'))['RadioButton']; |     ARadioButton: typeof import('ant-design-vue/es')['RadioButton'] | ||||||
|     ARadioGroup: (typeof import('ant-design-vue/es'))['RadioGroup']; |     ARadioGroup: typeof import('ant-design-vue/es')['RadioGroup'] | ||||||
|     ARangePicker: (typeof import('ant-design-vue/es'))['RangePicker']; |     ARangePicker: typeof import('ant-design-vue/es')['RangePicker'] | ||||||
|     ARow: (typeof import('ant-design-vue/es'))['Row']; |     ARow: typeof import('ant-design-vue/es')['Row'] | ||||||
|     ASelect: (typeof import('ant-design-vue/es'))['Select']; |     ASelect: typeof import('ant-design-vue/es')['Select'] | ||||||
|     ASpace: (typeof import('ant-design-vue/es'))['Space']; |     ASpace: typeof import('ant-design-vue/es')['Space'] | ||||||
|     ASpin: (typeof import('ant-design-vue/es'))['Spin']; |     ASpin: typeof import('ant-design-vue/es')['Spin'] | ||||||
|     ASwitch: (typeof import('ant-design-vue/es'))['Switch']; |     ASwitch: typeof import('ant-design-vue/es')['Switch'] | ||||||
|     ATable: (typeof import('ant-design-vue/es'))['Table']; |     ATable: typeof import('ant-design-vue/es')['Table'] | ||||||
|     RouterLink: (typeof import('vue-router'))['RouterLink']; |     RouterLink: typeof import('vue-router')['RouterLink'] | ||||||
|     RouterView: (typeof import('vue-router'))['RouterView']; |     RouterView: typeof import('vue-router')['RouterView'] | ||||||
|     YChart: (typeof import('./src/components/common/y-chart.vue'))['default']; |     YChart: typeof import('./src/components/common/y-chart.vue')['default'] | ||||||
|     YTable: (typeof import('./src/components/common/y-table.vue'))['default']; |     YTable: typeof import('./src/components/common/y-table.vue')['default'] | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
| @ -9,10 +9,9 @@ import Components from 'unplugin-vue-components/vite'; | |||||||
| import mkcert from 'vite-plugin-mkcert'; | import mkcert from 'vite-plugin-mkcert'; | ||||||
| import qiankun from 'vite-plugin-qiankun'; | import qiankun from 'vite-plugin-qiankun'; | ||||||
| 
 | 
 | ||||||
| // @ts-ignore
 |  | ||||||
| export default defineConfig(({ mode }) => { | export default defineConfig(({ mode }) => { | ||||||
|   console.log('mode', mode); |  | ||||||
|   const env = loadEnv(mode, process.cwd(), ['VITE_']); |   const env = loadEnv(mode, process.cwd(), ['VITE_']); | ||||||
|  |   const isDev = env.VITE_NODE_ENV === 'development'; | ||||||
|   return { |   return { | ||||||
|     plugins: [less()], |     plugins: [less()], | ||||||
|     vitePlugins: [ |     vitePlugins: [ | ||||||
| @ -20,7 +19,7 @@ export default defineConfig(({ mode }) => { | |||||||
|       vueJsx(), |       vueJsx(), | ||||||
|       mkcert(), |       mkcert(), | ||||||
|       qiankun('y-code-app', { |       qiankun('y-code-app', { | ||||||
|         useDevMode: env.VITE_NODE_ENV === 'development', |         useDevMode: isDev, | ||||||
|       }) as any, |       }) as any, | ||||||
|       Components({ |       Components({ | ||||||
|         resolvers: [ |         resolvers: [ | ||||||
| @ -30,10 +29,12 @@ export default defineConfig(({ mode }) => { | |||||||
|         ], |         ], | ||||||
|       }), |       }), | ||||||
|     ], |     ], | ||||||
|     server: { |     server: isDev | ||||||
|       cors: true, |       ? { | ||||||
|       port: Number(env.VITE_PORT), |           cors: true, | ||||||
|     }, |           port: Number(env.VITE_PORT), | ||||||
|  |         } | ||||||
|  |       : undefined, | ||||||
| 
 | 
 | ||||||
|     compilation: { |     compilation: { | ||||||
|       resolve: { |       resolve: { | ||||||
|  | |||||||
| @ -31,7 +31,7 @@ | |||||||
|   }, |   }, | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|     "@farmfe/cli": "^1.0.4", |     "@farmfe/cli": "^1.0.4", | ||||||
|     "@farmfe/core": "^1.6.6", |     "@farmfe/core": "^1.6.7", | ||||||
|     "@rushstack/eslint-patch": "^1.10.5", |     "@rushstack/eslint-patch": "^1.10.5", | ||||||
|     "@tsconfig/node20": "^20.1.4", |     "@tsconfig/node20": "^20.1.4", | ||||||
|     "@types/node": "^20.17.17", |     "@types/node": "^20.17.17", | ||||||
|  | |||||||
| @ -1,50 +1,3 @@ | |||||||
| <template> |  | ||||||
|   <a-modal @ok="handleOk"> |  | ||||||
|     <a-form |  | ||||||
|       :model="formData" |  | ||||||
|       ref="formRef" |  | ||||||
|       :rules="formRules" |  | ||||||
|       :label-col="{ span: 4 }" |  | ||||||
|       :wrapper-col="{ span: 20 }" |  | ||||||
|     > |  | ||||||
|       <a-form-item label="字段标题" name="field_title"> |  | ||||||
|         <a-input |  | ||||||
|           placeholder="请输入字段标题" |  | ||||||
|           v-model:value="formData.field_title" |  | ||||||
|         /> |  | ||||||
|       </a-form-item> |  | ||||||
|       <a-form-item label="字段名称" name="field_name"> |  | ||||||
|         <a-input placeholder="请输入字段名称" v-model="formData.field_name" /> |  | ||||||
|       </a-form-item> |  | ||||||
|       <a-form-item label="搜索状态" name="is_search"> |  | ||||||
|         <a-switch |  | ||||||
|           v-model:checked="formData.is_search" |  | ||||||
|           :checkedValue="1" |  | ||||||
|           :unCheckedValue="0" |  | ||||||
|         /> |  | ||||||
|       </a-form-item> |  | ||||||
|       <a-form-item label="字段类型" name="field_type_id"> |  | ||||||
|         <a-select |  | ||||||
|           placeholder="请选择字段类型" |  | ||||||
|           v-model:value="formData.field_type_id" |  | ||||||
|         /> |  | ||||||
|       </a-form-item> |  | ||||||
|       <a-form-item label="所属表名称" name="belong_to_table"> |  | ||||||
|         <a-input |  | ||||||
|           placeholder="请输入所属表名称" |  | ||||||
|           v-model="formData.belong_to_table" |  | ||||||
|         /> |  | ||||||
|       </a-form-item> |  | ||||||
|       <a-form-item label="sql数据源" name="original_sql"> |  | ||||||
|         <a-input |  | ||||||
|           placeholder="请输入sql数据源" |  | ||||||
|           v-model="formData.original_sql" |  | ||||||
|         /> |  | ||||||
|       </a-form-item> |  | ||||||
|     </a-form> |  | ||||||
|   </a-modal> |  | ||||||
| </template> |  | ||||||
| 
 |  | ||||||
| <script setup> | <script setup> | ||||||
| import { ref, watch } from 'vue'; | import { ref, watch } from 'vue'; | ||||||
| 
 | 
 | ||||||
| @ -108,3 +61,50 @@ const handleOk = () => { | |||||||
|   }); |   }); | ||||||
| }; | }; | ||||||
| </script> | </script> | ||||||
|  | 
 | ||||||
|  | <template> | ||||||
|  |   <a-modal @ok="handleOk"> | ||||||
|  |     <a-form | ||||||
|  |       :model="formData" | ||||||
|  |       ref="formRef" | ||||||
|  |       :rules="formRules" | ||||||
|  |       :label-col="{ span: 4 }" | ||||||
|  |       :wrapper-col="{ span: 20 }" | ||||||
|  |     > | ||||||
|  |       <a-form-item label="字段标题" name="field_title"> | ||||||
|  |         <a-input | ||||||
|  |           placeholder="请输入字段标题" | ||||||
|  |           v-model:value="formData.field_title" | ||||||
|  |         /> | ||||||
|  |       </a-form-item> | ||||||
|  |       <a-form-item label="字段名称" name="field_name"> | ||||||
|  |         <a-input placeholder="请输入字段名称" v-model="formData.field_name" /> | ||||||
|  |       </a-form-item> | ||||||
|  |       <a-form-item label="搜索状态" name="is_search"> | ||||||
|  |         <a-switch | ||||||
|  |           v-model:checked="formData.is_search" | ||||||
|  |           :checked-value="1" | ||||||
|  |           :un-checked-value="0" | ||||||
|  |         /> | ||||||
|  |       </a-form-item> | ||||||
|  |       <a-form-item label="字段类型" name="field_type_id"> | ||||||
|  |         <a-select | ||||||
|  |           placeholder="请选择字段类型" | ||||||
|  |           v-model:value="formData.field_type_id" | ||||||
|  |         /> | ||||||
|  |       </a-form-item> | ||||||
|  |       <a-form-item label="所属表名称" name="belong_to_table"> | ||||||
|  |         <a-input | ||||||
|  |           placeholder="请输入所属表名称" | ||||||
|  |           v-model="formData.belong_to_table" | ||||||
|  |         /> | ||||||
|  |       </a-form-item> | ||||||
|  |       <a-form-item label="sql数据源" name="original_sql"> | ||||||
|  |         <a-input | ||||||
|  |           placeholder="请输入sql数据源" | ||||||
|  |           v-model="formData.original_sql" | ||||||
|  |         /> | ||||||
|  |       </a-form-item> | ||||||
|  |     </a-form> | ||||||
|  |   </a-modal> | ||||||
|  | </template> | ||||||
|  | |||||||
| @ -1,84 +1,16 @@ | |||||||
| <template> |  | ||||||
|   <div class="normal-container view-cfg-box"> |  | ||||||
|     <div class="header-box"> |  | ||||||
|       <a-space> |  | ||||||
|         <a-input |  | ||||||
|           v-model:value="fieldName" |  | ||||||
|           placeholder="请输入字段名称" |  | ||||||
|           allow-clear |  | ||||||
|           style="width: 200px" |  | ||||||
|           @change="search" |  | ||||||
|         /> |  | ||||||
|         <a-select |  | ||||||
|           placeholder="请选择数据表id" |  | ||||||
|           v-model:value="modularId" |  | ||||||
|           allow-clear |  | ||||||
|           style="width: 160px" |  | ||||||
|           @change="search" |  | ||||||
|         ></a-select> |  | ||||||
|         <a-button type="primary" @click="openCreateModal">新建</a-button> |  | ||||||
|       </a-space> |  | ||||||
|     </div> |  | ||||||
|     <div class="content-box"> |  | ||||||
|       <a-table |  | ||||||
|         :columns="viewCfgCols" |  | ||||||
|         :data-source="dataList" |  | ||||||
|         :pagination="false" |  | ||||||
|         size="small" |  | ||||||
|         bordered |  | ||||||
|       > |  | ||||||
|         <template #bodyCell="{ column, record }"> |  | ||||||
|           <template v-if="column.dataIndex === 'action'"> |  | ||||||
|             <a-space> |  | ||||||
|               <a-button |  | ||||||
|                 type="link" |  | ||||||
|                 size="small" |  | ||||||
|                 @click="toGetDetail(record.field_id)" |  | ||||||
|                 >编辑</a-button |  | ||||||
|               > |  | ||||||
|               <a-popconfirm |  | ||||||
|                 title="确定删除?" |  | ||||||
|                 @confirm="toDelete(record.field_id)" |  | ||||||
|               > |  | ||||||
|                 <a-button type="link" size="small">删除</a-button> |  | ||||||
|               </a-popconfirm> |  | ||||||
|             </a-space> |  | ||||||
|           </template> |  | ||||||
|         </template> |  | ||||||
|       </a-table> |  | ||||||
|       <a-pagination |  | ||||||
|         v-model:current="pageState.page" |  | ||||||
|         :total="pageState.total" |  | ||||||
|         :page-size="pageState.perPage" |  | ||||||
|         :hide-on-single-page="false" |  | ||||||
|         size="small" |  | ||||||
|         class="pagination-box" |  | ||||||
|         @change="toGetFieldList" |  | ||||||
|       /> |  | ||||||
|     </div> |  | ||||||
|     <CreateModal |  | ||||||
|       :width="700" |  | ||||||
|       :open="modalState.visible" |  | ||||||
|       :title="modalState.title" |  | ||||||
|       :type="modalState.type" |  | ||||||
|       :data="modalState.data" |  | ||||||
|       @cancel="modalState.visible = false" |  | ||||||
|       @ok="toSave" |  | ||||||
|     /> |  | ||||||
|   </div> |  | ||||||
| </template> |  | ||||||
| 
 |  | ||||||
| <script setup> | <script setup> | ||||||
| import { onMounted, ref, reactive } from 'vue'; | import { onMounted, reactive, ref } from 'vue'; | ||||||
|  | 
 | ||||||
|  | import { message } from 'ant-design-vue'; | ||||||
|  | 
 | ||||||
|  | import CreateModal from './components/create-modal.vue'; | ||||||
| import { viewCfgCols } from './config'; | import { viewCfgCols } from './config'; | ||||||
| import { | import { | ||||||
|   getFieldList, |  | ||||||
|   deleteField, |   deleteField, | ||||||
|   saveField, |  | ||||||
|   getFieldDetail, |   getFieldDetail, | ||||||
|  |   getFieldList, | ||||||
|  |   saveField, | ||||||
| } from './service'; | } from './service'; | ||||||
| import CreateModal from './components/create-modal.vue'; |  | ||||||
| import { message } from 'ant-design-vue'; |  | ||||||
| 
 | 
 | ||||||
| const listLoading = ref(false); | const listLoading = ref(false); | ||||||
| const saveLoading = ref(false); | const saveLoading = ref(false); | ||||||
| @ -166,6 +98,77 @@ const search = () => { | |||||||
| }; | }; | ||||||
| </script> | </script> | ||||||
| 
 | 
 | ||||||
|  | <template> | ||||||
|  |   <div class="normal-container view-cfg-box"> | ||||||
|  |     <div class="header-box"> | ||||||
|  |       <a-space> | ||||||
|  |         <a-input | ||||||
|  |           v-model:value="fieldName" | ||||||
|  |           placeholder="请输入字段名称" | ||||||
|  |           allow-clear | ||||||
|  |           style="width: 200px" | ||||||
|  |           @change="search" | ||||||
|  |         /> | ||||||
|  |         <a-select | ||||||
|  |           placeholder="请选择数据表id" | ||||||
|  |           v-model:value="modularId" | ||||||
|  |           allow-clear | ||||||
|  |           style="width: 160px" | ||||||
|  |           @change="search" | ||||||
|  |         /> | ||||||
|  |         <a-button type="primary" @click="openCreateModal">新建</a-button> | ||||||
|  |       </a-space> | ||||||
|  |     </div> | ||||||
|  |     <div class="content-box"> | ||||||
|  |       <a-table | ||||||
|  |         :columns="viewCfgCols" | ||||||
|  |         :data-source="dataList" | ||||||
|  |         :pagination="false" | ||||||
|  |         size="small" | ||||||
|  |         bordered | ||||||
|  |       > | ||||||
|  |         <template #bodyCell="{ column, record }"> | ||||||
|  |           <template v-if="column.dataIndex === 'action'"> | ||||||
|  |             <a-space> | ||||||
|  |               <a-button | ||||||
|  |                 type="link" | ||||||
|  |                 size="small" | ||||||
|  |                 @click="toGetDetail(record.field_id)" | ||||||
|  |               > | ||||||
|  |                 编辑 | ||||||
|  |               </a-button> | ||||||
|  |               <a-popconfirm | ||||||
|  |                 title="确定删除?" | ||||||
|  |                 @confirm="toDelete(record.field_id)" | ||||||
|  |               > | ||||||
|  |                 <a-button type="link" size="small">删除</a-button> | ||||||
|  |               </a-popconfirm> | ||||||
|  |             </a-space> | ||||||
|  |           </template> | ||||||
|  |         </template> | ||||||
|  |       </a-table> | ||||||
|  |       <a-pagination | ||||||
|  |         v-model:current="pageState.page" | ||||||
|  |         :total="pageState.total" | ||||||
|  |         :page-size="pageState.perPage" | ||||||
|  |         :hide-on-single-page="false" | ||||||
|  |         size="small" | ||||||
|  |         class="pagination-box" | ||||||
|  |         @change="toGetFieldList" | ||||||
|  |       /> | ||||||
|  |     </div> | ||||||
|  |     <CreateModal | ||||||
|  |       :width="700" | ||||||
|  |       :open="modalState.visible" | ||||||
|  |       :title="modalState.title" | ||||||
|  |       :type="modalState.type" | ||||||
|  |       :data="modalState.data" | ||||||
|  |       @cancel="modalState.visible = false" | ||||||
|  |       @ok="toSave" | ||||||
|  |     /> | ||||||
|  |   </div> | ||||||
|  | </template> | ||||||
|  | 
 | ||||||
| <style lang="less" scoped> | <style lang="less" scoped> | ||||||
| .header-box { | .header-box { | ||||||
|   margin-bottom: 10px; |   margin-bottom: 10px; | ||||||
|  | |||||||
| @ -1,131 +1,19 @@ | |||||||
| <template> |  | ||||||
|   <div class="page-view-wrapp"> |  | ||||||
|     <div v-if="!isInQiankun" class="project"> |  | ||||||
|       <span>项目: </span> |  | ||||||
|       <a-select |  | ||||||
|         style="min-width: 160px" |  | ||||||
|         placeholder="请选择项目" |  | ||||||
|         v-model:value="projectVal" |  | ||||||
|         :options="projectOptions" |  | ||||||
|         @change="handleProjectChange" |  | ||||||
|       ></a-select> |  | ||||||
|     </div> |  | ||||||
|     <div> |  | ||||||
|       <grid-layout |  | ||||||
|         v-if="isDraggable" |  | ||||||
|         :layout.sync="layoutList" |  | ||||||
|         :col-num="2" |  | ||||||
|         :is-draggable="true" |  | ||||||
|         :is-resizable="false" |  | ||||||
|         :is-mirrored="false" |  | ||||||
|         :vertical-compact="true" |  | ||||||
|         :use-css-transforms="true" |  | ||||||
|       > |  | ||||||
|         <grid-item |  | ||||||
|           v-for="(item, index) in layoutList" |  | ||||||
|           :x="item.x" |  | ||||||
|           :y="item.y" |  | ||||||
|           :w="item.w" |  | ||||||
|           :h="item.h" |  | ||||||
|           :i="item.i" |  | ||||||
|           :key="item.i" |  | ||||||
|           drag-allow-from=".vue-draggable-handle" |  | ||||||
|           drag-ignore-from=".no-drag" |  | ||||||
|         > |  | ||||||
|           <div class="view-box view-draggable"> |  | ||||||
|             <div class="vue-draggable-handle"><BarsOutlined /></div> |  | ||||||
|             <div class="content no-drag"> |  | ||||||
|               <a-spin :spinning="ids[index].loading"> |  | ||||||
|                 <div class="card-content"> |  | ||||||
|                   <y-table |  | ||||||
|                     v-if="item.data.type === VIEW_TYPE.TABLE" |  | ||||||
|                     :preview-id="item.id" |  | ||||||
|                     :filter-config="item.data.filter" |  | ||||||
|                     :data-list="item.data.data" |  | ||||||
|                     :column-config="item.data.header" |  | ||||||
|                     :total="item.data.count" |  | ||||||
|                     :title="item.data.preview_name" |  | ||||||
|                     :is-export="item.data.is_export" |  | ||||||
|                     @toFilt=" |  | ||||||
|                       (params?: object) => { |  | ||||||
|                         handleSingle(ids[index], params); |  | ||||||
|                       } |  | ||||||
|                     " |  | ||||||
|                   ></y-table> |  | ||||||
|                   <y-chart |  | ||||||
|                     v-if="item.data.type === VIEW_TYPE.CHART" |  | ||||||
|                     :chartCfg="item.data.config" |  | ||||||
|                     :title="item.data.preview_name" |  | ||||||
|                     :filter-config="item.data.filter" |  | ||||||
|                     @toFilt=" |  | ||||||
|                       (params?: object) => { |  | ||||||
|                         handleSingle(ids[index], params); |  | ||||||
|                       } |  | ||||||
|                     " |  | ||||||
|                   ></y-chart> |  | ||||||
|                 </div> |  | ||||||
|               </a-spin> |  | ||||||
|             </div> |  | ||||||
|           </div> |  | ||||||
|         </grid-item> |  | ||||||
|       </grid-layout> |  | ||||||
| 
 |  | ||||||
|       <a-row v-else :gutter="[16, 16]"> |  | ||||||
|         <a-col v-for="(item, index) in layoutList" :span="24"> |  | ||||||
|           <a-spin :spinning="item.loading"> |  | ||||||
|             <div> |  | ||||||
|               <div class="view-box"> |  | ||||||
|                 <div class="content"> |  | ||||||
|                   <div class="card-content"> |  | ||||||
|                     <y-table |  | ||||||
|                       v-if="item.data.type === VIEW_TYPE.TABLE" |  | ||||||
|                       :preview-id="item.id" |  | ||||||
|                       :filter-config="item.data.filter" |  | ||||||
|                       :data-list="item.data.data" |  | ||||||
|                       :column-config="item.data.header" |  | ||||||
|                       :total="item.data.count" |  | ||||||
|                       :title="item.data.preview_name" |  | ||||||
|                       :is-export="item.data.is_export" |  | ||||||
|                       @toFilt=" |  | ||||||
|                         (params?: object) => { |  | ||||||
|                           handleSingle(ids[index], params); |  | ||||||
|                         } |  | ||||||
|                       " |  | ||||||
|                     ></y-table> |  | ||||||
|                     <y-chart |  | ||||||
|                       v-if="item.data.type === VIEW_TYPE.CHART" |  | ||||||
|                       :chartCfg="item.data.config" |  | ||||||
|                       :title="item.data.preview_name" |  | ||||||
|                       :filter-config="item.data.filter" |  | ||||||
|                       @toFilt=" |  | ||||||
|                         (params?: object) => { |  | ||||||
|                           handleSingle(ids[index], params); |  | ||||||
|                         } |  | ||||||
|                       " |  | ||||||
|                     ></y-chart> |  | ||||||
|                   </div> |  | ||||||
|                 </div> |  | ||||||
|               </div> |  | ||||||
|             </div> |  | ||||||
|           </a-spin> |  | ||||||
|         </a-col> |  | ||||||
|       </a-row> |  | ||||||
|     </div> |  | ||||||
|   </div> |  | ||||||
| </template> |  | ||||||
| <script setup lang="ts"> | <script setup lang="ts"> | ||||||
| import { ref, shallowRef, computed, onMounted, watch } from 'vue'; | import type { SelectProps } from 'ant-design-vue'; | ||||||
|  | 
 | ||||||
|  | import { computed, onMounted, ref, shallowRef, watch } from 'vue'; | ||||||
| import { useRoute, useRouter } from 'vue-router'; | import { useRoute, useRouter } from 'vue-router'; | ||||||
|  | 
 | ||||||
|  | import { getProjectDrop } from '@/api/common'; | ||||||
|  | // api | ||||||
|  | import { searchInfo } from '@/api/preview/index'; | ||||||
| import { BarsOutlined } from '@ant-design/icons-vue'; | import { BarsOutlined } from '@ant-design/icons-vue'; | ||||||
| // utils | // utils | ||||||
| import PLimit from 'p-limit'; | import PLimit from 'p-limit'; | ||||||
| // api |  | ||||||
| import { searchInfo } from '@/api/preview/index'; |  | ||||||
| import { getProjectDrop } from '@/api/common'; |  | ||||||
| import { getPageInfo } from './service'; |  | ||||||
| import type { SelectProps } from 'ant-design-vue'; |  | ||||||
| import { qiankunWindow } from 'vite-plugin-qiankun/dist/helper'; | import { qiankunWindow } from 'vite-plugin-qiankun/dist/helper'; | ||||||
| 
 | 
 | ||||||
|  | import { getPageInfo } from './service'; | ||||||
|  | 
 | ||||||
| interface ItemDetail { | interface ItemDetail { | ||||||
|   id: number | string; |   id: number | string; | ||||||
|   data: any; |   data: any; | ||||||
| @ -204,7 +92,7 @@ const handleSingle = (info: ItemDetail, otherParams?: object) => { | |||||||
|   getSinglePreview({ info, otherParams, type: SEARCH_TYPE.SEARCH }); |   getSinglePreview({ info, otherParams, type: SEARCH_TYPE.SEARCH }); | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| const handleProjectChange = (value: string | number, option: Option) => { | const handleProjectChange = (value: number | string, option: Option) => { | ||||||
|   projectTag.value = option.mark; |   projectTag.value = option.mark; | ||||||
|   router.replace({ |   router.replace({ | ||||||
|     path: route.path, |     path: route.path, | ||||||
| @ -263,27 +151,25 @@ const getPageInfoData = () => { | |||||||
|   getPageInfo({ mark: projectTag.value, page_id: pageId.value ?? '-1' }) |   getPageInfo({ mark: projectTag.value, page_id: pageId.value ?? '-1' }) | ||||||
|     .then((res) => { |     .then((res) => { | ||||||
|       if (res.code === 200) { |       if (res.code === 200) { | ||||||
|         if (route.query.viewId) { |         ids.value = route.query.viewId | ||||||
|           ids.value = res.data |           ? res.data | ||||||
|             ?.filter((item: any) => { |               ?.filter((item: any) => { | ||||||
|               return item.preview_id === Number(route.query.viewId); |                 return item.preview_id === Number(route.query.viewId); | ||||||
|             }) |               }) | ||||||
|             .map((item: any) => { |               .map((item: any) => { | ||||||
|  |                 return { | ||||||
|  |                   id: item.preview_id, | ||||||
|  |                   data: item, | ||||||
|  |                   loading: false, | ||||||
|  |                 }; | ||||||
|  |               }) | ||||||
|  |           : res.data?.map((item: any) => { | ||||||
|               return { |               return { | ||||||
|                 id: item.preview_id, |                 id: item.preview_id, | ||||||
|                 data: item, |                 data: item, | ||||||
|                 loading: false, |                 loading: false, | ||||||
|               }; |               }; | ||||||
|             }); |             }); | ||||||
|         } else { |  | ||||||
|           ids.value = res.data?.map((item: any) => { |  | ||||||
|             return { |  | ||||||
|               id: item.preview_id, |  | ||||||
|               data: item, |  | ||||||
|               loading: false, |  | ||||||
|             }; |  | ||||||
|           }); |  | ||||||
|         } |  | ||||||
| 
 | 
 | ||||||
|         getAllCardsData(); |         getAllCardsData(); | ||||||
|       } |       } | ||||||
| @ -301,14 +187,129 @@ const fetchFn = (delay: number, info: ItemDetail) => { | |||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| const getAllCardsData = async () => { | const getAllCardsData = async () => { | ||||||
|   let listDB = []; |   const listDB = []; | ||||||
|   for (let i in ids.value) { |   for (const i in ids.value) { | ||||||
|     listDB.push(pLimit(() => fetchFn(i === '0' ? 200 : 1000, ids.value[i]))); |     listDB.push(pLimit(() => fetchFn(i === '0' ? 200 : 1000, ids.value[i]))); | ||||||
|   } |   } | ||||||
|   await Promise.all(listDB); |   await Promise.all(listDB); | ||||||
|   //此处的listDB就是最后整合的数据 |   // 此处的listDB就是最后整合的数据 | ||||||
| }; | }; | ||||||
| </script> | </script> | ||||||
|  | <template> | ||||||
|  |   <div class="page-view-wrapp"> | ||||||
|  |     <div v-if="!isInQiankun" class="project"> | ||||||
|  |       <span>项目: </span> | ||||||
|  |       <a-select | ||||||
|  |         style="min-width: 160px" | ||||||
|  |         placeholder="请选择项目" | ||||||
|  |         v-model:value="projectVal" | ||||||
|  |         :options="projectOptions" | ||||||
|  |         @change="handleProjectChange" | ||||||
|  |       /> | ||||||
|  |     </div> | ||||||
|  |     <div> | ||||||
|  |       <grid-layout | ||||||
|  |         v-if="isDraggable" | ||||||
|  |         v-model:layout="layoutList" | ||||||
|  |         :col-num="2" | ||||||
|  |         :is-draggable="true" | ||||||
|  |         :is-resizable="false" | ||||||
|  |         :is-mirrored="false" | ||||||
|  |         :vertical-compact="true" | ||||||
|  |         :use-css-transforms="true" | ||||||
|  |       > | ||||||
|  |         <grid-item | ||||||
|  |           v-for="(item, index) in layoutList" | ||||||
|  |           :x="item.x" | ||||||
|  |           :y="item.y" | ||||||
|  |           :w="item.w" | ||||||
|  |           :h="item.h" | ||||||
|  |           :i="item.i" | ||||||
|  |           :key="item.i" | ||||||
|  |           drag-allow-from=".vue-draggable-handle" | ||||||
|  |           drag-ignore-from=".no-drag" | ||||||
|  |         > | ||||||
|  |           <div class="view-box view-draggable"> | ||||||
|  |             <div class="vue-draggable-handle"><BarsOutlined /></div> | ||||||
|  |             <div class="content no-drag"> | ||||||
|  |               <a-spin :spinning="ids[index].loading"> | ||||||
|  |                 <div class="card-content"> | ||||||
|  |                   <y-table | ||||||
|  |                     v-if="item.data.type === VIEW_TYPE.TABLE" | ||||||
|  |                     :preview-id="item.id" | ||||||
|  |                     :filter-config="item.data.filter" | ||||||
|  |                     :data-list="item.data.data" | ||||||
|  |                     :column-config="item.data.header" | ||||||
|  |                     :total="item.data.count" | ||||||
|  |                     :title="item.data.preview_name" | ||||||
|  |                     :is-export="item.data.is_export" | ||||||
|  |                     @to-filt=" | ||||||
|  |                       (params?: object) => { | ||||||
|  |                         handleSingle(ids[index], params); | ||||||
|  |                       } | ||||||
|  |                     " | ||||||
|  |                   /> | ||||||
|  |                   <y-chart | ||||||
|  |                     v-if="item.data.type === VIEW_TYPE.CHART" | ||||||
|  |                     :chart-cfg="item.data.config" | ||||||
|  |                     :title="item.data.preview_name" | ||||||
|  |                     :filter-config="item.data.filter" | ||||||
|  |                     @to-filt=" | ||||||
|  |                       (params?: object) => { | ||||||
|  |                         handleSingle(ids[index], params); | ||||||
|  |                       } | ||||||
|  |                     " | ||||||
|  |                   /> | ||||||
|  |                 </div> | ||||||
|  |               </a-spin> | ||||||
|  |             </div> | ||||||
|  |           </div> | ||||||
|  |         </grid-item> | ||||||
|  |       </grid-layout> | ||||||
|  | 
 | ||||||
|  |       <a-row v-else :gutter="[16, 16]"> | ||||||
|  |         <a-col v-for="(item, index) in layoutList" :span="24"> | ||||||
|  |           <a-spin :spinning="item.loading"> | ||||||
|  |             <div> | ||||||
|  |               <div class="view-box"> | ||||||
|  |                 <div class="content"> | ||||||
|  |                   <div class="card-content"> | ||||||
|  |                     <y-table | ||||||
|  |                       v-if="item.data.type === VIEW_TYPE.TABLE" | ||||||
|  |                       :preview-id="item.id" | ||||||
|  |                       :filter-config="item.data.filter" | ||||||
|  |                       :data-list="item.data.data" | ||||||
|  |                       :column-config="item.data.header" | ||||||
|  |                       :total="item.data.count" | ||||||
|  |                       :title="item.data.preview_name" | ||||||
|  |                       :is-export="item.data.is_export" | ||||||
|  |                       @to-filt=" | ||||||
|  |                         (params?: object) => { | ||||||
|  |                           handleSingle(ids[index], params); | ||||||
|  |                         } | ||||||
|  |                       " | ||||||
|  |                     /> | ||||||
|  |                     <y-chart | ||||||
|  |                       v-if="item.data.type === VIEW_TYPE.CHART" | ||||||
|  |                       :chart-cfg="item.data.config" | ||||||
|  |                       :title="item.data.preview_name" | ||||||
|  |                       :filter-config="item.data.filter" | ||||||
|  |                       @to-filt=" | ||||||
|  |                         (params?: object) => { | ||||||
|  |                           handleSingle(ids[index], params); | ||||||
|  |                         } | ||||||
|  |                       " | ||||||
|  |                     /> | ||||||
|  |                   </div> | ||||||
|  |                 </div> | ||||||
|  |               </div> | ||||||
|  |             </div> | ||||||
|  |           </a-spin> | ||||||
|  |         </a-col> | ||||||
|  |       </a-row> | ||||||
|  |     </div> | ||||||
|  |   </div> | ||||||
|  | </template> | ||||||
| <style lang="less" scoped> | <style lang="less" scoped> | ||||||
| .view-box { | .view-box { | ||||||
|   height: 100%; |   height: 100%; | ||||||
|  | |||||||
| @ -1,4 +1,5 @@ | |||||||
| import { get, post } from '@/utils/request'; | import { get } from '@/utils/request'; | ||||||
|  | 
 | ||||||
| interface PageInfoParams { | interface PageInfoParams { | ||||||
|   mark: string; |   mark: string; | ||||||
|   page_id: number | string; |   page_id: number | string; | ||||||
|  | |||||||
| @ -1,235 +1,18 @@ | |||||||
| <template> |  | ||||||
|   <div class="normal-container"> |  | ||||||
|     <div class="view-create-box"> |  | ||||||
|       <div class="left-box"> |  | ||||||
|         <a-form :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }"> |  | ||||||
|           <a-form-item label="项目" |  | ||||||
|             ><a-select |  | ||||||
|               placeholder="请选择项目" |  | ||||||
|               :options="projectSel" |  | ||||||
|               v-model:value="projectId" |  | ||||||
|               @change="onProjectChange" |  | ||||||
|             ></a-select |  | ||||||
|           ></a-form-item> |  | ||||||
|           <a-form-item label="数据来源"> |  | ||||||
|             <a-select |  | ||||||
|               placeholder="请选择" |  | ||||||
|               :options="modularSel" |  | ||||||
|               v-model:value="modularId" |  | ||||||
|               @change="onModularChange" |  | ||||||
|             ></a-select> |  | ||||||
|           </a-form-item> |  | ||||||
|           <a-form-item label="展示类型"> |  | ||||||
|             <a-select |  | ||||||
|               placeholder="请选择展示类型" |  | ||||||
|               :options="showTypeSel" |  | ||||||
|               v-model:value="showTypeId" |  | ||||||
|               @change="onShowTypeChange" |  | ||||||
|             ></a-select> |  | ||||||
|           </a-form-item> |  | ||||||
|           <a-form-item label="是否导出" v-if="showTypeId === 1"> |  | ||||||
|             <a-switch |  | ||||||
|               v-model:checked="isExport" |  | ||||||
|               :checkedValue="1" |  | ||||||
|               :unCheckedValue="0" |  | ||||||
|             > |  | ||||||
|             </a-switch> |  | ||||||
|           </a-form-item> |  | ||||||
|           <a-form-item label="字段" v-if="fieldList.length"> |  | ||||||
|             <a-checkbox-group v-model:value="fieldIds"> |  | ||||||
|               <a-checkbox |  | ||||||
|                 v-for="(item, index) in fieldList" |  | ||||||
|                 :key="index" |  | ||||||
|                 :value="item.value" |  | ||||||
|                 >{{ item.label }}</a-checkbox |  | ||||||
|               > |  | ||||||
|             </a-checkbox-group> |  | ||||||
|           </a-form-item> |  | ||||||
|           <a-form-item label="x轴" v-if="xDataList.length"> |  | ||||||
|             <a-radio-group |  | ||||||
|               :options="xDataList" |  | ||||||
|               v-model:value="xDataId" |  | ||||||
|             ></a-radio-group> |  | ||||||
|           </a-form-item> |  | ||||||
|           <a-form-item label="y轴" v-if="yDataList.length"> |  | ||||||
|             <a-checkbox-group |  | ||||||
|               :options="yDataList" |  | ||||||
|               v-model:value="yDataId" |  | ||||||
|             ></a-checkbox-group> |  | ||||||
|           </a-form-item> |  | ||||||
|         </a-form> |  | ||||||
|         <div class="footer"> |  | ||||||
|           <a-button |  | ||||||
|             class="preview-btn" |  | ||||||
|             :loading="previewLoading" |  | ||||||
|             @click=" |  | ||||||
|               () => { |  | ||||||
|                 toPreview({}); |  | ||||||
|               } |  | ||||||
|             " |  | ||||||
|             >预览</a-button |  | ||||||
|           > |  | ||||||
|           <a-button type="primary" @click="addViewName">点击保存</a-button> |  | ||||||
|         </div> |  | ||||||
|       </div> |  | ||||||
|       <div class="right-box"> |  | ||||||
|         <div class="y-table-container" v-if="previewData.type === 'table'"> |  | ||||||
|           <div class="y-table-name"> |  | ||||||
|             <div class="title">{{ previewData.preview_name }}</div> |  | ||||||
|           </div> |  | ||||||
|           <div class="y-table-filter"> |  | ||||||
|             <div |  | ||||||
|               v-for="item in previewData.filterConfig" |  | ||||||
|               :key="item.name" |  | ||||||
|               class="filter-item" |  | ||||||
|             > |  | ||||||
|               <span>{{ item.label }}:</span> |  | ||||||
|               <a-select |  | ||||||
|                 v-if="item.type === 'select'" |  | ||||||
|                 class="input-item" |  | ||||||
|                 :options="item.options" |  | ||||||
|                 v-model:value="previewData.filterData[item.name]" |  | ||||||
|                 placeholder="请选择" |  | ||||||
|                 allow-clear |  | ||||||
|                 @change="toFilt" |  | ||||||
|               ></a-select> |  | ||||||
|               <a-input |  | ||||||
|                 v-if="item.type === 'text'" |  | ||||||
|                 class="input-item" |  | ||||||
|                 placeholder="请输入" |  | ||||||
|                 allow-clear |  | ||||||
|                 v-model:value="previewData.filterData[item.name]" |  | ||||||
|                 @change="toFilt" |  | ||||||
|               /> |  | ||||||
|               <a-range-picker |  | ||||||
|                 v-if="item.type === 'time'" |  | ||||||
|                 class="date-item" |  | ||||||
|                 v-model:value="previewData.filterData[item.name]" |  | ||||||
|                 @change="toFilt" |  | ||||||
|               /> |  | ||||||
|               <a-range-picker |  | ||||||
|                 v-else-if="item.type === 'date_time'" |  | ||||||
|                 class="date-time-item" |  | ||||||
|                 v-model:value="previewData.filterData[item.name]" |  | ||||||
|                 show-time |  | ||||||
|                 format="YYYY-MM-DD HH:mm" |  | ||||||
|                 @change="toFilt" |  | ||||||
|               /> |  | ||||||
|               <!-- 数值区间 --> |  | ||||||
|               <div |  | ||||||
|                 v-else-if=" |  | ||||||
|                   item.type === 'number_range' && |  | ||||||
|                   previewData.filterData[item.name] |  | ||||||
|                 " |  | ||||||
|                 class="number_range_box" |  | ||||||
|               > |  | ||||||
|                 <a-input-number |  | ||||||
|                   placeholder="最小值" |  | ||||||
|                   style="width: 140px" |  | ||||||
|                   v-model:value="previewData.filterData[item.name].min" |  | ||||||
|                   @change="toFilt" |  | ||||||
|                 /> |  | ||||||
|                 <span class="divider"> - </span> |  | ||||||
|                 <a-input-number |  | ||||||
|                   placeholder="最大值" |  | ||||||
|                   style="width: 140px" |  | ||||||
|                   v-model:value="previewData.filterData[item.name].max" |  | ||||||
|                   @change="toFilt" |  | ||||||
|                 /> |  | ||||||
|               </div> |  | ||||||
|             </div> |  | ||||||
|             <div v-if="previewData.isExport" class="filter-item"> |  | ||||||
|               <a-button type="primary">导出</a-button> |  | ||||||
|             </div> |  | ||||||
|           </div> |  | ||||||
|           <div class="y-table-content"> |  | ||||||
|             <a-table |  | ||||||
|               :columns="previewData.columnConfig" |  | ||||||
|               :data-source="previewData.dataList" |  | ||||||
|               :pagination="false" |  | ||||||
|               :scroll="{ x: 1000, y: `calc(100vh - 260px)` }" |  | ||||||
|               size="small" |  | ||||||
|               bordered |  | ||||||
|             > |  | ||||||
|               <template #bodyCell="{ column, record }"> |  | ||||||
|                 <a-image |  | ||||||
|                   v-if="column.show_type === 'img'" |  | ||||||
|                   :src="record[column.dataIndex]" |  | ||||||
|                   :width="160" |  | ||||||
|                 /> |  | ||||||
|                 <a |  | ||||||
|                   v-else-if="column.show_type === 'link'" |  | ||||||
|                   target="_blank" |  | ||||||
|                   :href="record[column.dataIndex]" |  | ||||||
|                   >{{ record[column.dataIndex] }}</a |  | ||||||
|                 > |  | ||||||
|                 <div |  | ||||||
|                   v-else-if="column.show_type === 'richText'" |  | ||||||
|                   v-html="record[column.dataIndex]" |  | ||||||
|                 ></div> |  | ||||||
|                 <template v-else>{{ record[column.dataIndex] }}</template> |  | ||||||
|               </template> |  | ||||||
|             </a-table> |  | ||||||
|             <a-pagination |  | ||||||
|               v-model:current="previewData.page" |  | ||||||
|               :total="previewData.total" |  | ||||||
|               :page-size="previewData.perPage" |  | ||||||
|               :hide-on-single-page="false" |  | ||||||
|               size="small" |  | ||||||
|               class="pagination-box" |  | ||||||
|               @change=" |  | ||||||
|                 () => { |  | ||||||
|                   toPreview({}); |  | ||||||
|                 } |  | ||||||
|               " |  | ||||||
|             /> |  | ||||||
|           </div> |  | ||||||
|         </div> |  | ||||||
|         <y-chart |  | ||||||
|           v-else-if="previewData.type === 'chart'" |  | ||||||
|           :chart-cfg="previewData.chartCfg" |  | ||||||
|           :filter-config="previewData.filter" |  | ||||||
|           @toFilt=" |  | ||||||
|             () => { |  | ||||||
|               toPreview({}); |  | ||||||
|             } |  | ||||||
|           " |  | ||||||
|         ></y-chart> |  | ||||||
|         <div class="preview-area" v-else> |  | ||||||
|           <div><BarChartOutlined /></div> |  | ||||||
|           <div>预览区</div> |  | ||||||
|         </div> |  | ||||||
|       </div> |  | ||||||
|       <a-modal |  | ||||||
|         :open="nameVisible" |  | ||||||
|         title="保存视图" |  | ||||||
|         :bodyStyle="{ paddingTop: '20px' }" |  | ||||||
|         @cancel="nameVisible = false" |  | ||||||
|         @ok="toSaveView" |  | ||||||
|       > |  | ||||||
|         <a-form :label-col="{ span: 4 }" :wrapper-col="{ span: 20 }"> |  | ||||||
|           <a-form-item label="视图名称"> |  | ||||||
|             <a-input placeholder="请输入视图名称" v-model:value="previewName" /> |  | ||||||
|           </a-form-item> |  | ||||||
|         </a-form> |  | ||||||
|       </a-modal> |  | ||||||
|     </div> |  | ||||||
|   </div> |  | ||||||
| </template> |  | ||||||
| 
 |  | ||||||
| <script setup> | <script setup> | ||||||
| import { onMounted, reactive, ref } from 'vue'; | import { onMounted, reactive, ref } from 'vue'; | ||||||
|  | 
 | ||||||
|  | import yChart from '@/components/common/y-chart.vue'; | ||||||
|  | import { BarChartOutlined } from '@ant-design/icons-vue'; | ||||||
|  | import { message } from 'ant-design-vue'; | ||||||
|  | import { cloneDeep } from 'lodash-es'; | ||||||
|  | 
 | ||||||
| import { | import { | ||||||
|  |   getFieldOpts, | ||||||
|   getProModularField, |   getProModularField, | ||||||
|  |   getShowTypeSelect, | ||||||
|   preview, |   preview, | ||||||
|   saveView, |   saveView, | ||||||
|   getShowTypeSelect, |  | ||||||
|   getFieldOpts, |  | ||||||
| } from './service'; | } from './service'; | ||||||
| import { message } from 'ant-design-vue'; |  | ||||||
| import { BarChartOutlined } from '@ant-design/icons-vue'; |  | ||||||
| import yChart from '@/components/common/y-chart.vue'; |  | ||||||
| import { cloneDeep } from 'lodash-es'; |  | ||||||
| 
 | 
 | ||||||
| const projectSel = ref([]); // 项目下拉 | const projectSel = ref([]); // 项目下拉 | ||||||
| const modularSel = ref([]); // 数据来源下拉 | const modularSel = ref([]); // 数据来源下拉 | ||||||
| @ -289,7 +72,7 @@ const toGetFieldOpts = () => { | |||||||
|     fieldList.value = res.data.list ? tranformList(res.data.list) : []; |     fieldList.value = res.data.list ? tranformList(res.data.list) : []; | ||||||
|     xDataList.value = res.data.x_data ? tranformList(res.data.x_data) : []; |     xDataList.value = res.data.x_data ? tranformList(res.data.x_data) : []; | ||||||
|     yDataList.value = res.data.y_data ? tranformList(res.data.y_data) : []; |     yDataList.value = res.data.y_data ? tranformList(res.data.y_data) : []; | ||||||
|     if (!fieldList.value.length) { |     if (fieldList.value.length === 0) { | ||||||
|       fieldIds.value = []; |       fieldIds.value = []; | ||||||
|     } else { |     } else { | ||||||
|       xDataId.value = undefined; |       xDataId.value = undefined; | ||||||
| @ -354,7 +137,9 @@ const resetPreviewData = () => { | |||||||
| const toPreview = ({ filter }) => { | const toPreview = ({ filter }) => { | ||||||
|   previewLoading.value = true; |   previewLoading.value = true; | ||||||
|   let filterData; |   let filterData; | ||||||
|   if (!filter) { |   if (filter) { | ||||||
|  |     filterData = filter; | ||||||
|  |   } else { | ||||||
|     const cloneFilter = cloneDeep(previewData.filterConfig); |     const cloneFilter = cloneDeep(previewData.filterConfig); | ||||||
|     filterData = cloneFilter |     filterData = cloneFilter | ||||||
|       .filter((item) => { |       .filter((item) => { | ||||||
| @ -381,12 +166,12 @@ const toPreview = ({ filter }) => { | |||||||
|           return { |           return { | ||||||
|             name: item.name, |             name: item.name, | ||||||
|             type: item.type, |             type: item.type, | ||||||
|             start_time: |             start_time: `${previewData.filterData[item.name][0].format( | ||||||
|               previewData.filterData[item.name][0].format('YYYY-MM-DD HH:mm') + |               'YYYY-MM-DD HH:mm', | ||||||
|               ':00', |             )}:00`, | ||||||
|             end_time: |             end_time: `${previewData.filterData[item.name][1].format( | ||||||
|               previewData.filterData[item.name][1].format('YYYY-MM-DD HH:mm') + |               'YYYY-MM-DD HH:mm', | ||||||
|               ':59', |             )}:59`, | ||||||
|           }; |           }; | ||||||
|         } else if (item.type === 'number_range') { |         } else if (item.type === 'number_range') { | ||||||
|           // 数值区间 |           // 数值区间 | ||||||
| @ -408,8 +193,6 @@ const toPreview = ({ filter }) => { | |||||||
|           }; |           }; | ||||||
|         } |         } | ||||||
|       }); |       }); | ||||||
|   } else { |  | ||||||
|     filterData = filter; |  | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   preview({ |   preview({ | ||||||
| @ -489,6 +272,219 @@ const toFilt = () => { | |||||||
| }; | }; | ||||||
| </script> | </script> | ||||||
| 
 | 
 | ||||||
|  | <template> | ||||||
|  |   <div class="normal-container"> | ||||||
|  |     <div class="view-create-box"> | ||||||
|  |       <div class="left-box"> | ||||||
|  |         <a-form :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }"> | ||||||
|  |           <a-form-item label="项目"> | ||||||
|  |             <a-select | ||||||
|  |               placeholder="请选择项目" | ||||||
|  |               :options="projectSel" | ||||||
|  |               v-model:value="projectId" | ||||||
|  |               @change="onProjectChange" | ||||||
|  |             /> | ||||||
|  |           </a-form-item> | ||||||
|  |           <a-form-item label="数据来源"> | ||||||
|  |             <a-select | ||||||
|  |               placeholder="请选择" | ||||||
|  |               :options="modularSel" | ||||||
|  |               v-model:value="modularId" | ||||||
|  |               @change="onModularChange" | ||||||
|  |             /> | ||||||
|  |           </a-form-item> | ||||||
|  |           <a-form-item label="展示类型"> | ||||||
|  |             <a-select | ||||||
|  |               placeholder="请选择展示类型" | ||||||
|  |               :options="showTypeSel" | ||||||
|  |               v-model:value="showTypeId" | ||||||
|  |               @change="onShowTypeChange" | ||||||
|  |             /> | ||||||
|  |           </a-form-item> | ||||||
|  |           <a-form-item label="是否导出" v-if="showTypeId === 1"> | ||||||
|  |             <a-switch | ||||||
|  |               v-model:checked="isExport" | ||||||
|  |               :checked-value="1" | ||||||
|  |               :un-checked-value="0" | ||||||
|  |             /> | ||||||
|  |           </a-form-item> | ||||||
|  |           <a-form-item label="字段" v-if="fieldList.length > 0"> | ||||||
|  |             <a-checkbox-group v-model:value="fieldIds"> | ||||||
|  |               <a-checkbox | ||||||
|  |                 v-for="(item, index) in fieldList" | ||||||
|  |                 :key="index" | ||||||
|  |                 :value="item.value" | ||||||
|  |               > | ||||||
|  |                 {{ item.label }} | ||||||
|  |               </a-checkbox> | ||||||
|  |             </a-checkbox-group> | ||||||
|  |           </a-form-item> | ||||||
|  |           <a-form-item label="x轴" v-if="xDataList.length > 0"> | ||||||
|  |             <a-radio-group :options="xDataList" v-model:value="xDataId" /> | ||||||
|  |           </a-form-item> | ||||||
|  |           <a-form-item label="y轴" v-if="yDataList.length > 0"> | ||||||
|  |             <a-checkbox-group :options="yDataList" v-model:value="yDataId" /> | ||||||
|  |           </a-form-item> | ||||||
|  |         </a-form> | ||||||
|  |         <div class="footer"> | ||||||
|  |           <a-button | ||||||
|  |             class="preview-btn" | ||||||
|  |             :loading="previewLoading" | ||||||
|  |             @click=" | ||||||
|  |               () => { | ||||||
|  |                 toPreview({}); | ||||||
|  |               } | ||||||
|  |             " | ||||||
|  |           > | ||||||
|  |             预览 | ||||||
|  |           </a-button> | ||||||
|  |           <a-button type="primary" @click="addViewName">点击保存</a-button> | ||||||
|  |         </div> | ||||||
|  |       </div> | ||||||
|  |       <div class="right-box"> | ||||||
|  |         <div class="y-table-container" v-if="previewData.type === 'table'"> | ||||||
|  |           <div class="y-table-name"> | ||||||
|  |             <div class="title">{{ previewData.preview_name }}</div> | ||||||
|  |           </div> | ||||||
|  |           <div class="y-table-filter"> | ||||||
|  |             <div | ||||||
|  |               v-for="item in previewData.filterConfig" | ||||||
|  |               :key="item.name" | ||||||
|  |               class="filter-item" | ||||||
|  |             > | ||||||
|  |               <span>{{ item.label }}:</span> | ||||||
|  |               <a-select | ||||||
|  |                 v-if="item.type === 'select'" | ||||||
|  |                 class="input-item" | ||||||
|  |                 :options="item.options" | ||||||
|  |                 v-model:value="previewData.filterData[item.name]" | ||||||
|  |                 placeholder="请选择" | ||||||
|  |                 allow-clear | ||||||
|  |                 @change="toFilt" | ||||||
|  |               /> | ||||||
|  |               <a-input | ||||||
|  |                 v-if="item.type === 'text'" | ||||||
|  |                 class="input-item" | ||||||
|  |                 placeholder="请输入" | ||||||
|  |                 allow-clear | ||||||
|  |                 v-model:value="previewData.filterData[item.name]" | ||||||
|  |                 @change="toFilt" | ||||||
|  |               /> | ||||||
|  |               <a-range-picker | ||||||
|  |                 v-if="item.type === 'time'" | ||||||
|  |                 class="date-item" | ||||||
|  |                 v-model:value="previewData.filterData[item.name]" | ||||||
|  |                 @change="toFilt" | ||||||
|  |               /> | ||||||
|  |               <a-range-picker | ||||||
|  |                 v-else-if="item.type === 'date_time'" | ||||||
|  |                 class="date-time-item" | ||||||
|  |                 v-model:value="previewData.filterData[item.name]" | ||||||
|  |                 show-time | ||||||
|  |                 format="YYYY-MM-DD HH:mm" | ||||||
|  |                 @change="toFilt" | ||||||
|  |               /> | ||||||
|  |               <!-- 数值区间 --> | ||||||
|  |               <div | ||||||
|  |                 v-else-if=" | ||||||
|  |                   item.type === 'number_range' && | ||||||
|  |                   previewData.filterData[item.name] | ||||||
|  |                 " | ||||||
|  |                 class="number_range_box" | ||||||
|  |               > | ||||||
|  |                 <a-input-number | ||||||
|  |                   placeholder="最小值" | ||||||
|  |                   style="width: 140px" | ||||||
|  |                   v-model:value="previewData.filterData[item.name].min" | ||||||
|  |                   @change="toFilt" | ||||||
|  |                 /> | ||||||
|  |                 <span class="divider"> - </span> | ||||||
|  |                 <a-input-number | ||||||
|  |                   placeholder="最大值" | ||||||
|  |                   style="width: 140px" | ||||||
|  |                   v-model:value="previewData.filterData[item.name].max" | ||||||
|  |                   @change="toFilt" | ||||||
|  |                 /> | ||||||
|  |               </div> | ||||||
|  |             </div> | ||||||
|  |             <div v-if="previewData.isExport" class="filter-item"> | ||||||
|  |               <a-button type="primary">导出</a-button> | ||||||
|  |             </div> | ||||||
|  |           </div> | ||||||
|  |           <div class="y-table-content"> | ||||||
|  |             <a-table | ||||||
|  |               :columns="previewData.columnConfig" | ||||||
|  |               :data-source="previewData.dataList" | ||||||
|  |               :pagination="false" | ||||||
|  |               :scroll="{ x: 1000, y: `calc(100vh - 260px)` }" | ||||||
|  |               size="small" | ||||||
|  |               bordered | ||||||
|  |             > | ||||||
|  |               <template #bodyCell="{ column, record }"> | ||||||
|  |                 <a-image | ||||||
|  |                   v-if="column.show_type === 'img'" | ||||||
|  |                   :src="record[column.dataIndex]" | ||||||
|  |                   :width="160" | ||||||
|  |                 /> | ||||||
|  |                 <a | ||||||
|  |                   v-else-if="column.show_type === 'link'" | ||||||
|  |                   target="_blank" | ||||||
|  |                   :href="record[column.dataIndex]" | ||||||
|  |                   >{{ record[column.dataIndex] }}</a> | ||||||
|  |                 <div | ||||||
|  |                   v-else-if="column.show_type === 'richText'" | ||||||
|  |                   v-html="record[column.dataIndex]" | ||||||
|  |                 ></div> | ||||||
|  |                 <template v-else>{{ record[column.dataIndex] }}</template> | ||||||
|  |               </template> | ||||||
|  |             </a-table> | ||||||
|  |             <a-pagination | ||||||
|  |               v-model:current="previewData.page" | ||||||
|  |               :total="previewData.total" | ||||||
|  |               :page-size="previewData.perPage" | ||||||
|  |               :hide-on-single-page="false" | ||||||
|  |               size="small" | ||||||
|  |               class="pagination-box" | ||||||
|  |               @change=" | ||||||
|  |                 () => { | ||||||
|  |                   toPreview({}); | ||||||
|  |                 } | ||||||
|  |               " | ||||||
|  |             /> | ||||||
|  |           </div> | ||||||
|  |         </div> | ||||||
|  |         <y-chart | ||||||
|  |           v-else-if="previewData.type === 'chart'" | ||||||
|  |           :chart-cfg="previewData.chartCfg" | ||||||
|  |           :filter-config="previewData.filter" | ||||||
|  |           @to-filt=" | ||||||
|  |             () => { | ||||||
|  |               toPreview({}); | ||||||
|  |             } | ||||||
|  |           " | ||||||
|  |         /> | ||||||
|  |         <div class="preview-area" v-else> | ||||||
|  |           <div><BarChartOutlined /></div> | ||||||
|  |           <div>预览区</div> | ||||||
|  |         </div> | ||||||
|  |       </div> | ||||||
|  |       <a-modal | ||||||
|  |         :open="nameVisible" | ||||||
|  |         title="保存视图" | ||||||
|  |         :body-style="{ paddingTop: '20px' }" | ||||||
|  |         @cancel="nameVisible = false" | ||||||
|  |         @ok="toSaveView" | ||||||
|  |       > | ||||||
|  |         <a-form :label-col="{ span: 4 }" :wrapper-col="{ span: 20 }"> | ||||||
|  |           <a-form-item label="视图名称"> | ||||||
|  |             <a-input placeholder="请输入视图名称" v-model:value="previewName" /> | ||||||
|  |           </a-form-item> | ||||||
|  |         </a-form> | ||||||
|  |       </a-modal> | ||||||
|  |     </div> | ||||||
|  |   </div> | ||||||
|  | </template> | ||||||
|  | 
 | ||||||
| <style lang="less" scoped> | <style lang="less" scoped> | ||||||
| .normal-container { | .normal-container { | ||||||
|   height: calc(100vh - 120px); |   height: calc(100vh - 120px); | ||||||
|  | |||||||
| @ -1,114 +1,12 @@ | |||||||
| <template> |  | ||||||
|   <div class="normal-container"> |  | ||||||
|     <div class="view-list-box"> |  | ||||||
|       <div class="left-box"> |  | ||||||
|         <a-form :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }"> |  | ||||||
|           <a-form-item label="项目"> |  | ||||||
|             <a-select |  | ||||||
|               :options="projectSel" |  | ||||||
|               v-model:value="projectId" |  | ||||||
|               placeholder="请选择项目" |  | ||||||
|               @change="onProjectChange" |  | ||||||
|             ></a-select> |  | ||||||
|           </a-form-item> |  | ||||||
|           <a-form-item label="数据来源"> |  | ||||||
|             <a-select |  | ||||||
|               :options="modularSel" |  | ||||||
|               v-model:value="modularId" |  | ||||||
|               placeholder="请先选好项目再选择" |  | ||||||
|               @change="onModularChange" |  | ||||||
|             ></a-select> |  | ||||||
|           </a-form-item> |  | ||||||
|         </a-form> |  | ||||||
|         <a-table |  | ||||||
|           :data-source="dataList" |  | ||||||
|           :columns="viewListCols" |  | ||||||
|           :pagination="false" |  | ||||||
|           :row-class-name=" |  | ||||||
|             (record) => |  | ||||||
|               record.preview_id === selectedRowId ? 'selected-row' : '' |  | ||||||
|           " |  | ||||||
|           :custom-row=" |  | ||||||
|             (record, index) => { |  | ||||||
|               return { |  | ||||||
|                 onClick: () => { |  | ||||||
|                   selectedRowId = record.preview_id; |  | ||||||
|                   toGetViewInfo(); |  | ||||||
|                 }, |  | ||||||
|               }; |  | ||||||
|             } |  | ||||||
|           " |  | ||||||
|           size="small" |  | ||||||
|           bordered |  | ||||||
|         > |  | ||||||
|           <template #bodyCell="{ column, record }"> |  | ||||||
|             <template v-if="column.dataIndex === 'action'"> |  | ||||||
|               <a-popconfirm |  | ||||||
|                 title="确定删除?" |  | ||||||
|                 @confirm="toDelete(record.preview_id)" |  | ||||||
|               > |  | ||||||
|                 <a-button |  | ||||||
|                   type="link" |  | ||||||
|                   @click=" |  | ||||||
|                     (e) => { |  | ||||||
|                       e.stopPropagation(); |  | ||||||
|                     } |  | ||||||
|                   " |  | ||||||
|                   >删除</a-button |  | ||||||
|                 > |  | ||||||
|               </a-popconfirm> |  | ||||||
|             </template> |  | ||||||
|           </template> |  | ||||||
|         </a-table> |  | ||||||
|         <a-pagination |  | ||||||
|           v-model:current="pageState.page" |  | ||||||
|           :total="pageState.total" |  | ||||||
|           :page-size="pageState.perPage" |  | ||||||
|           :hide-on-single-page="false" |  | ||||||
|           size="small" |  | ||||||
|           class="pagination-box" |  | ||||||
|           @change="toGetList" |  | ||||||
|         /> |  | ||||||
|       </div> |  | ||||||
|       <div class="right-box"> |  | ||||||
|         <y-table |  | ||||||
|           v-if="selectViewInfo.type === 'table'" |  | ||||||
|           :previewId="selectedRowId" |  | ||||||
|           :filter-config="selectViewInfo.filter" |  | ||||||
|           :data-list="selectViewInfo.data" |  | ||||||
|           :column-config="selectViewInfo.header" |  | ||||||
|           :total="selectViewInfo.count" |  | ||||||
|           :title="selectViewInfo.preview_name" |  | ||||||
|           :is-export="selectViewInfo.is_export" |  | ||||||
|           @toFilt=" |  | ||||||
|             (params) => { |  | ||||||
|               toGetViewInfo(params); |  | ||||||
|             } |  | ||||||
|           " |  | ||||||
|         /> |  | ||||||
|         <y-chart |  | ||||||
|           v-else-if="selectViewInfo.type === 'chart'" |  | ||||||
|           :chartCfg="selectViewInfo.config" |  | ||||||
|           :title="selectViewInfo.preview_name" |  | ||||||
|           :filter-config="selectViewInfo.filter" |  | ||||||
|           @toFilt="toGetViewInfo" |  | ||||||
|         /> |  | ||||||
|         <div class="preview-area" v-else> |  | ||||||
|           <div><BarChartOutlined /></div> |  | ||||||
|           <div>展示区</div> |  | ||||||
|         </div> |  | ||||||
|       </div> |  | ||||||
|     </div> |  | ||||||
|   </div> |  | ||||||
| </template> |  | ||||||
| 
 |  | ||||||
| <script setup> | <script setup> | ||||||
| import { onMounted, ref, reactive } from 'vue'; | import { onMounted, reactive, ref } from 'vue'; | ||||||
| import { getProModular, getViewList, getViewInfo, deleteView } from './service'; | 
 | ||||||
| import { viewListCols } from './config'; |  | ||||||
| import yTable from '@/components/common/y-table.vue'; | import yTable from '@/components/common/y-table.vue'; | ||||||
| import { message } from 'ant-design-vue'; |  | ||||||
| import { BarChartOutlined } from '@ant-design/icons-vue'; | import { BarChartOutlined } from '@ant-design/icons-vue'; | ||||||
|  | import { message } from 'ant-design-vue'; | ||||||
|  | 
 | ||||||
|  | import { viewListCols } from './config'; | ||||||
|  | import { deleteView, getProModular, getViewInfo, getViewList } from './service'; | ||||||
| 
 | 
 | ||||||
| const projectSel = ref([]); | const projectSel = ref([]); | ||||||
| const modularSel = ref([]); | const modularSel = ref([]); | ||||||
| @ -139,7 +37,7 @@ onMounted(() => { | |||||||
| const toGetProModular = () => { | const toGetProModular = () => { | ||||||
|   getProModular().then((res) => { |   getProModular().then((res) => { | ||||||
|     projectSel.value = res.data; |     projectSel.value = res.data; | ||||||
|     if (res.data.length) { |     if (res.data.length > 0) { | ||||||
|       projectId.value = res.data[0].value; |       projectId.value = res.data[0].value; | ||||||
|       onProjectChange(projectId.value); |       onProjectChange(projectId.value); | ||||||
|     } |     } | ||||||
| @ -184,6 +82,111 @@ const toDelete = (previewId) => { | |||||||
| }; | }; | ||||||
| </script> | </script> | ||||||
| 
 | 
 | ||||||
|  | <template> | ||||||
|  |   <div class="normal-container"> | ||||||
|  |     <div class="view-list-box"> | ||||||
|  |       <div class="left-box"> | ||||||
|  |         <a-form :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }"> | ||||||
|  |           <a-form-item label="项目"> | ||||||
|  |             <a-select | ||||||
|  |               :options="projectSel" | ||||||
|  |               v-model:value="projectId" | ||||||
|  |               placeholder="请选择项目" | ||||||
|  |               @change="onProjectChange" | ||||||
|  |             /> | ||||||
|  |           </a-form-item> | ||||||
|  |           <a-form-item label="数据来源"> | ||||||
|  |             <a-select | ||||||
|  |               :options="modularSel" | ||||||
|  |               v-model:value="modularId" | ||||||
|  |               placeholder="请先选好项目再选择" | ||||||
|  |               @change="onModularChange" | ||||||
|  |             /> | ||||||
|  |           </a-form-item> | ||||||
|  |         </a-form> | ||||||
|  |         <a-table | ||||||
|  |           :data-source="dataList" | ||||||
|  |           :columns="viewListCols" | ||||||
|  |           :pagination="false" | ||||||
|  |           :row-class-name=" | ||||||
|  |             (record) => | ||||||
|  |               record.preview_id === selectedRowId ? 'selected-row' : '' | ||||||
|  |           " | ||||||
|  |           :custom-row=" | ||||||
|  |             (record, index) => { | ||||||
|  |               return { | ||||||
|  |                 onClick: () => { | ||||||
|  |                   selectedRowId = record.preview_id; | ||||||
|  |                   toGetViewInfo(); | ||||||
|  |                 }, | ||||||
|  |               }; | ||||||
|  |             } | ||||||
|  |           " | ||||||
|  |           size="small" | ||||||
|  |           bordered | ||||||
|  |         > | ||||||
|  |           <template #bodyCell="{ column, record }"> | ||||||
|  |             <template v-if="column.dataIndex === 'action'"> | ||||||
|  |               <a-popconfirm | ||||||
|  |                 title="确定删除?" | ||||||
|  |                 @confirm="toDelete(record.preview_id)" | ||||||
|  |               > | ||||||
|  |                 <a-button | ||||||
|  |                   type="link" | ||||||
|  |                   @click=" | ||||||
|  |                     (e) => { | ||||||
|  |                       e.stopPropagation(); | ||||||
|  |                     } | ||||||
|  |                   " | ||||||
|  |                 > | ||||||
|  |                   删除 | ||||||
|  |                 </a-button> | ||||||
|  |               </a-popconfirm> | ||||||
|  |             </template> | ||||||
|  |           </template> | ||||||
|  |         </a-table> | ||||||
|  |         <a-pagination | ||||||
|  |           v-model:current="pageState.page" | ||||||
|  |           :total="pageState.total" | ||||||
|  |           :page-size="pageState.perPage" | ||||||
|  |           :hide-on-single-page="false" | ||||||
|  |           size="small" | ||||||
|  |           class="pagination-box" | ||||||
|  |           @change="toGetList" | ||||||
|  |         /> | ||||||
|  |       </div> | ||||||
|  |       <div class="right-box"> | ||||||
|  |         <y-table | ||||||
|  |           v-if="selectViewInfo.type === 'table'" | ||||||
|  |           :preview-id="selectedRowId" | ||||||
|  |           :filter-config="selectViewInfo.filter" | ||||||
|  |           :data-list="selectViewInfo.data" | ||||||
|  |           :column-config="selectViewInfo.header" | ||||||
|  |           :total="selectViewInfo.count" | ||||||
|  |           :title="selectViewInfo.preview_name" | ||||||
|  |           :is-export="selectViewInfo.is_export" | ||||||
|  |           @to-filt=" | ||||||
|  |             (params) => { | ||||||
|  |               toGetViewInfo(params); | ||||||
|  |             } | ||||||
|  |           " | ||||||
|  |         /> | ||||||
|  |         <y-chart | ||||||
|  |           v-else-if="selectViewInfo.type === 'chart'" | ||||||
|  |           :chart-cfg="selectViewInfo.config" | ||||||
|  |           :title="selectViewInfo.preview_name" | ||||||
|  |           :filter-config="selectViewInfo.filter" | ||||||
|  |           @to-filt="toGetViewInfo" | ||||||
|  |         /> | ||||||
|  |         <div class="preview-area" v-else> | ||||||
|  |           <div><BarChartOutlined /></div> | ||||||
|  |           <div>展示区</div> | ||||||
|  |         </div> | ||||||
|  |       </div> | ||||||
|  |     </div> | ||||||
|  |   </div> | ||||||
|  | </template> | ||||||
|  | 
 | ||||||
| <style lang="less" scoped> | <style lang="less" scoped> | ||||||
| .normal-container { | .normal-container { | ||||||
|   height: calc(100vh - 120px); |   height: calc(100vh - 120px); | ||||||
|  | |||||||
| @ -14,7 +14,7 @@ export function getViewList({ modularId, page = 1, perPage = 20 }) { | |||||||
|     params: { |     params: { | ||||||
|       modular_id: modularId, |       modular_id: modularId, | ||||||
|       page, |       page, | ||||||
|       perPage: perPage, |       perPage, | ||||||
|     }, |     }, | ||||||
|   }); |   }); | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,15 +1,22 @@ | |||||||
| { | { | ||||||
|   "extends": "@vue/tsconfig/tsconfig.dom.json", |   "extends": "@vue/tsconfig/tsconfig.dom.json", | ||||||
|   "include": ["env.d.ts", "src/**/*", "src/**/*.vue", "src/**/*.tsx", "components.d.ts", "*.d.ts"], |  | ||||||
|   "exclude": ["src/**/__tests__/*"], |  | ||||||
|   "compilerOptions": { |   "compilerOptions": { | ||||||
|     "composite": true, |     "composite": true, | ||||||
|     "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", |     "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", | ||||||
| 
 | 
 | ||||||
|  |     "target": "esnext", | ||||||
|     "baseUrl": ".", |     "baseUrl": ".", | ||||||
|     "paths": { |     "paths": { | ||||||
|       "@/*": ["./src/*"] |       "@/*": ["./src/*"] | ||||||
|     }, |     } | ||||||
|     "target": "esnext" |   }, | ||||||
|   } |   "include": [ | ||||||
|  |     "env.d.ts", | ||||||
|  |     "src/**/*", | ||||||
|  |     "src/**/*.vue", | ||||||
|  |     "src/**/*.tsx", | ||||||
|  |     "components.d.ts", | ||||||
|  |     "*.d.ts" | ||||||
|  |   ], | ||||||
|  |   "exclude": ["src/**/__tests__/*"] | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,5 +1,4 @@ | |||||||
| { | { | ||||||
|   "files": [], |  | ||||||
|   "references": [ |   "references": [ | ||||||
|     { |     { | ||||||
|       "path": "./tsconfig.node.json" |       "path": "./tsconfig.node.json" | ||||||
| @ -7,5 +6,6 @@ | |||||||
|     { |     { | ||||||
|       "path": "./tsconfig.app.json" |       "path": "./tsconfig.app.json" | ||||||
|     } |     } | ||||||
|   ] |   ], | ||||||
|  |   "files": [] | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,19 +1,19 @@ | |||||||
| { | { | ||||||
|   "extends": "@tsconfig/node20/tsconfig.json", |   "extends": "@tsconfig/node20/tsconfig.json", | ||||||
|  |   "compilerOptions": { | ||||||
|  |     "composite": true, | ||||||
|  |     "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", | ||||||
|  | 
 | ||||||
|  |     "module": "ESNext", | ||||||
|  |     "moduleResolution": "Bundler", | ||||||
|  |     "types": ["node"], | ||||||
|  |     "noEmit": true | ||||||
|  |   }, | ||||||
|   "include": [ |   "include": [ | ||||||
|     "vite.config.*", |     "vite.config.*", | ||||||
|     "vitest.config.*", |     "vitest.config.*", | ||||||
|     "cypress.config.*", |     "cypress.config.*", | ||||||
|     "nightwatch.conf.*", |     "nightwatch.conf.*", | ||||||
|     "playwright.config.*" |     "playwright.config.*" | ||||||
|   ], |   ] | ||||||
|   "compilerOptions": { |  | ||||||
|     "composite": true, |  | ||||||
|     "noEmit": true, |  | ||||||
|     "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", |  | ||||||
| 
 |  | ||||||
|     "module": "ESNext", |  | ||||||
|     "moduleResolution": "Bundler", |  | ||||||
|     "types": ["node"] |  | ||||||
|   } |  | ||||||
| } | } | ||||||
|  | |||||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @ -1,5 +1,3 @@ | |||||||
| // @ts-check
 |  | ||||||
| 
 |  | ||||||
| import { defineConfig } from '@vben/eslint-config'; | import { defineConfig } from '@vben/eslint-config'; | ||||||
| 
 | 
 | ||||||
| export default defineConfig(); | export default defineConfig(); | ||||||
|  | |||||||
| @ -33,6 +33,8 @@ const customConfig: Linter.Config[] = [ | |||||||
|     files: ['apps/**/**'], |     files: ['apps/**/**'], | ||||||
|     ignores: restrictedImportIgnores, |     ignores: restrictedImportIgnores, | ||||||
|     rules: { |     rules: { | ||||||
|  |       'n/prefer-global/process': 'off', | ||||||
|  |       'no-console': 'off', | ||||||
|       'no-restricted-imports': [ |       'no-restricted-imports': [ | ||||||
|         'error', |         'error', | ||||||
|         { |         { | ||||||
| @ -61,6 +63,7 @@ const customConfig: Linter.Config[] = [ | |||||||
|         }, |         }, | ||||||
|       ], |       ], | ||||||
|       'perfectionist/sort-interfaces': 'off', |       'perfectionist/sort-interfaces': 'off', | ||||||
|  |       'vue/html-closing-bracket-newline': 'off', | ||||||
|     }, |     }, | ||||||
|   }, |   }, | ||||||
|   { |   { | ||||||
|  | |||||||
							
								
								
									
										24
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								package.json
									
									
									
									
									
								
							| @ -1,27 +1,16 @@ | |||||||
| { | { | ||||||
|   "name": "vben-admin-monorepo", |   "name": "y-code-monorepo", | ||||||
|   "version": "5.5.3", |   "version": "1.0.0-alpha.1", | ||||||
|   "private": true, |   "private": true, | ||||||
|   "keywords": [ |   "keywords": [ | ||||||
|     "monorepo", |     "monorepo", | ||||||
|     "turbo", |     "turbo", | ||||||
|     "vben", |  | ||||||
|     "vben admin", |  | ||||||
|     "vben pro", |  | ||||||
|     "vue", |     "vue", | ||||||
|     "vue admin", |     "low-code" | ||||||
|     "vue vben admin", |  | ||||||
|     "vue vben admin pro", |  | ||||||
|     "vue3" |  | ||||||
|   ], |   ], | ||||||
|   "homepage": "https://github.com/vbenjs/vue-vben-admin", |  | ||||||
|   "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", |  | ||||||
|   "repository": "vbenjs/vue-vben-admin.git", |  | ||||||
|   "license": "MIT", |  | ||||||
|   "author": { |   "author": { | ||||||
|     "name": "vben", |     "name": "wangxuefeng", | ||||||
|     "email": "ann.vben@gmail.com", |     "email": "wangxuefeng@shiyue.com" | ||||||
|     "url": "https://github.com/anncwb" |  | ||||||
|   }, |   }, | ||||||
|   "type": "module", |   "type": "module", | ||||||
|   "scripts": { |   "scripts": { | ||||||
| @ -54,7 +43,8 @@ | |||||||
|     "test:unit": "vitest run --dom", |     "test:unit": "vitest run --dom", | ||||||
|     "test:e2e": "turbo run test:e2e", |     "test:e2e": "turbo run test:e2e", | ||||||
|     "update:deps": "npx taze -r -w", |     "update:deps": "npx taze -r -w", | ||||||
|     "version": "pnpm exec changeset version && pnpm install --no-frozen-lockfile" |     "version": "pnpm exec changeset version && pnpm install --no-frozen-lockfile", | ||||||
|  |     "reset": "pnpm run clean && pnpm install" | ||||||
|   }, |   }, | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|     "@changesets/changelog-github": "catalog:", |     "@changesets/changelog-github": "catalog:", | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "@sy/web-vitals", |   "name": "@sy/web-vitals", | ||||||
|   "version": "0.0.1", |   "version": "1.0.0-alpha.1", | ||||||
|   "description": "web vitals", |   "description": "web vitals", | ||||||
|   "private": true, |   "private": true, | ||||||
|   "scripts": { |   "scripts": { | ||||||
| @ -18,11 +18,12 @@ | |||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|     "firebase": "^11.3.1", |     "core-js": "catalog:", | ||||||
|  |     "firebase": "^11.4.0", | ||||||
|     "web-vitals": "^4.2.4" |     "web-vitals": "^4.2.4" | ||||||
|   }, |   }, | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|     "@farmfe/cli": "^1.0.4", |     "@farmfe/cli": "^1.0.4", | ||||||
|     "@farmfe/core": "^1.6.6" |     "@farmfe/core": "^1.6.7" | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,12 +1,12 @@ | |||||||
| { | { | ||||||
|   "compilerOptions": { |   "compilerOptions": { | ||||||
|     "target": "ESNext", |     "target": "ESNext", | ||||||
|     "moduleResolution": "Node", |  | ||||||
|     "module": "ESNext", |     "module": "ESNext", | ||||||
|     "outDir": "dist", |     "moduleResolution": "Node", | ||||||
|     "declaration": true, |  | ||||||
|     "strict": true, |     "strict": true, | ||||||
|     "skipLibCheck": true, |     "useUnknownInCatchVariables": false, | ||||||
|     "useUnknownInCatchVariables": false |     "declaration": true, | ||||||
|  |     "outDir": "dist", | ||||||
|  |     "skipLibCheck": true | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
							
								
								
									
										464
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										464
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							| @ -171,6 +171,9 @@ catalogs: | |||||||
|     consola: |     consola: | ||||||
|       specifier: ^3.4.0 |       specifier: ^3.4.0 | ||||||
|       version: 3.4.0 |       version: 3.4.0 | ||||||
|  |     core-js: | ||||||
|  |       specifier: ^3.41.0 | ||||||
|  |       version: 3.41.0 | ||||||
|     cross-env: |     cross-env: | ||||||
|       specifier: ^7.0.3 |       specifier: ^7.0.3 | ||||||
|       version: 7.0.3 |       version: 7.0.3 | ||||||
| @ -608,38 +611,38 @@ importers: | |||||||
|   apps/designer: |   apps/designer: | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@vtj/core': |       '@vtj/core': | ||||||
|         specifier: ^0.10.10 |         specifier: ^0.10.12 | ||||||
|         version: 0.10.10 |         version: 0.10.12 | ||||||
|       '@vtj/designer': |       '@vtj/designer': | ||||||
|         specifier: 0.10.10 |         specifier: 0.10.12 | ||||||
|         version: 0.10.10(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2)) |         version: 0.10.12(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2)) | ||||||
|       '@vtj/icons': |       '@vtj/icons': | ||||||
|         specifier: 0.10.10 |         specifier: 0.10.12 | ||||||
|         version: 0.10.10(vue@3.5.13(typescript@5.8.2)) |         version: 0.10.12(vue@3.5.13(typescript@5.8.2)) | ||||||
|       '@vtj/local': |       '@vtj/local': | ||||||
|         specifier: ^0.10.10 |         specifier: ^0.10.12 | ||||||
|         version: 0.10.10 |         version: 0.10.12 | ||||||
|       '@vtj/materials': |       '@vtj/materials': | ||||||
|         specifier: ^0.10.10 |         specifier: ^0.10.12 | ||||||
|         version: 0.10.10 |         version: 0.10.12 | ||||||
|       '@vtj/node': |       '@vtj/node': | ||||||
|         specifier: 0.10.2 |         specifier: 0.10.2 | ||||||
|         version: 0.10.2 |         version: 0.10.2 | ||||||
|       '@vtj/pro': |       '@vtj/pro': | ||||||
|         specifier: ^0.10.10 |         specifier: ^0.10.12 | ||||||
|         version: 0.10.10(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2)) |         version: 0.10.12(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2)) | ||||||
|       '@vtj/renderer': |       '@vtj/renderer': | ||||||
|         specifier: ^0.10.10 |         specifier: ^0.10.12 | ||||||
|         version: 0.10.10 |         version: 0.10.12 | ||||||
|       '@vtj/ui': |       '@vtj/ui': | ||||||
|         specifier: ^0.10.10 |         specifier: ^0.10.12 | ||||||
|         version: 0.10.10(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2)) |         version: 0.10.12(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2)) | ||||||
|       '@vtj/utils': |       '@vtj/utils': | ||||||
|         specifier: 0.10.10 |         specifier: 0.10.12 | ||||||
|         version: 0.10.10 |         version: 0.10.12 | ||||||
|       '@vtj/web': |       '@vtj/web': | ||||||
|         specifier: ^0.10.10 |         specifier: ^0.10.12 | ||||||
|         version: 0.10.10(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2)) |         version: 0.10.12(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2)) | ||||||
|       axios: |       axios: | ||||||
|         specifier: ^1.8.1 |         specifier: ^1.8.1 | ||||||
|         version: 1.8.2(debug@4.4.0) |         version: 1.8.2(debug@4.4.0) | ||||||
| @ -670,7 +673,7 @@ importers: | |||||||
|     devDependencies: |     devDependencies: | ||||||
|       '@vtj/cli': |       '@vtj/cli': | ||||||
|         specifier: ^0.10.2 |         specifier: ^0.10.2 | ||||||
|         version: 0.10.2(@nuxt/kit@3.16.0(magicast@0.3.5))(@types/less@3.0.8)(happy-dom@16.8.1)(jiti@2.4.2)(less@4.2.2)(rollup@3.29.5)(vue@3.5.13(typescript@5.8.2))(yaml@2.7.0) |         version: 0.10.2(@nuxt/kit@3.16.0(magicast@0.3.5))(@types/less@3.0.8)(happy-dom@16.8.1)(jiti@2.4.2)(less@4.2.2)(rollup@4.35.0)(vue@3.5.13(typescript@5.8.2))(yaml@2.7.0) | ||||||
|       vite: |       vite: | ||||||
|         specifier: 'catalog:' |         specifier: 'catalog:' | ||||||
|         version: 6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0) |         version: 6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0) | ||||||
| @ -772,29 +775,29 @@ importers: | |||||||
|         specifier: ^5.66.9 |         specifier: ^5.66.9 | ||||||
|         version: 5.67.2(vue@3.5.13(typescript@5.8.2)) |         version: 5.67.2(vue@3.5.13(typescript@5.8.2)) | ||||||
|       '@vtj/core': |       '@vtj/core': | ||||||
|         specifier: ^0.10.10 |         specifier: ^0.10.12 | ||||||
|         version: 0.10.10 |         version: 0.10.12 | ||||||
|       '@vtj/icons': |       '@vtj/icons': | ||||||
|         specifier: 0.10.10 |         specifier: 0.10.12 | ||||||
|         version: 0.10.10(vue@3.5.13(typescript@5.8.2)) |         version: 0.10.12(vue@3.5.13(typescript@5.8.2)) | ||||||
|       '@vtj/materials': |       '@vtj/materials': | ||||||
|         specifier: ^0.10.10 |         specifier: ^0.10.12 | ||||||
|         version: 0.10.10 |         version: 0.10.12 | ||||||
|       '@vtj/pro': |       '@vtj/pro': | ||||||
|         specifier: ^0.10.10 |         specifier: ^0.10.12 | ||||||
|         version: 0.10.10(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2)) |         version: 0.10.12(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2)) | ||||||
|       '@vtj/renderer': |       '@vtj/renderer': | ||||||
|         specifier: ^0.10.10 |         specifier: ^0.10.12 | ||||||
|         version: 0.10.10 |         version: 0.10.12 | ||||||
|       '@vtj/ui': |       '@vtj/ui': | ||||||
|         specifier: ^0.10.10 |         specifier: ^0.10.12 | ||||||
|         version: 0.10.10(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2)) |         version: 0.10.12(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2)) | ||||||
|       '@vtj/utils': |       '@vtj/utils': | ||||||
|         specifier: ^0.10.10 |         specifier: ^0.10.12 | ||||||
|         version: 0.10.10 |         version: 0.10.12 | ||||||
|       '@vtj/web': |       '@vtj/web': | ||||||
|         specifier: ^0.10.10 |         specifier: ^0.10.12 | ||||||
|         version: 0.10.10(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2)) |         version: 0.10.12(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2)) | ||||||
|       axios: |       axios: | ||||||
|         specifier: 'catalog:' |         specifier: 'catalog:' | ||||||
|         version: 1.8.2(debug@4.4.0) |         version: 1.8.2(debug@4.4.0) | ||||||
| @ -821,14 +824,17 @@ importers: | |||||||
|         specifier: ^1.0.4 |         specifier: ^1.0.4 | ||||||
|         version: 1.0.4 |         version: 1.0.4 | ||||||
|       '@farmfe/core': |       '@farmfe/core': | ||||||
|         specifier: ^1.6.6 |         specifier: ^1.6.7 | ||||||
|         version: 1.6.7 |         version: 1.6.7 | ||||||
|       '@vitejs/plugin-vue': |       '@vitejs/plugin-vue': | ||||||
|         specifier: ^5.2.1 |         specifier: ^5.2.1 | ||||||
|         version: 5.2.1(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)) |         version: 5.2.1(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)) | ||||||
|       '@vtj/cli': |       '@vtj/cli': | ||||||
|         specifier: ^0.10.2 |         specifier: ^0.10.2 | ||||||
|         version: 0.10.2(@types/less@3.0.8)(happy-dom@16.8.1)(jiti@2.4.2)(less@4.2.2)(rollup@4.35.0)(vue@3.5.13(typescript@5.8.2))(yaml@2.7.0) |         version: 0.10.2(@types/less@3.0.8)(happy-dom@16.8.1)(jiti@2.4.2)(less@4.2.2)(rollup@3.29.5)(vue@3.5.13(typescript@5.8.2))(yaml@2.7.0) | ||||||
|  |       vite: | ||||||
|  |         specifier: 'catalog:' | ||||||
|  |         version: 6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0) | ||||||
|       vite-plugin-mkcert: |       vite-plugin-mkcert: | ||||||
|         specifier: 'catalog:' |         specifier: 'catalog:' | ||||||
|         version: 1.17.7(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)) |         version: 1.17.7(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)) | ||||||
| @ -891,7 +897,7 @@ importers: | |||||||
|         specifier: ^1.0.4 |         specifier: ^1.0.4 | ||||||
|         version: 1.0.4 |         version: 1.0.4 | ||||||
|       '@farmfe/core': |       '@farmfe/core': | ||||||
|         specifier: ^1.6.6 |         specifier: ^1.6.7 | ||||||
|         version: 1.6.7 |         version: 1.6.7 | ||||||
|       '@rushstack/eslint-patch': |       '@rushstack/eslint-patch': | ||||||
|         specifier: ^1.10.5 |         specifier: ^1.10.5 | ||||||
| @ -1268,7 +1274,7 @@ importers: | |||||||
|         version: 0.21.1(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0))(workbox-build@7.3.0(@types/babel__core@7.20.5))(workbox-window@7.3.0) |         version: 0.21.1(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0))(workbox-build@7.3.0(@types/babel__core@7.20.5))(workbox-window@7.3.0) | ||||||
|       vite-plugin-vue-devtools: |       vite-plugin-vue-devtools: | ||||||
|         specifier: 'catalog:' |         specifier: 'catalog:' | ||||||
|         version: 7.7.2(rollup@4.35.0)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)) |         version: 7.7.2(@nuxt/kit@3.16.0(magicast@0.3.5))(rollup@4.35.0)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)) | ||||||
|     devDependencies: |     devDependencies: | ||||||
|       '@pnpm/workspace.read-manifest': |       '@pnpm/workspace.read-manifest': | ||||||
|         specifier: 'catalog:' |         specifier: 'catalog:' | ||||||
| @ -1915,8 +1921,11 @@ importers: | |||||||
| 
 | 
 | ||||||
|   packages/web-vitals: |   packages/web-vitals: | ||||||
|     dependencies: |     dependencies: | ||||||
|  |       core-js: | ||||||
|  |         specifier: 'catalog:' | ||||||
|  |         version: 3.41.0 | ||||||
|       firebase: |       firebase: | ||||||
|         specifier: ^11.3.1 |         specifier: ^11.4.0 | ||||||
|         version: 11.4.0 |         version: 11.4.0 | ||||||
|       web-vitals: |       web-vitals: | ||||||
|         specifier: ^4.2.4 |         specifier: ^4.2.4 | ||||||
| @ -1928,6 +1937,9 @@ importers: | |||||||
|       '@farmfe/core': |       '@farmfe/core': | ||||||
|         specifier: ^1.6.6 |         specifier: ^1.6.6 | ||||||
|         version: 1.6.7 |         version: 1.6.7 | ||||||
|  |       vite: | ||||||
|  |         specifier: 'catalog:' | ||||||
|  |         version: 6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0) | ||||||
| 
 | 
 | ||||||
|   scripts/turbo-run: |   scripts/turbo-run: | ||||||
|     dependencies: |     dependencies: | ||||||
| @ -5321,8 +5333,8 @@ packages: | |||||||
|   '@vtj/base@0.10.1': |   '@vtj/base@0.10.1': | ||||||
|     resolution: {integrity: sha512-iFbpzjqJiLKEXJiMHUCfO/W+lcJ5df/OdHE7eiqhE8YZ4P28XTQz7sUNzXat6tr/II8opiNT9b/RoN1+lpvpBQ==} |     resolution: {integrity: sha512-iFbpzjqJiLKEXJiMHUCfO/W+lcJ5df/OdHE7eiqhE8YZ4P28XTQz7sUNzXat6tr/II8opiNT9b/RoN1+lpvpBQ==} | ||||||
| 
 | 
 | ||||||
|   '@vtj/charts@0.10.10': |   '@vtj/charts@0.10.12': | ||||||
|     resolution: {integrity: sha512-v72V5u9Xs/MHJqbvbmttN//Ztnd0xwyJVMkSJYr9rf6737I7MvKWBivLSXS40ttHPvSNxmFS9SG6NGyYux2FXQ==} |     resolution: {integrity: sha512-v3d9V8TmemO7L2KfhVcTMOSnEZWrJ4vyhqevc292ZgLO2amQaNy+HjL0gLwdtA8v6drda8A5JUcOO9Tax/45dw==} | ||||||
|     engines: {node: '>=16.0.0'} |     engines: {node: '>=16.0.0'} | ||||||
| 
 | 
 | ||||||
|   '@vtj/cli@0.10.2': |   '@vtj/cli@0.10.2': | ||||||
| @ -5330,48 +5342,48 @@ packages: | |||||||
|     engines: {node: '>=20.0.0'} |     engines: {node: '>=20.0.0'} | ||||||
|     hasBin: true |     hasBin: true | ||||||
| 
 | 
 | ||||||
|   '@vtj/coder@0.10.10': |   '@vtj/coder@0.10.12': | ||||||
|     resolution: {integrity: sha512-P0O0arJ0qs6KJMdYHIcqAYnF6N0sJaxpNgCtc3Zjtozulvtw9ma7qVZmbV4PZok9F1IvxmL1iHHtj/Dvb/4vzA==} |     resolution: {integrity: sha512-UOOwjC/eEkARyEKMqUSzr5gFcOWXJ23xbFF7Bo8QQ3ddz/YSBwmZu1xE71CRGGGV6uB6mXZaruzrEykm9v4N2A==} | ||||||
| 
 | 
 | ||||||
|   '@vtj/core@0.10.10': |   '@vtj/core@0.10.12': | ||||||
|     resolution: {integrity: sha512-YDpszj822LjhT9MPqCAn+haaBn4RLv7yDLRBw2eeebWVMstnGuydRYlELiSHjOfA+MA8ue6ysyQXwo2y0dpNOw==} |     resolution: {integrity: sha512-+wXpOB9Y4/5PIsIt72l3HhMjDUu/+6jCP9MCcirj2Rw8blxiZy84jK1oMqw731NMa7RTF5Us6bSO79pzp5M3NA==} | ||||||
| 
 | 
 | ||||||
|   '@vtj/designer@0.10.10': |   '@vtj/designer@0.10.12': | ||||||
|     resolution: {integrity: sha512-aSJ8DekcDuMWEKRIUZolVCimApp3i9+zbZ5El8cKDiQwj04+aGDjnw1AgvUVmofBznLqYoL6aJfqCI4yQR6XiQ==} |     resolution: {integrity: sha512-ftCQ9SVYnoYZW7ORzcTzMtBr2uROdgvAyK78NUFsTfj73A29fRwvlPWnZXx0+XabdR0PJUHDSkI89OVS+WhgLQ==} | ||||||
| 
 | 
 | ||||||
|   '@vtj/icons@0.10.10': |   '@vtj/icons@0.10.12': | ||||||
|     resolution: {integrity: sha512-UNr2i5tX/KZ0SATmlA1S7mAq/W4VCC9z/BJLV5qNb+0xxwmRAIizbKalFTLA2CGJdWVcjJoZmzxFxcpx9LAL2g==} |     resolution: {integrity: sha512-chyg2slVnSdBnwlP8ABw+AnqY9FV6jiv9VlEmc/SLT9w2utv2m9SrI+jeDsAMnnoHBzlvATBalKl3j80JI0W3w==} | ||||||
| 
 | 
 | ||||||
|   '@vtj/local@0.10.10': |   '@vtj/local@0.10.12': | ||||||
|     resolution: {integrity: sha512-bNjjqNvrcassFja7IWLA22LU8enBQdFmfw8J+RviJDXE6FXrWi9duT7Ep5gPXD7BKNzvfdisMVjq4/zxqFLSfA==} |     resolution: {integrity: sha512-wQc83ArYSnkCXVpMULSM9QmyBwh50o9UI6ghjDzn06fKNyH0VAKKK6WhCUZ2ZwfMi9CFMTs233GmuUn5Aaa8MQ==} | ||||||
| 
 | 
 | ||||||
|   '@vtj/materials@0.10.10': |   '@vtj/materials@0.10.12': | ||||||
|     resolution: {integrity: sha512-+q52wiJpjP0C+MRZcZthUmJWKbDlXxUL59ExzH9bdDmjVQeMpvjoI0cEijb/eW5EapOUXekbkXGd2itpQhRx7w==} |     resolution: {integrity: sha512-nn4ezXjWM/UtpqS0+uUariP1C8oCEIgISpLso1Otg4wtMpmy1SO8rRCrZIk9bcPYBnmbsla4qcQLs5t9N/6NxA==} | ||||||
| 
 | 
 | ||||||
|   '@vtj/node@0.10.2': |   '@vtj/node@0.10.2': | ||||||
|     resolution: {integrity: sha512-mcYc6ip6+p6xenwj6lkAFOetSeS6kuDbZivztDQnvFZckp+Ba9NW9BFAzU0kbl4uhQYWHQ+/g887HitBcq8n4w==} |     resolution: {integrity: sha512-mcYc6ip6+p6xenwj6lkAFOetSeS6kuDbZivztDQnvFZckp+Ba9NW9BFAzU0kbl4uhQYWHQ+/g887HitBcq8n4w==} | ||||||
| 
 | 
 | ||||||
|   '@vtj/parser@0.10.10': |   '@vtj/parser@0.10.12': | ||||||
|     resolution: {integrity: sha512-I70MsGNowJFkWwG1LHnRwv1MnCF9amPWL27TaxmBF974IlFUa7XF0O8jVfjG1vkgNMsYux/WG+azwaaKqcUXsg==} |     resolution: {integrity: sha512-H1C7OEYPtFU1FR7c5UqOwFqJwHX4+cERsVy6HHwOUpmNm6tLK2TDo6KP0xwoSBbpocn93rtiA4nJDif6Fxq+iw==} | ||||||
| 
 | 
 | ||||||
|   '@vtj/pro@0.10.10': |   '@vtj/pro@0.10.12': | ||||||
|     resolution: {integrity: sha512-uu2VP9DIU24VzQORvXXEE9vv1CVeqMSEqWwy8eWclFaWaCr34g/HIhsAeDZOtK553d7khkOyqr8EnFQDvg9cvQ==} |     resolution: {integrity: sha512-fzQZMs6CFC1RJE4V15uID8NAYsxrF46ko59vigDagCG86xwWQpqC7cELERz88tCzyeDyr/d8wNzKd7yO+IHWiw==} | ||||||
| 
 | 
 | ||||||
|   '@vtj/renderer@0.10.10': |   '@vtj/renderer@0.10.12': | ||||||
|     resolution: {integrity: sha512-8x1wKsqTTM9mcgxef+KkOlcleJZhZlDFFIx9fN68V7JlCM/88tfuLDJbBw+ehAXHm/oVUkJfIqY2i5KWsFiOZw==} |     resolution: {integrity: sha512-/LU9ABOgHP1uONeYo2Ck24roA3bS4Ugdnggy+VUn/AaSpBcPQI6RTloZc6dMiLtyzwuLBhKZBO4LpyoYLaXjIA==} | ||||||
| 
 | 
 | ||||||
|   '@vtj/ui@0.10.10': |   '@vtj/ui@0.10.12': | ||||||
|     resolution: {integrity: sha512-4dd0nYCTBuuhtDoA8QqmD7285qSiVpksi7x4xzJfKwm5ysPBlE/LNg1SelQtNo1CvviNQ/nRaiKvWoATV0FaPQ==} |     resolution: {integrity: sha512-1tKv/AxKVMJ24r/sAUx+S4zuQiwQO0/tc+5XUeyv2DilH7ZyEMlqCWOZdsDRaq2Ns0W7PRQY11hhxw2d63R5iQ==} | ||||||
|     engines: {node: '>=16.0.0'} |     engines: {node: '>=16.0.0'} | ||||||
| 
 | 
 | ||||||
|   '@vtj/uni@0.10.10': |   '@vtj/uni@0.10.12': | ||||||
|     resolution: {integrity: sha512-W3aUMu6u7NHeBKWo6JqkoAO7okiFVjgbGMKeRMzpPHN0W+ZKHIRK9aKwboaHujRGK0koQPV4jF0FmlPuFJ9v1Q==} |     resolution: {integrity: sha512-IKXGGJqi3LCo5qRHKPmZxLP/SNoxJkSqA6y/uF5LNsRuYH/67GfKD1BTuwc//CPdSmEBTEFj4JMAYCKFnMC2Hw==} | ||||||
| 
 | 
 | ||||||
|   '@vtj/utils@0.10.10': |   '@vtj/utils@0.10.12': | ||||||
|     resolution: {integrity: sha512-D3lFczr7WxsUcPeQJ35QVCUedGQUTtj6UfHnXNIvU7/qph1lkinon/b+nqCxEIikBs8QTyR8lZqxmytfs3ivDw==} |     resolution: {integrity: sha512-lPtDEPHrTcCFqO4Sz/ZLCKD27m2/9hef5hF5QACdvawdXK3OoAxBg8QF60KODIqABKWZuhzAzVATr2fyHqcH3Q==} | ||||||
| 
 | 
 | ||||||
|   '@vtj/web@0.10.10': |   '@vtj/web@0.10.12': | ||||||
|     resolution: {integrity: sha512-17DWMOP4Az6wfpCmpIgWB3Cs/UfGeR7I8DhkLMs9iXQ3xr3w9D6Id8yiDQXW/0ZkAyb5dy17GKtG40Oc5hPGlQ==} |     resolution: {integrity: sha512-IhSdS9wmEd86FgrcGmJR6BpHMF9rMIYKKlG9qexgGn1ABMU55/e4QMbEyn28f6PNLFnEjrg0WA1LPEJ2Qht6zg==} | ||||||
| 
 | 
 | ||||||
|   '@vue/babel-helper-vue-transform-on@1.3.0': |   '@vue/babel-helper-vue-transform-on@1.3.0': | ||||||
|     resolution: {integrity: sha512-vrNyYNQcz1gfc87uuN+Z+On9fFOBQTYRlTUEDovpeCmjuwH83lAm6YM0VBvTx6eRTHg3SU5jP2CD+kSXY30PGg==} |     resolution: {integrity: sha512-vrNyYNQcz1gfc87uuN+Z+On9fFOBQTYRlTUEDovpeCmjuwH83lAm6YM0VBvTx6eRTHg3SU5jP2CD+kSXY30PGg==} | ||||||
| @ -5841,6 +5853,13 @@ packages: | |||||||
|     peerDependencies: |     peerDependencies: | ||||||
|       postcss: ^8.1.0 |       postcss: ^8.1.0 | ||||||
| 
 | 
 | ||||||
|  |   autoprefixer@10.4.21: | ||||||
|  |     resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} | ||||||
|  |     engines: {node: ^10 || ^12 || >=14} | ||||||
|  |     hasBin: true | ||||||
|  |     peerDependencies: | ||||||
|  |       postcss: ^8.1.0 | ||||||
|  | 
 | ||||||
|   available-typed-arrays@1.0.7: |   available-typed-arrays@1.0.7: | ||||||
|     resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} |     resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} | ||||||
|     engines: {node: '>= 0.4'} |     engines: {node: '>= 0.4'} | ||||||
| @ -6095,6 +6114,9 @@ packages: | |||||||
|   caniuse-lite@1.0.30001702: |   caniuse-lite@1.0.30001702: | ||||||
|     resolution: {integrity: sha512-LoPe/D7zioC0REI5W73PeR1e1MLCipRGq/VkovJnd6Df+QVqT+vT33OXCp8QUd7kA7RZrHWxb1B36OQKI/0gOA==} |     resolution: {integrity: sha512-LoPe/D7zioC0REI5W73PeR1e1MLCipRGq/VkovJnd6Df+QVqT+vT33OXCp8QUd7kA7RZrHWxb1B36OQKI/0gOA==} | ||||||
| 
 | 
 | ||||||
|  |   caniuse-lite@1.0.30001703: | ||||||
|  |     resolution: {integrity: sha512-kRlAGTRWgPsOj7oARC9m1okJEXdL/8fekFVcxA8Hl7GH4r/sN4OJn/i6Flde373T50KS7Y37oFbMwlE8+F42kQ==} | ||||||
|  | 
 | ||||||
|   ccount@2.0.1: |   ccount@2.0.1: | ||||||
|     resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} |     resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} | ||||||
| 
 | 
 | ||||||
| @ -9158,6 +9180,10 @@ packages: | |||||||
|     resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} |     resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} | ||||||
|     engines: {node: '>= 0.6'} |     engines: {node: '>= 0.6'} | ||||||
| 
 | 
 | ||||||
|  |   mime-db@1.53.0: | ||||||
|  |     resolution: {integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==} | ||||||
|  |     engines: {node: '>= 0.6'} | ||||||
|  | 
 | ||||||
|   mime-types@2.1.35: |   mime-types@2.1.35: | ||||||
|     resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} |     resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} | ||||||
|     engines: {node: '>= 0.6'} |     engines: {node: '>= 0.6'} | ||||||
| @ -11716,11 +11742,11 @@ packages: | |||||||
|     resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} |     resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} | ||||||
|     engines: {node: '>=12'} |     engines: {node: '>=12'} | ||||||
| 
 | 
 | ||||||
|   tldts-core@6.1.83: |   tldts-core@6.1.84: | ||||||
|     resolution: {integrity: sha512-I2wb9OJc6rXyh9d4aInhSNWChNI+ra6qDnFEGEwe9OoA68lE4Temw29bOkf1Uvwt8VZS079t1BFZdXVBmmB4dw==} |     resolution: {integrity: sha512-NaQa1W76W2aCGjXybvnMYzGSM4x8fvG2AN/pla7qxcg0ZHbooOPhA8kctmOZUDfZyhDL27OGNbwAeig8P4p1vg==} | ||||||
| 
 | 
 | ||||||
|   tldts@6.1.83: |   tldts@6.1.84: | ||||||
|     resolution: {integrity: sha512-FHxxNJJ0WNsEBPHyC1oesQb3rRoxpuho/z2g3zIIAhw1WHJeQsUzK1jYK8TI1/iClaa4fS3Z2TCA9mtxXsENSg==} |     resolution: {integrity: sha512-aRGIbCIF3teodtUFAYSdQONVmDRy21REM3o6JnqWn5ZkQBJJ4gHxhw6OfwQ+WkSAi3ASamrS4N4nyazWx6uTYg==} | ||||||
|     hasBin: true |     hasBin: true | ||||||
| 
 | 
 | ||||||
|   tmp@0.0.33: |   tmp@0.0.33: | ||||||
| @ -15300,7 +15326,7 @@ snapshots: | |||||||
|   '@grpc/grpc-js@1.9.15': |   '@grpc/grpc-js@1.9.15': | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@grpc/proto-loader': 0.7.13 |       '@grpc/proto-loader': 0.7.13 | ||||||
|       '@types/node': 20.17.24 |       '@types/node': 22.13.10 | ||||||
| 
 | 
 | ||||||
|   '@grpc/proto-loader@0.7.13': |   '@grpc/proto-loader@0.7.13': | ||||||
|     dependencies: |     dependencies: | ||||||
| @ -16558,15 +16584,15 @@ snapshots: | |||||||
|   '@types/body-parser@1.19.5': |   '@types/body-parser@1.19.5': | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@types/connect': 3.4.38 |       '@types/connect': 3.4.38 | ||||||
|       '@types/node': 20.17.24 |       '@types/node': 22.13.10 | ||||||
| 
 | 
 | ||||||
|   '@types/connect@3.4.38': |   '@types/connect@3.4.38': | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@types/node': 20.17.24 |       '@types/node': 22.13.10 | ||||||
| 
 | 
 | ||||||
|   '@types/conventional-commits-parser@5.0.1': |   '@types/conventional-commits-parser@5.0.1': | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@types/node': 20.17.24 |       '@types/node': 22.13.10 | ||||||
| 
 | 
 | ||||||
|   '@types/css-font-loading-module@0.0.7': {} |   '@types/css-font-loading-module@0.0.7': {} | ||||||
| 
 | 
 | ||||||
| @ -16586,7 +16612,7 @@ snapshots: | |||||||
|   '@types/fs-extra@11.0.4': |   '@types/fs-extra@11.0.4': | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@types/jsonfile': 6.1.4 |       '@types/jsonfile': 6.1.4 | ||||||
|       '@types/node': 20.17.24 |       '@types/node': 22.13.10 | ||||||
| 
 | 
 | ||||||
|   '@types/hast@3.0.4': |   '@types/hast@3.0.4': | ||||||
|     dependencies: |     dependencies: | ||||||
| @ -16604,7 +16630,7 @@ snapshots: | |||||||
| 
 | 
 | ||||||
|   '@types/jsonfile@6.1.4': |   '@types/jsonfile@6.1.4': | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@types/node': 20.17.24 |       '@types/node': 22.13.10 | ||||||
| 
 | 
 | ||||||
|   '@types/less@3.0.8': {} |   '@types/less@3.0.8': {} | ||||||
| 
 | 
 | ||||||
| @ -16682,12 +16708,12 @@ snapshots: | |||||||
|   '@types/send@0.17.4': |   '@types/send@0.17.4': | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@types/mime': 1.3.5 |       '@types/mime': 1.3.5 | ||||||
|       '@types/node': 20.17.24 |       '@types/node': 22.13.10 | ||||||
| 
 | 
 | ||||||
|   '@types/serve-static@1.15.7': |   '@types/serve-static@1.15.7': | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@types/http-errors': 2.0.4 |       '@types/http-errors': 2.0.4 | ||||||
|       '@types/node': 20.17.24 |       '@types/node': 22.13.10 | ||||||
|       '@types/send': 0.17.4 |       '@types/send': 0.17.4 | ||||||
| 
 | 
 | ||||||
|   '@types/sortablejs@1.15.8': {} |   '@types/sortablejs@1.15.8': {} | ||||||
| @ -17065,80 +17091,17 @@ snapshots: | |||||||
|       '@types/numeral': 2.0.5 |       '@types/numeral': 2.0.5 | ||||||
|       reflect-metadata: 0.2.2 |       reflect-metadata: 0.2.2 | ||||||
| 
 | 
 | ||||||
|   '@vtj/charts@0.10.10(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2))': |   '@vtj/charts@0.10.12(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2))': | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@vtj/icons': 0.10.10(vue@3.5.13(typescript@5.8.2)) |       '@vtj/icons': 0.10.12(vue@3.5.13(typescript@5.8.2)) | ||||||
|       '@vtj/utils': 0.10.10 |       '@vtj/utils': 0.10.12 | ||||||
|       '@vueuse/core': 12.7.0(typescript@5.8.2) |       '@vueuse/core': 12.7.0(typescript@5.8.2) | ||||||
|       echarts: 5.6.0 |       echarts: 5.6.0 | ||||||
|     transitivePeerDependencies: |     transitivePeerDependencies: | ||||||
|       - typescript |       - typescript | ||||||
|       - vue |       - vue | ||||||
| 
 | 
 | ||||||
|   '@vtj/cli@0.10.2(@nuxt/kit@3.16.0(magicast@0.3.5))(@types/less@3.0.8)(happy-dom@16.8.1)(jiti@2.4.2)(less@4.2.2)(rollup@3.29.5)(vue@3.5.13(typescript@5.8.2))(yaml@2.7.0)': |   '@vtj/cli@0.10.2(@nuxt/kit@3.16.0(magicast@0.3.5))(@types/less@3.0.8)(happy-dom@16.8.1)(jiti@2.4.2)(less@4.2.2)(rollup@4.35.0)(vue@3.5.13(typescript@5.8.2))(yaml@2.7.0)': | ||||||
|     dependencies: |  | ||||||
|       '@babel/core': 7.26.9 |  | ||||||
|       '@babel/preset-env': 7.26.9(@babel/core@7.26.9) |  | ||||||
|       '@babel/types': 7.26.9 |  | ||||||
|       '@rollup/plugin-babel': 6.0.4(@babel/core@7.26.9)(@types/babel__core@7.20.5)(rollup@3.29.5) |  | ||||||
|       '@types/babel__core': 7.20.5 |  | ||||||
|       '@types/body-parser': 1.19.5 |  | ||||||
|       '@types/node': 22.13.10 |  | ||||||
|       '@types/serve-static': 1.15.7 |  | ||||||
|       '@vitejs/plugin-basic-ssl': 2.0.0(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)) |  | ||||||
|       '@vitejs/plugin-legacy': 6.0.2(terser@5.39.0)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)) |  | ||||||
|       '@vitejs/plugin-vue': 5.2.1(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)) |  | ||||||
|       '@vitejs/plugin-vue-jsx': 4.1.1(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)) |  | ||||||
|       '@vitest/coverage-v8': 3.0.8(vitest@3.0.8(@types/node@22.13.10)(happy-dom@16.8.1)(jiti@2.4.2)(jsdom@26.0.0)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)) |  | ||||||
|       '@vtj/node': 0.10.2 |  | ||||||
|       '@vue/test-utils': 2.4.6 |  | ||||||
|       body-parser: 1.20.3 |  | ||||||
|       cross-env: 7.0.3 |  | ||||||
|       jsdom: 26.0.0 |  | ||||||
|       memfs: 4.17.0 |  | ||||||
|       rollup-plugin-external-globals: 0.13.0(rollup@3.29.5) |  | ||||||
|       rollup-plugin-visualizer: 5.14.0(rollup@3.29.5) |  | ||||||
|       sass: 1.85.1 |  | ||||||
|       serve-static: 1.16.2 |  | ||||||
|       terser: 5.39.0 |  | ||||||
|       typescript: 5.8.2 |  | ||||||
|       unbuild: 2.0.0(sass@1.85.1)(typescript@5.8.2)(vue-tsc@2.2.8(typescript@5.8.2)) |  | ||||||
|       unplugin-element-plus: 0.9.1 |  | ||||||
|       vite: 6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0) |  | ||||||
|       vite-plugin-cdn-import: 1.0.1(rollup@3.29.5)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)) |  | ||||||
|       vite-plugin-dts: 4.5.3(@types/node@22.13.10)(rollup@3.29.5)(typescript@5.8.2)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)) |  | ||||||
|       vite-plugin-node-polyfills: 0.23.0(rollup@3.29.5)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)) |  | ||||||
|       vite-plugin-vue-devtools: 7.7.2(@nuxt/kit@3.16.0(magicast@0.3.5))(rollup@3.29.5)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)) |  | ||||||
|       vite-plugin-vue-style-bundler: 1.0.9(@types/less@3.0.8)(@vitejs/plugin-vue@5.2.1(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)))(less@4.2.2)(sass@1.85.1)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)) |  | ||||||
|       vitest: 3.0.8(@types/node@22.13.10)(happy-dom@16.8.1)(jiti@2.4.2)(jsdom@26.0.0)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0) |  | ||||||
|       vue-tsc: 2.2.8(typescript@5.8.2) |  | ||||||
|     transitivePeerDependencies: |  | ||||||
|       - '@edge-runtime/vm' |  | ||||||
|       - '@nuxt/kit' |  | ||||||
|       - '@types/debug' |  | ||||||
|       - '@types/less' |  | ||||||
|       - '@vitest/browser' |  | ||||||
|       - '@vitest/ui' |  | ||||||
|       - bufferutil |  | ||||||
|       - canvas |  | ||||||
|       - debug |  | ||||||
|       - happy-dom |  | ||||||
|       - jiti |  | ||||||
|       - less |  | ||||||
|       - lightningcss |  | ||||||
|       - msw |  | ||||||
|       - rolldown |  | ||||||
|       - rollup |  | ||||||
|       - sass-embedded |  | ||||||
|       - stylus |  | ||||||
|       - sugarss |  | ||||||
|       - supports-color |  | ||||||
|       - tsx |  | ||||||
|       - utf-8-validate |  | ||||||
|       - vue |  | ||||||
|       - yaml |  | ||||||
| 
 |  | ||||||
|   '@vtj/cli@0.10.2(@types/less@3.0.8)(happy-dom@16.8.1)(jiti@2.4.2)(less@4.2.2)(rollup@4.35.0)(vue@3.5.13(typescript@5.8.2))(yaml@2.7.0)': |  | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@babel/core': 7.26.9 |       '@babel/core': 7.26.9 | ||||||
|       '@babel/preset-env': 7.26.9(@babel/core@7.26.9) |       '@babel/preset-env': 7.26.9(@babel/core@7.26.9) | ||||||
| @ -17171,7 +17134,7 @@ snapshots: | |||||||
|       vite-plugin-cdn-import: 1.0.1(rollup@4.35.0)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)) |       vite-plugin-cdn-import: 1.0.1(rollup@4.35.0)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)) | ||||||
|       vite-plugin-dts: 4.5.3(@types/node@22.13.10)(rollup@4.35.0)(typescript@5.8.2)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)) |       vite-plugin-dts: 4.5.3(@types/node@22.13.10)(rollup@4.35.0)(typescript@5.8.2)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)) | ||||||
|       vite-plugin-node-polyfills: 0.23.0(rollup@4.35.0)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)) |       vite-plugin-node-polyfills: 0.23.0(rollup@4.35.0)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)) | ||||||
|       vite-plugin-vue-devtools: 7.7.2(rollup@4.35.0)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)) |       vite-plugin-vue-devtools: 7.7.2(@nuxt/kit@3.16.0(magicast@0.3.5))(rollup@4.35.0)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)) | ||||||
|       vite-plugin-vue-style-bundler: 1.0.9(@types/less@3.0.8)(@vitejs/plugin-vue@5.2.1(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)))(less@4.2.2)(sass@1.85.1)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)) |       vite-plugin-vue-style-bundler: 1.0.9(@types/less@3.0.8)(@vitejs/plugin-vue@5.2.1(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)))(less@4.2.2)(sass@1.85.1)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)) | ||||||
|       vitest: 3.0.8(@types/node@22.13.10)(happy-dom@16.8.1)(jiti@2.4.2)(jsdom@26.0.0)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0) |       vitest: 3.0.8(@types/node@22.13.10)(happy-dom@16.8.1)(jiti@2.4.2)(jsdom@26.0.0)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0) | ||||||
|       vue-tsc: 2.2.8(typescript@5.8.2) |       vue-tsc: 2.2.8(typescript@5.8.2) | ||||||
| @ -17201,24 +17164,87 @@ snapshots: | |||||||
|       - vue |       - vue | ||||||
|       - yaml |       - yaml | ||||||
| 
 | 
 | ||||||
|   '@vtj/coder@0.10.10': |   '@vtj/cli@0.10.2(@types/less@3.0.8)(happy-dom@16.8.1)(jiti@2.4.2)(less@4.2.2)(rollup@3.29.5)(vue@3.5.13(typescript@5.8.2))(yaml@2.7.0)': | ||||||
|  |     dependencies: | ||||||
|  |       '@babel/core': 7.26.9 | ||||||
|  |       '@babel/preset-env': 7.26.9(@babel/core@7.26.9) | ||||||
|  |       '@babel/types': 7.26.9 | ||||||
|  |       '@rollup/plugin-babel': 6.0.4(@babel/core@7.26.9)(@types/babel__core@7.20.5)(rollup@3.29.5) | ||||||
|  |       '@types/babel__core': 7.20.5 | ||||||
|  |       '@types/body-parser': 1.19.5 | ||||||
|  |       '@types/node': 22.13.10 | ||||||
|  |       '@types/serve-static': 1.15.7 | ||||||
|  |       '@vitejs/plugin-basic-ssl': 2.0.0(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)) | ||||||
|  |       '@vitejs/plugin-legacy': 6.0.2(terser@5.39.0)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)) | ||||||
|  |       '@vitejs/plugin-vue': 5.2.1(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)) | ||||||
|  |       '@vitejs/plugin-vue-jsx': 4.1.1(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)) | ||||||
|  |       '@vitest/coverage-v8': 3.0.8(vitest@3.0.8(@types/node@22.13.10)(happy-dom@16.8.1)(jiti@2.4.2)(jsdom@26.0.0)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)) | ||||||
|  |       '@vtj/node': 0.10.2 | ||||||
|  |       '@vue/test-utils': 2.4.6 | ||||||
|  |       body-parser: 1.20.3 | ||||||
|  |       cross-env: 7.0.3 | ||||||
|  |       jsdom: 26.0.0 | ||||||
|  |       memfs: 4.17.0 | ||||||
|  |       rollup-plugin-external-globals: 0.13.0(rollup@3.29.5) | ||||||
|  |       rollup-plugin-visualizer: 5.14.0(rollup@3.29.5) | ||||||
|  |       sass: 1.85.1 | ||||||
|  |       serve-static: 1.16.2 | ||||||
|  |       terser: 5.39.0 | ||||||
|  |       typescript: 5.8.2 | ||||||
|  |       unbuild: 2.0.0(sass@1.85.1)(typescript@5.8.2)(vue-tsc@2.2.8(typescript@5.8.2)) | ||||||
|  |       unplugin-element-plus: 0.9.1 | ||||||
|  |       vite: 6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0) | ||||||
|  |       vite-plugin-cdn-import: 1.0.1(rollup@3.29.5)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)) | ||||||
|  |       vite-plugin-dts: 4.5.3(@types/node@22.13.10)(rollup@3.29.5)(typescript@5.8.2)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)) | ||||||
|  |       vite-plugin-node-polyfills: 0.23.0(rollup@3.29.5)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)) | ||||||
|  |       vite-plugin-vue-devtools: 7.7.2(rollup@3.29.5)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)) | ||||||
|  |       vite-plugin-vue-style-bundler: 1.0.9(@types/less@3.0.8)(@vitejs/plugin-vue@5.2.1(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)))(less@4.2.2)(sass@1.85.1)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)) | ||||||
|  |       vitest: 3.0.8(@types/node@22.13.10)(happy-dom@16.8.1)(jiti@2.4.2)(jsdom@26.0.0)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0) | ||||||
|  |       vue-tsc: 2.2.8(typescript@5.8.2) | ||||||
|  |     transitivePeerDependencies: | ||||||
|  |       - '@edge-runtime/vm' | ||||||
|  |       - '@nuxt/kit' | ||||||
|  |       - '@types/debug' | ||||||
|  |       - '@types/less' | ||||||
|  |       - '@vitest/browser' | ||||||
|  |       - '@vitest/ui' | ||||||
|  |       - bufferutil | ||||||
|  |       - canvas | ||||||
|  |       - debug | ||||||
|  |       - happy-dom | ||||||
|  |       - jiti | ||||||
|  |       - less | ||||||
|  |       - lightningcss | ||||||
|  |       - msw | ||||||
|  |       - rolldown | ||||||
|  |       - rollup | ||||||
|  |       - sass-embedded | ||||||
|  |       - stylus | ||||||
|  |       - sugarss | ||||||
|  |       - supports-color | ||||||
|  |       - tsx | ||||||
|  |       - utf-8-validate | ||||||
|  |       - vue | ||||||
|  |       - yaml | ||||||
|  | 
 | ||||||
|  |   '@vtj/coder@0.10.12': | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@vtj/base': 0.10.1 |       '@vtj/base': 0.10.1 | ||||||
|       '@vtj/core': 0.10.10 |       '@vtj/core': 0.10.12 | ||||||
|       prettier: 3.5.3 |       prettier: 3.5.3 | ||||||
| 
 | 
 | ||||||
|   '@vtj/core@0.10.10': |   '@vtj/core@0.10.12': | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@vtj/base': 0.10.1 |       '@vtj/base': 0.10.1 | ||||||
| 
 | 
 | ||||||
|   '@vtj/designer@0.10.10(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2))': |   '@vtj/designer@0.10.12(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2))': | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@vtj/core': 0.10.10 |       '@vtj/core': 0.10.12 | ||||||
|       '@vtj/icons': 0.10.10(vue@3.5.13(typescript@5.8.2)) |       '@vtj/icons': 0.10.12(vue@3.5.13(typescript@5.8.2)) | ||||||
|       '@vtj/renderer': 0.10.10 |       '@vtj/renderer': 0.10.12 | ||||||
|       '@vtj/ui': 0.10.10(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2)) |       '@vtj/ui': 0.10.12(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2)) | ||||||
|       '@vtj/uni': 0.10.10(vue@3.5.13(typescript@5.8.2)) |       '@vtj/uni': 0.10.12(vue@3.5.13(typescript@5.8.2)) | ||||||
|       '@vtj/utils': 0.10.10 |       '@vtj/utils': 0.10.12 | ||||||
|       html2canvas: 1.4.1 |       html2canvas: 1.4.1 | ||||||
|       mockjs: 1.1.0 |       mockjs: 1.1.0 | ||||||
|       monaco-editor: 0.52.2 |       monaco-editor: 0.52.2 | ||||||
| @ -17227,24 +17253,24 @@ snapshots: | |||||||
|       - typescript |       - typescript | ||||||
|       - vue |       - vue | ||||||
| 
 | 
 | ||||||
|   '@vtj/icons@0.10.10(vue@3.5.13(typescript@5.8.2))': |   '@vtj/icons@0.10.12(vue@3.5.13(typescript@5.8.2))': | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@element-plus/icons-vue': 2.3.1(vue@3.5.13(typescript@5.8.2)) |       '@element-plus/icons-vue': 2.3.1(vue@3.5.13(typescript@5.8.2)) | ||||||
|     transitivePeerDependencies: |     transitivePeerDependencies: | ||||||
|       - vue |       - vue | ||||||
| 
 | 
 | ||||||
|   '@vtj/local@0.10.10': |   '@vtj/local@0.10.12': | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@vtj/coder': 0.10.10 |       '@vtj/coder': 0.10.12 | ||||||
|       '@vtj/core': 0.10.10 |       '@vtj/core': 0.10.12 | ||||||
|       '@vtj/node': 0.10.2 |       '@vtj/node': 0.10.2 | ||||||
|       '@vtj/parser': 0.10.10 |       '@vtj/parser': 0.10.12 | ||||||
|       formidable: 3.5.2 |       formidable: 3.5.2 | ||||||
|     transitivePeerDependencies: |     transitivePeerDependencies: | ||||||
|       - debug |       - debug | ||||||
|       - supports-color |       - supports-color | ||||||
| 
 | 
 | ||||||
|   '@vtj/materials@0.10.10': {} |   '@vtj/materials@0.10.12': {} | ||||||
| 
 | 
 | ||||||
|   '@vtj/node@0.10.2': |   '@vtj/node@0.10.2': | ||||||
|     dependencies: |     dependencies: | ||||||
| @ -17255,27 +17281,27 @@ snapshots: | |||||||
|     transitivePeerDependencies: |     transitivePeerDependencies: | ||||||
|       - debug |       - debug | ||||||
| 
 | 
 | ||||||
|   '@vtj/parser@0.10.10': |   '@vtj/parser@0.10.12': | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@babel/generator': 7.26.9 |       '@babel/generator': 7.26.9 | ||||||
|       '@babel/parser': 7.26.9 |       '@babel/parser': 7.26.9 | ||||||
|       '@babel/traverse': 7.26.9 |       '@babel/traverse': 7.26.9 | ||||||
|       '@vtj/base': 0.10.1 |       '@vtj/base': 0.10.1 | ||||||
|       '@vtj/coder': 0.10.10 |       '@vtj/coder': 0.10.12 | ||||||
|       '@vtj/core': 0.10.10 |       '@vtj/core': 0.10.12 | ||||||
|       '@vue/compiler-dom': 3.5.13 |       '@vue/compiler-dom': 3.5.13 | ||||||
|       '@vue/compiler-sfc': 3.5.13 |       '@vue/compiler-sfc': 3.5.13 | ||||||
|     transitivePeerDependencies: |     transitivePeerDependencies: | ||||||
|       - supports-color |       - supports-color | ||||||
| 
 | 
 | ||||||
|   '@vtj/pro@0.10.10(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2))': |   '@vtj/pro@0.10.12(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2))': | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@vtj/core': 0.10.10 |       '@vtj/core': 0.10.12 | ||||||
|       '@vtj/designer': 0.10.10(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2)) |       '@vtj/designer': 0.10.12(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2)) | ||||||
|       '@vtj/local': 0.10.10 |       '@vtj/local': 0.10.12 | ||||||
|       '@vtj/materials': 0.10.10 |       '@vtj/materials': 0.10.12 | ||||||
|       '@vtj/renderer': 0.10.10 |       '@vtj/renderer': 0.10.12 | ||||||
|       '@vtj/uni': 0.10.10(vue@3.5.13(typescript@5.8.2)) |       '@vtj/uni': 0.10.12(vue@3.5.13(typescript@5.8.2)) | ||||||
|     transitivePeerDependencies: |     transitivePeerDependencies: | ||||||
|       - '@vue/composition-api' |       - '@vue/composition-api' | ||||||
|       - debug |       - debug | ||||||
| @ -17283,15 +17309,15 @@ snapshots: | |||||||
|       - typescript |       - typescript | ||||||
|       - vue |       - vue | ||||||
| 
 | 
 | ||||||
|   '@vtj/renderer@0.10.10': |   '@vtj/renderer@0.10.12': | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@vtj/core': 0.10.10 |       '@vtj/core': 0.10.12 | ||||||
|       '@vtj/utils': 0.10.10 |       '@vtj/utils': 0.10.12 | ||||||
| 
 | 
 | ||||||
|   '@vtj/ui@0.10.10(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2))': |   '@vtj/ui@0.10.12(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2))': | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@vtj/icons': 0.10.10(vue@3.5.13(typescript@5.8.2)) |       '@vtj/icons': 0.10.12(vue@3.5.13(typescript@5.8.2)) | ||||||
|       '@vtj/utils': 0.10.10 |       '@vtj/utils': 0.10.12 | ||||||
|       '@vueuse/core': 12.7.0(typescript@5.8.2) |       '@vueuse/core': 12.7.0(typescript@5.8.2) | ||||||
|       element-plus: 2.9.6(vue@3.5.13(typescript@5.8.2)) |       element-plus: 2.9.6(vue@3.5.13(typescript@5.8.2)) | ||||||
|       sortablejs: 1.15.6 |       sortablejs: 1.15.6 | ||||||
| @ -17302,27 +17328,27 @@ snapshots: | |||||||
|       - typescript |       - typescript | ||||||
|       - vue |       - vue | ||||||
| 
 | 
 | ||||||
|   '@vtj/uni@0.10.10(vue@3.5.13(typescript@5.8.2))': |   '@vtj/uni@0.10.12(vue@3.5.13(typescript@5.8.2))': | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@vtj/core': 0.10.10 |       '@vtj/core': 0.10.12 | ||||||
|       '@vtj/icons': 0.10.10(vue@3.5.13(typescript@5.8.2)) |       '@vtj/icons': 0.10.12(vue@3.5.13(typescript@5.8.2)) | ||||||
|       '@vtj/renderer': 0.10.10 |       '@vtj/renderer': 0.10.12 | ||||||
|       '@vtj/utils': 0.10.10 |       '@vtj/utils': 0.10.12 | ||||||
|     transitivePeerDependencies: |     transitivePeerDependencies: | ||||||
|       - vue |       - vue | ||||||
| 
 | 
 | ||||||
|   '@vtj/utils@0.10.10': |   '@vtj/utils@0.10.12': | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@vtj/base': 0.10.1 |       '@vtj/base': 0.10.1 | ||||||
| 
 | 
 | ||||||
|   '@vtj/web@0.10.10(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2))': |   '@vtj/web@0.10.12(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2))': | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@vtj/charts': 0.10.10(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2)) |       '@vtj/charts': 0.10.12(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2)) | ||||||
|       '@vtj/core': 0.10.10 |       '@vtj/core': 0.10.12 | ||||||
|       '@vtj/icons': 0.10.10(vue@3.5.13(typescript@5.8.2)) |       '@vtj/icons': 0.10.12(vue@3.5.13(typescript@5.8.2)) | ||||||
|       '@vtj/renderer': 0.10.10 |       '@vtj/renderer': 0.10.12 | ||||||
|       '@vtj/ui': 0.10.10(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2)) |       '@vtj/ui': 0.10.12(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2)) | ||||||
|       '@vtj/utils': 0.10.10 |       '@vtj/utils': 0.10.12 | ||||||
|       core-js: 3.41.0 |       core-js: 3.41.0 | ||||||
|       regenerator-runtime: 0.14.1 |       regenerator-runtime: 0.14.1 | ||||||
|     transitivePeerDependencies: |     transitivePeerDependencies: | ||||||
| @ -17913,6 +17939,16 @@ snapshots: | |||||||
|       postcss: 8.5.3 |       postcss: 8.5.3 | ||||||
|       postcss-value-parser: 4.2.0 |       postcss-value-parser: 4.2.0 | ||||||
| 
 | 
 | ||||||
|  |   autoprefixer@10.4.21(postcss@8.5.3): | ||||||
|  |     dependencies: | ||||||
|  |       browserslist: 4.24.4 | ||||||
|  |       caniuse-lite: 1.0.30001703 | ||||||
|  |       fraction.js: 4.3.7 | ||||||
|  |       normalize-range: 0.1.2 | ||||||
|  |       picocolors: 1.1.1 | ||||||
|  |       postcss: 8.5.3 | ||||||
|  |       postcss-value-parser: 4.2.0 | ||||||
|  | 
 | ||||||
|   available-typed-arrays@1.0.7: |   available-typed-arrays@1.0.7: | ||||||
|     dependencies: |     dependencies: | ||||||
|       possible-typed-array-names: 1.1.0 |       possible-typed-array-names: 1.1.0 | ||||||
| @ -18231,12 +18267,14 @@ snapshots: | |||||||
|   caniuse-api@3.0.0: |   caniuse-api@3.0.0: | ||||||
|     dependencies: |     dependencies: | ||||||
|       browserslist: 4.24.4 |       browserslist: 4.24.4 | ||||||
|       caniuse-lite: 1.0.30001702 |       caniuse-lite: 1.0.30001703 | ||||||
|       lodash.memoize: 4.1.2 |       lodash.memoize: 4.1.2 | ||||||
|       lodash.uniq: 4.5.0 |       lodash.uniq: 4.5.0 | ||||||
| 
 | 
 | ||||||
|   caniuse-lite@1.0.30001702: {} |   caniuse-lite@1.0.30001702: {} | ||||||
| 
 | 
 | ||||||
|  |   caniuse-lite@1.0.30001703: {} | ||||||
|  | 
 | ||||||
|   ccount@2.0.1: {} |   ccount@2.0.1: {} | ||||||
| 
 | 
 | ||||||
|   center-align@0.1.3: |   center-align@0.1.3: | ||||||
| @ -18539,7 +18577,7 @@ snapshots: | |||||||
| 
 | 
 | ||||||
|   compressible@2.0.18: |   compressible@2.0.18: | ||||||
|     dependencies: |     dependencies: | ||||||
|       mime-db: 1.52.0 |       mime-db: 1.53.0 | ||||||
| 
 | 
 | ||||||
|   compute-scroll-into-view@1.0.20: {} |   compute-scroll-into-view@1.0.20: {} | ||||||
| 
 | 
 | ||||||
| @ -19885,7 +19923,7 @@ snapshots: | |||||||
|       '@types/semver': 7.5.8 |       '@types/semver': 7.5.8 | ||||||
|       '@types/ua-parser-js': 0.7.39 |       '@types/ua-parser-js': 0.7.39 | ||||||
|       browserslist: 4.24.4 |       browserslist: 4.24.4 | ||||||
|       caniuse-lite: 1.0.30001702 |       caniuse-lite: 1.0.30001703 | ||||||
|       isbot: 3.8.0 |       isbot: 3.8.0 | ||||||
|       object-path: 0.11.8 |       object-path: 0.11.8 | ||||||
|       semver: 7.7.1 |       semver: 7.7.1 | ||||||
| @ -21682,6 +21720,8 @@ snapshots: | |||||||
| 
 | 
 | ||||||
|   mime-db@1.52.0: {} |   mime-db@1.52.0: {} | ||||||
| 
 | 
 | ||||||
|  |   mime-db@1.53.0: {} | ||||||
|  | 
 | ||||||
|   mime-types@2.1.35: |   mime-types@2.1.35: | ||||||
|     dependencies: |     dependencies: | ||||||
|       mime-db: 1.52.0 |       mime-db: 1.52.0 | ||||||
| @ -21788,7 +21828,7 @@ snapshots: | |||||||
| 
 | 
 | ||||||
|   mkdist@1.6.0(sass@1.85.1)(typescript@5.8.2)(vue-tsc@2.2.8(typescript@5.8.2)): |   mkdist@1.6.0(sass@1.85.1)(typescript@5.8.2)(vue-tsc@2.2.8(typescript@5.8.2)): | ||||||
|     dependencies: |     dependencies: | ||||||
|       autoprefixer: 10.4.20(postcss@8.5.3) |       autoprefixer: 10.4.21(postcss@8.5.3) | ||||||
|       citty: 0.1.6 |       citty: 0.1.6 | ||||||
|       cssnano: 7.0.6(postcss@8.5.3) |       cssnano: 7.0.6(postcss@8.5.3) | ||||||
|       defu: 6.1.4 |       defu: 6.1.4 | ||||||
| @ -23076,7 +23116,7 @@ snapshots: | |||||||
|       '@protobufjs/path': 1.1.2 |       '@protobufjs/path': 1.1.2 | ||||||
|       '@protobufjs/pool': 1.1.0 |       '@protobufjs/pool': 1.1.0 | ||||||
|       '@protobufjs/utf8': 1.1.0 |       '@protobufjs/utf8': 1.1.0 | ||||||
|       '@types/node': 20.17.24 |       '@types/node': 22.13.10 | ||||||
|       long: 5.3.1 |       long: 5.3.1 | ||||||
| 
 | 
 | ||||||
|   proxy-from-env@1.1.0: {} |   proxy-from-env@1.1.0: {} | ||||||
| @ -24491,11 +24531,11 @@ snapshots: | |||||||
| 
 | 
 | ||||||
|   titleize@3.0.0: {} |   titleize@3.0.0: {} | ||||||
| 
 | 
 | ||||||
|   tldts-core@6.1.83: {} |   tldts-core@6.1.84: {} | ||||||
| 
 | 
 | ||||||
|   tldts@6.1.83: |   tldts@6.1.84: | ||||||
|     dependencies: |     dependencies: | ||||||
|       tldts-core: 6.1.83 |       tldts-core: 6.1.84 | ||||||
| 
 | 
 | ||||||
|   tmp@0.0.33: |   tmp@0.0.33: | ||||||
|     dependencies: |     dependencies: | ||||||
| @ -24511,7 +24551,7 @@ snapshots: | |||||||
| 
 | 
 | ||||||
|   tough-cookie@5.1.2: |   tough-cookie@5.1.2: | ||||||
|     dependencies: |     dependencies: | ||||||
|       tldts: 6.1.83 |       tldts: 6.1.84 | ||||||
| 
 | 
 | ||||||
|   tr46@0.0.3: {} |   tr46@0.0.3: {} | ||||||
| 
 | 
 | ||||||
| @ -25168,10 +25208,10 @@ snapshots: | |||||||
|       pathe: 0.2.0 |       pathe: 0.2.0 | ||||||
|       vite: 6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0) |       vite: 6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0) | ||||||
| 
 | 
 | ||||||
|   vite-plugin-inspect@0.8.9(@nuxt/kit@3.16.0(magicast@0.3.5))(rollup@3.29.5)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)): |   vite-plugin-inspect@0.8.9(@nuxt/kit@3.16.0(magicast@0.3.5))(rollup@4.35.0)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)): | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@antfu/utils': 0.7.10 |       '@antfu/utils': 0.7.10 | ||||||
|       '@rollup/pluginutils': 5.1.4(rollup@3.29.5) |       '@rollup/pluginutils': 5.1.4(rollup@4.35.0) | ||||||
|       debug: 4.4.0(supports-color@9.4.0) |       debug: 4.4.0(supports-color@9.4.0) | ||||||
|       error-stack-parser-es: 0.1.5 |       error-stack-parser-es: 0.1.5 | ||||||
|       fs-extra: 11.3.0 |       fs-extra: 11.3.0 | ||||||
| @ -25186,10 +25226,10 @@ snapshots: | |||||||
|       - rollup |       - rollup | ||||||
|       - supports-color |       - supports-color | ||||||
| 
 | 
 | ||||||
|   vite-plugin-inspect@0.8.9(rollup@4.35.0)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)): |   vite-plugin-inspect@0.8.9(rollup@3.29.5)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)): | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@antfu/utils': 0.7.10 |       '@antfu/utils': 0.7.10 | ||||||
|       '@rollup/pluginutils': 5.1.4(rollup@4.35.0) |       '@rollup/pluginutils': 5.1.4(rollup@3.29.5) | ||||||
|       debug: 4.4.0(supports-color@9.4.0) |       debug: 4.4.0(supports-color@9.4.0) | ||||||
|       error-stack-parser-es: 0.1.5 |       error-stack-parser-es: 0.1.5 | ||||||
|       fs-extra: 11.3.0 |       fs-extra: 11.3.0 | ||||||
| @ -25271,7 +25311,7 @@ snapshots: | |||||||
|       typescript: 5.8.2 |       typescript: 5.8.2 | ||||||
|       vite: 6.2.1(@types/node@20.17.24)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0) |       vite: 6.2.1(@types/node@20.17.24)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0) | ||||||
| 
 | 
 | ||||||
|   vite-plugin-vue-devtools@7.7.2(@nuxt/kit@3.16.0(magicast@0.3.5))(rollup@3.29.5)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)): |   vite-plugin-vue-devtools@7.7.2(@nuxt/kit@3.16.0(magicast@0.3.5))(rollup@4.35.0)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)): | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@vue/devtools-core': 7.7.2(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)) |       '@vue/devtools-core': 7.7.2(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)) | ||||||
|       '@vue/devtools-kit': 7.7.2 |       '@vue/devtools-kit': 7.7.2 | ||||||
| @ -25279,7 +25319,7 @@ snapshots: | |||||||
|       execa: 9.5.2 |       execa: 9.5.2 | ||||||
|       sirv: 3.0.1 |       sirv: 3.0.1 | ||||||
|       vite: 6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0) |       vite: 6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0) | ||||||
|       vite-plugin-inspect: 0.8.9(@nuxt/kit@3.16.0(magicast@0.3.5))(rollup@3.29.5)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)) |       vite-plugin-inspect: 0.8.9(@nuxt/kit@3.16.0(magicast@0.3.5))(rollup@4.35.0)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)) | ||||||
|       vite-plugin-vue-inspector: 5.3.1(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)) |       vite-plugin-vue-inspector: 5.3.1(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)) | ||||||
|     transitivePeerDependencies: |     transitivePeerDependencies: | ||||||
|       - '@nuxt/kit' |       - '@nuxt/kit' | ||||||
| @ -25287,7 +25327,7 @@ snapshots: | |||||||
|       - supports-color |       - supports-color | ||||||
|       - vue |       - vue | ||||||
| 
 | 
 | ||||||
|   vite-plugin-vue-devtools@7.7.2(rollup@4.35.0)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)): |   vite-plugin-vue-devtools@7.7.2(rollup@3.29.5)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)): | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@vue/devtools-core': 7.7.2(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)) |       '@vue/devtools-core': 7.7.2(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)) | ||||||
|       '@vue/devtools-kit': 7.7.2 |       '@vue/devtools-kit': 7.7.2 | ||||||
| @ -25295,7 +25335,7 @@ snapshots: | |||||||
|       execa: 9.5.2 |       execa: 9.5.2 | ||||||
|       sirv: 3.0.1 |       sirv: 3.0.1 | ||||||
|       vite: 6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0) |       vite: 6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0) | ||||||
|       vite-plugin-inspect: 0.8.9(rollup@4.35.0)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)) |       vite-plugin-inspect: 0.8.9(rollup@3.29.5)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)) | ||||||
|       vite-plugin-vue-inspector: 5.3.1(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)) |       vite-plugin-vue-inspector: 5.3.1(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.1)(terser@5.39.0)(yaml@2.7.0)) | ||||||
|     transitivePeerDependencies: |     transitivePeerDependencies: | ||||||
|       - '@nuxt/kit' |       - '@nuxt/kit' | ||||||
|  | |||||||
| @ -188,3 +188,5 @@ catalog: | |||||||
|   zod-defaults: ^0.1.3 |   zod-defaults: ^0.1.3 | ||||||
|   vite-plugin-mkcert: ^1.17.7 |   vite-plugin-mkcert: ^1.17.7 | ||||||
|   postmate: ^1.5.2 |   postmate: ^1.5.2 | ||||||
|  |   core-js: ^3.41.0 | ||||||
|  |   licia-es: ^1.46.0 | ||||||
|  | |||||||
							
								
								
									
										12
									
								
								turbo.json
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								turbo.json
									
									
									
									
									
								
							| @ -15,14 +15,12 @@ | |||||||
|   ], |   ], | ||||||
|   "globalEnv": ["NODE_ENV"], |   "globalEnv": ["NODE_ENV"], | ||||||
|   "tasks": { |   "tasks": { | ||||||
|  |     "reset": { | ||||||
|  |       "cache": false | ||||||
|  |     }, | ||||||
|     "build": { |     "build": { | ||||||
|       "dependsOn": ["^build"], |       "dependsOn": ["reset", "^build"], | ||||||
|       "outputs": [ |       "outputs": ["dist/**", "dist.zip", ".vitepress/dist.zip", ".vitepress/dist/**"] | ||||||
|         "dist/**", |  | ||||||
|         "dist.zip", |  | ||||||
|         ".vitepress/dist.zip", |  | ||||||
|         ".vitepress/dist/**" |  | ||||||
|       ] |  | ||||||
|     }, |     }, | ||||||
|     "preview": { |     "preview": { | ||||||
|       "dependsOn": ["^build"], |       "dependsOn": ["^build"], | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 wangxuefeng
						wangxuefeng