Exemple #1
0
 /**
  * (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;
 }
Exemple #2
0
 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;
 }
Exemple #3
0
 /**
  * (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('参数错误!');
     }
 }
Exemple #4
0
 /**
  * (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;
 }