edit.vue 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <template>
  2. <div class="hui-flex hui-dialog">
  3. <div class="hui-flex-box hui-dialog-content">
  4. <project-item ref="projectItem"></project-item>
  5. <el-form ref="houseForm" label-position="top" :model="houseForm">
  6. <el-form-item label="房源名称" prop="name" :rules="[{required: true, message: '请输入房源名称'}]">
  7. <el-input type="text" v-model="houseForm.name" placeholder="请输入房源名称"></el-input>
  8. </el-form-item>
  9. <el-form-item label="房间号" prop="roomNumber" :rules="[{required: true, message: '请输入房间号'}]">
  10. <el-input type="text" v-model="houseForm.roomNumber" placeholder="请输入房间号"></el-input>
  11. </el-form-item>
  12. <el-form-item label="房源面积(m²)" prop="area" :rules="[{required: true, message: '请输入房源面积(m²)'}]">
  13. <el-input type="number" v-model="houseForm.area" placeholder="请输入房源面积(m²)"></el-input>
  14. </el-form-item>
  15. <el-form-item label="是否装修">
  16. <el-radio v-model="houseForm.decoration" :label="0">未装修</el-radio>
  17. <el-radio v-model="houseForm.decoration" :label="1">已装修</el-radio>
  18. </el-form-item>
  19. <el-form-item label="启用日期">
  20. <el-date-picker v-model="houseForm.invocationDate" type="date" placeholder="其选择启用日期">
  21. </el-date-picker>
  22. </el-form-item>
  23. <el-form-item label="是否公开房源">
  24. <el-radio v-model="houseForm.openState" :label="0">不公开</el-radio>
  25. <el-radio v-model="houseForm.openState" :label="1">公开</el-radio>
  26. </el-form-item>
  27. <el-form-item label="产权证书/不动产权证号">
  28. <el-input type="text" v-model="houseForm.propertyCertificateNumber" placeholder="请输入产权证书/不动产权证号">
  29. </el-input>
  30. </el-form-item>
  31. <el-form-item label="招商状态">
  32. <el-radio v-model="houseForm.investmentState" :label="0">未招商</el-radio>
  33. <el-radio v-model="houseForm.investmentState" :label="1">已招商</el-radio>
  34. </el-form-item>
  35. <el-form-item label="房源配图" class="hui-textarea">
  36. <upload ref="upload" :list="responsibility" type="insert"></upload>
  37. </el-form-item>
  38. <el-form-item label="房源标签" class="hui-textarea">
  39. <tag ref="tag" type="insert" :tagType="3"
  40. :tagActive="houseForm.tagIds ? houseForm.tagIds.split(',') : []">
  41. </tag>
  42. </el-form-item>
  43. </el-form>
  44. </div>
  45. <div class="hui-dialog-submit">
  46. <el-button size="medium" @click="$emit('callback')">取 消</el-button>
  47. <el-button size="medium" type="primary" @click="submit">保 存</el-button>
  48. </div>
  49. </div>
  50. </template>
  51. <script>
  52. import {
  53. insertHouse,
  54. getHouseDetailById,
  55. updateHouse
  56. } from '@/httpApi/space'
  57. import upload from '@/components/common/upload'
  58. import city from '@/components/common/city'
  59. import tag from '@/components/common/tag'
  60. import projectItem from '@/components/common/projectItem'
  61. export default {
  62. props: ['isUpdate', 'detailId'],
  63. data() {
  64. return {
  65. houseForm: {
  66. name: '', //房源名称
  67. roomNumber: '',
  68. roomState: '', //房源状态
  69. roomType: '', //房源类型
  70. area: '',
  71. decoration: 0,
  72. investmentState: 0,
  73. invocationDate: '',
  74. openState: 0,
  75. propertyCertificateNumber: '',
  76. picture: '',
  77. tagIds: '',
  78. data: '',
  79. projectId: '',
  80. projectItemId: '',
  81. projectItemTargetId: ''
  82. },
  83. specific: '',
  84. responsibility: []
  85. }
  86. },
  87. created() {
  88. this.houseForm['projectId'] = this.$store.getters.project.id;
  89. if (this.isUpdate) {
  90. getHouseDetailById(this.detailId).then(res => {
  91. if (res.state) {
  92. this.houseForm = res.data;
  93. if (this.houseForm.picture) this.responsibility = JSON.parse(this.houseForm.picture);
  94. if (this.houseForm.data) {
  95. let data = JSON.parse(this.houseForm.data);
  96. this.specific = data.specific;
  97. }
  98. }
  99. })
  100. }
  101. },
  102. methods: {
  103. submit() {
  104. this.$refs.houseForm.validate((valid) => {
  105. if (valid) {
  106. let postData = JSON.parse(JSON.stringify(this.houseForm));
  107. postData.data = JSON.stringify({
  108. specific: this.specific
  109. });
  110. postData['picture'] = JSON.stringify(this.$refs.upload.fileList);
  111. postData['tagIds'] = this.$refs.tag.tagIds();
  112. if (this.isUpdate) {
  113. updateHouse(postData).then(this.successFunc);
  114. } else {
  115. insertHouse(postData).then(this.successFunc);
  116. }
  117. } else {
  118. return false;
  119. }
  120. });
  121. },
  122. successFunc(res) {
  123. if (res.state) {
  124. this.$message.success('操作成功');
  125. this.$emit('callback', 'init');
  126. }
  127. }
  128. },
  129. components: {
  130. city,
  131. upload,
  132. tag,
  133. projectItem
  134. },
  135. }
  136. </script>
  137. <style lang="scss"></style>