Bladeren bron

1、api数据源优化,请求参数调整为分组
2、设备列表新增启用停用操作

yukai 3 jaren geleden
bovenliggende
commit
4fb9b8b7d1

+ 2 - 0
src/api/device/index.ts

@@ -34,6 +34,8 @@ export default {
     getLogDetail: (params: object) => get('/product/device/property/list', params),
     devonline: (data: object) => post('/product/device/online', data),
     devoffline: (data: object) => post('/product/device/offline', data),
+    devdeploy: (data: object) => post('/product/device/deploy', data),
+    devundeploy: (data: object) => post('/product/device/undeploy', data),
   },
   dept: {
     getList: (params: object) => get('/system/dept/tree', params),

+ 0 - 7
src/views/datahub/modeling/component/edit.vue

@@ -126,8 +126,6 @@ export default defineComponent({
 				state.zidianData = res.values;
 				
 			});
-
-
 			api.template.cityTree({status:1}).then((res: any) => {
 				state.cityData = res;
 			});
@@ -137,11 +135,6 @@ export default defineComponent({
 				state.ruleForm.busiTypes=row.dataTemplateBusi.busiTypes.toString();
 				state.ruleForm.busiId=row.dataTemplateBusi.busiId;
 			}
-
-
-
-		
-
 			state.isShowDialog = true;
 		};
 		const resetForm = () => {

+ 121 - 107
src/views/datahub/source/component/edit.vue

@@ -3,7 +3,7 @@
 		<el-dialog :title="(ruleForm.sourceId !== 0 ? '修改' : '添加') + '数据源'" v-model="isShowDialog" width="769px">
 			<el-form :model="ruleForm" ref="formRef" :rules="rules" size="default" label-width="110px">
 				<el-form-item label="数据源标识" prop="key">
-					<el-input v-model="ruleForm.key" placeholder="请输入数据源名称"  :disabled="ruleForm.sourceId"/>
+					<el-input v-model="ruleForm.key" placeholder="请输入数据源名称" :disabled="ruleForm.sourceId" />
 				</el-form-item>
 				<el-form-item label="数据源名称" prop="name">
 					<el-input v-model="ruleForm.name" placeholder="请输入数据源名称" />
@@ -42,61 +42,73 @@
 				</div> -->
 				<el-divider content-position="left">数据源配置</el-divider>
 
-				<div v-if="ruleForm.from==1">
-
-						<el-form-item label="请求方法">
-							<el-select v-model="config.method" placeholder="请选择请求方法">
-								<el-option v-for="item in methodData" :key="item.value" :label="item.label" :value="item.value" />
-							</el-select>
-						</el-form-item>
+				<div v-if="ruleForm.from == 1">
+					<el-form-item label="请求方法">
+						<el-select v-model="config.method" placeholder="请选择请求方法">
+							<el-option v-for="item in methodData" :key="item.value" :label="item.label" :value="item.value" />
+						</el-select>
+					</el-form-item>
 
-						<el-form-item label="请求地址">
-							<el-input v-model="config.url" placeholder="请输入请求地址" />
-						</el-form-item>
+					<el-form-item label="请求地址">
+						<el-input v-model="config.url" placeholder="请输入请求地址" />
+					</el-form-item>
 
-						
-						<el-form-item label="定时请求">
-							<el-input v-model="config.cronExpression" placeholder="请输入cron表达式" />
-							<ul style="list-style: none;">
-								<li><el-icon><ele-WarningFilled /></el-icon> */5 * * * * ? : 每隔5秒执行一次</li>
-								<li><el-icon><ele-WarningFilled /></el-icon> 20 */1 * * * ? : 每隔1分钟执行一次</li>
-								<li><el-icon><ele-WarningFilled /></el-icon> 30 0 23 * * ? : 每天23点执行一次</li>
-								<li><el-icon><ele-WarningFilled /></el-icon> 0 0 1 * * ? : 每天凌晨1点执行一次</li>
-								<li><el-icon><ele-WarningFilled /></el-icon> 0 0 1 1 * ? : 每月1号凌晨1点执行一次</li>
-							</ul>
-						</el-form-item>
+					<el-form-item label="定时请求">
+						<el-input v-model="config.cronExpression" placeholder="请输入cron表达式" />
+						<ul style="list-style: none">
+							<li>
+								<el-icon><ele-WarningFilled /></el-icon> */5 * * * * ? : 每隔5秒执行一次
+							</li>
+							<li>
+								<el-icon><ele-WarningFilled /></el-icon> 20 */1 * * * ? : 每隔1分钟执行一次
+							</li>
+							<li>
+								<el-icon><ele-WarningFilled /></el-icon> 30 0 23 * * ? : 每天23点执行一次
+							</li>
+							<li>
+								<el-icon><ele-WarningFilled /></el-icon> 0 0 1 * * ? : 每天凌晨1点执行一次
+							</li>
+							<li>
+								<el-icon><ele-WarningFilled /></el-icon> 0 0 1 1 * ? : 每月1号凌晨1点执行一次
+							</li>
+						</ul>
+					</el-form-item>
 
-						<!-- <el-form-item label="更新时间">
+					<!-- <el-form-item label="更新时间">
 							<el-input v-model="config.interval" placeholder="请输入更新时间" class="w-35" />
 							<el-select v-model="config.intervalUnit" placeholder="请选择单位">
 								<el-option v-for="item in unitData" :key="item.value" :label="item.label" :value="item.value" />
 							</el-select>
 						</el-form-item> -->
-				
 
-						<div class="box-content">
-							<el-divider content-position="left">请求参数</el-divider>
-							<div class="content-f" v-for="(item, index) in requestParams" :key="index">
-								<el-select v-model="item.type" placeholder="参数类型" style="width: 320px">
+					<div class="box-content">
+						<el-divider content-position="left">请求参数</el-divider>
+
+						<div>
+						<div v-for="(item, index) in requestParams" :key="index" style="padding: 10px; border: 1px solid #eee;">
+							<div class="content-f" v-for="(aaa, bbb) in item" :key="bbb">
+								<el-select v-model="aaa.type" placeholder="参数类型" style="width: 320px">
 									<el-option v-for="item in paramData" :key="item.value" :label="item.label" :value="item.value" />
 								</el-select>
-								<el-input v-model="item.name" placeholder="请输入参数标题" style="width: 320px" />
-								<el-input v-model="item.key" placeholder="请输入参数名" style="width: 320px" />
-								<el-input v-model="item.value" placeholder="请输入参数值" style="width: 320px" />
+								<el-input v-model="aaa.name" placeholder="请输入参数标题" style="width: 320px" />
+								<el-input v-model="aaa.key" placeholder="请输入参数名" style="width: 320px" />
+								<el-input v-model="aaa.value" placeholder="请输入参数值" style="width: 320px" />
 								<div class="conicon">
-									<el-icon @click="delParams(index)" ><Delete /></el-icon>
+									<el-icon @click="delParamss(index,bbb)"><Delete /></el-icon>
 								</div>
 							</div>
-							<el-button type="primary" class="addbutton" @click="addParams">增加</el-button>
+							<el-button type="primary" class="addbutton" @click="addParams(index)">增加</el-button>
+							<div style=""></div>
+							<el-button type="danger" class="addbutton" @click="delParams(index)">删除分组</el-button>
+							
 						</div>
+						
+</div>
+					</div>
+					<el-button type="success" class="addbutton" @click="addParamss">增加分组</el-button>
 				</div>
 
-
-
-
-				<div v-if="ruleForm.from==4">
-
-
+				<div v-if="ruleForm.from == 4">
 					<el-form-item label="选择设备">
 						<el-select v-model="devconfig.deviceKey" filterable placeholder="请选择设备" @change="setNode">
 							<el-option v-for="item in sourceData" :key="item.id" :label="item.key" :value="item.id">
@@ -105,7 +117,7 @@
 							</el-option>
 						</el-select>
 					</el-form-item>
-						<!-- <el-form-item label="主机地址" >
+					<!-- <el-form-item label="主机地址" >
 							<el-input v-model="devconfig.host" placeholder="请输入主机地址"   />
 						</el-form-item>
 
@@ -135,47 +147,33 @@
 								<el-option v-for="item in unitData" :key="item.value" :label="item.label" :value="item.value" />
 							</el-select>
 						</el-form-item> -->
-
 				</div>
-
-
-
-
-
-
-
 			</el-form>
 			<template #footer>
 				<span class="dialog-footer">
-
-					<el-button @click="onTest" type="warning" size="default" v-if="ruleForm.sourceId>0">测试</el-button>
+					<el-button @click="onTest" type="warning" size="default" v-if="ruleForm.sourceId > 0">测试</el-button>
 					<el-button @click="onCancel" size="default">取 消</el-button>
 					<el-button type="primary" @click="onSubmit" size="default">{{ ruleForm.sourceId !== 0 ? '修 改' : '添 加' }}</el-button>
 				</span>
 			</template>
 		</el-dialog>
 
-		<el-dialog
-				v-model="dialogVisible"
-				title="返回Json数据"
-				width="30%"
-			>
-					<JsonViewer :value="jsonData"  boxed sort theme="jv-dark" @click="onKeyclick" />
+		<el-dialog v-model="dialogVisible" title="返回Json数据" width="30%">
+			<JsonViewer :value="jsonData" boxed sort theme="jv-dark" @click="onKeyclick" />
 
-				<template #footer>
+			<template #footer>
 				<span class="dialog-footer">
 					<el-button @click="dialogVisible = false">关闭</el-button>
-				
 				</span>
-				</template>
-			</el-dialog>
+			</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 'vue3-json-viewer/dist/index.css';
 
 import { ElMessage } from 'element-plus';
 import { Delete, Minus, Right } from '@element-plus/icons-vue';
@@ -205,12 +203,12 @@ export default defineComponent({
 		const formRef = ref<HTMLElement | null>(null);
 		const state = reactive<DicState>({
 			isShowDialog: false,
-			dialogVisible:false,
+			dialogVisible: false,
 			config: {},
 			devconfig: {},
 			sourceData: [],
-			sourceId:0,
-			jsonData:'',
+			sourceId: 0,
+			jsonData: '',
 			ruledata: [
 				{
 					expression: '',
@@ -229,7 +227,14 @@ export default defineComponent({
 				},
 			],
 			requestParams: [
-				
+				[
+					{
+						type: '',
+						key: '',
+						name: '',
+						value: '',
+					},
+				],
 			],
 			methodData: [
 				{
@@ -305,8 +310,24 @@ export default defineComponent({
 			state.requestParams.splice(index, 1);
 		};
 
-		const addParams = () => {
-			state.requestParams.push({
+		const delParamss = (index,bbb) => {
+			state.requestParams[index].splice(bbb, 1);
+		};
+
+		const addParamss = () => {
+			state.requestParams.push([
+				{
+					type: '',
+					key: '',
+					name: '',
+					value: '',
+				},
+			]);
+
+			console.log(state.requestParams);
+		};
+		const addParams = (index) => {
+			state.requestParams[index].push({
 				type: '',
 				key: '',
 				name: '',
@@ -332,14 +353,16 @@ export default defineComponent({
 		const openDialog = (row: RuleFormState | null) => {
 			resetForm();
 			getDevData();
+
+			console.log(state.requestParams);
 			if (row) {
-				state.sourceId=row.sourceId
+				state.sourceId = row.sourceId;
 				api.common.detail(row.sourceId).then((res: any) => {
 					state.ruleForm = res.data;
-					if(res.data.from==1){
+					if (res.data.from == 1) {
 						state.config = res.data.apiConfig;
 						state.requestParams = res.data.apiConfig.requestParams;
-					}else if(res.data.from==4){
+					} else if (res.data.from == 4) {
 						state.devconfig = res.data.deviceConfig;
 					}
 					res.data.sourceRule.forEach((item, index) => {
@@ -352,16 +375,15 @@ export default defineComponent({
 			}
 			state.isShowDialog = true;
 		};
-		const onKeyclick=(e)=>{
-			if(e.target.innerText && e.target.className=='jv-key'){
-				let str = e.target.innerText;  
+		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.devconfig = {};
 			state.ruleForm = {
 				sourceId: 0,
 				name: '',
@@ -388,11 +410,9 @@ export default defineComponent({
 		};
 
 		const getDevData = () => {
-			api.common
-				.getdevList({})
-				.then((res: any) => {
-					state.sourceData = res.device;
-				});
+			api.common.getdevList({}).then((res: any) => {
+				state.sourceData = res.device;
+			});
 		};
 
 		const setNode = (event) => {
@@ -404,21 +424,20 @@ export default defineComponent({
 			});
 		};
 
-		const onTest=()=>{
-			if(state.ruleForm.from==1){
+		const onTest = () => {
+			if (state.ruleForm.from == 1) {
 				api.common.api(state.sourceId).then((res: any) => {
-					state.jsonData=JSON.parse(res.data);
-					state.dialogVisible=true
-						console.log(res);
-				})
-			}else if(state.ruleForm.from==4){
+					state.jsonData = JSON.parse(res.data);
+					state.dialogVisible = true;
+					console.log(res);
+				});
+			} else if (state.ruleForm.from == 4) {
 				api.common.devapi(state.sourceId).then((res: any) => {
-					state.jsonData=JSON.parse(res.data);
-					state.dialogVisible=true
-						console.log(res);
-				})
+					state.jsonData = JSON.parse(res.data);
+					state.dialogVisible = true;
+					console.log(res);
+				});
 			}
-			
 		};
 		// 新增
 		const onSubmit = () => {
@@ -434,41 +453,38 @@ export default defineComponent({
 					// });
 
 					state.ruleForm.rule = state.rule;
-					if(state.ruleForm.from==1 ){
+					if (state.ruleForm.from == 1) {
 						state.config.requestParams = state.requestParams;
 						state.ruleForm.config = state.config;
-					}else if(state.ruleForm.from==4 ){
+					} else if (state.ruleForm.from == 4) {
 						state.ruleForm.config = state.devconfig;
 					}
-					
+
 					if (state.ruleForm.sourceId !== 0) {
 						//修改
 
-						if(state.ruleForm.from==1 ){
+						if (state.ruleForm.from == 1) {
 							api.common.edit(state.ruleForm).then(() => {
 								ElMessage.success('数据源类型修改成功');
 								closeDialog(); // 关闭弹窗
 								emit('typeList');
 							});
-						}else if(state.ruleForm.from==4 ){
+						} else if (state.ruleForm.from == 4) {
 							api.common.devedit(state.ruleForm).then(() => {
 								ElMessage.success('数据源类型修改成功');
 								closeDialog(); // 关闭弹窗
 								emit('typeList');
 							});
 						}
-
-
-
 					} else {
 						//添加
-						if(state.ruleForm.from==1 ){
+						if (state.ruleForm.from == 1) {
 							api.common.add(state.ruleForm).then(() => {
 								ElMessage.success('数据源类型添加成功');
 								closeDialog(); // 关闭弹窗
 								emit('typeList');
 							});
-						}else if(state.ruleForm.from==4 ){
+						} else if (state.ruleForm.from == 4) {
 							api.common.devadd(state.ruleForm).then(() => {
 								ElMessage.success('数据源类型添加成功');
 								closeDialog(); // 关闭弹窗
@@ -485,6 +501,8 @@ export default defineComponent({
 			addRule,
 			delRule,
 			addParams,
+			addParamss,
+			delParamss,
 			delParams,
 			onKeyclick,
 			openDialog,
@@ -501,7 +519,6 @@ export default defineComponent({
 });
 </script>
 <style>
-
 .el-input__wrapper {
 	width: 98%;
 }
@@ -531,10 +548,7 @@ export default defineComponent({
 	line-height: 28px;
 	cursor: pointer;
 }
-.jv-node{
+.jv-node {
 	margin-left: 25px;
 }
-
-
-
 </style>

+ 16 - 0
src/views/device/instance/index.vue

@@ -76,6 +76,8 @@
               <span>详情</span>
             </router-link>
             <el-button size="small" text type="warning" @click="onOpenEditDic(scope.row)">修改</el-button>
+            <el-button size="small" text type="success" @click="onActionStatus(scope.row)" v-if="scope.row.status==0">启用</el-button>
+            <el-button size="small" text type="primary" @click="onActionStatus(scope.row)" v-if="scope.row.status>0">停用</el-button>
             <el-button size="small" text type="danger" @click="onRowDel(scope.row)">删除</el-button>
           </template>
         </el-table-column>
@@ -208,11 +210,25 @@ export default defineComponent({
 		const handleSelectionChange = (selection: TableDataRow[]) => {
 			state.ids = selection.map((item) => item.id);
 		};
+		const onActionStatus=(item:TableDataRow[])=>{
+			if(item.status==0){
+				api.instance.devdeploy({id:item.id}).then((res: any) => {
+						typeList();
+						ElMessage.success(res.message || '操作成功');
+				});
+			}else{
+				api.instance.devundeploy({id:item.id}).then((res: any) => {
+						typeList();
+						ElMessage.success(res.message || '操作成功');
+				});
+			}
+		}
 		return {
 			addDicRef,
 			editDicRef,
 			detailRef,
 			queryRef,
+			onActionStatus,
 			onOpenDetail,
 			onOpenAddDic,
 			onOpenEditDic,