Merge branch 'dev' into dev-dictionary
This commit is contained in:
commit
b79e345cc5
|
@ -181,13 +181,13 @@ const handleMeta = (item: MenuItem, isApp: boolean) => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const findComponents = (code: string, level: number, isApp: boolean, components: any) => {
|
const findComponents = (code: string, level: number, isApp: boolean, components: any, mate: any, hasChildren: boolean) => {
|
||||||
const myComponents = components[code]
|
const myComponents = components[code]
|
||||||
if (level === 1) { // BasicLayoutPage
|
if (level === 1) { // BasicLayoutPage
|
||||||
if (myComponents) {
|
if (myComponents && !hasChildren) {
|
||||||
return h(BasicLayoutPage, {}, () => [h(defineAsyncComponent(() => myComponents()), {})])
|
return mate?.hasLayout === false ? () => myComponents() : h(BasicLayoutPage, {}, () => [h(defineAsyncComponent(() => myComponents()), {})])
|
||||||
}
|
}
|
||||||
if (isApp) {
|
if (isApp && !hasChildren) {
|
||||||
return h(BasicLayoutPage, {}, () => [h(Iframe, {})])
|
return h(BasicLayoutPage, {}, () => [h(Iframe, {})])
|
||||||
}
|
}
|
||||||
return myComponents ? () => myComponents() : BasicLayoutPage
|
return myComponents ? () => myComponents() : BasicLayoutPage
|
||||||
|
@ -268,7 +268,7 @@ export const handleMenus = (menuData: any[], components: any, level: number = 1)
|
||||||
children: item.children
|
children: item.children
|
||||||
}
|
}
|
||||||
|
|
||||||
route.component = findComponents(item.code, level, isApp, components)
|
route.component = findComponents(item.code, level, isApp, components, item.meta, !!item.chidlren?.length)
|
||||||
const extraRoute = hasExtraChildren(item, extraRouteObj)
|
const extraRoute = hasExtraChildren(item, extraRouteObj)
|
||||||
const detail_components = findDetailRouteItem(item, components)
|
const detail_components = findDetailRouteItem(item, components)
|
||||||
|
|
||||||
|
|
|
@ -197,6 +197,7 @@ import { getToken, onlyMessage } from '@/utils/comm';
|
||||||
import { useMetadataStore } from '@/store/metadata';
|
import { useMetadataStore } from '@/store/metadata';
|
||||||
import { omit } from 'lodash-es';
|
import { omit } from 'lodash-es';
|
||||||
import { Modal } from 'jetlinks-ui-components';
|
import { Modal } from 'jetlinks-ui-components';
|
||||||
|
import { testObject , testType , testAliType , testAliObject} from './valideta'
|
||||||
|
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const instanceStore = useInstanceStore();
|
const instanceStore = useInstanceStore();
|
||||||
|
@ -298,18 +299,19 @@ const requiredCheck = (data:any) =>{
|
||||||
onlyMessage(`标签定义第${index + 1}个数组中缺失valueType.type属性`,'error');
|
onlyMessage(`标签定义第${index + 1}个数组中缺失valueType.type属性`,'error');
|
||||||
check = true
|
check = true
|
||||||
return
|
return
|
||||||
|
}else{
|
||||||
|
check = testType(item,index)
|
||||||
}
|
}
|
||||||
if(!item?.expands?.source){
|
if(!item?.expands?.source){
|
||||||
onlyMessage(`属性定义第${index + 1}个数组中缺失expands.source属性`,'error');
|
onlyMessage(`属性定义第${index + 1}个数组中缺失expands.source属性`,'error');
|
||||||
check = true
|
check = true
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if((item?.expands?.source === 'device' || item?.expands?.source === 'rule') && !item?.expands?.type){
|
if((item?.expands?.source === 'device' || item?.expands?.source === 'rule') && !item?.expands?.type){
|
||||||
onlyMessage(`属性定义第${index + 1}个数组中缺失type属性`,'error');
|
onlyMessage(`属性定义第${index + 1}个数组中缺失type属性`,'error');
|
||||||
check = true
|
check = true
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
if(data?.functions && !check){
|
if(data?.functions && !check){
|
||||||
|
@ -329,6 +331,16 @@ const requiredCheck = (data:any) =>{
|
||||||
check = true
|
check = true
|
||||||
return
|
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){
|
if(data?.events && !check){
|
||||||
|
@ -401,6 +413,8 @@ const requiredCheck = (data:any) =>{
|
||||||
onlyMessage(`标签定义第${index + 1}个数组中缺失valueType.type属性`,'error');
|
onlyMessage(`标签定义第${index + 1}个数组中缺失valueType.type属性`,'error');
|
||||||
check = true
|
check = true
|
||||||
return
|
return
|
||||||
|
}else{
|
||||||
|
testType(item?.valueType?.type,index)
|
||||||
}
|
}
|
||||||
if(!item?.expands?.type){
|
if(!item?.expands?.type){
|
||||||
onlyMessage(`标签定义第${index + 1}个数组中缺失expands.type属性`,'error');
|
onlyMessage(`标签定义第${index + 1}个数组中缺失expands.type属性`,'error');
|
||||||
|
@ -430,6 +444,8 @@ const aliCheck = (data:any) => {
|
||||||
onlyMessage(`属性定义第${index + 1}个数组中缺失dataType.type属性`,'error');
|
onlyMessage(`属性定义第${index + 1}个数组中缺失dataType.type属性`,'error');
|
||||||
check = true
|
check = true
|
||||||
return
|
return
|
||||||
|
}else{
|
||||||
|
testAliType(item,index)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -450,6 +466,9 @@ const aliCheck = (data:any) => {
|
||||||
check = true
|
check = true
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if(item?.inputData){
|
||||||
|
testAliObject(item.inputData,index)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
if(data?.events && !check){
|
if(data?.events && !check){
|
||||||
|
|
|
@ -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
|
||||||
|
}
|
|
@ -52,12 +52,6 @@
|
||||||
requestBody.pageSize,
|
requestBody.pageSize,
|
||||||
'value',
|
'value',
|
||||||
]"
|
]"
|
||||||
:rules="[
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
message: '该字段是必填字段',
|
|
||||||
},
|
|
||||||
]"
|
|
||||||
>
|
>
|
||||||
<j-input
|
<j-input
|
||||||
v-model:value="record.value"
|
v-model:value="record.value"
|
||||||
|
@ -230,16 +224,22 @@ const _send = () => {
|
||||||
};
|
};
|
||||||
|
|
||||||
let url = props.selectApi?.url;
|
let url = props.selectApi?.url;
|
||||||
const urlParams = {};
|
let params
|
||||||
requestBody.params.paramsTable.forEach((item) => {
|
if (methodName === 'get'){
|
||||||
if (methodName === 'get') urlParams[item.name] = item.value;
|
const urlParams = {};
|
||||||
|
requestBody.params.paramsTable.forEach((item) => {
|
||||||
|
urlParams[item.name] = item.value;
|
||||||
if (url.includes(`{${item.name}}`))
|
if (url.includes(`{${item.name}}`))
|
||||||
url = url.replace(`{${item.name}}`, item.value);
|
url = url.replace(`{${item.name}}`, item.value);
|
||||||
});
|
});
|
||||||
const params = {
|
params = {
|
||||||
...JSON.parse(requestBody.code || '{}'),
|
...JSON.parse(requestBody.code || '{}'),
|
||||||
...urlParams,
|
...urlParams,
|
||||||
};
|
};
|
||||||
|
}else{
|
||||||
|
params = JSON.parse(requestBody.code || '{}')
|
||||||
|
}
|
||||||
|
|
||||||
server[methodObj[methodName]](url, params).then((resp: any) => {
|
server[methodObj[methodName]](url, params).then((resp: any) => {
|
||||||
// 如果用户没填写参数且有body的情况下,给用户展示请求示例
|
// 如果用户没填写参数且有body的情况下,给用户展示请求示例
|
||||||
if (Object.keys(params).length === 0 && refStr.value) {
|
if (Object.keys(params).length === 0 && refStr.value) {
|
||||||
|
|
Loading…
Reference in New Issue