feat(): 引擎维护

chao
chao 2024-05-02 16:26:32 +08:00
parent c88c28c9a5
commit 0bf495b599
2 changed files with 195 additions and 179 deletions

View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询引擎维护列表
export function listEngine(query) {
return request({
url: '/data/engine/list',
method: 'get',
params: query
})
}
// 查询引擎维护详细
export function getEngine(id) {
return request({
url: '/data/engine/' + id,
method: 'get'
})
}
// 新增引擎维护
export function addEngine(data) {
return request({
url: '/data/engine',
method: 'post',
data: data
})
}
// 修改引擎维护
export function updateEngine(data) {
return request({
url: '/data/engine',
method: 'put',
data: data
})
}
// 删除引擎维护
export function delEngine(id) {
return request({
url: '/data/engine/' + id,
method: 'delete'
})
}

View File

@ -2,41 +2,31 @@
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="规则名称" prop="name"> <el-form-item label="规则名称" prop="name">
<el-input <el-input v-model="queryParams.name" placeholder="请输入规则名称" clearable @keyup.enter.native="handleQuery"/>
v-model="queryParams.name"
placeholder="请输入规则名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item> </el-form-item>
<el-form-item label="规则类型" prop="type"> <el-form-item label="规则类型" prop="type">
<el-select v-model="queryParams.type" placeholder="请选择规则类型" clearable> <el-select v-model="queryParams.type" placeholder="请选择规则类型" clearable>
<el-option <el-option :key="1" label="规则模板" :value="1"/>
v-for="dict in dict.type.rule_engine_type" <el-option :key="2" label="自定义模板" :value="2"/>
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="是否激活" prop="isActivate"> <el-form-item label="规则作用域" prop="scope">
<el-select v-model="queryParams.isActivate" placeholder="请选择是否激活" clearable> <el-select v-model="queryParams.scope" placeholder="请选择规则作用域" clearable>
<el-option <el-option :key="1" label="数据字段" :value="1"/>
v-for="dict in dict.type.rule_engine_activate_status" <el-option :key="2" label="数据集" :value="2"/>
:key="dict.value" <el-option :key="3" label="记录" :value="3"/>
:label="dict.label" </el-select>
:value="dict.value" </el-form-item>
/> <el-form-item label="是否激活" prop="activatedOrNot">
<el-select v-model="queryParams.activatedOrNot" placeholder="请选择是否激活" clearable>
<el-option key="Y" label="激活" value="Y"/>
<el-option key="N" label="未激活" value="N"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="规则状态" prop="status"> <el-form-item label="规则状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择规则状态" clearable> <el-select v-model="queryParams.status" placeholder="请选择规则状态" clearable>
<el-option <el-option key="Y" label="正常" value="Y"/>
v-for="dict in dict.type.sys_normal_disable" <el-option key="N" label="停用" value="N"/>
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
@ -53,8 +43,21 @@
icon="el-icon-plus" icon="el-icon-plus"
size="mini" size="mini"
@click="handleAdd" @click="handleAdd"
v-hasPermi="['system:engine:add']" v-hasPermi="['data:engine:add']"
>新增</el-button> >新增
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['data:engine:edit']"
>修改
</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
@ -64,8 +67,9 @@
size="mini" size="mini"
:disabled="multiple" :disabled="multiple"
@click="handleDelete" @click="handleDelete"
v-hasPermi="['system:engine:remove']" v-hasPermi="['data:engine:remove']"
>删除</el-button> >删除
</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
@ -74,34 +78,35 @@
icon="el-icon-download" icon="el-icon-download"
size="mini" size="mini"
@click="handleExport" @click="handleExport"
v-hasPermi="['system:engine:export']" v-hasPermi="['data:engine:export']"
>导出</el-button> >导出
</el-button>
</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>
<el-table v-loading="loading" :data="engineList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="engineList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center"/>
<el-table-column label="规则名称" align="center" prop="name" /> <el-table-column label="规则名称" align="center" prop="name"/>
<el-table-column label="规则类型" align="center" prop="type"> <el-table-column label="规则类型" align="center" prop="type">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :options="dict.type.rule_engine_type" :value="scope.row.type"/> <el-tag type="success">{{ scope.row.type }}</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="规则作用域" align="center" prop="level"> <el-table-column label="规则作用域" align="center" prop="scope">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :options="dict.type.rule_engine_level" :value="scope.row.level"/> <el-tag>{{ scope.row.scope }}</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="引擎编码" align="center" prop="code" /> <el-table-column label="引擎编码" align="center" prop="encoding"/>
<el-table-column label="是否激活" align="center" prop="isActivate"> <el-table-column label="是否激活" align="center" prop="activatedOrNot">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :options="dict.type.rule_engine_activate_status" :value="scope.row.isActivate"/> <el-tag type="danger">{{ scope.row.activatedOrNot }}</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="规则状态" align="center" prop="status"> <el-table-column label="规则状态" align="center" prop="status">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/> <el-tag>{{ scope.row.status }}</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
@ -112,21 +117,24 @@
icon="el-icon-takeaway-box" icon="el-icon-takeaway-box"
@click="toEngineVersion(scope.row)" @click="toEngineVersion(scope.row)"
v-hasPermi="['system:engine:edit']" v-hasPermi="['system:engine:edit']"
>规则维护</el-button> >规则维护
</el-button>
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
icon="el-icon-edit" icon="el-icon-edit"
@click="handleUpdate(scope.row)" @click="handleUpdate(scope.row)"
v-hasPermi="['system:engine:edit']" v-hasPermi="['data:engine:edit']"
>修改</el-button> >修改
</el-button>
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
icon="el-icon-delete" icon="el-icon-delete"
@click="handleDelete(scope.row)" @click="handleDelete(scope.row)"
v-hasPermi="['system:engine:remove']" v-hasPermi="['data:engine:remove']"
>删除</el-button> >删除
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -139,80 +147,67 @@
@pagination="getList" @pagination="getList"
/> />
<!-- 添加或修改规则引擎对话框 --> <!-- 添加或修改引擎维护对话框 -->
<el-dialog :title="title" :visible.sync="open" width="80%" append-to-body> <el-dialog :title="title" :visible.sync="open" width="75%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="规则名称" prop="name"> <el-form-item label="规则名称" prop="name">
<el-input v-model="form.name" placeholder="请输入规则名称" /> <el-input v-model="form.name" placeholder="请输入规则名称"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="规则编码" prop="code"> <el-form-item label="规则编码" prop="code">
<el-input v-model="form.code" placeholder="请输入规则编码" /> <el-input v-model="form.encoding" placeholder="请输入规则编码"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="规则类型" prop="type"> <el-form-item label="规则类型" prop="type">
<el-select v-model="form.type" placeholder="请选择规则类型" style="width: 100%"> <el-select v-model="form.type" placeholder="请选择规则类型" clearable>
<el-option <el-option :key="1" label="规则模板" value="1"/>
v-for="dict in dict.type.rule_engine_type" <el-option :key="2" label="自定义模板" value="2"/>
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="规则级别" prop="level"> <el-form-item label="规则作用域" prop="scope">
<el-select v-model="form.level" placeholder="请选择规则级别" style="width: 100%"> <el-select v-model="form.scope" placeholder="请选择规则作用域" clearable>
<el-option <el-option :key="1" label="数据字段" :value="1"/>
v-for="dict in dict.type.rule_engine_level" <el-option :key="2" label="数据集" :value="2"/>
:key="dict.value" <el-option :key="3" label="记录" :value="3"/>
:label="dict.label"
:value="dict.value"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="是否激活" prop="isActivate"> <el-form-item label="是否激活" prop="activatedOrNot">
<el-radio-group v-model="form.isActivate"> <el-select v-model="form.activatedOrNot" placeholder="请选择是否激活" clearable>
<el-radio <el-option key="Y" label="激活" value="Y"/>
v-for="dict in dict.type.rule_engine_activate_status" <el-option key="N" label="未激活" value="N"/>
:key="dict.value" </el-select>
:label="dict.value"
>{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="规则状态" prop="status"> <el-form-item label="规则状态" prop="status">
<el-radio-group v-model="form.status"> <el-select v-model="form.status" placeholder="请选择规则状态" clearable>
<el-radio <el-option key="Y" label="正常" value="Y"/>
v-for="dict in dict.type.sys_normal_disable" <el-option key="N" label="停用" value="N"/>
:key="dict.value" </el-select>
:label="dict.value"
>{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="规则描述"> <el-form-item label="描述" prop="description">
<editor v-model="form.description" :min-height="192"/> <el-input v-model="form.description" type="textarea" placeholder="请输入内容"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="备注" prop="remark"> <el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" /> <el-input v-model="form.remark" placeholder="请输入备注"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -226,10 +221,11 @@
</template> </template>
<script> <script>
import {listEngine, getEngine, delEngine, addEngine, updateEngine} from "@/api/data/engine";
import item from "@/layout/components/Sidebar/Item.vue";
export default { export default {
name: "EngineMaintenance", name: "Engine",
dicts: ['rule_engine_activate_status', 'rule_engine_type', 'sys_normal_disable', 'rule_engine_level'],
data() { data() {
return { return {
// //
@ -244,7 +240,7 @@ export default {
showSearch: true, showSearch: true,
// //
total: 0, total: 0,
// //
engineList: [], engineList: [],
// //
title: "", title: "",
@ -256,96 +252,52 @@ export default {
pageSize: 10, pageSize: 10,
name: null, name: null,
type: null, type: null,
isActivate: null, scope: null,
status: null, activatedOrNot: null,
description: null,
}, },
// //
form: {}, form: {},
// //
rules: { rules: {}
name: [
{ required: true, message: "规则名称不能为空", trigger: "blur" }
],
type: [
{ required: true, message: "规则类型不能为空", trigger: "change" }
],
code: [
{ required: true, message: "规则编码不能为空", trigger: "blur" }
],
level: [
{ required: true, message: "规则级别不能为空", trigger: "change" }
],
isActivate: [
{ required: true, message: "是否激活不能为空", trigger: "change" }
],
status: [
{ required: true, message: "规则状态不能为空", trigger: "change" }
],
createBy: [
{ required: true, message: "创建者不能为空", trigger: "blur" }
],
createTime: [
{ required: true, message: "创建时间不能为空", trigger: "blur" }
],
}
}; };
}, },
created() { created() {
this.getList(); this.getList();
}, },
methods: { methods: {
toEngineVersion(row){ /** 查询引擎维护列表 */
this.$router.push({ path: `/rule-engine/engine-version/${row.id}`});
},
/** 查询规则引擎列表 */
getList() { getList() {
this.loading = true; this.loading = true;
let response = { listEngine(this.queryParams).then(response => {
"code": 200, console.log(response)
"msg": "查询成功", this.engineList = response.data.rows;
"data": { this.engineList.forEach(item => {
"total": 1, if (item.type === "1") {
"rows": [ item.type = "规则模板"
{ } else if (item.type === "2") {
"id": 1, item.type = "自定义模板"
"name": "邮箱规则", }
"type": "rule-custom", if (item.scope === 1) {
"isActivate": "no-activate", item.scope = "数据字段"
"status": "0", } else if (item.scope === 2) {
"description": "<p>根据邮箱规则进行数据校验,内包含所有邮箱校验规则</p>", item.scope = "数据集"
"remark": "-", } else if (item.scope === 3) {
"code": "email", item.scope = "记录"
"level": "data-field" }
}, if (item.activatedOrNot === 'Y') {
{ item.activatedOrNot = "激活"
"id": 2, } else if (item.activatedOrNot === 'N') {
"name": "唯一性校验", item.activatedOrNot = "未激活"
"type": "rule-custom", }
"isActivate": "no-activate", if (item.status === 'Y') {
"status": "0", item.status = "正常"
"description": "<p>根据字段组合匹配等,进行不同数据集合的校验</p>", } else if (item.status === 'N') {
"remark": "-", item.status = "停用"
"code": "only", }
"level": "data-field" })
}, this.total = response.data.total;
{ this.loading = false;
"id": 3, });
"name": "远程接口校验",
"type": "rule-custom",
"isActivate": "no-activate",
"status": "0",
"description": "<p>根据接口不同进行远程API调用匹配是否数据完整</p>",
"remark": "-",
"code": "remote",
"level": "data-field"
},
]
}
};
this.engineList = response.data.rows;
this.total = response.data.total;
this.loading = false;
}, },
// //
cancel() { cancel() {
@ -358,10 +310,15 @@ export default {
id: null, id: null,
name: null, name: null,
type: null, type: null,
isActivate: "no-activate", scope: null,
status: "0", activatedOrNot: null,
status: null,
description: null, description: null,
remark: null remark: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null
}; };
this.resetForm("form"); this.resetForm("form");
}, },
@ -385,26 +342,35 @@ export default {
handleAdd() { handleAdd() {
this.reset(); this.reset();
this.open = true; this.open = true;
this.title = "添加规则引擎"; this.title = "添加引擎维护";
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
this.reset(); this.reset();
this.form = row; const id = row.id || this.ids
this.open = true; getEngine(id).then(response => {
this.title = "修改规则引擎"; console.log(response)
this.form = response.data;
this.open = true;
this.title = "修改引擎维护";
});
}, },
/** 提交按钮 */ /** 提交按钮 */
submitForm() { submitForm() {
this.$refs["form"].validate(valid => { this.$refs["form"].validate(valid => {
console.log(JSON.stringify(this.form))
if (valid) { if (valid) {
if (this.form.id != null) { if (this.form.id != null) {
this.$modal.msgSuccess("修改成功"); updateEngine(this.form).then(response => {
this.open = false; this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else { } else {
this.$modal.msgSuccess("新增成功"); addEngine(this.form).then(response => {
this.open = false; this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
} }
} }
}); });
@ -412,13 +378,19 @@ export default {
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete(row) { handleDelete(row) {
const ids = row.id || this.ids; const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除规则引擎编号为"' + ids + '"的数据项?').then(() => { this.$modal.confirm('是否确认删除引擎维护编号为"' + ids + '"的数据项?').then(function () {
return delEngine(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功"); this.$modal.msgSuccess("删除成功");
}).catch(() => {
}); });
}, },
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {
this.$modal.msgSuccess("导出成功"); this.download('data/engine/export', {
...this.queryParams
}, `engine_${new Date().getTime()}.xlsx`)
} }
} }
}; };