| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353 |
- <?php
- /**
- +-----------------------------------------------------------------------------------------------
- * GouGuOPEN [ 左手研发,右手开源,未来可期!]
- +-----------------------------------------------------------------------------------------------
- * @Copyright (c) 2021~2024 http://www.gouguoa.com All rights reserved.
- +-----------------------------------------------------------------------------------------------
- * @Licensed 勾股OA,开源且可免费使用,但并不是自由软件,未经授权许可不能去除勾股OA的相关版权信息
- +-----------------------------------------------------------------------------------------------
- * @Author 勾股工作室 <hdm58@qq.com>
- +-----------------------------------------------------------------------------------------------
- */
- declare (strict_types = 1);
- namespace app\adm\controller;
- use app\base\BaseController;
- use app\adm\validate\FlowCateCheck;
- use app\adm\validate\FlowCheck;
- use think\exception\ValidateException;
- use think\facade\Db;
- use think\facade\View;
- class Flow extends BaseController
- {
- public function datalist()
- {
- if (request()->isAjax()) {
- $rows = empty($param['limit']) ? get_config('app.page_size') : $param['limit'];
- $list = Db::name('Flow')
- ->field('f.*,fc.title as cate,fm.title as module')
- ->alias('f')
- ->join('FlowCate fc', 'fc.id = f.cate_id', 'left')
- ->join('FlowModule fm', 'fm.id = fc.module_id', 'left')
- ->order('id desc')->paginate(['list_rows'=> $rows])
- ->each(function($item, $key){
- if(!empty($item['department_ids'])){
- $item['departments']=get_department_name($item['department_ids']);
- }
- else{
- $item['departments']='全部';
- }
- if(!empty($item['copy_uids'])){
- $copy_unames=Db::name('Admin')->where([['status','=',1],['id','in',$item['copy_uids']]])->column('name');
- $item['copy_unames']=implode(',',$copy_unames);
- }
- else{
- $item['copy_unames']='-';
- }
- return $item;
- });
- return table_assign(0, '', $list);
- } else {
- return view();
- }
- }
- //添加新增/编辑
- public function add()
- {
- $param = get_params();
- if (request()->isAjax()) {
- $param['flow_list'] = '';
- $flow_list=[];
- //固定审批流
- if($param['check_type']==2){
- $roleData = isset($param['check_role']) ? $param['check_role'] : '';
- $positionIdData = isset($param['check_position_id']) ? $param['check_position_id'] : '';
- $checkUidsData = isset($param['check_uids_a']) ? $param['check_uids_a'] : '';
- $checkTypesData = isset($param['check_types']) ? $param['check_types'] : '';
- foreach ($roleData as $key => $value) {
- if (!$value) {
- continue;
- }
- if($value==3 && $positionIdData[$key]==''){
- return to_assign(1, '第'.($key+1).'行的指定岗位职称未选择');
- break;
- }
- if($value>3 && $checkUidsData[$key]==''){
- return to_assign(1, '第'.($key+1).'行的指定人未选择');
- break;
- }
- $item = [];
- $item['check_role'] = $value;
- $item['check_position_id'] = $positionIdData[$key];
- $item['check_uids'] = $checkUidsData[$key];
- $item['check_types'] = $checkTypesData[$key];
- $flow_list[]=$item;
- }
- $param['flow_list'] = serialize($flow_list);
- }
- //可回退审批流
- if($param['check_type']==3){
- $flowNameData = isset($param['flow_name']) ? $param['flow_name'] : '';
- $checkUidsData = isset($param['check_uids_b']) ? $param['check_uids_b'] : '';
- foreach ($flowNameData as $key => $value) {
- if (!$value) {
- continue;
- }
- if($checkUidsData[$key]==''){
- return to_assign(1, '第'.($key+1).'行的指定人未选择');
- break;
- }
- $item = [];
- $item['check_role'] = 5;
- $item['flow_name'] = $value;
- $item['check_uids'] = $checkUidsData[$key];
- $flow_list[]=$item;
- }
- if(empty($flow_list)){
- return to_assign(1, '审批流程信息未完善');
- }
- $param['flow_list'] = serialize($flow_list);
- }
-
- if ($param['id'] > 0) {
- try {
- validate(FlowCheck::class)->scene('edit')->check($param);
- } catch (ValidateException $e) {
- // 验证失败 输出错误信息
- return to_assign(1, $e->getError());
- }
- $param['update_time'] = time();
- Db::name('Flow')->strict(false)->field(true)->update($param);
- add_log('edit', $param['id'], $param);
- } else {
- try {
- validate(FlowCheck::class)->scene('add')->check($param);
- } catch (ValidateException $e) {
- // 验证失败 输出错误信息
- return to_assign(1, $e->getError());
- }
- $param['admin_id'] = $this->uid;
- $param['create_time'] = time();
- $mid = Db::name('Flow')->strict(false)->field(true)->insertGetId($param);
- add_log('add', $mid, $param);
- }
- return to_assign();
- } else {
- $id = isset($param['id']) ? $param['id'] : 0;
- $check_type = 1;
- if($id>0){
- $detail = Db::name('Flow')->where('id',$id)->find();
- $flow_list = unserialize($detail['flow_list']);
- if(!empty($flow_list)){
- foreach ($flow_list as $key => &$val) {
- $val['check_unames'] ='';
- $val['check_position_title'] ='';
- if($val['check_role']==3){
- $val['check_position_title'] = Db::name('Position')->where('id', '=', $val['check_position_id'])->value('title');
- }
- if($val['check_role']>3){
- $check_unames = Db::name('Admin')->where('id', 'in', $val['check_uids'])->column('name');
- $val['check_unames'] = implode(',', $check_unames);
- }
- }
- }
- $detail['flow_list'] = $flow_list;
- $detail['copy_unames'] ='';
- if($detail['copy_uids']!=''){
- $copy_unames = Db::name('Admin')->where('id', 'in', $detail['copy_uids'])->column('name');
- $detail['copy_unames'] = implode(',', $copy_unames);
- }
- $check_type = $detail['check_type'];
- //var_dump($flow_list);exit;
- View::assign('detail', $detail);
- }
- View::assign('check_type', $check_type);
- View::assign('id', $id);
- return view();
- }
- }
- //禁用/启用
- public function check()
- {
- $param = get_params();
- $param['update_time']= time();
- $res = Db::name('Flow')->strict(false)->field('status,update_time')->update($param);
- if($res!==false){
- if($param['status'] == 0){
- add_log('disable', $param['id'], $param);
- }
- else if($param['status'] == 1){
- add_log('recovery', $param['id'], $param);
- }
- return to_assign();
- }
- else{
- return to_assign(1,'操作失败');
- }
- }
- //审批模块
- public function modulelist()
- {
- if (request()->isAjax()) {
- $rows = empty($param['limit']) ? get_config('app.page_size') : $param['limit'];
- $list = Db::name('FlowModule')
- ->order('sort desc,id desc')
- ->paginate(['list_rows'=> $rows]);
- return table_assign(0, '', $list);
- } else {
- return view();
- }
- }
- //添加模块
- public function module_add()
- {
- $param = get_params();
- if (request()->isAjax()) {
- if (!empty($param['id']) && $param['id'] > 0) {
- $param['update_time'] = time();
- $res = Db::name('FlowModule')->strict(false)->field(true)->update($param);
- if ($res) {
- add_log('edit', $param['id'], $param);
- }
- return to_assign();
- } else {
- $param['create_time'] = time();
- $insertId = Db::name('FlowModule')->strict(false)->field(true)->insertGetId($param);
- if ($insertId) {
- add_log('add', $insertId, $param);
- }
- return to_assign();
- }
- }else {
- $id = isset($param['id']) ? $param['id'] : 0;
- if ($id > 0) {
- $detail = Db::name('FlowModule')->find($id);
- View::assign('detail', $detail);
- }
- View::assign('id', $id);
- return view();
- }
- }
-
- //设置
- public function module_check()
- {
- $param = get_params();
- $res = Db::name('FlowModule')->strict(false)->field('id,status')->update($param);
- if ($res) {
- if($param['status'] == 0){
- add_log('disable', $param['id'], $param);
- }
- else if($param['status'] == 1){
- add_log('recovery', $param['id'], $param);
- }
- return to_assign();
- }
- else{
- return to_assign(0, '操作失败');
- }
- }
-
- //审批类型列表
- public function catelist()
- {
- if (request()->isAjax()) {
- $rows = empty($param['limit']) ? get_config('app.page_size') : $param['limit'];
- $list = Db::name('FlowCate')
- ->field('fc.*,fm.title as module')
- ->alias('fc')
- ->join('FlowModule fm', 'fm.id = fc.module_id', 'left')
- ->order('fc.sort desc,fc.id desc')
- ->paginate(['list_rows'=> $rows])
- ->each(function($item, $key){
- if(!empty($item['department_ids'])){
- $item['departments']=get_department_name($item['department_ids']);
- }
- else{
- $item['departments']='全部';
- }
- return $item;
- });
- return table_assign(0, '', $list);
- } else {
- return view();
- }
- }
- //添加审批类型
- public function cate_add()
- {
- $param = get_params();
- if (request()->isAjax()) {
- if (!empty($param['id']) && $param['id'] > 0) {
- try {
- validate(FlowCateCheck::class)->scene('edit')->check($param);
- } catch (ValidateException $e) {
- // 验证失败 输出错误信息
- return to_assign(1, $e->getError());
- }
- $param['update_time'] = time();
- $res = Db::name('FlowCate')->strict(false)->field(true)->update($param);
- if ($res) {
- add_log('edit', $param['id'], $param);
- }
- return to_assign();
- } else {
- try {
- validate(FlowCateCheck::class)->scene('add')->check($param);
- } catch (ValidateException $e) {
- // 验证失败 输出错误信息
- return to_assign(1, $e->getError());
- }
- $param['create_time'] = time();
- $insertId = Db::name('FlowCate')->strict(false)->field(true)->insertGetId($param);
- if ($insertId) {
- add_log('add', $insertId, $param);
- }
- return to_assign();
- }
- }else {
- $id = isset($param['id']) ? $param['id'] : 0;
- if ($id > 0) {
- $detail = Db::name('FlowCate')->find($id);
- if(!empty($detail['department_ids'])){
- $detail['departments']=get_department_name($detail['department_ids']);
- }
- else{
- $detail['departments']='全部';
- }
- if($detail['template_id']>0){
- $detail['template_title'] = Db::name('Template')->where('id',$detail['template_id'])->value('title');
- }
- View::assign('detail', $detail);
- }
- View::assign('id', $id);
- return view();
- }
- }
-
- //审批类型设置
- public function cate_check()
- {
- $param = get_params();
- $res = Db::name('FlowCate')->strict(false)->field('id,status')->update($param);
- if ($res) {
- if($param['status'] == 0){
- add_log('disable', $param['id'], $param);
- }
- else if($param['status'] == 1){
- add_log('recovery', $param['id'], $param);
- }
- return to_assign();
- }
- else{
- return to_assign(0, '操作失败');
- }
- }
- }
|