Procházet zdrojové kódy

1、修改建模节点和数据源数据节点数据类型选择
2、数据源添加节点的时候 为api 选择json 数据key值
3、数据源添加节点的时候 为设备时取值项为物模型属性的key

yukai před 3 roky
rodič
revize
9df1ba7cfa

+ 1 - 0
src/api/datahub/index.ts

@@ -23,6 +23,7 @@ export default {
       add: (data: object) => post('/source/node/add', data),
       delete: (nodeId: number) => del('/source/node/del', { nodeId }),
       edit: (data: object) => put('/source/node/edit', data),
+      getpropertyList: (params: object) => get('/product/tsl/property/all', params),
    },
 
    template:{

+ 8 - 20
src/views/datahub/modeling/component/editNode.vue

@@ -136,24 +136,12 @@ export default defineComponent({
 			],
 			tabData: [
 				{
-					label: 'varchar',
-					value: 'varchar',
-				},
-				{
-					label: 'string',
-					value: 'string',
-				},
-				{
 					label: 'int',
 					value: 'int',
 				},
 				{
-					label: 'bigint',
-					value: 'bigint',
-				},
-				{
-					label: 'tinyint',
-					value: 'tinyint',
+					label: 'long',
+					value: 'long',
 				},
 				{
 					label: 'float',
@@ -164,16 +152,16 @@ export default defineComponent({
 					value: 'double',
 				},
 				{
-					label: 'text',
-					value: 'text',
+					label: 'string',
+					value: 'string',
 				},
 				{
-					label: 'datetime',
-					value: 'datetime',
+					label: 'boolean',
+					value: 'boolean',
 				},
 				{
-					label: 'timestamp',
-					value: 'timestamp',
+					label: 'date',
+					value: 'date',
 				},
 			],
 

+ 1 - 1
src/views/datahub/modeling/index.vue

@@ -64,7 +64,7 @@
         </el-table-column>
 				<el-table-column prop="createdAt" label="创建时间"  width="200" align="center"></el-table-column>
 
-				<el-table-column label="操作" width="180" align="center" fixed="right">
+				<el-table-column label="操作" width="280" align="center" fixed="right">
 					<template #default="scope">
 						<router-link
 							:to="'/datahub/modeling/detail/' + scope.row.id"

+ 15 - 11
src/views/datahub/source/component/edit.vue

@@ -146,9 +146,8 @@
 				v-model="dialogVisible"
 				title="返回Json数据"
 				width="30%"
-				:before-close="handleClose"
 			>
-				<json-viewer :value="jsonData"  boxed sort :expand-depth=20 theme="my-awesome-json-theme" />
+					<JsonViewer :value="jsonData"  boxed sort theme="jv-dark" @click="onKeyclick" />
 
 				<template #footer>
 				<span class="dialog-footer">
@@ -163,6 +162,7 @@
 <script lang="ts">
 import { reactive, toRefs, defineComponent, ref, unref } from 'vue';
 import api from '/@/api/datahub';
+import "vue3-json-viewer/dist/index.css";
 
 import { ElMessage } from 'element-plus';
 import { Delete, Minus, Right } from '@element-plus/icons-vue';
@@ -188,6 +188,7 @@ export default defineComponent({
 	components: { Delete, Minus, Right },
 
 	setup(prop, { emit }) {
+		const myRef = ref<HTMLElement | null>(null);
 		const formRef = ref<HTMLElement | null>(null);
 		const state = reactive<DicState>({
 			isShowDialog: false,
@@ -343,6 +344,14 @@ export default defineComponent({
 			}
 			state.isShowDialog = true;
 		};
+		const onKeyclick=(e)=>{
+			if(e.target.innerText && e.target.className=='jv-key'){
+				let str = e.target.innerText;  
+				str = str.substr(0, str.length - 1);
+				console.log(str);
+			}
+			
+		};
 		const resetForm = () => {
 			state.devconfig={};
 			state.ruleForm = {
@@ -469,6 +478,7 @@ export default defineComponent({
 			delRule,
 			addParams,
 			delParams,
+			onKeyclick,
 			openDialog,
 			setNode,
 			closeDialog,
@@ -476,6 +486,7 @@ export default defineComponent({
 			onCancel,
 			onSubmit,
 			formRef,
+			myRef,
 			...toRefs(state),
 		};
 	},
@@ -515,14 +526,7 @@ export default defineComponent({
 .jv-node{
 	margin-left: 25px;
 }
-.jv-my-awesome-json-theme {
-	background: #d9f1e9;
-  white-space: nowrap;
-  color: #525252;
-  font-size: 14px;
-  font-family: Consolas, Menlo, Courier, monospace;
-
- 
-}
+
+
 
 </style>

+ 87 - 23
src/views/datahub/source/component/editNode.vue

@@ -22,8 +22,17 @@
 					</el-select>
 				</el-form-item>
 
-				<el-form-item label="取值项" prop="value">
-					<el-input v-model="ruleForm.value" placeholder="请输入取值项" />
+				<el-form-item label="取值项" prop="value" v-if="detail.from==1">
+					<el-input v-model="ruleForm.value" placeholder="请输入取值项" class="w-35" /><el-button type="success" @click="onTest">选择值</el-button>
+
+				</el-form-item>
+				<el-form-item label="取值项" prop="value" v-if="detail.from==4">
+					<el-select v-model="ruleForm.value" filterable placeholder="请选择数取值项" @change="getNodeList">
+							<el-option v-for="item in propertyData" :key="item.key" :label="item.name" :value="item.key">
+								<span style="float: left">{{ item.key }}</span>
+								<span style="float: right; font-size: 13px">{{ item.name }}</span>
+							</el-option>
+						</el-select>
 				</el-form-item>
 
 				<el-divider content-position="left">规则表达式</el-divider>
@@ -53,12 +62,29 @@
 				</span>
 			</template>
 		</el-dialog>
+
+		<el-dialog
+				v-model="dialogVisible"
+				title="点击蓝色key值进行选择"
+				width="30%"
+			>
+					<JsonViewer :value="jsonData"  boxed sort theme="jv-dark" @click="onKeyclick" />
+
+				<template #footer>
+				<span class="dialog-footer">
+					<el-button @click="dialogVisible = false">关闭</el-button>
+				
+				</span>
+				</template>
+			</el-dialog>
 	</div>
 </template>
 
 <script lang="ts">
 import { reactive, toRefs, defineComponent, ref, unref } from 'vue';
 import api from '/@/api/datahub';
+import "vue3-json-viewer/dist/index.css";
+
 import { ElMessage } from 'element-plus';
 import { Delete, Minus, Right } from '@element-plus/icons-vue';
 
@@ -88,27 +114,19 @@ export default defineComponent({
 		const formRef = ref<HTMLElement | null>(null);
 		const state = reactive<DicState>({
 			isShowDialog: false,
+			dialogVisible:false,
+			jsonData:'',
+			propertyData:[],
 			config: {},
+			detail:{},
 			tabData: [
-				{
-					label: 'varchar',
-					value: 'varchar',
-				},
-				{
-					label: 'string',
-					value: 'string',
-				},
-				{
+			{
 					label: 'int',
 					value: 'int',
 				},
 				{
-					label: 'bigint',
-					value: 'bigint',
-				},
-				{
-					label: 'tinyint',
-					value: 'tinyint',
+					label: 'long',
+					value: 'long',
 				},
 				{
 					label: 'float',
@@ -119,16 +137,16 @@ export default defineComponent({
 					value: 'double',
 				},
 				{
-					label: 'text',
-					value: 'text',
+					label: 'string',
+					value: 'string',
 				},
 				{
-					label: 'datetime',
-					value: 'datetime',
+					label: 'boolean',
+					value: 'boolean',
 				},
 				{
-					label: 'timestamp',
-					value: 'timestamp',
+					label: 'date',
+					value: 'date',
 				},
 			],
 			ruledata: [
@@ -172,6 +190,23 @@ export default defineComponent({
 			},
 		});
 
+		const onTest=()=>{
+			if(state.detail.from==1){
+				api.common.api(state.detail.sourceId).then((res: any) => {
+					state.jsonData=JSON.parse(res.data);
+					state.dialogVisible=true
+						console.log(res);
+				})
+			}else if(state.detail.from==4){
+				api.common.devapi(state.detail.sourceId).then((res: any) => {
+					state.jsonData=JSON.parse(res.data);
+					state.dialogVisible=true
+						console.log(res);
+				})
+			}
+			
+		};
+
 		const delRule = (index) => {
 			state.rule.splice(index, 1);
 		};
@@ -202,8 +237,20 @@ export default defineComponent({
 					// state.rule[index].params.name = Object.keys(item.params);
 					// state.rule[index].params.value = item.params[Object.keys(item.params)];
 				});
+
+			
 			}
 
+				api.common.detail(row.sourceId).then((res: any) => {
+					state.detail = res.data;
+					if(res.data.from==4){
+						//propertyData
+						api.node.getpropertyList({key:res.data.deviceConfig.productKey}).then((re: any) => {
+							state.propertyData=re
+						});
+					}
+				});
+
 			state.ruleForm = row;
 			state.isShowDialog = true;
 		};
@@ -262,8 +309,20 @@ export default defineComponent({
 			});
 		};
 
+		const onKeyclick=(e)=>{
+			if(e.target.innerText && e.target.className=='jv-key'){
+				let str = e.target.innerText;  
+				str = str.substr(0, str.length - 1);
+				state.ruleForm.value=str;
+				state.dialogVisible = false;
+			}
+			
+		};
+
 		return {
+			onKeyclick,
 			addRule,
+			onTest,
 			delRule,
 			openDialog,
 			closeDialog,
@@ -305,4 +364,9 @@ export default defineComponent({
 	line-height: 28px;
 	cursor: pointer;
 }
+.jv-key{
+	cursor: pointer;
+	color: #0034f1;
+
+}
 </style>