旅居黟县前端

dct 76f09a2b89 修改 4 weeks ago
public 6b50987f95 调试 1 month ago
src 76f09a2b89 修改 4 weeks ago
.babelrc 3c70818df8 init 2 months ago
.browserslistrc 3c70818df8 init 2 months ago
.env.prod 17010b63bf 调试 2 months ago
.env.serve 6b50987f95 调试 1 month ago
.env.test 3c70818df8 init 2 months ago
.gitignore 3c70818df8 init 2 months ago
README.md 3c70818df8 init 2 months ago
TourismVue.code-workspace 3c70818df8 init 2 months ago
babel.config.js 3c70818df8 init 2 months ago
localhost.cert 3c70818df8 init 2 months ago
localhost.key 3c70818df8 init 2 months ago
package-lock.json ec137211d4 调试 2 months ago
package.json 76f09a2b89 修改 4 weeks ago
pnpm-lock.yaml b8bf6ca0a3 支付调试 1 month ago
vue.config.js 6b50987f95 调试 1 month ago

README.md

KaungAdmin Copilot 使用说明

项目概述

KaungAdmin 是一个基于 Vue 3 + Element Plus 的管理后台仪表盘,集成了后台管理常用功能。它遵循标准化的 RESTful API 模式,并包含用于系统设置、库存管理、采购管理等的专用功能。

架构与关键模式

API 结构

所有端点都遵循定义的一致性 RESTful 模式,后端的实体会有deleteMark、createDate、createUserName、updateDate、updateUserName等通用的字段,在搜索或者列表可展示(deleteMark不能展示以及不能传递)。修改或者新增的时候无需展示以及传递给后端这些字段,后端将会自动处理。标准的增删改查(CRUD)的后端接口参考如下:

  • 参数:POST /ResourceName/Paginator(获取或者设置分页/排序、展示列/宽度/搜索/类型等参数,该接口也可以获取或者设置所有字段)
  • 搜索:POST /ResourceName/Search(带分页/排序参数)
  • 创建:POST /ResourceName
  • 更新:PUT /ResourceName/Id
  • 删除:DELETE /ResourceName/Id
  • 详情:GET /ResourceName/Id

使用 kaung.js 工具进行 API 调用:

// 为资源初始化 API 助手
const api = this.$kaung.init('ResourceName');
// 带分页的搜索
api.search(params);
// 提交(根据 ID 自动检测创建与更新)
api.submit({ id: itemId, data: formData });

组件架构

  • 通用布局src/layout/index.vue - 带有可折叠侧边栏的主仪表盘布局
  • 表格组件src/components/basic-table.vue - 具有分页、排序、选择功能的标准化表格(static-table组件已弃用,请使用basic-table组件)
  • 弹框组件src/components/static-dialog.vue - 可重用的模态对话框

表格组件

  • 使用 basic-table 组件显示数据网格,支持分页和排序。组件定义了标准的表格数据格式,其默认的分页参数可以通过后端实体接口的Paginator进行获取。参考如下:

    query: {
    keyword: "",
    columns: [
        { type: "selection", width: "55" },
        { type: "index", label: "序号" },
    
        { prop: "fieldName", label: "字段展示名称", sortable: true, searchable: true, width: "130",showOverflowTooltip: true },
        { type: "template", prop: "status", label: "状态", sortable: true, width: "110", },
    
        { prop: "createUserName", label: "创建人", searchable: true, width: "90", showOverflowTooltip: true },
        { prop: "createDate", label: "创建时间", sortable: true, width: "160", showOverflowTooltip: true },
        { prop: "updateUserName", label: "更新人", searchable: true, width: "90", showOverflowTooltip: true },
        { prop: "updateDate", label: "更新时间", sortable: true, width: "160", showOverflowTooltip: true },
    
        { type: "toolbar", label: "操作", width: "220", fixed: "right" },
    ],
    filters: [{name: "fieldName",value: '过滤测试值',operate: 0}],
    sidx: "sortCode",
    sord: "asc"
    }
    
  • 关键词搜索:使用 keyword 参数进行模糊搜索,后端会自动将所有searchable=true的字段进行模糊搜索。

  • 数据过滤:使用 filters 数组参数进行过滤,基于页面输入的过滤条件进行过滤,支持多条件组合。数组子对象包含name、value、operate、not字段,name为字段名称,value为字段值,operate为操作符(0:等于=,1:大于>,2:大于等于>=,3:小于 <,4:小于等于<=,5:模糊搜索like,6:包含in,其他后续扩展)。

  • 排序:使用 sidxsord 参数进行默认的排序,后端会自动将所有sortable=true的字段进行排序。如果设置了sortable=true的字段,前端表格列头会显示可点击的排序图标,用户点击后会自动更新sidxsord参数并重新请求数据。

  • 分页:前端传递page页索引、rows页大小进行分页,后端返回 total 页数和 records总数,前端表格会自动将这两个参数进行分页。

弹框组件

  • 使用 static-dialog 组件显示模态对话框,支持自定义内容和操作按钮。

表单组件

  • el-form的rules="rules"校验。例如金额price:[ {required: true,message: '请输入对应金额',trigger: 'blur'}, {pattern: /^(([1-9]{1}\d{0,9})|(0{1}))(.\d{1,2})?$/,message: "请输入合法的金额数字,最多两位小数",trigger: "blur"} ];

环境配置

通过 npm 脚本支持多环境模式:

  • npm run serve - 开发环境(使用 .env.serve
  • npm run test - 测试环境(使用 .env.test
  • npm run prod - 生产预览环境(使用 .env.prod
  • npm run buildprod - 生产环境构建

所有环境都需要 NODE_OPTIONS=--openssl-legacy-provider 以确保兼容性。

状态管理

Vuex 存储(src/store/index.js)管理:

  • 具有会话持久性的用户信息
  • 网站设置和配置
  • 集中式状态,通过 getter 访问:$store.getters.getUserInfo$store.getters.getWebSetting

开发指南

文件命名与结构

  • 视图:按模块组织在 src/views/ 中(例如 sys/stock/workflow/
  • API:基于模块组织在 src/api/ 中,与后端资源对应
  • 资源:工作流资源位于 src/assets/workflow/,包含流程元素的 SVG 图标

通用模式

  • 对所有数据网格使用具有标准分页的 basic-table 组件
  • 导入 utilkaung 工具库进行通用操作
  • 通过 process.env.VUE_APP_BASEURL 访问环境变量
  • 日期格式化:this.$util.fmtDate(date, format)

认证流程

  • Token 存储在 sessionStorage 中,键名为 access_tokentoken_type
  • src/utils/request.js 中的请求拦截器自动添加 Authorization 头
  • 登录路由:/login/oauth2(无需认证)

专用功能

  • 打印功能:使用 print-js 库进行文档打印
  • Office 文档查看器@vue-office/docx@vue-office/excel@vue-office/pdf
  • 图表:使用 ECharts 进行数据可视化

添加新功能时,请遵循以下既定模式:基于资源的路由、通过 kaung 工具进行的标准化 API 调用、一致性的组件结构以及使用 basic-table 进行数据展示。

其他参考:

Project setup

npm install

Compiles and hot-reloads for development

npm run serve

Compiles and minifies for production

npm run build
    package scripts:【npm run buildprod】

Customize configuration

See Configuration Reference.

替换成国内镜像

npm install -g cnpm --registry=https://registry.npmmirror.com

Step

1:vue create element-plus
2:npm install element-plus --sav
3:npm install babel-plugin-component -D
4:npm install axios

更新各引用包

1、修改package里的版本号 2、npm update

参考地址:

https://element-plus.gitee.io/#/zh-CN/component/layout
http://beautiful.panm.cn/vue-admin-beautiful-element-plus/?hmsr=github&hmpl=&hmcu=&hmkw=&hmci=#/index
https://adminpro.iviewui.com/system/menu
http://manage.vue.pro.javaweb.vip/

https://github.com/501351981/vue-office

docx文档预览组件

npm install @vue-office/docx vue-demi@0.13.11

excel文档预览组件

npm install @vue-office/excel vue-demi@0.13.11

pdf文档预览组件

npm install @vue-office/pdf vue-demi@0.13.11

如果出现如下错误,可在node_modules对应的下面增加style.css的文件 ERROR Failed to compile with 1 error 10:19:39 This dependency was not found:

  • element-plus/lib/style.css in ./src/main.js To install it, you can run: npm install --save element-plus/lib/style.css