diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/controller/DeviceManageController.java b/src/main/java/com/supwisdom/dlpay/restaurant/controller/DeviceManageController.java
index 53f4ef0..bc0cae0 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/controller/DeviceManageController.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/controller/DeviceManageController.java
@@ -2,11 +2,11 @@
 
 
 import com.supwisdom.dlpay.api.bean.JsonResult;
-import com.supwisdom.dlpay.device.bean.DeviceSearchBean;
-import com.supwisdom.dlpay.device.domain.TDevice;
-import com.supwisdom.dlpay.device.domain.TDeviceGroup;
-import com.supwisdom.dlpay.device.service.DeviceGroupService;
-import com.supwisdom.dlpay.device.service.DeviceService;
+import com.supwisdom.dlpay.restaurant.bean.DeviceSearchBean;
+import com.supwisdom.dlpay.restaurant.domain.TDevice;
+import com.supwisdom.dlpay.restaurant.domain.TDeviceGroup;
+import com.supwisdom.dlpay.restaurant.service.DeviceGroupService;
+import com.supwisdom.dlpay.restaurant.service.DeviceService;
 import com.supwisdom.dlpay.framework.util.ExportExcel;import com.supwisdom.dlpay.framework.util.PageResult;
 import com.supwisdom.dlpay.framework.util.WebConstant;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -68,7 +68,7 @@
     public String loadadd(Model model) {
     List<TDeviceGroup> list = groupService.findAll();
         model.addAttribute("grouplist", list);
-        return "devicemanage/form";    }
+        return "restaurant/devicemanage/form";    }
 
 
     @PostMapping("/update")
diff --git a/src/main/kotlin/com/supwisdom/dlpay/migration.kt b/src/main/kotlin/com/supwisdom/dlpay/migration.kt
index 4124f99..817b194 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/migration.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/migration.kt
@@ -1,3 +1,4 @@
+/*
 package com.supwisdom.dlpay
 
 import org.springframework.boot.autoconfigure.flyway.FlywayMigrationInitializer
@@ -10,18 +11,22 @@
 @Configuration
 class MigrationConfiguration {
 
-    /**
+    */
+/**
      * Override default flyway initializer to do nothing
-     */
+     *//*
+
     @Bean
     fun flywayInitializer(flyway: Flyway): FlywayMigrationInitializer {
         return FlywayMigrationInitializer(flyway) { f -> }
     }
 
 
-    /**
+    */
+/**
      * Create a second flyway initializer to run after jpa has created the schema
-     */
+     *//*
+
     @Bean
     @DependsOn("entityManagerFactory")
     fun delayedFlywayInitializer(flyway: Flyway): FlywayMigrationInitializer {
@@ -30,35 +35,39 @@
 
 
 }
-package com.supwisdom.dlpay
 
-import org.springframework.boot.autoconfigure.flyway.FlywayMigrationInitializer
-import org.flywaydb.core.Flyway
-import org.springframework.context.annotation.Bean
-import org.springframework.context.annotation.Configuration
-import org.springframework.context.annotation.DependsOn
 
 
 @Configuration
 class MigrationConfiguration {
 
-   /* *//**
+   */
+/* *//*
+*/
+/**
      * Override default flyway initializer to do nothing
      *//*
+*/
+/*
     @Bean
     fun flywayInitializer(flyway: Flyway): FlywayMigrationInitializer {
         return FlywayMigrationInitializer(flyway) { f -> }
     }
 
 
-    *//**
+    *//*
+*/
+/**
      * Create a second flyway initializer to run after jpa has created the schema
      *//*
+*/
+/*
     @Bean
     @DependsOn("entityManagerFactory")
     fun delayedFlywayInitializer(flyway: Flyway): FlywayMigrationInitializer {
         return FlywayMigrationInitializer(flyway, null)
-    }*/
+    }*//*
 
 
-}
\ No newline at end of file
+
+}*/
diff --git a/src/main/resources/templates/login.html b/src/main/resources/templates/login.html
index 0cef69e..f6ac97b 100644
--- a/src/main/resources/templates/login.html
+++ b/src/main/resources/templates/login.html
@@ -4,11 +4,11 @@
 
 <head>
     <title>用户登录</title>
-    <meta name="_csrf" th:content="${_csrf.token}" />
+    <meta name="_csrf" th:content="${_csrf.token}"/>
     <!-- default header name is X-CSRF-TOKEN -->
-    <meta name="_csrf_header" th:content="${_csrf.headerName}" />
-    <link rel="stylesheet" type="text/css"  th:href="@{/static/libs/layui/css/layui.css}"   />
-    <link rel="stylesheet" type="text/css"  th:href="@{/static/custom/css/login.css}"  />
+    <meta name="_csrf_header" th:content="${_csrf.headerName}"/>
+    <link rel="stylesheet" type="text/css" th:href="@{/static/libs/layui/css/layui.css}"/>
+    <link rel="stylesheet" type="text/css" th:href="@{/static/custom/css/login.css}"/>
 </head>
 <body>
 <div class="login-wrapper">
@@ -45,11 +45,11 @@
                     <div class="layui-input-block">
                         <div class="layui-row inline-block">
                             <div class="layui-col-xs7">
-                                <input name="imageCode" type="text"  placeholder="验证码"
+                                <input name="imageCode" type="text" placeholder="验证码"
                                        class="layui-input">
                             </div>
                             <div class="layui-col-xs5" style="padding-left: 10px;">
-                                <img width="100px" height="35px"  class="login-captcha" th:src="@{/code/image}">
+                                <img width="100px" height="35px" class="login-captcha" th:src="@{/code/image}">
                             </div>
                         </div>
                     </div>
@@ -62,10 +62,10 @@
                     <button lay-filter="login-submit" class="layui-btn layui-btn-fluid" lay-submit>登 录</button>
                 </div>
                 <!--<div class="layui-form-item login-other">-->
-                    <!--<label>第三方登录</label>-->
-                    <!--<a href="javascript:;"><i class="layui-icon layui-icon-login-qq"></i></a>-->
-                    <!--<a href="javascript:;"><i class="layui-icon layui-icon-login-wechat"></i></a>-->
-                    <!--<a href="javascript:;"><i class="layui-icon layui-icon-login-weibo"></i></a>-->
+                <!--<label>第三方登录</label>-->
+                <!--<a href="javascript:;"><i class="layui-icon layui-icon-login-qq"></i></a>-->
+                <!--<a href="javascript:;"><i class="layui-icon layui-icon-login-wechat"></i></a>-->
+                <!--<a href="javascript:;"><i class="layui-icon layui-icon-login-weibo"></i></a>-->
                 <!--</div>-->
             </div>
         </div>
@@ -74,14 +74,14 @@
     <div class="login-footer">
         <p>© 2019 <a href="javascript:;" target="_blank">上海树维信息科技有限公司 版权所有</a></p>
         <!--<p>-->
-            <!--<span><a href="javascript:;" target="_blank">前往github</a></span>-->
-            <!--<span><a href="https://gitee.com/andyzy/zy-admin.git" target="_blank">前往gitee</a></span>-->
-            <!--<span><a href="javascript:;" target="_blank">文档说明</a></span>-->
+        <!--<span><a href="javascript:;" target="_blank">前往github</a></span>-->
+        <!--<span><a href="https://gitee.com/andyzy/zy-admin.git" target="_blank">前往gitee</a></span>-->
+        <!--<span><a href="javascript:;" target="_blank">文档说明</a></span>-->
         <!--</p>-->
     </div>
 </div>
 
-<script type="text/javascript"  th:src="@{/static/libs/layui/layui.js}" ></script>
+<script type="text/javascript" th:src="@{/static/libs/layui/layui.js}"></script>
 <script>
     layui.config({
         base: 'custom/module/'
@@ -93,7 +93,7 @@
             var field = obj.field;
             layer.load(2);
             $.ajax({
-                url: '/login/form',
+                url: '[[@{/login/form}]]',
                 data: field,
                 type: 'POST',
                 success: function (data) {
diff --git a/src/main/resources/templates/restaurant/area/form.html b/src/main/resources/templates/restaurant/area/form.html
index 22308ab..1e8e9b3 100644
--- a/src/main/resources/templates/restaurant/area/form.html
+++ b/src/main/resources/templates/restaurant/area/form.html
@@ -66,7 +66,7 @@
             }
         });*/
 
-        var url = '/area/add';
+        var url = '[[@{/area/add}]]';
         // 回显user数据
         var func = admin.getTempData('t_area');
         if (func) {
diff --git a/src/main/resources/templates/restaurant/area/index.html b/src/main/resources/templates/restaurant/area/index.html
index ed16a4c..33027c3 100644
--- a/src/main/resources/templates/restaurant/area/index.html
+++ b/src/main/resources/templates/restaurant/area/index.html
@@ -36,7 +36,7 @@
         // 渲染表格
         table.render({
             elem: '#table',
-            url: '/area/list',
+            url: '[[@{/area/list}]]',
             page: true,
             cols: [
                 [
diff --git a/src/main/resources/templates/restaurant/device/form.html b/src/main/resources/templates/restaurant/device/form.html
index 9426e9b..08c499e 100644
--- a/src/main/resources/templates/restaurant/device/form.html
+++ b/src/main/resources/templates/restaurant/device/form.html
@@ -60,7 +60,7 @@
             }
         });*/
 
-        var url = '/device/add';
+        var url = '[[@{/device/add}]]';
         // 回显user数据
         var dev = admin.getTempData('t_dev');
         if (dev) {
diff --git a/src/main/resources/templates/restaurant/device/import.html b/src/main/resources/templates/restaurant/device/import.html
index c5a3bd0..9552061 100644
--- a/src/main/resources/templates/restaurant/device/import.html
+++ b/src/main/resources/templates/restaurant/device/import.html
@@ -33,7 +33,7 @@
         var admin = layui.admin;
         var form = layui.form;
 
-        var url = '/device/import';
+        var url = '[[@{/device/import}]]';
         // 回显user数据
 
         /* let fid = admin.getTempData("fid");
diff --git a/src/main/resources/templates/restaurant/device/index.html b/src/main/resources/templates/restaurant/device/index.html
index 45c1d12..2d5b42e 100644
--- a/src/main/resources/templates/restaurant/device/index.html
+++ b/src/main/resources/templates/restaurant/device/index.html
@@ -36,7 +36,7 @@
         // 渲染表格
         table.render({
             elem: '#table',
-            url: '/device/list',
+            url: '[[@{/device/list}]]',
             page: true,
             cols: [
                 [
@@ -78,7 +78,7 @@
             admin.putTempData('t_dev', data);
             admin.popupCenter({
                 title: title,
-                path: '/device/loadadd',
+                path: '[[@{/device/loadadd}]]',
                 finish: function () {
                     table.reload('table', {});
                 }
@@ -102,7 +102,7 @@
                 layer.close(i);
                 layer.load(2);
                 let token = $("meta[name='_csrf_token']").attr("value");
-                admin.go('/device/delete', {
+                admin.go('[[@{/device/delete}]]', {
                     id: data.id,
                     _csrf: token
                 }, function (data) {
@@ -130,7 +130,7 @@
         form.on('switch(dev-tpl-state)', function (obj) {
             layer.load(2);
             let token = $("meta[name='_csrf_token']").attr("value");
-            admin.go('/device/updatestate', {
+            admin.go('[[@{/device/updatestate}]]', {
                 id: obj.elem.value,
                 _csrf: token,
                 state: obj.elem.checked ? 1 : 0
diff --git a/src/main/resources/templates/restaurant/devicegroup/form.html b/src/main/resources/templates/restaurant/devicegroup/form.html
index 974c2e8..3478df1 100644
--- a/src/main/resources/templates/restaurant/devicegroup/form.html
+++ b/src/main/resources/templates/restaurant/devicegroup/form.html
@@ -31,7 +31,7 @@
         var form = layui.form;
         form.render('select');
 
-        var url = '/devicegroup/add';
+        var url = '[[@{/devicegroup/add}]]';
 
       /*  var group = admin.getTempData('t_devgroup');
         if (group) {
diff --git a/src/main/resources/templates/restaurant/devicegroup/index.html b/src/main/resources/templates/restaurant/devicegroup/index.html
index cf967a2..f215d11 100644
--- a/src/main/resources/templates/restaurant/devicegroup/index.html
+++ b/src/main/resources/templates/restaurant/devicegroup/index.html
@@ -50,7 +50,7 @@
         // 渲染表格
         table.render({
             elem: '#table',
-            url: '/devicegroup/listDevice',
+            url: '[[@{/devicegroup/listDevice}]]',
             page: true,
             cols: [
                 [
@@ -101,7 +101,7 @@
                 layer.close(i);
                 layer.load(2);
                 let token = $("meta[name='_csrf_token']").attr("value");
-                admin.go('/device/delete', {
+                admin.go('[[@{/device/delete}]]', {
                     id: data.id,
                     _csrf: token
                 }, function (data) {
@@ -125,41 +125,11 @@
             });
         };
 
-        form.on('switch(dev-tpl-state)', function (obj) {
-            layer.load(2);
-            let token = $("meta[name='_csrf_token']").attr("value");
-            admin.go('/device/updatestate', {
-                id: obj.elem.value,
-                _csrf: token,
-                state: obj.elem.checked ? 1 : 0
-            }, function (data) {
-                layer.closeAll('loading');
-                if (data.code == 200) {
-                    layer.msg(data.msg, {icon: 1});
-                    //table.reload('table-user', {});
-                } else if (data.code == 401) {
-                    layer.msg(data.msg, {icon: 2, time: 1500}, function () {
-                        location.replace('/login');
-                    }, 1000);
-                    return;
-                } else {
-                    layer.msg(data.msg, {icon: 2});
-                    $(obj.elem).prop('checked', !obj.elem.checked);
-                    form.render('checkbox');
-                }
-            }, function () {
-                layer.closeAll('loading');
-                layer.msg('请求失败了，请稍后再试', {icon: 2});
-            });
-        });
-
-
         function OnGrpClick(e, treeId, treeNode) {
             console.log(treeNode.id);
             table.reload('table', {where: {searchkey: treeNode.id}, page: {curr: 1}});
 
         }
-
         function loadZTree(eNodes) {
             var menuSetting = {
                 view: {
@@ -204,7 +174,7 @@
             $.ajax({
                 type: "POST",
                 dataType: "json",
-                url: "/devicegroup/listTree",
+                url: "[[@{/devicegroup/listTree}]]",
                 headers: {
                     'Accept': 'application/json',
                     'X-CSRF-TOKEN': token,
@@ -230,7 +200,7 @@
                 layer.close(i);
                 layer.load(2);
                 let token = $("meta[name='_csrf_token']").attr("value");
-                admin.go('/devicegroup/delete', {
+                admin.go('[[@{/devicegroup/delete}]]', {
                     id: treeNode.id,
                     _csrf: token
                 }, function (data) {
@@ -264,7 +234,7 @@
                 'groupname': treeNode.name
             };
             let token = $("meta[name='_csrf_token']").attr("value");
-            var url = 'devicegroup/add';
+            var url = '[[@{devicegroup/add}]]';
             $.ajax({
                 type: "POST",
                 dataType: "json",
diff --git a/src/main/resources/templates/restaurant/devicemanage/form.html b/src/main/resources/templates/restaurant/devicemanage/form.html
new file mode 100644
index 0000000..f9c84be
--- /dev/null
+++ b/src/main/resources/templates/restaurant/devicemanage/form.html
@@ -0,0 +1,86 @@
+
+<form id="form" lay-filter="form" class="layui-form model-form">
+    <input name="id" id="id" type="hidden"/>
+    <div class="layui-form-item">
+        <label class="layui-form-label">设备名称</label>
+        <div class="layui-input-block">
+            <input name="devicename" placeholder="建议采用带有地理坐标的名称" type="text" class="layui-input" maxlength="20"
+                   lay-verify="required|devphyid" required/>
+        </div>
+    </div>
+    <div class="layui-form-item">
+        <label class="layui-form-label">设备组</label>
+        <div class="layui-input-block">
+            <select name="devgroupid" id="devgroupid" lay-verify="required">
+                <option th:each="group : ${grouplist}" th:value="${group.devgroupid}">[[${group.groupname}]]</option>
+            </select>
+        </div>
+    </div>
+
+
+
+    <div class="layui-form-item model-form-footer">
+        <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
+        <button class="layui-btn" lay-filter="form-submit" lay-submit id="submitbtn">保存</button>
+    </div>
+</form>
+
+<script>
+    layui.use(['layer', 'admin', 'form', 'formSelects'], function () {
+        var layer = layui.layer;
+        var admin = layui.admin;
+        var form = layui.form;
+        form.render('select');
+        form.render('radio');
+
+
+        var url = '[[@{/devicemanage/update}]]';
+        // 回显user数据
+        var dev = admin.getTempData('t_dev');
+        if (dev) {
+            $('input[name="id"]').attr('readonly', 'readonly');
+            form.val('form', dev);
+        }
+        /* let fid = admin.getTempData("fid");
+         if (fid) {
+             form.val('form', {"fid": fid});
+         }*/
+        // 表单提交事件
+        form.on('submit(form-submit)', function (data) {
+            console.log(data);
+            layer.load(2);
+            let token = $("meta[name='_csrf_token']").attr("value");
+            $.ajax({
+                type: "POST",
+                dataType: "json",
+                url: url,
+                headers: {
+                    'Accept': 'application/json',
+                    'Content-Type': 'application/json',
+                    'X-CSRF-TOKEN': token,
+                },
+                data: JSON.stringify(data.field),
+                success: function (result) {
+                    layer.closeAll('loading');
+                    if (result.code == 200) {
+                        layer.msg(result.msg, {icon: 1});
+                        admin.finishPopupCenter();
+                    } else if (result.code == 401) {
+                        layer.msg(result.msg, {icon: 2, time: 1500}, function () {
+                            location.replace('/login');
+                        }, 1000);
+                        return;
+                    } else {
+                        console.log('err:' + result.code);
+                        layer.msg(result.msg, {icon: 2});
+                    }
+                },
+                error: function () {
+                    layer.closeAll('loading');
+                    layer.msg("请求服务器失败！", {icon: 2});
+                }
+            });
+            return false;
+        });
+    });
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/restaurant/devicemanage/index.html b/src/main/resources/templates/restaurant/devicemanage/index.html
index 5c71735..7ca7cc3 100644
--- a/src/main/resources/templates/restaurant/devicemanage/index.html
+++ b/src/main/resources/templates/restaurant/devicemanage/index.html
@@ -42,7 +42,7 @@
         // 渲染表格
         table.render({
             elem: '#table',
-            url: '/devicemanage/list',
+            url: '[[@{/devicemanage/list}]]',
             page: true,
             cols: [
                 [
@@ -79,7 +79,7 @@
             admin.putTempData('t_dev', data);
             admin.popupCenter({
                 title: title,
-                path: '/devicemanage/loadupdate',
+                path: '[[@{/devicemanage/loadupdate}]]',
                 finish: function () {
                     table.reload('table', {});
                 }
@@ -94,15 +94,13 @@
             console.log(data);
             if (layEvent === 'edit') {
                 showModel(data);
-            } else if (layEvent === 'del') {
-                showDelete(data);
             }
         });
 
         form.on('switch(dev-tpl-state)', function (obj) {
             layer.load(2);
             let token = $("meta[name='_csrf_token']").attr("value");
-            admin.go('/device/updatestate', {
+            admin.go('[[@{/device/updatestate}]]', {
                 id: obj.elem.value,
                 _csrf: token,
                 state: obj.elem.checked ? 1 : 0
