diff --git a/src/route/AppElectron/AppEdit.tsx b/src/route/AppElectron/AppEdit.tsx index 2a20af7..e928bf2 100644 --- a/src/route/AppElectron/AppEdit.tsx +++ b/src/route/AppElectron/AppEdit.tsx @@ -2,23 +2,26 @@ import { useState, useEffect } from 'react' import EditAppInfo from './components/EditAppInfo/EditAppInfo'; import EditAppDes from './components/EditAppDes/EditAppDes'; import EditAppFiles from './components/EditAppFiles/EditAppFiles'; -import {useParams} from 'react-router-dom' +import EditAppFunction from './components/EditAppFunction/EditAppFunction'; +import EditBelongPeople from './components/EditBelongPeople/EditBelongPeople'; +import AppInfo from './components/AppInfo/AppInfo'; +import { useParams } from 'react-router-dom' import './app-edit.css' import { RightOutlined } from '@ant-design/icons'; export default function AppEdit() { - const pathParams = useParams(); + const pathParams = useParams(); // 进度 const [editProcess, setEditProcess] = useState(1); useEffect(() => { //获取进度 setEditProcess(1) // 带来的id - console.log('参数',pathParams); + console.log('参数', pathParams); // 获取 信息 - + }, []); const height = window.innerHeight - 180; return ( @@ -132,7 +135,7 @@ export default function AppEdit() { }>
{ @@ -140,6 +143,33 @@ export default function AppEdit() { } }>
+
+ { + setEditProcess(num) + } + }> +
+
+ { + setEditProcess(num) + } + }> +
+
+ { + setEditProcess(num) + } + }> +
) diff --git a/src/route/AppElectron/components/AppInfo/AppInfo.tsx b/src/route/AppElectron/components/AppInfo/AppInfo.tsx new file mode 100644 index 0000000..802df1d --- /dev/null +++ b/src/route/AppElectron/components/AppInfo/AppInfo.tsx @@ -0,0 +1,166 @@ +import './app-info.css' +import { Button, message } from "antd" +export default function AppInfo(props: any) { + const height = window.innerHeight - 460; + const handleSubmit = () => { + message.success('提交成功'); + + }; + return ( +
+
+
+ +
+
软件基本信息
+
+
+
APP软件全称 :
+
嘻嘻嘻嘻
+
+
+
软件简称 :
+
嘻嘻嘻嘻
+
+
+
版本号 :
+
v.10
+
+
+
包名 :
+
com.zhongxinhy.communitymanage
+
+
+
运行系统 :
+
android for phone
+
+
+
APP软件分类 :
+
应用 - 生活实用
+
+
+
软件作品说明 :
+
原创
+
+
+
开发完成日期 :
+
2025-05-05
+
+
+
发表状态 :
+
未发表
+
+
+
开发方式 :
+
独立开发
+
+
+
+
+
权利说明
+
+
+
权力取得方式 :
+
原始
+
+
+
权利范围 :
+
全部权利
+
+
+
其他相关文件 :
+
asdasjdadja.png
+
+ + +
+
+
+
鉴别材料
+
+
+
源码文档 :
+
asdkaksd.png
+
+
+
软件文档 :
+
asdkaksd.png
+
+ +
+
+
+
功能特点
+
+
+
硬件环境 :
+
1GHz以上处理器,1GB以上内存,16GB以上存储空间、安卓智能移动设备
+
+
+
软件环境 :
+
Android操作系统
+
+
+
编程语言 :
+
Java
+
+
+
源程序量 :
+
672384行左右
+
+
+
主要功能 :
+
隆盛社区APP软件主要功能有考勤打卡、房屋人口管理、工作轨迹、事件上报、事件处理、事件检查、学校管理、重点区域管理、重点场所、实有车辆、用户登录退出等功能。
+
+
+
技术特点 :
+
基于 Android Jetpack 组件构建,利用 ViewModel 和 LiveData 实现数据的高效管理与界面的实时更新,确保用户体验流畅。网络通信方面,运用 Retrofit 框架结合 OkHttp,实现安全快速的数据交互。
+
+ +
+
+
+
著作权人
+
+
+
著作权人名称 :
+
嘻嘻嘻嘻嘻嘻嘻哈哈哈哈公司
+
+ +
+
+
+ +
+
+ + + +
+ +
+ ) +} diff --git a/src/route/AppElectron/components/AppInfo/app-info.css b/src/route/AppElectron/components/AppInfo/app-info.css new file mode 100644 index 0000000..520cb21 --- /dev/null +++ b/src/route/AppElectron/components/AppInfo/app-info.css @@ -0,0 +1,38 @@ +.appInfoBox { + width: 100%; +} + +.appInfoTitle { + width: 100%; + border-bottom: 1px solid #e6e6e6; + text-align: center; + font-size: 18px; + line-height: 50px; +} + +.appInfoText { + margin-top: 10px; + +} + +.appInfoTextItem { + display: flex; + line-height: 32px; + font-size: 16px; + /* justify-content: flex-start; */ + margin-left:200px ; + color: rgb(97, 97, 97); + + +} + +.appInfoTextItemTitle { + /* background-color: pink; */ + width: 120px; + text-align: right; + margin-right: 8px; +} +.appInfoTextItemText{ + max-width: 60%; + /* background-color: pink; */ +} \ No newline at end of file diff --git a/src/route/AppElectron/components/EditAppDes/EditAppDes.tsx b/src/route/AppElectron/components/EditAppDes/EditAppDes.tsx index f0a4188..df2a8fd 100644 --- a/src/route/AppElectron/components/EditAppDes/EditAppDes.tsx +++ b/src/route/AppElectron/components/EditAppDes/EditAppDes.tsx @@ -1,9 +1,46 @@ -// import { useState } from 'react' +import { useState } from 'react' import { Button, Form, Upload, message, Select } from "antd" import { uploadFileUrl } from '../../../../request/request' import { UploadOutlined } from '@ant-design/icons'; export default function EditAppDes(props: any) { + const [upArray, setUpArray] = useState([]) + // 是否禁用上传按钮 + const [disabled, setDisabled] = useState(false); + const validateFileUpload = (_rule: any, value: any) => { + if (!value || value.fileList.length === 0) { + return Promise.reject('请选择上传文件'); + } + const file = value.fileList[0]; + if (file.status === 'uploading') { + // setDisabled(true) + return Promise.reject('文件上传中,请稍候'); + } else if (file.status === 'error') { + // setDisabled(true) + setUpArray([]) + return Promise.reject('文件上传失败,请删除后重新上传'); + + } else if (file.status !== 'done') { + // setDisabled(true) + setUpArray([]) + + return Promise.reject('文件上传失败,请删除后重新上传'); + } else if (file.status === 'done') { + // setDisabled(true) + return Promise.resolve(); + } + return Promise.resolve(); + }; + // 定义允许上传的文件格式 + const ALLOWED_FILE_TYPES = ['.pdf', '.doc', '.docx', '.jpg', '.jpeg', '.png']; + const beforeUpload = (file: File) => { + const fileExt = file.name.slice(file.name.lastIndexOf('.')).toLowerCase(); + if (!ALLOWED_FILE_TYPES.includes(fileExt)) { + message.error(`仅支持 ${ALLOWED_FILE_TYPES.join(', ')} 格式的文件`); + return Upload.LIST_IGNORE; + } + return true; + }; const token = sessionStorage.getItem('token') const height = window.innerHeight - 460; const [form] = Form.useForm(); @@ -15,26 +52,6 @@ export default function EditAppDes(props: any) { }; - // // 存储文件上传成功状态 - // const [fileUploadSuccess, setFileUploadSuccess] = useState(false); - // // 上传状态改变时的回调 - // const handleUploadChange = (info: any) => { - // if (info.file.status === 'done') { - // setFileUploadSuccess(true); - // message.success('文件上传成功'); - // } else if (info.file.status === 'error') { - // setFileUploadSuccess(false); - // message.error('文件上传失败,请重试'); - // } - // }; - // // 自定义验证规则,确保文件上传成功 - // const validateFileUpload = (_rule: any, _value: any, callback: (error?: string) => void) => { - // if (fileUploadSuccess) { - // callback(); - // } else { - // callback('请确保文件上传成功'); - // } - // }; const submitInfo = (values: any) => { message.success('提交成功'); console.log(values); @@ -57,8 +74,17 @@ export default function EditAppDes(props: any) { }}>
{ - message.error('请完善信息') + onFinishFailed={(errorInfo: any) => { + const errorMessages = errorInfo.errorFields.map((field: any) => field.errors[0]); + if (errorMessages.some((msg: any) => msg.includes('文件上传失败'))) { + message.error('文件上传失败,请重新上传'); + } else if (errorMessages.some((msg: any) => msg.includes('文件上传中'))) { + message.error('文件上传中,请稍候'); + } else if (errorMessages.some((msg: any) => msg.includes('文件状态异常'))) { + message.error('文件状态异常,请重新上传'); + } else { + message.error('请完善信息'); + } }} >
@@ -118,18 +144,29 @@ export default function EditAppDes(props: any) {
- - + { + console.log(fileList); + + }} + onRemove={() => { + setUpArray([]) + setDisabled(false) + }} + headers={{ 'Auth': `Bearer ${token}` }} + beforeUpload={beforeUpload} > - diff --git a/src/route/AppElectron/components/EditAppFiles/EditAppFiles.tsx b/src/route/AppElectron/components/EditAppFiles/EditAppFiles.tsx index 31ea0f4..d420498 100644 --- a/src/route/AppElectron/components/EditAppFiles/EditAppFiles.tsx +++ b/src/route/AppElectron/components/EditAppFiles/EditAppFiles.tsx @@ -1,9 +1,76 @@ -// import { useState } from 'react' +import { useState } from 'react' import { Button, Form, Upload, message, } from "antd" import { uploadFileUrl } from '../../../../request/request' import { UploadOutlined } from '@ant-design/icons'; import './edit-app-files.css' export default function EditAppFiles(props: any) { + // 定义允许上传的文件格式 + const ALLOWED_FILE_TYPES = ['.pdf', '.doc', '.docx', '.jpg', '.jpeg', '.png']; + const beforeUpload = (file: File) => { + const fileExt = file.name.slice(file.name.lastIndexOf('.')).toLowerCase(); + if (!ALLOWED_FILE_TYPES.includes(fileExt)) { + message.error(`仅支持 ${ALLOWED_FILE_TYPES.join(', ')} 格式的文件`); + return Upload.LIST_IGNORE; + } + return true; + }; + // 上传文件源码文档列表 + const [upCodeArray, setUpCodeArray] = useState([]) + const [codeDis, setCodeDis] = useState(false) + const validateCodeFileUpload = (_rule: any, value: any) => { + if (!value || value.fileList.length === 0) { + return Promise.reject('请选择上传文件'); + + } + const file = value.fileList[0]; + if (file.status === 'uploading') { + setCodeDis(true) + return Promise.reject('文件上传中,请稍候'); + } else if (file.status === 'error') { + setCodeDis(true) + setUpCodeArray([]) + return Promise.reject('文件上传失败,请删除后重新上传'); + + } else if (file.status !== 'done') { + setCodeDis(true) + setUpCodeArray([]) + + return Promise.reject('文件上传失败,请删除后重新上传'); + } else if (file.status === 'done') { + setCodeDis(true) + return Promise.resolve(); + } + return Promise.resolve(); + }; + // 上传文件软件文档列表 + const [upSoftArray, setUpSoftArray] = useState([]) + const [softDis, setSoftDis] = useState(false) + const validateSoftFileUpload = (_rule: any, value: any) => { + if (!value || value.fileList.length === 0) { + return Promise.reject('请选择上传文件'); + + } + const file = value.fileList[0]; + if (file.status === 'uploading') { + setSoftDis(true) + return Promise.reject('文件上传中,请稍候'); + } else if (file.status === 'error') { + setSoftDis(true) + setUpSoftArray([]) + return Promise.reject('文件上传失败,请删除后重新上传'); + + } else if (file.status !== 'done') { + setSoftDis(true) + setUpSoftArray([]) + + return Promise.reject('文件上传失败,请删除后重新上传'); + } else if (file.status === 'done') { + setSoftDis(true) + return Promise.resolve(); + } + return Promise.resolve(); + }; + const token = sessionStorage.getItem('token') const height = window.innerHeight - 460; const [form] = Form.useForm(); @@ -40,8 +107,17 @@ export default function EditAppFiles(props: any) { height: '80px', }}> { - message.error('请完善信息') + onFinishFailed={(errorInfo: any) => { + const errorMessages = errorInfo.errorFields.map((field: any) => field.errors[0]); + if (errorMessages.some((msg: any) => msg.includes('文件上传失败'))) { + message.error('文件上传失败,请重新上传'); + } else if (errorMessages.some((msg: any) => msg.includes('文件上传中'))) { + message.error('文件上传中,请稍候'); + } else if (errorMessages.some((msg: any) => msg.includes('文件状态异常'))) { + message.error('文件状态异常,请重新上传'); + } else { + message.error('请完善信息'); + } }} >
源码文档:
- { + console.log(fileList); + }} + onRemove={() => { + setUpCodeArray([]) + setCodeDis(false) + }} + beforeUpload={beforeUpload} // onChange={handleUploadChange} headers={{ 'Auth': `Bearer ${token}` }} > + }} + disabled={codeDis} + >上传附件
@@ -86,21 +174,33 @@ export default function EditAppFiles(props: any) {
软件文档:
- { + console.log(fileList); + }} + onRemove={() => { + setUpSoftArray([]) + setSoftDis(false) + }} + beforeUpload={beforeUpload} // onChange={handleUploadChange} headers={{ 'Auth': `Bearer ${token}` }} > + }} + disabled={softDis} + >上传附件
diff --git a/src/route/AppElectron/components/EditAppFunction/EditAppFunction.tsx b/src/route/AppElectron/components/EditAppFunction/EditAppFunction.tsx new file mode 100644 index 0000000..7872be2 --- /dev/null +++ b/src/route/AppElectron/components/EditAppFunction/EditAppFunction.tsx @@ -0,0 +1,80 @@ +import { Button } from "antd" +import './edit-app-function.css' +export default function EditAppFunction(props: any) { + const height = window.innerHeight - 460; + const handleSubmit = () => { + // console.log(form); + props.setEditProcess(5); + + + }; + return ( +
+
+
+
+
硬件环境 :
+
1GHz以上处理器,1GB以上内存,16GB以上存储空间、安卓智能移动设备
+
生成
+
+
+
软件环境 :
+
Android操作系统
+
生成
+
+
+
源程序量 :
+
672384行左右
+
生成
+
+
+
编程语言 :
+
JAVA
+
生成
+
+
+
主要功能 :
+
隆盛社区APP软件主要功能有考勤打卡、房屋人口管理、工作轨迹、事件上报、事件处理、事件检查、学校管理、重点区域管理、重点场所、实有车辆、用户登录退出等功能。
+
生成
+
+
+
技术特点 :
+
基于 Android Jetpack 组件构建,利用 ViewModel 和 LiveData 实现数据的高效管理与界面的实时更新,确保用户体验流畅。网络通信方面,运用 Retrofit 框架结合 OkHttp,实现安全快速的数据交互。
+
生成
+
+ +
+ +
+
+ + + +
+
+ ) +} diff --git a/src/route/AppElectron/components/EditAppFunction/edit-app-function.css b/src/route/AppElectron/components/EditAppFunction/edit-app-function.css new file mode 100644 index 0000000..cacde74 --- /dev/null +++ b/src/route/AppElectron/components/EditAppFunction/edit-app-function.css @@ -0,0 +1,18 @@ +.functionBox{ + display: flex; + font-size: 16px; + line-height: 40px; +} +.functionTitle{ + text-wrap: nowrap; + margin-right: 8px; +} +.functionText{ + /* background-color: pink; */ + max-width: 80%; +} +.newFunction{ + margin-left: 15px; + color: #47a2df; + cursor: pointer; +} \ No newline at end of file diff --git a/src/route/AppElectron/components/EditBelongPeople/EditBelongPeople.tsx b/src/route/AppElectron/components/EditBelongPeople/EditBelongPeople.tsx new file mode 100644 index 0000000..ef60ea8 --- /dev/null +++ b/src/route/AppElectron/components/EditBelongPeople/EditBelongPeople.tsx @@ -0,0 +1,186 @@ +import { useState } from "react"; +import { Button, Form, message, Input, Modal } from "antd" +import BelongPeople from '../../../../components/BelongPeople/BelongPeople.tsx' +export default function EditBelongPeople(props: any) { + const [form] = Form.useForm(); + const height = window.innerHeight - 460; + // 所属者弹窗 + const [belongModal, setBelongModal] = useState(false) + const [belongPeopleInfo, setBelongPeopleInfo] = useState({ + authorName: '', + authorType: '', + authorIdCardType: '', + authorIdCard: '', + authorCrcAccount: 0, + authorId: '', + authorProvinceCity: '', + authorCrcAccountPassword: '', + authorCrcAccountUsername: '' + }) + const handleSubmit = () => { + // console.log(form); + props.setEditProcess(6); + // 调用表单实例的 submit 方法 + form.submit(); + + }; + const submitInfo = (values: any) => { + message.success('提交成功'); + console.log(values); + + + } + const onFinish = (values: any) => { + // 处理表单提交逻辑 + console.log('表单提交成功', values); + submitInfo(values) + + }; + + const setValue = (value: string) => { + form.setFieldsValue({ + belongPeople: value + }) + } + return ( +
+
+
+ { + message.error('请完善信息') + }} + > +
+
+
产权所属者:
+ + + +
{ + setBelongModal(true) + }} + > + 选择 +
+
+ { + setValue('') + setBelongPeopleInfo({ + authorName: '', + authorType: '', + authorIdCardType: '', + authorIdCard: '', + authorCrcAccount: 0, + authorId: '', + authorProvinceCity: '', + authorCrcAccountUsername: '', + authorCrcAccountPassword: '', + }) + }}> 取消 +
+
+ +
+ + + + +
+ +
+
+ + + +
+ { + setBelongModal(false) + + }}> + + { setBelongModal(false) }} setBelongPeopleInfo={setBelongPeopleInfo} belongPeopleInfo={belongPeopleInfo} setValue={setValue} isShow={true}> + +
+ ) +} diff --git a/src/route/TrademarkMall/TrademarkMall.tsx b/src/route/TrademarkMall/TrademarkMall.tsx index 23f5ed8..8f903b6 100644 --- a/src/route/TrademarkMall/TrademarkMall.tsx +++ b/src/route/TrademarkMall/TrademarkMall.tsx @@ -1,7 +1,19 @@ import React from 'react' - +import nothingImg from '../../static/appimgs/nothing.png' export default function TrademarkMall() { + const height = window.innerHeight - 180; + const data = [] return ( -
开发中ing...
+
+ {data.length <= 0 ? (
+ + +
暂无数据
+
) : (<>)} +
) } diff --git a/src/route/index/Index.tsx b/src/route/index/Index.tsx index 4f411e7..1bbfb1b 100644 --- a/src/route/index/Index.tsx +++ b/src/route/index/Index.tsx @@ -86,6 +86,10 @@ import tranew from '../../static/left/tranew.png' import topblack from '../../static/appimgs/topblack.png' import topblue from '../../static/appimgs/topblue.png' +import right from '../../static/trademark/right.png' +import yes from '../../static/trademark/yes.png' + + export default function Index() { // const height = window.innerHeight - 180; @@ -1148,6 +1152,53 @@ export default function Index() { { id: '3', title: '1个工作日下证', price: '2599', back: 'black' }, { id: '4', title: '当天下证', price: '3699', back: 'black' }, ] + // 商标数组 + const trademarkArray = [ + { + id: '1', title: '智能申请注册', nowprice: '500', + old: true, //是否显示原价 + oldprice: '318', //原价 + cheap: true,//特价 + text: '0服务费,针对有一定商标申请经验并能自主评估风险的用户', + left: '性价比', right: '高', + textArray: [ + '自助办理,性价比高', + '自助查询,排查风险', + '人工严审,提升受理率' + ], + serve: false, //专家咨询 + num: 1 // 限购 + }, + { + id: '2', title: '专家辅助注册', nowprice: '499', cheap: false, + old: false, + oldprice: '', + text: '流程专业代办,适用于商标风险评估、类别选择无经验的新用户', + left: '成功率', right: '高', + textArray: [ + '专家一对一,全流程代办', + '分析风险,优化注册方案', + '分析风险,优化注册方案' + ], + serve: true, + num: 0 + }, + { + id: '3', title: '至尊无忧注册', nowprice: '599', cheap: false, + old: false, + oldprice: '', + text: '专家评估提高通过率,注册失败,可赔付全款', + left: '类型', right: '指定类目', + textArray: [ + '你注册,我投保', + '每件商标都有保单', + '指定类目驳回,赔付全款' + ], + serve: true, + num: 0 + + }, + ] const [appGoodsId, setAppGoodsId] = useState('') // 选择的商品id useEffect(() => { // const nowname = sessionStorage.getItem('now') @@ -3689,13 +3740,144 @@ export default function Index() { setTrademarkModal(false) }} okButtonProps={{ style: { background: 'red', color: 'white' } }} - width={1500} + width={1000} // maskClosable={false} // 禁止通过点击蒙层关闭 centered > -
申请商标
- +
+ {trademarkArray.map((item) => { + return ( +
+
+
+ +
+
+
+
+ {item.title} +
+
+ {item.text} +
+
+
{item.left}
+
{item.right}
+
+
+ { + item.textArray.map((item: any, index) => { + return ( +
+ +
+ {item} +
+
+ ) + }) + } +
+
+
0 ? 'linear-gradient(90deg, #FF6F26 0%, #FFA44C 100%)' : '', + color: 'white' + }}> + {item.num > 0 ? `新用户专项价格限购${item.num}件` : ''} +
+
+
+
+ + {item.nowprice} +
+
+ 原价:{item.oldprice}元 +
+
+
+
+
+
+
专家咨询
+
{ + console.log(item.nowprice); + + }} + >立即购买
+
+
+
+
+
{ + console.log(item.nowprice); + + }} + >立即购买
+
+
+
+
+ ) + })} +
+