add.vue 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400
  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>服务</view>
  64. <view class='checkall'>
  65. <u-checkbox-group
  66. v-model="checkboxValue1"
  67. placement="column"
  68. @change="checkboxChange1"
  69. >
  70. <u-checkbox
  71. :customStyle="{marginBottom: '8px'}"
  72. :checked='checked1'
  73. label='全选'
  74. name="全选"
  75. >
  76. </u-checkbox>
  77. </u-checkbox-group>
  78. </view>
  79. </view>
  80. <view class='more'>
  81. <u-checkbox-group
  82. v-model="checkList1"
  83. placement="row"
  84. @change="checkboxChange1"
  85. >
  86. <u-checkbox
  87. :customStyle="{marginBottom: '8px'}"
  88. v-for="(item, index) in checkboxList1"
  89. :key="index"
  90. :checked='item.checked'
  91. :label="item.name"
  92. :name="item.name"
  93. >
  94. </u-checkbox>
  95. </u-checkbox-group>
  96. </view>
  97. </view>
  98. <view>
  99. <view class='flex justify-space-between'>
  100. <view>家居</view>
  101. <view class='checkall'>
  102. <u-checkbox-group
  103. v-model="checkboxValue2"
  104. placement="column"
  105. @change="checkboxChange2"
  106. >
  107. <u-checkbox
  108. :customStyle="{marginBottom: '8px'}"
  109. :checked='checked2'
  110. label='全选'
  111. name="全选"
  112. >
  113. </u-checkbox>
  114. </u-checkbox-group>
  115. </view>
  116. </view>
  117. <view class='more'>
  118. <u-checkbox-group
  119. v-model="checkList2"
  120. placement="row"
  121. @change="checkboxChange2"
  122. >
  123. <u-checkbox
  124. :customStyle="{marginBottom: '8px'}"
  125. v-for="(item, index) in checkboxList2"
  126. :key="index"
  127. :checked='item.checked'
  128. :label="item.name"
  129. :name="item.name"
  130. >
  131. </u-checkbox>
  132. </u-checkbox-group>
  133. </view>
  134. </view>
  135. <view>
  136. <view class='flex justify-space-between'>
  137. <view>卫浴</view>
  138. <view class='checkall'>
  139. <u-checkbox-group
  140. v-model="checkboxValue3"
  141. placement="column"
  142. @change="checkboxChange3"
  143. >
  144. <u-checkbox
  145. :customStyle="{marginBottom: '8px'}"
  146. :checked='checked3'
  147. label='全选'
  148. name="全选"
  149. >
  150. </u-checkbox>
  151. </u-checkbox-group>
  152. </view>
  153. </view>
  154. <view class='more'>
  155. <u-checkbox-group
  156. v-model="checkList3"
  157. placement="row"
  158. @change="checkboxChange3"
  159. >
  160. <u-checkbox
  161. :customStyle="{marginBottom: '8px'}"
  162. v-for="(item, index) in checkboxList3"
  163. :key="index"
  164. :checked='item.checked'
  165. :label="item.name"
  166. :name="item.name"
  167. >
  168. </u-checkbox>
  169. </u-checkbox-group>
  170. </view>
  171. </view>
  172. <view>
  173. <view class='flex justify-space-between'>
  174. <view>餐厨</view>
  175. <view class='checkall'>
  176. <u-checkbox-group
  177. v-model="checkboxValue4"
  178. placement="column"
  179. @change="checkboxChange4"
  180. >
  181. <u-checkbox
  182. :customStyle="{marginBottom: '8px'}"
  183. :checked='checked4'
  184. label='全选'
  185. name="全选"
  186. >
  187. </u-checkbox>
  188. </u-checkbox-group>
  189. </view>
  190. </view>
  191. <view class='more'>
  192. <u-checkbox-group
  193. v-model="checkList4"
  194. placement="row"
  195. @change="checkboxChange4"
  196. >
  197. <u-checkbox
  198. :customStyle="{marginBottom: '8px'}"
  199. v-for="(item, index) in checkboxList4"
  200. :key="index"
  201. :checked='item.checked'
  202. :label="item.name"
  203. :name="item.name"
  204. >
  205. </u-checkbox>
  206. </u-checkbox-group>
  207. </view>
  208. </view>
  209. <view>
  210. <view class='flex justify-space-between'>
  211. <view>建筑</view>
  212. <view class='checkall'>
  213. <u-checkbox-group
  214. v-model="checkboxValue5"
  215. placement="column"
  216. @change="checkboxChange5"
  217. >
  218. <u-checkbox
  219. :customStyle="{marginBottom: '8px'}"
  220. :checked='checked5'
  221. label='全选'
  222. name="全选"
  223. >
  224. </u-checkbox>
  225. </u-checkbox-group>
  226. </view>
  227. </view>
  228. <view class='more'>
  229. <u-checkbox-group
  230. v-model="checkList5"
  231. placement="row"
  232. @change="checkboxChange5"
  233. >
  234. <u-checkbox
  235. :customStyle="{marginBottom: '8px'}"
  236. v-for="(item, index) in checkboxList5"
  237. :key="index"
  238. :checked='item.checked'
  239. :label="item.name"
  240. :name="item.name"
  241. >
  242. </u-checkbox>
  243. </u-checkbox-group>
  244. </view>
  245. </view>
  246. </view>
  247. <view class="mercharts_footer">
  248. <button @click='submit' class="submit">提交</button>
  249. </view>
  250. </view>
  251. </template>
  252. <script>
  253. var that
  254. export default {
  255. data() {
  256. return {
  257. form:{},
  258. fileList1:[],
  259. checked1:false,
  260. checked2:false,
  261. checked3:false,
  262. checked4:false,
  263. checked5:false,
  264. room:'',
  265. hall:'',
  266. toilet:'',
  267. labelList:[{value:''},{value:''},{value:''},{value:''}],
  268. checkList1:[],
  269. checkList2:[],
  270. checkList3:[],
  271. checkList4:[],
  272. checkList5:[],
  273. checkboxValue1:'',
  274. checkboxValue2:'',
  275. checkboxValue3:'',
  276. checkboxValue4:'',
  277. checkboxValue5:'',
  278. checkboxList1:[{name:'行李寄存',checked:false},{name:'可长租',checked:false},{name:'自助入住',checked:false},{name:'免费停车',checked:false}],
  279. checkboxList2:[{name:'电视',checked:false},{name:'洗衣机',checked:false},{name:'冰箱',checked:false},{name:'空调',checked:false}
  280. ,{name:'热水壶',checked:false},{name:'免费wifi',checked:false}],
  281. checkboxList3:[{name:'吹风机',checked:false},{name:'洗发水',checked:false},{name:'沐浴露',checked:false},{name:'独立卫浴',checked:false}
  282. ,{name:'拖鞋',checked:false},{name:'牙具',checked:false},{name:'毛巾',checked:false},{name:'浴巾',checked:false},{name:'纸巾',checked:false},
  283. {name:'热水淋浴',checked:false},{name:'香皂',checked:false}],
  284. checkboxList4:[{name:'餐具',checked:false},{name:'锅具',checked:false},{name:'调料',checked:false},{name:'电磁炉',checked:false}
  285. ,{name:'天然气',checked:false},{name:'刀具',checked:false},{name:'菜板',checked:false},{name:'汤勺',checked:false}],
  286. checkboxList5:[{name:'电梯',checked:false},{name:'窗户',checked:false},{name:'落地窗',checked:false},{name:'海景',checked:false}],
  287. }
  288. },
  289. onLoad() {
  290. that = this
  291. },
  292. onShow() {
  293. },
  294. methods: {
  295. checkboxChange1(e){
  296. var data=JSON.parse(JSON.stringify(e))
  297. this.$forceUpdate()
  298. if(e[0]){
  299. if(e[0]=='全选'){
  300. this.checkboxList1=this.checkboxList1.map((item)=>{
  301. item.checked = true
  302. return item})
  303. }else{
  304. this.checkboxList1=this.checkboxList1.map((item)=>{
  305. item.checked = false
  306. return item})
  307. for(var i=0;i<data.length;i++){
  308. var index=this.checkboxList1.findIndex((item)=>{return item.name==data[i]})
  309. if(index!=-1) this.checkboxList1[index].checked=true
  310. else this.checkboxList1[index].checked=false
  311. }
  312. if(this.checkboxList1.every((item)=>{return item.checked==true})==true){
  313. this.checked1=true
  314. }else{
  315. this.checked1=false
  316. }
  317. }
  318. }else{
  319. if(this.checkboxValue1){
  320. this.checkboxList1=this.checkboxList1.map((item)=>{
  321. item.checked = false
  322. return item})
  323. }
  324. }
  325. console.log(this.checkboxList1,this.checkList1)
  326. },
  327. checkboxChange5(e){
  328. var data=JSON.parse(JSON.stringify(e))
  329. this.$forceUpdate()
  330. if(e[0]){
  331. if(e[0]=='全选'){
  332. this.checkboxList5=this.checkboxList5.map((item)=>{
  333. item.checked = true
  334. return item})
  335. }else{
  336. this.checkboxList5=this.checkboxList5.map((item)=>{
  337. item.checked = false
  338. return item})
  339. for(var i=0;i<data.length;i++){
  340. var index=this.checkboxList5.findIndex((item)=>{return item.name==data[i]})
  341. if(index!=-1) this.checkboxList5[index].checked=true
  342. else this.checkboxList5[index].checked=false
  343. }
  344. if(this.checkboxList5.every((item)=>{return item.checked==true})==true){
  345. this.checked5=true
  346. }else{
  347. this.checked5=false
  348. }
  349. }
  350. }else{
  351. if(this.checkboxValue1){
  352. this.checkboxList1=this.checkboxList1.map((item)=>{
  353. item.checked = false
  354. return item})
  355. }
  356. }
  357. console.log(this.checkboxList5,this.checkList5)
  358. },
  359. placeSelect() {
  360. uni.chooseLocation({
  361. success: function(res) {
  362. console.log(res);
  363. that.form.location = res.latitude + ',' + res.longitude
  364. let _address = that.$helper.formatLocation(res.address)
  365. console.log(_address)
  366. that.form.province = _address.Province
  367. that.form.city = _address.City
  368. that.form.area = _address.Country
  369. that.form.detailedAddress = _address.Village
  370. that.$forceUpdate()
  371. }
  372. });
  373. },
  374. hideKeyboard() {
  375. uni.hideKeyboard()
  376. },
  377. }
  378. }
  379. </script>
  380. <style lang='scss' scoped>
  381. /deep/.u-checkbox-group{
  382. flex-wrap: wrap;
  383. }
  384. .checkall /deep/.u-checkbox-group{
  385. padding-right: 59rpx;
  386. }
  387. .more /deep/.u-checkbox-group .u-checkbox{
  388. width:25%;
  389. }
  390. </style>