CheckIed.vue 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <template>
  2. <div>
  3. <el-dialog v-model="dialogVisible" draggable title="选择ied" width="30%" @close="sureclose" :close-on-click-modal="false">
  4. <el-tree :data="treeList" :props="treeProps" @check-change="handleNodeClick" show-checkbox
  5. style="height: 300px;overflow-y: auto;" />
  6. <template #footer>
  7. <span class="dialog-footer">
  8. <el-button @click="cleanBox">取消</el-button>
  9. <el-button type="primary" @click="sureArr">
  10. 确认
  11. </el-button>
  12. </span>
  13. </template>
  14. </el-dialog>
  15. </div>
  16. </template>
  17. <script>
  18. import { ref, onMounted, watch, onBeforeUnmount, toRefs } from 'vue';
  19. import scd from '@/api/scd';
  20. export default {
  21. props: {
  22. iedModal: {
  23. type: Boolean,
  24. required: true
  25. },
  26. loadScdId: {
  27. type: Number || String,
  28. required: true
  29. }
  30. },
  31. setup(props, { emit }) {
  32. let dialogVisible = ref(false)
  33. let resultId = ref(0)
  34. let treeList = ref([])
  35. let checkArr = ref([])
  36. let treeProps = ref({
  37. label: "ied_name",
  38. id: "area_id",
  39. })
  40. watch(() => props.loadScdId, (newVal) => {
  41. resultId.value = newVal
  42. })
  43. function reload() {
  44. dialogVisible.value = props.iedModal
  45. resultId.value = props.loadScdId
  46. scd.scdAllIed({ scd_id: resultId.value - 0 }).then(res => {
  47. treeList.value = res.data
  48. })
  49. }
  50. function modalClose() {
  51. dialogVisible.value = false
  52. emit("iedBack", dialogVisible.value)
  53. }
  54. function modalSure() {
  55. emit("iedArrBack", checkArr.value);
  56. dialogVisible.value = false
  57. emit("iedBack", dialogVisible.value)
  58. }
  59. function handleNodeClick(e) {
  60. const existingIndex = checkArr.value.findIndex(item => item.id === e.id);
  61. if (existingIndex === -1) {
  62. // 如果 e.id 不在 checkArr 中,则将 e 添加到 checkArr
  63. checkArr.value.push(e);
  64. } else {
  65. // 如果 e.id 已经在 checkArr 中,则从 checkArr 中删除
  66. checkArr.value.splice(existingIndex, 1);
  67. }
  68. }
  69. onMounted(() => {
  70. reload()
  71. })
  72. return {
  73. reload,
  74. dialogVisible,
  75. sureclose: modalClose,
  76. cleanBox: modalClose,
  77. sureArr: modalSure,
  78. treeList,
  79. treeProps,
  80. handleNodeClick,
  81. checkArr,
  82. }
  83. }
  84. }
  85. </script>
  86. <style lang="scss" scoped></style>