<!DOCTYPE HTML> 
 | 
<html xmlns:th="http://www.thymeleaf.org" xmlns:matrix="http://www.w3.org/1999/xhtml"> 
 | 
<head> 
 | 
    <meta charset="utf-8"> 
 | 
    <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 
 | 
    <meta name="renderer" content="webkit|ie-comp|ie-stand"> 
 | 
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
 | 
    <meta name="viewport" 
 | 
          content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/> 
 | 
    <meta http-equiv="Cache-Control" content="no-siteapp"/> 
 | 
    <LINK rel="Bookmark" href="../images/favicon.ico"> 
 | 
    <!-- 本框架基本脚本和样式 --> 
 | 
    <script type="text/javascript" th:src="@{/js/systools/MBaseVue.js}"></script> 
 | 
    <link rel="stylesheet" th:href="@{/plugin/element-ui/index.css}"> 
 | 
    <link th:href="@{/css/styleOne/style.min.css}" rel="stylesheet" type="text/css"/> 
 | 
    <title></title> 
 | 
    <style> 
 | 
        .panel-body { 
 | 
            overflow: hidden; 
 | 
        } 
 | 
  
 | 
        .buttonPanel { 
 | 
            background: #ffffff; 
 | 
            padding: 10px 10px; 
 | 
            margin: 0px 0px 10px 0px; 
 | 
        } 
 | 
  
 | 
        .rowPanel { 
 | 
            background: #ffffff; 
 | 
            padding: 0px 10px; 
 | 
            padding-top: 10px; 
 | 
            margin: 0px 0px 10px 0px; 
 | 
        } 
 | 
  
 | 
        .paginationStyle { 
 | 
            background: #ffffff; 
 | 
            padding: 10px 10px; 
 | 
            margin: 0px 0px 10px 0px; 
 | 
            text-align: right; 
 | 
        } 
 | 
    </style> 
 | 
</head> 
 | 
<body> 
 | 
<div class="panel-body" id="app"> 
 | 
  
 | 
    <el-row class="buttonPanel"> 
 | 
        <el-button @click="openForm('add')" type="primary">新增</el-button> 
 | 
    </el-row> 
 | 
  
 | 
    <el-row class="rowPanel"> 
 | 
        <el-form ref="form" :model="form" inline> 
 | 
            <el-form-item label="规则名称" prop="queryKey"> 
 | 
                <el-input v-model="form.keyword" placeholder="请输入规则名称"></el-input> 
 | 
            </el-form-item> 
 | 
            <el-button type="primary" @click="search">搜索</el-button> 
 | 
            <el-button @click="resetForm('form')">重置</el-button> 
 | 
        </el-form> 
 | 
    </el-row> 
 | 
  
 | 
    <el-row class="table-style"> 
 | 
  
 | 
        <el-table id="proj" :data="table.rows" :height="height" stripe @sort-change="sortChange"> 
 | 
            <el-table-column 
 | 
                    prop="name" 
 | 
                    label="规则名称"> 
 | 
            </el-table-column> 
 | 
            <el-table-column 
 | 
                    prop="updateTime" 
 | 
                    sortable="custom" 
 | 
                    label="修改时间" 
 | 
                    show-overflow-tooltip 
 | 
                    width="180"> 
 | 
            </el-table-column> 
 | 
            <el-table-column 
 | 
                    prop="updateBy" 
 | 
                    label="修改人"> 
 | 
            </el-table-column> 
 | 
  
 | 
            <el-table-column 
 | 
                    prop="createTime" 
 | 
                    sortable="custom" 
 | 
                    label="创建时间" 
 | 
                    show-overflow-tooltip 
 | 
                    width="180"> 
 | 
            </el-table-column> 
 | 
            <el-table-column 
 | 
                    prop="createBy" 
 | 
                    label="创建人" 
 | 
                    width="180"> 
 | 
            </el-table-column> 
 | 
  
 | 
            <el-table-column label="操作"> 
 | 
                <template slot-scope="scope"> 
 | 
                    <el-button type="text" @click="openForm('modify', scope.row)" size="small">修改</el-button> 
 | 
                    <el-button type="text" @click="remove(scope.$index, scope.row)" size="small">删除</el-button> 
 | 
                </template> 
 | 
            </el-table-column> 
 | 
        </el-table> 
 | 
    </el-row> 
 | 
    <el-row class="paginationStyle"> 
 | 
        <el-pagination background 
 | 
                       @size-change="changePageSize" 
 | 
                       @current-change="changeCurrentPage" 
 | 
                       :current-page="table.currentPage" 
 | 
                       :page-sizes="[10, 20, 30, 50]" 
 | 
                       :page-size="table.pageSize" 
 | 
                       layout="total, sizes, prev, pager, next, jumper" 
 | 
                       :total="table.total"> 
 | 
        </el-pagination> 
 | 
    </el-row> 
 | 
  
 | 
    <el-dialog 
 | 
            :title="title" 
 | 
            :visible.sync="dialogVisible" 
 | 
            width="60%" 
 | 
            :before-close="handleClose"> 
 | 
  
 | 
        <el-form :model="formData" ref="ruleForm" label-width="100px" class="demo-ruleForm"> 
 | 
  
 | 
            <el-form-item label="规则名称"  > 
 | 
                <el-input style="width: 200px" v-model="formData.name"></el-input> 
 | 
                <el-button type="primary" @click="addRuleItem()" size="small">添加规则</el-button> 
 | 
            </el-form-item> 
 | 
  
 | 
            <el-form-item label="绩效方案" > 
 | 
                <el-table 
 | 
                        :data="formData.ruleItemList" 
 | 
                        style="width: 100%"> 
 | 
                    <el-table-column 
 | 
                            label="业绩类型" 
 | 
                    > 
 | 
                        <template slot-scope="scope"> 
 | 
                            <el-select v-model="scope.row.achieveType" placeholder="请选择业绩类型"> 
 | 
                                <el-option label="本金消耗" :value="1"></el-option> 
 | 
                                <el-option label="赠送消耗" :value="2"></el-option> 
 | 
                            </el-select> 
 | 
                        </template> 
 | 
                    </el-table-column> 
 | 
                    <el-table-column 
 | 
                            label="计算方式" 
 | 
                    > 
 | 
                        <template slot-scope="scope"> 
 | 
                            <el-select v-model="scope.row.calculationType" placeholder="请选择计算方式"> 
 | 
                                <el-option label="固定金额" :value="1"></el-option> 
 | 
                                <el-option label="百分比(%)" :value="2"></el-option> 
 | 
                            </el-select> 
 | 
                        </template> 
 | 
                    </el-table-column> 
 | 
                    <el-table-column 
 | 
                            label="区间" 
 | 
                            width="240"> 
 | 
                        <template slot-scope="scope"> 
 | 
                            <el-input style="width: 100px" v-model="scope.row.lower"></el-input> 
 | 
                            - 
 | 
                            <el-input style="width: 100px" v-model="scope.row.upper"></el-input> 
 | 
                        </template> 
 | 
                    </el-table-column> 
 | 
                    <el-table-column 
 | 
                            label="业绩"> 
 | 
                        <template slot-scope="scope"> 
 | 
                            <el-input v-model="scope.row.achieve"></el-input> 
 | 
                        </template> 
 | 
                    </el-table-column> 
 | 
                    <el-table-column label="操作"> 
 | 
                        <template slot-scope="scope"> 
 | 
                            <el-button  type="text" @click="removeRuleItem(scope.$index, scope.row)" size="small">删除</el-button> 
 | 
                        </template> 
 | 
                    </el-table-column> 
 | 
                </el-table> 
 | 
            </el-form-item> 
 | 
  
 | 
  
 | 
  
 | 
        </el-form> 
 | 
        <span slot="footer" class="dialog-footer"> 
 | 
                <el-button @click="dialogVisible = false">取 消</el-button> 
 | 
                <el-button type="primary" @click="submitForm">确 定</el-button> 
 | 
            </span> 
 | 
</el-dialog> 
 | 
  
 | 
  
 | 
</div> 
 | 
</body> 
 | 
<script type="text/javascript" th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script> 
 | 
<script type="text/javascript" th:src="@{/js/plugin/jquery.query.js}"></script> 
 | 
<script type="text/javascript" th:src="@{/plugin/layer/layer.js}"></script> 
 | 
<script type="text/javascript" th:src="@{/js/systools/AjaxProxyVue.js}"></script> 
 | 
<script type="text/javascript" th:src="@{/js/plugin/vue.js}"></script> 
 | 
<script type="text/javascript" th:src="@{/plugin/element-ui/index.js}"></script> 
 | 
<script type="text/javascript" th:src="@{/plugin/moment.min.js}"></script> 
 | 
<script type="text/javascript" th:inline="javascript"> 
 | 
  
 | 
    var vue = new Vue({ 
 | 
        el: '#app', 
 | 
        data: { 
 | 
            table: { 
 | 
                rows: [], 
 | 
                total: 0, 
 | 
                pageSize: 10, 
 | 
                currentPage: 1, 
 | 
            }, 
 | 
            form: { 
 | 
                queryKey: null, 
 | 
            }, 
 | 
  
 | 
            height: 'calc(100vh - 240px)', 
 | 
            dialogVisible: false, 
 | 
            title: '', 
 | 
            formData: { 
 | 
                name: '', 
 | 
                ruleItemList: [ 
 | 
                    { 
 | 
                        achieveType: 1, 
 | 
                        calculationType: 1, 
 | 
                        lower: '', 
 | 
                        upper: '', 
 | 
                        achieve: '', 
 | 
                    } 
 | 
                ] 
 | 
            }, 
 | 
  
 | 
            type: '', 
 | 
  
 | 
        }, 
 | 
        created: function () { 
 | 
            this.loadData(); 
 | 
            window.addEventListener("keydown", this.keydown); 
 | 
        }, 
 | 
        methods: { 
 | 
            changePageSize(val) { 
 | 
                this.table.pageSize = val; 
 | 
                this.loadData(); 
 | 
            }, 
 | 
            changeCurrentPage(val) { 
 | 
                this.table.currentPage = val; 
 | 
                this.loadData(); 
 | 
            }, 
 | 
            resetForm(formName) { 
 | 
                this.$refs[formName].resetFields(); 
 | 
            }, 
 | 
            sortChange: function (column) { 
 | 
                if (column.order) { 
 | 
                    if (column.order.indexOf("desc")) { 
 | 
                        this.form.order = "desc"; 
 | 
                    } else { 
 | 
                        this.form.order = "asc"; 
 | 
                    } 
 | 
                    this.form.sort = column.prop; 
 | 
                    this.loadData(); 
 | 
                } 
 | 
            }, 
 | 
            loadData: function () { 
 | 
                let _this = this; 
 | 
                let data = _this.getRequestParam(); 
 | 
                data.pageSize = _this.table.pageSize; 
 | 
                data.pageNum = _this.table.currentPage; 
 | 
                AjaxProxy.requst({ 
 | 
                    app: _this, 
 | 
                    data: data, 
 | 
                    url: basePath + '/admin/achieveRule/selectList', 
 | 
                    callback: function (data) { 
 | 
                        _this.table.rows = data.rows; 
 | 
                        _this.table.total = data.total; 
 | 
                    } 
 | 
                }); 
 | 
            }, 
 | 
            getRequestParam() { 
 | 
                let _this = this; 
 | 
                return { 
 | 
                    queryKey: _this.form.queryKey, 
 | 
                } 
 | 
            }, 
 | 
            search: function () { 
 | 
                this.table.currentPage = 1; 
 | 
                this.loadData(); 
 | 
            }, 
 | 
            keydown(evt) { 
 | 
                if (evt.keyCode == 13) { 
 | 
                    this.search(); 
 | 
                } 
 | 
            }, 
 | 
  
 | 
            remove(index, row) { 
 | 
                let _this = this; 
 | 
                this.$confirm('确认删除该规则吗?', '提示', { 
 | 
                    confirmButtonText: '确定', 
 | 
                    cancelButtonText: '取消', 
 | 
                    type: 'warning' 
 | 
                }).then(() => { 
 | 
                    AjaxProxy.requst({ 
 | 
                        app: _this, 
 | 
                        type: 'GET', 
 | 
                        url: basePath + "/admin/achieveRule/removeById/" + row.id, 
 | 
                        callback: function (data) { 
 | 
                            _this.loadData(); 
 | 
                            _this.$message({ 
 | 
                                type: 'success', 
 | 
                                message: data.info, 
 | 
                            }); 
 | 
                        } 
 | 
                    }); 
 | 
                }).catch(() => { 
 | 
                    this.$message({ 
 | 
                        type: 'info', 
 | 
                        message: '已取消删除' 
 | 
                    }); 
 | 
                }); 
 | 
            }, 
 | 
            //开启表单弹窗 
 | 
            openForm(type, data) { 
 | 
  
 | 
                if (type == 'add') { 
 | 
                    this.title = '新增规则'; 
 | 
                    //this.$refs['formName'].resetFields(); 
 | 
  
 | 
                } else { 
 | 
                    this.title = '修改规则'; 
 | 
                    this.formData = data; 
 | 
                } 
 | 
                this.type = type; 
 | 
                this.dialogVisible = true; 
 | 
            }, 
 | 
            //提交表单 
 | 
            submitForm() { 
 | 
                let url = basePath + "/admin/achieveRule/add"; 
 | 
                if (this.type == 'modify') { 
 | 
                    url = basePath + "/admin/achieveRule/update"; 
 | 
                } 
 | 
                let data=this.formData; 
 | 
  
 | 
                if(MTools.isBlank(data.name)){this.$message.error("请输入规则名称");return;} 
 | 
  
 | 
                if(data.ruleItemList.length<1){ 
 | 
                    this.$message.error("最少需要一个计算规则");;return;} 
 | 
                let flag=true; 
 | 
                data.ruleItemList.forEach(item=>{ 
 | 
                    if(MTools.isBlank(item.lower)){ 
 | 
                        this.$message.error("请输入业绩下限");flag=false;} 
 | 
                    else if(MTools.isBlank(item.upper)){ 
 | 
                        this.$message.error("请输入业绩上限");flag=false;} 
 | 
                    else if(MTools.isBlank(item.achieve)){ 
 | 
                        this.$message.error("请输入业绩金额或者比例");flag=false;} 
 | 
                }) 
 | 
                if(flag){ 
 | 
                    var _this=this; 
 | 
                    AjaxProxy.requst({ 
 | 
                        app: _this, 
 | 
                        data:data, 
 | 
                        url:url, 
 | 
                        callback: function (data) { 
 | 
                            _this.$message.success(data.info); 
 | 
                            _this.loadData(); 
 | 
                            _this.dialogVisible = false; 
 | 
                            _this.formData={ 
 | 
                                name: '', 
 | 
                                ruleItemList: [ 
 | 
                                    { 
 | 
                                        achieveType: 1, 
 | 
                                        calculationType: 1, 
 | 
                                        lower: '', 
 | 
                                        upper: '', 
 | 
                                        achieve: '', 
 | 
                                    } 
 | 
                                ] 
 | 
                            }; 
 | 
                        } 
 | 
                    }); 
 | 
  
 | 
                } 
 | 
            }, 
 | 
            handleClose(done) { 
 | 
                this.$confirm('确认关闭?') 
 | 
                    .then(_ => { 
 | 
                        done(); 
 | 
                    }) 
 | 
                    .catch(_ => { 
 | 
                    }); 
 | 
            }, 
 | 
            addRuleItem(){ 
 | 
                this.formData.ruleItemList.push( 
 | 
                    { 
 | 
                        achieveType: 1, 
 | 
                        calculationType: 1, 
 | 
                        lower: '', 
 | 
                        upper: '', 
 | 
                        achieve: '', 
 | 
                    } 
 | 
                ); 
 | 
            }, 
 | 
            removeRuleItem(index,row){ 
 | 
                this.formData.ruleItemList.splice(index, 1); 
 | 
            }, 
 | 
  
 | 
  
 | 
        } 
 | 
  
 | 
    }); 
 | 
  
 | 
  
 | 
</script> 
 | 
</body> 
 | 
</html> 
 |