Temporary.php 44 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185
  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'])->column('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. if( !isset($param['openid'])){
  259. return to_assign(1, '您还没有关注公众号,请先关注后再次扫码!');
  260. }
  261. // halt($param);
  262. if(!isset($param['id'])|| !isset($param['openid']) ){
  263. return to_assign(1, '参数错误请重试');
  264. }
  265. $res = Db::name('follow_project')->where('project_id',$param['id'])->where('openid',$param['openid'])->find();
  266. if($res == null){
  267. $isTrue =Db::name('follow_project')->insert(['project_id'=>$param['id'] , 'openid'=>$param['openid']]);
  268. if($isTrue){
  269. return to_assign(0, '关注成功!!');
  270. }else{
  271. return to_assign(1, '失败请重试!!');
  272. }
  273. }else{
  274. return to_assign(1, '已经关注过项目');
  275. }
  276. }
  277. }
  278. public function notFollowProject()
  279. {
  280. if (request()->isAjax()) {
  281. $param = request()->param();
  282. // halt($param);
  283. if(!isset($param['id'])|| !isset($param['openid']) ){
  284. return to_assign(1, '参数错误请重试');
  285. }
  286. $res = Db::name('follow_project')->where('project_id',$param['id'])->where('openid',$param['openid'])->find();
  287. if($res !== null){
  288. $isTrue =Db::name('follow_project')->where('project_id',$param['id'])->where('openid',$param['openid'])->delete();
  289. if($isTrue){
  290. return to_assign(0, '取消关注成功!!');
  291. }else{
  292. return to_assign(1, '取消关注失败请重试!!');
  293. }
  294. }else{
  295. return to_assign(1, '还未关注项目!');
  296. }
  297. }
  298. }
  299. public function findFollowProject()
  300. {
  301. if (request()->isAjax()) {
  302. $param = request()->param();
  303. // halt($param);
  304. if(!isset($param['id'])|| !isset($param['openid']) ){
  305. return to_assign(1, '参数错误请重试');
  306. }
  307. $res = Db::name('follow_project')->where('project_id',$param['id'])->where('openid',$param['openid'])->find();
  308. if($res !== null){
  309. return to_assign(0, '已经关注!');
  310. }else{
  311. return to_assign(1, '还未关注项目!');
  312. }
  313. }
  314. }
  315. /**
  316. * cp代办内容
  317. */
  318. public function pdetail()
  319. {
  320. $param = get_params();
  321. $id = isset($param['id']) ? $param['id'] : 0;
  322. $type = isset($param['type']) ? $param['type'] : 0;
  323. $rows = empty($param['limit']) ? get_config('app.page_size') : $param['limit'];
  324. $order = empty($param['order']) ? 'a.id desc' : $param['order'];
  325. $detail = $this->model->getCostProjectById($id);
  326. $comment = Db::name("project_comment")->where("project_id", $id)->order('create_time', 'desc')->select();
  327. $file_array = Db::name('ProjectFile')
  328. ->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')
  329. ->alias('mf')
  330. ->join('File f', 'mf.file_id = f.id', 'LEFT')
  331. ->join('Admin a', 'mf.admin_id = a.id', 'LEFT')
  332. ->order('mf.create_time desc')
  333. ->where(array('mf.topic_id' => $id, 'mf.module' => 'project'))
  334. ->select()->toArray();
  335. $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();
  336. $contact = $this->ContactModel->where([['project_id', '=', $id]])
  337. ->field('a.*,u.nickname as admin_name,f.name,f.filesize,f.filepath,f.fileext,f.admin_id')
  338. ->alias('a')
  339. ->join('file f', "a.file = f.id", "left")
  340. ->join('Admin u', 'a.maker_id = u.id', "left")
  341. ->order($order)
  342. ->paginate(9999, false, ['query' => $param])
  343. ->each(function ($item, $key) {
  344. })->toArray();
  345. $contact = $contact['data'];
  346. $where = [
  347. ["cp_project_record.delete_time", "=", 0],
  348. ["project_id", "=", $id],
  349. ["maker_id", "=", get_login_admin('id')]
  350. ];
  351. $record = Db::name('project_record')->where($where)
  352. ->field('a.*,u.nickname as admin_name')
  353. ->alias('a')
  354. ->join('Admin u', 'a.maker_id = u.id', "left")
  355. ->order($order)
  356. ->select();
  357. //2是公司,0是财政局,1是业主
  358. $unit_type = Db::name("department")->where("id", get_login_admin("unit_name"))->value("type");
  359. if ($unit_type == 0) {
  360. $person = self::user($id);
  361. View::assign('project_five', self::getProjectFive());
  362. } elseif ($unit_type == 2) {
  363. $person = self::user($id);
  364. View::assign('project_five', self::getProjectFiveCompany());
  365. } else {
  366. $person = 0;
  367. View::assign('project_five', self::getProjectFiveYezhu());
  368. }
  369. $field = $this->Field->get_field_rules_new($this->uid);
  370. $fields = [];
  371. foreach ($field as $k=>$v){
  372. if($v==1){
  373. $fields[$k] = true;
  374. }else{
  375. $fields[$k] = false;
  376. }
  377. }
  378. if($this->user_tpe==2){
  379. $fields["sent_review_approver_amount"] = false;
  380. $fields["construction_approver_amount"] = false;
  381. }
  382. View::assign('field', $fields);
  383. // halt($detail);
  384. if (!empty($detail)) {
  385. View::assign('project_id', $id);
  386. View::assign('comment', $comment);
  387. View::assign('record', $record);
  388. View::assign('contact', $contact);
  389. View::assign('detail', $detail);
  390. View::assign('file_array', $file_array);
  391. View::assign('report', $report);
  392. return view();
  393. } else {
  394. echo '<div style="text-align:center;color:red;margin-top:20%;font-size:425%"><span>项目不存在!</span><br><span>已被删除</span></div>';
  395. // throw new \think\exception\HttpException(404, '项目不存在');
  396. }
  397. }
  398. /**
  399. * cp看板报告内容
  400. */
  401. public function report_detail()
  402. {
  403. $param = get_params();
  404. $id = isset($param['id']) ? $param['id'] : 0;
  405. $project_id = isset($param['project_id']) ? $param['project_id'] : 0;
  406. $detail = Db::name('ProjectReport')->where(['id' => $id])->find();
  407. if (empty($detail)) {
  408. if (empty($detail)) {
  409. echo '<div style="text-align:center;color:red;margin-top:20%;">该文档不存在</div>';
  410. exit;
  411. }
  412. } else {
  413. $maker_name = Db::name('admin')->where(['id' => $detail["maker_id"]])->value("nickname");
  414. $detail["maker_name"] = $maker_name;
  415. $file_array = Db::name('ProjectReport')
  416. ->field("r.*,a.nickname as admin_name,f.name,f.filesize,f.filepath,f.fileext,f.admin_id")
  417. ->alias('r')
  418. ->join('File f', 'r.file = f.id')
  419. ->join('Admin a', 'r.maker_id = a.id', 'LEFT')
  420. ->order('r.create_time desc')
  421. ->where(array('r.id' => $id))
  422. ->select()->toArray();
  423. View::assign('file_array', $file_array);
  424. View::assign('project_id', $project_id);
  425. View::assign('detail', $detail);
  426. return view();
  427. }
  428. }
  429. /**
  430. * cp待办报告内容
  431. */
  432. public function report_pdetail()
  433. {
  434. $param = get_params();
  435. $id = isset($param['id']) ? $param['id'] : 0;
  436. $project_id = isset($param['project_id']) ? $param['project_id'] : 0;
  437. $detail = Db::name('ProjectReport')->where(['id' => $id])->find();
  438. if (empty($detail)) {
  439. if (empty($detail)) {
  440. echo '<div style="text-align:center;color:red;margin-top:20%;">该文档不存在</div>';
  441. exit;
  442. }
  443. } else {
  444. $maker_name = Db::name('admin')->where(['id' => $detail["maker_id"]])->value("nickname");
  445. $detail["maker_name"] = $maker_name;
  446. $file_array = Db::name('ProjectReport')
  447. ->field("r.*,a.nickname as admin_name,f.name,f.filesize,f.filepath,f.fileext,f.admin_id")
  448. ->alias('r')
  449. ->join('File f', 'r.file = f.id')
  450. ->join('Admin a', 'r.maker_id = a.id', 'LEFT')
  451. ->order('r.create_time desc')
  452. ->where(array('r.id' => $id))
  453. ->select()->toArray();
  454. View::assign('file_array', $file_array);
  455. View::assign('project_id', $project_id);
  456. View::assign('detail', $detail);
  457. return view();
  458. }
  459. }
  460. /**
  461. *
  462. */
  463. public function sift()
  464. {
  465. return view();
  466. }
  467. /**
  468. *项目人员
  469. */
  470. public function user($id)
  471. {
  472. $ids = $this->model->where("id", $id)->field("entrust_maker,review_head,operate_head,operate_team")->find();
  473. if (empty($ids)) {
  474. return [];
  475. } else {
  476. $ids->toArray();
  477. }
  478. $idarr = $ids["operate_team"] . ',' . $ids["operate_head"] . ',' . $ids["review_head"] . ',' . $ids["entrust_maker"];
  479. $idarr = explode(",", $idarr);
  480. $param = [];
  481. $rows = empty($param['limit']) ? get_config('app.page_size') : $param['limit'];
  482. $list = $this->Adminmodel->whereIn("id", $idarr)->field("id,nickname,unit_name,mobile,email")->paginate(9999, false, ['query' => $param])
  483. // 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')
  484. ->each(function ($item) {
  485. //获取单位的邮箱,单位信息页没做
  486. $item->email = Db::name('department')->where(['id' => $item->unit_name])->value('email');
  487. $type = Db::name('department')->where(['id' => $item->unit_name])->value('type');
  488. $item->unit_name = Db::name('department')->where(['id' => $item->unit_name])->value('title');
  489. // dump($type);
  490. if ($type == 0) {
  491. $item->unit_type = "委托单位";
  492. } elseif ($type == 1) {
  493. $item->unit_type = "送审单位";
  494. } elseif ($type == 2) {
  495. $item->unit_type = "评审机构";
  496. } else {
  497. $item->unit_type = "施工单位";
  498. }
  499. })->toArray();
  500. $list = $list["data"];
  501. $time_id = time();
  502. $shigong = $this->model->where('id', $id)->find();
  503. if ($shigong["construction_unit"] !== null ||
  504. $shigong["construction_head"] !== null ||
  505. $shigong["construction_email"] !== null ||
  506. $shigong["construction_phone"] !== null
  507. ) {
  508. $shigongdata["id"] = $time_id;
  509. $shigongdata["nickname"] = $shigong["construction_unit"];
  510. $shigongdata["unit_name"] = $shigong["construction_head"];
  511. $shigongdata["email"] = $shigong["construction_email"];
  512. $shigongdata["mobile"] = $shigong["construction_phone"];
  513. $shigongdata["unit_type"] = "施工单位";
  514. array_push($list, $shigongdata);
  515. }
  516. $time_id_sent = time() - 200;
  517. if ($shigong["sent_review_unit"] !== null ||
  518. $shigong["sent_review_head"] !== null ||
  519. $shigong["sent_review_phone"] !== null ||
  520. $shigong["sent_review_head_email"] !== null
  521. ) {
  522. $sent_review_data["id"] = $time_id_sent;
  523. $sent_review_data["nickname"] = $shigong["sent_review_head_name"];
  524. $sent_review_data["unit_name"] = $shigong["sent_review_unit_name"];
  525. $sent_review_data["email"] = $shigong["sent_review_head_email"];
  526. $sent_review_data["mobile"] = $shigong["sent_review_phone"];
  527. $sent_review_data["unit_type"] = "送审单位";
  528. array_push($list, $sent_review_data);
  529. }
  530. if (empty($ids['operate_team'])) {
  531. $operate_team[] = '0';
  532. } else {
  533. $operate_team = explode(',', $ids['operate_team']);
  534. }
  535. for ($i = 0; $i < count($list); $i++) {
  536. if ($list[$i]['id'] == $ids['entrust_maker']) {
  537. // dump($list[$i]['id'],$ids['entrust_maker']);
  538. $list[$i]["type"] = 1;
  539. } elseif ($list[$i]['id'] == $ids['review_head']) {
  540. $list[$i]["type"] = 2;
  541. } elseif ($list[$i]['id'] == $ids['operate_head']) {
  542. $list[$i]["type"] = 3;
  543. } elseif (in_array($list[$i]['id'], $operate_team)) {
  544. $list[$i]["type"] = 4;
  545. } elseif ($list[$i]['id'] == $time_id) {
  546. $list[$i]["type"] = 5;
  547. } elseif ($list[$i]['id'] !== time() - 1000) {
  548. $list[$i]["type"] = 6;
  549. }
  550. }
  551. $type = array_column($list, 'type');
  552. array_multisort($type, SORT_ASC, $list);
  553. return $list;
  554. }
  555. /**
  556. * 修改个人资料
  557. */
  558. public function revise()
  559. {
  560. $person = get_login_admin();
  561. View::assign('person', $person);
  562. return view();
  563. }
  564. /**
  565. * 消息通知
  566. * 通用
  567. */
  568. public function notice()
  569. {
  570. $unread_id = Db::name("admin")->where("id", $this->uid)->value("unread");
  571. if (empty($unread_id)) {
  572. $unread_ids = [];
  573. } else {
  574. $unread_ids = explode(",", $unread_id);
  575. }
  576. $list = Db::name("ProjectMsg")->where("uid", $this->uid)->select();
  577. if (is_object($list)) {
  578. $data = $list->toArray();
  579. }
  580. $real_data = [];
  581. foreach ($data as $item => $v) {
  582. if (in_array($v["id"], $unread_ids)) {
  583. $v["red"] = 1;
  584. $real_data[] = $v;
  585. } else {
  586. $v["red"] = 0;
  587. $real_data[] = $v;
  588. }
  589. }
  590. Db::name("admin")->where("id", $this->uid)->update(["unread" => null]);
  591. View::assign("msg", $real_data);
  592. return view();
  593. }
  594. public function notice_content()
  595. {
  596. return view();
  597. }
  598. /**
  599. * 工作记录
  600. */
  601. public function record()
  602. {
  603. $param = get_params();
  604. $id = isset($param['id']) ? $param['id'] : 0;
  605. $project_id = isset($param['project_id']) ? $param['project_id'] : 0;
  606. $detail = (new ProjectRecord())->detail($id);
  607. if (empty($detail)) {
  608. if (empty($detail)) {
  609. echo '<div style="text-align:center;color:red;margin-top:20%;">该记录不存在</div>';
  610. exit;
  611. }
  612. return '';
  613. }
  614. $maker_name = Db::name('admin')->where(['id' => $detail["maker_id"]])->value("nickname");
  615. $detail["maker_name"] = $maker_name;
  616. View::assign('detail', $detail);
  617. View::assign('project_id', $project_id);
  618. return view();
  619. }
  620. /**
  621. * 编辑工作记录
  622. */
  623. public function record_edit()
  624. {
  625. $param = get_params();
  626. $id = isset($param['id']) ? $param['id'] : 0;//记录id
  627. $project_id = isset($param['project_id']) ? $param['project_id'] : 0;
  628. $project = Db::name("cost_project")->where("id", $project_id)->value("project_name");
  629. $detail = (new ProjectRecord())->getRecordById($id);
  630. if (!empty($detail)) {
  631. View::assign('id', $id);
  632. View::assign('user_type', $this->user_tpe);
  633. View::assign('project_id', $project_id);
  634. View::assign('project', $project);
  635. View::assign('detail', $detail);
  636. return view();
  637. } else {
  638. throw new \think\exception\HttpException(404, '页面不存在');
  639. }
  640. }
  641. /**
  642. * 邀请函
  643. */
  644. public function invite()
  645. {
  646. $param = get_params();
  647. $id = isset($param['id']) ? $param['id'] : 0;//记录id
  648. $project_id = isset($param['project_id']) ? $param['project_id'] : 0;
  649. $project = Db::name("cost_project")->where("id", $project_id)->value("project_name");
  650. $detail = (new Contact())->detail($id);
  651. $file_array = Db::name('contact')
  652. ->field("r.*,a.nickname as admin_name,f.name,f.filesize,f.filepath,f.fileext,f.admin_id")
  653. ->alias('r')
  654. ->join('File f', 'r.file = f.id')
  655. ->join('Admin a', 'r.maker_id = a.id', 'LEFT')
  656. ->order('r.create_time desc')
  657. ->where(array('r.id' => $id))
  658. ->select()->toArray();
  659. if (!empty($detail)) {
  660. View::assign('id', $id);
  661. View::assign('project_id', $project_id);
  662. View::assign('project', $project);
  663. View::assign('detail', $detail);
  664. View::assign('file_array', $file_array);
  665. return view();
  666. } else {
  667. throw new \think\exception\HttpException(404, '页面不存在');
  668. }
  669. }
  670. public function cost_detail()
  671. {
  672. return view();
  673. }
  674. public function login()
  675. {
  676. return view();
  677. }
  678. // cp请款函内容
  679. public function request_detail()
  680. {
  681. $param = get_params();
  682. return view();
  683. }
  684. /**
  685. * 查看审批进度
  686. */
  687. public function progress()
  688. {
  689. $param = get_params();
  690. $id = isset($param['id']) ? $param['id'] : 0;
  691. $rows = empty($param['limit']) ? get_config('app . page_size') : $param['limit'];
  692. $order = empty($param['order']) ? 'id desc' : $param['order'];
  693. $list = $this->Auditmodel->alias('a')->join("cost_project c", "a.project_id=c.id", 'left')
  694. ->field("a.*,c.project_status,c.sent_review_amount,c.engineering_type,c.review_unit_name")->where('else_id', $id)->order('create_time', "sec")
  695. ->select()
  696. ->each(function ($item) {
  697. switch ($item["audit_type"]) {
  698. case 4:
  699. $item->else_name = "报告一级审核";
  700. break;
  701. case 5:
  702. $item->else_name = "报告二级审核";
  703. break;
  704. case 6:
  705. $item->else_name = "报告三级审核";
  706. break;
  707. }
  708. });
  709. View::assign('list', $list);
  710. return view();
  711. }
  712. public function contacts_exterior()
  713. {
  714. $param = get_params();
  715. $where = [];
  716. if (!empty($param["keyword"])) {
  717. $where = [["a.nickname|d.title", "like", "%" . $param["keyword"] . "%"]];
  718. }
  719. //0:财政局;1:业主;2:公司
  720. if ($this->user_tpe == 0) {
  721. //公司负责人
  722. $list_company = Db::name('department')->alias('d')->join("admin a", "d.leader_id=a.id")
  723. ->where([["d.type", "=", 2], ["pid", "=", 0], ["d.status", "=", 1]])
  724. ->where($where)->field("d.id,d.title,d.type,a.nickname,a.mobile,a.email")
  725. ->select()->toArray();
  726. $list_proprietor = Db::name('department')->alias('d')->join("admin a", "d.leader_id=a.id")
  727. ->where([["d.type", "=", 1], ["pid", "=", 0], ["d.status", "=", 1]])
  728. ->where($where)
  729. ->field("d.id,d.title,d.type,a.nickname,a.mobile,a.email")
  730. ->select()->toArray();
  731. $list_exterior = array_merge($list_company,$list_proprietor);
  732. } else if ($this->user_tpe == 1) {
  733. //公司负责人
  734. $list_company = Db::name('department')->alias('d')->join("admin a", "d.leader_id=a.id")
  735. ->where([["d.type", "=", 2], ["pid", "=", 0], ["d.status", "=", 1]])
  736. ->where($where)->field("d.id,d.title,d.type,a.nickname,a.mobile,a.email")
  737. ->select()->toArray();
  738. //财评负责人
  739. $list_entrust = Db::name('department')->alias('d')->join("admin a", "d.leader_id=a.id")
  740. ->where([["d.type", "=", 0], ["pid", "=", 0], ["d.status", "=", 1]])
  741. ->where($where)
  742. ->field("d.id,d.title,d.type,a.nickname,a.mobile,a.email")
  743. ->select()->toArray();
  744. $list_exterior = array_merge($list_company,$list_entrust);
  745. } else if ($this->user_tpe == 2) {
  746. //公司内部通讯录
  747. $list_entrust = Db::name('department')->alias('d')->join("admin a", "d.leader_id=a.id")
  748. ->where([["d.type", "=", 0], ["pid", "=", 0], ["d.status", "=", 1]])
  749. ->where($where)
  750. ->field("d.id,d.title,d.type,a.nickname,a.mobile,a.email")
  751. ->select()->toArray();
  752. $list_proprietor = Db::name('department')->alias('d')->join("admin a", "d.leader_id=a.id")
  753. ->where([["d.type", "=", 1], ["pid", "=", 0], ["d.status", "=", 1]])
  754. ->where($where)
  755. ->field("d.id,d.title,d.type,a.nickname,a.mobile,a.email")
  756. ->select()->toArray();
  757. $list_exterior = array_merge($list_proprietor,$list_entrust);
  758. }
  759. View::assign('list_exterior', $list_exterior);
  760. return view();
  761. }
  762. public function getProjectFive()
  763. {
  764. $where = [
  765. ['name', '=', '作业日志-财政局'],
  766. ['name', '=', '工作记录-财政局'],
  767. ['name', '=', '项目报告-财政局'],
  768. ['name', '=', '项目人员-财政局'],
  769. ['name', '=', '项目动态-财政局'],
  770. ['name', '=', '项目附件-财政局'],
  771. ['name', '=', '联系函-财政局'],
  772. ];
  773. $list = Db::name('AdminRule')->whereOr($where)->field('id,name')->select()->toArray();
  774. $group_id = Db::name('AdminGroupAccess')->where('uid', get_login_admin('id'))->value('group_id');
  775. $login_rules = Db::name('AdminGroup')->where('id', $group_id)->value('rules');
  776. $login_rules = explode(',', $login_rules);
  777. $rules_id = array();
  778. foreach ($list as $key => $value) {
  779. if ($value['name'] == "作业日志-财政局") {
  780. if (in_array($value['id'], $login_rules)) {
  781. $rules_id['project_comments'] = 1;
  782. } else {
  783. $rules_id['project_comments'] = 0;
  784. }
  785. } else if ($value['name'] == "工作记录-财政局") {
  786. if (in_array($value['id'], $login_rules)) {
  787. $rules_id['project_record'] = 1;
  788. } else {
  789. $rules_id['project_record'] = 0;
  790. }
  791. } else if ($value['name'] == "项目报告-财政局") {
  792. if (in_array($value['id'], $login_rules)) {
  793. $rules_id['project_report'] = 1;
  794. } else {
  795. $rules_id['project_report'] = 0;
  796. }
  797. } else if ($value['name'] == "项目人员-财政局") {
  798. if (in_array($value['id'], $login_rules)) {
  799. $rules_id['project_user'] = 1;
  800. } else {
  801. $rules_id['project_user'] = 0;
  802. }
  803. } else if ($value['name'] == "项目动态-财政局") {
  804. if (in_array($value['id'], $login_rules)) {
  805. $rules_id['project_log'] = 1;
  806. } else {
  807. $rules_id['project_log'] = 0;
  808. }
  809. } else if ($value['name'] == "项目附件-财政局") {
  810. if (in_array($value['id'], $login_rules)) {
  811. $rules_id['project_file'] = 1;
  812. } else {
  813. $rules_id['project_file'] = 0;
  814. }
  815. } else if ($value['name'] == "联系函-财政局") {
  816. if (in_array($value['id'], $login_rules)) {
  817. $rules_id['project_contact'] = 1;
  818. } else {
  819. $rules_id['project_contact'] = 0;
  820. }
  821. }
  822. }
  823. return $rules_id;
  824. }
  825. public function getProjectFiveCompany()
  826. {
  827. $where = [
  828. ['name', '=', '作业日志-公司'],
  829. ['name', '=', '工作记录-公司'],
  830. ['name', '=', '项目报告-公司'],
  831. ['name', '=', '项目人员-公司'],
  832. ['name', '=', '项目动态-公司'],
  833. ['name', '=', '项目附件-公司'],
  834. ['name', '=', '联系函-公司'],
  835. ];
  836. $list = Db::name('AdminRule')->whereOr($where)->field('id,name')->select()->toArray();
  837. $group_id = Db::name('AdminGroupAccess')->where('uid', get_login_admin('id'))->value('group_id');
  838. $login_rules = Db::name('AdminGroup')->where('id', $group_id)->value('rules');
  839. $login_rules = explode(',', $login_rules);
  840. $rules_id = array();
  841. foreach ($list as $key => $value) {
  842. if ($value['name'] == "作业日志-公司") {
  843. if (in_array($value['id'], $login_rules)) {
  844. $rules_id['project_comments'] = 1;
  845. } else {
  846. $rules_id['project_comments'] = 0;
  847. }
  848. } else if ($value['name'] == "工作记录-公司") {
  849. if (in_array($value['id'], $login_rules)) {
  850. $rules_id['project_record'] = 1;
  851. } else {
  852. $rules_id['project_record'] = 0;
  853. }
  854. } else if ($value['name'] == "项目报告-公司") {
  855. if (in_array($value['id'], $login_rules)) {
  856. $rules_id['project_report'] = 1;
  857. } else {
  858. $rules_id['project_report'] = 0;
  859. }
  860. } else if ($value['name'] == "项目人员-公司") {
  861. if (in_array($value['id'], $login_rules)) {
  862. $rules_id['project_user'] = 1;
  863. } else {
  864. $rules_id['project_user'] = 0;
  865. }
  866. } else if ($value['name'] == "项目动态-公司") {
  867. if (in_array($value['id'], $login_rules)) {
  868. $rules_id['project_log'] = 1;
  869. } else {
  870. $rules_id['project_log'] = 0;
  871. }
  872. } else if ($value['name'] == "项目附件-公司") {
  873. if (in_array($value['id'], $login_rules)) {
  874. $rules_id['project_file'] = 1;
  875. } else {
  876. $rules_id['project_file'] = 0;
  877. }
  878. } else if ($value['name'] == "联系函-公司") {
  879. if (in_array($value['id'], $login_rules)) {
  880. $rules_id['project_contact'] = 1;
  881. } else {
  882. $rules_id['project_contact'] = 0;
  883. }
  884. }
  885. }
  886. return $rules_id;
  887. }
  888. public function getProjectFiveYezhu()
  889. {
  890. $where = [
  891. ['name', '=', '作业日志-业主'],
  892. ['name', '=', '工作记录-业主'],
  893. ['name', '=', '项目报告-业主'],
  894. ['name', '=', '项目人员-业主'],
  895. ['name', '=', '项目动态-业主'],
  896. ['name', '=', '项目附件-业主'],
  897. ['name', '=', '联系函-业主'],
  898. ];
  899. $list = Db::name('AdminRule')->whereOr($where)->field('id,name')->select()->toArray();
  900. $group_id = Db::name('AdminGroupAccess')->where('uid', get_login_admin('id'))->value('group_id');
  901. $login_rules = Db::name('AdminGroup')->where('id', $group_id)->value('rules');
  902. $login_rules = explode(',', $login_rules);
  903. $rules_id = array();
  904. foreach ($list as $key => $value) {
  905. if ($value['name'] == "作业日志-业主") {
  906. if (in_array($value['id'], $login_rules)) {
  907. $rules_id['project_comments'] = 1;
  908. } else {
  909. $rules_id['project_comments'] = 0;
  910. }
  911. } else if ($value['name'] == "工作记录-业主") {
  912. if (in_array($value['id'], $login_rules)) {
  913. $rules_id['project_record'] = 1;
  914. } else {
  915. $rules_id['project_record'] = 0;
  916. }
  917. } else if ($value['name'] == "项目报告-业主") {
  918. if (in_array($value['id'], $login_rules)) {
  919. $rules_id['project_report'] = 1;
  920. } else {
  921. $rules_id['project_report'] = 0;
  922. }
  923. } else if ($value['name'] == "项目人员-业主") {
  924. if (in_array($value['id'], $login_rules)) {
  925. $rules_id['project_user'] = 1;
  926. } else {
  927. $rules_id['project_user'] = 0;
  928. }
  929. } else if ($value['name'] == "项目动态-业主") {
  930. if (in_array($value['id'], $login_rules)) {
  931. $rules_id['project_log'] = 1;
  932. } else {
  933. $rules_id['project_log'] = 0;
  934. }
  935. } else if ($value['name'] == "项目附件-业主") {
  936. if (in_array($value['id'], $login_rules)) {
  937. $rules_id['project_file'] = 1;
  938. } else {
  939. $rules_id['project_file'] = 0;
  940. }
  941. } else if ($value['name'] == "联系函-业主") {
  942. if (in_array($value['id'], $login_rules)) {
  943. $rules_id['project_contact'] = 1;
  944. } else {
  945. $rules_id['project_contact'] = 0;
  946. }
  947. }
  948. }
  949. return $rules_id;
  950. }
  951. public function read_company()
  952. {
  953. $param = get_params();
  954. $unit_type = Db::name("department")->where("id", get_login_admin("unit_name"))->value("type");
  955. // halt($param);
  956. $a = time();
  957. $id = isset($param["project_id"]) ? $param["project_id"] : $a;
  958. if ($id == $a) {
  959. $datas = array();
  960. $datas["data"] = null;
  961. return table_assign(0, "无项目", $datas);
  962. }
  963. $project = Db::name("appropriation_project")->where("uid", $id)->select();
  964. $datas["data"] = $project;
  965. $datas["total"] = count($project);
  966. if ($param["type"] > 9) {
  967. $a = time();
  968. $id = isset($param["project_id"]) ? $param["project_id"] : $a;
  969. $detail = Db::name("appropriation")->where("id", $id)->find();
  970. $file_array = Db::name('ProjectFile')
  971. ->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')
  972. ->alias('mf')
  973. ->join('File f', 'mf.file_id = f.id', 'LEFT')
  974. ->join('Admin a', 'mf.admin_id = a.id', 'LEFT')
  975. ->order('mf.create_time desc')
  976. ->where(array('mf.topic_id' => $id, 'mf.module' => 'appropriation'))
  977. ->select()->toArray();
  978. $where = [
  979. ["approver", "=", $this->uid],
  980. ["audit_status", "<", 5]
  981. ];
  982. $list = $this->Auditmodel->alias("a")->join("cost_project c", "a.project_id=c.id", "left")
  983. ->where($where)->where('audit_status',1)->where('audit_type','in',[10,11,12])
  984. ->field("a.*,c.project_num,c.project_status,c.engineering_type,c.sent_review_amount")
  985. ->paginate(9999, false, ['query' => $param])
  986. ->each(function ($item, $key) {
  987. $item->approver_name = Db::name("admin")->where("id", $item->approver)->value("nickname");
  988. })->toArray();
  989. // halt($list);
  990. $red = 0;
  991. foreach ($list["data"] as $item => $value) {
  992. if ($value["audit_status"] == 1) {
  993. $red = 1;
  994. }
  995. }
  996. $red_id = Db::name("new_msg")->where("uid", "=", $this->uid)->select();
  997. $red_kan = 0;
  998. foreach ($red_id as $item => $value) {
  999. if ($value["detail"] || $value["comment"] || $value["report"] || $value["user"] || $value["contact"]) {
  1000. $red_kan = 1;
  1001. }
  1002. }
  1003. if($unit_type == 2){
  1004. $auditdata = $this->Auditmodel->where('id',$param['id'])->find();
  1005. $detail['audit_status'] = $auditdata['audit_status'];
  1006. View::assign('auditdata', $auditdata);
  1007. }else{
  1008. $detail['audit_status'] = 0;
  1009. }
  1010. // halt($audit_status,$id);
  1011. // halt($list);
  1012. View::assign('unit_type', $unit_type);
  1013. View::assign('datas', $datas['data']);
  1014. View::assign('id', $id);
  1015. View::assign('detail', $detail);
  1016. View::assign("red_kan", $red_kan);
  1017. View::assign('red', $red);
  1018. View::assign('file_array', $file_array);
  1019. return view();
  1020. }
  1021. }
  1022. public function datastat(){
  1023. return View();
  1024. }
  1025. public function contract()
  1026. {
  1027. return view();
  1028. }
  1029. public function contract_detail()
  1030. {
  1031. return view();
  1032. }
  1033. }