index.tsx 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import { iContractState } from '@/types/contract'
  2. import { contractConsts } from '@/utils/common/constStatus'
  3. import { dayjsFormat, formatMoney } from '@/utils/util'
  4. import { Tooltip } from 'antd'
  5. import React, { useMemo } from 'react'
  6. import styles from './index.module.scss'
  7. export default function Detail(props: iContractState) {
  8. const progress = useMemo(() => {
  9. const i = parseFloat((parseFloat(props.returned) / parseFloat(props.price)).toFixed(2))
  10. const j: number = 1 - i
  11. const k: number = parseFloat(props.price) - parseFloat(props.returned)
  12. return { returned: isNaN(i) ? '0%' : i * 100 + '%', unReturned: isNaN(j) ? '100%' : j * 100 + '%', unReturnedMoney: k }
  13. }, [ props.id ])
  14. return props.id ? (
  15. <div className={styles.detailTab}>
  16. <table className={styles.detailTable}>
  17. <tbody>
  18. <tr><th style={{ width: '10%' }}>项目内容</th><td style={{ width: '40%' }}>{props.content}</td><th style={{ width: '10%' }}>合同名称</th><td style={{ width: '40%' }}>{props.name}</td></tr>
  19. <tr><th>合同编号</th><td>{props.code}</td><th>状态</th><td><span className={contractConsts[props.status].className}>{contractConsts[props.status].text}</span></td></tr>
  20. <tr><th>合同金额</th><td>{formatMoney(props.price)}</td><th>创建时间</th><td>{props.createTime}</td></tr>
  21. <tr><th>回款金额</th><td>{formatMoney(props.returned)}</td><th>未回款金额</th><td>{formatMoney(progress.unReturnedMoney)}</td></tr>
  22. <tr><th>回款进度</th><td className={styles.progressContainer} colSpan={3}><div className={styles.progressContent}>
  23. <Tooltip title={`已支付:¥ ${formatMoney(props.returned)}`}>
  24. <div className={[ styles.progressBar, 'pi-bg-success' ].join(' ')} style={{ width: progress.returned }}>{formatMoney(props.returned)}</div>
  25. </Tooltip>
  26. <Tooltip title={`未支付:¥ ${formatMoney(progress.unReturnedMoney)}`}>
  27. <div className={[ styles.progressBar, 'pi-bg-gray' ].join(' ')} style={{ width: progress.unReturned }}>{formatMoney(progress.unReturned)}</div>
  28. </Tooltip>
  29. </div></td></tr>
  30. <tr><th>甲方</th><td>{props.partyA}</td><th>甲方签约人</th><td>{props.partyASigner}</td></tr>
  31. <tr><th>乙方</th><td>{props.partyB}</td><th>乙方签约人</th><td>{props.partyBSigner}</td></tr>
  32. <tr><th>签约日期</th><td colSpan={3}>{dayjsFormat(props.signerTime, 'YYYY-MM-DD')}</td></tr>
  33. <tr><th>备注</th><td colSpan={3}>{props.remarks}</td></tr>
  34. </tbody>
  35. </table>
  36. </div>
  37. ) : null
  38. }