sugangqiang 2 سال پیش
والد
کامیت
43f70d9118

+ 12 - 3
app/common/api/IntegralRecordApi.php

@@ -34,9 +34,9 @@ class IntegralRecordApi {
         if (session("user")["usertype"] == 2) {
             $where[] = ["enterprise_id", "=", session("user")["uid"]];
         }
-        $where[] = ["delete", "=", 0];
+        $where[] = ["ir.delete", "=", 0];
         $count = IntegralRecord::alias("ir")->leftJoin("un_enterprise e", "e.id=ir.enterprise_id")->where($where)->count();
-        $list = IntegralRecord::where($where)->field("ir.*,if(ir.updateTime is not null,ir.updateTime,ir.createTime) as orderTime")->limit($offset, $limit)->order("orderTime " . $order)->select();
+        $list = IntegralRecord::alias("ir")->leftJoin("un_enterprise e", "e.id=ir.enterprise_id")->where($where)->field("ir.*,if(ir.updateTime is not null,ir.updateTime,ir.createTime) as orderTime")->limit($offset, $limit)->order("orderTime " . $order)->select();
         foreach ($list as $key => $item) {
             $list[$key]["apply_year"] = BatchApi::getOne($item["batch_id"])["batch"];
             $tmp_items = [];
@@ -103,7 +103,16 @@ class IntegralRecordApi {
         return $info;
     }
 
-    public static function calIntegral($enterprise_id, $cardType, $cardNumber, $itemId, $amount) {
+    /**
+     * 计算积分
+     * @param type $enterpriseId 企业id
+     * @param type $cardType 证件类型
+     * @param type $cardNumber 证件号码
+     * @param type $itemId 标准id
+     * @param type $amount 达成数额
+     * @return \stdClass 完整积分记录对象
+     */
+    public static function calIntegral($enterpriseId, $cardType, $cardNumber, $itemId, $amount) {
         $returnObj = new \stdClass();
         $returnObj->amount = $amount;
         $item = getCacheById("IntegralItem", $itemId);

+ 14 - 0
app/common/controller/Api.php

@@ -763,4 +763,18 @@ class Api extends BaseController {
         return json($list);
     }
 
+    public function calIntegral() {
+        $params = $this->request->param();
+        $enterpriseId = $params["enterpriseId"];
+        $cardType = $params["cardType"];
+        $cardNumber = $params["cardNumber"];
+        $itemId = $params["itemId"];
+        $amount = $params["amount"];
+        if (session("user")["usertype"] == 2) {
+            //企业端只能通过企业自身id来查询积分
+            $enterpriseId = session("user")["uid"];
+        }
+        return json(\app\common\api\IntegralRecordApi::calIntegral($enterpriseId, $cardType, $cardNumber, $itemId, $amount));
+    }
+
 }

+ 6 - 6
app/enterprise/view/integral/apply.html

@@ -96,7 +96,7 @@
                                                 <td>
                                                     <div class="rowGroup">
                                                         <label class=" control-label spacing td-label"><span style="color: red">*</span>证件类型</label>
-                                                        <select class="form-control" id="card_type" name="card_type" value="{$row.card_type}">
+                                                        <select class="form-control" id="card_type" name="card_type" value="{$row.card_type}" onchange="IntegralInfoDlg.multipleRefreshPoints();">
                                                             <option value="">请选择</option>
                                                             <option value="1">身份证</option>
                                                             <option value="2">通行证</option>
@@ -107,7 +107,7 @@
                                                 <td>
                                                     <div class="rowGroup">
                                                         <label class=" control-label spacing td-label"><span style="color: red">*</span>证件号码</span></label>
-                                                        <input class="form-control" id="card_number" name="card_number" value="{$row.card_number}">
+                                                        <input class="form-control" id="card_number" name="card_number" value="{$row.card_number}" onblur="IntegralInfoDlg.multipleRefreshPoints();">
                                                     </div>
                                                 </td>
                                                 <td>
@@ -193,13 +193,13 @@
                                                 <td>
                                                     <div class="rowGroup">
                                                         <label class="control-label spacing td-label"><span style="color: red">*</span>数额<span class="unit"></span></label>
-                                                        <input type="text" class="form-control" name="amount[]" value="{$item.amount}"/>
+                                                        <input type="text" class="form-control" name="amount[]" value="{$item.amount}" onkeyup="IntegralInfoDlg.onAmountChange(this);"/>
                                                     </div>
                                                 </td>
                                                 <td>
                                                     <div class="rowGroup">
                                                         <label class=" control-label spacing td-label">预估积分</label>
-                                                        <div class="form-control" style="border: none">{$item.integral}</div>
+                                                        <div class="form-control points" style="border: none">{$item.integral}</div>
                                                     </div>
                                                 </td>
                                             </tr>
@@ -249,13 +249,13 @@
                                                 <td>
                                                     <div class="rowGroup">
                                                         <label class="control-label spacing td-label"><span style="color: red">*</span>数额<span class="unit"></span></label>
-                                                        <input type="text" class="form-control" name="amount[]" value="{$row.amount}"/>
+                                                        <input type="text" class="form-control" name="amount[]" value="{$row.amount}" onkeyup="IntegralInfoDlg.calIntegral(this);"/>
                                                     </div>
                                                 </td>
                                                 <td>
                                                     <div class="rowGroup">
                                                         <label class=" control-label spacing td-label">预估积分</label>
-                                                        <div class="form-control" style="border: none">-</div>
+                                                        <div class="form-control points" style="border: none">-</div>
                                                     </div>
                                                 </td>
                                             </tr>

+ 51 - 1
public/static/modular/gate/integral/integralInfo.js

@@ -177,9 +177,15 @@ IntegralInfoDlg.addItem = function () {
             '                                 <td>' +
             '                                     <div class="rowGroup">' +
             '                                         <label class="control-label spacing td-label"><span style="color: red">*</span>数额<span class="unit"></span></label>' +
-            '                                         <input type="text" class="form-control" name="amount[]" value=""/>' +
+            '                                         <input type="text" class="form-control" name="amount[]" value="" onkeyup="IntegralInfoDlg.calIntegral(this);"/>' +
             '                                     </div>' +
             '                                 </td>' +
+            '                                 <td>' +
+            '                                     <div class="rowGroup">' +
+            '                                         <label class=" control-label spacing td-label">预估积分</label>' +
+            '                                         <div class="form-control points" style="border: none">-</div>' +
+            '                                     </div>' +
+            '                                  </td>' +
             '                             </tr>' +
             '                         </table>';
     /*
@@ -285,6 +291,7 @@ IntegralInfoDlg.onProjectTypeChange = function (obj) {
         "type": "GET",
         "url": "/common/api/getIntegralProjectsByType/projectType/" + projectType
     });
+    IntegralInfoDlg.calIntegral(obj);
 }
 IntegralInfoDlg.onProjectChange = function (obj) {
     var projectId = $(obj).val();
@@ -298,6 +305,7 @@ IntegralInfoDlg.onProjectChange = function (obj) {
             "type": "GET",
             "url": "/common/api/getIntegralItemsByProject/projectId/" + projectId
         });
+        IntegralInfoDlg.calIntegral(obj);
     }
 }
 IntegralInfoDlg.onItemChange = function (obj) {
@@ -309,6 +317,48 @@ IntegralInfoDlg.onItemChange = function (obj) {
         parent.find(".unit").html("");
     }
     IntegralInfoDlg.changeAndLoadFile();
+    IntegralInfoDlg.calIntegral(obj);
+}
+IntegralInfoDlg.timeout = null;
+IntegralInfoDlg.onAmountChange = function (obj) {
+    clearTimeout(timeout);
+    IntegralInfoDlg.timeout = setTimeout(function () {
+        IntegralInfoDlg.calIntegral(obj);
+    }, 500);
+}
+IntegralInfoDlg.calIntegral = function (obj) {
+    var parent = $(obj).parents("table");
+    var cardType = $("#card_type").val();
+    var cardNumber = $("#card_number").val();
+    var itemId = parent.find("select[name='item_id[]']").val();
+    var amount = parent.find("input[name='amount[]']").val();
+    var cardTypeArr = ["1", "2", "3"];
+    if (cardTypeArr.indexOf(cardType) > -1 && cardNumber != "" && itemId > 0 && !isNaN(amount) && amount != "") {
+        //条件齐全就可以查询积分        
+        var ajax = new $ax(Feng.ctxPath + "/common/api/calIntegral", function (data) {
+            let point1 = typeof data.projectRemainderPoints != "undefined" ? (data.projectRemainderPoints > data.points ? data.points : data.projectRemainderPoints) : data.points;
+            let point2 = typeof data.itemRemainderPoints != "undefined" ? (data.itemRemainderPoints > data.points ? data.points : data.itemRemainderPoints) : data.points;
+            let points = point1 > point2 ? point2 : point1;
+            parent.find(".points").html(points);
+        }, function (data) {
+            Feng.error("预估积分失败!" + data.responseJSON.message + "!");
+        });
+        ajax.set("cardType", cardType);
+        ajax.set("cardNumber", cardNumber);
+        ajax.set("itemId", itemId);
+        ajax.set("amount", amount);
+        ajax.start();
+    } else {
+        parent.find(".points").html("-");
+    }
+}
+
+IntegralInfoDlg.multipleRefreshPoints = function () {
+    var count = $("#itemList").find("table").length;
+    for (var i = 0; i < count; i++) {
+        var table = $("#itemList").find("table").eq(i);
+        IntegralInfoDlg.calIntegral(table.find(".points")[0]);
+    }
 }
 
 /**