租房小程序前端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

358 lines
12 KiB

6 months ago
  1. <template>
  2. <view class="se-p-40 se-bgc-white">
  3. <uv-form labelPosition="left" :model="form" :rules="rules" ref="form" labelWidth="60" labelStyle="font-size:26rpx;">
  4. <uv-form-item label="标题" prop="title" >
  5. <uv-input v-model="form.title" type="text" placeholder="请输入标题" customStyle="border-radius: 5px;margin-top:5px;background-color: #f5f5f5;padding:5px 10px;"></uv-input>
  6. </uv-form-item>
  7. <uv-form-item label="价格" prop="price">
  8. <uv-input v-model="form.price" type="text" placeholder="请输入价格" customStyle="border-radius: 5px;margin-top:5px;background-color: #f5f5f5;padding:5px 10px;"></uv-input>
  9. </uv-form-item>
  10. <uv-form-item label="户型" prop="house">
  11. <uv-input v-model="form.house" type="text" placeholder="请输入户型" customStyle="border-radius: 5px;margin-top:5px;background-color: #f5f5f5;padding:5px 10px;"></uv-input>
  12. </uv-form-item>
  13. <uv-form-item label="面积" prop="proportion">
  14. <uv-input v-model="form.proportion" type="text" placeholder="请输入面积" customStyle="border-radius: 5px;margin-top:5px;background-color: #f5f5f5;padding:5px 10px;"></uv-input>
  15. </uv-form-item>
  16. <uv-form-item label="所属位置" prop="address" @click="handleAreaChange()">
  17. <uv-input v-model="form.address" @click="handleAreaChange()" disabled disabledColor="#ffffff" placeholder="所属位置" border="none">
  18. </uv-input>
  19. <template v-slot:right>
  20. <uv-icon name="arrow-right"></uv-icon>
  21. </template>
  22. </uv-form-item>
  23. <uv-form-item label="编号" prop="number">
  24. <uv-input v-model="form.number" type="text" placeholder="请输入编号" customStyle="border-radius: 5px;margin-top:5px;background-color: #f5f5f5;padding:5px 10px;"></uv-input>
  25. </uv-form-item>
  26. <uv-form-item label="房屋周边" prop="perimeter">
  27. <uv-input v-model="form.perimeter" type="text" placeholder="请输入房屋周边" customStyle="border-radius: 5px;margin-top:5px;background-color: #f5f5f5;padding:5px 10px;"></uv-input>
  28. </uv-form-item>
  29. <uv-form-item label="房间数量" prop="housesNumber">
  30. <uv-number-box v-model="form.housesNumber" :min="1" :max="10"></uv-number-box>
  31. </uv-form-item>
  32. <uv-form-item label="房屋主体是否改造" labelWidth="200" prop="revamp">
  33. <uv-radio-group v-model="form.revamp" placement="row">
  34. <uv-radio name="1" label="是"></uv-radio>
  35. <uv-radio name="0" customStyle="margin-left:30rpx;" label="否"></uv-radio>
  36. </uv-radio-group>
  37. </uv-form-item>
  38. <uv-form-item label="是否经过安置" labelWidth="200" prop="resettle">
  39. <uv-radio-group v-model="form.resettle" placement="row">
  40. <uv-radio name="1" label="是"></uv-radio>
  41. <uv-radio name="0" customStyle="margin-left:30rpx;" label="否"></uv-radio>
  42. </uv-radio-group>
  43. </uv-form-item>
  44. <uv-form-item label="院子总面积" labelWidth="100" prop="yardProportion">
  45. <uv-input v-model="form.yardProportion" type="text" placeholder="请输入院子总面积" customStyle="border-radius: 5px;margin-top:5px;background-color: #f5f5f5;padding:5px 10px;"></uv-input>
  46. </uv-form-item>
  47. <uv-form-item label="坟包及电塔工厂噪音" labelWidth="150" prop="noise">
  48. <uv-input v-model="form.noise" type="text" placeholder="请输入坟包及电塔工厂噪音" customStyle="border-radius: 5px;margin-top:5px;background-color: #f5f5f5;padding:5px 10px;"></uv-input>
  49. </uv-form-item>
  50. <uv-form-item label="水电气网" prop="net">
  51. <uv-input v-model="form.net" type="text" placeholder="请输入水电气网" customStyle="border-radius: 5px;margin-top:5px;background-color: #f5f5f5;padding:5px 10px;"></uv-input>
  52. </uv-form-item>
  53. <uv-form-item label="停车" prop="park">
  54. <uv-input v-model="form.park" type="text" placeholder="请输入停车" customStyle="border-radius: 5px;margin-top:5px;background-color: #f5f5f5;padding:5px 10px;"></uv-input>
  55. </uv-form-item>
  56. <uv-form-item label="付款方式及押金" labelWidth="120" prop="deposit">
  57. <uv-input v-model="form.deposit" type="text" placeholder="请输入押金" customStyle="border-radius: 5px;margin-top:5px;background-color: #f5f5f5;padding:5px 10px;"></uv-input>
  58. </uv-form-item>
  59. <uv-form-item label="天府市民云房屋信息档案查询" labelWidth="100" prop="archival" labelPosition="top">
  60. <uv-input v-model="form.archival" type="text" placeholder="请输入天府市民云房屋信息档案查询" customStyle="border-radius: 5px;margin-top:5px;background-color: #f5f5f5;padding:5px 10px;"></uv-input>
  61. </uv-form-item>
  62. <uv-form-item label="租期" prop="tenancy">
  63. <uv-input v-model="form.tenancy" type="text" placeholder="请输入租期" customStyle="border-radius: 5px;margin-top:5px;background-color: #f5f5f5;padding:5px 10px;"></uv-input>
  64. </uv-form-item>
  65. <uv-form-item label="邻居对房东的评价" labelWidth="120" prop="evaluate">
  66. <uv-input v-model="form.evaluate" type="text" placeholder="请输入邻居对房东的评价" customStyle="border-radius: 5px;margin-top:5px;background-color: #f5f5f5;padding:5px 10px;"></uv-input>
  67. </uv-form-item>
  68. <uv-form-item label="非正常死亡" labelWidth="80" prop="death">
  69. <uv-input v-model="form.death" type="text" placeholder="请输入非正常死亡" customStyle="border-radius: 5px;margin-top:5px;background-color: #f5f5f5;padding:5px 10px;"></uv-input>
  70. </uv-form-item>
  71. <uv-form-item label="钥匙" prop="key">
  72. <uv-input v-model="form.key" type="text" placeholder="请输入钥匙" customStyle="border-radius: 5px;margin-top:5px;background-color: #f5f5f5;padding:5px 10px;"></uv-input>
  73. </uv-form-item>
  74. <uv-form-item label="佣金" prop="commission">
  75. <uv-input v-model="form.commission" type="text" placeholder="请输入佣金" customStyle="border-radius: 5px;margin-top:5px;background-color: #f5f5f5;padding:5px 10px;"></uv-input>
  76. </uv-form-item>
  77. <uv-form-item label="报建手续" prop="procedures">
  78. <uv-input v-model="form.procedures" type="text" placeholder="请输入报建手续" customStyle="border-radius: 5px;margin-top:5px;background-color: #f5f5f5;padding:5px 10px;"></uv-input>
  79. </uv-form-item>
  80. <uv-form-item label="产权证照片" labelWidth="250" prop="isOwnershipList" labelPosition="top">
  81. <uv-upload customStyle="margin-top:20rpx;" :fileList="form.ownershipList" @afterRead="afterOwnershipRead" @delete="deleteOwnershipPic" name="1"
  82. multiple :maxCount="10"></uv-upload>
  83. </uv-form-item>
  84. <uv-form-item label="房屋照片/视频" labelWidth="250" prop="isHouseList" labelPosition="top">
  85. <uv-upload customStyle="margin-top:20rpx;" :fileList="form.houseList" @afterRead="afterHouseRead" @delete="deleteHousePic" name="1"
  86. multiple :maxCount="10"></uv-upload>
  87. </uv-form-item>
  88. <uv-form-item label="备注" prop="remark" labelPosition="top">
  89. <uv-input v-model="form.remark" type="text" placeholder="请输入备注" customStyle="border-radius: 5px;margin-top:5px;background-color: #f5f5f5;padding:5px 10px;"></uv-input>
  90. </uv-form-item>
  91. <uv-form-item>
  92. <uv-button type="primary" text="确认发布" customStyle="margin-top: 30px;background-color: #1EC77A;border-radius: 30px;" @click="submit"></uv-button>
  93. </uv-form-item>
  94. </uv-form>
  95. <!-- 地址 -->
  96. <citySelect ref="citySelectRef" :zIndex="0" @city-change="handleCityChange"></citySelect>
  97. </view>
  98. </template>
  99. <script>
  100. import citySelect from "@/components/cityselect/index.vue"
  101. export default{
  102. components:{
  103. citySelect
  104. },
  105. data(){
  106. return{
  107. form:{
  108. title:"",//标题
  109. price:"",//价格
  110. house:"",//户型
  111. proportion:"",//面积
  112. address:"",//所属位置
  113. number:"",//编号
  114. perimeter:"",//房屋周边
  115. housesNumber:1,//房间数量
  116. revamp:0,//房屋主体是否改造
  117. resettle:0,//是否经过安置
  118. yardProportion:"",//院子总面积
  119. noise:"",//噪音
  120. net:"",//水电气网
  121. park:"",//停车
  122. deposit:"",//押金
  123. archival:"",//档案查询
  124. tenancy:"",//租期
  125. evaluate:"",//评价
  126. death:"",//非正常死亡
  127. key:"",//钥匙
  128. commission:"",//佣金
  129. procedures:"",//手续
  130. isOwnershipList:"",
  131. ownershipList:[],
  132. isHouseList:"",
  133. houseList:[],
  134. remark:""
  135. },
  136. rules:{
  137. title:[
  138. {
  139. type: 'string',
  140. required: true,
  141. message: '请输入账号',
  142. trigger: ['blur', 'change']
  143. }
  144. ],
  145. price:[
  146. {
  147. type: 'string',
  148. required: true,
  149. message: '请输入价格',
  150. trigger: ['blur', 'change']
  151. }
  152. ],
  153. house:[
  154. {
  155. type: 'string',
  156. required: true,
  157. message: '请输入户型',
  158. trigger: ['blur', 'change']
  159. }
  160. ],
  161. proportion:[
  162. {
  163. type: 'string',
  164. required: true,
  165. message: '请输入面积',
  166. trigger: ['blur', 'change']
  167. }
  168. ],
  169. number:[
  170. {
  171. type: 'string',
  172. required: true,
  173. message: '请输入编号',
  174. trigger: ['blur', 'change']
  175. }
  176. ],
  177. perimeter:[
  178. {
  179. type: 'string',
  180. required: true,
  181. message: '请输入房屋周边',
  182. trigger: ['blur', 'change']
  183. }
  184. ],
  185. yardProportion:[
  186. {
  187. type: 'string',
  188. required: true,
  189. message: '请输入院子总面积',
  190. trigger: ['blur', 'change']
  191. }
  192. ],
  193. noise:[
  194. {
  195. type: 'string',
  196. required: true,
  197. message: '请输入坟包及电塔工厂噪音',
  198. trigger: ['blur', 'change']
  199. }
  200. ],
  201. net:[
  202. {
  203. type: 'string',
  204. required: true,
  205. message: '请输入水电气网',
  206. trigger: ['blur', 'change']
  207. }
  208. ],
  209. park:[
  210. {
  211. type: 'string',
  212. required: true,
  213. message: '请输入停车',
  214. trigger: ['blur', 'change']
  215. }
  216. ],
  217. deposit:[
  218. {
  219. type: 'string',
  220. required: true,
  221. message: '请输入押金',
  222. trigger: ['blur', 'change']
  223. }
  224. ],
  225. archival:[
  226. {
  227. type: 'string',
  228. required: true,
  229. message: '请输入天府市民云房屋信息档案查询',
  230. trigger: ['blur', 'change']
  231. }
  232. ],
  233. tenancy:[
  234. {
  235. type: 'string',
  236. required: true,
  237. message: '请输入租期',
  238. trigger: ['blur', 'change']
  239. }
  240. ],
  241. evaluate:[
  242. {
  243. type: 'string',
  244. required: true,
  245. message: '请输入邻居对房东的评价',
  246. trigger: ['blur', 'change']
  247. }
  248. ],
  249. death:[
  250. {
  251. type: 'string',
  252. required: true,
  253. message: '请输入非正常死亡',
  254. trigger: ['blur', 'change']
  255. }
  256. ],
  257. key:[
  258. {
  259. type: 'string',
  260. required: true,
  261. message: '请输入钥匙',
  262. trigger: ['blur', 'change']
  263. }
  264. ],
  265. commission:[
  266. {
  267. type: 'string',
  268. required: true,
  269. message: '请输入佣金',
  270. trigger: ['blur', 'change']
  271. }
  272. ],
  273. procedures:[
  274. {
  275. type: 'string',
  276. required: true,
  277. message: '请输入报建手续',
  278. trigger: ['blur', 'change']
  279. }
  280. ],
  281. }
  282. }
  283. },
  284. watch: {
  285. 'form.ownershipList'(newValue, oldValue) {
  286. if (newValue.length > 0) {
  287. this.form.isOwnershipList = '有'
  288. } else {
  289. this.form.isOwnershipList = ''
  290. }
  291. },
  292. 'form.houseList'(newValue, oldValue) {
  293. if (newValue.length > 0) {
  294. this.form.isHouseList = '有'
  295. } else {
  296. this.form.isHouseList = ''
  297. }
  298. }
  299. },
  300. onReady() {
  301. this.$refs.form.setRules(this.rules)
  302. },
  303. methods:{
  304. deleteHousePic(event) {
  305. this.form.houseList.splice(event.index, 1)
  306. },
  307. async afterHouseRead(e) {
  308. let self = this
  309. e.file.forEach(file => {
  310. self.$Oss.ossUpload(file.url).then(url => {
  311. self.form.houseList.push({
  312. url
  313. })
  314. })
  315. })
  316. },
  317. deleteOwnershipPic(event) {
  318. this.form.ownershipList.splice(event.index, 1)
  319. },
  320. async afterOwnershipRead(e) {
  321. let self = this
  322. e.file.forEach(file => {
  323. self.$Oss.ossUpload(file.url).then(url => {
  324. self.form.ownershipList.push({
  325. url
  326. })
  327. })
  328. })
  329. },
  330. handleAreaChange(){
  331. this.$refs.citySelectRef.open()
  332. },
  333. handleCityChange(e) {
  334. this.form.address = e.province.label + '-' + e.city.label + '-' + e.area.label;
  335. },
  336. submit() {
  337. this.$refs.form.validate().then(res => {
  338. uni.showToast({
  339. icon: 'none',
  340. title: '校验通过'
  341. })
  342. }).catch(errors => {
  343. uni.showToast({
  344. icon: 'none',
  345. title: '校验失败'
  346. })
  347. })
  348. }
  349. }
  350. }
  351. </script>
  352. <style>
  353. page{
  354. background-color: #f5f5f5;
  355. }
  356. </style>