add.vue 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413
  1. <template>
  2. <view class='content'>
  3. <view class='wrap'>
  4. <u--form labelPosition="left" :model="form" ref="uForm">
  5. <u-form-item labelWidth='240' labelPosition='top' label="上传民宿图片">
  6. <u-upload :fileList="fileList1" @afterRead="afterRead($event)" @delete="deletePic" name="1" multiple
  7. :maxCount="20">
  8. </u-upload>
  9. </u-form-item>
  10. <u-form-item labelWidth='120' labelPosition='top' label="标题">
  11. <u--input minlength='6' maxlength='30' inputAlign='right' v-model="form.title" placeholder="输入标题,6-30个字" border="none"></u--input>
  12. </u-form-item>
  13. <u-form-item labelWidth='150' labelPosition='top' label="详细介绍(选填)">
  14. <u--textarea maxlength='1000' v-model="form.detailedIntroduction" autoHeight placeholder="输入房源介绍,0-1000个字" ></u--textarea>
  15. </u-form-item>
  16. <u-form-item labelWidth='120' labelPosition='left' label="单价(元/晚)">
  17. <u--input inputAlign='right' v-model="form.price" placeholder="输入单价" border="none"></u--input>
  18. </u-form-item>
  19. <u-form-item labelWidth='120' labelPosition='left' label="户型">
  20. <view class='flex'>
  21. <view class='flex'>
  22. <u--input inputAlign='right' v-model="room" placeholder="输入" border="none"></u--input>
  23. <view>室</view>
  24. </view>
  25. <view class='flex'>
  26. <u--input inputAlign='right' v-model="hall" placeholder="输入" border="none"></u--input>
  27. <view>厅</view>
  28. </view>
  29. <view class='flex'>
  30. <u--input inputAlign='right' v-model="toilet" placeholder="输入" border="none"></u--input>
  31. <view>卫</view>
  32. </view>
  33. </view>
  34. </u-form-item>
  35. <u-form-item labelWidth='120' labelPosition='left' label="床铺数量">
  36. <u--input inputAlign='right' v-model="form.bedNum" placeholder="输入床铺数量" border="none"></u--input>
  37. </u-form-item>
  38. <u-form-item labelWidth='120' labelPosition='left' label="最多可住人数">
  39. <u--input inputAlign='right' v-model="form.mostPeople" placeholder="输入最多可住人数" border="none"></u--input>
  40. </u-form-item>
  41. <u-form-item labelWidth='120' labelPosition='left' label="面积(平米)">
  42. <u--input inputAlign='right' v-model="form.decorationArea" placeholder="输入房屋面积" border="none"></u--input>
  43. </u-form-item>
  44. <u-form-item labelWidth='120' labelPosition='left' @click='placeSelect(),hideKeyboard()' label="房源位置">
  45. <view style='text-align:right;' v-if="form.province">{{ form.province }}{{ form.city }}{{ form.area }}</view>
  46. <view style='text-align:right;' v-else>
  47. <text style='text-align:right;'>选择房源位置 </text>
  48. <image src="@/static/image/yjt.png" mode=""
  49. style="margin-left:10rpx;width:12rpx;height: 21rpx;"></image>
  50. </view>
  51. </u-form-item>
  52. <u-form-item labelWidth='80' labelPosition='left' label="详细地址">
  53. <u-input inputAlign='right' maxlength="15" border='none' placeholder='输入详细地址,不超过15个字' v-model="form.detailedAddress" />
  54. </u-form-item>
  55. <u-form-item labelWidth='120' labelPosition='top' label="房源特色">
  56. <view class="flex">
  57. <u--input v-for='item in labelList' inputAlign='right' v-model="item.value" placeholder="输入房源特色" border="none"></u--input>
  58. </view>
  59. </u-form-item>
  60. </u--form>
  61. <view>
  62. <view class='flex justify-space-between'>
  63. <view style='width:25%;'>服务</view>
  64. <view style='width:25%;'></view>
  65. <view style='width:25%;'></view>
  66. <view class='checkall'>
  67. <u-checkbox-group
  68. v-model="checkboxValue1"
  69. placement="column"
  70. @change="checkboxChange1"
  71. >
  72. <u-checkbox
  73. :customStyle="{marginBottom: '8px'}"
  74. :checked='checked1'
  75. label='全选'
  76. name="全选"
  77. >
  78. </u-checkbox>
  79. </u-checkbox-group>
  80. </view>
  81. </view>
  82. <view class='more'>
  83. <u-checkbox-group
  84. v-model="checkList1"
  85. placement="row"
  86. @change="checkboxChange1"
  87. >
  88. <u-checkbox
  89. :customStyle="{marginBottom: '8px'}"
  90. v-for="(item, index) in checkboxList1"
  91. :key="index"
  92. :checked='item.checked'
  93. :label="item.name"
  94. :name="item.name"
  95. >
  96. </u-checkbox>
  97. </u-checkbox-group>
  98. </view>
  99. </view>
  100. <view>
  101. <view class='flex justify-space-between'>
  102. <view style='width:25%;'>家居</view>
  103. <view style='width:25%;'></view>
  104. <view style='width:25%;'></view>
  105. <view class='checkall'>
  106. <u-checkbox-group
  107. v-model="checkboxValue2"
  108. placement="column"
  109. @change="checkboxChange2"
  110. >
  111. <u-checkbox
  112. :customStyle="{marginBottom: '8px'}"
  113. :checked='checked2'
  114. label='全选'
  115. name="全选"
  116. >
  117. </u-checkbox>
  118. </u-checkbox-group>
  119. </view>
  120. </view>
  121. <view class='more'>
  122. <u-checkbox-group
  123. v-model="checkList2"
  124. placement="row"
  125. @change="checkboxChange2"
  126. >
  127. <u-checkbox
  128. :customStyle="{marginBottom: '8px'}"
  129. v-for="(item, index) in checkboxList2"
  130. :key="index"
  131. :checked='item.checked'
  132. :label="item.name"
  133. :name="item.name"
  134. >
  135. </u-checkbox>
  136. </u-checkbox-group>
  137. </view>
  138. </view>
  139. <view>
  140. <view class='flex justify-space-between'>
  141. <view style='width:25%;'>卫浴</view>
  142. <view style='width:25%;'></view>
  143. <view style='width:25%;'></view>
  144. <view class='checkall'>
  145. <u-checkbox-group
  146. v-model="checkboxValue3"
  147. placement="column"
  148. @change="checkboxChange3"
  149. >
  150. <u-checkbox
  151. :customStyle="{marginBottom: '8px'}"
  152. :checked='checked3'
  153. label='全选'
  154. name="全选"
  155. >
  156. </u-checkbox>
  157. </u-checkbox-group>
  158. </view>
  159. </view>
  160. <view class='more'>
  161. <u-checkbox-group
  162. v-model="checkList3"
  163. placement="row"
  164. @change="checkboxChange3"
  165. >
  166. <u-checkbox
  167. :customStyle="{marginBottom: '8px'}"
  168. v-for="(item, index) in checkboxList3"
  169. :key="index"
  170. :checked='item.checked'
  171. :label="item.name"
  172. :name="item.name"
  173. >
  174. </u-checkbox>
  175. </u-checkbox-group>
  176. </view>
  177. </view>
  178. <view>
  179. <view class='flex justify-space-between'>
  180. <view style='width:25%;'>餐厨</view>
  181. <view style='width:25%;'></view>
  182. <view style='width:25%;'></view>
  183. <view class='checkall'>
  184. <u-checkbox-group
  185. v-model="checkboxValue4"
  186. placement="column"
  187. @change="checkboxChange4"
  188. >
  189. <u-checkbox
  190. :customStyle="{marginBottom: '8px'}"
  191. :checked='checked4'
  192. label='全选'
  193. name="全选"
  194. >
  195. </u-checkbox>
  196. </u-checkbox-group>
  197. </view>
  198. </view>
  199. <view class='more'>
  200. <u-checkbox-group
  201. v-model="checkList4"
  202. placement="row"
  203. @change="checkboxChange4"
  204. >
  205. <u-checkbox
  206. :customStyle="{marginBottom: '8px'}"
  207. v-for="(item, index) in checkboxList4"
  208. :key="index"
  209. :checked='item.checked'
  210. :label="item.name"
  211. :name="item.name"
  212. >
  213. </u-checkbox>
  214. </u-checkbox-group>
  215. </view>
  216. </view>
  217. <view>
  218. <view class='flex justify-space-between'>
  219. <view style='width:25%;'>建筑</view>
  220. <view style='width:25%;'></view>
  221. <view style='width:25%;'></view>
  222. <view class='checkall'>
  223. <u-checkbox-group
  224. v-model="checkboxValue5"
  225. placement="column"
  226. @change="checkboxChange5"
  227. >
  228. <u-checkbox
  229. :customStyle="{marginBottom: '8px'}"
  230. :checked='checked5'
  231. label='全选'
  232. name="全选"
  233. >
  234. </u-checkbox>
  235. </u-checkbox-group>
  236. </view>
  237. </view>
  238. <view class='more'>
  239. <u-checkbox-group
  240. v-model="checkList5"
  241. placement="row"
  242. @change="checkboxChange5"
  243. >
  244. <u-checkbox
  245. :customStyle="{marginBottom: '8px'}"
  246. v-for="(item, index) in checkboxList5"
  247. :key="index"
  248. :checked='item.checked'
  249. :label="item.name"
  250. :name="item.name"
  251. >
  252. </u-checkbox>
  253. </u-checkbox-group>
  254. </view>
  255. </view>
  256. </view>
  257. <view class="mercharts_footer">
  258. <button @click='submit' class="submit">提交</button>
  259. </view>
  260. </view>
  261. </template>
  262. <script>
  263. var that
  264. export default {
  265. data() {
  266. return {
  267. form:{},
  268. fileList1:[],
  269. checked1:false,
  270. checked2:false,
  271. checked3:false,
  272. checked4:false,
  273. checked5:false,
  274. room:'',
  275. hall:'',
  276. toilet:'',
  277. labelList:[{value:''},{value:''},{value:''},{value:''}],
  278. checkList1:[],
  279. checkList2:[],
  280. checkList3:[],
  281. checkList4:[],
  282. checkList5:[],
  283. checkboxValue1:'',
  284. checkboxValue2:'',
  285. checkboxValue3:'',
  286. checkboxValue4:'',
  287. checkboxValue5:'',
  288. checkboxList1:[{name:'行李寄存',checked:false},{name:'可长租',checked:false},{name:'自助入住',checked:false},{name:'免费停车',checked:false}],
  289. checkboxList2:[{name:'电视',checked:false},{name:'洗衣机',checked:false},{name:'冰箱',checked:false},{name:'空调',checked:false}
  290. ,{name:'热水壶',checked:false},{name:'免费wifi',checked:false}],
  291. checkboxList3:[{name:'吹风机',checked:false},{name:'洗发水',checked:false},{name:'沐浴露',checked:false},{name:'独立卫浴',checked:false}
  292. ,{name:'拖鞋',checked:false},{name:'牙具',checked:false},{name:'毛巾',checked:false},{name:'浴巾',checked:false},{name:'纸巾',checked:false},
  293. {name:'热水淋浴',checked:false},{name:'香皂',checked:false}],
  294. checkboxList4:[{name:'餐具',checked:false},{name:'锅具',checked:false},{name:'调料',checked:false},{name:'电磁炉',checked:false}
  295. ,{name:'天然气',checked:false},{name:'刀具',checked:false},{name:'菜板',checked:false},{name:'汤勺',checked:false}],
  296. checkboxList5:[{name:'电梯',checked:false},{name:'窗户',checked:false},{name:'落地窗',checked:false},{name:'海景',checked:false}],
  297. }
  298. },
  299. onLoad() {
  300. that = this
  301. },
  302. onShow() {
  303. },
  304. methods: {
  305. checkboxChange1(e){
  306. var data=JSON.parse(JSON.stringify(e))
  307. this.$forceUpdate()
  308. if(e[0]){
  309. if(e[0]=='全选'){
  310. this.checkboxList1=this.checkboxList1.map((item)=>{
  311. item.checked = true
  312. return item})
  313. }else{
  314. this.checkboxList1=this.checkboxList1.map((item)=>{
  315. item.checked = false
  316. return item})
  317. for(var i=0;i<data.length;i++){
  318. var index=this.checkboxList1.findIndex((item)=>{return item.name==data[i]})
  319. if(index!=-1) this.checkboxList1[index].checked=true
  320. else this.checkboxList1[index].checked=false
  321. }
  322. if(this.checkboxList1.every((item)=>{return item.checked==true})==true){
  323. this.checked1=true
  324. }else{
  325. this.checked1=false
  326. }
  327. }
  328. }else{
  329. if(this.checkboxValue1){
  330. this.checkboxList1=this.checkboxList1.map((item)=>{
  331. item.checked = false
  332. return item})
  333. }
  334. }
  335. console.log(this.checkboxList1,this.checkList1)
  336. },
  337. checkboxChange5(e){
  338. var data=JSON.parse(JSON.stringify(e))
  339. this.$forceUpdate()
  340. if(e[0]){
  341. if(e[0]=='全选'){
  342. this.checkboxList5=this.checkboxList5.map((item)=>{
  343. item.checked = true
  344. return item})
  345. }else{
  346. this.checkboxList5=this.checkboxList5.map((item)=>{
  347. item.checked = false
  348. return item})
  349. for(var i=0;i<data.length;i++){
  350. var index=this.checkboxList5.findIndex((item)=>{return item.name==data[i]})
  351. if(index!=-1) this.checkboxList5[index].checked=true
  352. else this.checkboxList5[index].checked=false
  353. }
  354. if(this.checkboxList5.every((item)=>{return item.checked==true})==true){
  355. this.checked5=true
  356. }else{
  357. this.checked5=false
  358. }
  359. }
  360. }else{
  361. if(this.checkboxValue1){
  362. this.checkboxList1=this.checkboxList1.map((item)=>{
  363. item.checked = false
  364. return item})
  365. }
  366. }
  367. console.log(this.checkboxList5,this.checkList5)
  368. },
  369. placeSelect() {
  370. uni.chooseLocation({
  371. success: function(res) {
  372. console.log(res);
  373. that.form.location = res.latitude + ',' + res.longitude
  374. let _address = that.$helper.formatLocation(res.address)
  375. console.log(_address)
  376. that.form.province = _address.Province
  377. that.form.city = _address.City
  378. that.form.area = _address.Country
  379. that.form.detailedAddress = _address.Village
  380. that.$forceUpdate()
  381. }
  382. });
  383. },
  384. hideKeyboard() {
  385. uni.hideKeyboard()
  386. },
  387. }
  388. }
  389. </script>
  390. <style lang='scss' scoped>
  391. /deep/.u-checkbox-group{
  392. flex-wrap: wrap;
  393. }
  394. .checkall{
  395. width:25%;
  396. }
  397. /* .checkall /deep/.u-checkbox-group{
  398. padding-right: 9vw;
  399. } */
  400. .more /deep/.u-checkbox-group .u-checkbox{
  401. width:25%;
  402. }
  403. </style>