diff --git a/src/main/resources/templates/doorlist/addDoorlist.html b/src/main/resources/templates/doorlist/addDoorlist.html
index c667fea..fec24fd 100644
--- a/src/main/resources/templates/doorlist/addDoorlist.html
+++ b/src/main/resources/templates/doorlist/addDoorlist.html
@@ -12,7 +12,7 @@
                 <el-steps :active="step" style="margin-top: 20px;margin-left: 12%">
                     <el-step title="选择人员" ></el-step>
                     <el-step title="选择门禁设备" ></el-step>
-                    <el-step title="选择时间段" ></el-step>
+                    <el-step title="选择时间周" ></el-step>
                     <el-step title="下发成功" ></el-step>
                 </el-steps>
             </template>
@@ -659,7 +659,7 @@
             regions:[],
             buildings:[],
             devSel_allocated:[],
-            //时间段选择部分
+            //时间周选择部分
             timeTable:[],
             timeName:'',
             timeTags:[],
@@ -864,7 +864,7 @@
                     addDoorlist_commonQueryTime(this, '', 1, 10);
                 }
             },
-            //时间段选择部分
+            //时间周选择部分
             timeTagClose:function(val){
                 this.timeTags.splice(this.timeTags.indexOf(val), 1);
                 this.timeSel_selected.splice(this.timeSel_selected.indexOf(val), 1);
@@ -899,7 +899,7 @@
             },
             timeNextStep:function(){
                 if(addDoorlist_vue.timeSel_selected.length==0){
-                    layer.msg('请选择时间段，否则不能进行下一步！',{icon:2,time:1000});
+                    layer.msg('请选择时间周，否则不能进行下一步！',{icon:2,time:1000});
                 }else{
                     layer.confirm('确定下发这些设备名单吗？', {icon: 3, title:'请确认',offset:'30%'},function(index) {
                         layer.closeAll('dialog');
@@ -970,7 +970,7 @@
     function addDoorlist_fillmsg(_self){
         //_self.devgrpTitle='设备组 '+ _self.devGrpTags.length + '个';
         _self.devTitle='设备 '+ _self.devSel_allocated.length + '个';
-        _self.timeTitle='时间段 '+ _self.timeTags.length + '个';
+        _self.timeTitle='时间周 '+ _self.timeTags.length + '个';
         //_self.holiTitle='节假日 ' + _self.holidayTags.length + '个';
     }
 
diff --git a/src/main/resources/templates/system/operator/setpwd.html b/src/main/resources/templates/system/operator/setpwd.html
index 2e9085e..c1ca992 100644
--- a/src/main/resources/templates/system/operator/setpwd.html
+++ b/src/main/resources/templates/system/operator/setpwd.html
@@ -58,11 +58,11 @@
                     layer.closeAll('loading');
                     if (result.code == 200) {
                         layer.msg(result.msg, {icon: 1, time: 1500}, function () {
-                            location.replace('/login');
+                            location.replace('/door/login');
                         }, 1000);
                     } else if (data.code == 401) {
                         layer.msg(result.msg, {icon: 2, time: 1500}, function () {
-                            location.replace('/login');
+                            location.replace('/door/login');
                         }, 1000);
                         return;
                     } else {
diff --git a/src/main/resources/templates/system/region.html b/src/main/resources/templates/system/region.html
index 5bdffbe..2e60a61 100644
--- a/src/main/resources/templates/system/region.html
+++ b/src/main/resources/templates/system/region.html
@@ -425,12 +425,13 @@
             //获取第二级
             pushRegion(regionlst,f);
         }
-        for(var i in f){
+        /*for(var i in f){
             var s = f[i].children;
             if(s.length>0){
                 pushRegion(regionlst,s);
             }
-        }
+        }*/
+        cyclePushRegion(f,regionlst)
 
         return f;
     }
@@ -449,6 +450,21 @@
         }
     }
 
+    function cyclePushRegion(fList,regionlst){
+        for (var i in fList){
+            var s = fList[i].children;
+            if (s.length>0){
+                pushRegion(regionlst,s);
+            }
+            for (j in s) {
+                var l = s[j].children;
+                if (l.length>0){
+                    cyclePushRegion(s,regionlst)
+                }
+            }
+        }
+    }
+
 
     function region_saveData(_that,formdata,formName){
         var url = null;
