diff --git a/README.md b/README.md index 830eb1fd6..102c30f92 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ CRMEB技术团队(官网:www.crmeb.com)历经4年时间匠心之作!系统采用前后端分离技术,基于TP6+Uni-app框架开发;客户移动端采用uni-app开发,管理后台前端使用iviewUI开发。系统支持微信公众号端、微信小程序端、H5端、PC端多端账号同步,可快速打包生成APP; - 赋能开发者,减少重复造轮子;系统支持自动检查安装环境一键安装部署,使用简单方便;围绕方便二次开发,系统内置强大灵活的权限管理,可以控制到每一个菜单;通过内置组合数据,管理碎片化数据,系统配置快速添加系统配置参数,内置钩子,方便二开;后台应用form-builder PHP快速生成现代化表单;并提供详细的使用文档、开发文档、接口文档、数据字典等相关文档;及十几个技术交流群、技术论坛答疑;帮助更多开发者快速上手,节省开发时间,提升开发效率;助力企业实现数字化经营! + 赋能开发者,减少重复造轮子;系统支持自动检查安装环境一键安装部署,使用简单方便;围绕方便二次开发,系统内置强大灵活的权限管理,可以控制到每一个菜单;通过内置组合数据,管理碎片化数据,系统配置快速添加系统配置参数,所有用户操作地方都内置钩子,代码严格分控制层(中间件、路由)、Services层、Dao层、Model层;后台应用form-builder PHP快速生成现代化表单;并提供详细的使用文档、开发文档、接口文档、数据字典等相关文档;及十几个技术交流群、技术论坛答疑;让您二开无忧,帮助更多开发者快速上手,节省开发时间,提升开发效率;助力企业实现数字化经营!
宽屏预览
@@ -106,6 +106,7 @@ Redis
15.支持队列降低流量高峰,解除耦合,高可用;
16.一键安装自动检查系统环境一键安装;
17.移动端使用uni-app进行开发,方便编译成各种格式的代码;
+ 18.严格代码规范,层次分明
~~~
## 页面展示
diff --git a/doc/.keep b/doc/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/template/admin/README.md b/template/admin/README.md
index 93ccbd944..f1152352d 100644
--- a/template/admin/README.md
+++ b/template/admin/README.md
@@ -68,5 +68,515 @@ Copyright (c) 2016-present, iView
side-menu.vue(一级导航展开以及收缩样式)
side-menu-item.vue(多级导航张开样式)
2、src/components/main/main.vue(整个框架都引在main中)
+# CRMEB Admin
+## 开发规范
+统一使用ES6 语法
+方法注释
+/*
+* th => 表头
+* data => 数据
+* fileName => 文件名
+* fileType => 文件类型
+* sheetName => sheet页名
+ */
+ export default function toExcel ({ th, data, fileName, fileType, sheetName })
+ 行注释 //
+
+### 命名
+
+页面目录 文件夹命名格式骆驼式命名法,例如:用户列表 userList
+例如:商品模块
+product 商品
+├─ product 商品管理
+├─productList 商品管理目录
+├- index.vue 首页
+├─ components 组建
+├─ tableFrom.vue
+├─ tableList.vue
+├─ handle 操作功能页面目录
+├─ delete.vue
+├─productCategory 商品分类目录
+├─ index.vue 商品分类首页
+
+页面命名、组建、文件夹 命名格式小驼峰命名法,例如:用户列表 userList
+
+类名函数命名 大驼峰式 例如:addUser
+变量命名 小驼峰式 例如:user 或者 userInfo _userinfo user-info
+常量 采用全大些下划线命名 例如:VUE_APP_API_URl
+
+### 文件管理规范
+pages 页面模块必须建文件夹区分;
+api 接口一个模块一个文件;
+components 一个组建一个文件夹;
+plugins 插件一个插件一个文件夹;
+vuex 路由状态管理,一个模块在modules 中建一个文件;
+router 一个模块一个模块在modules 中建一个文件;
+style 样式尽量采用iView自带组建,common.less 系统通用样式不要轻易动;
+style中style.css自定义全局样式;
+utils 自定义工具js 独立命名,一般不用新建文件夹;
+## 模块命名
+~~~
+├─ account 有关登录页
+├─ app 应用(小程序模板消息、公众号)
+├─ cms 文章管理
+├─ finance 财务管理
+├─ index 主页
+├─ marketing 优惠券、积分
+├─ notify 短信账户、短信购买、短信模板
+├─ order 系统订单管理
+├─ product 商品管理
+├─ setting 系统设置、运费模板、可视化等
+├─ system 开发配置、安全维护等
+└─ user 用户管理
+~~~
+### 页面说明
+主要目录结构及说明:
+```
+├── public # 静态资源
+│ ├── favicon.ico # favicon图标
+│ └── index.html # html 模板
+├── src # 源代码
+│ ├── api # 所有请求
+│ │ └──account.js # 有关登录的接口
+│ │ └──agent.js # 有关分销的接口
+│ │ └──app.js # 有关应用(小程序、公众号)的接口
+│ │ └──cms.js # 有关内容(文章管理、分类)的接口
+│ │ └──common.js # 表格删除、获取消息提醒的接口
+│ │ └──finance.js # 有关财务的接口
+│ │ └──index.js # 有关首页的接口
+│ │ └──marketing.js # 有关营销的接口
+│ │ └──order.js # 有关订单的接口
+│ │ └──product.js # 有关商品的接口
+│ │ └──setting.js # 有关设置的接口
+│ │ └──system.js # 有关维护(开发配置、安全维护)的接口
+│ │ └──systemAdmin.js # 有关管理员的接口(设置--管理权限--管理员列表)
+│ │ └──systemMenus.js # 有关权限规则的接口(设置--管理权限--权限规则)
+│ │ └──uploadPictures.js # 有关上传图片附件的接口
+│ │ └──user.js # 有关会员的接口
+│ ├── assets # 图片、svg 等静态资源
+│ ├── components # 公共组件
+│ │ └──cards # 统计
+│ │ └──copyright # 页面footer的底部声明
+│ │ └──customerInfo # 选择用户
+│ │ └──echarts # 统计图
+│ │ └──freightTemplate # 运费模板
+│ │ └──from # 生成表单
+│ │ └──goodsList # 商品列表
+│ │ └──iconFrom # 导航添加图标
+│ │ └──link # a连接
+│ │ └──mde # 多文本框
+│ │ └──modelSure # 确认模态框
+│ │ └──newsCategory # 图文管理页
+│ │ └──publicSearchFrom # 头部搜索(没用到)
+│ │ └──quill # 编辑器(没用到)
+│ │ └──referrerInfo # 推荐人信息
+│ │ └──searchFrom # 订单页的搜索
+│ │ └──sendCoupons # 发送优惠券
+│ │ └──systemStore # 添加提货点
+│ │ └──ueditorFrom # 编辑器组件(供参考,没用到,主要用安装组件--vue-ueditor-wrap)
+│ │ └──uploadPictures # 上传图片
+│ │ └──uploadVideo # 上传视频(用于商品编辑器里面)
+│ ├── i18n # 多语言
+│ ├── layouts # 布局
+│ │ └──header-breadcrumb # 头部面包屑样式
+│ │ └──header-collapse # 头部控制折叠面板的图标
+│ │ └──header-fullscreen # 头部控制是否全屏的图标
+│ │ └──header-i18n # 头部控制多语言
+│ │ └──header-log # 头部控制日志异常图标
+│ │ └──header-logo # 头部logo
+│ │ └──header-notice # 头部提示消息
+│ │ └──header-reload # 头部控制刷新的图标
+│ │ └──header-search # 头部搜索
+│ │ └──header-setting # 设置页面风格
+│ │ └──header-user # 我的(个人中心、退出登录)
+│ │ └──menu-head #
+│ │ └──menu-side # 侧边导航栏
+│ │ └──tabs # 头部的横向导航标签
+│ │ └──mixins # 用于横向滚动获取title的一个js
+│ ├── libs # 公共方法
+│ ├── menu # 菜单配置
+│ ├── mixins # 通用混合
+│ ├── mock # 数据模拟
+│ ├── pages # 所有页面
+│ │ └──account # 有关登录页
+│ │ └──login # 登录
+│ │ └──register # 注册
+│ │ └──agent # 分销
+│ │ └──agentManage # 分销员管理
+│ │ └──app # 应用
+│ │ └──routine # 小程序模板消息
+│ │ └──wechat # 公众号
+│ │ └──menus # 微信菜单
+│ │ └──newsCategory # 图文管理
+│ │ └──save # 图文添加
+│ │ └──reply # 自动回复
+│ │ └──follow # 微信关注回复/无效关键词回复
+│ │ └──keyword # 关键字回复
+│ │ └──user # 用户
+│ │ └──tag # 用户标签
+│ │ └──user # 微信用户
+│ │ └──message # 用户行为记录
+│ │ └──cms # 内容
+│ │ └──addArticle # 添加文章/编辑文章
+│ │ └──article # 文章管理
+│ │ └──articleCategory # 文章分类
+│ │ └──finance # 财务
+│ │ └──commission # 佣金记录
+│ │ └──financialRecords # 财务记录
+│ │ └──bill # 资金记录
+│ │ └──recharge # 充值记录
+│ │ └──userExtract # 提现申请
+│ │ └──index # 主页
+│ │ └──marketing # 营销
+│ │ └──storeBargain # 砍价商品
+│ │ └──storeCombination # 拼团管理
+│ │ └──combinaList # 拼团列表
+│ │ └──create # 添加拼团商品
+│ │ └──index # 拼团商品
+│ │ └──storeCoupon # 优惠券制作
+│ │ └──storeCouponIssue # 优惠券列表
+│ │ └──storeCouponUser # 会员领取记录
+│ │ └──storeSeckill # 秒杀管理
+│ │ └──index # 秒杀商品
+│ │ └──create # 添加秒杀商品
+│ │ └──userPoint # 积分日志
+│ │ └──notify # 短信设置
+│ │ └──smsConfig # 短信账户
+│ │ └──smsPay # 短信购买
+│ │ └──smsTemplateApply # 短信模板
+│ │ └──order # 订单管理
+│ │ └──product # 商品
+│ │ └──productAdd # 添加商品
+│ │ └──productAttr # 商品规格
+│ │ └──productClassify # 商品分类
+│ │ └──productList # 商品管理
+│ │ └──productReply # 商品评论管理
+│ │ └──setting # 设置
+│ │ └──cityDada # 城市数据
+│ │ └──clerkList # 核销员管理
+│ │ └──freight # 物流公司
+│ │ └──setSystem # 系统设置
+│ │ └──shippingTemplates # 运费模板
+│ │ └──storeList # 提货点列表
+│ │ └──storeService # 客服管理
+│ │ └──systemAdmin # 管理员列表
+│ │ └──systemMenus # 权限规则
+│ │ └──systemRole # 身份管理
+│ │ └──systemStore # 门店设置
+│ │ └──user # 个人中心
+│ │ └──verifyOrder # 核销订单
+│ │ └──system # 维护
+│ │ └──auth # 商业授权
+│ │ └──clear # 刷新缓存
+│ │ └──configTab # 配置
+│ │ └──index # 配置分类
+│ │ └──list # 配置列表
+│ │ └──error # 错误页
+│ │ └──403 # 403
+│ │ └──404 # 404
+│ │ └──500 # 500
+│ │ └──group # 组合数据
+│ │ └──maintain
+│ │ └──systemCleardata # 清除数据
+│ │ └──systemDatabackup # 数据备份
+│ │ └──systemFile # 文件校验
+│ │ └──opendir # 文件管理
+│ │ └──systemLog # 系统日志
+│ │ └──user # 会员
+│ │ └──group # 会员分组
+│ │ └──label # 会员标签
+│ │ └──level # 会员等级
+│ │ └──list # 会员管理
+│ ├── plugins # 插件
+│ ├── router # 路由配置
+│ │ └──modules # 页面路由模块
+│ │ └──agent.js # 有关分销
+│ │ └──app.js # 有关应用(小程序、公众号)
+│ │ └──cms.js # 有关内容(文章管理、文章分类)
+│ │ └──echarts.js # 有关统计
+│ │ └──finance.js # 有关财务
+│ │ └──index.js # 有关主页
+│ │ └──marketing.js # 有关营销
+│ │ └──order.js # 有关订单
+│ │ └──product.js # 有关商品
+│ │ └──setting.js # 有关设置
+│ │ └──system.js # 有关维护
+│ │ └──user.js # 有关会员
+│ │ └──index.js # 路由的导出以及拦截处理
+│ │ └──routes.js # 路由的汇总
+│ ├── store # Vuex 状态管理
+│ ├── utils # js工具
+│ │ └──authLapse.js # 授权提示框
+│ │ └──modalForm.js # 表单模态框
+│ │ └──videoCloud.js # 上传云储存视频(七牛、腾讯、阿里)
+│ │ └──validate.js # 将时间戳转化成时间;
+│ │ └──public.js # 询问模态框;
+│ ├── styles # 样式管理
+│ ├── setting.env.js # 开发配置文件
+│ ├── setting.js # 业务配置文件
+│ ├── main.js # 入口文件 加载组件 初始化等
+│ └── App.vue # 入口页面
+├── tests # 测试管理
+├── alias.config.js # 别名,仅用于配置 WebStorm 识别别名,无实际用处
+├── babel.config.js # babel 配置
+├── jest.config.js # jest 配置
+├── package.json # package.json
+└── vue.config.js # Vue CLI 3 配置
+```
+### 调试
+```sh
+npm run serve
+```
+### 打包
+```sh
+npm run build
+```
+### 配置说明 `src/setting.js`
+```sh
+VUE_APP_API_URL#接口地址,例如 http://www.abc.com/api
+VUE_APP_WS_URL #长连接服务地址,例如 ws://www.abc.com:20003
+```
+### 放置目录
+请把打包好的页面文件上传到public/admin目录中
+请把打包好的页面文件上传到public/admin目录中
+
+### 页面路径文档
+
+| | | | | |
+| --- | --- | --- | --- | --- |
+| 页面 | 页面地址 | 路径 | 带参路径例子 | 参数解释 |
+| 主页 | @/pages/index/index | /admin/home | | |
+| 登录 | @/pages/account/login |/admin/login| | |
+| 微信菜单 | @/pages/app/wechat/menus/index| /admin/app/wechat/setting/menus/index | | |
+| 图文管理| @/pages/app/wechat/newsCategory/index | /admin/app/wechat/news_category/index | | |
+| 图文添加 |@/pages/app/wechat/newsCategory/save | /admin/app/wechat/news_category/save/:id? |/admin/app/wechat/news_category/save/0|id:0添加;非0编辑(图文id)|
+|微信关注回复|@/pages/app/wechat/reply/follow| /admin/app/wechat/reply/follow/subscribe|||
+| 关键字回复|@/pages/app/wechat/reply/keyword|/admin/app/wechat/reply/keyword|||
+|关键字添加|@/pages/app/wechat/reply/follow|/admin/app/wechat/reply/keyword/save/:id?|/admin/app/wechat/reply/keyword/save/0|id:0添加;非0编辑(关键字id)|
+| 无效关键词回复 |@/pages/app/wechat/reply/follow|/admin/app/wechat/reply/index/default| | |
+| 微信用户 | @/pages/app/wechat/user/user | /admin/app/wechat/wechat_user/user/index | | |
+| 用户标签 | @/pages/app/wechat/user/tag | /admin/app/wechat/wechat_user/user/tag | | |
+|用户分组 | @/pages/app/wechat/user/tag | /admin/app/wechat/wechat_user/user/group | | |
+| 用户行为记录 | @/pages/app/wechat/user/message | /admin/app/wechat/wechat_user/user/message | | |
+| 微信模板消息 | @/pages/app/routine/routineTemplate/index | /admin/app/wechat/setting/template/index | | |
+|小程序模板消息|@/pages/app/routine/routineTemplate/index|/admin/app/routine/routine_template/index| | |
+|文章管理|@/pages/cms/article/index|/admin/cms/article/index| | |
+| 文章分类|@/pages/cms/articleCategory/index|/admin/cms/article_category/index| | |
+| 文章添加|@/pages/cms/addArticle/index|/admin/cms/article/add_article/:id?|/admin/cms/article/add_article/2|id:没有id为添加;有id为编辑(文章id)|
+| 充值记录|@/pages/finance/financialRecords/recharge|/admin/finance/user_recharge/index|||
+|资金记录|@/pages/finance/financialRecords/bill |/admin/finance/finance/bill |||
+|优惠券制作|@/pages/marketing/storeCoupon/index|/admin/marketing/store_coupon/index|||
+|优惠券列表|@/pages/marketing/storeCouponIssue/index|/admin/marketing/store_coupon_issue/index| | |
+|会员领取记录|@/pages/marketing/storeCouponUser/index|/admin/marketing/store_coupon_user/index|||
+| 积分日志 | @/pages/marketing/userPoint/index | /admin/marketing/user_point/index | | |
+| 短信账户 | @/pages/notify/smsConfig/index | /admin/setting/sms/sms_config/index | | |
+| 短信模板 | @/pages/notify/smsTemplateApply/index | /admin/setting/sms/sms_template_apply/index | | |
+| 短信购买 | @/pages/notify/smsPay/index | /admin/setting/sms/sms_pay/index | | |
+| 公共短信模板 | @/pages/notify/smsTemplateApply/index | /admin/setting/sms/sms_template_apply/commons | | |
+| 订单管理 | @/pages/order/orderList/index | /admin/order/list | | |
+| 收银订单 | @/pages/order/offline/index | /admin/order/offline | | |
+| 发票管理 | @/pages/order/invoice/index | /admin/order/invoice/list | | |
+| 商品管理 | @/pages/product/productList | /admin/product/product_list | | |
+| 商品分类 | @/pages/product/productClassify | /admin/product/product_classify | | |
+| 商品添加 | @/pages/product/productAdd |/admin/product/add_product/:id? | /admin/product/add_product/84| id:没有id为添加;有id为编辑(商品id)|
+| 商品评论 | @/pages/product/productReply |/admin/product/product_reply/:id?|/admin/product/product_reply/84 | id:没有id为商品评论页;有id为查看评论(商品id) |
+| 属性规则 | @/pages/product/productAttr | /admin/product/product_attr | | |
+| 城市数据 | @/pages/setting/cityDada/index | /admin/setting/freight/city/list| | |
+| 配送员列表 | @/pages/setting/deliveryService/index | /admin/setting/delivery_service/index| | |
+| 页面设计 | @/pages/setting/devise/index | /admin/setting/pages/diy| | |
+| 页面设计列表 | @/pages/setting/devise/list | /admin/setting/pages/devise| | |
+| 页面链接 | @/pages/setting/devise/links | /admin/setting/pages/links| | |
+| 物流公司 | @/pages/setting/freight/index | /admin/setting/freight/express/index | | |
+| 积分配置 | @/pages/setting/setSystem/index |/admin/marketing/integral/system_config/3/11 | | |
+| 运费模板 | @/pages/setting/shippingTemplates/index |/admin/setting/freight/shipping_templates/list| | |
+| 管理员管理 | @/pages/setting/systemAdmin/index | /admin/setting/system_admin/index | | |
+| 权限规则 | @/pages/setting/systemMenus/index | /admin/setting/system_menus/index | | |
+| 身份管理 | @/pages/setting/systemRole/index | /admin/setting/system_role/index | | |
+| 个人中心 | @/pages/setting/user/index |/admin/system/user| | |
+| 核销订单 | @/pages/setting/verifyOrder/index |/admin/setting/merchant/system_verify_order/index| | |
+| 刷新缓存 | @/pages/system/clear/index |/admin/system/maintain/clear/index| | |
+| 配置分类 | @/pages/system/configTab/index |/admin/system/config/system_config_tab/index| | |
+| 配置列表 | @/pages/system/configTab/list |/admin/system/config/system_config_tab/list/:id?| /admin/system/config/system_config_tab/list/22 | id:配置id |
+| 403 | @/pages/system/error/403 | /admin/403 | |
+| 500 | @/pages/system/error/500 | /admin/500 | |
+| 404 | @/pages/system/error/404 | /admin/* | |
+| 系统日志 | @/pages/system/maintain/systemLog/index |/admin/system/maintain/system_log/index| | |
+| 文件校验 | @/pages/system/maintain/systemFile/index |/admin/system/maintain/system_file/index| | |
+| 清除数据 | @/pages/system/maintain/systemCleardata/index |/admin/system/maintain/system_cleardata/index| | |
+| 数据备份 | @/pages/system/maintain/systemDatabackup/index |/admin/system/maintain/system_databackup/index| | |
+| 文件管理 | @/pages/system/maintain/systemFile/opendir |/admin/system/maintain/system_file/opendir| | |
+| 在线更新 | @/pages/system/systemUpgradeclient/index |/admin/system/system_upgradeclient/index| | |
+| 数据配置 | @/pages/system/group/list |/admin/system/system_group_data| | |
+| 会员分组 | @/pages/user/group/index |/admin/user/group| | |
+| 会员标签 | @/pages/user/label/index |/admin/user/label| | |
+| 会员管理 | @/pages/user/list/index |/admin/user/list| | |
+| 上传图片| @/components/uploadPictures/widgetImg |/admin/widget.images/index.html| | |
+| 上传图标| @/components/iconFrom/index |/admin/widget.widgets/icon.html| | |
+| 选择商品| @/components/goodsList/index |/admin/store.StoreProduct/index.html| | |
+| 选择用户| @/components/customerInfo/index |/admin/system.User/list.html| | |
+| 上传视频| @/components/uploadVideo/index |/admin/widget.video/index.html| | |
+
+### 前端添加页面
+```sh
+一、新路由模块添加:
+ 1、在src/router/modules里面路由模块js文件;
+ 例如:
+ import BasicLayout from '@/components/main'
+
+ const pre = 'order_'
+
+ export default {
+ path: '/admin/order',
+ name: 'order',
+ header: 'order',
+ redirect: {
+ name: `${pre}list`
+ },
+ component: BasicLayout,
+ children: [
+ {
+ path: 'list',
+ name: `${pre}list`,
+ meta: {
+ auth: ['admin-order-storeOrder-index'],
+ title: '订单管理'
+ },
+ component: () => import('@/pages/order/orderList/index')
+ }
+ ]
+ }
+ 2、在src/router/routers.js里面引用以及导出;
+ 例如:
+ import order from './modules/order'
+ const frameIn = [
+ order
+ ]
+ // 导出需要显示菜单的
+ export const frameInRoutes = frameIn
+
+ // 重新组织后导出
+ export default [
+ ...frameIn
+ ]
+
+二、添加动态菜单:
+ 1、设置 > 管理权限 > 权限规则
+ 2、侧边导航设置项:
+ path:完整的页面路径
+ title:菜单标题
+ icon:(选填)菜单图标,该选项仅支持 iView 内置 icon
+```
+### vuex使用
+```sh
+本项目在src/store/module文件下建立你所要储存数据的js模块;
+ 例如(user.js):
+ export default {
+ namespaced: true,
+ state: {
+ pageName: ''
+ },
+ mutations: {
+ setPageName(state,id){
+ state.pageName = id
+ }
+ },
+ actions: {
+
+ }
+ }
+在src/store/index.js文件引用;
+ 例如:
+ import Vue from 'vue'
+ import Vuex from 'vuex'
+ import VuexPersistence from 'vuex-persist'
+ import user from './module/user'
+ Vue.use(Vuex)
+ export default new Vuex.Store({
+ state: {
+ },
+ mutations: {
+ },
+ actions: {
+ },
+ //这块代码为持久化储存,需要安装插件VuexPersistence
+ plugins:[
+ new VuexPersistence({
+ reducer: state => ({
+ user: state.user, //这个就是存入localStorage的值
+ }),
+ storage: window.localStorage
+ }).plugin
+ ],
+ modules: {
+ user
+ }
+ })
+在其他页面:
+ 传值:this.$store.commit('userInfo/setPageName', row.template_name);
+ 引用:this.$store.state.userInfo.pageName;
+
+注:vuex有多种传值以及调用方法;具体的可以参考vuex的官方文档;
+```
+### Cookies储存封装函数
+```sh
+目录:src/libs/util.js;
+例如:
+ import { getCookies, setCookies,removeCookies } from '@/libs/util'
+储存数据:setCookies('token','kfhskd')
+获取数据:getCookies('token')
+移除数据:removeCookies('token')
+```
+### 可视化使用
+```sh
+可视化页面目录:src/pages/setting/devise/index.vue;
+页面分3个模块:移动端首页、首页的可视化编辑、项目链接;
+ 1、移动端首页:使用iframe引用前台页面;
+ 例如:
+
+ 2、可视化编辑:
+ src/components/rightConfig/index.vue页面为主要操作的容器;所有小组件使用动态添加的方法引用到此页面;
+ 例如:
+
+