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/index/index.vue b/src/pages/index/index.vue
index 58a6a5d..aa7110f 100644
--- a/src/pages/index/index.vue
+++ b/src/pages/index/index.vue
@@ -92,8 +92,6 @@
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 @@
-
+
{{ 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 @@
-
+
-
-
-
+
+
+
{{ node.name }}
-
+
{{ node.type === "C" ? "目录" : node.type === "M" ? "菜单" : "按钮" }}
@@ -50,216 +76,214 @@
-
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 @@
-
+
-
+
@@ -35,7 +45,11 @@
-
+
-
+
-
+
-
-
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 @@
-
+
-
+
@@ -16,7 +26,11 @@
-
+
-
-
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"]