Approval.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  1. <?php
  2. namespace app\admin\controller\project;
  3. use app\admin\BaseController;
  4. use app\admin\model\CostProject as CostProjectModel;
  5. use app\admin\model\ProjectAudit;
  6. use app\admin\validate\project\CostProjectValidate;
  7. use think\exception\ValidateException;
  8. use think\facade\Db;
  9. use think\facade\Session;
  10. use think\facade\View;
  11. use think\App;
  12. use app\admin\controller\field\Fieldcompany;
  13. use app\admin\controller\Pushmessage;
  14. //财政局待接收
  15. class Approval extends BaseController
  16. {
  17. public function __construct(App $app)
  18. {
  19. parent::__construct($app);
  20. $this->Field = new Fieldcompany($this->app);
  21. $this->model = new CostProjectModel();
  22. $this->uid = get_login_admin('id');
  23. $this->Pushmessage = new Pushmessage();
  24. }
  25. //财评的待接收
  26. public function datalist()
  27. {
  28. if (request()->isAjax()) {
  29. $param = get_params();
  30. $where = [
  31. ["cp_cost_project.delete_time", "=", 0],
  32. ["project_status","=",0],//无
  33. ["proprietor_status", "=", 2],//待接受
  34. ["entrust_unit", "=", get_login_admin('unit_name')],//找到财评所属单位
  35. ];
  36. $rows = empty($param['limit']) ? get_config('app . page_size') : $param['limit'];
  37. $order = empty($param['order']) ? 'id desc' : $param['order'];
  38. $list = $this->model->where($where)
  39. ->order($order)->paginate($rows, false, ['query' => $param])
  40. ->each(function ($item) {
  41. //作业人
  42. $red = Db::name("new_msg")->where([["project_id", "=", $item->id], ["uid", "=", $this->uid]])->find();
  43. if ($red) {
  44. if ($red["detail"] || $red["comment"] || $red["report"] || $red["user"] || $red["contact"]) {
  45. $item->red = 1;
  46. }
  47. } else {
  48. $item->red = 0;
  49. }
  50. if (($item->province && $item->city && $item->area)) {
  51. $item->project_region = $item->province . '-' . $item->city . '-' . $item->area;
  52. }
  53. //作业人
  54. $operate_team_names = null;
  55. $operate_team_names_ids = explode(",", $item->operate_team);
  56. for ($i = 0; $i < count($operate_team_names_ids); $i++) {
  57. $name = Db::name("admin")->where("id", $operate_team_names_ids[$i])->value("nickname");
  58. if (!($i == 0)) {
  59. $name = "," . $name;
  60. }
  61. $operate_team_names = $operate_team_names . $name;
  62. }
  63. $item->operate_team_names = $operate_team_names;
  64. });
  65. return table_assign(0, '', $list);
  66. } else {
  67. return view();
  68. }
  69. }
  70. public function receive(){
  71. if(request()->isAjax()){
  72. $param = get_params();
  73. $id = $param["id"] ?? 0;
  74. $this->model->update(["id"=>$id,"proprietor_status"=>3,"project_status"=>1]);
  75. add_project_log('项目接收', $id, '项目接收');
  76. // $project_id = $this->model->where('id', $id)->value('project_id');
  77. // $sent_review_head = $this->model->where('id', $id)->value('sent_review_head');
  78. // $this->Pushmessage->pushMessage($project_id, [], [], (array)$sent_review_head);
  79. return to_assign(0,"操作成功");
  80. }
  81. }
  82. /**
  83. * 查看信息
  84. */
  85. public function read()
  86. {
  87. $param = get_params();
  88. $id = isset($param['id']) ? $param['id'] : 0;
  89. // dump($id);
  90. $detail = $this->model->getCostProjectById($id);
  91. $comment_type = isset($param["comment_type"])?$param['comment_type'] : 0;
  92. $comment = Db::name("project_comment")->where("type",$comment_type)
  93. ->where("project_id", $id)->order('create_time', 'asc')->select();
  94. $file_array = Db::name('ProjectFile')
  95. ->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')
  96. ->alias('mf')
  97. ->join('File f', 'mf.file_id = f.id', 'LEFT')
  98. ->join('Admin a', 'mf.admin_id = a.id', 'LEFT')
  99. ->order('mf.create_time desc')
  100. ->where(array('mf.topic_id' => $id, 'mf.module' => 'project'))
  101. ->select()->toArray();
  102. $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();
  103. $uid = Db::name("relation")->where("uuid",$id)->column("uid");
  104. $contract = Db::name("contract")->whereIn("id",$uid)
  105. ->where("subject_id",get_login_admin("unit_name"))->column("id,name,type,sign_time,sign_name");
  106. //小红点消息
  107. $red = Db::name("new_msg")->where([["uid", '=', $this->uid], ["project_id", "=", $id]])->field('detail,comment,report,user,contact')->find();
  108. if (empty($red)) {
  109. $red = ["detail" => 0, "comment" => 0, "report" => 0, "user" => 0, "contact" => 0];
  110. }
  111. //剩余时间
  112. $c = $detail['project_end_time'] - time();
  113. if ($c > 0) {
  114. $advent_time = floor($c / 86400) . "天";
  115. } else {
  116. $c = -$c;
  117. $advent_time = floor($c / 86400) . "天";
  118. }
  119. $project_log = self::project_log($id);
  120. View::assign('project_log', $project_log);
  121. // halt($project_log);
  122. // 根据用户id 查询其能显示的字段
  123. $field = $this->Field->get_field_rules_new(get_login_admin('id'));
  124. // dump($field);
  125. if (!empty($detail)) {
  126. View::assign('advent_time', $advent_time);
  127. View::assign('project_id', $id);
  128. View::assign('comment', $comment);
  129. View::assign('field', $field);
  130. View::assign('detail', $detail);
  131. View::assign('file_array', $file_array);
  132. View::assign('report', $report);
  133. View::assign('contract', $contract);
  134. View::assign('red', $red);
  135. View::assign('project_five', self::getProjectFive());
  136. // dump(self::getProjectFive());
  137. return view();
  138. } else {
  139. throw new \think\exception\HttpException(404, '找不到页面');
  140. }
  141. }
  142. public function project_log($project_id)
  143. {
  144. // $project_id = 24;
  145. $login_admin = get_admin(get_login_admin('id'));
  146. $where = array();
  147. if ($login_admin['user_type'] == 2) {
  148. $where = [
  149. ['project_status', '>=', 3],
  150. ['unit_name', '=', $login_admin['unit_name']],
  151. ];
  152. } else {
  153. if ($login_admin['permission'] != 1) {
  154. $where = [
  155. ['unit_name', '=', $login_admin['unit_name']],
  156. ];
  157. }
  158. }
  159. // dump($where);
  160. $project_log = Db::name('ProjectLog')->where($where)->where('project_id', $project_id)->order('create_time', 'desc')->select()->toArray();
  161. foreach ($project_log as $key => $value) {
  162. $project_log[$key]['create_time'] = date("Y-m-d H:i:s", $value['create_time']);
  163. }
  164. // dump($project_log);
  165. // View::assign('project_log', $project_log);
  166. // return View();
  167. return $project_log;
  168. }
  169. public function getProjectFive()
  170. {
  171. $where = [
  172. ['name', '=', '作业日志-业主'],
  173. ['name', '=', '工作记录-业主'],
  174. ['name', '=', '项目报告-业主'],
  175. ['name', '=', '项目人员-业主'],
  176. ['name', '=', '项目动态-业主'],
  177. ['name', '=', '项目附件-业主'],
  178. ['name', '=', '联系函-业主'],
  179. ];
  180. $list = Db::name('AdminRule')->whereOr($where)->field('id,name')->select()->toArray();
  181. $group_id = Db::name('AdminGroupAccess')->where('uid', get_login_admin('id'))->value('group_id');
  182. $login_rules = Db::name('AdminGroup')->where('id', $group_id)->value('rules');
  183. $login_rules = explode(',', $login_rules);
  184. $rules_id = array();
  185. foreach ($list as $key => $value) {
  186. if ($value['name'] == "作业日志-业主") {
  187. if (in_array($value['id'], $login_rules)) {
  188. $rules_id['project_comments'] = 1;
  189. } else {
  190. $rules_id['project_comments'] = 0;
  191. }
  192. } else if ($value['name'] == "工作记录-业主") {
  193. if (in_array($value['id'], $login_rules)) {
  194. $rules_id['project_record'] = 1;
  195. } else {
  196. $rules_id['project_record'] = 0;
  197. }
  198. } else if ($value['name'] == "项目报告-业主") {
  199. if (in_array($value['id'], $login_rules)) {
  200. $rules_id['project_report'] = 1;
  201. } else {
  202. $rules_id['project_report'] = 0;
  203. }
  204. } else if ($value['name'] == "项目人员-业主") {
  205. if (in_array($value['id'], $login_rules)) {
  206. $rules_id['project_user'] = 1;
  207. } else {
  208. $rules_id['project_user'] = 0;
  209. }
  210. } else if ($value['name'] == "项目动态-业主") {
  211. if (in_array($value['id'], $login_rules)) {
  212. $rules_id['project_log'] = 1;
  213. } else {
  214. $rules_id['project_log'] = 0;
  215. }
  216. } else if ($value['name'] == "项目附件-业主") {
  217. if (in_array($value['id'], $login_rules)) {
  218. $rules_id['project_file'] = 1;
  219. } else {
  220. $rules_id['project_file'] = 0;
  221. }
  222. } else if ($value['name'] == "联系函-业主") {
  223. if (in_array($value['id'], $login_rules)) {
  224. $rules_id['project_contact'] = 1;
  225. } else {
  226. $rules_id['project_contact'] = 0;
  227. }
  228. }
  229. }
  230. return $rules_id;
  231. }
  232. }