diff --git a/src/main/kotlin/com/supwisdom/dlpay/water/controller/water_controller.kt b/src/main/kotlin/com/supwisdom/dlpay/water/controller/water_controller.kt
index b761adb..ca73565 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/water/controller/water_controller.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/water/controller/water_controller.kt
@@ -15,6 +15,9 @@
 import org.springframework.http.ResponseEntity
 import org.springframework.stereotype.Controller
 import org.springframework.web.bind.annotation.*
+import java.io.IOException
+import javax.servlet.http.HttpServletRequest
+import javax.servlet.http.HttpServletResponse
 
 @Controller
 class RegionController {
@@ -313,8 +316,12 @@
             if (pageNo < 1 || pageSize < 1) {
                 return PageResult(WaterErrorCode.REQUEST_DATA_ERROR, "请求参数错误")
             }
-            val areano:Int?
-            areano = if (StringUtil.isEmpty(areanoStr)) { null } else { areanoStr.toInt() }
+            val areano: Int?
+            areano = if (StringUtil.isEmpty(areanoStr)) {
+                null
+            } else {
+                areanoStr.toInt()
+            }
             val searchBean = DeviceSearchBean().apply {
                 this.pageNo = pageNo
                 this.pageSize = pageSize
diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql
index d305208..eee881b 100644
--- a/src/main/resources/data.sql
+++ b/src/main/resources/data.sql
@@ -23,9 +23,6 @@
 
 Insert into TB_FUNCTION (ID,CREATETIME,ISLEAF,LASTSAVED,MENUICON,MENUURL,NAME,ORDERNUM,PARENTID) values ('1',null,0,null,'layui-icon-home','#','主页',1,'-1');
 Insert into TB_FUNCTION (ID,CREATETIME,ISLEAF,LASTSAVED,MENUICON,MENUURL,NAME,ORDERNUM,PARENTID) values ('2',null,1,null,'layui-icon-home','/home/console','控制台',1,'1');
-Insert into TB_FUNCTION (ID,CREATETIME,ISLEAF,LASTSAVED,MENUICON,MENUURL,NAME,ORDERNUM,PARENTID) values ('3',null,0,null,'layui-icon-set','#','系统中心',2,'-1');
-Insert into TB_FUNCTION (ID,CREATETIME,ISLEAF,LASTSAVED,MENUICON,MENUURL,NAME,ORDERNUM,PARENTID) values ('4',null,1,null,'layui-icon-set','/operator/index','管理员维护',1,'3');
-Insert into TB_FUNCTION (ID,CREATETIME,ISLEAF,LASTSAVED,MENUICON,MENUURL,NAME,ORDERNUM,PARENTID) values ('5',null,1,null,'layui-icon-set','/role/index','角色管理',2,'3');
 
 
 Insert into TB_ROLE_FUNCTION (ID,FUNCTIONID,ROLEID) values ('5','5','d1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
diff --git a/src/main/resources/templates/system/device/form.html b/src/main/resources/templates/system/device/form.html
index 676124b..103f7a5 100644
--- a/src/main/resources/templates/system/device/form.html
+++ b/src/main/resources/templates/system/device/form.html
@@ -34,23 +34,23 @@
         var layer = layui.layer;
         var admin = layui.admin;
         var form = layui.form;
-        var url = '[[@{/device/add}]]';
+        var device_form_url = '[[@{/device/add}]]';
         // 回显user数据
-        var func = admin.getTempData('t_func');
+        var device_form_func = admin.getTempData('t_func');
         //  清除admin域中的数据
         admin.putTempData('t_func', '');
-        if (func) {
+        if (device_form_func) {
             $('input[name="deviceid"]').attr('readonly', 'readonly');
-            form.val('form', func);
+            form.val('form', device_form_func);
             $.ajax({
                 url: "[[@{/region/all}]]",
                 type: "GET",
                 success: function (data) {
                     if (data.retcode == '0') {
-                        var html = '<option value="' + func.areano + '">' + func.areaname + '</option>'
+                        var html = '<option value="' + device_form_func.areano + '">' + device_form_func.areaname + '</option>'
                         var regions = data.regions
                         for (var i = 0; i < regions.length; i++) {
-                            if (regions[i].areano != func.areano) {
+                            if (regions[i].areano != device_form_func.areano) {
                                 html += '<option value="' + regions[i].areano + '">' + regions[i].areaName + '</option>';
                             }
                         }
@@ -117,7 +117,7 @@
             $.ajax({
                 type: "POST",
                 dataType: "json",
-                url: url,
+                url: device_form_url,
                 headers: {
                     'Accept': 'application/json',
                     'Content-Type': 'application/json',
diff --git a/src/main/resources/templates/system/device/index.html b/src/main/resources/templates/system/device/index.html
index a6a0c55..8e0f32b 100644
--- a/src/main/resources/templates/system/device/index.html
+++ b/src/main/resources/templates/system/device/index.html
@@ -47,10 +47,10 @@
         <!--</button>-->
         <button id="btn-add-device" class="layui-btn icon-btn" data-type="add"><i class="layui-icon">&#xe654;</i>新增
         </button>
-        <button id="btn-add-device" class="layui-btn icon-btn" data-type="add"><i class="layui-icon ">&#xe601;</i>模板下载
-        </button>
-        <button id="btn-add-device" class="layui-btn icon-btn" data-type="add"><i class="layui-icon">&#xe67c;</i>批量导入
-        </button>
+        <!--<button id="btn-add-device" class="layui-btn icon-btn" data-type="add"><i class="layui-icon ">&#xe601;</i>模板下载-->
+        <!--</button>-->
+        <!--<button id="btn-add-device" class="layui-btn icon-btn" data-type="add"><i class="layui-icon">&#xe67c;</i>批量导入-->
+        <!--</button>-->
         <div class="layui-fluid" style="padding: 0">
             <div class="layui-row">
                 <div>
@@ -73,7 +73,7 @@
             success: function (data) {
                 if (data.retcode == '0') {
                     var html = '<option value="">请选择一个区域</option>'
-                    var regions = data.regions
+                    var regions = data.regions;
                     for (var i = 0; i < regions.length; i++) {
                         html += '<option value="' + regions[i].areano + '">' + regions[i].areaName + '</option>'
                     }
diff --git a/src/main/resources/templates/system/region/form.html b/src/main/resources/templates/system/region/form.html
index 1e253a2..3169b78 100644
--- a/src/main/resources/templates/system/region/form.html
+++ b/src/main/resources/templates/system/region/form.html
@@ -40,21 +40,21 @@
         var layer = layui.layer;
         var admin = layui.admin;
         var form = layui.form;
-        var url = '[[@{/region/add}]]';
+        var region_form_url = '[[@{/region/add}]]';
         // 回显user数据
-        var func = admin.getTempData('t_func');
+        var region_form_func = admin.getTempData('t_func');
         //  清除admin域中的数据
         admin.putTempData('t_func', '');
-        if (func) {
+        if (region_form_func) {
             $('input[name="areano"]').attr('readonly', 'readonly');
-            var html='<option value="'+func.parentId+'">'+func.parentName+'</option>'
-            $("#selectCity").html(html);
-            form.val('form', func);
+            var region_form_html='<option value="'+region_form_func.parentId+'">'+region_form_func.parentName+'</option>'
+            $("#selectCity").html(region_form_html);
+            form.val('form', region_form_func);
         }
         else {
-            var html = '<option value="0">根区域</option>'
-            $("#selectCity").html(html);
-            form.val('form', func);
+            var region_form_html = '<option value="0">根区域</option>'
+            $("#selectCity").html(region_form_html);
+            form.val('form', region_form_func);
             // $.ajax({
             //     url:"/region/all",
             //     type:"GET",
@@ -82,7 +82,7 @@
             $.ajax({
                 type : "POST",
                 dataType : "json",
-                url : url,
+                url : region_form_url,
                 headers: {
                     'Accept': 'application/json',
                     'Content-Type': 'application/json',
@@ -92,7 +92,6 @@
                 success : function(result) {
                     console.log(result);
                     layer.closeAll('loading');
-
                     if (result.retcode == 0) {
                         layer.msg(result.msg, {icon: 1});
                         admin.finishPopupCenter();
diff --git a/src/main/resources/templates/system/region/index.html b/src/main/resources/templates/system/region/index.html
index 399b8ac..4f5c651 100644
--- a/src/main/resources/templates/system/region/index.html
+++ b/src/main/resources/templates/system/region/index.html
@@ -56,7 +56,7 @@
                     {field: 'level', align: 'center', title: '区域级别', unresize: true, width: "12%"},
                     {field: 'parentName', align: 'center',unresize: true, title: '父区域'},
                     {field: 'address', align: 'center', unresize: true,title: '详细地址'},
-                    {field: 'remarks', align: 'center',unresize: true, title: '备注'},
+                    {field: 'remarks', align: 'center',unresize: true, title: '备注',width: "13%"},
                     {
                         field: 'regionId', align: 'center', title: '操作', unresize: true, templet: function (item) {
                             let html = ' <a class="layui-btn  layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>修改</a> ' +
@@ -84,12 +84,12 @@
             showModel();
         });
         let showModel = function (data) {
-            let title = data ? '编辑区域' : '新增区域';
+            let region_index_title = data ? '编辑区域' : '新增区域';
             if (data) {
                 admin.putTempData('t_func', data);
             }
             admin.popupCenter({
-                title: title,
+                title: region_index_title,
                 path: '[[@{/region/loadadd}]]',
                 finish: function () {
                     table.reload('regiontable', {});
@@ -99,12 +99,13 @@
                         type: 'GET',
                         success: function (data) {
                             if (data.retcode == '0') {
+                                var treeData = region_index_shortenTitle(data.regions);
                                 layui.use('tree', function () {
                                     var tree = layui.tree;
                                     tree.reload('regiontree', {
                                         data: [{
                                             title:'根区域',
-                                            children:data.regions,
+                                            children:treeData,
                                             id:0
                                         }]
                                     })
@@ -159,12 +160,13 @@
                             type: 'GET',
                             success: function (data) {
                                 if (data.retcode == '0') {
+                                    var treeData = region_index_shortenTitle(data.regions);
                                     layui.use('tree', function () {
                                         var tree = layui.tree;
                                         tree.reload('regiontree', {
                                             data: [{
                                                 title:'根区域',
-                                                children:data.regions,
+                                                children:treeData,
                                                 id:0
                                             }]
                                         })
@@ -203,8 +205,7 @@
         type: 'GET',
         success: function (data) {
             if (data.retcode == '0') {
-                var treeData = data.regions;
-                console.log(treeData)
+                var treeData = region_index_shortenTitle(data.regions);
                 layui.use('tree', function () {
                     var tree = layui.tree;
                     var inst1 = tree.render({
@@ -235,7 +236,14 @@
             console.log(xhr)
         }
     });
-
+    function region_index_shortenTitle(treeData) {
+        for (var i = 0; i < treeData.length; i++) {
+            if (treeData[i].title.length > 6) {
+                treeData[i].title=treeData[i].title.substring(0,6)+'...'
+            }
+        }
+        return treeData
+    }
 </script>
 
 
