From 6bcab11fec0ea8b7f0eb83b3d2455d220ad23419 Mon Sep 17 00:00:00 2001 From: herenshan112 Date: Wed, 14 Aug 2024 15:02:36 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A0=A1=E9=AA=8C=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DesignForm/formControlPropertiNew.vue | 259 ++++++++++++++++-- src/components/DesignForm/validateText.ts | 10 +- 2 files changed, 239 insertions(+), 30 deletions(-) diff --git a/src/components/DesignForm/formControlPropertiNew.vue b/src/components/DesignForm/formControlPropertiNew.vue index 06c2427..27a91f0 100644 --- a/src/components/DesignForm/formControlPropertiNew.vue +++ b/src/components/DesignForm/formControlPropertiNew.vue @@ -8,6 +8,8 @@ import { reactive, computed, toRefs, ref, watch, inject } from 'vue' import { getRequest } from '@/api/DesignForm' import { useDesignFormStore } from '@/store/DesignForm/designForm' import validate from './validate' +import validateText from './validateText' +import validateInt from './validateInt' import { ValidateTextTypes } from '@/components/DesignForm/validateText' import { ElMessage } from 'element-plus' import { formatNumber } from '@/api/DesignForm/utils' @@ -72,8 +74,8 @@ const emits = defineEmits<{ const { formConfig, formData } = toRefs(props) const store = useDesignFormStore() as any const controlData = computed(() => { - console.log("注册自定义事件----------------->",props.formInfo) - console.log("注册自定义事件--------1--------->",store.controlAttr) + // console.log("注册自定义事件----------------->",props.formInfo) + // console.log("注册自定义事件--------1--------->",store.controlAttr) // console.log("注册自定义事件---------3-------->",controlData.value.customRules) return store.controlAttr }) @@ -142,6 +144,21 @@ const ValidateText = reactive({ message: '必填项', checkbox: false }) +/** +@ 作者: 秦东 +@ 时间: 2024-08-14 08:41:02 +@ 功能: 单选校验 +*/ +const radioVerify = reactive({}) + + +const textUinrVerfy = reactive([ + ...validateText +]) +const numberUinrVerfy = reactive([ + ...validateInt +]) + const formAttr = computed(() => { const isSearch = state.isSearch @@ -242,6 +259,33 @@ const attrList = computed(() => { columnIndex = list[0].type === 'index' } } + //判断校验规则 + // console.log("判断校验规则--->",typeof(controlData.value.customRules)) + if(typeof(controlData.value.customRules)=="object"){ + if(Array.isArray(controlData.value.customRules)){ + let otherPick = [] + controlData.value.customRules.forEach((item:any)=>{ + // console.log("判断校验规则-1-->",item) + if(item.type == ValidateText.type){ + ValidateText.checkbox = true + }else{ + otherPick.push(item) + } + }) + if(otherPick.length > 0){ + otherPick.forEach((item:any)=>{ + radioVerify.type = item.type + radioVerify.label = item.label + radioVerify.regExp = item.regExp + radioVerify.message = item.message + radioVerify.checkbox = true + }); + } + } + }else{ + ValidateText.checkbox = false + radioVerify.type = "" + } const temp =reactive([ { @@ -994,6 +1038,8 @@ const attrList = computed(() => { ]) // 过滤显示对应的值 return temp.filter((item: any) => { + // console.log("过滤显示对应的值--->",item) + // console.log("过滤显示对应的值-1-->",type) let hasFilter = true if (item.vShow) { hasFilter = item.vShow.includes(type) @@ -1011,17 +1057,17 @@ const attrList = computed(() => { return [] } }) - - watch( - () => store.activeKey, - (val: string) => { - if (val) { + +watch( + () => store.activeKey, + (val: string) => { + if (val) { // 有值时自动跳到第一项 state.tabsName = 'first' cssIsShouw(attrList) - } } - ) + } +) const fileSignAry = reactive([]) const controlChange = (obj: any, val: any) => { @@ -2519,7 +2565,7 @@ watch(()=>controlData.value.control,(newVal) => { } } } - console.log("同步开关的设置值和开关关联选项设置的值",controlData.value.control) + // console.log("同步开关的设置值和开关关联选项设置的值",controlData.value.control) },{ deep: true }) @@ -2752,19 +2798,151 @@ const disabledIstrue = (val:string) => { } } -watch(()=>controlData.value.customRules,(val:any) => { - console.log("啊啊啊啊啊",val,typeof(val)); - if(typeof(val)=="object"){ - if(Array.isArray(val)){ - val.forEach((item:any)=>{ +// watch(()=>controlData.value.customRules,(val:any) => { +// // console.log("啊啊啊啊啊",val,typeof(val)); +// if(typeof(val)=="object"){ +// if(Array.isArray(val)){ +// val.forEach((item:any)=>{ +// }) +// } +// } +// },{ +// deep: true +// }) +/** +@ 作者: 秦东 +@ 时间: 2024-08-14 13:16:26 +@ 功能: 必填文本框改变 +*/ +const requiredText = (val:any) => { + + if(typeof(controlData.value.customRules)=="object"){ + if(Array.isArray(controlData.value.customRules)){ + controlData.value.customRules.forEach((item:any)=>{ + if(item.type == ValidateText.type){ + item.message = val + } }) } } -},{ - deep: true -}) + console.log("判断校验规则-1-->",controlData.value.customRules) +} +/** +@ 作者: 秦东 +@ 时间: 2024-08-14 14:35:07 +@ 功能: 校验文本框改变 +*/ +const requiredTextRadio = (val:any) => { + console.log("校验文本框改变-->",val) + if(val.type == radioVerify.type){ + if(typeof(controlData.value.customRules)=="object"){ + if(Array.isArray(controlData.value.customRules)){ + controlData.value.customRules.forEach((item:any)=>{ + if(item.type == radioVerify.type){ + item.message = val.message + } + }) + } + } + } + +} + +/** +@ 作者: 秦东 +@ 时间: 2024-08-14 13:21:43 +@ 功能: 是否选中必填 +*/ +const requiredChangeSet = (val:boolean) => { + if (!controlData.value?.customRules) { + controlData.value.customRules = [] + } + if(val){ + if(Array.isArray(controlData.value.customRules) && controlData.value.customRules.length > 0){ + let isNewWrite = true + controlData.value.customRules.forEach((item:any)=>{ + if(item.type == ValidateText.type){ + isNewWrite = false + } + }) + if(isNewWrite){ + controlData.value.customRules.push({ + type: ValidateText.type, + message: ValidateText.message, + trigger: "blur" + }) + } + }else{ + controlData.value.customRules.push({ + type: ValidateText.type, + message: ValidateText.message, + trigger: "blur" + }) + } + }else{ + if(Array.isArray(controlData.value.customRules) && controlData.value.customRules.length > 0){ + controlData.value.customRules.forEach((item:any,index:number)=>{ + + if(item.type == ValidateText.type){ + controlData.value.customRules.splice(index, 1) + } + }) + } + // controlData.value.item.rules.splice(0, 1) + } + // console.log("判断校验规则-222-->",controlData.value.customRules) +} +/** +@ 作者: 秦东 +@ 时间: 2024-08-14 14:14:42 +@ 功能: 单选改变事件 +*/ +const radioChangeSet = (val:any) => { + console.log("单选改变事件-222-->",val) + let pickRadio = {} + let isTrue = true + textUinrVerfy.forEach((item:any) => { + if(item.type == val){ + pickRadio = item + isTrue = false + } + }) + if(isTrue){ + numberUinrVerfy.forEach((item:any) => { + if(item.type == val){ + pickRadio = item + isTrue = false + } + }) + } + // console.log("单选改变事件-3333-->",pickRadio) + if (!controlData.value?.customRules) { + controlData.value.customRules = [] + } + if(Array.isArray(controlData.value.customRules) && controlData.value.customRules.length > 0){ + let isNewWrite = true + controlData.value.customRules.forEach((item:any,index:number)=>{ + if(item.type == ValidateText.type){ + isNewWrite = false + }else{ + controlData.value.customRules.splice(index, 1) + } + }) + controlData.value.customRules.push({ + type: pickRadio.type, + message: pickRadio.message, + trigger: "blur" + }) + }else{ + controlData.value.customRules.push({ + type: pickRadio.type, + message: pickRadio.message, + trigger: "blur" + }) + } +}