mvframe 1.0.72 → 1.0.74
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.cn.md +80 -1
- package/README.md +67 -1
- package/dist/css/cpt.css +1 -1
- package/dist/index.js +11 -10
- package/dist/notify.js +80 -0
- package/dist/store-shared.js +3 -1
- package/dist/vendor.js +434 -425
- package/package.json +15 -3
- package/scripts/dev-with-notify.js +92 -0
- package/scripts/install-codex-agents.js +127 -0
- package/scripts/notify-server.js +405 -0
- package/scripts/scaffold-app.js +107 -1
package/README.cn.md
CHANGED
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
- `"."` → `dist/index.js`(主插件,默认导出 `install` 函数)
|
|
20
20
|
- `"./composition"` → `dist/composition.js`(`import { useMap, … } from 'mvframe/composition'`)
|
|
21
21
|
- `"./store"`、`"./directive"`、`"./util"` → 对应 `dist` 下分包
|
|
22
|
+
- `"./notify"` → `dist/notify.js`(浏览器端请求本地 `mvframe-notify` 服务的通知 helper)
|
|
22
23
|
- `"./style"` → `dist/css/style.css`(由 `src/style/index.scss` 单独入口打包的全量工具类/变量)
|
|
23
24
|
- `"./style/cpt"` → `dist/css/cpt.css`(随组件抽取的样式;一般用 `mvframe/style` 即可)
|
|
24
25
|
|
|
@@ -153,6 +154,59 @@ yarn build
|
|
|
153
154
|
|
|
154
155
|
---
|
|
155
156
|
|
|
157
|
+
## 钉钉通知服务
|
|
158
|
+
|
|
159
|
+
MVFrame 提供只支持钉钉机器人的本地 Node 服务,命令由框架包提供:
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
# 仅启动钉钉通知服务
|
|
163
|
+
yarn notify
|
|
164
|
+
# 或发布包命令
|
|
165
|
+
yarn exec mvframe-notify
|
|
166
|
+
|
|
167
|
+
# 同时启动 yarn dev 与通知服务
|
|
168
|
+
yarn d
|
|
169
|
+
# 或发布包命令
|
|
170
|
+
yarn exec mvframe-d
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
服务读取宿主项目根目录的 `.env.mvframe-notify`(可用 `--env` 指定):
|
|
174
|
+
|
|
175
|
+
```env
|
|
176
|
+
MVFRAME_NOTIFY_PORT=3300
|
|
177
|
+
MVFRAME_NOTIFY_HOST=127.0.0.1
|
|
178
|
+
MVFRAME_NOTIFY_TOKEN=
|
|
179
|
+
DINGTALK_WEBHOOK="https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx"
|
|
180
|
+
DINGTALK_SECRET="SECxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
浏览器端只配置本地服务地址和访问 token:
|
|
184
|
+
|
|
185
|
+
```js
|
|
186
|
+
app.use(mvframe, {
|
|
187
|
+
config: {
|
|
188
|
+
notify: {
|
|
189
|
+
enabled: true,
|
|
190
|
+
endpoint: import.meta.env.VITE_MVFRAME_NOTIFY_ENDPOINT || "http://127.0.0.1:3300",
|
|
191
|
+
token: import.meta.env.VITE_MVFRAME_NOTIFY_TOKEN || "",
|
|
192
|
+
},
|
|
193
|
+
},
|
|
194
|
+
});
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
发送消息:
|
|
198
|
+
|
|
199
|
+
```js
|
|
200
|
+
await globalThis.$notify.send("需要发送到钉钉的消息");
|
|
201
|
+
|
|
202
|
+
import { notify } from "mvframe/notify";
|
|
203
|
+
await notify("需要发送到钉钉的消息");
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
钉钉 webhook / secret 必须留在 Node 服务环境变量里,不要写进 `main.js`、`src/config/index.js` 或其它会被 Vite 打包到浏览器的文件。
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
156
210
|
## 设计取向与注意
|
|
157
211
|
|
|
158
212
|
- 布局、路由守卫、Tab、菜单等 **强绑定一套交互模型**;深度定制时可局部 fork `src/router`、`src/store/tab.js` 或外层包一层封装。
|
|
@@ -163,7 +217,7 @@ yarn build
|
|
|
163
217
|
|
|
164
218
|
## 命令行:项目目录雏形(推荐)
|
|
165
219
|
|
|
166
|
-
在**空目录或已有 Vite 工程根目录**执行,生成 `src/views`、`src/component`、`src/api`、`src/assets/img`、`src/assets/style`、`src/router`、`src/pinia/chip`、`src/config` 及示例 `main.js` / `App.vue`(已 `app.use(mvframe, …)` 挂好路由、Pinia `storeChips`、config
|
|
220
|
+
在**空目录或已有 Vite 工程根目录**执行,生成 `src/views`、`src/component`、`src/api`、`src/assets/img`、`src/assets/style`、`src/router`、`src/pinia/chip`、`src/config` 及示例 `main.js` / `App.vue`(已 `app.use(mvframe, …)` 挂好路由、Pinia `storeChips`、config),同时写入/更新宿主项目 **`AGENTS.md`** 的 MVFrame Codex 规则,并复制 **`/.cursor/rules/*.mdc`**(与 mvframe 仓库内 Cursor 规则一致)。若不存在则附带 `index.html` 与 `vite.config.js`。会**合并** `package.json` 的 `scripts` / `dependencies` / `devDependencies`(与 Vite 模板一致;**同名脚本和包保留你原有值**),初始化 `.env.mvframe-notify.example` / `.env.local.example` 与 `config.notify`,并自动执行 **`yarn install`**,最后请执行 **`yarn dev`**;需要同时启动通知服务时显式执行 **`yarn exec mvframe-d`**。加 `--no-package-json` 可不改动 `package.json` 且跳过安装。
|
|
167
221
|
|
|
168
222
|
```bash
|
|
169
223
|
cd /path/to/your-app
|
|
@@ -183,6 +237,22 @@ yarn exec mvframe-init-app
|
|
|
183
237
|
|
|
184
238
|
---
|
|
185
239
|
|
|
240
|
+
## Codex 规则(`AGENTS.md`)
|
|
241
|
+
|
|
242
|
+
Codex 不会自动读取 Cursor 的 `.cursor/rules/*.mdc`。宿主项目需要安装 MVFrame 的 `AGENTS.md` 区块,明确要求 Codex 在写业务代码前优先使用 MVFrame 全局组件、全局方法与全局样式工具类:
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
cd /path/to/your-app
|
|
246
|
+
yarn exec mvframe-install-codex-rules
|
|
247
|
+
# 或:npx mvframe-install-codex-rules
|
|
248
|
+
|
|
249
|
+
# 克隆 / monorepo 中指向 mvframe 源码时
|
|
250
|
+
node /path/to/mvframe/scripts/install-codex-agents.js
|
|
251
|
+
node /path/to/mvframe/scripts/install-codex-agents.js /path/to/your-app
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
脚手架命令已自动执行这一步。生成区块带有 `MVFRAME-CODEX-RULES` 标记,重复执行只更新这段内容,不覆盖你在 `AGENTS.md` 中的其它规则。
|
|
255
|
+
|
|
186
256
|
## Cursor Skill(应用初始化)
|
|
187
257
|
|
|
188
258
|
本仓库自带 **`.cursor/skills/mvframe-app-init`**,消费方项目可复制到自身 `.cursor/skills` 以便 Cursor 识别 MVFrame 接入规范。
|
|
@@ -204,6 +274,15 @@ yarn exec mvframe-install-cursor-skill
|
|
|
204
274
|
|
|
205
275
|
---
|
|
206
276
|
|
|
277
|
+
## 迭代记录
|
|
278
|
+
|
|
279
|
+
- 新增 `mvframe-notify`:只支持钉钉机器人的本地通知服务,钉钉 webhook / secret 留在 Node 环境变量。
|
|
280
|
+
- 新增 `mvframe/notify` 与全局 `$notify`:前端通过 `config.notify` 请求本地通知服务。
|
|
281
|
+
- 新增框架命令 `yarn d` / `mvframe-d`:同时启动 `yarn dev` 与钉钉通知服务。
|
|
282
|
+
- `mvframe-init-app` 初始化 `config.notify`、`.env.mvframe-notify.example` 与 `.env.local.example`,不自动覆盖宿主 `d` 脚本。
|
|
283
|
+
|
|
284
|
+
---
|
|
285
|
+
|
|
207
286
|
## 协议
|
|
208
287
|
|
|
209
288
|
ISC(见 `package.json`)。
|
package/README.md
CHANGED
|
@@ -19,6 +19,7 @@ A Vue 3 + Vite oriented admin-shell toolkit: **Frame layout**, **common business
|
|
|
19
19
|
- `"."` → `dist/index.js` (main plugin; default export is the `install` function)
|
|
20
20
|
- `"./composition"` → `dist/composition.js` (e.g. `import { useMap } from 'mvframe/composition'`)
|
|
21
21
|
- `"./store"`, `"./directive"`, `"./util"` → matching chunks under `dist`
|
|
22
|
+
- `"./notify"` → `dist/notify.js` (browser helper for the local `mvframe-notify` service)
|
|
22
23
|
- `"./style"` → `dist/css/style.css` (full toolkit CSS from `src/style/index.scss` entry)
|
|
23
24
|
- `"./style/cpt"` → `dist/css/cpt.css` (component-extracted CSS; usually `import 'mvframe/style'` is enough)
|
|
24
25
|
|
|
@@ -153,6 +154,46 @@ Production uses **library mode** with entry `src/index.js` and obfuscation-relat
|
|
|
153
154
|
|
|
154
155
|
---
|
|
155
156
|
|
|
157
|
+
## DingTalk Notify Service
|
|
158
|
+
|
|
159
|
+
MVFrame ships a local Node service for DingTalk robot messages only:
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
yarn notify
|
|
163
|
+
yarn exec mvframe-notify
|
|
164
|
+
|
|
165
|
+
yarn d
|
|
166
|
+
yarn exec mvframe-d
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
The service reads `.env.mvframe-notify` from the host root:
|
|
170
|
+
|
|
171
|
+
```env
|
|
172
|
+
MVFRAME_NOTIFY_PORT=3300
|
|
173
|
+
MVFRAME_NOTIFY_HOST=127.0.0.1
|
|
174
|
+
MVFRAME_NOTIFY_TOKEN=
|
|
175
|
+
DINGTALK_WEBHOOK="https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx"
|
|
176
|
+
DINGTALK_SECRET="SECxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
Browser code should only configure the local endpoint/token:
|
|
180
|
+
|
|
181
|
+
```js
|
|
182
|
+
app.use(mvframe, {
|
|
183
|
+
config: {
|
|
184
|
+
notify: {
|
|
185
|
+
enabled: true,
|
|
186
|
+
endpoint: import.meta.env.VITE_MVFRAME_NOTIFY_ENDPOINT || "http://127.0.0.1:3300",
|
|
187
|
+
token: import.meta.env.VITE_MVFRAME_NOTIFY_TOKEN || "",
|
|
188
|
+
},
|
|
189
|
+
},
|
|
190
|
+
});
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
Send messages with `globalThis.$notify.send("message")` or `import { notify } from "mvframe/notify"`. Keep DingTalk webhook/secret out of browser-bundled files.
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
156
197
|
## Design notes
|
|
157
198
|
|
|
158
199
|
- Layout, guards, tabs, and menu behavior are **opinionated**; heavy customization may mean forking `src/router`, `src/store/tab.js`, or wrapping from the app.
|
|
@@ -163,7 +204,7 @@ Production uses **library mode** with entry `src/index.js` and obfuscation-relat
|
|
|
163
204
|
|
|
164
205
|
## CLI: project skeleton
|
|
165
206
|
|
|
166
|
-
From an **empty folder or existing Vite root**, generates `src/views`, `src/component`, `src/api`, `src/assets/img`, `src/assets/style`, `src/router`, `src/pinia/chip`, `src/config`, plus starter `main.js` / `App.vue` with `app.use(mvframe, …)` (routes, Pinia `storeChips`, config), and copies **`/.cursor/rules/*.mdc`** from the package (same as this repo’s Cursor rules). Adds `index.html` and `vite.config.js` only if missing (use `--force` to overwrite). **Merges** `scripts` / `dependencies` / `devDependencies` into `package.json` (existing values win for shared keys), then runs **`yarn install`**; use `--no-package-json` to skip package changes and install. Then run **`yarn dev
|
|
207
|
+
From an **empty folder or existing Vite root**, generates `src/views`, `src/component`, `src/api`, `src/assets/img`, `src/assets/style`, `src/router`, `src/pinia/chip`, `src/config`, plus starter `main.js` / `App.vue` with `app.use(mvframe, …)` (routes, Pinia `storeChips`, config). It also writes/updates host-project **`AGENTS.md`** with MVFrame Codex rules, and copies **`/.cursor/rules/*.mdc`** from the package (same as this repo’s Cursor rules). Adds `index.html` and `vite.config.js` only if missing (use `--force` to overwrite). **Merges** `scripts` / `dependencies` / `devDependencies` into `package.json` (existing values win for shared keys), initializes `.env.mvframe-notify.example` / `.env.local.example` and `config.notify`, then runs **`yarn install`**; use `--no-package-json` to skip package changes and install. Then run **`yarn dev`** or explicitly run **`yarn exec mvframe-d`** to start Vite with the notify service.
|
|
167
208
|
|
|
168
209
|
```bash
|
|
169
210
|
cd /path/to/your-app
|
|
@@ -181,6 +222,22 @@ See **`MVFRAME-SCAFFOLD.md`** in the target project. Set **`MVFRAME_SCAFFOLD_TAR
|
|
|
181
222
|
|
|
182
223
|
---
|
|
183
224
|
|
|
225
|
+
## Codex Rules (`AGENTS.md`)
|
|
226
|
+
|
|
227
|
+
Codex does **not** automatically read Cursor `.cursor/rules/*.mdc`. For host projects, install the MVFrame `AGENTS.md` section so Codex prefers MVFrame global components, global helpers, and style utilities before writing local replacements:
|
|
228
|
+
|
|
229
|
+
```bash
|
|
230
|
+
cd /path/to/your-app
|
|
231
|
+
yarn exec mvframe-install-codex-rules
|
|
232
|
+
# or: npx mvframe-install-codex-rules
|
|
233
|
+
|
|
234
|
+
# Full checkout / monorepo path to mvframe
|
|
235
|
+
node /path/to/mvframe/scripts/install-codex-agents.js
|
|
236
|
+
node /path/to/mvframe/scripts/install-codex-agents.js /path/to/your-app
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
The scaffold command already runs this step. The generated block is bounded by `MVFRAME-CODEX-RULES` markers, so rerunning the command updates only that block and preserves other `AGENTS.md` content.
|
|
240
|
+
|
|
184
241
|
## Cursor Skill (app scaffold)
|
|
185
242
|
|
|
186
243
|
This repo ships **`.cursor/skills/mvframe-app-init`**. Copy it into your app’s **`.cursor/skills`** so Cursor can pick up MVFrame integration conventions.
|
|
@@ -202,6 +259,15 @@ Default target is **`./.cursor/skills/mvframe-app-init`** under the current work
|
|
|
202
259
|
|
|
203
260
|
---
|
|
204
261
|
|
|
262
|
+
## Changelog
|
|
263
|
+
|
|
264
|
+
- Added `mvframe-notify`, a DingTalk-only local Node notification service.
|
|
265
|
+
- Added `mvframe/notify` and global `$notify` for browser calls through `config.notify`.
|
|
266
|
+
- Added framework command `yarn d` / `mvframe-d` to run `yarn dev` with the notify service.
|
|
267
|
+
- `mvframe-init-app` now initializes `config.notify`, `.env.mvframe-notify.example`, and `.env.local.example` without forcing host `d` scripts.
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
205
271
|
## License
|
|
206
272
|
|
|
207
273
|
ISC (see `package.json`).
|
package/dist/css/cpt.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@charset "UTF-8";.MvcBtnGroup[data-v-39d01040]{padding:.25rem;background:var(--color-white);border-radius:var(--btn-radius);-webkit-user-select:none;user-select:none}.MvcBtnGroup.sizeSmall[data-v-39d01040]{padding:2px;border-radius:calc(var(--btn-radius, 1rem) / 2)}.MvcBtnGroup.sizeSmall .btnItem[data-v-39d01040]{padding:.25rem .625rem;font-size:.75rem;line-height:1.5;border-radius:.1875rem}.MvcBtnGroup.sizeLarge[data-v-39d01040]{padding:.375rem;border-radius:.5rem}.MvcBtnGroup.sizeLarge .btnItem[data-v-39d01040]{padding:.5rem 1.125rem;font-size:1rem;line-height:1.5;border-radius:.375rem}.MvcBtnGroup .btnItem[data-v-39d01040]{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;gap:.25rem;padding:.375rem .875rem;font-size:.875rem;line-height:1.5;color:var(--color-txt-p);background:transparent;border:none;border-radius:var(--btn-radius);word-break:keep-all;text-wrap:nowrap;cursor:pointer;transition:var(--trans-all)}.MvcBtnGroup .btnItem[data-v-39d01040]:hover:not(:disabled):not(.isActive){background:var(--color-bg-menu-item-hover)}.MvcBtnGroup .btnItem.isActive[data-v-39d01040]{color:var(--color-on-primary-text);background:var(--color-primary);position:relative;isolation:isolate}.MvcBtnGroup .btnItem.isActive[data-v-39d01040]:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;opacity:.25;background-color:var(--color-primary);transform:translateY(20%);pointer-events:none;filter:blur(.625rem);z-index:-1}.MvcBtnGroup .btnItem[data-v-39d01040]:disabled{opacity:.5;cursor:not-allowed}.MvcCard[data-v-610b0b4c]{position:relative;border:var(--border-d);border-radius:var(--card-radius);background:var(--color-bg-page-header);box-sizing:border-box;transition:box-shadow var(--trans)}.MvcCard[data-v-610b0b4c]:hover{box-shadow:0 .5rem .5rem color-mix(in srgb,var(--color-dark) 6%,var(--color-white))}.MvcCard.MvcCard--fillParent[data-v-610b0b4c]{display:flex;flex-direction:column;align-self:stretch;min-height:0;height:100%}.MvcCard .header[data-v-610b0b4c]{position:relative;padding:.75rem 1rem;border-block-end:var(--card-header-border);z-index:2;flex-shrink:0;-webkit-user-select:none;user-select:none}.MvcCard .header .headerTitle[data-v-610b0b4c]{margin:0;font-size:.875rem;font-weight:700;color:var(--color-txt-h2)}.MvcCard .body[data-v-610b0b4c]{position:relative;padding:1rem;min-height:1rem;overflow:auto;z-index:1}.MvcCard.MvcCard--fillParent .body[data-v-610b0b4c]{flex:1 1 auto;min-height:0}.MvcCard .footer[data-v-610b0b4c]{position:relative;padding:.75rem 1rem;border-block-start:var(--card-header-border);z-index:2;flex-shrink:0;-webkit-user-select:none;user-select:none}.dragArea[data-v-665c2158]{position:absolute;top:0;left:0;bottom:0;width:1rem;display:flex;align-items:center;z-index:99}.dragArea .dragHandle[data-v-665c2158]{display:flex;align-items:center;width:.875rem;height:1.75rem;background-color:var(--color-border);border-radius:0 .125rem .125rem 0;opacity:0;cursor:ew-resize;z-index:99;transition:var(--trans-all)}.dragArea .dragHandle[data-v-665c2158]:hover,.dragArea .dragHandle.active[data-v-665c2158]{opacity:1;color:var(--color-white);background-color:var(--color-primary);box-shadow:.25rem 0 .5rem var(--color-dark1)}.dragArea:hover .dragHandle[data-v-665c2158]{opacity:1}.MvcDrawerBody[data-v-1df88ac3]{position:relative;width:100%;overflow:hidden}.drawerFooter[data-v-1df88ac3]{background-image:linear-gradient(to top,50% var(--color-white),100 transparent)}.FrameTab .tabShadow[data-v-6592753c]{position:absolute;top:100%;left:0;right:0;height:.5rem;background-image:linear-gradient(to bottom,rgba(0,0,0,.05) 0,transparent 100%);opacity:0;transition:opacity var(--trans)}.FrameTab .tabShadow.visible[data-v-6592753c]{opacity:1}.FrameTab .tabArea[data-v-6592753c]:after{content:"";position:absolute;top:2.175rem;left:0;right:0;border-bottom:var(--border-d);z-index:1}.FrameTab .tabItem[data-v-6592753c]{margin-block-end:-1px;border:var(--border-d);border-block-end-color:transparent;border-radius:.25rem .25rem 0 0;background-color:var(--color-white);opacity:.5;overflow:hidden;transition:var(--trans-all)}.FrameTab .tabItem[data-v-6592753c]:hover{opacity:.8}.FrameTab .tabItem.active[data-v-6592753c]{opacity:1;border-block-end-color:var(--color-white);z-index:3;background-color:var(--color-bg-page-header)}.FrameTab .tabItem .abs[data-v-6592753c]{transition:var(--trans-all);transform:translate(2.25rem)}.FrameTab .tabItem .abs[data-v-6592753c]:hover{opacity:.8;color:var(--color-primary)}.FrameTab .tabItem.hoverItem.active[data-v-6592753c]{padding-inline-end:2.25rem}.FrameTab .tabItem.hoverItem.active .abs[data-v-6592753c]{transform:translate(-.375rem)}.FrameTab .tabItem.hoverItem[data-v-6592753c]:hover{padding-inline-end:2.25rem}.FrameTab .tabItem.hoverItem:hover .abs[data-v-6592753c]{transform:translate(-.375rem)}.FrameTab .tabItem.disabled[data-v-6592753c]{opacity:.7;cursor:not-allowed}.FrameMenu[data-v-d7eb624b]{width:12rem;background-color:var(--color-bg-menu);overflow:hidden}.FrameMenu[data-v-d7eb624b]:after{content:"";position:absolute;top:0;right:0;bottom:0;border-right:var(--border-d)}.FrameMenu:hover .logomini[data-v-d7eb624b]{opacity:.1}.FrameMenu:hover .collapseArea[data-v-d7eb624b]{display:block!important}.FrameMenu .LogoArea .logomini[data-v-d7eb624b]{display:none}.FrameMenu .collapseArea[data-v-d7eb624b]{top:50%;right:1rem;height:1.25rem;width:1.24rem;transform:translateY(-50%)}.FrameMenu .MenuArea[data-v-d7eb624b]{height:calc(100vh - 8rem)}.FrameMenu .MenuArea .menuItem[data-v-d7eb624b]{height:2.75rem;transition:var(--trans-all)}.FrameMenu .MenuArea .menuItem[data-v-d7eb624b]:hover{background-color:var(--color-bg-menu-item-hover)}.FrameMenu .MenuArea .menuItem.active[data-v-d7eb624b]:hover{background-color:var(--color-primary);opacity:.8}.FrameMenu .MenuArea .menuItem.active .itemIcon[data-v-d7eb624b]{color:var(--color-on-primary-text)}.FrameMenu .MenuArea .childrenItem[data-v-d7eb624b]{transition:var(--trans-all)}.FrameMenu .MenuArea .childrenItem[data-v-d7eb624b]:hover{background-color:var(--color-bg-menu-children-item-hover)}.FrameMenu .MenuArea .childrenItem.active[data-v-d7eb624b]:hover{background-color:var(--color-primary);opacity:.8}.FrameMenu .MenuArea .itemChildrenArea[data-v-d7eb624b]{background-color:var(--color-bg-menu-children)}.FrameMenu .MenuArea .itemTitle.active[data-v-d7eb624b]{color:var(--color-on-primary-text)}.FrameMenu.collapse[data-v-d7eb624b]{width:4rem}.FrameMenu.collapse .collapseArea[data-v-d7eb624b]{right:1.5rem;display:none}.FrameMenu.collapse .LogoArea .logo[data-v-d7eb624b]{display:none}.FrameMenu.collapse .LogoArea .logomini[data-v-d7eb624b]{display:block;transition:opacity var(--trans)}.FrameMenu.collapse .MenuArea .menuItem.activeChild[data-v-d7eb624b]{position:relative;isolation:isolate}.FrameMenu.collapse .MenuArea .menuItem.activeChild[data-v-d7eb624b]:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;opacity:.25;background-color:var(--color-primary);transform:translateY(20%);pointer-events:none;filter:blur(.625rem);z-index:-1}.FrameMenu.collapse .MenuArea .itemChildrenArea[data-v-d7eb624b]{display:none}.FrameFooter[data-v-c3ba0162]{display:flex;height:3rem;padding:.5rem 1rem;gap:.5rem;font-size:14px}.MvcFrame[data-v-b25da17b]{display:flex}.MvcFrame .PageArea[data-v-b25da17b]{flex-grow:1;position:relative;min-height:0}.MvcList[data-v-6a45c452]{display:flex;flex-direction:column;width:100%;min-height:0;flex:1 1 auto;height:100%;-webkit-user-select:none;user-select:none}.MvcList .listViewport[data-v-6a45c452]{position:relative;flex:1 1 auto;min-height:0;overflow:hidden}.MvcList .listScroll[data-v-6a45c452]{position:relative;box-sizing:border-box;height:100%;max-height:100%}.MvcList .listItem[data-v-6a45c452]{padding:.5rem;margin-block-end:.25rem}.MvcList .listItem[data-v-6a45c452]:last-child{margin-block-end:0}.MvcList .listItem[data-v-6a45c452]{font-size:.75rem;line-height:1.5;color:var(--color-txt-p);background:transparent;border-radius:.25rem;cursor:pointer;transition:var(--trans-all)}.MvcList .listItem[data-v-6a45c452]:hover:not(.active):not(.isDisabled){background:var(--color-bg-menu-item-hover)}.MvcList .listItem.active[data-v-6a45c452]{position:sticky!important;top:0;color:var(--color-on-primary-text);background:var(--color-primary);z-index:9;position:relative;isolation:isolate}.MvcList .listItem.active[data-v-6a45c452]:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;opacity:.25;background-color:var(--color-primary);transform:translateY(20%);pointer-events:none;filter:blur(.625rem);z-index:-1}.MvcList .listItem.isDisabled[data-v-6a45c452]{opacity:.5;cursor:not-allowed}.MvcList.sizeSmall .listItem[data-v-6a45c452]{padding:.25rem .375rem;margin-block-end:.125rem;font-size:.6875rem;border-radius:.1875rem}.MvcList.sizeSmall .listItem[data-v-6a45c452]:last-child{margin-block-end:0}.MvcList.sizeLarge .listItem[data-v-6a45c452]{padding:.625rem .75rem;margin-block-end:.5rem;font-size:.875rem;border-radius:.375rem}.MvcList.sizeLarge .listItem[data-v-6a45c452]:last-child{margin-block-end:0}.loadingFade-enter-active[data-v-89f58c94],.loadingFade-leave-active[data-v-89f58c94]{transition:opacity var(--trans)}.loadingFade-enter-from[data-v-89f58c94],.loadingFade-leave-to[data-v-89f58c94]{opacity:0}.MvcLoading[data-v-89f58c94]{pointer-events:auto;-webkit-backdrop-filter:blur(.25rem);backdrop-filter:blur(.25rem)}.loaderTxt[data-v-89f58c94]{max-width:15rem;word-break:break-word}.MvcLogin[data-v-6faa6992]{background-color:var(--color-bg-body)}.panelWrap[data-v-6faa6992]{background-color:var(--color-bg-menu);box-shadow:0 .25rem 1rem #0000000f}.qr-dingtalk[data-v-6faa6992]{background:#0089ff}.qr-feishu[data-v-6faa6992]{background:#3370ff}.qr-wechat[data-v-6faa6992]{background:#07c160}.oauthGoogle[data-v-6faa6992]{display:flex;align-items:center;justify-content:center;gap:.75rem;min-height:2.5rem;padding:.5rem 1rem;box-sizing:border-box;background:#fff;border:1px solid #747775;border-radius:.25rem;font-family:Roboto,system-ui,-apple-system,Segoe UI,sans-serif;font-size:.875rem;font-weight:500;line-height:1.25;color:#1f1f1f;cursor:pointer;transition:var(--trans-all)}.oauthGoogle[data-v-6faa6992]:hover:not(:disabled){box-shadow:0 1px 2px #3c40434d,0 1px 3px 1px #3c404326}.oauthGoogle[data-v-6faa6992]:disabled{opacity:.38;cursor:not-allowed}.oauthGoogle[data-v-6faa6992]:focus-visible{outline:2px solid #4285f4;outline-offset:2px}.oauthApple[data-v-6faa6992]{display:flex;align-items:center;justify-content:center;gap:.5rem;min-height:2.5rem;padding:.5rem 1rem;box-sizing:border-box;background:#000;border:none;border-radius:.375rem;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Helvetica Neue,sans-serif;font-size:1.0625rem;font-weight:600;line-height:1.2;color:#fff;cursor:pointer;transition:var(--trans-all)}.oauthApple[data-v-6faa6992]:hover:not(:disabled){opacity:.88}.oauthApple[data-v-6faa6992]:disabled{opacity:.3;cursor:not-allowed}.oauthApple[data-v-6faa6992]:focus-visible{outline:2px solid #fff;outline-offset:2px}.MvcNote[data-v-e3e84cc8]{position:relative;padding:.5rem 1rem;background-color:var(--color-bg-menu);font-size:.875rem;border-radius:0 .5rem .5rem 0}.MvcNote[data-v-e3e84cc8]:hover:before{opacity:1}.MvcNote[data-v-e3e84cc8]:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;opacity:0;pointer-events:none;border-radius:0 .5rem .5rem 0;border:1px solid var(--color-gray);transition:opacity var(--trans)}.MvcPage[data-v-3ff06276]{position:relative;display:flex;flex-direction:column;min-height:calc(100vh - 3rem);z-index:1}.MvcPage .PageHeader[data-v-3ff06276]{position:sticky;display:flex;align-items:center;justify-content:space-between;padding:.5rem 1rem;min-height:4rem;border-bottom:var(--border-d);background-color:var(--color-bg-page-header);z-index:9}.MvcPage .PageHeader .PageHeaderTitle[data-v-3ff06276]{margin:0}.MvcPage .PageHeader .PageHeaderSubTitle[data-v-3ff06276]{margin:0;font-size:.875rem;color:var(--color-txt-p)}.MvcPage .PageBody[data-v-3ff06276]{position:relative;display:flex;flex-direction:column;flex:1 1 auto;min-height:0;background-color:var(--color-bg-page-body);z-index:2}.MvcPage.hasTab[data-v-3ff06276]{z-index:10}.MvcPage.hasTab .PageHeader[data-v-3ff06276]{top:2.5rem}.ghost[data-v-1927ce52]{cursor:grabbing}.typeItem[data-v-1927ce52]{cursor:pointer}.typeItem[data-v-1927ce52]:hover{background-color:var(--mg-gray3)}.typeItem.active[data-v-1927ce52]{color:var(--mg-white);background-color:var(--mg-primary)}.columnItem[data-v-1927ce52]:hover{background-color:var(--mg-gray3)}.columnItem .fixedBtn[data-v-1927ce52]{cursor:pointer}.columnItem .fixedBtn[data-v-1927ce52]:hover{background-color:var(--mg-primary1)}.MainTable[data-v-f79bf58d]{max-width:calc(100% + 2px);width:calc(100% + 2px);margin:0 -1px}[data-v-4dba94bf] .el-textarea__inner{box-sizing:border-box}.ghost[data-v-73161392]{cursor:grabbing}.typeItem[data-v-73161392]{cursor:pointer}.typeItem[data-v-73161392]:hover{background-color:var(--mg-gray3)}.typeItem.active[data-v-73161392]{color:var(--color-txt-white);background-color:var(--color-bg-menu-item-active);position:relative;isolation:isolate}.typeItem.active[data-v-73161392]:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;opacity:.25;background-color:var(--color-primary);transform:translateY(20%);pointer-events:none;filter:blur(.625rem);z-index:-1}.columnItem[data-v-73161392]:hover{background-color:var(--color-bg-menu-item-hover)}.columnItem .fixedBtn[data-v-73161392]{cursor:pointer}.columnItem .fixedBtn[data-v-73161392]:hover{background-color:var(--mg-primary1)}.tableFooter[data-v-a13ba899]{margin-block-start:-1px;border-block-start:var(--border-d);border-radius:0 0 .5rem .5rem}.vtableHost[data-v-a13ba899]{min-height:10rem;background-color:var(--color-white)}.vtableHostFill[data-v-a13ba899]{height:100%}.treeCellLoadMask[data-v-a13ba899]{z-index:10;box-sizing:border-box;pointer-events:auto;cursor:wait;background-color:#ffffffb8;border-radius:.125rem}.treeCellLoadMask .loadMaskIcon[data-v-a13ba899]{pointer-events:none}
|
|
1
|
+
@charset "UTF-8";.MvcBtnGroup[data-v-39d01040]{padding:.25rem;background:var(--color-white);border-radius:var(--btn-radius);-webkit-user-select:none;user-select:none}.MvcBtnGroup.sizeSmall[data-v-39d01040]{padding:2px;border-radius:calc(var(--btn-radius, 1rem) / 2)}.MvcBtnGroup.sizeSmall .btnItem[data-v-39d01040]{padding:.25rem .625rem;font-size:.75rem;line-height:1.5;border-radius:.1875rem}.MvcBtnGroup.sizeLarge[data-v-39d01040]{padding:.375rem;border-radius:.5rem}.MvcBtnGroup.sizeLarge .btnItem[data-v-39d01040]{padding:.5rem 1.125rem;font-size:1rem;line-height:1.5;border-radius:.375rem}.MvcBtnGroup .btnItem[data-v-39d01040]{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;gap:.25rem;padding:.375rem .875rem;font-size:.875rem;line-height:1.5;color:var(--color-txt-p);background:transparent;border:none;border-radius:var(--btn-radius);word-break:keep-all;text-wrap:nowrap;cursor:pointer;transition:var(--trans-all)}.MvcBtnGroup .btnItem[data-v-39d01040]:hover:not(:disabled):not(.isActive){background:var(--color-bg-menu-item-hover)}.MvcBtnGroup .btnItem.isActive[data-v-39d01040]{color:var(--color-on-primary-text);background:var(--color-primary);position:relative;isolation:isolate}.MvcBtnGroup .btnItem.isActive[data-v-39d01040]:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;opacity:.25;background-color:var(--color-primary);transform:translateY(20%);pointer-events:none;filter:blur(.625rem);z-index:-1}.MvcBtnGroup .btnItem[data-v-39d01040]:disabled{opacity:.5;cursor:not-allowed}.MvcCard[data-v-610b0b4c]{position:relative;border:var(--border-d);border-radius:var(--card-radius);background:var(--color-bg-page-header);box-sizing:border-box;transition:box-shadow var(--trans)}.MvcCard[data-v-610b0b4c]:hover{box-shadow:0 .5rem .5rem color-mix(in srgb,var(--color-dark) 6%,var(--color-white))}.MvcCard.MvcCard--fillParent[data-v-610b0b4c]{display:flex;flex-direction:column;align-self:stretch;min-height:0;height:100%}.MvcCard .header[data-v-610b0b4c]{position:relative;padding:.75rem 1rem;border-block-end:var(--card-header-border);z-index:2;flex-shrink:0;-webkit-user-select:none;user-select:none}.MvcCard .header .headerTitle[data-v-610b0b4c]{margin:0;font-size:.875rem;font-weight:700;color:var(--color-txt-h2)}.MvcCard .body[data-v-610b0b4c]{position:relative;padding:1rem;min-height:1rem;overflow:auto;z-index:1}.MvcCard.MvcCard--fillParent .body[data-v-610b0b4c]{flex:1 1 auto;min-height:0}.MvcCard .footer[data-v-610b0b4c]{position:relative;padding:.75rem 1rem;border-block-start:var(--card-header-border);z-index:2;flex-shrink:0;-webkit-user-select:none;user-select:none}.dragArea[data-v-665c2158]{position:absolute;top:0;left:0;bottom:0;width:1rem;display:flex;align-items:center;z-index:99}.dragArea .dragHandle[data-v-665c2158]{display:flex;align-items:center;width:.875rem;height:1.75rem;background-color:var(--color-border);border-radius:0 .125rem .125rem 0;opacity:0;cursor:ew-resize;z-index:99;transition:var(--trans-all)}.dragArea .dragHandle[data-v-665c2158]:hover,.dragArea .dragHandle.active[data-v-665c2158]{opacity:1;color:var(--color-white);background-color:var(--color-primary);box-shadow:.25rem 0 .5rem var(--color-dark1)}.dragArea:hover .dragHandle[data-v-665c2158]{opacity:1}.MvcDrawerBody[data-v-1df88ac3]{position:relative;width:100%;overflow:hidden}.drawerFooter[data-v-1df88ac3]{background-image:linear-gradient(to top,50% var(--color-white),100 transparent)}.FrameTab .tabShadow[data-v-6592753c]{position:absolute;top:100%;left:0;right:0;height:.5rem;background-image:linear-gradient(to bottom,rgba(0,0,0,.05) 0,transparent 100%);opacity:0;transition:opacity var(--trans)}.FrameTab .tabShadow.visible[data-v-6592753c]{opacity:1}.FrameTab .tabArea[data-v-6592753c]:after{content:"";position:absolute;top:2.175rem;left:0;right:0;border-bottom:var(--border-d);z-index:1}.FrameTab .tabItem[data-v-6592753c]{margin-block-end:-1px;border:var(--border-d);border-block-end-color:transparent;border-radius:.25rem .25rem 0 0;background-color:var(--color-white);opacity:.5;overflow:hidden;transition:var(--trans-all)}.FrameTab .tabItem[data-v-6592753c]:hover{opacity:.8}.FrameTab .tabItem.active[data-v-6592753c]{opacity:1;border-block-end-color:var(--color-white);z-index:3;background-color:var(--color-bg-page-header)}.FrameTab .tabItem .abs[data-v-6592753c]{transition:var(--trans-all);transform:translate(2.25rem)}.FrameTab .tabItem .abs[data-v-6592753c]:hover{opacity:.8;color:var(--color-primary)}.FrameTab .tabItem.hoverItem.active[data-v-6592753c]{padding-inline-end:2.25rem}.FrameTab .tabItem.hoverItem.active .abs[data-v-6592753c]{transform:translate(-.375rem)}.FrameTab .tabItem.hoverItem[data-v-6592753c]:hover{padding-inline-end:2.25rem}.FrameTab .tabItem.hoverItem:hover .abs[data-v-6592753c]{transform:translate(-.375rem)}.FrameTab .tabItem.disabled[data-v-6592753c]{opacity:.7;cursor:not-allowed}.FrameMenu[data-v-d7eb624b]{width:12rem;background-color:var(--color-bg-menu);overflow:hidden}.FrameMenu[data-v-d7eb624b]:after{content:"";position:absolute;top:0;right:0;bottom:0;border-right:var(--border-d)}.FrameMenu:hover .logomini[data-v-d7eb624b]{opacity:.1}.FrameMenu:hover .collapseArea[data-v-d7eb624b]{display:block!important}.FrameMenu .LogoArea .logomini[data-v-d7eb624b]{display:none}.FrameMenu .collapseArea[data-v-d7eb624b]{top:50%;right:1rem;height:1.25rem;width:1.24rem;transform:translateY(-50%)}.FrameMenu .MenuArea[data-v-d7eb624b]{height:calc(100vh - 8rem)}.FrameMenu .MenuArea .menuItem[data-v-d7eb624b]{height:2.75rem;transition:var(--trans-all)}.FrameMenu .MenuArea .menuItem[data-v-d7eb624b]:hover{background-color:var(--color-bg-menu-item-hover)}.FrameMenu .MenuArea .menuItem.active[data-v-d7eb624b]:hover{background-color:var(--color-primary);opacity:.8}.FrameMenu .MenuArea .menuItem.active .itemIcon[data-v-d7eb624b]{color:var(--color-on-primary-text)}.FrameMenu .MenuArea .childrenItem[data-v-d7eb624b]{transition:var(--trans-all)}.FrameMenu .MenuArea .childrenItem[data-v-d7eb624b]:hover{background-color:var(--color-bg-menu-children-item-hover)}.FrameMenu .MenuArea .childrenItem.active[data-v-d7eb624b]:hover{background-color:var(--color-primary);opacity:.8}.FrameMenu .MenuArea .itemChildrenArea[data-v-d7eb624b]{background-color:var(--color-bg-menu-children)}.FrameMenu .MenuArea .itemTitle.active[data-v-d7eb624b]{color:var(--color-on-primary-text)}.FrameMenu.collapse[data-v-d7eb624b]{width:4rem}.FrameMenu.collapse .collapseArea[data-v-d7eb624b]{right:1.5rem;display:none}.FrameMenu.collapse .LogoArea .logo[data-v-d7eb624b]{display:none}.FrameMenu.collapse .LogoArea .logomini[data-v-d7eb624b]{display:block;transition:opacity var(--trans)}.FrameMenu.collapse .MenuArea .menuItem.activeChild[data-v-d7eb624b]{position:relative;isolation:isolate}.FrameMenu.collapse .MenuArea .menuItem.activeChild[data-v-d7eb624b]:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;opacity:.25;background-color:var(--color-primary);transform:translateY(20%);pointer-events:none;filter:blur(.625rem);z-index:-1}.FrameMenu.collapse .MenuArea .itemChildrenArea[data-v-d7eb624b]{display:none}.FrameFooter[data-v-c3ba0162]{display:flex;height:3rem;padding:.5rem 1rem;gap:.5rem;font-size:14px}.MvcFrame[data-v-b25da17b]{display:flex}.MvcFrame .PageArea[data-v-b25da17b]{flex-grow:1;position:relative;min-height:0}.MvcList[data-v-6a45c452]{display:flex;flex-direction:column;width:100%;min-height:0;flex:1 1 auto;height:100%;-webkit-user-select:none;user-select:none}.MvcList .listViewport[data-v-6a45c452]{position:relative;flex:1 1 auto;min-height:0;overflow:hidden}.MvcList .listScroll[data-v-6a45c452]{position:relative;box-sizing:border-box;height:100%;max-height:100%}.MvcList .listItem[data-v-6a45c452]{padding:.5rem;margin-block-end:.25rem}.MvcList .listItem[data-v-6a45c452]:last-child{margin-block-end:0}.MvcList .listItem[data-v-6a45c452]{font-size:.75rem;line-height:1.5;color:var(--color-txt-p);background:transparent;border-radius:.25rem;cursor:pointer;transition:var(--trans-all)}.MvcList .listItem[data-v-6a45c452]:hover:not(.active):not(.isDisabled){background:var(--color-bg-menu-item-hover)}.MvcList .listItem.active[data-v-6a45c452]{position:sticky!important;top:0;color:var(--color-on-primary-text);background:var(--color-primary);z-index:9;position:relative;isolation:isolate}.MvcList .listItem.active[data-v-6a45c452]:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;opacity:.25;background-color:var(--color-primary);transform:translateY(20%);pointer-events:none;filter:blur(.625rem);z-index:-1}.MvcList .listItem.isDisabled[data-v-6a45c452]{opacity:.5;cursor:not-allowed}.MvcList.sizeSmall .listItem[data-v-6a45c452]{padding:.25rem .375rem;margin-block-end:.125rem;font-size:.6875rem;border-radius:.1875rem}.MvcList.sizeSmall .listItem[data-v-6a45c452]:last-child{margin-block-end:0}.MvcList.sizeLarge .listItem[data-v-6a45c452]{padding:.625rem .75rem;margin-block-end:.5rem;font-size:.875rem;border-radius:.375rem}.MvcList.sizeLarge .listItem[data-v-6a45c452]:last-child{margin-block-end:0}.loadingFade-enter-active[data-v-89f58c94],.loadingFade-leave-active[data-v-89f58c94]{transition:opacity var(--trans)}.loadingFade-enter-from[data-v-89f58c94],.loadingFade-leave-to[data-v-89f58c94]{opacity:0}.MvcLoading[data-v-89f58c94]{pointer-events:auto;-webkit-backdrop-filter:blur(.25rem);backdrop-filter:blur(.25rem)}.loaderTxt[data-v-89f58c94]{max-width:15rem;word-break:break-word}.MvcLogin[data-v-6faa6992]{background-color:var(--color-bg-body)}.panelWrap[data-v-6faa6992]{background-color:var(--color-bg-menu);box-shadow:0 .25rem 1rem #0000000f}.qr-dingtalk[data-v-6faa6992]{background:#0089ff}.qr-feishu[data-v-6faa6992]{background:#3370ff}.qr-wechat[data-v-6faa6992]{background:#07c160}.oauthGoogle[data-v-6faa6992]{display:flex;align-items:center;justify-content:center;gap:.75rem;min-height:2.5rem;padding:.5rem 1rem;box-sizing:border-box;background:#fff;border:1px solid #747775;border-radius:.25rem;font-family:Roboto,system-ui,-apple-system,Segoe UI,sans-serif;font-size:.875rem;font-weight:500;line-height:1.25;color:#1f1f1f;cursor:pointer;transition:var(--trans-all)}.oauthGoogle[data-v-6faa6992]:hover:not(:disabled){box-shadow:0 1px 2px #3c40434d,0 1px 3px 1px #3c404326}.oauthGoogle[data-v-6faa6992]:disabled{opacity:.38;cursor:not-allowed}.oauthGoogle[data-v-6faa6992]:focus-visible{outline:2px solid #4285f4;outline-offset:2px}.oauthApple[data-v-6faa6992]{display:flex;align-items:center;justify-content:center;gap:.5rem;min-height:2.5rem;padding:.5rem 1rem;box-sizing:border-box;background:#000;border:none;border-radius:.375rem;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Helvetica Neue,sans-serif;font-size:1.0625rem;font-weight:600;line-height:1.2;color:#fff;cursor:pointer;transition:var(--trans-all)}.oauthApple[data-v-6faa6992]:hover:not(:disabled){opacity:.88}.oauthApple[data-v-6faa6992]:disabled{opacity:.3;cursor:not-allowed}.oauthApple[data-v-6faa6992]:focus-visible{outline:2px solid #fff;outline-offset:2px}.MvcNote[data-v-e3e84cc8]{position:relative;padding:.5rem 1rem;background-color:var(--color-bg-menu);font-size:.875rem;border-radius:0 .5rem .5rem 0}.MvcNote[data-v-e3e84cc8]:hover:before{opacity:1}.MvcNote[data-v-e3e84cc8]:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;opacity:0;pointer-events:none;border-radius:0 .5rem .5rem 0;border:1px solid var(--color-gray);transition:opacity var(--trans)}.MvcPage[data-v-763c9c00]{position:relative;display:flex;flex-direction:column;min-height:calc(100vh - 3rem);z-index:1}.MvcPage .PageHeader[data-v-763c9c00]{position:sticky;display:flex;align-items:center;justify-content:space-between;padding:.5rem 1rem;min-height:4rem;border-bottom:var(--border-d);background-color:var(--color-bg-page-header);z-index:9}.MvcPage .PageHeader .PageHeaderTitle[data-v-763c9c00]{margin:0}.MvcPage .PageHeader .PageHeaderSubTitle[data-v-763c9c00]{margin:0;font-size:.875rem;color:var(--color-txt-p)}.MvcPage .PageBody[data-v-763c9c00]{position:relative;display:flex;flex-direction:column;flex:1 1 auto;min-height:0;background-color:var(--color-bg-page-body);z-index:2}.MvcPage.hasTab[data-v-763c9c00]{z-index:10}.MvcPage.hasTab .PageHeader[data-v-763c9c00]{top:2.25rem}.ghost[data-v-1927ce52]{cursor:grabbing}.typeItem[data-v-1927ce52]{cursor:pointer}.typeItem[data-v-1927ce52]:hover{background-color:var(--mg-gray3)}.typeItem.active[data-v-1927ce52]{color:var(--mg-white);background-color:var(--mg-primary)}.columnItem[data-v-1927ce52]:hover{background-color:var(--mg-gray3)}.columnItem .fixedBtn[data-v-1927ce52]{cursor:pointer}.columnItem .fixedBtn[data-v-1927ce52]:hover{background-color:var(--mg-primary1)}.MainTable[data-v-f79bf58d]{max-width:calc(100% + 2px);width:calc(100% + 2px);margin:0 -1px}[data-v-4dba94bf] .el-textarea__inner{box-sizing:border-box}.ghost[data-v-73161392]{cursor:grabbing}.typeItem[data-v-73161392]{cursor:pointer}.typeItem[data-v-73161392]:hover{background-color:var(--mg-gray3)}.typeItem.active[data-v-73161392]{color:var(--color-txt-white);background-color:var(--color-bg-menu-item-active);position:relative;isolation:isolate}.typeItem.active[data-v-73161392]:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;opacity:.25;background-color:var(--color-primary);transform:translateY(20%);pointer-events:none;filter:blur(.625rem);z-index:-1}.columnItem[data-v-73161392]:hover{background-color:var(--color-bg-menu-item-hover)}.columnItem .fixedBtn[data-v-73161392]{cursor:pointer}.columnItem .fixedBtn[data-v-73161392]:hover{background-color:var(--mg-primary1)}.tableFooter[data-v-a13ba899]{margin-block-start:-1px;border-block-start:var(--border-d);border-radius:0 0 .5rem .5rem}.vtableHost[data-v-a13ba899]{min-height:10rem;background-color:var(--color-white)}.vtableHostFill[data-v-a13ba899]{height:100%}.treeCellLoadMask[data-v-a13ba899]{z-index:10;box-sizing:border-box;pointer-events:auto;cursor:wait;background-color:#ffffffb8;border-radius:.125rem}.treeCellLoadMask .loadMaskIcon[data-v-a13ba899]{pointer-events:none}
|
package/dist/index.js
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import "./util.js";
|
|
2
2
|
import "./directive.js";
|
|
3
3
|
import "./store-shared.js";
|
|
4
|
-
import { j as
|
|
4
|
+
import { j as o, k as r, g as n, a as g, m as l, b as u, c as L, n as M, p as c, u as b } from "./vendor.js";
|
|
5
|
+
import "./notify.js";
|
|
5
6
|
import "./composition.js";
|
|
6
7
|
export {
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
o as builtinLocales,
|
|
9
|
+
r as default,
|
|
9
10
|
n as getBuiltinLangMaps,
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
11
|
+
g as getMaps,
|
|
12
|
+
l as mapLang,
|
|
13
|
+
u as mapLangPath,
|
|
14
|
+
L as mergeMaps,
|
|
15
|
+
M as normalizeBuiltinLocale,
|
|
16
|
+
c as patchMaps,
|
|
17
|
+
b as useMap
|
|
17
18
|
};
|
package/dist/notify.js
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
const y = {
|
|
2
|
+
endpoint: "",
|
|
3
|
+
path: "/notify",
|
|
4
|
+
token: "",
|
|
5
|
+
timeout: 5e3
|
|
6
|
+
};
|
|
7
|
+
function d(n) {
|
|
8
|
+
return String(n || "").replace(/\/+$/, "");
|
|
9
|
+
}
|
|
10
|
+
function m(n) {
|
|
11
|
+
const t = String(n || "/notify");
|
|
12
|
+
return t.startsWith("/") ? t : `/${t}`;
|
|
13
|
+
}
|
|
14
|
+
function p(n = {}) {
|
|
15
|
+
var t;
|
|
16
|
+
return {
|
|
17
|
+
...y,
|
|
18
|
+
...((t = globalThis.$config) == null ? void 0 : t.notify) || {},
|
|
19
|
+
...n || {}
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function l(n = {}) {
|
|
23
|
+
const t = async (s, r = {}) => {
|
|
24
|
+
var f;
|
|
25
|
+
const o = p({
|
|
26
|
+
...n,
|
|
27
|
+
...r.config || {}
|
|
28
|
+
});
|
|
29
|
+
if (o.enabled === !1)
|
|
30
|
+
return {
|
|
31
|
+
ok: !0,
|
|
32
|
+
skipped: !0,
|
|
33
|
+
message: "notify disabled"
|
|
34
|
+
};
|
|
35
|
+
if (!o.endpoint)
|
|
36
|
+
throw new Error("missing notify.endpoint");
|
|
37
|
+
const c = new AbortController(), g = Number(o.timeout || 5e3), u = setTimeout(() => c.abort(), g);
|
|
38
|
+
try {
|
|
39
|
+
const i = await fetch(`${d(o.endpoint)}${m(o.path)}`, {
|
|
40
|
+
method: "POST",
|
|
41
|
+
headers: {
|
|
42
|
+
"Content-Type": "application/json",
|
|
43
|
+
...o.token ? { "x-mvframe-notify-token": o.token } : {}
|
|
44
|
+
},
|
|
45
|
+
body: JSON.stringify({
|
|
46
|
+
message: s,
|
|
47
|
+
atMobiles: r.atMobiles,
|
|
48
|
+
atUserIds: r.atUserIds,
|
|
49
|
+
atAll: r.atAll
|
|
50
|
+
}),
|
|
51
|
+
signal: c.signal
|
|
52
|
+
}), e = (i.headers.get("content-type") || "").includes("application/json") ? await i.json() : { message: await i.text() };
|
|
53
|
+
if (!i.ok || (e == null ? void 0 : e.ok) === !1) {
|
|
54
|
+
const a = new Error((e == null ? void 0 : e.message) || ((f = e == null ? void 0 : e.push) == null ? void 0 : f.message) || "notify failed");
|
|
55
|
+
throw a.response = i, a.payload = e, a;
|
|
56
|
+
}
|
|
57
|
+
return e;
|
|
58
|
+
} finally {
|
|
59
|
+
clearTimeout(u);
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
return {
|
|
63
|
+
send: t,
|
|
64
|
+
ding: t,
|
|
65
|
+
dingtalk: t
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
async function b(n, t) {
|
|
69
|
+
return l().send(n, t);
|
|
70
|
+
}
|
|
71
|
+
const T = (n, t = {}) => {
|
|
72
|
+
const s = l(t);
|
|
73
|
+
n.config.globalProperties.$notify = s, globalThis.$notify = s;
|
|
74
|
+
};
|
|
75
|
+
export {
|
|
76
|
+
l as createNotifyClient,
|
|
77
|
+
T as default,
|
|
78
|
+
p as getNotifyConfig,
|
|
79
|
+
b as notify
|
|
80
|
+
};
|
package/dist/store-shared.js
CHANGED
|
@@ -93,7 +93,9 @@ const L = () => ({
|
|
|
93
93
|
},
|
|
94
94
|
closeTab(t, s) {
|
|
95
95
|
var a;
|
|
96
|
-
this.tabs.splice(s, 1), t.name === this.ctab.name && ((a = globalThis.$router) == null || a.push({
|
|
96
|
+
this.tabs.length > 1 && (this.tabs.splice(s, 1), t.name === this.ctab.name && ((a = globalThis.$router) == null || a.push({
|
|
97
|
+
name: this.tabs[s - 1 > 0 ? s - 1 : 0].name
|
|
98
|
+
})));
|
|
97
99
|
},
|
|
98
100
|
closeRightTab(t, s) {
|
|
99
101
|
var n;
|