Browse Source

Merge branch 'lwx_v3'

lwx_v5
超级管理员 1 year ago
parent
commit
121c067f66
  1. 52
      src/components/DesignForm/formControlAttr.vue
  2. 52
      src/components/DesignForm/formControlPropertiNew.vue
  3. 26
      src/components/DesignForm/formControlProperties.vue
  4. 232
      src/components/DesignForm/public/form/form.vue
  5. 18
      src/components/DesignForm/public/form/formItem.vue
  6. 21
      src/views/sysworkflow/lowcodepage/appCardPage.vue
  7. 21
      src/views/sysworkflow/lowcodepage/appFormList.vue
  8. 21
      src/views/sysworkflow/lowcodepage/appListPage.vue
  9. 36
      src/views/sysworkflow/lowcodepage/appPage/appPageForm/openAppFormPage.vue
  10. 22
      src/views/sysworkflow/lowcodepage/runApp/runAppForm.vue
  11. 12
      src/widget/associatedforms/associatedFormsTinyace.vue
  12. 10
      src/widget/associatedforms/associatedFormsTinyaceRange.vue

52
src/components/DesignForm/formControlAttr.vue

@ -2904,62 +2904,62 @@ const disabledIstrue = (val:string) => {
<el-radio-group v-model="controlData.control.fit"> <el-radio-group v-model="controlData.control.fit">
<el-popover <el-popover
placement="top-start" placement="top-start"
title="fill" title="填充"
:width="200" :width="200"
trigger="hover" trigger="hover"
content="默认值。调整替换后的内容大小,以填充元素的内容框。如有必要,将拉伸或挤压物体以适应该对象。" content="默认值。调整替换后的内容大小,以填充元素的内容框。如有必要,将拉伸或挤压物体以适应该对象。"
> >
<template #reference> <template #reference>
<el-radio :label="1" :value="1">fill</el-radio> <el-radio :label="1" :value="1">填充</el-radio><!-- fill -->
</template> </template>
</el-popover> </el-popover>
<el-popover <el-popover
placement="top-start" placement="top-start"
title="contain" title="适应"
:width="200" :width="200"
trigger="hover" trigger="hover"
content="缩放替换后的内容以保持其纵横比,同时将其放入元素的内容框。" content="缩放替换后的内容以保持其纵横比,同时将其放入元素的内容框。"
> >
<template #reference> <template #reference>
<el-radio :label="2" :value="2">contain</el-radio> <el-radio :label="2" :value="2">适应</el-radio><!-- contain -->
</template> </template>
</el-popover> </el-popover>
<el-popover <el-popover
placement="top-start" placement="top-start"
title="cover" title="裁切"
:width="200" :width="200"
trigger="hover" trigger="hover"
content="调整替换内容的大小,以在填充元素的整个内容框时保持其长宽比。该对象将被裁剪以适应。" content="调整替换内容的大小,以在填充元素的整个内容框时保持其长宽比。该对象将被裁剪以适应。"
> >
<template #reference> <template #reference>
<el-radio :label="3" :value="3">cover</el-radio> <el-radio :label="3" :value="3">裁切</el-radio><!-- cover -->
</template> </template>
</el-popover> </el-popover>
<el-popover <el-popover
placement="top-start" placement="top-start"
title="none" title=""
:width="200" :width="200"
trigger="hover" trigger="hover"
content="不对替换的内容调整大小。" content="不对替换的内容调整大小。"
> >
<template #reference> <template #reference>
<el-radio :label="4" :value="4">none</el-radio> <el-radio :label="4" :value="4"></el-radio><!-- none -->
</template> </template>
</el-popover> </el-popover>
<el-popover <el-popover
placement="top-start" placement="top-start"
title="scale-down" title="缩减"
:width="200" :width="200"
trigger="hover" trigger="hover"
content="调整内容大小就像没有指定内容或包含内容一样(将导致较小的具体对象尺寸)" content="调整内容大小就像没有指定内容或包含内容一样(将导致较小的具体对象尺寸)"
> >
<template #reference> <template #reference>
<el-radio :label="5" :value="5">scale-down</el-radio> <el-radio :label="5" :value="5">缩减</el-radio><!-- scale-down -->
</template> </template>
</el-popover> </el-popover>
@ -3859,21 +3859,23 @@ const disabledIstrue = (val:string) => {
</el-aside> </el-aside>
<el-main style="border: 1px solid gainsboro; padding: 3px;" class="associatedFormsHideDialogMain"> <el-main style="border: 1px solid gainsboro; padding: 3px;" class="associatedFormsHideDialogMain">
<div style="border: 1px solid gainsboro; height: 7%; border-bottom: 0px; padding-top: 3px; padding-left: 5px; background-color: #E6F3FE;">当满足以下条件时此控件隐藏</div> <div style="border: 1px solid gainsboro; height: 7%; border-bottom: 0px; padding-top: 3px; padding-left: 5px; background-color: #E6F3FE;">当满足以下条件时此控件隐藏</div>
<div id="associatedFormsHideEditArea" style="border: 1px solid gainsboro; height: 43%; border-bottom: 0px;"> <div id="associatedFormsHideEditArea" style="border: 1px solid gainsboro; height: 38%; border-bottom: 0px;">
<AssociatedFormsTinyace ref="aft" :aft-text="controlData.control.hideConditionHtml" :aft-text-copy = "controlData.control.hideConditionHtmlCopy" @text-change = "aftTextChanged" @gongshi-change = "aftGongshiChanged"></AssociatedFormsTinyace> <AssociatedFormsTinyace ref="aft" :aft-text="controlData.control.hideConditionHtml" :aft-text-copy = "controlData.control.hideConditionHtmlCopy" @text-change = "aftTextChanged" @gongshi-change = "aftGongshiChanged"></AssociatedFormsTinyace>
<!-- <div style="border: 1px solid #4189EF;width:90px;height:26px;border-radius: 3px;padding:2px;text-align: center;cursor:pointer;float: right;margin-top: -32px;margin-right: 5px;z-index:99999999;position: relative;"> <!-- <div style="border: 1px solid #4189EF;width:90px;height:26px;border-radius: 3px;padding:2px;text-align: center;cursor:pointer;float: right;margin-top: -32px;margin-right: 5px;z-index:99999999;position: relative;">
<span style="color: #4189EF;font:6px;margin-right: 5px;">fx</span>插入函数 <span style="color: #4189EF;font:6px;margin-right: 5px;">fx</span>插入函数
</div> --> </div> -->
</div> </div>
<div style="border: 1px solid gainsboro; height: 50%; padding-top: 20px;"> <div style="border: 1px solid gainsboro; height: 55%; padding-top: 20px;">
<ul> <ul>
<li>请从左侧面板<span style="color: red">右击</span>选择字段或选项</li> <li>请从左侧面板<span style="color: red">右击</span>选择字段或选项</li>
<li>支持<span style="color: red">英文</span>模式下运算符<!-- +-*/><== --></li> <li>支持的符号<span style="color: red">'==', '>=', '>', '<=', '<', '!='</span></li>
<li>支持<span style="color: red">"包含"</span>关键字,用于组织机构条件</li> <li>支持<span style="color: red">"包含,不包含,当前用户"</span>关键字,用于组织机构条件和角色条件</li>
<li>支持<span style="color: red">"当前用户"</span>关键字,用于角色条件</li> <li>参考举例</li>
<li>参考场景</li> <span style="margin-left: 14px;">年龄>10</span><br>
<span style="margin-left: 14px;">年龄控件输入的值大于10时需要隐藏当前控件则可将隐藏条件设置为年龄>10</span> <span style="margin-left: 14px;">企管部包含当前用户</span><br>
<span style="margin-left: 14px;">绩效考核执行人包含当前用户</span><br>
<span style="margin-left: 14px;">张三!=当前用户</span>
</ul> </ul>
</div> </div>
</el-main> </el-main>
@ -3971,21 +3973,23 @@ const disabledIstrue = (val:string) => {
</el-aside> </el-aside>
<el-main style="border: 1px solid gainsboro; padding: 3px;" class="associatedFormsHideDialogMain"> <el-main style="border: 1px solid gainsboro; padding: 3px;" class="associatedFormsHideDialogMain">
<div style="border: 1px solid gainsboro; height: 7%; border-bottom: 0px; padding-top: 3px; padding-left: 5px; background-color: #E6F3FE;">仅可选择符合以下条件的数据</div> <div style="border: 1px solid gainsboro; height: 7%; border-bottom: 0px; padding-top: 3px; padding-left: 5px; background-color: #E6F3FE;">仅可选择符合以下条件的数据</div>
<div id="associatedFormsHideEditArea" style="border: 1px solid gainsboro; height: 43%; border-bottom: 0px;"> <div id="associatedFormsHideEditArea" style="border: 1px solid gainsboro; height: 38%; border-bottom: 0px;">
<AssociatedFormsTinyaceRange ref="aftRange" :aft-text="controlData.control.dataRangeConditionHtml" :aft-text-copy = "controlData.control.dataRangeConditionHtmlCopy" @text-change = "aftTextChangedRange" @gongshi-change = "aftGongshiChangedRange"></AssociatedFormsTinyaceRange> <AssociatedFormsTinyaceRange ref="aftRange" :aft-text="controlData.control.dataRangeConditionHtml" :aft-text-copy = "controlData.control.dataRangeConditionHtmlCopy" @text-change = "aftTextChangedRange" @gongshi-change = "aftGongshiChangedRange"></AssociatedFormsTinyaceRange>
<!-- <div style="border: 1px solid #4189EF;width:90px;height:26px;border-radius: 3px;padding:2px;text-align: center;cursor:pointer;float: right;margin-top: -32px;margin-right: 5px;z-index:99999999;position: relative;"> <!-- <div style="border: 1px solid #4189EF;width:90px;height:26px;border-radius: 3px;padding:2px;text-align: center;cursor:pointer;float: right;margin-top: -32px;margin-right: 5px;z-index:99999999;position: relative;">
<span style="color: #4189EF;font:6px;margin-right: 5px;">fx</span>插入函数 <span style="color: #4189EF;font:6px;margin-right: 5px;">fx</span>插入函数
</div> --> </div> -->
</div> </div>
<div style="border: 1px solid gainsboro; height: 50%; padding-top: 20px;"> <div style="border: 1px solid gainsboro; height: 55%; padding-top: 20px;">
<ul> <ul>
<li>请从左侧面板<span style="color: red">右击</span>选择字段或选项</li> <li>请从左侧面板<span style="color: red">右击</span>选择字段或选项</li>
<li>支持<span style="color: red">英文</span>模式下运算符<!-- +-*/><== --></li> <li>支持的符号<span style="color: red">'==', '>=', '>', '<=', '<', '!='</span></li>
<li>支持<span style="color: red">"包含"</span>关键字,用于组织机构条件</li> <li>支持<span style="color: red">"包含,不包含,数据拥有者,数据所属部门"</span>关键字,用于组织机构条件,角色条件,==运算符和!=运算符</li>
<li>支持<span style="color: red">"当前用户"</span>关键字,用于角色条件</li> <li>参考举例</li>
<li>参考场景</li> <span style="margin-left: 14px;">年龄>10</span><br>
<span style="margin-left: 14px;">仅可选择关联表单中年龄大于10的数据则可将数据范围设置为年龄>10</span> <span style="margin-left: 14px;">企管部==数据所属部门</span><br>
<span style="margin-left: 14px;">绩效考核执行人包含数据拥有者</span><br>
<span style="margin-left: 14px;">生产部包含数据所属部门</span>
</ul> </ul>
</div> </div>
</el-main> </el-main>

52
src/components/DesignForm/formControlPropertiNew.vue

@ -2953,62 +2953,62 @@ const disabledIstrue = (val:string) => {
<el-radio-group v-model="controlData.control.fit"> <el-radio-group v-model="controlData.control.fit">
<el-popover <el-popover
placement="top-start" placement="top-start"
title="fill" title="填充"
:width="200" :width="200"
trigger="hover" trigger="hover"
content="默认值。调整替换后的内容大小,以填充元素的内容框。如有必要,将拉伸或挤压物体以适应该对象。" content="默认值。调整替换后的内容大小,以填充元素的内容框。如有必要,将拉伸或挤压物体以适应该对象。"
> >
<template #reference> <template #reference>
<el-radio :label="1" :value="1">fill</el-radio> <el-radio :label="1" :value="1">填充</el-radio><!-- fill -->
</template> </template>
</el-popover> </el-popover>
<el-popover <el-popover
placement="top-start" placement="top-start"
title="contain" title="适应"
:width="200" :width="200"
trigger="hover" trigger="hover"
content="缩放替换后的内容以保持其纵横比,同时将其放入元素的内容框。" content="缩放替换后的内容以保持其纵横比,同时将其放入元素的内容框。"
> >
<template #reference> <template #reference>
<el-radio :label="2" :value="2">contain</el-radio> <el-radio :label="2" :value="2">适应</el-radio><!-- contain -->
</template> </template>
</el-popover> </el-popover>
<el-popover <el-popover
placement="top-start" placement="top-start"
title="cover" title="裁切"
:width="200" :width="200"
trigger="hover" trigger="hover"
content="调整替换内容的大小,以在填充元素的整个内容框时保持其长宽比。该对象将被裁剪以适应。" content="调整替换内容的大小,以在填充元素的整个内容框时保持其长宽比。该对象将被裁剪以适应。"
> >
<template #reference> <template #reference>
<el-radio :label="3" :value="3">cover</el-radio> <el-radio :label="3" :value="3">裁切</el-radio><!-- cover -->
</template> </template>
</el-popover> </el-popover>
<el-popover <el-popover
placement="top-start" placement="top-start"
title="none" title=""
:width="200" :width="200"
trigger="hover" trigger="hover"
content="不对替换的内容调整大小。" content="不对替换的内容调整大小。"
> >
<template #reference> <template #reference>
<el-radio :label="4" :value="4">none</el-radio> <el-radio :label="4" :value="4"></el-radio><!-- none -->
</template> </template>
</el-popover> </el-popover>
<el-popover <el-popover
placement="top-start" placement="top-start"
title="scale-down" title="缩减"
:width="200" :width="200"
trigger="hover" trigger="hover"
content="调整内容大小就像没有指定内容或包含内容一样(将导致较小的具体对象尺寸)" content="调整内容大小就像没有指定内容或包含内容一样(将导致较小的具体对象尺寸)"
> >
<template #reference> <template #reference>
<el-radio :label="5" :value="5">scale-down</el-radio> <el-radio :label="5" :value="5">缩减</el-radio><!-- scale-down -->
</template> </template>
</el-popover> </el-popover>
@ -3921,21 +3921,23 @@ const disabledIstrue = (val:string) => {
</el-aside> </el-aside>
<el-main style="border: 1px solid gainsboro; padding: 3px;" class="associatedFormsHideDialogMain"> <el-main style="border: 1px solid gainsboro; padding: 3px;" class="associatedFormsHideDialogMain">
<div style="border: 1px solid gainsboro; height: 7%; border-bottom: 0px; padding-top: 3px; padding-left: 5px; background-color: #E6F3FE;">当满足以下条件时此控件隐藏</div> <div style="border: 1px solid gainsboro; height: 7%; border-bottom: 0px; padding-top: 3px; padding-left: 5px; background-color: #E6F3FE;">当满足以下条件时此控件隐藏</div>
<div id="associatedFormsHideEditArea" style="border: 1px solid gainsboro; height: 43%; border-bottom: 0px;"> <div id="associatedFormsHideEditArea" style="border: 1px solid gainsboro; height: 38%; border-bottom: 0px;">
<AssociatedFormsTinyace ref="aft" :aft-text="controlData.control.hideConditionHtml" :aft-text-copy = "controlData.control.hideConditionHtmlCopy" @text-change = "aftTextChanged" @gongshi-change = "aftGongshiChanged"></AssociatedFormsTinyace> <AssociatedFormsTinyace ref="aft" :aft-text="controlData.control.hideConditionHtml" :aft-text-copy = "controlData.control.hideConditionHtmlCopy" @text-change = "aftTextChanged" @gongshi-change = "aftGongshiChanged"></AssociatedFormsTinyace>
<!-- <div style="border: 1px solid #4189EF;width:90px;height:26px;border-radius: 3px;padding:2px;text-align: center;cursor:pointer;float: right;margin-top: -32px;margin-right: 5px;z-index:99999999;position: relative;"> <!-- <div style="border: 1px solid #4189EF;width:90px;height:26px;border-radius: 3px;padding:2px;text-align: center;cursor:pointer;float: right;margin-top: -32px;margin-right: 5px;z-index:99999999;position: relative;">
<span style="color: #4189EF;font:6px;margin-right: 5px;">fx</span>插入函数 <span style="color: #4189EF;font:6px;margin-right: 5px;">fx</span>插入函数
</div> --> </div> -->
</div> </div>
<div style="border: 1px solid gainsboro; height: 50%; padding-top: 20px;"> <div style="border: 1px solid gainsboro; height: 55%; padding-top: 20px;">
<ul> <ul>
<li>请从左侧面板<span style="color: red">右击</span>选择字段或选项</li> <li>请从左侧面板<span style="color: red">右击</span>选择字段或选项</li>
<li>支持<span style="color: red">英文</span>模式下运算符<!-- +-*/><== --></li> <li>支持的符号<span style="color: red">'==', '>=', '>', '<=', '<', '!='</span></li>
<li>支持<span style="color: red">"包含"</span>关键字,用于组织机构条件</li> <li>支持<span style="color: red">"包含,不包含,当前用户"</span>关键字,用于组织机构条件和角色条件</li>
<li>支持<span style="color: red">"当前用户"</span>关键字,用于角色条件</li> <li>参考举例</li>
<li>参考场景</li> <span style="margin-left: 14px;">年龄>10</span><br>
<span style="margin-left: 14px;">年龄控件输入的值大于10时需要隐藏当前控件则可将隐藏条件设置为年龄>10</span> <span style="margin-left: 14px;">企管部包含当前用户</span><br>
<span style="margin-left: 14px;">绩效考核执行人包含当前用户</span><br>
<span style="margin-left: 14px;">张三!=当前用户</span>
</ul> </ul>
</div> </div>
</el-main> </el-main>
@ -4033,21 +4035,23 @@ const disabledIstrue = (val:string) => {
</el-aside> </el-aside>
<el-main style="border: 1px solid gainsboro; padding: 3px;" class="associatedFormsHideDialogMain"> <el-main style="border: 1px solid gainsboro; padding: 3px;" class="associatedFormsHideDialogMain">
<div style="border: 1px solid gainsboro; height: 7%; border-bottom: 0px; padding-top: 3px; padding-left: 5px; background-color: #E6F3FE;">仅可选择符合以下条件的数据</div> <div style="border: 1px solid gainsboro; height: 7%; border-bottom: 0px; padding-top: 3px; padding-left: 5px; background-color: #E6F3FE;">仅可选择符合以下条件的数据</div>
<div id="associatedFormsHideEditArea" style="border: 1px solid gainsboro; height: 43%; border-bottom: 0px;"> <div id="associatedFormsHideEditArea" style="border: 1px solid gainsboro; height: 38%; border-bottom: 0px;">
<AssociatedFormsTinyaceRange ref="aftRange" :aft-text="controlData.control.dataRangeConditionHtml" :aft-text-copy = "controlData.control.dataRangeConditionHtmlCopy" @text-change = "aftTextChangedRange" @gongshi-change = "aftGongshiChangedRange"></AssociatedFormsTinyaceRange> <AssociatedFormsTinyaceRange ref="aftRange" :aft-text="controlData.control.dataRangeConditionHtml" :aft-text-copy = "controlData.control.dataRangeConditionHtmlCopy" @text-change = "aftTextChangedRange" @gongshi-change = "aftGongshiChangedRange"></AssociatedFormsTinyaceRange>
<!-- <div style="border: 1px solid #4189EF;width:90px;height:26px;border-radius: 3px;padding:2px;text-align: center;cursor:pointer;float: right;margin-top: -32px;margin-right: 5px;z-index:99999999;position: relative;"> <!-- <div style="border: 1px solid #4189EF;width:90px;height:26px;border-radius: 3px;padding:2px;text-align: center;cursor:pointer;float: right;margin-top: -32px;margin-right: 5px;z-index:99999999;position: relative;">
<span style="color: #4189EF;font:6px;margin-right: 5px;">fx</span>插入函数 <span style="color: #4189EF;font:6px;margin-right: 5px;">fx</span>插入函数
</div> --> </div> -->
</div> </div>
<div style="border: 1px solid gainsboro; height: 50%; padding-top: 20px;"> <div style="border: 1px solid gainsboro; height: 55%; padding-top: 20px;">
<ul> <ul>
<li>请从左侧面板<span style="color: red">右击</span>选择字段或选项</li> <li>请从左侧面板<span style="color: red">右击</span>选择字段或选项</li>
<li>支持<span style="color: red">英文</span>模式下运算符<!-- +-*/><== --></li> <li>支持的符号<span style="color: red">'==', '>=', '>', '<=', '<', '!='</span></li>
<li>支持<span style="color: red">"包含"</span>关键字,用于组织机构条件</li> <li>支持<span style="color: red">"包含,不包含,数据拥有者,数据所属部门"</span>关键字,用于组织机构条件,角色条件,==运算符和!=运算符</li>
<li>支持<span style="color: red">"当前用户"</span>关键字,用于角色条件</li> <li>参考举例</li>
<li>参考场景</li> <span style="margin-left: 14px;">年龄>10</span><br>
<span style="margin-left: 14px;">仅可选择关联表单中年龄大于10的数据则可将数据范围设置为年龄>10</span> <span style="margin-left: 14px;">企管部==数据所属部门</span><br>
<span style="margin-left: 14px;">绩效考核执行人包含数据拥有者</span><br>
<span style="margin-left: 14px;">生产部包含数据所属部门</span>
</ul> </ul>
</div> </div>
</el-main> </el-main>

26
src/components/DesignForm/formControlProperties.vue

@ -1703,61 +1703,65 @@ const disabledIstrue = (val:string) => {
<el-radio-group v-model="controlData.control.fit"> <el-radio-group v-model="controlData.control.fit">
<el-popover <el-popover
placement="top-start" placement="top-start"
title="fill" title="填充"
:width="200" :width="200"
trigger="hover" trigger="hover"
content="默认值。调整替换后的内容大小,以填充元素的内容框。如有必要,将拉伸或挤压物体以适应该对象。" content="默认值。调整替换后的内容大小,以填充元素的内容框。如有必要,将拉伸或挤压物体以适应该对象。"
> >
<template #reference> <template #reference>
<el-radio :label="1" :value="1">fill</el-radio> <el-radio :label="1" :value="1">填充</el-radio><!-- fill -->
</template> </template>
</el-popover> </el-popover>
<el-popover <el-popover
placement="top-start" placement="top-start"
title="contain" title="适应"
:width="200" :width="200"
trigger="hover" trigger="hover"
content="缩放替换后的内容以保持其纵横比,同时将其放入元素的内容框。" content="缩放替换后的内容以保持其纵横比,同时将其放入元素的内容框。"
> >
<template #reference> <template #reference>
<el-radio :label="2" :value="2">contain</el-radio> <el-radio :label="2" :value="2">适应</el-radio><!-- contain -->
</template> </template>
</el-popover> </el-popover>
<el-popover <el-popover
placement="top-start" placement="top-start"
title="cover" title="裁切"
:width="200" :width="200"
trigger="hover" trigger="hover"
content="调整替换内容的大小,以在填充元素的整个内容框时保持其长宽比。该对象将被裁剪以适应。" content="调整替换内容的大小,以在填充元素的整个内容框时保持其长宽比。该对象将被裁剪以适应。"
> >
<template #reference> <template #reference>
<el-radio :label="3" :value="3">cover</el-radio> <el-radio :label="3" :value="3">裁切</el-radio><!-- cover -->
</template> </template>
</el-popover> </el-popover>
<el-popover <el-popover
placement="top-start" placement="top-start"
title="none" title=""
:width="200" :width="200"
trigger="hover" trigger="hover"
content="不对替换的内容调整大小。" content="不对替换的内容调整大小。"
> >
<template #reference> <template #reference>
<el-radio :label="4" :value="4">none</el-radio> <el-radio :label="4" :value="4"></el-radio><!-- none -->
</template> </template>
</el-popover> </el-popover>
<el-popover <el-popover
placement="top-start" placement="top-start"
title="scale-down" title="缩减"
:width="200" :width="200"
trigger="hover" trigger="hover"
content="调整内容大小就像没有指定内容或包含内容一样(将导致较小的具体对象尺寸)" content="调整内容大小就像没有指定内容或包含内容一样(将导致较小的具体对象尺寸)"
> >
<template #reference> <template #reference>
<el-radio :label="5" :value="5">scale-down</el-radio> <el-radio :label="5" :value="5">缩减</el-radio><!-- scale-down -->
</template> </template>
</el-popover> </el-popover>
</el-radio-group> </el-radio-group>
</el-row> </el-row>
<el-row v-else-if="item.type === 'lowcodeImage_boderAndShadow'"> <el-row v-else-if="item.type === 'lowcodeImage_boderAndShadow'">

232
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 { FormData,FormList,FormDataStyle } from '@/api/DesignForm/types'
import { getRequest } from '@/api/DesignForm' import { getRequest } from '@/api/DesignForm'
import request from '@/utils/request';
import { useRoute, useRouter } from 'vue-router' import { useRoute, useRouter } from 'vue-router'
import { import {
constGetControlByName, constGetControlByName,
@ -178,7 +179,7 @@ const forEachGetFormModel = (list: FormList[], obj: any) => {
} }
} }
}) })
showOrHide() showOrHide("onMounted")
} }
function arrayEqual(a: string[], b: any[]) { function arrayEqual(a: string[], b: any[]) {
@ -408,6 +409,10 @@ const recursionToGetFinallyHideFields = (hideFieldArr: any[],radioSelectArr3: st
if(formProps.value.type!=5){ if(formProps.value.type!=5){
//console.log(hideFieldArr) //console.log(hideFieldArr)
props.formData.config.hideField?.push(...hideFieldArr)// props.formData.config.hideField?.push(...hideFieldArr)//
} }
}); });
@ -419,16 +424,17 @@ if(formProps.value.type!=5){
} }
// tProp // tProp
provide(constControlChange, ({ key, value, data, tProp, type, attribute }: any) => { provide(constControlChange, ({ key, value, data, tProp, type, attribute }: any) => {
// console.log("----------1--------->",key) /* console.log("----------1--------->",key)
// console.log("----------2--------->",value) console.log("表单组件值改变事件----------2--------->",value)
// console.log("----------3--------->",data) console.log("表单组件值改变事件----------3--------->",data)
// console.log("----------4--------->",tProp) console.log("表单组件值改变事件----------4--------->",tProp)
// console.log("----------5--------->",type) console.log("表单组件值改变事件----------5--------->",type)
// console.log("----------6--------->",attribute) console.log("表单组件值改变事件----------6--------->",attribute)
// console.log("----------11--------->",model.value) console.log("表单组件值改变事件----------11--------->",model.value) */
let fieldVal = {} let fieldVal = {}
for(let i in model.value){ for(let i in model.value){
if(i == key){ if(i == key){
@ -494,7 +500,7 @@ provide(constControlChange, ({ key, value, data, tProp, type, attribute }: any)
} }
// }) // })
showOrHide() showOrHide(data)
if (typeof props.changeKeyVal === 'function') { if (typeof props.changeKeyVal === 'function') {
props.changeKeyVal(key, value,type,attribute) 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]]<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)
}
}
})
}
}
}
}
}
}
}
}
// end
function showOrHide (){
//liwenxuan start //liwenxuan start
/* console.log("-1-constControlChange-->",props.formData) /* console.log("-1-constControlChange-->",props.formData)
console.log("监听表单-2-constControlChange-->",key) console.log("监听表单-2-constControlChange-->",key)
@ -767,14 +928,11 @@ function showOrHide (){
hideFieldArr = recursionToGetFinallyHideFields(hideFieldArr,radioSelectArr3,defaultHideFields) hideFieldArr = recursionToGetFinallyHideFields(hideFieldArr,radioSelectArr3,defaultHideFields)
} }
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 //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 dictForm = computed(() => {
const storage = window.localStorage.getItem('akFormDict') const storage = window.localStorage.getItem('akFormDict')
let storageDict = {} let storageDict = {}
@ -1239,7 +1437,7 @@ onMounted(() => {
nextTick(() => { nextTick(() => {
appendRemoveStyle(true) appendRemoveStyle(true)
}) })
showOrHide() showOrHide("kong")
}) })
onUnmounted(() => { onUnmounted(() => {
if (eventName) { if (eventName) {

18
src/components/DesignForm/public/form/formItem.vue

@ -290,14 +290,16 @@ const getAxiosOptions = debounce((data?: any) => {
/* /*
在这里请求后台获取字段 在这里请求后台获取字段
*/ */
getFieldRecord(props.data.control.optionsValue3Field).then(({ data }) => { 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"){
let fieldName = props.data.name getFieldRecord(props.data.control.optionsValue3Field).then(({ data }) => {
emits('optionsValue3Get1',data,fieldName) let fieldName = props.data.name
}) emits('optionsValue3Get1',data,fieldName)
})
}
} }
setFormDict(formProps.value.dict) // setFormDict(formProps.value.dict) //

21
src/views/sysworkflow/lowcodepage/appCardPage.vue

@ -295,17 +295,20 @@ const lookFormList = (val:any) => {
/* /*
在这里请求后台获取字段 在这里请求后台获取字段
*/ */
getFieldRecord(paramx).then(({ data }) => { console.log("addCardPage---298",paramx)
stateData.tableData.columns[i].options = data if(paramx && paramx != "" && paramx != null && paramx != "undefined"){
if(stateData.searchData.length>0){ getFieldRecord(paramx).then(({ data }) => {
for(let j = 0;j<stateData.searchData.length;j++){ stateData.tableData.columns[i].options = data
// console.log(stateData.searchData[j]) if(stateData.searchData.length>0){
if(stateData.searchData[j].id==stateData.tableData.columns[i].id){ for(let j = 0;j<stateData.searchData.length;j++){
stateData.searchData[j].options = data // console.log(stateData.searchData[j])
if(stateData.searchData[j].id==stateData.tableData.columns[i].id){
stateData.searchData[j].options = data
}
} }
} }
} })
}) }
} }
} }
} }

21
src/views/sysworkflow/lowcodepage/appFormList.vue

@ -184,17 +184,20 @@ const lookFormList = (val:any) => {
/* /*
在这里请求后台获取字段 在这里请求后台获取字段
*/ */
getFieldRecord(paramx).then(({ data }) => { console.log("appFormList----187",paramx)
stateData.tableData.columns[i].options = data if(paramx && paramx != "" && paramx != null && paramx != "undefined"){
if(stateData.searchData.length>0){ getFieldRecord(paramx).then(({ data }) => {
for(let j = 0;j<stateData.searchData.length;j++){ stateData.tableData.columns[i].options = data
// console.log(stateData.searchData[j]) if(stateData.searchData.length>0){
if(stateData.searchData[j].id==stateData.tableData.columns[i].id){ for(let j = 0;j<stateData.searchData.length;j++){
stateData.searchData[j].options = data // console.log(stateData.searchData[j])
if(stateData.searchData[j].id==stateData.tableData.columns[i].id){
stateData.searchData[j].options = data
}
} }
} }
} })
}) }
} }
} }
} }

21
src/views/sysworkflow/lowcodepage/appListPage.vue

@ -277,17 +277,20 @@ const lookFormList = (val:any) => {
/* /*
在这里请求后台获取字段 在这里请求后台获取字段
*/ */
getFieldRecord(paramx).then(({ data }) => { console.log("appListPage-----280",paramx)
stateData.tableData.columns[i].options = data if(paramx && paramx != "" && paramx != null && paramx != "undefined"){
if(stateData.searchData.length>0){ getFieldRecord(paramx).then(({ data }) => {
for(let j = 0;j<stateData.searchData.length;j++){ stateData.tableData.columns[i].options = data
// console.log(stateData.searchData[j]) if(stateData.searchData.length>0){
if(stateData.searchData[j].id==stateData.tableData.columns[i].id){ for(let j = 0;j<stateData.searchData.length;j++){
stateData.searchData[j].options = data // console.log(stateData.searchData[j])
if(stateData.searchData[j].id==stateData.tableData.columns[i].id){
stateData.searchData[j].options = data
}
} }
} }
} })
}) }
} }
} }
} }

36
src/views/sysworkflow/lowcodepage/appPage/appPageForm/openAppFormPage.vue

@ -248,18 +248,36 @@ const gainAppFormPageInit = () =>{
let paramx:string = ""+stateData.tableData.columns[i].control.optionsValue3Field 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){ if(paramx && paramx != "" && paramx != null && paramx != "undefined"){
for(let j = 0;j<stateData.searchData.length;j++){ getFieldRecord(paramx).then(({ data }) => {
//console.log(stateData.searchData[j]) stateData.tableData.columns[i].options = data
if(stateData.searchData[j].id==stateData.tableData.columns[i].id){ if(stateData.searchData.length>0){
stateData.searchData[j].options = data for(let j = 0;j<stateData.searchData.length;j++){
//console.log(stateData.searchData[j])
if(stateData.searchData[j].id==stateData.tableData.columns[i].id){
stateData.searchData[j].options = data
}
} }
} }
} })
}) }
if(stateData.searchData.length>0){ if(stateData.searchData.length>0){
for(let j = 0;j<stateData.searchData.length;j++){ for(let j = 0;j<stateData.searchData.length;j++){

22
src/views/sysworkflow/lowcodepage/runApp/runAppForm.vue

@ -212,18 +212,20 @@ const initLoadData = () => {
/* /*
在这里请求后台获取字段 在这里请求后台获取字段
*/ */
getFieldRecord(paramx).then(({ data }) => { console.log("runAppForm-----214",paramx)
stateData.tableData.columns[i].options = data if(paramx && paramx != "" && paramx != null && paramx != "undefined"){
if(stateData.searchData.length>0){ getFieldRecord(paramx).then(({ data }) => {
for(let j = 0;j<stateData.searchData.length;j++){ stateData.tableData.columns[i].options = data
// console.log(stateData.searchData[j]) if(stateData.searchData.length>0){
if(stateData.searchData[j].id==stateData.tableData.columns[i].id){ for(let j = 0;j<stateData.searchData.length;j++){
stateData.searchData[j].options = data // console.log(stateData.searchData[j])
if(stateData.searchData[j].id==stateData.tableData.columns[i].id){
stateData.searchData[j].options = data
}
} }
} }
} })
}) }
if(stateData.searchData.length>0){ if(stateData.searchData.length>0){
for(let j = 0;j<stateData.searchData.length;j++){ for(let j = 0;j<stateData.searchData.length;j++){
// console.log(stateData.searchData[j]) // console.log(stateData.searchData[j])

12
src/widget/associatedforms/associatedFormsTinyace.vue

@ -18,7 +18,7 @@ const tinymceInit = {
language_url: "/tinymce/langs/zh-Hans.js", // public language_url: "/tinymce/langs/zh-Hans.js", // public
language: "zh-Hans", // zh-Hans.js language: "zh-Hans", // zh-Hans.js
skin_url: "/tinymce/skins/ui/oxide", // skin_url: "/tinymce/skins/ui/oxide", //
height: 174, // height: 164, //
statusbar:false, statusbar:false,
toolbar:false, toolbar:false,
branding: false, //Powered by TinyMCE branding: false, //Powered by TinyMCE
@ -85,12 +85,12 @@ watch(()=>tinymceHtml.value, (val:any) => {
errorCondition("条件不能以蓝色块结尾") errorCondition("条件不能以蓝色块结尾")
}else if(countSpanTags(gongShi.formulaHtml)>1){ }else if(countSpanTags(gongShi.formulaHtml)>1){
errorCondition("不允许出现多个蓝色块") 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)){ }else if(checkEnding(gongShi.mathsFormula)){
errorCondition("不能以符号为结尾") errorCondition("不能以符号或关键字为结尾")
}else{ }else{
succCondition() succCondition()
} }
@ -100,7 +100,7 @@ watch(()=>tinymceHtml.value, (val:any) => {
{ deep: true } { deep: true }
) )
function checkEnding(str: string) { function checkEnding(str: string) {
const symbols = ['==', '>=', '>', '<=', '<', '!=', '=']; const symbols = ['==', '>=', '>', '<=', '<', '!=', '=','包含','不包含'];
const trimmedStr = str.trim(); const trimmedStr = str.trim();
for (let symbol of symbols) { for (let symbol of symbols) {
if (trimmedStr.endsWith(symbol)) { if (trimmedStr.endsWith(symbol)) {
@ -169,7 +169,7 @@ function errorCondition(str:string){
ElMessage.closeAll() ElMessage.closeAll()
ElMessage({ ElMessage({
showClose: true, showClose: true,
message: '条件格式错误 : '+str+' , 正确条件格式如 : 年龄==10', message: '条件格式错误 : '+str/* +' , 正确条件格式如 : 年龄==10' */,
type: 'error', type: 'error',
duration:3500, duration:3500,
}) })

10
src/widget/associatedforms/associatedFormsTinyaceRange.vue

@ -17,7 +17,7 @@ const tinymceInit = {
language_url: "/tinymce/langs/zh-Hans.js", // public language_url: "/tinymce/langs/zh-Hans.js", // public
language: "zh-Hans", // zh-Hans.js language: "zh-Hans", // zh-Hans.js
skin_url: "/tinymce/skins/ui/oxide", // skin_url: "/tinymce/skins/ui/oxide", //
height: 174, // height: 164, //
statusbar:false, statusbar:false,
toolbar:false, toolbar:false,
branding: false, //Powered by TinyMCE branding: false, //Powered by TinyMCE
@ -84,12 +84,12 @@ watch(()=>tinymceHtml.value, (val:any) => {
errorCondition("条件不能以蓝色块结尾") errorCondition("条件不能以蓝色块结尾")
}else if(countSpanTags(gongShi.formulaHtml)>1){ }else if(countSpanTags(gongShi.formulaHtml)>1){
errorCondition("不允许出现多个蓝色块") 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)){ }else if(checkEnding(gongShi.mathsFormula)){
errorCondition("不能以符号为结尾") errorCondition("不能以符号或关键字为结尾")
}else{ }else{
succCondition() succCondition()
} }
@ -126,7 +126,7 @@ function containsSingleComparator(str: string) {
return found; return found;
} }
function checkEnding(str: string) { function checkEnding(str: string) {
const symbols = ['==', '>=', '>', '<=', '<', '!=', '=']; const symbols = ['==', '>=', '>', '<=', '<', '!=', '=','包含','不包含'];
const trimmedStr = str.trim(); const trimmedStr = str.trim();
for (let symbol of symbols) { for (let symbol of symbols) {
if (trimmedStr.endsWith(symbol)) { if (trimmedStr.endsWith(symbol)) {

Loading…
Cancel
Save