/** * (array|\yii\db\ActiveRecord[]) getChildren : * @param $id * @param $user_id 用户ID * @return array|\yii\db\ActiveRecord[] */ public function getChildren($id, $user_id) { $query = Unit::find(); $query->select(['id' => 'unitcode', 'text' => 'unitname']); $query->andFilterWhere(['upunitcode' => $id == '0' ? '%' : $id]); $data = $query->orderBy(['order_num' => SORT_ASC, 'unitcode' => SORT_ASC])->asArray()->all(); if (count($data) > 0) { foreach ($data as &$arr) { $user_power = self::getUserPower($user_id, $arr['id']); $user_power_icon = 'fa-lock'; $user_power_class = 'text-muted'; switch ($user_power) { case self::USER_POWER_ALLOW: $user_power_icon = 'fa-key'; $user_power_class = 'text-success'; break; case self::USER_POWER_VIEW_ALL: $user_power_icon = 'fa-eye'; $user_power_class = 'text-primary'; break; case self::USER_POWER_VIEW_DEPT: $user_power_icon = 'fa-eye-slash'; $user_power_class = 'text-info'; break; } $arr['children'] = Unit::isParent($arr['id']); $arr['icon'] = $arr['children'] ? "fa fa-folder {$user_power_class}" : "fa {$user_power_icon} {$user_power_class}"; $arr['text'] = $arr['children'] ? "<span class='" . $user_power_class . "'>{$arr['text']} <i class='fa " . $user_power_icon . "'></i></span>" : "<span class='" . $user_power_class . "'>{$arr['text']}</span>"; $arr['id'] = $arr['id'] == '%' ? '0' : $arr['id']; $arr['url'] = Url::to(['index', 'id' => $arr['id']]); } } return $data; }
public function selectOptions() { $query = Unit::find(); $arr = $query->select(['unit.id', 'unit.name', 'soldier.name sn', 'soldier.nickname'])->leftJoin('soldier', 'unit.soldier = soldier.id')->asArray()->all(); $units = ['' => 'Обрати']; foreach ($arr as $unit) { $units[$unit['id']] = "{$unit['name']} / {$unit['nickname']} ({$unit['sn']})"; } return $units; }
/** * (string) actionDataTables : datatable * @return string * @throws Exception * @throws \Exception * @throws \yii\db\Exception */ public function actionDataTables() { $responseType = Yii::$app->request->get('type'); $user_id = Yii::$app->user->identity->id; $returnData = []; switch ($responseType) { case "fetch": $returnData = Unit::find()->select(['unit.*'])->innerJoin('map_unit', '`map_unit`.`unitcode` = `unit`.`unitcode`')->andFilterWhere(['map_unit.user_id' => $user_id])->andFilterWhere(['unit.upunitcode' => Yii::$app->request->get('id')])->orderBy(['unit.order_num' => SORT_ASC, 'unit.unitcode' => SORT_ASC])->all(); return Json::encode($returnData); case "crud": $requestAction = Yii::$app->request->post('action'); switch ($requestAction) { case "create": $requestID = key(Yii::$app->request->post('data')); $requestData = Yii::$app->request->post('data')[$requestID]; $model = new Unit(); //块赋值 $model->attributes = $requestData; //返回错误信息给datatable if (!$model->validate()) { $fieldErrors = []; foreach ($model->errors as $name => $status) { $fieldErrors[] = ['name' => $name, 'status' => Json::encode($status)]; } return Json::encode(['fieldErrors' => $fieldErrors, 'data' => []]); } if ($model->save()) { $requestData['id'] = $model->id; $requestData['order_num'] = $model->order_num; $data = []; $data[] = $requestData; return Json::encode(['data' => $data]); } else { var_dump($model->errors); $error = '恢复操作发生意外!'; throw new Exception($error); } case "edit": $editID = array_keys(Yii::$app->request->post('data')); //执行事务,保存必须都成功了才行 $transaction = Unit::getDb()->beginTransaction(); //返回值 $data = []; try { foreach ($editID as $requestID) { $requestData = Yii::$app->request->post('data')[$requestID]; $model = Unit::findOne($requestID); //块赋值 $model->attributes = $requestData; //返回错误信息给datatable if (!$model->validate()) { $fieldErrors = []; foreach ($model->errors as $name => $status) { $fieldErrors[] = ['name' => $name, 'status' => Json::encode($status)]; } return Json::encode(['fieldErrors' => $fieldErrors, 'data' => []]); } $model->save(); //单个字段更新的时候 if (count($requestData) == 1 || !is_array($requestData)) { $requestData = Unit::find()->select(['*'])->where(['id' => $requestID])->one(); } else { $requestData['id'] = $requestID; $requestData['order_num'] = $model->order_num; } $data[] = $requestData; } //提交事务 $transaction->commit(); return Json::encode(['data' => $data]); } catch (\Exception $e) { $transaction->rollBack(); throw $e; } case "remove": //多选则删除全部 用deleteAll()不会触发 event: EVENT_BEFORE_DELETE 和 EVENT_AFTER_DELETE foreach (Yii::$app->request->post('data') as $removeID => $removeData) { Unit::findOne($removeID)->delete(); } return Json::encode($returnData); default: return Json::encode($returnData); } default: throw new \Exception('参数错误!'); } }
/** * (array|\yii\db\ActiveRecord[]) getChildren : 根据用户权限获取下级信息 * @param $id * @return array|\yii\db\ActiveRecord[] */ public function getChildren($id) { $user_id = Yii::$app->user->identity->id; $data = Unit::find()->select(['id' => 'unit.unitcode', 'text' => 'unit.unitname'])->innerJoin('map_unit', '`map_unit`.`unitcode` = `unit`.`unitcode`')->andFilterWhere(['map_unit.user_id' => $user_id])->andFilterWhere(['unit.upunitcode' => $id == '0' ? '%' : $id])->orderBy(['unit.order_num' => SORT_ASC, 'unit.unitcode' => SORT_ASC])->asArray()->all(); if (count($data) > 0) { foreach ($data as &$arr) { $arr['children'] = $this->isParent($arr['id']); $arr['icon'] = $arr['children'] ? 'fa fa-folder text-yellow' : 'fa fa-star-half-o text-success'; $arr['id'] = $arr['id'] == '%' ? '0' : $arr['id']; $arr['url'] = Url::to(['detail', 'id' => $arr['id']]); } } return $data; }