| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438 |
- import ModuleTitle from '@/components/ModuleTitle/moduleTitle';
- import FileViewerModal from '@/components/FileViewerNew';
- import {
- Divider,
- Form,
- Modal,
- Row,
- Col,
- Input,
- Radio,
- InputNumber,
- Card,
- } from 'antd';
- import dayjs from 'dayjs';
- import { useEffect, useState } from 'react';
- import { useParams, useRequest, useNavigate } from 'umi';
- import { Status } from './component/Modal';
- import styles from './index.less';
- import AuditSteps from './component/AuditSteps';
- import { queryAuditByCode } from '../../services/contract';
- const ContractDetail = ({ data }) => {
- const [form] = Form.useForm();
- const FORMAT = 'YYYY-MM-DD';
- const [fileViewerVisible, setFileViewerVisible] = useState(false);
- const [fileViewerData, setFileViewerData] = useState();
- const [attachData, setAttachData] = useState({
- attach: [],
- attach_extend: [],
- });
- useEffect(() => {
- form.resetFields();
- if (data?.status >= Status.Checking) runAudit({ extend_code: data.code });
- let result = { attach: [], attach_extend: [] };
- if (data?.attach) {
- let att = JSON.parse(data.attach);
- result.attach = att.map((item, idx) => {
- return { ...item, uid: idx, status: 'done' };
- });
- }
- if (data?.attach_extend) {
- let att = JSON.parse(data.attach_extend);
- result.attach_extend = att.map((item, idx) => {
- return { ...item, uid: idx, status: 'done' };
- });
- }
- setAttachData(result);
- }, [data]);
- //获取OA 归档审批列表
- const { data: auditData, run: runAudit } = useRequest(
- (data) => queryAuditByCode({ ...data, extend_type: 0 }),
- {
- manual: true,
- formatResult: (res) => {
- if (res?.data) {
- return res.data;
- } else {
- if (data?.status == Status.CheckReject) {
- return { ...oldAuditList, audit_status: 2 };
- }
- return oldAuditList;
- }
- },
- },
- );
- const handlePreViewSingle = (data) => {
- if (!data) return;
- const arr = data.name.split('.');
- const type = arr[arr.length - 1];
- const dataItem = { url: data.url, name: data.name, type };
- setFileViewerData(dataItem);
- setFileViewerVisible(true);
- };
- return (
- <>
- <Card title={data?.status == Status.Checking ? '归档审批' : '作废审批'}>
- <Form
- form={form}
- // initialValues={data}
- labelCol={{ span: 7 }}
- wrapperCol={{ span: 17 }}
- >
- <ModuleTitle title="存档人信息" />
- <Row>
- <Col span={10} offset={1}>
- <Form.Item
- name="created_name"
- initialValue={data?.created_name}
- label="存档人:"
- >
- <Input disabled />
- </Form.Item>
- <Form.Item
- name="company_name"
- label="所属公司:"
- tooltip="请选择该存档合同所属公司"
- initialValue={data?.company_name}
- rules={[
- {
- required: true,
- message: '请填写所属公司',
- },
- ]}
- >
- <Input disabled />
- </Form.Item>
- </Col>
- <Col span={10}>
- <Form.Item
- name="created_on"
- initialValue={data?.created_on || dayjs().format(FORMAT)}
- label="存档时间:"
- >
- <Input disabled />
- </Form.Item>
- <Form.Item
- name="dep_id"
- label="所属部门:"
- initialValue={data?.dep_name}
- rules={[
- {
- required: true,
- message: '请选择所属部门',
- },
- ]}
- >
- <Input disabled />
- </Form.Item>
- </Col>
- </Row>
- <ModuleTitle title="经办人信息" />
- <Row>
- <Col span={10} offset={1}>
- <Form.Item
- name="deal_by"
- label="经办人:"
- tooltip="经办人应负责合同审批流程、签字盖章、合同原件存档和电子档案存档。母公司的经办人为OA审批提交人,也是存档人。子公司经办人由子公司合同专员填写,一般是合同审批时的提交人或者是合同实际执行的负责人"
- initialValue={data?.deal_by}
- rules={[
- {
- required: true,
- message: '请选择经办人',
- },
- ]}
- >
- <Input disabled />
- </Form.Item>
- </Col>
- <Col span={10}>
- <Form.Item
- name="created_dep"
- label="签约承办部门:"
- tooltip="请选择该存档合同的实际履行部门,一般为经办人所在部门"
- initialValue={data?.created_dep}
- rules={[
- {
- required: true,
- message: '请选择签约承办部门',
- },
- ]}
- >
- <Input disabled />
- </Form.Item>
- </Col>
- </Row>
- <ModuleTitle title="合同信息" />
- <Row>
- <Col span={10} offset={1}>
- <Form.Item
- name="is_supplement"
- label="是否补充协议:"
- tooltip="合同名称"
- initialValue={0}
- rules={[
- {
- required: true,
- message: '请填写合同名称',
- },
- ]}
- >
- <Radio.Group disabled>
- <Radio value={1}>是</Radio>
- <Radio value={0}>否</Radio>
- </Radio.Group>
- </Form.Item>
- <Form.Item
- name="name"
- label="合同名称:"
- tooltip="请与OA审批时填写的合同名称一致"
- initialValue={data?.name}
- rules={[
- {
- required: true,
- message: '请填写合同名称',
- },
- ]}
- >
- <Input disabled />
- </Form.Item>
- <Form.Item
- name="effect_on"
- label="合同签订日期:"
- initialValue={data?.effect_on}
- tooltip="合同主体各方签字盖章完成之日,以最后签字盖章的为准"
- rules={[
- {
- required: true,
- message: '请填写合同名称',
- },
- ]}
- >
- <Input disabled />
- </Form.Item>
- <Form.Item
- name="project_name"
- label="项目名称:"
- tooltip="不涉及项目请选“日常项目”"
- initialValue={data?.project_name}
- rules={[
- {
- required: true,
- message: '请填写项目名称',
- },
- ]}
- >
- <Input disabled />
- </Form.Item>
- <Form.Item
- name="party_a"
- label="甲方:"
- tooltip="合同主体可以下拉选择,可选项需要经办人在“主页--供应商管理”中创建。经办人可以维护和更新供应商信息。"
- initialValue={data?.party_a}
- rules={[
- {
- required: true,
- message: '请选择甲方',
- },
- ]}
- >
- <Input disabled />
- </Form.Item>
- </Col>
- <Col span={10}>
- <Form.Item
- style={{ opacity: data?.is_supplement ? 1 : 0 }}
- name="parent_code"
- tooltip="请先查询原合同编号,原合同未录入本系统的,需先录入存档。"
- initialValue={data?.parent_code}
- label="原合同编号:"
- >
- <Input disabled />
- </Form.Item>
- <Form.Item
- name="code"
- tooltip="合同编号按《合同管理办法》的合同编码规则编号。"
- initialValue={data?.code}
- label="合同编号:"
- >
- <Input disabled />
- </Form.Item>
- <Form.Item
- label="合同总价款:"
- name="amount"
- tooltip="请与OA审批时填写的“合同金额”一致。不涉及金额填“0”"
- initialValue={data?.amount}
- rules={[
- {
- required: true,
- message: '请输入合同总价款',
- },
- ]}
- >
- <InputNumber
- style={{ width: '100%' }}
- precision={2}
- addonAfter="万元"
- disabled
- />
- </Form.Item>
- <Form.Item
- name="project_code"
- initialValue={data?.project_code}
- label="项目编号:"
- >
- <Input disabled />
- </Form.Item>
- <Form.Item
- name="party_b"
- label="乙方:"
- tooltip="合同主体可以下拉选择,可选项需要经办人在“主页--供应商管理”中创建。经办人可以维护和更新供应商信息。"
- initialValue={data?.party_b}
- rules={[
- {
- required: true,
- message: '请选择乙方',
- },
- ]}
- >
- <Input disabled />
- </Form.Item>
- </Col>
- </Row>
- <Form.Item
- name="party_c"
- label="丙方(及其他):"
- tooltip="可多选。合同主体可以下拉选择,可选项需要经办人在“主页--供应商管理”中创建。经办人可以维护和更新供应商信息。"
- initialValue={data?.party_c ? data?.party_c.split(',') : []}
- labelCol={{ span: 4 }}
- >
- <Input disabled />
- </Form.Item>
- <Form.Item
- name="perform"
- initialValue={data?.perform}
- label="合同履行情况:"
- labelCol={{ span: 4 }}
- >
- <Input.TextArea disabled />
- </Form.Item>
- <Row>
- <Col span={10} offset={1}>
- <Form.Item
- label="合同及合同附件上传:"
- tooltip="请上传合同正式盖章文本的扫描件(含技术协议、质保承诺等附件),不得用照片、图片格式,不得遗漏附件"
- name="attach"
- initialValue={attachData.attach}
- >
- <ul>
- {data?.attach &&
- JSON.parse(data?.attach)?.map((item, idx) => (
- <li key={`${idx}_${item.name}`}>
- <a onClick={() => handlePreViewSingle(item)}>
- {item.name}
- </a>
- </li>
- ))}
- </ul>
- </Form.Item>
- <Form.Item
- name="archives_dep"
- initialValue={data?.archives_dep}
- label="合同原件存档部门:"
- tooltip="母公司财务部和采购部门的合同请选择“财务部”,其他部门请选择“行政部”,子公司合同选择“综合管理部”"
- rules={[
- {
- required: true,
- message: '请选择合同原件存档部门',
- },
- ]}
- >
- <Input disabled />
- </Form.Item>
- </Col>
- <Col span={10}>
- <Form.Item
- name="attach_extend"
- label="合同相关资料上传:"
- initialValue={attachData.attach_extend}
- tooltip={
- <div>
- 依据《合同管理办法》,合同相关资料需要作为合同电子档案的一部分,包括:
- <br />
- 1)合同会审纪要或投资决策通知书(如有);
- <br />
- 2)合同相对方的营业执照等资质证的复印件(首次签约的须加盖公章)、个人身份证复印件(合同一方为自然人时提供);
- <br />
- 3)合同相对方经办人员的授权委托书原件及其身份证复印件(如有);
- <br />
- 4)
- 涉及房屋或场地租赁的,还应提供房屋及场地的权属证明资料,但如果续签租赁合同,且房屋所有权人没有发生变更的,在附具相关说明后可不再提供上述资料;
- <br />
- 5)其他资料。
- </div>
- }
- >
- <ul>
- {data?.attach_extend &&
- JSON.parse(data?.attach_extend)?.map((item, idx) => (
- <li key={`${idx}_${item.name}`}>
- <a onClick={() => handlePreViewSingle(item)}>
- {item.name}
- </a>
- </li>
- ))}
- </ul>
- </Form.Item>
- </Col>
- </Row>
- {data?.status > Status.Checking && (
- <>
- <ModuleTitle title="归档流程" />
- <div className={styles.modelItem}>
- <AuditSteps {...auditData} statusText="已归档" />
- </div>
- </>
- )}
- {data?.status > Status.CalChecking && (
- <>
- <ModuleTitle title="作废信息" />
- <Form.Item
- name="cancel_desc"
- label="作废原因:"
- initialValue={data?.cancel_desc}
- labelCol={{ span: 4 }}
- rules={[
- {
- required: true,
- message: '请填写作废原因',
- },
- ]}
- >
- <Input disabled />
- </Form.Item>
- </>
- )}
- </Form>
- </Card>
- <FileViewerModal
- data={fileViewerData}
- visible={fileViewerVisible}
- onCancel={() => {
- setFileViewerVisible(false);
- }}
- />
- </>
- );
- };
- export default ContractDetail;
|