Commit 53c04ff5 authored by “yiyousong”'s avatar “yiyousong”

feat:新增系统设置板块

parent bffdb561
// 系统api
import request from "@/utils/request";
/**
* 系统参数
*/
// 获取系统参数列表
export const getParamList = (data) => {
return request({
url: `/sampleform/param/list`,
method: "post",
data,
});
};
// 查看系统参数
export const getParamInfo = (params) => {
return request({
url: `/sampleform/param/info`,
method: "get",
params,
});
};
// 保存编辑系统参数
export const saveParam = (data) => {
return request({
url: `/sampleform/param/save`,
method: "post",
data,
});
};
// 删除系统参数
export const delParam = (params) => {
return request({
url: `/sampleform/param/delete`,
method: "get",
params,
});
};
/**
* 任务信息
*/
// 获取任务信息列表
export const getTaskList = (data) => {
return request({
url: `/sampleform/task/list`,
method: "post",
data,
});
};
// 查看任务信息
export const getTaskInfo = (params) => {
return request({
url: `/sampleform/task/info`,
method: "get",
params,
});
};
// 保存编辑任务信息
export const saveTask = (data) => {
return request({
url: `/sampleform/task/save`,
method: "post",
data,
});
};
// 删除任务信息
export const delTask = (params) => {
return request({
url: `/sampleform/task/delete`,
method: "get",
params,
});
};
/**
* 操作日志
*/
// 获取操作日志
export const getlogsList = (data) => {
return request({
url: `/sampleform/oper/log/list`,
method: "post",
data,
});
};
// 查看操作日志
export const getlog = (params) => {
return request({
url: `/sampleform/oper/log/info`,
method: "get",
params,
});
};
......@@ -88,7 +88,7 @@ export default {
<style lang="less" scoped>
.layouts {
width: 100%;
min-width: 1500px;
min-width: 1620px;
height: 100%;
padding-bottom: 10px;
// .crumbs {
......
......@@ -50,7 +50,12 @@ export default {
},
computed: {
activeMenu() {
return this.$route.path;
const route = this.$route;
const { meta, path } = route;
if (meta.activeMenu) {
return meta.activeMenu;
}
return path;
},
meuns() {
return this.$store.state.menus;
......
<template>
<div class="system flex flexc">
<el-tabs :value="activeKey" @tab-click="changeRouter">
<el-tab-pane label="系统参数" name="/system/parameter"></el-tab-pane>
<el-tab-pane label="任务信息" name="/system/task"></el-tab-pane>
<el-tab-pane label="操作日志" name="/system/systemlogs"></el-tab-pane>
</el-tabs>
<div class="system-out-box flex1">
<router-view></router-view>
</div>
</div>
</template>
<script>
export default {
computed: {
activeKey() {
return this.$route.path;
},
},
methods: {
changeRouter(e) {
this.$router.push(e.name);
},
},
};
</script>
<style lang="less" scoped>
:deep(.el-tabs__nav-scroll) {
padding-left: 15px;
}
.system {
width: 100%;
height: 100%;
.system-out-box {
padding: 0px 15px 15px 15px;
overflow-y: auto;
}
/deep/.ant-tabs-nav-container {
border-bottom: 1px solid #f0f0f0 !important;
}
}
</style>
\ No newline at end of file
<template>
<div class="parameter">
<TableHeader>
<div slot="left">
<el-button size="small" type="primary" @click="handleAdd"
>新增参数</el-button
>
<el-button size="small" type="danger" @click="handleDelAll"
>批量移除</el-button
>
</div>
<div slot="right" class="flex">
<el-input
size="small"
v-model="searchVal"
style="width: 200px"
class="ml10 mr10"
placeholder="请输入参数名称搜索"
@keyup.native.enter="handleSearch"
></el-input>
<el-button size="small" type="primary" @click="handleSearch"
>搜索</el-button
>
<el-button size="small" @click="handleReset">重置</el-button>
</div>
</TableHeader>
<!-- 表格 -->
<div class="table-content">
<el-table
ref="multipleTable"
size="small"
v-loading="loading"
:data="tableData"
border
tooltip-effect="dark"
style="width: 100%"
max-height="676px"
:row-key="(row) => row.id"
@selection-change="handleSelectionChange"
>
<el-table-column
reserve-selection
type="selection"
width="55"
align="center"
>
</el-table-column>
<el-table-column
type="index"
label="序号"
width="55"
align="center"
:index="(index) => (current - 1) * size + index + 1"
>
</el-table-column>
<el-table-column label="参数名称" align="center" prop="name">
</el-table-column>
<el-table-column label="一级组织" align="center" prop="firstOrganize">
</el-table-column>
<el-table-column label="二级组织" align="center" prop="secondOrganize">
</el-table-column>
<el-table-column label="参数键" align="center" prop="paramKey">
</el-table-column>
<el-table-column label="参数值" align="center" prop="paramValue">
</el-table-column>
<el-table-column label="参数有效状态" align="center" prop="validStatus">
<template slot-scope="scope">
<el-tag
size="small"
v-if="scope.row.validStatus == 1"
type="success"
>有效</el-tag
>
<el-tag size="small" v-else type="info">禁用</el-tag>
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="remark">
</el-table-column>
<el-table-column label="操作" align="center" width="100">
<template slot-scope="scope">
<div class="flex jca">
<span class="primary pointer" @click="handleEdit(scope.row)"
>编辑</span
>
<span class="delete pointer" @click="handleDel(scope.row.id)"
>删除</span
>
</div>
</template>
</el-table-column>
</el-table>
</div>
<div class="pagination" v-if="total">
<el-pagination
background
layout="total,sizes,prev,pager,next,jumper"
:pager-count="5"
:total="total"
:current-page="current"
:page-size="size"
:page-sizes="pageSizes"
@current-change="changePagination"
@size-change="changeSize"
>
</el-pagination>
</div>
<!-- 新增参数 -->
<AddParameter
ref="AddParameter"
:addVisible.sync="addVisible"
:title="title"
:dict="dict"
@addSuccess="getParamList"
></AddParameter>
</div>
</template>
<script>
import TableHeader from "@/components/TableHeader.vue";
import AddParameter from "./modal/AddParameter.vue";
import { getParamList, delParam } from "@/api/system";
export default {
components: {
TableHeader,
AddParameter,
},
data() {
return {
searchVal: "",
tableData: [],
current: 1,
size: 10,
total: 10,
pageSizes: [10, 20, 30, 40, 50, 100, 200],
loading: false,
selectKeys: [],
addVisible: false,
title: "新增参数",
dict: {}, // 字典
};
},
created() {
this.getParamList();
},
computed: {},
methods: {
// 系统事项列表
async getParamList() {
this.loading = true;
let res = await getParamList({
page: this.current,
size: this.size,
name: `%${this.searchVal}%`,
});
if (res.data.code == 1) {
let { data, total, dict } = res.data.data;
this.dict = dict;
if (!data.length && this.current > 1) {
this.current -= 1;
this.getParamList();
}
this.tableData = data;
this.total = total;
this.$refs.multipleTable.bodyWrapper.scrollTop = 0;
}
this.loading = false;
},
// 批量移除
handleDelAll() {
if (!this.selectKeys.length) {
this.$message.warning("请先勾选数据");
return;
}
let ids = this.selectKeys.map((v) => v.id).join(",");
this.handleDel(ids);
},
// 搜索
handleSearch() {
this.current = 1;
this.$refs.multipleTable.clearSelection();
this.getParamList();
},
// 重置
handleReset() {
this.searchVal = "";
this.current = 1;
this.$refs.multipleTable.clearSelection();
this.getParamList();
},
// 选中
handleSelectionChange(select) {
this.selectKeys = select;
},
// 翻页
changePagination(cur) {
this.current = cur;
this.getParamList();
},
// 改变没有显示数量
changeSize(size) {
this.size = size;
this.getParamList();
},
// 新增
handleAdd() {
this.title = "新增参数";
this.$refs.AddParameter.onAdd();
this.addVisible = true;
},
// 编辑
handleEdit(row) {
this.title = "编辑参数";
this.$refs.AddParameter.onEdit(row);
this.addVisible = true;
},
// 移除
handleDel(id) {
this.$confirm("此操作将删除所选数据,是否继续?", "系统提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
cancelButtonClass: "btn-custom-cancel",
type: "warning",
})
.then(async () => {
let res = await delParam({ id });
let { code, msg } = res.data;
if (code === 1) {
this.$message.success(msg);
this.getParamList();
this.$refs.multipleTable.clearSelection();
this.selectKeys = [];
}
})
.catch(() => {
console.log("取消成功!");
});
},
},
};
</script>
<style lang="less" scoped>
.parameter {
width: 100%;
min-height: 100%;
.short {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.full-name {
color: rgb(172, 170, 170);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
:deep(.el-card) {
height: auto;
}
// .table-content {
// height: 550px;
// }
}
</style>
\ No newline at end of file
<template>
<div>
<el-dialog
:title="title"
:destroy-on-close="true"
:visible.sync="Visible"
width="30%"
@close="handleClose"
:close-on-click-modal="false"
top="10vh"
>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="参数名称" prop="name">
<el-input
size="small"
v-model="form.name"
placeholder="请输入参数名称"
></el-input>
</el-form-item>
<el-form-item label="一级组织" prop="firstOrganize">
<el-input
size="small"
v-model="form.firstOrganize"
placeholder="请输入一级组织"
></el-input>
</el-form-item>
<el-form-item label="二级组织" prop="secondOrganize">
<el-input
size="small"
v-model="form.secondOrganize"
placeholder="请输入二级组织"
></el-input>
</el-form-item>
<el-form-item label="参数键" prop="paramKey">
<el-input
size="small"
v-model="form.paramKey"
placeholder="请输入参数键"
></el-input>
</el-form-item>
<el-form-item label="参数值" prop="paramValue">
<el-input
size="small"
v-model="form.paramValue"
placeholder="请输入参数值"
></el-input>
</el-form-item>
<el-form-item label="参数修改状态" prop="modStatus">
<el-select v-model="form.modStatus" placeholder="请选择参数有效状态">
<el-option
v-for="(v, key) in dict.modStatus"
:key="key"
:label="v"
:value="Number(key)"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="展现类型" prop="displayType">
<el-select v-model="form.displayType" placeholder="请选择展现类型">
<el-option
v-for="(v, key) in dict.displayType"
:key="key"
:label="v"
:value="Number(key)"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="参数有效状态" prop="validStatus">
<el-radio-group v-model="form.validStatus">
<el-radio
v-for="(v, key) in dict.validStatus"
:key="key"
:label="Number(key)"
>
{{ v }}
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input
resize="none"
:autosize="{ minRows: 3, maxRows: 3 }"
type="textarea"
placeholder="请输入备注"
v-model="form.remark"
></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button size="small" @click="handleRest">重 置</el-button>
<el-button size="small" type="primary" @click="handleOk"
>确 定</el-button
>
</span>
</el-dialog>
</div>
</template>
<script>
import { saveParam } from "@/api/system";
export default {
props: {
title: {
type: String,
required: true,
default: "",
},
addVisible: {
type: Boolean,
required: true,
default: false,
},
dict: {
type: Object,
required: true,
default: () => {
return {};
},
},
},
data() {
return {
form: {
name: "", // 参数名称
firstOrganize: "", // 一级组织
secondOrganize: "", // 二级组织
paramKey: "", // 参数键
paramValue: "", // 参数值
modStatus: "", // 参数修改状态
displayType: "", // 展现类型
validStatus: 1, // 参数有效状态
remark: "", // 备注
},
rules: {
name: [{ required: true, message: "请输入参数名称", trigger: "blur" }],
paramKey: [
{ required: true, message: "请输入参数键", trigger: "blur" },
],
paramValue: [
{ required: true, message: "请输入参数值", trigger: "blur" },
],
},
};
},
computed: {
Visible: {
get() {
return this.addVisible;
},
set(val) {
this.$emit("update:addVisible", val);
},
},
},
methods: {
// 确定
handleOk() {
this.$refs.form.validate(async (valid) => {
if (valid) {
let res = await saveParam(this.form);
let { code, msg } = res.data;
if (code === 1) {
this.$message.success(msg);
this.$emit("addSuccess");
this.handleClose();
}
}
});
},
// 新增
onAdd() {
Object.assign(this.form, this.$options.data().form);
this.form.id && this.$delete(this.form, "id");
},
// 编辑
onEdit(row) {
this.form = { ...row };
},
// 重置
handleRest() {
this.$refs.form.resetFields();
},
// 关闭
handleClose() {
this.$refs.form.resetFields();
this.Visible = false;
},
},
};
</script>
<style lang="less" scoped>
/deep/.el-select {
width: 100%;
}
</style>
\ No newline at end of file
<template>
<div class="system">
<TableHeader>
<div slot="right" class="flex">
<el-input
size="small"
v-model="searchVal"
style="width: 200px"
class="ml10 mr10"
placeholder="请输入请求地址搜索"
@keyup.native.enter="handleSearch"
></el-input>
<el-button size="small" type="primary" @click="handleSearch"
>搜索</el-button
>
<el-button size="small" @click="handleReset">重置</el-button>
</div>
</TableHeader>
<!-- 表格 -->
<div class="table-content">
<el-table
ref="multipleTable"
size="small"
v-loading="loading"
:data="tableData"
border
tooltip-effect="dark"
style="width: 100%"
max-height="676px"
:row-key="(row) => row.id"
>
<el-table-column
type="index"
label="序号"
width="55"
align="center"
:index="(index) => (current - 1) * size + index + 1"
>
</el-table-column>
<el-table-column label="用户名称" align="center" prop="userName">
</el-table-column>
<el-table-column label="登录名称" align="center" prop="loginName">
</el-table-column>
<el-table-column label="请求地址" align="center" prop="requestUrl">
</el-table-column>
<el-table-column label="操作内容" align="center" prop="content">
</el-table-column>
<el-table-column label="操作IP地址" align="center" prop="ip">
</el-table-column>
<el-table-column label="操作类型" align="center" prop="operType">
<template slot-scope="scope">
<span v-if="scope.row.operType == 0">新增</span>
<span v-else-if="scope.row.operType == 1">修改</span>
<span v-else-if="scope.row.operType == 2">删除</span>
</template>
</el-table-column>
<el-table-column label="操作时间" align="center" prop="logDate">
</el-table-column>
</el-table>
</div>
<div class="pagination" v-if="total">
<el-pagination
background
layout="total,sizes,prev,pager,next,jumper"
:pager-count="5"
:total="total"
:current-page="current"
:page-size="size"
:page-sizes="pageSizes"
@current-change="changePagination"
@size-change="changeSize"
>
</el-pagination>
</div>
</div>
</template>
<script>
import TableHeader from "@/components/TableHeader.vue";
import { getlogsList } from "@/api/system";
export default {
components: {
TableHeader,
},
data() {
return {
searchVal: "",
tableData: [],
current: 1,
size: 10,
total: 10,
pageSizes: [10, 20, 30, 40, 50, 100, 200],
loading: false,
selectKeys: [],
dict: {}, // 字典
};
},
created() {
this.getlogsList();
},
computed: {},
methods: {
// 系统事项列表
async getlogsList() {
this.loading = true;
let res = await getlogsList({
page: this.current,
size: this.size,
name: `%${this.searchVal}%`,
});
if (res.data.code == 1) {
let { data, total, dict } = res.data.data;
this.dict = dict;
if (!data.length && this.current > 1) {
this.current -= 1;
this.getlogsList();
}
this.tableData = data;
this.total = total;
this.$refs.multipleTable.bodyWrapper.scrollTop = 0;
}
this.loading = false;
},
// 搜索
handleSearch() {
this.current = 1;
this.$refs.multipleTable.clearSelection();
this.getlogsList();
},
// 重置
handleReset() {
this.searchVal = "";
this.current = 1;
this.$refs.multipleTable.clearSelection();
this.getlogsList();
},
// 翻页
changePagination(cur) {
this.current = cur;
this.getlogsList();
},
// 改变没有显示数量
changeSize(size) {
this.size = size;
this.getlogsList();
},
},
};
</script>
<style lang="less" scoped>
.system {
width: 100%;
min-height: 100%;
.short {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.full-name {
color: rgb(172, 170, 170);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
:deep(.el-card) {
height: auto;
}
// .table-content {
// height: 550px;
// }
}
</style>
\ No newline at end of file
<template>
<div class="task-set">
<TableHeader>
<div slot="left">
<el-button size="small" type="primary" @click="handleAdd"
>新增任务</el-button
>
<el-button size="small" type="danger" @click="handleDelAll"
>批量移除</el-button
>
</div>
<div slot="right" class="flex">
<el-input
size="small"
v-model="searchVal"
style="width: 200px"
class="ml10 mr10"
placeholder="请输入参数名称搜索"
@keyup.native.enter="handleSearch"
></el-input>
<el-button size="small" type="primary" @click="handleSearch"
>搜索</el-button
>
<el-button size="small" @click="handleReset">重置</el-button>
</div>
</TableHeader>
<!-- 表格 -->
<div class="table-content">
<el-table
ref="multipleTable"
size="small"
v-loading="loading"
:data="tableData"
border
tooltip-effect="dark"
style="width: 100%"
max-height="676px"
:row-key="(row) => row.id"
@selection-change="handleSelectionChange"
>
<el-table-column
reserve-selection
type="selection"
width="55"
align="center"
>
</el-table-column>
<el-table-column
type="index"
label="序号"
width="55"
align="center"
:index="(index) => (current - 1) * size + index + 1"
>
</el-table-column>
<el-table-column label="任务名称" align="center" prop="name">
</el-table-column>
<el-table-column label="执行主机" align="center" prop="excuteHost">
</el-table-column>
<el-table-column label="执行关键字" align="center" prop="taskKey">
</el-table-column>
<el-table-column label="执行策略" align="center" prop="excuteStrategy">
<template slot-scope="scope">
<el-tag type="info">{{
filterItems(scope.row.excuteStrategy, dict.excuteStrategy)
}}</el-tag>
</template>
</el-table-column>
<el-table-column
label="最后执行主机"
align="center"
prop="lastExcuteHost"
>
</el-table-column>
<el-table-column
label="最后执行时间"
align="center"
prop="lastExcuteTime"
>
</el-table-column>
<el-table-column label="任务状态" align="center" prop="status">
<template slot-scope="scope">
<!-- <el-tag v-if="scope.row.status == 1" type="success">执行中</el-tag> -->
<el-tag size="small" type="info">{{
filterItems(scope.row.status, dict.status)
}}</el-tag>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="100">
<template slot-scope="scope">
<div class="flex jca">
<span class="primary pointer" @click="handleEdit(scope.row)"
>编辑</span
>
<span class="delete pointer" @click="handleDel(scope.row.id)"
>删除</span
>
</div>
</template>
</el-table-column>
</el-table>
</div>
<div class="pagination" v-if="total">
<el-pagination
background
layout="total,sizes,prev,pager,next,jumper"
:pager-count="5"
:total="total"
:current-page="current"
:page-size="size"
:page-sizes="pageSizes"
@current-change="changePagination"
@size-change="changeSize"
>
</el-pagination>
</div>
<!-- 新增参数 -->
<AddTask
ref="AddTask"
:addVisible.sync="addVisible"
:title="title"
:dict="dict"
@addSuccess="getTaskList"
></AddTask>
</div>
</template>
<script>
import TableHeader from "@/components/TableHeader.vue";
import AddTask from "./modal/AddTask.vue";
import { getTaskList, delTask } from "@/api/system";
export default {
components: {
TableHeader,
AddTask,
},
data() {
return {
searchVal: "",
tableData: [],
current: 1,
size: 10,
total: 10,
pageSizes: [10, 20, 30, 40, 50, 100, 200],
loading: false,
selectKeys: [],
addVisible: false,
title: "新增参数",
dict: {}, // 字典
};
},
created() {
this.getTaskList();
},
computed: {},
methods: {
// 系统事项列表
async getTaskList() {
this.loading = true;
let res = await getTaskList({
page: this.current,
size: this.size,
name: `%${this.searchVal}%`,
});
if (res.data.code == 1) {
let { data, total, dict } = res.data.data;
this.dict = dict;
if (!data.length && this.current > 1) {
this.current -= 1;
this.getTaskList();
}
this.tableData = data;
this.total = total;
this.$refs.multipleTable.bodyWrapper.scrollTop = 0;
console.log(dict);
}
this.loading = false;
},
// 批量移除
handleDelAll() {
if (!this.selectKeys.length) {
this.$message.warning("请先勾选数据");
return;
}
let ids = this.selectKeys.map((v) => v.id).join(",");
this.handleDel(ids);
},
// 搜索
handleSearch() {
this.current = 1;
this.$refs.multipleTable.clearSelection();
this.getTaskList();
},
// 重置
handleReset() {
this.searchVal = "";
this.current = 1;
this.$refs.multipleTable.clearSelection();
this.getTaskList();
},
// 选中
handleSelectionChange(select) {
this.selectKeys = select;
},
// 翻页
changePagination(cur) {
this.current = cur;
this.getTaskList();
},
// 改变没有显示数量
changeSize(size) {
this.size = size;
this.getTaskList();
},
// 新增
handleAdd() {
this.title = "新增任务";
this.$refs.AddTask.onAdd();
this.addVisible = true;
},
// 编辑
handleEdit(row) {
this.title = "编辑任务";
this.$refs.AddTask.onEdit(row);
this.addVisible = true;
},
// 移除
handleDel(id) {
this.$confirm("此操作将删除所选数据,是否继续?", "系统提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
cancelButtonClass: "btn-custom-cancel",
type: "warning",
})
.then(async () => {
let res = await delTask({ id });
let { code, msg } = res.data;
if (code === 1) {
this.$message.success(msg);
this.getTaskList();
this.$refs.multipleTable.clearSelection();
this.selectKeys = [];
}
})
.catch(() => {
console.log("取消成功!");
});
},
// 过滤表格数据
filterItems(key, dict = {}) {
let val = "";
Object.keys(dict).forEach((keys) => {
if (key == keys) {
val = dict[keys];
}
});
return val;
},
},
};
</script>
<style lang="less" scoped>
.task-set {
width: 100%;
min-height: 100%;
.short {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.full-name {
color: rgb(172, 170, 170);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
:deep(.el-card) {
height: auto;
}
// .table-content {
// height: 550px;
// }
}
</style>
\ No newline at end of file
<template>
<div>
<el-dialog
:title="title"
:destroy-on-close="true"
:visible.sync="Visible"
width="30%"
@close="handleClose"
:close-on-click-modal="false"
top="10vh"
>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="任务名称" prop="name">
<el-input
size="small"
v-model="form.name"
placeholder="请输入任务名称"
></el-input>
</el-form-item>
<el-form-item label="关键字" prop="taskKey">
<el-input
size="small"
v-model="form.taskKey"
placeholder="请输入关键字"
></el-input>
</el-form-item>
<el-form-item label="执行服务" prop="excuteService">
<el-input
size="small"
v-model="form.excuteService"
placeholder="请输入执行服务"
></el-input>
</el-form-item>
<el-form-item label="执行策略" prop="excuteStrategy">
<el-select
v-model="form.excuteStrategy"
placeholder="请选择执行策略"
@change="changeExcuteStrategy"
>
<el-option
v-for="(v, key) in dict.excuteStrategy"
:key="key"
:label="v"
:value="Number(key)"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label="执行日期"
v-if="form.excuteStrategy != 4"
prop="excuteDate"
>
<el-input
disabled
v-if="form.excuteStrategy == 1"
size="small"
value="每日"
placeholder="请输入参数值"
></el-input>
<el-select
placeholder="请选择执行日期"
v-model.number="form.excuteDate"
v-else-if="form.excuteStrategy == 2"
>
<el-option
v-for="(v, key) in weeks"
:key="key"
:value="Number(key)"
:label="v"
>
</el-option>
</el-select>
<el-select
placeholder="请选择执行日期"
v-else-if="form.excuteStrategy == 3"
v-model="form.excuteDate"
>
<el-option
v-for="(v, key) in days"
:key="key"
:value="Number(key)"
:label="v"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="执行间隔时间" v-else prop="excuteDate">
<el-input placeholder="执行间隔时间" v-model.number="form.excuteDate">
<template slot="suffix"></template>
</el-input>
</el-form-item>
<el-form-item label="执行时间" prop="excuteTime">
<el-time-picker
format="HH:mm"
value-format="HH:mm"
v-model="form.excuteTime"
placeholder="请选择时间"
>
</el-time-picker>
</el-form-item>
<el-form-item label="执行主机" prop="excuteHost">
<el-input
size="small"
v-model="form.excuteHost"
placeholder="请输入执行主机"
></el-input>
</el-form-item>
<el-form-item label="执行参数" prop="excuteParam">
<el-input
size="small"
v-model="form.excuteParam"
placeholder="请输入执行参数"
></el-input>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input
resize="none"
:autosize="{ minRows: 3, maxRows: 3 }"
type="textarea"
placeholder="请输入备注"
v-model="form.remark"
></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button size="small" @click="handleRest">重 置</el-button>
<el-button size="small" type="primary" @click="handleOk"
>确 定</el-button
>
</span>
</el-dialog>
</div>
</template>
<script>
import { saveTask } from "@/api/system";
export default {
props: {
title: {
type: String,
required: true,
default: "",
},
addVisible: {
type: Boolean,
required: true,
default: false,
},
dict: {
type: Object,
required: true,
default: () => {
return {};
},
},
},
data() {
return {
days: {}, // 号数
weeks: {}, // 周
form: {
name: "", // 任务名称
taskKey: "", // 关键字
excuteService: "", // 执行服务
excuteStrategy: 1, // 执行策略
excuteDate: 0, // 执行日期
excuteTime: "", // 执行时间
excuteHost: "", // 执行主机
excuteParam: "", // 执行参数
remark: "", // 备注
},
rules: {
name: [{ required: true, message: "请输入参数名称", trigger: "blur" }],
paramKey: [
{ required: true, message: "请输入参数键", trigger: "blur" },
],
paramValue: [
{ required: true, message: "请输入参数值", trigger: "blur" },
],
},
};
},
computed: {
Visible: {
get() {
return this.addVisible;
},
set(val) {
this.$emit("update:addVisible", val);
},
},
},
created() {
for (let i = 1; i <= 31; i++) {
this.days[i] = i + "";
}
let numArr = ["", "", "", "", "", "", ""];
for (let i = 1; i <= 7; i++) {
this.weeks[i] = "星期" + numArr[i - 1];
}
},
methods: {
// 确定
handleOk() {
this.$refs.form.validate(async (valid) => {
if (valid) {
let res = await saveTask(this.form);
let { code, msg } = res.data;
if (code === 1) {
this.$message.success(msg);
this.$emit("addSuccess");
this.handleClose();
}
}
});
},
// 新增
onAdd() {
Object.assign(this.form, this.$options.data().form);
this.form.id && this.$delete(this.form, "id");
},
// 编辑
onEdit(row) {
this.form = { ...row };
},
// 重置
handleRest() {
this.$refs.form.resetFields();
},
// 关闭
handleClose() {
this.$refs.form.resetFields();
this.Visible = false;
},
// 切换策略
changeExcuteStrategy(val) {
if (val == 1) {
this.form.excuteDate = 0;
} else {
this.form.excuteDate = "";
}
if (val == 4) {
this.form.excuteTime = "";
}
},
},
};
</script>
<style lang="less" scoped>
/deep/.el-select {
width: 100%;
}
</style>
\ No newline at end of file
......@@ -137,12 +137,53 @@ const dynamicRouter = [
},
],
},
{
path: "/system",
component: Layouts,
meta: {
icon: "el-icon-data-board",
title: "系统设置",
},
children: [
{
path: "",
component: () => import("@/pages/system/System.vue"),
redirect: "/system/parameter",
children: [
{
path: "/system/parameter",
component: () => import("@/pages/system/parameter/Parameter.vue"),
meta: {
activeMenu: "/system",
hidden: true,
},
},
{
path: "/system/task",
component: () => import("@/pages/system/task/TaskSet.vue"),
meta: {
activeMenu: "/system",
hidden: true,
},
},
{
path: "/system/systemlogs",
component: () => import("@/pages/system/systemlogs/SystemLogs.vue"),
meta: {
activeMenu: "/system",
hidden: true,
},
},
],
},
],
},
];
// 过滤菜单
function menusFilter(arr) {
let router = arr.filter((v) => {
if (v.meta && v.meta.title) {
if (v.meta && !v.meta.hidden) {
if (v.children) {
v.children = menusFilter(v.children);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment