瀏覽代碼

Merge remote-tracking branch 'origin/master'

sandm 1 年之前
父節點
當前提交
6074e53422

+ 22 - 3
app/admin/controller/Talent.php

@@ -1852,6 +1852,7 @@ class Talent extends AdminController {
             $responseObj->id = $id;
             $responseObj->id = $id;
             $responseObj->fileList = $files;
             $responseObj->fileList = $files;
             $responseObj->fieldList = $field_tmp;
             $responseObj->fieldList = $field_tmp;
+            $responseObj->checkMsg = $lastLog["description"];
             $responseObj->select = [
             $responseObj->select = [
                 "files" => array_filter(explode(",", $talentInfo["modify_files"])),
                 "files" => array_filter(explode(",", $talentInfo["modify_files"])),
                 "fields" => array_filter(explode(",", $talentInfo["modify_fields"]))
                 "fields" => array_filter(explode(",", $talentInfo["modify_fields"]))
@@ -1870,10 +1871,12 @@ class Talent extends AdminController {
         $id = $this->request["id"];
         $id = $this->request["id"];
         $fields = array_filter(explode(",", $this->request["fields"]));
         $fields = array_filter(explode(",", $this->request["fields"]));
         $files = array_filter(explode(",", $this->request["files"]));
         $files = array_filter(explode(",", $this->request["files"]));
+        $checkMsg = \StrUtil::getRequestDecodeParam($this->request, "checkMsg");
 
 
         $talentInfo = VerifyApi::getOne($id);
         $talentInfo = VerifyApi::getOne($id);
         $lastLog = TalentLogApi::getLastLog($id, ProjectState::TALENT);
         $lastLog = TalentLogApi::getLastLog($id, ProjectState::TALENT);
         $responseObj = new \stdClass();
         $responseObj = new \stdClass();
+        Db::startTrans();
         if (($talentInfo["checkState"] == TalentState::SCND_SAVE || $talentInfo["checkState"] == TalentState::FST_SAVE || $talentInfo["checkState"] == TalentState::FST_SUBMIT) && $lastLog["state"] == TalentState::FST_VERIFY_REJECT) {
         if (($talentInfo["checkState"] == TalentState::SCND_SAVE || $talentInfo["checkState"] == TalentState::FST_SAVE || $talentInfo["checkState"] == TalentState::FST_SUBMIT) && $lastLog["state"] == TalentState::FST_VERIFY_REJECT) {
             if (!$fields && !$files) {
             if (!$fields && !$files) {
                 $responseObj->msg = "请选择可修改的字段或附件!";
                 $responseObj->msg = "请选择可修改的字段或附件!";
@@ -1883,11 +1886,27 @@ class Talent extends AdminController {
                 $data["id"] = $id;
                 $data["id"] = $id;
                 $data["modify_fields"] = $fields ? implode(",", $fields) : null;
                 $data["modify_fields"] = $fields ? implode(",", $fields) : null;
                 $data["modify_files"] = $files ? implode(",", $files) : null;
                 $data["modify_files"] = $files ? implode(",", $files) : null;
-                TalentModel::update($data);
-                $responseObj->code = 200;
-                $responseObj->msg = "驳回字段修改成功";
+                $res1 = Db::table("new_talent_info")->update($data);
+                if (in_array($this->user["type"], [CommonConst::ENTERPRISE_WJ])) {
+                    if (\StrUtil::isEmpOrNull($checkMsg)) {
+                        $responseObj->msg = "请填写审核意见!";
+                        return json($responseObj);
+                    }
+                    $updLog["id"] = $lastLog["id"];
+                    $updLog["description"] = $checkMsg;
+                    $res2 = Db::table("new_talent_checklog")->update($updLog);
+                }
+                if ($res1 || $res2) {
+                    Db::commit();
+                    $responseObj->code = 200;
+                    $responseObj->msg = "驳回字段修改成功";
+                } else {
+                    Db::rollback();
+                    $responseObj->msg = "没有任何修改,提交失败";
+                }
                 return json($responseObj);
                 return json($responseObj);
             } catch (\think\db\exception\DbException $e) {
             } catch (\think\db\exception\DbException $e) {
+                Db::rollback();
                 $responseObj->msg = $e->getMessage();
                 $responseObj->msg = $e->getMessage();
                 return json($responseObj);
                 return json($responseObj);
             }
             }

+ 885 - 10
app/admin/controller/TalentTypeChange.php

@@ -18,6 +18,8 @@ class TalentTypeChange extends AdminController {
     public function gotoIndex() {
     public function gotoIndex() {
         $tpl = null;
         $tpl = null;
         $process = $this->request->param('process');
         $process = $this->request->param('process');
+        $assigns = [];
+        $assigns["enterprises"] = \app\common\api\EnterpriseApi::getSimpleList();
         switch ($process) {
         switch ($process) {
             case -1:
             case -1:
                 $tpl = "dept_before"; //移除部门初审
                 $tpl = "dept_before"; //移除部门初审
@@ -33,14 +35,31 @@ class TalentTypeChange extends AdminController {
                 break;
                 break;
             case 4:
             case 4:
                 $tpl = "prepare"; //预备库
                 $tpl = "prepare"; //预备库
-
+                $msgBody = [];
+                switch ($this->user["type"]) {
+                    case 1:
+                        $msgBody["typeName"] = "晋江市优秀人才层次变更";
+                        $msgBody["address"] = "聚才网/人才晋江微信公众号";
+                        $msgBody["dep"] = "中共晋江市委人才办、晋江市纪委监委驻市人力资源和社会保障局纪检监察组或晋江市公共就业和人才服务中心";
+                        $msgBody["phone"] = "0595-85633128";
+                        $msgBody["email"] = "jjrc85661234@163.com";
+                        break;
+                    case 2:
+                        $msgBody["typeName"] = "晋江市集成电路产业优秀人才层次变更";
+                        $msgBody["address"] = "福建(晋江)集成电路产业园官方网站及微信公众号";
+                        $msgBody["dep"] = "集成电路产业园区";
+                        $msgBody["phone"] = "0595-82250007、0595-82250001";
+                        $msgBody["email"] = "jjjcdr@163.com";
+                        break;
+                }
+                $assigns["message"] = $msgBody;
                 break;
                 break;
             case 5:
             case 5:
                 $tpl = "library"; //正式库
                 $tpl = "library"; //正式库
                 break;
                 break;
         }
         }
 
 
-        return view($tpl);
+        return view($tpl, $assigns);
     }
     }
 
 
     public function list() {
     public function list() {
@@ -56,6 +75,7 @@ class TalentTypeChange extends AdminController {
         if (in_array($this->user["type"], [1, 2, 5, 6])) {
         if (in_array($this->user["type"], [1, 2, 5, 6])) {
             $where[] = ["type", "=", $this->user["type"]];
             $where[] = ["type", "=", $this->user["type"]];
         }
         }
+        $where[] = ["delete", "=", 0];
         switch ($process) {
         switch ($process) {
             case -1:
             case -1:
                 $company = \app\common\api\CompanyApi::getOne($this->user["companyId"]);
                 $company = \app\common\api\CompanyApi::getOne($this->user["companyId"]);
@@ -85,7 +105,7 @@ class TalentTypeChange extends AdminController {
 
 
         $levelMap = DictApi::selectByParentCode("talent_arrange");
         $levelMap = DictApi::selectByParentCode("talent_arrange");
         $count = ttcModel::whereRaw($whereRaw)->where($where)->count();
         $count = ttcModel::whereRaw($whereRaw)->where($where)->count();
-        $list = ttcModel::whereRaw($whereRaw)->where($where)->limit($offset, $limit)->order("createTime {$order}")->select();
+        $list = ttcModel::whereRaw($whereRaw)->where($where)->limit($offset, $limit)->order("createTime {$order}")->select()->toArray();
         foreach ($list as $key => $item) {
         foreach ($list as $key => $item) {
             if ($item["beforeCheckCompany"]) {
             if ($item["beforeCheckCompany"]) {
                 $list[$key]["beforeCheckCompanyName"] = getCacheById("Company", $item["beforeCheckCompany"]);
                 $list[$key]["beforeCheckCompanyName"] = getCacheById("Company", $item["beforeCheckCompany"]);
@@ -152,6 +172,89 @@ class TalentTypeChange extends AdminController {
         return view("", ["info" => $info]);
         return view("", ["info" => $info]);
     }
     }
 
 
+    public function findFieldsAndFiles() {
+        $response = new \stdClass();
+        $response->code = 500;
+        $params = $this->request->param();
+        $id = $params["id"];
+        $info = ttcModel::find($id);
+        if (!$info) {
+            $response->msg = "请选择需要修改的对象";
+            return $response;
+        }
+        if ($info["checkState"] != MainState::FIRST_REJECT) {
+            $response->msg = "只能修改初审驳回的数据";
+            return $response;
+        }
+        $talentInfo = \app\common\api\VerifyApi::getOne($info["talentId"]);
+        if (!$talentInfo || $talentInfo["checkState"] != \app\common\api\TalentState::CERTIFICATED || $talentInfo["delete"] == 1) {
+            $response->msg = "系统错误,请联系管理员";
+            return $response;
+        }
+        $fields = DictApi::getTalentTypeChangeFields($this->user["type"]);
+
+        $field_tmp = [];
+        if ($fields) {
+            foreach ($fields as $key => $field) {
+                $field_tmp[] = ["key" => $key, "value" => $field];
+            }
+        }
+        $condition = TalentConditionApi::getOne($info["newIdentifyCondition"]);
+        $where = [];
+        $whr = [];
+        $where[] = ["project", "=", ProjectState::LEVELCHANGE];
+        $where[] = ["active", "=", 1];
+        $where[] = ["type", "=", $info["type"]];
+        $where[] = ["isConditionFile", "<>", 1];
+        $where[] = ["delete", "=", 0];
+        if ($condition && $condition["bindFileTypes"]) {
+            $whr[] = ["id", "in", explode(",", $condition["bindFileTypes"])];
+            $files = Db::table("new_common_filetype")->whereOr([$where, $whr])->order("sn asc")->select();
+        } else {
+            $files = Db::table("new_common_filetype")->where($where)->order("sn asc")->select();
+        }
+        $response->code = 200;
+        $response->id = $id;
+        $response->fileList = $files;
+        $response->fieldList = $field_tmp;
+        $response->select = [
+            "files" => array_filter(explode(",", $info["files"])),
+            "fields" => array_filter(explode(",", $info["fields"]))
+        ];
+        return $response;
+    }
+
+    public function updateFieldsAndFiles() {
+        $response = new \stdClass();
+        $response->code = 500;
+        $params = $this->request->param();
+        $info = ttcModel::find($params["id"]);
+        if (!$info) {
+            $response->msg = "请选择需要修改的对象";
+            return $response;
+        }
+        if ($info["checkState"] != MainState::FIRST_REJECT) {
+            $response->msg = "只能修改初审驳回的数据";
+            return $response;
+        }
+        $fields = array_filter(explode(",", $params["fields"]));
+        $files = array_filter(explode(",", $params["files"]));
+        if (!$fields && !$files) {
+            $response->msg = "请选择驳回的字段或者附件";
+            return $response;
+        }
+        $data["id"] = $params["id"];
+        $data["fields"] = $fields ? implode(",", $fields) : "";
+        $data["files"] = $files ? implode(",", $files) : "";
+        if (ttcModel::update($data)) {
+            $response->msg = "修改成功";
+            $response->code = 200;
+        } else {
+            $response->msg = "修改失败";
+        }
+        return $response;
+    }
+
     public function validateIsCheck() {
     public function validateIsCheck() {
         $id = $this->request->param("id");
         $id = $this->request->param("id");
         $companyId = $this->request->param("companyId");
         $companyId = $this->request->param("companyId");
@@ -285,6 +388,7 @@ class TalentTypeChange extends AdminController {
             $response->code = 200;
             $response->code = 200;
             return $response;
             return $response;
         } catch (\think\db\exception\DbException $e) {
         } catch (\think\db\exception\DbException $e) {
+            Db::rollback();
             $response->msg = "审核失败:" . $e->getMessage();
             $response->msg = "审核失败:" . $e->getMessage();
             return $response;
             return $response;
         }
         }
@@ -428,6 +532,7 @@ class TalentTypeChange extends AdminController {
             $response->code = 200;
             $response->code = 200;
             return $response;
             return $response;
         } catch (\think\db\exception\DbException $e) {
         } catch (\think\db\exception\DbException $e) {
+            Db::rollback();
             $response->msg = "提交审核失败:" . $e->getMessage();
             $response->msg = "提交审核失败:" . $e->getMessage();
             return $response;
             return $response;
         }
         }
@@ -571,6 +676,7 @@ class TalentTypeChange extends AdminController {
             Db::commit();
             Db::commit();
             return $response;
             return $response;
         } catch (\think\db\exception\DbException $e) {
         } catch (\think\db\exception\DbException $e) {
+            Db::rollback();
             $response->msg = "核查征信失败:" . $e->getMessage();
             $response->msg = "核查征信失败:" . $e->getMessage();
             return $response;
             return $response;
         }
         }
@@ -595,7 +701,6 @@ class TalentTypeChange extends AdminController {
         $list = ttcModel::where($where)->select()->toArray();
         $list = ttcModel::where($where)->select()->toArray();
         Db::startTrans();
         Db::startTrans();
         try {
         try {
-            $updList = [];
             $logList = [];
             $logList = [];
             foreach ($list as $key => $item) {
             foreach ($list as $key => $item) {
                 $data = ["id" => $item["id"], "isPublic" => 2, "outMsg" => ""];
                 $data = ["id" => $item["id"], "isPublic" => 2, "outMsg" => ""];
@@ -620,6 +725,7 @@ class TalentTypeChange extends AdminController {
             $response->msg = "核查征信通过成功";
             $response->msg = "核查征信通过成功";
             return $response;
             return $response;
         } catch (\think\db\exception\DbException $e) {
         } catch (\think\db\exception\DbException $e) {
+            Db::rollback();
             $response->msg = "核查征信通过失败:" . $e->getMessage();
             $response->msg = "核查征信通过失败:" . $e->getMessage();
             return $response;
             return $response;
         }
         }
@@ -628,13 +734,13 @@ class TalentTypeChange extends AdminController {
     /**
     /**
      * 公示预览
      * 公示预览
      */
      */
-    public function publicExport() {
+    public function publicPreview() {
         $params = $this->request->param();
         $params = $this->request->param();
         $ids_arr = array_filter(explode(",", $params["ids"]));
         $ids_arr = array_filter(explode(",", $params["ids"]));
         $columns = ["序号", "姓名", "工作单位", "本人具备的认定条件", "拟认定人才层次", "审核状态", "备注"];
         $columns = ["序号", "姓名", "工作单位", "本人具备的认定条件", "拟认定人才层次", "审核状态", "备注"];
         if ($ids_arr) {
         if ($ids_arr) {
-            $where[] = ["id", "in", $ids_arr];
-            $list = ttcModel::where($where)->select()->toArray();
+            $where[] = ["ttc.id", "in", $ids_arr];
+            $list = ttcModel::alias("ttc")->leftJoin("new_talent_condition tc", "ttc.newIdentifyCondition=tc.id")->field("ttc.*,tc.name as identifyConditionZH")->where($where)->select()->toArray();
             $rows = [];
             $rows = [];
             $talentArranges = DictApi::selectByParentCode("talent_arrange");
             $talentArranges = DictApi::selectByParentCode("talent_arrange");
             for ($i = 0; $i < count($list); $i++) {
             for ($i = 0; $i < count($list); $i++) {
@@ -642,7 +748,6 @@ class TalentTypeChange extends AdminController {
                 $whereLastLog = [];
                 $whereLastLog = [];
                 $whereLastLog[] = ["step", "=", 3];
                 $whereLastLog[] = ["step", "=", 3];
                 $whereLastLog[] = ["state", "<>", 8];
                 $whereLastLog[] = ["state", "<>", 8];
-                $talent_condition = TalentConditionApi::getOne($item["newIdentifyCondition"]);
                 $description = $item["description"];
                 $description = $item["description"];
                 $stateName = "";
                 $stateName = "";
                 if ($item["checkState"] == MainState::NOTPASS) {
                 if ($item["checkState"] == MainState::NOTPASS) {
@@ -659,7 +764,7 @@ class TalentTypeChange extends AdminController {
                     $stateName = "审核通过";
                     $stateName = "审核通过";
                 }
                 }
                 $row = [
                 $row = [
-                    $i + 1, $item["talentName"], $item["enterpriseName"], $talent_condition["name"], $talentArranges[$item["newTalentArrange"]], $stateName, $description
+                    $i + 1, $item["talentName"], $item["enterpriseName"], $item["identifyConditionZH"], $talentArranges[$item["newTalentArrange"]], $stateName, $description
                 ];
                 ];
                 $rows[] = $row;
                 $rows[] = $row;
             }
             }
@@ -671,12 +776,691 @@ class TalentTypeChange extends AdminController {
         }
         }
     }
     }
 
 
+    /**
+     * 公示
+     */
+    public function publicBatch() {
+        $response = new \stdClass();
+        $response->code = 500;
+        //查询需要公示的数据(勾选)
+        $params = $this->request->param();
+        $ids = array_filter(explode(",", $params["ids"]));
+        $publicBatch = $params["batch"];
+        $isMessage = $params["isMessage"] == 1 ? true : false;
+        if (!$publicBatch || strlen($publicBatch) != 6 || !is_numeric($publicBatch)) {
+            $response->msg = "公示批次错误";
+            return $response;
+        }
+        $where = [];
+        $where[] = ["ttc.id", "in", $ids];
+        $list = ttcModel::alias("ttc")->leftJoin("un_enterprise e", "e.id=ttc.enterpriseId")->where($where)->field("ttc.*,e.agentPhone")->select()->toArray();
+        $logList = [];
+        $phones = [];
+        $success = 0;
+        $failure = 0;
+        Db::startTrans();
+        try {
+            for ($i = 0; $i < count($list); $i++) {
+                $obj = $list[$i];
+                $data = [];
+                $data["id"] = $obj["id"];
+                if ($obj["checkState"] == MainState::PASS && $obj["isPublic"] == 2) {
+                    $data["publicBatch"] = $publicBatch;
+                    $data["isPublic"] = 3;
+                    Db::table("un_talent_type_change")->update($data);
+                    $logList[] = [
+                        "id" => getStringId(),
+                        "type" => ProjectState::LEVELCHANGE,
+                        "mainId" => $obj["id"],
+                        "companyId" => $this->user["companyId"],
+                        "active" => 1,
+                        "state" => MainState::BASIC_PASS,
+                        "step" => 5,
+                        "stateChange" => "<span class='label label-success'>待公示</span>-><span class='label label-primary'>公示中</span>",
+                        "description" => "",
+                        "createTime" => date("Y-m-d H:i:s"),
+                        "createUser" => sprintf("%s(%s)", $this->user["account"], $this->user["companyName"] ?: $this->user["rolename"])
+                    ];
+                    $phones[$obj["enterpriseId"]] = $obj["agentPhone"];
+                    $success++;
+                } else {
+                    $failure++;
+                }
+            }
+            $effect = Db::table("new_talent_checklog")->insertAll($logList);
+            Db::commit();
+            if ($phones && $isMessage && $effect) {
+                $tpl_content = sprintf("【晋江市人才服务平台】您好!您提交申请的%s已完成初步审核,现通过%s将审核结果予以公示,公示时间%s至%s。公示期间如有异议,请及时向%s反映。电话%s,电子邮箱%s。",
+                        $params["typeName"], $params["address"], $params["publicStartTime"], $params["publicEndTime"], $params["dep"], $params["phone"], $params["email"]);
+                foreach ($phones as $enterpriseId => $phone) {
+                    queue("app\job\Messenger", ["type" => 5, "userId" => $enterpriseId, "phone" => $phone, "template" => $tpl_content]);
+                }
+            }
+            $response->msg = "公示成功";
+            $response->code = 200;
+            return $response;
+        } catch (\think\db\exception\DbException $e) {
+            Db::rollback();
+            $response->msg = "公示失败:" . $e->getMessage();
+            return $response;
+        }
+    }
+
+    /**
+     * 公示导出
+     * @return type
+     */
+    public function publicExport() {
+        $response = new \stdClass();
+        $response->code = 500;
+
+        $params = $this->request->param();
+        $columns = ["序号", "公示批次", "姓名", "工作单位", "申请认定时间", "本人具备的认定条件", "拟认定人才层次", "审核状态", "备注"];
+        $startTime = $params["startTime"];
+        $endTime = $params["endTime"];
+        if (!strtotime($startTime) || !strtotime($endTime))
+            return json(["msg" => "时间格式错误"]);
+        $where = [];
+        $where[] = ["ttc.type", "=", $this->user["type"]];
+        $where[] = ["publicBatch", "between", [$startTime, $endTime]];
+        $list = ttcModel::alias("ttc")->leftJoin("new_talent_condition tc", "ttc.newIdentifyCondition=tc.id")->field("ttc.*,tc.name as identifyConditionZH")->where($where)->order("publicBatch")->select()->toArray();
+        if (!$list) {
+            $response->msg = "所选时间段内无公示数据";
+            return \StrUtil::back($response, "TalentTypeChange.callBack");
+        }
+        $rows = [];
+        $i = 1;
+        $talentArranges = DictApi::selectByParentCode("talent_arrange");
+        for ($i = 0; $i < count($list); $i++) {
+            $item = $list[$i];
+            $whereLastLog = [];
+            $whereLastLog[] = ["step", "=", 3];
+            $whereLastLog[] = ["state", "<>", 8];
+            $description = $item["description"];
+            $stateName = "";
+            if ($item["checkState"] == MainState::NOTPASS) {
+                $lastLog = TalentLogApi::getLastLogEx($item["id"], ProjectState::LEVELCHANGE, 0, $whereLastLog);
+                if ($lastLog && $lastLog["state"] == MainState::NOTPASS) {
+                    $description = $lastLog["description"];
+                }
+                if (\StrUtil::isNotEmpAndNull($item["outMsg"])) {
+                    $description = !$item["description"] ? "" : $item["description"] . $item["outMsg"];
+                }
+                $stateName = "审核不通过";
+            }
+            if ($item["checkState"] == MainState::PASS) {
+                $stateName = "审核通过";
+            }
+            $row = [
+                $i + 1, $item["publicBatch"], $item["talentName"], $item["enterpriseName"], $item["newIdentifyMonth"], $item["identifyConditionZH"], $talentArranges[$item["newTalentArrange"]], $stateName, $description
+            ];
+            $rows[] = $row;
+        }
+        if ($rows) {
+            $filename = "人才层次变更公示导出";
+            export($columns, $rows, $filename);
+            exit();
+        }
+        $response->msg = "所选时间段内无公示数据";
+        return \StrUtil::back($response, "TalentTypeChange.callBack");
+    }
+
+    /**
+     * 公示再审核
+     */
+    public function afterCheck() {
+        $response = new \stdClass();
+        $response->code = 500;
+
+        $obj = $this->request->param();
+        if (!$obj) {
+            $response->msg = "系统错误,请联系管理员";
+            return $response;
+        }
+        $old = ttcModel::find($obj["id"]);
+        if ($old["isPublic"] != 3) {
+            $response->msg = "当前记录不是公示中状态,无法审核";
+            return $response;
+        }
+        $desc = null;
+        $state = $obj["checkState"];
+        $data = [];
+        $data["id"] = $obj["id"];
+        if ($obj["checkState"] == MainState::BASIC_REJECT) {
+            $data["checkState"] = MainState::THIRD_REJECT;
+            $data["isPublic"] = 1;
+            $data["outMsg"] = "";
+            $desc = "(公示再审核驳回)审核状态:" . MainState::getStateDesc($old["checkState"]) . "->" . MainState::getStateDesc(MainState::THIRD_REJECT) .
+                    ";公示状态:<span class='label label-success'>公示中</span>-><span class='label label-primary'>待核查征信</span>;审核意见:" . $obj["checkMsg"];
+        } else {
+            $data["checkState"] = MainState::OBJECTION;
+            $data["checkMsg"] = $obj["checkMsg"];
+            $desc = "(公示再审核通过)审核状态:" . MainState::getStateDesc($old["checkState"]) . "->" . MainState::getStateDesc(MainState::OBJECTION) .
+                    ";公示状态:<span class='label label-success'>公示中</span>-><span class='label label-primary'>待公布</span>";
+        }
+        //添加日志        
+        $log = [
+            "id" => getStringId(),
+            "type" => ProjectState::LEVELCHANGE,
+            "mainId" => $obj["id"],
+            "companyId" => $this->user["companyId"],
+            "active" => 1,
+            "state" => $state,
+            "step" => 6,
+            "stateChange" => $desc,
+            "description" => $obj["checkMsg"],
+            "createTime" => date("Y-m-d H:i:s"),
+            "createUser" => sprintf("%s(%s)", $this->user["account"], $this->user["companyName"] ?: $this->user["rolename"])
+        ];
+        Db::startTrans();
+        try {
+            Db::table("un_talent_type_change")->update($data);
+            Db::table("new_talent_checklog")->insert($log);
+            Db::commit();
+            $response->code = 200;
+            $response->msg = "审核成功";
+            return $response;
+        } catch (\think\db\exception\DbException $e) {
+            Db::rollback();
+            $response->msg = "审核失败:" . $e->getMessage();
+            return $response;
+        }
+    }
+
+    /**
+     * 公示通过
+     */
+    public function publicPass($ids) {
+        $response = new \stdClass();
+        $response->code = 500;
+        $where = [];
+        $where[] = ["id", "in", explode(",", $ids)];
+        $list = ttcModel::where($where)->select()->toArray();
+        if (!$list) {
+            $response->msg = "系统错误,请联系管理员";
+            return $response;
+        }
+        //添加日志
+        $logList = [];
+        Db::startTrans();
+        foreach ($list as $obj) {
+            //添加日志
+            $logList[] = [
+                "id" => getStringId(),
+                "type" => ProjectState::LEVELCHANGE,
+                "mainId" => $obj["id"],
+                "companyId" => $this->user["companyId"],
+                "active" => 1,
+                "state" => 3,
+                "step" => 6,
+                "stateChange" => "<span class='label label-success'>公示中</span>-><span class='label label-primary'>待公布</span>",
+                "description" => "",
+                "createTime" => date("Y-m-d H:i:s"),
+                "createUser" => sprintf("%s(%s)", $this->user["account"], $this->user["companyName"] ?: $this->user["rolename"])
+            ];
+        }
+        $data["isPublic"] = 4;
+        try {
+            $res1 = Db::table("un_talent_type_change")->where($where)->update($data);
+            $res2 = Db::table("new_talent_checklog")->insertAll($logList);
+            if ($res1 && $res2) {
+                Db::commit();
+                $response->msg = "批量公示通过成功";
+                $response->code = 200;
+                return $response;
+            }
+            $response->msg = "批量公示通过失败,没有可更新内容";
+            Db::rollback();
+            return $response;
+        } catch (\think\db\exception\DbException $e) {
+            Db::rollback();
+            $response->msg = "批量公示通过失败:" . $e->getMessage();
+            return $response;
+        }
+    }
+
+    /**
+     * 公布
+     */
+    public function publish($ids, $batch) {
+        $response = new \stdClass();
+        $response->code = 500;
+        $where = [];
+        $where[] = ["id", "in", explode(",", $ids)];
+        $list = ttcModel::where($where)->select()->toArray();
+        if (!$list) {
+            $response->msg = "系统错误,请联系管理员";
+            return $response;
+        }
+        //添加日志
+        $logList = [];
+        Db::startTrans();
+        try {
+            for ($i = 0; $i < count($list); $i++) {
+                $obj = $list[$i];
+                $desc = "";
+                $stateChange = "";
+                $data = [];
+                $data["id"] = $obj["id"];
+                if ($obj["checkState"] == MainState::NOTPASS) {
+                    $stateChange = "<span class='label label-success'>待公布</span>->" . MainState::getStateDesc(MainState::NOTPASS);
+                    $desc = "审核不通过";
+                } else {
+                    $stateChange = "<span class='label label-success'>待公布</span>-><span class='label label-primary'>待发证</span>";
+                    $desc = "批量公布";
+                }
+                //添加日志
+                $logList[] = [
+                    "id" => getStringId(),
+                    "type" => ProjectState::LEVELCHANGE,
+                    "mainId" => $obj["id"],
+                    "companyId" => $this->user["companyId"],
+                    "active" => 1,
+                    "state" => 3,
+                    "step" => 7,
+                    "stateChange" => $stateChange,
+                    "description" => $desc,
+                    "createTime" => date("Y-m-d H:i:s"),
+                    "createUser" => sprintf("%s(%s)", $this->user["account"], $this->user["companyName"] ?: $this->user["rolename"])
+                ];
+                if (\StrUtil::isEmpOrNull($obj["newCertificateOutTime"])) {
+                    $startDate = date("Y-m-d");
+                    $expiredDate = date("Y-m-d", strtotime("+6 years -1 days {$startDate}"));
+                    $data["newIdentifyOutTime"] = $expiredDate;
+                    $data["newCertificateOutTime"] = $expiredDate;
+                    $data["newCertificateStartTime"] = $startDate;
+                }
+                $data["isPublic"] = 5;
+                $data["newIdentifyMonth"] = $batch;
+                Db::table("un_talent_type_change")->update($data);
+            }
+            Db::table("new_talent_checklog")->insertAll($logList);
+            Db::commit();
+            $response->msg = "公布成功";
+            $response->code = 200;
+            return $response;
+        } catch (\think\db\exception\DbException $e) {
+            Db::rollback();
+            $response->msg = "公布失败:" . $e->getMessage();
+            return $response;
+        }
+    }
+
+    /**
+     * 公布预览导出
+     */
+    public function publishExportBefore($ids) {
+        $where = [];
+        $where[] = ["ttc.id", "in", explode(",", $ids)];
+        $list = ttcModel::alias("ttc")->leftJoin("new_talent_condition tc", "ttc.newIdentifyCondition=tc.id")->field("ttc.*,tc.name as identifyConditionZH")->where($where)->select()->toArray();
+        if (!$list) {
+            $response->msg = "系统错误,请联系管理员";
+            return $response;
+        }
+        $columns = ["序号", "批次", "姓名", "工作单位", "申请认定时间", "本人具备的认定条件", "拟认定人才层次", "审核状态", "备注"];
+        $rows = [];
+        $levelMap = DictApi::selectByParentCode("talent_arrange");
+        for ($i = 0; $i < count($list); $i++) {
+            $obj = $list[$i];
+            $description = $obj["description"];
+            $stateName = "";
+            $whereLastLog = [];
+            $whereLastLog[] = ["step", "=", 3];
+            $whereLastLog[] = ["state", "<>", 8];
+            if ($obj["checkState"] == MainState::NOTPASS) {
+                $lastLog = TalentLogApi::getLastLogEx($obj["id"], ProjectState::LEVELCHANGE, 0, $whereLastLog);
+                if ($lastLog && $lastLog["state"] == MainState::NOTPASS) {
+                    $description = $lastLog["description"];
+                }
+                if (\StrUtil::isNotEmpAndNull($obj["outMsg"])) {
+                    $description = !$obj["description"] ? "" : $obj["description"] . $obj["outMsg"];
+                }
+                $stateName = "审核不通过";
+            }
+            if ($obj["checkState"] == MainState::PASS) {
+                $stateName = "审核通过";
+            }
+
+            $rows[] = [
+                $i + 1, $obj["publicBatch"], $obj["talentName"], $obj["enterpriseName"], $obj["newIdentifyMonth"], $obj["identifyConditionZH"], $levelMap[$obj["newTalentArrange"]], $stateName, $description
+            ];
+        }
+        $filename = "人才层次变更公布名单导出";
+        if ($rows) {
+            export($columns, $rows, $filename);
+            exit();
+        }
+        echo "<script>parent.layer.alert('没有可以导出的数据');</script>";
+    }
+
+    public function publishExport() {
+        $response = new \stdClass();
+        $response->code = 500;
+
+        $params = $this->request->param();
+        $columns = ["序号", "姓名", "工作单位", "公布入选月份", "本人具备的认定条件", "认定人才层次", "审核状态", "备注"];
+        $startTime = $params["startTime"];
+        $endTime = $params["endTime"];
+        if (!strtotime($startTime) || !strtotime($endTime))
+            return json(["msg" => "时间格式错误"]);
+        $where = [];
+        $where[] = ["ttc.type", "=", $this->user["type"]];
+        $where[] = ["newIdentifyMonth", "between", [$startTime, $endTime]];
+        $list = ttcModel::alias("ttc")->leftJoin("new_talent_condition tc", "ttc.newIdentifyCondition=tc.id")->field("ttc.*,tc.name as identifyConditionZH")->where($where)->order("newIdentifyMonth")->select()->toArray();
+        if (!$list) {
+            $response->msg = "所选时间段内无公布数据";
+            return \StrUtil::back($response, "TalentTypeChange.callBack");
+        }
+        $rows = [];
+        $i = 1;
+        $talentArranges = DictApi::selectByParentCode("talent_arrange");
+        for ($i = 0; $i < count($list); $i++) {
+            $item = $list[$i];
+            $whereLastLog = [];
+            $whereLastLog[] = ["step", "=", 3];
+            $whereLastLog[] = ["state", "<>", 8];
+            $description = $item["description"];
+            $stateName = "";
+            if ($item["checkState"] == MainState::NOTPASS) {
+                $lastLog = TalentLogApi::getLastLogEx($item["id"], ProjectState::LEVELCHANGE, 0, $whereLastLog);
+                if ($lastLog && $lastLog["state"] == MainState::NOTPASS) {
+                    $description = $lastLog["description"];
+                }
+                if (\StrUtil::isNotEmpAndNull($item["outMsg"])) {
+                    $description = !$item["description"] ? "" : $item["description"] . $item["outMsg"];
+                }
+                $stateName = "审核不通过";
+            }
+            if ($item["checkState"] == MainState::PASS) {
+                $stateName = "审核通过";
+            }
+            $row = [
+                $i + 1, $item["talentName"], $item["enterpriseName"], $item["newIdentifyMonth"], $item["identifyConditionZH"], $talentArranges[$item["newTalentArrange"]], $stateName, $description
+            ];
+            $rows[] = $row;
+        }
+        if ($rows) {
+            $filename = "人才层次变更公布导出";
+            export($columns, $rows, $filename);
+            exit();
+        }
+        $response->msg = "所选时间段内无公示数据";
+        return \StrUtil::back($response, "TalentTypeChange.callBack");
+    }
+
+    /**
+     * 撤销公布
+     */
+    public function canclePublish($id) {
+        $response = new \stdClass();
+        $response->code = 500;
+        if (\StrUtil::isEmpOrNull($id)) {
+            $response->msg = "请选择需要撤销公布的数据";
+            return $response;
+        }
+        $info = ttcModel::find($id);
+        if ($info["isPublic"] != 5) {
+            $response->msg = "该数据未处于待发证状态,无法撤销";
+            return $response;
+        }
+        try {
+            $data["id"] = $id;
+            $data["isPublic"] = 4;
+            $data["newIdentifyMonth"] = "";
+            //添加日志
+            $log = [
+                "id" => getStringId(),
+                "type" => ProjectState::LEVELCHANGE,
+                "mainId" => $id,
+                "companyId" => $this->user["companyId"],
+                "active" => 1,
+                "state" => 3,
+                "step" => 55,
+                "stateChange" => "<span class='label label-success'>待发证</span>-><span class='label label-primary'>待公布</span>",
+                "description" => "撤销公布",
+                "createTime" => date("Y-m-d H:i:s"),
+                "createUser" => sprintf("%s(%s)", $this->user["account"], $this->user["companyName"] ?: $this->user["rolename"])
+            ];
+            $res1 = Db::table("new_talent_checklog")->insert($log);
+            $res2 = Db::table("un_talent_type_change")->update($data);
+            if ($res1 && $res2) {
+                Db::commit();
+                $response->code = 200;
+                $response->msg = "撤销公布成功";
+            } else {
+                Db::rollback();
+                $response->msg = "撤销公布失败";
+            }
+            return $response;
+        } catch (\think\db\exception\DbException $e) {
+            Db::rollback();
+            $response->msg = "撤销公布失败:" . $e->getMessage();
+            return $response;
+        }
+    }
+
+    /**
+     * 发证
+     */
+    public function sendCard() {
+        $lockFile = fopen("send_certificate.lock", "a");
+        if (flock($lockFile, LOCK_EX | LOCK_NB)) {//文件锁(独占)
+//查询所有待发放人才码的数据
+            $params = $this->request->param();
+            $ids = array_filter(explode(",", $params["ids"]));
+//晋江市优秀人才证书:当前年份+层次+四位递增数字
+//集成电路优秀人才证书:IC+当前年份+递增四位数,如IC20190001
+            Db::startTrans();
+            $talent_max_no = [];
+            $logList = [];
+            $logList2 = [];
+            $user = $this->user;
+            $_prefix_type = "";
+            $subindex = 5;
+            switch ($user["type"]) {
+                case CommonConst::ENTERPRISE_JC:
+                    $_prefix_type = "IC";
+                    $subindex += strlen($_prefix_type);
+                    break;
+            }
+            try {
+                $where = [];
+                $where[] = ["id", "in", $ids];
+                $changeList = ttcModel::where($where)->select()->toArray();
+                $year = date("Y");
+                foreach ($changeList as $change) {
+                    if ($change["checkState"] != MainState::PASS || $change["isPublic"] != 5) {
+                        Db::rollback();
+                        return json(["msg" => "只能对公布通过的对象发放人才码,请核查待发放人才码名单后再重新发放人才码"]);
+                    }
+                    $no_prefix = $_prefix_type . $year . $change["newTalentArrange"];
+                    $where = [];
+                    $where[] = ["certificateNo", "like", $no_prefix . "%"];
+                    $max_no = $talent_max_no[$change["newTalentArrange"]] ?: Db::table("new_talent_info")->where($where)->max("certificateNo", false);
+                    if (!$max_no) {
+                        $max_no = $no_prefix . "0001";
+                    } else {
+                        $new_no = intval(substr($max_no, $subindex)) + 1;
+                        $max_no = $no_prefix . str_pad($new_no, 4, "0", STR_PAD_LEFT);
+                    }
+                    $data["id"] = $change["talentId"];
+                    $data["talent_arrange"] = $change["newTalentArrange"];
+                    $data["talent_condition"] = $change["newIdentifyCondition"];
+                    $data["identifyConditionName"] = $change["newIdentifyConditionName"];
+                    $data["source"] = $change["newSource"];
+                    $data["source_city"] = $change["newFromCity"];
+                    $data["source_county"] = $change["newFromCounty"];
+                    $data["annual_salary"] = $change["newAnnualSalary"];
+                    $data["import_way"] = $change["newIntroductionMode"];
+                    $data["apply_year"] = $change["newYear"];
+                    $data["identifyGetTime"] = $change["newIdentifyGetTime"];
+                    $data["identifyExpireTime"] = $change["newIdentifyOutTime"];
+                    $data["certificateNo"] = $max_no;
+                    $data["certificateGetTime"] = $change["newCertificateStartTime"];
+                    $data["certificateExpireTime"] = $change["newCertificateOutTime"];
+                    $data["identifyMonth"] = $change["newIdentifyMonth"];
+                    $data["isEffect"] = 1;
+                    Db::table("new_talent_info")->update($data);
+
+                    //写入日志
+                    $talentLog["id"] = getStringId();
+                    $talentLog["active"] = 1;
+                    $talentLog["step"] = 20;
+                    $talentLog["type"] = ProjectState::TALENT;
+                    $talentLog["mainId"] = $change["talentId"];
+                    $talentLog["description"] = "人才层次变更通过,同步到人才库";
+                    $talentLog["createUser"] = sprintf("%s(%s)", $user["account"], $user["companyName"] ?: $user["rolename"]);
+                    $talentLog["createTime"] = date("Y-m-d H:i:s");
+                    $logList2[] = $talentLog;
+
+                    $updChangeData["id"] = $change["id"];
+                    $updChangeData["isPublic"] = 6;
+                    $updChangeData["newCertificateNO"] = $max_no;
+                    Db::table("un_talent_type_change")->update($updChangeData);
+                    //写入日志
+                    $log["id"] = getStringId();
+                    $log["state"] = 3;
+                    $log["type"] = ProjectState::LEVELCHANGE;
+                    $log["step"] = 8;
+                    $log["mainId"] = $change["id"];
+                    $log["companyId"] = $user["companyId"];
+                    $log["active"] = 1;
+                    $log["stateChange"] = "<span class='label label-success'>待发证</span>-><span class='label label-primary'>已发证</span>";
+                    $log["description"] = "人才码为:" . $max_no;
+                    $log["createUser"] = sprintf("%s(%s)", $user["account"], $user["companyName"] ?: $user["rolename"]);
+                    $log["createTime"] = date("Y-m-d H:i:s");
+                    $logList[] = $log;
+                }
+                Db::table("new_talent_checklog")->insertAll($logList2);
+                Db::table("new_talent_checklog")->insertAll($logList);
+                Db::commit();
+                if ($user["type"] == 2) {
+                    //办法上只写电路人才,所以暂时只给电路增加基础分
+                    $_ids = array_column($changeList, "talentId");
+                    for ($i = 0; $i < count($_ids); $i++) {
+                        queue("app\job\Talent", ["type" => 4, "id" => $_ids[$i]]);
+                    }
+                }
+                return json(["code" => 200, "msg" => "发放人才码成功"]);
+            } catch (\Exception $e) {
+                Db::rollback();
+                return json(["msg" => "发放人才码失败:" . $e->getMessage()]);
+            }
+            flock($lockFile, LOCK_UN);
+        } else {
+            return json(["msg" => "同一时间只能有一个管理员进行发放人才码操作"]);
+        }
+    }
+
+    public function commonExport() {
+        $response = new \stdClass();
+        $response->code = 500;
+        $where = [];
+        $where[] = ["type", "=", $this->user["type"]];
+        $whereRaw = "length(talentId) <> 19";
+        $request = $this->request;
+        $talentName = \StrUtil::getRequestDecodeParam($request, "talentName");
+        $idCard = \StrUtil::getRequestDecodeParam($request, "idCard");
+        $enterpriseName = \StrUtil::getRequestDecodeParam($request, "enterpriseName");
+        $oldTalentArrange = \StrUtil::getRequestDecodeParam($request, "oldTalentArrange");
+        $oldIdentifyCondition = \StrUtil::getRequestDecodeParam($request, "oldIdentifyCondition");
+        $newTalentArrange = \StrUtil::getRequestDecodeParam($request, "newTalentArrange");
+        $newIdentifyCondition = \StrUtil::getRequestDecodeParam($request, "newIdentifyCondition");
+        $checkStateStr = \StrUtil::getRequestDecodeParam($request, "checkState");
+        $isPublicStr = \StrUtil::getRequestDecodeParam($request, "isPublic");
+        $process = intval(\StrUtil::getRequestDecodeParam($request, "process"));
+        $oldIdentifyMonth = \StrUtil::getRequestDecodeParam($request, "oldIdentifyMonth");
+        $newIdentifyMonth = \StrUtil::getRequestDecodeParam($request, "newIdentifyMonth");
+        $oldYearStr = \StrUtil::getRequestDecodeParam($request, "oldYear");
+        $newYearStr = \StrUtil::getRequestDecodeParam($request, "newYear");
+        $checkState = null;
+        $isPublic = null;
+        $oldYear = null;
+        $newYear = null;
+        if (\StrUtil::isNotEmpAndNull($checkStateStr)) {
+            $checkState = intval($checkStateStr);
+        }
+        if (\StrUtil::isNotEmpAndNull($isPublicStr)) {
+            $isPublic = intval($isPublicStr);
+        }
+        if (\StrUtil::isNotEmpAndNull($oldYearStr)) {
+            $oldYear = intval($oldYearStr);
+        }
+        if (\StrUtil::isNotEmpAndNull($newYearStr)) {
+            $newYear = intval($newYearStr);
+        }
+        $filters = [
+            "talentName" => $talentName,
+            "idCard" => $idCard,
+            "enterpriseName" => $enterpriseName,
+            "oldTalentArrange" => $oldTalentArrange,
+            "oldIdentifyCondition" => $oldIdentifyCondition,
+            "newTalentArrange" => $newTalentArrange,
+            "newIdentifyCondition" => $newIdentifyCondition,
+            "checkState" => $checkState,
+            "isPublic" => $isPublic,
+            "oldYear" => $oldYear,
+            "newYear" => $newYear,
+            "oldIdentifyMonth" => $oldIdentifyMonth,
+            "newIdentifyMonth" => $newIdentifyMonth,
+        ];
+        $this->setTalentTypeChange($where, $filters);
+        $this->setTypeChangeCheckStateCondition($where, $filters, $process);
+        switch ($process) {
+            case -1:
+                break;
+            case 1:
+                $where[] = ["checkState", "not in", [3, 5]];
+                break;
+            case 2:
+                break;
+            case 3:
+                $where[] = ["checkState", "in", [-1, 35]];
+                break;
+            case 4:
+                $where[] = ["checkState", "in", [-1, 35]];
+                break;
+            case 5:
+                $where[] = ["checkState", "=", 35];
+                $where[] = ["isPublic", "=", 6];
+                break;
+        }
+        $list = ttcModel::where($where)->whereRaw($whereRaw)->select()->toArray();
+        $list = $this->translateToChinese($list, $process);
+        $columns = [
+            "姓名", "证件号码", "工作单位", "所属街道", "原申报年度", "原申报来源", "原入选来源地级市", "原入选来源县市区", "原人才层次", "原认定条件", "原认定条件证书取得时间", "原认定条件过期时间", "原认定条件名称",
+            "原泉州高层次人才证书发证日期", "原泉州高层次人才证书的有效期", "原引进方式", "原公布入选月份", "原人才编号", "新申报年度", "新申报来源", "新入选来源地级市", "新入选来源县市区",
+            "新人才层次", "新认定条件", "新认定条件证书取得时间", "新认定条件过期时间", "新认定条件名称",
+            "新泉州高层次人才证书发证日期", "新泉州高层次人才证书的有效期", "新引进方式", "新公布入选月份", "新人才编号",
+            "审核状态", "公示状态"
+        ];
+        $rows = [];
+        foreach ($list as $item) {
+            $rows[] = [
+                $item["talentName"], $item["idCard"], $item["enterpriseName"], $item["streetName"], $item["oldYear"], $item["oldSourceName"], $item["oldFromCityName"], $item["oldFromCountyName"],
+                $item["oldTalentArrangeName"], $item["oldIdentifyConditionCH"], $item["oldIdentifyGetTime"], $item["oldIdentifyOutTime"], $item["oldIdentifyConditionName"],
+                $item["oldCertificateStartTime"], $item["oldCertificateOutTime"], $item["oldIntroductionModeName"], $item["oldIdentifyMonth"], $item["oldCertificateNO"],
+                $item["newYear"], $item["newSourceName"], $item["newFromCityName"], $item["newFromCountyName"],
+                $item["newTalentArrangeName"], $item["newIdentifyConditionCH"], $item["newIdentifyGetTime"], $item["newIdentifyOutTime"], $item["newIdentifyConditionName"],
+                $item["newCertificateStartTime"], $item["newCertificateOutTime"], $item["newIntroductionModeName"], $item["newIdentifyMonth"], $item["newCertificateNO"],
+                $item["checkStateName"], $item["isPublicName"]
+            ];
+        }
+        $filename = "人才层次变更导出";
+        if ($rows) {
+            export($columns, $rows, $filename);
+            exit();
+        } else {
+            echo "<script>parent.layer.alert('没有可以导出的数据');window.history.go(-1);</script>";
+        }
+    }
+
     private function setTalentTypeChange(&$where, $data) {
     private function setTalentTypeChange(&$where, $data) {
         if (\StrUtil::isNotEmpAndNull($data["talentName"])) {
         if (\StrUtil::isNotEmpAndNull($data["talentName"])) {
             $where[] = ["talentName", "like", "%{$data["talentName"]}%"];
             $where[] = ["talentName", "like", "%{$data["talentName"]}%"];
         }
         }
         if (\StrUtil::isNotEmpAndNull($data["enterpriseName"])) {
         if (\StrUtil::isNotEmpAndNull($data["enterpriseName"])) {
-            $where[] = ["enterpriseName", "like", "%{$data["enterpriseName"]}%"];
+            $where[] = ["enterpriseId", "=", $data["enterpriseName"]];
         }
         }
         if (\StrUtil::isNotEmpAndNull($data["idCard"])) {
         if (\StrUtil::isNotEmpAndNull($data["idCard"])) {
             $where[] = ["idCard", "like", "%{$data["idCard"]}%"];
             $where[] = ["idCard", "like", "%{$data["idCard"]}%"];
@@ -762,4 +1546,95 @@ class TalentTypeChange extends AdminController {
         }
         }
     }
     }
 
 
+    private function translateToChinese($list, $process) {
+        //获取字典表人才层次
+        $sourceMap = DictApi::selectByParentCode("source");
+        $levelMap = DictApi::selectByParentCode("talent_arrange");
+        $importWayMap = DictApi::selectByParentCode("import_way");
+        $streetMap = DictApi::selectByParentCode("street");
+        $conditions = Db::table("new_talent_condition")->where("type", $this->user["type"])->column("name", "id");
+        $whereEp = [];
+        $whereEp[] = ["id", "in", array_column($list, "enterpriseId")];
+        $enterpriseList = \app\common\model\Enterprise::where($whereEp)->column("street", "id");
+        foreach ($list as &$talentTypeChange) {
+            $talentTypeChange["oldSourceName"] = $sourceMap[$talentTypeChange["oldSource"]] ?: "无";
+            $talentTypeChange["newSourceName"] = $sourceMap[$talentTypeChange["newSource"]] ?: "无";
+            $talentTypeChange["oldTalentArrangeName"] = $levelMap[$talentTypeChange["oldTalentArrange"]];
+            $talentTypeChange["newTalentArrangeName"] = $levelMap[$talentTypeChange["newTalentArrange"]];
+            $talentTypeChange["oldIntroductionModeName"] = $importWayMap[$talentTypeChange["oldIntroductionMode"]];
+            $talentTypeChange["newIntroductionModeName"] = $importWayMap[$talentTypeChange["newIntroductionMode"]];
+            $talentTypeChange["oldIdentifyConditionCH"] = $conditions[$talentTypeChange["oldIdentifyCondition"]];
+            $talentTypeChange["newIdentifyConditionCH"] = $conditions[$talentTypeChange["newIdentifyCondition"]];
+            switch ($talentTypeChange["isPublic"]) {
+                case 1:
+                    $talentTypeChange["isPublicName"] = "待核查征信";
+                    break;
+                case 2:
+                    $talentTypeChange["isPublicName"] = "待公示";
+                    break;
+                case 3:
+                    $talentTypeChange["isPublicName"] = "公示中";
+                    break;
+                case 4:
+                    $talentTypeChange["isPublicName"] = "待发布";
+                    break;
+                case 5:
+                    $talentTypeChange["isPublicName"] = "待发证";
+                    break;
+                case 6:
+                    $talentTypeChange["isPublicName"] = "已发证";
+                    break;
+            }
+            $talentTypeChange["streetName"] = $streetMap[$enterpriseList[$talentTypeChange["enterpriseId"]]];
+            if ($process != null) {
+                switch ($process) {
+                    case -1:
+                        break;
+                    case 1:
+                        if ($talentTypeChange["checkState"] == -1) {
+                            $talentTypeChange["checkStateName"] = "审核不通过";
+                        } else if ($talentTypeChange["checkState"] == 1) {
+                            $talentTypeChange["checkStateName"] = "待提交";
+                        } else if ($talentTypeChange["checkState"] == 10) {
+                            $talentTypeChange["checkStateName"] = "已驳回";
+                        } else if ($talentTypeChange["checkState"] == 15 || $talentTypeChange["checkState"] >= 25) {
+                            $talentTypeChange["checkStateName"] = "待提交";
+                        } else if ($talentTypeChange["checkState"] == 7) {
+                            $talentTypeChange["checkStateName"] = ($talentTypeChange["highProcess"] != null && $talentTypeChange["highProcess"] >= 1) ? "重新提交" : "待审核";
+                        } else if ($talentTypeChange["checkState"] == 20) {
+                            $talentTypeChange["checkStateName"] = ($talentTypeChange["highProcess"] != null && $talentTypeChange["highProcess"] >= 1) ? "上级驳回" : "待审核";
+                        }
+                        break;
+                    case 2:
+                        if ($talentTypeChange["depState"] == 1)
+                            $talentTypeChange["checkStateName"] = "待审核";
+                        if ($talentTypeChange["depState"] == 2)
+                            $talentTypeChange["checkStateName"] = "已驳回";
+                        if ($talentTypeChange["depState"] == 3)
+                            $talentTypeChange["checkStateName"] = "已通过";
+                        break;
+                    case 3:
+                        if ($talentTypeChange["checkState"] == -1) {
+                            $talentTypeChange["checkStateName"] = "审核不通过";
+                        } else if ($talentTypeChange["checkState"] == 25) {
+                            $talentTypeChange["checkStateName"] = ($talentTypeChange["highProcess"] != null && $talentTypeChange["highProcess"] >= 3) ? "重新提交" : "待审核";
+                        } else if ($talentTypeChange["checkState"] == 30 || $talentTypeChange["checkState"] <= 20) {
+                            $talentTypeChange["checkStateName"] = "已驳回";
+                        } else if ($talentTypeChange["checkState"] == 35) {
+                            $talentTypeChange["checkStateName"] = "已通过";
+                        }
+                        break;
+                    case 4:
+                        if ($talentTypeChange["checkState"] == -1) {
+                            $talentTypeChange["checkStateName"] = "审核不通过";
+                        } else if ($talentTypeChange["checkState"] == 35) {
+                            $talentTypeChange["checkStateName"] = "已通过";
+                        }
+                        break;
+                }
+            }
+        }unset($talentTypeChange);
+        return $list;
+    }
+
 }
 }

+ 7 - 12
app/admin/view/talent_type_change/fst_verify.html

@@ -52,6 +52,7 @@
                                         </button>
                                         </button>
                                     </div>
                                     </div>
                                     <select class="form-control" id="enterpriseName">
                                     <select class="form-control" id="enterpriseName">
+                                        <option></option>
                                         {volist name="enterprises" id="item"}
                                         {volist name="enterprises" id="item"}
                                         <option value="{$item.id}">{$item.name}</option>
                                         <option value="{$item.id}">{$item.name}</option>
                                         {/volist}
                                         {/volist}
@@ -74,7 +75,7 @@
                                             原人才层次
                                             原人才层次
                                         </button>
                                         </button>
                                     </div>
                                     </div>
-                                    <select class="form-control" id="oldTalentArrange">
+                                    <select class="form-control" id="oldTalentArrange" onchange="TalentTypeChange.getIdentifyCondition('old')">
                                     </select>
                                     </select>
                                 </div>
                                 </div>
                             </div>
                             </div>
@@ -87,9 +88,6 @@
                                     </div>
                                     </div>
                                     <select class="form-control" id="oldIdentifyCondition">
                                     <select class="form-control" id="oldIdentifyCondition">
                                         <option value="">--请选择--</option>
                                         <option value="">--请选择--</option>
-                                        {volist name="talent_conditions" id="condition"}
-                                        <option value="{$condition.id}">{$condition.name}</option>
-                                        {/volist}
                                     </select>
                                     </select>
                                 </div>
                                 </div>
                             </div>
                             </div>
@@ -118,7 +116,7 @@
                                             新人才层次
                                             新人才层次
                                         </button>
                                         </button>
                                     </div>
                                     </div>
-                                    <select class="form-control" id="newTalentArrange">
+                                    <select class="form-control" id="newTalentArrange" onchange="TalentTypeChange.getIdentifyCondition('new')">
                                     </select>
                                     </select>
                                 </div>
                                 </div>
                             </div>
                             </div>
@@ -131,9 +129,6 @@
                                     </div>
                                     </div>
                                     <select class="form-control" id="newIdentifyCondition">
                                     <select class="form-control" id="newIdentifyCondition">
                                         <option value="">--请选择--</option>
                                         <option value="">--请选择--</option>
-                                        {volist name="talent_conditions" id="condition"}
-                                        <option value="{$condition.id}">{$condition.name}</option>
-                                        {/volist}
                                     </select>
                                     </select>
                                 </div>
                                 </div>
                             </div>
                             </div>
@@ -209,14 +204,14 @@
                             </button>
                             </button>
                             {/if}
                             {/if}
                             {if condition="chkCommission('/admin/talent/getPhones','')"}
                             {if condition="chkCommission('/admin/talent/getPhones','')"}
-                            <button type="button" class="btn btn-sm btn-primary " onclick="TalentTypeChange.getPhones()" id="">
+                            <!--<button type="button" class="btn btn-sm btn-primary " onclick="TalentTypeChange.getPhones()" id="">
                                 <i class="fa fa-mobile"></i>&nbsp;获取人才手机号
                                 <i class="fa fa-mobile"></i>&nbsp;获取人才手机号
-                            </button>
+                            </button>-->
                             {/if}
                             {/if}
                             {if condition="chkCommission('/admin/talent/getEnterprisePhones','')"}
                             {if condition="chkCommission('/admin/talent/getEnterprisePhones','')"}
-                            <button type="button" class="btn btn-sm btn-primary " onclick="TalentTypeChange.getEnterprisePhones()" id="">
+                            <!--<button type="button" class="btn btn-sm btn-primary " onclick="TalentTypeChange.getEnterprisePhones()" id="">
                                 <i class="fa fa-phone"></i>&nbsp;获取人才联络员手机号
                                 <i class="fa fa-phone"></i>&nbsp;获取人才联络员手机号
-                            </button>
+                            </button>-->
                             {/if}
                             {/if}
                         </div>
                         </div>
                         <table id="TalentTypeChangeTable" class="table-condensed" style="font-size: 10px;table-layout: fixed!important;" data-mobile-responsive="true" data-click-to-select="true">
                         <table id="TalentTypeChangeTable" class="table-condensed" style="font-size: 10px;table-layout: fixed!important;" data-mobile-responsive="true" data-click-to-select="true">

+ 8 - 13
app/admin/view/talent_type_change/prepare.html

@@ -43,6 +43,7 @@
                                         </button>
                                         </button>
                                     </div>
                                     </div>
                                     <select class="form-control" id="enterpriseName">
                                     <select class="form-control" id="enterpriseName">
+                                        <option></option>
                                         {volist name="enterprises" id="item"}
                                         {volist name="enterprises" id="item"}
                                         <option value="{$item.id}">{$item.name}</option>
                                         <option value="{$item.id}">{$item.name}</option>
                                         {/volist}
                                         {/volist}
@@ -65,7 +66,7 @@
                                             原人才层次
                                             原人才层次
                                         </button>
                                         </button>
                                     </div>
                                     </div>
-                                    <select class="form-control" id="oldTalentArrange">
+                                    <select class="form-control" id="oldTalentArrange" onchange="TalentTypeChange.getIdentifyCondition('old')">
                                     </select>
                                     </select>
                                 </div>
                                 </div>
                             </div>
                             </div>
@@ -78,9 +79,6 @@
                                     </div>
                                     </div>
                                     <select class="form-control" id="oldIdentifyCondition">
                                     <select class="form-control" id="oldIdentifyCondition">
                                         <option value="">--请选择--</option>
                                         <option value="">--请选择--</option>
-                                        {volist name="talent_conditions" id="condition"}
-                                        <option value="{$condition.id}">{$condition.name}</option>
-                                        {/volist}
                                     </select>
                                     </select>
                                 </div>
                                 </div>
                             </div>
                             </div>
@@ -109,7 +107,7 @@
                                             新人才层次
                                             新人才层次
                                         </button>
                                         </button>
                                     </div>
                                     </div>
-                                    <select class="form-control" id="newTalentArrange">
+                                    <select class="form-control" id="newTalentArrange" onchange="TalentTypeChange.getIdentifyCondition('new')">
                                     </select>
                                     </select>
                                 </div>
                                 </div>
                             </div>
                             </div>
@@ -122,9 +120,6 @@
                                     </div>
                                     </div>
                                     <select class="form-control" id="newIdentifyCondition">
                                     <select class="form-control" id="newIdentifyCondition">
                                         <option value="">--请选择--</option>
                                         <option value="">--请选择--</option>
-                                        {volist name="talent_conditions" id="condition"}
-                                        <option value="{$condition.id}">{$condition.name}</option>
-                                        {/volist}
                                     </select>
                                     </select>
                                 </div>
                                 </div>
                             </div>
                             </div>
@@ -177,7 +172,7 @@
                             </div>
                             </div>
                         </div>
                         </div>
                         <div class="hidden-xs" id="TalentTypeChangeTableToolbar" role="group">
                         <div class="hidden-xs" id="TalentTypeChangeTableToolbar" role="group">
-                            {if condition="chkCommission('/admin/talentTypeChange/prepareHczx','/talentTypeChange/prepareHczx')"}
+                            {if condition="chkCommission('/admin/talentTypeChange/exportHczx','/talentTypeChange/prepareHczx')"}
                             <button type="button" class="btn btn-sm btn-primary " onclick="TalentTypeChange.showDataCheckModal(1)">
                             <button type="button" class="btn btn-sm btn-primary " onclick="TalentTypeChange.showDataCheckModal(1)">
                                 <i class="fa fa-file-excel-o"></i>&nbsp;导出核查征信
                                 <i class="fa fa-file-excel-o"></i>&nbsp;导出核查征信
                             </button>
                             </button>
@@ -192,17 +187,17 @@
                                 <i class="fa fa-external-link"></i>&nbsp;征信通过
                                 <i class="fa fa-external-link"></i>&nbsp;征信通过
                             </button>
                             </button>
                             {/if}
                             {/if}
-                            {if condition="chkCommission('/admin/talentTypeChange/publicExportBefore','/talentTypeChange/publicExportBefore')"}
+                            {if condition="chkCommission('/admin/talentTypeChange/publicPreview','/talentTypeChange/publicExportBefore')"}
                             <button type="button" class="btn btn-sm btn-primary" onclick="TalentTypeChange.showDataCheckModal(7)">
                             <button type="button" class="btn btn-sm btn-primary" onclick="TalentTypeChange.showDataCheckModal(7)">
                                 <i class="fa fa-file-excel-o"></i>&nbsp;公示预览
                                 <i class="fa fa-file-excel-o"></i>&nbsp;公示预览
                             </button>
                             </button>
                             {/if}
                             {/if}
-                            {if condition="chkCommission('/admin/talentTypeChange/preparePublic','/talentTypeChange/preparePublic')"}
+                            {if condition="chkCommission('/admin/talentTypeChange/publicBatch','/talentTypeChange/preparePublic')"}
                             <button type="button" class="btn btn-sm btn-danger" onclick="TalentTypeChange.showDataCheckModal(3)">
                             <button type="button" class="btn btn-sm btn-danger" onclick="TalentTypeChange.showDataCheckModal(3)">
                                 <i class="fa fa-opencart"></i>&nbsp;公示
                                 <i class="fa fa-opencart"></i>&nbsp;公示
                             </button>
                             </button>
                             {/if}
                             {/if}
-                            {if condition="chkCommission('/admin/talentTypeChange/preparePublicExport','/talentTypeChange/preparePublicExport')"}
+                            {if condition="chkCommission('/admin/talentTypeChange/publicExport','/talentTypeChange/preparePublicExport')"}
                             <button type="button" class="btn btn-sm btn-primary" onclick="TalentTypeChange.publicExport(1)">
                             <button type="button" class="btn btn-sm btn-primary" onclick="TalentTypeChange.publicExport(1)">
                                 <i class="fa fa-file-excel-o"></i>&nbsp;公示导出
                                 <i class="fa fa-file-excel-o"></i>&nbsp;公示导出
                             </button>
                             </button>
@@ -227,7 +222,7 @@
                                 <i class="fa fa-television"></i>&nbsp;公布
                                 <i class="fa fa-television"></i>&nbsp;公布
                             </button>
                             </button>
                             {/if}
                             {/if}
-                            {if condition="chkCommission('/admin/talentTypeChange/preparePublishExport','/talentTypeChange/preparePublishExport')"}
+                            {if condition="chkCommission('/admin/talentTypeChange/publishExport','/talentTypeChange/preparePublishExport')"}
                             <button type="button" class="btn btn-sm btn-primary" onclick="TalentTypeChange.publicExport(2)">
                             <button type="button" class="btn btn-sm btn-primary" onclick="TalentTypeChange.publicExport(2)">
                                 <i class="fa fa-file-excel-o"></i>&nbsp;公布导出
                                 <i class="fa fa-file-excel-o"></i>&nbsp;公布导出
                             </button>
                             </button>

+ 3 - 8
app/admin/view/talent_type_change/re_verify.html

@@ -43,6 +43,7 @@
                                         </button>
                                         </button>
                                     </div>
                                     </div>
                                     <select class="form-control" id="enterpriseName">
                                     <select class="form-control" id="enterpriseName">
+                                        <option></option>
                                         {volist name="enterprises" id="item"}
                                         {volist name="enterprises" id="item"}
                                         <option value="{$item.id}">{$item.name}</option>
                                         <option value="{$item.id}">{$item.name}</option>
                                         {/volist}
                                         {/volist}
@@ -65,7 +66,7 @@
                                             原人才层次
                                             原人才层次
                                         </button>
                                         </button>
                                     </div>
                                     </div>
-                                    <select class="form-control" id="oldTalentArrange">
+                                    <select class="form-control" id="oldTalentArrange" onchange="TalentTypeChange.getIdentifyCondition('old')">
                                     </select>
                                     </select>
                                 </div>
                                 </div>
                             </div>
                             </div>
@@ -78,9 +79,6 @@
                                     </div>
                                     </div>
                                     <select class="form-control" id="oldIdentifyCondition">
                                     <select class="form-control" id="oldIdentifyCondition">
                                         <option value="">--请选择--</option>
                                         <option value="">--请选择--</option>
-                                        {volist name="talent_conditions" id="condition"}
-                                        <option value="{$condition.id}">{$condition.name}</option>
-                                        {/volist}
                                     </select>
                                     </select>
                                 </div>
                                 </div>
                             </div>
                             </div>
@@ -109,7 +107,7 @@
                                             新人才层次
                                             新人才层次
                                         </button>
                                         </button>
                                     </div>
                                     </div>
-                                    <select class="form-control" id="newTalentArrange">
+                                    <select class="form-control" id="newTalentArrange" onchange="TalentTypeChange.getIdentifyCondition('new')">
                                     </select>
                                     </select>
                                 </div>
                                 </div>
                             </div>
                             </div>
@@ -122,9 +120,6 @@
                                     </div>
                                     </div>
                                     <select class="form-control" id="newIdentifyCondition">
                                     <select class="form-control" id="newIdentifyCondition">
                                         <option value="">--请选择--</option>
                                         <option value="">--请选择--</option>
-                                        {volist name="talent_conditions" id="condition"}
-                                        <option value="{$condition.id}">{$condition.name}</option>
-                                        {/volist}
                                     </select>
                                     </select>
                                 </div>
                                 </div>
                             </div>
                             </div>

+ 4 - 2
app/common/controller/Api.php

@@ -708,8 +708,10 @@ class Api extends BaseController {
         $where[] = ["mainId", "=", $id];
         $where[] = ["mainId", "=", $id];
         if (!$files)
         if (!$files)
             $files = Db::table($table)->where($where)->select()->toArray();
             $files = Db::table($table)->where($where)->select()->toArray();
-        if (!$files)
-            die("没有附件不能打包下载");
+        if (!$files){
+            //die("没有附件不能打包下载");
+            echo "<script>parent.layer.alert('没有附件不能打包下载');window.history.go(-1);</script>";
+        }
 
 
         $tmp_path = "storage/temp/";
         $tmp_path = "storage/temp/";
         $tmp_file_path = $tmp_path . $zip_filename;
         $tmp_file_path = $tmp_path . $zip_filename;

+ 8 - 0
app/enterprise/controller/TalentTypeChange.php

@@ -58,9 +58,17 @@ class TalentTypeChange extends EnterpriseController {
             return $res;
             return $res;
         }
         }
         $data = $this->request->param();
         $data = $this->request->param();
+        $talentInfo = TalentApi::getOne($data["talentId"]);
+        if (!$talentInfo || $talentInfo["checkState"] != TalentState::CERTIFICATED || $talentInfo["delete"] == 1) {
+            return json(["msg" => "人才库中匹配不到该人才", "code" => 500]);
+        }
         $data['checkState'] = MainState::SAVE;
         $data['checkState'] = MainState::SAVE;
         $data['basicState'] = MainState::BASIC_NEED;
         $data['basicState'] = MainState::BASIC_NEED;
         $data['isPublic'] = 1;
         $data['isPublic'] = 1;
+        $data['oldCertificateStartTime'] = $talentInfo["certificateGetTime"];
+        $data['oldCertificateOutTime'] = $talentInfo["certificateExpireTime"];
+        $data['oldIdentifyOutTime'] = $talentInfo["identifyExpireTime"];
+        $data['isPublic'] = 1;
         $data['createUser'] = $this->user["uid"];
         $data['createUser'] = $this->user["uid"];
         $data['createTime'] = date("Y-m-d H:i:s");
         $data['createTime'] = date("Y-m-d H:i:s");
         $condition_info = Db::table("new_talent_condition")->findOrEmpty($data["newIdentifyCondition"]);
         $condition_info = Db::table("new_talent_condition")->findOrEmpty($data["newIdentifyCondition"]);

+ 32 - 0
app/job/Messenger.php

@@ -146,6 +146,38 @@ class Messenger {
                     return false;
                     return false;
                 }
                 }
                 break;
                 break;
+            case 5:
+                //变更通过通知代理人                
+                try {
+                    $userId = $data["userId"];
+                    $phone = $data["phone"];
+                    $template = $data["template"];
+                    $smsapi = new ChuanglanSmsApi();
+                    $result = $smsapi->sendSMS($phone, $template);
+                    $result = json_decode($result, true);
+                    $recordId = getStringId();
+                    $record_data = [
+                        'id' => $recordId,
+                        'userId' => $userId,
+                        'bizId' => $result["msgId"],
+                        'type' => 2,
+                        'smsType' => 1,
+                        'phone' => $phone,
+                        'params' => '人才层次变更公示',
+                        'templateCode' => $template,
+                        'state' => $result['code'] == 0 ? 2 : 3,
+                        'sendingDate' => date("Y-m-d H:i:s", time()),
+                        'createTime' => date("Y-m-d H:i:s", time()),
+                        'msg' => $result['errorMsg']
+                    ];
+                    MessageRecord::create($record_data);
+                    return true;
+                } catch (\think\Exception $e) {
+                    Log::error(json_encode($data));
+                    Log::error($e->getMessage());
+                    return false;
+                }
+                break;
             case 109:
             case 109:
                 //注销审核通过通知
                 //注销审核通过通知
                 try {
                 try {

+ 3 - 3
public/static/modular/gate/talentInfo/new_talentInfo_info.js

@@ -488,7 +488,7 @@ TalentInfoInfoDlg.getLayerCatdByLayer = function () {
                 allowedCats = ["A1", "B1", "C1", "D1", "E1"];
                 allowedCats = ["A1", "B1", "C1", "D1", "E1"];
                 break;
                 break;
             case "5":
             case "5":
-                allowedCats = ["A+", "A1", "A2", "B", "B1", "B2", "C", "C1", "C2", "D", "D1", "D2", "E", "E1", "E2", "F", "G"];
+                allowedCats = ["A+", "A1", "A2", "A", "B", "B1", "B2", "C", "C1", "C2", "D", "D1", "D2", "E", "E1", "E2", "F", "G"];
                 break;
                 break;
         }
         }
         for (var i = 0; i < $("#talent_arrange_category option").length; i++) {
         for (var i = 0; i < $("#talent_arrange_category option").length; i++) {
@@ -1371,13 +1371,13 @@ $(function () {
         var imgSrc;
         var imgSrc;
         var reader = new FileReader();
         var reader = new FileReader();
         console.log(file)
         console.log(file)
-        if(toString.call(file) === '[object Blob]' || toString.call(file) === '[object File]'){
+        if (toString.call(file) === '[object Blob]' || toString.call(file) === '[object File]') {
             reader.readAsDataURL(file);
             reader.readAsDataURL(file);
             reader.onload = function () {
             reader.onload = function () {
                 imgSrc = this.result;
                 imgSrc = this.result;
                 $("#photoImg").attr("src", imgSrc);
                 $("#photoImg").attr("src", imgSrc);
             };
             };
-        }else{
+        } else {
             alert('图片或浏览器不支持,请更换!!');
             alert('图片或浏览器不支持,请更换!!');
         }
         }
     });
     });

+ 1 - 1
public/static/modular/gate/talentLibrary/talentTypeChange/talentTypeChange_info.js

@@ -367,7 +367,7 @@ TalentTypeChangeInfoDlg.getLayerCatdByLayer = function (isNew) {
                     allowedCats = ["A1", "B1", "C1", "D1", "E1"];
                     allowedCats = ["A1", "B1", "C1", "D1", "E1"];
                     break;
                     break;
                 case "5":
                 case "5":
-                    allowedCats = ["A+", "A1", "A2", "B", "B1", "B2", "C", "C1", "C2", "D", "D1", "D2", "E", "E1", "E2", "F", "G"];
+                    allowedCats = ["A+", "A1", "A2", "A", "B", "B1", "B2", "C", "C1", "C2", "D", "D1", "D2", "E", "E1", "E2", "F", "G"];
                     break;
                     break;
             }
             }
             for (var i = 0; i < $("#" + catElem + " option").length; i++) {
             for (var i = 0; i < $("#" + catElem + " option").length; i++) {

+ 1 - 1
public/static/modular/gate/talentLibrary/talentTypeChange/talentTypeChange_select.js

@@ -214,7 +214,7 @@ TalentTypeChangeInfoDlg.getLayerCatdByLayer = function (isNew) {
                     allowedCats = ["A1", "B1", "C1", "D1", "E1"];
                     allowedCats = ["A1", "B1", "C1", "D1", "E1"];
                     break;
                     break;
                 case "5":
                 case "5":
-                    allowedCats = ["A+", "A1", "A2", "B", "B1", "B2", "C", "C1", "C2", "D", "D1", "D2", "E", "E1", "E2", "F", "G"];
+                    allowedCats = ["A+", "A1", "A2", "A", "B", "B1", "B2", "C", "C1", "C2", "D", "D1", "D2", "E", "E1", "E2", "F", "G"];
                     break;
                     break;
             }
             }
             for (var i = 0; i < $("#" + catElem + " option").length; i++) {
             for (var i = 0; i < $("#" + catElem + " option").length; i++) {

+ 10 - 2
public/static/modular/talentIdentify/talentInfo/hospital/talentInfo_base.js

@@ -88,7 +88,7 @@ TalentInfo.initColumn = function () {
                         if (row.realState == 6) {
                         if (row.realState == 6) {
                             return "<span class='label label-danger'>复审驳回</span>"
                             return "<span class='label label-danger'>复审驳回</span>"
                         }
                         }
-                        if(row.realState == 11){
+                        if (row.realState == 11) {
                             return "<span class='label label-danger'>驳回到总院</span>"
                             return "<span class='label label-danger'>驳回到总院</span>"
                         }
                         }
                         return "<span class='label label-success'>待审核</span>"
                         return "<span class='label label-success'>待审核</span>"
@@ -349,6 +349,7 @@ TalentInfo.updateFieldsAndFiles = function () {
                         for (var key in data.fileList) {
                         for (var key in data.fileList) {
                             html2 = html2 + '<ul><li style="width: 100%"><input type="checkbox" value="' + data.fileList[key].id + '"><span>' + data.fileList[key].name + '</span></li></ul>';
                             html2 = html2 + '<ul><li style="width: 100%"><input type="checkbox" value="' + data.fileList[key].id + '"><span>' + data.fileList[key].name + '</span></li></ul>';
                         }
                         }
+                        $("#checkMsg").text(data.checkMsg);
                         $("#firstCheckForm #field_info ul").css("overflow", "hidden").html(html1);
                         $("#firstCheckForm #field_info ul").css("overflow", "hidden").html(html1);
                         $("#field_file").css("overflow", "hidden").empty().append(html2);
                         $("#field_file").css("overflow", "hidden").empty().append(html2);
                         //$("#field_file").empty().append(html);
                         //$("#field_file").empty().append(html);
@@ -389,6 +390,7 @@ TalentInfo.updateFieldsAndFiles = function () {
 TalentInfo.submitFieldsAndFiles = function (index, id) {
 TalentInfo.submitFieldsAndFiles = function (index, id) {
     var fields = '';
     var fields = '';
     var files = '';
     var files = '';
+    var checkMsg = $("#checkMsg").val();
     $("#firstCheckForm #field_info li input").each(function (index) {
     $("#firstCheckForm #field_info li input").each(function (index) {
         if ($(this).is(":checked")) {
         if ($(this).is(":checked")) {
             fields = fields + $(this).val() + ",";
             fields = fields + $(this).val() + ",";
@@ -399,6 +401,10 @@ TalentInfo.submitFieldsAndFiles = function (index, id) {
             files = files + $(this).val() + ",";
             files = files + $(this).val() + ",";
         }
         }
     });
     });
+    if (checkMsg.trim() == '') {
+        Feng.info("请填写审核意见!");
+        return;
+    }
     if (fields == '' && files == '') {
     if (fields == '' && files == '') {
         Feng.info("请选择可修改的字段或附件!");
         Feng.info("请选择可修改的字段或附件!");
         return;
         return;
@@ -413,7 +419,7 @@ TalentInfo.submitFieldsAndFiles = function (index, id) {
     }, function (data) {
     }, function (data) {
         Feng.error("修改失败!" + data.responseJSON.message + "!");
         Feng.error("修改失败!" + data.responseJSON.message + "!");
     });
     });
-    ajax.setData({"id": id, "fields": fields, "files": files})
+    ajax.setData({"id": id, "fields": fields, "files": files, "checkMsg": checkMsg})
     ajax.start();
     ajax.start();
 }
 }
 
 
@@ -482,6 +488,8 @@ TalentInfo.creatFieldCheckModal = function () {
     return '<form id="firstCheckForm">\n' +
     return '<form id="firstCheckForm">\n' +
             '                    <div class="form-group" style="margin: 10px;">\n' +
             '                    <div class="form-group" style="margin: 10px;">\n' +
             '                        <div >\n' +
             '                        <div >\n' +
+            '                        <label for="checkMsg" class="control-label" >审核意见</label>\n' +
+            '                        <textarea class="form-control" id="checkMsg" placeholder="审核状态属“审核通过”的,仅代表此步骤已操作完成,不代表用户提交的信息符合认定条件。若不符合认定条件的,请写明不符合原因。" rows="6"></textarea>\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>\n' +

+ 56 - 63
public/static/modular/talentLibrary/talentTypeChange/talentTypeChange_common.js

@@ -2,7 +2,7 @@
  * 查询表单提交参数对象
  * 查询表单提交参数对象
  * @returns {{}}
  * @returns {{}}
  */
  */
-TalentTypeChange.formParams = function() {
+TalentTypeChange.formParams = function () {
     var queryData = {};
     var queryData = {};
     queryData['talentName'] = $("#talentName").val();
     queryData['talentName'] = $("#talentName").val();
     queryData['idCard'] = $("#idCard").val();
     queryData['idCard'] = $("#idCard").val();
@@ -14,14 +14,14 @@ TalentTypeChange.formParams = function() {
     queryData['newIdentifyCondition'] = $("#newIdentifyCondition").val();
     queryData['newIdentifyCondition'] = $("#newIdentifyCondition").val();
     queryData['oldIdentifyMonth'] = $("#oldIdentifyMonth").val();
     queryData['oldIdentifyMonth'] = $("#oldIdentifyMonth").val();
     queryData['newIdentifyMonth'] = $("#newIdentifyMonth").val();
     queryData['newIdentifyMonth'] = $("#newIdentifyMonth").val();
-    if($("#oldIdentifyCondition").val() == null || $("#oldIdentifyCondition").val() == '' || $("#oldIdentifyCondition").val()=="null"){
+    if ($("#oldIdentifyCondition").val() == null || $("#oldIdentifyCondition").val() == '' || $("#oldIdentifyCondition").val() == "null") {
         queryData['oldIdentifyCondition'] = "";
         queryData['oldIdentifyCondition'] = "";
-    }else{
+    } else {
         queryData['oldIdentifyCondition'] = $("#oldIdentifyCondition").val();
         queryData['oldIdentifyCondition'] = $("#oldIdentifyCondition").val();
     }
     }
-    if($("#newIdentifyCondition").val() == null || $("#newIdentifyCondition").val() == '' || $("#newIdentifyCondition").val()=="null"){
+    if ($("#newIdentifyCondition").val() == null || $("#newIdentifyCondition").val() == '' || $("#newIdentifyCondition").val() == "null") {
         queryData['newIdentifyCondition'] = "";
         queryData['newIdentifyCondition'] = "";
-    }else{
+    } else {
         queryData['newIdentifyCondition'] = $("#newIdentifyCondition").val();
         queryData['newIdentifyCondition'] = $("#newIdentifyCondition").val();
     }
     }
     queryData['isPublic'] = $("#isPublic").val();
     queryData['isPublic'] = $("#isPublic").val();
@@ -33,15 +33,15 @@ TalentTypeChange.formParams = function() {
 /**
 /**
  * 重置
  * 重置
  */
  */
-TalentTypeChange.reset = function (){
+TalentTypeChange.reset = function () {
     $("#talentName").val("");
     $("#talentName").val("");
     $("#idCard").val("");
     $("#idCard").val("");
-    $("#enterpriseName").val("");
     $("#oldTalentArrange").val("").trigger("change");
     $("#oldTalentArrange").val("").trigger("change");
     $("#newTalentArrange").val("").trigger("change");
     $("#newTalentArrange").val("").trigger("change");
     $("#checkState").val("");
     $("#checkState").val("");
-    $("#oldIdentifyCondition").val("").trigger("chosen:updated");;
-    $("#newIdentifyCondition").val("").trigger("chosen:updated");;
+    $("#enterpriseName").val("").trigger("chosen:updated");
+    $("#oldIdentifyCondition").val("").trigger("chosen:updated");
+    $("#newIdentifyCondition").val("").trigger("chosen:updated");
     $("#oldIdentifyMonth").val("");
     $("#oldIdentifyMonth").val("");
     $("#newIdentifyMonth").val("");
     $("#newIdentifyMonth").val("");
     $("#isPublic").val("");
     $("#isPublic").val("");
@@ -59,16 +59,16 @@ TalentTypeChange.search = function () {
 /**
 /**
  * 显示审核日志
  * 显示审核日志
  */
  */
-TalentTypeChange.showLog = function (id){
+TalentTypeChange.showLog = function (id) {
     layer.open({
     layer.open({
         type: 1,
         type: 1,
-        title:"日志",
-        fixed:false,
-        content: '<table id="'+id+'"></table>',
+        title: "日志",
+        fixed: false,
+        content: '<table id="' + id + '"></table>',
         area: ['80%', '80%'],
         area: ['80%', '80%'],
         maxmin: true,
         maxmin: true,
-        success :function (layero, index) {
-            Feng.getCheckLog(id,{"type":CONFIG.project_levelchange,"mainId":id,"typeFileId":"","active":1})
+        success: function (layero, index) {
+            Feng.getCheckLog(id, {"type": CONFIG.project_levelchange, "mainId": id, "typeFileId": "", "active": 1})
         }
         }
     });
     });
 }
 }
@@ -76,55 +76,48 @@ TalentTypeChange.showLog = function (id){
 /**
 /**
  * 获取人才认定
  * 获取人才认定
  */
  */
-TalentTypeChange.getIdentifyCondition = function(type) {
-    // var level = $("#"+ type+"TalentArrange").val();
-    // if(level==null||level==''){
-    //     $("#"+type+"IdentifyCondition").empty();
-    //     $("#"+type+"IdentifyCondition").trigger('chosen:updated');
-    //     return;
-    // }
-    Feng.addAjaxSelect({
-        "id": "oldIdentifyCondition",
-        "displayCode": "id",
-        "displayName": "name",
-        "type": "GET",
-        "url": "/common/api/findIdentifyConditionByLevel"
-    });
+TalentTypeChange.getIdentifyCondition = function (type) {
+    var level = $("#" + type + "TalentArrange").val();
+    if (level == null || level == '') {
+        $("#" + type + "IdentifyCondition").empty();
+        $("#" + type + "IdentifyCondition").trigger('chosen:updated');
+        return;
+    }
     Feng.addAjaxSelect({
     Feng.addAjaxSelect({
-        "id": "newIdentifyCondition",
+        "id": type + "IdentifyCondition",
         "displayCode": "id",
         "displayCode": "id",
         "displayName": "name",
         "displayName": "name",
         "type": "GET",
         "type": "GET",
-        "url": "/common/api/findIdentifyConditionByLevel"
+        "url": Feng.ctxPath + "/common/api/findIdentifyConditionByLevel?level=" + level
     });
     });
-    $("#oldIdentifyCondition,#newIdentifyCondition").trigger('chosen:updated');
+    $("#" + type + "IdentifyCondition").trigger('chosen:updated');
 }
 }
 
 
 /**
 /**
  * 页面初始化
  * 页面初始化
  */
  */
-TalentTypeChange.init = function(){
+TalentTypeChange.init = function () {
     //批量加载字典表数据
     //批量加载字典表数据
     var arr = [
     var arr = [
-        {"name":"oldTalentArrange","code":"talent_arrange"},
-        {"name":"newTalentArrange","code":"talent_arrange"}];
+        {"name": "oldTalentArrange", "code": "talent_arrange"},
+        {"name": "newTalentArrange", "code": "talent_arrange"}];
     Feng.findChildDictBatch(JSON.stringify(arr));
     Feng.findChildDictBatch(JSON.stringify(arr));
     TalentTypeChange.getIdentifyCondition();
     TalentTypeChange.getIdentifyCondition();
-    $("#oldIdentifyCondition,#newIdentifyCondition").on('chosen:ready', function(e, params) {
-        $(".chosen-container-single .chosen-single").css("padding","4px 0px 0px 4px");
+    $("#oldIdentifyCondition,#newIdentifyCondition").on('chosen:ready', function (e, params) {
+        $(".chosen-container-single .chosen-single").css("padding", "4px 0px 0px 4px");
     });
     });
-    $("#oldIdentifyCondition,#newIdentifyCondition").chosen({
-        search_contains:true,       //关键字模糊搜索。设置为true,只要选项包含搜索词就会显示;设置为false,则要求从选项开头开始匹配
+    $("#enterpriseName,#oldIdentifyCondition,#newIdentifyCondition").chosen({
+        search_contains: true,       //关键字模糊搜索。设置为true,只要选项包含搜索词就会显示;设置为false,则要求从选项开头开始匹配
         disable_search: false,
         disable_search: false,
-        width:"100%",
+        width: "100%",
         enable_split_word_search: true
         enable_split_word_search: true
     });
     });
     //批量加载时间控件
     //批量加载时间控件
-    $(".time").each(function(){
+    $(".time").each(function () {
         laydate.render({
         laydate.render({
-            elem: "#"+$(this).attr("id")
-            ,type: "date"
-            ,trigger: 'click'
+            elem: "#" + $(this).attr("id")
+            , type: "date"
+            , trigger: 'click'
         });
         });
     });
     });
 }
 }
@@ -132,25 +125,25 @@ TalentTypeChange.init = function(){
 /**
 /**
  * 导出提交
  * 导出提交
  */
  */
-TalentTypeChange.export = function(process){
+TalentTypeChange.export = function (process) {
     var queryData = TalentTypeChange.formParams();
     var queryData = TalentTypeChange.formParams();
-    var url = Feng.ctxPath + "/talentTypeChangeExport/commonExport?"+
-        "&talentName=" + queryData.talentName +
-        "&idCard=" + queryData.idCard +
-        "&enterpriseName=" + queryData.enterpriseName +
-        "&oldTalentType=" + queryData.oldTalentType +
-        "&oldTalentArrange=" + queryData.oldTalentArrange +
-        "&newTalentType=" + queryData.newTalentType +
-        "&newTalentArrange=" + queryData.newTalentArrange +
-        "&oldIdentifyCondition=" + queryData.oldIdentifyCondition +
-        "&newIdentifyCondition=" + queryData.newIdentifyCondition +
-        "&oldIdentifyMonth=" + queryData.oldIdentifyMonth +
-        "&newIdentifyMonth=" + queryData.newIdentifyMonth +
-        "&checkState=" + queryData.checkState +
-        "&isPublic=" + queryData.isPublic+
-        "&oldYear="+queryData.oldYear+
-        "&newYear="+queryData.newYear+
-        "&process=" + process;
+    var url = Feng.ctxPath + "/admin/talentTypeChange/commonExport?" +
+            "&talentName=" + queryData.talentName +
+            "&idCard=" + queryData.idCard +
+            "&enterpriseName=" + queryData.enterpriseName +
+            "&oldTalentType=" + queryData.oldTalentType +
+            "&oldTalentArrange=" + queryData.oldTalentArrange +
+            "&newTalentType=" + queryData.newTalentType +
+            "&newTalentArrange=" + queryData.newTalentArrange +
+            "&oldIdentifyCondition=" + queryData.oldIdentifyCondition +
+            "&newIdentifyCondition=" + queryData.newIdentifyCondition +
+            "&oldIdentifyMonth=" + queryData.oldIdentifyMonth +
+            "&newIdentifyMonth=" + queryData.newIdentifyMonth +
+            "&checkState=" + queryData.checkState +
+            "&isPublic=" + queryData.isPublic +
+            "&oldYear=" + queryData.oldYear +
+            "&newYear=" + queryData.newYear +
+            "&process=" + process;
     window.location.href = encodeURI(encodeURI(url));
     window.location.href = encodeURI(encodeURI(url));
 }
 }
 
 
@@ -159,6 +152,6 @@ TalentTypeChange.export = function(process){
  */
  */
 TalentTypeChange.download = function () {
 TalentTypeChange.download = function () {
     if (this.check()) {
     if (this.check()) {
-        window.location.href = encodeURI(encodeURI(Feng.ctxPath + "/api/commonDownload/downloadZip?type=2&id="+TalentTypeChange.seItem.id));
+        window.location.href = encodeURI(encodeURI(Feng.ctxPath + "/common/api/downloadZip?type=8&id=" + TalentTypeChange.seItem.id));
     }
     }
 }
 }

+ 1 - 1
public/static/modular/talentLibrary/talentTypeChange/talentTypeChange_common_check.js

@@ -499,7 +499,7 @@ TalentTypeChangeInfoDlg.submitCheck = function () {
 
 
 
 
 TalentTypeChangeInfoDlg.download = function () {
 TalentTypeChangeInfoDlg.download = function () {
-    window.location.href = encodeURI(encodeURI(Feng.ctxPath + "/common/api/downloadZip?type=2&id=" + $("#id").val()));
+    window.location.href = encodeURI(encodeURI(Feng.ctxPath + "/common/api/downloadZip?type=8&id=" + $("#id").val()));
 }
 }
 
 
 $(function () {
 $(function () {

+ 43 - 18
public/static/modular/talentLibrary/talentTypeChange/talentTypeChange_first.js

@@ -91,7 +91,6 @@ TalentTypeChange.check = function () {
 TalentTypeChange.updateFieldsAndFiles = function () {
 TalentTypeChange.updateFieldsAndFiles = function () {
     if (this.check()) {
     if (this.check()) {
         var ajax = new $ax(Feng.ctxPath + "/admin/talentTypeChange/findFieldsAndFiles?id=" + TalentTypeChange.seItem.id, function (data) {
         var ajax = new $ax(Feng.ctxPath + "/admin/talentTypeChange/findFieldsAndFiles?id=" + TalentTypeChange.seItem.id, function (data) {
-            var obj = data.obj.obj;
             if (data.code == 200) {
             if (data.code == 200) {
                 layer.open({
                 layer.open({
                     type: 1,
                     type: 1,
@@ -101,30 +100,35 @@ TalentTypeChange.updateFieldsAndFiles = function () {
                     fix: false, //不固定
                     fix: false, //不固定
                     shade: 0,
                     shade: 0,
                     maxmin: true,
                     maxmin: true,
-                    content: TalentTypeChange.creatFieldCheckModal(data.obj.obj),
+                    content: TalentTypeChange.creatFieldCheckModal(data),
                     btn: ['<i class="fa fa-save"></i>&nbsp;&nbsp;提交', '<i class="fa fa-eraser"></i>&nbsp;&nbsp;关闭'],
                     btn: ['<i class="fa fa-save"></i>&nbsp;&nbsp;提交', '<i class="fa fa-eraser"></i>&nbsp;&nbsp;关闭'],
                     btnAlign: 'c',
                     btnAlign: 'c',
                     zIndex: layer.zIndex,
                     zIndex: layer.zIndex,
                     success: function (layero, index) {
                     success: function (layero, index) {
-                        var fileList = data.obj.fileList;
-                        var html = '';
-                        for (var key in fileList) {
-                            html = html + '<ul><li style="width: 100%"><input type="checkbox" value="' + fileList[key].id + '"><span>' + fileList[key].name + '</span></li></ul>';
+                        var html1 = '';
+                        if (typeof data.fieldList != "undefined" && data.fieldList.length > 0) {
+                            for (var key in data.fieldList) {
+                                html1 += '<li style="float:left;margin:0 10px 10px 0;"><input type="checkbox" value="' + data.fieldList[key]["key"] + '"><span>' + data.fieldList[key]["value"] + '</span></li>';
+                            }
+                        }
+
+                        var html2 = '';
+                        for (var key in data.fileList) {
+                            html2 = html2 + '<ul><li style="width: 100%"><input type="checkbox" value="' + data.fileList[key].id + '"><span>' + data.fileList[key].name + '</span></li></ul>';
                         }
                         }
-                        $("#field_file").empty().append(html);
-                        if (obj.fields != null && obj.fields != '') {
-                            $("#field_info input").each(function () {
-                                var arr = obj.fields.split(",");
-                                for (var key in arr) {
-                                    if ($(this).val() == arr[key]) {
-                                        this.checked = true;
-                                    }
+                        $("#firstCheckForm #field_info ul").css("overflow", "hidden").html(html1);
+                        $("#field_file").css("overflow", "hidden").empty().append(html2);
+                        //$("#field_file").empty().append(html);
+                        if (data.select.fields != null && data.select.fields != '') {
+                            $("#firstCheckForm #field_info li input").each(function () {
+                                if (data.select.fields.indexOf($(this).val()) != -1) {
+                                    this.checked = true;
                                 }
                                 }
                             });
                             });
                         }
                         }
-                        if (obj.files != null && obj.files != '') {
+                        if (data.select.files != null && data.select.files != '') {
                             $("#field_file input").each(function () {
                             $("#field_file input").each(function () {
-                                if (obj.files.indexOf($(this).val()) != -1) {
+                                if (data.select.files.indexOf($(this).val()) != -1) {
                                     this.checked = true;
                                     this.checked = true;
                                 }
                                 }
                             });
                             });
@@ -202,14 +206,35 @@ TalentTypeChange.creatFieldCheckModal = function (obj) {
             '                            <div id="field_file">\n' +
             '                            <div id="field_file">\n' +
             '                            </div>\n' +
             '                            </div>\n' +
             '                            <div class="form-group" style="text-align: center">\n' +
             '                            <div class="form-group" style="text-align: center">\n' +
-            '                                <button type="button" class="btn btn-primary" onclick="Feng.checkAll("field")">全选</button>\n' +
-            '                                <button type="button" class="btn btn-success" onclick="Feng.unCheckAll("field")">反选</button>\n' +
+            '                                <button type="button" class="btn btn-primary" onclick="TalentTypeChange.checkAll()">全选</button>\n' +
+            '                                <button type="button" class="btn btn-success" onclick="TalentTypeChange.unCheckAll()">反选</button>\n' +
             '                            </div>\n' +
             '                            </div>\n' +
             '                        </div>\n' +
             '                        </div>\n' +
             '                    </div>\n' +
             '                    </div>\n' +
             '                </form>';
             '                </form>';
 }
 }
 
 
+/**
+ * 全选
+ */
+TalentTypeChange.checkAll = function () {
+    $("#field input").each(function () {
+        this.checked = true;
+    })
+}
+/**
+ * 反选
+ */
+TalentTypeChange.unCheckAll = function () {
+    $("#field input").each(function () {
+        if (this.checked) {
+            this.checked = false;
+        } else {
+            this.checked = true;
+        }
+    })
+}
+
 /**
 /**
  * 点击人才类别审核
  * 点击人才类别审核
  */
  */

+ 10 - 10
public/static/modular/talentLibrary/talentTypeChange/talentTypeChange_prepare.js

@@ -340,7 +340,7 @@ TalentTypeChange.needPublicExport = function () {
     }
     }
     var operation = function () {
     var operation = function () {
         $("#exportCommonModal").modal("hide");
         $("#exportCommonModal").modal("hide");
-        window.location.href = encodeURI(encodeURI(Feng.ctxPath + "/admin/talentTypeChange/publicExport?ids=" + ids));
+        window.location.href = encodeURI(encodeURI(Feng.ctxPath + "/admin/talentTypeChange/publicPreview?ids=" + ids));
     }
     }
     Feng.confirm("确定要公示预览吗?", operation);
     Feng.confirm("确定要公示预览吗?", operation);
 }
 }
@@ -417,7 +417,7 @@ TalentTypeChange.public = function () {
                     return;
                     return;
                 }
                 }
                 layer.close(index);
                 layer.close(index);
-                var ajax = new $ax(Feng.ctxPath + "/talentTypeChange/publicBatch", function (data) {
+                var ajax = new $ax(Feng.ctxPath + "/admin/talentTypeChange/publicBatch", function (data) {
                     if (data.code == 200) {
                     if (data.code == 200) {
                         Feng.success(data.msg);
                         Feng.success(data.msg);
                         TalentTypeChange.table.refresh();
                         TalentTypeChange.table.refresh();
@@ -450,11 +450,11 @@ TalentTypeChange.public = function () {
 TalentTypeChange.publicExport = function (type) {
 TalentTypeChange.publicExport = function (type) {
     var url = "", dateType = '', format = '';
     var url = "", dateType = '', format = '';
     if (type == 1) {         //公示导出
     if (type == 1) {         //公示导出
-        url = Feng.ctxPath + "/talentTypeChangeExport/publicExport";
+        url = Feng.ctxPath + "/admin/talentTypeChange/publicExport";
         dateType = 'month';
         dateType = 'month';
         format = "yyyyMM";
         format = "yyyyMM";
     } else if (type == 2) {     //公布导出
     } else if (type == 2) {     //公布导出
-        url = Feng.ctxPath + "/talentTypeChangeExport/publishExport";
+        url = Feng.ctxPath + "/admin/talentTypeChange/publishExport";
         dateType = 'date';
         dateType = 'date';
         format = "yyyy-MM-dd";
         format = "yyyy-MM-dd";
     }
     }
@@ -550,7 +550,7 @@ TalentTypeChange.afterCheckSubmit = function () {
         return;
         return;
     }
     }
     var operation = function () {
     var operation = function () {
-        var ajax = new $ax(Feng.ctxPath + "/talentTypeChange/afterCheck", function (data) {
+        var ajax = new $ax(Feng.ctxPath + "/admin/talentTypeChange/afterCheck", function (data) {
             if (data.code == 200) {
             if (data.code == 200) {
                 Feng.success(data.msg);
                 Feng.success(data.msg);
                 TalentTypeChange.table.refresh();
                 TalentTypeChange.table.refresh();
@@ -582,7 +582,7 @@ TalentTypeChange.publicPass = function () {
         ids = ids + selected[i].id + ",";
         ids = ids + selected[i].id + ",";
     }
     }
     var operation = function () {
     var operation = function () {
-        var ajax = new $ax(Feng.ctxPath + "/talentTypeChange/publicPass", function (data) {
+        var ajax = new $ax(Feng.ctxPath + "/admin/talentTypeChange/publicPass", function (data) {
             if (data.code == 200) {
             if (data.code == 200) {
                 Feng.success(data.msg);
                 Feng.success(data.msg);
                 TalentTypeChange.table.refresh();
                 TalentTypeChange.table.refresh();
@@ -614,7 +614,7 @@ TalentTypeChange.publishExportBefore = function () {
     }
     }
     var operation = function () {
     var operation = function () {
         $("#exportCommonModal").modal("hide");
         $("#exportCommonModal").modal("hide");
-        window.location.href = Feng.ctxPath + "/talentTypeChange/publishExportBefore?ids=" + ids;
+        window.location.href = Feng.ctxPath + "/admin/talentTypeChange/publishExportBefore?ids=" + ids;
     }
     }
     Feng.confirm("一旦确认无法修改,确定要公布吗?", operation);
     Feng.confirm("一旦确认无法修改,确定要公布吗?", operation);
 }
 }
@@ -653,7 +653,7 @@ TalentTypeChange.publish = function () {
                     return;
                     return;
                 }
                 }
                 layer.close(index);
                 layer.close(index);
-                var ajax = new $ax(Feng.ctxPath + "/talentTypeChange/publish", function (data) {
+                var ajax = new $ax(Feng.ctxPath + "/admin/talentTypeChange/publish", function (data) {
                     if (data.code == 200) {
                     if (data.code == 200) {
                         Feng.success(data.msg);
                         Feng.success(data.msg);
                         TalentTypeChange.table.refresh();
                         TalentTypeChange.table.refresh();
@@ -679,7 +679,7 @@ TalentTypeChange.publish = function () {
 TalentTypeChange.canclePublish = function () {
 TalentTypeChange.canclePublish = function () {
     if (this.check()) {
     if (this.check()) {
         var operation = function () {
         var operation = function () {
-            var ajax = new $ax(Feng.ctxPath + "/talentTypeChange/canclePublish", function (data) {
+            var ajax = new $ax(Feng.ctxPath + "/admin/talentTypeChange/canclePublish", function (data) {
                 if (data.code == 200) {
                 if (data.code == 200) {
                     Feng.success(data.msg);
                     Feng.success(data.msg);
                     TalentTypeChange.table.refresh();
                     TalentTypeChange.table.refresh();
@@ -708,7 +708,7 @@ TalentTypeChange.sendCard = function () {
         ids = ids + selected[i].id + ",";
         ids = ids + selected[i].id + ",";
     }
     }
     var operation = function () {
     var operation = function () {
-        var ajax = new $ax(Feng.ctxPath + "/talentTypeChange/sendCard", function (data) {
+        var ajax = new $ax(Feng.ctxPath + "/admin/talentTypeChange/sendCard", function (data) {
             if (data.code == 200) {
             if (data.code == 200) {
                 Feng.success(data.msg);
                 Feng.success(data.msg);
                 TalentTypeChange.table.refresh();
                 TalentTypeChange.table.refresh();