Compare commits

...

217 Commits
master ... gyq

Author SHA1 Message Date
gyq 2432c53a73 更新优化 2025-11-06 09:58:05 +08:00
gyq 1a4a8515c3 Merge branch 'ymf' of https://newgitea.sxczgkj.cn/czg_team/cashier-web into gyq 2025-11-05 09:20:48 +08:00
gyq c2b84eae75 优化 2025-11-05 09:20:43 +08:00
YeMingfei666 6467e7767f 路由模式修改为最开始的hash模式解决和后端请求地址冲突问题 2025-10-31 15:17:23 +08:00
gyq 421fad369c 优化修复 2025-10-30 13:58:14 +08:00
gyq c1d61ad05b 优化 2025-10-30 10:33:25 +08:00
gyq da0ec82aa0 更换菜单图标 2025-10-29 17:45:38 +08:00
gyq e463ca4802 优化 2025-10-29 17:01:41 +08:00
gyq fc9c395526 优化开发版快捷登录 2025-10-29 17:00:18 +08:00
gyq 64fc3f133c 优化 2025-10-29 16:31:59 +08:00
gyq 7b0678ad4e 优化分销 2025-10-29 15:16:08 +08:00
gyq 2d35ab3b7d 完善分销功能 2025-10-28 17:34:58 +08:00
gyq 0cafd8651b 新增分销配置 2025-10-27 13:29:15 +08:00
gyq 1e85fd06c8 优化去除会员折扣字样 2025-10-24 14:41:13 +08:00
gyq f518d3d76a 优化 2025-10-24 14:19:01 +08:00
gyq 99881f4d97 优化新增点单智能推荐 2025-10-23 11:25:20 +08:00
gyq dae7ced23c 新增限时折扣模块 2025-10-22 16:55:19 +08:00
gyq 71c852fcaa 增加券兑换码 2025-10-22 11:49:04 +08:00
gyq 695898484e 更新 2025-10-22 10:34:16 +08:00
gyq d99c6bf261 Merge branch 'ymf' of https://newgitea.sxczgkj.cn/czg_team/cashier-web into gyq 2025-10-21 10:36:36 +08:00
gyq 1721203610 更新优化 2025-10-21 10:36:29 +08:00
YeMingfei666 a2e1300626 更新计算方法,添加新图标 2025-10-20 17:19:36 +08:00
gyq dc0cd2076c Merge branch 'ymf' of https://newgitea.sxczgkj.cn/czg_team/cashier-web into gyq 2025-10-17 11:32:29 +08:00
YeMingfei666 696a1735db 提交测试 2025-10-17 11:32:13 +08:00
YeMingfei666 865b7f0d1f fix: 关闭提交校验测试 2025-10-17 11:31:49 +08:00
gyq 6fc5bd013c Merge branch 'ymf' of https://newgitea.sxczgkj.cn/czg_team/cashier-web into gyq 2025-10-17 11:29:35 +08:00
gyq 44482d9dc9 add: 增加新功能 2025-10-17 11:28:41 +08:00
YeMingfei666 1329891ded fix: 生日有礼修改 2025-10-17 11:28:24 +08:00
YeMingfei666 46270cf7cc fix: 生日有礼更新 2025-10-15 16:36:40 +08:00
YeMingfei666 36e14ed434 add: 增加生日有礼页面 2025-10-15 15:47:58 +08:00
YeMingfei666 056992c8a0 fix: 增加生日有礼跳转 2025-10-15 10:49:33 +08:00
YeMingfei666 64b13d543f fix: 删除无用文件 2025-10-15 10:49:08 +08:00
YeMingfei666 bb47531a2b fix: 修复购物车订单计算报错问题 2025-10-15 10:48:56 +08:00
YeMingfei666 6f64dafab7 add: 增加生日有礼页面 2025-10-15 10:33:59 +08:00
YeMingfei666 8b1cb63651 fix: 增加活动满减功能测试,备份之前的结算文件 2025-10-15 10:33:06 +08:00
YeMingfei666 1c6739532a fix: 已选券券类型显示修复 2025-10-15 10:32:25 +08:00
gyq 0405a0fb99 Merge branch 'ymf' of https://newgitea.sxczgkj.cn/czg_team/cashier-web into gyq 2025-10-14 11:40:50 +08:00
gyq 31f89109e6 add: 新增消费返现 2025-10-14 11:40:36 +08:00
YeMingfei666 93e290fbaf fix: 优惠券方法更新 2025-10-14 11:40:25 +08:00
YeMingfei666 cd351be6d0 fix: 问题修复 2025-10-13 11:19:26 +08:00
YeMingfei666 b4b87218d1 fix: 修改订单结算文字,接口404,修复商品券满减门槛判断 2025-10-13 11:19:03 +08:00
gyq b65955f2cc Merge branch 'ymf' of https://newgitea.sxczgkj.cn/czg_team/cashier-web into gyq 2025-10-11 13:51:25 +08:00
gyq e308e6ff4b add: 更新 2025-10-11 13:50:52 +08:00
YeMingfei666 8087d9844b fix: 修复选择券死循环问题,修复赠菜nan问题 2025-10-11 11:20:55 +08:00
YeMingfei666 7ceca3b917 fix: 代客下单问题修复,本地测试服链接修改,为解决部分接口自动添加了部分路由前缀导致404,部分接口前缀增加/ 2025-10-10 18:13:38 +08:00
YeMingfei666 6be93661f4 Merge branch 'gyq' of https://newgitea.sxczgkj.cn/czg_team/cashier-web into ymf 2025-10-10 15:25:03 +08:00
YeMingfei666 d6cc5a00cc fix: 代客下单优惠券显示调整 2025-10-10 15:24:34 +08:00
gyq b474b73d28 add: 优化 2025-10-10 11:49:58 +08:00
gyq 8454381755 Merge branch 'ymf' of https://newgitea.sxczgkj.cn/czg_team/cashier-web into gyq 2025-10-10 09:08:26 +08:00
gyq 1ce95f8dd7 add: 修复问题 2025-10-10 09:08:08 +08:00
YeMingfei666 89a23613b0 Merge branch 'gyq' of https://newgitea.sxczgkj.cn/czg_team/cashier-web into ymf 2025-10-09 16:48:24 +08:00
YeMingfei666 4b9fc0ad3f fix: 代客下单修改 2025-10-09 16:48:13 +08:00
gyq e69e0e7aa0 add: 优化 2025-10-09 09:20:44 +08:00
gyq 5cd5265ffb add: 优化 2025-09-30 18:32:40 +08:00
gyq fc3c0ef932 add: 优化 2025-09-30 15:38:31 +08:00
gyq 3174d24e30 add: 优化台桌 2025-09-29 13:44:39 +08:00
gyq 610410afa6 add: 修复 2025-09-29 09:05:52 +08:00
gyq 37a61e5c79 Merge branch 'ymf' of https://newgitea.sxczgkj.cn/czg_team/cashier-web into gyq 2025-09-29 09:02:47 +08:00
gyq 312fd8d1bc add: 优化 2025-09-29 09:01:52 +08:00
YeMingfei666 b5635f70ae Merge branch 'gyq' of https://newgitea.sxczgkj.cn/czg_team/cashier-web into ymf 2025-09-28 13:26:52 +08:00
YeMingfei666 0df2d7198f fix: 优惠券修改 2025-09-28 13:26:39 +08:00
gyq 205aeb1320 add: 优化 2025-09-27 13:25:11 +08:00
gyq d3636be742 add: 优化 2025-09-26 14:22:14 +08:00
YeMingfei666 a82f116918 fix: 删除无用组件 2025-09-24 16:39:28 +08:00
YeMingfei666 64f8dd45e7 fix: 代码合并 2025-09-24 16:37:19 +08:00
YeMingfei666 e5e692bcc3 fix: 修改本地服务器链接 2025-09-24 16:34:51 +08:00
YeMingfei666 2eae21d962 fix: 优惠券调整 2025-09-22 14:41:59 +08:00
gyq 6635a6374c add: 优化 2025-09-22 10:38:54 +08:00
YeMingfei666 4934f20446 fix: 修改订单计算逻辑 2025-09-19 18:32:44 +08:00
YeMingfei666 f76dff67d4 fix: 修改订单计算逻辑 2025-09-19 18:32:25 +08:00
gyq 9eb3b8e306 add: 优化优惠券问题 2025-09-18 18:14:36 +08:00
YeMingfei666 37f1079b1f Merge branch 'gyq' of https://newgitea.sxczgkj.cn/czg_team/cashier-web into ymf 2025-09-17 09:19:42 +08:00
gyq 350a314feb Merge branch 'ymf' of https://newgitea.sxczgkj.cn/czg_team/cashier-web into gyq 2025-09-17 09:19:33 +08:00
YeMingfei666 c11eb1a0a1 Merge branch 'gyq' of https://newgitea.sxczgkj.cn/czg_team/cashier-web into ymf 2025-09-17 09:19:32 +08:00
gyq 20927c459b add: 修复券bug 2025-09-17 09:19:12 +08:00
YeMingfei666 171c81eea6 add: 增加新客立减和计算公式测试 2025-09-17 09:19:12 +08:00
YeMingfei666 a66de31f1b fix: 删除无用文件 2025-09-16 13:57:35 +08:00
YeMingfei666 573d46b50d add: 增加新客立减 2025-09-16 13:57:07 +08:00
YeMingfei666 a62d4af819 docs: 文档更新 2025-09-16 10:01:22 +08:00
YeMingfei666 01b415ecdf docs: 文档更新 2025-09-16 10:00:43 +08:00
YeMingfei666 93475151a1 docs: 文档优化 2025-09-16 09:59:04 +08:00
YeMingfei666 c5dc871d9c docs: 文档更新 2025-09-16 09:55:07 +08:00
YeMingfei666 07146b89c1 add: 用户列表增加优惠券列表 2025-09-16 09:49:26 +08:00
YeMingfei666 82dcba273e docs: 文档优化 2025-09-16 09:47:22 +08:00
YeMingfei666 7942f76dc7 Merge branch 'gyq' of https://newgitea.sxczgkj.cn/czg_team/cashier-web into ymf 2025-09-15 10:06:26 +08:00
YeMingfei666 8714b04565 add: 增加ysk-utils工具包 2025-09-15 10:05:12 +08:00
YeMingfei666 642e0a552e docs: 文档更新增加ysk工具包文档 2025-09-15 10:04:42 +08:00
YeMingfei666 794c0ec25b fix: 修复条件开通回显问题 2025-09-15 10:03:38 +08:00
YeMingfei666 9d3ae6272d add: 更新优惠券相关接口 2025-09-15 10:03:16 +08:00
gyq 23f0e549fa Merge branch 'ymf' of https://newgitea.sxczgkj.cn/czg_team/cashier-web into gyq 2025-09-15 09:21:33 +08:00
gyq 9bdd9188be add: 1.新增各类优惠券
2.新增已领取详情弹窗
3.新增已关联弹窗
2025-09-15 09:19:07 +08:00
YeMingfei666 2dbc4620f2 fix: 会员等级输入框样式调整 2025-09-12 17:42:46 +08:00
YeMingfei666 6cc879f066 fix: 营销中心增加跳转超级会员,超级会员页面选择优惠券调整 2025-09-12 17:09:29 +08:00
YeMingfei666 d950aef4e5 add: 增加超级会员页面,修复未绑定美团的检查登录报错而未成功跳转首页问题 2025-09-12 13:23:27 +08:00
gyq ea4230a9e8 add: 1 2025-09-11 10:08:09 +08:00
gyq 1004defd02 add: 优化 2025-09-10 14:26:23 +08:00
gyq 2710f276e3 Merge branch 'ymf' of https://newgitea.sxczgkj.cn/czg_team/cashier-web into gyq 2025-09-10 14:15:38 +08:00
YeMingfei666 106d0cb1e7 add: 增加超级会员配置页面 2025-09-10 14:15:23 +08:00
YeMingfei666 723902ac09 fix: 修复一级菜单问题 2025-09-10 14:11:41 +08:00
gyq 83eaf368ca add: 优化 2025-09-10 14:11:36 +08:00
YeMingfei666 0499e36a5b fix: 修改路由模式 2025-09-10 14:11:24 +08:00
YeMingfei666 075c39d2b7 Merge branch 'gyq' of https://newgitea.sxczgkj.cn/czg_team/cashier-web into ymf 2025-09-10 13:50:39 +08:00
YeMingfei666 06cd932eda fix: 修复一级菜单问题 2025-09-10 13:49:41 +08:00
gyq 2ddddeed3c add: 新增营销中心新版列表页面 2025-09-10 13:38:16 +08:00
gyq 557ca477d9 Merge branch 'ymf' of https://newgitea.sxczgkj.cn/czg_team/cashier-web into gyq 2025-09-09 18:12:29 +08:00
YeMingfei666 4d5e53f0d3 docs: 修改正式宝塔链接 2025-09-09 15:24:31 +08:00
YeMingfei666 30faee9dac add: 多门店代码合并 2025-09-09 15:08:32 +08:00
gyq 8e84185962 add: tetst 2025-09-09 10:26:23 +08:00
YeMingfei666 316b7fe059 fix: 提交测试 2025-09-09 10:21:46 +08:00
YeMingfei666 f602a7778d fix: 角色管理修改 2025-09-09 10:20:11 +08:00
gyq ceaf5fd2d5 Merge branch 'ymf' of e.coding.net:g-cphe0354/cashier/cashier-web into gyq 2025-07-01 09:59:30 +08:00
YeMingfei666 863bab3eba fix: 菜单管理增加微信小程序图标,修复部分问题 2025-05-30 18:30:18 +08:00
YeMingfei666 352795d52f fix: 删除订单管理添加按钮 2025-05-30 18:29:40 +08:00
gyq 9f2322889c feat(admin): 优化管理端台桌信息 2025-05-28 10:36:08 +08:00
YeMingfei666 2cde04720d fix: 修复商品分组选择商品未回显已选中商品问题以及重置问题 2025-05-06 16:10:39 +08:00
YeMingfei666 73e20ad617 feat: 代码合并 2025-04-22 10:17:05 +08:00
YeMingfei666 21eda68ab0 fix: 代码合并冲突解决 2025-04-22 10:16:48 +08:00
YeMingfei666 f5ff208fd6 fix: 代码合并冲突解决 2025-04-22 10:14:20 +08:00
YeMingfei666 cfc925e55c fix: 代码合并 2025-04-22 10:14:05 +08:00
duan 593f5693ef fix: 合并代码-修改空格 2025-04-21 15:31:04 +08:00
duan 2993c1375f fix: 合并代码 2025-04-21 15:26:19 +08:00
YeMingfei666 ddf7045346 Merge branch 'ymf' of https://e.coding.net/g-cphe0354/cashier/cashier-web into ymf_test 2025-04-21 11:05:49 +08:00
duan a6bca24c1a fix: 修改时间字段 2025-04-18 18:00:00 +08:00
duan e9a606c71e fix: 商品列表库存修改,没提交成功不修改表格 2025-04-17 13:41:02 +08:00
YeMingfei666 2602916201 Merge branch 'ymf' of https://e.coding.net/g-cphe0354/cashier/cashier-web into ymf_test 2025-04-16 17:31:49 +08:00
YeMingfei666 beade81a68 Merge branch 'master' of https://e.coding.net/g-cphe0354/cashier/cashier-web into ymf_test 2025-04-16 09:45:29 +08:00
YeMingfei666 9b6dd9f0da Merge branch 'master' of https://e.coding.net/g-cphe0354/cashier/cashier-web into ymf_test 2025-04-16 09:38:14 +08:00
YeMingfei666 f4b939433d fix: 代码合并冲突解决 2025-04-16 09:28:58 +08:00
duan 0a73635b78 fix: 合并冲突 2025-04-15 16:29:40 +08:00
YeMingfei666 4f987ae3d2 Merge branch 'master' of https://e.coding.net/g-cphe0354/cashier/cashier-web into ymf_test 2025-04-15 11:13:33 +08:00
wwz 0d495c20ef feat: 耗材报损 2025-04-15 10:41:12 +08:00
wwz c093c618b2 Merge branch 'multi-store' of https://e.coding.net/g-cphe0354/cashier/cashier-web into wwz 2025-04-12 13:45:46 +08:00
wwz 7fb9f30c45 feat: 更新通知中心1 2025-04-12 13:45:35 +08:00
GaoHao 901d56b648 Merge branch 'multi-store' of https://e.coding.net/g-cphe0354/cashier/cashier-web into multi-store 2025-04-12 11:02:06 +08:00
GaoHao 05aaa2fd64 feat: 登录类型增加 2025-04-12 11:01:38 +08:00
wwz 2fe5e38e85 Merge branch 'multi-store' of https://e.coding.net/g-cphe0354/cashier/cashier-web into multi-store 2025-04-12 11:01:21 +08:00
wwz 1d848b7227 feat: 更新通知中心 2025-04-12 11:01:17 +08:00
GaoHao ce3b817e42 feat: 商品报损更新列表 2025-04-12 09:42:12 +08:00
GaoHao b92f39fe89 feat: 增加权限校验 2025-04-11 18:26:10 +08:00
GaoHao cc13161f16 feat: 商品同步规则优化 2025-04-11 17:57:35 +08:00
GaoHao 688f30635b feat: 同步规则优化 2025-04-11 17:25:02 +08:00
GaoHao 85eba13919 Merge branch 'multi-store' of https://e.coding.net/g-cphe0354/cashier/cashier-web into multi-store 2025-04-11 16:53:19 +08:00
GaoHao c956972cb3 feat: 同步规格优化 2025-04-11 16:53:14 +08:00
YeMingfei666 583b79bc8f fix: 代码合并 2025-04-11 16:51:59 +08:00
GaoHao 6df2050d2b Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/cashier/cashier-web into multi-store 2025-04-11 15:50:32 +08:00
GaoHao 331f438f99 feat: 同步规格优化 2025-04-11 15:50:15 +08:00
wwz ef600c9e3c Merge branch 'multi-store' of https://e.coding.net/g-cphe0354/cashier/cashier-web into wwz 2025-04-11 15:47:01 +08:00
wwz 9a0170471a feat: 角色级别 2025-04-11 15:46:48 +08:00
GaoHao 8fd3565bac feat: 增加同步规则 2025-04-11 14:57:26 +08:00
GaoHao 04ae1c342b feat: 销售统计分类筛选隐藏,商品同步优化 2025-04-11 11:34:10 +08:00
YeMingfei666 273684678b Merge branch 'master' of https://e.coding.net/g-cphe0354/cashier/cashier-web into ymf_test 2025-04-11 09:57:32 +08:00
GaoHao 299c6327b7 Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/cashier/cashier-web into multi-store 2025-04-11 09:47:22 +08:00
GaoHao cf626cb862 feat: 分店列表筛选name名称字段修改 2025-04-11 09:47:00 +08:00
wwz bfca8f4013 Merge branch 'multi-store' of https://e.coding.net/g-cphe0354/cashier/cashier-web into multi-store 2025-04-11 09:37:31 +08:00
wwz 682fe03165 feat: 更改跳转 2025-04-11 09:37:28 +08:00
GaoHao 8290462eda Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/cashier/cashier-web into multi-store 2025-04-10 18:27:26 +08:00
GaoHao 6c72027a86 feat: 商品同步增加 2025-04-10 18:27:09 +08:00
wwz 462f75ce3e Merge branch 'multi-store' of https://e.coding.net/g-cphe0354/cashier/cashier-web into wwz 2025-04-10 17:51:47 +08:00
wwz 6cb1968b80 feat: 进销存更改 2025-04-10 17:51:14 +08:00
GaoHao c3c9437939 Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/cashier/cashier-web into multi-store 2025-04-10 17:39:48 +08:00
GaoHao 61bd37de32 feat: 供应商账单付款回显修改 2025-04-10 17:39:34 +08:00
YeMingfei666 8126907093 Merge branch 'master' of https://e.coding.net/g-cphe0354/cashier/cashier-web into ymf_test 2025-04-10 16:42:58 +08:00
YeMingfei666 34ab5a9643 Merge branch 'ymf' of https://e.coding.net/g-cphe0354/cashier/cashier-web into multi-store 2025-04-10 16:02:25 +08:00
GaoHao dbf8f8f05d feat: 供应商账单默认值显示处理 2025-04-10 14:42:18 +08:00
wwz 2922de551a Merge branch 'multi-store' of https://e.coding.net/g-cphe0354/cashier/cashier-web into wwz 2025-04-10 14:29:22 +08:00
wwz 5b30b23ad3 feat: 通知中心 2025-04-10 14:29:10 +08:00
GaoHao dedaaac375 feat: 销售统计分类获取优化 2025-04-10 11:00:58 +08:00
GaoHao eb6dffb3d2 feat:数据统计自定义增加默认时间 2025-04-10 10:38:39 +08:00
GaoHao 7df5163ee0 Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/cashier/cashier-web into multi-store 2025-04-10 09:16:12 +08:00
GaoHao dce9fa7cdb feat: 筛选时间条件增加时分秒 2025-04-09 18:27:35 +08:00
YeMingfei666 787f6606e4 Merge branch 'ymf' of https://e.coding.net/g-cphe0354/cashier/cashier-web into ymf_test 2025-04-09 18:21:30 +08:00
YeMingfei666 49d43dc22c Merge branch 'multi-store' of https://e.coding.net/g-cphe0354/cashier/cashier-web into ymf_test 2025-04-09 18:12:24 +08:00
YeMingfei666 29ab771472 Merge branch 'ymf' of https://e.coding.net/g-cphe0354/cashier/cashier-web into ymf_test 2025-04-09 18:12:13 +08:00
GaoHao d4c4989b26 feat: 筛选时间条件增加时分秒 2025-04-09 18:02:02 +08:00
GaoHao d3e18f3a8c Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/cashier/cashier-web into multi-store 2025-04-09 17:33:05 +08:00
GaoHao f1e85eeb27 feat:分店筛选显示条件增加 2025-04-09 17:32:50 +08:00
YeMingfei666 fd3167d325 fix: 更新readme文档测试服务器相关文档 2025-04-09 17:17:21 +08:00
YeMingfei666 78806f627e Merge branch 'ymf' of https://e.coding.net/g-cphe0354/cashier/cashier-web into ymf_test 2025-04-09 17:08:32 +08:00
GaoHao 448261e7b2 feat:桌台统计增加分店条件 2025-04-09 16:53:51 +08:00
GaoHao 2b09e4df2c Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/cashier/cashier-web into multi-store 2025-04-09 16:43:57 +08:00
GaoHao 3dc62a6802 fix:分店筛选增加 2025-04-09 16:43:18 +08:00
wwz c5f75a20af Merge branch 'multi-store' of https://e.coding.net/g-cphe0354/cashier/cashier-web into wwz 2025-04-09 16:26:21 +08:00
wwz 0b81b8355e feat: 数据更改 2025-04-09 16:26:02 +08:00
GaoHao cb1f4b3a8c fix:店铺列表添加修改 2025-04-09 16:13:26 +08:00
GaoHao 2546bdbd2d fix:添加店铺主店列表修改 2025-04-09 15:15:41 +08:00
GaoHao f8c3c41247 fix:添加店铺主店列表修改 2025-04-09 15:08:43 +08:00
GaoHao 373fd88226 fix: 多门店切换修改 2025-04-09 10:46:56 +08:00
GaoHao 1cc9949cd8 Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/cashier/cashier-web into multi-store 2025-04-08 17:49:23 +08:00
GaoHao 7ccd96a775 多门店切换修改 2025-04-08 17:49:08 +08:00
wwz d6a576f729 Merge branch 'multi-store' of https://e.coding.net/g-cphe0354/cashier/cashier-web into wwz 2025-04-08 17:41:44 +08:00
wwz 86f68a5cdf feat: 进销存更新 2025-04-08 17:41:30 +08:00
GaoHao 250f42ec01 fix: 分店同步更新 2025-04-08 16:15:46 +08:00
GaoHao 684a83b0db fix: 分店同步更新 2025-04-08 16:13:33 +08:00
GaoHao 6b5290d355 Merge branch 'multi-store' of https://e.coding.net/g-cphe0354/cashier/cashier-web into gaohao 2025-04-08 16:06:08 +08:00
GaoHao acc76c2faf fix: 分店显示修改 2025-04-08 16:05:00 +08:00
GaoHao 920f686897 Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/cashier/cashier-web into multi-store 2025-04-08 14:50:16 +08:00
GaoHao 2de1576f76 fix:店铺列表分店相关修改 2025-04-08 14:49:59 +08:00
wwz 6fb991ff32 Merge branch 'multi-store' of https://e.coding.net/g-cphe0354/cashier/cashier-web into wwz 2025-04-08 11:26:41 +08:00
YeMingfei666 367efae393 Merge branch 'multi-store' of https://e.coding.net/g-cphe0354/cashier/cashier-web into ymf_test 2025-04-08 11:20:22 +08:00
wwz 5809e0ec0b feat: 解决冲突 2025-04-08 11:19:36 +08:00
GaoHao 143de9fa21 Merge branch 'gaohao' of https://e.coding.net/g-cphe0354/cashier/cashier-web into multi-store 2025-04-08 11:19:31 +08:00
GaoHao a2361b39c4 fix:供应商账单测试 2025-04-08 11:18:37 +08:00
wwz d34a8c71e9 feat: 通知管理 2025-04-08 11:18:36 +08:00
YeMingfei666 8b84eee933 Merge branch 'master' of https://e.coding.net/g-cphe0354/cashier/cashier-web into ymf_test 2025-04-08 09:40:57 +08:00
YeMingfei666 62076b4472 feat: 代码合并 2025-04-07 18:27:14 +08:00
wwz 7b46671373 Merge branch 'multi-store' of https://e.coding.net/g-cphe0354/cashier/cashier-web into multi-store 2025-04-07 18:25:18 +08:00
YeMingfei666 035aa6bc21 Merge branch 'master' of https://e.coding.net/g-cphe0354/cashier/cashier-web into ymf_test 2025-04-07 18:24:03 +08:00
wwz 95f22ede1d feat: 耗材补充修改 2025-04-07 18:13:52 +08:00
YeMingfei666 4be210727c Merge branch 'master' of https://e.coding.net/g-cphe0354/cashier/cashier-web into ymf_test 2025-04-07 17:21:08 +08:00
YeMingfei666 b1d175b108 Merge branch 'master' of https://e.coding.net/g-cphe0354/cashier/cashier-web into ymf_test 2025-04-07 16:21:56 +08:00
YeMingfei666 b74adf2010 Merge branch 'master' of https://e.coding.net/g-cphe0354/cashier/cashier-web into ymf_test 2025-04-07 15:11:56 +08:00
YeMingfei666 20462cca44 Merge branch 'master' of https://e.coding.net/g-cphe0354/cashier/cashier-web into ymf_test 2025-04-07 14:09:32 +08:00
YeMingfei666 98c6f5175f Merge branch 'multi-store' of https://e.coding.net/g-cphe0354/cashier/cashier-web into ymf_test 2025-04-07 10:12:29 +08:00
GaoHao 164dd52afa fix:增加收银中心,供应商账单,分店管理修改 2025-04-03 14:29:25 +08:00
GaoHao 11b297baa5 新需求修改:菜单调整,分店下拉增加,分店管理增加,增加店铺修改 2025-04-02 17:14:55 +08:00
GaoHao d0a757957d 1 2025-04-02 13:40:02 +08:00
GaoHao 13a39e1b13 导航修改 2025-04-02 11:49:08 +08:00
262 changed files with 30399 additions and 3399 deletions

View File

@ -8,13 +8,13 @@ VITE_APP_BASE_API=/dev-api
# VITE_APP_API_URL=https://tapi.cashier.sxczgkj.cn/ # 测试
# VITE_APP_API_URL=https://cashier.sxczgkj.com/ # 正式
VITE_APP_API_URL=http://192.168.1.31/ # 本地
VITE_APP_API_URL=http://192.168.1.42/ # 本地
# WebSocket 端点(不配置则关闭),线上 ws://api.youlai.tech/ws ,本地 ws://localhost:8989/ws
# VITE_APP_WS_ENDPOINT=wss://sockets.sxczgkj.com/wss
# VITE_APP_WS_ENDPOINT=wss://czgeatws.sxczgkj.com/wss # 正式
VITE_APP_WS_ENDPOINT=ws://192.168.1.31:2348 # 本地
VITE_APP_WS_ENDPOINT=ws://192.168.1.42:2348 # 本地
# 启用 Mock 服务

View File

@ -8,13 +8,13 @@ VITE_APP_PORT=3000
# VITE_APP_API_URL=https://tapi.cashier.sxczgkj.cn/ # 测试
# VITE_APP_API_URL=https://cashier.sxczgkj.com/ # 正式
VITE_APP_API_URL=http://192.168.1.31/ # 本地
VITE_APP_API_URL=http://192.168.1.42/ # 本地
# WebSocket 端点(不配置则关闭),线上 ws://api.youlai.tech/ws ,本地 ws://localhost:8989/ws
# VITE_APP_WS_ENDPOINT=wss://sockets.sxczgkj.com/wss
# VITE_APP_WS_ENDPOINT=wss://czgeatws.sxczgkj.com/wss # 正式
VITE_APP_WS_ENDPOINT=ws://192.168.1.31:2348 # 本地
VITE_APP_WS_ENDPOINT=ws://192.168.1.42:2348 # 本地
# 启用 Mock 服务

View File

@ -1 +1 @@
npx --no-install commitlint --edit $1
# npx --no-install commitlint --edit $1

19
.vscode/settings.json vendored
View File

@ -2,14 +2,14 @@
"typescript.tsdk": "./node_modules/typescript/lib",
"npm.packageManager": "pnpm",
"editor.tabSize": 2,
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.quickSuggestions": {
"other": true,
"comments": true,
"strings": true
},
"editor.codeActionsOnSave": {
"editor.codeActionsOnSave": {
"source.fixAll": "explicit",
"source.fixAll.eslint": "explicit",
"source.fixAll.stylelint": "explicit"
@ -67,7 +67,9 @@
"i18n-ally.sortKeys": true,
"i18n-ally.namespace": false,
"i18n-ally.pathMatcher": "{namespaces}/{locale}.{ext}",
"i18n-ally.enabledParsers": ["ts"],
"i18n-ally.enabledParsers": [
"ts"
],
"i18n-ally.sourceLanguage": "en",
"i18n-ally.displayLanguage": "zh-CN",
"i18n-ally.enabledFrameworks": [
@ -89,5 +91,12 @@
},
"[jsonc]": {
"editor.defaultFormatter": "vscode.json-language-features"
},
"files.associations": {
"*.ttml": "xml",
"*.ttss": "css"
},
"[javascript]": {
"editor.defaultFormatter": "vscode.typescript-language-features"
}
}
}

View File

@ -2,20 +2,42 @@
基于 Vue3 + Vite5+ TypeScript5 + Element-Plus + Pinia 等主流技术栈构建
## ysk-utils 工具类包
安装
```
pnpm install ysk-utils
```
更新
```
pnpm update ysk-utils
```
vscode如果无代码提示
重启 VS Code 的 TypeScript 服务器
输入
```TypeScript: Restart TS Server```
## 正式宝塔
<https://121.40.128.145:38279/>
chaozg
chaozg123
[正式宝塔](https://121.40.128.145:38279/mianban/)
账号 ***chaozg***
密码 ***chaozg123***
## 本地测试服务器192.168.1.31linux部署
映射地址
<https://fv901fw8033.vicp.fun/>
上传.zip文件解压到服务器的 /home/web下
cd到/home/web下
执行命令
unzip -o dist.zip
1. ***cd /usr/share/nginx/html***
2. 上传.zip文件服务器的 /usr/share/nginx/html下
3. 执行命令
```unzip -o dist.zip```
数据库
url: jdbc:mysql://192.168.1.31:3306/czg_cashier?useUnicode=true&characterEncoding=utf-8

View File

@ -39,8 +39,10 @@
"@vueuse/core": "^12.5.0",
"@wangeditor-next/editor": "^5.6.31",
"@wangeditor-next/editor-for-vue": "^5.1.14",
"@wangeditor/editor": "^5.1.23",
"ali-oss": "^6.22.0",
"axios": "^1.7.9",
"bignumber.js": "^9.3.1",
"bwip-js": "^4.5.1",
"codemirror": "^5.65.18",
"codemirror-editor-vue3": "^2.8.0",
@ -66,7 +68,8 @@
"vue": "^3.5.13",
"vue-clipboard3": "^2.0.0",
"vue-i18n": "^11.1.0",
"vue-router": "^4.5.0"
"vue-router": "^4.5.0",
"ysk-utils": "^1.0.35"
},
"devDependencies": {
"@commitlint/cli": "^19.7.1",
@ -112,6 +115,7 @@
"unplugin-vue-components": "^28.0.0",
"vite": "^6.1.0",
"vite-plugin-mock-dev-server": "^1.8.3",
"vite-plugin-strip-code": "^1.1.0",
"vite-plugin-svg-icons": "^2.0.1",
"vue-eslint-parser": "^9.4.3",
"vue-tsc": "^2.2.0"

View File

@ -1,18 +1,15 @@
<template>
<el-config-provider :locale="locale" :size="size">
<!-- 开启水印 -->
<el-watermark
:font="{ color: fontColor }"
:content="watermarkEnabled ? defaultSettings.watermarkContent : ''"
:z-index="9999"
class="wh-full"
>
<el-watermark :font="{ color: fontColor }" :content="watermarkEnabled ? defaultSettings.watermarkContent : ''"
:z-index="9999" class="wh-full">
<router-view />
</el-watermark>
</el-config-provider>
</template>
<script setup lang="ts">
// test
import { useAppStore, useSettingsStore } from "@/store";
import defaultSettings from "@/settings";
import { ThemeEnum } from "@/enums/ThemeEnum";

View File

@ -1,10 +1,10 @@
import request from "@/utils/request";
import { Account_BaseUrl } from "@/api/config";
const baseURL = Account_BaseUrl + "/admin/coupon";
import { Market_BaseUrl } from "@/api/config";
const baseURL = Market_BaseUrl + "/admin/coupon";
const API = {
getList(params: getListRequest) {
return request<any>({
url: `${baseURL}`,
url: `${baseURL}/page`,
method: "get",
params
});

View File

@ -1,5 +1,5 @@
import request from "@/utils/request";
const baseURL = "account/admin/";
const baseURL = "/account/admin/";
const AuthAPI = {
/** 登录接口*/

View File

@ -9,6 +9,12 @@ const MenuApi = {
method: "get",
});
},
getCashMenus() {
return request<any, CashMenu[]>({
url: `${baseURL}/list/cash`,
method: "get",
});
},
/**获取所有菜单 */
getList(data: getListRequest) {
return request<any, MenuVO[]>({
@ -48,6 +54,13 @@ const MenuApi = {
};
export default MenuApi;
export interface CashMenu {
component?: null | string;
menuId: number;
name: null | string;
path?: null | string;
[property: string]: any;
}
/** RouteVO路由对象 */
export interface RouteVO {

View File

@ -1,5 +1,5 @@
import request from "@/utils/request";
const baseURL = "account/admin/";
const baseURL = "/account/admin/";
const RegisterApi = {
/** 获取当前用户菜单列表*/

View File

@ -1,5 +1,5 @@
import request from "@/utils/request";
const baseURL = "account/admin/role";
const baseURL = "/account/admin/role";
const RoleApi = {
/** 获取当前用户菜单列表*/
@ -33,11 +33,11 @@ const RoleApi = {
});
},
// 获取角色对应的菜单id
getMenu(id: number) {
getMenu(id: number, type: number = 0) {
return request<any, any[]>({
url: `${baseURL}/menu`,
method: "get",
params: { id },
params: { id, type },
});
},
};

View File

@ -1,83 +1,104 @@
import request from "@/utils/request";
const baseURL = "account/admin/shopInfo";
const baseURL = "/account/admin/shopInfo";
const ShopApi = {
/** 获取店铺列表*/
getList(params: PageQuery) {
return request<any, ShopInfoEditDTO[]>({
url: `${baseURL}`,
method: "get",
params: params,
});
},
add(data: ShopInfoEditDTO) {
return request<any, ShopInfoEditDTO>({
url: `${baseURL}`,
method: "post",
data,
});
},
edit(data: ShopInfoEditDTO) {
return request<any, ShopInfoEditDTO>({
url: `${baseURL}`,
method: "put",
data,
});
},
get(params: getRequest) {
return request<any, ShopInfo>({
url: `${baseURL}/detail`,
method: "get",
params
});
},
delete(params: any) {
return request({
url: `${baseURL}`,
method: "delete",
params,
});
},
/** 获取店铺列表*/
getList(params: PageQuery) {
return request<any, ShopInfoEditDTO[]>({
url: `${baseURL}`,
method: "get",
params: params,
});
},
/** 获取店铺分店列表*/
getOtherShopList(params: PageQuery) {
return request<any, ShopInfoEditDTO[]>({
url: `${baseURL}/otherShop`,
method: "get",
params: params,
});
},
getBranchList(params: PageQuery) {
return request<any, ShopInfoEditDTO[]>({
url: `${baseURL}/branchList`,
method: "get",
params: params,
});
},
getBranchChange(id: PageQuery) {
return request<any, ShopInfoEditDTO[]>({
url: `${baseURL}/change/${id}`,
method: "post",
});
},
add(data: ShopInfoEditDTO) {
return request<any, ShopInfoEditDTO>({
url: `${baseURL}`,
method: "post",
data,
});
},
edit(data: ShopInfoEditDTO) {
return request<any, ShopInfoEditDTO>({
url: `${baseURL}`,
method: "put",
data,
});
},
get(params: getRequest) {
return request<any, ShopInfo>({
url: `${baseURL}/detail`,
method: "get",
params
});
},
delete(params: any) {
return request({
url: `${baseURL}`,
method: "delete",
params,
});
},
};
export default ShopApi;
export interface getRequest {
/**
* id
*/
id?: string | number;
[property: string]: any;
/**
* id
*/
id?: string | number;
[property: string]: any;
}
/**
* ShopInfoEditDTO
*/
export interface ShopInfoEditDTO {
accountName?: null | string;
accountPwd?: null | string;
activateCode?: null | string;
address?: null | string;
chainName?: null | string;
detail?: null | string;
frontImg?: null | string;
id: number | null;
lat?: null | string;
lng?: null | string;
logo?: null | string;
phone?: null | string;
profiles?: null | string;
roleId?: number | null;
shopName?: null | string;
shopType?: null | string;
[property: string]: any;
accountName?: null | string;
accountPwd?: null | string;
activateCode?: null | string;
address?: null | string;
chainName?: null | string;
detail?: null | string;
frontImg?: null | string;
id: number | null;
lat?: null | string;
lng?: null | string;
logo?: null | string;
phone?: null | string;
profiles?: null | string;
roleId?: number | null;
shopName?: null | string;
shopType?: null | string;
[property: string]: any;
}
export interface PageQuery {
page: number;
shopName?: string;
size: number;
status?: number;
[property: string]: any;
page: number;
shopName?: string;
size: number;
status?: number;
[property: string]: any;
}
@ -85,196 +106,196 @@ export interface PageQuery {
* ShopInfo
*/
export interface ShopInfo {
/**
*
*/
address?: null | string;
/**
*
*/
article?: null | string;
/**
*
*/
backImg?: null | string;
/**
*
*/
bindAccount?: null | string;
/**
*
*/
bookingSms?: null | string;
/**
* ()
*/
businessEndDay?: null | string;
/**
* ()
*/
businessStartDay?: null | string;
/**
*
*/
businessTime?: null | string;
/**
*
*/
chainName?: null | string;
/**
*
*/
cities?: null | string;
/**
* all- vip-
*/
consumeColony?: null | string;
/**
*
*/
contactName?: null | string;
/**
*
*/
coverImg?: null | string;
createTime?: null | string;
/**
*
*/
detail?: null | string;
/**
* /
*/
districts?: null | string;
/**
* dine-in take-out
*/
eatModel?: null | string;
/**
*
*/
expireTime?: null | string;
/**
*
*/
frontImg?: null | string;
/**
* 使 sys_user id
*/
id?: number | null;
/**
*
*/
isAccountPay?: number | null;
/**
* 1 0
*/
isCustomAmount?: number | null;
/**
* 1 0
*/
isMemberInPwd?: number | null;
/**
* 01
*/
isMemberPrice?: number | null;
/**
* 退 1 0
*/
isMemberReturnPwd?: number | null;
/**
* 退 1 0
*/
isReturnPwd?: number | null;
/**
* 01
*/
isTableFee?: number | null;
/**
*
*/
lat?: null | string;
/**
*
*/
lng?: null | string;
/**
* logo
*/
logo?: null | string;
/**
* id
*/
mainId?: number | null;
/**
* 0 1 2
*/
onSale?: number | null;
/**
*
*/
operationPwd?: null | string;
/**
*
*/
paymentQrcode?: null | string;
/**
*
*/
phone?: null | string;
/**
* trial试用版release正式
*/
profiles?: null | string;
/**
*
*/
provinces?: null | string;
registerType?: null | string;
/**
*
*/
sdType?: null | string;
/**
*
*/
shopName?: null | string;
/**
*
*/
shopQrcode?: null | string;
/**
* --only --chain--join type
*/
shopType?: null | string;
/**
* ()
*/
smallQrcode?: null | string;
/**
* -1 0-1
*/
status?: number | null;
/**
*
*/
subTitle?: null | string;
/**
*
*/
tableFee?: number | null;
/**
*
*/
tag?: null | string;
/**
*
*/
taxAmount?: null | string;
/**
* 0 1, 1 0
*/
tubeType?: number | null;
updateTime?: null | string;
[property: string]: any;
/**
*
*/
address?: null | string;
/**
*
*/
article?: null | string;
/**
*
*/
backImg?: null | string;
/**
*
*/
bindAccount?: null | string;
/**
*
*/
bookingSms?: null | string;
/**
* ()
*/
businessEndDay?: null | string;
/**
* ()
*/
businessStartDay?: null | string;
/**
*
*/
businessTime?: null | string;
/**
*
*/
chainName?: null | string;
/**
*
*/
cities?: null | string;
/**
* all- vip-
*/
consumeColony?: null | string;
/**
*
*/
contactName?: null | string;
/**
*
*/
coverImg?: null | string;
createTime?: null | string;
/**
*
*/
detail?: null | string;
/**
* /
*/
districts?: null | string;
/**
* dine-in take-out
*/
eatModel?: null | string;
/**
*
*/
expireTime?: null | string;
/**
*
*/
frontImg?: null | string;
/**
* 使 sys_user id
*/
id?: number | null;
/**
*
*/
isAccountPay?: number | null;
/**
* 1 0
*/
isCustomAmount?: number | null;
/**
* 1 0
*/
isMemberInPwd?: number | null;
/**
* 01
*/
isMemberPrice?: number | null;
/**
* 退 1 0
*/
isMemberReturnPwd?: number | null;
/**
* 退 1 0
*/
isReturnPwd?: number | null;
/**
* 01
*/
isTableFee?: number | null;
/**
*
*/
lat?: null | string;
/**
*
*/
lng?: null | string;
/**
* logo
*/
logo?: null | string;
/**
* id
*/
mainId?: number | null;
/**
* 0 1 2
*/
onSale?: number | null;
/**
*
*/
operationPwd?: null | string;
/**
*
*/
paymentQrcode?: null | string;
/**
*
*/
phone?: null | string;
/**
* trial试用版release正式
*/
profiles?: null | string;
/**
*
*/
provinces?: null | string;
registerType?: null | string;
/**
*
*/
sdType?: null | string;
/**
*
*/
shopName?: null | string;
/**
*
*/
shopQrcode?: null | string;
/**
* --only --chain--join type
*/
shopType?: null | string;
/**
* ()
*/
smallQrcode?: null | string;
/**
* -1 0-1
*/
status?: number | null;
/**
*
*/
subTitle?: null | string;
/**
*
*/
tableFee?: number | null;
/**
*
*/
tag?: null | string;
/**
*
*/
taxAmount?: null | string;
/**
* 0 1, 1 0
*/
tubeType?: number | null;
updateTime?: null | string;
[property: string]: any;
}

View File

@ -0,0 +1,54 @@
import request from "@/utils/request";
import { Account_BaseUrl } from "@/api/config";
const baseURL = Account_BaseUrl + "/admin/shop/branch";
const ShopBranchApi = {
getList(params: any) {
return request<any>({
url: `${baseURL}/page`,
method: "get",
params
});
},
getDataSync(params: any) {
return request<any>({
url: `${baseURL}/get/dataSyncMethod`,
method: "get",
params
});
},
setDataSync(id: any) {
return request<any>({
url: `${baseURL}/setting/dataSyncMethod?dataSyncMethod=${id}`,
method: "post",
});
},
dataSync(id: any) {
return request<any>({
url: `${baseURL}/data/sync/enable?branchShopId=${id}`,
method: "post",
});
},
enable(id: any) {
return request<any>({
url: `${baseURL}/account/enable?branchShopId=${id}`,
method: "post",
});
},
disable(id: any) {
return request<any>({
url: `${baseURL}/account/disable?branchShopId=${id}`,
method: "post",
});
},
};
export interface Responseres {
code?: number | null;
data?: any;
msg?: null | string;
[property: string]: any;
}
export default ShopBranchApi;

View File

@ -63,6 +63,14 @@ const API = {
method: "get",
params
});
},
//获取店铺用户详情
vipInfo(params: getRequest) {
return request({
url: `${baseURL}/detail`,
method: "get",
params
});
}
}
export default API;

View File

@ -4,7 +4,8 @@
// 商品,耗材相关:<https://tapi.cashier.sxczgkj.cn/product/>
// 系统相关:<https://tapi.cashier.sxczgkj.cn/system/>
export const Account_BaseUrl = "account";
export const Order_BaseUrl = "order";
export const Product_BaseUrl = "product";
export const System_BaseUrl = "system";
export const Account_BaseUrl = "/account";
export const Order_BaseUrl = "/order";
export const Product_BaseUrl = "/product";
export const System_BaseUrl = "/system";
export const Market_BaseUrl = "/market";

786
src/api/coupon/index.js Normal file
View File

@ -0,0 +1,786 @@
import request from "@/utils/request";
import {
Account_BaseUrl,
Product_BaseUrl,
Market_BaseUrl,
System_BaseUrl
} from "@/api/config";
// 获取分店列表
export function getBranchPage() {
return request({
url: `${Account_BaseUrl + "/admin/shop/branch/page"}`,
method: "get",
});
}
// 店铺分店列表(下拉展示主店和分店使用,默认第一个是主店,其余是分店)
export function getBranchList() {
return request({
url: `${Account_BaseUrl + "/admin/shopInfo/branchList"}`,
method: "get",
});
}
// 获取商品-列表
export function getProductList() {
return request({
url: `${Product_BaseUrl + "/admin/product/list"}`,
method: "get",
});
}
// 获取商品分类
export function getCategoryList() {
return request({
url: `${Product_BaseUrl + "/admin/prod/category/list"}`,
method: "get",
});
}
// 新增优惠券
export function addCoupon(data) {
return request({
url: `${Market_BaseUrl + "/admin/coupon"}`,
method: data.id ? 'put' : 'post',
data
});
}
// 优惠券分页
export function couponPage(params) {
return request({
url: `${Market_BaseUrl + "/admin/coupon/page"}`,
method: "GET",
params
});
}
// 删除优惠券
export function delCoupon(params) {
return request({
url: `${Market_BaseUrl + "/admin/coupon"}`,
method: 'DELETE',
params
});
}
// 新增消费赠券
export function addConsumerCoupon(data) {
return request({
url: `${Market_BaseUrl + "/admin/consumerCoupon/addConsumerCoupon"}`,
method: 'post',
data
});
}
// 消费赠券分页
export function getConsumerCouponPage(params) {
return request({
url: `${Market_BaseUrl + "/admin/consumerCoupon/getConsumerCouponPage"}`,
method: "GET",
params
});
}
// 更新消费赠券
export function updateConsumerCouponById(data) {
return request({
url: `${Market_BaseUrl + "/admin/consumerCoupon/updateConsumerCouponById"}`,
method: 'put',
data
});
}
// 删除消费赠券
export function deleteConsumerCoupon(params) {
return request({
url: `${Market_BaseUrl + "/admin/consumerCoupon/deleteConsumerCoupon"}`,
method: 'DELETE',
params
});
}
// 获取该券关联的功能列表
export function relevanceCoupon(params) {
return request({
url: `${Market_BaseUrl + "/admin/coupon/gifts"}`,
method: 'get',
params
});
}
// 通过关联Id取消该券的关联
export function delRelevanceCoupon(params) {
return request({
url: `${Market_BaseUrl + "/admin/coupon/cancelGift"}`,
method: 'DELETE',
params
});
}
// 优惠券列表/已领取详情
export function couponRecord(params) {
return request({
url: `${Market_BaseUrl + "/admin/coupon/record"}`,
method: 'get',
params
});
}
// 消费赠券已领取详情
export function xfCouponRecord(params) {
return request({
url: `${Market_BaseUrl + "/admin/coupon/consumerRecord"}`,
method: 'get',
params
});
}
// 删除用户优惠券
export function deleteRecord(params) {
return request({
url: `${Market_BaseUrl + "/admin/coupon/deleteRecord"}`,
method: 'DELETE',
params
});
}
// 智慧充值 配置信息修改
export function shopRecharge(data) {
return request({
url: `${Market_BaseUrl + "/admin/shopRecharge"}`,
method: 'post',
data
});
}
// 智慧充值 配置信息获取
export function shopRechargeGet() {
return request({
url: `${Market_BaseUrl + "/admin/shopRecharge"}`,
method: 'get'
});
}
// 获取店铺用户列表
export function getShopUserList(params) {
return request({
url: `${Account_BaseUrl + "/admin/shopUser"}`,
method: 'get',
params
});
}
// 消费返现 配置信息获取
export function consumeCashback() {
return request({
url: `${Market_BaseUrl + "/admin/consumeCashback"}`,
method: 'get'
});
}
// 消费返现 配置信息修改
export function consumeCashbackPost(data) {
return request({
url: `${Market_BaseUrl + "/admin/consumeCashback"}`,
method: 'post',
data
});
}
// 消费返现 记录获取
export function consumeCashbackRecord(params) {
return request({
url: `${Market_BaseUrl + "/admin/consumeCashback/record"}`,
method: 'get',
params
});
}
// 满减活动 配置信息获取
export function discountActivityPage(params) {
return request({
url: `${Market_BaseUrl + "/admin/discountActivity/page"}`,
method: 'get',
params
});
}
// 满减活动 新增
export function discountActivity(data, method = 'post') {
return request({
url: `${Market_BaseUrl + "/admin/discountActivity"}`,
method: method,
data
});
}
// 满减活动 删除
export function discountActivityDelete(id) {
return request({
url: `${Market_BaseUrl + "/admin/discountActivity"}?id=${id}`,
method: 'DELETE'
});
}
// 店铺详情
export function shopInfoGet() {
return request({
url: `${Account_BaseUrl + "/admin/shopInfo/detail"}`,
method: 'get'
});
}
// 店铺编辑
export function shopInfoPut(data) {
return request({
url: `${Account_BaseUrl + "/admin/shopInfo"}`,
method: 'put',
data
});
}
// 私域引流 配置信息获取
export function drainageConfigGet() {
return request({
url: `${Market_BaseUrl + "/admin/drainageConfig"}`,
method: 'get'
});
}
// 私域引流 配置信息修改
export function drainageConfigPost(data) {
return request({
url: `${Market_BaseUrl + "/admin/drainageConfig"}`,
method: 'post',
data
});
}
// 短信模板 新增
export function smsTemplate(data) {
return request({
url: `${Market_BaseUrl + "/admin/smsTemplate"}`,
method: 'post',
data
});
}
// 短信模板 重新提交
export function smsTemplateResubmit(data) {
return request({
url: `${Market_BaseUrl + "/admin/smsTemplate/resubmit"}`,
method: 'post',
data
});
}
// 短信模板 列表
export function smsTemplateGet() {
return request({
url: `${Market_BaseUrl + "/admin/smsTemplate"}`,
method: 'get',
});
}
// 短信模板 列表 管理员专用
export function smsTemplatePage(data) {
return request({
url: `${Market_BaseUrl + "/admin/smsTemplate/query"}`,
method: 'post',
data
});
}
// 获取短信发送用户
export function getPushEventUser(data) {
return request({
url: `${Account_BaseUrl + "/admin/shopUser/getPushEventUser"}`,
method: 'post',
data
});
}
// 短信推送任务 新增
export function pushEventPost(data, method = 'post') {
return request({
url: `${Market_BaseUrl + "/admin/pushEvent"}`,
method: method,
data
});
}
// 短信推送任务 列表
export function pushEventGet(params) {
return request({
url: `${Market_BaseUrl + "/admin/pushEvent"}`,
method: 'get',
params
});
}
// 短信推送任务 删除任务
export function pushEventDel(id) {
return request({
url: `${Market_BaseUrl}/admin/pushEvent/${id}`,
method: 'DELETE'
});
}
// 获取店铺短信余额明细
export function smsMoneyDetail(params) {
return request({
url: `${Market_BaseUrl + "/admin/smsMoneyDetail"}`,
method: 'get',
params
});
}
// 霸王餐 配置信息获取
export function freeDingGet(params) {
return request({
url: `${Account_BaseUrl + "/admin/freeDing"}`,
method: 'get',
params
});
}
// 霸王餐 修改霸王餐配置信息
export function freeDingPut(data) {
return request({
url: `${Account_BaseUrl + "/admin/freeDing"}`,
method: 'put',
data
});
}
// 平台 模板状态/删除
export function shopUseDelStatus(data) {
return request({
url: `${Market_BaseUrl + "/admin/smsTemplate/shopUse"}`,
method: 'post',
data
});
}
// 配置信息获取
export function adminSmsMoneyPage(params) {
return request({
url: `${Market_BaseUrl + "/admin/smsMoney/page"}`,
method: 'get',
params
});
}
// 变更店铺短信余额
export function smsMoneyChange(data) {
return request({
url: `${Market_BaseUrl + "/admin/smsMoney/change"}`,
method: 'post',
data
});
}
// 平台 获取店铺短信余额明细
export function smsMoneyDetailQuery(data) {
return request({
url: `${Market_BaseUrl + "/admin/smsMoneyDetail/query"}`,
method: 'post',
data
});
}
// 获取店铺短信余额
export function smsMoneyGet() {
return request({
url: `${Market_BaseUrl + "/admin/smsMoney"}`,
method: 'get'
});
}
// 获取发送短信单价
export function smsMoneyGetFee() {
return request({
url: `${System_BaseUrl + "/admin/sysParams/code/sms_fee"}`,
method: 'get'
});
}
// 微信公众号 商家每日可创建次数
export function acDayCount() {
return request({
url: `${System_BaseUrl + "/admin/sysParams/code/ac_day_count"}`,
method: 'get'
});
}
// 公众号推送:列表
export function acPushEventGet(params) {
return request({
url: `${Market_BaseUrl + "/admin/acPushEvent"}`,
method: 'get',
params
});
}
// 公众号推送:删除任务
export function acPushEventDel(id) {
return request({
url: `${Market_BaseUrl}/admin/acPushEvent/${id}`,
method: 'DELETE'
});
}
// 公众号推送:新增/更新
export function acPushEventPost(data, method = 'post') {
return request({
url: `${Market_BaseUrl}/admin/acPushEvent`,
method: method,
data
});
}
// 公众号任务获取用户
export function getAcPushEventUser(data) {
return request({
url: `${Account_BaseUrl + "/admin/shopUser/getAcPushEventUser"}`,
method: 'post',
data
});
}
// 充值兑换 配置开关
export function rechargeRedemptionPut(data) {
return request({
url: `${Market_BaseUrl}/admin/rechargeRedemption/enable`,
method: 'put',
data
});
}
// 充值兑换 开关状态
export function rechargeRedemptionEnableStatus() {
return request({
url: `${Market_BaseUrl}/admin/rechargeRedemption/enable/status`,
method: 'get',
});
}
// 充值兑换 配置信息获取 列表
export function rechargeRedemptionList(params) {
return request({
url: `${Market_BaseUrl}/admin/rechargeRedemption/list`,
method: 'get',
params
});
}
// 充值兑换 配置信息添加/编辑
export function rechargeRedemption(data, method = 'post') {
return request({
url: `${Market_BaseUrl}/admin/rechargeRedemption`,
method: method,
data
});
}
// 充值兑换 充值兑换码列表
export function rechargeRedemptionCodeList(params) {
return request({
url: `${Market_BaseUrl}/admin/rechargeRedemption/code/list`,
method: 'get',
params
});
}
// 充值兑换 配置信息详情
export function rechargeRedemptionDetail(params) {
return request({
url: `${Market_BaseUrl}/admin/rechargeRedemption`,
method: 'get',
params
});
}
// 充值兑换 配置信息详情
export function rechargeRedemptionExport(params) {
return request({
url: `${Market_BaseUrl}/admin/rechargeRedemption/code/export`,
method: 'get',
params,
responseType: "blob",
});
}
// 券兑换码 开关。可用门店修改
export function couponRedemptionEnable(data) {
return request({
url: `${Market_BaseUrl}/admin/couponRedemption/enable`,
method: 'put',
data
});
}
// 券兑换码 开关状态,可用门店详情
export function couponRedemptionEnableStatus() {
return request({
url: `${Market_BaseUrl}/admin/couponRedemption/enable/status`,
method: 'get',
});
}
// 券兑换码 配置信息获取 列表
export function couponRedemptionList(params) {
return request({
url: `${Market_BaseUrl}/admin/couponRedemption/list`,
method: 'get',
params
});
}
// 券兑换码 配置信息添加/编辑
export function couponRedemption(data, method = 'post') {
return request({
url: `${Market_BaseUrl}/admin/couponRedemption`,
method: method,
data
});
}
// 券兑换码 券兑换码码列表
export function couponRedemptionCodeList(params) {
return request({
url: `${Market_BaseUrl}/admin/couponRedemption/code/list`,
method: 'get',
params
});
}
// 券兑换码 配置信息详情
export function couponRedemptionDetail(params) {
return request({
url: `${Market_BaseUrl}/admin/couponRedemption`,
method: 'get',
params
});
}
// 券兑换码 配置信息详情
export function couponRedemptionCodeExport(params) {
return request({
url: `${Market_BaseUrl}/admin/couponRedemption/code/export`,
method: 'get',
params,
responseType: "blob",
});
}
// 限时折扣-分页
export function limitTimeDiscountPage(params) {
return request({
url: `${Market_BaseUrl}/admin/limitTimeDiscount/page`,
method: 'get',
params
});
}
// 限时折扣-新增
export function limitTimeDiscount(data, method = 'post') {
return request({
url: `${Market_BaseUrl}/admin/limitTimeDiscount`,
method: method,
data
});
}
// 限时折扣-删除
export function limitTimeDiscountDel(params) {
return request({
url: `${Market_BaseUrl}/admin/limitTimeDiscount`,
method: 'DELETE',
params
});
}
// 点单智能推荐-分页
export function suggestPage(params) {
return request({
url: `${Market_BaseUrl}/admin/suggest/page`,
method: 'get',
params
});
}
// 点单智能推荐-添加/修改
export function suggestPostPut(data, method = 'post') {
return request({
url: `${Market_BaseUrl}/admin/suggest`,
method: method,
data
});
}
// 点单智能推荐-删除
export function suggestDel(params) {
return request({
url: `${Market_BaseUrl}/admin/suggest`,
method: 'DELETE',
params
});
}
// 分销-配置信息详情
export function distributionGet(params) {
return request({
url: `${Market_BaseUrl}/admin/distribution`,
method: 'get',
params
});
}
// 分销-配置信息修改
export function distributionPut(data) {
return request({
url: `${Market_BaseUrl}/admin/distribution`,
method: 'put',
data
});
}
// 分销-金额记录
export function distributionFlow(params) {
return request({
url: `${Market_BaseUrl}/admin/distribution/flow`,
method: 'get',
params
});
}
// 分销-现金充值
export function distributionCashPay(data) {
return request({
url: `${Market_BaseUrl}/admin/distribution/cashPay`,
method: 'post',
data
});
}
// 分销-分销员:添加分销员
export function distributionUser(data, method = 'post') {
return request({
url: `${Market_BaseUrl}/admin/distribution/user`,
method: method,
data
});
}
// 分销员:分销员列表 下级用户列表
export function distributionUserPage(params) {
return request({
url: `${Market_BaseUrl}/admin/distribution/user`,
method: 'get',
params
});
}
// 分销员:开通记录
export function distributionOpenFlow(params) {
return request({
url: `${Market_BaseUrl}/admin/distribution/openFlow`,
method: 'get',
params
});
}
// 分销员:分销明细
export function distributionFlowGet(params) {
return request({
url: `${Market_BaseUrl}/admin/distribution/distributionFlow`,
method: 'get',
params
});
}
// 分销员:用户提现列表
export function distributionWithdrawFlow(params) {
return request({
url: `${Market_BaseUrl}/admin/distribution/withdrawFlow`,
method: 'get',
params
});
}
// 分销员:充值二维码获取
export function distributionRechargeQrCode(params) {
return request({
url: `${Market_BaseUrl}/admin/distribution/rechargeQrCode`,
method: 'get',
params
});
}
// 店铺列表, 只允许管理员调用
export function shopInfoList(params) {
return request({
url: `${Account_BaseUrl}/admin/shopInfo`,
method: 'get',
params
});
}
// 分销, 金额记录
export function distributionShopFlow(params) {
return request({
url: `${Market_BaseUrl}/admin/distribution/flow`,
method: 'get',
params
});
}
// 分销员:获取邀请人分页列表
export function distributionUserInviteUser(params) {
return request({
url: `${Market_BaseUrl}/admin/distribution/user/inviteUser`,
method: 'get',
params
});
}
// 分销员:重置分销员等级
export function distributionUserResetLevel(data) {
return request({
url: `${Market_BaseUrl}/admin/distribution/user/resetLevel`,
method: 'post',
data
});
}

View File

@ -8,7 +8,7 @@ const FileAPI = {
*/
upload(formData: FormData) {
return request<any, FileInfo>({
url: "/api/v1/files",
url: "/account/admin/common/upload",
method: "post",
data: formData,
headers: {
@ -24,7 +24,7 @@ const FileAPI = {
const formData = new FormData();
formData.append("file", file);
return request<any, FileInfo>({
url: "/api/v1/files",
url: "/account/admin/common/upload",
method: "post",
data: formData,
headers: {

View File

@ -0,0 +1,35 @@
import request from "@/utils/request";
import { Market_BaseUrl } from "@/api/config";
const baseURL = Market_BaseUrl + "/admin/birthdayGift";
const API = {
getConfig(params: any) {
return request<any>({
url: `${baseURL}`,
method: "get",
params
});
},
editConfig(data: any) {
return request<any>({
url: `${baseURL}`,
method: "post",
data
});
},
getRecord(params: any) {
return request<any>({
url: `${baseURL}/record`,
method: "get",
params
});
},
getSummary(params: any) {
return request<any>({
url: `${baseURL}/summary`,
method: "get",
params
});
},
}
export default API;

View File

@ -0,0 +1,21 @@
import request from "@/utils/request";
import { Market_BaseUrl } from "@/api/config";
const baseURL = Market_BaseUrl + "/admin/consumeDiscount";
const API = {
getConfig(params: any) {
return request<any>({
url: `${baseURL}`,
method: "get",
params
});
},
editConfig(data: any) {
return request<any>({
url: `${baseURL}`,
method: "post",
data
});
},
}
export default API;

45
src/api/market/coupon.ts Normal file
View File

@ -0,0 +1,45 @@
import request from "@/utils/request";
import { Market_BaseUrl } from "@/api/config";
const baseURL = Market_BaseUrl + "/admin/coupon";
const API = {
getList(params : any) {
return request<any>({
url: `${baseURL}/page`,
method: "get",
params
});
},
//优惠券列表/已领取详情
getDetail(params : any) {
return request<any>({
url: `${baseURL}/record`,
method: "get",
params
});
},
// 删除用户优惠券
delete(params : any) {
return request({
url: `${baseURL}/deleteRecord`,
method: "delete",
params,
});
},
//优惠券发放
giveCoupon(data : any) {
return request<any>({
url: `${baseURL}/grant`,
method: "post",
data
});
},
//优惠券发放
getRecordByUser(params : any) {
return request<any>({
url: `${baseURL}/getRecordByUser`,
method: "get",
params
});
},
}
export default API;

240
src/api/market/member.ts Normal file
View File

@ -0,0 +1,240 @@
import request from "@/utils/request";
import { Market_BaseUrl } from "@/api/config";
const baseURL = Market_BaseUrl + "/admin/member";
const API = {
getConfig(params: any) {
return request<any>({
url: `${baseURL}`,
method: "get",
params
});
},
editConfig(data: editRequest) {
return request({
url: `${baseURL}`,
method: "post",
data: data,
});
},
levelAdd(data: levelAddRequest) {
return request({
url: `${baseURL}/level`,
method: "post",
data: data,
});
},
levelEdit(data: levelEditRequest) {
return request({
url: `${baseURL}/level`,
method: "put",
data: data,
});
},
levelDel(data: levelDelRequest) {
return request<any>({
url: `${baseURL}/level/${data.id}`,
method: "delete",
// data
});
},
levelList(params: any) {
return request<any>({
url: `${baseURL}/level/list`,
method: "get",
params
});
},
}
export default API;
/**
* MemberConfigDTO
*/
export interface editRequest {
/**
*
*/
conditionList?: Condition[] | null;
/**
*
*/
configList?: ConfigList[] | null;
/**
*
*/
costReward?: number | null;
/**
* id
*/
id: number | null;
/**
*
*/
isMemberPrice: number | null;
/**
*
*/
isOpen: string;
/**
* /
*/
isSubmitInfo: number | null;
/**
*
*/
memberPriceShopIdList?: number[] | null;
/**
*
*/
rechargeReward?: number | null;
/**
*
*/
remark: null | string;
[property: string]: any;
}
/**
* com.czg.account.dto.MemberConfigDTO.condition
*
* condition
*/
export interface Condition {
code?: null | string;
value?: null | string;
[property: string]: any;
}
/**
* com.czg.account.dto.MemberConfigDTO.ConfigList
*
* ConfigList
*/
export interface ConfigList {
/**
* 1 1
*/
circleTime: null | string;
/**
*
*/
couponIdList?: number[] | null;
/**
*
*/
name: null | string;
/**
*
*/
price: number | null;
/**
*
*/
reward?: number | null;
[property: string]: any;
}
/**
* MemberLevelDTO
*/
export interface levelAddRequest {
/**
* n元送1积分, 0
*/
costRewardPoints?: number | null;
/**
*
*/
cycleRewardCouponList?: number[] | null;
/**
*
*/
cycleRewardPoints?: number | null;
/**
*
*/
cycleTime?: null | string;
/**
*
*/
discount: number | null;
/**
*
*/
experienceValue: number | null;
/**
* ID
*/
id?: number | null;
/**
* 0 1
*/
isCycleReward: number | null;
/**
* logo
*/
logo?: null | string;
/**
*
*/
name: null | string;
/**
*
*/
remark: string;
[property: string]: any;
}
/**
* MemberLevelDTOUpdateGroup
*/
export interface levelEditRequest {
/**
* n元送1积分, 0
*/
costRewardPoints?: number | null;
/**
*
*/
cycleRewardCouponList?: number[] | null;
/**
*
*/
cycleRewardPoints?: number | null;
/**
*
*/
cycleTime?: null | string;
/**
*
*/
discount?: number | null;
/**
*
*/
experienceValue?: number | null;
/**
* ID
*/
id: number | null;
/**
* 0 1
*/
isCycleReward?: number | null;
/**
* logo
*/
logo?: null | string;
/**
*
*/
name?: null | string;
[property: string]: any;
}
export interface levelDelRequest {
id: number;
[property: string]: any;
}

View File

@ -0,0 +1,58 @@
import request from "@/utils/request";
import { Account_BaseUrl } from "@/api/config";
const baseURL = Account_BaseUrl + "/admin";
// 供应商
const Api = {
/** 通知消息列表*/
getList(params: any) {
return request<any>({
url: `${baseURL}/syncNotice`,
method: "get",
params,
});
},
/** 全部*/
getAllList(params: any) {
return request<any>({
url: `${baseURL}/list`,
method: "get",
params,
});
},
get(id: string | number) {
return request<any>({
url: `${baseURL}/` + id,
method: "get",
});
},
add(data: any) {
return request<any>({
url: `${baseURL}`,
method: "post",
data,
});
},
edit(data: any) {
return request<any>({
url: `${baseURL}/syncNotice/read`,
method: "put",
data,
});
},
delete(id: string | number) {
return request<any>({
url: `${baseURL}/syncNotice?id=` + id,
method: "delete",
});
},
// 清空已读
syncNoticeclear() {
return request<any>({
url: `${baseURL}/syncNotice/clear`,
method: "delete",
});
},
};
export default Api;

View File

@ -55,7 +55,7 @@ const AuthAPI = {
method: "delete",
});
},
// 退款退回
// 同步
refundToStock(data: any) {
return request<any, Responseres>({
url: `${baseURL}/refundToStock`,
@ -63,6 +63,14 @@ const AuthAPI = {
data,
});
},
// 退款退回
sync(data: any) {
return request<any, Responseres>({
url: `${baseURL}/sync`,
method: "post",
data,
});
},
// 耗材列表
productcons(params: any) {

View File

@ -0,0 +1,51 @@
import request from "@/utils/request";
import { Product_BaseUrl } from "@/api/config";
const baseURL = Product_BaseUrl + "/admin/product";
// 供应商
const Api = {
/** 耗材库存变动记录*/
getList(params: any) {
return request<any>({
url: `${baseURL}/stock/flow`,
method: "get",
params,
});
},
/** 全部*/
getAllList(params: any) {
return request<any>({
url: `${baseURL}/list`,
method: "get",
params,
});
},
get(id: string | number) {
return request<any>({
url: `${baseURL}/` + id,
method: "get",
});
},
add(data: any) {
return request<any>({
url: `${baseURL}`,
method: "post",
data,
});
},
edit(data: any) {
return request<any>({
url: `${baseURL}`,
method: "put",
data,
});
},
delete(id: string | number) {
return request<any>({
url: `${baseURL}/` + id,
method: "delete",
});
},
};
export default Api;

View File

@ -8,7 +8,7 @@ const Api = {
return request<any>({
url: `${baseURL}/in`,
method: "post",
data
data,
});
},
//出库
@ -16,7 +16,7 @@ const Api = {
return request<any>({
url: `${baseURL}/out`,
method: "post",
data
data,
});
},
// 库存盘点记录
@ -24,7 +24,7 @@ const Api = {
return request<any>({
url: `${baseURL}/checkRecord`,
method: "get",
params
params,
});
},
//库存盘点
@ -32,7 +32,7 @@ const Api = {
return request<any>({
url: `${baseURL}/check`,
method: "post",
data
data,
});
},
//耗材报损
@ -41,7 +41,7 @@ const Api = {
return request<any>({
url: `${baseURL}/reportDamage`,
method: "post",
data
data,
});
},
//耗材库存变动记录
@ -49,11 +49,17 @@ const Api = {
return request<any>({
url: `${baseURL}/flow`,
method: "get",
params
params,
});
},
//耗材库存变动记录
reportinglosses(data: any) {
return request<any>({
url: `${baseURL}/reportDamage`,
method: "POST",
data,
});
},
};
export default Api;

60
src/api/supplier/index.ts Normal file
View File

@ -0,0 +1,60 @@
import request from "@/utils/request";
const baseURL = "/product/admin/product/vendor";
// 供应商账单
const AuthAPI = {
/** 供应商账单统计*/
getSummary(params: any) {
return request<any, Responseres>({
url: `${baseURL}/summary`,
method: "get",
params,
});
},
/** 分页*/
getPage(params: any) {
return request<any, Responseres>({
url: `${baseURL}/bill`,
method: "get",
params,
});
},
// 账单记录
getRecordList(params: any) {
return request<any, Responseres>({
url: `${baseURL}/bill/record`,
method: "get",
params,
});
},
// 账单付款记录
getPayRecordList(params: any) {
return request<any, Responseres>({
url: `${baseURL}/bill/pay/record`,
method: "get",
params,
});
},
// 账单付款
billPay(data: any) {
return request<any, Responseres>({
url: `${baseURL}/bill/pay`,
method: "post",
data,
});
},
};
export interface Responseres {
code?: number | null;
data?: any;
msg?: null | string;
[property: string]: any;
}
export default AuthAPI;

View File

@ -246,6 +246,7 @@ export interface UserInfo {
*
*/
export interface UserPageQuery extends PageQuery {
times: any;
/** 搜索关键字 */
keywords?: string;

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 900 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 957 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 805 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 943 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 895 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 947 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 945 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 813 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1018 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 857 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 962 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 930 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 930 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 792 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 777 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 857 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 896 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 857 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 774 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 935 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 918 B

BIN
src/assets/fenxiao/1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
src/assets/fenxiao/10.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
src/assets/fenxiao/2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

BIN
src/assets/fenxiao/3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

BIN
src/assets/fenxiao/4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

BIN
src/assets/fenxiao/5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

BIN
src/assets/fenxiao/6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

BIN
src/assets/fenxiao/7.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

BIN
src/assets/fenxiao/8.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

BIN
src/assets/fenxiao/9.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@ -0,0 +1,10 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M17.9166 11.6667H2.08331V17.5H17.9166V11.6667Z" fill="#999999" stroke="#999999" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M17.9166 2.5H2.08331V8.33333H17.9166V2.5Z" fill="#999999" stroke="#999999" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M6.24998 5.41665C6.24998 4.95641 5.87688 4.58331 5.41665 4.58331C4.95641 4.58331 4.58331 4.95641 4.58331 5.41665C4.58331 5.87688 4.95641 6.24998 5.41665 6.24998C5.87688 6.24998 6.24998 5.87688 6.24998 5.41665Z" fill="white"/>
<path d="M6.24998 14.5833C6.24998 14.1231 5.87688 13.75 5.41665 13.75C4.95641 13.75 4.58331 14.1231 4.58331 14.5833C4.58331 15.0436 4.95641 15.4167 5.41665 15.4167C5.87688 15.4167 6.24998 15.0436 6.24998 14.5833Z" fill="white"/>
<path d="M9.58335 5.41665C9.58335 4.95641 9.21026 4.58331 8.75002 4.58331C8.28978 4.58331 7.91669 4.95641 7.91669 5.41665C7.91669 5.87688 8.28978 6.24998 8.75002 6.24998C9.21026 6.24998 9.58335 5.87688 9.58335 5.41665Z" fill="white"/>
<path d="M9.58335 14.5833C9.58335 14.1231 9.21026 13.75 8.75002 13.75C8.28978 13.75 7.91669 14.1231 7.91669 14.5833C7.91669 15.0436 8.28978 15.4167 8.75002 15.4167C9.21026 15.4167 9.58335 15.0436 9.58335 14.5833Z" fill="white"/>
<path d="M12.9167 5.41669H14.5834" stroke="white" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M12.9167 14.5833H14.5834" stroke="white" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1,3 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1.667 4.583V3.328C1.667 2.871 2.047 2.5 2.493 2.5H17.507C17.963 2.5 18.333 2.87 18.333 3.328V16.672C18.333 17.129 17.953 17.5 17.507 17.5H2.493C2.3844 17.4999 2.27688 17.4783 2.1766 17.4367C2.07631 17.395 1.98522 17.334 1.90852 17.2571C1.83181 17.1802 1.77101 17.0889 1.72957 16.9886C1.68813 16.8882 1.66687 16.7806 1.667 16.672V15.833H16.667V6.083L10 12.083L1.667 4.583ZM0 8.333H4.167V10H0V8.333ZM0 12.5H6.667V14.167H0V12.5Z" fill="#999999"/>
</svg>

After

Width:  |  Height:  |  Size: 557 B

View File

@ -0,0 +1,3 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M9.615 18.1062H1.9775C1.89214 18.1081 1.80725 18.0931 1.72769 18.0621C1.64813 18.0311 1.57545 17.9847 1.51381 17.9256C1.45217 17.8666 1.40278 17.7959 1.36845 17.7177C1.33412 17.6395 1.31554 17.5554 1.31375 17.47V12.2475C1.31736 12.0753 1.38916 11.9116 1.51337 11.7923C1.63758 11.673 1.80406 11.6079 1.97625 11.6112C2.06172 11.6094 2.1467 11.6245 2.22635 11.6555C2.30599 11.6866 2.37872 11.7331 2.44037 11.7923C2.50203 11.8515 2.5514 11.9223 2.58565 12.0006C2.61991 12.079 2.63838 12.1633 2.64 12.2487V16.8338H9.02C9.16625 17.2838 9.3675 17.71 9.615 18.1062ZM19.2463 6.0475C19.3963 6.35125 19.4888 6.6875 19.4875 7.0475C19.4875 8.3375 18.3962 9.3825 17.0512 9.3825C15.705 9.3825 14.6137 8.3375 14.6137 7.04625C14.6137 8.3375 13.5238 9.38375 12.1788 9.38375C10.835 9.38375 9.74375 8.33875 9.7425 7.04875C9.7425 8.33875 8.65125 9.3825 7.3075 9.3825C5.9625 9.3825 4.87125 8.3375 4.87125 7.04625C4.87125 8.3375 3.78125 9.38375 2.43625 9.38375C1.09 9.3825 0 8.3375 0 7.045C0.00230884 6.69793 0.0848782 6.3561 0.24125 6.04625L1.59125 2.72875H17.895L19.245 6.04625L19.2463 6.0475ZM1.52875 1.74375C1.53036 1.61352 1.58273 1.48905 1.67471 1.39684C1.76669 1.30463 1.89102 1.25194 2.02125 1.25H17.4875C17.7587 1.25 17.98 1.47875 17.98 1.74375C17.9781 1.87377 17.9256 1.99791 17.8336 2.08986C17.7417 2.1818 17.6175 2.23431 17.4875 2.23625H2.02125C1.89103 2.23495 1.76652 2.18264 1.67444 2.09056C1.58236 1.99848 1.53005 1.87397 1.52875 1.74375ZM15 20C13.6739 20 12.4021 19.4732 11.4645 18.5355C10.5268 17.5979 10 16.3261 10 15C10 13.6739 10.5268 12.4021 11.4645 11.4645C12.4021 10.5268 13.6739 10 15 10C16.3261 10 17.5979 10.5268 18.5355 11.4645C19.4732 12.4021 20 13.6739 20 15C20 16.3261 19.4732 17.5979 18.5355 18.5355C17.5979 19.4732 16.3261 20 15 20ZM17.2938 14.9325C17.349 14.9335 17.4039 14.9236 17.4553 14.9033C17.5068 14.883 17.5537 14.8528 17.5934 14.8144C17.6331 14.7759 17.6648 14.73 17.6868 14.6793C17.7087 14.6286 17.7204 14.574 17.7213 14.5187C17.7204 14.4634 17.7087 14.4088 17.6868 14.358C17.6649 14.3072 17.6332 14.2612 17.5935 14.2227C17.5538 14.1842 17.5069 14.1538 17.4554 14.1334C17.404 14.113 17.3491 14.1029 17.2938 14.1037H16.1875L17.2913 13.0325C17.331 12.9946 17.3626 12.949 17.3842 12.8985C17.4057 12.848 17.4169 12.7937 17.4169 12.7387C17.4169 12.6838 17.4057 12.6295 17.3842 12.579C17.3626 12.5285 17.331 12.4829 17.2913 12.445C17.2099 12.3674 17.1018 12.3242 16.9894 12.3242C16.877 12.3242 16.7689 12.3674 16.6875 12.445L15.1213 13.9675L13.5538 12.445C13.4724 12.3674 13.3643 12.3242 13.2519 12.3242C13.1395 12.3242 13.0314 12.3674 12.95 12.445C12.9103 12.4829 12.8787 12.5285 12.8571 12.579C12.8355 12.6295 12.8244 12.6838 12.8244 12.7387C12.8244 12.7937 12.8355 12.848 12.8571 12.8985C12.8787 12.949 12.9103 12.9946 12.95 13.0325L14.0538 14.1037H13.02C12.9647 14.1029 12.9097 14.113 12.8583 14.1334C12.8069 14.1538 12.76 14.1842 12.7203 14.2227C12.6806 14.2612 12.6489 14.3072 12.6269 14.358C12.605 14.4088 12.5933 14.4634 12.5925 14.5187C12.5925 14.7475 12.785 14.9325 13.02 14.9325H14.7287V15.7613H13.02C12.9647 15.7604 12.9097 15.7705 12.8583 15.7909C12.8069 15.8113 12.76 15.8417 12.7203 15.8802C12.6806 15.9187 12.6489 15.9647 12.6269 16.0155C12.605 16.0663 12.5933 16.1209 12.5925 16.1762C12.5925 16.405 12.7838 16.5912 13.02 16.5912H14.7287V17.5587C14.7287 17.7875 14.92 17.9725 15.1562 17.9725C15.2116 17.9735 15.2665 17.9636 15.318 17.9433C15.3695 17.9231 15.4165 17.8929 15.4563 17.8544C15.4961 17.816 15.528 17.7701 15.5501 17.7194C15.5722 17.6687 15.584 17.6141 15.585 17.5587V16.5912H17.2938C17.3491 16.5921 17.404 16.582 17.4554 16.5616C17.5069 16.5412 17.5538 16.5108 17.5935 16.4723C17.6332 16.4338 17.6649 16.3878 17.6868 16.337C17.7087 16.2862 17.7204 16.2316 17.7213 16.1762C17.7206 16.1209 17.709 16.0662 17.6871 16.0153C17.6653 15.9644 17.6336 15.9184 17.5938 15.8798C17.5541 15.8413 17.5071 15.8109 17.4556 15.7906C17.4041 15.7702 17.3491 15.7603 17.2938 15.7613H15.585V14.9325H17.2938Z" fill="#999999"/>
</svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@ -0,0 +1,8 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7.50002 1.66675H2.50002C2.03978 1.66675 1.66669 2.03984 1.66669 2.50008V7.50008C1.66669 7.96033 2.03978 8.33341 2.50002 8.33341H7.50002C7.96027 8.33341 8.33335 7.96033 8.33335 7.50008V2.50008C8.33335 2.03984 7.96027 1.66675 7.50002 1.66675Z" fill="#999999" stroke="#999999" stroke-width="1.25" stroke-linejoin="round"/>
<path d="M7.50002 11.6667H2.50002C2.03978 11.6667 1.66669 12.0398 1.66669 12.5001V17.5001C1.66669 17.9603 2.03978 18.3334 2.50002 18.3334H7.50002C7.96027 18.3334 8.33335 17.9603 8.33335 17.5001V12.5001C8.33335 12.0398 7.96027 11.6667 7.50002 11.6667Z" fill="#999999" stroke="#999999" stroke-width="1.25" stroke-linejoin="round"/>
<path d="M17.5 1.66675H12.5C12.0398 1.66675 11.6667 2.03984 11.6667 2.50008V7.50008C11.6667 7.96033 12.0398 8.33341 12.5 8.33341H17.5C17.9603 8.33341 18.3334 7.96033 18.3334 7.50008V2.50008C18.3334 2.03984 17.9603 1.66675 17.5 1.66675Z" fill="#999999" stroke="#999999" stroke-width="1.25" stroke-linejoin="round"/>
<path d="M11.6667 11.6667H18.3334" stroke="#999999" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M15 15H18.3333" stroke="#999999" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M11.6667 18.3333H18.3334" stroke="#999999" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,3 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7.24623 1.85525C7.58117 1.85525 7.8678 1.97119 8.10612 2.20307C8.34444 2.43495 8.4636 2.71836 8.4636 3.0533V7.88413C8.4636 8.21907 8.34444 8.5057 8.10612 8.74402C7.8678 8.98234 7.58117 9.1015 7.24623 9.1015H2.41539C2.08046 9.1015 1.79705 8.98234 1.56517 8.74402C1.33329 8.5057 1.21735 8.21907 1.21735 7.88413V3.0533C1.21735 2.71836 1.33329 2.43495 1.56517 2.20307C1.79705 1.97119 2.08046 1.85525 2.41539 1.85525H7.24623ZM7.24623 11.5169C7.58117 11.5169 7.8678 11.6329 8.10612 11.8647C8.34444 12.0966 8.4636 12.38 8.4636 12.715V17.5651C8.4636 17.9001 8.34444 18.1835 8.10612 18.4154C7.8678 18.6472 7.58117 18.7632 7.24623 18.7632H2.41539C2.08046 18.7632 1.79705 18.6472 1.56517 18.4154C1.33329 18.1835 1.21735 17.9001 1.21735 17.5651V12.715C1.21735 12.38 1.33329 12.0966 1.56517 11.8647C1.79705 11.6329 2.08046 11.5169 2.41539 11.5169H7.24623ZM16.9272 11.5169C17.2622 11.5169 17.5456 11.6329 17.7775 11.8647C18.0093 12.0966 18.1253 12.38 18.1253 12.715V17.5651C18.1253 17.9001 18.0093 18.1835 17.7775 18.4154C17.5456 18.6472 17.2622 18.7632 16.9272 18.7632H12.0964C11.7615 18.7632 11.4748 18.6472 11.2365 18.4154C10.9982 18.1835 10.879 17.9001 10.879 17.5651V12.715C10.879 12.38 10.9982 12.0966 11.2365 11.8647C11.4748 11.6329 11.7615 11.5169 12.0964 11.5169H16.9272ZM19.6132 3.98082C19.8708 4.23846 19.9996 4.54119 19.9996 4.88901C19.9996 5.23683 19.8708 5.53313 19.6132 5.77789L16.019 9.37203C15.7614 9.62967 15.4619 9.7585 15.1205 9.7585C14.7791 9.7585 14.4796 9.62967 14.222 9.37203L10.6278 5.77789C10.3831 5.53313 10.2607 5.23683 10.2607 4.88901C10.2607 4.54119 10.3831 4.23846 10.6278 3.98082L14.222 0.386675C14.4796 0.141912 14.7791 0.0195312 15.1205 0.0195312C15.4619 0.0195312 15.7614 0.141912 16.019 0.386675L19.6132 3.98082Z" fill="#999999"/>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -0,0 +1,4 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M16.683 9.16663V17.5H3.34961V9.16663" stroke="#999999" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M2.43428 5.74025C1.79697 7.39071 3.02626 9.16667 4.79548 9.16667C6.17619 9.16667 7.30315 8.04737 7.30315 6.66667C7.30315 8.04737 8.42244 9.16667 9.80315 9.16667H10.2275C11.6082 9.16667 12.7275 8.04737 12.7275 6.66667C12.7275 8.04737 13.8549 9.16667 15.2356 9.16667C17.0058 9.16667 18.2362 7.38967 17.5984 5.73846L16.3474 2.5H3.68549L2.43428 5.74025Z" fill="#999999" stroke="#999999" stroke-width="1.25" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 674 B

View File

@ -0,0 +1,4 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M5.66718 15.3125H14.3328V16.1719H5.66718V15.3125ZM12.7246 5.09766H7.27538C7.11998 5.09766 6.97094 5.15939 6.86106 5.26927C6.75117 5.37916 6.68944 5.52819 6.68944 5.68359C6.68944 5.83899 6.75117 5.98803 6.86106 6.09791C6.97094 6.2078 7.11998 6.26953 7.27538 6.26953H12.7246C12.88 6.26953 13.029 6.2078 13.1389 6.09791C13.2488 5.98803 13.3105 5.83899 13.3105 5.68359C13.3105 5.52819 13.2488 5.37916 13.1389 5.26927C13.029 5.15939 12.88 5.09766 12.7246 5.09766ZM12.7246 6.95312H7.27538C7.11998 6.95312 6.97094 7.01486 6.86106 7.12474C6.75117 7.23463 6.68944 7.38366 6.68944 7.53906C6.68944 7.69446 6.75117 7.8435 6.86106 7.95338C6.97094 8.06327 7.11998 8.125 7.27538 8.125H12.7246C12.88 8.125 13.029 8.06327 13.1389 7.95338C13.2488 7.8435 13.3105 7.69446 13.3105 7.53906C13.3105 7.38366 13.2488 7.23463 13.1389 7.12474C13.029 7.01486 12.88 6.95312 12.7246 6.95312Z" fill="#999999"/>
<path d="M16.8652 9.01797H14.9219V4.80469C14.9214 4.34901 14.7401 3.91213 14.4179 3.58992C14.0957 3.2677 13.6588 3.08645 13.2031 3.08594H6.79688C6.34119 3.08645 5.90432 3.2677 5.58211 3.58992C5.25989 3.91213 5.07864 4.34901 5.07812 4.80469V9.01797H3.13477C2.39902 9.01797 1.79688 9.66523 1.79688 10.4564V15.476C1.79688 16.2668 2.39902 16.9141 3.13477 16.9141H4.95352V15.6436C4.95352 15.2566 5.3377 14.9404 5.80742 14.9404H14.1926C14.6613 14.9404 15.0465 15.257 15.0465 15.6436V16.9141H16.8652C17.601 16.9141 18.2031 16.2668 18.2031 15.4756V10.4561C18.2031 9.66523 17.601 9.01797 16.8652 9.01797ZM6.25 4.80469C6.25 4.65965 6.30762 4.52055 6.41018 4.41799C6.51274 4.31543 6.65183 4.25781 6.79688 4.25781H13.2031C13.3482 4.25781 13.4873 4.31543 13.5898 4.41799C13.6924 4.52055 13.75 4.65965 13.75 4.80469V9.01797H6.25V4.80469ZM16.3574 12.6953C16.2087 12.6953 16.0633 12.6512 15.9397 12.5686C15.816 12.486 15.7196 12.3685 15.6627 12.2311C15.6058 12.0937 15.5909 11.9425 15.6199 11.7967C15.6489 11.6508 15.7205 11.5168 15.8257 11.4116C15.9309 11.3065 16.0649 11.2349 16.2107 11.2059C16.3566 11.1768 16.5078 11.1917 16.6452 11.2486C16.7826 11.3056 16.9 11.4019 16.9826 11.5256C17.0653 11.6493 17.1094 11.7946 17.1094 11.9434C17.1094 12.1428 17.0302 12.3341 16.8891 12.4751C16.7481 12.6161 16.5569 12.6953 16.3574 12.6953Z" fill="#999999"/>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1,11 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M17.5 2.5H13.3333V6.66667H17.5V2.5Z" fill="#999999" stroke="#999999" stroke-width="1.16667" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M17.5 13.3334H13.3333V17.5H17.5V13.3334Z" fill="#999999" stroke="#999999" stroke-width="1.16667" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M6.66667 13.3334H2.5V17.5H6.66667V13.3334Z" fill="#999999" stroke="#999999" stroke-width="1.16667" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M6.66667 2.5H2.5V6.66667H6.66667V2.5Z" fill="#999999" stroke="#999999" stroke-width="1.16667" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M3.33331 10H12.5" stroke="#999999" stroke-width="1.16667" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M15.8333 10H16.6666" stroke="#999999" stroke-width="1.16667" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M10 15.4166V16.25" stroke="#999999" stroke-width="1.16667" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M10 7.08337V12.9167" stroke="#999999" stroke-width="1.16667" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M10 3.33337V4.16671" stroke="#999999" stroke-width="1.16667" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -0,0 +1,8 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1.66669 17.5H18.3334" stroke="#999999" stroke-width="0.416667"/>
<path d="M1.66669 17.5H18.3334Z" fill="#999999"/>
<path d="M1.66669 17.5H18.3334" stroke="#999999" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M5.83331 11.6666H3.33331V17.5H5.83331V11.6666Z" fill="#999999" stroke="#999999" stroke-width="1.25" stroke-linejoin="round"/>
<path d="M11.25 7.5H8.75V17.5H11.25V7.5Z" fill="#999999" stroke="#999999" stroke-width="1.25" stroke-linejoin="round"/>
<path d="M16.6667 2.5H14.1667V17.5H16.6667V2.5Z" fill="#999999" stroke="#999999" stroke-width="1.25" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 728 B

View File

@ -0,0 +1,6 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M6.24998 5.83333C7.17045 5.83333 7.91665 5.08714 7.91665 4.16667C7.91665 3.24619 7.17045 2.5 6.24998 2.5C5.32951 2.5 4.58331 3.24619 4.58331 4.16667C4.58331 5.08714 5.32951 5.83333 6.24998 5.83333Z" fill="#999999" stroke="#999999" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M13.75 5.83333C14.6705 5.83333 15.4166 5.08714 15.4166 4.16667C15.4166 3.24619 14.6705 2.5 13.75 2.5C12.8295 2.5 12.0833 3.24619 12.0833 4.16667C12.0833 5.08714 12.8295 5.83333 13.75 5.83333Z" fill="#999999" stroke="#999999" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M4.16669 8.33325H8.33335L7.50002 17.4999H5.00002L4.16669 8.33325Z" fill="#999999" stroke="#999999" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M11.6666 8.33325H15.8333L16.6666 12.9166H15.4166L15 17.4999H12.5L12.0833 12.9166H10.8333L11.6666 8.33325Z" fill="#999999" stroke="#999999" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,12 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_317_13091)">
<path d="M4.16197 13.8286C3.83088 13.8286 3.56146 13.5215 3.56146 13.144C3.56146 12.7664 3.83088 12.4591 4.16197 12.4591H8.0765C8.40759 12.4591 8.67676 12.7662 8.67676 13.144C8.67676 13.5217 8.40759 13.8286 8.0765 13.8286H4.16197ZM4.16197 9.43211C3.83088 9.43211 3.56146 9.12496 3.56146 8.74744C3.56146 8.36992 3.83088 8.06277 4.16197 8.06277H11.991C12.3221 8.06277 12.5913 8.36992 12.5913 8.74744C12.5913 9.12496 12.3212 9.43211 11.9896 9.43211H4.16197ZM4.16197 5.0334C3.83088 5.0334 3.56146 4.72625 3.56146 4.34873C3.56146 3.97121 3.83088 3.66406 4.16197 3.66406H11.991C12.3221 3.66406 12.5913 3.97121 12.5913 4.34873C12.5913 4.72625 12.3212 5.0334 11.9891 5.0334H4.16197Z" fill="#999999"/>
<path d="M17.7037 19.9724C17.6231 19.9717 17.5436 19.9536 17.4705 19.9195C17.3975 19.8855 17.3326 19.8361 17.2802 19.7748L16.3713 18.7552C16.1321 18.487 16.1321 18.0505 16.3713 17.7823C16.4231 17.7204 16.4879 17.6707 16.561 17.6365C16.6341 17.6024 16.7139 17.5847 16.7946 17.5847C16.8753 17.5847 16.955 17.6024 17.0281 17.6365C17.1012 17.6707 17.166 17.7204 17.2178 17.7823L18.1266 18.8016C18.3658 19.0701 18.3658 19.5066 18.1266 19.7748C18.0743 19.836 18.0095 19.8853 17.9365 19.9194C17.8636 19.9534 17.7842 19.9715 17.7037 19.9724ZM2.16476 18.9608C1.47453 18.9608 0.912964 18.3242 0.912964 17.5424V1.41843C0.912964 0.636541 1.47453 0 2.16476 0H13.9555C14.6457 0 15.2073 0.636057 15.2073 1.41795V8.01432C15.2073 8.39184 14.9379 8.69899 14.6068 8.69899C14.2757 8.69899 14.0065 8.39208 14.0065 8.01432V2.15244C14.0065 1.72171 13.6921 1.37103 13.3052 1.37103H2.81606C2.4291 1.37103 2.1147 1.72171 2.1147 2.15244V16.8083C2.1147 17.2393 2.4291 17.5898 2.81606 17.5898H9.3834C9.71425 17.5898 9.98367 17.8971 9.98367 18.2747C9.98367 18.6522 9.71425 18.9608 9.3834 18.9608H2.16476ZM17.1982 16.0279C16.8659 16.0279 16.5958 15.7208 16.5958 15.3432C16.5958 14.9657 16.8659 14.6583 17.1982 14.6583H18.4846C18.8169 14.6583 19.087 14.9655 19.087 15.3432C19.087 15.721 18.8169 16.0279 18.4846 16.0279H17.1982ZM16.7948 13.1016C16.7142 13.1008 16.6347 13.0827 16.5617 13.0486C16.4886 13.0146 16.4237 12.9652 16.3713 12.904C16.1321 12.6358 16.1321 12.1992 16.3713 11.931L17.2802 10.9116C17.332 10.8498 17.3968 10.8001 17.4699 10.766C17.543 10.7319 17.6227 10.7142 17.7034 10.7142C17.7841 10.7142 17.8638 10.7319 17.9369 10.766C18.01 10.8001 18.0748 10.8498 18.1266 10.9116C18.3668 11.1791 18.3668 11.6154 18.1266 11.8848L17.2183 12.904C17.1659 12.9652 17.101 13.0146 17.028 13.0487C16.9549 13.0828 16.8754 13.1008 16.7948 13.1016Z" fill="#999999"/>
<path d="M14.5718 18.0017C14.4408 18.0002 14.3147 17.9521 14.216 17.866L12.6331 16.5342H11.6336C11.4841 16.5342 11.3578 16.3891 11.3578 16.2183V14.019C11.3578 13.8436 11.4817 13.7007 11.6336 13.7007H12.6331L14.216 12.3691C14.3147 12.283 14.4408 12.2348 14.5718 12.2334C14.862 12.2334 15.1764 12.4956 15.1764 12.9193V17.3163C15.1795 17.5 15.1123 17.678 14.9885 17.8138C14.9354 17.8717 14.8711 17.9183 14.7994 17.9506C14.7278 17.9829 14.6503 18.0003 14.5718 18.0017Z" fill="#999999"/>
</g>
<defs>
<clipPath id="clip0_317_13091">
<rect width="20" height="20" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -0,0 +1,4 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1.43164 16.3242V1.64062H0V18.1133H20V16.3242H1.43164Z" fill="#999999"/>
<path d="M3.07031 9.45508H6.29102V15.1797H3.07031V9.45508ZM7.06641 4.51953H10.2871V15.1797H7.06641V4.51953ZM11.0332 7.23437H14.2539V15.1816H11.0332V7.23437ZM14.998 3.05859H18.2187V15.1797H14.998V3.05859Z" fill="#999999"/>
</svg>

After

Width:  |  Height:  |  Size: 407 B

View File

@ -0,0 +1,6 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M15.8333 11.6667H4.16667C3.24619 11.6667 2.5 12.4129 2.5 13.3334V15.8334C2.5 16.7539 3.24619 17.5001 4.16667 17.5001H15.8333C16.7538 17.5001 17.5 16.7539 17.5 15.8334V13.3334C17.5 12.4129 16.7538 11.6667 15.8333 11.6667Z" stroke="#999999" stroke-width="1.25"/>
<path d="M8.33333 2.91675H4.16667C3.24619 2.91675 2.5 3.66294 2.5 4.58341V7.08341C2.5 8.00387 3.24619 8.75008 4.16667 8.75008H8.33333" stroke="#999999" stroke-width="1.25" stroke-linecap="round"/>
<path d="M14.1666 9.16667C16.0076 9.16667 17.5 7.67428 17.5 5.83333C17.5 3.99238 16.0076 2.5 14.1666 2.5C12.3257 2.5 10.8333 3.99238 10.8333 5.83333C10.8333 7.67428 12.3257 9.16667 14.1666 9.16667Z" fill="#999999" stroke="#999999" stroke-width="1.25"/>
<path d="M14.1667 7.08325C14.857 7.08325 15.4167 6.52361 15.4167 5.83325C15.4167 5.1429 14.857 4.58325 14.1667 4.58325C13.4763 4.58325 12.9167 5.1429 12.9167 5.83325C12.9167 6.52361 13.4763 7.08325 14.1667 7.08325Z" fill="#999999"/>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -0,0 +1,6 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4.16669 2.50008C4.16669 2.03984 4.53977 1.66675 5.00002 1.66675H15C15.4603 1.66675 15.8334 2.03984 15.8334 2.50008V18.3334L12.9167 16.2501L10 18.3334L7.08335 16.2501L4.16669 18.3334V2.50008Z" fill="#999999" stroke="#999999" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M7.5 9.16675H12.5" stroke="white" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M7.5 12.5H12.5" stroke="white" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M7.5 5.83325H12.5" stroke="white" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 739 B

View File

@ -0,0 +1,10 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M17.9166 11.6667H2.08331V17.5001H17.9166V11.6667Z" fill="#999999" stroke="#999999" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M17.9166 2.5H2.08331V8.33333H17.9166V2.5Z" fill="#999999" stroke="#999999" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M6.24998 5.41659C6.24998 4.95635 5.87688 4.58325 5.41665 4.58325C4.95641 4.58325 4.58331 4.95635 4.58331 5.41659C4.58331 5.87682 4.95641 6.24992 5.41665 6.24992C5.87688 6.24992 6.24998 5.87682 6.24998 5.41659Z" fill="white"/>
<path d="M6.24998 14.5833C6.24998 14.1231 5.87688 13.75 5.41665 13.75C4.95641 13.75 4.58331 14.1231 4.58331 14.5833C4.58331 15.0436 4.95641 15.4167 5.41665 15.4167C5.87688 15.4167 6.24998 15.0436 6.24998 14.5833Z" fill="white"/>
<path d="M9.58335 5.41659C9.58335 4.95635 9.21026 4.58325 8.75002 4.58325C8.28978 4.58325 7.91669 4.95635 7.91669 5.41659C7.91669 5.87682 8.28978 6.24992 8.75002 6.24992C9.21026 6.24992 9.58335 5.87682 9.58335 5.41659Z" fill="white"/>
<path d="M9.58335 14.5833C9.58335 14.1231 9.21026 13.75 8.75002 13.75C8.28978 13.75 7.91669 14.1231 7.91669 14.5833C7.91669 15.0436 8.28978 15.4167 8.75002 15.4167C9.21026 15.4167 9.58335 15.0436 9.58335 14.5833Z" fill="white"/>
<path d="M12.9167 5.41675H14.5834" stroke="white" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M12.9167 14.5833H14.5834" stroke="white" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -1,7 +1,10 @@
<template>
<el-breadcrumb class="flex-y-center">
<el-breadcrumb-item v-for="(item, index) in breadcrumbs" :key="item.path">
<span v-if="item.redirect === 'noredirect' || index === breadcrumbs.length - 1" class="color-gray-400">
<span
v-if="item.redirect === 'noredirect' || index === breadcrumbs.length - 1"
class="color-gray-400"
>
{{ translateRouteTitle(item.meta.title) }}
</span>
<a v-else @click.prevent="handleLink(item)">

View File

@ -515,6 +515,7 @@ import {
import ExcelJS from "exceljs";
import { reactive, ref } from "vue";
import type { IContentConfig, IObject, IOperatData } from "./types";
import { el } from "element-plus/es/locale";
//
const props = defineProps<{
@ -592,6 +593,45 @@ const selectionData = ref<IObject[]>([]);
// ID
const removeIds = ref<(number | string)[]>([]);
function handleSelectionChange(selection: any[]) {
console.log("selectionData.value", selectionData.value);
// if(selection.length==0){
// selectionData.value=selectionData.value.filter((item) => {
// return pageData.value.find(v=>v[pk]===item[pk])!=undefined
// });
// }else{
// selectionData.value=selectionData.value.filter((item) => {
// return pageData.value.find(v=>v[pk]===item[pk])==undefined
// });
// }
//
if (selection.length == 0 && selectionData.value.length > 0) {
defaultSelData.value = defaultSelData.value.filter((item) => {
return pageData.value.find((v) => v[pk] === item[pk]) != undefined;
});
}
//
if (selection.length > 0 && selectionData.value.length == 0) {
defaultSelData.value = selection;
}
//
if (selection.length > 0 && selectionData.value.length > 0) {
defaultSelData.value = defaultSelData.value.filter((item) => {
const isNowPageData = pageData.value.find((v) => v[pk] === item[pk]);
if (isNowPageData) {
return selection.find((v) => v[pk] === item[pk]) != undefined;
} else {
return true;
}
});
for (let i of selection) {
if (defaultSelData.value.find((v) => v[pk] === i[pk]) == undefined) {
defaultSelData.value.push(i);
}
}
}
console.log("defaultSelData.value", defaultSelData.value);
selectionData.value = selection;
removeIds.value = selection.map((item) => item[pk]);
}
@ -990,6 +1030,9 @@ function fetchPageData(formData: IObject = {}, isRestart = false) {
} else {
pageData.value = data;
}
nextTick(() => {
setSelectTable(defaultSelData.value);
});
})
.finally(() => {
loading.value = false;
@ -1030,14 +1073,42 @@ function saveXlsx(fileData: BlobPart, fileName: string) {
document.body.removeChild(downloadLink);
window.URL.revokeObjectURL(downloadUrl);
}
function test(rows: any[]) {
console.log(tableRef, "tioshi222222222222222222222");
// rows.forEach((row) => {
// tableRef.value!.toggleRowSelection(row, undefined)
// })
function test(rows: any[]) {}
const defaultSelData = ref<IObject[]>([]);
//
function setSelectTable(rows: any[]) {
selectionData.value = rows;
defaultSelData.value = rows;
pageData.value.forEach((element: IObject) => {
rows.forEach((row) => {
if (element.id == row.id) {
console.log("selected", element);
tableRef.value!.toggleRowSelection(element, true);
}
});
});
}
//
function clearSelectTable() {
selectionData.value = [];
defaultSelData.value = [];
pageData.value.forEach((element: IObject) => {
tableRef.value!.toggleRowSelection(element, false);
});
}
//
defineExpose({ fetchPageData, exportPageData, getFilterParams, getselectTable, pagination, test });
defineExpose({
clearSelectTable,
fetchPageData,
exportPageData,
getFilterParams,
getselectTable,
pagination,
test,
setSelectTable,
});
</script>
<style lang="scss" scoped>

View File

@ -11,24 +11,15 @@
<template>
<div style="z-index: 999; border: 1px solid #ccc">
<!-- 工具栏 -->
<Toolbar
:editor="editorRef"
mode="simple"
:default-config="toolbarConfig"
style="border-bottom: 1px solid #ccc"
/>
<Toolbar :editor="editorRef" mode="simple" :default-config="toolbarConfig" style="border-bottom: 1px solid #ccc" />
<!-- 编辑器 -->
<Editor
v-model="modelValue"
:style="{ height: height, overflowY: 'hidden' }"
:default-config="editorConfig"
mode="simple"
@on-created="handleCreated"
/>
<Editor v-model="modelValue" :style="{ height: height, overflowY: 'hidden' }" :default-config="editorConfig"
mode="simple" @on-created="handleCreated" />
</div>
</template>
<script setup lang="ts">
import dayjs from "dayjs";
import "@wangeditor-next/editor/dist/css/style.css";
import { Toolbar, Editor } from "@wangeditor-next/editor-for-vue";
import { IToolbarConfig, IEditorConfig } from "@wangeditor-next/editor";
@ -37,7 +28,7 @@ import { IToolbarConfig, IEditorConfig } from "@wangeditor-next/editor";
import FileAPI from "@/api/file";
//
type InsertFnType = (url: string, alt: string, href: string) => void;
type InsertFnType = (url: any, alt: any, href: any) => void;
defineProps({
height: {
@ -68,8 +59,11 @@ const editorConfig = ref<Partial<IEditorConfig>>({
customUpload(file: File, insertFn: InsertFnType) {
//
FileAPI.uploadFile(file).then((res) => {
console.log('上传图', res);
//
insertFn(res.url, res.name, res.url);
insertFn(res, dayjs().valueOf(), res);
});
},
} as any,

View File

@ -0,0 +1,85 @@
<template>
<div>
<div v-for="(item, index) in modelValue" :key="index" class="flex gap-4 mb-2">
<el-select
v-model="item.coupon.id"
placeholder="请选择优惠券"
@change="changeCoupon($event, index)"
>
<el-option
v-for="coupon in couponList"
:key="coupon.id"
:label="coupon.title"
:value="coupon.id"
/>
</el-select>
<el-input v-model="item.num" placeholder="请输入数量">
<template #append>数量</template>
</el-input>
<div>
<el-link
:underline="false"
type="danger"
class="no-wrap"
@click="modelValue.splice(index, 1)"
>
删除
</el-link>
</div>
</div>
<div class="flex">
<div class="flex gap-1 cursor-pointer" @click="addCoupon()">
<el-icon color="#3F9EFF">
<CirclePlus />
</el-icon>
<el-link :underline="false" type="primary" class="no-wrap">新增券</el-link>
</div>
</div>
</div>
</template>
<script setup>
import couponApi from "@/api/market/coupon";
import { ref, reactive, onMounted } from "vue";
const modelValue = defineModel({
type: Array,
default: () => [],
});
//
const couponList = ref([]);
function addCoupon() {
if (!modelValue.value) {
modelValue.value = [
{
num: 1,
coupon: {
id: null,
},
},
];
return;
}
modelValue.value.push({
num: 1,
coupon: {
id: null,
},
});
console.log(modelValue.value);
}
onMounted(() => {
couponApi.getList({ size: 999 }).then((res) => {
if (res) {
couponList.value = res.records || [];
}
});
});
function changeCoupon(e, index) {
const coupon = couponList.value.find((item) => item.id === e);
console.log(coupon);
modelValue.value[index].coupon = coupon;
}
</script>

View File

@ -1,45 +1,44 @@
<template>
<el-dialog v-model="dialogVisible" :title="props.title" :width="props.width">
<el-dialog v-model="dialogVisible" :title="props.title" :width="props.width" @close="close">
<slot></slot>
<template #footer>
<span class="dialog-footer">
<el-button @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="Confirm">
确定
</el-button>
<el-button @click="close">取消</el-button>
<el-button type="primary" @click="Confirm">确定</el-button>
</span>
</template>
</el-dialog>
</template>
<script lang="ts" setup>
import { ref } from 'vue'
import { ElMessageBox } from 'element-plus'
import { ref } from "vue";
import { ElMessageBox } from "element-plus";
let props = defineProps({
title: {
type: String,
default: 'Dialog'
default: "Dialog",
},
width: {
type: String,
default: '30%'
}
})
const emit = defineEmits(['confirm'])
const dialogVisible = ref(false)
default: "30%",
},
});
const emit = defineEmits(["confirm", "close"]);
const dialogVisible = ref(false);
function open() {
dialogVisible.value = true
dialogVisible.value = true;
}
function Confirm() {
emit('confirm')
emit("confirm");
}
function close() {
dialogVisible.value = false
dialogVisible.value = false;
emit("close");
}
defineExpose({ open, close })
defineExpose({ open, close });
</script>
<style scoped>
.dialog-footer button:first-child {

98
src/data/menus.ts Normal file
View File

@ -0,0 +1,98 @@
//收银机菜单列表
export const casher_windows_menus = [
{
title: '销售汇总',
icon: '/static/indexImg/PAGE_SALES_SUMMARY.svg',
pageUrl: 'PAGES_SALES_SUMMARY'
},
{
title: '代客下单',
icon: '/static/indexImg/icon-substitute-ordering.svg',
pageUrl: 'PAGES_CREATE_ORDER',
},
{
title: '桌台',
icon: '/static/indexImg/icon-table.svg',
pageUrl: 'PAGES_TABLE'
},
{
title: '商品管理',
icon: '/static/indexImg/icon-product-control.svg',
pageUrl: 'PAGES_PRODUCT'
},
{
title: '分组管理',
icon: '/static/indexImg/goods-group.svg',
pageUrl: 'PAGES_GOODS_GROUP'
},
{
title: '分类管理',
icon: '/static/indexImg/icon-category.svg',
pageUrl: 'PAGES_CATEGORY'
},
{
title: '会员管理',
icon: '/static/indexImg/icon-user.svg',
pageUrl: 'PAGES_USER_CONTROL'
},
{
title: '员工管理',
icon: '/static/indexImg/icon-staff.svg',
pageUrl: 'PAGES_STAFF'
},
{
title: '耗材管理',
icon: '/static/indexImg/PAGE_SALES_SUMMARY.svg',
pageUrl: 'PAGES_SALES_CONSUMABLES'
},
{
title: '订单管理',
icon: '/static/indexImg/icon-order.svg',
pageUrl: 'PAGES_ORDER_INDEX'
},
{
title: '设备管理',
icon: '/static/indexImg/icon-printer.svg',
pageUrl: 'PAGES_PRINTER_INDEX'
},
{
title: '交班',
icon: '/static/indexImg/icon-work.svg',
pageUrl: 'PAGES_WORK_INDEX'
},
{
title: '排队',
icon: '/static/indexImg/icon-line-up.svg',
pageUrl: 'PAGES_LINE_UP'
},
{
title: '霸王餐',
icon: '/static/indexImg/icon-bwc.svg',
pageUrl: 'PAGES_BWC'
},
{
title: '优惠券',
icon: '/static/coupon/icon_coupon.svg',
pageUrl: 'PAGES_COUPON_INDEX'
},
{
title: '订阅通知',
icon: '/static/indexImg/icon-notification.svg',
pageUrl: 'PAGES_NOTIFICATION_INDEX'
},
{
title: '挂账管理',
icon: '/static/indexImg/icon_credit.svg',
pageUrl: 'PAGES_CREDIT_BUYER_INDEX'
},
{
title: '核销管理',
icon: '/static/indexImg/pagewriteoff.svg',
pageUrl: 'PAGES_WEITEOFF'
},
{
title: '退出登录',
icon: '/static/indexImg/icon-login-out.svg',
pageUrl: 'PAGES_LOGIN',
}
]

View File

@ -1,19 +1,70 @@
<template>
<div class="logo">
<transition name="el-fade-in-linear" mode="out-in">
<router-link :key="+collapse" class="wh-full flex-center" to="/">
<img :src="userStore.userInfo.logo" class="w20px h20px" />
<span v-if="!collapse" class="title">{{ userStore.userInfo.shopName }}</span>
</router-link>
</transition>
<div class="logo wh-full flex-center">
<!-- <transition name="el-fade-in-linear" mode="out-in"> -->
<!-- <router-link :key="+collapse" class="wh-full flex-center" to="/"> -->
<img :src="state.userInfo.logo" class="w20px h20px" />
<!-- <span v-if="!collapse" class="title">{{ userStore.userInfo.shopName }}</span> -->
<el-dropdown trigger="click" @command="handleCommand">
<div class="el-dropdown-link" style="display: flex;">
<div v-if="!collapse" class="title">{{ state.shopName }}</div>
<el-icon class="el-icon--right" v-if="loginType == 0">
<arrow-down />
</el-icon>
</div>
<template #dropdown>
<el-dropdown-menu v-if="loginType == 0">
<el-dropdown-item :command="item.shopId" v-for="(item, index) in state.branchList" :key="index"> {{
item.shopName }}</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
<!-- </router-link> -->
<!-- </transition> -->
</div>
</template>
<script lang="ts" setup>
<script setup>
import defaultSettings from "@/settings";
import { useUserStore } from "@/store";
import ShopApi from "@/api/account/shop";
const userStore = useUserStore();
const state = reactive({
branchList: [],
userInfo: useUserStore().userInfo,
shopName: useUserStore().userInfo.shopName
});
const loginType = ref(localStorage.getItem("loginType"))
onMounted(() => {
geiShopList()
});
async function geiShopList() {
let res = await ShopApi.getBranchList()
state.branchList = res;
if (!localStorage.getItem("shopName")) {
state.shopName = state.branchList[0].shopName
localStorage.setItem("branch_shopId", state.branchList[0].id)
localStorage.setItem("shopName", state.branchList[0].shopName)
} else {
state.shopName = localStorage.getItem("shopName")
}
}
async function handleCommand(command) {
console.log(command)
let res = state.branchList.filter(v => v.shopId == command)[0]
// localStorage.getItem("shopId")
if (localStorage.getItem("shopId") == command) {
return
}
await ShopApi.getBranchChange(res.shopId)
// localStorage.setItem("branch_shopId", res.shopId)
localStorage.setItem("shopName", res.shopName)
state.shopName = res.shopName
location.reload()
console.log(res)
console.log(command)
}
defineProps({
collapse: {
@ -28,16 +79,18 @@ defineProps({
width: 100%;
height: $navbar-height;
background-color: $sidebar-logo-background;
cursor: pointer;
.title {
flex-shrink: 0; /* 防止容器在空间不足时缩小 */
flex-shrink: 0;
/* 防止容器在空间不足时缩小 */
margin-left: 10px;
font-size: 16px;
color: #5a5e66;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
max-width: 150px;
max-width: 100px;
}
}

View File

@ -29,13 +29,31 @@
</el-menu-item>
</AppLink>
</template>
<template v-else-if="item.children && hasOneShowingChild(item.children, item)">
<AppLink
v-if="onlyOneChild.meta"
:to="{
path: resolvePath(onlyOneChild.path),
query: onlyOneChild.meta.params,
}"
>
<el-menu-item
:index="resolvePath(onlyOneChild.path)"
:class="{ 'one-menu submenu-title-noDropdown': !isNest }"
>
<SidebarMenuItemTitle
:icon="onlyOneChild.meta.icon || item.meta?.icon"
:title="onlyOneChild.meta.title"
/>
</el-menu-item>
</AppLink>
</template>
<!--非叶子节点显示含多个子节点的父菜单或始终显示的单子节点 -->
<el-sub-menu v-else :index="resolvePath(item.path)" teleported>
<template #title>
<SidebarMenuItemTitle v-if="item.meta" :icon="item.meta.icon" :title="item.meta.title" />
</template>
<SidebarMenuItem
v-for="child in item.children"
:key="child.path"
@ -95,6 +113,10 @@ const onlyOneChild = ref();
* @returns 是否仅有一个可见子节点
*/
function hasOneShowingChild(children: RouteRecordRaw[] = [], parent: RouteRecordRaw) {
if (parent.name == "marketing_center") {
console.log(children);
console.log(parent);
}
//
const showingChildren = children.filter((route: RouteRecordRaw) => {
if (!route.meta?.hidden) {
@ -201,4 +223,7 @@ function resolvePath(routePath: string) {
.el-menu-item {
color: rgb(153, 153, 153);
}
.one-menu {
color: #555;
}
</style>

View File

@ -29,6 +29,7 @@ import NavbarRight from "../NavBar/components/NavbarRight.vue";
const appStore = useAppStore();
const settingsStore = useSettingsStore();
const permissionStore = usePermissionStore();
console.log(permissionStore.routes);
const sidebarLogo = computed(() => settingsStore.sidebarLogo);
const layout = computed(() => settingsStore.layout);

View File

@ -29,7 +29,7 @@ export const constantRoutes: RouteRecordRaw[] = [
redirect: "/index",
meta: {
title: "数据统计",
icon: "index",
icon: "数据统计",
alwaysShow: true,
},
children: [

View File

@ -29,7 +29,7 @@ export const constantRoutes: RouteRecordRaw[] = [
redirect: "/index",
meta: {
title: "数据统计",
icon: "index",
icon: "数据统计",
alwaysShow: true,
},
children: [

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