programme.vue 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. <template>
  2. <el-form ref="form" :model="formData" :rules="formRules" label-width="90px">
  3. <div class="formContent-item_title">物业信息</div>
  4. <el-col :span="12"><el-form-item label="房屋地址:"> xxxx </el-form-item></el-col>
  5. <el-col :span="12"><el-form-item label="房屋编号:"> xxxx </el-form-item></el-col>
  6. <el-col :span="12"><el-form-item label="房屋类型:"> xxxx </el-form-item></el-col>
  7. <el-col :span="12"><el-form-item label="租售类型:"> xxxx </el-form-item></el-col>
  8. <el-col :span="12"><el-form-item label="租售状态:"> xxxx </el-form-item></el-col>
  9. <el-col :span="12"><el-form-item label="建筑面积:"> xxxx </el-form-item></el-col>
  10. <div class="formContent-item_title">招商信息</div>
  11. <el-form-item label="招商标题" prop="title">
  12. <el-input v-model="formData.title" placeholder="请输入招商标题"></el-input>
  13. </el-form-item>
  14. <el-form-item label="月租金额" prop="monthlyRent">
  15. <el-input v-model="formData.monthlyRent" placeholder="请输入月租金额"></el-input>
  16. </el-form-item>
  17. <el-form-item label="出售金额" prop="sell">
  18. <el-input v-model="formData.sell" placeholder="请输入出售金额"></el-input>
  19. </el-form-item>
  20. <el-form-item label="房屋图片" prop="pictureUrl">
  21. <div class="clickUpload">
  22. <div class="clickUpText" v-for="item in fileType" :key="item">
  23. <video v-if="typeVideo(item)" :src="item"></video>
  24. <img v-else class="dataImg" :src="item" />
  25. </div>
  26. <div class="clickUpText">
  27. <div class="addImg" @click="clickFile('uploadImg')"><i class="el-icon-plus ashText"></i></div>
  28. </div>
  29. <el-upload
  30. style="display: none"
  31. :headers="token"
  32. ref="uploadImg"
  33. limit="3"
  34. action="/sc-community/upload/uploadFile"
  35. :on-success="uploadsuccess"
  36. :before-upload="beforeAvatarUpload"
  37. :auto-upload="true"
  38. name="file"
  39. >
  40. </el-upload>
  41. </div>
  42. </el-form-item>
  43. <el-form-item label="房屋视频" prop="videoUrl">
  44. <div class="clickUpload">
  45. <div class="clickUpText" v-for="item in fileType" :key="item">
  46. <video v-if="typeVideo(item)" :src="item"></video>
  47. <img v-else class="dataImg" :src="item" />
  48. </div>
  49. <div class="clickUpText">
  50. <div class="addImg" @click="clickFile('uploadVideo')"><i class="el-icon-plus ashText"></i></div>
  51. </div>
  52. <el-upload
  53. style="display: none"
  54. :headers="token"
  55. ref="uploadVideo"
  56. limit="3"
  57. action="/sc-community/upload/uploadFile"
  58. :on-success="uploadsuccess"
  59. :before-upload="beforeAvatarUpload"
  60. :auto-upload="true"
  61. name="file"
  62. >
  63. </el-upload>
  64. </div>
  65. </el-form-item>
  66. <el-form-item label="招商描述" prop="userId">
  67. <tinymce v-model="formData.description" ref="endit" :height="150" />
  68. </el-form-item>
  69. </el-form>
  70. </template>
  71. <script >
  72. // Tinymce 富文本编辑器
  73. import Tinymce from '@/components/Tinymce';
  74. export default {
  75. components: { Tinymce },
  76. props: ['params'],
  77. data() {
  78. return {
  79. formData: {
  80. houseId: '',
  81. description: '',
  82. monthlyRent: '',
  83. pictureUrl: '',
  84. videoUrl: '',
  85. sell: '',
  86. title: ''
  87. },
  88. findUser: [],
  89. formRules: {
  90. monthlyRent: [this.$valid.inputRequired('月租金额')],
  91. sell: [this.$valid.inputRequired('出售金额')],
  92. title: [this.$valid.inputRequired('招商标题')]
  93. // monthlyRent: [this.$valid.inputRequired('月租金额')],
  94. // monthlyRent: [this.$valid.inputRequired('月租金额')],
  95. }
  96. };
  97. },
  98. methods: {
  99. submit() {
  100. this.$refs.form.validate((valid) => {
  101. if (valid) {
  102. var loading = this.$loading();
  103. this.$http
  104. .post('/sc-community/merchants/edit', this.formData)
  105. .then(({ status, msg }) => {
  106. if (status == 0) {
  107. this.$message.success(msg);
  108. this.params.callback();
  109. this.$emit('close');
  110. } else {
  111. this.$message.error(msg);
  112. }
  113. loading.close();
  114. })
  115. .catch(() => {
  116. loading.close();
  117. });
  118. }
  119. });
  120. },
  121. uploadsuccess(response, file, fileList) {
  122. this.$refs.uploadBox.clearFiles();
  123. if (0 === response.status) {
  124. this.fileType.push(response.data);
  125. }
  126. },
  127. beforeAvatarUpload(file) {
  128. // const isVIDEO = file.type === 'video/mp4';
  129. // if (!isVIDEO) {
  130. // this.$message.error('上传mp4视频!');
  131. // }
  132. // return isVIDEO;
  133. },
  134. typeVideo(str) {
  135. let type = str.slice(str.lastIndexOf('.') + 1, str.length);
  136. let videoType = ['mp4'];
  137. return videoType.includes(type);
  138. },
  139. clickFile(name) {
  140. // this.$refs['uploaduserlogo'].$refs['upload-inner'].handleClick();
  141. this.$refs[name].$children[0].$refs.input.click();
  142. }
  143. },
  144. created() {
  145. // this.params.house.map((item) => {
  146. // this.formData.houseIds.push(item.houseId);
  147. // });
  148. }
  149. };
  150. </script>
  151. <style lang="scss" scoped>
  152. .formContent-item_title {
  153. clear: both;
  154. }
  155. .clickUpload {
  156. display: flex;
  157. .clickUpText {
  158. height: 76px;
  159. width: 76px;
  160. border: 1px solid #e0e1e3;
  161. box-sizing: border-box;
  162. background: white;
  163. border-radius: 5px;
  164. margin-right: 5px;
  165. z-index: 1;
  166. img.dataImg {
  167. width: 100%;
  168. height: 100%;
  169. object-fit: cover;
  170. border-radius: 5px;
  171. }
  172. .addImg {
  173. line-height: 76px;
  174. text-align: center;
  175. cursor: pointer;
  176. & > i {
  177. font-size: 30px;
  178. }
  179. }
  180. video {
  181. width: 100%;
  182. height: 100%;
  183. }
  184. }
  185. }
  186. </style>