935090232@qq.com
2022-02-22 85dce973eb29eb2372c76d5b95b30354da9c41c8
zq-erp/src/main/resources/templates/views/admin/hive-erp/products/achieverule-list.html
@@ -15,21 +15,24 @@
    <link th:href="@{/css/styleOne/style.min.css}" rel="stylesheet" type="text/css"/>
    <title></title>
    <style>
        .panel-body{
        .panel-body {
            overflow: hidden;
        }
        .buttonPanel{
        .buttonPanel {
            background: #ffffff;
            padding: 10px 10px ;
            padding: 10px 10px;
            margin: 0px 0px 10px 0px;
        }
        .rowPanel{
        .rowPanel {
            background: #ffffff;
            padding: 0px 10px ;
            padding: 0px 10px;
            padding-top: 10px;
            margin: 0px 0px 10px 0px;
        }
        .paginationStyle{
        .paginationStyle {
            background: #ffffff;
            padding: 10px 10px;
            margin: 0px 0px 10px 0px;
@@ -41,26 +44,25 @@
<div class="panel-body" id="app">
    <el-row class="buttonPanel">
            <el-button @click="dialogVisible = true" type="primary" >新增</el-button>
        <el-button @click="openForm('add')" type="primary">新增</el-button>
    </el-row>
    <el-row class="rowPanel"  >
        <el-form ref="form" :model="form" inline >
    <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 type="primary" @click="search">搜索</el-button>
            <el-button @click="resetForm('form')">重置</el-button>
        </el-form>
    </el-row>
    <el-row class="table-style"  >
    <el-row class="table-style">
        <el-table id="proj" :data="table.rows"  :height="height" stripe @sort-change="sortChange">
        <el-table id="proj" :data="table.rows" :height="height" stripe @sort-change="sortChange">
            <el-table-column
                    prop="name"
                    label="规则名称"
                    width="180">
                    label="规则名称">
            </el-table-column>
            <el-table-column
                    prop="updateTime"
@@ -83,17 +85,19 @@
            </el-table-column>
            <el-table-column
                    prop="createBy"
                    label="创建人">
                    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-row class="paginationStyle">
        <el-pagination background
                       @size-change="changePageSize"
                       @current-change="changeCurrentPage"
@@ -106,16 +110,73 @@
    </el-row>
    <el-dialog
            title="提示"
            :title="title"
            :visible.sync="dialogVisible"
            width="30%"
            width="60%"
            :before-close="handleClose">
        <span>这是一段信息</span>
        <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="dialogVisible = false">确 定</el-button>
  </span>
    </el-dialog>
                <el-button @click="dialogVisible = false">取 消</el-button>
                <el-button type="primary" @click="submitForm">确 定</el-button>
            </span>
</el-dialog>
</div>
@@ -132,29 +193,37 @@
    var vue = new Vue({
        el: '#app',
        data: {
            table:{
                rows:[],
                total:0,
                pageSize:10,
                currentPage:1,
            table: {
                rows: [],
                total: 0,
                pageSize: 10,
                currentPage: 1,
            },
            form:{
                name:null,
                datetimeArr:'',
                payMethod:'',
                flowType:'',
                orderNo:'',
                oprationMan:'',
                queryKey:'',
                order:'',
                sort:''
            form: {
                queryKey: null,
            },
            height:'calc(100vh - 240px)',
            dialogVisible:false,
            height: 'calc(100vh - 240px)',
            dialogVisible: false,
            title: '',
            formData: {
                name: '',
                ruleItemList: [
                    {
                        achieveType: 1,
                        calculationType: 1,
                        lower: '',
                        upper: '',
                        achieve: '',
                    }
                ]
            },
            type: '',
        },
        created: function () {
           this.loadData();
            this.loadData();
            window.addEventListener("keydown", this.keydown);
        },
        methods: {
@@ -169,50 +238,50 @@
            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";
            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.form.sort = column.prop;
                    this.loadData();
                }
            },
            loadData:function(){
            loadData: function () {
                let _this = this;
                let data=_this.getRequestParam();
                data.pageSize=_this.table.pageSize;
                data.pageNum=_this.table.currentPage;
                let data = _this.getRequestParam();
                data.pageSize = _this.table.pageSize;
                data.pageNum = _this.table.currentPage;
                AjaxProxy.requst({
                    app: _this,
                    data:data,
                    data: data,
                    url: basePath + '/admin/achieveRule/selectList',
                    callback: function (data) {
                        _this.table.rows = data.rows;
                        _this.table.total=data.total;
                        _this.table.total = data.total;
                    }
                });
            },
            getRequestParam(){
            getRequestParam() {
                let _this = this;
                return   {
                    name:_this.form.name,
                return {
                    queryKey: _this.form.queryKey,
                }
            },
            search:function(){
                this.table.currentPage=1;
            search: function () {
                this.table.currentPage = 1;
                this.loadData();
            },
            keydown(evt){
                if(evt.keyCode==13) {
            keydown(evt) {
                if (evt.keyCode == 13) {
                    this.search();
                }
            },
            del(index,row){
                let _this=this;
            remove(index, row) {
                let _this = this;
                this.$confirm('确认删除该规则吗?', '提示', {
                    confirmButtonText: '确定',
                    cancelButtonText: '取消',
@@ -220,13 +289,14 @@
                }).then(() => {
                    AjaxProxy.requst({
                        app: _this,
                        url: basePath + "/admin/achieveRule/removeById/"+row.id,
                        type: 'GET',
                        url: basePath + "/admin/achieveRule/removeById/" + row.id,
                        callback: function (data) {
                            _this.loadData();
                            _this.$message({
                                type: 'success',
                                message: '删除成功!'
                                message: data.info,
                            });
                            _this.loadData();
                        }
                    });
                }).catch(() => {
@@ -236,12 +306,94 @@
                    });
                });
            },
            //导出
          add(){
            //开启表单弹窗
            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);
            },
        }
    });