|
@@ -33,7 +33,7 @@
|
|
|
</el-form-item>
|
|
|
|
|
|
|
|
|
- <div v-if="detail.from==4">
|
|
|
+ <div v-if="detail.from == 4">
|
|
|
<el-divider content-position="left">数据源配置</el-divider>
|
|
|
<el-form-item label="设备key:" prop="deviceKey">
|
|
|
{{ detail.deviceConfig.deviceKey }}
|
|
@@ -81,54 +81,54 @@
|
|
|
<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">
|
|
|
- <el-form-item label="表达式:">
|
|
|
- {{ item.expression }}
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- <el-form-item label="参数:"> {{ item.params.name }}~ {{ item.params.value }} </el-form-item>
|
|
|
-
|
|
|
- <el-divider content-position="left">数据源配置</el-divider>
|
|
|
-
|
|
|
- <el-form-item label="请求方法:" prop="method">
|
|
|
- {{ config.method }}
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="请求地址:" prop="method">
|
|
|
- {{ config.url }}
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="更新时间:" prop="method">
|
|
|
- {{ config.interval }}
|
|
|
- {{ config.intervalUnit }}
|
|
|
- </el-form-item>
|
|
|
|
|
|
- <el-divider content-position="left">请求参数</el-divider>
|
|
|
-
|
|
|
- <div class="content-f" v-for="(item, index) in requestParams" :key="index" style=" border: 1px solid #d9d9d9; padding: 10px;margin-bottom: 10px;">
|
|
|
-
|
|
|
- <div v-for="(aa, bb) in item" :key="inbbdex">
|
|
|
- <el-form-item label="参数类型:">
|
|
|
- {{ aa.type }}
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="参数标题:">
|
|
|
- {{ aa.name }}
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="参数名:">
|
|
|
- {{ aa.key }}
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="参数值:">
|
|
|
- {{ aa.value }}
|
|
|
- </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">
|
|
|
+ <el-form-item label="表达式:">
|
|
|
+ {{ item.expression }}
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item label="参数:"> {{ item.params.name }}~ {{ item.params.value }} </el-form-item>
|
|
|
+
|
|
|
+ <el-divider content-position="left">数据源配置</el-divider>
|
|
|
+
|
|
|
+ <el-form-item label="请求方法:" prop="method">
|
|
|
+ {{ config.method }}
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="请求地址:" prop="method">
|
|
|
+ {{ config.url }}
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="更新时间:" prop="method">
|
|
|
+ {{ config.interval }}
|
|
|
+ {{ config.intervalUnit }}
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-divider content-position="left">请求参数</el-divider>
|
|
|
+
|
|
|
+ <div class="content-f" v-for="(item, index) in requestParams" :key="index" style=" border: 1px solid #d9d9d9; padding: 10px;margin-bottom: 10px;">
|
|
|
+
|
|
|
+ <div v-for="(aa, bb) in item" :key="inbbdex">
|
|
|
+ <el-form-item label="参数类型:">
|
|
|
+ {{ aa.type }}
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="参数标题:">
|
|
|
+ {{ aa.name }}
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="参数名:">
|
|
|
+ {{ aa.key }}
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="参数值:">
|
|
|
+ {{ aa.value }}
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
|
|
|
- </div>
|
|
|
+ </div>
|
|
|
</el-form>
|
|
|
</el-tab-pane>
|
|
|
|
|
@@ -136,48 +136,43 @@
|
|
|
<div class="wu-box">
|
|
|
<div class="wu-title">
|
|
|
<div class="title">数据节点</div>
|
|
|
- <div v-if="developer_status==0" v-auth="'add'"><el-button type="primary" @click="onOpenEdit()" >添加</el-button></div>
|
|
|
+ <div v-if="developer_status == 0" v-auth="'add'"><el-button type="primary" @click="onOpenEdit()">添加</el-button></div>
|
|
|
</div>
|
|
|
-
|
|
|
- <el-table :data="tableData.data" style="width: 100%" v-loading="tableData.loading">
|
|
|
- <el-table-column label="ID" align="center" prop="nodeId" width="80" v-col="'id'"/>
|
|
|
- <el-table-column label="数据标识" prop="key" :show-overflow-tooltip="true" v-col="'key'"/>
|
|
|
- <el-table-column label="数据名称" prop="name" :show-overflow-tooltip="true" v-col="'name'"/>
|
|
|
- <el-table-column label="数据类型" prop="dataType" :show-overflow-tooltip="true" v-col="'dataType'" />
|
|
|
- <el-table-column label="数据取值项" prop="value" :show-overflow-tooltip="true" v-col="'value'"/>
|
|
|
|
|
|
- <el-table-column prop="createdAt" label="创建时间" align="center" v-col="'createdAt'" width="180"></el-table-column>
|
|
|
+ <el-table :data="tableData.data" style="width: 100%" v-loading="tableData.loading">
|
|
|
+ <el-table-column label="ID" align="center" prop="nodeId" width="80" v-col="'id'" />
|
|
|
+ <el-table-column label="数据标识" prop="key" :show-overflow-tooltip="true" v-col="'key'" />
|
|
|
+ <el-table-column label="数据名称" prop="name" :show-overflow-tooltip="true" v-col="'name'" />
|
|
|
+ <el-table-column label="数据类型" prop="dataType" :show-overflow-tooltip="true" v-col="'dataType'" />
|
|
|
+ <el-table-column label="数据取值项" prop="value" :show-overflow-tooltip="true" v-col="'value'" />
|
|
|
+
|
|
|
+ <el-table-column prop="createdAt" label="创建时间" align="center" v-col="'createdAt'" width="180"></el-table-column>
|
|
|
|
|
|
<el-table-column label="操作" width="200" align="center" fixed="right">
|
|
|
<template #default="scope">
|
|
|
- <el-button size="small" text type="warning" @click="onOpenEdit1(scope.row)" v-if="developer_status==0" v-auth="'edit'">修改</el-button>
|
|
|
- <el-button size="small" text type="danger" @click="onRowDel(scope.row)" v-if="developer_status==0" v-auth="'del'">删除</el-button>
|
|
|
+ <el-button size="small" text type="warning" @click="onOpenEdit1(scope.row)" v-if="developer_status == 0" v-auth="'edit'">修改</el-button>
|
|
|
+ <el-button size="small" text type="danger" @click="onRowDel(scope.row)" v-if="developer_status == 0" v-auth="'del'">删除</el-button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
- <pagination
|
|
|
- v-show="tableData.total > 0"
|
|
|
- :total="tableData.total"
|
|
|
- v-model:page="tableData.param.pageNum"
|
|
|
- @pagination="typeList"
|
|
|
- />
|
|
|
+ <pagination v-show="tableData.total > 0" :total="tableData.total" v-model:page="tableData.param.pageNum" @pagination="typeList" />
|
|
|
</div>
|
|
|
</el-tab-pane>
|
|
|
<el-tab-pane label="查看数据" name="3">
|
|
|
<div class="wu-box">
|
|
|
- <JsonViewer :value="jsonData" boxed sort theme="jv-dark" @click="onKeyclick" />
|
|
|
+ <JsonViewer :value="jsonData" boxed sort theme="jv-dark" @click="onKeyclick" />
|
|
|
</div>
|
|
|
</el-tab-pane>
|
|
|
</el-tabs>
|
|
|
</div>
|
|
|
<EditDic ref="editDicRef" @typeList="typeList" />
|
|
|
-
|
|
|
+
|
|
|
</div>
|
|
|
</template>
|
|
|
<script lang="ts">
|
|
|
import { toRefs, reactive, onMounted, ref, defineComponent } from 'vue';
|
|
|
-import { Delete, Edit, Search, Share, Upload } from '@element-plus/icons-vue';
|
|
|
-import { ElMessageBox, ElMessage, FormInstance } from 'element-plus';
|
|
|
+import { Edit } from '@element-plus/icons-vue';
|
|
|
+import { ElMessageBox, ElMessage } from 'element-plus';
|
|
|
import { useRoute } from 'vue-router';
|
|
|
import "vue3-json-viewer/dist/index.css";
|
|
|
|
|
@@ -203,13 +198,13 @@ interface TableDataState {
|
|
|
export default defineComponent({
|
|
|
name: 'dataDetail',
|
|
|
components: { EditDic },
|
|
|
- setup(prop, context) {
|
|
|
+ setup() {
|
|
|
const editDicRef = ref();
|
|
|
|
|
|
const route = useRoute();
|
|
|
const state = reactive<TableDataState>({
|
|
|
config: {},
|
|
|
- jsonData:{},
|
|
|
+ jsonData: {},
|
|
|
ruledata: [
|
|
|
{
|
|
|
expression: '',
|
|
@@ -259,17 +254,7 @@ export default defineComponent({
|
|
|
state.developer_status = res.data.status;
|
|
|
state.config = res.data.apiConfig;
|
|
|
state.requestParams = res.data.apiConfig.requestParams;
|
|
|
- // res.data.sourceRule.forEach((item, index) => {
|
|
|
- // state.rule[index].expression = item.expression;
|
|
|
- // state.rule[index].params.name = Object.keys(item.params);
|
|
|
- // state.rule[index].params.value = item.params[Object.keys(item.params)];
|
|
|
- // });
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- });
|
|
|
-
|
|
|
-
|
|
|
+ });
|
|
|
|
|
|
typeList();
|
|
|
});
|
|
@@ -284,34 +269,33 @@ export default defineComponent({
|
|
|
|
|
|
const CkOption = () => {
|
|
|
if (state.developer_status == 1) {
|
|
|
- api.common.undeploy({ sourceId: route.params.sourceId }).then((res: any) => {
|
|
|
+ api.common.undeploy({ sourceId: route.params.sourceId }).then(() => {
|
|
|
ElMessage.success('操作成功');
|
|
|
state.developer_status = 0;
|
|
|
});
|
|
|
} else {
|
|
|
- api.common.deploy({ sourceId: route.params.sourceId }).then((res: any) => {
|
|
|
+ api.common.deploy({ sourceId: route.params.sourceId }).then(() => {
|
|
|
ElMessage.success('操作成功');
|
|
|
state.developer_status = 1;
|
|
|
});
|
|
|
}
|
|
|
};
|
|
|
- const handleClick = (tab: TabsPaneContext, event: Event) => {
|
|
|
- if(tab.props.name==3){
|
|
|
- if(state.detail.from==1){
|
|
|
+ const handleClick = (tab: TabsPaneContext) => {
|
|
|
+ if (tab.props.name == 3) {
|
|
|
+ if (state.detail.from == 1) {
|
|
|
api.common.api(state.detail.sourceId).then((res: any) => {
|
|
|
- state.jsonData=JSON.parse(res.data);
|
|
|
+ state.jsonData = JSON.parse(res.data);
|
|
|
})
|
|
|
- }else if(state.detail.from==4){
|
|
|
+ } else if (state.detail.from == 4) {
|
|
|
api.common.devapi(state.detail.sourceId).then((res: any) => {
|
|
|
- state.jsonData=JSON.parse(res.data);
|
|
|
+ state.jsonData = JSON.parse(res.data);
|
|
|
})
|
|
|
- }else if(state.detail.from==2){
|
|
|
+ } else if (state.detail.from == 2) {
|
|
|
api.common.devdb(state.detail.sourceId).then((res: any) => {
|
|
|
- state.jsonData=JSON.parse(res.data);
|
|
|
+ state.jsonData = JSON.parse(res.data);
|
|
|
})
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
};
|
|
|
|
|
|
const onRowDel = (row: TableDataRow) => {
|
|
@@ -338,7 +322,6 @@ export default defineComponent({
|
|
|
typeList();
|
|
|
});
|
|
|
})
|
|
|
- .catch(() => {});
|
|
|
};
|
|
|
|
|
|
// 打开修改数据源弹窗
|
|
@@ -369,28 +352,35 @@ export default defineComponent({
|
|
|
width: 100%;
|
|
|
padding: 20px;
|
|
|
}
|
|
|
+
|
|
|
.content-box {
|
|
|
background: #fff;
|
|
|
width: 100%;
|
|
|
padding: 20px;
|
|
|
margin-top: 20px;
|
|
|
}
|
|
|
+
|
|
|
.cont_box {
|
|
|
display: flex;
|
|
|
}
|
|
|
+
|
|
|
.cont_box .title {
|
|
|
font-size: 18px;
|
|
|
}
|
|
|
+
|
|
|
.cont_box .pro-status {
|
|
|
line-height: 30px;
|
|
|
margin-left: 30px;
|
|
|
}
|
|
|
+
|
|
|
.cont_box .pro-status .on {
|
|
|
background: #52c41a;
|
|
|
}
|
|
|
+
|
|
|
.cont_box .pro-status .off {
|
|
|
background: #c41a1a;
|
|
|
}
|
|
|
+
|
|
|
.cont_box .pro-status span {
|
|
|
position: relative;
|
|
|
top: -1px;
|
|
@@ -401,30 +391,36 @@ export default defineComponent({
|
|
|
border-radius: 50%;
|
|
|
margin-right: 5px;
|
|
|
}
|
|
|
+
|
|
|
.cont_box .pro-option {
|
|
|
line-height: 30px;
|
|
|
margin-left: 10px;
|
|
|
color: #1890ff;
|
|
|
cursor: pointer;
|
|
|
}
|
|
|
+
|
|
|
.content-box .pro-box {
|
|
|
display: flex;
|
|
|
padding: 10px;
|
|
|
}
|
|
|
+
|
|
|
.content-box .pro-box .protitle {
|
|
|
font-size: 18px;
|
|
|
font-weight: bold;
|
|
|
line-height: 35px;
|
|
|
}
|
|
|
+
|
|
|
.content-box .pro-box .buttonedit {
|
|
|
border: 0px;
|
|
|
color: #1890ff;
|
|
|
}
|
|
|
+
|
|
|
table {
|
|
|
border-collapse: collapse;
|
|
|
text-indent: initial;
|
|
|
border-spacing: 2px;
|
|
|
}
|
|
|
+
|
|
|
tbody {
|
|
|
box-sizing: border-box;
|
|
|
display: table-row-group;
|
|
@@ -437,37 +433,46 @@ tr {
|
|
|
vertical-align: inherit;
|
|
|
border-color: inherit;
|
|
|
}
|
|
|
+
|
|
|
.ant-descriptions-view {
|
|
|
width: 100%;
|
|
|
overflow: hidden;
|
|
|
border-radius: 4px;
|
|
|
}
|
|
|
+
|
|
|
.ant-descriptions-view {
|
|
|
border: 1px solid #e8e8e8;
|
|
|
}
|
|
|
+
|
|
|
.ant-descriptions-view table {
|
|
|
width: 100%;
|
|
|
table-layout: fixed;
|
|
|
}
|
|
|
-.ant-descriptions-view > table {
|
|
|
+
|
|
|
+.ant-descriptions-view>table {
|
|
|
table-layout: auto;
|
|
|
}
|
|
|
+
|
|
|
.ant-descriptions-row {
|
|
|
border-bottom: 1px solid #e8e8e8;
|
|
|
}
|
|
|
+
|
|
|
.ant-descriptions-item-label {
|
|
|
color: rgba(0, 0, 0, 0.85);
|
|
|
font-weight: 400;
|
|
|
font-size: 14px;
|
|
|
line-height: 1.5;
|
|
|
}
|
|
|
+
|
|
|
.ant-descriptions-item-label {
|
|
|
padding: 16px 24px;
|
|
|
border-right: 1px solid #e8e8e8;
|
|
|
}
|
|
|
+
|
|
|
.ant-descriptions-item-label {
|
|
|
background-color: #fafafa;
|
|
|
}
|
|
|
+
|
|
|
.ant-descriptions-item-content {
|
|
|
padding: 16px 24px;
|
|
|
border-right: 1px solid #e8e8e8;
|
|
@@ -476,11 +481,13 @@ tr {
|
|
|
font-size: 14px;
|
|
|
line-height: 1.5;
|
|
|
}
|
|
|
+
|
|
|
.wu-box {
|
|
|
border: #e8e8e8 solid 1px;
|
|
|
padding: 20px;
|
|
|
width: 100%;
|
|
|
}
|
|
|
+
|
|
|
.wu-box .wu-title {
|
|
|
display: flex;
|
|
|
flex-direction: row;
|
|
@@ -488,6 +495,7 @@ tr {
|
|
|
padding: 20px;
|
|
|
border-bottom: #e8e8e8 1px solid;
|
|
|
}
|
|
|
+
|
|
|
.wu-box .wu-title .title {
|
|
|
font-size: 18px;
|
|
|
}
|