devManage.html 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469
  1. <div class="bg-light lter b-b wrapper-md">
  2. <h1 class="m-n font-thin h3">设备列表</h1>
  3. </div>
  4. <div class="wrapper-md devManageMain" ng-controller="devManageCtrl">
  5. <div class="panel panel-default">
  6. <div class="row wrapper">
  7. <div class="col-sm-6">
  8. <div class="btn-group dropdown" dropdown>
  9. <button class="btn btn-default dropdown-toggle" dropdown-toggle>
  10. <span class="dropdown-label">{{condition.registered.label}}</span>
  11. <span class="caret"></span>
  12. </button>
  13. <ul class="dropdown-menu">
  14. <li ng-repeat="item in enum.registered" ng-click="event.statusChange('registered',item)">
  15. <a href ng-bind="item.label"></a></li>
  16. </ul>
  17. </div>
  18. <div class="btn-group dropdown" dropdown>
  19. <button class="btn btn-default dropdown-toggle" dropdown-toggle>
  20. <span class="dropdown-label">{{condition.online.label}}</span>
  21. <span class="caret"></span>
  22. </button>
  23. <ul class="dropdown-menu">
  24. <li ng-repeat="item in enum.online" ng-click="event.statusChange('online',item)">
  25. <a href ng-bind="item.label"></a></li>
  26. </ul>
  27. </div>
  28. <div class="btn btn-default" ng-click="manualRechargeSimCard()"> 手动流量卡续费</div>
  29. <div class="btn btn-default" ng-click="lockDeviceSimStatus()"> 锁定设备流量卡</div>
  30. <div class="btn btn-default" ng-click="changeDevCode()"> 修改Code</div>
  31. <div class="btn-group dropdown" dropdown>
  32. <button class="btn btn-default dropdown-toggle" dropdown-toggle>
  33. <span class="dropdown-label">正在服务设置</span>
  34. <span class="caret"></span>
  35. </button>
  36. <ul class="dropdown-menu">
  37. <li ng-click="serviceSwitch('stopUsing',true)">
  38. <a href>开启停止按钮</a></li>
  39. <li ng-click="serviceSwitch('stopUsing',false)">
  40. <a href>关闭停止按钮</a></li>
  41. <li ng-click="serviceSwitch('continueToUse',true)">
  42. <a href>开启续充按钮</a></li>
  43. <li ng-click="serviceSwitch('continueToUse',false)">
  44. <a href>关闭续充按钮</a></li>
  45. </ul>
  46. </div>
  47. </div>
  48. <div class="col-sm-6 form-inline text-right">
  49. <div class="btn btn-default" ng-click="batchQuery()"><i class="fa fa-search"></i> 批量查询</div>
  50. <div class="input-group m-l-md" style="">
  51. <input type="text" class=" form-control" style="width: 100px" ng-model="condition.logicalCode"
  52. ng-keydown="$event.keyCode==13&&event.searchByLogicalCode()"
  53. placeholder="逻辑编号">
  54. <span class="input-group-btn">
  55. <div class="btn btn-info" ng-click="event.searchByLogicalCode()"><i class="fa fa-search"></i> 编号搜索</div>
  56. </span>
  57. </div>
  58. <div class="input-group " style="">
  59. <input type="text" class=" form-control" ng-model="condition.searchKey"
  60. ng-keydown="$event.keyCode==13&&event.search()"
  61. placeholder="设备名称、电子标签、商户名称、地址等">
  62. <span class="input-group-btn">
  63. <div class="btn btn-default" ng-click="event.search()"><i class="fa fa-search"></i> 模糊搜索</div>
  64. </span>
  65. </div>
  66. <div class="btn btn-success" ng-click="exportDevice()"><i class="fa fa-download"></i> 导出查询结果</div>
  67. </div>
  68. </div>
  69. <div class="table-responsive">
  70. <div ui-grid="gridOptions" style="min-height:620px" ui-grid-pagination ui-grid-resize-columns
  71. ui-grid-selection></div>
  72. <div class="grid-mask" ng-if="gridOptionsLoading"><span>正在加载,请稍候...</span></div>
  73. </div>
  74. </div>
  75. <form name="batchQueryForm" id="batchQueryForm" class="form-horizontal form-validation modal fade"
  76. role="dialog" data-backdrop="static" style=" width: 100%;height: 100%;max-width: 720px;max-height: 120px;">
  77. <div class="panel panel-default">
  78. <div class="modal-header">
  79. <strong> 导入TXT文件进行批量查询</strong>
  80. <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
  81. </div>
  82. <div class="panel-body">
  83. <div class="form-group">
  84. <div class="col-sm-12">
  85. <div class="upload-area">
  86. <!---文件选择-->
  87. <input type="file" id="fileUpload2"
  88. onchange="angular.element(this).scope().changeFile(this.files)"
  89. style="position: absolute;"/>
  90. <div over-class="b-info"
  91. class="b-a b-2x b-dashed wrapper-lg lter text-center">
  92. 选择文件或拖动文件到该处
  93. <span class="text-info text-ellipsis"
  94. ng-if="dialogData.fileName">{{dialogData.fileName}}</span>
  95. </div>
  96. </div>
  97. </div>
  98. </div>
  99. <div class="form-group">
  100. <div class="col-sm-12">
  101. <textarea ng-model="condition.fileContent" class="form-control"
  102. style="margin: 0 -0.5px 0 0; width: 100%; height: 230px;"></textarea>
  103. </div>
  104. </div>
  105. </div>
  106. <footer class="panel-footer text-right bg-light lter">
  107. <button type="submit" class="btn btn-success m-l-sm " ng-click="batchQueryOk()">确定
  108. </button>
  109. </footer>
  110. </div>
  111. </form>
  112. <div id="devQRCodePanel" class="form-horizontal form-validation modal fade" role="dialog"
  113. style=" width: 360px;min-height: 388px;height: 388px">
  114. <div class="panel panel-default">
  115. <div class="panel-heading">
  116. <strong>设备二维码</strong>
  117. </div>
  118. <div class="panel-body">
  119. <div class="form-group">
  120. <div class="col-sm-2"></div>
  121. <div class="col-sm-6">
  122. <img id="qrcodeOptPreviewLogo" ng-src="/1.0/img/logo.png"
  123. style="opacity: 0;position: absolute;z-index: 0">
  124. <img id="previewImg"
  125. style="z-index: 9;position:relative;box-shadow: 0 0 4px #ccc;background: #fff"
  126. width="200"
  127. height="230"/></div>
  128. </div>
  129. </div>
  130. <footer class="panel-footer text-center bg-light lter">
  131. <button type="button" class="btn btn-info margin-5" ng-click="closeQRCode()" style="margin-left: 8px"><i
  132. class="fa fa-close"></i> 关闭
  133. </button>
  134. </footer>
  135. </div>
  136. </div>
  137. <div id="detailInfoPanel" class="form-horizontal form-validation modal fade" role="dialog"
  138. style="min-height: 300px;height: 300px">
  139. <div class="panel panel-default">
  140. <div class="panel-heading">
  141. <strong>{{infoDetail.title}}</strong>
  142. </div>
  143. <div class="panel-body">
  144. <div class="form-group">
  145. <div class="col-sm-12">
  146. <pre>{{infoDetail.content | json}}</pre>
  147. </div>
  148. </div>
  149. </div>
  150. <footer class="panel-footer text-center bg-light lter">
  151. <button type="button" class="btn btn-info margin-5" ng-click="closeDetailPanel()"
  152. style="margin-left: 8px"><i
  153. class="fa fa-close"></i> 关闭
  154. </button>
  155. </footer>
  156. </div>
  157. </div>
  158. <form id="commandInfoPanel" name="commandInfoPanel" class="form-horizontal form-validation modal fade"
  159. role="dialog"
  160. style=" width: 1200px;min-height: 600px;height: 400px">
  161. <div class="panel panel-default">
  162. <div class="panel-heading">
  163. <strong>下达指令</strong>
  164. </div>
  165. <div class="panel-body">
  166. <div class="form-group">
  167. <label class="col-sm-2 control-label">选择指令</label>
  168. <div class="col-sm-10">
  169. <button ng-repeat="(index,item) in dialogData.commandList" type="button" class="btn btn-default m-l-xs" ng-class="{'btn-info':index===currentCmdIndex}"
  170. ng-click="selectCommand(index,item)">
  171. {{item.description}}
  172. </button>
  173. </div>
  174. </div>
  175. <div class="line line-dashed b-b line-lg pull-in"></div>
  176. <div class="form-group">
  177. <label class="col-sm-2 control-label">指令IMEI</label>
  178. <div class="col-sm-10 form-inline">
  179. <input type="text" class="form-control" readonly ng-model="currentCmd.IMEI">
  180. </div>
  181. </div>
  182. <div class="form-group">
  183. <label class="col-sm-2 control-label">指令前缀</label>
  184. <div class="col-sm-10 form-inline">
  185. <input type="text" class="form-control" readonly ng-model="currentCmd.topic_pre">
  186. </div>
  187. </div>
  188. <div class="form-group">
  189. <label class="col-sm-2 control-label">指令编码</label>
  190. <div class="col-sm-10 form-inline">
  191. <input type="text" class="form-control" readonly ng-model="currentCmd.cmd">
  192. </div>
  193. </div>
  194. <div class="form-group">
  195. <label class="col-sm-2 control-label">填写参数</label>
  196. <div class="col-sm-10 form-inline">
  197. <div ng-repeat="(index,item) in currentCmd.params" class="info-inline package-item">
  198. <span>
  199. {{item.description}}:
  200. <textarea ng-model="item.default" rows="3"
  201. ng-disabled="!item.allow_change" style="width: 420px"
  202. class="form-control" placeholder="默认值 required"></textarea>
  203. </span>
  204. </div>
  205. </div>
  206. </div>
  207. <div class="line line-dashed b-b line-lg pull-in"></div>
  208. <div class="form-group">
  209. <label class="col-sm-2 control-label">返回结果</label>
  210. <div class="col-sm-10">
  211. <pre>{{currentResult | json}}</pre>
  212. </div>
  213. </div>
  214. </div>
  215. <footer class="panel-footer text-center bg-light lter">
  216. <button type="button" class="btn btn-danger margin-5" ng-click="closeCommandPanel()"><i
  217. class="fa fa-ban"></i> 关闭
  218. </button>
  219. <button type="button" class="btn btn-success margin-5" ng-click="sendCommandConfirm()"
  220. style="margin-left: 8px"><i
  221. class="glyphicon glyphicon-ok"></i> 发送
  222. </button>
  223. </footer>
  224. </div>
  225. </form>
  226. <form id="deviceDebugPanel" name="deviceDebugPanel" class="form-horizontal form-validation modal fade"
  227. role="dialog"
  228. style=" width: 500px;min-height: 288px;height: 400px">
  229. <div class="panel panel-default">
  230. <div class="panel-heading" style="height: auto">
  231. <div class="form-group">
  232. <label class="col-sm-3 control-label">调试标记</label>
  233. <div class="col-sm-9">
  234. <input type="text" ng-model="dialogData.debugFlag"
  235. class="input-sm form-control"
  236. placeholder=""
  237. required>
  238. </div>
  239. </div>
  240. </div>
  241. <footer class="panel-footer text-center bg-light lter">
  242. <button type="button" class="btn btn-danger margin-5" ng-click="closeDeviceDebugPanel()"><i
  243. class="fa fa-ban"></i> 关闭
  244. </button>
  245. <button type="button" class="btn btn-success margin-5" ng-click="sendDeviceDebugConfirm()"
  246. style="margin-left: 8px"><i
  247. class="glyphicon glyphicon-ok"></i> 确定
  248. </button>
  249. </footer>
  250. </div>
  251. </form>
  252. <div id="chartInfoPanel" class="form-horizontal form-validation modal fade" role="dialog"
  253. style="height:80%;width: 80%;">
  254. <div class="panel panel-default">
  255. <div class="panel-heading" style="height: auto">
  256. <div class="m-l-xs btn-group dropdown" dropdown is-open="modelEvent.startTimeOpen">
  257. <input type="text" class="form-control w-xs" dropdown-toggle
  258. ng-model="chartCondition.startTime"
  259. placeholder="开始日期">
  260. <ul class="dropdown-menu" dropdown-menu>
  261. <datetimepicker
  262. data-datetimepicker-config="{modelType: 'YYYY-MM-DD',startView:'day',minView:'day'}"
  263. on-set-time="modelEvent.timeChange()"
  264. data-ng-model="chartCondition.startTime"></datetimepicker>
  265. </ul>
  266. </div>
  267. <span class="v-middle">至</span>
  268. <div class="btn-group dropdown" dropdown is-open="modelEvent.endTimeOpen">
  269. <input type="text" class=" form-control w-xs" dropdown-toggle
  270. ng-model="chartCondition.endTime"
  271. placeholder="结束日期">
  272. <ul class="dropdown-menu" dropdown-menu>
  273. <datetimepicker
  274. data-datetimepicker-config="{modelType: 'YYYY-MM-DD',startView:'day',minView:'day'}"
  275. on-set-time="modelEvent.timeChange()"
  276. data-ng-model="chartCondition.endTime"></datetimepicker>
  277. </ul>
  278. </div>
  279. <div class="btn-group dropdown" dropdown>
  280. <input type="button" class="dropdown-toggle form-control v-middle" value="快捷日期"
  281. dropdown-toggle>
  282. <ul class="dropdown-menu" id="timeRange">
  283. <li ng-click="modelEvent.quickTime($event,1)"><a href>今天</a></li>
  284. <li ng-click="modelEvent.quickTime($event,7)"><a href>过去7天</a></li>
  285. <li ng-click="modelEvent.quickTime($event,15)"><a href>过去15天</a></li>
  286. <li ng-click="modelEvent.quickTime($event,30)"><a href>最近30天</a></li>
  287. <li ng-click="modelEvent.quickTime($event,60)"><a href>最近60天</a></li>
  288. <li ng-click="modelEvent.quickTime($event,90)"><a href>最近90天</a></li>
  289. </ul>
  290. </div>
  291. <div class="btn btn-default btn-info" ng-click="modelEvent.searchDetail()"><i
  292. class="fa fa-search"></i> 查询
  293. </div>
  294. </div>
  295. <div class="panel-body">
  296. <div id="signalChartPanel" style="height: 100%"></div>
  297. </div>
  298. <footer class="panel-footer text-center bg-light lter">
  299. <button type="button" class="btn btn-info margin-5" ng-click="closeChart()"
  300. style="margin-left: 8px"><i
  301. class="fa fa-close"></i> 关闭
  302. </button>
  303. </footer>
  304. </div>
  305. </div>
  306. <div id="powerChartInfoPanel" class="form-horizontal form-validation modal fade" role="dialog"
  307. style="height:80%;width: 80%;">
  308. <div class="panel panel-default">
  309. <div class="panel-heading" style="height: auto">
  310. <div class="m-l-xs btn-group dropdown" dropdown is-open="powerModelEvent.startTimeOpen">
  311. <input type="text" class="form-control w-xs" dropdown-toggle
  312. ng-model="powerChartCondition.startTime"
  313. placeholder="开始日期">
  314. <ul class="dropdown-menu" dropdown-menu>
  315. <datetimepicker
  316. data-datetimepicker-config="{modelType: 'YYYY-MM-DD',startView:'day',minView:'day'}"
  317. on-set-time="powerModelEvent.timeChange()"
  318. data-ng-model="powerChartCondition.startTime"></datetimepicker>
  319. </ul>
  320. </div>
  321. <span class="v-middle">至</span>
  322. <div class="btn-group dropdown" dropdown is-open="powerModelEvent.endTimeOpen">
  323. <input type="text" class=" form-control w-xs" dropdown-toggle
  324. ng-model="powerChartCondition.endTime"
  325. placeholder="结束日期">
  326. <ul class="dropdown-menu" dropdown-menu>
  327. <datetimepicker
  328. data-datetimepicker-config="{modelType: 'YYYY-MM-DD',startView:'day',minView:'day'}"
  329. on-set-time="powerModelEvent.timeChange()"
  330. data-ng-model="powerChartCondition.endTime"></datetimepicker>
  331. </ul>
  332. </div>
  333. <div class="btn-group dropdown" dropdown>
  334. <input type="button" class="dropdown-toggle form-control v-middle" value="快捷日期"
  335. dropdown-toggle>
  336. <ul class="dropdown-menu" id="timeRange">
  337. <li ng-click="powerModelEvent.quickTime($event,1)"><a href>今天</a></li>
  338. <li ng-click="powerModelEvent.quickTime($event,7)"><a href>过去7天</a></li>
  339. <li ng-click="powerModelEvent.quickTime($event,15)"><a href>过去15天</a></li>
  340. <li ng-click="powerModelEvent.quickTime($event,30)"><a href>最近30天</a></li>
  341. <li ng-click="powerModelEvent.quickTime($event,60)"><a href>最近60天</a></li>
  342. <li ng-click="powerModelEvent.quickTime($event,90)"><a href>最近90天</a></li>
  343. </ul>
  344. </div>
  345. <div class="btn-group" style="">
  346. <input type="text" class=" form-control" style="width: 100px" ng-model="powerChartCondition.port"
  347. placeholder="端口号">
  348. </div>
  349. <div class="btn btn-default btn-info" ng-click="powerModelEvent.searchDetail()"><i
  350. class="fa fa-search"></i> 查询
  351. </div>
  352. </div>
  353. <div class="panel-body">
  354. <div id="powerChartPanel" style="height: 100%"></div>
  355. </div>
  356. <footer class="panel-footer text-center bg-light lter">
  357. <button type="button" class="btn btn-info margin-5" ng-click="closePowerChart()"
  358. style="margin-left: 8px"><i
  359. class="fa fa-close"></i> 关闭
  360. </button>
  361. </footer>
  362. </div>
  363. </div>
  364. <div id="chargeRecordForm" class="form-horizontal form-validation modal fade" role="dialog"
  365. style="min-height: 600px;height: 600px;width: 760px">
  366. <div class="panel panel-default">
  367. <div class="panel-heading">
  368. <strong>续费记录</strong>
  369. </div>
  370. <div class="panel-body padder-lg">
  371. <div class="stream-line">
  372. <div class="stream-line-node" ng-repeat="item in chargeRecord track by $index">
  373. <div class="pull-left stream-line-node-circle">
  374. </div>
  375. <div class="m-l-md m-b-md">
  376. <div>{{item.nickname}} 续费:{{item.price}}元
  377. </div>
  378. <div>单号:{{item.orderNo}}
  379. </div>
  380. <div>{{item.finishedTime}}
  381. </div>
  382. </div>
  383. </div>
  384. </div>
  385. </div>
  386. </div>
  387. </div>
  388. <form name="changeDevCodeForm" id="changeDevCodeForm" class="form-horizontal form-validation modal fade" role="dialog"
  389. style=" width: 800px;min-height: 300px;height: 300px;">
  390. <div class="panel panel-default">
  391. <div class="panel-heading">
  392. <strong>修改Code</strong>
  393. </div>
  394. <div class="panel-body">
  395. <div class="form-group">
  396. <label class="col-sm-3 control-label">设备</label>
  397. <div class="col-sm-9">
  398. <textarea disabled style="height: 100px;width: 100%" ng-model="dialogData.logicalCodeList"
  399. required></textarea>
  400. </div>
  401. </div>
  402. <div class="form-group">
  403. <label class="col-sm-3 control-label">code</label>
  404. <div class="col-sm-9">
  405. <input type="text" ng-model="dialogData.code"
  406. class="form-control" ng-minlength="1" minlength="1" ng-maxlength="20" maxlength="20"
  407. placeholder="输入Code"
  408. required>
  409. </div>
  410. </div>
  411. </div>
  412. <footer class="panel-footer text-right bg-light lter">
  413. <button type="submit" class="btn btn-success" ng-click="changeDevCodeSave()">保存
  414. </button>
  415. </footer>
  416. </div>
  417. </form>
  418. </div>