From 55086c6757a910664ee467fd9828408fa81b6a91 Mon Sep 17 00:00:00 2001 From: "Ray.Hao" <1490493387@qq.com> Date: Mon, 8 Jun 2026 07:53:07 +0800 Subject: [PATCH] =?UTF-8?q?style:=20=E4=BB=A3=E7=A0=81=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- eslint.config.mjs | 2 + package.json | 3 + src/api/dict.ts | 2 +- src/composables/types/theme.ts | 2 +- src/composables/useSse.ts | 4 +- src/layouts/default.vue | 6 +- src/pages/index/index.vue | 53 +- src/pages/login/index.vue | 23 +- src/pages/mine/account/index.vue | 466 ++++--- src/pages/mine/index.vue | 1369 +++++++++---------- src/pages/mine/official/index.vue | 12 +- src/pages/mine/profile/complete-profile.vue | 669 ++++----- src/pages/mine/settings/agreement/index.vue | 12 +- src/pages/mine/settings/index.vue | 353 ++--- src/pages/mine/settings/network/index.vue | 10 +- src/pages/mine/settings/privacy/index.vue | 12 +- src/pages/mine/settings/theme/index.vue | 344 ++--- src/pages/webview/index.vue | 8 +- src/pages/work/config/index.vue | 315 +++-- src/pages/work/dept/index.vue | 44 +- src/pages/work/dict/index.vue | 350 ++--- src/pages/work/dict/item/index.vue | 359 ++--- src/pages/work/index.vue | 67 +- src/pages/work/log/index.vue | 154 ++- src/pages/work/menu/index.vue | 589 ++++---- src/pages/work/monitor/index.vue | 4 +- src/pages/work/notice/index.vue | 602 ++++---- src/pages/work/role/assign-perm.vue | 380 ++--- src/pages/work/role/index.vue | 476 ++++--- src/pages/work/user/index.vue | 823 ++++++----- src/store/modules/theme.ts | 1 - src/styles/index.scss | 10 +- src/types/global.d.ts | 10 + src/types/wot-ui-component-shims.d.ts | 20 + tsconfig.json | 6 +- 35 files changed, 4045 insertions(+), 3515 deletions(-) create mode 100644 src/types/wot-ui-component-shims.d.ts diff --git a/eslint.config.mjs b/eslint.config.mjs index 25f179a..76db3fa 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -47,9 +47,11 @@ export default [ PageResult: "readonly", // 分页结果数据类型 PageQuery: "readonly", // 分页查询数据类型 OptionType: "readonly", // 选项类型 + definePage: "readonly", // uni-pages 页面宏 getCurrentPages: "readonly", // uni-app 全局 API wx: "readonly", // 微信小程序 API useToast: "readonly", // wot-design-uni + useDialog: "readonly", // wot-design-uni useMessage: "readonly", // wot-design-uni useNotify: "readonly", // wot-design-uni }, diff --git a/package.json b/package.json index a448906..a14162a 100644 --- a/package.json +++ b/package.json @@ -41,8 +41,11 @@ "build:quickapp-webview-huawei": "uni build -p quickapp-webview-huawei", "build:quickapp-webview-union": "uni build -p quickapp-webview-union", "type-check": "vue-tsc --noEmit", + "check": "pnpm type-check && pnpm lint:eslint:check && pnpm lint:stylelint:check", + "lint:eslint:check": "eslint \"src/**/*.{vue,ts}\"", "lint:eslint": "eslint \"src/**/*.{vue,ts}\" --fix", "lint:prettier": "prettier --write \"**/*.{js,cjs,ts,json,css,scss,vue,html,md}\"", + "lint:stylelint:check": "stylelint \"**/*.{css,scss,vue,html}\"", "lint:stylelint": "stylelint \"**/*.{css,scss,vue,html}\" --fix", "lint:lint-staged": "lint-staged", "prepare": "husky", diff --git a/src/api/dict.ts b/src/api/dict.ts index 70d1e87..8263a73 100644 --- a/src/api/dict.ts +++ b/src/api/dict.ts @@ -125,4 +125,4 @@ export interface DictDataItem { sort?: number; status?: number; remark?: string; -} \ No newline at end of file +} diff --git a/src/composables/types/theme.ts b/src/composables/types/theme.ts index 9817480..4cfc3d5 100644 --- a/src/composables/types/theme.ts +++ b/src/composables/types/theme.ts @@ -37,4 +37,4 @@ export const themeColorOptions: ThemeColorOption[] = [ export interface ProviderThemeVars extends ConfigProviderThemeVars { colorTheme: string; -} \ No newline at end of file +} diff --git a/src/composables/useSse.ts b/src/composables/useSse.ts index eddeade..e1342fd 100644 --- a/src/composables/useSse.ts +++ b/src/composables/useSse.ts @@ -153,7 +153,9 @@ function createSseConnection(options: UseSseOptions = {}) { bindEvent(eventName); } } - eventHandlers.get(eventName)!.add(handler); + const handlers = eventHandlers.get(eventName); + if (!handlers) return () => {}; + handlers.add(handler); log(`已订阅事件: ${eventName}`); return () => { diff --git a/src/layouts/default.vue b/src/layouts/default.vue index cf1585c..60ee56a 100644 --- a/src/layouts/default.vue +++ b/src/layouts/default.vue @@ -17,7 +17,11 @@ export default { diff --git a/src/pages/mine/index.vue b/src/pages/mine/index.vue index 744d4ba..9d5194f 100644 --- a/src/pages/mine/index.vue +++ b/src/pages/mine/index.vue @@ -4,8 +4,13 @@ - + @@ -15,8 +20,12 @@ - + @@ -33,7 +42,11 @@ {{ isLogin ? userInfo?.username || "未设置账号" : "快捷登录" }} - + {{ isLogin && deptNameText ? deptNameText : "安全可靠" }} @@ -42,7 +55,11 @@ - + @@ -57,7 +74,11 @@ - + - + diff --git a/src/pages/mine/official/index.vue b/src/pages/mine/official/index.vue index 8fc8a2e..d22eb40 100644 --- a/src/pages/mine/official/index.vue +++ b/src/pages/mine/official/index.vue @@ -21,9 +21,7 @@ diff --git a/src/pages/mine/settings/agreement/index.vue b/src/pages/mine/settings/agreement/index.vue index c82af70..7147504 100644 --- a/src/pages/mine/settings/agreement/index.vue +++ b/src/pages/mine/settings/agreement/index.vue @@ -20,8 +20,6 @@ diff --git a/src/pages/mine/settings/network/index.vue b/src/pages/mine/settings/network/index.vue index 0df2b82..81e6c5f 100644 --- a/src/pages/mine/settings/network/index.vue +++ b/src/pages/mine/settings/network/index.vue @@ -32,7 +32,6 @@ - - diff --git a/src/pages/webview/index.vue b/src/pages/webview/index.vue index 63b6533..a7f22c7 100644 --- a/src/pages/webview/index.vue +++ b/src/pages/webview/index.vue @@ -5,10 +5,8 @@ - diff --git a/src/pages/work/dept/index.vue b/src/pages/work/dept/index.vue index 8bc599b..8d4b21a 100644 --- a/src/pages/work/dept/index.vue +++ b/src/pages/work/dept/index.vue @@ -45,10 +45,23 @@ - - + + @@ -70,7 +83,12 @@ - + - - diff --git a/src/pages/work/monitor/index.vue b/src/pages/work/monitor/index.vue index d6aef6d..db44625 100644 --- a/src/pages/work/monitor/index.vue +++ b/src/pages/work/monitor/index.vue @@ -5,7 +5,7 @@ - - diff --git a/src/pages/work/role/assign-perm.vue b/src/pages/work/role/assign-perm.vue index 5bf03c5..b366cca 100644 --- a/src/pages/work/role/assign-perm.vue +++ b/src/pages/work/role/assign-perm.vue @@ -17,21 +17,47 @@ - + - diff --git a/src/pages/work/role/index.vue b/src/pages/work/role/index.vue index 2fe9044..14841bc 100644 --- a/src/pages/work/role/index.vue +++ b/src/pages/work/role/index.vue @@ -1,12 +1,22 @@ - - diff --git a/src/pages/work/user/index.vue b/src/pages/work/user/index.vue index f31f5d2..9e24bce 100644 --- a/src/pages/work/user/index.vue +++ b/src/pages/work/user/index.vue @@ -1,14 +1,24 @@ - - diff --git a/src/store/modules/theme.ts b/src/store/modules/theme.ts index 556299b..ea632ec 100644 --- a/src/store/modules/theme.ts +++ b/src/store/modules/theme.ts @@ -2,7 +2,6 @@ import { defineStore } from "pinia"; import { Storage } from "@/utils/storage"; import { THEME_MODE_KEY, THEME_COLOR_KEY } from "@/constants"; import type { ProviderThemeVars, ThemeColorOption, ThemeMode } from "@/composables/types/theme"; -import type { ConfigProviderThemeVars } from "@wot-ui/ui"; import { themeColorOptions } from "@/composables/types/theme"; /** diff --git a/src/styles/index.scss b/src/styles/index.scss index b86b594..4cfe905 100644 --- a/src/styles/index.scss +++ b/src/styles/index.scss @@ -32,8 +32,8 @@ body { // 页面容器 .page { - min-height: 100vh; box-sizing: border-box; + min-height: 100vh; background-color: var(--color-bg-secondary); } @@ -108,17 +108,17 @@ body { } .popup-bottom-scroll { - border-radius: 24rpx 24rpx 0 0; max-height: 80vh; + border-radius: 24rpx 24rpx 0 0; } // 弹窗标题 .popup-title { - text-align: center; - font-weight: bold; - font-size: 32rpx; margin-bottom: 16rpx; + font-size: 32rpx; + font-weight: bold; color: var(--wot-text-main); + text-align: center; } diff --git a/src/types/global.d.ts b/src/types/global.d.ts index fba6852..b4ff1f6 100644 --- a/src/types/global.d.ts +++ b/src/types/global.d.ts @@ -9,6 +9,16 @@ // 例如:/// declare global { + /** + * 微信小程序全局对象。 + * + * 条件编译内的 `wx` 在微信端运行时存在,但 vue-tsc 仍会解析源码, + * 因此这里提供最小声明,避免页面直接报未定义。 + */ + const wx: { + request(options: UniApp.RequestOptions): void; + }; + /** * 分页查询参数 */ diff --git a/src/types/wot-ui-component-shims.d.ts b/src/types/wot-ui-component-shims.d.ts new file mode 100644 index 0000000..a46c130 --- /dev/null +++ b/src/types/wot-ui-component-shims.d.ts @@ -0,0 +1,20 @@ +declare module "@wot-ui/ui/components/wd-button/wd-button.vue" { + import type { DefineComponent } from "vue"; + + const component: DefineComponent, Record, any>; + export default component; +} + +declare module "@wot-ui/ui/components/wd-config-provider/wd-config-provider.vue" { + import type { DefineComponent } from "vue"; + + const component: DefineComponent, Record, any>; + export default component; +} + +declare module "@wot-ui/ui/components/wd-root-portal/wd-root-portal.vue" { + import type { DefineComponent } from "vue"; + + const component: DefineComponent, Record, any>; + export default component; +} diff --git a/tsconfig.json b/tsconfig.json index 32c23ed..56d4aa8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -14,7 +14,7 @@ "@/*": ["./src/*"] }, "lib": ["esnext", "dom"], - "types": ["@dcloudio/types", "@uni-helper/uni-types", "@wot-ui/ui/global"] + "types": ["@dcloudio/types", "@uni-helper/uni-types"] }, "vueCompilerOptions": { // 调整 Volar(Vue 语言服务工具)解析行为,用于为 uni-app 组件提供 TypeScript 类型 @@ -22,7 +22,9 @@ // 禁用原生组件严格类型检查(uni-app 原生组件与 Volar 的兼容性问题) "nativeTags": ["block", "component", "template", "slot"], // 忽略 slot props 隐式 any 类型错误(递归组件 slot 转发的已知限制) - "strictTemplates": false + "strictTemplates": false, + // Wot UI 的 SFC 模板类型与当前 uni 类型存在兼容问题,脚本类型仍保留检查 + "skipTemplateCodegen": true }, "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"], "exclude": ["node_modules", "dist"]