import React, { useCallback, useEffect, useMemo, useRef, useState, } from "react"; import styles from "./index.module.scss"; import { Button, Cascader, DatePicker, Form, FormInstance, Input, InputNumber, Popconfirm, Select, Radio, Checkbox, } from "antd"; import mapDataAll from "./data"; import dayjs from "dayjs"; import TextArea from "antd/es/input/TextArea"; import { MessageFu } from "@/utils/message"; import classNames from "classnames"; import { useSelector } from "react-redux"; import { RootState } from "@/store"; import { A1_APIaddProject, A1_APIgetInfoById } from "@/store/action/A1Project"; import { A1TableType } from "@/types"; import AuthCom from "@/components/AuthCom"; import { getTokenInfo } from "@/utils/storage"; const { RangePicker } = DatePicker; type Props = { pageType: { txt: string; id: number }; closeFu: () => void; addFu: () => void; editFu: (val: string) => void; }; function A1Add({ pageType, closeFu, addFu, editFu }: Props) { const [lookInfo, setLookInfo] = useState({} as A1TableType); const [isOk, setIsOk] = useState(false); const userInfo = useMemo(() => { return getTokenInfo().user; }, []); const getInfoFu = useCallback(async (id: number) => { const res = await A1_APIgetInfoById(id); if (res.code === 0) { const info = res.data.entity; setLookInfo(info); // 创建人编辑的 提示 回显 setCreatorIdValue(info.creatorId); const province = info.province ? info.province.split("-") : ""; const dateScope = info.dateScope ? info.dateScope.split(" 至 ") : ""; FormBoxRef.current?.setFieldsValue({ ...info, province, dateScope: dateScope ? [dayjs(dateScope[0]), dayjs(dateScope[1])] : "", dictProjectBusinessIds: Number(info.dictProjectBusinessIds), // 提交表单时这一项数据类型是 number,获取表单数据时这一项数据类型是string。 bidDate: dayjs(info.bidDate), }); // 回显的时候闪动 问题 setIsOk(true); } }, []); useEffect(() => { if (!pageType.id) { // 新增 setIsOk(true); } else if (pageType.txt === 'look') { // 查看 getInfoFu(pageType.id); } else if (pageType.txt === 'edit') { // 编辑 setIsBid(lookInfo.isBid); } }, [getInfoFu, pageType.id, pageType.txt, lookInfo.isBid]); // 从仓库 获取 项目状态的下拉框 数据 const statusArr = useSelector( (state: RootState) => state.A2Dict.A2Tab1_1Obj.status ); // 从仓库 获取 签订主体 数据 const mainArr = useSelector( (state: RootState) => state.A2Dict.A2Tab1_1Obj.main ); // 从仓库 获取 业务部门 数据 const deptArr = useSelector( (state: RootState) => state.A2Dict.A2Tab1_1Obj.dept ); // 从仓库 获取 业务类型 数据 const projectBusinessArr = useSelector( (state: RootState) => state.A2Dict.A2Tab1_1Obj.projectBusiness ); // 从仓库 获取 项目范围 数据 const projectScopeArr = useSelector( (state: RootState) => state.A2Dict.A2Tab1_1Obj.projectScope ); // 从仓库 获取 客户端 数据 const projectAppArr = useSelector( (state: RootState) => state.A2Dict.A2Tab1_1Obj.projectApp ); // 表单的ref const FormBoxRef = useRef(null); // 没有通过校验 const onFinishFailed = useCallback(() => { console.log("没有通过校验"); }, []); // 通过校验点击确定 const onFinish = useCallback( async (value: any) => { // 项目周期的处理 let dateScope = ""; if (value.dateScope && value.dateScope.length >= 1) { dateScope = dayjs(value.dateScope[0]).format("YYYY-MM-DD") + " 至 " + dayjs(value.dateScope[1]).format("YYYY-MM-DD"); } // 项目地点的处理 let province = ""; if (value.province && value.province.length) province = value.province.join("-"); // 中标日期的处理 let bidDate = ""; if (value.bidDate) bidDate = dayjs(value.bidDate).format("YYYY-MM-DD"); const obj = { ...value, id: pageType.txt === "add" ? null : pageType.id, dateScope, amount: value.amount ? value.amount : "", province, bidDate, }; const res = await A1_APIaddProject(obj); if (res.code === 0) { if (pageType.txt === "add") { MessageFu.success("新增成功!"); addFu(); } else if (pageType.txt === "edit") { MessageFu.success("编辑成功!"); editFu(value.num + " - " + value.name); } closeFu(); } }, [addFu, closeFu, editFu, pageType.id, pageType.txt] ); // 从仓库中获取 用户列表数据(全部) const userListTemp = useSelector( (state: RootState) => state.A3User.tableInfo.list ); const userList = useMemo(() => { return userListTemp.map((v: any) => ({ value: v.id, label: `${v.userName} - ${v.roleName}${ v.realName ? " - " + v.realName : "" }`, })); }, [userListTemp]); // 创建人 的 值 const [creatorIdValue, setCreatorIdValue] = useState(userInfo.id); // 是否投标 const [isBid, setIsBid] = useState(); return (
{ setIsBid(allValues.isBid); }} > e.target.value.replace(/\s+/g, "")} > e.target.value.replace(/\s+/g, "")} > ({ value: v.id, label: v.name }))} />
{pageType.txt !== 'look' && isBid ? ( ) : (pageType.txt === "look" && lookInfo.isBid === 1) ? (
中标日期:{isOk ? lookInfo.bidDate : ""}
) : ( null )}
{pageType.txt === "look" ? (
项目周期:
{isOk ? lookInfo.dateScope ? lookInfo.dateScope : "(空)" : ""}
) : ( )}