Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
CmsPetrolPay
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
11
Issues
11
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
Giang Tran
CmsPetrolPay
Commits
cd1dc3f6
Commit
cd1dc3f6
authored
Aug 27, 2024
by
tdgiang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update code
parent
24ed46c3
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
268 additions
and
7 deletions
+268
-7
translation.json
src/app/assets/languages/locates/vi/translation.json
+1
-1
AcceptStore.jsx
src/app/components/dialog/AcceptStore.jsx
+12
-1
DialogReason.jsx
src/app/components/dialog/DialogReason.jsx
+0
-3
UpdateTimeStore.jsx
src/app/components/dialog/UpdateTimeStore.jsx
+131
-0
Index.js
src/app/views/GasStation/Index.js
+43
-0
Table.js
src/app/views/GasStation/Table.js
+77
-2
View.js
src/app/views/GasStation/View.js
+4
-0
No files found.
src/app/assets/languages/locates/vi/translation.json
View file @
cd1dc3f6
...
@@ -320,7 +320,7 @@
...
@@ -320,7 +320,7 @@
"ERROR_STATUS_NOT_CANCEL"
:
"Trạng thái không thể hủy."
,
"ERROR_STATUS_NOT_CANCEL"
:
"Trạng thái không thể hủy."
,
"ERROR_PERMISSION_MISSING"
:
"Thiếu quyền."
,
"ERROR_PERMISSION_MISSING"
:
"Thiếu quyền."
,
"ERROR_DENINED_FAIL"
:
"Từ chối thất bại."
,
"ERROR_DENINED_FAIL"
:
"Từ chối thất bại."
,
"BAD_REQUEST"
:
"
Tạo giao dịch thất bại.
"
,
"BAD_REQUEST"
:
"
Đã có lỗi xảy ra
"
,
"ERROR_ID_NO_EXISTS"
:
"Chứng minh nhân dân đã tồn tại trong hệ thống"
,
"ERROR_ID_NO_EXISTS"
:
"Chứng minh nhân dân đã tồn tại trong hệ thống"
,
"ERROR_PASSWORD_INCORRECT_PATTERN"
:
"ERROR_PASSWORD_INCORRECT_PATTERN"
:
"Mật khẩu nên chứa ít nhất 8 ký tự, có 1 chữ in hoa, 1 ký tự số."
,
"Mật khẩu nên chứa ít nhất 8 ký tự, có 1 chữ in hoa, 1 ký tự số."
,
...
...
src/app/components/dialog/AcceptStore.jsx
View file @
cd1dc3f6
...
@@ -29,7 +29,7 @@ function FormDialog(props) {
...
@@ -29,7 +29,7 @@ function FormDialog(props) {
const
{
open
,
handleClose
,
data
,
onAgree
}
=
props
const
{
open
,
handleClose
,
data
,
onAgree
}
=
props
const
[
forever
,
setForever
]
=
useState
(
tru
e
)
const
[
forever
,
setForever
]
=
useState
(
fals
e
)
const
[
name
,
setName
]
=
useState
()
const
[
name
,
setName
]
=
useState
()
const
[
date
,
setDate
]
=
useState
(
addOneYear
())
const
[
date
,
setDate
]
=
useState
(
addOneYear
())
...
@@ -87,6 +87,8 @@ function FormDialog(props) {
...
@@ -87,6 +87,8 @@ function FormDialog(props) {
minDate=
{
new
Date
()
}
minDate=
{
new
Date
()
}
clearable=
{
true
}
clearable=
{
true
}
format=
"dd/MM/yyyy"
format=
"dd/MM/yyyy"
minDateMessage=
"Thời gian phải lớn hơn ngày hiện tại"
invalidDateMessage=
"Định dạng không hợp lệ"
value=
{
date
}
value=
{
date
}
onChange=
{
handleDateChangeLast
}
onChange=
{
handleDateChangeLast
}
KeyboardButtonProps=
{
{
KeyboardButtonProps=
{
{
...
@@ -101,7 +103,16 @@ function FormDialog(props) {
...
@@ -101,7 +103,16 @@ function FormDialog(props) {
</
Button
>
</
Button
>
<
Button
<
Button
onClick=
{
()
=>
{
onClick=
{
()
=>
{
if
(
date
)
{
onAgree
(
forever
,
date
)
onAgree
(
forever
,
date
)
}
else
{
toast
.
warning
(
'Vui lòng nhập thời gian hoạt động của cây xăng!'
,
{
theme
:
'colored'
,
}
)
}
}
}
}
}
color=
"primary"
color=
"primary"
>
>
...
...
src/app/components/dialog/DialogReason.jsx
View file @
cd1dc3f6
...
@@ -34,9 +34,6 @@ export default function AlertDialogSlide(props) {
...
@@ -34,9 +34,6 @@ export default function AlertDialogSlide(props) {
</
DialogContentText
>
</
DialogContentText
>
</
DialogContent
>
</
DialogContent
>
<
DialogActions
>
<
DialogActions
>
<
Button
onClick=
{
handleClose
}
color=
"primary"
>
Quay lại
</
Button
>
<
Button
<
Button
onClick=
{
()
=>
{
onClick=
{
()
=>
{
handleClose
()
handleClose
()
...
...
src/app/components/dialog/UpdateTimeStore.jsx
0 → 100644
View file @
cd1dc3f6
import
React
,
{
useState
,
useEffect
,
use
}
from
'react'
import
{
Button
,
FormControl
,
Grid
,
InputLabel
,
Select
,
TextField
,
Typography
,
DialogActions
,
Dialog
,
DialogContent
,
DialogContentText
,
DialogTitle
,
IconButton
,
Icon
,
Tooltip
,
FormControlLabel
,
Checkbox
,
}
from
'@material-ui/core'
import
{
toast
}
from
'react-toastify'
import
{
useTranslation
}
from
'react-i18next'
import
{
hideLoading
,
showLoading
}
from
'app/redux/actions/loadingAction'
import
{
connect
}
from
'react-redux'
import
{
KeyboardDatePicker
}
from
'@material-ui/pickers'
function
FormDialog
(
props
)
{
const
{
t
}
=
useTranslation
()
const
{
open
,
handleClose
,
data
,
onAgree
}
=
props
const
[
forever
,
setForever
]
=
useState
(
false
)
const
[
name
,
setName
]
=
useState
()
const
[
date
,
setDate
]
=
useState
(
addOneYear
())
const
handleDateChangeLast
=
(
date
)
=>
{
setDate
(
date
)
}
function
addOneYear
()
{
// Create a new Date object from the provided date
let
newDate
=
new
Date
()
// Add one year to the new date
newDate
.
setFullYear
(
newDate
.
getFullYear
()
+
1
)
return
newDate
}
return
(
<
Dialog
open=
{
open
}
onClose=
{
handleClose
}
aria
-
labelledby=
"form-dialog-title"
>
<
DialogTitle
id=
"form-dialog-title"
>
Điều chỉnh thời gian hoạt động
</
DialogTitle
>
<
DialogContent
>
<
FormControlLabel
className=
"min-w-88"
control=
{
<
Checkbox
size=
"small"
color=
"primary"
onChange=
{
(
event
)
=>
{
setForever
(
event
.
target
.
checked
)
}
}
value=
{
forever
}
checked=
{
forever
}
/>
}
label=
"Vô thời hạn"
/>
{
!
forever
&&
(
<
KeyboardDatePicker
style=
{
{
marginTop
:
15
,
}
}
placeholder=
"dd/MM/yyyy"
label=
{
'Thời gian hoạt động của cây xăng'
}
disableToolbar
inputVariant=
{
'outlined'
}
fullWidth
minDate=
{
new
Date
()
}
clearable=
{
true
}
format=
"dd/MM/yyyy"
minDateMessage=
"Thời gian phải lớn hơn ngày hiện tại"
invalidDateMessage=
"Định dạng không hợp lệ"
value=
{
date
}
onChange=
{
handleDateChangeLast
}
KeyboardButtonProps=
{
{
'aria-label'
:
'change date'
,
}
}
/>
)
}
</
DialogContent
>
<
DialogActions
>
<
Button
color=
"secondary"
onClick=
{
handleClose
}
>
Thoát
</
Button
>
<
Button
onClick=
{
()
=>
{
if
(
date
)
{
onAgree
(
forever
,
date
)
}
else
{
toast
.
warning
(
'Vui lòng nhập thời gian hoạt động của cây xăng!'
,
{
theme
:
'colored'
,
}
)
}
}
}
color=
"primary"
>
Đồng ý
</
Button
>
</
DialogActions
>
</
Dialog
>
)
}
const
mapStateToProps
=
(
state
)
=>
{
return
{}
}
export
default
connect
(
mapStateToProps
,
{
showLoading
,
hideLoading
})(
FormDialog
)
src/app/views/GasStation/Index.js
View file @
cd1dc3f6
...
@@ -15,6 +15,7 @@ import useDebounce from 'app/hooks/useDebounce'
...
@@ -15,6 +15,7 @@ import useDebounce from 'app/hooks/useDebounce'
import
{
dropdownMerchant
}
from
'app/apis/Functions/dropdown'
import
{
dropdownMerchant
}
from
'app/apis/Functions/dropdown'
import
{
useTranslation
}
from
'react-i18next'
import
{
useTranslation
}
from
'react-i18next'
import
{
dropdownStoreStatus
}
from
'app/apis/Functions/dropdown'
import
{
dropdownStoreStatus
}
from
'app/apis/Functions/dropdown'
import
{
convertDate
}
from
'app/config/Function'
const
ToolNotificate
=
(
props
)
=>
{
const
ToolNotificate
=
(
props
)
=>
{
const
[
txtSearch
,
setTxtSearch
]
=
useState
(
''
)
const
[
txtSearch
,
setTxtSearch
]
=
useState
(
''
)
...
@@ -172,6 +173,46 @@ const ToolNotificate = (props) => {
...
@@ -172,6 +173,46 @@ const ToolNotificate = (props) => {
}
}
}
}
const acceptStoreSub = async (item, forever, date) => {
props.showLoading()
const res = await changeStatusStore({
id: item.id,
status: 1,
expired: forever ? null : convertDate(date),
})
props.hideLoading()
if (res.data.code == 200) {
toast.success(`
$
{
'Phê duyệt'
}
c
â
y
x
ă
ng
th
à
nh
c
ô
ng
`, {
theme: 'colored',
})
getData()
} else {
toast.error(t(res.data.error), {
theme: 'colored',
})
}
}
const acceptUpdateTime = async (item, forever, date) => {
props.showLoading()
const res = await changeStatusStore({
id: item.id,
status: item.status,
expired: forever ? null : convertDate(date),
})
props.hideLoading()
if (res.data.code == 200) {
toast.success(`
$
{
'Phê duyệt'
}
c
â
y
x
ă
ng
th
à
nh
c
ô
ng
`, {
theme: 'colored',
})
getData()
} else {
toast.error(t(res.data.error), {
theme: 'colored',
})
}
}
return (
return (
<ToolUserView
<ToolUserView
data={data}
data={data}
...
@@ -192,6 +233,8 @@ const ToolNotificate = (props) => {
...
@@ -192,6 +233,8 @@ const ToolNotificate = (props) => {
status={status}
status={status}
setStatus={setStatus}
setStatus={setStatus}
listStatus={listStatus}
listStatus={listStatus}
acceptStoreSub={acceptStoreSub}
acceptUpdateTime={acceptUpdateTime}
/>
/>
)
)
}
}
...
...
src/app/views/GasStation/Table.js
View file @
cd1dc3f6
...
@@ -30,7 +30,8 @@ import { useHistory } from 'react-router-dom'
...
@@ -30,7 +30,8 @@ import { useHistory } from 'react-router-dom'
import
useAuth
from
'app/hooks/useAuth'
import
useAuth
from
'app/hooks/useAuth'
import
{
checkRole
}
from
'app/config/Function'
import
{
checkRole
}
from
'app/config/Function'
import
DialogReason
from
'app/components/dialog/DialogReason'
import
DialogReason
from
'app/components/dialog/DialogReason'
import
AcceptStore
from
'app/components/dialog/AcceptStore'
import
UpdateTimeStore
from
'app/components/dialog/UpdateTimeStore'
const
columns
=
[
const
columns
=
[
{
{
id
:
'index'
,
id
:
'index'
,
...
@@ -111,6 +112,8 @@ function TableList(props) {
...
@@ -111,6 +112,8 @@ function TableList(props) {
pageIndex
,
pageIndex
,
totalRecords
,
totalRecords
,
permissions
,
permissions
,
acceptStoreSub
,
acceptUpdateTime
,
}
=
props
}
=
props
const
classes
=
useStyles
()
const
classes
=
useStyles
()
let
history
=
useHistory
()
let
history
=
useHistory
()
...
@@ -120,6 +123,8 @@ function TableList(props) {
...
@@ -120,6 +123,8 @@ function TableList(props) {
title
:
''
,
title
:
''
,
content
:
''
,
content
:
''
,
})
})
const
[
openAccept
,
setOpenAccpet
]
=
useState
(
false
)
const
[
openUpdate
,
setOpenUpdate
]
=
useState
(
false
)
const
[
open
,
setOpen
]
=
React
.
useState
(
false
)
const
[
open
,
setOpen
]
=
React
.
useState
(
false
)
const
[
openReason
,
setOpenReason
]
=
useState
(
false
)
const
[
openReason
,
setOpenReason
]
=
useState
(
false
)
...
@@ -311,7 +316,7 @@ function TableList(props) {
...
@@ -311,7 +316,7 @@ function TableList(props) {
title
:
'Cho phép hoạt động cây xăng'
,
title
:
'Cho phép hoạt động cây xăng'
,
content
:
`Bạn có muốn cho phép hoạt động cây xăng
${
row
.
store_name
}
hay không?`
,
content
:
`Bạn có muốn cho phép hoạt động cây xăng
${
row
.
store_name
}
hay không?`
,
})
})
setOpen
(
true
)
setOpen
Accpet
(
true
)
}}
}}
className
=
{
classes
.
button
}
className
=
{
classes
.
button
}
aria
-
label
=
"Delete"
aria
-
label
=
"Delete"
...
@@ -326,6 +331,54 @@ function TableList(props) {
...
@@ -326,6 +331,54 @@ function TableList(props) {
<
/IconButton
>
<
/IconButton
>
<
/Tooltip
>
<
/Tooltip
>
)}
)}
{
row
.
status
==
3
&&
(
<
Tooltip
title
=
"Phê duyệt"
>
<
IconButton
onClick
=
{()
=>
{
setSelected
({
...
row
,
title
:
'Cho phép hoạt động cây xăng'
,
content
:
`Bạn có muốn cho phép hoạt động cây xăng
${
row
.
store_name
}
hay không?`
,
})
setOpenAccpet
(
true
)
}}
className
=
{
classes
.
button
}
aria
-
label
=
"Delete"
>
<
Icon
style
=
{{
color
:
'#00C65B'
,
}}
>
task_alt
<
/Icon
>
<
/IconButton
>
<
/Tooltip
>
)}
{
row
.
status
==
1
||
row
.
status
==
0
?
(
<
Tooltip
title
=
"Điều chỉnh thời gian"
>
<
IconButton
onClick
=
{()
=>
{
setSelected
({
...
row
,
})
setOpenUpdate
(
true
)
}}
className
=
{
classes
.
button
}
aria
-
label
=
"Delete"
>
<
Icon
style
=
{{
color
:
'#00C65B'
,
}}
>
today
<
/Icon
>
<
/IconButton
>
<
/Tooltip
>
)
:
null
}
<
Tooltip
title
=
"Chi tiết"
>
<
Tooltip
title
=
"Chi tiết"
>
<
IconButton
<
IconButton
onClick
=
{()
=>
{
onClick
=
{()
=>
{
...
@@ -393,6 +446,28 @@ function TableList(props) {
...
@@ -393,6 +446,28 @@ function TableList(props) {
}}
}}
/
>
/
>
<
AcceptStore
open
=
{
openAccept
}
handleClose
=
{()
=>
{
setOpenAccpet
(
false
)
}}
onAgree
=
{(
forever
,
date
)
=>
{
setOpenAccpet
(
false
)
acceptStoreSub
(
selected
,
forever
,
date
)
}}
/
>
<
UpdateTimeStore
open
=
{
openUpdate
}
handleClose
=
{()
=>
{
setOpenUpdate
(
false
)
}}
onAgree
=
{(
forever
,
date
)
=>
{
setOpenUpdate
(
false
)
acceptUpdateTime
(
selected
,
forever
,
date
)
}}
/
>
<
TablePagination
<
TablePagination
component
=
"div"
component
=
"div"
page
=
{
pageIndex
}
page
=
{
pageIndex
}
...
...
src/app/views/GasStation/View.js
View file @
cd1dc3f6
...
@@ -37,6 +37,8 @@ function CustomerView(props) {
...
@@ -37,6 +37,8 @@ function CustomerView(props) {
status
,
status
,
setStatus
,
setStatus
,
listStatus
,
listStatus
,
acceptStoreSub
,
acceptUpdateTime
,
}
=
props
}
=
props
const
[
age
,
setAge
]
=
React
.
useState
(
''
)
const
[
age
,
setAge
]
=
React
.
useState
(
''
)
const
{
user
}
=
useAuth
()
const
{
user
}
=
useAuth
()
...
@@ -168,6 +170,8 @@ function CustomerView(props) {
...
@@ -168,6 +170,8 @@ function CustomerView(props) {
setPageIndex
=
{
setPageIndex
}
setPageIndex
=
{
setPageIndex
}
totalRecords
=
{
totalRecords
}
totalRecords
=
{
totalRecords
}
permissions
=
{
permissions
}
permissions
=
{
permissions
}
acceptStoreSub
=
{
acceptStoreSub
}
acceptUpdateTime
=
{
acceptUpdateTime
}
/
>
/
>
<
/div
>
<
/div
>
<
/Fragment
>
<
/Fragment
>
...
...
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