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

View File

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

View File

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

View File

@ -7,10 +7,12 @@ import { ProjAdditionalType } from "../../interfaces/proj/IProj.ts";
import serveImg from '../../static/serve.png' import serveImg from '../../static/serve.png'
import useImg from '../../static/use.png' import useImg from '../../static/use.png'
import leftImg from '../../static/createPro/left.png' import leftImg from '../../static/createPro/left.png'
import React from 'react';
export default function CardProjType(props: ICardProj) { export default function CardProjType(props: ICardProj) {
const [chargeAmount, setChargeAmount] = useState(0); const [chargeAmount, setChargeAmount] = useState(0);
const [pkg, setPkg] = useState(false); const [pkg, setPkg] = useState(false);
const [videoDemo, setVideoDemo] = useState(false); const [videoDemo, setVideoDemo] = useState(false);
const [urgent, setUrgent] = useState(false);
const renderContents = (lineIndex: number, contents: string[]) => { const renderContents = (lineIndex: number, contents: string[]) => {
return contents.map((item, index) => <li key={`content_${lineIndex}_${index}`}> return contents.map((item, index) => <li key={`content_${lineIndex}_${index}`}>
@ -19,12 +21,73 @@ export default function CardProjType(props: ICardProj) {
</li>); </li>);
} }
const renderNewContents = (lineIndex: number, contents: string[]) => { 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"> // <span className="newIndex">
<img src={leftImg} alt="" /> // <img src={leftImg} alt="" />
</span> // </span>
<span className="title">{item}</span> // <span className="title">{item}</span>
</li>); // </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>
);
}
// 使用正则表达式进行分割,保留分隔符
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 = () => { const renderLines = () => {
@ -60,6 +123,8 @@ export default function CardProjType(props: ICardProj) {
setPkg(true); setPkg(true);
} else if (line.id == ProjAdditionalType.VIDEO_DEMO) { } else if (line.id == ProjAdditionalType.VIDEO_DEMO) {
setVideoDemo(true); setVideoDemo(true);
}else if(line.id ==ProjAdditionalType.URGENT){
setUrgent(true)
} }
setChargeAmount(chargeAmount + line.price); setChargeAmount(chargeAmount + line.price);
} else { } else {
@ -67,6 +132,8 @@ export default function CardProjType(props: ICardProj) {
setPkg(false); setPkg(false);
} else if (line.id == ProjAdditionalType.VIDEO_DEMO) { } else if (line.id == ProjAdditionalType.VIDEO_DEMO) {
setVideoDemo(false); setVideoDemo(false);
}else if(line.id ==ProjAdditionalType.URGENT){
setUrgent(false)
} }
setChargeAmount(chargeAmount - line.price); setChargeAmount(chargeAmount - line.price);
} }
@ -106,7 +173,8 @@ export default function CardProjType(props: ICardProj) {
<button onClick={() => { <button onClick={() => {
buy.handleClick(props.head, { buy.handleClick(props.head, {
pkg: pkg, pkg: pkg,
videoDemo: videoDemo videoDemo: videoDemo,
urgent:urgent,
}); });
}} }}
style={{ style={{
@ -176,21 +244,29 @@ export default function CardProjType(props: ICardProj) {
return ( return (
<div className="proj" style={{ display: props.isShow == 1 ? 'block' : 'none', }}> <div className="proj" style={{ display: props.isShow == 1 ? 'block' : 'none', }}>
<div className='projTop'> <div className='projTop'>
{/* <div className="proj-head" style={{ backgroundImage: `url(${ProjCardHeadBg})` }}> */} {/* <div className="proj-head" style={{ backgroundImage: `url(${ProjCardHeadBg})` }}> */}
<div className="proj-head"> <div className="proj-head">
<div>{props.head}</div> <div className='head-box'>{props.head}</div>
</div> <div className='detail-box'>
<div className="proj-body"> <div className='detail-text'>
<div>{renderLines()}</div> <div className="triangle"></div>
<div>{renderNew()}</div> {props.details}
{renderCharge()} </div>
</div> </div>
</div> </div>
<div className="proj-foot">{renderBuyBtn()}</div>
<div className="proj-body">
<div>{renderLines()}</div>
<div>{renderNew()}</div>
{renderCharge()}
</div>
</div> </div>
<div className="proj-foot">{renderBuyBtn()}</div>
</div>
) )
} }

View File

@ -4,6 +4,7 @@
/* position: relative; */ /* position: relative; */
/* background-color: rgb(255, 255, 255); */ /* background-color: rgb(255, 255, 255); */
margin-left: 28px; margin-left: 28px;
/* margin-top: 0; */
} }
.seruseImg { .seruseImg {
@ -20,24 +21,65 @@
} }
.proj .proj-head { .proj .proj-head {
font-weight: bold;
font-size: 30px;
color: #492800;
text-align: center;
/* background-image: url('./proj-card-head-bg.png'); */ /* background-image: url('./proj-card-head-bg.png'); */
/* background-size: 100% 100%; */ /* background-size: 100% 100%; */
/* background-repeat: no-repeat; */ /* background-repeat: no-repeat; */
/* position: absolute; */ /* position: absolute; */
width: 100%; width: 100%;
/* height: 132px; */ /* height: 132px; */
line-height: 100px; /* line-height: 100px; */
/* left: 38px; */ /* left: 38px; */
/* top: -4px; */ /* top: -4px; */
/* background-color: aqua; */ /* 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 { .proj .proj-body {
margin-top: 5px;
/* min-height: 385px; */ /* min-height: 385px; */
margin-bottom: 15px; margin-bottom: 15px;
/* padding: 60px 15px 15px 15px; */ /* padding: 60px 15px 15px 15px; */
@ -71,10 +113,10 @@
.proj .proj-body .line .line-content ul li { .proj .proj-body .line .line-content ul li {
display: flex; display: flex;
align-items: center; align-items: center;
margin-top: 15px; margin-top: 8px;
font-family: PingFang SC; font-family: PingFang SC;
font-weight: 500; font-weight: 500;
font-size: 18px; font-size: 14px;
color: #6F6F6F; color: #6F6F6F;
margin-left: 48px; margin-left: 48px;
} }
@ -84,21 +126,21 @@
} }
.proj .proj-body .line .line-content ul li .index { .proj .proj-body .line .line-content ul li .index {
width: 20px; width: 15px;
height: 20px; height: 15px;
line-height: 20px; line-height: 15px;
border-radius: 50%; border-radius: 50%;
display: inline-block; display: inline-block;
/* background-color: rgba(251, 176, 59, 1); */ /* background-color: rgba(251, 176, 59, 1); */
background: #F38F1E; background: #F38F1E;
text-align: center; text-align: center;
color: var(--color-light); color: var(--color-light);
font-size: 12px; font-size: 10px;
} }
.proj .proj-body .line .line-content ul li .newIndex img { .proj .proj-body .line .line-content ul li .newIndex img {
width: 26px; width: 16px;
height: 20px; height: 12px;
} }
.proj .proj-body .line .line-content ul li .title { .proj .proj-body .line .line-content ul li .title {
@ -133,7 +175,7 @@
.chargeCon { .chargeCon {
font-weight: 500; font-weight: 500;
font-size: 18px; font-size: 14px;
color: #989898; color: #989898;
} }
@ -210,4 +252,24 @@
.proj-foot .buy-btn:nth-child(2) { .proj-foot .buy-btn:nth-child(2) {
/* background-color: red; */ /* background-color: red; */
margin-left: 9px; 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 keywords = state ? state.keyword : ''
const name = state ? state.name : '' const name = state ? state.name : ''
const chargeAdditionals = state? state.chargeAdditionals:''
// console.log(keywords); // console.log(keywords);
// const images = [syminga,symingb,symingc,symingd] // const images = [syminga,symingb,symingc,symingd]
const listProjRef: MutableRefObject<HTMLDivElement | null> = useRef(null); const listProjRef: MutableRefObject<HTMLDivElement | null> = useRef(null);
@ -57,6 +58,7 @@ export default function ListProj() {
rows: 10, rows: 10,
keywords: keywords, keywords: keywords,
charge: name, charge: name,
chargeAdditionals:chargeAdditionals,
projCategoryId: indexListContext.category, projCategoryId: indexListContext.category,
status: indexListContext.status ? indexListContext.status : getMenuActive() status: indexListContext.status ? indexListContext.status : getMenuActive()
} }
@ -154,7 +156,7 @@ export default function ListProj() {
setTimeout(() => { setTimeout(() => {
setShowPage(true) setShowPage(true)
}, 0); }, 0);
}, [indexListContext.status, keywords, name]) }, [indexListContext.status, keywords, name,chargeAdditionals])
useEffect(() => { useEffect(() => {
if (indexListContext.categorys) { if (indexListContext.categorys) {

View File

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

View File

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

View File

@ -1,43 +1,53 @@
import { import {
Button, Button,
Col, Col,
DatePicker, Flex, // DatePicker,
Flex,
Form, Form,
GetProp, // GetProp,
Input, Input,
message, message,
Radio, Radio,
Row, Row,
Spin, // Spin,
Upload, // Upload,
UploadFile, UploadFile,
UploadProps // UploadProps
} from "antd"; } from "antd";
import {DevUserId, downloadUrl, get, uploadImageUrl} from "../../util/AjaxUtils.ts"; import {
import {useEffect, useState} from "react"; // DevUserId,
import locale from "antd/es/date-picker/locale/zh_CN"; downloadUrl, get,
import dayjs, {Dayjs} from "dayjs"; // 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";
type FormDataType = { type FormDataType = {
userId: string; userId: string;
userInfoId: string; userInfoId: string;
userInfoType: string; userInfoType: string;
userInfoName: string; userInfoName: string;
idCardType: string; contactPhone:string;
idCardNumber: string; idCardType?:string;
idCardFront: string; userInfoNameEn?:string
idCardBack: string; contactName?:string
idCardStartDate: Dayjs; idCardNumber?:string
idCardEndDate: Dayjs; // idCardType: string;
legalPerson: string; // idCardNumber: string;
establishDate: Dayjs; // idCardFront: string;
contactAddress: string; // idCardBack: string;
contactPhone: 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 { export interface IUserEditProps {
@ -51,37 +61,41 @@ export default function UserEdit(props: IUserEditProps) {
const [userInfoType, setUserInfoType] = useState('PERSONAL'); const [userInfoType, setUserInfoType] = useState('PERSONAL');
const [idCardFrontImgArray, setIdCardFrontImgArray] = useState<UploadFile[]>([]); const [idCardFrontImgArray, setIdCardFrontImgArray] = useState<UploadFile[]>([]);
const [idCardBackImgArray, setIdCardBackImgArray] = useState<UploadFile[]>([]); const [idCardBackImgArray, setIdCardBackImgArray] = useState<UploadFile[]>([]);
const [loading, setLoading] = useState(false); // const [loading, setLoading] = useState(false);
const beforeUpload = (file: FileType) => { // const beforeUpload = (file: FileType) => {
const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png'; // const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png';
if (!isJpgOrPng) { // if (!isJpgOrPng) {
message.error('只能上传 JPG/PNG 格式文件!'); // message.error('只能上传 JPG/PNG 格式文件!');
return; // return;
} // }
return isJpgOrPng; // return isJpgOrPng;
}; // };
useEffect(() => { useEffect(() => {
get<any>({ get<any>({
messageApi, messageApi,
url: 'api/user-info/get-self', url: 'api/user-info/get-self',
onSuccess({data}) { onSuccess({ data }) {
// console.log('证件号',data.idCardNumber);
form.setFieldsValue({ form.setFieldsValue({
userId: data.userId, userId: data.userId,
userInfoId: data.userInfoId, userInfoId: data.userInfoId,
userInfoName: data.userInfoName, userInfoName: data.userInfoName,
userInfoType: data.userInfoType, userInfoType: data.userInfoType,
contactAddress: data.contactAddress, // contactAddress: data.contactAddress,
contactPhone: data.contactPhone, contactPhone: data.contactPhone,
establishDate: data.establishDate ? dayjs(data.establishDate, 'YYYY-MM-DD') : '', // establishDate: data.establishDate ? dayjs(data.establishDate, 'YYYY-MM-DD') : '',
idCardNumber: data.idCardNumber, idCardNumber: data.idCardNumber,
idCardFront: data.idCardFront, // idCardFront: data.idCardFront,
idCardStartDate: data.idCardStartDate ? dayjs(data.idCardStartDate, 'YYYY-MM-DD') : '', // idCardStartDate: data.idCardStartDate ? dayjs(data.idCardStartDate, 'YYYY-MM-DD') : '',
idCardBack: data.idCardBack, // idCardBack: data.idCardBack,
idCardEndDate: data.idCardEndDate ? dayjs(data.idCardEndDate, 'YYYY-MM-DD') : '', // idCardEndDate: data.idCardEndDate ? dayjs(data.idCardEndDate, 'YYYY-MM-DD') : '',
idCardType: data.idCardType, idCardType: data.idCardType,
legalPerson: data.legalPerson, userInfoNameEn:data.userInfoNameEn,
contactName:data.contactName
// legalPerson: data.legalPerson,
}) })
if (data.idCardFront) { if (data.idCardFront) {
const url = downloadUrl(data.idCardFront); const url = downloadUrl(data.idCardFront);
@ -120,27 +134,55 @@ export default function UserEdit(props: IUserEditProps) {
layout="vertical" layout="vertical"
form={form} form={form}
onFinish={() => { onFinish={() => {
props.handleConfirm({ if(userInfoType == 'PERSONAL'){
userId: form.getFieldValue('userId'), props.handleConfirm({
userInfoId: form.getFieldValue('userInfoId'), userId: form.getFieldValue('userId'),
userInfoName: form.getFieldValue('userInfoName'), userInfoId: form.getFieldValue('userInfoId'),
userInfoType: form.getFieldValue('userInfoType'), userInfoName: form.getFieldValue('userInfoName'),
contactAddress: form.getFieldValue('contactAddress'), contactPhone:form.getFieldValue('contactPhone'),
contactPhone: form.getFieldValue('contactPhone'), userInfoType: form.getFieldValue('userInfoType'),
establishDate: form.getFieldValue('establishDate') ? form.getFieldValue('establishDate').format(dateFormat) : '', // userInfoType: form.getFieldValue('userInfoType'),
idCardBack: form.getFieldValue('idCardBack'), // contactAddress: form.getFieldValue('contactAddress'),
idCardEndDate: form.getFieldValue('idCardEndDate') ? form.getFieldValue('idCardEndDate').format(dateFormat) : '', // contactPhone: form.getFieldValue('contactPhone'),
idCardFront: form.getFieldValue('idCardFront'), // establishDate: form.getFieldValue('establishDate') ? form.getFieldValue('establishDate').format(dateFormat) : '',
idCardNumber: form.getFieldValue('idCardNumber'), // idCardBack: form.getFieldValue('idCardBack'),
idCardStartDate: form.getFieldValue('idCardStartDate') ? form.getFieldValue('idCardStartDate').format(dateFormat) : '', // idCardEndDate: form.getFieldValue('idCardEndDate') ? form.getFieldValue('idCardEndDate').format(dateFormat) : '',
idCardType: form.getFieldValue('idCardType'), // idCardFront: form.getFieldValue('idCardFront'),
legalPerson: form.getFieldValue('legalPerson'), // 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="类型" <Form.Item label="类型"
name="userInfoType" name="userInfoType"
rules={[{required: true, message: '请选择类型'}]} rules={[{ required: true, message: '请选择类型' }]}
> >
<Radio.Group onChange={(e) => { <Radio.Group onChange={(e) => {
setUserInfoType(e.target.value); setUserInfoType(e.target.value);
@ -155,48 +197,123 @@ export default function UserEdit(props: IUserEditProps) {
<Radio.Button value="ENTERPRISE"></Radio.Button> <Radio.Button value="ENTERPRISE"></Radio.Button>
</Radio.Group> </Radio.Group>
</Form.Item> </Form.Item>
<Form.Item label="名称" {/* <Form.Item label={userInfoType == 'PERSONAL' ? '' : ''}
name="userInfoName" name="userInfoName"
rules={[{required: true, message: '请输入名称'}]} rules={[{ required: true, message: '请输入名称' }]}
> >
<Input placeholder="请输入名称"/> <Input placeholder="请输入名称" />
</Form.Item> </Form.Item> */}
{ {
userInfoType == 'PERSONAL' ? ( userInfoType == 'PERSONAL' ? (
<Form.Item label="证件类型" <>
name="idCardType" <Row gutter={15}>
rules={[{required: true, message: '请选择证件类型'}]} <Col span={12}>
> <Form.Item label='姓名'
<Radio.Group> name="userInfoName"
<Radio.Button value="ID_CARD"></Radio.Button> rules={[{ required: true, message: '请输入名称' }]}
</Radio.Group> >
</Form.Item> <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="ID_CARD"></Radio.Button>
</Radio.Group>
</Form.Item>
<Form.Item label="证件号"
name="idCardNumber"
// rules={[{ required: true, message: '请输入证件号' }]}
>
<Input placeholder="请输入证件号" />
</Form.Item> */}
</>
) : <></> ) : <></>
} }
{ {
userInfoType == 'ENTERPRISE' ? ( userInfoType == 'ENTERPRISE' ? (
<Form.Item label="证件类型" <>
name="idCardType" <Row gutter={15}>
rules={[{required: true, message: '请选择证件类型'}]} <Col span={12}>
> <Form.Item label='公司名称'
<Radio.Group> name="userInfoName"
<Radio.Button value="ORGANIZATION_CODE"></Radio.Button> rules={[{ required: true, message: '请输入名称' }]}
</Radio.Group> >
</Form.Item> <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.Group>
</Form.Item>
<Form.Item label="证件号"
name="idCardNumber"
// rules={[{ required: true, message: '请输入证件号' }]}
>
<Input placeholder="请输入证件号" />
</Form.Item>
<div style={{marginTop:-20,marginBottom:10,color:'green'}}>(:此处信息在后期软著制作中会用到,)</div>
</>
) : <></> ) : <></>
} }
<Form.Item label="证件号"
name="idCardNumber"
rules={[{required: true, message: '请输入证件号'}]} {/* <Row gutter={15}>
>
<Input placeholder="请输入证件号"/>
</Form.Item>
<Row gutter={15}>
<Col span={12}> <Col span={12}>
<Form.Item label="证件照正面" <Form.Item label="证件照正面"
name="idCardFront" name="idCardFront"
rules={[{required: true, message: '请上传证件照正面'}]} // rules={[{ required: true, message: '请上传证件照正面' }]}
> >
<Upload <Upload
name="image" name="image"
@ -204,7 +321,7 @@ export default function UserEdit(props: IUserEditProps) {
maxCount={1} maxCount={1}
defaultFileList={idCardFrontImgArray} defaultFileList={idCardFrontImgArray}
action={uploadImageUrl()} action={uploadImageUrl()}
headers={{'X-USER-ID': DevUserId}} headers={{ 'X-USER-ID': DevUserId }}
beforeUpload={beforeUpload} beforeUpload={beforeUpload}
onChange={(info) => { onChange={(info) => {
if (info.file.status === 'uploading') { if (info.file.status === 'uploading') {
@ -237,17 +354,17 @@ export default function UserEdit(props: IUserEditProps) {
}} }}
> >
<Button size="small" type="primary" <Button size="small" type="primary"
style={{backgroundColor: 'var(--color-primary)'}} style={{ backgroundColor: 'var(--color-primary)' }}
disabled={idCardFrontImgArray.length > 0}></Button> disabled={idCardFrontImgArray.length > 0}></Button>
</Upload> </Upload>
</Form.Item> </Form.Item>
</Col> </Col> */}
{ {/* {
userInfoType == 'PERSONAL' ? ( userInfoType == 'PERSONAL' ? (
<Col span={12}> <Col span={12}>
<Form.Item label="证件照反面" <Form.Item label="证件照反面"
name="idCardBack" name="idCardBack"
rules={[{required: true, message: '请上传证件照反面'}]} // rules={[{ required: true, message: '请上传证件照反面' }]}
> >
<Upload <Upload
name="image" name="image"
@ -255,7 +372,7 @@ export default function UserEdit(props: IUserEditProps) {
maxCount={1} maxCount={1}
defaultFileList={idCardBackImgArray} defaultFileList={idCardBackImgArray}
action={uploadImageUrl()} action={uploadImageUrl()}
headers={{'X-USER-ID': DevUserId}} headers={{ 'X-USER-ID': DevUserId }}
beforeUpload={beforeUpload} beforeUpload={beforeUpload}
onChange={(info) => { onChange={(info) => {
if (info.file.status === 'uploading') { if (info.file.status === 'uploading') {
@ -288,25 +405,25 @@ export default function UserEdit(props: IUserEditProps) {
}} }}
> >
<Button size="small" type="primary" <Button size="small" type="primary"
style={{backgroundColor: 'var(--color-primary)'}} style={{ backgroundColor: 'var(--color-primary)' }}
disabled={idCardBackImgArray.length > 0}></Button> disabled={idCardBackImgArray.length > 0}></Button>
</Upload> </Upload>
</Form.Item> </Form.Item>
</Col> </Col>
) : <></> ) : <></>
} }
</Row> </Row> */}
<Row gutter={15}> {/* <Row gutter={15}>
<Col span={12}> <Col span={12}>
<Form.Item<FormDataType> <Form.Item<FormDataType>
label="证件开始时间" label="证件开始时间"
name="idCardStartDate" name="idCardStartDate"
rules={[{required: true, message: '请选择证件开始时间'}]} // rules={[{ required: true, message: '请选择证件开始时间' }]}
> >
<DatePicker placeholder="证件开始时间" <DatePicker placeholder="证件开始时间"
format={dateFormat} format={dateFormat}
locale={locale} locale={locale}
style={{width: '100%'}} style={{ width: '100%' }}
/> />
</Form.Item> </Form.Item>
</Col> </Col>
@ -314,72 +431,72 @@ export default function UserEdit(props: IUserEditProps) {
<Form.Item<FormDataType> <Form.Item<FormDataType>
label="证件结束时间" label="证件结束时间"
name="idCardEndDate" name="idCardEndDate"
rules={[{required: true, message: '请选择证件结束时间'}]} // rules={[{ required: true, message: '请选择证件结束时间' }]}
> >
<DatePicker placeholder="证件结束时间" <DatePicker placeholder="证件结束时间"
format={dateFormat} format={dateFormat}
locale={locale} locale={locale}
style={{width: '100%'}} style={{ width: '100%' }}
/> />
</Form.Item> </Form.Item>
</Col> </Col>
</Row> </Row> */}
{ {/* {
userInfoType == 'ENTERPRISE' ? ( userInfoType == 'ENTERPRISE' ? (
<Row gutter={15}> <Row gutter={15}>
<Col span={12}> <Col span={12}>
<Form.Item label="法人" <Form.Item label="法人"
name="legalPerson" name="legalPerson"
rules={[{required: true, message: '请输入法人'}]} // rules={[{ required: true, message: '请输入法人' }]}
> >
<Input placeholder="请输入法人"/> <Input placeholder="请输入法人" />
</Form.Item> </Form.Item>
</Col> </Col>
<Col span={12}> <Col span={12}>
<Form.Item<FormDataType> <Form.Item<FormDataType>
label="成立时间" label="成立时间"
name="establishDate" name="establishDate"
rules={[{required: true, message: '请选择成立时间'}]} // rules={[{ required: true, message: '请选择成立时间' }]}
> >
<DatePicker placeholder="成立时间" <DatePicker placeholder="成立时间"
format={dateFormat} format={dateFormat}
locale={locale} locale={locale}
style={{width: '100%'}} style={{ width: '100%' }}
/> />
</Form.Item> </Form.Item>
</Col> </Col>
</Row> </Row>
) : <></> ) : <></>
} } */}
<Row gutter={15}> {/* <Row gutter={15}>
<Col span={12}> <Col span={24}>
<Form.Item label="联系地址" <Form.Item label="联系地址"
name="contactAddress" name="contactAddress"
rules={[{required: true, message: '请输入联系地址'}]} // rules={[{ required: true, message: '请输入联系地址' }]}
> >
<Input placeholder="请输入联系地址"/> <Input placeholder="请输入联系地址" />
</Form.Item> </Form.Item>
</Col> </Col> */}
<Col span={12}> {/* <Col span={12}>
<Form.Item label="联系电话" <Form.Item label="联系电话"
name="contactPhone" name="contactPhone"
rules={[{required: true, message: '请输入联系电话'}]} rules={[{required: true, message: '请输入联系电话'}]}
> >
<Input placeholder="请输入联系电话"/> <Input placeholder="请输入联系电话"/>
</Form.Item> </Form.Item>
</Col> </Col> */}
</Row> {/* </Row> */}
<Form.Item wrapperCol={{span: 24}}> <Form.Item wrapperCol={{ span: 24 }}>
<Flex align="center" justify="center" gap="large"> <Flex align="center" justify="center" gap="large">
<Button type="primary" <Button type="primary"
htmlType="submit" htmlType="submit"
style={{backgroundColor: 'var(--color-primary)'}}> style={{ backgroundColor: 'var(--color-primary)' }}>
</Button> </Button>
</Flex> </Flex>
</Form.Item> </Form.Item>
</Form> </Form >
<Spin tip="正在提交..." spinning={loading} fullscreen/> {/* <Spin tip="正在提交..." spinning={loading} fullscreen /> */}
{contextHolder} {contextHolder}
</> </>
) )

View File

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

View File

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

View File

@ -36,22 +36,22 @@ export default function Head() {
authorId: '', authorId: '',
authorProvinceCity: '' authorProvinceCity: ''
}) })
const setValue = () => { const setValue = () => {
// console.log(value); // console.log(value);
} }
const setConcatValue = ()=> { const setConcatValue = () => {
} }
// 联系人弹窗 // 联系人弹窗
const [contactModal, setContactModal] = useState(false) const [contactModal, setContactModal] = useState(false)
const [concatPeopleInfo,setConcatPeopleInfo] = useState({ const [concatPeopleInfo, setConcatPeopleInfo] = useState({
applyConcatId:'', applyConcatId: '',
applyContactCsaNo:'', applyContactCsaNo: '',
applyContactEmail:'', applyContactEmail: '',
applyContactName:'', applyContactName: '',
applyContactPhone:'', applyContactPhone: '',
applyContactCompany:'' applyContactCompany: ''
}) })
useEffect(() => { useEffect(() => {
reloadUser(messageApi, globalDispatchContext).then((data) => { reloadUser(messageApi, globalDispatchContext).then((data) => {
@ -152,7 +152,7 @@ export default function Head() {
{/* <div className="right" style={{backgroundImage: `url(${headRightBg})`}}> */} {/* <div className="right" style={{backgroundImage: `url(${headRightBg})`}}> */}
<div className="right"> <div className="right">
<div className='head-nav' onClick={()=>{ <div className='head-nav' onClick={() => {
window.open('https://www.aimzhu.com/operator/route/agreementportal/view?agreementId=c0c5683a-bef3-40c3-8395-900a362ea234&title=系统操作流程') window.open('https://www.aimzhu.com/operator/route/agreementportal/view?agreementId=c0c5683a-bef3-40c3-8395-900a362ea234&title=系统操作流程')
}}> }}>
@ -178,14 +178,17 @@ export default function Head() {
</div> </div>
</div> </div>
<Modal open={isSelfModalOpen} <Modal open={isSelfModalOpen}
destroyOnClose={true}
title="个人信息" title="个人信息"
footer={false} footer={false}
onCancel={() => { onCancel={() => {
if (!globalContext.user.hasUserInfo) { if (!globalContext.user.hasUserInfo ) {
messageApi.info('请完善个人信息'); messageApi.info('请完善个人信息');
return; return;
} }
setIsSelfModalOpen(false) setIsSelfModalOpen(false)
// console.log('用户信息',globalContext.user.hasUserInfo);
}}> }}>
<UserEdit handleConfirm={(data) => { <UserEdit handleConfirm={(data) => {
modal.confirm({ modal.confirm({
@ -289,7 +292,7 @@ export default function Head() {
}}> }}>
<ContactPeople isShow={false} closeModal = {()=>{setContactModal(false)} } setConcatPeopleInfo={setConcatPeopleInfo} concatPeopleInfo={concatPeopleInfo} setConcatValue={setConcatValue}></ContactPeople> <ContactPeople isShow={false} closeModal={() => { setContactModal(false) }} setConcatPeopleInfo={setConcatPeopleInfo} concatPeopleInfo={concatPeopleInfo} setConcatValue={setConcatValue}></ContactPeople>
</Modal> </Modal>
<Spin tip="正在提交..." spinning={loading} fullscreen /> <Spin tip="正在提交..." spinning={loading} fullscreen />
{contextHolder} {contextHolder}

View File

@ -32,6 +32,7 @@ export default function Index() {
// 关键字 // 关键字
const [keywords, setKeywords] = useState(''); const [keywords, setKeywords] = useState('');
const [type, setType] = useState('') const [type, setType] = useState('')
const [chargeAdditionals,setchargeAdditionals] = useState('')
// const indexListContext = useContext(IndexListContext); // const indexListContext = useContext(IndexListContext);
@ -348,7 +349,9 @@ export default function Index() {
nav('/home', { nav('/home', {
state: { state: {
keyword: value, keyword: value,
name: type name: type,
chargeAdditionals:chargeAdditionals,
} }
}) })
} }
@ -359,7 +362,8 @@ export default function Index() {
nav('/home', { nav('/home', {
state: { state: {
keyword: '', keyword: '',
name: type name: type,
chargeAdditionals:chargeAdditionals,
} }
}) })
} }
@ -441,6 +445,7 @@ export default function Index() {
nav('/home', { nav('/home', {
state: { state: {
keyword: keywords, keyword: keywords,
chargeAdditionals:chargeAdditionals,
name: value name: value
} }
}) })
@ -454,6 +459,32 @@ export default function Index() {
]} ]}
defaultValue="" defaultValue=""
// placeholder={'选择类型'} // 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={{ <div style={{
width: '253px', width: '253px',

View File

@ -84,19 +84,19 @@ export default function ProjCreate() {
<div style={{ <div style={{
position: 'absolute', top: 0, left: 0, width: '100%', background: 'rgba(255,159,8,0.08)', position: 'absolute', top: 0, left: 0, width: '100%', background: 'rgba(255,159,8,0.08)',
border: '1px solid #F5E5B4', border: '1px solid #F5E5B4',
borderRadius:' 10px', borderRadius: ' 10px',
display:show?'block':'none' display: show ? 'block' : 'none'
}}> }}>
<div style={{ position: 'relative' }}> <div style={{ position: 'relative' }}>
<div className='adContent' style={{ display: 'flex', alignItems: 'center' }}> <div className='adContent' style={{ display: 'flex', alignItems: 'center' }}>
<div style={{marginLeft:10,marginRight:10}}> <div style={{ marginLeft: 10, marginRight: 10 }}>
<img src={adimg} alt="" width={27} height={32} /> <img src={adimg} alt="" width={27} height={32} />
</div> </div>
<ScrollAd ad={ad}></ScrollAd> <ScrollAd ad={ad}></ScrollAd>
</div> </div>
<div style={{ width: 30, fontWeight: 700, cursor: 'pointer', position: 'absolute', top: 15, right: 5,fontSize:18,color:'#FFAB31' }} onClick={() => { <div style={{ width: 30, fontWeight: 700, cursor: 'pointer', position: 'absolute', top: 15, right: 5, fontSize: 18, color: '#FFAB31' }} onClick={() => {
setShow(false) setShow(false)
}}> }}>
<CloseOutlined /> <CloseOutlined />
@ -105,18 +105,19 @@ export default function ProjCreate() {
</div> </div>
</div> </div>
<CardProjType <CardProjType
head={'全托'} head={'全托管'}
details={'从下单到取证,仅需提供基本信息,我们为您提供一站式管家服务。'}
bodyLineArray={[ bodyLineArray={[
{ {
title: '提供的服务:', title: '提供的服务:',
contents: [ contents: [
'提供系统搭建', '包可运行软件开发与搭建',
'系统可在线运行三年', '包鉴别材料撰写',
'软著材料编写', '包代办,包下证,包开发票',
'软著申报', '提供可运行软件安装包',
'包下证', '提供可运行软件云服务900天',
'提供系统演示视频文件', '提供可运行软件演示视频',
'提供系统安装包' '客服一对一服务'
] ]
}, },
@ -125,17 +126,27 @@ export default function ProjCreate() {
{ {
title: '使用流程:', title: '使用流程:',
contents: [ contents: [
'系统操作手册执行', '填写系统名称',
'填写基本信息',
'接收证书'
] ]
} }
] ]
} }
chargeLineArray={[
{
id: ProjAdditionalType.URGENT,
price: charge.urgent,
title: `加急办理 ${charge.urgent / 100}`
},
]}
buyArray={[ buyArray={[
{ {
id: ProjChargeType.ALL, id: ProjChargeType.ALL,
price: allInfo.price, price: allInfo.price,
handleClick: () => { handleClick: (_title, additional) => {
nav(`/proj-new/${ProjChargeType.ALL}`) nav(`/proj-new/${ProjChargeType.ALL}?${additional.urgent ? 'urgent=true' : 'pkg='}`)
} }
} }
]} ]}
@ -200,14 +211,18 @@ export default function ProjCreate() {
/> */} /> */}
<CardProjType <CardProjType
head={'写材料'} head={'写材料'}
details={'通过平台自己搭建可运行软件后由平台自动生成相关鉴别材料,下载鉴别材料后可自行申报或找相关代理机构申报。'}
bodyLineArray={[ bodyLineArray={[
{ {
title: '提供的服务:', title: '提供的服务:',
contents: [ contents: [
'提供系统搭建平台与客服指导', '通过平台自己搭建可运行软件',
'系统可在线运行一年', '平台自动撰写鉴别材料',
'软著材料编写', '包补正材料撰写一直到下证',
'资料补正三次', '两次补正不通过平台退款',
'包开发票',
'提供可运行软件云服务300天',
'客服一对一服务'
] ]
}, },
@ -216,7 +231,7 @@ export default function ProjCreate() {
{ {
title: '使用流程:', title: '使用流程:',
contents: [ contents: [
'系统操作手册执行', '按系统操作流程执行',
] ]
} }
@ -250,12 +265,15 @@ export default function ProjCreate() {
/> />
<CardProjType <CardProjType
head={`免费试用${freeCount}`} head={`免费试用${freeCount}`}
details={'每个账户的免费试用次数为3次。免费试用主要目的是让您了解如何使用平台可全过程体验。'}
bodyLineArray={[ bodyLineArray={[
{ {
title: '提供的服务:', title: '提供的服务:',
contents: [ contents: [
'提供系统搭建平台与客服指导', '通过平台自己搭建可运行软件',
'系统可在线存储三天', '平台自动撰写鉴别材料',
'提供可运行软件云服务10天',
'客服一对一服务'
] ]
}, },
@ -264,7 +282,7 @@ export default function ProjCreate() {
{ {
title: '使用流程:', title: '使用流程:',
contents: [ contents: [
'系统操作手册执行', '按系统操作流程执行',
] ]
} }
] ]

View File

@ -116,7 +116,7 @@ export default function ProjEdit() {
setTitleIntroductionShowOpen(true) setTitleIntroductionShowOpen(true)
} }
}, },
}, },
{ {
title: '第2步:软件基本信息填写', title: '第2步:软件基本信息填写',
@ -134,7 +134,7 @@ export default function ProjEdit() {
setSoftwareShowOpen(true) setSoftwareShowOpen(true)
} }
}, },
}, },
{ {
title: '第3步:软件功能特点设置', title: '第3步:软件功能特点设置',
@ -151,7 +151,7 @@ export default function ProjEdit() {
setSoftwareFeaturesShowOpen(true) setSoftwareFeaturesShowOpen(true)
} }
}, },
}, },
{ {
title: '第4步:登录页面设置', title: '第4步:登录页面设置',
@ -169,7 +169,7 @@ export default function ProjEdit() {
setLoginPageShowOpne(true) setLoginPageShowOpne(true)
} }
}, },
}, },
// { // {
// title: '著作人信息', // title: '著作人信息',
@ -250,7 +250,7 @@ export default function ProjEdit() {
setSoftwareManagementShowOpen(true) setSoftwareManagementShowOpen(true)
} }
}, },
}, },
{ {
title: '第6步:设置功能列表显示顺序', title: '第6步:设置功能列表显示顺序',
@ -267,7 +267,7 @@ export default function ProjEdit() {
setDisplayOrderShowOpen(true); setDisplayOrderShowOpen(true);
} }
}, },
} }
) )
setConfigArray(configArray); setConfigArray(configArray);
@ -323,7 +323,7 @@ export default function ProjEdit() {
}) })
} }
// 获取ai信息 // 获取ai信息
const getAiData = () => { const getAiData = () => {
get<any>({ get<any>({
messageApi: messageApi, messageApi: messageApi,
@ -347,32 +347,62 @@ export default function ProjEdit() {
} }
// 查看ai是否关闭 // 查看ai是否关闭
const getListMods = () => { const getListMods = () => {
get<any[]>({ get<any>({
messageApi, messageApi: messageApi,
url: `/api/proj-mod/list/proj-id/${pathParams.projId}`, url: `/api/proj/get/${pathParams.projId}`,
onBefore() {
},
onSuccess({ data }) { onSuccess({ data }) {
console.log('模块信息',data); if (data.projIntroduction && data.projDesc) {
// setListMods(data) get<any[]>({
if(aiHelper.projIntroduction && aiHelper.projDesc && data.length > 0){ messageApi,
setAiHelperModalOpen(false); url: `/api/proj-mod/list/proj-id/${pathParams.projId}`,
}else{ onBefore() {
},
onSuccess({ data }) {
console.log('模块信息', data);
// setListMods(data)
if (data.length > 0) {
setAiHelperModalOpen(false);
} else {
messageApi.error('须完成系统简介,系统详情,功能列表的生成才可关闭弹窗');
}
},
onFinally() {
}
})
} else {
messageApi.error('须完成系统简介,系统详情,功能列表的生成才可关闭弹窗'); messageApi.error('须完成系统简介,系统详情,功能列表的生成才可关闭弹窗');
} }
},
onFinally() {
} }
}) })
// 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(() => { useEffect(() => {
renderData(); renderData();
// setAiHelperModalOpen(true) // setAiHelperModalOpen(true)
getAiData() getAiData()
}, []) }, [])

View File

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

View File

@ -82,28 +82,58 @@ export default function ProjEdit() {
const [generateEmainingTime, setGenerateEmainingTime] = useState(0); const [generateEmainingTime, setGenerateEmainingTime] = useState(0);
// const height = window.innerHeight - 240; // const height = window.innerHeight - 240;
const [generateErrorModal, setGenerateErrorModal] = useState(false); const [generateErrorModal, setGenerateErrorModal] = useState(false);
// 查看ai是否关闭 // 查看ai是否关闭
const getListMods = () => { const getListMods = () => {
get<any[]>({ get<any>({
messageApi, messageApi: messageApi,
url: `/api/proj-mod/list/proj-id/${pathParams.projId}`, url: `/api/proj/get/${pathParams.projId}`,
onBefore() {
},
onSuccess({ data }) { onSuccess({ data }) {
console.log('模块信息',data); if (data.projIntroduction && data.projDesc) {
// setListMods(data) get<any[]>({
if(aiHelper.projIntroduction && aiHelper.projDesc && data.length > 0){ messageApi,
setAiHelperModalOpen(false); url: `/api/proj-mod/list/proj-id/${pathParams.projId}`,
}else{ onBefore() {
},
onSuccess({ data }) {
console.log('模块信息', data);
// setListMods(data)
if (data.length > 0) {
setAiHelperModalOpen(false);
} else {
messageApi.error('须完成系统简介,系统详情,功能列表的生成才可关闭弹窗');
}
},
onFinally() {
}
})
} else {
messageApi.error('须完成系统简介,系统详情,功能列表的生成才可关闭弹窗'); messageApi.error('须完成系统简介,系统详情,功能列表的生成才可关闭弹窗');
} }
},
onFinally() {
} }
}) })
// 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 renderEditStep = (data: any, isEdited: boolean, isGenerateSuccess: boolean) => {
const editStepArray: IProjEdit[] = []; const editStepArray: IProjEdit[] = [];
@ -297,7 +327,7 @@ export default function ProjEdit() {
onSuccess({ data }) { onSuccess({ data }) {
// const isEdited = data.editSteps[0].editStatus == EditStepEnum.EDITED // const isEdited = data.editSteps[0].editStatus == EditStepEnum.EDITED
// && data.editSteps[5].editStatus == EditStepEnum.EDITED; // && data.editSteps[5].editStatus == EditStepEnum.EDITED;
console.log('嘻嘻', data.projModCount); // console.log('嘻嘻', data.projModCount);
// if(data.projModCount >= 3){ // if(data.projModCount >= 3){
// setCanGenerate(true) // setCanGenerate(true)
// } // }
@ -319,6 +349,7 @@ export default function ProjEdit() {
projDesc: data.projDesc, projDesc: data.projDesc,
projMods: data.projMods projMods: data.projMods
}) })
// getListMods()
} }
}) })
} }
@ -509,7 +540,7 @@ export default function ProjEdit() {
<CardProjDownload title="源代码" <CardProjDownload title="源代码"
desc="点击下载源代码" desc="点击下载源代码"
canBtnClick={generateStatus == GenerateStatus.SUCCESS} canBtnClick={generateStatus == GenerateStatus.SUCCESS}
handleDownload={() => { handleDownload={() => {
window.open(`${Axios.defaults?.baseURL}/route/proj/download/code/${pathParams.projId}`) window.open(`${Axios.defaults?.baseURL}/route/proj/download/code/${pathParams.projId}`)
}} }}
/> />

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -3,15 +3,16 @@ import type {MessageInstance} from "antd/es/message/interface";
export const Axios = axios; 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://192.168.43.145:7025/copyright';
// axios.defaults.baseURL = 'http://127.0.0.1:7025/copyright'; // axios.defaults.baseURL = 'http://127.0.0.1:7025/copyright';
// axios.defaults.baseURL = 'https://www.aimzhu.com/copyright'; // axios.defaults.baseURL = 'https://www.aimzhu.com/copyright';
// axios.defaults.baseURL = '/copyright'; // axios.defaults.baseURL = '/copyright';
// export const WebSocketBaseUrl: string = 'ws://127.0.0.1:7025/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 WebSocketBaseUrl: string = '/copyright';
export const DevUserId: string = '80d3365e-0597-4988-979e-18ef1c3ec671'; // 18634604067 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 = 'c2438eb8-2685-49a9-bf02-5111a5192d96'; // 18647109157
// export const DevUserId: string = ''; // export const DevUserId: string = '';