update sua 1 so cho
This commit is contained in:
parent
b45d36a93b
commit
44b5203549
31977
app/package-lock.json
generated
31977
app/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
|
@ -10,6 +10,12 @@ import { HOST } from '../../config/index';
|
|||
import swal from 'sweetalert';
|
||||
import { useLocation } from 'react-router-dom';
|
||||
|
||||
const initialDataPost = {
|
||||
index: 1,
|
||||
item_per_page: 5,
|
||||
search_data: ""
|
||||
}
|
||||
|
||||
export default function ListItem() {
|
||||
|
||||
const [data, setData] = useState(null)
|
||||
|
@ -18,10 +24,10 @@ export default function ListItem() {
|
|||
|
||||
const [loading, setLoading] = useState(true)
|
||||
|
||||
const [dataSearch, setDataSearch] = useState("")
|
||||
|
||||
const [activePage, setActivePage] = useState(1)
|
||||
const [totalItems, setTotalItems] = useState(0)
|
||||
|
||||
const [dataPost, setDataPost] = useState(initialDataPost)
|
||||
const itemsPerPage = 5
|
||||
|
||||
const [token, setToken] = useState('');
|
||||
|
@ -42,7 +48,7 @@ export default function ListItem() {
|
|||
}, [location])
|
||||
|
||||
useEffect(() => {
|
||||
getData(1)
|
||||
getData()
|
||||
}, [])
|
||||
|
||||
const onClickEdit = (data) => {
|
||||
|
@ -50,13 +56,13 @@ export default function ListItem() {
|
|||
setShowModal(true)
|
||||
}
|
||||
|
||||
const onDelete = async (data) => {
|
||||
let dataPost = {
|
||||
obj_id: data._id,
|
||||
id: data.id,
|
||||
name: data.name,
|
||||
birthday: data.birthday,
|
||||
gender: data.gender,
|
||||
const onDelete = async (value) => {
|
||||
let dataDel = {
|
||||
obj_id: value._id,
|
||||
id: value.id,
|
||||
name: value.name,
|
||||
birthday: value.birthday,
|
||||
gender: value.gender,
|
||||
is_deleted : 1
|
||||
}
|
||||
try {
|
||||
|
@ -68,9 +74,13 @@ export default function ListItem() {
|
|||
'Content-Type': 'application/json',
|
||||
// 'Authorization': token,
|
||||
},
|
||||
data: dataPost,
|
||||
data: dataDel,
|
||||
})
|
||||
if (result.data.status === 10000) {
|
||||
if (data.length === 1) {
|
||||
setActivePage(activePage - 1)
|
||||
setDataPost({ ...dataPost, index: activePage - 1 })
|
||||
}
|
||||
swal({
|
||||
icon: 'success',
|
||||
title: 'Thành công',
|
||||
|
@ -78,9 +88,7 @@ export default function ListItem() {
|
|||
timer: 1500,
|
||||
buttons: false,
|
||||
})
|
||||
getData(activePage)
|
||||
} else if (result.data.status === 10004) {
|
||||
swal("Thất bại", "Xoá thất bại!", "error");
|
||||
getData(dataPost)
|
||||
} else {
|
||||
swal("Thất bại", "Xoá thất bại!", "error");
|
||||
}
|
||||
|
@ -91,11 +99,15 @@ export default function ListItem() {
|
|||
}
|
||||
|
||||
const handlePageChange = (pageNumber) => {
|
||||
setActivePage(pageNumber)
|
||||
getData(pageNumber)
|
||||
setActivePage(pageNumber);
|
||||
const data = {
|
||||
...dataPost,
|
||||
index: pageNumber,
|
||||
}
|
||||
getData(data);
|
||||
}
|
||||
|
||||
const getData = async (page) => {
|
||||
const getData = async (data) => {
|
||||
try {
|
||||
const result = await axios({
|
||||
method: 'POST',
|
||||
|
@ -105,11 +117,7 @@ export default function ListItem() {
|
|||
'Content-Type': 'application/json',
|
||||
// 'Authorization': token
|
||||
},
|
||||
data: {
|
||||
index: page,
|
||||
item_per_page: itemsPerPage,
|
||||
search_data: dataSearch
|
||||
},
|
||||
data: data ? data : dataPost,
|
||||
})
|
||||
if (result.data.status === 10000) {
|
||||
setData(result.data.data)
|
||||
|
@ -125,7 +133,7 @@ export default function ListItem() {
|
|||
const handleOnKeyDown = e => {
|
||||
if (e.key === 'Enter') {
|
||||
setActivePage(1)
|
||||
getData(1);
|
||||
getData(dataPost);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -143,7 +151,9 @@ export default function ListItem() {
|
|||
|
||||
var listImg
|
||||
if (value.sample_images.length > 0) {
|
||||
listImg = <img key={index} style={{ width: "80px", height: "80px" }} alt="" src={`${value.sample_images.length > 0 && value.image_host + value.sample_images[0]}`} />
|
||||
let getDateImg = value.sample_images[0].split("_")
|
||||
let dataImg = getDateImg.length > 0 && getDateImg[1].slice(0,6)
|
||||
listImg = <img key={index} style={{ width: "80px", height: "80px" }} alt="" src={`${value.sample_images.length > 0 && value.image_host +dataImg+ "/" +value.sample_images[0]}`} />
|
||||
} else {
|
||||
listImg = <Avatar shape="square" size={80} icon={<UserOutlined />} />
|
||||
}
|
||||
|
@ -191,13 +201,18 @@ export default function ListItem() {
|
|||
|
||||
const onCloseModal = () => {
|
||||
setShowModal(false)
|
||||
setActivePage(activePage)
|
||||
getData(activePage)
|
||||
// setActivePage(activePage)
|
||||
const data = {
|
||||
...dataPost,
|
||||
index: activePage,
|
||||
}
|
||||
getData(data);
|
||||
}
|
||||
|
||||
const reset = async () => {
|
||||
setDataSearch('')
|
||||
getData(1)
|
||||
const reset = () => {
|
||||
setActivePage(1)
|
||||
setDataPost({...dataPost, search_data: ""})
|
||||
getData(initialDataPost)
|
||||
}
|
||||
|
||||
return (
|
||||
|
@ -220,9 +235,9 @@ export default function ListItem() {
|
|||
<input type="text"
|
||||
onKeyPress={(e) => handleOnKeyDown(e)}
|
||||
onChange={(e) => {
|
||||
setDataSearch(e.target.value)
|
||||
setDataPost({ ...dataPost, search_data: e.target.value })
|
||||
}}
|
||||
value={dataSearch}
|
||||
value={dataPost.search_data}
|
||||
id="inputSearch" className="form-control m-input"
|
||||
placeholder="Họ tên..."
|
||||
data-col-index={0}
|
||||
|
@ -232,7 +247,7 @@ export default function ListItem() {
|
|||
<button
|
||||
onClick={() => {
|
||||
setActivePage(1)
|
||||
getData(1)
|
||||
getData(dataPost)
|
||||
}}
|
||||
className="btn btn-accent m-btn m-btn--icon" id="m_search">
|
||||
<span>
|
||||
|
@ -244,9 +259,7 @@ export default function ListItem() {
|
|||
<div className="pl-3">
|
||||
<button
|
||||
onClick={() => {
|
||||
setDataSearch("")
|
||||
setActivePage(1)
|
||||
getData(1)
|
||||
reset()
|
||||
}}
|
||||
className="btn btn-secondary m-btn m-btn--icon" id="m_reset">
|
||||
<span>
|
||||
|
|
|
@ -28,6 +28,8 @@ const Modaledit = (props) => {
|
|||
|
||||
const [disableBtn, setDisableBtn] = useState(true);
|
||||
|
||||
const [dateImage, setDateImg] = useState("")
|
||||
|
||||
const [hostImg, setHostImg] = useState('');
|
||||
|
||||
useEffect(() => {
|
||||
|
@ -56,13 +58,26 @@ const Modaledit = (props) => {
|
|||
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
if (crrImages.length > 0) {
|
||||
let crrDateImg = crrImages[crrIdx]
|
||||
let getDateImg = crrDateImg !== "" && crrDateImg.split("_")
|
||||
let dataImg = getDateImg.length > 0 && getDateImg[1].slice(0,6)
|
||||
setDateImg(dataImg)
|
||||
}
|
||||
},[crrImages,crrIdx])
|
||||
|
||||
const click_handle = async () => {
|
||||
let dataPost = {
|
||||
origin_name : crrData.name,
|
||||
obj_id: crrData._id ? crrData._id : "",
|
||||
id: crrData.id,
|
||||
name: crrData.name,
|
||||
birthday: crrData.birthday,
|
||||
gender: crrData.gender ? crrData.gender : ""
|
||||
}
|
||||
const result = await axios({
|
||||
method: 'POST',
|
||||
url: `${HOST}/api/face_images/insert_or_update`,
|
||||
url: `${HOST}/api/famous_persons/insert_or_update`,
|
||||
headers: {
|
||||
'Accept': 'application/json',
|
||||
'Content-Type': 'application/json',
|
||||
|
@ -99,7 +114,10 @@ const Modaledit = (props) => {
|
|||
|
||||
|
||||
const bulletedImg = crrImages.map((value, index) => {
|
||||
let renderImg = value.includes("data:image") ? value : hostImg + value
|
||||
let getDateImg = value.split("_")
|
||||
let dataImg = getDateImg.length > 0 && getDateImg[1].slice(0,6)
|
||||
|
||||
let renderImg = value.includes("data:image") ? value : hostImg +dataImg+ "/" + value
|
||||
return (
|
||||
<div className="img-res col-md-4 pl-0 mb-3" key={index + 1}>
|
||||
<div style={{ 'height': 80 }}>
|
||||
|
@ -195,6 +213,9 @@ const Modaledit = (props) => {
|
|||
.then(data => {
|
||||
if (data.status === 10000) {
|
||||
let listDetele = crrImages.filter(item => !listDelImg.includes(item));
|
||||
if (crrIdx >= 1) {
|
||||
setCrrIdx(crrIdx - 1)
|
||||
}
|
||||
setCrrImages(listDetele)
|
||||
}
|
||||
})
|
||||
|
@ -232,7 +253,7 @@ const Modaledit = (props) => {
|
|||
<div className="row justify-content-center pb-3">
|
||||
{
|
||||
crrImages[crrIdx] ?
|
||||
<Avatar shape="square" src={crrImages[crrIdx].includes("data:image") ? crrImages[crrIdx] : hostImg + crrImages[crrIdx]} size={180} icon={<UserOutlined />} /> :
|
||||
<Avatar shape="square" src={crrImages[crrIdx].includes("data:image") ? crrImages[crrIdx] : hostImg +dateImage+"/"+ crrImages[crrIdx]} size={180} icon={<UserOutlined />} /> :
|
||||
<Avatar shape="square" size={180} icon={<UserOutlined />} />
|
||||
}
|
||||
|
||||
|
|
|
@ -36,7 +36,6 @@ const ModalUpload = (props) => {
|
|||
})
|
||||
console.log(result)
|
||||
if (result.data.status === 10000) {
|
||||
setLoading(false)
|
||||
swal({
|
||||
text: "Tải ảnh lên thành công",
|
||||
icon: "success",
|
||||
|
@ -56,6 +55,7 @@ const ModalUpload = (props) => {
|
|||
console.log(error)
|
||||
swal("Thất bại", "Tải ảnh lên thất bại!", "error")
|
||||
}
|
||||
setLoading(false)
|
||||
}
|
||||
|
||||
|
||||
|
|
3836
app/yarn.lock
3836
app/yarn.lock
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user