@@ -1,5 +1,24 @@ | |||||
import request from '@/utils/request' | import request from '@/utils/request' | ||||
// 重新运行计划 | |||||
export function appRetry(jobUuid) { | |||||
return request({ | |||||
url: '/business/ctApplyPlan/appRetry', | |||||
method: 'post', | |||||
data: {jobUuid} | |||||
}) | |||||
} | |||||
// 停止运行计划 | |||||
export function stopRun(jobUuid) { | |||||
return request({ | |||||
url: '/business/ctApplyPlan/stopRun', | |||||
method: 'post', | |||||
data: {jobUuid} | |||||
}) | |||||
} | |||||
// 查询应用执行计划管理列表 | // 查询应用执行计划管理列表 | ||||
export function listCtApplyPlan(query) { | export function listCtApplyPlan(query) { | ||||
return request({ | return request({ | ||||
@@ -60,7 +60,7 @@ export default { | |||||
// 文件类型, 例如['png', 'jpg', 'jpeg'] | // 文件类型, 例如['png', 'jpg', 'jpeg'] | ||||
fileType: { | fileType: { | ||||
type: Array, | type: Array, | ||||
default: () => ["doc", "xls", "xlsx", "ppt", "txt", "pdf"], | |||||
default: () => ["doc", "docx","xls", "xlsx"], | |||||
}, | }, | ||||
// 是否显示提示 | // 是否显示提示 | ||||
isShowTip: { | isShowTip: { | ||||
@@ -34,6 +34,7 @@ | |||||
<el-col :span="1.5"> | <el-col :span="1.5"> | ||||
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleSyn" | <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleSyn" | ||||
v-hasPermi="['business:ctApply:syn']">同步应用数据</el-button> | v-hasPermi="['business:ctApply:syn']">同步应用数据</el-button> | ||||
<span style="color: red;"> 提示:搜索更新并非实时数据,同步为最新数据</span> | |||||
</el-col> | </el-col> | ||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> | <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> | ||||
</el-row> | </el-row> | ||||
@@ -90,9 +91,9 @@ | |||||
<el-table-column label="应用创建时间" align="center" prop="appCreateTime" width="100" /> | <el-table-column label="应用创建时间" align="center" prop="appCreateTime" width="100" /> | ||||
<el-table-column label="应用修改时间" align="center" prop="appUpdateTime" width="100" /> | <el-table-column label="应用修改时间" align="center" prop="appUpdateTime" width="100" /> | ||||
<el-table-column label="应用所有者名称" align="center" prop="ownerName" width="120" /> | <el-table-column label="应用所有者名称" align="center" prop="ownerName" width="120" /> | ||||
<el-table-column label="应用所有者账号" align="center" prop="ownerAccount" width="200" /> | |||||
<!-- <el-table-column label="应用所有者账号" align="center" prop="ownerAccount" width="200" /> | |||||
<el-table-column label="所有者id" align="center" prop="ownerId" width="300" /> | <el-table-column label="所有者id" align="center" prop="ownerId" width="300" /> | ||||
<el-table-column label="appid" align="center" prop="appId" width="300" /> | |||||
<el-table-column label="appid" align="center" prop="appId" width="300" /> --> | |||||
<!-- <el-table-column label="部门id" align="center" prop="deptId" width="100" /> --> | <!-- <el-table-column label="部门id" align="center" prop="deptId" width="100" /> --> | ||||
<el-table-column label="创建者" align="center" fixed="right" prop="createBy" width="100" /> | <el-table-column label="创建者" align="center" fixed="right" prop="createBy" width="100" /> | ||||
@@ -107,7 +108,7 @@ | |||||
<span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span> | <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span> | ||||
</template> | </template> | ||||
</el-table-column> | </el-table-column> | ||||
<el-table-column label="备注" align="center" prop="remark" /> | |||||
<el-table-column label="备注" align="center" prop="remark" width="100" /> | |||||
<el-table-column label="操作" align="center" width="200" fixed="right" class-name="small-padding fixed-width"> | <el-table-column label="操作" align="center" width="200" fixed="right" class-name="small-padding fixed-width"> | ||||
<template slot-scope="scope"> | <template slot-scope="scope"> | ||||
<el-button v-if="scope.row.version != '未发版'" size="mini" type="text" icon="el-icon-edit" @click="showConfigTime(scope.row)" | <el-button v-if="scope.row.version != '未发版'" size="mini" type="text" icon="el-icon-edit" @click="showConfigTime(scope.row)" | ||||
@@ -36,7 +36,7 @@ | |||||
<el-table v-loading="loading" :data="ctApplyPlanList" @selection-change="handleSelectionChange"> | <el-table v-loading="loading" :data="ctApplyPlanList" @selection-change="handleSelectionChange"> | ||||
<!-- :summary-method="getSummaries" show-summary --> | <!-- :summary-method="getSummaries" show-summary --> | ||||
<el-table-column type="selection" width="55" align="center" fixed="left" /> | |||||
<!-- <el-table-column type="selection" width="55" align="center" fixed="left" /> --> | |||||
<el-table-column label="序号" width="55" align="center" fixed="left"> | <el-table-column label="序号" width="55" align="center" fixed="left"> | ||||
<template slot-scope="scope"> | <template slot-scope="scope"> | ||||
{{ scope.$index + 1 }} | {{ scope.$index + 1 }} | ||||
@@ -103,7 +103,7 @@ | |||||
<el-table-column label="结束时间" align="center" fixed="right" prop="endTime" width="100" /> | <el-table-column label="结束时间" align="center" fixed="right" prop="endTime" width="100" /> | ||||
<el-table-column label="人工耗时" align="center" fixed="right" prop="manualTime" width="100"> | <el-table-column label="人工耗时" align="center" fixed="right" prop="manualTime" width="100"> | ||||
<template slot-scope="scope"> | <template slot-scope="scope"> | ||||
<span>{{ scope.row.manualTime }} 分钟</span> | |||||
<span v-if="scope.row.manualTime != null">{{ scope.row.manualTime }} 分钟</span> | |||||
</template> | </template> | ||||
</el-table-column> | </el-table-column> | ||||
<el-table-column label="实际耗时" align="center" fixed="right" prop="planTime" width="100"> | <el-table-column label="实际耗时" align="center" fixed="right" prop="planTime" width="100"> | ||||
@@ -126,9 +126,13 @@ | |||||
<el-table-column label="操作" align="center" width="250" fixed="right" class-name="small-padding fixed-width"> | <el-table-column label="操作" align="center" width="250" fixed="right" class-name="small-padding fixed-width"> | ||||
<template slot-scope="scope"> | <template slot-scope="scope"> | ||||
<router-link to="/rpa/ctResourceLibrary"> | <router-link to="/rpa/ctResourceLibrary"> | ||||
<el-button size="mini" v-if="scope.row.taskStatus == 'await_create'" type="text" icon="el-icon-edit" | |||||
<el-button size="mini" v-if="scope.row.taskStatus == 'await_create'" type="text" icon="el-icon-setting" | |||||
v-hasPermi="['business:ctApplyPlan:edit']">设置参数</el-button> | v-hasPermi="['business:ctApplyPlan:edit']">设置参数</el-button> | ||||
</router-link> | </router-link> | ||||
<el-button size="mini" v-if="scope.row.taskStatus == 'stopped' || scope.row.taskStatus == 'error' || scope.row.taskStatus == 'cancel'" type="text" icon="el-icon-refresh" | |||||
@click="appRetry(scope.row)" v-hasPermi="['business:ctApplyPlan:appRetry']">重新运行</el-button> | |||||
<el-button size="mini" v-if="scope.row.taskStatus == 'running'" type="text" icon="el-icon-video-pause" | |||||
@click="stopRun(scope.row)" v-hasPermi="['business:ctApplyPlan:stopRun']">停止运行</el-button> | |||||
<el-button size="mini" v-if="scope.row.taskStatus == 'await_create'" type="text" icon="el-icon-edit" | <el-button size="mini" v-if="scope.row.taskStatus == 'await_create'" type="text" icon="el-icon-edit" | ||||
@click="handleUpdate(scope.row)" v-hasPermi="['business:ctApplyPlan:edit']">修改</el-button> | @click="handleUpdate(scope.row)" v-hasPermi="['business:ctApplyPlan:edit']">修改</el-button> | ||||
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" | <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" | ||||
@@ -237,7 +241,7 @@ | |||||
</template> | </template> | ||||
<script> | <script> | ||||
import { listCtApplyPlan, getCtApplyPlan, delCtApplyPlan, addCtApplyPlan, updateCtApplyPlan } from "@/api/business/ctApplyPlan"; | |||||
import { listCtApplyPlan, getCtApplyPlan, delCtApplyPlan, addCtApplyPlan, updateCtApplyPlan,stopRun,appRetry } from "@/api/business/ctApplyPlan"; | |||||
import { listRebotAll } from "@/api/business/ctRebot"; | import { listRebotAll } from "@/api/business/ctRebot"; | ||||
import { listApplyAll } from "@/api/business/ctApply"; | import { listApplyAll } from "@/api/business/ctApply"; | ||||
import Crontab from '@/components/Crontab' | import Crontab from '@/components/Crontab' | ||||
@@ -249,6 +253,7 @@ export default { | |||||
dicts: ['plan_type', 'wait_timeout', , 'exc_type', 'plan_run_status', 'app_param_type'], | dicts: ['plan_type', 'wait_timeout', , 'exc_type', 'plan_run_status', 'app_param_type'], | ||||
data() { | data() { | ||||
return { | return { | ||||
baseUrl: process.env.VUE_APP_BASE_API, | |||||
// 是否显示Cron表达式弹出层 | // 是否显示Cron表达式弹出层 | ||||
openCron: false, | openCron: false, | ||||
// 传入的表达式 | // 传入的表达式 | ||||
@@ -324,6 +329,20 @@ export default { | |||||
this.getList(); | this.getList(); | ||||
}, | }, | ||||
methods: { | methods: { | ||||
/** 停止运行 */ | |||||
stopRun(row) { | |||||
stopRun(row.taskUuid).then(res => { | |||||
this.$modal.msgSuccess("操作成功"); | |||||
this.getList(); | |||||
}); | |||||
}, | |||||
/** 重新运行 */ | |||||
appRetry(row) { | |||||
appRetry(row.taskUuid).then(res => { | |||||
this.$modal.msgSuccess("操作成功"); | |||||
this.getList(); | |||||
}); | |||||
}, | |||||
/** 查询应用执行计划管理列表 */ | /** 查询应用执行计划管理列表 */ | ||||
getList() { | getList() { | ||||
this.loading = true; | this.loading = true; | ||||
@@ -420,13 +439,13 @@ export default { | |||||
if (valid) { | if (valid) { | ||||
if (this.form.id != null) { | if (this.form.id != null) { | ||||
updateCtApplyPlan(this.form).then(response => { | updateCtApplyPlan(this.form).then(response => { | ||||
this.$modal.msgSuccess("修改成功"); | |||||
this.$modal.msgSuccess("修改计划成功"); | |||||
this.open = false; | this.open = false; | ||||
this.getList(); | this.getList(); | ||||
}); | }); | ||||
} else { | } else { | ||||
addCtApplyPlan(this.form).then(response => { | addCtApplyPlan(this.form).then(response => { | ||||
this.$modal.msgSuccess("新增成功"); | |||||
this.$modal.msgSuccess("创建计划成功"); | |||||
this.open = false; | this.open = false; | ||||
this.getList(); | this.getList(); | ||||
}); | }); | ||||
@@ -468,6 +487,7 @@ export default { | |||||
return prev; | return prev; | ||||
} | } | ||||
}, 0); | }, 0); | ||||
console.log("column",column); | |||||
sums[index] += ' 分钟'; | sums[index] += ' 分钟'; | ||||
} else { | } else { | ||||
sums[index] = ''; | sums[index] = ''; | ||||
@@ -485,6 +505,15 @@ export default { | |||||
crontabFill(value) { | crontabFill(value) { | ||||
this.form.cronExpression = value; | this.form.cronExpression = value; | ||||
}, | }, | ||||
/**下载文件 */ | |||||
downloadUrl(url) { | |||||
let link = document.createElement("a"); | |||||
link.style.display = "none"; | |||||
link.href = this.baseUrl + url; | |||||
link.setAttribute("download", name); | |||||
document.body.appendChild(link); | |||||
link.click(); | |||||
} | |||||
} | } | ||||
}; | }; | ||||
</script> | </script> |
@@ -20,6 +20,7 @@ | |||||
<el-col :span="1.5"> | <el-col :span="1.5"> | ||||
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleSyn" | <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleSyn" | ||||
v-hasPermi="['business:ctRebot:syn']">同步机器人信息</el-button> | v-hasPermi="['business:ctRebot:syn']">同步机器人信息</el-button> | ||||
<span style="color: red;"> 提示:搜索更新并非实时数据,同步为最新数据</span> | |||||
</el-col> | </el-col> | ||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> | <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> | ||||
</el-row> | </el-row> | ||||
@@ -54,7 +55,7 @@ | |||||
<span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span> | <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span> | ||||
</template> | </template> | ||||
</el-table-column> | </el-table-column> | ||||
<el-table-column label="备注" align="center" prop="remark"/> | |||||
<!-- <el-table-column label="备注" align="center" prop="remark"/> --> | |||||
<el-table-column label="操作" align="center" width="150" fixed="right" class-name="small-padding fixed-width"> | <el-table-column label="操作" align="center" width="150" fixed="right" class-name="small-padding fixed-width"> | ||||
<template slot-scope="scope"> | <template slot-scope="scope"> | ||||
<!-- <el-button size="mini" type="text" icon="el-icon-edit" @click="handleSyn(scope.row)" | <!-- <el-button size="mini" type="text" icon="el-icon-edit" @click="handleSyn(scope.row)" | ||||
@@ -2,7 +2,7 @@ | |||||
<div class="app-container"> | <div class="app-container"> | ||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px"> | <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px"> | ||||
<el-form-item label="所属应用名称" prop="appName"> | <el-form-item label="所属应用名称" prop="appName"> | ||||
<el-select v-model="form.appId" filterable placeholder="请选择应用"> | |||||
<el-select v-model="queryParams.appId" filterable placeholder="请选择应用"> | |||||
<el-option v-for="apply in applyList" :key="apply.appId" :label="apply.appName" | <el-option v-for="apply in applyList" :key="apply.appId" :label="apply.appName" | ||||
@keyup.enter.native="handleQuery" :value="apply.appId"></el-option> | @keyup.enter.native="handleQuery" :value="apply.appId"></el-option> | ||||
</el-select> | </el-select> | ||||
@@ -20,19 +20,12 @@ | |||||
<el-col :span="1.5"> | <el-col :span="1.5"> | ||||
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" | <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" | ||||
v-hasPermi="['business:ctResourceLibrary:add']">新增</el-button> | v-hasPermi="['business:ctResourceLibrary:add']">新增</el-button> | ||||
<span style="color: red;"> 提示:该参数跟随计划,修改内容不会影响已经创建的计划</span> | |||||
</el-col> | </el-col> | ||||
<!-- <el-col :span="1.5"> | |||||
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate" | |||||
v-hasPermi="['business:ctResourceLibrary:edit']">修改</el-button> | |||||
</el-col> --> | |||||
<el-col :span="1.5"> | <el-col :span="1.5"> | ||||
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete" | <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete" | ||||
v-hasPermi="['business:ctResourceLibrary:remove']">删除</el-button> | v-hasPermi="['business:ctResourceLibrary:remove']">删除</el-button> | ||||
</el-col> | </el-col> | ||||
<!-- <el-col :span="1.5"> | |||||
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" | |||||
v-hasPermi="['business:ctResourceLibrary:export']">导出</el-button> | |||||
</el-col> --> | |||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> | <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> | ||||
</el-row> | </el-row> | ||||
@@ -43,6 +36,12 @@ | |||||
{{ scope.$index + 1 }} | {{ scope.$index + 1 }} | ||||
</template> | </template> | ||||
</el-table-column> | </el-table-column> | ||||
<el-table-column label="所属应用名称" align="center" prop="appName" width="150" /> | |||||
<el-table-column label="资源类型" align="center" prop="resourceType" width="100"> | |||||
<template slot-scope="scope"> | |||||
<dict-tag :options="dict.type.app_param_type" :value="scope.row.resourceType" /> | |||||
</template> | |||||
</el-table-column> | |||||
<el-table-column label="资源描述" align="center" prop="resource" width="100" /> | <el-table-column label="资源描述" align="center" prop="resource" width="100" /> | ||||
<el-table-column label="资源内容" align="center" prop="resourceValue" width="100"> | <el-table-column label="资源内容" align="center" prop="resourceValue" width="100"> | ||||
<template slot-scope="scope"> | <template slot-scope="scope"> | ||||
@@ -52,13 +51,7 @@ | |||||
</template> | </template> | ||||
.xlsx | .xlsx | ||||
</el-table-column> | </el-table-column> | ||||
<el-table-column label="资源类型" align="center" prop="resourceType" width="100"> | |||||
<template slot-scope="scope"> | |||||
<dict-tag :options="dict.type.app_param_type" :value="scope.row.resourceType" /> | |||||
</template> | |||||
</el-table-column> | |||||
<el-table-column label="资源键" align="center" prop="resourceName" width="100" /> | <el-table-column label="资源键" align="center" prop="resourceName" width="100" /> | ||||
<el-table-column label="所属应用名称" align="center" prop="appName" width="100" /> | |||||
<!-- <el-table-column label="部门id" align="center" prop="deptId" width="100" /> --> | <!-- <el-table-column label="部门id" align="center" prop="deptId" width="100" /> --> | ||||
<!-- <el-table-column label="所属部门" align="center" prop="deptName" width="100" /> --> | <!-- <el-table-column label="所属部门" align="center" prop="deptName" width="100" /> --> | ||||
<el-table-column label="创建者" align="center" fixed="right" prop="createBy" width="100" /> | <el-table-column label="创建者" align="center" fixed="right" prop="createBy" width="100" /> | ||||
@@ -165,6 +158,7 @@ export default { | |||||
dicts: ['app_param_type'], | dicts: ['app_param_type'], | ||||
data() { | data() { | ||||
return { | return { | ||||
baseUrl: process.env.VUE_APP_BASE_API, | |||||
// 遮罩层 | // 遮罩层 | ||||
loading: true, | loading: true, | ||||
// 选中数组 | // 选中数组 | ||||
@@ -336,7 +330,7 @@ export default { | |||||
downloadUrl(url) { | downloadUrl(url) { | ||||
let link = document.createElement("a"); | let link = document.createElement("a"); | ||||
link.style.display = "none"; | link.style.display = "none"; | ||||
link.href = url; | |||||
link.href = this.baseUrl + url; | |||||
link.setAttribute("download", name); | link.setAttribute("download", name); | ||||
document.body.appendChild(link); | document.body.appendChild(link); | ||||
link.click(); | link.click(); | ||||