Эх сурвалжийг харах

选择重审部门(未全部完成)

sugangqiang 2 жил өмнө
parent
commit
6e8027ca78

+ 37 - 7
app/admin/controller/Talent.php

@@ -17,6 +17,7 @@ use app\admin\model\User;
 use app\common\api\MenuApi;
 use app\common\api\MenuApi;
 use app\admin\model\Menu;
 use app\admin\model\Menu;
 use app\admin\model\SysRelation;
 use app\admin\model\SysRelation;
+use app\common\api\CompanyApi;
 
 
 /**
 /**
  * Description of Talent
  * Description of Talent
@@ -776,9 +777,25 @@ class Talent extends AdminController {
         } else if ($params["checkState"] == 4) {
         } else if ($params["checkState"] == 4) {
             if ($talent_info["highProcess"] < 4)
             if ($talent_info["highProcess"] < 4)
                 return json(["msg" => "只有曾经通过部门并审,初审时才可以选择直接跳过部门并审阶段"]);
                 return json(["msg" => "只有曾经通过部门并审,初审时才可以选择直接跳过部门并审阶段"]);
-//审核成功,并设置越过部门并审。附加条件:最高进度曾经通过部门并审3(包含部门并审)
+//审核成功,并设置越过部门并审。附加条件:最高进度曾经通过部门并审4(包含部门并审)
             $log_checkState = $checkState = TalentState::FST_VERIFY_PASS; //初审成功
             $log_checkState = $checkState = TalentState::FST_VERIFY_PASS; //初审成功
             $data["pass_dept_check"] = $talent_info["highProcess"] >= 4 ? 1 : 0;
             $data["pass_dept_check"] = $talent_info["highProcess"] >= 4 ? 1 : 0;
+        } else if ($params["checkState"] == 5) {
+            //选择重审部门
+            if ($talent_info["highProcess"] < 4)
+                return json(["msg" => "只有曾经通过部门并审,初审时才可以选择再次审核的部门"]);
+            if (!$params["companys"])
+                return json(["msg" => "请选择需要再次审核的部门"]);
+            $condition = TalentConditionApi::getOne($talent_info["talent_condition"]);
+            $companyIds = array_filter(explode(",", $condition["companyIds"])); //该条件下需要审核的所有单位
+            $re_check_companys = array_filter(explode(",", $talent_info["re_check_companys"]));
+            foreach ($re_check_companys as $reCompanyId) {
+                if (!in_array($reCompanyId, $companyIds)) {
+                    return json(["msg" => "错误的部门"]);
+                }
+            }
+            $log_checkState = $checkState = TalentState::FST_VERIFY_PASS; //初审成功
+            $data["pass_dept_check"] = 0;
         } else {
         } else {
 //审核驳回并记录需要修改的字段和上传文件
 //审核驳回并记录需要修改的字段和上传文件
             $checkState = TalentState::SCND_SAVE; //退回材料编辑状态
             $checkState = TalentState::SCND_SAVE; //退回材料编辑状态
@@ -795,6 +812,7 @@ class Talent extends AdminController {
         $data["id"] = $talent_info["id"];
         $data["id"] = $talent_info["id"];
         $data["modify_files"] = $params["files"];
         $data["modify_files"] = $params["files"];
         $data["modify_fields"] = $params["fields"];
         $data["modify_fields"] = $params["fields"];
+        $data["re_check_companys"] = $params["companys"];
         TalentModel::update($data);
         TalentModel::update($data);
         return json(["code" => 200, "msg" => "保存成功"]);
         return json(["code" => 200, "msg" => "保存成功"]);
     }
     }
@@ -817,12 +835,17 @@ class Talent extends AdminController {
             $data["first_dept_check_time"] = date("Y-m-d H:i:s");
             $data["first_dept_check_time"] = date("Y-m-d H:i:s");
             $condition = TalentConditionApi::getOne($talent_info["talent_condition"]);
             $condition = TalentConditionApi::getOne($talent_info["talent_condition"]);
             $companyIds = array_filter(explode(",", $condition["companyIds"])); //该条件下需要审核的所有单位
             $companyIds = array_filter(explode(",", $condition["companyIds"])); //该条件下需要审核的所有单位
-//这边去除已经审核通过的单位,主要通过日志是否存在记录。
-            $pass_companyIds = TalentLogApi::getPassDepts($talent_info["id"]); //已经通过的单位
-            $unpass_companyIds = array_diff($companyIds, (array) $pass_companyIds); //排除已经通过的单位
-            if (!$unpass_companyIds) {
-                $data["pass_dept_check"] = 1; //部门已经全部审核过了,跳过部门审核
+            if ($talent_info["re_check_companys"]) {
+                $unpass_companyIds = array_filter(explode(",", $talent_info["re_check_companys"]));
             } else {
             } else {
+//这边去除已经审核通过的单位,主要通过日志是否存在记录。
+                $pass_companyIds = TalentLogApi::getPassDepts($talent_info["id"]); //已经通过的单位
+                $unpass_companyIds = array_diff($companyIds, (array) $pass_companyIds); //排除已经通过的单位
+                if (!$unpass_companyIds) {
+                    $data["pass_dept_check"] = 1; //部门已经全部审核过了,跳过部门审核
+                }
+            }
+            if ($unpass_companyIds) {
                 sort($unpass_companyIds);
                 sort($unpass_companyIds);
                 TalentLogApi::writeDeptLogs($talent_info["id"], $unpass_companyIds, TalentState::FST_VERIFY_PASS);
                 TalentLogApi::writeDeptLogs($talent_info["id"], $unpass_companyIds, TalentState::FST_VERIFY_PASS);
 
 
@@ -963,6 +986,7 @@ class Talent extends AdminController {
             $data["id"] = $talent_info["id"];
             $data["id"] = $talent_info["id"];
             $data["checkState"] = $checkState;
             $data["checkState"] = $checkState;
             $data["first_dept_check_time"] = null;
             $data["first_dept_check_time"] = null;
+            $data["re_check_companys"] = null;
             TalentModel::update($data);
             TalentModel::update($data);
             TalentLogApi::write(1, $talent_info["id"], [$log_checkState, $checkState], "部门审核结束", 1);
             TalentLogApi::write(1, $talent_info["id"], [$log_checkState, $checkState], "部门审核结束", 1);
             if ($log_checkState == TalentState::DEPT_VERIFY_REJECT) {
             if ($log_checkState == TalentState::DEPT_VERIFY_REJECT) {
@@ -1335,6 +1359,12 @@ class Talent extends AdminController {
                         }
                         }
                     }
                     }
                     $condition = TalentConditionApi::getOne($talent_info["talent_condition"]);
                     $condition = TalentConditionApi::getOne($talent_info["talent_condition"]);
+                    $companys = array_filter(explode(",", $condition["companyIds"]));
+                    $_companys = [];
+                    foreach ($companys as $companyId) {
+                        $company = CompanyApi::getOne($companyId);
+                        $_companys[] = $company;
+                    }
                     if ($process == 4 && $enterprise["type"] == 1) {
                     if ($process == 4 && $enterprise["type"] == 1) {
                         $where = [];
                         $where = [];
                         $where[] = ["delete", "=", 0];
                         $where[] = ["delete", "=", 0];
@@ -1372,7 +1402,7 @@ class Talent extends AdminController {
                 }
                 }
                 $talent_info["files"] = array_filter(explode(",", $talent_info["modify_files"]));
                 $talent_info["files"] = array_filter(explode(",", $talent_info["modify_files"]));
                 $talent_info["fields"] = array_filter(explode(",", $talent_info["modify_fields"]));
                 $talent_info["fields"] = array_filter(explode(",", $talent_info["modify_fields"]));
-                return json(["code" => 200, "obj" => ["process" => $process, "talentInfo" => $talent_info, "fieldList" => $field_tmp, "fileList" => $files]]);
+                return json(["code" => 200, "obj" => ["process" => $process, "talentInfo" => $talent_info, "fieldList" => $field_tmp, "fileList" => $files, "companys" => $_companys]]);
             } else {
             } else {
                 return json(["msg" => "该申报不在审核范围内,无法审核"]);
                 return json(["msg" => "该申报不在审核范围内,无法审核"]);
             }
             }

+ 10 - 1
app/common/api/TalentLogApi.php

@@ -30,6 +30,15 @@ class TalentLogApi {
         return TalentLog::where($where)->column("companyId");
         return TalentLog::where($where)->column("companyId");
     }
     }
 
 
+    public static function getUnCheckDepts($mainId) {
+        $where[] = ["type", "=", 1];
+        $where[] = ["mainId", "=", $mainId];
+        $where[] = ["active", "=", 0];
+        $where[] = ["step", "=", 3];
+        $where[] = ["new_state", "in", [TalentState::DEPT_VERIFY_PASS, TalentState::FST_VERIFY_PASS]];
+        return TalentLog::where($where)->column("companyId");
+    }
+
     public static function getFstLog($mainId, $type) {
     public static function getFstLog($mainId, $type) {
         $where = [];
         $where = [];
         $where[] = ["mainId", "=", $mainId];
         $where[] = ["mainId", "=", $mainId];
@@ -60,7 +69,7 @@ class TalentLogApi {
         $where[] = ["mainId", "=", $mainId];
         $where[] = ["mainId", "=", $mainId];
         $where[] = ["step", "=", 3];
         $where[] = ["step", "=", 3];
         $where[] = ["companyId", "=", $companyId];
         $where[] = ["companyId", "=", $companyId];
-        $where[] = ["active", "=", 1];
+        //$where[] = ["active", "=", 1];
         $one = TalentLog::where($where)->order("createTime desc")->findOrEmpty();
         $one = TalentLog::where($where)->order("createTime desc")->findOrEmpty();
         return $one;
         return $one;
     }
     }

+ 4 - 3
app/index/controller/Auth.php

@@ -74,11 +74,12 @@ class Auth extends BaseController {
             if (!$msg) {
             if (!$msg) {
                 $user->setSession();
                 $user->setSession();
                 $redirect_url = cookie("redirect");
                 $redirect_url = cookie("redirect");
-                if ($redirect_url) {
-                    cookie("redirect", null);
+                cookie("redirect", null);
+                if ($redirect_url && strpos(strtolower($redirect_url), strtolower(getHostWithProtocol() . $url)) === 0) {
                     return redirect($redirect_url);
                     return redirect($redirect_url);
+                } else {
+                    return redirect($url);
                 }
                 }
-                return redirect($url);
             }
             }
         }
         }
         return view("", ["msg" => $msg]);
         return view("", ["msg" => $msg]);

+ 39 - 7
public/static/modular/talentIdentify/talentInfo/talentInfo_common_check.js

@@ -370,6 +370,7 @@ TalentInfoInfoDlg.showFirstCheckModal = function () {
                 success: function (layero, index) {
                 success: function (layero, index) {
                     layer.setTop(layero);
                     layer.setTop(layero);
                     var obj = data.obj.talentInfo;
                     var obj = data.obj.talentInfo;
+                    var companyList = data.obj.companys;
                     var fileList = data.obj.fileList;
                     var fileList = data.obj.fileList;
                     var process = data.obj.process;
                     var process = data.obj.process;
                     if (typeof data.obj.fieldList != "undefined" && data.obj.fieldList.length > 0) {
                     if (typeof data.obj.fieldList != "undefined" && data.obj.fieldList.length > 0) {
@@ -383,13 +384,18 @@ TalentInfoInfoDlg.showFirstCheckModal = function () {
                     for (var key in fileList) {
                     for (var key in fileList) {
                         html2 = html2 + '<ul><li style="width: 100%"><input type="checkbox" value="' + fileList[key].id + '"><span>' + fileList[key].name + '</span></li></ul>';
                         html2 = html2 + '<ul><li style="width: 100%"><input type="checkbox" value="' + fileList[key].id + '"><span>' + fileList[key].name + '</span></li></ul>';
                     }
                     }
-                    $("#field_info ul").css("overflow","hidden").empty().append(html1);
-                    $("#field_file").css("overflow","hidden").empty().append(html2);
+                    var html3 = '';
+                    for (var key in companyList) {
+                        html3 += '<li style="width: 100%"><input type="checkbox" value="' + companyList[key].id + '"><span>' + companyList[key].name + '</span></li>';
+                    }
+                    $("#field_info ul").css("overflow", "hidden").empty().append(html1);
+                    $("#field_file").css("overflow", "hidden").empty().append(html2);
+                    $("#company_list ul").css("overflow", "hidden").empty().append(html3);
                     var optionHtml = "";
                     var optionHtml = "";
                     if (process <= 4 && process != 2) {
                     if (process <= 4 && process != 2) {
                         optionHtml = '<option value="">请选择</option>\n' +
                         optionHtml = '<option value="">请选择</option>\n' +
-                                '                            <option value="3">审核通过</option>\n' +
-                                (obj.highProcess >= 4 && process == 3 ? '<option value="4">审核通过(跳过部门并审)</option>\n' : "") +
+                                (obj.highProcess == 4 && process == 3 ? '<option value="5">审核通过(需要再次部门并审)</option>\n' : '<option value="3">审核通过</option>') +
+                                (obj.highProcess == 4 && process == 3 ? '<option value="4">审核通过(跳过部门并审)</option>\n' : "") +
                                 '                            <option value="2">审核驳回</option>\n';
                                 '                            <option value="2">审核驳回</option>\n';
                     }
                     }
                     if (process == 5 || process == 2) {
                     if (process == 5 || process == 2) {
@@ -458,15 +464,19 @@ TalentInfoInfoDlg.toggledepField = function () {
 TalentInfoInfoDlg.toggleField = function () {
 TalentInfoInfoDlg.toggleField = function () {
     var checkState = $("#checkStateFirstModal").val();
     var checkState = $("#checkStateFirstModal").val();
     var checkMsgFirst = $("#checkMsgFirst").val();
     var checkMsgFirst = $("#checkMsgFirst").val();
+    $("#company_list").hide();
     if (checkState == 2) {
     if (checkState == 2) {
         $("#field").show();
         $("#field").show();
         $("#checkMsgFirst").val("");
         $("#checkMsgFirst").val("");
-    } else if (checkState == 3 || checkState == 4) {
+    } else if (checkState == 3 || checkState == 4 || checkState == 5) {
         $("#field").hide();
         $("#field").hide();
         $("#field").find("input[type=checkbox]").removeAttr("checked");
         $("#field").find("input[type=checkbox]").removeAttr("checked");
         if (checkMsgFirst == null || checkMsgFirst == '') {
         if (checkMsgFirst == null || checkMsgFirst == '') {
             $("#checkMsgFirst").val("审核通过");
             $("#checkMsgFirst").val("审核通过");
         }
         }
+        if (checkState == 5) {
+            $("#company_list").show();
+        }
     } else if (checkState == -1) {
     } else if (checkState == -1) {
         $("#field").hide();
         $("#field").hide();
         $("#checkMsgFirst").val("审核不通过");
         $("#checkMsgFirst").val("审核不通过");
@@ -545,6 +555,7 @@ TalentInfoInfoDlg.firstCheck = function (i) {
     }
     }
     var fields = '';
     var fields = '';
     var files = '';
     var files = '';
+    var companys = '';
     $("#field_info li input").each(function (index) {
     $("#field_info li input").each(function (index) {
         if ($(this).is(":checked")) {
         if ($(this).is(":checked")) {
             fields = fields + $(this).val() + ",";
             fields = fields + $(this).val() + ",";
@@ -555,10 +566,19 @@ TalentInfoInfoDlg.firstCheck = function (i) {
             files = files + $(this).val() + ",";
             files = files + $(this).val() + ",";
         }
         }
     });
     });
+    $("#company_list li input").each(function (index) {
+        if ($(this).is(":checked")) {
+            companys += $(this).val() + ",";
+        }
+    });
     if (checkState == 2 && fields == '' && files == '') {
     if (checkState == 2 && fields == '' && files == '') {
         Feng.info("请选择可修改的字段或附件!");
         Feng.info("请选择可修改的字段或附件!");
         return;
         return;
     }
     }
+    if(checkState == 5 && companys == ""){
+        Feng.info("请选择需要再次审核的部门!");
+        return;
+    }
     if (locked)
     if (locked)
         return;
         return;
     locked = true;
     locked = true;
@@ -576,7 +596,7 @@ TalentInfoInfoDlg.firstCheck = function (i) {
         locked = false;
         locked = false;
     });
     });
     ajax.setData({"id": $("#id").val(), "checkState": checkState, "checkMsg": checkMsg,
     ajax.setData({"id": $("#id").val(), "checkState": checkState, "checkMsg": checkMsg,
-        "process": $("#process").val(), "fields": fields, "files": files})
+        "process": $("#process").val(), "fields": fields, "files": files, "companys": companys})
     ajax.start();
     ajax.start();
 }
 }
 
 
@@ -635,6 +655,12 @@ TalentInfoInfoDlg.creatFieldCheckModal = function () {
                 '                    <div class="form-group" style="margin: 10px;">\n' +
                 '                    <div class="form-group" style="margin: 10px;">\n' +
                 '                        <label for="checkMsg" class="control-label" >审核意见</label>\n' +
                 '                        <label for="checkMsg" class="control-label" >审核意见</label>\n' +
                 '                        <textarea class="form-control" id="checkMsgFirst" placeholder="审核状态属“审核通过”的,仅代表此步骤已操作完成,不代表用户提交的信息符合认定条件。若不符合认定条件的,请写明不符合原因。" rows="6"></textarea>\n' +
                 '                        <textarea class="form-control" id="checkMsgFirst" placeholder="审核状态属“审核通过”的,仅代表此步骤已操作完成,不代表用户提交的信息符合认定条件。若不符合认定条件的,请写明不符合原因。" rows="6"></textarea>\n' +
+                '                        <div id="company_list" style="padding-top:5px;display:none;">\n' +
+                '                            <label for="checkMsg" class="control-label">选择需要再次审核的部门</label>\n' +
+                '                            <div id="companys">' +
+                '                               <ul style="overflow:hidden;list-style:none;"></ul>' +
+                '                            </div>' +
+                '                        </div>\n' +
                 '                        <div id="field" style="padding-top: 5px;display: none">\n' +
                 '                        <div id="field" style="padding-top: 5px;display: none">\n' +
                 '                            <label for="checkMsg" class="control-label">可修改字段</label>\n' +
                 '                            <label for="checkMsg" class="control-label">可修改字段</label>\n' +
                 '                            <div id="field_info">\n' +
                 '                            <div id="field_info">\n' +
@@ -703,10 +729,16 @@ TalentInfoInfoDlg.creatFieldCheckModal = function () {
                 '                    <div class="form-group" style="margin: 10px;">\n' +
                 '                    <div class="form-group" style="margin: 10px;">\n' +
                 '                        <label for="checkMsg" class="control-label" >审核意见</label>\n' +
                 '                        <label for="checkMsg" class="control-label" >审核意见</label>\n' +
                 '                        <textarea class="form-control" id="checkMsgFirst" placeholder="审核状态属“审核通过”的,仅代表此步骤已操作完成,不代表用户提交的信息符合认定条件。若不符合认定条件的,请写明不符合原因。" rows="6"></textarea>\n' +
                 '                        <textarea class="form-control" id="checkMsgFirst" placeholder="审核状态属“审核通过”的,仅代表此步骤已操作完成,不代表用户提交的信息符合认定条件。若不符合认定条件的,请写明不符合原因。" rows="6"></textarea>\n' +
+                '                        <div id="company_list" style="padding-top:5px;display:none;">\n' +
+                '                            <label for="checkMsg" class="control-label">选择需要再次审核的部门</label>\n' +
+                '                            <div id="companys">' +
+                '                               <ul style="overflow:hidden;list-style:none;"></ul>' +
+                '                            </div>' +
+                '                        </div>\n' +
                 '                        <div id="field" style="padding-top: 5px;display: none">\n' +
                 '                        <div id="field" style="padding-top: 5px;display: none">\n' +
                 '                            <label for="checkMsg" class="control-label">可修改字段</label>\n' +
                 '                            <label for="checkMsg" class="control-label">可修改字段</label>\n' +
                 '                            <div id="field_info">\n' +
                 '                            <div id="field_info">\n' +
-                '                                <ul>\n' +
+                '                                <ul style="overflow:hidden;list-style:none;">\n' +
                 '                                <li style="width:10%"><input type="checkbox" value="name"><span>姓名</span></li>\n' +
                 '                                <li style="width:10%"><input type="checkbox" value="name"><span>姓名</span></li>\n' +
                 '                                <li style="width:10%"><input type="checkbox" value="sex"><span>性别</span></li>\n' +
                 '                                <li style="width:10%"><input type="checkbox" value="sex"><span>性别</span></li>\n' +
                 '                                <li style="width:10%"><input type="checkbox" value="birthday"><span>出生日期</span></li>\n' +
                 '                                <li style="width:10%"><input type="checkbox" value="birthday"><span>出生日期</span></li>\n' +