Ver código fonte

文件提交

zhouna 5 anos atrás
pai
commit
a75c4cf3f1
2 arquivos alterados com 364 adições e 0 exclusões
  1. 36 0
      src/api/rulesManage.js
  2. 328 0
      src/components/RuleManager/RulesManager.vue

+ 36 - 0
src/api/rulesManage.js

@@ -0,0 +1,36 @@
+import axios from 'axios';
+import config from '@api/config.js';
+
+const urls = config.urls;
+export default {
+    getRulesList(param){
+        return axios.post(urls.rulesList,param);
+    },
+    getKnowledgeEnums(param){
+        return axios.post(urls.getKnowledgeEnums,param);
+    },
+    getTypesList(param){
+        return axios.post(urls.ruleTypesList,param);
+    },
+    getRulesApplyList(param){
+        return axios.post(urls.rulesApplyList,param);
+    },
+    deleteRule(param){
+        return axios.post(urls.ruleDelete,param);
+    },
+    deleteRuleApply(param){
+        return axios.post(urls.ruleApplyDelete,param);
+    },
+    ruleDetail(param){
+        return axios.post(urls.ruleDetail,param);
+    },
+    ruleApplyDetail(param){
+        return axios.post(urls.ruleApplyDetail,param);
+    },
+    saveRule(param){
+        return axios.post(urls.addRule,param);
+    },
+    saveRuleApply(param){
+        return axios.post(urls.addRuleApply,param);
+    },
+}

+ 328 - 0
src/components/RuleManager/RulesManager.vue

@@ -0,0 +1,328 @@
+<template>
+    <div>
+        <crumbs title="规则维护">
+            <el-form :inline="true">
+                <!--<el-form-item label="创建人:">
+                    <el-input size="mini" v-model="filter.combinationName" placeholder="归属组合项" clearable></el-input>
+                </el-form-item>
+                <el-form-item label="修改人:">
+                    <el-input size="mini" v-model="filter.name" 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="addRule">添加规则</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="pubName"
+                        label="规则名">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="minOperator"
+                        label="最小值操作符"
+                        width="180">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="minValue"
+                        label="最小值">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="minUnit"
+                        label="最小值单位">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="maxOperator"
+                        label="最大值操作符"
+                        width="80">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="maxValue"
+                        label="最大值">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="maxUnit"
+                        label="最大值单位">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="eqOperator"
+                        label="等于操作符">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="eqValue"
+                        label="等于值">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="eqUnit"
+                        label="等于值单位">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="remind"
+                        label="备注">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="suffixInfo"
+                        label="文本后缀">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="operate"
+                        label="操作"
+                        width="140">
+                    <template slot-scope="scope">
+                        <el-button  @click="modifyRule(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: 'RulesManager',
+        data: function() {
+            return {
+                list: [],
+                tagTypes: [],
+                Adscriptions: [],
+                tagTypesList:[],
+                searched:false,
+                filter: {
+                    tagType: [], //标签类型
+                    controlType: [],
+                    tagAdscription: '', //标签归属
+                    tagSysName: '', //标签系统名称
+                    combinationName:'',//归属组合项
+                    name:'',      //填写单界面名称
+                },
+                currentPage: 1,
+                pageSize: config.pageSize,
+                pageSizeArr:config.pageSizeArr,
+                pageLayout:config.pageLayout,
+                total: 0,
+            }
+        },/*
+        created() {
+            this.getDropList();
+        },*/
+        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();
+            },
+            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.getRulesList(param).then((res) => {
+                    loading.close()
+                    const list = [...res.data.data.records];
+                    for (var i = 0; i < list.length; i++) {
+                        for (var j =  0; j < this.tagTypes.length; j++) {
+                            if(list[i].controlType == this.tagTypes[j].val) {
+                                list[i].tagTypeCn = this.tagTypes[j].name;
+                            }
+                        }
+                        //后台数据typeCn转换为筛选中对应的字段名称
+                        for (var z =  0; z < this.Adscriptions.length; z++) {
+                            if(list[i].type == this.Adscriptions[z].val) {
+                                list[i].typeCn = this.Adscriptions[z].name;
+                            }
+                        }
+                    }
+                    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();
+            },
+            addRule() {
+                const pam = this.searched?{currentPage:this.currentPage,
+                    pageSize:this.pageSize,
+                    filter:this.filter}:{currentPage:this.currentPage,
+                    pageSize:this.pageSize};
+                this.$router.push({name:'AddRule',
+                    params:pam})
+            },
+            modifyRule(row) {
+                api.ruleDetail({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:'AddRule',params:Object.assign(pam,{isEdit:true,data:item})});
+                    }else{
+                        this.$message({
+                            message: msg,
+                            type: 'warning'
+                        });
+                    }
+                });
+                //this.$router.push({name:'AddIndeptLabel',params:{isEdit:true,data:row}});
+            },
+            currentChange(next) {
+                this.currentPage = next;
+                this.getDataList(true);
+                // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+                //     this.list = this.cacheData[next];
+                // } else {
+                //     this.getDataList();
+                // }
+            },
+            clearFilter(){
+                this.filter = {
+                    tagType: [], //标签类型
+                    controlType: [],
+                    tagAdscription: '', //标签归属
+                    tagSysName: '', //标签系统名称
+                    combinationName:'',//归属组合项
+                    name:'',      //填写单界面名称
+                }
+            },
+            getFilterItems(isTurnPage) {
+                //翻页时筛选条件没点确定则清空
+                if(isTurnPage&&!this.searched){
+                    this.clearFilter();
+                };
+                const param = {
+                    tagTypeList: [1],
+                    callType:1,
+                    current: this.inCurrentPage||this.currentPage,
+                    size: this.pageSize,
+                    type: this.filter.tagAdscription,
+                    tagName: this.filter.tagSysName.trim(),
+                    combinationName:this.filter.combinationName.trim(),
+                    name:this.filter.name.trim(),
+                    controlTypeList: this.filter.controlType[0] ? this.filter.controlType: []
+                };
+                return param;
+            },
+            indexMethod(index) {
+                return ((this.currentPage - 1) * this.pageSize) + index + 1;
+            },
+            getTagType(val) {
+                return val
+            },
+            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.deleteRule(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;
+    }
+</style>