DevMgr.vue 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432
  1. <template>
  2. <div>
  3. <el-row>
  4. <el-col :span="24" class="first-row">
  5. <div class="tag">设备管理</div>
  6. <span class="right-btn">
  7. <el-upload class="upload-demo" action="" :http-request="uploadXLS" :show-file-list="false">
  8. <el-button type="primary" size="small">表格导入</el-button>
  9. </el-upload>
  10. <el-link type="primary" href="http://baibai.natapp1.cc/HotWaters/download/模板.xls">模板下载</el-link>
  11. </span>
  12. </el-col>
  13. </el-row>
  14. <el-row>
  15. <el-col :span="24" class="second-row">
  16. <el-form :inline="true" class="demo-form-inline">
  17. <el-form-item label="水表ID:" class="shuibiaoId">
  18. <el-input type="text" v-model="query_shuibiaoId" placeholder="请输入水表ID"
  19. @input="idInputChange($event)"></el-input>
  20. </el-form-item>
  21. <el-form-item>
  22. <el-button type="primary" @click="searchBtnSubmit">查找</el-button>
  23. </el-form-item>
  24. <el-form-item label="楼栋号:" class="loudonghao">
  25. <el-select v-model="form_select.value" @change="selectGet(form_select.value)">
  26. <el-option v-for="item in form_select.builds" :key="item.value" :label="item.label"
  27. :value="item.value">
  28. </el-option>
  29. </el-select>
  30. </el-form-item>
  31. </el-form>
  32. <div class="btn-add">
  33. <el-button type="primary" icon="el-icon-add">添加</el-button>
  34. </div>
  35. </el-col>
  36. </el-row>
  37. <hr style="background-color: #CCCCCC;height: 1px;border: 0;">
  38. <el-row>
  39. <el-col :span="24" class="third-row">
  40. <el-table ref="multipleTable" :data="tableData" tooltip-effect="dark" style="width: 100%"
  41. @selection-change="handleSelectionChange" highlight-current-row>
  42. <el-table-column type="selection" align="center" width="105"></el-table-column>
  43. <el-table-column label="水表ID" width="260">
  44. <template slot-scope="scope">{{ scope.row.user_id }}</template>
  45. </el-table-column>
  46. <el-table-column prop="build" label="楼栋号" align="center" width="400"></el-table-column>
  47. <el-table-column prop="dom" label="宿舍号" show-overflow-tooltip></el-table-column>
  48. <el-table-column label="操作" align="center" width="80">
  49. <el-button type="text" class="del-btn" slot-scope="scope"
  50. @click="handleDelete(scope.$index, scope.row)">删除
  51. </el-button>
  52. </el-table-column>
  53. <el-table-column width="130">
  54. <el-button type="text" slot-scope="scope" @click="handleEdit(scope.$index, scope.row)">编辑
  55. </el-button>
  56. </el-table-column>
  57. </el-table>
  58. <div style="margin-top: 20px" class="table-footer">
  59. <div class="pages">
  60. <el-pagination layout="prev, pager, next" :page-size="8" :total="rows_total"
  61. @current-change="handleCurrentChange"></el-pagination>
  62. </div>
  63. <div class="export-table">
  64. <el-button type="primary" size="small" @click="handleDownloadTable">表格导出</el-button>
  65. </div>
  66. </div>
  67. </el-col>
  68. </el-row>
  69. <el-row>
  70. <el-col :span="24" class="forth-row">
  71. <!-- 编辑对话框 -->
  72. <el-dialog title="编辑" :visible.sync="editdialogFormVisible" width="500px" top="0vh" class="my-dialog"
  73. :close-on-click-modal="false" :close-on-press-escape="false">
  74. <hr
  75. style="width: 100%; position: absolute; top: 60px; left: 0px;background-color: #CCCCCC;height: 1px;border: 0;">
  76. <el-form :model="form">
  77. <el-form-item label="水表ID:" :label-width="formLabelWidth">
  78. <el-input v-model="form.user_id" autocomplete="off" maxlength="13"></el-input>
  79. </el-form-item>
  80. <el-form-item label="楼栋号:" :label-width="formLabelWidth">
  81. <el-input v-model="form.build" autocomplete="off" maxlength="4"></el-input>
  82. </el-form-item>
  83. <el-form-item label="宿舍号:" :label-width="formLabelWidth">
  84. <el-input v-model="form.dom" autocomplete="off" maxlength="6"></el-input>
  85. </el-form-item>
  86. </el-form>
  87. <div slot="footer" class="dialog-footer">
  88. <el-button @click="editdialogFormVisible = false">取 消</el-button>
  89. <el-button type="primary" @click="handleEditRow">确 定</el-button>
  90. </div>
  91. </el-dialog>
  92. <!-- 删除对话框 -->
  93. <el-dialog :visible.sync="delDialogVisible" :close-on-click-modal="false" :close-on-press-escape="false"
  94. width="500px" center top="0vh" class="my-dialog">
  95. <div class="box-icon"></div>
  96. <span class="del-msg">确定删除该水表信息吗?</span>
  97. <span slot="footer" class="dialog-footer">
  98. <el-button @click="delDialogVisible = false">取 消</el-button>
  99. <el-button type="primary" @click="handleDelRow">确 定</el-button>
  100. </span>
  101. </el-dialog>
  102. </el-col>
  103. </el-row>
  104. </div>
  105. </template>
  106. <script>
  107. export default {
  108. data() {
  109. return {
  110. // fileList: [],
  111. query_shuibiaoId: '', // 需要查找的水表id
  112. editdialogFormVisible: false, // 控制编辑框的显示隐藏
  113. delDialogVisible: false, // 控制删除框的显示隐藏
  114. delRowId: 0, // 删除行的id
  115. currentPage: 1, // 当前所在页码
  116. pageRows: 8, // 每页显示的行数
  117. form: { // 编辑框的数据绑定
  118. user_id: '',
  119. build: '',
  120. dom: '',
  121. id: 0
  122. },
  123. formLabelWidth: '120px', // 表单的宽度
  124. form_select: { // 下拉列表的数据绑定
  125. builds: [{
  126. value: 0,
  127. label: '全部'
  128. }],
  129. value: 0,
  130. label: ''
  131. },
  132. tableData: [], // 表格需要显示的数据
  133. rows_total: 0, // 总记录数
  134. // multipleSelection: [] // 多选后,选择的所有行的数据数组
  135. }
  136. },
  137. created() {
  138. let params = {
  139. page: this.currentPage,
  140. rows: this.pageRows
  141. }
  142. // 更新表格
  143. this.updateTable('/HotWaters/waterlist.action', params)
  144. //
  145. this.getBuilds('/HotWaters/watergetBuilds.action')
  146. },
  147. methods: {
  148. uploadXLS(param) {
  149. console.log(param);
  150. const formData = new FormData()
  151. formData.append('file', param.file)
  152. const url = 'https://jtishfw.ncjti.edu.cn/jxch-smartmp/api/HotWaters/upload'
  153. this.$axios.post(url, formData).then(data => {
  154. this.$message.success('导入成功!')
  155. }).catch(response => {
  156. this.$message.error('导入成功!')
  157. })
  158. },
  159. /**
  160. * 获取楼栋号,填充下拉列表
  161. */
  162. getBuilds(url) {
  163. var _this = this
  164. this.$axios.get('/api' + url)
  165. .then(res => {
  166. // console.log(res.data);
  167. if (typeof(res.data.builds) != 'undefined' && res.data.builds != '') {
  168. this.form_select.builds = [{
  169. value: 0,
  170. label: '全部'
  171. }]
  172. for (var i = 0; i < res.data.builds.length; i++) {
  173. let tmp = {
  174. value: i + 1,
  175. label: res.data.builds[i]
  176. }
  177. this.form_select.builds.push(tmp)
  178. }
  179. } else {
  180. _this.$message.success('暂无数据!');
  181. }
  182. })
  183. .catch(err => {
  184. // console.log(err);
  185. _this.$message.error('请求异常: ' + err);
  186. })
  187. },
  188. /**
  189. * 获取数据,填充表格变量
  190. */
  191. updateTable(url, params) {
  192. var _this = this
  193. _this.tableData = []
  194. _this.rows_total = 0
  195. this.$axios.get('/api' + url, {
  196. params: params
  197. })
  198. .then(res => {
  199. // console.log(res.data);
  200. if (typeof(res.data.rows) != 'undefined' && res.data.rows != '') {
  201. // _this.$message.success('数据加载成功!');
  202. _this.tableData = res.data.rows
  203. _this.rows_total = res.data.total
  204. } else {
  205. _this.$message.success('暂无数据!');
  206. }
  207. })
  208. .catch(err => {
  209. // console.log(err);
  210. _this.$message.error('请求异常: ' + err);
  211. })
  212. },
  213. /**
  214. * 获取下拉列表选择的id,并刷新表格
  215. * @param {Object} vId
  216. */
  217. selectGet(vId) {
  218. // console.log(vId);
  219. let obj = {};
  220. obj = this.form_select.builds.find((item) => {
  221. return item.value === vId; //筛选出匹配数据
  222. });
  223. // console.log(obj);
  224. this.form_select.value = obj.value
  225. this.form_select.label = obj.label
  226. if (this.form_select.value == 0) {
  227. let params = {
  228. page: this.currentPage,
  229. rows: this.pageRows
  230. }
  231. this.updateTable('/HotWaters/waterlist.action', params)
  232. } else {
  233. let params = {
  234. build: this.form_select.label,
  235. page: 1,
  236. rows: 8
  237. }
  238. // 查询该栋的信息
  239. this.updateTable('/HotWaters/waterquerylist.action', params)
  240. }
  241. },
  242. /**
  243. * 改变页码
  244. * @param {Object} val
  245. */
  246. handleCurrentChange(val) {
  247. this.currentPage = val
  248. if (this.form_select.value == 0) {
  249. let params = {
  250. page: this.currentPage,
  251. rows: this.pageRows
  252. }
  253. this.updateTable('/HotWaters/waterlist.action', params)
  254. } else {
  255. let params = {
  256. build: this.form_select.label,
  257. page: this.currentPage,
  258. rows: 8
  259. }
  260. // 查询该栋的信息
  261. this.updateTable('/HotWaters/waterquerylist.action', params)
  262. }
  263. },
  264. /**
  265. * 导出表格
  266. */
  267. handleDownloadTable() {
  268. this.$axios.get('/api/HotWaters/watertoExcel.action')
  269. .then(res => {
  270. console.log(res.data.downurl);
  271. if (typeof(res.data.downurl) != 'undefined' && res.data.downurl != '') {
  272. window.open('https://jtishfw.ncjti.edu.cn/jxch-smartmp' + res.data.downurl)
  273. } else {
  274. _this.$message.error('未获取到表格!');
  275. }
  276. })
  277. .catch(err => {
  278. // console.log(err);
  279. _this.$message.error('请求异常: ' + err);
  280. })
  281. },
  282. /**
  283. * 显示删除提示框,并获取对应的id
  284. * @param {Object} index
  285. * @param {Object} row
  286. */
  287. handleDelete(index, row) {
  288. this.delDialogVisible = true
  289. // console.log(index, row);
  290. this.delRowId = row.id
  291. },
  292. /**
  293. * 删除指定的id所在的行
  294. */
  295. handleDelRow() {
  296. var _this = this
  297. this.$axios.get('/api/HotWaters/waterdelBuild.action', {
  298. params: {
  299. id: this.delRowId
  300. }
  301. })
  302. .then(res => {
  303. // console.log(res.data);
  304. if (typeof(res.data.msg) != 'undefined' && res.data.msg != '' && res.data.msg == '删除成功') {
  305. _this.$message.success('数据删除成功!');
  306. let params = {
  307. page: this.currentPage,
  308. rows: this.pageRows
  309. }
  310. this.updateTable('/HotWaters/waterlist.action', params)
  311. } else {
  312. _this.$message.error('数据删除失败!');
  313. }
  314. this.delDialogVisible = false
  315. })
  316. .catch(err => {
  317. // console.log(err);
  318. _this.$message.error('请求异常: ' + err);
  319. })
  320. },
  321. /**
  322. * 显示编辑提示框,并获取对应的id等数据
  323. * @param {Object} index
  324. * @param {Object} row
  325. */
  326. handleEdit(index, row) {
  327. console.log(index, row);
  328. this.form.user_id = row.user_id
  329. this.form.build = row.build
  330. this.form.dom = row.dom
  331. this.form.id = row.id
  332. this.editdialogFormVisible = true
  333. },
  334. /**
  335. * 更新指定的id所在的行
  336. */
  337. handleEditRow() {
  338. var _this = this
  339. this.$axios.get('/api/HotWaters/waterupdateBuild.action', {
  340. params: {
  341. id: this.form.id,
  342. user_id: this.form.user_id,
  343. dom: this.form.dom,
  344. build: this.form.build
  345. }
  346. })
  347. .then(res => {
  348. console.log(res.data);
  349. if (typeof(res.data.msg) != 'undefined' && res.data.msg != '' && res.data.msg == '修改成功') {
  350. _this.$message.success('数据修改成功!');
  351. let params = {
  352. page: this.currentPage,
  353. rows: this.pageRows
  354. }
  355. this.updateTable('/HotWaters/waterlist.action', params)
  356. } else {
  357. _this.$message.error('数据修改失败!');
  358. }
  359. this.editdialogFormVisible = false
  360. })
  361. .catch(err => {
  362. // console.log(err);
  363. _this.$message.error('请求异常: ' + err);
  364. })
  365. },
  366. /**
  367. * 更新输入框
  368. * @param {Object} e
  369. */
  370. idInputChange(e) {
  371. // console.log(e);
  372. this.$forceUpdate()
  373. },
  374. /**
  375. * 根据设备id查找
  376. */
  377. searchBtnSubmit() {
  378. // console.log(this.query_shuibiaoId);
  379. var params = {}
  380. if (this.query_shuibiaoId.trim()) {
  381. // 查询指定水表id的信息
  382. if (this.form_select.value == 0) {
  383. params = {
  384. user_id: this.query_shuibiaoId,
  385. page: 1,
  386. rows: this.pageRows
  387. }
  388. } else {
  389. // 查询指定水表id + 楼栋的信息
  390. params = {
  391. user_id: this.query_shuibiaoId,
  392. build: this.form_select.label,
  393. page: 1,
  394. rows: this.pageRows
  395. }
  396. }
  397. this.updateTable('/HotWaters/waterquerylist.action', params)
  398. this.$message.success('水表id包含:' + this.query_shuibiaoId + ' 查询完成!')
  399. } else {
  400. if (this.form_select.value == 0) {
  401. params = {
  402. page: 1,
  403. rows: this.pageRows
  404. }
  405. this.updateTable('/HotWaters/waterquerylist.action', params)
  406. } else {
  407. params = {
  408. build: this.form_select.label,
  409. page: 1,
  410. rows: this.pageRows
  411. }
  412. this.updateTable('/HotWaters/waterquerylist.action', params)
  413. }
  414. // this.$message.error('请输入水表id 或 选择 楼栋号')
  415. }
  416. },
  417. /**
  418. * 多选数组的获取
  419. * @param {Object} val
  420. */
  421. handleSelectionChange(val) {
  422. // console.log(val);
  423. // this.multipleSelection = val;
  424. }
  425. }
  426. }
  427. </script>
  428. <style scoped>
  429. @import url("DevMgr.css");
  430. </style>