'项目编号', "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 Fieldproprietor($this->app); $this->department = new DepartmentModel(); $this->model = new CostProjectModel(); $this->filemodel = new ProjectFile(); $this->uid = get_login_admin('id'); $this->Adminmodel = new Admin(); } /** * 数据列表 */ 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; } if (!empty($param['project_status'])) { $where[] = ['project_status', '=', $param['project_status']]; } if (!empty($param['province'])) { $where[] = ['province', '=', $param['province']]; } if (!empty($param['city'])) { $where[] = ['city', '=', $param['city']]; } if (!empty($param['area'])) { $where[] = ['area', '=', $param['area']]; } if (!empty($param['project_end_time'])) { $where[] = ['project_end_time', '<', $param['project_end_time']]; } if (!empty($param['project_start_time'])) { $where[] = ['project_start_time', '>', $param['project_start_time']]; } if (!empty($param['review_head_name'])) { $where[] = ['review_head_name', 'like', '%' . $param['review_head_name'] . '%']; } if (!empty($param['review_unit_name'])) { $where[] = ['review_unit_name', 'like', '%' . $param['review_unit_name']. '%']; } if (!empty($param['sent_review_unit_name'])) { $where[] = ['sent_review_unit_name', 'like', '%' . $param['sent_review_unit_name']. '%']; } if (!empty($param['project_name'])) { $where[] = ['project_name', 'like', '%' . $param['project_name'] . '%']; } $where3 =[]; if (!empty($param['keyword'])) { $keyword = $param['keyword']; $where3[] = ['project_num|project_name|review_unit', 'like', '%' . $keyword . '%']; } //项目可见的权限 $field = $this->Field->get_field_rules_new($this->uid); //1全部-可查看可编辑,2全部-可查看,0与我有关 $see_auth = isset($field["see_auth"]) ? $field["see_auth"] : 3; if($see_auth==0 || $see_auth==3){ $where[] =["delete_time", "=", 0]; $where[] =["sent_review_unit", "=", get_login_admin("unit_name")]; $where[] =["sent_review_head","=",$this->uid]; }else{ $where[] =["delete_time", "=", 0]; $where[] =["sent_review_unit", "=", get_login_admin("unit_name")]; } $this->see_auth = $see_auth; $list = $this->model->where($where)->where($where3)->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->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($this->uid); // halt($field); View::assign('field', $field); return view(); } } //TODO public function list() { // if (request()->isAjax()) { $param = get_params(); strtotime('-10 days'); // halt(strtotime('-10 days')); $where = [ ["delete_time", "=", 0], ["entrust_maker", "=", $this->uid], ['project_end_time', '<', strtotime('15 days')], ['project_end_time', '>', time()], ["project_status", "<", 7], ["project_status", ">", 3] ]; $where2 = [ ["delete_time", "=", 0], ["entrust_approver", "=", $this->uid], ['project_end_time', '<', strtotime('15 days')], ['project_end_time', '>', time()], ["project_status", "<", 7], ["project_status", ">", 3] ]; $rows = empty($param['limit']) ? get_config('app . page_size') : $param['limit']; $order = empty($param['order']) ? 'id desc' : $param['order']; $list = $this->model->whereOr([$where, $where2]) ->order($order) ->paginate($rows, false, ['query' => $param]) ->each(function ($item) { }); // halt($list); return table_assign(0, '', $list); // } } public function list2() { // if (request()->isAjax()) { $param = get_params(); strtotime('-10 days'); // halt(strtotime('-10 days')); $where = [ ["delete_time", "=", 0], ["entrust_maker", "=", $this->uid], ['project_end_time', '<', time()], ["project_status", "<", 7], ["project_status", ">", 3] ]; $where2 = [ ["delete_time", "=", 0], ["entrust_approver", "=", $this->uid], ['project_end_time', '<', time()], ["project_status", "<", 7], ["project_status", ">", 3] ]; $rows = empty($param['limit']) ? get_config('app . page_size') : $param['limit']; $order = empty($param['order']) ? 'id desc' : $param['order']; $list = $this->model->whereOr([$where, $where2]) ->order($order)->paginate($rows, false, ['query' => $param]) ->each(function ($item) { }); // halt($list); return table_assign(0, '', $list); // } } /** * 业主建立项目 */ public function add() { if (request()->isAjax()) { $param = get_params(); 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["sent_review_unit"] = get_login_admin("unit_name"); $param["sent_review_unit_name"] = Db::name("department")->where("id", get_login_admin("unit_name"))->value("title"); $param["sent_review_head"] = $this->uid; $param["sent_review_head_name"] = get_login_admin("nickname"); $param["sent_review_head_phone"] = get_login_admin("mobile"); $param["project_status"] = 0; //0:财政局,1:业主,2:公司 $param["maker_type"] = 1; $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["sent_review_head"], $insertId); } catch (\Exception $e) { return to_assign(1, '操作失败,原因:' . $e->getMessage()); } return to_assign(0, '操作成功', ['aid' => $insertId]); } else { $person = Db::name("admin")->where("unit_name", get_login_admin("unit_name"))->where("status",">",0)->field(["id", "nickname"])->select()->toArray(); View::assign("person", $person); return view(); } } /** * 业主建立项目 */ public function save() { if (request()->isAjax()) { $param = get_params(); $id = $param["id"] ?? 0; 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["sent_review_unit"] = get_login_admin("unit_name"); $param["sent_review_unit_name"] = Db::name("department")->where("id", get_login_admin("unit_name"))->value("title"); $param["sent_review_head"] = $this->uid; $param["sent_review_head_name"] = get_login_admin("nickname"); $param["sent_review_head_phone"] = get_login_admin("mobile"); $param["project_status"] = 0; $param["proprietor_status"] = 1; //0:财政局,1:业主,2:公司 $param["maker_type"] = 1; $file_ids = isset($param["file_ids"]) ? $param["file_ids"] : 0; unset($param["file_ids"]); $file_id = []; try { $param['create_time'] = time(); if($id==0){ $insertId = $this->model->strict(false)->field(true)->insertGetId($param); }else{ $this->model->where("id",$id)->update($param); $insertId = $id; } 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); } $auditData = [ "project_id" => $insertId, "project_name" => $param["project_name"], "project_type" => "造价项目", "audit_name" => "项目立项审核", "audit_type" => 16,//业主审核 "sponsor" => get_login_admin("nickname"), "sponsor_id" => $this->uid, "sponsor_unit" => Db::name("department")->where("id",get_login_admin("unit_name"))->value("title"), "approver" => $param["sent_review_approver"], "approver_name" => Db::name('admin')->where("id", $param["sent_review_approver"])->value("nickname"), "create_time" => time() ]; ProjectAudit::create($auditData); add_log('add', $insertId, $param); add_project_log("创建项目", $insertId, "创建项目"); add_user($param["sent_review_head"], $insertId); } catch (\Exception $e) { return to_assign(1, '操作失败,原因:' . $e->getMessage()); } return to_assign(0, '操作成功', ['aid' => $insertId]); } else { $person = Db::name("admin")->where("unit_name", get_login_admin("unit_name"))->where("status",">",0)->field(["id", "nickname"])->select()->toArray(); View::assign("person", $person); return view(); } } public function edit(){ $param = get_params(); $type = isset($param["type"])??0; if(request()->isAjax()&&$type!=2){ $param = get_params(); $id = $param["id"] ?? 0; 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["sent_review_unit"] = get_login_admin("unit_name"); $param["sent_review_unit_name"] = Db::name("department")->where("id", get_login_admin("unit_name"))->value("title"); $param["sent_review_head"] = $this->uid; $param["sent_review_head_name"] = get_login_admin("nickname"); $param["sent_review_head_phone"] = get_login_admin("mobile"); $param["project_status"] = 0; //0:财政局,1:业主,2:公司 $param["maker_type"] = 1; $file_ids = isset($param["file_ids"]) ? $param["file_ids"] : 0; unset($param["file_ids"]); $file_id = []; try { $param['create_time'] = time(); $this->model->where("id",$id)->update($param); $insertId = $id; 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, "编辑项目"); } catch (\Exception $e) { return to_assign(1, '操作失败,原因:' . $e->getMessage()); } return to_assign(0, '操作成功', ['aid' => $insertId]); }else{ $param = get_params(); $id = $param['id'] ?? 0; $detail = $this->model->getCostProjectById($id); $person = Db::name("admin")->where("unit_name", get_login_admin("unit_name"))->where("status",">",0)->field(["id", "nickname"])->select()->toArray(); $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(); if (!empty($detail)) { View::assign('project_id', $id); View::assign('detail', $detail); View::assign("person", $person); View::assign("file_array", $file_array); View::assign('project_five', self::getProjectFive()); } else { throw new \think\exception\HttpException(404, '找不到页面,请联系管理员'); } return view(); } } /** * 查看信息 */ 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(); // halt($comment); $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); // halt(self::getProjectFive()); if (!empty($detail)) { 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('project_five', self::getProjectFive()); return view(); } else { throw new \think\exception\HttpException(404, '找不到页面'); } } //获取客户列表 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() { $param = get_params(); if (request()->isAjax()) { $this->model->addConstructionPeople($param); } else { $project_id = isset($param['project_id']) ? $param['project_id'] : 0; //关联项目id View::assign('project_id', $project_id); return view(); } } public function getConstructionPeople() { $param = get_params(); if (request()->isAjax()) { $data = $this->model->where('id', $param["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, "请上传!!"); } } } 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"]; 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'], explode(',', $ids['operate_team']))) { $list[$i]["type"] = 4; } } $type = array_column($list, 'type'); array_multisort($type, SORT_ASC, $list); $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(); $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); } $list["data"] = $list; return table_assign(0, '', $list); } 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 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 project_log($project_id) { // $project_id = 24; $login_admin = get_login_admin(); $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']); } // dump($project_log); // View::assign('project_log', $project_log); // return View(); return $project_log; } }