|
@@ -70,12 +70,12 @@
|
|
|
@tab-click="handleClick"
|
|
@tab-click="handleClick"
|
|
|
>
|
|
>
|
|
|
<el-tab-pane label="任务详情" name="first">
|
|
<el-tab-pane label="任务详情" name="first">
|
|
|
- <el-button @click="addTask" style="margin-top: 0%;margin-right: 1%;float:right;" type="primary" size="mini" plain>新增</el-button>
|
|
|
|
|
|
|
+ <el-button :disabled="parMdid" @click="addTask" style="margin-top: 0%;margin-right: 1%;float:right;" type="primary" size="mini" plain>新增</el-button>
|
|
|
<div style="width: 100%;margin-left: 0%;padding-top: 0%;" class="tab-container">
|
|
<div style="width: 100%;margin-left: 0%;padding-top: 0%;" class="tab-container">
|
|
|
<div>
|
|
<div>
|
|
|
<el-table
|
|
<el-table
|
|
|
:data="tableData"
|
|
:data="tableData"
|
|
|
- style="width: 98%;margin-left: 1%;margin-top: 0.5%;"
|
|
|
|
|
|
|
+ style="width: 98%;margin-left: 1%;margin-top: 0.5%;height: 73vh;"
|
|
|
:cell-style="{ padding:'5px' }"
|
|
:cell-style="{ padding:'5px' }"
|
|
|
:header-cell-style="{height: heightAll*0.01+'px',}"
|
|
:header-cell-style="{height: heightAll*0.01+'px',}"
|
|
|
:row-style="{ fontSize: '16px',textAlign:'center'}"
|
|
:row-style="{ fontSize: '16px',textAlign:'center'}"
|
|
@@ -87,26 +87,32 @@
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
</el-table-column>
|
|
</el-table-column>
|
|
|
- <el-table-column prop="name" label="任务名称" width="200">
|
|
|
|
|
- <template #default="scope">
|
|
|
|
|
- <div style="color: #409EFF;cursor: pointer;" @click="showDe(scope.row)">
|
|
|
|
|
- {{scope.row.name}}
|
|
|
|
|
- </div>
|
|
|
|
|
- </template>
|
|
|
|
|
|
|
+ <el-table-column prop="flowJobName" label="任务名称" width="200">
|
|
|
</el-table-column>
|
|
</el-table-column>
|
|
|
- <el-table-column prop="type" label="建模方案" width="200">
|
|
|
|
|
|
|
+ <el-table-column prop="type" label="建模方案" width="300">
|
|
|
</el-table-column>
|
|
</el-table-column>
|
|
|
- <el-table-column prop="url" label="责任人" width="200" show-overflow-tooltip/>
|
|
|
|
|
- <el-table-column prop="rqtype" label="联系方式" />
|
|
|
|
|
|
|
+ <el-table-column prop="chargeBy" label="责任人" width="200" show-overflow-tooltip/>
|
|
|
|
|
+ <el-table-column prop="chargePhone" label="联系方式" />
|
|
|
<el-table-column prop="address" label="操作" width="150">
|
|
<el-table-column prop="address" label="操作" width="150">
|
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
|
<div style="display: flex;">
|
|
<div style="display: flex;">
|
|
|
- <el-button @click="testSer(scope.row)" type="primary" text size="mini" style="margin-left: 0%;">测试</el-button>
|
|
|
|
|
- <el-button @click="showLog(scope.row)" type="primary" text size="mini" style="margin-left: 0%;">日志</el-button>
|
|
|
|
|
|
|
+ <el-button @click="testSer(scope.row)" type="primary" text size="mini" style="margin-left: 0%;">编辑</el-button>
|
|
|
|
|
+ <el-button @click="showLog(scope.row)" type="primary" text size="mini" style="margin-left: 0%;">删除</el-button>
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
</el-table-column>
|
|
</el-table-column>
|
|
|
</el-table>
|
|
</el-table>
|
|
|
|
|
+ <el-pagination
|
|
|
|
|
+ v-if="total>12"
|
|
|
|
|
+ small
|
|
|
|
|
+ background
|
|
|
|
|
+ style="margin-top: 0.8%;float: right;margin-right: 1%;"
|
|
|
|
|
+ layout="prev, pager, next"
|
|
|
|
|
+ :total="total"
|
|
|
|
|
+ v-model="pageNum"
|
|
|
|
|
+ @change="changePage"
|
|
|
|
|
+ class="mt-4"
|
|
|
|
|
+ />
|
|
|
</div>
|
|
</div>
|
|
|
<el-dialog @close="clearAdd" v-model="dialogVisible" title="" width="60%" destroy-on-close :key="tableKey">
|
|
<el-dialog @close="clearAdd" v-model="dialogVisible" title="" width="60%" destroy-on-close :key="tableKey">
|
|
|
<div style="display: flex;align-items: center;">
|
|
<div style="display: flex;align-items: center;">
|
|
@@ -165,20 +171,15 @@
|
|
|
</el-dialog>
|
|
</el-dialog>
|
|
|
<el-dialog @close="clearAdd" v-model="dialogVisibleTest" draggable :title="titleTest" width="60%" destroy-on-close :key="tableKey">
|
|
<el-dialog @close="clearAdd" v-model="dialogVisibleTest" draggable :title="titleTest" width="60%" destroy-on-close :key="tableKey">
|
|
|
<el-form size="mini" style="margin-top: 0%;width: 98%;" :model="formJi" label-position="right" ref="formRefJi" label-width="120px" :rules="rulesJi">
|
|
<el-form size="mini" style="margin-top: 0%;width: 98%;" :model="formJi" label-position="right" ref="formRefJi" label-width="120px" :rules="rulesJi">
|
|
|
- <el-row :gutter="24">
|
|
|
|
|
|
|
+ <el-row :gutter="48">
|
|
|
<el-col :span="8">
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="任务名称:" prop="jobName" style="">
|
|
|
|
|
|
|
+ <el-form-item label="任务名称:" prop="flowJobName" style="">
|
|
|
<div style="display: flex;width: 100%;justify-content: space-between;">
|
|
<div style="display: flex;width: 100%;justify-content: space-between;">
|
|
|
- <el-input v-model="formJi.jobName" style="width: 100%;"/>
|
|
|
|
|
|
|
+ <el-input v-model="formJi.flowJobName" style="width: 100%;"/>
|
|
|
</div>
|
|
</div>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="组名称:" prop="groupName" style="">
|
|
|
|
|
- <div style="display: flex;width: 100%;justify-content: space-between;">
|
|
|
|
|
- <el-input :disabled="!isAddTa" v-model="formJi.groupName" style="width: 100%;"/>
|
|
|
|
|
- </div>
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
</el-col>
|
|
</el-col>
|
|
|
|
|
|
|
|
</el-row>
|
|
</el-row>
|
|
@@ -188,16 +189,16 @@
|
|
|
</el-row>
|
|
</el-row>
|
|
|
<el-row :gutter="48">
|
|
<el-row :gutter="48">
|
|
|
<el-col :span="8">
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="负责人:" prop="" style="">
|
|
|
|
|
|
|
+ <el-form-item label="负责人:" prop="chargeBy" style="">
|
|
|
<div style="display: flex;width: 100%;justify-content: space-between;">
|
|
<div style="display: flex;width: 100%;justify-content: space-between;">
|
|
|
- <el-input v-model="formJi.ownerName" style="width: 100%;"/>
|
|
|
|
|
|
|
+ <el-input v-model="formJi.chargeBy" style="width: 100%;"/>
|
|
|
</div>
|
|
</div>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="联系方式" prop="" style="">
|
|
|
|
|
|
|
+ <el-form-item label="联系方式" prop="chargePhone" style="">
|
|
|
<div style="display: flex;width: 100%;justify-content: space-between;">
|
|
<div style="display: flex;width: 100%;justify-content: space-between;">
|
|
|
- <el-input v-model="formJi.ownerName" style="width: 100%;"/>
|
|
|
|
|
|
|
+ <el-input v-model="formJi.chargePhone" style="width: 100%;"/>
|
|
|
</div>
|
|
</div>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
@@ -274,6 +275,7 @@
|
|
|
<el-form-item label="间隔时长:" prop="triggerInterval">
|
|
<el-form-item label="间隔时长:" prop="triggerInterval">
|
|
|
<el-input-number
|
|
<el-input-number
|
|
|
v-model="formJi.triggerInterval"
|
|
v-model="formJi.triggerInterval"
|
|
|
|
|
+ v-if="formJi.triggerType==2"
|
|
|
style="width: 100%;"
|
|
style="width: 100%;"
|
|
|
class="mx-4"
|
|
class="mx-4"
|
|
|
:min="1"
|
|
:min="1"
|
|
@@ -281,6 +283,14 @@
|
|
|
controls-position="right"
|
|
controls-position="right"
|
|
|
@CHANGE="handleChange"
|
|
@CHANGE="handleChange"
|
|
|
/>
|
|
/>
|
|
|
|
|
+ <el-input v-if="formJi.triggerType==3" v-model="formJi.triggerInterval" placeholder="请输入cron执行表达式">
|
|
|
|
|
+ <template #append>
|
|
|
|
|
+ <el-button type="primary" @click="handleShowCron">
|
|
|
|
|
+ 生成表达式
|
|
|
|
|
+ <i class="el-icon-time el-icon--right"></i>
|
|
|
|
|
+ </el-button>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-input>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
</el-row>
|
|
</el-row>
|
|
@@ -332,58 +342,56 @@
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</div>
|
|
</div>
|
|
|
</el-form>
|
|
</el-form>
|
|
|
- </el-dialog>
|
|
|
|
|
- <el-dialog @close="clearFromLev" :title="titleTest" v-model="dialogVisibleLevel" width="50%" destroy-on-close :key="tableKey">
|
|
|
|
|
- <el-table
|
|
|
|
|
- style="margin-top: 1%;width: 98%;"
|
|
|
|
|
- :data="tableDataLog"
|
|
|
|
|
- :cell-style="{ textAlign: 'center',padding:'2px 0' }"
|
|
|
|
|
- :header-cell-style="{ textAlign: 'center'}"
|
|
|
|
|
- :row-style="{ height: heightAll*0.01+'px',fontSize: '16px',textAlign:'center' }"
|
|
|
|
|
- border >
|
|
|
|
|
- <el-table-column prop="createBy" label="测试发起人">
|
|
|
|
|
- </el-table-column>
|
|
|
|
|
- <el-table-column prop="runTm" label="测试时间">
|
|
|
|
|
- </el-table-column>
|
|
|
|
|
- <el-table-column prop="execTm" label="测试耗时" show-overflow-tooltip>
|
|
|
|
|
- </el-table-column>
|
|
|
|
|
- <el-table-column prop="returnData" label="测试返回结果" show-overflow-tooltip>
|
|
|
|
|
- </el-table-column>
|
|
|
|
|
- <el-table-column prop="audit" label="测试状态" width="100">
|
|
|
|
|
- <template #default="scope">
|
|
|
|
|
- <div style="text-align: center;display: flex;color:#67C23A" v-if="scope.row.senState==1">
|
|
|
|
|
- 已测试
|
|
|
|
|
- </div>
|
|
|
|
|
- <div style="text-align: center;display: flex;color:#F56C6C" v-if="scope.row.senState==0">
|
|
|
|
|
- 测试失败
|
|
|
|
|
- </div>
|
|
|
|
|
- <div style="text-align: center;display: flex;color:#E6A23C" v-if="scope.row.senState==null">
|
|
|
|
|
- 未测试
|
|
|
|
|
|
|
+ <div style="display: flex;align-items: center;line-height: 1.5;margin-top: 1%;">
|
|
|
|
|
+ <el-button @click="addStart" style="margin-top: 0%;margin-left: 1%;" type="success" size="mini" plain>新增参数</el-button>
|
|
|
|
|
+ <!-- <div style="margin-left: 1%;color: #909399;">需要至少一条输入参数</div> -->
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <el-table
|
|
|
|
|
+ style="margin-top: 1%;width: 100%;"
|
|
|
|
|
+ :data="tableDataCanStart"
|
|
|
|
|
+ :cell-style="{ textAlign: 'center',padding:'2px 0' }"
|
|
|
|
|
+ :header-cell-style="{ textAlign: 'center'}"
|
|
|
|
|
+ :row-style="{ height: heightAll*0.01+'px',fontSize: '16px',textAlign:'center' }"
|
|
|
|
|
+ border >
|
|
|
|
|
+ <el-table-column prop="itemName" label="参数名称">
|
|
|
|
|
+ <template #default="scope">
|
|
|
|
|
+ <div style="width: 100%;">
|
|
|
|
|
+ <el-input placeholder="请填写参数名称" type="primary" class="noBor" v-model="scope.row.name" size="mini" text style="margin-left: 0%;"></el-input>
|
|
|
</div>
|
|
</div>
|
|
|
- </template>
|
|
|
|
|
- </el-table-column>
|
|
|
|
|
- <el-table-column prop="errorMessage" label="错误信息" show-overflow-tooltip>
|
|
|
|
|
- <template #default="scope">
|
|
|
|
|
- <div style="text-align: center;display: flex;color:#F56C6C" v-if="scope.row.errorMessage!==null">
|
|
|
|
|
- {{scope.row.errorMessage}}
|
|
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ <el-table-column prop="itemName" label="参数值" >
|
|
|
|
|
+ <template #default="scope">
|
|
|
|
|
+ <div style="width: 100%;">
|
|
|
|
|
+ <el-input type="primary" class="noBor" v-model="scope.row.value" size="mini" text style="margin-left: 0%;"></el-input>
|
|
|
</div>
|
|
</div>
|
|
|
- <div style="text-align: center;display: flex;color:#67C23A" v-if="scope.row.errorMessage==null">
|
|
|
|
|
- /
|
|
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ <el-table-column prop="address" label="操作" width="100">
|
|
|
|
|
+ <template #default="scope">
|
|
|
|
|
+ <div style="width: 100%;">
|
|
|
|
|
+ <el-button type="danger" @click="delCanStart(scope.$index)" size="mini" text style="margin-left: 0%;">删除</el-button>
|
|
|
</div>
|
|
</div>
|
|
|
- </template>
|
|
|
|
|
- </el-table-column>
|
|
|
|
|
- </el-table>
|
|
|
|
|
- <template #footer>
|
|
|
|
|
- <span class="dialog-footer">
|
|
|
|
|
- <el-button type="primary" @click="dialogVisibleLevel = false" size="mini">
|
|
|
|
|
- 确定
|
|
|
|
|
- </el-button>
|
|
|
|
|
- </span>
|
|
|
|
|
- </template>
|
|
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ </el-table>
|
|
|
|
|
+ <template #footer>
|
|
|
|
|
+ <span class="dialog-footer">
|
|
|
|
|
+ <el-button size="mini" @click="dialogVisibleTest = false">取消</el-button>
|
|
|
|
|
+ <el-button type="primary" @click="addRen" size="mini" v-if="isAdd">
|
|
|
|
|
+ 提交
|
|
|
|
|
+ </el-button>
|
|
|
|
|
+ <el-button type="primary" @click="saveAddNextLevel" size="mini" v-if="!isAdd">
|
|
|
|
|
+ 提交
|
|
|
|
|
+ </el-button>
|
|
|
|
|
+ </span>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-dialog>
|
|
|
|
|
+ <el-dialog title="Cron表达式生成器" v-model="openCron" append-to-body destroy-on-close>
|
|
|
|
|
+ <crontab ref="crontabRef" @hide="openCron=false" @fill="crontabFill" :expression="expression"></crontab>
|
|
|
</el-dialog>
|
|
</el-dialog>
|
|
|
<el-dialog v-model="dialogVisibleDe" title="" width="50%" @close="" destroy-on-close class="custom-dialog-bg">
|
|
<el-dialog v-model="dialogVisibleDe" title="" width="50%" @close="" destroy-on-close class="custom-dialog-bg">
|
|
|
- <el-form size="mini" :key="tableKey" style="margin-top:1%;width: 100%;" :model="formJi" label-position="right"
|
|
|
|
|
- ref="formRefJi" label-width="120px" :rules="rulesJi">
|
|
|
|
|
|
|
+ <el-form size="mini" :key="tableKey" style="margin-top:1%;width: 100%;" :model="formJi" label-position="right">
|
|
|
<el-row :gutter="48">
|
|
<el-row :gutter="48">
|
|
|
<el-col :span="10">
|
|
<el-col :span="10">
|
|
|
<el-form-item label="服务名称:" prop="name" style="">
|
|
<el-form-item label="服务名称:" prop="name" style="">
|
|
@@ -471,14 +479,15 @@ import {getCatalog} from "@/api/service/catalog";
|
|
|
import { Plus,Search,Filter,Promotion,Check } from '@element-plus/icons-vue'
|
|
import { Plus,Search,Filter,Promotion,Check } from '@element-plus/icons-vue'
|
|
|
import { reactive } from 'vue'
|
|
import { reactive } from 'vue'
|
|
|
import {getModellist} from '@/api/standardization/modeling'
|
|
import {getModellist} from '@/api/standardization/modeling'
|
|
|
-import { modelTreeSelect,getSerDe,addService,addServiceParam,delService,addTree,deTree,getServiceInfo,testService,testLog } from "@/api/service/info";
|
|
|
|
|
|
|
+import { modelTreeSelect,getSerDe,addService,addServiceParam,delService,addTree,deTree,getDataRen,testService,testLog,flowDispatch } from "@/api/service/info";
|
|
|
import { ref, onMounted, onUnmounted, nextTick,onBeforeMount } from 'vue';
|
|
import { ref, onMounted, onUnmounted, nextTick,onBeforeMount } from 'vue';
|
|
|
import JsonViewer from 'vue-json-viewer'
|
|
import JsonViewer from 'vue-json-viewer'
|
|
|
import 'vue-json-viewer/style.css'
|
|
import 'vue-json-viewer/style.css'
|
|
|
import JsonEditorVue from 'json-editor-vue3'
|
|
import JsonEditorVue from 'json-editor-vue3'
|
|
|
import { cloneDeep } from 'lodash'
|
|
import { cloneDeep } from 'lodash'
|
|
|
import { useClipboard } from "@vueuse/core";
|
|
import { useClipboard } from "@vueuse/core";
|
|
|
-
|
|
|
|
|
|
|
+import Crontab from '@/components/Crontab'
|
|
|
|
|
+import { routerKey } from "vue-router";
|
|
|
const titleTest = ref('')
|
|
const titleTest = ref('')
|
|
|
const { proxy } = getCurrentInstance();
|
|
const { proxy } = getCurrentInstance();
|
|
|
const JsonAdd= ref(JSON.stringify({ data: "初始值1" }))
|
|
const JsonAdd= ref(JSON.stringify({ data: "初始值1" }))
|
|
@@ -575,6 +584,28 @@ const optionsType= ref([
|
|
|
value:'WebSocket'
|
|
value:'WebSocket'
|
|
|
},
|
|
},
|
|
|
])
|
|
])
|
|
|
|
|
+const optionsTaskType = ref([
|
|
|
|
|
+ {
|
|
|
|
|
+ label:'集群',
|
|
|
|
|
+ value:1
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label:'广播',
|
|
|
|
|
+ value:2
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label:'Sharding',
|
|
|
|
|
+ value:3
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label:'Map',
|
|
|
|
|
+ value:4
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label:'MapReduce',
|
|
|
|
|
+ value:5
|
|
|
|
|
+ },
|
|
|
|
|
+])
|
|
|
const data = ref([])
|
|
const data = ref([])
|
|
|
const select = ref('1')
|
|
const select = ref('1')
|
|
|
const activeName = ref('first')
|
|
const activeName = ref('first')
|
|
@@ -582,6 +613,7 @@ const title = ref('')
|
|
|
const titleTree = ref('')
|
|
const titleTree = ref('')
|
|
|
const currentPage = ref(1)
|
|
const currentPage = ref(1)
|
|
|
const total = ref(1)
|
|
const total = ref(1)
|
|
|
|
|
+const pageNum = ref(1)
|
|
|
const tableData = ref([])
|
|
const tableData = ref([])
|
|
|
const tableheight = window.innerHeight*0.7
|
|
const tableheight = window.innerHeight*0.7
|
|
|
const heightAll = window.innerHeight
|
|
const heightAll = window.innerHeight
|
|
@@ -613,18 +645,26 @@ const formZu = ref({
|
|
|
});
|
|
});
|
|
|
const parId= ref('')
|
|
const parId= ref('')
|
|
|
const formJi = ref({
|
|
const formJi = ref({
|
|
|
- name:'',
|
|
|
|
|
- cateCode:'',
|
|
|
|
|
- type:'',
|
|
|
|
|
- url:'',
|
|
|
|
|
- rqtype:'',
|
|
|
|
|
- rptype:'',
|
|
|
|
|
- intro:'',
|
|
|
|
|
|
|
+ routeKey:4,
|
|
|
|
|
+ blockStrategy:1,
|
|
|
|
|
+ triggerType:2,
|
|
|
|
|
+ triggerInterval:10,
|
|
|
|
|
+ executorTimeout:10,
|
|
|
|
|
+ maxRetryTimes:3,
|
|
|
|
|
+ retryInterval:1,
|
|
|
});
|
|
});
|
|
|
const rulesJi = reactive({
|
|
const rulesJi = reactive({
|
|
|
- name: [{ required: true, message: '必填', trigger: 'blur' }],
|
|
|
|
|
- url: [{ required: true, message: '必填', trigger: 'blur' }],
|
|
|
|
|
- cateCode: [{ required: true, message: '必填', trigger: 'blur' }],
|
|
|
|
|
|
|
+ flowJobName: [{ required: true, message: '必填', trigger: 'blur' }],
|
|
|
|
|
+ routeKey: [{ required: true, message: '必填', trigger: 'blur' }],
|
|
|
|
|
+ triggerType: [{ required: true, message: '必填', trigger: 'blur' }],
|
|
|
|
|
+ triggerInterval: [{ required: true, message: '必填', trigger: 'blur' }],
|
|
|
|
|
+ executorTimeout: [{ required: true, message: '必填', trigger: 'blur' }],
|
|
|
|
|
+ maxRetryTimes: [{ required: true, message: '必填', trigger: 'blur' }],
|
|
|
|
|
+ retryInterval: [{ required: true, message: '必填', trigger: 'blur' }],
|
|
|
|
|
+ chargeBy: [{ required: true, message: '必填', trigger: 'blur' }],
|
|
|
|
|
+ chargePhone: [{ required: true, message: '必填', trigger: 'blur' }],
|
|
|
|
|
+ taskType: [{ required: true, message: '必填', trigger: 'blur' }],
|
|
|
|
|
+ blockStrategy: [{ required: true, message: '必填', trigger: 'blur' }],
|
|
|
});
|
|
});
|
|
|
const formRefJi = ref();
|
|
const formRefJi = ref();
|
|
|
const formAdd = ref({
|
|
const formAdd = ref({
|
|
@@ -674,6 +714,10 @@ const props1 = ref({
|
|
|
})
|
|
})
|
|
|
const detailJson = ref('')
|
|
const detailJson = ref('')
|
|
|
const parOptions = ref([])
|
|
const parOptions = ref([])
|
|
|
|
|
+const openCron = ref(false)
|
|
|
|
|
+const tableDataCanStart = ref([
|
|
|
|
|
+])
|
|
|
|
|
+const expression = ref('')
|
|
|
watch(inputNode, (val) => {
|
|
watch(inputNode, (val) => {
|
|
|
treeRef.value?.filter(val); // 调用树的过滤方法
|
|
treeRef.value?.filter(val); // 调用树的过滤方法
|
|
|
});
|
|
});
|
|
@@ -683,6 +727,48 @@ const filterNode = (value, data) => {
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
const copied = ref(false);
|
|
const copied = ref(false);
|
|
|
|
|
+function changePage(val){
|
|
|
|
|
+ pageNum.value = val
|
|
|
|
|
+ getDataRen()
|
|
|
|
|
+}
|
|
|
|
|
+function addRen() {
|
|
|
|
|
+ formRefJi.value.validate((valid) => {
|
|
|
|
|
+ if (valid) {
|
|
|
|
|
+ formJi.value.flowId = parMdid.value
|
|
|
|
|
+ formJi.value.flowParam = {}
|
|
|
|
|
+ if(tableDataCanStart.value.length>0){
|
|
|
|
|
+ tableDataCanStart.value.forEach(item=>{
|
|
|
|
|
+ formJi.value.flowParam[item.name] = item.value
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+ flowDispatch(formJi.value).then(res=>{
|
|
|
|
|
+ if(res.code===200){
|
|
|
|
|
+ proxy.$message({
|
|
|
|
|
+ message: '操作成功',
|
|
|
|
|
+ type: 'success'
|
|
|
|
|
+ });
|
|
|
|
|
+ dialogVisibleTest.value = false
|
|
|
|
|
+ getDataRen({
|
|
|
|
|
+ mdid:parMdid.value,
|
|
|
|
|
+ pageNum:pageNum.value,
|
|
|
|
|
+ pageSize:20
|
|
|
|
|
+ })
|
|
|
|
|
+ }else{
|
|
|
|
|
+ proxy.$message({
|
|
|
|
|
+ message: res.message,
|
|
|
|
|
+ type: 'error'
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+}
|
|
|
|
|
+function addStart(){
|
|
|
|
|
+ tableDataCanStart.value.push({})
|
|
|
|
|
+}
|
|
|
|
|
+function delCanStart(index){
|
|
|
|
|
+ tableDataCanStart.value.splice(index,1)
|
|
|
|
|
+}
|
|
|
function showLog(row){
|
|
function showLog(row){
|
|
|
dialogVisibleLevel.value = true
|
|
dialogVisibleLevel.value = true
|
|
|
var par = {
|
|
var par = {
|
|
@@ -692,19 +778,15 @@ function showLog(row){
|
|
|
tableDataLog.value = res.rows
|
|
tableDataLog.value = res.rows
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
-function test(){
|
|
|
|
|
- var par = detailJson.value
|
|
|
|
|
- par.params = tableDataCan.value
|
|
|
|
|
- testService(par).then(res=>{
|
|
|
|
|
- console.log(res)
|
|
|
|
|
- dataReturn.value = res.msg
|
|
|
|
|
- var par1 = {
|
|
|
|
|
- data:{id:parMdid.value}
|
|
|
|
|
- }
|
|
|
|
|
- handleNodeClick(null,par1,null)
|
|
|
|
|
- })
|
|
|
|
|
|
|
+function handleShowCron() {
|
|
|
|
|
+ expression.value = formJi.value.triggerInterval;
|
|
|
|
|
+ openCron.value = true;
|
|
|
|
|
+}
|
|
|
|
|
+function crontabFill(value) {
|
|
|
|
|
+ formJi.value.triggerInterval = value;
|
|
|
}
|
|
}
|
|
|
function addTask(row){
|
|
function addTask(row){
|
|
|
|
|
+ isAdd.value = true
|
|
|
dialogVisibleTest.value = true
|
|
dialogVisibleTest.value = true
|
|
|
getSerDe(row.srvId).then(res=>{
|
|
getSerDe(row.srvId).then(res=>{
|
|
|
if(res.code===200){
|
|
if(res.code===200){
|
|
@@ -763,184 +845,27 @@ function clearAdd(){
|
|
|
]
|
|
]
|
|
|
dataReturn.value = ''
|
|
dataReturn.value = ''
|
|
|
}
|
|
}
|
|
|
-function extractModelNodesDFSIterative(root) {
|
|
|
|
|
- const result = [];
|
|
|
|
|
- const stack = root;
|
|
|
|
|
-
|
|
|
|
|
- while (stack.length > 0) {
|
|
|
|
|
- const node = stack.pop();
|
|
|
|
|
- if (node.nodeType === 'MODEL') {
|
|
|
|
|
- result.push(node);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // 子节点逆序入栈(保证从左到右遍历)
|
|
|
|
|
- if (node.children) {
|
|
|
|
|
- for (let i = node.children.length - 1; i >= 0; i--) {
|
|
|
|
|
- stack.push(node.children[i]);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- return result;
|
|
|
|
|
-}
|
|
|
|
|
-function delAll(){
|
|
|
|
|
- proxy.$modal.confirm('是否确认删除?').then(function () {
|
|
|
|
|
- return deTree(parTree.value.id);
|
|
|
|
|
- }).then(() => {
|
|
|
|
|
- getTreeLeft();
|
|
|
|
|
- proxy.$modal.msgSuccess("删除成功");
|
|
|
|
|
- dialogVisibleLevel.value = false
|
|
|
|
|
- }).catch(() => {});
|
|
|
|
|
-}
|
|
|
|
|
function clearFromLev(){
|
|
function clearFromLev(){
|
|
|
tableDataLog.value = []
|
|
tableDataLog.value = []
|
|
|
}
|
|
}
|
|
|
-function addNextLevel(){
|
|
|
|
|
- dialogVisibleLevel.value = true
|
|
|
|
|
- show1Lev.value = false
|
|
|
|
|
-}
|
|
|
|
|
-function saveAddNextLevel(){
|
|
|
|
|
- formRefLev.value.validate((valid) => {
|
|
|
|
|
- if(valid){
|
|
|
|
|
- var par = formLev.value
|
|
|
|
|
- par.treeType = 'MODEL'
|
|
|
|
|
- par.treePid = parTree.value.id
|
|
|
|
|
- addTree(par).then(res=>{
|
|
|
|
|
- if(res.code===200){
|
|
|
|
|
- proxy.$modal.msgSuccess("新增成功");
|
|
|
|
|
- getTreeLeft()
|
|
|
|
|
- dialogVisibleLevel.value = false
|
|
|
|
|
- }
|
|
|
|
|
- })
|
|
|
|
|
- }
|
|
|
|
|
- });
|
|
|
|
|
-}
|
|
|
|
|
-function add1Level(){
|
|
|
|
|
- dialogVisibleLevel.value = true
|
|
|
|
|
- show1Lev.value = true
|
|
|
|
|
-}
|
|
|
|
|
-function saveAdd1Level(){
|
|
|
|
|
- formRefLev.value.validate((valid) => {
|
|
|
|
|
- if(valid){
|
|
|
|
|
- var par = formLev.value
|
|
|
|
|
- par.treeType = 'MODEL'
|
|
|
|
|
- par.treePid = parTree.value.pid
|
|
|
|
|
- addTree(par).then(res=>{
|
|
|
|
|
- if(res.code===200){
|
|
|
|
|
- proxy.$modal.msgSuccess("新增成功");
|
|
|
|
|
- getTreeLeft()
|
|
|
|
|
- dialogVisibleLevel.value = false
|
|
|
|
|
- }
|
|
|
|
|
- })
|
|
|
|
|
- }
|
|
|
|
|
- });
|
|
|
|
|
-}
|
|
|
|
|
-async function delSer(){
|
|
|
|
|
- proxy.$modal.confirm('是否确认删除?').then(function () {
|
|
|
|
|
- return delService(parId.value.id);
|
|
|
|
|
- }).then(() => {
|
|
|
|
|
- getTreeLeft();
|
|
|
|
|
- proxy.$modal.msgSuccess("删除成功");
|
|
|
|
|
- }).catch(() => {});
|
|
|
|
|
-}
|
|
|
|
|
-async function addSer(){
|
|
|
|
|
- console.log(JsonAdd.value)
|
|
|
|
|
- var valid
|
|
|
|
|
- await formRefAdd.value.validate((valid1) => {
|
|
|
|
|
- valid = valid1
|
|
|
|
|
- });
|
|
|
|
|
- console.log(valid)
|
|
|
|
|
- if(valid){
|
|
|
|
|
- var par = formAdd.value
|
|
|
|
|
- par.example = exampleAdd.value
|
|
|
|
|
- par.rpcontent = JsonAdd.value
|
|
|
|
|
- par.cateCode = par.cateCode[0]
|
|
|
|
|
- console.log(par)
|
|
|
|
|
-
|
|
|
|
|
- await addService(par).then(res=>{
|
|
|
|
|
- if(res.code===200){
|
|
|
|
|
- var parCan = tableDataCanAdd.value
|
|
|
|
|
- parCan.srvId = res.data.srvId
|
|
|
|
|
- addServiceParam(parCan).then(res1=>{
|
|
|
|
|
- if(res1.code===200){
|
|
|
|
|
- proxy.$modal.msgSuccess("新增成功");
|
|
|
|
|
- getTreeLeft()
|
|
|
|
|
- }
|
|
|
|
|
- })
|
|
|
|
|
- }
|
|
|
|
|
- })
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
-}
|
|
|
|
|
-function showAdd(){
|
|
|
|
|
- dialogVisible.value = true
|
|
|
|
|
-}
|
|
|
|
|
async function handleNodeClick(node,data,event){
|
|
async function handleNodeClick(node,data,event){
|
|
|
- // parTree.value = data.data
|
|
|
|
|
- // currentNodeKey.value = data.data.id
|
|
|
|
|
-
|
|
|
|
|
- // isEdit.value = false
|
|
|
|
|
- // parId.value = data.data
|
|
|
|
|
- // await getSerDe(data.data.id).then(res=>{
|
|
|
|
|
- // if(res.data.ptService){
|
|
|
|
|
- // detail.value = res.data.ptService
|
|
|
|
|
- // tableDataCan.value = res.data.list
|
|
|
|
|
- // dataReturn.value = res.data.returnList
|
|
|
|
|
- // console.log(tableDataCan.value)
|
|
|
|
|
- // dataJsonXiang.value = res.data.ptService.rpcontent
|
|
|
|
|
- // formJi.value = res.data.ptService
|
|
|
|
|
- // example.value = res.data.ptService.example
|
|
|
|
|
- // }
|
|
|
|
|
-
|
|
|
|
|
- // })
|
|
|
|
|
console.log(data)
|
|
console.log(data)
|
|
|
titleTest.value = data.data.label
|
|
titleTest.value = data.data.label
|
|
|
parMdid.value = data.data.id
|
|
parMdid.value = data.data.id
|
|
|
var par = {
|
|
var par = {
|
|
|
- mdid:data.data.id
|
|
|
|
|
|
|
+ mdid:data.data.id,
|
|
|
|
|
+ pageNum:1,
|
|
|
|
|
+ pageSize:20
|
|
|
}
|
|
}
|
|
|
- console.log(data.data.id)
|
|
|
|
|
- await getServiceInfo(par).then(res=>{
|
|
|
|
|
- if(res.data){
|
|
|
|
|
- tableData.value = res.data.serviceList
|
|
|
|
|
-
|
|
|
|
|
|
|
+ await getDataRen(par).then(res=>{
|
|
|
|
|
+ if(res.rows){
|
|
|
|
|
+ tableData.value = res.rows
|
|
|
|
|
+ tableData.value.forEach(item=>{
|
|
|
|
|
+ item.type = data.data.label
|
|
|
|
|
+ })
|
|
|
|
|
+ total.value = res.total
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
|
- parOptions.value.forEach(option => {
|
|
|
|
|
- option.label = option.cateName;
|
|
|
|
|
- option.value = option.cateCode;
|
|
|
|
|
- });
|
|
|
|
|
- console.log(parOptions.value)
|
|
|
|
|
- for(var i = 0; i < parOptions.value.length; i++){
|
|
|
|
|
- for(var i1 = 0; i1 < tableData.value.length; i1++){
|
|
|
|
|
- console.log(i1);
|
|
|
|
|
- if(parOptions.value[i].value === tableData.value[i1].cateCode){
|
|
|
|
|
- tableData.value[i1].cateCode = parOptions.value[i].label
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- var par = [
|
|
|
|
|
- {
|
|
|
|
|
- value:'1',
|
|
|
|
|
- label:'JSON'
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- value:'2',
|
|
|
|
|
- label:'XML'
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- value:'3',
|
|
|
|
|
- label:'HTML'
|
|
|
|
|
- }
|
|
|
|
|
- ]
|
|
|
|
|
- for(var i = 0; i < par.length; i++){
|
|
|
|
|
- for(var i1 = 0; i1 < tableData.value.length; i1++){
|
|
|
|
|
- if(par[i].value === tableData.value[i1].rptype){
|
|
|
|
|
- tableData.value[i1].rptype = par[i].label
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
}
|
|
}
|
|
|
async function getTreeLeft(){
|
|
async function getTreeLeft(){
|
|
|
var par = {
|
|
var par = {
|