336 Commits
3.1 ... master

Author SHA1 Message Date
聆听
4759edd48e update README.md.
Signed-off-by: 聆听 <sugar1569@vip.qq.com>
2026-01-05 04:33:41 +00:00
zzp
98e2817596 登录去除默认账号 2025-11-05 14:37:31 +08:00
daZongZi
341d01cf25 success readme 2025-07-31 16:50:14 +08:00
daZongZi
262c453064 success Pwd 2025-07-31 16:29:40 +08:00
daZongZi
b2ce16cc77 马上放五一假了,程序员是在加班还是出去玩了? 2025-04-15 09:34:00 +08:00
guaishoudemao
69d68fc034 fix:修改版本号 2025-03-11 10:49:25 +08:00
daZongZi
c2f7afbc62 修复 XML 有可能出现的注入风险 2025-01-17 18:15:00 +08:00
daZongZi
fd92f34130 祝看到的程序员 2025 写代码没bug 2025-01-08 16:39:05 +08:00
daZongZi
12603f319c 2025 祝愿看到的老板赚大钱,看到的程序员0 bug 2025-01-07 17:57:55 +08:00
daZongZi
4d7c50dae5 欢迎体验Java多商户版本
平台端 http://admimplat.merchant.java.crmeb.net/
demo / crmeb.com

商户端 http://adminmer.merchant.java.crmeb.net/
18292417675 / 000000

H5商城 https://h5.merchant.java.crmeb.net/
2024-11-14 14:48:06 +08:00
daZongZi
7eca81fad3 多商户演示站点
平台端 http://admimplat.merchant.java.crmeb.net/
demo / crmeb.com

商户端 http://adminmer.merchant.java.crmeb.net/
18292417675 / 000000

H5商城 https://h5.merchant.java.crmeb.net/
2024-11-14 11:36:18 +08:00
daZongZi
25568cf0b4 CRMEB 双十一狂欢购
巅峰钜惠,正式开玩

11月7日-12日

狂欢大抽奖火热进行中

AppleiPad mini🍎山地自行车🚲️

人体工学护腰坐垫...多种劲爆大奖等着你!

还有秒杀折扣+抽奖优惠券,双重优惠

快来拼运气,双十一省出新高度!
2024-11-08 15:42:40 +08:00
聆听
f26cc2ef3b update README.md.
Signed-off-by: 聆听 <sugar1569@vip.qq.com>
2024-09-27 01:14:47 +00:00
聆听
d88a387b89 update README.md.
Signed-off-by: 聆听 <sugar1569@vip.qq.com>
2024-09-27 01:06:52 +00:00
聆听
99bb6745bd update README.md.
Signed-off-by: 聆听 <sugar1569@vip.qq.com>
2024-09-27 01:04:00 +00:00
聆听
89fbad0153 update README.md.
Signed-off-by: 聆听 <sugar1569@vip.qq.com>
2024-09-27 01:01:54 +00:00
聆听
38d02f1a83 update README.md.
Signed-off-by: 聆听 <sugar1569@vip.qq.com>
2024-09-27 01:00:20 +00:00
聆听
41a3068ae0 update README.md.
Signed-off-by: 聆听 <sugar1569@vip.qq.com>
2024-09-27 00:58:46 +00:00
18292417675
923713a66d 环境使用CRMEB java 开源商城 2024-09-19 16:51:43 +08:00
18292417675
5005a9efd3 欢迎使用Crmeb Java 2024-09-19 16:48:07 +08:00
大粽子
779e8cdc14 update README.md.
Signed-off-by: 大粽子 <stivepeim@outlook.com>
2024-09-19 08:42:21 +00:00
大粽子
fd449f8516 update README.md.
Signed-off-by: 大粽子 <stivepeim@outlook.com>
2024-09-19 08:42:07 +00:00
18292417675
a4fd5f592b Merge branch 'master' of https://gitee.com/ZhongBangKeJi/crmeb_java
* 'master' of https://gitee.com/ZhongBangKeJi/crmeb_java:
  update README.md.
  update LICENSE.
2024-09-19 16:36:34 +08:00
18292417675
8e424e666b 欢迎使用 Crmeb Java 开源商城 2024-09-19 16:36:22 +08:00
聆听
be26352abc update README.md.
Signed-off-by: 聆听 <sugar1569@vip.qq.com>
2024-09-07 06:51:44 +00:00
聆听
28db5cf8ab update LICENSE.
Signed-off-by: 聆听 <sugar1569@vip.qq.com>
2024-09-07 06:49:15 +00:00
18292417675
af78877b60 最新的系统介绍和安装前必读 2024-08-26 09:41:35 +08:00
18292417675
8de6d38f73 Java 多商户 v1.6 版本正式发布 https://www.crmeb.com/ask/thread/46123 2024-06-26 14:40:20 +08:00
18292417675
fa71af57b1 多商户 1.6 版本准备正式发布 2024-06-20 14:12:12 +08:00
18292417675
db3dbf374b 多商户 1.6 版本准备正式发布 2024-06-20 14:11:27 +08:00
18292417675
db0cad4dda 多商户 1.6 版本准备发布 2024-06-20 14:07:41 +08:00
18292417675
1dd7236a66 多商户 1.6 版本 准备正式发布 https://crmeb.com/ask/thread/45797 2024-06-20 12:20:23 +08:00
18292417675
daad533a5d 1.6 正式版准备发布,详情查看 https://crmeb.com/ask/thread/45797 2024-06-20 12:14:19 +08:00
18292417675
9c1797a648 java 多商户 1.6 版本更新 2024-06-19 14:37:44 +08:00
18292417675
9a6614b4de CRMEB JAVA 618 活动莫错过年度最低 2024-06-13 15:11:49 +08:00
18292417675
1ddf3d1443 修复NVDB 检测漏洞 2024-04-23 10:43:35 +08:00
18292417675
f560320482 验证ios 和 android app 后 clear code 和 没有匹配到的平台匹配 2024-04-19 17:01:44 +08:00
hetian
00cc18f9dd v1.0 2024-03-29 09:26:47 +08:00
hetian
6db3b61b7c nh 2024-03-12 16:43:27 +08:00
hetian
320e970146 Merge branch '20230906_hdq' of https://gitee.com/xazbkj/javaopensource 2024-03-12 14:18:34 +08:00
stivepeim
02fb60d3fc 1. 删除压缩包代码
2. 替换当前hdq 分支app 的代码为 压缩包中的文件
2024-03-12 10:23:35 +08:00
stivepeim
d5e276e519 Merge branch 'master' of https://gitee.com/xazbkj/javaopensource
* 'master' of https://gitee.com/xazbkj/javaopensource:
  删除文件 app1
  app
  Create /app1
2024-03-11 17:49:10 +08:00
stivepeim
33f7f8484a 修复 国家信息安全漏洞共享平台(CNVD) 测试出的可能出现Sql 注入的问题 2024-03-11 17:48:50 +08:00
何天
8edfca7131 删除文件 app1 2024-03-11 02:48:41 +00:00
何天
58466d8d7b Create /app1 2024-03-11 02:44:38 +00:00
stivepeim
e9d3a58f89 clear QQ Channel 2024-02-29 11:14:23 +08:00
stivepeim
2d38160c3b 感谢开发团队 2023-12-28 17:53:53 +08:00
stivepeim
8e6d845ab8 CRMEB开源技术交流群
扫码进群可领取开源版接口文档、产品功能清单、高清UI设计图、思维脑图!
2023-12-28 17:44:15 +08:00
stivepeim
99cca3fc1d 欢迎加入Java群讨论有趣的话题 2023-12-28 17:39:15 +08:00
stivepeim
9f864b70c2 修复切片 2023-10-07 15:32:06 +08:00
stivepeim
98d22d1337 Merge branch 'master' of https://gitee.com/ZhongBangKeJi/crmeb_java
* 'master' of https://gitee.com/ZhongBangKeJi/crmeb_java:
  fix: 优品推荐请求不登录可以访问修改。
  fix:修改商品添加中商品的价格校验,最小值为0.01,库存正整数。
  fix:修改商品添加中商品的价格校验,最小值为0.01,库存正整数。
  update README.md.
2023-09-11 10:07:26 +08:00
stivepeim
3c59e06361 感谢热情网友指出 2023-09-11 09:47:50 +08:00
guaishoudemao
af17b1a06a fix: 优品推荐请求不登录可以访问修改。 2023-08-24 09:16:09 +08:00
guaishoudemao
31ac5c31f7 fix:修改商品添加中商品的价格校验,最小值为0.01,库存正整数。 2023-08-22 18:12:38 +08:00
guaishoudemao
abfe0986ae fix:修改商品添加中商品的价格校验,最小值为0.01,库存正整数。 2023-08-21 15:01:50 +08:00
大粽子
e70e383b83 !28 update README.md.
Merge pull request !28 from Handson/N/A
2023-07-15 09:02:47 +00:00
Handson
a12942d5ac update README.md.
Signed-off-by: Handson <7420044+handson1107@user.noreply.gitee.com>
2023-07-15 08:58:38 +00:00
stivepeim
d557376c41 readme 格式优化 2023-07-15 16:40:44 +08:00
stivepeim
b2298a9606 Merge branch 'master' of https://gitee.com/ZhongBangKeJi/crmeb_java
* 'master' of https://gitee.com/ZhongBangKeJi/crmeb_java:
  update README.md.
  update README.md.

# Conflicts:
#	README.md
2023-07-15 16:10:20 +08:00
stivepeim
da21958418 更新联系我们 2023-07-15 16:08:14 +08:00
大粽子
3dbb98b551 !26 update README.md.
Merge pull request !26 from Handson/N/A
2023-07-15 08:02:16 +00:00
大粽子
fe20e76d4e !25 update README.md.
Merge pull request !25 from Handson/N/A
2023-07-15 08:02:00 +00:00
Handson
baef4bb7e2 update README.md.
Signed-off-by: Handson <7420044+handson1107@user.noreply.gitee.com>
2023-07-15 06:19:43 +00:00
Handson
b2f4813659 update README.md.
Signed-off-by: Handson <7420044+handson1107@user.noreply.gitee.com>
2023-07-15 04:32:28 +00:00
stivepeim
49996f25f3 更新联系我们 2023-07-15 11:52:09 +08:00
stivepeim
2214c8d805 update 2023-07-15 09:48:38 +08:00
stivepeim
a17bc53d2c 详情更新 2023-07-15 09:41:13 +08:00
stivepeim
2cbaaa9162 更新关键链接 2023-06-25 18:13:10 +08:00
stivepeim
796284e803 gif 弱网优化 2023-06-25 17:37:05 +08:00
大粽子
013ba87c7f update README.md.
Signed-off-by: 大粽子 <stivepeim@outlook.com>
2023-06-25 09:16:43 +00:00
大粽子
f446d069f4 update README.md.
Signed-off-by: 大粽子 <stivepeim@outlook.com>
2023-06-25 09:14:20 +00:00
大粽子
f6d0634183 删除文件 14yijianhuanse.gif 2023-06-25 09:10:48 +00:00
大粽子
e8a76c3234 update README.md.
Signed-off-by: 大粽子 <stivepeim@outlook.com>
2023-06-25 08:58:11 +00:00
大粽子
15893baf81 update README.md.
Signed-off-by: 大粽子 <stivepeim@outlook.com>
2023-06-25 08:57:09 +00:00
大粽子
5c7e2e3725 update README.md.
Signed-off-by: 大粽子 <stivepeim@outlook.com>
2023-06-25 08:54:43 +00:00
大粽子
cd7b519408 update README.md.
Signed-off-by: 大粽子 <stivepeim@outlook.com>
2023-06-25 08:52:44 +00:00
大粽子
178c282d8b update README.md.
Signed-off-by: 大粽子 <stivepeim@outlook.com>
2023-06-25 08:50:57 +00:00
大粽子
0bb2f7bf89 update README.md.
Signed-off-by: 大粽子 <stivepeim@outlook.com>
2023-06-25 08:49:58 +00:00
stivepeim
42482d14db 2023 618 活动圆满结束 2023-06-25 16:15:45 +08:00
stivepeim
09feb26ea8 useUnicode=true 数据库链接 避免出现em 无法存储的问题 2023-06-15 12:07:51 +08:00
大粽子
0399f4b272 !20 🐛 修复在JDK 17的环境下无sun相关的包
Merge pull request !20 from 徐晓伟/master-sun
2023-06-15 03:21:56 +00:00
大粽子
31e3603225 !21 🐛 Object的equals方法容易抛空指针异常,应使用常量或确定有值的对象来调用equals。
Merge pull request !21 from 徐晓伟/master-equals
2023-06-15 03:19:42 +00:00
大粽子
7ec4d6922d !23 ➖ 删除重复依赖io.swagger:swagger-models
Merge pull request !23 from 徐晓伟/swagger-models
2023-06-15 03:16:48 +00:00
大粽子
d21166f8a1 !24 🐛 防止循环依赖引用错误
Merge pull request !24 from 徐晓伟/ApplicationContext
2023-06-15 03:16:09 +00:00
stivepeim
72c77c4f00 修复Stream 1.4.17 出现的漏洞 2023-06-14 17:47:29 +08:00
stivepeim
a78bef3343 欢庆20230618官方活动 2023-06-12 16:23:40 +08:00
stivepeim
bbcd4f6598 感谢各位同学,新开QQ3群欢迎加入拍砖讨论 2023-06-01 11:39:18 +08:00
stivepeim
aab228d20b update tel service 2023-04-18 18:03:16 +08:00
stivepeim
d69b47251a update version desc 2023-04-06 18:28:56 +08:00
stivepeim
c6c9641f5b update install info 2023-04-06 18:26:56 +08:00
徐晓伟
f9a37a2d38 🐛 防止循环依赖引用错误
使用 ApplicationContext 获取 Bean 来进行注入
2023-03-30 10:56:40 +08:00
徐晓伟
60a0c1594e ➖ 删除重复依赖io.swagger:swagger-models
防止使用 io.fabric8:docker-maven-plugin 打包为docker时异常
2023-03-29 10:20:33 +08:00
徐晓伟
508094551f 💡 加解密补充说明 2023-03-29 10:16:14 +08:00
徐晓伟
b85c37c45a Merge branch 'master' of https://gitee.com/xuxiaowei-com-cn/crmeb_java into master-sun
# Conflicts:
#	crmeb/crmeb-common/src/main/java/com/zbkj/common/utils/CrmebUtil.java
2023-03-29 10:12:53 +08:00
大粽子
8c2a9dce29 !18 update crmeb/pom.xml.
Merge pull request !18 from mingtian00081/N/A
2023-03-21 07:37:28 +00:00
stivepeim
ebbc240603 更新代码包演示账号 2023-03-15 18:07:28 +08:00
stivepeim
2f620f882f 规整演示数据 管理端 admin / 123456 移动端 18292417675 / crmeb@123456 2023-03-15 18:02:30 +08:00
徐晓伟
46d56d4dcc 🐛 Object的equals方法容易抛空指针异常,应使用常量或确定有值的对象来调用equals。 2023-03-15 08:35:52 +08:00
徐晓伟
eeedd2fc1b 🐛 修复在JDK 17的环境下无sun相关的包
1. 使用hutool替换sun
2. 删除未使用的包导入
2023-03-14 16:50:15 +08:00
mingtian00081
54ed45f09b update crmeb/pom.xml.
升级fastjson版本到1.2.83,1.2.83版本之前存在代码执行漏洞风险,CVE-2022-25845

Signed-off-by: mingtian00081 <12513234+mingtian00081@user.noreply.gitee.com>
2023-02-26 12:20:09 +00:00
大粽子
ddf1a64d42 update README.md.
遇到问题不要怕,问题提交到issue或者直接论坛发帖,大佬会尽快回复和处理哦!
认准官方论坛 https://www.crmeb.com/ask/thread/list/152

Signed-off-by: 大粽子 <stivepeim@outlook.com>
2023-02-23 10:06:48 +00:00
stivepeim
8a25cc06db update license 2023-02-06 10:28:18 +08:00
stivepeim
37d156b542 更新 readme 2023-01-04 12:20:28 +08:00
stivepeim
7cc953d121 更新readme 2023-01-04 12:17:07 +08:00
stivepeim
b97d140ec2 更新客服链接 2023-01-04 12:03:49 +08:00
stivepeim
cf8259085a 宽屏预览 2022-12-30 16:08:02 +08:00
stivepeim
ff81c5a8ec 素材格式调整 2022-12-30 15:55:57 +08:00
stivepeim
02be0969d0 素材更新 2022-12-30 15:50:08 +08:00
stivepeim
68640523bc update md 2022-12-30 15:38:29 +08:00
大粽子
7db93ecdfb update README.md.
Signed-off-by: 大粽子 <stivepeim@outlook.com>
2022-12-30 07:36:37 +00:00
大粽子
c71b152986 update README.md.
Signed-off-by: 大粽子 <stivepeim@outlook.com>
2022-12-30 07:30:58 +00:00
stivepeim
362436e0f1 调整图片 2022-12-30 15:22:08 +08:00
stivepeim
337af67cd5 readme 更新 2022-12-30 15:16:39 +08:00
大粽子
92bca36fb4 update README.md.
Signed-off-by: 大粽子 <stivepeim@outlook.com>
2022-12-30 07:04:02 +00:00
stivepeim
6b136878d3 更新素材路径 2022-12-30 14:24:04 +08:00
stivepeim
7226b9a356 readme 图片路径更新 2022-12-30 14:20:32 +08:00
stivepeim
62b98e5b13 update readme 2022-12-29 17:52:42 +08:00
stivepeim
cefcce88ad 更新描述文件 2022-12-26 19:05:53 +08:00
stivepeim
c2daec2533 修正客服更新和新论坛地址 2022-12-12 10:52:05 +08:00
stivepeim
75bfc9975a 新论坛地址指向对应tab 2022-11-08 12:02:06 +08:00
stivepeim
845a5ae66a 更新新的论坛地址 2022-11-08 11:46:34 +08:00
stivepeim
e12dfccb73 代码生成 web界面 2022-09-08 15:39:41 +08:00
stivepeim
8c71672959 添加代码生成 web 界面 根据选择表生成 2022-09-08 15:38:56 +08:00
stivepeim
71091fddb9 兼容支付,将协议交给jdk管理 2022-09-03 09:45:37 +08:00
stivepeim
30e39de182 新增前后端分离代码生成器 菜单在维护-》代码生成 2022-08-24 19:00:37 +08:00
stivepeim
1f1f269cbd fix gif view 2022-07-15 15:43:10 +08:00
stivepeim
e3a22a7514 页面设计介绍 2022-07-15 09:29:26 +08:00
stivepeim
c604a4b076 update readme image info 2022-07-14 09:48:38 +08:00
stivepeim
19876e3040 qq群加2群 2022-05-16 09:23:40 +08:00
stivepeim
a1acfd70c3 修改pom缺省version节点 2022-03-30 16:36:18 +08:00
stivepeim
2c420b2d41 修复 npm run build 打包正常正常 2022-02-21 14:39:22 +08:00
stivepeim
e3facf4e10 添加更加完善的启动脚本 2022-02-11 10:48:50 +08:00
stivepeim
02fa69056a 清理 mock信息
环境文件更新
2022-02-07 11:33:01 +08:00
stivepeim
d53adeabb9 Merge branch 'master' of https://gitee.com/ZhongBangKeJi/crmeb_java
* 'master' of https://gitee.com/ZhongBangKeJi/crmeb_java:
  增加安装查询
  修改富文本编辑器更换CDN引发的一些问题
  修改y移动端图片上传配置api
  移动端提前缓存城市数据,避免编辑地址时等待请求
2022-02-07 10:42:55 +08:00
stivepeim
dcceda9798 更新package.json 文件,使得node 11到node 16都可以npm install 成功 2022-02-07 10:41:11 +08:00
hejinfu1026
1b714a1e3f 增加安装查询 2022-01-26 10:42:05 +08:00
hejinfu1026
afcc81d522 修改富文本编辑器更换CDN引发的一些问题 2022-01-21 10:37:51 +08:00
hejinfu1026
e179da2143 修改y移动端图片上传配置api 2022-01-14 17:50:32 +08:00
hejinfu1026
fc87b51583 移动端提前缓存城市数据,避免编辑地址时等待请求 2022-01-14 09:50:15 +08:00
stivepeim
b68b1a09e4 gitignore 2022-01-10 01:01:53 +08:00
stivepeim
bab68b23b8 添加干净的素材库
正确配置本地yml后启动webpc管理端 设置本地图片域名即可直接体验新版本
2022-01-04 11:53:50 +08:00
stivepeim
b61808a16e 更新版本信息和最新sql文件 2022-01-04 11:07:26 +08:00
stivepeim
99569c1c54 更新开源版本信息 2022-01-03 23:59:49 +08:00
ָ·ìdeÑô¹â
f514aec78b Merge branch 'master' of https://gitee.com/ZhongBangKeJi/crmeb_java 2021-12-31 16:00:07 +08:00
ָ·ìdeÑô¹â
507b741880 Merge branch 'master' of https://gitee.com/ZhongBangKeJi/crmeb_java 2021-12-31 15:58:51 +08:00
hejinfu1026
0616cde752 12.31开源admin代码更新 2021-12-31 15:58:40 +08:00
ָ·ìdeÑô¹â
a1773b1316 更新发布 2021-12-31 15:56:16 +08:00
hejinfu1026
21e0d0e136 12.31移动端开源代码更新 2021-12-31 15:52:11 +08:00
stivepeim
153568cddc 更新 redame文件 文档更清晰 2021-12-22 14:49:07 +08:00
stivepeim
1fd4d4ac93 请你 readme 2021-12-15 17:31:30 +08:00
stivepeim
854c3b98e7 更新gif 2021-12-14 15:41:07 +08:00
stivepeim
eebbbb2c30 添加更多说明文档 2021-12-14 15:32:47 +08:00
stivepeim
ced6a89eff 修改启动shell文案 2021-12-02 14:42:15 +08:00
stivepeim
e7e520a605 1. 秒杀后台显示进行中,前端却不能下单 @张霞~
2. 基础商品分享二维码之后提示找不到该商品
3. 地址选择框的数据在前一页缓存起来
2021-11-15 11:22:52 +08:00
hejinfu1026
14e07b90c9 修复一些缺陷,更换tabbar素材 2021-11-15 10:16:11 +08:00
stivepeim
8d9dd6d5e1 添加 qq 2 群 欢迎CRMEB java爱好者 2021-11-11 16:31:06 +08:00
stivepeim
c351a3f41e 更新阿里云配置 2021-10-28 15:07:52 +08:00
stivepeim
fe006dfa74 修复微信导入地址没有cityID的问题 2021-10-09 15:18:46 +08:00
stivepeim
c08e894d13 更新sql脚本 2021-09-17 12:05:36 +08:00
stivepeim
2efcf44a0c 重置密码脚本和admin表保持一致,以免用户默认用demo登录 2021-09-09 09:23:41 +08:00
stivepeim
b590661110 更新 完整城市数据 2021-08-10 18:42:30 +08:00
stivepeim
c2f673a1f3 修复公众号获取AccessToken可能出错的问题 2021-08-04 14:56:06 +08:00
stivepeim
4213444a2a 寻找CRMEB开源项目推广大使活动 2021-07-16 14:35:39 +08:00
stivepeim
b113092b25 APP 下载二维码 更新 无限次数下载 2021-06-24 10:37:54 +08:00
stivepeim
afc77048fb 更新 app(IOS Android) 体验码 2021-06-23 11:08:52 +08:00
stivepeim
eb3715def4 更细素材下载地址 2021-06-21 18:25:03 +08:00
大粽子
ec0d07e854 update README.md.
618 活动圆满结束
2021-06-19 10:03:32 +08:00
大粽子
2df3e1e621 !9 update README.md.
Merge pull request !9 from 吴昊天/N/A 618活动仅此一天
2021-06-15 14:59:21 +08:00
吴昊天
45a50130c3 update README.md. 2021-06-15 14:36:12 +08:00
stivepeim
41b6ff8232 全新UI视觉体验,移动端API优化降低重复调用,提高并发6倍,修复N多Bug 2021-06-11 17:41:16 +08:00
stivepeim
52feaa504e 顶部论坛地址更新 2021-06-07 18:05:31 +08:00
stivepeim
41f815495b 我们有新论坛啦 美观高效的沟通 2021-06-07 18:00:32 +08:00
stivepeim
6ce4d200c7 修复拼团支付后的更新支付状态不成功问题 2021-06-04 09:27:41 +08:00
stivepeim
a5fdb992be 更新素材 2021-05-19 18:48:20 +08:00
stivepeim
63c97c18a4 更新预览二维码 2021-05-19 10:47:30 +08:00
stivepeim
ae212268c3 更新视频地址 2021-05-19 10:23:33 +08:00
stivepeim
b1491ed6fb 修复全量sql 修复配置文件
修复公众号授权问题
2021-05-17 16:41:39 +08:00
stivepeim
32711998c3 修复公众号授权10003的问题! 2021-05-15 17:26:02 +08:00
stivepeim
4257388470 添加admin 密码提示 2021-05-13 14:26:09 +08:00
stivepeim
1d9b3f226c 重置表单配置 2021-05-12 14:01:18 +08:00
stivepeim
0f987d0a5a 小程序授权登录回复正常 2021-05-07 18:31:36 +08:00
stivepeim
bb3984d917 修复 小程序授权登录后跳转问题 2021-05-06 14:47:32 +08:00
stivepeim
d0157c6c94 修复routine.js 文件 2021-05-06 14:05:24 +08:00
stivepeim
faf8d4cc38 修复 getUserProfile 2021-05-06 10:04:18 +08:00
stivepeim
85fc68b1f6 Crmeb 多商户墙裂推荐 2021-04-28 11:00:34 +08:00
stivepeim
2da2837666 CRMEB 多商户墙裂推荐 2021-04-28 10:56:50 +08:00
stivepeim
d5a56816d8 1:运行Java程序后访问localhost:8080 自动跳转doc.html
2:修复默认运费配置数据,确定订单下单正确
3:小程序超包问题
2021-04-26 18:40:42 +08:00
stivepeim
394debe180 格式化yml配置文档 2021-03-24 13:59:41 +08:00
stivepeim
86641b7d23 修复yml配置格式问题 2021-03-24 12:29:17 +08:00
stivepeim
8c6dc9c0bd 修复内容
1. 会员等级背景图去掉校验
	2. 当查询不到会员等级是,按无会员等级展示
	3. 删除商城首页冗余配置在index中的引用
	4. 换绑推广人时,计算上一个推广人的推广人数
	5. pc后台清除推广人时,更新推广人数量
	6. 保证砍价金额最小为0.01
	7. 修复商品删除时购物车关联删除
	8. 删除商品问题修复
	9. 运费模板——指定包邮,包邮数量类型修改
	10. 签到错误修复
	11. 修复我的优惠券只查询20条的问题
	12. 文章列表修复
	13. 拼团商品详情页数据统计显示问题修复
	14. PC后台,账户详情,持有优惠券列表修复
	15. 支付查询参数修复
	16. 修复过期优惠券可以重复领取
	17. 订单邮费切换地址重复计算修复
	18. 判断是否在指定包邮区域内 必须满足件数 + 金额 才能包邮
	19. 支付页面,切换tab,金额计算问题修复
	20. 物流模板新增、编辑——修复
	21. 去除线下邮费的影响
	22. 订单运费计算重写
	23. 下单页面到店自提合计金额不应该计算商品邮费
	24. 新人券领取后,部分使用时间为空——修复
2021-03-19 18:26:43 +08:00
stivepeim
e77955ff9d crmeb Java商业版购买地址 2021-02-26 11:19:11 +08:00
stivepeim
73a9e1b102 Merge branch 'master' of https://gitee.com/ZhongBangKeJi/crmeb_java
* 'master' of https://gitee.com/ZhongBangKeJi/crmeb_java:
  update crmeb/sql/crmeb_java_v1.3.2_part.sql.
  1.3.2
  1.3.2
2021-02-25 20:39:21 +08:00
stivepeim
e0de628a80 update md 2021-02-25 20:37:56 +08:00
指缝de阳光
1f2f60be78 update crmeb/sql/crmeb_java_v1.3.2_part.sql. 2021-02-19 12:32:21 +08:00
ָ·ìdeÑô¹â
decfa9cd12 Merge branch 'master' of https://gitee.com/ZhongBangKeJi/crmeb_java 2021-02-07 11:05:27 +08:00
hzw
627f5bc999 1.3.2 2021-02-07 11:03:21 +08:00
stivepeim
86a816de3e 1.3.2 全量sql 和 升级sql 2021-02-06 18:33:24 +08:00
stivepeim
3bb18459b0 gitIgnore 2021-02-06 18:00:36 +08:00
HZW
a91ab0844d Merge branch 'master' of https://gitee.com/ZhongBangKeJi/crmeb_java
Signed-off-by: ָ��de��� <wx_f451c5d360bc4eb1bfe2be605ea5055a@git.code.tencent.com>
2021-02-06 17:59:19 +08:00
HZW
3dc30ee081 1.3.2 2021-02-06 17:58:10 +08:00
ָ·ìdeÑô¹â
d78d616839 1.3.2 2021-02-06 17:45:04 +08:00
guaishoudemao
f6f3a09fcf 更新代码 2021-02-06 17:25:18 +08:00
guaishoudemao
099fc7235f 更新代码 2021-02-06 17:11:40 +08:00
guaishoudemao
432bfe325c 更新代码 2021-02-06 17:06:25 +08:00
guaishoudemao
c9b86697c3 更新代码 2021-02-06 16:42:26 +08:00
stivepeim
fdbd2ef1f1 添加团队激励证书 2021-02-05 09:15:19 +08:00
stivepeim
031978ea9b readme预览优化 2021-02-04 18:45:03 +08:00
stivepeim
d374c5f252 Copyright 2021-02-03 10:31:57 +08:00
stivepeim
f8f19a8731 转移版本更新记录到论坛中 readme.md中只有连接 2021-02-03 10:24:58 +08:00
stivepeim
f5bf4dbeb3 更换H5预览码 2021-02-03 09:53:23 +08:00
stivepeim
f0daa13868 readme 优化 2021-02-02 18:38:28 +08:00
stivepeim
09522ad593 修复权限需要刷新一次的问题 2021-01-26 15:55:52 +08:00
stivepeim
9370abb0d6 更新一号通地址 2021-01-20 17:42:41 +08:00
stivepeim
014bf145dc gitee update 2021-01-20 16:48:42 +08:00
stivepeim
19df06342c H5首页 样式修复 2021-01-20 15:54:45 +08:00
stivepeim
83cab7d589 update 2021-01-19 15:42:51 +08:00
stivepeim
c7654e50b1 ## v1.3.1 更新列表
1. 【修复】申请退款后积分等操作可能出现错误的问题
	2. 【修复】拼团支付可能出现支付错误的问题
	3. 【修复】退款申请后的订单流程优化和积分赠送的问题
	4. 【修复】回收站中的商品无法恢复的问题
	5. 【修复】一号通短信查询记录不完整的问题
	6. 【修复】用户管理批量加分组,标签的问题
	7. 【修复】积分日志搜索显示有误的问题
	8. 【修复】手动发送优惠券可能会出错的问题
	9. 【修复】核销订单创建在某种条件下会出错的问题
	10. 【修复】移动端商品详情,购物车等样式兼容问题
	11. 【修复】业务流程性的优化
2021-01-19 10:16:45 +08:00
stivepeim
92d6d60122 一号通平台功能优化 2021-01-13 12:30:38 +08:00
stivepeim
0459850ad2 update readme.md 2021-01-12 09:40:09 +08:00
stivepeim
61eaaaad37 update readme style 2021-01-12 09:37:12 +08:00
stivepeim
c576debeff readmet优化 2021-01-12 09:10:02 +08:00
stivepeim
de982010f4 修复退款失败的问题
修复商品选择优惠券可能出错的问题
2021-01-11 16:22:39 +08:00
stivepeim
792b04961f 添加客服信息 2021-01-09 11:04:05 +08:00
stivepeim
b392dbf2e4 update sql admin user paswords 2021-01-09 09:07:38 +08:00
stivepeim
d22bd3c5f4 更新授权连接 2021-01-07 18:13:31 +08:00
stivepeim
b30f5143e2 1. 解决首次登陆可能出错的问题
2. 表单配置后数据为1111的问题
3.下单时可能出现错误配置提示的问题
2021-01-07 15:56:58 +08:00
stivepeim
0949c395e7 更新redme描述 2021-01-06 10:07:18 +08:00
stivepeim
498d09370a 更新readme文件 2020-12-25 18:42:49 +08:00
stivepeim
c34024bb5d clear md 2020-12-25 09:35:56 +08:00
stivepeim
bdbcc78a4e update readme 2020-12-24 11:42:15 +08:00
stivepeim
06b9df608c 更新readme 素材部分
更新验证码不区分大小写
2020-12-24 11:36:04 +08:00
stivepeim
fedf1bfbfa clear wxConfig 2020-12-24 10:29:21 +08:00
stivepeim
7bdefe2a59 update sql 2020-12-23 17:43:58 +08:00
stivepeim
b5f5b6a903 update sql and version Info 2020-12-23 17:21:20 +08:00
stivepeim
5650a180b8 update md 2020-12-23 16:16:06 +08:00
stivepeim
6cac25ba7a update readme.md 2020-12-23 16:08:50 +08:00
stivepeim
dfcf95853a license 协议 2020-12-23 16:01:40 +08:00
stivepeim
099fc3de81 圣诞快乐
# v1.3 更新列表
    1. 【新增】砍价
	2. 【新增】拼团
	3. 【新增】一号通
	4. 【修复】商品sku 编辑时出现商品属性对应错误的问题
	5. 【修复】商品推广海报生成二维码可能会出错的问题【小程序调试中】
	6. 【修复】微信公众号和小程序头像可能获取不到的问题
	7. 【修复】下单时可能会出错的问题
	8. 【修复】pc管理端用户访问量
	9. 【修复】微信退款
	10. 【修复】管理端订单状态可能出现不正确的情况
	11. 【修复】WEB管理端-菜单色调,短信API更新,首页用户访问量,系统设置tab是自动选择下一及表单
	12. 【修复】系统设置出现更新不正确的问题
2020-12-23 15:56:45 +08:00
stivepeim
d5fc46a211 更新 md 文档 2020-11-28 14:52:18 +08:00
stivepeim
eb377bba44 update md 2020-11-23 14:42:43 +08:00
stivepeim
77dda667e8 update MD 2020-11-23 11:04:09 +08:00
stivepeim
d5b2344046 # v1.2.2 更新列表
1. 修复了商品从回收站中删除的逻辑
	2. 新增了icon文件
	3. 短信下单购买二维码加载不到的问题
    4. 秒杀配置时间小于当前所有时间的重叠判断
2020-11-20 15:38:58 +08:00
stivepeim
766c87c287 丰富了icon 2020-11-20 15:13:59 +08:00
stivepeim
47012b7588 更新删除商品 和回收站删除商品的问题 2020-11-20 15:09:18 +08:00
stivepeim
fb5a8945f7 修复短信购买功能 2020-11-20 11:05:19 +08:00
stivepeim
c62eda3fb7 前端项目install和package说明 2020-11-19 15:01:05 +08:00
stivepeim
f0657987b3 修复秒杀时段添加时间小于当前数据库存在时间的重叠判断 2020-11-19 14:51:43 +08:00
stivepeim
a6c264d934 update md 2020-11-18 10:03:33 +08:00
stivepeim
041a57faae update QRCode title 2020-11-18 09:56:03 +08:00
stivepeim
2998159cac 更新二维码 2020-11-18 09:53:17 +08:00
stivepeim
b39b97e1d3 # v1.2.1 更新内容
## 更新列表
    1. 短信后台升级,更新供应商
    2. 替换官方swagger文档提升友好和易用[swagger-bootstrap-ui] https://doc.xiaominfo.com/knife4j
    3. 添加商品分类必要素材,可在配置好图片服务后自行维护
2020-11-17 15:20:47 +08:00
stivepeim
b00e01846e # v1.2.1 更新内容
## 更新列表
    1. 短信后台升级,更新供应商
    2. 替换官方swagger文档提升友好和易用[swagger-bootstrap-ui] https://doc.xiaominfo.com/knife4j
    3. 添加商品分类必要素材,可在配置好图片服务后自行维护
2020-11-17 15:19:43 +08:00
stivepeim
03411ffc90 更新二维码 2020-11-13 10:06:11 +08:00
stivepeim
4d95ffa886 更新二维码 2020-11-11 10:13:45 +08:00
stivepeim
87e4c4c68e 更新二维码 2020-11-11 09:59:14 +08:00
stivepeim
011bbbebc0 更新Note
1. 修复购物车,订单和退单后后置任务正确执行
	2. 修复佣金记录金额和详情
	3. 修复管理端 移动应用界面下订单管理数据统计不准确的问题
	4. 修复短信API升级-后台使用一号通
	5. 修复用户管理相关问题
	6. 修复核销点核销后核销地址不准确
	7. 修复资源同步云服务的问题
新增功能
	1. 秒杀
		a. 秒杀时段配置
		b. 秒杀商品维护
	2. 财务管理
		a. 申请提现
		b. 财务记录
			i. 充值记录
			ii. 资金监控
		c. 佣金记录
	3. 普通商品显示该商品正在参加的活动信息[秒杀]
2020-11-05 16:21:06 +08:00
stivepeim
2732ea8f82 Update README.md
update concant us
2020-10-29 14:16:27 +08:00
stivepeim
5822a18fd0 Update README.md 2020-10-21 11:09:25 +08:00
stivepeim
5339ee4cb9 Update README.md 2020-10-21 10:59:37 +08:00
stivepeim
aff7e0936f Update README.md
更新个人二维码
2020-10-13 20:06:59 +08:00
stivepeim
c1469bf030 Update 联系我们.md
更新个人二维码
2020-10-13 20:05:59 +08:00
stivepeim
d2d9f1d473 Update 联系我们.md
更新二维码
2020-10-13 20:00:00 +08:00
stivepeim
69abff9f17 Update README.md
更新进群二维码
2020-10-13 19:58:29 +08:00
FeiLiao
caf5a662a0 Update README.md 2020-09-25 10:06:38 +08:00
FeiLiao
366691fd55 Update README.md 2020-09-25 10:05:31 +08:00
张乐
f540029d2b 修复短信注册bug,订单详情查询bug 2020-09-22 09:59:23 +08:00
张乐
b15ab25af8 更新企业微信群二维码 2020-09-22 09:24:05 +08:00
张乐
cce36c049f 注释任务开启日志 2020-09-17 17:16:32 +08:00
张乐
5c1b352645 form表单 下拉选择优化 2020-09-17 16:57:33 +08:00
张乐
2ff987b243 后台数据统计bug修复 2020-09-17 16:13:54 +08:00
张乐
b120468fbe 配置保存优化,修复分类选择bug 2020-09-17 16:09:44 +08:00
张乐
6af3a8920c 更新sql文件 2020-09-16 10:02:57 +08:00
张乐
c874f0ee32 移动端代码优化 2020-09-15 18:42:06 +08:00
张乐
2fa0cd9b51 bug修复 2020-09-15 18:24:23 +08:00
张乐
0108bd6f9c yml格式化 2020-09-15 17:49:18 +08:00
张乐
78264fbf48 更新,apper 2020-09-15 17:39:44 +08:00
张乐
4d03bcb0b5 优化代码,修改发送短信 2020-09-15 17:38:23 +08:00
张乐
c068d0f476 更新yml 2020-09-15 17:16:30 +08:00
张乐
d8e8a42ac7 pom更新 2020-09-15 17:12:11 +08:00
张乐
93a781c5ae v1.1
1、提货点
2、客服(腾讯云智服)
3、接口权限控制
4、复制第三方商品可配置
4、优化附件上传配置
5、手机端核销订单
6、手机端订单统计、订单管理
7、短信优化
8、订阅消息全自动化
2020-09-15 16:13:25 +08:00
张乐
184852afe4 更新说明文档 ----> 自己安装项目后台超级管理员账号密码 2020-09-14 15:17:08 +08:00
张乐
d108a8f6da 修复商品添加时多规格中sku图片前缀带域名的bug 2020-09-11 15:59:36 +08:00
张乐
59201c9ffe 加群二维码更新 2020-09-10 16:49:49 +08:00
张乐
4197081015 修复配置保存bug,swagger访问密码修改 2020-09-09 09:35:10 +08:00
张乐
6a75a64237 解决城市数据问题 2020-09-08 11:41:28 +08:00
张乐
838d4bdc77 企业微信群二维码更新 2020-09-03 17:27:12 +08:00
张乐
610583a37e 企业微信群二维码更新 2020-09-03 17:25:25 +08:00
张乐
52436ed759 修复短信注册密码格式bug 2020-09-03 15:20:27 +08:00
张乐
17afa8d631 1、开放api权限,admin模块权限设置后续会更新
2、修复优惠券领取时间不限制导致不显示的bug
3、更新了一些config配置数据
2020-09-02 11:42:10 +08:00
张乐
69f3f79b83 1、新增恢复回收站商品功能
2、短信记录显示内容
2020-08-28 15:55:24 +08:00
张乐
92d288ef21 1、新增恢复回收站商品功能
2、短信记录显示内容
2020-08-28 15:55:13 +08:00
张乐
cfd23ccea5 修复短信发送问题 2020-08-28 13:03:45 +08:00
张乐
fc00dabc9b 新增码云项目地址 2020-08-28 11:07:49 +08:00
张乐
d7e711e7ec 新增在线接口文档地址 2020-08-27 15:47:15 +08:00
张乐
ea364a14d2 新增接口文档包 2020-08-27 09:46:49 +08:00
张乐
983dc512f9 说明文档新增 api接口文档说明 2020-08-27 09:42:56 +08:00
张乐
2e510e58d7 资金明细优化 2020-08-26 18:02:40 +08:00
张乐
fc09706d9e 管理员列表优化,权限优化 2020-08-26 11:58:57 +08:00
张乐
02afc6b2e8 config 数据redis化 2020-08-26 10:47:04 +08:00
张乐
064485a219 新增联系我们文档 2020-08-25 18:30:41 +08:00
张乐
565536dccc 积分、商品搜索bug修复 2020-08-25 18:28:14 +08:00
张乐
de9650b1eb 更新二维码 2020-08-25 17:33:46 +08:00
张乐
ab260d4b34 更新二维码 2020-08-25 17:22:09 +08:00
张乐
dfa0553c45 新增开发者企业微信,方便技术交流 2020-08-25 17:03:02 +08:00
张乐
4c42d5d59b 导航更新 2020-08-25 16:56:27 +08:00
张乐
02519e3d23 优化运费计算逻辑 2020-08-25 16:05:21 +08:00
张乐
3457944c61 解决签到周期的问题 2020-08-25 16:04:01 +08:00
张乐
badfd9076e 修复了admin后台bug 2020-08-24 17:34:26 +08:00
张乐
736e315b8a md文档更新 2020-08-24 17:12:01 +08:00
张乐
7bb645925e 1、支付平台优化 2020-08-24 17:05:24 +08:00
张乐
702e8e1ce6 md文档更新 2020-08-24 15:54:21 +08:00
张乐
aa171e1fb7 1、优化产品属性、规格唯一性
2、修复佣金获取数值计算不争取的问题
2020-08-24 15:25:23 +08:00
张乐
1f9db8a2e9 1、解决产品搜索in产品id的时候id为空集合的bug
2、解决用户登录推广人为null的bug
2020-08-24 12:18:06 +08:00
张乐
6358520963 logo取值bug修复 2020-08-24 11:52:35 +08:00
张乐
bde995dabb 购物车价格小数优化 2020-08-24 11:51:43 +08:00
张乐
53b20ab5a0 bug fix 2020-08-21 18:23:26 +08:00
张乐
6ea6ba6c4f 1、代码优化
2、bug修复
3、数据库优化
2020-08-21 12:09:20 +08:00
张乐
541b8df061 删除部分无用文件 2020-08-19 18:25:50 +08:00
张乐
7cc9f49abf 1、修复了部分bug
2、优化了数据库sql文件
3、优化了部分文件
2020-08-19 18:23:49 +08:00
张乐
b3e3b87192 1、删除部分优化后的mapper 2020-08-18 17:27:31 +08:00
张乐
e2e612e11c 1、优化发布java代码流程,开源不易,开源统计请大家配合,谢谢。
2、修复bug
3、优化sql文件
4、短信回执
2020-08-18 17:26:56 +08:00
张乐
4405bf9d8b 解决异常数据导致文章访问500 2020-08-17 18:56:08 +08:00
张乐
d9d6ec0624 bug修复 2020-08-17 18:32:53 +08:00
张乐
3af483e2f9 根目录下domain.json前端打包需要文件 2020-08-17 16:21:05 +08:00
张乐
143f305fc6 新增 admin 下 由于文件夹名称log而丢失的文件 2020-08-17 16:17:57 +08:00
张乐
3c9caa8b50 紧急修复了一些bug 2020-08-17 15:28:28 +08:00
FeiLiao
05cc87969a Update README.md 2020-08-15 15:35:13 +08:00
FeiLiao
a06e9d92cd Update README.md 2020-08-15 15:20:17 +08:00
FeiLiao
93f30876e5 Update README.md 2020-08-15 15:18:50 +08:00
张乐
bcbfa4e4e5 更新说明文档 2020-08-14 19:14:28 +08:00
张乐
d15c9866f5 更新说明文档 2020-08-14 19:13:57 +08:00
张乐
20c7af9c4c 加入开源许可证 2020-08-14 09:57:03 +08:00
张乐
7871564605 删除日志 2020-08-13 18:08:42 +08:00
张乐
d3827f609c 说明文档更细 2020-08-13 16:31:44 +08:00
张乐
552c0f4803 说明文档更新 2020-08-13 16:18:03 +08:00
张乐
acd9b0cb1a 我们发布啦 2020-08-13 16:12:57 +08:00
2244 changed files with 339354 additions and 2 deletions

8
.gitignore vendored Normal file
View File

@@ -0,0 +1,8 @@
.idea/
app/unpackage
Crmeb-2022-01-04.log
crmeb_front_log
crmeb/LOG_HOME_IS_UNDEFINED
*.
*.
.DS_Store

Binary file not shown.

201
LICENSE Normal file
View File

@@ -0,0 +1,201 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

211
README.md
View File

@@ -1,2 +1,209 @@
# crmeb_java
crmeb_java
<div align="center" >
<img src="https://images.gitee.com/uploads/images/2021/1109/164354_0aafe3d2_892944.gif" />
</div>
<div align="center">
CRMEB开源商城系统Java版
</div>
<div align="center" >
<a href="http://www.crmeb.com?from=giteejava">
<img src="https://img.shields.io/badge/License-apache2.0-green.svg?style=flat" />
</a>
<a href='https://gitee.com/ZhongBangKeJi/crmeb_java/members'>
<img src='https://gitee.com/ZhongBangKeJi/crmeb_java/badge/fork.svg?theme=dark' alt='fork'></img>
</a>
<a href='https://gitee.com/ZhongBangKeJi/crmeb_java/stargazers'>
<img src='https://gitee.com/ZhongBangKeJi/crmeb_java/badge/star.svg?theme=dark' alt='star'></img>
</a>
</div>
####
<div align="center">
[官网](https://www.crmeb.com/?from=giteejava) |
[在线体验](https://admin.java.crmeb.net) |
[帮助文档](https://doc.crmeb.com/java/crmeb_java) |
[技术社区](https://www.crmeb.com/ask?from=giteejava)
[comment]: <> ([宽屏预览]&#40;https://gitee.com/ZhongBangKeJi/crmeb_java/blob/master/README.md&#41;)
</div>
<div align="center" >
<a href="https://gitee.com/ZhongBangKeJi/crmeb_java/blob/master/README.md">宽 屏 预 览</a>
</div>
<div align="center">
如果对您有帮助,您可以点右上角 "Star" ❤️ 支持一下 谢谢!
</div>
---
### 📖 简介:
CRMEB 开源商城系统Java版,基于Java+Vue+Uni-app开发,在微信公众号、小程序、H5移动端都能使用,代码全开源无加密,独立部署,二开很方便,还支持免费商用,能满足企业新零售、分销推广、拼团、砍价、秒杀等多种经营需求,自用、做二开项目都很合适。
CRMEB开源商城PHP:https://gitee.com/ZhongBangKeJi/CRMEB
系统代码全开源无加密,独立部署、二开方便,适用于企业新零售、分销、拼团、砍价,秒杀等各种业务需求。
---
### 💡 系统亮点:
>1.SpringBoot 框架开发业界主流。 </br>
>2.【前端】Web PC 管理端 Vue + Element UI。<br>
>3.【前端】移动端使用 Uni-app 框架,前后端分离开发。<br>
>4.标准RESTful 接口、标准数据传输,逻辑层次更明确,更多的提高api复用。<br>
>5.支持Redis队列,降低流量高峰,解除耦合,高可用。<br>
>6.数据导出,方便个性化分析。<br>
>7.数据统计分析,使用ECharts图表统计,实现用户、产品、订单、资金等统计分析。<br>
>8.Spring Security 权限管理,后台多种角色,多重身份权限管理,权限可以控制到按钮级别的操作。<br>
>9.Vue表单生成控件,拖拽配置表单,减少前端重复表单工作量,提高前端开发效率。<br>
---
### 💻 运行环境及框架:
~~~
1. 移动端uniapp开发框架 可生成H5 公众号 微信小程序
2. WEB Pc 管理后台使用Vue + Element UI 开发 兼容主流浏览器 ie11+
3. 后台服务 Java SpringBoot + Mybatis-plus + Mysql + redis
4. 运行环境 linux和windows等都支持,只要有Java环境和对应的数据库 redis
5. 运行条件 Java 1.8 Mysql5.7
~~~
---
### 🔧 Java项目框架 和 WEB PC 项目运行环境
~~~
1. SpringBoot 2.2.6.RELEASE
2. Maven 3.6.1
3. swagger-bootstrap-ui 1.0
4. Mybatis Plus 3.3.1
5. npm 6
6. node 14
7. vue 2.x
8. element ui 2.13
~~~
---
### 🧭 项目代码包介绍
~~~
1. admin WEB程序 PC端管理端 VUE + ElementUi
2. app 移动商城 UniApp标准开发(H5 + 微信小程序)
3. crmeb Api Java SpringBoot + mybatisPlus
4. 接口文档 Api对应的接口文档也可以部署项目后查看
~~~
移动端 uniapp 开发 使用 HbuilderX 开发
---
[![](crmeb/crmebimage/crmebimage/demoimage/gitee-广告_java多商户.jpg)](https://www.crmeb.com/index/java_merchant)
### 🎬 系统演示:
![](crmeb/crmebimage/crmebimage/demoimage/c1.jpg)
移动端:https://java.crmeb.net<br>
WEBPC管理端:https://admin.java.crmeb.net<br>
账号密码: demo/crmeb.com<br>
自己搭建演示账号
移动端 18292417675 / Crmeb_123456
管理端 admin / 123456
[想了解CRMEB开源商城系统Java版整体框架,你可以戳这里快速掌握!](https://doc.crmeb.com/java/crmeb_java/2049)
---
### 📃 系统资料
需要系统文档的朋友看过来,安装文档、产品介绍、技术文档...你想要的我都有!
[https://doc.crmeb.com/java/crmeb_java](https://doc.crmeb.com/java/crmeb_java)
要安装系统,跟着视频更顺畅!CRMEB开源商城系统Java版安装视频,给你奉上!
视频教程 B站视频教程 持续更新中 [点击观看 💻🖥️](https://www.bilibili.com/video/BV1bP4y1n76P/?vd_source=40854aeda5bba4b8766afd5a99623b16)
---
### 💟 UI界面
#### 核心功能
![](crmeb/crmebimage/crmebimage/demoimage/javaop2.jpg)
### 📱 移动端预览
<!-- ![](crmeb/crmebimage/crmebimage/demoimage/03-mobile-01.png)
![](crmeb/crmebimage/crmebimage/demoimage/04-mobile-02.png)
![](crmeb/crmebimage/crmebimage/demoimage/05-mobile-03.png) -->
![](crmeb/crmebimage/crmebimage/demoimage/001front.jpg)
### WEB PC管理端预览
<!-- ![](crmeb/crmebimage/crmebimage/demoimage/07-pc-01.png)
![](crmeb/crmebimage/crmebimage/demoimage/08-pc-02.png)
![](crmeb/crmebimage/crmebimage/demoimage/09-pc-03.png)
![](crmeb/crmebimage/crmebimage/demoimage/10-pc-04.png)
![](crmeb/crmebimage/crmebimage/demoimage/11-pc-05.png)
![](crmeb/crmebimage/crmebimage/demoimage/12-pc-06.png) -->
![](crmeb/crmebimage/crmebimage/demoimage/001admin.jpg)
![](crmeb/crmebimage/crmebimage/demoimage/13yemiandesiner-min.gif)
![](crmeb/crmebimage/crmebimage/demoimage/14yijianhuanse-min.gif)
![](crmeb/crmebimage/crmebimage/demoimage/15webPCadmin-min.gif)
---
### 📲 CRMEB开源技术交流群
扫码进群可领取开源版接口文档、产品功能清单、高清UI设计图、思维脑图!
![](crmeb/crmebimage/crmebimage/demoimage/wellcomJavaGroup.jpg)
#### 📈 技术社区
找方法、提bug、看官方消息、拿活跃大奖!
https://www.crmeb.com/ask/thread/list/152
#### 📞 技术交流
跟着官方,不迷路!欢迎扫码加入CRMEB 开源项目群,一手消息及资源,尽在掌握!<br>
CRMEB JAVA 技术交流QQ群 1群 🈵️<br>
CRMEB JAVA 技术交流QQ群 2群 🈵️<br>
CRMEB JAVA 技术交流QQ群 3群 640230510 🈵️ 群已满<br>
<!-- [CRMEB开源商城系统开发QQ频道已开启,点击加入一起交流学习](https://pd.qq.com/s/1v2yb4e0p)<br>
![](crmeb/crmebimage/crmebimage/demoimage/qqcus.jpg) -->
使用中遇到bug 或者问题可以在gitee 上提 Issues
<!-- ---
### 💌 特别鸣谢
核心开发团队
产品: 木子刀客
技术: ❄指缝de阳光, 怪兽的猫, 乡关何处
团队打杂: 大粽子
UI: 被子横盖显得高🐰
测试: 请叫我绵绵🐏, 夏天
--- -->
### 🔔 使用须知
1.允许用于个人学习、毕业设计、教学案例、公益事业、商业使用;<br>
2.如果商用必须保留版权信息,请自觉遵守;<br>
3.禁止将本项目的代码和资源进行任何形式的出售,产生的一切任何后果责任由侵权者自负。<br>
---
### 🪪 版权信息
本项目包含的第三方源码和二进制文件之版权信息另行标注。<br>
版权所有Copyright © 2017-2024 by CRMEB (https://www.crmeb.com?from=giteejava)<br>
All rights reserved。<br>
CRMEB® 商标和著作权所有者为西安众邦网络科技有限公司。<br>
---

14
admin/.editorconfig Normal file
View File

@@ -0,0 +1,14 @@
# https://editorconfig.org
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
[*.md]
insert_final_newline = false
trim_trailing_whitespace = false

14
admin/.env.development Normal file
View File

@@ -0,0 +1,14 @@
# just a flag
ENV = 'development'
# base api
VUE_APP_BASE_API = 'http://127.0.0.1:8080'
# vue-cli uses the VUE_CLI_BABEL_TRANSPILE_MODULES environment variable,
# to control whether the babel-plugin-dynamic-import-node plugin is enabled.
# It only does one thing by converting all import() to require().
# This configuration can significantly increase the speed of hot updates,
# when you have a large number of pages.
# Detail: https://github.com/vuejs/vue-cli/blob/dev/packages/@vue/babel-preset-app/index.js
VUE_CLI_BABEL_TRANSPILE_MODULES = true

6
admin/.env.production Normal file
View File

@@ -0,0 +1,6 @@
# just a flag
ENV = 'production'
# base api
VUE_APP_BASE_API = 'http://api.xxx'

5
admin/.env.staging Normal file
View File

@@ -0,0 +1,5 @@
ENV = 'production'
# base api
VUE_APP_BASE_API = 'http://api.xxx'

7
admin/.eslintignore Normal file
View File

@@ -0,0 +1,7 @@
build/*.js
src/assets
public
dist
src/components/FormGenerator
src/directive
src/

396
admin/.eslintrc.js Normal file
View File

@@ -0,0 +1,396 @@
module.exports = {
root: true,
parserOptions: {
parser: 'babel-eslint',
sourceType: 'module'
},
env: {
browser: true,
node: true,
es6: true,
},
extends: ['plugin:vue/recommended', 'eslint:recommended'],
// add your custom rules here
//it is base on https://github.com/vuejs/eslint-config-vue
rules: {
"vue/max-attributes-per-line": [2, {
"singleline": 10,
"multiline": {
"max": 1,
"allowFirstLine": false
}
}],
"vue/singleline-html-element-content-newline": "off",
"vue/multiline-html-element-content-newline":"off",
"vue/name-property-casing": ["error", "PascalCase"],
"vue/no-v-html": "off",
'accessor-pairs': 2,
'arrow-spacing': [2, {
'before': true,
'after': true
}],
'block-spacing': [2, 'always'],
'brace-style': [2, '1tbs', {
'allowSingleLine': true
}],
'camelcase': [0, {
'properties': 'always'
}],
'comma-dangle': [2, 'never'],
'comma-spacing': [2, {
'before': false,
'after': true
}],
'comma-style': [2, 'last'],
'constructor-super': 2,
'curly': [2, 'multi-line'],
'dot-location': [2, 'property'],
'eol-last': 2,
'eqeqeq': ["error", "always", {"null": "ignore"}],
'generator-star-spacing': [2, {
'before': true,
'after': true
}],
'handle-callback-err': [2, '^(err|error)$'],
'indent': [2, 2, {
'SwitchCase': 1
}],
'jsx-quotes': [2, 'prefer-single'],
'key-spacing': [2, {
'beforeColon': false,
'afterColon': true
}],
'keyword-spacing': [2, {
'before': true,
'after': true
}],
'new-cap': [2, {
'newIsCap': true,
'capIsNew': false
}],
'new-parens': 2,
'no-array-constructor': 2,
'no-caller': 2,
'no-console': 'off',
'no-class-assign': 2,
'no-cond-assign': 2,
'no-const-assign': 2,
'no-control-regex': 0,
'no-delete-var': 2,
'no-dupe-args': 2,
'no-dupe-class-members': 2,
'no-dupe-keys': 2,
'no-duplicate-case': 2,
'no-empty-character-class': 2,
'no-empty-pattern': 2,
'no-eval': 2,
'no-ex-assign': 2,
'no-extend-native': 2,
'no-extra-bind': 2,
'no-extra-boolean-cast': 2,
'no-extra-parens': [2, 'functions'],
'no-fallthrough': 2,
'no-floating-decimal': 2,
'no-func-assign': 2,
'no-implied-eval': 2,
'no-inner-declarations': [2, 'functions'],
'no-invalid-regexp': 2,
'no-irregular-whitespace': 2,
'no-iterator': 2,
'no-label-var': 2,
'no-labels': [2, {
'allowLoop': false,
'allowSwitch': false
}],
'no-lone-blocks': 2,
'no-mixed-spaces-and-tabs': 2,
'no-multi-spaces': 2,
'no-multi-str': 2,
'no-multiple-empty-lines': [2, {
'max': 1
}],
'no-native-reassign': 2,
'no-negated-in-lhs': 2,
'no-new-object': 2,
'no-new-require': 2,
'no-new-symbol': 2,
'no-new-wrappers': 2,
'no-obj-calls': 2,
'no-octal': 2,
'no-octal-escape': 2,
'no-path-concat': 2,
'no-proto': 2,
'no-redeclare': 2,
'no-regex-spaces': 2,
'no-return-assign': [2, 'except-parens'],
'no-self-assign': 2,
'no-self-compare': 2,
'no-sequences': 2,
'no-shadow-restricted-names': 2,
'no-spaced-func': 2,
'no-sparse-arrays': 2,
'no-this-before-super': 2,
'no-throw-literal': 2,
'no-trailing-spaces': 2,
'no-undef': 2,
'no-undef-init': 2,
'no-unexpected-multiline': 2,
'no-unmodified-loop-condition': 2,
'no-unneeded-ternary': [2, {
'defaultAssignment': false
}],
'no-unreachable': 2,
'no-unsafe-finally': 2,
'no-unused-vars': [2, {
'vars': 'all',
'args': 'none'
}],
'no-useless-call': 2,
'no-useless-computed-key': 2,
'no-useless-constructor': 2,
'no-useless-escape': 0,
'no-whitespace-before-property': 2,
'no-with': 2,
'one-var': [2, {
'initialized': 'never'
}],
'operator-linebreak': [2, 'after', {
'overrides': {
'?': 'before',
':': 'before'
}
}],
'padded-blocks': [2, 'never'],
'quotes': [2, 'single', {
'avoidEscape': true,
'allowTemplateLiterals': true
}],
'semi': [2, 'never'],
'semi-spacing': [2, {
'before': false,
'after': true
}],
'space-before-blocks': [2, 'always'],
'space-before-function-paren': [2, 'never'],
'space-in-parens': [2, 'never'],
'space-infix-ops': 2,
'space-unary-ops': [2, {
'words': true,
'nonwords': false
}],
'spaced-comment': [2, 'always', {
'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ',']
}],
'template-curly-spacing': [2, 'never'],
'use-isnan': 2,
'valid-typeof': 2,
'wrap-iife': [2, 'any'],
'yield-star-spacing': [2, 'both'],
'yoda': [2, 'never'],
'prefer-const': 2,
'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
'object-curly-spacing': [2, 'always', {
objectsInObjects: false
}],
'array-bracket-spacing': [2, 'never']
}
}
module.exports = {
root: true,
parserOptions: {
parser: 'babel-eslint',
sourceType: 'module'
},
env: {
browser: true,
node: true,
es6: true,
},
extends: ['plugin:vue/recommended', 'eslint:recommended'],
// add your custom rules here
//it is base on https://github.com/vuejs/eslint-config-vue
rules: {
"vue/max-attributes-per-line": [2, {
"singleline": 10,
"multiline": {
"max": 1,
"allowFirstLine": false
}
}],
"vue/singleline-html-element-content-newline": "off",
"vue/multiline-html-element-content-newline":"off",
"vue/name-property-casing": ["error", "PascalCase"],
"vue/no-v-html": "off",
'accessor-pairs': 2,
'arrow-spacing': [2, {
'before': true,
'after': true
}],
'block-spacing': [2, 'always'],
'brace-style': [2, '1tbs', {
'allowSingleLine': true
}],
'camelcase': [0, {
'properties': 'always'
}],
'comma-dangle': [2, 'never'],
'comma-spacing': [2, {
'before': false,
'after': true
}],
'comma-style': [2, 'last'],
'constructor-super': 2,
'curly': [2, 'multi-line'],
'dot-location': [2, 'property'],
'eol-last': 2,
'eqeqeq': ["error", "always", {"null": "ignore"}],
'generator-star-spacing': [2, {
'before': true,
'after': true
}],
'handle-callback-err': [2, '^(err|error)$'],
'indent': [2, 2, {
'SwitchCase': 1
}],
'jsx-quotes': [2, 'prefer-single'],
'key-spacing': [2, {
'beforeColon': false,
'afterColon': true
}],
'keyword-spacing': [2, {
'before': true,
'after': true
}],
'new-cap': [2, {
'newIsCap': true,
'capIsNew': false
}],
'new-parens': 2,
'no-array-constructor': 2,
'no-caller': 2,
'no-console': 'off',
'no-class-assign': 2,
'no-cond-assign': 2,
'no-const-assign': 2,
'no-control-regex': 0,
'no-delete-var': 2,
'no-dupe-args': 2,
'no-dupe-class-members': 2,
'no-dupe-keys': 2,
'no-duplicate-case': 2,
'no-empty-character-class': 2,
'no-empty-pattern': 2,
'no-eval': 2,
'no-ex-assign': 2,
'no-extend-native': 2,
'no-extra-bind': 2,
'no-extra-boolean-cast': 2,
'no-extra-parens': [2, 'functions'],
'no-fallthrough': 2,
'no-floating-decimal': 2,
'no-func-assign': 2,
'no-implied-eval': 2,
'no-inner-declarations': [2, 'functions'],
'no-invalid-regexp': 2,
'no-irregular-whitespace': 2,
'no-iterator': 2,
'no-label-var': 2,
'no-labels': [2, {
'allowLoop': false,
'allowSwitch': false
}],
'no-lone-blocks': 2,
'no-mixed-spaces-and-tabs': 2,
'no-multi-spaces': 2,
'no-multi-str': 2,
'no-multiple-empty-lines': [2, {
'max': 1
}],
'no-native-reassign': 2,
'no-negated-in-lhs': 2,
'no-new-object': 2,
'no-new-require': 2,
'no-new-symbol': 2,
'no-new-wrappers': 2,
'no-obj-calls': 2,
'no-octal': 2,
'no-octal-escape': 2,
'no-path-concat': 2,
'no-proto': 2,
'no-redeclare': 2,
'no-regex-spaces': 2,
'no-return-assign': [2, 'except-parens'],
'no-self-assign': 2,
'no-self-compare': 2,
'no-sequences': 2,
'no-shadow-restricted-names': 2,
'no-spaced-func': 2,
'no-sparse-arrays': 2,
'no-this-before-super': 2,
'no-throw-literal': 2,
'no-trailing-spaces': 2,
'no-undef': 2,
'no-undef-init': 2,
'no-unexpected-multiline': 2,
'no-unmodified-loop-condition': 2,
'no-unneeded-ternary': [2, {
'defaultAssignment': false
}],
'no-unreachable': 2,
'no-unsafe-finally': 2,
'no-unused-vars': [2, {
'vars': 'all',
'args': 'none'
}],
'no-useless-call': 2,
'no-useless-computed-key': 2,
'no-useless-constructor': 2,
'no-useless-escape': 0,
'no-whitespace-before-property': 2,
'no-with': 2,
'one-var': [2, {
'initialized': 'never'
}],
'operator-linebreak': [2, 'after', {
'overrides': {
'?': 'before',
':': 'before'
}
}],
'padded-blocks': [2, 'never'],
'quotes': [2, 'single', {
'avoidEscape': true,
'allowTemplateLiterals': true
}],
'semi': [2, 'never'],
'semi-spacing': [2, {
'before': false,
'after': true
}],
'space-before-blocks': [2, 'always'],
'space-before-function-paren': [2, 'never'],
'space-in-parens': [2, 'never'],
'space-infix-ops': 2,
'space-unary-ops': [2, {
'words': true,
'nonwords': false
}],
'spaced-comment': [2, 'always', {
'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ',']
}],
'template-curly-spacing': [2, 'never'],
'use-isnan': 2,
'valid-typeof': 2,
'wrap-iife': [2, 'any'],
'yield-star-spacing': [2, 'both'],
'yoda': [2, 'never'],
'prefer-const': 2,
'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
'object-curly-spacing': [2, 'always', {
objectsInObjects: false
}],
'array-bracket-spacing': [2, 'never']
}
}

23
admin/.gitignore vendored Normal file
View File

@@ -0,0 +1,23 @@
.DS_Store
node_modules/
dist/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
**/*.log
tests/**/coverage/
tests/e2e/reports
selenium-debug.log
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.local
package-lock.json
yarn.lock

5
admin/.travis.yml Normal file
View File

@@ -0,0 +1,5 @@
language: node_js
node_js: 10
script: npm run test
notifications:
email: false

21
admin/LICENSE Normal file
View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2017-present PanJiaChen
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

18
admin/README.ZBKJ.md Normal file
View File

@@ -0,0 +1,18 @@
公用组件
无限极分类组件 src/components/Category
使用范围:菜单,文章等各种分类配置数据
表单生成组件
https://github.com/JakHuang/form-generator
json渲染表单以及是否需要编辑数据回填的功能以下为例
示例:src/views/maintain/devconfig/combineEdit.vue
<parser v-if="formConf.fields.length > 0" :isEdit="isCreate === 1" :form-conf="formConf" :formEditData="editData" @submit="handlerSubmit" />
注意:设置单选按钮的值时需要带上单引号,要不渲染待编辑数据时不会自动选中
提示:如果不需要每次刷新页面都弹出二维码,请在src/layout/index.vue中注释或者删除15行代码。
```
<div class="open-image" @click="clear" v-if="openImage"><img src="@/assets/imgs/pc1.png" alt=""></div>
```

258
admin/README.md Normal file
View File

@@ -0,0 +1,258 @@
# CRMEB Admin
## 开发规范
统一使用ES6 语法
方法注释
/*
* th => 表头
* data => 数据
* fileName => 文件名
* fileType => 文件类型
* sheetName => sheet页名
*/
export default function toExcel ({ th, data, fileName, fileType, sheetName })
行注释 //
### 命名
页面目录 文件夹命名格式骆驼式命名法,例如:用户列表 userList
例如:商品模块
store 商品
├─ store 商品管理
├─index.vue 首页
├─ creatStore 新建商品
├─ index.vue
├─ sort 商品分类
├─ index.vue
├─storeAttr 商品规格
├─ index.vue
├─storeComment 商品评论
├─ index.vue
页面命名、组建、文件夹 命名格式小驼峰命名法,例如:用户列表 userList
类名函数命名 大驼峰式 例如:addUser
变量命名 小驼峰式 例如:user 或者 userInfo
常量 采用全大些下划线命名 例如:VUE_APP_API_URl
### 文件管理规范
views 页面模块必须件文件夹区分
api 接口一个模块一个文件
组建 一个组建一个文件夹
plugins 插件一个插件一个文件夹
vuex 路由状态管理,一个模块在modules 中建一个文件夹
router 一个模块一个模块在modules 中建一个文件夹
style 样式尽量采用iView自带组建,common.less 系统通用样式不要轻易动
自定义通用样式 style.less,每次添加必须加注释,页面独立样式在在页面内写,后缀less 格式
组建样式 styles 中添加文件夹 composents 对应components 目录新建样式文件
utils 自定义工具js 独立命名,一般不用新建文件夹
## 模块命名
~~~
├─ login 登录
├─ dashboard 首页
├─ store 商品管理
├─ order 系统订单管理
├─ distribution 分销
├─ user 用户管理
├─ content 内容管理
├─ appSetting 各个应用模块功能管理公众号、小程序、支付宝、百度小程序、今日头条小程序
├─ marketing 营销管理 优惠劵 积分 秒杀
├─ sms 设置 短信设置
├─ systemSetting 设置 管理员权限 系统设置 物流设置
├─ maintain 维护 配置分类 组合数据 表单配置
├─ error-page 错误页
~~~
## 目录结构
主要目录结构及说明:
~~~
├── public # 静态资源
│ ├── favicon.ico # favicon图标
│ └── index.html # html 模板
├── src # 源代码
│ ├── api # 所有请求
│ │ └──user.js # 有关登录/用户的接口
│ │ └──article.js # 有关内容的接口
│ │ └──categoryApi.js # 有关配置的接口
│ │ └──configTabApi.js # 有关配置分类的接口
│ │ └──dashboard.js # 有关统计的接口
│ │ └──distribution.js # 有关分销的接口
│ │ └──logistics.js # 有关城市数据、物流配置的接口
│ │ └──marketing.js # 有关优惠券、秒杀的接口
│ │ └──order.js # 有关订单的接口
│ │ └──role.js # 有关权限的接口
│ │ └──roleApi.js # 有关菜单的接口
│ │ └──sms.js # 有关短信的接口
│ │ └──store.js # 有关商品的接口
│ │ └──storePoint.js # 有关提货点的接口
│ │ └──productCreateApi.js # 有关附件上传的接口
│ │ └──systemadmin.js # 有关管理员的接口
│ │ └──systemConfig.js # 有关系统配置的接口
│ │ └──systemFormConfig.js # 有关表单配置的接口
│ │ └──systemGroup.js # 有关组合数据的接口
│ │ └──systemSetting.js # 有关上传文件的接口
│ │ └──user.js # 有关用户的接口
│ │ └──wxApi.js # 有关微信的接口
│ ├── assets # 图片、svg 等静态资源
│ ├── components # 公共组件
│ │ └──articleList # 文章列表
│ │ └──attrFrom # 商品规格
│ │ └──Breadcrumb # 头部标题标签
│ │ └──cards # 统计小方块
│ │ └──echarts # 统计图
│ │ └──Category # 分类
│ │ └──customerInfo # 用户列表
│ │ └──FormGenerator # 表单配置
│ │ └──couponList # 优惠劵列表
│ │ └──goodsList # 商品列表
│ │ └──Hamburger # 导航收缩组件
│ │ └──HeaderSearch # 导航搜索组件
│ │ └──iconFrom # 导航添加图标
│ │ └──RightPanel # 右侧设置按钮,设置导航相关
│ │ └──Screenfull # 全屏
│ │ └──SvgIcon # svg图标
│ │ └──Tinymce # 富文本编辑器
│ │ └──ThemePicker # 右侧设置按钮,设置组题颜色
│ │ └──templatesFrom # 运费模板
│ │ └──uploadPicture # 上传图片组件
│ │ └──Upload # 上传文件组件
│ │ └──UploadExcel # 下载Excel
│ │ └──userList # 用户列表
│ │ └──TopNav # 顶部一级导航
│ │ └──TimeSelect # 时间段选择
│ │ └──verifition # 滑块验证
│ ├── layouts # 导航布局
│ │ ├──index # 主页面
│ │ ├──components # 导航组件
│ │ └──Settings # 右边小按钮,设置导航等
│ │ └──Sidebar # 侧边导航
│ │ └──TagsView # tab标签页导航
│ │ └──Navbar # 头部导航
│ │ └──AppMain # 导航路由
│ │ └──index.js # 组件引用
│ │ └──mixins # 自适应大小
│ ├── libs # 公共js方法
│ │ └──settingMer # 配置请求地址
│ ├── views # 所有页面
│ │ └──login # 登录
│ │ └──index # 登录
│ │ └──dashboard # 首页
│ │ └──store # 商品
│ │ └──creatStore # 添加商品
│ │ └──storeAttr # 商品规格
│ │ └──sort # 商品分类
│ │ └──taoBao # 复制商品
│ │ └──storeComment # 商品评论
│ │ └──order # 订单管理
│ │ └──marketing # 营销
│ │ └──coupon # 优惠劵
│ │ └──systemSetting # 设置
│ │ └──administratorAuthority # 管理权限
│ │ └──adminList # 管理员列表
│ │ └──identityManager# 身份管理
│ │ └──permissionRules# 权限规则
│ │ └──logistics # 物流设置
│ │ └──cityList # 城市数据
│ │ └──companyList # 物流公司
│ │ └──config # 物流配置
│ │ └──shippingTemplates # 运费模板
│ │ └──setting # 系统设置
│ │ └──systemStore # 提货点设置
│ │ └──appSetting # 应用 小程序 公众号设置
│ │ └──content # 内容
│ │ └──article # 文章管理
│ │ └──articleclass # 文章分类
│ │ └──datas # 统计数据
│ │ └──user # 用户
│ │ └──list # 用户管理
│ │ └──grade # 用户等级/标签
│ │ └──group # 用户分组
│ │ └──distribution # 分销设置
│ │ └──maintain # 维护
│ │ └──devconfig # 组合数据
│ │ └──formConfig # 表单配置
│ │ └──financial # 财务
│ │ └──error-page # 错误页
│ │ └──404 # 错误页404
│ │ └──403 # 错误页403
│ ├── filters # 过滤器
│ ├── router # 路由配置
│ │ └──modules # 页面路由模块
│ │ └──content.js # 有关内容 文章
│ │ └──user.js # 有关用户
│ │ └──appSetting.js # 有关应用
│ │ └──marketing.js # 有关优惠券、秒杀
│ │ └──distribution.js # 有关分销
│ │ └──order.js # 有关订单
│ │ └──financial.js # 有关财务
│ │ └──store.js # 有关商品
│ │ └──maintain.js # 有关维护
│ │ └──operation.js # 有关设置
│ │ └──index.js # 路由的汇总
│ ├── store # Vuex 状态管理
│ ├── utils # 全局公用方法
│ │ └──request.js # 请求封装
│ │ └──settingMer.js # 请求地址配置
│ ├── styles # 样式管理
│ ├── permission.js # 路由拦截
│ ├── main.js # 入口文件 加载组件 初始化等
│ └── App.vue # 入口页面
├── tests # 测试
├── .env.xxx # 环境变量配置
├── .eslintrc.js # eslint 配置项
├── .babelrc # babel-loader 配置
├── .travis.yml # 自动化CI配置
├── vue.config.js # vue-cli 配置
├── postcss.config.js # postcss 配置
└── package.json # package.json
~~~
## 开发
```bash
# 克隆项目
git clone https://gitee.com/ZhongBangKeJi/crmeb_java/
# 进入项目目录
cd ##
# 安装依赖
npm install
# 建议不要直接使用 cnpm 安装依赖,会有各种诡异的 bug。可以通过如下操作解决 npm 下载速度慢的问题
npm install --registry=https://registry.npm.taobao.org
# 启动服务
npm run dev
```
浏览器访问 http://localhost:9527
## 发布
```bash
# 构建测试环境
npm run build:stage
# 构建生产环境
npm run build:prod
```
## 其它
```bash
# 预览发布环境效果
npm run preview
# 预览发布环境效果 + 静态资源分析
npm run preview -- --report
# 代码格式检查
npm run lint
# 代码格式检查并自动修复
npm run lint -- --fix
```

10
admin/babel.config.js Normal file
View File

@@ -0,0 +1,10 @@
module.exports = {
presets: [
['@vue/app',
{
'useBuiltIns': 'entry',
polyfills: ['es6.promise', 'es6.symbol']
}
]
]
}

35
admin/build/index.js Normal file
View File

@@ -0,0 +1,35 @@
const { run } = require('runjs')
const chalk = require('chalk')
const config = require('../vue.config.js')
const rawArgv = process.argv.slice(2)
const args = rawArgv.join(' ')
if (process.env.npm_config_preview || rawArgv.includes('--preview')) {
const report = rawArgv.includes('--report')
run(`vue-cli-service build ${args}`)
const port = 9526
const publicPath = config.publicPath
var connect = require('connect')
var serveStatic = require('serve-static')
const app = connect()
app.use(
publicPath,
serveStatic('./dist', {
index: ['index.html', '/']
})
)
app.listen(port, function () {
console.log(chalk.green(`> Preview at http://localhost:${port}${publicPath}`))
if (report) {
console.log(chalk.green(`> Report at http://localhost:${port}${publicPath}report.html`))
}
})
} else {
run(`vue-cli-service build ${args}`)
}

24
admin/jest.config.js Normal file
View File

@@ -0,0 +1,24 @@
module.exports = {
moduleFileExtensions: ['js', 'jsx', 'json', 'vue'],
transform: {
'^.+\\.vue$': 'vue-jest',
'.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$':
'jest-transform-stub',
'^.+\\.jsx?$': 'babel-jest'
},
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/src/$1'
},
snapshotSerializers: ['jest-serializer-vue'],
testMatch: [
'**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)'
],
collectCoverageFrom: ['src/utils/**/*.{js,vue}', '!src/utils/auth.js', '!src/utils/request.js', 'src/components/**/*.{js,vue}'],
coverageDirectory: '<rootDir>/tests/unit/coverage',
// 'collectCoverage': true,
'coverageReporters': [
'lcov',
'text-summary'
],
testURL: 'http://localhost/'
}

9
admin/jsconfig.json Normal file
View File

@@ -0,0 +1,9 @@
{
"compilerOptions": {
"baseUrl": "./",
"paths": {
"@/*": ["src/*"]
}
},
"exclude": ["node_modules", "dist"]
}

113
admin/package.json Normal file
View File

@@ -0,0 +1,113 @@
{
"name": "crmeb-java-webpc-admin",
"version": "4.2.1",
"description": "Java mall free open source CRMEB mall JAVA version, SpringBoot + Maven + Swagger + Mybatis Plus + Redis + Uniapp +Vue+elementUI Including mobile terminal, applet, PC background, Api interface; products, users, shopping carts, orders, points, Modules such as coupons, marketing, balance, permissions, roles, system settings, combined data, and drag-and-drop forms have greatly reduced the cost of second-opening.",
"author": "CRMEB",
"license": "MIT",
"scripts": {
"dev": "vue-cli-service serve --open",
"build:prod": "vue-cli-service build",
"build:stage": "vue-cli-service build --mode staging",
"preview": "node build/index.js --preview",
"lint": "eslint --fix --ext .js,.vue src",
"test:unit": "jest --clearCache && vue-cli-service test:unit",
"test:ci": "npm run lint && npm run test:unit",
"svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml",
"new": "plop"
},
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
"lint-staged": {
"src/**/*.{js,vue}": [
"eslint --fix",
"git add"
]
},
"keywords": [
"CRMEB Java"
],
"repository": {
"type": "gitee",
"url": "https://gitee.com/ZhongBangKeJi/crmeb_java"
},
"bugs": {
"url": "https://gitee.com/ZhongBangKeJi/crmeb_java/issues"
},
"dependencies": {
"@babel/parser": "^7.9.6",
"@riophae/vue-treeselect": "0.4.0",
"async-validator": "^1.11.2",
"axios": "^0.24.0",
"babel-polyfill": "^6.26.0",
"clipboard": "^2.0.4",
"core-js": "^2.6.11",
"crypto-js": "^4.1.1",
"echarts": "4.2.1",
"element-ui": "2.13.0",
"file-saver": "2.0.1",
"fuse.js": "3.4.4",
"js-cookie": "2.2.0",
"jsonlint": "1.6.3",
"jszip": "3.2.1",
"mpvue-calendar": "^2.3.7",
"sass": "1.26.2",
"sass-loader": "^7.2.0",
"normalize.css": "7.0.0",
"nprogress": "0.2.0",
"path-to-regexp": "2.4.0",
"qrcodejs2": "^0.0.2",
"screenfull": "4.2.0",
"script-loader": "0.7.2",
"throttle-debounce": "^2.1.0",
"vconsole": "^3.3.2",
"vue": "2.6.10",
"vue-awesome-swiper": "^3.1.3",
"vue-echarts": "^4.0.3",
"vue-router": "3.0.2",
"vue-ydui": "^1.2.6",
"vuedraggable": "^2.20.0",
"vuex": "3.1.0",
"wechat-jssdk": "^5.0.4",
"xlsx": "0.14.1"
},
"devDependencies": {
"@babel/core": "7.0.0",
"@babel/register": "7.0.0",
"@vue/cli-plugin-babel": "3.5.3",
"@vue/cli-plugin-eslint": "^3.9.1",
"@vue/cli-plugin-unit-jest": "3.5.3",
"@vue/cli-service": "3.5.3",
"@vue/test-utils": "1.0.0-beta.29",
"babel-core": "7.0.0-bridge.0",
"babel-jest": "23.6.0",
"chalk": "2.4.2",
"chokidar": "^3.1.1",
"connect": "3.6.6",
"eslint": "5.15.3",
"eslint-plugin-vue": "5.2.2",
"html-webpack-plugin": "3.2.0",
"husky": "1.3.1",
"lint-staged": "8.1.5",
"mockjs": "1.0.1-beta3",
"plop": "2.3.0",
"runjs": "^4.3.2",
"script-loader": "^0.7.2",
"script-ext-html-webpack-plugin": "2.1.3",
"serve-static": "^1.13.2",
"svg-sprite-loader": "4.1.3",
"svgo": "1.2.0",
"vue-lazyload": "^1.3.3",
"vue-template-compiler": "2.6.10"
},
"engines": {
"node": ">=8.9",
"npm": ">= 3.0.0"
},
"browserslist": [
"> 1%",
"last 2 versions"
]
}

View File

@@ -0,0 +1,26 @@
{{#if template}}
<template>
<div />
</template>
{{/if}}
{{#if script}}
<script>
export default {
name: '{{ properCase name }}',
props: {},
data() {
return {}
},
created() {},
mounted() {},
methods: {}
}
</script>
{{/if}}
{{#if style}}
<style lang="scss" scoped>
</style>
{{/if}}

View File

@@ -0,0 +1,55 @@
const { notEmpty } = require('../utils.js')
module.exports = {
description: 'generate vue component',
prompts: [{
type: 'input',
name: 'name',
message: 'component name please',
validate: notEmpty('name')
},
{
type: 'checkbox',
name: 'blocks',
message: 'Blocks:',
choices: [{
name: '<wxTemplate>',
value: 'template',
checked: true
},
{
name: '<script>',
value: 'script',
checked: true
},
{
name: 'style',
value: 'style',
checked: true
}
],
validate(value) {
if (value.indexOf('script') === -1 && value.indexOf('template') === -1) {
return 'Components require at least a <script> or <wxTemplate> tag.'
}
return true
}
}
],
actions: data => {
const name = '{{properCase name}}'
const actions = [{
type: 'add',
path: `src/components/${name}/index.vue`,
templateFile: 'plop-templates/component/index.hbs',
data: {
name: name,
template: data.blocks.includes('template'),
script: data.blocks.includes('script'),
style: data.blocks.includes('style')
}
}]
return actions
}
}

View File

@@ -0,0 +1,16 @@
{{#if state}}
const state = {}
{{/if}}
{{#if mutations}}
const mutations = {}
{{/if}}
{{#if actions}}
const actions = {}
{{/if}}
export default {
namespaced: true,
{{options}}
}

View File

@@ -0,0 +1,62 @@
const { notEmpty } = require('../utils.js')
module.exports = {
description: 'generate store',
prompts: [{
type: 'input',
name: 'name',
message: 'store name please',
validate: notEmpty('name')
},
{
type: 'checkbox',
name: 'blocks',
message: 'Blocks:',
choices: [{
name: 'state',
value: 'state',
checked: true
},
{
name: 'mutations',
value: 'mutations',
checked: true
},
{
name: 'actions',
value: 'actions',
checked: true
}
],
validate(value) {
if (!value.includes('state') || !value.includes('mutations')) {
return 'store require at least state and mutations'
}
return true
}
}
],
actions(data) {
const name = '{{name}}'
const { blocks } = data
const options = ['state', 'mutations']
const joinFlag = `,
`
if (blocks.length === 3) {
options.push('actions')
}
const actions = [{
type: 'add',
path: `src/store/modules/${name}.js`,
templateFile: 'plop-templates/store/index.hbs',
data: {
options: options.join(joinFlag),
state: blocks.includes('state'),
mutations: blocks.includes('mutations'),
actions: blocks.includes('actions')
}
}]
return actions
}
}

View File

@@ -0,0 +1,9 @@
exports.notEmpty = name => {
return v => {
if (!v || v.trim === '') {
return `${name} is required`
} else {
return true
}
}
}

View File

@@ -0,0 +1,26 @@
{{#if template}}
<template>
<div />
</template>
{{/if}}
{{#if script}}
<script>
export default {
name: '{{ properCase name }}',
props: {},
data() {
return {}
},
created() {},
mounted() {},
methods: {}
}
</script>
{{/if}}
{{#if style}}
<style lang="scss" scoped>
</style>
{{/if}}

View File

@@ -0,0 +1,55 @@
const { notEmpty } = require('../utils.js')
module.exports = {
description: 'generate a view',
prompts: [{
type: 'input',
name: 'name',
message: 'view name please',
validate: notEmpty('name')
},
{
type: 'checkbox',
name: 'blocks',
message: 'Blocks:',
choices: [{
name: '<wxTemplate>',
value: 'template',
checked: true
},
{
name: '<script>',
value: 'script',
checked: true
},
{
name: 'style',
value: 'style',
checked: true
}
],
validate(value) {
if (value.indexOf('script') === -1 && value.indexOf('template') === -1) {
return 'View require at least a <script> or <wxTemplate> tag.'
}
return true
}
}
],
actions: data => {
const name = '{{name}}'
const actions = [{
type: 'add',
path: `src/views/${name}/index.vue`,
templateFile: 'plop-templates/view/index.hbs',
data: {
name: name,
template: data.blocks.includes('template'),
script: data.blocks.includes('script'),
style: data.blocks.includes('style')
}
}]
return actions
}
}

9
admin/plopfile.js Normal file
View File

@@ -0,0 +1,9 @@
const viewGenerator = require('./plop-templates/view/prompt')
const componentGenerator = require('./plop-templates/component/prompt')
const storeGenerator = require('./plop-templates/store/prompt.js')
module.exports = function(plop) {
plop.setGenerator('view', viewGenerator)
plop.setGenerator('component', componentGenerator)
plop.setGenerator('store', storeGenerator)
}

5
admin/postcss.config.js Normal file
View File

@@ -0,0 +1,5 @@
module.exports = {
plugins: {
autoprefixer: {}
}
}

BIN
admin/public/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

23
admin/public/index.html Normal file
View File

@@ -0,0 +1,23 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="renderer" content="webkit">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<meta name="author" content="CRMEB! Team and CRMEB UI Team" />
<meta name="copyright" content="2001-2013 CRMEB Inc." />
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title><%= webpackConfig.name %></title>
</head>
<body>
<script src="<%= BASE_URL %>static/tinymce4.7.5/tinymce.min.js"></script>
<div id="app"></div>
<!-- built files will be auto injected -->
<div class="pre-loader" id="pre-loader">
<div class="inner one"></div>
<div class="inner two"></div>
<div class="inner three"></div>
</div>
</body>
</html>

38
admin/public/preview.html Normal file
View File

@@ -0,0 +1,38 @@
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title>form-generator-preview</title>
<link href="https://cdn.bootcss.com/element-ui/2.12.0/theme-chalk/index.css" rel="stylesheet">
<script src="https://cdn.bootcss.com/vue/2.6.10/vue.min.js"></script>
<script src="https://cdn.bootcss.com/vue-router/3.1.3/vue-router.min.js"></script>
<!-- <script src="https://cdn.bootcss.com/axios/0.19.0/axios.min.js"></script> -->
<script src="https://cdn.bootcss.com/element-ui/2.12.0/index.js"></script>
<style>
body{
margin: 0;
padding: 0;
overflow-x: hidden;
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
height: calc(100vh - 33px);
padding: 12px;
box-sizing: border-box;
font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;
}
input, textarea{
font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;
}
</style>
</head>
<body>
<noscript>
<strong>抱歉,javascript被禁用,请开启后重试。</strong>
</noscript>
<div id="previewApp"></div>
</body>
</html>

View File

@@ -0,0 +1,230 @@
tinymce.addI18n('zh_CN',{
"Cut": "\u526a\u5207",
"Heading 5": "\u6807\u98985",
"Header 2": "\u6807\u98982",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u4f60\u7684\u6d4f\u89c8\u5668\u4e0d\u652f\u6301\u5bf9\u526a\u8d34\u677f\u7684\u8bbf\u95ee\uff0c\u8bf7\u4f7f\u7528Ctrl+X\/C\/V\u952e\u8fdb\u884c\u590d\u5236\u7c98\u8d34\u3002",
"Heading 4": "\u6807\u98984",
"Div": "Div\u533a\u5757",
"Heading 2": "\u6807\u98982",
"Paste": "\u7c98\u8d34",
"Close": "\u5173\u95ed",
"Font Family": "\u5b57\u4f53",
"Pre": "\u9884\u683c\u5f0f\u6587\u672c",
"Align right": "\u53f3\u5bf9\u9f50",
"New document": "\u65b0\u6587\u6863",
"Blockquote": "\u5f15\u7528",
"Numbered list": "\u7f16\u53f7\u5217\u8868",
"Heading 1": "\u6807\u98981",
"Headings": "\u6807\u9898",
"Increase indent": "\u589e\u52a0\u7f29\u8fdb",
"Formats": "\u683c\u5f0f",
"Headers": "\u6807\u9898",
"Select all": "\u5168\u9009",
"Header 3": "\u6807\u98983",
"Blocks": "\u533a\u5757",
"Undo": "\u64a4\u6d88",
"Strikethrough": "\u5220\u9664\u7ebf",
"Bullet list": "\u9879\u76ee\u7b26\u53f7",
"Header 1": "\u6807\u98981",
"Superscript": "\u4e0a\u6807",
"Clear formatting": "\u6e05\u9664\u683c\u5f0f",
"Font Sizes": "\u5b57\u53f7",
"Subscript": "\u4e0b\u6807",
"Header 6": "\u6807\u98986",
"Redo": "\u91cd\u590d",
"Paragraph": "\u6bb5\u843d",
"Ok": "\u786e\u5b9a",
"Bold": "\u7c97\u4f53",
"Code": "\u4ee3\u7801",
"Italic": "\u659c\u4f53",
"Align center": "\u5c45\u4e2d",
"Header 5": "\u6807\u98985",
"Heading 6": "\u6807\u98986",
"Heading 3": "\u6807\u98983",
"Decrease indent": "\u51cf\u5c11\u7f29\u8fdb",
"Header 4": "\u6807\u98984",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u5f53\u524d\u4e3a\u7eaf\u6587\u672c\u7c98\u8d34\u6a21\u5f0f\uff0c\u518d\u6b21\u70b9\u51fb\u53ef\u4ee5\u56de\u5230\u666e\u901a\u7c98\u8d34\u6a21\u5f0f\u3002",
"Underline": "\u4e0b\u5212\u7ebf",
"Cancel": "\u53d6\u6d88",
"Justify": "\u4e24\u7aef\u5bf9\u9f50",
"Inline": "\u6587\u672c",
"Copy": "\u590d\u5236",
"Align left": "\u5de6\u5bf9\u9f50",
"Visual aids": "\u7f51\u683c\u7ebf",
"Lower Greek": "\u5c0f\u5199\u5e0c\u814a\u5b57\u6bcd",
"Square": "\u65b9\u5757",
"Default": "\u9ed8\u8ba4",
"Lower Alpha": "\u5c0f\u5199\u82f1\u6587\u5b57\u6bcd",
"Circle": "\u7a7a\u5fc3\u5706",
"Disc": "\u5b9e\u5fc3\u5706",
"Upper Alpha": "\u5927\u5199\u82f1\u6587\u5b57\u6bcd",
"Upper Roman": "\u5927\u5199\u7f57\u9a6c\u5b57\u6bcd",
"Lower Roman": "\u5c0f\u5199\u7f57\u9a6c\u5b57\u6bcd",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "\u6807\u8bc6\u7b26\u5e94\u8be5\u4ee5\u5b57\u6bcd\u5f00\u5934\uff0c\u540e\u8ddf\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u7834\u6298\u53f7\u3001\u70b9\u3001\u5192\u53f7\u6216\u4e0b\u5212\u7ebf\u3002",
"Name": "\u540d\u79f0",
"Anchor": "\u951a\u70b9",
"Id": "\u6807\u8bc6\u7b26",
"You have unsaved changes are you sure you want to navigate away?": "\u4f60\u8fd8\u6709\u6587\u6863\u5c1a\u672a\u4fdd\u5b58\uff0c\u786e\u5b9a\u8981\u79bb\u5f00\uff1f",
"Restore last draft": "\u6062\u590d\u4e0a\u6b21\u7684\u8349\u7a3f",
"Special character": "\u7279\u6b8a\u7b26\u53f7",
"Source code": "\u6e90\u4ee3\u7801",
"Language": "\u8bed\u8a00",
"Insert\/Edit code sample": "\u63d2\u5165\/\u7f16\u8f91\u4ee3\u7801\u793a\u4f8b",
"B": "B",
"R": "R",
"G": "G",
"Color": "\u989c\u8272",
"Right to left": "\u4ece\u53f3\u5230\u5de6",
"Left to right": "\u4ece\u5de6\u5230\u53f3",
"Emoticons": "\u8868\u60c5",
"Robots": "\u673a\u5668\u4eba",
"Document properties": "\u6587\u6863\u5c5e\u6027",
"Title": "\u6807\u9898",
"Keywords": "\u5173\u952e\u8bcd",
"Encoding": "\u7f16\u7801",
"Description": "\u63cf\u8ff0",
"Author": "\u4f5c\u8005",
"Fullscreen": "\u5168\u5c4f",
"Horizontal line": "\u6c34\u5e73\u5206\u5272\u7ebf",
"Horizontal space": "\u6c34\u5e73\u8fb9\u8ddd",
"Insert\/edit image": "\u63d2\u5165\/\u7f16\u8f91\u56fe\u7247",
"General": "\u666e\u901a",
"Advanced": "\u9ad8\u7ea7",
"Source": "\u5730\u5740",
"Border": "\u8fb9\u6846",
"Constrain proportions": "\u4fdd\u6301\u7eb5\u6a2a\u6bd4",
"Vertical space": "\u5782\u76f4\u8fb9\u8ddd",
"Image description": "\u56fe\u7247\u63cf\u8ff0",
"Style": "\u6837\u5f0f",
"Dimensions": "\u5927\u5c0f",
"Insert image": "\u63d2\u5165\u56fe\u7247",
"Image": "\u56fe\u7247",
"Zoom in": "\u653e\u5927",
"Contrast": "\u5bf9\u6bd4\u5ea6",
"Back": "\u540e\u9000",
"Gamma": "\u4f3d\u9a6c\u503c",
"Flip horizontally": "\u6c34\u5e73\u7ffb\u8f6c",
"Resize": "\u8c03\u6574\u5927\u5c0f",
"Sharpen": "\u9510\u5316",
"Zoom out": "\u7f29\u5c0f",
"Image options": "\u56fe\u7247\u9009\u9879",
"Apply": "\u5e94\u7528",
"Brightness": "\u4eae\u5ea6",
"Rotate clockwise": "\u987a\u65f6\u9488\u65cb\u8f6c",
"Rotate counterclockwise": "\u9006\u65f6\u9488\u65cb\u8f6c",
"Edit image": "\u7f16\u8f91\u56fe\u7247",
"Color levels": "\u989c\u8272\u5c42\u6b21",
"Crop": "\u88c1\u526a",
"Orientation": "\u65b9\u5411",
"Flip vertically": "\u5782\u76f4\u7ffb\u8f6c",
"Invert": "\u53cd\u8f6c",
"Date\/time": "\u65e5\u671f\/\u65f6\u95f4",
"Insert date\/time": "\u63d2\u5165\u65e5\u671f\/\u65f6\u95f4",
"Remove link": "\u5220\u9664\u94fe\u63a5",
"Url": "\u5730\u5740",
"Text to display": "\u663e\u793a\u6587\u5b57",
"Anchors": "\u951a\u70b9",
"Insert link": "\u63d2\u5165\u94fe\u63a5",
"Link": "\u94fe\u63a5",
"New window": "\u5728\u65b0\u7a97\u53e3\u6253\u5f00",
"None": "\u65e0",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u5c5e\u4e8e\u5916\u90e8\u94fe\u63a5\uff0c\u9700\u8981\u52a0\u4e0ahttp:\/\/:\u524d\u7f00\u5417\uff1f",
"Paste or type a link": "\u7c98\u8d34\u6216\u8f93\u5165\u94fe\u63a5",
"Target": "\u6253\u5f00\u65b9\u5f0f",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u4e3a\u90ae\u4ef6\u5730\u5740\uff0c\u9700\u8981\u52a0\u4e0amailto:\u524d\u7f00\u5417\uff1f",
"Insert\/edit link": "\u63d2\u5165\/\u7f16\u8f91\u94fe\u63a5",
"Insert\/edit video": "\u63d2\u5165\/\u7f16\u8f91\u89c6\u9891",
"Media": "\u5a92\u4f53",
"Alternative source": "\u955c\u50cf",
"Paste your embed code below:": "\u5c06\u5185\u5d4c\u4ee3\u7801\u7c98\u8d34\u5728\u4e0b\u9762:",
"Insert video": "\u63d2\u5165\u89c6\u9891",
"Poster": "\u5c01\u9762",
"Insert\/edit media": "\u63d2\u5165\/\u7f16\u8f91\u5a92\u4f53",
"Embed": "\u5185\u5d4c",
"Nonbreaking space": "\u4e0d\u95f4\u65ad\u7a7a\u683c",
"Page break": "\u5206\u9875\u7b26",
"Paste as text": "\u7c98\u8d34\u4e3a\u6587\u672c",
"Preview": "\u9884\u89c8",
"Print": "\u6253\u5370",
"Save": "\u4fdd\u5b58",
"Could not find the specified string.": "\u672a\u627e\u5230\u641c\u7d22\u5185\u5bb9.",
"Replace": "\u66ff\u6362",
"Next": "\u4e0b\u4e00\u4e2a",
"Whole words": "\u5168\u5b57\u5339\u914d",
"Find and replace": "\u67e5\u627e\u548c\u66ff\u6362",
"Replace with": "\u66ff\u6362\u4e3a",
"Find": "\u67e5\u627e",
"Replace all": "\u5168\u90e8\u66ff\u6362",
"Match case": "\u533a\u5206\u5927\u5c0f\u5199",
"Prev": "\u4e0a\u4e00\u4e2a",
"Spellcheck": "\u62fc\u5199\u68c0\u67e5",
"Finish": "\u5b8c\u6210",
"Ignore all": "\u5168\u90e8\u5ffd\u7565",
"Ignore": "\u5ffd\u7565",
"Add to Dictionary": "\u6dfb\u52a0\u5230\u5b57\u5178",
"Insert row before": "\u5728\u4e0a\u65b9\u63d2\u5165",
"Rows": "\u884c",
"Height": "\u9ad8",
"Paste row after": "\u7c98\u8d34\u5230\u4e0b\u65b9",
"Alignment": "\u5bf9\u9f50\u65b9\u5f0f",
"Border color": "\u8fb9\u6846\u989c\u8272",
"Column group": "\u5217\u7ec4",
"Row": "\u884c",
"Insert column before": "\u5728\u5de6\u4fa7\u63d2\u5165",
"Split cell": "\u62c6\u5206\u5355\u5143\u683c",
"Cell padding": "\u5355\u5143\u683c\u5185\u8fb9\u8ddd",
"Cell spacing": "\u5355\u5143\u683c\u5916\u95f4\u8ddd",
"Row type": "\u884c\u7c7b\u578b",
"Insert table": "\u63d2\u5165\u8868\u683c",
"Body": "\u8868\u4f53",
"Caption": "\u6807\u9898",
"Footer": "\u8868\u5c3e",
"Delete row": "\u5220\u9664\u884c",
"Paste row before": "\u7c98\u8d34\u5230\u4e0a\u65b9",
"Scope": "\u8303\u56f4",
"Delete table": "\u5220\u9664\u8868\u683c",
"H Align": "\u6c34\u5e73\u5bf9\u9f50",
"Top": "\u9876\u90e8\u5bf9\u9f50",
"Header cell": "\u8868\u5934\u5355\u5143\u683c",
"Column": "\u5217",
"Row group": "\u884c\u7ec4",
"Cell": "\u5355\u5143\u683c",
"Middle": "\u5782\u76f4\u5c45\u4e2d",
"Cell type": "\u5355\u5143\u683c\u7c7b\u578b",
"Copy row": "\u590d\u5236\u884c",
"Row properties": "\u884c\u5c5e\u6027",
"Table properties": "\u8868\u683c\u5c5e\u6027",
"Bottom": "\u5e95\u90e8\u5bf9\u9f50",
"V Align": "\u5782\u76f4\u5bf9\u9f50",
"Header": "\u8868\u5934",
"Right": "\u53f3\u5bf9\u9f50",
"Insert column after": "\u5728\u53f3\u4fa7\u63d2\u5165",
"Cols": "\u5217",
"Insert row after": "\u5728\u4e0b\u65b9\u63d2\u5165",
"Width": "\u5bbd",
"Cell properties": "\u5355\u5143\u683c\u5c5e\u6027",
"Left": "\u5de6\u5bf9\u9f50",
"Cut row": "\u526a\u5207\u884c",
"Delete column": "\u5220\u9664\u5217",
"Center": "\u5c45\u4e2d",
"Merge cells": "\u5408\u5e76\u5355\u5143\u683c",
"Insert template": "\u63d2\u5165\u6a21\u677f",
"Templates": "\u6a21\u677f",
"Background color": "\u80cc\u666f\u8272",
"Custom...": "\u81ea\u5b9a\u4e49...",
"Custom color": "\u81ea\u5b9a\u4e49\u989c\u8272",
"No color": "\u65e0",
"Text color": "\u6587\u5b57\u989c\u8272",
"Table of Contents": "\u5185\u5bb9\u5217\u8868",
"Show blocks": "\u663e\u793a\u533a\u5757\u8fb9\u6846",
"Show invisible characters": "\u663e\u793a\u4e0d\u53ef\u89c1\u5b57\u7b26",
"Words: {0}": "\u5b57\u6570\uff1a{0}",
"Insert": "\u63d2\u5165",
"File": "\u6587\u4ef6",
"Edit": "\u7f16\u8f91",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u5728\u7f16\u8f91\u533a\u6309ALT-F9\u6253\u5f00\u83dc\u5355\uff0c\u6309ALT-F10\u6253\u5f00\u5de5\u5177\u680f\uff0c\u6309ALT-0\u67e5\u770b\u5e2e\u52a9",
"Tools": "\u5de5\u5177",
"View": "\u89c6\u56fe",
"Table": "\u8868\u683c",
"Format": "\u683c\u5f0f"
});

View File

@@ -0,0 +1,138 @@
/* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript */
/**
* prism.js default theme for JavaScript, CSS and HTML
* Based on dabblet (http://dabblet.com)
* @author Lea Verou
*/
code[class*="language-"],
pre[class*="language-"] {
color: black;
text-shadow: 0 1px white;
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
direction: ltr;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection,
code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection {
text-shadow: none;
background: #b3d4fc;
}
pre[class*="language-"]::selection, pre[class*="language-"] ::selection,
code[class*="language-"]::selection, code[class*="language-"] ::selection {
text-shadow: none;
background: #b3d4fc;
}
@media print {
code[class*="language-"],
pre[class*="language-"] {
text-shadow: none;
}
}
/* Code blocks */
pre[class*="language-"] {
padding: 1em;
margin: .5em 0;
overflow: auto;
}
:not(pre) > code[class*="language-"],
pre[class*="language-"] {
background: #f5f2f0;
}
/* Inline code */
:not(pre) > code[class*="language-"] {
padding: .1em;
border-radius: .3em;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: slategray;
}
.token.punctuation {
color: #999;
}
.namespace {
opacity: .7;
}
.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.constant,
.token.symbol,
.token.deleted {
color: #905;
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
color: #690;
}
.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string {
color: #a67f59;
background: hsla(0, 0%, 100%, .5);
}
.token.atrule,
.token.attr-value,
.token.keyword {
color: #07a;
}
.token.function {
color: #DD4A68;
}
.token.regex,
.token.important,
.token.variable {
color: #e90;
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 354 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 329 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 342 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 340 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 336 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 343 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 321 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 323 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 344 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 328 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 337 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 350 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 336 B

View File

@@ -0,0 +1,154 @@
.mce-visualblocks p {
padding-top: 10px;
border: 1px dashed #BBB;
margin-left: 3px;
background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7);
background-repeat: no-repeat;
}
.mce-visualblocks h1 {
padding-top: 10px;
border: 1px dashed #BBB;
margin-left: 3px;
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==);
background-repeat: no-repeat;
}
.mce-visualblocks h2 {
padding-top: 10px;
border: 1px dashed #BBB;
margin-left: 3px;
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==);
background-repeat: no-repeat;
}
.mce-visualblocks h3 {
padding-top: 10px;
border: 1px dashed #BBB;
margin-left: 3px;
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7);
background-repeat: no-repeat;
}
.mce-visualblocks h4 {
padding-top: 10px;
border: 1px dashed #BBB;
margin-left: 3px;
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==);
background-repeat: no-repeat;
}
.mce-visualblocks h5 {
padding-top: 10px;
border: 1px dashed #BBB;
margin-left: 3px;
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==);
background-repeat: no-repeat;
}
.mce-visualblocks h6 {
padding-top: 10px;
border: 1px dashed #BBB;
margin-left: 3px;
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==);
background-repeat: no-repeat;
}
.mce-visualblocks div:not([data-mce-bogus]) {
padding-top: 10px;
border: 1px dashed #BBB;
margin-left: 3px;
background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7);
background-repeat: no-repeat;
}
.mce-visualblocks section {
padding-top: 10px;
border: 1px dashed #BBB;
margin: 0 0 1em 3px;
background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=);
background-repeat: no-repeat;
}
.mce-visualblocks article {
padding-top: 10px;
border: 1px dashed #BBB;
margin: 0 0 1em 3px;
background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7);
background-repeat: no-repeat;
}
.mce-visualblocks blockquote {
padding-top: 10px;
border: 1px dashed #BBB;
background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7);
background-repeat: no-repeat;
}
.mce-visualblocks address {
padding-top: 10px;
border: 1px dashed #BBB;
margin: 0 0 1em 3px;
background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=);
background-repeat: no-repeat;
}
.mce-visualblocks pre {
padding-top: 10px;
border: 1px dashed #BBB;
margin-left: 3px;
background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==);
background-repeat: no-repeat;
}
.mce-visualblocks figure {
padding-top: 10px;
border: 1px dashed #BBB;
margin: 0 0 1em 3px;
background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7);
background-repeat: no-repeat;
}
.mce-visualblocks hgroup {
padding-top: 10px;
border: 1px dashed #BBB;
margin: 0 0 1em 3px;
background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7);
background-repeat: no-repeat;
}
.mce-visualblocks aside {
padding-top: 10px;
border: 1px dashed #BBB;
margin: 0 0 1em 3px;
background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=);
background-repeat: no-repeat;
}
.mce-visualblocks figcaption {
border: 1px dashed #BBB;
}
.mce-visualblocks ul {
padding-top: 10px;
border: 1px dashed #BBB;
margin: 0 0 1em 3px;
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==);
background-repeat: no-repeat;
}
.mce-visualblocks ol {
padding-top: 10px;
border: 1px dashed #BBB;
margin: 0 0 1em 3px;
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==);
background-repeat: no-repeat;
}
.mce-visualblocks dl {
padding-top: 10px;
border: 1px dashed #BBB;
margin: 0 0 1em 3px;
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==);
background-repeat: no-repeat;
}

View File

@@ -0,0 +1 @@
.word-wrap{word-wrap:break-word;-ms-word-break:break-all;word-break:break-all;word-break:break-word;-ms-hyphens:auto;-moz-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}.mce-content-body .mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:black;font-family:Arial;font-size:11px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;line-height:normal;font-weight:normal;text-align:left;-webkit-tap-highlight-color:transparent;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-object{border:1px dotted #3A3A3A;background:#D5D5D5 url(img/object.gif) no-repeat center}.mce-preview-object{display:inline-block;position:relative;margin:0 2px 0 2px;line-height:0;border:1px solid gray}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-preview-object .mce-shim{position:absolute;top:0;left:0;width:100%;height:100%;background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}figure.align-left{float:left}figure.align-right{float:right}figure.image.align-center{display:table;margin-left:auto;margin-right:auto}figure.image{display:inline-block;border:1px solid gray;margin:0 2px 0 1px;background:#f5f2f0}figure.image img{margin:8px 8px 0 8px}figure.image figcaption{margin:6px 8px 6px 8px;text-align:center}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px dashed #666;margin-top:15px;page-break-before:always}@media print{.mce-pagebreak{border:0}}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px !important;height:9px !important;border:1px dotted #3A3A3A;background:#D5D5D5 url(img/anchor.gif) no-repeat center}.mce-nbsp,.mce-shy{background:#AAA}.mce-shy::after{content:'-'}.mce-match-marker{background:#AAA;color:#fff}.mce-match-marker-selected{background:#3399ff;color:#fff}.mce-spellchecker-word{border-bottom:2px solid rgba(208,2,27,0.5);cursor:default}.mce-spellchecker-grammar{border-bottom:2px solid #008000;cursor:default}.mce-item-table,.mce-item-table td,.mce-item-table th,.mce-item-table caption{border:1px dashed #BBB}td[data-mce-selected],th[data-mce-selected]{background-color:#2276d2 !important}.mce-edit-focus{outline:1px dotted #333}.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus{outline:2px solid #2276d2}.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover{outline:2px solid #2276d2}.mce-content-body *[contentEditable=false][data-mce-selected]{outline:2px solid #2276d2}.mce-content-body *[data-mce-selected="inline-boundary"]{background:#bfe6ff}.mce-content-body .mce-item-anchor[data-mce-selected]{background:#D5D5D5 url(img/anchor.gif) no-repeat center}.mce-content-body hr{cursor:default}.ephox-snooker-resizer-bar{background-color:#2276d2;opacity:0}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:.2}.mce-content-body{line-height:1.3}

View File

@@ -0,0 +1 @@
body{background-color:#FFFFFF;color:#000000;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:14px;line-height:1.3;scrollbar-3dlight-color:#F0F0EE;scrollbar-arrow-color:#676662;scrollbar-base-color:#F0F0EE;scrollbar-darkshadow-color:#DDDDDD;scrollbar-face-color:#E0E0DD;scrollbar-highlight-color:#F0F0EE;scrollbar-shadow-color:#F0F0EE;scrollbar-track-color:#F5F5F5}td,th{font-family:Verdana,Arial,Helvetica,sans-serif;font-size:14px}.word-wrap{word-wrap:break-word;-ms-word-break:break-all;word-break:break-all;word-break:break-word;-ms-hyphens:auto;-moz-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}.mce-content-body .mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:black;font-family:Arial;font-size:11px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;line-height:normal;font-weight:normal;text-align:left;-webkit-tap-highlight-color:transparent;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-object{border:1px dotted #3A3A3A;background:#D5D5D5 url(img/object.gif) no-repeat center}.mce-preview-object{display:inline-block;position:relative;margin:0 2px 0 2px;line-height:0;border:1px solid gray}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-preview-object .mce-shim{position:absolute;top:0;left:0;width:100%;height:100%;background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}figure.align-left{float:left}figure.align-right{float:right}figure.image.align-center{display:table;margin-left:auto;margin-right:auto}figure.image{display:inline-block;border:1px solid gray;margin:0 2px 0 1px;background:#f5f2f0}figure.image img{margin:8px 8px 0 8px}figure.image figcaption{margin:6px 8px 6px 8px;text-align:center}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px dashed #666;margin-top:15px;page-break-before:always}@media print{.mce-pagebreak{border:0}}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px !important;height:9px !important;border:1px dotted #3A3A3A;background:#D5D5D5 url(img/anchor.gif) no-repeat center}.mce-nbsp,.mce-shy{background:#AAA}.mce-shy::after{content:'-'}.mce-match-marker{background:#AAA;color:#fff}.mce-match-marker-selected{background:#3399ff;color:#fff}.mce-spellchecker-word{border-bottom:2px solid rgba(208,2,27,0.5);cursor:default}.mce-spellchecker-grammar{border-bottom:2px solid #008000;cursor:default}.mce-item-table,.mce-item-table td,.mce-item-table th,.mce-item-table caption{border:1px dashed #BBB}td[data-mce-selected],th[data-mce-selected]{background-color:#2276d2 !important}.mce-edit-focus{outline:1px dotted #333}.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus{outline:2px solid #2276d2}.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover{outline:2px solid #2276d2}.mce-content-body *[contentEditable=false][data-mce-selected]{outline:2px solid #2276d2}.mce-content-body *[data-mce-selected="inline-boundary"]{background:#bfe6ff}.mce-content-body .mce-item-anchor[data-mce-selected]{background:#D5D5D5 url(img/anchor.gif) no-repeat center}.mce-content-body hr{cursor:default}.ephox-snooker-resizer-bar{background-color:#2276d2;opacity:0}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:.2} a {color: #1478F0;}

View File

@@ -0,0 +1,63 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>Generated by IcoMoon</metadata>
<defs>
<font id="tinymce-small" horiz-adv-x="1024">
<font-face units-per-em="1024" ascent="960" descent="-64" />
<missing-glyph horiz-adv-x="1024" />
<glyph unicode="&#x20;" horiz-adv-x="512" d="" />
<glyph unicode="&#xe000;" glyph-name="save" d="M960 80v591.938l-223.938 224.062h-592.062c-44.182 0-80-35.816-80-80v-736c0-44.184 35.818-80 80-80h736c44.184 0 80 35.816 80 80zM576 768h64v-192h-64v192zM704 128h-384v255.882c0.034 0.042 0.076 0.082 0.116 0.118h383.77c0.040-0.036 0.082-0.076 0.116-0.118l-0.002-255.882zM832 128h-64v256c0 35.2-28.8 64-64 64h-384c-35.2 0-64-28.8-64-64v-256h-64v640h64v-192c0-35.2 28.8-64 64-64h320c35.2 0 64 28.8 64 64v171.010l128-128.072v-490.938z" />
<glyph unicode="&#xe001;" glyph-name="newdocument" d="M850.746 717.254l-133.492 133.49c-24.888 24.892-74.054 45.256-109.254 45.256h-416c-35.2 0-64-28.8-64-64v-768c0-35.2 28.8-64 64-64h640c35.2 0 64 28.8 64 64v544c0 35.2-20.366 84.364-45.254 109.254zM805.49 672.002c6.792-6.796 13.792-19.162 18.894-32.002h-184.384v184.386c12.84-5.1 25.204-12.1 32-18.896l133.49-133.488zM831.884 64h-639.77c-0.040 0.034-0.082 0.076-0.114 0.116v767.77c0.034 0.040 0.076 0.082 0.114 0.114h383.886v-256h256v-511.884c-0.034-0.040-0.076-0.082-0.116-0.116z" />
<glyph unicode="&#xe002;" glyph-name="fullpage" d="M1024 367.542v160.916l-159.144 15.914c-8.186 30.042-20.088 58.548-35.21 84.98l104.596 127.838-113.052 113.050-127.836-104.596c-26.434 15.124-54.942 27.026-84.982 35.208l-15.914 159.148h-160.916l-15.914-159.146c-30.042-8.186-58.548-20.086-84.98-35.208l-127.838 104.594-113.050-113.050 104.596-127.836c-15.124-26.432-27.026-54.94-35.21-84.98l-159.146-15.916v-160.916l159.146-15.914c8.186-30.042 20.086-58.548 35.21-84.982l-104.596-127.836 113.048-113.048 127.838 104.596c26.432-15.124 54.94-27.028 84.98-35.21l15.916-159.148h160.916l15.914 159.144c30.042 8.186 58.548 20.088 84.982 35.21l127.836-104.596 113.048 113.048-104.596 127.836c15.124 26.434 27.028 54.942 35.21 84.98l159.148 15.92zM704 384l-128-128h-128l-128 128v128l128 128h128l128-128v-128z" />
<glyph unicode="&#xe003;" glyph-name="alignleft" d="M64 768h896v-128h-896zM64 384h896v-128h-896zM64 576h576v-128h-576zM64 192h576v-128h-576z" />
<glyph unicode="&#xe004;" glyph-name="aligncenter" d="M64 768h896v-128h-896zM64 384h896v-128h-896zM256 576h512v-128h-512zM256 192h512v-128h-512z" />
<glyph unicode="&#xe005;" glyph-name="alignright" d="M64 768h896v-128h-896zM64 384h896v-128h-896zM384 576h576v-128h-576zM384 192h576v-128h-576z" />
<glyph unicode="&#xe006;" glyph-name="alignjustify" d="M64 768h896v-128h-896zM64 384h896v-128h-896zM64 576h896v-128h-896zM64 192h896v-128h-896z" />
<glyph unicode="&#xe007;" glyph-name="cut" d="M864.408 289.868c-46.47 46.47-106.938 68.004-161.082 62.806l-63.326 63.326 192 192c0 0 128 128 0 256l-320-320-320 320c-128-128 0-256 0-256l192-192-63.326-63.326c-54.144 5.198-114.61-16.338-161.080-62.806-74.98-74.98-85.112-186.418-22.626-248.9 62.482-62.482 173.92-52.354 248.9 22.626 46.47 46.468 68.002 106.938 62.806 161.080l63.326 63.326 63.328-63.328c-5.196-54.144 16.336-114.61 62.806-161.078 74.978-74.98 186.418-85.112 248.898-22.626 62.488 62.482 52.356 173.918-22.624 248.9zM353.124 201.422c-2.212-24.332-15.020-49.826-35.14-69.946-22.212-22.214-51.080-35.476-77.218-35.476-10.524 0-25.298 2.228-35.916 12.848-21.406 21.404-17.376 73.132 22.626 113.136 22.212 22.214 51.080 35.476 77.218 35.476 10.524 0 25.298-2.228 35.916-12.848 13.112-13.11 13.47-32.688 12.514-43.19zM512 352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zM819.152 108.848c-10.62-10.62-25.392-12.848-35.916-12.848-26.138 0-55.006 13.262-77.218 35.476-20.122 20.12-32.928 45.614-35.138 69.946-0.958 10.502-0.6 30.080 12.514 43.192 10.618 10.622 25.39 12.848 35.916 12.848 26.136 0 55.006-13.262 77.216-35.474 40.004-40.008 44.032-91.736 22.626-113.14z" />
<glyph unicode="&#xe008;" glyph-name="paste" d="M704 576v160c0 17.6-14.4 32-32 32h-160v64c0 35.2-28.8 64-64 64h-128c-35.204 0-64-28.8-64-64v-64h-160c-17.602 0-32-14.4-32-32v-512c0-17.6 14.398-32 32-32h224v-192h384l192 192v384h-192zM320 831.886c0.034 0.038 0.072 0.078 0.114 0.114h127.768c0.042-0.036 0.082-0.076 0.118-0.114v-63.886h-128v63.886zM192 640v64h384v-64h-384zM704 90.51v101.49h101.49l-101.49-101.49zM832 256h-192v-192h-256v448h448v-256z" />
<glyph unicode="&#xe009;" glyph-name="searchreplace" d="M888 576h-56v256h64v64h-320v-64h64v-256h-256v256h64v64h-320v-64h64v-256h-56c-39.6 0-72-32.4-72-72v-432c0-39.6 32.4-72 72-72h240c39.6 0 72 32.4 72 72v312h128v-312c0-39.6 32.4-72 72-72h240c39.6 0 72 32.4 72 72v432c0 39.6-32.4 72-72 72zM348 64h-184c-19.8 0-36 14.4-36 32s16.2 32 36 32h184c19.8 0 36-14.4 36-32s-16.2-32-36-32zM544 448h-64c-17.6 0-32 14.4-32 32s14.4 32 32 32h64c17.6 0 32-14.4 32-32s-14.4-32-32-32zM860 64h-184c-19.8 0-36 14.4-36 32s16.2 32 36 32h184c19.8 0 36-14.4 36-32s-16.2-32-36-32z" />
<glyph unicode="&#xe00a;" glyph-name="bullist" d="M384 832h576v-128h-576zM384 512h576v-128h-576zM384 192h576v-128h-576zM128 768c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM128 448c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM128 128c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64z" />
<glyph unicode="&#xe00b;" glyph-name="numlist" d="M384 832h576v-128h-576zM384 512h576v-128h-576zM384 192h576v-128h-576zM320 430v146h-64v320h-128v-64h64v-256h-64v-64h128v-50l-128-60v-146h128v-64h-128v-64h128v-64h-128v-64h192v320h-128v50z" />
<glyph unicode="&#xe00c;" glyph-name="indent" d="M64 768h896v-128h-896zM384 384h576v-128h-576zM384 576h576v-128h-576zM64 192h896v-128h-896zM64 576l224-160-224-160z" />
<glyph unicode="&#xe00d;" glyph-name="outdent" d="M64 768h896v-128h-896zM64 384h576v-128h-576zM64 576h576v-128h-576zM64 192h896v-128h-896zM960 576l-224-160 224-160z" />
<glyph unicode="&#xe00e;" glyph-name="blockquote" d="M256.428 535.274c105.8 0 191.572-91.17 191.572-203.638 0-112.464-85.772-203.636-191.572-203.636-105.802 0-191.572 91.17-191.572 203.636l-0.856 29.092c0 224.93 171.54 407.272 383.144 407.272v-116.364c-73.1 0-141.826-30.26-193.516-85.204-9.954-10.578-19.034-21.834-27.224-33.656 9.784 1.64 19.806 2.498 30.024 2.498zM768.428 535.274c105.8 0 191.572-91.17 191.572-203.638 0-112.464-85.772-203.636-191.572-203.636-105.802 0-191.572 91.17-191.572 203.636l-0.856 29.092c0 224.93 171.54 407.272 383.144 407.272v-116.364c-73.1 0-141.826-30.26-193.516-85.204-9.956-10.578-19.036-21.834-27.224-33.656 9.784 1.64 19.806 2.498 30.024 2.498z" />
<glyph unicode="&#xe00f;" glyph-name="undo" d="M704 0c59 199 134.906 455.266-256 446.096v-222.096l-336.002 336 336.002 336v-217.326c468.092 12.2 544-358.674 256-678.674z" />
<glyph unicode="&#xe010;" glyph-name="redo" d="M576 678.674v217.326l336.002-336-336.002-336v222.096c-390.906 9.17-315-247.096-256-446.096-288 320-212.092 690.874 256 678.674z" />
<glyph unicode="&#xe011;" glyph-name="unlink" d="M927.274 729.784l-133.49 133.488c-21.104 21.104-49.232 32.728-79.198 32.728s-58.094-11.624-79.196-32.726l-165.492-165.49c-43.668-43.668-43.668-114.724 0-158.392l2.746-2.746 67.882 67.882-2.746 2.746c-6.132 6.132-6.132 16.494 0 22.626l165.492 165.492c4.010 4.008 8.808 4.608 11.312 4.608s7.302-0.598 11.312-4.61l133.49-133.488c6.132-6.134 6.132-16.498 0.002-22.628l-165.494-165.494c-4.008-4.008-8.806-4.608-11.31-4.608s-7.302 0.6-11.312 4.612l-2.746 2.746-67.88-67.884 2.742-2.742c21.106-21.108 49.23-32.728 79.2-32.728s58.094 11.624 79.196 32.726l165.494 165.492c43.662 43.666 43.662 114.72-0.004 158.39zM551.356 359.356l-67.882-67.882 2.746-2.746c4.008-4.008 4.61-8.806 4.61-11.31 0-2.506-0.598-7.302-4.606-11.314l-165.494-165.49c-4.010-4.010-8.81-4.61-11.314-4.61s-7.304 0.6-11.314 4.61l-133.492 133.486c-4.010 4.010-4.61 8.81-4.61 11.314s0.598 7.3 4.61 11.312l165.49 165.488c4.010 4.012 8.81 4.612 11.314 4.612s7.304-0.6 11.314-4.612l2.746-2.742 67.882 67.88-2.746 2.746c-21.104 21.104-49.23 32.726-79.196 32.726s-58.092-11.624-79.196-32.726l-165.488-165.486c-21.106-21.104-32.73-49.234-32.73-79.198s11.624-58.094 32.726-79.198l133.49-133.49c21.106-21.102 49.232-32.726 79.198-32.726s58.092 11.624 79.196 32.726l165.494 165.492c21.104 21.104 32.722 49.23 32.722 79.196s-11.624 58.094-32.726 79.196l-2.744 2.746zM352 250c-9.724 0-19.45 3.71-26.87 11.128-14.84 14.84-14.84 38.898 0 53.738l320 320c14.84 14.84 38.896 14.84 53.736 0 14.844-14.84 14.844-38.9 0-53.74l-320-320c-7.416-7.416-17.142-11.126-26.866-11.126z" />
<glyph unicode="&#xe012;" glyph-name="link" d="M927.274 729.784l-133.49 133.488c-21.104 21.104-49.232 32.728-79.198 32.728s-58.094-11.624-79.196-32.726l-165.492-165.49c-43.668-43.668-43.668-114.724 0-158.392l2.746-2.746 67.882 67.882-2.746 2.746c-6.132 6.132-6.132 16.494 0 22.626l165.492 165.492c4.010 4.008 8.808 4.608 11.312 4.608s7.302-0.598 11.312-4.61l133.49-133.488c6.132-6.134 6.132-16.498 0.002-22.628l-165.494-165.494c-4.008-4.008-8.806-4.608-11.31-4.608s-7.302 0.6-11.312 4.612l-2.746 2.746-67.88-67.884 2.742-2.742c21.106-21.108 49.23-32.728 79.2-32.728s58.094 11.624 79.196 32.726l165.494 165.492c43.662 43.666 43.662 114.72-0.004 158.39zM551.356 359.356l-67.882-67.882 2.746-2.746c4.008-4.008 4.61-8.806 4.61-11.31 0-2.506-0.598-7.302-4.606-11.314l-165.494-165.49c-4.010-4.010-8.81-4.61-11.314-4.61s-7.304 0.6-11.314 4.61l-133.492 133.486c-4.010 4.010-4.61 8.81-4.61 11.314s0.598 7.3 4.61 11.312l165.49 165.488c4.010 4.012 8.81 4.612 11.314 4.612s7.304-0.6 11.314-4.612l2.746-2.742 67.882 67.88-2.746 2.746c-21.104 21.104-49.23 32.726-79.196 32.726s-58.092-11.624-79.196-32.726l-165.488-165.486c-21.106-21.104-32.73-49.234-32.73-79.198s11.624-58.094 32.726-79.198l133.49-133.49c21.106-21.102 49.232-32.726 79.198-32.726s58.092 11.624 79.196 32.726l165.494 165.492c21.104 21.104 32.722 49.23 32.722 79.196s-11.624 58.094-32.726 79.196l-2.744 2.746zM800 122c-9.724 0-19.45 3.708-26.87 11.13l-128 127.998c-14.844 14.84-14.844 38.898 0 53.738 14.84 14.844 38.896 14.844 53.736 0l128-128c14.844-14.84 14.844-38.896 0-53.736-7.416-7.422-17.142-11.13-26.866-11.13zM608 0c-17.674 0-32 14.326-32 32v128c0 17.674 14.326 32 32 32s32-14.326 32-32v-128c0-17.674-14.326-32-32-32zM928 320h-128c-17.674 0-32 14.326-32 32s14.326 32 32 32h128c17.674 0 32-14.326 32-32s-14.326-32-32-32zM224 774c9.724 0 19.45-3.708 26.87-11.13l128-128c14.842-14.84 14.842-38.898 0-53.738-14.84-14.844-38.898-14.844-53.738 0l-128 128c-14.842 14.84-14.842 38.898 0 53.738 7.418 7.422 17.144 11.13 26.868 11.13zM416 896c17.674 0 32-14.326 32-32v-128c0-17.674-14.326-32-32-32s-32 14.326-32 32v128c0 17.674 14.326 32 32 32zM96 576h128c17.674 0 32-14.326 32-32s-14.326-32-32-32h-128c-17.674 0-32 14.326-32 32s14.326 32 32 32z" />
<glyph unicode="&#xe013;" glyph-name="bookmark" d="M256 896v-896l256 256 256-256v896h-512zM704 170.51l-192 192-192-192v661.49h384v-661.49z" />
<glyph unicode="&#xe014;" glyph-name="image" d="M896 832h-768c-35.2 0-64-28.8-64-64v-640c0-35.2 28.8-64 64-64h768c35.2 0 64 28.8 64 64v640c0 35.2-28.8 64-64 64zM896 128.116c-0.012-0.014-0.030-0.028-0.042-0.042l-191.958 319.926-160-128-224 288-191.968-479.916c-0.010 0.010-0.022 0.022-0.032 0.032v639.77c0.034 0.040 0.076 0.082 0.114 0.114h767.77c0.040-0.034 0.082-0.076 0.116-0.116v-639.768zM640 608c0-53.019 42.981-96 96-96s96 42.981 96 96c0 53.019-42.981 96-96 96s-96-42.981-96-96z" />
<glyph unicode="&#xe015;" glyph-name="media" d="M896 832h-768c-35.2 0-64-28.8-64-64v-640c0-35.2 28.8-64 64-64h768c35.2 0 64 28.8 64 64v640c0 35.2-28.8 64-64 64zM256 128h-128v128h128v-128zM256 384h-128v128h128v-128zM256 640h-128v128h128v-128zM704 128h-384v640h384v-640zM896 128h-128v128h128v-128zM896 384h-128v128h128v-128zM896 640h-128v128h128v-128zM384 640v-384l288 192z" />
<glyph unicode="&#xe016;" glyph-name="help" d="M448 256h128v-128h-128v128zM704 704c35.346 0 64-28.654 64-64v-166l-228-154h-92v64l192 128v64h-320v128h384zM512 896c-119.666 0-232.166-46.6-316.784-131.216-84.614-84.618-131.216-197.118-131.216-316.784 0-119.664 46.602-232.168 131.216-316.784 84.618-84.616 197.118-131.216 316.784-131.216 119.664 0 232.168 46.6 316.784 131.216s131.216 197.12 131.216 316.784c0 119.666-46.6 232.166-131.216 316.784-84.616 84.616-197.12 131.216-316.784 131.216z" />
<glyph unicode="&#xe017;" glyph-name="code" d="M416 256l-192 192 192 192-64 64-256-256 256-256zM672 704l-64-64 192-192-192-192 64-64 256 256z" />
<glyph unicode="&#xe018;" glyph-name="insertdatetime" d="M77.798 655.376l81.414-50.882c50.802 81.114 128.788 143.454 221.208 174.246l-30.366 91.094c-113.748-37.898-209.728-114.626-272.256-214.458zM673.946 869.834l-30.366-91.094c92.422-30.792 170.404-93.132 221.208-174.248l81.412 50.882c-62.526 99.834-158.506 176.562-272.254 214.46zM607.974 255.992c-4.808 0-9.692 1.090-14.286 3.386l-145.688 72.844v211.778c0 17.672 14.328 32 32 32s32-14.328 32-32v-172.222l110.31-55.156c15.806-7.902 22.214-27.124 14.31-42.932-5.604-11.214-16.908-17.696-28.646-17.698zM512 768c-212.078 0-384-171.922-384-384s171.922-384 384-384c212.078 0 384 171.922 384 384s-171.922 384-384 384zM512 96c-159.058 0-288 128.942-288 288s128.942 288 288 288c159.058 0 288-128.942 288-288s-128.942-288-288-288z" />
<glyph unicode="&#xe019;" glyph-name="preview" d="M64 504.254c45.318 49.92 97.162 92.36 153.272 125.124 90.332 52.744 192.246 80.622 294.728 80.622 102.48 0 204.396-27.878 294.726-80.624 56.112-32.764 107.956-75.204 153.274-125.124v117.432c-33.010 28.118-68.124 53.14-104.868 74.594-105.006 61.314-223.658 93.722-343.132 93.722s-238.128-32.408-343.134-93.72c-36.742-21.454-71.856-46.478-104.866-74.596v-117.43zM512 640c-183.196 0-345.838-100.556-448-256 102.162-155.448 264.804-256 448-256s345.838 100.552 448 256c-102.162 155.444-264.804 256-448 256zM512 448c0-35.346-28.654-64-64-64s-64 28.654-64 64c0 35.348 28.654 64 64 64s64-28.652 64-64zM728.066 263.338c-67.434-39.374-140.128-59.338-216.066-59.338s-148.632 19.964-216.066 59.338c-51.554 30.104-98.616 71.31-138.114 120.662 39.498 49.35 86.56 90.558 138.116 120.66 13.276 7.752 26.758 14.74 40.426 20.982-10.512-23.742-16.362-50.008-16.362-77.642 0-106.040 85.962-192 192-192 106.040 0 192 85.96 192 192 0 27.634-5.85 53.9-16.36 77.642 13.668-6.244 27.15-13.23 40.426-20.982 51.554-30.102 98.616-71.31 138.116-120.66-39.498-49.352-86.56-90.558-138.116-120.662z" />
<glyph unicode="&#xe01a;" glyph-name="forecolor" d="M651.168 676.166c-24.612 81.962-28.876 91.834-107.168 91.834h-64c-79.618 0-82.664-10.152-108.418-96 0-0.002 0-0.002-0.002-0.004l-143.998-479.996h113.636l57.6 192h226.366l57.6-192h113.63l-145.246 484.166zM437.218 512l38.4 136c10.086 33.618 36.38 30 36.38 30s26.294 3.618 36.38-30h0.004l38.4-136h-149.564z" />
<glyph unicode="&#xe01b;" glyph-name="table" d="M64 768v-704h896v704h-896zM384 320v128h256v-128h-256zM640 256v-128h-256v128h256zM640 640v-128h-256v128h256zM320 640v-128h-192v128h192zM128 448h192v-128h-192v128zM704 448h192v-128h-192v128zM704 512v128h192v-128h-192zM128 256h192v-128h-192v128zM704 128v128h192v-128h-192z" />
<glyph unicode="&#xe01c;" glyph-name="hr" d="M64 512h896v-128h-896z" />
<glyph unicode="&#xe01d;" glyph-name="removeformat" d="M64 192h512v-128h-512v128zM768 768h-220.558l-183.766-512h-132.288l183.762 512h-223.15v128h576v-128zM929.774 64l-129.774 129.774-129.774-129.774-62.226 62.226 129.774 129.774-129.774 129.774 62.226 62.226 129.774-129.774 129.774 129.774 62.226-62.226-129.774-129.774 129.774-129.774-62.226-62.226z" />
<glyph unicode="&#xe01e;" glyph-name="subscript" d="M768 50v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM676 704h-136l-188-188-188 188h-136l256-256-256-256h136l188 188 188-188h136l-256 256z" />
<glyph unicode="&#xe01f;" glyph-name="superscript" d="M768 754v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM676 704h-136l-188-188-188 188h-136l256-256-256-256h136l188 188 188-188h136l-256 256z" />
<glyph unicode="&#xe020;" glyph-name="charmap" d="M704 128v37.004c151.348 61.628 256 193.82 256 346.996 0 212.078-200.576 384-448 384s-448-171.922-448-384c0-153.176 104.654-285.368 256-346.996v-37.004h-192l-64 96v-224h320v222.812c-100.9 51.362-170.666 161.54-170.666 289.188 0 176.732 133.718 320 298.666 320s298.666-143.268 298.666-320c0-127.648-69.766-237.826-170.666-289.188v-222.812h320v224l-64-96h-192z" />
<glyph unicode="&#xe021;" glyph-name="emoticons" d="M512 820c99.366 0 192.782-38.694 263.042-108.956s108.958-163.678 108.958-263.044-38.696-192.782-108.958-263.042-163.676-108.958-263.042-108.958-192.782 38.696-263.044 108.958-108.956 163.676-108.956 263.042 38.694 192.782 108.956 263.044 163.678 108.956 263.044 108.956zM512 896c-247.424 0-448-200.576-448-448s200.576-448 448-448 448 200.576 448 448-200.576 448-448 448v0zM320 576c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM576 576c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM512 304c-101.84 0-192.56 36.874-251.166 94.328 23.126-117.608 126.778-206.328 251.166-206.328s228.040 88.72 251.168 206.328c-58.608-57.454-149.328-94.328-251.168-94.328z" />
<glyph unicode="&#xe022;" glyph-name="print" d="M256 832h512v-128h-512v128zM896 640h-768c-35.2 0-64-28.8-64-64v-256c0-35.2 28.796-64 64-64h128v-192h512v192h128c35.2 0 64 28.8 64 64v256c0 35.2-28.8 64-64 64zM704 128h-384v256h384v-256zM910.4 544c0-25.626-20.774-46.4-46.398-46.4s-46.402 20.774-46.402 46.4 20.778 46.4 46.402 46.4c25.626 0 46.398-20.774 46.398-46.4z" />
<glyph unicode="&#xe023;" glyph-name="fullscreen" d="M480 576l-192 192 128 128h-352v-352l128 128 192-192zM640 480l192 192 128-128v352h-352l128-128-192-192zM544 320l192-192-128-128h352v352l-128-128-192 192zM384 416l-192-192-128 128v-352h352l-128 128 192 192z" />
<glyph unicode="&#xe024;" glyph-name="spellcheck" d="M960 832v64h-192c-35.202 0-64-28.8-64-64v-320c0-15.856 5.858-30.402 15.496-41.614l-303.496-260.386-142 148-82-70 224-288 416 448h128v64h-192v320h192zM256 448h64v384c0 35.2-28.8 64-64 64h-128c-35.2 0-64-28.8-64-64v-384h64v192h128v-192zM128 704v128h128v-128h-128zM640 512v96c0 35.2-8.8 64-44 64 35.2 0 44 28.8 44 64v96c0 35.2-28.8 64-64 64h-192v-448h192c35.2 0 64 28.8 64 64zM448 832h128v-128h-128v128zM448 640h128v-128h-128v128z" />
<glyph unicode="&#xe025;" glyph-name="nonbreaking" d="M448 448h-128v128h128v128h128v-128h128v-128h-128v-128h-128v128zM960 384v-320h-896v320h128v-192h640v192h128z" />
<glyph unicode="&#xe026;" glyph-name="template" d="M512 576h128v-64h-128zM512 192h128v-64h-128zM576 384h128v-64h-128zM768 384v-192h-64v-64h128v256zM384 384h128v-64h-128zM320 192h128v-64h-128zM320 576h128v-64h-128zM192 768v-256h64v192h64v64zM704 512h128v256h-64v-192h-64zM64 896v-896h896v896h-896zM896 64h-768v768h768v-768zM192 384v-256h64v192h64v64zM576 768h128v-64h-128zM384 768h128v-64h-128z" />
<glyph unicode="&#xe027;" glyph-name="pagebreak" d="M816 896l16-384h-640l16 384h32l16-320h512l16 320h32zM208 0l-16 320h640l-16-320h-32l-16 256h-512l-16-256h-32zM64 448h128v-64h-128zM256 448h128v-64h-128zM448 448h128v-64h-128zM640 448h128v-64h-128zM832 448h128v-64h-128z" />
<glyph unicode="&#xe028;" glyph-name="restoredraft" d="M576 896c247.424 0 448-200.576 448-448s-200.576-448-448-448v96c94.024 0 182.418 36.614 248.902 103.098s103.098 154.878 103.098 248.902c0 94.022-36.614 182.418-103.098 248.902s-154.878 103.098-248.902 103.098c-94.022 0-182.418-36.614-248.902-103.098-51.14-51.138-84.582-115.246-97.306-184.902h186.208l-224-256-224 256h164.57c31.060 217.102 217.738 384 443.43 384zM768 512v-128h-256v320h128v-192z" />
<glyph unicode="&#xe02a;" glyph-name="bold" d="M625.442 465.818c48.074 38.15 78.558 94.856 78.558 158.182 0 114.876-100.29 208-224 208h-224v-768h288c123.712 0 224 93.124 224 208 0 88.196-59.118 163.562-142.558 193.818zM384 656c0 26.51 21.49 48 48 48h67.204c42.414 0 76.796-42.98 76.796-96s-34.382-96-76.796-96h-115.204v144zM547.2 192h-115.2c-26.51 0-48 21.49-48 48v144h163.2c42.418 0 76.8-42.98 76.8-96s-34.382-96-76.8-96z" />
<glyph unicode="&#xe02b;" glyph-name="italic" d="M832 832v-64h-144l-256-640h144v-64h-448v64h144l256 640h-144v64h448z" />
<glyph unicode="&#xe02c;" glyph-name="underline" d="M192 128h576v-64h-576v64zM640 832v-384c0-31.312-14.7-61.624-41.39-85.352-30.942-27.502-73.068-42.648-118.61-42.648-45.544 0-87.668 15.146-118.608 42.648-26.692 23.728-41.392 54.040-41.392 85.352v384h-128v-384c0-141.382 128.942-256 288-256s288 114.618 288 256v384h-128z" />
<glyph unicode="&#xe02d;" glyph-name="strikethrough" d="M960 448h-265.876c-50.078 35.42-114.43 54.86-182.124 54.86-89.206 0-164.572 50.242-164.572 109.712s75.366 109.714 164.572 109.714c75.058 0 140.308-35.576 159.12-82.286h113.016c-7.93 50.644-37.58 97.968-84.058 132.826-50.88 38.16-117.676 59.174-188.078 59.174-70.404 0-137.196-21.014-188.074-59.174-54.788-41.090-86.212-99.502-86.212-160.254s31.424-119.164 86.212-160.254c1.956-1.466 3.942-2.898 5.946-4.316h-265.872v-64h512.532c58.208-17.106 100.042-56.27 100.042-100.572 0-59.468-75.368-109.71-164.572-109.71-75.060 0-140.308 35.574-159.118 82.286h-113.016c7.93-50.64 37.582-97.968 84.060-132.826 50.876-38.164 117.668-59.18 188.072-59.18 70.402 0 137.198 21.016 188.074 59.174 54.79 41.090 86.208 99.502 86.208 160.254 0 35.298-10.654 69.792-30.294 100.572h204.012v64z" />
<glyph unicode="&#xe02e;" glyph-name="visualchars" d="M384 832c-123.712 0-224-100.288-224-224s100.288-224 224-224v-320h128v640h64v-640h128v640h128v128h-448z" />
<glyph unicode="&#xe02f;" glyph-name="ltr" d="M448 832c-123.712 0-224-100.288-224-224s100.288-224 224-224v-320h128v640h64v-640h128v640h128v128h-448zM64 64l224 192-224 192z" />
<glyph unicode="&#xe030;" glyph-name="rtl" d="M320 832c-123.712 0-224-100.288-224-224s100.288-224 224-224v-320h128v640h64v-640h128v640h128v128h-448zM960 448l-224-192 224-192z" />
<glyph unicode="&#xe031;" glyph-name="copy" d="M832 640h-192v64l-192 192h-384v-704h384v-192h576v448l-192 192zM832 549.49l101.49-101.49h-101.49v101.49zM448 805.49l101.49-101.49h-101.49v101.49zM128 832h256v-192h192v-384h-448v576zM960 64h-448v128h128v384h128v-192h192v-320z" />
<glyph unicode="&#xe032;" glyph-name="resize" d="M768 704h64v-64h-64zM640 576h64v-64h-64zM640 448h64v-64h-64zM640 320h64v-64h-64zM512 448h64v-64h-64zM512 320h64v-64h-64zM384 320h64v-64h-64zM768 576h64v-64h-64zM768 448h64v-64h-64zM768 320h64v-64h-64zM768 192h64v-64h-64zM640 192h64v-64h-64zM512 192h64v-64h-64zM384 192h64v-64h-64zM256 192h64v-64h-64z" />
<glyph unicode="&#xe034;" glyph-name="browse" d="M928 832h-416l-32 64h-352l-64-128h896zM840.34 256h87.66l32 448h-896l64-640h356.080c-104.882 37.776-180.080 138.266-180.080 256 0 149.982 122.018 272 272 272 149.98 0 272-122.018 272-272 0-21.678-2.622-43.15-7.66-64zM874.996 110.25l-134.496 110.692c17.454 28.922 27.5 62.814 27.5 99.058 0 106.040-85.96 192-192 192s-192-85.96-192-192 85.96-192 192-192c36.244 0 70.138 10.046 99.058 27.5l110.692-134.496c22.962-26.678 62.118-28.14 87.006-3.252l5.492 5.492c24.888 24.888 23.426 64.044-3.252 87.006zM576 196c-68.484 0-124 55.516-124 124s55.516 124 124 124 124-55.516 124-124-55.516-124-124-124z" />
<glyph unicode="&#xe035;" glyph-name="pastetext" d="M704 576v160c0 17.6-14.4 32-32 32h-160v64c0 35.2-28.8 64-64 64h-128c-35.204 0-64-28.8-64-64v-64h-160c-17.602 0-32-14.4-32-32v-512c0-17.6 14.398-32 32-32h224v-192h576v576h-192zM320 831.886c0.034 0.038 0.072 0.078 0.114 0.114h127.768c0.042-0.036 0.082-0.076 0.118-0.114v-63.886h-128v63.886zM192 640v64h384v-64h-384zM832 64h-448v448h448v-448zM448 448v-128h32l32 64h64v-192h-48v-64h160v64h-48v192h64l32-64h32v128z" />
<glyph unicode="&#xe603;" glyph-name="codesample" d="M200.015 577.994v103.994c0 43.077 34.919 77.997 77.997 77.997h26v103.994h-26c-100.51 0-181.991-81.481-181.991-181.991v-103.994c0-43.077-34.919-77.997-77.997-77.997h-26v-103.994h26c43.077 0 77.997-34.919 77.997-77.997v-103.994c0-100.509 81.481-181.991 181.991-181.991h26v103.994h-26c-43.077 0-77.997 34.919-77.997 77.997v103.994c0 50.927-20.928 96.961-54.642 129.994 33.714 33.032 54.642 79.065 54.642 129.994zM823.985 577.994v103.994c0 43.077-34.919 77.997-77.997 77.997h-26v103.994h26c100.509 0 181.991-81.481 181.991-181.991v-103.994c0-43.077 34.919-77.997 77.997-77.997h26v-103.994h-26c-43.077 0-77.997-34.919-77.997-77.997v-103.994c0-100.509-81.482-181.991-181.991-181.991h-26v103.994h26c43.077 0 77.997 34.919 77.997 77.997v103.994c0 50.927 20.928 96.961 54.642 129.994-33.714 33.032-54.642 79.065-54.642 129.994zM615.997 603.277c0-57.435-46.56-103.994-103.994-103.994s-103.994 46.56-103.994 103.994c0 57.435 46.56 103.994 103.994 103.994s103.994-46.56 103.994-103.994zM512 448.717c-57.435 0-103.994-46.56-103.994-103.994 0-55.841 26-100.107 105.747-103.875-23.715-33.413-59.437-46.608-105.747-50.94v-61.747c0 0 207.991-18.144 207.991 216.561-0.202 57.437-46.56 103.996-103.994 103.996z" />
</font></defs></svg>

After

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -0,0 +1,131 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>Generated by IcoMoon</metadata>
<defs>
<font id="tinymce" horiz-adv-x="1024">
<font-face units-per-em="1024" ascent="960" descent="-64" />
<missing-glyph horiz-adv-x="1024" />
<glyph unicode="&#x20;" horiz-adv-x="512" d="" />
<glyph unicode="&#xe000;" glyph-name="save" d="M896 960h-896v-1024h1024v896l-128 128zM512 832h128v-256h-128v256zM896 64h-768v768h64v-320h576v320h74.978l53.022-53.018v-714.982z" />
<glyph unicode="&#xe001;" glyph-name="newdocument" d="M903.432 760.57l-142.864 142.862c-31.112 31.112-92.568 56.568-136.568 56.568h-480c-44 0-80-36-80-80v-864c0-44 36-80 80-80h736c44 0 80 36 80 80v608c0 44-25.456 105.458-56.568 136.57zM858.178 715.314c3.13-3.13 6.25-6.974 9.28-11.314h-163.458v163.456c4.34-3.030 8.184-6.15 11.314-9.28l142.864-142.862zM896 16c0-8.672-7.328-16-16-16h-736c-8.672 0-16 7.328-16 16v864c0 8.672 7.328 16 16 16h480c4.832 0 10.254-0.61 16-1.704v-254.296h254.296c1.094-5.746 1.704-11.166 1.704-16v-608z" />
<glyph unicode="&#xe002;" glyph-name="fullpage" d="M1024 367.542v160.916l-159.144 15.914c-8.186 30.042-20.088 58.548-35.21 84.98l104.596 127.838-113.052 113.050-127.836-104.596c-26.434 15.124-54.942 27.026-84.982 35.208l-15.914 159.148h-160.916l-15.914-159.146c-30.042-8.186-58.548-20.086-84.98-35.208l-127.838 104.594-113.050-113.050 104.596-127.836c-15.124-26.432-27.026-54.94-35.21-84.98l-159.146-15.916v-160.916l159.146-15.914c8.186-30.042 20.086-58.548 35.21-84.982l-104.596-127.836 113.048-113.048 127.838 104.596c26.432-15.124 54.94-27.028 84.98-35.21l15.916-159.148h160.916l15.914 159.144c30.042 8.186 58.548 20.088 84.982 35.21l127.836-104.596 113.048 113.048-104.596 127.836c15.124 26.434 27.028 54.942 35.21 84.98l159.148 15.92zM704 384l-128-128h-128l-128 128v128l128 128h128l128-128v-128z" />
<glyph unicode="&#xe003;" glyph-name="alignleft" d="M0 896h1024v-128h-1024zM0 704h640v-128h-640zM0 320h640v-128h-640zM0 512h1024v-128h-1024zM0 128h1024v-128h-1024z" />
<glyph unicode="&#xe004;" glyph-name="aligncenter" d="M0 896h1024v-128h-1024zM192 704h640v-128h-640zM192 320h640v-128h-640zM0 512h1024v-128h-1024zM0 128h1024v-128h-1024z" />
<glyph unicode="&#xe005;" glyph-name="alignright" d="M0 896h1024v-128h-1024zM384 704h640v-128h-640zM384 320h640v-128h-640zM0 512h1024v-128h-1024zM0 128h1024v-128h-1024z" />
<glyph unicode="&#xe006;" glyph-name="alignjustify" d="M0 896h1024v-128h-1024zM0 704h1024v-128h-1024zM0 512h1024v-128h-1024zM0 320h1024v-128h-1024zM0 128h1024v-128h-1024z" />
<glyph unicode="&#xe007;" glyph-name="cut" d="M890.774 250.846c-45.654 45.556-103.728 69.072-157.946 69.072h-29.112l-63.904 64.008 255.62 256.038c63.904 64.010 63.904 192.028 0 256.038l-383.43-384.056-383.432 384.054c-63.904-64.008-63.904-192.028 0-256.038l255.622-256.034-63.906-64.008h-29.114c-54.22 0-112.292-23.518-157.948-69.076-81.622-81.442-92.65-202.484-24.63-270.35 29.97-29.902 70.288-44.494 112.996-44.494 54.216 0 112.29 23.514 157.946 69.072 53.584 53.464 76.742 124 67.084 185.348l65.384 65.488 65.376-65.488c-9.656-61.348 13.506-131.882 67.084-185.348 45.662-45.558 103.732-69.072 157.948-69.072 42.708 0 83.024 14.592 112.994 44.496 68.020 67.866 56.988 188.908-24.632 270.35zM353.024 114.462c-7.698-17.882-19.010-34.346-33.626-48.926-14.636-14.604-31.172-25.918-49.148-33.624-16.132-6.916-32.96-10.568-48.662-10.568-15.146 0-36.612 3.402-52.862 19.612-16.136 16.104-19.52 37.318-19.52 52.288 0 15.542 3.642 32.21 10.526 48.212 7.7 17.884 19.014 34.346 33.626 48.926 14.634 14.606 31.172 25.914 49.15 33.624 16.134 6.914 32.96 10.568 48.664 10.568 15.146 0 36.612-3.4 52.858-19.614 16.134-16.098 19.522-37.316 19.522-52.284 0.002-15.542-3.638-32.216-10.528-48.214zM512.004 293.404c-49.914 0-90.376 40.532-90.376 90.526 0 49.992 40.462 90.52 90.376 90.52s90.372-40.528 90.372-90.52c0-49.998-40.46-90.526-90.372-90.526zM855.272 40.958c-16.248-16.208-37.712-19.612-52.86-19.612-15.704 0-32.53 3.652-48.666 10.568-17.972 7.706-34.508 19.020-49.142 33.624-14.614 14.58-25.926 31.042-33.626 48.926-6.886 15.998-10.526 32.672-10.526 48.212 0 14.966 3.384 36.188 19.52 52.286 16.246 16.208 37.712 19.614 52.86 19.614 15.7 0 32.53-3.654 48.66-10.568 17.978-7.708 34.516-19.018 49.15-33.624 14.61-14.58 25.924-31.042 33.626-48.926 6.884-15.998 10.526-32.67 10.526-48.212-0.002-14.97-3.39-36.186-19.522-52.288z" />
<glyph unicode="&#xe008;" glyph-name="paste" d="M832 640v160c0 17.6-14.4 32-32 32h-224v64c0 35.2-28.8 64-64 64h-128c-35.204 0-64-28.8-64-64v-64h-224c-17.602 0-32-14.4-32-32v-640c0-17.6 14.398-32 32-32h288v-192h448l192 192v512h-192zM384 895.886c0.034 0.038 0.072 0.078 0.114 0.114h127.768c0.042-0.036 0.082-0.076 0.118-0.114v-63.886h-128v63.886zM192 704v64h512v-64h-512zM832 26.51v101.49h101.49l-101.49-101.49zM960 192h-192v-192h-320v576h512v-384z" />
<glyph unicode="&#xe009;" glyph-name="searchreplace" d="M64 960h384v-64h-384zM576 960h384v-64h-384zM952 640h-56v256h-256v-256h-256v256h-256v-256h-56c-39.6 0-72-32.4-72-72v-560c0-39.6 32.4-72 72-72h304c39.6 0 72 32.4 72 72v376h128v-376c0-39.6 32.4-72 72-72h304c39.6 0 72 32.4 72 72v560c0 39.6-32.4 72-72 72zM348 0h-248c-19.8 0-36 14.4-36 32s16.2 32 36 32h248c19.8 0 36-14.4 36-32s-16.2-32-36-32zM544 448h-64c-17.6 0-32 14.4-32 32s14.4 32 32 32h64c17.6 0 32-14.4 32-32s-14.4-32-32-32zM924 0h-248c-19.8 0-36 14.4-36 32s16.2 32 36 32h248c19.8 0 36-14.4 36-32s-16.2-32-36-32z" />
<glyph unicode="&#xe00a;" glyph-name="bullist" d="M384 896h640v-128h-640v128zM384 512h640v-128h-640v128zM384 128h640v-128h-640v128zM0 832c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128zM0 448c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128zM0 64c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128z" />
<glyph unicode="&#xe00b;" glyph-name="numlist" d="M384 128h640v-128h-640zM384 512h640v-128h-640zM384 896h640v-128h-640zM192 960v-256h-64v192h-64v64zM128 434v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM256 256v-320h-192v64h128v64h-128v64h128v64h-128v64z" />
<glyph unicode="&#xe00c;" glyph-name="indent" d="M0 896h1024v-128h-1024zM384 704h640v-128h-640zM384 512h640v-128h-640zM384 320h640v-128h-640zM0 128h1024v-128h-1024zM0 256v384l256-192z" />
<glyph unicode="&#xe00d;" glyph-name="outdent" d="M0 896h1024v-128h-1024zM384 704h640v-128h-640zM384 512h640v-128h-640zM384 320h640v-128h-640zM0 128h1024v-128h-1024zM256 640v-384l-256 192z" />
<glyph unicode="&#xe00e;" glyph-name="blockquote" d="M225 512c123.712 0 224-100.29 224-224 0-123.712-100.288-224-224-224s-224 100.288-224 224l-1 32c0 247.424 200.576 448 448 448v-128c-85.474 0-165.834-33.286-226.274-93.726-11.634-11.636-22.252-24.016-31.83-37.020 11.438 1.8 23.16 2.746 35.104 2.746zM801 512c123.71 0 224-100.29 224-224 0-123.712-100.29-224-224-224s-224 100.288-224 224l-1 32c0 247.424 200.576 448 448 448v-128c-85.474 0-165.834-33.286-226.274-93.726-11.636-11.636-22.254-24.016-31.832-37.020 11.44 1.8 23.16 2.746 35.106 2.746z" />
<glyph unicode="&#xe00f;" glyph-name="undo" d="M761.862-64c113.726 206.032 132.888 520.306-313.862 509.824v-253.824l-384 384 384 384v-248.372c534.962 13.942 594.57-472.214 313.862-775.628z" />
<glyph unicode="&#xe010;" glyph-name="redo" d="M576 711.628v248.372l384-384-384-384v253.824c-446.75 10.482-427.588-303.792-313.86-509.824-280.712 303.414-221.1 789.57 313.86 775.628z" />
<glyph unicode="&#xe011;" glyph-name="link" d="M320 256c17.6-17.6 47.274-16.726 65.942 1.942l316.118 316.116c18.668 18.668 19.54 48.342 1.94 65.942s-47.274 16.726-65.942-1.942l-316.116-316.116c-18.668-18.668-19.542-48.342-1.942-65.942zM476.888 284.888c4.56-9.050 6.99-19.16 6.99-29.696 0-17.616-6.744-34.060-18.992-46.308l-163.382-163.382c-12.248-12.248-28.694-18.992-46.308-18.992s-34.060 6.744-46.308 18.992l-99.382 99.382c-12.248 12.248-18.992 28.694-18.992 46.308s6.744 34.060 18.992 46.308l163.382 163.382c12.248 12.248 28.694 18.994 46.308 18.994 10.536 0 20.644-2.43 29.696-6.99l65.338 65.338c-27.87 21.41-61.44 32.16-95.034 32.16-39.986 0-79.972-15.166-110.308-45.502l-163.382-163.382c-60.67-60.67-60.67-159.948 0-220.618l99.382-99.382c30.334-30.332 70.32-45.5 110.306-45.5 39.988 0 79.974 15.168 110.308 45.502l163.382 163.382c55.82 55.82 60.238 144.298 13.344 205.344l-65.34-65.34zM978.498 815.116l-99.382 99.382c-30.334 30.336-70.32 45.502-110.308 45.502-39.986 0-79.972-15.166-110.308-45.502l-163.382-163.382c-55.82-55.82-60.238-144.298-13.342-205.342l65.338 65.34c-4.558 9.050-6.988 19.16-6.988 29.694 0 17.616 6.744 34.060 18.992 46.308l163.382 163.382c12.248 12.248 28.694 18.994 46.308 18.994s34.060-6.746 46.308-18.994l99.382-99.382c12.248-12.248 18.992-28.694 18.992-46.308s-6.744-34.060-18.992-46.308l-163.382-163.382c-12.248-12.248-28.694-18.992-46.308-18.992-10.536 0-20.644 2.43-29.696 6.99l-65.338-65.338c27.872-21.41 61.44-32.16 95.034-32.16 39.988 0 79.974 15.168 110.308 45.502l163.382 163.382c60.67 60.666 60.67 159.944 0 220.614z" />
<glyph unicode="&#xe012;" glyph-name="unlink" d="M476.888 284.886c4.56-9.048 6.99-19.158 6.99-29.696 0-17.616-6.744-34.058-18.992-46.308l-163.38-163.38c-12.248-12.248-28.696-18.992-46.308-18.992s-34.060 6.744-46.308 18.992l-99.38 99.38c-12.248 12.25-18.992 28.696-18.992 46.308s6.744 34.060 18.992 46.308l163.38 163.382c12.248 12.246 28.696 18.992 46.308 18.992 10.538 0 20.644-2.43 29.696-6.988l65.338 65.336c-27.87 21.41-61.44 32.16-95.034 32.16-39.986 0-79.972-15.166-110.308-45.502l-163.38-163.382c-60.67-60.67-60.67-159.95 0-220.618l99.38-99.382c30.334-30.332 70.32-45.5 110.306-45.5 39.988 0 79.974 15.168 110.308 45.502l163.38 163.38c55.82 55.82 60.238 144.298 13.344 205.346l-65.34-65.338zM978.496 815.116l-99.38 99.382c-30.334 30.336-70.32 45.502-110.308 45.502-39.986 0-79.97-15.166-110.306-45.502l-163.382-163.382c-55.82-55.82-60.238-144.298-13.342-205.342l65.338 65.34c-4.558 9.050-6.988 19.16-6.988 29.694 0 17.616 6.744 34.060 18.992 46.308l163.382 163.382c12.246 12.248 28.694 18.994 46.306 18.994 17.616 0 34.060-6.746 46.308-18.994l99.38-99.382c12.248-12.248 18.992-28.694 18.992-46.308s-6.744-34.060-18.992-46.308l-163.38-163.382c-12.248-12.248-28.694-18.992-46.308-18.992-10.536 0-20.644 2.43-29.696 6.99l-65.338-65.338c27.872-21.41 61.44-32.16 95.034-32.16 39.988 0 79.974 15.168 110.308 45.504l163.38 163.38c60.672 60.666 60.672 159.944 0 220.614zM233.368 681.376l-191.994 191.994 45.256 45.256 191.994-191.994zM384 960h64v-192h-64zM0 576h192v-64h-192zM790.632 214.624l191.996-191.996-45.256-45.256-191.996 191.996zM576 128h64v-192h-64zM832 384h192v-64h-192z" />
<glyph unicode="&#xe013;" glyph-name="anchor" d="M192 960v-1024l320 320 320-320v1024h-640zM768 90.51l-256 256-256-256v805.49h512v-805.49z" />
<glyph unicode="&#xe014;" glyph-name="image" d="M0 832v-832h1024v832h-1024zM960 64h-896v704h896v-704zM704 608c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96s-96 42.981-96 96zM896 128h-768l192 512 256-320 128 96z" />
<glyph unicode="&#xe015;" glyph-name="media" d="M0 832v-768h1024v768h-1024zM192 128h-128v128h128v-128zM192 384h-128v128h128v-128zM192 640h-128v128h128v-128zM768 128h-512v640h512v-640zM960 128h-128v128h128v-128zM960 384h-128v128h128v-128zM960 640h-128v128h128v-128zM384 640v-384l256 192z" />
<glyph unicode="&#xe016;" glyph-name="help" d="M448 256h128v-128h-128zM704 704c35.346 0 64-28.654 64-64v-192l-192-128h-128v64l192 128v64h-320v128h384zM512 864c-111.118 0-215.584-43.272-294.156-121.844s-121.844-183.038-121.844-294.156c0-111.118 43.272-215.584 121.844-294.156s183.038-121.844 294.156-121.844c111.118 0 215.584 43.272 294.156 121.844s121.844 183.038 121.844 294.156c0 111.118-43.272 215.584-121.844 294.156s-183.038 121.844-294.156 121.844zM512 960v0c282.77 0 512-229.23 512-512s-229.23-512-512-512c-282.77 0-512 229.23-512 512s229.23 512 512 512z" />
<glyph unicode="&#xe017;" glyph-name="code" d="M320 704l-256-256 256-256h128l-256 256 256 256zM704 704h-128l256-256-256-256h128l256 256z" />
<glyph unicode="&#xe018;" glyph-name="inserttime" d="M512 768c-212.076 0-384-171.922-384-384s171.922-384 384-384c212.074 0 384 171.922 384 384s-171.926 384-384 384zM715.644 180.354c-54.392-54.396-126.716-84.354-203.644-84.354s-149.25 29.958-203.646 84.354c-54.396 54.394-84.354 126.718-84.354 203.646s29.958 149.25 84.354 203.646c54.396 54.396 126.718 84.354 203.646 84.354s149.252-29.958 203.642-84.354c54.402-54.396 84.358-126.718 84.358-203.646s-29.958-149.252-84.356-203.646zM325.93 756.138l-42.94 85.878c-98.874-49.536-179.47-130.132-229.006-229.008l85.876-42.94c40.248 80.336 105.732 145.822 186.070 186.070zM884.134 570.070l85.878 42.938c-49.532 98.876-130.126 179.472-229.004 229.008l-42.944-85.878c80.338-40.248 145.824-105.732 186.070-186.068zM512 576h-64v-192c0-10.11 4.7-19.11 12.022-24.972l-0.012-0.016 160-128 39.976 49.976-147.986 118.39v176.622z" />
<glyph unicode="&#xe019;" glyph-name="preview" d="M512 640c-209.368 0-395.244-100.556-512-256 116.756-155.446 302.632-256 512-256s395.244 100.554 512 256c-116.756 155.444-302.632 256-512 256zM448 512c35.346 0 64-28.654 64-64s-28.654-64-64-64-64 28.654-64 64 28.654 64 64 64zM773.616 254.704c-39.648-20.258-81.652-35.862-124.846-46.376-44.488-10.836-90.502-16.328-136.77-16.328-46.266 0-92.282 5.492-136.768 16.324-43.194 10.518-85.198 26.122-124.846 46.376-63.020 32.202-120.222 76.41-167.64 129.298 47.418 52.888 104.62 97.1 167.64 129.298 32.336 16.522 66.242 29.946 101.082 40.040-19.888-30.242-31.468-66.434-31.468-105.336 0-106.040 85.962-192 192-192s192 85.96 192 192c0 38.902-11.582 75.094-31.466 105.34 34.838-10.096 68.744-23.52 101.082-40.042 63.022-32.198 120.218-76.408 167.638-129.298-47.42-52.886-104.618-97.1-167.638-129.296zM860.918 716.278c-108.72 55.554-226.112 83.722-348.918 83.722s-240.198-28.168-348.918-83.722c-58.772-30.032-113.732-67.904-163.082-112.076v-109.206c55.338 58.566 120.694 107.754 192.194 144.29 99.62 50.904 207.218 76.714 319.806 76.714s220.186-25.81 319.804-76.716c71.502-36.536 136.858-85.724 192.196-144.29v109.206c-49.35 44.174-104.308 82.046-163.082 112.078z" />
<glyph unicode="&#xe01a;" glyph-name="forecolor" d="M322.018 128l57.6 192h264.764l57.6-192h113.632l-191.996 640h-223.236l-192-640h113.636zM475.618 640h72.764l57.6-192h-187.964l57.6 192z" />
<glyph unicode="&#xe01b;" glyph-name="table" d="M0 896v-896h1024v896h-1024zM384 320v192h256v-192h-256zM640 256v-192h-256v192h256zM640 768v-192h-256v192h256zM320 768v-192h-256v192h256zM64 512h256v-192h-256v192zM704 512h256v-192h-256v192zM704 576v192h256v-192h-256zM64 256h256v-192h-256v192zM704 64v192h256v-192h-256z" />
<glyph unicode="&#xe01c;" glyph-name="hr" d="M0 512h1024v-128h-1024z" />
<glyph unicode="&#xe01d;" glyph-name="removeformat" d="M0 64h576v-128h-576zM192 960h704v-128h-704zM277.388 128l204.688 784.164 123.85-32.328-196.25-751.836zM929.774-64l-129.774 129.774-129.774-129.774-62.226 62.226 129.774 129.774-129.774 129.774 62.226 62.226 129.774-129.774 129.774 129.774 62.226-62.226-129.774-129.774 129.774-129.774z" />
<glyph unicode="&#xe01e;" glyph-name="sub" d="M768 50v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM676 704h-136l-188-188-188 188h-136l256-256-256-256h136l188 188 188-188h136l-256 256z" />
<glyph unicode="&#xe01f;" glyph-name="sup" d="M768 754v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM676 704h-136l-188-188-188 188h-136l256-256-256-256h136l188 188 188-188h136l-256 256z" />
<glyph unicode="&#xe020;" glyph-name="charmap" d="M704 64h256l64 128v-256h-384v214.214c131.112 56.484 224 197.162 224 361.786 0 214.432-157.598 382.266-352 382.266-194.406 0-352-167.832-352-382.266 0-164.624 92.886-305.302 224-361.786v-214.214h-384v256l64-128h256v32.59c-187.63 66.46-320 227.402-320 415.41 0 247.424 229.23 448 512 448s512-200.576 512-448c0-188.008-132.37-348.95-320-415.41v-32.59z" />
<glyph unicode="&#xe021;" glyph-name="emoticons" d="M512 960c-282.77 0-512-229.228-512-512 0-282.77 229.228-512 512-512 282.77 0 512 229.23 512 512 0 282.772-229.23 512-512 512zM512 16c-238.586 0-432 193.412-432 432 0 238.586 193.414 432 432 432 238.59 0 432-193.414 432-432 0-238.588-193.41-432-432-432zM384 640c0-35.346-28.654-64-64-64s-64 28.654-64 64 28.654 64 64 64 64-28.654 64-64zM768 640c0-35.346-28.652-64-64-64s-64 28.654-64 64 28.652 64 64 64 64-28.654 64-64zM512 308c141.074 0 262.688 57.532 318.462 123.192-20.872-171.22-156.288-303.192-318.462-303.192-162.118 0-297.498 132.026-318.444 303.168 55.786-65.646 177.386-123.168 318.444-123.168z" />
<glyph unicode="&#xe022;" glyph-name="print" d="M256 896h512v-128h-512zM960 704h-896c-35.2 0-64-28.8-64-64v-320c0-35.2 28.796-64 64-64h192v-256h512v256h192c35.2 0 64 28.8 64 64v320c0 35.2-28.8 64-64 64zM704 64h-384v320h384v-320zM974.4 608c0-25.626-20.774-46.4-46.398-46.4-25.626 0-46.402 20.774-46.402 46.4s20.776 46.4 46.402 46.4c25.626 0 46.398-20.774 46.398-46.4z" />
<glyph unicode="&#xe023;" glyph-name="fullscreen" d="M1024 960v-384l-138.26 138.26-212-212-107.48 107.48 212 212-138.26 138.26zM245.74 821.74l212-212-107.48-107.48-212 212-138.26-138.26v384h384zM885.74 181.74l138.26 138.26v-384h-384l138.26 138.26-212 212 107.48 107.48zM457.74 286.26l-212-212 138.26-138.26h-384v384l138.26-138.26 212 212z" />
<glyph unicode="&#xe024;" glyph-name="spellchecker" d="M128 704h128v-192h64v384c0 35.2-28.8 64-64 64h-128c-35.2 0-64-28.8-64-64v-384h64v192zM128 896h128v-128h-128v128zM960 896v64h-192c-35.202 0-64-28.8-64-64v-320c0-35.2 28.798-64 64-64h192v64h-192v320h192zM640 800v96c0 35.2-28.8 64-64 64h-192v-448h192c35.2 0 64 28.8 64 64v96c0 35.2-8.8 64-44 64 35.2 0 44 28.8 44 64zM576 576h-128v128h128v-128zM576 768h-128v128h128v-128zM832 384l-416-448-224 288 82 70 142-148 352 302z" />
<glyph unicode="&#xe025;" glyph-name="nonbreaking" d="M448 384h-192v128h192v192h128v-192h192v-128h-192v-192h-128zM1024 320v-384h-1024v384h128v-256h768v256z" />
<glyph unicode="&#xe026;" glyph-name="template" d="M384 768h128v-64h-128zM576 768h128v-64h-128zM896 768v-256h-192v64h128v128h-64v64zM320 576h128v-64h-128zM512 576h128v-64h-128zM192 704v-128h64v-64h-128v256h192v-64zM384 384h128v-64h-128zM576 384h128v-64h-128zM896 384v-256h-192v64h128v128h-64v64zM320 192h128v-64h-128zM512 192h128v-64h-128zM192 320v-128h64v-64h-128v256h192v-64zM960 896h-896v-896h896v896zM1024 960v0-1024h-1024v1024h1024z" />
<glyph unicode="&#xe027;" glyph-name="pagebreak" d="M0 448h128v-64h-128zM192 448h192v-64h-192zM448 448h128v-64h-128zM640 448h192v-64h-192zM896 448h128v-64h-128zM880 960l16-448h-768l16 448h32l16-384h640l16 384zM144-64l-16 384h768l-16-384h-32l-16 320h-640l-16-320z" />
<glyph unicode="&#xe028;" glyph-name="restoredraft" d="M576 896c247.424 0 448-200.576 448-448s-200.576-448-448-448v96c94.024 0 182.418 36.614 248.902 103.098s103.098 154.878 103.098 248.902c0 94.022-36.614 182.418-103.098 248.902s-154.878 103.098-248.902 103.098c-94.022 0-182.418-36.614-248.902-103.098-51.14-51.138-84.582-115.246-97.306-184.902h186.208l-224-256-224 256h164.57c31.060 217.102 217.738 384 443.43 384zM768 512v-128h-256v320h128v-192z" />
<glyph unicode="&#xe02a;" glyph-name="bold" d="M707.88 475.348c37.498 44.542 60.12 102.008 60.12 164.652 0 141.16-114.842 256-256 256h-320v-896h384c141.158 0 256 114.842 256 256 0 92.956-49.798 174.496-124.12 219.348zM384 768h101.5c55.968 0 101.5-57.42 101.5-128s-45.532-128-101.5-128h-101.5v256zM543 128h-159v256h159c58.45 0 106-57.42 106-128s-47.55-128-106-128z" />
<glyph unicode="&#xe02b;" glyph-name="italic" d="M896 896v-64h-128l-320-768h128v-64h-448v64h128l320 768h-128v64z" />
<glyph unicode="&#xe02c;" glyph-name="underline" d="M704 896h128v-416c0-159.058-143.268-288-320-288-176.73 0-320 128.942-320 288v416h128v-416c0-40.166 18.238-78.704 51.354-108.506 36.896-33.204 86.846-51.494 140.646-51.494s103.75 18.29 140.646 51.494c33.116 29.802 51.354 68.34 51.354 108.506v416zM192 128h640v-128h-640z" />
<glyph unicode="&#xe02d;" glyph-name="strikethrough" d="M731.42 442.964c63.92-47.938 100.58-116.086 100.58-186.964s-36.66-139.026-100.58-186.964c-59.358-44.518-137.284-69.036-219.42-69.036-82.138 0-160.062 24.518-219.42 69.036-63.92 47.938-100.58 116.086-100.58 186.964h128c0-69.382 87.926-128 192-128s192 58.618 192 128c0 69.382-87.926 128-192 128-82.138 0-160.062 24.518-219.42 69.036-63.92 47.94-100.58 116.086-100.58 186.964s36.66 139.024 100.58 186.964c59.358 44.518 137.282 69.036 219.42 69.036 82.136 0 160.062-24.518 219.42-69.036 63.92-47.94 100.58-116.086 100.58-186.964h-128c0 69.382-87.926 128-192 128s-192-58.618-192-128c0-69.382 87.926-128 192-128 82.136 0 160.062-24.518 219.42-69.036zM0 448h1024v-64h-1024z" />
<glyph unicode="&#xe02e;" glyph-name="visualchars" d="M384 896h512v-128h-128v-768h-128v768h-128v-768h-128v448c-123.712 0-224 100.288-224 224s100.288 224 224 224z" />
<glyph unicode="&#xe02f;" glyph-name="ltr" d="M448 896h512v-128h-128v-768h-128v768h-128v-768h-128v448c-123.712 0-224 100.288-224 224s100.288 224 224 224zM64 512l256-224-256-224z" />
<glyph unicode="&#xe030;" glyph-name="rtl" d="M256 896h512v-128h-128v-768h-128v768h-128v-768h-128v448c-123.712 0-224 100.288-224 224s100.288 224 224 224zM960 64l-256 224 256 224z" />
<glyph unicode="&#xe031;" glyph-name="copy" d="M832 704h-192v64l-192 192h-448v-768h384v-256h640v576l-192 192zM832 613.49l101.49-101.49h-101.49v101.49zM448 869.49l101.49-101.49h-101.49v101.49zM64 896h320v-192h192v-448h-512v640zM960 0h-512v192h192v448h128v-192h192v-448z" />
<glyph unicode="&#xe032;" glyph-name="resize" d="M768 704h64v-64h-64zM640 576h64v-64h-64zM640 448h64v-64h-64zM640 320h64v-64h-64zM512 448h64v-64h-64zM512 320h64v-64h-64zM384 320h64v-64h-64zM768 576h64v-64h-64zM768 448h64v-64h-64zM768 320h64v-64h-64zM768 192h64v-64h-64zM640 192h64v-64h-64zM512 192h64v-64h-64zM384 192h64v-64h-64zM256 192h64v-64h-64z" />
<glyph unicode="&#xe033;" glyph-name="checkbox" d="M128 416l288-288 480 480-128 128-352-352-160 160z" />
<glyph unicode="&#xe034;" glyph-name="browse" d="M928 832h-416l-32 64h-352l-64-128h896zM904.34 256h74.86l44.8 448h-1024l64-640h484.080c-104.882 37.776-180.080 138.266-180.080 256 0 149.982 122.018 272 272 272 149.98 0 272-122.018 272-272 0-21.678-2.622-43.15-7.66-64zM1002.996 46.25l-198.496 174.692c17.454 28.92 27.5 62.814 27.5 99.058 0 106.040-85.96 192-192 192s-192-85.96-192-192 85.96-192 192-192c36.244 0 70.138 10.046 99.058 27.5l174.692-198.496c22.962-26.678 62.118-28.14 87.006-3.252l5.492 5.492c24.888 24.888 23.426 64.044-3.252 87.006zM640 196c-68.484 0-124 55.516-124 124s55.516 124 124 124 124-55.516 124-124-55.516-124-124-124z" />
<glyph unicode="&#xe035;" glyph-name="pastetext" d="M512 448v-128h32l32 64h64v-256h-48v-64h224v64h-48v256h64l32-64h32v128zM832 640v160c0 17.6-14.4 32-32 32h-224v64c0 35.2-28.8 64-64 64h-128c-35.204 0-64-28.8-64-64v-64h-224c-17.602 0-32-14.4-32-32v-640c0-17.6 14.398-32 32-32h288v-192h640v704h-192zM384 895.886c0.034 0.038 0.072 0.078 0.114 0.114h127.768c0.042-0.036 0.082-0.076 0.118-0.114v-63.886h-128v63.886zM192 704v64h512v-64h-512zM960 0h-512v576h512v-576z" />
<glyph unicode="&#xe600;" glyph-name="gamma" d="M483.2 320l-147.2 336c-9.6 25.6-19.2 44.8-25.6 54.4s-16 12.8-25.6 12.8c-16 0-25.6-3.2-28.8-3.2v70.4c9.6 6.4 25.6 6.4 38.4 9.6 32 0 57.6-6.4 73.6-22.4 6.4-6.4 12.8-16 19.2-25.6 6.4-12.8 12.8-25.6 16-41.6l121.6-291.2 150.4 371.2h92.8l-198.4-470.4v-224h-86.4v224zM0 960v-1024h1024v1024h-1024zM960 0h-896v896h896v-896z" />
<glyph unicode="&#xe601;" glyph-name="orientation" d="M627.2 80h-579.2v396.8h579.2v-396.8zM553.6 406.4h-435.2v-256h435.2v256zM259.2 732.8c176 176 457.6 176 633.6 0s176-457.6 0-633.6c-121.6-121.6-297.6-160-454.4-108.8 121.6-28.8 262.4 9.6 361.6 108.8 150.4 150.4 160 384 22.4 521.6-121.6 121.6-320 128-470.4 19.2l86.4-86.4-294.4-22.4 22.4 294.4 92.8-92.8z" />
<glyph unicode="&#xe602;" glyph-name="invert" d="M892.8-22.4l-89.6 89.6c-70.4-80-172.8-131.2-288-131.2-208 0-380.8 166.4-384 377.6 0 0 0 0 0 0 0 3.2 0 3.2 0 6.4s0 3.2 0 6.4v0c0 0 0 0 0 3.2 0 0 0 3.2 0 3.2 3.2 105.6 48 211.2 105.6 304l-192 192 44.8 44.8 182.4-182.4c0 0 0 0 0 0l569.6-569.6c0 0 0 0 0 0l99.2-99.2-48-44.8zM896 326.4c0 0 0 0 0 0 0 3.2 0 6.4 0 6.4-9.6 316.8-384 627.2-384 627.2s-108.8-89.6-208-220.8l70.4-70.4c6.4 9.6 16 22.4 22.4 32 41.6 51.2 83.2 96 115.2 128v0c32-32 73.6-76.8 115.2-128 108.8-137.6 169.6-265.6 172.8-371.2 0 0 0-3.2 0-3.2v0 0c0-3.2 0-3.2 0-6.4s0-3.2 0-3.2v0 0c0-22.4-3.2-41.6-9.6-64l76.8-76.8c16 41.6 28.8 89.6 28.8 137.6 0 0 0 0 0 0 0 3.2 0 3.2 0 6.4s0 3.2 0 6.4z" />
<glyph unicode="&#xe603;" glyph-name="codesample" d="M199.995 578.002v104.002c0 43.078 34.923 78.001 78.001 78.001h26v104.002h-26c-100.518 0-182.003-81.485-182.003-182.003v-104.002c0-43.078-34.923-78.001-78.001-78.001h-26v-104.002h26c43.078 0 78.001-34.923 78.001-78.001v-104.002c0-100.515 81.485-182.003 182.003-182.003h26v104.002h-26c-43.078 0-78.001 34.923-78.001 78.001v104.002c0 50.931-20.928 96.966-54.646 130.002 33.716 33.036 54.646 79.072 54.646 130.002zM824.005 578.002v104.002c0 43.078-34.923 78.001-78.001 78.001h-26v104.002h26c100.515 0 182.003-81.485 182.003-182.003v-104.002c0-43.078 34.923-78.001 78.001-78.001h26v-104.002h-26c-43.078 0-78.001-34.923-78.001-78.001v-104.002c0-100.515-81.488-182.003-182.003-182.003h-26v104.002h26c43.078 0 78.001 34.923 78.001 78.001v104.002c0 50.931 20.928 96.966 54.646 130.002-33.716 33.036-54.646 79.072-54.646 130.002zM616.002 603.285c0-57.439-46.562-104.002-104.002-104.002s-104.002 46.562-104.002 104.002c0 57.439 46.562 104.002 104.002 104.002s104.002-46.562 104.002-104.002zM512 448.717c-57.439 0-104.002-46.562-104.002-104.002 0-55.845 26-100.115 105.752-103.88-23.719-33.417-59.441-46.612-105.752-50.944v-61.751c0 0 208.003-18.144 208.003 216.577-0.202 57.441-46.56 104.004-104.002 104.004z" />
<glyph unicode="&#xe604;" glyph-name="tablerowprops" d="M0 896v-896h1024v896h-1024zM640 256v-192h-256v192h256zM640 768v-192h-256v192h256zM320 768v-192h-256v192h256zM704 576v192h256v-192h-256zM64 256h256v-192h-256v192zM704 64v192h256v-192h-256z" />
<glyph unicode="&#xe605;" glyph-name="tablecellprops" d="M0 896v-896h1024v896h-1024zM640 256v-192h-256v192h256zM640 768v-192h-256v192h256zM320 768v-192h-256v192h256zM64 512h256v-192h-256v192zM704 512h256v-192h-256v192zM704 576v192h256v-192h-256zM64 256h256v-192h-256v192zM704 64v192h256v-192h-256z" />
<glyph unicode="&#xe606;" glyph-name="table2" d="M0 896v-832h1024v832h-1024zM320 128h-256v192h256v-192zM320 384h-256v192h256v-192zM640 128h-256v192h256v-192zM640 384h-256v192h256v-192zM960 128h-256v192h256v-192zM960 384h-256v192h256v-192zM960 640h-896v192h896v-192z" />
<glyph unicode="&#xe607;" glyph-name="tablemergecells" d="M0 896v-896h1024v896h-1024zM384 64v448h576v-448h-576zM640 768v-192h-256v192h256zM320 768v-192h-256v192h256zM64 512h256v-192h-256v192zM704 576v192h256v-192h-256zM64 256h256v-192h-256v192z" />
<glyph unicode="&#xe608;" glyph-name="tableinsertcolbefore" d="M320 188.8v182.4h-182.4v89.6h182.4v182.4h86.4v-182.4h185.6v-89.6h-185.6v-182.4zM0 896v-896h1024v896h-1024zM640 64h-576v704h576v-704zM960 64h-256v192h256v-192zM960 320h-256v192h256v-192zM960 576h-256v192h256v-192z" />
<glyph unicode="&#xe609;" glyph-name="tableinsertcolafter" d="M704 643.2v-182.4h182.4v-89.6h-182.4v-182.4h-86.4v182.4h-185.6v89.6h185.6v182.4zM0 896v-896h1024v896h-1024zM320 64h-256v192h256v-192zM320 320h-256v192h256v-192zM320 576h-256v192h256v-192zM960 64h-576v704h576v-704z" />
<glyph unicode="&#xe60a;" glyph-name="tableinsertrowbefore" d="M691.2 508.8h-144v-144h-70.4v144h-144v67.2h144v144h70.4v-144h144zM0 896v-896h1024v896h-1024zM320 64h-256v192h256v-192zM640 64h-256v192h256v-192zM960 64h-256v192h256v-192zM960 316.8h-896v451.2h896v-451.2z" />
<glyph unicode="&#xe60b;" glyph-name="tableinsertrowafter" d="M332.8 323.2h144v144h70.4v-144h144v-67.2h-144v-144h-70.4v144h-144zM0 896v-896h1024v896h-1024zM384 768h256v-192h-256v192zM64 768h256v-192h-256v192zM960 64h-896v451.2h896v-451.2zM960 576h-256v192h256v-192z" />
<glyph unicode="&#xe60d;" glyph-name="tablesplitcells" d="M0 896v-896h1024v896h-1024zM384 768h256v-192h-256v192zM320 64h-256v192h256v-192zM320 320h-256v192h256v-192zM320 576h-256v192h256v-192zM960 64h-576v448h576v-448zM960 576h-256v192h256v-192zM864 156.8l-60.8-60.8-131.2 131.2-131.2-131.2-60.8 60.8 131.2 131.2-131.2 131.2 60.8 60.8 131.2-131.2 131.2 131.2 60.8-60.8-131.2-131.2z" />
<glyph unicode="&#xe60e;" glyph-name="tabledelete" d="M0 896h1024v-896h-1024v896zM60.8 768v-704h899.2v704h-899.2zM809.6 211.2l-96-96-204.8 204.8-204.8-204.8-96 96 204.8 204.8-204.8 204.8 96 96 204.8-204.8 204.8 204.8 96-96-204.8-204.8z" />
<glyph unicode="&#xe62a;" glyph-name="tableleftheader" d="M0 896v-832h1024v832h-1024zM640 128h-256v192h256v-192zM640 384h-256v192h256v-192zM640 640h-256v192h256v-192zM960 128h-256v192h256v-192zM960 384h-256v192h256v-192zM960 640h-256v192h256v-192z" />
<glyph unicode="&#xe62b;" glyph-name="tabletopheader" d="M0 896v-832h1024v832h-1024zM320 128h-256v192h256v-192zM320 384h-256v192h256v-192zM640 128h-256v192h256v-192zM640 384h-256v192h256v-192zM960 128h-256v192h256v-192zM960 384h-256v192h256v-192z" />
<glyph unicode="&#xe800;" glyph-name="tabledeleterow" d="M886.4 572.8l-156.8-156.8 160-160-76.8-76.8-160 160-156.8-156.8-76.8 73.6 160 160-163.2 163.2 76.8 76.8 163.2-163.2 156.8 156.8 73.6-76.8zM0 896v-896h1024v896h-1024zM960 576h-22.4l-64-64h86.4v-192h-89.6l64-64h25.6v-192h-896v192h310.4l64 64h-374.4v192h371.2l-64 64h-307.2v192h896v-192z" />
<glyph unicode="&#xe801;" glyph-name="tabledeletecol" d="M320 499.2l64-64v-12.8l-64-64v140.8zM640 422.4l64-64v137.6l-64-64v-9.6zM1024 896v-896h-1024v896h1024zM960 768h-256v-51.2l-12.8 12.8-51.2-51.2v89.6h-256v-89.6l-51.2 51.2-12.8-12.8v51.2h-256v-704h256v118.4l35.2-35.2 28.8 28.8v-115.2h256v115.2l48-48 16 16v-83.2h256v707.2zM672 662.4l-156.8-156.8-163.2 163.2-76.8-76.8 163.2-163.2-156.8-156.8 76.8-76.8 156.8 156.8 160-160 76.8 76.8-160 160 156.8 156.8-76.8 76.8z" />
<glyph unicode="&#xe900;" glyph-name="a11y" d="M960 704v64l-448-128-448 128v-64l320-128v-256l-128-448h64l192 448 192-448h64l-128 448v256zM416 800q0 40 28 68t68 28 68-28 28-68-28-68-68-28-68 28-28 68z" />
<glyph unicode="&#xe901;" glyph-name="toc" d="M0 896h128v-128h-128v128zM192 896h832v-128h-832v128zM0 512h128v-128h-128v128zM192 512h832v-128h-832v128zM0 128h128v-128h-128v128zM192 128h832v-128h-832v128zM192 704h128v-128h-128v128zM384 704h640v-128h-640v128zM192 320h128v-128h-128v128zM384 320h640v-128h-640v128z" />
<glyph unicode="&#xe902;" glyph-name="fill" d="M521.6 915.2l-67.2-67.2-86.4 86.4-86.4-86.4 86.4-86.4-368-368 432-432 518.4 518.4-428.8 435.2zM435.2 134.4l-262.4 262.4 35.2 35.2 576 51.2-348.8-348.8zM953.6 409.6c-6.4-6.4-16-16-28.8-32-28.8-32-41.6-64-41.6-89.6v0 0 0 0 0 0 0c0-16 6.4-35.2 22.4-48 12.8-12.8 32-22.4 48-22.4s35.2 6.4 48 22.4 22.4 32 22.4 48v0 0 0 0 0 0 0c0 25.6-12.8 54.4-41.6 89.6-9.6 16-22.4 25.6-28.8 32v0z" />
<glyph unicode="&#xe903;" glyph-name="borderwidth" d="M0 265.6h1024v-128h-1024v128zM0 32h1024v-64h-1024v64zM0 566.4h1024v-192h-1024v192zM0 928h1024v-256h-1024v256z" />
<glyph unicode="&#xe904;" glyph-name="line" d="M739.2 627.2l-502.4-502.4h-185.6v185.6l502.4 502.4 185.6-185.6zM803.2 688l-185.6 185.6 67.2 67.2c22.4 22.4 54.4 22.4 76.8 0l108.8-108.8c22.4-22.4 22.4-54.4 0-76.8l-67.2-67.2zM41.6 48h940.8v-112h-940.8v112z" />
<glyph unicode="&#xe905;" glyph-name="count" d="M0 480h1024v-64h-1024v64zM304 912v-339.2h-67.2v272h-67.2v67.2zM444.8 694.4v-54.4h134.4v-67.2h-201.6v153.6l134.4 64v54.4h-134.4v67.2h201.6v-153.6zM854.4 912v-339.2h-204.8v67.2h137.6v67.2h-137.6v70.4h137.6v67.2h-137.6v67.2zM115.2 166.4c3.2 57.6 38.4 83.2 108.8 83.2 38.4 0 67.2-9.6 86.4-25.6s25.6-35.2 25.6-70.4v-112c0-25.6 0-28.8 9.6-41.6h-73.6c-3.2 9.6-3.2 9.6-6.4 19.2-22.4-19.2-41.6-25.6-70.4-25.6-54.4 0-89.6 32-89.6 76.8s28.8 70.4 99.2 80l38.4 6.4c16 3.2 22.4 6.4 22.4 16 0 12.8-12.8 22.4-38.4 22.4s-41.6-9.6-44.8-28.8h-67.2zM262.4 115.2c-6.4-3.2-12.8-6.4-25.6-6.4l-25.6-6.4c-25.6-6.4-38.4-16-38.4-28.8 0-16 12.8-25.6 35.2-25.6s41.6 9.6 54.4 32v35.2zM390.4 336h73.6v-112c22.4 16 41.6 22.4 67.2 22.4 64 0 105.6-51.2 105.6-124.8 0-76.8-44.8-134.4-108.8-134.4-32 0-48 9.6-67.2 35.2v-28.8h-70.4v342.4zM460.8 121.6c0-41.6 22.4-70.4 51.2-70.4s51.2 28.8 51.2 70.4c0 44.8-19.2 70.4-51.2 70.4-28.8 0-51.2-28.8-51.2-70.4zM851.2 153.6c-3.2 22.4-19.2 35.2-44.8 35.2-32 0-51.2-25.6-51.2-70.4 0-48 19.2-73.6 51.2-73.6 25.6 0 41.6 12.8 44.8 41.6l70.4-3.2c-9.6-60.8-54.4-96-118.4-96-73.6 0-121.6 51.2-121.6 128 0 80 48 131.2 124.8 131.2 64 0 108.8-35.2 112-96h-67.2z" />
<glyph unicode="&#xe906;" glyph-name="reload" d="M889.68 793.68c-93.608 102.216-228.154 166.32-377.68 166.32-282.77 0-512-229.23-512-512h96c0 229.75 186.25 416 416 416 123.020 0 233.542-53.418 309.696-138.306l-149.696-149.694h352v352l-134.32-134.32zM928 448c0-229.75-186.25-416-416-416-123.020 0-233.542 53.418-309.694 138.306l149.694 149.694h-352v-352l134.32 134.32c93.608-102.216 228.154-166.32 377.68-166.32 282.77 0 512 229.23 512 512h-96z" />
<glyph unicode="&#xe907;" glyph-name="translate" d="M553.6 304l-118.4 118.4c80 89.6 137.6 195.2 172.8 304h137.6v92.8h-326.4v92.8h-92.8v-92.8h-326.4v-92.8h518.4c-32-89.6-80-176-147.2-249.6-44.8 48-80 99.2-108.8 156.8h-92.8c35.2-76.8 80-147.2 137.6-211.2l-236.8-233.6 67.2-67.2 233.6 233.6 144-144c3.2 0 38.4 92.8 38.4 92.8zM816 540.8h-92.8l-208-560h92.8l51.2 140.8h220.8l51.2-140.8h92.8l-208 560zM691.2 214.4l76.8 201.6 76.8-201.6h-153.6z" />
<glyph unicode="&#xe908;" glyph-name="drag" d="M576 896h128v-128h-128v128zM576 640h128v-128h-128v128zM320 640h128v-128h-128v128zM576 384h128v-128h-128v128zM320 384h128v-128h-128v128zM320 128h128v-128h-128v128zM576 128h128v-128h-128v128zM320 896h128v-128h-128v128z" />
<glyph unicode="&#xe90b;" glyph-name="home" d="M1024 369.556l-512 397.426-512-397.428v162.038l512 397.426 512-397.428zM896 384v-384h-256v256h-256v-256h-256v384l384 288z" />
<glyph unicode="&#xe911;" glyph-name="books" d="M576.234 670.73l242.712 81.432 203.584-606.784-242.712-81.432zM0 64h256v704h-256v-704zM64 640h128v-64h-128v64zM320 64h256v704h-256v-704zM384 640h128v-64h-128v64z" />
<glyph unicode="&#xe914;" glyph-name="upload" d="M839.432 760.57c27.492-27.492 50.554-78.672 55.552-120.57h-318.984v318.984c41.898-4.998 93.076-28.060 120.568-55.552l142.864-142.862zM512 576v384h-368c-44 0-80-36-80-80v-864c0-44 36-80 80-80h672c44 0 80 36 80 80v560h-384zM576 192v-192h-192v192h-160l256 256 256-256h-160z" />
<glyph unicode="&#xe915;" glyph-name="editimage" d="M768 416v-352h-640v640h352l128 128h-512c-52.8 0-96-43.2-96-96v-704c0-52.8 43.2-96 96-96h704c52.798 0 96 43.2 96 96v512l-128-128zM864 960l-608-608v-160h160l608 608c0 96-64 160-160 160zM416 320l-48 48 480 480 48-48-480-480z" />
<glyph unicode="&#xe91c;" glyph-name="bubble" d="M928 896h-832c-52.8 0-96-43.2-96-96v-512c0-52.8 43.2-96 96-96h160v-256l307.2 256h364.8c52.8 0 96 43.2 96 96v512c0 52.8-43.2 96-96 96zM896 320h-379.142l-196.858-174.714v174.714h-192v448h768v-448z" />
<glyph unicode="&#xe91d;" glyph-name="user" d="M622.826 257.264c-22.11 3.518-22.614 64.314-22.614 64.314s64.968 64.316 79.128 150.802c38.090 0 61.618 91.946 23.522 124.296 1.59 34.054 48.96 267.324-190.862 267.324s-192.45-233.27-190.864-267.324c-38.094-32.35-14.57-124.296 23.522-124.296 14.158-86.486 79.128-150.802 79.128-150.802s-0.504-60.796-22.614-64.314c-71.22-11.332-337.172-128.634-337.172-257.264h896c0 128.63-265.952 245.932-337.174 257.264z" />
<glyph unicode="&#xe926;" glyph-name="lock" d="M592 512h-16v192c0 105.87-86.13 192-192 192h-128c-105.87 0-192-86.13-192-192v-192h-16c-26.4 0-48-21.6-48-48v-480c0-26.4 21.6-48 48-48h544c26.4 0 48 21.6 48 48v480c0 26.4-21.6 48-48 48zM192 704c0 35.29 28.71 64 64 64h128c35.29 0 64-28.71 64-64v-192h-256v192z" />
<glyph unicode="&#xe927;" glyph-name="unlock" d="M768 896c105.87 0 192-86.13 192-192v-192h-128v192c0 35.29-28.71 64-64 64h-128c-35.29 0-64-28.71-64-64v-192h16c26.4 0 48-21.6 48-48v-480c0-26.4-21.6-48-48-48h-544c-26.4 0-48 21.6-48 48v480c0 26.4 21.6 48 48 48h400v192c0 105.87 86.13 192 192 192h128z" />
<glyph unicode="&#xe928;" glyph-name="settings" d="M448 832v16c0 26.4-21.6 48-48 48h-160c-26.4 0-48-21.6-48-48v-16h-192v-128h192v-16c0-26.4 21.6-48 48-48h160c26.4 0 48 21.6 48 48v16h576v128h-576zM256 704v128h128v-128h-128zM832 528c0 26.4-21.6 48-48 48h-160c-26.4 0-48-21.6-48-48v-16h-576v-128h576v-16c0-26.4 21.6-48 48-48h160c26.4 0 48 21.6 48 48v16h192v128h-192v16zM640 384v128h128v-128h-128zM448 208c0 26.4-21.6 48-48 48h-160c-26.4 0-48-21.6-48-48v-16h-192v-128h192v-16c0-26.4 21.6-48 48-48h160c26.4 0 48 21.6 48 48v16h576v128h-576v16zM256 64v128h128v-128h-128z" />
<glyph unicode="&#xe92a;" glyph-name="remove2" d="M192-64h640l64 704h-768zM640 832v128h-256v-128h-320v-192l64 64h768l64-64v192h-320zM576 832h-128v64h128v-64z" />
<glyph unicode="&#xe92d;" glyph-name="menu" d="M384 896h256v-256h-256zM384 576h256v-256h-256zM384 256h256v-256h-256z" />
<glyph unicode="&#xe930;" glyph-name="warning" d="M1009.956 44.24l-437.074 871.112c-16.742 29.766-38.812 44.648-60.882 44.648s-44.14-14.882-60.884-44.648l-437.074-871.112c-33.486-59.532-5-108.24 63.304-108.24h869.308c68.302 0 96.792 48.708 63.302 108.24zM512 64c-35.346 0-64 28.654-64 64 0 35.348 28.654 64 64 64 35.348 0 64-28.652 64-64 0-35.346-28.652-64-64-64zM556 256h-88l-20 256c0 35.346 28.654 64 64 64s64-28.654 64-64l-20-256z" />
<glyph unicode="&#xe931;" glyph-name="question" d="M448 256h128v-128h-128zM704 704c35.346 0 64-28.654 64-64v-192l-192-128h-128v64l192 128v64h-320v128h384zM512 864c-111.118 0-215.584-43.272-294.156-121.844s-121.844-183.038-121.844-294.156c0-111.118 43.272-215.584 121.844-294.156s183.038-121.844 294.156-121.844c111.118 0 215.584 43.272 294.156 121.844s121.844 183.038 121.844 294.156c0 111.118-43.272 215.584-121.844 294.156s-183.038 121.844-294.156 121.844zM512 960v0c282.77 0 512-229.23 512-512s-229.23-512-512-512c-282.77 0-512 229.23-512 512s229.23 512 512 512z" />
<glyph unicode="&#xe932;" glyph-name="pluscircle" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 64c-212.078 0-384 171.922-384 384s171.922 384 384 384c212.078 0 384-171.922 384-384s-171.922-384-384-384zM768 384h-192v-192h-128v192h-192v128h192v192h128v-192h192z" />
<glyph unicode="&#xe933;" glyph-name="info" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM448 768h128v-128h-128v128zM640 128h-256v64h64v256h-64v64h192v-320h64v-64z" />
<glyph unicode="&#xe934;" glyph-name="notice" d="M1024 224l-288 736h-448l-288-288v-448l288-288h448l288 288v448l-288 288zM576 128h-128v128h128v-128zM576 384h-128v384h128v-384z" />
<glyph unicode="&#xe935;" glyph-name="drop" d="M864.626 486.838c-65.754 183.44-205.11 348.15-352.626 473.162-147.516-125.012-286.87-289.722-352.626-473.162-40.664-113.436-44.682-236.562 12.584-345.4 65.846-125.14 198.632-205.438 340.042-205.438s274.196 80.298 340.040 205.44c57.27 108.838 53.25 231.962 12.586 345.398zM738.764 201.044c-43.802-83.252-132.812-137.044-226.764-137.044-55.12 0-108.524 18.536-152.112 50.652 13.242-1.724 26.632-2.652 40.112-2.652 117.426 0 228.668 67.214 283.402 171.242 44.878 85.292 40.978 173.848 23.882 244.338 14.558-28.15 26.906-56.198 36.848-83.932 22.606-63.062 40.024-156.34-5.368-242.604z" />
<glyph unicode="&#xe939;" glyph-name="minus" d="M0 544v-192c0-17.672 14.328-32 32-32h960c17.672 0 32 14.328 32 32v192c0 17.672-14.328 32-32 32h-960c-17.672 0-32-14.328-32-32z" />
<glyph unicode="&#xe93a;" glyph-name="plus" d="M992 576h-352v352c0 17.672-14.328 32-32 32h-192c-17.672 0-32-14.328-32-32v-352h-352c-17.672 0-32-14.328-32-32v-192c0-17.672 14.328-32 32-32h352v-352c0-17.672 14.328-32 32-32h192c17.672 0 32 14.328 32 32v352h352c17.672 0 32 14.328 32 32v192c0 17.672-14.328 32-32 32z" />
<glyph unicode="&#xe93b;" glyph-name="arrowup" d="M0 320l192-192 320 320 320-320 192 192-511.998 512z" />
<glyph unicode="&#xe93c;" glyph-name="arrowright" d="M384 960l-192-192 320-320-320-320 192-192 512 512z" />
<glyph unicode="&#xe93d;" glyph-name="arrowdown" d="M1024 576l-192 192-320-320-320 320-192-192 512-511.998z" />
<glyph unicode="&#xe93f;" glyph-name="arrowup2" d="M768 320l-256 256-256-256z" />
<glyph unicode="&#xe940;" glyph-name="arrowdown2" d="M256 576l256-256 256 256z" />
<glyph unicode="&#xe941;" glyph-name="menu2" d="M256 704l256-256 256 256zM255.996 384.004l256-256 256 256z" />
<glyph unicode="&#xe961;" glyph-name="newtab" d="M704 384l128 128v-512h-768v768h512l-128-128h-256v-512h512zM960 896v-352l-130.744 130.744-354.746-354.744h-90.51v90.512l354.744 354.744-130.744 130.744z" />
<glyph unicode="&#xeaa8;" glyph-name="rotateleft" d="M607.998 831.986c-212.070 0-383.986-171.916-383.986-383.986h-191.994l246.848-246.848 246.848 246.848h-191.994c0 151.478 122.798 274.276 274.276 274.276 151.48 0 274.276-122.798 274.276-274.276 0-151.48-122.796-274.276-274.276-274.276v-109.71c212.070 0 383.986 171.916 383.986 383.986s-171.916 383.986-383.986 383.986z" />
<glyph unicode="&#xeaa9;" glyph-name="rotateright" d="M416.002 831.986c212.070 0 383.986-171.916 383.986-383.986h191.994l-246.848-246.848-246.848 246.848h191.994c0 151.478-122.798 274.276-274.276 274.276-151.48 0-274.276-122.798-274.276-274.276 0-151.48 122.796-274.276 274.276-274.276v-109.71c-212.070 0-383.986 171.916-383.986 383.986s171.916 383.986 383.986 383.986z" />
<glyph unicode="&#xeaaa;" glyph-name="flipv" d="M0 576h1024v384zM1024 0v384h-1024z" />
<glyph unicode="&#xeaac;" glyph-name="fliph" d="M576 960v-1024h384zM0-64h384v1024z" />
<glyph unicode="&#xeb35;" glyph-name="zoomin" d="M992.262 88.604l-242.552 206.294c-25.074 22.566-51.89 32.926-73.552 31.926 57.256 67.068 91.842 154.078 91.842 249.176 0 212.078-171.922 384-384 384-212.076 0-384-171.922-384-384s171.922-384 384-384c95.098 0 182.108 34.586 249.176 91.844-1-21.662 9.36-48.478 31.926-73.552l206.294-242.552c35.322-39.246 93.022-42.554 128.22-7.356s31.892 92.898-7.354 128.22zM384 320c-141.384 0-256 114.616-256 256s114.616 256 256 256 256-114.616 256-256-114.614-256-256-256zM448 768h-128v-128h-128v-128h128v-128h128v128h128v128h-128z" />
<glyph unicode="&#xeb36;" glyph-name="zoomout" d="M992.262 88.604l-242.552 206.294c-25.074 22.566-51.89 32.926-73.552 31.926 57.256 67.068 91.842 154.078 91.842 249.176 0 212.078-171.922 384-384 384-212.076 0-384-171.922-384-384s171.922-384 384-384c95.098 0 182.108 34.586 249.176 91.844-1-21.662 9.36-48.478 31.926-73.552l206.294-242.552c35.322-39.246 93.022-42.554 128.22-7.356s31.892 92.898-7.354 128.22zM384 320c-141.384 0-256 114.616-256 256s114.616 256 256 256 256-114.616 256-256-114.614-256-256-256zM192 640h384v-128h-384z" />
<glyph unicode="&#xeba7;" glyph-name="sharpen" d="M768 832h-512l-256-256 512-576 512 576-256 256zM512 181.334v2.666h-2.37l-14.222 16h16.592v16h-30.814l-14.222 16h45.036v16h-59.258l-14.222 16h73.48v16h-87.704l-14.222 16h101.926v16h-116.148l-14.222 16h130.37v16h-144.592l-14.222 16h158.814v16h-173.038l-14.222 16h187.26v16h-201.482l-14.222 16h215.704v16h-229.926l-14.222 16h244.148v16h-258.372l-14.222 16h272.594v16h-286.816l-14.222 16h301.038v16h-315.26l-14.222 16h329.482v16h-343.706l-7.344 8.262 139.072 139.072h211.978v-3.334h215.314l16-16h-231.314v-16h247.314l16-16h-263.314v-16h279.314l16-16h-295.314v-16h311.314l16-16h-327.314v-16h343.312l7.738-7.738-351.050-394.928z" />
<glyph unicode="&#xec6a;" glyph-name="options" d="M64 768h896v-192h-896zM64 512h896v-192h-896zM64 256h896v-192h-896z" />
<glyph unicode="&#xeccc;" glyph-name="sun" d="M512 128c35.346 0 64-28.654 64-64v-64c0-35.346-28.654-64-64-64s-64 28.654-64 64v64c0 35.346 28.654 64 64 64zM512 768c-35.346 0-64 28.654-64 64v64c0 35.346 28.654 64 64 64s64-28.654 64-64v-64c0-35.346-28.654-64-64-64zM960 512c35.346 0 64-28.654 64-64s-28.654-64-64-64h-64c-35.348 0-64 28.654-64 64s28.652 64 64 64h64zM192 448c0-35.346-28.654-64-64-64h-64c-35.346 0-64 28.654-64 64s28.654 64 64 64h64c35.346 0 64-28.654 64-64zM828.784 221.726l45.256-45.258c24.992-24.99 24.992-65.516 0-90.508-24.994-24.992-65.518-24.992-90.51 0l-45.256 45.256c-24.992 24.99-24.992 65.516 0 90.51 24.994 24.992 65.518 24.992 90.51 0zM195.216 674.274l-45.256 45.256c-24.994 24.994-24.994 65.516 0 90.51s65.516 24.994 90.51 0l45.256-45.256c24.994-24.994 24.994-65.516 0-90.51s-65.516-24.994-90.51 0zM828.784 674.274c-24.992-24.992-65.516-24.992-90.51 0-24.992 24.994-24.992 65.516 0 90.51l45.256 45.254c24.992 24.994 65.516 24.994 90.51 0 24.992-24.994 24.992-65.516 0-90.51l-45.256-45.254zM195.216 221.726c24.992 24.992 65.518 24.992 90.508 0 24.994-24.994 24.994-65.52 0-90.51l-45.254-45.256c-24.994-24.992-65.516-24.992-90.51 0s-24.994 65.518 0 90.508l45.256 45.258zM512 704c-141.384 0-256-114.616-256-256 0-141.382 114.616-256 256-256 141.382 0 256 114.618 256 256 0 141.384-114.616 256-256 256zM512 288c-88.366 0-160 71.634-160 160s71.634 160 160 160 160-71.634 160-160-71.634-160-160-160z" />
<glyph unicode="&#xeccd;" glyph-name="moon" d="M715.812 895.52c-60.25 34.784-124.618 55.904-189.572 64.48 122.936-160.082 144.768-384.762 37.574-570.42-107.2-185.67-312.688-279.112-512.788-252.68 39.898-51.958 90.376-97.146 150.628-131.934 245.908-141.974 560.37-57.72 702.344 188.198 141.988 245.924 57.732 560.372-188.186 702.356z" />
<glyph unicode="&#xecd4;" glyph-name="contrast" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM128 448c0 212.078 171.922 384 384 384v-768c-212.078 0-384 171.922-384 384z" />
<glyph unicode="&#xed6a;" glyph-name="remove22" d="M893.254 738.746l-90.508 90.508-290.746-290.744-290.746 290.744-90.508-90.506 290.746-290.748-290.746-290.746 90.508-90.508 290.746 290.746 290.746-290.746 90.508 90.51-290.744 290.744z" />
<glyph unicode="&#xedc0;" glyph-name="arrowleft" d="M672-64l192 192-320 320 320 320-192 192-512-512z" />
<glyph unicode="&#xedf9;" glyph-name="resize2" d="M0 896v-384c0-35.346 28.654-64 64-64s64 28.654 64 64v229.488l677.488-677.488h-229.488c-35.346 0-64-28.652-64-64 0-35.346 28.654-64 64-64h384c35.346 0 64 28.654 64 64v384c0 35.348-28.654 64-64 64s-64-28.652-64-64v-229.488l-677.488 677.488h229.488c35.346 0 64 28.654 64 64s-28.652 64-64 64h-384c-35.346 0-64-28.654-64-64z" />
<glyph unicode="&#xee78;" glyph-name="crop" d="M832 704l192 192-64 64-192-192h-448v192h-128v-192h-192v-128h192v-512h512v-192h128v192h192v128h-192v448zM320 640h320l-320-320v320zM384 256l320 320v-320h-320z" />
</font></defs></svg>

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 B

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

11
admin/src/App.vue Normal file
View File

@@ -0,0 +1,11 @@
<template>
<div id="app">
<router-view />
</div>
</template>
<script>
export default {
name: 'App'
}
</script>

133
admin/src/api/article.js Normal file
View File

@@ -0,0 +1,133 @@
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import request from '@/utils/request'
/**
* 绑定产品
* @param pram
*/
export function bindProduct(pram) {
const data = {
id: pram.id,
productId: pram.productId
}
return request({
url: '/admin/article/bind/product',
method: 'POST',
params: data
})
}
/**
* 删除文章
* @param id
* @constructor
*/
export function DelArticle(pram) {
const data = {
id: pram.id
}
return request({
url: '/admin/article/delete',
method: 'GET',
params: data
})
}
/**
* 文章详情
* @param id
* @constructor
*/
export function InfoArticle(id) {
const data = {
id: id
}
return request({
url: '/admin/article/info',
method: 'get',
params: data
})
}
/**
* 文章列表
* @param pram
* @constructor
*/
export function ListArticle(pram) {
const data = {
keywords: pram.keywords,
cid: pram.cid,
page: pram.page,
limit: pram.limit
}
return request({
url: '/admin/article/list',
method: 'GET',
params: data
})
}
/**
* 新增文章
* @param pram
* @constructor
*/
export function AddArticle(pram) {
const data = {
author: pram.author,
cid: pram.cid,
content: pram.content,
imageInput: pram.imageInput,
isBanner: pram.isBanner,
isHot: pram.isHot,
shareSynopsis: pram.shareSynopsis,
shareTitle: pram.shareTitle,
sort: pram.sort,
synopsis: pram.synopsis,
title: pram.title,
url: pram.url
}
return request({
url: '/admin/article/save',
method: 'post',
data: data
})
}
/**
* 更新文章
* @param pram
* @constructor
*/
export function UpdateArticle(pram) {
const data = {
author: pram.author,
cid: pram.cid,
content: pram.content,
imageInput: pram.imageInput,
isBanner: pram.isBanner,
isHot: pram.isHot,
shareSynopsis: pram.shareSynopsis,
shareTitle: pram.shareTitle,
sort: pram.sort,
synopsis: pram.synopsis,
title: pram.title,
url: pram.url
}
return request({
url: '/admin/article/update',
method: 'post',
params: { id: pram.id },
data: data
})
}

View File

@@ -0,0 +1,41 @@
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import req from './req'
/**
* 查询授权
* @param pram
*/
export function authCertQuery(prams) {
const data = {
domain_name:prams.host,
label:22,
version:'2.0'
}
return req({
url: document.location.protocol + '//authorize.crmeb.net/api/auth_cert_query',
// url: 'https://authorize.crmeb.net/api/auth_cert_query',
method: 'POST',
data
})
}
/**
* 授权表单提交
*/
export function authCertSubmit(data) {
return req({
url: document.location.protocol + '//authorize.crmeb.net/api/auth_apply',
// url: 'https://authorize.crmeb.net/api/auth_apply',
method: 'POST',
data
})
}

View File

@@ -0,0 +1,160 @@
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import request from '@/utils/request'
/**
* 新增分类
* @param pram
*/
export function addCategroy(pram) {
const data = {
extra: pram.extra,
name: pram.name,
pid: pram.pid,
sort: pram.sort,
status: pram.status,
type: pram.type,
url: pram.url
}
return request({
url: '/admin/category/save',
method: 'POST',
params: data
})
}
/**
* 分类详情
* @param pram
*/
export function infoCategroy(pram) {
const data = {
id: pram.id
}
return request({
url: '/admin/category/info',
method: 'GET',
params: data
})
}
/**
* 删除分类
* @param pram
*/
export function deleteCategroy(pram) {
const data = {
id: pram.id
}
return request({
url: '/admin/category/delete',
method: 'GET',
params: data
})
}
/**
* 分类列表
* @param pram
*/
export function listCategroy(pram) {
const data = {
limit: pram.limit,
name: pram.name,
page: pram.page,
pid: pram.pid,
status: pram.status,
type: pram.type
}
return request({
url: '/admin/category/list',
method: 'GET',
params: data
})
}
/**
* 分类数据tree数据
* @param pram
*/
export function treeCategroy(pram) {
const data = {
type: pram.type,
status: pram.status,
name: pram.name
}
return request({
url: '/admin/category/list/tree',
method: 'GET',
params: data
})
}
/**
* 更新分类
* @param pram
*/
export function updateCategroy(pram) {
const data = {
extra: pram.extra,
name: pram.name,
pid: pram.pid,
sort: pram.sort,
status: pram.status,
type: pram.type,
url: pram.url,
id: pram.id
}
return request({
url: '/admin/category/update',
method: 'POST',
params: data
})
}
/**
* 根据id集合查询对应分类列表
* @param pram
*/
export function categroyByIds(pram) {
const data = {
ids: pram.ids
}
return request({
url: '/admin/category/list/ids',
method: 'GET',
params: data
})
}
/**
* 修改 显示关闭状态
* @param pram
*/
export function categroyUpdateStatus(id) {
return request({
url: `/admin/category/updateStatus/${id}`,
method: 'GET'
})
}
/**
* 文章详情
* @param pram
*/
export function articleInfoApi(params) {
return request({
url: `/admin/article/info`,
method: 'GET',
params
})
}

29
admin/src/api/codegen.js Normal file
View File

@@ -0,0 +1,29 @@
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import request from '@/utils/request'
/**
* 查询待生成代码列表
* @param pram
*/
export function getCodegenList(pram) {
const data = {
page: pram.page,
limit: pram.limit,
tableName: pram.tableName
}
return request({
url: '/codegen/list',
method: 'GET',
params: data
})
}

111
admin/src/api/configApi.js Normal file
View File

@@ -0,0 +1,111 @@
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import request from '@/utils/request'
// 配置管理
export function configDelete(pram) {
const data = {
id: pram.id
}
return request({
url: 'admin/system/config/delete',
method: 'GET',
params: data
})
}
export function configInfo(pram) {
const data = {
id: pram.id
}
return request({
url: 'admin/system/config/info',
method: 'GET',
params: data
})
}
export function configList(pram) {
const data = {
id: pram.id,
configTabId: pram.configTabId,
desc: pram.desc,
high: pram.high,
info: pram.info,
inputType: pram.inputType,
menuName: pram.menuName,
parameter: pram.parameter,
required: pram.required,
sort: pram.sort,
status: pram.status,
type: pram.type,
updateType: pram.updateType,
value: pram.value,
width: pram.width,
page: pram.page,
limit: pram.limit
}
return request({
url: 'admin/system/config/list',
method: 'POST',
params: data
})
}
export function configSave(pram) {
const data = {
id: pram.id,
configTabId: pram.configTabId,
desc: pram.desc,
high: pram.high,
info: pram.info,
inputType: pram.inputType,
menuName: pram.menuName,
parameter: pram.parameter,
required: pram.required,
sort: pram.sort,
status: pram.status,
type: pram.type,
updateType: pram.updateType,
value: pram.value,
width: pram.width
}
return request({
url: 'admin/system/config/save',
method: 'POST',
params: data
})
}
export function configUpdate(pram) {
const data = {
id: pram.id,
configTabId: pram.configTabId,
desc: pram.desc,
high: pram.high,
info: pram.info,
inputType: pram.inputType,
menuName: pram.menuName,
parameter: pram.parameter,
required: pram.required,
sort: pram.sort,
status: pram.status,
type: pram.type,
updateType: pram.updateType,
value: pram.value,
width: pram.width
}
return request({
url: 'admin/system/config/update',
method: 'POST',
params: data
})
}

View File

@@ -0,0 +1,105 @@
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import request from '@/utils/request'
// 配置分类管理
// 注意暂时没用到,使用无限极分类实现
export function configTabDelete(pram) {
const data = {
id: pram.id
}
return request({
url: 'admin/system/config/tab/delete',
method: 'GET',
params: data
})
}
export function configTabInfo(pram) {
const data = {
id: pram.id
}
return request({
url: 'admin/system/config/tab/info',
method: 'GET',
params: data
})
}
export function configTabList(pram) {
const data = {
id: pram.id,
engTitle: pram.engTitle,
icon: pram.icon,
info: pram.info,
title: pram.title,
parameter: pram.parameter,
status: pram.status,
page: pram.page,
limit: pram.limit
}
return request({
url: 'admin/system/config/tab/list',
method: 'POST',
params: data
})
}
export function configSave(pram) {
const data = {
id: pram.id,
configTabId: pram.configTabId,
desc: pram.desc,
high: pram.high,
info: pram.info,
inputType: pram.inputType,
menuName: pram.menuName,
parameter: pram.parameter,
required: pram.required,
sort: pram.sort,
status: pram.status,
type: pram.type,
updateType: pram.updateType,
value: pram.value,
width: pram.width
}
return request({
url: 'admin/system/config/save',
method: 'POST',
params: data
})
}
export function configUpdate(pram) {
const data = {
id: pram.id,
configTabId: pram.configTabId,
desc: pram.desc,
high: pram.high,
info: pram.info,
inputType: pram.inputType,
menuName: pram.menuName,
parameter: pram.parameter,
required: pram.required,
sort: pram.sort,
status: pram.status,
type: pram.type,
updateType: pram.updateType,
value: pram.value,
width: pram.width
}
return request({
url: 'admin/system/config/update',
method: 'POST',
params: data
})
}

View File

@@ -0,0 +1,75 @@
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import request from '@/utils/request'
// 首页数据概览
export function viewModelApi() {
return request({
url: '/admin/statistics/home/index',
method: 'GET',
})
}
// 用户曲线图
export function chartUserApi() {
return request({
url: '/admin/statistics/home/chart/user',
method: 'get'
})
}
// 用户购买统计
export function chartBuyApi() {
return request({
url: '/admin/statistics/home/chart/user/buy',
method: 'get'
})
}
// 订单量趋势 30天
export function chartOrder30Api() {
return request({
url: '/admin/statistics/home/chart/order',
method: 'get'
})
}
// 订单量趋势 月
export function chartOrderMonthApi() {
return request({
url: '/admin/statistics/home/chart/order/month',
method: 'get'
})
}
// 订单量趋势 周
export function chartOrderWeekApi() {
return request({
url: '/admin/statistics/home/chart/order/week',
method: 'get'
})
}
// 订单量趋势 年
export function chartOrderYearApi() {
return request({
url: '/admin/statistics/home/chart/order/year',
method: 'get'
})
}
// 首页经营数据
export function businessData() {
return request({
url: '/admin/statistics/home/operating/data',
method: 'get',
})
}

View File

@@ -0,0 +1,89 @@
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import request from '@/utils/request'
/**
* @description 分销设置 -- 详情
*/
export function configApi() {
return request({
url: '/admin/store/retail/spread/manage/get',
method: 'get'
})
}
/**
* @description 分销设置 -- 表单提交
*/
export function configUpdateApi(data) {
return request({
url: '/admin/store/retail/spread/manage/set',
method: 'post',
data
})
}
/**
* @description 分销员 -- 列表
*/
export function promoterListApi(params) {
return request({
url: '/admin/store/retail/list',
method: 'get',
params
})
}
/**
* @description 推广人 -- 列表
*/
export function spreadListApi( params, data) {
return request({
url: '/admin/store/retail/spread/userlist',
method: 'post',
params,
data
})
}
/**
* @description 推广人订单 -- 列表
*/
export function spreadOrderListApi(params, data) {
return request({
url: '/admin/store/retail/spread/orderlist',
method: 'post',
params,
data
})
}
/**
* @description 推广人 -- 清除上级推广人
*/
export function spreadClearApi(id) {
return request({
url: `/admin/store/retail/spread/clean/${id}`,
method: 'get'
})
}
/**
* @description 分销统计
*/
export function spreadStatisticsApi(params) {
return request({
url: `/admin/store/retail/statistics`,
method: 'get',
params
})
}

143
admin/src/api/financial.js Normal file
View File

@@ -0,0 +1,143 @@
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import request from '@/utils/request'
/**
* 提现申请 列表
* @param pram
*/
export function applyListApi(params) {
return request({
url: '/admin/finance/apply/list',
method: 'get',
params
})
}
/**
* 提现申请 金额
* @param pram
*/
export function applyBalanceApi(params) {
return request({
url: '/admin/finance/apply/balance',
method: 'post',
params
})
}
/**
* 提现申请 修改
* @param pram
*/
export function applyUpdateApi(params) {
return request({
url: '/admin/finance/apply/update',
method: 'post',
params
})
}
/**
* 提现申请 审核
* @param pram
*/
export function applyStatusApi(params, data) {
return request({
url: '/admin/finance/apply/apply',
method: 'post',
params,
data
})
}
/**
* 充值 列表
* @param pram
*/
export function topUpLogListApi(params) {
return request({
url: '/admin/user/topUpLog/list',
method: 'get',
params
})
}
/**
* 充值 金额
* @param pram
*/
export function balanceApi() {
return request({
url: '/admin/user/topUpLog/balance',
method: 'post'
})
}
/**
* 充值 删除
* @param pram
*/
export function topUpLogDeleteApi(params) {
return request({
url: '/admin/user/topUpLog/delete',
method: 'get',
params
})
}
/**
* 充值 退款
* @param pram
*/
export function refundApi(data) {
return request({
url: '/admin/user/topUpLog/refund',
method: 'post',
data
})
}
/**
* 资金监控 列表
* @param pram
*/
export function monitorListApi(params) {
return request({
url: '/admin/finance/founds/monitor/list',
method: 'get',
params
})
}
/**
* 资金监控 明细类型
* @param pram
*/
export function monitorListOptionApi() {
return request({
url: `/admin/finance/founds/monitor/list/option`,
method: 'get'
})
}
/**
* 佣金记录 列表
* @param pram
*/
export function brokerageListApi(params) {
return request({
url: '/admin/finance/founds/monitor/brokerage/record',
method: 'get',
params
})
}

181
admin/src/api/logistics.js Normal file
View File

@@ -0,0 +1,181 @@
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import request from '@/utils/request'
// 城市列表
export function cityList(data) {
return request({
url: '/admin/system/city/list',
method: 'get',
params: { ...data }
})
}
// 城市列表
export function cityListTree() {
return request({
url: '/admin/system/city/list/tree',
method: 'get'
})
}
// 城市修改状态
export function updateStatus(data) {
return request({
url: '/admin/system/city/update/status',
method: 'post',
params: { ...data }
})
}
// 城市修改
export function cityUpdate(data) {
return request({
url: '/admin/system/city/update',
method: 'post',
params: { ...data }
})
}
// 城市详情
export function cityInfo(data) {
return request({
url: '/admin/system/city/info',
method: 'get',
params: { ...data }
})
}
// 物流公司列表
export function expressList(data) {
return request({
url: '/admin/express/list',
method: 'get',
params: { ...data }
})
}
// 同步物流公司
export function expressSyncApi() {
return request({
url: '/admin/express/sync/express',
method: 'post'
})
}
// 物流公司修改状态
export function expressUpdateShow(data) {
return request({
url: '/admin/express/update/show',
method: 'post',
data
})
}
// 物流公司 编辑
export function expressUpdate(data) {
return request({
url: '/admin/express/update',
method: 'post',
data
})
}
// 新增物流公司
export function expressSave(data) {
return request({
url: '/admin/express/save',
method: 'post',
params: { ...data }
})
}
// 删除物流公司
export function expressDelete(data) {
return request({
url: '/admin/express/delete',
method: 'GET',
params: { ...data }
})
}
// 物流运费模板列表
export function shippingTemplatesList(data) {
return request({
url: '/admin/express/shipping/templates/list',
method: 'get',
params: { ...data }
})
}
// 物流运费模板详情
export function templateDetailApi(data) {
return request({
url: '/admin/express/shipping/templates/info',
method: 'get',
params: { ...data }
})
}
// 物流运费模板包邮
export function shippingFree(data) {
return request({
url: '/admin/express/shipping/free/list',
method: 'get',
params: { ...data }
})
}
// 物流运费模板不包邮
export function shippingRegion(data) {
return request({
url: 'admin/express/shipping/region/list',
method: 'get',
params: { ...data }
})
}
// 物流运费模板新增
export function shippingSave(data) {
return request({
url: 'admin/express/shipping/templates/save',
method: 'post',
data: data
})
}
// 物流运费模板更新
export function shippingUpdate(data, id) {
return request({
url: 'admin/express/shipping/templates/update',
method: 'post',
data: data,
params: { ...id }
})
}
// 物流运费模板删除
export function shippingDetete(data) {
return request({
url: 'admin/express/shipping/templates/delete',
method: 'get',
params: data
})
}
// 物流公司详情
export function expressInfo(data) {
return request({
url: 'admin/express/info',
method: 'get',
params: { ...data }
})
}

580
admin/src/api/marketing.js Normal file
View File

@@ -0,0 +1,580 @@
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import request from '@/utils/request'
/**
* 优惠券 列表
* @param pram
*/
export function marketingListApi(params) {
return request({
url: '/admin/marketing/coupon/list',
method: 'get',
params
})
}
/**
* 用户管理 优惠券列表
* @param pram
*/
export function marketingSendApi(params) {
return request({
url: '/admin/marketing/coupon/send/list',
method: 'get',
params
})
}
/**
* 优惠券 详情
* @param pram
*/
export function couponInfoApi(params) {
return request({
url: '/admin/marketing/coupon/info',
method: 'post',
params
})
}
/**
* 优惠券 发送
* @param pram
*/
export function couponUserApi(params) {
return request({
url: '/admin/marketing/coupon/user/receive',
method: 'post',
params
})
}
/**
* 优惠券 发送
* @param pram
*/
export function couponSaveApi(data) {
return request({
url: '/admin/marketing/coupon/save',
method: 'post',
data
})
}
/**
* 优惠券 修改状态
* @param pram
*/
export function couponIssueStatusApi(params) {
return request({
url: '/admin/marketing/coupon/update/status',
method: 'post',
params
})
}
/**
* 优惠券 删除
* @param pram
*/
export function couponDeleteApi(params) {
return request({
url: '/admin/marketing/coupon/delete',
method: 'post',
params
})
}
/**
* 会员领取记录 列表
* @param pram
*/
export function couponUserListApi(params) {
return request({
url: '/admin/marketing/coupon/user/list',
method: 'get',
params
})
}
/**
* 积分日志 列表
* @param pram
*/
export function integralListApi(params, data) {
return request({
url: '/admin/user/integral/list',
method: 'post',
params,
data
})
}
/**
* 秒杀配置 列表
* @param pram
*/
export function seckillListApi(params) {
return request({
url: '/admin/store/seckill/manger/list',
method: 'get',
params
})
}
/**
* 秒杀配置 详情
* @param pram
*/
export function seckillInfoApi(params) {
return request({
url: '/admin/store/seckill/manger/info',
method: 'get',
params
})
}
/**
* 秒杀配置 新增
* @param pram
*/
export function seckillSaveApi(data) {
return request({
url: '/admin/store/seckill/manger/save',
method: 'post',
data
})
}
/**
* 秒杀配置 修改
* @param pram
*/
export function seckillUpdateApi(params, data) {
return request({
url: '/admin/store/seckill/manger/update',
method: 'post',
params,
data
})
}
/**
* 秒杀配置 删除
* @param pram
*/
export function seckillDeleteApi(params) {
return request({
url: '/admin/store/seckill/manger/delete',
method: 'get',
params
})
}
/**
* 秒杀商品 列表
* @param pram
*/
export function seckillStoreListApi(params) {
return request({
url: '/admin/store/seckill/list',
method: 'get',
params
})
}
/**
* 秒杀商品 详情
* @param pram
*/
export function seckillStoreInfoApi(params) {
return request({
url: '/admin/store/seckill/info',
method: 'get',
params
})
}
/**
* 秒杀商品 新增
* @param pram
*/
export function seckillStoreSaveApi(data) {
return request({
url: '/admin/store/seckill/save',
method: 'post',
data
})
}
/**
* 秒杀商品 修改
* @param pram
*/
export function seckillStoreUpdateApi(params, data) {
return request({
url: '/admin/store/seckill/update',
method: 'post',
params,
data
})
}
/**
* 秒杀商品 删除
* @param pram
*/
export function seckillStoreDeleteApi(params) {
return request({
url: '/admin/store/seckill/delete',
method: 'get',
params
})
}
/**
* 秒杀商品 修改状态
*/
export function seckillStoreStatusApi(params) {
return request({
url: '/admin/store/seckill/update/status',
method: 'post',
params
})
}
/**
* 秒杀配置 修改状态
*/
export function seckillConfigStatusApi(id,params) {
return request({
url: `/admin/store/seckill/manger/update/status/${id}`,
method: 'post',
params
})
}
/**
* 砍价商品 列表
*/
export function bargainListApi(params) {
return request({
url: `/admin/store/bargain/list`,
method: 'get',
params
})
}
/**
* 砍价商品 新增
*/
export function bargainSaveApi(data) {
return request({
url: `/admin/store/bargain/save`,
method: 'POST',
data
})
}
/**
* 砍价商品 详情
*/
export function bargainInfoApi(params) {
return request({
url: `/admin/store/bargain/info`,
method: 'get',
params
})
}
/**
* 砍价商品 编辑
*/
export function bargainUpdateApi(params, data) {
return request({
url: `/admin/store/bargain/update`,
method: 'post',
params,
data
})
}
/**
* 砍价商品 删除
*/
export function bargainDeleteApi(params) {
return request({
url: `/admin/store/bargain/delete`,
method: 'get',
params
})
}
/**
* 砍价列表 详情
*/
export function bargainOrderPinkApi(id) {
return request({
url: `/admin/store/bargain/bargain_list/${id}`,
method: 'get'
})
}
/**
* 砍价列表 列表
*/
export function bargainListListApi(params) {
return request({
url: `/admin/store/bargain/bargain_list`,
method: 'get',
params
})
}
/**
* 拼团商品 修改拼团状态
*/
export function bargainStatusApi(params) {
return request({
url: `/admin/store/bargain/update/status`,
method: 'post',
params
})
}
/**
* 拼团商品 列表
*/
export function combinationListApi(params) {
return request({
url: `/admin/store/combination/list`,
method: 'get',
params
})
}
/**
* 拼团商品 删除
*/
export function combinationDeleteApi(params) {
return request({
url: `/admin/store/combination/delete`,
method: 'get',
params
})
}
/**
* 拼团商品 新增
*/
export function combinationSaveApi(data) {
return request({
url: `/admin/store/combination/save`,
method: 'post',
data
})
}
/**
* 拼团商品 修改
*/
export function combinationUpdateApi(params,data) {
return request({
url: `/admin/store/combination/update`,
method: 'post',
params,
data
})
}
/**
* 拼团商品 详情
*/
export function combinationInfoApi(params) {
return request({
url: `/admin/store/combination/info`,
method: 'get',
params
})
}
/**
* 拼团商品 修改拼团状态
*/
export function combinationStatusApi(params) {
return request({
url: `/admin/store/combination/update/status`,
method: 'post',
params
})
}
/**
* 拼团列表 列表
*/
export function combineListApi(params) {
return request({
url: `/admin/store/combination/combine/list`,
method: 'get',
params
})
}
/**
* 拼团列表 统计
*/
export function combineStatisticsApi(params) {
return request({
url: `/admin/store/combination/statistics`,
method: 'get',
params
})
}
/**
* 拼团列表 详情
*/
export function combineOrderPinkApi(id) {
return request({
url: `/admin/store/combination/order_pink/${id}`,
method: 'get'
})
}
/**
* 砍价 导出
*/
export function exportBargainApi(params) {
return request({
url: `/admin/export/excel/bargain/product`,
method: 'get',
params
})
}
/**
* 拼团 导出
*/
export function exportcombiantionApi(params) {
return request({
url: `/admin/export/excel/combiantion/product`,
method: 'get',
params
})
}
/**
* 视频号 草稿列表
*/
export function draftListApi(params) {
return request({
url: `/admin/pay/component/product/draft/list`,
method: 'get',
params
})
}
/**
* 视频号 商品列表
*/
export function videoProductListApi(params) {
return request({
url: `/admin/pay/component/product/list`,
method: 'get',
params
})
}
/**
* 视频号 类目
*/
export function catListApi(params) {
return request({
url: `/admin/pay/component/cat/get/list`,
method: 'get'
})
}
/**
* 视频号 添加
*/
export function videoAddApi(data) {
return request({
url: `/admin/pay/component/product/add`,
method: 'post',
data
})
}
/**
* 视频号 编辑
*/
export function videoUpdateApi(data) {
return request({
url: `/admin/pay/component/product/update`,
method: 'post',
data
})
}
/**
* 视频号 上架
*/
export function videoUpApi(proId) {
return request({
url: `/admin/pay/component/product/listing/${proId}`,
method: 'post'
})
}
/**
* 视频号 下架
*/
export function videoDownApi(proId) {
return request({
url: `/admin/pay/component/product/delisting/${proId}`,
method: 'post'
})
}
/**
* 视频号 删除
*/
export function videoDelApi(proId) {
return request({
url: `/admin/pay/component/product/delete/${proId}`,
method: 'post'
})
}
/**
* 视频号 草稿商品详情
*/
export function draftInfoApi(id) {
return request({
url: `/admin/pay/component/product/draft/get/${id}`,
method: 'get'
})
}
/**
* 视频号 草稿商品编辑
*/
export function draftUpdateApi(data) {
return request({
url: `/admin/pay/component/product/update`,
method: 'post',
data
})
}

260
admin/src/api/order.js Normal file
View File

@@ -0,0 +1,260 @@
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import request from '@/utils/request'
/**
* 订单 列表
* @param prams
*/
export function orderListApi(params) {
return request({
url: '/admin/store/order/list',
method: 'get',
params
})
}
/**
* 订单 列表 获取各状态数量
* @param params
*/
export function orderStatusNumApi(params) {
return request({
url: '/admin/store/order/status/num',
method: 'get',
params
})
}
/**
* 订单 列表 数据统计
* @param params
*/
export function orderListDataApi(params) {
return request({
url: '/admin/store/order/list/data',
method: 'get',
params
})
}
/**
* 订单 删除
* @param params
*/
export function orderDeleteApi(params) {
return request({
url: '/admin/store/order/delete',
method: 'get',
params
})
}
/**
* 订单 编辑
* @param prams
*/
export function orderUpdateApi(data, params) {
return request({
url: '/admin/store/order/update',
method: 'post',
data,
params
})
}
/**
* 订单 记录
* @param prams
*/
export function orderLogApi(params) {
return request({
url: '/admin/store/order/status/list',
method: 'get',
params
})
}
/**
* 订单 详情
* @param prams
*/
export function orderDetailApi(params) {
return request({
url: '/admin/store/order/info',
method: 'get',
params
})
}
/**
* 订单 备注
* @param prams
*/
export function orderMarkApi(params) {
return request({
url: '/admin/store/order/mark',
method: 'post',
params
})
}
/**
* 订单 发货
* @param prams
*/
export function orderSendApi(data) {
return request({
url: '/admin/store/order/send',
method: 'post',
data
})
}
/**
* 订单 拒绝退款
* @param prams
*/
export function orderRefuseApi(params) {
return request({
url: '/admin/store/order/refund/refuse',
method: 'get',
params
})
}
/**
* 订单 立即退款
* @param prams
*/
export function orderRefundApi(params) {
return request({
url: '/admin/store/order/refund',
method: 'get',
params
})
}
/**
* 订单 核销订单
* @param prams
*/
export function writeUpdateApi(vCode) {
return request({
url: `/admin/store/order/writeUpdate/${vCode}`,
method: 'get'
})
}
/**
* 订单 核销码查询待核销订单
* @param prams
*/
export function writeConfirmApi(vCode) {
return request({
url: `/admin/store/order/writeConfirm/${vCode}`,
method: 'get'
})
}
/**
* 订单 统计 头部数据
*/
export function orderStatisticsApi() {
return request({
url: `/admin/store/order/statistics`,
method: 'get'
})
}
/**
* 核销订单 月列表数据
*/
export function statisticsDataApi(params) {
return request({
url: `/admin/store/order/statisticsData`,
method: 'get',
params
})
}
/**
* 一键改价
*/
export function updatePriceApi(data) {
return request({
url: `admin/store/order/update/price`,
method: 'post',
data
})
}
/**
*订单统计详情
*/
export function orderTimeApi(params) {
return request({
url: `/admin/store/order/time`,
method: 'get',
params
})
}
/**
*面单默认配置信息
*/
export function sheetInfoApi() {
return request({
url: `/admin/store/order/sheet/info`,
method: 'get'
})
}
/**
*面单默认配置信息
*/
export function getLogisticsInfoApi(params) {
return request({
url: `/admin/store/order/getLogisticsInfo`,
method: 'get',
params
})
}
/**
*视频号物流公司
*/
export function companyGetListApi() {
return request({
url: `/admin/pay/component/delivery/company/get/list`,
method: 'get'
})
}
/**
*视频号物流公司
*/
export function videoSendApi(data) {
return request({
url: `/admin/store/order/video/send`,
method: 'post',
data
})
}
/**
*打印小票
*/
export function orderPrint(id) {
return request({
url: `/admin/yly/print/${id}`,
method: 'get',
})
}

33
admin/src/api/req.js Normal file
View File

@@ -0,0 +1,33 @@
import axios from 'axios'
const service = axios.create({
timeout: 40000,
})
service.interceptors.request.use(
config => {
return config
},
error => {
Promise.reject(error)
}
)
// response interceptor
service.interceptors.response.use(
response => {
const res = response
if (res.status !== 200 && res.status !== 401) {
Message({
message: res.data.msg || 'Error',
type: 'error',
duration: 5 * 1000
})
return Promise.reject()
}else {
return res.data
}
},
error => {
}
)
export default service

120
admin/src/api/role.js Normal file
View File

@@ -0,0 +1,120 @@
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import request from '@/utils/request'
/**
* 新增
* @param
*/
export function addRole(pram) {
const data = {
level: pram.level,
roleName: pram.roleName,
status: pram.status,
rules: pram.rules
}
// data.rules = pram.rules.join(',')
return request({
url: '/admin/system/role/save',
method: 'POST',
data: data
})
}
/**
* 删除
* @param
*/
export function delRole(pram) {
const data = {
id: pram.id
}
return request({
url: '/admin/system/role/delete',
method: 'GET',
params: data
})
}
/**
* 详情
* @param
*/
export function getInfo(pram) {
return request({
url: `/admin/system/role/info/${pram}`,
method: 'GET',
})
}
/**
* 分页列表
* @param
*/
export function getRoleList(pram) {
const data = {
createTime: pram.createTime,
updateTime: pram.updateTime,
level: pram.level,
page: pram.page,
limit: pram.limit,
roleName: pram.roleName,
rules: pram.rules,
status: pram.status
}
return request({
url: '/admin/system/role/list',
method: 'get',
params: data
})
}
/**
* 修改
* @param
*/
export function updateRole(pram) {
const data = {
id: pram.id,
roleName: pram.roleName,
rules: pram.rules,
status: pram.status
}
return request({
url: '/admin/system/role/update',
method: 'post',
params: {id: pram.id},
data: data
})
}
/**
* 修改身份状态
* @param
*/
export function updateRoleStatus(pram) {
return request({
url: '/admin/system/role/updateStatus',
method: 'get',
params: {id: pram.id,status:pram.status},
})
}
/**
* 缓存菜单
* @param
*/
export function menuCacheList(pram) {
return request({
url: '/admin/system/menu/cache/tree',
method: 'get',
})
}

32
admin/src/api/roleApi.js Normal file
View File

@@ -0,0 +1,32 @@
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import request from '@/utils/request'
/**
* 角色详情
*/
export function getRoleById(pram) {
return request({
url: `/admin/system/role/info/${pram.roles}`,
method: 'GET',
})
}
/**
* 菜单
* @param pram
*/
export function menuListApi() {
return request({
url: '/admin/getMenus',
method: 'GET'
})
}

215
admin/src/api/sms.js Normal file
View File

@@ -0,0 +1,215 @@
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import request from '@/utils/request'
/**
* @description 短信发送记录 -- 列表
*/
export function smsLstApi(params) {
return request({
url: '/admin/pass/user/record',
method: 'get',
params
})
}
/**
* @description 短信账户 -- 登录
*/
export function configApi(data) {
return request({
url: '/admin/pass/login',
method: 'post',
data
})
}
/**
* @description 短信账户 -- 获取验证码
*/
export function captchaApi(params) {
return request({
url: `/admin/pass/sendUserCode`,
method: 'get',
params
})
}
/**
* @description 短信账户 -- 注册
*/
export function registerApi(data) {
return request({
url: '/admin/pass/register',
method: 'post',
data
})
}
/**
* @description 短信账户 -- 是否登录
*/
export function isLoginApi() {
return request({
url: '/admin/pass/isLogin',
method: 'get'
})
}
/**
* @description 短信账户 -- 退出登录
*/
export function logoutApi() {
return request({
url: '/admin/pass/logout',
method: 'get'
})
}
/**
* @description 短信账户 -- 剩余条数
*/
export function smsNumberApi() {
return request({
url: '/admin/sms/logout',
method: 'get'
})
}
/**
* @description 短信模板 -- 列表
*/
export function smsTempLstApi(params) {
return request({
url: '/admin/sms/temps',
method: 'get',
params
})
}
/**
* @description 短信购买 -- 支付套餐
*/
export function smsPriceApi(params) {
return request({
url: '/admin/pass/meal/list',
method: 'get',
params
})
}
/**
* @description 短信购买 -- 支付码
*/
export function payCodeApi(data) {
return request({
url: '/admin/pass/meal/code',
method: 'post',
data
})
}
/**
* @description 短信模板 -- 添加表单
*/
export function tempCreateApi(data) {
return request({
url: '/admin/sms/temp/apply',
method: 'post',
data
})
}
/**
* @description 短信 -- 用户信息
*/
export function smsInfoApi() {
return request({
url: '/admin/pass/info',
method: 'get'
})
}
/**
* @description 短信 -- 短信提醒开关保存
*/
export function smsSaveApi(params) {
return request({
url: '/admin/sms/config/save',
method: 'post',
params
})
}
/**
* @description 短信 -- 修改密码
*/
export function updatePasswordApi(data) {
return request({
url: '/admin/pass/update/password',
method: 'post',
data
})
}
/**
* @description 短信 -- 修改手机号
*/
export function updateHoneApi(data) {
return request({
url: '/admin/pass/update/phone',
method: 'post',
data
})
}
/**
* @description 一号通 -- 服务开通
*/
export function serviceOpenApi(data) {
return request({
url: '/admin/pass/service/open',
method: 'post',
data
})
}
/**
* @description 一号通 -- 电子面单模板
*/
export function exportTempApi(params) {
return request({
url: '/admin/express/template',
method: 'get',
params
})
}
/**
* @description 全部物流公司
*/
export function expressAllApi(params) {
return request({
url: 'admin/express/all',
method: 'get',
params
})
}
/**
* @description 修改签名
*/
export function smsSignApi(data) {
return request({
url: 'admin/sms/modify/sign',
method: 'post',
data
})
}
/**
* @description 修改手机号验证账号密码
*/
export function phoneValidatorApi(data) {
return request({
url: 'admin/pass/update/phone/validator',
method: 'post',
data
})
}

150
admin/src/api/statistic.js Normal file
View File

@@ -0,0 +1,150 @@
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import request from '@/utils/request'
/**
* 商品统计数据
* @param pram
*/
export function productDataApi(params) {
return request({
url: `/admin/statistics/product/data`,
method: 'GET',
params
})
}
/**
* 商品排行数据
* @param pram
*/
export function productRankApi(params) {
return request({
url: `/admin/statistics/product/ranking`,
method: 'GET',
params
})
}
/**
* 商品趋势数据
* @param pram
*/
export function productTrendApi(params) {
return request({
url: `/admin/statistics/product/trend`,
method: 'GET',
params
})
}
/**
* 交易统计数据
* @param pram
*/
export function tradeDataApi() {
return request({
url: `/admin/statistics/trade/data`,
method: 'GET',
})
}
/**
* 交易概览
* @param pram
*/
export function tradeOverviewApi(params) {
return request({
url: `/admin/statistics/trade/overview`,
method: 'GET',
params
})
}
/**
* 交易趋势
* @param pram
*/
export function tradeTrendApi(params) {
return request({
url: `/admin/statistics/trade/trend`,
method: 'GET',
params
})
}
/**
* 用户总数据
* @param pram
*/
export function userTotalData() {
return request({
url: `/admin/statistics/user/total/data`,
method: 'GET'
})
}
/**
* 用户区域数据
* @param pram
*/
export function userAreaData() {
return request({
url: `/admin/statistics/user/area`,
method: 'GET'
})
}
/**
* 用户渠道数据
* @param pram
*/
export function userChannelData() {
return request({
url: `/admin/statistics/user/channel`,
method: 'GET'
})
}
/**
* 用户概览
* @param pram
*/
export function userOverviewData(params) {
return request({
url: `/admin/statistics/user/overview`,
method: 'GET',
params
})
}
/**
* 用户性别数据
* @param pram
*/
export function userSexData() {
return request({
url: `/admin/statistics/user/sex`,
method: 'GET',
})
}
/**
* 用户概览列表
* @param pram
*/
export function userOverviewListApi(params) {
return request({
url: `/admin/statistics/user/overview/list`,
method: 'GET',
params
})
}

312
admin/src/api/store.js Normal file
View File

@@ -0,0 +1,312 @@
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import request from '@/utils/request'
/**
* 新增商品
* @param pram
*/
export function productCreateApi(data) {
return request({
url: '/admin/store/product/save',
method: 'POST',
data
})
}
/**
* 编辑商品
* @param pram
*/
export function productUpdateApi(data) {
return request({
url: '/admin/store/product/update',
method: 'POST',
data
})
}
/**
* 商品详情
* @param pram
*/
export function productDetailApi(id) {
return request({
url: `/admin/store/product/info/${id}`,
method: 'GET'
})
}
/**
* 删除商品
* @param pram
*/
export function productDeleteApi(id, type) {
return request({
url: `/admin/store/product/delete/${id}`,
method: 'get',
params:{type:type}
})
}
/**
* 商品列表 表头数量
*/
export function productHeadersApi() {
return request({
url: '/admin/store/product/tabs/headers',
method: 'GET'
})
}
/**
* 商品列表
* @param pram
*/
export function productLstApi(params) {
return request({
url: '/admin/store/product/list',
method: 'GET',
params
})
}
/**
* 商品分类
* @param pram
*/
export function categoryApi(params) {
return request({
url: '/admin/category/list/tree',
method: 'GET',
params
})
}
/**
* 商品上架
* @param pram
*/
export function putOnShellApi(id) {
return request({
url: `/admin/store/product/putOnShell/${id}`,
method: 'GET'
})
}
/**
* 商品下架
* @param pram
*/
export function offShellApi(id) {
return request({
url: `/admin/store/product/offShell/${id}`,
method: 'GET'
})
}
/**
* 商品规格 列表
* @param pram
*/
export function templateListApi(params) {
return request({
url: '/admin/store/product/rule/list',
method: 'GET',
params
})
}
/**
* 商品规格 删除
* @param pram
*/
export function attrDeleteApi(id) {
return request({
url: `/admin/store/product/rule/delete/${id}`,
method: 'get'
})
}
/**
* 商品规格 新增
* @param pram
*/
export function attrCreatApi(data) {
return request({
url: '/admin/store/product/rule/save',
method: 'POST',
data
})
}
/**
* 商品规格 编辑
* @param pram
*/
export function attrEditApi(data) {
return request({
url: '/admin/store/product/rule/update',
method: 'POST',
data
})
}
/**
* 商品规格 详情
* @param pram
*/
export function attrInfoApi(id) {
return request({
url: `admin/store/product/rule/info/${id}`,
method: 'GET'
})
}
/**
* 商品评论 列表
* @param pram
*/
export function replyListApi(params) {
return request({
url: '/admin/store/product/reply/list',
method: 'GET',
params
})
}
/**
* 商品评论 新增
* @param pram
*/
export function replyCreatApi(data) {
return request({
url: '/admin/store/product/reply/save',
method: 'POST',
data
})
}
/**
* 商品评论 编辑
* @param pram
*/
export function replyEditApi(data) {
return request({
url: '/admin/store/product/reply/update',
method: 'POST',
data
})
}
/**
* 商品评论 详情
* @param pram
*/
export function replyInfoApi(id) {
return request({
url: `/admin/store/product/reply/info/${id}`,
method: 'GET'
})
}
/**
* 商品评论 删除
* @param pram
*/
export function replyDeleteApi(id) {
return request({
url: `/admin/store/product/reply/delete/${id}`,
method: 'GET'
})
}
/**
* 商品评论 回复
* @param pram
*/
export function replyCommentApi(data) {
return request({
url: `/admin/store/product/reply/comment`,
method: 'post',
data
})
}
/**
* 商品评论 导出
* @param pram
*/
export function productExportApi(params) {
return request({
url: `/admin/export/excel/product`,
method: 'get',
params
})
}
/**
* 商品复制 99Api
* @param pram
*/
export function importProductApi(params) {
return request({
url: `/admin/store/product/importProduct`,
method: 'post',
params
})
}
/**
* 商品复制 一号通
* @param pram
*/
export function copyProductApi(data) {
return request({
url: `/admin/store/product/copy/product`,
method: 'post',
data
})
}
/**
* 恢复
* @param pram
*/
export function restoreApi(id) {
return request({
url: `/admin/store/product/restore/${id}`,
method: 'get'
})
}
/**
* 商品列表 导出
* @param pram
*/
export function productExcelApi(params) {
return request({
url: `/admin/export/excel/product`,
method: 'get',
params
})
}
/**
* 商品列表 获取复制商品配置
* @param pram
*/
export function copyConfigApi() {
return request({
url: `/admin/store/product/copy/config`,
method: 'post'
})
}
/**
* 订单数据 导出
* @param pram
*/
export function orderExcelApi(params) {
return request({
url: `/admin/export/excel/order`,
method: 'get',
params
})
}

227
admin/src/api/storePoint.js Normal file
View File

@@ -0,0 +1,227 @@
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import request from '@/utils/request'
/**
* 提货点分页列表
* @param pram
*/
export function storeListApi(data) {
return request({
url: '/admin/system/store/list',
method: 'get',
params: data
})
}
/**
* 提货点数量
* @param pram
*/
export function storeGetCountApi() {
return request({
url: '/admin/system/store/getCount',
method: 'get'
})
}
/**
* 提货点门店状态
* @param pram
*/
export function storeUpdateStatusApi(data) {
return request({
url: '/admin/system/store/update/status',
method: 'get',
params: data
})
}
/**
* 提货点门店刪除
* @param pram
*/
export function storeDeleteApi(data) {
return request({
url: '/admin/system/store/delete',
method: 'get',
params: data
})
}
/**
* 提货点门店回收站刪除
* @param pram
*/
export function allDeleteApi(params) {
return request({
url: '/admin/system/store/completely/delete',
method: 'get',
params
})
}
/**
* 提货点添加
* @param pram
*/
export function storeSaveApi(data) {
return request({
url: '/admin/system/store/save',
method: 'post',
data
})
}
/**
* 提货点详情
* @param pram
*/
export function storeInfoApi(data) {
return request({
url: '/admin/system/store/info',
method: 'get',
params: data
})
}
/**
* 提货点修改
* @param pram
*/
export function storeUpdateApi(data,id) {
// const param = ;
return request({
url: '/admin/system/store/update',
method: 'post',
params: {id: id},
data
})
}
/**
* 提货点恢复
* @param pram
*/
export function storeRecoveryApi(params) {
return request({
url: '/admin/system/store/recovery',
method: 'get',
params
})
}
/**
* 核销员分页列表
* @param pram
*/
export function storeStaffListApi(data) {
return request({
url: '/admin/system/store/staff/list',
method: 'get',
params: data
})
}
/**
* 核销员添加
* @param pram
*/
export function storeStaffSaveApi(data) {
return request({
url: '/admin/system/store/staff/save',
method: 'POST',
params: data
})
}
/**
* 核销员删除
* @param pram
*/
export function storeStaffDeleteApi(data) {
return request({
url: '/admin/system/store/staff/delete',
method: 'get',
params: data
})
}
/**
* 核销员编辑
* @param pram
*/
export function storeStaffUpdateApi(data) {
return request({
url: '/admin/system/store/staff/update',
method: 'POST',
params: data
})
}
/**
* 核销员编辑
* @param pram
*/
export function storeStaffInfoApi(id) {
return request({
url: '/admin/system/store/staff/info',
method: 'get',
params: id
})
}
/**
* 核销员编辑
* @param pram
*/
export function storeStaffUpdateStatusApi(data) {
return request({
url: '/admin/system/store/staff/update/status',
method: 'get',
params: data
})
}
/**
* 核销员编辑
* @param pram
*/
export function userListApi(data) {
return request({
url: '/admin/wechat/user/list',
method: 'get',
params: data
})
}
/**
* 核销订单
* @param pram
*/
export function orderListApi(params) {
return request({
url: '/admin/system/store/order/list',
method: 'post',
params
})
}

57
admin/src/api/system.js Normal file
View File

@@ -0,0 +1,57 @@
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import request from '@/utils/request'
/**
* @description 附件分类 -- 所有分类
*/
export function formatLstApi(data) {
return request.get({
url: '/admin/product/save',
method: 'POST',
data
})
}
/**
* @description 附件分类 -- 添加分类
*/
export function attachmentCreateApi() {
return request.get(`system/attachment/category/create/form`)
}
/**
* @description 附件分类 -- 编辑分类
*/
export function attachmentUpdateApi(id) {
return request.get(`system/attachment/category/update/form/${id}`)
}
/**
* @description 附件分类 -- 删除分类
*/
export function attachmentDeleteApi(id) {
return request.delete(`system/attachment/category/delete/${id}`)
}
/**
* @description 图片列表
*/
export function attachmentListApi(data) {
return request.get(`system/attachment/lst`, data)
}
/**
* @description 图片列表 -- 删除
*/
export function picDeleteApi(id) {
return request.delete(`system/attachment/delete`, id)
}
/**
* @description 图片列表 -- 修改附件分类
*/
export function categoryApi(ids, attachment_category_id) {
return request.post(`system/attachment/category`, { ids, attachment_category_id })
}

View File

@@ -0,0 +1,121 @@
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import request from '@/utils/request'
export function configCheckUnique(pram) {
const data = {
name: pram.name
}
return request({
url: '/admin/system/config/check',
method: 'GET',
params: data
})
}
export function configDelete(pram) {
const data = {
id: pram.id
}
return request({
url: '/admin/system/config/delete',
method: 'GET',
params: data
})
}
export function configInfo(pram) {
const data = {
formId: pram.id
}
return request({
url: '/admin/system/config/info',
method: 'GET',
params: data
})
}
export function configList(pram) {
const data = {
page: pram.page,
limit: pram.limit
}
return request({
url: '/admin/system/config/list',
method: 'GET',
params: data
})
}
export function configSave(pram) {
const data = {
systemConfigRequest: {
desc: pram.desc,
groupId: pram.groupId,
info: pram.info,
name: pram.name,
pid: pram.pid,
status: pram.status,
type: pram.type,
value: pram.value // value 存储表单配置数据,其他的参数来自于父级数据 justForAPI
}
}
return request({
url: '/admin/system/config/save',
method: 'POST',
params: data
})
}
export function configSaveForm(pram) {
return request({
url: '/admin/system/config/save/form',
method: 'POST',
data: pram
})
}
export function configUpdate(pram) {
const data = {
id: pram.id,
systemConfigRequest: pram.systemConfigRequest
}
return request({
url: '/admin/system/config/update',
method: 'POST',
params: data
})
}
export function configSaveUniq(pram) {
const data = {
key: pram.key,
value: pram.value
}
return request({
url: '/admin/system/config/saveuniq',
method: 'POST',
params: data
})
}
export function configGetUniq(pram) {
const data = {
key: pram.key
}
return request({
url: '/admin/system/config/getuniq',
method: 'GET',
params: data
})
}

View File

@@ -0,0 +1,147 @@
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import request from '@/utils/request'
export function getFormConfigInfo(pram) {
const data = {
id: pram.id
}
return request({
url: '/admin/system/form/temp/info',
method: 'GET',
params: data
})
}
export function getFormConfigList(pram) {
const data = {
keywords: pram.keywords,
page: pram.page,
limit: pram.limit
}
return request({
url: '/admin/system/form/temp/list',
method: 'GET',
params: data
})
}
export function getFormConfigSave(pram) {
const data = {
content: pram.content,
info: pram.info,
name: pram.name
}
return request({
url: '/admin/system/form/temp/save',
method: 'POST',
data: data
})
}
export function getFormConfigEdit(pram) {
const params = { id: pram.id }
const data = {
content: pram.content,
info: pram.info,
name: pram.name
}
return request({
url: '/admin/system/form/temp/update',
method: 'POST',
params: params,
data: data
})
}
/**
* 系统通知列表
* @param pram
*/
export function notificationListApi(pram) {
const data = {
sendType: pram.sendType
//发送类型(1:通知会员,2:通知平台)
}
return request({
url: '/admin/system/notification/list',
method: 'GET',
params: data
})
}
/**
* 小程序订阅模板开关
* @param pram
*/
export function notificationRoutine(id) {
return request({
url: `/admin/system/notification/routine/switch/${id}`,
method: 'post',
})
}
/**
* 公众号模板开关
* @param pram
*/
export function notificationWechat(id) {
return request({
url: `/admin/system/notification/wechat/switch/${id}`,
method: 'post',
})
}
/**
* 发送短信开关
* @param pram
*/
export function notificationSms(id) {
return request({
url: `/admin/system/notification/sms/switch/${id}`,
method: 'post',
})
}
/**
* 通知详情
* @param pram
*/
export function notificationDetail(param) {
let data = {
detailType:param.type,
id:param.id
};
return request({
url: `/admin/system/notification/detail`,
method: 'get',
params:data
})
}
//admin/system/notification/detail
/**
* 修改通知
* @param pram
*/
export function notificationUpdate(param) {
let data = {
detailType:param.type,
id:param.id,
status:param.status,
tempId:param.tempId
};
return request({
url: `/admin/system/notification/update`,
method: 'post',
data
})
}

View File

@@ -0,0 +1,152 @@
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import request from '@/utils/request'
export function groupDelete(pram) {
const data = {
id: pram.id
}
return request({
url: '/admin/system/group/delete',
method: 'GET',
params: data
})
}
export function groupInfo(pram) {
const data = {
id: pram.id
}
return request({
url: '/admin/system/group/info',
method: 'GET',
params: data
})
}
export function groupList(pram) {
const data = {
keywords: pram.keywords,
page: pram.page,
limit: pram.limit
}
return request({
url: '/admin/system/group/list',
method: 'GET',
params: data
})
}
export function groupDataList(pram) {
const data = {
gid:pram.gid,
keywords: pram.keywords,
page: pram.page,
limit: pram.limit
}
return request({
url: '/admin/system/group/data/list',
method: 'GET',
params: data
})
}
export function groupSave(pram) {
const data = {
formId: pram.formId,
info: pram.info,
name: pram.name
}
return request({
url: '/admin/system/group/save',
method: 'POST',
params: data
})
}
export function groupEdit(pram) {
const data = {
formId: pram.formId,
info: pram.info,
name: pram.name,
id: pram.id
}
return request({
url: '/admin/system/group/update',
method: 'POST',
params: data
})
}
/**
* @description 页面设计 获取数据
*/
export function designListApi() {
return request.get(`/admin/page/layout/index`)
}
/**
* @description 页面设计商品Tab 获取数据
*/
export function goodDesignList(pram) {
const data = {
gid: pram.gid,
}
return request({
url: '/admin/system/group/data/list',
method: 'GET',
params: data
})
}
/**
* @description 页面设计 保存
*/
export function SaveDataApi(data, url) {
return request({
url: url,
method: 'POST',
data
})
}
/**
* @description 获取配置
*/
export function getDataApi(data) {
return request({
url: '/admin/page/layout/category/config',
method: 'GET',
data
})
}
/**
* @description 保存设置
*/
export function themeSave(params) {
return request({
url: `/admin/system/config/saveuniq`,
method: 'post',
params
})
}
/**
* @description 获取设置
*/
export function getTheme(params) {
return request({
url: `/admin/system/config/getuniq`,
method: 'get',
params
})
}

View File

@@ -0,0 +1,65 @@
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import request from '@/utils/request'
export function groupDataDelete(pram) {
const data = {
id: pram.id
}
return request({
url: '/admin/system/group/data/delete',
method: 'GET',
params: data
})
}
export function groupDataInfo(pram) {
const data = {
id: pram.id
}
return request({
url: '/admin/system/group/data/info',
method: 'GET',
params: data
})
}
export function groupDataList(pram) {
const data = {
gid: pram.gid,
keywords: pram.keywords,
status: pram.status, // 1=开启 2=关闭
page: pram.page,
limit: pram.limit
}
return request({
url: '/admin/system/group/data/list',
method: 'GET',
params: data
})
}
export function groupDataSave(pram) {
return request({
url: '/admin/system/group/data/save',
method: 'POST',
data: pram
})
}
export function groupDataEdit(pram, id) {
return request({
url: '/admin/system/group/data/update',
method: 'POST',
data: pram,
params: { id: id }
})
}

View File

@@ -0,0 +1,118 @@
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import request from '@/utils/request'
export function systemConfigCheck(pram) {
const data = {
name: pram.name
}
return request({
url: '/admin/system/config/check',
method: 'GET',
params: data
})
}
export function systemConfigInfo(pram) {
const data = {
formId: pram.id
}
return request({
url: '/admin/system/config/info',
method: 'GET',
params: data
})
}
export function systemConfigSave(pram) {
return request({
url: '/admin/system/config/save/form',
method: 'POST',
data: pram
})
}
/**
* 文件上传
* @param data
*/
export function fileFileApi(data, params) {
return request({
url: '/admin/upload/file',
method: 'POST',
params,
data
})
}
/**
* 图片上传
* @param data
*/
export function fileImageApi(data, params) {
return request({
url: '/admin/upload/image',
method: 'POST',
params,
data
})
}
/**
* 图片列表
* @param data
*/
export function fileListApi(params) {
return request({
url: '/admin/system/attachment/list',
method: 'get',
params
})
}
/**
* 图片列表 删除图片
* @param data
*/
export function fileDeleteApi(id) {
return request({
url: `/admin/system/attachment/delete/${id}`,
method: 'get'
})
}
/**
* 图片列表 移動分類
* @param data
*/
export function attachmentMoveApi(data) {
return request({
url: `/admin/system/attachment/move`,
method: 'post',
data
})
}
/**
* 微信上传图片
* @param data
*/
export function wechatUploadApi(data, params) {
return request({
url: `/admin/wechat/media/upload`,
method: 'post',
data,
params
})
}

View File

@@ -0,0 +1,196 @@
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import request from '@/utils/request'
export function getMenu() {
return request({
url: '/admin/system/role/testMenu',
method: 'GET'
})
}
export function adminDel(pram) {
const data = {
id: pram.id
}
return request({
url: '/admin/system/admin/delete',
method: 'GET',
params: data
})
}
export function adminInfo(pram) {
const data = {
id: pram.id
}
return request({
url: '/admin/system/admin/info',
method: 'GET',
params: data
})
}
export function adminList(params) {
return request({
url: '/admin/system/admin/list',
method: 'GET',
params
})
}
export function adminAdd(pram) {
const data = {
account: pram.account,
level: pram.level,
pwd: pram.pwd,
realName: pram.realName,
roles: pram.roles.join(','),
status: pram.status,
phone: pram.phone
}
return request({
url: '/admin/system/admin/save',
method: 'POST',
data: data
})
}
export function adminUpdate(pram) {
const data = {
account: pram.account,
level: pram.level,
pwd: pram.pwd,
roles:pram.roles,
realName: pram.realName,
status: pram.status,
id: pram.id,
isDel: pram.isDel
}
return request({
url: '/admin/system/admin/update',
method: 'POST',
data
})
}
/**
* 修改状态
* @param pram
*/
export function updateStatusApi(params) {
return request({
url: `/admin/system/admin/updateStatus`,
method: 'get',
params
})
}
/**
* 修改后台管理员是否接收状态
* @param pram
*/
export function updateIsSmsApi(params) {
return request({
url: `/admin/system/admin/update/isSms`,
method: 'get',
params
})
}
/**
* 权限规则菜单列表
* @param pram
*/
export function menuListApi(params) {
const data = {
menuType: params.menuType, //菜单类型:M-目录,C-菜单,A-按钮
name: params.name, //菜单名称
}
return request({
url: `/admin/system/menu/list`,
method: 'get',
params:data
})
}
/**
* 权限规则新增菜单
* @param data
*/
export function menuAdd(data) {
let systemMenuRequest = data;
return request({
url: `/admin/system/menu/add`,
method: 'post',
data:systemMenuRequest
})
}
/**
* 权限规则删除菜单
* @param data
*/
export function menuDelete(id) {
return request({
url: `/admin/system/menu/delete/${id}`,
method: 'post',
})
}
/**
* 权限规则菜单详情
* @param data
*/
export function menuInfo(id) {
return request({
url: `/admin/system/menu/info/${id}`,
method: 'get',
})
}
/**
* 权限规则菜单修改
* @param data
*/
export function menuUpdate(data) {
let systemMenuRequest = data;
return request({
url: `/admin/system/menu/update`,
method: 'post',
data:systemMenuRequest
})
}
/**
* 权限规则修改菜单显示状态
* @param data
*/
export function menuUpdateShowStatus(params) {
return request({
url: `/admin/system/menu/updateShowStatus`,
method: 'post',
params
})
}
//
/**
* 权限规则菜单详情
* @param data
*/
export function sensitiveListApi(params) {
return request({
url: `/admin/log/sensitive/list`,
method: 'get',
params
})
}

390
admin/src/api/user.js Normal file
View File

@@ -0,0 +1,390 @@
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import request from '@/utils/request'
export function login(data) {
return request({
url: '/admin/login',
method: 'post',
data
})
}
export function getInfo(token) {
return request({
url: '/admin/getAdminInfoByToken',
method: 'get',
params: { token }
})
}
export function logout() {
return request({
url: '/admin/logout',
method: 'get'
})
}
/**
* 会员管理 列表
* @param pram
*/
export function userListApi(params) {
return request({
url: `/admin/user/list`,
method: 'get',
params
})
}
/**
* 会员管理 修改
* @param pram
*/
export function userUpdateApi(params, data) {
return request({
url: `/admin/user/update`,
method: 'post',
params,
data
})
}
/**
* 会员管理等级 修改
* @param pram
*/
export function userLevelUpdateApi( data) {
return request({
url: `/admin/user/update/level`,
method: 'post',
data
})
}
/**
* 会员管理 详情
* @param pram
*/
export function userInfoApi(params) {
return request({
url: `/admin/user/info`,
method: 'get',
params
})
}
/**
* 会员管理 账户详情
* @param pram
*/
export function infobyconditionApi(params) {
return request({
url: `/admin/user/infobycondition`,
method: 'get',
params
})
}
/**
* 会员管理 账户详情top数据
* @param pram
*/
export function topdetailApi(params) {
return request({
url: `/admin/user/topdetail`,
method: 'get',
params
})
}
/**
* 会员管理 批量设置分组
* @param pram
*/
export function groupPiApi(params) {
return request({
url: `/admin/user/group`,
method: 'post',
params
})
}
/**
* 会员管理 批量设置标签
* @param pram
*/
export function tagPiApi(params) {
return request({
url: `/admin/user/tag`,
method: 'post',
params
})
}
/**
* 会员管理 积分余额
* @param pram
*/
export function foundsApi(params) {
return request({
url: `/admin/user/operate/founds`,
method: 'get',
params
})
}
/**
* 会员管理 删除
* @param pram
*/
export function userDeleteApi(params) {
return request({
url: `/admin/user/delete`,
method: 'get',
params
})
}
/**
* 会员等级 列表
* @param pram
*/
export function levelListApi() {
return request({
url: `/admin/system/user/level/list`,
method: 'get'
})
}
/**
* 会员等级 新增
* @param pram
*/
export function levelSaveApi(data) {
return request({
url: `/admin/system/user/level/save`,
method: 'post',
data
})
}
/**
* 会员等级 编辑
* @param pram
*/
export function levelUpdateApi(params, data) {
return request({
url: `/admin/system/user/level/update/${params}`,
method: 'post',
// params,
data
})
}
/**
* 会员等级 详情
* @param pram
*/
export function levelInfoApi(params) {
return request({
url: `/admin/system/user/level/info`,
method: 'get',
params
})
}
/**
* 会员等级 删除
* @param pram
*/
export function levelDeleteApi(id) {
return request({
url: `/admin/system/user/level/delete/${id}`,
method: 'post'
})
}
/**
* 会员等级 是否显示
* @param pram
*/
export function levelUseApi(data) {
return request({
url: `/admin/system/user/level/use`,
method: 'post',
data
})
}
/**
* 会员标签 列表
* @param pram
*/
export function tagListApi(params) {
return request({
url: `/admin/user/tag/list`,
method: 'get',
params
})
}
/**
* 会员标签 新增
* @param pram
*/
export function tagSaveApi(data) {
return request({
url: `/admin/user/tag/save`,
method: 'post',
data
})
}
/**
* 会员标签 编辑
* @param pram
*/
export function tagUpdateApi(params, data) {
return request({
url: `/admin/user/tag/update`,
method: 'post',
params,
data
})
}
/**
* 会员标签 详情
* @param pram
*/
export function tagInfoApi(params) {
return request({
url: `/admin/user/tag/info`,
method: 'get',
params
})
}
/**
* 会员标签 删除
* @param pram
*/
export function tagDeleteApi(params) {
return request({
url: `/admin/user/tag/delete`,
method: 'get',
params
})
}
/**
* 会员分组 列表
* @param pram
*/
export function groupListApi(params) {
return request({
url: `/admin/user/group/list`,
method: 'get',
params
})
}
/**
* 会员分组 新增
* @param pram
*/
export function groupSaveApi(data) {
return request({
url: `/admin/user/group/save`,
method: 'post',
data
})
}
/**
* 会员分组 编辑
* @param pram
*/
export function groupUpdateApi(params, data) {
return request({
url: `/admin/user/group/update`,
method: 'post',
params,
data
})
}
/**
* 会员分组 详情
* @param pram
*/
export function groupInfoApi(params) {
return request({
url: `/admin/user/group/info`,
method: 'get',
params
})
}
/**
* 会员分组 删除
* @param pram
*/
export function groupDeleteApi(params) {
return request({
url: `/admin/user/group/delete`,
method: 'get',
params
})
}
/**
*获取登录页图片
*/
export function getLoginPicApi() {
return request({
url: `/admin/getLoginPic`,
method: 'get'
})
}
/**
* @description 验证码
*/
export function captchaApi() {
return request({
url: `/admin/validate/code/get`,
method: 'get'
})
}
/**
* @description 修改上级推广人
*/
export function updateSpreadApi(data) {
return request({
url: `/admin/user/update/spread`,
method: 'post',
data
})
}
/**
* @description 修改手机号
*/
export function updatePhoneApi(params) {
return request({
url: `/admin/user/update/phone`,
method: 'get',
params
})
}

401
admin/src/api/wxApi.js Normal file
View File

@@ -0,0 +1,401 @@
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import request from '@/utils/request'
export function menuCreate(data) {
return request({
url: '/admin/wechat/menu/public/create',
method: 'post',
params: data
})
}
export function menuDelete(data) {
return request({
url: '/admin/wechat/menu/public/delete',
method: 'post',
params: data
})
}
export function menuInfo(pram) {
const data = {
isAsync: pram.isAsync
}
return request({
url: '/admin/wechat/menu/public/get',
method: 'post',
params: data
})
}
/**
* 微信模板消息 列表
* @param pram
*/
export function wechatTemplateListApi(params) {
return request({
url: `/admin/wechat/template/list`,
method: 'get',
params
})
}
/**
* 微信模板消息 新增
* @param pram
*/
export function wechatTemplateSaveApi(data) {
return request({
url: `/admin/wechat/template/save`,
method: 'post',
data
})
}
/**
* 微信模板消息 编辑
* @param pram
*/
export function wechatTemplateUpdateApi(id, data) {
return request({
url: `/admin/wechat/template/update/${id}`,
method: 'post',
data
})
}
/**
* 微信模板消息 详情
* @param pram
*/
export function wechatTemplateInfoApi(id) {
return request({
url: `/admin/wechat/template/info/${id}`,
method: 'get'
})
}
/**
* 微信模板消息 修改状态
* @param pram
*/
export function wechatTemplateStatusApi(id, params) {
return request({
url: `/admin/wechat/template/update/status/${id}`,
method: 'post',
params
})
}
/**
* 微信模板消息 删除
* @param pram
*/
export function wechatTemplateDeleteApi(id) {
return request({
url: `/admin/wechat/template/delete/${id}`,
method: 'get'
})
}
/**
* 关键字回复 列表
* @param pram
*/
export function replyListApi(params) {
return request({
url: `/admin/wechat/keywords/reply/list`,
method: 'get',
params
})
}
/**
* 关键字回复 新增
* @param pram
*/
export function replySaveApi(data) {
return request({
url: `/admin/wechat/keywords/reply/save`,
method: 'post',
data
})
}
/**
* 关键字回复 修改状态
* @param pram
*/
export function replyStatusApi(params) {
return request({
url: `/admin/wechat/keywords/reply/status`,
method: 'post',
params
})
}
/**
* 关键字回复 编辑
* @param pram
*/
export function replyUpdateApi(params, data) {
return request({
url: `/admin/wechat/keywords/reply/update`,
method: 'post',
params,
data
})
}
/**
* 关键字回复 详情
* @param pram
*/
export function replyInfoApi(params) {
return request({
url: `/admin/wechat/keywords/reply/info`,
method: 'get',
params
})
}
/**
* 关键字回复 删除
* @param pram
*/
export function replyDeleteApi(params) {
return request({
url: `/admin/wechat/keywords/reply/delete`,
method: 'get',
params
})
}
/**
* 关键字查询数据
* @param pram
*/
export function keywordsInfoApi(params) {
return request({
url: `/admin/wechat/keywords/reply/info/keywords`,
method: 'get',
params
})
}
/**
* 微信菜单 获取数据
* @param pram
*/
export function wechatMenuApi(params) {
return request({
url: `/admin/wechat/menu/public/get`,
method: 'get',
params
})
}
/**
* 微信菜单 新增
* @param pram
*/
export function wechatMenuAddApi(data) {
return request({
url: `/admin/wechat/menu/public/create`,
method: 'post',
data
})
}
/**
* 小程序 公共模板列表
*/
export function publicTempListApi(params) {
return request({
url: `/admin/wechat/program/public/temp/list`,
method: 'get',
params
})
}
/**
* 小程序 模版所属类目
*/
export function categoryApi() {
return request({
url: `/admin/wechat/program/category`,
method: 'get'
})
}
/**
* 小程序 通过微信模板tid获取关键字列表
*/
export function getWeChatKeywordsByTidApi(params) {
return request({
url: `/admin/wechat/program/getWeChatKeywordsByTid`,
method: 'get',
params
})
}
/**
* 小程序 模板详情,主要是获取左侧标题
*/
export function publicTempInfoApi(params) {
return request({
url: `/admin/wechat/program/public/temp/info`,
method: 'get',
params
})
}
/**
* 小程序 我的模板列表
*/
export function myTempListApi(params) {
return request({
url: `/admin/wechat/program/my/temp/list`,
method: 'get',
params
})
}
/**
* 小程序 我的模板详情
*/
export function myTempInfoApi(params) {
return request({
url: `/admin/wechat/program/my/temp/info`,
method: 'get',
params
})
}
/**
* 小程序 模板新增
*/
export function myTempSaveApi(data) {
return request({
url: `/admin/wechat/program/my/temp/save`,
method: 'post',
data
})
}
/**
* 小程序 模板修改
*/
export function myTempUpdateApi(params, data) {
return request({
url: `/admin/wechat/program/my/temp/update`,
method: 'post',
params,
data
})
}
/**
* 小程序 我的模板修改状态
*/
export function myTempStatusApi(params) {
return request({
url: `/admin/wechat/program/my/temp/update/status`,
method: 'get',
params
})
}
/**
* 小程序 我的模板修改应用场景
*/
export function myTempTypeApi(params) {
return request({
url: `/admin/wechat/program/my/temp/update/type`,
method: 'get',
params
})
}
/**
* 获取微信sdk配置
* @returns {*}
*/
export function getWechatConfig() {
return request({
url: `/admin/wechat/config`,
method: 'get',
params:{ url: encodeURIComponent(location.href.split('#')[0]) } // for Test
})
}
/**
* 微信授权登录
* @returns {*}
*/
export function wechatAuth(code) {
return request({
url: `/admin/authorize/login`,
method: 'get',
params: { code }
})
}
/**
* 与微信解绑账号
*/
export function unbindApi() {
return request({
url: `/admin/unbind`,
method: 'get'
})
}
/**
* 一键同步我的模板到小程序
*/
export function tempAsyncApi() {
return request({
url: `/admin/wechat/program/my/temp/async`,
method: 'get'
})
}
/**
* 公众号模板消息同步
*/
export function wechatAsyncApi() {
return request({
url: `/admin/wechat/template/whcbqhn/sync`,
method: 'post'
})
}
/**
* 小程序模板消息同步
*/
export function routineAsyncApi() {
return request({
url: `/admin/wechat/template/routine/sync`,
method: 'post'
})
}
/**
* 小程序源码下载
*/
export function wechatCodeDownload() {
return request({
url: `/admin/wechat/code/download`,
method: 'get'
})
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

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