projectItemForm.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <template>
  2. <div class="hui-flex hui-dialog">
  3. <div class="hui-flex-box hui-dialog-content">
  4. <el-form ref="projectItemForm" label-position="top" :model="projectItemForm">
  5. <el-form-item label="楼宇名称" prop="name" :rules="[{required: true, message: '请输入楼宇名称'}]">
  6. <el-input type="text" v-model="projectItemForm.name" placeholder="请输入楼宇名称"></el-input>
  7. </el-form-item>
  8. <el-form-item label="建筑总面积(m²)" prop="area" :rules="[{required: true, message: '请输入建筑总面积'}]">
  9. <el-input type="number" v-model="projectItemForm.area" placeholder="请输入建筑总面积m²"></el-input>
  10. </el-form-item>
  11. <el-form-item label="具体位置">
  12. <el-input type="text" v-model="projectItemForm.address" placeholder="请输入具体位置">
  13. </el-input>
  14. </el-form-item>
  15. <el-form-item label="产权证书/不动产权证号">
  16. <el-input type="text" v-model="projectItemForm.propertyCertificateNumber"
  17. placeholder="请输入产权证书/不动产权证号">
  18. </el-input>
  19. </el-form-item>
  20. <el-form-item label="楼宇图片" class="hui-textarea">
  21. <upload ref="upload" :list="responsibility" type="insert"></upload>
  22. </el-form-item>
  23. <el-form-item label="楼宇标签" class="hui-textarea">
  24. <tag ref="tag" type="insert" :tagType="2"
  25. :tagActive="projectItemForm.tagIds ? projectItemForm.tagIds.split(',') : []">
  26. </tag>
  27. </el-form-item>
  28. </el-form>
  29. </div>
  30. <div class="hui-dialog-submit">
  31. <el-button size="medium" @click="$emit('callback')">取 消</el-button>
  32. <el-button size="medium" type="primary" @click="submit">保 存</el-button>
  33. </div>
  34. </div>
  35. </template>
  36. <script>
  37. import {
  38. insertProjectItem,
  39. getProjectItemDetailById,
  40. updateProjectItem
  41. } from '@/httpApi/work'
  42. import upload from '@/components/common/upload'
  43. import tag from '@/components/common/tag'
  44. export default {
  45. props: ['isUpdate', 'detailId'],
  46. data() {
  47. return {
  48. projectItemForm: {
  49. name: '', //楼宇名称
  50. area: '',
  51. address: '',
  52. propertyCertificateNumber: '',
  53. picture: '',
  54. tagIds: ''
  55. },
  56. specific: '',
  57. responsibility: []
  58. }
  59. },
  60. created() {
  61. this.projectItemForm['projectId'] = this.$store.getters.project.id;
  62. if (this.isUpdate) {
  63. getProjectItemDetailById(this.detailId).then(res => {
  64. if (res.state) {
  65. this.projectItemForm = res.data;
  66. if (this.projectItemForm.picture) this.responsibility = JSON.parse(this.projectItemForm
  67. .picture);
  68. }
  69. })
  70. }
  71. },
  72. methods: {
  73. submit() {
  74. this.$refs.projectItemForm.validate((valid) => {
  75. if (valid) {
  76. let postData = JSON.parse(JSON.stringify(this.projectItemForm));
  77. postData.data = JSON.stringify({
  78. specific: this.specific
  79. });
  80. postData['picture'] = JSON.stringify(this.$refs.upload.fileList);
  81. postData['tagIds'] = this.$refs.tag.tagIds();
  82. if (this.isUpdate) {
  83. updateProjectItem(postData).then(this.successFunc);
  84. } else {
  85. insertProjectItem(postData).then(this.successFunc);
  86. }
  87. } else {
  88. return false;
  89. }
  90. });
  91. },
  92. successFunc(res) {
  93. if (res.state) {
  94. this.$message.success('操作成功');
  95. this.$emit('callback', 'init');
  96. }
  97. }
  98. },
  99. components: {
  100. upload,
  101. tag
  102. },
  103. }
  104. </script>
  105. <style lang="scss"></style>