index.vue 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. <template>
  2. <div class="app-container">
  3. <!-- 搜索 -->
  4. <el-form inline label-width="100px" size="mini">
  5. <el-form-item label="设备型号:">
  6. <el-input v-model="form.clientType" placeholder="请输入设备型号" />
  7. </el-form-item>
  8. <el-form-item label="设备类型:">
  9. <el-select v-model="form.deviceType" placeholder="请选择设备类型">
  10. <el-option v-for="item in deviceTypeOptions" :key="item.value" :label="item.label" :value="item.value" />
  11. </el-select>
  12. </el-form-item>
  13. <el-form-item label="当前状态:">
  14. <el-select v-model="form.status" placeholder="请选择当前状态">
  15. <el-option v-for="item in statusOptions" :key="item.value" :label="item.label" :value="item.value" />
  16. </el-select>
  17. </el-form-item>
  18. <el-form-item label="创建时间:">
  19. <el-date-picker
  20. v-model="createTime"
  21. type="datetimerange"
  22. start-placeholder="开始日期"
  23. end-placeholder="结束日期"
  24. value-format="yyyy-MM-dd HH:mm:ss"
  25. />
  26. </el-form-item>
  27. <el-form-item label="激活时间:">
  28. <el-date-picker
  29. v-model="updateTime"
  30. type="datetimerange"
  31. start-placeholder="开始日期"
  32. end-placeholder="结束日期"
  33. value-format="yyyy-MM-dd HH:mm:ss"
  34. />
  35. </el-form-item>
  36. <el-form-item>
  37. <el-button icon="el-icon-search" type="primary" @click="getSearch">搜索</el-button>
  38. <el-button icon="el-icon-refresh" @click="getRefresh">重置</el-button>
  39. <el-button icon="el-icon-plus" type="primary" plain @click="dialogVisible = true">新增</el-button>
  40. <el-button icon="el-icon-download" type="primary" @click="getDownLoadNo">导出设备号</el-button>
  41. <el-button icon="el-icon-download" type="primary" @click="getDownLoadData">导出数据</el-button>
  42. </el-form-item>
  43. </el-form>
  44. <!-- 列表 -->
  45. <el-table :data="tableData" v-loading="loading">
  46. <el-table-column prop="id" label="设备号" align="center" />
  47. <el-table-column prop="deviceMac" label="设备标识" align="center" />
  48. <el-table-column prop="clientType" label="设备型号" align="center" />
  49. <el-table-column prop="type" label="设备类型" align="center" />
  50. <el-table-column prop="createTimeStr" label="创建时间" align="center" />
  51. <el-table-column prop="updateTimeStr" label="激活时间" align="center" />
  52. <el-table-column prop="statusStr" label="当前状态" align="center" />
  53. </el-table>
  54. <pagination
  55. v-show="total>0"
  56. :total="total"
  57. :page.sync="form.pageIndex"
  58. :limit.sync="form.pageSize"
  59. @pagination="getList"
  60. />
  61. <!-- 弹窗 -->
  62. <el-dialog title="新增" :visible.sync="dialogVisible" width="500px">
  63. <el-form label-width="100px">
  64. <el-form-item label="设备数量:">
  65. <el-input v-model="num" placeholder="请输入设备数量"></el-input>
  66. </el-form-item>
  67. </el-form>
  68. <div slot="footer">
  69. <el-button @click="dialogVisible = false">取消</el-button>
  70. <el-button type="primary" @click="getSubmit">确定</el-button>
  71. </div>
  72. </el-dialog>
  73. </div>
  74. </template>
  75. <script>
  76. import { getYxwPage, getYxwAdd } from "@/api/device/yxw";
  77. export default {
  78. data() {
  79. return {
  80. // 遮罩层
  81. loading: true,
  82. // 当前状态列表
  83. statusOptions: [
  84. {
  85. value: 1,
  86. label: "未使用",
  87. },
  88. {
  89. value: 4,
  90. label: "已使用",
  91. },
  92. ],
  93. // 设备类型
  94. deviceTypeOptions: [
  95. {
  96. value: 1,
  97. label: "蓝牙",
  98. },
  99. {
  100. value: 2,
  101. label: "WiFi/蓝牙",
  102. },
  103. {
  104. value: 3,
  105. label: "传统蓝牙",
  106. },
  107. {
  108. value: 4,
  109. label: "4G",
  110. },
  111. ],
  112. // 表单
  113. form: {
  114. pageIndex: 1,
  115. pageSize: 10,
  116. },
  117. // 创建时间
  118. createTime: [],
  119. // 更新时间
  120. updateTime: [],
  121. // 总数
  122. total: 0,
  123. // 列表
  124. tableData: [],
  125. // 弹窗
  126. dialogVisible: false,
  127. // 新增设备数量
  128. num: "",
  129. };
  130. },
  131. watch: {
  132. createTime(val) {
  133. (this.form.startCreateTime = val[0]), (this.form.endCreateTime = val[1]);
  134. },
  135. updateTime(val) {
  136. (this.form.startUpdateTime = val[0]), (this.form.endUpdateTime = val[1]);
  137. },
  138. },
  139. mounted() {
  140. this.getList();
  141. },
  142. methods: {
  143. // 搜索
  144. getSearch() {
  145. this.form.pageIndex = 1;
  146. this.getList();
  147. },
  148. // 重置
  149. getRefresh() {
  150. this.form = {
  151. pageIndex: 1,
  152. pageSize: 10,
  153. };
  154. this.createTime = this.updateTime = [];
  155. this.getList();
  156. },
  157. // 分页
  158. getList() {
  159. this.loading = true;
  160. getYxwPage(this.form).then((res) => {
  161. if (res.code === 0) {
  162. this.tableData = res.data.records;
  163. this.total = res.data.total;
  164. this.loading = false;
  165. }
  166. });
  167. },
  168. // 新建设备号
  169. getSubmit() {
  170. getYxwAdd({ num: this.num }).then((res) => {
  171. if (res.code === 0) {
  172. this.$message.success("新增成功!");
  173. this.dialogVisible = false;
  174. this.getList();
  175. }
  176. });
  177. },
  178. // 导出设备号
  179. getDownLoadNo() {
  180. this.download(
  181. `/device/yunxiaowei/exportDeviceNo`,
  182. this.form,
  183. `云小微设备号.xlsx`
  184. );
  185. },
  186. // 导出数据
  187. getDownLoadData() {
  188. this.download(
  189. `/device/yunxiaowei/exportDeviceData`,
  190. this.form,
  191. `云小微设备数据.xlsx`
  192. );
  193. },
  194. },
  195. };
  196. </script>