fix: 优化物模型-规则

This commit is contained in:
XieYongHong 2023-07-06 15:59:10 +08:00
parent 590a82b156
commit 3065cd88c2
6 changed files with 88 additions and 47 deletions

View File

@ -7,6 +7,9 @@
placeholder="搜索关键字"
/>
<div class="tree">
<j-scrollbar>
<j-tree
@select="selectTree"
:field-names="{ title: 'name', key: 'id' }"
@ -25,6 +28,9 @@
>
<j-popover
v-if="node.type === 'property'"
:overlayStyle="{
zIndex: 1200
}"
placement="right"
title="请选择使用值"
>
@ -54,14 +60,15 @@
</j-tooltip>
</j-space>
</template>
<a>添加</a>
<a class="has-property">添加</a>
</j-popover>
<a v-else @click="addClick(node)"> 添加 </a>
<a class="no-property" v-else @click.stop="addClick(node)"> 添加 </a>
</div>
</div>
</template>
</j-tree>
</j-scrollbar>
</div>
</div>
<div class="right">
@ -114,6 +121,7 @@ const lastClick = (node: OperatorItem) => {
emit('addOperatorValue', `$lastState("${node.id}")`);
};
const addClick = (node: OperatorItem) => {
console.log(node)
emit('addOperatorValue', node.code);
};
@ -179,7 +187,7 @@ watch(
.tree {
height: 300px;
overflow-y: auto;
//overflow-y: auto;
.node {
display: flex;
@ -197,4 +205,9 @@ watch(
padding: 20px;
}
}
</style>
<style>
.rule-popover {
z-index: 1200;
}
</style>

View File

@ -82,6 +82,7 @@ const aggType = computed(() => {
const editor = ref();
const addOperatorValue = (val: string) => {
console.log(val)
editor.value.addOperatorValue(val);
};
</script>

View File

@ -32,6 +32,47 @@ const type = {
report: '上报',
};
export const typeSelectChange = (type: string) => {
let obj: any = {}
switch (type) {
case 'array':
obj.elementType = {}
break;
case 'object':
obj.properties = []
break;
case 'enum':
obj.elements = []
break;
case 'float':
case 'double':
obj.scale = 2
obj.unit = undefined
break;
case 'int':
case 'long':
obj.unit = undefined
break;
case 'file':
obj.fileType = undefined
break;
case 'date':
obj.format = undefined
break;
case 'string':
case 'password':
obj.maxLength = undefined
break;
case 'boolean':
obj.trueText = '是'
obj.trueValue = 'true'
obj.falseText = '否'
obj.falseValue = 'false'
break;
}
return obj
}
export const useColumns = (type?: MetadataType, target?: 'device' | 'product', dataSource?: Ref<any[]>, noEdit?: Ref<any>) => {
const BaseColumns: DataTableColumnProps[] = [

View File

@ -88,6 +88,7 @@ import {
} from 'jetlinks-ui-components';
import DataTypeObjectChild from './DataTypeObjectChild.vue';
import { cloneDeep } from 'lodash-es';
import { typeSelectChange } from '../columns'
const props = defineProps({
value: {
@ -105,42 +106,7 @@ const _valueType = ref(cloneDeep(props.value.valueType));
const typeChange = (e: string) => {
let obj: any = {}
switch (e) {
case 'array':
obj.elementType = {}
break;
case 'object':
obj.properties = []
break;
case 'enum':
obj.elements = []
break;
case 'float':
case 'double':
obj.scale = 2
obj.unit = undefined
case 'int':
case 'long':
obj.unit = undefined
break;
case 'file':
obj.fileType = undefined
break;
case 'date':
obj.format = undefined
break;
case 'string':
case 'password':
obj.maxLength = undefined
break;
case 'boolean':
obj.trueText = '是'
obj.trueValue = 'true'
obj.falseText = '否'
obj.falseValue = 'false'
break;
}
let obj: any = typeSelectChange(e)
_valueType.value = obj
emit('update:value', {
...props.value,

View File

@ -1,5 +1,5 @@
<template>
<DataTableTypeSelect v-model:value="type" :filter="['object']">
<DataTableTypeSelect v-model:value="type" :filter="['object']" @change="change">
</DataTableTypeSelect>
</template>
@ -11,6 +11,7 @@ import {
DataTableObject,
} from 'jetlinks-ui-components';
import { DataType } from '../index'
import {typeSelectChange} from "@/views/device/components/Metadata/Base/columns";
type Emits = {
@ -37,6 +38,18 @@ const props = defineProps({
const type = ref(props.value.valueType?.type || null);
const change = (e: string) => {
console.log(e)
const obj = typeSelectChange(e)
emit('update:value', {
...props.value,
valueType: {
type: type.value,
...obj
}
})
}
watch(
() => props.value,
(newV) => {
@ -45,12 +58,6 @@ watch(
{ immediate: true },
);
watch(() => type.value, () => {
emit('update:value', {
...props.value,
valueType: { type: type.value}
})
})
</script>
<style scoped></style>

View File

@ -3,7 +3,7 @@
<div class="input-params-text">
{{ value?.map((item) => item.name).join(',') }}
</div>
<DataTableObject v-model:value="value" :columns="columns">
<DataTableObject v-model:value="value" :columns="columns" :addItem="addItem" c>
<template #valueType="{ data }">
<span>{{ data.record.valueType?.type }}</span>
</template>
@ -27,6 +27,19 @@ import {
} from 'jetlinks-ui-components';
import { ConstraintSelect, OtherConfigInfo, ValueObject } from '../index'
const addItem = () => {
return {
id: undefined,
name: undefined,
valueType: {
},
expands: {
required: false
}
}
}
const columns = [
{ title: '参数标识', dataIndex: 'id', type: 'text', form: { required: true, rules: [{ required: true, message: '请输入标识'}]} },
{ title: '参数名称', dataIndex: 'name', type: 'text', form: { required: true, rules: [{ required: true, message: '请输入名称'}]} },