Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
T
TOSTUMI
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Maple
TOSTUMI
Commits
f208c44a
Commit
f208c44a
authored
Nov 05, 2020
by
cellee
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增小区搜索也一并新增,预定设施功能完善,预订列表提示等内容完善
Signed-off-by:
cellee
<
893264950@qq.com
>
parent
8ca7af94
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
577 additions
and
387 deletions
+577
-387
index.jsx
src/components/SelectOptions/index.jsx
+4
-5
CellList.ts
src/models/CommunityManagement/CellList.ts
+3
-1
Contract.ts
src/models/CommunityManagement/Contract.ts
+60
-64
FacilityBookings.ts
src/models/CommunityManagement/FacilityBookings.ts
+13
-2
Bookings.tsx
src/pages/CommunityManagement/FacilityBookings/Bookings.tsx
+270
-148
Facility.tsx
src/pages/CommunityManagement/FacilityBookings/Facility.tsx
+14
-14
FacilityBookings.tsx
...CommunityManagement/FacilityBookings/FacilityBookings.tsx
+40
-12
Bookings.less
...es/CommunityManagement/FacilityBookings/css/Bookings.less
+163
-141
tip.ts
src/utils/tip.ts
+10
-0
No files found.
src/components/SelectOptions/index.jsx
View file @
f208c44a
...
...
@@ -53,14 +53,12 @@ function getDotText(arr) {
}
}
class
SelectOptions
extends
React
.
Component
{
class
SelectOptions
extends
React
.
Pure
Component
{
state
=
{};
constructor
(
props
)
{
super
(
props
);
const
{
list
,
dispatch
,
checklist
}
=
this
.
props
;
console
.
log
(
list
);
if
(
list
==
null
)
{
//console.error("组件错误:没有数据导入")
}
...
...
@@ -102,7 +100,8 @@ class SelectOptions extends React.Component {
}
console
.
log
(
this
.
state
.
componetVisible
);
}
// console.log(this.props.list);
if
(
this
.
props
.
list
.
length
>
this
.
state
.
checkedList
.
length
)
{
}
// console.log(prevProps.list);
// if (this.props.list.length > prevProps.list.length) {
// console.log(this.props.list);
...
...
@@ -229,7 +228,7 @@ class SelectOptions extends React.Component {
};
// 索引 -- 全部点击
itemSelectAll
=
(
e
)
=>
{
console
.
log
(
this
.
props
.
list
);
//
console.log(this.props.list);
this
.
setState
({
checkedListOptions
:
this
.
props
.
list
,
checkedList
:
this
.
state
.
resultList
,
...
...
src/models/CommunityManagement/CellList.ts
View file @
f208c44a
...
...
@@ -64,8 +64,10 @@ export default {
switch
(
playload
.
index
)
{
case
24
:
{
let
CommunityList
=
null
;
yield
put
({
type
:
'Init/returnCommunityList'
,
CommunityList
});
let
Data
=
resp
.
data
;
let
CommunityList
=
resp
.
data
.
communityList
;
CommunityList
=
resp
.
data
.
communityList
;
yield
put
({
type
:
'returnPage'
,
Data
});
yield
put
({
type
:
'Init/returnCommunityList'
,
CommunityList
});
}
...
...
src/models/CommunityManagement/Contract.ts
View file @
f208c44a
...
...
@@ -2,117 +2,113 @@ import * as service from '../../services/tos';
import
{
message
}
from
'antd'
;
import
{
Link
,
useIntl
,
connect
,
Dispatch
,
history
}
from
'umi'
;
import
{
routerRedux
}
from
'dva/router'
import
{
routerRedux
}
from
'dva/router'
;
export
default
{
namespace
:
'Contract'
,
state
:
{
Data
:
{
data
:
[],
total
:
0
},
curString
:{},
curString
:
{},
Result
:
null
,
DataSave
:
null
,
DataSaveDetail
:
null
,
playload
:
{}
DataSaveDetail
:
null
,
playload
:
{},
},
reducers
:
{
returnPage
(
state
,
{
Data
})
{
returnPage
(
state
,
{
Data
})
{
return
{
...
state
,
Data
};
},
returnResult
(
state
,
{
Result
})
{
return
{
...
state
,
Result
};
returnResult
(
state
,
{
Result
})
{
return
{
...
state
,
Result
};
},
returnDataSave
(
state
,
{
DataSave
})
{
return
{
...
state
,
DataSave
}
return
{
...
state
,
DataSave
};
},
returnDataSaveDetail
(
state
,
{
DataSaveDetail
})
{
return
{
...
state
,
DataSaveDetail
}
return
{
...
state
,
DataSaveDetail
};
},
returnPath
(
state
,
{
playload
})
{
returnPath
(
state
,
{
playload
})
{
return
{
...
state
,
playload
};
},
},
effects
:
{
//预订设施查询
*
RA
({
playload
},
{
call
,
put
})
{
console
.
log
(
"开始请求"
)
console
.
log
(
'开始请求'
);
const
resp
=
yield
call
(
service
.
RA
,
playload
);
console
.
log
(
resp
)
if
(
resp
.
code
==
500
||
resp
.
error_code
!=
"0000"
)
{
console
.
log
(
resp
)
;
if
(
resp
.
code
==
500
||
resp
.
error_code
!=
'0000'
)
{
// window.location.href = '/500';
}
if
(
resp
.
error_code
!=
"0000"
)
{
console
.
log
(
"请求错误码:"
+
"("
+
playload
.
index
+
")"
+
resp
.
error_code
)
console
.
log
(
playload
)
}
else
{
if
(
resp
.
error_code
!=
'0000'
)
{
console
.
log
(
'请求错误码:'
+
'('
+
playload
.
index
+
')'
+
resp
.
error_code
);
console
.
log
(
playload
);
}
else
{
switch
(
playload
.
index
)
{
case
19
:
{
let
Data
=
resp
.
data
;
yield
put
({
type
:
'returnPage'
,
Data
});
}
break
;
let
Data
=
resp
.
data
;
yield
put
({
type
:
'returnPage'
,
Data
});
}
break
;
case
20
:
{
let
DataSaveDetail
=
resp
.
data
;
yield
put
({
type
:
'returnDataSaveDetail'
,
DataSaveDetail
});
}
break
;
case
27
:
{
message
.
success
(
'save success !'
);
var
tmp
=
resp
yield
put
({
type
:
'returnResult'
,
tmp
})
setTimeout
(
function
(){
history
.
goBack
()
},
1000
)
}
break
;
yield
put
({
type
:
'returnDataSaveDetail'
,
DataSaveDetail
});
}
break
;
case
27
:
{
message
.
success
(
'save success !'
);
var
tmp
=
resp
;
yield
put
({
type
:
'returnResult'
,
tmp
});
setTimeout
(
function
()
{
history
.
goBack
();
},
1000
);
}
break
;
}
}
},
// url 带参数
*
RA2
({
playload
},
{
call
,
put
}){
console
.
log
(
"开始请求"
)
const
resp
=
yield
call
(
service
.
RA2
,
playload
);
console
.
log
(
resp
)
},
//
*RA2({ playload }, { call, put }){
//
console.log("开始请求")
//
const resp = yield call(service.RA2, playload);
//
console.log(resp)
//
},
*
ResultClear
({
},
{
put
})
{
var
tmp
=
null
yield
put
({
type
:
'returnResult'
,
tmp
}
)
*
ResultClear
({},
{
put
})
{
var
tmp
=
null
;
yield
put
({
type
:
'returnResult'
,
tmp
});
},
*
SA
({
playload
},
{
call
,
put
})
{
var
DataSave
=
playload
yield
put
({
type
:
'returnDataSave'
,
DataSave
}
)
var
DataSave
=
playload
;
yield
put
({
type
:
'returnDataSave'
,
DataSave
});
},
*
Paths
({
playload
},
{
put
}){
yield
put
({
type
:
'returnPath'
,
playload
}
)
}
*
Paths
({
playload
},
{
put
})
{
yield
put
({
type
:
'returnPath'
,
playload
});
},
},
subscriptions
:
{
setup
({
dispatch
,
history
})
{
// 监听 路由
return
history
.
listen
(({
pathname
})
=>
{
let
path
=
{
path
:
pathname
}
dispatch
({
type
:
'Paths'
,
// 选择返回值
playload
:{
path
},
})
// 监听 路由
return
history
.
listen
(({
pathname
})
=>
{
let
path
=
{
path
:
pathname
,
};
dispatch
({
type
:
'Paths'
,
// 选择返回值
playload
:
{
path
,
},
});
}
}
});
},
},
};
src/models/CommunityManagement/FacilityBookings.ts
View file @
f208c44a
...
...
@@ -131,8 +131,14 @@ export default {
break
;
case
1
:
{
let
Data3
=
resp
.
data
;
yield
put
({
type
:
'returnPage3'
,
Data3
});
let
Data3
=
resp
.
data
;
if
(
JSON
.
stringify
(
Data3
)
==
"{}"
)
{
Data3
=
false
// 提示小区没有设施
message
.
error
(
'There Are No Facilities In The Community !'
);
}
yield
put
({
type
:
'returnPage3'
,
Data3
});
}
break
;
case
2
:{
...
...
@@ -154,6 +160,11 @@ export default {
let
tmp
=
resp
.
data
;
const
reg
=
[[
"url"
,
"categoriesImageUrl"
],
[
"name"
,
"categoriesName"
]]
const
reg2
=
[[
"url"
,
null
]]
//let sourceData = tmp;
// sourceData.categoriesOpenTime= timeToMoment(tmp.categoriesOpenTime);
// sourceData.categoriesName = Fromate(tmp.categoriesList, reg),
// sourceData.categoriesDetailsImageName = Fromate(tmp.facilitiesImageList, reg2)
let
sourceData
=
{
canReservationDay
:
tmp
.
canReservationDay
,
canReservationNum
:
tmp
.
canReservationNum
,
...
...
src/pages/CommunityManagement/FacilityBookings/Bookings.tsx
View file @
f208c44a
import
React
,
{
useState
,
useEffect
,
useRef
}
from
'react'
;
import
React
,
{
useState
,
useEffect
,
useRef
}
from
'react'
;
import
styles
from
'./css/Bookings.less'
;
import
{
Spin
,
Input
,
DatePicker
,
Button
,
Form
,
Radio
,
TimePicker
,
Row
,
Col
,
message
,
Result
}
from
'antd'
;
import
'./css/Bookings.less'
;
import
{
Spin
,
Input
,
DatePicker
,
Button
,
Form
,
Radio
,
TimePicker
,
Row
,
Col
,
message
,
Result
,
}
from
'antd'
;
const
{
RangePicker
}
=
TimePicker
;
import
{
connect
}
from
'umi'
;
import
{
DollarOutlined
,
ClockCircleOutlined
}
from
'@ant-design/icons'
;
import
{
connect
}
from
'umi'
;
import
TitleBack
from
'../../../components/TitleBack/TitleBack'
;
import
SearchOptionsCommnity
from
'../../../components/SearchOptions/SearchOptionsCommnity'
;
...
...
@@ -13,226 +26,335 @@ import SearchOptionsCommnity from '../../../components/SearchOptions/SearchOptio
import
{
numberToString
}
from
'../../../utils/string'
;
import
{
checkData
,
checkInput
}
from
'@/utils/method'
;
import
{
validateMessages
}
from
'@/utils/params'
;
const
Bookings
=
(
props
:
any
)
=>
{
const
{
dispatch
,
Data3
,
Result
,
DataSave
,
token
}
=
props
;
const
RA
=
(
index
:
any
,
values
:
any
)
=>
{
dispatch
({
type
:
'FacilityBookings/RA'
,
playload
:
{
index
:
index
,
body
:
values
}
})
};
const
IA
=
()
=>
{
dispatch
({
type
:
'FacilityBookings/IA'
})
};
const
SAClear
=
()
=>
{
dispatch
({
type
:
'FacilityBookings/SA'
,
playload
:
null
})
};
const
ResultClear
=
()
=>
{
dispatch
({
type
:
'FacilityBookings/ResultClear'
})
};
// 日期
import
moment
from
'moment'
;
import
{
BookingsTip
}
from
'@/utils/tip'
;
const
Bookings
=
(
props
:
any
)
=>
{
const
{
dispatch
,
Data3
,
Result
,
DataSave
,
token
,
load
}
=
props
;
const
RA
=
(
index
:
any
,
values
:
any
)
=>
{
dispatch
({
type
:
'FacilityBookings/RA'
,
playload
:
{
index
:
index
,
body
:
values
}
});
};
const
IA
=
()
=>
{
dispatch
({
type
:
'FacilityBookings/IA'
});
};
const
SAClear
=
()
=>
{
dispatch
({
type
:
'FacilityBookings/SA'
,
playload
:
null
});
};
const
ResultClear
=
()
=>
{
dispatch
({
type
:
'FacilityBookings/ResultClear'
});
};
const
[
comminityValues
,
setComminityValues
]
=
useState
(
null
);
const
[
curString
,
setCurString
]
=
useState
({
communityManagerFee
:
null
,
communityMargin
:
null
})
const
[
curString
,
setCurString
]
=
useState
({
communityManagerFee
:
null
,
communityMargin
:
null
,
categoriesOpenTime
:
null
,
}
as
any
);
const
[
loading
,
setLoading
]
=
useState
(
false
);
const
formRef
=
useRef
(
null
);
// 是否不可选
const
[
prohibit
,
setProhibit
]
=
useState
(
true
);
console
.
log
(
curString
);
useEffect
(()
=>
{
if
(
DataSave
!=
null
)
{
console
.
log
(
"页面进入参数"
)
console
.
log
(
DataSave
)
setComminityValues
(
DataSave
.
communityName
)
RA
(
1
,
{
userToken
:
token
,
communityName
:
DataSave
.
communityName
,
facilitieId
:
DataSave
.
id
})
if
(
DataSave
!=
null
)
{
console
.
log
(
'页面进入参数'
);
console
.
log
(
DataSave
)
;
setComminityValues
(
DataSave
.
communityName
)
;
RA
(
1
,
{
userToken
:
token
,
communityName
:
DataSave
.
communityName
,
facilitieId
:
DataSave
.
id
});
}
},
[
DataSave
]);
},
[
DataSave
]);
useEffect
(()
=>
{
IA
()
},
[]);
IA
()
;
},
[]);
useEffect
(()
=>
{
if
(
Result
!=
null
)
{
console
.
log
(
Result
)
console
.
log
(
Result
)
;
message
.
error
(
Result
.
msg
);
if
(
Result
.
index
==
1
)
{
IA
()
IA
()
;
}
setLoading
(
false
)
ResultClear
()
setLoading
(
false
)
;
ResultClear
()
;
}
},
[
Result
]);
useEffect
(()
=>
{
setLoading
(
false
)
if
(
Data3
!=
null
)
{
console
.
log
(
Data3
)
},
[
Result
]);
// 选择小区监听是不是有值
useEffect
(()
=>
{
setLoading
(
false
);
console
.
log
(
Data3
);
if
(
!
Data3
)
{
// 如果没有值 要把Data3 从 false 复原成 null 并提示
dispatch
({
type
:
'FacilityBookings/returnPage3'
});
}
},
[
Data3
]);
},
[
Data3
]);
const
format
=
'HH:mm'
;
const
getFacility
=
(
values
:
any
)
=>
{
SAClear
()
setComminityValues
(
values
)
console
.
log
(
values
)
RA
(
1
,
{
userToken
:
token
,
communityName
:
values
})
setLoading
(
true
)
}
const
format
=
"HH:mm"
const
checkParam
=
(
values
:
any
)
=>
{
var
flag
=
true
var
flag
=
true
;
for
(
var
i
in
values
)
{
// console.log(values[i]);
if
(
values
[
i
]
==
null
)
{
flag
=
false
flag
=
false
;
}
else
{
if
(
values
[
i
].
length
==
0
){
flag
=
false
}
}
if
(
values
[
i
].
length
==
0
)
{
flag
=
false
;
}
}
}
return
flag
}
return
flag
;
}
;
const
onFinish
=
(
value
:
any
)
=>
{
console
.
log
(
"Success:"
)
var
tmp
=
value
console
.
log
(
value
)
const
onFinish
=
(
value
:
any
)
=>
{
console
.
log
(
'Success:'
);
var
tmp
=
value
;
console
.
log
(
value
)
;
// tmp.categoriesId = null
// tmp.facilitiesId = null
// tmp.communityName = null
// tmp.communityManagerFee = null
// tmp.communityMargin=null
if
(
value
.
categoriesName
!=
null
)
{
tmp
.
categoriesId
=
value
.
categoriesName
.
categoriesId
tmp
.
facilitiesId
=
value
.
categoriesName
.
facilitiesId
tmp
.
categoriesName
=
value
.
categoriesName
.
categoriesName
tmp
.
categoriesId
=
value
.
categoriesName
.
categoriesId
;
tmp
.
facilitiesId
=
value
.
categoriesName
.
facilitiesId
;
tmp
.
categoriesName
=
value
.
categoriesName
.
categoriesName
;
}
if
(
value
.
subscribeDate
!=
null
)
{
tmp
.
subscribeDate
=
value
.
subscribeDate
.
format
(
'YYYY-M-D'
)
if
(
value
.
subscribeDate
!=
null
)
{
tmp
.
subscribeDate
=
value
.
subscribeDate
.
format
(
'YYYY-M-D'
);
}
if
(
value
.
reservedTimeList
!=
null
)
{
tmp
.
reservedTimeList
=
[
value
.
reservedTimeList
[
0
].
format
(
'HH:mm'
),
value
.
reservedTimeList
[
1
].
format
(
'HH:mm'
)]
tmp
.
reservedTimeList
=
[
value
.
reservedTimeList
[
0
].
format
(
'HH:mm'
),
value
.
reservedTimeList
[
1
].
format
(
'HH:mm'
),
];
}
if
(
comminityValues
!=
null
)
{
tmp
.
communityName
=
comminityValues
if
(
comminityValues
!=
null
)
{
tmp
.
communityName
=
comminityValues
;
}
if
(
curString
!=
null
)
{
tmp
.
communityManagerFee
=
numberToString
(
curString
.
communityManagerFee
)
tmp
.
communityMargin
=
numberToString
(
curString
.
communityMargin
)
tmp
.
communityManagerFee
=
numberToString
(
curString
.
communityManagerFee
);
tmp
.
communityMargin
=
numberToString
(
curString
.
communityMargin
);
}
if
(
tmp
.
accountName
.
length
<
2
)
{
message
.
error
(
"User Name Should be limit 2~30!"
,
3
)
if
(
tmp
.
accountName
.
length
<
2
)
{
message
.
error
(
'User Name Should be limit 2~30!'
,
3
);
}
else
{
//还差检测
if
(
checkParam
(
tmp
))
{
console
.
log
(
tmp
)
RA
(
11
,
tmp
)
console
.
log
(
tmp
)
;
RA
(
11
,
tmp
)
;
}
else
{
message
.
error
(
"Error,Please finish it,not empty!"
,
3
)
message
.
error
(
'Error,Please finish it,not empty!'
,
3
);
}
}
// console.log(checkParam(tmp))
// console.log(checkParam(tmp))
// console.log(comminityValues)
// console.log(tmp)
}
const
RadioChoose
=
(
e
:
any
)
=>
{
}
;
const
RadioChoose
=
(
e
:
any
)
=>
{
Data3
.
map
((
item
:
any
,
index
:
any
)
=>
{
item
.
categorieList
.
map
((
thing
:
any
,
i
:
any
)
=>
{
if
(
thing
.
categoriesId
==
(
e
.
target
.
value
)
.
categoriesId
)
{
item
.
categorieList
.
map
((
thing
:
any
,
i
:
any
)
=>
{
if
(
thing
.
categoriesId
==
e
.
target
.
value
.
categoriesId
)
{
setCurString
({
communityManagerFee
:
item
.
communityManagerFee
,
communityMargin
:
item
.
communityMargin
})
communityManagerFee
:
parseInt
(
item
.
communityManagerFee
).
toFixed
(
2
),
communityMargin
:
parseInt
(
item
.
communityMargin
).
toFixed
(
2
),
categoriesOpenTime
:
item
.
categoriesOpenTime
,
id
:
item
.
facilitiesId
,
});
// 选择后取消输入框禁止
setProhibit
(
false
);
// console.log(item.communityManagerFee)
// console.log(item.communityMargin)
}
})
})
});
});
};
// 选择小区名字发起请求
const
getFacility
=
(
values
:
any
)
=>
{
SAClear
();
setComminityValues
(
values
);
console
.
log
(
values
);
RA
(
1
,
{
userToken
:
token
,
communityName
:
values
});
setLoading
(
true
);
};
// 设置之前时间不能选择
function
disabledDate
(
current
:
any
)
{
return
current
&&
current
<=
moment
().
subtract
(
1
,
'days'
).
endOf
(
'day'
);
}
// 确认日期
const
confirmData
=
(
value
:
any
)
=>
{
console
.
log
(
value
);
};
return
(
<
div
className=
{
styles
.
base
}
>
{
/* 头部组件v1.2 */
}
<
TitleBack
title=
"Facility Bookings"
/>
<
div
className=
{
styles
.
box1
}
>
<
div
className=
{
styles
.
box1item1
}
>
Project
</
div
>
<
div
className=
{
styles
.
box1item1
}
>
Project
:
</
div
>
<
div
className=
{
styles
.
box1item2
}
>
<
Spin
spinning=
{
loading
}
tip=
"Finding..."
>
<
SearchOptionsCommnity
alone=
{
true
}
placeholder=
{
"Community Name"
}
defaultValue=
{
DataSave
!=
null
?
DataSave
.
communityName
:
null
}
onSubmit=
{
getFacility
}
/>
<
Spin
spinning=
{
loading
}
tip=
"Finding..."
>
<
SearchOptionsCommnity
alone=
{
true
}
placeholder=
{
'Community Name'
}
opname=
{
getFacility
}
defaultValue=
{
DataSave
!=
null
?
DataSave
.
communityName
:
null
}
// onSubmit={getFacility}
/>
</
Spin
>
{
/* <Input.Search style={{ width: 200, height: 32 }} onSearch={getFacility} loading={loading} defaultValue={}/> */
}
</
div
>
</
div
>
{
Data3
!=
null
?
{
Data3
?
(
<>
<
Form
ref=
{
formRef
}
name=
"basic"
onFinish=
{
onFinish
}
validateMessages=
{
validateMessages
}
>
<
div
className=
{
styles
.
box2
}
>
<
div
className=
{
styles
.
box2item1
}
>
Facility Bookings
</
div
>
<
Form
ref=
{
formRef
}
name=
"basic"
onFinish=
{
onFinish
}
validateMessages=
{
validateMessages
}
>
<
div
className=
{
styles
.
box2
}
>
<
div
className=
{
styles
.
box2item1
}
>
Facility Bookings :
</
div
>
<
div
className=
{
styles
.
box2item2
}
>
<
Form
.
Item
name=
"categoriesName"
>
<
Radio
.
Group
defaultValue=
{
1
}
onChange=
{
RadioChoose
}
>
{
Data3
.
map
((
item
:
any
,
index
:
any
)
=>
{
var
tmp
=
new
Array
()
item
.
categorieList
.
map
((
thing
:
any
,
i
:
any
)
=>
{
tmp
.
push
(<
Radio
key=
{
thing
.
categoriesId
}
value=
{
thing
}
>
{
thing
.
categoriesName
}
</
Radio
>)
})
return
(
tmp
)
})
}
<
Form
.
Item
name=
"categoriesName"
>
<
Radio
.
Group
defaultValue=
{
1
}
onChange=
{
RadioChoose
}
>
{
Data3
.
map
((
item
:
any
,
index
:
any
)
=>
{
var
tmp
=
new
Array
();
item
.
categorieList
.
map
((
thing
:
any
,
i
:
any
)
=>
{
tmp
.
push
(
<
Radio
key=
{
thing
.
categoriesId
}
value=
{
thing
}
>
{
thing
.
categoriesName
}
</
Radio
>,
);
});
return
tmp
;
})
}
</
Radio
.
Group
>
</
Form
.
Item
>
</
Form
.
Item
>
</
div
>
</
div
>
</
div
>
<
div
className=
{
styles
.
line
}
></
div
>
<
div
className=
{
styles
.
box3
}
>
<
div
className=
{
styles
.
box3item1
}
>
User Name
</
div
>
<
div
className=
{
styles
.
box3item2
}
><
Form
.
Item
name=
"accountName"
rules=
{
[{
required
:
true
,
min
:
2
,
max
:
30
}]
}
><
Input
style=
{
{
width
:
200
}
}
/></
Form
.
Item
></
div
>
<
div
className=
{
styles
.
box3item3
}
>
Contact Details
</
div
>
<
div
className=
{
styles
.
box3item4
}
><
Form
.
Item
name=
"accountPhone"
rules=
{
[{
required
:
true
},{
validator
:
checkData
,
trigger
:
'blur'
}]
}
><
Input
style=
{
{
width
:
200
}
}
/></
Form
.
Item
></
div
>
</
div
>
<
div
className=
{
styles
.
box4
}
>
<
div
className=
{
styles
.
box4item1
}
>
Unit
</
div
>
<
div
className=
{
styles
.
box4item2
}
><
Form
.
Item
name=
"buildNumber"
rules=
{
[{
required
:
true
},{
validator
:
checkData
,
trigger
:
'blur'
}]
}
><
Input
placeholder=
"building"
style=
{
{
width
:
80
}
}
/></
Form
.
Item
></
div
>
<
div
className=
{
styles
.
box4item3
}
>
#
</
div
>
<
div
className=
{
styles
.
box4item4
}
><
Form
.
Item
name=
"floorNumber"
rules=
{
[{
required
:
true
},{
validator
:
checkData
,
trigger
:
'blur'
}]
}
><
Input
placeholder=
"floor"
style=
{
{
width
:
80
}
}
/></
Form
.
Item
></
div
>
<
div
className=
{
styles
.
box4item5
}
>
——
</
div
>
<
div
className=
{
styles
.
box4item6
}
><
Form
.
Item
name=
"roomNumber"
rules=
{
[{
required
:
true
},{
validator
:
checkData
,
trigger
:
'blur'
}]
}
><
Input
placeholder=
"room"
style=
{
{
width
:
80
}
}
/></
Form
.
Item
></
div
>
</
div
>
<
div
className=
{
styles
.
line
}
></
div
>
<
div
className=
{
styles
.
box5
}
>
<
div
className=
{
styles
.
box5item1
}
>
Booking Schedule
</
div
>
<
div
className=
{
styles
.
box5item2
}
>
<
Row
gutter=
{
8
}
>
<
Col
><
Form
.
Item
name=
"subscribeDate"
rules=
{
[{
required
:
true
}]
}
><
DatePicker
/></
Form
.
Item
></
Col
>
<
Col
><
Form
.
Item
name=
"reservedTimeList"
rules=
{
[{
required
:
true
}]
}
><
RangePicker
format=
{
format
}
/></
Form
.
Item
></
Col
>
</
Row
>
<
div
className=
{
styles
.
line
}
></
div
>
<
div
className=
{
styles
.
box3
}
>
<
div
className=
{
styles
.
box3item1
}
>
User Name :
</
div
>
<
div
className=
{
styles
.
box3item2
}
>
<
Form
.
Item
name=
"accountName"
rules=
{
BookingsTip
[
0
]
}
>
<
Input
style=
{
{
width
:
200
}
}
placeholder=
"Name Of Subscriber"
disabled=
{
prohibit
}
/>
</
Form
.
Item
>
</
div
>
<
div
className=
{
styles
.
box3item3
}
>
Contact Details :
</
div
>
<
div
className=
{
styles
.
box3item4
}
>
<
Form
.
Item
name=
"accountPhone"
rules=
{
BookingsTip
[
1
]
}
>
<
Input
style=
{
{
width
:
200
}
}
placeholder=
"Contact Information"
disabled=
{
prohibit
}
/>
</
Form
.
Item
>
</
div
>
</
div
>
<
div
className=
{
styles
.
box4
}
>
<
div
className=
{
styles
.
box4item1
}
>
Unit :
</
div
>
<
div
className=
"divbox4"
>
<
Form
.
Item
name=
"buildNumber"
rules=
{
BookingsTip
[
2
]
}
>
<
Input
placeholder=
"Building"
style=
{
{
width
:
80
}
}
disabled=
{
prohibit
}
/>
</
Form
.
Item
>
<
span
className=
"jio"
>
#
</
span
>
<
Form
.
Item
name=
"floorNumber"
rules=
{
BookingsTip
[
3
]
}
>
<
Input
placeholder=
"Floor"
style=
{
{
width
:
80
}
}
disabled=
{
prohibit
}
/>
</
Form
.
Item
>
<
span
className=
"heng"
>
--
</
span
>
<
Form
.
Item
name=
"roomNumber"
rules=
{
BookingsTip
[
4
]
}
>
<
Input
placeholder=
"Room"
style=
{
{
width
:
80
}
}
disabled=
{
prohibit
}
/>
</
Form
.
Item
>
</
div
>
</
div
>
{
curString
.
communityManagerFee
!=
null
?
<>
<
div
className=
{
styles
.
box6
}
>
<
div
className=
{
styles
.
box6item1
}
>
Management fee required
</
div
>
<
div
className=
{
styles
.
box6item2
}
>
$
{
curString
.
communityManagerFee
}
</
div
>
<
div
className=
{
styles
.
line
}
></
div
>
<
div
className=
{
styles
.
box5
}
>
<
div
className=
{
styles
.
box5item1
}
>
Booking Schedule :
</
div
>
<
div
className=
{
styles
.
box5item2
}
>
<
Row
gutter=
{
8
}
>
<
Col
>
<
Form
.
Item
name=
"subscribeDate"
rules=
{
BookingsTip
[
5
]
}
>
<
DatePicker
placeholder=
"Select Date"
disabledDate=
{
disabledDate
}
onChange=
{
confirmData
}
disabled=
{
prohibit
}
/>
</
Form
.
Item
>
</
Col
>
<
Col
>
<
Form
.
Item
name=
"reservedTimeList"
rules=
{
BookingsTip
[
6
]
}
>
<
RangePicker
placeholder=
{
[
'Start Time'
,
'End Time'
]
}
format=
{
format
}
disabled=
{
prohibit
}
/>
</
Form
.
Item
>
</
Col
>
</
Row
>
</
div
>
</
div
>
{
curString
.
communityManagerFee
!=
null
?
(
<>
<
div
className=
{
styles
.
box6
}
>
<
div
className=
{
styles
.
box6item1
}
>
Management fee required :
</
div
>
<
div
className=
{
styles
.
box6item2
}
>
<
DollarOutlined
style=
{
{
color
:
'#999'
}
}
/>
{
curString
.
communityManagerFee
}
</
div
>
</
div
>
<
div
className=
{
styles
.
box6
}
>
<
div
className=
{
styles
.
box6item1
}
>
Deposit is required
</
div
>
<
div
className=
{
styles
.
box6item2
}
>
$
{
curString
.
communityMargin
}
</
div
>
</
div
>
</>:
null
}
<
div
className=
{
styles
.
box6
}
>
<
div
className=
{
styles
.
box6item1
}
>
Deposit is required :
</
div
>
<
div
className=
{
styles
.
box6item2
}
>
<
DollarOutlined
style=
{
{
color
:
'#999'
}
}
/>
{
curString
.
communityMargin
}
</
div
>
</
div
>
<
div
className=
{
styles
.
line
}
></
div
><
Button
htmlType=
"submit"
type=
"primary"
style=
{
{
width
:
80
,
height
:
32
}
}
>
Submit
</
Button
>
<
div
className=
{
styles
.
box6
}
>
<
div
className=
{
styles
.
box6item1
}
>
Opening Hours :
</
div
>
<
div
className=
{
styles
.
box6item2
}
>
<
ClockCircleOutlined
style=
{
{
color
:
'#999'
}
}
/>
{
curString
.
categoriesOpenTime
}
</
div
>
</
div
>
</>
)
:
null
}
<
div
className=
{
styles
.
line
}
></
div
>
<
Button
htmlType=
"submit"
type=
"primary"
loading=
{
false
}
style=
{
{
width
:
80
,
height
:
32
}
}
>
Submit
</
Button
>
</
Form
>
</>
:
null
}
</>
)
:
null
}
</
div
>
);
};
function
mapStateToProps
(
state
:
any
)
{
const
{
Data3
,
Result
,
DataSave
}
=
state
.
FacilityBookings
;
const
{
token
}
=
state
.
login
;
function
mapStateToProps
(
state
:
any
)
{
const
{
Data3
,
Result
,
DataSave
}
=
state
.
FacilityBookings
;
const
{
token
}
=
state
.
login
;
return
{
Data3
,
Result
,
...
...
src/pages/CommunityManagement/FacilityBookings/Facility.tsx
View file @
f208c44a
...
...
@@ -66,17 +66,14 @@ const Facility = (props: any) => {
const
formRef
=
useRef
(
null
);
// 进来先清空上传图片列表
useEffect
(()
=>
{
dispatch
({
type
:
module
+
'/overAllImgList'
});
},
[
1
]);
// 再监听列表
const
[
extImgList
,
setextImgList
]
=
useState
(
imgList
);
useEffect
(()
=>
{
console
.
log
(
'变化'
);
console
.
log
(
imgList
);
setextImgList
(
imgList
);
if
(
imgList
!=
null
)
{
setextImgList
(
imgList
);
}
},
[
imgList
]);
useEffect
(()
=>
{
...
...
@@ -144,12 +141,12 @@ const Facility = (props: any) => {
var
result
=
values
;
// 过滤表单;
let
imgs
=
extImgList
.
filter
((
item
:
any
)
=>
(
Object
.
keys
(
item
).
length
==
0
?
false
:
true
));
console
.
log
(
imgs
.
length
);
// 开放时间判断
if
(
imgs
.
length
<
1
)
{
message
.
error
(
'
请至少上传一个设施
'
);
if
(
imgs
.
length
==
0
)
{
message
.
error
(
'
Please upload at least one facility!
'
);
}
else
if
(
!
result
.
endTime
&&
!
result
.
startTime
)
{
message
.
error
(
'
请选择开放时间
'
);
message
.
error
(
'
Please select the opening time!
'
);
}
else
{
// 先处理设施和时间
let
categoriesName
:
any
=
[];
...
...
@@ -161,13 +158,16 @@ const Facility = (props: any) => {
if
(
imgs
[
i
].
name
&&
imgs
[
i
].
pic
)
{
categoriesName
[
i
]
=
`
${
imgs
[
i
].
name
}
&
${
imgs
[
i
].
pic
}
`
;
}
else
{
message
.
error
(
'
请填写设备名称
'
);
message
.
error
(
'
Please fill in the name of the facility!
'
);
return
;
}
}
result
.
categoriesName
=
categoriesName
;
result
.
reservationQuantumTime
=
reservationQuantumTime
;
result
.
categoriesName
=
categoriesName
;
// 设施内容
result
.
reservationQuantumTime
=
reservationQuantumTime
;
// 开放时间段
result
.
categoriesOpenTime
=
`
${
result
.
startTime
}
-
${
result
.
endTime
}
`
;
// 预约时间段 二开需要
delete
result
.
startTime
;
delete
result
.
periodType
;
delete
result
.
picList
;
console
.
log
(
reservationQuantumTime
);
console
.
log
(
result
);
RA
(
6
,
result
);
...
...
src/pages/CommunityManagement/FacilityBookings/FacilityBookings.tsx
View file @
f208c44a
...
...
@@ -21,7 +21,9 @@ import { getUrlLastParams } from '../../../utils/string';
import
'./css/index.less'
;
import
ProTable
from
'@ant-design/pro-table'
;
import
{
PlusOutlined
,
SearchOutlined
,
ClearOutlined
}
from
'@ant-design/icons'
;
import
{
PlusOutlined
,
ClockCircleOutlined
,
ClearOutlined
}
from
'@ant-design/icons'
;
import
moment
from
'moment'
;
const
FacilityBookings
=
(
props
:
any
)
=>
{
const
{
formatMessage
}
=
useIntl
();
...
...
@@ -53,6 +55,8 @@ const FacilityBookings = (props: any) => {
const
goToFunction
=
()
=>
{
if
(
curString
.
tab
==
2
)
{
CA
();
// 先清空上传图片列表
dispatch
({
type
:
'FacilityBookings/overAllImgList'
});
}
history
.
push
(
location
.
pathname
+
(
curString
.
tab
==
1
?
'/Booking'
:
'/Adding'
));
};
...
...
@@ -78,10 +82,25 @@ const FacilityBookings = (props: any) => {
[
'Order Time'
,
null
,
(
text
:
any
,
record
:
any
)
=>
<
div
>
{
timestampToTime
(
record
.
createTime
.
time
)
}
</
div
>,
(
text
:
any
,
record
:
any
)
=>
(
<
div
>
<
ClockCircleOutlined
style=
{
{
color
:
'#666'
}
}
/>
{
moment
(
record
.
createTime
.
time
).
format
(
'YYYY-MM-DD'
)
}
</
div
>
),
],
[
'Booking Schedule'
,
'subscribeDate'
],
[
'Booking Schedule'
,
'subscribeDate'
,
(
text
:
any
)
=>
(
<
div
>
<
ClockCircleOutlined
style=
{
{
color
:
'#666'
}
}
/>
{
text
}
</
div
>
),
],
[
'Fee'
,
'managerFeeStatus'
,
(
text
:
any
)
=>
<
div
>
{
managerFeeStatusDes
[
text
]
}
</
div
>],
[
'Deposit'
,
'marginFeeStatus'
,
(
text
:
any
)
=>
<
div
>
{
marginFeeStatusDes
[
text
]
}
</
div
>],
[
'Status'
,
'status'
,
(
text
:
any
)
=>
<
div
>
{
statusDes
[
text
]
}
</
div
>],
...
...
@@ -268,7 +287,7 @@ const FacilityBookings = (props: any) => {
<
Tabs
defaultActiveKey=
{
curString
.
tab
.
toString
()
}
onChange=
{
TabCallback
}
>
<
TabPane
tab=
"Facility Bookings"
key=
"1"
>
<
Table
<
Pro
Table
loading=
{
loading
}
rowKey=
"id"
style=
{
{
marginTop
:
16
}
}
...
...
@@ -280,6 +299,22 @@ const FacilityBookings = (props: any) => {
showSizeChanger
:
false
,
onChange
:
Pagechange
,
}
}
search=
{
false
}
toolBarRender=
{
()
=>
[
<
Button
key=
"3"
type=
"primary"
onClick=
{
goToFunction
}
>
<
PlusOutlined
/>
添加预约
</
Button
>,
]
}
options=
{
{
density
:
true
,
fullScreen
:
true
,
reload
:
()
=>
{
// onReset();
},
setting
:
false
,
}
}
headerTitle=
"预约列表"
/>
</
TabPane
>
...
...
@@ -299,14 +334,7 @@ const FacilityBookings = (props: any) => {
// pagination={false} // 隐藏默认分页
search=
{
false
}
toolBarRender=
{
()
=>
[
<
Button
key=
"3"
type=
"primary"
onClick=
{
()
=>
{
// goToAdd(0,
{});
goToFunction
();
}
}
>
<
Button
key=
"3"
type=
"primary"
onClick=
{
goToFunction
}
>
<
PlusOutlined
/>
添加设施
</
Button
>,
...
...
src/pages/CommunityManagement/FacilityBookings/css/Bookings.less
View file @
f208c44a
...
...
@@ -2,167 +2,189 @@
//基石
.base {
width: 100%;
background-color: #ffffff;
padding: 34px;
min-width: 1020px;
width: 100%;
background-color: #ffffff;
padding: 20px;
}
//头部组件
.box{
width: 100%;
height: 64px;
position: relative;
}
.item1{
position: absolute;
width: 180px;
text-align: center;
border-left: 5px solid rgba(24,144,255,
1);
font-family:
'Source Han Sans CN';
font-size: 18px;
font-weight: 600;
color: #000000;
}
.item2{
width:300px
;
position: absolute
;
left: (300px)
;
line-height: 30px;
}
.item4{
position: absolute
;
left: (500px)
;
line-height: 30px;
}
.item3{
width:80
px;
height: 32px
;
position: absolute
;
right: 0;
outline
: none;
background:none
;
cursor: pointer;
border:1px solid rgba(217,217,217,1)
;
border-radius:2px;
}
.box1{
width: 100%
;
height: 34px
;
position: relative
;
margin-bottom: 26px;
}
.box1item1{
position: absolute
;
}
.box1item2{
position: absolute;
left: 161
px;
}
.box2{
width: 100%;
position: relative;
}
.box2item1{
position: absolute
;
}
.box2item2{
width: 336px;
padding-left: 161
px;
.box
{
width: 100%;
height: 64px;
position: relative;
}
.item1
{
position: absolute;
width: 180px;
text-align: center;
border-left: 5px solid rgba(24, 144, 255,
1);
font-family:
'Source Han Sans CN';
font-size: 18px;
font-weight: 600;
color: #000000;
}
.item2 {
width: 300px;
position: absolute
;
left: (300px)
;
line-height: 30px
;
}
.item4 {
position: absolute;
left: (500px)
;
line-height: 30px
;
}
.item3 {
width: 80px;
height: 32
px;
position: absolute
;
right: 0
;
outline: none;
background
: none;
cursor: pointer
;
border: 1px solid rgba(217, 217, 217, 1);
border-radius: 2px
;
}
.box1 {
width: 100%;
height: 34px
;
position: relative
;
margin-bottom: 26px
;
}
.box1item1 {
position: absolute;
line-height: 32px
;
}
.box1item2
{
position: absolute;
left: 135
px;
}
.box2
{
width: 100%;
position: relative;
}
.box2item1 {
position: absolute;
line-height: 32px
;
}
.box2item2
{
width: 336px;
padding-left: 135
px;
}
// 线栏
.line{
.line {
width: 100%;
height: 1px;
border-top: 1px solid rgba(217, 217, 217, 1);
margin-top: 28px;
margin-bottom: 28px;
}
.box3 {
width: 100%;
height: 32px;
position: relative;
margin-bottom: 28px;
}
.box3item1 {
position: absolute;
line-height: 32px;
}
.box3item2 {
position: absolute;
left: 135px;
}
.box3item3 {
position: absolute;
left: 467px;
line-height: 32px;
}
.box3item4 {
position: absolute;
left: 592px;
}
.box4 {
width: 100%;
min-height: 32px;
position: relative;
&::after {
content: '';
display: block;
width: 100%;
height: 1px;
border-top: 1px solid rgba(217,217,217,1);
margin-top: 28px;
margin-bottom: 28px;
clear: both;
}
}
.box3{
width: 100%;
height: 32px;
position: relative;
margin-bottom: 28px;
.box4item1 {
position: absolute;
line-height: 32px;
}
.box3item1{
position: absolute;
.box4item2 {
position: absolute;
left: 135px;
}
.box
3item2
{
position: absolute;
left: 161
px;
.box
4item3
{
position: absolute;
left: 257
px;
}
.box
3item3
{
position: absolute;
left: 467
px;
.box
4item4
{
position: absolute;
left: 281
px;
}
.box
3item4
{
position: absolute;
left: 592
px;
.box
4item5
{
position: absolute;
left: 365
px;
}
.box4{
width: 100%;
height: 32px;
position: relative;
}
.box4item1{
position: absolute;
}
.box4item2{
position: absolute;
left: 161px;
.box4item6 {
position: absolute;
left: 380px;
}
.box4item3{
position: absolute;
left: 257px;
}
.box4item4{
position: absolute;
left: 281px;
.box5 {
width: 100%;
height: 32px;
position: relative;
margin-bottom: 28px;
}
.box
4item5
{
position: absolute;
left: 365
px;
.box
5item1
{
position: absolute;
line-height: 32
px;
}
.box4item6{
position: absolute;
left: 380px;
.box5item2 {
position: absolute;
left: 135px;
}
.box5{
width: 100%;
height: 32px;
position: relative;
margin-bottom: 28px;
.box6 {
width: 100%;
height: 32px;
position: relative;
margin-bottom: 20px;
}
.box
5item1
{
position: absolute;
.box
6item1
{
position: absolute;
}
.box
5item2
{
position: absolute;
left: 161
px;
.box
6item2
{
position: absolute;
left: 216
px;
}
.box6{
width: 100%;
height: 32px;
position: relative;
}
.box6item1{
position: absolute;
.divbox4 {
position: absolute;
left: 135px;
.ant-form-item {
display: inline-block;
}
.jio,
.heng {
display: inline-block;
line-height: 32px;
margin: 0 20px;
}
}
.box6item2{
position: absolute;
left: 216px;
}
\ No newline at end of file
src/utils/tip.ts
View file @
f208c44a
...
...
@@ -40,3 +40,13 @@ export const NewFaci = [
[{
required
:
false
,
message
:
'Required'
}],
[{
required
:
false
,
message
:
'Required'
}],
];
// 设施预订
export
const
BookingsTip
=
[
[{
required
:
false
,
message
:
'Please select community'
}],
[{
required
:
false
,
message
:
'Please input Facility Name'
}],
[{
required
:
false
,
message
:
'Please Set management fee'
}],
[{
required
:
false
,
message
:
'Please Set Setting deposit'
}],
[{
required
:
false
,
message
:
'Please Upload facility photos'
}],
[{
required
:
false
,
message
:
'Required'
}],
];
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment