多选删除图片资源

This commit is contained in:
禺狨 2023-03-13 11:33:46 +08:00
parent 28d192b590
commit d9f002da0a
4 changed files with 39 additions and 23 deletions

View File

@ -55,3 +55,9 @@ export function storeResource(
export function destroyResource(id: number) { export function destroyResource(id: number) {
return client.destroy(`/backend/v1/resource/${id}`); return client.destroy(`/backend/v1/resource/${id}`);
} }
export function destroyResourceMulti(ids: number[]) {
return client.post(`/backend/v1/resource/destroy-multi`, {
ids: ids,
});
}

View File

@ -36,6 +36,7 @@
left: 10px; left: 10px;
top: 10px; top: 10px;
z-index: 100; z-index: 100;
cursor: pointer;
} }
.checked { .checked {
@ -52,6 +53,7 @@
align-items: center; align-items: center;
justify-content: center; justify-content: center;
color: #ff4d4f; color: #ff4d4f;
cursor: pointer;
} }
.imageItem { .imageItem {

View File

@ -11,7 +11,6 @@ import {
} from "antd"; } from "antd";
import { resource } from "../../../api"; import { resource } from "../../../api";
import styles from "./index.module.less"; import styles from "./index.module.less";
import { CloseOutlined } from "@ant-design/icons";
import { UploadImageSub } from "../../../compenents/upload-image-button/upload-image-sub"; import { UploadImageSub } from "../../../compenents/upload-image-button/upload-image-sub";
import { TreeCategory, PerButton } from "../../../compenents"; import { TreeCategory, PerButton } from "../../../compenents";
import { ExclamationCircleFilled, CheckOutlined } from "@ant-design/icons"; import { ExclamationCircleFilled, CheckOutlined } from "@ant-design/icons";
@ -38,21 +37,22 @@ export const ResourceImagesPage = () => {
const [size, setSize] = useState(32); const [size, setSize] = useState(32);
const [total, setTotal] = useState(0); const [total, setTotal] = useState(0);
const [category_ids, setCategoryIds] = useState<any>([]); const [category_ids, setCategoryIds] = useState<any>([]);
const [selectKey, setSelectKey] = useState<any>([]);
// 删除图片 // 删除图片
const removeResource = (id: number) => { const removeResource = () => {
if (id === 0) { if (selectKey.length === 0) {
return; return;
} }
confirm({ confirm({
title: "操作确认", title: "操作确认",
icon: <ExclamationCircleFilled />, icon: <ExclamationCircleFilled />,
content: "确认删除图片?", content: "确认删除选中图片?",
okText: "确认", okText: "确认",
okType: "danger", okType: "danger",
cancelText: "取消", cancelText: "取消",
onOk() { onOk() {
resource.destroyResource(id).then(() => { resource.destroyResourceMulti(selectKey).then(() => {
message.success("删除成功"); message.success("删除成功");
resetImageList(); resetImageList();
}); });
@ -69,15 +69,8 @@ export const ResourceImagesPage = () => {
resource resource
.resourceList(page, size, "", "", "", "IMAGE", categoryIds) .resourceList(page, size, "", "", "", "IMAGE", categoryIds)
.then((res: any) => { .then((res: any) => {
let imageData = res.data.result.data;
if (imageData.length > 0) {
for (let i = 0; i < imageData.length; i++) {
imageData[i].isChecked = false;
}
}
setTotal(res.data.result.total); setTotal(res.data.result.total);
setImageList(imageData); setImageList(res.data.result.data);
console.log(imageData);
}) })
.catch((err: any) => { .catch((err: any) => {
console.log("错误,", err); console.log("错误,", err);
@ -95,8 +88,16 @@ export const ResourceImagesPage = () => {
getImageList(); getImageList();
}, [category_ids, refresh, page, size]); }, [category_ids, refresh, page, size]);
const onChange = () => { const onChange = (item: any, index: number) => {
console.log(111); let arr = selectKey;
if (arr.indexOf(item.id) === -1) {
arr.push(item.id);
setSelectKey(arr);
} else {
arr.splice(arr.indexOf(item.id), 1);
setSelectKey(arr);
}
setRefresh(!refresh);
}; };
return ( return (
@ -124,13 +125,13 @@ export const ResourceImagesPage = () => {
<div className="d-flex"> <div className="d-flex">
<Button className="mr-16"></Button> <Button className="mr-16"></Button>
<PerButton <PerButton
disabled={null} disabled={selectKey.length === 0}
type="primary" type="primary"
text="删除" text="删除"
class="" class=""
icon={null} icon={null}
p="resource-destroy" p="resource-destroy"
onClick={() => null} onClick={() => removeResource()}
/> />
</div> </div>
</div> </div>
@ -143,15 +144,18 @@ export const ResourceImagesPage = () => {
</Col> </Col>
)} )}
{imageList.map((item: any) => ( {imageList.map((item: any, index: number) => (
<Col key={item.id} span={3}> <Col key={item.id} span={3}>
<div className={styles.imageItem}> <div className={styles.imageItem}>
<div <div
className={ className={
item.isChecked ? styles.checked : styles.checkbox selectKey.indexOf(item.id) === -1
? styles.checkbox
: styles.checked
} }
onClick={() => onChange(item, index)}
> >
{item.isChecked && <CheckOutlined />} {selectKey.indexOf(item.id) !== -1 && <CheckOutlined />}
</div> </div>
<Image <Image
preview={true} preview={true}
@ -159,13 +163,13 @@ export const ResourceImagesPage = () => {
height={150} height={150}
src={item.url} src={item.url}
/> />
<Button {/* <Button
className={styles.closeButton} className={styles.closeButton}
danger danger
shape="circle" shape="circle"
icon={<CloseOutlined />} icon={<CloseOutlined />}
onClick={() => removeResource(item.id)} onClick={() => removeResource(item.id)}
/> /> */}
</div> </div>
</Col> </Col>
))} ))}

View File

@ -21,6 +21,7 @@ interface DataType {
export const ResourceVideosPage = () => { export const ResourceVideosPage = () => {
const [videoList, setVideoList] = useState<any>([]); const [videoList, setVideoList] = useState<any>([]);
const [videosExtra, setVideoExtra] = useState<any>([]); const [videosExtra, setVideoExtra] = useState<any>([]);
const [adminUsers, setAdminUsers] = useState<any>({});
const [refresh, setRefresh] = useState(false); const [refresh, setRefresh] = useState(false);
const [page, setPage] = useState(1); const [page, setPage] = useState(1);
const [size, setSize] = useState(10); const [size, setSize] = useState(10);
@ -60,7 +61,9 @@ export const ResourceVideosPage = () => {
}, },
{ {
title: "创建人", title: "创建人",
dataIndex: "disk", dataIndex: "id",
render: (id: string) =>
JSON.stringify(adminUsers) !== "{}" && <span>{adminUsers.id}</span>,
}, },
{ {
title: "视频时长", title: "视频时长",
@ -125,6 +128,7 @@ export const ResourceVideosPage = () => {
setTotal(res.data.result.total); setTotal(res.data.result.total);
setVideoList(res.data.result.data); setVideoList(res.data.result.data);
setVideoExtra(res.data.videos_extra); setVideoExtra(res.data.videos_extra);
setAdminUsers(res.data.admin_users);
setLoading(false); setLoading(false);
}) })
.catch((err: any) => { .catch((err: any) => {