DeviceView.vue 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. <template>
  2. <PagingTable url="/device" :where="where" ref="table">
  3. <template #filter>
  4. <ElButton :icon="Refresh" @click="table.refresh()"></ElButton>
  5. <ElSelect v-model="online" placeholder="在线状态" clearable @change="updateWhereAndRefresh">
  6. <ElOption v-for="status in onlineStatus" :key="status.id" :label="status.label" :value="status.id" />
  7. </ElSelect>
  8. <ElSelect v-model="canSend" placeholder="发送状态" clearable @change="updateWhereAndRefresh">
  9. <ElOption v-for="status in canSendStatus" :key="status.id" :label="status.label" :value="status.id" />
  10. </ElSelect>
  11. <ElSelect v-model="busy" placeholder="忙碌状态" clearable @change="updateWhereAndRefresh">
  12. <ElOption v-for="status in busyStatus" :key="status.id" :label="status.label" :value="status.id" />
  13. </ElSelect>
  14. </template>
  15. <ElTableColumn prop="id" label="#" width="200" />
  16. <ElTableColumn prop="model" label="型号" />
  17. <ElTableColumn prop="name" label="编号" />
  18. <ElTableColumn prop="online" label="在线" align="center">
  19. <template #default="{ row }">
  20. <ElTag type="success" v-if="row.online">在线</ElTag>
  21. <ElTag type="info" v-else>离线</ElTag>
  22. </template>
  23. </ElTableColumn>
  24. <ElTableColumn prop="canSend" label="可以发送" align="center">
  25. <template #default="{ row }">
  26. <ElTag type="success" v-if="row.canSend">是</ElTag>
  27. <ElTag type="info" v-else>否</ElTag>
  28. </template>
  29. </ElTableColumn>
  30. <ElTableColumn prop="busy" label="忙碌" align="center">
  31. <template #default="{ row }">
  32. <ElTag type="success" v-if="row.busy">忙碌</ElTag>
  33. <ElTag type="info" v-else>空闲</ElTag>
  34. </template>
  35. </ElTableColumn>
  36. <ElTableColumn prop="createdAt" label="创建时间" :formatter="timeFormatter" width="150" />
  37. <ElTableColumn label="操作" align="center" width="100">
  38. <template #default="{ row }">
  39. <ElButton type="danger" size="small" @click="del(row)">删除</ElButton>
  40. </template>
  41. </ElTableColumn>
  42. </PagingTable>
  43. </template>
  44. <script setup>
  45. import { ref } from 'vue'
  46. import PagingTable from '@/components/PagingTable.vue'
  47. import { useTimeFormatter } from '@/utils/formatter'
  48. import { Refresh } from '@vicons/tabler'
  49. import { setupEditDialog } from '@/utils/editDialog'
  50. import { ElMessageBox, ElMessage } from 'element-plus'
  51. import { http } from '@/plugins/http'
  52. const where = ref({})
  53. const timeFormatter = useTimeFormatter()
  54. const table = ref(null)
  55. const model = ref({})
  56. const rules = {
  57. name: [{ required: true, message: '请输入名称', trigger: 'blur' }],
  58. listId: [{ required: true, message: '请选择料子列表', trigger: 'blur' }]
  59. }
  60. const { showEditDialog, onEdit } = setupEditDialog(model)
  61. const online = ref('')
  62. const onlineStatus = [
  63. {
  64. id: '1',
  65. label: '在线'
  66. },
  67. {
  68. id: '0',
  69. label: '离线'
  70. }
  71. ]
  72. const canSend = ref('')
  73. const canSendStatus = [
  74. {
  75. id: '1',
  76. label: '是'
  77. },
  78. {
  79. id: '0',
  80. label: '否'
  81. }
  82. ]
  83. const busy = ref('')
  84. const busyStatus = [
  85. {
  86. id: '1',
  87. label: '忙碌'
  88. },
  89. {
  90. id: '0',
  91. label: '空闲'
  92. }
  93. ]
  94. function updateWhereAndRefresh() {
  95. where.value = {}
  96. if (online.value) {
  97. where.value.online = online.value
  98. }
  99. if (canSend.value) {
  100. where.value.canSend = canSend.value
  101. }
  102. if (busy.value) {
  103. where.value.busy = busy.value
  104. }
  105. }
  106. async function del(row) {
  107. await ElMessageBox.confirm('确定删除吗?', '提示', {
  108. type: 'warning'
  109. })
  110. try {
  111. await http.delete(`/device/${row.id}`)
  112. table.value.refresh()
  113. } catch (e) {
  114. console.error(e)
  115. ElMessage.error(e.message || '删除失败')
  116. }
  117. }
  118. </script>