fix: bug#19117、19108

* fix: bug#19108

* fix: bug#19117

* fix: bug#19117
This commit is contained in:
qiaochuLei 2023-10-31 14:53:57 +08:00 committed by GitHub
parent 56052135c0
commit d2fd316ef5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 172 additions and 12 deletions

View File

@ -197,6 +197,7 @@ import { getToken, onlyMessage } from '@/utils/comm';
import { useMetadataStore } from '@/store/metadata';
import { omit } from 'lodash-es';
import { Modal } from 'jetlinks-ui-components';
import { testObject , testType , testAliType , testAliObject} from './valideta'
const route = useRoute();
const instanceStore = useInstanceStore();
@ -298,13 +299,14 @@ const requiredCheck = (data:any) =>{
onlyMessage(`标签定义第${index + 1}个数组中缺失valueType.type属性`,'error');
check = true
return
}else{
check = testType(item,index)
}
if(!item?.expands?.source){
onlyMessage(`属性定义第${index + 1}个数组中缺失expands.source属性`,'error');
check = true
return
}
if((item?.expands?.source === 'device' || item?.expands?.source === 'rule') && !item?.expands?.type){
onlyMessage(`属性定义第${index + 1}个数组中缺失type属性`,'error');
check = true
@ -329,6 +331,16 @@ const requiredCheck = (data:any) =>{
check = true
return
}
if(item?.inputs){
testObject(item.inputs,index)
item.inputs.forEach((i:any)=>{
if(!i?.expands?.required && i?.expands?.required !== false){
onlyMessage(`方法定义inputs第${index+1}个数组中缺失expands.required属性`,'error')
check = true
return
}
})
}
})
}
if(data?.events && !check){
@ -401,6 +413,8 @@ const requiredCheck = (data:any) =>{
onlyMessage(`标签定义第${index + 1}个数组中缺失valueType.type属性`,'error');
check = true
return
}else{
testType(item?.valueType?.type,index)
}
if(!item?.expands?.type){
onlyMessage(`标签定义第${index + 1}个数组中缺失expands.type属性`,'error');
@ -430,6 +444,8 @@ const aliCheck = (data:any) => {
onlyMessage(`属性定义第${index + 1}个数组中缺失dataType.type属性`,'error');
check = true
return
}else{
testAliType(item,index)
}
})
}
@ -450,6 +466,9 @@ const aliCheck = (data:any) => {
check = true
return
}
if(item?.inputData){
testAliObject(item.inputData,index)
}
})
}
if(data?.events && !check){

View File

@ -0,0 +1,141 @@
import { onlyMessage } from "@/utils/comm"
export const testProperties = (data:any) =>{
}
export const testType = (data:any,index:number,isArray?:boolean,isObject?:boolean)=>{
if(data.valueType.type === 'boolean'){
if(!data?.valueType?.trueText || !data?.valueType?.trueValue || !data?.valueType?.falseText || !data?.valueType?.falseValue){
onlyMessage(`方法定义inputs第${index+1}个数组ValueType中缺失必填属性`,'error')
return true
}
}
if(data.valueType.type === 'enum' && !isObject){
if(data.valueType?.elements?.length > 0){
data.valueType.elements.forEach((a:any,b:number)=>{
if(!a.value || !a.text){
onlyMessage(`方法定义inputs第${index+1}个数组ValueType中elements缺失必填属性`,'error')
return true
}
})
}else{
onlyMessage(`方法定义inputs第${index+1}个数组ValueType中缺失elements属性`,'error')
return true
}
}
if(data.valueType.type === 'array' && !isArray && !isObject){
if(data.valueType?.elementType){
testType(data.valueType.elementType,index,true)
}else{
onlyMessage(`方法定义inputs第${index+1}个数组ValueType中缺失elementType属性`,'error')
return true
}
}
if(data.valueType.type === 'file' && !isArray && !isObject){
if(!data.valueType?.fileType){
onlyMessage(`方法定义inputs第${index+1}个数组ValueType中缺失fileType属性`,'error')
return true
}
}
if(data.valueType.type === 'object' && !isArray && !isObject){
if(data?.valueType?.properties?.length > 0){
return testObject(data.valueType.properties,index)
}else{
onlyMessage(`方法定义inputs第${index+1}个数组ValueType中缺失properties属性`,'error')
return true
}
}
}
export const testObject = (data:any,index:number)=>{
let check = false
data.forEach((i:any)=>{
if(!i?.id){
onlyMessage(`方法定义inputs第${index+1}个数组中缺失id属性`,'error')
check = true
return
}
if(!i?.name){
onlyMessage(`方法定义inputs第${index+1}个数组中缺失name属性`,'error')
check = true
return
}
if(!i?.valueType?.type){
onlyMessage(`方法定义inputs第${index+1}个数组中缺失valueType.type属性`,'error')
check = true
return
}else{
check = testType(i,index,false,true)
return
}
})
return check
}
export const testAliType = (data:any,index:number,isArray?:boolean,isObject?:boolean)=>{
if(data.dataType.type === 'boolean'){
if(!data?.dataType?.trueText || !data?.dataType?.trueValue || !data?.dataType?.falseText || !data?.dataType?.falseValue){
onlyMessage(`方法定义inputs第${index+1}个数组dataType中缺失必填属性`,'error')
return true
}
}
if(data.dataType.type === 'enum' && !isObject){
if(data.dataType?.elements?.length > 0){
data.dataType.elements.forEach((a:any,b:number)=>{
if(!a.value || !a.text){
onlyMessage(`方法定义inputs第${index+1}个数组dataType中elements缺失必填属性`,'error')
return true
}
})
}else{
onlyMessage(`方法定义inputs第${index+1}个数组dataType中缺失elements属性`,'error')
return true
}
}
if(data.dataType.type === 'array' && !isArray && !isObject){
if(data.dataType?.elementType){
testType(data.dataType.elementType,index,true)
}else{
onlyMessage(`方法定义inputs第${index+1}个数组dataType中缺失elementType属性`,'error')
return true
}
}
if(data.dataType.type === 'file' && !isArray && !isObject){
if(!data.dataType?.fileType){
onlyMessage(`方法定义inputs第${index+1}个数组dataType中缺失fileType属性`,'error')
return true
}
}
if(data.dataType.type === 'object' && !isArray && !isObject){
if(data?.dataType?.properties?.length > 0){
return testAliObject(data.dataType.properties,index)
}else{
onlyMessage(`方法定义inputs第${index+1}个数组dataType中缺失properties属性`,'error')
return true
}
}
}
export const testAliObject = (data:any,index:number)=>{
let check = false
data.forEach((i:any)=>{
if(!i?.identifier){
onlyMessage(`方法定义inputs第${index+1}个数组中缺失id属性`,'error')
check = true
return
}
if(!i?.name){
onlyMessage(`方法定义inputs第${index+1}个数组中缺失name属性`,'error')
check = true
return
}
if(!i?.dataType?.type){
onlyMessage(`方法定义inputs第${index+1}个数组中缺失dataType.type属性`,'error')
check = true
return
}else{
check = testAliType(i,index,false,true)
return
}
})
return check
}

View File

@ -52,12 +52,6 @@
requestBody.pageSize,
'value',
]"
:rules="[
{
required: true,
message: '该字段是必填字段',
},
]"
>
<j-input
v-model:value="record.value"
@ -230,16 +224,22 @@ const _send = () => {
};
let url = props.selectApi?.url;
let params
if (methodName === 'get'){
const urlParams = {};
requestBody.params.paramsTable.forEach((item) => {
if (methodName === 'get') urlParams[item.name] = item.value;
urlParams[item.name] = item.value;
if (url.includes(`{${item.name}}`))
url = url.replace(`{${item.name}}`, item.value);
});
const params = {
params = {
...JSON.parse(requestBody.code || '{}'),
...urlParams,
};
}else{
params = JSON.parse(requestBody.code || '{}')
}
server[methodObj[methodName]](url, params).then((resp: any) => {
// body
if (Object.keys(params).length === 0 && refStr.value) {