123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437 |
- <?php
- namespace app\sys\controller;
- use think\facade\View;
- use think\facade\Request;
- use app\model\Employee;
- use app\model\Org;
- use app\model\DailyTasks as DailyTasksModel;
- use think\facade\Db;
- use app\model\ShareLog;
- //
- class DailyTasks extends Base
- {
- /*
- * 任务列表
- */
- public function index()
- {
- $date = date('Y-m-d H:i:s');
- $data['count'] = $data['ing_count'] = $data['pass_count'] = $data['no_count'] = $data['grawth'] = 0;
- $w[] = ['root_id','=',request()->employee->root_id];
- $w[] = ['del','=',0];
- $data['count'] = DailyTasksModel::where($w)->count();
- $w[] = ['end_date','>=',$date];
- $data['ing_count'] = DailyTasksModel::where($w)->where('grawth is null or grawth <> 100')->count();
- $w1[] = ['root_id','=',request()->employee->root_id];
- $w1[] = ['del','=',0];
- $w1[] = ['grawth','=',100];
- $data['pass_count'] = DailyTasksModel::where($w1)->count();
- $w2[] = ['root_id','=',request()->employee->root_id];
- $w2[] = ['del','=',0];
- // $w2[] = ['grawth','<',100];
- $w2[] = ['end_date','<',$date];
- $data['no_count'] = DailyTasksModel::where($w2)->where('(grawth is null or grawth < 100)')->count();
- $data['grawth'] = $data['count']==0 ? '0%' : round($data['pass_count']/$data['count']*100,2).'%';
- View::assign('data',$data);
- return View::fetch();
- }
- /*
- * 任务列表
- */
- public function list()
- {
- $param = Request::only(['type'=>'','page'=>1,'limit'=>6]);
- $w[] = ['root_id','=',request()->employee->root_id];
- $w[] = ['del','=',0];
- if ($param['type']) {
- $w[] = ['type','=',$param['type']];
- }
- // return json(['code' => 0, 'data' => $list, 'count' =>$count]);
- //
- $list = DailyTasksModel::with(['content'])->where($w)->page($param['page'],$param['limit'])->order('id desc')->select()->toArray();
- //每日发圈不能分享
- $type_arr = ['material_case'=>'MaterialCase','evidencelist'=>'MaterialEvidence','video'=>'Video','article'=>'Article','wxshowlist'=>'abc'];
- $type_name = ['material_case'=>'装修案例','evidencelist'=>'客户见证','video'=>'视频素材','article'=>'图文素材','wxshowlist'=>'朋友圈'];
- $data = [];
- foreach ($list as $k => $v) {
- $save = [];
- $save['title'] = $save['con'] = $save['img'] = '';
- $save['end_date'] = $v['end_date'];
- $save['org_ids'] = $v['org_ids'];
- if ($v['type']=='material_case') {
- $save['title'] = $v['content']['title'];
- $save['con'] = strip_tags($v['content']['desc']);
- $save['img'] = $v['content']['cover_img'] ? [$v['content']['cover_img']] : [];
- }elseif ($v['type']=='evidencelist') {
- $save['title'] = $v['content']['title'];
- $save['con'] = strip_tags($v['content']['desc']);
- $save['img'] = $v['content']['pics'] ? $v['content']['pics'] : [];
- }elseif ($v['type']=='video') {
- $save['title'] = $v['content']['title'];
- $save['con'] = strip_tags($v['content']['description']);
- $save['img'] = $v['content']['video_url'] ? [$v['content']['video_url'].'?x-oss-process=video/snapshot,t_100,f_jpg,w_500,m_fast'] : [];
- }elseif ($v['type']=='article') {
- $save['title'] = $v['content']['title'];
- $save['con'] = strip_tags($v['content']['content']);
- $save['img'] = $v['content']['cover_img'] ? [$v['content']['cover_img']] : [];
- }elseif ($v['type']=='wxshowlist') {
- // $save['title'] = $v['content']['title'];//朋友圈没有标题
- $save['con'] = strip_tags($v['content']['content']);
- // 视频
- if ($v['content']['type']==1) {
- $img = $v['content']['picture'] ?: [];
- foreach ($img as $k2 => $v2) {
- $img[$k2] = $v2.'?x-oss-process=video/snapshot,t_100,f_jpg,w_500,m_fast';
- }
- $save['img'] = $img;
- }elseif ($v['content']['type']==2) {//图片
- $save['img'] = $v['content']['picture'] ? $v['content']['picture'] : [];
- }elseif ($v['content']['type']==3) {
- $save['img'] = $img;
- }
- }
- $save['id'] = $v['id'];
- if ($v['end_date'].' 23:59:59'>date('Y-m-d H:i:s')) {
- $save['state'] = '进行中';
- }else{
- $save['state'] = '已结束';
- }
- $save['end_date'] = $v['end_date'] ?: '未设置 ';
- //
- $save['type_name'] = $type_name[$v['type']];
- $orgids = $v['org_ids'] ? explode(',',$v['org_ids']) : [];
- $w1 = [];
- $w1[] = ['org_id','in',$orgids];
- $w1[] = ['root_id','=',request()->employee->root_id];
- $w1[] = ['state','=','在职'];
- $w1[] = ['uid','>',0];
- $eids = Employee::where($w1)->column('id');
- $save['all_count'] = count($eids);
- $w2 = [];
- $eids = $v['employee_ids'] ? explode(',',$v['employee_ids']) : [];
- $w2[] = ['root_id','=',request()->employee->root_id];
- $w2[] = ['id','in',$eids];
- $w2[] = ['state','=','在职'];
- $w2[] = ['uid','>',0];
- $save['count'] = Employee::where($w2)->count();
- $data[] = $save;
- }
- $count = DailyTasksModel::where($w)->count();
- return json(['code' => 0, 'data' => $data, 'count' =>$count]);
- }
- //完成情况
- public function person(){
- $id = input('id',0);
- View::assign('id',$id);
- return View::fetch();
- }
- //完成情况
- public function person_list(){
- $id = input('id',0);
- $type = input('type');
- $page = input('page',1);
- $limit = input('limit',10);
- $w[] = ['id','=',$id];
- $w[] = ['root_id','=',request()->employee->root_id];
- $row = DailyTasksModel::where($w)->findOrEmpty();
- if ($row->isEmpty()) {
- return json(['code' => 1, 'data' =>'任务不存在', 'msg' =>'任务不存在']);
- }
- $type_arr = ['material_case'=>'MaterialCase','evidencelist'=>'MaterialEvidence','video'=>'Video','article'=>'Article','wxshowlist'=>'abc'];
- $row->type = $type_arr[$row->type];
- $orgids = $row->org_ids ? explode(',',$row->org_ids) : [];
- $eids = $row->employee_ids ? explode(',',$row->employee_ids) : [];
- $w1 = [];
- $w1[] = ['org_id','in',$orgids];
- $w1[] = ['root_id','=',request()->employee->root_id];
- $w1[] = ['state','=','在职'];
- $w1[] = ['uid','>',0];
- $list = Employee::with(['oneOrg'=>function($query){
- $query->visible(['name','id'])->bind(['org_name'=>'name']);
- }])->where($w1)->field(['org_id','name','id'])->page($page,$limit)->select()->toArray();
- foreach ($list as $k => $v) {
- $list[$k]['state'] = in_array($v['id'],$eids) ? '已执行' : '未执行';
- }
- $count = Employee::where($w1)->count();
- return json(['code' => 0, 'data' => $list, 'count' =>$count]);
- }
- //指派弹框
- public function assign_org(){
- $id = input('id',0);
- $type = input('type','');
- View::assign('id',$id);
- View::assign('type',$type);
- //获取任务
- $w[] = ['root_id','=',request()->employee->root_id];
- $w[] = ['con_id','=',$id];
- $w[] = ['type','=',$type];
- // $w[] = ['del','=',0];
- $list = DailyTasksModel::where($w)->order('id desc')->select()->toArray();
- foreach ($list as $k => $v) {
- $list[$k]['count'] = $v['org_ids'] ? count(array_filter(explode(',',$v['org_ids']))) : 0;
- $list[$k]['edit'] = $v['end_date'].' 23:59:59'>date('Y-m-d H:i:s') ? 0 : 1;
- }
- $count = count($list);
- View::assign('data',$list);
- View::assign('count',$count);
- return View::fetch();
- }
- //指派
- public function assign_org_edit(){
- $id = input('id',0);
- $cate = input('cate','');
- $type = 'org';//org组织
- $select_id = input('select_id',0);
- $org = Org::where('id',$select_id)->value('path');
- $org_ids = Org::where([['path','like',$org.'%']])->column('id');
- $w[] = ['root_id','=',request()->employee->root_id];
- $w[] = ['type','=',$cate];
- $w[] = ['con_id','=',$id];
- $w[] = ['addtime','=',date('Y-m-d H:i:s',input('time'))];
- $row = DailyTasksModel::where($w)->findOrEmpty();
- $ids = $row->isEmpty() ? [] : explode(',',$row->org_ids);
- $save['root_id'] = request()->employee->root_id;
- $save['con_id'] = $id;
- $save['type'] = $cate;
- $save['addtime'] = date('Y-m-d H:i:s',input('time'));
- if ($row->isEmpty()) {
- $save['end_date'] = date('Y-m-d',strtotime('+1 day')).' 23:59:59';
- }elseif(!$row->end_date){
- $save['end_date'] = date('Y-m-d',strtotime('+1 day')).' 23:59:59';
- }
- // $save['org_ids'] = implode(',',$org_ids);
- $res = input('res',0);
- $arr = $ids ? array_diff($ids,$org_ids) : [];
- $save['org_ids'] = $res ? array_merge($org_ids,$arr) : $arr;
- $save['org_ids'] = implode(',',$save['org_ids']);
- $save['del'] = 1;
- if ($row->isEmpty()) {
- $id = DailyTasksModel::insertGetId($save);
- }else{
- DailyTasksModel::where($w)->update($save);
- $id = $row->id;
- }
- return json(['code' => 0, 'data' => $org_ids, 'checkOrg' =>'']);
- }
- //获取指派部门
- public function get_orgs(){
- $id = input('id',0);
- $cate = input('cate','');
- $page = input('page',1);
- $limit = input('limit',10);
- $root_id = request()->employee->root_id;
- $w[] = ['root_id','=',request()->employee->root_id];
- $w[] = ['type','=',$cate];
- $w[] = ['con_id','=',$id];
- $w[] = ['addtime','=',date('Y-m-d H:i:s',input('time'))];
- $row = DailyTasksModel::where($w)->findOrEmpty();
- if ($row->isEmpty() || !$row->org_ids) {
- return json(['code' => 0, 'data' =>[], 'checkOrg' =>'']);
- }
- $keyword = input('keyword','');
- if ($keyword) {
- $w1[] = ['name','like','%'.trim($keyword).'%'];
- }
- $w1[] = ['id','in',explode(',',$row->org_ids)];
- $list = Org::withCount(['employee'=>function($query) use ($root_id){
- $query->where([['root_id','=',$root_id],['state','=','在职'],['uid','>',0]]);
- }])->where($w1)->field(['name','id'])->page($page,$limit)->select()->toArray();
- $count = Org::where($w1)->count();
- return json(['code' => 0, 'data' => $list, 'count' =>$count]);
- }
- /*
- * 取消指派
- */
- public function del_assign()
- {
- $id = input('id',0);
- $cate = input('cate','');
- $w[] = ['root_id','=',request()->employee->root_id];
- $w[] = ['type','=',$cate];
- $w[] = ['con_id','=',$id];
- $w[] = ['addtime','=',date('Y-m-d H:i:s',input('time'))];
- $row = DailyTasksModel::where($w)->findOrEmpty();
- $eid = input('eid',0);
- if ($row->isEmpty()) {
- return json(['code' => 1, 'data' => '取消失败', 'msg' => '取消失败']);
- }
- if ($id && $eid) {
- if ($eid == -1) {
- DailyTasksModel::where($w)->update(['org_ids'=>'']);
- }else{
- $arr = $row->org_ids;
- $arr = array_filter(array_diff(explode(',',$arr),[$eid]));
- DailyTasksModel::where($w)->update(['org_ids'=>implode(',',$arr)]);
- }
- }
- return json(['code' => 0, 'data' => '取消成功', 'msg' => '取消成功']);
- }
- /*
- * 指派组织
- */
- public function get_person()
- {
- $root_id = request()->employee->root_id;
- $keyword = input('keyword','');
- $where = [
- ['path', 'like', $root_id . '-%'],
- ['status', '=', 1]
- ];
- if ($keyword) {
- // $where[] = ['name','like','%'.trim($keyword).'%'];
- }
- $count = Employee::where([['root_id','=',$root_id],['state','like','%在职%'],['uid','>',0]])->group('org_id')->column('count(*) count','org_id');
- $allnodes = Org::where($where)->field('id,pid,name title,level,org_type,info,path')->order('level asc, id asc')->select()->toArray();
- foreach ($allnodes as $k => $v) {
- $allnodes[$k]['count'] = isset($count[$v['id']]) ? $count[$v['id']] : 0;//本部门人数
- $allnodes[$k]['all_count'] = 0;//包含子部门总数
- $allnodes[$k]['org_class'] = 'org_'.$v['id'];
- $allnodes[$k]['per_class'] = 'per_org_'.$v['id'];
- $allnodes[$k]['type'] = 'org';
- foreach ($allnodes as $k2 => $v2) {
- if (strpos($v2['path'],$v['path']) !== false) {
- $allnodes[$k]['all_count'] = isset($count[$v2['id']]) ? $count[$v2['id']]+$allnodes[$k]['all_count'] : $allnodes[$k]['all_count'];
- }
- }
- $allnodes[$k]['title'] = $allnodes[$k]['title'].' ('.$allnodes[$k]['all_count'].')';
- }
- $tree = $this->tree($allnodes,0);
- // $info = TrainClass::where(['root_id'=>request()->employee->root_id , 'id'=>$id])->value('train_employee');
- return json(['code' => 0, 'data' => $tree, 'checkOrg' =>'']);
- }
- public function tree($data,$pid = 0)
- {
- $new_arr = [];
- foreach($data as $k => $v){
- if($v['pid'] == $pid) {
- $children = $this->tree($data, $v['id']);
- $v['children'] = $children;
- if (empty($v['children'])) $v['disabled']=true;
- $new_arr[] =$v;
- }
- }
- return $new_arr;
- }
- /*
- * 保存最后完成日期
- */
- public function save_date()
- {
- $id = input('id',0);
- $cate = input('cate','');
- $date = input('date');
- $w[] = ['root_id','=',request()->employee->root_id];
- $w[] = ['type','=',$cate];
- $w[] = ['con_id','=',$id];
- $w[] = ['addtime','=',date('Y-m-d H:i:s',input('time'))];
- $row = DailyTasksModel::where($w)->findOrEmpty();
- if ($row->isEmpty()) {
- return json(['code' =>1, 'data' =>'请选择指派部门','msg' =>'请选择指派部门']);
- }
- if ($date.' 23:59:59' < $row->addtime) {
- return json(['code' =>1, 'data' =>'最迟完成时间要大于当前时间','msg' =>'最迟完成时间要大于当前时间']);
- }
- $row->end_date = $date.' 23:59:59';
- $row->del = 0;
- $row->save();
- return json(['code' =>0, 'data' =>'设置成功','msg' =>'设置成功']);
- }
- /*
- * 取消任务
- */
- public function del_task()
- {
- $id = input('id',0);
- $cate = input('cate','');
- $eid = input('eid');
- $w[] = ['root_id','=',request()->employee->root_id];
- $w[] = ['id','=',$eid];
- $w[] = ['del','=',0];
- $row = DailyTasksModel::where($w)->findOrEmpty();
- if ($row->isEmpty()) {
- return json(['code' =>1, 'data' =>'任务不存在','msg' =>'任务不存在']);
- }
- $row->del = 1;
- $row->save();
- return json(['code' =>0, 'data' =>'取消成功','msg' =>'取消成功']);
- }
- }
|