Procházet zdrojové kódy

后台修改用户

15954078560 před 2 roky
rodič
revize
6f123f4d4e

+ 63 - 4
application/admin/controller/user/User.php

@@ -4,6 +4,7 @@ namespace app\admin\controller\user;
 
 use app\common\controller\Backend;
 use app\common\library\Auth;
+use think\Db;
 
 /**
  * 会员管理
@@ -41,13 +42,17 @@ class User extends Backend
             }
             list($where, $sort, $order, $offset, $limit) = $this->buildparams();
             $list = $this->model
-                ->with('group')
+                ->with(['group', 'provincearea', 'cityarea', 'area', 'rank'])
                 ->where($where)
                 ->order($sort, $order)
                 ->paginate($limit);
-            foreach ($list as $k => $v) {
+            foreach ($list as $v) {
                 $v->avatar = $v->avatar ? cdnurl($v->avatar, true) : letter_avatar($v->nickname);
                 $v->hidden(['password', 'salt']);
+                $v->getRelation('provincearea')->visible(['name']);
+                $v->getRelation('cityarea')->visible(['name']);
+                $v->getRelation('area')->visible(['name']);
+                $v->getRelation('rank')->visible(['name']);
             }
             $result = array("total" => $list->total(), "rows" => $list->items());
 
@@ -72,7 +77,7 @@ class User extends Backend
      */
     public function edit($ids = null)
     {
-        if ($this->request->isPost()) {
+        /*if ($this->request->isPost()) {
             $this->token();
         }
         $row = $this->model->get($ids);
@@ -81,7 +86,61 @@ class User extends Backend
             $this->error(__('No Results were found'));
         }
 //        $this->view->assign('groupList', build_select('row[group_id]', \app\admin\model\UserGroup::column('id,name'), $row['group_id'], ['class' => 'form-control selectpicker']));
-        return parent::edit($ids);
+        return parent::edit($ids);*/
+
+        $row = $this->model->get($ids);
+        if (!$row) {
+            $this->error(__('No Results were found'));
+        }
+        $adminIds = $this->getDataLimitAdminIds();
+        if (is_array($adminIds)) {
+            if (!in_array($row[$this->dataLimitField], $adminIds)) {
+                $this->error(__('You have no permission'));
+            }
+        }
+        if ($this->request->isPost()) {
+            $params = $this->request->post("row/a");
+            if ($params) {
+                $params = $this->preExcludeFields($params);
+                $result = false;
+                $params['province_id'] = $params['province'];
+                $params['city_id'] = $params['city'];
+                $params['area_id'] = $params['area'];
+
+                Db::startTrans();
+                try {
+                    //是否采用模型验证
+                    if ($this->modelValidate) {
+                        $name = str_replace("\\model\\", "\\validate\\", get_class($this->model));
+                        $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.edit' : $name) : $this->modelValidate;
+                        $row->validateFailException(true)->validate($validate);
+                    }
+                    $result = $row->allowField(true)->save($params);
+                    Db::commit();
+                } catch (ValidateException $e) {
+                    Db::rollback();
+                    $this->error($e->getMessage());
+                } catch (PDOException $e) {
+                    Db::rollback();
+                    $this->error($e->getMessage());
+                } catch (Exception $e) {
+                    Db::rollback();
+                    $this->error($e->getMessage());
+                }
+                if ($result !== false) {
+                    $this->success();
+                } else {
+                    $this->error(__('No rows were updated'));
+                }
+            }
+            $this->error(__('Parameter %s can not be empty', ''));
+        }
+
+        $row['province_name'] = Db::name('area')->where(['id' => $row['province_id']])->value('name');
+        $row['city_name'] = Db::name('area')->where(['id' => $row['city_id']])->value('name');
+        $row['area_name'] = Db::name('area')->where(['id' => $row['area_id']])->value('name');
+        $this->view->assign("row", $row);
+        return $this->view->fetch();
     }
 
     /**

+ 20 - 0
application/admin/model/User.php

@@ -125,4 +125,24 @@ class User extends Model
         return $this->belongsTo('UserGroup', 'group_id', 'id', [], 'LEFT')->setEagerlyType(0);
     }
 
+    public function provincearea()
+    {
+        return $this->belongsTo('Area', 'province_id', 'id', [], 'LEFT')->setEagerlyType(0);
+    }
+
+    public function cityarea()
+    {
+        return $this->belongsTo('Area', 'city_id', 'id', [], 'LEFT')->setEagerlyType(0);
+    }
+
+    public function area()
+    {
+        return $this->belongsTo('Area', 'area_id', 'id', [], 'LEFT')->setEagerlyType(0);
+    }
+
+    public function rank()
+    {
+        return $this->belongsTo('Rank', 'rank_id', 'id', [], 'LEFT')->setEagerlyType(0);
+    }
+
 }

+ 99 - 0
application/admin/view/user/user/edit.html

@@ -94,6 +94,105 @@
         </div>
     </div>
     <div class="form-group">
+        <label for="c-realname" class="control-label col-xs-12 col-sm-2">{:__('真实姓名')}:</label>
+        <div class="col-xs-12 col-sm-4">
+            <input id="c-realname" data-rule="required" class="form-control" name="row[realname]" type="text" value="{$row.realname|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label for="c-idcard" class="control-label col-xs-12 col-sm-2">{:__('身份证号')}:</label>
+        <div class="col-xs-12 col-sm-4">
+            <input id="c-idcard" data-rule="required" class="form-control" name="row[idcard]" type="text" value="{$row.idcard|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('省市区')}:</label>
+        <div class="form-inline col-xs-12 col-sm-8" data-toggle="cxselect" data-selects="province,city,area">
+            <select class="province form-control" name="row[province]" data-url="ajax/area">
+                <option value="{$row.province_id}" selected="">{$row.province_name}</option>
+            </select>
+            <select class="city form-control" name="row[city]" data-url="ajax/area">
+                <option value="{$row.city_id}" selected="">{$row.city_name}</option>
+            </select>
+            <select class="area form-control" name="row[area]" data-url="ajax/area">
+                <option value="{$row.area_id}" selected="">{$row.area_name}</option>
+            </select>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('段位')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-rank_id" data-rule="" data-source="rank/index" data-field="name" class="form-control selectpage" name="row[rank_id]" type="text" value="{$row.rank_id|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label for="c-total_num" class="control-label col-xs-12 col-sm-2">{:__('总场次')}:</label>
+        <div class="col-xs-12 col-sm-4">
+            <input id="c-total_num" data-rule="required" class="form-control" name="row[total_num]" type="text" value="{$row.total_num|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label for="c-win_num" class="control-label col-xs-12 col-sm-2">{:__('胜场')}:</label>
+        <div class="col-xs-12 col-sm-4">
+            <input id="c-win_num" data-rule="required" class="form-control" name="row[win_num]" type="text" value="{$row.win_num|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label for="c-lose_num" class="control-label col-xs-12 col-sm-2">{:__('负场')}:</label>
+        <div class="col-xs-12 col-sm-4">
+            <input id="c-lose_num" data-rule="required" class="form-control" name="row[lose_num]" type="text" value="{$row.lose_num|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label for="c-power_value" class="control-label col-xs-12 col-sm-2">{:__('战力值')}:</label>
+        <div class="col-xs-12 col-sm-4">
+            <input id="c-power_value" data-rule="required" class="form-control" name="row[power_value]" type="text" value="{$row.power_value|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label for="c-mvp_num" class="control-label col-xs-12 col-sm-2">{:__('MVP次数')}:</label>
+        <div class="col-xs-12 col-sm-4">
+            <input id="c-mvp_num" data-rule="required" class="form-control" name="row[mvp_num]" type="text" value="{$row.mvp_num|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label for="c-foul_num" class="control-label col-xs-12 col-sm-2">{:__('犯规次数')}:</label>
+        <div class="col-xs-12 col-sm-4">
+            <input id="c-foul_num" data-rule="required" class="form-control" name="row[foul_num]" type="text" value="{$row.foul_num|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label for="c-block_num" class="control-label col-xs-12 col-sm-2">{:__('盖帽次数')}:</label>
+        <div class="col-xs-12 col-sm-4">
+            <input id="c-block_num" data-rule="required" class="form-control" name="row[block_num]" type="text" value="{$row.block_num|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label for="c-help_num" class="control-label col-xs-12 col-sm-2">{:__('助攻次数')}:</label>
+        <div class="col-xs-12 col-sm-4">
+            <input id="c-help_num" data-rule="required" class="form-control" name="row[help_num]" type="text" value="{$row.help_num|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label for="c-backboard_num" class="control-label col-xs-12 col-sm-2">{:__('篮板次数')}:</label>
+        <div class="col-xs-12 col-sm-4">
+            <input id="c-backboard_num" data-rule="required" class="form-control" name="row[backboard_num]" type="text" value="{$row.backboard_num|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label for="c-score" class="control-label col-xs-12 col-sm-2">{:__('得分')}:</label>
+        <div class="col-xs-12 col-sm-4">
+            <input id="c-score" data-rule="required" class="form-control" name="row[score]" type="text" value="{$row.score|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label for="c-assess" class="control-label col-xs-12 col-sm-2">{:__('评估')}:</label>
+        <div class="col-xs-12 col-sm-4">
+            <input id="c-assess" data-rule="required" class="form-control" name="row[assess]" type="text" value="{$row.assess|htmlentities}">
+        </div>
+    </div>
+
+    <div class="form-group">
         <label for="content" class="control-label col-xs-12 col-sm-2">{:__('Status')}:</label>
         <div class="col-xs-12 col-sm-8">
             {:build_radios('row[status]', ['1'=>__('Status 1'), '2'=>__('Status 2')], $row['status'])}

+ 27 - 16
public/assets/js/backend/user/user.js

@@ -23,13 +23,13 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                 sortName: 'user.id',
                 searchFormVisible: true,
                 fixedColumns: true,
-                fixedRightNumber: 1,
+                fixedRightNumber: 2,
                 columns: [
                     [
                         {checkbox: true},
                         {field: 'id', title: __('Id'), sortable: true},
                         // {field: 'group.name', title: __('Group')},
-                        {field: 'username', title: __('Username'), operate: 'LIKE'},
+                        // {field: 'username', title: __('Username'), operate: 'LIKE'},
                         {field: 'nickname', title: __('Nickname'), operate: 'LIKE'},
                         // {field: 'email', title: __('Email'), operate: 'LIKE'},
                         {field: 'mobile', title: __('Mobile'), operate: 'LIKE'},
@@ -37,7 +37,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                         // {field: 'level', title: __('Level'), operate: 'BETWEEN', sortable: true},
                         // {field: 'gender', title: __('Gender'), visible: false, searchList: {1: __('Male'), 0: __('Female')}},
                         // {field: 'score', title: __('Score'), operate: 'BETWEEN', sortable: true},
-                        {field: 'money', title: __('余额'), operate: false},
+                        // {field: 'money', title: __('余额'), operate: false},
                         {field: 'successions', title: __('Successions'), visible: false, operate: 'BETWEEN', sortable: true},
                         {field: 'maxsuccessions', title: __('Maxsuccessions'), visible: false, operate: 'BETWEEN', sortable: true},
                         {field: 'logintime', title: __('Logintime'), formatter: Table.api.formatter.datetime, operate: 'RANGE', addclass: 'datetimerange', sortable: true},
@@ -45,24 +45,35 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                         {field: 'jointime', title: __('Jointime'), formatter: Table.api.formatter.datetime, operate: 'RANGE', addclass: 'datetimerange', sortable: true},
                         {field: 'joinip', title: __('Joinip'), formatter: Table.api.formatter.search},
                         {field: 'realname', title: __('真实姓名'), operate: 'LIKE'},
-                        {field: 'gender', title: __('Gender'), searchList: {1: __('男'), 2: __('女')}, formatter: Table.api.formatter.status,
-                            custom: {1:'success', "2": 'info'}
-                        },
-                        {field: 'birthday', title: __('生日'), formatter: Table.api.formatter.datetime, operate: 'RANGE', addclass: 'datetimerange', sortable: true},
                         {field: 'idcard', title: __('身份证号'), operate: 'LIKE'},
-                        {field: 'passport', title: __('护照号'), operate: 'LIKE'},
-                        {field: 'emergencycontact', title: __('紧急联系人'), operate: 'LIKE'},
-                        {field: 'contactmobile', title: __('紧急联系方式'), operate: 'LIKE'},
-                        {field: 'outdoorduration', title: __('户外时长'), operate: 'LIKE'},
-                        {field: 'invite_no', title: __('用户邀请码'), operate: 'LIKE'},
-                        {field: 'growthvalue', title: __('会员成长值')},
-                        {field: 'growthlevel', title: __('成长值会员ID')},
-                        {field: 'experiencelevel', title: __('体验会员ID')},
+                        // {field: 'gender', title: __('Gender'), searchList: {1: __('男'), 2: __('女')}, formatter: Table.api.formatter.status,
+                        //     custom: {1:'success', "2": 'info'}
+                        // },
+                        {field: 'birthday', title: __('生日'), formatter: Table.api.formatter.datetime, operate: 'RANGE', addclass: 'datetimerange', sortable: true},
+                        {field: 'height', title: __('身高cm')},
+                        {field: 'weight', title: __('体重kg')},
+                        {field: 'provincearea.name', title: __('省'), operate: 'LIKE'},
+                        {field: 'cityarea.name', title: __('市'), operate: 'LIKE'},
+                        {field: 'area.name', title: __('区'), operate: 'LIKE'},
+                        {field: 'excel_position', title: __('擅长位置')},
+                        {field: 'rank.name', title: __('段位'), operate: 'LIKE'},
+                        /*{field: 'experiencelevel', title: __('体验会员ID')},
                         {field: 'experiencetime', title: __('体验会员到期时间'), formatter: Table.api.formatter.datetime, operate: 'RANGE', addclass: 'datetimerange', sortable: true},
                         {field: 'maxlevel', title: __('实际有效会员ID')},
-                        {field: 'freenumber', title: __('会员免费参加活动次数')},
+                        {field: 'freenumber', title: __('会员免费参加活动次数')},*/
                         // {field: 'is_auth', title: __('实名认证状态'), formatter: Table.api.formatter.status, searchList: {"1":'待审核',"2":'通过','3':'拒绝'},
                         //     custom: {2:'success',3:'danger'}},
+                        {field: 'total_num', title: __('总场次'), operate: false},
+                        {field: 'win_num', title: __('胜场'), operate: false},
+                        {field: 'lose_num', title: __('负场'), operate: false},
+                        {field: 'power_value', title: __('战力值'), operate: false},
+                        {field: 'mvp_num', title: __('MVP次数'), operate: false},
+                        {field: 'foul_num', title: __('犯规次数'), operate: false},
+                        {field: 'block_num', title: __('盖帽次数'), operate: false},
+                        {field: 'help_num', title: __('助攻次数'), operate: false},
+                        {field: 'backboard_num', title: __('篮板次数'), operate: false},
+                        {field: 'score', title: __('得分'), operate: false},
+                        {field: 'assess', title: __('评估'), operate: false},
                         {field: 'status', title: __('Status'), formatter: Table.api.formatter.status, searchList: {"1":__('Status 1'),"2":__('Status 2')},
                             custom: {1:'success',2:'danger'}},
                         {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}