feat: 规则版本详情 保存代码(可修改)

master
rouchen 2024-05-09 09:40:07 +08:00
parent cf9b8f950f
commit 7c0f164e9f
3 changed files with 209 additions and 9 deletions

View File

@ -1,6 +1,6 @@
<template>
<div>
<codemirror ref="codeMirror" :value="code" :options="cmOptions"/>
<codemirror ref="codeMirror" :value="code" v-model="code" :options="cmOptions" />
</div>
</template>
@ -67,6 +67,16 @@ export default {
},
created() {
},
watch:{
'code' :{
handler(val){
if (val!=null){
console.log(this.$emit('input',val))
this.$emit('input',val)
}
},
}
},
methods: {}
}
</script>

View File

@ -473,6 +473,10 @@ export default {
created() {
this.getList();
this.dataTypeList()
//
this.getDicts("sys_yes_no").then(response => {
this.sys_yes_no = response.data;
});
},
methods: {
//

View File

@ -220,18 +220,46 @@
<el-card class="box-card" v-if="assets != null">
<div slot="header" class="clearfix">
<span>选择资产模型</span>
<el-button style="float: right; padding: 3px 0" type="text" @click="dataModelRandom"></el-button>
</div>
<el-descriptions direction="vertical" :column="3" border>
<el-descriptions-item v-for="_dataModel in dataModelList"
:label='_dataModel.name + "("+_dataModel.comment+")"'>
<el-radio v-model="dataMode" :label="_dataModel.name" :value="_dataModel.id">{{dataModeMap[_dataModel.name]}}</el-radio>
<el-radio v-model="dataMode" :label="_dataModel.name" :value="_dataModel.id">{{dataModeMapList[dataModeMapIndex][_dataModel.name]}}</el-radio>
</el-descriptions-item>
</el-descriptions>
</el-card>
<el-card class="box-card" v-if="this.ruleEngineInfo.level !== 'data-field'">
<div slot="header" class="clearfix">
<span>{{this.ruleEngineInfo.level === "data-set" ? "选择资产集" : "选择资产记录"}}</span>
</div>
<el-table :data="dataModeMapList" max-height="200px"
@selection-change="changeDataRow">
<el-table-column type="selection" width="55" v-if="this.ruleEngineInfo.level === 'data-set'"/>
<el-table-column v-for="dataModel in dataModelList" :label="dataModel.comment" :prop="dataModel.name"/>
<el-table-column label="操作" v-if="this.ruleEngineInfo.level !== 'data-set'">
<template slot-scope="scope">
<el-button type="text" @click="dataRecordSelect(scope.row)"></el-button>
</template>
</el-table-column>
</el-table>
<el-descriptions title="选择行数据" direction="vertical" :column="3" border style="margin-top: 20px" v-if="dataRecordSelectData != null">
<el-descriptions-item v-for="(val, key) in dataRecordSelectData"
:label='key'>
<el-checkbox v-model="dataRecordSelectKeyList" :label="key" :value="key">{{val}}</el-checkbox>
</el-descriptions-item>
</el-descriptions>
<el-descriptions title="选择模型" :column="3" border style="margin-top: 20px" v-if="changeDataList.length !== 0">
<el-descriptions-item v-for="_dataModel in dataModelList"
:label='_dataModel.comment'>
<el-checkbox v-model="dataRecordSelectKeyList" :label="_dataModel.name" :value="_dataModel.id"></el-checkbox>
</el-descriptions-item>
</el-descriptions>
</el-card>
</el-col>
<el-col :span="24" style="margin-top: 10px" v-if="dataMode != null">
<el-button>测试</el-button>
<el-input style="margin-top: 10px" v-model="testResult" type="textarea" placeholder="请点击测试" />
<el-col :span="24" style="margin-top: 10px" v-if="dataMode != null || dataRecordSelectKeyList.length > 0">
<el-button @click="dataTest"></el-button>
<el-input style="margin-top: 10px" v-model="testResult" type="textarea" placeholder="请点击测试" disabled/>
</el-col>
</el-col>
</el-row>
@ -257,6 +285,19 @@ export default {
return {
ruleEngine: this.$route.params && this.$route.params.id,
ruleEngineInfo: {},
ruleEngineInfoList: [
{
"id": 1,
"name": "邮箱规则",
"type": "rule-custom",
"isActivate": "no-activate",
"status": "0",
"description": "<p>根据邮箱规则进行数据校验,内包含所有邮箱校验规则</p>",
"remark": "-",
"code": "email",
"level": "data-field"
},
],
// "id": 1,
// "name": "",
// "type": "rule-custom",
@ -414,7 +455,65 @@ export default {
price: "653.69",
create_time: "2024-5-7 16:37:16",
},
testResult: ""
testResult: "",
//
dataModeMapList : [
{
id: 1,
name: "张三",
sex: 1,
price: "264.69",
create_time: "2024-5-7 16:37:16",
},
{
id: 2,
name: "李四",
sex: 2,
price: "362.69",
create_time: "2023-1-7 41:22:08",
},
{
id: 3,
name: "王五",
sex: 0,
price: "485.69",
create_time: "1996-4-7 02:14:36",
},
{
id: 4,
name: "赵六",
sex: 0,
price: "485.69",
create_time: "2004-4-7 02:14:36",
},
{
id: 5,
name: "猪八戒",
sex: 0,
price: "485.69",
create_time: "1969-4-7 02:14:36",
},
{
id: 6,
name: "孙悟空",
sex: 1,
price: "485.44",
create_time: "2015-4-7 02:14:36",
},
{
id: 7,
name: "唐三",
sex: 0,
price: "635.69",
create_time: "2003-5-7 16:37:16",
},
],
dataModeMapIndex: 0,
dataRecordSelectData: null,
// key
dataRecordSelectKeyList: [],
// List
changeDataList: [],
}
},
created() {
@ -439,11 +538,36 @@ export default {
});
},
methods: {
//
dataTest(){
let number = Math.floor(Math.random()*3);
if (number === 0){
this.testResult = "测试正常,无异常数据返回";
}else if (number === 1){
this.testResult = "测试失败:触发*****异常条例,数据发生动作【移除/忽略/记录】";
}else if (number === 2){
this.testResult = "程序异常:*******异常";
}
},
//
changeDataRow(val){
this.changeDataList = val;
},
//
dataRecordSelect(row){
this.dataRecordSelectKeyList = [];
this.dataRecordSelectData = row;
},
//
dataModelRandom(){
this.dataModeMapIndex = Math.floor(Math.random()*this.dataModeMapList.length);
},
saveCoding(){
updataEngineVersionStatus(this.ruleEngineVersionInfoAndTest).then(res => {
this.$message.success(res)
this.$message.success(res.data)
})
this.ruleEngineVersionInfoStatus = false
this.initRuleEngine(this.ruleEngine);
},
ruleEngineVersionInfoStatusClose(done) {
this.$confirm('确认关闭?')
@ -578,6 +702,69 @@ export default {
// ]
// }
// }
// this.ruleEngineInfo = this.ruleEngineInfoList.findLast(ruleInfo => ruleInfo.id == this.ruleEngineId)
// this.ruleEngineInfo.ruleEngineVersionList = [
// {
// "name": "163", "code": "IAW3S02", "status": "0", "isTest": "0",
// "versionCode": "engine_custom_email_IAW3S02", "isActivate": "no-activate",
// "description": "<p></p>","codeIng": "package com.muyu.rule.engine.custom;\n" +
// "\n" +
// "import com.muyu.engine.action.ActionDiscard;\n" +
// "import com.muyu.engine.scope.DataModelEngine;\n" +
// "\n" +
// "/**\n" +
// " * @Author: DongZeLiang\n" +
// " * @date: 2024/5/6\n" +
// " * @Description: ce-IAW3S02\n" +
// " * @Version: 1.0\n" +
// " */\n" +
// "public class engine_custom_email_IAW3S02 extends DataModelEngine {\n" +
// " @Override\n" +
// " public void execution () {\n" +
// " Object value = getValue();\n" +
// "\n" +
// " if (value == null || \"\".equals(value) || \"null\".equals(value)) {\n" +
// " throw new ActionDiscard();\n" +
// " }\n" +
// " }\n" +
// "}"
// },
// {
// "name": "", "code": "JISID8S", "status": "2", "isTest": "1",
// "versionCode": "engine_custom_email_JISID8S", "isActivate": "activated",
// "description": "<p></p>","codeIng": "package com.muyu.rule.engine.custom;\n" +
// "\n" +
// "import com.muyu.engine.action.ActionDiscard;\n" +
// "import com.muyu.engine.scope.DataModelEngine;\n" +
// "\n" +
// "/**\n" +
// " * @Author: DongZeLiang\n" +
// " * @date: 2024/5/6\n" +
// " * @Description: ce-JISID8S\n" +
// " * @Version: 1.0\n" +
// " */\n" +
// "public class engine_custom_email_JISID8S extends DataModelEngine {\n" +
// " @Override\n" +
// " public void execution () {\n" +
// " Object value = getValue();\n" +
// "\n" +
// " if (value == null || \"\".equals(value) || \"null\".equals(value)) {\n" +
// " throw new ActionDiscard();\n" +
// " }\n" +
// " }\n" +
// "}"
// },
// {
// "name": "", "code": "DJ8S9EA", "status": "2", "isTest": "2",
// "versionCode": "engine_custom_email_DJ8S9EA", "isActivate": "no-activate",
// "description": "<p></p>"
// },
// {
// "name": "", "code": "XJS9E0S", "status": "1", "isTest": "0",
// "versionCode": "engine_custom_email_XJS9E0S", "isActivate": "no-activate",
// "description": "<p></p>"
// }
// ]
selectRuleEngineVersion(ruleEngine).then(res => {
console.log("ressss",res)
this.ruleEngineInfo = res.data;
@ -585,7 +772,6 @@ export default {
},
//
getCodeIng(){
let packageName = "com.muyu.engine";
let customName = "custom";
let templateName = "template";