92 Commits

Author SHA1 Message Date
lzh
a1a2d86b0b build(ci): 新增 Jenkinsfile + docker-compose 部署模板
- Jenkinsfile:master→PROD(172.17.16.14)、release/next→STAGING(172.17.16.7)
  镜像推 172.17.16.7:5000/aiot-platform-ui,宿主机暴露 80
- docker-compose.frontend.yml:nginx 容器加入 1panel-network 走后端 aiot-gateway 反代
2026-04-28 14:40:17 +08:00
lzh
ba8509dc66 style(@vben/docs): markdownlint 自动格式化设计稿
lint-md 对上一条设计稿做了表格管道对齐和多空格归一化,
收进单独提交保持每次提交可 diff。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 20:27:56 +08:00
lzh
6b8a05cc4d docs: 补充用户-项目绑定功能设计稿
记录本轮 feat/multi-tenant-project 分支的需求背景、双入口绑定
方案与前后端联动约定,供后续回溯决策。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 20:27:09 +08:00
lzh
6b8626907e feat(@vben/web-antd): Lottie 品牌加载动画(主题色自适应)
- 新增全局 loading:自定义 apps/web-antd/loading.html 覆盖 inject-app-loading
  的默认模板,Vue 挂载前就能播放品牌动画
- 新增 LottieLoading 组件,用于 SSO 回调等"白屏时间偏长"的运行时场景
- 换色方案:Lottie JSON 里原本 5 档硬编码绿色,按当前主题 colorPrimary
  生成 5 档 HSL 亮度做指纹替换。挂载前从 localStorage preferences 读色,
  挂载后读 CSS 变量 --primary,两条路径共用 public/lottie-theme-patch.js
  一份 classic-JS 源,window.__LottieThemePatch__ 上暴露
- vite 插件:启动/构建时从 node_modules 把 lottie_light.min.js 拷到
  public/ 供 loading.html <script> 加载;.gitignore 排除该产物
- LottieLoading 复用 loading.html 已经挂好的 window.lottie,不再把
  ~170KB 播放器再打进 Vue 产物

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 20:26:48 +08:00
lzh
348e40e9c2 style(@vben/web-antd): 项目成员管理模块格式微调
lint 自动格式化:长签名/标题换行、import 顺序、空元素展开;
顺手移除 new Set(undefined) 无意义的 `?? []` 兜底。无行为变更。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 20:25:19 +08:00
lzh
86a3c1f97b fix(@vben/web-antd): SSO callback 改走 body 传递 code/state
授权 code 原先以 query 形式发给 /system/sso/callback,会被 nginx access
log、浏览器历史和 Referer 捕获。改走 POST body,与后端 @RequestBody
SsoCallbackReqVO 对齐,避免一次性码泄露给中间层。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 20:24:52 +08:00
lzh
09538b03cb feat(@vben/web-antd): 项目成员管理改 Drawer + 分页 + 增量
从 Modal 多选改为 Drawer 分页表,更接近"成员管理"语义:
- 原 assign-user-form.vue 重写为 Drawer + Vxe 分页表
- 新增 add-user-modal.vue 子弹窗用于添加用户(过滤已是成员)
- 每行一个"移除"popConfirm 按钮,调 removeProjectUser 单删
- 顶部 keyword 搜索,按 username/nickname/mobile 模糊
- 底部提示:超管不在此列表(后端已过滤)
- data.ts 新增 useProjectMemberGridColumns
- api 新增 getProjectUserPage / addProjectUsers / removeProjectUser
- project/index.vue 接入点改 useVbenDrawer

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 15:48:43 +08:00
lzh
b15b6b4f4d feat(@vben/web-antd): 用户-项目绑定管理双入口
- 用户管理页:下拉操作新增 "分配项目" 按钮 + assign-project-form.vue 弹窗
  沿用现有 assign-role-form 的交互(多选 + 覆盖写入)
- 项目管理页:行操作新增 "管理成员" 按钮 + assign-user-form.vue 弹窗
  下拉支持搜索用户 nickname/username
- 新建 api/system/user-project/ 封装 4 个接口
- api/system/project 新增 getAllProjectSimpleList:
  顶栏 simple-list 已改为用户授权过滤,管理员分配场景需要全量下拉
- 空集保存二次确认:清空所有分配/成员时弹 AntModal.confirm,防误操作
- 权限点:system:user:assign-project / system:project:assign-user

设计文档:docs/design/2026-04-23-user-project-binding.md

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 14:51:09 +08:00
lzh
20251316ae chore: 忽略根目录 CLAUDE.md(本地 AI 上下文文件)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 23:46:08 +08:00
lzh
37acdcf394 feat(@vben/web-antd): 顶栏项目切换器 + 物联运维平台 SSO 无感跳转
- 顶栏 TenantDropdown 替换为 ProjectDropdown(新建 widget)
  - 进入时拉 /system/project/simple-list;仅当本地 projectId 不在列表时
    才回退到首项,避免静默改写用户选择
  - 空列表不渲染,避免出现永远空下拉
- 新增"物联运维"按钮,走 OAuth2 authorization code 流程跳 IoT 前端
  - state 使用 crypto.randomUUID() / getRandomValues() 生成(CSRF 防护)
  - VITE_IOT_BASE_URL 未配置时按钮隐藏,不再硬编码兜底 URL
  - 使用原生 <button disabled> 替代 <a role="button">,修复可访问性
- 新增 /sso-callback 回调页 + /system/sso/callback API
  - 挂载后立即 history.replaceState 清 code/state,避免二次 exchange
  - API 层做 snake_case → camelCase 映射,统一前端风格
  - 文档化 redirectUri 必须与 OAuth2 客户端 redirectUris 白名单一致
- authStore 新增 ssoLogin,与 authLogin 抽取共用 postAuthSuccess
  - token 为空直接抛错,fetchUserInfo 失败回滚 token 避免 401 循环

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 23:43:44 +08:00
lzh
72ed0eb5aa feat(@vben/web-antd): 支持按 platform 过滤多前端菜单
业务平台 (biz) 与物联运维平台 (iot) 共享同一后端,需按前端来源过滤菜单,
避免同一角色在两端看到相同菜单。

- 新增 CLIENT_ID 常量,请求拦截器 / 基础 client 统一注入 X-Client-Id 头,
  后端密码登录 & refresh-token 据此绑定 token 的 client/platform
- SystemMenuApi.Menu 增加 platform 字段
- 菜单表单新增"所属平台"选择项(PLATFORM_OPTIONS),为 null 则两端共享

配合后端迁移 sql/mysql/migrations/2026-04-20_oauth2_client_platform.sql。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 23:40:19 +08:00
lzh
93bfef06a4 style(@vben/web-antd): lint 自动格式化项目管理页面
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 23:11:06 +08:00
lzh
44b2dd9d05 feat(@vben/web-antd): 项目管理前端页面和请求拦截器适配
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 23:08:25 +08:00
lzh
5faaa3c051 chore: build and deploy web-antd
All checks were successful
Web UI CI/CD / build-and-deploy (push) Successful in 8s
2026-04-14 09:33:13 +08:00
lzh
615e928929 style(@vben/web-antd): 修正 linter 自动格式化残留
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-14 09:14:44 +08:00
lzh
86486f77dc feat(@vben/web-antd): 重设计保洁派单弹窗,修复多项交互缺陷
- 全新 UI:工牌卡片支持昵称显示、彩色头像、状态 pill、电量图标
- 修复工牌状态大小写 bug(后端返回小写 idle/busy,前端统一转大写)
- 离线工牌不可点击,选中状态高亮并显示已选工牌名
- 提取 BADGE_STATUS_CONFIG 到 data.ts 统一维护
- 头像色改用字符串哈希,避免大 Long 精度丢失
- handleSubmit 添加 confirmLoading 防重复提交,补充 catch 错误提示
- assigneeName 安全访问(去除非空断言)

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-14 09:12:13 +08:00
lzh
084dc51846 fix(@vben/web-antd): 修复工单详情页操作接口错误
- 取消/升级优先级弹窗补传 orderType,修复无法识别工单类型的问题
- 新增非待分配状态下的"转派"入口(QUEUED/DISPATCHED/CONFIRMED/ARRIVED)
- 语音提醒从 IoT 原生接口改为 /ops/clean/device/notify

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 23:50:18 +08:00
lzh
2d2197d40d fix(@vben/web-antd): 修复工牌状态接口类型定义
- BadgeStatusItem 新增 nickname 字段
- batteryLevel 类型修正为 number | null
- ManualDispatchReq 新增 assigneeName 字段

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 23:48:27 +08:00
lzh
2d89503192 chore: build and deploy web-antd
All checks were successful
Web UI CI/CD / build-and-deploy (push) Successful in 7s
2026-04-07 23:09:46 +08:00
lzh
26aad7b5f4 fix(@vben/web-antd): 工单日志时间改为显示精确时间 2026-04-07 22:13:15 +08:00
lzh
60e00ae3d7 chore: build and deploy web-antd
All checks were successful
Web UI CI/CD / build-and-deploy (push) Successful in 8s
2026-04-07 13:10:14 +08:00
lzh
93498273eb fix(@vben/web-antd): 修复甘特图组件 props 丢失导致运行时崩溃
linter 在 pre-commit 过程中移除了 defineProps/defineEmits,
导致 props 变量未定义,computed 计算 autoRange 等时抛出
ReferenceError: props is not defined

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 13:06:18 +08:00
lzh
b651e9ae25 chore: build and deploy web-antd
All checks were successful
Web UI CI/CD / build-and-deploy (push) Successful in 8s
2026-04-07 13:03:22 +08:00
lzh
c3e3389868 fix(@vben/web-antd): 修复工单详情工牌状态字段对齐及依赖清理
- work-order/detail: 工牌状态 lastHeartbeatTime→onlineTime,移除 rssi 展示
- trajectory/api: lint 修正(移除冗余空行)
- badge-status-card: linter 格式修正
- pnpm-lock: 更新依赖锁定文件

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 15:38:57 +08:00
lzh
cc98ba4d0b feat(@vben/web-antd): 重构轨迹页面子组件
trajectory-gantt-area:
- 数字孪生甘特图,纵轴加载完整区域树,仅显示有数据区域
- 区域树缓存提取到 area-tree-cache.ts,单例 Promise 防并发重复请求
- 支持时段预设(自适应/全天/上午/下午/工作时段)和 1x-16x 缩放
- tooltip 类型安全:record 改为 null | TrajectoryRecord

badge-status-card:
- 新增实时轨迹时间线(最近15条,倒序展示)
- 排序改用 toSorted + dayjs valueOf

area-stay-chart:
- 显示 fullAreaName 全路径,标签内置于条形,统一高度 260px

trend-chart:
- 进入改蓝色,离开改橙色
- 修复 height 缺少 px 单位导致图表不渲染

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 15:37:59 +08:00
lzh
3a14de4d1c feat(@vben/web-antd): 重构工牌轨迹页面核心逻辑
- 接口调用:timeline/summary/hourly-trend/area-stay-stats 并行请求
- 轨迹加载:选中设备用 timeline 接口,deviceId 为空时不传参
- 时间规范化:支持毫秒时间戳/数组/字符串三种后端格式
- 轮询策略:今日每5分钟刷新,实时状态每10秒,历史日期不轮询
- badge 搜索加 300ms 防抖
- onMounted 并行加载工牌列表、数据和区域树
- 移除 useTrajectoryColumns 死代码
- 哈希函数改用 Math.trunc + codePointAt,移除非空断言

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 15:30:37 +08:00
lzh
1468a4062b feat(@vben/web-antd): 对齐后端轨迹与工牌接口 DTO 类型定义
- TrajectoryRecord 新增 fullAreaName、TimelineQuery.deviceId 改为可选
- AreaStayStats 新增 fullAreaName 字段
- BadgeRealtimeStatus 字段对齐后端:lastHeartbeatTime→onlineTime,移除 rssi
- 新增 TrajectorySummary、HourlyTrend、AreaStayStats 统计接口及类型

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 15:25:31 +08:00
lzh
c16d049c38 chore: build and deploy web-antd
All checks were successful
Web UI CI/CD / build-and-deploy (push) Successful in 8s
2026-03-31 23:16:25 +08:00
lzh
af034080ba feat(@vben/web-antd): 区域树默认展开园区和楼栋节点 2026-03-31 22:55:55 +08:00
lzh
f5f488080c fix(@vben/web-antd): 修正工单详情步骤展示与状态分布配色 2026-03-31 22:55:34 +08:00
lzh
16434a0d88 feat(@vben/web-antd): 新增工牌出入轨迹页面 2026-03-31 22:54:45 +08:00
lzh
91cd7adc39 chore: build and deploy web-antd
All checks were successful
Web UI CI/CD / build-and-deploy (push) Successful in 9s
2026-03-27 16:58:19 +08:00
lzh
69edf26550 style(@vben/web-antd): lint 自动格式化修正工单模块
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 16:54:07 +08:00
lzh
cc2d7a0a04 feat(@vben/web-antd): 手动创建工单分步弹窗 + code review 修复
新增手动创建工单功能,分3步:选类型→选区域(TreeSelect全路径)→填表单。
优先级使用字典值,按工单类型动态显示保洁/安保专属字段。

- 新增 create-order-form.vue 分步创建弹窗组件
- work-order/index.vue 挂载弹窗替换占位
- card-view.vue 补充 OpsOrderCenterApi 类型导入
- 还原 auth.ts 误删的 visitTenantId 逻辑

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 16:52:15 +08:00
lzh
84cb4930fd refactor(@vben/web-antd): 删除保洁工单中心,统一使用通用工单中心
保洁工单中心与通用工单中心功能重叠,统一入口避免歧义。

- 删除 views/ops/cleaning/work-order 整个目录
- 迁移 cleaning-actions/detail-ext/work-progress 组件到 work-order/components/
- 迁移 CLEANING_TYPE_OPTIONS/TEXT_MAP 到 work-order/data.ts
- 删除路由中保洁工单详情和看板两条路由
- 更新详情页组件引用路径

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 16:48:13 +08:00
lzh
6ca2833df6 refactor(@vben/web-antd): 工单操作接口按业务线拆分(保洁/安保)
后端 OpsOrderController 移除了 assign/cancel/complete/create 通用接口,
改由 CleanWorkOrderController 和 SecurityOrderController 各自提供 manual-* 系列接口。

- 新增 api/ops/security/index.ts 安保工单操作 API
- cleaning/index.ts 新增 manualCreate/Dispatch/Cancel/UpgradePriority
- order-center/index.ts 移除 assignOrder/cancelOrder
- 表单组件按工单类型路由到对应 API
- cancel-form/upgrade-priority-form 支持 orderType 区分调用路径

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 16:45:11 +08:00
lzh
c6e51a215f chore: build and deploy web-antd
All checks were successful
Web UI CI/CD / build-and-deploy (push) Successful in 10s
2026-03-25 16:05:53 +08:00
lzh
0dbdba336f style(@vben/web-antd): lint 自动格式化修正工单模块
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 15:45:07 +08:00
lzh
506625164c feat(@vben/web-antd): 安保工单详情左图右表布局改造及工单模块代码质量优化
- 安保详情事件信息改为左图右表布局,新增摄像头名称和处理人手机号字段
- 工单卡片展示处理人手机号,时间字段类型兼容时间戳和格式化字符串
- 工单详情页安保扩展区位置下移,安保工单隐藏重复的执行人行
- 登录后默认设置访问租户为登录租户
- 修复 scoped 暗色模式选择器不生效问题,移除 as any 类型断言

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 15:43:24 +08:00
lzh
de95c707a0 style(@vben/web-antd): lint 自动格式化修正工单模块
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 11:37:48 +08:00
lzh
9d2e7d9e13 style(@vben/web-antd): P0 紧急工单卡片改为右上角渐变光晕标识
- 移除左侧红色竖条(border-left),改为右上角径向渐变
- 渐变色与 P0 标签色系协调(#C01D1D 14% 不透明度)
- 暗色模式适配渐变加深至 18%
- 移除 overflow:hidden 避免裁切子元素阴影
- 状态标签改为 span + inline style 双色渲染
- 同步更新 cleaning/work-order 卡片视图

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 11:36:56 +08:00
lzh
0772a12074 feat(@vben/web-antd): 工单详情取消状态进度条改造及代码质量优化
- 取消状态下进度条展示 timeline 实际节点,末尾追加"已取消"终态
- 已走过节点灰色实心,取消终态节点深灰,进度线灰色
- 移除底部红色 cancelled-banner,改为进度条内联展示
- 进行中节点蓝色标签改为显示到达时间
- 提取 isCurrentActive / getStepTime 简化模板逻辑
- timeline 去重防御异常数据,取消终态改用索引判断
- 移除 progress-steps-wrapper 的 overflow:hidden 避免裁切光晕
- 清理无引用的 cancelled-banner CSS

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 11:36:19 +08:00
lzh
d0395ba40a style(@vben/web-antd): 统一工单中心配色方案为柔和浅底双色风格
- STATUS_COLOR_MAP / ORDER_TYPE_COLOR_MAP 由单色改为 { bg, text } 双色结构
- 新增 FACILITIES / SERVICE 工单类型配色
- 优先级配色改为按数值直接映射(P0~P3),不再依赖字典 colorType
- Tag 组件替换为 span + inline style,精确控制背景色与文字色
- 仪表板饼图 STATUS_COLORS 同步更新
- 同步更新 cleaning/work-order 模块保持一致

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 11:35:37 +08:00
lzh
7d22e4b395 fix: 修改文件上传大小限制20M
All checks were successful
Web UI CI/CD / build-and-deploy (push) Successful in 10s
2026-03-24 18:59:41 +08:00
lzh
c700ab38f4 chore: build and deploy web-antd
All checks were successful
Web UI CI/CD / build-and-deploy (push) Successful in 9s
2026-03-24 09:48:00 +08:00
lzh
0d505737b9 style(@vben/web-antd): lint 自动格式化修正 login.vue
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 09:45:59 +08:00
lzh
9c822ba9d9 fix(@vben/web-antd): 企微扫码登录前校验租户是否已选择
多租户模式下,未选择租户时点击企微扫码登录会触发
租户字段校验提示,避免无租户请求导致后端报错。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 09:44:21 +08:00
lzh
2c678c3a82 fix(@vben/web-antd): 优化企业微信扫码登录体验
自动社交登录时显示 loading 状态,跳过租户列表加载,
避免闪烁显示登录表单和租户错误信息。
租户 ID 已持久化在 store 中,无需重新获取。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 09:38:05 +08:00
lzh
f77a8c3e4c chore: build and deploy web-antd
All checks were successful
Web UI CI/CD / build-and-deploy (push) Successful in 8s
2026-03-24 09:30:39 +08:00
lzh
7aff45ddf5 fix(@vben/web-antd): 企业微信扫码登录适配 hash 路由模式
hash 路由下 OAuth 回调 code/state 在 URL query 中,Vue Router
读不到。登录流程同绑定流程一样通过 sessionStorage 中转参数,
路由守卫检测后重定向到 social-login 页面完成登录。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 09:19:18 +08:00
lzh
bfa2752ca1 chore: build and deploy web-antd
All checks were successful
Web UI CI/CD / build-and-deploy (push) Successful in 8s
2026-03-24 09:13:13 +08:00
lzh
10bd00e009 feat(@vben/web-antd): 企业微信扫码登录及绑定(适配 hash 路由)
- 登录页新增企业微信扫码登录入口(TDesign 官方图标)
- 个人中心开放企业微信绑定/解绑功能
- 适配 hash 路由模式:OAuth 回调 code 在 URL query 中,
  通过路由守卫转存 sessionStorage 并重定向到个人中心处理绑定

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 09:09:12 +08:00
lzh
b7a56f3743 revert(@vben/web-antd): 回退企业微信绑定相关改动,重新分析
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 17:49:12 +08:00
lzh
10951e5e87 chore: build and deploy web-antd
All checks were successful
Web UI CI/CD / build-and-deploy (push) Successful in 9s
2026-03-23 17:45:01 +08:00
lzh
8fa488feb7 style(@vben/web-antd): lint 自动格式化修正 user-social
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 17:42:49 +08:00
lzh
e18b6633a1 fix(@vben/web-antd): 重构企业微信绑定回调走核心路由
绑定回调从 /profile(动态路由)改为 /auth/social-login(核心路由),
解决页面刷新时动态路由未注册导致回调参数丢失的问题。
social-login.vue 通过 sessionStorage 区分绑定和登录操作,
绑定完成后自动跳转回个人中心。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 17:42:24 +08:00
lzh
24c3dbc8f1 chore: build and deploy web-antd
All checks were successful
Web UI CI/CD / build-and-deploy (push) Successful in 8s
2026-03-23 17:20:54 +08:00
lzh
91eec65734 fix(@vben/web-antd): 修复企业微信绑定回调 type 参数丢失问题
redirect_uri 中的查询参数会被企业微信 OAuth 截断,
改用 sessionStorage 暂存社交平台类型,同时增加绑定
错误处理和类型匹配的健壮性。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 17:19:03 +08:00
lzh
429e52007f chore: build and deploy web-antd
All checks were successful
Web UI CI/CD / build-and-deploy (push) Successful in 9s
2026-03-23 17:03:17 +08:00
lzh
47e35aa8cd style(@vben/web-antd): lint 自动格式化修正企业微信登录相关代码
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 16:59:50 +08:00
lzh
15b091dce2 feat(@vben/web-antd): 启用企业微信扫码登录及社交绑定
登录页新增企业微信扫码登录入口,使用 TDesign 官方企微图标;
个人中心社交账号页面开放企业微信绑定/解绑功能。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 16:50:38 +08:00
lzh
bdb873f06c chore: build and deploy web-antd
All checks were successful
Web UI CI/CD / build-and-deploy (push) Successful in 8s
2026-03-23 10:22:53 +08:00
lzh
e361b2f002 style(@vben/web-antd): lint 自动格式化修正巡检及区域模块
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 14:56:54 +08:00
lzh
ae55ab4800 chore(@vben/web-antd): 新增 qrcode、jszip 依赖并统一 catalog 管理
- 新增 qrcode、@types/qrcode 依赖(用于区域二维码功能)
- 新增 jszip 依赖(用于批量导出二维码 ZIP)
- jszip 版本统一纳入 pnpm-workspace catalog 管理

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 14:56:15 +08:00
lzh
be40db2a9c feat(@vben/web-antd): 新增巡检记录模块及路由配置
- 新增巡检记录 API(分页查询、详情、统计)
- 卡片式列表展示巡检记录,支持按状态 Tab 筛选
- 统计栏展示合格率/总数/合格数/不合格数
- 详情抽屉展示巡检明细项、照片、归因结果
- 注册巡检记录和巡检模板路由

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 14:55:45 +08:00
lzh
9ee16e2db3 feat(@vben/web-antd): 新增巡检模板管理模块
- 新增巡检检查项模板 API(CRUD + 批量排序)
- 左侧功能类型分类面板 + 右侧检查项表格
- 支持拖拽排序检查项顺序
- 支持启用/停用状态切换(带确认弹窗)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 14:55:15 +08:00
lzh
7f34094642 feat(@vben/web-antd): 区域管理新增二维码功能及 UI 增强
- 新增单个区域二维码查看弹窗(qrcode-modal.vue),支持下载 PNG
- 新增批量导出二维码 ZIP 功能,自动构建区域全路径名称
- 列表 UI 增强:区域类型/功能类型/等级改用彩色 Tag,状态改用 Switch 开关
- 点击行任意非操作列可展开/收起树节点
- 递归构建全路径名称时增加循环引用保护
- 移除设备绑定入口,替换为二维码操作

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 14:54:44 +08:00
lzh
f98b4fa797 refactor(@vben/web-antd): 精简区域管理数据层,移除废弃设备绑定组件
- data.ts: 新增区域类型/功能类型/区域等级 Tag 颜色映射,列定义改用 slots 渲染
- data.ts: 移除未使用的绑定设备表单 schema 和设备关联列定义
- form.vue: 调整保存成功后的执行顺序(先提示 → 触发刷新 → 关闭弹窗)
- 删除废弃文件: index-enhanced.vue, device-bind-drawer.vue, device-bind-drawer-enhanced.vue

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 14:52:23 +08:00
lzh
35c3d0e06e chore: build and deploy web-antd
All checks were successful
Web UI CI/CD / build-and-deploy (push) Successful in 8s
2026-03-18 16:18:59 +08:00
lzh
60f4912401 style(@vben/web-antd): lint 自动格式化修正
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 15:22:29 +08:00
lzh
bdb06e761a refactor(@vben/web-antd): 重写升级优先级和取消工单弹窗,统一布局风格
- 移除 useVbenForm 避免弹窗内布局冲突,改用原生 Input.TextArea
- 统一为图标+标签+值的信息行布局,与安保派单弹窗风格一致
- 提交时增加 confirmLoading 状态反馈及 maxLength 保护校验
- 支持暗色模式样式适配

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 15:21:58 +08:00
lzh
ed50dc3f7e feat(@vben/web-antd): 安保工单告警图片优化及专用派单表单
- 告警图片改为缩略图展示(200x150),添加圆角和悬停放大效果
- 新增安保专用派单表单,基于分页用户列表选择执行人
- 工单中心列表页和详情页均根据工单类型路由到对应派单表单
- 搜索防抖300ms,组件卸载时清理定时器防止内存泄漏

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 15:21:29 +08:00
lzh
5e053c6366 fix(@vben/web-antd): 移除文件配置自定义域名的必填校验
自定义域名为可选项,移除多余的 required 规则。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 15:21:10 +08:00
lzh
bea5a82825 feat(@vben/web-antd): 重构个人中心用户资料与社交绑定页面
- 用户资料页改为卡片式布局,头像居中展示角色标签
- 社交绑定页替换表格为卡片列表,支持已绑定详情展开
- 新增微信小程序社交类型枚举,小程序端绑定入口置灰提示
- 头像上传兼容 server/client 两种模式的返回值
- 社交绑定列表增加类型安全(SocialBindItem interface)
- 隐藏暂不支持的钉钉和企业微信绑定入口

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 15:19:56 +08:00
lzh
666f25404d chore(@vben/web-antd): 切换文件上传类型为前端直连并修复生产环境注释编码
将 VITE_UPLOAD_TYPE 从 server 改为 client(前端直连S3上传),
修复 .env.production 中因编码损坏导致的中文注释乱码。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 15:19:29 +08:00
lzh
e7f14bd4e8 chore: build and deploy web-antd
All checks were successful
Web UI CI/CD / build-and-deploy (push) Successful in 37s
2026-03-15 17:05:46 +08:00
lzh
17042bd7c7 style(@vben/web-antd): lint 自动格式化修正区域安保模块
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 16:58:26 +08:00
lzh
287cb818b3 feat(@vben/web-antd): 新增保洁作业进度组件
展示保洁工单的实时作业进度,包含圆环进度图和关键指标网格。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 16:57:51 +08:00
lzh
b9f45c8fdc feat(@vben/web-antd): 新增区域安保配置模块
- 新增区域安保 API 接口定义
- 新增区域安保配置页面,支持区域视图和人员视图
- 包含人员绑定弹窗和人员卡片组件

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 16:54:38 +08:00
lzh
b1db581d36 style(@vben/web-antd): lint 自动格式化修正
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 16:52:22 +08:00
lzh
813e84cff1 style(@vben/web-antd): 保洁/安保工单详情组件重构及样式优化
- cleaning-detail-ext: 精简为 Descriptions 表格展示,移除冗余的工牌状态面板和作业进度
- cleaning-actions: 按钮改为 size=small 行内样式,移除 block 布局
- security-detail-ext: 事件信息改为 Descriptions 表格,统一告警截图展示
- AreaTree: 支持 title 插槽透传
- 保洁工单列表移除 PAUSED Tab

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 16:51:42 +08:00
lzh
5fa437d9d0 feat(@vben/web-antd): 工单中心页面返回时自动刷新列表数据
- 新增 onActivated 钩子,页面从详情返回时自动刷新工单列表和统计栏
- 使用 isFirstActivate 标记避免首次挂载时与 onMounted 重复请求
- 移除 PAUSED 状态的 Tab 计数

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 16:51:12 +08:00
lzh
0d32c21e93 refactor(@vben/web-antd): 提取 usePriorityInfo 公共 composable,消除重复代码
- 将 4 处重复的 getPriorityInfo 函数提取至 work-order/data.ts 中的 usePriorityInfo composable
- 工单中心和保洁模块的 detail/card-view 统一使用公共 composable
- 移除两个 data.ts 中已无引用的 PRIORITY_STYLE_MAP 常量
- 清理不再需要的 DICT_TYPE、useDictStore 导入
- 工单中心 card-view 移除自身 onMounted 加载,改由父组件统一控制

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 16:50:41 +08:00
lzh
7156e1dd1e feat(@vben/web-antd): 工单中心 API 类型增强及新增区域安保路由
- OrderItem 新增 responseSeconds、completionSeconds、inspectorName、qualityScore 等字段
- CleaningExtInfo.isAuto 类型由 number 改为 boolean,新增 images 字段
- 新增区域安保配置路由 OpsAreaSecurity

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 16:49:39 +08:00
lzh
1ffab67986 style(@vben/web-antd): lint 自动格式化修正
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 11:20:15 +08:00
lzh
3801a06e98 feat(@vben/web-antd): 新增安保工单模块,重点展示工单描述和处理结果
新增安保工单详情扩展组件和配置文件,详情页以独立卡片形式突出展示
工单描述、告警截图(支持点击预览)、处理结果描述和处理图片。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 11:18:47 +08:00
lzh
ab0c7c53b0 feat(@vben/web-antd): 新增工单中心取消表单组件
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 11:18:08 +08:00
lzh
08e79ec20a feat(@vben/web-antd): 新增通用工单中心模块,支持多类型工单管理
添加工单中心路由(详情页和统计看板),工单列表、详情、看板等页面
支持保洁、安保、维修等多类型工单的统一管理。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 11:17:41 +08:00
lzh
d9a192bd07 feat(@vben/web-antd): 保洁工单模块增强,拆分组件并新增区域筛选
拆分保洁工单操作和详情扩展为独立组件,新增 config.ts 配置文件;
列表页增加区域筛选功能,详情页优化进度条和日志展示样式。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 11:15:07 +08:00
lzh
bf13067812 feat(@vben/web-antd): AreaTree 组件增强支持多选模式并新增 AreaFilterDrawer
AreaTree 新增 checkable、checkedKeys、selectedKeys 属性支持复选框多选,
暴露 getAreaName 方法;新增 AreaFilterDrawer 区域筛选抽屉组件。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 11:14:40 +08:00
lzh
805b0bfcf7 feat(@vben/web-antd): 新增安保工单扩展信息类型和触发来源枚举
添加 SecurityExtInfo 接口支持安保工单扩展字段,扩展 TriggerSource 枚举
增加视频告警、门禁告警、巡更告警、紧急按钮等触发来源类型。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 11:13:14 +08:00
lzh
19d36d1ffb chore: build and deploy web-antd
All checks were successful
Web UI CI/CD / build-and-deploy (push) Successful in 8s
2026-03-09 13:05:46 +08:00
3429 changed files with 24403 additions and 12901 deletions

1
.gitignore vendored
View File

@@ -56,3 +56,4 @@ design-system/
.agent/
.shared/
.claude/
CLAUDE.md

343
Jenkinsfile vendored Normal file
View File

@@ -0,0 +1,343 @@
// ============================================
// AIoT Platform UI (vben) - Jenkins Pipeline
// ============================================
// 双分支部署:
// master -> PROD (172.17.16.14:80)
// release/next -> STAGING (172.17.16.7:80)
// 镜像仓库172.17.16.7:5000
// ============================================
pipeline {
agent any
options {
buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '5'))
disableConcurrentBuilds()
timeout(time: 45, unit: 'MINUTES')
timestamps()
retry(1)
}
environment {
// ===== 应用标识 =====
APP_NAME = 'aiot-platform-ui'
CONTAINER_NAME = 'aiot-platform-ui'
HOST_PORT = '80'
// ===== 镜像仓库 =====
REGISTRY = '172.17.16.7:5000'
REGISTRY_HOST = '172.17.16.7'
IMAGE_NAME = "${REGISTRY}/${APP_NAME}"
// ===== 部署目标(默认 PRODrelease/next 在 Initialize 阶段覆盖) =====
DEPLOY_HOST = '172.17.16.14'
DEPLOY_PATH = '/opt/aiot-platform-ui'
STAGING_DEPLOY_HOST = '172.17.16.7'
STAGING_DEPLOY_PATH = '/opt/aiot-platform-ui'
SSH_KEY = '/var/jenkins_home/.ssh/id_rsa'
// ===== 健康检查 =====
HEALTH_CHECK_TIMEOUT = '60'
HEALTH_CHECK_INTERVAL = '5'
// ===== 镜像保留份数 =====
IMAGE_KEEP_COUNT = '3'
// ===== 磁盘守护阈值(% =====
DISK_FREE_MIN_PCT = '5'
DISK_FREE_WARN_PCT = '10'
}
stages {
stage('Initialize') {
steps {
script {
env.PIPELINE_START_TIME = System.currentTimeMillis()
echo "=========================================="
echo " ${env.APP_NAME} - CI/CD Pipeline"
echo "=========================================="
echo "Branch: ${env.BRANCH_NAME}"
echo "Build: #${env.BUILD_NUMBER}"
echo "=========================================="
if (env.BRANCH_NAME == 'release/next') {
env.DEPLOY_HOST = env.STAGING_DEPLOY_HOST
env.DEPLOY_PATH = env.STAGING_DEPLOY_PATH
echo "📦 Deploy target: STAGING (${env.DEPLOY_HOST}:${env.HOST_PORT})"
} else {
echo "📦 Deploy target: PRODUCTION (${env.DEPLOY_HOST}:${env.HOST_PORT})"
}
}
}
}
stage('Checkout') {
steps {
script {
retry(3) { checkout scm }
def shortCommit = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim()
def sanitized = env.BRANCH_NAME.replaceAll('/', '-')
env.IMAGE_TAG = "${sanitized}-${env.BUILD_NUMBER}-${shortCommit}"
env.PREVIOUS_IMAGE_TAG = getPreviousImageTag()
echo "🏷️ Tag: ${env.IMAGE_TAG}"
echo "🔖 Previous Tag (rollback to): ${env.PREVIOUS_IMAGE_TAG}"
}
}
}
stage('Pre-build Check') {
steps {
script {
sh "docker version >/dev/null 2>&1 || { echo '❌ Docker not available'; exit 1; }"
// Registry 可达性
sh """
curl -f http://${env.REGISTRY}/v2/ >/dev/null 2>&1 || \
echo '⚠️ Registry not accessible, will continue (build still produces local image)'
"""
// Jenkins agent 本地磁盘
def diskUsage = sh(
script: "df ${env.WORKSPACE} | tail -1 | awk '{print \$5}' | sed 's/%//'",
returnStdout: true
).trim() as int
if (diskUsage > 80) {
echo "⚠️ Local disk usage ${diskUsage}%, pruning Docker..."
sh "docker system prune -f || true"
}
}
}
}
stage('Build & Push Image') {
steps {
script {
def buildStart = System.currentTimeMillis()
echo "🔨 Building ${env.IMAGE_NAME}:${env.IMAGE_TAG}"
// --network=1panel-network 让构建容器能解析 1Panel-verdaccio-Ynee
sh """
set -e
docker build \\
--network=1panel-network \\
-t ${env.IMAGE_NAME}:${env.IMAGE_TAG} \\
.
docker push ${env.IMAGE_NAME}:${env.IMAGE_TAG}
if [ "${env.BRANCH_NAME}" = "master" ]; then
docker tag ${env.IMAGE_NAME}:${env.IMAGE_TAG} ${env.IMAGE_NAME}:latest
docker push ${env.IMAGE_NAME}:latest
fi
"""
def imageSize = sh(
script: "docker images ${env.IMAGE_NAME}:${env.IMAGE_TAG} --format '{{.Size}}'",
returnStdout: true
).trim()
def duration = ((System.currentTimeMillis() - buildStart) / 1000) as int
echo "✅ Built and pushed in ${duration}s, size=${imageSize}"
}
}
}
stage('Pre-deploy Check') {
when { anyOf { branch 'master'; branch 'release/next' } }
steps {
script {
echo "🛡️ Pre-deploy: SSH + 磁盘可达性检查"
checkRemoteDiskOrFail(env.DEPLOY_HOST, 'Deploy')
}
}
}
stage('Deploy') {
when { anyOf { branch 'master'; branch 'release/next' } }
steps {
script {
def sshOpts = "-o StrictHostKeyChecking=no -o ConnectTimeout=10 -i ${env.SSH_KEY}"
echo "📂 同步 docker-compose.frontend.yml 到 ${env.DEPLOY_HOST}:${env.DEPLOY_PATH}"
sh """
ssh ${sshOpts} root@${env.DEPLOY_HOST} 'mkdir -p ${env.DEPLOY_PATH}'
scp ${sshOpts} docker-compose.frontend.yml root@${env.DEPLOY_HOST}:${env.DEPLOY_PATH}/docker-compose.frontend.yml
"""
try {
echo "🚀 Deploy ${env.APP_NAME}:${env.IMAGE_TAG}"
sh """
ssh ${sshOpts} root@${env.DEPLOY_HOST} '
set -e
cd ${env.DEPLOY_PATH}
export IMAGE_TAG=${env.IMAGE_TAG}
export REGISTRY_HOST=${env.REGISTRY}
export HOST_PORT=${env.HOST_PORT}
docker compose -f docker-compose.frontend.yml pull
docker compose -f docker-compose.frontend.yml up -d --force-recreate
sleep 3
'
"""
// 健康检查
waitForHealthy(sshOpts)
echo "✅ ${env.APP_NAME} deployed to ${env.DEPLOY_HOST}:${env.HOST_PORT}"
} catch (Exception e) {
echo "❌ Deploy failed: ${e.message}"
if (env.PREVIOUS_IMAGE_TAG && env.PREVIOUS_IMAGE_TAG != 'latest') {
echo "🔄 Rolling back to ${env.PREVIOUS_IMAGE_TAG}"
rollback(sshOpts)
}
throw e
}
}
}
}
stage('Cleanup Old Images') {
when { anyOf { branch 'master'; branch 'release/next' } }
steps {
script {
def sshOpts = "-o StrictHostKeyChecking=no -o ConnectTimeout=10 -i ${env.SSH_KEY}"
echo "🧹 清理 ${env.DEPLOY_HOST} 上 ${env.APP_NAME} 的旧镜像(保留 ${env.IMAGE_KEEP_COUNT} 份)"
sh """
ssh ${sshOpts} root@${env.DEPLOY_HOST} '
docker images ${env.IMAGE_NAME} \\
--format "{{.CreatedAt}}|{{.ID}}|{{.Tag}}" \\
| grep -v "|latest\$" \\
| sort -r \\
| awk -F"|" -v k=${env.IMAGE_KEEP_COUNT} "NR > k {print \\\$2}" \\
| sort -u \\
| xargs -r docker rmi -f 2>/dev/null || true
docker image prune -f --filter "dangling=true" || true
'
"""
}
}
}
}
post {
success {
script {
def total = ((System.currentTimeMillis() - env.PIPELINE_START_TIME.toLong()) / 1000) as int
echo """
==========================================
✅ BUILD SUCCESS
==========================================
App: ${env.APP_NAME}
Tag: ${env.IMAGE_TAG}
Target: ${env.DEPLOY_HOST}:${env.HOST_PORT}
Total: ${total}s
==========================================
"""
}
}
failure {
script {
echo "❌ BUILD FAILED — tag=${env.IMAGE_TAG ?: 'unknown'}, rollback_tag=${env.PREVIOUS_IMAGE_TAG ?: 'N/A'}"
}
}
always {
sh "docker image prune -f --filter 'dangling=true' || true"
}
}
}
// ============================================
// helpers
// ============================================
def getPreviousImageTag() {
try {
def sshOpts = "-o StrictHostKeyChecking=no -o ConnectTimeout=10 -i ${env.SSH_KEY}"
def tag = sh(
script: """
ssh ${sshOpts} root@${env.DEPLOY_HOST} '
docker inspect --format="{{.Config.Image}}" ${env.CONTAINER_NAME} 2>/dev/null \
| sed "s|.*:||" \
|| echo "latest"
' 2>/dev/null || echo "latest"
""",
returnStdout: true
).trim()
return tag ?: 'latest'
} catch (Exception e) {
return 'latest'
}
}
def waitForHealthy(String sshOpts) {
def maxAttempts = (env.HEALTH_CHECK_TIMEOUT.toInteger() / env.HEALTH_CHECK_INTERVAL.toInteger()) as int
echo "⏳ 等待 ${env.APP_NAME} 健康(最多 ${env.HEALTH_CHECK_TIMEOUT}s..."
sh """
ssh ${sshOpts} root@${env.DEPLOY_HOST} '
set -e
for i in \$(seq 1 ${maxAttempts}); do
# 优先 docker healthcheck没配的话直接 curl
STATUS=\$(docker inspect --format="{{.State.Health.Status}}" ${env.CONTAINER_NAME} 2>/dev/null || echo "no-healthcheck")
case "\$STATUS" in
healthy)
echo "✅ ${env.APP_NAME} healthy"; exit 0;;
unhealthy)
echo "❌ ${env.APP_NAME} unhealthy"
docker logs --tail 100 ${env.CONTAINER_NAME}
exit 1;;
no-healthcheck)
if curl -fsS http://localhost:${env.HOST_PORT}/ -o /dev/null; then
echo "✅ ${env.APP_NAME} responds 200"; exit 0
fi;;
esac
ELAPSED=\$((i * ${env.HEALTH_CHECK_INTERVAL}))
echo "⏳ \${ELAPSED}s/${env.HEALTH_CHECK_TIMEOUT}s ..."
sleep ${env.HEALTH_CHECK_INTERVAL}
done
echo "❌ Health check timeout"
docker logs --tail 100 ${env.CONTAINER_NAME} || true
exit 1
'
"""
}
def rollback(String sshOpts) {
sh """
ssh ${sshOpts} root@${env.DEPLOY_HOST} '
set -e
cd ${env.DEPLOY_PATH}
export IMAGE_TAG=${env.PREVIOUS_IMAGE_TAG}
export REGISTRY_HOST=${env.REGISTRY}
export HOST_PORT=${env.HOST_PORT}
docker compose -f docker-compose.frontend.yml pull
docker compose -f docker-compose.frontend.yml up -d --force-recreate
'
"""
echo "✅ Rolled back ${env.APP_NAME} to ${env.PREVIOUS_IMAGE_TAG}"
}
def checkRemoteDiskOrFail(String host, String role) {
def sshOpts = "-o StrictHostKeyChecking=no -o ConnectTimeout=10 -i ${env.SSH_KEY}"
def minPct = Integer.parseInt(env.DISK_FREE_MIN_PCT)
def warnPct = Integer.parseInt(env.DISK_FREE_WARN_PCT)
def freePct
try {
freePct = sh(
script: "ssh ${sshOpts} root@${host} \"df -P / | awk 'NR==2 { print 100 - \\\$5+0 }'\"",
returnStdout: true
).trim() as int
} catch (Exception e) {
error("❌ [${role}] SSH 到 ${host} 失败:${e.message}")
}
echo " ${role}@${host}: 根分区空闲 ${freePct}%"
if (freePct < minPct) {
error("❌ [${role}] ${host} 空闲仅 ${freePct}% < ${minPct}%,终止部署")
} else if (freePct < warnPct) {
echo "⚠️ [${role}] ${host} 空闲 ${freePct}% < ${warnPct}%,部署后建议清理"
}
}

View File

@@ -8,7 +8,7 @@ VITE_BASE_URL=http://127.0.0.1:48080
# 接口地址
VITE_GLOB_API_URL=/admin-api
# 文件上传类型server - 后端上传, client - 前端直连上传仅支持S3服务
VITE_UPLOAD_TYPE=server
VITE_UPLOAD_TYPE=client
# 是否打开 devtoolstrue 为打开false 为关闭
VITE_DEVTOOLS=false
@@ -19,3 +19,6 @@ VITE_INJECT_APP_LOADING=true
VITE_APP_DEFAULT_USERNAME=admin
# 默认登录密码
VITE_APP_DEFAULT_PASSWORD=admin123
# 物联运维平台前端地址(用于业务平台 -> IoT 平台 SSO 跳转)
VITE_IOT_BASE_URL=http://127.0.0.1:5667

View File

@@ -4,19 +4,23 @@ VITE_BASE=/
VITE_BASE_URL=/admin-api
# 接口地址
VITE_GLOB_API_URL=/admin-api
# 文件上传类型server - 后端上传<EFBFBD><EFBFBD>?client - 前端直连上传仅支持S3服务
VITE_UPLOAD_TYPE=server
# 文件上传类型server - 后端上传client - 前端直连上传仅支持S3服务
VITE_UPLOAD_TYPE=client
# 是否开启压缩,可以设置<EFBFBD><EFBFBD>?none, brotli, gzip
# 是否开启压缩,可以设置none, brotli, gzip
VITE_COMPRESS=none
# 是否开<EFBFBD><EFBFBD>?PWA
# 是否开PWA
VITE_PWA=false
# vue-router 的模<EFBFBD><EFBFBD>?VITE_ROUTER_HISTORY=hash
# vue-router 的模
VITE_ROUTER_HISTORY=hash
# 是否注入全局loading
VITE_INJECT_APP_LOADING=true
# 打包后是否生成dist.zip
VITE_ARCHIVER=true
# 物联运维平台前端地址SSO 跳转目标),生产部署时按实际域名修改
VITE_IOT_BASE_URL=https://iot.example.com

3
apps/web-antd/.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
# 由 vite.config.mts 的 copyLottiePlayer 插件在 dev/build 时自动从
# node_modules/lottie-web 拷贝,不需要进版本控制
public/lottie_light.min.js

View File

@@ -0,0 +1 @@
.selected-hint[data-v-83468e94]{align-items:center;background:var(--ant-color-primary-bg);border:1px solid var(--ant-color-primary-border);border-radius:6px;color:var(--ant-color-primary);display:flex;gap:6px;margin-bottom:12px;padding:8px 12px}.hint-icon[data-v-83468e94]{flex-shrink:0;font-size:16px}.hint-text[data-v-83468e94]{font-size:13px;font-weight:500}.tree-container[data-v-83468e94]{flex:1;overflow-y:auto}.drawer-footer[data-v-83468e94]{display:flex;gap:8px;justify-content:flex-end}.btn-icon[data-v-83468e94]{margin-right:4px}html.dark .selected-hint[data-v-83468e94]{background:#1677ff1a;border-color:#1677ff4d}

View File

@@ -0,0 +1 @@
.area-stay-chart[data-v-f237a30e]{padding:16px}.chart-title[data-v-f237a30e]{color:#262626;font-size:14px;font-weight:600;margin-bottom:12px}.chart-empty[data-v-f237a30e]{align-items:center;display:flex;justify-content:center;min-height:200px}

View File

@@ -0,0 +1 @@
@media (max-width:768px){.layout-row[data-v-09672b7c]{flex-direction:column}.tree-col[data-v-09672b7c]{margin-bottom:12px}.tree-card[data-v-09672b7c] .ant-card-body{max-height:200px}}.layout-row[data-v-09672b7c]{flex-wrap:wrap}.layout-row[data-v-09672b7c],.tree-card[data-v-09672b7c],.tree-col[data-v-09672b7c]{display:flex}.tree-card[data-v-09672b7c]{border-radius:8px;flex-direction:column;width:100%}.tree-card[data-v-09672b7c] .ant-card-head{min-height:44px;padding:0 16px}.tree-card[data-v-09672b7c] .ant-card-head .ant-card-head-title{font-size:14px;font-weight:600;padding:12px 0}.tree-card[data-v-09672b7c] .ant-card-body{flex:1;overflow-y:auto;padding:12px 16px}.tree-card[data-v-09672b7c] .ant-tree{background:transparent}.content-header[data-v-09672b7c]{align-items:center;display:flex;justify-content:space-between}.content-header__left[data-v-09672b7c]{align-items:baseline;display:flex;gap:8px}.content-title[data-v-09672b7c]{color:#262626;font-size:16px;font-weight:600}.content-subtitle[data-v-09672b7c]{color:#8c8c8c;font-size:13px}.empty-card[data-v-09672b7c]{border-radius:8px}.empty-card[data-v-09672b7c] .ant-card-body{align-items:center;display:flex;justify-content:center;min-height:300px}.section[data-v-09672b7c]{margin-bottom:20px}.section__title[data-v-09672b7c]{color:#262626;font-size:14px;font-weight:600;margin-bottom:12px}.section__hint[data-v-09672b7c]{color:#8c8c8c;font-size:12px;font-weight:400}html.dark .content-title[data-v-09672b7c]{color:#ffffffd9}html.dark .content-subtitle[data-v-09672b7c]{color:#ffffff73}html.dark .section__title[data-v-09672b7c]{color:#ffffffd9}html.dark .section__hint[data-v-09672b7c]{color:#ffffff73}

View File

@@ -1 +0,0 @@
.assign-form .badge-grid[data-v-e4036b57]{grid-template-columns:repeat(2,1fr)}.assign-form .badge-card[data-v-e4036b57]{border-radius:8px}.assign-form .badge-card[data-v-e4036b57] .ant-card-body{padding:12px}

View File

@@ -0,0 +1 @@
.dispatch-modal[data-v-ee7cd4ec] .ant-modal-header{border-bottom:1px solid var(--ant-color-border-secondary);padding-bottom:12px}.dispatch-modal[data-v-ee7cd4ec] .ant-modal-body{padding:20px}.dispatch-body .custom-scroll[data-v-ee7cd4ec]{scrollbar-color:#e5e7eb transparent;scrollbar-width:thin}.dispatch-body .custom-scroll[data-v-ee7cd4ec]::-webkit-scrollbar{width:4px}.dispatch-body .custom-scroll[data-v-ee7cd4ec]::-webkit-scrollbar-track{background:transparent}.dispatch-body .custom-scroll[data-v-ee7cd4ec]::-webkit-scrollbar-thumb{background-color:#e5e7eb;border-radius:4px}.dispatch-body .badge-card[data-v-ee7cd4ec]{overflow:visible}.dispatch-body .dispatch-textarea[data-v-ee7cd4ec] .ant-input{font-size:13px}html.dark .dispatch-body .custom-scroll[data-v-ee7cd4ec]{scrollbar-color:#374151 transparent}html.dark .dispatch-body .custom-scroll[data-v-ee7cd4ec]::-webkit-scrollbar-thumb{background-color:#374151}

View File

@@ -0,0 +1 @@
@keyframes pulse-13a8b58a{0%,to{opacity:1}50%{opacity:.4}}.badge-status-card[data-v-13a8b58a]{padding:16px}.card-header[data-v-13a8b58a]{align-items:center;border-bottom:1px solid #f5f5f5;display:flex;gap:8px;margin-bottom:16px;padding-bottom:12px}.card-title[data-v-13a8b58a]{color:#262626;font-size:14px;font-weight:600}.status-row[data-v-13a8b58a]{justify-content:space-between;padding:8px 0}.label[data-v-13a8b58a],.status-row[data-v-13a8b58a]{align-items:center;display:flex}.label[data-v-13a8b58a]{color:#8c8c8c;gap:4px}.label[data-v-13a8b58a],.value[data-v-13a8b58a]{font-size:13px}.value[data-v-13a8b58a]{color:#262626}.value.mono[data-v-13a8b58a]{color:#595959;font-family:SF Mono,Fira Code,monospace;font-size:12px}.value.muted[data-v-13a8b58a]{color:#8c8c8c}.battery-bar[data-v-13a8b58a]{flex:0 0 120px}.status-dot[data-v-13a8b58a]{border-radius:50%;display:inline-block;height:6px;margin-right:4px;vertical-align:middle;width:6px}.status-dot--pulse[data-v-13a8b58a]{animation:pulse-13a8b58a 2s infinite}.recent-timeline[data-v-13a8b58a]{border-top:1px solid #f5f5f5;margin-top:12px;padding-top:12px}.timeline-header[data-v-13a8b58a]{align-items:center;display:flex;justify-content:space-between;margin-bottom:10px}.timeline-title[data-v-13a8b58a]{color:#262626;font-size:13px;font-weight:500}.timeline-count[data-v-13a8b58a]{color:#bfbfbf;font-size:11px}.timeline-list[data-v-13a8b58a]{max-height:280px;overflow-y:auto}.timeline-item[data-v-13a8b58a]{display:flex;gap:8px;min-height:48px}.timeline-dot-wrap[data-v-13a8b58a]{align-items:center;display:flex;flex-direction:column;flex-shrink:0;padding-top:5px;width:12px}.timeline-dot[data-v-13a8b58a]{background:#d9d9d9;border-radius:50%;flex-shrink:0;height:8px;width:8px}.timeline-dot--active[data-v-13a8b58a]{background:#52c41a;box-shadow:0 0 0 3px #52c41a26}.timeline-line[data-v-13a8b58a]{background:#f0f0f0;flex:1;min-height:20px;width:1px}.timeline-item:last-child .timeline-line[data-v-13a8b58a]{display:none}.timeline-content[data-v-13a8b58a]{flex:1;min-width:0;padding-bottom:10px}.timeline-area[data-v-13a8b58a]{color:#262626;font-size:12px;line-height:1.4;word-break:break-all}.timeline-meta[data-v-13a8b58a]{align-items:center;color:#8c8c8c;display:flex;flex-wrap:wrap;font-size:11px;gap:4px;margin-top:2px}.staying-tag[data-v-13a8b58a]{color:#52c41a;font-weight:500}.timeline-duration[data-v-13a8b58a]{color:#1677ff}.timeline-empty[data-v-13a8b58a]{color:#bfbfbf;font-size:12px;padding:16px 0;text-align:center}.empty-state[data-v-13a8b58a]{align-items:center;display:flex;justify-content:center;min-height:120px}.empty-text[data-v-13a8b58a]{color:#bfbfbf;font-size:13px}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
.cancel-form[data-v-c80871b6] .ant-form-item{margin-bottom:0}

View File

@@ -0,0 +1 @@
.cf-alert[data-v-2bb30899],.cf-order-info[data-v-2bb30899]{margin-bottom:12px}.cf-order-info[data-v-2bb30899]{background:#fafafa;border-radius:8px;display:flex;flex-direction:column;gap:8px;padding:10px 12px}.cf-info-row[data-v-2bb30899]{align-items:flex-start;display:flex;font-size:13px;gap:6px;line-height:20px}.cf-info-icon[data-v-2bb30899]{margin-top:2px}.cf-info-icon[data-v-2bb30899],.cf-info-label[data-v-2bb30899]{color:#8c8c8c;flex-shrink:0}.cf-info-value[data-v-2bb30899]{color:#333;flex:1;min-width:0;word-break:break-all}.cf-info-desc[data-v-2bb30899]{display:-webkit-box;-webkit-line-clamp:2;overflow:hidden;text-overflow:ellipsis;-webkit-box-orient:vertical}.cf-section[data-v-2bb30899]{margin-bottom:12px}.cf-section-title[data-v-2bb30899]{font-size:13px;font-weight:500;margin-bottom:8px}html.dark .cf-order-info[data-v-2bb30899]{background:#ffffff0f}html.dark .cf-info-value[data-v-2bb30899]{color:#ffffffd9}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.inspection-card-view .card-grid[data-v-3e4528d2]{min-height:300px}.inspection-card-view .record-card[data-v-3e4528d2]{--status-color:#52c41a;--card-gradient:none;background:#fff;border:1px solid #f0f0f0;border-radius:8px;cursor:pointer;display:flex;flex-direction:column;height:100%;min-height:190px;overflow:hidden;position:relative;transition:all .2s}.inspection-card-view .record-card[data-v-3e4528d2]:hover{border-color:#d9d9d9;box-shadow:0 2px 8px #0000000f}.inspection-card-view .card-gradient-bg[data-v-3e4528d2]{background:var(--card-gradient);border-radius:8px;inset:0;pointer-events:none;position:absolute}.inspection-card-view .card-inner[data-v-3e4528d2]{display:flex;flex:1;flex-direction:column;padding:14px;position:relative;z-index:1}.inspection-card-view .card-header[data-v-3e4528d2]{align-items:center;display:flex;justify-content:space-between;margin-bottom:10px}.inspection-card-view .status-badge[data-v-3e4528d2]{align-items:center;display:flex;gap:4px}.inspection-card-view .status-badge__icon[data-v-3e4528d2]{color:var(--status-color);font-size:18px}.inspection-card-view .status-badge__text[data-v-3e4528d2]{color:var(--status-color);font-size:13px;font-weight:600}.inspection-card-view .exception-tag[data-v-3e4528d2]{font-size:11px;line-height:18px;margin:0}.inspection-card-view .area-name[data-v-3e4528d2]{color:#262626;display:-webkit-box;font-size:15px;font-weight:600;-webkit-line-clamp:2;line-height:1.4;margin:0 0 10px;overflow:hidden;-webkit-box-orient:vertical}.inspection-card-view .info-rows[data-v-3e4528d2]{display:flex;flex:1;flex-direction:column;gap:6px}.inspection-card-view .info-row[data-v-3e4528d2]{align-items:center;display:flex;gap:6px}.inspection-card-view .info-icon[data-v-3e4528d2]{color:#8c8c8c;flex-shrink:0;font-size:14px}.inspection-card-view .info-text[data-v-3e4528d2]{color:#595959;flex:1;font-size:13px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.inspection-card-view .card-footer[data-v-3e4528d2]{align-items:center;border-top:1px solid #f5f5f5;display:flex;gap:8px;margin-top:10px;padding-top:8px}.inspection-card-view .footer-tag[data-v-3e4528d2]{border:none;font-size:11px;line-height:18px;margin:0}.inspection-card-view .order-link[data-v-3e4528d2]{align-items:center;color:#1677ff;display:flex;font-size:11px;font-weight:500;gap:2px;margin-left:auto}.inspection-card-view .pagination-wrapper[data-v-3e4528d2]{border-top:1px solid #f0f0f0;display:flex;justify-content:flex-end;padding-top:12px}html.dark .inspection-card-view .record-card[data-v-3e4528d2]{background:#1f1f1f;border-color:#303030}html.dark .inspection-card-view .record-card[data-v-3e4528d2]:hover{border-color:#434343;box-shadow:0 4px 16px #0006}html.dark .inspection-card-view .card-gradient-bg[data-v-3e4528d2]{background:var(--card-gradient-dark)}html.dark .inspection-card-view .area-name[data-v-3e4528d2]{color:#ffffffd9}html.dark .inspection-card-view .info-icon[data-v-3e4528d2]{color:#ffffff73}html.dark .inspection-card-view .info-text[data-v-3e4528d2]{color:#ffffffa6}html.dark .inspection-card-view .card-footer[data-v-3e4528d2],html.dark .inspection-card-view .pagination-wrapper[data-v-3e4528d2]{border-color:#303030}

View File

@@ -0,0 +1 @@
.leave-warning[data-v-c158741a]{border-left:3px solid #faad14;border-radius:8px}.leave-warning[data-v-c158741a] .ant-alert-message{font-size:14px}.leave-warning[data-v-c158741a] .ant-alert-description{font-size:13px}.info-card[data-v-c158741a] .ant-descriptions-item-label{background:#fafafa;font-size:13px;font-weight:500}.info-card[data-v-c158741a] .ant-descriptions-item-content{font-size:13px}

View File

@@ -0,0 +1 @@
.wp-card[data-v-856e04a1]{border-radius:8px;box-shadow:0 1px 2px #0000000a;display:flex;flex-direction:column}[data-v-856e04a1] .ant-card-head{border-bottom:1px solid #f0f0f0;min-height:40px;padding:0 16px}[data-v-856e04a1] .ant-card-head-title{font-size:14px;font-weight:600;padding:10px 0}.wp-main[data-v-856e04a1]{align-items:center;display:flex;flex:1;gap:12px;justify-content:flex-end;padding-right:8px}.wp-ring[data-v-856e04a1]{flex-shrink:0}.wp-ring-inner[data-v-856e04a1]{align-items:baseline;display:flex;justify-content:center}.wp-ring-num[data-v-856e04a1]{font-size:26px;font-weight:800;letter-spacing:-.5px;line-height:1}.wp-ring-pct[data-v-856e04a1]{font-size:13px;font-weight:600;margin-left:1px}.wp-grid[data-v-856e04a1]{display:grid;flex:1;grid-template-columns:1fr 1fr;grid-gap:14px 10px;border-left:1px solid #f0f0f0;gap:14px 10px;padding-left:12px}.wp-cell[data-v-856e04a1],.wp-grid[data-v-856e04a1]{min-width:0}.wp-cell-label[data-v-856e04a1]{color:#8c8c8c;font-size:12px;line-height:1;margin-bottom:5px}.wp-cell-val[data-v-856e04a1]{color:#333;font-size:14px;font-weight:600;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wp-cell-val--warn[data-v-856e04a1]{color:#ff4d4f}[data-v-856e04a1] .ant-card-body{display:flex;flex:1}.dark .wp-cell-val[data-v-856e04a1]{color:#ffffffd9}

View File

@@ -0,0 +1 @@
.co-steps[data-v-264c8d1f]{margin-bottom:20px;padding:0 16px}.co-step-content[data-v-264c8d1f]{min-height:200px}.co-type-grid[data-v-264c8d1f]{display:flex;flex-direction:column;gap:12px}.co-type-card[data-v-264c8d1f]{align-items:center;border:2px solid #f0f0f0;border-radius:10px;cursor:pointer;display:flex;gap:14px;padding:16px;position:relative;transition:all .2s}.co-type-card[data-v-264c8d1f]:hover{border-color:#d9d9d9}.co-type-card--active[data-v-264c8d1f]{background:#f0f7ff;border-color:#1677ff}.co-type-icon[data-v-264c8d1f]{align-items:center;border-radius:10px;display:flex;flex-shrink:0;height:48px;justify-content:center;width:48px}.co-type-info[data-v-264c8d1f]{flex:1}.co-type-title[data-v-264c8d1f]{color:#1f2937;font-size:15px;font-weight:600}.co-type-desc[data-v-264c8d1f]{color:#9ca3af;font-size:12px;margin-top:2px}.co-type-check[data-v-264c8d1f]{color:#1677ff;font-size:20px;position:absolute;right:12px;top:12px}.co-area-section[data-v-264c8d1f]{padding:8px 0}.co-section-label[data-v-264c8d1f]{color:#374151;font-size:14px;font-weight:500;margin-bottom:10px}.co-area-selected[data-v-264c8d1f]{align-items:center;background:#f0fdf4;border-radius:6px;color:#047857;display:flex;font-size:13px;gap:6px;margin-top:12px;padding:8px 12px}.co-area-icon[data-v-264c8d1f]{color:#10b981}.co-summary[data-v-264c8d1f]{align-items:center;background:#fafafa;border-radius:8px;display:flex;gap:10px;margin-bottom:16px;padding:8px 12px}.co-summary-tag[data-v-264c8d1f]{border-radius:4px;font-size:12px;font-weight:500;padding:2px 8px}.co-summary-area[data-v-264c8d1f]{align-items:center;color:#6b7280;display:flex;font-size:13px;gap:4px}.co-summary-icon[data-v-264c8d1f]{color:#9ca3af;font-size:14px}html.dark .co-type-card[data-v-264c8d1f]{border-color:#ffffff1f}html.dark .co-type-card[data-v-264c8d1f]:hover{border-color:#ffffff40}html.dark .co-type-card--active[data-v-264c8d1f]{background:#1677ff1a;border-color:#1677ff}html.dark .co-type-title[data-v-264c8d1f]{color:#ffffffe0}html.dark .co-type-desc[data-v-264c8d1f]{color:#ffffff73}html.dark .co-section-label[data-v-264c8d1f]{color:#ffffffd9}html.dark .co-area-selected[data-v-264c8d1f]{background:#10b9811a;color:#34d399}html.dark .co-summary[data-v-264c8d1f]{background:#ffffff0f}html.dark .co-summary-area[data-v-264c8d1f]{color:#ffffffa6}

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
@media (prefers-color-scheme:dark){.device-bind-drawer[data-v-a47f2307] .ant-drawer-header{border-bottom-color:#374151}.device-bind-drawer[data-v-a47f2307] .ant-table-thead>tr>th{background:#1f2937}}@media (max-width:768px){.device-bind-drawer[data-v-a47f2307]{width:100%!important}.grid-cols-3[data-v-a47f2307]{grid-template-columns:repeat(1,minmax(0,1fr))}}.device-bind-drawer[data-v-a47f2307] .ant-drawer-header{border-bottom:1px solid #e5e7eb;padding:20px 24px}.device-bind-drawer[data-v-a47f2307] .ant-drawer-body{padding:24px}.device-bind-drawer[data-v-a47f2307] .ant-table{font-size:14px}.device-bind-drawer[data-v-a47f2307] .ant-table-thead>tr>th{background:#f9fafb;font-weight:600}

View File

@@ -0,0 +1 @@
.device-detail-drawer[data-v-4f023e04]{width:560px}.traffic-realtime .traffic-stats[data-v-4f023e04]{display:flex;gap:12px;margin-bottom:12px}.traffic-realtime .traffic-stats__item[data-v-4f023e04]{align-items:center;background:#fafafa;border-radius:6px;display:flex;flex:1;font-size:13px;gap:6px;padding:10px 12px}.traffic-realtime .traffic-stats__item--in[data-v-4f023e04]{color:#52c41a}.traffic-realtime .traffic-stats__item--out[data-v-4f023e04]{color:#ff4d4f}.traffic-realtime .traffic-stats__item--net[data-v-4f023e04]{color:#1677ff}.traffic-realtime .traffic-stats__label[data-v-4f023e04]{color:#8c8c8c}.traffic-realtime .traffic-stats__value[data-v-4f023e04]{font-size:18px;font-weight:700;margin-left:auto}.traffic-realtime .traffic-chart[data-v-4f023e04]{height:220px}.badge-realtime .badge-row[data-v-4f023e04]{display:flex;gap:12px;margin-bottom:12px}.badge-realtime .badge-item[data-v-4f023e04]{align-items:center;background:#fafafa;border-radius:8px;display:flex;flex:1;gap:10px;padding:12px}.badge-realtime .badge-item__icon[data-v-4f023e04]{align-items:center;border-radius:8px;display:flex;flex-shrink:0;font-size:18px;height:36px;justify-content:center;width:36px}.badge-realtime .badge-item__icon--bt[data-v-4f023e04]{background:#f0f5ff;color:#2f54eb}.badge-realtime .badge-item__content[data-v-4f023e04]{display:flex;flex-direction:column;gap:2px}.badge-realtime .badge-item__label[data-v-4f023e04]{color:#8c8c8c;font-size:12px}.badge-realtime .badge-item__value[data-v-4f023e04]{color:#262626;font-size:18px;font-weight:700}.beacon-list[data-v-4f023e04]{background:#fafafa;border-radius:8px;padding:12px}.beacon-list__title[data-v-4f023e04]{border-left:3px solid #2f54eb;color:#595959;font-size:13px;font-weight:600;margin-bottom:8px;padding-left:8px}.beacon-item[data-v-4f023e04]{align-items:center;display:flex;gap:12px;padding:6px 0}.beacon-item__mac[data-v-4f023e04]{color:#595959;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:12px}.beacon-item__signal[data-v-4f023e04]{align-items:center;display:flex;gap:8px;margin-left:auto}.beacon-item__rssi[data-v-4f023e04]{font-size:11px;font-weight:600;min-width:55px;text-align:right}.beacon-empty[data-v-4f023e04]{align-items:center;color:#bfbfbf;display:flex;font-size:13px;gap:6px;justify-content:center;padding:16px}.config-form[data-v-4f023e04]{display:flex;flex-direction:column;gap:16px}.config-item[data-v-4f023e04]{align-items:center;display:flex;gap:12px}.config-item--block[data-v-4f023e04]{align-items:stretch;flex-direction:column}.config-label[data-v-4f023e04]{color:#595959;font-size:13px;font-weight:500;min-width:80px}.config-actions[data-v-4f023e04]{border-top:1px solid #f0f0f0;display:flex;gap:12px;justify-content:flex-end;padding-top:8px}.config-editor-error[data-v-4f023e04]{border:1px solid #ff4d4f;border-radius:4px}.config-error-hint[data-v-4f023e04]{color:#ff4d4f;font-size:12px}html.dark .config-label[data-v-4f023e04]{color:#ffffffa6}html.dark .config-actions[data-v-4f023e04]{border-color:#ffffff14}html.dark .config-editor-error[data-v-4f023e04]{border-color:#a61d24}html.dark .config-error-hint[data-v-4f023e04]{color:#a61d24}html.dark .badge-item[data-v-4f023e04],html.dark .beacon-list[data-v-4f023e04],html.dark .traffic-stats__item[data-v-4f023e04]{background:#ffffff0a}html.dark .badge-item__label[data-v-4f023e04],html.dark .traffic-stats__label[data-v-4f023e04]{color:#ffffff73}html.dark .badge-item__value[data-v-4f023e04]{color:#ffffffd9}html.dark .badge-item__icon--bt[data-v-4f023e04]{background:#2f54eb26;color:#597ef7}html.dark .beacon-item__mac[data-v-4f023e04],html.dark .beacon-list__title[data-v-4f023e04]{color:#ffffffa6}

View File

@@ -1 +0,0 @@
.device-detail-drawer[data-v-d7e27f0d]{width:560px}.traffic-realtime .traffic-stats[data-v-d7e27f0d]{display:flex;gap:12px;margin-bottom:12px}.traffic-realtime .traffic-stats__item[data-v-d7e27f0d]{align-items:center;background:#fafafa;border-radius:6px;display:flex;flex:1;font-size:13px;gap:6px;padding:10px 12px}.traffic-realtime .traffic-stats__item--in[data-v-d7e27f0d]{color:#52c41a}.traffic-realtime .traffic-stats__item--out[data-v-d7e27f0d]{color:#ff4d4f}.traffic-realtime .traffic-stats__item--net[data-v-d7e27f0d]{color:#1677ff}.traffic-realtime .traffic-stats__label[data-v-d7e27f0d]{color:#8c8c8c}.traffic-realtime .traffic-stats__value[data-v-d7e27f0d]{font-size:18px;font-weight:700;margin-left:auto}.traffic-realtime .traffic-chart[data-v-d7e27f0d]{height:220px}.badge-realtime .badge-row[data-v-d7e27f0d]{display:flex;gap:12px;margin-bottom:12px}.badge-realtime .badge-item[data-v-d7e27f0d]{align-items:center;background:#fafafa;border-radius:8px;display:flex;flex:1;gap:10px;padding:12px}.badge-realtime .badge-item__icon[data-v-d7e27f0d]{align-items:center;border-radius:8px;display:flex;flex-shrink:0;font-size:18px;height:36px;justify-content:center;width:36px}.badge-realtime .badge-item__icon--bt[data-v-d7e27f0d]{background:#f0f5ff;color:#2f54eb}.badge-realtime .badge-item__content[data-v-d7e27f0d]{display:flex;flex-direction:column;gap:2px}.badge-realtime .badge-item__label[data-v-d7e27f0d]{color:#8c8c8c;font-size:12px}.badge-realtime .badge-item__value[data-v-d7e27f0d]{color:#262626;font-size:18px;font-weight:700}.beacon-list[data-v-d7e27f0d]{background:#fafafa;border-radius:8px;padding:12px}.beacon-list__title[data-v-d7e27f0d]{border-left:3px solid #2f54eb;color:#595959;font-size:13px;font-weight:600;margin-bottom:8px;padding-left:8px}.beacon-item[data-v-d7e27f0d]{align-items:center;display:flex;gap:12px;padding:6px 0}.beacon-item__mac[data-v-d7e27f0d]{color:#595959;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:12px}.beacon-item__signal[data-v-d7e27f0d]{align-items:center;display:flex;gap:8px;margin-left:auto}.beacon-item__rssi[data-v-d7e27f0d]{font-size:11px;font-weight:600;min-width:55px;text-align:right}.beacon-empty[data-v-d7e27f0d]{align-items:center;color:#bfbfbf;display:flex;font-size:13px;gap:6px;justify-content:center;padding:16px}.config-form[data-v-d7e27f0d]{display:flex;flex-direction:column;gap:16px}.config-item[data-v-d7e27f0d]{align-items:center;display:flex;gap:12px}.config-item--block[data-v-d7e27f0d]{align-items:stretch;flex-direction:column}.config-label[data-v-d7e27f0d]{color:#595959;font-size:13px;font-weight:500;min-width:80px}.config-actions[data-v-d7e27f0d]{border-top:1px solid #f0f0f0;display:flex;gap:12px;justify-content:flex-end;padding-top:8px}.config-editor-error[data-v-d7e27f0d]{border:1px solid #ff4d4f;border-radius:4px}.config-error-hint[data-v-d7e27f0d]{color:#ff4d4f;font-size:12px}html.dark .config-label[data-v-d7e27f0d]{color:#ffffffa6}html.dark .config-actions[data-v-d7e27f0d]{border-color:#ffffff14}html.dark .config-editor-error[data-v-d7e27f0d]{border-color:#a61d24}html.dark .config-error-hint[data-v-d7e27f0d]{color:#a61d24}html.dark .badge-item[data-v-d7e27f0d],html.dark .beacon-list[data-v-d7e27f0d],html.dark .traffic-stats__item[data-v-d7e27f0d]{background:#ffffff0a}html.dark .badge-item__label[data-v-d7e27f0d],html.dark .traffic-stats__label[data-v-d7e27f0d]{color:#ffffff73}html.dark .badge-item__value[data-v-d7e27f0d]{color:#ffffffd9}html.dark .badge-item__icon--bt[data-v-d7e27f0d]{background:#2f54eb26;color:#597ef7}html.dark .beacon-item__mac[data-v-d7e27f0d],html.dark .beacon-list__title[data-v-d7e27f0d]{color:#ffffffa6}

View File

@@ -0,0 +1 @@
.trajectory-page[data-v-ed7cda08]{display:flex;flex-direction:column;gap:16px}.filter-bar[data-v-ed7cda08]{flex-wrap:wrap;gap:20px}.filter-bar[data-v-ed7cda08],.filter-item[data-v-ed7cda08]{align-items:center;display:flex}.filter-item[data-v-ed7cda08]{gap:8px}.filter-label[data-v-ed7cda08]{color:#595959;font-size:13px;white-space:nowrap}.filter-actions[data-v-ed7cda08]{display:flex;gap:8px;margin-left:auto}.badge-option[data-v-ed7cda08]{align-items:center;display:flex;gap:8px}.badge-option-name[data-v-ed7cda08]{color:#262626;font-size:13px}.badge-option-person[data-v-ed7cda08]{color:#8c8c8c;font-size:12px}.content-area[data-v-ed7cda08]{margin-top:0}.left-panel[data-v-ed7cda08]{display:flex;flex-direction:column;gap:16px}.chart-area[data-v-ed7cda08],.detail-card[data-v-ed7cda08]{margin-top:16px}.detail-card[data-v-ed7cda08]{padding:16px}.detail-card-header[data-v-ed7cda08]{align-items:center;display:flex;justify-content:space-between;margin-bottom:12px}.detail-card-title[data-v-ed7cda08]{align-items:center;display:flex;gap:12px}.detail-card-title-text[data-v-ed7cda08]{color:#262626;font-size:14px;font-weight:600}.table-total[data-v-ed7cda08]{color:#8c8c8c;font-size:12px;font-weight:400}.table-wrapper[data-v-ed7cda08]{overflow-x:auto}.trajectory-table[data-v-ed7cda08]{border-collapse:collapse;font-size:13px;width:100%}.trajectory-table th[data-v-ed7cda08]{background:#fafafa;border-bottom:1px solid #f0f0f0;color:#595959;font-weight:500;padding:10px 12px;text-align:left;white-space:nowrap}.trajectory-table td[data-v-ed7cda08]{border-bottom:1px solid #f5f5f5;color:#262626;padding:10px 12px;transition:background-color .3s}.trajectory-table tr:hover td[data-v-ed7cda08]{background-color:#fafafa}.cell-center[data-v-ed7cda08],.table-empty[data-v-ed7cda08]{text-align:center}.table-empty[data-v-ed7cda08]{padding:32px!important}.row-highlight td[data-v-ed7cda08]{background-color:#e6f4ff!important;transition:background-color .3s}.duration-warn[data-v-ed7cda08]{color:#fa8c16;font-weight:500}.table-pagination[data-v-ed7cda08]{align-items:center;display:flex;justify-content:space-between;padding:12px 0 4px}.pagination-info[data-v-ed7cda08]{color:#8c8c8c;font-size:12px}.pagination-buttons[data-v-ed7cda08]{align-items:center;display:flex;gap:8px}.page-num[data-v-ed7cda08]{color:#262626;font-size:13px;font-weight:500;min-width:24px;text-align:center}.view-switcher[data-v-ed7cda08]{border:1px solid #d9d9d9;border-radius:6px;display:inline-flex;overflow:hidden}.view-switcher-btn[data-v-ed7cda08]{align-items:center;background:#fff;border:none;border-right:1px solid #d9d9d9;color:#595959;cursor:pointer;display:inline-flex;font-size:13px;gap:4px;line-height:1;outline:none;padding:4px 12px;transition:all .2s;white-space:nowrap}.view-switcher-btn[data-v-ed7cda08]:last-child{border-right:none}.view-switcher-btn[data-v-ed7cda08]:hover{color:#1677ff}.view-switcher-btn.active[data-v-ed7cda08]{background:#1677ff;color:#fff}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.tab-row[data-v-3205bfda]{align-items:center;border-bottom:1px solid #f0f0f0;display:flex;justify-content:space-between;padding:0 16px}.status-tabs[data-v-3205bfda]{flex:1;min-width:0}.status-tabs[data-v-3205bfda] .ant-tabs-nav{margin-bottom:0}.status-tabs[data-v-3205bfda] .ant-tabs-nav:before{display:none}.status-tabs[data-v-3205bfda] .ant-tabs-tab{font-size:14px;padding:14px 4px;transition:all .2s}.status-tabs[data-v-3205bfda] .ant-tabs-tab:hover{color:var(--ant-color-primary)}.status-tabs[data-v-3205bfda] .ant-tabs-tab.ant-tabs-tab-active{font-weight:600}.status-tabs[data-v-3205bfda] .ant-tabs-ink-bar{border-radius:1px;height:2px}.status-tabs .tab-label[data-v-3205bfda]{line-height:1}.tab-actions[data-v-3205bfda]{flex-shrink:0;gap:6px;padding:8px 0}.action-btn[data-v-3205bfda],.tab-actions[data-v-3205bfda]{align-items:center;display:flex}.action-btn[data-v-3205bfda]{background:transparent;border:1px solid #d9d9d9;border-radius:6px;color:#595959;font-size:16px;height:32px;justify-content:center;padding:0;transition:all .2s;width:32px}.action-btn--active[data-v-3205bfda],.action-btn[data-v-3205bfda]:hover{border-color:var(--ant-color-primary);color:var(--ant-color-primary)}.action-btn--active[data-v-3205bfda]{background:var(--ant-color-primary-bg)}.search-panel[data-v-3205bfda]{background:transparent;border-bottom:1px solid #f0f0f0;justify-content:space-between;padding:12px 16px}.search-items[data-v-3205bfda],.search-panel[data-v-3205bfda]{align-items:center;display:flex}.search-items[data-v-3205bfda]{flex-wrap:wrap;gap:16px}.search-item[data-v-3205bfda]{align-items:center;display:flex;gap:8px}.search-label[data-v-3205bfda]{color:#595959;font-size:13px;white-space:nowrap}.search-actions[data-v-3205bfda]{align-items:center;display:flex;gap:8px}.btn-icon[data-v-3205bfda]{margin-right:4px}.card-content[data-v-3205bfda]{padding:16px}html.dark .tab-row[data-v-3205bfda]{border-color:#303030}html.dark .action-btn[data-v-3205bfda]{border-color:#434343;color:#8c8c8c}html.dark .action-btn--active[data-v-3205bfda],html.dark .action-btn[data-v-3205bfda]:hover{border-color:var(--ant-color-primary);color:var(--ant-color-primary)}html.dark .action-btn--active[data-v-3205bfda]{background:#1677ff26}html.dark .search-panel[data-v-3205bfda]{background:transparent;border-color:#303030}html.dark .search-label[data-v-3205bfda]{color:#ffffffa6}

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
@media (max-width:768px){.work-order-dashboard[data-v-33d10a38]{padding:8px}.chart-container[data-v-33d10a38]{height:220px!important}.modern-chart[data-v-33d10a38]{height:160px!important}}.work-order-dashboard[data-v-33d10a38]{padding:16px}.metric-card[data-v-33d10a38]{background:#fff;border:1px solid #f0f0f0;border-radius:8px;overflow:hidden;position:relative;transition:all .3s ease}.metric-card[data-v-33d10a38]:hover{box-shadow:0 4px 16px #0000000f;transform:translateY(-2px)}.metric-card[data-v-33d10a38] .ant-card-body{padding:16px}.metric-card .metric-content[data-v-33d10a38]{align-items:center;display:flex;gap:12px}.metric-card .metric-icon[data-v-33d10a38]{align-items:center;border-radius:10px;display:flex;flex-shrink:0;font-size:22px;height:48px;justify-content:center;width:48px}.metric-card .metric-icon[data-v-33d10a38] svg{height:22px;width:22px}.metric-card .metric-info[data-v-33d10a38]{flex:1}.metric-card .metric-label[data-v-33d10a38]{color:#262626;font-size:13px;margin-bottom:2px}.metric-card--pending .metric-icon[data-v-33d10a38]{background:#fff1f0;color:#ff4d4f}.metric-card--progress .metric-icon[data-v-33d10a38]{background:#e6f4ff;color:#1677ff}.metric-card--completed .metric-icon[data-v-33d10a38]{background:#f6ffed;color:#52c41a}.metric-card--total .metric-icon[data-v-33d10a38]{background:#f9f0ff;color:#722ed1}.chart-card[data-v-33d10a38]{background:#fff;border:1px solid #f0f0f0;border-radius:8px;transition:all .3s ease}.chart-card[data-v-33d10a38]:hover{box-shadow:0 2px 12px #0000000d}.chart-card[data-v-33d10a38] .ant-card-head{border-bottom:1px solid #f0f0f0;min-height:44px;padding:0 16px}.chart-card[data-v-33d10a38] .ant-card-head .ant-card-head-title{color:#262626;font-size:14px;font-weight:600;padding:12px 0}.chart-card[data-v-33d10a38] .ant-card-body{padding:12px 16px 16px}.chart-card--compact[data-v-33d10a38] .ant-card-body{padding:12px 16px}.chart-card--equal[data-v-33d10a38]{display:flex;flex-direction:column;height:100%;min-height:260px}.chart-card--equal[data-v-33d10a38] .ant-card-body{display:flex;flex:1;flex-direction:column;justify-content:center}.chart-card .info-icon[data-v-33d10a38]{color:#8c8c8c;cursor:help;font-size:14px}.chart-card .info-icon[data-v-33d10a38]:hover{color:#1677ff}.chart-card .card-title[data-v-33d10a38]{align-items:center;color:#262626;display:flex;font-size:14px;font-weight:600;gap:6px}.chart-card .card-title .title-icon[data-v-33d10a38]{color:#1677ff;font-size:16px}.chart-card .chart-container[data-v-33d10a38]{height:280px}.chart-card .chart-container--medium[data-v-33d10a38]{height:240px}.chart-card .chart-container--small[data-v-33d10a38]{height:200px}.modern-card[data-v-33d10a38]{background:#fff;border:1px solid #f0f0f0;border-radius:8px;height:100%;min-height:260px;overflow:hidden;transition:all .3s ease}.modern-card[data-v-33d10a38]:hover{box-shadow:0 4px 16px #0000000f;transform:translateY(-1px)}.modern-card[data-v-33d10a38] .ant-card-body{display:flex;flex-direction:column;height:100%;padding:16px}.modern-card .modern-header[data-v-33d10a38]{align-items:center;display:flex;margin-bottom:12px}.modern-card .modern-title[data-v-33d10a38]{color:#262626;font-size:14px;font-weight:600}.modern-card .modern-chart[data-v-33d10a38]{flex:1;height:180px;min-height:180px}.modern-card--heatmap .modern-chart[data-v-33d10a38]{height:200px}.modern-card--duration .modern-chart[data-v-33d10a38],.modern-card--ranking .modern-chart[data-v-33d10a38]{height:180px}html.dark .metric-card[data-v-33d10a38]{background:#1f1f1f;border-color:#303030}html.dark .metric-card[data-v-33d10a38]:hover{box-shadow:0 8px 24px #0006}html.dark .metric-card .metric-label[data-v-33d10a38]{color:#ffffffa6}html.dark .chart-card[data-v-33d10a38]{background:#1f1f1f;border-color:#303030}html.dark .chart-card[data-v-33d10a38] .ant-card-head{border-bottom-color:#303030}html.dark .chart-card[data-v-33d10a38] .ant-card-head .ant-card-head-title,html.dark .card-title[data-v-33d10a38]{color:#ffffffd9}html.dark .modern-card[data-v-33d10a38]{background:#1f1f1f;border-color:#303030}html.dark .modern-card .modern-title[data-v-33d10a38]{color:#ffffffd9}

View File

@@ -0,0 +1 @@
.area-tag[data-v-1e9965c9]{border-radius:4px;font-size:12px}

View File

@@ -0,0 +1 @@
@media (max-width:768px){.work-order-dashboard[data-v-37bd0ab5]{padding:8px}.chart-container[data-v-37bd0ab5]{height:220px!important}.modern-chart[data-v-37bd0ab5]{height:160px!important}}.work-order-dashboard[data-v-37bd0ab5]{padding:16px}.metric-card[data-v-37bd0ab5]{background:#fff;border:1px solid #f0f0f0;border-radius:8px;overflow:hidden;position:relative;transition:all .3s ease}.metric-card[data-v-37bd0ab5]:hover{box-shadow:0 4px 16px #0000000f;transform:translateY(-2px)}.metric-card[data-v-37bd0ab5] .ant-card-body{padding:16px}.metric-card .metric-content[data-v-37bd0ab5]{align-items:center;display:flex;gap:12px}.metric-card .metric-icon[data-v-37bd0ab5]{align-items:center;border-radius:10px;display:flex;flex-shrink:0;font-size:22px;height:48px;justify-content:center;width:48px}.metric-card .metric-icon[data-v-37bd0ab5] svg{height:22px;width:22px}.metric-card .metric-info[data-v-37bd0ab5]{flex:1}.metric-card .metric-label[data-v-37bd0ab5]{color:#262626;font-size:13px;margin-bottom:2px}.metric-card--pending .metric-icon[data-v-37bd0ab5]{background:#fff1f0;color:#ff4d4f}.metric-card--progress .metric-icon[data-v-37bd0ab5]{background:#e6f4ff;color:#1677ff}.metric-card--completed .metric-icon[data-v-37bd0ab5]{background:#f6ffed;color:#52c41a}.metric-card--total .metric-icon[data-v-37bd0ab5]{background:#f9f0ff;color:#722ed1}.chart-card[data-v-37bd0ab5]{background:#fff;border:1px solid #f0f0f0;border-radius:8px;transition:all .3s ease}.chart-card[data-v-37bd0ab5]:hover{box-shadow:0 2px 12px #0000000d}.chart-card[data-v-37bd0ab5] .ant-card-head{border-bottom:1px solid #f0f0f0;min-height:44px;padding:0 16px}.chart-card[data-v-37bd0ab5] .ant-card-head .ant-card-head-title{color:#262626;font-size:14px;font-weight:600;padding:12px 0}.chart-card[data-v-37bd0ab5] .ant-card-body{padding:12px 16px 16px}.chart-card--compact[data-v-37bd0ab5] .ant-card-body{padding:12px 16px}.chart-card--equal[data-v-37bd0ab5]{display:flex;flex-direction:column;height:100%;min-height:260px}.chart-card--equal[data-v-37bd0ab5] .ant-card-body{display:flex;flex:1;flex-direction:column;justify-content:center}.chart-card .info-icon[data-v-37bd0ab5]{color:#8c8c8c;cursor:help;font-size:14px}.chart-card .info-icon[data-v-37bd0ab5]:hover{color:#1677ff}.chart-card .card-title[data-v-37bd0ab5]{align-items:center;color:#262626;display:flex;font-size:14px;font-weight:600;gap:6px}.chart-card .card-title .title-icon[data-v-37bd0ab5]{color:#1677ff;font-size:16px}.chart-card .chart-container[data-v-37bd0ab5]{height:280px}.chart-card .chart-container--medium[data-v-37bd0ab5]{height:240px}.chart-card .chart-container--small[data-v-37bd0ab5]{height:200px}.modern-card[data-v-37bd0ab5]{background:#fff;border:1px solid #f0f0f0;border-radius:8px;height:100%;min-height:260px;overflow:hidden;transition:all .3s ease}.modern-card[data-v-37bd0ab5]:hover{box-shadow:0 4px 16px #0000000f;transform:translateY(-1px)}.modern-card[data-v-37bd0ab5] .ant-card-body{display:flex;flex-direction:column;height:100%;padding:16px}.modern-card .modern-header[data-v-37bd0ab5]{align-items:center;display:flex;margin-bottom:12px}.modern-card .modern-title[data-v-37bd0ab5]{color:#262626;font-size:14px;font-weight:600}.modern-card .modern-chart[data-v-37bd0ab5]{flex:1;height:180px;min-height:180px}.modern-card--heatmap .modern-chart[data-v-37bd0ab5]{height:200px}.modern-card--duration .modern-chart[data-v-37bd0ab5],.modern-card--ranking .modern-chart[data-v-37bd0ab5]{height:180px}html.dark .metric-card[data-v-37bd0ab5]{background:#1f1f1f;border-color:#303030}html.dark .metric-card[data-v-37bd0ab5]:hover{box-shadow:0 8px 24px #0006}html.dark .metric-card .metric-label[data-v-37bd0ab5]{color:#ffffffa6}html.dark .chart-card[data-v-37bd0ab5]{background:#1f1f1f;border-color:#303030}html.dark .chart-card[data-v-37bd0ab5] .ant-card-head{border-bottom-color:#303030}html.dark .chart-card[data-v-37bd0ab5] .ant-card-head .ant-card-head-title,html.dark .card-title[data-v-37bd0ab5]{color:#ffffffd9}html.dark .modern-card[data-v-37bd0ab5]{background:#1f1f1f;border-color:#303030}html.dark .modern-card .modern-title[data-v-37bd0ab5]{color:#ffffffd9}

View File

@@ -0,0 +1 @@
.area-security-page[data-v-39c2dafb]{padding:16px}.area-security-tabs[data-v-39c2dafb] .ant-tabs-nav{margin-bottom:16px}@media (max-width:768px){.area-security-page[data-v-39c2dafb]{padding:8px}}

View File

@@ -1 +0,0 @@
[data-v-43444de6] .vxe-grid--form-wrapper{display:none!important}.tab-row[data-v-43444de6]{align-items:center;border-bottom:1px solid #f0f0f0;display:flex;justify-content:space-between;padding:0 16px}.status-tabs[data-v-43444de6]{flex:1;min-width:0}.status-tabs[data-v-43444de6] .ant-tabs-nav{margin-bottom:0}.status-tabs[data-v-43444de6] .ant-tabs-nav:before{display:none}.status-tabs[data-v-43444de6] .ant-tabs-tab{font-size:14px;padding:14px 4px;transition:all .2s}.status-tabs[data-v-43444de6] .ant-tabs-tab:hover{color:var(--ant-color-primary)}.status-tabs[data-v-43444de6] .ant-tabs-tab.ant-tabs-tab-active{font-weight:600}.status-tabs[data-v-43444de6] .ant-tabs-ink-bar{border-radius:1px;height:2px}.status-tabs .tab-item[data-v-43444de6]{align-items:center;display:flex;gap:6px}.status-tabs .tab-label[data-v-43444de6]{line-height:1}.status-tabs .tab-count[data-v-43444de6]{align-items:center;background:#8c8c8c;border-radius:9px;color:#fff;display:inline-flex;font-size:11px;font-weight:500;height:18px;justify-content:center;line-height:1;min-width:18px;padding:0 5px}.status-tabs .tab-count--danger[data-v-43444de6]{background:#ff4d4f}.tab-actions[data-v-43444de6]{align-items:center;display:flex;flex-shrink:0;gap:6px;padding:8px 0}.btn-divider[data-v-43444de6]{background:#e5e5e5;height:16px;margin:0 4px;width:1px}.btn-group[data-v-43444de6]{background:#f5f5f5;border-radius:6px;display:flex;gap:0}.btn-group .group-btn[data-v-43444de6]{align-items:center;background:transparent;border:none;border-radius:6px;color:#8c8c8c;display:flex;font-size:16px;height:32px;justify-content:center;padding:0;transition:all .2s;width:32px}.btn-group .group-btn[data-v-43444de6]:hover{color:#595959}.btn-group .group-btn--active[data-v-43444de6]{background:#fff;box-shadow:0 1px 2px #00000014;color:var(--ant-color-primary)}.action-btn[data-v-43444de6]{align-items:center;background:transparent;border:1px solid #d9d9d9;border-radius:6px;color:#595959;display:flex;font-size:16px;height:32px;justify-content:center;padding:0;transition:all .2s;width:32px}.action-btn--active[data-v-43444de6],.action-btn[data-v-43444de6]:hover{border-color:var(--ant-color-primary);color:var(--ant-color-primary)}.action-btn--active[data-v-43444de6]{background:var(--ant-color-primary-bg)}.create-btn[data-v-43444de6]{border-radius:6px;font-size:14px;gap:4px;height:32px;padding:0 14px}.create-btn[data-v-43444de6],.search-panel[data-v-43444de6]{align-items:center;display:flex}.search-panel[data-v-43444de6]{background:transparent;border-bottom:1px solid #f0f0f0;justify-content:space-between;padding:12px 16px}.search-items[data-v-43444de6]{flex-wrap:wrap;gap:16px}.search-item[data-v-43444de6],.search-items[data-v-43444de6]{align-items:center;display:flex}.search-item[data-v-43444de6]{gap:8px}.search-label[data-v-43444de6]{color:#595959;font-size:13px;white-space:nowrap}.search-actions[data-v-43444de6]{align-items:center;display:flex;gap:8px}.card-content[data-v-43444de6],.list-content[data-v-43444de6]{padding:16px}.list-content[data-v-43444de6] .vxe-grid{background:transparent;border-radius:8px;overflow:hidden}.list-content[data-v-43444de6] .vxe-table{background:transparent}.list-content[data-v-43444de6] .vxe-header--column{background:#00000005}.list-content[data-v-43444de6] .vxe-body--row{background:transparent}.list-content[data-v-43444de6] .vxe-body--row:hover>td{background:#0000000a!important}.list-content[data-v-43444de6] .vxe-table--border-line{border-color:#0000000f}html.dark .tab-row[data-v-43444de6]{border-color:#303030}html.dark .btn-divider[data-v-43444de6]{background:#404040}html.dark .btn-group[data-v-43444de6]{background:#333}html.dark .btn-group .group-btn[data-v-43444de6]{color:#8c8c8c}html.dark .btn-group .group-btn[data-v-43444de6]:hover{color:#bfbfbf}html.dark .btn-group .group-btn--active[data-v-43444de6]{background:#1f1f1f;color:var(--ant-color-primary)}html.dark .action-btn[data-v-43444de6]{border-color:#434343;color:#8c8c8c}html.dark .action-btn--active[data-v-43444de6],html.dark .action-btn[data-v-43444de6]:hover{border-color:var(--ant-color-primary);color:var(--ant-color-primary)}html.dark .action-btn--active[data-v-43444de6]{background:#1677ff26}html.dark .tab-count[data-v-43444de6]{background:#595959}html.dark .tab-count--danger[data-v-43444de6]{background:#a61d24}html.dark .search-panel[data-v-43444de6]{background:transparent;border-color:#303030}html.dark .search-label[data-v-43444de6]{color:#ffffffa6}html.dark .list-content[data-v-43444de6] .vxe-grid,html.dark .list-content[data-v-43444de6] .vxe-table{background:transparent}html.dark .list-content[data-v-43444de6] .vxe-header--column{background:#ffffff0a}html.dark .list-content[data-v-43444de6] .vxe-body--row{background:transparent}html.dark .list-content[data-v-43444de6] .vxe-body--row:hover>td{background:#ffffff0f!important}html.dark .list-content[data-v-43444de6] .vxe-table--border-line{border-color:#ffffff14}

View File

@@ -0,0 +1 @@
[data-v-71fa39af] .vxe-grid--form-wrapper{display:none!important}.tab-row[data-v-71fa39af]{align-items:center;border-bottom:1px solid #f0f0f0;display:flex;justify-content:space-between;padding:0 16px}.status-tabs[data-v-71fa39af]{flex:1;min-width:0}.status-tabs[data-v-71fa39af] .ant-tabs-nav{margin-bottom:0}.status-tabs[data-v-71fa39af] .ant-tabs-nav:before{display:none}.status-tabs[data-v-71fa39af] .ant-tabs-tab{font-size:14px;padding:14px 4px;transition:all .2s}.status-tabs[data-v-71fa39af] .ant-tabs-tab:hover{color:var(--ant-color-primary)}.status-tabs[data-v-71fa39af] .ant-tabs-tab.ant-tabs-tab-active{font-weight:600}.status-tabs[data-v-71fa39af] .ant-tabs-ink-bar{border-radius:1px;height:2px}.status-tabs .tab-item[data-v-71fa39af]{align-items:center;display:flex;gap:6px}.status-tabs .tab-label[data-v-71fa39af]{line-height:1}.status-tabs .tab-count[data-v-71fa39af]{align-items:center;background:#8c8c8c;border-radius:9px;color:#fff;display:inline-flex;font-size:11px;font-weight:500;height:18px;justify-content:center;line-height:1;min-width:18px;padding:0 5px}.status-tabs .tab-count--danger[data-v-71fa39af]{background:#ff4d4f}.tab-actions[data-v-71fa39af]{align-items:center;display:flex;flex-shrink:0;gap:6px;padding:8px 0}.btn-divider[data-v-71fa39af]{background:#e5e5e5;height:16px;margin:0 4px;width:1px}.btn-group[data-v-71fa39af]{background:#f5f5f5;border-radius:6px;display:flex;gap:0}.btn-group .group-btn[data-v-71fa39af]{align-items:center;background:transparent;border:none;border-radius:6px;color:#8c8c8c;display:flex;font-size:16px;height:32px;justify-content:center;padding:0;transition:all .2s;width:32px}.btn-group .group-btn[data-v-71fa39af]:hover{color:#595959}.btn-group .group-btn--active[data-v-71fa39af]{background:#fff;box-shadow:0 1px 2px #00000014;color:var(--ant-color-primary)}.action-btn[data-v-71fa39af]{align-items:center;background:transparent;border:1px solid #d9d9d9;border-radius:6px;color:#595959;display:flex;font-size:16px;height:32px;justify-content:center;padding:0;transition:all .2s;width:32px}.action-btn--active[data-v-71fa39af],.action-btn[data-v-71fa39af]:hover{border-color:var(--ant-color-primary);color:var(--ant-color-primary)}.action-btn--active[data-v-71fa39af]{background:var(--ant-color-primary-bg)}.create-btn[data-v-71fa39af]{border-radius:6px;font-size:14px;gap:4px;height:32px;padding:0 14px}.create-btn[data-v-71fa39af],.search-panel[data-v-71fa39af]{align-items:center;display:flex}.search-panel[data-v-71fa39af]{background:transparent;border-bottom:1px solid #f0f0f0;justify-content:space-between;padding:12px 16px}.search-items[data-v-71fa39af]{flex-wrap:wrap;gap:16px}.search-item[data-v-71fa39af],.search-items[data-v-71fa39af]{align-items:center;display:flex}.search-item[data-v-71fa39af]{gap:8px}.search-label[data-v-71fa39af]{color:#595959;font-size:13px;white-space:nowrap}.search-actions[data-v-71fa39af]{align-items:center;display:flex;gap:8px}.card-content[data-v-71fa39af],.list-content[data-v-71fa39af]{padding:16px}.list-content[data-v-71fa39af] .vxe-grid{background:transparent;border-radius:8px;overflow:hidden}.list-content[data-v-71fa39af] .vxe-table{background:transparent}.list-content[data-v-71fa39af] .vxe-header--column{background:#00000005}.list-content[data-v-71fa39af] .vxe-body--row{background:transparent}.list-content[data-v-71fa39af] .vxe-body--row:hover>td{background:#0000000a!important}.list-content[data-v-71fa39af] .vxe-table--border-line{border-color:#0000000f}html.dark .tab-row[data-v-71fa39af]{border-color:#303030}html.dark .btn-divider[data-v-71fa39af]{background:#404040}html.dark .btn-group[data-v-71fa39af]{background:#333}html.dark .btn-group .group-btn[data-v-71fa39af]{color:#8c8c8c}html.dark .btn-group .group-btn[data-v-71fa39af]:hover{color:#bfbfbf}html.dark .btn-group .group-btn--active[data-v-71fa39af]{background:#1f1f1f;color:var(--ant-color-primary)}html.dark .action-btn[data-v-71fa39af]{border-color:#434343;color:#8c8c8c}html.dark .action-btn--active[data-v-71fa39af],html.dark .action-btn[data-v-71fa39af]:hover{border-color:var(--ant-color-primary);color:var(--ant-color-primary)}html.dark .action-btn--active[data-v-71fa39af]{background:#1677ff26}html.dark .tab-count[data-v-71fa39af]{background:#595959}html.dark .tab-count--danger[data-v-71fa39af]{background:#a61d24}html.dark .search-panel[data-v-71fa39af]{background:transparent;border-color:#303030}html.dark .search-label[data-v-71fa39af]{color:#ffffffa6}html.dark .list-content[data-v-71fa39af] .vxe-grid,html.dark .list-content[data-v-71fa39af] .vxe-table{background:transparent}html.dark .list-content[data-v-71fa39af] .vxe-header--column{background:#ffffff0a}html.dark .list-content[data-v-71fa39af] .vxe-body--row{background:transparent}html.dark .list-content[data-v-71fa39af] .vxe-body--row:hover>td{background:#ffffff0f!important}html.dark .list-content[data-v-71fa39af] .vxe-table--border-line{border-color:#ffffff14}

View File

@@ -1 +0,0 @@
.custom-login-wrapper[data-v-a4c08deb]{width:100%}

View File

@@ -0,0 +1 @@
.custom-login-wrapper[data-v-2e958cf2]{width:100%}

View File

@@ -0,0 +1 @@
.cropper-container{direction:ltr;font-size:0;line-height:0;position:relative;touch-action:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.cropper-container img{backface-visibility:hidden;display:block;height:100%;image-orientation:0deg;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;width:100%}.cropper-canvas,.cropper-crop-box,.cropper-drag-box,.cropper-modal,.cropper-wrap-box{inset:0;position:absolute}.cropper-canvas,.cropper-wrap-box{overflow:hidden}.cropper-drag-box{background-color:#fff;opacity:0}.cropper-modal{background-color:#000;opacity:.5}.cropper-view-box{display:block;height:100%;outline:1px solid #39f;outline-color:#3399ffbf;overflow:hidden;width:100%}.cropper-dashed{border:0 dashed #eee;display:block;opacity:.5;position:absolute}.cropper-dashed.dashed-h{border-bottom-width:1px;border-top-width:1px;height:33.33333%;left:0;top:33.33333%;width:100%}.cropper-dashed.dashed-v{border-left-width:1px;border-right-width:1px;height:100%;left:33.33333%;top:0;width:33.33333%}.cropper-center{display:block;height:0;left:50%;opacity:.75;position:absolute;top:50%;width:0}.cropper-center:after,.cropper-center:before{background-color:#eee;content:" ";display:block;position:absolute}.cropper-center:before{height:1px;left:-3px;top:0;width:7px}.cropper-center:after{height:7px;left:0;top:-3px;width:1px}.cropper-face,.cropper-line,.cropper-point{display:block;height:100%;opacity:.1;position:absolute;width:100%}.cropper-face{background-color:#fff;left:0;top:0}.cropper-line{background-color:#39f}.cropper-line.line-e{cursor:ew-resize;right:-3px;top:0;width:5px}.cropper-line.line-n{cursor:ns-resize;height:5px;left:0;top:-3px}.cropper-line.line-w{cursor:ew-resize;left:-3px;top:0;width:5px}.cropper-line.line-s{bottom:-3px;cursor:ns-resize;height:5px;left:0}.cropper-point{background-color:#39f;height:5px;opacity:.75;width:5px}.cropper-point.point-e{cursor:ew-resize;margin-top:-3px;right:-3px;top:50%}.cropper-point.point-n{cursor:ns-resize;left:50%;margin-left:-3px;top:-3px}.cropper-point.point-w{cursor:ew-resize;left:-3px;margin-top:-3px;top:50%}.cropper-point.point-s{bottom:-3px;cursor:s-resize;left:50%;margin-left:-3px}.cropper-point.point-ne{cursor:nesw-resize;right:-3px;top:-3px}.cropper-point.point-nw{cursor:nwse-resize;left:-3px;top:-3px}.cropper-point.point-sw{bottom:-3px;cursor:nesw-resize;left:-3px}.cropper-point.point-se{bottom:-3px;cursor:nwse-resize;height:20px;opacity:1;right:-3px;width:20px}@media (min-width:768px){.cropper-point.point-se{height:15px;width:15px}}@media (min-width:992px){.cropper-point.point-se{height:10px;width:10px}}@media (min-width:1200px){.cropper-point.point-se{height:5px;opacity:.75;width:5px}}.cropper-point.point-se:before{background-color:#39f;bottom:-50%;content:" ";display:block;height:200%;opacity:0;position:absolute;right:-50%;width:200%}.cropper-invisible{opacity:0}.cropper-bg{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC)}.cropper-hide{display:block;height:0;position:absolute;width:0}.cropper-hidden{display:none!important}.cropper-move{cursor:move}.cropper-crop{cursor:crosshair}.cropper-disabled .cropper-drag-box,.cropper-disabled .cropper-face,.cropper-disabled .cropper-line,.cropper-disabled .cropper-point{cursor:not-allowed}.cropper-image--circled .cropper-face,.cropper-image--circled .cropper-view-box{border-radius:50%}.profile-item[data-v-9c1c1b33]{align-items:center;border-bottom:1px solid rgba(0,0,0,.06);display:flex;justify-content:space-between;padding:8px 4px}.dark .profile-item[data-v-9c1c1b33]{border-bottom-color:#ffffff14}.profile-item[data-v-9c1c1b33]:last-child{border-bottom:none}.profile-item-label[data-v-9c1c1b33]{align-items:center;color:#000000a6;display:flex;font-size:14px}.dark .profile-item-label[data-v-9c1c1b33]{color:#ffffffa6}.profile-item-value[data-v-9c1c1b33]{color:#000000d9;font-size:14px}.dark .profile-item-value[data-v-9c1c1b33]{color:#ffffffd9}

View File

@@ -1 +0,0 @@
.cropper-container{direction:ltr;font-size:0;line-height:0;position:relative;touch-action:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.cropper-container img{backface-visibility:hidden;display:block;height:100%;image-orientation:0deg;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;width:100%}.cropper-canvas,.cropper-crop-box,.cropper-drag-box,.cropper-modal,.cropper-wrap-box{inset:0;position:absolute}.cropper-canvas,.cropper-wrap-box{overflow:hidden}.cropper-drag-box{background-color:#fff;opacity:0}.cropper-modal{background-color:#000;opacity:.5}.cropper-view-box{display:block;height:100%;outline:1px solid #39f;outline-color:#3399ffbf;overflow:hidden;width:100%}.cropper-dashed{border:0 dashed #eee;display:block;opacity:.5;position:absolute}.cropper-dashed.dashed-h{border-bottom-width:1px;border-top-width:1px;height:33.33333%;left:0;top:33.33333%;width:100%}.cropper-dashed.dashed-v{border-left-width:1px;border-right-width:1px;height:100%;left:33.33333%;top:0;width:33.33333%}.cropper-center{display:block;height:0;left:50%;opacity:.75;position:absolute;top:50%;width:0}.cropper-center:after,.cropper-center:before{background-color:#eee;content:" ";display:block;position:absolute}.cropper-center:before{height:1px;left:-3px;top:0;width:7px}.cropper-center:after{height:7px;left:0;top:-3px;width:1px}.cropper-face,.cropper-line,.cropper-point{display:block;height:100%;opacity:.1;position:absolute;width:100%}.cropper-face{background-color:#fff;left:0;top:0}.cropper-line{background-color:#39f}.cropper-line.line-e{cursor:ew-resize;right:-3px;top:0;width:5px}.cropper-line.line-n{cursor:ns-resize;height:5px;left:0;top:-3px}.cropper-line.line-w{cursor:ew-resize;left:-3px;top:0;width:5px}.cropper-line.line-s{bottom:-3px;cursor:ns-resize;height:5px;left:0}.cropper-point{background-color:#39f;height:5px;opacity:.75;width:5px}.cropper-point.point-e{cursor:ew-resize;margin-top:-3px;right:-3px;top:50%}.cropper-point.point-n{cursor:ns-resize;left:50%;margin-left:-3px;top:-3px}.cropper-point.point-w{cursor:ew-resize;left:-3px;margin-top:-3px;top:50%}.cropper-point.point-s{bottom:-3px;cursor:s-resize;left:50%;margin-left:-3px}.cropper-point.point-ne{cursor:nesw-resize;right:-3px;top:-3px}.cropper-point.point-nw{cursor:nwse-resize;left:-3px;top:-3px}.cropper-point.point-sw{bottom:-3px;cursor:nesw-resize;left:-3px}.cropper-point.point-se{bottom:-3px;cursor:nwse-resize;height:20px;opacity:1;right:-3px;width:20px}@media (min-width:768px){.cropper-point.point-se{height:15px;width:15px}}@media (min-width:992px){.cropper-point.point-se{height:10px;width:10px}}@media (min-width:1200px){.cropper-point.point-se{height:5px;opacity:.75;width:5px}}.cropper-point.point-se:before{background-color:#39f;bottom:-50%;content:" ";display:block;height:200%;opacity:0;position:absolute;right:-50%;width:200%}.cropper-invisible{opacity:0}.cropper-bg{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC)}.cropper-hide{display:block;height:0;position:absolute;width:0}.cropper-hidden{display:none!important}.cropper-move{cursor:move}.cropper-crop{cursor:crosshair}.cropper-disabled .cropper-drag-box,.cropper-disabled .cropper-face,.cropper-disabled .cropper-line,.cropper-disabled .cropper-point{cursor:not-allowed}.cropper-image--circled .cropper-face,.cropper-image--circled .cropper-view-box{border-radius:50%}

View File

@@ -0,0 +1 @@
.sa-order-info[data-v-2f4a06af]{background:#fafafa;border-radius:8px;display:flex;flex-direction:column;gap:8px;margin-bottom:12px;padding:10px 12px}.sa-info-row[data-v-2f4a06af]{align-items:flex-start;display:flex;font-size:13px;gap:6px;line-height:20px}.sa-info-icon[data-v-2f4a06af]{margin-top:2px}.sa-info-icon[data-v-2f4a06af],.sa-info-label[data-v-2f4a06af]{color:#8c8c8c;flex-shrink:0}.sa-info-value[data-v-2f4a06af]{color:#333;flex:1;min-width:0;word-break:break-all}.sa-info-desc[data-v-2f4a06af]{display:-webkit-box;-webkit-line-clamp:2;overflow:hidden;text-overflow:ellipsis;-webkit-box-orient:vertical}.sa-section[data-v-2f4a06af]{margin-bottom:12px}.sa-section-title[data-v-2f4a06af]{font-size:13px;font-weight:500;margin-bottom:8px}.sa-list[data-v-2f4a06af]{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:6px;gap:6px;max-height:240px;overflow-y:auto}.sa-item[data-v-2f4a06af]{align-items:center;border:1px solid transparent;border-radius:6px;cursor:pointer;display:flex;gap:8px;padding:6px 10px;transition:all .15s}.sa-item[data-v-2f4a06af]:hover{background:#f5f5f5}.sa-item--active[data-v-2f4a06af]{background:#e6f4ff;border-color:#91caff;color:#1677ff;font-weight:600}.sa-avatar[data-v-2f4a06af]{background:#1677ff;flex-shrink:0;font-size:12px}.sa-item--active .sa-avatar[data-v-2f4a06af]{background:#0958d9}.sa-name[data-v-2f4a06af]{flex:1;font-size:13px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sa-check[data-v-2f4a06af]{color:#1677ff;flex-shrink:0}.sa-pagination[data-v-2f4a06af]{display:flex;justify-content:flex-end;padding-top:8px}html.dark .sa-order-info[data-v-2f4a06af]{background:#ffffff0f}html.dark .sa-info-value[data-v-2f4a06af]{color:#ffffffd9}html.dark .sa-item[data-v-2f4a06af]:hover{background:#ffffff14}html.dark .sa-item--active[data-v-2f4a06af]{background:#1677ff26;border-color:#1677ff66;color:#69b1ff}

View File

@@ -0,0 +1 @@
.security-detail-ext[data-v-1f8d5688]{width:100%}.event-layout[data-v-1f8d5688]{display:flex;gap:16px}.event-layout:not(.has-image) .event-info[data-v-1f8d5688]{width:100%}.event-image[data-v-1f8d5688]{display:flex;flex-direction:column;flex-shrink:0;gap:6px;width:280px}.event-image .alarm-img-wrapper[data-v-1f8d5688]{border:1px solid #f0f0f0;border-radius:8px;height:190px;overflow:hidden;width:100%}.event-image .alarm-img-wrapper[data-v-1f8d5688] .ant-image{display:block;height:100%;width:100%}.event-image .alarm-img-wrapper[data-v-1f8d5688] .ant-image-img{height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.event-image .image-caption[data-v-1f8d5688]{align-items:center;color:#8c8c8c;display:flex;font-size:12px;gap:4px;justify-content:center}.event-info[data-v-1f8d5688]{flex:1;min-width:0}.phone-text[data-v-1f8d5688]{color:#8c8c8c}.meta-code[data-v-1f8d5688]{background:#f0f5ff;border-radius:4px;color:#1677ff;font-size:12px;padding:1px 6px}.section-label[data-v-1f8d5688]{align-items:center;color:#000000a6;display:flex;font-size:13px;font-weight:500}.image-gallery[data-v-1f8d5688]{display:flex;flex-wrap:wrap;gap:8px}.image-gallery[data-v-1f8d5688] .ant-image{border:1px solid #f0f0f0;border-radius:8px;overflow:hidden;transition:transform .2s}.image-gallery[data-v-1f8d5688] .ant-image:hover{transform:scale(1.03)}.image-gallery[data-v-1f8d5688] .ant-image-img{border-radius:8px}.result-content[data-v-1f8d5688]{color:#000000d9;font-size:14px;line-height:1.8;word-wrap:break-word;white-space:pre-wrap}.info-card[data-v-1f8d5688] .ant-descriptions-item-label{background:#fafafa;font-size:13px;font-weight:500}.info-card[data-v-1f8d5688] .ant-descriptions-item-content{font-size:13px}html.dark{color:#ffffff73}html.dark{background:#1677ff1a;color:#4096ff}html.dark{color:#ffffffa6}html.dark{color:#ffffffd9}html.dark{border-color:#303030}

View File

@@ -0,0 +1 @@
.staff-card[data-v-72e724d4]{border-radius:8px;overflow:hidden;transition:all .3s ease}.staff-card[data-v-72e724d4]:hover{box-shadow:0 4px 16px #00000014;transform:translateY(-2px)}.staff-card--inherited[data-v-72e724d4]{border-style:dashed;opacity:.75}.staff-card__body[data-v-72e724d4]{padding:16px}.staff-card__header[data-v-72e724d4]{align-items:center;display:flex;justify-content:space-between;margin-bottom:10px}.staff-card__name[data-v-72e724d4]{color:#262626;flex:1;font-size:15px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.staff-card__tag[data-v-72e724d4]{flex-shrink:0;margin-right:0}.staff-card__info[data-v-72e724d4]{display:flex;flex-direction:column;font-size:13px;gap:4px;margin-bottom:10px}.staff-card__info-row[data-v-72e724d4]{align-items:center;display:flex;gap:8px}.staff-card__info-label[data-v-72e724d4]{color:#8c8c8c;flex-shrink:0}.staff-card__info-value[data-v-72e724d4]{color:#595959;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.staff-card__source[data-v-72e724d4]{color:#1677ff}.staff-card__footer[data-v-72e724d4]{align-items:center;display:flex;gap:8px}.staff-card__go-source[data-v-72e724d4]{padding-left:0}html.dark .staff-card__name[data-v-72e724d4]{color:#ffffffd9}html.dark .staff-card__info-label[data-v-72e724d4]{color:#ffffff73}html.dark .staff-card__info-value[data-v-72e724d4]{color:#ffffffa6}

View File

@@ -0,0 +1 @@
@media (max-width:768px){.layout-row[data-v-0492ed99]{flex-direction:column}.staff-col[data-v-0492ed99]{margin-bottom:12px}.staff-panel[data-v-0492ed99] .ant-card-body{max-height:200px}}.layout-row[data-v-0492ed99]{flex-wrap:wrap}.layout-row[data-v-0492ed99],.staff-col[data-v-0492ed99]{display:flex}.staff-panel[data-v-0492ed99]{border-radius:8px;display:flex;flex-direction:column;width:100%}.staff-panel[data-v-0492ed99] .ant-card-head{min-height:44px;padding:0 16px}.staff-panel[data-v-0492ed99] .ant-card-head .ant-card-head-title{font-size:14px;font-weight:600;padding:12px 0}.staff-panel[data-v-0492ed99] .ant-card-body{flex:1;overflow-y:auto;padding:12px 16px}.staff-search[data-v-0492ed99]{margin-bottom:8px}.staff-list[data-v-0492ed99]{display:flex;flex-direction:column;gap:2px}.staff-list-item[data-v-0492ed99]{align-items:center;border-radius:6px;cursor:pointer;display:flex;padding:8px 12px;transition:background .2s}.staff-list-item[data-v-0492ed99]:hover{background:#f5f5f5}.staff-list-item--active[data-v-0492ed99]{background:#e6f4ff!important;color:#1677ff;font-weight:600}.staff-list-item__title[data-v-0492ed99]{align-items:center;display:flex;flex:1;font-size:13px;gap:6px}.content-header[data-v-0492ed99]{align-items:center;display:flex;justify-content:space-between}.content-header__left[data-v-0492ed99]{align-items:baseline;display:flex;gap:8px}.content-title[data-v-0492ed99]{color:#262626;font-size:16px;font-weight:600}.content-subtitle[data-v-0492ed99]{color:#8c8c8c;font-size:13px}.legend[data-v-0492ed99]{color:#8c8c8c;font-size:12px;gap:16px}.legend[data-v-0492ed99],.legend__item[data-v-0492ed99]{align-items:center;display:flex}.legend__item[data-v-0492ed99]{gap:4px}.legend__dot[data-v-0492ed99]{border-radius:50%;display:inline-block;height:8px;width:8px}.legend__dot--direct[data-v-0492ed99]{background:#1677ff}.legend__dot--inherited[data-v-0492ed99]{background:#91caff}.legend__dot--none[data-v-0492ed99]{background:#d9d9d9}.empty-card[data-v-0492ed99]{border-radius:8px}.empty-card[data-v-0492ed99] .ant-card-body{align-items:center;display:flex;justify-content:center;min-height:300px}.tree-content-card[data-v-0492ed99]{border-radius:8px}.tree-content-card[data-v-0492ed99] .ant-card-body{padding:16px}.tree-content-card[data-v-0492ed99] .ant-tree{background:transparent}.tree-node[data-v-0492ed99]{align-items:center;border-radius:4px;display:inline-flex;gap:6px;padding:2px 4px;transition:background .2s}.tree-node--direct[data-v-0492ed99]{background:#e6f4ff;color:#1677ff;font-weight:600}.tree-node--inherited[data-v-0492ed99]{background:#f5f5f5;color:#595959}.tree-node--none[data-v-0492ed99]{color:#bfbfbf}.tree-node__name[data-v-0492ed99]{white-space:nowrap}.tree-node__tag[data-v-0492ed99]{font-size:11px;line-height:18px;margin-right:0}.tree-node__action[data-v-0492ed99]{font-size:12px;line-height:18px;padding:0 4px}html.dark .content-title[data-v-0492ed99]{color:#ffffffd9}html.dark .content-subtitle[data-v-0492ed99]{color:#ffffff73}html.dark .tree-node--direct[data-v-0492ed99]{background:#1677ff26;color:#69b1ff}html.dark .tree-node--inherited[data-v-0492ed99]{background:#ffffff14;color:#ffffffa6}html.dark .tree-node--none[data-v-0492ed99]{color:#ffffff40}html.dark .staff-list-item[data-v-0492ed99]:hover{background:#ffffff14}html.dark .staff-list-item--active[data-v-0492ed99]{background:#1677ff26!important}html.dark .legend[data-v-0492ed99]{color:#ffffff73}

View File

@@ -0,0 +1 @@
.stats-dashboard[data-v-18a7dc2f]{margin-bottom:12px}.stats-card[data-v-18a7dc2f]{background:#fff;border:1px solid #f0f0f0;border-radius:6px;overflow:hidden;position:relative;transition:all .3s}.stats-card[data-v-18a7dc2f]:hover{border-color:#d9d9d9;box-shadow:0 2px 6px #0000000d}.stats-card .stats-content[data-v-18a7dc2f]{align-items:center;display:flex;gap:10px}.stats-card .stats-icon[data-v-18a7dc2f]{--icon-color:#8c8c8c;--icon-bg:#f5f5f5;align-items:center;background:#f5f5f5;background:var(--icon-bg);border-radius:8px;color:#8c8c8c;color:var(--icon-color);display:flex;flex-shrink:0;height:40px;justify-content:center;transition:all .3s;width:40px}.stats-card .stats-icon[data-v-18a7dc2f] svg{height:20px;width:20px}.stats-card .stats-info[data-v-18a7dc2f]{flex:1;min-width:0}.stats-card .stats-title[data-v-18a7dc2f]{color:#595959;font-size:13px;font-weight:500;line-height:1.3;margin-bottom:2px}.stats-card .stats-value[data-v-18a7dc2f]{color:#262626;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,Segoe UI,Roboto,sans-serif;font-feature-settings:"tnum";font-size:20px;font-variant-numeric:tabular-nums;font-weight:600;line-height:1.2}html.dark .stats-card[data-v-18a7dc2f]{background:#1f1f1f;border-color:#303030}html.dark .stats-card[data-v-18a7dc2f]:hover{border-color:#434343;box-shadow:0 2px 8px #0000004d}html.dark .stats-card .stats-title[data-v-18a7dc2f],html.dark .stats-card .stats-value[data-v-18a7dc2f]{color:#ffffffd9}

View File

@@ -0,0 +1 @@
.stats-dashboard[data-v-1b909f89]{margin-bottom:12px}.stats-card[data-v-1b909f89]{background:#fff;border:1px solid #f0f0f0;border-radius:6px;overflow:hidden;position:relative;transition:all .3s}.stats-card[data-v-1b909f89]:hover{border-color:#d9d9d9;box-shadow:0 2px 6px #0000000d}.stats-card--clickable[data-v-1b909f89]{cursor:pointer}.stats-card--clickable[data-v-1b909f89]:hover{box-shadow:0 2px 8px #0000000f;transform:translateY(-1px)}.stats-card .stats-content[data-v-1b909f89]{align-items:center;display:flex;gap:10px}.stats-card .stats-icon[data-v-1b909f89]{--icon-color:#8c8c8c;--icon-bg:#f5f5f5;align-items:center;background:#f5f5f5;background:var(--icon-bg);border-radius:8px;color:#8c8c8c;color:var(--icon-color);display:flex;flex-shrink:0;height:40px;justify-content:center;transition:all .3s;width:40px}.stats-card .stats-icon[data-v-1b909f89] svg{height:20px;width:20px}.stats-card .stats-info[data-v-1b909f89]{flex:1;min-width:0}.stats-card .stats-title[data-v-1b909f89]{color:#595959;font-size:13px;font-weight:500;line-height:1.3;margin-bottom:2px}.stats-card .stats-subtitle[data-v-1b909f89]{color:#8c8c8c;font-size:11px;line-height:1.3;margin-bottom:4px}.stats-card .stats-value[data-v-1b909f89]{color:#262626;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,Segoe UI,Roboto,sans-serif;font-feature-settings:"tnum";font-size:20px;font-variant-numeric:tabular-nums;font-weight:600;line-height:1.2}.metric-card[data-v-1b909f89]{background:#fff;border:1px solid #f0f0f0;border-radius:8px;transition:all .3s}.metric-card[data-v-1b909f89]:hover{border-color:#d9d9d9;box-shadow:0 2px 8px #0000000f}.metric-card .metric-header[data-v-1b909f89]{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.metric-card .metric-title[data-v-1b909f89]{align-items:center;color:#262626;display:flex;font-size:15px;font-weight:600;gap:8px}.metric-card .metric-icon[data-v-1b909f89]{color:#1677ff;font-size:18px}.metric-card .metric-status[data-v-1b909f89]{background:#1677ff1a;border-radius:4px;font-size:12px;font-weight:500;padding:2px 8px}.metric-card .metric-content[data-v-1b909f89]{display:flex;flex-direction:column;gap:12px}.metric-card .metric-item[data-v-1b909f89]{align-items:center;display:flex;justify-content:space-between;padding:8px 0}.metric-card .metric-label[data-v-1b909f89]{color:#8c8c8c;font-size:13px}.metric-card .metric-value[data-v-1b909f89]{color:#262626;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,Segoe UI,Roboto,sans-serif;font-feature-settings:"tnum";font-size:16px;font-variant-numeric:tabular-nums;font-weight:600}.metric-card .metric-value--primary[data-v-1b909f89]{color:#1677ff}.metric-card .metric-value--success[data-v-1b909f89]{color:#52c41a}.metric-card .metric-progress[data-v-1b909f89]{margin-top:4px}.metric-card .progress-label[data-v-1b909f89]{align-items:center;color:#8c8c8c;display:flex;font-size:12px;justify-content:space-between;margin-bottom:6px}.metric-card .progress-value[data-v-1b909f89]{color:#262626;font-size:13px;font-weight:600}html.dark .stats-card[data-v-1b909f89]{background:#1f1f1f;border-color:#303030}html.dark .stats-card[data-v-1b909f89]:hover{border-color:#434343;box-shadow:0 2px 8px #0000004d}html.dark .stats-card--clickable[data-v-1b909f89]:hover{box-shadow:0 4px 12px #0006}html.dark .stats-card .stats-title[data-v-1b909f89]{color:#ffffffd9}html.dark .stats-card .stats-subtitle[data-v-1b909f89]{color:#ffffff73}html.dark .stats-card .stats-value[data-v-1b909f89]{color:#ffffffd9}html.dark .metric-card[data-v-1b909f89]{background:#1f1f1f;border-color:#303030}html.dark .metric-card[data-v-1b909f89]:hover{border-color:#434343;box-shadow:0 2px 8px #0000004d}html.dark .metric-card .metric-title[data-v-1b909f89]{color:#ffffffd9}html.dark .metric-card .metric-status[data-v-1b909f89]{background:#1677ff33}html.dark .metric-card .metric-label[data-v-1b909f89]{color:#ffffff73}html.dark .metric-card .metric-value[data-v-1b909f89]{color:#ffffffd9}html.dark .metric-card .progress-label[data-v-1b909f89]{color:#ffffff73}html.dark .metric-card .progress-value[data-v-1b909f89]{color:#ffffffd9}

View File

@@ -1 +0,0 @@
.stats-dashboard[data-v-6e9dd15e]{margin-bottom:12px}.stats-card[data-v-6e9dd15e]{background:#fff;border:1px solid #f0f0f0;border-radius:6px;overflow:hidden;position:relative;transition:all .3s}.stats-card[data-v-6e9dd15e]:hover{border-color:#d9d9d9;box-shadow:0 2px 6px #0000000d}.stats-card--clickable[data-v-6e9dd15e]{cursor:pointer}.stats-card--clickable[data-v-6e9dd15e]:hover{box-shadow:0 2px 8px #0000000f;transform:translateY(-1px)}.stats-card .stats-content[data-v-6e9dd15e]{align-items:center;display:flex;gap:10px}.stats-card .stats-icon[data-v-6e9dd15e]{--icon-color:#8c8c8c;--icon-bg:#f5f5f5;align-items:center;background:#f5f5f5;background:var(--icon-bg);border-radius:8px;color:#8c8c8c;color:var(--icon-color);display:flex;flex-shrink:0;height:40px;justify-content:center;transition:all .3s;width:40px}.stats-card .stats-icon[data-v-6e9dd15e] svg{height:20px;width:20px}.stats-card .stats-info[data-v-6e9dd15e]{flex:1;min-width:0}.stats-card .stats-title[data-v-6e9dd15e]{color:#595959;font-size:13px;font-weight:500;line-height:1.3;margin-bottom:2px}.stats-card .stats-subtitle[data-v-6e9dd15e]{color:#8c8c8c;font-size:11px;line-height:1.3;margin-bottom:4px}.stats-card .stats-value[data-v-6e9dd15e]{color:#262626;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,Segoe UI,Roboto,sans-serif;font-feature-settings:"tnum";font-size:20px;font-variant-numeric:tabular-nums;font-weight:600;line-height:1.2}.metric-card[data-v-6e9dd15e]{background:#fff;border:1px solid #f0f0f0;border-radius:8px;transition:all .3s}.metric-card[data-v-6e9dd15e]:hover{border-color:#d9d9d9;box-shadow:0 2px 8px #0000000f}.metric-card .metric-header[data-v-6e9dd15e]{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.metric-card .metric-title[data-v-6e9dd15e]{align-items:center;color:#262626;display:flex;font-size:15px;font-weight:600;gap:8px}.metric-card .metric-icon[data-v-6e9dd15e]{color:#1677ff;font-size:18px}.metric-card .metric-status[data-v-6e9dd15e]{background:#1677ff1a;border-radius:4px;font-size:12px;font-weight:500;padding:2px 8px}.metric-card .metric-content[data-v-6e9dd15e]{display:flex;flex-direction:column;gap:12px}.metric-card .metric-item[data-v-6e9dd15e]{align-items:center;display:flex;justify-content:space-between;padding:8px 0}.metric-card .metric-label[data-v-6e9dd15e]{color:#8c8c8c;font-size:13px}.metric-card .metric-value[data-v-6e9dd15e]{color:#262626;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,Segoe UI,Roboto,sans-serif;font-feature-settings:"tnum";font-size:16px;font-variant-numeric:tabular-nums;font-weight:600}.metric-card .metric-value--primary[data-v-6e9dd15e]{color:#1677ff}.metric-card .metric-value--success[data-v-6e9dd15e]{color:#52c41a}.metric-card .metric-progress[data-v-6e9dd15e]{margin-top:4px}.metric-card .progress-label[data-v-6e9dd15e]{align-items:center;color:#8c8c8c;display:flex;font-size:12px;justify-content:space-between;margin-bottom:6px}.metric-card .progress-value[data-v-6e9dd15e]{color:#262626;font-size:13px;font-weight:600}html.dark .stats-card[data-v-6e9dd15e]{background:#1f1f1f;border-color:#303030}html.dark .stats-card[data-v-6e9dd15e]:hover{border-color:#434343;box-shadow:0 2px 8px #0000004d}html.dark .stats-card--clickable[data-v-6e9dd15e]:hover{box-shadow:0 4px 12px #0006}html.dark .stats-card .stats-title[data-v-6e9dd15e]{color:#ffffffd9}html.dark .stats-card .stats-subtitle[data-v-6e9dd15e]{color:#ffffff73}html.dark .stats-card .stats-value[data-v-6e9dd15e]{color:#ffffffd9}html.dark .metric-card[data-v-6e9dd15e]{background:#1f1f1f;border-color:#303030}html.dark .metric-card[data-v-6e9dd15e]:hover{border-color:#434343;box-shadow:0 2px 8px #0000004d}html.dark .metric-card .metric-title[data-v-6e9dd15e]{color:#ffffffd9}html.dark .metric-card .metric-status[data-v-6e9dd15e]{background:#1677ff33}html.dark .metric-card .metric-label[data-v-6e9dd15e]{color:#ffffff73}html.dark .metric-card .metric-value[data-v-6e9dd15e]{color:#ffffffd9}html.dark .metric-card .progress-label[data-v-6e9dd15e]{color:#ffffff73}html.dark .metric-card .progress-value[data-v-6e9dd15e]{color:#ffffffd9}

View File

@@ -0,0 +1 @@
.stats-cards[data-v-5c8acf0b]{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:16px;gap:16px}.stat-card[data-v-5c8acf0b]{padding:16px}.stat-card-inner[data-v-5c8acf0b]{gap:12px}.stat-card-inner[data-v-5c8acf0b],.stat-icon[data-v-5c8acf0b]{align-items:center;display:flex}.stat-icon[data-v-5c8acf0b]{border-radius:10px;flex-shrink:0;height:44px;justify-content:center;width:44px}.stat-content[data-v-5c8acf0b]{flex:1;min-width:0}.stat-title[data-v-5c8acf0b]{color:#8c8c8c;font-size:12px;margin-bottom:4px}.stat-value[data-v-5c8acf0b]{font-size:20px;font-weight:600;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stat-suffix[data-v-5c8acf0b]{font-size:13px;font-weight:400;margin-left:2px}@media (max-width:1200px){.stats-cards[data-v-5c8acf0b]{grid-template-columns:repeat(2,1fr)}}@media (max-width:768px){.stats-cards[data-v-5c8acf0b]{grid-template-columns:1fr}}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.trajectory-timeline[data-v-6e773f55]{background:#fff;border:1px solid #f0f0f0;border-radius:8px;padding:16px}.card-header[data-v-6e773f55]{align-items:center;border-bottom:1px solid #f5f5f5;display:flex;gap:8px;margin-bottom:16px;padding-bottom:12px}.card-title[data-v-6e773f55]{color:#262626;flex:1;font-size:14px;font-weight:600}.record-count[data-v-6e773f55]{color:#8c8c8c;font-size:12px}.timeline-scroll[data-v-6e773f55]{max-height:480px;overflow-y:auto;padding-right:4px}.timeline-node[data-v-6e773f55]{border-radius:6px;cursor:pointer;padding:4px 8px;transition:background-color .2s}.timeline-node[data-v-6e773f55]:hover{background-color:#f5f5f5}.timeline-node--current[data-v-6e773f55]{background-color:#e6f4ff}.timeline-node--current[data-v-6e773f55]:hover{background-color:#bae0ff}.node-area[data-v-6e773f55]{align-items:center;display:flex;gap:6px;margin-bottom:2px}.area-name[data-v-6e773f55]{color:#262626;font-size:13px;font-weight:500}.current-tag[data-v-6e773f55]{background:#1677ff;border-radius:3px;color:#fff;font-size:10px;line-height:16px;padding:0 4px}.node-time[data-v-6e773f55]{align-items:center;display:flex;gap:4px;margin-top:2px}.time-text[data-v-6e773f55]{color:#8c8c8c;font-size:12px}.time-sep[data-v-6e773f55]{color:#d9d9d9;font-size:11px}.node-duration[data-v-6e773f55]{align-items:center;display:flex;gap:4px;margin-top:2px}.duration-text[data-v-6e773f55]{color:#8c8c8c;font-size:12px}.duration-text--warn[data-v-6e773f55]{color:#fa8c16;font-weight:500}.current-dot[data-v-6e773f55]{animation:pulse-dot-6e773f55 2s infinite;background-color:#1677ff;border-radius:50%;display:inline-block;height:10px;width:10px}@keyframes pulse-dot-6e773f55{0%{box-shadow:0 0 #1677ff66}70%{box-shadow:0 0 0 8px #1677ff00}to{box-shadow:0 0 #1677ff00}}.empty-wrap[data-v-6e773f55]{padding:24px 0}

View File

@@ -0,0 +1 @@
.trend-chart[data-v-e686c76d]{padding:16px}.chart-title[data-v-e686c76d]{color:#262626;font-size:14px;font-weight:600;margin-bottom:12px}.chart-empty[data-v-e686c76d]{align-items:center;display:flex;justify-content:center;min-height:200px}

View File

@@ -1 +0,0 @@
.upgrade-form[data-v-ba80bad5] .ant-form-item{margin-bottom:0}

View File

@@ -0,0 +1 @@
.uf-alert[data-v-d81dbdc6],.uf-order-info[data-v-d81dbdc6]{margin-bottom:12px}.uf-order-info[data-v-d81dbdc6]{background:#fafafa;border-radius:8px;display:flex;flex-direction:column;gap:8px;padding:10px 12px}.uf-info-row[data-v-d81dbdc6]{align-items:center;display:flex;font-size:13px;gap:6px;line-height:20px}.uf-info-icon[data-v-d81dbdc6],.uf-info-label[data-v-d81dbdc6]{color:#8c8c8c;flex-shrink:0}.uf-info-value[data-v-d81dbdc6]{color:#333;flex:1;min-width:0;word-break:break-all}.uf-priority[data-v-d81dbdc6]{align-items:center;display:flex;gap:6px}.uf-priority-from[data-v-d81dbdc6]{color:#8c8c8c}.uf-arrow[data-v-d81dbdc6]{color:#bfbfbf}.uf-priority-to[data-v-d81dbdc6]{color:#ff4d4f;font-weight:600}.uf-section[data-v-d81dbdc6]{margin-bottom:12px}.uf-section-title[data-v-d81dbdc6]{font-size:13px;font-weight:500;margin-bottom:8px}html.dark .uf-order-info[data-v-d81dbdc6]{background:#ffffff0f}html.dark .uf-info-value[data-v-d81dbdc6]{color:#ffffffd9}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -8,5 +8,5 @@
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(hm, s);
})();
}</script><script type="module" crossorigin src="/jse/index-index-BAlyf32H.js"></script></head><body><script data-app-loading="inject-js">var theme = localStorage.getItem('aiot-platform-5.5.9-prod-preferences-theme');
}</script><script type="module" crossorigin src="/jse/index-index-Z45rumFj.js"></script></head><body><script data-app-loading="inject-js">var theme = localStorage.getItem('aiot-platform-5.5.9-prod-preferences-theme');
document.documentElement.classList.toggle('dark', /dark/.test(theme));</script><style data-app-loading="inject-css">html{line-height:1.15}.loading{align-items:center;background-color:#f4f7f9;display:flex;flex-direction:column;height:100%;justify-content:center;left:0;overflow:hidden;position:fixed;top:0;width:100%;z-index:9999}.loading.hidden{opacity:0;pointer-events:none;transition:all .8s ease-out;visibility:hidden}.dark .loading{background:#0d0d10}.title{color:rgba(0,0,0,.85)!important;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif!important;font-size:28px;font-weight:600!important;margin-top:66px}.dark .title{color:#fff!important}.loader{height:48px;position:relative;width:48px}.loader:before{animation:shadow-ani .5s linear infinite;background:rgba(255,161,10,.5);background:hsl(var(--primary,37 100% 52%)/50%);border-radius:50%;height:5px;top:60px;width:48px}.loader:after,.loader:before{content:"";left:0;position:absolute}.loader:after{animation:jump-ani .5s linear infinite;background:#ffa10a;background:hsl(var(--primary,37 100% 52%));border-radius:4px;height:100%;top:0;width:100%}@keyframes jump-ani{15%{border-bottom-right-radius:3px}25%{transform:translateY(9px) rotate(22.5deg)}50%{border-bottom-right-radius:40px;transform:translateY(18px) scaleY(.9) rotate(45deg)}75%{transform:translateY(9px) rotate(67.5deg)}to{transform:translateY(0) rotate(90deg)}}@keyframes shadow-ani{0%,to{transform:scale(1)}50%{transform:scaleX(1.2)}}</style><div class="loading" id="__app-loading__"><div class="loader"></div><div class="title">AIoT 智能运营</div></div><div id="app"></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
import{an as d,ay as f,ac as w}from"./bootstrap-CG9GXOLj.js";import{_ as C}from"./AreaTree.vue_vue_type_script_setup_true_lang-Cl1vGnJ0.js";import{m as g,b9 as m,w as B,aa as D,ab as A,b2 as v,u as n,bJ as r,ad as N,ac as S,ae as i,j as s,bp as R,ai as _}from"../jse/index-index-Z45rumFj.js";import{D as T}from"./index-PZX4Yhp5.js";import"./index-CNL9SnO5.js";const F={key:0,class:"selected-hint"},I={class:"hint-text"},P={class:"tree-container"},j={class:"drawer-footer"},E=g({__name:"AreaFilterDrawer",props:{modelValue:{default:void 0},open:{type:Boolean,default:!1}},emits:["confirm","update:modelValue","update:open"],setup(c,{emit:h}){const u=c,l=h,p=m(),e=m(null);B(()=>u.open,a=>{a&&u.modelValue||a&&(e.value=null)});const x=D(()=>{var a,t,o;return(a=e.value)!=null&&a.id?(o=(t=p.value)==null?void 0:t.getAreaPath(e.value.id))!=null?o:e.value.areaName:""});function y(a){e.value=a}function b(){var t,o;const a=(o=(t=e.value)==null?void 0:t.id)!=null?o:void 0;l("update:modelValue",a),l("confirm",a),l("update:open",!1)}function k(){e.value=null,l("update:modelValue",void 0),l("confirm",void 0),l("update:open",!1)}function V(){l("update:open",!1)}return(a,t)=>(v(),A(n(T),{open:c.open,title:"区域筛选",placement:"right",width:320,"body-style":{padding:"12px 16px",display:"flex",flexDirection:"column"},"header-style":{padding:"12px 16px"},"footer-style":{padding:"10px 16px"},onClose:V},{footer:r(()=>[i("div",j,[s(n(f),{onClick:k},{default:r(()=>[s(n(d),{icon:"solar:restart-bold",class:"btn-icon"}),t[0]||(t[0]=_(" 重置 ",-1))]),_:1}),s(n(f),{type:"primary",disabled:!e.value,onClick:b},{default:r(()=>[s(n(d),{icon:"solar:check-circle-bold",class:"btn-icon"}),t[1]||(t[1]=_(" 确认 ",-1))]),_:1},8,["disabled"])])]),default:r(()=>{var o;return[e.value?(v(),N("div",F,[s(n(d),{icon:"solar:map-point-bold",class:"hint-icon"}),i("span",I,R(x.value),1)])):S("",!0),i("div",P,[s(C,{ref_key:"areaTreeRef",ref:p,"selected-keys":(o=e.value)!=null&&o.id?[e.value.id]:[],onSelect:y},null,8,["selected-keys"])])]}),_:1},8,["open"]))}}),H=w(E,[["__scopeId","data-v-83468e94"]]);export{H as default};

View File

@@ -0,0 +1 @@
import{_ as o}from"./AreaTree.vue_vue_type_script_setup_true_lang-Cl1vGnJ0.js";import"./bootstrap-CG9GXOLj.js";import"../jse/index-index-Z45rumFj.js";import"./index-CNL9SnO5.js";export{o as default};

View File

@@ -1 +0,0 @@
import{_ as o}from"./AreaTree.vue_vue_type_script_setup_true_lang-DkFO7Ekq.js";import"./bootstrap-D7yvUSkm.js";import"../jse/index-index-BAlyf32H.js";import"./index-CVM93Ie1.js";export{o as default};

View File

@@ -0,0 +1 @@
var x=(p,w,f)=>new Promise((y,i)=>{var k=s=>{try{d(f.next(s))}catch(u){i(u)}},l=s=>{try{d(f.throw(s))}catch(u){i(u)}},d=s=>s.done?y(s.value):Promise.resolve(s.value).then(k,l);d((f=f.apply(p,w)).next())});import{bt as U,an as V,S as j,ct as z}from"./bootstrap-CG9GXOLj.js";import{a as D}from"./index-CNL9SnO5.js";import{m as O,b9 as v,w as $,v as E,ad as A,b2 as I,j as K,u as m,bJ as b,ab as G,ac as J,ag as q,bc as F,aS as H,aw as Q,d9 as S}from"../jse/index-index-Z45rumFj.js";const W={key:1,class:"py-4 text-center text-gray-500"},ee=O({__name:"AreaTree",props:{activeOnly:{type:Boolean,default:!0},checkable:{type:Boolean,default:!1},checkedKeys:{default:()=>[]},selectedKeys:{default:void 0}},emits:["check","select","update:checkedKeys"],setup(p,{expose:w,emit:f}){const y=p,i=f,k=v([...y.checkedKeys]);$(()=>y.checkedKeys,a=>{k.value=[...a]});const l=v([]),d=v([]),s=v(!1),u=v("");function N(a){const e=a.target.value;if(u.value=e,!e){d.value=S(l.value,"id","parentId","children");return}const t=e.toLowerCase(),n=new Set;for(const o of l.value)o.areaName.toLowerCase().includes(t)&&n.add(o.id);const c=new Map(l.value.map(o=>[o.id,o])),r=new Set(n);for(const o of n){let h=c.get(o);for(;h!=null&&h.parentId;)r.add(h.parentId),h=c.get(h.parentId)}const R=l.value.filter(o=>r.has(o.id));d.value=S(R,"id","parentId","children")}function T(a,e){if(a.length===0){i("select",null);return}const t=e.node.dataRef||e.node;i("select",t)}function B(a,e){var c;const t=Array.isArray(a)?a:a.checked,n=(c=e.halfCheckedKeys)!=null?c:[];k.value=t,i("update:checkedKeys",t),i("check",t,n)}function L(a){var t;const e=l.value.find(n=>n.id===a);return(t=e==null?void 0:e.areaName)!=null?t:""}function C(){return x(this,null,function*(){s.value=!0;try{const a=yield D(y.activeOnly?{isActive:!0}:void 0);l.value=a,d.value=S(a,"id","parentId","children"),g.value=a.filter(e=>e.areaType==="PARK"||e.areaType==="BUILDING").map(e=>e.id)}catch(a){console.error("获取区域树失败",a)}finally{s.value=!1}})}function M(a){if(!a)return"";const e=new Map(l.value.map(c=>[c.id,c])),t=[];let n=e.get(a);for(;n;)t.unshift(n.areaName),n=n.parentId?e.get(n.parentId):void 0;return t.join(" / ")}function P(a){const e=[a],t=new Set([a]);function n(c){for(const r of l.value)r.parentId===c&&r.id!==null&&r.id!==void 0&&!t.has(r.id)&&(t.add(r.id),e.push(r.id),n(r.id))}return n(a),e}const g=v([]);return w({refresh:C,getAreaPath:M,getDescendantIds:P,getAreaName:L}),E(C),(a,e)=>(I(),A("div",null,[K(m(U),{value:u.value,"onUpdate:value":e[0]||(e[0]=t=>u.value=t),placeholder:"搜索区域","allow-clear":"",class:"w-full",onChange:N},{prefix:b(()=>[K(m(V),{icon:"lucide:search",class:"size-4"})]),_:1},8,["value"]),K(m(j),{spinning:s.value,"wrapper-class-name":"w-full"},{default:b(()=>[d.value.length>0?(I(),G(m(z),{key:0,class:"pt-2","tree-data":d.value,"expanded-keys":g.value,"onUpdate:expandedKeys":e[1]||(e[1]=t=>g.value=t),checkable:p.checkable,"checked-keys":p.checkable?k.value:void 0,"selected-keys":p.selectedKeys,"field-names":{title:"areaName",key:"id",children:"children"},onSelect:T,onCheck:B},q({_:2},[a.$slots.title?{name:"title",fn:b(t=>[F(a.$slots,"title",H(Q(t)))]),key:"0"}:void 0]),1032,["tree-data","expanded-keys","checkable","checked-keys","selected-keys"])):s.value?J("",!0):(I(),A("div",W," 暂无区域数据 "))]),_:3},8,["spinning"])]))}});export{ee as _};

View File

@@ -1 +0,0 @@
var k=(w,g,u)=>new Promise((I,f)=>{var s=n=>{try{c(u.next(n))}catch(v){f(v)}},d=n=>{try{c(u.throw(n))}catch(v){f(v)}},c=n=>n.done?I(n.value):Promise.resolve(n.value).then(s,d);c((u=u.apply(w,g)).next())});import{bD as M,an as L,S as V,cx as j}from"./bootstrap-D7yvUSkm.js";import{a as D}from"./index-CVM93Ie1.js";import{m as O,b9 as h,v as z,ad as C,b2 as y,j as x,u as m,bJ as T,ab as E,ac as J,d9 as _}from"../jse/index-index-BAlyf32H.js";const P={key:1,class:"py-4 text-center text-gray-500"},G=O({__name:"AreaTree",props:{activeOnly:{type:Boolean,default:!0}},emits:["select"],setup(w,{expose:g,emit:u}){const I=w,f=u,s=h([]),d=h([]),c=h(!1),n=h("");function v(e){const a=e.target.value;if(n.value=a,!a){d.value=_(s.value,"id","parentId","children");return}const l=a.toLowerCase(),t=new Set;for(const o of s.value)o.areaName.toLowerCase().includes(l)&&t.add(o.id);const i=new Map(s.value.map(o=>[o.id,o])),r=new Set(t);for(const o of t){let p=i.get(o);for(;p!=null&&p.parentId;)r.add(p.parentId),p=i.get(p.parentId)}const B=s.value.filter(o=>r.has(o.id));d.value=_(B,"id","parentId","children")}function b(e,a){if(e.length===0){f("select",null);return}const l=a.node.dataRef||a.node;f("select",l)}function S(){return k(this,null,function*(){c.value=!0;try{const e=yield D(I.activeOnly?{isActive:!0}:void 0);s.value=e,d.value=_(e,"id","parentId","children")}catch(e){console.error("获取区域树失败",e)}finally{c.value=!1}})}function N(e){if(!e)return"";const a=new Map(s.value.map(i=>[i.id,i])),l=[];let t=a.get(e);for(;t;)l.unshift(t.areaName),t=t.parentId?a.get(t.parentId):void 0;return l.join(" / ")}function A(e){const a=[e],l=new Set([e]);function t(i){for(const r of s.value)r.parentId===i&&r.id!==null&&r.id!==void 0&&!l.has(r.id)&&(l.add(r.id),a.push(r.id),t(r.id))}return t(e),a}return g({refresh:S,getAreaPath:N,getDescendantIds:A}),z(S),(e,a)=>(y(),C("div",null,[x(m(M),{value:n.value,"onUpdate:value":a[0]||(a[0]=l=>n.value=l),placeholder:"搜索区域","allow-clear":"",class:"w-full",onChange:v},{prefix:T(()=>[x(m(L),{icon:"lucide:search",class:"size-4"})]),_:1},8,["value"]),x(m(V),{spinning:c.value,"wrapper-class-name":"w-full"},{default:T(()=>[d.value.length>0?(y(),E(m(j),{key:0,class:"pt-2","tree-data":d.value,"default-expand-all":!0,"field-names":{title:"areaName",key:"id",children:"children"},onSelect:b},null,8,["tree-data"])):c.value?J("",!0):(y(),C("div",P," 暂无区域数据 "))]),_:1},8,["spinning"])]))}});export{G as _};

View File

@@ -1 +0,0 @@
import{_ as o}from"./BoundaryEventTimer.vue_vue_type_script_setup_true_lang-DDaGiwvf.js";import"./utils-C4vayS9C.js";import"./consts-D1Imw0A8.js";import"./biz-bpm-enum-DQJBn5Qr.js";import"./bootstrap-D7yvUSkm.js";import"../jse/index-index-BAlyf32H.js";import"./Text-_MMvD9Ka.js";import"./index-B9wBBlL6.js";export{o as default};

View File

@@ -0,0 +1 @@
import{_ as o}from"./BoundaryEventTimer.vue_vue_type_script_setup_true_lang-htQ0_MfQ.js";import"./utils-C4vayS9C.js";import"./consts-D1Imw0A8.js";import"./biz-bpm-enum-DQJBn5Qr.js";import"./bootstrap-CG9GXOLj.js";import"../jse/index-index-Z45rumFj.js";import"./Text-BqQ1eoU_.js";import"./index-5UBoFafa.js";export{o as default};

View File

@@ -1 +0,0 @@
import{c as h}from"./utils-C4vayS9C.js";import{T as y,c as Q,d as W}from"./consts-D1Imw0A8.js";import{ca as X,aM as Z,c9 as D,cc as ee,ce as ae,c0 as le,c1 as I,bU as P,bT as te,cb as ue}from"./bootstrap-D7yvUSkm.js";import{T as j}from"./Text-_MMvD9Ka.js";import"./index-B9wBBlL6.js";import{m as ne,aE as oe,b9 as s,w as ie,ad as R,b2 as p,j as o,ab as g,ac as S,bJ as n,ai as U,u as l,I as Y,bb as A,bp as V,R as se,n as ve}from"../jse/index-index-BAlyf32H.js";const be=ne({name:"ElementCustomConfig4BoundaryEventTimer",__name:"BoundaryEventTimer",props:{id:{type:String,default:""},type:{type:String,default:""}},setup(F){const L=F,T=oe("prefix"),H=s(),c=()=>window==null?void 0:window.bpmnInstances,f=s(!1),E=s(),m=s({value:void 0}),d=s(),v=s(6),r=s(y.HOUR),b=s(1),$=s(),N=s(),x=s([]),t=s(),G=()=>{var u,e,a,B,M,O;if(H.value=c().bpmnElement,t.value=H.value.businessObject.eventDefinitions[0],$.value=(e=(u=H.value.businessObject)==null?void 0:u.extensionElements)!=null?e:c().moddle.create("bpmn:ExtensionElements",{values:[]}),E.value=(a=$.value.values)==null?void 0:a.find(i=>i.$type===`${T}:BoundaryEventType`),E.value&&E.value.value===1&&(f.value=!0,x.value.push(E.value)),m.value=(B=$.value.values)==null?void 0:B.find(i=>i.$type===`${T}:TimeoutHandlerType`),m.value){if(x.value.push(m.value),t.value.timeCycle){const i=t.value.timeCycle.body,K=i.split("/")[0],_=i.split("/")[1];b.value=Number.parseInt(K.slice(1)),v.value=Number.parseInt(_.slice(2,-1)),r.value=h(_.slice(-1)),d.value=t.value.timeCycle}if(t.value.timeDuration){const i=t.value.timeDuration.body;v.value=Number.parseInt(i.slice(2,-1)),r.value=h(i.slice(-1)),d.value=t.value.timeDuration}}N.value=(O=(M=$.value.values)==null?void 0:M.filter(i=>i.$type!==`${T}:BoundaryEventType`&&i.$type!==`${T}:TimeoutHandlerType`))!=null?O:[]},J=u=>{f.value=u,u?(E.value=c().moddle.create(`${T}:BoundaryEventType`,{value:1}),x.value.push(E.value),m.value=c().moddle.create(`${T}:TimeoutHandlerType`,{value:1}),x.value.push(m.value),v.value=6,r.value=2,b.value=1,d.value=c().moddle.create("bpmn:Expression",{body:"PT6H"}),t.value.timeDuration=d.value):(x.value=[],delete t.value.timeDuration,delete t.value.timeCycle),C()},q=()=>{b.value=1,C(),k()},z=()=>{r.value===y.MINUTE&&(v.value=60),r.value===y.HOUR&&(v.value=6),r.value===y.DAY&&(v.value=1),k(),C()},k=()=>{b.value>1?(d.value.body=`R${b.value}/${w()}`,t.value.timeCycle||(delete t.value.timeDuration,t.value.timeCycle=d.value)):(d.value.body=w(),t.value.timeDuration||(delete t.value.timeCycle,t.value.timeDuration=d.value))},w=()=>{let u="PT";return r.value===y.MINUTE&&(u+=`${v.value}M`),r.value===y.HOUR&&(u+=`${v.value}H`),r.value===y.DAY&&(u+=`${v.value}D`),u},C=()=>{const u=c().moddle.create("bpmn:ExtensionElements",{values:[...N.value||[],...x.value]});c().modeling.updateProperties(se(H.value),{extensionElements:u})};return ie(()=>L.id,u=>{u&&u.length>0&&ve(()=>{G()})},{immediate:!0}),(u,e)=>(p(),R("div",null,[o(l(X),{orientation:"left"},{default:n(()=>[...e[7]||(e[7]=[U("审批人超时未处理时",-1)])]),_:1}),o(l(D),{label:"启用开关",name:"timeoutHandlerEnable"},{default:n(()=>[o(l(Z),{checked:f.value,"onUpdate:checked":e[0]||(e[0]=a=>f.value=a),"checked-children":"开启","un-checked-children":"关闭",onChange:J},null,8,["checked"])]),_:1}),f.value?(p(),g(l(D),{key:0,label:"执行动作",name:"timeoutHandlerType"},{default:n(()=>[o(l(ee),{value:m.value.value,"onUpdate:value":e[1]||(e[1]=a=>m.value.value=a),onChange:q},{default:n(()=>[(p(!0),R(Y,null,A(l(Q),a=>(p(),g(l(ae),{key:a.value,value:a.value},{default:n(()=>[U(V(a.label),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})):S("",!0),f.value?(p(),g(l(D),{key:1,label:"超时时间设置","label-col":{span:24},"wrapper-col":{span:24}},{default:n(()=>[o(l(le),{gutter:[0,0]},{default:n(()=>[o(l(I),null,{default:n(()=>[o(l(j),{class:"mr-2 mt-2 inline-flex text-sm"},{default:n(()=>[...e[8]||(e[8]=[U(" 当超过 ",-1)])]),_:1})]),_:1}),o(l(I),null,{default:n(()=>[o(l(D),{name:"timeDuration",class:"mb-0"},{default:n(()=>[o(l(P),{class:"mr-2 mt-0.5",value:v.value,"onUpdate:value":e[2]||(e[2]=a=>v.value=a),min:1,"controls-position":"right",onChange:e[3]||(e[3]=()=>{k(),C()})},null,8,["value"])]),_:1})]),_:1}),o(l(I),null,{default:n(()=>[o(l(te),{value:r.value,"onUpdate:value":e[4]||(e[4]=a=>r.value=a),class:"mr-2 !w-24",onChange:z},{default:n(()=>[(p(!0),R(Y,null,A(l(W),a=>(p(),g(l(ue),{key:a.value,label:a.label,value:a.value},{default:n(()=>[U(V(a.label),1)]),_:2},1032,["label","value"]))),128))]),_:1},8,["value"]),o(l(j),{class:"mr-2 mt-2 inline-flex text-sm"},{default:n(()=>[...e[9]||(e[9]=[U(" 未处理 ",-1)])]),_:1})]),_:1})]),_:1})]),_:1})):S("",!0),f.value&&m.value.value===1?(p(),g(l(D),{key:2,label:"最大提醒次数",name:"maxRemindCount"},{default:n(()=>[o(l(P),{value:b.value,"onUpdate:value":e[5]||(e[5]=a=>b.value=a),min:1,max:10,onChange:e[6]||(e[6]=()=>{k(),C()})},null,8,["value"])]),_:1})):S("",!0)]))}});export{be as _};

View File

@@ -0,0 +1 @@
import{c as h}from"./utils-C4vayS9C.js";import{T as y,c as z,d as K}from"./consts-D1Imw0A8.js";import{aA as W,br as X,c6 as D,c8 as ee,ca as ae,bZ as le,b_ as k,bR as P,bQ as te,c7 as ue}from"./bootstrap-CG9GXOLj.js";import{T as j}from"./Text-BqQ1eoU_.js";import"./index-5UBoFafa.js";import{m as ne,aE as oe,b9 as s,w as ie,ad as I,b2 as p,j as o,ab as g,ac as S,bJ as n,ai as U,u as l,I as A,bb as Y,bp as V,R as se,n as ve}from"../jse/index-index-Z45rumFj.js";const be=ne({name:"ElementCustomConfig4BoundaryEventTimer",__name:"BoundaryEventTimer",props:{id:{type:String,default:""},type:{type:String,default:""}},setup(F){const L=F,T=oe("prefix"),H=s(),c=()=>window==null?void 0:window.bpmnInstances,f=s(!1),E=s(),m=s({value:void 0}),d=s(),v=s(6),r=s(y.HOUR),b=s(1),$=s(),N=s(),x=s([]),t=s(),G=()=>{var u,e,a,B,_,M;if(H.value=c().bpmnElement,t.value=H.value.businessObject.eventDefinitions[0],$.value=(e=(u=H.value.businessObject)==null?void 0:u.extensionElements)!=null?e:c().moddle.create("bpmn:ExtensionElements",{values:[]}),E.value=(a=$.value.values)==null?void 0:a.find(i=>i.$type===`${T}:BoundaryEventType`),E.value&&E.value.value===1&&(f.value=!0,x.value.push(E.value)),m.value=(B=$.value.values)==null?void 0:B.find(i=>i.$type===`${T}:TimeoutHandlerType`),m.value){if(x.value.push(m.value),t.value.timeCycle){const i=t.value.timeCycle.body,q=i.split("/")[0],O=i.split("/")[1];b.value=Number.parseInt(q.slice(1)),v.value=Number.parseInt(O.slice(2,-1)),r.value=h(O.slice(-1)),d.value=t.value.timeCycle}if(t.value.timeDuration){const i=t.value.timeDuration.body;v.value=Number.parseInt(i.slice(2,-1)),r.value=h(i.slice(-1)),d.value=t.value.timeDuration}}N.value=(M=(_=$.value.values)==null?void 0:_.filter(i=>i.$type!==`${T}:BoundaryEventType`&&i.$type!==`${T}:TimeoutHandlerType`))!=null?M:[]},J=u=>{f.value=u,u?(E.value=c().moddle.create(`${T}:BoundaryEventType`,{value:1}),x.value.push(E.value),m.value=c().moddle.create(`${T}:TimeoutHandlerType`,{value:1}),x.value.push(m.value),v.value=6,r.value=2,b.value=1,d.value=c().moddle.create("bpmn:Expression",{body:"PT6H"}),t.value.timeDuration=d.value):(x.value=[],delete t.value.timeDuration,delete t.value.timeCycle),C()},Q=()=>{b.value=1,C(),R()},Z=()=>{r.value===y.MINUTE&&(v.value=60),r.value===y.HOUR&&(v.value=6),r.value===y.DAY&&(v.value=1),R(),C()},R=()=>{b.value>1?(d.value.body=`R${b.value}/${w()}`,t.value.timeCycle||(delete t.value.timeDuration,t.value.timeCycle=d.value)):(d.value.body=w(),t.value.timeDuration||(delete t.value.timeCycle,t.value.timeDuration=d.value))},w=()=>{let u="PT";return r.value===y.MINUTE&&(u+=`${v.value}M`),r.value===y.HOUR&&(u+=`${v.value}H`),r.value===y.DAY&&(u+=`${v.value}D`),u},C=()=>{const u=c().moddle.create("bpmn:ExtensionElements",{values:[...N.value||[],...x.value]});c().modeling.updateProperties(se(H.value),{extensionElements:u})};return ie(()=>L.id,u=>{u&&u.length>0&&ve(()=>{G()})},{immediate:!0}),(u,e)=>(p(),I("div",null,[o(l(W),{orientation:"left"},{default:n(()=>[...e[7]||(e[7]=[U("审批人超时未处理时",-1)])]),_:1}),o(l(D),{label:"启用开关",name:"timeoutHandlerEnable"},{default:n(()=>[o(l(X),{checked:f.value,"onUpdate:checked":e[0]||(e[0]=a=>f.value=a),"checked-children":"开启","un-checked-children":"关闭",onChange:J},null,8,["checked"])]),_:1}),f.value?(p(),g(l(D),{key:0,label:"执行动作",name:"timeoutHandlerType"},{default:n(()=>[o(l(ee),{value:m.value.value,"onUpdate:value":e[1]||(e[1]=a=>m.value.value=a),onChange:Q},{default:n(()=>[(p(!0),I(A,null,Y(l(z),a=>(p(),g(l(ae),{key:a.value,value:a.value},{default:n(()=>[U(V(a.label),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),_:1})):S("",!0),f.value?(p(),g(l(D),{key:1,label:"超时时间设置","label-col":{span:24},"wrapper-col":{span:24}},{default:n(()=>[o(l(le),{gutter:[0,0]},{default:n(()=>[o(l(k),null,{default:n(()=>[o(l(j),{class:"mr-2 mt-2 inline-flex text-sm"},{default:n(()=>[...e[8]||(e[8]=[U(" 当超过 ",-1)])]),_:1})]),_:1}),o(l(k),null,{default:n(()=>[o(l(D),{name:"timeDuration",class:"mb-0"},{default:n(()=>[o(l(P),{class:"mr-2 mt-0.5",value:v.value,"onUpdate:value":e[2]||(e[2]=a=>v.value=a),min:1,"controls-position":"right",onChange:e[3]||(e[3]=()=>{R(),C()})},null,8,["value"])]),_:1})]),_:1}),o(l(k),null,{default:n(()=>[o(l(te),{value:r.value,"onUpdate:value":e[4]||(e[4]=a=>r.value=a),class:"mr-2 !w-24",onChange:Z},{default:n(()=>[(p(!0),I(A,null,Y(l(K),a=>(p(),g(l(ue),{key:a.value,label:a.label,value:a.value},{default:n(()=>[U(V(a.label),1)]),_:2},1032,["label","value"]))),128))]),_:1},8,["value"]),o(l(j),{class:"mr-2 mt-2 inline-flex text-sm"},{default:n(()=>[...e[9]||(e[9]=[U(" 未处理 ",-1)])]),_:1})]),_:1})]),_:1})]),_:1})):S("",!0),f.value&&m.value.value===1?(p(),g(l(D),{key:2,label:"最大提醒次数",name:"maxRemindCount"},{default:n(()=>[o(l(P),{value:b.value,"onUpdate:value":e[5]||(e[5]=a=>b.value=a),min:1,max:10,onChange:e[6]||(e[6]=()=>{R(),C()})},null,8,["value"])]),_:1})):S("",!0)]))}});export{be as _};

View File

@@ -0,0 +1 @@
import{_ as o}from"./CallActivity.vue_vue_type_script_setup_true_lang-ipy8OnS7.js";import"./bootstrap-CG9GXOLj.js";import"../jse/index-index-Z45rumFj.js";import"./vxe-table-DdrcEuN4.js";import"./dict-tag.vue_vue_type_script_setup_true_lang-KSsB9XN_.js";import"./index-B2PJN33r.js";import"./use-modal-BdZIxZaI.js";import"./x-C5mvkGkO.js";import"./use-vxe-grid-CqEn6SAN.js";import"./AlertBuilder-Du6UR8Ld.js";import"./circle-check-big-Bo-ZAVro.js";export{o as default};

View File

@@ -1 +0,0 @@
import{_ as o}from"./CallActivity.vue_vue_type_script_setup_true_lang-BRFRU4gP.js";import"./bootstrap-D7yvUSkm.js";import"../jse/index-index-BAlyf32H.js";import"./vxe-table-B6xkb-Em.js";import"./dict-tag.vue_vue_type_script_setup_true_lang-B4-NPqix.js";import"./index-DCCir_pr.js";import"./use-modal-CIPEfvn4.js";import"./x-CIB7fInP.js";import"./use-vxe-grid-DxdOmjKl.js";import"./AlertBuilder-CI4mxLbQ.js";import"./circle-check-big-F4NP1qhl.js";export{o as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
import{bt as c,ay as d}from"./bootstrap-CG9GXOLj.js";import{b9 as f,w as Y,ad as o,b2 as n,ae as v,ai as b,j as i,u as r,I as k,bb as y,bp as S,bJ as g,ab as x}from"../jse/index-index-Z45rumFj.js";const C={class:"mb-2.5"},B={__name:"DurationConfig",props:{value:{type:String,default:""}},emits:["change"],setup(D,{emit:M}){const $=D,H=M,h=[{key:"Y",label:"年",presets:[1,2,3,4]},{key:"M",label:"月",presets:[1,2,3,4]},{key:"D",label:"天",presets:[1,2,3,4]},{key:"H",label:"时",presets:[4,8,12,24]},{key:"m",label:"分",presets:[5,10,30,50]},{key:"S",label:"秒",presets:[5,10,30,50]}],e=f({Y:"",M:"",D:"",H:"",m:"",S:""}),u=f("");function p(a,l){if(!l||Number.isNaN(l)){e.value[a]="";return}e.value[a]=l,m()}function m(){let a="P";e.value.Y&&(a+=`${e.value.Y}Y`),e.value.M&&(a+=`${e.value.M}M`),e.value.D&&(a+=`${e.value.D}D`),(e.value.H||e.value.m||e.value.S)&&(a+="T"),e.value.H&&(a+=`${e.value.H}H`),e.value.m&&(a+=`${e.value.m}M`),e.value.S&&(a+=`${e.value.S}S`),u.value=a==="P"?"":a,H("change",u.value)}return Y(()=>$.value,a=>{if(!a)return;const l=a.match(/^P(?:(\d+)Y)?(?:(\d+)M)?(?:(\d+)D)?(?:T(?:(\d+)H)?(?:(\d+)M)?(?:(\d+)S)?)?$/);l&&(e.value.Y=l[1]||"",e.value.M=l[2]||"",e.value.D=l[3]||"",e.value.H=l[4]||"",e.value.m=l[5]||"",e.value.S=l[6]||"",m())},{immediate:!0}),(a,l)=>(n(),o("div",null,[v("div",C,[l[1]||(l[1]=b(" 当前选择:",-1)),i(r(c),{value:u.value,"onUpdate:value":l[0]||(l[0]=t=>u.value=t),readonly:"",class:"w-[300px]"},null,8,["value"])]),(n(),o(k,null,y(h,t=>v("div",{key:t.key,class:"mb-2"},[v("span",null,S(t.label)+"",1),i(r(d).Group,null,{default:g(()=>[(n(!0),o(k,null,y(t.presets,s=>(n(),x(r(d),{key:s,size:"small",onClick:N=>p(t.key,s)},{default:g(()=>[b(S(s),1)]),_:2},1032,["onClick"]))),128)),i(r(c),{value:e.value[t.key],"onUpdate:value":s=>e.value[t.key]=s,size:"small",class:"ml-2 w-[60px]",placeholder:"自定义",onChange:s=>p(t.key,e.value[t.key])},null,8,["value","onUpdate:value","onChange"])]),_:2},1024)])),64))]))}};export{B as default};

View File

@@ -1 +0,0 @@
import{bD as c,ay as d}from"./bootstrap-D7yvUSkm.js";import{b9 as f,w as Y,ad as o,b2 as n,ae as v,ai as b,j as i,u as r,I as k,bb as y,bp as S,bJ as g,ab as x}from"../jse/index-index-BAlyf32H.js";const C={class:"mb-2.5"},B={__name:"DurationConfig",props:{value:{type:String,default:""}},emits:["change"],setup(D,{emit:M}){const $=D,H=M,h=[{key:"Y",label:"年",presets:[1,2,3,4]},{key:"M",label:"月",presets:[1,2,3,4]},{key:"D",label:"天",presets:[1,2,3,4]},{key:"H",label:"时",presets:[4,8,12,24]},{key:"m",label:"分",presets:[5,10,30,50]},{key:"S",label:"秒",presets:[5,10,30,50]}],e=f({Y:"",M:"",D:"",H:"",m:"",S:""}),u=f("");function p(a,l){if(!l||Number.isNaN(l)){e.value[a]="";return}e.value[a]=l,m()}function m(){let a="P";e.value.Y&&(a+=`${e.value.Y}Y`),e.value.M&&(a+=`${e.value.M}M`),e.value.D&&(a+=`${e.value.D}D`),(e.value.H||e.value.m||e.value.S)&&(a+="T"),e.value.H&&(a+=`${e.value.H}H`),e.value.m&&(a+=`${e.value.m}M`),e.value.S&&(a+=`${e.value.S}S`),u.value=a==="P"?"":a,H("change",u.value)}return Y(()=>$.value,a=>{if(!a)return;const l=a.match(/^P(?:(\d+)Y)?(?:(\d+)M)?(?:(\d+)D)?(?:T(?:(\d+)H)?(?:(\d+)M)?(?:(\d+)S)?)?$/);l&&(e.value.Y=l[1]||"",e.value.M=l[2]||"",e.value.D=l[3]||"",e.value.H=l[4]||"",e.value.m=l[5]||"",e.value.S=l[6]||"",m())},{immediate:!0}),(a,l)=>(n(),o("div",null,[v("div",C,[l[1]||(l[1]=b(" 当前选择:",-1)),i(r(c),{value:u.value,"onUpdate:value":l[0]||(l[0]=t=>u.value=t),readonly:"",class:"w-[300px]"},null,8,["value"])]),(n(),o(k,null,y(h,t=>v("div",{key:t.key,class:"mb-2"},[v("span",null,S(t.label)+"",1),i(r(d).Group,null,{default:g(()=>[(n(!0),o(k,null,y(t.presets,s=>(n(),x(r(d),{key:s,size:"small",onClick:N=>p(t.key,s)},{default:g(()=>[b(S(s),1)]),_:2},1032,["onClick"]))),128)),i(r(c),{value:e.value[t.key],"onUpdate:value":s=>e.value[t.key]=s,size:"small",class:"ml-2 w-[60px]",placeholder:"自定义",onChange:s=>p(t.key,e.value[t.key])},null,8,["value","onUpdate:value","onChange"])]),_:2},1024)])),64))]))}};export{B as default};

View File

@@ -0,0 +1 @@
import{_ as o}from"./ElementBaseInfo.vue_vue_type_script_setup_true_lang-piYUE0O9.js";import"./bootstrap-CG9GXOLj.js";import"../jse/index-index-Z45rumFj.js";export{o as default};

View File

@@ -1 +0,0 @@
import{_ as o}from"./ElementBaseInfo.vue_vue_type_script_setup_true_lang-BE3BNILG.js";import"./bootstrap-D7yvUSkm.js";import"../jse/index-index-BAlyf32H.js";export{o as default};

View File

@@ -1 +0,0 @@
var E=Object.defineProperty;var j=Object.getOwnPropertySymbols;var $=Object.prototype.hasOwnProperty,P=Object.prototype.propertyIsEnumerable;var B=(s,n,a)=>n in s?E(s,n,{enumerable:!0,configurable:!0,writable:!0,value:a}):s[n]=a,f=(s,n)=>{for(var a in n||(n={}))$.call(n,a)&&B(s,a,n[a]);if(j)for(var a of j(n))P.call(n,a)&&B(s,a,n[a]);return s};import{bY as h,c9 as v,bD as p}from"./bootstrap-D7yvUSkm.js";import{m as x,b9 as c,b7 as k,w as O,aW as q,ad as g,b2 as w,j as o,u as d,bJ as r,R as U}from"../jse/index-index-BAlyf32H.js";const D={class:"panel-tab__content"},F={key:0},N={key:1},J=x({name:"ElementBaseInfo",__name:"ElementBaseInfo",props:{businessObject:{},model:{}},setup(s){const n=s,a=c({}),i=c(),t=c({}),C=k({id:[{required:!0,message:"流程标识不能为空",trigger:"blur"}],name:[{required:!0,message:"流程名称不能为空",trigger:"blur"}]}),b=()=>window==null?void 0:window.bpmnInstances,y=()=>{var e,l;i.value=(e=b())==null?void 0:e.bpmnElement,(l=i.value)!=null&&l.businessObject&&(t.value=i.value.businessObject,a.value.type=i.value.businessObject.$type)},I=e=>{e&&/[a-z_][-\w.$]*/i.test(e)&&(t.value&&(t.value.id=e),setTimeout(()=>{m("id")},100))},_=e=>{e&&(t.value&&(t.value.name=e),setTimeout(()=>{m("name")},100))},m=e=>{const l=Object.create(null);!t.value||!i.value||(l[e]=t.value[e],a.value=f(f({},t.value),a.value),e==="id"?b().modeling.updateProperties(U(i.value),{id:t.value[e],di:{id:`${t.value[e]}_di`}}):b().modeling.updateProperties(U(i.value),l))};return O(()=>n.businessObject,e=>{e&&y()}),O(()=>{var e;return(e=n.model)==null?void 0:e.key},e=>{var l,u;e&&(I((l=n.model)==null?void 0:l.key),_((u=n.model)==null?void 0:u.name))},{immediate:!0}),q(()=>{i.value=null}),(e,l)=>(w(),g("div",D,[o(d(h),{model:a.value,rules:C,layout:"vertical"},{default:r(()=>[a.value.type==="bpmn:Process"?(w(),g("div",F,[o(d(v),{label:"流程标识",name:"id"},{default:r(()=>[o(d(p),{value:a.value.id,"onUpdate:value":l[0]||(l[0]=u=>a.value.id=u),placeholder:"请输入流标标识",disabled:a.value.id!==void 0&&a.value.id.length>0,onChange:I},null,8,["value","disabled"])]),_:1}),o(d(v),{label:"流程名称",name:"name"},{default:r(()=>[o(d(p),{value:a.value.name,"onUpdate:value":l[1]||(l[1]=u=>a.value.name=u),placeholder:"请输入流程名称","allow-clear":"",onChange:_},null,8,["value"])]),_:1})])):(w(),g("div",N,[o(d(v),{label:"ID"},{default:r(()=>[o(d(p),{value:t.value.id,"onUpdate:value":l[2]||(l[2]=u=>t.value.id=u),"allow-clear":"",onChange:l[3]||(l[3]=u=>m("id"))},null,8,["value"])]),_:1}),o(d(v),{label:"名称"},{default:r(()=>[o(d(p),{value:t.value.name,"onUpdate:value":l[4]||(l[4]=u=>t.value.name=u),"allow-clear":"",onChange:l[5]||(l[5]=u=>m("name"))},null,8,["value"])]),_:1})]))]),_:1},8,["model","rules"])]))}});export{J as _};

View File

@@ -0,0 +1 @@
var E=Object.defineProperty;var j=Object.getOwnPropertySymbols;var $=Object.prototype.hasOwnProperty,P=Object.prototype.propertyIsEnumerable;var B=(s,n,a)=>n in s?E(s,n,{enumerable:!0,configurable:!0,writable:!0,value:a}):s[n]=a,f=(s,n)=>{for(var a in n||(n={}))$.call(n,a)&&B(s,a,n[a]);if(j)for(var a of j(n))P.call(n,a)&&B(s,a,n[a]);return s};import{bV as h,c6 as v,bt as p}from"./bootstrap-CG9GXOLj.js";import{m as x,b9 as c,b7 as k,w as O,aW as q,ad as g,b2 as w,j as o,u as d,bJ as r,R as U}from"../jse/index-index-Z45rumFj.js";const F={class:"panel-tab__content"},N={key:0},R={key:1},D=x({name:"ElementBaseInfo",__name:"ElementBaseInfo",props:{businessObject:{},model:{}},setup(s){const n=s,a=c({}),i=c(),t=c({}),C=k({id:[{required:!0,message:"流程标识不能为空",trigger:"blur"}],name:[{required:!0,message:"流程名称不能为空",trigger:"blur"}]}),b=()=>window==null?void 0:window.bpmnInstances,y=()=>{var e,l;i.value=(e=b())==null?void 0:e.bpmnElement,(l=i.value)!=null&&l.businessObject&&(t.value=i.value.businessObject,a.value.type=i.value.businessObject.$type)},I=e=>{e&&/[a-z_][-\w.$]*/i.test(e)&&(t.value&&(t.value.id=e),setTimeout(()=>{m("id")},100))},_=e=>{e&&(t.value&&(t.value.name=e),setTimeout(()=>{m("name")},100))},m=e=>{const l=Object.create(null);!t.value||!i.value||(l[e]=t.value[e],a.value=f(f({},t.value),a.value),e==="id"?b().modeling.updateProperties(U(i.value),{id:t.value[e],di:{id:`${t.value[e]}_di`}}):b().modeling.updateProperties(U(i.value),l))};return O(()=>n.businessObject,e=>{e&&y()}),O(()=>{var e;return(e=n.model)==null?void 0:e.key},e=>{var l,u;e&&(I((l=n.model)==null?void 0:l.key),_((u=n.model)==null?void 0:u.name))},{immediate:!0}),q(()=>{i.value=null}),(e,l)=>(w(),g("div",F,[o(d(h),{model:a.value,rules:C,layout:"vertical"},{default:r(()=>[a.value.type==="bpmn:Process"?(w(),g("div",N,[o(d(v),{label:"流程标识",name:"id"},{default:r(()=>[o(d(p),{value:a.value.id,"onUpdate:value":l[0]||(l[0]=u=>a.value.id=u),placeholder:"请输入流标标识",disabled:a.value.id!==void 0&&a.value.id.length>0,onChange:I},null,8,["value","disabled"])]),_:1}),o(d(v),{label:"流程名称",name:"name"},{default:r(()=>[o(d(p),{value:a.value.name,"onUpdate:value":l[1]||(l[1]=u=>a.value.name=u),placeholder:"请输入流程名称","allow-clear":"",onChange:_},null,8,["value"])]),_:1})])):(w(),g("div",R,[o(d(v),{label:"ID"},{default:r(()=>[o(d(p),{value:t.value.id,"onUpdate:value":l[2]||(l[2]=u=>t.value.id=u),"allow-clear":"",onChange:l[3]||(l[3]=u=>m("id"))},null,8,["value"])]),_:1}),o(d(v),{label:"名称"},{default:r(()=>[o(d(p),{value:t.value.name,"onUpdate:value":l[4]||(l[4]=u=>t.value.name=u),"allow-clear":"",onChange:l[5]||(l[5]=u=>m("name"))},null,8,["value"])]),_:1})]))]),_:1},8,["model","rules"])]))}});export{D as _};

View File

@@ -0,0 +1 @@
import{_ as o}from"./ElementCustomConfig.vue_vue_type_script_setup_true_lang-f7sd1Pny.js";import"./BoundaryEventTimer.vue_vue_type_script_setup_true_lang-htQ0_MfQ.js";import"./utils-C4vayS9C.js";import"./consts-D1Imw0A8.js";import"./biz-bpm-enum-DQJBn5Qr.js";import"./bootstrap-CG9GXOLj.js";import"../jse/index-index-Z45rumFj.js";import"./Text-BqQ1eoU_.js";import"./index-5UBoFafa.js";import"./UserTaskCustomConfig.vue_vue_type_script_setup_true_lang-CX9IeQyN.js";import"./index-B6lXJ6De.js";import"./helpers-iYgdm8QC.js";export{o as default};

View File

@@ -1 +0,0 @@
import{_ as o}from"./ElementCustomConfig.vue_vue_type_script_setup_true_lang-poztoApq.js";import"./BoundaryEventTimer.vue_vue_type_script_setup_true_lang-DDaGiwvf.js";import"./utils-C4vayS9C.js";import"./consts-D1Imw0A8.js";import"./biz-bpm-enum-DQJBn5Qr.js";import"./bootstrap-D7yvUSkm.js";import"../jse/index-index-BAlyf32H.js";import"./Text-_MMvD9Ka.js";import"./index-B9wBBlL6.js";import"./UserTaskCustomConfig.vue_vue_type_script_setup_true_lang-jtSWO2oo.js";import"./index-4P5A2KmZ.js";import"./helpers-DPRtSMLo.js";export{o as default};

View File

@@ -0,0 +1 @@
import{_ as m}from"./BoundaryEventTimer.vue_vue_type_script_setup_true_lang-htQ0_MfQ.js";import{_ as c}from"./UserTaskCustomConfig.vue_vue_type_script_setup_true_lang-CX9IeQyN.js";import{m as p,b9 as r,w as l,ad as u,b2 as a,ab as f,bf as b,aS as _,aw as d}from"../jse/index-index-Z45rumFj.js";const v={UserTask:{name:"用户任务",component:c},BoundaryEventTimerEventDefinition:{name:"定时边界事件(非中断)",component:m}},C={class:"panel-tab__content"},O=p({name:"ElementCustomConfig",__name:"ElementCustomConfig",props:{id:{type:String,default:""},type:{type:String,default:""},businessObject:{type:Object,default:()=>({})}},setup(i){const e=i,s=r(null);return l(()=>e.businessObject,()=>{var t,n;if(e.type&&e.businessObject){let o=e.type;e.businessObject.eventDefinitions&&(o+=((t=e.businessObject.eventDefinitions[0])==null?void 0:t.$type.split(":")[1])||""),s.value=(n=v[o])==null?void 0:n.component}},{immediate:!0}),(t,n)=>(a(),u("div",C,[(a(),f(b(s.value),_(d(t.$props)),null,16))]))}});export{O as _};

View File

@@ -1 +0,0 @@
import{_ as m}from"./BoundaryEventTimer.vue_vue_type_script_setup_true_lang-DDaGiwvf.js";import{_ as c}from"./UserTaskCustomConfig.vue_vue_type_script_setup_true_lang-jtSWO2oo.js";import{m as p,b9 as r,w as l,ad as u,b2 as a,ab as f,bf as b,aS as _,aw as d}from"../jse/index-index-BAlyf32H.js";const v={UserTask:{name:"用户任务",component:c},BoundaryEventTimerEventDefinition:{name:"定时边界事件(非中断)",component:m}},C={class:"panel-tab__content"},O=p({name:"ElementCustomConfig",__name:"ElementCustomConfig",props:{id:{type:String,default:""},type:{type:String,default:""},businessObject:{type:Object,default:()=>({})}},setup(i){const e=i,s=r(null);return l(()=>e.businessObject,()=>{var t,n;if(e.type&&e.businessObject){let o=e.type;e.businessObject.eventDefinitions&&(o+=((t=e.businessObject.eventDefinitions[0])==null?void 0:t.$type.split(":")[1])||""),s.value=(n=v[o])==null?void 0:n.component}},{immediate:!0}),(t,n)=>(a(),u("div",C,[(a(),f(b(s.value),_(d(t.$props)),null,16))]))}});export{O as _};

View File

@@ -1 +0,0 @@
import{_ as o}from"./ElementForm.vue_vue_type_script_setup_true_lang-CmWDfjzc.js";import"./index-BadA9ty_.js";import"./bootstrap-D7yvUSkm.js";import"../jse/index-index-BAlyf32H.js";export{o as default};

View File

@@ -0,0 +1 @@
import{_ as o}from"./ElementForm.vue_vue_type_script_setup_true_lang-CvQrCdyj.js";import"./index-B9tsdsKL.js";import"./bootstrap-CG9GXOLj.js";import"../jse/index-index-Z45rumFj.js";export{o as default};

View File

@@ -1 +0,0 @@
var F=(E,y,l)=>new Promise((n,o)=>{var b=t=>{try{u(l.next(t))}catch(d){o(d)}},s=t=>{try{u(l.throw(t))}catch(d){o(d)}},u=t=>t.done?n(t.value):Promise.resolve(t.value).then(b,s);u((l=l.apply(E,y)).next())});import{g as $}from"./index-BadA9ty_.js";import{bY as j,c9 as w,bT as f}from"./bootstrap-D7yvUSkm.js";import{m as B,aE as C,b9 as e,aa as N,v as P,w as T,ad as K,b2 as g,j as p,u as m,bJ as c,I as h,bb as M,ab as R,ai as D,bp as U,R as x,n as V,bZ as J}from"../jse/index-index-BAlyf32H.js";const Y={class:"panel-tab__content"},G=B({name:"ElementForm",__name:"ElementForm",props:{id:{type:String,default:""},type:{type:String,default:""}},setup(E){const y=E,l=C("prefix"),n=e(void 0),o=e("");e("");const b=e([]);e({}),e({long:"长整型",string:"字符串",boolean:"布尔类",date:"日期类",enum:"枚举类",custom:"自定义类型"}),e(-1),e(-1),e(!1),e(!1),e({}),e(""),e([]),e([]),e([]);const s=e(),u=e(),t=e(),d=e(),r=()=>window==null?void 0:window.bpmnInstances,L=()=>{s.value=r().bpmnElement,n.value=s.value.businessObject.formKey,u.value=s.value.businessObject.get("extensionElements")||r().moddle.create("bpmn:ExtensionElements",{values:[]}),t.value=u.value.values.find(a=>a.$type===`${l}:FormData`)||r().moddle.create(`${l}:FormData`,{fields:[]}),o.value=t.value.businessKey,d.value=u.value.values.filter(a=>a.$type!==`${l}:FormData`),b.value=J(t.value.fields||[]),O()},k=()=>{r().modeling.updateProperties(x(s.value),{formKey:n.value})},I=()=>{r().modeling.updateModdleProperties(x(s.value),t.value,{businessKey:o.value})},O=()=>{const a=r().moddle.create("bpmn:ExtensionElements",{values:[...d.value,t.value]});r().modeling.updateProperties(x(s.value),{extensionElements:a})},_=e([]),S=N(()=>_.value.map(a=>({value:a.id,label:a.name})));return P(()=>F(null,null,function*(){_.value=yield $(),n.value=n.value?Number.parseInt(n.value):void 0})),T(()=>y.id,a=>{a&&a.length>0&&V(()=>{L()})},{immediate:!0}),(a,v)=>(g(),K("div",Y,[p(m(j),null,{default:c(()=>[p(m(w),{label:"流程表单"},{default:c(()=>[p(m(f),{value:n.value,"onUpdate:value":v[0]||(v[0]=i=>n.value=i),"allow-clear":"",onChange:k,options:S.value},null,8,["value","options"])]),_:1}),p(m(w),{label:"业务标识"},{default:c(()=>[p(m(f),{value:o.value,"onUpdate:value":v[1]||(v[1]=i=>o.value=i),onChange:I,"allow-clear":""},{default:c(()=>[(g(!0),K(h,null,M(b.value,i=>(g(),R(m(f).Option,{key:i.id,value:i.id},{default:c(()=>[D(U(i.label),1)]),_:2},1032,["value"]))),128)),p(m(f).Option,{value:""},{default:c(()=>[...v[2]||(v[2]=[D("无",-1)])]),_:1})]),_:1},8,["value"])]),_:1})]),_:1})]))}});export{G as _};

View File

@@ -0,0 +1 @@
var F=(E,y,l)=>new Promise((n,o)=>{var b=t=>{try{u(l.next(t))}catch(d){o(d)}},s=t=>{try{u(l.throw(t))}catch(d){o(d)}},u=t=>t.done?n(t.value):Promise.resolve(t.value).then(b,s);u((l=l.apply(E,y)).next())});import{g as $}from"./index-B9tsdsKL.js";import{bV as j,c6 as w,bQ as f}from"./bootstrap-CG9GXOLj.js";import{m as B,aE as C,b9 as e,aa as N,v as P,w as V,ad as K,b2 as g,j as p,u as m,bJ as c,I as h,bb as M,ab as R,ai as D,bp as T,R as x,n as U,bZ as J}from"../jse/index-index-Z45rumFj.js";const Q={class:"panel-tab__content"},G=B({name:"ElementForm",__name:"ElementForm",props:{id:{type:String,default:""},type:{type:String,default:""}},setup(E){const y=E,l=C("prefix"),n=e(void 0),o=e("");e("");const b=e([]);e({}),e({long:"长整型",string:"字符串",boolean:"布尔类",date:"日期类",enum:"枚举类",custom:"自定义类型"}),e(-1),e(-1),e(!1),e(!1),e({}),e(""),e([]),e([]),e([]);const s=e(),u=e(),t=e(),d=e(),r=()=>window==null?void 0:window.bpmnInstances,L=()=>{s.value=r().bpmnElement,n.value=s.value.businessObject.formKey,u.value=s.value.businessObject.get("extensionElements")||r().moddle.create("bpmn:ExtensionElements",{values:[]}),t.value=u.value.values.find(a=>a.$type===`${l}:FormData`)||r().moddle.create(`${l}:FormData`,{fields:[]}),o.value=t.value.businessKey,d.value=u.value.values.filter(a=>a.$type!==`${l}:FormData`),b.value=J(t.value.fields||[]),O()},k=()=>{r().modeling.updateProperties(x(s.value),{formKey:n.value})},I=()=>{r().modeling.updateModdleProperties(x(s.value),t.value,{businessKey:o.value})},O=()=>{const a=r().moddle.create("bpmn:ExtensionElements",{values:[...d.value,t.value]});r().modeling.updateProperties(x(s.value),{extensionElements:a})},_=e([]),S=N(()=>_.value.map(a=>({value:a.id,label:a.name})));return P(()=>F(null,null,function*(){_.value=yield $(),n.value=n.value?Number.parseInt(n.value):void 0})),V(()=>y.id,a=>{a&&a.length>0&&U(()=>{L()})},{immediate:!0}),(a,v)=>(g(),K("div",Q,[p(m(j),null,{default:c(()=>[p(m(w),{label:"流程表单"},{default:c(()=>[p(m(f),{value:n.value,"onUpdate:value":v[0]||(v[0]=i=>n.value=i),"allow-clear":"",onChange:k,options:S.value},null,8,["value","options"])]),_:1}),p(m(w),{label:"业务标识"},{default:c(()=>[p(m(f),{value:o.value,"onUpdate:value":v[1]||(v[1]=i=>o.value=i),onChange:I,"allow-clear":""},{default:c(()=>[(g(!0),K(h,null,M(b.value,i=>(g(),R(m(f).Option,{key:i.id,value:i.id},{default:c(()=>[D(T(i.label),1)]),_:2},1032,["value"]))),128)),p(m(f).Option,{value:""},{default:c(()=>[...v[2]||(v[2]=[D("无",-1)])]),_:1})]),_:1},8,["value"])]),_:1})]),_:1})]))}});export{G as _};

View File

@@ -1 +0,0 @@
import{_ as o}from"./ElementListeners.vue_vue_type_script_setup_true_lang-B3kQFBIk.js";import"./bootstrap-D7yvUSkm.js";import"../jse/index-index-BAlyf32H.js";import"./vxe-table-B6xkb-Em.js";import"./dict-tag.vue_vue_type_script_setup_true_lang-B4-NPqix.js";import"./process-listener-select-modal.vue_vue_type_script_setup_true_lang-5GEXuGkU.js";import"./index-DX4_OpdT.js";import"./dict-enum-CaHgMaDZ.js";import"./table-action.vue_vue_type_script_setup_true_lang-DdXR4DuY.js";import"./index-CCHifYdr.js";import"./use-vxe-grid-DxdOmjKl.js";import"./use-modal-CIPEfvn4.js";import"./x-CIB7fInP.js";import"./biz-system-enum-BAorzMA8.js";import"./utils-NmRrKGzz.js";import"./ListenerFieldModal.vue_vue_type_script_setup_true_lang-Bg-dF3xG.js";import"./use-drawer-CWn_8guH.js";import"./AlertBuilder-CI4mxLbQ.js";import"./circle-check-big-F4NP1qhl.js";export{o as default};

View File

@@ -0,0 +1 @@
import{_ as o}from"./ElementListeners.vue_vue_type_script_setup_true_lang-CIdKHKn4.js";import"./bootstrap-CG9GXOLj.js";import"../jse/index-index-Z45rumFj.js";import"./vxe-table-DdrcEuN4.js";import"./dict-tag.vue_vue_type_script_setup_true_lang-KSsB9XN_.js";import"./process-listener-select-modal.vue_vue_type_script_setup_true_lang-Coyu1dLc.js";import"./index-cEN9ttIG.js";import"./dict-enum-CaHgMaDZ.js";import"./table-action.vue_vue_type_script_setup_true_lang-BgjVCaJq.js";import"./index-DLRPPGwJ.js";import"./use-vxe-grid-CqEn6SAN.js";import"./use-modal-BdZIxZaI.js";import"./x-C5mvkGkO.js";import"./biz-system-enum-Ci18uvnT.js";import"./utils-NmRrKGzz.js";import"./ListenerFieldModal.vue_vue_type_script_setup_true_lang-B_GgUAQI.js";import"./use-drawer-Cr_j0y6A.js";import"./AlertBuilder-Du6UR8Ld.js";import"./circle-check-big-Bo-ZAVro.js";export{o as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
import{_ as o}from"./ElementMultiInstance.vue_vue_type_script_setup_true_lang-CHGfOU6e.js";import"./bootstrap-D7yvUSkm.js";import"../jse/index-index-BAlyf32H.js";import"./consts-D1Imw0A8.js";import"./biz-bpm-enum-DQJBn5Qr.js";export{o as default};

View File

@@ -0,0 +1 @@
import{_ as o}from"./ElementMultiInstance.vue_vue_type_script_setup_true_lang-Qx1_eqFX.js";import"./bootstrap-CG9GXOLj.js";import"../jse/index-index-Z45rumFj.js";import"./consts-D1Imw0A8.js";import"./biz-bpm-enum-DQJBn5Qr.js";export{o as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
import{_ as o}from"./ElementOtherConfig.vue_vue_type_script_setup_true_lang-BTRsYIcJ.js";import"../jse/index-index-Z45rumFj.js";import"./bootstrap-CG9GXOLj.js";export{o as default};

View File

@@ -1 +0,0 @@
import{_ as o}from"./ElementOtherConfig.vue_vue_type_script_setup_true_lang-CuCb2lQ6.js";import"../jse/index-index-BAlyf32H.js";import"./bootstrap-D7yvUSkm.js";export{o as default};

View File

@@ -0,0 +1 @@
import{m as r,b9 as u,aW as d,w as p,ad as v,b2 as f,ae as l,j as x,u as b,R as g,n as _}from"../jse/index-index-Z45rumFj.js";import{bP as w}from"./bootstrap-CG9GXOLj.js";const h={class:"px-2 py-1"},y={class:"flex items-start gap-2"},B={class:"flex-1"},C=r({name:"ElementOtherConfig",__name:"ElementOtherConfig",props:{id:{type:String,default:""}},setup(c){const i=c,t=u(""),n=u(),o=()=>window.bpmnInstances,m=()=>{n.value&&n.value.id===i.id||(n.value=o().elementRegistry.get(i.id));const a=o().bpmnFactory.create("bpmn:Documentation",{text:t.value});o().modeling.updateProperties(g(n.value),{documentation:[a]})};return d(()=>{n.value=null}),p(()=>i.id,a=>{a&&a.length>0?_(()=>{var s;const e=(s=o().bpmnElement.businessObject)==null?void 0:s.documentation;t.value=e&&e.length>0?e[0].text:""}):t.value=""},{immediate:!0}),(a,e)=>(f(),v("div",h,[l("div",y,[e[1]||(e[1]=l("div",{class:"w-20 pt-1 text-sm text-gray-700"},"元素文档:",-1)),l("div",B,[x(b(w),{value:t.value,"onUpdate:value":e[0]||(e[0]=s=>t.value=s),"auto-size":{minRows:2,maxRows:4},onChange:m,onBlur:m},null,8,["value"])])])]))}});export{C as _};

View File

@@ -1 +0,0 @@
import{m as r,b9 as u,aW as d,w as p,ad as v,b2 as f,ae as l,j as x,u as b,R as g,n as _}from"../jse/index-index-BAlyf32H.js";import{bS as w}from"./bootstrap-D7yvUSkm.js";const h={class:"px-2 py-1"},y={class:"flex items-start gap-2"},B={class:"flex-1"},C=r({name:"ElementOtherConfig",__name:"ElementOtherConfig",props:{id:{type:String,default:""}},setup(c){const i=c,t=u(""),n=u(),o=()=>window.bpmnInstances,m=()=>{n.value&&n.value.id===i.id||(n.value=o().elementRegistry.get(i.id));const a=o().bpmnFactory.create("bpmn:Documentation",{text:t.value});o().modeling.updateProperties(g(n.value),{documentation:[a]})};return d(()=>{n.value=null}),p(()=>i.id,a=>{a&&a.length>0?_(()=>{var s;const e=(s=o().bpmnElement.businessObject)==null?void 0:s.documentation;t.value=e&&e.length>0?e[0].text:""}):t.value=""},{immediate:!0}),(a,e)=>(f(),v("div",h,[l("div",y,[e[1]||(e[1]=l("div",{class:"w-20 pt-1 text-sm text-gray-700"},"元素文档:",-1)),l("div",B,[x(b(w),{value:t.value,"onUpdate:value":e[0]||(e[0]=s=>t.value=s),"auto-size":{minRows:2,maxRows:4},onChange:m,onBlur:m},null,8,["value"])])])]))}});export{C as _};

Some files were not shown because too many files have changed in this diff Show More