Kaynağa Gözat

style: 添加用于 volar 插件的全局注册组件声明

许俊杰 2 yıl önce
ebeveyn
işleme
d00c936aca

+ 17 - 0
Web/src/globalComponents.d.ts

@@ -0,0 +1,17 @@
+import SvgIcon from '/@/components/svgIcon/index.vue';
+
+import GridLayout from 'vue-grid-layout';
+import VueSignaturePad from 'vue-signature-pad';
+import Vue3TreeOrg from 'vue3-tree-org';
+
+// 用于 volar 插件的全局注册组件声明
+declare module 'vue' {
+	export interface GlobalComponents {
+		SvgIcon: typeof SvgIcon;
+		GridLayout: typeof GridLayout;
+		Vue3TreeOrg: typeof Vue3TreeOrg.Vue3TreeOrg;
+		VueSignaturePad: typeof VueSignaturePad;
+	}
+}
+
+export {};

+ 115 - 0
Web/src/globalElementPlus.d.ts

@@ -0,0 +1,115 @@
+// 来源:https://github.com/element-plus/element-plus/blob/dev/global.d.ts
+// 官方的写法不支持 vue 2.7 以上
+
+// 用于 volar 插件的全局注册组件声明
+declare module 'vue' {
+	export interface GlobalComponents {
+		ElAffix: typeof import('element-plus')['ElAffix'];
+		ElAlert: typeof import('element-plus')['ElAlert'];
+		ElAside: typeof import('element-plus')['ElAside'];
+		ElAutocomplete: typeof import('element-plus')['ElAutocomplete'];
+		ElAvatar: typeof import('element-plus')['ElAvatar'];
+		ElBacktop: typeof import('element-plus')['ElBacktop'];
+		ElBadge: typeof import('element-plus')['ElBadge'];
+		ElBreadcrumb: typeof import('element-plus')['ElBreadcrumb'];
+		ElBreadcrumbItem: typeof import('element-plus')['ElBreadcrumbItem'];
+		ElButton: typeof import('element-plus')['ElButton'];
+		ElButtonGroup: typeof import('element-plus')['ElButtonGroup'];
+		ElCalendar: typeof import('element-plus')['ElCalendar'];
+		ElCard: typeof import('element-plus')['ElCard'];
+		ElCarousel: typeof import('element-plus')['ElCarousel'];
+		ElCarouselItem: typeof import('element-plus')['ElCarouselItem'];
+		ElCascader: typeof import('element-plus')['ElCascader'];
+		ElCascaderPanel: typeof import('element-plus')['ElCascaderPanel'];
+		ElCheckbox: typeof import('element-plus')['ElCheckbox'];
+		ElCheckboxButton: typeof import('element-plus')['ElCheckboxButton'];
+		ElCheckboxGroup: typeof import('element-plus')['ElCheckboxGroup'];
+		ElCol: typeof import('element-plus')['ElCol'];
+		ElCollapse: typeof import('element-plus')['ElCollapse'];
+		ElCollapseItem: typeof import('element-plus')['ElCollapseItem'];
+		ElCollapseTransition: typeof import('element-plus')['ElCollapseTransition'];
+		ElColorPicker: typeof import('element-plus')['ElColorPicker'];
+		ElContainer: typeof import('element-plus')['ElContainer'];
+		ElConfigProvider: typeof import('element-plus')['ElConfigProvider'];
+		ElDatePicker: typeof import('element-plus')['ElDatePicker'];
+		ElDialog: typeof import('element-plus')['ElDialog'];
+		ElDivider: typeof import('element-plus')['ElDivider'];
+		ElDrawer: typeof import('element-plus')['ElDrawer'];
+		ElDropdown: typeof import('element-plus')['ElDropdown'];
+		ElDropdownItem: typeof import('element-plus')['ElDropdownItem'];
+		ElDropdownMenu: typeof import('element-plus')['ElDropdownMenu'];
+		ElEmpty: typeof import('element-plus')['ElEmpty'];
+		ElFooter: typeof import('element-plus')['ElFooter'];
+		ElForm: typeof import('element-plus')['ElForm'];
+		ElFormItem: typeof import('element-plus')['ElFormItem'];
+		ElHeader: typeof import('element-plus')['ElHeader'];
+		ElIcon: typeof import('element-plus')['ElIcon'];
+		ElImage: typeof import('element-plus')['ElImage'];
+		ElImageViewer: typeof import('element-plus')['ElImageViewer'];
+		ElInput: typeof import('element-plus')['ElInput'];
+		ElInputNumber: typeof import('element-plus')['ElInputNumber'];
+		ElLink: typeof import('element-plus')['ElLink'];
+		ElMain: typeof import('element-plus')['ElMain'];
+		ElMenu: typeof import('element-plus')['ElMenu'];
+		ElMenuItem: typeof import('element-plus')['ElMenuItem'];
+		ElMenuItemGroup: typeof import('element-plus')['ElMenuItemGroup'];
+		ElOption: typeof import('element-plus')['ElOption'];
+		ElOptionGroup: typeof import('element-plus')['ElOptionGroup'];
+		ElPageHeader: typeof import('element-plus')['ElPageHeader'];
+		ElPagination: typeof import('element-plus')['ElPagination'];
+		ElPopconfirm: typeof import('element-plus')['ElPopconfirm'];
+		ElPopper: typeof import('element-plus')['ElPopper'];
+		ElPopover: typeof import('element-plus')['ElPopover'];
+		ElProgress: typeof import('element-plus')['ElProgress'];
+		ElRadio: typeof import('element-plus')['ElRadio'];
+		ElRadioButton: typeof import('element-plus')['ElRadioButton'];
+		ElRadioGroup: typeof import('element-plus')['ElRadioGroup'];
+		ElRate: typeof import('element-plus')['ElRate'];
+		ElRow: typeof import('element-plus')['ElRow'];
+		ElScrollbar: typeof import('element-plus')['ElScrollbar'];
+		ElSelect: typeof import('element-plus')['ElSelect'];
+		ElSlider: typeof import('element-plus')['ElSlider'];
+		ElStep: typeof import('element-plus')['ElStep'];
+		ElSteps: typeof import('element-plus')['ElSteps'];
+		ElSubMenu: typeof import('element-plus')['ElSubMenu'];
+		ElSwitch: typeof import('element-plus')['ElSwitch'];
+		ElTabPane: typeof import('element-plus')['ElTabPane'];
+		ElTable: typeof import('element-plus')['ElTable'];
+		ElTableColumn: typeof import('element-plus')['ElTableColumn'];
+		ElTabs: typeof import('element-plus')['ElTabs'];
+		ElTag: typeof import('element-plus')['ElTag'];
+		ElText: typeof import('element-plus')['ElText'];
+		ElTimePicker: typeof import('element-plus')['ElTimePicker'];
+		ElTimeSelect: typeof import('element-plus')['ElTimeSelect'];
+		ElTimeline: typeof import('element-plus')['ElTimeline'];
+		ElTimelineItem: typeof import('element-plus')['ElTimelineItem'];
+		ElTooltip: typeof import('element-plus')['ElTooltip'];
+		ElTransfer: typeof import('element-plus')['ElTransfer'];
+		ElTree: typeof import('element-plus')['ElTree'];
+		ElTreeV2: typeof import('element-plus')['ElTreeV2'];
+		ElTreeSelect: typeof import('element-plus')['ElTreeSelect'];
+		ElUpload: typeof import('element-plus')['ElUpload'];
+		ElSpace: typeof import('element-plus')['ElSpace'];
+		ElSkeleton: typeof import('element-plus')['ElSkeleton'];
+		ElSkeletonItem: typeof import('element-plus')['ElSkeletonItem'];
+		ElStatistic: typeof import('element-plus')['ElStatistic'];
+		ElCheckTag: typeof import('element-plus')['ElCheckTag'];
+		ElDescriptions: typeof import('element-plus')['ElDescriptions'];
+		ElDescriptionsItem: typeof import('element-plus')['ElDescriptionsItem'];
+		ElResult: typeof import('element-plus')['ElResult'];
+		ElSelectV2: typeof import('element-plus')['ElSelectV2'];
+	}
+
+	interface ComponentCustomProperties {
+		$message: typeof import('element-plus')['ElMessage'];
+		$notify: typeof import('element-plus')['ElNotification'];
+		$msgbox: typeof import('element-plus')['ElMessageBox'];
+		$messageBox: typeof import('element-plus')['ElMessageBox'];
+		$alert: typeof import('element-plus')['ElMessageBox']['alert'];
+		$confirm: typeof import('element-plus')['ElMessageBox']['confirm'];
+		$prompt: typeof import('element-plus')['ElMessageBox']['prompt'];
+		$loading: typeof import('element-plus')['ElLoadingService'];
+	}
+}
+
+export {};

+ 2 - 2
Web/src/main.ts

@@ -13,7 +13,7 @@ import VueGridLayout from 'vue-grid-layout';
 import VForm3 from 'vform3-builds'; // VForm3表单设计
 import 'vform3-builds/dist/designer.style.css'; // VForm3表单设计样式
 import VueSignaturePad from 'vue-signature-pad'; // 电子签名
-import vue3TreeOrg from 'vue3-tree-org'; // 组织架构图
+import Vue3TreeOrg from 'vue3-tree-org'; // 组织架构图
 import 'vue3-tree-org/lib/vue3-tree-org.css'; // 组织架构图样式
 import 'animate.css'; // 动画库
 
@@ -22,4 +22,4 @@ const app = createApp(App);
 directive(app);
 other.elSvg(app);
 
-app.use(pinia).use(router).use(ElementPlus).use(i18n).use(VueGridLayout).use(VForm3).use(VueSignaturePad).use(vue3TreeOrg).mount('#app');
+app.use(pinia).use(router).use(ElementPlus).use(i18n).use(VueGridLayout).use(VForm3).use(VueSignaturePad).use(Vue3TreeOrg).mount('#app');

+ 2 - 2
Web/src/views/system/user/component/userCenter.vue

@@ -168,7 +168,7 @@ import { useUserInfo } from '/@/stores/userInfo';
 import { base64ToFile } from '/@/utils/base64Conver';
 import OrgTree from '/@/views/system/user/component/orgTree.vue';
 import CropperDialog from '/@/components/cropper/index.vue';
-import VueGridLayout from 'vue-grid-layout';
+import VueSignaturePad from 'vue-signature-pad';
 
 import { clearAccessTokens, getAPI } from '/@/utils/axios-utils';
 import { SysFileApi, SysUserApi } from '/@/api-services/api';
@@ -178,7 +178,7 @@ const stores = useUserInfo();
 const { userInfos } = storeToRefs(stores);
 const uploadSignRef = ref<UploadInstance>();
 //const uploadAvatarRef = ref<UploadInstance>();
-const signaturePadRef = ref<InstanceType<typeof VueGridLayout>>();
+const signaturePadRef = ref<InstanceType<typeof VueSignaturePad>>();
 const ruleFormBaseRef = ref<InstanceType<typeof ElForm>>();
 const ruleFormPasswordRef = ref<InstanceType<typeof ElForm>>();
 const cropperDialogRef = ref<InstanceType<typeof CropperDialog>>();