sugangqiang 2 years ago
parent
commit
eb5f323e24

+ 59 - 3
app/admin/controller/IntegralMgr.php

@@ -4,6 +4,7 @@ namespace app\admin\controller;
 
 use app\admin\common\AdminController;
 use app\common\api\IntegralProjectApi;
+use app\common\api\IntegralItemApi;
 
 /**
  * Description of IntegralMgr
@@ -84,19 +85,74 @@ class IntegralMgr extends AdminController {
     }
 
     public function itemList() {
-        return json([]);
+        return json(IntegralItemApi::getList($this->request->param()));
     }
 
     public function addItem() {
+        if ($this->request->isPost()) {
+            $params = $this->request->param();
+            return $this->doItemSave($params);
+        }
         return view("save_item");
     }
 
     public function editItem() {
-        return view("save_item");
+        $params = $this->request->param();
+        if ($this->request->isPost()) {
+            return $this->doItemSave($params);
+        }
+        $row = IntegralItemApi::getOne($params["id"]);
+        return view("save_item", ["row" => $row]);
+    }
+
+    private function doItemSave($params) {
+        if (!$params["projectId"]) {
+            return json(["msg" => "请选择积分项目"]);
+        }
+        if (!$params["name"]) {
+            return json(["msg" => "请输入标准名称"]);
+        }
+        if (!$params["plan"]) {
+            return json(["msg" => "请选择积分方案"]);
+        }
+        if (!$params["unit"]) {
+            return json(["msg" => "请输入计量单位"]);
+        }
+        if (!$params["fstNeedAmount"]) {
+            return json(["msg" => "请输入首次达成量"]);
+        }
+        if (!$params["fstGainPoints"]) {
+            return json(["msg" => "请输入首次获得积分"]);
+        }
+        if ($params["plan"] == 2) {
+            if (!$params["stepNeedAmount"]) {
+                return json(["msg" => "请输入每新增量"]);
+            }
+            if (!$params["stepGainPoints"]) {
+                return json(["msg" => "请输入每新增获得积分"]);
+            }
+            if (!$params["maxGainPoints"]) {
+                return json(["msg" => "请输入积分上限"]);
+            }
+            if (!$params["yearly"]) {
+                return json(["msg" => "请选择累计积分方案"]);
+            }
+        }
+        if (IntegralItemApi::chkExist($params["name"], $params["projectId"], $params["id"]))
+            return json(["msg" => "名称已经被使用"]);
+        $resultStr = $params["id"] ? "编辑" : "添加";
+        if (IntegralItemApi::edit($params))
+            return json(["code" => 200, "msg" => "{$resultStr}积分标准成功"]);
+        return json(["msg" => "{$resultStr}积分标准失败"]);
     }
 
     public function deleteItem() {
-        
+        if ($this->request->isPost()) {
+            $id = $this->request->param("id");
+            if (IntegralItemApi::delete($id))
+                return json(["code" => 200, "msg" => "删除积分标准成功"]);
+            return json(["msg" => "删除积分标准失败"]);
+        }
     }
 
 }

+ 27 - 15
app/admin/view/integral_mgr/save_item.html

@@ -27,7 +27,7 @@
                             </div>
                             <label class="col-sm-2 control-label spacing">所属积分项目</label>
                             <div class="col-sm-4 spacing">
-                                <select class="form-control" id="type" name="type" selectVal="{$row.type}">
+                                <select class="form-control" id="projectId" name="projectId" selectVal="{$row.projectId}">
                                 </select>
                             </div>
                         </div>
@@ -39,16 +39,13 @@
                             <label class="col-sm-2 control-label spacing">启用状态</label>
                             <div class="col-sm-4 spacing">
                                 <select class="form-control" id="active" name="active" selectVal="{$row.active}">
+                                    <option value="">请选择</option>
                                     <option value="1">启用</option>
                                     <option value="2">停用</option>
                                 </select>
                             </div>
                         </div>
                         <div class="rowGroup">
-                            <label class="col-sm-2 control-label spacing">数额单位</label>
-                            <div class="col-sm-4 spacing">
-                                <input class="form-control" id="name" name="unit" value="{$row.unit}">
-                            </div>
                             <label class="col-sm-2 control-label spacing">积分方案</label>
                             <div class="col-sm-4 spacing">
                                 <select class="form-control" id="plan" name="plan" selectVal="{$row.plan}" onchange="IntegralItemMgrInfo.onIntegralPlanChange();">
@@ -57,39 +54,54 @@
                                     <option value="2">新增可获积分</option>
                                 </select>
                             </div>
+                            <label class="col-sm-2 control-label spacing">计量单位</label>
+                            <div class="col-sm-4 spacing">
+                                <input class="form-control" id="unit" name="unit" value="{$row.unit}">
+                            </div>
                         </div>
                         <div class="rowGroup">
-                            <label class="col-sm-2 control-label spacing">首次数额</label>
+                            <label class="col-sm-2 control-label spacing">首次达成量</label>
                             <div class="col-sm-4 spacing">
                                 <input class="form-control" id="fstNeedAmount" name="fstNeedAmount" value="{$row.fstNeedAmount}">
                             </div>
-                            <label class="col-sm-2 control-label spacing">首次积分</label>
+                            <label class="col-sm-2 control-label spacing">首次获得积分</label>
                             <div class="col-sm-4 spacing">
                                 <input class="form-control" id="fstGainPoints" name="fstGainPoints" value="{$row.fstGainPoints}">
                             </div>
                         </div>
-                        <div class="rowGroup">
-                            <label class="col-sm-2 control-label spacing">每新增数额</label>
+                        <div class="rowGroup planb" style="display:none;">
+                            <label class="col-sm-2 control-label spacing">每新增</label>
                             <div class="col-sm-4 spacing">
                                 <input class="form-control" id="stepNeedAmount" name="stepNeedAmount" value="{$row.stepNeedAmount}">
                             </div>
-                            <label class="col-sm-2 control-label spacing">每新增积分</label>
+                            <label class="col-sm-2 control-label spacing">每新增获得积分</label>
                             <div class="col-sm-4 spacing">
                                 <input class="form-control" id="stepGainPoints" name="stepGainPoints" value="{$row.stepGainPoints}">
                             </div>
                         </div>
-                        <div class="rowGroup">
-                            <label class="col-sm-2 control-label spacing">累计方案</label>
+                        <div class="rowGroup planb" style="display:none;">
+                            <label class="col-sm-2 control-label spacing">积分上限</label>
+                            <div class="col-sm-4 spacing">
+                                <input class="form-control" id="maxGainPoints" name="maxGainPoints" value="{$row.maxGainPoints}">
+                            </div>
+                            <label class="col-sm-2 control-label spacing">累计积分方案</label>
                             <div class="col-sm-4 spacing">
                                 <select class="form-control" id="yearly" name="yearly" selectVal="{$row.yearly}" onchange="IntegralItemMgrInfo.onAccumulationPlanChange();">
                                     <option value="">请选择</option>
-                                    <option value="1">每年度重置</option>
+                                    <option value="1">每年度重置积分上限</option>
                                     <option value="2">达上限即止</option>
                                 </select>
                             </div>
-                            <label class="col-sm-2 control-label spacing">积分上限</label>
+                        </div>
+                        <div class="rowGroup">
+                            <label class="col-sm-2 control-label spacing">证明材料</label>
                             <div class="col-sm-4 spacing">
-                                <input class="form-control" id="name" name="name" value="{$row.name}">
+                                <select class="form-control" id="fileTypeId" name="fileTypeId" selectVal="{$row.fileTypeId}">
+                                    <option value="">请选择</option>
+                                    {volist name="fileTypes" id="fileType"}
+                                    <option value="{$fileType.id}">{$fileType.name}</option>
+                                    {/volist}
+                                </select>
                             </div>
                         </div>
                     </div>

+ 19 - 18
app/common/api/IntegralItemApi.php

@@ -15,12 +15,6 @@ class IntegralItemApi {
         $offset = $params["offset"] ?: 0;
         $limit = $params["limit"] ?: 10;
         $where[] = ["delete", "=", 0];
-        if ($params["type"]) {
-            $where[] = ["type", "=", $params["type"]];
-        }
-        if ($params["name"]) {
-            $where[] = ["name", "like", "%{$params["name"]}%"];
-        }
         if ($params["projectType"]) {
             $where[] = ["projectType", "=", $params["projectType"]];
         }
@@ -39,10 +33,24 @@ class IntegralItemApi {
     }
 
     public static function edit($params) {
-        $data["type"] = $params["type"];
+        $data["projectId"] = $params["projectId"];
         $data["name"] = $params["name"];
-        $data["projectType"] = $params["projectType"];
+        $data["unit"] = $params["unit"];
+        $data["fstNeedAmount"] = $params["fstNeedAmount"];
+        $data["fstGainPoints"] = $params["fstGainPoints"];
+        $data["fileTypeId"] = $params["fileTypeId"];
         $data["active"] = $params["active"];
+        if (!$params["plan"] == 2) {
+            $data["stepNeedAmount"] = $params["stepNeedAmount"];
+            $data["stepGainPoints"] = $params["stepGainPoints"];
+            $data["maxGainPoints"] = $params["maxGainPoints"];
+            $data["yearly"] = $params["yearly"];
+        } else {
+            $data["stepNeedAmount"] = 0;
+            $data["stepGainPoints"] = 0;
+            $data["maxGainPoints"] = 0;
+            $data["yearly"] = 1;
+        }
         if ($params["id"]) {
             $data["id"] = $params["id"];
             $data["updateTime"] = date("Y-m-d H:i:s");
@@ -60,20 +68,13 @@ class IntegralItemApi {
         $data["delete"] = 1;
         $data["updateUser"] = session("user")["uid"];
         $data["updateTime"] = date("Y-m-d H:i:s");
-        //同时删除子项
-        $upd["delete"] = 1;
-        $upd["updateTime"] = date("Y-m-d H:i:s");
-        $upd["updateTime"] = session("user")["uid"];
-        $where[] = ["projectId", "=", $id];
-        \app\common\model\IntegralItem::where($where)->save($upd);
         return IntegralItem::update($data);
     }
 
-    public static function chkExist($name, $type, $projectType, $id = 0) {
+    public static function chkExist($name, $projectId, $id = 0) {
         $where = [];
-        $where[] = ["type", "=", $params["type"]];
-        $where[] = ["projectType", "=", $params["projectType"]];
-        $where[] = ["name", "=", $params["name"]];
+        $where[] = ["projectId", "=", $projectId];
+        $where[] = ["name", "=", $name];
         $where[] = ["delete", "=", 0];
         if ($id) {
             $where[] = ["id", "<>", $id];

+ 93 - 10
public/static/modular/talentIdentify/integralMgr/IntegralItemMgr_info.js

@@ -4,31 +4,80 @@
 var IntegralItemMgrInfo = {
     integralMgrInfoData: {},
     validateFields: {
-        type: {
+        projectId: {
             validators: {
                 notEmpty: {
-                    message: '请选择人才类型'
+                    message: '请选择所属积分项目'
                 }
             }
         },
         name: {
             validators: {
                 notEmpty: {
-                    message: '请填写项目名称'
+                    message: '请输入标准名称'
                 }
             }
         },
-        projectType: {
+        active: {
             validators: {
                 notEmpty: {
-                    message: '请选择项目类别'
+                    message: '请选择启用状态'
                 }
             }
         },
-        active: {
+        plan: {
             validators: {
                 notEmpty: {
-                    message: '请选择启用状态'
+                    message: '请选择积分方案'
+                }
+            }
+        },
+        unit: {
+            validators: {
+                notEmpty: {
+                    message: '请输入计量单位'
+                }
+            }
+        },
+        fstNeedAmount: {
+            validators: {
+                notEmpty: {
+                    message: '请输入首次达成量'
+                }
+            }
+        },
+        fstGainPoints: {
+            validators: {
+                notEmpty: {
+                    message: '请输入首次获得积分'
+                }
+            }
+        },
+        stepNeedAmount: {
+            validators: {
+                notEmpty: {
+                    message: '请输入每新增量'
+                }
+            }
+        },
+        stepGainPoints: {
+            validators: {
+                notEmpty: {
+                    message: '请输入每新增获得积分'
+                }
+            }
+        },
+        maxGainPoints: {
+            validators: {
+                notEmpty: {
+                    message: '请输入积分上限'
+                }
+            }
+        },
+        yearly: {
+            validators: {
+                notEmpty: {
+                    message: '请选择累计积分方案'
                 }
             }
         }
@@ -77,11 +126,45 @@ IntegralItemMgrInfo.collectData = function () {
     this
             .set('id')
             .set('type')
+            .set('projectId')
             .set('name')
-            .set('projectType')
+            .set('plan')
+            .set('unit')
+            .set('fstNeedAmount')
+            .set('fstGainPoints')
+            .set('stepNeedAmount')
+            .set('stepGainPoints')
+            .set('maxGainPoints')
+            .set('yearly')
+            .set('fileTypeId')
             .set('active');
 }
 
+IntegralItemMgrInfo.onTypeChange = function () {
+
+}
+
+//切换积分方案
+IntegralItemMgrInfo.onIntegralPlanChange = function () {
+    var plan = $("#plan").val();
+    switch (plan) {
+        case "1":
+            $(".planb").css("display", "none");
+            $('#integraMgrInfoForm').bootstrapValidator('removeField', "stepNeedAmount");
+            $('#integraMgrInfoForm').bootstrapValidator('removeField', "stepGainPoints");
+            $('#integraMgrInfoForm').bootstrapValidator('removeField', "maxGainPoints");
+            $('#integraMgrInfoForm').bootstrapValidator('removeField', "yearly");
+            break;
+        case "2":
+            $(".planb").css("display", "block");
+            $('#integraMgrInfoForm').bootstrapValidator('addField', "stepNeedAmount", {validators: {notEmpty: {message: '请填写每新增量'}}});
+            $('#integraMgrInfoForm').bootstrapValidator('addField', "stepGainPoints", {validators: {notEmpty: {message: '请填写每新增获得积分'}}});
+            $('#integraMgrInfoForm').bootstrapValidator('addField', "maxGainPoints", {validators: {notEmpty: {message: '请填写积分上限'}}});
+            $('#integraMgrInfoForm').bootstrapValidator('addField', "yearly", {validators: {notEmpty: {message: '请选择累计积分方案'}}});
+            break;
+    }
+}
+
 /**
  * 提交添加
  */
@@ -92,7 +175,7 @@ IntegralItemMgrInfo.addSubmit = function () {
         return;
     }
 
-    var ajax = new $ax("/admin/integral_mgr/add", function (data) {
+    var ajax = new $ax("/admin/integral_mgr/addItem", function (data) {
         if (data.code == "200") {
             Feng.success(data.msg);
             window.parent.IntegralMgr.table.refresh();
@@ -116,7 +199,7 @@ IntegralItemMgrInfo.editSubmit = function () {
     if (!this.validate()) {
         return;
     }
-    var ajax = new $ax(Feng.ctxPath + "/admin/integral_mgr/edit", function (data) {
+    var ajax = new $ax(Feng.ctxPath + "/admin/integral_mgr/editItem", function (data) {
         if (data.code == "200") {
             Feng.success(data.msg);
             window.parent.IntegralMgr.table.refresh();

+ 5 - 5
public/static/modular/talentIdentify/integralMgr/integralItemMgr.js

@@ -75,7 +75,7 @@ IntegralItemMgr.openAddIntegralProject = function () {
         area: ['1126px', '420px'], //宽高
         fix: false, //不固定
         maxmin: true,
-        content: Feng.ctxPath + '/admin/integral_mgr/add'
+        content: Feng.ctxPath + '/admin/integral_mgr/addItem'
     });
     this.layerIndex = index;
 };
@@ -91,7 +91,7 @@ IntegralItemMgr.openEditIntegralProject = function () {
             area: ['1126px', '420px'], //宽高
             fix: false, //不固定
             maxmin: true,
-            content: Feng.ctxPath + '/admin/integral_mgr/edit/id/' + IntegralItemMgr.seItem.id
+            content: Feng.ctxPath + '/admin/integral_mgr/editItem/id/' + IntegralItemMgr.seItem.id
         });
         this.layerIndex = index;
     }
@@ -103,7 +103,7 @@ IntegralItemMgr.openEditIntegralProject = function () {
 IntegralItemMgr.delete = function () {
     if (this.check()) {
         var operation = function () {
-            var ajax = new $ax(Feng.ctxPath + "/admin/integral_mgr/delete/id/", function (data) {
+            var ajax = new $ax(Feng.ctxPath + "/admin/integral_mgr/deleteItem/id/", function (data) {
                 Feng.success("删除成功!");
                 IntegralItemMgr.table.refresh();
             }, function (data) {
@@ -112,7 +112,7 @@ IntegralItemMgr.delete = function () {
             ajax.set("id", IntegralItemMgr.seItem.id);
             ajax.start();
         }
-        Feng.confirm("是否刪除该积分项目(同时会删除其下包含的所有积分标准项)?", operation);
+        Feng.confirm("是否刪除该积分标准?", operation);
     }
 };
 
@@ -158,7 +158,7 @@ IntegralItemMgr.callBack = function (data) {
 
 $(function () {
     var defaultColunms = IntegralItemMgr.initColumn();
-    var table = new BSTable(IntegralItemMgr.id, "/admin/integral_mgr/list", defaultColunms);
+    var table = new BSTable(IntegralItemMgr.id, "/admin/integral_mgr/itemList", defaultColunms);
     table.setPaginationType("server");
     IntegralItemMgr.table = table.init();
 });