0.4.2 • Published 12 months ago

vcommon-components v0.4.2

Weekly downloads
-
License
ISC
Repository
-
Last release
12 months ago

vcommon-components

里面暂时有四个基于 element ui 的四个组件表单 VFormComponent,模态框 VDialogWarpper,列表 VTable,列表 VTableSlot

在 main.js 引入

import VCommonComponents from 'vcommon-components'
Vue.use(VCommonComponents)

VFormComponent 组件参数

序号参数说明类型可选值默认值
1isCollapse是否实现收缩Booleantrue/falsefalse
2notNeedEmpty是否需要返回空值的参数Booleantrue/falsefalse
3formItemListformItemList 数组(可以使用.sync)Array下一个列表说明--
4formParams返回的参数对象(可以使用 v-model 或者.sync)Object对象的 key 和 formItemList 里面的 prop 对应--
5labelWidth表单的 labelWidthString"80px",..."80px"
6formBtnStyle操作按钮(父元素的样式)Object{"text-align":"left"}--
7btnList操作按钮数组 (可以使用.sync)Array下一个列表说明--
8formRef获取组件里面表单的 ref 组使用.syncObject--null
9disabled整个表单是否禁止操作Booleantrue/falsefalse

#formItemList 里面的参数(里面是每一个对象) | 序号 | 参数 | 说明 | 类型 | 可选值 | 默认值 | | ---- | ------------ | -------------------------------------------- | ------- | ----------------------------------------- | ------ | | 1 | formItemType | formItem 对象类型 | String | input,select, other ,date(element ui 里面的日期的 type 类型里面字段,也可以使用),dateCompose| -- | | 2 | id | formItem 对象的 id | String/Number | -- | -- | | 3 | label | formItem 对象的 label | String | -- | -- | | 4 | prop | formItem 对象的 prop (和 formParams 的 key 对应,列如 formParams{name:"jay"},prop:"name")| String | -- |--| | 5 | clearable | formItem 对象里面是否显示删除 icon | Boolean | true/false | 默认显示 | | 6 | value | formItem 对象的 value | String | -- |--| | 7 | returnValue | formItem 对象返回值的类型(可以返回单个值,可以返回当前的对象) | String | value/object | value | | 8 | placeholder | formItem 对象的 placeholder,没有值时,根据表单类型,显示使用 label 的值作为提示 | String | -- | -- | | 9 | func(或者使用 elementui 的方法) | formItem 对象的方法(组件里面 formItemType 为 input 时,是对应的 input 方法,formItemType 为 select 或者日期类型 时,是对应的 change 方法),根据 returnValue 返回当前整个对象或者值 | function | -- | -- | | 10 | optionList | formItem 对象 formItemType 为 select 时,里面的可选项) | Array| -- | -- | | 11 | pickerOptions | formItem 对象 formItemType 为 日期类型 时,控制时间选择) | function | -- | 和 elementui 使用一样 | | 12 | valueFormat | formItem 对象 formItemType 为 日期类型 时,控制时间返回格式) | String | yyyyMMdd | 和 elementui 使用一样 | | 13 | labelWidth | formItem 对象的 label 的宽度 | String | -- | 80px | | 14 | slot | formItem 对象的插槽通过 data 获取值 | String | -- | -- | | 15 | isShow | formItem 对象的显示隐藏 | Boolean | true/false | true | | 16 | disabled | formItem 对象的是否禁止操作 | Boolean | true/false | false | | 17 | frameStyle | formItem 对象的输入框样式 | Object | { width: '100%' } | {} | | 18 | interger |输入框样式是否输入整数 | Boolean | true/false | false | | 19 | dataType | formItem 对象返回类型 | String | "String","Boolean","Oject","Array",可以不填,暂时四种 | -- | | 20 | rules | formItem 面里校验规则 | Array | -- | 和 elementui 使用一样 | | 21 | composList | formItem 面里可以多个输入框或者选择框等,配合 slot 插槽使用 | String | 里面对象属性 prop 和 value 必须有,其他属性需要时,重写 | -- | | 22 | formItemStyle | formItem 面里样式 | Object | -- | -- | | 23 | optionDefaultProp | formItemType = 'select'时,可以修改 option 里面 label 和 value 的属性名字 | Object | -- | {label: 'text',value: 'key'} 文本使用 text 字段,value 使用 key 字段| | 24 | noplaceholder | 为 true 时,不显示 placeholder | Boolean | true/false | false | | 25 | limitOptions | formItemType 为 date/datetime/dateCompose 时生效,pickerOptions 有值时失效 | Object | {limitStart:'',limitEnd:'',disabledBefore:'',disabledAfter:'',disabledToday:''},下面说明| -- |

#limitOptions 里面的参数 | 序号 | 参数 | 说明 | 类型 | 可选值 | 默认值 | | ---- | ------------ | -------------------------------------------- | ------- | ----------------------------------------- | ------ | | 1 | limitStart |限制开始日期,上面的 formItem 的 prop| String | -- | -- | | 2 | limitEnd | 限制结束日期,上面的 formItem 的 prop | String | -- | -- | | 3 | disabledBefore | 限制是否可以选择以前的日期(不包括今天)| Boolean | true/false | false | | 4 | disabledAfter | 限制是否可以选择以后的日期(不包括今天)| Boolean | true/false | false | | 5 | disabledToday | 限制是否可以选择今天| Boolean | true/false | false |

#btnList 里面的参数(里面是每一个对象) | 序号 | 参数 | 说明 | 类型 | 可选值 | 默认值 | | ---- | ------------ | -------------------------------------------- | ------- | ----------------------------------------- | ------ | | 1 | id | 操作按钮对象的 id | String/Number | -- | -- | | 2 | label | 操作按钮对象的 label | String | -- | -- | | 3 | func | 操作按钮对象的方法,返回所有条件的值| function | -- | -- | | 4 | slot | 操作按钮对象的插槽通过 data 获取值 | String | -- | -- | | 5 | isShow | 操作按钮对象的显示隐藏 | Boolean | true/false | true | | 6 | btnStyle | 操作按钮的样式 | Object | {"text-align":"left"} | -- | | 7 | 其他属性参照 element ui 的按钮 | -- | -- | -- | -- |

#按钮使用的插槽时 | 序号 | 参数 | 说明 | | ---- | ------------ | -------------------------------------------- | | 1 | 插槽的名字(handleBtn) | form 按钮插槽 id(通过 data 获取里面返回的 formItemList) |

#组件的方法(通过组件的 ref 调用) | 序号 | 参数 | 说明 | | ---- | ------------ | -------------------------------------------- | | 1 | clear | 表单条件清空 | 需要调用原生方法,ref=“VFormComponent” | | 2 | validateSubmit | 校验方法 | 需要调用原生方法,ref=“VFormComponent” ,用法和 element ui 一样| | 3 | clearValidate | 清除校验 | 需要调用原生方法,ref=“VFormComponent” ,用法和 element ui 一样| | 4 | resetFields | 对整个表单进行重置,将所有字段值重置为初始值并移除校验结果 | 需要调用原生方法,ref=“VFormComponent” ,用法和 element ui 一样| | 5 | validateField | 对部分表单字段进行校验的方法 | 需要调用原生方法,ref=“VFormComponent” ,用法和 element ui 一样|

#例子:不使用 slot

html

<VFormComponent
      :formItemList.sync="formItemList"
      :btnList="btnList"
      v-model="formParams"
      :isCollapse="formItemList.length > 4 ? true : false"
      notNeedEmpty
      labelWidth="100px"
      ref="VFormComponent"
    >
</VFormComponent>

js

data() {
    return {
        formItemList: [{
          formItemType: "date",
          id: 4,
          label: "时间选择",
          prop: "date",
          value: "",
          returnValue: "object",
          valueFormat: "yyyyMMdd",
          frameStyle: {
            width: '250px'
          },
          pickerOptions: {
            disabledDate(time) {
              return time.getTime() < Date.now() - 8.64e7; //如果没有后面的-8.64e7就是不可以选择今天的
            },
          },
          func: (val) => {
            console.log(val);
          },
        }],

        btnList: [
          {
            id: 1,
            label: '查询',
            func: (val) => {
              this.search2(val)
            }
          },
          {
            id: 2,
            label: '重置',
            func: (val) => {
              this.$refs.VFormComponent.clear()
            }
          }
        ],
    }

#例子:按钮和表单使用 slot

html

<VFormComponent
      :formItemList.sync="formItemList"
      v-model="formParams"
      :isCollapse="formItemList.length > 4 ? true : false"
      notNeedEmpty
      labelWidth="100px"
    >
<template #inputSlot="{data}">
    <el-form-item
        :label="data.label"
        :label-width="data.labelWidth">
            <el-input
            v-model="data.value"
            :maxlength="data.maxlength"
            :clearable="data.clearable"
            :placeholder="data.placeholder"
            ></el-input>
    </el-form-item>
</template>
<template #switchSlot="{ data }">
  <el-form-item :label="data.label" :label-width="data.labelWidth">
    <el-switch
      v-model="data.value"
      active-color="#13ce66"
      inactive-color="#ff4949"
    >
    </el-switch>
  </el-form-item>
</template>
<template #handleBtn="{ data }">
  <el-button @click="search(data)">查询</el-button>
</template>
</VFormComponent>

js

data() {
    return {
        formItemList: [{
          formItemType: "input",
          frameStyle: {
            width: '250px'
          },
          id: 1,
          label: "姓名",
          prop: "name",
          clearable: true,
          value: "",
          placeholder: "请输入名字",
          slot:"inputSlot"
        },
        {
          formItemType: 'other',
          id: 7,
          label: '开关',
          prop: 'open',
          value: false,
          slot: 'switchSlot'
        }
        ],
        btnList: [{
          type:'primary',
          func:()=>{
            ...
          }
          slot:"handleBtn"
        },
        ],
    }

#例子:使用 slot 和 composList

html

<VFormComponent
  :formItemList.sync="formItemList"
  v-model="formParams"
  :isCollapse="isCollapse"
  notNeedEmpty
  labelWidth="100px"
  :btnList.sync="btnList"
  ref="VFormComponent"
>
  <template #inputSlot="{ data }">
    <el-form-item :label="data.label" :label-width="data.labelWidth">
      <div style="display: flex">
        <el-input
          v-model="data.composList[0].value"
          :style="data.composList[0].frameStyle"
        ></el-input>
        <div style="margin: 0 15px">至</div>
        <el-input
          v-model="data.composList[1].value"
          :style="data.composList[1].frameStyle"
        ></el-input>
      </div>
    </el-form-item>
  </template>
</VFormComponent>

js

data() {
    return {
      formItemList: [
        {
          formItemType: 'other',
          id: 1,
          label: '姓名',
          slot: 'inputSlot',
          composList: [
            {
              prop: 'name1',
              value: '',
              placeholder: '请输入名字',
              frameStyle: {
                width: '250px'
              }
            },
            {
              prop: 'name2',
              value: '',
              placeholder: '请输入名字',
              frameStyle: {
                width: '250px'
              }
            }
          ]
        }
      ],
    }
}

模态框 VDialogWarpper 组件参数

序号参数说明类型可选值默认值
1drag是否拖拽Booleantrue/falsefalse
2center是否对头部和底部采用居中布局Booleantrue/falsefalse
3closeOnClickModal是否可以通过点击 modal 关闭 DialogBooleantrue/falsefalse
4closeOnPressEscape是否可以通过按下 ESC 关闭 DialogBooleantrue/falsefalse
5visibleDialog 显示或者隐藏Booleantrue/falsefalse
7showCloseDialog 是否显示关闭 iconBooleantrue/falsetrue
8destroyOnClose关闭时销毁 Dialog 中的元素Booleantrue/falsetrue
9destroyOnCloseDialog 是否需要遮罩层Booleantrue/falsetrue
10titleDialog 标题String----
11widthDialog 宽度String"300px","30%""30%"

#组件的 methods | 序号 | 方法 | 说明 | | ---- | ------------ | -------------------------------------------- | | 1 | close | Dialog 关闭 |

#例子:

<VDialogWarpper
          slotFooter
          :visible.sync="visible"
          :title="colShowTitle"
          v-bind="$attrs"
        >

<div style="margin-bottom: 20px">
<el-checkbox-group v-model="checkboxList">
<el-checkbox
                :label="item.value"
                v-for="item in showColumnList"
                :key="item.value"
                >{{ item.label }}</el-checkbox
              >
</el-checkbox-group>
</div>
<span slot="footer" class="dialog-footer">
<el-button size="mini" type="text" @click="columnClose()" >取消</el-button
            >
<el-button type="primary" size="mini" @click="setColumn()" >确定</el-button
            >
</span>
</VDialogWarpper>

列表 VTableCompose 组件参数(todo)

省略提示框 VEllipsisTooltip 组件参数(todo)

0.2.6

1 year ago

0.4.1

1 year ago

0.3.2

1 year ago

0.4.0

1 year ago

0.3.1

1 year ago

0.4.2

12 months ago

0.3.3

1 year ago

0.2.1

1 year ago

0.2.0

1 year ago

0.2.3

1 year ago

0.1.4

1 year ago

0.2.2

1 year ago

0.1.3

1 year ago

0.2.5

1 year ago

0.2.4

1 year ago

0.1.5

1 year ago

0.1.2

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago

1.0.6

2 years ago