AdminTrainController.php 6.2 KB
<?php
// +----------------------------------------------------------------------
// | ThinkCMF [ WE CAN DO IT MORE SIMPLE ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013-2019 http://www.thinkcmf.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: Powerless < wzxaini9@gmail.com>
// +----------------------------------------------------------------------

namespace app\portal\controller;

use api\home\controller\CommonController;
use cmf\controller\AdminBaseController;
use app\portal\model\InspectModel;
use think\Db;
use think\db\Query;

//甲方发起培训列表
class AdminTrainController extends AdminBaseController
{

    //培训列表
    public function index(){
        $param = $this->request->param();
        $res = Db::name('train')
            ->alias('t')
            ->join('user u','t.uid = u.id','LEFT')
            ->join('project p','t.project_id = p.id','LEFT')
            ->where(function (Query $query) {
                $param = $this->request->param();
                //查询登录乙方账号的所有项目
                $common = new AdminCommonController();
                $p_ids = $common->getProjectByCompanyB();
                if(!empty($p_ids)){
                    $query->whereIn('t.project_id',$p_ids);
                }
                if (!empty($param['name'])) {
                    $keyword = $param['name'];
                    $query->where('p.name', 'like', "%$keyword%");
                }
                $startTime = empty($param['start_time']) ? 0 : strtotime($param['start_time']);
                $endTime   = empty($param['end_time']) ? 0 : strtotime($param['end_time'])+86400;
                if (!empty($startTime)) {
                    $query->where('t.train_time', '>=', $startTime);
                }
                if (!empty($endTime)) {
                    $query->where('t.train_time', '<=', $endTime);
                }

            })
            ->field('t.id,p.name project_name,t.train_time,t.status,u.user_login,t.number,t.address,t.title')
            ->order('t.id desc')
            ->paginate(10,false,['query'=>request()->param()]);
        $data = $res->toArray();
        $data = $data['data'];
        $page = $res->render();

        $common = new AdminCommonController();
        $status = $common->getTrainStatus();

        //渲染
        $this->assign('start_time', isset($param['start_time']) ? $param['start_time'] : '');
        $this->assign('end_time', isset($param['end_time']) ? $param['end_time'] : '');
        $this->assign('list',$data);
        $this->assign('page',$page);
        $this->assign('state',$status);
        return $this->fetch();
    }

    //编辑页面
    public function edit(){
        $id = $this->request->param('id');
        $res = Db::name('train')
            ->alias('t')
            ->join('user u','t.uid = u.id','LEFT')
            ->join('project p','t.project_id = p.id','LEFT')
            ->where(['t.id'=>$id])
            ->field('t.id,p.name project_name,t.train_time,u.user_login,t.number,t.h_uid,t.images,t.confirm_images,t.address,t.remark,t.confirm_uid,t.finish_time')
            ->find();

        $common = new AdminCommonController();
        //乙方确认姓名
        $user = $common->getUserById(['id'=>$res['h_uid']]);
        if($user){
            $res['h_user_login'] = $user['user_login'];
        }else{
            $res['h_user_login'] = '';
        }

        //甲乙方共同完善图片
        if($res['images']){
            $res['images'] = $common->absolutionUrl($res['images']);
        }

        //乙方验收人
        $user = $common->getUserById(['id'=>$res['confirm_uid']]);
        if($user){
            $res['b_user_login'] = $user['user_login'];
        }else{
            $res['b_user_login'] = '';
        }
        //乙方确认完成图片
        if($res['confirm_images']){
            $res['confirm_images'] = $common->absolutionUrl($res['confirm_images']);
        }

        //甲方验收人,图片
        $a_images = $common->getUnFinishUid(['type'=>0,'c_id'=>$res['id'],'is_image'=>0]);
        foreach($a_images as &$value){
            $user = $common->getUserById(['id'=>$value['uid']]);
            if($user){
                $value['user_login'] = $user['user_login'];
            }else{
                $value['user_login'] = '';
            }
            //图片
            $value['images'] = $common->absolutionUrl($value['confirm_images']);
        }
        $res['a_images'] = $a_images;
        $res['finish_time'] = empty($res['finish_time'])?'':date('Y-m-d',$res['finish_time']);
        $this->assign('post',$res);
        return $this->fetch();
    }

    //导出数据
    public function exportData(){
        $param = $this->request->param();

        $adminCommon = new AdminCommonController();
        $adminExcel = new AdminExcelDataController();

        $res_ins = $adminCommon->exportCheckList('train',$param,'t.*,p.name project_name');

        $arr_url = [];
        $arr_time = [];
        foreach($res_ins as $key=>$value){
            $arr = $adminCommon->trainExportData($value,'train');
            $arr['status'] = $adminCommon->getTrainStatus()[$value['status']];
            //获取文件路径
            $url = $adminExcel->trainExcelData($arr,'train');
            //按日导出
            $arr_url[$key] = $url;
            $arr_time[$key] = $arr['time'].'报表.xls';
        }

        $xlsName = '培训报表';
        //解决zip中文文件名
        $xlsName = $adminCommon->iconv_to_utf8($xlsName);
        $filename = ROOT_PATH . 'public/upload/export/' . $xlsName . '.zip';
        $adminCommon->zip($arr_url,$filename,$arr_time);
    }

    //检查是否有数据
    public function checkData(){
        $param = $this->request->param();
        $adminCommon = new AdminCommonController();
        $res_ins = $adminCommon->exportCheckList('train',$param,'t.id');
        if($res_ins){
            $adminCommon->apiResponse(1);
        }else{
            $adminCommon->apiResponse(0,'暂无数据');
        }
    }
}