|
@@ -20,6 +20,7 @@ import useFileDrop from "@/Hook/useFileDrop"
|
|
|
import UploadsTable from "./uploadsTable"
|
|
|
import Lazyimg from "react-lazyimg-component"
|
|
|
import CopyFile from "./copyFile"
|
|
|
+import MoveToTencent from "./moveToTencent"
|
|
|
const { Text } = Typography;
|
|
|
|
|
|
interface Props {
|
|
@@ -51,17 +52,20 @@ const Material = forwardRef(({ onAddFolder, onUpdateFolder, onDelFolder }: Props
|
|
|
const [folderList, setFolderList] = useState<{ id: number, folderName: string, createBy: number, description?: string }[]>([])
|
|
|
const [rowNum, setRowNum] = useState<number>(0)
|
|
|
const [checkedFolderList, setCheckedFolderList] = useState<CheckboxValueType[]>([])
|
|
|
+ const [checkedDataList, setCheckedDataList] = useState<any[]>([])
|
|
|
const [checkFolderAll, setCheckFolderAll] = useState<boolean>(false);
|
|
|
const [indeterminateFolder, setIndeterminateFolder] = useState<boolean>(false);
|
|
|
const [moveVisible, setMoveVisible] = useState<boolean>(false)
|
|
|
const [moveType, setMoveType] = useState<'folder' | 'file'>('folder')
|
|
|
const [batchType, setBatchType] = useState<'folder' | 'file'>()
|
|
|
+ const [isMoveTencent, setIsMoveTencent] = useState<boolean>(false)
|
|
|
const [checkedList, setCheckedList] = useState<CheckboxValueType[]>([])
|
|
|
const [uploadVisible, setUploadVisible] = useState<boolean>(false)
|
|
|
const [updateOwnerData, setUpdateOwnerData] = useState<{ visible?: boolean, folderId: number }>({ folderId: 0 })
|
|
|
const [updateFileData, setUpdateFileData] = useState<{ visible?: boolean, initialValues: any }>({ visible: false, initialValues: {} })
|
|
|
const [detailsData, setDetailsData] = useState<{ visible?: boolean, data: any }>({ visible: false, data: {} })
|
|
|
const [copyVisible, setCopyVisible] = useState<boolean>(false)
|
|
|
+ const [moveTencentVisible, setMoveTencentVisible] = useState<boolean>(false)
|
|
|
|
|
|
const getFolderList = useAjax((params) => getFolderListApi(params))
|
|
|
const delMaterial = useAjax((params) => delMaterialApi(params))
|
|
@@ -143,6 +147,9 @@ const Material = forwardRef(({ onAddFolder, onUpdateFolder, onDelFolder }: Props
|
|
|
data = getMaterialList?.data?.records || []
|
|
|
}
|
|
|
setCheckedFolderList(checkedValues)
|
|
|
+ if (isMoveTencent) {
|
|
|
+ setCheckedDataList(getMaterialList?.data?.records?.filter((item: { id: number }) => checkedValues.includes(item.id)))
|
|
|
+ }
|
|
|
setIndeterminateFolder(!!checkedValues.length && checkedValues.length < data.length);
|
|
|
setCheckFolderAll(checkedValues.length === data.length);
|
|
|
};
|
|
@@ -151,8 +158,10 @@ const Material = forwardRef(({ onAddFolder, onUpdateFolder, onDelFolder }: Props
|
|
|
const cancelSelect = () => {
|
|
|
setCheckFolderAll(false)
|
|
|
setCheckedFolderList([])
|
|
|
+ setCheckedDataList([])
|
|
|
setIndeterminateFolder(false)
|
|
|
setCheckedList([])
|
|
|
+ setIsMoveTencent(false)
|
|
|
}
|
|
|
|
|
|
// 是否管理员
|
|
@@ -162,6 +171,10 @@ const Material = forwardRef(({ onAddFolder, onUpdateFolder, onDelFolder }: Props
|
|
|
|
|
|
// 是否有权限
|
|
|
const isPermission = (createBy: any) => {
|
|
|
+ // 上传至腾讯没有权限
|
|
|
+ if (isMoveTencent) {
|
|
|
+ return true
|
|
|
+ }
|
|
|
return initialState?.currentUser?.userId?.toString() === createBy.toString()
|
|
|
}
|
|
|
|
|
@@ -290,6 +303,7 @@ const Material = forwardRef(({ onAddFolder, onUpdateFolder, onDelFolder }: Props
|
|
|
setHandleType(e.target.checked ? 'folder' : 'file')
|
|
|
setMaterialParams({ pageNum: 1, pageSize: 30 })
|
|
|
setBatchFolderVisible(false)
|
|
|
+ setIsMoveTencent(false)
|
|
|
cancelSelect()
|
|
|
}}
|
|
|
checked={handleType === 'folder'}
|
|
@@ -299,10 +313,15 @@ const Material = forwardRef(({ onAddFolder, onUpdateFolder, onDelFolder }: Props
|
|
|
<Button type="primary" disabled={folderCreateBy ? !isPermission(folderCreateBy) : false} onClick={() => setUploadVisible(true)}>上传素材</Button>
|
|
|
</>}
|
|
|
{handleType === 'folder' ? <>
|
|
|
- {!!selectedKeys?.[0] && <Button onClick={() => { setBatchFolderVisible(true); setBatchType('folder') }} disabled={folderCreateBy ? !isPermission(folderCreateBy) : false}>批量操作文件夹</Button>}
|
|
|
+ {!!selectedKeys?.[0] && <Button onClick={() => { setBatchFolderVisible(true); setBatchType('folder'); setIsMoveTencent(false) }} disabled={folderCreateBy ? !isPermission(folderCreateBy) : false}>批量操作文件夹</Button>}
|
|
|
</> : <>
|
|
|
<Button type="primary" disabled={folderCreateBy ? !isPermission(folderCreateBy) : false} onClick={() => setUploadVisible(true)}>上传素材</Button>
|
|
|
- <Button onClick={() => { setBatchFolderVisible(true); setBatchType('file') }} disabled={folderCreateBy ? !isPermission(folderCreateBy) : false}>批量操作素材</Button>
|
|
|
+ <Button onClick={() => { setBatchFolderVisible(true); setBatchType('file'); setIsMoveTencent(false) }} disabled={folderCreateBy ? !isPermission(folderCreateBy) : false}>批量操作素材</Button>
|
|
|
+ <Button onClick={() => {
|
|
|
+ setBatchFolderVisible(true);
|
|
|
+ setBatchType('file')
|
|
|
+ setIsMoveTencent(true)
|
|
|
+ }} type="primary">素材上传到腾讯</Button>
|
|
|
</>}
|
|
|
</div>
|
|
|
<div className={style.left_bts}>
|
|
@@ -321,6 +340,9 @@ const Material = forwardRef(({ onAddFolder, onUpdateFolder, onDelFolder }: Props
|
|
|
getMaterialList?.data?.records?.filter((item: { createBy: any }) => isPermission(item.createBy)).map((item: { id: any }) => item.id) :
|
|
|
[]
|
|
|
)
|
|
|
+ if (isMoveTencent) {
|
|
|
+ setCheckedDataList(e.target.checked ? getMaterialList?.data?.records : [])
|
|
|
+ }
|
|
|
setIndeterminateFolder(false)
|
|
|
setCheckFolderAll(e.target.checked)
|
|
|
}}
|
|
@@ -331,35 +353,43 @@ const Material = forwardRef(({ onAddFolder, onUpdateFolder, onDelFolder }: Props
|
|
|
<span style={{ color: '#1890FF' }}>已选{checkedFolderList?.length || 0}个{batchType === 'file' ? '素材' : '文件夹'}</span>
|
|
|
</div>
|
|
|
<div className={style.left_bts}>
|
|
|
- <Button disabled={checkedFolderList?.length === 0} onClick={() => {
|
|
|
- setCheckedList(checkedFolderList)
|
|
|
- setMoveVisible(true)
|
|
|
- setMoveType(batchType as any)
|
|
|
- }}>{batchType === 'folder' ? '移动文件夹' : '移动素材'}</Button>
|
|
|
- {batchType === 'file' && <Button
|
|
|
- disabled={checkedFolderList?.length === 0}
|
|
|
- onClick={() => {
|
|
|
- setCheckedList(checkedFolderList)
|
|
|
- setCopyVisible(true)
|
|
|
- }}
|
|
|
- >复制素材到</Button>}
|
|
|
- {batchType === 'file' && <Popconfirm
|
|
|
- title="确定删除?"
|
|
|
- onConfirm={() => {
|
|
|
- const hide = message.loading('正在删除...', 0, () => { });
|
|
|
- deleteBatch.run(checkedFolderList).then(res => {
|
|
|
- hide()
|
|
|
- if (res) {
|
|
|
- getMaterialList.refresh()
|
|
|
- message.success('删除成功')
|
|
|
- }
|
|
|
- }).catch(() => hide())
|
|
|
- }}
|
|
|
- >
|
|
|
- <Button danger disabled={checkedFolderList?.length === 0} loading={deleteBatch.loading}>删除</Button>
|
|
|
- </Popconfirm>}
|
|
|
+ {isMoveTencent ? <>
|
|
|
+ <Button disabled={checkedFolderList?.length === 0} onClick={() => {
|
|
|
+ setMoveTencentVisible(true)
|
|
|
+ }}>上传至腾讯</Button>
|
|
|
+ </> :
|
|
|
+ <>
|
|
|
+ <Button disabled={checkedFolderList?.length === 0} onClick={() => {
|
|
|
+ setCheckedList(checkedFolderList)
|
|
|
+ setMoveVisible(true)
|
|
|
+ setMoveType(batchType as any)
|
|
|
+ }}>{batchType === 'folder' ? '移动文件夹' : '移动素材'}</Button>
|
|
|
+ {batchType === 'file' && <Button
|
|
|
+ disabled={checkedFolderList?.length === 0}
|
|
|
+ onClick={() => {
|
|
|
+ setCheckedList(checkedFolderList)
|
|
|
+ setCopyVisible(true)
|
|
|
+ }}
|
|
|
+ >复制素材到</Button>}
|
|
|
+ {batchType === 'file' && <Popconfirm
|
|
|
+ title="确定删除?"
|
|
|
+ onConfirm={() => {
|
|
|
+ const hide = message.loading('正在删除...', 0, () => { });
|
|
|
+ deleteBatch.run(checkedFolderList).then(res => {
|
|
|
+ hide()
|
|
|
+ if (res) {
|
|
|
+ getMaterialList.refresh()
|
|
|
+ message.success('删除成功')
|
|
|
+ }
|
|
|
+ }).catch(() => hide())
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ <Button danger disabled={checkedFolderList?.length === 0} loading={deleteBatch.loading}>删除</Button>
|
|
|
+ </Popconfirm>}
|
|
|
+ </>}
|
|
|
<Button type="primary" onClick={() => {
|
|
|
setBatchFolderVisible(false)
|
|
|
+ cancelSelect()
|
|
|
}}>完成</Button>
|
|
|
</div>
|
|
|
</div> : (materialParams?.materialName || materialParams?.materialType || (materialParams?.designerIds && materialParams?.designerIds?.length > 0) || materialParams?.width || materialParams?.height) ? <div className={style.operates}>
|
|
@@ -598,6 +628,19 @@ const Material = forwardRef(({ onAddFolder, onUpdateFolder, onDelFolder }: Props
|
|
|
getMaterialList.refresh()
|
|
|
}}
|
|
|
/>}
|
|
|
+
|
|
|
+ {/* 上传至腾讯 */}
|
|
|
+ {moveTencentVisible && <MoveToTencent
|
|
|
+ data={checkedDataList}
|
|
|
+ visible={moveTencentVisible}
|
|
|
+ onChange={() => {
|
|
|
+ setMoveTencentVisible(false)
|
|
|
+ cancelSelect()
|
|
|
+ }}
|
|
|
+ onClose={() => {
|
|
|
+ setMoveTencentVisible(false)
|
|
|
+ }}
|
|
|
+ />}
|
|
|
</div>
|
|
|
})
|
|
|
|