From 85dce973eb29eb2372c76d5b95b30354da9c41c8 Mon Sep 17 00:00:00 2001
From: 935090232@qq.com <ak473600000>
Date: Tue, 22 Feb 2022 23:08:51 +0800
Subject: [PATCH] fead:新增收银员字段

---
 zq-erp/src/main/resources/templates/views/admin/hive-erp/products/achieverule-list.html |  290 ++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 221 insertions(+), 69 deletions(-)

diff --git a/zq-erp/src/main/resources/templates/views/admin/hive-erp/products/achieverule-list.html b/zq-erp/src/main/resources/templates/views/admin/hive-erp/products/achieverule-list.html
index 5edbdea..c82e927 100644
--- a/zq-erp/src/main/resources/templates/views/admin/hive-erp/products/achieverule-list.html
+++ b/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);
+            },
+
 
         }
+
     });
 
 

--
Gitblit v1.9.1