Browse Source

fix:用户编辑

super-yimizi 2 months ago
parent
commit
77b3365f4b

+ 149 - 135
application/admin/view/user/user/edit.html

@@ -8,108 +8,115 @@
             <h3 class="panel-title">基本信息</h3>
         </div>
         <div class="panel-body">
-            <div class="form-group">
-                <label class="control-label col-xs-12 col-sm-2">{:__('Group')}:</label>
-                <div class="col-xs-12 col-sm-4">
-                    {$groupList}
-                </div>
-            </div>
-            <div class="form-group">
-                <label for="c-username" class="control-label col-xs-12 col-sm-2">{:__('Username')}:</label>
-                <div class="col-xs-12 col-sm-4">
-                    <input id="c-username" data-rule="required" class="form-control" name="row[username]" type="text" value="{$row.username|htmlentities}">
-                </div>
-            </div>
-            <div class="form-group">
-                <label for="c-nickname" class="control-label col-xs-12 col-sm-2">{:__('Nickname')}:</label>
-                <div class="col-xs-12 col-sm-4">
-                    <input id="c-nickname" data-rule="required" class="form-control" name="row[nickname]" type="text" value="{$row.nickname|htmlentities}">
-                </div>
-            </div>
-            <div class="form-group">
-                <label for="c-password" class="control-label col-xs-12 col-sm-2">{:__('Password')}:</label>
-                <div class="col-xs-12 col-sm-4">
-                    <input id="c-password" data-rule="password" class="form-control" name="row[password]" type="password" value="" placeholder="{:__('Leave password blank if dont want to change')}" autocomplete="new-password" />
-                </div>
-            </div>
-            <div class="form-group">
-                <label for="c-email" class="control-label col-xs-12 col-sm-2">{:__('Email')}:</label>
-                <div class="col-xs-12 col-sm-4">
-                    <input id="c-email" data-rule="email" class="form-control" name="row[email]" type="text" value="{$row.email|htmlentities}">
-                </div>
-            </div>
-            <div class="form-group">
-                <label for="c-mobile" class="control-label col-xs-12 col-sm-2">{:__('Mobile')}:</label>
-                <div class="col-xs-12 col-sm-4">
-                    <input id="c-mobile" data-rule="mobile" class="form-control" name="row[mobile]" type="text" value="{$row.mobile|htmlentities}">
-                </div>
-            </div>
-            <div class="form-group">
-                <label for="c-avatar" class="control-label col-xs-12 col-sm-2">{:__('Avatar')}:</label>
-                <div class="col-xs-12 col-sm-8">
-                    <div class="input-group">
-                        <input id="c-avatar" data-rule="" class="form-control" size="50" name="row[avatar]" type="text" value="{$row.avatar|htmlentities}">
-                        <div class="input-group-addon no-border no-padding">
-                            <span><button type="button" id="faupload-avatar" class="btn btn-danger faupload" data-input-id="c-avatar" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp" data-multiple="false" data-preview-id="p-avatar"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
-                            <span><button type="button" id="fachoose-avatar" class="btn btn-primary fachoose" data-input-id="c-avatar" data-mimetype="image/*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
-                        </div>
-                        <span class="msg-box n-right" for="c-avatar"></span>
-                    </div>
-                    <ul class="row list-inline faupload-preview" id="p-avatar"></ul>
-                </div>
-            </div>
-            <div class="form-group">
-                <label for="c-level" class="control-label col-xs-12 col-sm-2">{:__('Level')}:</label>
-                <div class="col-xs-12 col-sm-4">
-                    <input id="c-level" data-rule="required" class="form-control" name="row[level]" type="number" value="{$row.level|htmlentities}">
-                </div>
-            </div>
-                         <div class="form-group">
-                 <label class="control-label col-xs-12 col-sm-2">{:__('Gender')}:</label>
-                 <div class="col-xs-12 col-sm-8">
-                     {:build_radios('row[gender]', ['1'=>'男', '2'=>'女', '0'=>'未知'], $row['gender'])}
-                 </div>
-             </div>
-            <div class="form-group">
-                <label for="c-birthday" class="control-label col-xs-12 col-sm-2">{:__('Birthday')}:</label>
-                <div class="col-xs-12 col-sm-4">
-                    <input id="c-birthday" data-rule="" class="form-control datetimepicker" data-date-format="YYYY-MM-DD" data-use-current="true" name="row[birthday]" type="text" value="{$row.birthday|htmlentities}">
-                </div>
-            </div>
-            <div class="form-group">
-                <label for="c-bio" class="control-label col-xs-12 col-sm-2">{:__('Bio')}:</label>
-                <div class="col-xs-12 col-sm-8">
-                    <input id="c-bio" data-rule="" class="form-control" name="row[bio]" type="text" value="{$row.bio|htmlentities}">
-                </div>
-            </div>
-            <div class="form-group">
-                <label for="c-money" class="control-label col-xs-12 col-sm-2">{:__('Money')}:</label>
-                <div class="col-xs-12 col-sm-4">
-                    <input id="c-money" data-rule="required" class="form-control" name="row[money]" type="number" value="{$row.money|htmlentities}">
-                </div>
-            </div>
-            <div class="form-group">
-                <label for="c-score" class="control-label col-xs-12 col-sm-2">{:__('Score')}:</label>
-                <div class="col-xs-12 col-sm-4">
-                    <input id="c-score" data-rule="required" class="form-control" name="row[score]" type="number" value="{$row.score|htmlentities}">
-                </div>
-            </div>
-            <div class="form-group">
-                <label for="c-successions" class="control-label col-xs-12 col-sm-2">{:__('Successions')}:</label>
-                <div class="col-xs-12 col-sm-4">
-                    <input id="c-successions" data-rule="required" class="form-control" name="row[successions]" type="number" value="{$row.successions|htmlentities}">
+            <div class="row">
+                <!-- 左列 -->
+                <div class="col-md-6">
+                    <div class="form-group">
+                        <label class="control-label col-xs-12 col-sm-4">{:__('Group')}:</label>
+                        <div class="col-xs-12 col-sm-8">
+                            {$groupList}
+                        </div>
+                    </div>
+                    <div class="form-group">
+                        <label for="c-username" class="control-label col-xs-12 col-sm-4">{:__('Username')}:</label>
+                        <div class="col-xs-12 col-sm-8">
+                            <input id="c-username" data-rule="required" class="form-control" name="row[username]" type="text" value="{$row.username|htmlentities}">
+                        </div>
+                    </div>
+                    <div class="form-group">
+                        <label for="c-nickname" class="control-label col-xs-12 col-sm-4">{:__('Nickname')}:</label>
+                        <div class="col-xs-12 col-sm-8">
+                            <input id="c-nickname" data-rule="required" class="form-control" name="row[nickname]" type="text" value="{$row.nickname|htmlentities}">
+                        </div>
+                    </div>
+                    <div class="form-group">
+                        <label for="c-password" class="control-label col-xs-12 col-sm-4">{:__('Password')}:</label>
+                        <div class="col-xs-12 col-sm-8">
+                            <input id="c-password" data-rule="password" class="form-control" name="row[password]" type="password" value="" placeholder="{:__('Leave password blank if dont want to change')}" autocomplete="new-password" />
+                        </div>
+                    </div>
+                    <div class="form-group">
+                        <label for="c-email" class="control-label col-xs-12 col-sm-4">{:__('Email')}:</label>
+                        <div class="col-xs-12 col-sm-8">
+                            <input id="c-email" data-rule="email" class="form-control" name="row[email]" type="text" value="{$row.email|htmlentities}">
+                        </div>
+                    </div>
+                    <div class="form-group">
+                        <label for="c-mobile" class="control-label col-xs-12 col-sm-4">{:__('Mobile')}:</label>
+                        <div class="col-xs-12 col-sm-8">
+                            <input id="c-mobile" data-rule="mobile" class="form-control" name="row[mobile]" type="text" value="{$row.mobile|htmlentities}">
+                        </div>
+                    </div>
+                    <div class="form-group">
+                        <label for="c-level" class="control-label col-xs-12 col-sm-4">{:__('Level')}:</label>
+                        <div class="col-xs-12 col-sm-8">
+                            <input id="c-level" data-rule="required" class="form-control" name="row[level]" type="number" value="{$row.level|htmlentities}">
+                        </div>
+                    </div>
                 </div>
-            </div>
-            <div class="form-group">
-                <label for="c-maxsuccessions" class="control-label col-xs-12 col-sm-2">{:__('Maxsuccessions')}:</label>
-                <div class="col-xs-12 col-sm-4">
-                    <input id="c-maxsuccessions" data-rule="required" class="form-control" name="row[maxsuccessions]" type="number" value="{$row.maxsuccessions|htmlentities}">
+                
+                <!-- 右列 -->
+                <div class="col-md-6">
+                    <div class="form-group">
+                        <label class="control-label col-xs-12 col-sm-4">{:__('Gender')}:</label>
+                        <div class="col-xs-12 col-sm-8">
+                            {:build_radios('row[gender]', ['1'=>'男', '2'=>'女', '0'=>'未知'], $row['gender'])}
+                        </div>
+                    </div>
+                    <div class="form-group">
+                        <label for="c-birthday" class="control-label col-xs-12 col-sm-4">{:__('Birthday')}:</label>
+                        <div class="col-xs-12 col-sm-8">
+                            <input id="c-birthday" data-rule="" class="form-control datetimepicker" data-date-format="YYYY-MM-DD" data-use-current="true" name="row[birthday]" type="text" value="{$row.birthday|htmlentities}">
+                        </div>
+                    </div>
+                    <div class="form-group">
+                        <label for="c-bio" class="control-label col-xs-12 col-sm-4">{:__('Bio')}:</label>
+                        <div class="col-xs-12 col-sm-8">
+                            <input id="c-bio" data-rule="" class="form-control" name="row[bio]" type="text" value="{$row.bio|htmlentities}">
+                        </div>
+                    </div>
+                    <div class="form-group">
+                        <label for="c-successions" class="control-label col-xs-12 col-sm-4">{:__('Successions')}:</label>
+                        <div class="col-xs-12 col-sm-8">
+                            <input id="c-successions" data-rule="required" class="form-control" name="row[successions]" type="number" value="{$row.successions|htmlentities}">
+                        </div>
+                    </div>
+                    <div class="form-group">
+                        <label for="c-maxsuccessions" class="control-label col-xs-12 col-sm-4">{:__('Maxsuccessions')}:</label>
+                        <div class="col-xs-12 col-sm-8">
+                            <input id="c-maxsuccessions" data-rule="required" class="form-control" name="row[maxsuccessions]" type="number" value="{$row.maxsuccessions|htmlentities}">
+                        </div>
+                    </div>
+                    <div class="form-group">
+                        <label class="control-label col-xs-12 col-sm-4">{:__('Status')}:</label>
+                        <div class="col-xs-12 col-sm-8">
+                            <div class="radio">
+                                {foreach name="statusList" item="vo"}
+                                <label for="row[status]-{$key|htmlentities}"><input id="row[status]-{$key|htmlentities}" name="row[status]" type="radio" value="{$key|htmlentities}" {in name="key" value="1"}checked{/in} /> {$vo|htmlentities}</label>
+                                {/foreach}
+                            </div>
+                        </div>
+                    </div>
                 </div>
             </div>
-            <div class="form-group">
-                <label class="control-label col-xs-12 col-sm-2">{:__('Status')}:</label>
-                <div class="col-xs-12 col-sm-8">
-                    {:build_radios('row[status]', ['normal'=>__('Normal'), 'hidden'=>__('Hidden')], $row['status'])}
+            
+            <!-- 头像上传 - 单独一行 -->
+            <div class="row">
+                <div class="col-md-6">
+                    <div class="form-group">
+                        <label for="c-avatar" class="control-label col-xs-12 col-sm-2">{:__('Avatar')}:</label>
+                        <div class="col-xs-12 col-sm-10">
+                            <div class="input-group">
+                                <input id="c-avatar" data-rule="" class="form-control" size="50" name="row[avatar]" type="text" value="{$row.avatar|htmlentities}">
+                                <div class="input-group-addon no-border no-padding">
+                                    <span><button type="button" id="faupload-avatar" class="btn btn-danger faupload" data-input-id="c-avatar" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp" data-multiple="false" data-preview-id="p-avatar"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                                    <span><button type="button" id="fachoose-avatar" class="btn btn-primary fachoose" data-input-id="c-avatar" data-mimetype="image/*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                                </div>
+                                <span class="msg-box n-right" for="c-avatar"></span>
+                            </div>
+                            <ul class="row list-inline faupload-preview" id="p-avatar"></ul>
+                        </div>
+                    </div>
                 </div>
             </div>
         </div>
@@ -119,44 +126,53 @@
     <div class="panel panel-info login-info">
         <div class="panel-heading">
             <h3 class="panel-title">
-                <i class="fa fa-info-circle"></i> 登录信息 (只读)
+                <i class="fa fa-info-circle"></i> 登录信息
             </h3>
         </div>
         <div class="panel-body">
-            <div class="form-group">
-                <label class="control-label col-xs-12 col-sm-2">{:__('Prevtime')}:</label>
-                <div class="col-xs-12 col-sm-4">
-                    <p class="form-control-static text-muted">{$row.prevtime|datetime}</p>
-                </div>
-            </div>
-            <div class="form-group">
-                <label class="control-label col-xs-12 col-sm-2">{:__('Logintime')}:</label>
-                <div class="col-xs-12 col-sm-4">
-                    <p class="form-control-static text-muted">{$row.logintime|datetime}</p>
-                </div>
-            </div>
-            <div class="form-group">
-                <label class="control-label col-xs-12 col-sm-2">{:__('Loginip')}:</label>
-                <div class="col-xs-12 col-sm-4">
-                    <p class="form-control-static text-muted">{$row.loginip|htmlentities}</p>
-                </div>
-            </div>
-            <div class="form-group">
-                <label class="control-label col-xs-12 col-sm-2">{:__('Loginfailure')}:</label>
-                <div class="col-xs-12 col-sm-4">
-                    <p class="form-control-static text-muted">{$row.loginfailure|htmlentities}</p>
-                </div>
-            </div>
-            <div class="form-group">
-                <label class="control-label col-xs-12 col-sm-2">{:__('Joinip')}:</label>
-                <div class="col-xs-12 col-sm-4">
-                    <p class="form-control-static text-muted">{$row.joinip|htmlentities}</p>
+            <div class="row">
+                <!-- 左列 -->
+                <div class="col-md-6">
+                    <div class="form-group">
+                        <label class="control-label col-xs-12 col-sm-4">{:__('Prevtime')}:</label>
+                        <div class="col-xs-12 col-sm-8">
+                            <p class="form-control-static text-muted">{$row.prevtime|datetime}</p>
+                        </div>
+                    </div>
+                    <div class="form-group">
+                        <label class="control-label col-xs-12 col-sm-4">{:__('Logintime')}:</label>
+                        <div class="col-xs-12 col-sm-8">
+                            <p class="form-control-static text-muted">{$row.logintime|datetime}</p>
+                        </div>
+                    </div>
+                    <div class="form-group">
+                        <label class="control-label col-xs-12 col-sm-4">{:__('Loginip')}:</label>
+                        <div class="col-xs-12 col-sm-8">
+                            <p class="form-control-static text-muted">{$row.loginip|htmlentities}</p>
+                        </div>
+                    </div>
                 </div>
-            </div>
-            <div class="form-group">
-                <label class="control-label col-xs-12 col-sm-2">{:__('Jointime')}:</label>
-                <div class="col-xs-12 col-sm-4">
-                    <p class="form-control-static text-muted">{$row.jointime|datetime}</p>
+                
+                <!-- 右列 -->
+                <div class="col-md-6">
+                    <div class="form-group">
+                        <label class="control-label col-xs-12 col-sm-4">{:__('Loginfailure')}:</label>
+                        <div class="col-xs-12 col-sm-8">
+                            <p class="form-control-static text-muted">{$row.loginfailure|htmlentities}</p>
+                        </div>
+                    </div>
+                    <div class="form-group">
+                        <label class="control-label col-xs-12 col-sm-4">{:__('Joinip')}:</label>
+                        <div class="col-xs-12 col-sm-8">
+                            <p class="form-control-static text-muted">{$row.joinip|htmlentities}</p>
+                        </div>
+                    </div>
+                    <div class="form-group">
+                        <label class="control-label col-xs-12 col-sm-4">{:__('Jointime')}:</label>
+                        <div class="col-xs-12 col-sm-8">
+                            <p class="form-control-static text-muted">{$row.jointime|datetime}</p>
+                        </div>
+                    </div>
                 </div>
             </div>
         </div>
@@ -205,8 +221,6 @@
                                 <td>
                                     <small class="text-muted">{$third.logintime|datetime}</small>
                                 </td>
-                                
-                               
                             </tr>
                             {/volist}
                         </tbody>

+ 1 - 1
application/admin/view/user/user/index.html

@@ -6,7 +6,7 @@
             <div class="tab-pane fade active in" id="one">
                 <div class="widget-body no-padding">
                     <div id="toolbar" class="toolbar">
-                        {:build_toolbar('refresh,edit,del')}
+                        {:build_toolbar('refresh,del')}
                         <div class="dropdown btn-group {:$auth->check('user/user/multi')?'':'hide'}">
                             <a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-cog"></i> {:__('More')}</a>
                             <ul class="dropdown-menu text-left" role="menu">

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

@@ -80,28 +80,8 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
             Controller.api.bindevent();
         },
         edit: function () {
-            // 为第三方信息卡片添加样式
+            // 双列布局样式优化
             $(document).ready(function(){
-                // 添加第三方信息卡片样式
-                $('.third-info-card').each(function(){
-                    $(this).hover(
-                        function(){
-                            $(this).css({
-                                'box-shadow': '0 4px 8px rgba(0,0,0,0.1)',
-                                'transform': 'translateY(-2px)',
-                                'transition': 'all 0.3s ease'
-                            });
-                        },
-                        function(){
-                            $(this).css({
-                                'box-shadow': '0 1px 3px rgba(0,0,0,0.1)',
-                                'transform': 'translateY(0)',
-                                'transition': 'all 0.3s ease'
-                            });
-                        }
-                    );
-                });
-                
                 // 为登录信息面板添加样式
                 $('.login-info .form-control-static').each(function(){
                     $(this).css({
@@ -133,21 +113,62 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                     $(this).html(icon + $(this).text());
                 });
                 
-                // 为第三方信息卡片添加响应式处理
-                function adjustThirdInfoCards() {
+                // 添加第三方信息表格样式
+                $('.third-info-table').each(function(){
+                    $(this).addClass('table-hover');
+                });
+                
+                // 双列布局响应式处理
+                function adjustDualColumnLayout() {
                     if ($(window).width() < 768) {
-                        $('.third-info-card').parent().removeClass('col-md-6').addClass('col-md-12');
+                        // 小屏幕时保持双列但调整比例
+                        $('.form-horizontal .col-md-6').each(function(){
+                            $(this).addClass('col-xs-12').removeClass('col-md-6');
+                        });
+                        
+                        // 调整label和input的比例
+                        $('.form-horizontal .col-sm-4').each(function(){
+                            $(this).removeClass('col-sm-4').addClass('col-sm-3');
+                        });
+                        $('.form-horizontal .col-sm-8').each(function(){
+                            $(this).removeClass('col-sm-8').addClass('col-sm-9');
+                        });
                     } else {
-                        $('.third-info-card').parent().removeClass('col-md-12').addClass('col-md-6');
+                        // 大屏幕时恢复双列布局
+                        $('.form-horizontal .col-xs-12').each(function(){
+                            if (!$(this).hasClass('col-md-12')) {
+                                $(this).addClass('col-md-6').removeClass('col-xs-12');
+                            }
+                        });
+                        
+                        // 恢复label和input的比例
+                        $('.form-horizontal .col-sm-3').each(function(){
+                            $(this).removeClass('col-sm-3').addClass('col-sm-4');
+                        });
+                        $('.form-horizontal .col-sm-9').each(function(){
+                            $(this).removeClass('col-sm-9').addClass('col-sm-8');
+                        });
                     }
                 }
                 
                 // 初始调整
-                adjustThirdInfoCards();
+                adjustDualColumnLayout();
                 
                 // 窗口大小改变时调整
                 $(window).resize(function() {
-                    adjustThirdInfoCards();
+                    adjustDualColumnLayout();
+                });
+                
+                // 为面板添加间距
+                $('.panel').not(':last-child').css('margin-bottom', '20px');
+                
+                // 为双列布局添加分隔线(可选)
+                $('.panel-body .row .col-md-6:first-child').css({
+                    'border-right': '1px solid #eee',
+                    'padding-right': '20px'
+                });
+                $('.panel-body .row .col-md-6:last-child').css({
+                    'padding-left': '20px'
                 });
             });