This commit is contained in:
xixi 2024-07-15 16:58:47 +08:00
parent 3f02852844
commit 75c8a8a788
23 changed files with 1488 additions and 201 deletions

View File

@ -754,7 +754,7 @@ export default function BelongPeople(props: propsInfo) {
</Form> </Form>
</div> </div>
</div> </div>
<div style={{ display: props.isShow ? 'block' : 'none', marginTop: 10 }}> <div style={{ display: props.isShow ? 'block' : 'none', position:'absolute',right:0,bottom:10 }}>
<div className="belongPeopleModal-btn" style={{ display: 'flex', justifyContent: 'flex-end' }} > <div className="belongPeopleModal-btn" style={{ display: 'flex', justifyContent: 'flex-end' }} >
<Button onClick={() => { <Button onClick={() => {
props.closeModal() props.closeModal()

View File

@ -27,7 +27,13 @@ type ContactType = {
const { Search } = Input; const { Search } = Input;
const { Column } = Table; const { Column } = Table;
export default function ContactPeople() { export default function ContactPeople(props: any) {
const [applyConcatId, setApplyConcatId] = useState('') //联系人id
const [applyContactCsaNo, setapplyContactCsaNo] = useState('') //客服编号
const [applyContactEmail, setapplyContactEmail] = useState('') //联系人邮箱
const [applyContactName, setapplyContactName] = useState('') //联系人姓名
const [applyContactPhone, setapplyContactPhone] = useState('') //联系人手机
const [applyContactCompany, setapplyContactCompany] = useState('')
const [messageApi, contextHolder] = message.useMessage(); const [messageApi, contextHolder] = message.useMessage();
const [formContact] = Form.useForm<ContactType>() const [formContact] = Form.useForm<ContactType>()
const height = window.innerHeight - 200; const height = window.innerHeight - 200;
@ -73,6 +79,20 @@ export default function ContactPeople() {
} }
}) })
} }
// 联系人表格选择触发
const ContantRowSelection = {
// selectedRowKeys: React.Key[]
onChange: (selectedRowKeys: React.Key[], selectedRows: ContactDataType[]) => {
console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows);
setApplyConcatId(selectedRows[0].projContactId)
setapplyContactCsaNo(selectedRows[0].csaNo)
setapplyContactEmail(selectedRows[0].email)
setapplyContactName(selectedRows[0].name)
setapplyContactPhone(selectedRows[0].phone)
setapplyContactCompany(selectedRows[0].company)
},
};
// 点击创建联系热人获取随机客服 // 点击创建联系热人获取随机客服
const getCas = () => { const getCas = () => {
get({ get({
@ -174,7 +194,7 @@ export default function ContactPeople() {
}, []) }, [])
return ( return (
<div style={{ height: `${height - 175}px`, overflow: 'auto' }}> <div style={{ height: props.isShow ? `${height - 80}px`:`${height - 160}px`, overflow: 'auto', position: 'relative' }}>
{contextHolder} {contextHolder}
<div style={{ padding: '22px 15px 0 15px', background: 'var(--color-light)' }}> <div style={{ padding: '22px 15px 0 15px', background: 'var(--color-light)' }}>
<div style={{ padding: '14px 19px', background: '#F3F3F3', color: '#A3A3A3', fontSize: '14px' }}> <div style={{ padding: '14px 19px', background: '#F3F3F3', color: '#A3A3A3', fontSize: '14px' }}>
@ -194,10 +214,35 @@ export default function ContactPeople() {
<Search placeholder="请输入持有者名称搜索对应信息" onSearch={applicantPeopleSearch} style={{ width: '353px', height: '43px' }} /> <Search placeholder="请输入持有者名称搜索对应信息" onSearch={applicantPeopleSearch} style={{ width: '353px', height: '43px' }} />
</div> </div>
</div> </div>
<div className='showInfo' style={{ display: props.isShow ? 'block' : 'none' }}>
{applyContactName ? (
<div style={{display:'flex'}}>
<div style={{ marginRight: '22px' }}>:</div>
<div style={{ display: applyContactName == '' ? 'block' : 'none' }}></div>
<div style={{ display: applyContactName == '' ? 'none' : 'block' }}>
{applyContactName}/{applyContactPhone}{applyContactEmail ? '/' + applyContactEmail : ''}
</div>
</div>
) : (
<div style={{display:'flex'}}>
<div style={{ marginRight: '22px' }}>:</div>
<div style={{ display: props.concatPeopleInfo.applyContactName == '' ? 'block' : 'none' }}></div>
<div style={{ display: props.concatPeopleInfo.applyContactName == '' ? 'none' : 'block' }}>
{props.concatPeopleInfo.applyContactName}/{props.concatPeopleInfo.applyContactPhone}{props.concatPeopleInfo.applyContactEmail ? '/' + props.concatPeopleInfo.applyContactEmail : ''}
</div>
</div>
)}
</div>
<div className='belongPeople-bot'> <div className='belongPeople-bot'>
{/* 表格 lyp*/} {/* 表格 lyp*/}
<Table {props.isShow ? (<Table
rowSelection={{
type: 'radio',
...ContantRowSelection,
// selectedRowKeys: selectedKeys // 设置默认选中的行
}}
dataSource={tableContactData} dataSource={tableContactData}
pagination={{ pagination={{
@ -264,8 +309,100 @@ export default function ContactPeople() {
</Space> </Space>
)} )}
/> />
</Table> </Table>) : (<Table
dataSource={tableContactData}
pagination={{
defaultPageSize: 5, // 设置默认一页显示 5 条数据
}}
style={{ textAlign: 'center' }} // 设置表格内容居中显示
rowKey="projContactId" // 指定数据项的唯一标识符
>
<Column title="联系人" dataIndex="name" />
<Column title="联系人手机号" dataIndex="phone" />
<Column title="平台专属客服" dataIndex="csaNo" />
<Column title="所属公司" dataIndex="company"
render={(text) => (text !== '' ? text : '一')}
/>
{/* <Column title="实名认证状态" dataIndex="address" key="key" /> */}
<Column
title="操作"
render={(text, record: any) => (
<Space size="middle">
<a onClick={() => {
// alert(record.projOwnerId);
console.log('text:', text);
console.log('record:', record);
setContactId(record.projContactId)
setContactTitle('编辑联系人')
steIsContantOpen(true)
// formContact 表单赋值
formContact.setFieldsValue({
csaNo: record.csaNo,
name: record.name,
phone: record.phone,
email: record.email,
company: record.company
})
}}> </a>
<span style={{ color: '#3472EE' }}>|</span>
<a onClick={() => {
// alert(record.projOwnerId);
del({
messageApi,
url: `/api/proj-contact/remove/${record.projContactId}`,
onSuccess() {
messageApi.success('删除成功');
getProjContactList()
}
})
}}></a>
<span style={{ color: '#3472EE' }}>|</span>
<a onClick={() => {
setContactTitle('查看联系人')
steIsContantOpen(true)
formContact.setFieldsValue({
csaNo: record.csaNo,
name: record.name,
phone: record.phone,
email: record.email
})
}}></a>
</Space>
)}
/>
</Table>)}
</div>
</div>
<div style={{ display: props.isShow ? 'block' : 'none', position: 'absolute', right: 0, bottom: 10 }}>
<div className="belongPeopleModal-btn" style={{ display: 'flex', justifyContent: 'flex-end' }} >
<Button onClick={() => {
props.closeModal()
}}></Button>
<Button style={{
marginLeft: 20
}} type="primary"
onClick={() => {
props.setConcatPeopleInfo({
applyConcatId,
applyContactCsaNo,
applyContactEmail,
applyContactName,
applyContactPhone,
applyContactCompany
})
props.setConcatValue(applyContactName)
props.closeModal()
}}
></Button>
</div> </div>
</div> </div>
{/* 选择创建/编辑/查看联系人弹框 lyp*/} {/* 选择创建/编辑/查看联系人弹框 lyp*/}

View File

@ -368,21 +368,21 @@ export default function AiHelper(props: PropsType) {
setActiveTab('简介') setActiveTab('简介')
}} }}
> >
</div> </div>
<div className={activeTab == '详情' ? 'tabActive' : "aiTabBtn"} <div className={activeTab == '详情' ? 'tabActive' : "aiTabBtn"}
onClick={() => { onClick={() => {
setActiveTab('详情') setActiveTab('详情')
}} }}
> >
</div> </div>
<div className={activeTab == '模块' ? 'tabActive' : "aiTabBtn"} <div className={activeTab == '模块' ? 'tabActive' : "aiTabBtn"}
onClick={() => { onClick={() => {
setActiveTab('模块') setActiveTab('模块')
}} }}
> >
</div> </div>
</div> </div>

View File

@ -12,10 +12,10 @@ import {
WarningOutlined, WarningOutlined,
FolderOutlined FolderOutlined
} from '@ant-design/icons'; } from '@ant-design/icons';
import { Button, Dropdown, Tag, Modal } from 'antd'; import { Button, Dropdown, Tag, Modal, Carousel } from 'antd';
import { GenerateStatus, ProjChargeType } from "../../interfaces/proj/IProj.ts"; import { GenerateStatus, ProjChargeType } from "../../interfaces/proj/IProj.ts";
import { useNavigate } from "react-router-dom"; import { useNavigate } from "react-router-dom";
import { Axios, put } from "../../util/AjaxUtils.ts"; import { Axios, put, downloadUrl } from "../../util/AjaxUtils.ts";
import { useContext, useEffect, useState } from "react"; import { useContext, useEffect, useState } from "react";
import { IndexListContext } from "../../context/IndexListContext.ts"; import { IndexListContext } from "../../context/IndexListContext.ts";
import useMessage from "antd/es/message/useMessage"; import useMessage from "antd/es/message/useMessage";
@ -47,7 +47,7 @@ export default function CardProj(props:any ) {
const data = props.item; const data = props.item;
const [projId] = useState(data.projId) const [projId] = useState(data.projId)
const isShow = data.pay.chargeAdditionals.includes('PKG') const isShow = data.pay.chargeAdditionals.includes('PKG') || data.pay.charge.includes('ALL')
const [messageApi, messageContext] = useMessage(); const [messageApi, messageContext] = useMessage();
const [projCategoryId, setProjCategoryId] = useState(data.projCategoryId); const [projCategoryId, setProjCategoryId] = useState(data.projCategoryId);
@ -79,7 +79,7 @@ export default function CardProj(props:any ) {
const goEdit = () => { const goEdit = () => {
if (charge == ProjChargeType.ALL) { if (charge == ProjChargeType.ALL) {
nav(`/proj-edit/${data.projId}`); nav(`/proj-eall/${data.projId}`);
} else if (charge == ProjChargeType.FREE) { } else if (charge == ProjChargeType.FREE) {
nav(`/proj-efree/${data.projId}`); nav(`/proj-efree/${data.projId}`);
} else { } else {
@ -88,6 +88,8 @@ export default function CardProj(props:any ) {
} }
useEffect(() => { useEffect(() => {
console.log('查找图片', data);
const charge = props.item.pay.charge.split(':')[0]; const charge = props.item.pay.charge.split(':')[0];
let chargeName = ''; let chargeName = '';
if (charge == ProjChargeType.ALL) { if (charge == ProjChargeType.ALL) {
@ -112,7 +114,7 @@ export default function CardProj(props:any ) {
<div className='cpt-left'> <div className='cpt-left'>
<div className='dottedLine'></div> <div className='dottedLine'></div>
<div className='cpt-title' onClick={goEdit}>{data.projName}</div> <div className='cpt-title' onClick={goEdit}>{data.projName}</div>
<div className='cp-tag'> <div className='cp-tag' style={{ background: payCharge == '全托管' ? '#6bd2b4' : payCharge == '免费试用' ? '#ff9226' : payCharge == '写材料' ? '#5279f4' : '', color: '#fff' }}>
{payCharge} {payCharge}
</div> </div>
<div className='cp-num'> <div className='cp-num'>
@ -150,7 +152,21 @@ export default function CardProj(props:any ) {
</div> </div>
<div className='cp-bot'> <div className='cp-bot'>
<div className='cpb-left'> <div className='cpb-left'>
<img src={data.img} className='cpb-left-img' alt="" /> {/* lyp */}
<div className='cpb-left-img'>
<Carousel autoplay dots={false}>
<div>
<img src={downloadUrl(data.loginpage.loginpagePreviewImgs)} width={'249px'} height={'143px'} alt="" />
</div>
<div>
<img src={downloadUrl(data.codeTypePage.previewImgs)} width={'249px'} height={'143px'} alt="" />
</div>
</Carousel>
</div>
{/* <img src={downloadUrl(data.codeTypePage.previewImgs)} className='cpb-left-img' alt="" /> */}
<div className='cpbl-right'> <div className='cpbl-right'>
<div className='cpbl-money'> <div className='cpbl-money'>
<span className='money'>() : </span> <span className='money'>() : </span>
@ -158,7 +174,7 @@ export default function CardProj(props:any ) {
</div> </div>
<div className='cpbl-btn'> <div className='cpbl-btn'>
<div className='threeBtn' onClick={() => { <div className='threeBtn' onClick={() => {
if (data.generate.generateStatus == GenerateStatus.SUCCESS) { if (data.generate.generateStatus == GenerateStatus.SUCCESS || payCharge == '全托管') {
// nav(`/proj-edit/config-loginpage-show/${data.projId}`) // nav(`/proj-edit/config-loginpage-show/${data.projId}`)
setLoginPageShowOpne(true); setLoginPageShowOpne(true);
@ -171,7 +187,7 @@ export default function CardProj(props:any ) {
<div></div> <div></div>
</div> </div>
<div className='threeBtn' onClick={() => { <div className='threeBtn' onClick={() => {
if (data.generate.generateStatus == GenerateStatus.SUCCESS) { if (data.generate.generateStatus == GenerateStatus.SUCCESS || payCharge == '全托管') {
// nav(`/proj-edit/config-mod-list-show/${data.projId}`) // nav(`/proj-edit/config-mod-list-show/${data.projId}`)
setSoftwareManagementShowOpen(true) setSoftwareManagementShowOpen(true)
} else { } else {
@ -184,7 +200,7 @@ export default function CardProj(props:any ) {
<div>({data.projModCount})</div> <div>({data.projModCount})</div>
</div> </div>
<div className='threeBtn rightBit' onClick={() => { <div className='threeBtn rightBit' onClick={() => {
if (data.generate.generateStatus == GenerateStatus.SUCCESS) { if (data.generate.generateStatus == GenerateStatus.SUCCESS || payCharge == '全托管') {
// nav(`/proj-edit/config-menu-list-show/${data.projId}`) // nav(`/proj-edit/config-menu-list-show/${data.projId}`)
setDisplayOrderShowOpen(true); setDisplayOrderShowOpen(true);
} else { } else {

View File

@ -11,12 +11,12 @@ export default function CardProjDownload(props: IProjDownload) {
<div className="cpDown-option"> <div className="cpDown-option">
{ {
props.canBtnClick ? ( props.canBtnClick ? (
<a href="/#" className="cpDown-edit" onClick={(e) => { <a href="/#" className="cpDown-edit" style={{minWidth:30}} onClick={(e) => {
e.preventDefault(); e.preventDefault();
props.handleDownload(); props.handleDownload();
}}></a> }}></a>
) : ( ) : (
<a href="/#" className="cpDown-noedit" style={{ color: '#c2c2c2' }} onClick={(e) => { <a href="/#" className="cpDown-noedit" style={{ color: '#c2c2c2',minWidth:30 }} onClick={(e) => {
e.preventDefault(); e.preventDefault();
}}></a> }}></a>
) )

View File

@ -26,6 +26,7 @@ export default function CardProjEdit(props: IProjEdit) {
// props.handleEdit(); // props.handleEdit();
// }}>编辑</a> // }}>编辑</a>
// } // }
} }
return ( return (

View File

@ -1,5 +1,5 @@
.card-proj-download { .card-proj-download {
width: 309px; width: 95%;
padding: 20px 25px; padding: 20px 25px;
box-sizing: border-box; box-sizing: border-box;
@ -10,7 +10,7 @@
position: relative; position: relative;
} }
.card-proj-nodownload{ .card-proj-nodownload{
width: 309px; width: 95%;
padding: 20px 25px; padding: 20px 25px;
box-sizing: border-box; box-sizing: border-box;
background-color: #f3f3f3; background-color: #f3f3f3;

View File

@ -1,5 +1,5 @@
.card-proj-edit { .card-proj-edit {
width: 309px; width: 95%;
padding: 20px 25px; padding: 20px 25px;
box-sizing: border-box; box-sizing: border-box;
margin-bottom: 27px; margin-bottom: 27px;
@ -52,6 +52,8 @@
.card-proj-edit .option .edit { .card-proj-edit .option .edit {
color: var(--color-blue); color: var(--color-blue);
text-decoration:underline; text-decoration:underline;
min-width: 30px;
/* background-color: red; */
} }
.card-proj-edit .option .status { .card-proj-edit .option .status {
@ -63,6 +65,7 @@
transform: rotate(-45deg); transform: rotate(-45deg);
border-top: transparent; border-top: transparent;
border-right: transparent; border-right: transparent;
margin-top: 4px;
} }
.noEdit:hover{ .noEdit:hover{
cursor: not-allowed; cursor: not-allowed;

View File

@ -8,10 +8,10 @@ import { IListPage } from "../../interfaces/listpage/IListPage.ts";
import { IProj } from "../../interfaces/proj/IProj.ts"; import { IProj } from "../../interfaces/proj/IProj.ts";
// import NoData from "../../assets/no-data.png"; // import NoData from "../../assets/no-data.png";
import { useLocation } from 'react-router-dom'; import { useLocation } from 'react-router-dom';
import syminga from '../../static/homeimg/homeimga.png' // import syminga from '../../static/homeimg/homeimga.png'
import symingb from '../../static/homeimg/homeimgb.png' // import symingb from '../../static/homeimg/homeimgb.png'
import symingc from '../../static/homeimg/homeimgc.png' // import symingc from '../../static/homeimg/homeimgc.png'
import symingd from '../../static/homeimg/homeimgd.png' // import symingd from '../../static/homeimg/homeimgd.png'
import { getMenuActive } from '../../util/cache.ts'; import { getMenuActive } from '../../util/cache.ts';
// import gpsImg from '../../static/right/gps.png' // import gpsImg from '../../static/right/gps.png'
@ -29,8 +29,9 @@ export default function ListProj() {
// // setKeywords(state.keyword) // // setKeywords(state.keyword)
// } // }
const keywords = state ? state.keyword : '' const keywords = state ? state.keyword : ''
const name = state?state.name:''
// console.log(keywords); // console.log(keywords);
const images = [syminga,symingb,symingc,symingd] // const images = [syminga,symingb,symingc,symingd]
const listProjRef: MutableRefObject<HTMLDivElement | null> = useRef(null); const listProjRef: MutableRefObject<HTMLDivElement | null> = useRef(null);
const listRef: MutableRefObject<HTMLDivElement | null> = useRef(null); const listRef: MutableRefObject<HTMLDivElement | null> = useRef(null);
@ -55,6 +56,7 @@ export default function ListProj() {
page: currentPage, page: currentPage,
rows: 10, rows: 10,
keywords: keywords, keywords: keywords,
charge:name,
projCategoryId: indexListContext.category, projCategoryId: indexListContext.category,
status: indexListContext.status ? indexListContext.status : getMenuActive() status: indexListContext.status ? indexListContext.status : getMenuActive()
} }
@ -66,13 +68,13 @@ export default function ListProj() {
console.log('看看结果', data); console.log('看看结果', data);
setPage(data.page); setPage(data.page);
setTotal(data.total); setTotal(data.total);
// setProjs(data.rows); setProjs(data.rows);
const updatedArr = (data.rows).map((item, index) => ({ // const updatedArr = (data.rows).map((item, index) => ({
...item, // ...item,
img: images[index % images.length] // 利用取余来循环填充图片 // img: images[index % images.length] // 利用取余来循环填充图片
})); // }));
console.log('循环数组',updatedArr); // console.log('循环数组',updatedArr);
setProjs(updatedArr); // setProjs(updatedArr);
}, },
onFinally() { onFinally() {
@ -159,7 +161,7 @@ export default function ListProj() {
setTimeout(() => { setTimeout(() => {
setShowPage(true) setShowPage(true)
}, 0); }, 0);
}, [indexListContext.status,keywords]) }, [indexListContext.status,keywords,name])
useEffect(() => { useEffect(() => {
if (indexListContext.categorys) { if (indexListContext.categorys) {

View File

@ -0,0 +1,27 @@
import React, { useEffect } from 'react'
import './scrollAd.css'
export default function ScrollAd() {
useEffect(() => {
const scrollInterval = setInterval(() => {
const adContainer = document.getElementById('scrolling-ad-container');
if (adContainer) {
adContainer.scrollLeft += 1; // 每次滚动的距离
if (adContainer.scrollLeft % adContainer.scrollWidth === 0) {
clearInterval(scrollInterval); // 滚动到末尾时停止滚动
}
}
}, 50); // 滚动速度,单位毫秒
return () => clearInterval(scrollInterval); // 组件卸载时清除定时器
}, []);
return (
<div id="scrolling-ad-container" className="scrolling-ad-container">
<div className="scrolling-ad-content">
广广广广广广广广广广广广广广
</div>
</div>
)
}

View File

@ -0,0 +1,28 @@
.scrolling-ad-container {
overflow: hidden; /* 隐藏超出盒子的部分 */
white-space: nowrap; /* 内容不换行 */
position: relative; /* 使子元素的动画定位参考于此 */
padding: 10px; /* 内容内边距 */
width: 100%; /* 盒子的宽度 */
height: 30px; /* 盒子的高度 */
display: flex;
align-items: center; /* 垂直居中对齐文字 */
box-sizing: border-box; /* 包含内边距和边框 */
}
.scrolling-ad-content {
display: inline-block;
padding-left: 100%; /* 确保广告从盒子外开始滚动 */
animation: scrollLeft 10s linear infinite; /* 滚动动画持续时间为10秒线性匀速无限循环 */
}
@keyframes scrollLeft {
0% {
transform: translateX(0); /* 从盒子的右边开始 */
}
100% {
transform: translateX(-100%); /* 向左移动到盒子的左边 */
}
}

View File

@ -1,12 +1,16 @@
import './step-proj-edit.css'; import './step-proj-edit.css';
import { IStepProj, Process } from "../../interfaces/step/IStepProj.ts"; import { IStepProj, Process } from "../../interfaces/step/IStepProj.ts";
// import { CheckOutlined } from "@ant-design/icons"; // import { CheckOutlined } from "@ant-design/icons";
import { useEffect } from 'react'; import { useEffect, useState, } from 'react';
import { useLocation } from 'react-router-dom';
export default function StepProjEdit(props: IStepProj) { export default function StepProjEdit(props: IStepProj) {
const location = useLocation()
const [allShow, setAllShow] = useState(false)
useEffect(() => { useEffect(() => {
console.log(props); // console.log(props);
// location.pathname.includes('/proj-eall')
console.log('路由', location.pathname);
setAllShow(location.pathname.includes('/proj-eall') ? true : false)
}, []) }, [])
const height = window.innerHeight - 390; const height = window.innerHeight - 390;
// 状态值 已完成:Process.COMPLETE 进行中: Process.PROCESSING 未操作:Process.PENDING // 状态值 已完成:Process.COMPLETE 进行中: Process.PROCESSING 未操作:Process.PENDING
@ -96,11 +100,13 @@ export default function StepProjEdit(props: IStepProj) {
} }
return ( return (
<div className="step-proj"> <div className="step-proj" style={{width:allShow?'19%':'21%'}}>
<div className="step" > <div className="step" >
{renderStepNo()} {renderStepNo()}
{/* {renderStepDesc()} */} {/* {renderStepDesc()} */}
<div style={{display:allShow?'none':'block'}}>
{renderStepLine()} {renderStepLine()}
</div>
<div className='downBox'></div> <div className='downBox'></div>
</div> </div>
<div className="step-card" style={{ maxHeight: `${height - 20}px` }}> <div className="step-card" style={{ maxHeight: `${height - 20}px` }}>

View File

@ -1,5 +1,7 @@
.step-proj { .step-proj {
width: 317px; /* width: 317px; */
width: 21%;
/* background: skyblue; */
position: relative; position: relative;
/* overflow: scroll; */ /* overflow: scroll; */
} }
@ -14,7 +16,7 @@
} }
.step-proj .step { .step-proj .step {
width: 309px; width: 100%;
height: 56px; height: 56px;
/* background-color: rgb(248, 213, 219); */ /* background-color: rgb(248, 213, 219); */
margin-top: 10px; margin-top: 10px;
@ -27,7 +29,8 @@
/* Top 状态:已完成 开始---------------------------------------------------------------*/ /* Top 状态:已完成 开始---------------------------------------------------------------*/
.step-proj .step .complete-one { .step-proj .step .complete-one {
width: 309px; /* width: 309px; */
width: 100%;
height: 56px; height: 56px;
/* background-color: pink; */ /* background-color: pink; */
display: flex; display: flex;
@ -45,12 +48,12 @@
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
margin-left: 44px; margin-left: 11%;
} }
/* 已完成状态第一个序号 */ /* 已完成状态第一个序号 */
.step-proj .step .complete-one .complete-num { .step-proj .step .complete-one .complete-num {
margin-left: 16px; margin-left: 8%;
} }
@ -60,16 +63,18 @@
font-weight: 700; font-weight: 700;
font-size: 16px; font-size: 16px;
color: #FFFFFF; color: #FFFFFF;
margin-left: 47px; margin-left: 15%;
} }
/* 已完成状态第一个标题 */ /* 已完成状态第一个标题 */
.step-proj .step .complete-one .complete-text { .step-proj .step .complete-one .complete-text {
margin-left: 61px; margin-left: 23%;
} }
.step-proj .step .complete-two { .step-proj .step .complete-two {
width: 309px; /* width: 309px; */
width: 100%;
height: 56px; height: 56px;
/* background-color: pink; */ /* background-color: pink; */
display: flex; display: flex;
@ -79,7 +84,9 @@
} }
.step-proj .step .complete-three { .step-proj .step .complete-three {
width: 309px; /* width: 309px; */
width: 100%;
height: 56px; height: 56px;
/* background-color: pink; */ /* background-color: pink; */
display: flex; display: flex;
@ -89,7 +96,9 @@
} }
.step-proj .step .complete-four { .step-proj .step .complete-four {
width: 309px; /* width: 309px; */
width: 100%;
height: 56px; height: 56px;
/* background-color: pink; */ /* background-color: pink; */
display: flex; display: flex;
@ -99,11 +108,11 @@
} }
/* 已完成状态连接线 */ /* 已完成状态连接线 */
.step-proj .step .setLine { .step-proj .step .setLine {
width: 49px; width: 10%;
height: 22px; height: 22px;
background-color: pink; background-color: pink;
position: absolute; position: absolute;
right: -67px; right: -15%;
top: 17px; top: 17px;
} }
.step-proj .step .complete-oneLine{ .step-proj .step .complete-oneLine{
@ -125,7 +134,9 @@
/* Top 状态:进行中 开始----------------------------------------------------------- */ /* Top 状态:进行中 开始----------------------------------------------------------- */
.step-proj .step .processing-one { .step-proj .step .processing-one {
width: 309px; /* width: 309px; */
width: 100%;
height: 56px; height: 56px;
/* background-color: pink; */ /* background-color: pink; */
display: flex; display: flex;
@ -135,7 +146,9 @@
} }
.step-proj .step .processing-two { .step-proj .step .processing-two {
width: 309px; /* width: 309px; */
width: 100%;
height: 56px; height: 56px;
/* background-color: pink; */ /* background-color: pink; */
display: flex; display: flex;
@ -145,7 +158,9 @@
} }
.step-proj .step .processing-three { .step-proj .step .processing-three {
width: 309px; /* width: 309px; */
width: 100%;
height: 56px; height: 56px;
/* background-color: pink; */ /* background-color: pink; */
display: flex; display: flex;
@ -155,7 +170,9 @@
} }
.step-proj .step .processing-four { .step-proj .step .processing-four {
width: 309px; width: 100%;
/* width: 309px; */
height: 56px; height: 56px;
/* background-color: pink; */ /* background-color: pink; */
display: flex; display: flex;
@ -168,7 +185,7 @@
height: 21px; height: 21px;
background: #FFFFFF; background: #FFFFFF;
border-radius: 50%; border-radius: 50%;
margin-left: 46px; margin-left: 18%;
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
@ -183,7 +200,7 @@
font-weight: 700; font-weight: 700;
font-size: 16px; font-size: 16px;
color: #71757E; color: #71757E;
margin-left: 47px; margin-left: 15%;
} }
/* Top 状态:进行中 结束----------------------------------------------------------- */ /* Top 状态:进行中 结束----------------------------------------------------------- */
@ -193,9 +210,12 @@
/* Top 状态:未操作 开始 ------------------------------------------------------------ */ /* Top 状态:未操作 开始 ------------------------------------------------------------ */
.step-proj .step .pending { .step-proj .step .pending {
width: 309px; width: 309px;
width: 100%;
height: 56px; height: 56px;
display: flex; display: flex;
align-items: center; align-items: center;
/* background: pink; */
background: url('../../static/editPro/no.png'); background: url('../../static/editPro/no.png');
background-size: 100% 100%; background-size: 100% 100%;
} }
@ -205,7 +225,7 @@
height: 21px; height: 21px;
background: #FFFFFF; background: #FFFFFF;
border-radius: 50%; border-radius: 50%;
margin-left: 46px; margin-left: 18%;
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
@ -220,7 +240,7 @@
font-weight: 700; font-weight: 700;
font-size: 16px; font-size: 16px;
color: #71757E; color: #71757E;
margin-left: 47px; margin-left: 15%;
} }
.step-proj .step .no-line{ .step-proj .step .no-line{
background:url('../../static/editPro/lineno.png'); background:url('../../static/editPro/lineno.png');

View File

@ -36,12 +36,23 @@ export default function Head() {
authorId: '', authorId: '',
authorProvinceCity: '' authorProvinceCity: ''
}) })
const setValue = () => { const setValue = () => {
// console.log(value); // console.log(value);
}
const setConcatValue = ()=> {
} }
// 联系人弹窗 // 联系人弹窗
const [contactModal, setContactModal] = useState(false) const [contactModal, setContactModal] = useState(false)
const [concatPeopleInfo,setConcatPeopleInfo] = useState({
applyConcatId:'',
applyContactCsaNo:'',
applyContactEmail:'',
applyContactName:'',
applyContactPhone:'',
applyContactCompany:''
})
useEffect(() => { useEffect(() => {
reloadUser(messageApi, globalDispatchContext).then((data) => { reloadUser(messageApi, globalDispatchContext).then((data) => {
if (!data.hasUserInfo) { if (!data.hasUserInfo) {
@ -278,7 +289,7 @@ export default function Head() {
}}> }}>
<ContactPeople ></ContactPeople> <ContactPeople isShow={false} closeModal = {()=>{setContactModal(false)} } setConcatPeopleInfo={setConcatPeopleInfo} concatPeopleInfo={concatPeopleInfo} setConcatValue={setConcatValue}></ContactPeople>
</Modal> </Modal>
<Spin tip="正在提交..." spinning={loading} fullscreen /> <Spin tip="正在提交..." spinning={loading} fullscreen />
{contextHolder} {contextHolder}

View File

@ -8,7 +8,7 @@ import MenuWithTopButton from "../../components/menu/MenuWithTopButton.tsx";
import MenuTreeWithTopButton from "../../components/menu/MenuTreeWithTopButton.tsx"; import MenuTreeWithTopButton from "../../components/menu/MenuTreeWithTopButton.tsx";
// import ListProj from "../../components/list/ListProj.tsx"; // import ListProj from "../../components/list/ListProj.tsx";
// import ListProjAgent from "../../components/list/ListProjAgent.tsx"; // import ListProjAgent from "../../components/list/ListProjAgent.tsx";
import { MenuProps } from 'antd'; import { MenuProps,Select } from 'antd';
import { import {
IndexListContext, IndexListContext,
IndexListDataType, IndexListDataType,
@ -29,8 +29,9 @@ const { Search } = Input;
export default function Index() { export default function Index() {
// 关键字
// const [keywords, setKeywords] = useState(''); const [keywords, setKeywords] = useState('');
const [type,setType] = useState('')
// const indexListContext = useContext(IndexListContext); // const indexListContext = useContext(IndexListContext);
@ -195,81 +196,119 @@ export default function Index() {
// const [newname,setNewname] = useState('') // const [newname,setNewname] = useState('')
const [pathArray, setPathArray] = useState<any>([]) const [pathArray, setPathArray] = useState<any>([])
const [showSearchBox,setShowSearchBox] = useState(true)
useEffect(() => { useEffect(() => {
// const nowname = sessionStorage.getItem('now') // const nowname = sessionStorage.getItem('now')
console.log('路由名字', location.pathname); console.log('路由名字', location.pathname);
if (location.pathname.includes('/home')) { if (location.pathname.includes('/home')) {
setNow('首页') setNow('首页')
setPathArray([{ title: '首页' }]) setPathArray([{ title: '首页' }])
setShowSearchBox(true)
} else if (location.pathname.includes('/proj-create')) { } else if (location.pathname.includes('/proj-create')) {
setShowSearchBox(false)
setNow('创建项目') setNow('创建项目')
setPathArray([{ title: <Link to={'/home'}></Link> }, { title: '创建项目' }]) setPathArray([{ title: <Link to={'/home'}></Link> }, { title: '创建项目' }])
// /config-mod-list /config-menu-list /config-mod-show // /config-mod-list /config-menu-list /config-mod-show
} else if (location.pathname.includes('/proj-edit') && !location.pathname.includes('/config-mod-show') && !location.pathname.includes('/config-mod-edit') && !location.pathname.includes('/step') && !location.pathname.includes('/config-loginpage') && !location.pathname.includes('/config-mod-save') && !location.pathname.includes('/config-mod-list') && !location.pathname.includes('/config-menu-list')) { } else if (location.pathname.includes('/proj-edit') && !location.pathname.includes('/config-mod-show') && !location.pathname.includes('/config-mod-edit') && !location.pathname.includes('/step') && !location.pathname.includes('/config-loginpage') && !location.pathname.includes('/config-mod-save') && !location.pathname.includes('/config-mod-list') && !location.pathname.includes('/config-menu-list')) {
setNow('编辑项目') setNow('编辑项目')
setShowSearchBox(false)
// setEditname(location.pathname) // setEditname(location.pathname)
setPathArray([{ title: <Link to={'/home'}></Link> }, { title: <Link to={'/proj-create'}></Link> }, { title: '编辑项目' }]) setPathArray([{ title: <Link to={'/home'}></Link> }, { title: <Link to={'/proj-create'}></Link> }, { title: '编辑项目' }])
} else if (location.pathname.includes('/proj-new')) { } else if (location.pathname.includes('/proj-new')) {
setNow('新建项目') setNow('新建项目')
setShowSearchBox(false)
// setNewname(location.pathname) // setNewname(location.pathname)
setPathArray([{ title: <Link to={'/home'}></Link> }, { title: <Link to={'/proj-create'}></Link> }, { title: '新建项目' }]) setPathArray([{ title: <Link to={'/home'}></Link> }, { title: <Link to={'/proj-create'}></Link> }, { title: '新建项目' }])
} else if (location.pathname.includes('/proj-efree')) { } else if (location.pathname.includes('/proj-efree')) {
setNow('编辑项目') setNow('编辑项目')
setShowSearchBox(false)
// setNewname(location.pathname) // setNewname(location.pathname)
setPathArray([{ title: <Link to={'/home'}></Link> }, { title: <Link to={'/proj-create'}></Link> }, { title: '编辑项目' }]) setPathArray([{ title: <Link to={'/home'}></Link> }, { title: <Link to={'/proj-create'}></Link> }, { title: '编辑项目' }])
} else if (location.pathname.includes('/proj-eall')) { } else if (location.pathname.includes('/proj-eall')) {
setNow('编辑项目') setNow('编辑项目')
setShowSearchBox(false)
// setNewname(location.pathname) // setNewname(location.pathname)
setPathArray([{ title: <Link to={'/home'}></Link> }, { title: <Link to={'/proj-create'}></Link> }, { title: '编辑项目' }]) setPathArray([{ title: <Link to={'/home'}></Link> }, { title: <Link to={'/proj-create'}></Link> }, { title: '编辑项目' }])
} else if (location.pathname.includes('/proj-edit/step1')) { } else if (location.pathname.includes('/proj-edit/step1')) {
setNow('标题简介') setNow('标题简介')
setShowSearchBox(false)
// setNewname(location.pathname) // setNewname(location.pathname)
setPathArray([{ title: <Link to={'/home'}></Link> }, { title: <Link to={'/proj-create'}></Link> }, { title: <a onClick={() => { nav(-1) }}></a> }, { title: '标题简介' }]) setPathArray([{ title: <Link to={'/home'}></Link> }, { title: <Link to={'/proj-create'}></Link> }, { title: <a onClick={() => { nav(-1) }}></a> }, { title: '标题简介' }])
} else if (location.pathname.includes('/proj-edit/step2')) { } else if (location.pathname.includes('/proj-edit/step2')) {
setNow('标题简介') setNow('标题简介')
setShowSearchBox(false)
// setNewname(location.pathname) // setNewname(location.pathname)
setPathArray([{ title: <Link to={'/home'}></Link> }, { title: <Link to={'/proj-create'}></Link> }, { title: <a onClick={() => { nav(-1) }}></a> }, { title: '基本信息' }]) setPathArray([{ title: <Link to={'/home'}></Link> }, { title: <Link to={'/proj-create'}></Link> }, { title: <a onClick={() => { nav(-1) }}></a> }, { title: '基本信息' }])
} else if (location.pathname.includes('/proj-edit/config-loginpage')) { } else if (location.pathname.includes('/proj-edit/config-loginpage')) {
setNow('登录界面设置') setNow('登录界面设置')
setShowSearchBox(false)
// setNewname(location.pathname) // setNewname(location.pathname)
setPathArray([{ title: <Link to={'/home'}></Link> }, { title: <Link to={'/proj-create'}></Link> }, { title: <a onClick={() => { nav(-1) }}></a> }, { title: '登录界面设置' }]) setPathArray([{ title: <Link to={'/home'}></Link> }, { title: <Link to={'/proj-create'}></Link> }, { title: <a onClick={() => { nav(-1) }}></a> }, { title: '登录界面设置' }])
} else if (location.pathname.includes('/proj-edit/config-mod-list')) { } else if (location.pathname.includes('/proj-edit/config-mod-list')) {
setNow('系统菜单管理') setNow('系统菜单管理')
setShowSearchBox(false)
// setNewname(location.pathname) // setNewname(location.pathname)
setPathArray([{ title: <Link to={'/home'}></Link> }, { title: <Link to={'/proj-create'}></Link> }, { title: <a onClick={() => { nav(-1) }}></a> }, { title: '系统菜单管理' }]) setPathArray([{ title: <Link to={'/home'}></Link> }, { title: <Link to={'/proj-create'}></Link> }, { title: <a onClick={() => { nav(-1) }}></a> }, { title: '系统菜单管理' }])
} else if (location.pathname.includes('/proj-edit/config-menu-list')) { } else if (location.pathname.includes('/proj-edit/config-menu-list')) {
setNow('系统菜单顺序') setNow('系统菜单顺序')
setShowSearchBox(false)
// setNewname(location.pathname) // setNewname(location.pathname)
setPathArray([{ title: <Link to={'/home'}></Link> }, { title: <Link to={'/proj-create'}></Link> }, { title: <a onClick={() => { nav(-1) }}></a> }, { title: '系统菜单顺序' }]) setPathArray([{ title: <Link to={'/home'}></Link> }, { title: <Link to={'/proj-create'}></Link> }, { title: <a onClick={() => { nav(-1) }}></a> }, { title: '系统菜单顺序' }])
} else if (location.pathname.includes('/step3')) { } else if (location.pathname.includes('/step3')) {
setNow('软件功能特点') setNow('软件功能特点')
setShowSearchBox(false)
// setNewname(location.pathname) // setNewname(location.pathname)
setPathArray([{ title: <Link to={'/home'}></Link> }, { title: <Link to={'/proj-create'}></Link> }, { title: <a onClick={() => { nav(-1) }}></a> }, { title: '软件功能特点' }]) setPathArray([{ title: <Link to={'/home'}></Link> }, { title: <Link to={'/proj-create'}></Link> }, { title: <a onClick={() => { nav(-1) }}></a> }, { title: '软件功能特点' }])
} else if (location.pathname.includes('/proj-edit/config-mod-save')) { } else if (location.pathname.includes('/proj-edit/config-mod-save')) {
setNow('添加菜单') setNow('添加菜单')
setShowSearchBox(false)
setPathArray([{ title: <Link to={'/home'}></Link> }, { title: <Link to={'/proj-create'}></Link> }, { title: <a onClick={() => { nav(-1) }}></a> }, { title: '添加菜单' }]) setPathArray([{ title: <Link to={'/home'}></Link> }, { title: <Link to={'/proj-create'}></Link> }, { title: <a onClick={() => { nav(-1) }}></a> }, { title: '添加菜单' }])
} else if (location.pathname.includes('/proj-edit/config-mod-edit')) { } else if (location.pathname.includes('/proj-edit/config-mod-edit')) {
setNow('编辑菜单') setNow('编辑菜单')
setShowSearchBox(false)
setPathArray([{ title: <Link to={'/home'}></Link> }, { title: <Link to={'/proj-create'}></Link> }, { title: <a onClick={() => { nav(-2) }}></a> }, { title: <a onClick={() => { nav(-1) }}></a> }, { title: '编辑菜单' }]) setPathArray([{ title: <Link to={'/home'}></Link> }, { title: <Link to={'/proj-create'}></Link> }, { title: <a onClick={() => { nav(-2) }}></a> }, { title: <a onClick={() => { nav(-1) }}></a> }, { title: '编辑菜单' }])
// /config-mod-edit /config-mod-show // /config-mod-edit /config-mod-show
} else if (location.pathname.includes('/proj-edit/config-mod-show')) { } else if (location.pathname.includes('/proj-edit/config-mod-show')) {
setNow('查看菜单') setNow('查看菜单')
setShowSearchBox(false)
setPathArray([{ title: <Link to={'/home'}></Link> }, { title: <Link to={'/proj-create'}></Link> }, { title: <a onClick={() => { nav(-2) }}></a> }, { title: <a onClick={() => { nav(-1) }}></a> }, { title: '查看菜单' }]) setPathArray([{ title: <Link to={'/home'}></Link> }, { title: <Link to={'/proj-create'}></Link> }, { title: <a onClick={() => { nav(-2) }}></a> }, { title: <a onClick={() => { nav(-1) }}></a> }, { title: '查看菜单' }])
// /config-mod-edit // /config-mod-edit
} else if (location.pathname.includes('/product-release')) { } else if (location.pathname.includes('/product-release')) {
setNow('首页') setNow('首页')
setShowSearchBox(false)
setPathArray([{ title: '首页' }]) setPathArray([{ title: '首页' }])
// /config-mod-edit /product-release /transaction-order // /config-mod-edit /product-release /transaction-order
} else if (location.pathname.includes(' /transaction-order')) { } else if (location.pathname.includes(' /transaction-order')) {
setNow('首页') setNow('首页')
setShowSearchBox(false)
setPathArray([{ title: '首页' }]) setPathArray([{ title: '首页' }])
// /config-mod-edit /product-release /transaction-order // /config-mod-edit /product-release /transaction-order
} else if (location.pathname.includes(' /copyright-goods')) { } else if (location.pathname.includes(' /copyright-goods')) {
setNow('首页') setNow('首页')
setShowSearchBox(false)
setPathArray([{ title: '首页' }]) setPathArray([{ title: '首页' }])
// /config-mod-edit /product-release /transaction-order // /config-mod-edit /product-release /transaction-order
} else if (location.pathname.includes(' /trading-goods')) { } else if (location.pathname.includes(' /trading-goods')) {
setNow('首页') setNow('首页')
setShowSearchBox(false)
setPathArray([{ title: '首页' }]) setPathArray([{ title: '首页' }])
// /config-mod-edit /product-release /transaction-order // /config-mod-edit /product-release /transaction-order
} }
@ -296,9 +335,11 @@ export default function Index() {
const handleSearch = (value: string) => { const handleSearch = (value: string) => {
console.log(value); console.log(value);
setKeywords(value)
nav('/home', { nav('/home', {
state: { state: {
keyword: value keyword: value,
name:type
} }
}) })
} }
@ -348,7 +389,7 @@ export default function Index() {
<div>:{now}</div> <div>:{now}</div>
</div> </div>
<div className='line' style={{ <div className='line' style={{
display: location.pathname.includes('/home') ? 'block' : 'none', display:showSearchBox ? 'block' : 'none',
}} ></div> }} ></div>
<div <div
@ -357,14 +398,37 @@ export default function Index() {
height: 23, height: 23,
marginLeft: 33, marginLeft: 33,
marginRight: 31, marginRight: 31,
display: location.pathname.includes('/home') ? 'none' : 'block' display: showSearchBox ? 'none' : 'block'
}} }}
></div> ></div>
<Search placeholder="输入项目名称" onSearch={handleSearch} style={{ <Search placeholder="输入项目名称" onSearch={handleSearch} style={{
width: '253px', width: '253px',
height: '31px', height: '31px',
display: location.pathname.includes('/home') ? 'block' : 'none' display: showSearchBox ? 'block' : 'none'
}} /> }} />
<Select
style={{ height: '31px', width: '183px',marginLeft:20, display: showSearchBox ? 'block' : 'none' }}
onChange={(value: string) => {
// console.log(`selected ${value}`);
setType(value)
// alert(`selected ${value}`)
// lyp
nav('/home', {
state: {
keyword: keywords,
name:value
}
})
}}
options={[
{ value: '', label: '全部类型' },
{ value: 'FREE', label: '免费试用' },
{ value: 'MATERIAL', label: '写材料' },
{ value: 'ALL', label: '全托管' },
]}
defaultValue=""
/>
<div style={{ <div style={{
width: '253px', width: '253px',
height: '31px', height: '31px',

View File

@ -1,12 +1,17 @@
import './proj-create.css' import './proj-create.css'
import { useNavigate } from "react-router-dom"; import { useNavigate } from "react-router-dom";
import { message } from "antd"; import { message } from "antd";
import {
CloseOutlined
} from '@ant-design/icons';
import CardProjType from "../../components/card/CardProjType.tsx"; import CardProjType from "../../components/card/CardProjType.tsx";
import { import {
// IProjCharge, // IProjCharge,
ProjAdditionalType, ProjChargeType } from "../../interfaces/proj/IProj.ts"; ProjAdditionalType, ProjChargeType
} from "../../interfaces/proj/IProj.ts";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import { get } from "../../util/AjaxUtils.ts"; import { get } from "../../util/AjaxUtils.ts";
import ScrollAd from '../../components/scrollAD/ScrollAd.tsx'
// import { Link } from "react-router-dom"; // import { Link } from "react-router-dom";
export default function ProjCreate() { export default function ProjCreate() {
@ -34,6 +39,7 @@ export default function ProjCreate() {
const [freeCount, setFreeCount] = useState(0) //免费次数 const [freeCount, setFreeCount] = useState(0) //免费次数
const nav = useNavigate(); const nav = useNavigate();
const height = window.innerHeight - 170; const height = window.innerHeight - 170;
const [show,setShow] = useState(true) //是否显示广告
useEffect(() => { useEffect(() => {
get<any>({ get<any>({
messageApi: messageApi, messageApi: messageApi,
@ -59,7 +65,19 @@ export default function ProjCreate() {
< > < >
{contextHolder} {contextHolder}
<div style={{}}> <div style={{}}>
<div className="proj-create" style={{ height: `${height}px`, overflow: 'auto' }}> <div className="proj-create" style={{ height: `${height}px`, overflow: 'auto', position: 'relative' }}>
<div style={{ position: 'absolute', top: 0, left: 0, width: '100%', background: 'rgba(0, 0, 0, 0.1)' ,display:show?'block':'none'}}>
<div style={{display:'flex',justifyContent:'space-between',alignItems:'center'}}>
<div style={{width:'100%'}}>
<ScrollAd></ScrollAd>
</div>
<div style={{width:20,fontWeight:700,cursor:'pointer'}} onClick={()=>{
setShow(false)
}}>
<CloseOutlined />
</div>
</div>
</div>
<CardProjType <CardProjType
head={'全托'} head={'全托'}
bodyLineArray={[ bodyLineArray={[

File diff suppressed because it is too large Load Diff

View File

@ -359,6 +359,7 @@ export default function ProjEdit() {
isEditStepEdited && isConfigEdited ? ( isEditStepEdited && isConfigEdited ? (
<CardProjJump title="预览系统" <CardProjJump title="预览系统"
desc="点击查看预览系统" desc="点击查看预览系统"
canBtnClick={true}
handleJump={() => { handleJump={() => {
window.open(`${Axios.defaults?.baseURL}/${previewUrl}`, '_blank') window.open(`${Axios.defaults?.baseURL}/${previewUrl}`, '_blank')
}} }}
@ -453,18 +454,18 @@ export default function ProjEdit() {
window.open(`${Axios.defaults?.baseURL}/route/proj/download/manual/${pathParams.projId}`) window.open(`${Axios.defaults?.baseURL}/route/proj/download/manual/${pathParams.projId}`)
}} }}
/> />
<CardProjDownload title="代码压缩包" {/* <CardProjDownload title=""
desc="点击下载代码压缩包" desc="点击下载代码压缩包"
canBtnClick={generateStatus == GenerateStatus.SUCCESS} canBtnClick={generateStatus == GenerateStatus.SUCCESS}
handleDownload={() => { handleDownload={() => {
window.open(`${Axios.defaults?.baseURL}/route/proj/download/code-zip/${pathParams.projId}`) window.open(`${Axios.defaults?.baseURL}/route/proj/download/code-zip/${pathParams.projId}`)
}} }}
/> /> */}
{/* <CardProjDownload title="" <CardProjDownload title="源代码"
desc="点击下载代码文档" desc="点击下载代码"
canBtnClick={false} canBtnClick={false}
handleDownload={() => { }} handleDownload={() => { }}
/> */} />
{/* <CardProjJump title="" {/* <CardProjJump title=""
desc="到软著代理完成软著申请" desc="到软著代理完成软著申请"
canBtnClick={false} canBtnClick={false}

View File

@ -1,6 +1,6 @@
import './proj-new.css'; import './proj-new.css';
import { useNavigate, useParams, useSearchParams } from "react-router-dom"; import { useNavigate, useParams, useSearchParams } from "react-router-dom";
import { Button, Flex, Form, Input, message, Modal, Spin, Checkbox } from "antd"; import { Button, Flex, Form, Input, message, Modal, Spin, Checkbox, DatePicker } from "antd";
import { useContext, useEffect, useState } from "react"; import { useContext, useEffect, useState } from "react";
import { get, post } from "../../util/AjaxUtils.ts"; import { get, post } from "../../util/AjaxUtils.ts";
// import {GlobalContext} from "../../context/GlobalContext.ts"; // import {GlobalContext} from "../../context/GlobalContext.ts";
@ -8,17 +8,23 @@ import {
// IProjCharge, // IProjCharge,
ProjAdditionalType, ProjChargeType ProjAdditionalType, ProjChargeType
} from "../../interfaces/proj/IProj.ts"; } from "../../interfaces/proj/IProj.ts";
import locale from 'antd/es/date-picker/locale/zh_CN';
import { GlobalDispatchContext, reloadUser } from "../../context/GlobalContext.ts"; import { GlobalDispatchContext, reloadUser } from "../../context/GlobalContext.ts";
import BelongPeople from '../../components/BelongPeople/BelongPeople.tsx' import BelongPeople from '../../components/BelongPeople/BelongPeople.tsx'
import ContactPeople from '../../components/ContactPeople/ContactPeople.tsx'
import dayjs from 'dayjs';
// const { TextArea } = Input; // const { TextArea } = Input;
type ProjInfo = { type ProjInfo = {
projName: string; projName: string;
projIntroduction: string; projIntroduction: string;
belongPeople: string belongPeople: string;
contacts: string;
projDevCompleteDate: string;
}; };
export default function ProjNew() { export default function ProjNew() {
// const globalContext = useContext(GlobalContext); // const globalContext = useContext(GlobalContext);
const dateFormat = 'YYYY年MM月DD日';
const globalDispatchContext = useContext(GlobalDispatchContext); const globalDispatchContext = useContext(GlobalDispatchContext);
const nav = useNavigate(); const nav = useNavigate();
const pathParams = useParams(); const pathParams = useParams();
@ -33,14 +39,16 @@ export default function ProjNew() {
const [projInfo, setProjInfo] = useState<ProjInfo>({ const [projInfo, setProjInfo] = useState<ProjInfo>({
projName: '', projName: '',
projIntroduction: '', projIntroduction: '',
belongPeople: '' belongPeople: '',
contacts: '',
projDevCompleteDate: '',
}); });
const [form] = Form.useForm<ProjInfo>(); const [form] = Form.useForm<ProjInfo>();
// 所属者弹窗 // 所属者弹窗
const [belongModal, setBelongModal] = useState(false) const [belongModal, setBelongModal] = useState(false)
// 联系人弹窗
const [concatModal, setConcatModal] = useState(false)
// const [belongPeopleName ,setBelongPeopleName] = useState('') // const [belongPeopleName ,setBelongPeopleName] = useState('')
// // 暂存一个信息过度
// const [newBelongPeopleName,setNewBelongPeopleName] = useState('')
const [belongPeopleInfo, setBelongPeopleInfo] = useState({ const [belongPeopleInfo, setBelongPeopleInfo] = useState({
authorName: '', authorName: '',
authorType: '', authorType: '',
@ -50,12 +58,24 @@ export default function ProjNew() {
authorId: '', authorId: '',
authorProvinceCity: '' authorProvinceCity: ''
}) })
const [concatPeopleInfo, setConcatPeopleInfo] = useState({
applyConcatId: '',
applyContactCsaNo: '',
applyContactEmail: '',
applyContactName: '',
applyContactPhone: '',
applyContactCompany: ''
})
const setValue = (value: string) => { const setValue = (value: string) => {
form.setFieldsValue({ form.setFieldsValue({
belongPeople: value belongPeople: value
}) })
} }
const setConcatValue = (value: string) => {
form.setFieldsValue({
contacts: value
})
}
const [createProjId, setCreateProjId] = useState(''); const [createProjId, setCreateProjId] = useState('');
const oldlistProjChargeAdditional: string[] = []; const oldlistProjChargeAdditional: string[] = [];
const [listProjChargeAdditional, setlistProjChargeAdditional] = useState<string[]>([]) const [listProjChargeAdditional, setlistProjChargeAdditional] = useState<string[]>([])
@ -112,7 +132,6 @@ export default function ProjNew() {
// console.log('传递信息pkg:',pkg,'videoDemo:',videoDemo); // console.log('传递信息pkg:',pkg,'videoDemo:',videoDemo);
// console.log('显示价格',price); // console.log('显示价格',price);
} }
}) })
}, []); }, []);
@ -143,7 +162,9 @@ export default function ProjNew() {
setProjInfo({ setProjInfo({
projName: formData.projName, projName: formData.projName,
projIntroduction: formData.projIntroduction, projIntroduction: formData.projIntroduction,
belongPeople: formData.belongPeople belongPeople: formData.belongPeople,
contacts: formData.contacts,
projDevCompleteDate: formData.projDevCompleteDate,
}) })
}} }}
autoComplete="off" autoComplete="off"
@ -172,6 +193,39 @@ export default function ProjNew() {
setBelongModal(true) setBelongModal(true)
}}></div> }}></div>
</div> </div>
<div className='formItemOne' style={{ marginTop: 20, position: 'relative' }}>
<div className='formItem-title '>
*
</div>
<Form.Item<ProjInfo>
name="contacts"
rules={[{ required: true, message: '请选择/创建知识产权联系人' }]}
>
<Input style={{ background: '#eeeeee', width: '800px', height: '50px', fontSize: '16px', color: '#3B3B3B' }} placeholder="请选择/创建知识产权联系人" disabled />
</Form.Item>
<div style={{ position: 'absolute', right: 23, fontSize: 16, color: " #1F79FF", cursor: 'pointer' }} onClick={() => {
setConcatModal(true)
}}></div>
</div>
<div className='formItemOne' style={{ marginTop: 20}}>
<div className='formItem-title '>
*
</div>
<Form.Item<ProjInfo>
// label="开发完成时间"
name="projDevCompleteDate"
rules={[{ required: true, message: '请输入开发完成时间' }]}
>
<DatePicker placeholder="请选择开发完成日期"
format={dateFormat}
locale={locale}
// style={{ width: '100%' }}
style={{ height: '50px', width: '800px', fontSize: 16, background: '#eeeeee', }}
/>
</Form.Item>
</div>
<div className='software-protocol'> <div className='software-protocol'>
<Form.Item <Form.Item
name="agreement" name="agreement"
@ -219,6 +273,9 @@ export default function ProjNew() {
// backgroundColor: 'var(--color-primary)', width: '216px', // backgroundColor: 'var(--color-primary)', width: '216px',
// height: '50px', fontSize: '16px', marginLeft: '53px' // height: '50px', fontSize: '16px', marginLeft: '53px'
// }} // }}
// onClick={()=>{
// alert(belongPeopleInfo.authorProvinceCity)
// }}
> >
</Button> </Button>
@ -245,14 +302,23 @@ export default function ProjNew() {
projName: projInfo.projName, projName: projInfo.projName,
projChargeType: pathParams.projChargeType, projChargeType: pathParams.projChargeType,
listProjChargeAdditional: listProjChargeAdditional, listProjChargeAdditional: listProjChargeAdditional,
// dayjs(formInfo.getFieldValue('projDevCompleteDate')).format(dateFormat),
projDevCompleteDate:dayjs(projInfo.projDevCompleteDate).format(dateFormat),
authorCrcAccount: belongPeopleInfo.authorCrcAccount, authorCrcAccount: belongPeopleInfo.authorCrcAccount,
authorId: belongPeopleInfo.authorId, authorId: belongPeopleInfo.authorId,
authorIdCard: belongPeopleInfo.authorIdCard, authorIdCard: belongPeopleInfo.authorIdCard,
authorIdCardType: belongPeopleInfo.authorIdCardType, authorIdCardType: belongPeopleInfo.authorIdCardType,
authorName: belongPeopleInfo.authorName, authorName: belongPeopleInfo.authorName,
authorProvinceCity: belongPeopleInfo.authorProvinceCity, authorProvinceCity: belongPeopleInfo.authorProvinceCity,
authorType:belongPeopleInfo.authorType authorType: belongPeopleInfo.authorType,
applyContactCompany:concatPeopleInfo.applyContactCompany,
applyContactCsaNo:concatPeopleInfo.applyContactCsaNo,
applyContactEmail:concatPeopleInfo.applyContactEmail,
applyContactId:concatPeopleInfo.applyConcatId,
applyContactName:concatPeopleInfo.applyContactName,
applyContactPhone:concatPeopleInfo.applyContactPhone,
projVersion:'v1.0'
}, },
onBefore() { onBefore() {
setLoading(true); setLoading(true);
@ -296,6 +362,20 @@ export default function ProjNew() {
}}> }}>
<div></div> <div></div>
</Modal> </Modal>
<Modal title="选择联系人"
destroyOnClose
open={concatModal}
width={1200}
footer={null}
onCancel={() => {
setConcatModal(false)
}}>
<ContactPeople isShow={true} closeModal={() => { setConcatModal(false) }} setConcatPeopleInfo={setConcatPeopleInfo} concatPeopleInfo={concatPeopleInfo} setConcatValue={setConcatValue}></ContactPeople>
</Modal>
<Modal title="选择所属者" <Modal title="选择所属者"
destroyOnClose destroyOnClose

View File

@ -870,8 +870,8 @@ export default function ProjEditStep2(props: any) {
</div> </div>
</div> </div>
<div className='showInfo'> <div className='showInfo'>
<div style={{ marginRight: '22px' }}>:</div> <div style={{ marginRight: '22px' }}>:</div>
<div style={{ display: applyContactName == '' ? 'block' : 'none' }}></div> <div style={{ display: applyContactName == '' ? 'block' : 'none' }}></div>
<div style={{ display: applyContactName == '' ? 'none' : 'block' }}> <div style={{ display: applyContactName == '' ? 'none' : 'block' }}>
{applyContactName}/{applyContactPhone}{applyContactEmail ? '/' + applyContactEmail : ''} {applyContactName}/{applyContactPhone}{applyContactEmail ? '/' + applyContactEmail : ''}
</div> </div>
@ -1022,7 +1022,7 @@ export default function ProjEditStep2(props: any) {
// alert('申请人不能为空') // alert('申请人不能为空')
messageApi.open({ messageApi.open({
type: 'error', type: 'error',
content: '请选择申请人' content: '请选择联系人'
}) })
setIsEditModalOpen(false); setIsEditModalOpen(false);
} }

View File

@ -719,8 +719,8 @@ export default function ProjEditStep2() {
</div> </div>
</div> </div>
<div className='showInfo'> <div className='showInfo'>
<div style={{ marginRight: '22px' }}>:</div> <div style={{ marginRight: '22px' }}>:</div>
<div style={{ display: applyContactName == '' ? 'block' : 'none' }}></div> <div style={{ display: applyContactName == '' ? 'block' : 'none' }}></div>
<div style={{ display: applyContactName == '' ? 'none' : 'block' }}> <div style={{ display: applyContactName == '' ? 'none' : 'block' }}>
{applyContactName}/{applyContactPhone}/{applyContactEmail} {applyContactName}/{applyContactPhone}/{applyContactEmail}
</div> </div>
@ -775,7 +775,7 @@ export default function ProjEditStep2() {
// alert('申请人不能为空') // alert('申请人不能为空')
messageApi.open({ messageApi.open({
type: 'error', type: 'error',
content: '请选择申请人' content: '请选择联系人'
}) })
setIsEditModalOpen(false); setIsEditModalOpen(false);
} }

View File

@ -9,6 +9,7 @@
} }
.proj-edit { .proj-edit {
background-color: var(--color-light); background-color: var(--color-light);
/* background-color: var(--color-light); */
padding: 15px; padding: 15px;
display: flex; display: flex;
justify-content: space-around; justify-content: space-around;
@ -25,6 +26,105 @@
height: 100px; height: 100px;
position: fixed; position: fixed;
right: 25px; right: 25px;
bottom: 50px; bottom: 20px;
cursor: pointer; cursor: pointer;
} }
.editAll-box{
width: 19%;
/* background-color: skyblue; */
display: flex;
flex-direction: column;
align-items: center;
}
.editAll-box-title{
width: 100%;
height: 56px;
background-color: #FF9F08;
margin-top: 10px;
text-align: center;
line-height: 56px;
font-size: 16px;
font-weight: 700;
border-radius: 10px;
color:#fff;
}
.editAll-boxNo-con{
margin-top: 50px;
width: 100%;
background-color: #f3f3f3;
height: 95px;
line-height: 95px;
text-align: center;
font-size: 16px;
font-weight: bold;
}
.editAll-box-con{
/* width: 270px; */
/* width: 100%; */
width: calc(100% - 2px);
/* height: 500px; */
border: 1px solid rgb(212, 212, 212);
margin-bottom: 20px;
}
.question{
width: 100%;
height: 40px;
background-color: #FF9F08;
line-height: 40px;
font-weight: 700;
padding:0 10px;
box-sizing: border-box;
display: flex;
justify-content: space-between;
color: #fff;
}
.questionStatus{
font-weight: 300;
}
.boxtitle{
width: 100%;
height: 40px;
background-color: #FF9F08;
color: #fff;
line-height: 40px;
text-indent: 10px;
/* font-size: 16px; */
font-weight: 700;
}
.boxtextTop{
background-color: #fff;
width: 100%;
padding: 10px;
box-sizing: border-box;
}
.unReason{
/* background-color: pink; */
margin-top: 10px;
color: red;
}
.boxtextBot{
background-color: #fff;
width: 100%;
padding: 10px;
box-sizing: border-box;
}
.fileBox{
/* background-color: skyblue; */
margin-top: 10px;
min-height: 40px;
/* overflow: scroll; */
text-align: justify; /* 让文字两端对齐 */
}
.upload-box{
margin-top: 10px;
/* background-color: skyblue; */
}
.uploadTitle{
font-size: 16px;
margin-right: 10px;
}

View File

@ -67,3 +67,6 @@
margin-left: 190px; margin-left: 190px;
} }
.formItemOne .css-dev-only-do-not-override-1ae8k9u.ant-picker .ant-picker-input >input{
font-size: 16px;
}