当前位置: 首页 > news >正文

网站百度分享怎么做贵金属企业网站源码

网站百度分享怎么做,贵金属企业网站源码,网站开发主管要做什么,图片下载 wordpress文章目录 前言一、新增table组件二、使用步骤 前言 在 基于element-plus定义表单配置化 基础上#xff0c;封装个Element-plus的table表格 由于表格不同于form组件#xff0c;需自定义校验器#xff0c;以下组件配置了单个校验#xff0c;及提交统一校验方法#xff0c;且… 文章目录 前言一、新增table组件二、使用步骤 前言 在 基于element-plus定义表单配置化 基础上封装个Element-plus的table表格 由于表格不同于form组件需自定义校验器以下组件配置了单个校验及提交统一校验方法且自定义必填校验*显示和校验错误部分边框标红等实际可根据业务及不同场景优化改造相关定义 后期抽空新增表格行及删除行等功能, 一、新增table组件 table-configuration/index.vue templateel-tableborderreftableRef:show-headershowHeader:datatableDatastylewidth: 100%tooltip-effect:max-heighttablemaxHeightel-table-column typeselection :fixedselectionFixed width55 v-ifhasSelection/template v-for(item, index) in tableProperty :keyitemel-table-column:alignalign:sortableitem.sortable:min-widthitem.width:show-overflow-tooltipshowOverflowTooltip:labelitem.labeltemplate #headerdiv :class[getTableHeader(item.property.rules)] v-htmlitem.label/div/templatetemplate #defaultscopecomponent :class[scope.$index 0 getIsErrorClass(scope.$index, index)]v-model:contentscope.row[item.field]v-modelscope.row[item.field]:property{...item.property, name: item.field}:isitem.typefieldBlur(val) blur(val, item, scope.$index, index)fieldChange(val) change(val, item, scope.$index, index) //template/el-table-column/template/el-table /template script langts src./index.ts/ style langless .is-error .el-select-v2__wrapper,.is-error .el-select-v2__wrapper:focus,.is-error .el-textarea__inner,.is-error .el-textarea__inner:focus {box-shadow: 0 0 0 1px var(--el-color-danger) inset }.is-error .el-input__wrapper {box-shadow: 0 0 0 1px var(--el-color-danger) inset } .table {_header:before {content: *;color: var(--el-color-danger);margin-right: 4px;} } /styletable-configuration/index.ts import { tableHooks } from /composables/table-hooks; import { computed, defineComponent, reactive, ref } from vue; import Input from /components/form-configuration/input.vue; import Select from /components/form-configuration/select.vue; import Vhtml from /components/form-configuration/v-html.vue; import Upload from /components/form-configuration/upload.vue; import Switch from /components/form-configuration/switch.vue; import Radio from /components/form-configuration/radio.vue; import Checkbox from /components/form-configuration/checkbox.vue; import Date from /components/form-configuration/date.vue; import Cascader from /components/form-configuration/cascader.vue; import { isArray } from lodash-es; import { ElMessage } from element-plus; import type { rulesType } from /interface;const ruleType {required: false,message: ,trigger: ,validator: (val: any) {return val} } const fieldProperty {label: demo,type: Input,field: demo,width: 120px,err: ,property: {maxlength: 200,rules: [ruleType]} } export default defineComponent({components: {Input,Select,Vhtml,Upload,Switch,Radio,Checkbox,Date,Cascader,},props: {align: {type: String,default: left, // left / center / right},showHeader: {type: Boolean,default: true,},selectionFixed: {type: Boolean,default: false,},showOverflowTooltip: {type: Boolean,default: true,},hasSelection: {type: Boolean,default: false,},property: {type: Object,default() {return [ fieldProperty ];},},data: {type: Object,default() {return {};},},},setup(props, { emit }) {const { tablemaxHeight } tableHooks();const tableRef ref()const tableData computed({get() {return props.data;},set(val) {emit(update:data, val);},});const noType noTypeconst tableProperty computed(() props.property);const blur (val: any, item: typeof fieldProperty, rowIndex: number, colIndex: number) {let arr: Arrayboolean []if (item.property.rules isArray(item.property.rules)) {arr validateForField(item, val, blur, rowIndex, colIndex)}if (!arr.length) {emit(blur, {val, field: item.field, rowIndex, colIndex}) // 触发clearIsError(rowIndex, colIndex)}}const change (val: any, item: typeof fieldProperty, rowIndex: number, colIndex: number) {let arr: Arrayboolean []if (item.property.rules isArray(item.property.rules)) {arr validateForField(item, val, change, rowIndex, colIndex)}if (!arr.length) {emit(change, {val, field: item.field, rowIndex, colIndex}) // 触发clearIsError(rowIndex, colIndex)}}const isError ref{rowIndex: number, colIndex: number}[]([])const validateForField (item: typeof fieldProperty, val: any, type: string, rowIndex: number, colIndex: number) {let arr: Arrayboolean []item.property.rules.forEach((valid) {const types [valid.trigger, noType]if (valid.required !val) {ElMessage.error(valid.message)arr.push(false)isError.value.push({rowIndex, colIndex,})return}if (!valid.required !val || !types.includes(type)) returnif (!valid.validator) returnconst bool valid.validator(val)if (!bool) {ElMessage.error(valid.message)arr.push(bool)isError.value.push({rowIndex, colIndex,})}})return arr}const clearIsError (rowIndex: number, colIndex: number) {if (rowIndex -1) {isError.value []} else {isError.value isError.value.filter((item) {return !((item.rowIndex rowIndex) (item.colIndex colIndex))})}}const validate () {let arr: Arrayboolean []clearIsError(-1, -1)tableData.value.forEach((data: object, rowIndex: number) {tableProperty.value.forEach((tabPro: any, colIndex: number) {if (!tabPro.property.rules) returnconst field tabPro.field as keyof typeof dataarr.push(...validateForField(tabPro, data[field], noType, rowIndex, colIndex))});});return !arr.length}const getIsErrorClass computed(() {return (rowIndex: number, colIndex: number) {let bool falseisError.value.forEach((error) {(error.rowIndex rowIndex) (error.colIndex colIndex) (bool true)})return bool ? is-error : }})const getTableHeader (rules: rulesType[]) {if (!rules) return return !!rules.filter((item) item.required).length ? table_header : }return {tableRef,tablemaxHeight,tableProperty,tableData,isError,getIsErrorClass,getTableHeader,change,blur,validate};}, }); 二、使用步骤 TableConfigurationrefsupplierListRefv-model:datasupplierListEntity.product:hasSelectiontrue:selectionFixedtrue:propertytablePropertyaligncenter/import { defineComponent, reactive, ref } from vue import TableConfiguration from /components/table-configuration/index.vue export default defineComponent({components: {TableConfiguration},setup() {const tableRef ref()const tableProperty reactive([{ label: Input01, type: Input, field: Input01, property: {maxlength: 500,rules: [{ required: false, message: error, trigger: blur, validator: (value: string) {return /^\?[1-9][0-9]*$/.test(value)}}]}},{ label: Input02, type: Input, field: Input02, width: 200px, property: {maxlength: 500,rules: [{ required: true, message: error, trigger: blur }]}}])const tableEntity reactive({table: [{Input01: ,Input02: ,}]})const validate () {tableRef.value.validate()}return {tableRef,tableProperty,tableEntity,validate}}, })
http://www.hkea.cn/news/14273165/

相关文章:

  • 北京网站开发学习网络会议系统有哪些
  • 网站移动端生成器wordpress建站教程 cms
  • 广州那里有学做拼多多网站的品牌网站建设小蝌蚪2a
  • 金华竞价排名 金华企业网站建设线下营销活动有哪些
  • 网站建设添加视频教程网络营销推广公司策划方案
  • 音乐网站还可以做怎么查权重查询
  • wordpress+短视频主题seo赚钱项目
  • 湖州本地做网站网站控制面板地址
  • 上海模板网站建站北京视频网站建设
  • 关于网站开发制作的相关科技杂志的网站货代找客户的网站
  • 东莞网站建设功能江苏江都建设集团有限公司官方网站
  • 网站开发项目简介装饰设计基础知识
  • 东莞网站快速排名榆林网站开发公司
  • 百度网站统计添加网址可以看各种直播平台的软件
  • 手机网站如何跳转免费软件网站下载
  • 在互易上做的网站如何修改WordPress中文seo
  • 电脑端网站一般做多宽最好锦绣大地seo
  • 有了域名与服务器怎么建网站深圳做网站便宜
  • 深圳公司的网站设计建设网站的基本知识
  • dz增加网站标签茂名市建设局网站
  • 网站设计怎么写网站建设实训个人总结1000字
  • 郑州网站seo分析wordpress免费音乐主题
  • 广州网络公司建站电子购物网站建设视频
  • 网站开发语言为wap搜索排名怎么做
  • 广州网站设计公司兴田德润活动京北网app下载
  • 全网有哪些网站可以做淘客竞价网络推广托管
  • 申请网站价格自己制作网页怎么制作的
  • 麻城网站开发社交网站开发平台
  • 网站备案平台的服务简介建微网站有什么好处
  • 广州外贸公司网站建设深圳网络建设有限公司