Commit 58add8ae by tdgiang

update code

parent 10a4a988
/* eslint-disable handle-callback-err */
import { PostData, GetURL } from '../helpers'
import url from '../url'
export const getListMerchants = async (body) =>
PostData(url.urlGetListMerchant, body)
.then((res) => res)
.catch((err) => null)
export const createMerchant = async (body) =>
PostData(url.urlCreateMerchant, body)
.then((res) => res)
.catch((err) => null)
export const updateMerchant = async (body) =>
PostData(url.urlUpdateMerchant, body)
.then((res) => res)
.catch((err) => null)
export const detailMerchant = async (id, body) =>
GetURL(`${url.urlDetailMerchant}/${id}`, body)
.then((res) => res)
.catch((err) => null)
export const deleteMerchant = async (body) =>
PostData(url.urlDeleteMerchant, body)
.then((res) => res)
.catch((err) => null)
export const changeStatusMerchant = async (body) =>
PostData(url.changeStatusMerchant, body)
.then((res) => res)
.catch((err) => null)
...@@ -62,6 +62,15 @@ export default { ...@@ -62,6 +62,15 @@ export default {
urlDetailProduct: `${root}/product`, urlDetailProduct: `${root}/product`,
changeStatusProduct: `${root}/product/changeStatus`, changeStatusProduct: `${root}/product/changeStatus`,
listTransaction: `${root}/paymentTrans/list`, listTransaction: `${root}/paymentTrans/list`,
//merchant:
urlGetListMerchant: `${root}/merchant/list`,
urlCreateMerchant: `${root}/merchant/create`,
urlUpdateMerchant: `${root}/merchant/update`,
urlDeleteMerchant: `${root}/merchant/delete`,
urlDetailMerchant: `${root}/merchant`,
changeStatusMerchant: `${root}/merchant/changeStatus`,
//Log //Log
logAuth: `${root}/logging/listLogin`, logAuth: `${root}/logging/listLogin`,
logApi: `${root}/logging/listCallApi`, logApi: `${root}/logging/listCallApi`,
......
import React, { useState, useEffect } from 'react' import React, { useState, useEffect } from 'react'
import { ValidatorForm, TextValidator } from 'react-material-ui-form-validator' import { ValidatorForm, TextValidator } from 'react-material-ui-form-validator'
import { Button, Grid } from '@material-ui/core' import {
Button,
Grid,
FormControlLabel,
Checkbox,
Typography,
} from '@material-ui/core'
import { createFunction } from 'app/apis/Functions/function' import { createMerchant } from 'app/apis/Functions/merchant'
import { showLoading, hideLoading } from 'app/redux/actions/loadingAction' import { showLoading, hideLoading } from 'app/redux/actions/loadingAction'
import { toast } from 'react-toastify' import { toast } from 'react-toastify'
import { Breadcrumb, SimpleCard } from 'app/components' import { Breadcrumb, SimpleCard } from 'app/components'
import { Link, useHistory, useLocation } from 'react-router-dom' import { Link, useHistory, useLocation } from 'react-router-dom'
import { trimObject } from 'app/config/Function' import { trimObject } from 'app/config/Function'
import { connect } from 'react-redux' import { connect } from 'react-redux'
import { useTranslation } from 'react-i18next'
const SimpleForm = (props) => { const SimpleForm = (props) => {
const [state, setState] = useState({}) const [state, setState] = useState({})
const history = useHistory() const history = useHistory()
const [isStore, setIsStore] = useState(false)
const [invoice, setInvoice] = useState(false)
const [payment, setPayment] = useState(false)
const { t } = useTranslation()
const handleSubmit = async (event) => { const handleSubmit = async (event) => {
const newValue = trimObject(state) const newValue = trimObject(state)
props.showLoading()
const res = await createFunction({ console.log('newValue', newValue)
console.log('isStore', isStore)
console.log('invoice', invoice)
console.log('payment', payment)
//props.showLoading()
const res = await createMerchant({
...newValue, ...newValue,
status: 1, is_admin_store: true,
is_default: true, is_connect_hddt: true,
is_connect_qr: true,
}) })
props.hideLoading() //props.hideLoading()
if (res.data.code == 200) { console.log('res', res)
history.push('/function') // if (res.data.code == 200) {
if (res.data.code == 200) { // history.push('/merchant')
toast.success('Tạo hành động thành công!', { // if (res.data.code == 200) {
theme: 'colored', // toast.success('Tạo pháp nhân thành công!', {
}) // theme: 'colored',
} // })
} else { // }
toast.error('Tạo hành động thất bại!', { // } else {
theme: 'colored', // toast.error(t(res.data.error), {
}) // theme: 'colored',
} // })
// }
} }
const handleChange = (event) => { const handleChange = (event) => {
...@@ -43,11 +63,23 @@ const SimpleForm = (props) => { ...@@ -43,11 +63,23 @@ const SimpleForm = (props) => {
}) })
} }
const handleDateChange = (date) => { const {
setState({ ...state, date }) merchan_name,
} tax_code,
address,
const { description, name, code, url } = state email,
phone_number,
representative,
username,
password,
hddt_tax_code,
hddt_username,
hddt_password,
hddt_character,
qr_merchant_code,
qr_api_key,
qr_secret_key,
} = state
return ( return (
<div className="m-sm-30"> <div className="m-sm-30">
...@@ -56,10 +88,10 @@ const SimpleForm = (props) => { ...@@ -56,10 +88,10 @@ const SimpleForm = (props) => {
<Breadcrumb <Breadcrumb
routeSegments={[ routeSegments={[
{ {
name: 'Danh sách chức năng', name: 'Danh sách pháp nhân',
path: '/function', path: '/merchant',
}, },
{ name: 'Thêm mới chức năng' }, { name: 'Thêm mới pháp nhân' },
]} ]}
/> />
</div> </div>
...@@ -70,26 +102,42 @@ const SimpleForm = (props) => { ...@@ -70,26 +102,42 @@ const SimpleForm = (props) => {
<TextValidator <TextValidator
variant="outlined" variant="outlined"
className="mb-4 w-full" className="mb-4 w-full"
label="Tên chức năng *" label="Tên pháp nhân *"
onChange={handleChange}
type="text"
name="merchan_name"
value={merchan_name || ''}
validators={['required']}
errorMessages={[
'Không được để trống trường này',
]}
/>
</Grid>
<Grid item lg={6} md={6} sm={12} xs={12}>
<TextValidator
variant="outlined"
className="mb-4 w-full"
label="Mã số thuế *"
onChange={handleChange} onChange={handleChange}
type="text" type="text"
name="name" name="tax_code"
value={name || ''} value={tax_code || ''}
validators={['required']} validators={['required']}
errorMessages={[ errorMessages={[
'Không được để trống trường này', 'Không được để trống trường này',
]} ]}
/> />
</Grid> </Grid>
<Grid item lg={6} md={6} sm={12} xs={12}> <Grid item lg={6} md={6} sm={12} xs={12}>
<TextValidator <TextValidator
variant="outlined" variant="outlined"
className="mb-4 w-full" className="mb-4 w-full"
label="Mã code *" label="Địa chỉ *"
onChange={handleChange} onChange={handleChange}
type="text" type="text"
name="code" name="address"
value={code || ''} value={address || ''}
validators={['required']} validators={['required']}
errorMessages={[ errorMessages={[
'Không được để trống trường này', 'Không được để trống trường này',
...@@ -101,11 +149,28 @@ const SimpleForm = (props) => { ...@@ -101,11 +149,28 @@ const SimpleForm = (props) => {
<TextValidator <TextValidator
variant="outlined" variant="outlined"
className="mb-4 w-full" className="mb-4 w-full"
label="Đường dẫn *" label="Email *"
onChange={handleChange} onChange={handleChange}
type="text" type="text"
name="url" name="email"
value={url || ''} value={email || ''}
validators={['required', 'isEmail']}
errorMessages={[
'Không được để trống trường này',
'Email không hợp lệ',
]}
/>
</Grid>
<Grid item lg={6} md={6} sm={12} xs={12}>
<TextValidator
variant="outlined"
className="mb-4 w-full"
label="Tên người đại diện *"
onChange={handleChange}
type="text"
name="representative"
value={representative || ''}
validators={['required']} validators={['required']}
errorMessages={[ errorMessages={[
'Không được để trống trường này', 'Không được để trống trường này',
...@@ -116,20 +181,246 @@ const SimpleForm = (props) => { ...@@ -116,20 +181,246 @@ const SimpleForm = (props) => {
<TextValidator <TextValidator
variant="outlined" variant="outlined"
className="mb-4 w-full" className="mb-4 w-full"
label="Mô tả" label="Số điện thoại liên hệ *"
onChange={handleChange}
type="text"
name="phone_number"
value={phone_number || ''}
validators={[
'required',
'isNumber',
'minStringLength:10',
'maxStringLength:15',
]}
errorMessages={[
'Không được để trống trường này',
'Trường này phải nhập số ',
'Số điện thoại phải có ít nhất 10 chữ số',
'Số điện thoại nhiều nhất chỉ có 15 chữ số',
]}
/>
</Grid>
<Grid item lg={6} md={6} sm={12} xs={12}>
<TextValidator
variant="outlined"
className="mb-4 w-full"
label="Tên đăng nhập *"
onChange={handleChange} onChange={handleChange}
type="text" type="text"
name="description" name="username"
value={description || ''} value={username || ''}
// validators={['required']} validators={['required']}
errorMessages={[
'Không được để trống trường này',
]}
/>
</Grid>
<Grid item lg={6} md={6} sm={12} xs={12}>
<TextValidator
variant="outlined"
className="mb-4 w-full"
label="Mật khẩu *"
onChange={handleChange}
type="password"
name="password"
value={password || ''}
validators={[
'required',
'minStringLength:8',
]}
errorMessages={[ errorMessages={[
'Không được để trống trường này', 'Không được để trống trường này',
'Mật khẩu phải có ít nhất 8 ký tự',
]} ]}
/> />
</Grid> </Grid>
<Grid lg={12} md={12} sm={12} xs={12} item>
<FormControlLabel
className="min-w-288"
control={
<Checkbox
size="small"
color="primary"
onChange={(event) => {
console.log(
event.target.checked
)
setIsStore(event.target.checked)
}}
value={isStore}
/>
}
label="Pháp nhân là chủ cửa hàng"
/>
</Grid>
<Grid lg={12} md={12} sm={12} xs={12} item>
<Typography variant="h6">
Thông tin tích hp
</Typography>
</Grid>
<Grid lg={12} md={12} sm={12} xs={12} item>
<FormControlLabel
className="min-w-288"
control={
<Checkbox
size="small"
name={'he1'}
color="primary"
onChange={(event) => {
setInvoice(event.target.checked)
}}
value={invoice}
/>
}
label="Tích hợp hóa đơn"
/>
</Grid>
{invoice ? (
<Grid item lg={6} md={6} sm={12} xs={12}>
<TextValidator
variant="outlined"
className="mb-4 w-full"
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}
{invoice ? (
<Grid item lg={6} md={6} sm={12} xs={12}>
<TextValidator
variant="outlined"
className="mb-4 w-full"
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}
{invoice ? (
<Grid item lg={6} md={6} sm={12} xs={12}>
<TextValidator
variant="outlined"
className="mb-4 w-full"
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}
{invoice ? (
<Grid item lg={6} md={6} sm={12} xs={12}>
<TextValidator
variant="outlined"
className="mb-4 w-full"
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}
<Grid lg={12} md={12} sm={12} xs={12} item>
<FormControlLabel
className="min-w-288"
control={
<Checkbox
size="small"
color="primary"
name={'he2'}
onChange={(event) => {
setPayment(event.target.checked)
}}
value={payment}
/>
}
label="Tích hợp thanh toán"
/>
</Grid>
{payment ? (
<Grid item lg={6} md={6} sm={12} xs={12}>
<TextValidator
variant="outlined"
className="mb-4 w-full"
label="Mã QR code *"
onChange={handleChange}
type="text"
name="qr_merchant_code"
value={qr_merchant_code || ''}
validators={['required']}
errorMessages={[
'Không được để trống trường này',
]}
/>
</Grid>
) : null}
{payment ? (
<Grid item lg={6} md={6} sm={12} xs={12}>
<TextValidator
variant="outlined"
className="mb-4 w-full"
label="API QR key *"
onChange={handleChange}
type="text"
name="qr_api_key"
value={qr_api_key || ''}
validators={['required']}
errorMessages={[
'Không được để trống trường này',
]}
/>
</Grid>
) : null}
{payment ? (
<Grid item lg={6} md={6} sm={12} xs={12}>
<TextValidator
variant="outlined"
className="mb-4 w-full"
label="Mật khẩu QR *"
onChange={handleChange}
type="text"
name="qr_secret_key"
value={qr_secret_key || ''}
validators={['required']}
errorMessages={[
'Không được để trống trường này',
]}
/>
</Grid>
) : null}
</Grid> </Grid>
<Grid container justify={'flex-end'}> <Grid container justify={'flex-end'}>
<Link to="function"> <Link to="merchant">
<Button <Button
style={{ style={{
marginRight: 20, marginRight: 20,
......
import React, { useState, useEffect } from 'react' import React, { useState, useEffect } from 'react'
import ToolUserView from './View' import ToolUserView from './View'
import { import {
getListFunction, getListMerchants,
deleteFunction, deleteMerchant,
changeStatusFunction, changeStatusMerchant,
} from 'app/apis/Functions/function' } from 'app/apis/Functions/merchant'
import { useHistory } from 'react-router-dom' import { useHistory } from 'react-router-dom'
import KEY from '../../assets/Key' import KEY from '../../assets/Key'
import { connect } from 'react-redux' import { connect } from 'react-redux'
...@@ -27,24 +27,10 @@ const ToolNotificate = (props) => { ...@@ -27,24 +27,10 @@ const ToolNotificate = (props) => {
const [data, setData] = useState([]) const [data, setData] = useState([])
const [permissions, setPermissions] = useState([]) const [permissions, setPermissions] = useState([])
// useEffect(() => {
// getListPermission();
// }, []);
// const getListPermission = () => {
// let temp = localStorage.getItem(KEY.LISTPATH);
// let listPath = JSON.parse(temp);
// if (listPath) {
// const newlist = listPath.map((e) => {
// if (e.function_code) return e.function_code;
// return e.action_code;
// });
// setPermissions(newlist);
// }
// };
const handeChangeActive = async (id, status_id) => { const handeChangeActive = async (id, status_id) => {
props.showLoading() props.showLoading()
const res = await changeStatusFunction({ id, status_id }) const res = await changeStatusMerchant({ id, status_id })
props.hideLoading() props.hideLoading()
if (res.data.code == 200) { if (res.data.code == 200) {
getData() getData()
...@@ -60,13 +46,14 @@ const ToolNotificate = (props) => { ...@@ -60,13 +46,14 @@ const ToolNotificate = (props) => {
const getData = async () => { const getData = async () => {
props.showLoading() props.showLoading()
const res = await getListFunction({ const res = await getListMerchants({
name: searchDebount, name: searchDebount,
page_no: pageIndex + 1, page_no: pageIndex + 1,
page_size: pageSize, page_size: pageSize,
}) })
props.hideLoading() props.hideLoading()
console.log('res', res)
if (res.data.code == 200 && res.data.data) { if (res.data.code == 200 && res.data.data) {
console.log(res.data) console.log(res.data)
...@@ -92,7 +79,7 @@ const ToolNotificate = (props) => { ...@@ -92,7 +79,7 @@ const ToolNotificate = (props) => {
const removeItem = async (id) => { const removeItem = async (id) => {
props.showLoading() props.showLoading()
const res = await deleteFunction({ id }) const res = await deleteMerchant({ id })
props.hideLoading() props.hideLoading()
if (res.data.code == 200) { if (res.data.code == 200) {
getData() getData()
......
...@@ -39,34 +39,46 @@ const columns = [ ...@@ -39,34 +39,46 @@ const columns = [
}, },
{ {
id: 'name', id: 'merchant_name',
label: 'Tên chức năng', label: 'Pháp nhân',
align: 'left', align: 'left',
minWidth: 'auto', minWidth: 'auto',
}, },
{ {
id: 'code', id: 'tax_code',
label: 'Mã code', label: 'Mã số thuế',
align: 'left', align: 'left',
minWidth: 'auto', minWidth: 'auto',
}, },
{ {
id: 'url', id: 'address',
label: ường dẫn', label: ịa chỉ',
align: 'left', align: 'left',
minWidth: 'auto', minWidth: 'auto',
}, },
{ {
id: 'description', id: 'email',
label: 'Mô tả', label: 'Email',
align: 'left', align: 'left',
minWidth: 'auto', minWidth: 'auto',
}, },
{ {
id: 'date_created', id: 'representative',
label: 'Ngày tạo', label: 'Người đại diện',
align: 'left',
minWidth: 'auto',
},
{
id: 'phone_number',
label: 'SĐT liên hệ',
align: 'left',
minWidth: 'auto',
},
{
id: 'total_store',
label: 'Số cây xăng',
align: 'left', align: 'left',
minWidth: 'auto', minWidth: 'auto',
}, },
......
...@@ -47,7 +47,7 @@ const SimpleForm = (props) => { ...@@ -47,7 +47,7 @@ const SimpleForm = (props) => {
}) })
props.hideLoading() props.hideLoading()
if (res.data.code == 200) { if (res.data.code == 200) {
history.push('/function') history.push('/merchant')
if (res.data.code == 200) { if (res.data.code == 200) {
toast.success('Cập nhật hành động thành công!', { toast.success('Cập nhật hành động thành công!', {
theme: 'colored', theme: 'colored',
...@@ -81,10 +81,10 @@ const SimpleForm = (props) => { ...@@ -81,10 +81,10 @@ const SimpleForm = (props) => {
<Breadcrumb <Breadcrumb
routeSegments={[ routeSegments={[
{ {
name: 'Danh sách chức năng', name: 'Danh sách pháp nhân',
path: '/function', path: '/merchant',
}, },
{ name: 'Cập nhật chức năng' }, { name: 'Cập nhật pháp nhân' },
]} ]}
/> />
</div> </div>
...@@ -95,7 +95,7 @@ const SimpleForm = (props) => { ...@@ -95,7 +95,7 @@ const SimpleForm = (props) => {
<TextValidator <TextValidator
variant="outlined" variant="outlined"
className="mb-4 w-full" className="mb-4 w-full"
label="Tên chức năng *" label="Tên pháp nhân *"
onChange={handleChange} onChange={handleChange}
type="text" type="text"
name="name" name="name"
...@@ -154,7 +154,7 @@ const SimpleForm = (props) => { ...@@ -154,7 +154,7 @@ const SimpleForm = (props) => {
</Grid> </Grid>
</Grid> </Grid>
<Grid container justify={'flex-end'}> <Grid container justify={'flex-end'}>
<Link to="function"> <Link to="merchant">
<Button <Button
style={{ style={{
marginRight: 20, marginRight: 20,
......
...@@ -45,8 +45,8 @@ function CustomerView(props) { ...@@ -45,8 +45,8 @@ function CustomerView(props) {
<Breadcrumb <Breadcrumb
routeSegments={[ routeSegments={[
{ {
name: 'Danh sách chức năng', name: 'Danh sách pháp nhân',
path: '/function', path: '/merchant',
}, },
]} ]}
/> />
...@@ -66,7 +66,7 @@ function CustomerView(props) { ...@@ -66,7 +66,7 @@ function CustomerView(props) {
<TextField <TextField
variant="outlined" variant="outlined"
className="w-full" className="w-full"
label="Tên chức năng" label="Tên pháp nhân"
onChange={(e) => { onChange={(e) => {
const text = e.target.value const text = e.target.value
setTimeout(() => { setTimeout(() => {
...@@ -75,8 +75,8 @@ function CustomerView(props) { ...@@ -75,8 +75,8 @@ function CustomerView(props) {
}} }}
/> />
</Grid> </Grid>
{checkRole(user, '/function/create') ? ( {checkRole(user, '/merchant/create') ? (
<Link to="/function/create"> <Link to="/merchant/create">
<Button <Button
variant="contained" variant="contained"
className={'bg-light-primary'} className={'bg-light-primary'}
......
...@@ -35,7 +35,7 @@ const ToolNotificate = (props) => { ...@@ -35,7 +35,7 @@ const ToolNotificate = (props) => {
page_size: pageSize, page_size: pageSize,
from_date: startDate ? convertDate(startDate) : null, from_date: startDate ? convertDate(startDate) : null,
to_date: endDate ? convertDate(endDate) : null, to_date: endDate ? convertDate(endDate) : null,
gasoline_id: '57dd1a73-d847-4d73-9791-08dc0841e7a9', // gasoline_id: '57dd1a73-d847-4d73-9791-08dc0841e7a9',
}) })
props.hideLoading() props.hideLoading()
if (res.data.code == 200 && res.data.data) { if (res.data.code == 200 && res.data.data) {
......
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