# NewLife.QuickVue
**Repository Path**: NewLifeX/NewLife.QuickVue
## Basic Information
- **Project Name**: NewLife.QuickVue
- **Description**: 前端页面快速开发
- **Primary Language**: JavaScript
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 4
- **Forks**: 3
- **Created**: 2023-04-11
- **Last Updated**: 2024-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# NewLife.QuickVue
#### 介绍
新生命魔方管理平台,基于 element-plus,vue-next-admin。
在线地址:https://quickvue.newlifex.com/
前端这边另外也出了其他几个解决方案,链接如下:
https://vue.newlifex.com
https://antd.newlifex.com
#### 项目架构
1. 将后台管理系统的前端编码形式抽象成配置,有别于传统开发模式
2. 完成页面级别组件的初步封装,引用组件即可完成一个页面的增删改查功能
3. 页面路由规则从接口读取,所有路由自动引用 view/modules/index 文件,当页面需要手工修改时,可按后台路由规则在项目里建立文件复制模板代码(view/modules/index 文件)进行修改,无需在前端代码另外配置路由
4. 完成动态表单、表格组件的初步封装,当接口配置不足以满足页面需求时,调用 usePage 函数即可对页面进行组件配置
5. 组件不够时,可继续封装组件并配置到 form/component.ts 文件里即可引用
6. 当某个字段对应的组件不具备通用性时,可通过在配置里提供插槽名即可通过 vue 插槽进行个性化代码灵活编写
#### 安装教程
1. 克隆项目到本地
2. npm i
3. npm run dev
#### 使用说明
1. view/modules/index 模板文件
```javascript
```
2. usePage 函数参数配置
```javascript
{
columns?: {
// 通用配置
// 修改哪个位置的配置,不传则全部修改
in?: ColumnKind | Array;
// 字段名
prop: string;
// 字段中文名称
label?: string;
// 组件
component?: keyof FormType;
// 是否渲染
if?: boolean;
// 是否显示
show?: boolean;
// 自定义组件插槽名称
slot?: string;
// 必填
required?: boolean;
// 组件参数
props?: ColumnProp;
// 校验规则
rules?: FormRule[];
// 排序下标
index?: number;
// 所占列数
col?: number | Col;
// 以下配置只用于表单
// 分组
group?: string;
// 以下配置只用于表格
// 宽度
width?: string | number;
// 是否勾选显示
isCheck?: boolean;
// 是否可排序
sort?: boolean;
},
/** 表格配置(支持element-plus table的所有配置) */
tableConfig?: Partial> & Partial & {
api?: (...props: EmptyArrayType) => Promise>;
url?: string;
requestProps?: EmptyObjectType;
handleWidth?: number;
},
/** 详情相关配置 */
detailConfig?: {
api?: (...props: EmptyArrayType) => Promise>;
url?: string;
requestProps?: EmptyObjectType | ((row: EmptyObjectType) => EmptyObjectType);
},
/** 添加相关配置 */
addConfig?: {
api?: (...props: EmptyArrayType) => Promise>;
url?: string;
requestProps?: EmptyObjectType;
},
/** 编辑相关配置 */
editConfig?: {
api?: (...props: EmptyArrayType) => Promise>;
url?: string;
requestProps?: EmptyObjectType;
},
/** 添加修改删除请求点击以及执行前后的回调钩子 */
onAddClick?: () => void;
onAddBefore?: (data: EmptyObjectType, addFun: Function) => void;
onAddAfter?: (data: EmptyObjectType) => void;
onEditClick?: (data: EmptyObjectType) => void;
onEditBefore?: (data: EmptyObjectType, editFun: Function) => void;
onEditAfter?: (data: EmptyObjectType) => void;
onDelBefore?: (data: EmptyObjectType, delFun: Function) => void;
onDelAfter?: (data: EmptyObjectType) => void;
}
```
3. usePage 返回值
```javascript
{
// 配置相关
tableColumns: Ref;
searchColumns: Ref;
editColumns: Ref;
addColumns: Ref;
detailColumns: Ref;
// 表单相关
searchForm: Ref;
infoForm: Ref;
// 相关操作
handle: PageHandle
}
```
4. 表单类型
```javascript
{
autocomplete: ElAutocomplete,
cascader: ElCascader,
checkbox: ElCheckbox,
checkboxGroup: CheckboxGroup, // 可配置api等参数
colorPicker: ElColorPicker,
datePicker: ElDatePicker,
input: ElInput,
inputNumber: ElInputNumber,
radioGroup: RadioGroup, // 可配置api等参数
radio: ElRadio,
rate: ElRate,
select: Select, // 可配置api等参数
slider: ElSlider,
switch: ElSwitch,
timePicker: ElTimePicker,
timeSelect: ElTimeSelect,
upload: ElUpload,
editor: Editor,
}
```
5. 所在位置枚举
```javascript
{
(LIST = 1), DETAIL, ADD, EDIT, SEARCH;
}
```
6. 修改配置示例代码
```javascript
测试
```
#### 参与贡献
1. Fork 本仓库
2. 新建 Feat_xxx 分支
3. 提交代码
4. 新建 Pull Request