Files.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349
  1. <?php
  2. /**
  3. +-----------------------------------------------------------------------------------------------
  4. * GouGuOPEN [ 左手研发,右手开源,未来可期!]
  5. +-----------------------------------------------------------------------------------------------
  6. * @Copyright (c) 2021~2024 http://www.gouguoa.com All rights reserved.
  7. +-----------------------------------------------------------------------------------------------
  8. * @Licensed 勾股OA,开源且可免费使用,但并不是自由软件,未经授权许可不能去除勾股OA的相关版权信息
  9. +-----------------------------------------------------------------------------------------------
  10. * @Author 勾股工作室 <hdm58@qq.com>
  11. +-----------------------------------------------------------------------------------------------
  12. */
  13. declare (strict_types = 1);
  14. namespace app\user\controller;
  15. use app\base\BaseController;
  16. use app\user\model\Admin as AdminList;
  17. use think\facade\Db;
  18. use think\facade\View;
  19. class Files extends BaseController
  20. {
  21. public function datalist()
  22. {
  23. if (request()->isAjax()) {
  24. $param = get_params();
  25. $where = array();
  26. $whereOr = array();
  27. if (!empty($param['keywords'])) {
  28. $where[] = ['a.id|a.username|a.name|a.nickname|a.mobile|a.desc', 'like', '%' . $param['keywords'] . '%'];
  29. }
  30. if (isset($param['status']) && $param['status']!='') {
  31. $where[] = ['a.status', '=', $param['status']];
  32. }
  33. else{
  34. $where[] = ['a.status', '=', 1];
  35. }
  36. if (!empty($param['political'])) {
  37. $where[] = ['a.political', '=', $param['political']];
  38. }
  39. if (!empty($param['position_name'])) {
  40. $where[] = ['a.position_name', '=', $param['position_name']];
  41. }
  42. if (!empty($param['position_rank'])) {
  43. $where[] = ['a.position_rank', '=', $param['position_rank']];
  44. }
  45. if (!empty($param['did'])) {
  46. $admin_array = Db::name('DepartmentAdmin')->where('department_id',$param['did'])->column('admin_id');
  47. $map1=[
  48. ['a.id','in',$admin_array],
  49. ];
  50. $map2=[
  51. ['a.did', '=', $param['did']],
  52. ];
  53. $whereOr =[$map1,$map2];
  54. }
  55. $where[] = ['a.id', '>', 1];
  56. $list = AdminList::alias('a')
  57. ->with('departments')
  58. ->field('a.*,p.title as position,d.title as department')
  59. ->join('Department d', 'd.id = a.did','left')
  60. ->join('Position p', 'p.id = a.position_id','left')
  61. ->where($where)
  62. ->where(function ($query) use($whereOr) {
  63. if (!empty($whereOr)){
  64. $query->whereOr($whereOr);
  65. }
  66. })
  67. ->paginate(intval($this->pageSize))
  68. ->order('a.id desc')
  69. ->each(function ($item, $key) {
  70. //遍历次要部门数据
  71. $departments = $item->departments->toArray();
  72. if(empty($departments)){
  73. $item['departments'] = '-';
  74. }
  75. else{
  76. $item['departments'] = split_array_field($departments,'title');
  77. }
  78. if($item['political']==1){
  79. $item['political_str'] = '中共党员';
  80. }
  81. else if($item['political']==2){
  82. $item['political_str'] = '团员';
  83. }
  84. else{
  85. $item['political_str'] = '-';
  86. }
  87. $item['entry_time'] = to_date($item['entry_time'],'Y-m-d');
  88. $item['birthday_str'] = to_date($item['birthday'],'Y-m-d');
  89. $item['last_login_time'] = to_date('Y-m-d H:i', $item->last_login_time);
  90. $item['last_login_ip'] = empty($item['last_login_ip']) ? '-' : $item['last_login_ip'];
  91. return $item;
  92. });
  93. return table_assign(0, '', $list);
  94. } else {
  95. return view();
  96. }
  97. }
  98. //添加
  99. public function add()
  100. {
  101. $param = get_params();
  102. $id = isset($param['id'])?$param['id']:0;
  103. if (request()->isAjax()) {
  104. if($id == 1){
  105. return to_assign(1, '超级管理员信息不支持编辑');
  106. }
  107. $res = Db::name('Admin')->where(['id' => $id])->strict(false)->field(true)->update($param);
  108. if($res!==false){
  109. //教育经历
  110. $edu_start_time = isset($param['edu_start_time']) ? $param['edu_start_time'] : '';
  111. $edu_end_time = isset($param['edu_end_time']) ? $param['edu_end_time'] : '';
  112. $edu_title = isset($param['edu_title']) ? $param['edu_title'] : '';
  113. $edu_speciality = isset($param['edu_speciality']) ? $param['edu_speciality'] : '';
  114. $edu_education = isset($param['edu_education']) ? $param['edu_education'] : '';
  115. $edu_remark = isset($param['edu_remark']) ? $param['edu_remark'] : '';
  116. $edu_id = isset($param['edu_id']) ? $param['edu_id'] : 0;
  117. if ($edu_start_time) {
  118. foreach ($edu_start_time as $key => $value) {
  119. if (!$value && $value !=' ') {
  120. continue;
  121. }
  122. $data = [];
  123. $data['start_time'] = $value;
  124. $data['end_time'] = $edu_end_time[$key];
  125. $data['title'] = $edu_title[$key];
  126. $data['speciality'] = $edu_speciality[$key];
  127. $data['education'] = $edu_education[$key];
  128. $data['remark'] = $edu_remark[$key];
  129. $data['admin_id'] = $id;
  130. $data['types'] = 1;
  131. if($edu_id[$key]>0){
  132. $data['id'] = $edu_id[$key];
  133. $data['update_time'] = time();
  134. Db::name('AdminProfiles')->strict(false)->field(true)->update($data);
  135. }
  136. else{
  137. $data['create_uid'] = $this->uid;
  138. $data['create_time'] = time();
  139. $data['update_time'] = time();
  140. $eid = Db::name('AdminProfiles')->strict(false)->field(true)->insertGetId($data);
  141. }
  142. }
  143. }
  144. //工作经历
  145. $work_start_time = isset($param['work_start_time']) ? $param['work_start_time'] : '';
  146. $work_end_time = isset($param['work_end_time']) ? $param['work_end_time'] : '';
  147. $work_title = isset($param['work_title']) ? $param['work_title'] : '';
  148. $work_position = isset($param['work_position']) ? $param['work_position'] : '';
  149. $work_remark = isset($param['work_remark']) ? $param['work_remark'] : '';
  150. $work_id = isset($param['work_id']) ? $param['work_id'] : 0;
  151. if ($work_start_time) {
  152. foreach ($work_start_time as $key => $value) {
  153. if (!$value && $value !=' ') {
  154. continue;
  155. }
  156. $data = [];
  157. $data['start_time'] = $value;
  158. $data['end_time'] = $work_end_time[$key];
  159. $data['title'] = $work_title[$key];
  160. $data['position'] = $work_position[$key];
  161. $data['remark'] = $work_remark[$key];
  162. $data['admin_id'] = $id;
  163. $data['types'] = 2;
  164. if($work_id[$key]>0){
  165. $data['id'] = $work_id[$key];
  166. $data['update_time'] = time();
  167. Db::name('AdminProfiles')->strict(false)->field(true)->update($data);
  168. }
  169. else{
  170. $data['create_uid'] = $this->uid;
  171. $data['create_time'] = time();
  172. $data['update_time'] = time();
  173. $eid = Db::name('AdminProfiles')->strict(false)->field(true)->insertGetId($data);
  174. }
  175. }
  176. }
  177. //相关证书
  178. $certificate_start_time = isset($param['certificate_start_time']) ? $param['certificate_start_time'] : '';
  179. $certificate_title = isset($param['certificate_title']) ? $param['certificate_title'] : '';
  180. $certificate_authority = isset($param['certificate_authority']) ? $param['certificate_authority'] : '';
  181. $certificate_remark = isset($param['certificate_remark']) ? $param['certificate_remark'] : '';
  182. $certificate_id = isset($param['certificate_id']) ? $param['certificate_id'] : 0;
  183. if ($certificate_start_time) {
  184. foreach ($certificate_start_time as $key => $value) {
  185. if (!$value && $value !=' ') {
  186. continue;
  187. }
  188. $data = [];
  189. $data['start_time'] = $value;
  190. $data['title'] = $certificate_title[$key];
  191. $data['authority'] = $certificate_authority[$key];
  192. $data['remark'] = $certificate_remark[$key];
  193. $data['admin_id'] = $id;
  194. $data['types'] = 3;
  195. if($certificate_id[$key]>0){
  196. $data['id'] = $certificate_id[$key];
  197. $data['update_time'] = time();
  198. Db::name('AdminProfiles')->strict(false)->field(true)->update($data);
  199. }
  200. else{
  201. $data['create_uid'] = $this->uid;
  202. $data['create_time'] = time();
  203. $data['update_time'] = time();
  204. $eid = Db::name('AdminProfiles')->strict(false)->field(true)->insertGetId($data);
  205. }
  206. }
  207. }
  208. //计算机技能
  209. $skills_title = isset($param['skills_title']) ? $param['skills_title'] : '';
  210. $skills_know = isset($param['skills_know']) ? $param['skills_know'] : '';
  211. $skills_remark = isset($param['skills_remark']) ? $param['skills_remark'] : '';
  212. $skills_id = isset($param['skills_id']) ? $param['skills_id'] : 0;
  213. if ($skills_title) {
  214. foreach ($skills_title as $key => $value) {
  215. if (!$value && $value !=' ') {
  216. continue;
  217. }
  218. $data = [];
  219. $data['title'] = $skills_title[$key];
  220. $data['know'] = $skills_know[$key];
  221. $data['remark'] = $skills_remark[$key];
  222. $data['admin_id'] = $id;
  223. $data['types'] = 4;
  224. if($skills_id[$key]>0){
  225. $data['id'] = $skills_id[$key];
  226. $data['update_time'] = time();
  227. Db::name('AdminProfiles')->strict(false)->field(true)->update($data);
  228. }
  229. else{
  230. $data['create_uid'] = $this->uid;
  231. $data['create_time'] = time();
  232. $data['update_time'] = time();
  233. $eid = Db::name('AdminProfiles')->strict(false)->field(true)->insertGetId($data);
  234. }
  235. }
  236. }
  237. //语言能力
  238. $language_title = isset($param['language_title']) ? $param['language_title'] : '';
  239. $language_know = isset($param['language_know']) ? $param['language_know'] : '';
  240. $language_remark = isset($param['language_remark']) ? $param['language_remark'] : '';
  241. $language_id = isset($param['language_id']) ? $param['language_id'] : 0;
  242. if ($language_title) {
  243. foreach ($language_title as $key => $value) {
  244. if (!$value && $value !=' ') {
  245. continue;
  246. }
  247. $data = [];
  248. $data['title'] = $language_title[$key];
  249. $data['know'] = $language_know[$key];
  250. $data['remark'] = $language_remark[$key];
  251. $data['admin_id'] = $id;
  252. $data['types'] = 5;
  253. if($language_id[$key]>0){
  254. $data['id'] = $language_id[$key];
  255. $data['update_time'] = time();
  256. Db::name('AdminProfiles')->strict(false)->field(true)->update($data);
  257. }
  258. else{
  259. $data['create_uid'] = $this->uid;
  260. $data['create_time'] = time();
  261. $data['update_time'] = time();
  262. $eid = Db::name('AdminProfiles')->strict(false)->field(true)->insertGetId($data);
  263. }
  264. }
  265. }
  266. add_log('edit', $id, $param);
  267. return to_assign();
  268. }
  269. else{
  270. return to_assign(1, '提交失败');
  271. }
  272. } else {
  273. $detail = get_admin($id);
  274. $detail['pname'] = Db::name('Admin')->where('id',$detail['pid'])->value('name');
  275. $detail['position'] = Db::name('Position')->where('id',$detail['position_id'])->value('title');
  276. $detail['department'] = Db::name('Department')->where('id',$detail['did'])->value('title');
  277. $department_ids = Db::name('DepartmentAdmin')->where('admin_id',$id)->column('department_id');
  278. $department_names = Db::name('Department')->whereIn('id',$department_ids)->column('title');
  279. $detail['department_names'] = implode(',',$department_names);
  280. if($detail['file_ids'] !=''){
  281. $file_array = Db::name('File')->where('id','in',$detail['file_ids'])->select();
  282. $detail['file_array'] = $file_array;
  283. }
  284. $edu = Db::name('AdminProfiles')->where(['types'=>1,'admin_id'=>$id,'delete_time'=>0])->select()->toArray();
  285. $work = Db::name('AdminProfiles')->where(['types'=>2,'admin_id'=>$id,'delete_time'=>0])->select()->toArray();
  286. $certificate = Db::name('AdminProfiles')->where(['types'=>3,'admin_id'=>$id,'delete_time'=>0])->select()->toArray();
  287. $skills = Db::name('AdminProfiles')->where(['types'=>4,'admin_id'=>$id,'delete_time'=>0])->select()->toArray();
  288. $language = Db::name('AdminProfiles')->where(['types'=>5,'admin_id'=>$id,'delete_time'=>0])->select()->toArray();
  289. View::assign('edu', $edu);
  290. View::assign('work', $work);
  291. View::assign('skills', $skills);
  292. View::assign('certificate', $certificate);
  293. View::assign('language', $language);
  294. View::assign('detail', $detail);
  295. View::assign('id', $id);
  296. return view();
  297. }
  298. }
  299. //查看
  300. public function view()
  301. {
  302. $param = get_params();
  303. $id = isset($param['id'])?$param['id']:0;
  304. $detail = get_admin($id);
  305. $detail['pname'] = Db::name('Admin')->where('id',$detail['pid'])->value('name');
  306. $detail['position'] = Db::name('Position')->where('id',$detail['position_id'])->value('title');
  307. $detail['department'] = Db::name('Department')->where('id',$detail['did'])->value('title');
  308. $department_ids = Db::name('DepartmentAdmin')->where('admin_id',$id)->column('department_id');
  309. $department_names = Db::name('Department')->whereIn('id',$department_ids)->column('title');
  310. $detail['department_names'] = implode(',',$department_names);
  311. if($detail['file_ids'] !=''){
  312. $file_array = Db::name('File')->where('id','in',$detail['file_ids'])->select();
  313. $detail['file_array'] = $file_array;
  314. }
  315. $edu = Db::name('AdminProfiles')->where(['types'=>1,'admin_id'=>$id,'delete_time'=>0])->select()->toArray();
  316. $work = Db::name('AdminProfiles')->where(['types'=>2,'admin_id'=>$id,'delete_time'=>0])->select()->toArray();
  317. $certificate = Db::name('AdminProfiles')->where(['types'=>3,'admin_id'=>$id,'delete_time'=>0])->select()->toArray();
  318. $skills = Db::name('AdminProfiles')->where(['types'=>4,'admin_id'=>$id,'delete_time'=>0])->select()->toArray();
  319. $language = Db::name('AdminProfiles')->where(['types'=>5,'admin_id'=>$id,'delete_time'=>0])->select()->toArray();
  320. View::assign('edu', $edu);
  321. View::assign('work', $work);
  322. View::assign('skills', $skills);
  323. View::assign('certificate', $certificate);
  324. View::assign('language', $language);
  325. View::assign('detail', $detail);
  326. View::assign('id', $id);
  327. return view();
  328. }
  329. }