Răsfoiți Sursa

1、完成数据源数据库源
2、完成数据库数据记录
3、完成数据库数据记录查看
4、屏蔽添加模型单元数据
5、修改数据源详情根据源不同显示

yukai 3 ani în urmă
părinte
comite
19c2cdf065

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

@@ -19,6 +19,12 @@ export default {
     getLists: (params: object) => get('/source/list', params),
     copy: (params: object) => post('/source/copy', params),
 
+    dbadd: (data: object) => post('/source/db/add', data),
+    dbedit: (data: object) => put('/source/db/edit', data),
+    getfields: (sourceId: number) => get('/source/db/fields', { sourceId }),
+
+    devdb: (sourceId: number) => get('/source/db/get', { sourceId }),
+
     },
    
    node:{

+ 2 - 2
src/views/datahub/modeling/component/edit.vue

@@ -39,14 +39,14 @@
 					</el-select>
 				</el-form-item>
 
-				<el-form-item label="单元数据" prop="busiId">
+				<!-- <el-form-item label="单元数据" prop="busiId">
 					<el-cascader :options="cityData" :props="{ checkStrictly: true,emitPath: false, value: 'id', label: 'name' }" placeholder="请选择单元数据" clearable class="w100" v-model="ruleForm.busiId">
 							<template #default="{ node, data }">
 							<span>{{ data.name }}</span>
 							<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
 							</template>
              	 </el-cascader>
-				</el-form-item>
+				</el-form-item> -->
 			</el-form>
 			<template #footer>
 				<span class="dialog-footer">

+ 76 - 0
src/views/datahub/source/component/edit.vue

@@ -19,6 +19,7 @@
 						<!-- <el-radio :label="2">数据库</el-radio>
 						<el-radio :label="3">文件</el-radio> -->
 						<el-radio :label="4">设备</el-radio>
+						<el-radio :label="2">数据库</el-radio>
 					</el-radio-group>
 				</el-form-item>
 
@@ -158,6 +159,60 @@
 							</el-select>
 						</el-form-item> -->
 				</div>
+
+				<div v-if="ruleForm.from == 2">
+
+					<el-form-item label="数据来源" prop="type">
+					<el-radio-group v-model="tabconfig.type" >
+						<el-radio label="mysql">mysql</el-radio>
+						<el-radio label="mssql">mssql</el-radio>
+					
+					</el-radio-group>
+				</el-form-item>
+
+					<el-form-item label="主机地址" >
+							<el-input v-model="tabconfig.host" placeholder="请输入主机地址"   />
+						</el-form-item>
+
+						<el-form-item label="端口号">
+							<el-input v-model="tabconfig.port" placeholder="请输入端口号" />
+						</el-form-item>
+
+						<el-form-item label="用户名">
+							<el-input v-model="tabconfig.user" placeholder="请输入用户名" />
+						</el-form-item>
+
+						<el-form-item label="密码">
+							<el-input v-model="tabconfig.passwd" placeholder="请输入密码" />
+						</el-form-item>
+
+						<el-form-item label="数据库名称">
+							<el-input v-model="tabconfig.dbName" placeholder="请输入数据库名称" />
+						</el-form-item>
+
+						<el-form-item label="表名称">
+							<el-input v-model="tabconfig.tableName" placeholder="请输入表名称" />
+						</el-form-item>
+
+						<el-form-item label="主键字段">
+							<el-input v-model="tabconfig.pk" placeholder="请输入主键字段" />
+						</el-form-item>
+
+						<el-form-item label="每次获取数量">
+							<el-input v-model="tabconfig.num" placeholder="请输入每次获取数量" />
+						</el-form-item>
+
+						<el-form-item label="任务表达式">
+							<el-input v-model="tabconfig.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>
+				</div>
 			</el-form>
 			<template #footer>
 				<span class="dialog-footer">
@@ -216,6 +271,7 @@ export default defineComponent({
 			dialogVisible: false,
 			config: {},
 			devconfig: {},
+			tabconfig: {},
 			sourceData: [],
 			sourceId: 0,
 			jsonData: '',
@@ -374,6 +430,8 @@ export default defineComponent({
 						state.requestParams = res.data.apiConfig.requestParams;
 					} else if (res.data.from == 4) {
 						state.devconfig = res.data.deviceConfig;
+					} else if (res.data.from == 2) {
+						state.tabconfig = res.data.dbConfig;
 					}
 					res.data.sourceRule.forEach((item, index) => {
 						state.rule[index].expression = item.expression;
@@ -394,6 +452,7 @@ export default defineComponent({
 		};
 		const resetForm = () => {
 			state.devconfig = {};
+			state.tabconfig = {};
 			state.ruleForm = {
 				sourceId: 0,
 				name: '',
@@ -452,8 +511,10 @@ export default defineComponent({
 		// 新增
 		const onSubmit = () => {
 			const formWrap = unref(formRef) as any;
+			console.log(formWrap);
 			if (!formWrap) return;
 			formWrap.validate((valid: boolean) => {
+				
 				if (valid) {
 					//修改rule数据
 					// state.rule.forEach((item, index) => {
@@ -468,8 +529,11 @@ export default defineComponent({
 						state.ruleForm.config = state.config;
 					} else if (state.ruleForm.from == 4) {
 						state.ruleForm.config = state.devconfig;
+					}else if (state.ruleForm.from == 2) {
+						state.ruleForm.config = state.tabconfig;
 					}
 
+					
 					if (state.ruleForm.sourceId !== 0) {
 						//修改
 
@@ -485,6 +549,12 @@ export default defineComponent({
 								closeDialog(); // 关闭弹窗
 								emit('typeList');
 							});
+						}else if (state.ruleForm.from == 2) {
+							api.common.dbedit(state.ruleForm).then(() => {
+								ElMessage.success('数据源类型修改成功');
+								closeDialog(); // 关闭弹窗
+								emit('typeList');
+							});
 						}
 					} else {
 						//添加
@@ -500,6 +570,12 @@ export default defineComponent({
 								closeDialog(); // 关闭弹窗
 								emit('typeList');
 							});
+						}else if (state.ruleForm.from == 2) {
+							api.common.dbadd(state.ruleForm).then(() => {
+								ElMessage.success('数据源类型添加成功');
+								closeDialog(); // 关闭弹窗
+								emit('typeList');
+							});
 						}
 					}
 				}

+ 26 - 0
src/views/datahub/source/component/editNode.vue

@@ -25,6 +25,8 @@
 				<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">
@@ -34,6 +36,18 @@
 					</el-select>
 				</el-form-item>
 
+
+				<el-form-item label="取值项" prop="value" v-if="detail.from == 2">
+					<el-select v-model="ruleForm.value" filterable placeholder="请选择数取值项" @change="getDbList">
+						<el-option v-for="item in dbData" :key="item.Name" :label="item.Comment" :value="item.Name">
+							<span style="float: left">{{ item.Name }}</span>
+							<span style="float: right; font-size: 13px">{{ item.Comment }}</span>
+						</el-option>
+					</el-select>
+				</el-form-item>
+
+
+
 				<el-divider content-position="left">规则表达式</el-divider>
 
 				<div v-for="(item, index) in rule" :key="index">
@@ -112,6 +126,7 @@ export default defineComponent({
 			jsonPathData: [],
 			jsonData: '',
 			propertyData: [],
+			dbData: [],
 			config: {},
 			detail: {},
 			tabData: [
@@ -251,6 +266,12 @@ export default defineComponent({
 						state.propertyData = re;
 					});
 				}
+				if (res.data.from == 2) {
+					//propertyData
+					api.common.getfields(row.sourceId).then((re: any) => {
+						state.dbData = re.data;
+					});
+				}
 			});
 
 			state.ruleForm = row;
@@ -319,6 +340,10 @@ export default defineComponent({
 			});
 		};
 
+		const getDbList = (e)=>{
+			state.ruleForm.dataType = state.dbData[e].Type;
+		}
+
 		const onKeyclick = (e) => {
 			//console.log(e);
 			// if (e.target.innerText && e.target.className == 'jv-key') {
@@ -429,6 +454,7 @@ export default defineComponent({
 			handlePath,
 			validateType,
 			getNodeList,
+			getDbList,
 			onKeyclick,
 			getOrgIdArr,
 			addRule,

+ 61 - 0
src/views/datahub/source/detail.vue

@@ -29,8 +29,62 @@
 							<span v-if="detail.from == 1">api导入</span>
 							<span v-if="detail.from == 2">数据库</span>
 							<span v-if="detail.from == 3">文件</span>
+							<span v-if="detail.from == 4">设备</span>
 						</el-form-item>
 
+
+						<div v-if="detail.from==4">
+							<el-divider content-position="left">数据源配置</el-divider>
+							<el-form-item label="设备key:" prop="deviceKey">
+								{{ detail.deviceConfig.deviceKey }}
+							</el-form-item>
+							<el-form-item label="产品key:" prop="productKey">
+								{{ detail.deviceConfig.productKey }}
+							</el-form-item>
+						</div>
+
+						<div v-if="detail.from == 2">
+							<el-divider content-position="left">数据源配置</el-divider>
+							<el-form-item label="数据来源:" prop="type">
+								{{ detail.dbConfig.type }}
+							</el-form-item>
+
+							<el-form-item label="主机地址:" prop="host">
+								{{ detail.dbConfig.host }}
+							</el-form-item>
+
+							<el-form-item label="端口号:" prop="port">
+								{{ detail.dbConfig.port }}
+							</el-form-item>
+
+							<el-form-item label="用户名:" prop="user">
+								{{ detail.dbConfig.user }}
+							</el-form-item>
+							<el-form-item label="密码:" prop="passwd">
+								{{ detail.dbConfig.passwd }}
+							</el-form-item>
+							<el-form-item label="数据库名称:" prop="dbName">
+								{{ detail.dbConfig.dbName }}
+							</el-form-item>
+
+							<el-form-item label="表名称:" prop="tableName">
+								{{ detail.dbConfig.tableName }}
+							</el-form-item>
+							<el-form-item label="主键字段:" prop="pk">
+								{{ detail.dbConfig.pk }}
+							</el-form-item>
+
+							<el-form-item label="每次获取数量:" prop="num">
+								{{ detail.dbConfig.num }}
+							</el-form-item>
+
+							<el-form-item label="任务表达式:" prop="cronExpression">
+								{{ detail.dbConfig.cronExpression }}
+							</el-form-item>
+						
+						</div>
+						<div  v-if="detail.from == 1">
+
 						<el-divider content-position="left">规则表达式</el-divider>
 
 						<div v-for="(item, index) in rule" :key="index">
@@ -73,6 +127,8 @@
 								</div>
 							</div>
 						</div>
+
+					</div>
 					</el-form>
 				</el-tab-pane>
 
@@ -252,6 +308,11 @@ export default defineComponent({
 						state.jsonData=JSON.parse(res.data);
 							console.log(res);
 					})
+				}else if(state.detail.from==2){
+					api.common.devdb(state.detail.sourceId).then((res: any) => {
+						state.jsonData=JSON.parse(res.data);
+							console.log(res);
+					})
 				}
 			}