423 Commits
Author SHA1 Message Date
dzc c1411e0fde 11 2026-11-05 15:30:19 +08:00
dzc a9bac9d3bf feat:聊天后台撤回消息
fix:聊天禁用bug
2026-11-03 19:09:09 +08:00
dzc 57a35f2f9d feat:会员管理优化增加导出 2026-10-30 20:03:11 +08:00
dzc 42d7049318 feat:会员管理增加搜索条件 2026-10-29 18:46:29 +08:00
dzc 3960f14cd6 fix: 补齐流程模拟组件的 ids 依赖
bpmn-js-token-simulation 0.36.3 imports the default Ids constructor without declaring ids.
Declare its ids 1.0.5 dependency through pnpm packageExtensions so clean installs use the compatible constructor instead of the unrelated ids 3.x named export.
Validated frozen-lockfile installation and production build.
2026-10-29 16:58:01 +08:00
dzc f087d6ba57 feat: 合入航空账号、子账号及会员管理更新
Import the supplied management frontend, including request encryption, withdrawal updates, and vendored dependencies.
Use incoming versions for overlapping source files and retain existing environment configuration absent from the supplied directory.
2026-10-29 16:52:46 +08:00
dzc 401c7c1dd6 fix:bug修改 2026-07-30 20:20:38 +08:00
dzc 0c92763537 11 2026-04-16 16:51:48 +08:00
dzc 22d5881e21 feat:客服更新 2026-03-27 11:28:08 +08:00
dzc 11b4ce4c95 11 2026-03-27 09:41:02 +08:00
dzc 4c914b2bce feat:第二版ppt修改 2026-01-13 10:47:26 +08:00
dzc feec151583 feat:bug修改 2026-01-07 14:38:25 +08:00
dzc b984cfed05 feat:修改bug 2026-01-06 11:41:34 +08:00
dzc 33014b8ca5 feat:礼物提现 2026-01-04 17:20:51 +08:00
dzc 2d3114a772 feat:转账 2025-12-31 17:20:51 +08:00
dzc c3ddb8acee feat:微信号错误审核 2025-12-26 17:28:55 +08:00
dzc 1b95dc7655 feat:bug修改 2025-12-26 11:08:23 +08:00
dzc 56676b1222 feat:充值套餐 2025-12-12 17:12:24 +08:00
dzc 88f1d3b41b feat:开通会员订单记录 2025-12-09 15:58:33 +08:00
dzc a44073ab70 feat:后台修改用户标签 2025-12-08 17:03:15 +08:00
dzc 38633f0dd7 feat:新人用户tag自动添加、删除 2025-12-08 16:28:44 +08:00
dzc b07ea27fdc feat:兑换比例配置 2025-12-08 13:22:19 +08:00
dzc eadb1571b1 feat:查看微信记录 2025-12-08 11:05:15 +08:00
dzc 79523f9977 feat:查看微信,vip详细配置 2025-12-08 10:40:14 +08:00
dzc 0745c147e0 feat:举报管理 2025-12-08 09:52:45 +08:00
dzc 3d5e0ab41d feat:清理过期会员 2025-12-05 17:10:29 +08:00
dzc 23f7f8ecf1 feat:后台功能 2025-12-05 13:39:53 +08:00
dzc 5daecfe0d9 feat:微信认证 2025-12-04 15:29:32 +08:00
dzc dc89dd0b59 feat:认证 2025-12-03 10:50:54 +08:00
dzc a14b99cc60 feat:聊天会员限制 2025-11-29 13:44:48 +08:00
dzc ef873cd140 feat:用户配置 2025-11-28 10:41:25 +08:00
dzc 711391fc4f feat:搜索 2025-11-27 14:24:00 +08:00
dzc 45c15dd277 feat:用户tag 2025-11-27 13:23:01 +08:00
dzc 6ee9a5692b feat:聊天记录 2025-11-26 14:14:00 +08:00
dzc 94ee3201e2 feat:敏感词页面 2025-11-26 13:17:49 +08:00
dzc f68a0f9b5e feat:前端页面 2025-11-24 15:12:44 +08:00
dzc 55918f7d1a feat:后台页面 2025-11-24 15:03:28 +08:00
dzc 699d92a217 11 2025-11-24 10:26:42 +08:00
dzc 0419ea5dcb feat:用户反馈 2025-11-24 10:02:10 +08:00
dzc e938f9bd1e feat:礼物管理 2025-11-10 16:07:02 +08:00
dzc 8b0b3bec3a feat:会员 2025-11-10 12:12:24 +08:00
dzc c09424be8f feat:朋友圈代码生成 2025-10-29 10:55:50 +08:00
dzc 6dd2bbde5e 11 2025-10-19 16:54:18 +08:00
dzc b122ec26c7 11 2025-10-19 16:53:46 +08:00
dzc 8541ba1120 11 2025-10-19 16:52:19 +08:00
dzc fdc1587225 11 2025-10-19 16:50:13 +08:00
yangmf_0726 21fde5a6e4 feat:图片压缩 2025-10-16 16:34:24 +08:00
dzc 72e9ded8e2 feat:导出选择 2025-10-15 11:31:06 +08:00
dzc f447cf5b15 Merge branch 'master' of https://gitea.zianxin.com/zax/Distributor-City-pc 2025-10-15 11:25:22 +08:00
dzc 476498e6ad 11 2025-10-15 11:25:18 +08:00
yangmf_0726 1c9956bb4b feat:实现一键打印 2025-10-15 10:14:53 +08:00
yangmf_0726 035606e184 Merge branch 'master' of https://gitea.zianxin.com/zax/Distributor-City-pc 2025-10-13 14:16:33 +08:00
yangmf_0726 957f961c65 11 2025-10-13 14:16:26 +08:00
dzc efac1c0777 11 2025-10-13 14:16:02 +08:00
dzc a53435091e feat:批量发货 2025-10-13 13:06:26 +08:00
yangmf_0726 407cec8df6 feat:后台取消发货 2025-10-11 18:51:34 +08:00
dzc c1522f1cbe feat:订单导出 2025-10-11 17:35:07 +08:00
yangmf_0726 e7544d1db1 feat:面单打开新页面 2025-09-26 15:53:37 +08:00
yangmf_0726 06bb6e9f44 1 2025-09-26 15:25:45 +08:00
yangmf_0726 4b7d0604f4 11 2025-09-26 15:24:19 +08:00
yangmf_0726 82b68c3a79 11 2025-09-26 15:01:31 +08:00
yangmf_0726 b5ef61a601 11 2025-09-26 14:04:47 +08:00
yangmf_0726 08ac9db5eb feat
:优化登录页面
2025-09-26 12:59:40 +08:00
yangmf_0726 848cc46015 11 2025-09-25 15:55:55 +08:00
yangmf_0726 d87856a6f0 feat:面单添加商品信息 2025-09-25 15:39:42 +08:00
yangmf_0726 f5f071f1dc feat:添加取消按钮 2025-09-25 10:47:59 +08:00
yangmf_0726 461dc7f28b feat:打印面单功能 2025-09-25 10:38:56 +08:00
yangmf_0726 fdc1f7e3eb 11 2025-09-24 11:57:28 +08:00
yangmf_0726 8442be7e19 Merge branch 'master' of https://gitea.zianxin.com/zax/Distributor-City-pc 2025-09-24 09:09:29 +08:00
yangmf_0726 11a4d26096 feat:创建快递订单 2025-09-23 18:04:45 +08:00
dzc cb013c2c87 feat:合作伙伴支付 2025-08-22 16:36:06 +08:00
yangmf_0726 b0153e20bb 11 2025-08-21 15:44:19 +08:00
yangmf_0726 1f9f43467a 11 2025-08-18 16:19:24 +08:00
yangmf_0726 b21b23e07e 11 2025-08-18 16:10:58 +08:00
jiangzewen 9817d4c39b 上传地址修改 2025-07-28 08:50:58 +08:00
jiangzewen 6cf155bff7 第一次提交 2025-06-11 08:28:55 +08:00
jiangzewen 6cf960c101 11 2025-04-10 09:40:16 +08:00
YunaiV 16a98e5a21 Merge branch 'feature/bpm' of https://gitee.com/yudaocode/yudao-ui-admin-vue3 2025-03-30 10:54:06 +08:00
YunaiV 8d9d9e76b8 【代码评审】AI:工作流 2025-03-30 10:52:38 +08:00
芋道源码 dafc54c7dd !756 feat: AI工作流优化
Merge pull request !756 from Lesan/master-ai工作流
2025-03-30 02:20:43 +00:00
Lesan 9262fe5767 feat: AI工作流优化 2025-03-28 15:41:59 +08:00
YunaiV e75dbd6762 【代码评审】BPM:子流程的代码 2025-03-25 12:57:56 +08:00
芋道源码 17415a5368 !752 子流程优化
Merge pull request !752 from Lesan/feature/bpm-子流程
2025-03-25 04:51:56 +00:00
Lesan cf122fa344 feat: 流程时间线适配子流程节点 2025-03-25 11:07:42 +08:00
YunaiV 05393006c1 【代码评审】AI:工作流 2025-03-25 09:54:55 +08:00
芋道源码 047b9f327f !749 feat: AI工作流
Merge pull request !749 from Lesan/master-ai工作流
2025-03-25 01:43:54 +00:00
Lesan ce3b95d1ec feat: AI工作流 2025-03-24 15:39:53 +08:00
YunaiV 3d4c8f24c7 Merge branch 'master' of https://github.com/yudaocode/yudao-ui-admin-vue3 2025-03-23 17:30:34 +08:00
芋道源码 28c1e2d5f0 Merge pull request #134 from lb1565387341/liubei
解决重复登录问题
2025-03-23 17:29:27 +08:00
YunaiV 286628d101 【代码优化】BPM:流程模型->基本信息->谁可以发起,支持指定多个部门 2025-03-23 17:27:50 +08:00
芋道源码 c3ad1ec30a Merge pull request #139 from minivv/master
【Simple设计器】流程模型->基本信息->谁可以发起,支持指定多个部门
2025-03-23 17:02:52 +08:00
YunaiV 80ac4b0d7a Merge branch 'master' of https://gitee.com/yudaocode/yudao-ui-admin-vue3 into feature/bpm 2025-03-23 16:59:38 +08:00
YunaiV 5216d184a9 【功能新增】AI:增加 SiliconFlow 绘图功能 2025-03-23 11:22:00 +08:00
YunaiV 7508eb5998 【功能修复】BPM:创建流程-SIMPLE设计器-多个条件时-最新的条件会覆盖上层所有的条件 2025-03-23 08:58:04 +08:00
芋道源码 1403ac0763 !747 修复 Dialog 组件在 v-model 双向绑定的属性无效果问题,问题出在弹窗的右上角按钮点击关闭后,未通知父组件变更
Merge pull request !747 from Bin/fix-bug
2025-03-23 00:07:27 +00:00
芋道源码 ae03503ee4 !741 【轻量级 PR】修复操作日志和登录日志页面中的查询和导出按钮权限标识错误的问题
Merge pull request !741 from Too子牙/master
2025-03-22 23:59:59 +00:00
YunaiV a186806456 【代码优化】BPM:OA 请假界面 2025-03-23 07:54:42 +08:00
芋道源码 6197c144b6 !745 feat:增加oa案例流程,业务表单发起时选择审批人
Merge pull request !745 from SamllNorth_Lee/feature/bpm
2025-03-22 23:12:09 +00:00
Bin a4fe1db1a5 修复 Dialog 组件在 v-model 双向绑定的属性无效果问题,问题出在弹窗的右上角按钮点击关闭后,未通知父组件变更 2025-03-23 02:21:36 +08:00
lizhixian 913c995562 feat:增加案例流程,业务表单发起时选择审批人 2025-03-21 11:48:13 +08:00
lizhixian a5c533bff0 feat: 增加案例流程,业务表单发起时选择审批人 2025-03-21 10:24:16 +08:00
smallNorthLee 4b554204a7 feat: oa业务表单添加审批人选择 2025-03-20 22:50:58 +08:00
LiuBanDong 70821d1b12 【轻量级 PR】修复操作日志和登录日志页面中的查询和导出按钮权限标识错误的问题 2025-03-18 09:04:54 +08:00
芋道源码 772deb5016 !739 feat: 任务前后置通知
Merge pull request !739 from Lesan/feature/bpm-任务前后置通知
2025-03-17 13:22:07 +00:00
郑威 1b3cbfc881 【Simple设计器】流程模型->基本信息->谁可以发起,支持指定多个部门
指定部门可以在部门新增成员后无需重新修改相关流程

# Conflicts:
#	src/components/SimpleProcessDesignerV2/src/nodes-config/StartUserNodeConfig.vue
#	src/views/bpm/model/form/index.vue
2025-03-17 15:47:07 +08:00
Lesan 0439ad29ba feat: 任务前后置通知 2025-03-17 08:55:19 +08:00
芋道源码 20a2ced413 !738 【代码评审】IoT:支持设备管理等功能
Merge pull request !738 from 芋道源码/feature/iot
2025-03-16 15:45:58 +00:00
YunaiV e29d6f910a Merge branch 'master' of https://gitee.com/yudaocode/yudao-ui-admin-vue3 into feature/iot
# Conflicts:
#	pnpm-lock.yaml
#	src/utils/index.ts
2025-03-16 23:45:34 +08:00
YunaiV c87ed7fe17 【代码评审】IoT:数据桥梁的接入 2025-03-16 23:44:56 +08:00
YunaiV 41f2c7199e Merge branch 'feature/bpm' of https://gitee.com/yudaocode/yudao-ui-admin-vue3 2025-03-16 22:44:21 +08:00
芋道源码 02baa4c58a !737 fix: 修复审批通过时,校验审批节点是否配置审批人无返回问题
Merge pull request !737 from SamllNorth_Lee/feature/bpm
2025-03-16 14:44:07 +00:00
smallNorthLee 07d39d7428 review: 删掉TODO注释,此场景已由后端处理 2025-03-16 22:36:49 +08:00
smallNorthLee fd3b659fe9 fix: 修复审批通过时,校验审批节点是否配置审批人无返回问题 2025-03-16 22:27:03 +08:00
YunaiV 79507aef6d 【代码评审】IoT:数据桥梁的接入 2025-03-16 21:00:23 +08:00
芋道源码 9ca5ffbf22 !726 【功能新增】IoT: 数据桥梁管理
Merge pull request !726 from puhui999/feature/iot
2025-03-16 12:52:08 +00:00
YunaiV 78e29940be Merge branch 'feature/bpm' of https://gitee.com/yudaocode/yudao-ui-admin-vue3 2025-03-16 17:26:22 +08:00
芋道源码 98cf770f7a !736 【功能修复】BPM:候选人策略常量重复
Merge pull request !736 from momo/master
2025-03-16 06:49:48 +00:00
wlf 72b1aa07f9 【功能修复】BPM:候选人策略常量重复 2025-03-16 12:56:21 +08:00
YunaiV 6a6f52c4c4 【功能修复】商城:商品列表,导出会报错的问题 2025-03-15 22:51:34 +08:00
YunaiV 5cfe0661d2 【功能修复】商城:售后详情,商品不展示的问题 2025-03-15 21:54:32 +08:00
YunaiV 67c7fb3856 【功能修复】商城:解决线下自提点初次绑定用户时页面卡死问题 2025-03-15 21:14:45 +08:00
YunaiV 19aef88d9b 【功能修复】全局:修复 pnpm 10 无法构建项目的问题 2025-03-15 20:23:50 +08:00
YunaiV 9f96c6177d 【代码评审】BPM:feat:添加simple设计器,分支条件下拉框非必填字段提示 2025-03-15 16:51:01 +08:00
芋道源码 d9db5818b8 !729 feat:添加simple设计器,分支条件下拉框非必填字段提示
Merge pull request !729 from SamllNorth_Lee/feature/bpm
2025-03-15 08:49:23 +00:00
安浩浩 3c52808bfb 【代码修复】 IoT :修正注册时 elTableRef 的引用方式 2025-03-15 16:25:38 +08:00
芋道源码 8ede888784 !734 fix: 修复单个顶级菜单加载报错的问题
Merge pull request !734 from chenting/N/A
2025-03-15 08:20:57 +00:00
芋道源码 b8e353871d !731 fix:修复表单联动数据json解析错误问题
Merge pull request !731 from 189******93/fix-form-create
2025-03-15 08:19:37 +00:00
芋道源码 22e97ef62b !733 fix: 代码评审修改
Merge pull request !733 from Lesan/feature/bpm-流程前后置通知
2025-03-15 08:08:33 +00:00
芋道源码 d2b993311f !735 2.4.2:工作流的更新
Merge pull request !735 from 芋道源码/feature/bpm
2025-03-15 05:24:26 +00:00
YunaiV b452b08a80 更新 README:工作流(增加钉钉、飞书)能力 2025-03-15 13:19:18 +08:00
YunaiV 7d352397e8 Merge branch 'master' of https://gitee.com/yudaocode/yudao-ui-admin-vue3 into feature/bpm 2025-03-15 13:17:56 +08:00
chenting 9679a6df18 fix: 修复单个顶级菜单加载报错的问题
修复 https://gitee.com/yudaocode/yudao-ui-admin-vue3/issues/IBRPG0
并兼容 https://gitee.com/yudaocode/yudao-ui-admin-vue3/issues/IB9N2J

Signed-off-by: chenting <1016830869@qq.com>
2025-03-15 03:23:00 +00:00
LesanOuO 5c6cd4dda0 fix: 代码评审修改 2025-03-15 10:51:43 +08:00
芋道源码 f308be80da !730 feat: 流程前后置通知
Merge pull request !730 from Lesan/feature/bpm-流程前后置通知
2025-03-15 00:25:36 +00:00
芋道源码 b63179ef42 !732 Spring AI 1.0.0 M6 适配:增加知识库、工具调用(function calling)、工作流、豆包/混元/硅基流动等模型的接入
Merge pull request !732 from 芋道源码/dev
2025-03-14 14:54:20 +00:00
YunaiV 824b0328f1 【代码优化】AI:完善相关注释 2025-03-14 22:53:43 +08:00
YunaiV 46b81b2937 【功能新增】AI:更新最新的 AI 介绍图 2025-03-14 22:21:02 +08:00
YunaiV be6ae75ce5 Merge branch 'master' of https://gitee.com/yudaocode/yudao-ui-admin-vue3 into dev
# Conflicts:
#	pnpm-lock.yaml
#	src/views/ai/model/model/index.vue
#	src/views/bpm/model/form/index.vue
2025-03-14 22:18:04 +08:00
YunaiV 4092bcc534 【功能新增】AI:更新最新的 AI 介绍图 2025-03-14 22:12:39 +08:00
YunaiV 56c4ed366f 【功能新增】AI:增加 AI 对话,与 tool 的打通 2025-03-14 21:11:17 +08:00
YunaiV 75575be221 【功能新增】AI:增加函数的管理 2025-03-14 19:54:55 +08:00
puhui999 38f0aff482 【代码优化】IoT: 数据桥梁配置切换类型时重置配置 2025-03-14 17:07:24 +08:00
puhui999 59062a1c17 【代码优化】IoT: 数据桥梁配置切换使用字典值 2025-03-14 16:45:05 +08:00
puhui999 5c0a0e660b 【代码优化】IoT: 数据桥梁函数注释统一样式 2025-03-14 16:35:16 +08:00
Lesan a1f1f9ae99 feat: 流程前后置通知 2025-03-14 09:30:40 +08:00
18921220793 19caff2109 fix:修复表单联动数据json解析错误问题 2025-03-14 09:16:46 +08:00
lizhixian 95452312c5 review:重构代码 2025-03-13 17:41:08 +08:00
lizhixian 49cca0cde0 feat: 分支节点条件下拉选择添加clearable 2025-03-13 17:23:51 +08:00
lizhixian 5538e6e05a fix:添加simple设计器,分支条件下拉框非必填字段提示 2025-03-13 16:41:49 +08:00
YunaiV 3685e438fa 【功能完善】IoT:增加 device config 配置 2025-03-13 08:18:12 +08:00
芋道源码 77a0801a37 !727 fix:simple设计器缺少“审批人自选“条件
Merge pull request !727 from SamllNorth_Lee/feature/bpm
2025-03-12 22:54:05 +00:00
YunaiV 8a7e2291e7 【功能新增】AI:知识库新建时,模型选择改成 select 下拉 2025-03-13 06:07:13 +08:00
lizhixian 1d17c18f41 remove: 移除debugger 2025-03-12 09:00:15 +08:00
smallNorthLee 9e5726d599 fix:simple设计器缺少“审批人自选“条件 2025-03-11 21:58:56 +08:00
YunaiV 9376374ca9 【功能新增】AI:知识库新建时,模型选择改成 select 下拉 2025-03-10 08:46:46 +08:00
YunaiV fc9995d8c8 【功能新增】AI:聊天记录返回时,增加 segments 2025-03-10 08:41:45 +08:00
YunaiV 221c9d58ca 【功能新增】AI:聊天记录返回时,增加 segments 2025-03-09 21:00:47 +08:00
puhui999 065cb816d2 【代码优化】IoT: 数据桥梁配置编辑优化 2025-03-09 20:04:18 +08:00
puhui999 fd0b7be89f 【代码优化】IoT: HTTP 数据桥梁配置编辑优化 2025-03-09 19:30:31 +08:00
puhui999 2fd3422c06 【功能完善】IoT: 数据桥梁配置编辑回显 2025-03-09 18:14:22 +08:00
puhui999 b95cac2e70 【功能完善】IoT: 数据桥梁配置 2025-03-09 18:05:22 +08:00
YunaiV 47e1cd9c1d 【功能新增】AI:聊天角色,新增 knowledge 的引用绑定 2025-03-09 17:38:44 +08:00
puhui999 82e9b1bcff 【功能完善】IoT: 数据桥梁配置 2025-03-09 15:17:44 +08:00
puhui999 e38b96c959 【功能新增】IoT: 数据桥梁管理 2025-03-09 14:00:30 +08:00
YunaiV 0e452aa1a7 【代码评审】BPM:下一个审批人 2025-03-06 09:43:22 +08:00
芋道源码 202d4b6795 !723 fix: 流程再次发起,预测节点查询
Merge pull request !723 from SamllNorth_Lee/feature/bpm
2025-03-06 01:29:05 +00:00
lizhixian 8244050ea0 review:代码审查 2025-03-05 17:31:45 +08:00
dylanmay 6636068bd5 feat: 设备配置接口对接 2025-03-05 16:22:05 +08:00
lizhixian 3725e9d352 review: 代码审查 2025-03-05 12:42:02 +08:00
lizhixian 63b8dd5729 review: 代码审查 2025-03-05 12:40:51 +08:00
smallNorthLee 5b6616a144 review: 修改接口名称 2025-03-04 22:57:41 +08:00
YunaiV d4a90b7dd5 【代码重构】AI:“聊天模型”重构为“模型”,支持 type 模型类型 2025-03-04 20:27:46 +08:00
YunaiV 24895bedb3 【代码重构】AI:“聊天模型”重构为“模型”,支持 type 模型类型 2025-03-03 21:55:39 +08:00
安浩浩 c65c056c8f 【功能新增】IoT: 设备详情新增MQTT连接参数查看功能 2025-03-03 21:52:36 +08:00
YunaiV 2ef484e700 【代码重构】AI:“聊天模型”重构为“模型”,支持 type 模型类型 2025-03-03 21:47:59 +08:00
YunaiV ae632ac23b 【代码重构】AI:“聊天模型”重构为“模型”,支持 type 模型类型 2025-03-03 21:26:24 +08:00
smallNorthLee 3b5a0ae290 fix: 流程再次发起,预测节点查询 2025-03-03 21:09:59 +08:00
lizhixian c2e99fb427 feat: 新增逻辑条,candidateStrategy=34,审批人自选 2025-03-03 14:38:29 +08:00
smallNorthLee a383363e69 feat: 新增获取下一个执行的流程节点接口 2025-03-02 22:30:10 +08:00
YunaiV 0f4216f6f7 【功能新增】AI:新增知识库分段的禁用 2025-03-02 22:16:35 +08:00
YunaiV c2a6b02b57 【功能新增】AI:新增知识库分段的新增 2025-03-02 21:52:41 +08:00
YunaiV 45ceacdcac 【功能新增】AI:增加召回测试的实现 2025-03-02 20:53:19 +08:00
YunaiV a26cb120d1 【功能新增】BPM:支持通过“历史”进行恢复 2025-03-02 09:56:44 +08:00
YunaiV 2a73b9c4fc 【代码优化】BPM:去除 bpm 冗余的路由 2025-03-02 08:14:03 +08:00
YunaiV 5259db9eaa 【代码优化】BPM:去除 bpm 冗余的路由 2025-03-02 08:11:35 +08:00
YunaiV bcecf5c750 【功能优化】BPM:优化 model 历史的展示 2025-03-02 08:05:37 +08:00
YunaiV ca791df4de 【代码评审】IoT:首页统计 2025-03-01 23:30:56 +08:00
芋道源码 cc1a025a4e !721 【功能新增】:IOT首页(后端code review修改配套版)
Merge pull request !721 from alwayssuper/feature/iot
2025-03-01 14:49:38 +00:00
YunaiV 21b65324a7 【功能优化】BPM:流程模型的列表,增加 type 字典 2025-03-01 21:00:40 +08:00
YunaiV 20564ed803 【功能优化】BPM:待审批、已审批的所属流程的筛选 2025-03-01 20:39:50 +08:00
YunaiV f974bf236e 【功能优化】BPM:我的流程,优化“流程状态”的展示 2025-03-01 19:58:49 +08:00
YunaiV 986d1cdfc2 移除冗余代码,已经改到 ai 目录下实现 2025-03-01 19:05:23 +08:00
YunaiV 8ef39c76d6 Merge branch 'master' of https://gitee.com/yudaocode/yudao-ui-admin-vue3 into feature/bpm 2025-03-01 17:45:26 +08:00
芋道源码 192453e47d !717 feat: bpm流程表单复制功能
Merge pull request !717 from Roan123/feature/bpm-form-copy
2025-03-01 09:45:16 +00:00
YunaiV 9a382530ae Merge branch 'master' of https://gitee.com/yudaocode/yudao-ui-admin-vue3 into feature/bpm 2025-03-01 17:37:25 +08:00
芋道源码 7993c32f94 !716 修复流程模块相关问题
Merge pull request !716 from huchao/master
2025-03-01 09:37:11 +00:00
YunaiV 8d8ada1751 【代码评审】BPM:下一个审批人 2025-03-01 17:29:22 +08:00
芋道源码 a911af3f29 !715 feat: 流程审批,预测下个节点是否需要选择审批人
Merge pull request !715 from SamllNorth_Lee/smallNorth/bpm
2025-03-01 08:44:58 +00:00
芋道源码 520c9af43c !722 fix: 修复流程设计,编辑时字段权限、是否需要签名、审批意见属性变更无效问题
Merge pull request !722 from SamllNorth_Lee/fix/bpm_update
2025-03-01 08:38:00 +00:00
YunaiV 1958c2bb9d 【功能新增】AI:知识库文档上传:90%,ProcessStep 已完成 2025-03-01 13:33:37 +08:00
YunaiV 809fb9fdfc 【功能新增】AI:知识库文档上传:70%,SplitStep 已完成 2025-03-01 11:41:07 +08:00
YunaiV de41b6cdba 【功能新增】AI:知识库文档上传:60%,SplitStep 完成度更高 2025-03-01 10:07:44 +08:00
YunaiV da91896419 【功能新增】AI:知识库文档上传:50%,SplitStep 基本完成 2025-03-01 08:45:58 +08:00
smallNorthLee bd9cdb73af fix: 修复流程设计,编辑时字段权限、是否需要签名、审批意见属性变更无效问题 2025-03-01 00:45:15 +08:00
YunaiV aeb59de673 【功能新增】AI:知识库文档上传:40%,SplitStep 初始化 2025-02-28 23:33:13 +08:00
YunaiV 7cd6a5d9b4 【功能新增】AI:知识库文档上传:20%,UploadStep 基本搭建出来 2025-02-28 23:01:03 +08:00
smallNorthLee 3ef04b55bc feat:添加todo 2025-02-28 22:56:22 +08:00
smallNorthLee 971dc4a4c2 Merge branch 'smallNorth/bpm' of https://gitee.com/Lee_SmallNorth/yudao-ui-admin-vue3 into smallNorth/bpm 2025-02-28 22:55:28 +08:00
smallNorthLee 10c65d3967 feat: 添加todo 2025-02-28 22:55:24 +08:00
YunaiV b7d7b11d31 【功能新增】AI:知识库文档上传:10% 搭建整体页面结构 2025-02-28 19:56:18 +08:00
YunaiV 94091598a3 【功能新增】AI:知识库与文档的列表 2025-02-28 18:56:46 +08:00
lizhixian cf03e72264 feat: 添加todo 2025-02-28 17:11:34 +08:00
alwayssuper 9640531c2a feat:home 2025-02-28 15:29:26 +08:00
alwayssuper 5137b4a4cb home 2025-02-28 15:20:28 +08:00
YunaiV 29dfd4550e 【代码评审】BPM:子流程的多实例配置 2025-02-28 13:29:55 +08:00
芋道源码 068ffc9d53 !720 fix: 代码评审修改
Merge pull request !720 from Lesan/feature/bpm-子流程
2025-02-28 05:28:13 +00:00
Lesan 5258c7b81a feat: bpmn设计器UserTask添加批量更新字段权限 2025-02-28 09:37:43 +08:00
Lesan afca393cac feat: bpmn设计器UserTask添加批量更新字段权限 2025-02-28 09:34:00 +08:00
Lesan c304d456c3 fix: 代码评审修改 2025-02-28 09:29:17 +08:00
alwayssuper 4547fbf2ce feat:iothome 2025-02-27 10:53:19 +08:00
alwayssuper b95a2b9796 feat: home 1 2025-02-27 10:44:13 +08:00
alwayssuper 1b9a3dd4fe feat: home 1 2025-02-27 10:39:50 +08:00
alwayssuper d6eb0cd850 feat: home 1 2025-02-27 09:54:38 +08:00
YunaiV d0b0c8d502 【代码评审】BPM:触发器 HTTP 异步 2025-02-27 09:53:14 +08:00
alwayssuper 9a3d1ad934 feat: home 1 2025-02-27 09:52:04 +08:00
alwayssuper b7d6c94657 feat: home 1 2025-02-27 09:47:20 +08:00
alwayssuper 4dfc8c1b04 feat: home 1 2025-02-27 09:38:19 +08:00
alwayssuper b72768ab4f feat: home 1 2025-02-27 09:29:46 +08:00
jason 91c3b94283 Merge branch 'feature/bpm' of https://gitee.com/yudaocode/yudao-ui-admin-vue3 into feature/bpm 2025-02-27 09:05:36 +08:00
jason 7652c41220 【代码评审修改】触发器 异步 Http 改成 Http 回调 2025-02-27 09:05:21 +08:00
YunaiV 9994059cad 【代码评审】BPM:子流程的多实例配置 2025-02-26 21:59:36 +08:00
芋道源码 5f2a220007 !718 feat: 子流程-多实例
Merge pull request !718 from Lesan/feature/bpm-子流程
2025-02-26 13:46:17 +00:00
lizhixian 74d560a19e review: 调整字段名称 2025-02-26 15:58:13 +08:00
Lesan bad11ff29b feat: 子流程-多实例 2025-02-26 15:23:51 +08:00
Roan f92ab64ffc feat: bpm流程表单复制功能 2025-02-26 15:03:01 +08:00
huchao 8c9bf45791 fix:1.修复流程编号显示错误
2."流程-高级筛选-流程发起人"实际选择的并非发起人而是分类,与页面已有流程分类筛选条件重复,故移除
3.修复"流程-已办任务"defineOptions命名错误
2025-02-26 10:54:03 +08:00
Lesan 2ff1bccbaf fix: 代码评审修改 2025-02-26 09:38:10 +08:00
smallNorthLee d7664c92cd fix: processVariablesStr参数转string错误问题 2025-02-25 22:44:33 +08:00
smallNorthLee 303bbbdd7f review:代码审查 2025-02-25 22:42:46 +08:00
lizhixian 59528284ca feat: 流程审批,预测下个节点是否需要选择审批人 2025-02-25 17:17:00 +08:00
lizhixian b346545cbf feat: 流程审批,预测下个节点是否需要选择审批人 2025-02-25 17:01:26 +08:00
芋道源码 de35fd0a7c !708 优化代码 流程模型的流程设计中的条件分支问题 : 来回切换点击条件分支后带来的 条件切换问题
Merge pull request !708 from Lemon/feature/bpm-流程条件切换分支
2025-02-25 04:43:09 +00:00
Lemon ce0020ab1c 使用 Lodash 的 cloneDeep 方法来进行深拷贝 2025-02-25 12:00:12 +08:00
芋道源码 50df1f3e13 !713 feat: 子流程-超时设置
Merge pull request !713 from Lesan/feature/bpm-子流程
2025-02-25 01:29:54 +00:00
Lesan dc577fc0f6 Merge remote-tracking branch 'yudao/feature/bpm' into feature/bpm-子流程 2025-02-25 08:33:58 +08:00
YunaiV b0d839a091 【代码评审】BPM:触发器 HTTP 异步 2025-02-25 07:55:57 +08:00
YunaiV d9019c1271 【代码评审】BPM:触发器 HTTP 异步 2025-02-24 23:11:18 +08:00
YunaiV 32f2d406c3 【代码评审】BPM:子流程 2025-02-24 23:06:56 +08:00
YunaiV 3154aa7539 【功能优化】AI:聊天模型的 table 宽度 2025-02-24 21:17:36 +08:00
Lesan 64ff45e46c feat: 子流程-超时设置 2025-02-24 15:27:27 +08:00
芋道源码 cd0f1322fb !712 BPM-子流程
Merge pull request !712 from Lesan/feature/bpm-子流程
2025-02-24 05:21:10 +00:00
Lesan 2f8f5454b3 chore: 添加必要注释 2025-02-24 09:54:22 +08:00
Lesan 31a0e9e824 Merge remote-tracking branch 'yudao/feature/bpm' into feature/bpm-子流程 2025-02-24 09:50:04 +08:00
Lesan 9c9f09fbed fix: 代码审查修改 2025-02-24 09:40:52 +08:00
jason a061265d9e 冲突解决 2025-02-23 23:11:18 +08:00
jason 163fc682df 【功能新增】 新增异步Http 请求触发器 2025-02-23 22:56:30 +08:00
YunaiV dd1eb5de6d 【代码评审】IoT:物模型 2025-02-22 18:01:27 +08:00
芋道源码 67fb5ecf3a !705 【代码优化】IoT: 物模型
Merge pull request !705 from puhui999/feature/iot
2025-02-22 09:58:38 +00:00
芋道源码 57af8e22e7 !690 update src/views/mall/trade/order/detail/index.vue.
Merge pull request !690 from 爱宇阳/N/A
2025-02-22 09:53:38 +00:00
芋道源码 2c35cde574 !706 【功能优化】1. 上传图片等待时间调整成15秒;2. 商城客服页面匹配暗黑模式;
Merge pull request !706 from 卢越/master
2025-02-22 09:21:56 +00:00
YunaiV 92fe34ce59 【代码评审】BPM:删除表单数据触发器 2025-02-22 16:23:20 +08:00
Lemon c7b135e1f8 优化代码 切换点击条件分支后带来的 条件切换问题 2025-02-22 10:05:43 +08:00
jason bfe43369ef 【功能新增】 新增删除表单数据触发器 2025-02-21 22:46:27 +08:00
卢越 2081dda9df 【功能优化】商城客服页面匹配暗黑模式; 2025-02-21 17:48:39 +08:00
卢越 e85c1b0a55 【功能优化】1. 上传图片等待时间调整成15秒;2. 商城客服页面匹配暗黑模式; 2025-02-21 17:03:49 +08:00
Lesan 357955ce24 feat: 子流程 2025-02-21 16:07:13 +08:00
puhui999 0afa0bb165 【缺陷修复】IoT: 物模型编辑已经添加的结构体,里面的参数加不上 2025-02-20 16:57:35 +08:00
puhui999 4f1c79ba6d 【代码优化】IoT: 物模型 2025-02-20 16:30:36 +08:00
YunaiV b2ddefe4a0 【代码评审】BPM:表单字段,批量选中 2025-02-19 22:22:36 +08:00
芋道源码 5d20f62b40 !703 增加绘制流程图 审批人, 办理人,抄送 的表单字段权限的一键设置的功能
Merge pull request !703 from Lemon/feature/bpm-流程审批-办理-抄送
2025-02-19 05:56:05 +00:00
YunaiV ab86cb1ff9 【代码评审】BPM:增加流程图 小手功能 2025-02-19 13:51:35 +08:00
YunaiV 1a4c94b830 【代码评审】BPM:增加流程图 小手功能 2025-02-19 13:41:38 +08:00
芋道源码 3906204bb9 !704 1. 增加流程图 小手功能 2. 增加重置功能 移动流程位置后恢复原位置 3. 流程挪动的时候禁用文本选择,确保拖动时不会选择文本
Merge pull request !704 from Lemon/feature/bpm-流程图小手
2025-02-19 05:39:32 +00:00
YunaiV bf96e8aeaf 【代码评审】BPM:修复流程预测功能的一些变量 2025-02-19 13:21:58 +08:00
芋道源码 0d7d2cd1c3 !700 fix: 修复流程预测功能
Merge pull request !700 from SamllNorth_Lee/fix/bpm
2025-02-19 05:15:38 +00:00
YunaiV 1de17cadb5 【代码评审】BPM:触发器,修改节点的评审 2025-02-19 12:55:05 +08:00
lizhixian ee8de08103 fix: 修改pr中698的问题 2025-02-19 10:58:17 +08:00
smallNorthLee b53bfbd49e fix:监听输入变量值,预测节点轨迹。导致节点配置审批人错误问题 2025-02-18 22:40:47 +08:00
lizhixian 7467b0b4e0 fix:监听表单字段,调用流程预测节点 2025-02-18 17:15:17 +08:00
Lemon 91e2e32ace 增加绘制流程图 审批人, 办理人,抄送 的表单字段权限的一键设置的功能 2025-02-18 14:43:27 +08:00
lizhixian b03711e0df fix:移除创建流程接口参数nodeIds 2025-02-18 14:15:53 +08:00
Lemon 58825842ab 1. 增加流程图 小手功能 2. 增加重置功能 移动流程位置后恢复原位置 3. 流程挪动的时候禁用文本选择,确保拖动时不会选择文本 2025-02-18 12:03:12 +08:00
Lemon f9c7446186 增加流程图 小手功能 增加重置功能 移动流程位置后恢复原位置 2025-02-18 11:55:46 +08:00
lizhixian b3326db715 fix: 调整获取预测接口的请求参数 2025-02-18 10:44:19 +08:00
lizhixian 67371e7579 fix:调整获取预测节点接口请求方式和参数 2025-02-18 10:28:20 +08:00
lizhixian be6c15f5df fix:修改魔法字符为枚举类 2025-02-17 17:07:47 +08:00
lizhixian 78e658389b fix: 解决流程图预览,控制台v-highlight过多告警问题 2025-02-17 16:53:38 +08:00
lizhixian 903428d063 fix: 修复流程审批预测功能 2025-02-17 16:01:51 +08:00
lizhixian 54d67b3761 fix:调整获取审批详情接口的请求方式 2025-02-17 16:00:16 +08:00
jason 78d8782b5d 【功能优化】 代码评审修改 2025-02-17 13:34:21 +08:00
jason 6be64a219e 【功能优化】触发器添加条件 2025-02-17 13:24:02 +08:00
lizhixian 9991ef2ec5 fix:修改魔法字符转枚举类 2025-02-17 09:55:55 +08:00
lizhixian 20e84b072e fix:补充流程节点规则类型“发起人自选”的字典数据 2025-02-17 08:52:33 +08:00
YunaiV 425e66b0f0 【代码回退】BPM:工作流实例详情页面审批通过的BUG问题 2025-02-15 21:11:06 +08:00
芋道源码 f3a839486d !698 工作流实例详情页面审批通过的BUG问题
Merge pull request !698 from KAILIN/pr
2025-02-15 01:08:53 +00:00
芋道源码 9e7fe02baf !696 fix:修复审批节点自定义配置字段权限为空问题
Merge pull request !696 from SamllNorth_Lee/fix/bpm
2025-02-15 00:50:44 +00:00
YunaiV f7a2949ad1 【代码评审】BPM:办理人的逻辑 2025-02-15 08:49:04 +08:00
芋道源码 f91868b4f6 !695 BPM-办理人
Merge pull request !695 from Lesan/feature/bpm-办理人
2025-02-15 00:33:43 +00:00
kailin 583587ce52 提交变更 2025-02-14 18:58:16 +08:00
lizhixian c6ffe4a779 fix:修复审批节点自定义配置字段权限为空问题 2025-02-14 14:09:21 +08:00
lizhixian a27dad6129 fix: 移除多余代码 2025-02-14 13:58:33 +08:00
Lesan 3f1024d31c fix: 修改图标命名 2025-02-14 11:15:29 +08:00
Lemon 0212ef4851 增加流程图 小手功能 2025-02-14 10:03:21 +08:00
Lemon 6b6b634f49 怎加审理中心中的流程图 小手功能 2025-02-14 10:03:21 +08:00
lizhixian a69d1d2dbe fix: 魔法字符调整成枚举类 2025-02-14 09:49:57 +08:00
Lesan 0f812dbfd9 feat: 添加节点类型以区分不同节点 2025-02-14 08:26:19 +08:00
YunaiV 26e28965c9 【功能新增】BPM:增加指定岗位 2025-02-13 19:26:28 +08:00
YunaiV 3ce8fc1364 【代码优化】BPM:sliceName => subString 更通用 2025-02-13 19:04:05 +08:00
YunaiV 45ac20e5c3 Merge branch 'master' of https://gitee.com/yudaocode/yudao-ui-admin-vue3 into feature/bpm 2025-02-13 19:01:02 +08:00
芋道源码 ead7fa26ab !694 fix: 修复bpm相关bug
Merge pull request !694 from SamllNorth_Lee/fix/bpm
2025-02-13 11:00:11 +00:00
lizhixian 2511f32c86 fix: 修复bpm相关bug 2025-02-13 14:29:54 +08:00
lizhixian a0b90bd93d fix: formTypr的类型改为枚举 2025-02-13 14:23:26 +08:00
lizhixian 4e3522a5da fix: formTypr的类型改为枚举 2025-02-13 14:15:40 +08:00
lizhixian 253678a949 fix:移除多余的注释 2025-02-13 14:12:34 +08:00
smallNorthLee 9a233ab6bf fix: 抽取sliceName方法,移除流程发布校验是否存在进行中的单据方法 2025-02-12 22:50:40 +08:00
YunaiV 666fb16db5 【代码评审】BPM:办理人的逻辑 2025-02-12 18:46:30 +08:00
芋道源码 575f6038a7 !692 BPM设计器-办理人节点
Merge pull request !692 from Lesan/feature/bpm-办理人
2025-02-12 10:21:45 +00:00
liubei 81fb177169 解决重复登录问题 2025-02-12 16:47:00 +08:00
Lesan a190a0b409 feat: 办理人节点高亮处理 2025-02-12 14:08:54 +08:00
Lesan 4ea25f3d5b feat: 办理人节点 2025-02-12 13:57:10 +08:00
lizhixian d0da7d67c7 feat: 流程发布校验是否存在进行中的单据 2025-02-12 10:20:15 +08:00
lizhixian 4f8b2830ba fix: 移除aria-hidden="true"元素属性,控制台报错提示 2025-02-12 09:49:28 +08:00
lizhixian bc33acfad4 feat:发布新版本流程时,校验是否存在进行中的单据 2025-02-12 09:45:29 +08:00
smallNorthLee c039696288 feat:发布前校验当前流程模型下是否存在正在审批中的单据信息 2025-02-11 23:59:45 +08:00
lizhixian 1b0fe23292 feat: 发布流程时校验当前流程版本是否存在正在进行中的单据 2025-02-11 17:16:25 +08:00
lizhixian 85c6971132 fix:修改错误提示,添加流程标识格式提示 2025-02-11 15:00:12 +08:00
lizhixian 483bf23a52 fix: 解决修改流程模型时,bpmnModel.formId为空时,调用接口报错问题 2025-02-11 14:54:06 +08:00
爱宇阳 0837f319ca update src/views/mall/trade/order/detail/index.vue.
fix(trade):ReferenceError: form is not defined

- form undefined
- Vue: Argument of type number | undefined is not assignable to parameter of type number Type undefined is not assignable to type number

Signed-off-by: 爱宇阳 <thedanyang@qq.com>
2025-02-11 03:26:01 +00:00
lizhixian 5f2a6baa4d fix:解决流程模型列表,点击表单信息,没有弹出框的问题 2025-02-11 10:24:01 +08:00
lizhixian b2ba183e09 fix: 移除流程图标必填校验,当图标不存在时自动生成图标样式 2025-02-11 10:01:41 +08:00
YunaiV f7b97d344e 【代码评审】IoT:设备配置的评审 2025-02-11 09:54:18 +08:00
dylanmay 107ee7bebf feat: 增加设备配置 2025-02-10 16:53:10 +08:00
YunaiV 1f4c70a176 【代码评审】IoT:plugin 相关的实现 2025-02-09 06:47:57 +08:00
YunaiV bfdf7f6173 【代码评审】IoT:plugin 相关的实现 2025-02-08 07:39:41 +08:00
安浩浩 229594b159 【代码重构】IoT:重构插件配置管理,替换 PluginInfo 为 PluginConfig 2025-02-05 23:02:06 +08:00
YunaiV 5d32cc3821 【代码评审】IoT:plugin 相关的实现 2025-02-04 17:34:11 +08:00
YunaiV 7be9c3e80e 【代码优化】IoT:去除 Simulation 关键字,定义更清晰 2025-01-31 22:47:11 +08:00
YunaiV d27cb80065 【代码优化】IoT:重构设备 upstream 为 message,包括上行 + 下行 2025-01-30 08:43:49 +08:00
YunaiV c830c2b9bb 【功能修改】IoT:完善设备详情的属性展示 2025-01-29 21:47:26 +08:00
YunaiV 18617d309b 【功能新增】IoT:支持 state 模拟上报(上线、下线) 2025-01-29 21:33:12 +08:00
YunaiV 3c73a6728f 【功能修改】IoT:设备状态从 status 到 state,移除已禁用 2025-01-29 00:16:54 +08:00
YunaiV b9193dd875 【代码优化】IoT:产品列表、设备列表的 key ... 省略 2025-01-28 22:48:04 +08:00
YunaiV 2ab3b9ccd7 【代码评审】IoT:物模型的管理 2025-01-28 22:29:54 +08:00
YunaiV 9581ecd7c7 【代码评审】IoT:物模型的管理 2025-01-28 22:24:14 +08:00
YunaiV fec0753d9b 【功能优化】Bpm:完善设备属性的历史值 2025-01-28 12:05:07 +08:00
YunaiV 815c900064 【功能优化】Bpm:完善设备属性的历史值 2025-01-28 10:23:58 +08:00
YunaiV 736b82de18 【功能优化】Bpm:设备日志的展示 2025-01-28 08:32:53 +08:00
YunaiV 3d65f1c599 【功能优化】Bpm:设备属性上报 2025-01-28 04:55:48 +08:00
YunaiV 3dc7d20005 【代码评审】IoT:设备日志 TDengine 表与模拟设备 2025-01-09 12:54:16 +08:00
YunaiV f2f414a965 Merge branch 'feature/iot' of https://gitee.com/alwayssuper/yudao-ui-admin-vue3 into feature/iot
# Conflicts:
#	pnpm-lock.yaml
2025-01-09 12:38:43 +08:00
alwayssuper 3c7521b58b feat:DeviceSimulator 2025-01-06 16:40:36 +08:00
alwayssuper c9e00d97eb feat:deviceLog and deviceSimulator 2025-01-06 16:39:22 +08:00
alwayssuper b71fa84af3 feat;simulator 2025-01-05 22:57:10 +08:00
YunaiV 7639f34e12 Merge branch 'master' of https://gitee.com/yudaocode/yudao-ui-admin-vue3 into feature/iot 2025-01-04 17:05:30 +08:00
alwayssuper 5e8aad7703 feat:DeviceDetailsSimulator 2025-01-03 22:33:40 +08:00
alwayssuper 61ebe5b9a2 feat:DeviceDetailsLog DeviceDetailsSimulator 2025-01-03 16:54:29 +08:00
安浩浩 77e0a76389 【功能完善】IOT: 更新插件信息字段名为“fileName”,新增视图模式切换功能,优化插件详情展示 2025-01-01 20:41:59 +08:00
安浩浩 9736407824 【代码优化】将 API 和 UI 组件中的“pluginId”重命名为“pluginKey” 2024-12-30 18:32:14 +08:00
安浩浩 b08aae63ed Merge remote-tracking branch 'origin/feature/iot' into feature/iot 2024-12-30 12:05:03 +08:00
安浩浩 e6a5bb0293 【功能新增】IOT: 添加插件管理功能,包括插件列表、详情、状态更新及文件上传功能 2024-12-30 12:03:30 +08:00
芋道源码 afaea19726 !630 【代码优化】IOT: ThingModel
Merge pull request !630 from puhui999/feature/iot
2024-12-28 13:01:46 +00:00
puhui999 ca035932b0 【功能完善】IOT: ThingModel 表单编辑回显 2024-12-27 11:37:04 +08:00
puhui999 44d634c8fc 【代码优化】IOT: ThingModel 2024-12-27 11:04:55 +08:00
芋道源码 5d2adcac19 !628 【功能新增】IOT: ThingModel 服务和事件
Merge pull request !628 from puhui999/feature/iot
2024-12-26 05:56:53 +00:00
puhui999 9b628620e1 【功能完善】IOT: ThingModel 服务和事件 2024-12-26 00:09:50 +08:00
puhui999 5391720b8b 【功能完善】IOT: ThingModel 服务和事件 2024-12-25 23:53:14 +08:00
puhui999 d7c33b454f 【功能新增】IOT: ThingModel 服务和事件 2024-12-25 18:35:37 +08:00
puhui999 9bd96a3d63 【代码完善】IOT: 确保 ThingModel 中 dataSpecs 和 dataSpecsList 之中必须传入且只能传入一个 2024-12-25 17:12:16 +08:00
芋道源码 eb5d350b09 !626 【代码完善】IOT: ThingModel StructDataSpecs 组件
Merge pull request !626 from puhui999/feature/iot
2024-12-24 01:26:26 +00:00
puhui999 4569491012 【代码完善】IOT: ThingModel StructDataSpecs 组件 2024-12-23 18:06:42 +08:00
puhui999 ce7dc927ae 【代码完善】IOT: ThingModel StructDataSpecs 组件 2024-12-23 17:29:14 +08:00
puhui999 d5f3d4006a 【代码优化】IOT: ThingModel 优化 2024-12-23 10:13:14 +08:00
芋道源码 b6d3a85a8b !621 fix:产品页面卡片与设备页面卡片当deviceKey和productKey长度过长 不能自动换行并且加压图片的容器,确保内容不会因为过长而溢出其容器
Merge pull request !621 from alwayssuper/feature/iot
2024-12-19 12:45:22 +00:00
YunaiV 2505410b5a 【代码评审】IoT:物模型的管理哈 2024-12-18 20:50:48 +08:00
芋道源码 c4ba7ed43e !622 【功能完善】IOT: 产品物模型
Merge pull request !622 from puhui999/feature/iot
2024-12-18 12:45:31 +00:00
puhui999 11f9750f16 【代码优化】IOT: 产品物模型代码评审问题优化 2024-12-17 16:58:50 +08:00
puhui999 9f819db14d 【代码优化】IOT: 产品物模型代码评审问题优化 2024-12-17 16:20:09 +08:00
puhui999 53c967c308 Merge remote-tracking branch 'yudao/feature/iot' into feature/iot
# Conflicts:
#	src/views/iot/product/product/detail/ThingModel/ThingModelDataSpecs.vue
#	src/views/iot/product/product/detail/ThingModel/dataSpecs/ThingModelEnumTypeDataSpecs.vue
#	src/views/iot/product/product/detail/ThingModel/dataSpecs/ThingModelNumberTypeDataSpecs.vue
#	src/views/iot/thinkmodel/ThinkModelForm.vue
#	src/views/iot/thinkmodel/dataSpecs/ThinkModelArrayTypeDataSpecs.vue
2024-12-17 15:46:50 +08:00
puhui999 341eb570e9 【代码优化】IOT: 产品物模型独立包 2024-12-17 15:39:19 +08:00
puhui999 c8ab57f726 【功能完善】IOT: 产品物模型-dataSpecs 校验规则完善 2024-12-17 15:03:57 +08:00
puhui999 6b9aaf3c9a 【功能完善】IOT: 产品物模型-数组型的 dataSpecs 校验规则完善 2024-12-17 14:24:34 +08:00
puhui999 12abcddb12 【功能完善】IOT: 产品物模型-枚举型的 dataSpecs 校验规则完善 2024-12-17 14:13:49 +08:00
puhui999 d65a10c55c 【功能完善】IOT: 产品物模型-数值型的 dataSpecs 校验规则完善 2024-12-17 11:45:35 +08:00
alwayssuper 1654221921 update src/views/iot/device/device/index.vue.
Signed-off-by: alwayssuper <12851801+alwayssuper@user.noreply.gitee.com>
2024-12-16 23:57:04 +00:00
alwayssuper 107b08b6b5 update src/views/iot/product/product/index.vue.
Signed-off-by: alwayssuper <12851801+alwayssuper@user.noreply.gitee.com>
2024-12-16 23:50:42 +00:00
YunaiV fe3715c40c 【代码评审】IoT:物模型的管理哈 2024-12-16 20:52:20 +08:00
芋道源码 773b8dead2 !620 【功能完善】IOT: 产品物模型
Merge pull request !620 from puhui999/feature/iot
2024-12-16 12:44:31 +00:00
puhui999 e36e48586e 【功能完善】IOT: 产品物模型-属性 2024-12-16 17:47:02 +08:00
puhui999 187b5b03ee 【功能完善】IOT: 物模型数据类型组件完善 2024-12-15 23:15:51 +08:00
YunaiV a5565bb509 【功能新增】IoT:设备管理,增加批量导入 2024-12-15 10:46:42 +08:00
puhui999 488800b304 【功能完善】IOT: 物模型数组数据类型组件完善 2024-12-15 00:21:40 +08:00
puhui999 1d112d5663 【功能完善】IOT: 物模型数据类型组件完善 2024-12-14 23:27:27 +08:00
puhui999 23ef9f68ea 【功能完善】IOT: 物模型文本数据类型组件完善 2024-12-14 23:15:00 +08:00
puhui999 c7d9a7fe52 【功能完善】IOT: 物模型布尔值数据类型组件完善 2024-12-14 23:09:14 +08:00
puhui999 5209318bb2 【功能完善】IOT: 物模型枚举数据类型组件完善 2024-12-14 22:47:17 +08:00
安浩浩 87300563dd 【功能新增】IoT:增加插件信息管理功能,包括插件信息接口和表单组件 2024-12-14 21:52:25 +08:00
YunaiV 3ea61c51ef 【功能修改】IoT:设备详情的代码优化 2024-12-14 20:58:28 +08:00
YunaiV 99b24c107c 【功能新增】IoT:设备管理界面增加设备状态枚举及状态标签显示 2024-12-14 20:44:58 +08:00
puhui999 5ea792d333 Merge remote-tracking branch 'yudao/feature/iot' into feature/iot 2024-12-14 20:39:24 +08:00
YunaiV 646f212d85 【功能新增】IoT:设备管理界面增加卡片视图和列表视图切换功能 2024-12-14 20:04:32 +08:00
YunaiV cc45fd5401 【功能新增】IoT:设备管理界面增加设备分组功能 2024-12-14 19:43:13 +08:00
YunaiV a2dec90edf 【功能新增】IoT:设备管理界面增加批量删除功能 2024-12-14 19:12:28 +08:00
YunaiV 8f1c660d1f 【功能新增】IoT:设备管理界面增加导出设备功能 2024-12-14 18:56:35 +08:00
YunaiV 14fe6c559f 【功能新增】IoT:设备管理界面增加设备分组选择功能 2024-12-14 18:41:35 +08:00
YunaiV 30b19c9100 【功能新增】IoT:新增设备分组的管理 2024-12-14 17:24:33 +08:00
YunaiV dde5911b5f 【功能完善】IoT:设备新增时,增加 deviceKey、serialNumber、picUrl 等字段 2024-12-14 16:10:23 +08:00
YunaiV 8b59786fbf 【功能新增】IoT:优化产品管理的 card 展示 2024-12-14 09:05:19 +08:00
puhui999 e1b2cb106a 【功能新增】IOT: 产品物模型,30% 2024-12-13 18:08:11 +08:00
puhui999 94d74f1a09 【功能新增】IOT: 产品物模型,30% 2024-12-13 17:36:20 +08:00
puhui999 fdc971dd03 【功能新增】IOT: 产品物模型,20% 2024-12-11 13:14:47 +08:00
安浩浩 1ce8233159 【功能新增】IoT:产品接口增加 picUrl 字段;调整相关导入路径 2024-12-09 21:12:20 +08:00
YunaiV 218f10bcfd 【功能新增】IoT:产品增加 card 视图,30% 2024-12-07 21:10:39 +08:00
YunaiV 68f13accd3 【功能新增】IoT:产品导出功能 2024-12-07 20:48:28 +08:00
YunaiV 48907bde60 【功能新增】IoT:产品详情,优化相关展示 2024-12-07 20:17:00 +08:00
YunaiV dc2dbcbc84 【功能新增】IoT:产品新增时,productKey 由前端生成;同时增加 icon、picUrl 字段 2024-12-07 19:50:23 +08:00
YunaiV 3a94b8a9cf 【代码重构】IoT:产品放到 product 子目录下 2024-12-07 18:50:19 +08:00
YunaiV 8d3afa3920 【功能新增】IoT:产品分类的维护 2024-12-07 16:42:38 +08:00
YunaiV d8468590e3 Merge branch 'master' of https://gitee.com/yudaocode/yudao-ui-admin-vue3 into feature/iot 2024-12-07 09:26:16 +08:00
安浩浩 d256d70d92 【修改功能】IOT:设备历史数据展示 2024-11-10 20:23:32 +08:00
安浩浩 5243f5849f 【新增功能】IOT:设备历史数据展示 2024-11-05 23:25:47 +08:00
安浩浩 9ea45b3d14 【新增功能】IOT:设备数据展示 2024-11-03 00:15:44 +08:00
安浩浩 05245855eb 【功能优化】优化IOT物模型编辑表单验证规则 2024-10-13 23:03:44 +08:00
安浩浩 18eabfb042 【功能优化】IOT:枚举和复制到剪贴板方法优化 2024-10-10 21:02:55 +08:00
837 changed files with 130764 additions and 62389 deletions

No files matched your search

+6 -6
View File
@@ -1,5 +1,5 @@
# 标题
VITE_APP_TITLE=芋道管理系统
VITE_APP_TITLE=聊天交友
# 项目本地运行端口号
VITE_PORT=80
@@ -8,18 +8,18 @@ VITE_PORT=80
VITE_OPEN=true
# 租户开关
VITE_APP_TENANT_ENABLE=true
VITE_APP_TENANT_ENABLE=false
# 验证码的开关
VITE_APP_CAPTCHA_ENABLE=true
# 文档地址的开关
VITE_APP_DOCALERT_ENABLE=true
VITE_APP_DOCALERT_ENABLE=false
# 百度统计
VITE_APP_BAIDU_CODE = a1ff8825baa73c3a78eb96aa40325abc
# 默认账户密码
VITE_APP_DEFAULT_LOGIN_TENANT = 芋道源码
VITE_APP_DEFAULT_LOGIN_USERNAME = admin
VITE_APP_DEFAULT_LOGIN_PASSWORD = admin123
VITE_APP_DEFAULT_LOGIN_TENANT = 分销商城
# VITE_APP_DEFAULT_LOGIN_USERNAME = admin
# VITE_APP_DEFAULT_LOGIN_PASSWORD = admin123
+3 -1
View File
@@ -4,7 +4,9 @@ NODE_ENV=production
VITE_DEV=true
# 请求路径
VITE_BASE_URL='http://api-dashboard.yudao.iocoder.cn'
VITE_BASE_URL='https://324e01b5211c41c7a8fc9f7854195f30.hn.takin.cc'
VITE_CHAT_URL='http://service.htysapp.com/#/home/chat'
# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务
VITE_UPLOAD_TYPE=server
+38 -33
View File
@@ -1,34 +1,39 @@
# 本地开发环境:本地启动所有项目(前端、后端、APP)时使用,不依赖外部环境
NODE_ENV=development
VITE_DEV=true
# 请求路径
VITE_BASE_URL='http://localhost:48080'
# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持 S3 服务
VITE_UPLOAD_TYPE=server
# 接口地址
VITE_API_URL=/admin-api
# 是否删除debugger
VITE_DROP_DEBUGGER=false
# 是否删除console.log
VITE_DROP_CONSOLE=false
# 是否sourcemap
VITE_SOURCEMAP=false
# 打包路径
VITE_BASE_PATH=/
# 商城H5会员端域名
VITE_MALL_H5_DOMAIN='http://localhost:3000'
# 验证码的开关
VITE_APP_CAPTCHA_ENABLE=false
# GoView域名
# 本地开发环境:本地启动所有项目(前端、后端、APP)时使用,不依赖外部环境
NODE_ENV=development
VITE_DEV=true
# 请求路径
# VITE_BASE_URL='http://chatapi.zianxin.com'
VITE_BASE_URL='http://localhost:48083'
# VITE_CHAT_URL='http://localhost:8080/#/home/chat'
VITE_CHAT_URL='http://service.htysapp.com/#/home/chat'
# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持 S3 服务
VITE_UPLOAD_TYPE=server
# 接口地址
VITE_API_URL=/admin-api
# 是否删除debugger
VITE_DROP_DEBUGGER=false
# 是否删除console.log
VITE_DROP_CONSOLE=false
# 是否sourcemap
VITE_SOURCEMAP=false
# 打包路径
VITE_BASE_PATH=/
# 商城H5会员端域名
VITE_MALL_H5_DOMAIN='http://localhost:3000'
# 验证码的开关
VITE_APP_CAPTCHA_ENABLE=true
# GoView域名
VITE_GOVIEW_URL='http://127.0.0.1:3000'
+35 -33
View File
@@ -1,34 +1,36 @@
# 生产环境:只在打包时使用
NODE_ENV=production
VITE_DEV=false
# 请求路径
VITE_BASE_URL='http://localhost:48080'
# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务
VITE_UPLOAD_TYPE=server
# 接口地址
VITE_API_URL=/admin-api
# 是否删除debugger
VITE_DROP_DEBUGGER=true
# 是否删除console.log
VITE_DROP_CONSOLE=true
# 是否sourcemap
VITE_SOURCEMAP=false
# 打包路径
VITE_BASE_PATH=/
# 输出路径
VITE_OUT_DIR=dist-prod
# 商城H5会员端域名
VITE_MALL_H5_DOMAIN='http://mall.yudao.iocoder.cn'
# GoView域名
# 生产环境:只在打包时使用
NODE_ENV=production
VITE_DEV=false
# 请求路径
VITE_BASE_URL='https://api.htysapp.com'
VITE_CHAT_URL='http://service.htysapp.com/#/home/chat'
# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务
VITE_UPLOAD_TYPE=server
# 接口地址
VITE_API_URL=/admin-api
# 是否删除debugger
VITE_DROP_DEBUGGER=true
# 是否删除console.log
VITE_DROP_CONSOLE=true
# 是否sourcemap
VITE_SOURCEMAP=false
# 打包路径
VITE_BASE_PATH=/
# 输出路径
VITE_OUT_DIR=dist-prod
# 商城H5会员端域名
VITE_MALL_H5_DOMAIN='http://mall.yudao.iocoder.cn'
# GoView域名
VITE_GOVIEW_URL='http://127.0.0.1:3000'
+35 -33
View File
@@ -1,34 +1,36 @@
# 预发布环境:只在打包时使用
NODE_ENV=production
VITE_DEV=false
# 请求路径
VITE_BASE_URL='http://api-dashboard.yudao.iocoder.cn'
# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务
VITE_UPLOAD_TYPE=server
# 接口地址
VITE_API_URL=/admin-api
# 是否删除debugger
VITE_DROP_DEBUGGER=true
# 是否删除console.log
VITE_DROP_CONSOLE=true
# 是否sourcemap
VITE_SOURCEMAP=false
# 打包路径
VITE_BASE_PATH='http://static-vue3.yudao.iocoder.cn/'
# 输出路径
VITE_OUT_DIR=dist-stage
# 商城H5会员端域名
VITE_MALL_H5_DOMAIN='http://mall.yudao.iocoder.cn'
# GoView域名
# 预发布环境:只在打包时使用
NODE_ENV=production
VITE_DEV=false
# 请求路径
VITE_BASE_URL='https://yffzpapi.zianxin.com'
VITE_CHAT_URL='http://localhost:8080/#/home/chat'
# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务
VITE_UPLOAD_TYPE=server
# 接口地址
VITE_API_URL=/admin-api
# 是否删除debugger
VITE_DROP_DEBUGGER=true
# 是否删除console.log
VITE_DROP_CONSOLE=true
# 是否sourcemap
VITE_SOURCEMAP=false
# 打包路径
VITE_BASE_PATH='http://static-vue3.yudao.iocoder.cn/'
# 输出路径
VITE_OUT_DIR=dist-stage
# 商城H5会员端域名
VITE_MALL_H5_DOMAIN='http://mall.yudao.iocoder.cn'
# GoView域名
VITE_GOVIEW_URL='http://127.0.0.1:3000'
+2
View File
@@ -6,6 +6,8 @@ VITE_DEV=false
# 请求路径
VITE_BASE_URL='http://localhost:48080'
VITE_CHAT_URL='http://localhost:8080/#/home/chat'
# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务
VITE_UPLOAD_TYPE=server
Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 25 KiB

+2 -2
View File
@@ -62,7 +62,7 @@
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescript]": {
"editor.defaultFormatter": "rvest.vs-code-prettier-eslint"
"editor.defaultFormatter": "vscode.typescript-language-features"
},
"[typescriptreact]": {
"editor.defaultFormatter": "rvest.vs-code-prettier-eslint"
@@ -87,7 +87,7 @@
"source.fixAll.stylelint": "explicit"
},
"[vue]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
"editor.defaultFormatter": "Vue.volar"
},
"i18n-ally.localesPaths": ["src/locales"],
"i18n-ally.keystyle": "nested",
+70 -42
View File
@@ -81,16 +81,13 @@
系统内置多种多种业务功能,可以用于快速你的业务系统:
* 系统功能
* 基础设施
* 工作流程
* 支付系统
* 会员中心
* 数据报表
* 商城系统
* 微信公众号
* ERP 系统
* CRM 系统
系统内置多种多种业务功能,可以用于快速你的业务系统:
![功能分层](/.image/common/ruoyi-vue-pro-biz.png)
* 通用模块(必选):系统功能、基础设施
* 通用模块(可选):工作流程、支付系统、数据报表、会员中心
* 业务系统(按需):ERP 系统、CRM 系统、商城系统、微信公众号、AI 大模型
### 系统功能
@@ -120,54 +117,77 @@
### 工作流程
| | 功能 | 描述 |
|----|-------|-----------------------------------------|
| 🚀 | 流程模型 | 配置工作流的流程模型,支持 BPMN 和仿钉钉/飞书设计器 |
| 🚀 | 流程表单 | 拖动表单元素生成相应的工作流表单,覆盖 Element UI 所有的表单组件 |
| 🚀 | 用户分组 | 自定义用户分组,可用于工作流的审批分组 |
| 🚀 | 我的流程 | 查看我发起的工作流程,支持新建、取消流程等操作,高亮流程图、审批时间线 |
| 🚀 | 待办任务 | 查看自己【未】审批的工作任务,支持通过、不通过、转派、委派、退回、加减签等操作 |
| 🚀 | 已办任务 | 查看自己【已】审批的工作任务,支持流程预测,展示未来审批人信息 |
| 🚀 | OA 请假 | 作为业务自定义接入工作流的使用示例,只需创建请求对应的工作流程,即可进行审批 |
![功能图](/.image/common/bpm-feature.png)
基于 Flowable 构建,可支持信创(国产)数据库,满足中国特色流程操作:
| BPMN 设计器 | 钉钉/飞书设计器 |
|------------------------------|--------------------------------|
| ![](/.image/工作流设计器-bpmn.jpg) | ![](/.image/工作流设计器-simple.jpg) |
> 历经头部企业生产验证,工作流引擎须标配仿钉钉/飞书 + BPMN 双设计器!!!
>
> 前者支持轻量配置简单流程,后者实现复杂场景深度编排
| 功能列表 | 功能描述 | 是否完成 |
|------------|-------------------------------------------------------------------------------------|------|
| SIMPLE 设计器 | 仿钉钉/飞书设计器,支持拖拽搭建表单流程,10 分钟快速完成审批流程配置 | ✅ |
| BPMN 设计器 | 基于 BPMN 标准开发,适配复杂业务场景,满足多层级审批及流程自动化需求 | ✅ |
| 会签 | 同一个审批节点设置多个人(如 A、B、C 三人,三人会同时收到待办任务),需全部同意之后,审批才可到下一审批节点 | ✅ |
| 或签 | 同一个审批节点设置多个人,任意一个人处理后,就能进入下一个节点 | ✅ |
| 依次审批 | (顺序会签)同一个审批节点设置多个人(如 A、B、C 三人),三人按顺序依次收到待办,即 A 先审批,A 提交后 B 才能审批,需全部同意之后,审批才可到下一审批节点 | ✅ |
| 抄送 | 将审批结果通知给抄送人,同一个审批默认排重,不重复抄送给同一人 | ✅ |
| 驳回 | (退回)将审批重置发送给某节点,重新审批。可驳回至发起人、上一节点、任意节点 | ✅ |
| 转办 | A 转给其 B 审批,B 审批后,进入下一节点 | ✅ |
| 委派 | A 转给其 B 审批,B 审批后,转给 A,A 继续审批后进入下一节点 | ✅ |
| 加签 | 允许当前审批人根据需要,自行增加当前节点的审批人,支持向前、向后加签 | ✅ |
| 减签 | (取消加签)在当前审批人操作之前,减少审批人 | ✅ |
| 撤销 | (取消流程)流程发起人,可以对流程进行撤销处理 | ✅ |
| 终止 | 系统管理员,在任意节点终止流程实例 | ✅ |
| 表单权限 | 支持拖拉拽配置表单,每个审批节点可配置只读、编辑、隐藏权限 | ✅ |
| 超时审批 | 配置超时审批时间,超时后自动触发审批通过、不通过、驳回等操作 | ✅ |
| 自动提醒 | 配置提醒时间,到达时间后自动触发短信、邮箱、站内信等通知提醒,支持自定义重复提醒频次 | ✅ |
| 父子流程 | 主流程设置子流程节点,子流程节点会自动触发子流程。子流程结束后,主流程才会执行(继续往下下执行),支持同步子流程、异步子流程 | ✅ |
| 条件分支 | (排它分支)用于在流程中实现决策,即根据条件选择一个分支执行 | ✅ |
| 并行分支 | 允许将流程分成多条分支,不进行条件判断,所有分支都会执行 | ✅ |
| 包容分支 | (条件分支 + 并行分支的结合体)允许基于条件选择多条分支执行,但如果没有任何一个分支满足条件,则可以选择默认分支 | ✅ |
| 路由分支 | 根据条件选择一个分支执行(重定向到指定配置节点),也可以选择默认分支执行(继续往下执行) | ✅ |
| 触发节点 | 执行到该节点,触发 HTTP 请求、HTTP 回调、更新数据、删除数据等 | ✅ |
| 延迟节点 | 执行到该节点,审批等待一段时间再执行,支持固定时长、固定日期等 | ✅ |
| 拓展设置 | 流程前置/后置通知,节点(任务)前置、后置通知,流程报表,自动审批去重,自定流程编号、标题、摘要,流程报表等 | ✅ |
### 支付系统
| | 功能 | 描述 |
|-----|------|---------------------------|
| 🚀 | 商户信息 | 管理商户信息,支持 Saas 场景下的多商户功能 |
| 🚀 | 应用信息 | 配置商户的应用信息,对接支付宝、微信等多个支付渠道 |
| 🚀 | 支付订单 | 查看用户发起的支付宝、微信等的【支付】订单 |
| 🚀 | 退款订单 | 查看用户发起的支付宝、微信等的【退款】订单 |
ps:核心功能已经实现,正在对接微信小程序中...
| 🚀 | 回调通知 | 查看支付回调业务的【支付】【退款】的通知结果 |
| 🚀 | 接入示例 | 提供接入支付系统的【支付】【退款】的功能实战 |
### 基础设施
| | 功能 | 描述 |
|----|----------|----------------------------------------------|
| 🚀 | 代码生成 | 前后端代码的生成(Java、Vue、SQL、单元测试),支持 CRUD 下载 |
| 🚀 | 系统接口 | 基于 Swagger 自动生成相关的 RESTful API 接口文档 |
| 🚀 | 数据库文档 | 基于 Screw 自动生成数据库文档,支持导出 Word、HTML、MD 格式 |
| | 表单构建 | 拖动表单元素生成相应的 HTML 代码,支持导出 JSON、Vue 文件 |
| 🚀 | 配置管理 | 对系统动态配置常用参数,支持 SpringBoot 加载 |
| ⭐️ | 定时任务 | 在线(添加、修改、删除)任务调度包含执行结果日志 |
| 🚀 | 文件服务 | 支持将文件存储到 S3(MinIO、阿里云、腾讯云、七牛云)、本地、FTP、数据库等 |
| 🚀 | API 日志 | 包括 RESTful API 访问日志、异常日志两部分,方便排查 API 相关的问题 |
| | MySQL 监控 | 监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈 |
| | Redis 监控 | 监控 Redis 数据库的使用情况,使用的 Redis Key 管理 |
| 🚀 | 消息队列 | 基于 Redis 实现消息队列,Stream 提供集群消费,Pub/Sub 提供广播消费 |
| 🚀 | Java 监控 | 基于 Spring Boot Admin 实现 Java 应用的监控 |
| 🚀 | 链路追踪 | 接入 SkyWalking 组件,实现链路追踪 |
| 🚀 | 日志中心 | 接入 SkyWalking 组件,实现日志中心 |
| 🚀 | 服务保障 | 基于 Redis 实现分布式锁、幂等、限流功能,满足高并发场景 |
| 🚀 | 日志服务 | 轻量级日志中心,查看远程服务器的日志 |
| 🚀 | 单元测试 | 基于 JUnit + Mockito 实现单元测试,保证功能的正确性、代码的质量等 |
| | 功能 | 描述 |
|-----|-----------|----------------------------------------------|
| 🚀 | 代码生成 | 前后端代码的生成(Java、Vue、SQL、单元测试),支持 CRUD 下载 |
| 🚀 | 系统接口 | 基于 Swagger 自动生成相关的 RESTful API 接口文档 |
| 🚀 | 数据库文档 | 基于 Screw 自动生成数据库文档,支持导出 Word、HTML、MD 格式 |
| | 表单构建 | 拖动表单元素生成相应的 HTML 代码,支持导出 JSON、Vue 文件 |
| 🚀 | 配置管理 | 对系统动态配置常用参数,支持 SpringBoot 加载 |
| ⭐️ | 定时任务 | 在线(添加、修改、删除)任务调度包含执行结果日志 |
| 🚀 | 文件服务 | 支持将文件存储到 S3(MinIO、阿里云、腾讯云、七牛云)、本地、FTP、数据库等 |
| 🚀 | WebSocket | 提供 WebSocket 接入示例,支持一对一、一对多发送方式 |
| 🚀 | API 日志 | 包括 RESTful API 访问日志、异常日志两部分,方便排查 API 相关的问题 |
| | MySQL 监控 | 监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈 |
| | Redis 监控 | 监控 Redis 数据库的使用情况,使用的 Redis Key 管理 |
| 🚀 | 消息队列 | 基于 Redis 实现消息队列,Stream 提供集群消费,Pub/Sub 提供广播消费 |
| 🚀 | Java 监控 | 基于 Spring Boot Admin 实现 Java 应用的监控 |
| 🚀 | 链路追踪 | 接入 SkyWalking 组件,实现链路追踪 |
| 🚀 | 日志中心 | 接入 SkyWalking 组件,实现日志中心 |
| 🚀 | 服务保障 | 基于 Redis 实现分布式锁、幂等、限流功能,满足高并发场景 |
| 🚀 | 日志服务 | 轻量级日志中心,查看远程服务器的日志 |
| 🚀 | 单元测试 | 基于 JUnit + Mockito 实现单元测试,保证功能的正确性、代码的质量等 |
![功能图](/.image/common/infra-feature.png)
@@ -213,6 +233,14 @@ ps:核心功能已经实现,正在对接微信小程序中...
![功能图](/.image/common/crm-feature.png)
### AI 大模型
演示地址:<https://doc.iocoder.cn/ai-preview/>
![功能图](/.image/common/ai-feature.png)
![功能图](/.image/common/ai-preview.gif)
## 🐷 演示图
### 系统功能
+20 -14
View File
@@ -16,7 +16,7 @@ import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite'
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
import UnoCSS from 'unocss/vite'
export function createVitePlugins() {
export function createVitePlugins(isBuild = false) {
const root = process.cwd()
// 路径查找
@@ -24,7 +24,7 @@ export function createVitePlugins() {
return resolve(root, '.', dir)
}
return [
const plugins = [
Vue(),
VueJsx(),
UnoCSS(),
@@ -66,10 +66,7 @@ export function createVitePlugins() {
resolvers: [ElementPlusResolver()],
globs: ["src/components/**/**.{vue, md}", '!src/components/DiyEditor/components/mobile/**']
}),
EslintPlugin({
cache: false,
include: ['src/**/*.vue', 'src/**/*.ts', 'src/**/*.tsx'] // 检查的文件
}),
// 关闭 ESLint 插件,避免 vendor 依赖缺失导致 dev/build 失败
VueI18nPlugin({
runtimeOnly: true,
compositionOnly: true,
@@ -88,13 +85,22 @@ export function createVitePlugins() {
ext: '.gz', // 生成的压缩包后缀
deleteOriginFile: false //压缩后是否删除源文件
}),
ViteEjsPlugin(),
topLevelAwait({
// https://juejin.cn/post/7152191742513512485
// The export name of top-level await promise for each chunk module
promiseExportName: '__tla',
// The function to generate import names of top-level await promise in each chunk module
promiseImportName: (i) => `__tla_${i}`
})
ViteEjsPlugin()
]
// 生产构建跳过:与当前 @swc/core 不兼容会报 missing field `type`
// build.target 使用 es2022 已原生支持 top-level await
if (!isBuild) {
plugins.push(
topLevelAwait({
// https://juejin.cn/post/7152191742513512485
// The export name of top-level await promise for each chunk module
promiseExportName: '__tla',
// The function to generate import names of top-level await promise in each chunk module
promiseImportName: (i) => `__tla_${i}`
})
)
}
return plugins
}
+2 -1
View File
@@ -114,7 +114,8 @@ const include = [
'element-plus/es/components/segmented/style/css',
'@element-plus/icons-vue',
'element-plus/es/components/footer/style/css',
'element-plus/es/components/empty/style/css'
'element-plus/es/components/empty/style/css',
'element-plus/es/components/mention/style/css'
]
const exclude = ['@iconify/json']
+15681
View File
File diff suppressed because it is too large. Load diff
+33 -1
View File
@@ -40,6 +40,7 @@
"benz-amr-recorder": "^1.1.5",
"bpmn-js-token-simulation": "^0.36.0",
"camunda-bpmn-moddle": "^7.0.1",
"compressorjs": "^1.2.1",
"cropperjs": "^1.6.1",
"crypto-js": "^4.2.0",
"dayjs": "^1.11.10",
@@ -48,9 +49,12 @@
"echarts": "^5.5.0",
"echarts-wordcloud": "^2.1.0",
"element-plus": "2.9.1",
"fast-diff": "^1.3.0",
"fast-xml-parser": "^4.3.2",
"highlight.js": "^11.9.0",
"is-core-module": "^2.16.2",
"jsencrypt": "^3.3.2",
"localforage": "^1.10.0",
"lodash-es": "^4.17.21",
"markdown-it": "^14.1.0",
"markmap-common": "^0.16.0",
@@ -59,14 +63,18 @@
"markmap-view": "^0.16.0",
"min-dash": "^4.1.1",
"mitt": "^3.0.1",
"node-forge": "^1.4.0",
"nprogress": "^0.2.0",
"path-parse": "^1.0.7",
"pinia": "^2.1.7",
"pinia-plugin-persistedstate": "^3.2.1",
"qrcode": "^1.5.3",
"qs": "^6.12.0",
"sortablejs": "^1.15.3",
"steady-xml": "^0.1.0",
"supports-preserve-symlinks-flag": "^1.0.0",
"url": "^0.11.3",
"v3-jsoneditor": "^0.0.6",
"video.js": "^7.21.5",
"vue": "3.5.12",
"vue-dompurify-html": "^4.1.4",
@@ -92,6 +100,7 @@
"@typescript-eslint/eslint-plugin": "^7.1.0",
"@typescript-eslint/parser": "^7.1.0",
"@unocss/eslint-config": "^0.57.4",
"@unocss/eslint-plugin": "66.1.0-beta.5",
"@unocss/transformer-variant-group": "^0.58.5",
"@vitejs/plugin-legacy": "^5.3.1",
"@vitejs/plugin-vue": "^5.0.4",
@@ -125,7 +134,7 @@
"unplugin-auto-import": "^0.16.7",
"unplugin-element-plus": "^0.8.0",
"unplugin-vue-components": "^0.25.2",
"vite": "5.1.4",
"vite": "^5.1.4",
"vite-plugin-compression": "^0.5.1",
"vite-plugin-ejs": "^1.7.0",
"vite-plugin-eslint": "^1.8.1",
@@ -149,5 +158,28 @@
"engines": {
"node": ">= 16.0.0",
"pnpm": ">=8.6.0"
},
"pnpm": {
"overrides": {
"strnum": "file:vendor/strnum",
"prettier-linter-helpers": "file:vendor/prettier-linter-helpers",
"resolve": "file:vendor/resolve",
"javascript-natural-sort": "file:vendor/javascript-natural-sort",
"iconv-lite": "file:vendor/iconv-lite"
},
"packageExtensions": {
"bpmn-js-token-simulation@0.36.3": {
"dependencies": {
"ids": "1.0.5"
}
}
}
},
"overrides": {
"strnum": "file:vendor/strnum",
"prettier-linter-helpers": "file:vendor/prettier-linter-helpers",
"resolve": "file:vendor/resolve",
"javascript-natural-sort": "file:vendor/javascript-natural-sort",
"iconv-lite": "file:vendor/iconv-lite"
}
}
+9584 -7151
View File
File diff suppressed because it is too large. Load diff
+51
View File
@@ -0,0 +1,51 @@
#!/usr/bin/env bash
# 在系统自带「终端」里运行本脚本(不要用 Cursor Agent 终端),可避免 .vscode/.idea 目录被拦截导致安装失败。
set -euo pipefail
cd "$(dirname "$0")"
export NVM_DIR="${NVM_DIR:-$HOME/.nvm}"
if [ -s "$NVM_DIR/nvm.sh" ]; then
# shellcheck disable=SC1090
. "$NVM_DIR/nvm.sh"
nvm use 20 >/dev/null || nvm use default >/dev/null || true
fi
echo "==> Node: $(node -v)"
echo "==> npm: $(npm -v)"
if ! command -v pnpm >/dev/null 2>&1; then
echo "==> 安装 pnpm..."
npm install -g pnpm@9 --registry=https://registry.npmjs.org/
fi
echo "==> pnpm: $(pnpm -v)"
cat > .npmrc <<'EOF'
registry=https://registry.npmjs.org/
node-linker=hoisted
shamefully-hoist=true
EOF
echo "==> 清理旧依赖..."
rm -rf node_modules
echo "==> 安装依赖(约需几分钟)..."
pnpm install --registry=https://registry.npmjs.org/
# 兜底:补齐 rollup 原生可选依赖(npm optional 偶发缺失)
ARCH="$(uname -m)"
if [ "$ARCH" = "x86_64" ]; then
pnpm add -D @rollup/rollup-darwin-x64 --registry=https://registry.npmjs.org/ || true
elif [ "$ARCH" = "arm64" ]; then
pnpm add -D @rollup/rollup-darwin-arm64 --registry=https://registry.npmjs.org/ || true
fi
if [ ! -x node_modules/.bin/vite ] && [ ! -f node_modules/vite/bin/vite.js ]; then
echo "ERROR: vite 仍未安装成功,请把上方报错发我"
exit 1
fi
echo "==> 启动开发服务(连接远程后端 .env.dev)..."
# 端口 80 可能需要权限,改用 5173
export VITE_PORT=5173
pnpm exec vite --mode dev --port 5173 --host 0.0.0.0
+8 -1
View File
@@ -14,9 +14,16 @@ export interface ChatMessageVO {
modelId: number // 模型编号
content: string // 聊天内容
tokens: number // 消耗 Token 数量
segmentIds?: number[] // 段落编号
segments?: {
id: number // 段落编号
content: string // 段落内容
documentId: number // 文档编号
documentName: string // 文档名称
}[]
createTime: Date // 创建时间
roleAvatar: string // 角色头像
userAvatar: string // 创建时间
userAvatar: string // 用户头像
}
// AI chat 聊天
+2 -3
View File
@@ -20,9 +20,8 @@ export interface ImageVO {
}
export interface ImageDrawReqVO {
platform: string // 平台
prompt: string // 提示词
model: string // 模型
modelId: number // 模型
style: string // 图像生成的风格
width: string // 图片宽度
height: string // 图片高度
@@ -31,7 +30,7 @@ export interface ImageDrawReqVO {
export interface ImageMidjourneyImagineReqVO {
prompt: string // 提示词
model: string // 模型 mj nijj
modelId: number // 模型
base64Array: string[] // size不能为空
width: string // 图片宽度
height: string // 图片高度
+54
View File
@@ -0,0 +1,54 @@
import request from '@/config/axios'
// AI 知识库文档 VO
export interface KnowledgeDocumentVO {
id: number // 编号
knowledgeId: number // 知识库编号
name: string // 文档名称
contentLength: number // 字符数
tokens: number // token 数
segmentMaxTokens: number // 分片最大 token 数
retrievalCount: number // 召回次数
status: number // 是否启用
}
// AI 知识库文档 API
export const KnowledgeDocumentApi = {
// 查询知识库文档分页
getKnowledgeDocumentPage: async (params: any) => {
return await request.get({ url: `/ai/knowledge/document/page`, params })
},
// 查询知识库文档详情
getKnowledgeDocument: async (id: number) => {
return await request.get({ url: `/ai/knowledge/document/get?id=` + id })
},
// 新增知识库文档(单个)
createKnowledgeDocument: async (data: any) => {
return await request.post({ url: `/ai/knowledge/document/create`, data })
},
// 新增知识库文档(多个)
createKnowledgeDocumentList: async (data: any) => {
return await request.post({ url: `/ai/knowledge/document/create-list`, data })
},
// 修改知识库文档
updateKnowledgeDocument: async (data: any) => {
return await request.put({ url: `/ai/knowledge/document/update`, data })
},
// 修改知识库文档状态
updateKnowledgeDocumentStatus: async (data: any) => {
return await request.put({
url: `/ai/knowledge/document/update-status`,
data
})
},
// 删除知识库文档
deleteKnowledgeDocument: async (id: number) => {
return await request.delete({ url: `/ai/knowledge/document/delete?id=` + id })
}
}
+44
View File
@@ -0,0 +1,44 @@
import request from '@/config/axios'
// AI 知识库 VO
export interface KnowledgeVO {
id: number // 编号
name: string // 知识库名称
description: string // 知识库描述
embeddingModelId: number // 嵌入模型编号,高质量模式时维护
topK: number // topK
similarityThreshold: number // 相似度阈值
}
// AI 知识库 API
export const KnowledgeApi = {
// 查询知识库分页
getKnowledgePage: async (params: any) => {
return await request.get({ url: `/ai/knowledge/page`, params })
},
// 查询知识库详情
getKnowledge: async (id: number) => {
return await request.get({ url: `/ai/knowledge/get?id=` + id })
},
// 新增知识库
createKnowledge: async (data: KnowledgeVO) => {
return await request.post({ url: `/ai/knowledge/create`, data })
},
// 修改知识库
updateKnowledge: async (data: KnowledgeVO) => {
return await request.put({ url: `/ai/knowledge/update`, data })
},
// 删除知识库
deleteKnowledge: async (id: number) => {
return await request.delete({ url: `/ai/knowledge/delete?id=` + id })
},
// 获取知识库简单列表
getSimpleKnowledgeList: async () => {
return await request.get({ url: `/ai/knowledge/simple-list` })
}
}
+75
View File
@@ -0,0 +1,75 @@
import request from '@/config/axios'
// AI 知识库分段 VO
export interface KnowledgeSegmentVO {
id: number // 编号
documentId: number // 文档编号
knowledgeId: number // 知识库编号
vectorId: string // 向量库编号
content: string // 切片内容
contentLength: number // 切片内容长度
tokens: number // token 数量
retrievalCount: number // 召回次数
status: number // 文档状态
createTime: number // 创建时间
}
// AI 知识库分段 API
export const KnowledgeSegmentApi = {
// 查询知识库分段分页
getKnowledgeSegmentPage: async (params: any) => {
return await request.get({ url: `/ai/knowledge/segment/page`, params })
},
// 查询知识库分段详情
getKnowledgeSegment: async (id: number) => {
return await request.get({ url: `/ai/knowledge/segment/get?id=` + id })
},
// 删除知识库分段
deleteKnowledgeSegment: async (id: number) => {
return await request.delete({ url: `/ai/knowledge/segment/delete?id=` + id })
},
// 新增知识库分段
createKnowledgeSegment: async (data: KnowledgeSegmentVO) => {
return await request.post({ url: `/ai/knowledge/segment/create`, data })
},
// 修改知识库分段
updateKnowledgeSegment: async (data: KnowledgeSegmentVO) => {
return await request.put({ url: `/ai/knowledge/segment/update`, data })
},
// 修改知识库分段状态
updateKnowledgeSegmentStatus: async (data: any) => {
return await request.put({
url: `/ai/knowledge/segment/update-status`,
data
})
},
// 切片内容
splitContent: async (url: string, segmentMaxTokens: number) => {
return await request.get({
url: `/ai/knowledge/segment/split`,
params: { url, segmentMaxTokens }
})
},
// 获取文档处理列表
getKnowledgeSegmentProcessList: async (documentIds: number[]) => {
return await request.get({
url: `/ai/knowledge/segment/get-process-list`,
params: { documentIds: documentIds.join(',') }
})
},
// 搜索知识库分段
searchKnowledgeSegment: async (params: any) => {
return await request.get({
url: `/ai/knowledge/segment/search`,
params
})
}
}
-53
View File
@@ -1,53 +0,0 @@
import request from '@/config/axios'
// AI 聊天模型 VO
export interface ChatModelVO {
id: number // 编号
keyId: number // API 秘钥编号
name: string // 模型名字
model: string // 模型标识
platform: string // 模型平台
sort: number // 排序
status: number // 状态
temperature: number // 温度参数
maxTokens: number // 单条回复的最大 Token 数量
maxContexts: number // 上下文的最大 Message 数量
}
// AI 聊天模型 API
export const ChatModelApi = {
// 查询聊天模型分页
getChatModelPage: async (params: any) => {
return await request.get({ url: `/ai/chat-model/page`, params })
},
// 获得聊天模型列表
getChatModelSimpleList: async (status?: number) => {
return await request.get({
url: `/ai/chat-model/simple-list`,
params: {
status
}
})
},
// 查询聊天模型详情
getChatModel: async (id: number) => {
return await request.get({ url: `/ai/chat-model/get?id=` + id })
},
// 新增聊天模型
createChatModel: async (data: ChatModelVO) => {
return await request.post({ url: `/ai/chat-model/create`, data })
},
// 修改聊天模型
updateChatModel: async (data: ChatModelVO) => {
return await request.put({ url: `/ai/chat-model/update`, data })
},
// 删除聊天模型
deleteChatModel: async (id: number) => {
return await request.delete({ url: `/ai/chat-model/delete?id=` + id })
}
}
+2
View File
@@ -13,6 +13,8 @@ export interface ChatRoleVO {
welcomeMessage: string // 角色设定
publicStatus: boolean // 是否公开
status: number // 状态
knowledgeIds?: number[] // 引用的知识库 ID 列表
toolIds?: number[] // 引用的工具 ID 列表
}
// AI 聊天角色 分页请求 vo
+54
View File
@@ -0,0 +1,54 @@
import request from '@/config/axios'
// AI 模型 VO
export interface ModelVO {
id: number // 编号
keyId: number // API 秘钥编号
name: string // 模型名字
model: string // 模型标识
platform: string // 模型平台
type: number // 模型类型
sort: number // 排序
status: number // 状态
temperature?: number // 温度参数
maxTokens?: number // 单条回复的最大 Token 数量
maxContexts?: number // 上下文的最大 Message 数量
}
// AI 模型 API
export const ModelApi = {
// 查询模型分页
getModelPage: async (params: any) => {
return await request.get({ url: `/ai/model/page`, params })
},
// 获得模型列表
getModelSimpleList: async (type?: number) => {
return await request.get({
url: `/ai/model/simple-list`,
params: {
type
}
})
},
// 查询模型详情
getModel: async (id: number) => {
return await request.get({ url: `/ai/model/get?id=` + id })
},
// 新增模型
createModel: async (data: ModelVO) => {
return await request.post({ url: `/ai/model/create`, data })
},
// 修改模型
updateModel: async (data: ModelVO) => {
return await request.put({ url: `/ai/model/update`, data })
},
// 删除模型
deleteModel: async (id: number) => {
return await request.delete({ url: `/ai/model/delete?id=` + id })
}
}
+42
View File
@@ -0,0 +1,42 @@
import request from '@/config/axios'
// AI 工具 VO
export interface ToolVO {
id: number // 工具编号
name: string // 工具名称
description: string // 工具描述
status: number // 状态
}
// AI 工具 API
export const ToolApi = {
// 查询工具分页
getToolPage: async (params: any) => {
return await request.get({ url: `/ai/tool/page`, params })
},
// 查询工具详情
getTool: async (id: number) => {
return await request.get({ url: `/ai/tool/get?id=` + id })
},
// 新增工具
createTool: async (data: ToolVO) => {
return await request.post({ url: `/ai/tool/create`, data })
},
// 修改工具
updateTool: async (data: ToolVO) => {
return await request.put({ url: `/ai/tool/update`, data })
},
// 删除工具
deleteTool: async (id: number) => {
return await request.delete({ url: `/ai/tool/delete?id=` + id })
},
// 获取工具简单列表
getToolSimpleList: async () => {
return await request.get({ url: `/ai/tool/simple-list` })
}
}
+25
View File
@@ -0,0 +1,25 @@
import request from '@/config/axios'
export const getWorkflowPage = async (params) => {
return await request.get({ url: '/ai/workflow/page', params })
}
export const getWorkflow = async (id) => {
return await request.get({ url: '/ai/workflow/get?id=' + id })
}
export const createWorkflow = async (data) => {
return await request.post({ url: '/ai/workflow/create', data })
}
export const updateWorkflow = async (data) => {
return await request.put({ url: '/ai/workflow/update', data })
}
export const deleteWorkflow = async (id) => {
return await request.delete({ url: '/ai/workflow/delete?id=' + id })
}
export const updateWorkflowModel = async (data) => {
return await request.put({ url: '/ai/workflow/updateWorkflowModel', data })
}
+6
View File
@@ -20,3 +20,9 @@ export const getProcessDefinitionList = async (params) => {
params
})
}
export const getSimpleProcessDefinitionList = async () => {
return await request.get({
url: '/bpm/process-definition/simple-list'
})
}
+6 -1
View File
@@ -90,7 +90,12 @@ export const getProcessInstanceCopyPage = async (params: any) => {
// 获取审批详情
export const getApprovalDetail = async (params: any) => {
return await request.get({ url: 'bpm/process-instance/get-approval-detail', params })
return await request.get({ url: '/bpm/process-instance/get-approval-detail', params })
}
// 获取下一个执行的流程节点
export const getNextApprovalNodes = async (params: any) => {
return await request.get({ url: '/bpm/process-instance/get-next-approval-nodes', params })
}
// 获取表单字段权限
+50
View File
@@ -0,0 +1,50 @@
import request from '@/config/axios'
// 查询用户详情
export const self = async (params: any) => {
return await request.get({
url: '/user/self',
params
})
}
// 判断用户哪个终端在线
export const terminalOnline = async (params: any) => {
return await request.get({
url: '/user/terminal/online',
params
})
}
// 朋友列表
export const friendList = async (params: any) => {
return await request.get({
url: '/friend/list',
params
})
}
// 群列表
export const groupList = async (params: any) => {
return await request.get({
url: '/group/list',
params
})
}
// 开启/关闭免打扰状态
export const friendDnd = async (data: any) => {
return await request.put({
url: '/friend/dnd',
data
})
}
// 开启/关闭群免打扰状态
export const groupDnd = async (data: any) => {
return await request.put({
url: '/group/dnd',
data
})
}
+96
View File
@@ -0,0 +1,96 @@
import request from '@/config/axios'
export type ChatUserId = number | string
export interface ConversationUser {
id: ChatUserId
nickname?: string
username?: string
avatar?: string
}
export interface PrivateMessage {
id: ChatUserId
sendId: ChatUserId
recvId: ChatUserId
sendUserName?: string
recvUserName?: string
content?: string | null
type: number
status: number
sendTime: string | number
}
export interface ChatConversation {
userA: ConversationUser
userB: ConversationUser
messageCount: number
lastMessage: PrivateMessage
}
export interface ConversationPageRequest {
pageNum: number
pageSize: number
userKeyword?: string
peerKeyword?: string
lastSendTimeList?: [number, number]
}
export interface PrivateMessagePageRequest {
pageNum: number
pageSize: number
sendId: ChatUserId
recvId: ChatUserId
content?: string
sendTimeList?: [number, number]
}
export interface ChatPageResult<T> {
list: T[]
total: number
}
export interface PrivateMessageModerateRequest {
messageId: ChatUserId
reason?: string
}
export interface PrivateMessageModerateResult {
messageId: ChatUserId
status: 2
recallMessageId: ChatUserId
alreadyHidden: boolean
notificationSent: boolean
}
export const moderateMessage = (data: PrivateMessageModerateRequest) =>
request.post<PrivateMessageModerateResult>({ url: '/chat/private-msg/moderate', data })
export const conversationPage = (data: ConversationPageRequest) =>
request.post<ChatPageResult<ChatConversation>>({
url: '/chat/private-msg/conversation/page',
data
})
// 查询私聊消息列表
export const page = async <T = any>(data: any) => {
return await request.post<T>({
url: '/chat/private-msg/page',
data: data
})
}
// 获取私聊详细信息
export const getInfo = async (id: any) => {
return await request.get({
url: '/chat/private-msg/getById?id=' + id
})
}
// 私聊消息统计
export const dailyCount = async (params: any) => {
return await request.get({
url: '/chat/private-msg/cout',
params: params
})
}
+31
View File
@@ -0,0 +1,31 @@
import request from '@/config/axios'
// 查询敏感词列表
export const page = async (data: any) => {
return await request.post({
url: '/chat/sensitive/page',
data: data
})
}
// 获取敏感词详细信息
export const getInfo = async (id: any) => {
return await request.get({
url: '/chat/sensitive/getById?id=' + id,
})
}
// 创建或者更新敏感词
export const createOrUpdate = async (data: any) => {
return await request.post({
url: '/chat/sensitive/createOrUpdate',
data: data
})
}
// 删除敏感词
export const delByIds = async (ids:any) => {
return await request.delete({
url: '/chat/sensitive/delByIds?ids=' + ids
})
}
+169
View File
@@ -0,0 +1,169 @@
import request from '@/config/axios'
// IoT 设备 VO
export interface DeviceVO {
id: number // 设备 ID,主键,自增
deviceKey: string // 设备唯一标识符
deviceName: string // 设备名称
productId: number // 产品编号
productKey: string // 产品标识
deviceType: number // 设备类型
nickname: string // 设备备注名称
gatewayId: number // 网关设备 ID
state: number // 设备状态
onlineTime: Date // 最后上线时间
offlineTime: Date // 最后离线时间
activeTime: Date // 设备激活时间
createTime: Date // 创建时间
ip: string // 设备的 IP 地址
firmwareVersion: string // 设备的固件版本
deviceSecret: string // 设备密钥,用于设备认证,需安全存储
mqttClientId: string // MQTT 客户端 ID
mqttUsername: string // MQTT 用户名
mqttPassword: string // MQTT 密码
authType: string // 认证类型
latitude: number // 设备位置的纬度
longitude: number // 设备位置的经度
areaId: number // 地区编码
address: string // 设备详细地址
serialNumber: string // 设备序列号
config: string // 设备配置
groupIds?: number[] // 添加分组 ID
}
// IoT 设备数据 VO
export interface DeviceDataVO {
deviceId: number // 设备编号
thinkModelFunctionId: number // 物模型编号
productKey: string // 产品标识
deviceName: string // 设备名称
identifier: string // 属性标识符
name: string // 属性名称
dataType: string // 数据类型
updateTime: Date // 更新时间
value: string // 最新值
}
// IoT 设备数据 VO
export interface DeviceHistoryDataVO {
time: number // 时间
data: string // 数据
}
// IoT 设备状态枚举
export enum DeviceStateEnum {
INACTIVE = 0, // 未激活
ONLINE = 1, // 在线
OFFLINE = 2 // 离线
}
// IoT 设备上行 Request VO
export interface IotDeviceUpstreamReqVO {
id: number // 设备编号
type: string // 消息类型
identifier: string // 标识符
data: any // 请求参数
}
// IoT 设备下行 Request VO
export interface IotDeviceDownstreamReqVO {
id: number // 设备编号
type: string // 消息类型
identifier: string // 标识符
data: any // 请求参数
}
// MQTT 连接参数 VO
export interface MqttConnectionParamsVO {
mqttClientId: string // MQTT 客户端 ID
mqttUsername: string // MQTT 用户名
mqttPassword: string // MQTT 密码
}
// 设备 API
export const DeviceApi = {
// 查询设备分页
getDevicePage: async (params: any) => {
return await request.get({ url: `/iot/device/page`, params })
},
// 查询设备详情
getDevice: async (id: number) => {
return await request.get({ url: `/iot/device/get?id=` + id })
},
// 新增设备
createDevice: async (data: DeviceVO) => {
return await request.post({ url: `/iot/device/create`, data })
},
// 修改设备
updateDevice: async (data: DeviceVO) => {
return await request.put({ url: `/iot/device/update`, data })
},
// 修改设备分组
updateDeviceGroup: async (data: { ids: number[]; groupIds: number[] }) => {
return await request.put({ url: `/iot/device/update-group`, data })
},
// 删除单个设备
deleteDevice: async (id: number) => {
return await request.delete({ url: `/iot/device/delete?id=` + id })
},
// 删除多个设备
deleteDeviceList: async (ids: number[]) => {
return await request.delete({ url: `/iot/device/delete-list`, params: { ids: ids.join(',') } })
},
// 导出设备
exportDeviceExcel: async (params: any) => {
return await request.download({ url: `/iot/device/export-excel`, params })
},
// 获取设备数量
getDeviceCount: async (productId: number) => {
return await request.get({ url: `/iot/device/count?productId=` + productId })
},
// 获取设备的精简信息列表
getSimpleDeviceList: async (deviceType?: number) => {
return await request.get({ url: `/iot/device/simple-list?`, params: { deviceType } })
},
// 获取导入模板
importDeviceTemplate: async () => {
return await request.download({ url: `/iot/device/get-import-template` })
},
// 设备上行
upstreamDevice: async (data: IotDeviceUpstreamReqVO) => {
return await request.post({ url: `/iot/device/upstream`, data })
},
// 设备下行
downstreamDevice: async (data: IotDeviceDownstreamReqVO) => {
return await request.post({ url: `/iot/device/downstream`, data })
},
// 获取设备属性最新数据
getLatestDeviceProperties: async (params: any) => {
return await request.get({ url: `/iot/device/property/latest`, params })
},
// 获取设备属性历史数据
getHistoryDevicePropertyPage: async (params: any) => {
return await request.get({ url: `/iot/device/property/history-page`, params })
},
// 查询设备日志分页
getDeviceLogPage: async (params: any) => {
return await request.get({ url: `/iot/device/log/page`, params })
},
// 获取设备MQTT连接参数
getMqttConnectionParams: async (deviceId: number) => {
return await request.get({ url: `/iot/device/mqtt-connection-params`, params: { deviceId } })
}
}
+43
View File
@@ -0,0 +1,43 @@
import request from '@/config/axios'
// IoT 设备分组 VO
export interface DeviceGroupVO {
id: number // 分组 ID
name: string // 分组名字
status: number // 分组状态
description: string // 分组描述
deviceCount?: number // 设备数量
}
// IoT 设备分组 API
export const DeviceGroupApi = {
// 查询设备分组分页
getDeviceGroupPage: async (params: any) => {
return await request.get({ url: `/iot/device-group/page`, params })
},
// 查询设备分组详情
getDeviceGroup: async (id: number) => {
return await request.get({ url: `/iot/device-group/get?id=` + id })
},
// 新增设备分组
createDeviceGroup: async (data: DeviceGroupVO) => {
return await request.post({ url: `/iot/device-group/create`, data })
},
// 修改设备分组
updateDeviceGroup: async (data: DeviceGroupVO) => {
return await request.put({ url: `/iot/device-group/update`, data })
},
// 删除设备分组
deleteDeviceGroup: async (id: number) => {
return await request.delete({ url: `/iot/device-group/delete?id=` + id })
},
// 获取设备分组的精简信息列表
getSimpleDeviceGroupList: async () => {
return await request.get({ url: `/iot/device-group/simple-list` })
}
}
-74
View File
@@ -1,74 +0,0 @@
import request from '@/config/axios'
// IoT 设备 VO
export interface DeviceVO {
id: number // 设备 ID,主键,自增
deviceKey: string // 设备唯一标识符
deviceName: string // 设备名称
productId: number // 产品编号
productKey: string // 产品标识
deviceType: number // 设备类型
nickname: string // 设备备注名称
gatewayId: number // 网关设备 ID
status: number // 设备状态
statusLastUpdateTime: Date // 设备状态最后更新时间
lastOnlineTime: Date // 最后上线时间
lastOfflineTime: Date // 最后离线时间
activeTime: Date // 设备激活时间
createTime: Date // 创建时间
ip: string // 设备的 IP 地址
firmwareVersion: string // 设备的固件版本
deviceSecret: string // 设备密钥,用于设备认证,需安全存储
mqttClientId: string // MQTT 客户端 ID
mqttUsername: string // MQTT 用户名
mqttPassword: string // MQTT 密码
authType: string // 认证类型
latitude: number // 设备位置的纬度
longitude: number // 设备位置的经度
areaId: number // 地区编码
address: string // 设备详细地址
serialNumber: string // 设备序列号
}
export interface DeviceUpdateStatusVO {
id: number // 设备 ID,主键,自增
status: number // 设备状态
}
// 设备 API
export const DeviceApi = {
// 查询设备分页
getDevicePage: async (params: any) => {
return await request.get({ url: `/iot/device/page`, params })
},
// 查询设备详情
getDevice: async (id: number) => {
return await request.get({ url: `/iot/device/get?id=` + id })
},
// 新增设备
createDevice: async (data: DeviceVO) => {
return await request.post({ url: `/iot/device/create`, data })
},
// 修改设备
updateDevice: async (data: DeviceVO) => {
return await request.put({ url: `/iot/device/update`, data })
},
// 修改设备状态
updateDeviceStatus: async (data: DeviceUpdateStatusVO) => {
return await request.put({ url: `/iot/device/update-status`, data })
},
// 删除设备
deleteDevice: async (id: number) => {
return await request.delete({ url: `/iot/device/delete?id=` + id })
},
// 获取设备数量
getDeviceCount: async (productId: number) => {
return await request.get({ url: `/iot/device/count?productId=` + productId })
}
}
+51
View File
@@ -0,0 +1,51 @@
import request from '@/config/axios'
// IoT 插件配置 VO
export interface PluginConfigVO {
id: number // 主键ID
pluginKey: string // 插件标识
name: string // 插件名称
description: string // 描述
deployType: number // 部署方式
fileName: string // 插件包文件名
version: string // 插件版本
type: number // 插件类型
protocol: string // 设备插件协议类型
status: number // 状态
configSchema: string // 插件配置项描述信息
config: string // 插件配置信息
script: string // 插件脚本
}
// IoT 插件配置 API
export const PluginConfigApi = {
// 查询插件配置分页
getPluginConfigPage: async (params: any) => {
return await request.get({ url: `/iot/plugin-config/page`, params })
},
// 查询插件配置详情
getPluginConfig: async (id: number) => {
return await request.get({ url: `/iot/plugin-config/get?id=` + id })
},
// 新增插件配置
createPluginConfig: async (data: PluginConfigVO) => {
return await request.post({ url: `/iot/plugin-config/create`, data })
},
// 修改插件配置
updatePluginConfig: async (data: PluginConfigVO) => {
return await request.put({ url: `/iot/plugin-config/update`, data })
},
// 删除插件配置
deletePluginConfig: async (id: number) => {
return await request.delete({ url: `/iot/plugin-config/delete?id=` + id })
},
// 修改插件状态
updatePluginStatus: async (data: any) => {
return await request.put({ url: `/iot/plugin-config/update-status`, data })
}
}
+43
View File
@@ -0,0 +1,43 @@
import request from '@/config/axios'
// IoT 产品分类 VO
export interface ProductCategoryVO {
id: number // 分类 ID
name: string // 分类名字
sort: number // 分类排序
status: number // 分类状态
description: string // 分类描述
}
// IoT 产品分类 API
export const ProductCategoryApi = {
// 查询产品分类分页
getProductCategoryPage: async (params: any) => {
return await request.get({ url: `/iot/product-category/page`, params })
},
// 查询产品分类详情
getProductCategory: async (id: number) => {
return await request.get({ url: `/iot/product-category/get?id=` + id })
},
// 新增产品分类
createProductCategory: async (data: ProductCategoryVO) => {
return await request.post({ url: `/iot/product-category/create`, data })
},
// 修改产品分类
updateProductCategory: async (data: ProductCategoryVO) => {
return await request.put({ url: `/iot/product-category/update`, data })
},
// 删除产品分类
deleteProductCategory: async (id: number) => {
return await request.delete({ url: `/iot/product-category/delete?id=` + id })
},
/** 获取产品分类精简列表 */
getSimpleProductCategoryList: () => {
return request.get({ url: '/iot/product-category/simple-list' })
}
}
@@ -7,6 +7,9 @@ export interface ProductVO {
productKey: string // 产品标识
protocolId: number // 协议编号
categoryId: number // 产品所属品类标识符
categoryName?: string // 产品所属品类名称
icon: string // 产品图标
picUrl: string // 产品图片
description: string // 产品描述
validateType: number // 数据校验级别
status: number // 产品状态
@@ -18,6 +21,23 @@ export interface ProductVO {
createTime: Date // 创建时间
}
// IOT 数据校验级别枚举类
export enum ValidateTypeEnum {
WEAK = 0, // 弱校验
NONE = 1 // 免校验
}
// IOT 产品设备类型枚举类 0: 直连设备, 1: 网关子设备, 2: 网关设备
export enum DeviceTypeEnum {
DEVICE = 0, // 直连设备
GATEWAY_SUB = 1, // 网关子设备
GATEWAY = 2 // 网关设备
}
// IOT 数据格式枚举类
export enum DataFormatEnum {
JSON = 0, // 标准数据格式(JSON)
CUSTOMIZE = 1 // 透传/自定义
}
// IoT 产品 API
export const ProductApi = {
// 查询产品分页
@@ -57,6 +77,6 @@ export const ProductApi = {
// 查询产品(精简)列表
getSimpleProductList() {
return request.get({ url: '/iot/product/list-all-simple' })
return request.get({ url: '/iot/product/simple-list' })
}
}
+127
View File
@@ -0,0 +1,127 @@
import request from '@/config/axios'
// IoT 数据桥梁 VO
export interface DataBridgeVO {
id?: number // 桥梁编号
name?: string // 桥梁名称
description?: string // 桥梁描述
status?: number // 桥梁状态
direction?: number // 桥梁方向
type?: number // 桥梁类型
config?:
| HttpConfig
| MqttConfig
| RocketMQConfig
| KafkaMQConfig
| RabbitMQConfig
| RedisStreamMQConfig // 桥梁配置
}
interface Config {
type: string
}
/** HTTP 配置 */
export interface HttpConfig extends Config {
url: string
method: string
headers: Record<string, string>
query: Record<string, string>
body: string
}
/** MQTT 配置 */
export interface MqttConfig extends Config {
url: string
username: string
password: string
clientId: string
topic: string
}
/** RocketMQ 配置 */
export interface RocketMQConfig extends Config {
nameServer: string
accessKey: string
secretKey: string
group: string
topic: string
tags: string
}
/** Kafka 配置 */
export interface KafkaMQConfig extends Config {
bootstrapServers: string
username: string
password: string
ssl: boolean
topic: string
}
/** RabbitMQ 配置 */
export interface RabbitMQConfig extends Config {
host: string
port: number
virtualHost: string
username: string
password: string
exchange: string
routingKey: string
queue: string
}
/** Redis Stream MQ 配置 */
export interface RedisStreamMQConfig extends Config {
host: string
port: number
password: string
database: number
topic: string
}
/** 数据桥梁类型 */
// TODO @puhui999:枚举用 number 可以么?
export const IoTDataBridgeConfigType = {
HTTP: '1',
TCP: '2',
WEBSOCKET: '3',
MQTT: '10',
DATABASE: '20',
REDIS_STREAM: '21',
ROCKETMQ: '30',
RABBITMQ: '31',
KAFKA: '32'
} as const
// 数据桥梁 API
export const DataBridgeApi = {
// 查询数据桥梁分页
getDataBridgePage: async (params: any) => {
return await request.get({ url: `/iot/data-bridge/page`, params })
},
// 查询数据桥梁详情
getDataBridge: async (id: number) => {
return await request.get({ url: `/iot/data-bridge/get?id=` + id })
},
// 新增数据桥梁
createDataBridge: async (data: DataBridgeVO) => {
return await request.post({ url: `/iot/data-bridge/create`, data })
},
// 修改数据桥梁
updateDataBridge: async (data: DataBridgeVO) => {
return await request.put({ url: `/iot/data-bridge/update`, data })
},
// 删除数据桥梁
deleteDataBridge: async (id: number) => {
return await request.delete({ url: `/iot/data-bridge/delete?id=` + id })
},
// 导出数据桥梁 Excel
exportDataBridge: async (params) => {
return await request.download({ url: `/iot/data-bridge/export-excel`, params })
}
}
+41
View File
@@ -0,0 +1,41 @@
import request from '@/config/axios'
/** IoT 统计数据类型 */
export interface IotStatisticsSummaryRespVO {
productCategoryCount: number
productCount: number
deviceCount: number
deviceMessageCount: number
productCategoryTodayCount: number
productTodayCount: number
deviceTodayCount: number
deviceMessageTodayCount: number
deviceOnlineCount: number
deviceOfflineCount: number
deviceInactiveCount: number
productCategoryDeviceCounts: Record<string, number>
}
/** IoT 消息统计数据类型 */
export interface IotStatisticsDeviceMessageSummaryRespVO {
upstreamCounts: Record<number, number>
downstreamCounts: Record<number, number>
}
// IoT 数据统计 API
export const ProductCategoryApi = {
// 查询基础的数据统计
getIotStatisticsSummary: async () => {
return await request.get<IotStatisticsSummaryRespVO>({
url: `/iot/statistics/get-summary`
})
},
// 查询设备上下行消息的数据统计
getIotStatisticsDeviceMessageSummary: async (params: { startTime: number; endTime: number }) => {
return await request.get<IotStatisticsDeviceMessageSummaryRespVO>({
url: `/iot/statistics/get-log-summary`,
params
})
}
}
+88
View File
@@ -0,0 +1,88 @@
import request from '@/config/axios'
/**
* IoT 产品物模型
*/
export interface ThingModelData {
id?: number // 物模型功能编号
identifier?: string // 功能标识
name?: string // 功能名称
description?: string // 功能描述
productId?: number // 产品编号
productKey?: string // 产品标识
dataType: string // 数据类型,与 dataSpecs 的 dataType 保持一致
type: number // 功能类型
property: ThingModelProperty // 属性
event?: ThingModelEvent // 事件
service?: ThingModelService // 服务
}
/**
* IoT 模拟设备
*/
// TODO @super:和 ThingModelSimulatorData 会不会好点
export interface SimulatorData extends ThingModelData {
simulateValue?: string | number // 用于存储模拟值 TODO @super:字段使用 value 会不会好点
}
/**
* ThingModelProperty 类型
*/
export interface ThingModelProperty {
[key: string]: any
}
/**
* ThingModelEvent 类型
*/
export interface ThingModelEvent {
[key: string]: any
}
/**
* ThingModelService 类型
*/
export interface ThingModelService {
[key: string]: any
}
// IoT 产品物模型 API
export const ThingModelApi = {
// 查询产品物模型分页
getThingModelPage: async (params: any) => {
return await request.get({ url: `/iot/thing-model/page`, params })
},
// 获得产品物模型列表
getThingModelList: async (params: any) => {
return await request.get({ url: `/iot/thing-model/list`, params })
},
// 获得产品物模型
getThingModelListByProductId: async (params: any) => {
return await request.get({
url: `/iot/thing-model/list-by-product-id`,
params
})
},
// 查询产品物模型详情
getThingModel: async (id: number) => {
return await request.get({ url: `/iot/thing-model/get?id=` + id })
},
// 新增产品物模型
createThingModel: async (data: ThingModelData) => {
return await request.post({ url: `/iot/thing-model/create`, data })
},
// 修改产品物模型
updateThingModel: async (data: ThingModelData) => {
return await request.put({ url: `/iot/thing-model/update`, data })
},
// 删除产品物模型
deleteThingModel: async (id: number) => {
return await request.delete({ url: `/iot/thing-model/delete?id=` + id })
}
}
-55
View File
@@ -1,55 +0,0 @@
import request from '@/config/axios'
// IoT 产品物模型 VO
export interface ThinkModelFunctionVO {
id: number // 物模型功能编号
identifier: string // 功能标识
name: string // 功能名称
description: string // 功能描述
productId: number // 产品编号
productKey: string // 产品标识
type: number // 功能类型
property: string // 属性
event: string // 事件
service: string // 服务
}
// IoT 产品物模型 API
export const ThinkModelFunctionApi = {
// 查询产品物模型分页
getThinkModelFunctionPage: async (params: any) => {
return await request.get({ url: `/iot/think-model-function/page`, params })
},
// 获得产品物模型
getThinkModelFunctionListByProductId: async (params: any) => {
return await request.get({
url: `/iot/think-model-function/list-by-product-id`,
params
})
},
// 查询产品物模型详情
getThinkModelFunction: async (id: number) => {
return await request.get({ url: `/iot/think-model-function/get?id=` + id })
},
// 新增产品物模型
createThinkModelFunction: async (data: ThinkModelFunctionVO) => {
return await request.post({ url: `/iot/think-model-function/create`, data })
},
// 修改产品物模型
updateThinkModelFunction: async (data: ThinkModelFunctionVO) => {
return await request.put({ url: `/iot/think-model-function/update`, data })
},
// 删除产品物模型
deleteThinkModelFunction: async (id: number) => {
return await request.delete({ url: `/iot/think-model-function/delete?id=` + id })
},
// 导出产品物模型 Excel
exportThinkModelFunction: async (params) => {
return await request.download({ url: `/iot/think-model-function/export-excel`, params })
}
}
+43
View File
@@ -0,0 +1,43 @@
import request from '@/config/axios'
// 礼物商品 VO
export interface GiftVO {
id: number // 礼物商品id
title: number // 礼物标题
price: number // 礼物价格(分)
image: string // 礼物图片
status: string // 礼物状态
}
// 礼物商品 API
export const GiftApi = {
// 查询礼物商品分页
getGiftPage: async (params: any) => {
return await request.get({ url: `/trade/gift/page`, params })
},
// 查询礼物商品详情
getGift: async (id: number) => {
return await request.get({ url: `/trade/gift/get?id=` + id })
},
// 新增礼物商品
createGift: async (data: GiftVO) => {
return await request.post({ url: `/trade/gift/create`, data })
},
// 修改礼物商品
updateGift: async (data: GiftVO) => {
return await request.put({ url: `/trade/gift/update`, data })
},
// 删除礼物商品
deleteGift: async (id: number) => {
return await request.delete({ url: `/trade/gift/delete?id=` + id })
},
// 导出礼物商品 Excel
exportGift: async (params) => {
return await request.download({ url: `/trade/gift/export-excel`, params })
}
}
+1 -1
View File
@@ -101,7 +101,7 @@ export const deleteSpu = (id: number) => {
}
// 导出商品 Spu Excel
export const exportSpu = async (params) => {
export const exportSpu = async (params: any) => {
return await request.download({ url: '/product/spu/export', params })
}
@@ -37,3 +37,8 @@ export const approveBrokerageWithdraw = async (id: number) => {
export const rejectBrokerageWithdraw = async (data: BrokerageWithdrawVO) => {
return await request.put({ url: `/trade/brokerage-withdraw/reject`, data })
}
// 导出佣金提现 Excel
export const exportBrokerageWithdraw = async (params: any) => {
return await request.download({ url: `/trade/brokerage-withdraw/export-excel`, params })
}
+23 -2
View File
@@ -34,6 +34,7 @@ export interface OrderVO {
deliveryTemplateId?: number | null // 配送模板编号
logisticsId?: number | null // 发货物流公司编号
logisticsNo?: string // 发货物流单号
logisticsLabel?: string //发货物流面单短链
deliveryTime?: Date | null // 发货时间
receiveTime?: Date | null // 收货时间
receiverName?: string // 收件人名称
@@ -120,6 +121,16 @@ export interface TradeOrderSummaryRespVO {
afterSalePrice?: string
}
// 用户发货模版
export function importMchTemplate() {
return request.download({ url: '/trade/order/get-import-template' })
}
// 查询交易订单列表
export const exportOrderExcel = async (params: any) => {
return await request.download({ url: `/trade/order/export-excel`, params })
}
// 查询交易订单列表
export const getOrderPage = async (params: any) => {
return await request.get({ url: `/trade/order/page`, params })
@@ -141,7 +152,7 @@ export const getExpressTrackList = async (id: number | null) => {
}
export interface DeliveryVO {
id?: number // 订单编号
id: number // 订单编号
logisticsId: number | null // 物流公司编号
logisticsNo: string // 物流编号
}
@@ -151,7 +162,16 @@ export const deliveryOrder = async (data: DeliveryVO) => {
return await request.put({ url: `/trade/order/delivery`, data })
}
// 订单备注
//申通快递(快递100)订单创建
export const deliveryOrder100 = async (data: { id: number }) => {
return await request.put({ url: `/trade/order/delivery-kuaidi100?id=${data.id}`, data })
}
// 订单取消(传入 id)
export const cancelOrder = async (id: number) => {
return await request.put({ url: `/trade/order/cancel?id=${id}` })
}
export const updateOrderRemark = async (data: any) => {
return await request.put({ url: `/trade/order/update-remark`, data })
}
@@ -186,3 +206,4 @@ export const getOrderByPickUpVerifyCode = async (pickUpVerifyCode: string) => {
params: { pickUpVerifyCode }
})
}
+54
View File
@@ -0,0 +1,54 @@
import request from '@/config/axios'
export interface AirlineAccountVO {
id?: number
mobile: string
channel: string
password?: string
startTime: string
endTime: string
deviceId?: string
status: number
remark?: string
userId?: number
expired?: boolean
notStarted?: boolean
createTime?: string
}
export const channelOptions = [
{ value: 'CZ', label: '南方航空' },
{ value: 'MU', label: '东方航空' },
{ value: 'HU', label: '海南航空' }
]
// 渠道编码 -> 全称(列表页等处展示用;存储值仍为 CZ/MU/HU)
export const channelLabelMap: Record<string, string> = {
CZ: '南方航空',
MU: '东方航空',
HU: '海南航空'
}
export const getAirlineAccountPage = async (params: any) => {
return await request.get({ url: `/member/airline-account/page`, params })
}
export const getAirlineAccount = async (id: number) => {
return await request.get({ url: `/member/airline-account/get?id=` + id })
}
export const createAirlineAccount = async (data: AirlineAccountVO) => {
return await request.post({ url: `/member/airline-account/create`, data })
}
export const updateAirlineAccount = async (data: AirlineAccountVO) => {
return await request.put({ url: `/member/airline-account/update`, data })
}
export const deleteAirlineAccount = async (id: number) => {
return await request.delete({ url: `/member/airline-account/delete?id=` + id })
}
export const unbindAirlineDevice = async (id: number) => {
return await request.put({ url: `/member/airline-account/unbind-device?id=` + id })
}
+51
View File
@@ -0,0 +1,51 @@
import request from '@/config/axios'
// 用户认证 VO
export interface AuthVO {
id: number // 认证编号
bizType: string // 认证类型
bizId: number // 认证类型编号
authPic: number // 认证图片或视频
authExtraJson: string // 认证额外信息(json)
authTime: Date // 认证时间
authMemberId: number // 认证人编号(-1为系统认证)
authStatus: string // 认证状态
}
// 用户认证 API
export const AuthApi = {
// 查询用户认证分页
getAuthPage: async (params: any) => {
return await request.get({ url: `/member/com-auth/page`, params })
},
// 查询用户认证详情
getAuth: async (id: number) => {
return await request.get({ url: `/member/com-auth/get?id=` + id })
},
// 新增用户认证
createAuth: async (data: AuthVO) => {
return await request.post({ url: `/member/com-auth/create`, data })
},
// 修改用户认证
updateAuth: async (data: AuthVO) => {
return await request.put({ url: `/member/com-auth/update`, data })
},
// 检查用户认证
checkAuth: async (data: AuthVO) => {
return await request.post({ url: `/member/com-auth/check`, data })
},
// 删除用户认证
deleteAuth: async (id: number) => {
return await request.delete({ url: `/member/com-auth/delete?id=` + id })
},
// 导出用户认证 Excel
exportAuth: async (params) => {
return await request.download({ url: `/member/com-auth/export-excel`, params })
}
}
+42
View File
@@ -0,0 +1,42 @@
import request from '@/config/axios'
// 用户反馈 VO
export interface FeedbackVO {
id: number // 用户反馈id
memberId: number // 用户编号
content: string // 反馈内容
pic: string // 反馈图片
}
// 用户反馈 API
export const FeedbackApi = {
// 查询用户反馈分页
getFeedbackPage: async (params: any) => {
return await request.get({ url: `/member/feedback/page`, params })
},
// 查询用户反馈详情
getFeedback: async (id: number) => {
return await request.get({ url: `/member/feedback/get?id=` + id })
},
// 新增用户反馈
createFeedback: async (data: FeedbackVO) => {
return await request.post({ url: `/member/feedback/create`, data })
},
// 修改用户反馈
updateFeedback: async (data: FeedbackVO) => {
return await request.put({ url: `/member/feedback/update`, data })
},
// 删除用户反馈
deleteFeedback: async (id: number) => {
return await request.delete({ url: `/member/feedback/delete?id=` + id })
},
// 导出用户反馈 Excel
exportFeedback: async (params) => {
return await request.download({ url: `/member/feedback/export-excel`, params })
}
}
+47
View File
@@ -0,0 +1,47 @@
import request from '@/config/axios'
// 会员类型 VO
export interface OpenTypeVO {
id: number // 会员开通类型
title: string // 会员开通分类标题
icon: string // 图标
preferentialPrice: number // 价格(优惠价)
originalPrice: number // 价格(原价)
duration: number // 时长(天)
status: string // 状态
isHot: string // 是否热门
sort: number // 排序
}
// 会员类型 API
export const OpenTypeApi = {
// 查询会员类型分页
getOpenTypePage: async (params: any) => {
return await request.get({ url: `/member/open-type/page`, params })
},
// 查询会员类型详情
getOpenType: async (id: number) => {
return await request.get({ url: `/member/open-type/get?id=` + id })
},
// 新增会员类型
createOpenType: async (data: OpenTypeVO) => {
return await request.post({ url: `/member/open-type/create`, data })
},
// 修改会员类型
updateOpenType: async (data: OpenTypeVO) => {
return await request.put({ url: `/member/open-type/update`, data })
},
// 删除会员类型
deleteOpenType: async (id: number) => {
return await request.delete({ url: `/member/open-type/delete?id=` + id })
},
// 导出会员类型 Excel
exportOpenType: async (params) => {
return await request.download({ url: `/member/open-type/export-excel`, params })
}
}
+17
View File
@@ -0,0 +1,17 @@
import request from '@/config/axios'
// 会员开通记录 API
export const OpenTypeHistoryApi = {
lastByUserId: async (params: any) => {
return await request.get({ url: `/member/open-type/history/last-by-user-id`, params })
},
adminOpen: async (data: any) => {
return await request.post({ url: `/member/open-type/history/admin-open`, data })
},
page: async (params: any) => {
return await request.get({ url: `/member/open-type/history/page`, params })
},
refund: async (params: any) => {
return await request.get({ url: `/member/open-type/history/refund`, params })
},
}
+49
View File
@@ -0,0 +1,49 @@
import request from '@/config/axios'
// 朋友圈操作 VO
export interface OperationVO {
id: number // 收件地址编号
memberId: number // 用户编号
memberRecentId: number // 朋友圈编号
bizType: string // 点赞、屏蔽、举报
tapTime: Date // 点击时间
cancelTime: Date // 取消时间
reportType: string // 举报类型
scoreSc: number // 身材评分
scoreNx: number // 耐心评分
scoreSk: number // 爽快评分
scoreYq: number // 有趣评分
}
// 朋友圈操作 API
export const OperationApi = {
// 查询朋友圈操作分页
getOperationPage: async (params: any) => {
return await request.get({ url: `/member/operation/page`, params })
},
// 查询朋友圈操作详情
getOperation: async (id: number) => {
return await request.get({ url: `/member/operation/get?id=` + id })
},
// 新增朋友圈操作
createOperation: async (data: OperationVO) => {
return await request.post({ url: `/member/operation/create`, data })
},
// 修改朋友圈操作
updateOperation: async (data: OperationVO) => {
return await request.put({ url: `/member/operation/update`, data })
},
// 删除朋友圈操作
deleteOperation: async (id: number) => {
return await request.delete({ url: `/member/operation/delete?id=` + id })
},
// 导出朋友圈操作 Excel
exportOperation: async (params) => {
return await request.download({ url: `/member/operation/export-excel`, params })
}
}
+5
View File
@@ -0,0 +1,5 @@
import request from '@/config/axios'
export async function getRecentPage(data: any) {
return await request.post({ url: `/member/recent-cfg/create-or-update`, data })
}
+77
View File
@@ -0,0 +1,77 @@
import request from '@/config/axios'
// 朋友圈 VO
export interface RecentVO {
id: number // 收件地址编号
memberId: number // 用户编号
coverPic: string // 主图
coverVideo: string // 视频
description: string // 描述
issueLong: number // 发布-经度
issueLat: number // 发布-纬度
issueProvince: string // 发布-省
issueCity: string // 发布-市
issueDistrict: string // 发布-区
issueAddress: string // 发布-详细地址
visible: boolean // 是否展示
auditStatus: number // 审核状态:0-审核中,1-审核通过,2-审核不通过
auditSource?: 'THIRD_PARTY' | 'MANUAL' | 'HISTORY' // 审核来源
auditReason?: string // 审核原因
auditTime?: string // 审核时间
auditUserId?: number // 人工审核用户编号
createTime?: string // 创建时间
}
export interface RecentAuditReqVO {
id: number
auditStatus: 1 | 2
auditReason?: string
}
export interface RecentVisibleReqVO {
id: number
visible: boolean
}
// 朋友圈 API
export const RecentApi = {
// 查询朋友圈分页
getRecentPage: async (params: any) => {
return await request.get({ url: `/member/recent/page`, params })
},
// 查询朋友圈详情
getRecent: async (id: number) => {
return await request.get({ url: `/member/recent/get?id=` + id })
},
// 新增朋友圈
createRecent: async (data: RecentVO) => {
return await request.post({ url: `/member/recent/create`, data })
},
// 修改朋友圈
updateRecent: async (data: RecentVO) => {
return await request.put({ url: `/member/recent/update`, data })
},
// 人工审核朋友圈
auditRecent: async (data: RecentAuditReqVO) => {
return await request.put({ url: `/member/recent/audit`, data })
},
// 更新朋友圈展示状态
updateRecentVisible: async (data: RecentVisibleReqVO) => {
return await request.put({ url: `/member/recent/visible`, data })
},
// 删除朋友圈
deleteRecent: async (id: number) => {
return await request.delete({ url: `/member/recent/delete?id=` + id })
},
// 导出朋友圈 Excel
exportRecent: async (params) => {
return await request.download({ url: `/member/recent/export-excel`, params })
}
}
+40
View File
@@ -9,6 +9,9 @@ export interface UserVO {
loginIp: string
mark: string
mobile: string
wechatNum?: string | null
wechatQrCode?: string | null
addressAreaNames?: string[]
name: string | undefined
nickname: string | undefined
registerIp: string
@@ -27,6 +30,38 @@ export const getUserPage = async (params) => {
return await request.get({ url: `/member/user/page`, params })
}
export interface UserExportProgress {
taskId: string
status: 'WAITING' | 'RUNNING' | 'SUCCESS' | 'FAILURE'
total: number
processed: number
progress: number
message: string
fileName: string
existingTask: boolean
retentionHours: number
}
// 使用与列表相同的查询参数序列化方式,时间范围、标签数组等保持一致。
export const exportUsers = (params: Record<string, unknown>) => {
return request.post<UserExportProgress>({ url: '/member/user/export-async', params })
}
export const getUserExportProgress = (taskId: string) => {
return request.get<UserExportProgress>({
url: '/member/user/export-progress',
params: { taskId }
})
}
export const downloadUserExport = (taskId: string) => {
return request.download<Blob>({
url: '/member/user/export-download',
params: { taskId },
timeout: 300000
})
}
// 查询会员用户详情
export const getUser = async (id: number) => {
return await request.get({ url: `/member/user/get?id=` + id })
@@ -37,6 +72,11 @@ export const updateUser = async (data: UserVO) => {
return await request.put({ url: `/member/user/update`, data })
}
/** 更新会员用户状态(禁用后踢出 App 登录,且无法再登录) */
export const updateUserStatus = async (data: { id: number; status: number }) => {
return await request.put({ url: `/member/user/update-status`, data })
}
// 修改会员用户等级
export const updateUserLevel = async (data: any) => {
return await request.put({ url: `/member/user/update-level`, data })
+46
View File
@@ -0,0 +1,46 @@
import request from '@/config/axios'
// 用户查看记录 VO
export interface ViewRecordVO {
id: number // 收件地址编号
memberId: number // 用户编号
bizType: string // 查询分类、查看朋友圈
bizId: number // 查询分类、查看朋友圈
title: string // 查看的标题
viewStartTime: Date // 开始查看时间
viewEndTime: Date // 结束查看时间
viewSecond: number // 查看时间(秒)
}
// 用户查看记录 API
export const ViewRecordApi = {
// 查询用户查看记录分页
getViewRecordPage: async (params: any) => {
return await request.get({ url: `/member/view-record/page`, params })
},
// 查询用户查看记录详情
getViewRecord: async (id: number) => {
return await request.get({ url: `/member/view-record/get?id=` + id })
},
// 新增用户查看记录
createViewRecord: async (data: ViewRecordVO) => {
return await request.post({ url: `/member/view-record/create`, data })
},
// 修改用户查看记录
updateViewRecord: async (data: ViewRecordVO) => {
return await request.put({ url: `/member/view-record/update`, data })
},
// 删除用户查看记录
deleteViewRecord: async (id: number) => {
return await request.delete({ url: `/member/view-record/delete?id=` + id })
},
// 导出用户查看记录 Excel
exportViewRecord: async (params) => {
return await request.download({ url: `/member/view-record/export-excel`, params })
}
}
+53
View File
@@ -0,0 +1,53 @@
import request from '@/config/axios'
// 提现金额审核 VO
export interface WalletTxAuthVO {
id: number // 钱包提现
userId: number // 用户id
walletId: number // 钱包id
bizType: string // 提现类型
bizId: number // 提现类型绑定id
txPrice: number // 提现金额
title: string // 提现title
checkStatus: string // 提现状态
checkTime: Date // 审核时间
txRefuse: string // 提现拒绝信息
}
// 提现金额审核 API
export const WalletTxAuthApi = {
// 查询提现金额审核分页
getWalletTxAuthPage: async (params: any) => {
return await request.get({ url: `/pay/wallet-tx-auth/page`, params })
},
// 查询提现金额审核详情
getWalletTxAuth: async (id: number) => {
return await request.get({ url: `/pay/wallet-tx-auth/get?id=` + id })
},
// 审核
check: async (data: WalletTxAuthVO) => {
return await request.post({ url: `/pay/wallet-tx-auth/check`, data })
},
// 新增提现金额审核
createWalletTxAuth: async (data: WalletTxAuthVO) => {
return await request.post({ url: `/pay/wallet-tx-auth/create`, data })
},
// 修改提现金额审核
updateWalletTxAuth: async (data: WalletTxAuthVO) => {
return await request.put({ url: `/pay/wallet-tx-auth/update`, data })
},
// 删除提现金额审核
deleteWalletTxAuth: async (id: number) => {
return await request.delete({ url: `/pay/wallet-tx-auth/delete?id=` + id })
},
// 导出提现金额审核 Excel
exportWalletTxAuth: async (params) => {
return await request.download({ url: `/pay/wallet-tx-auth/export-excel`, params })
}
}
+55
View File
@@ -0,0 +1,55 @@
import request from '@/config/axios'
export interface SubAccountVO {
id: number
userId: number
username: string
nickname: string
status: number
loginDate: Date
createTime: Date
menuIds: number[]
}
export interface SubAccountMenuVO {
id: number
parentId: number
name: string
type: number
sort: number
}
// 查询子账号列表
export const getSubAccountList = () => {
return request.get({ url: '/system/sub-account/list' })
}
// 查询当前账号拥有的菜单(用于给子账号勾选)
export const getHolderMenuList = () => {
return request.get({ url: '/system/sub-account/menu-list' })
}
// 创建子账号
export const createSubAccount = (data: SubAccountVO & { password: string }) => {
return request.post({ url: '/system/sub-account/create', data })
}
// 修改子账号(昵称 + 可见菜单)
export const updateSubAccount = (userId: number, data: SubAccountVO) => {
return request.put({ url: '/system/sub-account/update?userId=' + userId, data })
}
// 修改子账号状态
export const updateSubAccountStatus = (userId: number, status: number) => {
return request.put({ url: '/system/sub-account/update-status', data: { userId, status } })
}
// 重置子账号密码
export const resetSubAccountPassword = (userId: number, password: string) => {
return request.put({ url: '/system/sub-account/reset-password', data: { userId, password } })
}
// 删除子账号
export const deleteSubAccount = (userId: number) => {
return request.delete({ url: '/system/sub-account/delete?userId=' + userId })
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Loaded 100 of 837 files, more files were not shown because too many files have changed in this diff. Show more