|
@@ -1,10 +1,287 @@
|
|
|
-import React from 'react'
|
|
|
+import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'
|
|
|
import styles from './index.module.scss'
|
|
|
+import { Y33BtnArr } from '@/pages/Y_goodsDetails/Y1cathet/data'
|
|
|
+import { Button, Cascader, Checkbox, DatePicker, Input, Select } from 'antd'
|
|
|
+import MyPopconfirm from '@/components/MyPopconfirm'
|
|
|
+import Y33setType from '@/pages/Y_goodsDetails/Y2look/Y33setType'
|
|
|
+import { C2baseFormData, C2InputKeyArr } from './data'
|
|
|
+import { C2InputKeyType } from './type'
|
|
|
+import dayjs from 'dayjs'
|
|
|
+import MyTable from '@/components/MyTable'
|
|
|
+import ImageLazy from '@/components/ImageLazy'
|
|
|
+import YtableVideo from '@/components/YtableVideo'
|
|
|
+import { C2tableC } from '@/utils/tableData'
|
|
|
+const { RangePicker } = DatePicker
|
|
|
+
|
|
|
function C2files() {
|
|
|
+ const [formData, setFormData] = useState(C2baseFormData)
|
|
|
+ const formDataRef = useRef(C2baseFormData)
|
|
|
+
|
|
|
+ useEffect(() => {
|
|
|
+ formDataRef.current = formData
|
|
|
+ }, [formData])
|
|
|
+
|
|
|
+ const [btnAc, setBtnAc] = useState('全部')
|
|
|
+
|
|
|
+ // 点击搜索的 时间戳
|
|
|
+ const [timeKey, setTimeKey] = useState(0)
|
|
|
+
|
|
|
+ // 点击搜索
|
|
|
+ const clickSearch = useCallback(() => {
|
|
|
+ setFormData({ ...formData, pageNum: 1 })
|
|
|
+ setTimeout(() => {
|
|
|
+ setTimeKey(Date.now())
|
|
|
+ }, 50)
|
|
|
+ }, [formData])
|
|
|
+
|
|
|
+ // 时间选择器改变
|
|
|
+ const timeChange = useCallback(
|
|
|
+ (date: any, dateString: any) => {
|
|
|
+ let startTime = ''
|
|
|
+ let endTime = ''
|
|
|
+ if (dateString[0] && dateString[1]) {
|
|
|
+ startTime = dateString[0] + ' 00:00:00'
|
|
|
+ endTime = dateString[1] + ' 23:59:59'
|
|
|
+ }
|
|
|
+ setFormData({ ...formData, startTime, endTime })
|
|
|
+ },
|
|
|
+ [formData]
|
|
|
+ )
|
|
|
+
|
|
|
+ // 封装发送请求的函数
|
|
|
+ const getListFu = useCallback(() => {
|
|
|
+ console.log('发送请求', { ...formDataRef.current, type: btnAc })
|
|
|
+ }, [btnAc])
|
|
|
+
|
|
|
+ useEffect(() => {
|
|
|
+ getListFu()
|
|
|
+ }, [getListFu, timeKey])
|
|
|
+
|
|
|
+ // 输入框的改变
|
|
|
+ const txtChangeFu = useCallback(
|
|
|
+ (txt: string, key: C2InputKeyType) => {
|
|
|
+ setFormData({
|
|
|
+ ...formData,
|
|
|
+ [key]: txt
|
|
|
+ })
|
|
|
+ },
|
|
|
+ [formData]
|
|
|
+ )
|
|
|
+
|
|
|
+ // 点击重置
|
|
|
+ const resetSelectFu = useCallback(() => {
|
|
|
+ setFormData(C2baseFormData)
|
|
|
+ setTimeout(() => {
|
|
|
+ setTimeKey(Date.now())
|
|
|
+ }, 50)
|
|
|
+ }, [])
|
|
|
+
|
|
|
+ // 页码变化
|
|
|
+ const paginationChange = useCallback(
|
|
|
+ (pageNum: number, pageSize: number) => {
|
|
|
+ setFormData({ ...formData, pageNum, pageSize })
|
|
|
+ setTimeout(() => {
|
|
|
+ setTimeKey(Date.now())
|
|
|
+ }, 50)
|
|
|
+ },
|
|
|
+ [formData]
|
|
|
+ )
|
|
|
+
|
|
|
+ // 多选
|
|
|
+ const [checkArr, setCheckArr] = useState<number[]>([])
|
|
|
+
|
|
|
+ const checkFu = useCallback(
|
|
|
+ (id: number) => {
|
|
|
+ if (checkArr.includes(id)) setCheckArr(checkArr.filter(v => v !== id))
|
|
|
+ else setCheckArr([...checkArr, id])
|
|
|
+ },
|
|
|
+ [checkArr]
|
|
|
+ )
|
|
|
+
|
|
|
+ // 批量和单个设置
|
|
|
+ const [typeMo, setTypeMo] = useState({ leiXin: '', yongTu: '', flag: '', show: false })
|
|
|
+
|
|
|
+ const startBtn = useMemo(() => {
|
|
|
+ let arr: any = [
|
|
|
+ {
|
|
|
+ title: '选择',
|
|
|
+ width: 50,
|
|
|
+ render: (item: any) => (
|
|
|
+ <Checkbox checked={checkArr.includes(item.id)} onChange={() => checkFu(item.id)} />
|
|
|
+ )
|
|
|
+ }
|
|
|
+ ]
|
|
|
+
|
|
|
+ if (['全部', '图像', '视频'].includes(btnAc))
|
|
|
+ arr.push({
|
|
|
+ title: '缩略图/视频',
|
|
|
+ render: (item: any) => {
|
|
|
+ return item.type === '图像' ? (
|
|
|
+ <div className='tableImgAuto'>
|
|
|
+ <ImageLazy width={60} height={60} srcBig={item.src} src={item.src} offline={true} />
|
|
|
+ </div>
|
|
|
+ ) : item.type === '视频' ? (
|
|
|
+ <YtableVideo item={item} />
|
|
|
+ ) : (
|
|
|
+ ' - '
|
|
|
+ )
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
+ return arr
|
|
|
+ }, [btnAc, checkArr, checkFu])
|
|
|
+
|
|
|
+ const tableLastBtn = useMemo(() => {
|
|
|
+ return [
|
|
|
+ {
|
|
|
+ title: '操作',
|
|
|
+ render: (item: any) => {
|
|
|
+ return (
|
|
|
+ <>
|
|
|
+ <Button size='small' type='text'>
|
|
|
+ <a href={item.src} download target='_blank' rel='noreferrer'>
|
|
|
+ 下载
|
|
|
+ </a>
|
|
|
+ </Button>
|
|
|
+ <>
|
|
|
+ <Button
|
|
|
+ size='small'
|
|
|
+ type='text'
|
|
|
+ onClick={() =>
|
|
|
+ setTypeMo({
|
|
|
+ leiXin: item.type,
|
|
|
+ yongTu: '',
|
|
|
+ flag: '单个',
|
|
|
+ show: true
|
|
|
+ })
|
|
|
+ }
|
|
|
+ >
|
|
|
+ 设置
|
|
|
+ </Button>
|
|
|
+ <MyPopconfirm txtK='删除' onConfirm={() => {}} />
|
|
|
+ </>
|
|
|
+ </>
|
|
|
+ )
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }, [])
|
|
|
+
|
|
|
return (
|
|
|
<div className={styles.C2files}>
|
|
|
<div className='pageTitle'>藏品附件</div>
|
|
|
- <p>待开发</p>
|
|
|
+
|
|
|
+ {/* 第一行 */}
|
|
|
+ <div className='C2top'>
|
|
|
+ <div className='C2topll'>
|
|
|
+ {Y33BtnArr.map(v => (
|
|
|
+ <Button
|
|
|
+ key={v.name}
|
|
|
+ onClick={() => setBtnAc(v.name)}
|
|
|
+ type={btnAc === v.name ? 'primary' : 'default'}
|
|
|
+ >
|
|
|
+ {v.name}
|
|
|
+ </Button>
|
|
|
+ ))}
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div className='C2toprr'>
|
|
|
+ <Button type='primary' disabled={checkArr.length === 0}>
|
|
|
+ 批量下载
|
|
|
+ </Button>
|
|
|
+  
|
|
|
+ <Button
|
|
|
+ type='primary'
|
|
|
+ disabled={checkArr.length === 0}
|
|
|
+ onClick={() =>
|
|
|
+ setTypeMo({
|
|
|
+ leiXin: '',
|
|
|
+ yongTu: '',
|
|
|
+ flag: '批量',
|
|
|
+ show: true
|
|
|
+ })
|
|
|
+ }
|
|
|
+ >
|
|
|
+ 批量设置
|
|
|
+ </Button>
|
|
|
+  
|
|
|
+ <Button type='primary' onClick={clickSearch}>
|
|
|
+ 查询
|
|
|
+ </Button>
|
|
|
+  
|
|
|
+ <Button onClick={resetSelectFu}>重置</Button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ {/* 第二行 */}
|
|
|
+ <div className='C2top C2top2'>
|
|
|
+ <div className='C2topll'>
|
|
|
+ {C2InputKeyArr.map(item => (
|
|
|
+ <div key={item.name}>
|
|
|
+ <span>{item.name}:</span>
|
|
|
+
|
|
|
+ {item.type === '下拉框' ? <Select placeholder='全部' /> : null}
|
|
|
+ {item.type === '输入框' ? (
|
|
|
+ <Input
|
|
|
+ placeholder='请输入'
|
|
|
+ maxLength={30}
|
|
|
+ value={formData[item.key]}
|
|
|
+ onChange={e => txtChangeFu(e.target.value, item.key)}
|
|
|
+ />
|
|
|
+ ) : null}
|
|
|
+
|
|
|
+ {item.type === '级联' ? (
|
|
|
+ <Cascader
|
|
|
+ changeOnSelect
|
|
|
+ options={[]}
|
|
|
+ placeholder='全部'
|
|
|
+ // fieldNames={{ label: 'name', value: 'id', children: 'children' }}
|
|
|
+ allowClear={false}
|
|
|
+ />
|
|
|
+ ) : null}
|
|
|
+ </div>
|
|
|
+ ))}
|
|
|
+ <div>
|
|
|
+ <span>上传起止日期:</span>
|
|
|
+ <RangePicker
|
|
|
+ value={
|
|
|
+ formData.startTime ? [dayjs(formData.startTime), dayjs(formData.endTime)] : null
|
|
|
+ }
|
|
|
+ onChange={timeChange}
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ {/* 表格 */}
|
|
|
+ <MyTable
|
|
|
+ yHeight={600}
|
|
|
+ list={[
|
|
|
+ {
|
|
|
+ id: 1,
|
|
|
+ type: '图像',
|
|
|
+ src: 'https://houseoss.4dkankan.com/project/DEMO/staticResource/touxiang.jpg'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: 2,
|
|
|
+ type: '视频',
|
|
|
+ src: 'https://houseoss.4dkankan.com/project/DEMO/staticResource/loop.mp4'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: 3,
|
|
|
+ type: '3D'
|
|
|
+ }
|
|
|
+ ]}
|
|
|
+ columnsTemp={C2tableC}
|
|
|
+ lastBtn={tableLastBtn}
|
|
|
+ startBtn={startBtn}
|
|
|
+ pageNum={formData.pageNum}
|
|
|
+ pageSize={formData.pageSize}
|
|
|
+ total={0}
|
|
|
+ onChange={(pageNum, pageSize) => paginationChange(pageNum, pageSize)}
|
|
|
+ />
|
|
|
+
|
|
|
+ {typeMo.show ? <Y33setType info={typeMo} closeFu={() => setTypeMo({} as any)} /> : null}
|
|
|
</div>
|
|
|
)
|
|
|
}
|