This commit is contained in:
xixi 2024-07-29 17:22:42 +08:00
parent cd8690f355
commit 8b2acb15c5
23 changed files with 683 additions and 287 deletions

View File

@ -293,7 +293,7 @@ export default function BelongPeople(props: propsInfo) {
isCrcAccount: Number(formBelong.getFieldValue('isCrcAccount')),
name: formBelong.getFieldValue('authorName'),
nameEn: formBelong.getFieldValue('nameEn') || '',
provinceCity: formBelong.getFieldValue('authorProvince').join(','),
provinceCity: formBelong.getFieldValue('authorProvince') ? formBelong.getFieldValue('authorProvince').join(',') : '',
type: formBelong.getFieldValue('authorType'),
},
onBefore() {
@ -330,7 +330,7 @@ export default function BelongPeople(props: propsInfo) {
isCrcAccount: Number(formBelong.getFieldValue('isCrcAccount')),
name: formBelong.getFieldValue('authorName'),
nameEn: formBelong.getFieldValue('nameEn'),
provinceCity: formBelong.getFieldValue('authorProvince').join(','),
provinceCity: formBelong.getFieldValue('authorProvince') ? formBelong.getFieldValue('authorProvince').join(',') : '',
type: formBelong.getFieldValue('authorType'),
},
onBefore() {
@ -650,7 +650,7 @@ export default function BelongPeople(props: propsInfo) {
record.idCardType === 'ID_CARD' ? '身份证' : '营业执照'
)}
/>
<Column title="所属者身份证号" dataIndex="idCardNo" key="belongCardNo" />
<Column title="所属者号" dataIndex="idCardNo" key="belongCardNo" />
{/* <Column title="实名认证状态" dataIndex="address" key="key" /> */}
<Column
title="操作"
@ -873,7 +873,7 @@ export default function BelongPeople(props: propsInfo) {
rules={[{ required: true, message: belongShow == 'PERSONAL' ? '请输入姓名' : '请输入公司名称' }]}
>
<Input placeholder={belongShow == 'PERSONAL' ? '请输入姓名' : '请输入公司名称'}
style={{ height: '44px', width: '384px', fontSize: '15px', marginTop: '22px' }}
style={{ height: '44px', width: '360px', fontSize: '15px', marginTop: '22px' }}
disabled={belongTitle == '查看所属者' ? true : false}
/>
@ -889,9 +889,16 @@ export default function BelongPeople(props: propsInfo) {
// label="公司英文名"
name="nameEn"
// rules={[{ required: true, message: belongShow == 'PERSONAL' ? '请输入英文名' : '请输入公司英文名称' }]}
rules={[
{ required: true, message: belongShow == 'PERSONAL' ? '请输入英文名' : '请输入公司英文名称' },
{
pattern: /^[A-Za-z]+$/,
message: '请输入正确的英文名'
}
]}
>
<Input placeholder={belongShow == 'ORGANIZATION' ? '请输入公司英文名称' : '请输入英文名'}
style={{ height: '44px', width: '384px', fontSize: '15px', marginTop: '22px' }}
style={{ height: '44px', width: '360px', fontSize: '15px', marginTop: '22px' }}
disabled={belongTitle == '查看所属者' ? true : false}
/>
</Form.Item>
@ -929,7 +936,7 @@ export default function BelongPeople(props: propsInfo) {
<Col span={12}>
<div className='blongNameInt blongSmallNamel'>
<div className='blongTitle blongsmallTitle '>{belongShow == 'PERSONAL' ? '身份证号' : '营业执照号'}:</div>
<div className='blongTitle blongsmallTitle '>{belongShow == 'PERSONAL' ? '身份证号' : '统一社会信用代码'}:</div>
<Form.Item<BelongPeopleType>
// label="证件号"
@ -937,7 +944,7 @@ export default function BelongPeople(props: propsInfo) {
rules={[{ required: true, message: '请输入证件号' }]}
>
<Input placeholder="请输入证件号"
style={{ height: '44px', width: '384px', fontSize: '15px', marginTop: '22px' }}
style={{ height: '44px', width: '360px', fontSize: '15px', marginTop: '22px' }}
disabled={belongTitle == '查看所属者' ? true : false}
/>
@ -955,10 +962,10 @@ export default function BelongPeople(props: propsInfo) {
<Form.Item<BelongPeopleType>
// label="省市"
name="authorProvince"
rules={[{ required: true, message: '请选择省市' }]}
// rules={[{ required: true, message: '请选择省市' }]}
>
<Cascader options={areaArray}
style={{ height: '44px', width: '384px', fontSize: '15px', marginTop: '22px' }}
style={{ height: '44px', width: '360px', fontSize: '15px', marginTop: '22px' }}
loadData={(selectedOptions: Option[]) => {
const targetOption = selectedOptions[selectedOptions.length - 1];

View File

@ -64,7 +64,7 @@ export default function AiHelper(props: PropsType) {
}
},
onSuccess(data: any) {
console.log(data);
// console.log(data);
setPageTotal(data.data.total)
setpageImgArray(data.data.rows)
}
@ -146,7 +146,7 @@ export default function AiHelper(props: PropsType) {
}
},
onSuccess({ data }) {
console.log('登录页图片列表', data);
// console.log('登录页图片列表', data);
setloginpageArray(data.rows)
setTotal(data.total)

View File

@ -48,7 +48,7 @@ export default function AiHelperMod(props: PropsType) {
// const [items, setItems] = useState<any[]>([])
const pathParams = useParams();
useEffect(() => {
console.log('mods', props.mods);
// console.log('mods', props.mods);
setModArray(props.mods);
setNewModArray(props.newMods);

View File

@ -7,10 +7,12 @@ import { ProjAdditionalType } from "../../interfaces/proj/IProj.ts";
import serveImg from '../../static/serve.png'
import useImg from '../../static/use.png'
import leftImg from '../../static/createPro/left.png'
import React from 'react';
export default function CardProjType(props: ICardProj) {
const [chargeAmount, setChargeAmount] = useState(0);
const [pkg, setPkg] = useState(false);
const [videoDemo, setVideoDemo] = useState(false);
const [urgent, setUrgent] = useState(false);
const renderContents = (lineIndex: number, contents: string[]) => {
return contents.map((item, index) => <li key={`content_${lineIndex}_${index}`}>
@ -19,12 +21,73 @@ export default function CardProjType(props: ICardProj) {
</li>);
}
const renderNewContents = (lineIndex: number, contents: string[]) => {
return contents.map((item, index) => <li key={`content_${lineIndex}_${index}`}>
// return contents.map((item, index) => <li key={`content_${lineIndex}_${index}`}>
// <span className="newIndex">
// <img src={leftImg} alt="" />
// </span>
// <span className="title">{item}</span>
// </li>);
// 点击事件处理函数
return contents.map((item, index) => {
// 检查是否包含关键词
const containsIdentification = item.includes('鉴别材料');
const containsCloudService = item.includes('云服务');
if (!containsIdentification && !containsCloudService) {
return (
<li key={`content_${lineIndex}_${index}`}>
<span className="newIndex">
<img src={leftImg} alt="" />
</span>
<span className="title">{item}</span>
</li>);
</li>
);
}
// 使用正则表达式进行分割,保留分隔符
const parts = item.split(/(鉴别材料|云服务)/);
return (
<li key={`content_${lineIndex}_${index}`}>
<span className="newIndex">
<img src={leftImg} alt="" />
</span>
<span className="title" style={{ display: 'flex' }}>
{parts.map((part, i) => {
if (part === '鉴别材料') {
return (
<div className='notes-text'>
<span
key={i}
style={{ cursor: 'pointer', color: 'var(--color-blue)' }}
>
</span>
<div className='notes-box'></div>
</div>
);
}
if (part === '云服务') {
return (
<div className='notes-text'>
<span
key={i}
style={{ cursor: 'pointer', color: 'var(--color-blue)' }}
>
</span>
<div className='notes-box'>线访</div>
</div>
);
}
return <React.Fragment key={i}>{part}</React.Fragment>;
})}
</span>
</li>
);
});
}
const renderLines = () => {
@ -60,6 +123,8 @@ export default function CardProjType(props: ICardProj) {
setPkg(true);
} else if (line.id == ProjAdditionalType.VIDEO_DEMO) {
setVideoDemo(true);
}else if(line.id ==ProjAdditionalType.URGENT){
setUrgent(true)
}
setChargeAmount(chargeAmount + line.price);
} else {
@ -67,6 +132,8 @@ export default function CardProjType(props: ICardProj) {
setPkg(false);
} else if (line.id == ProjAdditionalType.VIDEO_DEMO) {
setVideoDemo(false);
}else if(line.id ==ProjAdditionalType.URGENT){
setUrgent(false)
}
setChargeAmount(chargeAmount - line.price);
}
@ -106,7 +173,8 @@ export default function CardProjType(props: ICardProj) {
<button onClick={() => {
buy.handleClick(props.head, {
pkg: pkg,
videoDemo: videoDemo
videoDemo: videoDemo,
urgent:urgent,
});
}}
style={{
@ -181,13 +249,21 @@ export default function CardProjType(props: ICardProj) {
<div className='projTop'>
{/* <div className="proj-head" style={{ backgroundImage: `url(${ProjCardHeadBg})` }}> */}
<div className="proj-head">
<div>{props.head}</div>
<div className='head-box'>{props.head}</div>
<div className='detail-box'>
<div className='detail-text'>
<div className="triangle"></div>
{props.details}
</div>
</div>
</div>
<div className="proj-body">
<div>{renderLines()}</div>
<div>{renderNew()}</div>
{renderCharge()}
</div>
</div>
<div className="proj-foot">{renderBuyBtn()}</div>
</div>

View File

@ -4,6 +4,7 @@
/* position: relative; */
/* background-color: rgb(255, 255, 255); */
margin-left: 28px;
/* margin-top: 0; */
}
.seruseImg {
@ -20,24 +21,65 @@
}
.proj .proj-head {
font-weight: bold;
font-size: 30px;
color: #492800;
text-align: center;
/* background-image: url('./proj-card-head-bg.png'); */
/* background-size: 100% 100%; */
/* background-repeat: no-repeat; */
/* position: absolute; */
width: 100%;
/* height: 132px; */
line-height: 100px;
/* line-height: 100px; */
/* left: 38px; */
/* top: -4px; */
/* background-color: aqua; */
}
.head-box{
/* cursor: pointer; */
font-weight: bold;
font-size: 30px;
color: #492800;
text-align: center;
/* background-color: pink; */
line-height: 60px;
margin-top: 10px;
}
.detail-box{
padding: 0 18px;
/* background-color: skyblue; */
/* padding: 10px; */
box-sizing: border-box;
height: 40px;
font-size: 12px;
/* text-align: center; */
color: rgb(167, 167, 167);
/* margin-bottom: 10px; */
}
.detail-text{
background-color: #FFFBEF;
display: flex;
align-items: center;
height: 40px;
padding: 0 10px;
border-radius: 5px;
color: #FFAF22;
position: relative;
}
.triangle {
position: absolute;
top: -10px;
left: calc(50% - 5px);
width: 0;
height: 0;
border-left: 10px solid transparent;
border-right: 10px solid transparent;
border-bottom: 10px solid #FFFBEF; /* 87px 是一个正三角形的高度 */
}
.proj .proj-body {
margin-top: 5px;
/* min-height: 385px; */
margin-bottom: 15px;
/* padding: 60px 15px 15px 15px; */
@ -71,10 +113,10 @@
.proj .proj-body .line .line-content ul li {
display: flex;
align-items: center;
margin-top: 15px;
margin-top: 8px;
font-family: PingFang SC;
font-weight: 500;
font-size: 18px;
font-size: 14px;
color: #6F6F6F;
margin-left: 48px;
}
@ -84,21 +126,21 @@
}
.proj .proj-body .line .line-content ul li .index {
width: 20px;
height: 20px;
line-height: 20px;
width: 15px;
height: 15px;
line-height: 15px;
border-radius: 50%;
display: inline-block;
/* background-color: rgba(251, 176, 59, 1); */
background: #F38F1E;
text-align: center;
color: var(--color-light);
font-size: 12px;
font-size: 10px;
}
.proj .proj-body .line .line-content ul li .newIndex img {
width: 26px;
height: 20px;
width: 16px;
height: 12px;
}
.proj .proj-body .line .line-content ul li .title {
@ -133,7 +175,7 @@
.chargeCon {
font-weight: 500;
font-size: 18px;
font-size: 14px;
color: #989898;
}
@ -211,3 +253,23 @@
/* background-color: red; */
margin-left: 9px;
}
/* 注释 */
.notes-text{
position: relative;
}
.notes-box{
position: absolute;
padding: 5px;
box-sizing: border-box;
width: 250px;
top: 20px;
left: 0;
background-color: rgb(241, 241, 241);
border: 1px solid rgb(212, 212, 212);
display: none;
border-radius: 5px;
z-index: 9;
}
.notes-text:hover .notes-box{
display: block;
}

View File

@ -30,6 +30,7 @@ export default function ListProj() {
// }
const keywords = state ? state.keyword : ''
const name = state ? state.name : ''
const chargeAdditionals = state? state.chargeAdditionals:''
// console.log(keywords);
// const images = [syminga,symingb,symingc,symingd]
const listProjRef: MutableRefObject<HTMLDivElement | null> = useRef(null);
@ -57,6 +58,7 @@ export default function ListProj() {
rows: 10,
keywords: keywords,
charge: name,
chargeAdditionals:chargeAdditionals,
projCategoryId: indexListContext.category,
status: indexListContext.status ? indexListContext.status : getMenuActive()
}
@ -154,7 +156,7 @@ export default function ListProj() {
setTimeout(() => {
setShowPage(true)
}, 0);
}, [indexListContext.status, keywords, name])
}, [indexListContext.status, keywords, name,chargeAdditionals])
useEffect(() => {
if (indexListContext.categorys) {

View File

@ -135,6 +135,8 @@ export default function Payment(props: IPaymentProps) {
setIsLoading(true);
},
onSuccess({ data }) {
// console.log('用户id',data.accountRechargeId);
setAccountRechargeId(data.accountRechargeId);
setThirdPartyPayUrl(data.thirdPartyPayUrl);
countdown();
@ -210,27 +212,27 @@ export default function Payment(props: IPaymentProps) {
</div>
<div className='moneyBox' >
<Tag style={{ cursor: 'pointer' }} onClick={() => {
form.setFieldValue('rechargeMoney', '100');
form.setFieldValue('rechargeMoney', 100);
setIsRechargeMoneyEdit(false)
getPay()
}} color="volcano">100</Tag>
<Tag style={{ cursor: 'pointer' }} onClick={() => {
form.setFieldValue('rechargeMoney', '200');
form.setFieldValue('rechargeMoney', 200);
setIsRechargeMoneyEdit(false)
getPay()
}} color="volcano">200</Tag>
<Tag style={{ cursor: 'pointer' }} onClick={() => {
form.setFieldValue('rechargeMoney', '300');
form.setFieldValue('rechargeMoney', 300);
setIsRechargeMoneyEdit(false)
getPay()
}} color="volcano">300</Tag>
<Tag style={{ cursor: 'pointer' }} onClick={() => {
form.setFieldValue('rechargeMoney', '400');
form.setFieldValue('rechargeMoney', 400);
setIsRechargeMoneyEdit(false)
getPay()
}} color="volcano">400</Tag>
<Tag style={{ cursor: 'pointer' }} onClick={() => {
form.setFieldValue('rechargeMoney', '500');
form.setFieldValue('rechargeMoney', 500);
setIsRechargeMoneyEdit(false)
getPay()
}} color="volcano">500</Tag>

View File

@ -51,5 +51,4 @@
}
.moneyBox {
display: flex;
flex-wrap: ;
}

View File

@ -1,43 +1,53 @@
import {
Button,
Col,
DatePicker, Flex,
// DatePicker,
Flex,
Form,
GetProp,
// GetProp,
Input,
message,
Radio,
Row,
Spin,
Upload,
// Spin,
// Upload,
UploadFile,
UploadProps
// UploadProps
} from "antd";
import {DevUserId, downloadUrl, get, uploadImageUrl} from "../../util/AjaxUtils.ts";
import {
// DevUserId,
downloadUrl, get,
// uploadImageUrl
} from "../../util/AjaxUtils.ts";
import { useEffect, useState } from "react";
import locale from "antd/es/date-picker/locale/zh_CN";
import dayjs, {Dayjs} from "dayjs";
// import locale from "antd/es/date-picker/locale/zh_CN";
// import dayjs, { Dayjs } from "dayjs";
type FormDataType = {
userId: string;
userInfoId: string;
userInfoType: string;
userInfoName: string;
idCardType: string;
idCardNumber: string;
idCardFront: string;
idCardBack: string;
idCardStartDate: Dayjs;
idCardEndDate: Dayjs;
legalPerson: string;
establishDate: Dayjs;
contactAddress: string;
contactPhone:string;
idCardType?:string;
userInfoNameEn?:string
contactName?:string
idCardNumber?:string
// idCardType: string;
// idCardNumber: string;
// idCardFront: string;
// idCardBack: string;
// idCardStartDate: Dayjs;
// idCardEndDate: Dayjs;
// legalPerson: string;
// establishDate: Dayjs;
// contactAddress: string;
// contactPhone: string;
}
type FileType = Parameters<GetProp<UploadProps, 'beforeUpload'>>[0];
// type FileType = Parameters<GetProp<UploadProps, 'beforeUpload'>>[0];
const dateFormat = 'YYYY年MM月DD日';
// const dateFormat = 'YYYY年MM月DD日';
export interface IUserEditProps {
@ -51,37 +61,41 @@ export default function UserEdit(props: IUserEditProps) {
const [userInfoType, setUserInfoType] = useState('PERSONAL');
const [idCardFrontImgArray, setIdCardFrontImgArray] = useState<UploadFile[]>([]);
const [idCardBackImgArray, setIdCardBackImgArray] = useState<UploadFile[]>([]);
const [loading, setLoading] = useState(false);
// const [loading, setLoading] = useState(false);
const beforeUpload = (file: FileType) => {
const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png';
if (!isJpgOrPng) {
message.error('只能上传 JPG/PNG 格式文件!');
return;
}
return isJpgOrPng;
};
// const beforeUpload = (file: FileType) => {
// const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png';
// if (!isJpgOrPng) {
// message.error('只能上传 JPG/PNG 格式文件!');
// return;
// }
// return isJpgOrPng;
// };
useEffect(() => {
get<any>({
messageApi,
url: 'api/user-info/get-self',
onSuccess({ data }) {
// console.log('证件号',data.idCardNumber);
form.setFieldsValue({
userId: data.userId,
userInfoId: data.userInfoId,
userInfoName: data.userInfoName,
userInfoType: data.userInfoType,
contactAddress: data.contactAddress,
// contactAddress: data.contactAddress,
contactPhone: data.contactPhone,
establishDate: data.establishDate ? dayjs(data.establishDate, 'YYYY-MM-DD') : '',
// establishDate: data.establishDate ? dayjs(data.establishDate, 'YYYY-MM-DD') : '',
idCardNumber: data.idCardNumber,
idCardFront: data.idCardFront,
idCardStartDate: data.idCardStartDate ? dayjs(data.idCardStartDate, 'YYYY-MM-DD') : '',
idCardBack: data.idCardBack,
idCardEndDate: data.idCardEndDate ? dayjs(data.idCardEndDate, 'YYYY-MM-DD') : '',
// idCardFront: data.idCardFront,
// idCardStartDate: data.idCardStartDate ? dayjs(data.idCardStartDate, 'YYYY-MM-DD') : '',
// idCardBack: data.idCardBack,
// idCardEndDate: data.idCardEndDate ? dayjs(data.idCardEndDate, 'YYYY-MM-DD') : '',
idCardType: data.idCardType,
legalPerson: data.legalPerson,
userInfoNameEn:data.userInfoNameEn,
contactName:data.contactName
// legalPerson: data.legalPerson,
})
if (data.idCardFront) {
const url = downloadUrl(data.idCardFront);
@ -120,22 +134,50 @@ export default function UserEdit(props: IUserEditProps) {
layout="vertical"
form={form}
onFinish={() => {
if(userInfoType == 'PERSONAL'){
props.handleConfirm({
userId: form.getFieldValue('userId'),
userInfoId: form.getFieldValue('userInfoId'),
userInfoName: form.getFieldValue('userInfoName'),
userInfoType: form.getFieldValue('userInfoType'),
contactAddress: form.getFieldValue('contactAddress'),
contactPhone:form.getFieldValue('contactPhone'),
establishDate: form.getFieldValue('establishDate') ? form.getFieldValue('establishDate').format(dateFormat) : '',
idCardBack: form.getFieldValue('idCardBack'),
idCardEndDate: form.getFieldValue('idCardEndDate') ? form.getFieldValue('idCardEndDate').format(dateFormat) : '',
idCardFront: form.getFieldValue('idCardFront'),
idCardNumber: form.getFieldValue('idCardNumber'),
idCardStartDate: form.getFieldValue('idCardStartDate') ? form.getFieldValue('idCardStartDate').format(dateFormat) : '',
idCardType: form.getFieldValue('idCardType'),
legalPerson: form.getFieldValue('legalPerson'),
userInfoType: form.getFieldValue('userInfoType'),
// userInfoType: form.getFieldValue('userInfoType'),
// contactAddress: form.getFieldValue('contactAddress'),
// contactPhone: form.getFieldValue('contactPhone'),
// establishDate: form.getFieldValue('establishDate') ? form.getFieldValue('establishDate').format(dateFormat) : '',
// idCardBack: form.getFieldValue('idCardBack'),
// idCardEndDate: form.getFieldValue('idCardEndDate') ? form.getFieldValue('idCardEndDate').format(dateFormat) : '',
// idCardFront: form.getFieldValue('idCardFront'),
// idCardNumber: form.getFieldValue('idCardNumber'),
// idCardStartDate: form.getFieldValue('idCardStartDate') ? form.getFieldValue('idCardStartDate').format(dateFormat) : '',
// idCardType: form.getFieldValue('idCardType'),
// legalPerson: form.getFieldValue('legalPerson'),
});
}else{
props.handleConfirm({
userId: form.getFieldValue('userId'),
userInfoId: form.getFieldValue('userInfoId'),
userInfoName: form.getFieldValue('userInfoName'),
contactName:form.getFieldValue('contactName'),
contactPhone:form.getFieldValue('contactPhone'),
idCardType:form.getFieldValue('idCardType'),
userInfoType: form.getFieldValue('userInfoType'),
userInfoNameEn:form.getFieldValue('userInfoNameEn'),
idCardNumber:form.getFieldValue('idCardNumber'),
// userInfoType: form.getFieldValue('userInfoType'),
// contactAddress: form.getFieldValue('contactAddress'),
// contactPhone: form.getFieldValue('contactPhone'),
// establishDate: form.getFieldValue('establishDate') ? form.getFieldValue('establishDate').format(dateFormat) : '',
// idCardBack: form.getFieldValue('idCardBack'),
// idCardEndDate: form.getFieldValue('idCardEndDate') ? form.getFieldValue('idCardEndDate').format(dateFormat) : '',
// idCardFront: form.getFieldValue('idCardFront'),
// idCardNumber: form.getFieldValue('idCardNumber'),
// idCardStartDate: form.getFieldValue('idCardStartDate') ? form.getFieldValue('idCardStartDate').format(dateFormat) : '',
// idCardType: form.getFieldValue('idCardType'),
// legalPerson: form.getFieldValue('legalPerson'),
});
}
}}
>
<Form.Item label="类型"
@ -155,48 +197,123 @@ export default function UserEdit(props: IUserEditProps) {
<Radio.Button value="ENTERPRISE"></Radio.Button>
</Radio.Group>
</Form.Item>
<Form.Item label="名称"
{/* <Form.Item label={userInfoType == 'PERSONAL' ? '' : ''}
name="userInfoName"
rules={[{ required: true, message: '请输入名称' }]}
>
<Input placeholder="请输入名称" />
</Form.Item> */}
{
userInfoType == 'PERSONAL' ? (
<>
<Row gutter={15}>
<Col span={12}>
<Form.Item label='姓名'
name="userInfoName"
rules={[{ required: true, message: '请输入名称' }]}
>
<Input placeholder="请输入名称" />
</Form.Item>
{
userInfoType == 'PERSONAL' ? (
<Form.Item label="证件类型"
</Col>
<Col span={12}>
<Form.Item label="联系电话"
name="contactPhone"
rules={[{ required: true, message: '请输入联系电话' }]}
>
<Input placeholder="请输入联系电话" />
</Form.Item>
</Col>
</Row>
{/* <Form.Item label=""
name="idCardType"
rules={[{required: true, message: '请选择证件类型'}]}
// rules={[{ required: true, message: '请选择证件类型' }]}
>
<Radio.Group>
<Radio.Button value="ID_CARD"></Radio.Button>
</Radio.Group>
</Form.Item>
<Form.Item label="证件号"
name="idCardNumber"
// rules={[{ required: true, message: '请输入证件号' }]}
>
<Input placeholder="请输入证件号" />
</Form.Item> */}
</>
) : <></>
}
{
userInfoType == 'ENTERPRISE' ? (
<>
<Row gutter={15}>
<Col span={12}>
<Form.Item label='公司名称'
name="userInfoName"
rules={[{ required: true, message: '请输入名称' }]}
>
<Input placeholder="请输入名称" />
</Form.Item>
</Col>
<Col span={12}>
<Form.Item label="公司英文名"
name="userInfoNameEn"
rules={[
{ required: true, message: '请输入公司英文名' },
{
pattern: /^[A-Za-z]+$/,
message: '请输入正确的英文名'
}
]}
>
<Input placeholder="请输入公司英文名" />
</Form.Item>
</Col>
</Row>
<Row gutter={15}>
<Col span={12}>
<Form.Item label='联系人'
name="contactName"
rules={[{ required: true, message: '请输入联系人' }]}
>
<Input placeholder="请输入联系人" />
</Form.Item>
</Col>
<Col span={12}>
<Form.Item label="联系电话"
name="contactPhone"
rules={[{ required: true, message: '请输入联系电话' }]}
>
<Input placeholder="请输入联系电话" />
</Form.Item>
</Col>
</Row>
<Form.Item label="证件类型"
name="idCardType"
rules={[{ required: true, message: '请选择证件类型' }]}
>
<Radio.Group>
<Radio.Button value="ORGANIZATION_CODE"></Radio.Button>
<Radio.Button value="ORGANIZATION_CODE"></Radio.Button>
</Radio.Group>
</Form.Item>
) : <></>
}
<Form.Item label="证件号"
name="idCardNumber"
rules={[{required: true, message: '请输入证件号'}]}
// rules={[{ required: true, message: '请输入证件号' }]}
>
<Input placeholder="请输入证件号" />
</Form.Item>
<Row gutter={15}>
<div style={{marginTop:-20,marginBottom:10,color:'green'}}>(:此处信息在后期软著制作中会用到,)</div>
</>
) : <></>
}
{/* <Row gutter={15}>
<Col span={12}>
<Form.Item label="证件照正面"
name="idCardFront"
rules={[{required: true, message: '请上传证件照正面'}]}
// rules={[{ required: true, message: '请上传证件照正面' }]}
>
<Upload
name="image"
@ -241,13 +358,13 @@ export default function UserEdit(props: IUserEditProps) {
disabled={idCardFrontImgArray.length > 0}></Button>
</Upload>
</Form.Item>
</Col>
{
</Col> */}
{/* {
userInfoType == 'PERSONAL' ? (
<Col span={12}>
<Form.Item label="证件照反面"
name="idCardBack"
rules={[{required: true, message: '请上传证件照反面'}]}
// rules={[{ required: true, message: '请上传证件照反面' }]}
>
<Upload
name="image"
@ -295,13 +412,13 @@ export default function UserEdit(props: IUserEditProps) {
</Col>
) : <></>
}
</Row>
<Row gutter={15}>
</Row> */}
{/* <Row gutter={15}>
<Col span={12}>
<Form.Item<FormDataType>
label="证件开始时间"
name="idCardStartDate"
rules={[{required: true, message: '请选择证件开始时间'}]}
// rules={[{ required: true, message: '请选择证件开始时间' }]}
>
<DatePicker placeholder="证件开始时间"
format={dateFormat}
@ -314,7 +431,7 @@ export default function UserEdit(props: IUserEditProps) {
<Form.Item<FormDataType>
label="证件结束时间"
name="idCardEndDate"
rules={[{required: true, message: '请选择证件结束时间'}]}
// rules={[{ required: true, message: '请选择证件结束时间' }]}
>
<DatePicker placeholder="证件结束时间"
format={dateFormat}
@ -323,14 +440,14 @@ export default function UserEdit(props: IUserEditProps) {
/>
</Form.Item>
</Col>
</Row>
{
</Row> */}
{/* {
userInfoType == 'ENTERPRISE' ? (
<Row gutter={15}>
<Col span={12}>
<Form.Item label="法人"
name="legalPerson"
rules={[{required: true, message: '请输入法人'}]}
// rules={[{ required: true, message: '请输入法人' }]}
>
<Input placeholder="请输入法人" />
</Form.Item>
@ -339,7 +456,7 @@ export default function UserEdit(props: IUserEditProps) {
<Form.Item<FormDataType>
label="成立时间"
name="establishDate"
rules={[{required: true, message: '请选择成立时间'}]}
// rules={[{ required: true, message: '请选择成立时间' }]}
>
<DatePicker placeholder="成立时间"
format={dateFormat}
@ -350,25 +467,25 @@ export default function UserEdit(props: IUserEditProps) {
</Col>
</Row>
) : <></>
}
<Row gutter={15}>
<Col span={12}>
} */}
{/* <Row gutter={15}>
<Col span={24}>
<Form.Item label="联系地址"
name="contactAddress"
rules={[{required: true, message: '请输入联系地址'}]}
// rules={[{ required: true, message: '请输入联系地址' }]}
>
<Input placeholder="请输入联系地址" />
</Form.Item>
</Col>
<Col span={12}>
</Col> */}
{/* <Col span={12}>
<Form.Item label="联系电话"
name="contactPhone"
rules={[{required: true, message: '请输入联系电话'}]}
>
<Input placeholder="请输入联系电话"/>
</Form.Item>
</Col>
</Row>
</Col> */}
{/* </Row> */}
<Form.Item wrapperCol={{ span: 24 }}>
<Flex align="center" justify="center" gap="large">
<Button type="primary"
@ -379,7 +496,7 @@ export default function UserEdit(props: IUserEditProps) {
</Flex>
</Form.Item>
</Form >
<Spin tip="正在提交..." spinning={loading} fullscreen/>
{/* <Spin tip="正在提交..." spinning={loading} fullscreen /> */}
{contextHolder}
</>
)

View File

@ -17,7 +17,8 @@ export interface ICardProjBuy {
handleClick(title: string, additional: {
pkg: boolean,
videoDemo: boolean
videoDemo: boolean,
urgent:boolean
}): void;
}
@ -28,5 +29,6 @@ export interface ICardProj {
buyArray: ICardProjBuy[];
newArray:ICardProjBodyLine[];
isShow:number
isClickable:number
isClickable:number,
details:string
}

View File

@ -30,7 +30,8 @@ export enum ProjChargeType {
export enum ProjAdditionalType {
PKG = 'PKG',
VIDEO_DEMO = 'VIDEO_DEMO'
VIDEO_DEMO = 'VIDEO_DEMO',
URGENT = 'URGENT'
}
export interface IProjCharge {

View File

@ -178,6 +178,7 @@ export default function Head() {
</div>
</div>
<Modal open={isSelfModalOpen}
destroyOnClose={true}
title="个人信息"
footer={false}
onCancel={() => {
@ -186,6 +187,8 @@ export default function Head() {
return;
}
setIsSelfModalOpen(false)
// console.log('用户信息',globalContext.user.hasUserInfo);
}}>
<UserEdit handleConfirm={(data) => {
modal.confirm({

View File

@ -32,6 +32,7 @@ export default function Index() {
// 关键字
const [keywords, setKeywords] = useState('');
const [type, setType] = useState('')
const [chargeAdditionals,setchargeAdditionals] = useState('')
// const indexListContext = useContext(IndexListContext);
@ -348,7 +349,9 @@ export default function Index() {
nav('/home', {
state: {
keyword: value,
name: type
name: type,
chargeAdditionals:chargeAdditionals,
}
})
}
@ -359,7 +362,8 @@ export default function Index() {
nav('/home', {
state: {
keyword: '',
name: type
name: type,
chargeAdditionals:chargeAdditionals,
}
})
}
@ -441,6 +445,7 @@ export default function Index() {
nav('/home', {
state: {
keyword: keywords,
chargeAdditionals:chargeAdditionals,
name: value
}
})
@ -454,6 +459,32 @@ export default function Index() {
]}
defaultValue=""
// placeholder={'选择类型'}
/>
<Select
style={{ height: '31px', width: '183px', marginLeft: 20, display: showSearchBox ? 'block' : 'none' }}
onChange={(value: string) => {
// console.log(`selected ${value}`);
setchargeAdditionals(value)
// alert(`selected ${value}`)
// lyp
nav('/home', {
state: {
keyword: keywords,
name: type,
chargeAdditionals:value
}
})
}}
options={[
{ value: '', label: '选择拓展收费' },
{ value: 'PKG', label: '安装包' },
{ value: 'VIDEO_DEMO', label: '演示视频' },
{ value: 'URGENT', label: '加急' },
]}
defaultValue=""
// placeholder={'选择类型'}
/>
<div style={{
width: '253px',

View File

@ -105,18 +105,19 @@ export default function ProjCreate() {
</div>
</div>
<CardProjType
head={'全托'}
head={'全托管'}
details={'从下单到取证,仅需提供基本信息,我们为您提供一站式管家服务。'}
bodyLineArray={[
{
title: '提供的服务:',
contents: [
'提供系统搭建',
'系统可在线运行三年',
'软著材料编写',
'软著申报',
'包下证',
'提供系统演示视频文件',
'提供系统安装包'
'包可运行软件开发与搭建',
'包鉴别材料撰写',
'包代办,包下证,包开发票',
'提供可运行软件安装包',
'提供可运行软件云服务900天',
'提供可运行软件演示视频',
'客服一对一服务'
]
},
@ -125,17 +126,27 @@ export default function ProjCreate() {
{
title: '使用流程:',
contents: [
'系统操作手册执行',
'填写系统名称',
'填写基本信息',
'接收证书'
]
}
]
}
chargeLineArray={[
{
id: ProjAdditionalType.URGENT,
price: charge.urgent,
title: `加急办理 ${charge.urgent / 100}`
},
]}
buyArray={[
{
id: ProjChargeType.ALL,
price: allInfo.price,
handleClick: () => {
nav(`/proj-new/${ProjChargeType.ALL}`)
handleClick: (_title, additional) => {
nav(`/proj-new/${ProjChargeType.ALL}?${additional.urgent ? 'urgent=true' : 'pkg='}`)
}
}
]}
@ -200,14 +211,18 @@ export default function ProjCreate() {
/> */}
<CardProjType
head={'写材料'}
details={'通过平台自己搭建可运行软件后由平台自动生成相关鉴别材料,下载鉴别材料后可自行申报或找相关代理机构申报。'}
bodyLineArray={[
{
title: '提供的服务:',
contents: [
'提供系统搭建平台与客服指导',
'系统可在线运行一年',
'软著材料编写',
'资料补正三次',
'通过平台自己搭建可运行软件',
'平台自动撰写鉴别材料',
'包补正材料撰写一直到下证',
'两次补正不通过平台退款',
'包开发票',
'提供可运行软件云服务300天',
'客服一对一服务'
]
},
@ -216,7 +231,7 @@ export default function ProjCreate() {
{
title: '使用流程:',
contents: [
'系统操作手册执行',
'按系统操作流程执行',
]
}
@ -250,12 +265,15 @@ export default function ProjCreate() {
/>
<CardProjType
head={`免费试用${freeCount}`}
details={'每个账户的免费试用次数为3次。免费试用主要目的是让您了解如何使用平台可全过程体验。'}
bodyLineArray={[
{
title: '提供的服务:',
contents: [
'提供系统搭建平台与客服指导',
'系统可在线存储三天',
'通过平台自己搭建可运行软件',
'平台自动撰写鉴别材料',
'提供可运行软件云服务10天',
'客服一对一服务'
]
},
@ -264,7 +282,7 @@ export default function ProjCreate() {
{
title: '使用流程:',
contents: [
'系统操作手册执行',
'按系统操作流程执行',
]
}
]

View File

@ -347,6 +347,11 @@ export default function ProjEdit() {
}
// 查看ai是否关闭
const getListMods = () => {
get<any>({
messageApi: messageApi,
url: `/api/proj/get/${pathParams.projId}`,
onSuccess({ data }) {
if (data.projIntroduction && data.projDesc) {
get<any[]>({
messageApi,
url: `/api/proj-mod/list/proj-id/${pathParams.projId}`,
@ -356,7 +361,7 @@ export default function ProjEdit() {
onSuccess({ data }) {
console.log('模块信息', data);
// setListMods(data)
if(aiHelper.projIntroduction && aiHelper.projDesc && data.length > 0){
if (data.length > 0) {
setAiHelperModalOpen(false);
} else {
messageApi.error('须完成系统简介,系统详情,功能列表的生成才可关闭弹窗');
@ -367,6 +372,31 @@ export default function ProjEdit() {
}
})
} else {
messageApi.error('须完成系统简介,系统详情,功能列表的生成才可关闭弹窗');
}
}
})
// get<any[]>({
// messageApi,
// url: `/api/proj-mod/list/proj-id/${pathParams.projId}`,
// onBefore() {
// },
// onSuccess({ data }) {
// console.log('模块信息',data);
// // setListMods(data)
// if(aiHelper.projIntroduction && aiHelper.projDesc && data.length > 0){
// setAiHelperModalOpen(false);
// }else{
// messageApi.error('须完成系统简介,系统详情,功能列表的生成才可关闭弹窗');
// }
// },
// onFinally() {
// }
// })
}
useEffect(() => {
renderData();

View File

@ -1128,8 +1128,8 @@ export default function ProjEditAll() {
justifyContent:'center',
flexDirection:'column'
}}>
<img src={progress=='PRODUCTION'?PRODUCTION:progress=='SUBMIT'? SUBMIT:progress=='DONE'? DONE:ING} alt="" width={300}/>
<div style={{marginTop:10}}>{progress=='PRODUCTION'?'您申请的软著正在制作中':progress=='SUBMIT'? '您申请的软著已提交待审核':progress=='DONE'? '您申请的软著已完成':'您申请的软著等待制作中'}</div>
<img src={progress=='PRODUCTION'?PRODUCTION:progress=='SUBMIT_FOR_REVIEW'? SUBMIT:progress=='DONE'? DONE:ING} alt="" width={300}/>
<div style={{marginTop:10}}>{progress=='PRODUCTION'?'您申请的软著正在制作中,预计一日内完成':progress=='SUBMIT_FOR_REVIEW'? '您申请的软著已提交国家版权中心,预计60个工作日内下证':progress=='DONE'? '您申请的软著已完成,请在页面证书下载处下载':'您申请的软著等待制作中,预计两日内完成'}</div>
</div>
</Modal>
</div>

View File

@ -84,6 +84,11 @@ export default function ProjEdit() {
const [generateErrorModal, setGenerateErrorModal] = useState(false);
// 查看ai是否关闭
const getListMods = () => {
get<any>({
messageApi: messageApi,
url: `/api/proj/get/${pathParams.projId}`,
onSuccess({ data }) {
if (data.projIntroduction && data.projDesc) {
get<any[]>({
messageApi,
url: `/api/proj-mod/list/proj-id/${pathParams.projId}`,
@ -93,7 +98,7 @@ export default function ProjEdit() {
onSuccess({ data }) {
console.log('模块信息', data);
// setListMods(data)
if(aiHelper.projIntroduction && aiHelper.projDesc && data.length > 0){
if (data.length > 0) {
setAiHelperModalOpen(false);
} else {
messageApi.error('须完成系统简介,系统详情,功能列表的生成才可关闭弹窗');
@ -104,6 +109,31 @@ export default function ProjEdit() {
}
})
} else {
messageApi.error('须完成系统简介,系统详情,功能列表的生成才可关闭弹窗');
}
}
})
// get<any[]>({
// messageApi,
// url: `/api/proj-mod/list/proj-id/${pathParams.projId}`,
// onBefore() {
// },
// onSuccess({ data }) {
// console.log('模块信息',data);
// // setListMods(data)
// if(aiHelper.projIntroduction && aiHelper.projDesc && data.length > 0){
// setAiHelperModalOpen(false);
// }else{
// messageApi.error('须完成系统简介,系统详情,功能列表的生成才可关闭弹窗');
// }
// },
// onFinally() {
// }
// })
}
const renderEditStep = (data: any, isEdited: boolean, isGenerateSuccess: boolean) => {
const editStepArray: IProjEdit[] = [];
@ -297,7 +327,7 @@ export default function ProjEdit() {
onSuccess({ data }) {
// const isEdited = data.editSteps[0].editStatus == EditStepEnum.EDITED
// && data.editSteps[5].editStatus == EditStepEnum.EDITED;
console.log('嘻嘻', data.projModCount);
// console.log('嘻嘻', data.projModCount);
// if(data.projModCount >= 3){
// setCanGenerate(true)
// }
@ -319,6 +349,7 @@ export default function ProjEdit() {
projDesc: data.projDesc,
projMods: data.projMods
})
// getListMods()
}
})
}

View File

@ -115,6 +115,7 @@ export default function ProjNew() {
}
const pkg = queryParams.get('pkg') == 'true' ? true : false
const videoDemo = queryParams.get('videoDemo') == 'true' ? true : false
const urgent = queryParams.get('urgent') == 'true' ? true : false
if (pkg) {
price += charge.additional.pkg;
oldlistProjChargeAdditional.push(ProjAdditionalType.PKG);
@ -127,6 +128,11 @@ export default function ProjNew() {
console.log(listProjChargeAdditional);
}
if(urgent){
price += charge.additional.urgent;
oldlistProjChargeAdditional.push(ProjAdditionalType.URGENT);
console.log(listProjChargeAdditional);
}
setChargePrice(price);
setlistProjChargeAdditional(oldlistProjChargeAdditional)
// console.log('传递信息pkg:',pkg,'videoDemo:',videoDemo);

View File

@ -348,7 +348,7 @@ export default function ProjEditStep2(props: any) {
isCrcAccount: Number(formBelong.getFieldValue('isCrcAccount')),
name: formBelong.getFieldValue('authorName'),
nameEn: formBelong.getFieldValue('nameEn') || '',
provinceCity: formBelong.getFieldValue('authorProvince').join(','),
provinceCity: formBelong.getFieldValue('authorProvince') ? formBelong.getFieldValue('authorProvince').join(',') : '',
type: formBelong.getFieldValue('authorType'),
},
onBefore() {
@ -386,7 +386,7 @@ export default function ProjEditStep2(props: any) {
isCrcAccount: Number(formBelong.getFieldValue('isCrcAccount')),
name: formBelong.getFieldValue('authorName'),
nameEn: formBelong.getFieldValue('nameEn'),
provinceCity: formBelong.getFieldValue('authorProvince').join(','),
provinceCity: formBelong.getFieldValue('authorProvince') ? formBelong.getFieldValue('authorProvince').join(',') : '',
type: formBelong.getFieldValue('authorType'),
},
onBefore() {
@ -750,7 +750,7 @@ export default function ProjEditStep2(props: any) {
record.idCardType === 'ID_CARD' ? '身份证' : '营业执照'
)}
/>
<Column title="所属者身份证号" dataIndex="idCardNo" key="belongCardNo" />
<Column title="所属者号" dataIndex="idCardNo" key="belongCardNo" />
{/* <Column title="实名认证状态" dataIndex="address" key="key" /> */}
<Column
title="操作"
@ -1186,7 +1186,7 @@ export default function ProjEditStep2(props: any) {
rules={[{ required: true, message: belongShow == 'PERSONAL' ? '请输入姓名' : '请输入公司名称' }]}
>
<Input placeholder={belongShow == 'PERSONAL' ? '请输入姓名' : '请输入公司名称'}
style={{ height: '44px', width: '384px', fontSize: '15px', marginTop: '22px' }}
style={{ height: '44px', width: '360px', fontSize: '15px', marginTop: '22px' }}
disabled={belongTitle == '查看所属者' ? true : false}
/>
@ -1202,9 +1202,16 @@ export default function ProjEditStep2(props: any) {
// label="公司英文名"
name="nameEn"
// rules={[{ required: true, message: belongShow == 'PERSONAL' ? '请输入英文名' : '请输入公司英文名称' }]}
rules={[
{ required: true, message: belongShow == 'PERSONAL' ? '请输入英文名' : '请输入公司英文名称' },
{
pattern: /^[A-Za-z]+$/,
message: '请输入正确的英文名'
}
]}
>
<Input placeholder={belongShow == 'ORGANIZATION' ? '请输入公司英文名称' : '请输入英文名'}
style={{ height: '44px', width: '384px', fontSize: '15px', marginTop: '22px' }}
style={{ height: '44px', width: '360px', fontSize: '15px', marginTop: '22px' }}
disabled={belongTitle == '查看所属者' ? true : false}
/>
</Form.Item>
@ -1242,7 +1249,7 @@ export default function ProjEditStep2(props: any) {
<Col span={12}>
<div className='blongNameInt blongSmallNamel'>
<div className='blongTitle blongsmallTitle '>{belongShow == 'PERSONAL' ? '身份证号' : '营业执照号'}:</div>
<div className='blongTitle blongsmallTitle '>{belongShow == 'PERSONAL' ? '身份证号' : '统一社会信用代码'}</div>
<Form.Item<BelongPeopleType>
// label="证件号"
@ -1250,7 +1257,7 @@ export default function ProjEditStep2(props: any) {
rules={[{ required: true, message: '请输入证件号' }]}
>
<Input placeholder="请输入证件号"
style={{ height: '44px', width: '384px', fontSize: '15px', marginTop: '22px' }}
style={{ height: '44px', width: '360px', fontSize: '15px', marginTop: '22px' }}
disabled={belongTitle == '查看所属者' ? true : false}
/>
@ -1268,10 +1275,10 @@ export default function ProjEditStep2(props: any) {
<Form.Item<BelongPeopleType>
// label="省市"
name="authorProvince"
rules={[{ required: true, message: '请选择省市' }]}
// rules={[{ required: true, message: '请选择省市' }]}
>
<Cascader options={areaArray}
style={{ height: '44px', width: '384px', fontSize: '15px', marginTop: '22px' }}
style={{ height: '44px', width: '360px', fontSize: '15px', marginTop: '22px' }}
loadData={(selectedOptions: Option[]) => {
const targetOption = selectedOptions[selectedOptions.length - 1];

View File

@ -689,7 +689,7 @@ export default function ProjEditStep2() {
record.idCardType === 'ID_CARD' ? '身份证' : '营业执照'
)}
/>
<Column title="所属者身份证号" dataIndex="idCardNo" key="belongCardNo" />
<Column title="所属者号" dataIndex="idCardNo" key="belongCardNo" />
{/* <Column title="实名认证状态" dataIndex="address" key="key" /> */}
</Table>

View File

@ -150,10 +150,11 @@
}
.blongsmallTitle {
width: 132px;
width: 140px;
text-align: end;
/* background-color: #555555; */
margin-right: 10px;
}
.blongSmallNameR {

View File

@ -20,7 +20,7 @@
display: none;
} */
.proj-create .proj {
margin-top: 33px;
margin-top: 20px;
}
.proj-create .test{
/* height: 30p; */

View File

@ -3,15 +3,16 @@ import type {MessageInstance} from "antd/es/message/interface";
export const Axios = axios;
axios.defaults.baseURL = 'http://192.168.0.103:7025/copyright';
axios.defaults.baseURL = 'http://192.168.0.15:7025/copyright';
// axios.defaults.baseURL = 'http://192.168.43.145:7025/copyright';
// axios.defaults.baseURL = 'http://127.0.0.1:7025/copyright';
// axios.defaults.baseURL = 'https://www.aimzhu.com/copyright';
// axios.defaults.baseURL = '/copyright';
// export const WebSocketBaseUrl: string = 'ws://127.0.0.1:7025/copyright';
export const WebSocketBaseUrl: string = 'ws://192.168.0.103:7025/copyright';
export const WebSocketBaseUrl: string = 'ws://192.168.0.15:7025/copyright';
// export const WebSocketBaseUrl: string = '/copyright';
export const DevUserId: string = '80d3365e-0597-4988-979e-18ef1c3ec671'; // 18634604067
// export const DevUserId: string = 'eb9a82a6-6ed3-4ba0-90e6-d836cefff915'; // 15042810561
// export const DevUserId: string = 'c2438eb8-2685-49a9-bf02-5111a5192d96'; // 18647109157
// export const DevUserId: string = '';