diff --git a/src/components/card/CardProjAgent.tsx b/src/components/card/CardProjAgent.tsx index 2c0f563..1420002 100644 --- a/src/components/card/CardProjAgent.tsx +++ b/src/components/card/CardProjAgent.tsx @@ -1,8 +1,8 @@ import './card-proj-agent.css' -import {OrderedListOutlined, BarsOutlined, SearchOutlined} from "@ant-design/icons"; -import {Badge, Tag} from 'antd'; -import {IAgent} from "../../interfaces/agent/IAgent.ts"; -import {useNavigate} from "react-router-dom"; +import { OrderedListOutlined, BarsOutlined, SearchOutlined } from "@ant-design/icons"; +import { Badge, Tag } from 'antd'; +import { IAgent } from "../../interfaces/agent/IAgent.ts"; +import { useNavigate } from "react-router-dom"; export default function CardProjAgent(props: IAgent) { @@ -55,7 +55,61 @@ export default function CardProjAgent(props: IAgent) { return (
-
+
+
+ {props.projName} +
+
+ 代理商:{props.basicsName} + 订单号:{props.orderNumber} +
+
+
+
+
+
金额¥:{props.orderShoppingAmount / 100}
+
{props.gmtCreate}
+
+ +
+
+ + + + { + e.preventDefault(); + nav(`/agent-agreement/${props.orderId}`); + }}>协议清单 + + + + + + { + e.preventDefault(); + nav(`/agent-correction/${props.orderId}`); + }}>代办列表 + + +
+
+ { + props.isResult ? ( + + ) : <> + } +
+
+
+ {/*
{props.projName}
@@ -110,8 +164,8 @@ export default function CardProjAgent(props: IAgent) { }
-
-
+
*/} +
{renderTakeStatus()} diff --git a/src/components/card/CardProjDownload.tsx b/src/components/card/CardProjDownload.tsx index ea201bf..5167df9 100644 --- a/src/components/card/CardProjDownload.tsx +++ b/src/components/card/CardProjDownload.tsx @@ -1,25 +1,28 @@ import './card-proj-download.css'; -import {IProjDownload} from "../../interfaces/card/ICardProj.ts"; +import { IProjDownload } from "../../interfaces/card/ICardProj.ts"; export default function CardProjDownload(props: IProjDownload) { return ( -
-
{props.title}
-
{props.desc}
-
- { - props.canBtnClick ? ( - { - e.preventDefault(); - props.handleDownload(); - }}>下载 - ) : ( - { - e.preventDefault(); - }}>下载 - ) - } + //
+
+
{props.title}
+
+
{props.desc}
+
) diff --git a/src/components/card/CardProjJump.tsx b/src/components/card/CardProjJump.tsx index ae01a4b..207e35e 100644 --- a/src/components/card/CardProjJump.tsx +++ b/src/components/card/CardProjJump.tsx @@ -15,6 +15,8 @@ export default function CardProjJump(props: IProjJump) {
{props.desc}
+
+
) } \ No newline at end of file diff --git a/src/components/card/card-proj-agent.css b/src/components/card/card-proj-agent.css index 0a64957..2d62498 100644 --- a/src/components/card/card-proj-agent.css +++ b/src/components/card/card-proj-agent.css @@ -2,8 +2,41 @@ background-color: var(--color-light); padding: 5px 15px; } +.orderNo{margin-left: 20px;} +.cardpro-agent-top{ + display: flex; + justify-content: space-between; +} -.card-proj-agent .left { +.cardpro-agent-cTop{ + display: flex; + justify-content: space-between; + +} +.cardpro-agent-cBot{ + display: flex; + justify-content: space-between; +} + +.card-proj-agent .tail { + padding: 5px 0; + display: flex; + justify-content: space-between; +} + +.card-proj-agent .tail .tail-left { + margin-right: 0; +} +hr { + border-color: var(--color-border); + border-style: dashed; + border-left: 0; + border-bottom: 0; + border-right: 0; + margin-block-start: 5px; + margin-block-end: 5px; +} +/* .card-proj-agent .left { position: unset; } @@ -82,4 +115,4 @@ .card-proj-agent .tail .tail-left { margin-right: 0; } - + */ diff --git a/src/components/card/card-proj-download.css b/src/components/card/card-proj-download.css index dfd6928..248ceec 100644 --- a/src/components/card/card-proj-download.css +++ b/src/components/card/card-proj-download.css @@ -1,25 +1,48 @@ .card-proj-download { - width: 224px; - padding: 10px 15px; + width: 309px; + padding: 20px 25px; + box-sizing: border-box; + + background-color: #FFFBF5; + margin-bottom: 27px; + box-shadow: 0px 3px 0px 0px #EBDFD5; + border-radius: 4px; } - -.card-proj-download .title { - font-size: 18px; +.card-proj-nodownload{ + width: 309px; + padding: 20px 25px; + box-sizing: border-box; + background-color: #f3f3f3; + margin-bottom: 27px; + border-radius: 4px; +} +.cpDown-bot{ + display: flex; + justify-content: space-between; + /* background-color: aqua; */ + margin-top: 16px; + +} +.cpDown-title { + font-size: 16px; font-weight: bold; } -.card-proj-download .desc { - margin: 5px 0 10px 0; - max-height: 36px; - line-height: 18px; - color: var(--color-note); +.cpDown-desc { + font-weight: 300; + font-size: 14px; + color: #8B919D; } -.card-proj-download .option { +.cpDown-option { display: flex; justify-content: space-between; } -.card-proj-download .option .edit { +.cpDown-edit { color: var(--color-blue); + text-decoration: underline; +} +.cpDown-noedit:hover{ + cursor: not-allowed; } \ No newline at end of file diff --git a/src/components/card/card-proj-edit.css b/src/components/card/card-proj-edit.css index abaf0db..7f9b006 100644 --- a/src/components/card/card-proj-edit.css +++ b/src/components/card/card-proj-edit.css @@ -2,7 +2,6 @@ width: 309px; padding: 20px 25px; box-sizing: border-box; - background-color: pink; margin-bottom: 27px; display: flex; justify-content: space-between; diff --git a/src/components/card/card-proj-jump.css b/src/components/card/card-proj-jump.css index 4e1fa57..8972d09 100644 --- a/src/components/card/card-proj-jump.css +++ b/src/components/card/card-proj-jump.css @@ -1,11 +1,16 @@ .card-proj-jump { - width: 224px; - padding: 10px 15px; + width: 317px; + padding: 20px 25px; + box-sizing: border-box; cursor: pointer; + background-color: #F5FEFA; + box-shadow:0px 3px 0px 0px rgba(55,215,138,0.18) ; + position: relative; + } .card-proj-jump .title { - font-size: 18px; + font-size: 16px; font-weight: bold; display: flex; justify-content: space-between; @@ -13,8 +18,13 @@ } .card-proj-jump .desc { - margin: 15px 0 5px 0; - max-height: 36px; - line-height: 18px; - color: var(--color-note); + margin-top: 18px; + + /* margin: 15px 0 5px 0; */ + /* max-height: 36px; */ + /* line-height: 18px; */ + /* color: var(--color-note); */ + color: #8B919D; + font-weight: 300; + font-size: 14px; } \ No newline at end of file diff --git a/src/components/card/card-proj-loading.css b/src/components/card/card-proj-loading.css index a781f03..9640df2 100644 --- a/src/components/card/card-proj-loading.css +++ b/src/components/card/card-proj-loading.css @@ -1,11 +1,15 @@ .card-proj-loading { - width: 224px; - padding: 10px 15px; + width: 317px; + padding: 20px 25px; + box-sizing: border-box; + background-color: #F5FAFE; + box-shadow:0px 3px 0px 0px rgba(55,144,215,0.18) ; + cursor: pointer; } .card-proj-loading .title { - font-size: 18px; + font-size: 16px; font-weight: bold; } @@ -14,10 +18,13 @@ } .card-proj-loading .desc { - margin-top: 5px; + /* margin-top: 5px; */ max-height: 36px; line-height: 18px; - color: var(--color-note); + /* color: var(--color-note); */ + margin-top: 18px; + color: #8B919D; + } .card-proj-loading .option { diff --git a/src/components/card/card-proj-result.css b/src/components/card/card-proj-result.css index c0d4c23..2d027bc 100644 --- a/src/components/card/card-proj-result.css +++ b/src/components/card/card-proj-result.css @@ -1,10 +1,18 @@ .card-proj-result { - width: 224px; - padding: 10px 15px; + width: 317px; + min-height: 97px; + padding: 20px 25px; + box-sizing: border-box; + background-color: #F5FAFE; + box-shadow:0px 3px 0px 0px rgba(55,144,215,0.18) ; + display: flex; + flex-direction: column; + justify-content: center; + border-radius: 4px; } .card-proj-result .title { - font-size: 18px; + font-size: 16px; font-weight: bold; display: flex; justify-content: space-between; @@ -57,4 +65,5 @@ .card-proj-result .option .edit { color: var(--color-blue); + margin-top: 16px; } diff --git a/src/components/list/ListProjAgent.tsx b/src/components/list/ListProjAgent.tsx index ee3873e..9577575 100644 --- a/src/components/list/ListProjAgent.tsx +++ b/src/components/list/ListProjAgent.tsx @@ -1,7 +1,8 @@ import './list-proj-agent.css'; import CardProjAgent from "../card/CardProjAgent.tsx"; import {useRef, MutableRefObject, useEffect, useState, useContext} from "react"; -import {Image, Input, Pagination, Spin, Tag} from 'antd'; +// import {Image, Pagination, Spin, Tag} from 'antd'; +import {Image, Pagination, Spin} from 'antd'; import {get} from "../../util/AjaxUtils.ts"; import useMessage from "antd/es/message/useMessage"; import {IListPage} from "../../interfaces/listpage/IListPage.ts"; @@ -9,7 +10,7 @@ import {IndexListContext} from "../../context/IndexListContext.ts"; import {IAgent} from "../../interfaces/agent/IAgent.ts"; import NoData from "../../assets/no-data.png"; -const {Search} = Input; +// const {Search} = Input; export default function ListProjAgent() { const indexListContext = useContext(IndexListContext); @@ -24,6 +25,7 @@ export default function ListProjAgent() { const [total, setTotal] = useState(0); const [agents, setAgents] = useState([]); const [isLoading, setIsLoading] = useState(false); + // eslint-disable-next-line @typescript-eslint/no-unused-vars const [keywords, setKeywords] = useState(''); const domHeight = window.innerHeight - 280; @@ -53,16 +55,16 @@ export default function ListProjAgent() { }) }, [indexListContext.status, keywords, page]) - const renderStatus = () => { - if (indexListContext.status == 'ALL') { - return 代理:全部项目 - } else if (indexListContext.status == 'PROCESSING') { - return 代理:进行中的 - } else if (indexListContext.status == 'COMPLETE') { - return 代理:已完成的 - } - return <> - } + // const renderStatus = () => { + // if (indexListContext.status == 'ALL') { + // return 代理:全部项目 + // } else if (indexListContext.status == 'PROCESSING') { + // return 代理:进行中的 + // } else if (indexListContext.status == 'COMPLETE') { + // return 代理:已完成的 + // } + // return <> + // } const renderList = () => { if(agents.length == 0) { @@ -101,12 +103,12 @@ export default function ListProjAgent() { return ( <>
-
+ {/*
{renderStatus()} { setKeywords(value) }} style={{width: 200}}/> -
+
*/}
{renderList()}
diff --git a/src/route/Home/Home.tsx b/src/route/Home/Home.tsx index 20a25ad..2511cb3 100644 --- a/src/route/Home/Home.tsx +++ b/src/route/Home/Home.tsx @@ -2,7 +2,7 @@ import { useContext } from "react"; import { IndexListContext } from "../../context/IndexListContext.ts"; import ListProj from "../../components/list/ListProj.tsx"; import ListProjAgent from "../../components/list/ListProjAgent.tsx"; -import { useLocation } from "react-router-dom"; +// import { useLocation } from "react-router-dom"; // import { useLocation } from 'react-router-dom'; export default function Home() { diff --git a/src/route/proj/ProjEdit.tsx b/src/route/proj/ProjEdit.tsx index a5f653d..5014c73 100644 --- a/src/route/proj/ProjEdit.tsx +++ b/src/route/proj/ProjEdit.tsx @@ -1,19 +1,19 @@ import './proj-edit.css'; // import {Link, useNavigate, useParams} from "react-router-dom"; -import { useNavigate, useParams} from "react-router-dom"; -import { Button, FloatButton, message, Modal} from "antd"; +import { useNavigate, useParams } from "react-router-dom"; +import { Button, FloatButton, message, Modal } from "antd"; import StepProjEdit from "../../components/step/StepProjEdit.tsx"; import CardProjEdit from "../../components/card/CardProjEdit.tsx"; -import {Process} from "../../interfaces/step/IStepProj.ts"; +import { Process } from "../../interfaces/step/IStepProj.ts"; import CardProjLoading from "../../components/card/CardProjLoading.tsx"; import CardProjResult from "../../components/card/CardProjResult.tsx"; import CardProjDownload from "../../components/card/CardProjDownload.tsx"; import CardProjJump from "../../components/card/CardProjJump.tsx"; -import {useEffect, useState} from "react"; -import {Axios, get, post} from "../../util/AjaxUtils.ts"; -import {EditStepEnum, IProjEdit} from "../../interfaces/card/ICardProj.ts"; -import {MIN_MOD_SIZE} from "./edit/ProjConfigModList.tsx"; -import {GenerateStatus} from "../../interfaces/proj/IProj.ts"; +import { useEffect, useState } from "react"; +import { Axios, get, post } from "../../util/AjaxUtils.ts"; +import { EditStepEnum, IProjEdit } from "../../interfaces/card/ICardProj.ts"; +import { MIN_MOD_SIZE } from "./edit/ProjConfigModList.tsx"; +import { GenerateStatus } from "../../interfaces/proj/IProj.ts"; import AiHelper from "../../components/ai/AiHelper.tsx"; type AiHelperType = { @@ -201,7 +201,7 @@ export default function ProjEdit() { get({ messageApi: messageApi, url: `/api/proj/get/${pathParams.projId}`, - onSuccess({data}) { + onSuccess({ data }) { const isEdited = data.editSteps[0].editStatus == EditStepEnum.EDITED && data.editSteps[1].editStatus == EditStepEnum.EDITED && data.editSteps[2].editStatus == EditStepEnum.EDITED @@ -233,7 +233,7 @@ export default function ProjEdit() { useEffect(() => { renderData(); }, []) - + return (
{contextHolder} @@ -247,19 +247,19 @@ export default function ProjEdit() { {/*
*/}
+ descTitle="完善信息" + descDetail="完善项目的基本信息" + hasNext={true}> { editStepArray.map((item, index) => { return }) } @@ -267,20 +267,20 @@ export default function ProjEdit() { {/*trueisEditStepEdited*/} + process={!isEditStepEdited ? Process.PENDING : (isConfigEdited ? Process.COMPLETE : Process.PROCESSING)} + descTitle="功能设置" + descDetail="设置系统的菜单功能" hasNext={true}> { configArray.map((item, index) => { return }) @@ -288,62 +288,62 @@ export default function ProjEdit() { { isEditStepEdited && isConfigEdited ? ( { - window.open(`${Axios.defaults?.baseURL}/${previewUrl}`, '_blank') - }} + desc="点击查看预览系统" + canBtnClick={true} + handleJump={() => { + window.open(`${Axios.defaults?.baseURL}/${previewUrl}`, '_blank') + }} /> ) : <> } + process={generateStatus == GenerateStatus.SUCCESS ? Process.COMPLETE : (canGenerate ? Process.PROCESSING : Process.PENDING)} + descTitle="资料生成" + hasNext={true}> { generateStatus == GenerateStatus.NONE || generateStatus == GenerateStatus.FAILED ? ( { - setIsGenerateModalOpen(true); - setTimeout(() => { - window.location.reload(); - }, 1000) - }} - // background = {status == EditStepEnum.EDITED?'#F5FAFE':'#f3f3f3'} - // shadow = {status == EditStepEnum.EDITED?'0px 3px 0px 0px rgba(55,144,215,0.18)':''} - background = '#f3f3f3' + desc="生成软著所需要的资料,此操作后项目无法再次编辑" + btnName="生成" + status={EditStepEnum.UN_EDIT} + canBtnClick={canGenerate} + handleEdit={() => { + setIsGenerateModalOpen(true); + setTimeout(() => { + window.location.reload(); + }, 1000) + }} + // background = {status == EditStepEnum.EDITED?'#F5FAFE':'#f3f3f3'} + // shadow = {status == EditStepEnum.EDITED?'0px 3px 0px 0px rgba(55,144,215,0.18)':''} + background='#f3f3f3' /> ) : <> } { generateStatus == GenerateStatus.PENDING ? ( { - setTimeout(() => { - window.location.reload(); - }, 1000) - }} + desc="资料正在排队" + duration={generateEmainingTime} + handleCountDownOver={() => { + setTimeout(() => { + window.location.reload(); + }, 1000) + }} /> ) : <> } { generateStatus == GenerateStatus.GENERATING ? ( { - renderData(); - }} - handleCountDownOver={() => { - renderData(); - }} + desc="资料正在生成,点击刷新" + duration={generateEmainingTime} + handleClick={() => { + renderData(); + }} + handleCountDownOver={() => { + renderData(); + }} /> ) : <> @@ -358,45 +358,45 @@ export default function ProjEdit() { { generateStatus == GenerateStatus.FAILED ? ( { - setGenerateErrorModal(true); - console.log('反馈') - }} + isSuccess={false} + handleFeedback={() => { + setGenerateErrorModal(true); + console.log('反馈') + }} /> ) : <> } + process={generateStatus == GenerateStatus.SUCCESS ? Process.PROCESSING : Process.PENDING} + descTitle="资料下载"> { - window.open(`${Axios.defaults?.baseURL}/route/proj/download/apply/${pathParams.projId}`) - }} + desc="点击下载申请表" + canBtnClick={generateStatus == GenerateStatus.SUCCESS} + handleDownload={() => { + window.open(`${Axios.defaults?.baseURL}/route/proj/download/apply/${pathParams.projId}`) + }} /> { - window.open(`${Axios.defaults?.baseURL}/route/proj/download/manual/${pathParams.projId}`) - }} + desc="点击下载操作手册" + canBtnClick={generateStatus == GenerateStatus.SUCCESS} + handleDownload={() => { + window.open(`${Axios.defaults?.baseURL}/route/proj/download/manual/${pathParams.projId}`) + }} /> { - window.open(`${Axios.defaults?.baseURL}/route/proj/download/code-zip/${pathParams.projId}`) - }} + desc="点击下载代码压缩包" + canBtnClick={generateStatus == GenerateStatus.SUCCESS} + handleDownload={() => { + window.open(`${Axios.defaults?.baseURL}/route/proj/download/code-zip/${pathParams.projId}`) + }} /> { - window.open(`${Axios.defaults?.baseURL}/route/proj/download/code/${pathParams.projId}`) - }} + desc="点击下载代码文档" + canBtnClick={generateStatus == GenerateStatus.SUCCESS} + handleDownload={() => { + window.open(`${Axios.defaults?.baseURL}/route/proj/download/code/${pathParams.projId}`) + }} /> {/*
{setAiHelperModalOpen(true)}} - description={AI} + onClick={() => { setAiHelperModalOpen(true) }} + description={AI} >AI助手 { - post({ - messageApi, - url: `/api/proj/generate/proj-id/${pathParams.projId}`, - body: {}, - onSuccess() { - messageApi.success('提交成功'); - setIsGenerateModalOpen(false); - renderData(); - } - }) - }} - onCancel={() => { - setIsGenerateModalOpen(false); - }}> + okText="确定" + cancelText="取消" + open={isGenerateModalOpen} + onOk={() => { + post({ + messageApi, + url: `/api/proj/generate/proj-id/${pathParams.projId}`, + body: {}, + onSuccess() { + messageApi.success('提交成功'); + setIsGenerateModalOpen(false); + renderData(); + } + }) + }} + onCancel={() => { + setIsGenerateModalOpen(false); + }}>
点击“确定按钮”后,项目便无法再次修改,建议通过预览查看系统,确认无误后点击“确定按钮”。
{ - setGenerateErrorModal(false) - }} + title="出错信息" + okText="确定" + cancelText={false} + footer={false} + okButtonProps={{ + style: { + backgroundColor: 'var(--color-primary)', + } + }} + onCancel={() => { + setGenerateErrorModal(false) + }} > -

{generateErrorMsg}

+

{generateErrorMsg}

{ - setAiHelperModalOpen(false); - renderData() - }} + title="AI助手" + width={1200} + footer={false} + maskClosable={false} + destroyOnClose + onCancel={() => { + setAiHelperModalOpen(false); + renderData() + }} > }) diff --git a/src/route/proj/proj-edit.css b/src/route/proj/proj-edit.css index b35caa4..dfd1580 100644 --- a/src/route/proj/proj-edit.css +++ b/src/route/proj/proj-edit.css @@ -15,5 +15,4 @@ padding: 5px 0 15px 0; text-align: center; background-color: var(--color-light); - } diff --git a/src/util/AjaxUtils.ts b/src/util/AjaxUtils.ts index ca00b06..6603500 100644 --- a/src/util/AjaxUtils.ts +++ b/src/util/AjaxUtils.ts @@ -3,7 +3,8 @@ import type {MessageInstance} from "antd/es/message/interface"; export const Axios = axios; -axios.defaults.baseURL = 'http://192.168.0.163:7025/copyright'; +// axios.defaults.baseURL = 'http://192.168.0.163:7025/copyright'; +axios.defaults.baseURL = 'http://192.168.0.15:7025/copyright'; // axios.defaults.baseURL = '/copyright'; export const WebSocketBaseUrl: string = 'ws://192.168.0.163:7025/copyright'; // export const WebSocketBaseUrl: string = '/copyright';