<?php
/**
 * Created by PhpStorm.
 * User: liuyingjie
 * Date: 2017/8/2
 * Time: 13:38
 */

namespace frontend\controllers;

use common\components\Upload;
use common\libs\MyLib;
use common\models\CarFinanceT;
use common\models\CarLogT;
use common\models\CarT;
use common\models\DirectionT;
use common\models\FixCarImg;
use common\models\FixCarItemT;
use common\models\FixCarReport;
use common\models\FixCarTuoche;
use common\models\FixItemT;
use common\models\FixCarCategory;
use common\models\InsurerCompanyT;
use common\models\Message;
use common\models\MetalPlatePart;
use common\models\MiddleDamageLevel;
use common\models\MiddleFixCarT;
use common\models\MiddleScaleHour;
use common\models\RangeT;
use common\models\RoleT;
use common\models\StoreRoom;
use common\models\UserT;
use Yii;
use common\models\FixCarT;
use yii\data\Pagination;
use yii\db\Exception;
use yii\helpers\ArrayHelper;
use yii\helpers\Json;
use yii\web\Response;

class BusinessOrderController extends FixCarBaseController
{
    public function behaviors()
    {
        return [
            [
                'class' => 'yii\filters\ContentNegotiator',
                'only' => ['save', 'delete','order-save','driver-save','front-desk-check-save',
                    'front-setting-loss-exploration-save','setting-loss-exploration-add','fix-item-remove','remove-report',
                    'front-desk-save','front-desk-info-item-save','ajax-metal-plate-list','metal-plate-save','ajax-bottom-work-list','bottom-work-save',
                    'ajax-paint-work-list','paint-work-save','ajax-metal-plate-install-list','metal-plate-install-save','ajax-electromechanical-list','electromechanical-save',
                    'ajax-car-wash-list','car-wash-save','ajax-last-check-list','last-check-save','fix-user-sibling','fix-car-save','ajax-item-list','ajax-item-list-bak',
                    'fix-item-finish','ajax-fix-user','ajax-job-foreman','get-damage-level','get-metal-plate','get-self-free','get-price-by-shop','rm-img','web-uploader','look-image','refresh-item-list'],
                'formats' => [
                      'application/json' => Response::FORMAT_JSON,
                  ]
            ],
//            [
//                'class'=>'yii\filters\HttpCache',
//                'only' => ['setting-loss-exploration-list','index','order-info','check-list','check-info','driver-list','driver-info','front-desk-check-list',
//                    'front-desk-check-info','setting-loss-exploration-list','setting-loss-exploration-info',
//                    'front-desk-list','front-desk-info','metal-plate-list','metal-plate-info','bottom-work-list','bottom-work-info',
//                    'paint-work-list','paint-work-info','metal-plate-install-list','metal-plate-install-info',
//                    'electromechanical-list','electromechanical-info','car-wash-list','car-wash-info','last-check-list','last-check-info'],
//                'cacheControlHeader'=> null,
//                'etagSeed' => function () {
//                     $q = new \yii\db\Query();
//                     $model = $q->from('fix_car_t');
//                     $model1 = $q->from('fix_car_item_t');
//                     $model2 = $q->from('fix_car_img');
//                     return $model->max('updated_at').$model->max('id').$model->count().
//                         $model1->max('updated_at').$model1->max('id').$model1->count().
//                         $model2->max('updated_at').$model2->max('id').$model2->count();
//                },
//            ],
//            'pageCache' => [
//                'class' => 'yii\filters\PageCache',
//                'only' => ['setting-loss-exploration-list','index','order-info','check-list','check-info','driver-list','driver-info','front-desk-check-list',
//                    'front-desk-check-info','setting-loss-exploration-list','setting-loss-exploration-info',
//                    'front-desk-list','front-desk-info','metal-plate-list','metal-plate-info','bottom-work-list','bottom-work-info',
//                    'paint-work-list','paint-work-info','metal-plate-install-list','metal-plate-install-info',
//                    'electromechanical-list','electromechanical-info','car-wash-list','car-wash-info','last-check-list','last-check-info'],
//                'duration' => 0,
//                'varByParam'=>Yii::$app->request->queryString,
//                'dependency' => [
//                  'class' => 'yii\caching\DbDependency',
//                  'sql' => "SELECT * FROM (SELECT MAX('updated_at'),MAX('id'),COUNT(*) FROM fix_car_t) AS t1 UNION ALL".
//                      " SELECT * FROM (SELECT MAX('updated_at'),MAX('id'),COUNT(*) FROM fix_car_item_t) AS t2 UNION ALL".
//                      " SELECT * FROM (SELECT MAX('updated_at'),MAX('id'),COUNT(*) FROM fix_car_img) AS t3",
//                ],
//                'variations' => [
//                  Yii::$app->language,
//                ]
//          ],
        ];
    }

    private function getList($request, &$session, $type = '')
    {
        $page = $request->get('page', 1);

        $query = FixCarT::find()->select('id,car_no,id_man,link_man,link_phone,submit_date,user_id,status,brand_id,series_id,address,accident_type,responsibility,updated_at');
        $query = $query->where('status <=' . self::MAX_STATUS);

        $render = [];
        $this->getQuery($request, $query, $render);

        $sql = $query->createCommand()->rawSql;
        $total = $query->count();
        $session->remove('driver_list');
        $session->set('driver_list', $sql);

        $pagination = new Pagination(['totalCount' => $total, 'pageSize' => 20]);
        $pagination->setPage($page - 1);

        $query = $query->offset($pagination->offset)->orderBy('created_at DESC')->limit($pagination->limit);
        $items = $query->all();

        $page_info = MyLib::getPageInfo($pagination);

        $render['items'] = $items;
        $render['page_info'] = $page_info;
        $render['page'] = $page;
        if ('' !== $type) $render['type_name'] = $type;
        return $render;
    }
    private function getList1($request, &$session, $type = '')
    {
        $page = $request->get('page', 1);

        $query = MiddleFixCarT::find();
        $is_join = false; //控制是否关联查询
        switch($type){
            case self::METAL_PLATE://钣金
                $is_join = true;
                $query = $query->joinWith('items','LEFT')->where('middle_fix_car_t.type=1 AND fix_car_item_t.metal_plate_install=0 AND fix_car_item_t.fix_group=7 AND middle_fix_car_t.status=6 AND fix_car_item_t.fix_user='.$this->my->id.' AND fix_car_item_t.lock_id='.$this->my->id);
            break;
            case self::METAL_PLATE_INSTALL://钣金安装
                $is_join = true;
                $query = $query->joinWith('items','LEFT')->where('middle_fix_car_t.type=1 AND fix_car_item_t.fix_status=1 AND fix_car_item_t.fix_group=7 AND middle_fix_car_t.status=9 AND fix_car_item_t.fix_user='.$this->my->id.' AND fix_car_item_t.lock_id='.$this->my->id);
            break;
            case self::BOTTOM_WORK://底子工
                $is_join = true;
                $query = $query->joinWith('items','LEFT')->where('middle_fix_car_t.type=1 AND middle_fix_car_t.status=7 AND fix_car_item_t.fix_user='.$this->my->id.' AND fix_car_item_t.lock_id='.$this->my->id.' AND fix_car_item_t.fix_group=13');
            break;
            case self::PAINT_WORK://喷漆工
                $is_join = true;
                $query = $query->joinWith('items','LEFT')->where('middle_fix_car_t.type=1 AND middle_fix_car_t.status=8 AND fix_car_item_t.fix_user='.$this->my->id.' AND fix_car_item_t.lock_id='.$this->my->id.' AND fix_car_item_t.fix_group=8');
            break;
            case self::CAR_WASH://美容装饰
                $is_join = true;
                $query = $query->joinWith('items','LEFT')->joinWith('fix')->where('middle_fix_car_t.type=1 AND middle_fix_car_t.status=13 AND fix_car_item_t.fix_user='.$this->my->id.' AND fix_car_item_t.lock_id='.$this->my->id.' AND fix_car_item_t.fix_group=12 AND fix_car_t.status_1=1 AND fix_car_t.status_2=1');
            break;
            case self::ELECTROMECHANICAL://机电
                $is_join = true;
                $query = $query->joinWith('items','LEFT')->andWhere('middle_fix_car_t.type=2 AND middle_fix_car_t.status=11 AND fix_car_item_t.fix_user='.$this->my->id.' AND fix_car_item_t.lock_id='.$this->my->id.' AND fix_car_item_t.fix_group BETWEEN 10 AND 11');
                break;
            case self::LAST_CHECK://总检
                $is_join = false;
                $query = $query->where('status=14');
            break;
        }
        $render = [];
        $is_join ? $this->getQuery1($request, $query, $render) : $this->getQuery($request, $query, $render);

        $sql = $query->createCommand()->rawSql;
        $total = $query->count();
        $session->remove('metal_plate_list');
        $session->set('metal_plate_list', $sql);

        $pagination = new Pagination(['totalCount' => $total, 'pageSize' => 20]);
        $pagination->setPage($page - 1);

        $query = $query->offset($pagination->offset)->limit($pagination->limit);
        $items = $query->all();

        $page_info = MyLib::getPageInfo($pagination);

        $render['items'] = $items;
        $render['page_info'] = $page_info;
        $render['page'] = $page;
        if ('' !== $type) $render['type_name'] = $type;
        return $render;
    }
    /**
     *------------------------------------------------------------
     *  查询条件
     * @param object $request ; 引用 $query,$render
     * @return void
     * @author liuyingjie
     *------------------------------------------------------------
     */
    private function getQuery($request, &$query, &$render)
    {
        $op = $request->get('op');
        $car_no = $request->get('car_no', '');
        $status = $request->get('status');
        $id_man = $request->get('id_man', '');
        $id_phone = $request->get('id_phone', '');
        $link_man = $request->get('link_man', '');
        $link_phone = $request->get('link_phone', '');
        $sort_key = $request->get('sort_key', '');
        $sort_value = $request->get('sort_value', '');
        $start_time = $request->get('start_time') ? $request->get('start_time') . ' 00:00:00' : '';
        $end_time = $request->get('end_time') ? $request->get('end_time') . ' 24:00:00' : '';

        if ('0' === $op) $query = $query->andWhere('id=-1');
        if ('' !== $car_no) $query = $query->andWhere(['like', 'car_no', $car_no]);
        if ($status >= 0) $query = $query->andWhere('status = \'' . $status.'\'');
        if ('' !== $id_man) $query = $query->andWhere(['like', 'id_man', $id_man]);
        if ('' !== $id_phone) $query = $query->andWhere(['like', 'id_man_phone', $id_phone]);
        if ('' !== $link_man) $query = $query->andWhere(['like', 'link_man', $link_man]);
        if ('' !== $link_phone) $query = $query->andWhere(['like', 'link_phone', $link_phone]);
        if ('' !== $start_time && '' !== $end_time) $query = $query->andWhere('created_at >= \'' . $start_time . '\' AND  created_at <=\'' . $end_time . '\'');
        if ('' !== $start_time && '' === $end_time) $query = $query->andWhere('created_at >= \'' . $start_time . '\'');
        if ('' !== $end_time && '' === $start_time) $query = $query->andWhere('created_at <= \'' . $end_time . '\'');
        if ('' !== $sort_key) $query = $query->orderBy($sort_key . ' ' . $sort_value . ' , id ASC');

        $render['car_no'] = $car_no;
        $render['status'] = $status;
        $render['id_man'] = $id_man;
        $render['id_phone'] = $id_phone;
        $render['link_man'] = $link_man;
        $render['link_phone'] = $link_phone;
        $render['sort_key'] = $sort_key;
        $render['sort_value'] = $sort_value;
        $render['start_time'] = substr($start_time, 0, 10);
        $render['end_time'] = substr($end_time, 0, 10);
    }
    private function getQuery1($request, &$query, &$render)
    {
        $op = $request->get('op');
        $car_no = $request->get('car_no', '');
        $status = $request->get('status', '');
        $id_man = $request->get('id_man', '');
        $id_phone = $request->get('id_phone', '');
        $link_man = $request->get('link_man', '');
        $link_phone = $request->get('link_phone', '');
        $sort_key = $request->get('sort_key', '');
        $sort_value = $request->get('sort_value', '');
        $start_time = $request->get('start_time') ? $request->get('start_time') . ' 00:00:00' : '';
        $end_time = $request->get('end_time') ? $request->get('end_time') . ' 24:00:00' : '';

        if ('0' === $op) $query = $query->joinWith('fix')->andWhere('fix_car_t.id=-1');
        if ('' !== $car_no) $query = $query->joinWith('fix')->andWhere(['like', 'fix_car_t.car_no', $car_no]);
        if ('' !== $status) $query = $query->joinWith('fix')->andWhere('fix_car_t.status = ' . $status);
        if ('' !== $id_man) $query = $query->joinWith('fix')->andWhere(['like', 'fix_car_t.id_man', $id_man]);
        if ('' !== $id_phone) $query = $query->joinWith('fix')->andWhere(['like', 'fix_car_t.id_man_phone', $id_phone]);
        if ('' !== $link_man) $query = $query->joinWith('fix')->andWhere(['like', 'fix_car_t.link_man', $link_man]);
        if ('' !== $link_phone) $query = $query->joinWith('fix')->andWhere(['like', 'fix_car_t.link_phone', $link_phone]);
        if ('' !== $start_time && '' !== $end_time) $query = $query->joinWith('fix')->andWhere('fix_car_t.created_at >= \'' . $start_time . '\' AND  fix_car_t.created_at <=\'' . $end_time . '\'');
        if ('' !== $start_time && '' === $end_time) $query = $query->joinWith('fix')->andWhere('fix_car_t.created_at >= \'' . $start_time . '\'');
        if ('' !== $end_time && '' === $start_time) $query = $query->joinWith('fix')->andWhere('fix_car_t.created_at <= \'' . $end_time . '\'');
        if ('' !== $sort_key) $query = $query->joinWith('fix')->orderBy('fix_car_t.'.$sort_key . ' ' . $sort_value . ' , fix_car_t.id ASC');

        $render['car_no'] = $car_no;
        $render['status'] = $status;
        $render['id_man'] = $id_man;
        $render['id_phone'] = $id_phone;
        $render['link_man'] = $link_man;
        $render['link_phone'] = $link_phone;
        $render['sort_key'] = $sort_key;
        $render['sort_value'] = $sort_value;
        $render['start_time'] = substr($start_time, 0, 10);
        $render['end_time'] = substr($end_time, 0, 10);
    }

    /**
     *------------------------------------------------------------
     *  业务提单
     * @param fix_car_t status = 0
     * @return view
     * @author liuyingjie
     *------------------------------------------------------------
     */
    public function actionIndex()
    {
        $session = Yii::$app->session;
        $request = Yii::$app->request;
        return $this->render('index', $this->getList($request, $session));
    }

    /**
     *------------------------------------------------------------
     *  搜索页
     * @param
     * @return view
     * @author liuyingjie
     *------------------------------------------------------------
     */
    public function actionSearch()
    {

        return $this->render('search');
    }

    /**
     *------------------------------------------------------------
     * 判断是否登记
     * @param varchar car_no engine_no car_frame_no car_man car_phone
     * @return view
     * @author liuyingjie
     *------------------------------------------------------------
     */
    public function actionSearchResult()
    {
        $request = Yii::$app->request;
        $car_no = $request->get('car_no');
        $engine_no = $request->get('engine_no');
        $car_frame_no = $request->get('car_frame_no');
        $car_man = $request->get('car_man');
        $car_phone = $request->get('car_phone');

        if($fix_car = FixCarT::find()->where('car_no=\''.$car_no.'\' AND out_factory_date IS NULL')->one()){
            return '【车牌号:'.$fix_car->car_no.'；未出厂】<br>【提单者:'.$fix_car->user->getShowName().'】<br>【提单日期:'.$fix_car->submit_date.'】<br>【维修进度:'.$fix_car->getStatus().'】<br><a href="javascript:void(0)" onclick="history.go(-1)">返回</a>';
        }
        $query = CarT::find();
        if ($car_no !== '') $query = $query->andWhere('car_no like "' . $car_no . '"');
        if ($engine_no !== '') $query = $query->andWhere('engine_no like "' . $engine_no . '"');
        if ($car_frame_no !== '') $query = $query->andWhere('car_frame_no like "' . $car_frame_no . '"');
        if ($car_man !== '') $query = $query->andWhere('car_man like "' . $car_man . '"');
        if ($car_phone !== '') $query = $query->andWhere('phone like "' . $car_phone . '"');

        $items = $query->all();

        return $this->render('search-result', [
            'items' => $items
        ]);
    }

    /**
     *------------------------------------------------------------
     *  删除
     * @param int id
     * @return json
     * @author liuyingjie
     *------------------------------------------------------------
     */
    public function actionDelete()
    {
        $request = Yii::$app->request;

        $result = [];
        $result['success'] = true;
        $result['msg'] = '删除失败！';

        if (!$request->isAjax) return $result;

        $id = $request->post('id', 0);

        $tran = Yii::$app->db->beginTransaction();
        try {
            $fix_car = FixCarT::findOne($id);
            if (!$fix_car->delete()) throw new Exception('');

            CarLogT::deleteAll('car_id = :car_id AND type = :type', [':car_id' => $fix_car->car_id, ':type' => 2]);

            $result['success'] = true;
            $result['msg'] = '删除成功!';

            $tran->commit();
        } catch (Exception $e) {
            $tran->rollBack();
        }
        return $result;
    }

    public function actionOrderInfo()
    {
        $request = Yii::$app->request;
        $id = $request->get('id', 0);
        $car_id = $request->get('car_id', 0);
        $status = $request->get('status', 0);
        $type = $request->get('type', 0);

        $info = $id > 0 ? FixCarT::findOne(['id' => $id, 'status' => $status]) : new FixCarT();
        //总库(car_t) 移至 维修(car_fix_t)
        if ($car_id > 0 && $id < 1) {
            $car_info = CarT::find()
                ->where(['id' => $car_id])
                ->orderBy('register_date DESC')
                ->one();
            $info->car_id = $car_info->id;
            $info->car_no = $car_info->car_no;
            $info->engine_no = $car_info->engine_no;
            $info->car_frame_no = $car_info->car_frame_no;
            $info->id_man = $car_info->id_man;
            $info->id_man_phone = $car_info->car_man_phone;
            $info->link_man = $car_info->car_man;
            $info->link_man_phone = $car_info->car_man_phone;
            $info->company = $car_info->company;
            $info->brand_id = $car_info->brand_id;
            $info->series_id = $car_info->series_id;
            $info->displacement_id = $car_info->displacement_id;
            $info->car_year = $car_info->car_year;
            $info->status = $status;
        }

        return $this->render('order-info', [
            'info' => $info,
            'direction_items' => $this->getDirection(),
            'range_items' => $this->getRange(),
            'log_items' => $this->getCarLog(intval($info->car_id)),
            'driver_items' => $this->getDrivers(),
            'brand_items' => $this->getBrands(),
            'series_items' => $this->getSeries(intval($info->brand_id)),
            'displacement_items' => $this->getDisplacement(intval($info->series_id)),
            'type' => $type,
        ]);
    }
    public function actionOrderSave(){
        $request = Yii::$app->request;
        $id = $request->post('id', 0);
        $car_id = $request->post('car_id');
        $series_id = $request->post('series_id');
        $displacement_id = $request->post('displacement_id');
        $sys_remark = $request->post('sys_remark', '');
        if (!$request->isAjax) return Message::getMessage();

        $tran = FixCarT::getDb()->beginTransaction();
        try {
            //更新或新增
            $row = $id > 0 ? FixCarT::findOne($id) : new FixCarT();
            $old_status = $row->isNewRecord ? 0 : $row->status;
            //场景选择
            $row->scenario = $row->getModelScenario();
            //批量赋值
            $row->attributes = $request->post();
            $row->series_id = $series_id ? $series_id :null;
            $row->displacement_id = $displacement_id ? $displacement_id :null;
            $row->remark = $sys_remark;
            if (!$row->validate()) {
                $errors = array_values($row->errors);
                return Message::getMessage(false,$errors[0]);
            }
            //新增
            if ($row->isNewRecord && $car_id > 0) {
                $row->submit_date = date('Y-m-d H:i:s');
                $row->user_id = $this->my->id;
                $row->car_id = $car_id;
            }
            if (!$row->save()) throw new Exception('');

            if ($old_status >= 0 && $row->status != $old_status) {
                $log_info = new CarLogT();
                $log_info->car_id = $car_id;
                $log_info->op_time = time();
                $log_info->op_man = $this->my->getShowName();
                $log_info->group_name = $this->my->group ? $this->my->group->getPath() : '';
                $log_info->type = 2;
                $log_info->remark = $row->getStatusMark($row->status);
                $log_info->info = $sys_remark;
                if (!$log_info->save()) throw new Exception('');
            }

            $tran->commit();

            $fix_id = $row->isNewRecord ? Yii::$app->db->getLastInsertID() : $row->id;
            return Message::getMessage(true,'保存成功!',$fix_id);
        } catch (Exception $e) {
            $tran->rollBack();
            return Message::getMessage(false,$e->getMessage());
        }
    }

    /*******************************************************提单审核*****************************************************/

    /**
     *------------------------------------------------------------
     *  提单审核
     * @param fix_car_t status = 1 提单审核
     * @return view
     * @author liuyingjie
     *------------------------------------------------------------
     */
    public function actionCheckList()
    {
        $session = Yii::$app->session;
        $request = Yii::$app->request;

        return $this->render('check-list', $this->getList($request, $session));
    }

    /**
     *------------------------------------------------------------
     *  提单审核详情
     * @param
     * @return view
     * @author liuyingjie
     *------------------------------------------------------------
     */
    public function actionCheckInfo()
    {
        $request = Yii::$app->request;
        $id = $request->get('id', 0);
        $type = $request->get('type', 0);
        $gift_enable = $request->get('gift_enable', 0);

        $info = FixCarT::findOne(['id' => $id]); //编辑
//        //礼品
//        $gift_items = CarGiftT::find()
//            ->where('car_id='.$car_info->id)
//            ->orderBy('strategy_id DESC')
//            ->all();
        return $this->render('check-info', [
            'info' => $info,
//            'gift_items' => $gift_items,
            'direction_items' => $this->getDirection(),
            'range_items' => $this->getRange(),
            'log_items' => $this->getCarLog(intval($info->car_id)),
            'driver_items' =>  $this->getDrivers(),
            'brand_items' =>  $this->getBrands(),
            'series_items' => $this->getSeries(intval($info->brand_id)),
            'displacement_items' => $this->getDisplacement(intval($info->series_id)),
            'type' => $type,
            'gift_enable' => $gift_enable
        ]);
    }
    public function actionCheckSave(){
        $request = Yii::$app->request;

        if (!$request->isAjax) return Message::getMessage();
        $tran = FixCarT::getDb()->beginTransaction();
        try {
            $id = $request->post('id', 0);
            $car_id = $request->post('car_id');
            $driver_id = $request->post('driver_id');
            $sys_remark = $request->post('sys_remark', '');
            if($id < 1) return Message::getMessage();

            //更新或新增
            $row = FixCarT::findOne($id);
            $old_status = $row->isNewRecord ? 0 : $row->status;
            //场景选择
            $row->scenario = $row->getModelScenario();
            //批量赋值
            $row->attributes = $request->post();
            $row->remark = $sys_remark;
            $row->driver_id = $driver_id;
            if (!$row->validate()) {
                $errors = array_values($row->errors);
                return Message::getMessage(false,$errors[0]);
            }

            if ($old_status >= 0 && $row->status != $old_status) {
                $log_info = new CarLogT();
                $log_info->car_id = $car_id;
                $log_info->op_time = time();
                $log_info->op_man = $this->my->getShowName();
                $log_info->group_name = $this->my->group ? $this->my->group->getPath() : '';
                $log_info->type = 2;

                //提单审核 提交
                //上门接车 && (自费维修 || 保险理赔)，都进入司机接车
                if ((2 == $row->status) && ('上门接车' == $row->receive_type)) {
                    $row->status = 2;
                } //客户自送 && 自费维修,则直接进入前台审核
                elseif (2 == $row->status && ('客户自送' == $row->receive_type)) {
                    $row->status = 3;
                }
                $log_info->remark = $row->getStatusMark($row->status);
                $log_info->info = $sys_remark;

                if (!$log_info->save()) throw new Exception('记录日志失败!');
            }

            if (!$row->save()) throw new Exception('维修信息修改失败!');

            $tran->commit();
            return Message::getMessage(true,'保存成功!',$row->id);
        } catch (Exception $e) {
            $tran->rollBack();
            return Message::getMessage(false,$e->getMessage());
        }
        return $result;
    }
    /***************************************************** end ********************************************************/

    /***************************************************司机接车*******************************************************/
    /**
     *------------------------------------------------------------
     *  司机接车
     * @param string car_no(车牌号)
     * @param int status = 2 待接车
     * @return view
     * @author liuyingjie
     *------------------------------------------------------------
     */
    public function actionDriverList()
    {
        $session = Yii::$app->session;
        $request = Yii::$app->request;

        return $this->render('driver-list', $this->getList($request, $session));
    }

    /**
     *------------------------------------------------------------
     *  司机接车详情
     * @param
     * @return view
     * @author liuyingjie
     *------------------------------------------------------------
     */
    public function actionDriverInfo()
    {
        $request = Yii::$app->request;
        $id = $request->get('id', 0);
        $type = $request->get('type', 0);
        $gift_enable = $request->get('gift_enable', 0);

        $info = $render['info'] = FixCarT::findOne(['id' => $id]);

        return $this->render('driver-info', [
            'info' => $info,
            'direction_items' => $this->getDirection(),
            'range_items' =>  $this->getRange(),
            'log_items' => $this->getCarLog(intval($info->car_id)),
            'driver_items' => $this->getDrivers(),
            'brand_items' => $this->getBrands(),
            'series_items' => $this->getSeries(intval($info->brand_id)),
            'displacement_items' => $this->getDisplacement(intval($info->series_id)),
            'type' => $type,
            'gift_enable' => $gift_enable,
        ]);
    }

    /**
     *------------------------------------------------------------
     *  司机接车新增、保存
     * @param
     * @return json
     * @author liuyingjie
     *------------------------------------------------------------
     */
    public function actionDriverSave()
    {
        $request = Yii::$app->request;
        $small_type_id = $request->post('small_type_id');
        $name = $request->post('name');
        $count = $request->post('count', 1);
        $remark = $request->post('remark', '');
        $price = $request->post('price', 0);
        $fix_id = $request->post('fix_id');
        $pay_type = $request->post('pay_type');
        $id = $request->post('id', 0);
        $level = $request->post('level', 0);
        $insurance_price = $request->post('insurance_price', 0);

        $result = [];
        $result['success'] = false;
        $result['msg'] = '操作失败!';

        if (!$request->isAjax) return $result;

        $fix_item = ($id > 0 && 5 != $small_type_id) ? FixItemT::findOne($id) : new FixItemT();
        switch ($small_type_id) {
            case 1: //更换清单
            case 2: //维修清单
            case 3: //辅料清单
            case 4: //待定清单
            case 6: //美容装饰
                $fix_item->name = $name;
                $fix_item->count = $count;
                $fix_item->fix_remark = $remark;
                $fix_item->price = $price;
                $fix_item->small_type_id = $small_type_id;
                $fix_item->fix_id = $fix_id;
                $fix_item->pay_type = $pay_type;
                $fix_item->damage_level = $level;
                $fix_item->insurance_price = $insurance_price;
                if ($fix_item->save()) {
                    $result['success'] = true;
                    $result['msg'] = '操作成功!';
                }
                break;
            case 5: //汽车保养
                FixItemT::deleteAll('fix_id=' . $fix_id . ' AND small_type_id=5');
                foreach ($name as $k => $val) {
                    $type = strstr($val, '_');
                    $keep_in_good_id = rtrim(strstr($val, '_', true), '_');

                    if ('_0' == $type) {
                        $insert[$k]['name'] = '机油';
                        $insert[$k]['car_keep_in_good_id'] = $keep_in_good_id;

                    } elseif ('_1' == $type) {
                        $insert[$k]['name'] = '机油滤芯';
                        $insert[$k]['car_keep_in_good_id'] = $keep_in_good_id;
                    } elseif ('_2' == $type) {
                        $insert[$k]['name'] = '空气滤芯';
                        $insert[$k]['car_keep_in_good_id'] = $keep_in_good_id;
                    } elseif ('_3' == $type) {
                        $insert[$k]['name'] = '空调滤芯';
                        $insert[$k]['car_keep_in_good_id'] = $keep_in_good_id;
                    } elseif ('_4' == $type) {
                        $insert[$k]['name'] = '汽油滤芯';
                        $insert[$k]['car_keep_in_good_id'] = $keep_in_good_id;
                    }

                    $insert[$k]['price'] = $price;
                    $insert[$k]['count'] = $count;
                    $insert[$k]['fix_id'] = $fix_id;
                    $insert[$k]['small_type_id'] = $small_type_id;
                    $insert[$k]['pay_type'] = 2;
                }
                Yii::$app->db->createCommand()->batchInsert(FixItemT::tableName(), ['name', 'car_keep_in_good_id', 'price', 'count', 'fix_id', 'small_type_id', 'pay_type'], $insert)->execute();
                $result['success'] = true;
                $result['msg'] = '操作成功!';
                break;
        }
        return $result;
    }
    /************************************************* end ***********************************************************/

    /***************************************************前台审核*******************************************************/
    /**
     *------------------------------------------------------------
     * 前台审核列表页
     * @param int status = 3
     * @return view
     * @author liuyingjie
     *------------------------------------------------------------
     */
    public function actionFrontDeskCheckList()
    {
        $session = Yii::$app->session;
        $request = Yii::$app->request;

        return $this->render('front-desk-check-list', $this->getList($request, $session));
    }

    public function actionFrontDeskCheckInfo()
    {
        $request = Yii::$app->request;
        $id = $request->get('id', 0);
        $type = $request->get('type', 0);
        $gift_enable = $request->get('gift_enable', 0);

        $info = FixCarT::findOne(['id' => $id]);

        //礼品
//        $gift_items = CarGiftT::find()
//            ->where('car_id=' . $info->id)
//            ->orderBy('strategy_id DESC')
//            ->all();

        //报案号
        $reports = ($reports_res = FixCarReport::findAll(['fix_id'=>$id])) ? $reports_res : [];
        $report_nos = Json::encode($reports);

        return $this->render('front-desk-check-info', [
            'info' => $info,
//            'gift_items' => $gift_items,
            'direction_items' => $this->getDirection(),
            'range_items' =>  $this->getRange(),
            'log_items' =>$this->getCarLog(intval($info->car_id)),
            'driver_items' =>  $this->getDrivers(),
            'brand_items' => $this->getBrands(),
            'series_items' => $this->getSeries(intval($info->brand_id)),
            'displacement_items' => $this->getDisplacement(intval($info->series_id)),
            'type' => $type,
            'reports'=>$reports,
            'gift_enable' => $gift_enable,
        ]);
    }

    /**
     *------------------------------------------------------------
     *  前台审核添加保存
     * @param
     * @return view
     * @author liuyingjie
     *------------------------------------------------------------
     */
    public function actionFrontDeskCheckSave()
    {
        $request = Yii::$app->request;

        if (!$request->isAjax) return Message::getMessage();

        $tran = FixCarT::getDb()->beginTransaction();
        try {
            $id = $request->post('id', 0);
            $driver_id = $request->post('driver_id');
            $follow_car_items = $request->post('follow_car_items');
            $sys_remark = $request->post('sys_remark', '');

            if($id < 1 || empty($sys_remark)) return Message::getMessage();

            $row = FixCarT::findOne(['id' => $id]);
            $old_status = $row->status;

            //场景选择
            $row->scenario = $row->getModelScenario();

            //批量赋值
            $row->attributes = $request->post();
            $row->remark = $sys_remark;
            $row->driver_id = $driver_id ? $driver_id :null;

            //如果有随车物品，则拼接为字符串
            if (!empty($follow_car_items)) $row->follow_car_items = implode($follow_car_items, ',');

            if (!$row->validate()) {
                $errors = array_values($row->errors);
                $result['msg'] = $errors[0];
                return $result;
            }

            //判断结算方式，如果非保险理赔则跳过查勘定损，直接进入前台派工
            if(intval($row->status) === 4 && FixCarItemT::find()->where(['fix_id'=>$row->id,'pay_type'=>1])->count() < 1) $row->status = 5;

            //保险理赔 && fix_id = $row->id && 未维修 && 未进入总检 && 未确认 && 钣金安装未确认
            $fix_item = FixCarItemT::find()->where(['fix_id'=>$row->id,'fix_status'=>0,'status'=>0,'confirm_at'=>'0000-00-00 00:00:00','get_time'=>'0000-00-00 00:00:00','metal_plate_install'=>0])->select('pay_type')->asArray()->all();
            $fix_item = array_unique(array_column($fix_item,'pay_type'));
            if(empty($fix_item)){
//                return Message::getMessage(false,'清单不可为空!');
            }else{
                $row->status = in_array(1,$fix_item) ? 4 : 5;
            }

            //操作记录
            if ($old_status >= 0 && $row->status != $old_status) {
                $log_info = new CarLogT();
                $log_info->car_id = $row->car_id;
                $log_info->op_time = time();
                $log_info->op_man = $this->my->getShowName();
                $log_info->group_name = $this->my->group ? $this->my->group->getPath() : '';
                $log_info->type = 2;
                $log_info->remark = $row->getStatusMark($row->status);
                $log_info->info = $sys_remark;

                if (!$log_info->save()) throw new Exception('a');
            }

            if (!$row->save()) throw new Exception('b');

            $result['success'] = true;
            $result['msg'] = '保存成功';
            $result['fix_id'] = $row->id;

            $tran->commit();
        } catch (Exception $e) {
            var_dump($e->getMessage());
            $tran->rollBack();
        }
        return $result;
    }
    /***************************************************** end *******************************************************/

    /*****************************************************查勘定损******************************************************/
    /**
     *------------------------------------------------------------
     *  查勘定损
     * @param string car_no 车牌号
     * @param int status = 4 待查勘定损
     * @return view
     * @author liuyingjie
     *------------------------------------------------------------
     */
    public function actionSettingLossExplorationList()
    {
        $session = Yii::$app->session;
        $request = Yii::$app->request;

        return $this->render('setting-loss-exploration-list', $this->getList($request, $session));
    }

    public function actionSettingLossExplorationInfo()
    {
        $request = Yii::$app->request;
        $id = $request->get('id', 0);
        $type = $request->get('type', 0);
        $gift_enable = $request->get('gift_enable', 0);

        $info = FixCarT::findOne($id);
        //报案号
        $reports = ($reports_res = FixCarReport::findAll(['fix_id'=>$id])) ? $reports_res : [];
        $report_nos = Json::encode($reports);
        return $this->render('setting-loss-exploration-info', [
            'info' => $info,
            'direction_items' => $this->getDirection(),
            'range_items' =>  $this->getRange(),
            'log_items' => $this->getCarLog(intval($info->car_id)),
            'driver_items' => $this->getDrivers(),
            'brand_items' =>  $this->getBrands(),
            'series_items' => $this->getSeries(intval($info->brand_id)),
            'displacement_items' => $this->getDisplacement(intval($info->series_id)),
            'type' => $type,
            'gift_enable' => $gift_enable,
            'reports'=>$reports,
            'report_nos'=>$report_nos,
            'insurer_companies'=>InsurerCompanyT::find()->all(),
            'tuoche'=>FixCarTuoche::find()->all()
        ]);
    }

    /**
     *------------------------------------------------------------
     *  查勘定损 车辆信息添加
     * @param
     * @return json
     * @author liuyingjie
     *------------------------------------------------------------
     */
    public function actionSettingLossExplorationAdd()
    {
        $request = Yii::$app->request;
        $id = $request->post('id', 0);
        $follow_car_items = $request->post('follow_car_items');
        $car_id = $request->post('car_id');
        $driver_id = $request->post('driver_id');
        $sys_remark = $request->post('sys_remark', '');

        if (!$request->isAjax || $id < 1) return Message::getMessage();

        $tran = FixCarT::getDb()->beginTransaction();
        try {
            $row = FixCarT::findOne($id);
            $old_status = $row->status;
            //场景选择
            $row->scenario = $row->getModelScenario();
            //批量赋值
            $row->attributes = $request->post();
            $row->remark = $sys_remark;
            $row->driver_id = $driver_id ? $driver_id : null;

            //如果有随车物品，则拼接为字符串
            if (!empty($follow_car_items)) $row->follow_car_items = implode($follow_car_items, ',');

            if (!$row->validate()) {
                $errors = array_values($row->errors);
                return Message::getMessage(false,$errors[0]);
            }
            if (!$row->save()) throw new Exception('');

            //添加报案号
            $report_no = array_unique($request->post('report_no'));
            $report_id = $request->post('report_id');

            foreach($report_no as $k=>$v){
                $report = (isset($report_id[$k]) && $report_res = FixCarReport::findOne(['id'=>$report_id[$k]])) ? $report_res : new FixCarReport();

                $report->report_no = strtoupper($v);
                $report->baoan_man = $request->post('baoan_man')[$k];
                $report->baoan_time = $request->post('baoan_time')[$k];
                $report->chuxian_time = $request->post('chuxian_time')[$k];
                $report->baoan_address = $request->post('baoan_address')[$k];
                $report->shigu_info = $request->post('shigu_info')[$k];
                $report->lipei_company = $request->post('lipei_company')[$k];
                $report->zhuche_money =$request->post('zhuche_money')[$k];
                $report->sanzhe_money = $request->post('sanzhe_money')[$k];
                $report->wusun_money = $request->post('wusun_money')[$k];
                $report->tuoche = $request->post('tuoche')[$k];
                $report->tuoche_money = $request->post('tuoche_money')[$k];
                $report->dingsun_hour_money = $request->post('dingsun_hour_money')[$k];
                $report->dingsun_huanjian_money = $request->post('dingsun_huanjian_money')[$k];
                $report->peifu_bili = $request->post('peifu_bili')[$k];
                $report->peifu_money = $request->post('peifu_money')[$k];
                $report->kehu_money = $request->post('kehu_money')[$k];
                $report->fix_id = $row->isNewRecord ? Yii::$app->db->getLastInsertID() : $id;

                if(!$report->validate()){
                    $errors = array_values($report->errors);
                    return Message::getMessage($errors[0]);
                }

                if(!$report->save()) throw new Exception('报案号添加失败!');
            }

            //操作记录
            if ($old_status >= 0 && $row->status != $old_status) {
                $log_info = new CarLogT();
                $log_info->car_id = $car_id;
                $log_info->op_time = time();
                $log_info->op_man = $this->my->getShowName();
                $log_info->group_name = $this->my->group ? $this->my->group->getPath() : '';
                $log_info->type = 2;
                $log_info->remark = $row->getStatusMark($row->status);
                $log_info->info = $sys_remark;

                if (!$log_info->save()) throw new Exception('');
            }


            //图片上传
            $base64 = $request->post('result', '');
            $base64_arr = !empty($base64) ? explode('^#@#$,', $base64) : array();

            if (count($base64_arr) > 0) {
//                if (FixCarImg::find()->where('id=' . $id . ' AND type=' . $old_status)->count() >= 6) {
//                    $result['msg'] = '最多允许上传6张图片';
//                    return $result;
//                }
                //批量插入
                $table_name = FixCarImg::tableName();
                $field = ['fix_id', 'name', 'type'];
                $insert_data = [];
                foreach ($base64_arr as $base64_body) {
                    if (false === ($img = Upload::upload($base64_body))) continue;
                    array_push($insert_data, ['fix_id' => $id, 'name' => $img, 'type' => $old_status]);
                }
                if (!Yii::$app->db->createCommand()->batchInsert($table_name, $field, $insert_data)->execute()) throw new Exception('');
            }
            $result['success'] = true;
            $result['msg'] = '保存成功';
            $result['fix_id'] = $row->id;

            $tran->commit();
        } catch (Exception $e) {
            $tran->rollBack();
        }
        return $result;
    }

    /**
     *------------------------------------------------------------
     *  清单删除
     * @param int id  fix_item_t表主键
     * @return json
     * @author liuyingjie
     *------------------------------------------------------------
     */
    public function actionFixItemRemove()
    {
        $request = Yii::$app->request;

        $result = [];
        $result['success'] = false;
        $result['msg'] = '删除失败！';

        if (!$request->isAjax) return $result;

        $id = $request->post('id', 0);
        $fix = FixItemT::findOne($id);
        if ($fix->delete()) {
            $result['success'] = true;
            $result['msg'] = '删除成功!';
            $result['fix_id'] = $fix->fix_id;
        }
        return $result;

    }

    /**
     *------------------------------------------------------------
     *  删除报案号
     * @param
     * @return json
     * @author liuyingjie
     *------------------------------------------------------------
     */
    public function actionRemoveReport(){
        $request = Yii::$app->request;

        $result = [];
        $result['success'] = false;
        $result['msg'] = '操作失败!';

        if(!$request->isAjax) return $result;

        $arr = $request->post('rem_arr');
        $ids = implode(',',$arr);
        if(FixCarReport::deleteAll('id IN ('.$ids.')')){
            $result['success'] = true;
            $result['msg'] = '操作成功!';
            $result['content'] = $arr;
        }

        return $result;
    }
    /*****************************************************  end  ******************************************************/


    /*********************************************前台派工*************************************************************/
    /**
     *------------------------------------------------------------
     *  前台派工
     * @param int status = 5
     * @return view
     * @author liuyingjie
     *------------------------------------------------------------
     */
    public function actionFrontDeskList()
    {
        $session = Yii::$app->session;
        $request = Yii::$app->request;

        return $this->render('front-desk-list', $this->getList($request, $session));
    }

    public function actionFrontDeskInfo()
    {
        $request = Yii::$app->request;
        $id = $request->get('id', 0);
        $type = $request->get('type', 0);
        $gift_enable = $request->get('gift_enable', 0);

        $info = FixCarT::findOne(['id' => $id]);

        //报案号
        $reports = ($reports_res = FixCarReport::findAll(['fix_id'=>$id])) ? $reports_res : [];
        $report_nos = Json::encode($reports);

        return $this->render('front-desk-info', [
            'info' => $info,
            'direction_items' => $this->getDirection(),
            'range_items' => $this->getRange(),
            'log_items' => $this->getCarLog(intval($info->car_id)),
            'driver_items' => $this->getDrivers(),
            'brand_items' => $this->getBrands(),
            'series_items' => $this->getSeries(intval($info->brand_id)),
            'displacement_items' => $this->getDisplacement(intval($info->series_id)),
            'type' => $type,
            'gift_enable' => $gift_enable,
            'reports'=>$reports,
            'report_nos'=>$report_nos
        ]);
    }

    /**
     *------------------------------------------------------------
     *  前台派工提交操作
     * @param
     * @return view
     * @author liuyingjie
     *------------------------------------------------------------
     */
    public function actionFrontDeskSave()
    {
        $request = Yii::$app->request;

        if (!$request->isAjax) return Message::getMessage();

        $id = $request->post('id', 0);
        $follow_car_items = $request->post('follow_car_items');
        $sys_remark = $request->post('sys_remark', '');
        $status = $request->post('status');
        if ($id <= 0) return Message::getMessage();

        $tran = Yii::$app->db->beginTransaction();
        try{

            //没有添加任何清单，禁止进入下一个环节
            $items = FixCarItemT::find()->select('fix_group')->where(['fix_id' => $id, 'status' => 0, 'fix_status' => 0, 'fix_user' => 0, 'lock_id' => 0])->groupBy('fix_group')->asArray()->all();
            if (empty($items)) return Message::getMessage(false,'没有添加任何清单!');

            $groups = array_column($items,'fix_group');

            //更新
            $row = $id > 0 ? FixCarT::findOne($id) : NULL;
            $old_status = $row->status;
            $row->scenario = 'front-desk';
            $row->attributes = $request->post();
            $row->remark = $sys_remark;
            $row->status = $status;

            //如果没有添加任何机电项目，则标记机电项目为已完成
            if(!in_array(10,$groups) && !in_array(11,$groups)){
                $row->status_2 = 1;
            }
            //如果没有添加任何钣金项目，则标记钣金项目为已完成
            if(!in_array(7,$groups) && !in_array(13,$groups) && !in_array(14,$groups)){
                $row->status_1 = 1;
            }

            //如果有随车物品，则拼接为字符串
            if (!empty($follow_car_items)) $row->follow_car_items = implode($follow_car_items, ',');
            if (!$row->validate()) {
                $errors = array_values($row->errors);
                return Message::getMessage(false,$errors[0]);
            }
            if(!$row->save()) throw new Exception('fix_car_t更新失败!');

            //同步到财务
            $fix_car_item_t = FixCarItemT::find()->where('fix_id='.$id)->groupBy('report_id')->all();
            $item_data = [];
            foreach($fix_car_item_t as $item){
                array_push($item_data,['fix_id'=>$id,'car_no'=>$row->car_no,'id_man'=>$row->id_man,'engine_no'=>$row->engine_no,'baoanhao'=>$item->report_id ? $item->report->report_no : '']);
            }
            if (!Yii::$app->db->createCommand()->batchInsert(CarFinanceT::tableName(), ['fix_id','car_no','id_man','engine_no','baoanhao'], $item_data)->execute()) throw new Exception('a');

            //记录日志
            if ($old_status >= 0 && $row->status != $old_status) {
                $log_info = new CarLogT();
                $log_info->car_id = $id;
                $log_info->op_time = time();
                $log_info->op_man = $this->my->getShowName();
                $log_info->group_name = $this->my->group ? $this->my->group->getPath() : '';
                $log_info->type = 2;
                $log_info->remark = $row->getStatusMark($row->status);
                $log_info->info = $sys_remark;
                if (!$log_info->save()) throw new Exception('b');
            }

            $tran->commit();
            return Message::getMessage(true,'操作成功!');
        }catch(Exception $e){
            $tran->rollBack();
            return Message::getMessage(false,$e->getMessage());
        }
    }

    /**
     *------------------------------------------------------------
     *  前台派工清单添加
     * @param
     * @return json
     * @author liuyingjie
     *------------------------------------------------------------
     */
    public function actionFrontDeskInfoItemSave()
    {
        $request = Yii::$app->request;
        $small_type_id = $request->post('small_type_id');
        $name = $request->post('name');
        $count = $request->post('count', 1);
        $remark = $request->post('remark', '');
        $price = $request->post('price', 0);
        $fix_id = $request->post('fix_id');
        $pay_type = $request->post('pay_type');
        $type = $request->post('type', 0);
        $fix_user = $request->post('fix_user', 0);
        $id = $request->post('id', 0);
        $level = $request->post('level', 0);
        $insurance_price = $request->post('insurance_price', 0);

        $result = [];
        $result['success'] = false;
        $result['msg'] = '操作失败!';

        if (!$request->isAjax) return $result;

        // 当id 大于 0 并且 维修类型不为 汽车保养 则更新 ； 否则添加
        $fix_item = ($id > 0 && 5 != $small_type_id) ? FixItemT::findOne($id) : new FixItemT();

        switch ($small_type_id) {
            case 1: //更换清单
            case 2: //维修清单
            case 3: //辅料清单
            case 4: //待定清单
            case 6: //美容装饰
                $fix_item->name = $name;
                $fix_item->count = $count;
                $fix_item->fix_remark = $remark;
                $fix_item->price = $price;
                $fix_item->small_type_id = $small_type_id;
                $fix_item->fix_id = $fix_id;
                $fix_item->pay_type = $pay_type;
                $fix_item->type = $type;
                $fix_item->fix_user = $fix_user;
                $fix_item->damage_level = $level;
                $fix_item->insurance_price = $insurance_price;
                $fix_item->save();
                $result['success'] = true;
                $result['msg'] = '操作成功!';
                break;
            case 5: //汽车保养
                FixItemT::deleteAll('fix_id=' . $fix_id . ' AND small_type_id=5');
                foreach ($name as $k => $val) {
                    $type = strstr($val, '_');
                    $keep_in_good_id = rtrim(strstr($val, '_', true), '_');

                    if ('_0' == $type) {
                        $insert[$k]['name'] = '机油';
                        $insert[$k]['car_keep_in_good_id'] = $keep_in_good_id;

                    } elseif ('_1' == $type) {
                        $insert[$k]['name'] = '机油滤芯';
                        $insert[$k]['car_keep_in_good_id'] = $keep_in_good_id;
                    } elseif ('_2' == $type) {
                        $insert[$k]['name'] = '空气滤芯';
                        $insert[$k]['car_keep_in_good_id'] = $keep_in_good_id;
                    } elseif ('_3' == $type) {
                        $insert[$k]['name'] = '空调滤芯';
                        $insert[$k]['car_keep_in_good_id'] = $keep_in_good_id;
                    } elseif ('_4' == $type) {
                        $insert[$k]['name'] = '汽油滤芯';
                        $insert[$k]['car_keep_in_good_id'] = $keep_in_good_id;
                    }

                    $insert[$k]['price'] = $price;
                    $insert[$k]['count'] = $count;
                    $insert[$k]['fix_id'] = $fix_id;
                    $insert[$k]['small_type_id'] = $small_type_id;
                    $insert[$k]['pay_type'] = 2;
                }
                Yii::$app->db->createCommand()->batchInsert(FixItemT::tableName(), ['name', 'car_keep_in_good_id', 'price', 'count', 'fix_id', 'small_type_id', 'pay_type'], $insert)->execute();
                $result['success'] = true;
                $result['msg'] = '操作成功!';
                break;
        }
        return $result;
    }
    /**************************************************** end *********************************************************/

    /*************************************************  钣金 **********************************************************/
    /**
     *------------------------------------------------------------
     *  钣金列表
     * @param string where status = 5 AND id IN(fix_id)
     * @return view
     * @author liuyingjie
     *------------------------------------------------------------
     */
    public function actionMetalPlateList()
    {
        $session = Yii::$app->session;
        $request = Yii::$app->request;

        return $this->render('metal-plate-list',$this->getList1($request,$session,self::METAL_PLATE));
    }

    public function actionMetalPlateInfo()
    {
        $request = Yii::$app->request;
        $id = $request->get('id', 0);
        $type = $request->get('type', 0);
        $gift_enable = $request->get('gift_enable', 0);
        $info = FixCarT::findOne(['id' => $id]);

        return $this->render('metal-plate-info', [
            'info' => $info,
//            'gift_items' => $gift_items,
            'direction_items' => $this->getDirection(),
            'range_items' => $this->getRange(),
            'log_items' => $this->getCarLog(intval($info->car_id)),
            'driver_items' =>  $this->getDrivers(),
            'brand_items' => $this->getBrands(),
            'series_items' => $this->getSeries(intval($info->brand_id)),
            'displacement_items' => $this->getDisplacement(intval($info->series_id)),
            'type' => $type,
            'gift_enable' => $gift_enable,
            'role' => self::METAL_PLATE,
        ]);
    }
    public function actionAjaxMetalPlateList(){
        $request = Yii::$app->request;
        $result['success'] = false;
        $result['msg'] = '读取失败';

        $fix_id = $request->get('fix_id', 0);                       //fix_item表_t fix_id

        //fix_group = 7(钣金项目) 并且 status = 0 未总检
        $items = ($res = FixCarItemT::find()->where('fix_id='.$fix_id.' AND fix_user='.$this->my->id.' AND lock_id='.$this->my->id.' AND fix_group=7 AND status=0')->orWhere('fix_id='.$fix_id.' AND type=3')->all()) ? $res : [];
        $items = ArrayHelper::index(ArrayHelper::toArray($items),null,'type');
        $html = $this->renderPartial('ajax-metal-plate-list', [
            'items' => $items,
        ]);

        $result['success'] = true;
        $result['html'] = $html;
        return $result;
    }

    /**
     *------------------------------------------------------------
     *  钣金提交
     * @param
     * @return json
     * @author liuyingjie
     *------------------------------------------------------------
     */
    public function actionMetalPlateSave(){
        $request = Yii::$app->request;

        $id = $request->post('id', 0);
        $car_id = $request->post('car_id',0);
        $new_car_price = $request->post('new_car_price',0);
        $new_car_price = $this->handleNewCarPrice($new_car_price);
        $item_id = $request->post('item_id','');
        $status = $request->post('status',0);

        $result = array();
        $result['success'] = false;
        $result['msg'] = '保存失败';

        if (!$request->isAjax || $id <= 0 || $car_id <= 0 || $new_car_price <= 0 || empty($item_id) || $status <= 0) return $result;

        $tran = FixCarT::getDb()->beginTransaction();
        try {
            $follow_car_items = $request->post('follow_car_items');
            $sys_remark = $request->post('sys_remark', '');

            $row = FixCarT::findOne(['id' => $id]);
            $old_status = $row->status;


            //场景选择
            $row->scenario = $row->getModelScenario();

            //批量赋值
            $row->attributes = $request->post();
            $row->remark = $sys_remark;

            //如果有随车物品，则拼接为字符串
            if (!empty($follow_car_items)) $row->follow_car_items = implode($follow_car_items, ',');

            //判断是否有喷漆
            $has_paint = false;
            if(!FixCarItemT::find()->where(['fix_id'=>$row->id,'fix_group'=>8,'status'=>0,'fix_status'=>0])->all()) $has_paint = true;

            if (!$row->validate()) {
                $errors = array_values($row->errors);
                $result['msg'] = $errors[0];
                return $result;
            }

            if ($old_status >= 0 && $row->status != $old_status) {
                $log_info = new CarLogT();
                $log_info->car_id = $car_id;
                $log_info->op_time = time();
                $log_info->op_man = $this->my->getShowName();
                $log_info->group_name = $this->my->group ? $this->my->group->getPath() : '';
                $log_info->type = 2;

                $log_info->remark = $row->getStatusMark($row->status);
                $log_info->info = $sys_remark;

                if (!$log_info->save()) throw new Exception('');
            }
            if (!$row->save()) throw new Exception('');

            //图片上传
            $base64 = $request->post('result', '');
            $base64_arr = !empty($base64) ? explode('^#@#$,', $base64) : array();

            if (count($base64_arr) > 0) {
                //批量插入
                $table_name = FixCarImg::tableName();
                $field = ['fix_id', 'name', 'type'];
                $insert_data = [];
                foreach ($base64_arr as $base64_body) {
                    if (false === ($img = Upload::upload($base64_body))) continue;
                    array_push($insert_data, ['fix_id' => $id, 'name' => $img, 'type' => $old_status]);
                }
                if (!Yii::$app->db->createCommand()->batchInsert($table_name, $field, $insert_data)->execute()) throw new Exception('');
            }

            $middle = MiddleFixCarT::findOne(['fix_id'=>$id,'type'=>1,'status'=>6]);
            $middle->status = $has_paint ? 9 : 7;
            if(!$middle->save()) throw new Exception('');

            $result['success'] = true;
            $result['msg'] = '保存成功';
            $result['fix_id'] = $row->id;

            $tran->commit();
        } catch (Exception $e) {
            $tran->rollBack();
        }
        return $result;
    }
    /***************************************************  end  *******************************************************/

    /****************************************************底子工********************************************************/
    public function actionBottomWorkList()
    {
        $session = Yii::$app->session;
        $request = Yii::$app->request;

        return $this->render('bottom-work-list', $this->getList1($request,$session,self::BOTTOM_WORK));
    }

    public function actionBottomWorkInfo()
    {
        $request = Yii::$app->request;
        $id = $request->get('id', 0);
        $type = $request->get('type', 0);
        $gift_enable = $request->get('gift_enable', 0);
        $info = FixCarT::findOne(['id' => $id]);

        return $this->render('bottom-work-info', [
            'info' => $info,
//            'gift_items' => $gift_items,
            'direction_items' => $this->getDirection(),
            'range_items' => $this->getRange(),
            'log_items' => $this->getCarLog(intval($info->car_id)),
            'driver_items' => $this->getDrivers(),
            'brand_items' => $this->getBrands(),
            'series_items' =>  $this->getSeries(intval($info->brand_id)),
            'displacement_items' => $this->getDisplacement(intval($info->series_id)),
            'type' => $type,
            'gift_enable' => $gift_enable,
            'role' => self::BOTTOM_WORK,
        ]);
    }
    public function actionAjaxBottomWorkList(){
        $request = Yii::$app->request;
        $result['success'] = false;
        $result['msg'] = '读取失败';

        $fix_id = $request->get('fix_id', 0);                       //fix_item表_t fix_id

        //fix_group = 7(钣金项目) 并且 status = 0 未总检
        $items = ($res = FixCarItemT::find()->where(['fix_id'=>$fix_id,'fix_user'=>$this->my->id,'lock_id'=>$this->my->id,'fix_group'=>13,'status'=>0])->orWhere(['fix_id'=>$fix_id,'type'=>3])->all()) ? $res : [];
        $items = ArrayHelper::index(ArrayHelper::toArray($items),null,'type');
        $html = $this->renderPartial('ajax-bottom-work-list', [
            'items' => $items,
        ]);

        $result['success'] = true;
        $result['html'] = $html;
        return $result;
    }
    public function actionBottomWorkSave(){
        $request = Yii::$app->request;

        $id = $request->post('id', 0);
        $car_id = $request->post('car_id',0);
        $new_car_price = $request->post('new_car_price',0);
        $new_car_price = $this->handleNewCarPrice($new_car_price);
        $item_id = $request->post('item_id','');

        $result = array();
        $result['success'] = false;
        $result['msg'] = '保存失败';

        if (!$request->isAjax || $id <= 0 || $car_id <= 0 || $new_car_price <= 0 || empty($item_id)) return $result;

        $tran = FixCarT::getDb()->beginTransaction();
        try {
            $follow_car_items = $request->post('follow_car_items');
            $sys_remark = $request->post('sys_remark', '');

            $row = FixCarT::findOne(['id' => $id]);
            $old_status = $row->status;


            //场景选择
            $row->scenario = $row->getModelScenario();

            //批量赋值
            $row->attributes = $request->post();
            $row->remark = $sys_remark;

            //如果有随车物品，则拼接为字符串
            if (!empty($follow_car_items)) $row->follow_car_items = implode($follow_car_items, ',');

            if (!$row->validate()) {
                $errors = array_values($row->errors);
                $result['msg'] = $errors[0];
                return $result;
            }

            if ($old_status >= 0 && $row->status != $old_status) {
                $log_info = new CarLogT();
                $log_info->car_id = $car_id;
                $log_info->op_time = time();
                $log_info->op_man = $this->my->getShowName();
                $log_info->group_name = $this->my->group ? $this->my->group->getPath() : '';
                $log_info->type = 2;

                $log_info->remark = $row->getStatusMark($row->status);
                $log_info->info = $sys_remark;

                if (!$log_info->save()) throw new Exception('');
            }
            if (!$row->save()) throw new Exception('');

            //图片上传
            $base64 = $request->post('result', '');
            $base64_arr = !empty($base64) ? explode('^#@#$,', $base64) : array();

            if (count($base64_arr) > 0) {
                //批量插入
                $table_name = FixCarImg::tableName();
                $field = ['fix_id', 'name', 'type'];
                $insert_data = [];
                foreach ($base64_arr as $base64_body) {
                    if (false === ($img = Upload::upload($base64_body))) continue;
                    array_push($insert_data, ['fix_id' => $id, 'name' => $img, 'type' => $old_status]);
                }
                if (!Yii::$app->db->createCommand()->batchInsert($table_name, $field, $insert_data)->execute()) throw new Exception('');
            }
            $middle = MiddleFixCarT::findOne(['fix_id'=>$id,'type'=>1,'status'=>7]);
            $middle->status = 8;
            if(!$middle->save()) throw new Exception('');

            $result['success'] = true;
            $result['msg'] = '保存成功';
            $result['fix_id'] = $row->id;

            $tran->commit();
        } catch (Exception $e) {
            $tran->rollBack();
        }
        return $result;
    }

    /****************************************************   end ******************************************************/

    /****************************************************喷漆工********************************************************/
    public function actionPaintWorkList()
    {
        $session = Yii::$app->session;
        $request = Yii::$app->request;

        return $this->render('paint-work-list', $this->getList1($request, $session, self::PAINT_WORK));
    }

    public function actionPaintWorkInfo()
    {
        $request = Yii::$app->request;
        $id = $request->get('id', 0);
        $type = $request->get('type', 0);
        $gift_enable = $request->get('gift_enable', 0);
        $info = FixCarT::findOne(['id' => $id]);

        return $this->render('paint-work-info', [
            'info' => $info,
//            'gift_items' => $gift_items,
            'direction_items' => $this->getDirection(),
            'range_items' => $this->getRange(),
            'log_items' => $this->getCarLog(intval($info->car_id)),
            'driver_items' =>  $this->getDrivers(),
            'brand_items' => $this->getBrands(),
            'series_items' => $this->getSeries(intval($info->brand_id)),
            'displacement_items' => $this->getDisplacement(intval($info->series_id)),
            'type' => $type,
            'gift_enable' => $gift_enable,
            'role' => self::PAINT_WORK,
        ]);
    }
    public function actionAjaxPaintWorkList(){
        $request = Yii::$app->request;
        $result['success'] = false;
        $result['msg'] = '读取失败';

        $fix_id = $request->get('fix_id', 0);                       //fix_item表_t fix_id

        //fix_group = 7(钣金项目) 并且 status = 0 未总检
        $items = ($res = FixCarItemT::find()->where(['fix_id'=>$fix_id,'fix_user'=>$this->my->id,'lock_id'=>$this->my->id,'fix_group'=>8,'status'=>0])->orWhere(['fix_id'=>$fix_id,'type'=>3])->all()) ? $res : [];
        $items = ArrayHelper::index(ArrayHelper::toArray($items),null,'type');
        $html = $this->renderPartial('ajax-paint-work-list', [
            'items' => $items,
        ]);

        $result['success'] = true;
        $result['html'] = $html;
        return $result;
    }
    public function actionPaintWorkSave(){
        $request = Yii::$app->request;

        $id = $request->post('id', 0);
        $car_id = $request->post('car_id',0);
        $new_car_price = $request->post('new_car_price',0);
        $new_car_price = $this->handleNewCarPrice($new_car_price);
        $item_id = $request->post('item_id','');

        $result = array();
        $result['success'] = false;
        $result['msg'] = '保存失败';

        if (!$request->isAjax || $id <= 0 || $car_id <= 0 || $new_car_price <= 0 || empty($item_id)) return $result;

        $tran = FixCarT::getDb()->beginTransaction();
        try {
            $follow_car_items = $request->post('follow_car_items');
            $sys_remark = $request->post('sys_remark', '');

            $row = FixCarT::findOne(['id' => $id]);
            $old_status = $row->status;


            //场景选择
            $row->scenario = $row->getModelScenario();

            //批量赋值
            $row->attributes = $request->post();
            $row->remark = $sys_remark;

            //如果有随车物品，则拼接为字符串
            if (!empty($follow_car_items)) $row->follow_car_items = implode($follow_car_items, ',');

            $is_facial = false;
            //判断是否有钣金
            if(!FixCarItemT::find()->where(['fix_id'=>$row->id,'fix_group'=>7,'fix_status'=>1,'metal_plate_install'=>0,'status'=>0])->all()) $is_facial = true;

            //没有钣金，则默认已通过钣金安装
            if($is_facial) $row->status_1 = 1;
            if (!$row->validate()) {
                $errors = array_values($row->errors);
                $result['msg'] = $errors[0];
                return $result;
            }

            if (!$row->save()) throw new Exception('');

            if ($old_status >= 0 && $row->status != $old_status) {
                $log_info = new CarLogT();
                $log_info->car_id = $car_id;
                $log_info->op_time = time();
                $log_info->op_man = $this->my->getShowName();
                $log_info->group_name = $this->my->group ? $this->my->group->getPath() : '';
                $log_info->type = 2;

                $log_info->remark = $row->getStatusMark($row->status);
                $log_info->info = $sys_remark;

                if (!$log_info->save()) throw new Exception('');
            }

            //图片上传
            $base64 = $request->post('result', '');
            $base64_arr = !empty($base64) ? explode('^#@#$,', $base64) : array();

            if (count($base64_arr) > 0) {
                //批量插入
                $table_name = FixCarImg::tableName();
                $field = ['fix_id', 'name', 'type'];
                $insert_data = [];
                foreach ($base64_arr as $base64_body) {
                    if (false === ($img = Upload::upload($base64_body))) continue;
                    array_push($insert_data, ['fix_id' => $id, 'name' => $img, 'type' => $old_status]);
                }
                if (!Yii::$app->db->createCommand()->batchInsert($table_name, $field, $insert_data)->execute()) throw new Exception('');
            }

            $middle = MiddleFixCarT::findOne(['fix_id'=>$id,'type'=>1,'status'=>8]);

            //判断是否有钣金,有则提交到钣金安装，否则直接到美容
            $middle->status = $is_facial ? 13 : 9;

            if(!$middle->save()) throw new Exception('');

            $result['success'] = true;
            $result['msg'] = '保存成功';
            $result['fix_id'] = $row->id;

            $tran->commit();
        } catch (Exception $e) {
            $tran->rollBack();
        }
        return $result;
    }
    /****************************************************   end ******************************************************/

    /**************************************************钣金安装********************************************************/
    public function actionMetalPlateInstallList()
    {
        $session = Yii::$app->session;
        $request = Yii::$app->request;

        return $this->render('metal-plate-install-list', $this->getList1($request, $session, self::METAL_PLATE_INSTALL));
    }

    public function actionMetalPlateInstallInfo()
    {
        $request = Yii::$app->request;
        $id = $request->get('id', 0);
        $type = $request->get('type', 0);
        $gift_enable = $request->get('gift_enable', 0);
        $info = FixCarT::findOne(['id' => $id]);

        return $this->render('metal-plate-install-info', [
            'info' => $info,
//            'gift_items' => $gift_items,
            'direction_items' => $this->getDirection(),
            'range_items' => $this->getRange(),
            'log_items' => $this->getCarLog(intval($info->car_id)),
            'driver_items' => $this->getDrivers(),
            'brand_items' => $this->getBrands(),
            'series_items' => $this->getSeries(intval($info->brand_id)),
            'displacement_items' => $this->getDisplacement(intval($info->series_id)),
            'type' => $type,
            'gift_enable' => $gift_enable,
            'role' => self::METAL_PLATE_INSTALL,
        ]);
    }
    public function actionAjaxMetalPlateInstallList(){
        $request = Yii::$app->request;
        $result['success'] = false;
        $result['msg'] = '读取失败';

        $fix_id = $request->get('fix_id', 0);                       //fix_item表_t fix_id

        //fix_group = 7(钣金项目) 并且 status = 0 未总检
        $items = ($res = FixCarItemT::find()->where(['fix_id'=>$fix_id,'fix_user'=>$this->my->id,'lock_id'=>$this->my->id,'fix_group'=>7,'fix_status'=>1,'status'=>0])->orWhere(['fix_id'=>$fix_id,'type'=>3])->all()) ? $res : [];
        $items = ArrayHelper::index(ArrayHelper::toArray($items),null,'type');
        $html = $this->renderPartial('ajax-metal-plate-install-list', [
            'items' => $items,
        ]);

        $result['success'] = true;
        $result['html'] = $html;
        return $result;
    }
    public function actionMetalPlateInstallSave(){
        $request = Yii::$app->request;

        $id = $request->post('id', 0);
        $car_id = $request->post('car_id',0);
        $new_car_price = $request->post('new_car_price',0);
        $new_car_price = $this->handleNewCarPrice($new_car_price);
        $item_id = $request->post('item_id','');

        $result = array();
        $result['success'] = false;
        $result['msg'] = '保存失败';

        if (!$request->isAjax || $id <= 0 || $car_id <= 0 || $new_car_price <= 0 || empty($item_id)) return $result;

        $tran = FixCarT::getDb()->beginTransaction();
        try {
            $follow_car_items = $request->post('follow_car_items');
            $sys_remark = $request->post('sys_remark', '');

            $row = FixCarT::findOne(['id' => $id]);
            $old_status = $row->status;


            //场景选择
            $row->scenario = $row->getModelScenario();

            //批量赋值
            $row->attributes = $request->post();
            $row->status_1 = 1;
            $row->remark = $sys_remark;

            //如果有随车物品，则拼接为字符串
            if (!empty($follow_car_items)) $row->follow_car_items = implode($follow_car_items, ',');

            if (!$row->validate()) {
                $errors = array_values($row->errors);
                $result['msg'] = $errors[0];
                return $result;
            }

            if ($old_status >= 0 && $row->status != $old_status) {
                $log_info = new CarLogT();
                $log_info->car_id = $car_id;
                $log_info->op_time = time();
                $log_info->op_man = $this->my->getShowName();
                $log_info->group_name = $this->my->group ? $this->my->group->getPath() : '';
                $log_info->type = 2;

                $log_info->remark = $row->getStatusMark($row->status);
                $log_info->info = $sys_remark;

                if (!$log_info->save()) throw new Exception('');
            }
            if (!$row->save()) throw new Exception('');

            //图片上传
            $base64 = $request->post('result', '');
            $base64_arr = !empty($base64) ? explode('^#@#$,', $base64) : array();

            if (count($base64_arr) > 0) {
                //批量插入
                $table_name = FixCarImg::tableName();
                $field = ['fix_id', 'name', 'type'];
                $insert_data = [];
                foreach ($base64_arr as $base64_body) {
                    if (false === ($img = Upload::upload($base64_body))) continue;
                    array_push($insert_data, ['fix_id' => $id, 'name' => $img, 'type' => $old_status]);
                }
                if (!Yii::$app->db->createCommand()->batchInsert($table_name, $field, $insert_data)->execute()) throw new Exception('');
            }

            $middle = MiddleFixCarT::findOne(['fix_id'=>$id,'type'=>1,'status'=>9]);
            $middle->status = 13;
            if(!$middle->save()) throw new Exception('');

            $result['success'] = true;
            $result['msg'] = '保存成功';
            $result['fix_id'] = $row->id;

            $tran->commit();
        } catch (Exception $e) {
            $tran->rollBack();
        }
        return $result;
    }
    /****************************************************   end ******************************************************/

    /************************************************** 机电  ********************************************************/
    public function actionElectromechanicalList()
    {
        $session = Yii::$app->session;
        $request = Yii::$app->request;

        return $this->render('electromechanical-list', $this->getList1($request, $session, self::ELECTROMECHANICAL));
    }

    public function actionElectromechanicalInfo()
    {
        $request = Yii::$app->request;
        $id = $request->get('id', 0);
        $type = $request->get('type', 0);
        $gift_enable = $request->get('gift_enable', 0);
        $info = FixCarT::findOne(['id' => $id]);

        return $this->render('electromechanical-info', [
            'info' => $info,
//            'gift_items' => $gift_items,
            'direction_items' => $this->getDirection(),
            'range_items' => $this->getRange(),
            'log_items' => $this->getCarLog(intval($info->car_id)),
            'driver_items' => $this->getDrivers(),
            'brand_items' => $this->getBrands(),
            'series_items' => $this->getSeries(intval($info->brand_id)),
            'displacement_items' => $this->getDisplacement(intval($info->series_id)),
            'type' => $type,
            'gift_enable' => $gift_enable,
            'role' => self::ELECTROMECHANICAL,
        ]);
    }
    public function actionAjaxElectromechanicalList(){
        $request = Yii::$app->request;
        $result['success'] = false;
        $result['msg'] = '读取失败';

        $fix_id = $request->get('fix_id', 0);                       //fix_item表_t fix_id

        //fix_group = 7(钣金项目) 并且 status = 0 未总检
        $items = ($res = FixCarItemT::find()->where('fix_id='.$fix_id.' AND fix_user='.$this->my->id.' AND lock_id='.$this->my->id.' AND fix_group IN(10,11) AND status=0' )->orWhere(['fix_id'=>$fix_id,'type'=>3])->all()) ? $res : [];
        $items = ArrayHelper::index(ArrayHelper::toArray($items),null,'type');
        $html = $this->renderPartial('ajax-electromechanical-list', [
            'items' => $items,
        ]);

        $result['success'] = true;
        $result['html'] = $html;
        return $result;
    }
    public function actionElectromechanicalSave(){
        $request = Yii::$app->request;

        $id = $request->post('id', 0);
        $car_id = $request->post('car_id',0);
        $new_car_price = $request->post('new_car_price',0);
        $new_car_price = $this->handleNewCarPrice($new_car_price);

        $result = array();
        $result['success'] = false;
        $result['msg'] = '保存失败';

        if (!$request->isAjax || $id <= 0 || $car_id <= 0 || $new_car_price <= 0) return $result;

        $tran = FixCarT::getDb()->beginTransaction();
        try {
            $follow_car_items = $request->post('follow_car_items');
            $sys_remark = $request->post('sys_remark', '');

            $row = FixCarT::findOne(['id' => $id]);
            $old_status = $row->status;


            //场景选择
            $row->scenario = $row->getModelScenario();

            //批量赋值
            $row->attributes = $request->post();
            $row->status_2 = 1;
            $row->remark = $sys_remark;

            //如果有随车物品，则拼接为字符串
            if (!empty($follow_car_items)) $row->follow_car_items = implode($follow_car_items, ',');

            if (!$row->validate()) {
                $errors = array_values($row->errors);
                $result['msg'] = $errors[0];
                return $result;
            }

            if ($old_status >= 0 && $row->status != $old_status) {
                $log_info = new CarLogT();
                $log_info->car_id = $car_id;
                $log_info->op_time = time();
                $log_info->op_man = $this->my->getShowName();
                $log_info->group_name = $this->my->group ? $this->my->group->getPath() : '';
                $log_info->type = 2;

                $log_info->remark = $row->getStatusMark($row->status);
                $log_info->info = $sys_remark;

                if (!$log_info->save()) throw new Exception('');
            }
            if (!$row->save()) throw new Exception('');

            //图片上传
            $base64 = $request->post('result', '');
            $base64_arr = !empty($base64) ? explode('^#@#$,', $base64) : array();

            if (count($base64_arr) > 0) {
                //批量插入
                $table_name = FixCarImg::tableName();
                $field = ['fix_id', 'name', 'type'];
                $insert_data = [];
                foreach ($base64_arr as $base64_body) {
                    if (false === ($img = Upload::upload($base64_body))) continue;
                    array_push($insert_data, ['fix_id' => $id, 'name' => $img, 'type' => $old_status]);
                }
                if (!Yii::$app->db->createCommand()->batchInsert($table_name, $field, $insert_data)->execute()) throw new Exception('');
            }

            $middle = MiddleFixCarT::findOne(['fix_id'=>$id,'type'=>2,'status'=>11]);
            $middle->status = 13;
            if(!$middle->save()) throw new Exception('');

            $result['success'] = true;
            $result['msg'] = '保存成功';
            $result['fix_id'] = $row->id;

            $tran->commit();
        } catch (Exception $e) {
            $tran->rollBack();
        }
        return $result;
    }
    /****************************************************   end ******************************************************/

    /************************************************** 洗车  *****************************************************/
    public function actionCarWashList()
    {
        $session = Yii::$app->session;
        $request = Yii::$app->request;

        return $this->render('car-wash-list', $this->getList1($request, $session, self::CAR_WASH));
    }

    public function actionCarWashInfo()
    {
        $request = Yii::$app->request;
        $id = $request->get('id', 0);
        $type = $request->get('type', 0);
        $gift_enable = $request->get('gift_enable', 0);
        $info = FixCarT::findOne(['id' => $id]);

        return $this->render('car-wash-info', [
            'info' => $info,
            'direction_items' => $this->getDirection(),
            'range_items' => $this->getRange(),
            'log_items' => $this->getCarLog(intval($info->car_id)),
            'driver_items' => $this->getDrivers(),
            'brand_items' =>$this->getBrands(),
            'series_items' => $this->getSeries(intval($info->brand_id)),
            'displacement_items' => $this->getDisplacement(intval($info->series_id)),
            'type' => $type,
            'gift_enable' => $gift_enable,
            'role' => self::CAR_WASH,
        ]);
    }
    public function actionAjaxCarWashList(){
        $request = Yii::$app->request;
        $result['success'] = false;
        $result['msg'] = '读取失败';

        $fix_id = $request->get('fix_id', 0);                       //fix_item表_t fix_id

        //fix_group = 7(钣金项目) 并且 status = 0 未总检
        $items = ($res = FixCarItemT::find()->where(['fix_id'=>$fix_id,'type'=>3])->orWhere(['fix_id'=>$fix_id,'type'=>5])->all()) ? $res : [];
        $items = ArrayHelper::index(ArrayHelper::toArray($items),null,'type');
        $html = $this->renderPartial('ajax-car-wash-list', [
            'items' => $items,
        ]);

        $result['success'] = true;
        $result['html'] = $html;
        return $result;
    }
    public function actionCarWashSave(){
        $request = Yii::$app->request;

        $id = $request->post('id', 0);
        $car_id = $request->post('car_id',0);
        $new_car_price = $request->post('new_car_price',0);
        $new_car_price = $this->handleNewCarPrice($new_car_price);
        $status = $request->post('status');

        $result = array();
        $result['success'] = false;
        $result['msg'] = '保存失败';

        if (!$request->isAjax || $id < 1 || $car_id < 1 || $new_car_price < 1 || $status < 1) return $result;

        $tran = FixCarT::getDb()->beginTransaction();
        try {
            $follow_car_items = $request->post('follow_car_items');
            $sys_remark = $request->post('sys_remark', '');

            $row = FixCarT::findOne(['id' => $id]);
            $old_status = $row->status;
            $row->status = $status;


            //场景选择
            $row->scenario = $row->getModelScenario();

            //批量赋值
            $row->attributes = $request->post();
            $row->remark = $sys_remark;

            //如果有随车物品，则拼接为字符串
            if (!empty($follow_car_items)) $row->follow_car_items = implode($follow_car_items, ',');

            if (!$row->validate()) {
                $errors = array_values($row->errors);
                $result['msg'] = $errors[0];
                return $result;
            }

            if ($old_status >= 0 && $row->status != $old_status) {
                $log_info = new CarLogT();
                $log_info->car_id = $car_id;
                $log_info->op_time = time();
                $log_info->op_man = $this->my->getShowName();
                $log_info->group_name = $this->my->group ? $this->my->group->getPath() : '';
                $log_info->type = 2;

                $log_info->remark = $row->getStatusMark($row->status);
                $log_info->info = $sys_remark;

                if (!$log_info->save()) throw new Exception('');
            }
            if (!$row->save()) throw new Exception('a');

            //图片上传
            $base64 = $request->post('result', '');
            $base64_arr = !empty($base64) ? explode('^#@#$,', $base64) : array();

            if (count($base64_arr) > 0) {
                //批量插入
                $table_name = FixCarImg::tableName();
                $field = ['fix_id', 'name', 'type'];
                $insert_data = [];
                foreach ($base64_arr as $base64_body) {
                    if (false === ($img = Upload::upload($base64_body))) continue;
                    array_push($insert_data, ['fix_id' => $id, 'name' => $img, 'type' => $old_status]);
                }
                if (!Yii::$app->db->createCommand()->batchInsert($table_name, $field, $insert_data)->execute()) throw new Exception('');
            }

            if(14 == $status) {
                $middle_fix_car_t = MiddleFixCarT::findOne(['fix_id' => $id, 'type' => 1, 'status' => 13]);
                $middle_fix_car_t->status = 14;
                if (!$middle_fix_car_t->save()) throw new Exception('操作失败!');
            }
            $result['success'] = true;
            $result['msg'] = '保存成功';
            $result['fix_id'] = $row->id;

            $tran->commit();
        } catch (Exception $e) {
            $result['msg'] = $e->getMessage();
            $tran->rollBack();
        }
        return $result;
    }

    /****************************************************   end ******************************************************/

    /******************************************************  总检  ****************************************************/
    public function actionLastCheckList()
    {
        $session = Yii::$app->session;
        $request = Yii::$app->request;

        return $this->render('last-check-list', $this->getList($request, $session,self::LAST_CHECK));
    }

    public function actionLastCheckInfo()
    {
        $request = Yii::$app->request;
        $id = $request->get('id', 0);
        $type = $request->get('type', 0);
        $gift_enable = $request->get('gift_enable', 0);
        $info = FixCarT::findOne(['id' => $id]);

        return $this->render('last-check-info', [
            'info' => $info,
//            'gift_items' => $gift_items,
            'direction_items' => $this->getDirection(),
            'range_items' => $this->getRange(),
            'log_items' => $this->getCarLog(intval($info->car_id)),
            'driver_items' =>  $this->getDrivers(),
            'brand_items' => $this->getBrands(),
            'series_items' => $this->getSeries(intval($info->brand_id)),
            'displacement_items' => $this->getDisplacement(intval($info->series_id)),
            'type' => $type,
            'gift_enable' => $gift_enable,
        ]);
    }
    public function actionAjaxLastCheckList(){
        $request = Yii::$app->request;
        $result['success'] = false;
        $result['msg'] = '读取失败';

        $fix_id = $request->get('fix_id', 0);                       //fix_item表_t fix_id

        //fix_group = 7(钣金项目) 并且 status = 0 未总检
        $items = ($res = FixCarItemT::find()->where('fix_id='.$fix_id.' AND fix_group!=13')->all()) ? $res : [];
        $items = ArrayHelper::index(ArrayHelper::toArray($items),null,'type');
        $html = $this->renderPartial('ajax-last-check-list', [
            'items' => $items,
        ]);

        $result['success'] = true;
        $result['html'] = $html;
        return $result;
    }
    public function actionLastCheckSave(){
        $request = Yii::$app->request;

        $id = $request->post('id', 0);
        $car_id = $request->post('car_id',0);
        $new_car_price = $request->post('new_car_price',0);
        $new_car_price = $this->handleNewCarPrice($new_car_price);

        $result = array();
        $result['success'] = false;
        $result['msg'] = '保存失败';

        if (!$request->isAjax || $id <= 0 || $car_id <= 0 || $new_car_price <= 0) return $result;

        $tran = FixCarT::getDb()->beginTransaction();
        try {
            $follow_car_items = $request->post('follow_car_items');
            $sys_remark = $request->post('sys_remark', '');

            $row = FixCarT::findOne(['id' => $id]);
            $old_status = $row->status;


            //场景选择
            $row->scenario = $row->getModelScenario();

            //批量赋值
            $row->attributes = $request->post();
            $row->remark = $sys_remark;

            //如果有随车物品，则拼接为字符串
            if (!empty($follow_car_items)) $row->follow_car_items = implode($follow_car_items, ',');

            if (!$row->validate()) {
                $errors = array_values($row->errors);
                $result['msg'] = $errors[0];
                return $result;
            }

            if ($old_status >= 0 && $row->status != $old_status) {
                $log_info = new CarLogT();
                $log_info->car_id = $car_id;
                $log_info->op_time = time();
                $log_info->op_man = $this->my->getShowName();
                $log_info->group_name = $this->my->group ? $this->my->group->getPath() : '';
                $log_info->type = 2;

                $log_info->remark = $row->getStatusMark($row->status);
                $log_info->info = $sys_remark;

                if (!$log_info->save()) throw new Exception('');
            }
            if (!$row->save()) throw new Exception('a');

            //图片上传
            $base64 = $request->post('result', '');
            $base64_arr = !empty($base64) ? explode('^#@#$,', $base64) : array();

            if (count($base64_arr) > 0) {
                //批量插入
                $table_name = FixCarImg::tableName();
                $field = ['fix_id', 'name', 'type'];
                $insert_data = [];
                foreach ($base64_arr as $base64_body) {
                    if (false === ($img = Upload::upload($base64_body))) continue;
                    array_push($insert_data, ['fix_id' => $id, 'name' => $img, 'type' => $old_status]);
                }
                if (!Yii::$app->db->createCommand()->batchInsert($table_name, $field, $insert_data)->execute()) throw new Exception('');
            }
            $result['success'] = true;
            $result['msg'] = '保存成功';
            $result['fix_id'] = $row->id;

            $tran->commit();
        } catch (Exception $e) {
            $result['msg'] = $e->getMessage();
            $tran->rollBack();
        }
        return $result;
    }
    /******************************************************  end  ****************************************************/

    /*********************************************公共方法*************************************************************/

    /**
     *------------------------------------------------------------
     *  清单添加 art.dialog
     * @param int fix_id fix_car_t 主键 及 fix_item_t 表外键
     * @return view
     * @author liuyingjie
     *------------------------------------------------------------
     */
    public function actionDialogBox()
    {
        $request = Yii::$app->request;

        $fix_id = $request->get('fix_id', 0);
        $type = $request->get('type', 0);
        $info = $request->get('info', 0);

        $data = [
            'fix_id' => $fix_id,
            'type' => $type
        ];
        if ($info > 0) {
            $id = $request->get('id', 0);
            $info = FixItemT::findOne($id);

            $gid = $info->userT->group_id;
            $user = UserT::findAll(['group_id' => $gid]);
            $data['info'] = $info;
            $data['user'] = $user;
        }
        return $this->render('dialog-box', $data);
    }

    public function actionFixUserSibling()
    {
        $request = Yii::$app->request;

        $result = [];
        $result['success'] = false;
        if (!$request->isAjax) return $result;

        $fix_user = $request->post('fix_user', 0);
        $gid = UserT::findOne($fix_user)->group_id;
        if ($gid <= 0) return $result;

        $siblings = UserT::find()->where(['group_id' => $gid])->all();
        if ($siblings) {
            $result['success'] = true;
            $result['content'] = $siblings;
        }
        return $result;
    }

    public function actionFixCarSave()
    {
        $request = Yii::$app->request;

        $result = array();
        $result['success'] = false;
        $result['msg'] = '保存失败';

        if (!$request->isAjax) return $result;
        $tran = FixCarT::getDb()->beginTransaction();
        try {
            $id = $request->post('id', 0);
            $follow_car_items = $request->post('follow_car_items');
            $car_id = $request->post('car_id');
            $sys_remark = $request->post('sys_remark', '');

            $row = null;
            if ($id > 0) {
                $row = FixCarT::findOne(['id' => $id]);
                $old_status = $row->status;
            } else {
                if (!($row = FixCarT::findOne(['car_id' => $car_id]))) {
                    $row = new FixCarT();
                }
                $old_status = 0;
            }

            //场景选择
            $row->scenario = $row->getModelScenario();

            //批量赋值
            $row->attributes = $request->post();

            $row->remark = $sys_remark;

            //如果有随车物品，则拼接为字符串
            if (!empty($follow_car_items)) $row->follow_car_items = implode($follow_car_items, ',');

            if (!$row->validate()) {
                $errors = array_values($row->errors);
                $result['msg'] = $errors[0];
                return $result;
            }

            //新增
            if ($row->isNewRecord) {
                $row->submit_date = date('Y-m-d');
                $row->user_id = $this->my->id;
            }

            if ($old_status >= 0 && $row->status != $old_status) {
                $log_info = new CarLogT();
                $log_info->car_id = $car_id;
                $log_info->op_time = time();
                $log_info->op_man = $this->my->getShowName();
                $log_info->group_name = $this->my->group ? $this->my->group->getPath() : '';
                $log_info->type = 2;

                //提单审核 提交
                //上门接车 && (自费维修 || 保险理赔)，都进入司机接车
                if ((2 == $row->status) && ('上门接车' == $row->receive_type)) {
                    $row->status = 2;
                } //客户自送 && 自费维修,则直接进入前台审核
                elseif (2 == $row->status && ('客户自送' == $row->receive_type)) {
                    $row->status = 3;
                }

                //前台审核 提交
                if (4 == $row->status && '自费维修' == $row->accident_type) {
                    $row->status = 5;
                }

                $log_info->remark = $row->getStatusMark($row->status);
                $log_info->info = $sys_remark;

                if (!$log_info->save()) throw new Exception('');
            }

//            //已进入车间维修
//            if(6 == $row->status){
//                $groups = FixCarItemT::find()->select('fix_group')->where(['fix_id' => $id, 'status' => 0, 'fix_status' => 0, 'fix_user' => 0, 'lock_id' => 0])->groupBy('fix_group')->asArray()->all();
//                $groups = array_column($groups,'fix_group');
//                //如果有机电项目，则标记机电为未完成
//                if(in_array(10,$groups) || in_array(11,$groups)){
//                    $row->status_2 = 0;
//                    $middle_fix_car_t = MiddleFixCarT::findOne(['fix_id'=>$id,'type'=>2,'status'=>13]);
//                    if($middle_fix_car_t){
//                        $middle_fix_car_t->status=11;
//                        $middle_fix_car_t->save();
//                    }
//                }
//
//                //如果有钣金项目，则标记钣金为未完成
//                if(in_array(7,$groups) || in_array(13,$groups) || in_array(14,$groups)){
//                    $row->status_1 = 0;
//                    $middle_fix_car_t = MiddleFixCarT::findOne(['fix_id'=>$id,'type'=>1,'status'=>13]);
//                    if($middle_fix_car_t){
//                        $middle_fix_car_t->status=6;
//                        $middle_fix_car_t->save();
//                    }
//                }
//            }
            if (!$row->save()) throw new Exception('');


            //图片上传
            $base64 = $request->post('result', '');
            $base64_arr = !empty($base64) ? explode('^#@#$,', $base64) : array();

            if (count($base64_arr) > 0) {
                //批量插入
                $table_name = FixCarImg::tableName();
                $field = ['fix_id', 'name', 'type'];
                $insert_data = [];
                foreach ($base64_arr as $base64_body) {
                    if (false === ($img = Upload::upload($base64_body))) continue;
                    array_push($insert_data, ['fix_id' => $id, 'name' => $img, 'type' => $old_status]);
                }
                if (!Yii::$app->db->createCommand()->batchInsert($table_name, $field, $insert_data)->execute()) throw new Exception('');
            }
            $result['success'] = true;
            $result['msg'] = '保存成功';
            $result['fix_id'] = $row->id;

            $tran->commit();
        } catch (Exception $e) {
            $tran->rollBack();
        }
        return $result;
    }

    /**
     *------------------------------------------------------------
     *
     * @param int fix_id fix_item表_t fix_id
     * @param int pay_type 保险理赔、自费维修
     * @param int small_type_id 对应 更换清单、维修清单、辅料清单、待定清单、汽车保养、美容装饰 其中一种
     * @return view
     * @author liuyingjie
     *------------------------------------------------------------
     */
    public function actionAjaxItemList()
    {
        $request = Yii::$app->request;
        $result['success'] = false;
        $result['msg'] = '读取失败';

        $fix_id = $request->get('fix_id', 0);                       //fix_item表_t fix_id

        $fix_items = null;

        $items = FixCarItemT::findAll(['fix_id'=>$fix_id]);

        var_dump(ArrayHelper::index(ArrayHelper::toArray($items),null,'type'));
        die;
        $html = $this->renderPartial('ajax-item-list', [
            'insurances' => $insurances_after_group,
            'facial' => $facial,
            'maintenance' => $maintenance,
            'self_paying' => $self_paying_after_group
        ]);
        $result['success'] = true;
        $result['html'] = $html;
        return $result;
    }

    public function actionAjaxItemListBak()
    {
        $request = Yii::$app->request;
        $result['success'] = false;
        $result['msg'] = '读取失败';

        $fix_id = $request->get('fix_id', 0);                       //fix_item表_t fix_id
        $pay_type = $request->get('pay_type', 0);                   //pay_type 保险理赔、自费维修
        $small_type_id = $request->get('small_type_id', 0);         //small_type_id 对应 更换清单、维修清单、辅料清单、待定清单、汽车保养、美容装饰 其中一种
        $role = $request->get('role', '');                          //role 对应钣金、底子工...

        //钣金分组
        $role_id = $role ? $this->getRoleId($role) : 0;

        $query = null;
        $query = FixItemT::find();

        $type1_items = [];
        if (1 == $pay_type && $small_type_id === 0) {
            $query = $query->where('fix_id=' . $fix_id . ' and pay_type=' . $pay_type . ' AND small_type_id BETWEEN 1 AND 4');
            if (0 !== $role_id) $query = $query->andWhere('type = ' . $role_id);
            $type1_items = $query->all();
            $arr = [];
            foreach ($type1_items as $k => $v) {
                if (!$v->small_type_id) continue;
                $arr[$v->small_type_id][] = $v;
            }
            $type1_items = $arr;
        }

        $type2_items = [];
        if (2 == $pay_type && $small_type_id === 0) {
            $query = $query->where('fix_id=' . $fix_id . ' and pay_type=' . $pay_type . ' AND small_type_id BETWEEN 1 AND 4');
            if (0 !== $role_id) $query = $query->andWhere('type = ' . $role_id);
            $type2_items = $query->all();
            $arr = [];
            foreach ($type2_items as $k => $v) {
                if (!$v->small_type_id) continue;
                $arr[$v->small_type_id][] = $v;
            }
            $type2_items = $arr;
        }

        $type3_items = [];
        $query = $query->where('fix_id=' . $fix_id . ' AND small_type_id=' . $small_type_id);
        if (0 !== $role_id) $query = $query->andWhere('type = ' . $role_id);
        $type3_items = $query->all();
        if ($type3_items) {
            $arr = [];
            foreach ($type3_items as $k => $v) {
                if (5 != $v->small_type_id) continue;
                $arr[$v->small_type_id][] = $v;
            }
            $type3_items = $arr;
        }

        $type4_items = [];
        $query = $query->where('fix_id=' . $fix_id . ' AND small_type_id=' . $small_type_id);
        if (0 !== $role_id) $query = $query->andWhere('type = ' . $role_id);
        $type4_items = $query->all();
        if ($type4_items) {
            $arr = [];
            foreach ($type4_items as $k => $v) {
                if (6 != $v->small_type_id) continue;
                $arr[$v->small_type_id][] = $v;
            }
            $type4_items = $arr;
        }

        $query = $query->where('fix_id=' . $fix_id . ' and big_type_id=5 and pay_type NOT IN(1,2)');
        if (0 !== $role_id) $query = $query->andWhere('type = ' . $role_id);
        $type5_items = $query->all();
        $html = $this->renderPartial('ajax-item-list', [
            'type1_items' => $type1_items,
            'type2_items' => $type2_items,
            'type3_items' => $type3_items,
            'type4_items' => $type4_items,
            'type5_items' => $type5_items
        ]);
        $result['success'] = true;
        $result['msg'] = '读取成功';
        $result['html'] = $html;
        return $result;
    }

    public function actionPrintOrder()
    {
        $request = Yii::$app->request;
        var_dump($request->post());
        die;
    }

    /**
     *------------------------------------------------------------
     *  维修已完成操作
     * @param   int id fix_item_t 表 id
     * @return json $result
     * @author liuyingjie
     *------------------------------------------------------------
     */
    public function actionFixItemFinish()
    {
        $result = [];
        $result['success'] = false;
        $result['msg'] = '操作失败!';

        $request = Yii::$app->request;
        if (!$request->isAjax) return $result;

        $id = $request->post('id', 0);
        if (0 == $id) return $result;

        $fix_item = FixItemT::findOne($id);
        $fix_item->status = 1;
        $fix_item->save();

        $result['success'] = true;
        $result['msg'] = '操作成功';
        $result['status'] = self::FIX_FINISH;

        return $result;
    }

    /**
     *------------------------------------------------------------
     *  根据角色名获取对应id
     * @param string $name , default null
     * @return int role_t 表id
     * @author liuyingjie
     *------------------------------------------------------------
     */
    private function getRoleId($name = null)
    {
        $role = null;
        if (is_null($name)) return 0;
        if (!($role = RoleT::findOne(['name' => $name]))) return 0;
        return ArrayHelper::getValue($role, 'id');
    }

    /**
     *------------------------------------------------------------
     *  损伤程度
     * @param
     * @return view
     * @author liuyingjie
     *------------------------------------------------------------
     */
    public function actionGetDamageLevel()
    {
        $request = Yii::$app->request;

        $result = [];
        $result['success'] = false;
        $result['msg'] = '操作失败!';

        if (!$request->isAjax) return $result;

        $level = $request->post('level');
        $id = $request->post('id');

        if ($level <= 0 || $id <= 0) return $result;

        $middles = MiddleDamageLevel::find()->where('metal_id=' . $id . ' AND level=' . $level)->one();

        $result['success'] = true;
        $result['msg'] = '操作成功!';
        $result['content'] = $middles;

        return $result;
    }

    public function actionGetMetalPlate()
    {
        $request = Yii::$app->request;

        $result = [];
        $result['success'] = false;
        $result['msg'] = '操作失败!';

        if (!$request->isAjax) return $result;

        $name = $request->post('search');

        if (empty($name)) return $result;

        $parts = MetalPlatePart::find()->where(['like', 'name', $name])->all();

        $result['success'] = true;
        $result['msg'] = '操作成功!';
        $result['content'] = $parts;

        return $result;
    }

    /**
     *------------------------------------------------------------
     *  根据维修部位、新车购置价 查询自费单价
     * @param string name 维修部位
     * @param int price 新车购置价
     * @return json
     * @author liuyingjie
     *------------------------------------------------------------
     */
    public function actionGetSelfFree()
    {
        $request = Yii::$app->request;

        $result = [];
        $result['success'] = false;
        $result['msg'] = '操作失败!';

        if (!$request->isAjax) return $result;

        $name = $request->post('name', '');
        $car_price = $request->post('price', 0);
        $level = $request->post('level');

        $i = $m = null;
        if ($car_price >= 3) {
            $len = strlen($car_price);
            switch ($len) {
                case 1:
                    break;
                case 2:
                    $car_price = floor(doubleval($car_price / 10)) * 10;
                    break;
                case 3:
                    $car_price = floor(doubleval($car_price / 100)) * 100;
                    break;
            }

            $i = MetalPlatePart::find()->where('name=\'' . $name . '\'')->one();
//            $m = MiddleParintPrice::find()->where('metal_id=' . $i->id . ' AND min_price=' . $car_price)->one();
            $m = MiddleDamageLevel::find()->where('metal_id='.$i->id.' AND level='.$level)->one();
        }

        $result['success'] = true;
        $result['msg'] = '操作成功!';
        $result['content'] = $m;

        return $result;
    }

    /**
     *------------------------------------------------------------
     *  根据配件名获取自费单价
     * @param
     * @return view
     * @author liuyingjie
     *------------------------------------------------------------
     */
    public function actionGetPriceByShop()
    {
        $request = Yii::$app->request;

        $name = $request->post('name');
        $price = $request->post('price');

        $result = [];
        $result['success'] = true;
        $result['msg'] = '操作失败!';

        if (!$request->isAjax || empty($name) || empty($price)) return $result;

        $i = $s = $m = null; //初始化

        //格式化新车购置价
        if ($price >= 3) {
            $len = strlen($price);
            switch ($len) {
                case 1:
                    break;
                case 2:
                    $price = floor(doubleval($price / 10)) * 10;
                    break;
                case 3:
                    $price = floor(doubleval($price / 100)) * 100;
                    break;
            }
            $s = StoreRoom::find()->where('name=\'' . $name . '\'')->one();
            $i = FixCarCategory::find()->where('name=\'' . $name . '\'')->one();
            $m = MiddleScaleHour::find()->where('scale_id=' . $i->id . ' AND min_price=' . $price)->one();

            //配件售价($selling_price) = 产品价格($s->price) * 比例($i->scale)
            $selling_price = $s ? ($s->price + ($s->price * ($i->scale / 100))) : 0;

            //工时($m->work_hour) + 配件售价($selling_price)
            $work_hour = $m ? ($m->work_hour + $selling_price) : $selling_price;

            $result['success'] = true;
            $result['msg'] = '操作成功!';
            $result['content'] = $work_hour;
        }

        return $result;
    }
    /**
     *------------------------------------------------------------
     *Ajax 删除图片
     * @param id fix_car_img 表id
     * @return json
     * @author liuyingjie
     *------------------------------------------------------------
     */
    public function actionRmImg()
    {
        $request = Yii::$app->request;
        $id = $request->post('id', 0);

        $result['success'] = false;
        $result['msg'] = '删除失败';
        if ($request->isAjax) {
            $model = FixCarImg::findOne($id);
            if (unlink($model->name)) {
                $model->delete();

                $result['success'] = true;
                $result['msg'] = '删除成功';
            }
        }
        return $result;
    }
    /**
     *------------------------------------------------------------
     *下载图片
     * @param int id fix_car_img 表外键
     * @return json
     * @author liuyingjie
     *------------------------------------------------------------
     */
    public function actionDownloadImg()
    {
        $request = Yii::$app->request;
        $id = $request->get('id');
        $model = FixCarImg::findOne($id);
        return Yii::$app->response->sendFile(realpath($model->name));
    }

    /**
     *------------------------------------------------------------
     * 调用WebUploader插件
     * @param int type 图片分类 ; int id fix_car_t 表主键
     * @return json
     * @author liuyingjie
     *------------------------------------------------------------
     */
    public function actionWebUploader(){
        $request = Yii::$app->request;
        $type = $request->post('type',0);
        $id = $request->post('id',0);
        $html = $this->renderPartial('web-uploader',['type'=>$type,'id'=>$id]);

        return Message::getMessage(true,'操作成功!',$html);
    }

    /**
     *------------------------------------------------------------
     * 查看图片
     * @param int type 图片分类 ; id fix_car_t 表主键
     * @return json
     * @author liuyingjie
     *------------------------------------------------------------
     */
    public function actionLookImage(){
        $request = Yii::$app->request;
        $type = $request->post('type',0);
        $id = $request->post('id',0);

        $images = FixCarImg::find()->where('fix_id='.$id.' AND type<='.$type)->asArray()->all();
        $images = ArrayHelper::index($images,null,'type');
        $html = $this->render('look-image',['images'=>$images]);
        return Message::getMessage(true,'操作成功!',$html);
    }

    /**
     *------------------------------------------------------------
     *  清单列表
     * @param int id fix_car_t 表主键 ;
     * @param int gid  fix_car_group 表主键
     *          7 钣金项目 ; 8 喷漆项目 ; 10 维修项目 ; 11 保养项目 ; 12 美容项目
     * @return json
     * @author liuyingjie
     *------------------------------------------------------------
     */
    public function actionRefreshItemList(){
        $request = Yii::$app->request;
        $id = $request->post('id',0);
        $gid = $request->post('gid',0);
        $is_report = $request->post('report');
        if($id < 1 || $gid < 1) return Message::getMessage();

        $items = ($res = FixCarItemT::find()->where('fix_id='.$id . ' AND fix_group !='.$gid)->all()) ? $res : [];

        //查勘定损、前台派工
        if('is_report' === $is_report){
            $render['reports'] = FixCarReport::find()->where('fix_id='.$id)->all();
        }
        $render['items'] = $items = ArrayHelper::index(ArrayHelper::toArray($items),null,'type');
        $html = $this->render('fix-item-list',$render);
        return Message::getMessage(true,'操作成功!',$html);
    }
    /************************************************* end ************************************************************/
}