Bzy.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764
  1. <template>
  2. <div>
  3. <el-breadcrumb separator-class="el-icon-arrow-right">
  4. <el-breadcrumb-item>测报系统</el-breadcrumb-item>
  5. <el-breadcrumb-item>孢子仪</el-breadcrumb-item>
  6. </el-breadcrumb>
  7. <search-bar @fun="getDisplayType" @fun2="getIDName" @fun3="getIsOnline"></search-bar>
  8. <template v-if="displayType==1">
  9. <el-row :gutter="10">
  10. <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="6" v-for="item in equipList" :key="item.id">
  11. <el-card class="box-card">
  12. <equip-item :is_online="item.device_status">
  13. <span
  14. slot="set"
  15. v-show="userType==1"
  16. class="superOperate el-icon-setting"
  17. @click="equipOperation(item.device_id,item.d_id)"
  18. ></span>
  19. <span slot="title">孢子仪</span>
  20. <div slot="content" class="content">
  21. <p>
  22. <i class="iconfont icon-yonghu"></i>
  23. 设备ID:{{item.device_id.slice(-8)}}
  24. </p>
  25. <p>
  26. <i class="iconfont icon-biaoqian"></i>
  27. 设备名称:{{item.device_name==""?"无":item.device_name}}
  28. </p>
  29. <p>
  30. <i class="iconfont icon-diannao"></i>在线状态:
  31. <span
  32. :class="{red:item.device_status==0,green:item.device_status==1}"
  33. >{{item.device_status==0?"离线":"在线"}}</span>
  34. </p>
  35. <p>
  36. <i class="iconfont icon-shijian"></i>
  37. 最新上报时间 : {{item.status_time*1000 | formatTime}}
  38. </p>
  39. <p>
  40. <i class="iconfont icon-dizhi"></i>载玻片、培养液更换时间
  41. <span @click="setTime(item.d_id)" class="el-icon-edit"></span>
  42. </p>
  43. <p class="btns">
  44. <i class="iconfont icon-yemiancaozuo"></i>
  45. <el-button size="mini" type="info" @click="viewImage(item.device_id,item.d_id)">查看图片</el-button>
  46. <el-button size="mini" type="warning" @click="equipSet(item.d_id)">设备控制</el-button>
  47. <el-button size="mini" type="success" @click="simSet(item.d_id)">SIM卡</el-button>
  48. <el-button size="mini" type="danger" @click="dataDetail(item.device_id,item.d_id)">数据详情</el-button>
  49. </p>
  50. </div>
  51. </equip-item>
  52. </el-card>
  53. </el-col>
  54. </el-row>
  55. </template>
  56. <template v-if="displayType==2">
  57. <el-card class="box-card">
  58. <el-table :data="equipList" stripe style="width: 100%">
  59. <el-table-column prop="device_id" label="设备ID" width="180">
  60. <template slot-scope="scope">{{scope.row.device_id.slice(-8)}}</template>
  61. </el-table-column>
  62. <el-table-column prop="device_name" label="设备名称" width="180">
  63. <template slot-scope="scope">{{scope.row.device_name==""?"无":scope.row.device_name}}</template>
  64. </el-table-column>
  65. <el-table-column prop="device_status" label="在线状态">
  66. <template slot-scope="scope">
  67. <p style="color:#17bb89" v-if="scope.row.device_status==1">在线</p>
  68. <p style="color:#eb6765" v-if="scope.row.device_status==0">离线</p>
  69. </template>
  70. </el-table-column>
  71. <el-table-column prop="address" label="位置">
  72. <template slot-scope="scope">{{scope.row.address==""?"无":scope.row.address}}</template>
  73. </el-table-column>
  74. <el-table-column prop="status_time" label="最新上报时间">
  75. <template slot-scope="scope">{{scope.row.status_time*1000 | formatTime}}</template>
  76. </el-table-column>
  77. <el-table-column label="操作" width="400">
  78. <template slot-scope="scope">
  79. <el-button size="mini" type="info" @click="viewImage(scope.row.device_id,scope.row.d_id)">查看图片</el-button>
  80. <el-button size="mini" type="warning" @click="equipSet(scope.row.d_id)">设备控制</el-button>
  81. <el-button size="mini" type="success" @click="simSet(scope.row.d_id)">SIM卡</el-button>
  82. <el-button
  83. size="mini"
  84. type="danger"
  85. @click="dataDetail(scope.row.device_id,scope.row.d_id)"
  86. >数据详情</el-button>
  87. </template>
  88. </el-table-column>
  89. </el-table>
  90. </el-card>
  91. </template>
  92. <el-pagination
  93. background
  94. :page-size="8"
  95. layout="prev, pager, next"
  96. :total="totalNum"
  97. :current-page="queryInfo.page"
  98. @current-change="changePage"
  99. ></el-pagination>
  100. <!-- 设置载玻片、培养液更换时间配置弹框 -->
  101. <el-dialog title="配置(请及时填写)" :visible.sync="setTimeDialogVisible" width="420px">
  102. <el-form ref="form" :model="time" label-width="130px">
  103. <el-form-item label="载玻片更换时间: ">
  104. <el-date-picker v-model="time.time01" type="date" placeholder="选择日期"></el-date-picker>
  105. </el-form-item>
  106. <el-form-item label="培养液更换时间: ">
  107. <el-date-picker v-model="time.time02" type="date" placeholder="选择日期"></el-date-picker>
  108. </el-form-item>
  109. </el-form>
  110. <span slot="footer" class="dialog-footer">
  111. <el-button @click="setTimeDialogVisible = false">取 消</el-button>
  112. <el-button type="primary" @click="setTimeSubm()">确 定</el-button>
  113. </span>
  114. </el-dialog>
  115. <!-- 设备控制对话框 -->
  116. <el-dialog
  117. title="设备控制"
  118. :visible.sync="setDialogVisible"
  119. @close="equipControlDialogClosed"
  120. width="35%"
  121. >
  122. <el-form ref="equipContrlRef" :model="setFrom" label-width="160px">
  123. <el-form-item label="载玻片滴液时间: " prop="drop_time">
  124. <el-select v-model="setFrom.drop_time">
  125. <el-option label="1" value="1"></el-option>
  126. <el-option label="2" value="2"></el-option>
  127. <el-option label="3" value="3"></el-option>
  128. <el-option label="4" value="4"></el-option>
  129. <el-option label="5" value="5"></el-option>
  130. </el-select>
  131. </el-form-item>
  132. <el-form-item label="图片上传分辨率: " prop="imgres">
  133. <el-select v-model="setFrom.imgres">
  134. <el-option label="高" value="0"></el-option>
  135. <el-option label="中" value="1"></el-option>
  136. <el-option label="低" value="2"></el-option>
  137. </el-select>
  138. </el-form-item>
  139. <el-form-item label="孢子培养时间(h): " prop="cul_time">
  140. <div class="sliderParent">
  141. <div class="block">
  142. <el-slider v-model="setFrom.cul_time" show-input :min="1" :max="24"></el-slider>
  143. </div>
  144. </div>
  145. </el-form-item>
  146. <el-form-item label="保温仓设定温度(℃): " prop="set_stemp">
  147. <div class="sliderParent">
  148. <div class="block">
  149. <el-slider v-model="setFrom.set_stemp" show-input :min="10" :max="40"></el-slider>
  150. </div>
  151. </div>
  152. </el-form-item>
  153. <el-form-item label="数据上传时间间隔: " prop="datt">
  154. <div class="sliderParent">
  155. <div class="block">
  156. <el-slider v-model="setFrom.datt" show-input :min="10" :max="60"></el-slider>
  157. </div>
  158. </div>
  159. </el-form-item>
  160. <el-form-item label="采集开启和关闭时间: ">
  161. <div class="timeSet">
  162. <el-time-select
  163. placeholder="起始时间"
  164. v-model="coll_time.time01"
  165. :picker-options="{
  166. start: '1:00',
  167. step: '1:00',
  168. end: '24:00'
  169. }"
  170. ></el-time-select>
  171. <span>至</span>
  172. <el-time-select
  173. placeholder="结束时间"
  174. v-model="coll_time.time02"
  175. :picker-options="{
  176. start: '1:00',
  177. step: '1:00',
  178. end: '24:00',
  179. minTime: coll_time.time01
  180. }"
  181. ></el-time-select>
  182. </div>
  183. <div class="timeSet">
  184. <el-time-select
  185. placeholder="起始时间"
  186. v-model="coll_time.time03"
  187. :picker-options="{
  188. start: '1:00',
  189. step: '1:00',
  190. end: '24:00',
  191. minTime: coll_time.time02
  192. }"
  193. ></el-time-select>
  194. <span>至</span>
  195. <el-time-select
  196. placeholder="结束时间"
  197. v-model="coll_time.time04"
  198. :picker-options="{
  199. start: '1:00',
  200. step: '1:00',
  201. end: '24:00',
  202. minTime: coll_time.time03
  203. }"
  204. ></el-time-select>
  205. </div>
  206. <div class="timeSet">
  207. <el-time-select
  208. placeholder="起始时间"
  209. v-model="coll_time.time05"
  210. :picker-options="{
  211. start: '1:00',
  212. step: '1:00',
  213. end: '24:00',
  214. minTime: coll_time.time04
  215. }"
  216. ></el-time-select>
  217. <span>至</span>
  218. <el-time-select
  219. placeholder="结束时间"
  220. v-model="coll_time.time06"
  221. :picker-options="{
  222. start: '1:00',
  223. step: '1:00',
  224. end: '24:00',
  225. minTime: coll_time.time05
  226. }"
  227. ></el-time-select>
  228. </div>
  229. </el-form-item>
  230. </el-form>
  231. <span slot="footer" class="dialog-footer">
  232. <el-button @click="setDialogVisible = false">取 消</el-button>
  233. <el-button type="primary" @click="equipSetSubm()">确 定</el-button>
  234. </span>
  235. </el-dialog>
  236. <!-- SIM卡对话框 -->
  237. <el-dialog title="SIM卡" :visible.sync="simCodeVisible" width="30%">
  238. <template>
  239. <el-tabs v-model="activeName" @tab-click="handleClick">
  240. <el-tab-pane label="SIM卡流量" name="sim">
  241. <div class="simCodeBox">
  242. <div>
  243. <span class="simCodeTitle">ICCID:</span>
  244. <div>{{sim.iccid}}</div>
  245. </div>
  246. <div>
  247. <span class="simCodeTitle">状态:</span>
  248. <div>{{sim.account_status | simStatus}}</div>
  249. </div>
  250. <div>
  251. <span class="simCodeTitle">套餐:</span>
  252. <div>
  253. <el-progress :show-text="false" :percentage="100"></el-progress>
  254. </div>
  255. <span>{{sim.data_plan}}</span>
  256. </div>
  257. <div>
  258. <span class="simCodeTitle">已用流量:</span>
  259. <div>
  260. <template v-if="!isNaN(data_usage_Per)">
  261. <el-progress :show-text="false" :percentage="data_usage_Per"></el-progress>
  262. </template>
  263. </div>
  264. <span>{{sim.data_usage}}MB</span>
  265. </div>
  266. <div>
  267. <span class="simCodeTitle">剩余流量:</span>
  268. <div>
  269. <template v-if="!isNaN(data_balance_per)">
  270. <el-progress :show-text="false" :percentage="data_balance_per"></el-progress>
  271. </template>
  272. </div>
  273. <span>{{sim.data_balance}}MB</span>
  274. </div>
  275. <div>
  276. <span class="simCodeTitle">到期时间:</span>
  277. <div>{{sim.expiry_date*1000 | formatTime}}</div>
  278. </div>
  279. <div class="operateBtn">
  280. <el-button size="mini" @click="simCodeVisible=false">关闭</el-button>
  281. </div>
  282. </div>
  283. </el-tab-pane>
  284. <el-tab-pane label="海康SIM卡流量" name="hksim">
  285. <div class="simCodeBox">
  286. <div>
  287. <span class="simCodeTitle">ICCID:</span>
  288. <div>1232456</div>
  289. </div>
  290. <div>
  291. <span class="simCodeTitle">状态:</span>
  292. <div>使用中</div>
  293. </div>
  294. <div>
  295. <span class="simCodeTitle">套餐:</span>
  296. <div>
  297. <el-progress :show-text="false" :percentage="100"></el-progress>
  298. </div>
  299. <span>2048.00MB</span>
  300. </div>
  301. <div>
  302. <span class="simCodeTitle">已用流量:</span>
  303. <div>
  304. <el-progress :show-text="false" :percentage="60"></el-progress>
  305. </div>
  306. <span>500.00MB</span>
  307. </div>
  308. <div>
  309. <span class="simCodeTitle">剩余流量:</span>
  310. <div>
  311. <el-progress :show-text="false" :percentage="40"></el-progress>
  312. </div>
  313. <span>1548.00MB</span>
  314. </div>
  315. <div>
  316. <span class="simCodeTitle">到期时间:</span>
  317. <div>2020-12-21 12:20:00</div>
  318. </div>
  319. <div>
  320. <span class="simCodeTitle">更换ICCID:</span>
  321. <div>
  322. <el-input type="number" v-model="queryInfo.f_id" placeholder="请输入ICCID"></el-input>
  323. </div>
  324. </div>
  325. <div class="operateBtn">
  326. <el-button type="primary" size="mini" @click="simCodeVisible=false">确定</el-button>
  327. <el-button size="mini" @click="simCodeVisible=false">取消</el-button>
  328. </div>
  329. </div>
  330. </el-tab-pane>
  331. </el-tabs>
  332. </template>
  333. </el-dialog>
  334. <!-- 管理员设置 -->
  335. <el-dialog title="操作" :visible.sync="operarionDialogVisible" width="300px">
  336. <el-row>
  337. <el-col :span="12">
  338. 设备开关:
  339. <el-switch @change="equipBtnControl($event,1)" v-model="switchForm.on_off"></el-switch>
  340. </el-col>
  341. <el-col :span="12">
  342. 制冷开关:
  343. <el-switch @change="equipBtnControl($event,2)" v-model="switchForm.cold_sw"></el-switch>
  344. </el-col>
  345. </el-row>
  346. <el-row v-if="role=='staff'||role=='superuser'">
  347. <el-col :span="6">
  348. <el-button type="primary" size="mini">开机</el-button>
  349. </el-col>
  350. <el-col :span="6">
  351. <el-button type="primary" size="mini">关机</el-button>
  352. </el-col>
  353. <el-col :span="6">
  354. <el-button type="primary" size="mini">升级</el-button>
  355. </el-col>
  356. <el-col :span="6">
  357. <el-button type="primary" size="mini">重启</el-button>
  358. </el-col>
  359. </el-row>
  360. </el-dialog>
  361. </div>
  362. </template>
  363. <script>
  364. import SearchBar from '@/components/SearchBar'
  365. import EquipItem from '@/components/EquipItem'
  366. export default {
  367. data() {
  368. return {
  369. displayType: '1', //图表和表格切换
  370. d_id: '',
  371. itemId: '', //当前点开的弹框设备ID
  372. selectItem: '1', //1设备号,2用户名
  373. searchVal: '', //搜索框内容
  374. equipList: [], //设备列表
  375. totalNum: null, //数据总条数
  376. role: '',
  377. queryInfo: {
  378. page: 1,
  379. is_online: '', //筛选在线状态
  380. f_id: '',
  381. ename: ''
  382. },
  383. setTimeDialogVisible: false, //设置载玻片、培养液更换时间配置弹框
  384. setDialogVisible: false, //设备配置
  385. simCodeVisible: false, //SIM卡
  386. operarionDialogVisible: false, //操作弹框
  387. time: {
  388. time01: '', //载玻片更换时间
  389. time02: '' //培养液更换时间
  390. },
  391. switchForm: {
  392. on_off: false, //设备开关 false关闭,true开启
  393. cold_sw: false //制冷开关 false关闭,true开启
  394. },
  395. setFrom: {
  396. drop_time: '1', //载玻片滴液时间
  397. imgres: '0', //图片上传分辨率
  398. cul_time: 0, //孢子培养时间
  399. set_stemp: 0, //保温仓设定温度
  400. datt: 0, //数据上传时间间隔(h)-m
  401. coll_time: [] //采集开启和关闭时间
  402. },
  403. coll_time: {
  404. time01: '',
  405. time02: '',
  406. time03: '',
  407. time04: '',
  408. time05: '',
  409. time06: ''
  410. },
  411. activeName: 'sim',
  412. sim: {
  413. iccid: '',
  414. account_status: 0, //卡状态 0-7 未知 测试期 沉默期 使用中 停机 停机保号 预销号 销号
  415. data_plan: 0, //套餐大小
  416. data_usage: 0, //当月用量
  417. data_balance: 0, //剩余流量
  418. expiry_date: 0 //到期日期
  419. }
  420. }
  421. },
  422. mounted() {
  423. this.getEquipList()
  424. },
  425. computed: {
  426. userType: function () {
  427. //获取用户类型
  428. return window.sessionStorage.getItem('myuser_type')
  429. },
  430. data_usage_Per: function () {
  431. let aa = Number(this.sim.data_usage / this.sim.data_plan) * 100
  432. return aa
  433. },
  434. data_balance_per: function () {
  435. let aa = Number(this.sim.data_balance / this.sim.data_plan) * 100
  436. return aa
  437. }
  438. },
  439. methods: {
  440. getIsOnline(data) {
  441. this.queryInfo.is_online = data
  442. this.queryInfo.page = 1
  443. this.getEquipList()
  444. },
  445. getIDName(data) {
  446. this.queryInfo.f_id = data.f_id
  447. this.queryInfo.ename = data.ename
  448. this.queryInfo.page = 1
  449. this.getEquipList()
  450. },
  451. getDisplayType(data) {
  452. this.displayType = data
  453. },
  454. //获取设备列表
  455. getEquipList() {
  456. this.$axios({
  457. method: 'POST',
  458. url: '/api/api_gateway?method=forecast.worm_lamp.lamp_list',
  459. data: this.qs.stringify({
  460. device_type_id: 7,
  461. page_size: 8,
  462. device_id: this.queryInfo.f_id,
  463. device_name: this.queryInfo.ename,
  464. page: this.queryInfo.page,
  465. device_status: this.queryInfo.is_online
  466. })
  467. }).then((res) => {
  468. if (res.data.message == '') {
  469. this.equipList = res.data.data.data
  470. this.totalNum = res.data.data.counts
  471. // this.role=res.data.role
  472. } else {
  473. // this.$message.error('获取数据失败!')
  474. }
  475. console.log(res)
  476. })
  477. },
  478. //载玻片、培养液更换时间配置
  479. setTime(d_id) {
  480. this.d_id = d_id
  481. this.$axios({
  482. method: 'POST',
  483. url: '/api/api_gateway?method=device.device_manage.get_spore_time',
  484. data: this.qs.stringify({
  485. device_type_id: 7,
  486. d_id
  487. })
  488. }).then((res) => {
  489. if (res.data.message == '') {
  490. let data = res.data.data
  491. let glass_slide_time = data.glass_slide_time * 1000
  492. let cultivate_time = data.cultivate_time * 1000
  493. this.time.time01 = glass_slide_time ? glass_slide_time : ''
  494. this.time.time02 = cultivate_time ? cultivate_time : ''
  495. }
  496. this.setTimeDialogVisible = true
  497. })
  498. },
  499. //载玻片、培养液更换时间配置提交
  500. setTimeSubm() {
  501. let glass_slide_time = parseInt(
  502. new Date(this.time.time01).getTime() / 1000
  503. )
  504. let cultivate_time = parseInt(new Date(this.time.time02).getTime() / 1000)
  505. this.$axios({
  506. method: 'POST',
  507. url: '/api/api_gateway?method=device.device_manage.updata_spore_time',
  508. data: this.qs.stringify({
  509. device_type_id: 7,
  510. d_id: this.d_id,
  511. glass_slide_time,
  512. cultivate_time
  513. })
  514. }).then((res) => {
  515. if (res.data.message == '') {
  516. this.$message.success('修改成功!')
  517. } else {
  518. this.$message.error(res.data.message)
  519. }
  520. this.setTimeDialogVisible = false
  521. })
  522. },
  523. equipSetSubm() {
  524. this.setFrom.coll_time = []
  525. if (this.coll_time.time01 && this.coll_time.time02) {
  526. this.setFrom.coll_time.push(
  527. `${this.coll_time.time01}-${this.coll_time.time02}`
  528. )
  529. }
  530. if (this.coll_time.time03 && this.coll_time.time04) {
  531. this.setFrom.coll_time.push(
  532. `${this.coll_time.time03}-${this.coll_time.time04}`
  533. )
  534. }
  535. if (this.coll_time.time05 && this.coll_time.time06) {
  536. this.setFrom.coll_time.push(
  537. `${this.coll_time.time05}-${this.coll_time.time06}`
  538. )
  539. }
  540. this.$axios({
  541. method: 'POST',
  542. url: '/api/api_gateway?method=forecast.send_control.device_control',
  543. data: this.qs.stringify({
  544. device_type_id: 7,
  545. d_id: this.d_id,
  546. config: JSON.stringify(this.setFrom)
  547. })
  548. }).then((res) => {
  549. if (res.data.data) {
  550. this.$message.success('设备控制修改成功')
  551. } else {
  552. this.$message.error('设备控制修改失败')
  553. }
  554. this.setDialogVisible = false
  555. })
  556. },
  557. //数据详情
  558. dataDetail(e_id, d_id) {
  559. this.itemId = e_id
  560. this.$router.push(`/index/dataDetail/${e_id}/${d_id}`)
  561. },
  562. viewImage(id,d_id) {
  563. this.itemId = id
  564. this.$router.push({path:'/index/bzyPhotos/' + id,query: {d_id:d_id} })
  565. },
  566. equipSet(d_id) {
  567. this.d_id = d_id
  568. this.$axios({
  569. method: 'POST',
  570. url: '/api/api_gateway?method=forecast.send_control.device_control_info',
  571. data: this.qs.stringify({ d_id, get_type: 1 })
  572. }).then((res) => {
  573. if (Object.keys(res.data.data).length > 0) {
  574. let data = res.data.data
  575. this.setFrom = data
  576. let { coll_time } = this.setFrom
  577. for (let i in coll_time) {
  578. if (i == 0) {
  579. this.coll_time.time01 = coll_time[i].split('-')[0]
  580. this.coll_time.time02 = coll_time[i].split('-')[1]
  581. } else if (i == 1) {
  582. this.coll_time.time03 = coll_time[i].split('-')[0]
  583. this.coll_time.time04 = coll_time[i].split('-')[1]
  584. } else if (i == 2) {
  585. this.coll_time.time05 = coll_time[i].split('-')[0]
  586. this.coll_time.time06 = coll_time[i].split('-')[1]
  587. }
  588. }
  589. console.log(this.coll_time)
  590. }
  591. this.setDialogVisible = true
  592. })
  593. },
  594. equipControlDialogClosed() {
  595. this.$refs.equipContrlRef.resetFields()
  596. this.coll_time = {}
  597. },
  598. simSet(d_id) {
  599. this.$axios({
  600. method: 'POST',
  601. url: '/api/api_gateway?method=forecast.send_control.device_sim',
  602. data: this.qs.stringify({
  603. d_id: d_id
  604. })
  605. }).then((res) => {
  606. if (res.data.message == '') {
  607. this.sim.iccid = res.data.data[0].iccid
  608. this.$axios({
  609. method: 'POST',
  610. url: '/api/api_gateway?method=forecast.send_control.sim_query',
  611. data: this.qs.stringify({
  612. iccid: this.sim.iccid
  613. })
  614. }).then((res) => {
  615. if (res.data.message == '') {
  616. let data = eval('(' + res.data.data.data + ')')
  617. let cardInfo = data.data.card_list[0]
  618. this.sim = cardInfo
  619. }
  620. this.simCodeVisible = true
  621. })
  622. }else{
  623. this.$message.error(res.data.message)
  624. }
  625. })
  626. },
  627. // SIMtab切换
  628. handleClick(tab) {},
  629. equipOperation(device_id, d_id) {
  630. this.d_id = d_id
  631. this.$axios({
  632. method: 'POST',
  633. url: '/api/api_gateway?method=forecast.worm_lamp.bzy_device',
  634. data: this.qs.stringify({
  635. device_id
  636. })
  637. }).then((res) => {
  638. if (res.data.message == '') {
  639. this.switchForm = res.data.data[0]
  640. }
  641. })
  642. this.operarionDialogVisible = true
  643. },
  644. //改变page
  645. changePage(val) {
  646. this.queryInfo.page = val
  647. this.getEquipList()
  648. },
  649. equipBtnControl(val, num) {
  650. if (num == 1) {
  651. if (val) {
  652. this.equipControl('poweron')
  653. } else {
  654. this.equipControl('poweroff')
  655. }
  656. } else if (num == 2) {
  657. if (val) {
  658. this.equipControl('coldon')
  659. } else {
  660. this.equipControl('coldoff')
  661. }
  662. }
  663. },
  664. equipControl(cmd) {
  665. this.$axios({
  666. method: 'POST',
  667. url:
  668. '/api/api_gateway?method=forecast.send_control.admin_device_control',
  669. data: this.qs.stringify({
  670. cmd,
  671. device_type_id: 7,
  672. d_id: this.d_id
  673. })
  674. }).then((res) => {
  675. if (res.data.message == '') {
  676. this.$message.success('指令下发成功!')
  677. }
  678. })
  679. }
  680. },
  681. filters: {
  682. simStatus(val) {
  683. switch (val) {
  684. case 0:
  685. return '未知'
  686. case 1:
  687. return '测试期'
  688. case 2:
  689. return '沉默期'
  690. case 3:
  691. return '使用中'
  692. case 4:
  693. return '停机'
  694. case 5:
  695. return '停机保号'
  696. case 6:
  697. return '预销号'
  698. case 7:
  699. return '销号'
  700. }
  701. }
  702. },
  703. components: {
  704. SearchBar,
  705. EquipItem
  706. }
  707. }
  708. </script>
  709. <style lang='less' scoped>
  710. .sliderParent {
  711. display: flex;
  712. .block {
  713. flex: 1;
  714. margin-right: 10px;
  715. margin-left: 10px;
  716. }
  717. > span {
  718. width: 40px;
  719. }
  720. }
  721. .timeSet {
  722. margin-bottom: 10px;
  723. }
  724. .simCodeBox {
  725. > div {
  726. line-height: 40px;
  727. display: flex;
  728. align-content: center;
  729. .simCodeTitle {
  730. width: 100px;
  731. text-align: right;
  732. font-size: 14px;
  733. color: #333;
  734. }
  735. > div {
  736. flex: 1;
  737. .el-progress {
  738. margin-top: 17px;
  739. }
  740. }
  741. span {
  742. width: 85px;
  743. font-size: 12px;
  744. padding-left: 3px;
  745. color: #909090;
  746. }
  747. .el-input {
  748. width: 60%;
  749. }
  750. }
  751. .operateBtn {
  752. display: block;
  753. text-align: right;
  754. }
  755. }
  756. .red {
  757. color: rgb(235, 103, 101);
  758. }
  759. .green {
  760. color: rgb(23, 187, 137);
  761. }
  762. </style>