devManage.html 50 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827
  1. <div class=" devManageMain">
  2. <div class="panel panel-default">
  3. <div class="row wrapper">
  4. <div class="col-sm-5">
  5. <div ng-if="feature_map.disableDevice">
  6. <div class="btn btn-black" ng-click="disableDeviceSelected(true)"><i class="fa fa-ban"></i> 禁用</div>
  7. <div class="btn btn-success" ng-click="disableDeviceSelected(false)"><i class="fa fa-smile-o"></i>
  8. 启用
  9. </div>
  10. <span ng-if="dealerId">
  11. <div class="btn btn-danger" ng-click="disableAllDevice(true)"><i class="fa fa-ban"></i> 禁用全部</div>
  12. <div class="btn btn-success" ng-click="disableAllDevice(false)"><i class="fa fa-smile-o"></i> 启用全部
  13. </div>
  14. </span>
  15. </div>
  16. </div>
  17. <div class="col-sm-7 form-inline text-right">
  18. <span class="">编号范围</span>
  19. <input type="text" class=" form-control" style="width: 100px" ng-model="condition.startLogicalCode"
  20. placeholder="起始编号">
  21. <input type="text" class=" form-control" style="width: 100px" ng-model="condition.endLogicalCode"
  22. placeholder="结束编号">
  23. <div class="input-group m-l-md" style="">
  24. <input type="text" class=" form-control" ng-model="condition.searchKey"
  25. ng-keydown="$event.keyCode==13&&event.search()"
  26. placeholder="设备名称、电子标签、编号、商户名称、地址等">
  27. <span class="input-group-btn">
  28. <div class="btn btn-default" ng-click="event.search()"><i class="fa fa-search"></i> 搜索</div>
  29. </span>
  30. </div>
  31. </div>
  32. </div>
  33. <div class="table-responsive">
  34. <div ui-grid="gridOptions" style="min-height:620px" ui-grid-pagination ui-grid-selection></div>
  35. <div class="grid-mask" ng-if="gridOptionsLoading"><span>正在加载,请稍候...</span></div>
  36. </div>
  37. </div>
  38. <div id="devQRCodePanel" class="form-horizontal form-validation modal fade" role="dialog"
  39. style=" width: 360px;min-height: 388px;height: 388px">
  40. <div class="panel panel-default">
  41. <div class="panel-heading">
  42. <strong>设备二维码</strong>
  43. </div>
  44. <div class="panel-body">
  45. <div class="form-group">
  46. <div class="col-sm-2"></div>
  47. <div class="col-sm-6">
  48. <img id="qrcodeOptPreviewLogo" ng-src="/1.0/img/logo.png"
  49. style="opacity: 0;position: absolute;z-index: 0">
  50. <img id="previewImg"
  51. style="z-index: 9;position:relative;box-shadow: 0 0 4px #ccc;background: #fff"
  52. width="200"
  53. height="230"/></div>
  54. </div>
  55. </div>
  56. <footer class="panel-footer text-center bg-light lter">
  57. <!--<a class="btn btn-success" href=""-->
  58. <!--ng-click="downloadQRCode()"><i class="fa fa-download"></i> 下载-->
  59. <!--</a>-->
  60. <button type="button" class="btn btn-info margin-5" ng-click="closeQRCode()" style="margin-left: 8px"><i
  61. class="fa fa-close"></i> 关闭
  62. </button>
  63. </footer>
  64. </div>
  65. </div>
  66. <div id="detailInfoPanel" class="form-horizontal form-validation modal fade" role="dialog"
  67. style="min-height: 300px;height: 300px">
  68. <div class="panel panel-default">
  69. <div class="panel-heading">
  70. <strong>{{infoDetail.title}}</strong>
  71. </div>
  72. <div class="panel-body">
  73. <div class="form-group">
  74. <div class="col-sm-12">
  75. <pre>{{infoDetail.content | json}}</pre>
  76. </div>
  77. </div>
  78. </div>
  79. <footer class="panel-footer text-center bg-light lter">
  80. <button type="button" class="btn btn-info margin-5" ng-click="closeDetailInfoPanel()"
  81. style="margin-left: 8px"><i
  82. class="fa fa-close"></i> 关闭
  83. </button>
  84. </footer>
  85. </div>
  86. </div>
  87. <form id="commandInfoPanel" name="commandInfoPanel" class="form-horizontal form-validation modal fade"
  88. role="dialog"
  89. style=" width: 1200px;min-height: 600px;height: 400px">
  90. <div class="panel panel-default">
  91. <div class="panel-heading">
  92. <strong>下达指令</strong>
  93. </div>
  94. <div class="panel-body">
  95. <div class="form-group">
  96. <label class="col-sm-2 control-label">选择指令</label>
  97. <div class="col-sm-10">
  98. <button ng-repeat="(index,item) in dialogData.commandList" type="button" class="btn btn-default m-l-xs" ng-class="{'btn-info':index===currentCmdIndex}"
  99. ng-click="selectCommand(index,item)">
  100. {{item.description}}
  101. </button>
  102. </div>
  103. </div>
  104. <div class="line line-dashed b-b line-lg pull-in"></div>
  105. <div class="form-group">
  106. <label class="col-sm-2 control-label">指令IMEI</label>
  107. <div class="col-sm-10 form-inline">
  108. <input type="text" class="form-control" readonly ng-model="currentCmd.IMEI">
  109. </div>
  110. </div>
  111. <div class="form-group">
  112. <label class="col-sm-2 control-label">指令前缀</label>
  113. <div class="col-sm-10 form-inline">
  114. <input type="text" class="form-control" readonly ng-model="currentCmd.topic_pre">
  115. </div>
  116. </div>
  117. <div class="form-group">
  118. <label class="col-sm-2 control-label">指令编码</label>
  119. <div class="col-sm-10 form-inline">
  120. <input type="text" class="form-control" readonly ng-model="currentCmd.cmd">
  121. </div>
  122. </div>
  123. <div class="form-group">
  124. <label class="col-sm-2 control-label">填写参数</label>
  125. <div class="col-sm-10 form-inline">
  126. <div ng-repeat="(index,item) in currentCmd.params" class="info-inline package-item">
  127. <span>
  128. {{item.description}}:
  129. <textarea ng-model="item.default" rows="3"
  130. ng-disabled="!item.allow_change" style="width: 420px"
  131. class="form-control" placeholder="默认值 required"></textarea>
  132. </span>
  133. </div>
  134. </div>
  135. </div>
  136. <div class="line line-dashed b-b line-lg pull-in"></div>
  137. <div class="form-group">
  138. <label class="col-sm-2 control-label">返回结果</label>
  139. <div class="col-sm-10">
  140. <pre>{{currentResult | json}}</pre>
  141. </div>
  142. </div>
  143. </div>
  144. <footer class="panel-footer text-center bg-light lter">
  145. <button type="button" class="btn btn-danger margin-5" ng-click="closeCommandPanel()"><i
  146. class="fa fa-ban"></i> 关闭
  147. </button>
  148. <button type="button" class="btn btn-success margin-5" ng-click="sendCommandConfirm()"
  149. style="margin-left: 8px"><i
  150. class="glyphicon glyphicon-ok"></i> 发送
  151. </button>
  152. </footer>
  153. </div>
  154. </form>
  155. <!--设备端口信息-->
  156. <div id="portInfoPanel" class="form-horizontal form-validation modal fade" role="dialog"
  157. style="min-height: 300px;height: 720px;width: 888px;">
  158. <div class="panel panel-default">
  159. <div class="panel-heading">
  160. <strong>端口信息</strong>
  161. </div>
  162. <div class="panel-body">
  163. <div class="form-group">
  164. <div class="port-grid" ng-repeat="port in portList">
  165. <div class="port-grid-title">
  166. 端口:{{port.index}} <span ng-bind-html="getPortStatusDom(port.status)"></span>
  167. </div>
  168. <div class="port-grid-item clearfix">
  169. <h4>设备信息</h4>
  170. <div class="col-sm-6" ng-if="port.power!=null">
  171. <span>功率:</span><span class="text-success">{{port.power || 0}}瓦</span>
  172. </div>
  173. <div class="col-sm-6" ng-if="port.STA!=null">
  174. <span>STA:</span><span class="text-success">{{port.STA || ''}}</span>
  175. </div>
  176. <div class="col-sm-6" ng-if="port.isPlugin!=null">
  177. <span>是否插枪:</span><span class="text-success">{{qiangStatusMap[port.isPlugin] || ''}}</span>
  178. </div>
  179. <div class="col-sm-6" ng-if="port.qiangGuiwei!=null">
  180. <span>枪是否归位:</span><span class="text-success">{{qiangStatusMap[port.qiangGuiwei] || ''}}</span>
  181. </div>
  182. <div class="col-sm-6" ng-if="port.electricity!=null">
  183. <span>电流:</span><span class="text-success">{{port.electricity || 0}}安</span>
  184. </div>
  185. <div class="col-sm-6" ng-if="port.current!=null">
  186. <span>电流:</span><span class="text-success">{{port.current || 0}}安</span>
  187. </div>
  188. <div class="col-sm-6" ng-if="port.ampere!=null">
  189. <span>电流大小:</span><span class="text-success">{{port.ampere || 0}}安</span>
  190. </div>
  191. <div class="col-sm-6" ng-if="port.outputVoltage!=null">
  192. <span>输出电压:</span><span class="text-success">{{port.outputVoltage || 0}}伏</span>
  193. </div>
  194. <div class="col-sm-6" ng-if="port.outputElec!=null">
  195. <span>输出电流:</span><span class="text-success">{{port.outputElec || 0}}安</span>
  196. </div>
  197. <div class="col-sm-6" ng-if="port.chargeStatus!=null">
  198. <span>充电状态:</span><span class="text-success">{{port.chargeStatus || ''}}</span>
  199. </div>
  200. <div class="col-sm-6" ng-if="port.batteryVoltage!=null">
  201. <span>电池电压:</span><span class="text-success">{{port.batteryVoltage || 0}}伏</span>
  202. </div>
  203. <div class="col-sm-6" ng-if="port.voltage!=null">
  204. <span>电压:</span><span class="text-success">{{port.voltage || 0}}伏</span>
  205. </div>
  206. <div class="col-sm-6" ng-if="port.doorStatus!=null">
  207. <span>柜门状态:</span><span class="text-success">{{port.doorStatus || ''}}</span>
  208. </div>
  209. <div class="col-sm-6" ng-if="port.batteryImei!=null">
  210. <span>电池编号:</span><span class="text-success">{{port.batteryImei || ''}}</span>
  211. </div>
  212. <div class="col-sm-6" ng-if="port.devTemp!=null">
  213. <span>充电桩芯片组温度:</span><span class="text-success">{{port.devTemp || ''}}℃</span>
  214. </div>
  215. <div class="col-sm-6" ng-if="port.elecPoint!=null">
  216. <span>电量百分比:</span><span class="text-success">{{port.elecPoint || 0}}</span>
  217. </div>
  218. </div>
  219. <div class="port-grid-item clearfix">
  220. <h4>当前订单详情</h4>
  221. <div class="col-sm-6" ng-if="port.nickName!=null">
  222. <span>用户昵称:</span><span class="text-success">{{port.nickName}}</span>
  223. </div>
  224. <div class="col-sm-6" ng-if="port.cardNo!=null">
  225. <span>卡号:</span><span class="text-success">{{port.cardNo}}</span>
  226. </div>
  227. <div class="col-sm-6" ng-if="port.cardName!=null">
  228. <span>卡名:</span><span class="text-success">{{port.cardName}}</span>
  229. </div>
  230. <div class="col-sm-6" ng-if="port.pw!=null">
  231. <span>密码:</span><span class="text-success">{{port.pw}}</span>
  232. </div>
  233. <div class="col-sm-6" ng-if="port.consumeType!=null">
  234. <span>消费:</span><span
  235. class="text-success">{{getPayTypeEnum(port, port.consumeType)}}</span>
  236. </div>
  237. <div class="col-sm-6" ng-if="port.elecFee!=null">
  238. <span>电量费用:</span><span class="text-success">{{port.elecFee}}元</span>
  239. </div>
  240. <div class="col-sm-6" ng-if="port.serviceFee!=null">
  241. <span>服务费:</span><span class="text-success">{{port.serviceFee}}元</span>
  242. </div>
  243. <div class="col-sm-6" ng-if="port.statusErrorInfo!=null">
  244. <span>异常信息:</span><span class="text-danger">{{port.statusErrorInfo}}</span>
  245. </div>
  246. <div class="col-sm-6" ng-if="port.faultDesc!=null">
  247. <span>故障描述:</span><span class="text-danger">{{port.faultDesc}}</span>
  248. </div>
  249. <div class="col-sm-6" ng-if="port.startTime!=null">
  250. <span>开始时间:</span><span class="text-success">{{port.startTime}}</span>
  251. </div>
  252. <div class="col-sm-6" ng-if="port.needTime!=null">
  253. <span>订购时间:</span><span class="text-success">{{port.needTime}}</span>
  254. </div>
  255. <div class="col-sm-6" ng-if="port.actualNeedTime!=null">
  256. <span>实际预定时间:</span><span class="text-success">{{port.actualNeedTime}}分钟</span>
  257. </div>
  258. <div class="col-sm-6" ng-if="port.usedTime!=null">
  259. <span>已充时间:</span><span class="text-success">{{port.usedTime || 0}}分钟</span>
  260. </div>
  261. <div class="col-sm-6" ng-if="port.duration!=null">
  262. <span>充电时间:</span><span class="text-success">{{port.duration || 0}}分钟</span>
  263. </div>
  264. <div class="col-sm-6" ng-if="port.leftTime!=null">
  265. <span>剩余时间:</span><span class="text-success">{{port.leftTime || 0}}分钟</span>
  266. </div>
  267. <div class="col-sm-6" ng-if="port.occTime!=null">
  268. <span>占位时间:</span><span class="text-success">{{port.occTime || 0}}分钟</span>
  269. </div>
  270. <div class="col-sm-6" ng-if="port.allPayMoney!=null">
  271. <span>订单总金额:</span><span class="text-success">{{port.allPayMoney || 0}}</span>
  272. </div>
  273. <div class="col-sm-6" ng-if="port.consumeMoney!=null">
  274. <span>已消费金额:</span><span class="text-success">{{port.consumeMoney || 0}}</span>
  275. </div>
  276. <div class="col-sm-6" ng-if="port.chargedMoney!=null">
  277. <span>已充金额:</span><span class="text-success">{{port.chargedMoney || 0}}元</span>
  278. </div>
  279. <div class="col-sm-6" ng-if="port.leftMoney!=null">
  280. <span>本次消费余额:</span><span class="text-success">{{port.leftMoney || 0}}</span>
  281. </div>
  282. <div class="col-sm-6" ng-if="port.leftElec!=null">
  283. <span>剩余电量:</span><span class="text-success">{{port.leftElec || 0}}度</span>
  284. </div>
  285. <div class="col-sm-6" ng-if="port.usedElec!=null">
  286. <span>已充入电量:</span><span class="text-success">{{port.usedElec || 0}}度</span>
  287. </div>
  288. <div class="col-sm-6" ng-if="port.elec!=null">
  289. <span>已充电量:</span><span class="text-success">{{port.elec || 0}}度</span>
  290. </div>
  291. <div class="col-sm-6" ng-if="port.needElec!=null">
  292. <span>订购电量:</span><span class="text-success">{{port.needElec || 0}}度</span>
  293. </div>
  294. <div class="col-sm-6" ng-if="port.cardConsumeMoney!=null">
  295. <span>本次刷卡已使用:</span><span class="text-success">{{port.cardConsumeMoney || ''}}</span>
  296. </div>
  297. <div class="col-sm-6" ng-if="port.lastPayMoney!=null">
  298. <span>单次刷卡金额:</span><span class="text-success">{{port.lastPayMoney || ''}}</span>
  299. </div>
  300. <div class="col-sm-6" ng-if="port.cardLeftMoney!=null">
  301. <span>本次刷卡剩余:</span><span class="text-success">{{port.cardLeftMoney || ''}}</span>
  302. </div>
  303. <div class="col-sm-6" ng-if="port.cardBalance!=null">
  304. <span>卡上余额:</span><span class="text-success">{{port.cardBalance || ''}}</span>
  305. </div>
  306. </div>
  307. <div ng-if="port.waittingOrder && port.waittingOrder.length">
  308. <div class="port-grid-item clearfix" ng-repeat="(index,item) in port.waittingOrder">
  309. <h4>等待执行的订单{{index+1}}</h4>
  310. <div class="col-sm-6" ng-if="item.createTime!=null">
  311. <span>创建时间:</span><span class="text-success">{{item.createTime}}</span>
  312. </div>
  313. <div class="col-sm-6" ng-if="item.nickName!=null">
  314. <span>用户昵称:</span><span class="text-success">{{item.nickName}}</span>
  315. </div>
  316. <div class="col-sm-6" ng-if="item.consumeType!=null">
  317. <span>消费:</span><span
  318. class="text-success">{{getPayTypeEnum(item, item.consumeType)}}</span>
  319. </div>
  320. <div class="col-sm-6" ng-if="item.needTime!=null">
  321. <span>订购时间:</span><span class="text-success">{{item.needTime || 0}}</span>
  322. </div>
  323. <div class="col-sm-6" ng-if="item.needElec!=null">
  324. <span>订购电量:</span><span class="text-success">{{item.needElec || ''}}度</span>
  325. </div>
  326. <div class="col-sm-6" ng-if="item.cardNo!=null">
  327. <span>卡号:</span><span class="text-success">{{item.cardNo }}</span>
  328. </div>
  329. <div class="col-sm-6" ng-if="item.cardBalance!=null">
  330. <span>卡上余额:</span><span class="text-success">{{item.cardBalance }}</span>
  331. </div>
  332. </div>
  333. </div>
  334. </div>
  335. </div>
  336. </div>
  337. <footer class="panel-footer text-center bg-light lter">
  338. <button type="button" class="btn btn-info margin-5" ng-click="closePortInfoPanel()"
  339. style="margin-left: 8px"><i
  340. class="fa fa-close"></i> 关闭
  341. </button>
  342. </footer>
  343. </div>
  344. </div>
  345. <form name="devParamForm" id="devParamPanel" class="form-horizontal form-validation modal fade" role="dialog"
  346. style=" width: 960px;height: 80%;min-height: 760px">
  347. <div class="panel panel-default">
  348. <div class="panel-heading">
  349. <strong>设备参数配置</strong>
  350. </div>
  351. <div class="panel-body">
  352. <accordion close-others="false">
  353. <accordion-group is-open="devParamDialogStatus.open1">
  354. <accordion-heading>
  355. 基本配置<i class="pull-right fa fa-angle-right"
  356. ng-class="{'fa-angle-down': devParamDialogStatus.open1, 'fa-angle-right': !devParamDialogStatus.open1}"></i>
  357. </accordion-heading>
  358. <div class="form-group">
  359. <label class="col-sm-3 control-label">计费模式:</label>
  360. <div class="col-sm-6">
  361. <div class="radio pull-left">
  362. <label class="i-checks">
  363. <input type="radio" name="billingModel" value=3 required
  364. ng-model="devParamDialogData.billingModel">
  365. <i></i>
  366. 自锁时间
  367. </label>
  368. </div>
  369. <div class="radio pull-left m-l">
  370. <label class="i-checks">
  371. <input type="radio" name="billingModel" value=4 required
  372. ng-model="devParamDialogData.billingModel">
  373. <i></i>
  374. 自锁流量
  375. </label>
  376. </div>
  377. <div class="radio pull-left m-l">
  378. <label class="i-checks">
  379. <input type="radio" name="billingModel" value=5 required
  380. ng-model="devParamDialogData.billingModel">
  381. <i></i>
  382. 点动时间
  383. </label>
  384. </div>
  385. <div class="radio pull-left m-l">
  386. <label class="i-checks">
  387. <input type="radio" name="billingModel" value=6 required
  388. ng-model="devParamDialogData.billingModel">
  389. <i></i>
  390. 点动流量
  391. </label>
  392. </div>
  393. </div>
  394. <div class="col-sm-3 form-inline">
  395. <button type="button" class="btn btn-dark" ng-click="getDevParam('billingModel')">获取
  396. </button>
  397. <button type="button" class="btn btn-danger" ng-click="setDevParam('billingModel')">设置
  398. </button>
  399. </div>
  400. </div>
  401. <div class="form-group">
  402. <label class="col-sm-3 control-label">单位金额水量:</label>
  403. <div class="col-sm-6">
  404. <div class="input-group m-b">
  405. <input type="number" ng-model="devParamDialogData.water_unit_price" min=1 max=25
  406. step="0.01"
  407. class="form-control" placeholder="" required>
  408. <span class="input-group-addon">升/1元</span>
  409. </div>
  410. </div>
  411. <div class="col-sm-3 form-inline">
  412. <button type="button" class="btn btn-dark" ng-click="getDevParam('water_unit_price')">获取
  413. </button>
  414. <button type="button" class="btn btn-danger" ng-click="setDevParam('water_unit_price')">
  415. 设置
  416. </button>
  417. </div>
  418. </div>
  419. <div class="form-group">
  420. <label class="col-sm-3 control-label">退出交易超时时间:</label>
  421. <div class="col-sm-6">
  422. <div class="input-group m-b">
  423. <input type="number" ng-model="devParamDialogData.trade_exit_timeout" min=0 max=9999
  424. class="form-control" placeholder="" required>
  425. <span class="input-group-addon">分钟</span>
  426. </div>
  427. </div>
  428. <div class="col-sm-3 form-inline">
  429. <button type="button" class="btn btn-dark" ng-click="getDevParam('trade_exit_timeout')">
  430. 获取
  431. </button>
  432. <button type="button" class="btn btn-danger"
  433. ng-click="setDevParam('trade_exit_timeout')">设置
  434. </button>
  435. </div>
  436. </div>
  437. <div class="form-group">
  438. <label class="col-sm-3 control-label">刷卡最低消费:</label>
  439. <div class="col-sm-6">
  440. <div class="input-group m-b">
  441. <input type="number" ng-model="devParamDialogData.swing_card_minfee" min=0 max=24.9
  442. step="0.01"
  443. class="form-control" placeholder="" required>
  444. <span class="input-group-addon">元</span>
  445. </div>
  446. </div>
  447. <div class="col-sm-3 form-inline">
  448. <button type="button" class="btn btn-dark" ng-click="getDevParam('swing_card_minfee')">
  449. 获取
  450. </button>
  451. <button type="button" class="btn btn-danger"
  452. ng-click="setDevParam('swing_card_minfee')">设置
  453. </button>
  454. </div>
  455. </div>
  456. <div class="form-group">
  457. <label class="col-sm-3 control-label" tooltip="设置为0元贴卡使用">单次刷卡扣费 <i class="fa fa-info"></i>:</label>
  458. <div class="col-sm-6">
  459. <div class="input-group m-b">
  460. <input type="number" ng-model="devParamDialogData.cardOneTimeFee" min=0 max=25
  461. step="0.01"
  462. class="form-control" placeholder="" required>
  463. <span class="input-group-addon">元</span>
  464. </div>
  465. </div>
  466. <div class="col-sm-3 form-inline">
  467. <button type="button" class="btn btn-dark" ng-click="getDevParam('cardOneTimeFee')">获取
  468. </button>
  469. <button type="button" class="btn btn-danger" ng-click="setDevParam('cardOneTimeFee')">设置
  470. </button>
  471. </div>
  472. </div>
  473. <div class="form-group">
  474. <label class="col-sm-3 control-label">投币最低消费:</label>
  475. <div class="col-sm-6">
  476. <div class="input-group m-b">
  477. <input type="number" ng-model="devParamDialogData.coin_min_fee" min=0 max=10
  478. step="0.01"
  479. class="form-control" placeholder="" required>
  480. <span class="input-group-addon">元</span>
  481. </div>
  482. </div>
  483. <div class="col-sm-3 form-inline">
  484. <button type="button" class="btn btn-dark" ng-click="getDevParam('coin_min_fee')">获取
  485. </button>
  486. <button type="button" class="btn btn-danger" ng-click="setDevParam('coin_min_fee')">
  487. 设置
  488. </button>
  489. </div>
  490. </div>
  491. <div class="form-group">
  492. <label class="col-sm-3 control-label">臭氧周期:</label>
  493. <div class="col-sm-6">
  494. <div class="input-group m-b">
  495. <input type="number" ng-model="devParamDialogData.ozoneCycle" min=0 max=9999
  496. class="form-control" placeholder="" required>
  497. <span class="input-group-addon">分钟</span>
  498. </div>
  499. </div>
  500. <div class="col-sm-3 form-inline">
  501. <button type="button" class="btn btn-dark" ng-click="getDevParam('ozoneCycle')">获取
  502. </button>
  503. <button type="button" class="btn btn-danger" ng-click="setDevParam('ozoneCycle')">设置
  504. </button>
  505. </div>
  506. </div>
  507. </accordion-group>
  508. <accordion-group is-open="devParamDialogStatus.open2">
  509. <accordion-heading>
  510. 费率配置<i class="pull-right fa fa-angle-right"
  511. ng-class="{'fa-angle-down': devParamDialogStatus.open2, 'fa-angle-right': !devParamDialogStatus.open2}"></i>
  512. </accordion-heading>
  513. <div class="form-group">
  514. <label class="col-sm-3 control-label">清水刷卡费率:</label>
  515. <div class="col-sm-6 m-b">
  516. <div class="input-group m-b">
  517. <input type="number" ng-model="devParamDialogData.water_card_fee" min=0.5 max=999.9
  518. step="0.01" name="water_card_fee"
  519. class="form-control" placeholder="" required>
  520. <span class="input-group-addon">秒/1元</span>
  521. </div>
  522. <span style="color:red"
  523. ng-show="devParamForm.water_card_fee.$dirty &&devParamForm.water_card_fee.$invalid">必须是0.5-999.9范围内</span>
  524. </div>
  525. <div class="col-sm-3 form-inline">
  526. <button type="button" class="btn btn-dark" ng-click="getDevParam('water_card_fee')">获取
  527. </button>
  528. <button type="button" class="btn btn-danger" ng-click="setDevParam('water_card_fee')">设置
  529. </button>
  530. </div>
  531. </div>
  532. <div class="form-group">
  533. <label class="col-sm-3 control-label">清水投币费率:</label>
  534. <div class="col-sm-6 m-b">
  535. <div class="input-group ">
  536. <input type="number" ng-model="devParamDialogData.water_coin_fee" min=0.5 max=999.9
  537. step="0.01" name="water_coin_fee"
  538. class="form-control" placeholder="" required>
  539. <span class="input-group-addon">秒/1元</span>
  540. </div>
  541. <span style="color:red"
  542. ng-show="devParamForm.water_coin_fee.$dirty &&devParamForm.water_coin_fee.$invalid">必须是0.5-999.9范围内</span>
  543. </div>
  544. <div class="col-sm-3 form-inline">
  545. <button type="button" class="btn btn-dark" ng-click="getDevParam('water_coin_fee')">获取
  546. </button>
  547. <button type="button" class="btn btn-danger" ng-click="setDevParam('water_coin_fee')">设置
  548. </button>
  549. </div>
  550. </div>
  551. <div class="form-group">
  552. <label class="col-sm-3 control-label">泡沫刷卡费率:</label>
  553. <div class="col-sm-6 m-b">
  554. <div class="input-group ">
  555. <input type="number" ng-model="devParamDialogData.foam_card_fee" min=0.5 max=999.9
  556. step="0.01" name="foam_card_fee"
  557. class="form-control" placeholder="" required>
  558. <span class="input-group-addon">秒/1元</span>
  559. </div>
  560. <span style="color:red"
  561. ng-show="devParamForm.foam_card_fee.$dirty &&devParamForm.foam_card_fee.$invalid">必须是0.5-999.9范围内</span>
  562. </div>
  563. <div class="col-sm-3 form-inline">
  564. <button type="button" class="btn btn-dark" ng-click="getDevParam('foam_card_fee')">获取
  565. </button>
  566. <button type="button" class="btn btn-danger" ng-click="setDevParam('foam_card_fee')">设置
  567. </button>
  568. </div>
  569. </div>
  570. <div class="form-group">
  571. <label class="col-sm-3 control-label">泡沫投币费率:</label>
  572. <div class="col-sm-6 m-b">
  573. <div class="input-group ">
  574. <input type="number" ng-model="devParamDialogData.foam_coin_fee" min=0.5 max=999.9
  575. step="0.01" name="foam_coin_fee"
  576. class="form-control" placeholder="" required>
  577. <span class="input-group-addon">秒/1元</span>
  578. </div>
  579. <span style="color:red"
  580. ng-show="devParamForm.foam_coin_fee.$dirty &&devParamForm.foam_coin_fee.$invalid">必须是0.5-999.9范围内</span>
  581. </div>
  582. <div class="col-sm-3 form-inline">
  583. <button type="button" class="btn btn-dark" ng-click="getDevParam('foam_coin_fee')">获取
  584. </button>
  585. <button type="button" class="btn btn-danger" ng-click="setDevParam('foam_coin_fee')">设置
  586. </button>
  587. </div>
  588. </div>
  589. <div class="form-group">
  590. <label class="col-sm-3 control-label">除尘刷卡费率:</label>
  591. <div class="col-sm-6 m-b">
  592. <div class="input-group ">
  593. <input type="number" ng-model="devParamDialogData.clean_card_fee" min=0.5 max=999.9
  594. step="0.01" name="clean_card_fee"
  595. class="form-control" placeholder="" required>
  596. <span class="input-group-addon">秒/1元</span>
  597. </div>
  598. <span style="color:red"
  599. ng-show="devParamForm.clean_card_fee.$dirty &&devParamForm.clean_card_fee.$invalid">必须是0.5-999.9范围内</span>
  600. </div>
  601. <div class="col-sm-3 form-inline">
  602. <button type="button" class="btn btn-dark" ng-click="getDevParam('clean_card_fee')">获取
  603. </button>
  604. <button type="button" class="btn btn-danger" ng-click="setDevParam('clean_card_fee')">设置
  605. </button>
  606. </div>
  607. </div>
  608. <div class="form-group">
  609. <label class="col-sm-3 control-label">除尘投币费率:</label>
  610. <div class="col-sm-6 m-b">
  611. <div class="input-group ">
  612. <input type="number" ng-model="devParamDialogData.clean_coin_fee" min=0.5 max=999.9
  613. step="0.01" name="clean_coin_fee"
  614. class="form-control" placeholder="" required>
  615. <span class="input-group-addon">秒/1元</span>
  616. </div>
  617. <span style="color:red"
  618. ng-show="devParamForm.clean_coin_fee.$dirty &&devParamForm.clean_coin_fee.$invalid">必须是0.5-999.9范围内</span>
  619. </div>
  620. <div class="col-sm-3 form-inline">
  621. <button type="button" class="btn btn-dark" ng-click="getDevParam('clean_coin_fee')">获取
  622. </button>
  623. <button type="button" class="btn btn-danger" ng-click="setDevParam('clean_coin_fee')">设置
  624. </button>
  625. </div>
  626. </div>
  627. <div class="form-group">
  628. <label class="col-sm-3 control-label">消毒模式费率:</label>
  629. <div class="col-sm-6 m-b">
  630. <div class="input-group ">
  631. <input type="number" ng-model="devParamDialogData.disinfect_mode_fee" min=0.5
  632. max=999.9
  633. step="0.01" name="disinfect_mode_fee"
  634. class="form-control" placeholder="" required>
  635. <span class="input-group-addon">秒/1元</span>
  636. </div>
  637. <span style="color:red"
  638. ng-show="devParamForm.disinfect_mode_fee.$dirty &&devParamForm.disinfect_mode_fee.$invalid">必须是0.5-999.9范围内</span>
  639. </div>
  640. <div class="col-sm-3 form-inline">
  641. <button type="button" class="btn btn-dark" ng-click="getDevParam('disinfect_mode_fee')">
  642. 获取
  643. </button>
  644. <button type="button" class="btn btn-danger"
  645. ng-click="setDevParam('disinfect_mode_fee')">设置
  646. </button>
  647. </div>
  648. </div>
  649. </accordion-group>
  650. <accordion-group is-open="devParamDialogStatus.open3">
  651. <accordion-heading>
  652. 灯光控制<i class="pull-right fa fa-angle-right"
  653. ng-class="{'fa-angle-down': devParamDialogStatus.open3, 'fa-angle-right': !devParamDialogStatus.open3}"></i>
  654. </accordion-heading>
  655. <div class="form-group">
  656. <label class="col-sm-3 control-label">开广告灯在几点:</label>
  657. <div class="col-sm-6 m-b">
  658. <div class="input-group ">
  659. <input type="number" ng-model="devParamDialogData.lightTime" min=0 max=23
  660. name="lightTime"
  661. class="form-control" placeholder="" required>
  662. <span class="input-group-addon">时</span>
  663. </div>
  664. <span style="color:red"
  665. ng-show="devParamForm.lightTime.$dirty &&devParamForm.lightTime.$invalid">必须是0-23范围内</span>
  666. </div>
  667. <div class="col-sm-3 form-inline">
  668. <button type="button" class="btn btn-dark" ng-click="getDevParam('lightTime')">获取
  669. </button>
  670. <button type="button" class="btn btn-danger" ng-click="setDevParam('lightTime')">设置
  671. </button>
  672. </div>
  673. </div>
  674. <div class="form-group">
  675. <label class="col-sm-3 control-label">关广告灯在几点:</label>
  676. <div class="col-sm-6 m-b">
  677. <div class="input-group ">
  678. <input type="number" ng-model="devParamDialogData.offLightTime" min=0 max=23
  679. name="offLightTime"
  680. class="form-control" placeholder="" required>
  681. <span class="input-group-addon">时</span>
  682. </div>
  683. <span style="color:red"
  684. ng-show="devParamForm.offLightTime.$dirty &&devParamForm.offLightTime.$invalid">必须是0-23范围内</span>
  685. </div>
  686. <div class="col-sm-3 form-inline">
  687. <button type="button" class="btn btn-dark" ng-click="getDevParam('offLightTime')">获取
  688. </button>
  689. <button type="button" class="btn btn-danger" ng-click="setDevParam('offLightTime')">设置
  690. </button>
  691. </div>
  692. </div>
  693. </accordion-group>
  694. </accordion>
  695. </div>
  696. <footer class="panel-footer text-right bg-light lter text-center">
  697. <button type="submit" class="btn btn-info" ng-click="closeDevParam()">关闭
  698. </button>
  699. </footer>
  700. </div>
  701. </form>
  702. <div id="adDataGrid" class="form-horizontal form-validation modal fade" role="dialog"
  703. style="height:70%;width: 70%;">
  704. <div class="panel panel-default">
  705. <div class="panel-body">
  706. <div class="table-responsive" style="height: 100%">
  707. <div ui-grid="adGridOptions" style="min-height:96%" ui-grid-pagination
  708. ui-grid-resize-columns></div>
  709. </div>
  710. </div>
  711. <footer class="panel-footer text-center bg-light lter">
  712. <button type="button" class="btn btn-info margin-5" ng-click="closeAdDataGrid()"
  713. style="margin-left: 8px"><i
  714. class="fa fa-close"></i> 关闭
  715. </button>
  716. </footer>
  717. </div>
  718. </div>
  719. <form id="realtimeDialog" name="realtimeDialog" class="form-horizontal form-validation modal fade"
  720. role="dialog" style="width: 1200px;height: 600px">
  721. <div class="panel panel-default">
  722. <div class="panel-heading">
  723. <strong>设备充电端口状态</strong>
  724. </div>
  725. <div class="panel-body">
  726. <div class="padder-v">
  727. <div class="btn-group dropdown" dropdown>
  728. <button class="btn btn-default dropdown-toggle" dropdown-toggle>
  729. <span class="dropdown-label">{{realtimeCondition.port+'号端口'}}</span>
  730. <span class="caret"></span>
  731. </button>
  732. <ul class="dropdown-menu">
  733. <li ng-repeat="item in portList" ng-click="realtimeConditionChange(item)">
  734. <a href ng-bind="item+'号端口'"></a></li>
  735. </ul>
  736. </div>
  737. <div class="m-l-xs btn-group dropdown" dropdown is-open="realtimeConfig.startTimeOpen">
  738. <input type="text" class="form-control w-xs" dropdown-toggle
  739. ng-model="realtimeCondition.startTime"
  740. placeholder="开始日期">
  741. <ul class="dropdown-menu" dropdown-menu>
  742. <datetimepicker
  743. data-datetimepicker-config="{ modelType: 'YYYY-MM-DD',startView: 'day', minView: 'day'}"
  744. on-set-time="realtimeConfig.timeChange()"
  745. data-ng-model="realtimeCondition.startTime"></datetimepicker>
  746. </ul>
  747. </div>
  748. <span class="v-middle">至</span>
  749. <div class="btn-group dropdown" dropdown is-open="realtimeConfig.endTimeOpen">
  750. <input type="text" class=" form-control w-xs" dropdown-toggle
  751. ng-model="realtimeCondition.endTime"
  752. placeholder="结束日期">
  753. <ul class="dropdown-menu" dropdown-menu>
  754. <datetimepicker
  755. data-datetimepicker-config="{ modelType: 'YYYY-MM-DD',startView: 'day', minView: 'day'}"
  756. on-set-time="realtimeConfig.timeChange()"
  757. data-ng-model="realtimeCondition.endTime"></datetimepicker>
  758. </ul>
  759. </div>
  760. <div class="btn btn-default" ng-click="loadRealtimeData()"><i class="fa fa-refresh"></i> 刷新</div>
  761. </div>
  762. <div id="realtimeDataChart" style="height: 380px"></div>
  763. <div class="status-block">
  764. <div style="background:rgba(7,193,96,.8) ">设备工作</div>
  765. <div style="background:rgba(255,82,76,.8) ">设备故障</div>
  766. </div>
  767. </div>
  768. </div>
  769. </form>
  770. <style>
  771. .status-block {
  772. text-align: center;
  773. padding-top: 10px;
  774. }
  775. .status-block > div {
  776. display: inline-block;
  777. padding: 5px 10px;
  778. color: #fff;
  779. }
  780. </style>
  781. </div>