| <!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> |