Temporary.php 44 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182
  1. <?php
  2. declare (strict_types=1);
  3. namespace app\mobile\controller;
  4. use app\admin\BaseController;
  5. use app\admin\controller\field\Field;
  6. use app\admin\model\Admin;
  7. use app\admin\model\Admin as AdminList;
  8. use app\admin\model\Appointment as AppointmentModel;
  9. use app\admin\model\Contact;
  10. use app\admin\model\Contact as ContactModel;
  11. use app\admin\model\CostProject as CostProjectModel;
  12. use app\admin\model\ProjectAudit as AuditModel;
  13. use app\admin\model\ProjectRecord;
  14. use think\App;
  15. use think\facade\Db;
  16. use think\facade\Request;
  17. use think\facade\Session;
  18. use think\facade\View;
  19. use app\admin\model\Appropriation as AppropriationModel;
  20. use app\admin\controller\datastat\Datastat;
  21. class Temporary extends BaseController
  22. {
  23. /**
  24. * 构造函数
  25. */
  26. public function __construct(App $app)
  27. {
  28. $this->Datastat = new Datastat($app);
  29. $this->AppropriationModel = new AppropriationModel();
  30. $this->Field = new Field($app);
  31. $this->model = new CostProjectModel();
  32. $this->Adminmodel = new Admin();
  33. $this->Auditmodel = new AuditModel();
  34. $this->ContactModel = new ContactModel();
  35. $this->AppointmentModel = new AppointmentModel();
  36. $this->uid = get_login_admin('id');
  37. $this->unit = get_login_admin('unit_name');
  38. $this->user_tpe = Db::name("department")->where("id", $this->unit)->value("type");
  39. // $session_admin = get_config('app.session_admin');
  40. // $request = Request::instance();
  41. // if (!Session::has($session_admin) && $request->url() !== '/mobile/index/login.html') {
  42. // redirect('/mobile/index/login.html')->send();
  43. // exit;
  44. // }
  45. }
  46. public function kan_list()
  47. {
  48. //根据所登录的账号,查询跟本身有关的项目
  49. $param = get_params();
  50. $rows = empty($param['limit']) ? get_config('app . page_size') : $param['limit'];
  51. $order = empty($param['order']) ? 'id desc' : $param['order'];
  52. if (isset($param["project_start_time"])) {
  53. $param["project_start_time"] = $param["project_start_time"] ? strtotime($param["project_start_time"]) : 0;
  54. }
  55. if (isset($param["project_end_time"])) {
  56. $param["project_end_time"] = $param["project_end_time"] ? strtotime($param["project_end_time"]) : 0;
  57. }
  58. $where3 = [];//搜索条件
  59. if (!empty($param['project_status'])) {
  60. $where3[] = ['project_status', '=', $param['project_status']];
  61. }
  62. if (!empty($param['province'])) {
  63. $where3[] = ['province', '=', $param['province']];
  64. }
  65. if (!empty($param['city'])) {
  66. $where3[] = ['city', '=', $param['city']];
  67. }
  68. if (!empty($param['area'])) {
  69. $where3[] = ['area', '=', $param['area']];
  70. }
  71. if (!empty($param['project_end_time'])) {
  72. $where3[] = ['project_end_time', '<', $param['project_end_time']];
  73. }
  74. if (!empty($param['project_start_time'])) {
  75. $where3[] = ['project_start_time', '>', $param['project_start_time']];
  76. }
  77. if (!empty($param['keyword'])) {
  78. $keyword = $param['keyword'];
  79. $where3[] = ['project_num|project_name|review_unit', 'like', '%' . $keyword . '%'];
  80. }
  81. if (!empty($param['review_unit_name'])) {
  82. $where3[] = ['review_unit_name', 'like', '%' . $param['review_unit_name'] . '%'];
  83. }
  84. if (!empty($param['sent_review_unit_name'])) {
  85. $where3[] = ['sent_review_unit_name', 'like', '%' . $param['sent_review_unit_name'] . '%'];
  86. }
  87. if (!empty($param['entrust_unit_name'])) {
  88. $where3[] = ['entrust_unit_name', 'like', '%' . $param['entrust_unit_name'] . '%'];
  89. }
  90. if(isset($param['openid'])){
  91. $res = Db::name('follow_project')->where('openid',$param['openid'])->value('project_id');
  92. $list = $this->model->where($where3)->where('id','in',$res)
  93. ->order("create_time desc")->paginate(9999, false, ['query' => $param])
  94. ->each(function ($item) {})->toArray();
  95. $data = $list["data"];
  96. }else{
  97. $data = [];
  98. }
  99. // halt($list);
  100. // $data = $list["data"];
  101. // halt($real_list);
  102. View::assign("detail", $data);
  103. return view();
  104. }
  105. /**
  106. *个人资料
  107. */
  108. public function person()
  109. {
  110. $person = get_login_admin();
  111. $red = $this->Auditmodel->where("approver", $this->uid)->where("audit_status", 1)->count();
  112. $red_id = Db::name("new_msg")->where("uid", "=", $this->uid)->select();
  113. $red_kan = 0;
  114. foreach ($red_id as $item => $value) {
  115. if ($value["detail"] || $value["comment"] || $value["report"] || $value["user"] || $value["contact"]) {
  116. $red_kan = 1;
  117. }
  118. }
  119. View::assign("red_kan", $red_kan);
  120. View::assign('red', $red);
  121. View::assign('person', $person);
  122. return view();
  123. }
  124. /**
  125. * cp看板内容
  126. */
  127. public function detail()
  128. {
  129. $param = get_params();
  130. $id = isset($param['id']) ? $param['id'] : 0;
  131. $type = isset($param['type']) ? $param['type'] : 0;
  132. $rows = empty($param['limit']) ? get_config('app.page_size') : $param['limit'];
  133. $order = empty($param['order']) ? 'a.id desc' : $param['order'];
  134. $detail = $this->model->getCostProjectById($id);
  135. $comment = Db::name("project_comment")->where("project_id", $id)->order('create_time', 'desc')->select();
  136. $file_array = Db::name('ProjectFile')
  137. ->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')
  138. ->alias('mf')
  139. ->join('File f', 'mf.file_id = f.id', 'LEFT')
  140. ->join('Admin a', 'mf.admin_id = a.id', 'LEFT')
  141. ->order('mf.create_time desc')
  142. ->where(array('mf.topic_id' => $id, 'mf.module' => 'project'))
  143. ->select()->toArray();
  144. $report = Db::name("project_report")
  145. ->where([["project_id", "=", $id]])
  146. ->alias("r")->join("admin a", "r.maker_id = a.id")
  147. ->field("r.*,a.nickname")
  148. ->select();
  149. $contact = $this->ContactModel->where([['project_id', '=', $id]])
  150. ->field('a.*,u.nickname as admin_name,f.name,f.filesize,f.filepath,f.fileext,f.admin_id')
  151. ->alias('a')
  152. ->join('file f', "a.file = f.id", "left")
  153. ->join('Admin u', 'a.maker_id = u.id', "left")
  154. ->order($order)
  155. ->paginate(9999, false, ['query' => $param])
  156. ->each(function ($item, $key) {
  157. })->toArray();
  158. $contact = $contact['data'];
  159. $where = [
  160. ["cp_project_record.delete_time", "=", 0],
  161. ["project_id", "=", $id],
  162. ["maker_id", "=", get_login_admin('id')]
  163. ];
  164. $record = Db::name('project_record')->where($where)
  165. ->field('a.*,u.nickname as admin_name')
  166. ->alias('a')
  167. ->join('Admin u', 'a.maker_id = u.id', "left")
  168. ->order($order)
  169. ->select();
  170. $appropriation_uid = Db::name("appropriation_project")->where("project_id", $id)->value("uid");
  171. if (empty($appropriation_uid)) {
  172. $appropriation_data = [];
  173. $appropriation_file_array = [];
  174. } else {
  175. $where = [
  176. ["id", "=", $appropriation_uid],
  177. ["status", ">", 0]
  178. ];
  179. //请款
  180. $appropriation = Db::name("appropriation")->where($where)->find();
  181. if (!empty($appropriation)) {
  182. $projects = Db::name("appropriation_project")->alias("a")
  183. ->leftJoin("cost_project c", "a.project_id=c.id")
  184. ->where("uid", $appropriation["id"])->column("c.project_name,c.sent_review_cost");
  185. $data = [];
  186. $appropriation_amount = 0;
  187. for ($i = 0; $i < count($projects); $i++) {
  188. $v = $projects[$i];
  189. $b = $i + 1;
  190. $appropriation_amount += $v["sent_review_cost"];
  191. $data[] = $b . "." . $v["project_name"];
  192. }
  193. $appropriation_data = $appropriation;
  194. $appropriation_data["appropriation_amount"] = $appropriation_amount;
  195. $appropriation_data["project_name"] = $data;
  196. $appropriation_file_array = Db::name('ProjectFile')
  197. ->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')
  198. ->alias('mf')
  199. ->join('File f', 'mf.file_id = f.id', 'LEFT')
  200. ->join('Admin a', 'mf.admin_id = a.id', 'LEFT')
  201. ->order('mf.create_time desc')
  202. ->where(array('mf.topic_id' => $appropriation_uid, 'mf.module' => 'appropriation'))
  203. ->select()->toArray();
  204. } else {
  205. $appropriation_data = [];
  206. $appropriation_file_array = [];
  207. }
  208. }
  209. $red = Db::name("new_msg")->where([["uid", '=', $this->uid], ["project_id", "=", $id]])->field('detail,comment,report,user,contact')->find();
  210. if (empty($red)) {
  211. $red = ["detail" => 0, "comment" => 0, "report" => 0, "user" => 0, "contact" => 0];
  212. }
  213. $field = $this->Field->get_field_rules_new($this->uid);
  214. $fields = [];
  215. foreach ($field as $k=>$v){
  216. if($v==1){
  217. $fields[$k] = true;
  218. }else{
  219. $fields[$k] = false;
  220. }
  221. }
  222. if($this->user_tpe==2){
  223. $fields["sent_review_approver_amount"] = false;
  224. $fields["construction_approver_amount"] = false;
  225. }
  226. $appointmentList = $this->AppointmentModel->where("project_id",$id)->paginate(9999, false, ['query' => $param])
  227. ->order("create_time","desc")
  228. ->each(function ($item) {
  229. if($item->sponsor_unit==get_login_admin("unit_name")){
  230. $item->operate = false;
  231. }else{
  232. $item->operate = true;
  233. }
  234. });;
  235. // halt($appointmentList->toArray());
  236. View::assign('field', $fields);
  237. if (!empty($detail)) {
  238. View::assign('appointmentList', $appointmentList);
  239. View::assign('project_id', $id);
  240. View::assign('comment', $comment);
  241. View::assign('record', $record);
  242. View::assign('contact', $contact);
  243. View::assign('detail', $detail);
  244. View::assign('appropriation', $appropriation_data);
  245. View::assign('file_array', $file_array);
  246. View::assign('appropriation_file_array', $appropriation_file_array);
  247. View::assign('report', $report);
  248. View::assign('red', $red);
  249. return view();
  250. } else {
  251. throw new \think\exception\HttpException(404, '找不到页面');
  252. }
  253. }
  254. public function followProject()
  255. {
  256. if (request()->isAjax()) {
  257. $param = request()->param();
  258. // halt($param);
  259. if(!isset($param['id'])|| !isset($param['openid']) ){
  260. return to_assign(1, '参数错误请重试');
  261. }
  262. $res = Db::name('follow_project')->where('project_id',$param['id'])->where('openid',$param['openid'])->find();
  263. if($res == null){
  264. $isTrue =Db::name('follow_project')->insert(['project_id'=>$param['id'] , 'openid'=>$param['openid']]);
  265. if($isTrue){
  266. return to_assign(0, '关注成功!!');
  267. }else{
  268. return to_assign(1, '失败请重试!!');
  269. }
  270. }else{
  271. return to_assign(1, '已经关注过项目');
  272. }
  273. }
  274. }
  275. public function notFollowProject()
  276. {
  277. if (request()->isAjax()) {
  278. $param = request()->param();
  279. // halt($param);
  280. if(!isset($param['id'])|| !isset($param['openid']) ){
  281. return to_assign(1, '参数错误请重试');
  282. }
  283. $res = Db::name('follow_project')->where('project_id',$param['id'])->where('openid',$param['openid'])->find();
  284. if($res !== null){
  285. $isTrue =Db::name('follow_project')->where('project_id',$param['id'])->where('openid',$param['openid'])->delete();
  286. if($isTrue){
  287. return to_assign(0, '取消关注成功!!');
  288. }else{
  289. return to_assign(1, '取消关注失败请重试!!');
  290. }
  291. }else{
  292. return to_assign(1, '还未关注项目!');
  293. }
  294. }
  295. }
  296. public function findFollowProject()
  297. {
  298. if (request()->isAjax()) {
  299. $param = request()->param();
  300. // halt($param);
  301. if(!isset($param['id'])|| !isset($param['openid']) ){
  302. return to_assign(1, '参数错误请重试');
  303. }
  304. $res = Db::name('follow_project')->where('project_id',$param['id'])->where('openid',$param['openid'])->find();
  305. if($res !== null){
  306. return to_assign(0, '已经关注!');
  307. }else{
  308. return to_assign(1, '还未关注项目!');
  309. }
  310. }
  311. }
  312. /**
  313. * cp代办内容
  314. */
  315. public function pdetail()
  316. {
  317. $param = get_params();
  318. $id = isset($param['id']) ? $param['id'] : 0;
  319. $type = isset($param['type']) ? $param['type'] : 0;
  320. $rows = empty($param['limit']) ? get_config('app.page_size') : $param['limit'];
  321. $order = empty($param['order']) ? 'a.id desc' : $param['order'];
  322. $detail = $this->model->getCostProjectById($id);
  323. $comment = Db::name("project_comment")->where("project_id", $id)->order('create_time', 'desc')->select();
  324. $file_array = Db::name('ProjectFile')
  325. ->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')
  326. ->alias('mf')
  327. ->join('File f', 'mf.file_id = f.id', 'LEFT')
  328. ->join('Admin a', 'mf.admin_id = a.id', 'LEFT')
  329. ->order('mf.create_time desc')
  330. ->where(array('mf.topic_id' => $id, 'mf.module' => 'project'))
  331. ->select()->toArray();
  332. $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();
  333. $contact = $this->ContactModel->where([['project_id', '=', $id]])
  334. ->field('a.*,u.nickname as admin_name,f.name,f.filesize,f.filepath,f.fileext,f.admin_id')
  335. ->alias('a')
  336. ->join('file f', "a.file = f.id", "left")
  337. ->join('Admin u', 'a.maker_id = u.id', "left")
  338. ->order($order)
  339. ->paginate(9999, false, ['query' => $param])
  340. ->each(function ($item, $key) {
  341. })->toArray();
  342. $contact = $contact['data'];
  343. $where = [
  344. ["cp_project_record.delete_time", "=", 0],
  345. ["project_id", "=", $id],
  346. ["maker_id", "=", get_login_admin('id')]
  347. ];
  348. $record = Db::name('project_record')->where($where)
  349. ->field('a.*,u.nickname as admin_name')
  350. ->alias('a')
  351. ->join('Admin u', 'a.maker_id = u.id', "left")
  352. ->order($order)
  353. ->select();
  354. //2是公司,0是财政局,1是业主
  355. $unit_type = Db::name("department")->where("id", get_login_admin("unit_name"))->value("type");
  356. if ($unit_type == 0) {
  357. $person = self::user($id);
  358. View::assign('project_five', self::getProjectFive());
  359. } elseif ($unit_type == 2) {
  360. $person = self::user($id);
  361. View::assign('project_five', self::getProjectFiveCompany());
  362. } else {
  363. $person = 0;
  364. View::assign('project_five', self::getProjectFiveYezhu());
  365. }
  366. $field = $this->Field->get_field_rules_new($this->uid);
  367. $fields = [];
  368. foreach ($field as $k=>$v){
  369. if($v==1){
  370. $fields[$k] = true;
  371. }else{
  372. $fields[$k] = false;
  373. }
  374. }
  375. if($this->user_tpe==2){
  376. $fields["sent_review_approver_amount"] = false;
  377. $fields["construction_approver_amount"] = false;
  378. }
  379. View::assign('field', $fields);
  380. // halt($detail);
  381. if (!empty($detail)) {
  382. View::assign('project_id', $id);
  383. View::assign('comment', $comment);
  384. View::assign('record', $record);
  385. View::assign('contact', $contact);
  386. View::assign('detail', $detail);
  387. View::assign('file_array', $file_array);
  388. View::assign('report', $report);
  389. return view();
  390. } else {
  391. echo '<div style="text-align:center;color:red;margin-top:20%;font-size:425%"><span>项目不存在!</span><br><span>已被删除</span></div>';
  392. // throw new \think\exception\HttpException(404, '项目不存在');
  393. }
  394. }
  395. /**
  396. * cp看板报告内容
  397. */
  398. public function report_detail()
  399. {
  400. $param = get_params();
  401. $id = isset($param['id']) ? $param['id'] : 0;
  402. $project_id = isset($param['project_id']) ? $param['project_id'] : 0;
  403. $detail = Db::name('ProjectReport')->where(['id' => $id])->find();
  404. if (empty($detail)) {
  405. if (empty($detail)) {
  406. echo '<div style="text-align:center;color:red;margin-top:20%;">该文档不存在</div>';
  407. exit;
  408. }
  409. } else {
  410. $maker_name = Db::name('admin')->where(['id' => $detail["maker_id"]])->value("nickname");
  411. $detail["maker_name"] = $maker_name;
  412. $file_array = Db::name('ProjectReport')
  413. ->field("r.*,a.nickname as admin_name,f.name,f.filesize,f.filepath,f.fileext,f.admin_id")
  414. ->alias('r')
  415. ->join('File f', 'r.file = f.id')
  416. ->join('Admin a', 'r.maker_id = a.id', 'LEFT')
  417. ->order('r.create_time desc')
  418. ->where(array('r.id' => $id))
  419. ->select()->toArray();
  420. View::assign('file_array', $file_array);
  421. View::assign('project_id', $project_id);
  422. View::assign('detail', $detail);
  423. return view();
  424. }
  425. }
  426. /**
  427. * cp待办报告内容
  428. */
  429. public function report_pdetail()
  430. {
  431. $param = get_params();
  432. $id = isset($param['id']) ? $param['id'] : 0;
  433. $project_id = isset($param['project_id']) ? $param['project_id'] : 0;
  434. $detail = Db::name('ProjectReport')->where(['id' => $id])->find();
  435. if (empty($detail)) {
  436. if (empty($detail)) {
  437. echo '<div style="text-align:center;color:red;margin-top:20%;">该文档不存在</div>';
  438. exit;
  439. }
  440. } else {
  441. $maker_name = Db::name('admin')->where(['id' => $detail["maker_id"]])->value("nickname");
  442. $detail["maker_name"] = $maker_name;
  443. $file_array = Db::name('ProjectReport')
  444. ->field("r.*,a.nickname as admin_name,f.name,f.filesize,f.filepath,f.fileext,f.admin_id")
  445. ->alias('r')
  446. ->join('File f', 'r.file = f.id')
  447. ->join('Admin a', 'r.maker_id = a.id', 'LEFT')
  448. ->order('r.create_time desc')
  449. ->where(array('r.id' => $id))
  450. ->select()->toArray();
  451. View::assign('file_array', $file_array);
  452. View::assign('project_id', $project_id);
  453. View::assign('detail', $detail);
  454. return view();
  455. }
  456. }
  457. /**
  458. *
  459. */
  460. public function sift()
  461. {
  462. return view();
  463. }
  464. /**
  465. *项目人员
  466. */
  467. public function user($id)
  468. {
  469. $ids = $this->model->where("id", $id)->field("entrust_maker,review_head,operate_head,operate_team")->find();
  470. if (empty($ids)) {
  471. return [];
  472. } else {
  473. $ids->toArray();
  474. }
  475. $idarr = $ids["operate_team"] . ',' . $ids["operate_head"] . ',' . $ids["review_head"] . ',' . $ids["entrust_maker"];
  476. $idarr = explode(",", $idarr);
  477. $param = [];
  478. $rows = empty($param['limit']) ? get_config('app.page_size') : $param['limit'];
  479. $list = $this->Adminmodel->whereIn("id", $idarr)->field("id,nickname,unit_name,mobile,email")->paginate(9999, false, ['query' => $param])
  480. // 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')
  481. ->each(function ($item) {
  482. //获取单位的邮箱,单位信息页没做
  483. $item->email = Db::name('department')->where(['id' => $item->unit_name])->value('email');
  484. $type = Db::name('department')->where(['id' => $item->unit_name])->value('type');
  485. $item->unit_name = Db::name('department')->where(['id' => $item->unit_name])->value('title');
  486. // dump($type);
  487. if ($type == 0) {
  488. $item->unit_type = "委托单位";
  489. } elseif ($type == 1) {
  490. $item->unit_type = "送审单位";
  491. } elseif ($type == 2) {
  492. $item->unit_type = "评审机构";
  493. } else {
  494. $item->unit_type = "施工单位";
  495. }
  496. })->toArray();
  497. $list = $list["data"];
  498. $time_id = time();
  499. $shigong = $this->model->where('id', $id)->find();
  500. if ($shigong["construction_unit"] !== null ||
  501. $shigong["construction_head"] !== null ||
  502. $shigong["construction_email"] !== null ||
  503. $shigong["construction_phone"] !== null
  504. ) {
  505. $shigongdata["id"] = $time_id;
  506. $shigongdata["nickname"] = $shigong["construction_unit"];
  507. $shigongdata["unit_name"] = $shigong["construction_head"];
  508. $shigongdata["email"] = $shigong["construction_email"];
  509. $shigongdata["mobile"] = $shigong["construction_phone"];
  510. $shigongdata["unit_type"] = "施工单位";
  511. array_push($list, $shigongdata);
  512. }
  513. $time_id_sent = time() - 200;
  514. if ($shigong["sent_review_unit"] !== null ||
  515. $shigong["sent_review_head"] !== null ||
  516. $shigong["sent_review_phone"] !== null ||
  517. $shigong["sent_review_head_email"] !== null
  518. ) {
  519. $sent_review_data["id"] = $time_id_sent;
  520. $sent_review_data["nickname"] = $shigong["sent_review_head_name"];
  521. $sent_review_data["unit_name"] = $shigong["sent_review_unit_name"];
  522. $sent_review_data["email"] = $shigong["sent_review_head_email"];
  523. $sent_review_data["mobile"] = $shigong["sent_review_phone"];
  524. $sent_review_data["unit_type"] = "送审单位";
  525. array_push($list, $sent_review_data);
  526. }
  527. if (empty($ids['operate_team'])) {
  528. $operate_team[] = '0';
  529. } else {
  530. $operate_team = explode(',', $ids['operate_team']);
  531. }
  532. for ($i = 0; $i < count($list); $i++) {
  533. if ($list[$i]['id'] == $ids['entrust_maker']) {
  534. // dump($list[$i]['id'],$ids['entrust_maker']);
  535. $list[$i]["type"] = 1;
  536. } elseif ($list[$i]['id'] == $ids['review_head']) {
  537. $list[$i]["type"] = 2;
  538. } elseif ($list[$i]['id'] == $ids['operate_head']) {
  539. $list[$i]["type"] = 3;
  540. } elseif (in_array($list[$i]['id'], $operate_team)) {
  541. $list[$i]["type"] = 4;
  542. } elseif ($list[$i]['id'] == $time_id) {
  543. $list[$i]["type"] = 5;
  544. } elseif ($list[$i]['id'] !== time() - 1000) {
  545. $list[$i]["type"] = 6;
  546. }
  547. }
  548. $type = array_column($list, 'type');
  549. array_multisort($type, SORT_ASC, $list);
  550. return $list;
  551. }
  552. /**
  553. * 修改个人资料
  554. */
  555. public function revise()
  556. {
  557. $person = get_login_admin();
  558. View::assign('person', $person);
  559. return view();
  560. }
  561. /**
  562. * 消息通知
  563. * 通用
  564. */
  565. public function notice()
  566. {
  567. $unread_id = Db::name("admin")->where("id", $this->uid)->value("unread");
  568. if (empty($unread_id)) {
  569. $unread_ids = [];
  570. } else {
  571. $unread_ids = explode(",", $unread_id);
  572. }
  573. $list = Db::name("ProjectMsg")->where("uid", $this->uid)->select();
  574. if (is_object($list)) {
  575. $data = $list->toArray();
  576. }
  577. $real_data = [];
  578. foreach ($data as $item => $v) {
  579. if (in_array($v["id"], $unread_ids)) {
  580. $v["red"] = 1;
  581. $real_data[] = $v;
  582. } else {
  583. $v["red"] = 0;
  584. $real_data[] = $v;
  585. }
  586. }
  587. Db::name("admin")->where("id", $this->uid)->update(["unread" => null]);
  588. View::assign("msg", $real_data);
  589. return view();
  590. }
  591. public function notice_content()
  592. {
  593. return view();
  594. }
  595. /**
  596. * 工作记录
  597. */
  598. public function record()
  599. {
  600. $param = get_params();
  601. $id = isset($param['id']) ? $param['id'] : 0;
  602. $project_id = isset($param['project_id']) ? $param['project_id'] : 0;
  603. $detail = (new ProjectRecord())->detail($id);
  604. if (empty($detail)) {
  605. if (empty($detail)) {
  606. echo '<div style="text-align:center;color:red;margin-top:20%;">该记录不存在</div>';
  607. exit;
  608. }
  609. return '';
  610. }
  611. $maker_name = Db::name('admin')->where(['id' => $detail["maker_id"]])->value("nickname");
  612. $detail["maker_name"] = $maker_name;
  613. View::assign('detail', $detail);
  614. View::assign('project_id', $project_id);
  615. return view();
  616. }
  617. /**
  618. * 编辑工作记录
  619. */
  620. public function record_edit()
  621. {
  622. $param = get_params();
  623. $id = isset($param['id']) ? $param['id'] : 0;//记录id
  624. $project_id = isset($param['project_id']) ? $param['project_id'] : 0;
  625. $project = Db::name("cost_project")->where("id", $project_id)->value("project_name");
  626. $detail = (new ProjectRecord())->getRecordById($id);
  627. if (!empty($detail)) {
  628. View::assign('id', $id);
  629. View::assign('user_type', $this->user_tpe);
  630. View::assign('project_id', $project_id);
  631. View::assign('project', $project);
  632. View::assign('detail', $detail);
  633. return view();
  634. } else {
  635. throw new \think\exception\HttpException(404, '页面不存在');
  636. }
  637. }
  638. /**
  639. * 邀请函
  640. */
  641. public function invite()
  642. {
  643. $param = get_params();
  644. $id = isset($param['id']) ? $param['id'] : 0;//记录id
  645. $project_id = isset($param['project_id']) ? $param['project_id'] : 0;
  646. $project = Db::name("cost_project")->where("id", $project_id)->value("project_name");
  647. $detail = (new Contact())->detail($id);
  648. $file_array = Db::name('contact')
  649. ->field("r.*,a.nickname as admin_name,f.name,f.filesize,f.filepath,f.fileext,f.admin_id")
  650. ->alias('r')
  651. ->join('File f', 'r.file = f.id')
  652. ->join('Admin a', 'r.maker_id = a.id', 'LEFT')
  653. ->order('r.create_time desc')
  654. ->where(array('r.id' => $id))
  655. ->select()->toArray();
  656. if (!empty($detail)) {
  657. View::assign('id', $id);
  658. View::assign('project_id', $project_id);
  659. View::assign('project', $project);
  660. View::assign('detail', $detail);
  661. View::assign('file_array', $file_array);
  662. return view();
  663. } else {
  664. throw new \think\exception\HttpException(404, '页面不存在');
  665. }
  666. }
  667. public function cost_detail()
  668. {
  669. return view();
  670. }
  671. public function login()
  672. {
  673. return view();
  674. }
  675. // cp请款函内容
  676. public function request_detail()
  677. {
  678. $param = get_params();
  679. return view();
  680. }
  681. /**
  682. * 查看审批进度
  683. */
  684. public function progress()
  685. {
  686. $param = get_params();
  687. $id = isset($param['id']) ? $param['id'] : 0;
  688. $rows = empty($param['limit']) ? get_config('app . page_size') : $param['limit'];
  689. $order = empty($param['order']) ? 'id desc' : $param['order'];
  690. $list = $this->Auditmodel->alias('a')->join("cost_project c", "a.project_id=c.id", 'left')
  691. ->field("a.*,c.project_status,c.sent_review_amount,c.engineering_type,c.review_unit_name")->where('else_id', $id)->order('create_time', "sec")
  692. ->select()
  693. ->each(function ($item) {
  694. switch ($item["audit_type"]) {
  695. case 4:
  696. $item->else_name = "报告一级审核";
  697. break;
  698. case 5:
  699. $item->else_name = "报告二级审核";
  700. break;
  701. case 6:
  702. $item->else_name = "报告三级审核";
  703. break;
  704. }
  705. });
  706. View::assign('list', $list);
  707. return view();
  708. }
  709. public function contacts_exterior()
  710. {
  711. $param = get_params();
  712. $where = [];
  713. if (!empty($param["keyword"])) {
  714. $where = [["a.nickname|d.title", "like", "%" . $param["keyword"] . "%"]];
  715. }
  716. //0:财政局;1:业主;2:公司
  717. if ($this->user_tpe == 0) {
  718. //公司负责人
  719. $list_company = Db::name('department')->alias('d')->join("admin a", "d.leader_id=a.id")
  720. ->where([["d.type", "=", 2], ["pid", "=", 0], ["d.status", "=", 1]])
  721. ->where($where)->field("d.id,d.title,d.type,a.nickname,a.mobile,a.email")
  722. ->select()->toArray();
  723. $list_proprietor = Db::name('department')->alias('d')->join("admin a", "d.leader_id=a.id")
  724. ->where([["d.type", "=", 1], ["pid", "=", 0], ["d.status", "=", 1]])
  725. ->where($where)
  726. ->field("d.id,d.title,d.type,a.nickname,a.mobile,a.email")
  727. ->select()->toArray();
  728. $list_exterior = array_merge($list_company,$list_proprietor);
  729. } else if ($this->user_tpe == 1) {
  730. //公司负责人
  731. $list_company = Db::name('department')->alias('d')->join("admin a", "d.leader_id=a.id")
  732. ->where([["d.type", "=", 2], ["pid", "=", 0], ["d.status", "=", 1]])
  733. ->where($where)->field("d.id,d.title,d.type,a.nickname,a.mobile,a.email")
  734. ->select()->toArray();
  735. //财评负责人
  736. $list_entrust = Db::name('department')->alias('d')->join("admin a", "d.leader_id=a.id")
  737. ->where([["d.type", "=", 0], ["pid", "=", 0], ["d.status", "=", 1]])
  738. ->where($where)
  739. ->field("d.id,d.title,d.type,a.nickname,a.mobile,a.email")
  740. ->select()->toArray();
  741. $list_exterior = array_merge($list_company,$list_entrust);
  742. } else if ($this->user_tpe == 2) {
  743. //公司内部通讯录
  744. $list_entrust = Db::name('department')->alias('d')->join("admin a", "d.leader_id=a.id")
  745. ->where([["d.type", "=", 0], ["pid", "=", 0], ["d.status", "=", 1]])
  746. ->where($where)
  747. ->field("d.id,d.title,d.type,a.nickname,a.mobile,a.email")
  748. ->select()->toArray();
  749. $list_proprietor = Db::name('department')->alias('d')->join("admin a", "d.leader_id=a.id")
  750. ->where([["d.type", "=", 1], ["pid", "=", 0], ["d.status", "=", 1]])
  751. ->where($where)
  752. ->field("d.id,d.title,d.type,a.nickname,a.mobile,a.email")
  753. ->select()->toArray();
  754. $list_exterior = array_merge($list_proprietor,$list_entrust);
  755. }
  756. View::assign('list_exterior', $list_exterior);
  757. return view();
  758. }
  759. public function getProjectFive()
  760. {
  761. $where = [
  762. ['name', '=', '作业日志-财政局'],
  763. ['name', '=', '工作记录-财政局'],
  764. ['name', '=', '项目报告-财政局'],
  765. ['name', '=', '项目人员-财政局'],
  766. ['name', '=', '项目动态-财政局'],
  767. ['name', '=', '项目附件-财政局'],
  768. ['name', '=', '联系函-财政局'],
  769. ];
  770. $list = Db::name('AdminRule')->whereOr($where)->field('id,name')->select()->toArray();
  771. $group_id = Db::name('AdminGroupAccess')->where('uid', get_login_admin('id'))->value('group_id');
  772. $login_rules = Db::name('AdminGroup')->where('id', $group_id)->value('rules');
  773. $login_rules = explode(',', $login_rules);
  774. $rules_id = array();
  775. foreach ($list as $key => $value) {
  776. if ($value['name'] == "作业日志-财政局") {
  777. if (in_array($value['id'], $login_rules)) {
  778. $rules_id['project_comments'] = 1;
  779. } else {
  780. $rules_id['project_comments'] = 0;
  781. }
  782. } else if ($value['name'] == "工作记录-财政局") {
  783. if (in_array($value['id'], $login_rules)) {
  784. $rules_id['project_record'] = 1;
  785. } else {
  786. $rules_id['project_record'] = 0;
  787. }
  788. } else if ($value['name'] == "项目报告-财政局") {
  789. if (in_array($value['id'], $login_rules)) {
  790. $rules_id['project_report'] = 1;
  791. } else {
  792. $rules_id['project_report'] = 0;
  793. }
  794. } else if ($value['name'] == "项目人员-财政局") {
  795. if (in_array($value['id'], $login_rules)) {
  796. $rules_id['project_user'] = 1;
  797. } else {
  798. $rules_id['project_user'] = 0;
  799. }
  800. } else if ($value['name'] == "项目动态-财政局") {
  801. if (in_array($value['id'], $login_rules)) {
  802. $rules_id['project_log'] = 1;
  803. } else {
  804. $rules_id['project_log'] = 0;
  805. }
  806. } else if ($value['name'] == "项目附件-财政局") {
  807. if (in_array($value['id'], $login_rules)) {
  808. $rules_id['project_file'] = 1;
  809. } else {
  810. $rules_id['project_file'] = 0;
  811. }
  812. } else if ($value['name'] == "联系函-财政局") {
  813. if (in_array($value['id'], $login_rules)) {
  814. $rules_id['project_contact'] = 1;
  815. } else {
  816. $rules_id['project_contact'] = 0;
  817. }
  818. }
  819. }
  820. return $rules_id;
  821. }
  822. public function getProjectFiveCompany()
  823. {
  824. $where = [
  825. ['name', '=', '作业日志-公司'],
  826. ['name', '=', '工作记录-公司'],
  827. ['name', '=', '项目报告-公司'],
  828. ['name', '=', '项目人员-公司'],
  829. ['name', '=', '项目动态-公司'],
  830. ['name', '=', '项目附件-公司'],
  831. ['name', '=', '联系函-公司'],
  832. ];
  833. $list = Db::name('AdminRule')->whereOr($where)->field('id,name')->select()->toArray();
  834. $group_id = Db::name('AdminGroupAccess')->where('uid', get_login_admin('id'))->value('group_id');
  835. $login_rules = Db::name('AdminGroup')->where('id', $group_id)->value('rules');
  836. $login_rules = explode(',', $login_rules);
  837. $rules_id = array();
  838. foreach ($list as $key => $value) {
  839. if ($value['name'] == "作业日志-公司") {
  840. if (in_array($value['id'], $login_rules)) {
  841. $rules_id['project_comments'] = 1;
  842. } else {
  843. $rules_id['project_comments'] = 0;
  844. }
  845. } else if ($value['name'] == "工作记录-公司") {
  846. if (in_array($value['id'], $login_rules)) {
  847. $rules_id['project_record'] = 1;
  848. } else {
  849. $rules_id['project_record'] = 0;
  850. }
  851. } else if ($value['name'] == "项目报告-公司") {
  852. if (in_array($value['id'], $login_rules)) {
  853. $rules_id['project_report'] = 1;
  854. } else {
  855. $rules_id['project_report'] = 0;
  856. }
  857. } else if ($value['name'] == "项目人员-公司") {
  858. if (in_array($value['id'], $login_rules)) {
  859. $rules_id['project_user'] = 1;
  860. } else {
  861. $rules_id['project_user'] = 0;
  862. }
  863. } else if ($value['name'] == "项目动态-公司") {
  864. if (in_array($value['id'], $login_rules)) {
  865. $rules_id['project_log'] = 1;
  866. } else {
  867. $rules_id['project_log'] = 0;
  868. }
  869. } else if ($value['name'] == "项目附件-公司") {
  870. if (in_array($value['id'], $login_rules)) {
  871. $rules_id['project_file'] = 1;
  872. } else {
  873. $rules_id['project_file'] = 0;
  874. }
  875. } else if ($value['name'] == "联系函-公司") {
  876. if (in_array($value['id'], $login_rules)) {
  877. $rules_id['project_contact'] = 1;
  878. } else {
  879. $rules_id['project_contact'] = 0;
  880. }
  881. }
  882. }
  883. return $rules_id;
  884. }
  885. public function getProjectFiveYezhu()
  886. {
  887. $where = [
  888. ['name', '=', '作业日志-业主'],
  889. ['name', '=', '工作记录-业主'],
  890. ['name', '=', '项目报告-业主'],
  891. ['name', '=', '项目人员-业主'],
  892. ['name', '=', '项目动态-业主'],
  893. ['name', '=', '项目附件-业主'],
  894. ['name', '=', '联系函-业主'],
  895. ];
  896. $list = Db::name('AdminRule')->whereOr($where)->field('id,name')->select()->toArray();
  897. $group_id = Db::name('AdminGroupAccess')->where('uid', get_login_admin('id'))->value('group_id');
  898. $login_rules = Db::name('AdminGroup')->where('id', $group_id)->value('rules');
  899. $login_rules = explode(',', $login_rules);
  900. $rules_id = array();
  901. foreach ($list as $key => $value) {
  902. if ($value['name'] == "作业日志-业主") {
  903. if (in_array($value['id'], $login_rules)) {
  904. $rules_id['project_comments'] = 1;
  905. } else {
  906. $rules_id['project_comments'] = 0;
  907. }
  908. } else if ($value['name'] == "工作记录-业主") {
  909. if (in_array($value['id'], $login_rules)) {
  910. $rules_id['project_record'] = 1;
  911. } else {
  912. $rules_id['project_record'] = 0;
  913. }
  914. } else if ($value['name'] == "项目报告-业主") {
  915. if (in_array($value['id'], $login_rules)) {
  916. $rules_id['project_report'] = 1;
  917. } else {
  918. $rules_id['project_report'] = 0;
  919. }
  920. } else if ($value['name'] == "项目人员-业主") {
  921. if (in_array($value['id'], $login_rules)) {
  922. $rules_id['project_user'] = 1;
  923. } else {
  924. $rules_id['project_user'] = 0;
  925. }
  926. } else if ($value['name'] == "项目动态-业主") {
  927. if (in_array($value['id'], $login_rules)) {
  928. $rules_id['project_log'] = 1;
  929. } else {
  930. $rules_id['project_log'] = 0;
  931. }
  932. } else if ($value['name'] == "项目附件-业主") {
  933. if (in_array($value['id'], $login_rules)) {
  934. $rules_id['project_file'] = 1;
  935. } else {
  936. $rules_id['project_file'] = 0;
  937. }
  938. } else if ($value['name'] == "联系函-业主") {
  939. if (in_array($value['id'], $login_rules)) {
  940. $rules_id['project_contact'] = 1;
  941. } else {
  942. $rules_id['project_contact'] = 0;
  943. }
  944. }
  945. }
  946. return $rules_id;
  947. }
  948. public function read_company()
  949. {
  950. $param = get_params();
  951. $unit_type = Db::name("department")->where("id", get_login_admin("unit_name"))->value("type");
  952. // halt($param);
  953. $a = time();
  954. $id = isset($param["project_id"]) ? $param["project_id"] : $a;
  955. if ($id == $a) {
  956. $datas = array();
  957. $datas["data"] = null;
  958. return table_assign(0, "无项目", $datas);
  959. }
  960. $project = Db::name("appropriation_project")->where("uid", $id)->select();
  961. $datas["data"] = $project;
  962. $datas["total"] = count($project);
  963. if ($param["type"] > 9) {
  964. $a = time();
  965. $id = isset($param["project_id"]) ? $param["project_id"] : $a;
  966. $detail = Db::name("appropriation")->where("id", $id)->find();
  967. $file_array = Db::name('ProjectFile')
  968. ->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')
  969. ->alias('mf')
  970. ->join('File f', 'mf.file_id = f.id', 'LEFT')
  971. ->join('Admin a', 'mf.admin_id = a.id', 'LEFT')
  972. ->order('mf.create_time desc')
  973. ->where(array('mf.topic_id' => $id, 'mf.module' => 'appropriation'))
  974. ->select()->toArray();
  975. $where = [
  976. ["approver", "=", $this->uid],
  977. ["audit_status", "<", 5]
  978. ];
  979. $list = $this->Auditmodel->alias("a")->join("cost_project c", "a.project_id=c.id", "left")
  980. ->where($where)->where('audit_status',1)->where('audit_type','in',[10,11,12])
  981. ->field("a.*,c.project_num,c.project_status,c.engineering_type,c.sent_review_amount")
  982. ->paginate(9999, false, ['query' => $param])
  983. ->each(function ($item, $key) {
  984. $item->approver_name = Db::name("admin")->where("id", $item->approver)->value("nickname");
  985. })->toArray();
  986. // halt($list);
  987. $red = 0;
  988. foreach ($list["data"] as $item => $value) {
  989. if ($value["audit_status"] == 1) {
  990. $red = 1;
  991. }
  992. }
  993. $red_id = Db::name("new_msg")->where("uid", "=", $this->uid)->select();
  994. $red_kan = 0;
  995. foreach ($red_id as $item => $value) {
  996. if ($value["detail"] || $value["comment"] || $value["report"] || $value["user"] || $value["contact"]) {
  997. $red_kan = 1;
  998. }
  999. }
  1000. if($unit_type == 2){
  1001. $auditdata = $this->Auditmodel->where('id',$param['id'])->find();
  1002. $detail['audit_status'] = $auditdata['audit_status'];
  1003. View::assign('auditdata', $auditdata);
  1004. }else{
  1005. $detail['audit_status'] = 0;
  1006. }
  1007. // halt($audit_status,$id);
  1008. // halt($list);
  1009. View::assign('unit_type', $unit_type);
  1010. View::assign('datas', $datas['data']);
  1011. View::assign('id', $id);
  1012. View::assign('detail', $detail);
  1013. View::assign("red_kan", $red_kan);
  1014. View::assign('red', $red);
  1015. View::assign('file_array', $file_array);
  1016. return view();
  1017. }
  1018. }
  1019. public function datastat(){
  1020. return View();
  1021. }
  1022. public function contract()
  1023. {
  1024. return view();
  1025. }
  1026. public function contract_detail()
  1027. {
  1028. return view();
  1029. }
  1030. }