暂存
This commit is contained in:
parent
3f02852844
commit
75c8a8a788
@ -754,7 +754,7 @@ export default function BelongPeople(props: propsInfo) {
|
||||
</Form>
|
||||
</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' }} >
|
||||
<Button onClick={() => {
|
||||
props.closeModal()
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { message, Modal,Table, Space } from "antd";
|
||||
import { message, Modal, Table, Space } from "antd";
|
||||
import { FolderAddOutlined } from '@ant-design/icons';
|
||||
// import locale from 'antd/es/date-picker/locale/zh_CN';
|
||||
// import { useParams } from "react-router-dom";
|
||||
@ -27,7 +27,13 @@ type ContactType = {
|
||||
const { Search } = Input;
|
||||
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 [formContact] = Form.useForm<ContactType>()
|
||||
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 = () => {
|
||||
get({
|
||||
@ -174,9 +194,9 @@ export default function ContactPeople() {
|
||||
|
||||
}, [])
|
||||
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}
|
||||
<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>
|
||||
@ -194,10 +214,35 @@ export default function ContactPeople() {
|
||||
<Search placeholder="请输入持有者名称搜索对应信息" onSearch={applicantPeopleSearch} style={{ width: '353px', height: '43px' }} />
|
||||
</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'>
|
||||
{/* 表格 lyp*/}
|
||||
<Table
|
||||
{props.isShow ? (<Table
|
||||
rowSelection={{
|
||||
type: 'radio',
|
||||
...ContantRowSelection,
|
||||
// selectedRowKeys: selectedKeys // 设置默认选中的行
|
||||
}}
|
||||
|
||||
dataSource={tableContactData}
|
||||
pagination={{
|
||||
@ -264,8 +309,100 @@ export default function ContactPeople() {
|
||||
</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>
|
||||
{/* 选择创建/编辑/查看联系人弹框 lyp*/}
|
||||
|
@ -368,21 +368,21 @@ export default function AiHelper(props: PropsType) {
|
||||
setActiveTab('简介')
|
||||
}}
|
||||
>
|
||||
项目简介
|
||||
系统简介
|
||||
</div>
|
||||
<div className={activeTab == '详情' ? 'tabActive' : "aiTabBtn"}
|
||||
onClick={() => {
|
||||
setActiveTab('详情')
|
||||
}}
|
||||
>
|
||||
项目详情
|
||||
系统详情
|
||||
</div>
|
||||
<div className={activeTab == '模块' ? 'tabActive' : "aiTabBtn"}
|
||||
onClick={() => {
|
||||
setActiveTab('模块')
|
||||
}}
|
||||
>
|
||||
模块管理
|
||||
功能列表
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -12,10 +12,10 @@ import {
|
||||
WarningOutlined,
|
||||
FolderOutlined
|
||||
} 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 { 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 { IndexListContext } from "../../context/IndexListContext.ts";
|
||||
import useMessage from "antd/es/message/useMessage";
|
||||
@ -31,7 +31,7 @@ import SoftwareManagement from '../../route/proj/edit/ProjConfigModList.tsx'
|
||||
import SoftwareManagementShow from '../../route/proj/edit/ProjConfigModListShow.tsx'
|
||||
import DisplayOrder from '../../route/proj/edit/ProjConfigMenuList.tsx'
|
||||
import DisplayOrderShow from '../../route/proj/edit/ProjConfigMenuListShow.tsx'
|
||||
export default function CardProj(props:any ) {
|
||||
export default function CardProj(props: any) {
|
||||
// 第四步 登陆页面设置
|
||||
const [loginPageOpne, setLoginPageOpne] = useState(false)
|
||||
const [loginPageShowOpne, setLoginPageShowOpne] = useState(false)
|
||||
@ -47,7 +47,7 @@ export default function CardProj(props:any ) {
|
||||
|
||||
const data = props.item;
|
||||
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 [projCategoryId, setProjCategoryId] = useState(data.projCategoryId);
|
||||
@ -79,7 +79,7 @@ export default function CardProj(props:any ) {
|
||||
|
||||
const goEdit = () => {
|
||||
if (charge == ProjChargeType.ALL) {
|
||||
nav(`/proj-edit/${data.projId}`);
|
||||
nav(`/proj-eall/${data.projId}`);
|
||||
} else if (charge == ProjChargeType.FREE) {
|
||||
nav(`/proj-efree/${data.projId}`);
|
||||
} else {
|
||||
@ -88,6 +88,8 @@ export default function CardProj(props:any ) {
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
console.log('查找图片', data);
|
||||
|
||||
const charge = props.item.pay.charge.split(':')[0];
|
||||
let chargeName = '';
|
||||
if (charge == ProjChargeType.ALL) {
|
||||
@ -112,7 +114,7 @@ export default function CardProj(props:any ) {
|
||||
<div className='cpt-left'>
|
||||
<div className='dottedLine'></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}
|
||||
</div>
|
||||
<div className='cp-num'>
|
||||
@ -150,7 +152,21 @@ export default function CardProj(props:any ) {
|
||||
</div>
|
||||
<div className='cp-bot'>
|
||||
<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-money'>
|
||||
<span className='money'>金额(¥) : </span>
|
||||
@ -158,7 +174,7 @@ export default function CardProj(props:any ) {
|
||||
</div>
|
||||
<div className='cpbl-btn'>
|
||||
<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}`)
|
||||
setLoginPageShowOpne(true);
|
||||
|
||||
@ -171,7 +187,7 @@ export default function CardProj(props:any ) {
|
||||
<div>登录界面设置</div>
|
||||
</div>
|
||||
<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}`)
|
||||
setSoftwareManagementShowOpen(true)
|
||||
} else {
|
||||
@ -184,7 +200,7 @@ export default function CardProj(props:any ) {
|
||||
<div>系统菜单管理({data.projModCount})</div>
|
||||
</div>
|
||||
<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}`)
|
||||
setDisplayOrderShowOpen(true);
|
||||
} else {
|
||||
|
@ -11,12 +11,12 @@ export default function CardProjDownload(props: IProjDownload) {
|
||||
<div className="cpDown-option">
|
||||
{
|
||||
props.canBtnClick ? (
|
||||
<a href="/#" className="cpDown-edit" onClick={(e) => {
|
||||
<a href="/#" className="cpDown-edit" style={{minWidth:30}} onClick={(e) => {
|
||||
e.preventDefault();
|
||||
props.handleDownload();
|
||||
}}>下载</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();
|
||||
}}>下载</a>
|
||||
)
|
||||
|
@ -26,6 +26,7 @@ export default function CardProjEdit(props: IProjEdit) {
|
||||
// props.handleEdit();
|
||||
// }}>编辑</a>
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
return (
|
||||
|
@ -1,5 +1,5 @@
|
||||
.card-proj-download {
|
||||
width: 309px;
|
||||
width: 95%;
|
||||
padding: 20px 25px;
|
||||
box-sizing: border-box;
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
position: relative;
|
||||
}
|
||||
.card-proj-nodownload{
|
||||
width: 309px;
|
||||
width: 95%;
|
||||
padding: 20px 25px;
|
||||
box-sizing: border-box;
|
||||
background-color: #f3f3f3;
|
||||
|
@ -1,5 +1,5 @@
|
||||
.card-proj-edit {
|
||||
width: 309px;
|
||||
width: 95%;
|
||||
padding: 20px 25px;
|
||||
box-sizing: border-box;
|
||||
margin-bottom: 27px;
|
||||
@ -52,6 +52,8 @@
|
||||
.card-proj-edit .option .edit {
|
||||
color: var(--color-blue);
|
||||
text-decoration:underline;
|
||||
min-width: 30px;
|
||||
/* background-color: red; */
|
||||
}
|
||||
|
||||
.card-proj-edit .option .status {
|
||||
@ -63,6 +65,7 @@
|
||||
transform: rotate(-45deg);
|
||||
border-top: transparent;
|
||||
border-right: transparent;
|
||||
margin-top: 4px;
|
||||
}
|
||||
.noEdit:hover{
|
||||
cursor: not-allowed;
|
||||
|
@ -8,10 +8,10 @@ import { IListPage } from "../../interfaces/listpage/IListPage.ts";
|
||||
import { IProj } from "../../interfaces/proj/IProj.ts";
|
||||
// import NoData from "../../assets/no-data.png";
|
||||
import { useLocation } from 'react-router-dom';
|
||||
import syminga from '../../static/homeimg/homeimga.png'
|
||||
import symingb from '../../static/homeimg/homeimgb.png'
|
||||
import symingc from '../../static/homeimg/homeimgc.png'
|
||||
import symingd from '../../static/homeimg/homeimgd.png'
|
||||
// import syminga from '../../static/homeimg/homeimga.png'
|
||||
// import symingb from '../../static/homeimg/homeimgb.png'
|
||||
// import symingc from '../../static/homeimg/homeimgc.png'
|
||||
// import symingd from '../../static/homeimg/homeimgd.png'
|
||||
import { getMenuActive } from '../../util/cache.ts';
|
||||
|
||||
// import gpsImg from '../../static/right/gps.png'
|
||||
@ -29,8 +29,9 @@ export default function ListProj() {
|
||||
// // setKeywords(state.keyword)
|
||||
// }
|
||||
const keywords = state ? state.keyword : ''
|
||||
const name = state?state.name:''
|
||||
// console.log(keywords);
|
||||
const images = [syminga,symingb,symingc,symingd]
|
||||
// const images = [syminga,symingb,symingc,symingd]
|
||||
const listProjRef: MutableRefObject<HTMLDivElement | null> = useRef(null);
|
||||
const listRef: MutableRefObject<HTMLDivElement | null> = useRef(null);
|
||||
|
||||
@ -55,6 +56,7 @@ export default function ListProj() {
|
||||
page: currentPage,
|
||||
rows: 10,
|
||||
keywords: keywords,
|
||||
charge:name,
|
||||
projCategoryId: indexListContext.category,
|
||||
status: indexListContext.status ? indexListContext.status : getMenuActive()
|
||||
}
|
||||
@ -66,13 +68,13 @@ export default function ListProj() {
|
||||
console.log('看看结果', data);
|
||||
setPage(data.page);
|
||||
setTotal(data.total);
|
||||
// setProjs(data.rows);
|
||||
const updatedArr = (data.rows).map((item, index) => ({
|
||||
...item,
|
||||
img: images[index % images.length] // 利用取余来循环填充图片
|
||||
}));
|
||||
console.log('循环数组',updatedArr);
|
||||
setProjs(updatedArr);
|
||||
setProjs(data.rows);
|
||||
// const updatedArr = (data.rows).map((item, index) => ({
|
||||
// ...item,
|
||||
// img: images[index % images.length] // 利用取余来循环填充图片
|
||||
// }));
|
||||
// console.log('循环数组',updatedArr);
|
||||
// setProjs(updatedArr);
|
||||
|
||||
},
|
||||
onFinally() {
|
||||
@ -159,7 +161,7 @@ export default function ListProj() {
|
||||
setTimeout(() => {
|
||||
setShowPage(true)
|
||||
}, 0);
|
||||
}, [indexListContext.status,keywords])
|
||||
}, [indexListContext.status,keywords,name])
|
||||
|
||||
useEffect(() => {
|
||||
if (indexListContext.categorys) {
|
||||
|
27
src/components/scrollAD/ScrollAd.tsx
Normal file
27
src/components/scrollAD/ScrollAd.tsx
Normal 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>
|
||||
|
||||
|
||||
)
|
||||
}
|
28
src/components/scrollAD/scrollAd.css
Normal file
28
src/components/scrollAD/scrollAd.css
Normal 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%); /* 向左移动到盒子的左边 */
|
||||
}
|
||||
}
|
@ -1,12 +1,16 @@
|
||||
import './step-proj-edit.css';
|
||||
import { IStepProj, Process } from "../../interfaces/step/IStepProj.ts";
|
||||
// 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) {
|
||||
const location = useLocation()
|
||||
const [allShow, setAllShow] = useState(false)
|
||||
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;
|
||||
// 状态值 已完成:Process.COMPLETE 进行中: Process.PROCESSING 未操作:Process.PENDING
|
||||
@ -96,15 +100,17 @@ export default function StepProjEdit(props: IStepProj) {
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="step-proj">
|
||||
<div className="step-proj" style={{width:allShow?'19%':'21%'}}>
|
||||
<div className="step" >
|
||||
{renderStepNo()}
|
||||
{/* {renderStepDesc()} */}
|
||||
{renderStepLine()}
|
||||
<div style={{display:allShow?'none':'block'}}>
|
||||
{renderStepLine()}
|
||||
</div>
|
||||
<div className='downBox'></div>
|
||||
</div>
|
||||
<div className="step-card" style={{ maxHeight: `${height - 20}px` }}>
|
||||
{/* <div className="step-card" style={{ }}> */}
|
||||
{/* <div className="step-card" style={{ }}> */}
|
||||
<div className="step-card-list">{props.children}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1,5 +1,7 @@
|
||||
.step-proj {
|
||||
width: 317px;
|
||||
/* width: 317px; */
|
||||
width: 21%;
|
||||
/* background: skyblue; */
|
||||
position: relative;
|
||||
/* overflow: scroll; */
|
||||
}
|
||||
@ -14,7 +16,7 @@
|
||||
|
||||
}
|
||||
.step-proj .step {
|
||||
width: 309px;
|
||||
width: 100%;
|
||||
height: 56px;
|
||||
/* background-color: rgb(248, 213, 219); */
|
||||
margin-top: 10px;
|
||||
@ -27,7 +29,8 @@
|
||||
|
||||
/* Top 状态:已完成 开始---------------------------------------------------------------*/
|
||||
.step-proj .step .complete-one {
|
||||
width: 309px;
|
||||
/* width: 309px; */
|
||||
width: 100%;
|
||||
height: 56px;
|
||||
/* background-color: pink; */
|
||||
display: flex;
|
||||
@ -45,12 +48,12 @@
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-left: 44px;
|
||||
margin-left: 11%;
|
||||
}
|
||||
|
||||
/* 已完成状态第一个序号 */
|
||||
.step-proj .step .complete-one .complete-num {
|
||||
margin-left: 16px;
|
||||
margin-left: 8%;
|
||||
|
||||
}
|
||||
|
||||
@ -60,16 +63,18 @@
|
||||
font-weight: 700;
|
||||
font-size: 16px;
|
||||
color: #FFFFFF;
|
||||
margin-left: 47px;
|
||||
margin-left: 15%;
|
||||
}
|
||||
|
||||
/* 已完成状态第一个标题 */
|
||||
.step-proj .step .complete-one .complete-text {
|
||||
margin-left: 61px;
|
||||
margin-left: 23%;
|
||||
}
|
||||
|
||||
.step-proj .step .complete-two {
|
||||
width: 309px;
|
||||
/* width: 309px; */
|
||||
width: 100%;
|
||||
|
||||
height: 56px;
|
||||
/* background-color: pink; */
|
||||
display: flex;
|
||||
@ -79,7 +84,9 @@
|
||||
}
|
||||
|
||||
.step-proj .step .complete-three {
|
||||
width: 309px;
|
||||
/* width: 309px; */
|
||||
width: 100%;
|
||||
|
||||
height: 56px;
|
||||
/* background-color: pink; */
|
||||
display: flex;
|
||||
@ -89,7 +96,9 @@
|
||||
}
|
||||
|
||||
.step-proj .step .complete-four {
|
||||
width: 309px;
|
||||
/* width: 309px; */
|
||||
width: 100%;
|
||||
|
||||
height: 56px;
|
||||
/* background-color: pink; */
|
||||
display: flex;
|
||||
@ -99,11 +108,11 @@
|
||||
}
|
||||
/* 已完成状态连接线 */
|
||||
.step-proj .step .setLine {
|
||||
width: 49px;
|
||||
width: 10%;
|
||||
height: 22px;
|
||||
background-color: pink;
|
||||
position: absolute;
|
||||
right: -67px;
|
||||
right: -15%;
|
||||
top: 17px;
|
||||
}
|
||||
.step-proj .step .complete-oneLine{
|
||||
@ -125,7 +134,9 @@
|
||||
|
||||
/* Top 状态:进行中 开始----------------------------------------------------------- */
|
||||
.step-proj .step .processing-one {
|
||||
width: 309px;
|
||||
/* width: 309px; */
|
||||
width: 100%;
|
||||
|
||||
height: 56px;
|
||||
/* background-color: pink; */
|
||||
display: flex;
|
||||
@ -135,7 +146,9 @@
|
||||
}
|
||||
|
||||
.step-proj .step .processing-two {
|
||||
width: 309px;
|
||||
/* width: 309px; */
|
||||
width: 100%;
|
||||
|
||||
height: 56px;
|
||||
/* background-color: pink; */
|
||||
display: flex;
|
||||
@ -145,7 +158,9 @@
|
||||
}
|
||||
|
||||
.step-proj .step .processing-three {
|
||||
width: 309px;
|
||||
/* width: 309px; */
|
||||
width: 100%;
|
||||
|
||||
height: 56px;
|
||||
/* background-color: pink; */
|
||||
display: flex;
|
||||
@ -155,7 +170,9 @@
|
||||
}
|
||||
|
||||
.step-proj .step .processing-four {
|
||||
width: 309px;
|
||||
width: 100%;
|
||||
|
||||
/* width: 309px; */
|
||||
height: 56px;
|
||||
/* background-color: pink; */
|
||||
display: flex;
|
||||
@ -168,7 +185,7 @@
|
||||
height: 21px;
|
||||
background: #FFFFFF;
|
||||
border-radius: 50%;
|
||||
margin-left: 46px;
|
||||
margin-left: 18%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
@ -183,7 +200,7 @@
|
||||
font-weight: 700;
|
||||
font-size: 16px;
|
||||
color: #71757E;
|
||||
margin-left: 47px;
|
||||
margin-left: 15%;
|
||||
}
|
||||
|
||||
/* Top 状态:进行中 结束----------------------------------------------------------- */
|
||||
@ -193,9 +210,12 @@
|
||||
/* Top 状态:未操作 开始 ------------------------------------------------------------ */
|
||||
.step-proj .step .pending {
|
||||
width: 309px;
|
||||
width: 100%;
|
||||
|
||||
height: 56px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
/* background: pink; */
|
||||
background: url('../../static/editPro/no.png');
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
@ -205,7 +225,7 @@
|
||||
height: 21px;
|
||||
background: #FFFFFF;
|
||||
border-radius: 50%;
|
||||
margin-left: 46px;
|
||||
margin-left: 18%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
@ -220,7 +240,7 @@
|
||||
font-weight: 700;
|
||||
font-size: 16px;
|
||||
color: #71757E;
|
||||
margin-left: 47px;
|
||||
margin-left: 15%;
|
||||
}
|
||||
.step-proj .step .no-line{
|
||||
background:url('../../static/editPro/lineno.png');
|
||||
|
@ -36,12 +36,23 @@ export default function Head() {
|
||||
authorId: '',
|
||||
authorProvinceCity: ''
|
||||
})
|
||||
|
||||
const setValue = () => {
|
||||
// console.log(value);
|
||||
}
|
||||
const setConcatValue = ()=> {
|
||||
|
||||
}
|
||||
// 联系人弹窗
|
||||
const [contactModal, setContactModal] = useState(false)
|
||||
|
||||
const [concatPeopleInfo,setConcatPeopleInfo] = useState({
|
||||
applyConcatId:'',
|
||||
applyContactCsaNo:'',
|
||||
applyContactEmail:'',
|
||||
applyContactName:'',
|
||||
applyContactPhone:'',
|
||||
applyContactCompany:''
|
||||
})
|
||||
useEffect(() => {
|
||||
reloadUser(messageApi, globalDispatchContext).then((data) => {
|
||||
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>
|
||||
<Spin tip="正在提交..." spinning={loading} fullscreen />
|
||||
{contextHolder}
|
||||
|
@ -8,7 +8,7 @@ import MenuWithTopButton from "../../components/menu/MenuWithTopButton.tsx";
|
||||
import MenuTreeWithTopButton from "../../components/menu/MenuTreeWithTopButton.tsx";
|
||||
// import ListProj from "../../components/list/ListProj.tsx";
|
||||
// import ListProjAgent from "../../components/list/ListProjAgent.tsx";
|
||||
import { MenuProps } from 'antd';
|
||||
import { MenuProps,Select } from 'antd';
|
||||
import {
|
||||
IndexListContext,
|
||||
IndexListDataType,
|
||||
@ -29,8 +29,9 @@ const { Search } = Input;
|
||||
|
||||
|
||||
export default function Index() {
|
||||
|
||||
// const [keywords, setKeywords] = useState('');
|
||||
// 关键字
|
||||
const [keywords, setKeywords] = useState('');
|
||||
const [type,setType] = useState('')
|
||||
// const indexListContext = useContext(IndexListContext);
|
||||
|
||||
|
||||
@ -195,81 +196,119 @@ export default function Index() {
|
||||
// const [newname,setNewname] = useState('')
|
||||
|
||||
const [pathArray, setPathArray] = useState<any>([])
|
||||
const [showSearchBox,setShowSearchBox] = useState(true)
|
||||
useEffect(() => {
|
||||
// const nowname = sessionStorage.getItem('now')
|
||||
console.log('路由名字', location.pathname);
|
||||
if (location.pathname.includes('/home')) {
|
||||
setNow('首页')
|
||||
setPathArray([{ title: '首页' }])
|
||||
setShowSearchBox(true)
|
||||
|
||||
} else if (location.pathname.includes('/proj-create')) {
|
||||
setShowSearchBox(false)
|
||||
setNow('创建项目')
|
||||
setPathArray([{ title: <Link to={'/home'}>首页</Link> }, { title: '创建项目' }])
|
||||
// /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')) {
|
||||
setNow('编辑项目')
|
||||
setShowSearchBox(false)
|
||||
|
||||
// setEditname(location.pathname)
|
||||
setPathArray([{ title: <Link to={'/home'}>首页</Link> }, { title: <Link to={'/proj-create'}>创建项目</Link> }, { title: '编辑项目' }])
|
||||
} else if (location.pathname.includes('/proj-new')) {
|
||||
setNow('新建项目')
|
||||
setShowSearchBox(false)
|
||||
|
||||
// setNewname(location.pathname)
|
||||
setPathArray([{ title: <Link to={'/home'}>首页</Link> }, { title: <Link to={'/proj-create'}>创建项目</Link> }, { title: '新建项目' }])
|
||||
} else if (location.pathname.includes('/proj-efree')) {
|
||||
setNow('编辑项目')
|
||||
setShowSearchBox(false)
|
||||
|
||||
// setNewname(location.pathname)
|
||||
setPathArray([{ title: <Link to={'/home'}>首页</Link> }, { title: <Link to={'/proj-create'}>创建项目</Link> }, { title: '编辑项目' }])
|
||||
} else if (location.pathname.includes('/proj-eall')) {
|
||||
setNow('编辑项目')
|
||||
setShowSearchBox(false)
|
||||
|
||||
// setNewname(location.pathname)
|
||||
setPathArray([{ title: <Link to={'/home'}>首页</Link> }, { title: <Link to={'/proj-create'}>创建项目</Link> }, { title: '编辑项目' }])
|
||||
} else if (location.pathname.includes('/proj-edit/step1')) {
|
||||
setNow('标题简介')
|
||||
setShowSearchBox(false)
|
||||
|
||||
// setNewname(location.pathname)
|
||||
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')) {
|
||||
setNow('标题简介')
|
||||
setShowSearchBox(false)
|
||||
|
||||
// setNewname(location.pathname)
|
||||
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')) {
|
||||
setNow('登录界面设置')
|
||||
setShowSearchBox(false)
|
||||
|
||||
// setNewname(location.pathname)
|
||||
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')) {
|
||||
setNow('系统菜单管理')
|
||||
setShowSearchBox(false)
|
||||
|
||||
// setNewname(location.pathname)
|
||||
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')) {
|
||||
setNow('系统菜单顺序')
|
||||
setShowSearchBox(false)
|
||||
|
||||
// setNewname(location.pathname)
|
||||
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')) {
|
||||
setNow('软件功能特点')
|
||||
setShowSearchBox(false)
|
||||
|
||||
// setNewname(location.pathname)
|
||||
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')) {
|
||||
setNow('添加菜单')
|
||||
setShowSearchBox(false)
|
||||
|
||||
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')) {
|
||||
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: '编辑菜单' }])
|
||||
// /config-mod-edit /config-mod-show
|
||||
} else if (location.pathname.includes('/proj-edit/config-mod-show')) {
|
||||
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: '查看菜单' }])
|
||||
// /config-mod-edit
|
||||
} else if (location.pathname.includes('/product-release')) {
|
||||
setNow('首页')
|
||||
setShowSearchBox(false)
|
||||
|
||||
setPathArray([{ title: '首页' }])
|
||||
// /config-mod-edit /product-release /transaction-order
|
||||
} else if (location.pathname.includes(' /transaction-order')) {
|
||||
setNow('首页')
|
||||
setShowSearchBox(false)
|
||||
|
||||
setPathArray([{ title: '首页' }])
|
||||
// /config-mod-edit /product-release /transaction-order
|
||||
} else if (location.pathname.includes(' /copyright-goods')) {
|
||||
setNow('首页')
|
||||
setShowSearchBox(false)
|
||||
|
||||
setPathArray([{ title: '首页' }])
|
||||
// /config-mod-edit /product-release /transaction-order
|
||||
} else if (location.pathname.includes(' /trading-goods')) {
|
||||
setNow('首页')
|
||||
setShowSearchBox(false)
|
||||
|
||||
setPathArray([{ title: '首页' }])
|
||||
// /config-mod-edit /product-release /transaction-order
|
||||
}
|
||||
@ -296,9 +335,11 @@ export default function Index() {
|
||||
|
||||
const handleSearch = (value: string) => {
|
||||
console.log(value);
|
||||
setKeywords(value)
|
||||
nav('/home', {
|
||||
state: {
|
||||
keyword: value
|
||||
keyword: value,
|
||||
name:type
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -348,7 +389,7 @@ export default function Index() {
|
||||
<div>当前位置:{now}</div>
|
||||
</div>
|
||||
<div className='line' style={{
|
||||
display: location.pathname.includes('/home') ? 'block' : 'none',
|
||||
display:showSearchBox ? 'block' : 'none',
|
||||
|
||||
}} ></div>
|
||||
<div
|
||||
@ -357,14 +398,37 @@ export default function Index() {
|
||||
height: 23,
|
||||
marginLeft: 33,
|
||||
marginRight: 31,
|
||||
display: location.pathname.includes('/home') ? 'none' : 'block'
|
||||
display: showSearchBox ? 'none' : 'block'
|
||||
}}
|
||||
></div>
|
||||
<Search placeholder="输入项目名称" onSearch={handleSearch} style={{
|
||||
width: '253px',
|
||||
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={{
|
||||
width: '253px',
|
||||
height: '31px',
|
||||
|
@ -1,12 +1,17 @@
|
||||
import './proj-create.css'
|
||||
import { useNavigate } from "react-router-dom";
|
||||
import { message } from "antd";
|
||||
import {
|
||||
CloseOutlined
|
||||
} from '@ant-design/icons';
|
||||
import CardProjType from "../../components/card/CardProjType.tsx";
|
||||
import {
|
||||
// IProjCharge,
|
||||
ProjAdditionalType, ProjChargeType } from "../../interfaces/proj/IProj.ts";
|
||||
ProjAdditionalType, ProjChargeType
|
||||
} from "../../interfaces/proj/IProj.ts";
|
||||
import { useEffect, useState } from "react";
|
||||
import { get } from "../../util/AjaxUtils.ts";
|
||||
import ScrollAd from '../../components/scrollAD/ScrollAd.tsx'
|
||||
// import { Link } from "react-router-dom";
|
||||
|
||||
export default function ProjCreate() {
|
||||
@ -31,9 +36,10 @@ export default function ProjCreate() {
|
||||
const [allInfo, setAllInfo] = useState<any>({}) //全部托管信息
|
||||
const [materialInfo, setMaterialInfo] = useState<any>({}) //写材料信息
|
||||
const [freeInfo, setFreeInfo] = useState<any>({}) //免费托管信息
|
||||
const [ freeCount,setFreeCount] = useState(0) //免费次数
|
||||
const [freeCount, setFreeCount] = useState(0) //免费次数
|
||||
const nav = useNavigate();
|
||||
const height = window.innerHeight - 170;
|
||||
const [show,setShow] = useState(true) //是否显示广告
|
||||
useEffect(() => {
|
||||
get<any>({
|
||||
messageApi: messageApi,
|
||||
@ -59,7 +65,19 @@ export default function ProjCreate() {
|
||||
< >
|
||||
{contextHolder}
|
||||
<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
|
||||
head={'全托'}
|
||||
bodyLineArray={[
|
||||
@ -95,8 +113,8 @@ export default function ProjCreate() {
|
||||
}
|
||||
}
|
||||
]}
|
||||
isShow = {allInfo.isShow}
|
||||
isClickable = {allInfo.isClickable}
|
||||
isShow={allInfo.isShow}
|
||||
isClickable={allInfo.isClickable}
|
||||
/>
|
||||
{/* <CardProjType
|
||||
head={'写材料+代理'}
|
||||
@ -201,8 +219,8 @@ export default function ProjCreate() {
|
||||
}
|
||||
}
|
||||
]}
|
||||
isShow = {materialInfo.isShow}
|
||||
isClickable = {materialInfo.isClickable}
|
||||
isShow={materialInfo.isShow}
|
||||
isClickable={materialInfo.isClickable}
|
||||
/>
|
||||
<CardProjType
|
||||
head={`免费试用${freeCount}次`}
|
||||
@ -234,8 +252,8 @@ export default function ProjCreate() {
|
||||
}
|
||||
}
|
||||
]}
|
||||
isShow = {freeInfo.isShow}
|
||||
isClickable = {freeInfo.isClickable}
|
||||
isShow={freeInfo.isShow}
|
||||
isClickable={freeInfo.isClickable}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -359,6 +359,7 @@ export default function ProjEdit() {
|
||||
isEditStepEdited && isConfigEdited ? (
|
||||
<CardProjJump title="预览系统"
|
||||
desc="点击查看预览系统"
|
||||
canBtnClick={true}
|
||||
handleJump={() => {
|
||||
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}`)
|
||||
}}
|
||||
/>
|
||||
<CardProjDownload title="代码压缩包"
|
||||
{/* <CardProjDownload title="代码压缩包"
|
||||
desc="点击下载代码压缩包"
|
||||
canBtnClick={generateStatus == GenerateStatus.SUCCESS}
|
||||
handleDownload={() => {
|
||||
window.open(`${Axios.defaults?.baseURL}/route/proj/download/code-zip/${pathParams.projId}`)
|
||||
}}
|
||||
/>
|
||||
{/* <CardProjDownload title="代码文档"
|
||||
desc="点击下载代码文档"
|
||||
/> */}
|
||||
<CardProjDownload title="源代码"
|
||||
desc="点击下载源代码"
|
||||
canBtnClick={false}
|
||||
handleDownload={() => { }}
|
||||
/> */}
|
||||
/>
|
||||
{/* <CardProjJump title="找代理"
|
||||
desc="到软著代理完成软著申请"
|
||||
canBtnClick={false}
|
||||
|
@ -1,6 +1,6 @@
|
||||
import './proj-new.css';
|
||||
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 { get, post } from "../../util/AjaxUtils.ts";
|
||||
// import {GlobalContext} from "../../context/GlobalContext.ts";
|
||||
@ -8,17 +8,23 @@ import {
|
||||
// IProjCharge,
|
||||
ProjAdditionalType, ProjChargeType
|
||||
} from "../../interfaces/proj/IProj.ts";
|
||||
import locale from 'antd/es/date-picker/locale/zh_CN';
|
||||
import { GlobalDispatchContext, reloadUser } from "../../context/GlobalContext.ts";
|
||||
import BelongPeople from '../../components/BelongPeople/BelongPeople.tsx'
|
||||
import ContactPeople from '../../components/ContactPeople/ContactPeople.tsx'
|
||||
import dayjs from 'dayjs';
|
||||
// const { TextArea } = Input;
|
||||
type ProjInfo = {
|
||||
projName: string;
|
||||
projIntroduction: string;
|
||||
belongPeople: string
|
||||
belongPeople: string;
|
||||
contacts: string;
|
||||
projDevCompleteDate: string;
|
||||
};
|
||||
|
||||
export default function ProjNew() {
|
||||
// const globalContext = useContext(GlobalContext);
|
||||
const dateFormat = 'YYYY年MM月DD日';
|
||||
const globalDispatchContext = useContext(GlobalDispatchContext);
|
||||
const nav = useNavigate();
|
||||
const pathParams = useParams();
|
||||
@ -33,29 +39,43 @@ export default function ProjNew() {
|
||||
const [projInfo, setProjInfo] = useState<ProjInfo>({
|
||||
projName: '',
|
||||
projIntroduction: '',
|
||||
belongPeople: ''
|
||||
belongPeople: '',
|
||||
contacts: '',
|
||||
projDevCompleteDate: '',
|
||||
});
|
||||
const [form] = Form.useForm<ProjInfo>();
|
||||
// 所属者弹窗
|
||||
const [belongModal, setBelongModal] = useState(false)
|
||||
// 联系人弹窗
|
||||
const [concatModal, setConcatModal] = useState(false)
|
||||
// const [belongPeopleName ,setBelongPeopleName] = useState('')
|
||||
// // 暂存一个信息过度
|
||||
// const [newBelongPeopleName,setNewBelongPeopleName] = useState('')
|
||||
const [belongPeopleInfo, setBelongPeopleInfo] = useState({
|
||||
authorName: '',
|
||||
authorType: '',
|
||||
authorIdCardType: '',
|
||||
authorIdCard: '',
|
||||
authorCrcAccount:'',
|
||||
authorId:'',
|
||||
authorProvinceCity:''
|
||||
authorCrcAccount: '',
|
||||
authorId: '',
|
||||
authorProvinceCity: ''
|
||||
})
|
||||
const setValue = (value:string) => {
|
||||
const [concatPeopleInfo, setConcatPeopleInfo] = useState({
|
||||
applyConcatId: '',
|
||||
applyContactCsaNo: '',
|
||||
applyContactEmail: '',
|
||||
applyContactName: '',
|
||||
applyContactPhone: '',
|
||||
applyContactCompany: ''
|
||||
})
|
||||
const setValue = (value: string) => {
|
||||
form.setFieldsValue({
|
||||
belongPeople:value
|
||||
belongPeople: value
|
||||
})
|
||||
}
|
||||
const setConcatValue = (value: string) => {
|
||||
form.setFieldsValue({
|
||||
contacts: value
|
||||
})
|
||||
}
|
||||
|
||||
const [createProjId, setCreateProjId] = useState('');
|
||||
const oldlistProjChargeAdditional: string[] = [];
|
||||
const [listProjChargeAdditional, setlistProjChargeAdditional] = useState<string[]>([])
|
||||
@ -112,7 +132,6 @@ export default function ProjNew() {
|
||||
// console.log('传递信息pkg:',pkg,'videoDemo:',videoDemo);
|
||||
|
||||
// console.log('显示价格',price);
|
||||
|
||||
}
|
||||
})
|
||||
}, []);
|
||||
@ -143,7 +162,9 @@ export default function ProjNew() {
|
||||
setProjInfo({
|
||||
projName: formData.projName,
|
||||
projIntroduction: formData.projIntroduction,
|
||||
belongPeople: formData.belongPeople
|
||||
belongPeople: formData.belongPeople,
|
||||
contacts: formData.contacts,
|
||||
projDevCompleteDate: formData.projDevCompleteDate,
|
||||
})
|
||||
}}
|
||||
autoComplete="off"
|
||||
@ -172,6 +193,39 @@ export default function ProjNew() {
|
||||
setBelongModal(true)
|
||||
}}>选择</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'>
|
||||
<Form.Item
|
||||
name="agreement"
|
||||
@ -219,6 +273,9 @@ export default function ProjNew() {
|
||||
// backgroundColor: 'var(--color-primary)', width: '216px',
|
||||
// height: '50px', fontSize: '16px', marginLeft: '53px'
|
||||
// }}
|
||||
// onClick={()=>{
|
||||
// alert(belongPeopleInfo.authorProvinceCity)
|
||||
// }}
|
||||
>
|
||||
保存并付款
|
||||
</Button>
|
||||
@ -238,36 +295,45 @@ export default function ProjNew() {
|
||||
// console.log('最终',listProjChargeAdditional);
|
||||
// console.log(belongPeopleInfo.authorId);
|
||||
|
||||
post<any>({
|
||||
messageApi,
|
||||
url: '/api/proj/create',
|
||||
body: {
|
||||
projName: projInfo.projName,
|
||||
projChargeType: pathParams.projChargeType,
|
||||
listProjChargeAdditional: listProjChargeAdditional,
|
||||
post<any>({
|
||||
messageApi,
|
||||
url: '/api/proj/create',
|
||||
body: {
|
||||
projName: projInfo.projName,
|
||||
projChargeType: pathParams.projChargeType,
|
||||
listProjChargeAdditional: listProjChargeAdditional,
|
||||
// dayjs(formInfo.getFieldValue('projDevCompleteDate')).format(dateFormat),
|
||||
projDevCompleteDate:dayjs(projInfo.projDevCompleteDate).format(dateFormat),
|
||||
authorCrcAccount: belongPeopleInfo.authorCrcAccount,
|
||||
authorId: belongPeopleInfo.authorId,
|
||||
authorIdCard: belongPeopleInfo.authorIdCard,
|
||||
authorIdCardType: belongPeopleInfo.authorIdCardType,
|
||||
authorName: belongPeopleInfo.authorName,
|
||||
authorProvinceCity: belongPeopleInfo.authorProvinceCity,
|
||||
authorType: belongPeopleInfo.authorType,
|
||||
|
||||
authorCrcAccount:belongPeopleInfo.authorCrcAccount,
|
||||
authorId:belongPeopleInfo.authorId,
|
||||
authorIdCard:belongPeopleInfo.authorIdCard,
|
||||
authorIdCardType:belongPeopleInfo.authorIdCardType,
|
||||
authorName:belongPeopleInfo.authorName,
|
||||
authorProvinceCity:belongPeopleInfo.authorProvinceCity,
|
||||
authorType:belongPeopleInfo.authorType
|
||||
},
|
||||
onBefore() {
|
||||
setLoading(true);
|
||||
},
|
||||
onSuccess({ data }) {
|
||||
setIsEditModalOpen(true);
|
||||
setCreateProjId(data.data);
|
||||
reloadUser(messageApi, globalDispatchContext).then(() => {
|
||||
messageApi.success('扣款成功');
|
||||
});
|
||||
},
|
||||
onFinally() {
|
||||
setLoading(false);
|
||||
}
|
||||
})
|
||||
applyContactCompany:concatPeopleInfo.applyContactCompany,
|
||||
applyContactCsaNo:concatPeopleInfo.applyContactCsaNo,
|
||||
applyContactEmail:concatPeopleInfo.applyContactEmail,
|
||||
applyContactId:concatPeopleInfo.applyConcatId,
|
||||
applyContactName:concatPeopleInfo.applyContactName,
|
||||
applyContactPhone:concatPeopleInfo.applyContactPhone,
|
||||
projVersion:'v1.0'
|
||||
},
|
||||
onBefore() {
|
||||
setLoading(true);
|
||||
},
|
||||
onSuccess({ data }) {
|
||||
setIsEditModalOpen(true);
|
||||
setCreateProjId(data.data);
|
||||
reloadUser(messageApi, globalDispatchContext).then(() => {
|
||||
messageApi.success('扣款成功');
|
||||
});
|
||||
},
|
||||
onFinally() {
|
||||
setLoading(false);
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
setIsCreateModalOpen(false);
|
||||
@ -296,6 +362,20 @@ export default function ProjNew() {
|
||||
}}>
|
||||
<div>项目创建成功,开始编辑项目?</div>
|
||||
</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="选择所属者"
|
||||
destroyOnClose
|
||||
|
||||
@ -308,7 +388,7 @@ export default function ProjNew() {
|
||||
|
||||
}}>
|
||||
|
||||
<BelongPeople closeModal = {()=>{setBelongModal(false)}} setBelongPeopleInfo={setBelongPeopleInfo} belongPeopleInfo={belongPeopleInfo} setValue={setValue} isShow={true}></BelongPeople>
|
||||
<BelongPeople closeModal={() => { setBelongModal(false) }} setBelongPeopleInfo={setBelongPeopleInfo} belongPeopleInfo={belongPeopleInfo} setValue={setValue} isShow={true}></BelongPeople>
|
||||
</Modal>
|
||||
<Spin tip="正在提交..." spinning={loading} fullscreen />
|
||||
</>
|
||||
|
@ -870,8 +870,8 @@ export default function ProjEditStep2(props: any) {
|
||||
</div>
|
||||
</div>
|
||||
<div className='showInfo'>
|
||||
<div style={{ marginRight: '22px' }}>当前申请人:</div>
|
||||
<div style={{ display: applyContactName == '' ? 'block' : 'none' }}>请选择申请人</div>
|
||||
<div style={{ marginRight: '22px' }}>当前联系人:</div>
|
||||
<div style={{ display: applyContactName == '' ? 'block' : 'none' }}>请选择联系人</div>
|
||||
<div style={{ display: applyContactName == '' ? 'none' : 'block' }}>
|
||||
{applyContactName}/{applyContactPhone}{applyContactEmail ? '/' + applyContactEmail : ''}
|
||||
</div>
|
||||
@ -1022,7 +1022,7 @@ export default function ProjEditStep2(props: any) {
|
||||
// alert('申请人不能为空')
|
||||
messageApi.open({
|
||||
type: 'error',
|
||||
content: '请选择申请人'
|
||||
content: '请选择联系人'
|
||||
})
|
||||
setIsEditModalOpen(false);
|
||||
}
|
||||
|
@ -719,8 +719,8 @@ export default function ProjEditStep2() {
|
||||
</div>
|
||||
</div>
|
||||
<div className='showInfo'>
|
||||
<div style={{ marginRight: '22px' }}>当前申请人:</div>
|
||||
<div style={{ display: applyContactName == '' ? 'block' : 'none' }}>请选择申请人</div>
|
||||
<div style={{ marginRight: '22px' }}>当前联系人:</div>
|
||||
<div style={{ display: applyContactName == '' ? 'block' : 'none' }}>请选择联系人</div>
|
||||
<div style={{ display: applyContactName == '' ? 'none' : 'block' }}>
|
||||
{applyContactName}/{applyContactPhone}/{applyContactEmail}
|
||||
</div>
|
||||
@ -775,7 +775,7 @@ export default function ProjEditStep2() {
|
||||
// alert('申请人不能为空')
|
||||
messageApi.open({
|
||||
type: 'error',
|
||||
content: '请选择申请人'
|
||||
content: '请选择联系人'
|
||||
})
|
||||
setIsEditModalOpen(false);
|
||||
}
|
||||
|
@ -9,6 +9,7 @@
|
||||
}
|
||||
.proj-edit {
|
||||
background-color: var(--color-light);
|
||||
/* background-color: var(--color-light); */
|
||||
padding: 15px;
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
@ -25,6 +26,105 @@
|
||||
height: 100px;
|
||||
position: fixed;
|
||||
right: 25px;
|
||||
bottom: 50px;
|
||||
bottom: 20px;
|
||||
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;
|
||||
}
|
@ -67,3 +67,6 @@
|
||||
margin-left: 190px;
|
||||
}
|
||||
|
||||
.formItemOne .css-dev-only-do-not-override-1ae8k9u.ant-picker .ant-picker-input >input{
|
||||
font-size: 16px;
|
||||
}
|
Loading…
Reference in New Issue
Block a user