瀏覽代碼

积分项目标准++

sugangqiang 2 年之前
父節點
當前提交
96ae307a0b

+ 19 - 4
app/admin/controller/IntegralMgr.php

@@ -56,6 +56,9 @@ class IntegralMgr extends AdminController {
         if (!$params["projectType"]) {
             return json(["msg" => "请选择项目类别"]);
         }
+        if (!$params["active"]) {
+            return json(["msg" => "请设置启用状态"]);
+        }
         if (!$params["limit"]) {
             return json(["msg" => "请选择是否上限"]);
         }
@@ -70,9 +73,6 @@ class IntegralMgr extends AdminController {
                 return json(["msg" => "积分上限必需是大于0的整数"]);
             }
         }
-        if (!$params["active"]) {
-            return json(["msg" => "请设置启用状态"]);
-        }
         if (IntegralProjectApi::chkExist($params["name"], $params["type"], $params["projectType"], $params["id"]))
             return json(["msg" => "项目名称已经被使用"]);
         $resultStr = $params["id"] ? "编辑" : "添加";
@@ -136,7 +136,7 @@ class IntegralMgr extends AdminController {
             return json(["msg" => "请输入首次达成量"]);
         }
         if (!$params["fstGainPoints"]) {
-            return json(["msg" => "请输入首次获得积分"]);
+            //return json(["msg" => "请输入首次获得积分"]);
         }
         if ($params["plan"] == 2) {
             if (!$params["stepNeedAmount"]) {
@@ -146,6 +146,20 @@ class IntegralMgr extends AdminController {
                 return json(["msg" => "请输入每新增获得积分"]);
             }
         }
+        if (!$params["limit"]) {
+            return json(["msg" => "请选择是否上限"]);
+        }
+        if ($params["limit"] == 1) {
+            if (!$params["yearly"]) {
+                return json(["msg" => "请选择上限方案"]);
+            }
+            if (!$params["max"]) {
+                return json(["msg" => "请填写积分上限"]);
+            }
+            if (!is_numeric($params["max"]) || $params["max"] < 1 || $params["max"] != floor($params["max"])) {
+                return json(["msg" => "积分上限必需是大于0的整数"]);
+            }
+        }
         if (IntegralItemApi::chkExist($params["name"], $params["projectId"], $params["id"]))
             return json(["msg" => "名称已经被使用"]);
         $resultStr = $params["id"] ? "编辑" : "添加";
@@ -165,6 +179,7 @@ class IntegralMgr extends AdminController {
 
     public function getProjectsByType() {
         $type = $this->request->param("type") ?: 0;
+        $projectType = $this->request->param("projectType") ?: 0;
         $where[] = ["type", "=", $type];
         $where[] = ["active", "=", 1];
         $list = IntegralProjectApi::getAll($where);

+ 1 - 1
app/admin/view/integral_mgr/items.html

@@ -74,7 +74,7 @@
 
                             </div>
                         </div>
-                        <div class="hidden-xs" id="IntegralMgrTableToolbar" role="group">
+                        <div class="hidden-xs" id="IntegralItemMgrTableToolbar" role="group">
                             {if condition="chkCommission('/admin/integral_mgr/addItem','')"}
                                 <button type="button" class="btn btn-sm btn-primary " onclick="IntegralItemMgr.openAddIntegralItem()">
                                     <i class="fa fa-plus"></i>&nbsp;添加

+ 6 - 6
app/admin/view/integral_mgr/save.html

@@ -25,12 +25,6 @@
                                     <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="name" name="name" value="{$row.name}">
-                            </div>
-                        </div>
-                        <div class="rowGroup">
                             <label class="col-sm-2 control-label spacing">项目类别</label>
                             <div class="col-sm-4 spacing">
                                 <select class="form-control" id="projectType" name="projectType" selectVal="{$row.projectType}">
@@ -40,6 +34,12 @@
                                     <option value="3">资历分</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="name" value="{$row.name}">
+                            </div>
                             <label class="col-sm-2 control-label spacing">是否上限</label>
                             <div class="col-sm-4 spacing">
                                 <select class="form-control" id="limit" name="limit" selectVal="{$row.limit}" onchange="IntegralMgrInfo.onLimitChange();">

+ 21 - 0
app/admin/view/integral_mgr/save_item.html

@@ -89,6 +89,27 @@
                                     {/volist}
                                 </select>
                             </div>
+                            <label class="col-sm-2 control-label spacing">是否上限</label>
+                            <div class="col-sm-4 spacing">
+                                <select class="form-control" id="limit" name="limit" selectVal="{$row.limit}" onchange="IntegralItemMgrInfo.onLimitChange();">
+                                    <option value="1">开启</option>
+                                    <option value="2">关闭</option>
+                                </select>
+                            </div>
+                        </div>
+                        <div class="rowGroup limit-setting" style="display:none;">
+                            <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}">
+                                    <option value="">请选择</option>
+                                    <option value="1">年度重置</option>
+                                    <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="max" name="max" value="{$row.max}">
+                            </div>
                         </div>
                     </div>
                 </form>

+ 11 - 3
app/common/api/IntegralItemApi.php

@@ -29,14 +29,14 @@ class IntegralItemApi {
         }
         $count = IntegralItem::alias("i")->leftJoin("new_integral_project p", "p.id=i.projectId")->where($where)->count();
         $list = IntegralItem::alias("i")->leftJoin("new_integral_project p", "p.id=i.projectId")->where($where)
-                        ->field("i.*,p.type,p.name as projectName,p.projectType")
-                        ->limit($offset, $limit)->order("i.updateTime desc,i.createTime desc")->select()->toArray();
+                        ->field("i.*,p.type,p.name as projectName,p.projectType,if(i.updateTime is null,i.createTime,i.updateTime) as orderTime")
+                        ->limit($offset, $limit)->order("orderTime desc")->select()->toArray();
         return ["total" => $count, "rows" => $list];
     }
 
     public static function getAll($where = []) {
         $where[] = ["delete", "=", 0];
-        $list = IntegralItem::where($where)->order("updateTime desc,createTime desc")->select()->toArray();
+        $list = IntegralItem::where($where)->field("*,if(updateTime is null,createTime,updateTime) as orderTime")->order("orderTime desc")->select()->toArray();
         return $list;
     }
 
@@ -56,6 +56,14 @@ class IntegralItemApi {
             $data["stepNeedAmount"] = 0;
             $data["stepGainPoints"] = 0;
         }
+        $data["limit"] = $params["limit"];
+        if ($data["limit"] == 1) {
+            $data["yearly"] = $params["yearly"];
+            $data["max"] = $params["max"];
+        } else {
+            $data["yearly"] = 0;
+            $data["max"] = 0;
+        }
         if ($params["id"]) {
             $item = $model->find($params["id"]);
             $data["updateTime"] = date("Y-m-d H:i:s");

+ 1 - 1
app/common/api/IntegralProjectApi.php

@@ -34,7 +34,7 @@ class IntegralProjectApi {
 
     public static function getAll($where = []) {
         $where[] = ["delete", "=", 0];
-        $list = IntegralProject::where($where)->order("updateTime desc,createTime desc")->select()->toArray();
+        $list = IntegralProject::where($where)->field("*,if(updateTime is null,createTime,updateTime) as orderTime")->order("orderTime desc")->select()->toArray();
         return $list;
     }
 

+ 19 - 0
public/static/modular/talentIdentify/integralMgr/IntegralItemMgr_info.js

@@ -121,6 +121,9 @@ IntegralItemMgrInfo.collectData = function () {
             .set('stepNeedAmount')
             .set('stepGainPoints')
             .set('fileTypeId')
+            .set('limit')
+            .set('yearly')
+            .set('max')
             .set('active');
 }
 
@@ -162,6 +165,21 @@ IntegralItemMgrInfo.onIntegralPlanChange = function () {
     }
 }
 
+IntegralItemMgrInfo.onLimitChange = function () {
+    var limit = $("#limit").val();
+    switch (limit) {
+        case "1":
+            $('#integraMgrInfoForm').bootstrapValidator('addField', "yearly", {validators: {notEmpty: {message: '请选择上限方案'}}});
+            $('#integraMgrInfoForm').bootstrapValidator('addField', "max", {validators: {notEmpty: {message: '请填写积分上限'}}});
+            $(".limit-setting").css("display", "block");
+            break;
+        default:
+            $('#integraMgrInfoForm').bootstrapValidator('removeField', "yearly");
+            $('#integraMgrInfoForm').bootstrapValidator('removeField', "max");
+            $(".limit-setting").css("display", "none");
+    }
+}
+
 /**
  * 提交添加
  */
@@ -228,6 +246,7 @@ $(function () {
     });
     IntegralItemMgrInfo.onTypeChange();
     IntegralItemMgrInfo.onIntegralPlanChange();
+    IntegralItemMgrInfo.onLimitChange();
 
     $("#fileTypeId").chosen({
         no_results_text: "没有找到结果!",

+ 1 - 7
public/static/modular/talentIdentify/integralMgr/IntegralMgr_info.js

@@ -25,13 +25,6 @@ var IntegralMgrInfo = {
                 }
             }
         },
-        limit: {
-            validators: {
-                notEmpty: {
-                    message: '请选择是否上限'
-                }
-            }
-        },
         active: {
             validators: {
                 notEmpty: {
@@ -171,4 +164,5 @@ $(function () {
     $("select").each(function () {
         $(this).val($(this).attr("selectVal"));
     });
+    IntegralMgrInfo.onLimitChange();
 });

+ 19 - 0
public/static/modular/talentIdentify/integralMgr/integralItemMgr.js

@@ -52,6 +52,25 @@ IntegralItemMgr.initColumn = function () {
                 }
             }
         },
+        {title: '上限设置', field: 'limit', visible: true, align: 'center', valign: 'middle',
+            formatter: function (value, row, index) {
+                switch (value) {
+                    case 1:
+                        var limitStr = "上限" + row.max;
+                        switch (row.yearly) {
+                            case 1:
+                                limitStr += "(年度重置)";
+                                break;
+                            case 2:
+                                limitStr += "(不重置)";
+                                break;
+                        }
+                        return "<button type=\"button\" style=\"line-height: 1.3\" class=\"btn btn-primary btn-xs\">" + limitStr + "</button>";
+                    default:
+                        return "<button type=\"button\" style=\"line-height: 1.3\" class=\"btn btn-warning btn-xs\">关闭</button>";
+                }
+            }
+        },
         {title: '是否启用', field: 'active', visible: true, align: 'center', valign: 'middle',
             formatter: function (value, row, index) {
                 if (value == 1) {