import React, { useCallback, useEffect, useRef, useState } from 'react' import styles from './index.module.scss' import { Button, Cascader, Checkbox, DatePicker, Form, FormInstance, Input, Radio, Select } from 'antd' import MyPopconfirm from '@/components/MyPopconfirm' import { nationSelect } from '../data' import { useDispatch, useSelector } from 'react-redux' import { A1_APIgetInfo, A1_APIgetNumList, A1_APIsave } from '@/store/action/A1record' import { RootState } from '@/store' import A1num from '../A1num' import { myCity } from '@/utils/history' import TextArea from 'antd/es/input/TextArea' import ZupTypes from '@/components/ZupTypes' import ZupVideos from '@/components/ZupVideos' import dayjs from 'dayjs' import { MessageFu } from '@/utils/message' type Props = { sId: number closeFu: () => void addTableFu: () => void upTableFu: () => void } function A1add({ sId, closeFu, addTableFu, upTableFu }: Props) { // 表单的ref const FormBoxRef = useRef(null) // 多张图片的ref const ZupImgsRef = useRef(null) // 多个视频的ref const ZupVideosRef = useRef(null) // 编辑进来获取详情 const getInfoFu = useCallback(async (id: number) => { const res = await A1_APIgetInfo(id) if (res.code === 0) { const obj = res.data if (obj.dictPanId) fanHaoRef.current = obj.dictPanId // 生卒日期 if (obj.dateStart) obj.dateStart = dayjs(obj.dateStart) if (obj.dateEnd) obj.dateEnd = dayjs(obj.dateEnd) // 籍贯 if (obj.nativeProvince) obj.myNative = [obj.nativeProvince] if (obj.nativeCity) obj.myNative.push(obj.nativeCity) if (obj.nativeRegion) obj.myNative.push(obj.nativeRegion) // 牺牲地 if (obj.lossProvince) obj.myLoss = [obj.lossProvince] if (obj.lossCity) obj.myLoss.push(obj.lossCity) if (obj.lossRegion) obj.myLoss.push(obj.lossRegion) FormBoxRef.current?.setFieldsValue(obj) } const file = res.data.img || [] // 传给 附件 组件的 const sonInfo = { type: 'img', fileList: file } ZupImgsRef.current?.setFileComFileFu(sonInfo) ZupVideosRef.current?.setFileComFileFu(res.data.video || []) }, []) useEffect(() => { if (sId > 0) getInfoFu(sId) else FormBoxRef.current?.setFieldsValue({ nation: '汉族' }) }, [getInfoFu, sId]) // 没有通过校验 const onFinishFailed = useCallback(() => {}, []) // 通过校验点击确定 const onFinish = useCallback( async (values: any) => { // 多张图片 const { sonFileIds, sonIsOk, coverUrl, coverUrlBig } = ZupImgsRef.current?.fileComFileResFu() // 多个视频 const list = ZupVideosRef.current?.fileComFileResFu() || [] // 生卒日期 let dateStart = '' if (values.dateStart) dateStart = dayjs(values.dateStart).format('YYYY-MM-DD') let dateEnd = '' if (values.dateEnd) dateEnd = dayjs(values.dateEnd).format('YYYY-MM-DD') // 籍贯 let nativeProvince = '' let nativeCity = '' let nativeRegion = '' if (values.myNative && values.myNative.length) { nativeProvince = values.myNative[0] || '' nativeCity = values.myNative[1] || '' nativeRegion = values.myNative[2] || '' } // 牺牲地 let lossProvince = '' let lossCity = '' let lossRegion = '' if (values.myLoss && values.myLoss.length) { lossProvince = values.myLoss[0] || '' lossCity = values.myLoss[1] || '' lossRegion = values.myLoss[2] || '' } const obj = { ...values, id: sId > 0 ? sId : null, dateStart, dateEnd, nativeProvince, nativeCity, nativeRegion, lossProvince, lossCity, lossRegion, thumb: coverUrl || '', thumbPc: coverUrlBig || '', imgIds: sonIsOk ? '' : sonFileIds.join(','), videoIds: list.map((v: any) => v.id).join(',') } const res = await A1_APIsave(obj) if (res.code === 0) { MessageFu.success(sId > 0 ? '编辑成功' : '新增成功') sId > 0 ? upTableFu() : addTableFu() closeFu() } // if (1 + 1 === 2) { // console.log('------222', obj) // return // } }, [addTableFu, closeFu, sId, upTableFu] ) const formDomRef = useRef(null) // -------------获取番号列表-------------- const dispatch = useDispatch() useEffect(() => { dispatch(A1_APIgetNumList()) }, [dispatch]) const numList = useSelector((state: RootState) => state.A1record.numList) const [numShow, setNumShow] = useState(false) const fanHaoRef = useRef(0) return (
{sId > 0 ? '编辑' : '新增'}烈士
e.target.value.replace(/\s+/g, "")} getValueFromEvent={e => e.target.value.trim()} >
(fanHaoRef.current = e)} getPopupContainer={() => formDomRef.current!} filterOption={(input, option) => (option?.label ?? '').toLowerCase().includes(input.toLowerCase()) } allowClear placeholder='请搜索并选择' showSearch options={numList.map(v => ({ value: v.id, label: v.name }))} />
{/*