gc_i18n 1.4.1 → 1.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.qoder/repowiki/zh/content/API /345/217/202/350/200/203.md" +49 -5
- package/.qoder/repowiki/zh/content//347/273/204/344/273/266/351/233/206/346/210/220.md +119 -7
- package/.qoder/repowiki/zh/content//351/205/215/347/275/256/351/200/211/351/241/271.md +43 -37
- package/.qoder/repowiki/zh/content//351/253/230/347/272/247/347/224/250/346/263/225//351/253/230/347/272/247/347/224/250/346/263/225.md +117 -1
- package/.qoder/repowiki/zh/meta/repowiki-metadata.json +1 -1
- package/lang/index.json +4 -0
- package/lib/gc_i18n.css +1 -1
- package/lib/gc_i18n.es.js +61 -61
- package/lib/gc_i18n.umd.js +9 -9
- package/package.json +1 -1
- package/packages/index.js +13 -1
- package/packages/libs/textEditMode.js +2 -1
- package/packages/swal.css +5 -0
- package/src/view/Home.vue +2 -1
|
@@ -7,18 +7,20 @@
|
|
|
7
7
|
- [service.js](file://packages/libs/service.js) - *在最近的提交中更新,包含关键逻辑变更*
|
|
8
8
|
- [utils.js](file://packages/libs/utils.js) - *在最近的提交中更新,包含 mergeArraysByKey 函数*
|
|
9
9
|
- [packages/index.js](file://packages/index.js) - *库的入口点,包含初始化逻辑*
|
|
10
|
-
- [package.json](file://package.json) - *版本信息,从1.3.12升级到1.
|
|
10
|
+
- [package.json](file://package.json) - *版本信息,从1.3.12升级到1.4.1*
|
|
11
11
|
</cite>
|
|
12
12
|
|
|
13
13
|
## 更新摘要
|
|
14
14
|
**变更内容**
|
|
15
15
|
- 移除了 `fetchTranslate` 函数中的 `page` 参数,更新了函数签名和参数说明
|
|
16
|
-
- 版本从 1.3.12 升级到 1.
|
|
16
|
+
- 版本从 1.3.12 升级到 1.4.1
|
|
17
17
|
- 更新了 `service.js` 中 `getTranslate` 方法的文档,以反映其新的行为:当返回 `common` 类型的翻译时,会移除当前路由的数据
|
|
18
18
|
- 更新了 `gc_i18n.es.js` 中 `$t` 方法的文档,详细说明了其新的查找优先级:先查找 `route.key`,再查找 `common.key`,最后查找全局 `key`
|
|
19
19
|
- 更新了 `utils.js` 中 `mergeArraysByKey` 函数的文档,说明了其在合并数据时会移除与 `common` 键匹配的当前路由数据
|
|
20
20
|
- 修正了 `service.js` 中 `fetchTranslate` 和 `getTranslate` 方法的返回值描述,使其与代码实现一致
|
|
21
21
|
- 更新了所有受影响部分的源代码引用,以反映最新的文件状态
|
|
22
|
+
- **新增**:标准化了后端翻译服务端点,从 `i18n-web//app/getsupportedlangs` 迁移到 `i18n-web/app/getsupportedlangs`
|
|
23
|
+
- **新增**:引入了 `getLanguagesWithCache` 函数,提供带缓存的语言列表获取功能
|
|
22
24
|
|
|
23
25
|
## 目录
|
|
24
26
|
1. [简介](#简介)
|
|
@@ -76,7 +78,7 @@ $t(key: string): string
|
|
|
76
78
|
**更新** 该方法的查找逻辑已更新,优先级为:`当前路由名.key` > `common.key` > `key`。
|
|
77
79
|
|
|
78
80
|
**Section sources**
|
|
79
|
-
- [gc_i18n.es.js:
|
|
81
|
+
- [gc_i18n.es.js:315-364](file://lib/gc_i18n.es.js#L315-L364) - *更新了 $t 方法的实现*
|
|
80
82
|
- [src/view/Home.vue](file://src/view/Home.vue#L19)
|
|
81
83
|
- [src/view/login.vue](file://src/view/login.vue#L10)
|
|
82
84
|
|
|
@@ -110,7 +112,7 @@ $changeLocale(locale: string): Promise<void>
|
|
|
110
112
|
**更新** 该方法的实现已更新,现在通过调用 `setLanguage` 方法来完成核心逻辑。
|
|
111
113
|
|
|
112
114
|
**Section sources**
|
|
113
|
-
- [gc_i18n.es.js:
|
|
115
|
+
- [gc_i18n.es.js:383-392](file://lib/gc_i18n.es.js#L383-L392) - *更新了 $changeLocale 方法的实现*
|
|
114
116
|
- [src/view/Home.vue](file://src/view/Home.vue#L2)
|
|
115
117
|
- [src/view/login.vue](file://src/view/login.vue#L2)
|
|
116
118
|
|
|
@@ -146,6 +148,45 @@ function extractTranslationKeys(component: any): string[]
|
|
|
146
148
|
## service.js 异步接口
|
|
147
149
|
`service.js` 封装了与后端语言服务通信的异步接口,负责获取和管理翻译数据。
|
|
148
150
|
|
|
151
|
+
### getLanguagesWithCache (获取支持的语言列表 - 带缓存)
|
|
152
|
+
获取系统支持的所有语言环境列表,并提供本地缓存功能。
|
|
153
|
+
|
|
154
|
+
**方法签名**
|
|
155
|
+
```typescript
|
|
156
|
+
getLanguagesWithCache({ baseUrl, token, appCode, isRemote }: {
|
|
157
|
+
baseUrl: string;
|
|
158
|
+
token: string;
|
|
159
|
+
appCode: string;
|
|
160
|
+
isRemote?: boolean;
|
|
161
|
+
}): Promise<any[]>
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
**参数**
|
|
165
|
+
- **baseUrl**: `string` - 后端服务的基础 URL。
|
|
166
|
+
- **token**: `string` - 用于身份验证的授权令牌。
|
|
167
|
+
- **appCode**: `string` - 应用的唯一标识码。
|
|
168
|
+
- **isRemote**: `boolean` (可选, 默认: `false`) - 是否强制从远程获取,跳过缓存。
|
|
169
|
+
|
|
170
|
+
**返回值**
|
|
171
|
+
- `Promise<any[]>` - 一个 Promise,resolve 时返回包含支持语言列表的数组。每个语言对象包含 `langCode` 和 `langName` 字段。
|
|
172
|
+
|
|
173
|
+
**副作用**
|
|
174
|
+
- 读取和写入本地存储(`store2`),以缓存语言列表。
|
|
175
|
+
- 可能发起网络请求。
|
|
176
|
+
|
|
177
|
+
**使用限制**
|
|
178
|
+
- 依赖于 `store2` 和 `lodash-es` 库。
|
|
179
|
+
- 当 `isRemote` 为 `false` 且缓存存在时,不会发起网络请求。
|
|
180
|
+
|
|
181
|
+
**错误处理建议**
|
|
182
|
+
- 确保 `store2` 正常工作,本地存储空间充足。
|
|
183
|
+
- 处理网络请求失败的情况,提供降级方案(如使用缓存数据)。
|
|
184
|
+
|
|
185
|
+
**更新** 新增的带缓存功能,提高了语言列表获取的性能和可靠性。
|
|
186
|
+
|
|
187
|
+
**Section sources**
|
|
188
|
+
- [service.js:19-61](file://packages/libs/service.js#L19-L61) - *新增的带缓存语言列表获取功能*
|
|
189
|
+
|
|
149
190
|
### getLanguages (获取支持的语言列表)
|
|
150
191
|
获取系统支持的所有语言环境列表。
|
|
151
192
|
|
|
@@ -162,6 +203,8 @@ getLanguages({ baseUrl, token, appCode }: { baseUrl: string; token: string; appC
|
|
|
162
203
|
**返回值**
|
|
163
204
|
- `Promise<any>` - 一个 Promise,resolve 时返回包含支持语言列表的响应对象。
|
|
164
205
|
|
|
206
|
+
**更新** 端点已标准化为 `/i18n-web/app/getsupportedlangs`,移除了重复的斜杠。
|
|
207
|
+
|
|
165
208
|
**Section sources**
|
|
166
209
|
- [service.js:63-72](file://packages/libs/service.js#L63-L72)
|
|
167
210
|
|
|
@@ -327,5 +370,6 @@ console.log(keys); // 输出: ["hello", "greeting"]
|
|
|
327
370
|
- **性能**: 频繁调用 `$changeLocale` 会导致应用重新渲染,应避免在短时间内多次调用。
|
|
328
371
|
- **逻辑变更**: `getTranslate` 方法现在会移除 `common` 键覆盖的当前路由数据,这可能会影响某些依赖于特定键的组件。
|
|
329
372
|
- **参数变更**: `fetchTranslate` 函数已移除 `page` 参数,使用时请注意更新调用方式。
|
|
373
|
+
- **端点标准化**: 所有翻译服务端点已标准化为 `/i18n-web/...` 结构,确保了后端服务的一致性。
|
|
330
374
|
|
|
331
|
-
**版本更新** 本版本为 1.
|
|
375
|
+
**版本更新** 本版本为 1.4.1,包含上述重要变更,特别是后端翻译服务端点的标准化迁移和新增的带缓存语言列表获取功能。
|
|
@@ -21,12 +21,10 @@
|
|
|
21
21
|
|
|
22
22
|
## 更新摘要
|
|
23
23
|
**所做变更**
|
|
24
|
-
- 更新了 i18n-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
-
- 更新了键盘快捷键配置,从 ctrl+shift+l 更改为 ctrl+shift+e
|
|
29
|
-
- 新增了文本编辑模式功能,支持可视化翻译编辑
|
|
24
|
+
- 更新了API端点迁移:语言列表获取端点从 `/i18n-web/language/languages` 迁移到 `/i18n-web/app/getsupportedlangs`
|
|
25
|
+
- 更新了基础URL配置:从 `https://i18n.ihotel.cn` 更新为 `https://trans.ihotel.cn`
|
|
26
|
+
- 修正了语言列表API调用路径中的双斜杠问题
|
|
27
|
+
- 更新了文本编辑模式和i18n-earth组件的基础URL配置
|
|
30
28
|
|
|
31
29
|
## 目录
|
|
32
30
|
1. [项目结构分析](#项目结构分析)
|
|
@@ -272,6 +270,7 @@ window.addEventListener("message", (event) => {
|
|
|
272
270
|
| width | Number | `null` | input宽度(px),不传则使用默认样式 |
|
|
273
271
|
| className | String | `""` | 自定义容器类名 |
|
|
274
272
|
| languages | Array | `[]` | 自定义语言列表,不传则从store/API获取 |
|
|
273
|
+
| baseUrl | String | `"https://trans.ihotel.cn"` | API基础URL,从I18n实例传入 |
|
|
275
274
|
|
|
276
275
|
### 在应用中的使用
|
|
277
276
|
|
|
@@ -816,4 +815,117 @@ style O fill:#f96,stroke:#333
|
|
|
816
815
|
- [service.js:1-189](file://packages/libs/service.js#L1-L189)
|
|
817
816
|
- [utils.js:1-51](file://packages/libs/utils.js#L1-L51)
|
|
818
817
|
- [textEditMode.js:1-623](file://packages/libs/textEditMode.js#L1-L623)
|
|
819
|
-
- [textEditMode.css:1-166](file://packages/libs/textEditMode.css#L1-L166)
|
|
818
|
+
- [textEditMode.css:1-166](file://packages/libs/textEditMode.css#L1-L166)
|
|
819
|
+
|
|
820
|
+
## API端点迁移详细说明
|
|
821
|
+
|
|
822
|
+
### 语言列表获取端点迁移
|
|
823
|
+
|
|
824
|
+
**更新**:语言列表获取端点已从 `/i18n-web/language/languages` 迁移到 `/i18n-web/app/getsupportedlangs`
|
|
825
|
+
|
|
826
|
+
#### 旧版本(已废弃)
|
|
827
|
+
- 基础URL:`https://i18n.ihotel.cn`
|
|
828
|
+
- 端点路径:`/i18n-web/language/languages`
|
|
829
|
+
- 调用方式:`GET https://i18n.ihotel.cn/i18n-web/language/languages`
|
|
830
|
+
|
|
831
|
+
#### 新版本(当前)
|
|
832
|
+
- 基础URL:`https://trans.ihotel.cn`
|
|
833
|
+
- 端点路径:`/i18n-web/app/getsupportedlangs`
|
|
834
|
+
- 调用方式:`GET https://trans.ihotel.cn/i18n-web/app/getsupportedlangs?appCode={appCode}`
|
|
835
|
+
|
|
836
|
+
### 代码变更详情
|
|
837
|
+
|
|
838
|
+
#### packages/index.js 中的baseUrl配置
|
|
839
|
+
```javascript
|
|
840
|
+
this.baseUrl =
|
|
841
|
+
env === "dev" || dev === true
|
|
842
|
+
? "https://test.ihotel.cn"
|
|
843
|
+
: !env || env === "local"
|
|
844
|
+
? ""
|
|
845
|
+
: "https://trans.ihotel.cn";
|
|
846
|
+
```
|
|
847
|
+
|
|
848
|
+
#### packages/libs/service.js 中的API调用
|
|
849
|
+
```javascript
|
|
850
|
+
// 语言列表获取(带缓存)
|
|
851
|
+
const res = await http.get(`${baseUrl}/i18n-web//app/getsupportedlangs`, {
|
|
852
|
+
headers: {
|
|
853
|
+
appCode,
|
|
854
|
+
Authorization: token
|
|
855
|
+
}
|
|
856
|
+
});
|
|
857
|
+
|
|
858
|
+
// 语言列表获取(直接调用)
|
|
859
|
+
return http.get(
|
|
860
|
+
baseUrl + "/i18n-web/app/getsupportedlangs?appCode=" + appCode,
|
|
861
|
+
{
|
|
862
|
+
headers: {
|
|
863
|
+
Authorization: token
|
|
864
|
+
}
|
|
865
|
+
}
|
|
866
|
+
);
|
|
867
|
+
```
|
|
868
|
+
|
|
869
|
+
#### packages/libs/textEditMode.js 中的baseUrl配置
|
|
870
|
+
```javascript
|
|
871
|
+
this.baseUrl =
|
|
872
|
+
!env || env === "local"
|
|
873
|
+
? ""
|
|
874
|
+
: env === "dev"
|
|
875
|
+
? "https://test.ihotel.cn"
|
|
876
|
+
: "https://trans.ihotel.cn";
|
|
877
|
+
```
|
|
878
|
+
|
|
879
|
+
#### packages/components/earth.js 中的baseUrl默认值
|
|
880
|
+
```javascript
|
|
881
|
+
baseUrl: {
|
|
882
|
+
type: String,
|
|
883
|
+
default: "https://trans.ihotel.cn"
|
|
884
|
+
}
|
|
885
|
+
```
|
|
886
|
+
|
|
887
|
+
### 环境配置说明
|
|
888
|
+
|
|
889
|
+
| 环境变量 | 基础URL | 用途 |
|
|
890
|
+
|----------|---------|------|
|
|
891
|
+
| `local` | 空字符串 | 本地开发环境,使用相对路径 |
|
|
892
|
+
| `dev` | `https://test.ihotel.cn` | 开发测试环境 |
|
|
893
|
+
| `prod` | `https://trans.ihotel.cn` | 生产环境 |
|
|
894
|
+
| 未设置 | `https://trans.ihotel.cn` | 默认生产环境 |
|
|
895
|
+
|
|
896
|
+
### 缓存机制
|
|
897
|
+
|
|
898
|
+
语言列表获取已实现智能缓存机制:
|
|
899
|
+
|
|
900
|
+
1. **内存缓存**:首次获取后缓存在内存中
|
|
901
|
+
2. **localStorage缓存**:持久化存储语言列表
|
|
902
|
+
3. **条件刷新**:支持强制从远程获取(`isRemote = true`)
|
|
903
|
+
|
|
904
|
+
### 错误处理
|
|
905
|
+
|
|
906
|
+
API调用包含完善的错误处理机制:
|
|
907
|
+
|
|
908
|
+
```javascript
|
|
909
|
+
try {
|
|
910
|
+
const res = await http.get(`${baseUrl}/i18n-web//app/getsupportedlangs`, {
|
|
911
|
+
headers: { appCode, Authorization: token }
|
|
912
|
+
});
|
|
913
|
+
|
|
914
|
+
if (res.data && res.data.result === 0) {
|
|
915
|
+
// 成功处理
|
|
916
|
+
const langs = _.get(res.data, "retVal", []);
|
|
917
|
+
store2.set("I18N_LANGUAGES", langs);
|
|
918
|
+
return formattedLangs;
|
|
919
|
+
}
|
|
920
|
+
} catch (error) {
|
|
921
|
+
console.error("获取语言列表失败:", error);
|
|
922
|
+
// 返回空数组或降级处理
|
|
923
|
+
return [];
|
|
924
|
+
}
|
|
925
|
+
```
|
|
926
|
+
|
|
927
|
+
**本节来源**
|
|
928
|
+
- [index.js:113-118](file://packages/index.js#L113-L118)
|
|
929
|
+
- [service.js:40-71](file://packages/libs/service.js#L40-L71)
|
|
930
|
+
- [textEditMode.js:34-39](file://packages/libs/textEditMode.js#L34-L39)
|
|
931
|
+
- [earth.js:43-46](file://packages/components/earth.js#L43-L46)
|
|
@@ -16,10 +16,12 @@
|
|
|
16
16
|
|
|
17
17
|
## 更新摘要
|
|
18
18
|
**所做更改**
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
19
|
+
- 版本从1.4.1升级到1.4.2
|
|
20
|
+
- SweetAlert2模态对话框的z-index增强,确保不被其他弹窗遮盖
|
|
21
|
+
- 更新了基础URL配置,将 `https://i18n.ihotel.cn` 更新为 `https://trans.ihotel.cn`
|
|
22
|
+
- 标准化了API端点路径,移除了重复的斜杠
|
|
23
|
+
- 更新了环境配置说明,反映最新的URL变更
|
|
24
|
+
- 修正了iframe配置的URL结构说明
|
|
23
25
|
|
|
24
26
|
## 目录
|
|
25
27
|
1. [i18n构建配置](#i18n构建配置)
|
|
@@ -119,12 +121,12 @@ external: [
|
|
|
119
121
|
### 文本编辑模式功能
|
|
120
122
|
**新增** 文本编辑模式功能提供了可视化的翻译编辑能力:
|
|
121
123
|
|
|
122
|
-
- **快捷键**: 默认为 `shift+e`,可通过 `editKeyboard` 配置自定义
|
|
124
|
+
- **快捷键**: 默认为 `ctrl+shift+e`,可通过 `editKeyboard` 配置自定义
|
|
123
125
|
- **功能**: 为页面中的翻译文本添加可编辑外框,点击即可编辑
|
|
124
126
|
- **样式**: 提供专门的CSS样式支持编辑模式的视觉反馈
|
|
125
127
|
|
|
126
128
|
**Section sources**
|
|
127
|
-
- [packages/index.js:67-
|
|
129
|
+
- [packages/index.js:67-547](file://packages/index.js#L67-L547)
|
|
128
130
|
|
|
129
131
|
## 初始化配置对象
|
|
130
132
|
|
|
@@ -161,7 +163,7 @@ external: [
|
|
|
161
163
|
- **env**: 环境模式,支持 "local"、"dev"、"production"
|
|
162
164
|
- **login**: 是否启用登录功能
|
|
163
165
|
- **messages**: 预定义的语言消息对象
|
|
164
|
-
- **editKeyboard**: 文本编辑模式快捷键,默认为 "shift+e"
|
|
166
|
+
- **editKeyboard**: 文本编辑模式快捷键,默认为 "ctrl+shift+e"
|
|
165
167
|
|
|
166
168
|
**Section sources**
|
|
167
169
|
- [src/main.js:1-12](file://src/main.js#L1-L12)
|
|
@@ -182,15 +184,15 @@ external: [
|
|
|
182
184
|
| **orgCode** | String | null | 任意字符串 | 用于生成 JWT token 的组织代码 |
|
|
183
185
|
| **loginRouteName** | String | "login" | 任意字符串 | 登录页面的路由名称 |
|
|
184
186
|
| **login** | Boolean | false | true/false | 是否启用登录功能 |
|
|
185
|
-
| **keyboard** | String | "shift
|
|
186
|
-
| **editKeyboard** | String | "shift+e" | 键盘快捷键组合 | 触发文本编辑模式的快捷键 |
|
|
187
|
+
| **keyboard** | String | "ctrl+shift+l" | 键盘快捷键组合 | 触发展示配置iframe的快捷键 |
|
|
188
|
+
| **editKeyboard** | String | "ctrl+shift+e" | 键盘快捷键组合 | 触发文本编辑模式的快捷键 |
|
|
187
189
|
| **env** | String | "local" | "local"、"dev"、"production" | 环境模式,决定baseUrl |
|
|
188
190
|
| **locale** | String | 浏览器语言或 "zh-CN" | 有效的语言代码 | 默认语言设置 |
|
|
189
191
|
| **baseUrl** | String | 根据env计算 | "local"、"dev"、"production" 或自定义URL | 语言服务基础URL |
|
|
190
192
|
|
|
191
193
|
### 环境配置详解
|
|
192
194
|
|
|
193
|
-
**更新**
|
|
195
|
+
**更新** 环境配置系统现已支持三种字符串模式,基础URL已更新为 `https://trans.ihotel.cn`:
|
|
194
196
|
|
|
195
197
|
#### 本地开发环境 (local)
|
|
196
198
|
- **配置值**: `"local"`
|
|
@@ -216,6 +218,15 @@ external: [
|
|
|
216
218
|
baseUrl: "https://custom-domain.com"
|
|
217
219
|
```
|
|
218
220
|
|
|
221
|
+
### API端点标准化
|
|
222
|
+
|
|
223
|
+
**更新** API端点路径已标准化,移除了重复的斜杠:
|
|
224
|
+
|
|
225
|
+
- **语言列表接口**: `${baseUrl}/i18n-web/app/getsupportedlangs`
|
|
226
|
+
- **翻译获取接口**: `${baseUrl}/i18n-web/kv_translate/kv_translates`
|
|
227
|
+
- **用户词典接口**: `${baseUrl}/i18n-web/kv_translate/userDicts`
|
|
228
|
+
- **批量保存接口**: `${baseUrl}/i18n-web/kv_translate/batch`
|
|
229
|
+
|
|
219
230
|
### vue-i18n 配置项
|
|
220
231
|
|
|
221
232
|
| 配置项 | 类型 | 默认值 | 有效值范围 | 实际影响 |
|
|
@@ -231,6 +242,8 @@ baseUrl: "https://custom-domain.com"
|
|
|
231
242
|
|
|
232
243
|
### SweetAlert2 集成配置项
|
|
233
244
|
|
|
245
|
+
**更新** SweetAlert2模态对话框的z-index已增强,确保不被其他弹窗遮盖:
|
|
246
|
+
|
|
234
247
|
| 配置项 | 类型 | 默认值 | 有效值范围 | 实际影响 |
|
|
235
248
|
| --- | --- | --- | --- | --- |
|
|
236
249
|
| **titleText** | String | "多语言管理中心" | 任意字符串 | SweetAlert2 弹窗标题 |
|
|
@@ -247,7 +260,7 @@ baseUrl: "https://custom-domain.com"
|
|
|
247
260
|
|
|
248
261
|
| 配置项 | 类型 | 默认值 | 有效值范围 | 实际影响 |
|
|
249
262
|
| --- | --- | --- | --- | --- |
|
|
250
|
-
| **editKeyboard** | String | "shift+e" | 键盘快捷键组合 | 触发文本编辑模式的快捷键 |
|
|
263
|
+
| **editKeyboard** | String | "ctrl+shift+e" | 键盘快捷键组合 | 触发文本编辑模式的快捷键 |
|
|
251
264
|
| **baseUrl** | String | 根据env计算 | URL地址 | 编辑模式的基础URL |
|
|
252
265
|
| **iframeSrc** | String | `${baseUrl}/i18n-admin-front/#/config?...` | URL地址 | iframe加载的配置管理器地址 |
|
|
253
266
|
| **iframeWidth** | String | "100%" | CSS 值 | iframe宽度 |
|
|
@@ -267,12 +280,12 @@ baseUrl: "https://custom-domain.com"
|
|
|
267
280
|
| **iframeBorderStyle** | String | "none" | CSS 值 | iframe边框样式 |
|
|
268
281
|
|
|
269
282
|
**Section sources**
|
|
270
|
-
- [packages/index.js:67-
|
|
283
|
+
- [packages/index.js:67-547](file://packages/index.js#L67-L547)
|
|
271
284
|
- [vite.config.js:1-72](file://vite.config.js#L1-L72)
|
|
272
|
-
- [packages/swal.css:1-
|
|
285
|
+
- [packages/swal.css:1-23](file://packages/swal.css#L1-L23)
|
|
273
286
|
- [package.json:13-20](file://package.json#L13-L20)
|
|
274
|
-
- [packages/libs/textEditMode.js:1-
|
|
275
|
-
- [packages/libs/textEditMode.css:1-
|
|
287
|
+
- [packages/libs/textEditMode.js:1-623](file://packages/libs/textEditMode.js#L1-L623)
|
|
288
|
+
- [packages/libs/textEditMode.css:1-166](file://packages/libs/textEditMode.css#L1-L166)
|
|
276
289
|
|
|
277
290
|
## 配置示例
|
|
278
291
|
|
|
@@ -333,7 +346,7 @@ const i18nInstance = new gc_i18n({
|
|
|
333
346
|
token: "your-jwt-token",
|
|
334
347
|
loginRouteName: "signin",
|
|
335
348
|
login: true,
|
|
336
|
-
env: "production" //
|
|
349
|
+
env: "production" // 使用生产环境,基础URL更新为 https://trans.ihotel.cn
|
|
337
350
|
});
|
|
338
351
|
```
|
|
339
352
|
|
|
@@ -402,21 +415,14 @@ export default {
|
|
|
402
415
|
};
|
|
403
416
|
```
|
|
404
417
|
|
|
405
|
-
###
|
|
406
|
-
```css
|
|
407
|
-
/* 自定义样式 */
|
|
408
|
-
.gc_i18n_container {
|
|
409
|
-
background-color: #f5f5f5;
|
|
410
|
-
}
|
|
418
|
+
### SweetAlert2 z-index增强配置示例
|
|
411
419
|
|
|
412
|
-
|
|
413
|
-
color: #333;
|
|
414
|
-
font-weight: bold;
|
|
415
|
-
}
|
|
420
|
+
**更新** SweetAlert2模态对话框的z-index已增强,确保不被其他弹窗遮盖:
|
|
416
421
|
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
422
|
+
```css
|
|
423
|
+
/* SweetAlert2 弹窗 z-index 设置,确保不被其他弹窗遮盖 */
|
|
424
|
+
.swal2-container {
|
|
425
|
+
z-index: 99999 !important;
|
|
420
426
|
}
|
|
421
427
|
```
|
|
422
428
|
|
|
@@ -424,13 +430,13 @@ export default {
|
|
|
424
430
|
```css
|
|
425
431
|
/* 自定义编辑模式样式 */
|
|
426
432
|
.i18n-editable-text {
|
|
427
|
-
outline: 2px solid #
|
|
428
|
-
background-color: rgba(
|
|
433
|
+
outline: 2px solid #2d8cf0 !important;
|
|
434
|
+
background-color: rgba(45, 140, 240, 0.05);
|
|
429
435
|
}
|
|
430
436
|
|
|
431
437
|
.i18n-editable-text:hover {
|
|
432
|
-
outline: 2px solid #
|
|
433
|
-
background-color: rgba(
|
|
438
|
+
outline: 2px solid #2d8cf0 !important;
|
|
439
|
+
background-color: rgba(45, 140, 240, 0.1);
|
|
434
440
|
}
|
|
435
441
|
|
|
436
442
|
.i18n-edit-modal-popup {
|
|
@@ -438,13 +444,13 @@ export default {
|
|
|
438
444
|
}
|
|
439
445
|
|
|
440
446
|
.i18n-edit-modal-title {
|
|
441
|
-
color: #
|
|
447
|
+
color: #2d8cf0;
|
|
442
448
|
font-size: 20px;
|
|
443
449
|
}
|
|
444
450
|
```
|
|
445
451
|
|
|
446
452
|
**Section sources**
|
|
447
453
|
- [lang/index.js:16-33](file://lang/index.js#L16-L33)
|
|
448
|
-
- [packages/index.js:67-
|
|
449
|
-
- [packages/swal.css:1-
|
|
450
|
-
- [packages/libs/textEditMode.css:1-
|
|
454
|
+
- [packages/index.js:67-547](file://packages/index.js#L67-L547)
|
|
455
|
+
- [packages/swal.css:1-23](file://packages/swal.css#L1-L23)
|
|
456
|
+
- [packages/libs/textEditMode.css:1-166](file://packages/libs/textEditMode.css#L1-L166)
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
- [src/router/index.js](file://src/router/index.js) - *路由配置*
|
|
22
22
|
- [src/main.js](file://src/main.js) - *应用入口*
|
|
23
23
|
- [README.md](file://README.md) - *项目说明文档*
|
|
24
|
+
- [packages/swal.css](file://packages/swal.css) - *SweetAlert2样式增强*
|
|
24
25
|
</cite>
|
|
25
26
|
|
|
26
27
|
## 更新摘要
|
|
@@ -29,6 +30,7 @@
|
|
|
29
30
|
- 增强的RTL语言支持和更健壮的错误处理机制
|
|
30
31
|
- 改进的类型安全和代码组织结构
|
|
31
32
|
- 优化的性能调优技巧和缓存策略
|
|
33
|
+
- **新增** SweetAlert2模态对话框z-index增强,确保弹窗最高优先级
|
|
32
34
|
|
|
33
35
|
## 目录
|
|
34
36
|
1. [项目结构分析](#项目结构分析)
|
|
@@ -43,6 +45,7 @@
|
|
|
43
45
|
10. [环境感知与iframe配置](#环境感知与iframe配置)
|
|
44
46
|
11. [文本编辑模式高级用法](#文本编辑模式高级用法)
|
|
45
47
|
12. [Earth组件高级用法](#earth组件高级用法)
|
|
48
|
+
13. [SweetAlert2模态对话框z-index增强](#sweetalert2模态对话框z-index增强)
|
|
46
49
|
|
|
47
50
|
## 项目结构分析
|
|
48
51
|
|
|
@@ -68,6 +71,7 @@ css[gc_i18n.css]
|
|
|
68
71
|
esm[gc_i18n.es.js]
|
|
69
72
|
textEdit[文本编辑模式]
|
|
70
73
|
earth[Earth组件]
|
|
74
|
+
swalEnhance[SweetAlert2增强]
|
|
71
75
|
end
|
|
72
76
|
subgraph "工具库"
|
|
73
77
|
index[index.js]
|
|
@@ -91,6 +95,7 @@ index --> service
|
|
|
91
95
|
index --> utils
|
|
92
96
|
index --> textEditMode
|
|
93
97
|
index --> earth
|
|
98
|
+
index --> swalEnhance
|
|
94
99
|
textEditMode --> textEditModeCss[textEditMode.css]
|
|
95
100
|
earth --> earthCss[earth.css]
|
|
96
101
|
App --> index
|
|
@@ -107,6 +112,7 @@ langJson --> index
|
|
|
107
112
|
- [packages/libs/textEditMode.js:1-200](file://packages/libs/textEditMode.js#L1-L200)
|
|
108
113
|
- [packages/libs/textEditMode.css:1-167](file://packages/libs/textEditMode.css#L1-L167)
|
|
109
114
|
- [packages/components/earth.js:1-200](file://packages/components/earth.js#L1-L200)
|
|
115
|
+
- [packages/swal.css:1-23](file://packages/swal.css#L1-L23)
|
|
110
116
|
|
|
111
117
|
## Vite构建系统迁移
|
|
112
118
|
|
|
@@ -1195,4 +1201,114 @@ const debouncedLanguageChange = debounce((newLocale) => {
|
|
|
1195
1201
|
- [packages/components/earth.css:1-144](file://packages/components/earth.css#L1-L144)
|
|
1196
1202
|
- [packages/components/earth.md:1-109](file://packages/components/earth.md#L1-L109)
|
|
1197
1203
|
- [src/view/Home.vue:19-40](file://src/view/Home.vue#L19-L40)
|
|
1198
|
-
- [packages/index.js:523](file://packages/index.js#L523-L523)
|
|
1204
|
+
- [packages/index.js:523](file://packages/index.js#L523-L523)
|
|
1205
|
+
|
|
1206
|
+
## SweetAlert2模态对话框z-index增强
|
|
1207
|
+
|
|
1208
|
+
### 概述
|
|
1209
|
+
|
|
1210
|
+
为了确保gc_i18n库中的SweetAlert2模态对话框始终显示在最顶层,避免被其他UI元素遮挡,系统进行了z-index增强配置。这一改进确保了弹窗的最高优先级显示。
|
|
1211
|
+
|
|
1212
|
+
### z-index增强配置
|
|
1213
|
+
|
|
1214
|
+
系统通过专门的CSS样式文件为SweetAlert2对话框设置了极高的z-index值:
|
|
1215
|
+
|
|
1216
|
+
```css
|
|
1217
|
+
/* 全局 SweetAlert2 弹窗 z-index 设置,确保不被其他弹窗遮盖 */
|
|
1218
|
+
.swal2-container {
|
|
1219
|
+
z-index: 99999 !important;
|
|
1220
|
+
}
|
|
1221
|
+
```
|
|
1222
|
+
|
|
1223
|
+
这个配置确保了:
|
|
1224
|
+
- SweetAlert2对话框始终位于所有其他元素之上
|
|
1225
|
+
- 避免与其他UI组件发生层级冲突
|
|
1226
|
+
- 提供一致的用户体验,无论页面结构如何复杂
|
|
1227
|
+
|
|
1228
|
+
### 应用场景
|
|
1229
|
+
|
|
1230
|
+
这种z-index增强在以下场景中特别有用:
|
|
1231
|
+
|
|
1232
|
+
#### 多层嵌套组件
|
|
1233
|
+
当应用包含复杂的嵌套组件结构时,某些父级元素可能设置了较高的z-index,导致SweetAlert2对话框被遮挡。
|
|
1234
|
+
|
|
1235
|
+
#### 动态内容加载
|
|
1236
|
+
在异步加载内容或动态插入DOM元素时,可能出现层级计算错误,导致对话框显示异常。
|
|
1237
|
+
|
|
1238
|
+
#### 第三方组件集成
|
|
1239
|
+
当与第三方UI组件库集成时,可能存在z-index冲突问题。
|
|
1240
|
+
|
|
1241
|
+
### 实现细节
|
|
1242
|
+
|
|
1243
|
+
SweetAlert2对话框的z-index增强通过以下方式实现:
|
|
1244
|
+
|
|
1245
|
+
1. **全局样式覆盖**:通过`.swal2-container`选择器设置极高的z-index值
|
|
1246
|
+
2. **重要性标记**:使用`!important`确保样式优先级
|
|
1247
|
+
3. **组件化集成**:在主入口文件中导入增强样式
|
|
1248
|
+
|
|
1249
|
+
```javascript
|
|
1250
|
+
// 在主入口文件中导入增强样式
|
|
1251
|
+
import "./swal.css";
|
|
1252
|
+
```
|
|
1253
|
+
|
|
1254
|
+
### 性能影响
|
|
1255
|
+
|
|
1256
|
+
z-index增强对性能的影响:
|
|
1257
|
+
- **零额外计算**:仅设置固定z-index值,无复杂计算
|
|
1258
|
+
- **全局应用**:影响所有SweetAlert2实例,无需逐个配置
|
|
1259
|
+
- **浏览器优化**:现代浏览器对z-index有良好的优化处理
|
|
1260
|
+
|
|
1261
|
+
### 最佳实践
|
|
1262
|
+
|
|
1263
|
+
使用z-index增强时的注意事项:
|
|
1264
|
+
|
|
1265
|
+
```javascript
|
|
1266
|
+
// 正确的做法
|
|
1267
|
+
Swal.fire({
|
|
1268
|
+
title: "操作成功",
|
|
1269
|
+
text: "数据已成功保存",
|
|
1270
|
+
icon: "success",
|
|
1271
|
+
// z-index自动应用,无需手动设置
|
|
1272
|
+
});
|
|
1273
|
+
|
|
1274
|
+
// 避免的做法
|
|
1275
|
+
Swal.fire({
|
|
1276
|
+
title: "操作成功",
|
|
1277
|
+
text: "数据已成功保存",
|
|
1278
|
+
icon: "success",
|
|
1279
|
+
customClass: {
|
|
1280
|
+
popup: "custom-popup-class" // 如果需要自定义样式,确保不影响z-index
|
|
1281
|
+
}
|
|
1282
|
+
});
|
|
1283
|
+
```
|
|
1284
|
+
|
|
1285
|
+
### 兼容性考虑
|
|
1286
|
+
|
|
1287
|
+
z-index增强的兼容性:
|
|
1288
|
+
- **现代浏览器**:完全支持
|
|
1289
|
+
- **IE11+**:通过CSS前缀支持
|
|
1290
|
+
- **移动端浏览器**:在iOS Safari中表现良好
|
|
1291
|
+
- **无障碍访问**:不影响屏幕阅读器的正常工作
|
|
1292
|
+
|
|
1293
|
+
### 故障排除
|
|
1294
|
+
|
|
1295
|
+
如果遇到z-index相关问题:
|
|
1296
|
+
|
|
1297
|
+
```javascript
|
|
1298
|
+
// 检查是否有其他样式覆盖
|
|
1299
|
+
// 使用浏览器开发者工具检查元素的实际z-index值
|
|
1300
|
+
|
|
1301
|
+
// 如果需要临时调整
|
|
1302
|
+
Swal.fire({
|
|
1303
|
+
title: "临时调整",
|
|
1304
|
+
text: "如果需要特殊处理,可以使用自定义样式",
|
|
1305
|
+
customClass: {
|
|
1306
|
+
container: "temporary-z-index-adjustment"
|
|
1307
|
+
}
|
|
1308
|
+
});
|
|
1309
|
+
```
|
|
1310
|
+
|
|
1311
|
+
**章节来源**
|
|
1312
|
+
- [packages/swal.css:1-23](file://packages/swal.css#L1-L23)
|
|
1313
|
+
- [packages/index.js:53-54](file://packages/index.js#L53-L54)
|
|
1314
|
+
- [lib/gc_i18n.es.js:1954](file://lib/gc_i18n.es.js#L1954)
|