faultdevice.vue 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <template>
  2. <div class="mod-demo__faultdevice">
  3. <el-form :inline="true" :model="state.dataForm" @keyup.enter="state.getDataList()">
  4. <el-form-item>
  5. <el-input v-model="state.dataForm.deviceName" placeholder="设备名称" clearable></el-input>
  6. </el-form-item>
  7. <el-form-item>
  8. <el-button @click="state.getDataList()">查询</el-button>
  9. </el-form-item>
  10. <el-form-item>
  11. <el-button v-if="state.hasPermission('emergency:faultdevice:save')" type="primary" @click="addOrUpdateHandle()">新增</el-button>
  12. </el-form-item>
  13. <el-form-item>
  14. <el-button v-if="state.hasPermission('emergency:faultdevice:delete')" type="danger" @click="state.deleteHandle()">删除</el-button>
  15. </el-form-item>
  16. <!-- 审阅 -->
  17. <el-form-item>
  18. <el-button v-if="state.hasPermission('emergency:faultdevice:review')" type="danger" @click="reviewHandle()">审阅</el-button>
  19. </el-form-item>
  20. <el-form-item>
  21. <el-button v-if="state.hasPermission('emergency:faultdevice:export')" type="info" @click="state.exportHandle()">导出</el-button>
  22. </el-form-item>
  23. </el-form>
  24. <el-table v-loading="state.dataListLoading" :data="state.dataList" border @selection-change="state.dataListSelectionChangeHandle" style="width: 100%">
  25. <el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
  26. <el-table-column prop="id" label="记录ID" header-align="center" align="center"></el-table-column>
  27. <el-table-column prop="deviceName" label="设备名称" header-align="center" align="center"></el-table-column>
  28. <el-table-column prop="faultReason" label="故障原因描述" header-align="center" align="center"></el-table-column>
  29. <el-table-column prop="faultTime" label="故障发生时间" header-align="center" align="center"></el-table-column>
  30. <el-table-column prop="repairCompleteTime" label="维修完成时间" header-align="center" align="center"></el-table-column>
  31. <el-table-column prop="status" label="状态" header-align="center" align="center">
  32. <template v-slot="scope">
  33. {{ state.getDictLabel("failureDeviceStatus", scope.row.status) }}
  34. </template>
  35. </el-table-column>
  36. <el-table-column prop="creator" label="创建人" header-align="center" align="center"></el-table-column>
  37. <el-table-column prop="createDate" label="创建时间" header-align="center" align="center"></el-table-column>
  38. <el-table-column prop="updater" label="更新人" header-align="center" align="center"></el-table-column>
  39. <el-table-column prop="updateDate" label="更新时间" header-align="center" align="center"></el-table-column>
  40. <el-table-column prop="remark" label="备注" header-align="center" align="center"></el-table-column>
  41. <el-table-column label="操作" fixed="right" header-align="center" align="center" width="180">
  42. <template v-slot="scope">
  43. <el-button v-if="state.hasPermission('emergency:faultdevice:update')" type="primary" link @click="addOrUpdateHandle(scope.row.id)">修改</el-button>
  44. <el-button v-if="state.hasPermission('emergency:faultdevice:delete')" type="primary" link @click="state.deleteHandle(scope.row.id)">删除</el-button>
  45. <el-button v-if="state.hasPermission('emergency:faultdevice:review')" type="primary" link @click="reviewHandle(scope.row.id)">审阅</el-button>
  46. </template>
  47. </el-table-column>
  48. </el-table>
  49. <el-pagination :current-page="state.page" :page-sizes="[10, 20, 50, 100]" :page-size="state.limit" :total="state.total" layout="total, sizes, prev, pager, next, jumper" @size-change="state.pageSizeChangeHandle" @current-change="state.pageCurrentChangeHandle"> </el-pagination>
  50. <!-- 弹窗, 新增 / 修改 -->
  51. <add-or-update ref="addOrUpdateRef" @refreshDataList="state.getDataList">确定</add-or-update>
  52. </div>
  53. </template>
  54. <script lang="ts" setup>
  55. import useView from "@/hooks/useView";
  56. import { reactive, ref, toRefs } from "vue";
  57. import baseService from "@/service/baseService";
  58. import { ElMessage, ElMessageBox } from "element-plus";
  59. import AddOrUpdate from "./faultdevice-add-or-update.vue";
  60. const view = reactive({
  61. deleteIsBatch: true,
  62. getDataListURL: "/emergency/faultdevice/page",
  63. getDataListIsPage: true,
  64. exportURL: "/emergency/faultdevice/export",
  65. deleteURL: "/emergency/faultdevice"
  66. });
  67. const state = reactive({ ...useView(view), ...toRefs(view) });
  68. const addOrUpdateRef = ref();
  69. const addOrUpdateHandle = (id?: number) => {
  70. addOrUpdateRef.value.init(id);
  71. };
  72. // 审阅
  73. const reviewHandle = (id?: string) => {
  74. if (!id && state.dataListSelections && state.dataListSelections.length <= 0) {
  75. return ElMessage({
  76. message: "请选择操作项",
  77. type: "warning",
  78. duration: 500
  79. });
  80. }
  81. const reviewData = id
  82. ? { id: Number(id)}
  83. : (state.dataListSelections || []).map((item: IObject) => {return { id: item.id};});
  84. ElMessageBox.confirm("确定进行[审阅]操作?", "提示", {
  85. confirmButtonText: "确定",
  86. cancelButtonText: "取消",
  87. type: "warning"
  88. })
  89. .then(() => {
  90. baseService.put("/emergency/schedule/review", reviewData).then((res) => {
  91. ElMessage.success({
  92. message: "审阅成功",
  93. duration: 500,
  94. onClose: () => {
  95. state.getDataList();
  96. }
  97. });
  98. });
  99. })
  100. .catch(() => {
  101. //
  102. });
  103. };
  104. </script>