# vue-gyc-ui **Repository Path**: guoyuanchao/vue-gyc-ui ## Basic Information - **Project Name**: vue-gyc-ui - **Description**: 在vue+element-ui的基础上高度封装适合做项目的表格和表单组件。包括query,add,edit,update,delete方法和分页条。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-11-06 - **Last Updated**: 2025-03-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 动态表格+表单组件+TREE ### 安装 ``` npm i element-ui npm i vue-gyc-ui ``` ### main.js 代码 ```javascript import Vue from "vue"; import ElementUI from "element-ui"; import "element-ui/lib/theme-chalk/index.css"; import vueGycUi from "vue-gyc-ui"; Vue.use(ElementUI, { size: "medium" }).use(vueGycUi,{ globleBtnStyle: { size: "medium", type: 'primary', plain: false, round: false, circle: false, plain: true, icon: undefined }, btnStyle: { save: { size: 'small', icon: 'el-icon-ss' }, read: { type: 'text', plain: false }, edit: { type: 'text', plain: false }, del: { type: 'text', plain: false, style: 'color:red;' }, cancel: { text: '关闭' } }, //=================FORM======================= //FORM 底部按钮对齐方式letf|center|right formFooterAlign: () => "center", //FORM 项标题分散对齐 formLabelJustify: () => false, //FORM 显示验证错误消息 showErrMessage: () => true, //================TABLE======================= //TABLE 上下查询风格或左右查询风格 queryH: true, //TABLE 分页条显示位置letf|center|right|flex-end|flex-start page_align: () => 'flex-end', //TABLE 查询标题分散对齐 queryLabelJustify: () => false, //TABLE 查询标题宽度 queryLabelWidth: () => 55, //TABLE 查询输入宽度 queryInputWidth: () => 160, //TABLE 表格右侧操作按钮显示位置letf|center|right|flex-end|flex-start controlAlign: () => 'center', //TABLE 表格列默认宽度 默认120px dWidth: () => '120px', //TABLE 列设置宽度 setWidth: () => '578px', }); ``` --- ###### 示例 ```html ``` ```javascript ``` --- #### 表单参数列表 | 参数 | 说明 | 类型 | 默认值 | 可选值 | | :------------- | :------------------------------------------------------------------------ | :------: | :--------------------------------------: | :---------------- | | isModel | 是否弹窗 | Boolean | true | true,false | | fullscreen | 全屏 | Boolean | false | --- | | title | 表单标题 | String | 新增 | String | | formAttrs | 表单项属性(详情见表单项参数列表) | Object | {} | --- | | formInfo | 编辑实体 | Object | {} | --- | | width | 表单宽度 | Number | 720 | --- | | isreadonly | 是否禁用表单 | Boolean | false | --- | | center | 底部操作按钮是否居中 | Function | center | center,left,right | | commitText | 提交按钮文本 | Function | 提交 | --- | | cancelText | 取消按钮文本 | Function | 取消 | --- | | showCommitBtn | 是否显示提交按钮 | Boolean | true | --- | | showCancelBtn | 是否显示取消按钮 | Boolean | true | --- | | showFooter | 是否显示底部操作按钮 | Boolean | true | --- | | itemWidth | 表单项宽度 | Number | 308 | --- | | labelWidth | 表单项标题宽度 | Number | 120 | --- | | border | 表单表格是否显示边框 | Boolean | false | true,false | | showErrMessage | 是否显示验证错误信息 | Function | false | true,false | | justify | 表单label是否分散对齐 | Function | false | true,false | | btnType | 设置表单操作列按钮类型 例如 {commit:{type:'info'},cancel:{type:'danger'}} | Object | primary-success-warning-danger-info-text | ['text'] | #### 表单项参数列表 | 参数 | 说明 | 类型 | 默认值 | | :----------------: | :--------------------------------------------------------------------------------------------------- | :--------------------------- | :--------: | | key | 表单项绑定值 key (formAttrs.key值),后面所有项是value值 如:model:{key:'key1',{title:'t1',val:'v1'}} | String | --- | | title | 表单项标题 | String | --- | | val | 表单项的值 | any | any | | change | 表单项值改变触发事件 | Function(data)参数是表单数据 | undefined | | ------- | 表单项默认类型是 text 类型,input 输入框 | ----- | ---- | | width | 表单项宽度 | Number | undefined | | labelWidth | lable 宽度 | Number | 100 | | edit | 表单项设置 false 则不显示编辑项 | Boolean | undefined | | disable | 表单项是否禁用状态 | Number | undefined | | number | 数字输入框 | Boolean | undefined | | password | 文本输入框有效,设置后变成密码框 | Boolean | undefined | | prefix | 文本输入框或数字输入框的前缀 | String | undefined | | suffix | 文本输入框或数字输入框的后缀,如果设置为 true,显示默认的三个点 | Boolean,String | undefined | | click | suffix 单击后缀执行事件 | Function(data)参数是表单数据 | undefined | | date | 日期输入框 | Boolean | undefined | | time | 时间输入框 date:true,time:true | Boolean | undefined | | dateOptions | 时间日期选择器特有的选项 通过一个方法返回一个对象 | Function(form) | {} | | dicts | 选择框初始值。格式[{label:title,value:val}] | Array | [] | | query | 选择框查询方法,执行 callBack 方法赋值给 dicts | Function(words,callBack) | undefined | | defaultEmpty | 默认设空值,否则默认为第一项 | true,false,undefined | undefined | | area | 多行方本框 | Boolean | undefined | | radio | 单选框 | Array | [] | | checkbox | 多选框 | Array | [] | | labels | 单选框和多选框有效,显示单选框和多选框字段,和 values 数组长度等长 | Array | [] | | switch | 开关 | Boolean | undefined | | trueColor | 开关有效,选中时背景色 | String | #13ce66 | | falseColor | 开关有效,未选中时背景色 | String | #ff4949` | | switchWidth | 开关有效,开关长度 | number | --- | | autocomplete | 输入建议框 | Boolean | undefined | | fetch_suggestions | 建议框有效,callback([])返回建议数组 | Function(words,callback) | undefined | | auto_select | 建议框有效,处理数选中后操作 | Function(item,items) | undefined | | valueKey | 建议框有效,输入建议对象中用于显示的键名 | string | value | | popperClass | Autocomplete 下拉列表的类名 | string | ----- | ---- | | triggerOnFocus | 是否在输入框 focus 时显示建议列表 | Boolean | true,false | true | | popperAppendToBody | 是否将下拉列表插入至 body 元素。在下拉列表的定位出现问题时,可将该属性设置为 false | Boolean | true,false | true | | bj | 标记项,可以设置分割线,ui 其他标记 | Boolean | undefined | | upload | 文件上传,参数详见 element-ui-upload 文档 | true | undefined | | goAdd | 选择框搜索为空时定义方法 | Function(form,item) | undefined | #### 表单 Events | 事件名称 | 说明 | 回调参数 | | :------: | :------------------- | :------------ | | saveData | 保存表单数据 | form 对象数据 | | close | 关闭表单窗体执行事件 | --- | --- #### validate 验证 | 校验规则 | 说明 | 值 | | :------: | :------------------------- | :------------------------------------------------------------------------------------------------------- | | required | 不能为空 | true,false | | email | 邮箱格式 | true,false | | url | 网址 | true,false | | len | 字符串长度 | number | | range | 数字范围 | anrry 例如:[10,20] 数字类型验证范围,字符串验证长度范围 | | max | 字符串最大长度或数字最大值 | number | | min | 数字最小值 | number | | regular | 正则表达式 | string 例如:'[a-z]' | | validate | 自定义验证 | function(val,form){return true} 返回 true(验证通过) 或 false(验证未通过,默认消息)或string(错误消息) | #### 表单自定义验证示例 ```javascript formAttrs: [ { key: "name", title: "姓名", val: "", required: true, //必填 //自定义验证 validate: (val)=>{ return true} }, }, { key: "age", title: "年龄", val: "18", number: true }, //数字 { key: "company", title: "公司", val: "", max: 10 }, //最大长度 { key: "url", title: "日期", val: "", date: true, //日期 width: 650, }, ]; ``` #### 表单 slot 重写 #### 表单项各项都可以用插槽重写,slot name=item.key ```html
这里可以放任何HTML
这里替换编辑控件
``` | name | 说明 | | :-------------------: | :--------------------- | | item.key | 重写表单项 | | label-item.key | 重写表单项 label | | add-title | 重写弹窗标题 | | add-footer | 重写弹窗 footer | | item.key-dict | 重写 Select 控件显示项 | | item.key-autocomplete | 重写建议框显示项 | | item.key-upload | 重写上传点击按钮 | | item.key-upload-tip | 重写上传提示文本 | | spareLBtn | 在提交和取消前面增加UI | | spareRBtn | 在提交和取消后面增加UI | --- #### 表格参数列表 | 参数 | 说明 | 类型 | 可选值 | 默认值 | | :----------------: | ------------------------------------------------------------------------------------- | :------: | ----------------------------------------------------- | ---------- | | tableAttrs | 表格 column 属性数组(见表格 column 属性) | Object | {} | [] | | height | 计算表格高度 100vh-height=table 的高度 | Number | ---() | 100 | | fixedHeight | 表格固定高度 | string | px % vh calc | undefined | | btnsWidth | 表格行操作按钮宽度 | Number | --- | 185 | | sort | 排序对象{key:参数名,value:排序方式(字段名 asc,desc)} | Object | undefined --- | --- | | page_align | 分页条显示方式 | Function | left ,center, right | center | | disFuncs | 过滤表格功能[操作,编辑,删除,查看,分页,表头,查询,更多] | Array | [control,edit, del,read,page,setting,query,core] | undefined | | suffix | 表名后缀,一个页面多个表格时需要增加 | String | --- | --- | | btnType | 设置表格操作列按钮类型 例如 {add:{type:'info'},edit:{type:'danger'}} | Object | primary / success / warning / danger / info / text | ['text'] | | row_Drop | 行拖拽 | Boolean | true,false | false | | queryInfo | 表格检索对象数组,项属性见后面检索项文档 | Array | --- --- | --- | | queryH | 是否横向生成检索框组,否则纵向生成检索框组 | Number | --- | 200 | | leftWidth | 左侧查询宽度 竖形查询时有效 | Boolean | true,false --- | --- | | queryLabel | 是否显示查询 label | Boolean | true,false --- | true | | queryLabelWidth | 查询 label 宽度 | Function | --- | 0 | | queryInputWidth | 查询输入框宽度 | Function | --- | 0 | | justify | 查询标题分散对齐 | Function | undefined --- | --- | | popoverWidth | 查询弹窗宽度 | String | 150px | --- | | popoverOffset | 查询弹窗偏移量 | Number | --- | --- | | sumData | 合计 格式:{key:val} | Object | --- | undefined | | rowStyle | 行的 style 的回调方法,也可以使用一个固定的 Object 为所有行设置一样的 Style。 | Function | Function({row, rowIndex})/Object | --- | | rowClassName | 行的 className 的回调方法,也可以使用字符串为所有行设置一个固定的 className。 | Function | Function({row, rowIndex})/String | --- | | cellStyle | 单元格的 style 的回调方法,也可以使用一个固定的 Object 为所有单元格设置一样的 Style。 | Function | Function({row, column, rowIndex, columnIndex})/Object | --- | | cellClassName | 单元格的 className 的回调方法,也可以使用字符串为所有单元格设置一个固定的 className。 | Function | Function({row, column, rowIndex, columnIndex})/String | --- | | pagesizeList | pagesize list | Array | [5, 10, 15, 20, 50, 100] | --- | | batchName | 批量处理按钮文字 | String | ---- | '批量处理' | | editTable | 开启表格编辑 | Boolean | ---- | false | | show-message | 表格编辑时,是否显示验证错误消息 | Boolean | ---- | false | | set-width | 设置列宽度 | Function | --- | 516px | | control-align | 操作列样式,对齐方式, | Function | --- | --- | | d-width | 表格默认列宽, | Function | --- | 120px | | horizontalShowBtns | 是否横向显示查询按钮和操作按钮 | Boolean | true,false | false | #### 表格 column 属性 | 参数 | 说明 | 类型 | 可选值 | 默认值 | | :---------: | ---------------------------------------------------------------------------------------------------------- | :-------------: | ---------------------- | ---------- | | key | 表单项绑定值 key (tableAttrs.key值),后面所有项是value值 如:tableAttrs:{key:'key1',{title:'t1',val:'v1'}} | String | --- | | title | 对应列显示的标题 | String | --- | --- | | val | 对应列值 | any | --- | --- | | type | selection 显示多选框;index 显示该行的索引;expand 显示为一个可展开的按钮 | String | selection/index/expand | --- | | col_width | 列宽度 | String | --- | 100px | | align | 列显示方式 | String | left ,center, right | center | | sortable | 列排序 | Boolean | true,false,undefined | undefined | | tooltip | 当内容过长被隐藏时显示 | Boolean | true,false,undefined | undefined | | fixed | 列是否固定在左侧或者右侧,true 表示固定在左侧 | string, boolean | true, left, right | --- | | visible | 设置为 false 则此项不显示在表格中 | boolean | true,false,undefined | undefined | | labelWidth | 表格项标题宽度 | Number | | undefined | | headerAlign | 表头对齐方式,若不设置该项,则使用表格的对齐方式 | Number | | ---- | | format | 时间格式化 | string | | dayjs 格式 | | prefix | 前缀 | string | ---- | ----- | | suffix | 后缀 | string | ---- | ----- | | decimals | 小数位数 | Number | number | 0 | | pad | decimals时,是否用0填充小数位数 | Boolean | true,false | true | | style | 样式 style(value,row,index) | function | --- | --- | | html | 自定义 html(value,row,index) | function | --- | --- | | alwaysShow | 表格设置时永远显示 | Boolean | true,false | --- | | editTable | 编辑模式 | Boolean | true,false | --- | | clearable | 编辑模式下可清空输入 | Boolean | true,false | --- | #### 表格 检索项 属性 | 参数 | 说明 | 类型 | 可选值 | 默认值 | | :----------------: | ---------------------------------------------------------------------------------- | :-------------: | -------------------- | -------- | | key | 检索 key,传入后台的参数名称 | String 或 Array | --- | --- | | val | 检索值,传入后台的参数值 | String 或 Array | --- | --- | | remark | 标识检索项名称 | String | --- | --- | | label | label 文本 | String | --- | --- | | labelWidth | label 文本长度 | Number | --- | 100 | | inVisible | 不显示,只传参数 | Boolean | true,false | undefend | | more | 生成更多查询,要在表格属性disFuncs中开启more | boolean | true,false | --- | | date | 生成时间检索框 | Boolean | true,false,undefined | --- | | daterange | 生成时间段检索框 [key1,key2] [val1,val2] | Boolean | true,false,undefined | --- | | dicts | 生成选择检索框初始对象数组 | Array | --- | --- | | query | 选择检索框的数据源 | function | words,callback | --- | | daterange | 生成时间段检索框 key 为数组,val 为数组[key1,key2],[val1,val2] | String | --- | --- | | autocomplete | 生成建议检索框 | Boolean | true,false,undefined | --- | | valueKey | 建议框有效,输入建议对象中用于显示的键名 | string | value | | fetch_suggestions | 获取建议检索框数据源 | Function | words,callback | --- | | auto_select | 建议检索框项选中处理事件 | Function | item,itmes | --- | | popperClass | Autocomplete 下拉列表的类名 | string | ----- | ---- | | triggerOnFocus | 是否在输入框 focus 时显示建议列表 | Boolean | true,false | true | | popperAppendToBody | 是否将下拉列表插入至 body 元素。在下拉列表的定位出现问题时,可将该属性设置为 false | Boolean | true,false | true | | customize | 生成自定义元素,重写自定义检索项 query-item.key-customize | Boolean | true,false | true | #### 表格检索项重写 Slot | name | 说明 | | :-------------------------: | :------------------- | | query-item.key-dict | 重写选择检索框项显示 | | query-item.key-autocomplete | 重写建议框项显示 | | query-item.key-customize | 自定义检索项 | #### Table Events | 事件名 | 说明 | 参数 | | :--------------: | -------------------------------------------- | :-------------------------------------------------------------------------------------------- | | load | 加载表格数据 | {page,pagesize},callBack(list,total) | | add | 新增 | ----- | | edit | 编辑 | rowData,callBack | | del | 删除 | rowData,callBack | | read | 查看详情 | rowData | | dbclick | 行双击事件 | row,column | | qx | 设置表格操作编辑,删除,查看,保存权限 | item,callback 两个参数,参数 item 传入表格项,callback 返回{edit=>true,del=>true,read=>true} | | row-click | 当某一行被点击时会触发该事件 | row, column, event | | select | 当用户手动勾选数据行的 Checkbox 时触发的事件 | selection, row | | select-all | 当用户手动勾选全选 Checkbox 时触发的事件 | selection | | selection-change | 当选择项发生变化时会触发该事件 | selection | | batch-handle | 表格多选事件 | selectedRows | | row-save | 表格行编辑保存 | row,index,callback callback传入一个参数true,则处理回调,不传或非true则弹出默认保存消息提示 | #### Table Slot 表单 column 各项都可以用插槽重写,slot name=item.key ```html
这里重写column 显示
这里在左边增加功能
这里在右边增加功能
这里可以重写分页ui
``` | name | 说明 | | :-------------: | :----------------------- | | g-table | 重写表格 | | item.key | 重写表格 column | | header-item.key | 重写表格 column 标题 | | add | 重写增加功能 | | addleft | 在新增左边增加功能 | | addright | 在新增右边增加功能 | | query | 重写查询功能 | | read | 重写查看详情功能 | | edit | 重写编辑功能 | | del | 重写删除功能 | | lbtn | 在操作按钮组左边增加功能 | | rbtn | 在操作按钮组右边增加功能 | | page | 重写分页条 | | setting | 重写表头设置 | | more | 重写更多查询 | | more1 | 重写更多查询(弹层样式) | | batch | 批量操作 | --- #### tree attribute | 参数 | 说明 | 类型 | 可选值 | 默认值 | | :------------------: | ---------------------------------------------------- | :---------------------: | ------ | ------ | | treeData | 展示数据 | array | --- | --- | | iconClass | 自定义树节点的图标 | string | --- | --- | | lazy | 是否懒加载子节点,需与 load 方法结合使用 | boolean | --- | false | | nodeKey | 每个树节点用来作为唯一标识的属性,整棵树应该是唯一的 | String | --- | --- | | indent | 相邻级节点间的水平缩进,单位为像素 | number | --- | 20 | | load | 加载子树数据的方法,仅当 lazy 属性为true 时生效 | function(node, resolve) | --- | --- | | props | 配置选项 | object | --- | --- | | expand-on-click-node | 是否在点击节点的时候展开或者收缩节点, | boolean | --- | true | | check-on-click-node | 是否在点击节点的时候选中节点 | boolean | --- | false | | add-form-width | 增加或修改节点弹窗宽度 | number | --- | 410 | | tree-columns | 增加节点或修改节点实体属性(见表格项属性) | Object | --- | --- | #### tree Events | 事件名 | 说明 | 参数 | | :--------------: | -------------------------------------- | :------------------------------------------------------------------------------------------------------------------- | | node-click | 节点被点击时的回调 | (data, node, self) | | node-contextmenu | 当某一节点被鼠标右键点击时会触发该事件 | (event, data, node, self, (edit, del,isAddNext) => {this.isdel = del;this.isedit = edit;this.isAddNext=isAddNext;})) | | add-next | 打开增加节点窗口 | (node,treeItemData) | | update | 打开修改节点窗口 | (node, treeItemData) | | delete | 删除节点事件 | (node,callback(tree或msg)) | | saveData | 保存节点事件 | (data,callback(true或msg) | #### tree Slot | name | 说明 | | :----: | :---------------------------------------- | | ------ | 自定义树节点的内容,参数为 { node, data } | #### 项目地址 [点击跳转至 GITHUB](https://gitee.com/guoyuanchao/vue-gyc-ui) #### 目前功能正在完善中,欢迎大家加入下面的 QQ 群,我们一起交流吧! ![QQ](https://gitee.com/guoyuanchao/vue-gyc-ui/raw/master/src/assets/vue-gyc-ui.jpg)