Compare commits

...

353 Commits
test ... main

Author SHA1 Message Date
liutao 610f471c16 修改首页样式 2 days ago
liutao bb4451860e 修改制品车间大屏 3 days ago
liutao f33182e7e6 Merge remote-tracking branch 'origin/main' 3 days ago
liutao 9da8853f93 大屏修改成全屏模式 3 days ago
liutao 66855e95ac 首页增加参数来控制是否需要登录 3 days ago
zhongwenkai eadf999220 feat:设备管理-维修工单新增弹框优化,模具管理-任务计划新增弹框日期选择优化 3 days ago
liutao d4736907b1 首页inner环境免登录 3 days ago
liutao 6a12257073 库存概览inner环境免登录 3 days ago
liutao a63726e9a5 能源概览inner环境免登录 3 days ago
liutao 27302369a9 免登录 3 days ago
liutao d29171e1d5 Merge remote-tracking branch 'origin/main' 3 days ago
liutao 813b2db7f7 首页优化 3 days ago
liutao 44ca9e458c 修改设备及能源概览 3 days ago
zhongwenkai 806c733a66 feat:能耗报表-所属区域改为设备台账里面的产线分类 4 days ago
zhongwenkai a2f06cfa13 feat:模具维修单新增报修人员字段 4 days ago
黄伟杰 fbe414d563 Merge remote-tracking branch 'origin/main'
# Conflicts:
#	src/views/mold/taskConfiguration/index.vue
4 days ago
黄伟杰 c7febab9db style:模具管理-任务计划-启用列修改switch 4 days ago
zhongwenkai da25b84dbb feat: 能耗类型单位字段关联单位管理模块 4 days ago
zhongwenkai 52e9f0ef9e fix: 模具上下模新增弹框校验提示与交互优化 4 days ago
黄伟杰 d4b2427547 style:设备维修-添加保修人员字段 4 days ago
zhongwenkai 26b59f9ad2 点检保养-点检保养记录-模具工单列表新增查询条件,优化取消逻辑和详情页按钮位置 4 days ago
zhongwenkai ba0cfccff9 style:模具组显示维护页面显示不全修改,模具管理-任务计划-新增/编辑-模具列表/项目表单改为弹框展示 4 days ago
黄伟杰 ceb8b3fdb9 style:设备运行参数分析-默认展开到设备层 4 days ago
黄伟杰 29e0d17d60 style:库存调拨-产品/物料/备件下拉数据展示库存查询里的 4 days ago
黄伟杰 7c6db656b0 style:设备-点检保养字段调整 5 days ago
黄伟杰 f907d1da6e style:设备维修单-默认展示待完成状态 5 days ago
黄伟杰 d668fe1621 Merge remote-tracking branch 'origin/main' 5 days ago
黄伟杰 3647f12c81 feat:设备管理-任务计划-新增/编辑-设备列表/项目表单改为弹框展示 5 days ago
zhongwenkai 4fc2af2444 feat: 历史记录页面的产线编码-名称改为下拉选择 & 单设备监控刷新按钮 5 days ago
黄伟杰 2d678580cb style:设备管理-任务计划-新增工单按钮逻辑优化 5 days ago
黄伟杰 b27e5324bc style:设备台账-备件选项接口更换 5 days ago
黄伟杰 6437c0c408 style:库存查询-添加库区筛选条件 5 days ago
zhongwenkai 8a2e5d9104 feat: 历史记录页面优化及数据分析卡片改造-物联设备点位页面优化 5 days ago
黄伟杰 8525e25d73 Merge branch 'main' of https://git.ngsk.tech/linweidong/besure_web 5 days ago
黄伟杰 82b7e62baf style:生产计划-工艺路线字段居左展示 5 days ago
黄伟杰 fb08302aa9 style:生产计划-详情-空值展示'-' 5 days ago
liutao 9936bdb0d3 Merge remote-tracking branch 'origin/main' 5 days ago
liutao 79d86d6476 注释掉导入 5 days ago
黄伟杰 c9a9af0bf7 feat:产品入库-关联任务单改成关联生产计划 5 days ago
黄伟杰 c853bdbe55 style:仓库信息字段调整 5 days ago
黄伟杰 1a3e648dbc style:供应商信息-新增/编辑字段调整 6 days ago
黄伟杰 4ba131c4a3 style:托盘管理-新增/编辑字段调整 6 days ago
liutao 420b16bd16 优化制品车间设备运行 6 days ago
liutao 075dc313ab 显示保障数 6 days ago
黄伟杰 f7942a158f Merge remote-tracking branch 'origin/main'
# Conflicts:
#	src/views/erp/product/category/ProductCategoryForm.vue
6 days ago
黄伟杰 23bbfab52b style:物料档案-新增/编辑-供应商弹框添加新增按钮 6 days ago
liutao 6fa3bafb17 显示默认当前日期 6 days ago
liutao e575de7b3b 默认当前日期 6 days ago
黄伟杰 d00e0da6c1 style:物料档案-详情-调整字段排版 6 days ago
黄伟杰 e9ee3946ed style:出库单据-出库用途默认值 6 days ago
黄伟杰 d63eb8ed24 style:产品分类/物料档案-产品类型才展示工艺路线选项 6 days ago
zhongwenkai 06bfe6c071 fix: 优化工艺路线参数明细和物料分类路线选择 6 days ago
黄伟杰 b5a5f6e4c3 style:出库单据-托盘码逻辑优化 6 days ago
黄伟杰 aa0eca7ede style:设备运行参数分析/表管理/设备分组修改树状接口 6 days ago
黄伟杰 2b905e8749 Merge remote-tracking branch 'origin/main' 6 days ago
黄伟杰 5091775bc4 style:出库单据-添加锁定库存数量逻辑 7 days ago
黄伟杰 f0768cc63d style:生产计划-列表/详情字段调整 7 days ago
黄伟杰 e348632b5d style:设备运行参数分析-添加设备标识/刷新按钮 7 days ago
黄伟杰 3b7496f19d style:生产计划-详情侧边栏字段调整 7 days ago
黄伟杰 f05c908a7d feat:物料档案/生产计划/订单排产-添加工艺路线逻辑 7 days ago
zhongwenkai 52fdc28ffd feat: 工艺路线和工艺参数-国际化翻译 7 days ago
黄伟杰 6c30ba975a style:出库单据-物料出库/备件出库新增锁定库存列 7 days ago
zhongwenkai 19b53cc197 style: 基础设施-列表局部滚动 7 days ago
黄伟杰 8d463b8991 Merge branch 'main' of https://git.ngsk.tech/linweidong/besure_web 7 days ago
zhongwenkai e2e7ee87cc feat:添加工艺参数及工艺路线模块 7 days ago
黄伟杰 2523c07593 style:生产计划-tabs读字典 1 week ago
liutao 116063a695 update 1 week ago
黄伟杰 f175a06858 style:生产计划-完工数量字段用passNumber 1 week ago
黄伟杰 13fa9154b1 Merge branch 'main' of https://git.ngsk.tech/linweidong/besure_web 1 week ago
黄伟杰 a0fbce7b46 feat:生产订单-任务单明细-新增/编辑-摆放规则、包装方案 1 week ago
黄伟杰 31eaea90a6 style:出库单据-产品出库/物料出库添加出库用途 1 week ago
zhongwenkai be4acecfa4 style: 系统管理,报表管理,模具管理-列表局部滚动 1 week ago
zhongwenkai 5fe6bf78cd style: 能源管理和设备管理-列表局部滚动 1 week ago
黄伟杰 2b235d1182 feat:任务单-新增/编辑-添加附件上传 1 week ago
zhongwenkai fc631027e9 style: IoT和仓储管理-列表局部滚动 1 week ago
zhongwenkai 921d00f8c7 style: 工厂建模-列表局部滚动 1 week ago
黄伟杰 f1f6de879a style:出库单据-新增/编辑-出库清单-新增规格列 2 weeks ago
黄伟杰 991e48fa35 delete:删除没用的模块 2 weeks ago
黄伟杰 7564e21743 style:生产计划-列表局部滚动 2 weeks ago
黄伟杰 5b22b2b692 Merge branch 'main' of https://git.ngsk.tech/linweidong/besure_web 2 weeks ago
黄伟杰 ca324df262 style:出入库明细-创建时间筛选条件改为出入库时间 2 weeks ago
黄伟杰 95453a6436 feat:任务制单-添加任务单名称/客户 2 weeks ago
黄伟杰 d07354c9a5 style:客户管理- 2 weeks ago
黄伟杰 c3e8288b52 feat:客户管理模块-字段调整 2 weeks ago
zhongwenkai 34c7dd6397 style: 入库单据-供应商选择添加新增按钮 2 weeks ago
黄伟杰 943a2c5a3a Merge remote-tracking branch 'origin/main' 2 weeks ago
黄伟杰 90f8c0c502 style:出库单据-选择编码添加库存库区入参 2 weeks ago
黄伟杰 4011bd8f39 style:设备运行概览-筛选入参修改 2 weeks ago
黄伟杰 a90a2f1997 feat:客户管理路径迁移mes 2 weeks ago
黄伟杰 c117dd3e06 style:表管理/设备运行概览-接口更换设备台账的tree接口 2 weeks ago
liutao 9c3a06d622 Merge remote-tracking branch 'origin/main' 2 weeks ago
liutao b0fbb9d3bf 物联设备update 2 weeks ago
zhongwenkai 0a74505ff6 Merge remote-tracking branch 'origin/main' 2 weeks ago
zhongwenkai dd88f540de style: 物料档案单位下拉框新增和包装方案弹框新增按钮 2 weeks ago
liutao cd70a2b16c Merge remote-tracking branch 'origin/main' 2 weeks ago
liutao e540fe202a 制品车间设备运行总览优化 2 weeks ago
黄伟杰 a3ca79dd4d feat:设备台账-添加关联物联设备 2 weeks ago
黄伟杰 5c66c52cd4 style:托盘管理-二维码打印回显 2 weeks ago
黄伟杰 d96ee185fc Merge branch 'main' of https://git.ngsk.tech/linweidong/besure_web 2 weeks ago
黄伟杰 7620c516b1 style:物联设备-启用switch按钮优化 2 weeks ago
黄伟杰 5f453af4d2 style:设备模型/物联设备-导出按钮添加deviceModelId/deviceId入参 2 weeks ago
zhongwenkai 9c1763dfee style: 上下模-修复下模设备选择、操作人显示及缓存更新问题 2 weeks ago
黄伟杰 f22a5c9a11 style:入库单据/出库单据-单位改成库存单位 2 weeks ago
黄伟杰 4ff26b5195 style:库存调拨-单位字段回显 2 weeks ago
黄伟杰 4b770e6702 style:库存总览-今日出库字段名调整 2 weeks ago
黄伟杰 036910b86b style:设备保养-结果筛选框字段修改 2 weeks ago
黄伟杰 5c07f054a3 style:设备台账-选择关键件-创建时间时间戳转换 2 weeks ago
黄伟杰 ac7e65cec8 style:上下模-模具必填 2 weeks ago
黄伟杰 4dd9ba1378 style:库存总览字段调整 2 weeks ago
黄伟杰 d74f8cf045 feat:库存总览-模块对接接口 2 weeks ago
黄伟杰 c0c701b79f style:仓储模块单位调整 2 weeks ago
黄伟杰 9c9e9b4a86 Merge branch 'main' of https://git.ngsk.tech/linweidong/besure_web 2 weeks ago
黄伟杰 ec25a0bd96 style:采购单位/库存单位字段调整 2 weeks ago
liutao 90876c54a4 增加导入包 2 weeks ago
黄伟杰 8e4a018324 Merge branch 'main' of https://git.ngsk.tech/linweidong/besure_web 2 weeks ago
黄伟杰 864ce98bb1 style:托盘管理-二维码刷新后调用刷新接口 2 weeks ago
liutao 6d74957b6e 设备点位导入 2 weeks ago
liutao 8e24e37673 设备运行总览大屏 2 weeks ago
liutao 11c8bd2131 update 2 weeks ago
liutao 3f33f3f0dd 增加设备运行报表 2 weeks ago
liutao bd3d30608b update 2 weeks ago
liutao 44ef06fadf 设备点检保养的样式调整 2 weeks ago
liutao d4a4e15084 设备点检保养记录的详情页面的优化 2 weeks ago
黄伟杰 f508bb7a4b Merge branch 'main' of https://git.ngsk.tech/linweidong/besure_web 2 weeks ago
黄伟杰 b4460d20ab feat:出入库单据、盘点调拨、盘点执行审核逻辑调整 2 weeks ago
zhongwenkai 8e66ad443c style: 上下模修改-上模选择设备可以进行下模,下模选择设备只展示有在机模具的设备 2 weeks ago
黄伟杰 de442e9e7e style:库存调拨-提交、通过、驳回用transferAduit系统参数 2 weeks ago
黄伟杰 5858aef52a feat:库存调拨模块修改 2 weeks ago
黄伟杰 90093ac0c5 style:入库单据/出库单据-经办人-默认当前账户 2 weeks ago
黄伟杰 692c28f7c5 style:物料档案-去除库存单位/采购单位不能重复选限制 2 weeks ago
黄伟杰 464d8c0822 feat:库区信息-添加二维码/条形码 2 weeks ago
黄伟杰 09bc7e1305 style:产品物料分类-类型字段默认带入 2 weeks ago
黄伟杰 278360f931 style:模具组-新增/编辑-图纸、操作手册、操作视频上传loading 3 weeks ago
黄伟杰 30672dfbc1 style:设备维修-添加“结果”筛选框 3 weeks ago
黄伟杰 a080d9f4c5 feat:盘点执行-实盘数量回显 3 weeks ago
黄伟杰 06fb8594c5 style:盘点记录-盘点前库存数量 3 weeks ago
黄伟杰 176f373e0f feat:盘点记录页面 3 weeks ago
黄伟杰 056862f6c0 feat:库存总览-库存明细列表字段调整 3 weeks ago
黄伟杰 44abffdc3e style:库存查询-库区库存列字段调整 3 weeks ago
黄伟杰 7d3ee0e1dd style:库存查询-产品下拉框入参 3 weeks ago
黄伟杰 7c8a2801dc style:库存查询添加库区库存、总包数、总个数字段 3 weeks ago
黄伟杰 1b2d97e47b style:入库单据-供应商可选 3 weeks ago
黄伟杰 bbfdde936d style:入库单据-托盘码-仓库名称/库区必填 3 weeks ago
黄伟杰 aa0410ec1c style:出库单据-物料、备件-数量列值调整 3 weeks ago
黄伟杰 ce9529afda feat:入库单据-物料、备件入库-添加“入库包数” 3 weeks ago
黄伟杰 beebbcafa1 style:出库单据-选择托盘码弹框-产品编码改成产品名称 3 weeks ago
黄伟杰 2280b00ac8 style:出库单据-出库包数位置调整 3 weeks ago
黄伟杰 344c9972ad style:入库单据-物料、备件-添加库存单位、采购换算数量列 3 weeks ago
黄伟杰 9d94e84150 style:托盘管理-产品编码改成产品名称 3 weeks ago
黄伟杰 a14b8a5a27 style:入库单据/出库单据-详情-审核记录字段调整 3 weeks ago
黄伟杰 1f150cb206 style:调整打包内存 3 weeks ago
黄伟杰 351d792de9 Merge branch 'main' of https://git.ngsk.tech/linweidong/besure_web 3 weeks ago
黄伟杰 a1ed91963d feat:入库单据/出库单据调整 3 weeks ago
liutao ab99ca64fe update 3 weeks ago
liutao 648dc3b524 update 3 weeks ago
liutao 8fcdfcb852 update 3 weeks ago
liutao 40188f3094 update 3 weeks ago
liutao b4bf99db9c update 3 weeks ago
liutao 9bd3690086 update 3 weeks ago
liutao b384644603 update 3 weeks ago
黄伟杰 490353b811 feat:出库单据-添加出库方式 3 weeks ago
黄伟杰 00b847c33c style:托盘管理-新增/编辑-单位改成下拉框 3 weeks ago
黄伟杰 5b6e868442 style:入库/出库-审核流程判断 3 weeks ago
liutao 75f7c1caed update 3 weeks ago
黄伟杰 0c82e75577 Merge branch 'main' of https://git.ngsk.tech/linweidong/besure_web 3 weeks ago
liutao 4056b36c89 update 3 weeks ago
黄伟杰 550d2a9600 style:入库单据/出库单据-已驳回状态重新入库/出库-调用audit接口 3 weeks ago
liutao b9e7b5f21c fix: remove UTF-8 BOM from nginx-inner.conf, add resolver for runtime DNS 3 weeks ago
liutao c462ed07d9 Merge remote-tracking branch 'origin/main' 3 weeks ago
liutao b9d89612ef update 3 weeks ago
黄伟杰 ff48b38e2b style:入库单据/出库单据-列表添加默认状态筛选 3 weeks ago
黄伟杰 6302b615f7 Merge branch 'main' of https://git.ngsk.tech/linweidong/besure_web 3 weeks ago
黄伟杰 45c70bfc7a feat:入库单据-产品-添加托盘数 3 weeks ago
黄伟杰 25acaea861 style:盘点执行-详情弹框 4 weeks ago
liutao b1f7956f0a update 4 weeks ago
liutao 2bb86f3f64 新增一个inner环境 4 weeks ago
liutao 152899fc5b Merge remote-tracking branch 'origin/main' 4 weeks ago
黄伟杰 e6af1598f3 style:库存总览字段调整 4 weeks ago
黄伟杰 d44dbe3034 feat:库存总览页面 4 weeks ago
黄伟杰 b7890af647 style:任务制单-任务单明细-新增产品列表添加产品分类过滤 4 weeks ago
黄伟杰 68c61dbf81 feat:盘点执行/托盘管理模块 4 weeks ago
黄伟杰 a536ee7603 feat:盘点执行/托盘管理模块 4 weeks ago
黄伟杰 047081f55b Merge branch 'main' of https://git.ngsk.tech/linweidong/besure_web 4 weeks ago
黄伟杰 bba4d46f97 feat:盘点执行模块 4 weeks ago
黄伟杰 93f38496d6 style:仓库信息-仓库分类必填,默认选第一个 4 weeks ago
黄伟杰 124083fe5e feat:仓库信息/出入库单据-添加仓库分类 4 weeks ago
ck-chenkang c01cbad539 维修履历样式改成和其他履历一样,适配图片 4 weeks ago
黄伟杰 0f1bb51d5e style:模具组-维修记录字段样式调整 4 weeks ago
黄伟杰 f144dc8fc8 feat:出入库明细/库存查询-恢复tabs栏分类 4 weeks ago
黄伟杰 1a6b21ea00 feat:出入库单据-状态默认过滤已出库/已入库状态 4 weeks ago
liutao 0631dd1693 Merge remote-tracking branch 'origin/main' 4 weeks ago
黄伟杰 bd2e645ab3 feat:出库单据-备件出库-添加出库用途逻辑 4 weeks ago
黄伟杰 f59c04387a feat:出入库明细-列表tabs去除 4 weeks ago
黄伟杰 f970ef7daf feat:模具组-详情-添加压网记录 4 weeks ago
liutao 875b3f2c96 update 4 weeks ago
黄伟杰 c742219141 feat:库存报表页面字段修改 4 weeks ago
黄伟杰 03ca612169 style:入库单据/出库单据-录入数量文案改成采购单位数量 4 weeks ago
黄伟杰 37bb01d4b7 style:入库单据/出库单据-新增/编辑-get接口添加库区入参 4 weeks ago
黄伟杰 62ff9ca57e style:入库单据/出库单据-状态修改 4 weeks ago
黄伟杰 cdaf1e54df Merge branch 'main' of https://git.ngsk.tech/linweidong/besure_web 4 weeks ago
黄伟杰 4c1d95010d feat:库存报表模块 4 weeks ago
黄伟杰 32acd2f31b feat:出入库明细模块 4 weeks ago
黄伟杰 9b6536405d style:入库单据/出库单据-新增/编辑/详情-添加默认供应商展示 4 weeks ago
liutao 165bf88abd 修改打印组件 4 weeks ago
liutao 160f461cbc Merge remote-tracking branch 'origin/main' 4 weeks ago
liutao a2884443ef 打印配置新增三个字段 4 weeks ago
黄伟杰 470fa694ad style:模具管理-点检记录-检验结果页面样式优化 4 weeks ago
黄伟杰 8f1eec7073 style:模具组-新增/编辑/详情-修改图纸上传格式 4 weeks ago
黄伟杰 df07b2a194 feat:模具出库/入库-修改审核按钮逻辑 4 weeks ago
黄伟杰 49fb01e3b0 style:出库单据-字典类型修改 4 weeks ago
liutao 93c272565b update 4 weeks ago
黄伟杰 025b619a35 feat:模具组-添加图纸、操作手册、操作视频 1 month ago
黄伟杰 a02a7d77a1 style:模具-点检保养图片上传回显(3张) 1 month ago
黄伟杰 09db2fd3ed style:模具管理-维修单-点维修的时候-完成日期/验收日期-默认当前日期 1 month ago
黄伟杰 f6d8d8e1cb style:模具组-维护-维修-报修日期默认当天 1 month ago
黄伟杰 af613f3b59 feat:模具管理-点检项库-是否启用默认启用 1 month ago
黄伟杰 33608d542d style:子模具的新增/编辑-二维码/条形码二维码组件删除 1 month ago
黄伟杰 9fe1307f54 style:子模具的新增弹框-入库时间默认当前时间 1 month ago
黄伟杰 db0ad5d302 style:模具组-详情-子模具tabs列表添加编码列 1 month ago
黄伟杰 7a3ea91b4b style:模具组-上下模按钮显示逻辑修改 1 month ago
黄伟杰 02314793c3 feat:模具组-新增/编辑-产品型号改成弹框形式 1 month ago
黄伟杰 bcf714a7c8 style:模具组-下模逻辑修改 1 month ago
黄伟杰 b6a88bce86 feat:入库单据/出库单据-添加isAudit配置判断 1 month ago
黄伟杰 860aa3c32d Merge branch 'main' of https://git.ngsk.tech/linweidong/besure_web 1 month ago
ck-chenkang e3e503cf0e 增加cross-env,前后端在同一台主机上开发 1 month ago
liutao 91e803c9a5 update 1 month ago
liutao 4130b675ae update 1 month ago
黄伟杰 62d823b4b4 style:出库单据、入库单据-详情字段调整 1 month ago
liutao 89c8247f22 update 1 month ago
黄伟杰 4fb26e2f7c feat:仓储-出库单据模块 1 month ago
liutao 6596c494de update 1 month ago
liutao 5302b0f47d update 1 month ago
liutao 75ab796a09 update 1 month ago
黄伟杰 c5b8b16d91 feat:入库单据-新增/编辑逻辑调整 1 month ago
liutao efce40f50f update 1 month ago
liutao b12a98ed27 update 1 month ago
liutao 5e9940478f Merge remote-tracking branch 'origin/main' 1 month ago
liutao 990558e59d 打印配置管理 1 month ago
黄伟杰 66c7674c8f feat:入库单据-新增/编辑 1 month ago
黄伟杰 166bb32c3d feat:物料档案-添加采购单位/采购换算数量字段 1 month ago
黄伟杰 d9921dcfc0 style:物料档案-详情-二维码/图片样式修改 1 month ago
liutao 14c6c0ac50 Merge remote-tracking branch 'origin/main' 1 month ago
liutao 19da9193d5 新增打印机配置功能 1 month ago
黄伟杰 ae9f2d18aa style:模具出入库-修改模具组清单过滤状态 1 month ago
黄伟杰 2cd2310460 style:模具组-模具状态添加在库 1 month ago
黄伟杰 41cf7bbc29 style:单位管理-屏蔽关联主单位列 1 month ago
黄伟杰 8d92aa4f59 Merge branch 'main' of https://git.ngsk.tech/linweidong/besure_web 1 month ago
黄伟杰 49f810c365 style:模具组-维护-点检/保养-项目表单字段映射 1 month ago
黄伟杰 10e1b25761 feat:物料档案-详情模块 1 month ago
zhongwenkai 5dce2ad2f3 feat: 模具管理-上下模弹窗目标产线改为自动填充 1 month ago
黄伟杰 6b0ce95093 style:模具组-维护-更换压网-子模具多选 1 month ago
黄伟杰 d623f79b6a style:产品物料-选择供应商/包装方案-是否默认逻辑优化 1 month ago
黄伟杰 8772c1303f fix:模具管理-点检记录-保存后没刷新问题修复 1 month ago
liutao f1982f2555 文件上传的大小及格式 1 month ago
liutao 13019bca0a Merge remote-tracking branch 'origin/main' 1 month ago
黄伟杰 2806f9ce44 feat:模具组-维护-点检、保养 1 month ago
黄伟杰 6503b17814 feat:模具组-维护-点检/保养添加检验结果审批流程 1 month ago
黄伟杰 4f16b2a847 feat:产品物料信息-新增/编辑添加接口入参 1 month ago
黄伟杰 84dc36c5d7 feat:新增仓储管理-包装方案模块 1 month ago
黄伟杰 f7ee7787d2 style:模具管理-点检记录-字段名调整 1 month ago
黄伟杰 152838e14b fix:模具出入库bug修复 1 month ago
liutao e3001c67ba Merge remote-tracking branch 'origin/main' 1 month ago
黄伟杰 a049c54d7d style:模具组-搜索框入参字段调整 1 month ago
黄伟杰 48bceb74d2 style:上下模-操作人/操作时间必填 1 month ago
黄伟杰 156e532b14 fix:模具组-修复第一次进入上模/下模页面没调用接口bug 1 month ago
黄伟杰 d9a1b07f07 feat:产品物料信息-添加树状结构 1 month ago
黄伟杰 73dd73a1f4 style:模具组-返回按钮样式调整 1 month ago
黄伟杰 6a47258947 style:模具入库/模具出库-列表字段名调整 1 month ago
黄伟杰 6be0168ff5 style:修改上下模-产线字段 1 month ago
黄伟杰 e12004a43a feat:模具出库/模具入库-详情添加模具组/子模具列表 1 month ago
liutao a7a57f0c73 设备台账优化 1 month ago
liutao f62a08eaae Merge remote-tracking branch 'origin/main' 1 month ago
liutao 2cdf6e377c 修改关键件bug 1 month ago
黄伟杰 4330bbb9ce feat:模具组-产品型号多选 1 month ago
黄伟杰 9e2bcf038d fix:修复中英文报错 1 month ago
黄伟杰 0164129b95 feat:模具组-维护-点检/保养 1 month ago
黄伟杰 4ee05ff904 feat:模具组-子模具-添加压网记录 1 month ago
黄伟杰 601e22ef86 Merge branch 'main' of https://git.ngsk.tech/linweidong/besure_web 1 month ago
黄伟杰 c70bae738e feat:模具组-维护-更换压网模块 1 month ago
liutao 7a1c92ce86 Merge remote-tracking branch 'origin/main' 1 month ago
liutao b8857bb126 设备台账优化 1 month ago
黄伟杰 7e606054b0 feat:模具组-维护模块 1 month ago
黄伟杰 8769d1e5af style:模具组-详情-安装记录修改入参 1 month ago
黄伟杰 bc21277e3c style:模具组-新增/编辑-产品型号添加产品过滤 1 month ago
黄伟杰 5501c7983e style:模具组-详情-维修记录更换接口 1 month ago
黄伟杰 2e6c78fb11 feat:模具组-详情-安装记录添加操作类型字段 1 month ago
黄伟杰 49e47512d9 style:模具组-二维码/操作栏样式调整 1 month ago
黄伟杰 e80a187986 feat:模具组-上下模模块组件抽离 1 month ago
黄伟杰 4c7abf1c50 style:模具组-详情-二维码样式调整 1 month ago
黄伟杰 eb64e35f92 feat:模具出库/模具入库-新增/编辑-清单重构成模具组/子模具 1 month ago
黄伟杰 62ca6a1b45 fix:模具管理-点检模板新增报错修复 1 month ago
黄伟杰 1f73696db9 feat:模具组-添加子模数列 1 month ago
黄伟杰 ea8bd96abb style:上下模新增弹框逻辑调整 1 month ago
黄伟杰 b5caf770ee perf:模具组-详情交互优化 1 month ago
黄伟杰 13d77d76eb style:模具组模块适配中英文 1 month ago
黄伟杰 89968406a5 fix:修复构建报错 1 month ago
黄伟杰 87392bbc15 Merge branch 'main' of https://git.ngsk.tech/linweidong/besure_web 1 month ago
黄伟杰 3c257f3e8a feat:添加模具组-上下模模块 1 month ago
黄伟杰 b8d4cfc7e0 feat:模具组详情页 1 month ago
黄伟杰 e6617ceed6 style:上下模-模具列表接口更换 1 month ago
黄伟杰 e1b7550695 style:模具管理-维修单/点检记录-模具列表更换 1 month ago
黄伟杰 25954461e3 feat:模具组页面重构 1 month ago
黄伟杰 e2e2bbe383 style:产品物料分类-展开/折叠按钮隐藏 1 month ago
黄伟杰 04150a392f feat:模具管理-维修单模块重构 1 month ago
liutao 45f9df08f0 Merge remote-tracking branch 'origin/main' 1 month ago
liutao 69b8379249 解决冲突 1 month ago
黄伟杰 4c98bb463a Merge branch 'main' of https://git.ngsk.tech/linweidong/besure_web 1 month ago
黄伟杰 057df9cdb9 style:产品BOM模块-产品下拉框添加产品筛选 1 month ago
黄伟杰 f887843d41 feat:产品物料信息-添加产品/物料类型分类 1 month ago
liutao 3349593e4e Merge remote-tracking branch 'origin/main' 1 month ago
liutao 1f0a8387b1 解决冲突 1 month ago
zhongwenkai 19ff5a4775 style: 修改系统管理中菜单管理的新增/编辑弹框样式 1 month ago
黄伟杰 e8d0130a17 feat:产品物料分类-添加产品/物料类型 1 month ago
zhongwenkai 951a851d1a style: 修改模具管理中模具管理的新增/编辑弹框样式 1 month ago
黄伟杰 772cbdbb32 Merge branch 'main' of https://git.ngsk.tech/linweidong/besure_web 1 month ago
黄伟杰 114b499dd0 style:模具管理-编辑接口去除templateJson入参 1 month ago
zhongwenkai 57757afe60 style: 仅修改设备管理中设备台账的新增弹框样式 1 month ago
zhongwenkai f82a2485a8 style: 修改基础设施中用户反馈的新增/编辑弹框样式 1 month ago
liutao d2f713d260 设备台账编辑页面调整及角色菜单权限样式调整 1 month ago
liutao 35cac74912 Merge remote-tracking branch 'origin/main' 1 month ago
zhongwenkai 0158dd2be6 style: 修改模具管理中模具入库的新增/编辑弹框样式 1 month ago
zhongwenkai 3386ed0b8c style: 修改模具管理中模具出库的新增/编辑弹框样式 1 month ago
liutao 0829d8551d Merge remote-tracking branch 'origin/main'
# Conflicts:
#	src/views/mes/criticalComponent/CriticalComponentForm.vue
#	src/views/mes/criticalComponent/index.vue
1 month ago
zhongwenkai 4902ca4958 style: 修改仓储管理中出库单据的新增/编辑弹框样式 1 month ago
zhongwenkai 3671db55fc style: 修改备件管理中备件出库的新增/编辑弹框样式 1 month ago
zhongwenkai e7abc6cfc7 style: 修改备件管理中备件入库的新增/编辑弹框样式 1 month ago
liutao 601f852b28 界面优化 1 month ago
liutao e35779413c update 1 month ago
liutao 03327f6581 update 1 month ago
zhongwenkai 97d450e8aa style: 修改设备管理中设备关键件的新增/编辑弹框样式 1 month ago
黄伟杰 c70a196ebb Merge branch 'main' of https://git.ngsk.tech/linweidong/besure_web 1 month ago
黄伟杰 9f44955c5f style:设备管理-维修单添加故障等级 1 month ago
zhongwenkai e7ff7f128f style: 修改仓储管理中库位信息的新增/编辑弹框样式 1 month ago
黄伟杰 cb9387ec5f Merge branch 'main' of https://git.ngsk.tech/linweidong/besure_web 1 month ago
黄伟杰 7a435e1d2f feat:设备台账-去除型号、生产日期字段,新增SN、品牌、出厂日期字段 1 month ago
zhongwenkai 4f6bdec21d style: 修改仓储管理中入库单据的新增/编辑弹框样式 1 month ago
zhongwenkai 157db7551d Merge remote-tracking branch 'origin/main' 1 month ago
zhongwenkai 6c2e5bc96a style: 修改工厂建模中编码规则的新增/编辑弹框样式 1 month ago
黄伟杰 d448a29dac Merge branch 'main' of https://git.ngsk.tech/linweidong/besure_web 1 month ago
黄伟杰 ca007733bf feat:角色管理添加app端 1 month ago
zhongwenkai 39ca00a09c style: 修改工厂建模中产品BOM的新增/编辑弹框样式 1 month ago
zhongwenkai 56a959bdd1 style:修改产品物流信息的维修单-新增、编辑、维修弹框样式 1 month ago
liutao 5c81e130b0 update 1 month ago
黄伟杰 e1886d0ebb Merge remote-tracking branch 'remotes/origin/test' 2 months ago
黄伟杰 e4439acc7a feat:设备管理-维修单字段调整 2 months ago
黄伟杰 f2c5dac7be feat:工厂建模-模板配置管理调整 2 months ago
liutao 2534340dda update 2 months ago
liutao 5325880ecb 优化 2 months ago
黄伟杰 bae3219146 style:打印/报表-模板管理添加纸张尺寸保存 2 months ago
黄伟杰 bc75b20ab8 style:点检任务-添加设备筛选框 2 months ago
liutao def762ae78 设备台账编辑页面路由跳转 2 months ago
liutao 74088e67d5 关键件取消数量 2 months ago
liutao 0c7e1a7bce 关键件取消数量 2 months ago

@ -0,0 +1,37 @@
# 生产环境: 只在打包时使用
NODE_ENV=production
VITE_DEV=false
# 请求路径
# 【修改点】这里指向内部环境的网关,比如 /admin-api-inner 或者直接留空走相对路径
VITE_BASE_URL=' '
# 文件上传类型: server - 后端上传, client - 前端直连,仅支持S3服务
VITE_UPLOAD_TYPE=server
# 上传路径
VITE_UPLOAD_URL=/admin-api/infra/file/upload
# 接口地址
# 【修改点】这里改成一个内部域名或IP例如 http://192.168.1.100:8080
# 如果前端和后端在同一个 Docker 网络,也可以用内部服务名,比如 http://besure-server-inner:48081
VITE_API_URL=/admin-api
# 是否删除debugger
VITE_DROP_DEBUGGER=true
# 是否删除console.log
VITE_DROP_CONSOLE=true
# 是否sourcemap (内网环境建议开启方便排查线上问题如果想极致压缩也可以false)
VITE_SOURCEMAP=false
# 打包路径
VITE_BASE_PATH=/
# 输出路径
VITE_OUT_DIR=dist
# 商城H5会员端域名
# 【修改点】内网测试时这里可能不需要或者指向一个内部H5地址
VITE_MALL_H5_DOMAIN='http://mall.yudao.test.cn'

@ -8,8 +8,9 @@ VITE_DEV=true
# 线上环境
# VITE_BASE_URL='https://besure.ngsk.tech:7001'
# 本地联调
VITE_BASE_URL='http://192.168.5.106:48081'
# VITE_BASE_URL='http://192.168.5.164:48081'
VITE_BASE_URL='http://192.168.5.37:48081'
# VITE_BASE_URL='http://47.106.185.127:8089'
# VITE_BASE_URL='http://192.168.43.233:48081'
# VITE_BASE_URL='http://192.168.5.5:48081'

@ -1,4 +1,4 @@
# 使用轻量级的 Nginx 镜像
# 使用轻量级的 Nginx 镜像
FROM nginx:alpine
ARG NGINX_CONF=nginx.conf
@ -10,7 +10,8 @@ COPY dist /usr/share/nginx/html
EXPOSE 8088
# 安装 getent 依赖Alpine 自带)
# 创建启动脚本:轮询等待后端 DNS 解析成功后再启动 nginx
# 创建启动脚本
RUN echo -e '#!/bin/sh\n\
echo "Waiting for MySQL/Redis/MinIO to start..."\n\

@ -0,0 +1,121 @@
style产品物料信息-新增/编辑-编码输入框大小调整
feat仓库信息-添加详情弹框
feat库区信息/库位信息-新增页面
style任务单排产-排产甘特图样式优化
style甘特图菜单样式调整
style甘特图适配中英文
Merge branch 'main' of https://git.ngsk.tech/linweidong/besure_web
style生产报表页面适配中英文
style出库单据-默认展示tabs修改
style生产报表-质检信息字段调整
style任务单排产-create-batch接口添加领料人/是否计算损耗入参
style生产计划/任务单排产生产报表-进度条样式修改
style生产计划-检验明细添加分页
feat生产报表-质检信息对接
feat甘特图菜单页添加刷新按钮
style任务单排产-进度条样式修改
feat甘特图菜单页-添加排产看板
style生产计划-检验按钮保存后刷新列表
style检验记录-新增/编辑-生产计划选项框调整
style检验记录-编辑添加显示判断
style检验模板-新增/编辑-检验方案添加productId传参
style任务单排产-任务单明细-是否计算损耗字段
style检验模板-编辑回显
style任务单排产-任务单明细-新增计划添加领料人、是否完成质检字段
style生产报表-报工信息-添加日期筛选条件
style生产报表-列表添加刷新按钮
style生产报表-基础信息-查看产品信息字段修改
feat生产计划-已开工-检验按钮逻辑修改
style修复甘特图保存后弹框报错
style生产投料-数量不填的默认为0
style产品物料信息-设备-所属车间字段更改
feat检验模板-添加关联产品
style产品物料信息-关联设备选项接口添加deviceStatus=0入参
style产品物料信息-状态字段位置更改
style任务制单-技术要求、备注样式修改
style任务制单-明细-编辑-打包数量字段自动填充
style产品物料信息-去掉字段:采购价格、最低价格、销售价格
style产品BOM-产品BOM明细-单位自动带入
style生产计划-添加“所有”tabs
style甘特图菜单添加设备筛选框
style排产甘特图日期调整
feat菜单甘特图页面/一键排查-甘特图拆开两个组件
style排产弹框-任务单汇总明细-未计划数为0的不能勾选
style排产弹框适配中英文
style检验记录-新增添加单号自动生成
style产品BOM-产品筛选框接口更改
style任务单排产-排产弹框样式调整
style任务制单-父列表项的status值为2,7,8,9,10时子列表不展示编辑和删除按钮
Merge branch 'main' of https://git.ngsk.tech/linweidong/besure_web
style任务单排产-生产进度条样式修改
feat添加生产报表页面
style生产计划-暂停状态操作栏添加开工按钮
Merge branch 'main' of https://git.ngsk.tech/linweidong/besure_web
style厂区结构-关联采集设备字段回显
feat待入库-入库按钮添加仓库选择
style厂区结构-新增/编辑-关联采集设备选项接口更换
feat甘特图添加颜色区分
feat添加报工记录页面
style甘特图菜单页添加每日报工平均值、数据采集产能字段
style甘特图显示样式优化
style任务单排产-新增-计划开始、计划结束、最晚开工时间添加时分秒
style任务制单-新增-交货日期不能选往日
style任务单排产-添加生产进度条
style任务制单-tabs项更换
style任务单排产-新增计划-数量值添加校验(不能大于未计划数量)
style甘特图tooltip隐藏逻辑优化
Merge branch 'main' of https://git.ngsk.tech/linweidong/besure_web
style修改任务单排产-新增计划及生产计划详情字段
style任务制单-任务单明细-新增按钮显示逻辑修改
style任务单排产-tabs更换
style任务单排产-未计划为0的不显示新增计划按钮
style任务制单-任务单明细-新增按钮显示逻辑修改
style生产计划-报工后刷新报工记录列表
style生产计划-详情弹框字段与排产的新增计划弹框字段同步
style生产投料-新增-生产计划status值修改
style删除甘特图菜单无用代码
feat甘特图组件封装
style生产计划列表添加任务编码
style产品BOM-编辑-bomDetails集合里不传createTime字段
Merge branch 'main' of https://git.ngsk.tech/linweidong/besure_web
style排产甘特图样式优化
style排产弹框-添加是否跳过节假日switch
style排产甘特图样式调整
style检验记录-编辑-ticketType回显
style检验记录-生产计划传参修改
style任务单排产-关联设备保存后刷新列表
feat排产弹框-新增设备名称列/关联设备按钮
feat生产计划-添加已开工tabs
style任务单排产-新增计划-计划开始时间不能晚于结束时间
style设备台账-是否排产勾选后展示额定产能、每日报工平均值、数据采集产能
Merge branch 'main' of https://git.ngsk.tech/linweidong/besure_web
style处理设备台账代码合并问题
Merge branch 'main' of https://git.ngsk.tech/linweidong/besure_web
style甘特图查询时间默认本月
feat新增甘特图页面
style任务单排产-排产弹框-复选框逻辑优化
style任务单排产-甘特图样式修改
style任务单排产-一键排查接口字段调整
style任务单排产字段调整
style甘特图样式修改
style任务单排产-新增计划-taskDetailId传参调整
style产品物料信息-新增/编辑-设备列表添加已排产过滤
style排产接口入参添加产品编码
feat甘特图弹框抽离组件
style任务单排产-甘特图保存字段调整
style生产计划-甘特图样式修改
feat添加甘特图预览
style设备台账-新增/编辑-是否排产字段修改
style产品物料信息-阻止表单原生事件
style设备台账-是否排产字段修改
feat任务单排产-列表表头调整、排产弹框对接
style表管理-计算规则添加文案提示
feat采集设备-点位规则添加四则运算规则
style采集设备-添加新增产量按钮
style任务单排产-新增计划刷新列表
Merge branch 'main' of https://git.ngsk.tech/linweidong/besure_web
style任务单排产-列表添加“是否完成排产”列
style产品BOM-新增-清除单位默认值
feat任务制单-添加是否急单字段
feat产品管理-产品物料信息-产品分类时添加关联设备、关联模具字段
feat设备台账-添加是否排产、额定产能字段状态改成switch切换

@ -1,8 +1,9 @@
<!DOCTYPE html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" href="/favicon.ico" />
<link rel="stylesheet" type="text/css" media="print" href="/print-lock.css" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta
@ -146,6 +147,34 @@
</div>
</div>
</div>
<!-- Edge 兼容hiprint socket.io 连接添加 polling 降级策略,防止 WebSocket-only 连接在 Edge 下失败 -->
<script>
(function() {
try {
if (window.__hiprintEdgeFixApplied) return;
var _io = window.io;
Object.defineProperty(window, 'io', {
configurable: true,
enumerable: true,
get: function() { return _io; },
set: function(fn) {
if (typeof fn === 'function' && fn !== _io && !fn.__hiprintPatched) {
var _orig = fn;
_io = function(url, opts) {
opts = Object.assign({}, opts || {});
opts.transports = ['websocket', 'polling'];
return _orig(url, opts);
};
_io.__hiprintPatched = true;
} else {
_io = fn;
}
}
});
window.__hiprintEdgeFixApplied = true;
} catch(e) { console.warn('[hiprint-fix]', e); }
})();
</script>
<script type="module" src="/src/main.ts"></script>
</body>
</html>

@ -0,0 +1,112 @@
server {
listen 8088;
server_name localhost;
# 关键允许上传最大100MB
client_max_body_size 100m;
# 超时时间
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
client_body_timeout 300s;
send_timeout 300s;
# 防止大文件上传被缓冲卡死
proxy_request_buffering off;
proxy_buffering off;
# Docker DNS resolver to enable runtime upstream resolution, preventing host not found at startup
resolver 127.0.0.11 valid=10s;
# ========== 内网环境特有配置 ==========
# 如果 inner 环境的后端服务名不同,比如叫 besure-server-inner
# 就把下面的 proxy_pass 改成对应的服务名或IP
location /admin-api/ {
proxy_pass http://besure_server_inner:48081; # 👈 这里改!
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
# 其他路径保持不变
location /api/ {
proxy_pass http://besure_server_inner:48081; # 👈 原生产后端
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /jmreport/ {
proxy_pass http://besure_server_inner:48081; # 👈 原生产后端
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /v3/api-docs/ {
proxy_pass http://besure_server_inner:48081; # 👈 原生产后端
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /doc.html {
proxy_pass http://besure_server_inner:48081; # 👈 原生产后端
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /swagger-ui/ {
proxy_pass http://besure_server_inner:48081; # 👈 原生产后端
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# 处理Swagger静态资源
location /webjars/ {
proxy_pass http://besure_server_inner:48081; # 👈 原生产后端
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# 处理API文档JSON文件
location ~ /v3/api-docs/.*\.json$ {
proxy_pass http://besure_server_inner:48081; # 👈 原生产后端
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# 前端静态资源
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}

@ -7,14 +7,16 @@
"scripts": {
"i": "pnpm install",
"dev": "vite --mode env.local",
"dev:local": "cross-env VITE_BASE_URL=http://localhost:48081 vite --mode env.local",
"pro": "vite --mode env.prod",
"dev-server": "vite --mode dev",
"ts:check": "vue-tsc --noEmit",
"build:local": "node --max_old_space_size=6144 ./node_modules/vite/bin/vite.js build",
"build:dev": "node --max_old_space_size=6144 ./node_modules/vite/bin/vite.js build --mode dev",
"build:test": "node --max_old_space_size=6144 ./node_modules/vite/bin/vite.js build --mode test",
"build:stage": "node --max_old_space_size=6144 ./node_modules/vite/bin/vite.js build --mode stage",
"build:prod": "node --max_old_space_size=6144 ./node_modules/vite/bin/vite.js build --mode prod",
"build:local": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build",
"build:dev": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode dev",
"build:test": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode test",
"build:stage": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode stage",
"build:prod": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode prod",
"build:inner": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode inner",
"serve:dev": "vite preview --mode dev",
"serve:prod": "vite preview --mode prod",
"preview": "pnpm build:local && vite preview",
@ -61,11 +63,13 @@
"markmap-view": "^0.16.0",
"min-dash": "^4.1.1",
"mitt": "^3.0.1",
"node-machine-id": "^1.1.12",
"nprogress": "^0.2.0",
"pinia": "^2.1.7",
"pinia-plugin-persistedstate": "^3.2.1",
"qrcode": "^1.5.3",
"qs": "^6.12.0",
"socket.io-client": "^4.8.3",
"sortablejs": "^1.15.3",
"steady-xml": "^0.1.0",
"url": "^0.11.3",
@ -102,6 +106,7 @@
"bpmn-js": "^17.9.2",
"bpmn-js-properties-panel": "5.23.0",
"consola": "^3.2.3",
"cross-env": "^10.1.0",
"eslint": "^8.57.0",
"eslint-config-prettier": "^9.1.0",
"eslint-define-config": "^2.1.0",

@ -1,53 +0,0 @@
import request from '@/config/axios'
// BPM 流程分类 VO
export interface CategoryVO {
id: number // 分类编号
name: string // 分类名
code: string // 分类标志
status: number // 分类状态
sort: number // 分类排序
}
// BPM 流程分类 API
export const CategoryApi = {
// 查询流程分类分页
getCategoryPage: async (params: any) => {
return await request.get({ url: `/bpm/category/page`, params })
},
// 查询流程分类列表
getCategorySimpleList: async () => {
return await request.get({ url: `/bpm/category/simple-list` })
},
// 查询流程分类详情
getCategory: async (id: number) => {
return await request.get({ url: `/bpm/category/get?id=` + id })
},
// 新增流程分类
createCategory: async (data: CategoryVO) => {
return await request.post({ url: `/bpm/category/create`, data })
},
// 修改流程分类
updateCategory: async (data: CategoryVO) => {
return await request.put({ url: `/bpm/category/update`, data })
},
// 批量修改流程分类的排序
updateCategorySortBatch: async (ids: number[]) => {
return await request.put({
url: `/bpm/category/update-sort-batch`,
params: {
ids: ids.join(',')
}
})
},
// 删除流程分类
deleteCategory: async (id: number) => {
return await request.delete({ url: `/bpm/category/delete?id=` + id })
}
}

@ -1,22 +0,0 @@
import request from '@/config/axios'
export const getProcessDefinition = async (id?: string, key?: string) => {
return await request.get({
url: '/bpm/process-definition/get',
params: { id, key }
})
}
export const getProcessDefinitionPage = async (params) => {
return await request.get({
url: '/bpm/process-definition/page',
params
})
}
export const getProcessDefinitionList = async (params) => {
return await request.get({
url: '/bpm/process-definition/list',
params
})
}

@ -1,56 +0,0 @@
import request from '@/config/axios'
export type FormVO = {
id: number
name: string
conf: string
fields: string[]
status: number
remark: string
createTime: string
}
// 创建工作流的表单定义
export const createForm = async (data: FormVO) => {
return await request.post({
url: '/bpm/form/create',
data: data
})
}
// 更新工作流的表单定义
export const updateForm = async (data: FormVO) => {
return await request.put({
url: '/bpm/form/update',
data: data
})
}
// 删除工作流的表单定义
export const deleteForm = async (id: number) => {
return await request.delete({
url: '/bpm/form/delete?id=' + id
})
}
// 获得工作流的表单定义
export const getForm = async (id: number) => {
return await request.get({
url: '/bpm/form/get?id=' + id
})
}
// 获得工作流的表单定义分页
export const getFormPage = async (params) => {
return await request.get({
url: '/bpm/form/page',
params
})
}
// 获得动态表单的精简列表
export const getFormSimpleList = async () => {
return await request.get({
url: '/bpm/form/simple-list'
})
}

@ -1,27 +0,0 @@
import request from '@/config/axios'
export type LeaveVO = {
id: number
status: number
type: number
reason: string
processInstanceId: string
startTime: string
endTime: string
createTime: string
}
// 创建请假申请
export const createLeave = async (data: LeaveVO) => {
return await request.post({ url: '/bpm/oa/leave/create', data: data })
}
// 获得请假申请
export const getLeave = async (id: number) => {
return await request.get({ url: '/bpm/oa/leave/get?id=' + id })
}
// 获得请假申请分页
export const getLeavePage = async (params: PageParam) => {
return await request.get({ url: '/bpm/oa/leave/page', params })
}

@ -1,74 +0,0 @@
import request from '@/config/axios'
export type ProcessDefinitionVO = {
id: string
version: number
deploymentTIme: string
suspensionState: number
formType?: number
}
export type ModelVO = {
id: number
formName: string
key: string
name: string
description: string
category: string
formType: number
formId: number
formCustomCreatePath: string
formCustomViewPath: string
processDefinition: ProcessDefinitionVO
status: number
remark: string
createTime: string
bpmnXml: string
}
export const getModelList = async (name: string | undefined) => {
return await request.get({ url: '/bpm/model/list', params: { name } })
}
export const getModel = async (id: string) => {
return await request.get({ url: '/bpm/model/get?id=' + id })
}
export const updateModel = async (data: ModelVO) => {
return await request.put({ url: '/bpm/model/update', data: data })
}
// 批量修改流程分类的排序
export const updateModelSortBatch = async (ids: number[]) => {
return await request.put({
url: `/bpm/model/update-sort-batch`,
params: {
ids: ids.join(',')
}
})
}
export const updateModelBpmn = async (data: ModelVO) => {
return await request.put({ url: '/bpm/model/update-bpmn', data: data })
}
// 任务状态修改
export const updateModelState = async (id: number, state: number) => {
const data = {
id: id,
state: state
}
return await request.put({ url: '/bpm/model/update-state', data: data })
}
export const createModel = async (data: ModelVO) => {
return await request.post({ url: '/bpm/model/create', data: data })
}
export const deleteModel = async (id: number) => {
return await request.delete({ url: '/bpm/model/delete?id=' + id })
}
export const deployModel = async (id: number) => {
return await request.post({ url: '/bpm/model/deploy?id=' + id })
}

@ -1,42 +0,0 @@
import request from '@/config/axios'
// BPM 流程表达式 VO
export interface ProcessExpressionVO {
id: number // 编号
name: string // 表达式名字
status: number // 表达式状态
expression: string // 表达式
}
// BPM 流程表达式 API
export const ProcessExpressionApi = {
// 查询BPM 流程表达式分页
getProcessExpressionPage: async (params: any) => {
return await request.get({ url: `/bpm/process-expression/page`, params })
},
// 查询BPM 流程表达式详情
getProcessExpression: async (id: number) => {
return await request.get({ url: `/bpm/process-expression/get?id=` + id })
},
// 新增BPM 流程表达式
createProcessExpression: async (data: ProcessExpressionVO) => {
return await request.post({ url: `/bpm/process-expression/create`, data })
},
// 修改BPM 流程表达式
updateProcessExpression: async (data: ProcessExpressionVO) => {
return await request.put({ url: `/bpm/process-expression/update`, data })
},
// 删除BPM 流程表达式
deleteProcessExpression: async (id: number) => {
return await request.delete({ url: `/bpm/process-expression/delete?id=` + id })
},
// 导出BPM 流程表达式 Excel
exportProcessExpression: async (params) => {
return await request.download({ url: `/bpm/process-expression/export-excel`, params })
}
}

@ -1,103 +0,0 @@
import request from '@/config/axios'
import { ProcessDefinitionVO } from '@/api/bpm/model'
import { NodeType, CandidateStrategy } from '@/components/SimpleProcessDesignerV2/src/consts'
export type Task = {
id: string
name: string
}
export type ProcessInstanceVO = {
id: number
name: string
processDefinitionId: string
category: string
result: number
tasks: Task[]
fields: string[]
status: number
remark: string
businessKey: string
createTime: string
endTime: string
processDefinition?: ProcessDefinitionVO
}
// 用户信息
export type User = {
id: number
nickname: string
avatar: string
}
// 审批任务信息
export type ApprovalTaskInfo = {
id: number
ownerUser: User
assigneeUser: User
status: number
reason: string
}
// 审批节点信息
export type ApprovalNodeInfo = {
id: number
name: string
nodeType: NodeType
candidateStrategy?: CandidateStrategy
status: number
startTime?: Date
endTime?: Date
candidateUsers?: User[]
tasks: ApprovalTaskInfo[]
}
export const getProcessInstanceMyPage = async (params: any) => {
return await request.get({ url: '/bpm/process-instance/my-page', params })
}
export const getProcessInstanceManagerPage = async (params: any) => {
return await request.get({ url: '/bpm/process-instance/manager-page', params })
}
export const createProcessInstance = async (data) => {
return await request.post({ url: '/bpm/process-instance/create', data: data })
}
export const cancelProcessInstanceByStartUser = async (id: number, reason: string) => {
const data = {
id: id,
reason: reason
}
return await request.delete({ url: '/bpm/process-instance/cancel-by-start-user', data: data })
}
export const cancelProcessInstanceByAdmin = async (id: number, reason: string) => {
const data = {
id: id,
reason: reason
}
return await request.delete({ url: '/bpm/process-instance/cancel-by-admin', data: data })
}
export const getProcessInstance = async (id: string) => {
return await request.get({ url: '/bpm/process-instance/get?id=' + id })
}
export const getProcessInstanceCopyPage = async (params: any) => {
return await request.get({ url: '/bpm/process-instance/copy/page', params })
}
// 获取审批详情
export const getApprovalDetail = async (params: any) => {
return await request.get({ url: 'bpm/process-instance/get-approval-detail' , params })
}
// 获取表单字段权限
export const getFormFieldsPermission = async (params: any) => {
return await request.get({ url: '/bpm/process-instance/get-form-fields-permission', params })
}
// 获取流程实例的 BPMN 模型视图
export const getProcessInstanceBpmnModelView = async (id: string) => {
return await request.get({ url: '/bpm/process-instance/get-bpmn-model-view?id=' + id })
}

@ -1,40 +0,0 @@
import request from '@/config/axios'
// BPM 流程监听器 VO
export interface ProcessListenerVO {
id: number // 编号
name: string // 监听器名字
type: string // 监听器类型
status: number // 监听器状态
event: string // 监听事件
valueType: string // 监听器值类型
value: string // 监听器值
}
// BPM 流程监听器 API
export const ProcessListenerApi = {
// 查询流程监听器分页
getProcessListenerPage: async (params: any) => {
return await request.get({ url: `/bpm/process-listener/page`, params })
},
// 查询流程监听器详情
getProcessListener: async (id: number) => {
return await request.get({ url: `/bpm/process-listener/get?id=` + id })
},
// 新增流程监听器
createProcessListener: async (data: ProcessListenerVO) => {
return await request.post({ url: `/bpm/process-listener/create`, data })
},
// 修改流程监听器
updateProcessListener: async (data: ProcessListenerVO) => {
return await request.put({ url: `/bpm/process-listener/update`, data })
},
// 删除流程监听器
deleteProcessListener: async (id: number) => {
return await request.delete({ url: `/bpm/process-listener/delete?id=` + id })
}
}

@ -1,15 +0,0 @@
import request from '@/config/axios'
export const updateBpmSimpleModel = async (data) => {
return await request.post({
url: '/bpm/model/simple/update',
data: data
})
}
export const getBpmSimpleModel = async (id) => {
return await request.get({
url: '/bpm/model/simple/get?id=' + id
})
}

@ -1,113 +0,0 @@
import request from '@/config/axios'
/**
*
*/
export enum TaskStatusEnum {
/**
*
*/
NOT_START = -1,
/**
*
*/
WAIT = 0,
/**
*
*/
RUNNING = 1,
/**
*
*/
APPROVE = 2,
/**
*
*/
REJECT = 3,
/**
*
*/
CANCEL = 4,
/**
* 退
*/
RETURN = 5,
/**
*
*/
APPROVING = 7
}
export const getTaskTodoPage = async (params: any) => {
return await request.get({ url: '/bpm/task/todo-page', params })
}
export const getTaskDonePage = async (params: any) => {
return await request.get({ url: '/bpm/task/done-page', params })
}
export const getTaskManagerPage = async (params: any) => {
return await request.get({ url: '/bpm/task/manager-page', params })
}
export const approveTask = async (data: any) => {
return await request.put({ url: '/bpm/task/approve', data })
}
export const rejectTask = async (data: any) => {
return await request.put({ url: '/bpm/task/reject', data })
}
export const getTaskListByProcessInstanceId = async (processInstanceId: string) => {
return await request.get({
url: '/bpm/task/list-by-process-instance-id?processInstanceId=' + processInstanceId
})
}
// 获取所有可退回的节点
export const getTaskListByReturn = async (id: string) => {
return await request.get({ url: '/bpm/task/list-by-return', params: { id } })
}
// 退回
export const returnTask = async (data: any) => {
return await request.put({ url: '/bpm/task/return', data })
}
// 委派
export const delegateTask = async (data: any) => {
return await request.put({ url: '/bpm/task/delegate', data })
}
// 转派
export const transferTask = async (data: any) => {
return await request.put({ url: '/bpm/task/transfer', data })
}
// 加签
export const signCreateTask = async (data: any) => {
return await request.put({ url: '/bpm/task/create-sign', data })
}
// 减签
export const signDeleteTask = async (data: any) => {
return await request.delete({ url: '/bpm/task/delete-sign', data })
}
// 抄送
export const copyTask = async (data: any) => {
return await request.put({ url: '/bpm/task/copy', data })
}
// 获取我的待办任务
export const myTodoTask = async (processInstanceId: string) => {
return await request.get({ url: '/bpm/task/my-todo?processInstanceId=' + processInstanceId })
}
// 获取减签任务列表
export const getChildrenTaskList = async (id: string) => {
return await request.get({ url: '/bpm/task/list-by-parent-task-id?parentTaskId=' + id })
}

@ -1,47 +0,0 @@
import request from '@/config/axios'
export type UserGroupVO = {
id: number
name: string
description: string
userIds: number[]
status: number
remark: string
createTime: string
}
// 创建用户组
export const createUserGroup = async (data: UserGroupVO) => {
return await request.post({
url: '/bpm/user-group/create',
data: data
})
}
// 更新用户组
export const updateUserGroup = async (data: UserGroupVO) => {
return await request.put({
url: '/bpm/user-group/update',
data: data
})
}
// 删除用户组
export const deleteUserGroup = async (id: number) => {
return await request.delete({ url: '/bpm/user-group/delete?id=' + id })
}
// 获得用户组
export const getUserGroup = async (id: number) => {
return await request.get({ url: '/bpm/user-group/get?id=' + id })
}
// 获得用户组分页
export const getUserGroupPage = async (params) => {
return await request.get({ url: '/bpm/user-group/page', params })
}
// 获取用户组精简信息列表
export const getUserGroupSimpleList = async (): Promise<UserGroupVO[]> => {
return await request.get({ url: '/bpm/user-group/simple-list' })
}

@ -1,98 +0,0 @@
import request from '@/config/axios'
import { TransferReqVO } from '@/api/crm/permission'
export interface BusinessVO {
id: number
name: string
customerId: number
customerName?: string
followUpStatus: boolean
contactLastTime: Date
contactNextTime: Date
ownerUserId: number
ownerUserName?: string // 负责人的用户名称
ownerUserDept?: string // 负责人的部门名称
statusTypeId: number
statusTypeName?: string
statusId: number
statusName?: string
endStatus: number
endRemark: string
dealTime: Date
totalProductPrice: number
totalPrice: number
discountPercent: number
remark: string
creator: string // 创建人
creatorName?: string // 创建人名称
createTime: Date // 创建时间
updateTime: Date // 更新时间
products?: [
{
id: number
productId: number
productName: string
productNo: string
productUnit: number
productPrice: number
businessPrice: number
count: number
totalPrice: number
}
]
}
// 查询 CRM 商机列表
export const getBusinessPage = async (params) => {
return await request.get({ url: `/crm/business/page`, params })
}
// 查询 CRM 商机列表,基于指定客户
export const getBusinessPageByCustomer = async (params) => {
return await request.get({ url: `/crm/business/page-by-customer`, params })
}
// 查询 CRM 商机详情
export const getBusiness = async (id: number) => {
return await request.get({ url: `/crm/business/get?id=` + id })
}
// 获得 CRM 商机列表(精简)
export const getSimpleBusinessList = async () => {
return await request.get({ url: `/crm/business/simple-all-list` })
}
// 新增 CRM 商机
export const createBusiness = async (data: BusinessVO) => {
return await request.post({ url: `/crm/business/create`, data })
}
// 修改 CRM 商机
export const updateBusiness = async (data: BusinessVO) => {
return await request.put({ url: `/crm/business/update`, data })
}
// 修改 CRM 商机状态
export const updateBusinessStatus = async (data: BusinessVO) => {
return await request.put({ url: `/crm/business/update-status`, data })
}
// 删除 CRM 商机
export const deleteBusiness = async (id: number) => {
return await request.delete({ url: `/crm/business/delete?id=` + id })
}
// 导出 CRM 商机 Excel
export const exportBusiness = async (params) => {
return await request.download({ url: `/crm/business/export-excel`, params })
}
// 联系人关联商机列表
export const getBusinessPageByContact = async (params) => {
return await request.get({ url: `/crm/business/page-by-contact`, params })
}
// 商机转移
export const transferBusiness = async (data: TransferReqVO) => {
return await request.put({ url: '/crm/business/transfer', data })
}

@ -1,68 +0,0 @@
import request from '@/config/axios'
export interface BusinessStatusTypeVO {
id: number
name: string
deptIds: number[]
statuses?: {
id: number
name: string
percent: number
}
}
export const DEFAULT_STATUSES = [
{
endStatus: 1,
key: '结束',
name: '赢单',
percent: 100
},
{
endStatus: 2,
key: '结束',
name: '输单',
percent: 0
},
{
endStatus: 3,
key: '结束',
name: '无效',
percent: 0
}
]
// 查询商机状态组列表
export const getBusinessStatusPage = async (params: any) => {
return await request.get({ url: `/crm/business-status/page`, params })
}
// 新增商机状态组
export const createBusinessStatus = async (data: BusinessStatusTypeVO) => {
return await request.post({ url: `/crm/business-status/create`, data })
}
// 修改商机状态组
export const updateBusinessStatus = async (data: BusinessStatusTypeVO) => {
return await request.put({ url: `/crm/business-status/update`, data })
}
// 查询商机状态类型详情
export const getBusinessStatus = async (id: number) => {
return await request.get({ url: `/crm/business-status/get?id=` + id })
}
// 删除商机状态
export const deleteBusinessStatus = async (id: number) => {
return await request.delete({ url: `/crm/business-status/delete?id=` + id })
}
// 获得商机状态组列表
export const getBusinessStatusTypeSimpleList = async () => {
return await request.get({ url: `/crm/business-status/type-simple-list` })
}
// 获得商机阶段列表
export const getBusinessStatusSimpleList = async (typeId: number) => {
return await request.get({ url: `/crm/business-status/status-simple-list`, params: { typeId } })
}

@ -1,78 +0,0 @@
import request from '@/config/axios'
import { TransferReqVO } from '@/api/crm/permission'
export interface ClueVO {
id: number // 编号
name: string // 线索名称
followUpStatus: boolean // 跟进状态
contactLastTime: Date // 最后跟进时间
contactLastContent: string // 最后跟进内容
contactNextTime: Date // 下次联系时间
ownerUserId: number // 负责人的用户编号
ownerUserName?: string // 负责人的用户名称
ownerUserDept?: string // 负责人的部门名称
transformStatus: boolean // 转化状态
customerId: number // 客户编号
customerName?: string // 客户名称
mobile: string // 手机号
telephone: string // 电话
qq: string // QQ
wechat: string // wechat
email: string // email
areaId: number // 所在地
areaName?: string // 所在地名称
detailAddress: string // 详细地址
industryId: number // 所属行业
level: number // 客户等级
source: number // 客户来源
remark: string // 备注
creator: string // 创建人
creatorName?: string // 创建人名称
createTime: Date // 创建时间
updateTime: Date // 更新时间
}
// 查询线索列表
export const getCluePage = async (params: any) => {
return await request.get({ url: `/crm/clue/page`, params })
}
// 查询线索详情
export const getClue = async (id: number) => {
return await request.get({ url: `/crm/clue/get?id=` + id })
}
// 新增线索
export const createClue = async (data: ClueVO) => {
return await request.post({ url: `/crm/clue/create`, data })
}
// 修改线索
export const updateClue = async (data: ClueVO) => {
return await request.put({ url: `/crm/clue/update`, data })
}
// 删除线索
export const deleteClue = async (id: number) => {
return await request.delete({ url: `/crm/clue/delete?id=` + id })
}
// 导出线索 Excel
export const exportClue = async (params) => {
return await request.download({ url: `/crm/clue/export-excel`, params })
}
// 线索转移
export const transferClue = async (data: TransferReqVO) => {
return await request.put({ url: '/crm/clue/transfer', data })
}
// 线索转化为客户
export const transformClue = async (id: number) => {
return await request.put({ url: '/crm/clue/transform', params: { id } })
}
// 获得分配给我的、待跟进的线索数量
export const getFollowClueCount = async () => {
return await request.get({ url: '/crm/clue/follow-count' })
}

@ -1,113 +0,0 @@
import request from '@/config/axios'
import { TransferReqVO } from '@/api/crm/permission'
export interface ContactVO {
id: number // 编号
name: string // 联系人名称
customerId: number // 客户编号
customerName?: string // 客户名称
contactLastTime: Date // 最后跟进时间
contactLastContent: string // 最后跟进内容
contactNextTime: Date // 下次联系时间
ownerUserId: number // 负责人的用户编号
ownerUserName?: string // 负责人的用户名称
ownerUserDept?: string // 负责人的部门名称
mobile: string // 手机号
telephone: string // 电话
qq: string // QQ
wechat: string // wechat
email: string // email
areaId: number // 所在地
areaName?: string // 所在地名称
detailAddress: string // 详细地址
sex: number // 性别
master: boolean // 是否主联系人
post: string // 职务
parentId: number // 上级联系人编号
parentName?: string // 上级联系人名称
remark: string // 备注
creator: string // 创建人
creatorName?: string // 创建人名称
createTime: Date // 创建时间
updateTime: Date // 更新时间
}
export interface ContactBusinessReqVO {
contactId: number
businessIds: number[]
}
export interface ContactBusiness2ReqVO {
businessId: number
contactIds: number[]
}
// 查询 CRM 联系人列表
export const getContactPage = async (params) => {
return await request.get({ url: `/crm/contact/page`, params })
}
// 查询 CRM 联系人列表,基于指定客户
export const getContactPageByCustomer = async (params: any) => {
return await request.get({ url: `/crm/contact/page-by-customer`, params })
}
// 查询 CRM 联系人列表,基于指定商机
export const getContactPageByBusiness = async (params: any) => {
return await request.get({ url: `/crm/contact/page-by-business`, params })
}
// 查询 CRM 联系人详情
export const getContact = async (id: number) => {
return await request.get({ url: `/crm/contact/get?id=` + id })
}
// 新增 CRM 联系人
export const createContact = async (data: ContactVO) => {
return await request.post({ url: `/crm/contact/create`, data })
}
// 修改 CRM 联系人
export const updateContact = async (data: ContactVO) => {
return await request.put({ url: `/crm/contact/update`, data })
}
// 删除 CRM 联系人
export const deleteContact = async (id: number) => {
return await request.delete({ url: `/crm/contact/delete?id=` + id })
}
// 导出 CRM 联系人 Excel
export const exportContact = async (params) => {
return await request.download({ url: `/crm/contact/export-excel`, params })
}
// 获得 CRM 联系人列表(精简)
export const getSimpleContactList = async () => {
return await request.get({ url: `/crm/contact/simple-all-list` })
}
// 批量新增联系人商机关联
export const createContactBusinessList = async (data: ContactBusinessReqVO) => {
return await request.post({ url: `/crm/contact/create-business-list`, data })
}
// 批量新增联系人商机关联
export const createContactBusinessList2 = async (data: ContactBusiness2ReqVO) => {
return await request.post({ url: `/crm/contact/create-business-list2`, data })
}
// 解除联系人商机关联
export const deleteContactBusinessList = async (data: ContactBusinessReqVO) => {
return await request.delete({ url: `/crm/contact/delete-business-list`, data })
}
// 解除联系人商机关联
export const deleteContactBusinessList2 = async (data: ContactBusiness2ReqVO) => {
return await request.delete({ url: `/crm/contact/delete-business-list2`, data })
}
// 联系人转移
export const transferContact = async (data: TransferReqVO) => {
return await request.put({ url: '/crm/contact/transfer', data })
}

@ -1,16 +0,0 @@
import request from '@/config/axios'
export interface ContractConfigVO {
notifyEnabled?: boolean
notifyDays?: number
}
// 获取合同配置
export const getContractConfig = async () => {
return await request.get({ url: `/crm/contract-config/get` })
}
// 更新合同配置
export const saveContractConfig = async (data: ContractConfigVO) => {
return await request.put({ url: `/crm/contract-config/save`, data })
}

@ -1,114 +0,0 @@
import request from '@/config/axios'
import { TransferReqVO } from '@/api/crm/permission'
export interface ContractVO {
id: number
name: string
no: string
customerId: number
customerName?: string
businessId: number
businessName: string
contactLastTime: Date
ownerUserId: number
ownerUserName?: string
ownerUserDeptName?: string
processInstanceId: number
auditStatus: number
orderDate: Date
startTime: Date
endTime: Date
totalProductPrice: number
discountPercent: number
totalPrice: number
totalReceivablePrice: number
signContactId: number
signContactName?: string
signUserId: number
signUserName: string
remark: string
createTime?: Date
creator: string
creatorName: string
updateTime?: Date
products?: [
{
id: number
productId: number
productName: string
productNo: string
productUnit: number
productPrice: number
contractPrice: number
count: number
totalPrice: number
}
]
}
// 查询 CRM 合同列表
export const getContractPage = async (params) => {
return await request.get({ url: `/crm/contract/page`, params })
}
// 查询 CRM 联系人列表,基于指定客户
export const getContractPageByCustomer = async (params: any) => {
return await request.get({ url: `/crm/contract/page-by-customer`, params })
}
// 查询 CRM 联系人列表,基于指定商机
export const getContractPageByBusiness = async (params: any) => {
return await request.get({ url: `/crm/contract/page-by-business`, params })
}
// 查询 CRM 合同详情
export const getContract = async (id: number) => {
return await request.get({ url: `/crm/contract/get?id=` + id })
}
// 查询 CRM 合同下拉列表
export const getContractSimpleList = async (customerId: number) => {
return await request.get({
url: `/crm/contract/simple-list?customerId=${customerId}`
})
}
// 新增 CRM 合同
export const createContract = async (data: ContractVO) => {
return await request.post({ url: `/crm/contract/create`, data })
}
// 修改 CRM 合同
export const updateContract = async (data: ContractVO) => {
return await request.put({ url: `/crm/contract/update`, data })
}
// 删除 CRM 合同
export const deleteContract = async (id: number) => {
return await request.delete({ url: `/crm/contract/delete?id=` + id })
}
// 导出 CRM 合同 Excel
export const exportContract = async (params) => {
return await request.download({ url: `/crm/contract/export-excel`, params })
}
// 提交审核
export const submitContract = async (id: number) => {
return await request.put({ url: `/crm/contract/submit?id=${id}` })
}
// 合同转移
export const transferContract = async (data: TransferReqVO) => {
return await request.put({ url: '/crm/contract/transfer', data })
}
// 获得待审核合同数量
export const getAuditContractCount = async () => {
return await request.get({ url: '/crm/contract/audit-count' })
}
// 获得即将到期(提醒)的合同数量
export const getRemindContractCount = async () => {
return await request.get({ url: '/crm/contract/remind-count' })
}

@ -1,43 +0,0 @@
import request from '@/config/axios'
// 跟进记录 VO
export interface FollowUpRecordVO {
id: number // 编号
bizType: number // 数据类型
bizId: number // 数据编号
type: number // 跟进类型
content: string // 跟进内容
picUrls: string[] // 图片
fileUrls: string[] // 附件
nextTime: Date // 下次联系时间
businessIds: number[] // 关联的商机编号数组
businesses: {
id: number
name: string
}[] // 关联的商机数组
contactIds: number[] // 关联的联系人编号数组
contacts: {
id: number
name: string
}[] // 关联的联系人数组
creator: string
creatorName?: string
}
// 跟进记录 API
export const FollowUpRecordApi = {
// 查询跟进记录分页
getFollowUpRecordPage: async (params: any) => {
return await request.get({ url: `/crm/follow-up-record/page`, params })
},
// 新增跟进记录
createFollowUpRecord: async (data: FollowUpRecordVO) => {
return await request.post({ url: `/crm/follow-up-record/create`, data })
},
// 删除跟进记录
deleteFollowUpRecord: async (id: number) => {
return await request.delete({ url: `/crm/follow-up-record/delete?id=` + id })
}
}

@ -1,11 +0,0 @@
import request from '@/config/axios'
export interface OperateLogVO extends PageParam {
bizType: number
bizId: number
}
// 获得操作日志
export const getOperateLogPage = async (params: OperateLogVO) => {
return await request.get({ url: `/crm/operate-log/page`, params })
}

@ -1,72 +0,0 @@
import request from '@/config/axios'
export interface PermissionVO {
id?: number // 数据权限编号
userId: number // 用户编号
bizType: number // Crm 类型
bizId: number // Crm 类型数据编号
level: number // 权限级别
toBizTypes?: number[] // 同时添加至
deptName?: string // 部门名称
nickname?: string // 用户昵称
postNames?: string[] // 岗位名称数组
createTime?: Date
ids?: number[]
}
export interface TransferReqVO {
id: number // 模块编号
newOwnerUserId: number // 新负责人的用户编号
oldOwnerPermissionLevel?: number // 老负责人加入团队后的权限级别
toBizTypes?: number[] // 转移客户时,需要额外有【联系人】【商机】【合同】的 checkbox 选择
}
/**
* CRM
*
* @author HUIHUI
*/
export enum BizTypeEnum {
CRM_CLUE = 1, // 线索
CRM_CUSTOMER = 2, // 客户
CRM_CONTACT = 3, // 联系人
CRM_BUSINESS = 4, // 商机
CRM_CONTRACT = 5, // 合同
CRM_PRODUCT = 6, // 产品
CRM_RECEIVABLE = 7, // 回款
CRM_RECEIVABLE_PLAN = 8 // 回款计划
}
/**
* CRM
*/
export enum PermissionLevelEnum {
OWNER = 1, // 负责人
READ = 2, // 只读
WRITE = 3 // 读写
}
// 获得数据权限列表(查询团队成员列表)
export const getPermissionList = async (params) => {
return await request.get({ url: `/crm/permission/list`, params })
}
// 创建数据权限(新增团队成员)
export const createPermission = async (data: PermissionVO) => {
return await request.post({ url: `/crm/permission/create`, data })
}
// 编辑数据权限(修改团队成员权限级别)
export const updatePermission = async (data) => {
return await request.put({ url: `/crm/permission/update`, data })
}
// 删除数据权限(删除团队成员)
export const deletePermissionBatch = async (val: number[]) => {
return await request.delete({ url: '/crm/permission/delete?ids=' + val.join(',') })
}
// 删除自己的数据权限(退出团队)
export const deleteSelfPermission = async (id: number) => {
return await request.delete({ url: '/crm/permission/delete-self?id=' + id })
}

@ -1,33 +0,0 @@
import request from '@/config/axios'
// TODO @zange挪到 product 下,建个 category 包,挪进去哈;
export interface ProductCategoryVO {
id: number
name: string
parentId: number
}
// 查询产品分类详情
export const getProductCategory = async (id: number) => {
return await request.get({ url: `/crm/product-category/get?id=` + id })
}
// 新增产品分类
export const createProductCategory = async (data: ProductCategoryVO) => {
return await request.post({ url: `/crm/product-category/create`, data })
}
// 修改产品分类
export const updateProductCategory = async (data: ProductCategoryVO) => {
return await request.put({ url: `/crm/product-category/update`, data })
}
// 删除产品分类
export const deleteProductCategory = async (id: number) => {
return await request.delete({ url: `/crm/product-category/delete?id=` + id })
}
// 产品分类列表
export const getProductCategoryList = async (params) => {
return await request.get({ url: `/crm/product-category/list`, params })
}

@ -1,49 +0,0 @@
import request from '@/config/axios'
export interface ProductVO {
id: number
name: string
no: string
unit: number
price: number
status: number
categoryId: number
categoryName?: string
description: string
ownerUserId: number
}
// 查询产品列表
export const getProductPage = async (params) => {
return await request.get({ url: `/crm/product/page`, params })
}
// 获得产品精简列表
export const getProductSimpleList = async () => {
return await request.get({ url: `/crm/product/simple-list` })
}
// 查询产品详情
export const getProduct = async (id: number) => {
return await request.get({ url: `/crm/product/get?id=` + id })
}
// 新增产品
export const createProduct = async (data: ProductVO) => {
return await request.post({ url: `/crm/product/create`, data })
}
// 修改产品
export const updateProduct = async (data: ProductVO) => {
return await request.put({ url: `/crm/product/update`, data })
}
// 删除产品
export const deleteProduct = async (id: number) => {
return await request.delete({ url: `/crm/product/delete?id=` + id })
}
// 导出产品 Excel
export const exportProduct = async (params) => {
return await request.download({ url: `/crm/product/export-excel`, params })
}

@ -1,73 +0,0 @@
import request from '@/config/axios'
export interface ReceivableVO {
id: number
no: string
planId?: number
customerId?: number
customerName?: string
contractId?: number
contract?: {
id?: number
name?: string
no: string
totalPrice: number
}
auditStatus: number
processInstanceId: number
returnTime: Date
returnType: number
price: number
ownerUserId: number
ownerUserName?: string
remark: string
creator: string // 创建人
creatorName?: string // 创建人名称
createTime: Date // 创建时间
updateTime: Date // 更新时间
}
// 查询回款列表
export const getReceivablePage = async (params) => {
return await request.get({ url: `/crm/receivable/page`, params })
}
// 查询回款列表
export const getReceivablePageByCustomer = async (params) => {
return await request.get({ url: `/crm/receivable/page-by-customer`, params })
}
// 查询回款详情
export const getReceivable = async (id: number) => {
return await request.get({ url: `/crm/receivable/get?id=` + id })
}
// 新增回款
export const createReceivable = async (data: ReceivableVO) => {
return await request.post({ url: `/crm/receivable/create`, data })
}
// 修改回款
export const updateReceivable = async (data: ReceivableVO) => {
return await request.put({ url: `/crm/receivable/update`, data })
}
// 删除回款
export const deleteReceivable = async (id: number) => {
return await request.delete({ url: `/crm/receivable/delete?id=` + id })
}
// 导出回款 Excel
export const exportReceivable = async (params) => {
return await request.download({ url: `/crm/receivable/export-excel`, params })
}
// 提交审核
export const submitReceivable = async (id: number) => {
return await request.put({ url: `/crm/receivable/submit?id=${id}` })
}
// 获得待审核回款数量
export const getAuditReceivableCount = async () => {
return await request.get({ url: '/crm/receivable/audit-count' })
}

@ -1,74 +0,0 @@
import request from '@/config/axios'
export interface ReceivablePlanVO {
id: number
period: number
receivableId: number
price: number
returnTime: Date
remindDays: number
returnType: number
remindTime: Date
customerId: number
customerName?: string
contractId?: number
contractNo?: string
ownerUserId: number
ownerUserName?: string
remark: string
creator: string // 创建人
creatorName?: string // 创建人名称
createTime: Date // 创建时间
updateTime: Date // 更新时间
receivable?: {
price: number
returnTime: Date
}
}
// 查询回款计划列表
export const getReceivablePlanPage = async (params) => {
return await request.get({ url: `/crm/receivable-plan/page`, params })
}
// 查询回款计划列表
export const getReceivablePlanPageByCustomer = async (params) => {
return await request.get({ url: `/crm/receivable-plan/page-by-customer`, params })
}
// 查询回款计划详情
export const getReceivablePlan = async (id: number) => {
return await request.get({ url: `/crm/receivable-plan/get?id=` + id })
}
// 查询回款计划下拉数据
export const getReceivablePlanSimpleList = async (customerId: number, contractId: number) => {
return await request.get({
url: `/crm/receivable-plan/simple-list?customerId=${customerId}&contractId=${contractId}`
})
}
// 新增回款计划
export const createReceivablePlan = async (data: ReceivablePlanVO) => {
return await request.post({ url: `/crm/receivable-plan/create`, data })
}
// 修改回款计划
export const updateReceivablePlan = async (data: ReceivablePlanVO) => {
return await request.put({ url: `/crm/receivable-plan/update`, data })
}
// 删除回款计划
export const deleteReceivablePlan = async (id: number) => {
return await request.delete({ url: `/crm/receivable-plan/delete?id=` + id })
}
// 导出回款计划 Excel
export const exportReceivablePlan = async (params) => {
return await request.download({ url: `/crm/receivable-plan/export-excel`, params })
}
// 获得待回款提醒数量
export const getReceivablePlanRemindCount = async () => {
return await request.get({ url: '/crm/receivable-plan/remind-count' })
}

@ -1,168 +0,0 @@
import request from '@/config/axios'
export interface CrmStatisticsCustomerSummaryByDateRespVO {
time: string
customerCreateCount: number
customerDealCount: number
}
export interface CrmStatisticsCustomerSummaryByUserRespVO {
ownerUserName: string
customerCreateCount: number
customerDealCount: number
contractPrice: number
receivablePrice: number
}
export interface CrmStatisticsFollowUpSummaryByDateRespVO {
time: string
followUpRecordCount: number
followUpCustomerCount: number
}
export interface CrmStatisticsFollowUpSummaryByUserRespVO {
ownerUserName: string
followupRecordCount: number
followupCustomerCount: number
}
export interface CrmStatisticsFollowUpSummaryByTypeRespVO {
followUpType: string
followUpRecordCount: number
}
export interface CrmStatisticsCustomerContractSummaryRespVO {
customerName: string
contractName: string
totalPrice: number
receivablePrice: number
customerType: string
customerSource: string
ownerUserName: string
creatorUserName: string
createTime: Date
orderDate: Date
}
export interface CrmStatisticsPoolSummaryByDateRespVO {
time: string
customerPutCount: number
customerTakeCount: number
}
export interface CrmStatisticsPoolSummaryByUserRespVO {
ownerUserName: string
customerPutCount: number
customerTakeCount: number
}
export interface CrmStatisticsCustomerDealCycleByDateRespVO {
time: string
customerDealCycle: number
}
export interface CrmStatisticsCustomerDealCycleByUserRespVO {
ownerUserName: string
customerDealCycle: number
customerDealCount: number
}
export interface CrmStatisticsCustomerDealCycleByAreaRespVO {
areaName: string
customerDealCycle: number
customerDealCount: number
}
export interface CrmStatisticsCustomerDealCycleByProductRespVO {
productName: string
customerDealCycle: number
customerDealCount: number
}
// 客户分析 API
export const StatisticsCustomerApi = {
// 1.1 客户总量分析(按日期)
getCustomerSummaryByDate: (params: any) => {
return request.get({
url: '/crm/statistics-customer/get-customer-summary-by-date',
params
})
},
// 1.2 客户总量分析(按用户)
getCustomerSummaryByUser: (params: any) => {
return request.get({
url: '/crm/statistics-customer/get-customer-summary-by-user',
params
})
},
// 2.1 客户跟进次数分析(按日期)
getFollowUpSummaryByDate: (params: any) => {
return request.get({
url: '/crm/statistics-customer/get-follow-up-summary-by-date',
params
})
},
// 2.2 客户跟进次数分析(按用户)
getFollowUpSummaryByUser: (params: any) => {
return request.get({
url: '/crm/statistics-customer/get-follow-up-summary-by-user',
params
})
},
// 3.1 获取客户跟进方式统计数
getFollowUpSummaryByType: (params: any) => {
return request.get({
url: '/crm/statistics-customer/get-follow-up-summary-by-type',
params
})
},
// 4.1 合同摘要信息(客户转化率页面)
getContractSummary: (params: any) => {
return request.get({
url: '/crm/statistics-customer/get-contract-summary',
params
})
},
// 5.1 获取客户公海分析(按日期)
getPoolSummaryByDate: (param: any) => {
return request.get({
url: '/crm/statistics-customer/get-pool-summary-by-date',
params: param
})
},
// 5.2 获取客户公海分析(按用户)
getPoolSummaryByUser: (param: any) => {
return request.get({
url: '/crm/statistics-customer/get-pool-summary-by-user',
params: param
})
},
// 6.1 获取客户成交周期(按日期)
getCustomerDealCycleByDate: (params: any) => {
return request.get({
url: '/crm/statistics-customer/get-customer-deal-cycle-by-date',
params
})
},
// 6.2 获取客户成交周期(按用户)
getCustomerDealCycleByUser: (params: any) => {
return request.get({
url: '/crm/statistics-customer/get-customer-deal-cycle-by-user',
params
})
},
// 6.2 获取客户成交周期(按用户)
getCustomerDealCycleByArea: (params: any) => {
return request.get({
url: '/crm/statistics-customer/get-customer-deal-cycle-by-area',
params
})
},
// 6.2 获取客户成交周期(按用户)
getCustomerDealCycleByProduct: (params: any) => {
return request.get({
url: '/crm/statistics-customer/get-customer-deal-cycle-by-product',
params
})
}
}

@ -1,58 +0,0 @@
import request from '@/config/axios'
export interface CrmStatisticFunnelRespVO {
customerCount: number // 客户数
businessCount: number // 商机数
businessWinCount: number // 赢单数
}
export interface CrmStatisticsBusinessSummaryByDateRespVO {
time: string // 时间
businessCreateCount: number // 商机数
totalPrice: number | string // 商机金额
}
export interface CrmStatisticsBusinessInversionRateSummaryByDateRespVO {
time: string // 时间
businessCount: number // 商机数量
businessWinCount: number // 赢单商机数
}
// 客户分析 API
export const StatisticFunnelApi = {
// 1. 获取销售漏斗统计数据
getFunnelSummary: (params: any) => {
return request.get({
url: '/crm/statistics-funnel/get-funnel-summary',
params
})
},
// 2. 获取商机结束状态统计
getBusinessSummaryByEndStatus: (params: any) => {
return request.get({
url: '/crm/statistics-funnel/get-business-summary-by-end-status',
params
})
},
// 3. 获取新增商机分析(按日期)
getBusinessSummaryByDate: (params: any) => {
return request.get({
url: '/crm/statistics-funnel/get-business-summary-by-date',
params
})
},
// 4. 获取商机转化率分析(按日期)
getBusinessInversionRateSummaryByDate: (params: any) => {
return request.get({
url: '/crm/statistics-funnel/get-business-inversion-rate-summary-by-date',
params
})
},
// 5. 获取商机列表(按日期)
getBusinessPageByDate: (params: any) => {
return request.get({
url: '/crm/statistics-funnel/get-business-page-by-date',
params
})
}
}

@ -1,33 +0,0 @@
import request from '@/config/axios'
export interface StatisticsPerformanceRespVO {
time: string
currentMonthCount: number
lastMonthCount: number
lastYearCount: number
}
// 排行 API
export const StatisticsPerformanceApi = {
// 员工获得合同金额统计
getContractPricePerformance: (params: any) => {
return request.get({
url: '/crm/statistics-performance/get-contract-price-performance',
params
})
},
// 员工获得回款统计
getReceivablePricePerformance: (params: any) => {
return request.get({
url: '/crm/statistics-performance/get-receivable-price-performance',
params
})
},
//员工获得签约合同数量统计
getContractCountPerformance: (params: any) => {
return request.get({
url: '/crm/statistics-performance/get-contract-count-performance',
params
})
}
}

@ -1,60 +0,0 @@
import request from '@/config/axios'
export interface CrmStatisticCustomerBaseRespVO {
customerCount: number
dealCount: number
dealPortion: string | number
}
export interface CrmStatisticCustomerIndustryRespVO extends CrmStatisticCustomerBaseRespVO {
industryId: number
industryPortion: string | number
}
export interface CrmStatisticCustomerSourceRespVO extends CrmStatisticCustomerBaseRespVO {
source: number
sourcePortion: string | number
}
export interface CrmStatisticCustomerLevelRespVO extends CrmStatisticCustomerBaseRespVO {
level: number
levelPortion: string | number
}
export interface CrmStatisticCustomerAreaRespVO extends CrmStatisticCustomerBaseRespVO {
areaId: number
areaName: string
areaPortion: string | number
}
// 客户分析 API
export const StatisticsPortraitApi = {
// 1. 获取客户行业统计数据
getCustomerIndustry: (params: any) => {
return request.get({
url: '/crm/statistics-portrait/get-customer-industry-summary',
params
})
},
// 2. 获取客户来源统计数据
getCustomerSource: (params: any) => {
return request.get({
url: '/crm/statistics-portrait/get-customer-source-summary',
params
})
},
// 3. 获取客户级别统计数据
getCustomerLevel: (params: any) => {
return request.get({
url: '/crm/statistics-portrait/get-customer-level-summary',
params
})
},
// 4. 获取客户地区统计数据
getCustomerArea: (params: any) => {
return request.get({
url: '/crm/statistics-portrait/get-customer-area-summary',
params
})
}
}

@ -1,67 +0,0 @@
import request from '@/config/axios'
export interface StatisticsRankRespVO {
count: number
nickname: string
deptName: string
}
// 排行 API
export const StatisticsRankApi = {
// 获得合同排行榜
getContractPriceRank: (params: any) => {
return request.get({
url: '/crm/statistics-rank/get-contract-price-rank',
params
})
},
// 获得回款排行榜
getReceivablePriceRank: (params: any) => {
return request.get({
url: '/crm/statistics-rank/get-receivable-price-rank',
params
})
},
// 签约合同排行
getContractCountRank: (params: any) => {
return request.get({
url: '/crm/statistics-rank/get-contract-count-rank',
params
})
},
// 产品销量排行
getProductSalesRank: (params: any) => {
return request.get({
url: '/crm/statistics-rank/get-product-sales-rank',
params
})
},
// 新增客户数排行
getCustomerCountRank: (params: any) => {
return request.get({
url: '/crm/statistics-rank/get-customer-count-rank',
params
})
},
// 新增联系人数排行
getContactsCountRank: (params: any) => {
return request.get({
url: '/crm/statistics-rank/get-contacts-count-rank',
params
})
},
// 跟进次数排行
getFollowCountRank: (params: any) => {
return request.get({
url: '/crm/statistics-rank/get-follow-count-rank',
params
})
},
// 跟进客户数排行
getFollowCustomerCountRank: (params: any) => {
return request.get({
url: '/crm/statistics-rank/get-follow-customer-count-rank',
params
})
}
}

@ -6,13 +6,31 @@ export interface MoldBrandVO {
code: string // 型号编码
name: string // 型号名称
moldType: string // 规格
productId: number // 产品ID
useTime: number // 预期寿命(小时)
maintainType: number // 维保模式
maintainTime: number // 维保周期
productId?: number // 产品ID
productName?: string // 产品名称
productIds?: Array<number> | string // 产品ID列表
products?: any[]
images?: string // 图片
drawings?: string // 图纸
operationManual?: string // 操作手册
operationVideo?: string // 操作视频
version?: string // 版本
status?: number // 状态
currentPosition?: string // 当前位置
currentDevice?: string // 当前设备
deviceId?: number // 当前设备ID
deviceName?: string // 当前设备
machineName?: string // 当前设备
useTime?: number // 预期寿命(小时)
maintainType?: number // 维保模式
maintainTime?: number // 维保周期
moldSize: number // 模具系数
remark: string // 备注
remark?: string // 备注
isEnable: boolean // 是否启用
isCode?: boolean // 是否自动生成编码
orgType?: string
createTime?: string
qrCodeUrl?: string
}
export interface MoldBrandTreeVO extends MoldBrandVO {
@ -160,6 +178,22 @@ export const MoldBrandApi = {
// 获得模具产品
getMoldBrandProduct: async (id: number) => {
return await request.get({ url: `/erp/mold-brand/mold-brand-product/get?id=` + id })
},
// ==================== 压网记录 ====================
// 新增压网记录
createPressureNetRecord: async (data: any) => {
return await request.post({ url: `/erp/mold-pressure-net-record/create`, data })
},
// 批量增压网记录
batchCreatePressureNetRecord: async (data: any) => {
return await request.post({ url: `/erp/mold-pressure-net-record/batch-create`, data })
},
// 查询压网记录分页
getPressureNetRecordPage: async (params: any) => {
return await request.get({ url: `/erp/mold-pressure-net-record/page`, params })
}
}

@ -8,18 +8,29 @@ export interface ProductCategoryVO {
code: string // 分类编码
sort: number // 分类排序
status: number // 开启状态
type: number // 类型
processRouteId?: string | number // 工艺路线 ID
processRouteName?: string // 工艺路线名称
}
const getProductCategoryRequestParams = (data: ProductCategoryVO) => ({
processRouteId: data.processRouteId || undefined
})
// ERP 产品分类 API
export const ProductCategoryApi = {
// 查询产品分类分组树
getProductCategoryGroupTree: async () => {
return await request.get({ url: `/erp/product-category/group-tree` })
},
// 查询产品分类列表
getProductCategoryList: async () => {
return await request.get({ url: `/erp/product-category/list` })
getProductCategoryList: async (type?: number) => {
return await request.get({ url: `/erp/product-category/list`, params: { type } })
},
// 查询产品分类精简列表
getProductCategorySimpleList: async () => {
return await request.get({ url: `/erp/product-category/simple-list` })
getProductCategorySimpleList: async (type?: number) => {
return await request.get({ url: `/erp/product-category/simple-list`, params: { type } })
},
// 查询产品分类详情
@ -29,12 +40,12 @@ export const ProductCategoryApi = {
// 新增产品分类
createProductCategory: async (data: ProductCategoryVO) => {
return await request.post({ url: `/erp/product-category/create`, data })
return await request.post({ url: `/erp/product-category/create`, data, params: getProductCategoryRequestParams(data) })
},
// 修改产品分类
updateProductCategory: async (data: ProductCategoryVO) => {
return await request.put({ url: `/erp/product-category/update`, data })
return await request.put({ url: `/erp/product-category/update`, data, params: getProductCategoryRequestParams(data) })
},
// 删除产品分类

@ -29,6 +29,26 @@ export interface ProductVO {
moldList?: any[]
}
export interface ErpProductCategoryProcessRouteItemRespVO {
id?: number
categoryId?: number
processRouteId?: number
processRouteItemId?: number
sort?: number
processParameterId?: number
processParameterCode?: string
processParameterName?: string
remark?: string
deviceId?: number | string
deviceName?: string
}
export interface ErpProductProcessRouteRespVO {
productId?: number
processRouteId?: number
processRouteName?: string
processRouteItems?: ErpProductCategoryProcessRouteItemRespVO[]
}
// ERP 产品 API
export const ProductApi = {
// 查询产品分页
@ -37,7 +57,7 @@ export const ProductApi = {
},
// 查询产品精简列表
getProductSimpleList: async (params?: { categoryId?: string | number }) => {
getProductSimpleList: async (params?: { categoryId?: string | number; categoryType?: number }) => {
return await request.get({ url: `/erp/product/simple-list-all`, params })
},
// 查询原料精简列表
@ -49,14 +69,19 @@ export const ProductApi = {
return await request.get({ url: `/erp/product/simple-list-order` })
},
// 查询所有商品精简列表
getMesProductSimpleList: async () => {
return await request.get({ url: `/erp/product/simple-list-product` })
getMesProductSimpleList: async (params?: { categoryType?: number }) => {
return await request.get({ url: `/erp/product/simple-list-product`, params })
},
// 查询备件精简列表
getComponentSimpleList: async () => {
return await request.get({ url: `/erp/product/simple-list-component` })
},
// 查询产品工艺路线快照
getProductProcessRoute: async (productId: number | string) => {
return await request.get<ErpProductProcessRouteRespVO>({ url: '/erp/product/get-process-route', params: { productId } })
},
// 查询产品详情
getProduct: async (id: number) => {
return await request.get({ url: `/erp/product/get?id=` + id })

@ -57,8 +57,8 @@ export const ProductUnitApi = {
return await request.get({ url: `/erp/product-unit/flag-list`})
},
// 下载用户导入模板
importUserTemplate: async () => {
// 下载产品主单位导入模板
importProductUnitTemplate: async () => {
return await request.download({ url: '/erp/product-unit/get-import-template' })
}
}

@ -2,13 +2,89 @@ import request from '@/config/axios'
// ERP 库存盘点单 VO
export interface StockCheckVO {
id: number // 出库编号
no: string // 出库单号
outTime: Date // 出库时间
id: number // 盘点编号
no: string // 盘点单号
checkTime: Date | string // 盘点时间
sourceType?: number | string // 生成来源类型1-按库存2-按产品
categoryType?: number | string // 分类
totalCount: number // 合计数量
totalPrice: number // 合计金额,单位:元
status: number // 状态
remark: string // 备注
checkStatus?: number | string // 盘点状态0-未盘点1-已盘点
auditUserId?: number // 审核人编号
auditUserName?: string // 审核人名称
remark?: string // 备注
fileUrl?: string // 附件 URL
creator?: string // 创建人
creatorName?: string // 创建人名称
createTime?: Date | string // 创建时间
productNames?: string // 产品信息
items?: StockCheckItemVO[] // 盘点项列表
approveRecords?: StockCheckApproveRecordVO[] // 审核记录
}
export interface StockCheckItemVO {
id?: number // 盘点项编号
warehouseId: number // 仓库编号
warehouseName?: string // 仓库名称
areaId?: number // 库区编号
areaName?: string // 库区名称
productId: number // 产品编号
productPrice: number // 产品单价
stockCount: number // 账面数量
actualCount: number // 实际数量
count: number // 盈亏数量
remark?: string // 备注
productName: string // 产品名称
productBarCode: string // 产品条码
productUnitName: string // 产品单位名称
purchaseUnitName?: string // 采购单位名称
}
export interface StockCheckRecordVO {
id: number
stockCheckId?: number
stockCheckItemId?: number
no?: string
checkTime?: Date | string
sourceType?: number | string
categoryType?: number | string
status?: number | string
checkStatus?: number | string
productId?: number
productName?: string
productBarCode?: string
barCode?: string
standard?: string
productUnitName?: string
purchaseUnitName?: string
unitName?: string
warehouseId?: number
warehouseName?: string
areaId?: number
areaName?: string
stockCount?: number | string
actualCount?: number | string
count?: number | string
remark?: string
creator?: string
creatorName?: string
createTime?: Date | string
[key: string]: any
}
export interface StockCheckApproveRecordVO {
id?: number // 编号
stockCheckId?: number // 盘点单编号
actionType?: string // 操作类型
fromStatus?: number // 变更前状态
toStatus?: number // 变更后状态
targetUserId?: number // 目标审核人编号
targetUserName?: string // 目标审核人名称
remark?: string // 备注
creator?: string // 操作人
creatorName?: string // 操作人名称
createTime?: Date | string // 创建时间
}
// ERP 库存盘点单 API
@ -18,11 +94,31 @@ export const StockCheckApi = {
return await request.get({ url: `/erp/stock-check/page`, params })
},
// 查询库存盘点记录分页
getStockCheckRecordPage: async (params: any) => {
return await request.get({ url: `/erp/stock-check/record-page`, params })
},
// 导出库存盘点记录 Excel
exportStockCheckRecord: async (params) => {
return await request.download({ url: `/erp/stock-check/record-export-excel`, params })
},
// 查询库存盘点单详情
getStockCheck: async (id: number) => {
return await request.get({ url: `/erp/stock-check/get?id=` + id })
},
// 按仓库/库区生成盘点项
generateItemsByLocation: async (data: any) => {
return await request.post({ url: `/erp/stock-check/generate-items/by-location`, data })
},
// 按产品生成盘点项
generateItemsByProduct: async (data: any) => {
return await request.post({ url: `/erp/stock-check/generate-items/by-product`, data })
},
// 新增库存盘点单
createStockCheck: async (data: StockCheckVO) => {
return await request.post({ url: `/erp/stock-check/create`, data })
@ -44,6 +140,16 @@ export const StockCheckApi = {
})
},
// 提交库存盘点单
submitStockCheck: async (data: { id: number; auditUserId?: number; remark?: string }) => {
return await request.put({ url: `/erp/stock-check/submit`, data })
},
// 审核库存盘点单
auditStockCheck: async (data: { id: number; status: number; remark?: string }) => {
return await request.put({ url: `/erp/stock-check/audit`, data })
},
// 删除库存盘点单
deleteStockCheck: async (ids: number[]) => {
return await request.delete({

@ -1,4 +1,21 @@
import request from '@/config/axios'
import qs from 'qs'
const normalizeStockQueryParams = (params: any) => {
if (!params) return params
const nextParams = { ...params }
if (Array.isArray(nextParams.statusList)) {
if (nextParams.statusList.length) {
nextParams.statusList = nextParams.statusList.join(',')
} else {
delete nextParams.statusList
}
}
return nextParams
}
const stockQueryParamsSerializer = (params: any) =>
qs.stringify(params, { allowDots: true, arrayFormat: 'repeat' })
// ERP 其它入库单 VO
export interface StockInVO {
@ -7,17 +24,37 @@ export interface StockInVO {
supplierId: number // 供应商编号
inTime: Date // 入库时间
inType: string //入库类型
stockUserId?: string // 经办人编号
totalCount: number // 合计数量
totalPrice: number // 合计金额,单位:元
status: number // 状态
remark: string // 备注
}
export interface StockInApproveRecordVO {
id: number
stockInId: number
actionType: string
fromStatus: number
toStatus: number
targetUserId: number
targetUserName: string
remark: string
creator: string
creatorName: string
createTime: string
}
// ERP 其它入库单 API
export const StockInApi = {
// 查询其它入库单分页
getStockInPage: async (params: any) => {
return await request.get({ url: `/erp/stock-in/page`, params })
const finalParams = normalizeStockQueryParams(params)
return await request.get({
url: `/erp/stock-in/page`,
params: finalParams,
paramsSerializer: stockQueryParamsSerializer
})
},
// 查询其它入库单详情
@ -38,7 +75,7 @@ export const StockInApi = {
// 更新其它入库单的状态
updateStockInStatus: async (id: number, status: number) => {
return await request.put({
url: `/erp/stock-in/update-status`,
url: `/erp/stock-in/update-mold-status`,
params: {
id,
status
@ -46,6 +83,21 @@ export const StockInApi = {
})
},
// 提交入库单审核
submitStockIn: async (data: { id: string; auditUserId?: string; remark?: string }) => {
return await request.put({ url: `/erp/stock-in/submit`, data })
},
// 审核入库单
auditStockIn: async (data: { id: string; status: string; remark?: string }) => {
return await request.put({ url: `/erp/stock-in/audit`, data })
},
// 查询入库单审核记录
getApproveRecordList: async (id: number) => {
return await request.get({ url: `/erp/stock-in/approve-record-list`, params: { id } })
},
// 删除其它入库单
deleteStockIn: async (ids: number[]) => {
return await request.delete({
@ -58,7 +110,12 @@ export const StockInApi = {
// 导出其它入库单 Excel
exportStockIn: async (params) => {
return await request.download({ url: `/erp/stock-in/export-excel`, params })
const finalParams = normalizeStockQueryParams(params)
return await request.download({
url: `/erp/stock-in/export-excel`,
params: finalParams,
paramsSerializer: stockQueryParamsSerializer
})
},
// 查询生产入库单分页

@ -1,39 +1,53 @@
import request from '@/config/axios'
// ERP 库存调度单 VO
export interface StockMoveVO {
id: number // 出库编号
no: string // 出库单号
outTime: Date // 出库时间
totalCount: number // 合计数量
totalPrice: number // 合计金额,单位:元
status: number // 状态
remark: string // 备注
id: number
no: string
categoryType?: number
outTime: Date
totalCount: number
totalPrice: number
status: number
auditUserId?: number
auditUserName?: string
approveRecords?: StockMoveApproveRecordVO[]
remark: string
}
// ERP 库存调度单 API
export interface StockMoveApproveRecordVO {
id?: number
stockMoveId?: number
actionType?: string
fromStatus?: number
toStatus?: number
targetUserId?: number
targetUserName?: string
remark?: string
creator?: string
creatorName?: string
createTime?: Date | string
}
export const StockMoveApi = {
// 查询库存调度单分页
getStockMovePage: async (params: any) => {
return await request.get({ url: `/erp/stock-move/page`, params })
},
// 查询库存调度单详情
getStockMove: async (id: number) => {
return await request.get({ url: `/erp/stock-move/get?id=` + id })
},
// 新增库存调度单
getProductStockList: async (productId: number) => {
return await request.get({ url: `/erp/stock-move/product-stock-list`, params: { productId } })
},
createStockMove: async (data: StockMoveVO) => {
return await request.post({ url: `/erp/stock-move/create`, data })
},
// 修改库存调度单
updateStockMove: async (data: StockMoveVO) => {
return await request.put({ url: `/erp/stock-move/update`, data })
},
// 更新库存调度单的状态
updateStockMoveStatus: async (id: number, status: number) => {
return await request.put({
url: `/erp/stock-move/update-status`,
@ -44,7 +58,14 @@ export const StockMoveApi = {
})
},
// 删除库存调度单
submitStockMove: async (data: { id: number; auditUserId?: number; remark?: string }) => {
return await request.put({ url: `/erp/stock-move/submit`, data })
},
auditStockMove: async (data: { id: number; status: number; remark?: string }) => {
return await request.put({ url: `/erp/stock-move/audit`, data })
},
deleteStockMove: async (ids: number[]) => {
return await request.delete({
url: `/erp/stock-move/delete`,
@ -54,7 +75,6 @@ export const StockMoveApi = {
})
},
// 导出库存调度单 Excel
exportStockMove: async (params) => {
return await request.download({ url: `/erp/stock-move/export-excel`, params })
}

@ -1,4 +1,21 @@
import request from '@/config/axios'
import qs from 'qs'
const normalizeStockQueryParams = (params: any) => {
if (!params) return params
const nextParams = { ...params }
if (Array.isArray(nextParams.statusList)) {
if (nextParams.statusList.length) {
nextParams.statusList = nextParams.statusList.join(',')
} else {
delete nextParams.statusList
}
}
return nextParams
}
const stockQueryParamsSerializer = (params: any) =>
qs.stringify(params, { allowDots: true, arrayFormat: 'repeat' })
// ERP 其它出库单 VO
export interface StockOutVO {
@ -7,17 +24,37 @@ export interface StockOutVO {
customerId: number // 客户编号
outTime: Date // 出库时间
outType: string //出库类型
stockUserId?: string
totalCount: number // 合计数量
totalPrice: number // 合计金额,单位:元
status: number // 状态
remark: string // 备注
}
export interface StockOutApproveRecordVO {
id: number
stockOutId: number
actionType: string
fromStatus: number
toStatus: number
targetUserId: number
targetUserName: string
remark: string
creator: string
creatorName: string
createTime: string
}
// ERP 其它出库单 API
export const StockOutApi = {
// 查询其它出库单分页
getStockOutPage: async (params: any) => {
return await request.get({ url: `/erp/stock-out/page`, params })
const finalParams = normalizeStockQueryParams(params)
return await request.get({
url: `/erp/stock-out/page`,
params: finalParams,
paramsSerializer: stockQueryParamsSerializer
})
},
// 查询其它出库单详情
@ -38,7 +75,7 @@ export const StockOutApi = {
// 更新其它出库单的状态
updateStockOutStatus: async (id: number, status: number) => {
return await request.put({
url: `/erp/stock-out/update-status`,
url: `/erp/stock-out/update-mold-status`,
params: {
id,
status
@ -46,6 +83,18 @@ export const StockOutApi = {
})
},
submitStockOut: async (data: { id: string; auditUserId?: string; remark?: string }) => {
return await request.put({ url: `/erp/stock-out/submit`, data })
},
auditStockOut: async (data: { id: string; status: string; remark?: string }) => {
return await request.put({ url: `/erp/stock-out/audit`, data })
},
getApproveRecordList: async (id: number) => {
return await request.get({ url: `/erp/stock-out/approve-record-list`, params: { id } })
},
// 删除其它出库单
deleteStockOut: async (ids: number[]) => {
return await request.delete({
@ -58,7 +107,12 @@ export const StockOutApi = {
// 导出其它出库单 Excel
exportStockOut: async (params) => {
return await request.download({ url: `/erp/stock-out/export-excel`, params })
const finalParams = normalizeStockQueryParams(params)
return await request.download({
url: `/erp/stock-out/export-excel`,
params: finalParams,
paramsSerializer: stockQueryParamsSerializer
})
},
// 查询其它出库单分页
getMesStockOutPage: async (params: any) => {

@ -0,0 +1,42 @@
import request from '@/config/axios'
// ERP 包装方案 VO
export interface PackagingSchemeVO {
id: number // 包装方案编号
code: string // 方案编码
name: string // 方案名称
packageQuantity: number // 每包数量(件)
palletPackageQuantity: number // 每托包数(包)
palletTotalQuantity: number // 每托总数量(件)
remark: string // 备注
status: number // 状态
createTime: string // 创建时间
}
// ERP 包装方案 API
export const PackagingSchemeApi = {
// 查询包装方案分页
getPackagingSchemePage: async (params: any) => {
return await request.get({ url: `/erp/packaging-scheme/page`, params })
},
// 查询包装方案详情
getPackagingScheme: async (id: number) => {
return await request.get({ url: `/erp/packaging-scheme/get?id=` + id })
},
// 新增包装方案
createPackagingScheme: async (data: PackagingSchemeVO) => {
return await request.post({ url: `/erp/packaging-scheme/create`, data })
},
// 修改包装方案
updatePackagingScheme: async (data: PackagingSchemeVO) => {
return await request.put({ url: `/erp/packaging-scheme/update`, data })
},
// 删除包装方案
deletePackagingScheme: async (id: number) => {
return await request.delete({ url: `/erp/packaging-scheme/delete?id=` + id })
}
}

@ -0,0 +1,46 @@
import request from '@/config/axios'
export interface PalletVO {
id?: number
code?: string
isCode?: boolean
palletType?: number | string
specification?: string
ratedLoadWeight?: number | string
unit?: string
status?: number | string
warehouseId?: number | string
areaId?: number | string
planCode?: string
productId?: number | string
productCount?: number | string
lockedPackageCount?: number | string
qrcode?: string
templateJson?: string | any
purchaseDate?: string
useDate?: string
remark?: string
createTime?: string
}
export const PalletApi = {
getPalletPage: async (params: any) => {
return await request.get({ url: `/erp/pallet/page`, params })
},
getPallet: async (id: number) => {
return await request.get({ url: `/erp/pallet/get?id=` + id })
},
createPallet: async (data: PalletVO) => {
return await request.post({ url: `/erp/pallet/create`, data })
},
updatePallet: async (data: PalletVO) => {
return await request.put({ url: `/erp/pallet/update`, data })
},
deletePallet: async (id: number) => {
return await request.delete({ url: `/erp/pallet/delete?id=` + id })
}
}

@ -2,15 +2,29 @@ import request from '@/config/axios'
// ERP 产品库存明细 VO
export interface StockRecordVO {
id: number // 编号
productId: number // 产品编号
warehouseId: number // 仓库编号
count: number // 出入库数量
totalCount: number // 总库存量
bizType: number // 业务类型
bizId: number // 业务编号
bizItemId: number // 业务项编号
bizNo: string // 业务单号
id: number
productId: number
bizDirection?: string
bizDocType?: number
categoryType?: number
warehouseId: number
areaId?: number
areaName?: string
count: number
totalCount: number
bizType: number
bizId: number
bizItemId: number
bizNo: string
createTime?: string
creator?: string
productName: string
categoryName: string
unitName: string
purchaseUnitName?: string
warehouseName: string
creatorName: string
recordTime?: string
}
// ERP 产品库存明细 API

@ -1,19 +1,126 @@
import request from '@/config/axios'
// ERP 产品库存 VO
export interface StockUnitStockVO {
unitId?: number
unitName?: string
count?: number
stockDisplay?: string
}
export interface ProductPackagingStockVO {
productId?: number
productName?: string
packagingSchemeId?: number
packagingSchemeName?: string
totalCount?: number
unitName?: string
stockDisplay?: string
packagingDisplay?: string
packageQuantity?: number
palletPackageQuantity?: number
palletTotalQuantity?: number
}
export interface ProductStockCardVO {
skuCount?: number
stockDisplay?: string
totalCount?: number
unitName?: string
packagingStocks?: ProductPackagingStockVO[]
todayFinishedInDisplay?: string
}
export interface UnitGroupedStockCardVO {
skuCount?: number
stockDisplay?: string
unitStocks?: StockUnitStockVO[]
}
export interface TodayInCardVO {
orderCount?: number
itemCount?: number
productStock?: ProductStockCardVO
materialStock?: UnitGroupedStockCardVO
sparePartStock?: UnitGroupedStockCardVO
productDisplay?: string
materialDisplay?: string
sparePartDisplay?: string
}
export interface TodayOutCardVO {
orderCount?: number
itemCount?: number
materialStock?: UnitGroupedStockCardVO
sparePartStock?: UnitGroupedStockCardVO
productStock?: ProductStockCardVO
materialDisplay?: string
sparePartDisplay?: string
productDisplay?: string
}
export interface StockStatisticsCardsRespVO {
productStock?: ProductStockCardVO
materialStock?: UnitGroupedStockCardVO
sparePartStock?: UnitGroupedStockCardVO
todayIn?: TodayInCardVO
todayOut?: TodayOutCardVO
}
export interface StockVO {
// 编号
id: number
// 产品编号
productId: number
name?: string
productName?: string
barCode?: string
categoryName?: string
unitName?: string
purchaseUnitName?: string
// 产品分类类型
categoryType?: number
// 仓库编号
warehouseId: number
warehouseName?: string
areaId?: number
areaName?: string
// 包装/换算规则
packagingRule?: string
// 库存展示
stockDisplay?: string
areaStocks?: Array<{
areaId?: number
areaName?: string
count?: number
packageCount?: number
baseCount?: number
stockDisplay?: string
}>
totalPackageCount?: number
totalBaseCount?: number
// 库存数量
count: number
lockedStockCount?: number
latestInTime?: number | string
lastInTime?: number | string
recentInTime?: number | string
latestStockInTime?: number | string
lastStockInTime?: number | string
latestOutTime?: number | string
lastOutTime?: number | string
recentOutTime?: number | string
latestStockOutTime?: number | string
lastStockOutTime?: number | string
}
// ERP 产品库存 API
export const StockApi = {
// 查询库存统计卡片
getStockStatisticsCards: async () => {
return await request.get<StockStatisticsCardsRespVO>({ url: `/erp/stock/statistics-cards` })
},
// 查询产品库存分页
getStockPage: async (params: any) => {
return await request.get({ url: `/erp/stock/page`, params })
@ -25,8 +132,8 @@ export const StockApi = {
},
// 查询产品库存详情
getStock2: async (productId: number, warehouseId: number) => {
return await request.get({ url: `/erp/stock/get`, params: { productId, warehouseId } })
getStock2: async (productId: number, warehouseId: number, areaId?: number) => {
return await request.get({ url: `/erp/stock/get`, params: { productId, warehouseId, areaId } })
},
// 获得产品库存数量

@ -4,6 +4,7 @@ import request from '@/config/axios'
export interface WarehouseVO {
id: number // 仓库编号
name: string // 仓库名称
categoryType?: number // 仓库分类
address: string // 仓库地址
sort: number // 排序
remark: string // 备注
@ -49,8 +50,8 @@ export const WarehouseApi = {
},
// 查询仓库精简列表
getWarehouseSimpleList: async () => {
return await request.get({ url: `/erp/warehouse/simple-list` })
getWarehouseSimpleList: async (params?: any) => {
return await request.get({ url: `/erp/warehouse/simple-list`, params })
},
// 查询仓库详情

@ -4,6 +4,10 @@ export interface WarehouseAreaVO {
id: number
warehouseId: number
areaCode: string
isCode?: boolean
qrcode?: string
qrcodeUrl?: string
templateJson?: string | any
areaName: string
areaSize: number
description: string

@ -26,6 +26,11 @@ export interface WeatherVO {
// 生产计划 API
export const HomeApi = {
// 是否允许免登录访问首页
isPublicAccessEnabled: async () => {
return await request.get<boolean>({ url: `/home/info/public-access-enabled` })
},
// 查询天气
getWeatherInfo: async () => {

@ -6,6 +6,7 @@ export interface DeviceVO {
id: number // ID
deviceCode: string // 设备编号
deviceName: string // 设备名称
boundLedgerName?: string // 已绑定的设备台账名称
deviceType: string // 设备类型
status: string // 状态
isConnect?: string | number
@ -19,15 +20,15 @@ export interface DeviceVO {
remark: string // 备注
isEnable: boolean // 是否启用
deviceModelId: number // 关联设备模型
protocol: string // 通讯协议
sampleCycle: number // 采集周期
url: string // 端点url
username: string // 用户名
protocol: string // 通讯协议
sampleCycle: number // 采集周期
url: string // 端点url
username: string // 用户名
password: string // 密码
certificate?: string // 证书
secretKey?: string // 秘钥
collectionTime?: string | number
images: string,//图片
images: string //图片
}
export interface DeviceConnectParams {
@ -79,14 +80,13 @@ export interface DeviceContactModelVO {
dataUnit?: string
}
// 物联设备 API
export const DeviceApi = {
// 查询物联设备分页
getDevicePage: async (params: any) => {
return await request.get({ url: `/iot/device/page`, params })
},
// 查询物联设备
// 查询物联设备
getDeviceList: async (params?: any) => {
return await request.get({ url: `/iot/device/deviceList`, params })
},
@ -104,7 +104,7 @@ export const DeviceApi = {
return await request.get({ url: `/iot/device/available-list` })
},
getAvailableListPage: async (params: any) => {
return await request.get({ url: `/iot/device/available-page` , params})
return await request.get({ url: `/iot/device/available-page`, params })
},
// 新增物联设备
createDevice: async (data: DeviceVO) => {
@ -112,7 +112,10 @@ export const DeviceApi = {
},
// 批量获取设备属性列表
getDeviceAttributeBatchList: async (params: { goviewId: number | string; orgId?: number | string }) => {
getDeviceAttributeBatchList: async (params: {
goviewId: number | string
orgId?: number | string
}) => {
return await request.get({ url: `/iot/device/device-attribute/batchList`, params })
},
// 修改物联设备
@ -163,7 +166,6 @@ export const DeviceApi = {
})
},
getHistoryAnalyse: async (params: HistoryRecordParams) => {
return await request.get({
url: `/iot/device/historyAnalyse`,
@ -181,7 +183,7 @@ export const DeviceApi = {
return await request.put({ url: `/iot/device/update-enabled`, data })
},
// ==================== 子表(设备属性) ====================
// ==================== 子表(设备属性) ====================
// 获得设备属性分页
getDeviceAttributePage: async (params) => {
@ -195,6 +197,10 @@ export const DeviceApi = {
getDeviceAttributeList: async (deviceId: number | string) => {
return await request.get({ url: `/iot/device/device-attribute/list?deviceId=` + deviceId })
},
// 下载设备属性导入模板
importDeviceAttributeTemplate: async () => {
return await request.download({ url: '/iot/device/device-attribute/get-import-template' })
},
getDeviceContactModelPage: async () => {
return await request.get({ url: `/iot/device-contact-model/page` })
@ -219,7 +225,7 @@ export const DeviceApi = {
return await request.download({ url: `/iot/device-contact-model/export-excel`, params })
},
// 获得设备属性
// 获得设备点位
getDeviceAttribute: async (id: number) => {
return await request.get({ url: `/iot/device-contact-model/get?id=` + id })
}

@ -1,37 +0,0 @@
import request from '@/config/axios'
export interface BannerVO {
id: number
title: string
picUrl: string
status: number
url: string
position: number
sort: number
memo: string
}
// 查询Banner管理列表
export const getBannerPage = async (params) => {
return await request.get({ url: `/promotion/banner/page`, params })
}
// 查询Banner管理详情
export const getBanner = async (id: number) => {
return await request.get({ url: `/promotion/banner/get?id=` + id })
}
// 新增Banner管理
export const createBanner = async (data: BannerVO) => {
return await request.post({ url: `/promotion/banner/create`, data })
}
// 修改Banner管理
export const updateBanner = async (data: BannerVO) => {
return await request.put({ url: `/promotion/banner/update`, data })
}
// 删除Banner管理
export const deleteBanner = async (id: number) => {
return await request.delete({ url: `/promotion/banner/delete?id=` + id })
}

@ -1,61 +0,0 @@
import request from '@/config/axios'
/**
*
*/
export interface BrandVO {
/**
*
*/
id?: number
/**
*
*/
name: string
/**
*
*/
picUrl: string
/**
*
*/
sort?: number
/**
*
*/
description?: string
/**
*
*/
status: number
}
// 创建商品品牌
export const createBrand = (data: BrandVO) => {
return request.post({ url: '/product/brand/create', data })
}
// 更新商品品牌
export const updateBrand = (data: BrandVO) => {
return request.put({ url: '/product/brand/update', data })
}
// 删除商品品牌
export const deleteBrand = (id: number) => {
return request.delete({ url: `/product/brand/delete?id=${id}` })
}
// 获得商品品牌
export const getBrand = (id: number) => {
return request.get({ url: `/product/brand/get?id=${id}` })
}
// 获得商品品牌列表
export const getBrandParam = (params: PageParam) => {
return request.get({ url: '/product/brand/page', params })
}
// 获得商品品牌精简信息列表
export const getSimpleBrandList = () => {
return request.get({ url: '/product/brand/list-all-simple' })
}

@ -1,56 +0,0 @@
import request from '@/config/axios'
/**
*
*/
export interface CategoryVO {
/**
*
*/
id?: number
/**
*
*/
parentId?: number
/**
*
*/
name: string
/**
*
*/
picUrl: string
/**
*
*/
sort: number
/**
*
*/
status: number
}
// 创建商品分类
export const createCategory = (data: CategoryVO) => {
return request.post({ url: '/product/category/create', data })
}
// 更新商品分类
export const updateCategory = (data: CategoryVO) => {
return request.put({ url: '/product/category/update', data })
}
// 删除商品分类
export const deleteCategory = (id: number) => {
return request.delete({ url: `/product/category/delete?id=${id}` })
}
// 获得商品分类
export const getCategory = (id: number) => {
return request.get({ url: `/product/category/get?id=${id}` })
}
// 获得商品分类列表
export const getCategoryList = (params: any) => {
return request.get({ url: '/product/category/list', params })
}

@ -1,49 +0,0 @@
import request from '@/config/axios'
export interface CommentVO {
id: number
userId: number
userNickname: string
userAvatar: string
anonymous: boolean
orderId: number
orderItemId: number
spuId: number
spuName: string
skuId: number
visible: boolean
scores: number
descriptionScores: number
benefitScores: number
content: string
picUrls: string
replyStatus: boolean
replyUserId: number
replyContent: string
replyTime: Date
}
// 查询商品评论列表
export const getCommentPage = async (params) => {
return await request.get({ url: `/product/comment/page`, params })
}
// 查询商品评论详情
export const getComment = async (id: number) => {
return await request.get({ url: `/product/comment/get?id=` + id })
}
// 添加自评
export const createComment = async (data: CommentVO) => {
return await request.post({ url: `/product/comment/create`, data })
}
// 显示 / 隐藏评论
export const updateCommentVisible = async (data: any) => {
return await request.put({ url: `/product/comment/update-visible`, data })
}
// 商家回复
export const replyComment = async (data: any) => {
return await request.put({ url: `/product/comment/reply`, data })
}

@ -1,12 +0,0 @@
import request from '@/config/axios'
export interface Favorite {
id?: number
userId?: string // 用户编号
spuId?: number | null // 商品 SPU 编号
}
// 获得 ProductFavorite 列表
export const getFavoritePage = (params: PageParam) => {
return request.get({ url: '/product/favorite/page', params })
}

@ -1,10 +0,0 @@
import request from '@/config/axios'
/**
*
*
* @param params
*/
export const getBrowseHistoryPage = (params: any) => {
return request.get({ url: '/product/browse-history/page', params })
}

@ -1,89 +0,0 @@
import request from '@/config/axios'
/**
*
*/
export interface PropertyVO {
id?: number
/** 名称 */
name: string
/** 备注 */
remark?: string
}
/**
*
*/
export interface PropertyValueVO {
id?: number
/** 属性项的编号 */
propertyId?: number
/** 名称 */
name: string
/** 备注 */
remark?: string
}
// ------------------------ 属性项 -------------------
// 创建属性项
export const createProperty = (data: PropertyVO) => {
return request.post({ url: '/product/property/create', data })
}
// 更新属性项
export const updateProperty = (data: PropertyVO) => {
return request.put({ url: '/product/property/update', data })
}
// 删除属性项
export const deleteProperty = (id: number) => {
return request.delete({ url: `/product/property/delete?id=${id}` })
}
// 获得属性项
export const getProperty = (id: number): Promise<PropertyVO> => {
return request.get({ url: `/product/property/get?id=${id}` })
}
// 获得属性项分页
export const getPropertyPage = (params: PageParam) => {
return request.get({ url: '/product/property/page', params })
}
// 获得属性项精简列表
export const getPropertySimpleList = (): Promise<PropertyVO[]> => {
return request.get({ url: '/product/property/simple-list' })
}
// ------------------------ 属性值 -------------------
// 获得属性值分页
export const getPropertyValuePage = (params: PageParam & any) => {
return request.get({ url: '/product/property/value/page', params })
}
// 获得属性值
export const getPropertyValue = (id: number): Promise<PropertyValueVO> => {
return request.get({ url: `/product/property/value/get?id=${id}` })
}
// 创建属性值
export const createPropertyValue = (data: PropertyValueVO) => {
return request.post({ url: '/product/property/value/create', data })
}
// 更新属性值
export const updatePropertyValue = (data: PropertyValueVO) => {
return request.put({ url: '/product/property/value/update', data })
}
// 删除属性值
export const deletePropertyValue = (id: number) => {
return request.delete({ url: `/product/property/value/delete?id=${id}` })
}
// 获得属性值精简列表
export const getPropertyValueSimpleList = (propertyId: number): Promise<PropertyValueVO[]> => {
return request.get({ url: '/product/property/value/simple-list', params: { propertyId } })
}

@ -1,111 +0,0 @@
import request from '@/config/axios'
export interface Property {
propertyId?: number // 属性编号
propertyName?: string // 属性名称
valueId?: number // 属性值编号
valueName?: string // 属性值名称
}
export interface Sku {
id?: number // 商品 SKU 编号
name?: string // 商品 SKU 名称
spuId?: number // SPU 编号
properties?: Property[] // 属性数组
price?: number | string // 商品价格
marketPrice?: number | string // 市场价
costPrice?: number | string // 成本价
barCode?: string // 商品条码
picUrl?: string // 图片地址
stock?: number // 库存
weight?: number // 商品重量单位kg 千克
volume?: number // 商品体积单位m^3 平米
firstBrokeragePrice?: number | string // 一级分销的佣金
secondBrokeragePrice?: number | string // 二级分销的佣金
salesCount?: number // 商品销量
}
export interface GiveCouponTemplate {
id?: number
name?: string // 优惠券名称
}
export interface Spu {
id?: number
name?: string // 商品名称
categoryId?: number // 商品分类
keyword?: string // 关键字
unit?: number | undefined // 单位
picUrl?: string // 商品封面图
sliderPicUrls?: string[] // 商品轮播图
introduction?: string // 商品简介
deliveryTypes?: number[] // 配送方式
deliveryTemplateId?: number | undefined // 运费模版
brandId?: number // 商品品牌编号
specType?: boolean // 商品规格
subCommissionType?: boolean // 分销类型
skus?: Sku[] // sku数组
description?: string // 商品详情
sort?: number // 商品排序
giveIntegral?: number // 赠送积分
virtualSalesCount?: number // 虚拟销量
price?: number // 商品价格
combinationPrice?: number // 商品拼团价格
seckillPrice?: number // 商品秒杀价格
salesCount?: number // 商品销量
marketPrice?: number // 市场价
costPrice?: number // 成本价
stock?: number // 商品库存
createTime?: Date // 商品创建时间
status?: number // 商品状态
}
// 获得 Spu 列表
export const getSpuPage = (params: PageParam) => {
return request.get({ url: '/product/spu/page', params })
}
// 获得 Spu 列表 tabsCount
export const getTabsCount = () => {
return request.get({ url: '/product/spu/get-count' })
}
// 创建商品 Spu
export const createSpu = (data: Spu) => {
return request.post({ url: '/product/spu/create', data })
}
// 更新商品 Spu
export const updateSpu = (data: Spu) => {
return request.put({ url: '/product/spu/update', data })
}
// 更新商品 Spu status
export const updateStatus = (data: { id: number; status: number }) => {
return request.put({ url: '/product/spu/update-status', data })
}
// 获得商品 Spu
export const getSpu = (id: number) => {
return request.get({ url: `/product/spu/get-detail?id=${id}` })
}
// 获得商品 Spu 详情列表
export const getSpuDetailList = (ids: number[]) => {
return request.get({ url: `/product/spu/list?spuIds=${ids}` })
}
// 删除商品 Spu
export const deleteSpu = (id: number) => {
return request.delete({ url: `/product/spu/delete?id=${id}` })
}
// 导出商品 Spu Excel
export const exportSpu = async (params) => {
return await request.download({ url: '/product/spu/export', params })
}
// 获得商品 SPU 精简列表
export const getSpuSimpleList = async () => {
return request.get({ url: '/product/spu/list-all-simple' })
}

@ -1,42 +0,0 @@
import request from '@/config/axios'
export interface ArticleVO {
id: number
categoryId: number
title: string
author: string
picUrl: string
introduction: string
browseCount: string
sort: number
status: number
spuId: number
recommendHot: boolean
recommendBanner: boolean
content: string
}
// 查询文章管理列表
export const getArticlePage = async (params: any) => {
return await request.get({ url: `/promotion/article/page`, params })
}
// 查询文章管理详情
export const getArticle = async (id: number) => {
return await request.get({ url: `/promotion/article/get?id=` + id })
}
// 新增文章管理
export const createArticle = async (data: ArticleVO) => {
return await request.post({ url: `/promotion/article/create`, data })
}
// 修改文章管理
export const updateArticle = async (data: ArticleVO) => {
return await request.put({ url: `/promotion/article/update`, data })
}
// 删除文章管理
export const deleteArticle = async (id: number) => {
return await request.delete({ url: `/promotion/article/delete?id=` + id })
}

@ -1,39 +0,0 @@
import request from '@/config/axios'
export interface ArticleCategoryVO {
id: number
name: string
picUrl: string
status: number
sort: number
}
// 查询文章分类列表
export const getArticleCategoryPage = async (params) => {
return await request.get({ url: `/promotion/article-category/page`, params })
}
// 查询文章分类精简信息列表
export const getSimpleArticleCategoryList = async () => {
return await request.get({ url: `/promotion/article-category/list-all-simple` })
}
// 查询文章分类详情
export const getArticleCategory = async (id: number) => {
return await request.get({ url: `/promotion/article-category/get?id=` + id })
}
// 新增文章分类
export const createArticleCategory = async (data: ArticleCategoryVO) => {
return await request.post({ url: `/promotion/article-category/create`, data })
}
// 修改文章分类
export const updateArticleCategory = async (data: ArticleCategoryVO) => {
return await request.put({ url: `/promotion/article-category/update`, data })
}
// 删除文章分类
export const deleteArticleCategory = async (id: number) => {
return await request.delete({ url: `/promotion/article-category/delete?id=` + id })
}

@ -1,68 +0,0 @@
import request from '@/config/axios'
import { Sku, Spu } from '@/api/mall/product/spu'
export interface BargainActivityVO {
id?: number
name?: string
startTime?: Date
endTime?: Date
status?: number
helpMaxCount?: number // 达到该人数,才能砍到低价
bargainCount?: number // 最大帮砍次数
totalLimitCount?: number // 最大购买次数
spuId: number
skuId: number
bargainFirstPrice: number // 砍价起始价格,单位分
bargainMinPrice: number // 砍价底价
stock: number // 活动库存
randomMinPrice?: number // 用户每次砍价的最小金额,单位:分
randomMaxPrice?: number // 用户每次砍价的最大金额,单位:分
}
// 砍价活动所需属性。选择的商品和属性的时候使用方便使用活动的通用封装
export interface BargainProductVO {
spuId: number
skuId: number
bargainFirstPrice: number // 砍价起始价格,单位分
bargainMinPrice: number // 砍价底价
stock: number // 活动库存
}
// 扩展 Sku 配置
export type SkuExtension = Sku & {
productConfig: BargainProductVO
}
export interface SpuExtension extends Spu {
skus: SkuExtension[] // 重写类型
}
// 查询砍价活动列表
export const getBargainActivityPage = async (params: any) => {
return await request.get({ url: '/promotion/bargain-activity/page', params })
}
// 查询砍价活动详情
export const getBargainActivity = async (id: number) => {
return await request.get({ url: '/promotion/bargain-activity/get?id=' + id })
}
// 新增砍价活动
export const createBargainActivity = async (data: BargainActivityVO) => {
return await request.post({ url: '/promotion/bargain-activity/create', data })
}
// 修改砍价活动
export const updateBargainActivity = async (data: BargainActivityVO) => {
return await request.put({ url: '/promotion/bargain-activity/update', data })
}
// 关闭砍价活动
export const closeBargainActivity = async (id: number) => {
return await request.put({ url: '/promotion/bargain-activity/close?id=' + id })
}
// 删除砍价活动
export const deleteBargainActivity = async (id: number) => {
return await request.delete({ url: '/promotion/bargain-activity/delete?id=' + id })
}

@ -1,14 +0,0 @@
import request from '@/config/axios'
export interface BargainHelpVO {
id: number
record: number
userId: number
reducePrice: number
endTime: Date
}
// 查询砍价记录列表
export const getBargainHelpPage = async (params) => {
return await request.get({ url: `/promotion/bargain-help/page`, params })
}

@ -1,19 +0,0 @@
import request from '@/config/axios'
export interface BargainRecordVO {
id: number
activityId: number
userId: number
spuId: number
skuId: number
bargainFirstPrice: number
bargainPrice: number
status: number
orderId: number
endTime: Date
}
// 查询砍价记录列表
export const getBargainRecordPage = async (params) => {
return await request.get({ url: `/promotion/bargain-record/page`, params })
}

@ -1,72 +0,0 @@
import request from '@/config/axios'
import { Sku, Spu } from '@/api/mall/product/spu'
export interface CombinationActivityVO {
id?: number
name?: string
spuId?: number
totalLimitCount?: number
singleLimitCount?: number
startTime?: Date
endTime?: Date
userSize?: number
totalCount?: number
successCount?: number
orderUserCount?: number
virtualGroup?: number
status?: number
limitDuration?: number
combinationPrice?: number
products: CombinationProductVO[]
}
// 拼团活动所需属性
export interface CombinationProductVO {
spuId: number
skuId: number
combinationPrice: number // 拼团价格
}
// 扩展 Sku 配置
export type SkuExtension = Sku & {
productConfig: CombinationProductVO
}
export interface SpuExtension extends Spu {
skus: SkuExtension[] // 重写类型
}
// 查询拼团活动列表
export const getCombinationActivityPage = async (params: any) => {
return await request.get({ url: '/promotion/combination-activity/page', params })
}
// 查询拼团活动详情
export const getCombinationActivity = async (id: number) => {
return await request.get({ url: '/promotion/combination-activity/get?id=' + id })
}
// 获得拼团活动列表,基于活动编号数组
export const getCombinationActivityListByIds = (ids: number[]) => {
return request.get({ url: `/promotion/combination-activity/list-by-ids?ids=${ids}` })
}
// 新增拼团活动
export const createCombinationActivity = async (data: CombinationActivityVO) => {
return await request.post({ url: '/promotion/combination-activity/create', data })
}
// 修改拼团活动
export const updateCombinationActivity = async (data: CombinationActivityVO) => {
return await request.put({ url: '/promotion/combination-activity/update', data })
}
// 关闭拼团活动
export const closeCombinationActivity = async (id: number) => {
return await request.put({ url: '/promotion/combination-activity/close?id=' + id })
}
// 删除拼团活动
export const deleteCombinationActivity = async (id: number) => {
return await request.delete({ url: '/promotion/combination-activity/delete?id=' + id })
}

@ -1,28 +0,0 @@
import request from '@/config/axios'
export interface CombinationRecordVO {
id: number // 拼团记录编号
activityId: number // 拼团活动编号
nickname: string // 用户昵称
avatar: string // 用户头像
headId: number // 团长编号
expireTime: string // 过期时间
userSize: number // 可参团人数
userCount: number // 已参团人数
status: number // 拼团状态
spuName: string // 商品名字
picUrl: string // 商品图片
virtualGroup: boolean // 是否虚拟成团
startTime: string // 开始时间 (订单付款后开始的时间)
endTime: string // 结束时间(成团时间/失败时间)
}
// 查询拼团记录列表
export const getCombinationRecordPage = async (params: any) => {
return await request.get({ url: '/promotion/combination-record/page', params })
}
// 获得拼团记录的概要信息
export const getCombinationRecordSummary = async () => {
return await request.get({ url: '/promotion/combination-record/get-summary' })
}

@ -1,26 +0,0 @@
import request from '@/config/axios'
// TODO @dhb52vo 缺少
// 删除优惠劵
export const deleteCoupon = async (id: number) => {
return request.delete({
url: `/promotion/coupon/delete?id=${id}`
})
}
// 获得优惠劵分页
export const getCouponPage = async (params: PageParam) => {
return request.get({
url: '/promotion/coupon/page',
params: params
})
}
// 发送优惠券
export const sendCoupon = async (data: any) => {
return request.post({
url: '/promotion/coupon/send',
data: data
})
}

@ -1,90 +0,0 @@
import request from '@/config/axios'
export interface CouponTemplateVO {
id: number
name: string
status: number
totalCount: number
takeLimitCount: number
takeType: number
usePrice: number
productScope: number
productScopeValues: number[]
validityType: number
validStartTime: Date
validEndTime: Date
fixedStartTerm: number
fixedEndTerm: number
discountType: number
discountPercent: number
discountPrice: number
discountLimitPrice: number
takeCount: number
useCount: number
}
// 创建优惠劵模板
export function createCouponTemplate(data: CouponTemplateVO) {
return request.post({
url: '/promotion/coupon-template/create',
data: data
})
}
// 更新优惠劵模板
export function updateCouponTemplate(data: CouponTemplateVO) {
return request.put({
url: '/promotion/coupon-template/update',
data: data
})
}
// 更新优惠劵模板的状态
export function updateCouponTemplateStatus(id: number, status: [0, 1]) {
const data = {
id,
status
}
return request.put({
url: '/promotion/coupon-template/update-status',
data: data
})
}
// 删除优惠劵模板
export function deleteCouponTemplate(id: number) {
return request.delete({
url: '/promotion/coupon-template/delete?id=' + id
})
}
// 获得优惠劵模板
export function getCouponTemplate(id: number) {
return request.get({
url: '/promotion/coupon-template/get?id=' + id
})
}
// 获得优惠劵模板分页
export function getCouponTemplatePage(params: PageParam) {
return request.get({
url: '/promotion/coupon-template/page',
params: params
})
}
// 获得优惠劵模板分页
export function getCouponTemplateList(ids: number[]): Promise<CouponTemplateVO[]> {
return request.get({
url: `/promotion/coupon-template/list?ids=${ids}`
})
}
// 导出优惠劵模板 Excel
export function exportCouponTemplateExcel(params: PageParam) {
return request.get({
url: '/promotion/coupon-template/export-excel',
params: params,
responseType: 'blob'
})
}

@ -1,60 +0,0 @@
import request from '@/config/axios'
import { Sku, Spu } from '@/api/mall/product/spu'
export interface DiscountActivityVO {
id?: number
spuId?: number
name?: string
status?: number
remark?: string
startTime?: Date
endTime?: Date
products?: DiscountProductVO[]
}
// 限时折扣相关 属性
export interface DiscountProductVO {
spuId: number
skuId: number
discountType: number
discountPercent: number
discountPrice: number
}
// 扩展 Sku 配置
export type SkuExtension = Sku & {
productConfig: DiscountProductVO
}
export interface SpuExtension extends Spu {
skus: SkuExtension[] // 重写类型
}
// 查询限时折扣活动列表
export const getDiscountActivityPage = async (params) => {
return await request.get({ url: '/promotion/discount-activity/page', params })
}
// 查询限时折扣活动详情
export const getDiscountActivity = async (id: number) => {
return await request.get({ url: '/promotion/discount-activity/get?id=' + id })
}
// 新增限时折扣活动
export const createDiscountActivity = async (data: DiscountActivityVO) => {
return await request.post({ url: '/promotion/discount-activity/create', data })
}
// 修改限时折扣活动
export const updateDiscountActivity = async (data: DiscountActivityVO) => {
return await request.put({ url: '/promotion/discount-activity/update', data })
}
// 关闭限时折扣活动
export const closeDiscountActivity = async (id: number) => {
return await request.put({ url: '/promotion/discount-activity/close?id=' + id })
}
// 删除限时折扣活动
export const deleteDiscountActivity = async (id: number) => {
return await request.delete({ url: '/promotion/discount-activity/delete?id=' + id })
}

@ -1,45 +0,0 @@
import request from '@/config/axios'
export interface DiyPageVO {
id?: number
templateId?: number
name: string
remark: string
previewPicUrls: string[]
property: string
}
// 查询装修页面列表
export const getDiyPagePage = async (params: any) => {
return await request.get({ url: `/promotion/diy-page/page`, params })
}
// 查询装修页面详情
export const getDiyPage = async (id: number) => {
return await request.get({ url: `/promotion/diy-page/get?id=` + id })
}
// 新增装修页面
export const createDiyPage = async (data: DiyPageVO) => {
return await request.post({ url: `/promotion/diy-page/create`, data })
}
// 修改装修页面
export const updateDiyPage = async (data: DiyPageVO) => {
return await request.put({ url: `/promotion/diy-page/update`, data })
}
// 删除装修页面
export const deleteDiyPage = async (id: number) => {
return await request.delete({ url: `/promotion/diy-page/delete?id=` + id })
}
// 获得装修页面属性
export const getDiyPageProperty = async (id: number) => {
return await request.get({ url: `/promotion/diy-page/get-property?id=` + id })
}
// 更新装修页面属性
export const updateDiyPageProperty = async (data: DiyPageVO) => {
return await request.put({ url: `/promotion/diy-page/update-property`, data })
}

@ -1,58 +0,0 @@
import request from '@/config/axios'
import { DiyPageVO } from '@/api/mall/promotion/diy/page'
export interface DiyTemplateVO {
id?: number
name: string
used: boolean
usedTime?: Date
remark: string
previewPicUrls: string[]
property: string
}
export interface DiyTemplatePropertyVO extends DiyTemplateVO {
pages: DiyPageVO[]
}
// 查询装修模板列表
export const getDiyTemplatePage = async (params: any) => {
return await request.get({ url: `/promotion/diy-template/page`, params })
}
// 查询装修模板详情
export const getDiyTemplate = async (id: number) => {
return await request.get({ url: `/promotion/diy-template/get?id=` + id })
}
// 新增装修模板
export const createDiyTemplate = async (data: DiyTemplateVO) => {
return await request.post({ url: `/promotion/diy-template/create`, data })
}
// 修改装修模板
export const updateDiyTemplate = async (data: DiyTemplateVO) => {
return await request.put({ url: `/promotion/diy-template/update`, data })
}
// 删除装修模板
export const deleteDiyTemplate = async (id: number) => {
return await request.delete({ url: `/promotion/diy-template/delete?id=` + id })
}
// 使用装修模板
export const useDiyTemplate = async (id: number) => {
return await request.put({ url: `/promotion/diy-template/use?id=` + id })
}
// 获得装修模板属性
export const getDiyTemplateProperty = async (id: number) => {
return await request.get<DiyTemplatePropertyVO>({
url: `/promotion/diy-template/get-property?id=` + id
})
}
// 更新装修模板属性
export const updateDiyTemplateProperty = async (data: DiyTemplateVO) => {
return await request.put({ url: `/promotion/diy-template/update-property`, data })
}

@ -1,39 +0,0 @@
import request from '@/config/axios'
export interface KeFuConversationRespVO {
id: number // 编号
userId: number // 会话所属用户
userAvatar: string // 会话所属用户头像
userNickname: string // 会话所属用户昵称
lastMessageTime: Date // 最后聊天时间
lastMessageContent: string // 最后聊天内容
lastMessageContentType: number // 最后发送的消息类型
adminPinned: boolean // 管理端置顶
userDeleted: boolean // 用户是否可见
adminDeleted: boolean // 管理员是否可见
adminUnreadMessageCount: number // 管理员未读消息数
createTime?: string // 创建时间
}
// 客服会话 API
export const KeFuConversationApi = {
// 获得客服会话列表
getConversationList: async () => {
return await request.get({ url: '/promotion/kefu-conversation/list' })
},
// 获得客服会话
getConversation: async (id: number) => {
return await request.get({ url: `/promotion/kefu-conversation/get?id=` + id })
},
// 客服会话置顶
updateConversationPinned: async (data: any) => {
return await request.put({
url: '/promotion/kefu-conversation/update-conversation-pinned',
data
})
},
// 删除客服会话
deleteConversation: async (id: number) => {
return await request.delete({ url: `/promotion/kefu-conversation/delete?id=${id}` })
}
}

@ -1,36 +0,0 @@
import request from '@/config/axios'
export interface KeFuMessageRespVO {
id: number // 编号
conversationId: number // 会话编号
senderId: number // 发送人编号
senderAvatar: string // 发送人头像
senderType: number // 发送人类型
receiverId: number // 接收人编号
receiverType: number // 接收人类型
contentType: number // 消息类型
content: string // 消息
readStatus: boolean // 是否已读
createTime: Date // 创建时间
}
// 客服会话 API
export const KeFuMessageApi = {
// 发送客服消息
sendKeFuMessage: async (data: any) => {
return await request.post({
url: '/promotion/kefu-message/send',
data
})
},
// 更新客服消息已读状态
updateKeFuMessageReadStatus: async (conversationId: number) => {
return await request.put({
url: '/promotion/kefu-message/update-read-status?conversationId=' + conversationId
})
},
// 获得消息列表(流式加载)
getKeFuMessageList: async (params: any) => {
return await request.get({ url: '/promotion/kefu-message/list', params })
}
}

@ -1,91 +0,0 @@
import request from '@/config/axios'
import { Sku, Spu } from '@/api/mall/product/spu' // 积分商城活动 VO
// 积分商城活动 VO
export interface PointActivityVO {
id: number // 积分商城活动编号
spuId: number // 积分商城活动商品
status: number // 活动状态
stock: number // 积分商城活动库存
totalStock: number // 积分商城活动总库存
remark?: string // 备注
sort: number // 排序
createTime: string // 创建时间
products: PointProductVO[] // 积分商城商品
// ========== 商品字段 ==========
spuName: string // 商品名称
picUrl: string // 商品主图
marketPrice: number // 商品市场价,单位:分
//======================= 显示所需兑换积分最少的 sku 信息 =======================
point: number // 兑换积分
price: number // 兑换金额,单位:分
}
// 秒杀活动所需属性
export interface PointProductVO {
id?: number // 积分商城商品编号
activityId?: number // 积分商城活动 id
spuId?: number // 商品 SPU 编号
skuId: number // 商品 SKU 编号
count: number // 可兑换数量
point: number // 兑换积分
price: number // 兑换金额,单位:分
stock: number // 积分商城商品库存
activityStatus?: number // 积分商城商品状态
}
// 扩展 Sku 配置
export type SkuExtension = Sku & {
productConfig: PointProductVO
}
export interface SpuExtension extends Spu {
skus: SkuExtension[] // 重写类型
}
export interface SpuExtension0 extends Spu {
pointStock: number // 积分商城活动库存
pointTotalStock: number // 积分商城活动总库存
point: number // 兑换积分
pointPrice: number // 兑换金额,单位:分
}
// 积分商城活动 API
export const PointActivityApi = {
// 查询积分商城活动分页
getPointActivityPage: async (params: any) => {
return await request.get({ url: `/promotion/point-activity/page`, params })
},
// 查询积分商城活动详情
getPointActivity: async (id: number) => {
return await request.get({ url: `/promotion/point-activity/get?id=` + id })
},
// 查询积分商城活动列表,基于活动编号数组
getPointActivityListByIds: async (ids: number[]) => {
return request.get({ url: `/promotion/point-activity/list-by-ids?ids=${ids}` })
},
// 新增积分商城活动
createPointActivity: async (data: PointActivityVO) => {
return await request.post({ url: `/promotion/point-activity/create`, data })
},
// 修改积分商城活动
updatePointActivity: async (data: PointActivityVO) => {
return await request.put({ url: `/promotion/point-activity/update`, data })
},
// 删除积分商城活动
deletePointActivity: async (id: number) => {
return await request.delete({ url: `/promotion/point-activity/delete?id=` + id })
},
// 关闭秒杀活动
closePointActivity: async (id: number) => {
return await request.put({ url: '/promotion/point-activity/close?id=' + id })
}
}

@ -1,58 +0,0 @@
import request from '@/config/axios'
export interface RewardActivityVO {
id?: number
name?: string
startTime?: Date
endTime?: Date
startAndEndTime?: Date[] // 只前端使用
remark?: string
conditionType?: number
productScope?: number
rules: RewardRule[]
// 如下仅用于表单,不提交
productScopeValues?: number[] // 商品范围:值为品类编号列表、商品编号列表
productCategoryIds?: number[]
productSpuIds?: number[]
}
// 优惠规则
export interface RewardRule {
limit?: number
discountPrice?: number
freeDelivery?: boolean
point: number
giveCouponTemplateCounts?: {
[key: number]: number
}
}
// 新增满减送活动
export const createRewardActivity = async (data: RewardActivityVO) => {
return await request.post({ url: '/promotion/reward-activity/create', data })
}
// 更新满减送活动
export const updateRewardActivity = async (data: RewardActivityVO) => {
return await request.put({ url: '/promotion/reward-activity/update', data })
}
// 查询满减送活动列表
export const getRewardActivityPage = async (params) => {
return await request.get({ url: '/promotion/reward-activity/page', params })
}
// 查询满减送活动详情
export const getReward = async (id: number) => {
return await request.get({ url: '/promotion/reward-activity/get?id=' + id })
}
// 删除满减送活动
export const deleteRewardActivity = async (id: number) => {
return await request.delete({ url: '/promotion/reward-activity/delete?id=' + id })
}
// 关闭满减送活动
export const closeRewardActivity = async (id: number) => {
return await request.put({ url: '/promotion/reward-activity/close?id=' + id })
}

@ -1,75 +0,0 @@
import request from '@/config/axios'
import { Sku, Spu } from '@/api/mall/product/spu'
export interface SeckillActivityVO {
id?: number
spuId?: number
name?: string
status?: number
remark?: string
startTime?: Date
endTime?: Date
sort?: number
configIds?: string
orderCount?: number
userCount?: number
totalPrice?: number
totalLimitCount?: number
singleLimitCount?: number
stock?: number
totalStock?: number
seckillPrice?: number
products?: SeckillProductVO[]
}
// 秒杀活动所需属性
export interface SeckillProductVO {
skuId: number
spuId: number
seckillPrice: number
stock: number
}
// 扩展 Sku 配置
export type SkuExtension = Sku & {
productConfig: SeckillProductVO
}
export interface SpuExtension extends Spu {
skus: SkuExtension[] // 重写类型
}
// 查询秒杀活动列表
export const getSeckillActivityPage = async (params) => {
return await request.get({ url: '/promotion/seckill-activity/page', params })
}
// 查询秒杀活动列表,基于活动编号数组
export const getSeckillActivityListByIds = (ids: number[]) => {
return request.get({ url: `/promotion/seckill-activity/list-by-ids?ids=${ids}` })
}
// 查询秒杀活动详情
export const getSeckillActivity = async (id: number) => {
return await request.get({ url: '/promotion/seckill-activity/get?id=' + id })
}
// 新增秒杀活动
export const createSeckillActivity = async (data: SeckillActivityVO) => {
return await request.post({ url: '/promotion/seckill-activity/create', data })
}
// 修改秒杀活动
export const updateSeckillActivity = async (data: SeckillActivityVO) => {
return await request.put({ url: '/promotion/seckill-activity/update', data })
}
// 关闭秒杀活动
export const closeSeckillActivity = async (id: number) => {
return await request.put({ url: '/promotion/seckill-activity/close?id=' + id })
}
// 删除秒杀活动
export const deleteSeckillActivity = async (id: number) => {
return await request.delete({ url: '/promotion/seckill-activity/delete?id=' + id })
}

@ -1,53 +0,0 @@
import request from '@/config/axios'
// 秒杀时段 VO
export interface SeckillConfigVO {
id: number // 编号
name: string // 秒杀时段名称
startTime: string // 开始时间点
endTime: string // 结束时间点
sliderPicUrls: string[] // 秒杀轮播图
status: number // 活动状态
}
// 秒杀时段 API
export const SeckillConfigApi = {
// 查询秒杀时段分页
getSeckillConfigPage: async (params: any) => {
return await request.get({ url: `/promotion/seckill-config/page`, params })
},
// 查询秒杀时段列表
getSimpleSeckillConfigList: async () => {
return await request.get({ url: `/promotion/seckill-config/list` })
},
// 查询秒杀时段详情
getSeckillConfig: async (id: number) => {
return await request.get({ url: `/promotion/seckill-config/get?id=` + id })
},
// 新增秒杀时段
createSeckillConfig: async (data: SeckillConfigVO) => {
return await request.post({ url: `/promotion/seckill-config/create`, data })
},
// 修改秒杀时段
updateSeckillConfig: async (data: SeckillConfigVO) => {
return await request.put({ url: `/promotion/seckill-config/update`, data })
},
// 删除秒杀时段
deleteSeckillConfig: async (id: number) => {
return await request.delete({ url: `/promotion/seckill-config/delete?id=` + id })
},
// 修改时段配置状态
updateSeckillConfigStatus: async (id: number, status: number) => {
const data = {
id,
status
}
return request.put({ url: '/promotion/seckill-config/update-status', data: data })
}
}

@ -1,5 +0,0 @@
/** 数据对照 Response VO */
export interface DataComparisonRespVO<T> {
value: T
reference: T
}

@ -1,123 +0,0 @@
import request from '@/config/axios'
import dayjs from 'dayjs'
import { DataComparisonRespVO } from '@/api/mall/statistics/common'
import { formatDate } from '@/utils/formatTime'
/** 会员分析 Request VO */
export interface MemberAnalyseReqVO {
times: dayjs.ConfigType[]
}
/** 会员分析 Response VO */
export interface MemberAnalyseRespVO {
visitUserCount: number
orderUserCount: number
payUserCount: number
atv: number
comparison: DataComparisonRespVO<MemberAnalyseComparisonRespVO>
}
/** 会员分析对照数据 Response VO */
export interface MemberAnalyseComparisonRespVO {
registerUserCount: number
visitUserCount: number
rechargeUserCount: number
}
/** 会员地区统计 Response VO */
export interface MemberAreaStatisticsRespVO {
areaId: number
areaName: string
userCount: number
orderCreateUserCount: number
orderPayUserCount: number
orderPayPrice: number
}
/** 会员性别统计 Response VO */
export interface MemberSexStatisticsRespVO {
sex: number
userCount: number
}
/** 会员统计 Response VO */
export interface MemberSummaryRespVO {
userCount: number
rechargeUserCount: number
rechargePrice: number
expensePrice: number
}
/** 会员终端统计 Response VO */
export interface MemberTerminalStatisticsRespVO {
terminal: number
userCount: number
}
/** 会员数量统计 Response VO */
export interface MemberCountRespVO {
/** 用户访问量 */
visitUserCount: string
/** 注册用户数量 */
registerUserCount: number
}
/** 会员注册数量 Response VO */
export interface MemberRegisterCountRespVO {
date: string
count: number
}
// 查询会员统计
export const getMemberSummary = () => {
return request.get<MemberSummaryRespVO>({
url: '/statistics/member/summary'
})
}
// 查询会员分析数据
export const getMemberAnalyse = (params: MemberAnalyseReqVO) => {
return request.get<MemberAnalyseRespVO>({
url: '/statistics/member/analyse',
params: { times: [formatDate(params.times[0]), formatDate(params.times[1])] }
})
}
// 按照省份,查询会员统计列表
export const getMemberAreaStatisticsList = () => {
return request.get<MemberAreaStatisticsRespVO[]>({
url: '/statistics/member/area-statistics-list'
})
}
// 按照性别,查询会员统计列表
export const getMemberSexStatisticsList = () => {
return request.get<MemberSexStatisticsRespVO[]>({
url: '/statistics/member/sex-statistics-list'
})
}
// 按照终端,查询会员统计列表
export const getMemberTerminalStatisticsList = () => {
return request.get<MemberTerminalStatisticsRespVO[]>({
url: '/statistics/member/terminal-statistics-list'
})
}
// 获得用户数量量对照
export const getUserCountComparison = () => {
return request.get<DataComparisonRespVO<MemberCountRespVO>>({
url: '/statistics/member/user-count-comparison'
})
}
// 获得会员注册数量列表
export const getMemberRegisterCountList = (
beginTime: dayjs.ConfigType,
endTime: dayjs.ConfigType
) => {
return request.get<MemberRegisterCountRespVO[]>({
url: '/statistics/member/register-count-list',
params: { times: [formatDate(beginTime), formatDate(endTime)] }
})
}

@ -1,12 +0,0 @@
import request from '@/config/axios'
/** 支付统计 */
export interface PaySummaryRespVO {
/** 充值金额,单位分 */
rechargePrice: number
}
/** 获取钱包充值金额 */
export const getWalletRechargePrice = async () => {
return await request.get<PaySummaryRespVO>({ url: `/statistics/pay/summary` })
}

@ -1,52 +0,0 @@
import request from '@/config/axios'
import { DataComparisonRespVO } from '@/api/mall/statistics/common'
export interface ProductStatisticsVO {
id: number
day: string
spuId: number
spuName: string
spuPicUrl: string
browseCount: number
browseUserCount: number
favoriteCount: number
cartCount: number
orderCount: number
orderPayCount: number
orderPayPrice: number
afterSaleCount: number
afterSaleRefundPrice: number
browseConvertPercent: number
}
// 商品统计 API
export const ProductStatisticsApi = {
// 获得商品统计分析
getProductStatisticsAnalyse: (params: any) => {
return request.get<DataComparisonRespVO<ProductStatisticsVO>>({
url: '/statistics/product/analyse',
params
})
},
// 获得商品状况明细
getProductStatisticsList: (params: any) => {
return request.get<ProductStatisticsVO[]>({
url: '/statistics/product/list',
params
})
},
// 导出获得商品状况明细 Excel
exportProductStatisticsExcel: (params: any) => {
return request.download({
url: '/statistics/product/export-excel',
params
})
},
// 获得商品排行榜分页
getProductStatisticsRankPage: async (params: any) => {
return await request.get({
url: `/statistics/product/rank-page`,
params
})
}
}

@ -1,119 +0,0 @@
import request from '@/config/axios'
import dayjs from 'dayjs'
import { formatDate } from '@/utils/formatTime'
import { DataComparisonRespVO } from '@/api/mall/statistics/common'
/** 交易统计 Response VO */
export interface TradeSummaryRespVO {
yesterdayOrderCount: number
monthOrderCount: number
yesterdayPayPrice: number
monthPayPrice: number
}
/** 交易状况 Request VO */
export interface TradeTrendReqVO {
times: [dayjs.ConfigType, dayjs.ConfigType]
}
/** 交易状况统计 Response VO */
export interface TradeTrendSummaryRespVO {
time: string
turnoverPrice: number
orderPayPrice: number
rechargePrice: number
expensePrice: number
walletPayPrice: number
brokerageSettlementPrice: number
afterSaleRefundPrice: number
}
/** 交易订单数量 Response VO */
export interface TradeOrderCountRespVO {
/** 待发货 */
undelivered?: number
/** 待核销 */
pickUp?: number
/** 退款中 */
afterSaleApply?: number
/** 提现待审核 */
auditingWithdraw?: number
}
/** 交易订单统计 Response VO */
export interface TradeOrderSummaryRespVO {
/** 支付订单商品数 */
orderPayCount?: number
/** 总支付金额,单位:分 */
orderPayPrice?: number
}
/** 订单量趋势统计 Response VO */
export interface TradeOrderTrendRespVO {
/** 日期 */
date: string
/** 订单数量 */
orderPayCount: number
/** 订单支付金额 */
orderPayPrice: number
}
// 查询交易统计
export const getTradeStatisticsSummary = () => {
return request.get<DataComparisonRespVO<TradeSummaryRespVO>>({
url: '/statistics/trade/summary'
})
}
// 获得交易状况统计
export const getTradeStatisticsAnalyse = (params: TradeTrendReqVO) => {
return request.get<DataComparisonRespVO<TradeTrendSummaryRespVO>>({
url: '/statistics/trade/analyse',
params: formatDateParam(params)
})
}
// 获得交易状况明细
export const getTradeStatisticsList = (params: TradeTrendReqVO) => {
return request.get<TradeTrendSummaryRespVO[]>({
url: '/statistics/trade/list',
params: formatDateParam(params)
})
}
// 导出交易状况明细
export const exportTradeStatisticsExcel = (params: TradeTrendReqVO) => {
return request.download({
url: '/statistics/trade/export-excel',
params: formatDateParam(params)
})
}
// 获得交易订单数量
export const getOrderCount = async () => {
return await request.get<TradeOrderCountRespVO>({ url: `/statistics/trade/order-count` })
}
// 获得交易订单数量对照
export const getOrderComparison = async () => {
return await request.get<DataComparisonRespVO<TradeOrderSummaryRespVO>>({
url: `/statistics/trade/order-comparison`
})
}
// 获得订单量趋势统计
export const getOrderCountTrendComparison = (
type: number,
beginTime: dayjs.ConfigType,
endTime: dayjs.ConfigType
) => {
return request.get<DataComparisonRespVO<TradeOrderTrendRespVO>[]>({
url: '/statistics/trade/order-count-trend',
params: { type, beginTime: formatDate(beginTime), endTime: formatDate(endTime) }
})
}
/** 时间参数需要格式化, 确保接口能识别 */
const formatDateParam = (params: TradeTrendReqVO) => {
return { times: [formatDate(params.times[0]), formatDate(params.times[1])] } as TradeTrendReqVO
}

@ -1,75 +0,0 @@
import request from '@/config/axios'
export interface TradeAfterSaleVO {
id?: number | null // 售后编号,主键自增
no?: string // 售后单号
status?: number | null // 退款状态
way?: number | null // 售后方式
type?: number | null // 售后类型
userId?: number | null // 用户编号
applyReason?: string // 申请原因
applyDescription?: string // 补充描述
applyPicUrls?: string[] // 补充凭证图片
orderId?: number | null // 交易订单编号
orderNo?: string // 订单流水号
orderItemId?: number | null // 交易订单项编号
spuId?: number | null // 商品 SPU 编号
spuName?: string // 商品 SPU 名称
skuId?: number | null // 商品 SKU 编号
properties?: ProductPropertiesVO[] // 属性数组
picUrl?: string // 商品图片
count?: number | null // 退货商品数量
auditTime?: Date // 审批时间
auditUserId?: number | null // 审批人
auditReason?: string // 审批备注
refundPrice?: number | null // 退款金额,单位:分。
payRefundId?: number | null // 支付退款编号
refundTime?: Date // 退款时间
logisticsId?: number | null // 退货物流公司编号
logisticsNo?: string // 退货物流单号
deliveryTime?: Date // 退货时间
receiveTime?: Date // 收货时间
receiveReason?: string // 收货备注
}
export interface ProductPropertiesVO {
propertyId?: number | null // 属性的编号
propertyName?: string // 属性的名称
valueId?: number | null //属性值的编号
valueName?: string // 属性值的名称
}
// 获得交易售后分页
export const getAfterSalePage = async (params) => {
return await request.get({ url: `/trade/after-sale/page`, params })
}
// 获得交易售后详情
export const getAfterSale = async (id: any) => {
return await request.get({ url: `/trade/after-sale/get-detail?id=${id}` })
}
// 同意售后
export const agree = async (id: any) => {
return await request.put({ url: `/trade/after-sale/agree?id=${id}` })
}
// 拒绝售后
export const disagree = async (data: any) => {
return await request.put({ url: `/trade/after-sale/disagree`, data })
}
// 确认收货
export const receive = async (id: any) => {
return await request.put({ url: `/trade/after-sale/receive?id=${id}` })
}
// 拒绝收货
export const refuse = async (id: any) => {
return await request.put({ url: `/trade/after-sale/refuse?id=${id}` })
}
// 确认退款
export const refund = async (id: any) => {
return await request.put({ url: `/trade/after-sale/refund?id=${id}` })
}

@ -1,11 +0,0 @@
import request from '@/config/axios'
// 查询佣金记录列表
export const getBrokerageRecordPage = async (params: any) => {
return await request.get({ url: `/trade/brokerage-record/page`, params })
}
// 查询佣金记录详情
export const getBrokerageRecord = async (id: number) => {
return await request.get({ url: `/trade/brokerage-record/get?id=` + id })
}

@ -1,39 +0,0 @@
import request from '@/config/axios'
export interface BrokerageUserVO {
id: number
bindUserId: number
bindUserTime: Date
brokerageEnabled: boolean
brokerageTime: Date
price: number
frozenPrice: number
nickname: string
avatar: string
}
// 查询分销用户列表
export const getBrokerageUserPage = async (params: any) => {
return await request.get({ url: `/trade/brokerage-user/page`, params })
}
// 查询分销用户详情
export const getBrokerageUser = async (id: number) => {
return await request.get({ url: `/trade/brokerage-user/get?id=` + id })
}
// 修改推广员
export const updateBindUser = async (data: any) => {
return await request.put({ url: `/trade/brokerage-user/update-bind-user`, data })
}
// 清除推广员
export const clearBindUser = async (data: any) => {
return await request.put({ url: `/trade/brokerage-user/clear-bind-user`, data })
}
// 修改推广资格
export const updateBrokerageEnabled = async (data: any) => {
return await request.put({ url: `/trade/brokerage-user/update-brokerage-enable`, data })
}

@ -1,39 +0,0 @@
import request from '@/config/axios'
export interface BrokerageWithdrawVO {
id: number
userId: number
price: number
feePrice: number
totalPrice: number
type: number
name: string
accountNo: string
bankName: string
bankAddress: string
accountQrCodeUrl: string
status: number
auditReason: string
auditTime: Date
remark: string
}
// 查询佣金提现列表
export const getBrokerageWithdrawPage = async (params: any) => {
return await request.get({ url: `/trade/brokerage-withdraw/page`, params })
}
// 查询佣金提现详情
export const getBrokerageWithdraw = async (id: number) => {
return await request.get({ url: `/trade/brokerage-withdraw/get?id=` + id })
}
// 佣金提现 - 通过申请
export const approveBrokerageWithdraw = async (id: number) => {
return await request.put({ url: `/trade/brokerage-withdraw/approve?id=` + id })
}
// 审核佣金提现 - 驳回申请
export const rejectBrokerageWithdraw = async (data: BrokerageWithdrawVO) => {
return await request.put({ url: `/trade/brokerage-withdraw/reject`, data })
}

@ -1,23 +0,0 @@
import request from '@/config/axios'
export interface ConfigVO {
brokerageEnabled: boolean
brokerageEnabledCondition: number
brokerageBindMode: number
brokeragePosterUrls: string
brokerageFirstPercent: number
brokerageSecondPercent: number
brokerageWithdrawMinPrice: number
brokerageFrozenDays: number
brokerageWithdrawTypes: string
}
// 查询交易中心配置详情
export const getTradeConfig = async () => {
return await request.get({ url: `/trade/config/get` })
}
// 保存交易中心配置
export const saveTradeConfig = async (data: ConfigVO) => {
return await request.put({ url: `/trade/config/save`, data })
}

@ -1,45 +0,0 @@
import request from '@/config/axios'
export interface DeliveryExpressVO {
id: number
code: string
name: string
logo: string
sort: number
status: number
}
// 查询快递公司列表
export const getDeliveryExpressPage = async (params: PageParam) => {
return await request.get({ url: '/trade/delivery/express/page', params })
}
// 查询快递公司详情
export const getDeliveryExpress = async (id: number) => {
return await request.get({ url: '/trade/delivery/express/get?id=' + id })
}
// 获得快递公司精简信息列表
export const getSimpleDeliveryExpressList = () => {
return request.get({ url: '/trade/delivery/express/list-all-simple' })
}
// 新增快递公司
export const createDeliveryExpress = async (data: DeliveryExpressVO) => {
return await request.post({ url: '/trade/delivery/express/create', data })
}
// 修改快递公司
export const updateDeliveryExpress = async (data: DeliveryExpressVO) => {
return await request.put({ url: '/trade/delivery/express/update', data })
}
// 删除快递公司
export const deleteDeliveryExpress = async (id: number) => {
return await request.delete({ url: '/trade/delivery/express/delete?id=' + id })
}
// 导出快递公司 Excel
export const exportDeliveryExpressApi = async (params) => {
return await request.download({ url: '/trade/delivery/express/export-excel', params })
}

@ -1,54 +0,0 @@
import request from '@/config/axios'
export interface DeliveryExpressTemplateVO {
id: number
name: string
chargeMode: number
sort: number
templateCharge: ExpressTemplateChargeVO[]
templateFree: ExpressTemplateFreeVO[]
}
export declare type ExpressTemplateChargeVO = {
areaIds: number[]
startCount: number
startPrice: number
extraCount: number
extraPrice: number
}
export declare type ExpressTemplateFreeVO = {
areaIds: number[]
freeCount: number
freePrice: number
}
// 查询快递运费模板列表
export const getDeliveryExpressTemplatePage = async (params: PageParam) => {
return await request.get({ url: '/trade/delivery/express-template/page', params })
}
// 查询快递运费模板详情
export const getDeliveryExpressTemplate = async (id: number) => {
return await request.get({ url: '/trade/delivery/express-template/get?id=' + id })
}
// 查询快递运费模板详情
export const getSimpleTemplateList = async () => {
return await request.get({ url: '/trade/delivery/express-template/list-all-simple' })
}
// 新增快递运费模板
export const createDeliveryExpressTemplate = async (data: DeliveryExpressTemplateVO) => {
return await request.post({ url: '/trade/delivery/express-template/create', data })
}
// 修改快递运费模板
export const updateDeliveryExpressTemplate = async (data: DeliveryExpressTemplateVO) => {
return await request.put({ url: '/trade/delivery/express-template/update', data })
}
// 删除快递运费模板
export const deleteDeliveryExpressTemplate = async (id: number) => {
return await request.delete({ url: '/trade/delivery/express-template/delete?id=' + id })
}

@ -1,52 +0,0 @@
import request from '@/config/axios'
export interface DeliveryPickUpStoreVO {
id: number
name: string
introduction: string
phone: string
areaId: number
detailAddress: string
logo: string
openingTime: string
closingTime: string
latitude: number
longitude: number
status: number
verifyUserIds: number[] // 绑定用户编号组数
}
// 查询自提门店列表
export const getDeliveryPickUpStorePage = async (params: any) => {
return await request.get({ url: '/trade/delivery/pick-up-store/page', params })
}
// 查询自提门店详情
export const getDeliveryPickUpStore = async (id: number) => {
return await request.get({ url: '/trade/delivery/pick-up-store/get?id=' + id })
}
// 查询自提门店精简列表
export const getSimpleDeliveryPickUpStoreList = async (): Promise<DeliveryPickUpStoreVO[]> => {
return await request.get({ url: '/trade/delivery/pick-up-store/simple-list' })
}
// 新增自提门店
export const createDeliveryPickUpStore = async (data: DeliveryPickUpStoreVO) => {
return await request.post({ url: '/trade/delivery/pick-up-store/create', data })
}
// 修改自提门店
export const updateDeliveryPickUpStore = async (data: DeliveryPickUpStoreVO) => {
return await request.put({ url: '/trade/delivery/pick-up-store/update', data })
}
// 删除自提门店
export const deleteDeliveryPickUpStore = async (id: number) => {
return await request.delete({ url: '/trade/delivery/pick-up-store/delete?id=' + id })
}
// 绑定自提店员
export const bindStoreStaffId = async (data: any) => {
return await request.post({ url: '/trade/delivery/pick-up-store/bind', data })
}

@ -1,188 +0,0 @@
import request from '@/config/axios'
export interface OrderVO {
// ========== 订单基本信息 ==========
id?: number | null // 订单编号
no?: string // 订单流水号
createTime?: Date | null // 下单时间
type?: number | null // 订单类型
terminal?: number | null // 订单来源
userId?: number | null // 用户编号
userIp?: string // 用户 IP
userRemark?: string // 用户备注
status?: number | null // 订单状态
productCount?: number | null // 购买的商品数量
finishTime?: Date | null // 订单完成时间
cancelTime?: Date | null // 订单取消时间
cancelType?: number | null // 取消类型
remark?: string // 商家备注
// ========== 价格 + 支付基本信息 ==========
payOrderId?: number | null // 支付订单编号
payStatus?: boolean // 是否已支付
payTime?: Date | null // 付款时间
payChannelCode?: string // 支付渠道
totalPrice?: number | null // 商品原价(总)
discountPrice?: number | null // 订单优惠(总)
deliveryPrice?: number | null // 运费金额
adjustPrice?: number | null // 订单调价(总)
payPrice?: number | null // 应付金额(总)
// ========== 收件 + 物流基本信息 ==========
deliveryType?: number | null // 发货方式
pickUpStoreId?: number // 自提门店编号
pickUpVerifyCode?: string // 自提核销码
deliveryTemplateId?: number | null // 配送模板编号
logisticsId?: number | null // 发货物流公司编号
logisticsNo?: string // 发货物流单号
deliveryTime?: Date | null // 发货时间
receiveTime?: Date | null // 收货时间
receiverName?: string // 收件人名称
receiverMobile?: string // 收件人手机
receiverPostCode?: number | null // 收件人邮编
receiverAreaId?: number | null // 收件人地区编号
receiverAreaName?: string //收件人地区名字
receiverDetailAddress?: string // 收件人详细地址
// ========== 售后基本信息 ==========
afterSaleStatus?: number | null // 售后状态
refundPrice?: number | null // 退款金额
// ========== 营销基本信息 ==========
couponId?: number | null // 优惠劵编号
couponPrice?: number | null // 优惠劵减免金额
pointPrice?: number | null // 积分抵扣的金额
vipPrice?: number | null // VIP 减免金额
items?: OrderItemRespVO[] // 订单项列表
// 下单用户信息
user?: {
id?: number | null
nickname?: string
avatar?: string
}
// 推广用户信息
brokerageUser?: {
id?: number | null
nickname?: string
avatar?: string
}
// 订单操作日志
logs?: OrderLogRespVO[]
}
export interface OrderLogRespVO {
content?: string
createTime?: Date
userType?: number
}
export interface OrderItemRespVO {
// ========== 订单项基本信息 ==========
id?: number | null // 编号
userId?: number | null // 用户编号
orderId?: number | null // 订单编号
// ========== 商品基本信息 ==========
spuId?: number | null // 商品 SPU 编号
spuName?: string //商品 SPU 名称
skuId?: number | null // 商品 SKU 编号
picUrl?: string //商品图片
count?: number | null //购买数量
// ========== 价格 + 支付基本信息 ==========
originalPrice?: number | null //商品原价(总)
originalUnitPrice?: number | null //商品原价(单)
discountPrice?: number | null //商品优惠(总)
payPrice?: number | null //商品实付金额(总)
orderPartPrice?: number | null //子订单分摊金额(总)
orderDividePrice?: number | null //分摊后子订单实付金额(总)
// ========== 营销基本信息 ==========
// TODO 芋艿:在捉摸一下
// ========== 售后基本信息 ==========
afterSaleStatus?: number | null // 售后状态
properties?: ProductPropertiesVO[] //属性数组
}
export interface ProductPropertiesVO {
propertyId?: number | null // 属性的编号
propertyName?: string // 属性的名称
valueId?: number | null //属性值的编号
valueName?: string // 属性值的名称
}
/** 交易订单统计 */
export interface TradeOrderSummaryRespVO {
/** 订单数量 */
orderCount?: number
/** 订单金额 */
orderPayPrice?: string
/** 退款单数 */
afterSaleCount?: number
/** 退款金额 */
afterSalePrice?: string
}
// 查询交易订单列表
export const getOrderPage = async (params: any) => {
return await request.get({ url: `/trade/order/page`, params })
}
// 查询交易订单统计
export const getOrderSummary = async (params: any) => {
return await request.get<TradeOrderSummaryRespVO>({ url: `/trade/order/summary`, params })
}
// 查询交易订单详情
export const getOrder = async (id: number | null) => {
return await request.get({ url: `/trade/order/get-detail?id=` + id })
}
// 查询交易订单物流详情
export const getExpressTrackList = async (id: number | null) => {
return await request.get({ url: `/trade/order/get-express-track-list?id=` + id })
}
export interface DeliveryVO {
id?: number // 订单编号
logisticsId: number | null // 物流公司编号
logisticsNo: string // 物流编号
}
// 订单发货
export const deliveryOrder = async (data: DeliveryVO) => {
return await request.put({ url: `/trade/order/delivery`, data })
}
// 订单备注
export const updateOrderRemark = async (data: any) => {
return await request.put({ url: `/trade/order/update-remark`, data })
}
// 订单调价
export const updateOrderPrice = async (data: any) => {
return await request.put({ url: `/trade/order/update-price`, data })
}
// 修改订单地址
export const updateOrderAddress = async (data: any) => {
return await request.put({ url: `/trade/order/update-address`, data })
}
// 订单核销
export const pickUpOrder = async (id: number) => {
return await request.put({ url: `/trade/order/pick-up-by-id?id=${id}` })
}
// 订单核销
export const pickUpOrderByVerifyCode = async (pickUpVerifyCode: string) => {
return await request.put({
url: `/trade/order/pick-up-by-verify-code`,
params: { pickUpVerifyCode }
})
}
// 查询核销码对应的订单
export const getOrderByPickUpVerifyCode = async (pickUpVerifyCode: string) => {
return await request.get<OrderVO>({
url: `/trade/order/get-by-pick-up-verify-code`,
params: { pickUpVerifyCode }
})
}

@ -1,15 +0,0 @@
import request from '@/config/axios'
export interface AddressVO {
id: number
name: string
mobile: string
areaId: number
detailAddress: string
defaultStatus: boolean
}
// 查询用户收件地址列表
export const getAddressList = async (params) => {
return await request.get({ url: `/member/address/list`, params })
}

@ -1,19 +0,0 @@
import request from '@/config/axios'
export interface ConfigVO {
id: number
pointTradeDeductEnable: number
pointTradeDeductUnitPrice: number
pointTradeDeductMaxPrice: number
pointTradeGivePoint: number
}
// 查询积分设置详情
export const getConfig = async () => {
return await request.get({ url: `/member/config/get` })
}
// 新增修改积分设置
export const saveConfig = async (data: ConfigVO) => {
return await request.put({ url: `/member/config/save`, data })
}

@ -1,22 +0,0 @@
import request from '@/config/axios'
export interface ExperienceRecordVO {
id: number
userId: number
bizId: string
bizType: number
title: string
description: string
experience: number
totalExperience: number
}
// 查询会员经验记录列表
export const getExperienceRecordPage = async (params) => {
return await request.get({ url: `/member/experience-record/page`, params })
}
// 查询会员经验记录详情
export const getExperienceRecord = async (id: number) => {
return await request.get({ url: `/member/experience-record/get?id=` + id })
}

@ -1,38 +0,0 @@
import request from '@/config/axios'
export interface GroupVO {
id: number
name: string
remark: string
status: number
}
// 查询用户分组列表
export const getGroupPage = async (params: any) => {
return await request.get({ url: `/member/group/page`, params })
}
// 查询用户分组详情
export const getGroup = async (id: number) => {
return await request.get({ url: `/member/group/get?id=` + id })
}
// 新增用户分组
export const createGroup = async (data: GroupVO) => {
return await request.post({ url: `/member/group/create`, data })
}
// 查询用户分组 - 精简信息列表
export const getSimpleGroupList = async () => {
return await request.get({ url: `/member/group/list-all-simple` })
}
// 修改用户分组
export const updateGroup = async (data: GroupVO) => {
return await request.put({ url: `/member/group/update`, data })
}
// 删除用户分组
export const deleteGroup = async (id: number) => {
return await request.delete({ url: `/member/group/delete?id=` + id })
}

@ -1,42 +0,0 @@
import request from '@/config/axios'
export interface LevelVO {
id: number
name: string
experience: number
value: number
discountPercent: number
icon: string
bgUrl: string
status: number
}
// 查询会员等级列表
export const getLevelList = async (params) => {
return await request.get({ url: `/member/level/list`, params })
}
// 查询会员等级详情
export const getLevel = async (id: number) => {
return await request.get({ url: `/member/level/get?id=` + id })
}
// 查询会员等级 - 精简信息列表
export const getSimpleLevelList = async () => {
return await request.get({ url: `/member/level/list-all-simple` })
}
// 新增会员等级
export const createLevel = async (data: LevelVO) => {
return await request.post({ url: `/member/level/create`, data })
}
// 修改会员等级
export const updateLevel = async (data: LevelVO) => {
return await request.put({ url: `/member/level/update`, data })
}
// 删除会员等级
export const deleteLevel = async (id: number) => {
return await request.delete({ url: `/member/level/delete?id=` + id })
}

@ -1,18 +0,0 @@
import request from '@/config/axios'
export interface RecordVO {
id: number
bizId: string
bizType: string
title: string
description: string
point: number
totalPoint: number
userId: number
createDate: Date
}
// 查询用户积分记录列表
export const getRecordPage = async (params) => {
return await request.get({ url: `/member/point/record/page`, params })
}

@ -1,34 +0,0 @@
import request from '@/config/axios'
export interface SignInConfigVO {
id?: number
day?: number
point?: number
experience?: number
status?: number
}
// 查询积分签到规则列表
export const getSignInConfigList = async () => {
return await request.get({ url: `/member/sign-in/config/list` })
}
// 查询积分签到规则详情
export const getSignInConfig = async (id: number) => {
return await request.get({ url: `/member/sign-in/config/get?id=` + id })
}
// 新增积分签到规则
export const createSignInConfig = async (data: SignInConfigVO) => {
return await request.post({ url: `/member/sign-in/config/create`, data })
}
// 修改积分签到规则
export const updateSignInConfig = async (data: SignInConfigVO) => {
return await request.put({ url: `/member/sign-in/config/update`, data })
}
// 删除积分签到规则
export const deleteSignInConfig = async (id: number) => {
return await request.delete({ url: `/member/sign-in/config/delete?id=` + id })
}

@ -1,13 +0,0 @@
import request from '@/config/axios'
export interface SignInRecordVO {
id: number
userId: number
day: number
point: number
}
// 查询用户签到积分列表
export const getSignInRecordPage = async (params) => {
return await request.get({ url: `/member/sign-in/record/page`, params })
}

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

Loading…
Cancel
Save