Hardware.vue 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438
  1. <template>
  2. <div>
  3. <div class="tabs">
  4. <ul>
  5. <li v-for="(tab,i) in tabs" @click="goTab(tab.url)" :class="{'active':tabIndex == i}">
  6. {{tab.name}}
  7. </li>
  8. </ul>
  9. </div>
  10. <div class="upload">
  11. <h5>固件上传</h5>
  12. <div class="uploadContainer">
  13. <el-upload
  14. class="upload-demo"
  15. action="https://jsonplaceholder.typicode.com/posts/"
  16. :on-change="handleChange"
  17. :file-list="fileList">
  18. <el-button size="small" type="primary">点击上传</el-button>
  19. </el-upload>
  20. <em>
  21. <i></i>
  22. 添加备注
  23. </em>
  24. </div>
  25. </div>
  26. <div class="hardwareList">
  27. <h5>设备列表</h5>
  28. <div class="panel">
  29. <div class="panel-body">
  30. <div class=" panel_control">
  31. <el-row :gutter="20">
  32. <el-col :span="4">
  33. <em>所属区域:</em>
  34. <el-select v-model="panel.taskstatus">
  35. <el-option
  36. v-for="item in panel.options"
  37. :key="item.value"
  38. :label="item.label"
  39. :value="item.value">
  40. </el-option>
  41. </el-select>
  42. </el-col>
  43. <el-col :span="4">
  44. <em>固件版本:</em>
  45. <el-input v-model="panel.keyword" placeholder="请输入固件版本"></el-input>
  46. </el-col>
  47. <el-col :span="4">
  48. <el-button size="small" type="primary" @click="query">查询</el-button>
  49. </el-col>
  50. </el-row>
  51. </div>
  52. </div>
  53. </div>
  54. <div class="contorl">
  55. <el-button size="small" type="primary" @click="addList">开始更新</el-button>
  56. <div class="version">
  57. <em>NEW</em>
  58. <span>最新固件版本:v.2.0.1版本固件</span>
  59. </div>
  60. <el-button size="small" type="primary" @click="changeList">修改</el-button>
  61. </div>
  62. <el-table
  63. :data="tableData"
  64. class=""
  65. stripe
  66. @selection-change="handleSelectionChange"
  67. >
  68. <el-table-column
  69. type="selection"
  70. width="55">
  71. </el-table-column>
  72. <el-table-column
  73. prop="name"
  74. label="设备ID"
  75. >
  76. </el-table-column>
  77. <el-table-column
  78. prop="date"
  79. label="检测时间"
  80. width="180">
  81. </el-table-column>
  82. <el-table-column
  83. prop="name"
  84. label="探测区域"
  85. >
  86. </el-table-column>
  87. <el-table-column
  88. prop="name"
  89. label="信道"
  90. width="180">
  91. </el-table-column>
  92. <el-table-column
  93. prop="address"
  94. label="信号频段">
  95. </el-table-column>
  96. <el-table-column
  97. prop="address"
  98. label="数据量">
  99. </el-table-column>
  100. <el-table-column
  101. prop="address"
  102. label="信号强度">
  103. </el-table-column>
  104. <el-table-column
  105. prop="address"
  106. label="操作记录">
  107. <template slot-scope="scope">
  108. <span @click="goRecord(scope.row)">探测记录</span>
  109. </template>
  110. </el-table-column>
  111. </el-table>
  112. <br>
  113. <el-pagination
  114. background
  115. :total="pageination.total"
  116. :page-size="pageination.pageItem"
  117. @current-change="pageChange"
  118. ></el-pagination>
  119. <dialog_referrer_list
  120. :show="dialog_state"
  121. :title="dialog_title"
  122. :large="true"
  123. @dialog_cancel="dialog_cancel"
  124. @dialog_ok="dialog_ok"
  125. >
  126. <div class="dialogContent">
  127. <el-row :gutter="20">
  128. <el-col :span="10">
  129. <label>
  130. 设备ID
  131. </label>
  132. <el-input v-model="dialog.name"></el-input>
  133. </el-col>
  134. <el-col :span="10">
  135. <label>
  136. MAC地址
  137. </label>
  138. <el-input v-model="dialog.name"></el-input>
  139. </el-col>
  140. <el-col :span="10">
  141. <label>
  142. 标签名
  143. </label>
  144. <el-input v-model="dialog.name"></el-input>
  145. </el-col>
  146. <el-col :span="10">
  147. <label>
  148. 设备所属楼层
  149. </label>
  150. <el-select v-model="dialog.region" placeholder="请选择所属楼层">
  151. <el-option
  152. v-for="item in panel.options"
  153. :key="item.value"
  154. :label="item.label"
  155. :value="item.value">
  156. </el-option>
  157. </el-select>
  158. </el-col>
  159. <el-col :span="20">
  160. <label>
  161. 备注
  162. </label>
  163. <el-input type="textarea" v-model="dialog.memo"></el-input>
  164. </el-col>
  165. </el-row>
  166. </div>
  167. </dialog_referrer_list>
  168. </div>
  169. </div>
  170. </template>
  171. <script>
  172. import Global from '../Global.js'
  173. import dialog_referrer_list from '../components/dialog_referrer_list'
  174. export default {
  175. data() {
  176. return {
  177. // dialog
  178. dialog_state: false,
  179. dialog_title: '添加设备',
  180. dialog_type: '',//类型,1是添加,2是修改
  181. tabIndex: 0,
  182. tabs: [
  183. {name: '固件管理', url: 'hardware'},
  184. {name: '警务通管理', url: 'police'},
  185. {name: '密码修改', url: 'pwd'},
  186. {name: '系统设置', url: 'setting'},
  187. ],
  188. fileList: [{
  189. name: 'food.jpeg',
  190. url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'
  191. }],
  192. // panel 配置项目
  193. panel: {
  194. usercode: '',
  195. username: '',
  196. compname: '',
  197. keyword: '',
  198. USERCODE: '',
  199. taskstatus: 99,
  200. options: [
  201. {value: 99, label: '全部'},
  202. {value: 1, label: '进行中'},
  203. {value: 2, label: '已完成'},
  204. ],
  205. time1: globalBt2(),
  206. },
  207. pageination: {
  208. pageItem: 10,
  209. pageoptions: pageOptions(),
  210. total: 10,
  211. pageIndex: 1,
  212. },
  213. dialog: {
  214. name: 10,
  215. region: 10,
  216. memo: '',
  217. },
  218. multipleSelection: [],
  219. tableData: [{
  220. date: '2016-05-02',
  221. name: '王小虎',
  222. address: '上海市普陀区金沙江路 1518 弄'
  223. }, {
  224. date: '2016-05-04',
  225. name: '王小虎',
  226. address: '上海市普陀区金沙江路 1517 弄'
  227. }, {
  228. date: '2016-05-01',
  229. name: '王小虎',
  230. address: '上海市普陀区金沙江路 1519 弄'
  231. }, {
  232. date: '2016-05-03',
  233. name: '王小虎',
  234. address: '上海市普陀区金沙江路 1516 弄'
  235. }]
  236. }
  237. },
  238. mounted() {
  239. this.getTableQuery();
  240. },
  241. methods: {
  242. // 跳转tab页面
  243. goTab(url) {
  244. this.$router.push({path: url});
  245. },
  246. // 查询按钮
  247. query() {
  248. this.getTableQuery();
  249. this.$message.success('查询完毕');
  250. },
  251. handleSelectionChange(val) {
  252. this.multipleSelection = val;
  253. console.log(val);
  254. },
  255. handleChange(file, fileList) {
  256. this.fileList = fileList.slice(-3);
  257. },
  258. // 页面数据查询
  259. getTableQuery() {
  260. // let that = this;
  261. // that.loading = true;
  262. // let url = headapi + '?ctl=ajax&mod=dial&act=taskListQuery';//获取
  263. // let param = {
  264. // 'taskstatus': that.panel.taskstatus,
  265. // 'bt': globaltime2String(that.panel.time1[0]),
  266. // 'et': globaltime2String(that.panel.time1[1]),
  267. // 'KEYWORD': that.panel.keyword,
  268. // 'USERCODE': that.panel.USERCODE,
  269. // };
  270. // let JSON = '';
  271. // let postdata = qs.stringify(param);
  272. // axios.post(url, postdata)
  273. // .then(function (response) {
  274. // JSON = response.data;
  275. // that.loading = false;
  276. // that.allTableData = JSON.rs;
  277. // that.recordsTotal = JSON.rs.length;
  278. // // 设置分页数据
  279. // that.setPaginations();
  280. // })
  281. // .catch(function (error) {
  282. // console.log(error);
  283. // });
  284. },
  285. // 设置分页数据
  286. setPaginations() {
  287. // 分页属性
  288. let that = this;
  289. that.pageination.total = that.recordsTotal;
  290. // 默认分页
  291. that.tableData = that.allTableData.filter((item, index) => {
  292. return index < that.pageination.pageItem;
  293. });
  294. },
  295. // 每页显示数量
  296. handleSizeChange() {
  297. let that = this;
  298. that.tableData = that.allTableData.filter((item, index) => {
  299. return index < that.pageination.pageItem;
  300. });
  301. that.draw = that.pageination.pageItem;
  302. that.getTableQuery();
  303. },
  304. // 翻页
  305. pageChange(pageIndex) {
  306. let that = this;
  307. // 获取当前页
  308. let index = that.pageination.pageItem * (pageIndex - 1);
  309. // 数据总数
  310. let nums = that.pageination.pageItem * pageIndex;
  311. // 容器
  312. let tables = [];
  313. for (var i = index; i < nums; i++) {
  314. if (that.allTableData[i]) {
  315. tables.push(that.allTableData[i])
  316. }
  317. this.tableData = tables;
  318. }
  319. that.start = index * that.draw;
  320. that.getTableQuery();
  321. },
  322. // 自动排序
  323. sortChange(params) {
  324. console.log(params)
  325. },
  326. // 过滤时间
  327. filterFmtDate(value, row, column) {
  328. let that = this;
  329. return globalfmtDate(column, 11);
  330. },
  331. addList() {
  332. this.dialog_state = true;
  333. this.dialog_title = '添加设备';
  334. },
  335. delList() {
  336. // checkNum
  337. if (!this.multipleSelection.length) {
  338. this.$message({
  339. showClose: true,
  340. message: '错了哦,需要先选中至少一条记录',
  341. type: 'error'
  342. });
  343. return false
  344. }
  345. // todo delEquip
  346. },
  347. changeList() {
  348. // checkNum
  349. if (!this.multipleSelection.length) {
  350. this.$message({
  351. showClose: true,
  352. message: '错了哦,需要先选中一条记录',
  353. type: 'error'
  354. });
  355. return false
  356. }
  357. if (this.multipleSelection.length > 1) {
  358. this.$message({
  359. showClose: true,
  360. message: '错了哦,只能选中一条记录',
  361. type: 'error'
  362. });
  363. return false
  364. }
  365. },
  366. // 探测记录
  367. goRecord(row) {
  368. console.log(row);
  369. this.$router.push({path: '/record', query: {row: row}});
  370. },
  371. dialog_cancel() {
  372. let that = this;
  373. that.dialog_state = false;
  374. },
  375. dialog_ok() {
  376. let that = this;
  377. let dialog_type = that.dialog_type;
  378. let name = that.field_name;
  379. let id = that.field_id;
  380. },
  381. },
  382. components: {
  383. dialog_referrer_list
  384. }
  385. }
  386. </script>
  387. <style scoped>
  388. @import "../assets/css/panel.css";
  389. @import "../assets/css/dialog.css";
  390. .tabs ul {
  391. width: 800px;
  392. }
  393. table span {
  394. cursor: pointer;
  395. }
  396. .upload {
  397. width: 100%;
  398. overflow: hidden;
  399. display: block;
  400. margin: 0 auto;
  401. }
  402. .upload h5 {
  403. width: 100%;
  404. overflow: hidden;
  405. display: block;
  406. margin: 0 auto;
  407. color: #6DC1FF;
  408. font-size: 18px;
  409. text-align: left;
  410. font-weight: normal;
  411. }
  412. .uploadContainer {
  413. width: 100%;
  414. overflow: hidden;
  415. display: block;
  416. margin: 0 auto;
  417. background: rgba(27,86,200,0.14);
  418. border: 1px solid #005EA2;
  419. border-radius: 0;
  420. margin-top: 11px;
  421. padding: 10px 0;
  422. }
  423. /deep/ .el-upload {
  424. float: left;
  425. margin-left: 27px;
  426. }
  427. /deep/ .el-upload-list {
  428. width: 200px;
  429. float: left;
  430. }
  431. </style>