瀏覽代碼

民宿房东端v1.2

李志伟 3 年之前
父節點
當前提交
ed209becaa

+ 27
- 4
src/hotel/components/HouseManage/houseManage.jsx 查看文件

@@ -7,7 +7,8 @@ import iconsearch from '@/assets/icons/housemantj/search.png'
7 7
 import './houseManage.less'
8 8
 import {useState, useEffect,useRef } from 'react'
9 9
 import {useDidShow } from '@tarojs/taro'
10
-import {getRoomList} from '@/services/landlord'
10
+import {getRoomList,deleteRoom} from '@/services/landlord'
11
+import ShareRoom from '../shareRoom/ShareRoom.jsx'
11 12
 
12 13
 
13 14
 export default (props) => {
@@ -19,6 +20,27 @@ export default (props) => {
19 20
   const handelClick=()=>{
20 21
     Taro.navigateTo({ url: `/hotel/pages/landlord/addRoom/addRoom?hotelId=${hotel.hotelId}&hotelName=${hotel.hotelName}` });
21 22
   }
23
+  const handelDelete=(roomId)=>{
24
+    deleteRoom(roomId).then(()=>{
25
+      Taro.showToast({
26
+        title: '删除房源成功',
27
+        icon: 'none',
28
+      })
29
+      getRoomList({hotelId:hotel.hotelId}).then((res)=>{
30
+        setDetail(res.records||[])
31
+      })
32
+    })
33
+  }
34
+
35
+  const [showCutover, setShowCutover] = useState(false)
36
+  const [roomId, setRoomId] = useState()
37
+  const ShowMoldeOn = (roomId) => {
38
+    setRoomId(roomId)
39
+    setShowCutover(true)
40
+  }
41
+  const onClose = () => {
42
+    setShowCutover(false)
43
+  }
22 44
   useEffect(()=>{
23 45
     //首次加载页面时
24 46
     if (!mounted.current && hotel.hotelId) {
@@ -46,6 +68,7 @@ export default (props) => {
46 68
             <image className='searchicon' src={iconsearch} />
47 69
             <view className="searchword">请输入关键字搜索</view>
48 70
           </view>
71
+          <ShareRoom showCutover={showCutover} onClose={onClose}  roomId={roomId}/>
49 72
         <scroll-view scroll-y="true" scroll-view='true' bindscrolltoupper="upper" bindscrolltolower="lower" bindscroll="scroll" style={{ height: 'calc(100vh - 255px)' }}>
50 73
 
51 74
           <view>
@@ -54,9 +77,9 @@ export default (props) => {
54 77
               <view className='houseCard'>
55 78
               <view className='houseName'>{item.roomName}</view>
56 79
               <view className='operation'>
57
-                <view><image src={see} /><text>查看入住人</text></view>
58
-                <view><image src={share} /><text>分享链接</text></view>
59
-                <view><image src={del} /><text>删除房源</text></view>
80
+                <view><image src={see} />查看入住人</view>
81
+                <view onClick={()=>ShowMoldeOn(item.roomId)}><image src={share}/>分享链接</view>
82
+                <view onClick={()=>{handelDelete(item.roomId)}}><image src={del} />删除房源</view>
60 83
               </view>
61 84
             </view>
62 85
               )

+ 2
- 4
src/hotel/components/HouseManage/houseManage.less 查看文件

@@ -40,6 +40,8 @@
40 40
   }
41 41
   .operation{
42 42
     column-count: 3;
43
+    font-size: 28px;
44
+    color: #202020;
43 45
     image{
44 46
       width: 28px;
45 47
       height: 28px;
@@ -47,10 +49,6 @@
47 49
       position: relative;
48 50
       top: 5px;
49 51
     }
50
-    text{      
51
-      font-size: 28px;
52
-      color: #202020;
53
-    }
54 52
   }
55 53
 }
56 54
 .addHouse{

+ 3
- 1
src/hotel/components/Income/income.jsx 查看文件

@@ -6,6 +6,8 @@ import sImg from '@/assets/icons/landlord/我的收入2.png'
6 6
 import cutoverUser from '@/assets/icons/UserCenter/cutoverUser.png'
7 7
 import ToggleRole from '@/components/toggleRole/ToggleRole'
8 8
 import Picker from '@/components/Picker'
9
+import formatTime from "@/utils/formatTime";
10
+
9 11
 
10 12
 export default (props) => {
11 13
   const { hotelList, hotel, account, onHotelChange, accountlog } = props
@@ -63,7 +65,7 @@ export default (props) => {
63 65
               accountlog?.map((item) => 
64 66
                 <view className='spreadCard'>
65 67
                   <view className='card'>
66
-                    <view className='spreadTime'>时&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;间:<text>{item.createDate}</text></view>
68
+                    <view className='spreadTime'>时&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;间:<text>{formatTime(item.createDate,'yyyy/MM/dd hh:mm:ss')}</text></view>
67 69
                     <view className='spreadMoney'>收入金额:<text>{parseFloat((item.amount/100).toFixed(2))}</text>元</view>
68 70
                     <image className='spreadImg' src={sImg} />
69 71
                   </view>

+ 35
- 0
src/hotel/components/shareRoom/ShareRoom.jsx 查看文件

@@ -0,0 +1,35 @@
1
+import React from 'react'
2
+import Popup from '@/components/Popup'
3
+import Taro from '@tarojs/taro'
4
+import { Input, Button, View, Picker, Label } from '@tarojs/components'
5
+import './ShareRoom.less'
6
+import { useState } from 'react'
7
+
8
+
9
+export default (props) => {
10
+  const { showCutover, onClose,roomId } = props
11
+  const [date, setDate] = useState('')
12
+  const [roomNum, setRoomNum] = useState(0)
13
+  const handelDate = (e) => {
14
+    setDate(e.detail.value)
15
+  }
16
+const handelShare=()=>{
17
+  if(roomNum!=0&&date!=''){
18
+    console.log(roomNum,date,roomId)
19
+  }
20
+}
21
+  return (
22
+    <Popup show={showCutover} onClose={onClose}>
23
+      <View><Label>入住人数:</Label><Input focus dataField='nm' onInput={(e) => setRoomNum(e.detail.value )} value={roomNum} type='number' placeholder='请输入入住人数' /></View>
24
+      <View>
25
+        <Label>入住时间:</Label>
26
+        <Picker mode='date' onChange={handelDate}>
27
+          <View className='picker'  >
28
+            {date == '' ? '请选择入住时间' : date}
29
+          </View>
30
+        </Picker>
31
+      </View>
32
+      <View><Button className='btn' onClick={onClose}>取消</Button><Button className='btn' onClick={handelShare}>分享</Button></View>
33
+    </Popup>
34
+  )
35
+}

+ 17
- 0
src/hotel/components/shareRoom/ShareRoom.less 查看文件

@@ -0,0 +1,17 @@
1
+  .from-room{
2
+    width: 100%;
3
+    box-shadow: 0px 8px 32px 0px rgba(0, 0, 0, 0.08);
4
+    border-radius: 24px;
5
+    font-size: 1.1em;
6
+    padding: 20px;
7
+    .btn {
8
+      width: 100px;
9
+      height: 92px;
10
+      background: #1A3B83;
11
+      line-height: 92px;
12
+      border-radius: 12px;
13
+      font-size: 40px;
14
+      color: #ffffff;
15
+    }
16
+  }
17
+  

+ 21
- 14
src/hotel/pages/landlord/addRoom/addRoom.jsx 查看文件

@@ -32,21 +32,28 @@ export default withLayout((props) => {
32 32
     })
33 33
   }
34 34
   const sumbit = () => {
35
-    //判断每一项是否为空Object.values(roomModel).filter返回一个数组如果有空属性就是数组长度就不为0
36
-    Object.values(roomModel).filter(item => item == '').length != 0 ?
37
-      Taro.showToast({
38
-        title: '每一项都是必填项哦',
39
-        icon: 'none',
40
-      }) :
41
-      saveRoom(roomModel).then(() => {
42
-       
43
-          Taro.showToast({
35
+    if(
36
+    roomModel.roomName!=''&&
37
+    roomModel.address!=''&&
38
+    roomModel.location!=''&&
39
+    roomModel.weight!=''
40
+    )
41
+     { 
42
+      saveRoom(roomModel).then(() => {       
43
+          Taro.showModal({
44 44
             title: '保存成功',
45
-            icon: 'success',
45
+            showCancel:false
46 46
           }).then(() => {
47 47
             Taro.navigateBack()
48 48
           })
49
+      })       
50
+     } else{
51
+       Taro.showToast({
52
+        title: '有必填项未填哦',
53
+        icon: 'none',
49 54
       })
55
+     }
56
+      
50 57
   }
51 58
   return (
52 59
     <view className='page-index'>
@@ -55,13 +62,13 @@ export default withLayout((props) => {
55 62
         <mp-form models={roomModel} >
56 63
           <mp-cells title='请填写新增的房源信息' footer='  ' >
57 64
             <mp-cell prop='roomName' title='房屋名称:' extClass='font'>
58
-              <input focus dataField='roomName' onInput={(e) => setRoomModel({ ...roomModel, roomName: e.detail.value })} value={roomModel.roomName}  placeholder='请输入房屋名称' />
65
+              <input focus dataField='roomName' onInput={(e) => setRoomModel({ ...roomModel, roomName: e.detail.value })} value={roomModel.roomName}  placeholder='请输入房屋名称(必填)' />
59 66
             </mp-cell>
60 67
             <mp-cell prop='address' title='位置信息:' extClass='font'>
61
-              <input dataField='address' onInput={(e) => setRoomModel({ ...roomModel, address: e.detail.value })} value={roomModel.address}  placeholder='请输入房屋位置' />
68
+              <input dataField='address' onInput={(e) => setRoomModel({ ...roomModel, address: e.detail.value })} value={roomModel.address}  placeholder='请输入房屋位置(必填)' />
62 69
             </mp-cell>
63 70
             <mp-cell prop='location' title='定位经纬度:' extClass='font'>
64
-              <label onClick={onRoomMap}>{roomModel.location == '' ? '房间定位' : roomModel.location}</label>
71
+              <label onClick={onRoomMap}>{roomModel.location == '' ? '房间定位(必填)' : roomModel.location}</label>
65 72
             </mp-cell>
66 73
             <mp-cell prop='parkingAddress' title='停车场位置:' extClass='font'>
67 74
               <input dataField='parkingAddress' onInput={(e) => setRoomModel({ ...roomModel, parkingAddress: e.detail.value })} value={roomModel.parkingAddress}  placeholder='请输入停车场位置' />
@@ -76,7 +83,7 @@ export default withLayout((props) => {
76 83
               <input dataField='wifiPassword' onInput={(e) => setRoomModel({ ...roomModel, wifiPassword: e.detail.value })} value={roomModel.wifiPassword}  placeholder='请输入wifi密码' />
77 84
             </mp-cell>
78 85
             <mp-cell prop='weight' title='权重:' extClass='font'>
79
-              <input type='number' dataField='weight'  onInput={(e) => setRoomModel({ ...roomModel, weight: e.detail.value })} placeholder='请输入权重' />
86
+              <input type='number' dataField='weight'  onInput={(e) => setRoomModel({ ...roomModel, weight: e.detail.value })} placeholder='请输入权重(必填)' />
80 87
             </mp-cell>
81 88
             <mp-cell>
82 89
               <button className='button-OK' onClick={sumbit}>确定</button>

+ 2
- 0
src/layouts/index.jsx 查看文件

@@ -24,6 +24,8 @@ export default (Child) => (props) => {
24 24
     let indexPage = getIndexPageOf(personRole)
25 25
     if (!isNormalPerson) {
26 26
       indexPage = `${personRole}/${indexPage.page}`
27
+    }else{
28
+      indexPage='page/index/index'
27 29
     }
28 30
 
29 31
     const isMatched = isNormalPerson ?

+ 21
- 2
src/pages/index/index.jsx 查看文件

@@ -1,4 +1,4 @@
1
-import React, { useState, useEffect } from 'react'
1
+import React, { useState, useEffect,useRef } from 'react'
2 2
 import Taro from '@tarojs/taro'
3 3
 import CustomNav from '@/components/CustomNav'
4 4
 import logo from '@/assets/icons/comm/logo_small.png'
@@ -8,6 +8,10 @@ import Guide from './tabs/Guide'
8 8
 import Mine from './tabs/Mine'
9 9
 import Recommend from './tabs/Recommend'
10 10
 import './index.less'
11
+import { getLocation } from '@/utils/location'
12
+import { getIndexType,  getResourceList } from '@/services/home'
13
+
14
+
11 15
 
12 16
 export default withLayout((props) => {
13 17
   const { router, person } = props
@@ -16,12 +20,27 @@ export default withLayout((props) => {
16 20
 
17 21
   const [currentTab, setCurrentTab] = useState(0)
18 22
 
23
+  const locRef = useRef()
24
+
19 25
 
20 26
   const handleTabChange = (e) => {
21 27
     const { index } = e.detail
22 28
     setCurrentTab(index)
23 29
   }
24 30
 
31
+  const [queryParams, setQueryParams] = useState({ location: '', pageNum: 1, pageSize: 10, typeId: '' })
32
+
33
+
34
+  useEffect(() => {
35
+    getLocation().then((res) => {
36
+      locRef.current = `${res.longitude},${res.latitude}`
37
+      setQueryParams({
38
+        ...queryParams,
39
+        location: locRef.current
40
+      })
41
+    })  
42
+  }, [])
43
+
25 44
   useEffect(() => {
26 45
     if (tab) {
27 46
       setCurrentTab(tab - 0)
@@ -33,7 +52,7 @@ export default withLayout((props) => {
33 52
         <CustomNav logo={logo} title='十公里' />
34 53
       </view>
35 54
       <view className='index-container'>
36
-        {currentTab === 0 && <Recommend />}
55
+        {currentTab === 0 && <Recommend loc={locRef} qp={queryParams}/>}
37 56
         {currentTab === 1 && <Guide person={person} router={router} />}
38 57
         {/* {currentTab === 2 && <Strategy />} */}
39 58
         {currentTab === 2 && <Mine person={person} />}

+ 10
- 15
src/pages/index/tabs/Recommend.jsx 查看文件

@@ -11,15 +11,20 @@ import './less/Recommend.less'
11 11
 
12 12
 
13 13
 export default (props) => {
14
-  const { router, person } = props
14
+  const { router, person, loc,qp } = props
15 15
   const [activeTab, setActiveTab] = useState(0)
16 16
   const { params } = useRouter()
17 17
   const { tabJump } = params || {}
18 18
   const [typeList, setTypeList] = useState([])
19 19
   
20
-  const locRef = useRef()
21
-
22
-  const [queryParams, setQueryParams] = useState({ location: '', pageNum: 1, pageSize: 10, typeId: '' })
20
+  const locRef = useRef(loc)
21
+  // if(locRef.current==null){
22
+  //     Taro.showLoading()
23
+  //   }
24
+  //   if (locRef.current!=null) {
25
+  //     Taro.hideLoading()
26
+  //   }
27
+  const [queryParams, setQueryParams] = useState(qp)
23 28
 
24 29
   // 获取资源表信息
25 30
   const [alllist, setAllList] = useState([])
@@ -40,14 +45,7 @@ export default (props) => {
40 45
   }
41 46
 
42 47
   useEffect(() => {
43
-    getLocation().then((res) => {
44
-      locRef.current = `${res.longitude},${res.latitude}`
45
-      setQueryParams({
46
-        ...queryParams,
47
-        location: locRef.current
48
-      })
49
-    })
50
-
48
+    
51 49
     //查询分类标签表
52 50
     getIndexType({ pageSize: 20 }).then((res) => {
53 51
       setTypeList(res.records || [])
@@ -78,9 +76,6 @@ export default (props) => {
78 76
   }
79 77
 
80 78
 
81
-  const RefreshCard=()=>{
82
-    console.log(1111)
83
-  }
84 79
 
85 80
   
86 81
   return (

+ 2
- 2
src/pages/index/tabs/less/Recommend.less 查看文件

@@ -141,7 +141,7 @@
141 141
     }
142 142
   }
143 143
   .tabs-Unselected {
144
-    width: 20vw;      
144
+    width: 25vw;      
145 145
     font-weight: bold;
146 146
     color: #C0C8D3; 
147 147
     text-align: center;
@@ -154,7 +154,7 @@
154 154
   .tabs-Selected {
155 155
     font-size: 32px;
156 156
     color: #4C4C4C;
157
-    width: 20vw;      
157
+    width: 25vw;      
158 158
     font-weight: bold;
159 159
     text-align: center;
160 160
     border-bottom: 6px solid #4C4C4C;