JAVA V6 多商户商城 开发文档——管理端前端

新手入门​

niucloud 采用前后端分离技术,管理端前端使用 element-plus+typescript+vue3.0 开发,系统没有二次封装,开发者只要了解了 elementplus 的组件就可以直接在 niucloud 中开发,简单快捷。同时插件分离,方便扩展

前期准备​

开发者需要安装 nodejs >18.0 版本,配置接口访问地址

node.js 下载安装步骤参考本地开发环境搭建中 node.js 安装教程

bash

复制代码
NODE_ENV = 'development'

# api请求地址,注意后台地址需要加上adminapi
VITE_APP_BASE_URL='http://127.0.0.1:8080/adminapi/'

# 图片服务器地址
VITE_IMG_DOMAIN='http://127.0.0.1:8080'

# 请求时header中token的参数名
VITE_REQUEST_HEADER_TOKEN_KEY='token'

# 请求时header中站点的参数名
VITE_REQUEST_HEADER_SITEID_KEY='site-id'

安装依赖,启动项目运行​

打开源码目录,路径切换到根目录/admin,在路径中输入 cmd ,回车

运行 node 命令 npm install,安装依赖

bash

复制代码
npm install

运行 node 命令 npm run dev,启动项目

bash

复制代码
npm run dev

打开系统后台​

如果显示连接不通,说明接口地址配置错误,需要检查地址是否正确或者项目后台是否开启

配置接口地址正确后,启动,系统默认初始账号 admin,初始密码123456

管理端前端目录结构​

niucloud 整体与 elementplus 相同,只是增加了插件的设计思路,开发插件只需要在插件目录下开发即可

目录结构​

复制代码
admin/
├── public/                                                 # 公共文件(目前框架使用,插件只需要卸载插件内部)  
│   ├── ueditor/                                            # 百度富文本编辑器资源
│   └── niucloud.ico                                        # 网站图标
├── src/                                                    # 系统功能文件
│   ├── addon/                                              # 插件模块目录
│   │   └── mall/                                           # 商城插件模块
│   │       ├── api/                                        # 插件API接口
│   │       ├── lang/                                       # 插件语言包
│   │       └── views/                                      # 插件视图组件
│   ├── app/                                                # 框架目录
│   │   ├── api/                                            # 框架功能api接口
│   │   │   ├── addon.ts                                    # 插件相关API
│   │   │   ├── aliapp.ts                                   # 支付宝小程序相关API
│   │   │   ├── app.ts                                      # 应用相关API
│   │   │   ├── auth.ts                                     # 认证授权相关API
│   │   │   ├── cloud.ts                                    # 云编译相关API
│   │   │   ├── dict.ts                                     # 字典相关API
│   │   │   ├── diy.ts                                      # 自定义相关API
│   │   │   ├── diy_form.ts                                 # 万能表单相关API
│   │   │   ├── h5.ts                                       # H5相关API
│   │   │   ├── home.ts                                     # 首页相关API
│   │   │   ├── member.ts                                   # 会员相关API
│   │   │   ├── module.ts                                   # 模块相关API
│   │   │   ├── notice.ts                                   # 消息管理相关API
│   │   │   ├── pay.ts                                      # 帐单列表相关API
│   │   │   ├── pc.ts                                       # PC端相关API
│   │   │   ├── personal.ts                                 # 个人中心相关API
│   │   │   ├── poster.ts                                   # 海报相关API
│   │   │   ├── printer.ts                                  # 打印机相关API
│   │   │   ├── site.ts                                     # 站点相关API
│   │   │   ├── stat.ts                                     # 统计相关API
│   │   │   ├── sys.ts                                      # 系统相关API
│   │   │   ├── tools.ts                                    # 插件开发相关API
│   │   │   ├── upgrade.ts                                  # 升级相关API
│   │   │   ├── user.ts                                     # 用户相关API
│   │   │   ├── verify.ts                                   # 核销相关API
│   │   │   ├── weapp.ts                                    # 微信小程序相关API
│   │   │   ├── wechat.ts                                   # 微信相关API
│   │   │   └── wxoplatform.ts                              # 微信开放平台相关API
│   │   ├── assets/                                         # 框架资源文件
│   │   ├── components/                                     # 框架功能组件
│   │   │   ├── check-restart/                              # 检查重启组件
│   │   │   ├── cloud-build/                                # 云编译组件
│   │   │   ├── upgrade/                                    # 升级组件
│   │   │   ├── upgrade-log/                                # 升级日志组件
│   │   │   └── user-info-edit/                             # 用户信息编辑组件
│   │   ├── lang/                                           # 框架功能语言文件
│   │   │   ├── en/                                         # 英文语言包
│   │   │   └── zh-cn/                                      # 中文语言包
│   │   └── views/                                          # 框架页面
│   │       ├── app/                                        # 应用管理页面
│   │       │   ├── authorize.vue                           # 应用授权页面
│   │       │   ├── index.vue                               # 应用列表页面
│   │       │   ├── marketing.vue                           # 应用营销页面
│   │       │   └── upgrade.vue                             # 应用升级页面
│   │       ├── auth/                                       # 权限管理页面
│   │       │   ├── components/                             # 权限组件
│   │       │   ├── log.vue                                 # 权限日志页面
│   │       │   ├── menu.vue                                # 菜单管理页面
│   │       │   ├── role.vue                                # 角色管理页面
│   │       │   ├── site_menu.vue                           # 站点菜单页面
│   │       │   └── user.vue                                # 用户管理页面
│   │       ├── channel/                                    # 渠道管理页面
│   │       │   ├── aliapp/                                 # 支付宝小程序渠道
│   │       │   ├── app/                                    # 应用渠道
│   │       │   ├── h5/                                     # H5渠道
│   │       │   ├── pc/                                     # PC渠道
│   │       │   ├── weapp/                                  # 微信小程序渠道
│   │       │   └── wechat/                                 # 微信渠道
│   │       ├── dict/                                       # 字典管理页面   
│   │       │   ├── components/                             # 字典组件
│   │       │   └── list.vue                                # 字典列表页面
│   │       ├── diy/                                        # 自定义页面管理
│   │       │   ├── components/                             # 自定义组件
│   │       │   ├── edit.vue                                # 自定义编辑页面
│   │       │   ├── index.vue                               # 自定义索引页面
│   │       │   ├── list.vue                                # 自定义列表页面
│   │       │   ├── member.vue                              # 会员自定义页面
│   │       │   ├── route.vue                               # 路由自定义页面
│   │       │   ├── tabbar.vue                              # TabBar管理页面
│   │       │   ├── tabbar_edit.vue                         # TabBar编辑页面
│   │       │   └── theme_style.vue                         # 主题样式页面
│   │       ├── diy_form/                                   # 万能表单管理
│   │       │   ├── components/                             # 表单组件
│   │       │   ├── edit.vue                                # 表单编辑页面
│   │       │   ├── list.vue                                # 表单列表页面
│   │       │   └── records.vue                             # 表单记录页面
│   │       ├── error/                                      # 错误页面
│   │       │   └── 404.vue                                 # 404页面
│   │       ├── finance/                                    # 财务相关页面
│   │       │   ├── components/                             # 财务组件
│   │       │   ├── account.vue                             # 账户管理页面
│   │       │   ├── cash_out.vue                            # 提现管理页面
│   │       │   ├── offlinepay.vue                          # 线下支付页面
│   │       │   ├── pay_detail.vue                          # 支付详情页面
│   │       │   ├── pay_refund.vue                          # 支付退款页面
│   │       │   └── refund_detail.vue                       # 退款详情页面
│   │       ├── home/                                       # 首页相关页面
│   │       │   ├── edit_personal.vue                       # 个人信息编辑页面
│   │       │   ├── index.vue                               # 首页
│   │       │   └── personal.vue                            # 个人中心页面
│   │       ├── index/                                      # 控制台页面
│   │       │   ├── app_manage.vue                          # 应用管理控制台
│   │       │   ├── index.vue                               # 控制台首页
│   │       │   ├── preview.vue                             # 预览页面
│   │       │   ├── store.vue                               # 应用商店页面  
│   │       │   ├── tools.vue                               # 工具页面
│   │       │   └── wxoplatform_callback.vue                # 微信开放平台回调页面
│   │       ├── login/                                      # 登录页面
│   │       │   └── index.vue                               # 登录页面
│   │       ├── marketing/                                  # 营销相关页面
│   │       │   ├── components/                             # 营销组件
│   │       │   ├── sign_config.vue                         # 签到配置页面
│   │       │   ├── sign_list.vue                           # 签到列表页面
│   │       │   ├── verifier.vue                            # 验证器页面
│   │       │   ├── verify.vue                              # 验证页面
│   │       │   ├── verify_detail.vue                       # 验证详情页面
│   │       │   └── verify_index.vue                        # 验证索引页面
│   │       ├── member/                                     # 会员管理页面
│   │       │   ├── components/                             # 会员组件
│   │       │   ├── balance.vue                             # 会员余额页面
│   │       │   ├── commission.vue                          # 会员佣金页面
│   │       │   ├── growth.vue                              # 会员成长值页面
│   │       │   ├── label.vue                               # 会员标签页面
│   │       │   ├── level.vue                               # 会员等级页面
│   │       │   ├── level_edit.vue                          # 会员等级编辑页面
│   │       │   ├── member.vue                              # 会员列表页面
│   │       │   ├── member_detail.vue                       # 会员详情页面
│   │       │   └── point.vue                               # 会员积分明细页面
│   │       ├── poster/                                     # 海报管理页面
│   │       │   ├── components/                             # 海报组件
│   │       │   ├── edit.vue                                # 海报编辑页面
│   │       │   └── list.vue                                # 海报列表页面
│   │       ├── printer/                                    # 打印机管理页面
│   │       │   ├── edit.vue                                # 打印机编辑页面
│   │       │   ├── list.vue                                # 打印机列表页面
│   │       │   ├── template_edit.vue                       # 模板编辑页面
│   │       │   └── template_list.vue                       # 模板列表页面
│   │       ├── setting/                                    # 系统设置页面
│   │       │   ├── components/                             # 设置组件
│   │       │   ├── adminlogin.vue                          # 管理员登录设置页面
│   │       │   ├── agreement.vue                           # 协议管理页面
│   │       │   ├── agreement_edit.vue                      # 协议编辑页面
│   │       │   ├── cash_out.vue                            # 提现设置页面
│   │       │   ├── copyright.vue                           # 版权设置页面
│   │       │   ├── developer_token.vue                     # 开发者令牌页面
│   │       │   ├── export.vue                              # 导出设置页面
│   │       │   ├── growth_rule.vue                         # 成长规则设置页面
│   │       │   ├── layout.vue                              # 布局设置页面
│   │       │   ├── login.vue                               # 登录设置页面
│   │       │   ├── map.vue                                 # 地图设置页面
│   │       │   ├── member.vue                              # 会员设置页面
│   │       │   ├── notice.vue                              # 通知设置页面
│   │       │   ├── notice_records.vue                      # 通知记录页面
│   │       │   ├── oplatform.vue                           # 开放平台设置页面
│   │       │   ├── pay.vue                                 # 支付设置页面
│   │       │   ├── point_rule.vue                          # 积分规则设置页面
│   │       │   ├── sms.vue                                 # 短信设置页面
│   │       │   ├── sms_niu.vue                             # 牛云短信页面
│   │       │   ├── sms_niu_pay_result.vue                  # 牛云短信支付结果页面
│   │       │   ├── sms_records.vue                         # 短信记录页面
│   │       │   ├── storage.vue                             # 存储设置页面
│   │       │   ├── system.vue                              # 系统设置页面
│   │       │   ├── transfer.vue                            # 转账设置页面
│   │       │   ├── transfer_scene.vue                      # 转账场景设置页面
│   │       │   └── weapp.vue                               # 微信小程序设置页面
│   │       ├── site/                                       # 站点管理页面
│   │       │   ├── components/                             # 站点组件
│   │       │   ├── group.vue                               # 站点套餐页面
│   │       │   ├── group_edit.vue                          # 站点套餐编辑页面
│   │       │   ├── info.vue                                # 站点信息页面
│   │       │   ├── list.vue                                # 站点列表页面
│   │       │   ├── manage.vue                              # 站点管理页面
│   │       │   ├── user.vue                                # 站点用户页面
│   │       │   └── user_info.vue                           # 站点用户信息页面
│   │       ├── tools/                                      # 工具页面
│   │       │   ├── addon/                                  # 插件工具
│   │       │   ├── code/                                   # 代码管理页面
│   │       │   ├── attachment.vue                          # 附件管理页面
│   │       │   ├── backup_records.vue                      # 备份记录页面
│   │       │   ├── cloud_compile.vue                       # 云编译页面
│   │       │   ├── detection.vue                           # 检测工具页面
│   │       │   ├── schedule.vue                            # 定时任务页面
│   │       │   ├── schedule_log.vue                        # 定时任务日志页面
│   │       │   ├── updatecache.vue                         # 更新缓存页面
│   │       │   └── upgrade_records.vue                     # 升级记录页面
│   │       └── wxoplatform/                                # 微信开放平台管理页面
│   │           ├── setting.vue                             # 微信开放平台设置页面
│   │           └── weapp_version.vue                       # 微信小程序版本管理页面
│   ├── components/                                         # 系统功能组件 
│   │   ├── diy-link/                                       # 自定义链接组件
│   │   ├── diy-page/                                       # 自定义页面组件
│   │   ├── editor/                                         # 编辑器组件
│   │   ├── export-sure/                                    # 导出确认组件
│   │   ├── heat-map/                                       # 热区组件
│   │   ├── icon/                                           # 图标组件
│   │   ├── markdown/                                       # Markdown编辑器组件
│   │   ├── popover-input/                                  # 弹窗输入组件
│   │   ├── range-input/                                    # 范围输入组件
│   │   ├── select-area/                                    # 地区选择组件
│   │   ├── select-icon/                                    # 图标选择组件
│   │   ├── spread-popup/                                   # 展开弹窗组件
│   │   ├── upload-attachment/                              # 附件上传组件    
│   │   ├── upload-audio/                                   # 音频上传组件
│   │   ├── upload-file/                                    # 文件上传组件
│   │   ├── upload-image/                                   # 图片上传组件
│   │   ├── upload-video/                                   # 视频上传组件
│   │   ├── verifition/                                     # 验证组件
│   │   └── video-player/                                   # 视频播放器组件
│   ├── lang/                                               # 系统语言包加载
│   │   ├── en/                                             # 英文语言文件
│   │   ├── zh-cn/                                          # 中文语言文件
│   │   ├── i18n.ts                                         # 国际化配置    
│   │   ├── index.ts                                        # 语言入口文件
│   │   └── language.ts                                     # 语言工具函数
│   ├── layout/                                             # 系统布局加载(包含整体布局)
│   │   ├── admin/                                          # 管理员布局
│   │   │   ├── components/                                 # 管理员布局组件
│   │   │   │   ├── aside/                                  # 侧边栏组件
│   │   │   │   │   ├── index.vue                           # 侧边栏入口
│   │   │   │   │   ├── menu-item.vue                       # 菜单项组件
│   │   │   │   │   └── side.vue                            # 侧边栏主体
│   │   │   │   ├── header/                                 # 头部组件
│   │   │   │   │   ├── index.vue                           # 头部入口
│   │   │   │   │   ├── layout-setting.vue                  # 布局设置组件
│   │   │   │   │   ├── message.vue                         # 消息组件
│   │   │   │   │   ├── switch-lang.vue                     # 语言切换组件
│   │   │   │   │   └── user-info.vue                       # 用户信息组件
│   │   │   │   └── tabs.vue                                # 标签页组件
│   │   │   └── index.vue                                   # 管理员布局入口
│   │   ├── admin_simplicity/                               # 简约管理员布局
│   │   │   ├── components/                                 # 简约管理员布局组件
│   │   │   └── index.vue                                   # 简约管理员布局入口
│   │   ├── bussiness/                                      # 业务布局
│   │   │   ├── components/                                 # 业务布局组件
│   │   │   ├── index.vue                                   # 业务布局入口
│   │   │   └── layout.json                                 # 业务布局配置
│   │   ├── darkside/                                       # 暗色侧边栏布局
│   │   │   ├── components/                                 # 暗色侧边栏布局组件
│   │   │   ├── index.vue                                   # 暗色侧边栏布局入口
│   │   │   └── layout.json                                 # 暗色侧边栏布局配置
│   │   ├── decorate/                                       # 装修布局
│   │   │   └── index.vue                                   # 装修布局入口
│   │   ├── default/                                        # 默认布局
│   │   │   ├── components/                                 # 默认布局组件
│   │   │   │   ├── aside/                                  # 侧边栏组件
│   │   │   │   │   ├── index.vue                           # 侧边栏入口
│   │   │   │   │   ├── menu-item.vue                       # 菜单项组件
│   │   │   │   │   └── side.vue                            # 侧边栏主体
│   │   │   │   ├── header/                                 # 头部组件
│   │   │   │   │   ├── index.vue                           # 头部入口
│   │   │   │   │   ├── layout-setting.vue                  # 布局设置组件
│   │   │   │   │   ├── switch-lang.vue                     # 语言切换组件
│   │   │   │   │   └── user-info.vue                       # 用户信息组件
│   │   │   │   └── tabs.vue                                # 标签页组件
│   │   │   ├── index.vue                                   # 默认布局入口
│   │   │   └── layout.json                                 # 默认布局配置
│   │   ├── profession/                                     # 专业版布局
│   │       ├── components/                                 # 专业版布局组件
│   │       ├── index.vue                                   # 专业版布局入口 
│   │       └── layout.json                                 # 专业版布局配置
│   │   └──  index.vue                                      # 布局入口
│   ├── router/                                             # 系统路由加载
│   │   ├── index.ts                                        # 路由入口文件
│   │   └── routers.ts                                      # 路由定义文件
│   ├── stores/                                             # 系统缓存加载
│   │   ├── modules/                                        # 状态模块
│   │   └── index.ts                                        # Pinia入口文件
│   ├── styles/                                             # 系统样式加载
│   │   ├── font/                                           # 字体文件
│   │   ├── icon/                                           # 图标样式
│   │   ├── common.scss                                     # 通用样式
│   │   ├── element-plus.scss                               # Element Plus 样式覆盖
│   │   ├── index.scss                                      # 样式入口文件
│   │   └── tailwind.css                                    # Tailwind CSS 样式
│   ├── types/                                              # 系统类型定义
│   │   └── global.d.ts                                     # 全局类型声明
│   ├── utils/                                              # 系统公共函数
│   │   ├── common.ts                                       # 通用工具函数
│   │   ├── directives.ts                                   # 自定义指令
│   │   ├── lodop.ts                                        # 打印插件工具
│   │   ├── qqmap.ts                                        # 腾讯地图工具
│   │   ├── request.ts                                      # 网络请求工具
│   │   ├── storage.ts                                      # 存储工具
│   │   └── test.ts                                         # 测试工具
│   ├── App.vue                                             # 初始化vue
│   ├── main.ts                                             # 初始化运行
│   └── vite-env.d.ts                                       # Vite环境类型声明
├── .env.development                                        # dev模式下配置
├── .env.production                                         # 生产模式配置
├── index.html                                              # 项目入口HTML文件
├── package-lock.json                                       # npm依赖锁定文件
├── package.json                                            # 依赖扩展配置
├── postcss.config.cjs                                      # PostCSS配置文件
├── publish.cjs                                             # 发布脚本
├── README.md                                               # 项目说明文档
├── tailwind.config.cjs                                     # Tailwind CSS配置
├── tsconfig.json                                           # TypeScript配置文件
├── tsconfig.node.json                                      # Node环境TypeScript配置
└── vite.config.ts                                          # Vite构建配置文件

页面开发​

了解了 niucloud 管理端目录,下一步就是开发具体功能页面,下面通过一个具体功能的增删改查来讲解前端页面的开发过程
当然开发者可以通过代码生成器生成基本的增删改查,这里讲解具体功能设计思路,方便后期改动

商品标签功能页面开发讲解​

开发具体功能之前要分析功能所在插件以及模块,如果是框架功能,java 代码是在 niucloud-core 下面功能模块下,管理端前端代码是在 admin 的 app 下的功能模块下。而商品标签是商城插件下商品功能板块的子项功能

商品标签后台接口控制器文件结构​

商品标签 admin 前端对应功能的文件结构​

商品标签后台控制器接口以及规范​

商品标签前端接口文件​

后台接口有了,下面就是书写前端接口文件,具体前端接口统一放在插件或者 app 目录的 api 文件夹下。可以统一放到模块文件下,也可以功能独立建立 api 接口文件,这里不做约束,只要后面 vue 文件引入即可。这里的商品品牌是写在了商品模块下

商品标签前端页面文件结构​

接口书写完成后,下一步开始写具体功能页面了,这里要确定功能页面的名称,一般按照具体功能命名,比如商品标签列表 label_list

系统配置​

开发环境配置​

环境变量配置​

项目提供了两种环境的配置文件:

  • 开发环境 :.env.development

  • 生产环境 :.env.production

主要配置项说明:

变量名 描述 开发环境值 生产环境值
VITE_APP_BASE_URL API 请求基础地址 http://127.0.0.1:8080/adminapi/ /adminapi/
VITE_IMG_DOMAIN 图片服务器域名 http://127.0.0.1:8080/ 空(使用相对路径)
VITE_REQUEST_HEADER_TOKEN_KEY 请求头中Token的参数名 token token
VITE_REQUEST_HEADER_SITEID_KEY 请求头中站点ID的参数名 site-id site-id

构建配置​

项目使用 Vite 作为构建工具,主要配置位于 vite.config.ts 文件中:

复制代码
import { fileURLToPath, URL } from "node:url"
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'

// https://vitejs.dev/config/
export default defineConfig({
  base: '',
  server: {
    host: '0.0.0.0'
  },
  plugins: [
    vue(),
    AutoImport({
      resolvers: [ElementPlusResolver()]
    }),
    Components({
      resolvers: [ElementPlusResolver()]
    })
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url)),
      'assets': fileURLToPath(new URL('./src/assets', import.meta.url))
    }
  }
})
相关推荐
weixin_422201301 小时前
如何解决小程序图标点击热区小,落点不准问题?
前端·小程序·样式·点击热区·扩大
szial2 小时前
JavaScript 的 call、apply 和 bind:如何控制函数调用
开发语言·前端·javascript
CopyCode2 小时前
Agent 开发不是模型训练:一个前端的入门认知
前端·llm·agent
吠品2 小时前
HTTPS 真身:HTTP 套了层 TLS
java·服务器·前端
JYeontu2 小时前
实现一个「曲线滑块验证」功能
前端·javascript·html
Csvn2 小时前
组件库(从 API 契约到 Headless 内核)
前端
deli0072 小时前
为什么最近邻路线总在绕远?2-opt 把 50 城 TSP 缩短了 20.9%
前端
guslegend2 小时前
底层数据设计:读写分离、分库分表与热点数据隔离
前端
Southern Wind2 小时前
AIAgent——第一章:本地 Agent 与 Vue 3 流式全栈实战
前端·javascript·vue.js