feat(): 规则引擎初始化页面

chao
chao 2024-05-01 19:07:38 +08:00
parent 2baf2d4c6c
commit 4c6e1624d6
9 changed files with 1354 additions and 17 deletions

View File

@ -39,6 +39,7 @@
"@riophae/vue-treeselect": "0.4.0",
"axios": "0.24.0",
"clipboard": "2.0.8",
"codemirror": "^5.65.16",
"core-js": "3.25.3",
"echarts": "5.4.0",
"element-ui": "2.15.13",
@ -53,6 +54,7 @@
"screenfull": "5.0.2",
"sortablejs": "1.10.2",
"vue": "2.6.12",
"vue-codemirror": "^4.0.6",
"vue-count-to": "1.0.13",
"vue-cropper": "0.5.5",
"vue-meta": "2.4.0",

View File

@ -0,0 +1,6 @@
@font-face {
font-family: "JetBrainsMono-Medium";
src: '@/assets/font/JetBrains/JetBrainsMono-Medium.ttf';
font-weight: normal;
font-style: normal;
}

View File

@ -2,22 +2,705 @@ import Vue from 'vue'
import store from '@/store'
import DataDict from '@/utils/dict'
import {getDicts as getDicts} from '@/api/system/dict/data'
function searchDictByKey(dict, key) {
if (key == null && key == "") {
return null
}
try {
for (let i = 0; i < dict.length; i++) {
if (dict[i].key == key) {
return dict[i].value
let dictDataMap =
{
// 系统开关
"sys_normal_disable": [
{
"createBy": "admin",
"createTime": "2023-04-23 16:13:26",
"updateBy": null,
"updateTime": null,
"remark": "正常状态",
"dictCode": 6,
"dictSort": 1,
"dictLabel": "正常",
"dictValue": "0",
"dictType": "sys_normal_disable",
"cssClass": "",
"listClass": "primary",
"isDefault": "Y",
"status": "0",
"default": true
},
{
"createBy": "admin",
"createTime": "2023-04-23 16:13:26",
"updateBy": null,
"updateTime": null,
"remark": "停用状态",
"dictCode": 7,
"dictSort": 2,
"dictLabel": "停用",
"dictValue": "1",
"dictType": "sys_normal_disable",
"cssClass": "",
"listClass": "danger",
"isDefault": "N",
"status": "0",
"default": false
}
}
} catch (e) {
return null
],
// 用户性别
"sys_user_sex": [
{
"createBy": "admin",
"createTime": "2023-04-23 16:13:24",
"updateBy": null,
"updateTime": null,
"remark": "性别男",
"dictCode": 1,
"dictSort": 1,
"dictLabel": "男",
"dictValue": "0",
"dictType": "sys_user_sex",
"cssClass": "",
"listClass": "",
"isDefault": "Y",
"status": "0",
"default": true
},
{
"createBy": "admin",
"createTime": "2023-04-23 16:13:24",
"updateBy": null,
"updateTime": null,
"remark": "性别女",
"dictCode": 2,
"dictSort": 2,
"dictLabel": "女",
"dictValue": "1",
"dictType": "sys_user_sex",
"cssClass": "",
"listClass": "",
"isDefault": "N",
"status": "0",
"default": false
},
{
"createBy": "admin",
"createTime": "2023-04-23 16:13:25",
"updateBy": null,
"updateTime": null,
"remark": "性别未知",
"dictCode": 3,
"dictSort": 3,
"dictLabel": "未知",
"dictValue": "2",
"dictType": "sys_user_sex",
"cssClass": "",
"listClass": "",
"isDefault": "N",
"status": "0",
"default": false
}
],
// 是否展示
"sys_show_hide": [
{
"createBy": 1,
"createTime": "2023-09-29 11:47:28",
"updateBy": null,
"updateTime": null,
"params": {
"@type": "java.util.HashMap"
},
"dictCode": 4,
"dictSort": 1,
"dictLabel": "显示",
"dictValue": "0",
"dictType": "sys_show_hide",
"cssClass": "",
"listClass": "primary",
"isDefault": "Y",
"status": "0",
"remark": "显示菜单"
},
{
"createBy": 1,
"createTime": "2023-09-29 11:47:28",
"updateBy": null,
"updateTime": null,
"params": {
"@type": "java.util.HashMap"
},
"dictCode": 5,
"dictSort": 2,
"dictLabel": "隐藏",
"dictValue": "1",
"dictType": "sys_show_hide",
"cssClass": "",
"listClass": "danger",
"isDefault": "N",
"status": "0",
"remark": "隐藏菜单"
}
],
// 系统是否
"sys_yes_no": [
{
"createBy": 1,
"createTime": "2023-09-29 11:47:28",
"updateBy": null,
"updateTime": null,
"params": {
"@type": "java.util.HashMap"
},
"dictCode": 12,
"dictSort": 1,
"dictLabel": "是",
"dictValue": "Y",
"dictType": "sys_yes_no",
"cssClass": "",
"listClass": "primary",
"isDefault": "Y",
"status": "0",
"remark": "系统默认是"
},
{
"createBy": 1,
"createTime": "2023-09-29 11:47:28",
"updateBy": null,
"updateTime": null,
"params": {
"@type": "java.util.HashMap"
},
"dictCode": 13,
"dictSort": 2,
"dictLabel": "否",
"dictValue": "N",
"dictType": "sys_yes_no",
"cssClass": "",
"listClass": "danger",
"isDefault": "N",
"status": "0",
"remark": "系统默认否"
}
],
// 公告类型
"sys_notice_type": [
{
"createBy": 1,
"createTime": "2023-09-29 11:47:28",
"updateBy": null,
"updateTime": null,
"params": {
"@type": "java.util.HashMap"
},
"dictCode": 14,
"dictSort": 1,
"dictLabel": "通知",
"dictValue": "1",
"dictType": "sys_notice_type",
"cssClass": "",
"listClass": "warning",
"isDefault": "Y",
"status": "0",
"remark": "通知"
},
{
"createBy": 1,
"createTime": "2023-09-29 11:47:28",
"updateBy": null,
"updateTime": null,
"params": {
"@type": "java.util.HashMap"
},
"dictCode": 15,
"dictSort": 2,
"dictLabel": "公告",
"dictValue": "2",
"dictType": "sys_notice_type",
"cssClass": "",
"listClass": "success",
"isDefault": "N",
"status": "0",
"remark": "公告"
}
],
// 通知状态
"sys_notice_status": [
{
"createBy": 1,
"createTime": "2023-09-29 11:47:28",
"updateBy": null,
"updateTime": null,
"params": {
"@type": "java.util.HashMap"
},
"dictCode": 16,
"dictSort": 1,
"dictLabel": "正常",
"dictValue": "0",
"dictType": "sys_notice_status",
"cssClass": "",
"listClass": "primary",
"isDefault": "Y",
"status": "0",
"remark": "正常状态"
},
{
"createBy": 1,
"createTime": "2023-09-29 11:47:28",
"updateBy": null,
"updateTime": null,
"params": {
"@type": "java.util.HashMap"
},
"dictCode": 17,
"dictSort": 2,
"dictLabel": "关闭",
"dictValue": "1",
"dictType": "sys_notice_status",
"cssClass": "",
"listClass": "danger",
"isDefault": "N",
"status": "0",
"remark": "关闭状态"
}
],
// 系统状态
"sys_common_status": [
{
"createBy": 1,
"createTime": "2023-09-29 11:47:28",
"updateBy": null,
"updateTime": null,
"params": {
"@type": "java.util.HashMap"
},
"dictCode": 28,
"dictSort": 1,
"dictLabel": "成功",
"dictValue": "0",
"dictType": "sys_common_status",
"cssClass": "",
"listClass": "primary",
"isDefault": "N",
"status": "0",
"remark": "正常状态"
},
{
"createBy": 1,
"createTime": "2023-09-29 11:47:28",
"updateBy": null,
"updateTime": null,
"params": {
"@type": "java.util.HashMap"
},
"dictCode": 29,
"dictSort": 2,
"dictLabel": "失败",
"dictValue": "1",
"dictType": "sys_common_status",
"cssClass": "",
"listClass": "danger",
"isDefault": "N",
"status": "0",
"remark": "停用状态"
}
],
// 定时任务组
"sys_job_group": [
{
"createBy": 1,
"createTime": "2023-09-29 11:47:28",
"updateBy": null,
"updateTime": null,
"params": {
"@type": "java.util.HashMap"
},
"dictCode": 10,
"dictSort": 1,
"dictLabel": "默认",
"dictValue": "DEFAULT",
"dictType": "sys_job_group",
"cssClass": "",
"listClass": "",
"isDefault": "Y",
"status": "0",
"remark": "默认分组"
},
{
"createBy": 1,
"createTime": "2023-09-29 11:47:28",
"updateBy": null,
"updateTime": null,
"params": {
"@type": "java.util.HashMap"
},
"dictCode": 11,
"dictSort": 2,
"dictLabel": "系统",
"dictValue": "SYSTEM",
"dictType": "sys_job_group",
"cssClass": "",
"listClass": "",
"isDefault": "N",
"status": "0",
"remark": "系统分组"
}
],
// 定时任务状态
"sys_job_status": [
{
"createBy": 1,
"createTime": "2023-09-29 11:47:28",
"updateBy": null,
"updateTime": null,
"params": {
"@type": "java.util.HashMap"
},
"dictCode": 8,
"dictSort": 1,
"dictLabel": "正常",
"dictValue": "0",
"dictType": "sys_job_status",
"cssClass": "",
"listClass": "primary",
"isDefault": "Y",
"status": "0",
"remark": "正常状态"
},
{
"createBy": 1,
"createTime": "2023-09-29 11:47:28",
"updateBy": null,
"updateTime": null,
"params": {
"@type": "java.util.HashMap"
},
"dictCode": 9,
"dictSort": 2,
"dictLabel": "暂停",
"dictValue": "1",
"dictType": "sys_job_status",
"cssClass": "",
"listClass": "danger",
"isDefault": "N",
"status": "0",
"remark": "停用状态"
}
],
// 操作类型
"sys_oper_type": [
{
"createBy": 1,
"createTime": "2023-09-29 11:47:28",
"updateBy": null,
"updateTime": null,
"params": {
"@type": "java.util.HashMap"
},
"dictCode": 19,
"dictSort": 1,
"dictLabel": "新增",
"dictValue": "1",
"dictType": "sys_oper_type",
"cssClass": "",
"listClass": "info",
"isDefault": "N",
"status": "0",
"remark": "新增操作"
},
{
"createBy": 1,
"createTime": "2023-09-29 11:47:28",
"updateBy": null,
"updateTime": null,
"params": {
"@type": "java.util.HashMap"
},
"dictCode": 20,
"dictSort": 2,
"dictLabel": "修改",
"dictValue": "2",
"dictType": "sys_oper_type",
"cssClass": "",
"listClass": "info",
"isDefault": "N",
"status": "0",
"remark": "修改操作"
},
{
"createBy": 1,
"createTime": "2023-09-29 11:47:28",
"updateBy": null,
"updateTime": null,
"params": {
"@type": "java.util.HashMap"
},
"dictCode": 21,
"dictSort": 3,
"dictLabel": "删除",
"dictValue": "3",
"dictType": "sys_oper_type",
"cssClass": "",
"listClass": "danger",
"isDefault": "N",
"status": "0",
"remark": "删除操作"
},
{
"createBy": 1,
"createTime": "2023-09-29 11:47:28",
"updateBy": null,
"updateTime": null,
"params": {
"@type": "java.util.HashMap"
},
"dictCode": 22,
"dictSort": 4,
"dictLabel": "授权",
"dictValue": "4",
"dictType": "sys_oper_type",
"cssClass": "",
"listClass": "primary",
"isDefault": "N",
"status": "0",
"remark": "授权操作"
},
{
"createBy": 1,
"createTime": "2023-09-29 11:47:28",
"updateBy": null,
"updateTime": null,
"params": {
"@type": "java.util.HashMap"
},
"dictCode": 23,
"dictSort": 5,
"dictLabel": "导出",
"dictValue": "5",
"dictType": "sys_oper_type",
"cssClass": "",
"listClass": "warning",
"isDefault": "N",
"status": "0",
"remark": "导出操作"
},
{
"createBy": 1,
"createTime": "2023-09-29 11:47:28",
"updateBy": null,
"updateTime": null,
"params": {
"@type": "java.util.HashMap"
},
"dictCode": 24,
"dictSort": 6,
"dictLabel": "导入",
"dictValue": "6",
"dictType": "sys_oper_type",
"cssClass": "",
"listClass": "warning",
"isDefault": "N",
"status": "0",
"remark": "导入操作"
},
{
"createBy": 1,
"createTime": "2023-09-29 11:47:28",
"updateBy": null,
"updateTime": null,
"params": {
"@type": "java.util.HashMap"
},
"dictCode": 25,
"dictSort": 7,
"dictLabel": "强退",
"dictValue": "7",
"dictType": "sys_oper_type",
"cssClass": "",
"listClass": "danger",
"isDefault": "N",
"status": "0",
"remark": "强退操作"
},
{
"createBy": 1,
"createTime": "2023-09-29 11:47:28",
"updateBy": null,
"updateTime": null,
"params": {
"@type": "java.util.HashMap"
},
"dictCode": 26,
"dictSort": 8,
"dictLabel": "生成代码",
"dictValue": "8",
"dictType": "sys_oper_type",
"cssClass": "",
"listClass": "warning",
"isDefault": "N",
"status": "0",
"remark": "生成操作"
},
{
"createBy": 1,
"createTime": "2023-09-29 11:47:28",
"updateBy": null,
"updateTime": null,
"params": {
"@type": "java.util.HashMap"
},
"dictCode": 27,
"dictSort": 9,
"dictLabel": "清空数据",
"dictValue": "9",
"dictType": "sys_oper_type",
"cssClass": "",
"listClass": "danger",
"isDefault": "N",
"status": "0",
"remark": "清空操作"
},
{
"createBy": 1,
"createTime": "2023-09-29 11:47:28",
"updateBy": null,
"updateTime": null,
"params": {
"@type": "java.util.HashMap"
},
"dictCode": 18,
"dictSort": 99,
"dictLabel": "其他",
"dictValue": "0",
"dictType": "sys_oper_type",
"cssClass": "",
"listClass": "info",
"isDefault": "N",
"status": "0",
"remark": "其他操作"
}
],
// 规则类型
"rule_engine_type": [
{
"createBy": 1,
"createTime": "2024-04-23 09:40:51",
"updateBy": null,
"updateTime": null,
"dictCode": 30,
"dictSort": 0,
"dictLabel": "规则模板",
"dictValue": "rule-template",
"dictType": "rule_engine_type",
"cssClass": null,
"listClass": "primary",
"isDefault": "N",
"status": "0",
"remark": null
},
{
"createBy": 1,
"createTime": "2024-04-23 09:41:25",
"updateBy": null,
"updateTime": null,
"dictCode": 31,
"dictSort": 1,
"dictLabel": "自定义规则",
"dictValue": "rule-custom",
"dictType": "rule_engine_type",
"cssClass": null,
"listClass": "success",
"isDefault": "N",
"status": "0",
"remark": null
}
],
// 规则作用域
"rule_engine_level": [
{
"createBy": 1,
"createTime": "2024-04-23 09:40:51",
"updateBy": null,
"updateTime": null,
"dictCode": 30,
"dictSort": 0,
"dictLabel": "数据集",
"dictValue": "data-set",
"dictType": "rule_engine_level",
"cssClass": null,
"listClass": "primary",
"isDefault": "N",
"status": "0",
"remark": null
},
{
"createBy": 1,
"createTime": "2024-04-23 09:41:25",
"updateBy": null,
"updateTime": null,
"dictCode": 31,
"dictSort": 1,
"dictLabel": "记录",
"dictValue": "data-record",
"dictType": "rule_engine_level",
"cssClass": null,
"listClass": "primary",
"isDefault": "N",
"status": "0",
"remark": null
},
{
"createBy": 1,
"createTime": "2024-04-23 09:41:25",
"updateBy": null,
"updateTime": null,
"dictCode": 31,
"dictSort": 1,
"dictLabel": "数据字段",
"dictValue": "data-field",
"dictType": "rule_engine_level",
"cssClass": null,
"listClass": "primary",
"isDefault": "N",
"status": "0",
"remark": null
}
],
// 规则引擎激活状态
"rule_engine_activate_status": [
{
"createBy": 1,
"createTime": "2024-04-23 09:45:07",
"updateBy": null,
"updateTime": null,
"dictCode": 32,
"dictSort": 0,
"dictLabel": "未激活",
"dictValue": "no-activate",
"dictType": "rule_engine_activate_status",
"cssClass": null,
"listClass": "danger",
"isDefault": "N",
"status": "0",
"remark": null
},
{
"createBy": 1,
"createTime": "2024-04-23 09:45:32",
"updateBy": null,
"updateTime": null,
"dictCode": 33,
"dictSort": 0,
"dictLabel": "已激活",
"dictValue": "activated",
"dictType": "rule_engine_activate_status",
"cssClass": null,
"listClass": "success",
"isDefault": "N",
"status": "0",
"remark": null
}
]
}
}
/**
*
* @returns {Promise<unknown>}
*/
function install() {
Vue.use(DataDict, {
metas: {
@ -25,10 +708,10 @@ function install() {
labelField: 'dictLabel',
valueField: 'dictValue',
request(dictMeta) {
const storeDict = searchDictByKey(store.getters.dict, dictMeta.type)
if (storeDict) {
let dictData = dictDataMap[dictMeta.type];
if (dictData) {
return new Promise(resolve => {
resolve(storeDict)
resolve(dictData)
})
} else {
return new Promise((resolve, reject) => {

View File

@ -0,0 +1,84 @@
<template>
<div style="height: 800px">
<codemirror ref="codeMirror" :value="code" :options="cmOptions" style="height: 800px"/>
</div>
</template>
<script>
import { codemirror } from 'vue-codemirror'
import 'codemirror/mode/clike/clike';
// cm-setting.js
//
import 'codemirror/lib/codemirror.css';
//
import 'codemirror/theme/eclipse.css';
// import 'codemirror/theme/monokai.css';
// html
import 'codemirror/mode/htmlmixed/htmlmixed.js';
//
import 'codemirror/mode/javascript/javascript.js';
import 'codemirror/mode/css/css.js';
import 'codemirror/mode/xml/xml.js';
//
import 'codemirror/addon/fold/foldcode.js';
import 'codemirror/addon/fold/foldgutter.js';
import 'codemirror/addon/fold/foldgutter.css';
import 'codemirror/addon/fold/brace-fold.js';
export default {
components: {
codemirror,
},
props: {
value: {
default: "",
type: String
},
readOnly: {
default: false,
type: Boolean
}
},
name: "Encoding",
data() {
return {
codemirror: null,
code: this.value,
cmOptions: {
autoRefresh: true, // true
value: '', //
mode: 'text/x-java', //Java
tabSize: 4, // tab
styleActiveLine: true, // true/false
lineNumbers: true, //
theme: 'eclipse', //cobalt/monokai
// json: true,
readOnly: this.readOnly, // true/false;"nocursor"
lineWrapping: false,
foldGutter: true,
gutters: [
'CodeMirror-lint-markers', //
'CodeMirror-linenumbers',
'CodeMirror-foldgutter', //
],
},
}
},
created() {
},
methods: {}
}
</script>
<style>
.CodeMirror {
font-family: 'JetBrainsMono-Medium', monospace;
height: 800px;
}
.CodeMirror-lines {
line-height: 1.5; /* 这里的1.5是示例表示行间距是字体大小的1.5倍 */
}
</style>

View File

@ -2,6 +2,9 @@ import Vue from 'vue'
import Cookies from 'js-cookie'
// 在 main.js 中引入
import '@/assets/font/font.css'
import Element from 'element-ui'
import './assets/styles/element-variables.scss'

View File

@ -0,0 +1,144 @@
<template>
<el-col :span="22" :offset="1">
<el-card>
<div slot="header" class="clearfix">
<span>公共配置</span>
</div>
<el-form ref="form" :model="ruleEngineCommonConfig" label-width="120px">
<el-row>
<el-col :span="12">
<el-form-item label="规则基础目录">
<el-input v-model="ruleEngineCommonConfig.packageName" disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
</el-col>
</el-row>
</el-form>
</el-card>
<el-col>
<el-card>
<div slot="header" class="clearfix">
<span>作用域</span>
</div>
<el-tabs type="border-card" v-model="codeCardStatus">
<el-tab-pane v-for="scope in scopeList" :label="scope.type" :name="scope.value">
<encoding v-if="codeCardStatus === scope.value" style="height: 800px" v-model="scope.code" :read-only="true"></encoding>
</el-tab-pane>
</el-tabs>
</el-card>
</el-col>
</el-col>
</template>
<script>
import Encoding from "@/components/Encoding/index.vue";
export default {
name: "EngineConfig",
components: {Encoding},
data() {
return {
codeCardStatus: "taskContext",
ruleEngineCommonConfig: {
packageName: "com.etl.rule.engine",
},
scopeList: [
{ type: "任务", value: "taskContext", "code":
"package com.etl;\n" +
"\n" +
"import com.etl.scope.DataModelContext;\n" +
"import com.etl.scope.DataSetContext;\n" +
"import com.etl.scope.RecordContext;\n" +
"import com.etl.scope.TaskContext;\n" +
"\n" +
"/**\n" +
" * @Author: Chao\n" +
" * @Version: 1.0\n" +
" */\n" +
"public class Main {\n" +
" public static void main (String[] args) {\n" +
" // 测试代码\n" +
" TaskContext taskContext = TaskContext.build();\n" +
" RecordContext recordContext = new RecordContext(taskContext);\n" +
" DataSetContext dataSetContext = new DataSetContext(recordContext);\n" +
" DataModelContext dataModelContext = new DataModelContext(dataSetContext);\n" +
" }\n" +
"}"
},
{ type: "资产集", value: "recordContext", "code":
"package com.etl;\n" +
"\n" +
"import com.etl.scope.DataModelContext;\n" +
"import com.etl.scope.DataSetContext;\n" +
"import com.etl.scope.RecordContext;\n" +
"import com.etl.scope.TaskContext;\n" +
"\n" +
"/**\n" +
" * @Author: Chao\n" +
" * @Version: 1.0\n" +
" */\n" +
"public class Main {\n" +
" public static void main (String[] args) {\n" +
" TaskContext taskContext = TaskContext.build();\n" +
" RecordContext recordContext = new RecordContext(taskContext);\n" +
" DataSetContext dataSetContext = new DataSetContext(recordContext);\n" +
" DataModelContext dataModelContext = new DataModelContext(dataSetContext);\n" +
" }\n" +
"}" },
{ type: "资产记录", value: "dataSetContext", "code":
"package com.etl;\n" +
"\n" +
"import com.etl.scope.DataModelContext;\n" +
"import com.etl.scope.DataSetContext;\n" +
"import com.etl.scope.RecordContext;\n" +
"import com.etl.scope.TaskContext;\n" +
"\n" +
"/**\n" +
" * @Author: Chao\n" +
" * @Version: 1.0\n" +
" */\n" +
"public class Main {\n" +
" public static void main (String[] args) {\n" +
" TaskContext taskContext = TaskContext.build();\n" +
" RecordContext recordContext = new RecordContext(taskContext);\n" +
" DataSetContext dataSetContext = new DataSetContext(recordContext);\n" +
" DataModelContext dataModelContext = new DataModelContext(dataSetContext);\n" +
" }\n" +
"}" },
{ type: "资产模型", value: "dataModelContext", "code":
"package com.etl;\n" +
"\n" +
"import com.etl.scope.DataModelContext;\n" +
"import com.etl.scope.DataSetContext;\n" +
"import com.etl.scope.RecordContext;\n" +
"import com.etl.scope.TaskContext;\n" +
"\n" +
"/**\n" +
" * @Author: Chao\n" +
" * @Version: 1.0\n" +
" */\n" +
"public class Main {\n" +
" public static void main (String[] args) {\n" +
" TaskContext taskContext = TaskContext.build();\n" +
" RecordContext recordContext = new RecordContext(taskContext);\n" +
" DataSetContext dataSetContext = new DataSetContext(recordContext);\n" +
" DataModelContext dataModelContext = new DataModelContext(dataSetContext);\n" +
" }\n" +
"}" }
]
}
},
created() {
},
methods: {}
}
</script>
<style>
.el-col {
margin-top: 20px;
}
</style>

View File

@ -0,0 +1,415 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="规则名称" prop="name">
<el-input
v-model="queryParams.name"
placeholder="请输入规则名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="规则类型" prop="type">
<el-select v-model="queryParams.type" placeholder="请选择规则类型" clearable>
<el-option
v-for="dict in dict.type.rule_engine_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="是否激活" prop="isActivate">
<el-select v-model="queryParams.isActivate" placeholder="请选择是否激活" clearable>
<el-option
v-for="dict in dict.type.rule_engine_activate_status"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="规则状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择规则状态" clearable>
<el-option
v-for="dict in dict.type.sys_normal_disable"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['system:engine:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['system:engine:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['system:engine:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="engineList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="规则名称" align="center" prop="name" />
<el-table-column label="规则类型" align="center" prop="type">
<template slot-scope="scope">
<dict-tag :options="dict.type.rule_engine_type" :value="scope.row.type"/>
</template>
</el-table-column>
<el-table-column label="规则作用域" align="center" prop="level">
<template slot-scope="scope">
<dict-tag :options="dict.type.rule_engine_level" :value="scope.row.level"/>
</template>
</el-table-column>
<el-table-column label="引擎编码" align="center" prop="code" />
<el-table-column label="是否激活" align="center" prop="isActivate">
<template slot-scope="scope">
<dict-tag :options="dict.type.rule_engine_activate_status" :value="scope.row.isActivate"/>
</template>
</el-table-column>
<el-table-column label="规则状态" align="center" prop="status">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['system:engine:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['system:engine:remove']"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改规则引擎对话框 -->
<el-dialog :title="title" :visible.sync="open" width="80%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-row>
<el-col :span="12">
<el-form-item label="规则名称" prop="name">
<el-input v-model="form.name" placeholder="请输入规则名称" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="规则编码" prop="code">
<el-input v-model="form.code" placeholder="请输入规则编码" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="规则类型" prop="type">
<el-select v-model="form.type" placeholder="请选择规则类型" style="width: 100%">
<el-option
v-for="dict in dict.type.rule_engine_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="规则级别" prop="level">
<el-select v-model="form.level" placeholder="请选择规则级别" style="width: 100%">
<el-option
v-for="dict in dict.type.rule_engine_level"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="是否激活" prop="isActivate">
<el-radio-group v-model="form.isActivate">
<el-radio
v-for="dict in dict.type.rule_engine_activate_status"
:key="dict.value"
:label="dict.value"
>{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="规则状态" prop="status">
<el-radio-group v-model="form.status">
<el-radio
v-for="dict in dict.type.sys_normal_disable"
:key="dict.value"
:label="dict.value"
>{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="规则描述">
<editor v-model="form.description" :min-height="192"/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
export default {
name: "EngineMaintenance",
dicts: ['rule_engine_activate_status', 'rule_engine_type', 'sys_normal_disable', 'rule_engine_level'],
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
engineList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
name: null,
type: null,
isActivate: null,
status: null,
description: null,
},
//
form: {},
//
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() {
this.getList();
},
methods: {
/** 查询规则引擎列表 */
getList() {
this.loading = true;
let response = {
"code": 200,
"msg": "查询成功",
"data": {
"total": 1,
"rows": [
{
"id": 1,
"name": "邮箱规则",
"type": "rule-custom",
"isActivate": "no-activate",
"status": "0",
"description": "<p>根据邮箱规则进行数据校验,内包含所有邮箱校验规则</p>",
"remark": "-",
"code": "email",
"level": "data-field"
},
{
"id": 2,
"name": "唯一性校验",
"type": "rule-custom",
"isActivate": "no-activate",
"status": "0",
"description": "<p>根据字段组合匹配等,进行不同数据集合的校验</p>",
"remark": "-",
"code": "only",
"level": "data-field"
},
{
"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() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: null,
name: null,
type: null,
isActivate: "no-activate",
status: "0",
description: null,
remark: null
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加规则引擎";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
this.form = row;
this.open = true;
this.title = "修改规则引擎";
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
console.log(JSON.stringify(this.form))
if (valid) {
if (this.form.id != null) {
this.$modal.msgSuccess("修改成功");
this.open = false;
} else {
this.$modal.msgSuccess("新增成功");
this.open = false;
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除规则引擎编号为"' + ids + '"的数据项?').then(() => {
this.$modal.msgSuccess("删除成功");
});
},
/** 导出按钮操作 */
handleExport() {
this.$modal.msgSuccess("导出成功");
}
}
};
</script>