|  |  | 
 |  |  |     port: 51236 | 
 |  |  |     ip: 172.17.91.39 | 
 |  |  |     id: 4 | 
 |  |  |   # LED1 | 
 |  |  |   # LED1 成品库1F | 
 |  |  |   led[0]: | 
 |  |  |     id: 1 | 
 |  |  |     ip: 192.168.110.210 | 
 |  |  |     port: 5005 | 
 |  |  |     devpPlcId: ${wcs-slave.devp[2].id} | 
 |  |  |     staArr: 1052 | 
 |  |  |   # LED2 成品库1F | 
 |  |  |   led[1]: | 
 |  |  |     id: 2 | 
 |  |  |     ip: 192.168.110.211 | 
 |  |  |     port: 5005 | 
 |  |  |     devpPlcId: ${wcs-slave.devp[2].id} | 
 |  |  |     staArr: 1052 | 
 |  |  |   # LED3 半成品库1F | 
 |  |  |   led[2]: | 
 |  |  |     id: 3 | 
 |  |  |     ip: 192.168.110.212 | 
 |  |  |     port: 5005 | 
 |  |  |     devpPlcId: ${wcs-slave.devp[0].id} | 
 |  |  |     staArr: 1014 | 
 |  |  |   # LED4 成品库2F | 
 |  |  |   led[3]: | 
 |  |  |     id: 4 | 
 |  |  |     ip: 192.168.110.213 | 
 |  |  |     port: 5005 | 
 |  |  |     devpPlcId: ${wcs-slave.devp[3].id} | 
 |  |  |     staArr: 2057 | 
 |  |  |   # LED5 成品库2F | 
 |  |  |   led[4]: | 
 |  |  |     id: 5 | 
 |  |  |     ip: 192.168.110.214 | 
 |  |  |     port: 5005 | 
 |  |  |     devpPlcId: ${wcs-slave.devp[3].id} | 
 |  |  |     staArr: 2056 | 
 |  |  |   # LED6 成品库2F | 
 |  |  |   led[5]: | 
 |  |  |     id: 6 | 
 |  |  |     ip: 192.168.110.215 | 
 |  |  |     port: 5005 | 
 |  |  |     devpPlcId: ${wcs-slave.devp[3].id} | 
 |  |  |     staArr: 2054 | 
 |  |  |   # LED7 成品库2F | 
 |  |  |   led[6]: | 
 |  |  |     id: 7 | 
 |  |  |     ip: 192.168.110.216 | 
 |  |  |     port: 5005 | 
 |  |  |     devpPlcId: ${wcs-slave.devp[3].id} | 
 |  |  |     staArr: 2051 | 
 |  |  |   # LED8 半成品库2F | 
 |  |  |   led[7]: | 
 |  |  |     id: 8 | 
 |  |  |     ip: 192.168.110.217 | 
 |  |  |     port: 5005 | 
 |  |  |     devpPlcId: ${wcs-slave.devp[1].id} | 
 |  |  |     staArr: 2002 | 
 |  |  |   # LED9 半成品库2F | 
 |  |  |   led[8]: | 
 |  |  |     id: 9 | 
 |  |  |     ip: 192.168.110.218 | 
 |  |  |     port: 5005 | 
 |  |  |     devpPlcId: ${wcs-slave.devp[1].id} | 
 |  |  |     staArr: 2007 | 
 |  |  |   # LED10 半成品库2F | 
 |  |  |   led[9]: | 
 |  |  |     id: 10 | 
 |  |  |     ip: 192.168.110.219 | 
 |  |  |     port: 5005 | 
 |  |  |     devpPlcId: ${wcs-slave.devp[1].id} | 
 |  |  |     staArr: 2018 | 
 |  |  | #  crn[0]: #堆垛机1 | 
 |  |  | #    rack: 0 | 
 |  |  | #    offset: 2    #偏移量,当堆垛机站点列号=1时,偏移量=2 | 
 
 |  |  | 
 |  |  |     name: @pom.build.finalName@ | 
 |  |  |   datasource: | 
 |  |  |     driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver | 
 |  |  |     url: jdbc:sqlserver://192.168.0.39:1433;databasename=czscwcs | 
 |  |  |     url: jdbc:sqlserver://127.0.0.1:1433;databasename=czscwcs | 
 |  |  |     username: sa | 
 |  |  |     password: sa@123 | 
 |  |  |   mvc: | 
 
 |  |  | 
 |  |  |     "hpPosition": 0, | 
 |  |  |     "minBayNo": 1, | 
 |  |  |     "floors": 1, | 
 |  |  |     "racks": [{ | 
 |  |  |         "type": "rack", | 
 |  |  |         "id": "rack7", | 
 |  |  |         "top": 326, | 
 |  |  |         "left": 800, | 
 |  |  |         "width": 795, | 
 |  |  |         "height": 23, | 
 |  |  |         "minBayNo": 1, | 
 |  |  |         "maxBayNo": 50, | 
 |  |  |         "hiddenArr": [1,22] | 
 |  |  |     }, { | 
 |  |  |     "racks": [ | 
 |  |  |     //     { | 
 |  |  |     //     "type": "rack", | 
 |  |  |     //     "id": "rack7", | 
 |  |  |     //     "top": 326, | 
 |  |  |     //     "left": 800, | 
 |  |  |     //     "width": 795, | 
 |  |  |     //     "height": 23, | 
 |  |  |     //     "minBayNo": 1, | 
 |  |  |     //     "maxBayNo": 50, | 
 |  |  |     //     "hiddenArr": [1,22] | 
 |  |  |     // }, | 
 |  |  |         { | 
 |  |  |         "type": "rack", | 
 |  |  |         "id": "rack6", | 
 |  |  |         "top": 303, | 
 |  |  |         "left": 800, | 
 |  |  |         "width": 795, | 
 |  |  |         "left": 820, | 
 |  |  |         "width": 1050, | 
 |  |  |         "height": 23, | 
 |  |  |         "minBayNo": 1, | 
 |  |  |         "maxBayNo": 22, | 
 |  |  |         "hiddenArr": [1,22] | 
 |  |  |     }, { | 
 |  |  |         "type": "rack", | 
 |  |  |         "id": "rack5", | 
 |  |  |         "top": 209, | 
 |  |  |         "left": 800, | 
 |  |  |         "width": 795, | 
 |  |  |         "height": 23, | 
 |  |  |         "minBayNo": 1, | 
 |  |  |         "maxBayNo": 22, | 
 |  |  |         "hiddenArr": [1,22] | 
 |  |  |     },{ | 
 |  |  |         "maxBayNo": 59, | 
 |  |  |         "hiddenArr": [1,59] | 
 |  |  |     }, | 
 |  |  |     //     { | 
 |  |  |     //     "type": "rack", | 
 |  |  |     //     "id": "rack5", | 
 |  |  |     //     "top": 209, | 
 |  |  |     //     "left": 820, | 
 |  |  |     //     "width": 1050, | 
 |  |  |     //     "height": 23, | 
 |  |  |     //     "minBayNo": 1, | 
 |  |  |     //     "maxBayNo": 59, | 
 |  |  |     //     "hiddenArr": [1,59] | 
 |  |  |     // }, | 
 |  |  |         { | 
 |  |  |         "type": "rack", | 
 |  |  |         "id": "rack4", | 
 |  |  |         "top": 232, | 
 |  |  |         "left": 800, | 
 |  |  |         "width": 795, | 
 |  |  |         "left": 820, | 
 |  |  |         "width": 1050, | 
 |  |  |         "height": 23, | 
 |  |  |         "minBayNo": 1, | 
 |  |  |         "maxBayNo": 22, | 
 |  |  |         "hiddenArr": [1,22] | 
 |  |  |     }, { | 
 |  |  |         "type": "rack", | 
 |  |  |         "id": "rack3", | 
 |  |  |         "top": 182, | 
 |  |  |         "left": 800, | 
 |  |  |         "width": 795, | 
 |  |  |         "height": 23, | 
 |  |  |         "minBayNo": 1, | 
 |  |  |         "maxBayNo": 22, | 
 |  |  |         "hiddenArr": [1,22] | 
 |  |  |     }, { | 
 |  |  |         "maxBayNo": 59, | 
 |  |  |         "hiddenArr": [1,59] | 
 |  |  |     }, | 
 |  |  |     //     { | 
 |  |  |     //     "type": "rack", | 
 |  |  |     //     "id": "rack3", | 
 |  |  |     //     "top": 182, | 
 |  |  |     //     "left": 820, | 
 |  |  |     //     "width": 1050, | 
 |  |  |     //     "height": 23, | 
 |  |  |     //     "minBayNo": 1, | 
 |  |  |     //     "maxBayNo": 59, | 
 |  |  |     //     "hiddenArr": [1,59] | 
 |  |  |     // }, | 
 |  |  |         { | 
 |  |  |         "type": "rack", | 
 |  |  |         "id": "rack2", | 
 |  |  |         "top": 159, | 
 |  |  |         "left": 800, | 
 |  |  |         "width": 795, | 
 |  |  |         "left": 820, | 
 |  |  |         "width": 1050, | 
 |  |  |         "height": 23, | 
 |  |  |         "minBayNo": 1, | 
 |  |  |         "maxBayNo": 22, | 
 |  |  |         "hiddenArr": [1,22] | 
 |  |  |     }, { | 
 |  |  |         "maxBayNo": 59, | 
 |  |  |         "hiddenArr": [1,59] | 
 |  |  |     }, | 
 |  |  |         { | 
 |  |  |         "type": "rack", | 
 |  |  |         "id": "rack1", | 
 |  |  |         "top": 98, | 
 |  |  |         "left": 800, | 
 |  |  |         "width": 795, | 
 |  |  |         "left": 820, | 
 |  |  |         "width": 1050, | 
 |  |  |         "height": 23, | 
 |  |  |         "minBayNo": 1, | 
 |  |  |         "maxBayNo": 22, | 
 |  |  |         "hiddenArr": [1,22] | 
 |  |  |     }, { | 
 |  |  |         "type": "rack", | 
 |  |  |         "id": "rack0", | 
 |  |  |         "top": 75, | 
 |  |  |         "left": 800, | 
 |  |  |         "width": 795, | 
 |  |  |         "height": 23, | 
 |  |  |         "minBayNo": 1, | 
 |  |  |         "maxBayNo": 22, | 
 |  |  |         "hiddenArr": [1,22] | 
 |  |  |     }], | 
 |  |  |         "maxBayNo": 59, | 
 |  |  |         "hiddenArr": [1,59] | 
 |  |  |     }, | 
 |  |  |     //     { | 
 |  |  |     //     "type": "rack", | 
 |  |  |     //     "id": "rack0", | 
 |  |  |     //     "top": 75, | 
 |  |  |     //     "left": 820, | 
 |  |  |     //     "width": 1050, | 
 |  |  |     //     "height": 23, | 
 |  |  |     //     "minBayNo": 1, | 
 |  |  |     //     "maxBayNo": 59, | 
 |  |  |     //     "hiddenArr": [1,59] | 
 |  |  |     // } | 
 |  |  |     ], | 
 |  |  |     "crns": [{ | 
 |  |  |         "type": "crane", | 
 |  |  |         "id": "crn-2", | 
 |  |  | 
 |  |  |             "stns": [{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-100", | 
 |  |  |                 "text": "100", | 
 |  |  |                 "text": "1008", | 
 |  |  |                 "top": 99, | 
 |  |  |                 "left": 771, | 
 |  |  |                 "width": 62, | 
 |  |  | 
 |  |  |             },{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-101", | 
 |  |  |                 "text": "101", | 
 |  |  |                 "text": "1007", | 
 |  |  |                 "top": 99, | 
 |  |  |                 "left": 707, | 
 |  |  |                 "width": 62, | 
 |  |  | 
 |  |  |             },{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-102", | 
 |  |  |                 "text": "102", | 
 |  |  |                 "text": "RGV小车", | 
 |  |  |                 "top": 99, | 
 |  |  |                 "left": 643, | 
 |  |  |                 "width": 62, | 
 |  |  | 
 |  |  |             },{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-103", | 
 |  |  |                 "text": "103", | 
 |  |  |                 "text": "1011", | 
 |  |  |                 "top": 99, | 
 |  |  |                 "left": 579, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-104", | 
 |  |  |                 "text": "104", | 
 |  |  |                 "top": 124, | 
 |  |  |                 "left": 579, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 34 | 
 |  |  |             },{ | 
 |  |  |             }, | 
 |  |  |                 { | 
 |  |  |                     "type": "stn", | 
 |  |  |                     "id": "site-103", | 
 |  |  |                     "text": "1020", | 
 |  |  |                     "top": 70, | 
 |  |  |                     "left": 579, | 
 |  |  |                     "width": 62, | 
 |  |  |                     "height": 23 | 
 |  |  |                 }, | 
 |  |  |                 { | 
 |  |  |                     "type": "stn", | 
 |  |  |                     "id": "site-103", | 
 |  |  |                     "text": "", | 
 |  |  |                     "top": 70, | 
 |  |  |                     "left": 515, | 
 |  |  |                     "width": 62, | 
 |  |  |                     "height": 23 | 
 |  |  |                 }, | 
 |  |  |                 { | 
 |  |  |                     "type": "stn", | 
 |  |  |                     "id": "site-103", | 
 |  |  |                     "text": "", | 
 |  |  |                     "top": 70, | 
 |  |  |                     "left": 450, | 
 |  |  |                     "width": 62, | 
 |  |  |                     "height": 23 | 
 |  |  |                 }, | 
 |  |  |             //     { | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-104", | 
 |  |  |             //     "text": "104", | 
 |  |  |             //     "top": 124, | 
 |  |  |             //     "left": 579, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 34 | 
 |  |  |             // }, | 
 |  |  |                 { | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-125", | 
 |  |  |                 "text": "125", | 
 |  |  |                 "text": "1006", | 
 |  |  |                 "top": 160, | 
 |  |  |                 "left": 771, | 
 |  |  |                 "width": 62, | 
 |  |  | 
 |  |  |             },{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-124", | 
 |  |  |                 "text": "124", | 
 |  |  |                 "text": "1005", | 
 |  |  |                 "top": 160, | 
 |  |  |                 "left": 707, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },{ | 
 |  |  |             },/*{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-123", | 
 |  |  |                 "text": "123", | 
 |  |  |                 "text": "RGV小车", | 
 |  |  |                 "top": 160, | 
 |  |  |                 "left": 643, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-122", | 
 |  |  |                 "text": "122", | 
 |  |  |                 "top": 160, | 
 |  |  |                 "left": 579, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-121", | 
 |  |  |                 "text": "121", | 
 |  |  |                 "top": 186, | 
 |  |  |                 "left": 579, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 42 | 
 |  |  |             },{ | 
 |  |  |             },*/ | 
 |  |  |             //     { | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-122", | 
 |  |  |             //     "text": "122", | 
 |  |  |             //     "top": 160, | 
 |  |  |             //     "left": 579, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 23 | 
 |  |  |             // }, | 
 |  |  |             //     { | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-121", | 
 |  |  |             //     "text": "121", | 
 |  |  |             //     "top": 186, | 
 |  |  |             //     "left": 579, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 42 | 
 |  |  |             // }, | 
 |  |  |                 { | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-120", | 
 |  |  |                 "text": "120", | 
 |  |  |                 "text": "1004", | 
 |  |  |                 "top": 231, | 
 |  |  |                 "left": 771, | 
 |  |  |                 "width": 62, | 
 |  |  | 
 |  |  |             },{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-119", | 
 |  |  |                 "text": "119", | 
 |  |  |                 "text": "1003", | 
 |  |  |                 "top": 231, | 
 |  |  |                 "left": 707, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },{ | 
 |  |  |             },/*{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-118", | 
 |  |  |                 "text": "118", | 
 |  |  |                 "text": "RGV小车", | 
 |  |  |                 "top": 231, | 
 |  |  |                 "left": 643, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-117", | 
 |  |  |                 "text": "117", | 
 |  |  |                 "top": 231, | 
 |  |  |                 "left": 579, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-116", | 
 |  |  |                 "text": "116", | 
 |  |  |                 "top": 256, | 
 |  |  |                 "left": 579, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 46 | 
 |  |  |             },{ | 
 |  |  |             },*/ | 
 |  |  |             //     { | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-117", | 
 |  |  |             //     "text": "117", | 
 |  |  |             //     "top": 231, | 
 |  |  |             //     "left": 579, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 23 | 
 |  |  |             // },{ | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-116", | 
 |  |  |             //     "text": "116", | 
 |  |  |             //     "top": 256, | 
 |  |  |             //     "left": 579, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 46 | 
 |  |  |             // }, | 
 |  |  |                 { | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-115", | 
 |  |  |                 "text": "115", | 
 |  |  |                 "text": "1002", | 
 |  |  |                 "top": 304, | 
 |  |  |                 "left": 771, | 
 |  |  |                 "width": 62, | 
 |  |  | 
 |  |  |             },{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-114", | 
 |  |  |                 "text": "114", | 
 |  |  |                 "text": "1001", | 
 |  |  |                 "top": 304, | 
 |  |  |                 "left": 707, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },{ | 
 |  |  |             }, | 
 |  |  |                 { | 
 |  |  |                     "type": "stn", | 
 |  |  |                     "id": "site-114", | 
 |  |  |                     "text": "1016", | 
 |  |  |                     "top": 330, | 
 |  |  |                     "left": 707, | 
 |  |  |                     "width": 62, | 
 |  |  |                     "height": 23 | 
 |  |  |                 }, | 
 |  |  |                 { | 
 |  |  |                     "type": "stn", | 
 |  |  |                     "id": "site-114", | 
 |  |  |                     "text": "1018", | 
 |  |  |                     "top": 356, | 
 |  |  |                     "left": 707, | 
 |  |  |                     "width": 62, | 
 |  |  |                     "height": 23 | 
 |  |  |                 }, | 
 |  |  |                 { | 
 |  |  |                     "type": "stn", | 
 |  |  |                     "id": "site-114", | 
 |  |  |                     "text": "1019", | 
 |  |  |                     "top": 356, | 
 |  |  |                     "left": 772, | 
 |  |  |                     "width": 62, | 
 |  |  |                     "height": 23 | 
 |  |  |                 }, | 
 |  |  |                 { | 
 |  |  |                     "type": "stn", | 
 |  |  |                     "id": "site-114", | 
 |  |  |                     "text": "", | 
 |  |  |                     "top": 356, | 
 |  |  |                     "left": 837, | 
 |  |  |                     "width": 62, | 
 |  |  |                     "height": 23 | 
 |  |  |                 }, | 
 |  |  |                 { | 
 |  |  |                     "type": "stn", | 
 |  |  |                     "id": "site-114", | 
 |  |  |                     "text": "", | 
 |  |  |                     "top": 356, | 
 |  |  |                     "left": 902, | 
 |  |  |                     "width": 62, | 
 |  |  |                     "height": 23 | 
 |  |  |                 }, | 
 |  |  |                 { | 
 |  |  |                     "type": "stn", | 
 |  |  |                     "id": "site-114", | 
 |  |  |                     "text": "1017", | 
 |  |  |                     "top": 383, | 
 |  |  |                     "left": 707, | 
 |  |  |                     "width": 62, | 
 |  |  |                     "height": 23 | 
 |  |  |                 },/*{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-113", | 
 |  |  |                 "text": "113", | 
 |  |  |                 "text": "RGV小车", | 
 |  |  |                 "top": 304, | 
 |  |  |                 "left": 643, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-112", | 
 |  |  |                 "text": "112", | 
 |  |  |                 "top": 304, | 
 |  |  |                 "left": 579, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },{ | 
 |  |  |             },*/ | 
 |  |  |             //     { | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-112", | 
 |  |  |             //     "text": "112", | 
 |  |  |             //     "top": 304, | 
 |  |  |             //     "left": 579, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 23 | 
 |  |  |             // }, | 
 |  |  |                 { | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-105", | 
 |  |  |                 "text": "105", | 
 |  |  |                 "text": "1012", | 
 |  |  |                 "top": 99, | 
 |  |  |                 "left": 515, | 
 |  |  |                 "width": 62, | 
 |  |  | 
 |  |  |             },{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-106", | 
 |  |  |                 "text": "106", | 
 |  |  |                 "text": "1013", | 
 |  |  |                 "top": 124, | 
 |  |  |                 "left": 515, | 
 |  |  |                 "width": 62, | 
 |  |  | 
 |  |  |             },{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-107", | 
 |  |  |                 "text": "107", | 
 |  |  |                 "text": "1013", | 
 |  |  |                 "top": 160, | 
 |  |  |                 "left": 515, | 
 |  |  |                 "width": 62, | 
 |  |  | 
 |  |  |             },{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-108", | 
 |  |  |                 "text": "108", | 
 |  |  |                 "text": "1013", | 
 |  |  |                 "top": 186, | 
 |  |  |                 "left": 515, | 
 |  |  |                 "width": 62, | 
 |  |  | 
 |  |  |             },{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-109", | 
 |  |  |                 "text": "109", | 
 |  |  |                 "text": "1013", | 
 |  |  |                 "top": 231, | 
 |  |  |                 "left": 515, | 
 |  |  |                 "width": 62, | 
 |  |  | 
 |  |  |             },{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-110", | 
 |  |  |                 "text": "110", | 
 |  |  |                 "text": "1014", | 
 |  |  |                 "top": 304, | 
 |  |  |                 "left": 515, | 
 |  |  |                 "width": 62, | 
 |  |  | 
 |  |  |             },{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-111", | 
 |  |  |                 "text": "111", | 
 |  |  |                 "text": "1015", | 
 |  |  |                 "top": 329, | 
 |  |  |                 "left": 515, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-1001", | 
 |  |  |                 "text": "1001", | 
 |  |  |                 "top": 99, | 
 |  |  |                 "left": 451, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-1002", | 
 |  |  |                 "text": "1002", | 
 |  |  |                 "top": 160, | 
 |  |  |                 "left": 451, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-1003", | 
 |  |  |                 "text": "1003", | 
 |  |  |                 "top": 231, | 
 |  |  |                 "left": 451, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-1004", | 
 |  |  |                 "text": "1004", | 
 |  |  |                 "top": 304, | 
 |  |  |                 "left": 451, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             } ] | 
 |  |  |             }, | 
 |  |  |             //     { | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-1001", | 
 |  |  |             //     "text": "1001", | 
 |  |  |             //     "top": 99, | 
 |  |  |             //     "left": 451, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 23 | 
 |  |  |             // }, | 
 |  |  |             //     { | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-1002", | 
 |  |  |             //     "text": "1002", | 
 |  |  |             //     "top": 160, | 
 |  |  |             //     "left": 451, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 23 | 
 |  |  |             // },{ | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-1003", | 
 |  |  |             //     "text": "1003", | 
 |  |  |             //     "top": 231, | 
 |  |  |             //     "left": 451, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 23 | 
 |  |  |             // },{ | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-1004", | 
 |  |  |             //     "text": "1004", | 
 |  |  |             //     "top": 304, | 
 |  |  |             //     "left": 451, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 23 | 
 |  |  |             // } | 
 |  |  |             ] | 
 |  |  |         }] | 
 |  |  |     }] | 
 |  |  | } | 
 
| New file | 
 |  |  | 
 |  |  | mapInfo = { | 
 |  |  |     "mapName": "scwcs", | 
 |  |  |     "rackCount": 13, | 
 |  |  |     "crnCount": 4, | 
 |  |  |     "stbCount": 4, | 
 |  |  |     "hpPosition": 0, | 
 |  |  |     "minBayNo": 1, | 
 |  |  |     "floors": 1, | 
 |  |  |     "racks": [ | 
 |  |  |          { | 
 |  |  |          "type": "rack", | 
 |  |  |          "id": "rack7", | 
 |  |  |          "top": 326, | 
 |  |  |          "left": 820, | 
 |  |  |          "width": 1050, | 
 |  |  |          "height": 23, | 
 |  |  |          "minBayNo": 1, | 
 |  |  |          "maxBayNo": 43, | 
 |  |  |          "hiddenArr": [1,43] | 
 |  |  |      }, | 
 |  |  |         { | 
 |  |  |         "type": "rack", | 
 |  |  |         "id": "rack6", | 
 |  |  |         "top": 303, | 
 |  |  |         "left": 820, | 
 |  |  |         "width": 1050, | 
 |  |  |         "height": 23, | 
 |  |  |         "minBayNo": 1, | 
 |  |  |         "maxBayNo": 43, | 
 |  |  |         "hiddenArr": [1,43] | 
 |  |  |     }, | 
 |  |  |          { | 
 |  |  |          "type": "rack", | 
 |  |  |          "id": "rack5", | 
 |  |  |          "top": 209, | 
 |  |  |          "left": 820, | 
 |  |  |          "width": 1050, | 
 |  |  |          "height": 23, | 
 |  |  |          "minBayNo": 1, | 
 |  |  |          "maxBayNo": 43, | 
 |  |  |          "hiddenArr": [1,43] | 
 |  |  |      }, | 
 |  |  |         { | 
 |  |  |         "type": "rack", | 
 |  |  |         "id": "rack4", | 
 |  |  |         "top": 232, | 
 |  |  |         "left": 820, | 
 |  |  |         "width": 1050, | 
 |  |  |         "height": 23, | 
 |  |  |         "minBayNo": 1, | 
 |  |  |         "maxBayNo": 43, | 
 |  |  |         "hiddenArr": [1,43] | 
 |  |  |     }, | 
 |  |  |          /*{ | 
 |  |  |          "type": "rack", | 
 |  |  |          "id": "rack3", | 
 |  |  |          "top": 182, | 
 |  |  |          "left": 820, | 
 |  |  |          "width": 1050, | 
 |  |  |          "height": 23, | 
 |  |  |          "minBayNo": 1, | 
 |  |  |          "maxBayNo": 43, | 
 |  |  |          "hiddenArr": [1,43] | 
 |  |  |      },*/ | 
 |  |  |         /*{ | 
 |  |  |         "type": "rack", | 
 |  |  |         "id": "rack2", | 
 |  |  |         "top": 159, | 
 |  |  |         "left": 820, | 
 |  |  |         "width": 1050, | 
 |  |  |         "height": 23, | 
 |  |  |         "minBayNo": 1, | 
 |  |  |         "maxBayNo": 43, | 
 |  |  |         "hiddenArr": [1,43] | 
 |  |  |     },*/ | 
 |  |  |         /*{ | 
 |  |  |         "type": "rack", | 
 |  |  |         "id": "rack1", | 
 |  |  |         "top": 98, | 
 |  |  |         "left": 820, | 
 |  |  |         "width": 1050, | 
 |  |  |         "height": 23, | 
 |  |  |         "minBayNo": 1, | 
 |  |  |         "maxBayNo": 43, | 
 |  |  |         "hiddenArr": [1,43] | 
 |  |  |     },*/ | 
 |  |  |          /*{ | 
 |  |  |          "type": "rack", | 
 |  |  |          "id": "rack0", | 
 |  |  |          "top": 75, | 
 |  |  |          "left": 820, | 
 |  |  |          "width": 1050, | 
 |  |  |          "height": 23, | 
 |  |  |          "minBayNo": 1, | 
 |  |  |          "maxBayNo": 43, | 
 |  |  |          "hiddenArr": [1,43] | 
 |  |  |      }*/ | 
 |  |  |     ], | 
 |  |  |     "crns": [ | 
 |  |  |     { | 
 |  |  |         "type": "crane", | 
 |  |  |         "id": "crn-2", | 
 |  |  |         "text": "2", | 
 |  |  |         "top": 268, | 
 |  |  |         "left": 855, | 
 |  |  |         "width": 93, | 
 |  |  |         "height": 22 | 
 |  |  |     }, | 
 |  |  |     /*{ | 
 |  |  |         "type": "crane", | 
 |  |  |         "id": "crn-1", | 
 |  |  |         "text": "1", | 
 |  |  |         "top": 132, | 
 |  |  |         "left": 855, | 
 |  |  |         "width": 93, | 
 |  |  |         "height": 22 | 
 |  |  |     }, */ | 
 |  |  |     { | 
 |  |  |         "type": "track", | 
 |  |  |         "id": "lb_track2", | 
 |  |  |         "text": "", | 
 |  |  |         "top": 278, | 
 |  |  |         "left": 769, | 
 |  |  |         "width": 850, | 
 |  |  |         "height": 2 | 
 |  |  |     }, | 
 |  |  |    /* { | 
 |  |  |         "type": "track", | 
 |  |  |         "id": "lb_track1", | 
 |  |  |         "text": "", | 
 |  |  |         "top": 143, | 
 |  |  |         "left": 769, | 
 |  |  |         "width": 850, | 
 |  |  |         "height": 2 | 
 |  |  |     }*/ | 
 |  |  |     ], | 
 |  |  |     "areas": [{ | 
 |  |  |         "type": "Control_floor", | 
 |  |  |         "id": "tabControl_floor1", | 
 |  |  |         "text": "楼层", | 
 |  |  |         "top": 66, | 
 |  |  |         "left": 580, | 
 |  |  |         "width": 334, | 
 |  |  |         "height": 714, | 
 |  |  |         "floors": [{ | 
 |  |  |             "type": "floor", | 
 |  |  |             "id": "page_floor1", | 
 |  |  |             "text": "1F", | 
 |  |  |             "top": 4, | 
 |  |  |             "left": 422, | 
 |  |  |             "width": 308, | 
 |  |  |             "height": 706, | 
 |  |  |             "stns": [ | 
 |  |  |             /*{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-100", | 
 |  |  |                 "text": "1008", | 
 |  |  |                 "top": 99, | 
 |  |  |                 "left": 771, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },*/ | 
 |  |  |             /*{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-101", | 
 |  |  |                 "text": "1007", | 
 |  |  |                 "top": 99, | 
 |  |  |                 "left": 707, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },*/ | 
 |  |  |             /*{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-102", | 
 |  |  |                 "text": "RGV小车", | 
 |  |  |                 "top": 99, | 
 |  |  |                 "left": 643, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },*/ | 
 |  |  |             /*{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-103", | 
 |  |  |                 "text": "1011", | 
 |  |  |                 "top": 99, | 
 |  |  |                 "left": 579, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },*/ | 
 |  |  |                 /*{ | 
 |  |  |                     "type": "stn", | 
 |  |  |                     "id": "site-103", | 
 |  |  |                     "text": "1020", | 
 |  |  |                     "top": 70, | 
 |  |  |                     "left": 579, | 
 |  |  |                     "width": 62, | 
 |  |  |                     "height": 23 | 
 |  |  |                 },*/ | 
 |  |  |                 /*{ | 
 |  |  |                     "type": "stn", | 
 |  |  |                     "id": "site-103", | 
 |  |  |                     "text": "", | 
 |  |  |                     "top": 70, | 
 |  |  |                     "left": 515, | 
 |  |  |                     "width": 62, | 
 |  |  |                     "height": 23 | 
 |  |  |                 },*/ | 
 |  |  |                 /*{ | 
 |  |  |                     "type": "stn", | 
 |  |  |                     "id": "site-103", | 
 |  |  |                     "text": "", | 
 |  |  |                     "top": 70, | 
 |  |  |                     "left": 450, | 
 |  |  |                     "width": 62, | 
 |  |  |                     "height": 23 | 
 |  |  |                 },*/ | 
 |  |  |             //     { | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-104", | 
 |  |  |             //     "text": "104", | 
 |  |  |             //     "top": 124, | 
 |  |  |             //     "left": 579, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 34 | 
 |  |  |             // }, | 
 |  |  |                 /*{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-125", | 
 |  |  |                 "text": "1006", | 
 |  |  |                 "top": 160, | 
 |  |  |                 "left": 771, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },*/ | 
 |  |  |             { | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-124", | 
 |  |  |                 "text": "1051", | 
 |  |  |                 "top": 200, | 
 |  |  |                 "left": 707, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },/*{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-123", | 
 |  |  |                 "text": "RGV小车", | 
 |  |  |                 "top": 160, | 
 |  |  |                 "left": 643, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },*/ | 
 |  |  |             //     { | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-122", | 
 |  |  |             //     "text": "122", | 
 |  |  |             //     "top": 160, | 
 |  |  |             //     "left": 579, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 23 | 
 |  |  |             // }, | 
 |  |  |             //     { | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-121", | 
 |  |  |             //     "text": "121", | 
 |  |  |             //     "top": 186, | 
 |  |  |             //     "left": 579, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 42 | 
 |  |  |             // }, | 
 |  |  |                 { | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-120", | 
 |  |  |                 "text": "1056", | 
 |  |  |                 "top": 231, | 
 |  |  |                 "left": 771, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-119", | 
 |  |  |                 "text": "1052", | 
 |  |  |                 "top": 231, | 
 |  |  |                 "left": 707, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 60 | 
 |  |  |             },/*{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-118", | 
 |  |  |                 "text": "RGV小车", | 
 |  |  |                 "top": 231, | 
 |  |  |                 "left": 643, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },*/ | 
 |  |  |             //     { | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-117", | 
 |  |  |             //     "text": "117", | 
 |  |  |             //     "top": 231, | 
 |  |  |             //     "left": 579, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 23 | 
 |  |  |             // },{ | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-116", | 
 |  |  |             //     "text": "116", | 
 |  |  |             //     "top": 256, | 
 |  |  |             //     "left": 579, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 46 | 
 |  |  |             // }, | 
 |  |  |                 { | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-115", | 
 |  |  |                 "text": "1058", | 
 |  |  |                 "top": 304, | 
 |  |  |                 "left": 771, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-114", | 
 |  |  |                 "text": "1053", | 
 |  |  |                 "top": 304, | 
 |  |  |                 "left": 707, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             }, | 
 |  |  |                 { | 
 |  |  |                     "type": "stn", | 
 |  |  |                     "id": "site-114", | 
 |  |  |                     "text": "1054", | 
 |  |  |                     "top": 330, | 
 |  |  |                     "left": 707, | 
 |  |  |                     "width": 62, | 
 |  |  |                     "height": 23 | 
 |  |  |                 }, | 
 |  |  |                 /*{ | 
 |  |  |                     "type": "stn", | 
 |  |  |                     "id": "site-114", | 
 |  |  |                     "text": "1018", | 
 |  |  |                     "top": 356, | 
 |  |  |                     "left": 707, | 
 |  |  |                     "width": 62, | 
 |  |  |                     "height": 23 | 
 |  |  |                 },*/ | 
 |  |  |                 /*{ | 
 |  |  |                     "type": "stn", | 
 |  |  |                     "id": "site-114", | 
 |  |  |                     "text": "1019", | 
 |  |  |                     "top": 356, | 
 |  |  |                     "left": 772, | 
 |  |  |                     "width": 62, | 
 |  |  |                     "height": 23 | 
 |  |  |                 },*/ | 
 |  |  |                 /*{ | 
 |  |  |                     "type": "stn", | 
 |  |  |                     "id": "site-114", | 
 |  |  |                     "text": "", | 
 |  |  |                     "top": 356, | 
 |  |  |                     "left": 837, | 
 |  |  |                     "width": 62, | 
 |  |  |                     "height": 23 | 
 |  |  |                 },*/ | 
 |  |  |                 /*{ | 
 |  |  |                     "type": "stn", | 
 |  |  |                     "id": "site-114", | 
 |  |  |                     "text": "", | 
 |  |  |                     "top": 356, | 
 |  |  |                     "left": 902, | 
 |  |  |                     "width": 62, | 
 |  |  |                     "height": 23 | 
 |  |  |                 },*/ | 
 |  |  |                 /*{ | 
 |  |  |                     "type": "stn", | 
 |  |  |                     "id": "site-114", | 
 |  |  |                     "text": "1017", | 
 |  |  |                     "top": 383, | 
 |  |  |                     "left": 707, | 
 |  |  |                     "width": 62, | 
 |  |  |                     "height": 23 | 
 |  |  |                 },*//*{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-113", | 
 |  |  |                 "text": "RGV小车", | 
 |  |  |                 "top": 304, | 
 |  |  |                 "left": 643, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },*/ | 
 |  |  |             //     { | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-112", | 
 |  |  |             //     "text": "112", | 
 |  |  |             //     "top": 304, | 
 |  |  |             //     "left": 579, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 23 | 
 |  |  |             // }, | 
 |  |  |                /* { | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-105", | 
 |  |  |                 "text": "1012", | 
 |  |  |                 "top": 99, | 
 |  |  |                 "left": 515, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },*/ | 
 |  |  |             /*{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-106", | 
 |  |  |                 "text": "1013", | 
 |  |  |                 "top": 124, | 
 |  |  |                 "left": 515, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 34 | 
 |  |  |             },*/ | 
 |  |  |             /*{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-107", | 
 |  |  |                 "text": "1013", | 
 |  |  |                 "top": 160, | 
 |  |  |                 "left": 515, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },*/ | 
 |  |  |             /*{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-108", | 
 |  |  |                 "text": "1013", | 
 |  |  |                 "top": 186, | 
 |  |  |                 "left": 515, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 42 | 
 |  |  |             },*/ | 
 |  |  |             /*{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-109", | 
 |  |  |                 "text": "1013", | 
 |  |  |                 "top": 231, | 
 |  |  |                 "left": 515, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 70 | 
 |  |  |             },*/ | 
 |  |  |             /*{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-110", | 
 |  |  |                 "text": "1014", | 
 |  |  |                 "top": 304, | 
 |  |  |                 "left": 515, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },*/ | 
 |  |  |             /*{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-111", | 
 |  |  |                 "text": "1015", | 
 |  |  |                 "top": 329, | 
 |  |  |                 "left": 515, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },*/ | 
 |  |  |             //     { | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-1001", | 
 |  |  |             //     "text": "1001", | 
 |  |  |             //     "top": 99, | 
 |  |  |             //     "left": 451, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 23 | 
 |  |  |             // }, | 
 |  |  |             //     { | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-1002", | 
 |  |  |             //     "text": "1002", | 
 |  |  |             //     "top": 160, | 
 |  |  |             //     "left": 451, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 23 | 
 |  |  |             // },{ | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-1003", | 
 |  |  |             //     "text": "1003", | 
 |  |  |             //     "top": 231, | 
 |  |  |             //     "left": 451, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 23 | 
 |  |  |             // },{ | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-1004", | 
 |  |  |             //     "text": "1004", | 
 |  |  |             //     "top": 304, | 
 |  |  |             //     "left": 451, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 23 | 
 |  |  |             // } | 
 |  |  |             ] | 
 |  |  |         }] | 
 |  |  |     }] | 
 |  |  | } | 
 
| New file | 
 |  |  | 
 |  |  | mapInfo = { | 
 |  |  |     "mapName": "scwcs", | 
 |  |  |     "rackCount": 13, | 
 |  |  |     "crnCount": 4, | 
 |  |  |     "stbCount": 4, | 
 |  |  |     "hpPosition": 0, | 
 |  |  |     "minBayNo": 1, | 
 |  |  |     "floors": 1, | 
 |  |  |     "racks": [ | 
 |  |  |     //     { | 
 |  |  |     //     "type": "rack", | 
 |  |  |     //     "id": "rack7", | 
 |  |  |     //     "top": 326, | 
 |  |  |     //     "left": 800, | 
 |  |  |     //     "width": 795, | 
 |  |  |     //     "height": 23, | 
 |  |  |     //     "minBayNo": 1, | 
 |  |  |     //     "maxBayNo": 50, | 
 |  |  |     //     "hiddenArr": [1,22] | 
 |  |  |     // }, | 
 |  |  |         { | 
 |  |  |         "type": "rack", | 
 |  |  |         "id": "rack6", | 
 |  |  |         "top": 303, | 
 |  |  |         "left": 820, | 
 |  |  |         "width": 1050, | 
 |  |  |         "height": 23, | 
 |  |  |         "minBayNo": 1, | 
 |  |  |         "maxBayNo": 59, | 
 |  |  |         "hiddenArr": [1,59] | 
 |  |  |     }, | 
 |  |  |     //     { | 
 |  |  |     //     "type": "rack", | 
 |  |  |     //     "id": "rack5", | 
 |  |  |     //     "top": 209, | 
 |  |  |     //     "left": 820, | 
 |  |  |     //     "width": 1050, | 
 |  |  |     //     "height": 23, | 
 |  |  |     //     "minBayNo": 1, | 
 |  |  |     //     "maxBayNo": 59, | 
 |  |  |     //     "hiddenArr": [1,59] | 
 |  |  |     // }, | 
 |  |  |         { | 
 |  |  |         "type": "rack", | 
 |  |  |         "id": "rack4", | 
 |  |  |         "top": 232, | 
 |  |  |         "left": 820, | 
 |  |  |         "width": 1050, | 
 |  |  |         "height": 23, | 
 |  |  |         "minBayNo": 1, | 
 |  |  |         "maxBayNo": 59, | 
 |  |  |         "hiddenArr": [1,59] | 
 |  |  |     }, | 
 |  |  |     //     { | 
 |  |  |     //     "type": "rack", | 
 |  |  |     //     "id": "rack3", | 
 |  |  |     //     "top": 182, | 
 |  |  |     //     "left": 820, | 
 |  |  |     //     "width": 1050, | 
 |  |  |     //     "height": 23, | 
 |  |  |     //     "minBayNo": 1, | 
 |  |  |     //     "maxBayNo": 59, | 
 |  |  |     //     "hiddenArr": [1,59] | 
 |  |  |     // }, | 
 |  |  |         { | 
 |  |  |         "type": "rack", | 
 |  |  |         "id": "rack2", | 
 |  |  |         "top": 159, | 
 |  |  |         "left": 820, | 
 |  |  |         "width": 1050, | 
 |  |  |         "height": 23, | 
 |  |  |         "minBayNo": 1, | 
 |  |  |         "maxBayNo": 59, | 
 |  |  |         "hiddenArr": [1,59] | 
 |  |  |     }, | 
 |  |  |         { | 
 |  |  |         "type": "rack", | 
 |  |  |         "id": "rack1", | 
 |  |  |         "top": 98, | 
 |  |  |         "left": 820, | 
 |  |  |         "width": 1050, | 
 |  |  |         "height": 23, | 
 |  |  |         "minBayNo": 1, | 
 |  |  |         "maxBayNo": 59, | 
 |  |  |         "hiddenArr": [1,59] | 
 |  |  |     }, | 
 |  |  |     //     { | 
 |  |  |     //     "type": "rack", | 
 |  |  |     //     "id": "rack0", | 
 |  |  |     //     "top": 75, | 
 |  |  |     //     "left": 820, | 
 |  |  |     //     "width": 1050, | 
 |  |  |     //     "height": 23, | 
 |  |  |     //     "minBayNo": 1, | 
 |  |  |     //     "maxBayNo": 59, | 
 |  |  |     //     "hiddenArr": [1,59] | 
 |  |  |     // } | 
 |  |  |     ], | 
 |  |  |     "crns": [{ | 
 |  |  |         "type": "crane", | 
 |  |  |         "id": "crn-2", | 
 |  |  |         "text": "2", | 
 |  |  |         "top": 268, | 
 |  |  |         "left": 855, | 
 |  |  |         "width": 93, | 
 |  |  |         "height": 22 | 
 |  |  |     }, { | 
 |  |  |         "type": "crane", | 
 |  |  |         "id": "crn-1", | 
 |  |  |         "text": "1", | 
 |  |  |         "top": 132, | 
 |  |  |         "left": 855, | 
 |  |  |         "width": 93, | 
 |  |  |         "height": 22 | 
 |  |  |     }, { | 
 |  |  |         "type": "track", | 
 |  |  |         "id": "lb_track2", | 
 |  |  |         "text": "", | 
 |  |  |         "top": 278, | 
 |  |  |         "left": 769, | 
 |  |  |         "width": 850, | 
 |  |  |         "height": 2 | 
 |  |  |     }, { | 
 |  |  |         "type": "track", | 
 |  |  |         "id": "lb_track1", | 
 |  |  |         "text": "", | 
 |  |  |         "top": 143, | 
 |  |  |         "left": 769, | 
 |  |  |         "width": 850, | 
 |  |  |         "height": 2 | 
 |  |  |     }], | 
 |  |  |     "areas": [{ | 
 |  |  |         "type": "Control_floor", | 
 |  |  |         "id": "tabControl_floor1", | 
 |  |  |         "text": "楼层", | 
 |  |  |         "top": 66, | 
 |  |  |         "left": 580, | 
 |  |  |         "width": 334, | 
 |  |  |         "height": 714, | 
 |  |  |         "floors": [{ | 
 |  |  |             "type": "floor", | 
 |  |  |             "id": "page_floor1", | 
 |  |  |             "text": "1F", | 
 |  |  |             "top": 4, | 
 |  |  |             "left": 422, | 
 |  |  |             "width": 308, | 
 |  |  |             "height": 706, | 
 |  |  |             "stns": [ | 
 |  |  |             { | 
 |  |  |                             "type": "stn", | 
 |  |  |                             "id": "site-100", | 
 |  |  |                             "text": "2001", | 
 |  |  |                             "top": 40, | 
 |  |  |                             "left": 900, | 
 |  |  |                             "width": 62, | 
 |  |  |                             "height": 23 | 
 |  |  |                         }, | 
 |  |  |             { | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-100", | 
 |  |  |                 "text": "2002", | 
 |  |  |                 "top": 67, | 
 |  |  |                 "left": 900, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             }, | 
 |  |  |             { | 
 |  |  |                             "type": "stn", | 
 |  |  |                             "id": "site-101", | 
 |  |  |                             "text": "2006", | 
 |  |  |                             "top": 57, | 
 |  |  |                             "left": 640, | 
 |  |  |                             "width": 62, | 
 |  |  |                             "height": 23 | 
 |  |  |                         }, | 
 |  |  |             { | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-101", | 
 |  |  |                 "text": "2007", | 
 |  |  |                 "top": 90, | 
 |  |  |                 "left": 640, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-102", | 
 |  |  |                 "text": "2008", | 
 |  |  |                 "top": 125, | 
 |  |  |                 "left": 640, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             }, | 
 |  |  |             /*{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-103", | 
 |  |  |                 "text": "1011", | 
 |  |  |                 "top": 99, | 
 |  |  |                 "left": 579, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },*/ | 
 |  |  |                 /*{ | 
 |  |  |                     "type": "stn", | 
 |  |  |                     "id": "site-103", | 
 |  |  |                     "text": "1020", | 
 |  |  |                     "top": 70, | 
 |  |  |                     "left": 579, | 
 |  |  |                     "width": 62, | 
 |  |  |                     "height": 23 | 
 |  |  |                 },*/ | 
 |  |  |                /* { | 
 |  |  |                     "type": "stn", | 
 |  |  |                     "id": "site-103", | 
 |  |  |                     "text": "", | 
 |  |  |                     "top": 70, | 
 |  |  |                     "left": 515, | 
 |  |  |                     "width": 62, | 
 |  |  |                     "height": 23 | 
 |  |  |                 },*/ | 
 |  |  |                 /*{ | 
 |  |  |                     "type": "stn", | 
 |  |  |                     "id": "site-103", | 
 |  |  |                     "text": "", | 
 |  |  |                     "top": 70, | 
 |  |  |                     "left": 450, | 
 |  |  |                     "width": 62, | 
 |  |  |                     "height": 23 | 
 |  |  |                 },*/ | 
 |  |  |             //     { | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-104", | 
 |  |  |             //     "text": "104", | 
 |  |  |             //     "top": 124, | 
 |  |  |             //     "left": 579, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 34 | 
 |  |  |             // }, | 
 |  |  |                 { | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-125", | 
 |  |  |                 "text": "2003", | 
 |  |  |                 "top": 160, | 
 |  |  |                 "left": 771, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             }, | 
 |  |  |             { | 
 |  |  |                             "type": "stn", | 
 |  |  |                             "id": "site-124", | 
 |  |  |                             "text": "2005", | 
 |  |  |                             "top": 160, | 
 |  |  |                             "left": 640, | 
 |  |  |                             "width": 62, | 
 |  |  |                             "height": 23 | 
 |  |  |                         }, | 
 |  |  |             { | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-124", | 
 |  |  |                 "text": "2004", | 
 |  |  |                 "top": 160, | 
 |  |  |                 "left": 707, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },/*{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-123", | 
 |  |  |                 "text": "RGV小车", | 
 |  |  |                 "top": 160, | 
 |  |  |                 "left": 643, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },*/ | 
 |  |  |             //     { | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-122", | 
 |  |  |             //     "text": "122", | 
 |  |  |             //     "top": 160, | 
 |  |  |             //     "left": 579, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 23 | 
 |  |  |             // }, | 
 |  |  |             //     { | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-121", | 
 |  |  |             //     "text": "121", | 
 |  |  |             //     "top": 186, | 
 |  |  |             //     "left": 579, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 42 | 
 |  |  |             // }, | 
 |  |  |                 { | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-120", | 
 |  |  |                 "text": "2012", | 
 |  |  |                 "top": 231, | 
 |  |  |                 "left": 771, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             }, | 
 |  |  |             { | 
 |  |  |                                                     "type": "stn", | 
 |  |  |                                                     "id": "site-114", | 
 |  |  |                                                     "text": "2009", | 
 |  |  |                                                     "top": 195, | 
 |  |  |                                                     "left": 640, | 
 |  |  |                                                     "width": 62, | 
 |  |  |                                                     "height": 23 | 
 |  |  |                                                 }, | 
 |  |  |             { | 
 |  |  |                                         "type": "stn", | 
 |  |  |                                         "id": "site-114", | 
 |  |  |                                         "text": "2010", | 
 |  |  |                                         "top": 231, | 
 |  |  |                                         "left": 640, | 
 |  |  |                                         "width": 62, | 
 |  |  |                                         "height": 23 | 
 |  |  |                                     }, | 
 |  |  |             { | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-119", | 
 |  |  |                 "text": "2011", | 
 |  |  |                 "top": 231, | 
 |  |  |                 "left": 707, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },/*{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-118", | 
 |  |  |                 "text": "RGV小车", | 
 |  |  |                 "top": 231, | 
 |  |  |                 "left": 643, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },*/ | 
 |  |  |             //     { | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-117", | 
 |  |  |             //     "text": "117", | 
 |  |  |             //     "top": 231, | 
 |  |  |             //     "left": 579, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 23 | 
 |  |  |             // },{ | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-116", | 
 |  |  |             //     "text": "116", | 
 |  |  |             //     "top": 256, | 
 |  |  |             //     "left": 579, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 46 | 
 |  |  |             // }, | 
 |  |  |                 { | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-115", | 
 |  |  |                 "text": "2013", | 
 |  |  |                 "top": 304, | 
 |  |  |                 "left": 771, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             }, | 
 |  |  |             { | 
 |  |  |                             "type": "stn", | 
 |  |  |                             "id": "site-114", | 
 |  |  |                             "text": "2015", | 
 |  |  |                             "top": 304, | 
 |  |  |                             "left": 640, | 
 |  |  |                             "width": 62, | 
 |  |  |                             "height": 23 | 
 |  |  |                         }, | 
 |  |  |             { | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-114", | 
 |  |  |                 "text": "2014", | 
 |  |  |                 "top": 304, | 
 |  |  |                 "left": 707, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             }, | 
 |  |  |                 /*{ | 
 |  |  |                     "type": "stn", | 
 |  |  |                     "id": "site-114", | 
 |  |  |                     "text": "1016", | 
 |  |  |                     "top": 330, | 
 |  |  |                     "left": 707, | 
 |  |  |                     "width": 62, | 
 |  |  |                     "height": 23 | 
 |  |  |                 },*/ | 
 |  |  |                 /*{ | 
 |  |  |                     "type": "stn", | 
 |  |  |                     "id": "site-114", | 
 |  |  |                     "text": "1018", | 
 |  |  |                     "top": 356, | 
 |  |  |                     "left": 707, | 
 |  |  |                     "width": 62, | 
 |  |  |                     "height": 23 | 
 |  |  |                 },*/ | 
 |  |  |                 /*{ | 
 |  |  |                     "type": "stn", | 
 |  |  |                     "id": "site-114", | 
 |  |  |                     "text": "1019", | 
 |  |  |                     "top": 356, | 
 |  |  |                     "left": 772, | 
 |  |  |                     "width": 62, | 
 |  |  |                     "height": 23 | 
 |  |  |                 },*/ | 
 |  |  |                /* { | 
 |  |  |                     "type": "stn", | 
 |  |  |                     "id": "site-114", | 
 |  |  |                     "text": "", | 
 |  |  |                     "top": 356, | 
 |  |  |                     "left": 837, | 
 |  |  |                     "width": 62, | 
 |  |  |                     "height": 23 | 
 |  |  |                 },*/ | 
 |  |  |                /* { | 
 |  |  |                     "type": "stn", | 
 |  |  |                     "id": "site-114", | 
 |  |  |                     "text": "", | 
 |  |  |                     "top": 356, | 
 |  |  |                     "left": 902, | 
 |  |  |                     "width": 62, | 
 |  |  |                     "height": 23 | 
 |  |  |                 },*/ | 
 |  |  |                 /*{ | 
 |  |  |                     "type": "stn", | 
 |  |  |                     "id": "site-114", | 
 |  |  |                     "text": "1017", | 
 |  |  |                     "top": 383, | 
 |  |  |                     "left": 707, | 
 |  |  |                     "width": 62, | 
 |  |  |                     "height": 23 | 
 |  |  |                 },*//*{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-113", | 
 |  |  |                 "text": "RGV小车", | 
 |  |  |                 "top": 304, | 
 |  |  |                 "left": 643, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },*/ | 
 |  |  |             //     { | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-112", | 
 |  |  |             //     "text": "112", | 
 |  |  |             //     "top": 304, | 
 |  |  |             //     "left": 579, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 23 | 
 |  |  |             // }, | 
 |  |  |                 { | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-105", | 
 |  |  |                 "text": "2019", | 
 |  |  |                 "top": 99, | 
 |  |  |                 "left": 515, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-106", | 
 |  |  |                 "text": "", | 
 |  |  |                 "top": 135, | 
 |  |  |                 "left": 515, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 34 | 
 |  |  |             },{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-107", | 
 |  |  |                 "text": "2018", | 
 |  |  |                 "top": 160, | 
 |  |  |                 "left": 515, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-108", | 
 |  |  |                 "text": "", | 
 |  |  |                 "top": 190, | 
 |  |  |                 "left": 515, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 42 | 
 |  |  |             },{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-109", | 
 |  |  |                 "text": "2017", | 
 |  |  |                 "top": 231, | 
 |  |  |                 "left": 515, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 70 | 
 |  |  |             },{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-110", | 
 |  |  |                 "text": "2016", | 
 |  |  |                 "top": 304, | 
 |  |  |                 "left": 574, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },/*{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-111", | 
 |  |  |                 "text": "1015", | 
 |  |  |                 "top": 329, | 
 |  |  |                 "left": 515, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },*/ | 
 |  |  |             //     { | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-1001", | 
 |  |  |             //     "text": "1001", | 
 |  |  |             //     "top": 99, | 
 |  |  |             //     "left": 451, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 23 | 
 |  |  |             // }, | 
 |  |  |             //     { | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-1002", | 
 |  |  |             //     "text": "1002", | 
 |  |  |             //     "top": 160, | 
 |  |  |             //     "left": 451, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 23 | 
 |  |  |             // },{ | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-1003", | 
 |  |  |             //     "text": "1003", | 
 |  |  |             //     "top": 231, | 
 |  |  |             //     "left": 451, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 23 | 
 |  |  |             // },{ | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-1004", | 
 |  |  |             //     "text": "1004", | 
 |  |  |             //     "top": 304, | 
 |  |  |             //     "left": 451, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 23 | 
 |  |  |             // } | 
 |  |  |             ] | 
 |  |  |         }] | 
 |  |  |     }] | 
 |  |  | } | 
 
| New file | 
 |  |  | 
 |  |  | mapInfo = { | 
 |  |  |     "mapName": "scwcs", | 
 |  |  |     "rackCount": 13, | 
 |  |  |     "crnCount": 4, | 
 |  |  |     "stbCount": 4, | 
 |  |  |     "hpPosition": 0, | 
 |  |  |     "minBayNo": 1, | 
 |  |  |     "floors": 1, | 
 |  |  |     "racks": [ | 
 |  |  |          { | 
 |  |  |          "type": "rack", | 
 |  |  |          "id": "rack7", | 
 |  |  |          "top": 326, | 
 |  |  |          "left": 820, | 
 |  |  |          "width": 1050, | 
 |  |  |          "height": 23, | 
 |  |  |          "minBayNo": 1, | 
 |  |  |          "maxBayNo": 43, | 
 |  |  |          "hiddenArr": [1,43] | 
 |  |  |      }, | 
 |  |  |         { | 
 |  |  |         "type": "rack", | 
 |  |  |         "id": "rack6", | 
 |  |  |         "top": 303, | 
 |  |  |         "left": 820, | 
 |  |  |         "width": 1050, | 
 |  |  |         "height": 23, | 
 |  |  |         "minBayNo": 1, | 
 |  |  |         "maxBayNo": 43, | 
 |  |  |         "hiddenArr": [1,43] | 
 |  |  |     }, | 
 |  |  |          { | 
 |  |  |          "type": "rack", | 
 |  |  |          "id": "rack5", | 
 |  |  |          "top": 209, | 
 |  |  |          "left": 820, | 
 |  |  |          "width": 1050, | 
 |  |  |          "height": 23, | 
 |  |  |          "minBayNo": 1, | 
 |  |  |          "maxBayNo": 43, | 
 |  |  |          "hiddenArr": [1,43] | 
 |  |  |      }, | 
 |  |  |         { | 
 |  |  |         "type": "rack", | 
 |  |  |         "id": "rack4", | 
 |  |  |         "top": 232, | 
 |  |  |         "left": 820, | 
 |  |  |         "width": 1050, | 
 |  |  |         "height": 23, | 
 |  |  |         "minBayNo": 1, | 
 |  |  |         "maxBayNo": 43, | 
 |  |  |         "hiddenArr": [1,43] | 
 |  |  |     }, | 
 |  |  |          /*{ | 
 |  |  |          "type": "rack", | 
 |  |  |          "id": "rack3", | 
 |  |  |          "top": 182, | 
 |  |  |          "left": 820, | 
 |  |  |          "width": 1050, | 
 |  |  |          "height": 23, | 
 |  |  |          "minBayNo": 1, | 
 |  |  |          "maxBayNo": 43, | 
 |  |  |          "hiddenArr": [1,43] | 
 |  |  |      },*/ | 
 |  |  |         /*{ | 
 |  |  |         "type": "rack", | 
 |  |  |         "id": "rack2", | 
 |  |  |         "top": 159, | 
 |  |  |         "left": 820, | 
 |  |  |         "width": 1050, | 
 |  |  |         "height": 23, | 
 |  |  |         "minBayNo": 1, | 
 |  |  |         "maxBayNo": 43, | 
 |  |  |         "hiddenArr": [1,43] | 
 |  |  |     },*/ | 
 |  |  |         /*{ | 
 |  |  |         "type": "rack", | 
 |  |  |         "id": "rack1", | 
 |  |  |         "top": 98, | 
 |  |  |         "left": 820, | 
 |  |  |         "width": 1050, | 
 |  |  |         "height": 23, | 
 |  |  |         "minBayNo": 1, | 
 |  |  |         "maxBayNo": 43, | 
 |  |  |         "hiddenArr": [1,43] | 
 |  |  |     },*/ | 
 |  |  |          /*{ | 
 |  |  |          "type": "rack", | 
 |  |  |          "id": "rack0", | 
 |  |  |          "top": 75, | 
 |  |  |          "left": 820, | 
 |  |  |          "width": 1050, | 
 |  |  |          "height": 23, | 
 |  |  |          "minBayNo": 1, | 
 |  |  |          "maxBayNo": 43, | 
 |  |  |          "hiddenArr": [1,43] | 
 |  |  |      }*/ | 
 |  |  |     ], | 
 |  |  |     "crns": [ | 
 |  |  |     { | 
 |  |  |         "type": "crane", | 
 |  |  |         "id": "crn-2", | 
 |  |  |         "text": "2", | 
 |  |  |         "top": 268, | 
 |  |  |         "left": 855, | 
 |  |  |         "width": 93, | 
 |  |  |         "height": 22 | 
 |  |  |     }, | 
 |  |  |     /*{ | 
 |  |  |         "type": "crane", | 
 |  |  |         "id": "crn-1", | 
 |  |  |         "text": "1", | 
 |  |  |         "top": 132, | 
 |  |  |         "left": 855, | 
 |  |  |         "width": 93, | 
 |  |  |         "height": 22 | 
 |  |  |     }, */ | 
 |  |  |     { | 
 |  |  |         "type": "track", | 
 |  |  |         "id": "lb_track2", | 
 |  |  |         "text": "", | 
 |  |  |         "top": 278, | 
 |  |  |         "left": 769, | 
 |  |  |         "width": 850, | 
 |  |  |         "height": 2 | 
 |  |  |     }, | 
 |  |  |    /* { | 
 |  |  |         "type": "track", | 
 |  |  |         "id": "lb_track1", | 
 |  |  |         "text": "", | 
 |  |  |         "top": 143, | 
 |  |  |         "left": 769, | 
 |  |  |         "width": 850, | 
 |  |  |         "height": 2 | 
 |  |  |     }*/ | 
 |  |  |     ], | 
 |  |  |     "areas": [{ | 
 |  |  |         "type": "Control_floor", | 
 |  |  |         "id": "tabControl_floor1", | 
 |  |  |         "text": "楼层", | 
 |  |  |         "top": 66, | 
 |  |  |         "left": 580, | 
 |  |  |         "width": 334, | 
 |  |  |         "height": 714, | 
 |  |  |         "floors": [{ | 
 |  |  |             "type": "floor", | 
 |  |  |             "id": "page_floor1", | 
 |  |  |             "text": "1F", | 
 |  |  |             "top": 4, | 
 |  |  |             "left": 422, | 
 |  |  |             "width": 308, | 
 |  |  |             "height": 706, | 
 |  |  |             "stns": [ | 
 |  |  |             { | 
 |  |  |                             "type": "stn", | 
 |  |  |                             "id": "site-100", | 
 |  |  |                             "text": "2052", | 
 |  |  |                             "top": 150, | 
 |  |  |                             "left": 1050, | 
 |  |  |                             "width": 62, | 
 |  |  |                             "height": 23 | 
 |  |  |                         }, | 
 |  |  |             { | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-100", | 
 |  |  |                 "text": "2052", | 
 |  |  |                 "top": 180, | 
 |  |  |                 "left": 1050, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             }, | 
 |  |  |             { | 
 |  |  |                             "type": "stn", | 
 |  |  |                             "id": "site-101", | 
 |  |  |                             "text": "2051", | 
 |  |  |                             "top": 150, | 
 |  |  |                             "left": 1150, | 
 |  |  |                             "width": 62, | 
 |  |  |                             "height": 23 | 
 |  |  |                         }, | 
 |  |  |             { | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-101", | 
 |  |  |                 "text": "2051", | 
 |  |  |                 "top": 180, | 
 |  |  |                 "left": 1150, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },/*{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-102", | 
 |  |  |                 "text": "RGV小车", | 
 |  |  |                 "top": 99, | 
 |  |  |                 "left": 643, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },*//*{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-103", | 
 |  |  |                 "text": "1011", | 
 |  |  |                 "top": 99, | 
 |  |  |                 "left": 579, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },*/ | 
 |  |  |                 /*{ | 
 |  |  |                     "type": "stn", | 
 |  |  |                     "id": "site-103", | 
 |  |  |                     "text": "1020", | 
 |  |  |                     "top": 70, | 
 |  |  |                     "left": 579, | 
 |  |  |                     "width": 62, | 
 |  |  |                     "height": 23 | 
 |  |  |                 },*/ | 
 |  |  |                 /*{ | 
 |  |  |                     "type": "stn", | 
 |  |  |                     "id": "site-103", | 
 |  |  |                     "text": "", | 
 |  |  |                     "top": 70, | 
 |  |  |                     "left": 515, | 
 |  |  |                     "width": 62, | 
 |  |  |                     "height": 23 | 
 |  |  |                 },*/ | 
 |  |  |                 /*{ | 
 |  |  |                     "type": "stn", | 
 |  |  |                     "id": "site-103", | 
 |  |  |                     "text": "", | 
 |  |  |                     "top": 70, | 
 |  |  |                     "left": 450, | 
 |  |  |                     "width": 62, | 
 |  |  |                     "height": 23 | 
 |  |  |                 },*/ | 
 |  |  |             //     { | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-104", | 
 |  |  |             //     "text": "104", | 
 |  |  |             //     "top": 124, | 
 |  |  |             //     "left": 579, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 34 | 
 |  |  |             // }, | 
 |  |  |             { | 
 |  |  |                             "type": "stn", | 
 |  |  |                             "id": "site-125", | 
 |  |  |                             "text": "2053", | 
 |  |  |                             "top": 150, | 
 |  |  |                             "left": 950, | 
 |  |  |                             "width": 62, | 
 |  |  |                             "height": 23 | 
 |  |  |                         }, | 
 |  |  |                 { | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-125", | 
 |  |  |                 "text": "2054", | 
 |  |  |                 "top": 180, | 
 |  |  |                 "left": 950, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             }, | 
 |  |  |             { | 
 |  |  |                             "type": "stn", | 
 |  |  |                             "id": "site-124", | 
 |  |  |                             "text": "2055", | 
 |  |  |                             "top": 150, | 
 |  |  |                             "left": 850, | 
 |  |  |                             "width": 62, | 
 |  |  |                             "height": 23 | 
 |  |  |                         }, | 
 |  |  |             { | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-124", | 
 |  |  |                 "text": "2056", | 
 |  |  |                 "top": 180, | 
 |  |  |                 "left": 850, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },/*{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-123", | 
 |  |  |                 "text": "RGV小车", | 
 |  |  |                 "top": 160, | 
 |  |  |                 "left": 643, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },*/ | 
 |  |  |             //     { | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-122", | 
 |  |  |             //     "text": "122", | 
 |  |  |             //     "top": 160, | 
 |  |  |             //     "left": 579, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 23 | 
 |  |  |             // }, | 
 |  |  |             //     { | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-121", | 
 |  |  |             //     "text": "121", | 
 |  |  |             //     "top": 186, | 
 |  |  |             //     "left": 579, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 42 | 
 |  |  |             // }, | 
 |  |  |                 { | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-120", | 
 |  |  |                 "text": "2057", | 
 |  |  |                 "top": 231, | 
 |  |  |                 "left": 771, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-119", | 
 |  |  |                 "text": "2057", | 
 |  |  |                 "top": 231, | 
 |  |  |                 "left": 707, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },/*{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-118", | 
 |  |  |                 "text": "RGV小车", | 
 |  |  |                 "top": 231, | 
 |  |  |                 "left": 643, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },*/ | 
 |  |  |             //     { | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-117", | 
 |  |  |             //     "text": "117", | 
 |  |  |             //     "top": 231, | 
 |  |  |             //     "left": 579, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 23 | 
 |  |  |             // },{ | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-116", | 
 |  |  |             //     "text": "116", | 
 |  |  |             //     "top": 256, | 
 |  |  |             //     "left": 579, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 46 | 
 |  |  |             // }, | 
 |  |  |                 { | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-115", | 
 |  |  |                 "text": "2058", | 
 |  |  |                 "top": 304, | 
 |  |  |                 "left": 771, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-114", | 
 |  |  |                 "text": "2058", | 
 |  |  |                 "top": 304, | 
 |  |  |                 "left": 707, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             }, | 
 |  |  |                 /*{ | 
 |  |  |                     "type": "stn", | 
 |  |  |                     "id": "site-114", | 
 |  |  |                     "text": "1016", | 
 |  |  |                     "top": 330, | 
 |  |  |                     "left": 707, | 
 |  |  |                     "width": 62, | 
 |  |  |                     "height": 23 | 
 |  |  |                 },*/ | 
 |  |  |                 /*{ | 
 |  |  |                     "type": "stn", | 
 |  |  |                     "id": "site-114", | 
 |  |  |                     "text": "1018", | 
 |  |  |                     "top": 356, | 
 |  |  |                     "left": 707, | 
 |  |  |                     "width": 62, | 
 |  |  |                     "height": 23 | 
 |  |  |                 },*/ | 
 |  |  |                 /*{ | 
 |  |  |                     "type": "stn", | 
 |  |  |                     "id": "site-114", | 
 |  |  |                     "text": "1019", | 
 |  |  |                     "top": 356, | 
 |  |  |                     "left": 772, | 
 |  |  |                     "width": 62, | 
 |  |  |                     "height": 23 | 
 |  |  |                 },*/ | 
 |  |  |                 /*{ | 
 |  |  |                     "type": "stn", | 
 |  |  |                     "id": "site-114", | 
 |  |  |                     "text": "", | 
 |  |  |                     "top": 356, | 
 |  |  |                     "left": 837, | 
 |  |  |                     "width": 62, | 
 |  |  |                     "height": 23 | 
 |  |  |                 },*/ | 
 |  |  |                 /*{ | 
 |  |  |                     "type": "stn", | 
 |  |  |                     "id": "site-114", | 
 |  |  |                     "text": "", | 
 |  |  |                     "top": 356, | 
 |  |  |                     "left": 902, | 
 |  |  |                     "width": 62, | 
 |  |  |                     "height": 23 | 
 |  |  |                 },*/ | 
 |  |  |                 /*{ | 
 |  |  |                     "type": "stn", | 
 |  |  |                     "id": "site-114", | 
 |  |  |                     "text": "1017", | 
 |  |  |                     "top": 383, | 
 |  |  |                     "left": 707, | 
 |  |  |                     "width": 62, | 
 |  |  |                     "height": 23 | 
 |  |  |                 },*//*{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-113", | 
 |  |  |                 "text": "RGV小车", | 
 |  |  |                 "top": 304, | 
 |  |  |                 "left": 643, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },*/ | 
 |  |  |             //     { | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-112", | 
 |  |  |             //     "text": "112", | 
 |  |  |             //     "top": 304, | 
 |  |  |             //     "left": 579, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 23 | 
 |  |  |             // }, | 
 |  |  |                 /*{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-105", | 
 |  |  |                 "text": "1012", | 
 |  |  |                 "top": 99, | 
 |  |  |                 "left": 515, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },*//*{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-106", | 
 |  |  |                 "text": "1013", | 
 |  |  |                 "top": 124, | 
 |  |  |                 "left": 515, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 34 | 
 |  |  |             },*//*{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-107", | 
 |  |  |                 "text": "1013", | 
 |  |  |                 "top": 160, | 
 |  |  |                 "left": 515, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },*//*{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-108", | 
 |  |  |                 "text": "1013", | 
 |  |  |                 "top": 186, | 
 |  |  |                 "left": 515, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 42 | 
 |  |  |             },*//*{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-109", | 
 |  |  |                 "text": "1013", | 
 |  |  |                 "top": 231, | 
 |  |  |                 "left": 515, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 70 | 
 |  |  |             },*//*{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-110", | 
 |  |  |                 "text": "1014", | 
 |  |  |                 "top": 304, | 
 |  |  |                 "left": 515, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },*//*{ | 
 |  |  |                 "type": "stn", | 
 |  |  |                 "id": "site-111", | 
 |  |  |                 "text": "1015", | 
 |  |  |                 "top": 329, | 
 |  |  |                 "left": 515, | 
 |  |  |                 "width": 62, | 
 |  |  |                 "height": 23 | 
 |  |  |             },*/ | 
 |  |  |             //     { | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-1001", | 
 |  |  |             //     "text": "1001", | 
 |  |  |             //     "top": 99, | 
 |  |  |             //     "left": 451, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 23 | 
 |  |  |             // }, | 
 |  |  |             //     { | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-1002", | 
 |  |  |             //     "text": "1002", | 
 |  |  |             //     "top": 160, | 
 |  |  |             //     "left": 451, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 23 | 
 |  |  |             // },{ | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-1003", | 
 |  |  |             //     "text": "1003", | 
 |  |  |             //     "top": 231, | 
 |  |  |             //     "left": 451, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 23 | 
 |  |  |             // },{ | 
 |  |  |             //     "type": "stn", | 
 |  |  |             //     "id": "site-1004", | 
 |  |  |             //     "text": "1004", | 
 |  |  |             //     "top": 304, | 
 |  |  |             //     "left": 451, | 
 |  |  |             //     "width": 62, | 
 |  |  |             //     "height": 23 | 
 |  |  |             // } | 
 |  |  |             ] | 
 |  |  |         }] | 
 |  |  |     }] | 
 |  |  | } | 
 
 |  |  | 
 |  |  |                 <h6>AUTOMATIC WAREHOUSE WCS MONITORING DIAGRAM</h6> | 
 |  |  |             </div> | 
 |  |  |         </div> | 
 |  |  |         <select onchange="window.open(this.value)"> | 
 |  |  |             <option value = "console1.html">--成品一楼--</option> | 
 |  |  |             <option value="console2.html" >-半成品二楼-</option> | 
 |  |  |             <option value="console3.html">-成品二楼-</option> | 
 |  |  |             <option value="console.html"selected ="selected">-半成品一楼-</option> | 
 |  |  |         </select> | 
 |  |  |         <!-- 货架 + 堆垛机 + 入库站点 --> | 
 |  |  |         <div class="main-part"> | 
 |  |  |  | 
 
| New file | 
 |  |  | 
 |  |  | <!DOCTYPE html> | 
 |  |  | <html lang="en"> | 
 |  |  | <head> | 
 |  |  |     <meta charset="UTF-8"> | 
 |  |  |     <title>自动仓库wcs系统</title> | 
 |  |  |     <link rel="stylesheet" href="../../static/wcs/css/render.css"> | 
 |  |  |     <link rel="stylesheet" href="../../static/wms/layui/css/layui.css" media="all"> | 
 |  |  |     <link rel="stylesheet" href="../../static/wms/css/cool.css" media="all"> | 
 |  |  |     <link rel="stylesheet" href="../../static/wms/css/common.css" media="all"> | 
 |  |  |     <script type="text/javascript" src="../../static/wms/js/jquery/jquery-3.3.1.min.js"></script> | 
 |  |  |     <script type="text/javascript" src="../../static/wms/layui/layui.js" charset="utf-8"></script> | 
 |  |  |     <script type="text/javascript" src="../../static/wms/js/common.js" charset="utf-8"></script> | 
 |  |  |     <script type="text/javascript" src="../../static/wms/js/cool.js" charset="utf-8"></script> | 
 |  |  |     <!--地图json--> | 
 |  |  |     <script src="../../static/wcs/js/console1.map.js"></script> | 
 |  |  |     <script src="../../static/wcs/js/console.js"></script> | 
 |  |  |     <script src="../../static/wcs/js/common.js"></script> | 
 |  |  | </head> | 
 |  |  | <script type="text/html" id="errorTpl"> | 
 |  |  |     {{# if( d.error === false ){ }} | 
 |  |  |     <span name="level" class="layui-badge layui-badge-green">正常</span> | 
 |  |  |     {{# } else { }} | 
 |  |  |     <span name="level" class="layui-badge layui-badge-red">异常</span> | 
 |  |  |     {{# } }} | 
 |  |  | </script> | 
 |  |  | <body> | 
 |  |  |     <div id="main"> | 
 |  |  |         <div class="head"> | 
 |  |  |             <div class="head-left"> | 
 |  |  |                 <h1>自动仓库WCS监控图</h1> | 
 |  |  |                 <h6>AUTOMATIC WAREHOUSE WCS MONITORING DIAGRAM</h6> | 
 |  |  |             </div> | 
 |  |  |         </div> | 
 |  |  |         <select onchange="window.open(this.value)"> | 
 |  |  |             <option value = "console1.html">--成品一楼--</option> | 
 |  |  |             <option value="" >-半成品二楼-</option> | 
 |  |  |             <option value="">-成品二楼-</option> | 
 |  |  |             <option value="console.html"selected ="selected">-半成品一楼-</option> | 
 |  |  |         </select> | 
 |  |  |         <!-- 货架 + 堆垛机 + 入库站点 --> | 
 |  |  |         <div class="main-part"> | 
 |  |  |  | 
 |  |  |         </div> | 
 |  |  |  | 
 |  |  | <!--        <!–设备列表–>--> | 
 |  |  | <!--        <div class="device-info">--> | 
 |  |  | <!--            <table class="layui-hide" id="deviceInfo" lay-filter="deviceInfo"></table>--> | 
 |  |  | <!--        </div>--> | 
 |  |  |  | 
 |  |  |         <div id="body"> | 
 |  |  |             <!-- 总开关 --> | 
 |  |  |             <div class="system-state"> | 
 |  |  |                 <div class="body-head">总开关</div> | 
 |  |  |                 <div class="switch"> | 
 |  |  |                     <div id="system-icon" class="system-icon-open" onclick="systemSwitch()"></div> | 
 |  |  |                     <div class="switch_r"> | 
 |  |  |                         <p>系统状态</p> | 
 |  |  |                         <p id="system-run-desc">系统运行中</p> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |             </div> | 
 |  |  |             <!-- 堆垛机状态 --> | 
 |  |  |             <div class="machine-status"> | 
 |  |  |                 <div class="body-head">堆垛机状态</div> | 
 |  |  |                 <div class="state"> | 
 |  |  |                     <span>堆垛机 1</span> | 
 |  |  |                     <span class="state-ss machine-put-flag    ">入库</span> | 
 |  |  |                 </div> | 
 |  |  |                 <div class="state"> | 
 |  |  |                     <span>堆垛机 2</span> | 
 |  |  |                     <span class="state-ss machine-auto-flag    ">自动</span> | 
 |  |  |  | 
 |  |  |                 </div> | 
 |  |  |                 <div class="button"><span>所有状态</span></div> | 
 |  |  |                 <div class="button item-group"> | 
 |  |  |                     <span class="machine-put-flag">入库</span> | 
 |  |  |                     <span class="machine-take-flag">出库</span> | 
 |  |  |                     <span class="machine-stock-move-flag">库到库</span> | 
 |  |  |                     <span class="machine-site-move-flag">站到站</span> | 
 |  |  |                     <span class="machine-p-move-flag">PToP</span> | 
 |  |  |                     <span class="machine-error-flag">异常</span> | 
 |  |  |                     <span class="machine-auto-flag">自动</span> | 
 |  |  |                     <span class="machine-unauto-flag">非自动/手动</span> | 
 |  |  |                 </div> | 
 |  |  |             </div> | 
 |  |  |             <div class="line-status"> | 
 |  |  |                 <div class="body-head">输送线状态</div> | 
 |  |  |                 <div class="state states"> | 
 |  |  |                     <span>运输线总数</span> | 
 |  |  |                     <span id="line-total" class="line-ss"></span> | 
 |  |  |                 </div> | 
 |  |  |                 <div class="button"><span>所有状态</span></div> | 
 |  |  |                 <div class="button item-group"> | 
 |  |  |                     <span class="site-auto-run-id">自动+有物+ID</span> | 
 |  |  |                     <span class="site-auto-run">自动+有物</span> | 
 |  |  |                     <span class="site-auto-id">自动+ID</span> | 
 |  |  |                     <span class="site-auto">自动</span> | 
 |  |  |                     <span class="site-unauto">非自动/手动</span> | 
 |  |  |                 </div> | 
 |  |  |             </div> | 
 |  |  |             <div class="bar-code"> | 
 |  |  |                 <div class="body-head" id="code">条码扫描器</div> | 
 |  |  |                 <div class="tablebox"> | 
 |  |  |                     <div class="table-head"> | 
 |  |  |                         <li><span>条码名称</span><span class="right">扫码时间</span></li> | 
 |  |  |                     </div> | 
 |  |  |                     <div id="barcode1" class="table-body"> | 
 |  |  |  | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <div class="tablebox"> | 
 |  |  |                     <div class="table-head"> | 
 |  |  |                         <li><span>条码名称</span><span class="right">扫码时间</span></li> | 
 |  |  |                     </div> | 
 |  |  |                     <div id="barcode2" class="table-body"> | 
 |  |  |  | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <div class="tablebox"> | 
 |  |  |                     <div class="table-head"> | 
 |  |  |                         <li><span>条码名称</span><span class="right">扫码时间</span></li> | 
 |  |  |                     </div> | 
 |  |  |                     <div id="barcode3" class="table-body"> | 
 |  |  |  | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |             </div> | 
 |  |  |         </div> | 
 |  |  |         <!-- 堆垛机弹窗 --> | 
 |  |  |         <div id="crnWindow" style="display: none;" class="animate__animated animate__fadeIn"> | 
 |  |  |             <div id="crnWindow-head"> | 
 |  |  |                 <div class='detailed'></div> | 
 |  |  |                 <button></button> | 
 |  |  |             </div> | 
 |  |  |             <form> | 
 |  |  |                 <!-- 堆垛机号 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label" style> | 
 |  |  |                         <span>堆垛机号:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="crnNo" value="" id="crnNo"> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 工作号 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>工作号:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="workNo" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 站源 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>站源:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="sourceStaNo" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 目标站 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>目标站:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="staNo" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 工作状态 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>工作状态:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="wrkSts" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 出入类型 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>出入类型:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="ioType" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 源库位 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>源库位:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="sourceLocNo" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 目标库位 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>目标库位:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="locNo" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 堆垛机状态 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>堆垛机状态:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="crnStatus" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 异常 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>异常:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="error" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 操作按钮 --> | 
 |  |  |                 <div class="form-item" style="display: flex;"> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <div>入库:开<input type="radio" name="pakIn" id="pakInY" value="1"> 关<input type="radio" name="pakIn" id="pakInN" value="0"/></div> | 
 |  |  |                         <div>出库:开<input type="radio" name="pakOut" id="pakOutY" value="1"> 关<input type="radio" name="pakOut" id="pakOutN" value="0"/></div> | 
 |  |  |                     </div> | 
 |  |  |                     <div><a id="crnCommand" class="layui-btn">下发命令</a></div> | 
 |  |  |                 </div> | 
 |  |  |             </form> | 
 |  |  |         </div> | 
 |  |  |         <!-- 输送设备弹窗 --> | 
 |  |  |         <div id="siteWindow" style="display: none;" class="animate__animated animate__fadeIn"> | 
 |  |  |             <!-- 表头 --> | 
 |  |  |             <div id="siteWindow-head"> | 
 |  |  |                 <div class='detailed'></div> | 
 |  |  |                 <button></button> | 
 |  |  |             </div> | 
 |  |  |             <form> | 
 |  |  |                 <!-- 设备号 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>设备号:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="siteId" value="" id="devpSiteId"> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 工作号 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>工作号:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="workNo" value="" id="devpWorkNo"> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 工作状态 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>工作状态:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="wrkSts" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 自动 --> | 
 |  |  |                 <div class="form-item-checkbox"> | 
 |  |  |                     <div class="form-item-label-checkbox"> | 
 |  |  |                         <span>自动</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input-checkbox"> | 
 |  |  |                         <input type="checkbox" name="autoing"> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 有物 --> | 
 |  |  |                 <div class="form-item-checkbox"> | 
 |  |  |                     <div class="form-item-label-checkbox"> | 
 |  |  |                         <span>有物</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input-checkbox"> | 
 |  |  |                         <input type="checkbox" name="loading"> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 能入 --> | 
 |  |  |                 <div class="form-item-checkbox"> | 
 |  |  |                     <div class="form-item-label-checkbox"> | 
 |  |  |                         <span>能入</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input-checkbox"> | 
 |  |  |                         <input type="checkbox" name="canining"> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 能出 --> | 
 |  |  |                 <div class="form-item-checkbox"> | 
 |  |  |                     <div class="form-item-label-checkbox"> | 
 |  |  |                         <span>能出</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input-checkbox"> | 
 |  |  |                         <input type="checkbox" name="canouting"> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 出入类型 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>出入类型:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="ioType" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 源站 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>源站:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="sourceStaNo" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 目标站 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>目标站:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="staNo" value="" id="devpStaNo"> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 源库位 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>源库位:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="sourceLocNo" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 目标库位 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>目标库位:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="locNo" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 操作按钮 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <a id="devpCommand" class="layui-btn">下发命令</a> | 
 |  |  |                 </div> | 
 |  |  |             </form> | 
 |  |  |         </div> | 
 |  |  |     </div> | 
 |  |  |  | 
 |  |  | </body> | 
 |  |  |  | 
 |  |  | </html> | 
 |  |  | <script> | 
 |  |  |     getMap(); | 
 |  |  | </script> | 
 |  |  | <script> | 
 |  |  |     setInterval(function () { | 
 |  |  |         getCodeData(); | 
 |  |  |         renderBarCode(); | 
 |  |  |     }, 1000) | 
 |  |  |     var tData = [],tData1 = [],tData2 = [],tData3 = []; | 
 |  |  |     function getCodeData() { | 
 |  |  |         $.ajax({ | 
 |  |  |             url: baseUrl + '/console/barcode/output/site', | 
 |  |  |             method: 'GET', | 
 |  |  |             success: function (res) { | 
 |  |  |                 // console.log(res) | 
 |  |  |                 if (res.code === 200) { | 
 |  |  |                     tData = eval(res.data); | 
 |  |  |                     if (tData.length <= 5) { | 
 |  |  |                         tData1 = tData | 
 |  |  |                     } else if (tData.length <= 10) { | 
 |  |  |                         tData1 = tData.slice(0, 5) | 
 |  |  |                         tData.splice(0, 5) | 
 |  |  |                         tData2 = tData | 
 |  |  |                     } else if (tData.length <= 15) { | 
 |  |  |                         tData1 = tData.slice(0, 5) | 
 |  |  |                         tData2 = tData.slice(6, 10) | 
 |  |  |                         tData.splice(0, 10) | 
 |  |  |                         tData3 = tData | 
 |  |  |                     } else { | 
 |  |  |                         tData = tData.slice(-15) | 
 |  |  |                         tData1 = tData.slice(-15) | 
 |  |  |                         tData2 = tData.slice(-10) | 
 |  |  |                         tData3 = tData.slice(-5) | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }) | 
 |  |  |     } | 
 |  |  |     function renderBarCode() { | 
 |  |  |         for (var i = 0; i < tData1.length; i++) { | 
 |  |  |             var str1 = '<li><span>' + tData1[i].id +'-'+ tData1[i].scale +'kg'+ '</span><span class="right">' + tData1[i].time + '</span></li>' | 
 |  |  |             $('#scale1').append(str1) | 
 |  |  |         } | 
 |  |  |         for (var j = 0; j < tData2.length; j++) { | 
 |  |  |             var str2 = '<li><span>' + tData2[j].id +'-'+ tData1[i].scale +'kg'+ '</span><span class="right">' + tData2[j].time + '</span></li>' | 
 |  |  |             $('#scale2').append(str2) | 
 |  |  |         } | 
 |  |  |         for (var k = 0; k < tData3.length; k++) { | 
 |  |  |             var str3 = '<li><span>' + tData3[k].id +'-'+ tData1[i].scale +'kg'+ '</span><span class="right">' + tData3[k].time + '</span></li>' | 
 |  |  |             $('#scale3').append(str3) | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  | </script> | 
 |  |  | <script type="text/javascript"> | 
 |  |  |     // 弹窗站点信息 | 
 |  |  |     $("body").on('click', '.site', function (e) { | 
 |  |  |         console.log(e) | 
 |  |  |         var id = this.id.split("-")[1]; | 
 |  |  |         $("#siteWindow").attr("style", "display:block;");//显示div | 
 |  |  |         $("#crnWindow").attr("style", "display:none;"); | 
 |  |  |         $(".detailed").empty(); | 
 |  |  |         $('.detailed').append(id + '站点详细信息'); | 
 |  |  |         $.ajax({ | 
 |  |  |             url: baseUrl + "/console/site/detail", | 
 |  |  |             headers: { | 
 |  |  |                 'token': localStorage.getItem('token') | 
 |  |  |             }, | 
 |  |  |             data: { | 
 |  |  |                 siteId: id | 
 |  |  |             }, | 
 |  |  |             method: 'post', | 
 |  |  |             success: function (res) { | 
 |  |  |                 for (var val in res.data) { | 
 |  |  |                     var find = $("#siteWindow").find(":input[name='" + val + "']"); | 
 |  |  |                     if (find[0].type === 'text') { | 
 |  |  |                         find.val(res.data[val]); | 
 |  |  |                     } else if (find[0].type === 'checkbox') { | 
 |  |  |                         find.attr("checked", res.data[val] === 'Y'); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |         }) | 
 |  |  |  | 
 |  |  |     }); | 
 |  |  |     // 堆垛机信息 | 
 |  |  |     $("body").on('click', '.machine', function () { | 
 |  |  |         var id = this.id.split("-")[1]; | 
 |  |  |         $("#crnWindow").attr('style', 'display:block;'); | 
 |  |  |         $("#siteWindow").attr("style", "display:none;"); | 
 |  |  |         $('.detailed').empty(); | 
 |  |  |         $('.detailed').append(id + '号堆垛机'); | 
 |  |  |         $.ajax({ | 
 |  |  |             url: baseUrl + "/console/crn/detail", | 
 |  |  |             headers: { | 
 |  |  |                 'token': localStorage.getItem('token') | 
 |  |  |             }, | 
 |  |  |             data: { | 
 |  |  |                 crnNo: id | 
 |  |  |             }, | 
 |  |  |             method: 'post', | 
 |  |  |             success: function (res) { | 
 |  |  |                 console.log(res) | 
 |  |  |                 for (var val in res.data) { | 
 |  |  |                     if (val === "inEnable") { | 
 |  |  |                         if (res.data[val] === 'Y') { | 
 |  |  |                             $("#pakInY").prop("checked", true); | 
 |  |  |                         }else{ | 
 |  |  |                             $("#pakInN").prop("checked", true); | 
 |  |  |                         } | 
 |  |  |                     }else if (val === "outEnable") { | 
 |  |  |                         if (res.data[val] === 'Y') { | 
 |  |  |                             $("#pakOutY").prop("checked", true); | 
 |  |  |                         }else{ | 
 |  |  |                             $("#pakOutN").prop("checked", true); | 
 |  |  |                         } | 
 |  |  |                     }else { | 
 |  |  |                         var find = $("#crnWindow").find(":input[name='" + val + "']"); | 
 |  |  |                         if (find[0].type === 'text') { | 
 |  |  |                             find.val(res.data[val]); | 
 |  |  |                         } else if (find[0].type === 'checkbox') { | 
 |  |  |                             find.attr("checked", res.data[val] === 'Y'); | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |         }) | 
 |  |  |  | 
 |  |  |     }); | 
 |  |  |     // 弹窗关闭 | 
 |  |  |     $('button').on('click', function () { | 
 |  |  |         $('#siteWindow').attr('style', 'display:none') | 
 |  |  |         $('#crnWindow').attr('style', 'display:none') | 
 |  |  |     }) | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     var crn1Position = 0; | 
 |  |  |     var crn2Position = 0; | 
 |  |  |     var crn3Position = 0; | 
 |  |  |     var crn4Position = 0; | 
 |  |  |     var crn5Position = 0; | 
 |  |  |  | 
 |  |  |     // 初始化 | 
 |  |  |     getSitesInfo(); | 
 |  |  |     getCrnInfo(); | 
 |  |  |     getSystemRunningStatus(); | 
 |  |  |     getBarcodeInfo(); | 
 |  |  |     getScaleInfo(); | 
 |  |  |     // 实时访问 | 
 |  |  |     setInterval(function () { | 
 |  |  |         getCrnInfo(); | 
 |  |  |         getSystemRunningStatus(); | 
 |  |  |         getBarcodeInfo(); | 
 |  |  |         getScaleInfo(); | 
 |  |  |     }, 1000); | 
 |  |  |     setInterval(function () { | 
 |  |  |         getSitesInfo(); | 
 |  |  |     }, 3000); | 
 |  |  |  | 
 |  |  |     // 系统运行开关 | 
 |  |  |     function systemSwitch() { | 
 |  |  |         if (parent.systemRunning) { | 
 |  |  |             layer.prompt({title: '请输入口令,并停止 WCS 系统', formType: 1, shadeClose: true}, function (pass, idx) { | 
 |  |  |                 layer.close(idx); | 
 |  |  |                 doSwitch(0, pass); // 停止wcs系统 | 
 |  |  |             }); | 
 |  |  |         } else { | 
 |  |  |             doSwitch(1); // 启动wcs系统 | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     // 请求服务器控制wcs系统运行状态 | 
 |  |  |     function doSwitch(operatorType, password) { | 
 |  |  |         // 加载tips | 
 |  |  |         var index = layer.load(1, { | 
 |  |  |             shade: [0.1, '#fff'] | 
 |  |  |         }); | 
 |  |  |         $.ajax({ | 
 |  |  |             url: baseUrl + "/console/system/switch", | 
 |  |  |             headers: {'token': localStorage.getItem('token')}, | 
 |  |  |             // async: false, | 
 |  |  |             data: { | 
 |  |  |                 operatorType: operatorType, | 
 |  |  |                 password: password | 
 |  |  |             }, | 
 |  |  |             method: 'POST', | 
 |  |  |             success: function (res) { | 
 |  |  |                 layer.close(index); | 
 |  |  |                 if (res.code === 200) { | 
 |  |  |                     if (res.data.status) { | 
 |  |  |                         $('#system-icon').attr("class", "system-icon-open"); | 
 |  |  |                         $('#system-run-desc').html("系统运行中..."); | 
 |  |  |                         parent.systemRunning = true; | 
 |  |  |                     } else { | 
 |  |  |                         $('#system-icon').attr("class", "system-icon-close"); | 
 |  |  |                         $('#system-run-desc').html("系统已停止!"); | 
 |  |  |                         parent.systemRunning = false; | 
 |  |  |                     } | 
 |  |  |                 } else if (res.code === 403) { | 
 |  |  |                     parent.location.href = baseUrl + "/login"; | 
 |  |  |                 } else { | 
 |  |  |                     console.log(res.msg); | 
 |  |  |  | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     // 获取wcs系统运行状态 | 
 |  |  |     function getSystemRunningStatus() { | 
 |  |  |         $.ajax({ | 
 |  |  |             url: baseUrl + "/console/system/running/status", | 
 |  |  |             headers: {'token': localStorage.getItem('token')}, | 
 |  |  |             method: 'POST', | 
 |  |  |             success: function (res) { | 
 |  |  |                 if (res.code === 200) { | 
 |  |  |                     if (res.data.status) { | 
 |  |  |                         $('#system-icon').attr("class", "system-icon-open"); | 
 |  |  |                         $('#system-run-desc').html("系统运行中..."); | 
 |  |  |                         parent.systemRunning = true; | 
 |  |  |                     } else { | 
 |  |  |                         $('#system-icon').attr("class", "system-icon-close"); | 
 |  |  |                         $('#system-run-desc').html("系统已停止!"); | 
 |  |  |                         parent.systemRunning = false; | 
 |  |  |                     } | 
 |  |  |                 } else if (res.code === 403) { | 
 |  |  |                     parent.location.href = baseUrl + "/login"; | 
 |  |  |                 } else { | 
 |  |  |                     console.log(res.msg); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     // 输送设备实时数据获取 | 
 |  |  |     function getSitesInfo() { | 
 |  |  |         // carAnimate(112,4); | 
 |  |  |         $.ajax({ | 
 |  |  |             url: baseUrl + "/console/latest/data/site", | 
 |  |  |             headers: {'token': localStorage.getItem('token')}, | 
 |  |  |             method: 'POST', | 
 |  |  |             success: function (res) { | 
 |  |  |                 if (res.code === 200) { | 
 |  |  |                     var sites = res.data; | 
 |  |  |                     for (var i = 0; i < sites.length; i++) { | 
 |  |  |                         var siteEl = $("#site-" + sites[i].siteId); | 
 |  |  |                         siteEl.attr("class", "site " + sites[i].siteStatus); | 
 |  |  |                         if (sites[i].workNo != null && sites[i].workNo > 0) { | 
 |  |  |                             siteEl.html(sites[i].siteId + "[" + sites[i].workNo + "]"); | 
 |  |  |                         } else { | 
 |  |  |                             siteEl.html(sites[i].siteId); | 
 |  |  |                         } | 
 |  |  |                         // RGV位置 | 
 |  |  |                         if(sites[i].siteId === '112' || sites[i].siteId === '212'){ | 
 |  |  |                             carAnimate(Number(sites[i].siteId), Number(sites[i].nearbySta)); | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                 } else if (res.code === 403) { | 
 |  |  |                     parent.location.href = baseUrl + "/login"; | 
 |  |  |                 } else { | 
 |  |  |                     console.log(res.msg); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     // 堆垛机实时数据获取 | 
 |  |  |     function getCrnInfo() { | 
 |  |  |         $.ajax({ | 
 |  |  |             url: baseUrl + "/console/latest/data/crn", | 
 |  |  |             headers: {'token': localStorage.getItem('token')}, | 
 |  |  |             method: 'POST', | 
 |  |  |             success: function (res) { | 
 |  |  |                 // console.log(res) | 
 |  |  |                 if (res.code === 200) { | 
 |  |  |                     var crns = res.data; | 
 |  |  |                     for (var i = 0; i < crns.length; i++) { | 
 |  |  |                         var crnEl = $("#crn-" + crns[i].crnId); | 
 |  |  |                         crnEl.attr("class", "machine " + crns[i].crnStatus); | 
 |  |  |                         var unit = 20.6;//($('.item').eq(0).width() + 13) / 2; | 
 |  |  |                         if (crns[i].bay < 0) { | 
 |  |  |                             crns[i].bay = 1; | 
 |  |  |                         } | 
 |  |  |                         // crnEl.animate({left: (crns[i].bay * unit) + 'px'}, 1000); | 
 |  |  |                         // crns[i].bay = 1; | 
 |  |  |  | 
 |  |  |                         var offSet = 800; | 
 |  |  |                         // crns[i].bay = 41; | 
 |  |  |                         if(crns[i].bay === 1){ | 
 |  |  |                             crnEl.animate({left: offSet + 'px'}, 1000); | 
 |  |  |                         } else { | 
 |  |  |                             crnEl.animate({left: (offSet - unit + (crns[i].bay * unit)) + 'px'}, 1000); | 
 |  |  |                         } | 
 |  |  |  | 
 |  |  |                     } | 
 |  |  |                 } else if (res.code === 403) { | 
 |  |  |                     parent.location.href = baseUrl + "/login"; | 
 |  |  |                 } else { | 
 |  |  |                     console.log(res.msg); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     // 扫码器实时数据获取 | 
 |  |  |     function getBarcodeInfo() { | 
 |  |  |         $.ajax({ | 
 |  |  |             url: baseUrl + "/console/latest/data/barcode", | 
 |  |  |             headers: {'token': localStorage.getItem('token')}, | 
 |  |  |             method: 'POST', | 
 |  |  |             success: function (res) { | 
 |  |  |                 if (res.code === 200) { | 
 |  |  |                     var barcodes = res.data; | 
 |  |  |                     for (var i = 0; i < barcodes.length; i++) { | 
 |  |  |                         $("#code-decoder-data-" + barcodes[i].barcodeId).html(barcodes[i].codeValue); | 
 |  |  |                     } | 
 |  |  |                 } else if (res.code === 403) { | 
 |  |  |                     parent.location.href = baseUrl + "/login"; | 
 |  |  |                 } else { | 
 |  |  |                     console.log(res.msg); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     // 磅秤实时数据获取 | 
 |  |  |     function getScaleInfo() { | 
 |  |  |         $.ajax({ | 
 |  |  |             url: baseUrl + "/console/latest/data/scale", | 
 |  |  |             headers: {'token': localStorage.getItem('token')}, | 
 |  |  |             method: 'POST', | 
 |  |  |             success: function (res) { | 
 |  |  |  | 
 |  |  |                 if (res.code === 200) { | 
 |  |  |                     var sclaes = res.data; | 
 |  |  |                     for (var i = 0; i < sclaes.length; i++) { | 
 |  |  |                         console.log(sclaes[i].scaleId + ":" + sclaes[i].value) | 
 |  |  |                         $("#scale-data-" + sclaes[i].scaleId).text(sclaes[i].value); | 
 |  |  |                     } | 
 |  |  |                 } else if (res.code === 403) { | 
 |  |  |                     parent.location.href = baseUrl + "/login"; | 
 |  |  |                 } else { | 
 |  |  |                     console.log(res.msg); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     // 堆垛机偏移动画 | 
 |  |  |     function crnAnimate(id, leftVal) { | 
 |  |  |         // console.log(crn1Position) | 
 |  |  |         switch (id) { | 
 |  |  |             case 1: | 
 |  |  |                 $("#crn-1").animate({left: leftVal + 'px'}, 1000); | 
 |  |  |                 crn1Position = leftVal; | 
 |  |  |                 break; | 
 |  |  |             case 2: | 
 |  |  |                 $("#crn-2").animate({left: leftVal + 'px'}, 1000); | 
 |  |  |                 crn2Position = leftVal; | 
 |  |  |                 break; | 
 |  |  |             case 3: | 
 |  |  |                 $("#crn-3").animate({left: leftVal + 'px'}, 1000); | 
 |  |  |                 crn3Position = leftVal; | 
 |  |  |                 break; | 
 |  |  |             case 4: | 
 |  |  |                 $("#crn-4").animate({left: leftVal + 'px'}, 1000); | 
 |  |  |                 crn4Position = leftVal; | 
 |  |  |                 break; | 
 |  |  |             case 5: | 
 |  |  |                 $("#crn-5").animate({left: leftVal + 'px'}, 1000); | 
 |  |  |                 crn5Position = leftVal; | 
 |  |  |                 break; | 
 |  |  |             default: | 
 |  |  |                 break | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     // 小车偏移动画 | 
 |  |  |     function carAnimate(id, target) { | 
 |  |  |         var targetTop = 0; | 
 |  |  |         if (id === 112) { | 
 |  |  |             switch (target) { | 
 |  |  |                 case 1: | 
 |  |  |                     targetTop += 313; | 
 |  |  |                     break; | 
 |  |  |                 case 2: | 
 |  |  |                     targetTop += 313; | 
 |  |  |                     break; | 
 |  |  |                 case 3: | 
 |  |  |                     targetTop += 256; | 
 |  |  |                     break; | 
 |  |  |                 case 4: | 
 |  |  |                     targetTop += 226; | 
 |  |  |                     break; | 
 |  |  |                 case 5: | 
 |  |  |                     targetTop += 168; | 
 |  |  |                 case 6: | 
 |  |  |                     targetTop += 168; | 
 |  |  |                     break; | 
 |  |  |                 default: | 
 |  |  |                     return; | 
 |  |  |             } | 
 |  |  |         } else if (id === 212) { | 
 |  |  |             switch (target) { | 
 |  |  |                 case 1: | 
 |  |  |                     targetTop += 313; | 
 |  |  |                     break; | 
 |  |  |                 case 2: | 
 |  |  |                     targetTop += 313; | 
 |  |  |                     break; | 
 |  |  |                 case 3: | 
 |  |  |                     targetTop += 256; | 
 |  |  |                     break; | 
 |  |  |                 case 4: | 
 |  |  |                     targetTop += 226; | 
 |  |  |                     break; | 
 |  |  |                 case 5: | 
 |  |  |                     targetTop += 168; | 
 |  |  |                 case 6: | 
 |  |  |                     targetTop += 168; | 
 |  |  |                     break; | 
 |  |  |                 default: | 
 |  |  |                     return; | 
 |  |  |             } | 
 |  |  |         } else { | 
 |  |  |             return; | 
 |  |  |         } | 
 |  |  |         $("#site-" + id).animate({top: targetTop + 'px'}, 1000); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     //下发输送线命令 | 
 |  |  |     $("#devpCommand").on("click", () => { | 
 |  |  |         let siteId = $("#devpSiteId").val()//设备id | 
 |  |  |         let wrkNo = $("#devpWorkNo").val()//工作号 | 
 |  |  |         let staNo = $("#devpStaNo").val()//目标站 | 
 |  |  |  | 
 |  |  |         $.ajax({ | 
 |  |  |             url: baseUrl+"/site/detl/update", | 
 |  |  |             headers: {'token': localStorage.getItem('token')}, | 
 |  |  |             data: { | 
 |  |  |                 devNo: siteId, | 
 |  |  |                 workNo: wrkNo, | 
 |  |  |                 staNo: staNo, | 
 |  |  |             }, | 
 |  |  |             method: 'POST', | 
 |  |  |             success: function (res) { | 
 |  |  |                 if (res.code === 200){ | 
 |  |  |                     layer.msg("下发成功",{icon: 1,}); | 
 |  |  |                 } else if (res.code === 403){ | 
 |  |  |                     top.location.href = baseUrl+"/"; | 
 |  |  |                 }else { | 
 |  |  |                     layer.msg(res.msg, {icon: 2}); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }) | 
 |  |  |     }); | 
 |  |  |  | 
 |  |  |     //下发堆垛机命令 | 
 |  |  |     $("#crnCommand").on("click", () => { | 
 |  |  |         let crnNo = $("#crnNo").val()//设备id | 
 |  |  |         var pakIn = $('input[name="pakIn"]:checked').val(); | 
 |  |  |         var pakOut = $('input[name="pakOut"]:checked').val(); | 
 |  |  |  | 
 |  |  |         console.log(pakIn,pakOut) | 
 |  |  |  | 
 |  |  |         $.ajax({ | 
 |  |  |             url: baseUrl + "/basCrnp/update/auth", | 
 |  |  |             headers: { | 
 |  |  |                 'token': localStorage.getItem('token') | 
 |  |  |             }, | 
 |  |  |             data: { | 
 |  |  |                 crnNo: crnNo, | 
 |  |  |                 inEnable: pakIn == 1 ? "Y" : "N", | 
 |  |  |                 outEnable: pakOut == 1 ? "Y" : "N" | 
 |  |  |             }, | 
 |  |  |             method: 'POST', | 
 |  |  |             success: function (res) { | 
 |  |  |                 if (res.code === 200){ | 
 |  |  |                     layer.msg("下发成功",{icon: 1,}); | 
 |  |  |                 } else if (res.code === 403){ | 
 |  |  |                     top.location.href = baseUrl+"/"; | 
 |  |  |                 }else { | 
 |  |  |                     layer.msg(res.msg, {icon: 2}); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |     }); | 
 |  |  |  | 
 |  |  | </script> | 
 
| New file | 
 |  |  | 
 |  |  | <!DOCTYPE html> | 
 |  |  | <html lang="en"> | 
 |  |  | <head> | 
 |  |  |     <meta charset="UTF-8"> | 
 |  |  |     <title>自动仓库wcs系统</title> | 
 |  |  |     <link rel="stylesheet" href="../../static/wcs/css/render.css"> | 
 |  |  |     <link rel="stylesheet" href="../../static/wms/layui/css/layui.css" media="all"> | 
 |  |  |     <link rel="stylesheet" href="../../static/wms/css/cool.css" media="all"> | 
 |  |  |     <link rel="stylesheet" href="../../static/wms/css/common.css" media="all"> | 
 |  |  |     <script type="text/javascript" src="../../static/wms/js/jquery/jquery-3.3.1.min.js"></script> | 
 |  |  |     <script type="text/javascript" src="../../static/wms/layui/layui.js" charset="utf-8"></script> | 
 |  |  |     <script type="text/javascript" src="../../static/wms/js/common.js" charset="utf-8"></script> | 
 |  |  |     <script type="text/javascript" src="../../static/wms/js/cool.js" charset="utf-8"></script> | 
 |  |  |     <!--地图json--> | 
 |  |  |     <script src="../../static/wcs/js/console2.map.js"></script> | 
 |  |  |     <script src="../../static/wcs/js/console.js"></script> | 
 |  |  |     <script src="../../static/wcs/js/common.js"></script> | 
 |  |  | </head> | 
 |  |  | <script type="text/html" id="errorTpl"> | 
 |  |  |     {{# if( d.error === false ){ }} | 
 |  |  |     <span name="level" class="layui-badge layui-badge-green">正常</span> | 
 |  |  |     {{# } else { }} | 
 |  |  |     <span name="level" class="layui-badge layui-badge-red">异常</span> | 
 |  |  |     {{# } }} | 
 |  |  | </script> | 
 |  |  | <body> | 
 |  |  |     <div id="main"> | 
 |  |  |         <div class="head"> | 
 |  |  |             <div class="head-left"> | 
 |  |  |                 <h1>自动仓库WCS监控图</h1> | 
 |  |  |                 <h6>AUTOMATIC WAREHOUSE WCS MONITORING DIAGRAM</h6> | 
 |  |  |             </div> | 
 |  |  |         </div> | 
 |  |  |         <select onchange="window.open(this.value)"> | 
 |  |  |             <option value = "console1.html">--成品一楼--</option> | 
 |  |  |             <option value="console2.html" >-半成品二楼-</option> | 
 |  |  |             <option value="console3.html">-成品二楼-</option> | 
 |  |  |             <option value="console.html"selected ="selected">-半成品一楼-</option> | 
 |  |  |         </select> | 
 |  |  |         <!-- 货架 + 堆垛机 + 入库站点 --> | 
 |  |  |         <div class="main-part"> | 
 |  |  |  | 
 |  |  |         </div> | 
 |  |  |  | 
 |  |  | <!--        <!–设备列表–>--> | 
 |  |  | <!--        <div class="device-info">--> | 
 |  |  | <!--            <table class="layui-hide" id="deviceInfo" lay-filter="deviceInfo"></table>--> | 
 |  |  | <!--        </div>--> | 
 |  |  |  | 
 |  |  |         <div id="body"> | 
 |  |  |             <!-- 总开关 --> | 
 |  |  |             <div class="system-state"> | 
 |  |  |                 <div class="body-head">总开关</div> | 
 |  |  |                 <div class="switch"> | 
 |  |  |                     <div id="system-icon" class="system-icon-open" onclick="systemSwitch()"></div> | 
 |  |  |                     <div class="switch_r"> | 
 |  |  |                         <p>系统状态</p> | 
 |  |  |                         <p id="system-run-desc">系统运行中</p> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |             </div> | 
 |  |  |             <!-- 堆垛机状态 --> | 
 |  |  |             <div class="machine-status"> | 
 |  |  |                 <div class="body-head">堆垛机状态</div> | 
 |  |  |                 <div class="state"> | 
 |  |  |                     <span>堆垛机 1</span> | 
 |  |  |                     <span class="state-ss machine-put-flag    ">入库</span> | 
 |  |  |                 </div> | 
 |  |  |                 <div class="state"> | 
 |  |  |                     <span>堆垛机 2</span> | 
 |  |  |                     <span class="state-ss machine-auto-flag    ">自动</span> | 
 |  |  |  | 
 |  |  |                 </div> | 
 |  |  |                 <div class="button"><span>所有状态</span></div> | 
 |  |  |                 <div class="button item-group"> | 
 |  |  |                     <span class="machine-put-flag">入库</span> | 
 |  |  |                     <span class="machine-take-flag">出库</span> | 
 |  |  |                     <span class="machine-stock-move-flag">库到库</span> | 
 |  |  |                     <span class="machine-site-move-flag">站到站</span> | 
 |  |  |                     <span class="machine-p-move-flag">PToP</span> | 
 |  |  |                     <span class="machine-error-flag">异常</span> | 
 |  |  |                     <span class="machine-auto-flag">自动</span> | 
 |  |  |                     <span class="machine-unauto-flag">非自动/手动</span> | 
 |  |  |                 </div> | 
 |  |  |             </div> | 
 |  |  |             <div class="line-status"> | 
 |  |  |                 <div class="body-head">输送线状态</div> | 
 |  |  |                 <div class="state states"> | 
 |  |  |                     <span>运输线总数</span> | 
 |  |  |                     <span id="line-total" class="line-ss"></span> | 
 |  |  |                 </div> | 
 |  |  |                 <div class="button"><span>所有状态</span></div> | 
 |  |  |                 <div class="button item-group"> | 
 |  |  |                     <span class="site-auto-run-id">自动+有物+ID</span> | 
 |  |  |                     <span class="site-auto-run">自动+有物</span> | 
 |  |  |                     <span class="site-auto-id">自动+ID</span> | 
 |  |  |                     <span class="site-auto">自动</span> | 
 |  |  |                     <span class="site-unauto">非自动/手动</span> | 
 |  |  |                 </div> | 
 |  |  |             </div> | 
 |  |  |             <div class="bar-code"> | 
 |  |  |                 <div class="body-head" id="code">条码扫描器</div> | 
 |  |  |                 <div class="tablebox"> | 
 |  |  |                     <div class="table-head"> | 
 |  |  |                         <li><span>条码名称</span><span class="right">扫码时间</span></li> | 
 |  |  |                     </div> | 
 |  |  |                     <div id="barcode1" class="table-body"> | 
 |  |  |  | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <div class="tablebox"> | 
 |  |  |                     <div class="table-head"> | 
 |  |  |                         <li><span>条码名称</span><span class="right">扫码时间</span></li> | 
 |  |  |                     </div> | 
 |  |  |                     <div id="barcode2" class="table-body"> | 
 |  |  |  | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <div class="tablebox"> | 
 |  |  |                     <div class="table-head"> | 
 |  |  |                         <li><span>条码名称</span><span class="right">扫码时间</span></li> | 
 |  |  |                     </div> | 
 |  |  |                     <div id="barcode3" class="table-body"> | 
 |  |  |  | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |             </div> | 
 |  |  |         </div> | 
 |  |  |         <!-- 堆垛机弹窗 --> | 
 |  |  |         <div id="crnWindow" style="display: none;" class="animate__animated animate__fadeIn"> | 
 |  |  |             <div id="crnWindow-head"> | 
 |  |  |                 <div class='detailed'></div> | 
 |  |  |                 <button></button> | 
 |  |  |             </div> | 
 |  |  |             <form> | 
 |  |  |                 <!-- 堆垛机号 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label" style> | 
 |  |  |                         <span>堆垛机号:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="crnNo" value="" id="crnNo"> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 工作号 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>工作号:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="workNo" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 站源 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>站源:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="sourceStaNo" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 目标站 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>目标站:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="staNo" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 工作状态 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>工作状态:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="wrkSts" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 出入类型 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>出入类型:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="ioType" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 源库位 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>源库位:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="sourceLocNo" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 目标库位 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>目标库位:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="locNo" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 堆垛机状态 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>堆垛机状态:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="crnStatus" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 异常 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>异常:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="error" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 操作按钮 --> | 
 |  |  |                 <div class="form-item" style="display: flex;"> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <div>入库:开<input type="radio" name="pakIn" id="pakInY" value="1"> 关<input type="radio" name="pakIn" id="pakInN" value="0"/></div> | 
 |  |  |                         <div>出库:开<input type="radio" name="pakOut" id="pakOutY" value="1"> 关<input type="radio" name="pakOut" id="pakOutN" value="0"/></div> | 
 |  |  |                     </div> | 
 |  |  |                     <div><a id="crnCommand" class="layui-btn">下发命令</a></div> | 
 |  |  |                 </div> | 
 |  |  |             </form> | 
 |  |  |         </div> | 
 |  |  |         <!-- 输送设备弹窗 --> | 
 |  |  |         <div id="siteWindow" style="display: none;" class="animate__animated animate__fadeIn"> | 
 |  |  |             <!-- 表头 --> | 
 |  |  |             <div id="siteWindow-head"> | 
 |  |  |                 <div class='detailed'></div> | 
 |  |  |                 <button></button> | 
 |  |  |             </div> | 
 |  |  |             <form> | 
 |  |  |                 <!-- 设备号 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>设备号:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="siteId" value="" id="devpSiteId"> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 工作号 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>工作号:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="workNo" value="" id="devpWorkNo"> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 工作状态 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>工作状态:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="wrkSts" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 自动 --> | 
 |  |  |                 <div class="form-item-checkbox"> | 
 |  |  |                     <div class="form-item-label-checkbox"> | 
 |  |  |                         <span>自动</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input-checkbox"> | 
 |  |  |                         <input type="checkbox" name="autoing"> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 有物 --> | 
 |  |  |                 <div class="form-item-checkbox"> | 
 |  |  |                     <div class="form-item-label-checkbox"> | 
 |  |  |                         <span>有物</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input-checkbox"> | 
 |  |  |                         <input type="checkbox" name="loading"> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 能入 --> | 
 |  |  |                 <div class="form-item-checkbox"> | 
 |  |  |                     <div class="form-item-label-checkbox"> | 
 |  |  |                         <span>能入</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input-checkbox"> | 
 |  |  |                         <input type="checkbox" name="canining"> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 能出 --> | 
 |  |  |                 <div class="form-item-checkbox"> | 
 |  |  |                     <div class="form-item-label-checkbox"> | 
 |  |  |                         <span>能出</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input-checkbox"> | 
 |  |  |                         <input type="checkbox" name="canouting"> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 出入类型 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>出入类型:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="ioType" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 源站 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>源站:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="sourceStaNo" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 目标站 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>目标站:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="staNo" value="" id="devpStaNo"> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 源库位 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>源库位:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="sourceLocNo" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 目标库位 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>目标库位:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="locNo" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 操作按钮 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <a id="devpCommand" class="layui-btn">下发命令</a> | 
 |  |  |                 </div> | 
 |  |  |             </form> | 
 |  |  |         </div> | 
 |  |  |     </div> | 
 |  |  |  | 
 |  |  | </body> | 
 |  |  |  | 
 |  |  | </html> | 
 |  |  | <script> | 
 |  |  |     getMap(); | 
 |  |  | </script> | 
 |  |  | <script> | 
 |  |  |     setInterval(function () { | 
 |  |  |         getCodeData(); | 
 |  |  |         renderBarCode(); | 
 |  |  |     }, 1000) | 
 |  |  |     var tData = [],tData1 = [],tData2 = [],tData3 = []; | 
 |  |  |     function getCodeData() { | 
 |  |  |         $.ajax({ | 
 |  |  |             url: baseUrl + '/console/barcode/output/site', | 
 |  |  |             method: 'GET', | 
 |  |  |             success: function (res) { | 
 |  |  |                 // console.log(res) | 
 |  |  |                 if (res.code === 200) { | 
 |  |  |                     tData = eval(res.data); | 
 |  |  |                     if (tData.length <= 5) { | 
 |  |  |                         tData1 = tData | 
 |  |  |                     } else if (tData.length <= 10) { | 
 |  |  |                         tData1 = tData.slice(0, 5) | 
 |  |  |                         tData.splice(0, 5) | 
 |  |  |                         tData2 = tData | 
 |  |  |                     } else if (tData.length <= 15) { | 
 |  |  |                         tData1 = tData.slice(0, 5) | 
 |  |  |                         tData2 = tData.slice(6, 10) | 
 |  |  |                         tData.splice(0, 10) | 
 |  |  |                         tData3 = tData | 
 |  |  |                     } else { | 
 |  |  |                         tData = tData.slice(-15) | 
 |  |  |                         tData1 = tData.slice(-15) | 
 |  |  |                         tData2 = tData.slice(-10) | 
 |  |  |                         tData3 = tData.slice(-5) | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }) | 
 |  |  |     } | 
 |  |  |     function renderBarCode() { | 
 |  |  |         for (var i = 0; i < tData1.length; i++) { | 
 |  |  |             var str1 = '<li><span>' + tData1[i].id +'-'+ tData1[i].scale +'kg'+ '</span><span class="right">' + tData1[i].time + '</span></li>' | 
 |  |  |             $('#scale1').append(str1) | 
 |  |  |         } | 
 |  |  |         for (var j = 0; j < tData2.length; j++) { | 
 |  |  |             var str2 = '<li><span>' + tData2[j].id +'-'+ tData1[i].scale +'kg'+ '</span><span class="right">' + tData2[j].time + '</span></li>' | 
 |  |  |             $('#scale2').append(str2) | 
 |  |  |         } | 
 |  |  |         for (var k = 0; k < tData3.length; k++) { | 
 |  |  |             var str3 = '<li><span>' + tData3[k].id +'-'+ tData1[i].scale +'kg'+ '</span><span class="right">' + tData3[k].time + '</span></li>' | 
 |  |  |             $('#scale3').append(str3) | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  | </script> | 
 |  |  | <script type="text/javascript"> | 
 |  |  |     // 弹窗站点信息 | 
 |  |  |     $("body").on('click', '.site', function (e) { | 
 |  |  |         console.log(e) | 
 |  |  |         var id = this.id.split("-")[1]; | 
 |  |  |         $("#siteWindow").attr("style", "display:block;");//显示div | 
 |  |  |         $("#crnWindow").attr("style", "display:none;"); | 
 |  |  |         $(".detailed").empty(); | 
 |  |  |         $('.detailed').append(id + '站点详细信息'); | 
 |  |  |         $.ajax({ | 
 |  |  |             url: baseUrl + "/console/site/detail", | 
 |  |  |             headers: { | 
 |  |  |                 'token': localStorage.getItem('token') | 
 |  |  |             }, | 
 |  |  |             data: { | 
 |  |  |                 siteId: id | 
 |  |  |             }, | 
 |  |  |             method: 'post', | 
 |  |  |             success: function (res) { | 
 |  |  |                 for (var val in res.data) { | 
 |  |  |                     var find = $("#siteWindow").find(":input[name='" + val + "']"); | 
 |  |  |                     if (find[0].type === 'text') { | 
 |  |  |                         find.val(res.data[val]); | 
 |  |  |                     } else if (find[0].type === 'checkbox') { | 
 |  |  |                         find.attr("checked", res.data[val] === 'Y'); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |         }) | 
 |  |  |  | 
 |  |  |     }); | 
 |  |  |     // 堆垛机信息 | 
 |  |  |     $("body").on('click', '.machine', function () { | 
 |  |  |         var id = this.id.split("-")[1]; | 
 |  |  |         $("#crnWindow").attr('style', 'display:block;'); | 
 |  |  |         $("#siteWindow").attr("style", "display:none;"); | 
 |  |  |         $('.detailed').empty(); | 
 |  |  |         $('.detailed').append(id + '号堆垛机'); | 
 |  |  |         $.ajax({ | 
 |  |  |             url: baseUrl + "/console/crn/detail", | 
 |  |  |             headers: { | 
 |  |  |                 'token': localStorage.getItem('token') | 
 |  |  |             }, | 
 |  |  |             data: { | 
 |  |  |                 crnNo: id | 
 |  |  |             }, | 
 |  |  |             method: 'post', | 
 |  |  |             success: function (res) { | 
 |  |  |                 console.log(res) | 
 |  |  |                 for (var val in res.data) { | 
 |  |  |                     if (val === "inEnable") { | 
 |  |  |                         if (res.data[val] === 'Y') { | 
 |  |  |                             $("#pakInY").prop("checked", true); | 
 |  |  |                         }else{ | 
 |  |  |                             $("#pakInN").prop("checked", true); | 
 |  |  |                         } | 
 |  |  |                     }else if (val === "outEnable") { | 
 |  |  |                         if (res.data[val] === 'Y') { | 
 |  |  |                             $("#pakOutY").prop("checked", true); | 
 |  |  |                         }else{ | 
 |  |  |                             $("#pakOutN").prop("checked", true); | 
 |  |  |                         } | 
 |  |  |                     }else { | 
 |  |  |                         var find = $("#crnWindow").find(":input[name='" + val + "']"); | 
 |  |  |                         if (find[0].type === 'text') { | 
 |  |  |                             find.val(res.data[val]); | 
 |  |  |                         } else if (find[0].type === 'checkbox') { | 
 |  |  |                             find.attr("checked", res.data[val] === 'Y'); | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |         }) | 
 |  |  |  | 
 |  |  |     }); | 
 |  |  |     // 弹窗关闭 | 
 |  |  |     $('button').on('click', function () { | 
 |  |  |         $('#siteWindow').attr('style', 'display:none') | 
 |  |  |         $('#crnWindow').attr('style', 'display:none') | 
 |  |  |     }) | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     var crn1Position = 0; | 
 |  |  |     var crn2Position = 0; | 
 |  |  |     var crn3Position = 0; | 
 |  |  |     var crn4Position = 0; | 
 |  |  |     var crn5Position = 0; | 
 |  |  |  | 
 |  |  |     // 初始化 | 
 |  |  |     getSitesInfo(); | 
 |  |  |     getCrnInfo(); | 
 |  |  |     getSystemRunningStatus(); | 
 |  |  |     getBarcodeInfo(); | 
 |  |  |     getScaleInfo(); | 
 |  |  |     // 实时访问 | 
 |  |  |     setInterval(function () { | 
 |  |  |         getCrnInfo(); | 
 |  |  |         getSystemRunningStatus(); | 
 |  |  |         getBarcodeInfo(); | 
 |  |  |         getScaleInfo(); | 
 |  |  |     }, 1000); | 
 |  |  |     setInterval(function () { | 
 |  |  |         getSitesInfo(); | 
 |  |  |     }, 3000); | 
 |  |  |  | 
 |  |  |     // 系统运行开关 | 
 |  |  |     function systemSwitch() { | 
 |  |  |         if (parent.systemRunning) { | 
 |  |  |             layer.prompt({title: '请输入口令,并停止 WCS 系统', formType: 1, shadeClose: true}, function (pass, idx) { | 
 |  |  |                 layer.close(idx); | 
 |  |  |                 doSwitch(0, pass); // 停止wcs系统 | 
 |  |  |             }); | 
 |  |  |         } else { | 
 |  |  |             doSwitch(1); // 启动wcs系统 | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     // 请求服务器控制wcs系统运行状态 | 
 |  |  |     function doSwitch(operatorType, password) { | 
 |  |  |         // 加载tips | 
 |  |  |         var index = layer.load(1, { | 
 |  |  |             shade: [0.1, '#fff'] | 
 |  |  |         }); | 
 |  |  |         $.ajax({ | 
 |  |  |             url: baseUrl + "/console/system/switch", | 
 |  |  |             headers: {'token': localStorage.getItem('token')}, | 
 |  |  |             // async: false, | 
 |  |  |             data: { | 
 |  |  |                 operatorType: operatorType, | 
 |  |  |                 password: password | 
 |  |  |             }, | 
 |  |  |             method: 'POST', | 
 |  |  |             success: function (res) { | 
 |  |  |                 layer.close(index); | 
 |  |  |                 if (res.code === 200) { | 
 |  |  |                     if (res.data.status) { | 
 |  |  |                         $('#system-icon').attr("class", "system-icon-open"); | 
 |  |  |                         $('#system-run-desc').html("系统运行中..."); | 
 |  |  |                         parent.systemRunning = true; | 
 |  |  |                     } else { | 
 |  |  |                         $('#system-icon').attr("class", "system-icon-close"); | 
 |  |  |                         $('#system-run-desc').html("系统已停止!"); | 
 |  |  |                         parent.systemRunning = false; | 
 |  |  |                     } | 
 |  |  |                 } else if (res.code === 403) { | 
 |  |  |                     parent.location.href = baseUrl + "/login"; | 
 |  |  |                 } else { | 
 |  |  |                     console.log(res.msg); | 
 |  |  |  | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     // 获取wcs系统运行状态 | 
 |  |  |     function getSystemRunningStatus() { | 
 |  |  |         $.ajax({ | 
 |  |  |             url: baseUrl + "/console/system/running/status", | 
 |  |  |             headers: {'token': localStorage.getItem('token')}, | 
 |  |  |             method: 'POST', | 
 |  |  |             success: function (res) { | 
 |  |  |                 if (res.code === 200) { | 
 |  |  |                     if (res.data.status) { | 
 |  |  |                         $('#system-icon').attr("class", "system-icon-open"); | 
 |  |  |                         $('#system-run-desc').html("系统运行中..."); | 
 |  |  |                         parent.systemRunning = true; | 
 |  |  |                     } else { | 
 |  |  |                         $('#system-icon').attr("class", "system-icon-close"); | 
 |  |  |                         $('#system-run-desc').html("系统已停止!"); | 
 |  |  |                         parent.systemRunning = false; | 
 |  |  |                     } | 
 |  |  |                 } else if (res.code === 403) { | 
 |  |  |                     parent.location.href = baseUrl + "/login"; | 
 |  |  |                 } else { | 
 |  |  |                     console.log(res.msg); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     // 输送设备实时数据获取 | 
 |  |  |     function getSitesInfo() { | 
 |  |  |         // carAnimate(112,4); | 
 |  |  |         $.ajax({ | 
 |  |  |             url: baseUrl + "/console/latest/data/site", | 
 |  |  |             headers: {'token': localStorage.getItem('token')}, | 
 |  |  |             method: 'POST', | 
 |  |  |             success: function (res) { | 
 |  |  |                 if (res.code === 200) { | 
 |  |  |                     var sites = res.data; | 
 |  |  |                     for (var i = 0; i < sites.length; i++) { | 
 |  |  |                         var siteEl = $("#site-" + sites[i].siteId); | 
 |  |  |                         siteEl.attr("class", "site " + sites[i].siteStatus); | 
 |  |  |                         if (sites[i].workNo != null && sites[i].workNo > 0) { | 
 |  |  |                             siteEl.html(sites[i].siteId + "[" + sites[i].workNo + "]"); | 
 |  |  |                         } else { | 
 |  |  |                             siteEl.html(sites[i].siteId); | 
 |  |  |                         } | 
 |  |  |                         // RGV位置 | 
 |  |  |                         if(sites[i].siteId === '112' || sites[i].siteId === '212'){ | 
 |  |  |                             carAnimate(Number(sites[i].siteId), Number(sites[i].nearbySta)); | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                 } else if (res.code === 403) { | 
 |  |  |                     parent.location.href = baseUrl + "/login"; | 
 |  |  |                 } else { | 
 |  |  |                     console.log(res.msg); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     // 堆垛机实时数据获取 | 
 |  |  |     function getCrnInfo() { | 
 |  |  |         $.ajax({ | 
 |  |  |             url: baseUrl + "/console/latest/data/crn", | 
 |  |  |             headers: {'token': localStorage.getItem('token')}, | 
 |  |  |             method: 'POST', | 
 |  |  |             success: function (res) { | 
 |  |  |                 // console.log(res) | 
 |  |  |                 if (res.code === 200) { | 
 |  |  |                     var crns = res.data; | 
 |  |  |                     for (var i = 0; i < crns.length; i++) { | 
 |  |  |                         var crnEl = $("#crn-" + crns[i].crnId); | 
 |  |  |                         crnEl.attr("class", "machine " + crns[i].crnStatus); | 
 |  |  |                         var unit = 20.6;//($('.item').eq(0).width() + 13) / 2; | 
 |  |  |                         if (crns[i].bay < 0) { | 
 |  |  |                             crns[i].bay = 1; | 
 |  |  |                         } | 
 |  |  |                         // crnEl.animate({left: (crns[i].bay * unit) + 'px'}, 1000); | 
 |  |  |                         // crns[i].bay = 1; | 
 |  |  |  | 
 |  |  |                         var offSet = 800; | 
 |  |  |                         // crns[i].bay = 41; | 
 |  |  |                         if(crns[i].bay === 1){ | 
 |  |  |                             crnEl.animate({left: offSet + 'px'}, 1000); | 
 |  |  |                         } else { | 
 |  |  |                             crnEl.animate({left: (offSet - unit + (crns[i].bay * unit)) + 'px'}, 1000); | 
 |  |  |                         } | 
 |  |  |  | 
 |  |  |                     } | 
 |  |  |                 } else if (res.code === 403) { | 
 |  |  |                     parent.location.href = baseUrl + "/login"; | 
 |  |  |                 } else { | 
 |  |  |                     console.log(res.msg); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     // 扫码器实时数据获取 | 
 |  |  |     function getBarcodeInfo() { | 
 |  |  |         $.ajax({ | 
 |  |  |             url: baseUrl + "/console/latest/data/barcode", | 
 |  |  |             headers: {'token': localStorage.getItem('token')}, | 
 |  |  |             method: 'POST', | 
 |  |  |             success: function (res) { | 
 |  |  |                 if (res.code === 200) { | 
 |  |  |                     var barcodes = res.data; | 
 |  |  |                     for (var i = 0; i < barcodes.length; i++) { | 
 |  |  |                         $("#code-decoder-data-" + barcodes[i].barcodeId).html(barcodes[i].codeValue); | 
 |  |  |                     } | 
 |  |  |                 } else if (res.code === 403) { | 
 |  |  |                     parent.location.href = baseUrl + "/login"; | 
 |  |  |                 } else { | 
 |  |  |                     console.log(res.msg); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     // 磅秤实时数据获取 | 
 |  |  |     function getScaleInfo() { | 
 |  |  |         $.ajax({ | 
 |  |  |             url: baseUrl + "/console/latest/data/scale", | 
 |  |  |             headers: {'token': localStorage.getItem('token')}, | 
 |  |  |             method: 'POST', | 
 |  |  |             success: function (res) { | 
 |  |  |  | 
 |  |  |                 if (res.code === 200) { | 
 |  |  |                     var sclaes = res.data; | 
 |  |  |                     for (var i = 0; i < sclaes.length; i++) { | 
 |  |  |                         console.log(sclaes[i].scaleId + ":" + sclaes[i].value) | 
 |  |  |                         $("#scale-data-" + sclaes[i].scaleId).text(sclaes[i].value); | 
 |  |  |                     } | 
 |  |  |                 } else if (res.code === 403) { | 
 |  |  |                     parent.location.href = baseUrl + "/login"; | 
 |  |  |                 } else { | 
 |  |  |                     console.log(res.msg); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     // 堆垛机偏移动画 | 
 |  |  |     function crnAnimate(id, leftVal) { | 
 |  |  |         // console.log(crn1Position) | 
 |  |  |         switch (id) { | 
 |  |  |             case 1: | 
 |  |  |                 $("#crn-1").animate({left: leftVal + 'px'}, 1000); | 
 |  |  |                 crn1Position = leftVal; | 
 |  |  |                 break; | 
 |  |  |             case 2: | 
 |  |  |                 $("#crn-2").animate({left: leftVal + 'px'}, 1000); | 
 |  |  |                 crn2Position = leftVal; | 
 |  |  |                 break; | 
 |  |  |             case 3: | 
 |  |  |                 $("#crn-3").animate({left: leftVal + 'px'}, 1000); | 
 |  |  |                 crn3Position = leftVal; | 
 |  |  |                 break; | 
 |  |  |             case 4: | 
 |  |  |                 $("#crn-4").animate({left: leftVal + 'px'}, 1000); | 
 |  |  |                 crn4Position = leftVal; | 
 |  |  |                 break; | 
 |  |  |             case 5: | 
 |  |  |                 $("#crn-5").animate({left: leftVal + 'px'}, 1000); | 
 |  |  |                 crn5Position = leftVal; | 
 |  |  |                 break; | 
 |  |  |             default: | 
 |  |  |                 break | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     // 小车偏移动画 | 
 |  |  |     function carAnimate(id, target) { | 
 |  |  |         var targetTop = 0; | 
 |  |  |         if (id === 112) { | 
 |  |  |             switch (target) { | 
 |  |  |                 case 1: | 
 |  |  |                     targetTop += 313; | 
 |  |  |                     break; | 
 |  |  |                 case 2: | 
 |  |  |                     targetTop += 313; | 
 |  |  |                     break; | 
 |  |  |                 case 3: | 
 |  |  |                     targetTop += 256; | 
 |  |  |                     break; | 
 |  |  |                 case 4: | 
 |  |  |                     targetTop += 226; | 
 |  |  |                     break; | 
 |  |  |                 case 5: | 
 |  |  |                     targetTop += 168; | 
 |  |  |                 case 6: | 
 |  |  |                     targetTop += 168; | 
 |  |  |                     break; | 
 |  |  |                 default: | 
 |  |  |                     return; | 
 |  |  |             } | 
 |  |  |         } else if (id === 212) { | 
 |  |  |             switch (target) { | 
 |  |  |                 case 1: | 
 |  |  |                     targetTop += 313; | 
 |  |  |                     break; | 
 |  |  |                 case 2: | 
 |  |  |                     targetTop += 313; | 
 |  |  |                     break; | 
 |  |  |                 case 3: | 
 |  |  |                     targetTop += 256; | 
 |  |  |                     break; | 
 |  |  |                 case 4: | 
 |  |  |                     targetTop += 226; | 
 |  |  |                     break; | 
 |  |  |                 case 5: | 
 |  |  |                     targetTop += 168; | 
 |  |  |                 case 6: | 
 |  |  |                     targetTop += 168; | 
 |  |  |                     break; | 
 |  |  |                 default: | 
 |  |  |                     return; | 
 |  |  |             } | 
 |  |  |         } else { | 
 |  |  |             return; | 
 |  |  |         } | 
 |  |  |         $("#site-" + id).animate({top: targetTop + 'px'}, 1000); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     //下发输送线命令 | 
 |  |  |     $("#devpCommand").on("click", () => { | 
 |  |  |         let siteId = $("#devpSiteId").val()//设备id | 
 |  |  |         let wrkNo = $("#devpWorkNo").val()//工作号 | 
 |  |  |         let staNo = $("#devpStaNo").val()//目标站 | 
 |  |  |  | 
 |  |  |         $.ajax({ | 
 |  |  |             url: baseUrl+"/site/detl/update", | 
 |  |  |             headers: {'token': localStorage.getItem('token')}, | 
 |  |  |             data: { | 
 |  |  |                 devNo: siteId, | 
 |  |  |                 workNo: wrkNo, | 
 |  |  |                 staNo: staNo, | 
 |  |  |             }, | 
 |  |  |             method: 'POST', | 
 |  |  |             success: function (res) { | 
 |  |  |                 if (res.code === 200){ | 
 |  |  |                     layer.msg("下发成功",{icon: 1,}); | 
 |  |  |                 } else if (res.code === 403){ | 
 |  |  |                     top.location.href = baseUrl+"/"; | 
 |  |  |                 }else { | 
 |  |  |                     layer.msg(res.msg, {icon: 2}); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }) | 
 |  |  |     }); | 
 |  |  |  | 
 |  |  |     //下发堆垛机命令 | 
 |  |  |     $("#crnCommand").on("click", () => { | 
 |  |  |         let crnNo = $("#crnNo").val()//设备id | 
 |  |  |         var pakIn = $('input[name="pakIn"]:checked').val(); | 
 |  |  |         var pakOut = $('input[name="pakOut"]:checked').val(); | 
 |  |  |  | 
 |  |  |         console.log(pakIn,pakOut) | 
 |  |  |  | 
 |  |  |         $.ajax({ | 
 |  |  |             url: baseUrl + "/basCrnp/update/auth", | 
 |  |  |             headers: { | 
 |  |  |                 'token': localStorage.getItem('token') | 
 |  |  |             }, | 
 |  |  |             data: { | 
 |  |  |                 crnNo: crnNo, | 
 |  |  |                 inEnable: pakIn == 1 ? "Y" : "N", | 
 |  |  |                 outEnable: pakOut == 1 ? "Y" : "N" | 
 |  |  |             }, | 
 |  |  |             method: 'POST', | 
 |  |  |             success: function (res) { | 
 |  |  |                 if (res.code === 200){ | 
 |  |  |                     layer.msg("下发成功",{icon: 1,}); | 
 |  |  |                 } else if (res.code === 403){ | 
 |  |  |                     top.location.href = baseUrl+"/"; | 
 |  |  |                 }else { | 
 |  |  |                     layer.msg(res.msg, {icon: 2}); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |     }); | 
 |  |  |  | 
 |  |  | </script> | 
 
| New file | 
 |  |  | 
 |  |  | <!DOCTYPE html> | 
 |  |  | <html lang="en"> | 
 |  |  | <head> | 
 |  |  |     <meta charset="UTF-8"> | 
 |  |  |     <title>自动仓库wcs系统</title> | 
 |  |  |     <link rel="stylesheet" href="../../static/wcs/css/render.css"> | 
 |  |  |     <link rel="stylesheet" href="../../static/wms/layui/css/layui.css" media="all"> | 
 |  |  |     <link rel="stylesheet" href="../../static/wms/css/cool.css" media="all"> | 
 |  |  |     <link rel="stylesheet" href="../../static/wms/css/common.css" media="all"> | 
 |  |  |     <script type="text/javascript" src="../../static/wms/js/jquery/jquery-3.3.1.min.js"></script> | 
 |  |  |     <script type="text/javascript" src="../../static/wms/layui/layui.js" charset="utf-8"></script> | 
 |  |  |     <script type="text/javascript" src="../../static/wms/js/common.js" charset="utf-8"></script> | 
 |  |  |     <script type="text/javascript" src="../../static/wms/js/cool.js" charset="utf-8"></script> | 
 |  |  |     <!--地图json--> | 
 |  |  |     <script src="../../static/wcs/js/console3.map.js"></script> | 
 |  |  |     <script src="../../static/wcs/js/console.js"></script> | 
 |  |  |     <script src="../../static/wcs/js/common.js"></script> | 
 |  |  | </head> | 
 |  |  | <script type="text/html" id="errorTpl"> | 
 |  |  |     {{# if( d.error === false ){ }} | 
 |  |  |     <span name="level" class="layui-badge layui-badge-green">正常</span> | 
 |  |  |     {{# } else { }} | 
 |  |  |     <span name="level" class="layui-badge layui-badge-red">异常</span> | 
 |  |  |     {{# } }} | 
 |  |  | </script> | 
 |  |  | <body> | 
 |  |  |     <div id="main"> | 
 |  |  |         <div class="head"> | 
 |  |  |             <div class="head-left"> | 
 |  |  |                 <h1>自动仓库WCS监控图</h1> | 
 |  |  |                 <h6>AUTOMATIC WAREHOUSE WCS MONITORING DIAGRAM</h6> | 
 |  |  |             </div> | 
 |  |  |         </div> | 
 |  |  |         <select onchange="window.open(this.value)"> | 
 |  |  |             <option value = "console1.html">--成品一楼--</option> | 
 |  |  |             <option value="console2.html" >-半成品二楼-</option> | 
 |  |  |             <option value="console3.html">-成品二楼-</option> | 
 |  |  |             <option value="console.html"selected ="selected">-半成品一楼-</option> | 
 |  |  |         </select> | 
 |  |  |         <!-- 货架 + 堆垛机 + 入库站点 --> | 
 |  |  |         <div class="main-part"> | 
 |  |  |  | 
 |  |  |         </div> | 
 |  |  |  | 
 |  |  | <!--        <!–设备列表–>--> | 
 |  |  | <!--        <div class="device-info">--> | 
 |  |  | <!--            <table class="layui-hide" id="deviceInfo" lay-filter="deviceInfo"></table>--> | 
 |  |  | <!--        </div>--> | 
 |  |  |  | 
 |  |  |         <div id="body"> | 
 |  |  |             <!-- 总开关 --> | 
 |  |  |             <div class="system-state"> | 
 |  |  |                 <div class="body-head">总开关</div> | 
 |  |  |                 <div class="switch"> | 
 |  |  |                     <div id="system-icon" class="system-icon-open" onclick="systemSwitch()"></div> | 
 |  |  |                     <div class="switch_r"> | 
 |  |  |                         <p>系统状态</p> | 
 |  |  |                         <p id="system-run-desc">系统运行中</p> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |             </div> | 
 |  |  |             <!-- 堆垛机状态 --> | 
 |  |  |             <div class="machine-status"> | 
 |  |  |                 <div class="body-head">堆垛机状态</div> | 
 |  |  |                 <div class="state"> | 
 |  |  |                     <span>堆垛机 1</span> | 
 |  |  |                     <span class="state-ss machine-put-flag    ">入库</span> | 
 |  |  |                 </div> | 
 |  |  |                 <div class="state"> | 
 |  |  |                     <span>堆垛机 2</span> | 
 |  |  |                     <span class="state-ss machine-auto-flag    ">自动</span> | 
 |  |  |  | 
 |  |  |                 </div> | 
 |  |  |                 <div class="button"><span>所有状态</span></div> | 
 |  |  |                 <div class="button item-group"> | 
 |  |  |                     <span class="machine-put-flag">入库</span> | 
 |  |  |                     <span class="machine-take-flag">出库</span> | 
 |  |  |                     <span class="machine-stock-move-flag">库到库</span> | 
 |  |  |                     <span class="machine-site-move-flag">站到站</span> | 
 |  |  |                     <span class="machine-p-move-flag">PToP</span> | 
 |  |  |                     <span class="machine-error-flag">异常</span> | 
 |  |  |                     <span class="machine-auto-flag">自动</span> | 
 |  |  |                     <span class="machine-unauto-flag">非自动/手动</span> | 
 |  |  |                 </div> | 
 |  |  |             </div> | 
 |  |  |             <div class="line-status"> | 
 |  |  |                 <div class="body-head">输送线状态</div> | 
 |  |  |                 <div class="state states"> | 
 |  |  |                     <span>运输线总数</span> | 
 |  |  |                     <span id="line-total" class="line-ss"></span> | 
 |  |  |                 </div> | 
 |  |  |                 <div class="button"><span>所有状态</span></div> | 
 |  |  |                 <div class="button item-group"> | 
 |  |  |                     <span class="site-auto-run-id">自动+有物+ID</span> | 
 |  |  |                     <span class="site-auto-run">自动+有物</span> | 
 |  |  |                     <span class="site-auto-id">自动+ID</span> | 
 |  |  |                     <span class="site-auto">自动</span> | 
 |  |  |                     <span class="site-unauto">非自动/手动</span> | 
 |  |  |                 </div> | 
 |  |  |             </div> | 
 |  |  |             <div class="bar-code"> | 
 |  |  |                 <div class="body-head" id="code">条码扫描器</div> | 
 |  |  |                 <div class="tablebox"> | 
 |  |  |                     <div class="table-head"> | 
 |  |  |                         <li><span>条码名称</span><span class="right">扫码时间</span></li> | 
 |  |  |                     </div> | 
 |  |  |                     <div id="barcode1" class="table-body"> | 
 |  |  |  | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <div class="tablebox"> | 
 |  |  |                     <div class="table-head"> | 
 |  |  |                         <li><span>条码名称</span><span class="right">扫码时间</span></li> | 
 |  |  |                     </div> | 
 |  |  |                     <div id="barcode2" class="table-body"> | 
 |  |  |  | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <div class="tablebox"> | 
 |  |  |                     <div class="table-head"> | 
 |  |  |                         <li><span>条码名称</span><span class="right">扫码时间</span></li> | 
 |  |  |                     </div> | 
 |  |  |                     <div id="barcode3" class="table-body"> | 
 |  |  |  | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |             </div> | 
 |  |  |         </div> | 
 |  |  |         <!-- 堆垛机弹窗 --> | 
 |  |  |         <div id="crnWindow" style="display: none;" class="animate__animated animate__fadeIn"> | 
 |  |  |             <div id="crnWindow-head"> | 
 |  |  |                 <div class='detailed'></div> | 
 |  |  |                 <button></button> | 
 |  |  |             </div> | 
 |  |  |             <form> | 
 |  |  |                 <!-- 堆垛机号 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label" style> | 
 |  |  |                         <span>堆垛机号:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="crnNo" value="" id="crnNo"> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 工作号 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>工作号:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="workNo" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 站源 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>站源:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="sourceStaNo" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 目标站 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>目标站:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="staNo" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 工作状态 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>工作状态:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="wrkSts" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 出入类型 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>出入类型:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="ioType" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 源库位 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>源库位:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="sourceLocNo" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 目标库位 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>目标库位:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="locNo" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 堆垛机状态 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>堆垛机状态:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="crnStatus" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 异常 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>异常:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="error" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 操作按钮 --> | 
 |  |  |                 <div class="form-item" style="display: flex;"> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <div>入库:开<input type="radio" name="pakIn" id="pakInY" value="1"> 关<input type="radio" name="pakIn" id="pakInN" value="0"/></div> | 
 |  |  |                         <div>出库:开<input type="radio" name="pakOut" id="pakOutY" value="1"> 关<input type="radio" name="pakOut" id="pakOutN" value="0"/></div> | 
 |  |  |                     </div> | 
 |  |  |                     <div><a id="crnCommand" class="layui-btn">下发命令</a></div> | 
 |  |  |                 </div> | 
 |  |  |             </form> | 
 |  |  |         </div> | 
 |  |  |         <!-- 输送设备弹窗 --> | 
 |  |  |         <div id="siteWindow" style="display: none;" class="animate__animated animate__fadeIn"> | 
 |  |  |             <!-- 表头 --> | 
 |  |  |             <div id="siteWindow-head"> | 
 |  |  |                 <div class='detailed'></div> | 
 |  |  |                 <button></button> | 
 |  |  |             </div> | 
 |  |  |             <form> | 
 |  |  |                 <!-- 设备号 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>设备号:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="siteId" value="" id="devpSiteId"> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 工作号 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>工作号:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="workNo" value="" id="devpWorkNo"> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 工作状态 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>工作状态:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="wrkSts" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 自动 --> | 
 |  |  |                 <div class="form-item-checkbox"> | 
 |  |  |                     <div class="form-item-label-checkbox"> | 
 |  |  |                         <span>自动</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input-checkbox"> | 
 |  |  |                         <input type="checkbox" name="autoing"> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 有物 --> | 
 |  |  |                 <div class="form-item-checkbox"> | 
 |  |  |                     <div class="form-item-label-checkbox"> | 
 |  |  |                         <span>有物</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input-checkbox"> | 
 |  |  |                         <input type="checkbox" name="loading"> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 能入 --> | 
 |  |  |                 <div class="form-item-checkbox"> | 
 |  |  |                     <div class="form-item-label-checkbox"> | 
 |  |  |                         <span>能入</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input-checkbox"> | 
 |  |  |                         <input type="checkbox" name="canining"> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 能出 --> | 
 |  |  |                 <div class="form-item-checkbox"> | 
 |  |  |                     <div class="form-item-label-checkbox"> | 
 |  |  |                         <span>能出</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input-checkbox"> | 
 |  |  |                         <input type="checkbox" name="canouting"> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 出入类型 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>出入类型:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="ioType" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 源站 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>源站:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="sourceStaNo" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 目标站 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>目标站:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="staNo" value="" id="devpStaNo"> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 源库位 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>源库位:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="sourceLocNo" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 目标库位 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <div class="form-item-label"> | 
 |  |  |                         <span>目标库位:</span> | 
 |  |  |                     </div> | 
 |  |  |                     <div class="form-item-input"> | 
 |  |  |                         <input type="text" name="locNo" value=""> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 操作按钮 --> | 
 |  |  |                 <div class="form-item"> | 
 |  |  |                     <a id="devpCommand" class="layui-btn">下发命令</a> | 
 |  |  |                 </div> | 
 |  |  |             </form> | 
 |  |  |         </div> | 
 |  |  |     </div> | 
 |  |  |  | 
 |  |  | </body> | 
 |  |  |  | 
 |  |  | </html> | 
 |  |  | <script> | 
 |  |  |     getMap(); | 
 |  |  | </script> | 
 |  |  | <script> | 
 |  |  |     setInterval(function () { | 
 |  |  |         getCodeData(); | 
 |  |  |         renderBarCode(); | 
 |  |  |     }, 1000) | 
 |  |  |     var tData = [],tData1 = [],tData2 = [],tData3 = []; | 
 |  |  |     function getCodeData() { | 
 |  |  |         $.ajax({ | 
 |  |  |             url: baseUrl + '/console/barcode/output/site', | 
 |  |  |             method: 'GET', | 
 |  |  |             success: function (res) { | 
 |  |  |                 // console.log(res) | 
 |  |  |                 if (res.code === 200) { | 
 |  |  |                     tData = eval(res.data); | 
 |  |  |                     if (tData.length <= 5) { | 
 |  |  |                         tData1 = tData | 
 |  |  |                     } else if (tData.length <= 10) { | 
 |  |  |                         tData1 = tData.slice(0, 5) | 
 |  |  |                         tData.splice(0, 5) | 
 |  |  |                         tData2 = tData | 
 |  |  |                     } else if (tData.length <= 15) { | 
 |  |  |                         tData1 = tData.slice(0, 5) | 
 |  |  |                         tData2 = tData.slice(6, 10) | 
 |  |  |                         tData.splice(0, 10) | 
 |  |  |                         tData3 = tData | 
 |  |  |                     } else { | 
 |  |  |                         tData = tData.slice(-15) | 
 |  |  |                         tData1 = tData.slice(-15) | 
 |  |  |                         tData2 = tData.slice(-10) | 
 |  |  |                         tData3 = tData.slice(-5) | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }) | 
 |  |  |     } | 
 |  |  |     function renderBarCode() { | 
 |  |  |         for (var i = 0; i < tData1.length; i++) { | 
 |  |  |             var str1 = '<li><span>' + tData1[i].id +'-'+ tData1[i].scale +'kg'+ '</span><span class="right">' + tData1[i].time + '</span></li>' | 
 |  |  |             $('#scale1').append(str1) | 
 |  |  |         } | 
 |  |  |         for (var j = 0; j < tData2.length; j++) { | 
 |  |  |             var str2 = '<li><span>' + tData2[j].id +'-'+ tData1[i].scale +'kg'+ '</span><span class="right">' + tData2[j].time + '</span></li>' | 
 |  |  |             $('#scale2').append(str2) | 
 |  |  |         } | 
 |  |  |         for (var k = 0; k < tData3.length; k++) { | 
 |  |  |             var str3 = '<li><span>' + tData3[k].id +'-'+ tData1[i].scale +'kg'+ '</span><span class="right">' + tData3[k].time + '</span></li>' | 
 |  |  |             $('#scale3').append(str3) | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  | </script> | 
 |  |  | <script type="text/javascript"> | 
 |  |  |     // 弹窗站点信息 | 
 |  |  |     $("body").on('click', '.site', function (e) { | 
 |  |  |         console.log(e) | 
 |  |  |         var id = this.id.split("-")[1]; | 
 |  |  |         $("#siteWindow").attr("style", "display:block;");//显示div | 
 |  |  |         $("#crnWindow").attr("style", "display:none;"); | 
 |  |  |         $(".detailed").empty(); | 
 |  |  |         $('.detailed').append(id + '站点详细信息'); | 
 |  |  |         $.ajax({ | 
 |  |  |             url: baseUrl + "/console/site/detail", | 
 |  |  |             headers: { | 
 |  |  |                 'token': localStorage.getItem('token') | 
 |  |  |             }, | 
 |  |  |             data: { | 
 |  |  |                 siteId: id | 
 |  |  |             }, | 
 |  |  |             method: 'post', | 
 |  |  |             success: function (res) { | 
 |  |  |                 for (var val in res.data) { | 
 |  |  |                     var find = $("#siteWindow").find(":input[name='" + val + "']"); | 
 |  |  |                     if (find[0].type === 'text') { | 
 |  |  |                         find.val(res.data[val]); | 
 |  |  |                     } else if (find[0].type === 'checkbox') { | 
 |  |  |                         find.attr("checked", res.data[val] === 'Y'); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |         }) | 
 |  |  |  | 
 |  |  |     }); | 
 |  |  |     // 堆垛机信息 | 
 |  |  |     $("body").on('click', '.machine', function () { | 
 |  |  |         var id = this.id.split("-")[1]; | 
 |  |  |         $("#crnWindow").attr('style', 'display:block;'); | 
 |  |  |         $("#siteWindow").attr("style", "display:none;"); | 
 |  |  |         $('.detailed').empty(); | 
 |  |  |         $('.detailed').append(id + '号堆垛机'); | 
 |  |  |         $.ajax({ | 
 |  |  |             url: baseUrl + "/console/crn/detail", | 
 |  |  |             headers: { | 
 |  |  |                 'token': localStorage.getItem('token') | 
 |  |  |             }, | 
 |  |  |             data: { | 
 |  |  |                 crnNo: id | 
 |  |  |             }, | 
 |  |  |             method: 'post', | 
 |  |  |             success: function (res) { | 
 |  |  |                 console.log(res) | 
 |  |  |                 for (var val in res.data) { | 
 |  |  |                     if (val === "inEnable") { | 
 |  |  |                         if (res.data[val] === 'Y') { | 
 |  |  |                             $("#pakInY").prop("checked", true); | 
 |  |  |                         }else{ | 
 |  |  |                             $("#pakInN").prop("checked", true); | 
 |  |  |                         } | 
 |  |  |                     }else if (val === "outEnable") { | 
 |  |  |                         if (res.data[val] === 'Y') { | 
 |  |  |                             $("#pakOutY").prop("checked", true); | 
 |  |  |                         }else{ | 
 |  |  |                             $("#pakOutN").prop("checked", true); | 
 |  |  |                         } | 
 |  |  |                     }else { | 
 |  |  |                         var find = $("#crnWindow").find(":input[name='" + val + "']"); | 
 |  |  |                         if (find[0].type === 'text') { | 
 |  |  |                             find.val(res.data[val]); | 
 |  |  |                         } else if (find[0].type === 'checkbox') { | 
 |  |  |                             find.attr("checked", res.data[val] === 'Y'); | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |         }) | 
 |  |  |  | 
 |  |  |     }); | 
 |  |  |     // 弹窗关闭 | 
 |  |  |     $('button').on('click', function () { | 
 |  |  |         $('#siteWindow').attr('style', 'display:none') | 
 |  |  |         $('#crnWindow').attr('style', 'display:none') | 
 |  |  |     }) | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     var crn1Position = 0; | 
 |  |  |     var crn2Position = 0; | 
 |  |  |     var crn3Position = 0; | 
 |  |  |     var crn4Position = 0; | 
 |  |  |     var crn5Position = 0; | 
 |  |  |  | 
 |  |  |     // 初始化 | 
 |  |  |     getSitesInfo(); | 
 |  |  |     getCrnInfo(); | 
 |  |  |     getSystemRunningStatus(); | 
 |  |  |     getBarcodeInfo(); | 
 |  |  |     getScaleInfo(); | 
 |  |  |     // 实时访问 | 
 |  |  |     setInterval(function () { | 
 |  |  |         getCrnInfo(); | 
 |  |  |         getSystemRunningStatus(); | 
 |  |  |         getBarcodeInfo(); | 
 |  |  |         getScaleInfo(); | 
 |  |  |     }, 1000); | 
 |  |  |     setInterval(function () { | 
 |  |  |         getSitesInfo(); | 
 |  |  |     }, 3000); | 
 |  |  |  | 
 |  |  |     // 系统运行开关 | 
 |  |  |     function systemSwitch() { | 
 |  |  |         if (parent.systemRunning) { | 
 |  |  |             layer.prompt({title: '请输入口令,并停止 WCS 系统', formType: 1, shadeClose: true}, function (pass, idx) { | 
 |  |  |                 layer.close(idx); | 
 |  |  |                 doSwitch(0, pass); // 停止wcs系统 | 
 |  |  |             }); | 
 |  |  |         } else { | 
 |  |  |             doSwitch(1); // 启动wcs系统 | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     // 请求服务器控制wcs系统运行状态 | 
 |  |  |     function doSwitch(operatorType, password) { | 
 |  |  |         // 加载tips | 
 |  |  |         var index = layer.load(1, { | 
 |  |  |             shade: [0.1, '#fff'] | 
 |  |  |         }); | 
 |  |  |         $.ajax({ | 
 |  |  |             url: baseUrl + "/console/system/switch", | 
 |  |  |             headers: {'token': localStorage.getItem('token')}, | 
 |  |  |             // async: false, | 
 |  |  |             data: { | 
 |  |  |                 operatorType: operatorType, | 
 |  |  |                 password: password | 
 |  |  |             }, | 
 |  |  |             method: 'POST', | 
 |  |  |             success: function (res) { | 
 |  |  |                 layer.close(index); | 
 |  |  |                 if (res.code === 200) { | 
 |  |  |                     if (res.data.status) { | 
 |  |  |                         $('#system-icon').attr("class", "system-icon-open"); | 
 |  |  |                         $('#system-run-desc').html("系统运行中..."); | 
 |  |  |                         parent.systemRunning = true; | 
 |  |  |                     } else { | 
 |  |  |                         $('#system-icon').attr("class", "system-icon-close"); | 
 |  |  |                         $('#system-run-desc').html("系统已停止!"); | 
 |  |  |                         parent.systemRunning = false; | 
 |  |  |                     } | 
 |  |  |                 } else if (res.code === 403) { | 
 |  |  |                     parent.location.href = baseUrl + "/login"; | 
 |  |  |                 } else { | 
 |  |  |                     console.log(res.msg); | 
 |  |  |  | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     // 获取wcs系统运行状态 | 
 |  |  |     function getSystemRunningStatus() { | 
 |  |  |         $.ajax({ | 
 |  |  |             url: baseUrl + "/console/system/running/status", | 
 |  |  |             headers: {'token': localStorage.getItem('token')}, | 
 |  |  |             method: 'POST', | 
 |  |  |             success: function (res) { | 
 |  |  |                 if (res.code === 200) { | 
 |  |  |                     if (res.data.status) { | 
 |  |  |                         $('#system-icon').attr("class", "system-icon-open"); | 
 |  |  |                         $('#system-run-desc').html("系统运行中..."); | 
 |  |  |                         parent.systemRunning = true; | 
 |  |  |                     } else { | 
 |  |  |                         $('#system-icon').attr("class", "system-icon-close"); | 
 |  |  |                         $('#system-run-desc').html("系统已停止!"); | 
 |  |  |                         parent.systemRunning = false; | 
 |  |  |                     } | 
 |  |  |                 } else if (res.code === 403) { | 
 |  |  |                     parent.location.href = baseUrl + "/login"; | 
 |  |  |                 } else { | 
 |  |  |                     console.log(res.msg); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     // 输送设备实时数据获取 | 
 |  |  |     function getSitesInfo() { | 
 |  |  |         // carAnimate(112,4); | 
 |  |  |         $.ajax({ | 
 |  |  |             url: baseUrl + "/console/latest/data/site", | 
 |  |  |             headers: {'token': localStorage.getItem('token')}, | 
 |  |  |             method: 'POST', | 
 |  |  |             success: function (res) { | 
 |  |  |                 if (res.code === 200) { | 
 |  |  |                     var sites = res.data; | 
 |  |  |                     for (var i = 0; i < sites.length; i++) { | 
 |  |  |                         var siteEl = $("#site-" + sites[i].siteId); | 
 |  |  |                         siteEl.attr("class", "site " + sites[i].siteStatus); | 
 |  |  |                         if (sites[i].workNo != null && sites[i].workNo > 0) { | 
 |  |  |                             siteEl.html(sites[i].siteId + "[" + sites[i].workNo + "]"); | 
 |  |  |                         } else { | 
 |  |  |                             siteEl.html(sites[i].siteId); | 
 |  |  |                         } | 
 |  |  |                         // RGV位置 | 
 |  |  |                         if(sites[i].siteId === '112' || sites[i].siteId === '212'){ | 
 |  |  |                             carAnimate(Number(sites[i].siteId), Number(sites[i].nearbySta)); | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                 } else if (res.code === 403) { | 
 |  |  |                     parent.location.href = baseUrl + "/login"; | 
 |  |  |                 } else { | 
 |  |  |                     console.log(res.msg); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     // 堆垛机实时数据获取 | 
 |  |  |     function getCrnInfo() { | 
 |  |  |         $.ajax({ | 
 |  |  |             url: baseUrl + "/console/latest/data/crn", | 
 |  |  |             headers: {'token': localStorage.getItem('token')}, | 
 |  |  |             method: 'POST', | 
 |  |  |             success: function (res) { | 
 |  |  |                 // console.log(res) | 
 |  |  |                 if (res.code === 200) { | 
 |  |  |                     var crns = res.data; | 
 |  |  |                     for (var i = 0; i < crns.length; i++) { | 
 |  |  |                         var crnEl = $("#crn-" + crns[i].crnId); | 
 |  |  |                         crnEl.attr("class", "machine " + crns[i].crnStatus); | 
 |  |  |                         var unit = 20.6;//($('.item').eq(0).width() + 13) / 2; | 
 |  |  |                         if (crns[i].bay < 0) { | 
 |  |  |                             crns[i].bay = 1; | 
 |  |  |                         } | 
 |  |  |                         // crnEl.animate({left: (crns[i].bay * unit) + 'px'}, 1000); | 
 |  |  |                         // crns[i].bay = 1; | 
 |  |  |  | 
 |  |  |                         var offSet = 800; | 
 |  |  |                         // crns[i].bay = 41; | 
 |  |  |                         if(crns[i].bay === 1){ | 
 |  |  |                             crnEl.animate({left: offSet + 'px'}, 1000); | 
 |  |  |                         } else { | 
 |  |  |                             crnEl.animate({left: (offSet - unit + (crns[i].bay * unit)) + 'px'}, 1000); | 
 |  |  |                         } | 
 |  |  |  | 
 |  |  |                     } | 
 |  |  |                 } else if (res.code === 403) { | 
 |  |  |                     parent.location.href = baseUrl + "/login"; | 
 |  |  |                 } else { | 
 |  |  |                     console.log(res.msg); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     // 扫码器实时数据获取 | 
 |  |  |     function getBarcodeInfo() { | 
 |  |  |         $.ajax({ | 
 |  |  |             url: baseUrl + "/console/latest/data/barcode", | 
 |  |  |             headers: {'token': localStorage.getItem('token')}, | 
 |  |  |             method: 'POST', | 
 |  |  |             success: function (res) { | 
 |  |  |                 if (res.code === 200) { | 
 |  |  |                     var barcodes = res.data; | 
 |  |  |                     for (var i = 0; i < barcodes.length; i++) { | 
 |  |  |                         $("#code-decoder-data-" + barcodes[i].barcodeId).html(barcodes[i].codeValue); | 
 |  |  |                     } | 
 |  |  |                 } else if (res.code === 403) { | 
 |  |  |                     parent.location.href = baseUrl + "/login"; | 
 |  |  |                 } else { | 
 |  |  |                     console.log(res.msg); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     // 磅秤实时数据获取 | 
 |  |  |     function getScaleInfo() { | 
 |  |  |         $.ajax({ | 
 |  |  |             url: baseUrl + "/console/latest/data/scale", | 
 |  |  |             headers: {'token': localStorage.getItem('token')}, | 
 |  |  |             method: 'POST', | 
 |  |  |             success: function (res) { | 
 |  |  |  | 
 |  |  |                 if (res.code === 200) { | 
 |  |  |                     var sclaes = res.data; | 
 |  |  |                     for (var i = 0; i < sclaes.length; i++) { | 
 |  |  |                         console.log(sclaes[i].scaleId + ":" + sclaes[i].value) | 
 |  |  |                         $("#scale-data-" + sclaes[i].scaleId).text(sclaes[i].value); | 
 |  |  |                     } | 
 |  |  |                 } else if (res.code === 403) { | 
 |  |  |                     parent.location.href = baseUrl + "/login"; | 
 |  |  |                 } else { | 
 |  |  |                     console.log(res.msg); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     // 堆垛机偏移动画 | 
 |  |  |     function crnAnimate(id, leftVal) { | 
 |  |  |         // console.log(crn1Position) | 
 |  |  |         switch (id) { | 
 |  |  |             case 1: | 
 |  |  |                 $("#crn-1").animate({left: leftVal + 'px'}, 1000); | 
 |  |  |                 crn1Position = leftVal; | 
 |  |  |                 break; | 
 |  |  |             case 2: | 
 |  |  |                 $("#crn-2").animate({left: leftVal + 'px'}, 1000); | 
 |  |  |                 crn2Position = leftVal; | 
 |  |  |                 break; | 
 |  |  |             case 3: | 
 |  |  |                 $("#crn-3").animate({left: leftVal + 'px'}, 1000); | 
 |  |  |                 crn3Position = leftVal; | 
 |  |  |                 break; | 
 |  |  |             case 4: | 
 |  |  |                 $("#crn-4").animate({left: leftVal + 'px'}, 1000); | 
 |  |  |                 crn4Position = leftVal; | 
 |  |  |                 break; | 
 |  |  |             case 5: | 
 |  |  |                 $("#crn-5").animate({left: leftVal + 'px'}, 1000); | 
 |  |  |                 crn5Position = leftVal; | 
 |  |  |                 break; | 
 |  |  |             default: | 
 |  |  |                 break | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     // 小车偏移动画 | 
 |  |  |     function carAnimate(id, target) { | 
 |  |  |         var targetTop = 0; | 
 |  |  |         if (id === 112) { | 
 |  |  |             switch (target) { | 
 |  |  |                 case 1: | 
 |  |  |                     targetTop += 313; | 
 |  |  |                     break; | 
 |  |  |                 case 2: | 
 |  |  |                     targetTop += 313; | 
 |  |  |                     break; | 
 |  |  |                 case 3: | 
 |  |  |                     targetTop += 256; | 
 |  |  |                     break; | 
 |  |  |                 case 4: | 
 |  |  |                     targetTop += 226; | 
 |  |  |                     break; | 
 |  |  |                 case 5: | 
 |  |  |                     targetTop += 168; | 
 |  |  |                 case 6: | 
 |  |  |                     targetTop += 168; | 
 |  |  |                     break; | 
 |  |  |                 default: | 
 |  |  |                     return; | 
 |  |  |             } | 
 |  |  |         } else if (id === 212) { | 
 |  |  |             switch (target) { | 
 |  |  |                 case 1: | 
 |  |  |                     targetTop += 313; | 
 |  |  |                     break; | 
 |  |  |                 case 2: | 
 |  |  |                     targetTop += 313; | 
 |  |  |                     break; | 
 |  |  |                 case 3: | 
 |  |  |                     targetTop += 256; | 
 |  |  |                     break; | 
 |  |  |                 case 4: | 
 |  |  |                     targetTop += 226; | 
 |  |  |                     break; | 
 |  |  |                 case 5: | 
 |  |  |                     targetTop += 168; | 
 |  |  |                 case 6: | 
 |  |  |                     targetTop += 168; | 
 |  |  |                     break; | 
 |  |  |                 default: | 
 |  |  |                     return; | 
 |  |  |             } | 
 |  |  |         } else { | 
 |  |  |             return; | 
 |  |  |         } | 
 |  |  |         $("#site-" + id).animate({top: targetTop + 'px'}, 1000); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     //下发输送线命令 | 
 |  |  |     $("#devpCommand").on("click", () => { | 
 |  |  |         let siteId = $("#devpSiteId").val()//设备id | 
 |  |  |         let wrkNo = $("#devpWorkNo").val()//工作号 | 
 |  |  |         let staNo = $("#devpStaNo").val()//目标站 | 
 |  |  |  | 
 |  |  |         $.ajax({ | 
 |  |  |             url: baseUrl+"/site/detl/update", | 
 |  |  |             headers: {'token': localStorage.getItem('token')}, | 
 |  |  |             data: { | 
 |  |  |                 devNo: siteId, | 
 |  |  |                 workNo: wrkNo, | 
 |  |  |                 staNo: staNo, | 
 |  |  |             }, | 
 |  |  |             method: 'POST', | 
 |  |  |             success: function (res) { | 
 |  |  |                 if (res.code === 200){ | 
 |  |  |                     layer.msg("下发成功",{icon: 1,}); | 
 |  |  |                 } else if (res.code === 403){ | 
 |  |  |                     top.location.href = baseUrl+"/"; | 
 |  |  |                 }else { | 
 |  |  |                     layer.msg(res.msg, {icon: 2}); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }) | 
 |  |  |     }); | 
 |  |  |  | 
 |  |  |     //下发堆垛机命令 | 
 |  |  |     $("#crnCommand").on("click", () => { | 
 |  |  |         let crnNo = $("#crnNo").val()//设备id | 
 |  |  |         var pakIn = $('input[name="pakIn"]:checked').val(); | 
 |  |  |         var pakOut = $('input[name="pakOut"]:checked').val(); | 
 |  |  |  | 
 |  |  |         console.log(pakIn,pakOut) | 
 |  |  |  | 
 |  |  |         $.ajax({ | 
 |  |  |             url: baseUrl + "/basCrnp/update/auth", | 
 |  |  |             headers: { | 
 |  |  |                 'token': localStorage.getItem('token') | 
 |  |  |             }, | 
 |  |  |             data: { | 
 |  |  |                 crnNo: crnNo, | 
 |  |  |                 inEnable: pakIn == 1 ? "Y" : "N", | 
 |  |  |                 outEnable: pakOut == 1 ? "Y" : "N" | 
 |  |  |             }, | 
 |  |  |             method: 'POST', | 
 |  |  |             success: function (res) { | 
 |  |  |                 if (res.code === 200){ | 
 |  |  |                     layer.msg("下发成功",{icon: 1,}); | 
 |  |  |                 } else if (res.code === 403){ | 
 |  |  |                     top.location.href = baseUrl+"/"; | 
 |  |  |                 }else { | 
 |  |  |                     layer.msg(res.msg, {icon: 2}); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |     }); | 
 |  |  |  | 
 |  |  | </script> |