Device_Parameter-.html 53 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937
  1. <!DOCTYPE html>
  2. <html class="x-admin-sm" style="" xmlns="http://www.w3.org/1999/html">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="renderer" content="webkit">
  6. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  7. <meta name="viewport" content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi" />
  8. <link rel="shortcut icon" href="https://osscold.baozhida.cn/favicon.ico">
  9. <link rel="bookmark" href="https://osscold.baozhida.cn/favicon.ico">
  10. <link rel="stylesheet" href="https://osscold.baozhida.cn/css/font.css">
  11. <link rel="stylesheet" href="https://osscold.baozhida.cn/css/xadmin.css">
  12. <link rel="stylesheet" href="https://osscold.baozhida.cn/layui/css/layui.css">
  13. <script type="text/javascript" src="https://osscold.baozhida.cn/layui/layui.js" charset="utf-8"></script>
  14. <script type="text/javascript" src="https://osscold.baozhida.cn/js/xadmin.js"></script>
  15. <script src="https://cdn.staticfile.org/jquery/3.4.0/jquery.min.js"></script>
  16. <script src="https://cdn.staticfile.org/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>
  17. <!-- 让IE8/9支持媒体查询,从而兼容栅格 -->
  18. <!--[if lt IE 9]>
  19. <script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
  20. <script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
  21. <![endif]--></head>
  22. <body>
  23. <div class="layui-fluid" style="overflow: auto">
  24. <div class="layui-row" >
  25. <fieldset class="layui-elem-field layui-field-title" style="margin-top: 20px;">
  26. <legend>设备参数 {{if gt $.DeviceParameter_lite_SendState_z 0 }} <span style="background-color: #dedede;"> 上次设置的参数 还没有生效,再次提交会替换上次的数据!</span> {{end}}</legend>
  27. </fieldset>
  28. {{if gt $.DeviceParameter_lite_z 0 }}
  29. <div style="{{if gt $.DeviceParameter_lite_SendState_z 0 }} background-color: #dedede; {{end}}">
  30. <form class="layui-form" action="" lay-filter="example1">
  31. <div class="layui-form-item">
  32. <div class="layui-inline">
  33. <label class="layui-form-label" style="width: 28px;">SN</label>
  34. <div class="layui-input-inline">
  35. <input class="layui-input layui-disabled" value="{{.Device.T_sn}}" type="text" id="SN" name="SN" autocomplete="off" class="layui-input">
  36. </div>
  37. </div>
  38. <div class="layui-inline">
  39. <label class="layui-form-label">设备名称</label>
  40. <div class="layui-input-inline">
  41. <input type="text" id="devName" value="{{.Device.T_devName}}" name="devName" autocomplete="off" class="layui-input">
  42. </div>
  43. </div>
  44. </div>
  45. <div class="layui-form-item">
  46. <!-- <div class="layui-inline">-->
  47. <!-- <label class="layui-form-label">实时上传间隔</label>-->
  48. <!-- <div class="layui-input-inline" style="width: 100px;">-->
  49. <!-- <input type="text" id="uploadTime" value="{{.DeviceParameter.T_uploadTime}}" name="uploadTime" autocomplete="off" class="layui-input">-->
  50. <!-- </div>-->
  51. <!-- <span style="float: left;margin-top: 10px;">秒</span>-->
  52. <!-- </div>-->
  53. <div class="layui-inline" style="width: 370px">
  54. <label class="layui-form-label" style="width: 130px;">数据保存间隔</label>
  55. <div class="layui-input-inline" style="width: 100px;">
  56. <input type="text" id="saveTime" name="saveTime" value="{{.DeviceParameter.T_saveTime}}" autocomplete="off" class="layui-input">
  57. </div>
  58. <span style="float: left;margin-top: 10px;">秒(60~1800)</span>
  59. </div>
  60. <div class="layui-inline">
  61. <label class="layui-form-label" style="width: 175px;">数据超限保存间隔</label>
  62. <div class="layui-input-inline" style="width: 100px;">
  63. <input type="text" id="overrunSave" name="overrunSave" value="{{.DeviceParameter.T_overrunSave}}" autocomplete="off" class="layui-input">
  64. </div>
  65. <span style="float: left;margin-top: 10px;">秒(60~120)</span>
  66. </div>
  67. </div>
  68. <div class="layui-form-item">
  69. <div class="layui-inline" style="width: 370px">
  70. <label class="layui-form-label" style="width: 130px;">超限报警触发间隔</label>
  71. <div class="layui-input-inline" style="width: 100px;">
  72. <input type="text" id="overrunAlarm" name="overrunAlarm" value="{{.DeviceParameter.T_overrunAlarm}}" autocomplete="off" class="layui-input">
  73. </div>
  74. <span style="float: left;margin-top: 10px;">秒(60~600)</span>
  75. </div>
  76. <div class="layui-inline">
  77. <label class="layui-form-label" style="width: 175px;">传感器掉线报警触发间隔</label>
  78. <div class="layui-input-inline" style="width: 100px;">
  79. <input type="text" id="lostAlarm" name="lostAlarm" value="{{.DeviceParameter.T_lostAlarm}}" autocomplete="off" class="layui-input">
  80. </div>
  81. <span style="float: left;margin-top: 10px;">秒(60~600)</span>
  82. </div>
  83. </div>
  84. <div class="layui-form-item">
  85. <div class="layui-inline" style="width: 370px">
  86. <label class="layui-form-label" style="width: 130px;">断电报警触发间隔</label>
  87. <div class="layui-input-inline" style="width: 100px;">
  88. <input type="text" id="outageAlarm" name="outageAlarm" value="{{.DeviceParameter.T_outageAlarm}}" autocomplete="off" class="layui-input">
  89. </div>
  90. <span style="float: left;margin-top: 10px;">秒(60~600) </span>
  91. </div>
  92. <div class="layui-inline">
  93. <label class="layui-form-label" style="width: 175px;">超限预警触发间隔</label>
  94. <div class="layui-input-inline" style="width: 100px;">
  95. <input type="text" id="warningTime" name="warningTime" value="{{.DeviceParameter.T_warningTime}}" autocomplete="off" class="layui-input">
  96. </div>
  97. <span style="float: left;margin-top: 10px;">秒(0,60~600)</span>
  98. </div>
  99. </div>
  100. <div class="layui-form-item">
  101. <div class="layui-inline" style="width: 370px">
  102. <label class="layui-form-label" style="width: 130px;">超限预警延时</label>
  103. <div class="layui-input-inline" style="width: 100px;">
  104. <input type="text" id="warningDelay" name="warningDelay" value="{{.DeviceParameter.T_warningDelay}}" autocomplete="off" class="layui-input">
  105. </div>
  106. <span style="float: left;margin-top: 10px;">秒(0~600) </span>
  107. </div>
  108. <div class="layui-inline">
  109. <label class="layui-form-label" style="width: 175px;">电池电量下限</label>
  110. <div class="layui-input-inline" style="width: 100px;">
  111. <input type="text" id="batteryLimit" name="batteryLimit" value="{{.DeviceParameter.T_batteryLimit}}" autocomplete="off" class="layui-input">
  112. </div>
  113. <span style="float: left;margin-top: 10px;">%(0~10)</span>
  114. </div>
  115. </div>
  116. <div class="layui-form-item">
  117. <div class="layui-inline" style="width: 370px">
  118. <label class="layui-form-label" style="width: 130px;">温度预警提前量</label>
  119. <div class="layui-input-inline" style="width: 100px;">
  120. <input type="text" id="tempPre" name="tempPre" value="{{.DeviceParameter.T_tempPre}}" autocomplete="off" class="layui-input">
  121. </div>
  122. <span style="float: left;margin-top: 10px;">℃(0~3) </span>
  123. </div>
  124. <div class="layui-inline">
  125. <label class="layui-form-label" style="width: 175px;">湿度预警提前量</label>
  126. <div class="layui-input-inline" style="width: 100px;">
  127. <input type="text" id="humPre" name="humPre" value="{{.DeviceParameter.T_humPre}}" autocomplete="off" class="layui-input">
  128. </div>
  129. <span style="float: left;margin-top: 10px;">%(0~30)</span>
  130. </div>
  131. </div>
  132. <div class="layui-form-item">
  133. <div class="layui-inline">
  134. <label class="layui-form-label" style="width: 60px;">公司名称</label>
  135. <div class="layui-input-inline" style="width: 120px;">
  136. <input type="text" id="company" name="company" value="{{.DeviceParameter.T_company}}" autocomplete="off" class="layui-input">
  137. </div>
  138. </div>
  139. <div class="layui-inline">
  140. <label class="layui-form-label" style="width: 100px;">蓝牙打印机名称</label>
  141. <div class="layui-input-inline" style="width: 80px;">
  142. <input type="text" id="btname" name="btname" value="{{.DeviceParameter.T_btname}}" autocomplete="off" class="layui-input">
  143. </div>
  144. </div>
  145. <div class="layui-inline">
  146. <label class="layui-form-label" style="width: 100px;">打印机服务号</label>
  147. <div class="layui-input-inline" style="width: 80px;">
  148. <input type="text" id="btserverID" name="btserverID" value="{{.DeviceParameter.T_btserverID}}" autocomplete="off" class="layui-input">
  149. </div>
  150. </div>
  151. <div class="layui-inline">
  152. <label class="layui-form-label" style="width: 100px;">蓝牙特征码</label>
  153. <div class="layui-input-inline" style="width: 80px;">
  154. <input type="text" id="btchar" name="btchar" value="{{.DeviceParameter.T_btchar}}" autocomplete="off" class="layui-input">
  155. </div>
  156. </div>
  157. </div>
  158. <div class="layui-form-item">
  159. <!-- <div class="layui-inline">-->
  160. <!-- <label class="layui-form-label" style="width: 140px;">配置管理主机总终端数量</label>-->
  161. <!-- <div class="layui-input-inline" style="width: 120px;">-->
  162. <!-- <input type="text" id="decTotal" name="decTotal" value="{{.DeviceParameter.T_decTotal}}" autocomplete="off" class="layui-input">-->
  163. <!-- </div>-->
  164. <!-- </div>-->
  165. <div class="layui-inline">
  166. <label class="layui-form-label" style="width: 100px;">配置每个通道数量</label>
  167. <!-- <div class="layui-input-inline" style="width: 380px;">-->
  168. <!-- <input type="text" id="chDecTotal" name="chDecTotal" value="{{.DeviceParameter.T_chDecTotal}}" autocomplete="off" class="layui-input">-->
  169. <!-- </div>-->
  170. <div class="layui-input-inline" style="width: 380px;">
  171. <input type="text" id="chDecTotal0" name="chDecTotal0" lay-verify="required|number" autocomplete="off" class="layui-input" style="width: 35px;float: left">
  172. <input type="text" id="chDecTotal1" name="chDecTotal1" lay-verify="required|number" autocomplete="off" class="layui-input" style="width: 35px;float: left">
  173. <input type="text" id="chDecTotal2" name="chDecTotal2" lay-verify="required|number" autocomplete="off" class="layui-input" style="width: 35px;float: left">
  174. <input type="text" id="chDecTotal3" name="chDecTotal3" lay-verify="required|number" autocomplete="off" class="layui-input" style="width: 35px;float: left">
  175. <input type="text" id="chDecTotal4" name="chDecTotal4" lay-verify="required|number" autocomplete="off" class="layui-input" style="width: 35px;float: left">
  176. <input type="text" id="chDecTotal5" name="chDecTotal5" lay-verify="required|number" autocomplete="off" class="layui-input" style="width: 35px;float: left">
  177. <input type="text" id="chDecTotal6" name="chDecTotal6" lay-verify="required|number" autocomplete="off" class="layui-input" style="width: 35px;float: left">
  178. <input type="text" id="chDecTotal7" name="chDecTotal7" lay-verify="required|number" autocomplete="off" class="layui-input" style="width: 35px;float: left">
  179. <input type="text" id="chDecTotal8" name="chDecTotal8" lay-verify="required|number" autocomplete="off" class="layui-input" style="width: 35px;float: left">
  180. <input type="text" id="chDecTotal9" name="chDecTotal9" lay-verify="required|number" autocomplete="off" class="layui-input" style="width: 35px;float: left">
  181. </div>
  182. </div>
  183. </div>
  184. <div class="layui-form-item" style="text-align: center;margin-top: 20px">
  185. <button type="submit" class="layui-btn layui-btn-normal" lay-submit="" lay-filter="add">配置参数{{if gt $.DeviceParameter_lite_SendState_z 0 }} (替换上次参数) {{end}}</button>
  186. </div>
  187. </form>
  188. </div>
  189. {{else}}
  190. <div class="layui-form-item" style="text-align: center;margin-top: 20px;padding: 20px">
  191. <h1 style="background-color: rgba(255,125,125,0.33);color: #f00;padding: 20px"> 新添加设备</h1>
  192. <h1 style="background-color: rgba(255,125,125,0.33);color: #f00;padding: 20px"> 确保 设备通讯正常后,请 重新进入此页面!</h1>
  193. </div>
  194. {{end}}
  195. <fieldset class="layui-elem-field layui-field-title" style="margin-top: 20px;">
  196. <legend>设备类型参数</legend>
  197. </fieldset>
  198. <form class="layui-form" action="" lay-filter="example">
  199. <div class="layui-form-item" style="font-size: 13px">
  200. <label class="layui-form-label" style="width: 57px;">类型选择</label>
  201. <div class="layui-input-block">
  202. <input type="radio" name="T_l_p" value="0" title="默认"
  203. {{if eq $.Device.T_l_p 0 }}
  204. checked=""
  205. {{end}}
  206. ><div class="layui-unselect layui-form-radio"><i class="layui-anim layui-icon"></i><div>默认</div></div>
  207. <input type="radio" name="T_l_p" value="1" title="物流端"
  208. {{if eq $.Device.T_l_p 1 }}
  209. checked=""
  210. {{end}}
  211. ><div class="layui-unselect layui-form-radio"><i class="layui-anim layui-icon"></i><div>物流端</div></div>
  212. <input type="radio" name="T_l_p" value="2" title="药店端"
  213. {{if eq $.Device.T_l_p 2 }}
  214. checked=""
  215. {{end}}
  216. ><div class="layui-unselect layui-form-radio layui-form-radioed"><i class="layui-anim layui-icon layui-anim-scaleSpring"></i><div>药店端</div></div>
  217. </div>
  218. </div>
  219. <div class="layui-form-item" style="text-align: center;margin-top: 20px">
  220. <button type="submit" class="layui-btn layui-btn-normal" lay-submit="" lay-filter="EPOST2">配置参数</button>
  221. </div>
  222. </form>
  223. <hr>
  224. {{if le $.Admin.Admin_master 1 }}
  225. <fieldset class="layui-elem-field layui-field-title" style="margin-top: 20px;">
  226. <legend>设备是否弃用 !!设备弃用后,只有内部运维权限,才可以查看到!!</legend>
  227. </fieldset>
  228. <form class="layui-form" action="" lay-filter="example">
  229. <div class="layui-form-item" style="font-size: 13px">
  230. <label class="layui-form-label" style="width: 87px;">设备是否弃用</label>
  231. <div class="layui-input-block">
  232. <input type="radio" name="T_give" value="0" title="弃用设备"
  233. {{if eq $.Device.T_give 0 }}
  234. checked=""
  235. {{end}}
  236. ><div class="layui-unselect layui-form-radio"><i class="layui-anim layui-icon"></i><div>弃用设备</div></div>
  237. <input type="radio" name="T_give" value="1" title="开启设备"
  238. {{if eq $.Device.T_give 1 }}
  239. checked=""
  240. {{end}}
  241. ><div class="layui-unselect layui-form-radio"><i class="layui-anim layui-icon"></i><div>开启设备</div></div>
  242. </div>
  243. </div>
  244. <div class="layui-form-item" style="text-align: center;margin-top: 20px">
  245. <button type="submit" class="layui-btn layui-btn-normal" lay-submit="" lay-filter="T_give">配置参数</button>
  246. </div>
  247. </form>
  248. <hr>
  249. {{end}}
  250. <fieldset class="layui-elem-field layui-field-title" style="margin-top: -10px;">
  251. <legend>设备操作</legend>
  252. </fieldset>
  253. {{if eq $.Admin.Admin_master 0 }}
  254. <button class="layui-btn layui-btn-danger" onclick="f_Device_Del()" >删除此设备</button>
  255. {{end}}
  256. <button class="layui-btn layui-btn-normal" onclick="f_Read_DeviceSensorParameter()" >同步传感器</button>
  257. {{if eq .Device.T_monitor 1 }}
  258. <button class="layui-btn layui-btn-normal" onclick="DeviceTask_Post('{{.Device.T_sn}}',{{.Device.T_monitor}})" >停止记录(当期设备正在记录中)</button>
  259. {{else}}
  260. <button class="layui-btn layui-btn-normal" onclick="DeviceTask_Post('{{.Device.T_sn}}',{{.Device.T_monitor}})" >开始记录(当期设备已停止记录)</button>
  261. {{end}}
  262. <hr>
  263. <fieldset class="layui-elem-field layui-field-title" style="margin-top: 20px;">
  264. <legend>最近修改记录(
  265. <span style="background-color:#dedede;margin: 0px 10px;">灰色:等待执行</span>
  266. <span style="background-color:#00FF00;margin: 0px 10px;">绿色:修改成功</span>
  267. <span style="background-color:#ffa5a5;margin: 0px 10px;">红色:修改失败</span>
  268. <span style="background-color:#d7b3f5;margin: 0px 10px;">紫色:覆盖参数</span>
  269. )</legend>
  270. </fieldset>
  271. {{range $index, $elem := .DeviceParameter_lite}}
  272. <div class="layui-inline" style="margin-left: 40px;margin-bottom: 20px;padding: 10px;{{if eq $elem.T_SendState 0 }}background-color:#dedede; {{end}} {{if eq $elem.T_SendState 1 }}background-color:#00FF00; {{end}} {{if eq $elem.T_SendState 2 }}background-color:#ffa5a5; {{end}} {{if eq $elem.T_SendState 3 }}background-color:#d7b3f5; {{end}}">
  273. <span style="margin-right: 20px">操作人UUID:{{$elem.T_uuid}}</span>
  274. <span style="margin-right: 20px">设备名称:{{$elem.T_devName}}</span>
  275. <span style="margin-right: 20px">实时数据上传间隔:{{$elem.T_uploadTime}}</span>
  276. <span style="margin-right: 20px">数据保存间隔:{{$elem.T_saveTime}}</span>
  277. <span style="margin-right: 20px">数据超限保存间隔:{{$elem.T_overrunSave}}</span>
  278. <span style="margin-right: 20px">超限报警触发间隔:{{$elem.T_overrunAlarm}}</span>
  279. <span style="margin-right: 20px">传感器掉线报警触发间隔:{{$elem.T_lostAlarm}}</span>
  280. <span style="margin-right: 20px">断电报警触发间隔:{{$elem.T_outageAlarm}}</span>
  281. <span style="margin-right: 20px">超限预警触发间隔:{{$elem.T_warningTime}}</span>
  282. <span style="margin-right: 20px">超限预警延时:{{$elem.T_warningDelay}}</span>
  283. <span style="margin-right: 20px">电池电量下限:{{$elem.T_batteryLimit}}</span>
  284. <span style="margin-right: 20px">温度预警提前量:{{$elem.T_tempPre}}</span>
  285. <span style="margin-right: 20px">湿度预警提前量:{{$elem.T_humPre}}</span>
  286. <span style="margin-right: 20px">是否启动超限预警:{{$elem.T_enwarning}}</span>
  287. <span style="margin-right: 20px">公司名称:{{$elem.T_company}}</span>
  288. <span style="margin-right: 20px">蓝牙打印机名称:{{$elem.T_btname}}</span>
  289. <span style="margin-right: 20px">打印机服务号:{{$elem.T_btserverID}}</span>
  290. <span style="margin-right: 20px">蓝牙特征码:{{$elem.T_btchar}}</span>
  291. <span style="margin-right: 20px">配置管理主机总终端数量:{{$elem.T_decTotal}}</span>
  292. <span style="margin-right: 20px">配置每个通道数量:{{$elem.T_chDecTotal}}</span>
  293. <span style="margin-right: 20px">修改时间:{{$elem.CreateTime}}</span>
  294. </div>
  295. {{end}}
  296. </div>
  297. </div>
  298. <script>
  299. //获取url中的参数
  300. function getQueryString(name) {
  301. var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
  302. var r = window.location.search.substr(1).match(reg);
  303. if (r != null)
  304. return decodeURIComponent(r[2]);
  305. return null;
  306. }
  307. // 页面 加载完成后执行
  308. window.onload = function () {
  309. console.log("页面 加载完成后执行")
  310. }
  311. f_Read_DeviceParameter_is = true
  312. function f_Read_DeviceParameter() {
  313. if(f_Read_DeviceParameter_is){
  314. $.ajax({
  315. type: 'POST',
  316. url: 'Read_DeviceParameter',//发送请求
  317. data: {
  318. SN:getQueryString("Sn"),
  319. },
  320. success: function(result) {
  321. }
  322. });
  323. f_Read_DeviceParameter_is = false
  324. }
  325. }
  326. function f_Read_DeviceSensorParameter() {
  327. $.ajax({
  328. type: 'POST',
  329. url: 'Read_DeviceSensorParameter',//发送请求
  330. data: {
  331. SN:getQueryString("Sn"),
  332. },
  333. success: function(result) {
  334. layer.msg('请求成功!');
  335. }
  336. });
  337. }
  338. function f_Device_Del() {
  339. // console.log(getQueryString("Sn"),getQueryString("Id"))
  340. //
  341. layer.confirm('确认要 删除 当期设备吗?(清楚后当期所有相关信息 都将会被清除,无法找回!!!)',
  342. function(index) {
  343. var loading = layer.load(0, {
  344. shade: false,
  345. time: 99*1000
  346. });
  347. $.ajax({
  348. type: 'POST',
  349. url: 'Device_Del',//发送请求】
  350. data: {
  351. T_sn: getQueryString("Sn")
  352. },
  353. success: function (result) {
  354. console.log(result)
  355. layer.close(loading)
  356. if(result.Code == 200){
  357. //关闭当前frame
  358. parent.layer.close(parent.layer.getFrameIndex(window.name));
  359. parent.location.reload();
  360. }else {
  361. layer.msg(result.Msg);
  362. }
  363. // return false;
  364. }
  365. });
  366. });
  367. }
  368. // 任务开始
  369. function DeviceTask_Post(T_sn,T_monitor) {
  370. confirm_str = "停止"
  371. T_task = "stop"
  372. if(T_monitor == 0){
  373. confirm_str = "开始"
  374. T_task = "start"
  375. }
  376. layer.confirm("确定"+confirm_str+"记录?", {
  377. btn: ['确定'] //可以无限个按钮
  378. ,btn1: function(index, layero){
  379. $.ajax({
  380. type: 'POST',
  381. url: '../../Device/DeviceTask_Post',//发送请求
  382. data: {
  383. T_sn: T_sn,
  384. T_task: T_task,
  385. },
  386. success: function (result) {
  387. console.log(result)
  388. layer.msg('提示:'+confirm_str+"记录 发送成功!请 等待同步显示",{time: 3000});
  389. }
  390. });
  391. return false
  392. }
  393. });
  394. }
  395. function get_chDecTotal(x) {
  396. texttext = "{{.DeviceParameter.T_chDecTotal}}"
  397. texttext = texttext.replace('[', '');
  398. texttext = texttext.replace(']', '');
  399. // console.log(texttext)
  400. texttextlistlist = texttext.split(",")
  401. if (texttextlistlist[x] == undefined){
  402. return "0"
  403. }
  404. if (!(parseInt(texttextlistlist[x]) >= 0)){
  405. return "0"
  406. }
  407. if (texttextlistlist[x].length == 0){
  408. return "0"
  409. }
  410. return texttextlistlist[x]
  411. }
  412. layui.use(['form', 'layer',"layedit"],
  413. function() {
  414. $ = layui.jquery;
  415. var form = layui.form,
  416. layer = layui.layer;
  417. var layedit = layui.layedit
  418. layedit.set({
  419. uploadImage: {
  420. url: '/UpFile' //接口url
  421. }
  422. });
  423. form.val('example1', {
  424. "chDecTotal0": get_chDecTotal(0),
  425. "chDecTotal1": get_chDecTotal(1),
  426. "chDecTotal2": get_chDecTotal(2),
  427. "chDecTotal3": get_chDecTotal(3),
  428. "chDecTotal4": get_chDecTotal(4),
  429. "chDecTotal5": get_chDecTotal(5),
  430. "chDecTotal6": get_chDecTotal(6),
  431. "chDecTotal7": get_chDecTotal(7),
  432. "chDecTotal8": get_chDecTotal(8),
  433. "chDecTotal9": get_chDecTotal(9),
  434. });
  435. //构建一个默认的编辑器
  436. var index = layedit.build('T_text', {
  437. height: 580 //设置编辑器高度,
  438. });
  439. //监听提交
  440. form.on('submit(add)',
  441. function(data) {
  442. console.log("=== submit(add) ==");
  443. console.log(data);
  444. T_enwarning = 0
  445. if(data.field.enwarning != undefined){
  446. T_enwarning = 1
  447. }
  448. if(data.field.devName.length < 1){
  449. layer.msg('设备名称 太短!');
  450. return false;
  451. }
  452. if(data.field.saveTime < 60 || data.field.saveTime > 1800){
  453. layer.msg('数据保存间隔 60~1800');
  454. return false;
  455. }
  456. if(data.field.overrunSave < 60 || data.field.overrunSave > 120){
  457. layer.msg('数据超限保存间隔 60~120');
  458. return false;
  459. }
  460. if(data.field.overrunAlarm < 60 || data.field.overrunAlarm > 600){
  461. layer.msg('超限报警触发间隔 60~600');
  462. return false;
  463. }
  464. if(getQueryString("Sn").indexOf("KF") != -1 ){
  465. if(data.field.outageAlarm < 60 || data.field.outageAlarm > 600){
  466. layer.msg('断电报警触发间隔 60~600');
  467. return false;
  468. }
  469. }
  470. if(data.field.lostAlarm < 60 || data.field.lostAlarm > 600){
  471. layer.msg('传感器掉线报警触发间隔 60~600');
  472. return false;
  473. }
  474. if(data.field.warningDelay < 0 || data.field.warningDelay > 600){
  475. layer.msg('超限预警延时 0~600');
  476. return false;
  477. }
  478. if((data.field.warningTime < 60 || data.field.warningTime > 600)){
  479. if(data.field.warningTime != 0 ){
  480. layer.msg('超限预警触发间隔 0,60~600 为只触发一次');
  481. return false;
  482. }
  483. }
  484. if(data.field.tempPre < 0 || data.field.tempPre > 3){
  485. layer.msg('温度预警提前量 0~3');
  486. return false;
  487. }
  488. if(data.field.humPre < 0 || data.field.humPre > 30){
  489. layer.msg('湿度预警提前量 0~30');
  490. return false;
  491. }
  492. // if(data.field.uploadTime < 10 || data.field.uploadTime > 60){
  493. // layer.msg('实时上传间隔 10~60 (该参数只对库房终端与PC端的连接有效)');
  494. // return false;
  495. // }
  496. if(data.field.batteryLimit < 10 ){
  497. layer.msg('电池电量下限 > 10');
  498. return false;
  499. }
  500. if(data.field.chDecTotal0 < 0 || data.field.chDecTotal0 > 40
  501. || data.field.chDecTotal1 < 0 || data.field.chDecTotal1 > 40
  502. || data.field.chDecTotal2 < 0 || data.field.chDecTotal2 > 40
  503. || data.field.chDecTotal3 < 0 || data.field.chDecTotal3 > 40
  504. || data.field.chDecTotal4 < 0 || data.field.chDecTotal4 > 40
  505. || data.field.chDecTotal5 < 0 || data.field.chDecTotal5 > 40
  506. || data.field.chDecTotal6 < 0 || data.field.chDecTotal6 > 40
  507. || data.field.chDecTotal7 < 0 || data.field.chDecTotal7 > 40
  508. || data.field.chDecTotal8 < 0 || data.field.chDecTotal8 > 40
  509. || data.field.chDecTotal9 < 0 || data.field.chDecTotal9 > 40){
  510. layer.msg('配置每个通道数量 0~40');
  511. return false;
  512. }
  513. decTotal = parseInt(data.field.chDecTotal0)+parseInt(data.field.chDecTotal1)+parseInt(data.field.chDecTotal2)+parseInt(data.field.chDecTotal3)+parseInt(data.field.chDecTotal4)+parseInt(data.field.chDecTotal5)+parseInt(data.field.chDecTotal6)+parseInt(data.field.chDecTotal7)+parseInt(data.field.chDecTotal8)+parseInt(data.field.chDecTotal9)
  514. chDecTotal = "["+parseInt(data.field.chDecTotal0)+","+parseInt(data.field.chDecTotal1)+","+parseInt(data.field.chDecTotal2)+","+parseInt(data.field.chDecTotal3)+","+parseInt(data.field.chDecTotal4)+","+parseInt(data.field.chDecTotal5)+","+parseInt(data.field.chDecTotal6)+","+parseInt(data.field.chDecTotal7)+","+parseInt(data.field.chDecTotal8)+","+parseInt(data.field.chDecTotal9)+"]"
  515. loading = layer.load(0, {
  516. shade: false,
  517. time: 99*1000
  518. });
  519. $.ajax({
  520. type: 'POST',
  521. url: 'Pu_DeviceParameter',//发送请求
  522. data: {
  523. User_tokey:$.cookie('User_tokey'),
  524. SN:getQueryString("Sn"),
  525. T_devName:data.field.devName,
  526. // T_uploadTime:data.field.uploadTime,
  527. T_saveTime:data.field.saveTime,
  528. T_overrunSave:data.field.overrunSave,
  529. T_overrunAlarm:data.field.overrunAlarm,
  530. T_outageAlarm:data.field.outageAlarm,
  531. T_warningTime:data.field.warningTime,
  532. T_warningDelay:data.field.warningDelay,
  533. T_batteryLimit:data.field.batteryLimit,
  534. T_lostAlarm:data.field.lostAlarm,
  535. T_tempPre:data.field.tempPre,
  536. T_humPre:data.field.humPre,
  537. T_enwarning:T_enwarning,
  538. T_company:data.field.company,
  539. T_btname:data.field.btname,
  540. T_btserverID:data.field.btserverID,
  541. T_btchar:data.field.btchar,
  542. T_decTotal:decTotal,
  543. T_chDecTotal:chDecTotal,
  544. },
  545. success: function(result) {
  546. console.log(result)
  547. if(result.Code != 200){
  548. return
  549. }
  550. layer.close(loading)
  551. var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
  552. parent.layer.close(index); //再执行关闭
  553. parent.location.reload();
  554. }
  555. });
  556. return false;
  557. });
  558. //监听提交
  559. form.on('submit(EPOST2)',
  560. function(data) {
  561. console.log("=== submit(EPOST2) ==");
  562. loading = layer.load(0, {
  563. shade: false,
  564. time: 99*1000
  565. });
  566. $.ajax({
  567. type: 'POST',
  568. url: 'Pu_DeviceParameter_T_l_p',//发送请求
  569. data: {
  570. User_tokey:$.cookie('User_tokey'),
  571. SN:getQueryString("Sn"),
  572. T_l_p:data.field.T_l_p,
  573. },
  574. success: function(result) {
  575. console.log(result)
  576. if(result.Code != 222){
  577. return
  578. }
  579. layer.close(loading)
  580. layer.msg('配置参数成功!', {
  581. offset: '6px'
  582. });
  583. //关闭当前frame
  584. var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
  585. parent.layer.close(index); //再执行关闭
  586. parent.location.reload();
  587. // return false;
  588. }
  589. });
  590. return false;
  591. });
  592. //监听提交
  593. form.on('submit(T_give)',
  594. function(data) {
  595. console.log("=== submit(T_give) ==");
  596. loading = layer.load(0, {
  597. shade: false,
  598. time: 99*1000
  599. });
  600. $.ajax({
  601. type: 'POST',
  602. url: 'Pu_DeviceParameter_T_give',//发送请求
  603. data: {
  604. SN:getQueryString("Sn"),
  605. T_give:data.field.T_give,
  606. },
  607. success: function(result) {
  608. console.log(result)
  609. layer.close(loading)
  610. if(result.Code != 200){
  611. return
  612. }
  613. layer.msg('配置参数成功!', {
  614. offset: '6px'
  615. });
  616. //关闭当前frame
  617. var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
  618. parent.layer.close(index); //再执行关闭
  619. parent.location.reload();
  620. // return false;
  621. }
  622. });
  623. return false;
  624. });
  625. // //监听指定开关
  626. // form.on('switch(switchTest)', function(data){
  627. // layer.msg('开关checked:'+ (this.checked ? 'true' : 'false'), {
  628. // offset: '6px'
  629. // });
  630. // layer.tips('温馨提示:请注意开关状态的文字可以随意定义,而不仅仅是ON|OFF', data.othis)
  631. // });
  632. //表单取值
  633. // layui.$('#LAY-component-form-getval').on('click', function(){
  634. // var data = form.val('example');
  635. // alert(JSON.stringify(data));
  636. // });
  637. // var loading = layer.load(0, {
  638. // shade: false,
  639. // time: 99*1000
  640. // });
  641. //
  642. //
  643. // var websocket = null;
  644. // var ok_websocket1 = false;
  645. // var ok_websocket2 = false;
  646. // function Timeout_1 (){
  647. // //要执行的代码
  648. // if(!ok_websocket1){
  649. // layer.open({
  650. // text:"连接失败",
  651. // btn: '立即重新登录',
  652. // content: "请退出账号重新登录!",
  653. // yes: function(index, layero){
  654. // //do something
  655. // window.parent.parent.location.href ='../Login';
  656. // layer.close(index); //如果设定了yes回调,需进行手工关闭
  657. // }
  658. // });
  659. // }
  660. //
  661. // }
  662. // setTimeout(Timeout_1,8000);//5秒后执行
  663. //
  664. //
  665. // function Timeout_2 (){
  666. // //要执行的代码
  667. // if(!ok_websocket2){
  668. // layer.open({
  669. // text:"无响应",
  670. // btn: '重新试试',
  671. // content: "设备主机无响应,请重新试试,若有疑问请联系工作人员!",
  672. // yes: function(index, layero){
  673. // //do something
  674. //
  675. // layer.close(index); //如果设定了yes回调,需进行手工关闭
  676. // }
  677. // });
  678. // }
  679. //
  680. // }
  681. // setTimeout(Timeout_2,20000);//5秒后执行
  682. //
  683. //
  684. //
  685. // //判断当前浏览器是否支持WebSocket
  686. // if ('WebSocket' in window) {
  687. // url = window.location.host
  688. // console.log("url:",url)
  689. // if(url.indexOf("baozhida") != -1){
  690. // websocket = new WebSocket("wss://"+window.location.host+"/ws/join?User_tokey="+$.cookie('User_tokey'));
  691. // }else {
  692. // websocket = new WebSocket("ws://"+window.location.host+"/ws/join?User_tokey="+$.cookie('User_tokey'));
  693. // }
  694. // } else {
  695. // alert('Dont support websocket')
  696. // }
  697. //
  698. // console.log(getQueryString("Sn"))
  699. //
  700. // //连接发生错误的回调方法
  701. // websocket.onerror = function () {
  702. // console.log("error");
  703. // };
  704. //
  705. // //连接成功建立的回调方法
  706. // websocket.onopen = function () {
  707. // console.log("open");
  708. // send("{\"Sn\":\""+ getQueryString("Sn") +"\"}")
  709. // };
  710. //
  711. // //接收到消息的回调方法
  712. // websocket.onmessage = function (event) {
  713. // f_Read_DeviceParameter();
  714. //
  715. // console.log(event.data)
  716. // var obj = JSON.parse(event.data);
  717. // console.log(obj.type)
  718. // ok_websocket1 = true
  719. // if(obj.type == 3){
  720. // layer.close(loading)
  721. // ok_websocket2 = true
  722. // switch (obj.msid%10) {
  723. // case 1:
  724. // T_enwarning =false
  725. // if(obj.base.enwarning = 1){
  726. // T_enwarning =true
  727. // }
  728. // f_Read_DeviceSensorParameter()
  729. // if(obj.base.devName == "*"){
  730. // form.val('example', {
  731. // "SN": obj.sn // "name": "value"
  732. // ,"uploadTime": obj.base.uploadTime
  733. // ,"saveTime": obj.base.saveTime
  734. // ,"overrunSave": obj.base.overrunSave
  735. // ,"overrunAlarm": obj.base.overrunAlarm
  736. // ,"outageAlarm": obj.base.outageAlarm
  737. // ,"lostAlarm": obj.base.lostAlarm
  738. // ,"warningDelay": obj.base.warningDelay
  739. // ,"warningTime": obj.base.warningTime
  740. // ,"batteryLimit": obj.base.batteryLimit
  741. // ,"tempPre": obj.base.tempPre
  742. // ,"humPre": obj.base.humPre
  743. // ,"company": obj.base.company
  744. // ,"btname": obj.base.btname
  745. // ,"btserverID": obj.base.btserverID
  746. // ,"btchar": obj.base.btchar
  747. // ,"decTotal": obj.base.decTotal
  748. // ,"chDecTotal": JSON.stringify(obj.base.chDecTotal)
  749. // ,"enwarning": T_enwarning
  750. // });
  751. // }else {
  752. // form.val('example', {
  753. // "SN": obj.sn // "name": "value"
  754. // ,"devName": obj.base.devName
  755. // ,"uploadTime": obj.base.uploadTime
  756. // ,"saveTime": obj.base.saveTime
  757. // ,"overrunSave": obj.base.overrunSave
  758. // ,"overrunAlarm": obj.base.overrunAlarm
  759. // ,"outageAlarm": obj.base.outageAlarm
  760. // ,"lostAlarm": obj.base.lostAlarm
  761. // ,"warningDelay": obj.base.warningDelay
  762. // ,"warningTime": obj.base.warningTime
  763. // ,"batteryLimit": obj.base.batteryLimit
  764. // ,"tempPre": obj.base.tempPre
  765. // ,"humPre": obj.base.humPre
  766. // ,"company": obj.base.company
  767. // ,"btname": obj.base.btname
  768. // ,"btserverID": obj.base.btserverID
  769. // ,"btchar": obj.base.btchar
  770. // ,"decTotal": obj.base.decTotal
  771. // ,"chDecTotal": obj.base.chDecTotal
  772. // ,"enwarning": T_enwarning
  773. // });
  774. // }
  775. //
  776. //
  777. //
  778. //
  779. // break
  780. //
  781. // }
  782. //
  783. // }
  784. // if(obj.type == 4){
  785. // switch (obj.msid%10) {
  786. // case 1:
  787. // layer.close(loading)
  788. // layer.msg('配置参数成功!', {
  789. // offset: '6px'
  790. // });
  791. //
  792. // //关闭当前frame
  793. // parent.layer.close(parent.layer.getFrameIndex(window.name));
  794. // parent.location.reload();
  795. //
  796. //
  797. // break
  798. //
  799. // }
  800. //
  801. // }
  802. // //
  803. // // if(obj && "memberstatus"==obj.type){
  804. // // console.log(obj.data)
  805. // // table.reload('test', {
  806. // // elem: '#test'
  807. // // ,data: JSON.parse(obj.data)
  808. // // });
  809. // // }
  810. // };
  811. //
  812. // //连接关闭的回调方法
  813. // websocket.onclose = function () {
  814. // console.log("close");
  815. // };
  816. //
  817. // //监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。
  818. // window.onbeforeunload = function () {
  819. // websocket.close();
  820. // console.log("onbeforeunload");
  821. // };
  822. //
  823. // //关闭连接
  824. // function closeWebSocket() {
  825. // websocket.close();
  826. // console.log("onbeforeunload");
  827. // window.clearInterval(intervalId);
  828. // }
  829. //
  830. // //发送消息
  831. // function send(message) {
  832. // websocket.send(message);
  833. // }
  834. });
  835. </script>
  836. </body>
  837. </html>