|  | @@ -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>
 | 
	
		
			
				|  |  |  })
 | 
	
		
			
				|  |  |  
 |