浏览代码

规则维护

zhouna 5 年之前
父节点
当前提交
5d6df8e0e9

+ 11 - 1
src/api/config.js

@@ -267,7 +267,17 @@ export default {
       'tokenSaveOrUpdate': '/api/mrqcman/mrqcToken/saveOrUpdate', // 令牌新增或修改
       'tokenSaveOrUpdate': '/api/mrqcman/mrqcToken/saveOrUpdate', // 令牌新增或修改
       'tokenDetails': '/api/mrqcman/mrqcToken/getById', // 令牌明细
       'tokenDetails': '/api/mrqcman/mrqcToken/getById', // 令牌明细
       'tokenDelete': '/api/mrqcman/mrqcToken/delete', // 令牌删除
       'tokenDelete': '/api/mrqcman/mrqcToken/delete', // 令牌删除
-      'tokenAnalysis': '/api/mrqcman/mrqcToken/analysis' //解析
+      'tokenAnalysis': '/api/mrqcman/mrqcToken/analysis', //解析
+      'rulesList':'/api/knowledgeman/rulePub/pageRulePub',
+      'ruleDetail':'/api/knowledgeman/rulePub/getRulePub',
+      'ruleApplyDetail':'/api/knowledgeman/ruleApp/getRuleApp',
+      'rulesApplyList':'/api/knowledgeman/ruleApp/pageRuleApp',
+      'addRule':'/api/knowledgeman/rulePub/saveRulePub',
+      'ruleTypesList':'/api/knowledgeman/rulePub/pageRulePub',
+      'addRuleApply':'/api/knowledgeman/ruleApp/saveRuleApp',
+      'ruleApplyDelete':'/api/knowledgeman/ruleApp/removeRuleApp',
+      'ruleDelete':'/api/knowledgeman/ruleApp/removeRulePub',
+
   },
   },
 	menuIconList: { //菜单对应图标
 	menuIconList: { //菜单对应图标
 		'YH-KZT': 'el-icon-menu',
 		'YH-KZT': 'el-icon-menu',

+ 187 - 0
src/components/RuleManager/AddRule.vue

@@ -0,0 +1,187 @@
+<template>
+    <div>
+        <crumbs :title="title" :param="$route.params" linkTo="RulesManager"></crumbs>
+        <div class="contents">
+            <div class="content">
+                <!-- <el-form ref="form" :label-position="labelPosition" label-width="95px" class="add-admin-form" :model="form" :rules="rules"> -->
+                <el-form ref="form" :label-position="labelPosition" label-width="120px" class="add-version-form" :model="form" :rules="rules">
+                    <el-form-item label="规则名:" prop="pubName" class="version-num">
+                        <el-input v-model="form.pubName" placeholder="请输入规则名" maxlength="31"></el-input>
+                    </el-form-item>
+                    <el-form-item label="最小值操作符:" prop="operType">
+                        <el-select v-model="form.minOperator"
+                                   placeholder="请选择"
+                                   size="small">
+                            <el-option
+                                    v-for="item in operTypeList"
+                                    :key="item.name"
+                                    :label="item.name"
+                                    :value="item.name">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                    <el-form-item label="最小值:" prop="minValue" class="version-num">
+                        <el-input v-model="form.minValue" placeholder="请输入最小值"></el-input>
+                    </el-form-item>
+                    <el-form-item label="最小值单位:" prop="minUnit" class="version-num">
+                        <el-input v-model="form.minUnit" placeholder="请输入最小值单位"></el-input>
+                    </el-form-item>
+                    <el-form-item label="最大值操作符:" prop="operType">
+                        <el-select v-model="form.maxOperator"
+                                   placeholder="请选择"
+                                   size="small">
+                            <el-option
+                                    v-for="item in operTypeList"
+                                    :key="item.name"
+                                    :label="item.name"
+                                    :value="item.name">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                    <el-form-item label="最大值:" prop="maxValue" class="version-num">
+                        <el-input v-model="form.maxValue" placeholder="请输入最大值"></el-input>
+                    </el-form-item>
+                    <el-form-item label="最大值单位:" prop="maxUnit" class="version-num">
+                        <el-input v-model="form.maxUnit" placeholder="请输入最大值单位"></el-input>
+                    </el-form-item>
+                    <el-form-item label="等于值操作符:" prop="operType">
+                        <el-select v-model="form.eqOperator"
+                                   placeholder="请选择"
+                                   size="small">
+                            <el-option
+                                    v-for="item in operTypeList"
+                                    :key="item.name"
+                                    :label="item.name"
+                                    :value="item.name">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                    <el-form-item label="等于值:" prop="eqValue" class="version-num">
+                        <el-input v-model="form.eqValue" placeholder="请输入等于值"></el-input>
+                    </el-form-item>
+                    <el-form-item label="等于值单位:" prop="eqUnit" class="version-num">
+                        <el-input v-model="form.eqUnit" placeholder="请输入等于值单位"></el-input>
+                    </el-form-item>
+                    <el-form-item label="备注:" prop="remind" class="discDesc">
+                        <el-input type="textarea" :rows="3" placeholder="请输入备注" v-model="form.remind" maxlength="121"></el-input>
+                    </el-form-item>
+                    <el-form-item label="文本后缀:" prop="suffixInfo" class="version-num">
+                        <el-input v-model="form.suffixInfo" placeholder="请输入文本后缀"></el-input>
+                    </el-form-item>
+                    <el-button class="disclButn" size="small" type="primary" @click="confirm('form')">确定</el-button>
+                </el-form>
+            </div>
+        </div>
+    </div>
+</template>
+<script type="text/javascript">
+    import api from '@api/rulesManage.js';
+    export default {
+        name:'AddRule',
+        data(){
+            return{
+                labelPosition:'left',
+                isFirst:true,
+                title:'规则维护-添加规则',
+                form:{
+                },
+                id:null,
+                rules:{
+                    pubName:[{ required: true, message: '请输入规则名',trigger: ['blur'] }],
+                },
+                pickerOptions1:{
+                    disabledDate(time) {
+                        return time.getTime() < Date.now();
+                    },
+                },
+                operTypeList:[{name:'>',key:1},
+                    {name:'>=',key:2},
+                    {name:'<',key:3},
+                    {name:'<=',key:4},
+                    {name:'=',key:5},
+                ]
+            }
+        },
+        created(){
+            let info = this.$route.params.data;
+            if(info){
+                this.id = info.id;
+                this.form=Object.assign({},this.form,info);
+                this.title = "规则维护-修改规则";
+                // this.getList();
+            }
+        },
+        methods:{
+            confirm(form){
+                this.$refs[form].validate((valid) => {
+                    if (valid) {
+                        if(this.id){//修改
+                            const param = Object.assign({},this.form,{id:this.id?this.id:undefined})
+                            api.saveRule(param).then((res)=>{
+                                if(res.data.code==0){
+                                    this.$message({
+                                        message:"修改成功",
+                                        type:'success'
+                                    });
+                                    //返回带搜索条件的首页
+                                    this.$router.push({
+                                        name: 'VersionInfo',
+                                        params: Object.assign({}, this.$route.params, {currentPage: 1})
+                                    });
+                                }else{
+                                    this.$message({
+                                        message:res.data.msg,
+                                        type:'warning'
+                                    });
+                                }
+                            })
+                        }else{//添加
+                            const params = Object.assign({},this.form,{'id':this.id});
+                            api.saveRule(params).then((res)=>{
+                                if(res.data.code==0){
+                                    this.$message({
+                                        message:"添加成功",
+                                        type:'success'
+                                    });
+                                    this.$router.push({name: 'RulesManager'});
+                                }else{
+                                    this.$message({
+                                        message:res.data.msg,
+                                        type:'warning'
+                                    });
+                                }
+                            })
+                        }
+                    } else {
+                        return false;
+                    }
+                });
+            },
+        }
+    }
+</script>
+<style lang="less">
+    @import "../../less/admin.less";
+    .content{
+        background: #fff;
+        // padding: 20px 20px 30px;
+        padding: 20px 20px 50px;
+        color: #545455;
+        min-width: 980px;
+        position: relative;
+        .discDesc{
+            margin-bottom: 20px;
+        }
+        .disclButn{
+            position: absolute;
+            right: 80px;
+            bottom: 10px;
+        }
+    }
+    .add-version-form{
+        .version-num{
+            width: 500px;
+        }
+    }
+
+</style>

+ 134 - 0
src/components/RuleManager/AddRuleApply.vue

@@ -0,0 +1,134 @@
+<template>
+    <div>
+        <crumbs :title="title" :param="$route.params" linkTo="RuleApply"></crumbs>
+        <div class="contents">
+            <div class="content">
+                <!-- <el-form ref="form" :label-position="labelPosition" label-width="95px" class="add-admin-form" :model="form" :rules="rules"> -->
+                <el-form ref="form" :label-position="labelPosition" label-width="120px" class="add-version-form" :model="form" :rules="rules">
+                    <el-form-item label="规则ID:" prop="ruleId" class="version-num">
+                        <el-input v-model="form.ruleId" placeholder="请输入规则ID"></el-input>
+                    </el-form-item>
+                    <el-form-item label="规则类型:" prop="typeId">
+                        <el-select v-model="form.typeId"
+                                   placeholder="请选择"
+                                   size="small">
+                            <el-option
+                                    v-for="item in ruleTypeList"
+                                    :key="String(item.key)"
+                                    :label="item.name"
+                                    :value="String(item.key)">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                    <el-form-item label="规则信息:" prop="remind" class="discDesc">
+                        <el-input type="textarea" :rows="3" placeholder="请输入规则信息" v-model="form.remind" maxlength="121"></el-input>
+                    </el-form-item>
+                    <el-button class="disclButn" size="small" type="primary" @click="confirm('form')">确定</el-button>
+                </el-form>
+            </div>
+        </div>
+    </div>
+</template>
+<script type="text/javascript">
+    import api from '@api/rulesManage.js';
+    export default {
+        name:'AddRule',
+        data(){
+            return{
+                labelPosition:'left',
+                isFirst:true,
+                title:'规则应用维护-添加规则应用',
+                form:{
+                },
+                id:null,
+                rules:{
+                    ruleId:[{ required: true, message: '请输入规则ID',trigger: ['blur'] }],
+                },
+                ruleTypeList:[]
+            }
+        },
+        created(){
+            let info = this.$route.params.data;
+            if(info){
+                this.id = info.id;
+                this.form=Object.assign({},this.form,info);
+                this.title = "规则应用维护-修改规则应用";
+                // this.getList();
+            }
+            let typeList = JSON.parse(localStorage.getItem("knowledgeEnumsData"));
+            this.ruleTypeList = typeList.ruleAppTypeEnum;
+        },
+        methods:{
+            confirm(form){
+                this.$refs[form].validate((valid) => {
+                    if (valid) {
+                        if(this.id){//修改
+                            const param = Object.assign({},this.form,{id:this.id?this.id:undefined})
+                            api.saveRuleApply(param).then((res)=>{
+                                if(res.data.code==0){
+                                    this.$message({
+                                        message:"修改成功",
+                                        type:'success'
+                                    });
+                                    //返回带搜索条件的首页
+                                    this.$router.push({
+                                        name: 'RuleApply',
+                                        params: Object.assign({}, this.$route.params, {currentPage: 1})
+                                    });
+                                }else{
+                                    this.$message({
+                                        message:res.data.msg,
+                                        type:'warning'
+                                    });
+                                }
+                            })
+                        }else{//添加
+                            const params = Object.assign({},this.form,{'id':this.id});
+                            api.saveRuleApply(params).then((res)=>{
+                                if(res.data.code==0){
+                                    this.$message({
+                                        message:"添加成功",
+                                        type:'success'
+                                    });
+                                    this.$router.push({name: 'RuleApply'});
+                                }else{
+                                    this.$message({
+                                        message:res.data.msg,
+                                        type:'warning'
+                                    });
+                                }
+                            })
+                        }
+                    } else {
+                        return false;
+                    }
+                });
+            },
+        }
+    }
+</script>
+<style lang="less">
+    @import "../../less/admin.less";
+    .content{
+        background: #fff;
+        // padding: 20px 20px 30px;
+        padding: 20px 20px 50px;
+        color: #545455;
+        min-width: 980px;
+        position: relative;
+        .discDesc{
+            margin-bottom: 20px;
+        }
+        .disclButn{
+            position: absolute;
+            right: 80px;
+            bottom: 10px;
+        }
+    }
+    .add-version-form{
+        .version-num{
+            width: 500px;
+        }
+    }
+
+</style>

+ 289 - 0
src/components/RuleManager/RuleApply.vue

@@ -0,0 +1,289 @@
+<template>
+    <div>
+        <crumbs title="规则应用维护">
+            <el-form :inline="true">
+                <!--<el-form-item label="规则类型:">
+                    <el-input size="mini" v-model="filter.tagSysName" placeholder="填写单系统名称" clearable></el-input>
+                </el-form-item>-->
+                <el-form-item>
+                   <!-- <el-button size="mini" @click="filterDatas">确认</el-button>-->
+                    <el-button size="mini" type="warning" @click="addRuleApply">添加规则应用</el-button>
+                </el-form-item>
+            </el-form>
+        </crumbs>
+        <div class="contents">
+            <el-table
+                    :data="list"
+                    border
+                    style="width: 100%">
+                <el-table-column
+                        :resizable = "false"
+                        prop="gmtModified"
+                        label="修改时间"
+                        width="180">
+                </el-table-column>
+                <!--<el-table-column
+                        :resizable = "false"
+                        prop="tagName"
+                        label="创建人">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="name"
+                        label="修改人">
+                </el-table-column>-->
+                <el-table-column
+                        :resizable = "false"
+                        prop="ruleId"
+                        label="规则ID"
+                        width="80">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="typeIdName"
+                        label="规则类型">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="remind"
+                        label="规则信息">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="operate"
+                        label="操作"
+                        width="140">
+                    <template slot-scope="scope">
+                        <el-button  @click="modifyRuleApply(scope.row)" type="text" size="small">修改</el-button>
+                        <span style="margin:0 3px;">|</span>
+                        <el-button @click="showDelDialog(scope.row.id)" class="delete" type="text" size="small">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <el-pagination :current-page.sync="currentPage"
+                           @current-change="currentChange"
+                           background
+                           :page-size="pageSize"
+                           :page-sizes="pageSizeArr"
+                           @size-change="handleSizeChange"
+                           :layout="pageLayout"
+                           :total="total">
+            </el-pagination>
+        </div>
+    </div>
+</template>
+
+<script>
+    import api from '@api/rulesManage.js';
+    import config from '@api/config.js';
+    import utils from '@api/utils.js';
+
+    export default {
+        name: 'RulesApply',
+        data: function() {
+            return {
+                list: [],
+                ruleTypes: [],
+                searched:false,
+                filter: {
+                    tagType: [], //标签类型
+                    controlType: [],
+                    tagAdscription: '', //标签归属
+                    tagSysName: '', //标签系统名称
+                    combinationName:'',//归属组合项
+                    name:'',      //填写单界面名称
+                },
+                currentPage: 1,
+                pageSize: config.pageSize,
+                pageSizeArr:config.pageSizeArr,
+                pageLayout:config.pageLayout,
+                total: 0,
+            }
+        },
+        created() {
+            this.getTypesList();
+        },
+        watch:{
+            'filter':{
+                handler:function(){
+                    this.searched = false;
+                },
+                deep:true
+            }
+        },
+        beforeRouteEnter(to, from, next){
+            next(vm => {
+                //const pm = to.param;
+                Object.assign(vm,to.params);
+                vm.inCurrentPage=to.params.currentPage;
+            })
+        },
+        methods: {
+            handleSizeChange(val){
+                this.pageSize = val;
+                this.currentPage = utils.getCurrentPage(this.currentPage, this.total, this.pageSize);
+                this.getDataList();
+            },
+            getTypesList() {
+                let typeList = JSON.parse(localStorage.getItem("knowledgeEnumsData"));
+                if(!typeList) {
+                    api.getTypesList().then((res) => {
+                        if (res.data.code === '0') {
+                            const data = res.data.data;
+                            localStorage.setItem('knowledgeEnumsData', JSON.stringify(data));
+                            this.ruleTypes = res.data.data.ruleAppTypeEnum;
+                        }
+                    })
+                }
+                this.getDataList();
+            },
+            getDataList(isTurnPage) {
+                const param = this.getFilterItems(isTurnPage);
+                this.searched = true;
+                const loading = this.$loading({
+                    lock: true,
+                    text: 'Loading',
+                    spinner: 'el-icon-loading',
+                    background: 'rgba(0, 0, 0, 0.7)'
+                });
+                api.getRulesApplyList(param).then((res) => {
+                    loading.close()
+                    const list = [...res.data.data.records];
+                    this.list = list;
+                    this.total = res.data.data.total;
+                    if(this.inCurrentPage!==undefined){
+                        this.currentPage=this.inCurrentPage;
+                        this.inCurrentPage = undefined;
+                    }
+                })
+            },
+            filterDatas() {
+                this.currentPage = 1;
+                this.getDataList();
+            },
+            addRuleApply() {
+                const pam = this.searched?{currentPage:this.currentPage,
+                    pageSize:this.pageSize,
+                    filter:this.filter}:{currentPage:this.currentPage,
+                    pageSize:this.pageSize};
+                this.$router.push({name:'AddRuleApply',
+                    params:pam})
+            },
+            modifyRuleApply(row) {
+                api.ruleApplyDetail({id:row.id}).then((res)=>{
+                    const {code,data,msg} = res.data;
+                    if(code=='0'){
+                        const item = Object.assign({},row,data);
+                        const pam = this.searched?{currentPage:this.currentPage,
+                            pageSize:this.pageSize,
+                            filter:this.filter}:{currentPage:this.currentPage,
+                            pageSize:this.pageSize};
+                        this.$router.push({name:'AddRuleApply',params:Object.assign(pam,{isEdit:true,data:item})});
+                    }else{
+                        this.$message({
+                            message: msg,
+                            type: 'warning'
+                        });
+                    }
+                });
+            },
+            currentChange(next) {
+                this.currentPage = next;
+                this.getDataList(true);
+            },
+            clearFilter(){
+                this.filter = {
+                    controlType: [],
+                    tagAdscription: '', //标签归属
+                    tagSysName: '', //标签系统名称
+                    combinationName:'',//归属组合项
+                    name:'',      //填写单界面名称
+                }
+            },
+            getFilterItems(isTurnPage) {
+                //翻页时筛选条件没点确定则清空
+                if(isTurnPage&&!this.searched){
+                    this.clearFilter();
+                };
+                const param = {
+                    current: this.inCurrentPage||this.currentPage,
+                    size: this.pageSize,
+                };
+                return param;
+            },
+            indexMethod(index) {
+                return ((this.currentPage - 1) * this.pageSize) + index + 1;
+            },
+            warning(msg,type){
+                this.$message({
+                    showClose: true,
+                    message:msg,
+                    type:type||'warning'
+                })
+            },
+            showConfirmDialog(msg,resolve){
+                this.$alert(msg, '提示', {
+                    confirmButtonText: '确定',
+                    type: 'warning'
+                }).then(() => {
+                    resolve();
+                }).catch(() => {});
+            },
+            showDelDialog(id){
+                const param = {
+                    "id": id
+                };
+                this.showConfirmDialog('是否删除该规则应用?',()=>{
+                    api.deleteRuleApply(param).then((res)=>{
+                        if(res.data.code=='0'){
+                            if(!this.searched){
+                                //未点确认时清空搜索条件
+                                this.clearFilter();
+                            }
+                            if(this.list.length==1){
+                                //当前在最后一页且只有一条数据时,删除后跳到前一页
+                                this.currentPage = this.currentPage===1?1:this.currentPage-1;
+                            }
+                            this.getDataList();
+                            this.warning(res.data.msg || '操作成功','success');
+                        }else{
+                            this.warning(res.data.msg);
+                        }
+                    }).catch((error)=>{
+                        this.warning(error);
+                    })
+                });
+            }
+        }
+    }
+</script>
+
+
+<style lang="less">
+    @import "../../less/admin.less";
+    .delete{
+        color: red
+    }
+    .delete:hover {
+        color: red;
+    }
+    .el-select .el-input .el-icon-arrow-up{
+        display: inline-block!important;
+    }
+    .el-select .el-input .el-icon-circle-close{
+        float:left;
+    }
+    .container.simpleQ-crumb{
+        height:90px!important;
+    }
+    .simpleQ-crumb .contents{
+        max-width: 870px;
+        text-align: right;
+    }
+    .contents.simpleQ-contents{
+        padding-top:120px;
+    }
+    .simpleQ-crumb .el-form--inline .el-form-item{
+        margin-bottom: 0;
+    }
+</style>

+ 6 - 0
src/routes.js

@@ -114,6 +114,8 @@ import AddToken from '@components/safeControl/AddToken.vue';
 //规则管理
 //规则管理
 import RulesManager from '@components/RuleManager/RulesManager.vue';
 import RulesManager from '@components/RuleManager/RulesManager.vue';
 import RuleApply from '@components/RuleManager/RuleApply.vue';
 import RuleApply from '@components/RuleManager/RuleApply.vue';
+import AddRule from '@components/RuleManager/AddRule.vue';
+import AddRuleApply from '@components/RuleManager/AddRuleApply.vue';
 
 
 export default [
 export default [
   {
   {
@@ -287,6 +289,10 @@ export default [
       {path:'LT-SJTJ-YXSJTJ',component:MedicalStatistics,name:'MedicalStatistics'},  //问题列表
       {path:'LT-SJTJ-YXSJTJ',component:MedicalStatistics,name:'MedicalStatistics'},  //问题列表
       {path:'LT-AQGL-LICENSEWH',component:TokenControl,name:'TokenControl'},  //安全管理--令牌列表
       {path:'LT-AQGL-LICENSEWH',component:TokenControl,name:'TokenControl'},  //安全管理--令牌列表
       {path:'LT-AQGL-TJLICENSE',component:AddToken,name:'AddToken'},  //安全管理--发放令牌
       {path:'LT-AQGL-TJLICENSE',component:AddToken,name:'AddToken'},  //安全管理--发放令牌
+      {path:'LT-YXSYKWH-GZWH',component:RulesManager,name:'RulesManager'},//规则管理
+      {path:'LT-YXSYKWH-TJGZWH',component:AddRule,name:'AddRule'},//规则添加
+      {path:'LT-YXSYKWH-GZYYWH',component:RuleApply,name:'RuleApply'},//规则管理
+      {path:'LT-YXSYKWH-TJGZYYWH',component:AddRuleApply,name:'AddRuleApply'},//规则添加
     ]
     ]
   }
   }
 ]
 ]