dataList(); /** * 渲染模板 */ return $this->render('index', $params); } /** * 添加回访问题 * @return string */ public function actionCreate() { return $this->render('create'); } /** * 执行添加回访问题操作 * @return string|\yii\web\Response * @throws \Exception * @throws \yii\db\Exception */ public function actionDoAdd() { $request = Yii::$app->request; $title = $request->post("title"); $type = $request->post("type"); $item_titles = $request->post("item_title"); $item_sort_orders = $request->post("item_sort_order"); $sort_order = $request->post("sort_order"); if (empty($title)) { Yii::$app->session->setFlash('danger', '回访问题不能为空'); return $this->render('create'); } $findQuestion = RepairOrderInterviewQuestionsModel::find() ->where(["title"=>$title])->andWhere(["is_deleted" => 0]) ->count(); if ($findQuestion) { Yii::$app->session->setFlash('danger', '该回访问题已经存在'); return $this->render('create'); } $transaction = Yii::$app->db->beginTransaction(); try { $interviewModel = new RepairOrderInterviewQuestionsModel(); $interviewModel->updated_at = time(); $interviewModel->title = $title; $interviewModel->type = $type; $interviewModel->sort_order = $sort_order; $result = $interviewModel->insert(); $id = $interviewModel->getAttribute("id"); $optionResult = false; if ($result && $id) { if (!empty($item_titles) && !empty($item_sort_orders)) { foreach ($item_titles as $k => $v) { if ($v && $item_sort_orders[$k]) { $optionData = array( 'content' => $v, 'question_id' => $id, 'sort_order' => $item_sort_orders[$k] ); $optionModel = new RepairOrderInterviewOptionsModel(); $optionModel->setAttributes($optionData,false); $optionResult = $optionModel->insert(); unset($optionData); } } } else { $optionResult = true; } } if ($optionResult) { $transaction->commit(); Yii::$app->session->setFlash('success', '操作成功'); return $this->redirect(['index']); } else { $transaction->rollBack(); Yii::$app->session->setFlash('danger', '保存失败'); return $this->render('create'); } } catch (Exception $exception) { $transaction->rollBack(); Yii::$app->session->setFlash('danger', '执行异常'); return $this->render('create'); } } /** * 更新回访问题 * @return string */ public function actionUpdate() { $request = Yii::$app->request; $Id = $request->get("Id"); $interviewQuestionModel = new RepairOrderInterviewQuestionsModel(); $interview = $interviewQuestionModel->getInterviewQuestionById($Id); $options = RepairOrderInterviewOptionsModel::find()->where("question_id = ". $Id)->orderBy("sort_order asc")->asArray()->all(); $params = array( 'info' => $interview, 'interviewItems' => $options ); return $this->render('update', $params); } /** * 执行更新回访问题操作 * @return string */ public function actionDoUpdate() { $request = Yii::$app->request; $id = $request->post("Id"); $title = $request->post("title"); $type = $request->post("type"); $item_titles = $request->post("item_title"); $item_sort_orders = $request->post("item_sort_order"); $item_ids = $request->post("item_id"); $sort_order = $request->post("sort_order"); if (empty($id)) { Yii::$app->session->setFlash('danger', '缺少必要参数'); return $this->redirect(['index']); } if (empty($title)) { Yii::$app->session->setFlash('danger', '回访问题不能为空'); return $this->redirect(['update',"Id"=>$id]); } $findQuestion = RepairOrderInterviewQuestionsModel::find()->where(["title" => $title])->andWhere(["<>", "id", $id])->count(); if ($findQuestion) { Yii::$app->session->setFlash('danger', '该回访问题已经存在'); return $this->redirect(['update',"Id" => $id]); } $transaction = Yii::$app->db->beginTransaction(); try { $interviewModel = RepairOrderInterviewQuestionsModel::findOne(["id" => $id]); $interviewModel->updated_at = time(); $interviewModel->title = $title; $interviewModel->type = $type; $interviewModel->sort_order = $sort_order; $result = $interviewModel->save(); $optionResult = false; if ($result) { if (!empty($item_titles) && !empty($item_sort_orders)) { foreach ($item_titles as $k => $v) { $item_id = $item_ids[$k]; if (empty($item_id)) { if ($v && $item_sort_orders[$k]) { $optionData = array( 'content' => $v, 'question_id' => $id, 'sort_order' => $item_sort_orders[$k] ); $optionModel = new RepairOrderInterviewOptionsModel(); $optionModel->setAttributes($optionData,false); $optionResult = $optionModel->insert(); unset($optionData); } } else if ($item_id) { $optionItem = RepairOrderInterviewOptionsModel::findOne($item_id); if ($v && $item_sort_orders[$k]) { $optionItem->content = $v; $optionItem->sort_order = $item_sort_orders[$k]; $optionItem->updated_at = time(); $optionResult = $optionItem->save(); } } } } else { $optionResult = true; } } if ($optionResult) { $transaction->commit(); Yii::$app->session->setFlash('success', '操作成功'); return $this->redirect(['index']); } else { $transaction->rollBack(); Yii::$app->session->setFlash('danger', '保存失败'); return $this->redirect(['update', "Id" => $id]); } } catch (Exception $exception) { $transaction->rollBack(); Yii::$app->session->setFlash('danger', '执行异常'); return $this->redirect(['update', "Id" => $id]); } } protected function dataList() { $req = Yii::$app->request; /** * 分页处理 */ $findModel = RepairOrderInterviewQuestionsModel::find(); $pageSize = $req->get("pageSize") ? (int) $req->get("pageSize") : 20; $pages = new Pagination(['totalCount' => $findModel->count(), 'pageSize' => $pageSize]); $dataList = $findModel->offset($pages->offset)->limit($pages->limit)->orderBy("sort_order asc")->asArray()->all(); foreach ($dataList as $key=>$item) { $options = RepairOrderInterviewOptionsModel::find()->where("question_id =" . $item['id'])->orderBy("sort_order asc")->all(); $optionsStr = ""; if ($item['type'] != 0) { foreach ($options as $option) { $optionsStr .= '选项' . $option->sort_order . ': ' . $option->content . "
"; } } $dataList[$key]["optionsStr"] = $optionsStr; } return [ 'dataList' => $dataList, 'pages' => $pages ]; } /** * 执行删除回访问题操作 * @return string */ public function actionDoDelete() { $request = Yii::$app->request; $id = $request->post("Id"); $interviewModel = RepairOrderInterviewQuestionsModel::findOne($id); $interviewModel->updated_at = time(); $interviewModel->is_deleted = 1; $result = $interviewModel->save(); $msg = array(); if ($result) { $msg['status'] = 1; $msg['msg'] = "删除成功"; } else { $msg['status'] = 0; $msg['msg'] = "删除失败"; } return $this->renderJson($msg); } /** * 恢复回访问题 * @return string */ public function actionDoReset() { $request = Yii::$app->request; $id = $request->post("Id"); $interviewModel = RepairOrderInterviewQuestionsModel::findOne($id); $interviewModel->updated_at = time(); $interviewModel->is_deleted = 0; $result = $interviewModel->save(); $msg = array(); if ($result) { $msg['status'] = 1; $msg['msg'] = "恢复成功"; } else { $msg['status'] = 0; $msg['msg'] = "恢复失败"; } return $this->renderJson($msg); } /** * 更新排序 * @return string */ public function actionDoSort() { $request = Yii::$app->request; $post = $request->post(); $msg = array(); foreach ($post as $id => $sort) { $interviewModel = RepairOrderInterviewQuestionsModel::findOne($id); $interviewModel->sort_order = $sort; $result = $interviewModel->save(); } if ($result) { $msg['status'] = 1; $msg['msg'] = "执行成功"; } else { $msg['status'] = 0; $msg['msg'] = "执行失败"; } return $this->renderJson($msg); } /** * 执行删除回访问题选项操作 * @return string * @throws \Exception */ public function actionDoDeleteOption() { $request = Yii::$app->request; $id = $request->post("Id"); $result = RepairOrderInterviewOptionsModel::findOne($id)->delete(); $msg = array(); if ($result) { $msg['status'] = 1; $msg['msg'] = "删除成功"; } else { $msg['status'] = 0; $msg['msg'] = "删除失败"; } return $this->renderJson($msg); } }