From 0dc89773a1d76ce603391cacdc377123ccf5bb38 Mon Sep 17 00:00:00 2001 From: lyp Date: Fri, 29 Nov 2024 17:52:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=88=E5=90=8C=E4=B8=8B=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ContractModal/ContractModal.tsx | 213 ++++++++++ src/components/ContractText/ContractText.css | 67 ++++ src/components/ContractText/ContractText.tsx | 192 +++++++++ src/components/menu/MenuWithTopButton.tsx | 12 + src/route/Contract/Contract.tsx | 148 +++++++ src/route/index/Index.tsx | 84 +++- src/route/router.tsx | 379 +++++++++--------- src/store/index.ts | 8 + src/util/AjaxUtils.ts | 3 + 9 files changed, 915 insertions(+), 191 deletions(-) create mode 100644 src/components/ContractModal/ContractModal.tsx create mode 100644 src/components/ContractText/ContractText.css create mode 100644 src/components/ContractText/ContractText.tsx create mode 100644 src/route/Contract/Contract.tsx diff --git a/src/components/ContractModal/ContractModal.tsx b/src/components/ContractModal/ContractModal.tsx new file mode 100644 index 0000000..10c3f22 --- /dev/null +++ b/src/components/ContractModal/ContractModal.tsx @@ -0,0 +1,213 @@ +import React, { useState } from 'react' +import { post,Axios,get } from "../../util/AjaxUtils.ts"; +import useMessage from "antd/es/message/useMessage"; +import { + Form, + Modal, + Input, Button +} from 'antd'; +import ContractText from '../ContractText/ContractText' +import { useDispatch } from 'react-redux' +export default function ContractModal(props: any) { + const [messageApi, messageApiHolder] = useMessage(); + const [modalOpen, setModalOpen] = useState(false) + const [form] = Form.useForm(); + const [name, setName] = useState(''); // 甲方姓名状态 + const [phone, setPhone] = useState(''); // 电话状态 + const [address, setAddress] = useState(''); // 地址状态 + const onFinish = (values: any) => { + setName(values.name); + setPhone(values.phone); + setAddress(values.address); + setModalOpen(true) + } + const dispath = useDispatch() + const getContractArray = (page: any) => { + get({ + messageApi, + url: `/api/contract/management/listpage/self`, + config: { + params: { + page: page, + rows: 10 + } + }, + onSuccess(data: any) { + console.log(data); + dispath({ + type: 'upContractArray', + val: data.data.rows + }) + dispath({ + type: 'upContractTotal', + val: data.data.total + }) + // setContractArray(data.data.rows) + + } + }) + } + const downContract = () => { + post({ + messageApi, + url: `/api/contract/management/save`, + body: { + firstPartyAddress: address, + firstPartyName: name, + firstPartyPhone: phone + }, + onBefore() { + + }, + onSuccess(data) { + // console.log(data.data.data); + // console.log('成功'); + const contractManagementId = data.data.data + window.open(`${Axios.defaults?.baseURL}/api/contract/management/download/${contractManagementId}`) + getContractArray(1) + setModalOpen(false) + props.closeModal() + + }, + onFinally() { + + } + }) + + } + return ( +
+ {messageApiHolder} +
+
+
+ 甲方姓名* +
+
+ + + + + + + + +
+
+
+
+ 联系电话* +
+
+ + + + + + + + +
+
+
+
+ 联系地址* +
+
+ + + + + + + + +
+
+ + + + +
+ +
+
+
+ { + setModalOpen(false) + }} + okButtonProps={{ style: { background: 'red', color: 'white' } }} + width={850} + centered + + > +
+ +
+
+ +
+
+
+ + ) +} + diff --git a/src/components/ContractText/ContractText.css b/src/components/ContractText/ContractText.css new file mode 100644 index 0000000..2c356d1 --- /dev/null +++ b/src/components/ContractText/ContractText.css @@ -0,0 +1,67 @@ +.contract { + font-size: 16px; + line-height: 30px; + word-break: break-all; + overflow-wrap: break-word; + white-space: normal; + box-sizing: border-box; + padding: 0; + margin: 0; + +} + +.contractTitle { + font-size: 25px; + +} + +/* 二级标题 */ +.contractTitleTwo { + font-size: 20px; + margin-bottom: 10px; +} + +/* 居中 */ +.contractTextCenter { + text-align: center; +} + +/* 加粗 */ +.contractTextBold { + font-weight: 700; + +} + +/* 正文 */ +.contractText { + text-indent: 2em; + +} + +.contractNum { + padding-right: 50px; + margin-top: 20px; + display: flex; + justify-content: flex-end; +} + +/* 不同模块间距 */ +.contractBox { + margin-top: 30px; +} + +/* 下划线 */ +.contractLine { + text-decoration: underline; + +} +.signBox{ + display: flex; +} +.sign{ + width: 100px; + height: 30px; + /* background-color: rgb(218, 218, 218); */ + border-bottom: 1px solid black; + +} diff --git a/src/components/ContractText/ContractText.tsx b/src/components/ContractText/ContractText.tsx new file mode 100644 index 0000000..63227af --- /dev/null +++ b/src/components/ContractText/ContractText.tsx @@ -0,0 +1,192 @@ +import React from 'react' +import './ContractText.css' +export default function ContractText(props: any) { + const height = window.innerHeight - 200; + return ( +
+
AI秒著引擎平台用户服务协议
+
合同编号:
+
+
甲方名称:{props.name}
+
联系地址:{props.address}
+
联系电话:{props.phone}
+
+ +
+
乙方名称:山西腾狮科技有限公司(以下简称“AI秒著引擎平台”)
+
联系地址:山西省晋中市山西综改示范区晋中开发区大学城产业园区龙田路909号创新创业孵化转化中心B6号楼9层0910室
+
联系电话:400-086-1633
+
+
+
甲乙双方在平等互利基础上一致同意建立友好合作关系,根据《中华人民共和国民法典》之规定,由乙方向甲方有偿提供AI秒著引擎平台在线服务,并达成本协议。
+
+ +
+
一、服务内容
+
1.1 根据甲乙双方约定,甲方同意由乙方负责实施甲方通过乙方AI秒著引擎平台(网址:https://www.aimzhu.com/)所下单的相关业务,甲方在AI秒著引擎平台上注册账户,其注册的下单账号为:15756244645。
+
1.2 根据甲乙双方约定,乙方为甲方通过AI秒著引擎平台提供相关服务,服务内容以甲方通过AI秒著引擎平台具体下单选择的服务类型为准。平台提供的服务类型有全托管与写材料两类,服务清单如下所示:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
全托管写材料
提供服务提供服务
1包可运行软件开发与搭建1通过平台自己搭建可运行软件
2包软著鉴别材料撰写2包软著鉴别材料撰写
3包软著国内登记3包软著补正材料撰写
4包软著下证4第一次申请不通过可全额退款
5包开发票5第一次补正退订单金额的30%,并提供补正材料撰写
6提供可运行软件安装包6第一次补正退订单金额的70%,并提供补正材料撰写(注:两次补正后订单结束)
7提供可运行软件云服务900天7包开发票
8提供可运行软件演示视频8提供可运行软件云服务300天
9客服一对一服务9客服一对一服务
+
+
+
二、服务价格以及付款方式
+
2.1 金额:以平台在线充值为准。
+
2.2 付款方式:详细操作按乙方网站(https://www.aimzhu.com/)上付款页面进行。付款后甲方可在线登记发票信息,登记后3个工作日内乙方开具数电发票通过平台发送给甲方注册的账号,甲方可自行下载。
+
2.3服务价格:服务价格以通过AI秒著引擎平台下单时显示价格为准。乙方有权调整价格,乙方保证价格不会高于甲方注册账号后第一次下单的价格。
+
+ +
+
三、双方权利义务
+
(一)甲方权利义务
+
3.1 甲方在使用乙方提供的服务时应遵守乙方网站上的操作流程和使用方法。
+
3.2 甲方不可将乙方提供的服务用于非法用途,发布非法信息。
+
3.3 甲方不可将乙方提供的服务转租借于任何第三方使用,甲方对甲方注册账户名下的一切活动承担责任。
+
3.4 甲方应在约定的时间内履行相应费用的支付义务。
+
3.5 甲方应及时提供乙方需要其提供必要的资料和配合乙方完成服务所需要的工作。
+
(二)乙方权利义务
+
3.6 数据安全:乙方应采取必要的技术手段以保证甲方存储在乙方服务器上的数据安全性。
+
3.7 数据保密:甲方存储在乙方服务器上的数据的公开级别完全由甲方自己设置,乙方在未经甲方允许的情况下不得擅自更改其设置,对于甲方设置为不公开的信息,乙方不得有意或者无意泄漏给任何第三方。甲方购买的服务有效期过期后,乙方仍须履行数据保密义务,直至甲方保存在乙方服务器上的数据被完全销毁。
+
3.8 服务质量:乙方应竭力为甲方提供稳定而高效的服务,并不断改进(改进服务不另向甲方收费)。乙方应保证服务器可用性在99%以上,在工作时间内应有专人为甲方提供电话技术支持(客户服务热线:400-086-1633)。
+
+ +
+
四、知识产权及保密条款
+
4.1 甲方在本协议履行过程中向乙方提供的信息以及由此而产生的相关结果,其知识产权归甲方所有;乙方应对以上信息保密,乙方不得向任何其他第三方公开以上信息。
+
4.2 保密义务不适用于以下几种信息情况:
+
4.2.1 信息在收到或发出时已经处于公共领域或之后被公众广泛获知;
+
4.2.2 信息接收方在收到信息时已经拥有了该信息,且并非从信息披露方直接或间接的获得的;
+
4.2.3 从第三方获得或正当接收,且信息披露方没有对信息接收方设置任何保密限制的信息;
+
4.2.4 信息接收方在未违背协议的情况下独立研发而得到的信息;
+
4.2.5 依照法院或政府机构命令或所适用法律、法规的要求而透露的信息。
+
4.3 保密期限:乙方对以上保密信息负有永久保密义务,并且甲方可随时登录乙方平台删除数据,对于已删除的数据,乙方将不再保存。
+
+ +
+
五、保证条款
+
5.1 甲方承诺在乙方AI秒著引擎平台上注册账户所提供的相关信息均真实、准确、完整,且注册账户名称不违反法律法规规定或公序良俗。
+
5.2 甲方承诺遵守所适用的有关法律、法规和其他规范性文件的规定,不得要求乙方从事违反法律规范的服务。如涉及相关违反法律规范的信息,乙方有权拒绝提供服务,或在发现后停止服务,删除不符合要求的信息,如涉嫌违法,乙方有权保存有关记录并向国家有关机关报告。
+
5.3 甲方承诺使用AI秒著引擎平台搭建的可运行系统用于合法的目的和用途,在可运行系统上不得发布涉密与违反法律规范的信息,乙方有权查看甲方在可运行系统上发布的相关信息,并有权对违规信息进行删除。
+
+ +
+
六、违约责任
+
6.1 甲方未能履行本协议约定的义务,乙方有权单方解除本协议,并停止给甲方提供本协议约定的服务,也无需向甲方退还任何款项,且因甲方违约而给乙方造成损失的,乙方有权向甲方追偿。
+
6.2 乙方未能履行本协议约定的义务,甲方有权单方解除本协议,且因乙方违约而给甲方造成损失的,甲方有权向乙方追偿。
+
6.3 违约方应赔偿守约方的损失,赔偿金额为违约定单的金额。
+
+ +
+
七、免责条款
+
因下列情形之一不能为甲方提供服务或者造成甲方数据丢失,乙方无须承担任何责任:
+
7.1 由于地震、战争、洪水、国家政策等不可抗力;
+
7.2 由于服务器网络接入服务提供商(电信、网通、IDC机房等)原因造成的网络中断;
+
7.3 由于操作系统软件漏洞、病毒、黑客等因素乙方免责,但乙方应尽防范义务,包括但不限于服务器专人管理、及时安装系统更新、安装防火墙、定期数据备份等;
+
7.4 由于国家、地方政府政策、法律因素暂停AI秒著引擎平台等;
+
7.5 因相关政府职能部门审查需要暂停相关服务。
+
+ + +
+
八、争议的解决
+
本协议适用中华人民共和国法律。所有涉及本协议的争议,先友好协商,如协商不成,双方共同约定由原告方所在地人民法院管辖。
+
+ +
+
九、其他
+
9.1 本协议未约定的事宜,以AI秒著引擎平台《用户服务协议》(网址:https://www.aimzhu.com/UserAgreement.html)的约定为准。
+
9.2 本协议自双方签字或盖章后成立。本协议壹式贰份,甲、乙双方各执壹份,经双方签章后生效,双方约定传真件与扫描件与原件拥有同等法律效力。
+
9.3本协议自甲方向乙方支付本协议2.1条的服务费用时或使用乙方所提供的有尝服务时生效。
+
9.4 本协议未尽事宜,双方经友好协商可达成补充协议,补充协议与本协议不一致的,以补充协议为准。
+
+ +
+
签字页
+
+
+
甲         方:{props.name}
+
+
甲方授权代表签字:
+
+
+
日         期:
+
+
+
乙         方:山西腾狮科技有限公司
+
+
乙方授权代表签字:
+
+
+
日         期:
+
+
+
+ +
+ ) +} diff --git a/src/components/menu/MenuWithTopButton.tsx b/src/components/menu/MenuWithTopButton.tsx index 402c869..6895c26 100644 --- a/src/components/menu/MenuWithTopButton.tsx +++ b/src/components/menu/MenuWithTopButton.tsx @@ -72,6 +72,18 @@ export default function MenuWithTopButton(props: IMenuWithTopButton) { } }) } + if (item.id == 'CONTRACT') { + // props.disableBelongpeople() + navugate('/contract', { + state: { + // keywords: props.correctionKeywords, + // correctionNumType:props.correctionNumType, + // correctionType:props.correctionType, + // applyStatus: props.correctionApplyStatus, + // authorId: props.authorId + } + }) + } }}> diff --git a/src/route/Contract/Contract.tsx b/src/route/Contract/Contract.tsx new file mode 100644 index 0000000..4be2a6a --- /dev/null +++ b/src/route/Contract/Contract.tsx @@ -0,0 +1,148 @@ +import React, { useEffect, useState } from 'react' +import { // Table, + Pagination, + Table, + // message, Spin, + Empty, +} from 'antd'; +import { get,Axios } from "../../util/AjaxUtils.ts"; +import type { TableProps } from 'antd'; +import useMessage from "antd/es/message/useMessage"; +interface DataType { + contractManagementId: string; + firstPartyName: string; + firstPartyPhone: string; + firstPartyAddress: string; + gmtCreate: string; +} +import { useSelector, useDispatch } from 'react-redux' +export default function CONTRACT() { + const dispath = useDispatch() + const redxuState: any = useSelector(state => state) + const contractArray = redxuState.contractArray + const total = redxuState.contractTotal + const [messageApi, messageApiHolder] = useMessage(); + const height = window.innerHeight - 180; + // const [contractArray, setContractArray] = useState([]) + // 分页 + const [page, setPage] = useState(1) + const getContractArray = (page: any) => { + get({ + messageApi, + url: `/api/contract/management/listpage/self`, + config: { + params: { + page: page, + rows: 10 + } + }, + onSuccess(data: any) { + console.log(data); + dispath({ + type: 'upContractArray', + val: data.data.rows + }) + dispath({ + type: 'upContractTotal', + val: data.data.total + }) + // setContractArray(data.data.rows) + + } + }) + } + + // 表格 + const columns: TableProps['columns'] = [ + { + title: '序号', + dataIndex: 'index', + key: 'index', + align: 'center', + width: 100, + render: (_text, _record, index) => (page - 1) * 10 + index + 1, // 显示序号,从1开始 + + }, + { + title: '甲方姓名', + dataIndex: 'firstPartyName', + key: 'firstPartyName', + align: 'center', + ellipsis: { + showTitle: true, + }, + + }, + { + title: '联系电话', + dataIndex: 'firstPartyPhone', + key: 'firstPartyPhone', + align: 'center', + width: 320 + }, + { + title: '联系地址', + dataIndex: 'firstPartyAddress', + align: 'center', + key: 'firstPartyAddress', + ellipsis: { + showTitle: true, + }, + }, + { + title: '创建日期', + dataIndex: 'gmtCreate', + align: 'center', + key: 'gmtCreate', + width: 320 + }, + { + title: '操作', + dataIndex: 'contractManagementId', + align: 'center', + key: 'contractManagementId', + width: 200, + render: (text) => ( +
{ + + window.open(`${Axios.defaults?.baseURL}/api/contract/management/download/${text}`) + + }}>下载
+ ) + + }, + ] + + useEffect(() => { + getContractArray(page) + }, []) + return ( +
+ {messageApiHolder} +
+ {/* 表格 */} +
0 ? 'block' : 'none', padding: 10 }}> + columns={columns} dataSource={contractArray} pagination={false} rowKey="contractManagementId" /> +
+
+
+ +
+
+
+
+ { + setPage(page) + getContractArray(page) + }} /> +
+
+ ) +} diff --git a/src/route/index/Index.tsx b/src/route/index/Index.tsx index 33fead1..721504a 100644 --- a/src/route/index/Index.tsx +++ b/src/route/index/Index.tsx @@ -8,6 +8,7 @@ import { IMenuListItem, IMenuWithTopButton } from "../../interfaces/menu/IMenuWi import MenuWithTopButton from "../../components/menu/MenuWithTopButton.tsx"; import RefunModal from '../../components/RefunModal/RefunModal.tsx' import CorrectionModal from '../../components/CorrectionModal/CorrectionModal.tsx' +import ContractModal from '../../components/ContractModal/ContractModal.tsx' // import MenuWithBottomButtom from '../../components/menu/MenuWithBottomButton.tsx' // import MenuTreeWithTopButton from "../../components/menu/MenuTreeWithTopButton.tsx"; // import ListProj from "../../components/list/ListProj.tsx"; @@ -53,7 +54,7 @@ export default function Index() { // const [clickBelongpeople, setClickBelongpeople] = useState(true) // 选项数组 const [tagArray, setTagArray] = useState([]) - + // 获取标签 const getTag = () => { @@ -170,7 +171,7 @@ export default function Index() { const [payStatus, setpayStatus] = useState(null) const [authorId, setauthorId] = useState('') - const [projRemindId,setprojRemindId] = useState(null) + const [projRemindId, setprojRemindId] = useState(null) //退款状态 const [applyStatus, setapplyStatus] = useState(null) // 退款关键字 @@ -288,6 +289,7 @@ export default function Index() { { id: 'REFUN', name: '退款项目' }, // correction { id: 'CORRECTION', name: '补正项目' }, + { id: 'CONTRACT', name: '合同下载' }, ], handleListItem(_e, _index, item: IMenuListItem) { @@ -379,6 +381,9 @@ export default function Index() { }) }, }) + + // 新增合同弹窗 + const [contractModal, setContractModal] = useState(false) // const [agentMenu, setAgentMenu] = useState({ // button: { // name: '代理服务', @@ -514,6 +519,8 @@ export default function Index() { const [showSearchBox, setShowSearchBox] = useState(true) const [refunSearchBox, setRrefunSearchBox] = useState(false) const [correctionSearchBox, setCorrectionSearchBox] = useState(false) + // 新增合同按钮是否显示 + const [contractSearchBox, setContractSearchBox] = useState(false) // 优惠券遮罩层是否i西安市 const [coupon, setCoupon] = useState(false) // 获取优惠券弹出层是否显示 @@ -645,11 +652,13 @@ export default function Index() { setShowSearchBox(true) // setClickBelongpeople(true) setRrefunSearchBox(false) + setContractSearchBox(false) setCorrectionSearchBox(false) } else if (location.pathname.includes('/proj-create')) { setShowSearchBox(false) setRrefunSearchBox(false) setCorrectionSearchBox(false) + setContractSearchBox(false) setNow('创建项目') // setPathArray([{ title: 首页 }, { title: '创建项目' }]) // /config-mod-list /config-menu-list /config-mod-show @@ -658,6 +667,7 @@ export default function Index() { setShowSearchBox(false) setRrefunSearchBox(false) setCorrectionSearchBox(false) + setContractSearchBox(false) // setEditname(location.pathname) // setPathArray([{ title: 首页 }, { title: '编辑项目' }]) } else if (location.pathname.includes('/proj-new')) { @@ -665,6 +675,7 @@ export default function Index() { setShowSearchBox(false) setRrefunSearchBox(false) setCorrectionSearchBox(false) + setContractSearchBox(false) // setNewname(location.pathname) // setPathArray([{ title: 首页 }, { title: 创建项目 }, { title: '新建项目' }]) } else if (location.pathname.includes('/proj-efree')) { @@ -672,6 +683,7 @@ export default function Index() { setShowSearchBox(false) setRrefunSearchBox(false) setCorrectionSearchBox(false) + setContractSearchBox(false) // setNewname(location.pathname) // setPathArray([{ title: 首页 }, { title: '编辑项目' }]) } else if (location.pathname.includes('/proj-eall')) { @@ -679,6 +691,7 @@ export default function Index() { setShowSearchBox(false) setRrefunSearchBox(false) setCorrectionSearchBox(false) + setContractSearchBox(false) // setNewname(location.pathname) // setPathArray([{ title: 首页 }, { title: '编辑项目' }]) } else if (location.pathname.includes('/proj-edit/step1')) { @@ -686,6 +699,7 @@ export default function Index() { setShowSearchBox(false) setRrefunSearchBox(false) setCorrectionSearchBox(false) + setContractSearchBox(false) // setNewname(location.pathname) // setPathArray([{ title: 首页 }, { title: 创建项目 }, { title: { nav(-1) }}>编辑项目 }, { title: '标题简介' }]) } else if (location.pathname.includes('/proj-edit/step2')) { @@ -693,6 +707,7 @@ export default function Index() { setShowSearchBox(false) setRrefunSearchBox(false) setCorrectionSearchBox(false) + setContractSearchBox(false) // setNewname(location.pathname) // setPathArray([{ title: 首页 }, { title: 创建项目 }, { title: { nav(-1) }}>编辑项目 }, { title: '基本信息' }]) } else if (location.pathname.includes('/proj-edit/config-loginpage')) { @@ -700,6 +715,7 @@ export default function Index() { setShowSearchBox(false) setRrefunSearchBox(false) setCorrectionSearchBox(false) + setContractSearchBox(false) // setNewname(location.pathname) // setPathArray([{ title: 首页 }, { title: 创建项目 }, { title: { nav(-1) }}>编辑项目 }, { title: '登录界面设置' }]) } else if (location.pathname.includes('/proj-edit/config-mod-list')) { @@ -707,6 +723,7 @@ export default function Index() { setShowSearchBox(false) setRrefunSearchBox(false) setCorrectionSearchBox(false) + setContractSearchBox(false) // setNewname(location.pathname) // setPathArray([{ title: 首页 }, { title: 创建项目 }, { title: { nav(-1) }}>编辑项目 }, { title: '系统菜单管理' }]) } else if (location.pathname.includes('/proj-edit/config-menu-list')) { @@ -714,6 +731,7 @@ export default function Index() { setShowSearchBox(false) setRrefunSearchBox(false) setCorrectionSearchBox(false) + setContractSearchBox(false) // setNewname(location.pathname) // setPathArray([{ title: 首页 }, { title: 创建项目 }, { title: { nav(-1) }}>编辑项目 }, { title: '系统菜单顺序' }]) } else if (location.pathname.includes('/step3')) { @@ -721,6 +739,7 @@ export default function Index() { setShowSearchBox(false) setRrefunSearchBox(false) setCorrectionSearchBox(false) + setContractSearchBox(false) // setNewname(location.pathname) // setPathArray([{ title: 首页 }, { title: 创建项目 }, { title: { nav(-1) }}>编辑项目 }, { title: '软件功能特点' }]) } else if (location.pathname.includes('/proj-edit/config-mod-save')) { @@ -728,12 +747,14 @@ export default function Index() { setShowSearchBox(false) setRrefunSearchBox(false) setCorrectionSearchBox(false) + setContractSearchBox(false) // setPathArray([{ title: 首页 }, { title: 创建项目 }, { title: { nav(-1) }}>编辑项目 }, { title: '添加菜单' }]) } else if (location.pathname.includes('/proj-edit/config-mod-edit')) { setNow('编辑菜单') setShowSearchBox(false) setRrefunSearchBox(false) setCorrectionSearchBox(false) + setContractSearchBox(false) // setPathArray([{ title: 首页 }, { title: 创建项目 }, { title: { nav(-2) }}>编辑项目 }, { title: { nav(-1) }}>系统菜单管理 }, { title: '编辑菜单' }]) // /config-mod-edit /config-mod-show } else if (location.pathname.includes('/proj-edit/config-mod-show')) { @@ -741,6 +762,7 @@ export default function Index() { setShowSearchBox(false) setRrefunSearchBox(false) setCorrectionSearchBox(false) + setContractSearchBox(false) // setPathArray([{ title: 首页 }, { title: 创建项目 }, { title: { nav(-2) }}>编辑项目 }, { title: { nav(-1) }}>系统菜单管理 }, { title: '查看菜单' }]) // /config-mod-edit } else if (location.pathname.includes('/product-release')) { @@ -748,6 +770,7 @@ export default function Index() { setShowSearchBox(false) setRrefunSearchBox(false) setCorrectionSearchBox(false) + setContractSearchBox(false) // setPathArray([{ title: '首页' }]) // /config-mod-edit /product-release /transaction-order } else if (location.pathname.includes(' /transaction-order')) { @@ -755,6 +778,7 @@ export default function Index() { setShowSearchBox(false) setRrefunSearchBox(false) setCorrectionSearchBox(false) + setContractSearchBox(false) // setPathArray([{ title: '首页' }]) // /config-mod-edit /product-release /transaction-order } else if (location.pathname.includes(' /copyright-goods')) { @@ -762,6 +786,7 @@ export default function Index() { setShowSearchBox(false) setRrefunSearchBox(false) setCorrectionSearchBox(false) + setContractSearchBox(false) // setPathArray([{ title: '首页' }]) // /config-mod-edit /product-release /transaction-order } else if (location.pathname.includes(' /trading-goods')) { @@ -769,6 +794,7 @@ export default function Index() { setShowSearchBox(false) setRrefunSearchBox(false) setCorrectionSearchBox(false) + setContractSearchBox(false) // setPathArray([{ title: '首页' }]) // /config-mod-edit /product-release /transaction-order } else if (location.pathname.includes('/refun')) { @@ -777,6 +803,7 @@ export default function Index() { // setClickBelongpeople(false) setRrefunSearchBox(true) setCorrectionSearchBox(false) + setContractSearchBox(false) // setNewname(location.pathname) // setPathArray([{ title: 首页 }, { title: 创建项目 }, { title: { nav(-1) }}>编辑项目 }, { title: '软件功能特点' }]) } else if (location.pathname.includes('/correction')) { @@ -785,8 +812,15 @@ export default function Index() { // setClickBelongpeople(false) setRrefunSearchBox(false) setCorrectionSearchBox(true) + setContractSearchBox(false) // setNewname(location.pathname) // setPathArray([{ title: 首页 }, { title: 创建项目 }, { title: { nav(-1) }}>编辑项目 }, { title: '软件功能特点' }]) + } else if (location.pathname.includes('/contract')) { + setShowSearchBox(false) + setRrefunSearchBox(false) + setCorrectionSearchBox(false) + setContractSearchBox(true) + setNow('首页-合同下载') } }, [location.pathname]) useEffect(() => { @@ -840,7 +874,7 @@ export default function Index() { }) } - }, [type, chargeAdditionals, keywords, tagDataId,projRemindId, payStatus, authorId, refunKeywords, applyStatus, correctionKeywords, correctionNumType, correctionType, correctionApplyStatus]); + }, [type, chargeAdditionals, keywords, tagDataId, projRemindId, payStatus, authorId, refunKeywords, applyStatus, correctionKeywords, correctionNumType, correctionType, correctionApplyStatus]); // const [menuName,setMenuName] = useState('') // useEffect(()=>{ @@ -1304,7 +1338,7 @@ export default function Index() { tagDataId: tagDataId, authorId: authorId, payStatus: payStatus, - projRemindId:value + projRemindId: value } }) @@ -1547,11 +1581,29 @@ export default function Index() { +
+
+
+
+
+ +
+
@@ -1643,6 +1695,9 @@ export default function Index() { | 新建项目
+
+ 首页 +
@@ -1669,6 +1724,8 @@ export default function Index() { okButtonProps={{ style: { background: 'red', color: 'white' } }} width={592} maskClosable={false} // 禁止通过点击蒙层关闭 + centered + > { setRefunModal(false) }}> @@ -1683,10 +1740,27 @@ export default function Index() { }} okButtonProps={{ style: { background: 'red', color: 'white' } }} width={592} + centered + > { setCorrectionModal(false) }} > + { + setContractModal(false) + }} + okButtonProps={{ style: { background: 'red', color: 'white' } }} + width={592} + centered + > + { setContractModal(false) }}> + // }, // ] - [{ - path: '/', - element: , - children: [ - - { - path: '/', - element: , - - }, - { - path:'/home', - element:, - children:[ + [ + + { + path: '/', + element: , + children: [ - ] - }, - // { - // path:'/search', - // element: - // }, - { - path:'/product-release', - element: - }, - { - path:'/transaction-order', - element: - }, - { - path:'/copyright-goods', - element: - }, - { - path:'/trading-goods', - element: - }, - { - path:'/refun', - element: - }, - { - path:'/correction', - element: - }, - { - path: '/proj-create', - element: - }, - { - path: '/proj-new/:projChargeType', - element: - }, - { - path: '/proj-edit/:projId', - element: - }, - { - path: '/proj-eall/:projId', - element: - }, - { - path: '/proj-efree/:projId', - element: - }, - { - path: '/proj-edit/step1/:projId', - element: - }, - { - path: '/proj-edit/step1-show/:projId', - element: - }, - { - path: '/proj-edit/step2/:projId', - element: - }, - { - path: '/proj-edit/step2-show/:projId', - element: - }, - { - path: '/proj-edit/step3/:projId', - element: - }, - { - path: '/proj-edit/step3-show/:projId', - element: - }, - { - path: '/proj-edit/step4/:projId', - element: - }, - { - path: '/proj-edit/step4-show/:projId', - element: - }, - { - path: '/proj-edit/step5/:projId', - element: - }, - { - path: '/proj-edit/step5-show/:projId', - element: - }, - { - path: '/proj-edit/step6/:projId', - element: - }, - { - path: '/proj-edit/step6-show/:projId', - element: - }, - { - path: '/proj-edit/config-loginpage/:projId', - element: - }, - { - path: '/proj-edit/config-loginpage-show/:projId', - element: - }, - { - path: '/proj-edit/config-mod-list/:projId', - element: - }, - { - path: '/proj-edit/config-mod-list-show/:projId', - element: - }, - { - path: '/proj-edit/config-mod-flist/:projId', - element: - }, - { - path: '/proj-edit/config-mod-flist-show/:projId', - element: - }, - { - path: '/proj-edit/config-mod-save/:projId', - element: - }, - { - path: '/proj-edit/config-mod-fsave/:projId', - element: - }, - { - path: '/proj-edit/config-mod-edit/:projId/:projModId', - element: - }, - { - path: '/proj-edit/config-mod-fedit/:projId/:projModId', - element: - }, - { - path: '/proj-edit/config-mod-show/:projId/:projModId', - element: - }, - { - path: '/proj-edit/config-mod-fshow/:projId/:projModId', - element: - }, - { - path: '/proj-edit/config-menu-list/:projId', - element: - }, - { - path: '/proj-edit/config-menu-list-show/:projId', - element: - }, - { - path: '/agent-select/:projId', - element: - }, - { - path: '/agent-agreement/:orderId', - element: - }, - { - path: '/agent-correction/:orderId', - element: - }, - { - path: '/agent-result/:orderId', - element: - }, - ] - }] + { + path: '/', + element: , + + }, + { + path: '/home', + element: , + children: [ + + ] + }, + // { + // path:'/search', + // element: + // }, + { + path: '/product-release', + element: + }, + { + path: '/transaction-order', + element: + }, + { + path: '/copyright-goods', + element: + }, + { + path: '/trading-goods', + element: + }, + { + path: '/refun', + element: + }, + { + path: '/correction', + element: + }, + { + path: '/contract', + element: + }, + { + path: '/proj-create', + element: + }, + { + path: '/proj-new/:projChargeType', + element: + }, + { + path: '/proj-edit/:projId', + element: + }, + { + path: '/proj-eall/:projId', + element: + }, + { + path: '/proj-efree/:projId', + element: + }, + { + path: '/proj-edit/step1/:projId', + element: + }, + { + path: '/proj-edit/step1-show/:projId', + element: + }, + { + path: '/proj-edit/step2/:projId', + element: + }, + { + path: '/proj-edit/step2-show/:projId', + element: + }, + { + path: '/proj-edit/step3/:projId', + element: + }, + { + path: '/proj-edit/step3-show/:projId', + element: + }, + { + path: '/proj-edit/step4/:projId', + element: + }, + { + path: '/proj-edit/step4-show/:projId', + element: + }, + { + path: '/proj-edit/step5/:projId', + element: + }, + { + path: '/proj-edit/step5-show/:projId', + element: + }, + { + path: '/proj-edit/step6/:projId', + element: + }, + { + path: '/proj-edit/step6-show/:projId', + element: + }, + { + path: '/proj-edit/config-loginpage/:projId', + element: + }, + { + path: '/proj-edit/config-loginpage-show/:projId', + element: + }, + { + path: '/proj-edit/config-mod-list/:projId', + element: + }, + { + path: '/proj-edit/config-mod-list-show/:projId', + element: + }, + { + path: '/proj-edit/config-mod-flist/:projId', + element: + }, + { + path: '/proj-edit/config-mod-flist-show/:projId', + element: + }, + { + path: '/proj-edit/config-mod-save/:projId', + element: + }, + { + path: '/proj-edit/config-mod-fsave/:projId', + element: + }, + { + path: '/proj-edit/config-mod-edit/:projId/:projModId', + element: + }, + { + path: '/proj-edit/config-mod-fedit/:projId/:projModId', + element: + }, + { + path: '/proj-edit/config-mod-show/:projId/:projModId', + element: + }, + { + path: '/proj-edit/config-mod-fshow/:projId/:projModId', + element: + }, + { + path: '/proj-edit/config-menu-list/:projId', + element: + }, + { + path: '/proj-edit/config-menu-list-show/:projId', + element: + }, + { + path: '/agent-select/:projId', + element: + }, + { + path: '/agent-agreement/:orderId', + element: + }, + { + path: '/agent-correction/:orderId', + element: + }, + { + path: '/agent-result/:orderId', + element: + }, + ] + }] ) \ No newline at end of file diff --git a/src/store/index.ts b/src/store/index.ts index df34b63..47ef4c4 100644 --- a/src/store/index.ts +++ b/src/store/index.ts @@ -11,6 +11,8 @@ const baseState = { belongArray: [], refunArray:[], correctionArray:[], + contractArray:[], + contractTotal:0, refunTotal:0, correctionTotal:0, couponModal:false, @@ -44,6 +46,12 @@ const reducer = (state = baseState, action: any) => { if (action.type == 'upCorrectionArray') { nstate.correctionArray = action.val } + if (action.type == 'upContractArray') { + nstate.contractArray = action.val + } + if (action.type == 'upContractTotal') { + nstate.contractTotal = action.val + } if (action.type == 'upCorrectionTotal') { nstate.correctionTotal = action.val } diff --git a/src/util/AjaxUtils.ts b/src/util/AjaxUtils.ts index f7241ed..ab696be 100644 --- a/src/util/AjaxUtils.ts +++ b/src/util/AjaxUtils.ts @@ -58,6 +58,9 @@ export function websocketUrl() { export function downloadUrl(fileId: string, isDownload?: boolean) { return `${Axios.defaults?.baseURL}/route/file/v2/download/${isDownload == false}/${fileId}` } +export function downContract(fileId: any) { + return `${Axios.defaults?.baseURL}/api/contract/management/download/${fileId}` +} export function uploadImageUrl() { return `${Axios.defaults?.baseURL}/api/file/v2/upload-image`;