Parcourir la source

添加合同审批详情页

Renxy il y a 1 an
Parent
commit
2a73bec68a
1 fichiers modifiés avec 438 ajouts et 0 suppressions
  1. 438 0
      src/pages/ContractManager/detail.js

+ 438 - 0
src/pages/ContractManager/detail.js

@@ -0,0 +1,438 @@
+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;