index.vue 6.8 KB

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