urit-qf-ui 0.2.4 → 0.2.5
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/README.md +41 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1137 -1035
- package/dist/index.umd.cjs +2 -2
- package/dist/qf/http.d.ts +22 -0
- package/dist/style.css +1 -1
- package/dist/ts/form-render.d.ts +1 -0
- package/dist/ts/table-render.d.ts +21 -0
- package/dist/uform/FormContainer.vue.d.ts +2 -0
- package/dist/uform/TableDetail.vue.d.ts +8 -0
- package/dist/uform/TableRender.vue.d.ts +8 -13
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -17,6 +17,42 @@
|
|
|
17
17
|
|
|
18
18
|
---
|
|
19
19
|
|
|
20
|
+
## 0.5 后端地址:默认「免配」,也可以配 `baseUrl`
|
|
21
|
+
|
|
22
|
+
库里的 `Http`(`src/qf/http.ts`)按这个优先级决定接口往哪发:
|
|
23
|
+
|
|
24
|
+
| 优先级 | 来源 | 什么时候用 |
|
|
25
|
+
|--------|------|-----------|
|
|
26
|
+
| 1 | `QfOptions.baseUrl`(`public/config/config.json` → `qfOptions.baseUrl`) | 前后端不同机/不同端口/走网关 —— **配了就以它为准** |
|
|
27
|
+
| 2 | `document.baseURI` 的 origin | **免配默认值**:后端 = 前端的 IP + 端口 |
|
|
28
|
+
| 3 | `window.$wujie.location.origin` | 无界沙箱里取不到 `<base>` 时的兜底 |
|
|
29
|
+
| 4 | `window.location.origin` | 最后兜底 |
|
|
30
|
+
|
|
31
|
+
```ts
|
|
32
|
+
// 想改地址,只动 config.json(不用改代码)
|
|
33
|
+
{ "qfOptions": { "baseUrl": "http://192.168.1.9:8085", ... } }
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
需要自己发请求、或想拿「本应用自己的根地址」时,用库里导出的同一个函数:
|
|
37
|
+
|
|
38
|
+
```ts
|
|
39
|
+
import {resolveBaseUrl} from 'urit-qf-ui'
|
|
40
|
+
const root = resolveBaseUrl() // 独立运行 = 本站 origin;被无界嵌入 = 子应用自己的 origin
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
⚠️ **被无界(wujie)以微前端方式嵌入时,绝对不能用 `window.location.origin` 拼接口地址。**
|
|
44
|
+
沙箱 iframe 的 `src` 是 `blob:` 空页(与主应用同源),子应用里的 `window.location.origin`
|
|
45
|
+
拿到的是**主应用**的域名/端口 → 请求会打到主应用去。实测(主应用 8111、子应用 8009):
|
|
46
|
+
|
|
47
|
+
| 写法 | 无界里 `resolveBaseUrl()` | 免配请求实际打到 |
|
|
48
|
+
|------|--------------------------|------------------|
|
|
49
|
+
| `window.location.origin`(≤0.2.4 的老写法) | `http://127.0.0.1:8111` ❌ | `http://127.0.0.1:8111/api/...`(主应用) |
|
|
50
|
+
| `document.baseURI`(**0.2.5 起**) | `http://127.0.0.1:8009` ✅ | `http://127.0.0.1:8009/api/...`(子应用自己) |
|
|
51
|
+
|
|
52
|
+
无界会给子应用注入正确的 `<base>`,所以 `document.baseURI` 在「独立运行」和「被嵌入」两种态下都指向应用自己。
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
20
56
|
## 1. 安装
|
|
21
57
|
|
|
22
58
|
```bash
|
|
@@ -90,6 +126,10 @@ resolve: {
|
|
|
90
126
|
| 弹层(下拉 / 日期 / 消息框)被挡住不显示 | 页面引了 Quasar 的 `quasar.css`,`.fullscreen` 带 `position:fixed; z-index:6000` | 自己项目的 css 里覆盖 `.fullscreen{z-index:auto !important}`;根容器别加 `.fullscreen` 类 |
|
|
91
127
|
| 改完库源码,页面没变化 | 工程引的是 **npm 包**(`node_modules` 里的旧 dist),不是源码 | 要么改成 alias 引源码(方式 B),要么重新 `npm run build` + 覆盖 dist + 删 `node_modules/.vite` |
|
|
92
128
|
| **每页条数一多(≥20)表格就一路撑长,分页条被顶出容器、点不到**;机构详情里的子表也把面板撑长 | 0.2.3 的 `.table-grid`(`TableGrid.vue` 根节点)没参与 `.table-container` 的 flex 分配,而 EP 的 `.el-table` 默认 `height: fit-content` | 升级到 **0.2.4+**(该规则已内置到 `TableRender.vue`)。仍在旧版就在项目全局样式里补:`.table-render .table-container .table-grid{flex:1;min-height:0;max-height:var(--table-grid-max-height,none)}` + `.table-render .table-container .table-grid>.el-table{height:100%}`;详见《表格渲染器使用手册》第 8 节 |
|
|
129
|
+
| **被无界嵌入后,接口全打到主应用去**(浏览器 Network 里请求域名/端口 = 主应用,改 `config.json` 的 `baseUrl` 又能通) | ≤0.2.4 的 `Http` 用 `window.location.origin` 兜底,而无界沙箱 iframe 是 `blob:`(与主应用同源)→ 拿到的是主应用 origin | 升级到 **0.2.5+**(改用 `document.baseURI`),见 §0.5;临时可在页面里自己拼地址并显式传 `baseUrl` |
|
|
130
|
+
| 详情面板给了 `#detail-extra` 插槽后,YAML 里配的字段列表不见了 | 0.2.5 起 `detail-extra` 改为**接管**语义(默认 `replace`) | 想「字段列表 + 插槽共存」就加 `detail-extra-mode="append"`;详见《表格渲染器使用手册》5.4 |
|
|
131
|
+
| 点表单弹窗「取消」,对话框**高度先塌一截再淡出** | 内容被 `v-if="visible"` 立刻卸载,而 `el-dialog` 是「先播退场动画、播完才移除 DOM」 | 升级到 **0.2.5+**(库内已改为内容常驻、清状态放 `@closed`);详见《表单渲染器使用手册》附录 A #9 |
|
|
132
|
+
| 点「预览」(`action: preview`)/ 关详情抽屉,浮层**唰一下就没、完全没有滑出动画** | 预览抽屉写成了 `<el-drawer v-if="previewVisible" :model-value="true">` —— `v-if` 挂在**可见性**上:关的时候组件当场被卸载,`el-drawer` 的退场过渡根本没机会播(实测:`leave-active` 那一帧抽屉已不在,内容项数 4 → 0) | 升级到 **0.2.5+**(库内已改为「挂载开关 `previewMounted`」与「显隐开关 `previewVisible`」分离,内容清理放 `@closed`)。自己项目里若也有这类 `v-if="visible"` 的浮层,按同样思路拆开 |
|
|
93
133
|
|
|
94
134
|
### 验证样式真的进来了(10 秒)
|
|
95
135
|
|
|
@@ -143,3 +183,4 @@ npm publish
|
|
|
143
183
|
4. **确认 `dist/style.css` 已生成且非空**(本库样式全靠它,缺失 = 使用方全部无样式)
|
|
144
184
|
5. 运行 `npm publish` 发布
|
|
145
185
|
6. 发布后提醒使用方:升级版本 → 删各自 `node_modules/.vite` → 重启 dev server(vite 会把依赖 CSS 内联进预构建产物,不清缓存会继续用旧样式)
|
|
186
|
+
7. (可选但推荐)**发布后拉 tarball 核验产物**:版本号对 ≠ 内容对。把 `https://registry.npmjs.org/urit-qf-ui/-/urit-qf-ui-<版本>.tgz` 下载解压,比对 `dist/index.js`、`dist/index.umd.cjs`、`dist/style.css` 三个文件与本地 `dist` 的 md5 —— 必须全等,否则说明发布的是另一份构建
|
package/dist/index.d.ts
CHANGED
|
@@ -24,3 +24,4 @@ export type { CfgType } from './ts/constant';
|
|
|
24
24
|
export { getDict, translateDict, translateDictSync, preloadDicts, clearDictCache, setDictCache, normalizeDictNode, toDictOptions, mapDictTree, flattenDictTree } from './ts/dict';
|
|
25
25
|
export { QfInterface, GetQf };
|
|
26
26
|
export type { QfOptions } from './qf/interface';
|
|
27
|
+
export { resolveBaseUrl } from './qf/http';
|