getDataList(); $dataList = $result["dataList"]; $pages = $result["pages"]; $get = $result["get"]; return $this->render('index', array( 'orderList' => $dataList, 'pages' => $pages, 'gets' => $get, 'citys' => RegionFeeSettingModel::find()->all(), 'statusLabels' => WorkOrderStatus::labels(), )); } public function actionExportDa() { $result = $this->getDataList(); $dataList = $result["dataList"]; $pages = $result["pages"]; $get = $result["get"]; return $this->renderPartial('exportDa', array( 'orderList' => $dataList, 'pages' => $pages, 'gets' => $get )); } public function actionInfo() { $result = Yii::$app->request; $id = $result->get("id"); $info = WorkOrderModel::find() ->select([ 'wo.*', 'e.phone', 'ep.nickname', 'concat(ep.firstname, ep.lastname) as realname', '(select count(woe.id) from work_order_engineers woe where woe.work_order_id = wo.id) as pickcont' ]) ->alias("wo") ->orderBy('wo.id DESC') ->leftJoin('engineer e', "e.id = wo.engineer_id") ->leftJoin('engineer_profile ep', "e.id = ep.engineer_id") ->where('wo.id = ' . $id)->asArray()->one(); $logList = WorkOrderLogModel::find()->where(["work_order_id" => $id])->asArray()->all(); // 日志操作人类型:0用户、1工程师、2管理员 $logs = array(); foreach ($logList as $log) { $tmp = array(); $tmp['log_at'] = $log['log_at']; $tmp['content'] = $log['content']; if ($log['operator_type'] == WorkOrderLogModel::OPERATOR_TYPE_ENGINEER) { $user = EngineerProfileModel::findOne(["engineer_id" => intval($log['operator_id'])]); if (!empty($user)) { $tmp['operator_user'] = "工程师-" . $user['firstname'] . $user['lastname']; } } else if ($log['operator_type'] == WorkOrderLogModel::OPERATOR_TYPE_ADMIN) { $user = SysUserProfileModel::findOne(["sys_user_id" => intval($log['operator_id'])]); if (!empty($user)) { $tmp['operator_user'] = "管理员-" . $user['realname']; } } else if ($log['operator_type'] == WorkOrderLogModel::OPERATOR_TYPE_SYSTEM) { $tmp['operator_user'] = "系统"; } $tmp['operator_user'] = empty($tmp['operator_user']) ? "" : $tmp['operator_user']; $logs[] = $tmp; } $engineerInfo = WorkOrderEngineersModel::find()->alias("wo") ->select([ 'wo.*', 'e.phone', 'ep.nickname', 'concat(ep.firstname, ep.lastname) as realname' ]) ->alias("wo") ->orderBy('wo.id DESC') ->leftJoin('engineer e', "e.id = wo.engineer_id") ->leftJoin('engineer_profile ep', "e.id = ep.engineer_id") ->where('wo.work_order_id = ' . $id)->asArray()->all(); return $this->render('info', array( 'order' => $info, 'logs' => $logs, 'engineers' => $engineerInfo )); } /** * 获取工单数据 * @param bool $isExport * @return array */ public function getDataList($isExport = false) { $request = Yii::$app->request; $orderNo = $request->get('order_no'); // 工单号 $employType = $request->get('employ_type'); // 用工类型 $address = $request->get('address'); // 用工地址 $engineerName = $request->get('engineer_name'); // 工程师手机号或名称 $status = $request->get('status'); // 工单状态 $timeStart = $request->get('time_start'); $endStart = $request->get('time_end'); $selcity = $request->get('selcity'); /** * 查询过滤处理 */ $get = []; $get['order_no'] = empty($orderNo) ? "" : $orderNo; $get['employ_type'] = empty($employType) ? "" : $employType; $get['address'] = empty($address) ? "" : $address; $get['engineer_name'] = empty($engineerName) ? "" : $engineerName; $get['status'] = empty($status) ? "" : $status; $get['time_start'] = empty($timeStart) ? "" : $timeStart; $get['time_end'] = empty($endStart) ? "" : $endStart; $get['selcity'] = empty($selcity) ? "" : $selcity; $query = WorkOrderModel::find() ->select([ 'wo.*', 'e.phone', 'ep.nickname', 'concat(ep.firstname, ep.lastname) as realname', '(select count(woe.id) from work_order_engineers woe where woe.work_order_id = wo.id) as pickcont' ]) ->alias("wo") ->orderBy('wo.id DESC') ->leftJoin('engineer e', "e.id = wo.engineer_id") ->leftJoin('engineer_profile ep', "e.id = ep.engineer_id"); if ($orderNo) { $query->andWhere(['like', 'wo.order_no', $orderNo]); } if (!empty($timeStart)) { $query->andWhere(['>=', 'wo.created_at', strtotime($timeStart)]); } if (!empty($endStart)) { $query->andWhere(['<=', 'wo.created_at', strtotime($endStart) + 86400]); // 多一天 } if (!empty($employType)) { $query->andWhere(['=', 'wo.employ_type', $employType]); } if (!empty($selcity)) { $query->andWhere(['=', 'wo.city', $selcity]); } if (!empty($address)) { $query->andFilterWhere(['or', ['like', 'wo.address_title', $address], ['like', 'wo.address', $address]]); } if (!empty($status)) { $query->andWhere(['=', 'wo.status', $status]); } if (!empty($engineerName)) { $query->andFilterWhere(['or', ['like', 'e.phone', $engineerName], ['like', 'ep.nickname', $engineerName], ['like', 'concat(ep.firstname, ep.lastname)', $engineerName]]); } if ($isExport) { $pages = null; $model = $query->asArray()->all(); } else { /** * 分页处理 */ $pageSize = $request->get("pageSize") ? (int)$request->get("pageSize") : 20; $pages = new Pagination(['totalCount' => $query->count(), 'pageSize' => $pageSize]); $query->offset($pages->offset)->limit($pages->limit); $model = $query->asArray()->all(); } return [ "pages" => $pages, "dataList" => $model, "get" => $get ]; } /** * 执行操作进行备注 * @return string */ public function actionDoUpdateRemark() { $post = Yii::$app->request->post(); $id = $post['id']; $remark = $post['remark']; $mRepairOrder = WorkOrderModel::findOne(["id" => intval($id)]); $mRepairOrder->remark = $remark; $mRepairOrder->updated_at = time(); $result = $mRepairOrder->save(); // 记录操作日志 $repairOrderLog = new WorkOrderLogModel(); $repairOrderLog->work_order_id = $id; $repairOrderLog->operator_id = Yii::$app->user->id; $repairOrderLog->operator_type = WorkOrderLogModel::OPERATOR_TYPE_ADMIN; $repairOrderLog->content = $remark; $repairOrderLog->log_at = time(); $repairOrderLog->insert(); $msg = array(); if ($result) { $msg['status'] = 1; $msg['msg'] = "操作成功"; } else { $msg['status'] = 0; $msg['msg'] = "操作失败"; } return $this->renderJson($msg); } /** * 后台关闭工单 */ public function actionCloseWorkOrder() { $post = Yii::$app->request->post(); $id = $post['id']; $msg = array(); if (empty($id)) { $msg['status'] = 0; $msg['msg'] = "工单编号不能为空"; } $mOrder = WorkOrderModel::findOne(["id" => intval($id)]); if (empty($mOrder)) { $msg['status'] = 0; $msg['msg'] = "工单不存在"; } $opResult = WorkOrder::adminClose($mOrder, Yii::$app->user->id); if ($opResult) { $msg['status'] = 1; $msg['msg'] = "工单关闭成功"; } else { $msg['status'] = 0; $msg['msg'] = "工单关闭失败"; } return $this->renderJson($msg); } }