'项目编号', "project_name" => "项目名称", "project_start_time" => "项目开始时间", "project_end_time" => "项目结束时间", "review_unit" => "评审单位", "sent_review_unit" => "送审单位", "sent_review_head" => "送审单位负责人", "sent_review_phone" => "送审单位负责人电话", "construction_unit" => "施工单位", "construction_head" => "施工单位负责人", "construction_phone" => "施工单位负责人电话", "sent_review_amount" => "送审金额", "engineering_type" => '工程类型', ]; /** * 构造函数 */ public function __construct(App $app) { parent::__construct($app); $this->Field = new Field($this->app); $this->department = new DepartmentModel(); $this->model = new CostProjectModel(); $this->ProjectMsg = new ProjectMsg(); $this->filemodel = new ProjectFile(); $this->uid = get_login_admin('id'); $this->Adminmodel = new Admin(); $this->time = time(); $this->Officialaccount = new Officialaccount(); $this->Pushmessage = new Pushmessage(); } /** * 数据列表 */ public function datalist() { if (request()->isAjax()) { $param = get_params(); $rows = empty($param['limit']) ? get_config('app . page_size') : $param['limit']; $order = empty($param['order']) ? 'id desc' : $param['order']; if (isset($param["project_start_time"])) { $param["project_start_time"] = $param["project_start_time"] ? strtotime($param["project_start_time"]) : 0; } if (isset($param["project_end_time"])) { $param["project_end_time"] = $param["project_end_time"] ? strtotime($param["project_end_time"]) : 0; } //项目可见的权限 $field = $this->Field->get_field_rules_new($this->uid); //1全部-可查看可编辑,2全部-可查看,0与我有关 $see_auth = isset($field["see_auth"]) ? $field["see_auth"] : 3; $where[] = ["delete_time", "=", 0]; $where[] = ["project_status", ">", 0]; $where2[] = ["delete_time", "=", 0]; $where2[] = ["project_status", ">", 0]; if ($see_auth == 3||$see_auth == 0) { $where[] = ["entrust_maker", "=", $this->uid]; $where2[] = ["entrust_approver", "=", $this->uid]; $where2[] = ["project_status", ">", 1]; } $where3 =[]; if (!empty($param['project_status'])) { $where3[] = ['project_status', '=', $param['project_status']]; } if (!empty($param['province'])) { $where3[] = ['province', '=', $param['province']]; } if (!empty($param['city'])) { $where3[] = ['city', '=', $param['city']]; } if (!empty($param['area'])) { $where3[] = ['area', '=', $param['area']]; } if (!empty($param['project_end_time'])) { $where3[] = ['project_end_time', '<', $param['project_end_time']]; } if (!empty($param['project_start_time'])) { $where3[] = ['project_start_time', '>', $param['project_start_time']]; } if (!empty($param['keyword'])) { $keyword = $param['keyword']; $where3[] = ['project_num|project_name|review_unit', 'like', '%' . $keyword . '%']; } if (!empty($param['review_head_name'])) { $where3[] = ['review_head_name', 'like', '%' . $param['review_head_name'] . '%']; } if (!empty($param['review_unit_name'])) { $where3[] = ['review_unit_name', 'like', '%' . $param['review_unit_name']. '%']; } if (!empty($param['sent_review_unit_name'])) { $where3[] = ['sent_review_unit_name', 'like', '%' . $param['sent_review_unit_name']. '%']; } $where3[] = ["entrust_unit", "=", get_login_admin('unit_name')]; $this->see_auth = $see_auth; $list = $this->model ->where($where3)->where(function ($query) use ($where,$where2) { // 第一组条件(entrust_maker) $query->where(function ($q1) use ($where) { $q1->where($where); }); // 使用 OR 连接第二组条件(entrust_approver) $query->whereOr(function ($q2) use ($where2) { $q2->where($where2); }); }) ->order($order)->paginate($rows, false, ['query' => $param]) ->each(function ($item) { $red = Db::name("new_msg")->where([["project_id", "=", $item->id], ["uid", "=", $this->uid]])->find(); if ($red) { if ($red["detail"] || $red["comment"] || $red["report"] || $red["user"] || $red["contact"]) { $item->red = 1; } } else { $item->red = 0; } if (($item->province && $item->city && $item->area)) { $item->project_region = $item->province . '-' . $item->city . '-' . $item->area; } $item->creator = Db::name("admin")->where("id",$item->creator)->value("nickname"); $item->self_id = $this->see_auth; //作业人 $operate_team_names = null; $operate_team_names_ids = explode(",", $item->operate_team); for ($i = 0; $i < count($operate_team_names_ids); $i++) { $name = Db::name("admin")->where("id", $operate_team_names_ids[$i])->value("nickname"); if (!($i == 0)) { $name = "," . $name; } $operate_team_names = $operate_team_names . $name; } $item->operate_team_names = $operate_team_names; }); return table_assign(0, '', $list); } else { $field = $this->Field->get_field_rules_new($this->uid); $fields = []; foreach ($field as $k=>$v){ if($v!=1){ $fields[$k] = true; }else{ $fields[$k] = false; } } View::assign('field', $fields); return view(); } } /** * 临期 */ public function list() { // if (request()->isAjax()) { $param = get_params(); $field = $this->Field->get_field_rules_new($this->uid); $see_auth = isset($field["see_auth"]) ? $field["see_auth"] : 3; $where = array(); $where3 = array(); if ($see_auth == 3 || $see_auth == 0) { $where = [ ["entrust_maker", "=", $this->uid], ]; $where3 = [ ["entrust_approver", "=", $this->uid], ["project_status", ">", 1] ]; } $where1 = [ ["delete_time", "=", 0], ['project_end_time', '<', strtotime('15 days')], ['project_end_time', '>', time()], ["project_status", "<", 7], ["entrust_unit","=",get_login_admin("unit_name")] ]; $where1 = array_merge($where, $where1); $where2 = array_merge($where1, $where3); $rows = empty($param['limit']) ? get_config('app . page_size') : $param['limit']; $order = empty($param['order']) ? 'id desc' : $param['order']; $list = $this->model->whereOr([$where1, $where2]) ->order($order) ->paginate(9999, false, ['query' => $param]) ->each(function ($item) { }); return table_assign(0, '', $list); // } } /** * 逾期 */ public function list2() { $param = get_params(); $field = $this->Field->get_field_rules_new($this->uid); $see_auth = isset($field["see_auth"]) ? $field["see_auth"] : 3; $where = array(); $where3 = array(); if ($see_auth == 3 || $see_auth == 0) { $where = [ ["entrust_maker", "=", $this->uid], ]; $where3 = [ ["entrust_approver", "=", $this->uid], ["project_status", ">", 1] ]; } $where2 = [ ["delete_time", "=", 0], ['project_end_time', '<', time()], ["project_status", "<", 7], ["entrust_unit","=",get_login_admin("unit_name")] ]; $where1 = array_merge($where, $where2); $where2 = array_merge($where2, $where3); $rows = empty($param['limit']) ? get_config('app . page_size') : $param['limit']; $order = empty($param['order']) ? 'id desc' : $param['order']; $list = $this->model->whereOr([$where1, $where2]) ->order($order)->paginate(9999, false, ['query' => $param]); return table_assign(0, '', $list); // } } /** * 添加 */ public function add() { if (request()->isAjax()) { $param = get_params(); // halt($param); // 检验完整性 try { validate(CostProjectValidate::class)->check($param); } catch (ValidateException $e) { // 验证失败 输出错误信息 return to_assign(1, $e->getError()); } if (isset($param["project_start_time"])) { $param["project_start_time"] = $param["project_start_time"] ? strtotime($param["project_start_time"]) : 0; } if (isset($param["project_end_time"])) { $param["project_end_time"] = $param["project_end_time"] ? strtotime($param["project_end_time"]) : 0; } $param["entrust_unit"] = get_login_admin("unit_name"); $param["entrust_unit_name"] = Db::name("department")->where("id", get_login_admin("unit_name"))->value("title"); $param["entrust_maker"] = $this->uid; $param["entrust_maker_name"] = get_login_admin("nickname"); $param["entrust_phone"] = get_login_admin("mobile"); $param["entrust_approver_name"] = get_admin($param["entrust_approver"])["nickname"]; $param["project_status"] = 1; $param["maker_type"] = 1; $param["creator"] = $this->uid; $file_ids = isset($param["file_ids"]) ? $param["file_ids"] : 0; unset($param["file_ids"]); $file_id = []; $insertId = 0; try { $param['create_time'] = time(); $insertId = $this->model->strict(false)->field(true)->insertGetId($param); if ($file_ids) { for ($a = 0; $a < count($file_ids); $a++) { $file_id[] = ["id" => $file_ids[$a], "topic_id" => $insertId]; } $this->filemodel->saveAll($file_id); } add_log('add', $insertId, $param); add_project_log("创建项目", $insertId, "创建项目"); add_user($param["entrust_maker"], $insertId); add_user($param["entrust_approver"], $insertId); } catch (\Exception $e) { return to_assign(1, '操作失败,原因:' . $e->getMessage()); } return to_assign(0, '操作成功', ['aid' => $insertId]); //有日志了 } else { //拿到自身的所属于单位和职位,查询和自身单位一样的账号, // $unit_name = Db::name('admin')->where('id', $this->uid)->value('unit_name'); $person = Db::name("admin")->where("unit_name", $unit_name)->where("status",">",0)->field(["id", "nickname"])->select()->toArray(); // for ($a = 0; $a < count($person); $a++) { // if ($person[$a]["id"] == $this->uid) { // unset($person[$a]); // } // } $person = array_values($person); View::assign("person", $person); return view(); } } public function getemployeelist() { if (request()->isAjax()) { $data = $this->request->param(); $person = Db::name("admin")->where([["unit_name", "=", $data['id']], ["status", "=", 1]])->field(["id", "nickname", "mobile"])->select(); return $person; } } /** * 提交审批 */ public function save() { if (request()->isAjax()) { $param = get_params(); $handle = $this->Pushmessage->handleParam($param); $param = $handle['param']; // halt($param); // 检验完整性 try { validate(CostProjectValidate::class)->check($param); } catch (ValidateException $e) { // 验证失败 输出错误信息 return to_assign(1, $e->getError()); } if (isset($param["project_start_time"])) { $param["project_start_time"] = $param["project_start_time"] ? strtotime($param["project_start_time"]) : 0; } if (isset($param["project_end_time"])) { $param["project_end_time"] = $param["project_end_time"] ? strtotime($param["project_end_time"]) : 0; } $param["entrust_unit"] = get_login_admin("unit_name"); $param["entrust_unit_name"] = Db::name("department")->where("id", get_login_admin("unit_name"))->value("title"); $param["entrust_maker"] = $this->uid; $param["entrust_maker_name"] = get_login_admin("nickname"); $param["entrust_phone"] = get_login_admin("mobile"); $param["entrust_approver_name"] = get_admin($param["entrust_approver"])["nickname"]; //提交后状态改变为2,待审批中 $param["project_status"] = 2; $param["maker_type"] = 1; if ($param["id"] == 0) { $file_id = []; $file_ids = isset($param["file_ids"]) ? $param["file_ids"] : 0; unset($param["file_ids"]); // try { $param['create_time'] = time(); $param['update_time'] = time(); $param["creator"] = $this->uid; $insertGetId = $this->model->where('id', $param['id'])->strict(false)->field(true)->insertGetId($param); if ($file_ids) { for ($a = 0; $a < count($file_ids); $a++) { $file_id[] = ["id" => $file_ids[$a], "topic_id" => $insertGetId]; } $this->filemodel->saveAll($file_id); } //审批记录,project_status=2,审批中 $auditData = [ "project_id" => $insertGetId, "project_name" => $param["project_name"], "project_type" => "造价项目", "audit_name" => "项目分配审核", "audit_type" => 1, "sponsor" => Db::name('admin')->where("id", $this->uid)->value("nickname"), "sponsor_id" => $this->uid, "sponsor_unit" => $param["review_unit_name"], "approver" => $param["entrust_approver"], "approver_name" => Db::name('admin')->where("id", $param["entrust_approver"])->value("nickname"), "create_time" => time() ]; ProjectAudit::create($auditData); //审批记录end $MsgData = [ "uid" => $auditData["approver"], "project_id" => $insertGetId, "content" => get_login_admin("nickname") . "向您发起了一个" . $auditData["audit_name"], "create_time" => time() ]; $MsgGetId = $this->ProjectMsg->insertGetId($MsgData); $unread = Db::name("admin")->where("id", $auditData["approver"])->value("unread"); if (!empty($unread)) { $unread = $unread . "," . $MsgGetId; } else { $unread = $MsgGetId; } Db::name("admin")->where("id", $auditData["approver"])->update(["unread" => $unread]); add_log('edit', $insertGetId, $param); add_project_log("创建项目", $insertGetId, "创建项目"); add_project_log("提交立项审批", $insertGetId, "提交立项审批"); add_user($param["entrust_maker"], $insertGetId); add_user($param["entrust_approver"], $insertGetId); // $handle['financial'] = array_unique(array_merge((array) $param['entrust_approver'], $handle['financial'])); // $handle['company'] = array_unique(array_merge((array) $param['entrust_approver'], $handle['company'])); if(empty($handle['financial'])){ $handle['financial'] = (array)$param['entrust_approver']; }else{ $handle['financial'] = array_merge($handle['financial'], $param['entrust_approver']); } // halt($handle['financial'], $handle['company']); $this->Pushmessage->pushMessage($insertGetId, $handle['financial'], $handle['company']); // } catch (\Exception $e) { // return to_assign(1, '操作失败,原因:' . $e->getMessage()); // } } else { //编辑 try { $file_ids = isset($param["file_ids"]) ? $param["file_ids"] : 0; unset($param["file_ids"]); $param['update_time'] = time(); $this->model->where('id', $param['id'])->strict(false)->field(true)->update($param); if ($file_ids) { for ($a = 0; $a < count($file_ids); $a++) { $file_id[] = ["id" => $file_ids[$a], "topic_id" => $param['id']]; } $this->filemodel->saveAll($file_id); } //审批记录,project_status=2,审批中 $auditData = [ "project_id" => $param['id'], "project_name" => $param["project_name"], "project_type" => "造价项目", "audit_name" => "项目分配审核", "audit_type" => 1, "sponsor" => Db::name('admin')->where("id", $this->uid)->value("nickname"), "sponsor_id" => $this->uid, "sponsor_unit" => $param["review_unit_name"], "approver" => $param["entrust_approver"], "approver_name" => Db::name('admin')->where("id", $param["entrust_approver"])->value("nickname"), "create_time" => time() ]; ProjectAudit::create($auditData); //审批记录end $MsgData = [ "uid" => $auditData["approver"], "project_id" => $param['id'], "content" => get_login_admin("nickname") . "向您发起了一个" . $auditData["audit_name"], "create_time" => time() ]; $MsgGetId = $this->ProjectMsg->insertGetId($MsgData); $unread = Db::name("admin")->where("id", $auditData["approver"])->value("unread"); if (!empty($unread)) { $unread = $unread . "," . $MsgGetId; } else { $unread = $MsgGetId; } Db::name("admin")->where("id", $auditData["approver"])->update(["unread" => $unread]); add_project_log("提交立项审批", $param['id'], "提交立项审批"); add_user($param["entrust_approver"], $param['id']); // $handle['financial'] = array_unique(array_merge((array) $param['entrust_approver'], $handle['financial'])); // $handle['company'] = array_unique(array_merge((array) $param['entrust_approver'], $handle['company'])); if(empty($handle['financial'])){ $handle['financial'] = (array)$param['entrust_approver']; }else{ $handle['financial'] = array_merge($handle['financial'], $param['entrust_approver']); } $this->Pushmessage->pushMessage($param['id'], $handle['financial'], $handle['company']); } catch (\Exception $e) { return to_assign(1, '操作失败,原因:' . $e->getMessage()); } } return to_assign(0, "操作成功"); } } /** * 撤回 */ public function withdraw() { if (request()->isAjax()) { $param = get_params(); $status = Db::name("cost_project")->where("id", $param["id"])->field("project_status")->select(); // halt($status[0]["status"]); if ($status[0]["project_status"] < 3) { if (isset($param["project_start_time"])) { $param["project_start_time"] = $param["project_start_time"] ? strtotime($param["project_start_time"]) : 0; } if (isset($param["project_end_time"])) { $param["project_end_time"] = $param["project_end_time"] ? strtotime($param["project_end_time"]) : 0; } $param = array_merge($param, ["project_status" => 1]); try { $param['update_time'] = time(); $this->model->where('id', $param['id'])->strict(false)->field(true)->update($param); ProjectAudit::where([["project_id", "=", $param["id"]], ["audit_status", "=", 1], ["audit_name","=","项目分配审核"]])->delete(); add_log('edit', $param['id'], $param); add_project_log('撤回', $param['id'], "撤回"); } catch (\Exception $e) { return to_assign(1, '操作失败,原因:' . $e->getMessage()); } return to_assign(0, "操作成功"); } else { return to_assign(0, "已审核,无法撤回"); } } } /** * 编辑|保存 */ public function edit() { $param = get_params(); // halt($param); $type = isset($param['type']) ? $param['type'] : 0; if (request()->isAjax()) { // halt($param); if ($type == 2) { $id = isset($param['id']) ? $param['id'] : 0; $detail = $this->model->getCostProjectById($id); $review_unit_name = Db::name('department')->where(['id' => $detail["review_unit"]])->value('title'); $unit_name = Db::name('admin')->where('id', $this->uid)->value('unit_name'); $person = Db::name("admin")->where([["unit_name", "=", $unit_name], ["status", "=", 1]])->field(["id", "nickname"])->select()->toArray(); // for ($a = 0; $a < count($person); $a++) { // if ($person[$a]["id"] == $this->uid) { // unset($person[$a]); // } // } // $person = array_values($person); $review_person = Db::name("admin")->where([["unit_name", "=", $detail["review_unit"]], ["status", "=", 1]])->field(["id", "nickname"])->select(); $review_name = Db::name("admin")->where("id", $detail['review_head'])->field(["id", "nickname"])->find(); $audit = Db::name("project_audit")->where([["project_id", "=", $id], ["sponsor_id", "=", $this->uid]])->order('create_time', 'desc')->select(); $file_array = Db::name('ProjectFile') ->field('mf.id,mf.topic_id,mf.admin_id,f.name,f.filesize,f.filepath,f.fileext,f.create_time,f.admin_id,a.nickname as admin_name') ->alias('mf') ->join('File f', 'mf.file_id = f.id', 'LEFT') ->join('Admin a', 'mf.admin_id = a.id', 'LEFT') ->order('mf.create_time desc') ->where(array('mf.topic_id' => $id, 'mf.module' => 'project')) ->select()->toArray(); $comment_type = isset($param["comment_type"])?$param['comment_type'] : 0; $comment = Db::name("project_comment")->where("type",$comment_type) ->where("project_id", $id)->order('create_time', 'asc')->select(); $project_log = self::project_log($id); View::assign('project_log', $project_log); $field = $this->Field->get_field_rules_new($this->uid); $field_edit = $this->Field->get_field_rules_edit_new($this->uid); $c = $detail['project_end_time'] - time(); if ($c > 0) { $advent_time = floor($c / 86400) . "天"; } else { $c = -$c; $advent_time = floor($c / 86400) . "天"; } if (!empty($detail)) { View::assign('advent_time', $advent_time); View::assign('comment', $comment); View::assign('project_id', $id); View::assign("audit", $audit); View::assign("review_name", $review_name); View::assign("review_person", $review_person); View::assign("person", $person); View::assign('detail', $detail); View::assign('review_unit_name', $review_unit_name); View::assign('field', $field); // dump($field_edit); View::assign('field_edit', $field_edit); View::assign('file_array', $file_array); View::assign('project_five', self::getProjectFive()); return view(); } else { throw new \think\exception\HttpException(404, '找不到页面'); } } if (isset($param["project_start_time"])) { $param["project_start_time"] = $param["project_start_time"] ? strtotime($param["project_start_time"]) : 0; } if (isset($param["project_end_time"])) { $param["project_end_time"] = $param["project_end_time"] ? strtotime($param["project_end_time"]) : 0; } $field_name = array_keys($this->field_name); $ab = $this->model->where("id", $param["id"])->field($field_name)->find()->toArray(); $ab["project_start_time"] = date('Y-m-d', $ab["project_start_time"]); $ab["project_end_time"] = date('Y-m-d', $ab["project_end_time"]); $c = array_intersect_key($param, $ab); if (isset($c["project_start_time"])) { $c["project_start_time"] = date('Y-m-d', $c["project_start_time"]); } if (isset($c["project_end_time"])) { $c["project_end_time"] = date('Y-m-d', $c["project_end_time"]); } $maker_name = get_login_admin("nickname"); $content = ''; foreach ($c as $key => $value) { if ($c[$key] !== $ab[$key]) { $value = !empty($value) ? $value : "无"; $content = $content . $this->field_name[$key] . "从" . $ab[$key] . "修改为" . $value . ","; } } $content = rtrim($content, ","); if (empty($content)) { $content = "无修改"; } add_project_log('编辑', $param["id"], $content, 1); $this->model->editCostProject($param); } else { $id = isset($param['id']) ? $param['id'] : 0; $detail = $this->model->getCostProjectById($id); $review_unit_name = Db::name('department')->where(['id' => $detail["review_unit"]])->value('title'); $unit_name = get_login_admin("unit_name"); $person = Db::name("admin")->where([["unit_name", "=", $unit_name], ["status", "=", 1]])->field(["id", "nickname"])->select()->toArray(); // for ($a = 0; $a < count($person); $a++) { // if ($person[$a]["id"] == $this->uid) { // unset($person[$a]); // } // } // $person = array_values($person); $review_person = Db::name("admin")->where([["unit_name", "=", $detail["review_unit"]], ["status", "=", 1]])->field(["id", "nickname"])->select(); $review_name = Db::name("admin")->where("id", $detail['review_head'])->field(["id", "nickname"])->find(); $audit = Db::name("project_audit")->where([["project_id", "=", $id], ["sponsor_id", "=", $this->uid]])->order('create_time', 'desc')->select(); $file_array = Db::name('ProjectFile') ->field('mf.id,mf.topic_id,mf.admin_id,f.name,f.filesize,f.filepath,f.fileext,f.create_time,f.admin_id,a.nickname as admin_name') ->alias('mf') ->join('File f', 'mf.file_id = f.id', 'LEFT') ->join('Admin a', 'mf.admin_id = a.id', 'LEFT') ->order('mf.create_time desc') ->where(array('mf.topic_id' => $id, 'mf.module' => 'project')) ->select()->toArray(); $comment_type = isset($param["comment_type"])?$param['comment_type'] : 0; $comment = Db::name("project_comment")->where("type",$comment_type) ->where("project_id", $id)->order('create_time', 'asc')->select(); $project_log = self::project_log($id); View::assign('project_log', $project_log); $field = $this->Field->get_field_rules_new($this->uid); $field_edit = $this->Field->get_field_rules_edit_new($this->uid); //小红点消息 $red = Db::name("new_msg")->where([["uid", '=', $this->uid], ["project_id", "=", $id]])->field('detail,comment,report,user,contact')->find(); if (empty($red)) { $red = ["detail" => 0, "comment" => 0, "report" => 0, "user" => 0, "contact" => 0]; } // dump($red); $c = $detail['project_end_time'] - time(); if ($c > 0) { $advent_time = floor($c / 86400) . "天"; } else { $c = -$c; $advent_time = floor($c / 86400) . "天"; } if (!empty($detail)) { View::assign('advent_time', $advent_time); View::assign('comment', $comment); View::assign('project_id', $id); View::assign('red', $red); View::assign("audit", $audit); View::assign("review_name", $review_name); View::assign("review_person", $review_person); View::assign("person", $person); View::assign('detail', $detail); View::assign('review_unit_name', $review_unit_name); View::assign('field', $field); // dump($field_edit); View::assign('field_edit', $field_edit); View::assign('file_array', $file_array); View::assign('project_five', self::getProjectFive()); return view(); } else { throw new \think\exception\HttpException(404, '找不到页面'); } } } public function get_file(){ $param = get_params(); $id = isset($param['id']) ? $param['id'] : 0; $file_array = Db::name('ProjectFile') ->field('mf.id,mf.topic_id,mf.admin_id,f.name,f.filesize,f.filepath,f.fileext,f.create_time,f.admin_id,a.nickname as admin_name,mf.remark') ->alias('mf') ->join('File f', 'mf.file_id = f.id', 'LEFT') ->join('Admin a', 'mf.admin_id = a.id', 'LEFT') ->order('mf.create_time desc') ->where(array('mf.topic_id' => $id, 'mf.module' => 'project')) ->paginate(9999, false, ['query' => $param]); return table_assign(0, '', $file_array); } public function project_log($project_id) { // $project_id = 24; $login_admin = get_admin(get_login_admin('id')); $where = array(); if ($login_admin['user_type'] == 2) { $where = [ ['project_status', '>=', 3], ['unit_name', '=', $login_admin['unit_name']], ]; } else { if ($login_admin['permission'] != 1) { $where = [ ['unit_name', '=', $login_admin['unit_name']], ]; } } // dump($where); $project_log = Db::name('ProjectLog')->where($where) ->where('project_id', $project_id) ->order('create_time', 'desc') ->select()->toArray(); foreach ($project_log as $key => $value) { $project_log[$key]['create_time'] = date("Y-m-d H:i:s", $value['create_time']); if($login_admin['user_type'] != 0){ if(str($project_log[$key]['content'], '送审单位承担审核费')){ unset($project_log[$key]); } if(str($project_log[$key]['content'], '施工单位负责核减超5%评审费部分')){ unset($project_log[$key]); } } } $project_log = array_values($project_log); // dump($project_log); // View::assign('project_log', $project_log); // return View(); return $project_log; } /** * 查看信息 */ public function read() { $param = get_params(); $id = isset($param['id']) ? $param['id'] : 0; // dump($id); $detail = $this->model->getCostProjectById($id); $comment_type = isset($param["comment_type"])?$param['comment_type'] : 0; $comment = Db::name("project_comment")->where("type",$comment_type) ->where("project_id", $id)->order('create_time', 'asc')->select(); $file_array = Db::name('ProjectFile') ->field('mf.id,mf.topic_id,mf.admin_id,f.name,f.filesize,f.filepath,f.fileext,f.create_time,f.admin_id,a.nickname as admin_name') ->alias('mf') ->join('File f', 'mf.file_id = f.id', 'LEFT') ->join('Admin a', 'mf.admin_id = a.id', 'LEFT') ->order('mf.create_time desc') ->where(array('mf.topic_id' => $id, 'mf.module' => 'project')) ->select()->toArray(); $report = Db::name("project_report")->where([["project_id", "=", $id], ["r.status", "=", 1]])->alias("r")->join("admin a", "r.maker_id = a.id")->field("r.*,a.nickname")->select(); $uid = Db::name("relation")->where("uuid",$id)->column("uid"); $contract = Db::name("contract")->whereIn("id",$uid) ->where("subject_id",get_login_admin("unit_name"))->column("id,name,type,sign_time,sign_name"); //小红点消息 $red = Db::name("new_msg")->where([["uid", '=', $this->uid], ["project_id", "=", $id]])->field('detail,comment,report,user,contact')->find(); if (empty($red)) { $red = ["detail" => 0, "comment" => 0, "report" => 0, "user" => 0, "contact" => 0]; } //剩余时间 $c = $detail['project_end_time'] - time(); if ($c > 0) { $advent_time = floor($c / 86400) . "天"; } else { $c = -$c; $advent_time = floor($c / 86400) . "天"; } $project_log = self::project_log($id); View::assign('project_log', $project_log); // halt($project_log); // 根据用户id 查询其能显示的字段 $field = $this->Field->get_field_rules_new(get_login_admin('id')); // dump($field); if (!empty($detail)) { View::assign('advent_time', $advent_time); View::assign('project_id', $id); View::assign('comment', $comment); View::assign('field', $field); View::assign('detail', $detail); View::assign('file_array', $file_array); View::assign('report', $report); View::assign('contract', $contract); View::assign('red', $red); View::assign('project_five', self::getProjectFive()); // dump(self::getProjectFive()); return view(); } else { throw new \think\exception\HttpException(404, '找不到页面'); } } /** * 删除 * type=0,逻辑删除,默认 * type=1,物理删除 */ public function del() { $param = get_params(); $status = Db::name("cost_project")->where("id", $param["id"])->field("project_status")->select(); if ($status[0]["project_status"] < 3) { $id = isset($param['id']) ? $param['id'] : 0; $type = isset($param['type']) ? $param['type'] : 0; add_project_log("删除项目", $id, "删除项目"); $this->model->delCostProjectById($id, $type); } else { return to_assign(0, "已审核,无法删除"); } } //获取客户列表 public function get_customer() { $param = get_params(); $where = array(); if (!empty($param['keywords'])) { $where[] = ['id|title', 'like', '%' . $param['keywords'] . '%']; } $where = [ ["delete_time", "=", 0], ["pid", "=", 0], ["type", "=", 2] ]; $rows = empty($param['limit']) ? get_config('app.page_size') : $param['limit']; $list = $this->department->field('id,title,address,leader_id')->order('id asc')->where($where)->paginate($rows, false) ->each(function ($item) { $item->nickname = Db::name('admin')->where(['id' => $item->leader_id])->value('nickname'); $item->mobile = Db::name('admin')->where(['id' => $item->leader_id])->value('mobile'); }); // halt($list); table_assign(0, '', $list); } //获取客户列表 public function addConstructionPeople() { if (request()->isAjax()) { $param = get_params(); if ($param['type'] == '1') { $data = $this->model->where('id', $param['data']['id'])->find(); if ($data["construction_unit"] !== null || $data["construction_head"] !== null || $data["construction_email"] !== null || $data["construction_phone"] !== null ) { return to_assign(0, "已存在!!"); } else { return to_assign(200, "请上传!!"); } } else { $this->model->addConstructionPeople($param['data']); } add_project_log('添加施工单位人员', $param['data']['id'], '添加施工单位人员'); } else { $param = get_params(); $project_id = isset($param['project_id']) ? $param['project_id'] : 0; //关联项目id View::assign('project_id', $project_id); return view(); } } public function add_sent_review_unit() { if (request()->isAjax()) { $param = get_params(); if ($param['type'] == '1') { $data = $this->model->where('id', $param['data']['id'])->find(); if ($data["sent_review_unit_name"] !== null || $data["sent_review_head_name"] !== null || $data["sent_review_head_email"] !== null || $data["sent_review_phone"] !== null ) { return to_assign(0, "已存在,请移除后再添加"); } else { return to_assign(200, "请上传!!"); } } else { add_project_log('移除送审单位成员', $param['data']['id'], $param['data']["sent_review_head_name"], 5); $this->model->addConstructionPeople($param['data']); } add_project_log('新增送审单位成员', $param['data']['id'], '新增送审单位成员'); } else { $param = get_params(); $project_id = isset($param['project_id']) ? $param['project_id'] : 0; //关联项目id View::assign('project_id', $project_id); return view(); } } //添加送审单位 // public function add_sent_review_unit() // { // if (request()->isAjax()) { // $param = get_params(); // $id = isset($param["id"]) ? $param["id"] : 0; // $project_id = isset($param["project_id"]) ? $param["project_id"] : 0; // $a = $this->model->where("id", $project_id)->value("sent_review_head"); // if ($a) { // return to_assign(1, '已有负责人,请移除后再添加'); // } // $selfData = get_admin($id); // $data = [ // "id" => $project_id, // "sent_review_head" => $id, // "sent_review_head_name" => $selfData["nickname"], // "sent_review_unit" => $selfData["unit_name"], // "sent_review_unit_name" => Db::name("department")->where("id", $selfData["unit_name"])->value("title"), // "sent_review_phone" => $selfData["mobile"] // ]; // try { // $this->model->update($data); // } catch (\Exception $e) { // return to_assign(1, '操作失败,原因:' . $e->getMessage()); // } // add_project_log('添加送审单位成员', $project_id, $selfData["nickname"], 5); // return to_assign(0, "操作成功"); // } // } //移除送审单位成员 public function remove_sent_review() { $p = get_params(); $project_id = isset($p["project_id"]) ? $p["project_id"] : 0; $data = [ "sent_review_unit" => null, "sent_review_unit_name" => null, "sent_review_head_name" => null, "sent_review_head" => null, "sent_review_phone" => null, "sent_review_head_email" => null, ]; $this->model->where("id", $project_id)->update($data); remove_user($p["id"]); add_project_log('移除送审单位成员', $project_id, $p["nickname"], 5); return to_assign(0, "操作成功"); } public function project_user() { $param = get_params(); $ids = $this->model->where("id", $param["project_id"])->field("entrust_maker,review_head,operate_head,operate_team")->find()->toArray(); $idarr = $ids["operate_team"] . ',' . $ids["operate_head"] . ',' . $ids["review_head"] . ',' . $ids["entrust_maker"]; $idarr = explode(",", $idarr); $rows = empty($param['limit']) ? get_config('app.page_size') : $param['limit']; $list = $this->Adminmodel->whereIn("id", $idarr)->field("id,nickname,unit_name,mobile,email")->paginate($rows, false, ['query' => $param]) // field("a.id,a.nickname,a.unit_name,a.mobile,a.email,d.title,d.type")->join('department d', 'a.unit_name = d.id', 'LEFT') ->each(function ($item) { //获取单位的邮箱,单位信息页没做 $item->email = Db::name('department')->where(['id' => $item->unit_name])->value('email'); $type = Db::name('department')->where(['id' => $item->unit_name])->value('type'); $item->unit_name = Db::name('department')->where(['id' => $item->unit_name])->value('title'); // dump($type); if ($type == 0) { $item->unit_type = "委托单位"; } elseif ($type == 1) { $item->unit_type = "送审单位"; } elseif ($type == 2) { $item->unit_type = "评审机构"; } else { $item->unit_type = "施工单位"; } })->toArray(); $list = $list["data"]; $time_id = time(); $shigong = $this->model->where('id', $param["project_id"])->find(); if ($shigong["construction_unit"] !== null || $shigong["construction_head"] !== null || $shigong["construction_email"] !== null || $shigong["construction_phone"] !== null ) { $shigongdata["id"] = $time_id; $shigongdata["nickname"] = $shigong["construction_unit"]; $shigongdata["unit_name"] = $shigong["construction_head"]; $shigongdata["email"] = $shigong["construction_email"]; $shigongdata["mobile"] = $shigong["construction_phone"]; $shigongdata["unit_type"] = "施工单位"; array_push($list, $shigongdata); } $time_id_sent = time()-200; if ($shigong["sent_review_unit"] !== null || $shigong["sent_review_head"] !== null || $shigong["sent_review_phone"] !== null || $shigong["sent_review_head_email"] !== null ) { $sent_review_data["id"] = $time_id_sent; $sent_review_data["nickname"] = $shigong["sent_review_head_name"]; $sent_review_data["unit_name"] = $shigong["sent_review_unit_name"]; $sent_review_data["email"] = $shigong["sent_review_head_email"]; $sent_review_data["mobile"] = $shigong["sent_review_phone"]; $sent_review_data["unit_type"] = "送审单位"; array_push($list, $sent_review_data); } if (empty($ids['operate_team'])) { $operate_team[] = '0'; } else { $operate_team = explode(',', $ids['operate_team']); } for ($i = 0; $i < count($list); $i++) { if ($list[$i]['id'] == $ids['entrust_maker']) { // dump($list[$i]['id'],$ids['entrust_maker']); $list[$i]["type"] = 1; } elseif ($list[$i]['id'] == $ids['review_head']) { $list[$i]["type"] = 2; } elseif ($list[$i]['id'] == $ids['operate_head']) { $list[$i]["type"] = 3; } elseif (in_array($list[$i]['id'], $operate_team)) { $list[$i]["type"] = 4; } elseif ($list[$i]['id'] == $time_id) { $list[$i]["type"] = 5; } elseif ($list[$i]['id'] !== time() - 1000) { $list[$i]["type"] = 6; } } $type = array_column($list, 'type'); array_multisort($type, SORT_ASC, $list); $lists["total"] = count($list); $lists["data"] = $list; return table_assign(0, '', $lists); } public function remove_construction_user() { $p = get_params(); $data = [ "construction_unit" => null, "construction_head" => null, "construction_email" => null, "construction_phone" => null ]; $this->model->where("id", $p["project_id"])->update($data); add_project_log('删除施工方人员', $p["project_id"], '删除施工方人员'); return to_assign(0, "操作成功"); } public function getProjectFive() { $where = [ ['name', '=', '作业日志-财政局'], ['name', '=', '工作记录-财政局'], ['name', '=', '项目报告-财政局'], ['name', '=', '项目人员-财政局'], ['name', '=', '项目动态-财政局'], ['name', '=', '项目附件-财政局'], ['name', '=', '联系函-财政局'], ]; $list = Db::name('AdminRule')->whereOr($where)->field('id,name')->select()->toArray(); $group_id = Db::name('AdminGroupAccess')->where('uid', get_login_admin('id'))->value('group_id'); $login_rules = Db::name('AdminGroup')->where('id', $group_id)->value('rules'); $login_rules = explode(',', $login_rules); $rules_id = array(); foreach ($list as $key => $value) { if ($value['name'] == "作业日志-财政局") { if (in_array($value['id'], $login_rules)) { $rules_id['project_comments'] = 1; } else { $rules_id['project_comments'] = 0; } } else if ($value['name'] == "工作记录-财政局") { if (in_array($value['id'], $login_rules)) { $rules_id['project_record'] = 1; } else { $rules_id['project_record'] = 0; } } else if ($value['name'] == "项目报告-财政局") { if (in_array($value['id'], $login_rules)) { $rules_id['project_report'] = 1; } else { $rules_id['project_report'] = 0; } } else if ($value['name'] == "项目人员-财政局") { if (in_array($value['id'], $login_rules)) { $rules_id['project_user'] = 1; } else { $rules_id['project_user'] = 0; } } else if ($value['name'] == "项目动态-财政局") { if (in_array($value['id'], $login_rules)) { $rules_id['project_log'] = 1; } else { $rules_id['project_log'] = 0; } } else if ($value['name'] == "项目附件-财政局") { if (in_array($value['id'], $login_rules)) { $rules_id['project_file'] = 1; } else { $rules_id['project_file'] = 0; } } else if ($value['name'] == "联系函-财政局") { if (in_array($value['id'], $login_rules)) { $rules_id['project_contact'] = 1; } else { $rules_id['project_contact'] = 0; } } } return $rules_id; } public function ceshi($id) { View::assign('detailId', $id); return view(); } }