feat(admin): 更新前端资源文件及修复相关功能
Some checks failed
Build docker and publish / linux (1.24.5) (push) Failing after 39s

refactor(service): 修改banner和guild删除逻辑为软删除
fix(service): 修复删除操作使用软删除而非物理删除

build: 添加SQLite测试仓库实现
docs: 新增奖励管理字段拆分和批量抽奖UI改造文档

ci: 更新CI忽略文件
style: 清理无用资源文件
This commit is contained in:
邹方成 2025-11-19 01:35:55 +08:00
parent 6ee627139c
commit 2a89a1ab9d
376 changed files with 2925 additions and 517 deletions

BIN
.DS_Store vendored

Binary file not shown.

0
.trae/.ignore Normal file
View File

View File

@ -0,0 +1,49 @@
## 问题确认
- 症状:在“创建活动”向导中点击“下一步”后,出现“批量抽奖”界面,用户认为逻辑错误。
- 初步研判:批量抽奖来自 `BatchDrawDialog`src/views/activity/rewards/modules/batch-draw-dialog.vue。该组件在管理页src/views/activity/manage/index.vue中常驻渲染可能因不当条件渲染或状态误触发而在向导流程中弹出。
- 路由侧现状:列表页有 `router.push({ name: 'ActivityWizard' })`,但路由模块未注册对应路由,存在跳转异常风险。
## 目标
1. 保证向导“下一步”仅在步骤间顺序前进:活动 → 期数 → 奖品,绝不触发批量抽奖。
2. 统一界面风格为项目全局规范:颜色、圆角、阴影、按钮、表单、布局与动画。
3. 保留现有功能,避免回归,完成自测与构建验证。
## 技术方案
### 1. 逻辑修复
- 向导页面(两处)严格限制导航:
- `src/views/activity/wizard/index.vue``next()` 仅在成功创建活动后 `active.value = 1`,在成功创建期数后 `active.value = 2`,移除或校验任何非最终提交阶段的 `router.push` 与其他弹窗触发。
- `src/views/activity/manage/index.vue``nextWizard()` 仅递进 `wizardActive`。确保 `BatchDrawDialog``v-model` 只由 `openBatchDraw()` 显式开启。
- 隔离批量抽奖弹窗:
- 在管理页将 `<BatchDrawDialog v-model="showBatchDrawDialog" ... />` 增加条件渲染 `v-if="!showWizard"`,确保向导弹窗期间不渲染批量抽奖组件,从根本杜绝误触发。
- 路由补全:在 `src/router/modules/activity.ts` 注册 `ActivityWizard` 路由path `/activity/wizard`component `'/activity/wizard'`),避免列表页“创建活动”跳转异常导致意外页面状态。
### 2. 风格统一
- 去除自定义渐变与玻璃拟态,改为全局样式:
- 主容器采用 `art-card` 与项目标准阴影、圆角(卡片 16px按钮/输入 12px
- 步骤指示器使用项目的圆形数字样式与轻量过渡;颜色使用主题色 `#5D87FF` 及状态色变量。
- 表单与按钮风格遵循项目统一尺寸、高度与交互36px 高度,标准阴影与过渡)。
- 统一 CSS 变量与工具类:
- 使用项目内的 CSS 变量(颜色、圆角、间距),移除局部硬编码样式。
- 采用现有 `art-card`、栅格与间距体系,保证一致性。
### 3. 验证与测试
- 开发验证:
- 在两处向导中执行完整流程(创建活动→创建期数→配置奖品),确认“下一步”不触发 `BatchDrawDialog`
- 构建检查:`npm run build` 无 TS/构建错误。
- 回归验证:
- 管理页列表的“模拟(批量抽奖)”按钮仍可正常打开 `BatchDrawDialog`
- 列表页“创建活动”跳转到向导路由正常。
## 交付物
- 修复后的向导逻辑代码(两处),隔离批量抽奖弹窗的条件渲染。
- 新增路由项 `ActivityWizard`
- 去除非统一风格的样式,替换为项目全局风格实现。
- 构建与运行验证结果说明。
## 验收标准
- 向导点击“下一步”始终进入下一步骤,不出现批量抽奖。
- 界面风格与全局统一(颜色、圆角、阴影、按钮、表单风格一致)。
- 列表页“创建活动”跳转向导正常;管理页“模拟”按钮打开批量抽奖正常。
- 构建通过,无新错误。
如确认以上方案,我将开始实施并同步每一步的修复与验证结果。

View File

@ -0,0 +1,86 @@
## 背景
- 当前不启用数据库外键约束FK删除由业务逻辑驱动。
- 现有删除实现多为单表删除,未做级联:如删除活动 `internal/service/activity/activity_delete.go:9`、删除期 `internal/service/activity/issue_delete.go:9`、删除用户 `internal/service/user/batch_user.go:32`
- GORM 初始化未声明外键或级联:`internal/repository/mysql/mysql.go:97`
## 目标
- 在业务层实现“逻辑级联删除”,保证删除主实体时,同步清理其关联业务数据,且性能与可控性优于 FK 级联。
## 级联清单
### 删除活动Activities.ID
- 删除活动期:`activity_issues``activity_id``internal/repository/mysql/model/activity_issues.gen.go:18`
- 期下配置与承诺:
- 奖励配置 `activity_reward_settings``issue_id``internal/repository/mysql/model/activity_reward_settings.gen.go:18`
- 随机承诺 `issue_random_commitments``issue_id``internal/repository/mysql/model/issue_random_commitments.gen.go:18`
- 期下抽奖相关:
- 抽奖日志 `activity_draw_logs``issue_id``internal/repository/mysql/model/activity_draw_logs.gen.go:18`
- 抽奖效果 `activity_draw_effects``draw_log_id`/`issue_id``internal/repository/mysql/model/activity_draw_effects.gen.go:17,29`
- 抽奖凭据 `activity_draw_receipts``draw_log_id``internal/repository/mysql/model/activity_draw_receipts.gen.go:17`
- 活动范围效果与道具:
- 用户道具使用记录 `user_item_cards``used_activity_id` / `used_issue_id` / `used_draw_log_id``internal/repository/mysql/model/user_item_cards.gen.go:24,25,23`
- 抽奖效果快照 `activity_draw_effects``activity_id`/`issue_id``internal/repository/mysql/model/activity_draw_effects.gen.go:28,29`
- 资产与日志:
- 用户资产 `user_inventory``activity_id``internal/repository/mysql/model/user_inventory.gen.go:21`
- 公会贡献日志 `guild_contribute_logs``activity_id` / `issues_id``internal/repository/mysql/model/guild_contribute_logs.gen.go:19,20`
- 系统模板:
- 系统道具卡 `system_item_cards``activity_id` / `issue_id``internal/repository/mysql/model/system_item_cards.gen.go:23,24`
- 系统优惠券 `system_coupons``activity_id``internal/repository/mysql/model/system_coupons.gen.go:20`
- 最后删除活动主表:`activities``internal/repository/mysql/model/activities.gen.go:15`
### 删除用户Users.ID
- 用户身份与权益:
- 头衔 `user_titles``user_id``internal/repository/mysql/model/user_titles.gen.go:16`
- 领取型权益限流 `user_title_effect_claims``user_id``internal/repository/mysql/model/user_title_effect_claims.gen.go:16`
- 用户账户与地址:
- 地址 `user_addresses``user_id``internal/repository/mysql/model/user_addresses.gen.go:18`
- 积分余额 `user_points``user_id``internal/repository/mysql/model/user_points.gen.go:18`
- 积分流水 `user_points_ledger``user_id``internal/repository/mysql/model/user_points_ledger.gen.go:17`
- 用户订单与优惠:
- 订单 `orders``user_id``internal/repository/mysql/model/orders.gen.go:18`
- 用户优惠券 `user_coupons``user_id``internal/repository/mysql/model/user_coupons.gen.go:18`
- 用户资产与道具:
- 用户资产 `user_inventory``user_id``internal/repository/mysql/model/user_inventory.gen.go:18`
- 用户道具卡 `user_item_cards``user_id``internal/repository/mysql/model/user_item_cards.gen.go:18`
- 与抽奖相关:
- 抽奖效果 `activity_draw_effects``user_id` 或关联 `draw_log_id``internal/repository/mysql/model/activity_draw_effects.gen.go:18,17`
- 抽奖凭据 `activity_draw_receipts` 关联 `draw_log_id``internal/repository/mysql/model/activity_draw_receipts.gen.go:17`
- 抽奖日志 `activity_draw_logs``user_id``internal/repository/mysql/model/activity_draw_logs.gen.go:17`
- 公会关联:
- 公会成员 `guild_members``user_id``internal/repository/mysql/model/guild_members.gen.go:18`
- 公会贡献日志 `guild_contribute_logs``user_id``internal/repository/mysql/model/guild_contribute_logs.gen.go:18`
- 履约/发货:
- 发货记录 `shipping_records``user_id``internal/repository/mysql/model/shipping_records.gen.go:18`
- 运营发货统计 `ops_shipping_stats``user_id``internal/repository/mysql/model/ops_shipping_stats.gen.go:21`
- 最后软删用户:`users.deleted_at``internal/repository/mysql/model/users.gen.go:20`
## 删除顺序(事务内)
- 统一采用“从叶到根”的顺序:
1) 以日志/效果/凭据等子表为先(`activity_draw_effects``activity_draw_receipts``activity_draw_logs`
2) 再清理资产/权益/模板(`user_inventory``user_item_cards``user_titles``system_*`
3) 清理期与期下配置(`activity_issues``activity_reward_settings``issue_random_commitments`
4) 删除根实体(`activities` 或软删 `users`
- 全过程包裹在单事务中,任何一步失败则回滚。
## 实现策略
- 新增业务服务方法:
- `DeleteActivityCascade(ctx, activityID)`:按“删除活动”清单顺序删除
- `DeleteUserCascade(ctx, userID)`:按“删除用户”清单顺序删除
- 技术要点:
- 批量删除使用分批(如 5k/批)避免长事务与大锁;必要时按时间/ID 片段迭代
- 统一 `WHERE` 条件与索引列(`user_id`/`activity_id`/`issue_id`/`draw_log_id`)确保扫描性能
- 软删与硬删:保留用户软删(合规与审计),其余按当前表定义硬删;如需统一软删,可后续逐表补充 `gorm.DeletedAt`
- 幂等性:每个子删除操作按条件删除,无记录时直接通过;重复调用不报错
- 审计记录操作日志操作者、对象ID、影响行数便于回溯
## 验收标准
- 删除活动时,任一期及其抽奖日志/效果/凭据、奖励配置、承诺、资产、贡献日志与相关模板均被清理;根活动删除成功。
- 删除用户时,地址/订单/优惠券/积分(余额+流水)/资产/道具/抽奖相关/公会关系/发货记录及统计均被清理;根用户软删成功。
- 全流程事务保障、失败回滚;批量删除性能稳定,无显著锁表或超时。
## 需要改造的现有入口(参考)
- 活动删除入口:`internal/service/activity/activity_delete.go:9` → 升级为调用 `DeleteActivityCascade`
- 期删除入口:`internal/service/activity/issue_delete.go:9` → 被 `DeleteActivityCascade` 内部调用(或保留独立级联)
- 用户删除入口:`internal/service/user/batch_user.go:32` → 升级为调用 `DeleteUserCascade`
## 后续动作
- 我将基于以上清单与顺序,补充两套事务级联删除实现,并为关键入口替换调用;同时补充单元测试覆盖正常/边界/异常三类用例,验证幂等与性能。

View File

@ -0,0 +1,93 @@
## 总览
- 覆盖 5 个问题:商品列表批量操作、活动创建奖品价格与总价、仪表盘图表重叠修复、活动创建性能、弹窗点击关闭问题。
- 技术栈:管理端前端 Vue3 + Element Plus路径 `web/admin`),后端 Go路径 `internal/*`)。
- 目标:补齐商品批量接口、完善前端交互与缓存、修正布局与加载时序、增强性能与统一弹窗行为。
## 关键位置
- 商品前端:`web/admin/src/views/product/list/index.vue`API`web/admin/src/api/product.ts`
- 商品后端:`internal/api/admin/product_create.go`、Service`internal/service/product/product.go`
- 活动向导:`web/admin/src/views/activity/wizard/index.vue`
- 奖励管理:`web/admin/src/views/activity/rewards/index.vue`
- 仪表盘容器:`web/admin/src/views/dashboard/console/index.vue`
- 抽奖量图表:`web/admin/src/views/dashboard/console/modules/sales-overview.vue` + `components/core/charts/art-line-chart`
- 中奖率分析:`web/admin/src/views/dashboard/console/modules/activity-prize-analysis.vue`
- 弹窗示例:`web/admin/src/views/player-manage/modules/*Dialog.vue``components/core/layouts/*`
## 1. 商品列表功能优化
- 后端批量接口
- 新增 `PUT /api/admin/products/batch`:请求体 `{ ids: number[], stock?: number, status?: 1|2 }`,返回 `{ updated_count, failed: [ {id, reason} ] }`
- Controller`internal/api/admin/product_create.go` 或新文件 `product_batch.go` 增加路由与校验(限制 `ids` 11000`stock >= 0`)。
- Service`internal/service/product/product.go` 增加 `BatchUpdate(ctx, ids, stock?, status?)`,事务更新;支持“仅库存”“仅状态”“二者皆有”。
- DAO使用批量更新`UPDATE products SET stock=?, status=? WHERE id IN (...)`),对无权限/不存在的 `id` 记录失败原因。
- 文档:更新 swagger`docs/swagger.yaml`)。
- 前端批量操作
- 列表顶部添加“全选本页”复选框:基于 `ElTable` 的选择事件维护 `selectedIds: number[]``checkAll` 同步当页数据。
- 批量工具栏:按钮“批量改库存”“批量上架”“批量下架”。每次操作弹出确认框(库存输入/操作确认)。
- API`web/admin/src/api/product.ts` 新增 `batchUpdateProducts(payload)` 调用上游接口;失败项以通知/表格高亮反馈。
- 交互:操作成功后刷新当页并清空选中;支持 loading 与禁用态;无选中时禁用按钮。
## 2. 活动创建流程优化(奖品价格与总价)
- 单价展示
- 远程商品搜索返回 `price` 字段(已有),选择时在 `ElSelect``option` 右侧显示“¥单价”。
- 在奖励编辑卡片/表格中追加“单价”列(从缓存读取)。
- 总价计算
- 公式:`总价 = Σ(price(product_id) * quantity)`;监听 `product_id/quantity` 变更实时更新。
- 缓存:在 `wizard/index.vue``rewards/index.vue` 维护 `priceCache: Map<product_id, price>`,首次选择命中即用,未命中时调用 `fetchProducts` 补齐并写入。
- 同步:商品价格变更时(重新打开或重新拉取),更新缓存并触发总价重算;保留两位小数。
- 展示步骤3顶部显示“选中奖品总成本¥xxx.xx”。
## 3. 仪表盘数据展示修复(重叠问题)
- 布局与间距
- 在 `console/index.vue``ElRow` 增加统一 `gutter`(如 `20`),保证模块间距。
- 调整 `ElCol` 断点:避免同一行 `ActivityPrizeAnalysis` 与其他模块在窄屏并排压缩;在 `md/sm` 断点落到 `24` 独占一行。
- 组件容器
- 为 `sales-overview.vue``activity-prize-analysis.vue` 外层卡片设置 `position: relative; z-index: 0`;图表内部设 `z-index: 1`,避免 canvas/svg 溢出覆盖。
- 统一卡片最小高度,防止加载时高度为 0 导致重叠。
- 加载时序
- 图表组件在 `dataReady` 后再渲染;`v-if="dataReady"` 避免空容器渲染。
- 保留/增加骨架或加载态,防止内容突变挤压。
## 4. 活动创建性能优化步骤1
- 加载指示
- `wizard/index.vue` 步骤1添加 `v-loading` 与骨架;按钮禁用在加载中。
- 请求超时
- 前端 axios 层设置接口超时 `30s`,在 `web/admin/src/api/_http.ts`(或全局实例)设置,并对超时给出 Toast 提示与重试入口。
- 慢请求日志
- Axios 响应拦截记录 `duration > 2000ms` 的接口,打印到控制台并上报(如有日志上报端点)。
- 初始化优化
- 并行拉取必要数据(活动分类、默认配置、组织信息),减少串行等待;命中表格缓存的接口优先读缓存(已有 `tableCache`)。
- 错误恢复
- 失败时保留已填写表单,显示错误提示与“重试/刷新数据”按钮;网络恢复后自动重载。
## 5. 弹窗点击关闭没有反应(统一与修复)
- 审核现状
- 业务型对话框普遍设置 `:close-on-click-modal="false"`(避免误关);全局搜索/锁屏等未禁用遮罩关闭且部分隐藏关闭按钮。
- 统一策略
- 业务表单:保留 `close-on-click-modal=false`,确保“关闭按钮/取消按钮/ESC”都能关闭统一通过 `@update:model-value``@closed` 重置。
- 全局弹窗:明确设置 `:close-on-click-modal="false"` 并显示关闭按钮或提供显式关闭入口(避免遮罩点击不生效引起困惑)。
- 修复点
- 核查所有 `ElDialog/ElDrawer`:确保存在 `@update:model-value``v-model` 双向绑定;为关闭图标绑定 `emit('update:visible', false)`;在有 `before-close` 时正确调用 `done()`
- 统一 ESC 关闭(可选):在布局层面监听 ESC 并广播关闭事件。
## 验收标准
- 商品批量:
- 在商品列表勾选 N 个,批量改库存/上下架成功,返回计数与失败明细;刷新后状态一致。
- 奖品选择:
- 选择奖品即显示单价,总价随数量/选择实时更新;切换商品价格后总价同步。
- 仪表盘:
- “活动抽奖量”与“活动中奖率分析”在所有断点无重叠,布局稳定;数据加载时不挤压。
- 性能与超时:
- 步骤1加载显示进度超时 30s 有提示与重试;>2s 请求有日志可见。
- 弹窗关闭:
- 所有弹窗可通过关闭按钮/取消按钮/ESC 关闭;遮罩行为与设计一致,不出现“点击关闭没有反应”。
## 交付变更清单
- 后端新增批量接口Controller+Service+DAO+Swagger
- 前端:
- 商品列表批量选择与工具栏;新增批量 API 调用与确认反馈。
- 向导步骤3与奖励管理页显示单价与总价缓存价格。
- 仪表盘栅格与 z-index 调整;图表渲染时序保护。
- Axios 超时与慢请求日志;向导加载骨架与错误恢复。
- 弹窗双向绑定与关闭逻辑统一。
如确认本方案,我将按上述清单依次实现并提交改动,过程中为关键函数添加函数级注释与必要单元/交互测试。

View File

@ -0,0 +1,68 @@
## 总体方案
- 引入统一软删除机制:所有支持回收站的业务表增加 `deleted_at DATETIME NULL``deleted_by BIGINT NULL` 字段,并在 ORM 层启用 GORM Soft Delete 以默认过滤已删除记录。
- 提供中心化回收站接口与界面:集中列出各类型的软删除数据,支持恢复与彻底删除(二次确认)。
- 权限与菜单对齐:仅管理员可访问回收站;侧边栏在“系统管理”下新增“回收站”菜单,配置角色可见与按钮权限。
## 数据库改造
- 目标表(根据现有模型与端点清单):`activities``activity_issues``activity_reward_settings``products``product_categories``banner``guild``system_titles``system_title_effects``system_item_cards``system_coupons``menus``menu_actions``roles``role_users`
- 变更内容:
- 添加列:`deleted_at DATETIME NULL`(建立索引以提升查询效率)、`deleted_by BIGINT NULL`
- 后续通过 `cmd/gormgen` 重新生成 `internal/repository/mysql/{model,dao}/*.gen.go`,使模型包含 `gorm.DeletedAt``DeletedBy` 字段。
- 迁移策略:当前仓库未集成迁移工具,计划新增 `migrations/` 与 SQL 脚本(或集成 `goose`),在测试/生产库执行列新增与索引建立,完成后重新生成 ORM 代码。
## 后端改造
- 技术栈:`gin` + `gorm`(已存在),读写库封装见 `internal/repository/mysql/mysql.go`,路由集中在 `internal/router/router.go`
- 删除逻辑切换为软删除:
- 将所有 `DELETE /api/...` 对应的处理器由物理删除改为 `gorm` 软删除:`db.Delete(&model)`,自动写入 `deleted_at`;同时通过上下文注入当前用户 ID 写入 `deleted_by`(更新列)。
- 涉及端点示例(集中定义于 `internal/router/router.go` 对应 handler活动、期数、奖励、工会、商品、分类、轮播图、称号/特效、道具卡、优惠券、系统菜单/动作、角色、角色成员等。
- 查询默认过滤:
- 使用含 `gorm.DeletedAt` 的模型,`gorm` 默认生成 `WHERE deleted_at IS NULL`;确保服务与 DAO 层不使用 `Unscoped()`,避免误返回已删除数据。
- 回收站接口:新增 `internal/api/admin/system_recycle.go` 与服务层 `internal/service/recycle/recycle_service.go`
- `GET /api/admin/recycle`:参数 `type`枚举activity、issue、reward、product...)、分页;实现为 `Unscoped().Where("deleted_at IS NOT NULL")` 列表,返回原始字段与 `deleted_at``deleted_by`
- `POST /api/admin/recycle/restore`:参数 `type,id``Unscoped()` 更新目标记录 `deleted_at=NULL, deleted_by=NULL`,恢复数据。
- `DELETE /api/admin/recycle`:参数 `type,id``Unscoped().Delete(&model)` 执行物理删除。
- 关联完整性:
- 软删除不级联子表;外键仍保持,恢复后关联自然可用。
- 若业务场景需要父子一致软删除(可选扩展),在服务层增加按类型的联动策略,但默认不做级联以降低风险。
- 权限拦截:
- 以上回收站接口全部走管理员认证中间件 `internal/router/interceptor/admin_auth.go::AdminTokenAuthVerify`
- 彻底删除在服务层进行额外二次确认校验(配合前端确认对话框),后端也校验 `role``action` 权限。
## 前端改造web/admin
- 框架:`vue3` + `vue-router` + `pinia` + `element-plus`,侧边栏位于 `web/admin/src/components/core/layouts/art-menus/art-sidebar-menu`,菜单数据由路由模块/后端菜单驱动。
- 路由与页面:
- 新增路由模块 `web/admin/src/router/modules/system/recycle.ts``path:'/system/recycle'``meta.roles:['admin']``meta.authList:['recycle:list','recycle:restore','recycle:forceDelete']`
- 新增页面 `web/admin/src/views/system/recycle/index.vue`
- 顶部类型筛选(下拉:活动、商品、工会…)。
- 表格列出删除数据(含关键原字段、`deleted_at``deleted_by`),分页。
- 行操作:`恢复`(调用 `POST /api/admin/recycle/restore`)、`彻底删除``ElMessageBox.confirm` 二次确认后调用 `DELETE /api/admin/recycle`)。
- API 封装:`web/admin/src/api/system/recycle.ts`(使用现有 Axios 封装 `web/admin/src/utils/http/index.ts``listDeleted(type,page,size)``restore(type,id)``forceDelete(type,id)`
- 菜单项:
- 后端在 `menus` 表增加“系统管理/回收站”,`path:'/system/recycle'`,并在角色分配接口 `POST /api/role/:role_id/menus` 仅赋予管理员;前端 `ListSimpleMenus` 拉取后自动渲染。
- 权限指令与守卫:
- 按按钮权限 `meta.authList` 与角色 `meta.roles` 控制显示;普通用户不显示菜单,无法访问路由或调用接口。
## 权限控制细则
- 仅管理员角色拥有“回收站”菜单与相关按钮权限;普通用户删除操作也走软删除,但无法访问回收站接口。
- 彻底删除在前端强制二次确认,并在后端再次校验权限与保护条件(如必须管理员)。
## 测试方案
- 后端Go `testing`
- `internal/api/admin/system_recycle_test.go`
- 删除后记录存在于回收站接口,原查询不可见(验证 `deleted_at` 与默认过滤)。
- 恢复后记录重新可见,`deleted_at`/`deleted_by` 为空。
- 权限:非管理员访问回收站接口返回 `401/403`;管理员正常。
- 关联完整性:恢复后关联查询正常(父子外键未破坏)。
- 前端Vitest
- `web/admin/src/tests/system/recycle/recycle.test.ts`
- 菜单与路由权限:管理员可见“回收站”,普通用户不可见。
- 列表加载与分页、恢复按钮触发成功提示与刷新、彻底删除二次确认弹窗与成功流程。
- 401/403 拦截按现有拦截器工作(参考 `src/tests/auth/401-error-handling.test.ts`)。
## 交付与验证
- 执行数据库迁移并生成 ORM 代码 → 修改删除逻辑到软删除 → 新增回收站接口与前端页面 → 配置菜单与角色 → 编写并运行测试。
- 验收标准:
- 所有默认查询不返回已删除记录。
- 回收站能列出各类删除记录,恢复/彻底删除工作正常。
- 权限严格生效;普通用户删除进入回收站但不可访问回收站界面。
- 恢复后关联数据完整、功能正常。

View File

@ -0,0 +1,49 @@
## 目标
* 在活动模块中彻底移除“批量测试/批量抽奖”入口与弹窗,避免在创建流程中出现。
* 保留其他模块(如“抽奖模拟盈亏”页面)的相似功能,不影响运营侧工具。
* 统一“新建活动”UI为 [https://www.artd.pro/docs/zh/ ](https://www.artd.pro/docs/zh/) 官方风格,保持与项目其他新建页面一致。
## 变更范围
* 移除组件引用与入口:
* `web/admin/src/views/activity/manage/index.vue`:删除 `BatchDrawDialog` 引用与渲染、`openBatchDraw` 按钮及逻辑。
* `web/admin/src/views/activity/list/index.vue`:删除批量抽奖按钮与 `BatchDrawDialog` 渲染。
* 组件保留但不再使用:
* `web/admin/src/views/activity/rewards/modules/batch-draw-dialog.vue` 保留于项目(供其他模块复用),但活动模块不再引用。
* 路由与流程:
* 无需调整路由;保留 `Operations/LotterySimulation` 等运营侧工具。
* 确保“创建活动 → 期数 → 奖品”流程不再出现任何测试入口。
## UI统一
* 两处向导页面完全采用官方 EP 风格(已部分完成):
* `ElSteps` simple 模式;
* `ElCard` 内容区;
* `ElForm` 默认尺寸与标准栅格;
* 移除自定义渐变、玻璃拟态与重阴影。
## 验收标准
* 活动模块中不再出现“批量测试/批量抽奖”按钮或弹窗。
* 创建流程不再被任何测试功能打断。
* 新建活动页面的视觉与项目其他新建保持一致EP 官方风格)。
* 构建与运行通过,页面与流程验证无误。
如确认,我将执行上述移除与统一改造,并完成构建与流程验证。

View File

@ -0,0 +1,31 @@
## 现状确认
- 后端接口已对接:`POST /api/admin/activities``internal/router/router.go:78`),控制器 `CreateActivity``internal/api/admin/activities_admin.go:41`)。
- 管理端前端已调用:`createActivity()` 指向 `admin/activities``web/admin/src/api/adminActivities.ts:13`)。
- 向导有两种:
- 独立向导页 `wizard/index.vue``下一步`仅切换步骤(`next()`),提交动作分别由页面内的`提交`按钮触发(`submitActivity/submitIssue/submitRewards`)。
- 管理页弹窗向导 `manage/index.vue``下一步`会调用创建接口然后推进步骤(`nextWizard()`)。
## 可能原因
- 使用了独立向导页,点击`下一步`未触发API预期行为需用`提交`按钮)。
- 请求未通过权限:后端要求超级管理员(`ctx.SessionUserInfo().IsSuper == 1``internal/api/admin/activities_admin.go:56-59`)。
- 请求参数不合法:`name`必填、`activity_category_id`不可为0同文件 15-18, 51-54
- 环境未配置或认证头缺失:`VITE_API_URL` 未指向后端 `/api` 前缀,或 `Authorization` 未带登录后的纯 Token不加 `Bearer`)。
## 排查步骤
1) 打开浏览器 Network在点击`下一步``提交`后确认是否发起 `POST {VITE_API_URL}/api/admin/activities`;查看响应码与返回体。
2) 确认当前页面是弹窗向导还是独立向导:
- 若是独立向导,请使用每步的`提交`按钮;`下一步`只换页不提交。
3) 验证权限与参数:
- 登录账号需 `is_super=1`;否则返回 400 `禁止操作`
- `name``activity_category_id`需填充;分类可通过 `GET /api/admin/activity_categories` 获取。
4) 检查前端环境:
- `VITE_API_URL` 应指向后端根(例如 `http://localhost:8000`),请求工具会拼接 `admin/...``/api/admin/...`
- `Authorization` 头为登录获得的 Token 字符串(无 `Bearer` 前缀)。
## 改造建议(可选)
- 为独立向导页 `wizard/index.vue` 增强交互:在 `next()` 中根据 `active` 自动调用对应的 `submitActivity/submitIssue`,使“下一步”即提交。
- 在按钮文案上提示“提交并进入下一步”,并在未填必填项时给出校验提示(阻止推进)。
## 验收标准
- 在管理端,创建活动流程点击`提交`或(改造后)点击`下一步`能成功发起请求并进入下一步;错误时有明确提示。
- 非超级管理员或参数缺失时,前端能正确显示后端返回的错误信息。

View File

@ -0,0 +1,87 @@
## 目标
- 将活动创建流程改造成“清晰、可操作、可回退”的向导式体验,显著降低填写负担、减少出错率,并确保与现有后端接口完全对齐。
- 统一字段与交互:活动、期、奖励配置的字段、校验与排序一致;消除重复输入与歧义(如奖励名称以选品自动回填)。
- 杜绝常见错误:时间格式、权限校验、表单必填项、动态模块加载等问题在交互层面被提前防护。
## 现状与痛点
- 后端接口已齐备(管理端):
- 创建活动:`POST /api/admin/activities``internal/router/router.go:78`;控制器 `internal/api/admin/activities_admin.go:41`;服务层 `internal/service/activity/activity_create.go:12-41`
- 创建期:`POST /api/admin/activities/:activity_id/issues``internal/router/router.go:83`;控制器 `internal/api/admin/issues_admin.go`;服务层 `internal/service/activity/issue_create.go:13-32`
- 创建奖励:`POST /api/admin/activities/:activity_id/issues/:issue_id/rewards`
- 前端存在两套创建入口:
- 独立向导页:`web/admin/src/views/activity/wizard/index.vue`(“下一步”仅切换步骤,提交由各步的“提交”触发)
- 管理页弹窗向导:`web/admin/src/views/activity/manage/index.vue`(“下一步”实际调用创建并推进)
- 痛点汇总:
- 两处入口的字段命名、排序不一致;奖励有的手填名称,有的选商品
- 时间未填时易触发数据库零日期错误(`TRADITIONAL SQL` 模式下)
- “下一步”与“提交”含义不统一,用户易误操作
- 表格行式编辑密度过高,填写多项参数不友好
- 动态导入失败来源于 SFC 结构不合法、重复脚本块或未声明变量导致编译失败
## 重构设计(交互与结构)
### 向导统一(单入口)
- 入口:统一从“管理页弹窗向导”打开;支持跳转到独立页,但独立页沿用同一套逻辑(避免两套逻辑分歧)
- 步骤:
1. 基本信息活动名称、分类、状态、门票价格、Boss、开始/结束时间
2. 期信息(活动期):期号、状态、排序
3. 奖励配置按商品选择与参数设置权重、数量、原始数量、等级、排序、Boss
4. 确认提交:汇总校验与最终提交
- 导航:
- “下一步”即执行当前步的提交(成功后推进),失败则停留并有明确错误提示
- “上一步”回退不丢数据;每步保存草稿状态在组件内存
### 表单布局与输入体验
- 两列栅格布局(`ElRow/ElCol`):提升可读性与并行填写效率
- 奖励配置交互:
- 改为“卡片列表 + 弹窗表单”,卡片上显示商品名称及关键参数;“新增奖励/编辑奖励”在弹窗中填写,分两列布局
- 商品选择:远程搜索 `admin/products``web/admin/src/api/product.ts`),选择后自动回填奖励名称(传递给后端以兼容)
- 支持复制卡片、删除卡片、批量导入CSV/JSON作为扩展项初版可不做批量
- 字段统一:奖励行统一字段为 `product_id、weight、quantity、original_qty、level、sort、is_boss``name`由选品自动补齐,不再手填
- 权限与提示:检测 `SessionUserInfo.IsSuper`(控制器内已做),前端在 403/400 的返回文案时专门弹出“权限不足”提示
### 校验与防错
- 实时校验规则:
- 活动:名称与分类必填;开始/结束时间支持空,但若为空则前端默认以 `ISO8601` 当前时间传入或后端统一允许 `NULL`
- 期:期号必填;排序与状态为数值校验
- 奖励:`product_id` 必填;数值项均为非负或正数;`level` 合法枚举
- 时间防错:
- 方案优先级A数据库将 `start_time/end_time` 改为可 `NULL` 且默认 `NULL`(推荐);
- 方案优先级B前端在未选择时默认传当前时间的 `toISOString()`
- 后端保留 `Omit` 逻辑(`internal/service/activity/activity_create.go:29-35`),避免强行写零日期
### 代码结构与可维护性
- 组件结构:每个步骤独立子组件(`ActivityStepBasic.vue``ActivityStepIssue.vue``ActivityStepRewards.vue`+ 容器(`ActivityWizard.vue`
- 状态管理:使用本地状态(`ref/reactive`)即可;如需跨页保持,用 `pinia` 记录向导草稿
- API层沿用 `web/admin/src/api/adminActivities.ts`,奖励提交前统一映射自动补齐 `name`
- 动态导入稳定性:
- 确保每个 SFC 仅一个 `<template>` 和一个 `<script setup>`,无重复导入、重复变量与重复函数
- 编译错误先清理其他页面的类型错误(如 `shipping-stats/index.vue``remoteLoading.orders``reconcile/diff/index.vue``formatDetail`),避免影响整体构建可用性
## 后端约束与对齐
- 保持接口不变:`CreateActivity`/`CreateIssue`/`CreateIssueRewards`
- 修改建议(可选):
- 数据库列允许 `NULL`(避免零日期);
- 在 `CreateActivity` 中对 `StartTime/EndTime` 为空时不写入(现有已 Omit
## 验收标准
- 用户可通过统一向导完成活动创建:每步“下一步”均会发起对应请求并进入下一步;错误有明确提示
- 奖励配置以选择商品为主,不再手填名称;行字段与顺序一致
- 复杂表单两列布局,填写效率明显提升;可编辑/删除奖励卡片
- 构建通过(无 SFC 结构错误与类型错误);页面加载不再出现“动态模块导入失败”
## 实施步骤
1. 重构向导组件结构与路由入口;统一使用弹窗向导(保留独立页入口但复用组件)
2. 基本信息与期信息改为两列布局;“下一步”触发提交与推进
3. 奖励配置改为卡片 + 弹窗表单;远程选品与字段统一;提交前自动补齐名称
4. 表单校验与错误提示完善;未填时间的兜底(前端默认或后端允许 NULL
5. 清理页面内无关类型错误(`shipping-stats/index.vue``reconcile/diff/index.vue`)保证构建与动态导入稳定
6. 编写端到端测试用例:
- 正常流程:活动→期→奖励→提交 成功
- 边界:缺少必填项、非超级管理员、时间为空等
- 性能:奖励 50+ 条下的编辑与提交
## 交付物
- 统一的向导组件及子组件
- API 映射与表单校验实现
- 样式与布局更新,卡片/弹窗交互
- 测试用例与构建通过证明

View File

@ -0,0 +1,51 @@
## 目标与范围
- 优化期数管理:在期数列表中新增“奖品数量”,支持实时刷新与排序。
- 登录状态保持:核查并完善前端请求头携带令牌、后端校验逻辑,加入令牌自动刷新机制。
- 奖励管理增强:名称后显示价格“名称(价格)”,下拉显示名称+价格,统一两位小数,支持按价格筛选与排序。
## 现状定位
- 期数列表:`web/admin/src/views/activity/issues/index.vue` 使用 `listActivityIssues`;后端 `internal/api/admin/issues_admin.go` 未返回奖品数量。
- 登录令牌:前端 `web/admin/src/utils/http/index.ts` 注入 `Authorization`401登出无刷新后端鉴权在 `internal/router/interceptor/admin_auth.go`JWT工具具备 `Refresh` 但未暴露接口。
- 奖励管理:`web/admin/src/views/activity/rewards/index.vue` 已有价格缓存与总成本;向导 `wizard/index.vue` 已显示单价但管理页未统一展示,筛选仅支持名称/等级/Boss。
## 实施方案
### 1) 期数管理“奖品数量”
- 后端接口返回扩展:
- 在 `internal/api/admin/issues_admin.go` 的列表响应结构添加 `prize_count` 字段;统计当前活动期对应的奖励配置数量(表 `activity_reward_settings`)并填入。
- 为避免 N+1 查询,优先采用按 `IssueID` 分组的聚合统计一次性返回。
- 前端表格列:
- 在 `issues/index.vue``columnsFactory` 增加 `{ prop: 'prize_count', label: '奖品数量', minWidth: 120, align: 'center', sortable: true }`
- 保持字体大小与现有列一致,列宽 120保证清晰可见。
- 实时刷新:
- 在新增/删除奖励后(`createIssueRewards``deleteIssueReward`)触发行级期数列表刷新;或在奖励模块完成操作后发出事件总线通知,期数页监听并刷新。
### 2) 登录状态保持与自动刷新
- 前端核查与完善:
- 保证所有请求统一使用封装实例,已自动注入 `Authorization`;抽样验证重要路由跳转后的接口头部是否带令牌(在拦截器内添加开发模式日志)。
- 在 `axios` 响应拦截器中实现一次性刷新流程:当收到 401 且存在 `refreshToken`,调用后端刷新接口获取新 `accessToken`,更新到 `useUserStore` 并重放队列中的失败请求。
- 后端刷新接口:
- 新增 `POST /api/admin/auth/refresh`,从 `refreshToken` 校验后发新 `accessToken` 与新的过期时间;使用 `internal/pkg/jwtoken.Refresh`
- 刷新令牌有效期策略:`accessToken` 24h`refreshToken` 714d可根据配置调整。
- 有效期验证:
- 检查管理端 JWT `exp` 与中间件的过期处理;在返回体附带 `expires_in`(秒)便于前端设置刷新窗口(如 T-5min 刷新)。
### 3) 奖励管理价格展示与筛选排序
- 名称后显示“名称(价格)”:
- 在 `rewards/index.vue` 的名称列渲染处,读取 `priceCache[row.product_id]`,以元显示并保留两位小数:`{{ row.name }} (¥{{ unitPrice(row.product_id).toFixed(2) }})`
- 下拉选项展示价格:
- 在新增/编辑奖励的商品选择下拉项 `<ElOption>` 增加右侧显示 `¥price.toFixed(2)`;统一从 `fetchProducts``price` 转换为元并缓存。
- 价格筛选与排序:
- 在筛选区新增最小价/最大价输入与排序选择(`price asc/desc`),在 `displayedData` 计算中对 `priceCache` 区间过滤并根据选择排序。
- 统一格式:
- 所有价格展示统一使用元、`toFixed(2)`;缓存与计算逻辑复用,避免重复请求与闪烁。
## 验收标准
- 期数列表出现“奖品数量”列且支持点击列头进行升降序;奖励增减后期数页能自动反映变更。
- 前端所有 API 请求头包含 `Authorization`登录态过期前能自动刷新并续期401 时先刷新再重放请求,刷新失败才登出。
- 奖励管理名称与下拉均显示价格,价格保留两位小数;可按价格筛选与排序,结果正确稳定。
## 交付变更清单
- 后端:扩展期数列表响应(含聚合统计)、新增管理员令牌刷新接口与逻辑。
- 前端期数列表新增“奖品数量”列与刷新机制HTTP 拦截器加入自动刷新与队列重放;奖励管理价格展示、筛选与排序统一完善。
确认后我将按以上步骤实施,并为关键函数按要求补充函数级注释。

View File

@ -0,0 +1,39 @@
## 目标
- 去除“黑白相间”的突兀对比,统一为项目主题色+柔和中性色,整体更温和、现代。
- 两处页面统一:独立向导与管理页弹出向导视觉一致,按钮/表单/步骤/卡片风格一致。
- 完全采用 Element Plus 官方变量与项目色板,不再硬编码颜色与阴影。
## 统一规范(按 Element Plus 变量)
- 文字:`var(--el-text-color-primary)`(标题)、`var(--el-text-color-regular)`(正文)、`var(--el-text-color-secondary)`(说明)。
- 边框:`var(--el-border-color)`;阴影:`var(--el-box-shadow-light)`
- 背景:卡片 `var(--el-fill-color-blank)`、页面区块背景 `var(--el-fill-color)`;不使用纯黑纯白对比。
- 主题色:`var(--el-color-primary)`;状态色:`success/warning/info/danger` 统一。
- 间距:统一使用 `16px` 栅格间距,卡片内上下 `24px`
## 具体改造
1) 独立向导 `web/admin/src/views/activity/wizard/index.vue`
- 容器:保持 `<ElCard>` 主容器,去除自定义白底+灰边的强对比;卡片背景改为 `var(--el-fill-color-blank)`,边框用 `var(--el-border-color)`,阴影用 `var(--el-box-shadow-light)`
- 头部:标题字号 `28px``24px`,颜色用 `var(--el-text-color-primary)`;副标题 `14px``var(--el-text-color-secondary)`
- 步骤:保留 `<ElSteps simple>`,标题使用默认;去掉自定义连接线与色块;色彩由主题变量自动控制。
- 内容:每个步骤用 `<ElCard>` 分区,区块标题样式统一(加粗、常规色),说明文案用 secondary 文本色。
- 表单:统一 `label-width="140px"``size="default"`;布局用 `<ElRow :gutter="16">`+ `<ElCol>`;移除任何自定义对比背景。
- 按钮:主按钮 `type="primary"`,次按钮使用 `plain` 或默认;不使用渐变。
2) 管理页向导 `web/admin/src/views/activity/manage/index.vue`
- 容器/步骤/表单/按钮同上;弹窗内部所有区块统一同风格(卡片+柔和背景+统一间距)。
- 选中信息卡片(当前活动/期数)采用轻背景 `var(--el-fill-color)`+ `var(--el-border-color)`,文字用 regular 色;去除纯白/纯黑对比。
## 视觉微调项
- 标签 `ElTag` 的等级色:`primary/success/warning/info/danger` 映射规则保留,颜色来源于 EP 变量。
- 所有说明性文字色统一为 `var(--el-text-color-secondary)`,避免接近黑白对撞感。
## 验证
- 构建通过:`npm run build`
- 手动检查两处向导的视觉一致性(标题、卡片、表单、按钮、步骤)。
- 流程测试:创建活动→期数→奖品;界面风格统一且不出现批量测试入口。
## 交付
- 两处文件的样式与结构更新,删除多余 SCSS改为使用 EP 变量。
- 简要变更说明与截图(提交描述中)。
如确认方案,我将立即执行改造、构建与验证,并交付结果。

View File

@ -0,0 +1,41 @@
## 结论与遗漏点
- 当前事务级联已覆盖核心链路,但仍有以下遗漏按业务应清理:
- 删除用户:
- 订单子表:`order_items.order_id IN(用户订单ID)`(模型:`internal/repository/mysql/model/order_items.gen.go:17`
- 支付流水:`payment_preorders/order_id``payment_transactions/order_id``payment_refunds/order_id`(模型:`payment_preorders.gen.go:16``payment_transactions.gen.go:16``payment_refunds.gen.go:16`
- 邀请关系:`user_invites.inviter_id = 用户ID OR invitee_id = 用户ID`(模型:`user_invites.gen.go:18,19`
- 资产转赠流水:`user_inventory_transfers.from_user_id = 用户ID OR to_user_id = 用户ID`,以及通过 `inventory_id` 引用用户资产(模型:`user_inventory_transfers.gen.go:17-19`
- 删除活动:
- 发货记录(与资产关联):`shipping_records.inventory_id IN(活动产生的 user_inventory.id)`(模型:`shipping_records.gen.go:21`
- 资产转赠流水:`user_inventory_transfers.inventory_id IN(活动产生的 user_inventory.id)`
- 删除期:
- 可选(视运营策略):删除与该期绑定的系统道具模板 `system_item_cards.issue_id = 期ID`(模型:`system_item_cards.gen.go:24`)。若模板为系统公共配置且希望保留,请跳过。
## 改造方案
- 用户级联(`internal/service/user/batch_user.go:32`
1) 查出该用户的订单ID集合 → 删除 `order_items``order_id IN (...)`
2) 按订单ID集合删除`payment_preorders``payment_transactions``payment_refunds`
3) 删除邀请关系:`user_invites``inviter_id = userID OR invitee_id = userID`
4) 删除资产转赠:`user_inventory_transfers``from_user_id = userID OR to_user_id = userID`并按用户资产ID集合删除 `inventory_id IN (...)`
- 活动级联(`internal/service/activity/activity_delete.go:8-106`
1) 查出活动对应 `user_inventory.id` 集合
2) 删除发货记录:`shipping_records.inventory_id IN (...)`
3) 删除资产转赠流水:`user_inventory_transfers.inventory_id IN (...)`
- 期级联(`internal/service/activity/issue_delete.go:8-55`
- 可选:删除 `system_item_cards``issue_id = 期ID`(若模板为期专用且不保留)
## 技术细节
- 顺序先删子表items、支付、转赠、发货→ 再删主表orders/users/activities/issues
- 性能:大表采用分批删除(如 5000/批);所有条件列均为主/索引列(`user_id``order_id``inventory_id`)以保证扫描性能
- 幂等:条件删除无记录时不报错;重复执行安全
## 验收标准
- 删除用户后,不残留该用户的订单行、支付流水、邀请关系、资产转赠流水、发货及统计(统计表可保留)
- 删除活动后,不残留与该活动资产相关的发货记录与资产转赠流水
- 删除期后(若启用模板清理),不残留该期范围的系统卡模板
- 编译通过,现有接口行为不变(仅增强删除逻辑);事务全链路失败回滚
## 执行计划
- 补充三处服务方法的事务删除步骤,并针对大数据量路径加分批删除;完成后编译验证和快速自测(构造少量数据路径)。
请确认是否按上述方案继续,我将直接补齐代码并完成验证。

View File

@ -0,0 +1,51 @@
## 目标
- 去除所有自定义渐变、毛玻璃和重度阴影,完全采用 Element Plus 官方样式与间距体系。
- 两处向导界面统一风格:独立向导与管理页弹出向导保持一致的 EP 风格卡片、步骤、表单和按钮。
- 不引入新库,使用项目现有 Element Plus 组件和 CSS 变量(如 `--el-color-primary`)。
## 改造范围
- `web/admin/src/views/activity/wizard/index.vue`
- `web/admin/src/views/activity/manage/index.vue`
## 样式与组件替换策略
- 容器与卡片:
- 使用 `<ElCard>` 作为主容器,移除自定义容器类和背景渐变。
- 保持卡片圆角与阴影为 EP 默认;必要时轻度覆盖(仅边距)。
- 步骤指示器:
- 用 `<ElSteps>` + `<ElStep>`simple 模式)替换自定义步骤条。
- 激活色用 EP 主色 `var(--el-color-primary)`,完成色用 EP 成功色。
- 表单:
- 统一 `<ElForm>``<ElFormItem>` 默认尺寸large 或 default`label-width: 140px``label-position: left`
- 使用 `<ElRow>`/`<ElCol>` + `:gutter="16"` 管理表单栅格间距。
- 标签与按钮:
- `<ElTag>``type` 使用 `primary/success/warning/info/danger` 标准集合。
- 按钮全部使用 EP 默认样式与尺寸;次级按钮使用 `plain``text` 类型,不做渐变。
- 颜色与变量:
- 仅使用 `--el-color-primary``--el-color-success` 等 EP 变量,移除硬编码渐变色与 backdrop-filter。
## 具体改动清单
1. 独立向导 `wizard/index.vue`
- 移除 `.activity-wizard-container` 背景渐变与毛玻璃。
- 顶部头部改为 `<ElCard>` 包裹标题与描述,使用普通文本样式(取消文字渐变)。
- 步骤改为 `<ElSteps :active="active" simple>`,步骤标题采用 EP 默认文案展示。
- 内容区块改为 `<ElCard>` 内表单与按钮,使用标准间距与栅格。
- 删除/精简大部分自定义 SCSS仅保留少量布局边距`.mb-4`)。
2. 管理页弹出向导 `manage/index.vue`
- 弹窗内容内采用 `<ElCard>` 分区,不再使用自定义步骤条;统一用 `<ElSteps>` simple。
- 向导页中所有按钮与标签统一 EP 默认风格。
- 保持批量抽奖对话框隔离(当前已 `v-if="!showWizard"`)。
## 验证与回归
- 构建检查:`npm run build` 无 TS/样式错误。
- 流程测试:创建活动 → 期数 → 奖品,步骤推进正确,不触发批量抽奖。
- 视觉验收:对比项目其他页面(列表、表格、弹窗)确认风格一致。
- 移动端宽度下检查栅格与表单换行正常。
## 交付物
- 两处向导文件的组件结构与样式改造,删除冗余 SCSS自述变更要点合并到提交描述
## 备注
- 不新增依赖;完全遵循 Element Plus 官方组件风格与项目既有规范。
如确认以上方案,我将开始实施并完成构建与验证,然后交付结果。

Binary file not shown.

View File

@ -1 +1 @@
import{d as a,T as s,e as t,h as e,p as m,J as r,m as l,y as c,z as n,l as d,C as x,E as o,f as i}from"./index-DBHnxsy6.js";/* empty css */import{_ as p}from"./index-DuC2vu0m.js";import{E as u}from"./index-r0EsCkBw.js";const f={class:"page-content !border-0 !bg-transparent min-h-screen flex-cc"},g={class:"flex-cc max-md:!block max-md:text-center"},b={class:"ml-15 w-75 max-md:mx-auto max-md:mt-10 max-md:w-full max-md:text-center"},h={class:"text-xl leading-7 text-g-600 max-md:text-lg"},_=a({__name:"ArtException",props:{data:{}},setup(a){const _=x(),{homePath:j}=s(),v=()=>{_.push(j.value)};return(s,x)=>{const _=p,j=u,w=o("ripple");return i(),t("div",f,[e("div",g,[m(_,{src:a.data.imgUrl,size:"100%",class:"!w-100"},null,8,["src"]),e("div",b,[e("p",h,l(a.data.desc),1),r((i(),c(j,{type:"primary",size:"large",onClick:v,class:"mt-5"},{default:n(()=>[d(l(a.data.btnText),1)]),_:1})),[[w]])])])])}}});export{_};
import{d as a,T as s,e as t,h as e,p as m,J as r,m as l,y as c,z as n,l as d,C as x,E as o,f as i}from"./index-CZ0Lvzl5.js";/* empty css */import{_ as p}from"./index-2mJ3Csno.js";import{E as u}from"./index-CWBrZtwn.js";const f={class:"page-content !border-0 !bg-transparent min-h-screen flex-cc"},g={class:"flex-cc max-md:!block max-md:text-center"},b={class:"ml-15 w-75 max-md:mx-auto max-md:mt-10 max-md:w-full max-md:text-center"},h={class:"text-xl leading-7 text-g-600 max-md:text-lg"},_=a({__name:"ArtException",props:{data:{}},setup(a){const _=x(),{homePath:j}=s(),v=()=>{_.push(j.value)};return(s,x)=>{const _=p,j=u,w=o("ripple");return i(),t("div",f,[e("div",g,[m(_,{src:a.data.imgUrl,size:"100%",class:"!w-100"},null,8,["src"]),e("div",b,[e("p",h,l(a.data.desc),1),r((i(),c(j,{type:"primary",size:"large",onClick:v,class:"mt-5"},{default:n(()=>[d(l(a.data.btnText),1)]),_:1})),[[w]])])])])}}});export{_};

View File

@ -1 +1 @@
var e=Object.defineProperty,t=Object.defineProperties,s=Object.getOwnPropertyDescriptors,r=Object.getOwnPropertySymbols,a=Object.prototype.hasOwnProperty,o=Object.prototype.propertyIsEnumerable,p=(t,s,r)=>s in t?e(t,s,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[s]=r;import{_ as l}from"./index.vue_vue_type_script_setup_true_lang-DUyHB5jc.js";import{d as n,e as c,f as m,p as i,h as d,i as u,m as x,j as b}from"./index-DBHnxsy6.js";const g={class:"title mt-8 text-3xl font-medium !text-g-900 max-md:mt-2.5 max-md:text-2xl"},f={class:"msg mt-5 text-base text-g-600"},_={class:"res mt-7.5 rounded bg-g-200/80 dark:bg-g-300/40 px-7.5 py-5.5 text-left max-md:px-7.5 max-md:py-2.5 [&_p]:flex [&_p]:items-center [&_p]:py-2 [&_p]:text-sm [&_p]:text-[#808695] [&_p_i]:mr-1.5"},y={class:"btn-group mt-12.5"},v=n((j=((e,t)=>{for(var s in t||(t={}))a.call(t,s)&&p(e,s,t[s]);if(r)for(var s of r(t))o.call(t,s)&&p(e,s,t[s]);return e})({},{name:"ArtResultPage"}),t(j,s({__name:"ArtResultPage",props:{type:{default:"success"},title:{default:""},message:{default:""},iconCode:{default:""}},setup:e=>(t,s)=>{const r=l;return m(),c("div",{class:u(["page-content box-border !px-20 py-3.5 text-center max-md:!px-5",e.type])},[i(r,{class:u(["icon size-22 p-2 mt-16 block rounded-full !text-white","success"===e.type?"bg-[#19BE6B]":"bg-[#ED4014]"]),icon:e.iconCode},null,8,["icon","class"]),d("h1",g,x(e.title),1),d("p",f,x(e.message),1),d("div",_,[b(t.$slots,"content")]),d("div",y,[b(t.$slots,"buttons")])],2)}}))));var j;export{v as _};
var e=Object.defineProperty,t=Object.defineProperties,s=Object.getOwnPropertyDescriptors,r=Object.getOwnPropertySymbols,a=Object.prototype.hasOwnProperty,o=Object.prototype.propertyIsEnumerable,p=(t,s,r)=>s in t?e(t,s,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[s]=r;import{_ as l}from"./index.vue_vue_type_script_setup_true_lang-DkYjV9Ul.js";import{d as n,e as c,f as m,p as i,h as d,i as u,m as x,j as b}from"./index-CZ0Lvzl5.js";const g={class:"title mt-8 text-3xl font-medium !text-g-900 max-md:mt-2.5 max-md:text-2xl"},f={class:"msg mt-5 text-base text-g-600"},_={class:"res mt-7.5 rounded bg-g-200/80 dark:bg-g-300/40 px-7.5 py-5.5 text-left max-md:px-7.5 max-md:py-2.5 [&_p]:flex [&_p]:items-center [&_p]:py-2 [&_p]:text-sm [&_p]:text-[#808695] [&_p_i]:mr-1.5"},y={class:"btn-group mt-12.5"},v=n((j=((e,t)=>{for(var s in t||(t={}))a.call(t,s)&&p(e,s,t[s]);if(r)for(var s of r(t))o.call(t,s)&&p(e,s,t[s]);return e})({},{name:"ArtResultPage"}),t(j,s({__name:"ArtResultPage",props:{type:{default:"success"},title:{default:""},message:{default:""},iconCode:{default:""}},setup:e=>(t,s)=>{const r=l;return m(),c("div",{class:u(["page-content box-border !px-20 py-3.5 text-center max-md:!px-5",e.type])},[i(r,{class:u(["icon size-22 p-2 mt-16 block rounded-full !text-white","success"===e.type?"bg-[#19BE6B]":"bg-[#ED4014]"]),icon:e.iconCode},null,8,["icon","class"]),d("h1",g,x(e.title),1),d("p",f,x(e.message),1),d("div",_,[b(t.$slots,"content")]),d("div",y,[b(t.$slots,"buttons")])],2)}}))));var j;export{v as _};

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 +1 @@
var e=Object.defineProperty,r=Object.defineProperties,a=Object.getOwnPropertyDescriptors,t=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,n=Object.prototype.propertyIsEnumerable,s=(r,a,t)=>a in r?e(r,a,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[a]=t;import{d as l,a as f,o as c,aU as i,aD as u,J as p,aV as b,u as m,e as d,h as v,f as y}from"./index-DBHnxsy6.js";const O={class:"box-border w-full h-full"},h=["src"],j=l((w=((e,r)=>{for(var a in r||(r={}))o.call(r,a)&&s(e,a,r[a]);if(t)for(var a of t(r))n.call(r,a)&&s(e,a,r[a]);return e})({},{name:"IframeView"}),r(w,a({__name:"Iframe",setup(e){const r=u(),a=f(!0),t=f(""),o=f(null);c(()=>{const e=i.getInstance().findByPath(r.path);(null==e?void 0:e.meta)&&(t.value=e.meta.link||"")});const n=()=>{a.value=!1};return(e,r)=>{const s=b;return p((y(),d("div",O,[v("iframe",{ref_key:"iframeRef",ref:o,src:m(t),frameborder:"0",class:"w-full h-full min-h-[calc(100vh-120px)] border-none",onLoad:n},null,40,h)])),[[s,m(a)]])}}}))));var w;export{j as default};
var e=Object.defineProperty,r=Object.defineProperties,a=Object.getOwnPropertyDescriptors,t=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,n=Object.prototype.propertyIsEnumerable,s=(r,a,t)=>a in r?e(r,a,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[a]=t;import{d as l,a as f,o as c,aU as i,aD as u,J as p,aV as b,u as m,e as d,h as v,f as y}from"./index-CZ0Lvzl5.js";const O={class:"box-border w-full h-full"},h=["src"],j=l((w=((e,r)=>{for(var a in r||(r={}))o.call(r,a)&&s(e,a,r[a]);if(t)for(var a of t(r))n.call(r,a)&&s(e,a,r[a]);return e})({},{name:"IframeView"}),r(w,a({__name:"Iframe",setup(e){const r=u(),a=f(!0),t=f(""),o=f(null);c(()=>{const e=i.getInstance().findByPath(r.path);(null==e?void 0:e.meta)&&(t.value=e.meta.link||"")});const n=()=>{a.value=!1};return(e,r)=>{const s=b;return p((y(),d("div",O,[v("iframe",{ref_key:"iframeRef",ref:o,src:m(t),frameborder:"0",class:"w-full h-full min-h-[calc(100vh-120px)] border-none",onLoad:n},null,40,h)])),[[s,m(a)]])}}}))));var w;export{j 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{bk as n,cz as r,bi as t,b8 as u,cA as i,c7 as e,bx as o,ca as f,bm as a}from"./index-DBHnxsy6.js";import{h as c,i as s}from"./index-nZra831X.js";function v(n){return n==n&&!t(n)}function l(n,r){return function(t){return null!=t&&(t[n]===r&&(void 0!==r||n in Object(t)))}}function b(t){var i=function(n){for(var r=u(n),t=r.length;t--;){var i=r[t],e=n[i];r[t]=[i,e,v(e)]}return r}(t);return 1==i.length&&i[0][2]?l(i[0][0],i[0][1]):function(u){return u===t||function(t,u,i,e){var o=i.length,f=o;if(null==t)return!f;for(t=Object(t);o--;){var a=i[o];if(a[2]?a[1]!==t[a[0]]:!(a[0]in t))return!1}for(;++o<f;){var c=(a=i[o])[0],s=t[c],v=a[1];if(a[2]){if(void 0===s&&!(c in t))return!1}else{var l=new n;if(!r(v,s,3,e,l))return!1}}return!0}(u,0,i)}}function d(n){return i(n)?(r=e(n),function(n){return null==n?void 0:n[r]}):function(n){return function(r){return f(r,n)}}(n);var r}function j(n){return"function"==typeof n?n:null==n?s:"object"==typeof n?a(n)?(t=n[0],u=n[1],i(t)&&v(u)?l(e(t),u):function(n){var i=o(n,t);return void 0===i&&i===u?c(n,t):r(u,i,3)}):b(n):d(n);var t,u}export{j as b};

View File

@ -0,0 +1 @@
import{bp as n,cE as r,bn as t,bd as u,cF as e,cc as i,bC as o,cf as f,br as a}from"./index-CZ0Lvzl5.js";import{h as c,i as s}from"./index-BW22oPP6.js";function v(n){return n==n&&!t(n)}function l(n,r){return function(t){return null!=t&&(t[n]===r&&(void 0!==r||n in Object(t)))}}function b(t){var e=function(n){for(var r=u(n),t=r.length;t--;){var e=r[t],i=n[e];r[t]=[e,i,v(i)]}return r}(t);return 1==e.length&&e[0][2]?l(e[0][0],e[0][1]):function(u){return u===t||function(t,u,e,i){var o=e.length,f=o;if(null==t)return!f;for(t=Object(t);o--;){var a=e[o];if(a[2]?a[1]!==t[a[0]]:!(a[0]in t))return!1}for(;++o<f;){var c=(a=e[o])[0],s=t[c],v=a[1];if(a[2]){if(void 0===s&&!(c in t))return!1}else{var l=new n;if(!r(v,s,3,i,l))return!1}}return!0}(u,0,e)}}function d(n){return e(n)?(r=i(n),function(n){return null==n?void 0:n[r]}):function(n){return function(r){return f(r,n)}}(n);var r}function p(n){return"function"==typeof n?n:null==n?s:"object"==typeof n?a(n)?(t=n[0],u=n[1],e(t)&&v(u)?l(i(t),u):function(n){var e=o(n,t);return void 0===e&&e===u?c(n,t):r(u,e,3)}):b(n):d(n);var t,u}export{p as b};

View File

@ -1 +0,0 @@
import{bi as r,ct as t,bn as e,cu as n,cv as o,cw as u,cx as c,cs as a,cy as f}from"./index-DBHnxsy6.js";var s=Object.create,i=function(){function t(){}return function(e){if(!r(e))return{};if(s)return s(e);t.prototype=e;var n=new t;return t.prototype=void 0,n}}();function p(r,t){var e=-1,n=r.length;for(t||(t=Array(n));++e<n;)t[e]=r[e];return t}function v(r,n,o,u){var c=!o;o||(o={});for(var a=-1,f=n.length;++a<f;){var s=n[a],i=void 0;void 0===i&&(i=r[s]),c?t(o,s,i):e(o,s,i)}return o}var l=Object.prototype.hasOwnProperty;function y(t){if(!r(t))return function(r){var t=[];if(null!=r)for(var e in Object(r))t.push(e);return t}(t);var e=n(t),o=[];for(var u in t)("constructor"!=u||!e&&l.call(t,u))&&o.push(u);return o}function b(r){return u(r)?o(r,!0):y(r)}var d=c(Object.getPrototypeOf,Object),h="object"==typeof exports&&exports&&!exports.nodeType&&exports,j=h&&"object"==typeof module&&module&&!module.nodeType&&module,w=j&&j.exports===h?a.Buffer:void 0,x=w?w.allocUnsafe:void 0;function O(r,t){if(t)return r.slice();var e=r.length,n=x?x(e):new r.constructor(e);return r.copy(n),n}function g(r){var t=new r.constructor(r.byteLength);return new f(t).set(new f(r)),t}function m(r,t){var e=t?g(r.buffer):r.buffer;return new r.constructor(e,r.byteOffset,r.length)}function P(r){return"function"!=typeof r.constructor||n(r)?{}:i(d(r))}export{g as a,m as b,v as c,O as d,p as e,d as g,P as i,b as k};

View File

@ -0,0 +1 @@
import{bn as r,cy as t,bs as e,cz as n,cA as o,cB as c,cC as u,cx as a,cD as f}from"./index-CZ0Lvzl5.js";var s=Object.create,i=function(){function t(){}return function(e){if(!r(e))return{};if(s)return s(e);t.prototype=e;var n=new t;return t.prototype=void 0,n}}();function p(r,t){var e=-1,n=r.length;for(t||(t=Array(n));++e<n;)t[e]=r[e];return t}function v(r,n,o,c){var u=!o;o||(o={});for(var a=-1,f=n.length;++a<f;){var s=n[a],i=void 0;void 0===i&&(i=r[s]),u?t(o,s,i):e(o,s,i)}return o}var l=Object.prototype.hasOwnProperty;function y(t){if(!r(t))return function(r){var t=[];if(null!=r)for(var e in Object(r))t.push(e);return t}(t);var e=n(t),o=[];for(var c in t)("constructor"!=c||!e&&l.call(t,c))&&o.push(c);return o}function b(r){return c(r)?o(r,!0):y(r)}var d=u(Object.getPrototypeOf,Object),h="object"==typeof exports&&exports&&!exports.nodeType&&exports,j=h&&"object"==typeof module&&module&&!module.nodeType&&module,x=j&&j.exports===h?a.Buffer:void 0,O=x?x.allocUnsafe:void 0;function g(r,t){if(t)return r.slice();var e=r.length,n=O?O(e):new r.constructor(e);return r.copy(n),n}function w(r){var t=new r.constructor(r.byteLength);return new f(t).set(new f(r)),t}function m(r,t){var e=t?w(r.buffer):r.buffer;return new r.constructor(e,r.byteOffset,r.length)}function A(r){return"function"!=typeof r.constructor||n(r)?{}:i(d(r))}export{w as a,m as b,v as c,g as d,p as e,d as g,A as i,b as k};

View File

@ -1 +0,0 @@
import{_ as e}from"./active-user.vue_vue_type_script_setup_true_lang-19Sadsu3.js";import"./index-DBHnxsy6.js";import"./useChart-MKcUOr4d.js";import"./operations-CsHdqaV1.js";/* empty css */export{e as default};

View File

@ -0,0 +1 @@
import{_ as e}from"./active-user.vue_vue_type_script_setup_true_lang-C_Ah812_.js";import"./index-CZ0Lvzl5.js";import"./useChart-CqKOtsKK.js";import"./operations-BDlSOaTf.js";/* empty css */export{e as default};

View File

@ -1 +1 @@
var e=Object.defineProperty,t=Object.defineProperties,a=Object.getOwnPropertyDescriptors,s=Object.getOwnPropertySymbols,r=Object.prototype.hasOwnProperty,o=Object.prototype.propertyIsEnumerable,i=(t,a,s)=>a in t?e(t,a,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[a]=s,l=(e,t)=>{for(var a in t||(t={}))r.call(t,a)&&i(e,a,t[a]);if(s)for(var a of s(t))o.call(t,a)&&i(e,a,t[a]);return e};import{d as n,c as d,J as c,aV as u,e as p,f as m,g as h,H as y,a as f,r as g,p as x,S as b,h as v,F as w,G as A,m as L,O as S}from"./index-DBHnxsy6.js";import{u as j,a as k,g as O}from"./useChart-MKcUOr4d.js";import{f as P}from"./operations-CsHdqaV1.js";/* empty css */const B=n((W=l({},{name:"ArtBarChart"}),D={__name:"index",props:{data:{default:()=>[0,0,0,0,0,0,0]},xAxisData:{default:()=>[]},barWidth:{default:"40%"},stack:{type:Boolean,default:!1},borderRadius:{default:4},height:{default:j().chartHeight},loading:{type:Boolean,default:!1},isEmpty:{type:Boolean,default:!1},colors:{default:()=>j().colors},showAxisLabel:{type:Boolean,default:!0},showAxisLine:{type:Boolean,default:!0},showSplitLine:{type:Boolean,default:!0},showTooltip:{type:Boolean,default:!0},showLegend:{type:Boolean,default:!1},legendPosition:{default:"bottom"}},setup(e){const t=e,a=d(()=>Array.isArray(t.data)&&t.data.length>0&&"object"==typeof t.data[0]&&"name"in t.data[0]),s=(e,a)=>e||(void 0!==a?t.colors[a%t.colors.length]:new O.LinearGradient(0,0,0,1,[{offset:0,color:y("--el-color-primary-light-4")},{offset:1,color:y("--el-color-primary")}])),r=e=>new O.LinearGradient(0,0,0,1,[{offset:0,color:e},{offset:1,color:e}]),o=e=>{const a=b();return l({name:e.name,data:e.data,type:"bar",stack:e.stack,itemStyle:(s=e.color,{borderRadius:t.borderRadius,color:"string"==typeof s?r(s):s}),barWidth:e.barWidth||t.barWidth},a);var s},{chartRef:i,getAxisLineStyle:n,getAxisLabelStyle:f,getAxisTickStyle:g,getSplitLineStyle:x,getAnimationConfig:b,getTooltipStyle:v,getLegendStyle:w,getGridWithLegend:A}=k({props:t,checkEmpty:()=>{if(Array.isArray(t.data)&&"number"==typeof t.data[0]){const e=t.data;return!e.length||e.every(e=>0===e)}if(Array.isArray(t.data)&&"object"==typeof t.data[0]){const e=t.data;return!e.length||e.every(e=>{var t;return!(null==(t=e.data)?void 0:t.length)||e.data.every(e=>0===e)})}return!0},watchSources:[()=>t.data,()=>t.xAxisData,()=>t.colors],generateOptions:()=>{const e={grid:A(t.showLegend&&a.value,t.legendPosition,{top:15,right:0,left:0}),tooltip:t.showTooltip?v():void 0,xAxis:{type:"category",data:t.xAxisData,axisTick:g(),axisLine:n(t.showAxisLine),axisLabel:f(t.showAxisLabel)},yAxis:{type:"value",axisLabel:f(t.showAxisLabel),axisLine:n(t.showAxisLine),splitLine:x(t.showSplitLine)}};if(t.showLegend&&a.value&&(e.legend=w(t.legendPosition)),a.value){const a=t.data;e.series=a.map((e,a)=>{const r=s(t.colors[a],a);return o({name:e.name,data:e.data,color:r,barWidth:e.barWidth,stack:t.stack?e.stack||"total":void 0})})}else{const a=t.data,r=s();e.series=[o({data:a,color:r})]}return e}});return(e,a)=>{const s=u;return c((m(),p("div",{ref_key:"chartRef",ref:i,style:h({height:t.height})},null,4)),[[s,t.loading]])}}},t(W,a(D))));var W,D;const T={class:"art-card h-105 p-4 box-border mb-5 max-sm:mb-4"},_={class:"flex-b mt-2"},G={class:"text-2xl text-g-900"},R={class:"text-xs text-g-500"},C=n({__name:"active-user",setup(e){const t=f([]),a=f([]),s=g([{name:"总用户量",num:"0"},{name:"总访问量",num:"0"},{name:"日访问量",num:"0"},{name:"周同比",num:"+0%"}]);return(()=>{return e=this,r=null,o=function*(){try{const e=yield P("30d");t.value=e.chart.map(e=>e.date.slice(5)),a.value=e.chart.map(e=>e.value),s[0].num=String(e.metrics.totalUsers),s[1].num=String(e.metrics.totalVisits),s[2].num=String(e.metrics.dailyVisits),s[3].num=e.metrics.weeklyGrowth}catch(e){S.error("加载用户概述失败")}},new Promise((t,a)=>{var s=e=>{try{l(o.next(e))}catch(t){a(t)}},i=e=>{try{l(o.throw(e))}catch(t){a(t)}},l=e=>e.done?t(e.value):Promise.resolve(e.value).then(s,i);l((o=o.apply(e,r)).next())});var e,r,o})(),(e,r)=>{const o=B;return m(),p("div",T,[x(o,{class:"box-border p-2",barWidth:"50%",height:"13.7rem",showAxisLine:!1,data:a.value,xAxisData:t.value},null,8,["data","xAxisData"]),r[0]||(r[0]=b('<div class="ml-1"><h3 class="mt-5 text-lg font-medium">用户概述</h3><p class="mt-1 text-sm">比上周 <span class="text-success font-medium">+23%</span></p><p class="mt-1 text-sm">我们为您创建了多个选项,可将它们组合在一起并定制为像素完美的页面</p></div>',1)),v("div",_,[(m(!0),p(w,null,A(s,(e,t)=>(m(),p("div",{class:"flex-1",key:t},[v("p",G,L(e.num),1),v("p",R,L(e.name),1)]))),128))])])}}});export{C as _};
var e=Object.defineProperty,t=Object.defineProperties,a=Object.getOwnPropertyDescriptors,s=Object.getOwnPropertySymbols,r=Object.prototype.hasOwnProperty,o=Object.prototype.propertyIsEnumerable,i=(t,a,s)=>a in t?e(t,a,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[a]=s,l=(e,t)=>{for(var a in t||(t={}))r.call(t,a)&&i(e,a,t[a]);if(s)for(var a of s(t))o.call(t,a)&&i(e,a,t[a]);return e};import{d as n,c as d,J as c,aV as u,e as p,f as m,g as h,H as y,a as f,r as g,p as x,S as b,h as v,F as w,G as A,m as L,O as S}from"./index-CZ0Lvzl5.js";import{u as j,a as k,g as O}from"./useChart-CqKOtsKK.js";import{f as P}from"./operations-BDlSOaTf.js";/* empty css */const B=n((W=l({},{name:"ArtBarChart"}),D={__name:"index",props:{data:{default:()=>[0,0,0,0,0,0,0]},xAxisData:{default:()=>[]},barWidth:{default:"40%"},stack:{type:Boolean,default:!1},borderRadius:{default:4},height:{default:j().chartHeight},loading:{type:Boolean,default:!1},isEmpty:{type:Boolean,default:!1},colors:{default:()=>j().colors},showAxisLabel:{type:Boolean,default:!0},showAxisLine:{type:Boolean,default:!0},showSplitLine:{type:Boolean,default:!0},showTooltip:{type:Boolean,default:!0},showLegend:{type:Boolean,default:!1},legendPosition:{default:"bottom"}},setup(e){const t=e,a=d(()=>Array.isArray(t.data)&&t.data.length>0&&"object"==typeof t.data[0]&&"name"in t.data[0]),s=(e,a)=>e||(void 0!==a?t.colors[a%t.colors.length]:new O.LinearGradient(0,0,0,1,[{offset:0,color:y("--el-color-primary-light-4")},{offset:1,color:y("--el-color-primary")}])),r=e=>new O.LinearGradient(0,0,0,1,[{offset:0,color:e},{offset:1,color:e}]),o=e=>{const a=b();return l({name:e.name,data:e.data,type:"bar",stack:e.stack,itemStyle:(s=e.color,{borderRadius:t.borderRadius,color:"string"==typeof s?r(s):s}),barWidth:e.barWidth||t.barWidth},a);var s},{chartRef:i,getAxisLineStyle:n,getAxisLabelStyle:f,getAxisTickStyle:g,getSplitLineStyle:x,getAnimationConfig:b,getTooltipStyle:v,getLegendStyle:w,getGridWithLegend:A}=k({props:t,checkEmpty:()=>{if(Array.isArray(t.data)&&"number"==typeof t.data[0]){const e=t.data;return!e.length||e.every(e=>0===e)}if(Array.isArray(t.data)&&"object"==typeof t.data[0]){const e=t.data;return!e.length||e.every(e=>{var t;return!(null==(t=e.data)?void 0:t.length)||e.data.every(e=>0===e)})}return!0},watchSources:[()=>t.data,()=>t.xAxisData,()=>t.colors],generateOptions:()=>{const e={grid:A(t.showLegend&&a.value,t.legendPosition,{top:15,right:0,left:0}),tooltip:t.showTooltip?v():void 0,xAxis:{type:"category",data:t.xAxisData,axisTick:g(),axisLine:n(t.showAxisLine),axisLabel:f(t.showAxisLabel)},yAxis:{type:"value",axisLabel:f(t.showAxisLabel),axisLine:n(t.showAxisLine),splitLine:x(t.showSplitLine)}};if(t.showLegend&&a.value&&(e.legend=w(t.legendPosition)),a.value){const a=t.data;e.series=a.map((e,a)=>{const r=s(t.colors[a],a);return o({name:e.name,data:e.data,color:r,barWidth:e.barWidth,stack:t.stack?e.stack||"total":void 0})})}else{const a=t.data,r=s();e.series=[o({data:a,color:r})]}return e}});return(e,a)=>{const s=u;return c((m(),p("div",{ref_key:"chartRef",ref:i,style:h({height:t.height})},null,4)),[[s,t.loading]])}}},t(W,a(D))));var W,D;const _={class:"art-card h-105 p-4 box-border mb-5 max-sm:mb-4"},G={class:"flex-b mt-2"},R={class:"text-2xl text-g-900"},T={class:"text-xs text-g-500"},V=n({__name:"active-user",setup(e){const t=f([]),a=f([]),s=g([{name:"总用户量",num:"0"},{name:"总访问量",num:"0"},{name:"日访问量",num:"0"},{name:"周同比",num:"+0%"}]);return(()=>{return e=this,r=null,o=function*(){try{const e=yield P("30d");t.value=e.chart.map(e=>e.date.slice(5)),a.value=e.chart.map(e=>e.value),s[0].num=String(e.metrics.totalUsers),s[1].num=String(e.metrics.totalVisits),s[2].num=String(e.metrics.dailyVisits),s[3].num=e.metrics.weeklyGrowth}catch(e){S.error("加载用户概述失败")}},new Promise((t,a)=>{var s=e=>{try{l(o.next(e))}catch(t){a(t)}},i=e=>{try{l(o.throw(e))}catch(t){a(t)}},l=e=>e.done?t(e.value):Promise.resolve(e.value).then(s,i);l((o=o.apply(e,r)).next())});var e,r,o})(),(e,r)=>{const o=B;return m(),p("div",_,[x(o,{class:"box-border p-2",barWidth:"50%",height:"13.7rem",showAxisLine:!1,data:a.value,xAxisData:t.value},null,8,["data","xAxisData"]),r[0]||(r[0]=b('<div class="ml-1"><h3 class="mt-5 text-lg font-medium">用户概述</h3><p class="mt-1 text-sm">比上周 <span class="text-success font-medium">+23%</span></p><p class="mt-1 text-sm">我们为您创建了多个选项,可将它们组合在一起并定制为像素完美的页面</p></div>',1)),v("div",G,[(m(!0),p(w,null,A(s,(e,t)=>(m(),p("div",{class:"flex-1",key:t},[v("p",R,L(e.num),1),v("p",T,L(e.name),1)]))),128))])])}}});export{V as _};

View File

@ -1 +1 @@
var e=Object.defineProperty,r=Object.getOwnPropertySymbols,t=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable,o=(r,t,a)=>t in r?e(r,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):r[t]=a;import{b4 as s}from"./index-DBHnxsy6.js";function n(e){return n=this,i=null,c=function*(){const n=((e,s)=>{for(var n in s||(s={}))t.call(s,n)&&o(e,n,s[n]);if(r)for(var n of r(s))a.call(s,n)&&o(e,n,s[n]);return e})({page:1,page_size:20},e||{});try{const e=yield s.get({url:"app/activities",params:n,showErrorMessage:!1});return{records:e.list.map(e=>({id:e.id,name:e.name,categoryName:e.category_name,status:e.status,priceDraw:e.price_draw,isBoss:e.is_boss})),total:e.total,current:e.page,size:e.page_size}}catch(i){return{records:[],total:0,current:n.page,size:n.page_size}}},new Promise((e,r)=>{var t=e=>{try{o(c.next(e))}catch(t){r(t)}},a=e=>{try{o(c.throw(e))}catch(t){r(t)}},o=r=>r.done?e(r.value):Promise.resolve(r.value).then(t,a);o((c=c.apply(n,i)).next())});var n,i,c}export{n as f};
var e=Object.defineProperty,r=Object.getOwnPropertySymbols,t=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable,o=(r,t,a)=>t in r?e(r,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):r[t]=a;import{b9 as s}from"./index-CZ0Lvzl5.js";function n(e){return n=this,i=null,c=function*(){const n=((e,s)=>{for(var n in s||(s={}))t.call(s,n)&&o(e,n,s[n]);if(r)for(var n of r(s))a.call(s,n)&&o(e,n,s[n]);return e})({page:1,page_size:20},e||{});try{const e=yield s.get({url:"app/activities",params:n,showErrorMessage:!1});return{records:e.list.map(e=>({id:e.id,name:e.name,categoryName:e.category_name,status:e.status,priceDraw:e.price_draw,isBoss:e.is_boss})),total:e.total,current:e.page,size:e.page_size}}catch(i){return{records:[],total:0,current:n.page,size:n.page_size}}},new Promise((e,r)=>{var t=e=>{try{o(c.next(e))}catch(t){r(t)}},a=e=>{try{o(c.throw(e))}catch(t){r(t)}},o=r=>r.done?e(r.value):Promise.resolve(r.value).then(t,a);o((c=c.apply(n,i)).next())});var n,i,c}export{n as f};

View File

@ -1 +1 @@
import{d as t,a as e,r as l,o as a,e as s,f as r,h as o,m as n,F as i,G as c,l as d,i as g,p as x,z as v,n as f}from"./index-DBHnxsy6.js";/* empty css */import{a as p,b as u}from"./operations-CsHdqaV1.js";import{E as m}from"./index-D2YpA_om.js";import"./use-form-common-props-BOfz9xGR.js";const b={class:"art-card h-140 p-5 mb-5 max-sm:mb-4"},h={class:"h-[calc(100%-40px)]"},y={class:"grid grid-cols-4 gap-4 mb-6"},w={class:"text-center p-3 bg-blue-50 rounded-lg"},C={class:"text-2xl font-bold text-blue-600"},R={class:"text-center p-3 bg-green-50 rounded-lg"},S={class:"text-2xl font-bold text-green-600"},j={class:"text-center p-3 bg-yellow-50 rounded-lg"},P={class:"text-2xl font-bold text-yellow-600"},$={class:"text-center p-3 bg-purple-50 rounded-lg"},k={class:"text-2xl font-bold text-purple-600"},T={class:"h-60 mb-4"},_={class:"overflow-auto"},A={class:"w-full text-sm"},E={class:"py-2"},F={class:"flex items-center"},W={class:"py-2"},z={class:"py-2"},G={class:"py-2"},L={class:"py-2"},N=t({__name:"activity-lottery",setup(t){const N=e(),D=l({totalActivities:0,totalParticipants:0,totalDraws:0,winnerCount:0,overallWinRate:0,costControl:0}),M=l([]),O=e(!1),U=t=>t.winRate>2?"success":t.winRate>1?"warning":"info",q=t=>t.winRate>2?"高中奖率":t.winRate>1?"中等中奖率":"低中奖率",B=(t,e)=>({1:`rgba(251, 191, 36, ${e})`,2:`rgba(156, 163, 175, ${e})`,3:`rgba(251, 146, 60, ${e})`,4:`rgba(96, 165, 250, ${e})`,5:`rgba(52, 211, 153, ${e})`}[t]||`rgba(156, 163, 175, ${e})`),H=()=>{return t=this,e=null,l=function*(){O.value=!0;try{const[t,e]=yield Promise.all([p("7d"),u("7d")]);Object.assign(D,t),M.splice(0,M.length,...e),f(()=>{(()=>{if(!N.value||0===M.length)return;const t=N.value,e=t.getContext("2d");if(!e)return;e.clearRect(0,0,t.width,t.height);const l=40,a=t.width-80,s=t.height-80,r=Math.max(...M.map(t=>t.winnerCount)),o=a/M.length*.6,n=a/M.length*.4;M.forEach((t,a)=>{const i=l+a*(o+n)+n/2,c=t.winnerCount/r*s,d=l+s-c,g=e.createLinearGradient(i,d+c,i,d);g.addColorStop(0,B(t.level,.8)),g.addColorStop(1,B(t.level,1)),e.fillStyle=g,e.fillRect(i,d,o,c),e.fillStyle="#333",e.font="12px sans-serif",e.textAlign="center",e.fillText(t.winnerCount.toString(),i+o/2,d-5),e.fillText(t.levelName,i+o/2,l+s+20)}),e.strokeStyle="#e0e0e0",e.lineWidth=1,e.beginPath(),e.moveTo(l,l),e.lineTo(l,l+s),e.lineTo(l+a,l+s),e.stroke()})()})}catch(t){}finally{O.value=!1}},new Promise((a,s)=>{var r=t=>{try{n(l.next(t))}catch(e){s(e)}},o=t=>{try{n(l.throw(t))}catch(e){s(e)}},n=t=>t.done?a(t.value):Promise.resolve(t.value).then(r,o);n((l=l.apply(t,e)).next())});var t,e,l};return a(()=>{H()}),(t,e)=>{const l=m;return r(),s("div",b,[e[5]||(e[5]=o("div",{class:"art-card-header"},[o("div",{class:"title"},[o("h4",null,"活动抽奖效果分析"),o("p",null,"优化中奖概率,控制活动成本")])],-1)),o("div",h,[o("div",y,[o("div",w,[o("div",C,n(D.totalActivities),1),e[0]||(e[0]=o("div",{class:"text-sm text-g-500"},"活动总数",-1))]),o("div",R,[o("div",S,n((a=D.totalParticipants,a>=1e4?(a/1e4).toFixed(1)+"w":a>=1e3?(a/1e3).toFixed(1)+"k":a.toString())),1),e[1]||(e[1]=o("div",{class:"text-sm text-g-500"},"参与人数",-1))]),o("div",j,[o("div",P,n(D.overallWinRate)+"%",1),e[2]||(e[2]=o("div",{class:"text-sm text-g-500"},"整体中奖率",-1))]),o("div",$,[o("div",k,n(D.costControl)+"%",1),e[3]||(e[3]=o("div",{class:"text-sm text-g-500"},"成本控制",-1))])]),o("div",T,[o("canvas",{ref_key:"chartRef",ref:N,width:"400",height:"240"},null,512)]),o("div",_,[o("table",A,[e[4]||(e[4]=o("thead",null,[o("tr",{class:"border-b border-g-200"},[o("th",{class:"text-left py-2"},"奖级"),o("th",{class:"text-left py-2"},"中奖人数"),o("th",{class:"text-left py-2"},"中奖率"),o("th",{class:"text-left py-2"},"成本"),o("th",{class:"text-left py-2"},"状态")])],-1)),o("tbody",null,[(r(!0),s(i,null,c(M,t=>{return r(),s("tr",{key:t.level,class:"border-b border-g-100 hover:bg-g-50"},[o("td",E,[o("div",F,[o("span",{class:g(["w-6 h-6 rounded-full flex items-center justify-center text-white text-xs font-bold mr-2",(e=t.level,{1:"bg-gradient-to-r from-yellow-400 to-yellow-300",2:"bg-gradient-to-r from-gray-400 to-gray-300",3:"bg-gradient-to-r from-orange-400 to-orange-300",4:"bg-gradient-to-r from-blue-400 to-blue-300",5:"bg-gradient-to-r from-green-400 to-green-300"}[e]||"bg-gradient-to-r from-gray-400 to-gray-300")])},n(t.level),3),d(" "+n(t.levelName),1)])]),o("td",W,n(t.winnerCount)+"人",1),o("td",z,n(t.winRate)+"%",1),o("td",G,"¥"+n(t.cost.toLocaleString()),1),o("td",L,[x(l,{type:U(t),size:"small"},{default:v(()=>[d(n(q(t)),1)]),_:2},1032,["type"])])]);var e}),128))])])])])]);var a}}});export{N as default};
import{d as t,a as e,r as l,o as a,e as s,f as r,h as o,m as n,F as i,G as c,l as d,i as g,p as x,z as v,n as f}from"./index-CZ0Lvzl5.js";/* empty css */import{a as p,b as u}from"./operations-BDlSOaTf.js";import{E as m}from"./index-BQ-mpgoy.js";import"./use-form-common-props-U6f9D53_.js";const b={class:"art-card h-140 p-5 mb-5 max-sm:mb-4"},h={class:"h-[calc(100%-40px)]"},y={class:"grid grid-cols-4 gap-4 mb-6"},w={class:"text-center p-3 bg-blue-50 rounded-lg"},C={class:"text-2xl font-bold text-blue-600"},R={class:"text-center p-3 bg-green-50 rounded-lg"},S={class:"text-2xl font-bold text-green-600"},j={class:"text-center p-3 bg-yellow-50 rounded-lg"},P={class:"text-2xl font-bold text-yellow-600"},$={class:"text-center p-3 bg-purple-50 rounded-lg"},k={class:"text-2xl font-bold text-purple-600"},T={class:"h-60 mb-4"},F={class:"overflow-auto"},W={class:"w-full text-sm"},_={class:"py-2"},A={class:"flex items-center"},z={class:"py-2"},E={class:"py-2"},G={class:"py-2"},L={class:"py-2"},N=t({__name:"activity-lottery",setup(t){const N=e(),D=l({totalActivities:0,totalParticipants:0,totalDraws:0,winnerCount:0,overallWinRate:0,costControl:0}),M=l([]),O=e(!1),q=t=>t.winRate>2?"success":t.winRate>1?"warning":"info",B=t=>t.winRate>2?"高中奖率":t.winRate>1?"中等中奖率":"低中奖率",H=(t,e)=>({1:`rgba(251, 191, 36, ${e})`,2:`rgba(156, 163, 175, ${e})`,3:`rgba(251, 146, 60, ${e})`,4:`rgba(96, 165, 250, ${e})`,5:`rgba(52, 211, 153, ${e})`}[t]||`rgba(156, 163, 175, ${e})`),I=()=>{return t=this,e=null,l=function*(){O.value=!0;try{const[t,e]=yield Promise.all([p("7d"),u("7d")]);Object.assign(D,t),M.splice(0,M.length,...e),f(()=>{(()=>{if(!N.value||0===M.length)return;const t=N.value,e=t.getContext("2d");if(!e)return;e.clearRect(0,0,t.width,t.height);const l=40,a=t.width-80,s=t.height-80,r=Math.max(...M.map(t=>t.winnerCount)),o=a/M.length*.6,n=a/M.length*.4;M.forEach((t,a)=>{const i=l+a*(o+n)+n/2,c=t.winnerCount/r*s,d=l+s-c,g=e.createLinearGradient(i,d+c,i,d);g.addColorStop(0,H(t.level,.8)),g.addColorStop(1,H(t.level,1)),e.fillStyle=g,e.fillRect(i,d,o,c),e.fillStyle="#333",e.font="12px sans-serif",e.textAlign="center",e.fillText(t.winnerCount.toString(),i+o/2,d-5),e.fillText(t.levelName,i+o/2,l+s+20)}),e.strokeStyle="#e0e0e0",e.lineWidth=1,e.beginPath(),e.moveTo(l,l),e.lineTo(l,l+s),e.lineTo(l+a,l+s),e.stroke()})()})}catch(t){}finally{O.value=!1}},new Promise((a,s)=>{var r=t=>{try{n(l.next(t))}catch(e){s(e)}},o=t=>{try{n(l.throw(t))}catch(e){s(e)}},n=t=>t.done?a(t.value):Promise.resolve(t.value).then(r,o);n((l=l.apply(t,e)).next())});var t,e,l};return a(()=>{I()}),(t,e)=>{const l=m;return r(),s("div",b,[e[5]||(e[5]=o("div",{class:"art-card-header"},[o("div",{class:"title"},[o("h4",null,"活动抽奖效果分析"),o("p",null,"优化中奖概率,控制活动成本")])],-1)),o("div",h,[o("div",y,[o("div",w,[o("div",C,n(D.totalActivities),1),e[0]||(e[0]=o("div",{class:"text-sm text-g-500"},"活动总数",-1))]),o("div",R,[o("div",S,n((a=D.totalParticipants,a>=1e4?(a/1e4).toFixed(1)+"w":a>=1e3?(a/1e3).toFixed(1)+"k":a.toString())),1),e[1]||(e[1]=o("div",{class:"text-sm text-g-500"},"参与人数",-1))]),o("div",j,[o("div",P,n(D.overallWinRate)+"%",1),e[2]||(e[2]=o("div",{class:"text-sm text-g-500"},"整体中奖率",-1))]),o("div",$,[o("div",k,n(D.costControl)+"%",1),e[3]||(e[3]=o("div",{class:"text-sm text-g-500"},"成本控制",-1))])]),o("div",T,[o("canvas",{ref_key:"chartRef",ref:N,width:"400",height:"240"},null,512)]),o("div",F,[o("table",W,[e[4]||(e[4]=o("thead",null,[o("tr",{class:"border-b border-g-200"},[o("th",{class:"text-left py-2"},"奖级"),o("th",{class:"text-left py-2"},"中奖人数"),o("th",{class:"text-left py-2"},"中奖率"),o("th",{class:"text-left py-2"},"成本"),o("th",{class:"text-left py-2"},"状态")])],-1)),o("tbody",null,[(r(!0),s(i,null,c(M,t=>{return r(),s("tr",{key:t.level,class:"border-b border-g-100 hover:bg-g-50"},[o("td",_,[o("div",A,[o("span",{class:g(["w-6 h-6 rounded-full flex items-center justify-center text-white text-xs font-bold mr-2",(e=t.level,{1:"bg-gradient-to-r from-yellow-400 to-yellow-300",2:"bg-gradient-to-r from-gray-400 to-gray-300",3:"bg-gradient-to-r from-orange-400 to-orange-300",4:"bg-gradient-to-r from-blue-400 to-blue-300",5:"bg-gradient-to-r from-green-400 to-green-300"}[e]||"bg-gradient-to-r from-gray-400 to-gray-300")])},n(t.level),3),d(" "+n(t.levelName),1)])]),o("td",z,n(t.winnerCount)+"人",1),o("td",E,n(t.winRate)+"%",1),o("td",G,"¥"+n(t.cost.toLocaleString()),1),o("td",L,[x(l,{type:q(t),size:"small"},{default:v(()=>[d(n(B(t)),1)]),_:2},1032,["type"])])]);var e}),128))])])])])]);var a}}});export{N as default};

View File

@ -1 +0,0 @@
import{_ as o}from"./activity-prize-analysis.vue_vue_type_script_setup_true_lang-bThIk24K.js";import"./index-DBHnxsy6.js";import"./el-progress-DcK0UPpw.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./operations-CsHdqaV1.js";import"./index-CHZ9Ls9_.js";import"./index-B99ckkYy.js";import"./index-nZra831X.js";import"./index-MOpuiu9Z.js";import"./use-form-item-ByasanrX.js";import"./use-form-common-props-BOfz9xGR.js";import"./index-sqhzrW2O.js";import"./index-D2YpA_om.js";import"./token-DWNpOE8r.js";import"./index-DZO7eApA.js";import"./scroll-Cceui3yC.js";import"./debounce-CkazOn_9.js";import"./_baseIteratee-DRiXPtOg.js";import"./index-BC2pRl3S.js";import"./vnode-CqxKQBn0.js";export{o as default};

View File

@ -0,0 +1 @@
import{_ as i}from"./activity-prize-analysis.vue_vue_type_script_setup_true_lang-Be3zdQ_a.js";import"./index-CZ0Lvzl5.js";import"./el-progress-Bnk5TVLR.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./operations-BDlSOaTf.js";import"./index-pVAXVlCV.js";import"./index-C6fEXl-e.js";import"./index-BW22oPP6.js";import"./index-K2zzami3.js";import"./use-form-item-BsnpemL_.js";import"./use-form-common-props-U6f9D53_.js";import"./index-BierC7rd.js";import"./index-BQ-mpgoy.js";import"./token-DWNpOE8r.js";import"./index-DH_vX4BK.js";import"./scroll-bFiZhqzI.js";import"./debounce-BWBxuUbE.js";import"./_baseIteratee-iUx42eT-.js";import"./index-ZgXgJNHL.js";import"./vnode-C4RX5enz.js";export{i as default};

View File

@ -1 +0,0 @@
var e=Object.defineProperty,a=Object.getOwnPropertySymbols,l=Object.prototype.hasOwnProperty,t=Object.prototype.propertyIsEnumerable,o=(a,l,t)=>l in a?e(a,l,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[l]=t,s=(e,s)=>{for(var r in s||(s={}))l.call(s,r)&&o(e,r,s[r]);if(a)for(var r of a(s))t.call(s,r)&&o(e,r,s[r]);return e};import{d as r,a as i,w as p,E as u,y as d,f as m,z as n,p as c,u as f,B as j,e as v,F as _,G as b,J as y,l as x,ab as h,aW as V}from"./index-DBHnxsy6.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{a as g}from"./adminActivities-C7lwI2HP.js";import{E,a as w}from"./index-zIv9y_XZ.js";import{E as O}from"./index-BIIDnOvF.js";import{E as C}from"./index-B5f0OwDI.js";import{E as P}from"./index-qSQlj0RO.js";import{E as k,a as I}from"./index-CHZ9Ls9_.js";import{E as J}from"./index-Bi8tRqjc.js";import{E as U}from"./index-r0EsCkBw.js";import{E as z}from"./index-Bh7aAHNM.js";import{_ as B}from"./_plugin-vue_export-helper-BCo6x5W8.js";import"./use-form-common-props-BOfz9xGR.js";import"./index-DZO7eApA.js";import"./index-MOpuiu9Z.js";import"./index-nZra831X.js";import"./use-form-item-ByasanrX.js";import"./_initCloneObject-7oWMW-Ot.js";import"./index-B99ckkYy.js";import"./index-sqhzrW2O.js";import"./index-D2YpA_om.js";import"./token-DWNpOE8r.js";import"./scroll-Cceui3yC.js";import"./debounce-CkazOn_9.js";import"./_baseIteratee-DRiXPtOg.js";import"./index-BC2pRl3S.js";import"./vnode-CqxKQBn0.js";import"./index-DfWQjCuY.js";const F=B(r({__name:"activity-search",props:{modelValue:{}},emits:["update:modelValue","search","reset"],setup(e,{emit:a}){const l=e,t=a,o=i([]),r=i(s({},l.modelValue));p(()=>l.modelValue,(e,a)=>{JSON.stringify(e)!==JSON.stringify(a)&&(r.value=s({},e))},{deep:!0});let B=null;p(r,e=>{B&&clearTimeout(B),B=setTimeout(()=>{t("update:modelValue",s({},e))},100)},{deep:!0});const F=e=>{return a=this,l=null,t=function*(){if(e&&0===o.value.length)try{const e=yield g();o.value=e.list||[]}catch(a){}},new Promise((e,o)=>{var s=e=>{try{i(t.next(e))}catch(a){o(a)}},r=e=>{try{i(t.throw(e))}catch(a){o(a)}},i=a=>a.done?e(a.value):Promise.resolve(a.value).then(s,r);i((t=t.apply(a,l)).next())});var a,l,t},G=()=>{t("search",r.value)},S=()=>{r.value={name:void 0,category_id:void 0,status:void 0,is_boss:void 0},t("reset")};return(a,l)=>{const t=u("ripple");return m(),d(f(z),{class:"search-card",shadow:"never"},{default:n(()=>[c(f(E),{ref:"formRef",model:e.modelValue,"label-width":"80px"},{default:n(()=>[c(f(O),{gutter:20},{default:n(()=>[c(f(C),{span:6},{default:n(()=>[c(f(w),{label:"活动名称",prop:"name"},{default:n(()=>[c(f(P),{modelValue:r.value.name,"onUpdate:modelValue":l[0]||(l[0]=e=>r.value.name=e),placeholder:"请输入活动名称",clearable:"",onKeyup:j(G,["enter"])},null,8,["modelValue"])]),_:1})]),_:1}),c(f(C),{span:6},{default:n(()=>[c(f(w),{label:"分类",prop:"category_id"},{default:n(()=>[c(f(k),{modelValue:r.value.category_id,"onUpdate:modelValue":l[1]||(l[1]=e=>r.value.category_id=e),placeholder:"请选择分类",clearable:"",onVisibleChange:F},{default:n(()=>[(m(!0),v(_,null,b(o.value,e=>(m(),d(f(I),{key:e.id,label:e.name,value:e.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1})]),_:1}),c(f(C),{span:6},{default:n(()=>[c(f(w),{label:"状态",prop:"status"},{default:n(()=>[c(f(k),{modelValue:r.value.status,"onUpdate:modelValue":l[2]||(l[2]=e=>r.value.status=e),placeholder:"请选择状态",clearable:""},{default:n(()=>[c(f(I),{value:1,label:"进行中"}),c(f(I),{value:2,label:"下线"})]),_:1},8,["modelValue"])]),_:1})]),_:1}),c(f(C),{span:6},{default:n(()=>[c(f(w),{label:"Boss活动",prop:"is_boss"},{default:n(()=>[c(f(k),{modelValue:r.value.is_boss,"onUpdate:modelValue":l[3]||(l[3]=e=>r.value.is_boss=e),placeholder:"请选择",clearable:""},{default:n(()=>[c(f(I),{value:1,label:"是"}),c(f(I),{value:0,label:"否"})]),_:1},8,["modelValue"])]),_:1})]),_:1}),c(f(C),{span:4},{default:n(()=>[c(f(w),{"label-width":"0"},{default:n(()=>[c(f(J),null,{default:n(()=>[y((m(),d(f(U),{type:"primary",onClick:G},{default:n(()=>[c(f(h),{class:"mr-1"},{default:n(()=>[c(f(V))]),_:1}),l[4]||(l[4]=x(" 搜索 ",-1))]),_:1})),[[t]]),y((m(),d(f(U),{onClick:S},{default:n(()=>[...l[5]||(l[5]=[x("重置",-1)])]),_:1})),[[t]])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,["model"])]),_:1})}}}),[["__scopeId","data-v-82eaff85"]]);export{F as default};

View File

@ -0,0 +1 @@
var e=Object.defineProperty,a=Object.getOwnPropertySymbols,l=Object.prototype.hasOwnProperty,t=Object.prototype.propertyIsEnumerable,o=(a,l,t)=>l in a?e(a,l,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[l]=t,s=(e,s)=>{for(var r in s||(s={}))l.call(s,r)&&o(e,r,s[r]);if(a)for(var r of a(s))t.call(s,r)&&o(e,r,s[r]);return e};import{d as r,a as i,w as p,E as u,y as d,f as m,z as n,p as c,u as f,B as j,e as v,F as b,G as _,J as y,l as x,ab as h,b2 as V}from"./index-CZ0Lvzl5.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{a as g}from"./adminActivities-BFodRb8S.js";import{E,a as w}from"./index-DhBIlDpg.js";import{E as O}from"./index-D11sKPUb.js";import{E as C}from"./index-DR7AB6IM.js";import{E as I}from"./index-6-f3xsy2.js";import{E as J,a as P}from"./index-pVAXVlCV.js";import{E as k}from"./index-BJHoISGQ.js";import{E as U}from"./index-CWBrZtwn.js";import{E as F}from"./index-D9lGuZWz.js";import{_ as G}from"./_plugin-vue_export-helper-BCo6x5W8.js";import"./use-form-common-props-U6f9D53_.js";import"./index-DH_vX4BK.js";import"./index-K2zzami3.js";import"./index-BW22oPP6.js";import"./use-form-item-BsnpemL_.js";import"./_initCloneObject-DfOnBHdn.js";import"./index-C6fEXl-e.js";import"./index-BierC7rd.js";import"./index-BQ-mpgoy.js";import"./token-DWNpOE8r.js";import"./scroll-bFiZhqzI.js";import"./debounce-BWBxuUbE.js";import"./_baseIteratee-iUx42eT-.js";import"./index-ZgXgJNHL.js";import"./vnode-C4RX5enz.js";import"./index-MV2EqMi7.js";const S=G(r({__name:"activity-search",props:{modelValue:{}},emits:["update:modelValue","search","reset"],setup(e,{emit:a}){const l=e,t=a,o=i([]),r=i(s({},l.modelValue));p(()=>l.modelValue,(e,a)=>{JSON.stringify(e)!==JSON.stringify(a)&&(r.value=s({},e))},{deep:!0});let G=null;p(r,e=>{G&&clearTimeout(G),G=setTimeout(()=>{t("update:modelValue",s({},e))},100)},{deep:!0});const S=e=>{return a=this,l=null,t=function*(){if(e&&0===o.value.length)try{const e=yield g();o.value=e.list||[]}catch(a){}},new Promise((e,o)=>{var s=e=>{try{i(t.next(e))}catch(a){o(a)}},r=e=>{try{i(t.throw(e))}catch(a){o(a)}},i=a=>a.done?e(a.value):Promise.resolve(a.value).then(s,r);i((t=t.apply(a,l)).next())});var a,l,t},z=()=>{t("search",r.value)},A=()=>{r.value={name:void 0,category_id:void 0,status:void 0,is_boss:void 0},t("reset")};return(a,l)=>{const t=u("ripple");return m(),d(f(F),{class:"search-card",shadow:"never"},{default:n(()=>[c(f(E),{ref:"formRef",model:e.modelValue,"label-width":"80px"},{default:n(()=>[c(f(O),{gutter:20},{default:n(()=>[c(f(C),{span:6},{default:n(()=>[c(f(w),{label:"活动名称",prop:"name"},{default:n(()=>[c(f(I),{modelValue:r.value.name,"onUpdate:modelValue":l[0]||(l[0]=e=>r.value.name=e),placeholder:"请输入活动名称",clearable:"",onKeyup:j(z,["enter"])},null,8,["modelValue"])]),_:1})]),_:1}),c(f(C),{span:6},{default:n(()=>[c(f(w),{label:"分类",prop:"category_id"},{default:n(()=>[c(f(J),{modelValue:r.value.category_id,"onUpdate:modelValue":l[1]||(l[1]=e=>r.value.category_id=e),placeholder:"请选择分类",clearable:"",onVisibleChange:S},{default:n(()=>[(m(!0),v(b,null,_(o.value,e=>(m(),d(f(P),{key:e.id,label:e.name,value:e.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1})]),_:1}),c(f(C),{span:6},{default:n(()=>[c(f(w),{label:"状态",prop:"status"},{default:n(()=>[c(f(J),{modelValue:r.value.status,"onUpdate:modelValue":l[2]||(l[2]=e=>r.value.status=e),placeholder:"请选择状态",clearable:""},{default:n(()=>[c(f(P),{value:1,label:"进行中"}),c(f(P),{value:2,label:"下线"})]),_:1},8,["modelValue"])]),_:1})]),_:1}),c(f(C),{span:6},{default:n(()=>[c(f(w),{label:"Boss活动",prop:"is_boss"},{default:n(()=>[c(f(J),{modelValue:r.value.is_boss,"onUpdate:modelValue":l[3]||(l[3]=e=>r.value.is_boss=e),placeholder:"请选择",clearable:""},{default:n(()=>[c(f(P),{value:1,label:"是"}),c(f(P),{value:0,label:"否"})]),_:1},8,["modelValue"])]),_:1})]),_:1}),c(f(C),{span:4},{default:n(()=>[c(f(w),{"label-width":"0"},{default:n(()=>[c(f(k),null,{default:n(()=>[y((m(),d(f(U),{type:"primary",onClick:z},{default:n(()=>[c(f(h),{class:"mr-1"},{default:n(()=>[c(f(V))]),_:1}),l[4]||(l[4]=x(" 搜索 ",-1))]),_:1})),[[t]]),y((m(),d(f(U),{onClick:A},{default:n(()=>[...l[5]||(l[5]=[x("重置",-1)])]),_:1})),[[t]])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,["model"])]),_:1})}}}),[["__scopeId","data-v-82eaff85"]]);export{S as default};

View File

@ -1 +0,0 @@
import{_ as o}from"./add-coupon-dialog.vue_vue_type_script_setup_true_lang-C0dOKfzY.js";import"./index-DBHnxsy6.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./coupons-BX1h_qVI.js";import"./index-zIv9y_XZ.js";import"./use-form-common-props-BOfz9xGR.js";import"./index-DZO7eApA.js";import"./index-MOpuiu9Z.js";import"./index-nZra831X.js";import"./use-form-item-ByasanrX.js";import"./_initCloneObject-7oWMW-Ot.js";import"./index-CHZ9Ls9_.js";import"./index-B99ckkYy.js";import"./index-sqhzrW2O.js";import"./index-D2YpA_om.js";import"./token-DWNpOE8r.js";import"./scroll-Cceui3yC.js";import"./debounce-CkazOn_9.js";import"./_baseIteratee-DRiXPtOg.js";import"./index-BC2pRl3S.js";import"./vnode-CqxKQBn0.js";import"./index-r0EsCkBw.js";import"./index-DfWQjCuY.js";import"./index-CtUPMuT5.js";import"./index-DeCbFeva.js";import"./use-dialog-yhiLZsn9.js";import"./index-DvlZWusB.js";import"./refs-Cw5r5QN8.js";export{o as default};

View File

@ -0,0 +1 @@
import{_ as o}from"./add-coupon-dialog.vue_vue_type_script_setup_true_lang-CYcx2nJS.js";import"./index-CZ0Lvzl5.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./coupons-B3KVevR-.js";import"./index-DhBIlDpg.js";import"./use-form-common-props-U6f9D53_.js";import"./index-DH_vX4BK.js";import"./index-K2zzami3.js";import"./index-BW22oPP6.js";import"./use-form-item-BsnpemL_.js";import"./_initCloneObject-DfOnBHdn.js";import"./index-pVAXVlCV.js";import"./index-C6fEXl-e.js";import"./index-BierC7rd.js";import"./index-BQ-mpgoy.js";import"./token-DWNpOE8r.js";import"./scroll-bFiZhqzI.js";import"./debounce-BWBxuUbE.js";import"./_baseIteratee-iUx42eT-.js";import"./index-ZgXgJNHL.js";import"./vnode-C4RX5enz.js";import"./index-CWBrZtwn.js";import"./index-MV2EqMi7.js";import"./index-DO8sDDAh.js";import"./index-CgoUqbdT.js";import"./use-dialog-BDM4AbF-.js";import"./index-DaNWXg3-.js";import"./refs-Cw5r5QN8.js";export{o as default};

View File

@ -1 +1 @@
var e=(e,a,l)=>new Promise((o,t)=>{var i=e=>{try{r(l.next(e))}catch(a){t(a)}},s=e=>{try{r(l.throw(e))}catch(a){t(a)}},r=e=>e.done?o(e.value):Promise.resolve(e.value).then(i,s);r((l=l.apply(e,a)).next())});import{d as a,a as l,r as o,w as t,o as i,y as s,f as r,z as d,p as u,u as n,e as p,F as m,G as c,l as v}from"./index-DBHnxsy6.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{c as f}from"./coupons-BX1h_qVI.js";import{E as y,a as b}from"./index-zIv9y_XZ.js";import{E as j,a as g}from"./index-CHZ9Ls9_.js";import{E as h}from"./index-r0EsCkBw.js";import{E as _}from"./index-CtUPMuT5.js";const x=a({__name:"add-coupon-dialog",props:{visible:{type:Boolean}},emits:["update:visible","submit"],setup(a,{emit:x}){const I=a,w=x,k=l(),V=l(!1),C=l([]),E=o({couponId:null});t(()=>I.visible,e=>{});const A={couponId:[{required:!0,message:"请选择优惠券",trigger:"change"}]},z=()=>e(this,null,function*(){var e;try{yield null==(e=k.value)?void 0:e.validate(),V.value=!0,w("submit",{coupon_id:E.couponId})}catch(a){}finally{V.value=!1}}),B=()=>{w("update:visible",!1)},P=()=>{var e;E.couponId=null,null==(e=k.value)||e.clearValidate()};return i(()=>e(this,null,function*(){try{const e=yield f.getList({status:1,page:1,page_size:100});C.value=Array.isArray(e.list)?e.list.map(e=>({id:e.id,name:e.name})):[]}catch(e){C.value=[]}})),(e,l)=>(r(),s(n(_),{"model-value":a.visible,title:"发放优惠券",width:"400px","close-on-click-modal":!1,"onUpdate:modelValue":l[1]||(l[1]=e=>w("update:visible",e)),onClosed:P},{footer:d(()=>[u(n(h),{onClick:B},{default:d(()=>[...l[2]||(l[2]=[v("取消",-1)])]),_:1}),u(n(h),{type:"primary",loading:V.value,onClick:z},{default:d(()=>[...l[3]||(l[3]=[v(" 确定 ",-1)])]),_:1},8,["loading"])]),default:d(()=>[u(n(y),{ref_key:"formRef",ref:k,model:E,rules:A,"label-width":"80px"},{default:d(()=>[u(n(b),{label:"优惠券",prop:"couponId"},{default:d(()=>[u(n(j),{modelValue:E.couponId,"onUpdate:modelValue":l[0]||(l[0]=e=>E.couponId=e),placeholder:"请选择优惠券",filterable:"",style:{width:"100%"}},{default:d(()=>[(r(!0),p(m,null,c(C.value,e=>(r(),s(n(g),{key:e.id,label:`${e.name}ID: ${e.id}`,value:e.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["model-value"]))}});export{x as _};
var e=(e,a,l)=>new Promise((o,t)=>{var i=e=>{try{r(l.next(e))}catch(a){t(a)}},s=e=>{try{r(l.throw(e))}catch(a){t(a)}},r=e=>e.done?o(e.value):Promise.resolve(e.value).then(i,s);r((l=l.apply(e,a)).next())});import{d as a,a as l,r as o,w as t,o as i,y as s,f as r,z as d,p as u,u as n,e as p,F as m,G as c,l as v}from"./index-CZ0Lvzl5.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{c as f}from"./coupons-B3KVevR-.js";import{E as y,a as b}from"./index-DhBIlDpg.js";import{E as j,a as h}from"./index-pVAXVlCV.js";import{E as g}from"./index-CWBrZtwn.js";import{E as _}from"./index-DO8sDDAh.js";const x=a({__name:"add-coupon-dialog",props:{visible:{type:Boolean}},emits:["update:visible","submit"],setup(a,{emit:x}){const I=a,w=x,k=l(),E=l(!1),V=l([]),C=o({couponId:null});t(()=>I.visible,e=>{});const $={couponId:[{required:!0,message:"请选择优惠券",trigger:"change"}]},z=()=>e(this,null,function*(){var e;try{yield null==(e=k.value)?void 0:e.validate(),E.value=!0,w("submit",{coupon_id:C.couponId})}catch(a){}finally{E.value=!1}}),A=()=>{w("update:visible",!1)},D=()=>{var e;C.couponId=null,null==(e=k.value)||e.clearValidate()};return i(()=>e(this,null,function*(){try{const e=yield f.getList({status:1,page:1,page_size:100});V.value=Array.isArray(e.list)?e.list.map(e=>({id:e.id,name:e.name})):[]}catch(e){V.value=[]}})),(e,l)=>(r(),s(n(_),{"model-value":a.visible,title:"发放优惠券",width:"400px","close-on-click-modal":!1,"onUpdate:modelValue":l[1]||(l[1]=e=>w("update:visible",e)),onClosed:D},{footer:d(()=>[u(n(g),{onClick:A},{default:d(()=>[...l[2]||(l[2]=[v("取消",-1)])]),_:1}),u(n(g),{type:"primary",loading:E.value,onClick:z},{default:d(()=>[...l[3]||(l[3]=[v(" 确定 ",-1)])]),_:1},8,["loading"])]),default:d(()=>[u(n(y),{ref_key:"formRef",ref:k,model:C,rules:$,"label-width":"80px"},{default:d(()=>[u(n(b),{label:"优惠券",prop:"couponId"},{default:d(()=>[u(n(j),{modelValue:C.couponId,"onUpdate:modelValue":l[0]||(l[0]=e=>C.couponId=e),placeholder:"请选择优惠券",filterable:"",style:{width:"100%"}},{default:d(()=>[(r(!0),p(m,null,c(V.value,e=>(r(),s(n(h),{key:e.id,label:`${e.name}ID: ${e.id}`,value:e.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["model-value"]))}});export{x as _};

View File

@ -1 +0,0 @@
import{_ as i}from"./add-item-card-dialog.vue_vue_type_script_setup_true_lang-r-95eO1C.js";import"./index-DBHnxsy6.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./itemCards-BHUYJ5ez.js";import"./index-zIv9y_XZ.js";import"./use-form-common-props-BOfz9xGR.js";import"./index-DZO7eApA.js";import"./index-MOpuiu9Z.js";import"./index-nZra831X.js";import"./use-form-item-ByasanrX.js";import"./_initCloneObject-7oWMW-Ot.js";import"./index-CHZ9Ls9_.js";import"./index-B99ckkYy.js";import"./index-sqhzrW2O.js";import"./index-D2YpA_om.js";import"./token-DWNpOE8r.js";import"./scroll-Cceui3yC.js";import"./debounce-CkazOn_9.js";import"./_baseIteratee-DRiXPtOg.js";import"./index-BC2pRl3S.js";import"./vnode-CqxKQBn0.js";import"./index-B4jq9Ja2.js";import"./index-qSQlj0RO.js";import"./index-CuWUnlSZ.js";import"./index-r0EsCkBw.js";import"./index-DfWQjCuY.js";import"./index-CtUPMuT5.js";import"./index-DeCbFeva.js";import"./use-dialog-yhiLZsn9.js";import"./index-DvlZWusB.js";import"./refs-Cw5r5QN8.js";export{i as default};

View File

@ -0,0 +1 @@
import{_ as i}from"./add-item-card-dialog.vue_vue_type_script_setup_true_lang-S5Y5BQPs.js";import"./index-CZ0Lvzl5.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./itemCards-QB81Evem.js";import"./index-DhBIlDpg.js";import"./use-form-common-props-U6f9D53_.js";import"./index-DH_vX4BK.js";import"./index-K2zzami3.js";import"./index-BW22oPP6.js";import"./use-form-item-BsnpemL_.js";import"./_initCloneObject-DfOnBHdn.js";import"./index-pVAXVlCV.js";import"./index-C6fEXl-e.js";import"./index-BierC7rd.js";import"./index-BQ-mpgoy.js";import"./token-DWNpOE8r.js";import"./scroll-bFiZhqzI.js";import"./debounce-BWBxuUbE.js";import"./_baseIteratee-iUx42eT-.js";import"./index-ZgXgJNHL.js";import"./vnode-C4RX5enz.js";import"./index-BiRLqYIK.js";import"./index-6-f3xsy2.js";import"./index-BlgPu7T-.js";import"./index-CWBrZtwn.js";import"./index-MV2EqMi7.js";import"./index-DO8sDDAh.js";import"./index-CgoUqbdT.js";import"./use-dialog-BDM4AbF-.js";import"./index-DaNWXg3-.js";import"./refs-Cw5r5QN8.js";export{i as default};

View File

@ -0,0 +1 @@
var e=(e,a,l)=>new Promise((t,i)=>{var r=e=>{try{s(l.next(e))}catch(a){i(a)}},o=e=>{try{s(l.throw(e))}catch(a){i(a)}},s=e=>e.done?t(e.value):Promise.resolve(e.value).then(r,o);s((l=l.apply(e,a)).next())});import{d as a,a as l,r as t,w as i,o as r,y as o,f as s,z as d,p as u,u as n,e as m,F as p,G as c,l as v}from"./index-CZ0Lvzl5.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{i as y}from"./itemCards-QB81Evem.js";import{E as f,a as j}from"./index-DhBIlDpg.js";import{E as b,a as g}from"./index-pVAXVlCV.js";import{E as h}from"./index-BiRLqYIK.js";import{E as _}from"./index-CWBrZtwn.js";import{E as x}from"./index-DO8sDDAh.js";const q=a({__name:"add-item-card-dialog",props:{visible:{type:Boolean}},emits:["update:visible","submit"],setup(a,{emit:q}){const I=a,V=q,w=l(),E=l(!1),k=l([]),C=t({cardId:null,quantity:1});i(()=>I.visible,e=>{});const z={cardId:[{required:!0,message:"请选择道具卡",trigger:"change"}],quantity:[{required:!0,message:"请输入数量",trigger:"change"}]},U=()=>e(this,null,function*(){var e;try{yield null==(e=w.value)?void 0:e.validate(),E.value=!0,V("submit",{card_id:C.cardId,quantity:C.quantity})}catch(a){}finally{E.value=!1}}),$=()=>{V("update:visible",!1)},A=()=>{var e;C.cardId=null,C.quantity=1,null==(e=w.value)||e.clearValidate()};return r(()=>e(this,null,function*(){try{const e=yield y.getList({page:1,page_size:100});k.value=Array.isArray(e.list)?e.list.map(e=>({id:e.id,name:e.name})):[]}catch(e){k.value=[]}})),(e,l)=>(s(),o(n(x),{"model-value":a.visible,title:"分配道具卡",width:"420px","close-on-click-modal":!1,"onUpdate:modelValue":l[2]||(l[2]=e=>V("update:visible",e)),onClosed:A},{footer:d(()=>[u(n(_),{onClick:$},{default:d(()=>[...l[3]||(l[3]=[v("取消",-1)])]),_:1}),u(n(_),{type:"primary",loading:E.value,onClick:U},{default:d(()=>[...l[4]||(l[4]=[v("确定",-1)])]),_:1},8,["loading"])]),default:d(()=>[u(n(f),{ref_key:"formRef",ref:w,model:C,rules:z,"label-width":"80px"},{default:d(()=>[u(n(j),{label:"道具卡",prop:"cardId"},{default:d(()=>[u(n(b),{modelValue:C.cardId,"onUpdate:modelValue":l[0]||(l[0]=e=>C.cardId=e),placeholder:"请选择道具卡",filterable:"",style:{width:"100%"}},{default:d(()=>[(s(!0),m(p,null,c(k.value,e=>(s(),o(n(g),{key:e.id,label:`${e.name}ID: ${e.id}`,value:e.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),u(n(j),{label:"数量",prop:"quantity"},{default:d(()=>[u(n(h),{modelValue:C.quantity,"onUpdate:modelValue":l[1]||(l[1]=e=>C.quantity=e),min:1,max:100},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["model-value"]))}});export{q as _};

View File

@ -1 +0,0 @@
var e=(e,a,l)=>new Promise((t,i)=>{var r=e=>{try{s(l.next(e))}catch(a){i(a)}},o=e=>{try{s(l.throw(e))}catch(a){i(a)}},s=e=>e.done?t(e.value):Promise.resolve(e.value).then(r,o);s((l=l.apply(e,a)).next())});import{d as a,a as l,r as t,w as i,o as r,y as o,f as s,z as d,p as u,u as n,e as m,F as p,G as c,l as v}from"./index-DBHnxsy6.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{i as y}from"./itemCards-BHUYJ5ez.js";import{E as f,a as b}from"./index-zIv9y_XZ.js";import{E as g,a as j}from"./index-CHZ9Ls9_.js";import{E as h}from"./index-B4jq9Ja2.js";import{E as _}from"./index-r0EsCkBw.js";import{E as x}from"./index-CtUPMuT5.js";const q=a({__name:"add-item-card-dialog",props:{visible:{type:Boolean}},emits:["update:visible","submit"],setup(a,{emit:q}){const I=a,V=q,w=l(),k=l(!1),C=l([]),E=t({cardId:null,quantity:1});i(()=>I.visible,e=>{});const A={cardId:[{required:!0,message:"请选择道具卡",trigger:"change"}],quantity:[{required:!0,message:"请输入数量",trigger:"change"}]},U=()=>e(this,null,function*(){var e;try{yield null==(e=w.value)?void 0:e.validate(),k.value=!0,V("submit",{card_id:E.cardId,quantity:E.quantity})}catch(a){}finally{k.value=!1}}),$=()=>{V("update:visible",!1)},z=()=>{var e;E.cardId=null,E.quantity=1,null==(e=w.value)||e.clearValidate()};return r(()=>e(this,null,function*(){try{const e=yield y.getList({page:1,page_size:100});C.value=Array.isArray(e.list)?e.list.map(e=>({id:e.id,name:e.name})):[]}catch(e){C.value=[]}})),(e,l)=>(s(),o(n(x),{"model-value":a.visible,title:"分配道具卡",width:"420px","close-on-click-modal":!1,"onUpdate:modelValue":l[2]||(l[2]=e=>V("update:visible",e)),onClosed:z},{footer:d(()=>[u(n(_),{onClick:$},{default:d(()=>[...l[3]||(l[3]=[v("取消",-1)])]),_:1}),u(n(_),{type:"primary",loading:k.value,onClick:U},{default:d(()=>[...l[4]||(l[4]=[v("确定",-1)])]),_:1},8,["loading"])]),default:d(()=>[u(n(f),{ref_key:"formRef",ref:w,model:E,rules:A,"label-width":"80px"},{default:d(()=>[u(n(b),{label:"道具卡",prop:"cardId"},{default:d(()=>[u(n(g),{modelValue:E.cardId,"onUpdate:modelValue":l[0]||(l[0]=e=>E.cardId=e),placeholder:"请选择道具卡",filterable:"",style:{width:"100%"}},{default:d(()=>[(s(!0),m(p,null,c(C.value,e=>(s(),o(n(j),{key:e.id,label:`${e.name}ID: ${e.id}`,value:e.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),u(n(b),{label:"数量",prop:"quantity"},{default:d(()=>[u(n(h),{modelValue:E.quantity,"onUpdate:modelValue":l[1]||(l[1]=e=>E.quantity=e),min:1,max:100},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["model-value"]))}});export{q as _};

View File

@ -1 +0,0 @@
import{_ as i}from"./add-points-dialog.vue_vue_type_script_setup_true_lang-B99Uz4mM.js";import"./index-DBHnxsy6.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./index-zIv9y_XZ.js";import"./use-form-common-props-BOfz9xGR.js";import"./index-DZO7eApA.js";import"./index-MOpuiu9Z.js";import"./index-nZra831X.js";import"./use-form-item-ByasanrX.js";import"./_initCloneObject-7oWMW-Ot.js";import"./index-B4jq9Ja2.js";import"./index-qSQlj0RO.js";import"./index-CuWUnlSZ.js";import"./index-CHZ9Ls9_.js";import"./index-B99ckkYy.js";import"./index-sqhzrW2O.js";import"./index-D2YpA_om.js";import"./token-DWNpOE8r.js";import"./scroll-Cceui3yC.js";import"./debounce-CkazOn_9.js";import"./_baseIteratee-DRiXPtOg.js";import"./index-BC2pRl3S.js";import"./vnode-CqxKQBn0.js";import"./index-r0EsCkBw.js";import"./index-DfWQjCuY.js";import"./index-CtUPMuT5.js";import"./index-DeCbFeva.js";import"./use-dialog-yhiLZsn9.js";import"./index-DvlZWusB.js";import"./refs-Cw5r5QN8.js";export{i as default};

View File

@ -0,0 +1 @@
import{_ as i}from"./add-points-dialog.vue_vue_type_script_setup_true_lang-CDG3qGoH.js";import"./index-CZ0Lvzl5.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./index-DhBIlDpg.js";import"./use-form-common-props-U6f9D53_.js";import"./index-DH_vX4BK.js";import"./index-K2zzami3.js";import"./index-BW22oPP6.js";import"./use-form-item-BsnpemL_.js";import"./_initCloneObject-DfOnBHdn.js";import"./index-BiRLqYIK.js";import"./index-6-f3xsy2.js";import"./index-BlgPu7T-.js";import"./index-pVAXVlCV.js";import"./index-C6fEXl-e.js";import"./index-BierC7rd.js";import"./index-BQ-mpgoy.js";import"./token-DWNpOE8r.js";import"./scroll-bFiZhqzI.js";import"./debounce-BWBxuUbE.js";import"./_baseIteratee-iUx42eT-.js";import"./index-ZgXgJNHL.js";import"./vnode-C4RX5enz.js";import"./index-CWBrZtwn.js";import"./index-MV2EqMi7.js";import"./index-DO8sDDAh.js";import"./index-CgoUqbdT.js";import"./use-dialog-BDM4AbF-.js";import"./index-DaNWXg3-.js";import"./refs-Cw5r5QN8.js";export{i as default};

View File

@ -1 +0,0 @@
import{d as e,a,r as l,w as i,y as r,f as o,z as t,p as d,u as s,l as n}from"./index-DBHnxsy6.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{E as m,a as p}from"./index-zIv9y_XZ.js";import{E as u}from"./index-B4jq9Ja2.js";import{E as v,a as c}from"./index-CHZ9Ls9_.js";import{E as f}from"./index-qSQlj0RO.js";import{E as b}from"./index-r0EsCkBw.js";import{E as k}from"./index-CtUPMuT5.js";const _=e({__name:"add-points-dialog",props:{visible:{type:Boolean}},emits:["update:visible","submit"],setup(e,{emit:_}){const j=e,y=_,g=a(),h=a(!1),x=l({points:null,kind:"admin_add",remark:""});i(()=>j.visible,e=>{});const V={points:[{required:!0,message:"请输入积分数量",trigger:"blur"}],kind:[{required:!0,message:"请选择积分类型",trigger:"change"}]},w=()=>{return e=this,a=null,l=function*(){var e;try{yield null==(e=g.value)?void 0:e.validate(),h.value=!0,y("submit",{points:x.points,kind:x.kind,remark:x.remark})}catch(a){}finally{h.value=!1}},new Promise((i,r)=>{var o=e=>{try{d(l.next(e))}catch(a){r(a)}},t=e=>{try{d(l.throw(e))}catch(a){r(a)}},d=e=>e.done?i(e.value):Promise.resolve(e.value).then(o,t);d((l=l.apply(e,a)).next())});var e,a,l},E=()=>{y("update:visible",!1)},C=()=>{var e;x.points=null,x.kind="admin_add",x.remark="",null==(e=g.value)||e.clearValidate()};return(a,l)=>(o(),r(s(k),{"model-value":e.visible,title:"增加积分",width:"400px","close-on-click-modal":!1,"onUpdate:modelValue":l[3]||(l[3]=e=>y("update:visible",e)),onClosed:C},{footer:t(()=>[d(s(b),{onClick:E},{default:t(()=>[...l[4]||(l[4]=[n("取消",-1)])]),_:1}),d(s(b),{type:"primary",loading:h.value,onClick:w},{default:t(()=>[...l[5]||(l[5]=[n(" 确定 ",-1)])]),_:1},8,["loading"])]),default:t(()=>[d(s(m),{ref_key:"formRef",ref:g,model:x,rules:V,"label-width":"80px"},{default:t(()=>[d(s(p),{label:"积分数量",prop:"points"},{default:t(()=>[d(s(u),{modelValue:x.points,"onUpdate:modelValue":l[0]||(l[0]=e=>x.points=e),placeholder:"请输入积分数量",min:1,precision:0,style:{width:"100%"}},null,8,["modelValue"])]),_:1}),d(s(p),{label:"积分类型",prop:"kind"},{default:t(()=>[d(s(v),{modelValue:x.kind,"onUpdate:modelValue":l[1]||(l[1]=e=>x.kind=e),placeholder:"请选择积分类型",style:{width:"100%"}},{default:t(()=>[d(s(c),{label:"管理员增加",value:"admin_add"}),d(s(c),{label:"活动奖励",value:"activity_reward"}),d(s(c),{label:"签到奖励",value:"sign_reward"}),d(s(c),{label:"消费返还",value:"consume_return"})]),_:1},8,["modelValue"])]),_:1}),d(s(p),{label:"备注",prop:"remark"},{default:t(()=>[d(s(f),{modelValue:x.remark,"onUpdate:modelValue":l[2]||(l[2]=e=>x.remark=e),type:"textarea",placeholder:"请输入备注",rows:3},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["model-value"]))}});export{_};

View File

@ -0,0 +1 @@
import{d as e,a,r as l,w as i,y as o,f as r,z as t,p as s,u as d,l as n}from"./index-CZ0Lvzl5.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{E as m,a as p}from"./index-DhBIlDpg.js";import{E as u}from"./index-BiRLqYIK.js";import{E as v,a as c}from"./index-pVAXVlCV.js";import{E as f}from"./index-6-f3xsy2.js";import{E as b}from"./index-CWBrZtwn.js";import{E as k}from"./index-DO8sDDAh.js";const j=e({__name:"add-points-dialog",props:{visible:{type:Boolean}},emits:["update:visible","submit"],setup(e,{emit:j}){const _=e,y=j,h=a(),g=a(!1),x=l({points:null,kind:"admin_add",remark:""});i(()=>_.visible,e=>{});const V={points:[{required:!0,message:"请输入积分数量",trigger:"blur"}],kind:[{required:!0,message:"请选择积分类型",trigger:"change"}]},w=()=>{return e=this,a=null,l=function*(){var e;try{yield null==(e=h.value)?void 0:e.validate(),g.value=!0,y("submit",{points:x.points,kind:x.kind,remark:x.remark})}catch(a){}finally{g.value=!1}},new Promise((i,o)=>{var r=e=>{try{s(l.next(e))}catch(a){o(a)}},t=e=>{try{s(l.throw(e))}catch(a){o(a)}},s=e=>e.done?i(e.value):Promise.resolve(e.value).then(r,t);s((l=l.apply(e,a)).next())});var e,a,l},E=()=>{y("update:visible",!1)},U=()=>{var e;x.points=null,x.kind="admin_add",x.remark="",null==(e=h.value)||e.clearValidate()};return(a,l)=>(r(),o(d(k),{"model-value":e.visible,title:"增加积分",width:"400px","close-on-click-modal":!1,"onUpdate:modelValue":l[3]||(l[3]=e=>y("update:visible",e)),onClosed:U},{footer:t(()=>[s(d(b),{onClick:E},{default:t(()=>[...l[4]||(l[4]=[n("取消",-1)])]),_:1}),s(d(b),{type:"primary",loading:g.value,onClick:w},{default:t(()=>[...l[5]||(l[5]=[n(" 确定 ",-1)])]),_:1},8,["loading"])]),default:t(()=>[s(d(m),{ref_key:"formRef",ref:h,model:x,rules:V,"label-width":"80px"},{default:t(()=>[s(d(p),{label:"积分数量",prop:"points"},{default:t(()=>[s(d(u),{modelValue:x.points,"onUpdate:modelValue":l[0]||(l[0]=e=>x.points=e),placeholder:"请输入积分数量",min:1,precision:0,style:{width:"100%"}},null,8,["modelValue"])]),_:1}),s(d(p),{label:"积分类型",prop:"kind"},{default:t(()=>[s(d(v),{modelValue:x.kind,"onUpdate:modelValue":l[1]||(l[1]=e=>x.kind=e),placeholder:"请选择积分类型",style:{width:"100%"}},{default:t(()=>[s(d(c),{label:"管理员增加",value:"admin_add"}),s(d(c),{label:"活动奖励",value:"activity_reward"}),s(d(c),{label:"签到奖励",value:"sign_reward"}),s(d(c),{label:"消费返还",value:"consume_return"})]),_:1},8,["modelValue"])]),_:1}),s(d(p),{label:"备注",prop:"remark"},{default:t(()=>[s(d(f),{modelValue:x.remark,"onUpdate:modelValue":l[2]||(l[2]=e=>x.remark=e),type:"textarea",placeholder:"请输入备注",rows:3},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["model-value"]))}});export{j as _};

View File

@ -1 +1 @@
import{b4 as i}from"./index-DBHnxsy6.js";function s(s){return i.post({url:"admin/activities",params:s})}function t(s,t){return i.put({url:`admin/activities/${s}`,params:t})}function r(s){return i.del({url:`admin/activities/${s}`})}function a(s){return i.get({url:`admin/activities/${s}`})}function n(s,t=1,r=20){return i.get({url:`admin/activities/${s}/issues`,params:{page:t,page_size:r}})}function e(s,t){return i.post({url:`admin/activities/${s}/issues`,params:t})}function u(s,t,r){return i.put({url:`admin/activities/${s}/issues/${t}`,params:r})}function c(s,t){return i.del({url:`admin/activities/${s}/issues/${t}`})}function m(s,t){return i.get({url:`admin/activities/${s}/issues/${t}/rewards`})}function o(s,t,r){return i.post({url:`admin/activities/${s}/issues/${t}/rewards`,params:{rewards:r}})}function d(s,t,r,a){return i.put({url:`admin/activities/${s}/issues/${t}/rewards/${r}`,params:a})}function $(s,t,r){return i.del({url:`admin/activities/${s}/issues/${t}/rewards/${r}`})}function l(){return i.get({url:"admin/activity_categories"})}function p(s,t){return i.post({url:`admin/activities/${s}/issues/${t}/commit_random`})}function f(s,t){return i.get({url:`admin/activities/${s}/issues/${t}/commit_random`,showErrorMessage:!1})}function v(s,t){return i.get({url:`admin/activities/${s}/issues/${t}/commit_random/history`})}function g(s,t,r){return i.post({url:`admin/activities/${s}/issues/${t}/simulate_draw`,params:r,timeout:6e4})}function w(s,t,r){return i.post({url:`admin/activities/${s}/issues/${t}/batch_draw`,params:r,timeout:6e4})}function _(s,t,r){return i.post({url:`admin/activities/${s}/issues/${t}/verify_draw`,params:r})}function h(s){return i.get({url:`admin/draw_receipts/${s}`})}function b(s){return i.get({url:`admin/draw_receipts/log/${s}`})}function y(s){return i.get({url:"admin/users",params:s})}export{l as a,t as b,e as c,c as d,s as e,r as f,a as g,o as h,f as i,v as j,p as k,n as l,d as m,m as n,$ as o,y as p,w as q,h as r,g as s,b as t,u,_ as v};
import{b9 as i}from"./index-CZ0Lvzl5.js";function s(s){return i.post({url:"admin/activities",params:s})}function t(s,t){return i.put({url:`admin/activities/${s}`,params:t})}function r(s){return i.del({url:`admin/activities/${s}`})}function a(s){return i.get({url:`admin/activities/${s}`})}function n(s,t=1,r=20){return i.get({url:`admin/activities/${s}/issues`,params:{page:t,page_size:r}})}function e(s,t){return i.post({url:`admin/activities/${s}/issues`,params:t})}function u(s,t,r){return i.put({url:`admin/activities/${s}/issues/${t}`,params:r})}function c(s,t){return i.del({url:`admin/activities/${s}/issues/${t}`})}function m(s,t){return i.get({url:`admin/activities/${s}/issues/${t}/rewards`})}function o(s,t,r){return i.post({url:`admin/activities/${s}/issues/${t}/rewards`,params:{rewards:r}})}function d(s,t,r,a){return i.put({url:`admin/activities/${s}/issues/${t}/rewards/${r}`,params:a})}function $(s,t,r){return i.del({url:`admin/activities/${s}/issues/${t}/rewards/${r}`})}function l(){return i.get({url:"admin/activity_categories"})}function p(s,t){return i.post({url:`admin/activities/${s}/issues/${t}/commit_random`})}function f(s,t){return i.get({url:`admin/activities/${s}/issues/${t}/commit_random`,showErrorMessage:!1})}function v(s,t){return i.get({url:`admin/activities/${s}/issues/${t}/commit_random/history`})}function g(s,t,r){return i.post({url:`admin/activities/${s}/issues/${t}/simulate_draw`,params:r,timeout:6e4})}function w(s,t,r){return i.post({url:`admin/activities/${s}/issues/${t}/batch_draw`,params:r,timeout:6e4})}function _(s,t,r){return i.post({url:`admin/activities/${s}/issues/${t}/verify_draw`,params:r})}function h(s){return i.get({url:`admin/draw_receipts/${s}`})}function b(s){return i.get({url:`admin/draw_receipts/log/${s}`})}function y(s){return i.get({url:"admin/users",params:s})}export{l as a,t as b,e as c,c as d,s as e,r as f,a as g,o as h,f as i,v as j,p as k,n as l,d as m,m as n,$ as o,y as p,w as q,h as r,g as s,b as t,u,_ as v};

View File

@ -0,0 +1 @@
import{_ as i}from"./assign-title-dialog.vue_vue_type_script_setup_true_lang-lCpMfr54.js";import"./index-CZ0Lvzl5.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./titles-BnzYQ5A4.js";import"./index-DhBIlDpg.js";import"./use-form-common-props-U6f9D53_.js";import"./index-DH_vX4BK.js";import"./index-K2zzami3.js";import"./index-BW22oPP6.js";import"./use-form-item-BsnpemL_.js";import"./_initCloneObject-DfOnBHdn.js";import"./index-pVAXVlCV.js";import"./index-C6fEXl-e.js";import"./index-BierC7rd.js";import"./index-BQ-mpgoy.js";import"./token-DWNpOE8r.js";import"./scroll-bFiZhqzI.js";import"./debounce-BWBxuUbE.js";import"./_baseIteratee-iUx42eT-.js";import"./index-ZgXgJNHL.js";import"./vnode-C4RX5enz.js";import"./index-R-jt7LR_.js";import"./index-CWBrZtwn.js";import"./index-MV2EqMi7.js";import"./index-6-f3xsy2.js";import"./index-BlgPu7T-.js";import"./index-DO8sDDAh.js";import"./index-CgoUqbdT.js";import"./use-dialog-BDM4AbF-.js";import"./index-DaNWXg3-.js";import"./refs-Cw5r5QN8.js";export{i as default};

View File

@ -1 +0,0 @@
import{_ as i}from"./assign-title-dialog.vue_vue_type_script_setup_true_lang-ChRt4Uun.js";import"./index-DBHnxsy6.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./titles-Bs2uXvDP.js";import"./index-zIv9y_XZ.js";import"./use-form-common-props-BOfz9xGR.js";import"./index-DZO7eApA.js";import"./index-MOpuiu9Z.js";import"./index-nZra831X.js";import"./use-form-item-ByasanrX.js";import"./_initCloneObject-7oWMW-Ot.js";import"./index-CHZ9Ls9_.js";import"./index-B99ckkYy.js";import"./index-sqhzrW2O.js";import"./index-D2YpA_om.js";import"./token-DWNpOE8r.js";import"./scroll-Cceui3yC.js";import"./debounce-CkazOn_9.js";import"./_baseIteratee-DRiXPtOg.js";import"./index-BC2pRl3S.js";import"./vnode-CqxKQBn0.js";import"./index-CS6jHv1e.js";import"./index-r0EsCkBw.js";import"./index-DfWQjCuY.js";import"./index-qSQlj0RO.js";import"./index-CuWUnlSZ.js";import"./index-CtUPMuT5.js";import"./index-DeCbFeva.js";import"./use-dialog-yhiLZsn9.js";import"./index-DvlZWusB.js";import"./refs-Cw5r5QN8.js";export{i as default};

View File

@ -1 +1 @@
var e=(e,l,a)=>new Promise((t,i)=>{var r=e=>{try{s(a.next(e))}catch(l){i(l)}},o=e=>{try{s(a.throw(e))}catch(l){i(l)}},s=e=>e.done?t(e.value):Promise.resolve(e.value).then(r,o);s((a=a.apply(e,l)).next())});import{d as l,a,r as t,o as i,y as r,f as o,z as s,p as d,u as m,e as p,F as u,G as n,l as f}from"./index-DBHnxsy6.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{titlesApi as v}from"./titles-Bs2uXvDP.js";import{E as c,a as x}from"./index-zIv9y_XZ.js";import{E as y,a as j}from"./index-CHZ9Ls9_.js";import{E as b}from"./index-CS6jHv1e.js";import{E as h}from"./index-qSQlj0RO.js";import{E as _}from"./index-r0EsCkBw.js";import{E as g}from"./index-CtUPMuT5.js";const k=l({__name:"assign-title-dialog",props:{visible:{type:Boolean}},emits:["update:visible","submit"],setup(l,{emit:k}){const V=k,A=a(),I=a(!1),w=a([]),E=t({titleId:null,expiresAt:"",remark:""}),C={titleId:[{required:!0,message:"请选择称号",trigger:"change"}]},U=()=>e(this,null,function*(){var e;try{yield null==(e=A.value)?void 0:e.validate(),I.value=!0;const l={title_id:E.titleId};E.expiresAt&&(l.expires_at=E.expiresAt),E.remark&&(l.remark=E.remark),V("submit",l)}catch(l){}finally{I.value=!1}}),Y=()=>{V("update:visible",!1)},D=()=>{var e;E.titleId=null,E.expiresAt="",E.remark="",null==(e=A.value)||e.clearValidate()};return i(()=>e(this,null,function*(){try{const e=yield v.getList({page:1,page_size:100});w.value=Array.isArray(e.list)?e.list.map(e=>({id:e.id,name:e.name})):[]}catch(e){w.value=[]}})),(e,a)=>(o(),r(m(g),{"model-value":l.visible,title:"分配称号",width:"460px","close-on-click-modal":!1,"onUpdate:modelValue":a[3]||(a[3]=e=>V("update:visible",e)),onClosed:D},{footer:s(()=>[d(m(_),{onClick:Y},{default:s(()=>[...a[4]||(a[4]=[f("取消",-1)])]),_:1}),d(m(_),{type:"primary",loading:I.value,onClick:U},{default:s(()=>[...a[5]||(a[5]=[f("确定",-1)])]),_:1},8,["loading"])]),default:s(()=>[d(m(c),{ref_key:"formRef",ref:A,model:E,rules:C,"label-width":"90px"},{default:s(()=>[d(m(x),{label:"称号",prop:"titleId"},{default:s(()=>[d(m(y),{modelValue:E.titleId,"onUpdate:modelValue":a[0]||(a[0]=e=>E.titleId=e),placeholder:"请选择称号",filterable:"",style:{width:"100%"}},{default:s(()=>[(o(!0),p(u,null,n(w.value,e=>(o(),r(m(j),{key:e.id,label:`${e.name}ID: ${e.id}`,value:e.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),d(m(x),{label:"过期时间",prop:"expiresAt"},{default:s(()=>[d(m(b),{modelValue:E.expiresAt,"onUpdate:modelValue":a[1]||(a[1]=e=>E.expiresAt=e),type:"datetime","value-format":"YYYY-MM-DDTHH:mm:ssZ",placeholder:"可选,默认为永久",style:{width:"100%"}},null,8,["modelValue"])]),_:1}),d(m(x),{label:"备注",prop:"remark"},{default:s(()=>[d(m(h),{modelValue:E.remark,"onUpdate:modelValue":a[2]||(a[2]=e=>E.remark=e),placeholder:"可选备注",maxlength:"100"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["model-value"]))}});export{k as _};
var e=(e,l,a)=>new Promise((t,i)=>{var r=e=>{try{s(a.next(e))}catch(l){i(l)}},o=e=>{try{s(a.throw(e))}catch(l){i(l)}},s=e=>e.done?t(e.value):Promise.resolve(e.value).then(r,o);s((a=a.apply(e,l)).next())});import{d as l,a,r as t,o as i,y as r,f as o,z as s,p as d,u as m,e as p,F as u,G as n,l as c}from"./index-CZ0Lvzl5.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{titlesApi as f}from"./titles-BnzYQ5A4.js";import{E as v,a as x}from"./index-DhBIlDpg.js";import{E as y,a as h}from"./index-pVAXVlCV.js";import{E as j}from"./index-R-jt7LR_.js";import{E as b}from"./index-6-f3xsy2.js";import{E as _}from"./index-CWBrZtwn.js";import{E as g}from"./index-DO8sDDAh.js";const k=l({__name:"assign-title-dialog",props:{visible:{type:Boolean}},emits:["update:visible","submit"],setup(l,{emit:k}){const V=k,A=a(),I=a(!1),w=a([]),E=t({titleId:null,expiresAt:"",remark:""}),D={titleId:[{required:!0,message:"请选择称号",trigger:"change"}]},U=()=>e(this,null,function*(){var e;try{yield null==(e=A.value)?void 0:e.validate(),I.value=!0;const l={title_id:E.titleId};E.expiresAt&&(l.expires_at=E.expiresAt),E.remark&&(l.remark=E.remark),V("submit",l)}catch(l){}finally{I.value=!1}}),Y=()=>{V("update:visible",!1)},C=()=>{var e;E.titleId=null,E.expiresAt="",E.remark="",null==(e=A.value)||e.clearValidate()};return i(()=>e(this,null,function*(){try{const e=yield f.getList({page:1,page_size:100});w.value=Array.isArray(e.list)?e.list.map(e=>({id:e.id,name:e.name})):[]}catch(e){w.value=[]}})),(e,a)=>(o(),r(m(g),{"model-value":l.visible,title:"分配称号",width:"460px","close-on-click-modal":!1,"onUpdate:modelValue":a[3]||(a[3]=e=>V("update:visible",e)),onClosed:C},{footer:s(()=>[d(m(_),{onClick:Y},{default:s(()=>[...a[4]||(a[4]=[c("取消",-1)])]),_:1}),d(m(_),{type:"primary",loading:I.value,onClick:U},{default:s(()=>[...a[5]||(a[5]=[c("确定",-1)])]),_:1},8,["loading"])]),default:s(()=>[d(m(v),{ref_key:"formRef",ref:A,model:E,rules:D,"label-width":"90px"},{default:s(()=>[d(m(x),{label:"称号",prop:"titleId"},{default:s(()=>[d(m(y),{modelValue:E.titleId,"onUpdate:modelValue":a[0]||(a[0]=e=>E.titleId=e),placeholder:"请选择称号",filterable:"",style:{width:"100%"}},{default:s(()=>[(o(!0),p(u,null,n(w.value,e=>(o(),r(m(h),{key:e.id,label:`${e.name}ID: ${e.id}`,value:e.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),d(m(x),{label:"过期时间",prop:"expiresAt"},{default:s(()=>[d(m(j),{modelValue:E.expiresAt,"onUpdate:modelValue":a[1]||(a[1]=e=>E.expiresAt=e),type:"datetime","value-format":"YYYY-MM-DDTHH:mm:ssZ",placeholder:"可选,默认为永久",style:{width:"100%"}},null,8,["modelValue"])]),_:1}),d(m(x),{label:"备注",prop:"remark"},{default:s(()=>[d(m(b),{modelValue:E.remark,"onUpdate:modelValue":a[2]||(a[2]=e=>E.remark=e),placeholder:"可选备注",maxlength:"100"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["model-value"]))}});export{k as _};

View File

@ -1 +0,0 @@
import{_ as i}from"./batch-draw-dialog.vue_vue_type_script_setup_true_lang-D6SWKrJK.js";import"./index-DBHnxsy6.js";/* empty css *//* empty css */import"./el-pagination-CkwA8__y.js";import"./index-CHZ9Ls9_.js";import"./index-B99ckkYy.js";import"./index-nZra831X.js";import"./index-MOpuiu9Z.js";import"./use-form-item-ByasanrX.js";import"./use-form-common-props-BOfz9xGR.js";import"./index-sqhzrW2O.js";import"./index-D2YpA_om.js";import"./token-DWNpOE8r.js";import"./index-DZO7eApA.js";import"./scroll-Cceui3yC.js";import"./debounce-CkazOn_9.js";import"./_baseIteratee-DRiXPtOg.js";import"./index-BC2pRl3S.js";import"./vnode-CqxKQBn0.js";import"./index-qSQlj0RO.js";import"./index-DfWQjCuY.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-table-column-DWU1JSNJ.js";import"./_initCloneObject-7oWMW-Ot.js";import"./isArrayLikeObject-BJDhNHaT.js";import"./raf-CXqF1NB1.js";import"./index-DKaQAdbW.js";/* empty css */import"./el-tooltip-l0sNRNKZ.js";/* empty css *//* empty css *//* empty css *//* empty css */import"./el-step-DZviJjCE.js";import"./index-y_oew012.js";/* empty css */import"./adminActivities-C7lwI2HP.js";import"./index-zIv9y_XZ.js";import"./index-BIIDnOvF.js";import"./index-B5f0OwDI.js";import"./index-r0EsCkBw.js";import"./index-CtUPMuT5.js";import"./index-DeCbFeva.js";import"./use-dialog-yhiLZsn9.js";import"./index-DvlZWusB.js";import"./refs-Cw5r5QN8.js";export{i as default};

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
import{_ as t}from"./card-list.vue_vue_type_script_setup_true_lang-CibUUuFD.js";import"./index-DBHnxsy6.js";/* empty css *//* empty css */import"./index.vue_vue_type_script_setup_true_lang-DUyHB5jc.js";/* empty css */import"./dashboard-efoygTEr.js";import"./index-B5f0OwDI.js";import"./index-BIIDnOvF.js";export{t as default};

View File

@ -0,0 +1 @@
import{_ as e}from"./card-list.vue_vue_type_script_setup_true_lang-qY_uPixj.js";import"./index-CZ0Lvzl5.js";/* empty css *//* empty css */import"./index.vue_vue_type_script_setup_true_lang-DkYjV9Ul.js";/* empty css */import"./dashboard-B-GY2jng.js";import"./index-DR7AB6IM.js";import"./index-D11sKPUb.js";export{e as default};

View File

@ -1 +1 @@
import{d as e,c as a,b1 as t,aC as s,b2 as u,w as r,aH as n,e as l,f as i,m as o,i as d,n as c,r as m,y as v,z as p,F as g,G as f,h as x,p as h,O as b}from"./index-DBHnxsy6.js";/* empty css *//* empty css */import{_}from"./index.vue_vue_type_script_setup_true_lang-DUyHB5jc.js";/* empty css */import{f as y}from"./dashboard-efoygTEr.js";import{E as j}from"./index-B5f0OwDI.js";import{E as S}from"./index-BIIDnOvF.js";const w="easeOutExpo",C=e({__name:"index",props:{target:{default:0},duration:{default:2e3},autoStart:{type:Boolean,default:!0},decimals:{default:0},decimal:{default:"."},separator:{default:""},prefix:{default:""},suffix:{default:""},easing:{default:w},disabled:{type:Boolean,default:!1}},emits:["started","finished","paused","reset"],setup(e,{expose:m,emit:v}){const p=Number.EPSILON,g=e,f=v,x=(e,a,t)=>Number.isFinite(e)?e:t,h=(e,a,t)=>Math.max(a,Math.min(e,t)),b=a(()=>x(g.target,0,0)),_=a(()=>h(x(g.duration,0,2e3),100,6e4)),y=a(()=>h(x(g.decimals,0,0),0,10)),j=a(()=>{const e=g.easing;return e in t?e:w}),S=s(0),C=s(b.value),F=s(!1),N=s(!1),V=s(0),M=u(S,{duration:_,transition:a(()=>t[j.value]),onStarted:()=>{F.value=!0,N.value=!1,f("started",C.value)},onFinished:()=>{F.value=!1,N.value=!1,f("finished",C.value)}}),P=a(()=>{const e=N.value?V.value:M.value;if(!Number.isFinite(e))return`${g.prefix}0${g.suffix}`;const a=((e,a,t,s)=>{let u=a>0?e.toFixed(a):Math.floor(e).toString();if("."!==t&&u.includes(".")&&(u=u.replace(".",t)),s){const e=u.split(t);e[0]=e[0].replace(/\B(?=(\d{3})+(?!\d))/g,s),u=e.join(t)}return u})(e,y.value,g.decimal,g.separator);return`${g.prefix}${a}${g.suffix}`}),$=()=>{N.value=!1,V.value=0},E=e=>{if(g.disabled)return;const a=void 0!==e?e:C.value;Number.isFinite(a)&&(C.value=a,(e=>{const a=N.value?V.value:M.value;return Math.abs(a-e)<p})(a)||(N.value&&(S.value=V.value,$()),c(()=>{S.value=a})))},O=()=>{(F.value||N.value)&&(S.value=0,$(),f("paused",0))};return r(b,e=>{g.autoStart&&!g.disabled?E(e):C.value=e},{immediate:g.autoStart&&!g.disabled}),r(()=>g.disabled,e=>{e&&F.value&&O()}),n(()=>{F.value&&O()}),m({start:E,pause:()=>{F.value&&!N.value&&(N.value=!0,V.value=M.value,S.value=V.value,f("paused",V.value))},reset:(e=0)=>{const a=x(e,0,0);S.value=a,C.value=a,$(),f("reset")},stop:O,setTarget:e=>{Number.isFinite(e)&&(C.value=e,!F.value&&!g.autoStart||g.disabled||E(e))},get isRunning(){return F.value},get isPaused(){return N.value},get currentValue(){return N.value?V.value:M.value},get targetValue(){return C.value},get progress(){const e=N.value?V.value:M.value,a=C.value;return 0===a?0===e?1:0:Math.abs(e/a)}}),(e,a)=>(i(),l("span",{class:d(["text-g-900 tabular-nums",F.value?"transition-opacity duration-300 ease-in-out":""])},o(P.value),3))}}),F={class:"art-card relative flex flex-col justify-center h-35 px-5 mb-5 max-sm:mb-4"},N={class:"text-g-700 text-sm"},V={class:"flex-c mt-1"},M={class:"absolute top-0 bottom-0 right-5 m-auto size-12.5 rounded-xl flex-cc bg-theme/10"},P=e({__name:"card-list",props:{range:{}},setup(e){const a=e,t=m([{des:"道具卡销量",icon:"ri:shopping-bag-3-line",startVal:0,duration:1e3,num:0,change:"+0%"},{des:"活动抽奖次数",icon:"ri:fire-line",startVal:0,duration:1e3,num:0,change:"+0%"},{des:"新用户注册数",icon:"ri:user-add-line",startVal:0,duration:1e3,num:0,change:"+0%"},{des:"用户总积分",icon:"ri:coin-line",startVal:0,duration:1e3,num:0,change:"+0%"}]);return r(()=>a.range,()=>{return e=this,s=null,u=function*(){try{const e=yield y(a.range);t[0].num=e.itemCardSales,t[0].change=e.itemCardChange,t[1].num=e.drawCount,t[1].change=e.drawChange,t[2].num=e.newUsers,t[2].change=e.newUserChange,t[3].num=e.totalPoints,t[3].change=e.pointsChange}catch(e){b.error("获取卡片数据失败")}},new Promise((a,t)=>{var r=e=>{try{l(u.next(e))}catch(a){t(a)}},n=e=>{try{l(u.throw(e))}catch(a){t(a)}},l=e=>e.done?a(e.value):Promise.resolve(e.value).then(r,n);l((u=u.apply(e,s)).next())});var e,s,u},{immediate:!0}),(e,a)=>{const s=C,u=_,r=j,n=S;return i(),v(n,{gutter:20,class:"flex"},{default:p(()=>[(i(!0),l(g,null,f(t,(e,t)=>(i(),v(r,{key:t,sm:12,md:6,lg:6},{default:p(()=>[x("div",F,[x("span",N,o(e.des),1),h(s,{class:"text-[26px] font-medium mt-2",target:e.num,duration:1300},null,8,["target"]),x("div",V,[a[0]||(a[0]=x("span",{class:"text-xs text-g-600"},"较上周",-1)),x("span",{class:d(["ml-1 text-xs font-semibold",[-1===e.change.indexOf("+")?"text-danger":"text-success"]])},o(e.change),3)]),x("div",M,[h(u,{icon:e.icon,class:"text-xl text-theme"},null,8,["icon"])])])]),_:2},1024))),128))]),_:1})}}});export{P as _};
import{d as e,c as a,b6 as t,aC as s,b7 as u,w as r,aH as n,e as l,f as i,m as o,i as d,n as c,r as v,y as m,z as p,F as g,G as f,h as x,p as h,O as b}from"./index-CZ0Lvzl5.js";/* empty css *//* empty css */import{_}from"./index.vue_vue_type_script_setup_true_lang-DkYjV9Ul.js";/* empty css */import{f as y}from"./dashboard-B-GY2jng.js";import{E as j}from"./index-DR7AB6IM.js";import{E as w}from"./index-D11sKPUb.js";const C="easeOutExpo",S=e({__name:"index",props:{target:{default:0},duration:{default:2e3},autoStart:{type:Boolean,default:!0},decimals:{default:0},decimal:{default:"."},separator:{default:""},prefix:{default:""},suffix:{default:""},easing:{default:C},disabled:{type:Boolean,default:!1}},emits:["started","finished","paused","reset"],setup(e,{expose:v,emit:m}){const p=Number.EPSILON,g=e,f=m,x=(e,a,t)=>Number.isFinite(e)?e:t,h=(e,a,t)=>Math.max(a,Math.min(e,t)),b=a(()=>x(g.target,0,0)),_=a(()=>h(x(g.duration,0,2e3),100,6e4)),y=a(()=>h(x(g.decimals,0,0),0,10)),j=a(()=>{const e=g.easing;return e in t?e:C}),w=s(0),S=s(b.value),F=s(!1),N=s(!1),V=s(0),M=u(w,{duration:_,transition:a(()=>t[j.value]),onStarted:()=>{F.value=!0,N.value=!1,f("started",S.value)},onFinished:()=>{F.value=!1,N.value=!1,f("finished",S.value)}}),P=a(()=>{const e=N.value?V.value:M.value;if(!Number.isFinite(e))return`${g.prefix}0${g.suffix}`;const a=((e,a,t,s)=>{let u=a>0?e.toFixed(a):Math.floor(e).toString();if("."!==t&&u.includes(".")&&(u=u.replace(".",t)),s){const e=u.split(t);e[0]=e[0].replace(/\B(?=(\d{3})+(?!\d))/g,s),u=e.join(t)}return u})(e,y.value,g.decimal,g.separator);return`${g.prefix}${a}${g.suffix}`}),$=()=>{N.value=!1,V.value=0},E=e=>{if(g.disabled)return;const a=void 0!==e?e:S.value;Number.isFinite(a)&&(S.value=a,(e=>{const a=N.value?V.value:M.value;return Math.abs(a-e)<p})(a)||(N.value&&(w.value=V.value,$()),c(()=>{w.value=a})))},O=()=>{(F.value||N.value)&&(w.value=0,$(),f("paused",0))};return r(b,e=>{g.autoStart&&!g.disabled?E(e):S.value=e},{immediate:g.autoStart&&!g.disabled}),r(()=>g.disabled,e=>{e&&F.value&&O()}),n(()=>{F.value&&O()}),v({start:E,pause:()=>{F.value&&!N.value&&(N.value=!0,V.value=M.value,w.value=V.value,f("paused",V.value))},reset:(e=0)=>{const a=x(e,0,0);w.value=a,S.value=a,$(),f("reset")},stop:O,setTarget:e=>{Number.isFinite(e)&&(S.value=e,!F.value&&!g.autoStart||g.disabled||E(e))},get isRunning(){return F.value},get isPaused(){return N.value},get currentValue(){return N.value?V.value:M.value},get targetValue(){return S.value},get progress(){const e=N.value?V.value:M.value,a=S.value;return 0===a?0===e?1:0:Math.abs(e/a)}}),(e,a)=>(i(),l("span",{class:d(["text-g-900 tabular-nums",F.value?"transition-opacity duration-300 ease-in-out":""])},o(P.value),3))}}),F={class:"art-card relative flex flex-col justify-center h-35 px-5 mb-5 max-sm:mb-4"},N={class:"text-g-700 text-sm"},V={class:"flex-c mt-1"},M={class:"absolute top-0 bottom-0 right-5 m-auto size-12.5 rounded-xl flex-cc bg-theme/10"},P=e({__name:"card-list",props:{range:{}},setup(e){const a=e,t=v([{des:"道具卡销量",icon:"ri:shopping-bag-3-line",startVal:0,duration:1e3,num:0,change:"+0%"},{des:"活动抽奖次数",icon:"ri:fire-line",startVal:0,duration:1e3,num:0,change:"+0%"},{des:"新用户注册数",icon:"ri:user-add-line",startVal:0,duration:1e3,num:0,change:"+0%"},{des:"用户总积分",icon:"ri:coin-line",startVal:0,duration:1e3,num:0,change:"+0%"}]);return r(()=>a.range,()=>{return e=this,s=null,u=function*(){try{const e=yield y(a.range);t[0].num=e.itemCardSales,t[0].change=e.itemCardChange,t[1].num=e.drawCount,t[1].change=e.drawChange,t[2].num=e.newUsers,t[2].change=e.newUserChange,t[3].num=e.totalPoints,t[3].change=e.pointsChange}catch(e){b.error("获取卡片数据失败")}},new Promise((a,t)=>{var r=e=>{try{l(u.next(e))}catch(a){t(a)}},n=e=>{try{l(u.throw(e))}catch(a){t(a)}},l=e=>e.done?a(e.value):Promise.resolve(e.value).then(r,n);l((u=u.apply(e,s)).next())});var e,s,u},{immediate:!0}),(e,a)=>{const s=S,u=_,r=j,n=w;return i(),m(n,{gutter:20,class:"flex"},{default:p(()=>[(i(!0),l(g,null,f(t,(e,t)=>(i(),m(r,{key:t,sm:12,md:6,lg:6},{default:p(()=>[x("div",F,[x("span",N,o(e.des),1),h(s,{class:"text-[26px] font-medium mt-2",target:e.num,duration:1300},null,8,["target"]),x("div",V,[a[0]||(a[0]=x("span",{class:"text-xs text-g-600"},"较上周",-1)),x("span",{class:d(["ml-1 text-xs font-semibold",[-1===e.change.indexOf("+")?"text-danger":"text-success"]])},o(e.change),3)]),x("div",M,[h(u,{icon:e.icon,class:"text-xl text-theme"},null,8,["icon"])])])]),_:2},1024))),128))]),_:1})}}});export{P as _};

View File

@ -0,0 +1 @@
var e=Object.defineProperty,a=Object.getOwnPropertySymbols,t=Object.prototype.hasOwnProperty,o=Object.prototype.propertyIsEnumerable,r=(a,t,o)=>t in a?e(a,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):a[t]=o,s=(e,s)=>{for(var l in s||(s={}))t.call(s,l)&&r(e,l,s[l]);if(a)for(var l of a(s))o.call(s,l)&&r(e,l,s[l]);return e};import{d as l,a as p,w as m,E as i,y as d,f as u,z as n,p as f,u as j,B as c,J as b,l as _,ab as x,b2 as v}from"./index-CZ0Lvzl5.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{E as y,a as h}from"./index-DhBIlDpg.js";import{E}from"./index-D11sKPUb.js";import{E as V}from"./index-DR7AB6IM.js";import{E as O}from"./index-6-f3xsy2.js";import{E as g,a as w}from"./index-pVAXVlCV.js";import{E as I}from"./index-BJHoISGQ.js";import{E as J}from"./index-CWBrZtwn.js";import{E as C}from"./index-D9lGuZWz.js";import{_ as k}from"./_plugin-vue_export-helper-BCo6x5W8.js";import"./use-form-common-props-U6f9D53_.js";import"./index-DH_vX4BK.js";import"./index-K2zzami3.js";import"./index-BW22oPP6.js";import"./use-form-item-BsnpemL_.js";import"./_initCloneObject-DfOnBHdn.js";import"./index-C6fEXl-e.js";import"./index-BierC7rd.js";import"./index-BQ-mpgoy.js";import"./token-DWNpOE8r.js";import"./scroll-bFiZhqzI.js";import"./debounce-BWBxuUbE.js";import"./_baseIteratee-iUx42eT-.js";import"./index-ZgXgJNHL.js";import"./vnode-C4RX5enz.js";import"./index-MV2EqMi7.js";const P=k(l({__name:"category-search",props:{modelValue:{}},emits:["update:modelValue","search","reset"],setup(e,{emit:a}){const t=e,o=a,r=p(s({},t.modelValue));m(()=>t.modelValue,(e,a)=>{JSON.stringify(e)!==JSON.stringify(a)&&(r.value=s({},e))},{deep:!0});let l=null;m(r,e=>{l&&clearTimeout(l),l=setTimeout(()=>{o("update:modelValue",s({},e))},100)},{deep:!0});const k=()=>{o("search",r.value)},P=()=>{r.value={name:void 0,status:void 0},o("reset")};return(a,t)=>{const o=i("ripple");return u(),d(j(C),{class:"search-card",shadow:"never"},{default:n(()=>[f(j(y),{ref:"formRef",model:e.modelValue,"label-width":"80px"},{default:n(()=>[f(j(E),{gutter:20},{default:n(()=>[f(j(V),{span:8},{default:n(()=>[f(j(h),{label:"分类名称",prop:"name"},{default:n(()=>[f(j(O),{modelValue:r.value.name,"onUpdate:modelValue":t[0]||(t[0]=e=>r.value.name=e),placeholder:"请输入分类名称",clearable:"",onKeyup:c(k,["enter"])},null,8,["modelValue"])]),_:1})]),_:1}),f(j(V),{span:6},{default:n(()=>[f(j(h),{label:"状态",prop:"status"},{default:n(()=>[f(j(g),{modelValue:r.value.status,"onUpdate:modelValue":t[1]||(t[1]=e=>r.value.status=e),placeholder:"请选择状态",clearable:""},{default:n(()=>[f(j(w),{value:1,label:"启用"}),f(j(w),{value:2,label:"禁用"})]),_:1},8,["modelValue"])]),_:1})]),_:1}),f(j(V),{span:6},{default:n(()=>[f(j(h),{"label-width":"0"},{default:n(()=>[f(j(I),null,{default:n(()=>[b((u(),d(j(J),{type:"primary",onClick:k},{default:n(()=>[f(j(x),{class:"mr-1"},{default:n(()=>[f(j(v))]),_:1}),t[2]||(t[2]=_(" 搜索 ",-1))]),_:1})),[[o]]),b((u(),d(j(J),{onClick:P},{default:n(()=>[...t[3]||(t[3]=[_("重置",-1)])]),_:1})),[[o]])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,["model"])]),_:1})}}}),[["__scopeId","data-v-9b5715ff"]]);export{P as default};

View File

@ -1 +0,0 @@
var e=Object.defineProperty,a=Object.getOwnPropertySymbols,t=Object.prototype.hasOwnProperty,o=Object.prototype.propertyIsEnumerable,r=(a,t,o)=>t in a?e(a,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):a[t]=o,s=(e,s)=>{for(var l in s||(s={}))t.call(s,l)&&r(e,l,s[l]);if(a)for(var l of a(s))o.call(s,l)&&r(e,l,s[l]);return e};import{d as l,a as p,w as i,E as m,y as d,f as u,z as n,p as f,u as j,B as c,J as b,l as _,ab as x,aW as v}from"./index-DBHnxsy6.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{E as y,a as E}from"./index-zIv9y_XZ.js";import{E as V}from"./index-BIIDnOvF.js";import{E as h}from"./index-B5f0OwDI.js";import{E as g}from"./index-qSQlj0RO.js";import{E as O,a as w}from"./index-CHZ9Ls9_.js";import{E as C}from"./index-Bi8tRqjc.js";import{E as I}from"./index-r0EsCkBw.js";import{E as J}from"./index-Bh7aAHNM.js";import{_ as k}from"./_plugin-vue_export-helper-BCo6x5W8.js";import"./use-form-common-props-BOfz9xGR.js";import"./index-DZO7eApA.js";import"./index-MOpuiu9Z.js";import"./index-nZra831X.js";import"./use-form-item-ByasanrX.js";import"./_initCloneObject-7oWMW-Ot.js";import"./index-B99ckkYy.js";import"./index-sqhzrW2O.js";import"./index-D2YpA_om.js";import"./token-DWNpOE8r.js";import"./scroll-Cceui3yC.js";import"./debounce-CkazOn_9.js";import"./_baseIteratee-DRiXPtOg.js";import"./index-BC2pRl3S.js";import"./vnode-CqxKQBn0.js";import"./index-DfWQjCuY.js";const z=k(l({__name:"category-search",props:{modelValue:{}},emits:["update:modelValue","search","reset"],setup(e,{emit:a}){const t=e,o=a,r=p(s({},t.modelValue));i(()=>t.modelValue,(e,a)=>{JSON.stringify(e)!==JSON.stringify(a)&&(r.value=s({},e))},{deep:!0});let l=null;i(r,e=>{l&&clearTimeout(l),l=setTimeout(()=>{o("update:modelValue",s({},e))},100)},{deep:!0});const k=()=>{o("search",r.value)},z=()=>{r.value={name:void 0,status:void 0},o("reset")};return(a,t)=>{const o=m("ripple");return u(),d(j(J),{class:"search-card",shadow:"never"},{default:n(()=>[f(j(y),{ref:"formRef",model:e.modelValue,"label-width":"80px"},{default:n(()=>[f(j(V),{gutter:20},{default:n(()=>[f(j(h),{span:8},{default:n(()=>[f(j(E),{label:"分类名称",prop:"name"},{default:n(()=>[f(j(g),{modelValue:r.value.name,"onUpdate:modelValue":t[0]||(t[0]=e=>r.value.name=e),placeholder:"请输入分类名称",clearable:"",onKeyup:c(k,["enter"])},null,8,["modelValue"])]),_:1})]),_:1}),f(j(h),{span:6},{default:n(()=>[f(j(E),{label:"状态",prop:"status"},{default:n(()=>[f(j(O),{modelValue:r.value.status,"onUpdate:modelValue":t[1]||(t[1]=e=>r.value.status=e),placeholder:"请选择状态",clearable:""},{default:n(()=>[f(j(w),{value:1,label:"启用"}),f(j(w),{value:2,label:"禁用"})]),_:1},8,["modelValue"])]),_:1})]),_:1}),f(j(h),{span:6},{default:n(()=>[f(j(E),{"label-width":"0"},{default:n(()=>[f(j(C),null,{default:n(()=>[b((u(),d(j(I),{type:"primary",onClick:k},{default:n(()=>[f(j(x),{class:"mr-1"},{default:n(()=>[f(j(v))]),_:1}),t[2]||(t[2]=_(" 搜索 ",-1))]),_:1})),[[o]]),b((u(),d(j(I),{onClick:z},{default:n(()=>[...t[3]||(t[3]=[_("重置",-1)])]),_:1})),[[o]])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,["model"])]),_:1})}}}),[["__scopeId","data-v-9b5715ff"]]);export{z as default};

View File

@ -0,0 +1 @@
import{b as o}from"./index-DhBIlDpg.js";function r(r){return o(r,5)}export{r as c};

View File

@ -1 +0,0 @@
import{b as n}from"./index-zIv9y_XZ.js";function r(r){return n(r,5)}export{r as c};

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 +1 @@
import{b4 as s}from"./index-DBHnxsy6.js";const t={getList:t=>s.get({url:"admin/system_coupons",params:t}),create:t=>s.post({url:"admin/system_coupons",data:t}),update:(t,e)=>s.put({url:`admin/system_coupons/${t}`,data:e}),delete:t=>s.del({url:`admin/system_coupons/${t}`})};export{t as c};
import{b9 as s}from"./index-CZ0Lvzl5.js";const t={getList:t=>s.get({url:"admin/system_coupons",params:t}),create:t=>s.post({url:"admin/system_coupons",data:t}),update:(t,e)=>s.put({url:`admin/system_coupons/${t}`,data:e}),delete:t=>s.del({url:`admin/system_coupons/${t}`})};export{t as c};

View File

@ -1 +1 @@
import{b4 as a}from"./index-DBHnxsy6.js";function r(r="7d"){return a.get({url:"admin/dashboard/cards",params:{rangeType:r}})}function d(r="30d",d="day"){return a.get({url:"admin/dashboard/draw_trend",params:{rangeType:r,granularity:d}})}function n(r=1,d=20,n){return a.get({url:"admin/dashboard/new_users",params:{page:r,page_size:d,period:n}})}function e(r,d=50){return a.get({url:"admin/dashboard/draw_stream",params:{since_id:r,limit:d}})}function s(r=50){return a.get({url:"admin/dashboard/todos",params:{limit:r}})}export{e as a,n as b,d as c,s as d,r as f};
import{b9 as a}from"./index-CZ0Lvzl5.js";function r(r="7d"){return a.get({url:"admin/dashboard/cards",params:{rangeType:r}})}function d(r="30d",d="day"){return a.get({url:"admin/dashboard/draw_trend",params:{rangeType:r,granularity:d}})}function n(r=1,d=20,n){return a.get({url:"admin/dashboard/new_users",params:{page:r,page_size:d,period:n}})}function e(r,d=50){return a.get({url:"admin/dashboard/draw_stream",params:{since_id:r,limit:d}})}function s(r=50){return a.get({url:"admin/dashboard/todos",params:{limit:r}})}export{e as a,n as b,d as c,s as d,r as f};

View File

@ -0,0 +1 @@
import{cw as t,bn as n,cx as r}from"./index-CZ0Lvzl5.js";var i=/\s/;var e=/^\s+/;function u(t){return t?t.slice(0,function(t){for(var n=t.length;n--&&i.test(t.charAt(n)););return n}(t)+1).replace(e,""):t}var o=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,f=/^0o[0-7]+$/i,c=parseInt;function v(r){if("number"==typeof r)return r;if(t(r))return NaN;if(n(r)){var i="function"==typeof r.valueOf?r.valueOf():r;r=n(i)?i+"":i}if("string"!=typeof r)return 0===r?r:+r;r=u(r);var e=a.test(r);return e||f.test(r)?c(r.slice(2),e?2:8):o.test(r)?NaN:+r}var s=function(){return r.Date.now()},l=Math.max,d=Math.min;function m(t,r,i){var e,u,o,a,f,c,m=0,p=!1,x=!1,h=!0;if("function"!=typeof t)throw new TypeError("Expected a function");function T(n){var r=e,i=u;return e=u=void 0,m=n,a=t.apply(i,r)}function y(t){var n=t-c;return void 0===c||n>=r||n<0||x&&t-m>=o}function g(){var t=s();if(y(t))return w(t);f=setTimeout(g,function(t){var n=r-(t-c);return x?d(n,o-(t-m)):n}(t))}function w(t){return f=void 0,h&&e?T(t):(e=u=void 0,a)}function N(){var t=s(),n=y(t);if(e=arguments,u=this,c=t,n){if(void 0===f)return function(t){return m=t,f=setTimeout(g,r),p?T(t):a}(c);if(x)return clearTimeout(f),f=setTimeout(g,r),T(c)}return void 0===f&&(f=setTimeout(g,r)),a}return r=v(r)||0,n(i)&&(p=!!i.leading,o=(x="maxWait"in i)?l(v(i.maxWait)||0,r):o,h="trailing"in i?!!i.trailing:h),N.cancel=function(){void 0!==f&&clearTimeout(f),m=0,e=c=u=f=void 0},N.flush=function(){return void 0===f?a:w(s())},N}export{m as d,v as t};

View File

@ -1 +0,0 @@
import{cr as t,bi as r,cs as n}from"./index-DBHnxsy6.js";var i=/\s/;var e=/^\s+/;function u(t){return t?t.slice(0,function(t){for(var r=t.length;r--&&i.test(t.charAt(r)););return r}(t)+1).replace(e,""):t}var o=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,f=/^0o[0-7]+$/i,c=parseInt;function v(n){if("number"==typeof n)return n;if(t(n))return NaN;if(r(n)){var i="function"==typeof n.valueOf?n.valueOf():n;n=r(i)?i+"":i}if("string"!=typeof n)return 0===n?n:+n;n=u(n);var e=a.test(n);return e||f.test(n)?c(n.slice(2),e?2:8):o.test(n)?NaN:+n}var s=function(){return n.Date.now()},l=Math.max,d=Math.min;function m(t,n,i){var e,u,o,a,f,c,m=0,p=!1,h=!1,x=!0;if("function"!=typeof t)throw new TypeError("Expected a function");function T(r){var n=e,i=u;return e=u=void 0,m=r,a=t.apply(i,n)}function y(t){var r=t-c;return void 0===c||r>=n||r<0||h&&t-m>=o}function g(){var t=s();if(y(t))return N(t);f=setTimeout(g,function(t){var r=n-(t-c);return h?d(r,o-(t-m)):r}(t))}function N(t){return f=void 0,x&&e?T(t):(e=u=void 0,a)}function b(){var t=s(),r=y(t);if(e=arguments,u=this,c=t,r){if(void 0===f)return function(t){return m=t,f=setTimeout(g,n),p?T(t):a}(c);if(h)return clearTimeout(f),f=setTimeout(g,n),T(c)}return void 0===f&&(f=setTimeout(g,n)),a}return n=v(n)||0,r(i)&&(p=!!i.leading,o=(h="maxWait"in i)?l(v(i.maxWait)||0,n):o,x="trailing"in i?!!i.trailing:x),b.cancel=function(){void 0!==f&&clearTimeout(f),m=0,e=c=u=f=void 0},b.flush=function(){return void 0===f?a:N(s())},b}export{m as d,v as t};

View File

@ -0,0 +1 @@
import{_ as s}from"./dynamic-stats.vue_vue_type_script_setup_true_lang-Cu6h40HW.js";import"./index-CZ0Lvzl5.js";/* empty css *//* empty css *//* empty css */import"./dashboard-B-GY2jng.js";import"./index-BQ-mpgoy.js";import"./use-form-common-props-U6f9D53_.js";import"./index-BierC7rd.js";import"./index-BW22oPP6.js";export{s as default};

View File

@ -1 +0,0 @@
import{_ as s}from"./dynamic-stats.vue_vue_type_script_setup_true_lang-CjWh3ewK.js";import"./index-DBHnxsy6.js";/* empty css *//* empty css *//* empty css */import"./dashboard-efoygTEr.js";import"./index-D2YpA_om.js";import"./use-form-common-props-BOfz9xGR.js";import"./index-sqhzrW2O.js";import"./index-nZra831X.js";export{s as default};

View File

@ -1 +0,0 @@
import{d as s,a as e,o as a,aH as t,e as l,f as r,h as n,l as i,m as o,p as m,z as c,F as d,G as u,y as p,O as v}from"./index-DBHnxsy6.js";/* empty css *//* empty css *//* empty css */import{a as h}from"./dashboard-efoygTEr.js";import{E as f}from"./index-D2YpA_om.js";import{E as y}from"./index-sqhzrW2O.js";const x={class:"art-card h-128 p-5 mb-5 max-sm:mb-4"},g={class:"art-card-header"},b={class:"title"},w={class:"text-success"},j={class:"h-9/10 mt-2 overflow-hidden"},N={class:"text-g-800 font-medium"},_={class:"text-theme"},k={key:0,class:"ml-2"},z=s({__name:"dynamic-stats",setup(s){const z=e([]),E=e(0);let I,P=null;const S=()=>{return s=this,e=null,a=function*(){try{const{list:s,sinceId:e}=yield h(I,50);if(s.length){I=e;const a=new Set(z.value.map(s=>s.id)),t=s.filter(s=>!a.has(s.id));t.length&&(z.value.unshift(...t),E.value=t.length,z.value.length>100&&z.value.splice(100))}}catch(s){v.error("获取抽奖动态失败")}},new Promise((t,l)=>{var r=s=>{try{i(a.next(s))}catch(e){l(e)}},n=s=>{try{i(a.throw(s))}catch(e){l(e)}},i=s=>s.done?t(s.value):Promise.resolve(s.value).then(r,n);i((a=a.apply(s,e)).next())});var s,e,a};return a(()=>{S(),P=window.setInterval(S,5e3)}),t(()=>{P&&window.clearInterval(P)}),(s,e)=>{const a=f,t=y;return r(),l("div",x,[n("div",g,[n("div",b,[e[1]||(e[1]=n("h4",null,"实时抽奖动态",-1)),n("p",null,[e[0]||(e[0]=i("新增",-1)),n("span",w,"+"+o(E.value),1)])])]),n("div",j,[m(t,null,{default:c(()=>[(r(!0),l(d,null,u(z.value,(s,t)=>(r(),l("div",{class:"h-17.5 leading-17.5 border-b border-g-300 text-sm overflow-hidden last:border-b-0",key:s.id},[n("span",N,o(s.nickname),1),e[3]||(e[3]=n("span",{class:"mx-2 text-g-600"},"在",-1)),n("span",_,o(s.activityName?`${s.activityName}-${s.issueNumber}`:s.issueName),1),s.isWinner?(r(),l("span",k,"中奖 "+o(s.prizeName||""),1)):(r(),p(a,{key:1,size:"small",type:"info",class:"ml-2"},{default:c(()=>[...e[2]||(e[2]=[i("参与",-1)])]),_:1}))]))),128))]),_:1})])])}}});export{z as _};

View File

@ -0,0 +1 @@
import{d as s,a as e,o as a,aH as t,e as l,f as r,h as n,l as i,m as o,p as m,z as c,F as d,G as u,y as v,O as h}from"./index-CZ0Lvzl5.js";/* empty css *//* empty css *//* empty css */import{a as p}from"./dashboard-B-GY2jng.js";import{E as f}from"./index-BQ-mpgoy.js";import{E as x}from"./index-BierC7rd.js";const y={class:"art-card h-128 p-5 mb-5 max-sm:mb-4"},b={class:"art-card-header"},g={class:"title"},w={class:"text-success"},j={class:"h-9/10 mt-2 overflow-hidden"},k={class:"text-g-800 font-medium"},N={class:"text-theme"},_={key:0,class:"ml-2"},z=s({__name:"dynamic-stats",setup(s){const z=e([]),I=e(0);let E,F=null;const P=()=>{return s=this,e=null,a=function*(){try{const{list:s,sinceId:e}=yield p(E,50);if(s.length){E=e;const a=new Set(z.value.map(s=>s.id)),t=s.filter(s=>!a.has(s.id));t.length&&(z.value.unshift(...t),I.value=t.length,z.value.length>100&&z.value.splice(100))}}catch(s){h.error("获取抽奖动态失败")}},new Promise((t,l)=>{var r=s=>{try{i(a.next(s))}catch(e){l(e)}},n=s=>{try{i(a.throw(s))}catch(e){l(e)}},i=s=>s.done?t(s.value):Promise.resolve(s.value).then(r,n);i((a=a.apply(s,e)).next())});var s,e,a};return a(()=>{P(),F=window.setInterval(P,5e3)}),t(()=>{F&&window.clearInterval(F)}),(s,e)=>{const a=f,t=x;return r(),l("div",y,[n("div",b,[n("div",g,[e[1]||(e[1]=n("h4",null,"实时抽奖动态",-1)),n("p",null,[e[0]||(e[0]=i("新增",-1)),n("span",w,"+"+o(I.value),1)])])]),n("div",j,[m(t,null,{default:c(()=>[(r(!0),l(d,null,u(z.value,(s,t)=>(r(),l("div",{class:"h-17.5 leading-17.5 border-b border-g-300 text-sm overflow-hidden last:border-b-0",key:s.id},[n("span",k,o(s.nickname),1),e[3]||(e[3]=n("span",{class:"mx-2 text-g-600"},"在",-1)),n("span",N,o(s.activityName?`${s.activityName}-${s.issueNumber}`:s.issueName),1),s.isWinner?(r(),l("span",_,"中奖 "+o(s.prizeName||""),1)):(r(),v(a,{key:1,size:"small",type:"info",class:"ml-2"},{default:c(()=>[...e[2]||(e[2]=[i("参与",-1)])]),_:1}))]))),128))]),_:1})])])}}});export{z as _};

View File

@ -1 +0,0 @@
var e=Object.defineProperty,s=Object.defineProperties,t=Object.getOwnPropertyDescriptors,a=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,l=Object.prototype.propertyIsEnumerable,i=(s,t,a)=>t in s?e(s,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):s[t]=a,r=(e,s)=>{for(var t in s||(s={}))o.call(s,t)&&i(e,t,s[t]);if(a)for(var t of a(s))l.call(s,t)&&i(e,t,s[t]);return e},c=(e,a)=>s(e,t(a));import{a6 as n,a2 as p,c_ as f,cF as d,_ as u,d as y,bs as b,X as v,a as m,c as h,ao as g,bG as k,y as w,f as O,z as j,J as C,h as A,i as _,u as x,k as S,ab as P,j as $,au as E,e as B,l as I,m as T,F,p as z,cC as D,ac as G,Z as J,ap as N}from"./index-DBHnxsy6.js";import{c as X,d as Z}from"./index-B99ckkYy.js";const q=p(c(r({title:{type:String,default:""},description:{type:String,default:""},type:{type:String,values:f(d),default:"info"},closable:{type:Boolean,default:!0},closeText:{type:String,default:""},showIcon:Boolean,center:Boolean,effect:{type:String,values:["light","dark"],default:"light"}},X),{showAfter:Number})),H={open:()=>!0,close:e=>n(e)||e instanceof Event},K=y({name:"ElAlert"});const L=N(u(y(c(r({},K),{props:q,emits:H,setup(e,{emit:s}){const t=e,{Close:a}=D,o=b(),l=v("alert"),i=m(n(t.showAfter)),r=h(()=>d[t.type]),c=h(()=>!(!t.description&&!o.default)),p=e=>{i.value=!1,s("close",e)},{onOpen:f,onClose:u}=Z({showAfter:g(t,"showAfter",0),hideAfter:g(t,"hideAfter"),autoClose:g(t,"autoClose"),open:()=>{i.value=!0,s("open")},close:p});return k&&f(),(e,s)=>(O(),w(J,{name:x(l).b("fade"),persisted:""},{default:j(()=>[C(A("div",{class:_([x(l).b(),x(l).m(e.type),x(l).is("center",e.center),x(l).is(e.effect)]),role:"alert"},[e.showIcon&&(e.$slots.icon||x(r))?(O(),w(x(P),{key:0,class:_([x(l).e("icon"),{[x(l).is("big")]:x(c)}])},{default:j(()=>[$(e.$slots,"icon",{},()=>[(O(),w(E(x(r))))])]),_:3},8,["class"])):S("v-if",!0),A("div",{class:_(x(l).e("content"))},[e.title||e.$slots.title?(O(),B("span",{key:0,class:_([x(l).e("title"),{"with-description":x(c)}])},[$(e.$slots,"title",{},()=>[I(T(e.title),1)])],2)):S("v-if",!0),x(c)?(O(),B("p",{key:1,class:_(x(l).e("description"))},[$(e.$slots,"default",{},()=>[I(T(e.description),1)])],2)):S("v-if",!0),e.closable?(O(),B(F,{key:2},[e.closeText?(O(),B("div",{key:0,class:_([x(l).e("close-btn"),x(l).is("customed")]),onClick:p},T(e.closeText),3)):(O(),w(x(P),{key:1,class:_(x(l).e("close-btn")),onClick:x(u)},{default:j(()=>[z(x(a))]),_:1},8,["class","onClick"]))],64)):S("v-if",!0)],2)],2),[[G,i.value]])]),_:3},8,["name"]))}})),[["__file","alert.vue"]]));export{L as E};

View File

@ -0,0 +1 @@
var e=Object.defineProperty,s=Object.defineProperties,t=Object.getOwnPropertyDescriptors,a=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,l=Object.prototype.propertyIsEnumerable,i=(s,t,a)=>t in s?e(s,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):s[t]=a,r=(e,s)=>{for(var t in s||(s={}))o.call(s,t)&&i(e,t,s[t]);if(a)for(var t of a(s))l.call(s,t)&&i(e,t,s[t]);return e},n=(e,a)=>s(e,t(a));import{a6 as c,a2 as p,d1 as f,cK as d,_ as u,d as y,bx as b,X as v,a as m,c as h,ao as g,bL as k,y as w,f as O,z as j,J as x,h as A,i as C,u as S,k as _,ab as P,j as $,au as E,e as B,l as I,m as T,F as z,p as D,cH as F,ac as H,Z as J,ap as K}from"./index-CZ0Lvzl5.js";import{c as L,d as N}from"./index-C6fEXl-e.js";const X=p(n(r({title:{type:String,default:""},description:{type:String,default:""},type:{type:String,values:f(d),default:"info"},closable:{type:Boolean,default:!0},closeText:{type:String,default:""},showIcon:Boolean,center:Boolean,effect:{type:String,values:["light","dark"],default:"light"}},L),{showAfter:Number})),Z={open:()=>!0,close:e=>c(e)||e instanceof Event},q=y({name:"ElAlert"});const G=K(u(y(n(r({},q),{props:X,emits:Z,setup(e,{emit:s}){const t=e,{Close:a}=F,o=b(),l=v("alert"),i=m(c(t.showAfter)),r=h(()=>d[t.type]),n=h(()=>!(!t.description&&!o.default)),p=e=>{i.value=!1,s("close",e)},{onOpen:f,onClose:u}=N({showAfter:g(t,"showAfter",0),hideAfter:g(t,"hideAfter"),autoClose:g(t,"autoClose"),open:()=>{i.value=!0,s("open")},close:p});return k&&f(),(e,s)=>(O(),w(J,{name:S(l).b("fade"),persisted:""},{default:j(()=>[x(A("div",{class:C([S(l).b(),S(l).m(e.type),S(l).is("center",e.center),S(l).is(e.effect)]),role:"alert"},[e.showIcon&&(e.$slots.icon||S(r))?(O(),w(S(P),{key:0,class:C([S(l).e("icon"),{[S(l).is("big")]:S(n)}])},{default:j(()=>[$(e.$slots,"icon",{},()=>[(O(),w(E(S(r))))])]),_:3},8,["class"])):_("v-if",!0),A("div",{class:C(S(l).e("content"))},[e.title||e.$slots.title?(O(),B("span",{key:0,class:C([S(l).e("title"),{"with-description":S(n)}])},[$(e.$slots,"title",{},()=>[I(T(e.title),1)])],2)):_("v-if",!0),S(n)?(O(),B("p",{key:1,class:C(S(l).e("description"))},[$(e.$slots,"default",{},()=>[I(T(e.description),1)])],2)):_("v-if",!0),e.closable?(O(),B(z,{key:2},[e.closeText?(O(),B("div",{key:0,class:C([S(l).e("close-btn"),S(l).is("customed")]),onClick:p},T(e.closeText),3)):(O(),w(S(P),{key:1,class:C(S(l).e("close-btn")),onClick:S(u)},{default:j(()=>[D(S(a))]),_:1},8,["class","onClick"]))],64)):_("v-if",!0)],2)],2),[[H,i.value]])]),_:3},8,["name"]))}})),[["__file","alert.vue"]]));export{G as E};

View File

@ -1 +1 @@
var e=Object.defineProperty,t=Object.defineProperties,r=Object.getOwnPropertyDescriptors,a=Object.getOwnPropertySymbols,s=Object.prototype.hasOwnProperty,o=Object.prototype.propertyIsEnumerable,i=(t,r,a)=>r in t?e(t,r,{enumerable:!0,configurable:!0,writable:!0,value:a}):t[r]=a;import{a2 as l,ak as n,_ as c,d,X as p,c as f,e as u,f as v,k as y,i as b,u as O,j as g,g as j,ap as m}from"./index-DBHnxsy6.js";const P=l({direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},contentPosition:{type:String,values:["left","center","right"],default:"center"},borderStyle:{type:n(String),default:"solid"}}),S=d({name:"ElDivider"}),h=d((w=((e,t)=>{for(var r in t||(t={}))s.call(t,r)&&i(e,r,t[r]);if(a)for(var r of a(t))o.call(t,r)&&i(e,r,t[r]);return e})({},S),t(w,r({props:P,setup(e){const t=e,r=p("divider"),a=f(()=>r.cssVar({"border-style":t.borderStyle}));return(e,t)=>(v(),u("div",{class:b([O(r).b(),O(r).m(e.direction)]),style:j(O(a)),role:"separator"},[e.$slots.default&&"vertical"!==e.direction?(v(),u("div",{key:0,class:b([O(r).e("text"),O(r).is(e.contentPosition)])},[g(e.$slots,"default")],2)):y("v-if",!0)],6))}}))));var w;const k=m(c(h,[["__file","divider.vue"]]));export{k as E};
var e=Object.defineProperty,t=Object.defineProperties,r=Object.getOwnPropertyDescriptors,a=Object.getOwnPropertySymbols,s=Object.prototype.hasOwnProperty,o=Object.prototype.propertyIsEnumerable,i=(t,r,a)=>r in t?e(t,r,{enumerable:!0,configurable:!0,writable:!0,value:a}):t[r]=a;import{a2 as l,ak as n,_ as c,d,X as p,c as f,e as u,f as v,k as y,i as b,u as O,j as g,g as j,ap as m}from"./index-CZ0Lvzl5.js";const P=l({direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},contentPosition:{type:String,values:["left","center","right"],default:"center"},borderStyle:{type:n(String),default:"solid"}}),S=d({name:"ElDivider"}),h=d((w=((e,t)=>{for(var r in t||(t={}))s.call(t,r)&&i(e,r,t[r]);if(a)for(var r of a(t))o.call(t,r)&&i(e,r,t[r]);return e})({},S),t(w,r({props:P,setup(e){const t=e,r=p("divider"),a=f(()=>r.cssVar({"border-style":t.borderStyle}));return(e,t)=>(v(),u("div",{class:b([O(r).b(),O(r).m(e.direction)]),style:j(O(a)),role:"separator"},[e.$slots.default&&"vertical"!==e.direction?(v(),u("div",{key:0,class:b([O(r).e("text"),O(r).is(e.contentPosition)])},[g(e.$slots,"default")],2)):y("v-if",!0)],6))}}))));var w;const k=m(c(h,[["__file","divider.vue"]]));export{k as E};

View File

@ -1 +1 @@
var e=Object.defineProperty,t=Object.defineProperties,r=Object.getOwnPropertyDescriptors,o=Object.getOwnPropertySymbols,a=Object.prototype.hasOwnProperty,p=Object.prototype.propertyIsEnumerable,s=(t,r,o)=>r in t?e(t,r,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[r]=o,i=(e,t)=>{for(var r in t||(t={}))a.call(t,r)&&s(e,r,t[r]);if(o)for(var r of o(t))p.call(t,r)&&s(e,r,t[r]);return e},n=(e,o)=>t(e,r(o));import{u as l,b as f,E as d}from"./index-B99ckkYy.js";import{d as b}from"./el-dropdown-item-5vxq5ITH.js";import{bo as c,a2 as u,_ as v,d as g,c as y,X as m,a as w,u as h,bu as O,y as j,f as x,z as S,j as k,k as A,e as P,i as B,m as C,l as N,Y as R,ap as $,cB as _}from"./index-DBHnxsy6.js";const E=u({trigger:f.trigger,triggerKeys:f.triggerKeys,placement:b.placement,disabled:f.disabled,visible:l.visible,transition:l.transition,popperOptions:b.popperOptions,tabindex:b.tabindex,content:l.content,popperStyle:l.popperStyle,popperClass:l.popperClass,enterable:n(i({},l.enterable),{default:!0}),effect:n(i({},l.effect),{default:"light"}),teleported:l.teleported,appendTo:l.appendTo,title:String,width:{type:[String,Number],default:150},offset:{type:Number,default:void 0},showAfter:{type:Number,default:0},hideAfter:{type:Number,default:200},autoClose:{type:Number,default:0},showArrow:{type:Boolean,default:!0},persistent:{type:Boolean,default:!0},"onUpdate:visible":{type:Function}}),U={"update:visible":e=>c(e),"before-enter":()=>!0,"before-leave":()=>!0,"after-enter":()=>!0,"after-leave":()=>!0},K=g({name:"ElPopover"}),T=g(n(i({},K),{props:E,emits:U,setup(e,{expose:t,emit:r}){const o=e,a=y(()=>o["onUpdate:visible"]),p=m("popover"),s=w(),i=y(()=>{var e;return null==(e=h(s))?void 0:e.popperRef}),n=y(()=>[{width:O(o.width)},o.popperStyle]),l=y(()=>[p.b(),o.popperClass,{[p.m("plain")]:!!o.content}]),f=y(()=>o.transition===`${p.namespace.value}-fade-in-linear`),b=()=>{r("before-enter")},c=()=>{r("before-leave")},u=()=>{r("after-enter")},v=()=>{r("update:visible",!1),r("after-leave")};return t({popperRef:i,hide:()=>{var e;null==(e=s.value)||e.hide()}}),(e,t)=>(x(),j(h(d),R({ref_key:"tooltipRef",ref:s},e.$attrs,{trigger:e.trigger,"trigger-keys":e.triggerKeys,placement:e.placement,disabled:e.disabled,visible:e.visible,transition:e.transition,"popper-options":e.popperOptions,tabindex:e.tabindex,content:e.content,offset:e.offset,"show-after":e.showAfter,"hide-after":e.hideAfter,"auto-close":e.autoClose,"show-arrow":e.showArrow,"aria-label":e.title,effect:e.effect,enterable:e.enterable,"popper-class":h(l),"popper-style":h(n),teleported:e.teleported,"append-to":e.appendTo,persistent:e.persistent,"gpu-acceleration":h(f),"onUpdate:visible":h(a),onBeforeShow:b,onBeforeHide:c,onShow:u,onHide:v}),{content:S(()=>[e.title?(x(),P("div",{key:0,class:B(h(p).e("title")),role:"title"},C(e.title),3)):A("v-if",!0),k(e.$slots,"default",{},()=>[N(C(e.content),1)])]),default:S(()=>[e.$slots.reference?k(e.$slots,"reference",{key:0}):A("v-if",!0)]),_:3},16,["trigger","trigger-keys","placement","disabled","visible","transition","popper-options","tabindex","content","offset","show-after","hide-after","auto-close","show-arrow","aria-label","effect","enterable","popper-class","popper-style","teleported","append-to","persistent","gpu-acceleration","onUpdate:visible"]))}}));const H=(e,t)=>{const r=t.arg||t.value,o=null==r?void 0:r.popperRef;o&&(o.triggerRef=e)};const z=$(v(T,[["__file","popover.vue"]]),{directive:_({mounted(e,t){H(e,t)},updated(e,t){H(e,t)}},"popover")});export{z as E};
var e=Object.defineProperty,t=Object.defineProperties,r=Object.getOwnPropertyDescriptors,o=Object.getOwnPropertySymbols,a=Object.prototype.hasOwnProperty,p=Object.prototype.propertyIsEnumerable,s=(t,r,o)=>r in t?e(t,r,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[r]=o,i=(e,t)=>{for(var r in t||(t={}))a.call(t,r)&&s(e,r,t[r]);if(o)for(var r of o(t))p.call(t,r)&&s(e,r,t[r]);return e},n=(e,o)=>t(e,r(o));import{u as l,b as f,E as d}from"./index-C6fEXl-e.js";import{d as b}from"./el-dropdown-item-DcxLwUbk.js";import{bt as c,a2 as u,_ as v,d as g,c as y,X as m,a as w,u as h,bz as O,y as j,f as x,z as S,j as k,k as A,e as P,i as C,m as N,l as R,Y as $,ap as _,cG as B}from"./index-CZ0Lvzl5.js";const E=u({trigger:f.trigger,triggerKeys:f.triggerKeys,placement:b.placement,disabled:f.disabled,visible:l.visible,transition:l.transition,popperOptions:b.popperOptions,tabindex:b.tabindex,content:l.content,popperStyle:l.popperStyle,popperClass:l.popperClass,enterable:n(i({},l.enterable),{default:!0}),effect:n(i({},l.effect),{default:"light"}),teleported:l.teleported,appendTo:l.appendTo,title:String,width:{type:[String,Number],default:150},offset:{type:Number,default:void 0},showAfter:{type:Number,default:0},hideAfter:{type:Number,default:200},autoClose:{type:Number,default:0},showArrow:{type:Boolean,default:!0},persistent:{type:Boolean,default:!0},"onUpdate:visible":{type:Function}}),U={"update:visible":e=>c(e),"before-enter":()=>!0,"before-leave":()=>!0,"after-enter":()=>!0,"after-leave":()=>!0},K=g({name:"ElPopover"}),T=g(n(i({},K),{props:E,emits:U,setup(e,{expose:t,emit:r}){const o=e,a=y(()=>o["onUpdate:visible"]),p=m("popover"),s=w(),i=y(()=>{var e;return null==(e=h(s))?void 0:e.popperRef}),n=y(()=>[{width:O(o.width)},o.popperStyle]),l=y(()=>[p.b(),o.popperClass,{[p.m("plain")]:!!o.content}]),f=y(()=>o.transition===`${p.namespace.value}-fade-in-linear`),b=()=>{r("before-enter")},c=()=>{r("before-leave")},u=()=>{r("after-enter")},v=()=>{r("update:visible",!1),r("after-leave")};return t({popperRef:i,hide:()=>{var e;null==(e=s.value)||e.hide()}}),(e,t)=>(x(),j(h(d),$({ref_key:"tooltipRef",ref:s},e.$attrs,{trigger:e.trigger,"trigger-keys":e.triggerKeys,placement:e.placement,disabled:e.disabled,visible:e.visible,transition:e.transition,"popper-options":e.popperOptions,tabindex:e.tabindex,content:e.content,offset:e.offset,"show-after":e.showAfter,"hide-after":e.hideAfter,"auto-close":e.autoClose,"show-arrow":e.showArrow,"aria-label":e.title,effect:e.effect,enterable:e.enterable,"popper-class":h(l),"popper-style":h(n),teleported:e.teleported,"append-to":e.appendTo,persistent:e.persistent,"gpu-acceleration":h(f),"onUpdate:visible":h(a),onBeforeShow:b,onBeforeHide:c,onShow:u,onHide:v}),{content:S(()=>[e.title?(x(),P("div",{key:0,class:C(h(p).e("title")),role:"title"},N(e.title),3)):A("v-if",!0),k(e.$slots,"default",{},()=>[R(N(e.content),1)])]),default:S(()=>[e.$slots.reference?k(e.$slots,"reference",{key:0}):A("v-if",!0)]),_:3},16,["trigger","trigger-keys","placement","disabled","visible","transition","popper-options","tabindex","content","offset","show-after","hide-after","auto-close","show-arrow","aria-label","effect","enterable","popper-class","popper-style","teleported","append-to","persistent","gpu-acceleration","onUpdate:visible"]))}}));const z=(e,t)=>{const r=t.arg||t.value,o=null==r?void 0:r.popperRef;o&&(o.triggerRef=e)};const H=_(v(T,[["__file","popover.vue"]]),{directive:B({mounted(e,t){z(e,t)},updated(e,t){z(e,t)}},"popover")});export{H as E};

View File

@ -1 +1 @@
var e=Object.defineProperty,t=Object.defineProperties,a=Object.getOwnPropertyDescriptors,s=Object.getOwnPropertySymbols,r=Object.prototype.hasOwnProperty,n=Object.prototype.propertyIsEnumerable,o=(t,a,s)=>a in t?e(t,a,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[a]=s;import{a2 as i,ak as l,_ as c,d as p,X as u,c as d,d7 as f,d8 as b,bI as y,a$ as h,b0 as g,bq as v,aa as k,e as m,f as w,k as x,i as $,u as O,h as j,g as I,j as N,m as P,y as B,z as D,au as F,ab as S,ap as T}from"./index-DBHnxsy6.js";const W=i({type:{type:String,default:"line",values:["line","circle","dashboard"]},percentage:{type:Number,default:0,validator:e=>e>=0&&e<=100},status:{type:String,default:"",values:["","success","exception","warning"]},indeterminate:Boolean,duration:{type:Number,default:3},strokeWidth:{type:Number,default:6},strokeLinecap:{type:l(String),default:"round"},textInside:Boolean,width:{type:Number,default:126},showText:{type:Boolean,default:!0},color:{type:l([String,Array,Function]),default:""},striped:Boolean,stripedFlow:Boolean,format:{type:l(Function),default:e=>`${e}%`}}),_=p({name:"ElProgress"}),E=p((L=((e,t)=>{for(var a in t||(t={}))r.call(t,a)&&o(e,a,t[a]);if(s)for(var a of s(t))n.call(t,a)&&o(e,a,t[a]);return e})({},_),z={props:W,setup(e){const t=e,a={success:"#13ce66",exception:"#ff4949",warning:"#e6a23c",default:"#20a0ff"},s=u("progress"),r=d(()=>{const e={width:`${t.percentage}%`,animationDuration:`${t.duration}s`},a=M(t.percentage);return a.includes("gradient")?e.background=a:e.backgroundColor=a,e}),n=d(()=>(t.strokeWidth/t.width*100).toFixed(1)),o=d(()=>["circle","dashboard"].includes(t.type)?Number.parseInt(""+(50-Number.parseFloat(n.value)/2),10):0),i=d(()=>{const e=o.value,a="dashboard"===t.type;return`\n M 50 50\n m 0 ${a?"":"-"}${e}\n a ${e} ${e} 0 1 1 0 ${a?"-":""}${2*e}\n a ${e} ${e} 0 1 1 0 ${a?"":"-"}${2*e}\n `}),l=d(()=>2*Math.PI*o.value),c=d(()=>"dashboard"===t.type?.75:1),p=d(()=>-1*l.value*(1-c.value)/2+"px"),T=d(()=>({strokeDasharray:`${l.value*c.value}px, ${l.value}px`,strokeDashoffset:p.value})),W=d(()=>({strokeDasharray:`${l.value*c.value*(t.percentage/100)}px, ${l.value}px`,strokeDashoffset:p.value,transition:"stroke-dasharray 0.6s ease 0s, stroke 0.6s ease, opacity ease 0.6s"})),_=d(()=>{let e;return e=t.color?M(t.percentage):a[t.status]||a.default,e}),E=d(()=>"warning"===t.status?f:"line"===t.type?"success"===t.status?b:y:"success"===t.status?h:g),L=d(()=>"line"===t.type?12+.4*t.strokeWidth:.111111*t.width+2),z=d(()=>t.format(t.percentage)),M=e=>{var a;const{color:s}=t;if(v(s))return s(e);if(k(s))return s;{const t=function(e){const t=100/e.length;return e.map((e,a)=>k(e)?{color:e,percentage:(a+1)*t}:e).sort((e,t)=>e.percentage-t.percentage)}(s);for(const a of t)if(a.percentage>e)return a.color;return null==(a=t[t.length-1])?void 0:a.color}};return(e,t)=>(w(),m("div",{class:$([O(s).b(),O(s).m(e.type),O(s).is(e.status),{[O(s).m("without-text")]:!e.showText,[O(s).m("text-inside")]:e.textInside}]),role:"progressbar","aria-valuenow":e.percentage,"aria-valuemin":"0","aria-valuemax":"100"},["line"===e.type?(w(),m("div",{key:0,class:$(O(s).b("bar"))},[j("div",{class:$(O(s).be("bar","outer")),style:I({height:`${e.strokeWidth}px`})},[j("div",{class:$([O(s).be("bar","inner"),{[O(s).bem("bar","inner","indeterminate")]:e.indeterminate},{[O(s).bem("bar","inner","striped")]:e.striped},{[O(s).bem("bar","inner","striped-flow")]:e.stripedFlow}]),style:I(O(r))},[(e.showText||e.$slots.default)&&e.textInside?(w(),m("div",{key:0,class:$(O(s).be("bar","innerText"))},[N(e.$slots,"default",{percentage:e.percentage},()=>[j("span",null,P(O(z)),1)])],2)):x("v-if",!0)],6)],6)],2)):(w(),m("div",{key:1,class:$(O(s).b("circle")),style:I({height:`${e.width}px`,width:`${e.width}px`})},[(w(),m("svg",{viewBox:"0 0 100 100"},[j("path",{class:$(O(s).be("circle","track")),d:O(i),stroke:`var(${O(s).cssVarName("fill-color-light")}, #e5e9f2)`,"stroke-linecap":e.strokeLinecap,"stroke-width":O(n),fill:"none",style:I(O(T))},null,14,["d","stroke","stroke-linecap","stroke-width"]),j("path",{class:$(O(s).be("circle","path")),d:O(i),stroke:O(_),fill:"none",opacity:e.percentage?1:0,"stroke-linecap":e.strokeLinecap,"stroke-width":O(n),style:I(O(W))},null,14,["d","stroke","opacity","stroke-linecap","stroke-width"])]))],6)),!e.showText&&!e.$slots.default||e.textInside?x("v-if",!0):(w(),m("div",{key:2,class:$(O(s).e("text")),style:I({fontSize:`${O(L)}px`})},[N(e.$slots,"default",{percentage:e.percentage},()=>[e.status?(w(),B(O(S),{key:1},{default:D(()=>[(w(),B(F(O(E))))]),_:1})):(w(),m("span",{key:0},P(O(z)),1))])],6))],10,["aria-valuenow"]))}},t(L,a(z))));var L,z;const M=T(c(E,[["__file","progress.vue"]]));export{M as E};
var e=Object.defineProperty,t=Object.defineProperties,a=Object.getOwnPropertyDescriptors,s=Object.getOwnPropertySymbols,r=Object.prototype.hasOwnProperty,n=Object.prototype.propertyIsEnumerable,o=(t,a,s)=>a in t?e(t,a,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[a]=s;import{a2 as i,ak as l,_ as c,d as p,X as u,c as d,db as f,dc as b,bN as y,b1 as h,b5 as v,bv as g,aa as k,e as m,f as w,k as x,i as $,u as O,h as j,g as N,j as I,m as P,y as B,z as D,au as F,ab as S,ap as T}from"./index-CZ0Lvzl5.js";const W=i({type:{type:String,default:"line",values:["line","circle","dashboard"]},percentage:{type:Number,default:0,validator:e=>e>=0&&e<=100},status:{type:String,default:"",values:["","success","exception","warning"]},indeterminate:Boolean,duration:{type:Number,default:3},strokeWidth:{type:Number,default:6},strokeLinecap:{type:l(String),default:"round"},textInside:Boolean,width:{type:Number,default:126},showText:{type:Boolean,default:!0},color:{type:l([String,Array,Function]),default:""},striped:Boolean,stripedFlow:Boolean,format:{type:l(Function),default:e=>`${e}%`}}),_=p({name:"ElProgress"}),E=p((L=((e,t)=>{for(var a in t||(t={}))r.call(t,a)&&o(e,a,t[a]);if(s)for(var a of s(t))n.call(t,a)&&o(e,a,t[a]);return e})({},_),z={props:W,setup(e){const t=e,a={success:"#13ce66",exception:"#ff4949",warning:"#e6a23c",default:"#20a0ff"},s=u("progress"),r=d(()=>{const e={width:`${t.percentage}%`,animationDuration:`${t.duration}s`},a=M(t.percentage);return a.includes("gradient")?e.background=a:e.backgroundColor=a,e}),n=d(()=>(t.strokeWidth/t.width*100).toFixed(1)),o=d(()=>["circle","dashboard"].includes(t.type)?Number.parseInt(""+(50-Number.parseFloat(n.value)/2),10):0),i=d(()=>{const e=o.value,a="dashboard"===t.type;return`\n M 50 50\n m 0 ${a?"":"-"}${e}\n a ${e} ${e} 0 1 1 0 ${a?"-":""}${2*e}\n a ${e} ${e} 0 1 1 0 ${a?"":"-"}${2*e}\n `}),l=d(()=>2*Math.PI*o.value),c=d(()=>"dashboard"===t.type?.75:1),p=d(()=>-1*l.value*(1-c.value)/2+"px"),T=d(()=>({strokeDasharray:`${l.value*c.value}px, ${l.value}px`,strokeDashoffset:p.value})),W=d(()=>({strokeDasharray:`${l.value*c.value*(t.percentage/100)}px, ${l.value}px`,strokeDashoffset:p.value,transition:"stroke-dasharray 0.6s ease 0s, stroke 0.6s ease, opacity ease 0.6s"})),_=d(()=>{let e;return e=t.color?M(t.percentage):a[t.status]||a.default,e}),E=d(()=>"warning"===t.status?f:"line"===t.type?"success"===t.status?b:y:"success"===t.status?h:v),L=d(()=>"line"===t.type?12+.4*t.strokeWidth:.111111*t.width+2),z=d(()=>t.format(t.percentage)),M=e=>{var a;const{color:s}=t;if(g(s))return s(e);if(k(s))return s;{const t=function(e){const t=100/e.length;return e.map((e,a)=>k(e)?{color:e,percentage:(a+1)*t}:e).sort((e,t)=>e.percentage-t.percentage)}(s);for(const a of t)if(a.percentage>e)return a.color;return null==(a=t[t.length-1])?void 0:a.color}};return(e,t)=>(w(),m("div",{class:$([O(s).b(),O(s).m(e.type),O(s).is(e.status),{[O(s).m("without-text")]:!e.showText,[O(s).m("text-inside")]:e.textInside}]),role:"progressbar","aria-valuenow":e.percentage,"aria-valuemin":"0","aria-valuemax":"100"},["line"===e.type?(w(),m("div",{key:0,class:$(O(s).b("bar"))},[j("div",{class:$(O(s).be("bar","outer")),style:N({height:`${e.strokeWidth}px`})},[j("div",{class:$([O(s).be("bar","inner"),{[O(s).bem("bar","inner","indeterminate")]:e.indeterminate},{[O(s).bem("bar","inner","striped")]:e.striped},{[O(s).bem("bar","inner","striped-flow")]:e.stripedFlow}]),style:N(O(r))},[(e.showText||e.$slots.default)&&e.textInside?(w(),m("div",{key:0,class:$(O(s).be("bar","innerText"))},[I(e.$slots,"default",{percentage:e.percentage},()=>[j("span",null,P(O(z)),1)])],2)):x("v-if",!0)],6)],6)],2)):(w(),m("div",{key:1,class:$(O(s).b("circle")),style:N({height:`${e.width}px`,width:`${e.width}px`})},[(w(),m("svg",{viewBox:"0 0 100 100"},[j("path",{class:$(O(s).be("circle","track")),d:O(i),stroke:`var(${O(s).cssVarName("fill-color-light")}, #e5e9f2)`,"stroke-linecap":e.strokeLinecap,"stroke-width":O(n),fill:"none",style:N(O(T))},null,14,["d","stroke","stroke-linecap","stroke-width"]),j("path",{class:$(O(s).be("circle","path")),d:O(i),stroke:O(_),fill:"none",opacity:e.percentage?1:0,"stroke-linecap":e.strokeLinecap,"stroke-width":O(n),style:N(O(W))},null,14,["d","stroke","opacity","stroke-linecap","stroke-width"])]))],6)),!e.showText&&!e.$slots.default||e.textInside?x("v-if",!0):(w(),m("div",{key:2,class:$(O(s).e("text")),style:N({fontSize:`${O(L)}px`})},[I(e.$slots,"default",{percentage:e.percentage},()=>[e.status?(w(),B(O(S),{key:1},{default:D(()=>[(w(),B(F(O(E))))]),_:1})):(w(),m("span",{key:0},P(O(z)),1))])],6))],10,["aria-valuenow"]))}},t(L,a(z))));var L,z;const M=T(c(E,[["__file","progress.vue"]]));export{M as E};

View File

@ -1 +1 @@
var e=Object.defineProperty,s=Object.defineProperties,a=Object.getOwnPropertyDescriptors,t=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable,l=(s,a,t)=>a in s?e(s,a,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[a]=t,o=(e,s)=>{for(var a in s||(s={}))i.call(s,a)&&l(e,a,s[a]);if(t)for(var a of t(s))r.call(s,a)&&l(e,a,s[a]);return e},n=(e,t)=>s(e,a(t));import{a2 as u,a_ as p,_ as c,d as v,X as d,w as f,e as m,f as y,j as S,p as h,u as b,i as g,a8 as w,a7 as x,ae as j,a as $,a3 as O,o as _,c as k,b as E,k as P,h as C,g as z,y as B,z as I,au as q,ab as D,a$ as N,b0 as W,m as V,l as X,aq as A,ap as F}from"./index-DBHnxsy6.js";import{C as G}from"./index-MOpuiu9Z.js";import{u as H}from"./index-y_oew012.js";const J=u({space:{type:[Number,String],default:""},active:{type:Number,default:0},direction:{type:String,default:"horizontal",values:["horizontal","vertical"]},alignCenter:{type:Boolean},simple:{type:Boolean},finishStatus:{type:String,values:["wait","process","finish","error","success"],default:"finish"},processStatus:{type:String,values:["wait","process","finish","error","success"],default:"process"}}),K={[G]:(e,s)=>[e,s].every(p)},L="ElSteps",M=v({name:"ElSteps"});var Q=c(v(n(o({},M),{props:J,emits:K,setup(e,{emit:s}){const a=e,t=d("steps"),{children:i,addChild:r,removeChild:l,ChildrenSorter:o}=H(w(),"ElStep");return f(i,()=>{i.value.forEach((e,s)=>{e.setIndex(s)})}),x(L,{props:a,steps:i,addStep:r,removeStep:l}),f(()=>a.active,(e,a)=>{s(G,e,a)}),(e,s)=>(y(),m("div",{class:g([b(t).b(),b(t).m(e.simple?"simple":e.direction)])},[S(e.$slots,"default"),h(b(o))],2))}})),[["__file","steps.vue"]]);const R=u({title:{type:String,default:""},icon:{type:j},description:{type:String,default:""},status:{type:String,values:["","wait","process","finish","error","success"],default:""}}),T=v({name:"ElStep"});var U=c(v(n(o({},T),{props:R,setup(e){const s=e,a=d("step"),t=$(-1),i=$({}),r=$(""),l=O(L),o=w();_(()=>{f([()=>l.props.active,()=>l.props.processStatus,()=>l.props.finishStatus],([e])=>{J(e)},{immediate:!0})});const n=k(()=>s.status||r.value),u=k(()=>{const e=l.steps.value[t.value-1];return e?e.internalStatus.value:"wait"}),c=k(()=>l.props.alignCenter),v=k(()=>"vertical"===l.props.direction),x=k(()=>l.props.simple),j=k(()=>l.steps.value.length),A=k(()=>{var e;return(null==(e=l.steps.value[j.value-1])?void 0:e.uid)===o.uid}),F=k(()=>x.value?"":l.props.space),G=k(()=>[a.b(),a.is(x.value?"simple":l.props.direction),a.is("flex",A.value&&!F.value&&!c.value),a.is("center",c.value&&!v.value&&!x.value)]),H=k(()=>{const e={flexBasis:p(F.value)?`${F.value}px`:F.value?F.value:100/(j.value-(c.value?0:1))+"%"};return v.value||A.value&&(e.maxWidth=100/j.value+"%"),e}),J=e=>{e>t.value?r.value=l.props.finishStatus:e===t.value&&"error"!==u.value?r.value=l.props.processStatus:r.value="wait";const s=l.steps.value[t.value-1];s&&s.calcProgress(r.value)},K={uid:o.uid,getVnode:()=>o.vnode,currentStatus:n,internalStatus:r,setIndex:e=>{t.value=e},calcProgress:e=>{const s="wait"===e,a={transitionDelay:`${s?"-":""}${150*t.value}ms`},r=e===l.props.processStatus||s?0:100;a.borderWidth=r&&!x.value?"1px":0,a["vertical"===l.props.direction?"height":"width"]=`${r}%`,i.value=a}};return l.addStep(K),E(()=>{l.removeStep(K)}),(e,s)=>(y(),m("div",{style:z(b(H)),class:g(b(G))},[P(" icon & line "),C("div",{class:g([b(a).e("head"),b(a).is(b(n))])},[b(x)?P("v-if",!0):(y(),m("div",{key:0,class:g(b(a).e("line"))},[C("i",{class:g(b(a).e("line-inner")),style:z(i.value)},null,6)],2)),C("div",{class:g([b(a).e("icon"),b(a).is(e.icon||e.$slots.icon?"icon":"text")])},[S(e.$slots,"icon",{},()=>[e.icon?(y(),B(b(D),{key:0,class:g(b(a).e("icon-inner"))},{default:I(()=>[(y(),B(q(e.icon)))]),_:1},8,["class"])):"success"===b(n)?(y(),B(b(D),{key:1,class:g([b(a).e("icon-inner"),b(a).is("status")])},{default:I(()=>[h(b(N))]),_:1},8,["class"])):"error"===b(n)?(y(),B(b(D),{key:2,class:g([b(a).e("icon-inner"),b(a).is("status")])},{default:I(()=>[h(b(W))]),_:1},8,["class"])):b(x)?P("v-if",!0):(y(),m("div",{key:3,class:g(b(a).e("icon-inner"))},V(t.value+1),3))])],2)],2),P(" title & description "),C("div",{class:g(b(a).e("main"))},[C("div",{class:g([b(a).e("title"),b(a).is(b(n))])},[S(e.$slots,"title",{},()=>[X(V(e.title),1)])],2),b(x)?(y(),m("div",{key:0,class:g(b(a).e("arrow"))},null,2)):(y(),m("div",{key:1,class:g([b(a).e("description"),b(a).is(b(n))])},[S(e.$slots,"description",{},()=>[X(V(e.description),1)])],2))],2)],6))}})),[["__file","item.vue"]]);const Y=F(Q,{Step:U}),Z=A(U);export{Y as E,Z as a};
var e=Object.defineProperty,s=Object.defineProperties,a=Object.getOwnPropertyDescriptors,t=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable,l=(s,a,t)=>a in s?e(s,a,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[a]=t,o=(e,s)=>{for(var a in s||(s={}))i.call(s,a)&&l(e,a,s[a]);if(t)for(var a of t(s))r.call(s,a)&&l(e,a,s[a]);return e},n=(e,t)=>s(e,a(t));import{a2 as u,b4 as p,_ as c,d as v,X as d,w as f,e as m,f as y,j as S,p as h,u as b,i as g,a8 as w,a7 as x,ae as j,a as O,a3 as $,o as k,c as _,b as E,k as P,h as C,g as B,y as z,z as I,au as D,ab as N,b1 as W,b5 as q,m as V,l as X,aq as A,ap as F}from"./index-CZ0Lvzl5.js";import{C as G}from"./index-K2zzami3.js";import{u as H}from"./index-BcimyWJU.js";const J=u({space:{type:[Number,String],default:""},active:{type:Number,default:0},direction:{type:String,default:"horizontal",values:["horizontal","vertical"]},alignCenter:{type:Boolean},simple:{type:Boolean},finishStatus:{type:String,values:["wait","process","finish","error","success"],default:"finish"},processStatus:{type:String,values:["wait","process","finish","error","success"],default:"process"}}),K={[G]:(e,s)=>[e,s].every(p)},L="ElSteps",M=v({name:"ElSteps"});var Q=c(v(n(o({},M),{props:J,emits:K,setup(e,{emit:s}){const a=e,t=d("steps"),{children:i,addChild:r,removeChild:l,ChildrenSorter:o}=H(w(),"ElStep");return f(i,()=>{i.value.forEach((e,s)=>{e.setIndex(s)})}),x(L,{props:a,steps:i,addStep:r,removeStep:l}),f(()=>a.active,(e,a)=>{s(G,e,a)}),(e,s)=>(y(),m("div",{class:g([b(t).b(),b(t).m(e.simple?"simple":e.direction)])},[S(e.$slots,"default"),h(b(o))],2))}})),[["__file","steps.vue"]]);const R=u({title:{type:String,default:""},icon:{type:j},description:{type:String,default:""},status:{type:String,values:["","wait","process","finish","error","success"],default:""}}),T=v({name:"ElStep"});var U=c(v(n(o({},T),{props:R,setup(e){const s=e,a=d("step"),t=O(-1),i=O({}),r=O(""),l=$(L),o=w();k(()=>{f([()=>l.props.active,()=>l.props.processStatus,()=>l.props.finishStatus],([e])=>{J(e)},{immediate:!0})});const n=_(()=>s.status||r.value),u=_(()=>{const e=l.steps.value[t.value-1];return e?e.internalStatus.value:"wait"}),c=_(()=>l.props.alignCenter),v=_(()=>"vertical"===l.props.direction),x=_(()=>l.props.simple),j=_(()=>l.steps.value.length),A=_(()=>{var e;return(null==(e=l.steps.value[j.value-1])?void 0:e.uid)===o.uid}),F=_(()=>x.value?"":l.props.space),G=_(()=>[a.b(),a.is(x.value?"simple":l.props.direction),a.is("flex",A.value&&!F.value&&!c.value),a.is("center",c.value&&!v.value&&!x.value)]),H=_(()=>{const e={flexBasis:p(F.value)?`${F.value}px`:F.value?F.value:100/(j.value-(c.value?0:1))+"%"};return v.value||A.value&&(e.maxWidth=100/j.value+"%"),e}),J=e=>{e>t.value?r.value=l.props.finishStatus:e===t.value&&"error"!==u.value?r.value=l.props.processStatus:r.value="wait";const s=l.steps.value[t.value-1];s&&s.calcProgress(r.value)},K={uid:o.uid,getVnode:()=>o.vnode,currentStatus:n,internalStatus:r,setIndex:e=>{t.value=e},calcProgress:e=>{const s="wait"===e,a={transitionDelay:`${s?"-":""}${150*t.value}ms`},r=e===l.props.processStatus||s?0:100;a.borderWidth=r&&!x.value?"1px":0,a["vertical"===l.props.direction?"height":"width"]=`${r}%`,i.value=a}};return l.addStep(K),E(()=>{l.removeStep(K)}),(e,s)=>(y(),m("div",{style:B(b(H)),class:g(b(G))},[P(" icon & line "),C("div",{class:g([b(a).e("head"),b(a).is(b(n))])},[b(x)?P("v-if",!0):(y(),m("div",{key:0,class:g(b(a).e("line"))},[C("i",{class:g(b(a).e("line-inner")),style:B(i.value)},null,6)],2)),C("div",{class:g([b(a).e("icon"),b(a).is(e.icon||e.$slots.icon?"icon":"text")])},[S(e.$slots,"icon",{},()=>[e.icon?(y(),z(b(N),{key:0,class:g(b(a).e("icon-inner"))},{default:I(()=>[(y(),z(D(e.icon)))]),_:1},8,["class"])):"success"===b(n)?(y(),z(b(N),{key:1,class:g([b(a).e("icon-inner"),b(a).is("status")])},{default:I(()=>[h(b(W))]),_:1},8,["class"])):"error"===b(n)?(y(),z(b(N),{key:2,class:g([b(a).e("icon-inner"),b(a).is("status")])},{default:I(()=>[h(b(q))]),_:1},8,["class"])):b(x)?P("v-if",!0):(y(),m("div",{key:3,class:g(b(a).e("icon-inner"))},V(t.value+1),3))])],2)],2),P(" title & description "),C("div",{class:g(b(a).e("main"))},[C("div",{class:g([b(a).e("title"),b(a).is(b(n))])},[S(e.$slots,"title",{},()=>[X(V(e.title),1)])],2),b(x)?(y(),m("div",{key:0,class:g(b(a).e("arrow"))},null,2)):(y(),m("div",{key:1,class:g([b(a).e("description"),b(a).is(b(n))])},[S(e.$slots,"description",{},()=>[X(V(e.description),1)])],2))],2)],6))}})),[["__file","item.vue"]]);const Y=F(Q,{Step:U}),Z=A(U);export{Y as E,Z as a};

Binary file not shown.

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