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
c9dd3d6c
Commit
c9dd3d6c
authored
Nov 04, 2020
by
Sixiang_Zzb
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'final' of
http://120.77.240.215:9701/Maple/tostumi
into final
parents
52713595
a17c7b26
Changes
20
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
2316 additions
and
924 deletions
+2316
-924
BackButton.tsx
src/components/BackButton/BackButton.tsx
+3
-1
Facilitys.tsx
src/components/Facilitys/Facilitys.tsx
+144
-0
index.less
src/components/Facilitys/index.less
+23
-0
PictureOptionsRow.tsx
src/components/PictureOptions/PictureOptionsRow.tsx
+22
-19
CommunityAnnouncement.ts
src/models/CommunityManagement/CommunityAnnouncement.ts
+28
-14
VisitorRecord.ts
src/models/CommunityManagement/VisitorRecord.ts
+26
-29
Adds.tsx
src/pages/CommunityManagement/CellList/Adds.tsx
+10
-4
Details.tsx
src/pages/CommunityManagement/CellList/Details.tsx
+6
-1
Add.tsx
src/pages/CommunityManagement/CommunityAnnouncement/Add.tsx
+80
-44
CommunityAnnouncement.tsx
...anagement/CommunityAnnouncement/CommunityAnnouncement.tsx
+8
-7
Detail.tsx
...ages/CommunityManagement/CommunityAnnouncement/Detail.tsx
+131
-79
Facility copy.tsx
...es/CommunityManagement/FacilityBookings/Facility copy.tsx
+439
-0
Facility.tsx
src/pages/CommunityManagement/FacilityBookings/Facility.tsx
+325
-200
FacilityBookings.tsx
...CommunityManagement/FacilityBookings/FacilityBookings.tsx
+274
-166
index.less
...pages/CommunityManagement/FacilityBookings/css/index.less
+261
-213
VisitorRecord copy.tsx
.../CommunityManagement/VisitorRecord/VisitorRecord copy.tsx
+92
-0
VisitorRecord.tsx
...pages/CommunityManagement/VisitorRecord/VisitorRecord.tsx
+212
-71
index.less
src/pages/CommunityManagement/VisitorRecord/index.less
+9
-0
VisitorRecord.tsx
...pages/CommunityManagement/visitorRecord/VisitorRecord.tsx
+212
-71
tip.ts
src/utils/tip.ts
+11
-5
No files found.
src/components/BackButton/BackButton.tsx
View file @
c9dd3d6c
...
@@ -30,7 +30,9 @@ const BackButton = (props: any) => {
...
@@ -30,7 +30,9 @@ const BackButton = (props: any) => {
return
(
return
(
<>
<>
{
url
!=
null
?
(
{
url
!=
null
?
(
<
Button
onClick=
{
goToReturnByParam
}
>
Back
</
Button
>
<
Button
onClick=
{
goToReturnByParam
}
>
<
LeftOutlined
/>
Back
</
Button
>
)
:
(
)
:
(
<
Button
onClick=
{
goToReturn
}
>
<
Button
onClick=
{
goToReturn
}
>
<
LeftOutlined
/>
<
LeftOutlined
/>
...
...
src/components/Facilitys/Facilitys.tsx
0 → 100644
View file @
c9dd3d6c
import
React
,
{
useState
,
useEffect
,
useRef
}
from
'react'
;
import
'./index.less'
;
import
{
Input
,
Button
,
Upload
,
Form
,
Select
,
message
}
from
'antd'
;
const
{
Option
}
=
Select
;
import
{
PlusOutlined
}
from
'@ant-design/icons'
;
import
{
Link
,
useIntl
,
connect
,
Dispatch
,
history
}
from
'umi'
;
import
{
event
}
from
'@/.umi/plugin-locale/locale'
;
const
Facilitys
=
(
props
:
any
)
=>
{
//传递值
const
{
updata
,
disabled
}
=
props
;
console
.
log
(
disabled
);
//上传列表
const
[
fileList
,
setFileList
]
=
useState
([[],
[],
[],
[],
[]]);
// 新增按钮
const
uploadButton
=
(
<
div
>
<
PlusOutlined
/>
<
div
className=
"ant-upload-text"
>
Upload
</
div
>
</
div
>
);
// 上传属性
const
uploadProps
=
{
listType
:
'picture-card'
,
accept
:
'.jpeg,.png,.jpg'
,
action
:
'/tos/image/upload'
,
// fileList: fileList,
onChange
(
info
:
any
)
{
console
.
log
(
info
);
if
(
info
.
file
.
status
===
'done'
)
{
message
.
success
(
`
${
info
.
file
.
name
}
file uploaded successfully`
);
// 拿到key 值 开始存储
let
key
=
info
.
fileList
[
0
].
response
.
data
.
identification
;
let
list
=
fileList
;
list
[
key
]
=
info
.
fileList
;
setFileList
(
list
);
console
.
log
(
fileList
);
}
else
if
(
info
.
file
.
status
===
'error'
)
{
message
.
error
(
`
${
info
.
file
.
name
}
file upload failed.`
);
}
},
};
// 上传
const
carryData
=
(
key
:
any
)
=>
{
updata
.
identification
=
key
;
return
updata
;
};
// const handleChange = {};
// const handleChange = (key) => {
// console.log(key);
// // let tmp = fileList;
// // setFileList(tmp.filter((file) => !!file.status));
// // if (file.status == 'done') {
// // console.log(fileList);
// // message.success(file.name, 3);
// // if (props.reg != null) {
// // // onChange(Fromate2(fileList,props.reg))
// // } else {
// // // onChange(fileList)
// // }
// // }
// };
return
(
<>
<
Form
.
List
name=
"names"
rules=
{
[
{
validator
:
async
(
_
,
names
)
=>
{
// if (!names || names.length < 2)
{
// return Promise.reject(new Error('At least 2 passengers'));
//
}
},
},
]
}
>
{
(
fields
,
{
add
,
remove
},
{
errors
})
=>
(
<>
{
fields
.
map
((
field
,
index
)
=>
(
<
Form
.
Item
required=
{
false
}
key=
{
field
.
key
}
style=
{
{
marginBottom
:
0
}
}
>
{
/* 每一个上传的组件 */
}
<
div
className=
{
'test'
}
>
<
div
className=
{
'diybox'
}
>
<
Upload
fileList=
{
fileList
[
field
.
key
]
}
data=
{
carryData
(
field
.
key
)
}
{
...
uploadProps
}
disabled=
{
disabled
}
>
{
fileList
[
field
.
key
].
length
>=
1
?
null
:
uploadButton
}
</
Upload
>
<
div
className=
{
'Facility'
}
>
<
Form
.
Item
label=
{
`Facility Name ${index}`
}
name=
{
field
.
key
}
rules=
{
[{
required
:
true
,
message
:
'Please input Facility Name!'
}]
}
>
<
Input
placeholder=
"Facility Name"
disabled=
{
disabled
}
/>
</
Form
.
Item
>
<
div
className=
{
'over'
}
>
{
fields
.
length
>
1
?
(
<
Button
type=
"link"
disabled=
{
disabled
}
onClick=
{
()
=>
remove
(
field
.
name
)
}
>
Delete
</
Button
>
)
:
null
}
</
div
>
</
div
>
</
div
>
</
div
>
</
Form
.
Item
>
))
}
{
fields
.
length
<
5
?
(
<
Form
.
Item
>
<
Button
type=
"dashed"
onClick=
{
()
=>
add
()
}
style=
{
{
width
:
'100px'
,
height
:
'100px'
}
}
icon=
{
<
PlusOutlined
/>
}
disabled=
{
disabled
}
></
Button
>
<
Form
.
ErrorList
errors=
{
errors
}
/>
</
Form
.
Item
>
)
:
null
}
</>
)
}
</
Form
.
List
>
</>
);
};
export
default
Facilitys
;
src/components/Facilitys/index.less
0 → 100644
View file @
c9dd3d6c
.test {
width: 240px;
display: flex;
margin-right: 20px;
.ant-upload-picture-card-wrapper {
width: 110px;
}
.ant-form-item {
margin-bottom: 5px;
}
.diybox {
display: flex;
justify-content: space-between;
.name {
width: 100px;
display: inline-block;
margin-left: 10px;
}
.over {
text-align: center;
}
}
}
src/components/PictureOptions/PictureOptionsRow.tsx
View file @
c9dd3d6c
...
@@ -21,7 +21,7 @@ const uploadButton = (
...
@@ -21,7 +21,7 @@ const uploadButton = (
);
);
import
{
getUrlPicName
}
from
'../../utils/string'
;
import
{
getUrlPicName
}
from
'../../utils/string'
;
const
PictureOptionsRow
=
(
props
:
any
)
=>
{
const
PictureOptionsRow
=
(
props
:
any
)
=>
{
const
{
value
,
onChange
,
limitNums
}
=
props
;
const
{
value
,
onChange
,
limitNums
,
over
}
=
props
;
const
[
fileList
,
setFileList
]
=
useState
([]);
const
[
fileList
,
setFileList
]
=
useState
([]);
const
[
previewVisible
,
setPreviewVisible
]
=
useState
(
false
);
const
[
previewVisible
,
setPreviewVisible
]
=
useState
(
false
);
const
[
previewImage
,
setPreviewImage
]
=
useState
(
''
);
const
[
previewImage
,
setPreviewImage
]
=
useState
(
''
);
...
@@ -59,24 +59,24 @@ const PictureOptionsRow = (props: any) => {
...
@@ -59,24 +59,24 @@ const PictureOptionsRow = (props: any) => {
useEffect
(()
=>
{
useEffect
(()
=>
{
// if (props.disabled) {
// if (props.disabled) {
if
(
props
.
defaultValue
!=
null
)
{
if
(
props
.
defaultValue
!=
null
)
{
var
tmp
=
props
.
defaultValue
;
var
tmp
=
props
.
defaultValue
;
var
result
=
new
Array
();
var
result
=
new
Array
();
var
resultToInside
=
new
Array
();
var
resultToInside
=
new
Array
();
// console.log('组件');
// console.log('组件');
// console.log(tmp);
// console.log(tmp);
tmp
.
map
((
item
:
any
,
index
:
any
)
=>
{
tmp
.
map
((
item
:
any
,
index
:
any
)
=>
{
if
(
item
.
name
==
null
)
{
if
(
item
.
name
==
null
)
{
item
.
name
=
getUrlPicName
(
item
.
url
);
item
.
name
=
getUrlPicName
(
item
.
url
);
item
.
uid
=
index
;
item
.
uid
=
index
;
}
}
result
.
push
(
item
);
result
.
push
(
item
);
resultToInside
.
push
(
item
.
name
);
resultToInside
.
push
(
item
.
name
);
});
});
setFileList
(
result
);
setFileList
(
result
);
}
}
// }
// }
},
[
props
.
defaultValue
]);
},
[
props
.
defaultValue
]);
// useEffect(() => {
// useEffect(() => {
...
@@ -111,6 +111,9 @@ const PictureOptionsRow = (props: any) => {
...
@@ -111,6 +111,9 @@ const PictureOptionsRow = (props: any) => {
};
};
const
handleChange
=
({
file
,
fileList
})
=>
{
const
handleChange
=
({
file
,
fileList
})
=>
{
// 给传递的附加名字
// props.data.fileName = fileList[0].name;
console
.
log
(
props
.
data
);
console
.
log
(
fileList
);
console
.
log
(
fileList
);
let
tmp
=
fileList
;
let
tmp
=
fileList
;
setFileList
(
tmp
.
filter
((
file
)
=>
!!
file
.
status
||
file
.
status
==
null
));
setFileList
(
tmp
.
filter
((
file
)
=>
!!
file
.
status
||
file
.
status
==
null
));
...
@@ -141,7 +144,7 @@ const PictureOptionsRow = (props: any) => {
...
@@ -141,7 +144,7 @@ const PictureOptionsRow = (props: any) => {
fileList=
{
fileList
}
fileList=
{
fileList
}
onPreview=
{
handlePreview
}
onPreview=
{
handlePreview
}
onChange=
{
handleChange
}
onChange=
{
handleChange
}
disabled=
{
props
.
disabled
}
disabled=
{
props
.
over
}
beforeUpload=
{
beforeUpload
}
beforeUpload=
{
beforeUpload
}
>
>
{
fileList
.
length
>=
limitNum
?
null
:
props
.
disabled
?
null
:
uploadButton
}
{
fileList
.
length
>=
limitNum
?
null
:
props
.
disabled
?
null
:
uploadButton
}
...
...
src/models/CommunityManagement/CommunityAnnouncement.ts
View file @
c9dd3d6c
...
@@ -9,10 +9,11 @@ import { printf } from '@/utils/log';
...
@@ -9,10 +9,11 @@ import { printf } from '@/utils/log';
export
default
{
export
default
{
namespace
:
'CommunityAnnouncement'
,
namespace
:
'CommunityAnnouncement'
,
state
:
{
state
:
{
Data
:
null
,
//公告列表
Data
:
null
,
//公告列表
Result
:
null
,
//新增、编辑保存成功信息
Result
:
null
,
//新增、编辑保存成功信息
DataSave
:
null
,
// 列表内容
DataSave
:
null
,
// 列表内容
DataSaveDetail
:
{
pageNum
:
1
},
// 页码
DataSaveDetail
:
{
pageNum
:
1
},
// 页码
ImgSrc
:
null
,
},
},
reducers
:
{
reducers
:
{
...
@@ -23,14 +24,17 @@ export default {
...
@@ -23,14 +24,17 @@ export default {
return
{
...
state
,
Result
};
return
{
...
state
,
Result
};
},
},
returnDataSave
(
state
,
{
playload
})
{
returnDataSave
(
state
,
{
playload
})
{
console
.
log
(
playload
)
console
.
log
(
playload
)
;
let
DataSave
=
playload
.
DataSave
let
DataSave
=
playload
.
DataSave
;
return
{
...
state
,
DataSave
};
return
{
...
state
,
DataSave
};
},
},
returnDataSaveDetail
(
state
,
{
playload
})
{
returnDataSaveDetail
(
state
,
{
playload
})
{
// console.log(playload.DataSaveDetail)
// console.log(playload.DataSaveDetail)
let
DataSaveDetail
=
playload
.
DataSaveDetail
let
DataSaveDetail
=
playload
.
DataSaveDetail
;
return
{
...
state
,
DataSaveDetail
};
return
{
...
state
,
DataSaveDetail
};
},
returnImg
(
state
,
{
ImgSrc
})
{
return
{
...
state
,
ImgSrc
};
},
},
},
},
...
@@ -57,6 +61,13 @@ export default {
...
@@ -57,6 +61,13 @@ export default {
yield
put
({
type
:
'returnResult'
,
Result
});
yield
put
({
type
:
'returnResult'
,
Result
});
}
}
break
;
break
;
case
47
:
{
let
ImgSrc
=
resp
.
data
;
yield
put
({
type
:
'returnImg'
,
ImgSrc
});
}
console
.
log
(
'图片请求成功'
);
break
;
}
}
},
},
...
@@ -70,12 +81,15 @@ export default {
...
@@ -70,12 +81,15 @@ export default {
yield
put
({
type
:
'returnResult'
,
tmp
});
yield
put
({
type
:
'returnResult'
,
tmp
});
},
},
*
SA
({
playload
},
{
put
})
{
*
SA
({
playload
},
{
put
})
{
console
.
log
(
playload
)
console
.
log
(
playload
)
;
// 这里传递两个值来。 一个是修改同步的方法 一个是修改值的名称 一个是修改 的数据
// 这里传递两个值来。 一个是修改同步的方法 一个是修改值的名称 一个是修改 的数据
yield
put
({
type
:
playload
.
Method
,
playload
:{
yield
put
({
[
playload
.
DefaultName
]:
playload
.
Data
type
:
playload
.
Method
,
}});
playload
:
{
[
playload
.
DefaultName
]:
playload
.
Data
,
},
});
},
},
},
},
};
};
src/models/CommunityManagement/VisitorRecord.ts
View file @
c9dd3d6c
...
@@ -2,7 +2,7 @@ import * as service from '../../services/tos';
...
@@ -2,7 +2,7 @@ import * as service from '../../services/tos';
import
{
message
}
from
'antd'
;
import
{
message
}
from
'antd'
;
import
{
Link
,
useIntl
,
connect
,
Dispatch
,
history
}
from
'umi'
;
import
{
Link
,
useIntl
,
connect
,
Dispatch
,
history
}
from
'umi'
;
import
{
routerRedux
}
from
'dva/router'
import
{
routerRedux
}
from
'dva/router'
;
import
{
printf
}
from
'@/utils/log'
;
import
{
printf
}
from
'@/utils/log'
;
...
@@ -12,59 +12,56 @@ export default {
...
@@ -12,59 +12,56 @@ export default {
Data
:
null
,
Data
:
null
,
Result
:
null
,
Result
:
null
,
DataSave
:
null
,
DataSave
:
null
,
DataSaveDetail
:
null
,
DataSaveDetail
:
null
,
},
},
reducers
:
{
reducers
:
{
returnPage
(
state
,
{
Data
})
{
returnPage
(
state
,
{
Data
})
{
return
{
...
state
,
Data
};
return
{
...
state
,
Data
};
},
},
returnResult
(
state
,
{
Result
})
{
returnResult
(
state
,
{
Result
})
{
return
{
...
state
,
Result
};
return
{
...
state
,
Result
};
},
},
returnDataSave
(
state
,
{
DataSave
})
{
returnDataSave
(
state
,
{
DataSave
})
{
return
{
...
state
,
DataSave
}
return
{
...
state
,
DataSave
};
},
},
returnDataSaveDetail
(
state
,
{
DataSaveDetail
})
{
returnDataSaveDetail
(
state
,
{
DataSaveDetail
})
{
return
{
...
state
,
DataSaveDetail
}
return
{
...
state
,
DataSaveDetail
};
},
},
},
},
effects
:
{
effects
:
{
//标准请求
//标准请求
*
RA
({
playload
},
{
call
,
put
})
{
*
RA
({
playload
},
{
call
,
put
})
{
const
resp
=
yield
call
(
service
.
RA
,
playload
);
const
resp
=
yield
call
(
service
.
RA
,
playload
);
console
.
log
(
resp
)
console
.
log
(
resp
)
;
if
(
resp
.
code
==
500
||
resp
.
error_code
!=
"0000"
)
{
if
(
resp
.
code
==
500
||
resp
.
error_code
!=
'0000'
)
{
}
}
if
(
resp
.
error_code
!=
"0000"
)
{
if
(
resp
.
error_code
!=
'0000'
)
{
printf
(
playload
,
resp
)
printf
(
playload
,
resp
);
}
}
else
{
else
{
switch
(
playload
.
index
)
{
switch
(
playload
.
index
)
{
case
26
:
{
case
26
:
{
let
Data
=
resp
.
data
;
// 总数据
yield
put
({
type
:
'returnPage'
,
Data
});
let
Data
=
resp
.
data
.
rows
;
let
DataSave
=
resp
.
data
.
rows
;
}
break
;
yield
put
({
type
:
'returnPage'
,
Data
});
yield
put
({
type
:
'returnDataSave'
,
DataSave
});
}
break
;
}
}
}
}
},
},
*
ResultClear
({
},
{
put
})
{
*
ResultClear
({},
{
put
})
{
var
tmp
=
null
var
tmp
=
null
;
yield
put
({
type
:
'returnResult'
,
tmp
}
)
yield
put
({
type
:
'returnResult'
,
tmp
});
},
},
*
SA
({
playload
},
{
call
,
put
})
{
*
SA
({
playload
},
{
call
,
put
})
{
var
Data
Save
=
playload
var
Data
=
playload
;
yield
put
({
type
:
'returnDataSave'
,
DataSave
}
)
yield
put
({
type
:
'returnPage'
,
Data
});
},
},
},
},
};
};
src/pages/CommunityManagement/CellList/Adds.tsx
View file @
c9dd3d6c
...
@@ -9,6 +9,7 @@ import { history } from 'umi';
...
@@ -9,6 +9,7 @@ import { history } from 'umi';
import
{
village
}
from
'@/utils/tip'
;
import
{
village
}
from
'@/utils/tip'
;
import
moment
from
'moment'
;
import
moment
from
'moment'
;
import
{
parseInt
}
from
'lodash'
;
const
{
RangePicker
}
=
TimePicker
;
const
{
RangePicker
}
=
TimePicker
;
...
@@ -18,8 +19,6 @@ interface objc {}
...
@@ -18,8 +19,6 @@ interface objc {}
const
Adds
=
(
props
:
any
)
=>
{
const
Adds
=
(
props
:
any
)
=>
{
const
{
Data
,
dispatch
,
loading
,
Result
}
=
props
;
const
{
Data
,
dispatch
,
loading
,
Result
}
=
props
;
console
.
log
(
loading
);
const
[
form
]
=
Form
.
useForm
();
const
[
form
]
=
Form
.
useForm
();
//物业费选择
//物业费选择
...
@@ -68,7 +67,10 @@ const Adds = (props: any) => {
...
@@ -68,7 +67,10 @@ const Adds = (props: any) => {
form
.
setFieldsValue
({
form
.
setFieldsValue
({
// 必填的
// 必填的
des
:
{
des
:
{
residentialZipCode
:
Data
.
residentialZipCode
,
residentialZipCode
:
Data
.
residentialZipCode
.
substring
(
Data
.
residentialZipCode
.
length
-
6
,
Data
.
residentialZipCode
.
length
,
),
residentialAddress
:
Data
.
residentialAddress
,
residentialAddress
:
Data
.
residentialAddress
,
residentialName
:
Data
.
residentialName
,
residentialName
:
Data
.
residentialName
,
},
},
...
@@ -311,7 +313,11 @@ const Adds = (props: any) => {
...
@@ -311,7 +313,11 @@ const Adds = (props: any) => {
</
Form
.
Item
>
</
Form
.
Item
>
<
Form
.
Item
name=
{
[
'des'
,
'residentialAddress'
]
}
noStyle
rules=
{
village
[
0
]
as
any
}
>
<
Form
.
Item
name=
{
[
'des'
,
'residentialAddress'
]
}
noStyle
rules=
{
village
[
0
]
as
any
}
>
<
Input
style=
{
{
width
:
'360px'
}
}
placeholder=
"Please enter community adds"
/>
<
Input
style=
{
{
width
:
'360px'
}
}
placeholder=
"Please enter community adds"
disabled=
{
codeStrat
}
/>
</
Form
.
Item
>
</
Form
.
Item
>
<
div
className=
"li"
>
<
div
className=
"li"
>
...
...
src/pages/CommunityManagement/CellList/Details.tsx
View file @
c9dd3d6c
...
@@ -164,7 +164,12 @@ const Detail = (props: any) => {
...
@@ -164,7 +164,12 @@ const Detail = (props: any) => {
<
div
className=
"item"
>
<
div
className=
"item"
>
<
label
>
Community Address:
</
label
>
<
label
>
Community Address:
</
label
>
<
span
>
<
span
>
{
detailData
.
rows
.
residentialAddress
}
{
detailData
.
rows
.
residentialZipCode
}{
' '
}
{
detailData
.
rows
.
residentialAddress
}
SINGAPORE
{
/* 这是去掉 新加坡 英文字段 */
}
{
detailData
.
rows
.
residentialZipCode
.
substring
(
detailData
.
rows
.
residentialZipCode
.
length
-
6
,
detailData
.
rows
.
residentialZipCode
.
length
,
)
}{
' '
}
</
span
>
</
span
>
</
div
>
</
div
>
{
/* ---------- */
}
{
/* ---------- */
}
...
...
src/pages/CommunityManagement/CommunityAnnouncement/Add.tsx
View file @
c9dd3d6c
...
@@ -4,7 +4,7 @@ const { TabPane } = Tabs;
...
@@ -4,7 +4,7 @@ const { TabPane } = Tabs;
import
{
connect
,
history
}
from
'umi'
;
import
{
connect
,
history
}
from
'umi'
;
import
{
RA
}
from
'@/utils/method'
;
import
{
RA
,
SA
}
from
'@/utils/method'
;
import
TitleBack
from
'@/components/TitleBack/TitleBack'
;
import
TitleBack
from
'@/components/TitleBack/TitleBack'
;
// import FileUpload from '@/components/FileUpload/FileUpload';
// import FileUpload from '@/components/FileUpload/FileUpload';
import
{
validateMessages
}
from
'@/utils/params'
;
import
{
validateMessages
}
from
'@/utils/params'
;
...
@@ -13,7 +13,7 @@ import TextArea from 'antd/lib/input/TextArea';
...
@@ -13,7 +13,7 @@ import TextArea from 'antd/lib/input/TextArea';
import
SelectCommunity
from
'@/components/SelectCommunity'
;
import
SelectCommunity
from
'@/components/SelectCommunity'
;
// import Line from '@/components/Line/Line';
// import Line from '@/components/Line/Line';
// import TimeComfirm from '@/components/TimeComfirm/TimeComfirm';
// import TimeComfirm from '@/components/TimeComfirm/TimeComfirm';
import
imgs
from
'@/assets/logo_icon_bg.png'
;
import
'./ann.less'
;
import
'./ann.less'
;
import
{
Notice
}
from
'@/utils/tip'
;
import
{
Notice
}
from
'@/utils/tip'
;
import
{
getCookie
}
from
'@/utils/method'
;
import
{
getCookie
}
from
'@/utils/method'
;
...
@@ -21,67 +21,97 @@ import moment from 'moment';
...
@@ -21,67 +21,97 @@ import moment from 'moment';
const
module
=
'CommunityAnnouncement'
;
const
module
=
'CommunityAnnouncement'
;
const
Add
=
(
props
:
any
)
=>
{
const
Add
=
(
props
:
any
)
=>
{
const
{
dispatch
,
Result
,
loading
,
DataSave
}
=
props
;
const
{
dispatch
,
Result
,
loading
,
DataSave
,
ImgSrc
}
=
props
;
const
formRef
=
useRef
(
null
);
const
formRef
=
useRef
(
null
);
const
[
form
]
=
Form
.
useForm
();
const
[
form
]
=
Form
.
useForm
();
// 默认附件值
console
.
log
(
ImgSrc
);
const
defaultImg
=
[{
uid
:
'-1'
,
name
:
'image.png'
,
status
:
'done'
,
url
:
'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png'
,
}]
const
[
DefaultImage
,
setDefaultImage
]
=
useState
([]
as
any
);
// 监听传递过来的值
// 监听传递过来的值
useEffect
(()
=>
{
useEffect
(()
=>
{
if
(
DataSave
!=
null
)
{
if
(
DataSave
!=
null
)
{
console
.
log
(
moment
(
DataSave
.
noticStartTime
))
// let tim = DataSave.noticStartTime.time;
// 赋值
// 赋值
form
.
setFieldsValue
({
form
.
setFieldsValue
({
noticTitle
:
DataSave
.
noticTitlel
,
noticTitle
:
DataSave
.
noticTitlel
,
noticText
:
DataSave
.
noticText
,
noticText
:
DataSave
.
noticText
,
// noticStartTime:
moment(DataSave.noticStartTime
),
// noticStartTime:
moment(tim).format('YYYY-MM-DD'
),
// noticEndTime:DataSave.noticEndTime?moment(DataSave.noticEndTime, 'YYYY-MM-DD HH:mm:ss'):'',
// noticEndTime:DataSave.noticEndTime?moment(DataSave.noticEndTime, 'YYYY-MM-DD HH:mm:ss'):'',
})
})
;
// 图片
// 发起请求图片
setDefaultImage
(
defaultImg
);
let
msg
=
{
type
:
'tosCommunityNoticePreview'
,
fileName
:
DataSave
.
noticImageName
,
};
RA
(
47
,
msg
,
module
,
dispatch
);
}
}
},
[
DataSave
]);
},
[
DataSave
]);
// 图片地址
const
[
ImageSrc
,
setImageSrc
]
=
useState
([]
as
any
);
// 监听图片状态 ImgSrc
useEffect
(()
=>
{
if
(
ImgSrc
!=
null
)
{
let
imgUrl
=
[
{
uid
:
'-1'
,
name
:
'image.png'
,
status
:
'done'
,
url
:
ImgSrc
,
},
];
setImageSrc
(
imgUrl
);
}
},
[
ImgSrc
]);
// 监听是不是提交成功
// 监听是不是提交成功
useEffect
(()
=>
{
useEffect
(()
=>
{
if
(
Result
!=
null
)
{
if
(
Result
!=
null
)
{
// 移除传递来的信息
dispatch
({
dispatch
({
type
:
`
${
module
}
/ResultRemove`
,
type
:
`
${
module
}
/ResultRemove`
,
});
});
// 重新刷新页面
let
page
=
{
noticTitlel
:
''
,
creator
:
''
,
pageNum
:
1
,
};
// 把内容存进去
SA
(
DetailPage
(
page
),
module
,
dispatch
);
message
.
success
(
'Released Successfully'
);
message
.
success
(
'Released Successfully'
);
history
.
push
(
'/CommunityManagement/CommunityAnnouncement'
);
history
.
push
(
'/CommunityManagement/CommunityAnnouncement'
);
}
}
},
[
Result
]);
},
[
Result
]);
// 分业数据
const
DetailPage
=
(
page
:
any
)
=>
{
let
data
=
{
Method
:
'returnDataSaveDetail'
,
DefaultName
:
'DataSaveDetail'
,
Data
:
page
,
};
return
data
;
};
// 提交
// 提交
const
onFinish
=
(
values
:
any
)
=>
{
const
onFinish
=
(
values
:
any
)
=>
{
console
.
log
(
values
);
//
console.log(values);
var
tmp
=
values
;
var
tmp
=
values
;
if
(
DataSave
!=
null
)
{
if
(
DataSave
!=
null
)
{
tmp
.
id
=
DataSave
.
id
;
// 如果是修改传递的 修改ID
tmp
.
id
=
DataSave
.
id
;
// 如果是修改传递的 修改ID
}
}
tmp
.
creatorId
=
getCookie
(
'id'
);
// 管理员 ID
tmp
.
creatorId
=
getCookie
(
'id'
);
// 管理员 ID
tmp
.
communityNum
=
values
.
community
.
value
;
tmp
.
communityNum
=
values
.
community
.
value
;
tmp
.
noticScope
=
''
+
values
.
community
.
index
;
tmp
.
noticScope
=
''
+
values
.
community
.
index
;
delete
tmp
.
community
;
delete
tmp
.
community
;
// 文件名
// 文件名
tmp
.
noticImageName
=
values
.
file
?
values
.
file
[
0
]
:
null
;
tmp
.
noticImageName
=
values
.
file
?
values
.
file
[
0
]
:
null
;
tmp
.
noticStartTime
=
values
.
noticStartTime
.
format
(
'YYYY-MM-DD HH:mm:ss'
);
tmp
.
noticStartTime
=
values
.
noticStartTime
.
format
(
'YYYY-MM-DD'
);
tmp
.
noticEndTime
=
values
.
noticEndTime
tmp
.
noticEndTime
=
values
.
noticEndTime
?
values
.
noticEndTime
.
format
(
'YYYY-MM-DD'
)
:
null
;
?
values
.
noticEndTime
.
format
(
'YYYY-MM-DD HH:mm:ss'
)
// console.log(tmp);
:
null
;
console
.
log
(
tmp
);
RA
(
28
,
tmp
,
module
,
dispatch
);
RA
(
28
,
tmp
,
module
,
dispatch
);
};
};
...
@@ -94,7 +124,9 @@ const Add = (props: any) => {
...
@@ -94,7 +124,9 @@ const Add = (props: any) => {
<>
<>
<
Spin
spinning=
{
loading
}
>
<
Spin
spinning=
{
loading
}
>
<
div
style=
{
{
width
:
'100%'
,
padding
:
20
,
backgroundColor
:
'#ffffff'
}
}
>
<
div
style=
{
{
width
:
'100%'
,
padding
:
20
,
backgroundColor
:
'#ffffff'
}
}
>
<
TitleBack
title=
{
DataSave
==
null
?
'Add Announcement'
:
"Edit Announcement"
}
></
TitleBack
>
<
TitleBack
title=
{
DataSave
==
null
?
'Add Announcement'
:
'Edit Announcement'
}
></
TitleBack
>
<
Form
<
Form
ref=
{
formRef
}
ref=
{
formRef
}
...
@@ -105,18 +137,15 @@ const Add = (props: any) => {
...
@@ -105,18 +137,15 @@ const Add = (props: any) => {
validateMessages=
{
validateMessages
}
validateMessages=
{
validateMessages
}
>
>
<
Form
.
Item
name=
{
'community'
}
className=
"diyItem"
label=
"Community"
rules=
{
Notice
[
0
]
}
>
<
Form
.
Item
name=
{
'community'
}
className=
"diyItem"
label=
"Community"
rules=
{
Notice
[
0
]
}
>
<
SelectCommunity
checklist
=
{
DataSave
==
null
?
null
:
DataSave
.
communityNum
.
split
(",")}
/>
<
SelectCommunity
checklist=
{
DataSave
==
null
?
null
:
DataSave
.
communityNum
.
split
(
','
)
}
/>
</
Form
.
Item
>
</
Form
.
Item
>
<
Form
.
Item
<
Form
.
Item
name=
"noticTitle"
className=
"diyItem"
label=
"Notice Title"
rules=
{
Notice
[
1
]
}
>
name=
'noticTitle'
className=
"diyItem"
label=
"Notice Title"
rules=
{
Notice
[
1
]
}
>
<
Input
style=
{
{
width
:
200
}
}
placeholder=
"Please input the notice title"
/>
<
Input
style=
{
{
width
:
200
}
}
placeholder=
"Please input the notice title"
/>
</
Form
.
Item
>
</
Form
.
Item
>
<
Form
.
Item
<
Form
.
Item
name=
'noticText'
name=
"noticText"
className=
"diyItem"
className=
"diyItem"
label=
"Notice Content"
label=
"Notice Content"
rules=
{
Notice
[
2
]
}
rules=
{
Notice
[
2
]
}
...
@@ -134,7 +163,7 @@ const Add = (props: any) => {
...
@@ -134,7 +163,7 @@ const Add = (props: any) => {
imageType
:
'tosNotice'
,
imageType
:
'tosNotice'
,
}
}
}
}
limitNums=
{
1
}
limitNums=
{
1
}
defaultValue
=
{
DefaultImage
}
defaultValue
=
{
ImageSrc
}
/>
/>
</
Form
.
Item
>
</
Form
.
Item
>
<
Form
.
Item
<
Form
.
Item
...
@@ -143,10 +172,18 @@ const Add = (props: any) => {
...
@@ -143,10 +172,18 @@ const Add = (props: any) => {
label=
"Effective Dates"
label=
"Effective Dates"
rules=
{
Notice
[
3
]
}
rules=
{
Notice
[
3
]
}
>
>
<
DatePicker
showTime
placeholder=
"Effective Dates"
disabledDate=
{
disabledDate
}
/>
<
DatePicker
style=
{
{
width
:
200
}
}
placeholder=
"Effective Dates"
disabledDate=
{
disabledDate
}
/>
</
Form
.
Item
>
</
Form
.
Item
>
<
Form
.
Item
name=
"noticEndTime"
className=
"diyItem"
label=
"Expiration Date"
rules=
{
[]
}
>
<
Form
.
Item
name=
"noticEndTime"
className=
"diyItem"
label=
"Expiration Date"
rules=
{
[]
}
>
<
DatePicker
showTime
placeholder=
"Expiration Dates"
disabledDate=
{
disabledDate
}
/>
<
DatePicker
style=
{
{
width
:
200
}
}
placeholder=
"Expiration Dates"
disabledDate=
{
disabledDate
}
/>
</
Form
.
Item
>
</
Form
.
Item
>
<
hr
/>
<
hr
/>
<
Form
.
Item
style=
{
{
marginBottom
:
5
}
}
className=
"diyItem"
label=
" "
colon=
{
false
}
>
<
Form
.
Item
style=
{
{
marginBottom
:
5
}
}
className=
"diyItem"
label=
" "
colon=
{
false
}
>
...
@@ -162,9 +199,8 @@ const Add = (props: any) => {
...
@@ -162,9 +199,8 @@ const Add = (props: any) => {
};
};
function
map
(
state
:
any
)
{
function
map
(
state
:
any
)
{
// console.log(state)
const
{
Result
,
DataSave
,
ImgSrc
}
=
state
[
module
];
const
{
Result
,
DataSave
}
=
state
[
module
];
const
loading
=
state
.
loading
.
models
.
CommunityAnnouncement
;
const
loading
=
state
.
loading
.
models
.
CommunityAnnouncement
;
return
{
Result
,
loading
,
DataSave
};
return
{
Result
,
loading
,
DataSave
,
ImgSrc
};
}
}
export
default
connect
(
map
)(
Add
);
export
default
connect
(
map
)(
Add
);
src/pages/CommunityManagement/CommunityAnnouncement/CommunityAnnouncement.tsx
View file @
c9dd3d6c
...
@@ -34,14 +34,15 @@ const CommunityAnnouncement = (props: any) => {
...
@@ -34,14 +34,15 @@ const CommunityAnnouncement = (props: any) => {
useEffect
(()
=>
{
useEffect
(()
=>
{
dispatch
({
type
:
module
+
'/returnDataSave'
,
playload
:
{
DataSave
:
null
}
});
dispatch
({
type
:
module
+
'/returnDataSave'
,
playload
:
{
DataSave
:
null
}
});
dispatch
({
type
:
module
+
'/returnDataSaveDetail'
,
playload
:
{
DataSaveDetail
:
null
}
});
dispatch
({
type
:
module
+
'/returnDataSaveDetail'
,
playload
:
{
DataSaveDetail
:
null
}
});
dispatch
({
type
:
module
+
'/returnImg'
,
playload
:
{
DataSaveDetail
:
null
}
});
},
[
1
]);
},
[
1
]);
// 表头
// 表头
const
columns
=
[
const
columns
:
any
=
[
{
{
title
:
'Community'
,
title
:
'Community'
,
dataIndex
:
'communityNum'
,
dataIndex
:
'communityNum'
,
width
:
40
0
,
width
:
24
0
,
ellipsis
:
{
ellipsis
:
{
showTitle
:
false
,
showTitle
:
false
,
},
},
...
@@ -59,19 +60,19 @@ const CommunityAnnouncement = (props: any) => {
...
@@ -59,19 +60,19 @@ const CommunityAnnouncement = (props: any) => {
dataIndex
:
'noticStartTime'
,
dataIndex
:
'noticStartTime'
,
render
:
(
record
:
any
)
=>
(
render
:
(
record
:
any
)
=>
(
<
Space
size=
"middle"
>
<
Space
size=
"middle"
>
{
record
!=
null
?
moment
(
record
.
noticEndTime
).
format
(
'YYYY-MM-DD HH:mm:ss
'
)
:
null
}
{
record
!=
null
?
moment
(
record
.
time
).
format
(
'YYYY-MM-DD
'
)
:
null
}
</
Space
>
</
Space
>
),
),
},
},
{
{
title
:
'NoticScope'
,
title
:
'NoticScope'
,
dataIndex
:
'noticS
cope
'
,
dataIndex
:
'noticS
tatus
'
,
render
:
function
(
text
:
any
)
{
render
:
function
(
text
:
any
)
{
switch
(
text
)
{
switch
(
text
)
{
case
1
:
case
1
:
return
<
Tag
color=
"green"
>
Publishing
</
Tag
>;
// 发布中
return
<
Tag
color=
"green"
>
Publishing
</
Tag
>;
// 发布中
break
;
break
;
case
0
:
case
2
:
return
<
Tag
color=
"red"
>
Expired
</
Tag
>;
// 已过期
return
<
Tag
color=
"red"
>
Expired
</
Tag
>;
// 已过期
break
;
break
;
default
:
default
:
...
@@ -158,7 +159,7 @@ const CommunityAnnouncement = (props: any) => {
...
@@ -158,7 +159,7 @@ const CommunityAnnouncement = (props: any) => {
// 表单提交
// 表单提交
const
onFinishContract
=
(
value
:
any
)
=>
{
const
onFinishContract
=
(
value
:
any
)
=>
{
console
.
log
(
value
);
//
console.log(value);
if
(
!
value
.
communityNumList
&&
!
value
.
noticTitlel
&&
!
value
.
creator
)
{
if
(
!
value
.
communityNumList
&&
!
value
.
noticTitlel
&&
!
value
.
creator
)
{
message
.
error
(
'Please enter one of them!'
);
message
.
error
(
'Please enter one of them!'
);
}
else
{
}
else
{
...
@@ -202,7 +203,7 @@ const CommunityAnnouncement = (props: any) => {
...
@@ -202,7 +203,7 @@ const CommunityAnnouncement = (props: any) => {
<
SearchOptionsCommnity
<
SearchOptionsCommnity
// ubmit={extendName}
// ubmit={extendName}
opname=
{
opname
}
opname=
{
opname
}
type=
{
1
}
type=
{
1
}
// 单选还是多选 单选就直接去掉
/>
/>
</
Form
.
Item
>
</
Form
.
Item
>
<
Form
.
Item
name=
"noticTitlel"
>
<
Form
.
Item
name=
"noticTitlel"
>
...
...
src/pages/CommunityManagement/CommunityAnnouncement/Detail.tsx
View file @
c9dd3d6c
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
{
connect
,
history
}
from
'umi'
;
import
{
connect
,
history
}
from
'umi'
;
import
{
Button
,
Row
,
Col
,
Descriptions
,
Image
,
Badge
,
Tag
}
from
'antd'
;
import
{
Button
,
Row
,
Col
,
Descriptions
,
Image
,
Badge
,
Tag
,
Spin
}
from
'antd'
;
import
{
LeftOutlined
,
EyeOutlined
,
}
from
'@ant-design/icons'
;
import
{
LeftOutlined
,
EyeOutlined
}
from
'@ant-design/icons'
;
import
'./ann.less'
;
import
'./ann.less'
;
import
moment
from
'moment'
;
import
moment
from
'moment'
;
import
imgs
from
'@/assets/logo_icon_bg.png'
;
import
imgs
from
'@/assets/logo_icon_bg.png'
;
import
{
RA
}
from
'@/utils/method'
;
import
{
getDetailCommunityList
}
from
'@/services/tosUser'
;
const
module
=
'CommunityAnnouncement'
;
const
module
=
'CommunityAnnouncement'
;
const
Detail
=
(
props
:
any
)
=>
{
const
Detail
=
(
props
:
any
)
=>
{
const
{
dispatch
,
loading
,
DataSave
}
=
props
;
const
{
dispatch
,
loading
,
DataSave
,
ImgSrc
}
=
props
;
// 返回
// 返回
const
goToReturn
=
()
=>
{
const
goToReturn
=
()
=>
{
history
.
go
(
-
1
);
history
.
go
(
-
1
);
};
};
// 监听传递过来的值
// 监听传递过来的值
useEffect
(()
=>
{
useEffect
(()
=>
{
if
(
DataSave
==
null
)
{
if
(
DataSave
==
null
)
{
history
.
push
(
'/CommunityManagement/CommunityAnnouncement'
);
history
.
push
(
'/CommunityManagement/CommunityAnnouncement'
);
}
}
else
{
},
[
DataSave
]);
// 发起请求图片地址
let
msg
=
{
// userToken: '',
// type: ans.substr(ans.lastIndexOf('.') + 1),
type
:
'tosCommunityNoticePreview'
,
fileName
:
DataSave
.
noticImageName
,
};
RA
(
47
,
msg
,
module
,
dispatch
);
}
},
[
DataSave
]);
return
(
// 图片地址
<>
const
[
ImageSrc
,
setImageSrc
]
=
useState
(
imgs
);
{
DataSave
!=
null
?
<
div
className=
"form"
>
{
/* 头部 */
}
<
h3
>
<
EyeOutlined
/>
Notice Details
<
div
className=
"back"
>
<
Button
onClick=
{
goToReturn
}
>
<
LeftOutlined
/>
Back
</
Button
>
</
div
>
</
h3
>
<
hr
/>
{
/* 内容 */
}
<
Row
>
<
Col
span=
{
12
}
>
<
Descriptions
title=
"Notice Info"
layout=
"vertical"
bordered
>
<
Descriptions
.
Item
label=
"Title:"
span=
{
2
}
>
{
DataSave
.
noticTitlel
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"Publisher:"
>
{
DataSave
.
creator
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"Effective Dates:"
>
2020-11-02 09:00:00
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"Expiration Date:"
>
2020-11-08 09:00:00
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"NoticScope:"
span=
{
3
}
>
<
Badge
status=
"processing"
text=
"Publishing"
/>
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"Effective Community:"
span=
{
3
}
>
<
Tag
color=
"#e10"
>
小区1
</
Tag
>
<
Tag
color=
"#e20"
>
小区1
</
Tag
>
<
Tag
color=
"#e30"
>
小区1
</
Tag
>
<
Tag
color=
"#e40"
>
小区1
</
Tag
>
<
Tag
color=
"#e50"
>
小区1
</
Tag
>
<
Tag
color=
"#e60"
>
小区1
</
Tag
>
<
Tag
color=
"#e70"
>
小区1
</
Tag
>
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"Notice Content:"
span=
{
3
}
>
<
p
>
{
DataSave
.
noticText
}
</
p
>
</
Descriptions
.
Item
>
</
Descriptions
>
</
Col
>
<
Col
span=
{
12
}
style=
{
{
textAlign
:
'center'
}
}
>
<
div
className=
'famg'
>
<
div
>
<
Image
width=
{
200
}
src=
{
imgs
}
/>
<
p
>
Enclosure
</
p
>
</
div
>
</
div
>
</
Col
>
</
Row
>
</
div
>
:
''
}
// 监听图片状态 ImgSrc
useEffect
(()
=>
{
if
(
ImgSrc
!=
null
)
{
setImageSrc
(
ImgSrc
);
}
},
[
ImgSrc
]);
// 状态返回
function
hanFunStart
(
start
:
any
)
{
switch
(
start
)
{
case
1
:
return
<
Badge
status=
"success"
text=
"Publishing"
/>;
// <Tag color="green">Publishing</Tag>; // 发布中
break
;
case
2
:
return
<
Badge
status=
"error"
text=
"Expired"
/>;
// 已过期
break
;
default
:
return
<
Badge
status=
"processing"
text=
"Waiting for release"
/>;
// 等待发布
break
;
}
}
//小区返回
function
CommunityLists
(
list
:
any
)
{
let
listBack
=
list
.
split
(
','
).
map
((
item
:
any
,
index
:
any
)
=>
{
let
last
:
number
=
parseInt
(
index
%
10
);
return
(
<
Tag
color=
{
`#${last}b0`
}
style=
{
{
marginBottom
:
3
}
}
key=
{
index
}
>
{
item
}
</
Tag
>
);
});
return
listBack
;
}
</>
return
(
)
<>
}
{
DataSave
!=
null
?
(
<
div
className=
"form"
>
{
/* 头部 */
}
<
h3
>
<
EyeOutlined
/>
Notice Details
<
div
className=
"back"
>
<
Button
onClick=
{
goToReturn
}
>
<
LeftOutlined
/>
Back
</
Button
>
</
div
>
</
h3
>
<
hr
/>
{
/* 内容 */
}
<
Row
>
<
Col
span=
{
12
}
>
<
Descriptions
title=
"Notice Info"
layout=
"vertical"
bordered
>
{
/* 标题 */
}
<
Descriptions
.
Item
label=
"Title:"
span=
{
2
}
>
{
DataSave
.
noticTitlel
}
</
Descriptions
.
Item
>
{
/* 发布者 */
}
<
Descriptions
.
Item
label=
"Publisher:"
>
{
DataSave
.
creator
}
</
Descriptions
.
Item
>
{
/* 生效时间 */
}
<
Descriptions
.
Item
label=
"Effective Dates:"
>
{
moment
(
DataSave
.
noticStartTime
.
time
).
format
(
'YYYY-MM-DD'
)
}
</
Descriptions
.
Item
>
{
/* 结束时间 */
}
<
Descriptions
.
Item
label=
"Expiration Date:"
>
{
DataSave
.
noticEndTime
!=
null
?
moment
(
DataSave
.
noticEndTime
.
time
).
format
(
'YYYY-MM-DD'
)
:
'Permanent'
}
</
Descriptions
.
Item
>
{
/* 状态 */
}
<
Descriptions
.
Item
label=
"NoticScope:"
span=
{
3
}
>
{
hanFunStart
(
DataSave
.
noticStatus
)
}
</
Descriptions
.
Item
>
{
/* 生效小区 */
}
<
Descriptions
.
Item
label=
"Effective Community:"
span=
{
3
}
>
{
CommunityLists
(
DataSave
.
communityNum
)
}
</
Descriptions
.
Item
>
{
/* 内容 */
}
<
Descriptions
.
Item
label=
"Notice Content:"
span=
{
3
}
>
<
p
>
{
DataSave
.
noticText
}
</
p
>
</
Descriptions
.
Item
>
</
Descriptions
>
</
Col
>
<
Col
span=
{
12
}
style=
{
{
textAlign
:
'center'
}
}
>
<
div
className=
"famg"
>
<
div
>
<
Spin
spinning=
{
loading
}
>
<
Image
width=
{
200
}
src=
{
ImageSrc
}
/>
</
Spin
>
<
p
>
Enclosure
</
p
>
</
div
>
</
div
>
</
Col
>
</
Row
>
</
div
>
)
:
(
''
)
}
</>
);
};
function
map
(
state
:
any
)
{
function
map
(
state
:
any
)
{
// console.log(state)
// console.log(state);
const
{
DataSave
}
=
state
[
module
];
const
{
DataSave
,
ImgSrc
}
=
state
[
module
];
const
loading
=
state
.
loading
.
models
.
CommunityAnnouncement
;
const
loading
=
state
.
loading
.
models
.
CommunityAnnouncement
;
return
{
loading
,
DataSave
};
return
{
loading
,
DataSave
,
ImgSrc
};
}
}
export
default
connect
(
map
)(
Detail
);
export
default
connect
(
map
)(
Detail
);
\ No newline at end of file
src/pages/CommunityManagement/FacilityBookings/Facility copy.tsx
0 → 100644
View file @
c9dd3d6c
This diff is collapsed.
Click to expand it.
src/pages/CommunityManagement/FacilityBookings/Facility.tsx
View file @
c9dd3d6c
This diff is collapsed.
Click to expand it.
src/pages/CommunityManagement/FacilityBookings/FacilityBookings.tsx
View file @
c9dd3d6c
This diff is collapsed.
Click to expand it.
src/pages/CommunityManagement/FacilityBookings/css/index.less
View file @
c9dd3d6c
...
@@ -2,279 +2,327 @@
...
@@ -2,279 +2,327 @@
//基石
//基石
.base {
.base {
width: 100%;
width: 100%;
background-color: #ffffff;
background-color: #ffffff;
padding: 34
px;
padding: 16
px;
min-width: 1020
px;
margin-bottom: 15
px;
}
}
//头部组件
//头部组件
.box{
.box {
width: 100%;
width: 100%;
height: 64px;
height: 64px;
position: relative;
position: relative;
}
}
.item1{
.item1 {
position: absolute;
position: absolute;
width: 180px;
width: 180px;
text-align: center;
text-align: center;
border-left: 5px solid rgba(24,144,255,1);
border-left: 5px solid rgba(24, 144, 255, 1);
font-family:'Source Han Sans CN';
font-family: 'Source Han Sans CN';
font-size: 18px;
font-size: 18px;
font-weight: 600;
font-weight: 600;
color: #000000;
color: #000000;
}
}
.item3 {
.item3{
width: 80px;
width:80px;
height: 32px;
height: 32px;
position: absolute;
position: absolute;
right: 0;
right: 0;
outline: none;
outline: none;
background:
none;
background:
none;
cursor: pointer;
cursor: pointer;
border:1px solid rgba(217,217,217,
1);
border: 1px solid rgba(217, 217, 217,
1);
border-radius:
2px;
border-radius:
2px;
}
}
.box1{
.box1
{
width: 100%;
width: 100%;
height: 34px;
height: 34px;
position: relative;
position: relative;
margin-bottom: 28px;
margin-bottom: 28px;
}
}
.box1item1{
.box1item1
{
position: absolute;
position: absolute;
}
}
.box1item2{
.box1item2
{
position: absolute;
position: absolute;
left: 139px;
left: 139px;
}
}
.box2 {
.box2{
width: 100%;
width: 100%;
height: 34px;
height: 34px;
position: relative;
position: relative;
margin-bottom: 28px;
margin-bottom: 28px;
}
}
.box2item1{
.box2item1
{
position: absolute;
position: absolute;
}
}
.box2item2{
.box2item2
{
position: absolute;
position: absolute;
left: 139px;
left: 139px;
}
}
.box2item3{
.box2item3
{
position: absolute;
position: absolute;
left: 407px;
left: 407px;
}
}
.box2item4{
.box2item4
{
position: absolute;
position: absolute;
left: 565px;
left: 565px;
}
}
.box2item5{
.box2item5
{
position: absolute;
position: absolute;
left: 713px;
left: 713px;
}
}
.box2item6{
.box2item6
{
position: absolute;
position: absolute;
left: 778px;
left: 778px;
}
}
.box3 {
.box3{
position: relative;
position: relative;
margin-bottom: 28px;
margin-bottom: 28px;
}
}
.box3item1{
.box3item1
{
position: absolute;
position: absolute;
}
}
.box3item2{
.box3item2
{
padding-left: 160px;
padding-left: 160px;
}
}
.box3group1{
.box3group1
{
width: 266px;
width: 266px;
height: 100px;
height: 100px;
}
}
.box4{
.box4
{
position: relative;
position: relative;
}
}
.box4item1{
.box4item1
{
position: absolute;
position: absolute;
}
}
.box4item2{
.box4item2
{
padding-left: 160px;
padding-left: 160px;
}
}
.ulist{
.ulist {
float:left;
float: left;
width:100%;
width: 100%;
padding:0;
padding: 0;
margin:0;
margin: 0;
list-style-type:none;
list-style-type: none;
}
}
.llist{
.llist {
display:inline;
display: inline;
}
}
.alist{
.alist {
float:left;
float: left;
width: 160px;
width: 160px;
}
}
.alist1{
.alist1 {
position: relative;
position: relative;
width: 100px;
width: 100px;
height: 100px;
height: 100px;
}
}
.alist2 {
.alist2{
float: left;
float: left;
width: 326px;
width: 326px;
margin-bottom: 20px;
margin-bottom: 20px;
z-index: 1;
z-index: 1;
}
}
.alist2box{
.alist2box
{
width: 100%;
width: 100%;
height: 100%;
height: 100%;
position: relative;
position: relative;
}
}
.alist2boxitem1{
.alist2boxitem1
{
position: absolute;
position: absolute;
top: -100px;
top: -100px;
left: 127px;
left: 127px;
}
}
.alist2boxitem2{
.alist2boxitem2
{
position: absolute;
position: absolute;
top: -100px;
top: -100px;
left: 180px;
left: 180px;
}
}
.alist2boxitem3{
.alist2boxitem3
{
position: absolute;
position: absolute;
top: -40px;
top: -40px;
left: 216px;
left: 216px;
}
}
.alist2boxNone{
.alist2boxNone
{
color: #ffffff;
color: #ffffff;
moz-user-select: -moz-none;
moz-user-select: -moz-none;
-moz-user-select: none;
-moz-user-select: none;
-o-user-select:none;
-o-user-select: none;
-khtml-user-select:none;
-khtml-user-select: none;
-webkit-user-select:none;
-webkit-user-select: none;
-ms-user-select:none;
-ms-user-select: none;
user-select:
none;
user-select:
none;
}
}
.alist3{
.alist3
{
z-index: 10;
z-index: 10;
cursor: pointer;
cursor: pointer;
float: left;
float: left;
width: 100px;
width: 100px;
height: 100px;
height: 100px;
line-height: 100px;
line-height: 100px;
background-color: rgba(244,244,244,
1);
background-color: rgba(244, 244, 244,
1);
text-align: center;
text-align: center;
}
}
// 线栏
// 线栏
.line{
.line
{
width: 100%;
width: 100%;
height: 1px;
height: 1px;
border-top: 1px solid rgba(217,217,217,
1);
border-top: 1px solid rgba(217, 217, 217,
1);
margin-top: 28px;
margin-top: 28px;
margin-bottom: 28px;
margin-bottom: 28px;
}
}
.box5{
.box5
{
position: relative;
position: relative;
width: 100%;
width: 100%;
height: 34px;
height: 34px;
margin-bottom: 28px;
margin-bottom: 28px;
}
}
.box5item1{
.box5item1
{
position: absolute;
position: absolute;
}
}
.box5item2{
.box5item2
{
position: absolute;
position: absolute;
left: 186px;
left: 186px;
}
}
.box6{
.box6
{
position: relative;
position: relative;
line-height: 34px;
line-height: 34px;
width: 100%;
width: 100%;
height: 34px;
height: 34px;
margin-bottom: 32px;
margin-bottom: 32px;
}
}
.box6item1{
.box6item1
{
position: absolute;
position: absolute;
}
}
.box6item2{
.box6item2
{
position: absolute;
position: absolute;
left: 186px;
left: 186px;
}
}
.box6item3{
.box6item3
{
position: absolute;
position: absolute;
left: 276px;
left: 276px;
}
}
.box6item4{
.box6item4
{
position: absolute;
position: absolute;
left: 478px;
left: 478px;
}
}
.box6item5{
.box6item5
{
position: absolute;
position: absolute;
left: 569px;
left: 569px;
}
}
.box6item6{
.box6item6
{
position: absolute;
position: absolute;
left: 794px;
left: 794px;
}
}
.box6item7{
.box6item7
{
position: absolute;
position: absolute;
left: 885px;
left: 885px;
}
}
.box7 {
.box7{
position: relative;
position: relative;
width: 100%;
width: 100%;
height: 34px;
height: 34px;
margin-bottom: 28px;
margin-bottom: 28px;
}
}
.box7item1{
.box7item1
{
position: absolute;
position: absolute;
left: 186px;
left: 186px;
}
}
.box7item2{
.box7item2
{
position: absolute;
position: absolute;
left: 323px;
left: 323px;
}
}
.box8{
.box8
{
position: relative;
position: relative;
width: 100%;
width: 100%;
height: 34px;
height: 34px;
}
}
.box8item1{
.box8item1
{
position: absolute;
position: absolute;
}
}
.box8item2{
.box8item2
{
position: absolute;
position: absolute;
left: 346px;
left: 346px;
}
}
.box8item3{
.box8item3
{
position: absolute;
position: absolute;
left: 462px;
left: 462px;
color: rgba(217,217,217,
1);
color: rgba(217, 217, 217,
1);
}
}
.box8item4{
.box8item4
{
position: absolute;
position: absolute;
left: 502px;
left: 502px;
}
}
// 自定义
.basediy {
.ant-tabs > .ant-tabs-nav,
.ant-tabs > div > .ant-tabs-nav {
margin: 0;
}
.flex {
.ant-form-item-control-input-content {
display: flex;
flex-wrap: wrap;
}
}
.ant-input-group {
display: flex;
.ant-form-item {
margin-right: 20px;
}
}
.diyspan {
display: inline-block;
margin: 0 10px;
}
.diyp {
margin-bottom: 24px;
font-size: 18px;
color: #333;
font-weight: 500;
}
.ant-input-prefix,
.ant-input-suffix {
color: #888;
}
.ant-form-item-required,
.ant-form-item-label > label {
min-width: 100px;
text-align: right;
}
// .ant-form-item-control-input-content {
// display: flex;
// flex-wrap: wrap;
// }
}
hr {
border: 0;
height: 1px;
background: #eee;
margin-bottom: 24px;
}
src/pages/CommunityManagement/VisitorRecord/VisitorRecord copy.tsx
0 → 100644
View file @
c9dd3d6c
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
{
Input
,
Tabs
,
Table
,
Space
,
Button
}
from
'antd'
;
const
{
TabPane
}
=
Tabs
;
import
{
connect
}
from
'umi'
;
import
{
objectColumns
}
from
'@/utils/string'
;
// cdkCode: 998974
// cdkStatus: "0"
// count: 0
// createTime: "Sep 7, 2020 6:12:35 PM"
// deleted: 0
// enable: 0
// extend: ""
// id: "8f8b49308c0b4fb4a0e6b9d6af0aaa1e"
// inviterAddress: "TANGDE2#01#01#01"
// inviterId: "2597108b72f64a5da34892c14f0e6a57"
// inviterName: "啊啊啊"
// inviterPhone: "2536727886@qq.com"
// linkStatus: 1
// numberPlate: "粤A465123"
// securityGuardCommunity: "unkown"
// securityGuardName: "unkown"
// securityGuardPhone: "unkown"
// status: 1
// updateTime: "Sep 7, 2020 6:13:06 PM"
// visitorsName: "销赃"
// visitorsPhone: "18535669865"
const
columns
=
objectColumns
(
[
[
"User Name"
,
"inviterName"
],
[
"Visitor"
,
"visitorsName"
],
[
"Security Guard"
,
"securityGuardName"
],
[
"Number Plate"
,
"numberPlate"
],
[
"time"
,
"updateTime"
],
[
"community"
,
"visitorCommunity"
],
[
"unit"
,
"inviterAddress"
]
// ["Actions",null, (text: any, record: any) => (<Space size="middle"> <a>Detail</a></Space>)],
])
import
TitleSearch
from
'@/components/TitleSearch/TitleSearch'
import
{
RA
}
from
'@/utils/method'
;
const
module
=
"VisitorRecord"
const
VisitorRecord
=
(
props
:
any
)
=>
{
const
{
dispatch
,
Data
}
=
props
;
const
TosVisitorRecordGet
=
(
values
:
any
)
=>
{
dispatch
({
type
:
'tosVisitorRecord/get'
,
playload
:
values
})
};
useEffect
(()
=>
{
RA
(
26
,{
inviterAddress
:
""
,
visitorCommunity
:
""
},
module
,
dispatch
)
},
[])
const
CallBackTitleSearch
=
(
values
:
any
)
=>
{
console
.
log
(
values
)
// visitorCommunity
TosVisitorRecordGet
({
visitorCommunity
:
values
.
inviterAddress
,
})
}
const
pagination
=
{
defaultCurrent
:
1
,
total
:
Data
!=
null
?
Data
.
length
:
0
}
return
(
<
div
style=
{
{
width
:
"100%"
,
minWidth
:
1020
,
padding
:
34
,
backgroundColor
:
"#ffffff"
}
}
>
<
TitleSearch
listkey=
{
[
'inviterAddress'
]
}
list=
{
[
'Community Name'
]
}
community=
{
"serviceCommunityList"
}
onSubmit=
{
CallBackTitleSearch
}
/>
{
Data
!=
null
?
<
Table
loading=
{
false
}
rowKey=
"id"
style=
{
{
marginTop
:
16
}
}
dataSource=
{
Data
.
rows
}
columns=
{
columns
}
pagination=
{
pagination
}
// pagination=
{{
current
:
1,
total
:
Data
.
total
}}
/>:
null
}
</
div
>
);
};
function
map
(
state
:
any
)
{
const
{
Data
}
=
state
[
module
]
return
{
Data
}
}
export
default
connect
(
map
)(
VisitorRecord
);
// 备注
// 列表缺少访客时间
// 搜索缺少到达时间、访客姓名
src/pages/CommunityManagement/VisitorRecord/VisitorRecord.tsx
View file @
c9dd3d6c
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
React
,
{
useState
,
useEffect
,
useRef
}
from
'react'
;
import
{
Input
,
Tabs
,
Table
,
Space
,
Button
}
from
'antd'
;
import
{
Input
,
Tabs
,
Table
,
Form
,
Button
,
message
,
DatePicker
}
from
'antd'
;
const
{
TabPane
}
=
Tabs
;
const
{
TabPane
}
=
Tabs
;
import
{
connect
}
from
'umi'
;
import
{
objectColumns
}
from
'@/utils/string'
;
import
ProTable
from
'@ant-design/pro-table'
;
import
{
RA
,
SA
}
from
'@/utils/method'
;
import
{
PlusOutlined
,
SearchOutlined
,
ClearOutlined
}
from
'@ant-design/icons'
;
import
'./index.less'
;
import
moment
from
'moment'
;
import
{
connect
}
from
'umi
'
;
const
module
=
'VisitorRecord
'
;
import
{
objectColumns
}
from
'@/utils/string'
;
const
VisitorRecord
=
(
props
:
any
)
=>
{
const
{
dispatch
,
Data
,
DataSave
,
loading
}
=
props
;
// cdkCode: 998974
useEffect
(()
=>
{
// cdkStatus: "0"
RA
(
26
,
{
inviterAddress
:
''
,
visitorCommunity
:
''
},
module
,
dispatch
);
// count: 0
},
[
1
]);
// createTime: "Sep 7, 2020 6:12:35 PM"
const
TosVisitorRecordGet
=
(
values
:
any
)
=>
{
// deleted: 0
dispatch
({
type
:
'tosVisitorRecord/get'
,
playload
:
values
});
// enable: 0
};
// extend: ""
// id: "8f8b49308c0b4fb4a0e6b9d6af0aaa1e"
// inviterAddress: "TANGDE2#01#01#01"
// inviterId: "2597108b72f64a5da34892c14f0e6a57"
// inviterName: "啊啊啊"
// inviterPhone: "2536727886@qq.com"
// linkStatus: 1
// numberPlate: "粤A465123"
// securityGuardCommunity: "unkown"
// securityGuardName: "unkown"
// securityGuardPhone: "unkown"
// status: 1
// updateTime: "Sep 7, 2020 6:13:06 PM"
// visitorsName: "销赃"
// visitorsPhone: "18535669865"
const
columns
=
objectColumns
(
[
[
"User Name"
,
"inviterName"
],
[
"Visitor"
,
"visitorsName"
],
[
"Security Guard"
,
"securityGuardName"
],
[
"Number Plate"
,
"numberPlate"
],
[
"time"
,
"updateTime"
],
[
"community"
,
"visitorCommunity"
],
[
"unit"
,
"inviterAddress"
]
// ["Actions",null, (text: any, record: any) => (<Space size="middle"> <a>Detail</a></Space>)],
])
import
TitleSearch
from
'@/components/TitleSearch/TitleSearch'
import
{
RA
}
from
'@/utils/method'
;
const
module
=
"VisitorRecord"
const
VisitorRecord
=
(
props
:
any
)
=>
{
const
{
dispatch
,
Data
}
=
props
;
const
TosVisitorRecordGet
=
(
values
:
any
)
=>
{
dispatch
({
type
:
'tosVisitorRecord/get'
,
playload
:
values
})
};
// 新增搜索的时间 原来时间是时间戳格式
useEffect
(()
=>
{
useEffect
(()
=>
{
RA
(
26
,{
inviterAddress
:
""
,
visitorCommunity
:
""
},
module
,
dispatch
)
if
(
Data
!=
null
)
{
},
[])
Data
.
forEach
((
item
:
any
)
=>
{
item
.
showTime
=
moment
(
item
.
updateTime
).
format
(
'YYYY-MM-DD'
);
});
}
},
[
Data
]);
const
CallBackTitleSearch
=
(
values
:
any
)
=>
{
// 表头
console
.
log
(
values
)
const
columns
:
any
=
[
{
title
:
'Invitees Name'
,
dataIndex
:
'inviterName'
},
{
title
:
'Visitor Name'
,
dataIndex
:
'visitorsName'
},
{
title
:
'Security Guard'
,
dataIndex
:
'securityGuardName'
},
{
title
:
'Number Plate'
,
dataIndex
:
'numberPlate'
},
// 隐藏的搜索框
{
title
:
'Visitor Time'
,
hideInTable
:
true
,
dataIndex
:
'showTime'
,
valueType
:
'date'
},
{
title
:
'Visitor Time'
,
dataIndex
:
'updateTime'
,
valueType
:
'date'
},
{
title
:
'Community'
,
dataIndex
:
'visitorCommunity'
},
{
title
:
'Unit'
,
dataIndex
:
'inviterAddress'
},
// ["Actions",null, (text: any, record: any) => (<Space size="middle"> <a>Detail</a></Space>)],
];
// visitorCommunity
const
CallBackTitleSearch
=
(
values
:
any
)
=>
{
console
.
log
(
values
);
// visitorCommunity
TosVisitorRecordGet
({
TosVisitorRecordGet
({
visitorCommunity
:
values
.
inviterAddress
,
visitorCommunity
:
values
.
inviterAddress
,
})
});
};
const
[
form
]
=
Form
.
useForm
();
// 分页
const
pagination
:
any
=
{
defaultCurrent
:
1
,
total
:
Data
!=
null
?
Data
.
length
:
0
,
defaultPageSize
:
12
,
showSizeChanger
:
false
,
size
:
'default'
,
};
// 搜索配置
// const searchInfo = {
// filterType: 'light',
// searchText: 'Search',
// resetText: 'Reset',
// };
// 多条件筛选
//@param condition 过滤条件
//@param data 需要过滤的数据
let
filter
=
(
condition
:
any
,
data
:
any
)
=>
{
return
data
.
filter
((
item
:
any
)
=>
{
return
Object
.
keys
(
condition
).
every
((
key
)
=>
{
return
String
(
item
[
key
])
.
toLowerCase
()
.
includes
(
String
(
condition
[
key
]).
trim
().
toLowerCase
());
});
});
};
// 点击搜索
const
onSubmitForm
=
(
value
:
any
)
=>
{
// 有的话需要先转换 否则会被清除
if
(
value
.
showTime
)
{
value
.
showTime
=
moment
(
value
.
showTime
).
format
(
'YYYY-MM-DD'
);
}
// 清除 undefind
let
info
=
JSON
.
parse
(
stringifyNoEmptyField
(
value
));
if
(
JSON
.
stringify
(
info
)
==
'{}'
)
{
message
.
info
(
'Please select a search'
);
}
else
{
if
(
info
.
showTime
)
{
info
.
showTime
=
moment
(
info
.
showTime
).
format
(
'YYYY-MM-DD'
);
}
console
.
log
(
info
);
let
Datas
=
filter
(
info
,
DataSave
);
SA
(
Datas
,
module
,
dispatch
);
}
};
// 点击重置
const
onResetFrom
=
()
=>
{
onReset
();
};
// 刷新
const
onReset
=
()
=>
{
SA
(
DataSave
,
module
,
dispatch
);
};
// 去掉null undefined 无效字段
function
removeEmptyField
(
obj
:
any
)
{
var
newObj
=
{};
if
(
typeof
obj
==
'string'
)
{
obj
=
JSON
.
parse
(
obj
);
}
if
(
obj
instanceof
Array
)
{
newObj
=
[];
}
if
(
obj
instanceof
Object
)
{
for
(
var
attr
in
obj
)
{
if
(
obj
.
hasOwnProperty
(
attr
)
&&
obj
[
attr
]
!==
''
&&
obj
[
attr
]
!==
null
&&
obj
[
attr
]
!==
undefined
)
{
if
(
obj
[
attr
]
instanceof
Object
)
{
newObj
[
attr
]
=
removeEmptyField
(
obj
[
attr
]);
}
else
if
(
typeof
obj
[
attr
]
==
'string'
&&
((
obj
[
attr
].
indexOf
(
'{'
)
>
-
1
&&
obj
[
attr
].
indexOf
(
'}'
)
>
-
1
)
||
(
obj
[
attr
].
indexOf
(
'['
)
>
-
1
&&
obj
[
attr
].
indexOf
(
']'
)
>
-
1
))
)
{
try
{
var
attrObj
=
JSON
.
parse
(
obj
[
attr
]);
if
(
attrObj
instanceof
Object
)
{
newObj
[
attr
]
=
removeEmptyField
(
attrObj
);
}
}
catch
(
e
)
{
newObj
[
attr
]
=
obj
[
attr
];
}
}
else
{
newObj
[
attr
]
=
obj
[
attr
];
}
}
}
}
return
newObj
;
}
function
stringifyNoEmptyField
(
obj
:
any
)
{
var
newObj
=
removeEmptyField
(
obj
);
for
(
var
attr
in
newObj
)
{
if
(
newObj
.
hasOwnProperty
(
attr
)
&&
newObj
[
attr
]
instanceof
Array
)
{
newObj
[
attr
]
=
JSON
.
stringify
(
newObj
[
attr
]);
}
}
return
JSON
.
stringify
(
newObj
);
}
}
const
pagination
=
{
defaultCurrent
:
1
,
total
:
Data
!=
null
?
Data
.
length
:
0
}
return
(
return
(
<
div
style=
{
{
width
:
"100%"
,
minWidth
:
1020
,
padding
:
34
,
backgroundColor
:
"#ffffff"
}
}
>
<>
<
TitleSearch
listkey=
{
[
'inviterAddress'
]
}
<
div
className=
"VisitorRecord"
>
list=
{
[
'Community Name'
]
}
<
Form
community=
{
"serviceCommunityList"
}
autoComplete=
"off"
onSubmit=
{
CallBackTitleSearch
}
/>
layout=
"inline"
{
Data
!=
null
?
form=
{
form
}
<
Table
name=
"contract"
loading=
{
false
}
onFinish=
{
onSubmitForm
}
rowKey=
"id"
>
style=
{
{
marginTop
:
16
}
}
<
Form
.
Item
name=
"visitorsName"
>
dataSource=
{
Data
.
rows
}
<
Input
allowClear
placeholder=
"Please input Visitor Name."
style=
{
{
width
:
240
}
}
/>
columns=
{
columns
}
</
Form
.
Item
>
pagination=
{
pagination
}
<
Form
.
Item
name=
"showTime"
>
// pagination=
{{
current
:
1,
total
:
Data
.
total
}}
<
DatePicker
format=
"YYYY-MM-DD"
placeholder=
"Select Date"
/>
/>:
null
}
</
Form
.
Item
>
</
div
>
<
Form
.
Item
>
<
Button
type=
"primary"
htmlType=
"submit"
icon=
{
<
SearchOutlined
/>
}
loading=
{
loading
}
>
Search
{
' '
}
</
Button
>
<
Button
htmlType=
"button"
onClick=
{
onReset
}
style=
{
{
marginLeft
:
'15px'
}
}
icon=
{
<
ClearOutlined
/>
}
loading=
{
loading
}
>
{
' '
}
Reset
</
Button
>
</
Form
.
Item
>
</
Form
>
</
div
>
<
div
style=
{
{
width
:
'100%'
,
padding
:
16
,
backgroundColor
:
'#ffffff'
}
}
>
<
ProTable
loading=
{
loading
}
rowKey=
"id"
dataSource=
{
Data
!=
null
?
Data
:
''
}
columns=
{
columns
}
pagination=
{
pagination
}
// pagination={{ current: 1, total: Data.total}}
search=
{
false
}
options=
{
{
density
:
true
,
fullScreen
:
true
,
reload
:
()
=>
{
onReset
();
},
setting
:
false
,
}
}
headerTitle=
"Visitor List"
onReset=
{
onResetFrom
}
onSubmit=
{
onSubmitForm
}
/>
</
div
>
</>
);
);
};
};
function
map
(
state
:
any
)
{
function
map
(
state
:
any
)
{
const
{
Data
}
=
state
[
module
]
const
{
Data
,
DataSave
}
=
state
[
module
];
return
{
Data
}
const
loading
=
state
.
loading
.
models
.
VisitorRecord
;
return
{
Data
,
DataSave
,
loading
};
}
}
export
default
connect
(
map
)(
VisitorRecord
);
export
default
connect
(
map
)(
VisitorRecord
);
// 备注
// 备注
...
...
src/pages/CommunityManagement/VisitorRecord/index.less
0 → 100644
View file @
c9dd3d6c
.ant-pro-table-search {
margin-bottom: 0;
padding: 15px;
}
.VisitorRecord {
padding: 15px;
background: #fff;
margin-bottom: 15px;
}
src/pages/CommunityManagement/visitorRecord/VisitorRecord.tsx
View file @
c9dd3d6c
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
React
,
{
useState
,
useEffect
,
useRef
}
from
'react'
;
import
{
Input
,
Tabs
,
Table
,
Space
,
Button
}
from
'antd'
;
import
{
Input
,
Tabs
,
Table
,
Form
,
Button
,
message
,
DatePicker
}
from
'antd'
;
const
{
TabPane
}
=
Tabs
;
const
{
TabPane
}
=
Tabs
;
import
{
connect
}
from
'umi'
;
import
{
objectColumns
}
from
'@/utils/string'
;
import
ProTable
from
'@ant-design/pro-table'
;
import
{
RA
,
SA
}
from
'@/utils/method'
;
import
{
PlusOutlined
,
SearchOutlined
,
ClearOutlined
}
from
'@ant-design/icons'
;
import
'./index.less'
;
import
moment
from
'moment'
;
import
{
connect
}
from
'umi
'
;
const
module
=
'VisitorRecord
'
;
import
{
objectColumns
}
from
'@/utils/string'
;
const
VisitorRecord
=
(
props
:
any
)
=>
{
const
{
dispatch
,
Data
,
DataSave
,
loading
}
=
props
;
// cdkCode: 998974
useEffect
(()
=>
{
// cdkStatus: "0"
RA
(
26
,
{
inviterAddress
:
''
,
visitorCommunity
:
''
},
module
,
dispatch
);
// count: 0
},
[
1
]);
// createTime: "Sep 7, 2020 6:12:35 PM"
const
TosVisitorRecordGet
=
(
values
:
any
)
=>
{
// deleted: 0
dispatch
({
type
:
'tosVisitorRecord/get'
,
playload
:
values
});
// enable: 0
};
// extend: ""
// id: "8f8b49308c0b4fb4a0e6b9d6af0aaa1e"
// inviterAddress: "TANGDE2#01#01#01"
// inviterId: "2597108b72f64a5da34892c14f0e6a57"
// inviterName: "啊啊啊"
// inviterPhone: "2536727886@qq.com"
// linkStatus: 1
// numberPlate: "粤A465123"
// securityGuardCommunity: "unkown"
// securityGuardName: "unkown"
// securityGuardPhone: "unkown"
// status: 1
// updateTime: "Sep 7, 2020 6:13:06 PM"
// visitorsName: "销赃"
// visitorsPhone: "18535669865"
const
columns
=
objectColumns
(
[
[
"User Name"
,
"inviterName"
],
[
"Visitor"
,
"visitorsName"
],
[
"Security Guard"
,
"securityGuardName"
],
[
"Number Plate"
,
"numberPlate"
],
[
"time"
,
"updateTime"
],
[
"community"
,
"visitorCommunity"
],
[
"unit"
,
"inviterAddress"
]
// ["Actions",null, (text: any, record: any) => (<Space size="middle"> <a>Detail</a></Space>)],
])
import
TitleSearch
from
'@/components/TitleSearch/TitleSearch'
import
{
RA
}
from
'@/utils/method'
;
const
module
=
"VisitorRecord"
const
VisitorRecord
=
(
props
:
any
)
=>
{
const
{
dispatch
,
Data
}
=
props
;
const
TosVisitorRecordGet
=
(
values
:
any
)
=>
{
dispatch
({
type
:
'tosVisitorRecord/get'
,
playload
:
values
})
};
// 新增搜索的时间 原来时间是时间戳格式
useEffect
(()
=>
{
useEffect
(()
=>
{
RA
(
26
,{
inviterAddress
:
""
,
visitorCommunity
:
""
},
module
,
dispatch
)
if
(
Data
!=
null
)
{
},
[])
Data
.
forEach
((
item
:
any
)
=>
{
item
.
showTime
=
moment
(
item
.
updateTime
).
format
(
'YYYY-MM-DD'
);
});
}
},
[
Data
]);
const
CallBackTitleSearch
=
(
values
:
any
)
=>
{
// 表头
console
.
log
(
values
)
const
columns
:
any
=
[
{
title
:
'Invitees Name'
,
dataIndex
:
'inviterName'
},
{
title
:
'Visitor Name'
,
dataIndex
:
'visitorsName'
},
{
title
:
'Security Guard'
,
dataIndex
:
'securityGuardName'
},
{
title
:
'Number Plate'
,
dataIndex
:
'numberPlate'
},
// 隐藏的搜索框
{
title
:
'Visitor Time'
,
hideInTable
:
true
,
dataIndex
:
'showTime'
,
valueType
:
'date'
},
{
title
:
'Visitor Time'
,
dataIndex
:
'updateTime'
,
valueType
:
'date'
},
{
title
:
'Community'
,
dataIndex
:
'visitorCommunity'
},
{
title
:
'Unit'
,
dataIndex
:
'inviterAddress'
},
// ["Actions",null, (text: any, record: any) => (<Space size="middle"> <a>Detail</a></Space>)],
];
// visitorCommunity
const
CallBackTitleSearch
=
(
values
:
any
)
=>
{
console
.
log
(
values
);
// visitorCommunity
TosVisitorRecordGet
({
TosVisitorRecordGet
({
visitorCommunity
:
values
.
inviterAddress
,
visitorCommunity
:
values
.
inviterAddress
,
})
});
};
const
[
form
]
=
Form
.
useForm
();
// 分页
const
pagination
:
any
=
{
defaultCurrent
:
1
,
total
:
Data
!=
null
?
Data
.
length
:
0
,
defaultPageSize
:
12
,
showSizeChanger
:
false
,
size
:
'default'
,
};
// 搜索配置
// const searchInfo = {
// filterType: 'light',
// searchText: 'Search',
// resetText: 'Reset',
// };
// 多条件筛选
//@param condition 过滤条件
//@param data 需要过滤的数据
let
filter
=
(
condition
:
any
,
data
:
any
)
=>
{
return
data
.
filter
((
item
:
any
)
=>
{
return
Object
.
keys
(
condition
).
every
((
key
)
=>
{
return
String
(
item
[
key
])
.
toLowerCase
()
.
includes
(
String
(
condition
[
key
]).
trim
().
toLowerCase
());
});
});
};
// 点击搜索
const
onSubmitForm
=
(
value
:
any
)
=>
{
// 有的话需要先转换 否则会被清除
if
(
value
.
showTime
)
{
value
.
showTime
=
moment
(
value
.
showTime
).
format
(
'YYYY-MM-DD'
);
}
// 清除 undefind
let
info
=
JSON
.
parse
(
stringifyNoEmptyField
(
value
));
if
(
JSON
.
stringify
(
info
)
==
'{}'
)
{
message
.
info
(
'Please select a search'
);
}
else
{
if
(
info
.
showTime
)
{
info
.
showTime
=
moment
(
info
.
showTime
).
format
(
'YYYY-MM-DD'
);
}
console
.
log
(
info
);
let
Datas
=
filter
(
info
,
DataSave
);
SA
(
Datas
,
module
,
dispatch
);
}
};
// 点击重置
const
onResetFrom
=
()
=>
{
onReset
();
};
// 刷新
const
onReset
=
()
=>
{
SA
(
DataSave
,
module
,
dispatch
);
};
// 去掉null undefined 无效字段
function
removeEmptyField
(
obj
:
any
)
{
var
newObj
=
{};
if
(
typeof
obj
==
'string'
)
{
obj
=
JSON
.
parse
(
obj
);
}
if
(
obj
instanceof
Array
)
{
newObj
=
[];
}
if
(
obj
instanceof
Object
)
{
for
(
var
attr
in
obj
)
{
if
(
obj
.
hasOwnProperty
(
attr
)
&&
obj
[
attr
]
!==
''
&&
obj
[
attr
]
!==
null
&&
obj
[
attr
]
!==
undefined
)
{
if
(
obj
[
attr
]
instanceof
Object
)
{
newObj
[
attr
]
=
removeEmptyField
(
obj
[
attr
]);
}
else
if
(
typeof
obj
[
attr
]
==
'string'
&&
((
obj
[
attr
].
indexOf
(
'{'
)
>
-
1
&&
obj
[
attr
].
indexOf
(
'}'
)
>
-
1
)
||
(
obj
[
attr
].
indexOf
(
'['
)
>
-
1
&&
obj
[
attr
].
indexOf
(
']'
)
>
-
1
))
)
{
try
{
var
attrObj
=
JSON
.
parse
(
obj
[
attr
]);
if
(
attrObj
instanceof
Object
)
{
newObj
[
attr
]
=
removeEmptyField
(
attrObj
);
}
}
catch
(
e
)
{
newObj
[
attr
]
=
obj
[
attr
];
}
}
else
{
newObj
[
attr
]
=
obj
[
attr
];
}
}
}
}
return
newObj
;
}
function
stringifyNoEmptyField
(
obj
:
any
)
{
var
newObj
=
removeEmptyField
(
obj
);
for
(
var
attr
in
newObj
)
{
if
(
newObj
.
hasOwnProperty
(
attr
)
&&
newObj
[
attr
]
instanceof
Array
)
{
newObj
[
attr
]
=
JSON
.
stringify
(
newObj
[
attr
]);
}
}
return
JSON
.
stringify
(
newObj
);
}
}
const
pagination
=
{
defaultCurrent
:
1
,
total
:
Data
!=
null
?
Data
.
length
:
0
}
return
(
return
(
<
div
style=
{
{
width
:
"100%"
,
minWidth
:
1020
,
padding
:
34
,
backgroundColor
:
"#ffffff"
}
}
>
<>
<
TitleSearch
listkey=
{
[
'inviterAddress'
]
}
<
div
className=
"VisitorRecord"
>
list=
{
[
'Community Name'
]
}
<
Form
community=
{
"serviceCommunityList"
}
autoComplete=
"off"
onSubmit=
{
CallBackTitleSearch
}
/>
layout=
"inline"
{
Data
!=
null
?
form=
{
form
}
<
Table
name=
"contract"
loading=
{
false
}
onFinish=
{
onSubmitForm
}
rowKey=
"id"
>
style=
{
{
marginTop
:
16
}
}
<
Form
.
Item
name=
"visitorsName"
>
dataSource=
{
Data
.
rows
}
<
Input
allowClear
placeholder=
"Please input Visitor Name."
style=
{
{
width
:
240
}
}
/>
columns=
{
columns
}
</
Form
.
Item
>
pagination=
{
pagination
}
<
Form
.
Item
name=
"showTime"
>
// pagination=
{{
current
:
1,
total
:
Data
.
total
}}
<
DatePicker
format=
"YYYY-MM-DD"
placeholder=
"Select Date"
/>
/>:
null
}
</
Form
.
Item
>
</
div
>
<
Form
.
Item
>
<
Button
type=
"primary"
htmlType=
"submit"
icon=
{
<
SearchOutlined
/>
}
loading=
{
loading
}
>
Search
{
' '
}
</
Button
>
<
Button
htmlType=
"button"
onClick=
{
onReset
}
style=
{
{
marginLeft
:
'15px'
}
}
icon=
{
<
ClearOutlined
/>
}
loading=
{
loading
}
>
{
' '
}
Reset
</
Button
>
</
Form
.
Item
>
</
Form
>
</
div
>
<
div
style=
{
{
width
:
'100%'
,
padding
:
16
,
backgroundColor
:
'#ffffff'
}
}
>
<
ProTable
loading=
{
loading
}
rowKey=
"id"
dataSource=
{
Data
!=
null
?
Data
:
''
}
columns=
{
columns
}
pagination=
{
pagination
}
// pagination={{ current: 1, total: Data.total}}
search=
{
false
}
options=
{
{
density
:
true
,
fullScreen
:
true
,
reload
:
()
=>
{
onReset
();
},
setting
:
false
,
}
}
headerTitle=
"Visitor List"
onReset=
{
onResetFrom
}
onSubmit=
{
onSubmitForm
}
/>
</
div
>
</>
);
);
};
};
function
map
(
state
:
any
)
{
function
map
(
state
:
any
)
{
const
{
Data
}
=
state
[
module
]
const
{
Data
,
DataSave
}
=
state
[
module
];
return
{
Data
}
const
loading
=
state
.
loading
.
models
.
VisitorRecord
;
return
{
Data
,
DataSave
,
loading
};
}
}
export
default
connect
(
map
)(
VisitorRecord
);
export
default
connect
(
map
)(
VisitorRecord
);
// 备注
// 备注
...
...
src/utils/tip.ts
View file @
c9dd3d6c
...
@@ -12,7 +12,7 @@ export const tipList = [
...
@@ -12,7 +12,7 @@ export const tipList = [
// 小区提示
// 小区提示
export
const
village
=
[
export
const
village
=
[
[{
required
:
true
,
message
:
'
'
}],
[{
required
:
true
,
message
:
'
Please select community
'
}],
[{
required
:
true
,
message
:
'Please select working hours !'
}],
[{
required
:
true
,
message
:
'Please select working hours !'
}],
[{
required
:
true
,
message
:
'Please enter the community administrator !'
}],
[{
required
:
true
,
message
:
'Please enter the community administrator !'
}],
[{
required
:
true
,
message
:
'Please enter the phone number and email address !'
}],
[{
required
:
true
,
message
:
'Please enter the phone number and email address !'
}],
...
@@ -21,8 +21,14 @@ export const village = [
...
@@ -21,8 +21,14 @@ export const village = [
//公告提示
//公告提示
export
const
Notice
=
[
export
const
Notice
=
[
[{
required
:
true
,
message
:
'
小区
'
}],
[{
required
:
true
,
message
:
'
Please select community
'
}],
[{
required
:
true
,
message
:
'
标题
'
}],
[{
required
:
true
,
message
:
'
Please input the notice title.
'
}],
[{
required
:
true
,
message
:
'
内容
'
}],
[{
required
:
true
,
message
:
'
Please input the announcement content.
'
}],
[{
required
:
true
,
message
:
'
日期
'
}],
[{
required
:
true
,
message
:
'
Please choose the effective time of the announcement.
'
}],
];
];
// 时间
export
const
Time
=
{
hour
:
[
1
,
2
],
minute
:
[],
};
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