Browse Source

1、公用数据窗口优化;
2、停用气分析UI调整;
3、增加用户信息查询功能

liangluogis 3 months ago
parent
commit
808a06fc72

+ 38 - 15
src/widgets/DataPanel/Widget.ts

@@ -86,7 +86,7 @@ class DataPanel extends BaseWidget {
     // 启动函数
     startup() {
         let currentSelector = this.AppX.appConfig.mainContainerMinor;
-        $(currentSelector).append(this.template.split('$$')[0] );
+        $(currentSelector).append(this.template.split('$$')[0]);
         this.domObj = $('.' + this.baseClass)
         // this.setHtml(this.template);
         this.configure();
@@ -189,11 +189,22 @@ class DataPanel extends BaseWidget {
         this.domObj.on('click', '.save2csv', (e) => {
             this.showLoading();
             try {
-                this.saveFile();
+                // this.saveFile();
+                // this.hideLoading();
+
+                //待优化,使用后台独立线程,避免UI线程被锁定,无法进行其他操作
+                setTimeout(() => {
+                    if (!this.isInnerWidgetLoaded) {
+                        this.isInnerWidgetLoaded = true;//更新状态标识
+
+                        this.saveFile();
+                        this.hideLoading();
+                    }
+                }, this.config.loadingDelay);
             }
-            catch(err) { }
+            catch (err) { }
             finally {
-                this.hideLoading();
+                // this.hideLoading();
             }
         });
     }
@@ -332,6 +343,7 @@ class DataPanel extends BaseWidget {
         this.refitTableHeight();
         this.cssChange();
         this.closeHalfPanel();
+        this.hideLoading();//隐藏可能存在的进度栏
     }
 
     // 初始化tab
@@ -1056,22 +1068,33 @@ class DataPanel extends BaseWidget {
         }
     }
     /**
-     * 
+     * 显示进度提示栏
      */
     showLoading() {
-        setTimeout(() => {
-            if (!this.isInnerWidgetLoaded) {
-                // this.domObj.find('.widget-datapanel').append(this.template.split('$$')[1]);//在数据窗格插入进度消息元素
-                this.domObj.append(this.template.split('$$')[1]);//在数据窗格插入进度消息元素
-                this.loadingObj = this.domObj.find('.loadingbg');
-                this.loadingObj.show();
-            }
-        }, this.config.loadingDelay);
+        // setTimeout(() => {
+        //     if (!this.isInnerWidgetLoaded) {
+        //         // this.domObj.find('.widget-datapanel').append(this.template.split('$$')[1]);//在数据窗格插入进度消息元素
+        //         this.domObj.append(this.template.split('$$')[1]);//在数据窗格插入进度消息元素
+        //         this.loadingObj = this.domObj.find('.loadingbg');
+        //         this.loadingObj.show();
+        //     }
+        // }, this.config.loadingDelay);
+
+        // if (!this.isInnerWidgetLoaded) {
+            // this.domObj.find('.widget-datapanel').append(this.template.split('$$')[1]);//在数据窗格插入进度消息元素
+            this.domObj.append(this.template.split('$$')[1]);//在数据窗格插入进度消息元素
+            this.loadingObj = this.domObj.find('.loadingbg');
+            this.loadingObj.show();
+        // }
     }
     /**
-     * 
+     * 隐藏进度提示栏
      */
     hideLoading() {
-        this.loadingObj.remove();
+        if (this.loadingObj) {
+            this.loadingObj.remove();
+        }
+        this.loadingObj = null;
+        this.isInnerWidgetLoaded = false;
     }
 }

+ 5 - 1
src/widgets/DataPanel/css/style.scss

@@ -487,7 +487,7 @@
     .loadingbg {
         position: absolute;
         left: 0;
-        top: 0;
+        top: 50px;
         padding: 0;
         margin: 0;
         width: 100%;
@@ -496,5 +496,9 @@
         background: rgba(240, 237, 229, 0.43);
         font-size: 15px;
         font-weight: 600;
+
+        display: flex;
+        align-items: center;
+        justify-content: center;
     }
 }

+ 3 - 2
src/widgets/GasStopAnalysis/Widget.html

@@ -43,7 +43,7 @@
                     分析结果
                     <span class="glyphicon glyphicon-question-sign" title="分析的结果展示。将会自动在地图上高亮显示结果,点击查看详细结果可显示表格。"></span>
                 </legend>
-                <div class="foldable">
+                <div class="foldable" style="height: 470px;overflow: auto;">
                     <p>
                         分析结果概览
                         <span class="glyphicon pull-right view-map glyphicon-unchecked">
@@ -54,10 +54,11 @@
                         <tbody class="analyse-info-tbody">
                         </tbody>
                     </table>
-                    <button type="button" class="btn btn-sm btn-primary btn-block view-details disabled">查看详细结果</button>
+                    <!-- <button type="button" class="btn btn-sm btn-primary btn-block view-details disabled">查看详细结果</button> -->
                 </div>
             </fieldset>
         </div>
+        <button type="button" class="btn btn-sm btn-primary btn-block view-details disabled">查看详细结果</button>
         <button type="button" class="btn btn-sm btn-danger btn-block clean-all">清除所有</button>
     </form>
 </div>

+ 254 - 0
src/widgets/UserManagementQuery/Widget.html

@@ -0,0 +1,254 @@
+<div class="widget-UserManagementQuery">
+    <div id="myTabContent" class="tab-content">
+        <div class="form-inline djinfo-tool">
+            <div class="form-group searchInfo">
+                <label for="">用户名:</label>
+                <input type="text" class="form-control RealName control-width" placeholder="请输入用户名"
+                    v-model="searchInfo.RealName" />
+                <label for="">单位:</label>
+                <select type="text" class="form-control DeptId control-width " name="DeptId" data-bv-trigger="blur"
+                    placeholder="请选择编码" v-model="searchInfo.DeptId">
+                    <template v-for="(item, index) in option.deptids">
+                        <option :value="item.key">{{item.label}}</option>
+                    </template>
+                </select>
+            </div>
+            <div id="toolbar" class="btn-group btn-group toolbar">
+                <button type="button" class="btn btn-default btn-primary btn_search">
+                    <span class="" aria-hidden="true"></span>查询
+                </button>
+                <!-- <button type="button" class="btn btn-default btn-primary btn_add">
+                    <span class="" aria-hidden="true"></span>新增用户
+                </button>
+                <button type="button" class="btn btn-default btn-primary update_add">
+                    <span class="" aria-hidden="true"></span>修改用户
+                </button>
+                <button type="button" class="btn btn-default btn-danger btn_delete">
+                    <span class="" aria-hidden="true"></span>删除用户
+                </button>
+                <button type="button" class="btn btn-default btn-primary update_state">
+                    <span class="" aria-hidden="true"></span>启用设置
+                </button>
+                <button type="button" class="btn btn-default btn-primary update_role">
+                    <span class="" aria-hidden="true"></span>角色绑定
+                </button>
+                <button type="button" class="btn btn-default btn-primary update_lock">
+                    <span class="" aria-hidden="true"></span>用户解锁
+                </button>
+                <button type="button" class="btn btn-default btn-primary"
+                    onclick="window.location.href = '/widgets/UserManagementQuery/用户新增模板.xlsx'">模板下载</button>
+                <input type="file" class="importFile" accept=".xls,.xlsx" style="display: none;" />
+                <button type="button" class="btn btn-default btn-primary import">
+                    <span class="" aria-hidden="true"></span>批量导入
+                </button> -->
+            </div>
+        </div>
+        <div class="form-inline linesplit"></div>
+        <div class="djinfo">
+            <table id="layerconfig" class="table table-striped table-condensed table-hover table-bordered nowrap"
+                cellspacing="0" style="width:100% !important;">
+                <thead>
+                    <tr>
+                        <th width="60" class="center">
+                            <input type="checkbox" name="all_check" id="all_check" />
+                        </th>
+                        <th>登录名</th>
+                        <th>用户名</th>
+                        <th>联系电话</th>
+                        <th>邮箱</th>
+                        <th>角色</th>
+                        <th>单位</th>
+                        <th>是否启用</th>
+                        <th>是否锁定</th>
+                    </tr>
+                </thead>
+            </table>
+        </div>
+        <div class="djfieldinfo">
+
+        </div>
+    </div>
+</div>
+$$
+<div id="widget-UserManagementAddInfo" class="form-horizontal">
+    <div class="form-inline">
+        <label class=" control-label font_style"><span>登录名:</span></label>
+        <div class="form-group">
+            <input type="text" class="form-control name control-width" name="name" @blur="isExists()"
+                data-bv-trigger="blur" data-bv-message="The title is not valid" required data-bv-notempty-message="不能为空"
+                data-bv-stringlength="true" data-bv-stringlength-max="20" data-bv-stringlength-message="字段长度不得超过20 "
+                placeholder="请输入用户名" v-model="data.name" />
+        </div>
+    </div>
+    <div class="form-inline">
+        <label class=" control-label font_style"><span>密码:</span></label>
+        <div class="form-group">
+            <input type="password" class="form-control password control-width" name="password" data-bv-trigger="blur"
+                data-bv-message="The title is not valid" required data-bv-notempty-message="不能为空" placeholder="请输入密码"
+                v-model="data.password" />
+        </div>
+    </div>
+    <div class="form-inline">
+        <label class=" control-label font_style"><span>用户名:</span></label>
+        <div class="form-group">
+            <input type="text" class="form-control realname control-width" name="realname" data-bv-trigger="blur"
+                data-bv-message="The title is not valid" required data-bv-notempty-message="不能为空"
+                data-bv-stringlength="true" data-bv-stringlength-max="20" data-bv-stringlength-message="字段长度不得超过20 "
+                placeholder="请输入真实姓名" v-model="data.realname" />
+        </div>
+    </div>
+    <div class="form-inline">
+        <label class=" control-label font_style"><span>联系电话:</span></label>
+        <div class="form-group">
+            <input type="text" class="form-control phone control-width" name="phone" data-bv-trigger="blur"
+                v-model="data.phone" />
+        </div>
+    </div>
+    <div class="form-inline">
+        <label class=" control-label font_style"><span>头像:</span></label>
+        <div class=" input-group">
+            <input type="file" class="form-control file  control-width" name="file" data-bv-trigger="blur"
+                v-model="data.file" />
+        </div>
+    </div>
+    <div class="form-inline">
+        <label class=" control-label font_style"><span>email:</span></label>
+        <div class="form-group">
+            <input type="text" class="form-control email control-width" name="email" data-bv-trigger="blur"
+                v-model="data.email" />
+        </div>
+    </div>
+    <div class="form-inline addInput">
+        <label class="  control-label font_style "><span>单位:</span></label>
+        <div class="form-group">
+            <select type="text" class="form-control deptid control-width " name="deptid" data-bv-trigger="blur"
+                placeholder="请选择单位" v-model="data.deptid">
+                <template v-for="(item, index) in option.deptids">
+                    <option :value="item.key">{{item.label}}</option>
+                </template>
+            </select>
+        </div>
+    </div>
+    <div class="form-inline ">
+        <label class="  control-label font_style "><span>用户管理权限:</span></label>
+        <div class="form-group">
+            <select type="text" class="form-control userLevel control-width " name="userLevel" data-bv-trigger="blur"
+                placeholder="请选择单位" v-model="data.userLevel">
+                <template v-for="(item, index) in option.userLevel">
+                    <option :value="item.key">{{item.label}}</option>
+                </template>
+            </select>
+        </div>
+    </div>
+    <!--<div class="form-inline addInput">
+        <label class="  control-label font_style "><span>角色:</span></label>
+        <div class="form-group">
+            <select type="text" class="form-control roleid control-width " name="roleid" data-bv-trigger="blur" placeholder="请选择角色" v-model="data.roleid">
+                <template v-for="(item, index) in option.roleids">
+                    <option :value="item.key">{{item.label}}</option>
+                </template>
+                </select>
+        </div>
+    </div>-->
+</div>
+$$
+<div class="delete_popup">
+    <div class="form-group tip">
+        确认是否删除用户?
+    </div>
+</div>
+$$
+<div id="widget-UserManagementAddInfo" class="form-horizontal">
+    <div class="form-inline">
+        <label class=" control-label font_style"><span>姓名:</span></label>
+        <div class="form-group">
+            <input type="text" class="form-control realname control-width" name="realname" data-bv-trigger="blur"
+                data-bv-message="The title is not valid" required data-bv-notempty-message="不能为空"
+                data-bv-stringlength="true" data-bv-stringlength-max="20" data-bv-stringlength-message="字段长度不得超过20 "
+                placeholder="请输入用户名" v-model="stateDate.realname" />
+        </div>
+    </div>
+    <div class="form-inline">
+        <label class="  control-label font_style "><span>是否启用:</span></label>
+        <div class="form-group">
+            <select type="text" class="form-control IsEnable control-width " name="IsEnable" data-bv-trigger="blur"
+                placeholder="请选择编码" v-model="stateDate.IsEnable">
+                <template v-for="(item, index) in option.statusFlag">
+                    <option :value="item.key">{{item.label}}</option>
+                </template>
+            </select>
+        </div>
+    </div>
+</div>
+$$
+<div id="widget-UserManagementAddInfo" class="form-horizontal">
+    <div class="form-inline">
+        <label class=" control-label font_style"><span>姓名:</span></label>
+        <div class="form-group">
+            <input type="text" class="form-control realname control-width" name="realname" data-bv-trigger="blur"
+                data-bv-message="The title is not valid" required data-bv-notempty-message="不能为空"
+                data-bv-stringlength="true" data-bv-stringlength-max="20" data-bv-stringlength-message="字段长度不得超过20 "
+                placeholder="请输入用户名" v-model="roleDate.realname" />
+        </div>
+    </div>
+    <div class="form-inline addInput">
+        <label class="  control-label font_style "><span>角色:</span></label>
+        <div class="form-group">
+            <select type="text" class="form-control selectpicker roleid control-width " data-live-search="true"
+                name="roleid" data-bv-trigger="blur" placeholder="请选择编码" v-model="roleDate.RoleId">
+                <template v-for="(item, index) in roleids">
+                    <option :value="item.key">{{item.label}}</option>
+                </template>
+            </select>
+        </div>
+    </div>
+</div>
+$$
+<div id="widget-UserManagementUserInfo_" class="form-horizontal">
+    <div class="form-inline">
+        <label class=" control-label font_style"><span>用户名:</span></label>
+        <div class="form-group">
+            <span type="text" class=" name control-width" name="name" v-model="data.name">{{data.name}}</span>
+        </div>
+    </div>
+    <div class="form-inline">
+        <label class=" control-label font_style"><span>真实姓名:</span></label>
+        <div class="form-group">
+            <span type="text" class=" realname control-width" name="realname"
+                v-model="data.realname">{{data.realname}}</span>
+        </div>
+    </div>
+    <div class="form-inline">
+        <label class=" control-label font_style"><span>联系电话:</span></label>
+        <div class="form-group">
+            <span type="text" class=" phone control-width" name="phone" v-model="data.phone">{{data.phone}}</span>
+        </div>
+    </div>
+    <div class="form-inline">
+        <label class=" control-label font_style"><span>头像:</span></label>
+        <div class=" input-group" v-if="data.showphoto">
+            <img :src="data.file" style="width: 200px;height: 200px;" />
+        </div>
+        <div class=" input-group" v-if="!data.showphoto">
+            <span type="text">暂未上传头像</span>
+        </div>
+    </div>
+    <div class="form-inline">
+        <label class=" control-label font_style"><span>email:</span></label>
+        <div class="form-group">
+            <span type="text" class=" email control-width" name="email" v-model="data.email">{{data.email}}</span>
+        </div>
+    </div>
+    <div class="form-inline addInput">
+        <label class="  control-label font_style "><span>单位:</span></label>
+        <div class="form-group">
+            <span type="text" class=" deptid control-width " name="deptid" v-model="data.deptid">{{data.deptid}}</span>
+        </div>
+    </div>
+    <div class="form-inline addInput">
+        <label class="  control-label font_style "><span>角色:</span></label>
+        <div class="form-group">
+            <span type="text" class=" roleid control-width " name="roleid" v-model="data.roleid">{{data.roleid}}</span>
+        </div>
+    </div>
+</div>

File diff suppressed because it is too large
+ 1121 - 0
src/widgets/UserManagementQuery/Widget.ts


+ 25 - 0
src/widgets/UserManagementQuery/config.json

@@ -0,0 +1,25 @@
+{
+    "widgetUrl": "widgets/UserManagementQuery",
+    "tmplateUrl": "widgets/UserManagementQuery/Widget.html",
+    "styleUrl": "widgets/UserManagementQuery/css/style.scss",
+    "userList": "/base/user/pageNew",
+    "setUser": "/base/user",
+    "deleteUser": "/base/user/removeByIds",
+    "updateUser": "/User/Update",
+    "getImg": "/base/file/loadImg",
+    "getDepartmentList": "/base/department/page",
+    "roleList": "/base/role/page",
+    "getKey": "/base/code/page",
+    "setUserEnable": "/User/SetUserEnable",
+    "bindingRole": "/base/userrole",
+    "updateCurrentUser": "/User/UpdateCurrentUser",
+    "updatelock":"/base/user/unlock",
+    "getIsExists":"/base/common/isExists",
+    "importFile":"/base/user/batchUser",
+    "pagesize": [
+        10,
+        25,
+        50,
+        100
+    ]
+}

+ 152 - 0
src/widgets/UserManagementQuery/css/style.scss

@@ -0,0 +1,152 @@
+
+.widget-UserManagementQuery {
+    height: 100%;
+    .tip{
+        text-align: center;
+    }
+    .control-width{
+        width: 220px;
+    }
+    .margin_left{
+        margin-left: 5px;
+    }
+    #myTabContent{
+        height: 100%;
+        .djinfo-tool {
+            margin: 4px;
+            input,select{
+                margin-right: 5px;
+            }
+        }
+        .linesplit {
+            height: 1px;
+            margin-top: 20px;
+            margin-bottom: 5px;
+            background-color: #01d4f9;
+            width: 100%;
+        }
+        .djfieldinfo{
+            position: absolute;
+            top: 42px;
+            margin-left: calc(100% - 400px);
+            margin-right: 10px;
+        }
+        .djfieldinfo,.djinfo {
+            width: 100%;
+            #all_check{
+                margin-right: -10px;
+            }
+            .table_pagecontrol {
+                position: absolute;
+                bottom: 10px;
+                width: 98%;
+                margin-left: 4px;
+            }
+        }
+    }
+
+    .checkwidth{
+        width: 40px;
+    }
+    .pagination {
+        margin: 1.5px 0px;
+        position: relative;
+        .dataTables_paginate.paging_simple_numbers{
+            position:absolute;
+            right: 12px;
+        }
+    }
+
+    .dataTables_scrollHead {
+        table {
+            thead {
+                text-align: center;
+                .sorting:after {
+                    content: " ";
+                    content: url(/widgets/DataPanel/images/normal.png);
+                    width: 20px;
+                    opacity: 1;
+                    padding: 5.5px;
+                }
+                .sorting_desc:after {
+                    content: " ";
+                    content: url(/widgets/DataPanel/images/sp.png);
+                    width: 20px;
+                    opacity: 1;
+                    padding: 5.5px;
+                }
+                .sorting_asc:after {
+                    content: " ";
+                    content: url(/widgets/DataPanel/images/sx.png);
+                    width: 20px;
+                    opacity: 1;
+                    padding: 5.5px;
+                }
+            }
+        }
+    }
+    tbody{
+        //checkbox 位置居中
+        .list_check{
+            margin-left: calc(50% - 6px);
+        }
+    }
+}
+.widget-popup{
+    #widget-UserManagementAddInfo{
+        overflow: auto;
+        height: 100%;
+        overflow-x: hidden;
+        textarea,select,input{
+            width: 280px !important;
+        }
+        .inner.show{
+            height: 200px !important;
+        }
+        .btn.dropdown-toggle.btn-light{
+            width: 280px !important;
+        }
+        label{
+            width: 120px;
+            position: relative;
+            span{
+                position: absolute;
+                right:0px;
+            }
+        }
+        .kv-upload-progress.hide{
+            display: none !important
+        }
+        .kv-fileinput-caption{
+            width: 180px;
+        }
+        .input-group-btn.input-group-text{
+            border-top-right-radius: .25rem;
+            border-bottom-right-radius: .25rem;
+            border-bottom-left-radius:0;
+            border-top-left-radius: 0;
+        }
+        .kv-file-content{
+            width: 200px;
+            .file-preview-image.kv-preview-data{
+                width: 200px !important;
+                height: 170px !important;
+            }
+        }
+        .file-preview{
+            width: 280px;
+        }
+    }
+    .form-group.tip {
+        text-align: center;
+    }
+}
+
+div#widget-UserManagementUserInfo_  {
+    span{
+        width: 100px;
+    }
+    span.control-width {
+        width: 200px !important;
+    }
+}