Commit ba6234e7 by tdgiang

udpate code

parent a26d5168
......@@ -89,3 +89,8 @@ export const dropdownFuncitonPackge = async (body) =>
GetData(url.dropdownFuncitonPackge, body)
.then((res) => res)
.catch((err) => null)
export const dropdownStoreStatus = async (body) =>
GetData(url.dropdownStoreStatus, body)
.then((res) => res)
.catch((err) => null)
......@@ -70,3 +70,8 @@ export const deleteGasField = async (body) =>
PostData(url.deleteGasField, body)
.then((res) => res)
.catch((err) => null)
export const changeStatusStore = async (body) =>
PostData(url.changeStatusStore, body)
.then((res) => res)
.catch((err) => null)
//const root = 'http://petrolpay.tasvietnam.vn:9985/api'
//const root = 'https://apigw.petropos.vn/api'
//const root = 'http://dcvf.tasvietnam.vn:9986/api'
const root = 'https://apigw-v2.petropos.vn/api'
//const root = 'https://apigw-v2.petropos.vn/api'
const root = 'https://apitest.petropos.vn/api'
//v2
//const root = 'https://apitest-v2.petropos.vn/api'
......@@ -94,6 +94,8 @@ export default {
deleteGasOnline: `${root}/gasoline/delete`,
deleteGasField: `${root}/gasfield/delete`,
changeStatusStore: `${root}/merchantstore/changeStatus`,
//Supplier Invoice
urlGetListInvoiceSupp: `${root}/supplierInvoice/list`,
urlCreateInvoiceSupp: `${root}/supplierInvoice/create`,
......@@ -166,4 +168,5 @@ export default {
dropdownTypeEquipment: `${root}/dropdown/getlisttypeatc`,
dropdownNcc: `${root}/dropdown/getlistsuppliercontruct`,
dropdownFuncitonPackge: `${root}/dropdown/getlistfunctionpk`,
dropdownStoreStatus: `${root}/dropdown/getlistStoreStatus`,
}
......@@ -2,6 +2,11 @@ import React from 'react'
const GasStationRoutes = [
{
path: '/gas-station/detail',
component: React.lazy(() => import('./detail')),
},
{
path: '/gas-station/create',
component: React.lazy(() => import('./Create')),
},
......
......@@ -4,6 +4,7 @@ import {
getListGasStation,
deleteGasStation,
changeStatusGasStation,
changeStatusStore,
} from 'app/apis/Functions/merchant'
import { useHistory } from 'react-router-dom'
import KEY from 'app/assets/Key'
......@@ -13,6 +14,7 @@ import { toast } from 'react-toastify'
import useDebounce from 'app/hooks/useDebounce'
import { dropdownMerchant } from 'app/apis/Functions/dropdown'
import { useTranslation } from 'react-i18next'
import { dropdownStoreStatus } from 'app/apis/Functions/dropdown'
const ToolNotificate = (props) => {
const [txtSearch, setTxtSearch] = useState('')
......@@ -26,13 +28,14 @@ const ToolNotificate = (props) => {
const [totalRecords, setTotalRecord] = useState(0)
const [listMerchant, setListMerchant] = useState([])
const [merchant, setMerchant] = useState()
const [listStatus, setListStatus] = useState([])
const history = useHistory()
const [data, setData] = useState([])
const [permissions, setPermissions] = useState([])
useEffect(() => {
getDropDownMerchant()
getDropdownData()
}, [])
const handeChangeActive = async (id, status_id) => {
......@@ -95,6 +98,17 @@ const ToolNotificate = (props) => {
}
}
const getDropdownData = async () => {
const res = await dropdownStoreStatus()
if (res.data.code == 200 && res.data.data) {
setListStatus(res.data.data)
} else {
toast.error('Lấy giữ liệu thất bại !', {
theme: 'colored',
})
}
}
const getDropDownMerchant = async () => {
try {
const res = await dropdownMerchant()
......@@ -116,13 +130,26 @@ const ToolNotificate = (props) => {
getData(true)
}, [searchDebount, merchant, status])
const removeItem = async (id) => {
const removeItem = async (item) => {
props.showLoading()
const res = await deleteGasStation({ idGuid: id })
let res
if (item.status == 1) {
res = await changeStatusStore({
id: item.id,
status_id: 5,
})
} else {
res = await changeStatusStore({
id: item.id,
status_id: 1,
})
}
props.hideLoading()
if (res.data.code == 200) {
getData(true)
toast.success('Xoá bản ghi thành công!', {
toast.success('Cập nhật trạng thái cây xăng thành công!', {
theme: 'colored',
})
} else if (res.data.code == 401) {
......@@ -156,6 +183,7 @@ const ToolNotificate = (props) => {
setMerchant={setMerchant}
status={status}
setStatus={setStatus}
listStatus={listStatus}
/>
)
}
......
......@@ -82,6 +82,12 @@ const columns = [
align: 'left',
minWidth: 'auto',
},
{
id: 'status_text',
label: 'Trạng thái',
align: 'left',
minWidth: 'auto',
},
]
function TableList(props) {
......@@ -135,7 +141,7 @@ function TableList(props) {
{column.label}
</TableCell>
))}
{checkRole(user, '/gas-station/changeStatus') && (
{/* {checkRole(user, '/gas-station/changeStatus') && (
<TableCell
style={{
backgroundColor: colors.headerTable,
......@@ -144,13 +150,13 @@ function TableList(props) {
>
Trạng thái
</TableCell>
)}
)} */}
<TableCell
style={{
textAlign: 'center',
backgroundColor: colors.headerTable,
width: 120,
width: 160,
}}
>
Hành động
......@@ -188,7 +194,7 @@ function TableList(props) {
</TableCell>
)
})}
{/*
{checkRole(
user,
'/gas-station/changeStatus'
......@@ -216,9 +222,9 @@ function TableList(props) {
</MenuItem>
</Select>
</TableCell>
)}
)} */}
<TableCell>
{checkRole(
{/* {checkRole(
user,
'/gas-station/delete'
) ? (
......@@ -262,7 +268,70 @@ function TableList(props) {
</Icon>
</IconButton>
</Tooltip>
) : null}
) : null} */}
{row.status == 1 && (
<Tooltip title="Ngừng hoạt động">
<IconButton
onClick={() => {
setSelected({
...row,
title: 'Ngừng hoạt động cây xăng',
content: `Bạn có muốn ngừng hoạt động cây xăng ${row.store_name} hay không?`,
})
setOpen(true)
}}
className={classes.button}
aria-label="Delete"
>
<Icon color="error">
stop_circle
</Icon>
</IconButton>
</Tooltip>
)}
{row.status == 5 && (
<Tooltip title="Hoạt động">
<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?`,
})
setOpen(true)
}}
className={classes.button}
aria-label="Delete"
>
<Icon
style={{
color: '#00C65B',
}}
>
not_started
</Icon>
</IconButton>
</Tooltip>
)}
<Tooltip title="Chi tiết">
<IconButton
onClick={() => {
history.push({
pathname:
'/gas-station/detail',
state: row.id,
})
}}
className={classes.button}
aria-label="edit"
>
<Icon color="primary">
visibility
</Icon>
</IconButton>
</Tooltip>
</TableCell>
</TableRow>
)
......@@ -275,7 +344,7 @@ function TableList(props) {
open={open}
handleClose={handleClose}
onAgree={() => {
removeItem(selected.id)
removeItem(selected)
handleClose()
}}
/>
......
......@@ -36,6 +36,7 @@ function CustomerView(props) {
listMerchant,
status,
setStatus,
listStatus,
} = props
const [age, setAge] = React.useState('')
const { user } = useAuth()
......@@ -135,16 +136,7 @@ function CustomerView(props) {
<MenuItem value="">
<em>Tt c</em>
</MenuItem>
{[
{
id: 1,
name: 'Hoạt động',
},
{
id: 2,
name: 'Khoá',
},
].map((e) => (
{listStatus.map((e) => (
<MenuItem value={e.id}>
{e.name}
</MenuItem>
......@@ -153,7 +145,7 @@ function CustomerView(props) {
</FormControl>
</Grid>
</Grid>
{checkRole(user, '/gas-station/create') ? (
{/* {checkRole(user, '/gas-station/create') ? (
<Link to="/gas-station/create">
<Button
variant="contained"
......@@ -162,7 +154,7 @@ function CustomerView(props) {
<span className={'text-primary'}>Thêm mới</span>
</Button>
</Link>
) : null}
) : null} */}
</Grid>
<Table
......
import React, { useState, useEffect } from 'react'
import {
ValidatorForm,
TextValidator,
SelectValidator,
} from 'react-material-ui-form-validator'
import {
Button,
Grid,
MenuItem,
Typography,
IconButton,
Icon,
Tooltip,
} from '@material-ui/core'
import _ from 'lodash'
import {
createGasStation,
detailGasStation,
deleteGasField,
deleteGasOnline,
changeStatusStore,
} from 'app/apis/Functions/merchant'
import { showLoading, hideLoading } from 'app/redux/actions/loadingAction'
import { toast } from 'react-toastify'
import { Breadcrumb, SimpleCard } from 'app/components'
import { Link, useHistory, useLocation } from 'react-router-dom'
import { trimObject } from 'app/config/Function'
import { connect } from 'react-redux'
import { dropdownMerchant } from 'app/apis/Functions/dropdown'
import Table from '@material-ui/core/Table'
import TableBody from '@material-ui/core/TableBody'
import TableCell from '@material-ui/core/TableCell'
import TableContainer from '@material-ui/core/TableContainer'
import TableHead from '@material-ui/core/TableHead'
import TableRow from '@material-ui/core/TableRow'
import Paper from '@material-ui/core/Paper'
import { useTranslation } from 'react-i18next'
const SimpleForm = (props) => {
const [state, setState] = useState({})
const history = useHistory()
const [listDrop, setListDrop] = useState([])
const [openCreate, setOpenCreate] = useState(false)
const [listField, setListField] = useState([])
const [fountainSelected, setFountainSelected] = useState()
const [openUpdate, setOpenUpdate] = useState()
const [listProvince, setListProvince] = useState([])
const location = useLocation()
const { t } = useTranslation()
useEffect(() => {
getDateDetail()
getData()
}, [])
const getDateDetail = async () => {
props.showLoading()
const res = await detailGasStation(location.state, {})
props.hideLoading()
if (res.data.code == 200 && res.data.data) {
console.log(res.data.data.GasFueldInfo)
if (res.data.data.GasFueldInfo) {
setListField(res.data.data?.GasFueldInfo)
}
setState(res.data.data)
} else if (res.data.code == 401) {
setTimeout(() => {
history.push('/')
}, 100)
} else {
toast.error(t(res.data.error), {
theme: 'colored',
})
}
}
const getData = async () => {
props.showLoading()
const res = await dropdownMerchant({})
props.hideLoading()
if (res.data.code == 200 && res.data.data) {
const newList = res.data.data.map((e) => {
return { ...e, name: e.merchant_name }
})
setListDrop(newList)
} else if (res.data.code == 401) {
setTimeout(() => {
history.push('/')
}, 100)
} else {
toast.error('Lấy giữ liệu thất bại !', {
theme: 'colored',
})
}
}
const handleSubmit = async (event) => {
const newValue = trimObject(state)
props.showLoading()
const res = await createGasStation({
id: newValue?.id,
merchant_id: newValue?.merchant_id,
store_name: newValue?.store_name,
address: newValue?.address,
gas_fields: listField,
store_code: newValue?.store_code,
queue_name: newValue?.queue_name,
account: newValue?.account,
user_name: newValue?.user_name,
password: newValue?.password,
})
props.hideLoading()
if (res.data.code == 200) {
history.push('/gas-station')
if (res.data.code == 200) {
toast.success('Cập nhật cây xăng thành công!', {
theme: 'colored',
})
}
} else {
toast.error(t(res.data.error), {
theme: 'colored',
})
}
}
const handleChange = (event) => {
event.persist()
setState({
...state,
[event.target.name]: event.target.value,
})
}
const handleDateChange = (date) => {
setState({ ...state, date })
}
const countFountain = () => {
let temp = 0
listField.map((e) => {
if (e.gas_olines) {
temp += e.gas_olines.length
}
})
return temp
}
const changeSatusStore = async (status) => {
if (location.state) {
props.showLoading()
const res = await changeStatusStore({
id: location.state,
status_id: status,
})
props.hideLoading()
if (res.data.code == 200) {
toast.success(
`${
status == 4 ? 'Từ chối phê duyệt' : 'Phê duyệt'
} trụ xăng thành công`,
{
theme: 'colored',
}
)
history.push('/gas-station')
} else {
toast.error(t(res.data.error), {
theme: 'colored',
})
}
} else {
toast.error('Trạng thái không hợp lệ', {
theme: 'colored',
})
}
}
const {
store_name,
province_id,
supplier_main,
address,
partition_id,
store_code,
phone,
email,
merchant_id,
provice_name,
status,
supplier_main_name,
partition_name,
merchant_name,
} = state
return (
<div className="m-sm-30">
<div className="mb-sm-30">
<div className="mb-sm-30">
<Breadcrumb
routeSegments={[
{
name: 'Danh sách cây xăng',
path: '/gas-station',
},
{ name: 'Chi tiết' },
]}
/>
</div>
<SimpleCard>
<ValidatorForm
id="form-create"
onSubmit={handleSubmit}
onError={() => null}
>
<Grid container spacing={3}>
<Grid item lg={6} md={6} sm={12} xs={12}>
<TextValidator
variant="outlined"
className="mb-4 w-full"
label="Thuộc pháp nhân "
disabled={true}
onChange={handleChange}
type="text"
name="merchant_name"
value={merchant_name || ''}
/>
</Grid>
<Grid item lg={6} md={6} sm={12} xs={12}>
<TextValidator
variant="outlined"
className="mb-4 w-full"
label="Mã cây xăng "
disabled={true}
onChange={handleChange}
type="text"
name="store_code"
value={store_code || ''}
/>
</Grid>
<Grid item lg={6} md={6} sm={12} xs={12}>
<TextValidator
variant="outlined"
className="mb-4 w-full"
label="Tên cây xăng "
onChange={handleChange}
type="text"
name="store_name"
value={store_name || ''}
disabled={true}
/>
</Grid>
<Grid item lg={6} md={6} sm={12} xs={12}>
<TextValidator
variant="outlined"
className="mb-4 w-full"
label="Tỉnh thành phố "
onChange={handleChange}
type="text"
name="provice_name"
value={provice_name || ''}
disabled={true}
/>
</Grid>
<Grid item lg={6} md={6} sm={12} xs={12}>
<TextValidator
variant="outlined"
className="mb-4 w-full"
label="Địa chỉ "
onChange={handleChange}
type="text"
name="address"
value={address || ''}
disabled={true}
/>
</Grid>
<Grid item lg={6} md={6} sm={12} xs={12}>
<TextValidator
variant="outlined"
className="mb-4 w-full"
label="Vùng "
onChange={handleChange}
type="text"
name="partition_name"
value={partition_name || ''}
disabled={true}
/>
</Grid>
<Grid item lg={6} md={6} sm={12} xs={12}>
<TextValidator
variant="outlined"
className="mb-4 w-full"
label="Đơn vị cung cấp main "
onChange={handleChange}
type="text"
name="supplier_main_name"
value={supplier_main_name || ''}
disabled={true}
/>
</Grid>
<Grid item lg={6} md={6} sm={12} xs={12}>
<TextValidator
variant="outlined"
className="mb-4 w-full"
label="Số điện thoại "
onChange={handleChange}
type="text"
name="phone"
value={phone || ''}
disabled={true}
/>
</Grid>
<Grid item lg={6} md={6} sm={12} xs={12}>
<TextValidator
variant="outlined"
className="mb-4 w-full"
label="Email "
onChange={handleChange}
type="text"
name="email"
value={email || ''}
disabled={true}
/>
</Grid>
<Grid
item
container
lg={12}
md={12}
sm={12}
xs={12}
justify="space-between"
style={{
padding: 10,
borderRadius: 5,
}}
>
<Typography variant="h6">
Thông tin tr xăng
</Typography>
<Grid
item
container
lg={12}
md={12}
sm={12}
xs={12}
justify="space-between"
>
<div>
<Typography variant="subtitle1">
S lượng tr: {listField.length}
</Typography>
<Typography variant="subtitle1">
S lượng vòi: {countFountain()}
</Typography>
</div>
</Grid>
{listField.map((item, index) => (
<Grid
style={{
border: '1px solid #B9B9B9',
borderRadius: 5,
padding: 10,
marginTop: 20,
}}
lg={12}
md={12}
sm={12}
xs={12}
>
<Grid lg={12} md={12} sm={12} xs={12}>
<div
style={{
alignItems: 'center',
justifyContent:
'space-between',
display: 'flex',
marginBottom: 10,
}}
>
<Typography variant="h6">
{item.field_name}
</Typography>
</div>
<TableContainer component={Paper}>
<Table aria-label="simple table">
<TableHead>
<TableRow
style={{
backgroundColor:
'#F3F3F3',
}}
>
<TableCell
style={{
borderRight:
'0.05px solid #e0e0e0',
width: 100,
}}
align="center"
>
STT
</TableCell>
<TableCell
style={{
borderRight:
'0.05px solid #e0e0e0',
}}
align="center"
>
Mã vòi
</TableCell>
<TableCell
style={{
borderRight:
'0.05px solid #e0e0e0',
}}
align="center"
>
Vòi
</TableCell>
<TableCell
style={{
borderRight:
'0.05px solid #e0e0e0',
}}
align="center"
>
Bn kết ni
</TableCell>
</TableRow>
</TableHead>
<TableBody>
{item?.gas_olines.map(
(row, index) => (
<TableRow
key={
row.name
}
>
<TableCell
component="th"
scope="row"
style={{
borderRight:
'0.05px solid #e0e0e0',
}}
align="center"
>
{index +
1}
</TableCell>
<TableCell
style={{
borderRight:
'0.05px solid #e0e0e0',
}}
align="right"
>
{
row?.code
}
</TableCell>
<TableCell
style={{
borderRight:
'0.05px solid #e0e0e0',
}}
align="right"
>
{
row?.name
}
</TableCell>
<TableCell
style={{
borderRight:
'0.05px solid #e0e0e0',
}}
align="right"
>
{
row?.tank_name
}
</TableCell>
</TableRow>
)
)}
</TableBody>
</Table>
</TableContainer>
</Grid>
</Grid>
))}
</Grid>
</Grid>
<Grid
style={{
marginTop: 40,
}}
container
justify={'flex-end'}
>
<Button
style={{
marginRight: 20,
}}
color="inherit"
variant="contained"
onClick={() => {
history.goBack()
}}
>
<span className="capitalize">Quay li</span>
</Button>
{status == 3 && (
<Button
style={{
marginRight: 20,
}}
color="secondary"
variant="contained"
onClick={() => {
changeSatusStore(4)
}}
>
<span
style={{
color: 'white',
}}
className="capitalize"
>
T chi
</span>
</Button>
)}
{status == 3 && (
<Button
color="primary"
variant="contained"
onClick={() => {
changeSatusStore(1)
}}
>
<span className="capitalize">Duyt</span>
</Button>
)}
</Grid>
</ValidatorForm>
</SimpleCard>
</div>
</div>
)
}
const mapStateToProps = (state) => {
return {}
}
export default connect(mapStateToProps, { showLoading, hideLoading })(
SimpleForm
)
......@@ -339,16 +339,12 @@ const SimpleForm = (props) => {
<Grid xs={6} sm={6} item>
<SelectValidator
variant={'outlined'}
label={'Đơn vị cung cấp *'}
label={'Đơn vị cung cấp'}
className="mb-4 w-full"
value={supplier_code || ''}
displayEmpty
name="supplier_code"
onChange={handleChange}
validators={['required']}
errorMessages={[
'Không được để trống trường này',
]}
>
{listDrop.map((e) => (
<MenuItem value={e.id}>
......@@ -364,15 +360,11 @@ const SimpleForm = (props) => {
<TextValidator
variant="outlined"
className="mb-4 w-full"
label="Mã số thuế hoá đơn *"
label="Mã số thuế hoá đơn"
onChange={handleChange}
type="text"
name="hddt_tax_code"
value={hddt_tax_code || ''}
validators={['required']}
errorMessages={[
'Không được để trống trường này',
]}
/>
</Grid>
) : null}
......@@ -382,15 +374,11 @@ const SimpleForm = (props) => {
<TextValidator
variant="outlined"
className="mb-4 w-full"
label="Tài khoản hoá đơn *"
label="Tài khoản hoá đơn"
onChange={handleChange}
type="text"
name="hddt_username"
value={hddt_username || ''}
validators={['required']}
errorMessages={[
'Không được để trống trường này',
]}
/>
</Grid>
) : null}
......@@ -400,15 +388,11 @@ const SimpleForm = (props) => {
<TextValidator
variant="outlined"
className="mb-4 w-full"
label="Mật khẩu hoá đơn *"
label="Mật khẩu hoá đơn "
onChange={handleChange}
type="text"
name="hddt_password"
value={hddt_password || ''}
validators={['required']}
errorMessages={[
'Không được để trống trường này',
]}
/>
</Grid>
) : null}
......@@ -418,15 +402,11 @@ const SimpleForm = (props) => {
<TextValidator
variant="outlined"
className="mb-4 w-full"
label="Chữ ký hoá đơn *"
label="Chữ ký hoá đơn "
onChange={handleChange}
type="text"
name="hddt_character"
value={hddt_character || ''}
validators={['required']}
errorMessages={[
'Không được để trống trường này',
]}
/>
</Grid>
) : null}
......@@ -436,15 +416,11 @@ const SimpleForm = (props) => {
<TextValidator
variant="outlined"
className="mb-4 w-full"
label="Loại chữ ký số *"
label="Loại chữ ký số "
onChange={handleChange}
type="text"
name="hddt_sign_code"
value={hddt_sign_code || ''}
validators={['required']}
errorMessages={[
'Không được để trống trường này',
]}
/>
</Grid>
) : null}
......@@ -454,15 +430,11 @@ const SimpleForm = (props) => {
<TextValidator
variant="outlined"
className="mb-4 w-full"
label="Tài khoản Admin hoá đơn điện tử *"
label="Tài khoản Admin hoá đơn điện tử "
onChange={handleChange}
type="text"
name="hddt_account"
value={hddt_account || ''}
validators={['required']}
errorMessages={[
'Không được để trống trường này',
]}
/>
</Grid>
) : null}
......@@ -472,15 +444,11 @@ const SimpleForm = (props) => {
<TextValidator
variant="outlined"
className="mb-4 w-full"
label="Mật khẩu Admin hoá đơn điện tử *"
label="Mật khẩu Admin hoá đơn điện tử "
onChange={handleChange}
type="text"
name="hddt_acpass"
value={hddt_acpass || ''}
validators={['required']}
errorMessages={[
'Không được để trống trường này',
]}
/>
</Grid>
) : null}
......@@ -490,15 +458,11 @@ const SimpleForm = (props) => {
<TextValidator
variant="outlined"
className="mb-4 w-full"
label="Đường dẫn api *"
label="Đường dẫn api "
onChange={handleChange}
type="text"
name="hddt_base_url"
value={hddt_base_url || ''}
validators={['required']}
errorMessages={[
'Không được để trống trường này',
]}
/>
</Grid>
) : null}
......@@ -508,15 +472,11 @@ const SimpleForm = (props) => {
<TextValidator
variant="outlined"
className="mb-4 w-full"
label="Mẫu hoá đơn *"
label="Mẫu hoá đơn "
onChange={handleChange}
type="text"
name="inv_pattern"
value={inv_pattern || ''}
validators={['required']}
errorMessages={[
'Không được để trống trường này',
]}
/>
</Grid>
) : null}
......@@ -526,15 +486,11 @@ const SimpleForm = (props) => {
<TextValidator
variant="outlined"
className="mb-4 w-full"
label="Ký hiệu hoá đơn *"
label="Ký hiệu hoá đơn "
onChange={handleChange}
type="text"
name="inv_serial"
value={inv_serial || ''}
validators={['required']}
errorMessages={[
'Không được để trống trường này',
]}
/>
</Grid>
) : null}
......@@ -567,7 +523,7 @@ const SimpleForm = (props) => {
<TextValidator
variant="outlined"
className="mb-4 w-full"
label="Độ trễ phát hành hoá đơn *"
label="Độ trễ phát hành hoá đơn "
onChange={handleChange}
type="text"
name="publish_invoce_time"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment