diff --git a/src/components/DesignForm/formControlAttr.vue b/src/components/DesignForm/formControlAttr.vue index 95329ff..128ae98 100644 --- a/src/components/DesignForm/formControlAttr.vue +++ b/src/components/DesignForm/formControlAttr.vue @@ -2904,62 +2904,62 @@ const disabledIstrue = (val:string) => { @@ -3859,21 +3859,23 @@ const disabledIstrue = (val:string) => {
当满足以下条件时此控件隐藏
-
+
-
+
  • 请从左侧面板右击选择字段或选项
  • -
  • 支持英文模式下运算符
  • -
  • 支持"包含"关键字,用于组织机构条件
  • -
  • 支持"当前用户"关键字,用于角色条件
  • -
  • 参考场景:
  • - 年龄控件输入的值大于10时,需要隐藏当前控件,则可将隐藏条件设置为:年龄>10 +
  • 支持的符号:'==', '>=', '>', '<=', '<', '!='
  • +
  • 支持"包含,不包含,当前用户"关键字,用于组织机构条件和角色条件
  • +
  • 参考举例:
  • + 年龄>10
    + 企管部包含当前用户
    + 绩效考核执行人包含当前用户
    + 张三!=当前用户
@@ -3971,21 +3973,23 @@ const disabledIstrue = (val:string) => {
仅可选择符合以下条件的数据
-
+
-
+
  • 请从左侧面板右击选择字段或选项
  • -
  • 支持英文模式下运算符
  • -
  • 支持"包含"关键字,用于组织机构条件
  • -
  • 支持"当前用户"关键字,用于角色条件
  • -
  • 参考场景:
  • - 仅可选择关联表单中年龄大于10的数据,则可将数据范围设置为:年龄>10 +
  • 支持的符号:'==', '>=', '>', '<=', '<', '!='
  • +
  • 支持"包含,不包含,数据拥有者,数据所属部门"关键字,用于组织机构条件,角色条件,==运算符和!=运算符
  • +
  • 参考举例:
  • + 年龄>10
    + 企管部==数据所属部门
    + 绩效考核执行人包含数据拥有者
    + 生产部包含数据所属部门
diff --git a/src/components/DesignForm/formControlPropertiNew.vue b/src/components/DesignForm/formControlPropertiNew.vue index 2d03ea9..bf8e78c 100644 --- a/src/components/DesignForm/formControlPropertiNew.vue +++ b/src/components/DesignForm/formControlPropertiNew.vue @@ -2953,62 +2953,62 @@ const disabledIstrue = (val:string) => { @@ -3921,21 +3921,23 @@ const disabledIstrue = (val:string) => {
当满足以下条件时此控件隐藏
-
+
-
+
  • 请从左侧面板右击选择字段或选项
  • -
  • 支持英文模式下运算符
  • -
  • 支持"包含"关键字,用于组织机构条件
  • -
  • 支持"当前用户"关键字,用于角色条件
  • -
  • 参考场景:
  • - 年龄控件输入的值大于10时,需要隐藏当前控件,则可将隐藏条件设置为:年龄>10 +
  • 支持的符号:'==', '>=', '>', '<=', '<', '!='
  • +
  • 支持"包含,不包含,当前用户"关键字,用于组织机构条件和角色条件
  • +
  • 参考举例:
  • + 年龄>10
    + 企管部包含当前用户
    + 绩效考核执行人包含当前用户
    + 张三!=当前用户
@@ -4033,21 +4035,23 @@ const disabledIstrue = (val:string) => {
仅可选择符合以下条件的数据
-
+
-
+
  • 请从左侧面板右击选择字段或选项
  • -
  • 支持英文模式下运算符
  • -
  • 支持"包含"关键字,用于组织机构条件
  • -
  • 支持"当前用户"关键字,用于角色条件
  • -
  • 参考场景:
  • - 仅可选择关联表单中年龄大于10的数据,则可将数据范围设置为:年龄>10 +
  • 支持的符号:'==', '>=', '>', '<=', '<', '!='
  • +
  • 支持"包含,不包含,数据拥有者,数据所属部门"关键字,用于组织机构条件,角色条件,==运算符和!=运算符
  • +
  • 参考举例:
  • + 年龄>10
    + 企管部==数据所属部门
    + 绩效考核执行人包含数据拥有者
    + 生产部包含数据所属部门
diff --git a/src/components/DesignForm/formControlProperties.vue b/src/components/DesignForm/formControlProperties.vue index 557137a..6f05e0f 100644 --- a/src/components/DesignForm/formControlProperties.vue +++ b/src/components/DesignForm/formControlProperties.vue @@ -1703,61 +1703,65 @@ const disabledIstrue = (val:string) => { + - + + + + diff --git a/src/components/DesignForm/public/form/form.vue b/src/components/DesignForm/public/form/form.vue index 0b00637..ce80654 100644 --- a/src/components/DesignForm/public/form/form.vue +++ b/src/components/DesignForm/public/form/form.vue @@ -11,6 +11,7 @@ import FormGroup from '@/components/DesignForm/public/form/formGroup.vue' import { FormData,FormList,FormDataStyle } from '@/api/DesignForm/types' import { getRequest } from '@/api/DesignForm' +import request from '@/utils/request'; import { useRoute, useRouter } from 'vue-router' import { constGetControlByName, @@ -178,7 +179,7 @@ const forEachGetFormModel = (list: FormList[], obj: any) => { } } }) - showOrHide() + showOrHide("onMounted") } function arrayEqual(a: string[], b: any[]) { @@ -408,6 +409,10 @@ const recursionToGetFinallyHideFields = (hideFieldArr: any[],radioSelectArr3: st if(formProps.value.type!=5){ //console.log(hideFieldArr) props.formData.config.hideField?.push(...hideFieldArr)//实际造成隐藏效果 + + + + } }); @@ -419,16 +424,17 @@ if(formProps.value.type!=5){ } + // 表单组件值改变事件 tProp为子表格相关 provide(constControlChange, ({ key, value, data, tProp, type, attribute }: any) => { - // console.log("表单组件值改变事件----------1--------->",key) - // console.log("表单组件值改变事件----------2--------->",value) - // console.log("表单组件值改变事件----------3--------->",data) - // console.log("表单组件值改变事件----------4--------->",tProp) - // console.log("表单组件值改变事件----------5--------->",type) - // console.log("表单组件值改变事件----------6--------->",attribute) - // console.log("表单组件值改变事件----------11--------->",model.value) + /* console.log("表单组件值改变事件----------1--------->",key) + console.log("表单组件值改变事件----------2--------->",value) + console.log("表单组件值改变事件----------3--------->",data) + console.log("表单组件值改变事件----------4--------->",tProp) + console.log("表单组件值改变事件----------5--------->",type) + console.log("表单组件值改变事件----------6--------->",attribute) + console.log("表单组件值改变事件----------11--------->",model.value) */ let fieldVal = {} for(let i in model.value){ if(i == key){ @@ -494,7 +500,7 @@ provide(constControlChange, ({ key, value, data, tProp, type, attribute }: any) } // }) - showOrHide() + showOrHide(data) if (typeof props.changeKeyVal === 'function') { props.changeKeyVal(key, value,type,attribute) @@ -525,8 +531,163 @@ provide(constControlChange, ({ key, value, data, tProp, type, attribute }: any) */ }) +let mustBeHidden: any = [] +function showOrHide (data:any){ + //console.log(data) + + /* + 企管部有当前用户, + 当前用户是什么权限角色. + 某表单某字段值大于等于小于不等于某个值 + + 所需接口 + 接口1:当前用户是不是指定的权限角色 + 接口2:当前用户是否在指定的机构下或机构的祖先机构下 + 接口3:本表单(关联关联表单的表单)的某字段的当前值大于等于小于不等于指定的值???也许不需要接口呢? + + */ + + //关联表单隐藏条件判定 start + for(let i = 0; i < props.formData.list.length; i++){ + if(props.formData.list[i].type=="associatedForms"&&formProps.value.type!=5){ + //console.log(props.formData.list[i].name) + let asfHideCondition = props.formData.list[i].control.hideGongShi.mathsFormula + const leftOperatorsAndRight = splitString(asfHideCondition) + + if(leftOperatorsAndRight){ + + + let leftArr = leftOperatorsAndRight.left.split(":") + //console.log(leftArr) + if(data=="onMounted"||(leftArr[0]=="formField"&&leftArr.length==3)){ + if(data=="onMounted"||(data!="kong"&&data.name==leftArr[2])){//关联表单隐藏相关的值发生了变化 + + if(leftOperatorsAndRight.operator=="包含"){ + + if(leftOperatorsAndRight.right=="当前用户"){ + + if(leftOperatorsAndRight.left.startsWith("orgOrPerson")){ + //接口2 + + queryIfOrgOrPerson(leftOperatorsAndRight).then(({ data }) => { + if(data==true){ + props.formData.config.hideField = addStringIfNotExists(props.formData.config.hideField,props.formData.list[i].name) + mustBeHidden.push(props.formData.list[i].name) + } + }); + + }else if(leftOperatorsAndRight.left.startsWith("roleid")){ + //接口1 + queryHideRoleCondition(leftOperatorsAndRight).then(({ data }) => { + if(data==true){ + //alert(data) + props.formData.config.hideField = addStringIfNotExists(props.formData.config.hideField,props.formData.list[i].name) + mustBeHidden.push(props.formData.list[i].name) + } + }); + } + } + }else if(leftOperatorsAndRight.operator=="不包含"){ + + if(leftOperatorsAndRight.right=="当前用户"){ + + if(leftOperatorsAndRight.left.startsWith("orgOrPerson")){ + + //接口2 + queryIfOrgOrPerson(leftOperatorsAndRight).then(({ data }) => { + if(data==false){ + props.formData.config.hideField = addStringIfNotExists(props.formData.config.hideField,props.formData.list[i].name) + mustBeHidden.push(props.formData.list[i].name) + } + }); + }else if(leftOperatorsAndRight.left.startsWith("roleid")){ + //接口1 + queryHideRoleCondition(leftOperatorsAndRight).then(({ data }) => { + if(data==false){ + //alert(data) + props.formData.config.hideField = addStringIfNotExists(props.formData.config.hideField,props.formData.list[i].name) + mustBeHidden.push(props.formData.list[i].name) + } + }); + } + } + }else{ + //console.log(leftOperatorsAndRight) + if(leftOperatorsAndRight.right=="当前用户"){ + + if(leftOperatorsAndRight.operator=="=="){ + //接口2 + queryIfOrgOrPerson(leftOperatorsAndRight).then(({ data }) => { + if(data==true){ + props.formData.config.hideField = addStringIfNotExists(props.formData.config.hideField,props.formData.list[i].name) + mustBeHidden.push(props.formData.list[i].name) + } + }); + }else if(leftOperatorsAndRight.operator=="!="){ + //接口2 + queryIfOrgOrPerson(leftOperatorsAndRight).then(({ data }) => { + if(data==true){ + props.formData.config.hideField = addStringIfNotExists(props.formData.config.hideField,props.formData.list[i].name) + mustBeHidden.push(props.formData.list[i].name) + } + }); + } + }else{ + //接口3 + console.log(leftOperatorsAndRight) + console.log(data) + if(data.name==leftArr[2]){ + console.log("ghasdhasdfhhsadhasd") + console.log(props.formData.list[i].name) + nextTick(()=>{ + console.log(model.value[leftArr[2]]) + if(leftOperatorsAndRight.operator == "=="){ + if(model.value[leftArr[2]]==leftOperatorsAndRight.right){ + props.formData.config.hideField = addStringIfNotExists(props.formData.config.hideField,props.formData.list[i].name) + } + }else if(leftOperatorsAndRight.operator == "!="){ + if(model.value[leftArr[2]]!=leftOperatorsAndRight.right){ + props.formData.config.hideField = addStringIfNotExists(props.formData.config.hideField,props.formData.list[i].name) + } + }else if(leftOperatorsAndRight.operator == ">="){ + if(model.value[leftArr[2]]>=leftOperatorsAndRight.right){ + props.formData.config.hideField = addStringIfNotExists(props.formData.config.hideField,props.formData.list[i].name) + } + }else if(leftOperatorsAndRight.operator == ">"){ + if(model.value[leftArr[2]]>leftOperatorsAndRight.right){ + props.formData.config.hideField = addStringIfNotExists(props.formData.config.hideField,props.formData.list[i].name) + } + }else if(leftOperatorsAndRight.operator == "<"){ + if(model.value[leftArr[2]]",props.formData) console.log("监听表单-2-constControlChange-->",key) @@ -767,14 +928,11 @@ function showOrHide (){ hideFieldArr = recursionToGetFinallyHideFields(hideFieldArr,radioSelectArr3,defaultHideFields) } hideFieldArr = recursionToGetFinallyHideFields(hideFieldArr,radioSelectArr3,defaultHideFields) - - - - - - + props.formData.config.hideField?.push(...mustBeHidden) + + @@ -786,6 +944,46 @@ function showOrHide (){ //console.log("监听表单--constControlChange-->",key, value, data, tProp,type,attribute)//liwenxuan } + + + +function addStringIfNotExists(arr: string[], str: string) { + if (!arr.includes(str)) { + arr.push(str); + } + return arr; +} + +function queryIfOrgOrPerson(obj: { left: string; operator: string; right: string }) { + + return request({ + url: '/javasys/lowCode/AssociatedForms/queryIfOrgOrPerson', + method: 'post', + data: obj, + }); +} + +function queryHideRoleCondition(obj: { left: string; operator: string; right: string }) { + + return request({ + url: '/javasys/lowCode/AssociatedForms/queryHideRoleCondition', + method: 'post', + data: obj, + }); +} + +function splitString(str:string) { + const operators = ['==', '>', '>=', '<', '<=', '!=', '不包含' ,'包含']; + for (let operator of operators) { + if (str.includes(operator)) { + let index = str.indexOf(operator); + let left = str.slice(0, index).trim(); + let right = str.slice(index + operator.length).trim(); + return { left,operator, right }; + } + } +} + const dictForm = computed(() => { const storage = window.localStorage.getItem('akFormDict') let storageDict = {} @@ -1239,7 +1437,7 @@ onMounted(() => { nextTick(() => { appendRemoveStyle(true) }) - showOrHide() + showOrHide("kong") }) onUnmounted(() => { if (eventName) { diff --git a/src/components/DesignForm/public/form/formItem.vue b/src/components/DesignForm/public/form/formItem.vue index 24dd603..d4a3479 100644 --- a/src/components/DesignForm/public/form/formItem.vue +++ b/src/components/DesignForm/public/form/formItem.vue @@ -290,14 +290,16 @@ const getAxiosOptions = debounce((data?: any) => { /* 在这里请求后台获取字段 */ - getFieldRecord(props.data.control.optionsValue3Field).then(({ data }) => { - - let fieldName = props.data.name - - emits('optionsValue3Get1',data,fieldName) - - }) - + console.log("formItem---291",props.data.control.optionsValue3Field) + if(props.data.control.optionsValue3Field && props.data.control.optionsValue3Field != "" && props.data.control.optionsValue3Field != null && props.data.control.optionsValue3Field != "undefined"){ + getFieldRecord(props.data.control.optionsValue3Field).then(({ data }) => { + + let fieldName = props.data.name + + emits('optionsValue3Get1',data,fieldName) + + }) + } } setFormDict(formProps.value.dict) // 表格里新增时行时需要重新设一次 diff --git a/src/views/sysworkflow/lowcodepage/appCardPage.vue b/src/views/sysworkflow/lowcodepage/appCardPage.vue index 80ec9b2..2cbc809 100644 --- a/src/views/sysworkflow/lowcodepage/appCardPage.vue +++ b/src/views/sysworkflow/lowcodepage/appCardPage.vue @@ -295,17 +295,20 @@ const lookFormList = (val:any) => { /* 在这里请求后台获取字段 */ - getFieldRecord(paramx).then(({ data }) => { - stateData.tableData.columns[i].options = data - if(stateData.searchData.length>0){ - for(let j = 0;j { + stateData.tableData.columns[i].options = data + if(stateData.searchData.length>0){ + for(let j = 0;j { /* 在这里请求后台获取字段 */ - getFieldRecord(paramx).then(({ data }) => { - stateData.tableData.columns[i].options = data - if(stateData.searchData.length>0){ - for(let j = 0;j { + stateData.tableData.columns[i].options = data + if(stateData.searchData.length>0){ + for(let j = 0;j { /* 在这里请求后台获取字段 */ - getFieldRecord(paramx).then(({ data }) => { - stateData.tableData.columns[i].options = data - if(stateData.searchData.length>0){ - for(let j = 0;j { + stateData.tableData.columns[i].options = data + if(stateData.searchData.length>0){ + for(let j = 0;j{ let paramx:string = ""+stateData.tableData.columns[i].control.optionsValue3Field /* 在这里请求后台获取字段 + let kkk = { + key:111, + age:2 + controll:{ + l + } + } + let ary = [........] + ary.incouldes(3) + if(kkk.controll && kkk.controll.l && ) + try{ + + } */ - getFieldRecord(paramx).then(({ data }) => { - stateData.tableData.columns[i].options = data - if(stateData.searchData.length>0){ - for(let j = 0;j { + stateData.tableData.columns[i].options = data + if(stateData.searchData.length>0){ + for(let j = 0;j0){ for(let j = 0;j { /* 在这里请求后台获取字段 */ - getFieldRecord(paramx).then(({ data }) => { - stateData.tableData.columns[i].options = data - if(stateData.searchData.length>0){ - for(let j = 0;j { + stateData.tableData.columns[i].options = data + if(stateData.searchData.length>0){ + for(let j = 0;j0){ for(let j = 0;jtinymceHtml.value, (val:any) => { errorCondition("条件不能以蓝色块结尾") }else if(countSpanTags(gongShi.formulaHtml)>1){ errorCondition("不允许出现多个蓝色块") - }else if(!containsSingleComparator(gongShi.mathsFormula)&&!gongShi.mathsFormula.includes("包含")){ + }else if(!containsSingleComparator(gongShi.mathsFormula)&&!gongShi.mathsFormula.includes("包含")&&!gongShi.mathsFormula.includes("不包含")){ - errorCondition("不存在有效符号") + errorCondition("不存在有效符号或关键字") }else if(checkEnding(gongShi.mathsFormula)){ - errorCondition("不能以符号为结尾") + errorCondition("不能以符号或关键字为结尾") }else{ succCondition() } @@ -100,7 +100,7 @@ watch(()=>tinymceHtml.value, (val:any) => { { deep: true } ) function checkEnding(str: string) { - const symbols = ['==', '>=', '>', '<=', '<', '!=', '=']; + const symbols = ['==', '>=', '>', '<=', '<', '!=', '=','包含','不包含']; const trimmedStr = str.trim(); for (let symbol of symbols) { if (trimmedStr.endsWith(symbol)) { @@ -169,7 +169,7 @@ function errorCondition(str:string){ ElMessage.closeAll() ElMessage({ showClose: true, - message: '条件格式错误 : '+str+' , 正确条件格式如 : 年龄==10', + message: '条件格式错误 : '+str/* +' , 正确条件格式如 : 年龄==10' */, type: 'error', duration:3500, }) diff --git a/src/widget/associatedforms/associatedFormsTinyaceRange.vue b/src/widget/associatedforms/associatedFormsTinyaceRange.vue index 4ce83e9..00708fb 100644 --- a/src/widget/associatedforms/associatedFormsTinyaceRange.vue +++ b/src/widget/associatedforms/associatedFormsTinyaceRange.vue @@ -17,7 +17,7 @@ const tinymceInit = { language_url: "/tinymce/langs/zh-Hans.js", // 引入语言包(该语言包在public下,注意文件名称) language: "zh-Hans", // 这里名称根据 zh-Hans.js 里面写的名称而定 skin_url: "/tinymce/skins/ui/oxide", // 这里引入的样式 - height: 174, // 限制高度 + height: 164, // 限制高度 statusbar:false, toolbar:false, branding: false, //是否禁用“Powered by TinyMCE” @@ -84,12 +84,12 @@ watch(()=>tinymceHtml.value, (val:any) => { errorCondition("条件不能以蓝色块结尾") }else if(countSpanTags(gongShi.formulaHtml)>1){ errorCondition("不允许出现多个蓝色块") - }else if(!containsSingleComparator(gongShi.mathsFormula)&&!gongShi.mathsFormula.includes("包含")){ + }else if(!containsSingleComparator(gongShi.mathsFormula)&&!gongShi.mathsFormula.includes("包含")&&!gongShi.mathsFormula.includes("不包含")){ - errorCondition("不存在有效符号") + errorCondition("不存在有效符号或关键字") }else if(checkEnding(gongShi.mathsFormula)){ - errorCondition("不能以符号为结尾") + errorCondition("不能以符号或关键字为结尾") }else{ succCondition() } @@ -126,7 +126,7 @@ function containsSingleComparator(str: string) { return found; } function checkEnding(str: string) { - const symbols = ['==', '>=', '>', '<=', '<', '!=', '=']; + const symbols = ['==', '>=', '>', '<=', '<', '!=', '=','包含','不包含']; const trimmedStr = str.trim(); for (let symbol of symbols) { if (trimmedStr.endsWith(symbol)) {