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