projectItem.vue 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. <template>
  2. <el-form :model="formBox" label-position="top">
  3. <el-form-item label="单位工程">
  4. <el-select v-model="formBox.projectItemId" placeholder="请选择单位工程" @change="changeProjectItem">
  5. <el-option v-for="item in projectItemList" :key="item.id" :label="item.name" :value="item.id">
  6. </el-option>
  7. </el-select>
  8. </el-form-item>
  9. <el-form-item label="具体位置">
  10. <el-select v-model="formBox.projectItemTargetId" placeholder="请选择具体位置" @change="changeRoom">
  11. <el-option v-for="item in projectItemTargetList" :key="item.id" :label="item.name" :value="item.id">
  12. </el-option>
  13. </el-select>
  14. </el-form-item>
  15. </el-form>
  16. </template>
  17. <script>
  18. import {
  19. getProjectDetailById,
  20. getProjectItemTargetList,
  21. getRoomList
  22. } from '@/httpApi/space'
  23. export default {
  24. props: ['form', 'room'],
  25. data() {
  26. return {
  27. formBox: {
  28. projectItemId: '',
  29. projectItemTargetId: '',
  30. projectItemTargetRoomId: ''
  31. },
  32. projectItemList: [],
  33. projectItemTargetList: [],
  34. roomList: []
  35. }
  36. },
  37. created() {
  38. if (this.form.projectItemId) this.initData(this.form)
  39. this.init();
  40. },
  41. methods: {
  42. init() {
  43. this.projectItemList = [];
  44. this.projectItemTargetList = [];
  45. getProjectDetailById(this.$store.getters.organization.id, this.$store.getters.project.id).then(res => {
  46. if (res.state) {
  47. this.projectItemList = res.data.projectItemList
  48. }
  49. })
  50. },
  51. changeProjectItem() {
  52. this.formBox.projectItemTargetId = '';
  53. this.projectItemTargetList = [];
  54. this.formBox.projectItemTargetRoomId = '';
  55. this.roomList = [];
  56. getProjectItemTargetList(this.formBox.projectItemId).then(res => {
  57. if (res.state) {
  58. this.projectItemTargetList = res.data;
  59. }
  60. })
  61. },
  62. changeRoom() {
  63. if (this.room) return;
  64. this.formBox.projectItemTargetRoomId = '';
  65. this.roomList = [];
  66. getRoomList(this.formBox.projectItemTargetId).then(res => {
  67. if (res.state) {
  68. this.roomList = res.data;
  69. }
  70. })
  71. },
  72. returnItem() {
  73. return {
  74. projectItem: this.projectItemList.filter(node => node.id === this.formBox.projectItemId)[0] || {},
  75. projectItemTarget: this.projectItemTargetList.filter(node => node.id === this.formBox
  76. .projectItemTargetId)[0] || {},
  77. projectItemTargetRoom: this.roomList.filter(node => node.id === this.formBox.projectItemTargetRoomId)[
  78. 0] || {}
  79. }
  80. },
  81. initData(val) {
  82. if (val.projectItemId) {
  83. this.formBox.projectItemId = val.projectItemId;
  84. if (val.projectItemId) {
  85. getProjectItemTargetList(this.formBox.projectItemId).then(res => {
  86. if (res.state) {
  87. this.formBox.projectItemTargetId = val.projectItemTargetId;
  88. this.projectItemTargetList = res.data;
  89. if (res.data.length === 0) this.formBox.projectItemTargetId = '';
  90. if (val.projectItemTargetId) {
  91. getRoomList(this.formBox.projectItemTargetId).then(res => {
  92. if (res.state) {
  93. this.formBox.projectItemTargetRoomId = val
  94. .projectItemTargetRoomId;
  95. this.roomList = res.data;
  96. if (res.data.length === 0) this.formBox
  97. .projectItemTargetRoomId = '';
  98. }
  99. })
  100. }
  101. }
  102. })
  103. }
  104. }
  105. }
  106. },
  107. watch: {
  108. form(val) {
  109. this.initData(val);
  110. }
  111. },
  112. }
  113. </script>
  114. <style lang="scss">
  115. .project-item-change {
  116. width: 100%;
  117. }
  118. </style>