CommunicationHistoryModal.tsx 11.2 KB
import ClientModal from '@/pages/Client/FollowRecord/Components/ClientModal';
import {
  postAdminClientQueryClientComunicationInfo,
  postAdminClientRemoveClientComunicationInfo,
} from '@/services/request';
import { ModalForm } from '@ant-design/pro-components';
import { Button, Descriptions, Space } from 'antd';
import { useEffect, useRef, useState } from 'react';
import '../index.less';

export default ({ data, reloadTable }) => {
  // const [isModalVisible, setIsModalVisible] = useState(false); // 控制 ClientModal 的显示
  const actionRef = useRef(); // 引用 actionRef,方便调用 reload 方法

  const [datetime, setDatetime] = useState(); // 跟进日期
  const [createByName, setCreateByName] = useState(''); // 跟进人员
  const [clientName, setClientName] = useState(''); // 客户名称
  // const [clientAddress, setClientAddress] = useState(''); // 客户地址
  const [way, setWay] = useState(); // 跟进方式
  const [tradeStatusText, setTradeStatusText] = useState(); // 状态
  // const [clientNameLike, setClientNameLike] = useState(''); // 客户名称模糊查询
  // const [clientAddressLike, setClientAddressLike] = useState(''); // 客户地址模糊查询
  // const [tradeStatus, setTradeStatus] = useState(''); // 客户状态
  // const [tradeStatusLike, setTradeStatusLike] = useState(''); // 客户状态模糊查询
  const [content, setContent] = useState(''); // 跟进详情
  const [createTime, setCreateTime] = useState(null); // 创建时间
  const [attachments, setAttachments] = useState(); //附件
  const [attachmentsName, setAttachmentsName] = useState(''); // 附件名称
  const [ticketsType, setTicketsType] = useState(''); // 附件名称
  const [ticketsDetail, setTicketsDetail] = useState(''); // 附件名称
  const [ticketsAttachment, setTicketsAttachment] = useState(); // 附件名称
  // const [ticketsAttachmentName, setTicketsAttachmentName] = useState(''); // 附件名称
  const [comment, setComment] = useState(''); // 客户评价
  const [assignPeople, setAssignPeople] = useState(''); // 附件名称
  useEffect(() => {
    const request = async () => {
      console.log(data, '5656datatatatata');
      const res = await postAdminClientQueryClientComunicationInfo({
        data: {
          id: data.id,
        },
      });
      // const resTicket = await getOrderErpTicketsGetTicketsByClientId({
      //   query: {
      //     id: data.id,
      //   },
      // });
      // data.type = resTicket.data.type;
      // data.detailText = resTicket.data.detailText;
      // data.annexUrl = resTicket.data.annexUrl;
      // data.assignPeople = resTicket.data.assignPeople;
      // console.log(resTicket, '5656resTicket');
      // const dataSearch = res.data.data[0];
      const dataSearch = res.data.data[0];
      if (dataSearch) {
        // data.type = resTicket.data.type;
        // data.detailText = resTicket.data.detailText;
        // data.annexUrl = resTicket.data.annexUrl;
        // data.assignPeople = resTicket.data.assignPeople;
        if (dataSearch.attachments) {
          const url = dataSearch.attachments;
          const match = url.match(/aliyuncs\.com\/(.*?)\?/);
          let decodedStr = '';

          if (match) {
            // 获取匹配的字符串并进行解码
            const encodedStr = match[1];
            decodedStr = decodeURIComponent(encodedStr);
            setAttachmentsName(decodedStr); // 设置跟进日期
          }
        }
        // if (dataSearch.ticketAttachments) {
        //   const url = dataSearch.attachments;
        //   const match = url.match(/aliyuncs\.com\/(.*?)\?/);
        //   let decodedStr = '';

        //   if (match) {
        //     // 获取匹配的字符串并进行解码
        //     const encodedStr = match[1];
        //     decodedStr = decodeURIComponent(encodedStr);
        //     setTicketsAttachmentName(decodedStr); // 设置跟进日期
        //   }
        // }
        setComment(dataSearch.comment);
        setTicketsType(dataSearch.ticketsTypeText);
        setTicketsDetail(dataSearch.ticketsDetail);
        setTicketsAttachment(dataSearch.ticketsAttachments);
        setAssignPeople(dataSearch.assignPeople);
        setComment(dataSearch.comment);
        setDatetime(dataSearch.datetime); // 设置跟进日期
        // setDateRange(data.dateRange || []); // 设置跟进时间范围
        setCreateByName(dataSearch.createByName); // 设置跟进人员
        setClientName(dataSearch.clientName); // 设置客户名称
        // setClientAddress(data.clientAddress || ''); // 设置客户地址
        // setClientNameLike(data.clientNameLike || ''); // 设置客户名称模糊查询
        // setClientAddressLike(data.clientAddressLike || ''); // 设置客户地址模糊查询
        // setTradeStatus(data.tradeStatus || ''); // 设置客户状态
        setTradeStatusText(data.tradeStatusLike || ''); // 设置客户状态模糊查询
        setContent(dataSearch.content); // 设置跟进详情
        setCreateTime(dataSearch.createTime); // 设置创建时间
        setWay(dataSearch.wayText);
        setAttachments(dataSearch.attachments);
      }
    };
    request();
  }, []);
  const items = [
    {
      key: '1',
      label: '跟进日期',
      children: datetime, // 跟进日期
    },
    {
      key: '2',
      label: '跟进人员',
      children: createByName, // 跟进人员
    },
    {
      key: '3',
      label: '客户名称',
      children: clientName, // 客户名称
    },
    {
      key: '4',
      label: '跟进详情',
      children: content, // 跟进详情
    },
    {
      key: '5',
      label: '创建时间',
      children: createTime, // 创建时间
    },
    {
      key: '6',
      label: '跟进方式',
      children: way, // 跟进方式
    },
    {
      key: '7',
      label: '跟进状态',
      children: tradeStatusText, // 跟进状态
    },
    {
      key: '8',
      label: '工单类型',
      children: ticketsType, // 跟进状态
    },
    {
      key: '9',
      label: '工单详情',
      children: ticketsDetail, // 跟进状态
    },
    // {
    //   key: '12',
    //   label: '工单附件',
    //   children: ticketsAttachment, // 跟进状态
    // },
    {
      key: '10',
      label: '指派人员',
      children: assignPeople, // 跟进状态
    },
    {
      key: '11',
      label: '客户评价',
      children: comment, // 跟进状态
    },
  ];
  const handleDelete = async () => {
    // 调用删除接口
    const success = await postAdminClientRemoveClientComunicationInfo({
      query: {
        id: data.id,
      },
    });
    // setIsModalVisible(false);
    if (success) {
      actionRef?.current?.reload(); // 重新加载表格数据
    }
  };
  return (
    <Space>
      <ModalForm
        className="client-index"
        title="跟进记录"
        trigger={<Button type="primary">查看</Button>}
        submitter={{
          resetButtonProps: {
            style: {
              display: 'none',
            },
          },
          submitButtonProps: {
            style: {
              display: 'none',
            },
          },
          render: (props, defaultDoms) => {
            return [
              ...defaultDoms,
              <>
                <ClientModal
                  key={'modify'}
                  // data={data} // 将表单数据传递给 ClientModal
                  data={data} // 传递修改后的 data
                  reloadTable={() => {
                    actionRef?.current?.reload(); // 重新加载表格数据
                    props.submit();
                    reloadTable();
                  }}
                  type={'modify'}
                  onFinish={() => {
                    // setIsModalVisible(false);
                  }} // 关闭 Modal
                  style={{ marginRight: '10px' }}
                />
                <Button
                  key={'delete'}
                  onClick={() => {
                    handleDelete();
                    props.submit();
                    reloadTable();
                  }}
                  type="primary"
                  size="middle"
                  danger // 使用 danger 属性来将按钮颜色设置为红色
                  style={{ marginLeft: '10px' }}
                  onFinish={() => {
                    actionRef.current.reload();
                  }}
                >
                  删除
                </Button>
              </>,
            ];
          },
        }}
        onFinish={async () => {
          // 提交成功后,显示 ClientDrawer
          // setIsModalVisible(true);
          return true;
        }}
      >
        <Descriptions items={items} column={1} />
        {/* {attachmentsName && (
          <a href={attachments} download>
            附件:{attachmentsName}
          </a>
        )}
        <div></div>
        {ticketsAttachment && (
          <a href={ticketsAttachment} download>
            工单附件:{ticketsAttachment}
          </a>
        )} */}
        {attachmentsName && (
          <div>
            {attachmentsName.endsWith('.png') ||
            attachmentsName.endsWith('.jpg') ? (
              <>
                <img
                  src={attachments}
                  alt={attachmentsName}
                  style={{ maxWidth: '300px', height: 'auto' }}
                />
                <div></div>
                <a href={attachments} download>
                  附件:{attachmentsName}
                </a>
              </>
            ) : (
              <a href={attachments} download>
                附件:{attachmentsName}
              </a>
            )}
          </div>
        )}

        <div></div>
        {/* {ticketsAttachment && (
          <a href={ticketsAttachment} download>
            工单附件:{ticketsAttachment}
          </a>
        )} */}
        {/* {ticketsAttachment && (
          <div>
            {ticketsAttachment.includes('jpg') ||
              ticketsAttachment.includes('png') ? (
              <>
                <img
                  src={ticketsAttachment}
                  alt={ticketsAttachment}
                  style={{ maxWidth: '300px', height: 'auto' }}
                />
                <div></div>
                <a href={ticketsAttachment} download>
                  工单附件:{ticketsAttachment}
                </a>
              </>
            ) : (
              <a href={ticketsAttachment} download>
                工单附件:{ticketsAttachment}
              </a>
            )}
          </div>
        )} */}
        {ticketsAttachment && (
          <div>
            {ticketsAttachment.split(',').map((ticketsAttachment, index) => (
              <div key={index}>
                {ticketsAttachment.includes('jpg') ||
                ticketsAttachment.includes('png') ? (
                  <>
                    <img
                      src={ticketsAttachment}
                      alt={`附件 ${index + 1}`}
                      style={{ maxWidth: '300px', height: 'auto' }}
                    />
                    <div></div>
                  </>
                ) : null}
                <a href={ticketsAttachment} download>
                  工单附件:{ticketsAttachment}
                </a>
              </div>
            ))}
          </div>
        )}
      </ModalForm>
    </Space>
  );
};