交易暂存
This commit is contained in:
parent
85b69fb647
commit
6eac101546
@ -13,6 +13,7 @@ import { goodsDetail, createOrder, confirmPayment } from '../../request/api'
|
||||
import { showImage } from '../../request/request'
|
||||
import { useState, useEffect, useContext } from 'react';
|
||||
import useMessage from "antd/es/message/useMessage";
|
||||
import { getBuyUrl } from '../../util/AjaxUtils.ts'
|
||||
// const { TextArea } = Input;
|
||||
export default function AiShopDetail(props: any) {
|
||||
const globalDispatchContext = useContext(GlobalDispatchContext);
|
||||
@ -261,6 +262,7 @@ export default function AiShopDetail(props: any) {
|
||||
marginLeft: 10,
|
||||
}}>我同意平台 <a onClick={() => {
|
||||
// window.open('https://www.aimzhu.com/Seda.html')
|
||||
getBuyUrl()
|
||||
}}>《购买协议》</a></span>
|
||||
|
||||
<div style={{
|
||||
|
@ -121,10 +121,13 @@ export default function AppInfo(props: any) {
|
||||
<div className='appInfoBox'>
|
||||
<div className='appInfoTitle'>鉴别材料</div>
|
||||
<div className='appInfoText'>
|
||||
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>源码文档 : </div>
|
||||
<div className='appInfoTextItemText'>asdkaksd.png</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div className='appInfoTextItem'>
|
||||
<div className='appInfoTextItemTitle'>软件文档 : </div>
|
||||
<div className='appInfoTextItemText'>asdkaksd.png</div>
|
||||
|
@ -16,9 +16,9 @@ export default function EditAppFiles(props: any) {
|
||||
};
|
||||
// 处理文件点击预览
|
||||
const handlePreview = (file: any) => {
|
||||
console.log(file);
|
||||
|
||||
|
||||
console.log(file);
|
||||
|
||||
|
||||
};
|
||||
// 上传文件源码文档列表
|
||||
const [upCodeArray, setUpCodeArray] = useState<any>([])
|
||||
@ -134,92 +134,98 @@ export default function EditAppFiles(props: any) {
|
||||
width: '600px',
|
||||
// background: 'pink'
|
||||
}}>
|
||||
<div className='appInfoFormInput' style={{
|
||||
position: 'relative',
|
||||
}}>
|
||||
<div className='FormInputTitle' style={{
|
||||
}}>源码文档<span style={{color:'red',}}>*</span>:</div>
|
||||
<div style={{
|
||||
width: '220px',
|
||||
<div>
|
||||
<div className='appInfoFormInput' style={{
|
||||
position: 'relative',
|
||||
}}>
|
||||
<Form.Item name="ym" label="" rules={[
|
||||
// { required: true, message: '请选上传文件' },
|
||||
{ validator: validateCodeFileUpload }
|
||||
]}>
|
||||
<Upload
|
||||
name="file"
|
||||
action={uploadFileUrl()}
|
||||
defaultFileList={upCodeArray}
|
||||
onChange={({ fileList }) => {
|
||||
console.log(fileList);
|
||||
// console.log(upCodeArray);
|
||||
<div className='FormInputTitle' style={{
|
||||
}}>源码文档<span style={{ color: 'red', }}>*</span>:</div>
|
||||
<div style={{
|
||||
width: '220px',
|
||||
}}>
|
||||
<Form.Item name="ym" label="" rules={[
|
||||
// { required: true, message: '请选上传文件' },
|
||||
{ validator: validateCodeFileUpload }
|
||||
]}>
|
||||
<Upload
|
||||
name="file"
|
||||
action={uploadFileUrl()}
|
||||
defaultFileList={upCodeArray}
|
||||
onChange={({ fileList }) => {
|
||||
console.log(fileList);
|
||||
// console.log(upCodeArray);
|
||||
|
||||
}}
|
||||
onRemove={() => {
|
||||
setUpCodeArray([])
|
||||
setCodeDis(false)
|
||||
}}
|
||||
beforeUpload={beforeUpload}
|
||||
onPreview={handlePreview}
|
||||
// onChange={handleUploadChange}
|
||||
headers={{ 'Auth': `Bearer ${token}` }}
|
||||
>
|
||||
<Button icon={<UploadOutlined />} style={{
|
||||
marginTop: '4px'
|
||||
}}
|
||||
disabled={codeDis}
|
||||
>上传附件</Button>
|
||||
</Upload>
|
||||
</Form.Item>
|
||||
}}
|
||||
onRemove={() => {
|
||||
setUpCodeArray([])
|
||||
setCodeDis(false)
|
||||
}}
|
||||
beforeUpload={beforeUpload}
|
||||
onPreview={handlePreview}
|
||||
// onChange={handleUploadChange}
|
||||
headers={{ 'Auth': `Bearer ${token}` }}
|
||||
>
|
||||
<Button icon={<UploadOutlined />} style={{
|
||||
marginTop: '4px'
|
||||
}}
|
||||
disabled={codeDis}
|
||||
>上传附件</Button>
|
||||
</Upload>
|
||||
</Form.Item>
|
||||
</div>
|
||||
<a style={{
|
||||
position: 'absolute',
|
||||
top: '10px',
|
||||
left: '260px',
|
||||
textWrap: 'nowrap'
|
||||
}}>[ 下载 ]</a>
|
||||
</div>
|
||||
<a style={{
|
||||
position: 'absolute',
|
||||
top: '10px',
|
||||
left: '260px',
|
||||
textWrap: 'nowrap'
|
||||
}}>[ 下载 ]</a>
|
||||
<a>源码文档说明</a>
|
||||
</div>
|
||||
<div className='appInfoFormInput' style={{
|
||||
position: 'relative',
|
||||
}}>
|
||||
<div className='FormInputTitle' style={{
|
||||
}}>软件文档<span style={{color:'red',}}>*</span>:</div>
|
||||
<div style={{
|
||||
width: '220px',
|
||||
<div>
|
||||
<div className='appInfoFormInput' style={{
|
||||
position: 'relative',
|
||||
}}>
|
||||
<Form.Item name="file" label="" rules={[
|
||||
// { required: true, message: '请上传文件' },
|
||||
{ validator: validateSoftFileUpload }
|
||||
]}>
|
||||
<Upload
|
||||
name="file"
|
||||
action={uploadFileUrl()}
|
||||
defaultFileList={upSoftArray}
|
||||
onChange={({ fileList }) => {
|
||||
console.log(fileList);
|
||||
}}
|
||||
onRemove={() => {
|
||||
setUpSoftArray([])
|
||||
setSoftDis(false)
|
||||
}}
|
||||
beforeUpload={beforeUpload}
|
||||
// onChange={handleUploadChange}
|
||||
headers={{ 'Auth': `Bearer ${token}` }}
|
||||
>
|
||||
<Button icon={<UploadOutlined />} style={{
|
||||
marginTop: '4px'
|
||||
}}
|
||||
disabled={softDis}
|
||||
>上传附件</Button>
|
||||
</Upload>
|
||||
</Form.Item>
|
||||
<div className='FormInputTitle' style={{
|
||||
}}>软件文档<span style={{ color: 'red', }}>*</span>:</div>
|
||||
<div style={{
|
||||
width: '220px',
|
||||
}}>
|
||||
<Form.Item name="file" label="" rules={[
|
||||
// { required: true, message: '请上传文件' },
|
||||
{ validator: validateSoftFileUpload }
|
||||
]}>
|
||||
<Upload
|
||||
name="file"
|
||||
action={uploadFileUrl()}
|
||||
defaultFileList={upSoftArray}
|
||||
onChange={({ fileList }) => {
|
||||
console.log(fileList);
|
||||
}}
|
||||
onRemove={() => {
|
||||
setUpSoftArray([])
|
||||
setSoftDis(false)
|
||||
}}
|
||||
beforeUpload={beforeUpload}
|
||||
// onChange={handleUploadChange}
|
||||
headers={{ 'Auth': `Bearer ${token}` }}
|
||||
>
|
||||
<Button icon={<UploadOutlined />} style={{
|
||||
marginTop: '4px'
|
||||
}}
|
||||
disabled={softDis}
|
||||
>上传附件</Button>
|
||||
</Upload>
|
||||
</Form.Item>
|
||||
</div>
|
||||
<a style={{
|
||||
position: 'absolute',
|
||||
top: '10px',
|
||||
left: '260px',
|
||||
textWrap: 'nowrap'
|
||||
}}>[ 下载 ]</a>
|
||||
</div>
|
||||
<a style={{
|
||||
position: 'absolute',
|
||||
top: '10px',
|
||||
left: '260px',
|
||||
textWrap: 'nowrap'
|
||||
}}>[ 下载 ]</a>
|
||||
<a>软件文档说明</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -61,6 +61,7 @@ export default function CopyrightGgoods() {
|
||||
const copyrightDate = state ? state.copyrightDate : ''; // 版权日期
|
||||
const copyrightLanguage = state ? state.copyrightLanguage : ''; // 开发语言
|
||||
// const copyrightType = state ? state.copyrightType : ''; // 软著类型
|
||||
const goodsFlag = state ? state.goodsFlag : ''; // 商品特价标识
|
||||
|
||||
|
||||
const [data, setData] = useState([]); // 表格数据
|
||||
@ -121,6 +122,7 @@ export default function CopyrightGgoods() {
|
||||
goodsDevelop: copyrightLanguage ? copyrightLanguage : '', // 开发语言
|
||||
// goodsType: copyrightType ? copyrightType.join(',') : '', // 软著类型
|
||||
goodsType: selectTypeArray.length > 0 ? selectTypeArray.join(',') : '',
|
||||
goodsFlag: goodsFlag ? goodsFlag : '' // 商品特价标识
|
||||
|
||||
})
|
||||
// console.log(res);
|
||||
@ -214,8 +216,11 @@ export default function CopyrightGgoods() {
|
||||
}, [])
|
||||
useEffect(() => {
|
||||
getBuyGoodsList(page)
|
||||
}, [page, selectTypeArray])
|
||||
|
||||
}, [page])
|
||||
useEffect(() => {
|
||||
setPage(1)
|
||||
getBuyGoodsList(1)
|
||||
}, [selectTypeArray])
|
||||
return (
|
||||
|
||||
<div className='copyrightG-goods' style={{ height: `${height}px`, overflow: 'auto' }}>
|
||||
@ -261,7 +266,7 @@ export default function CopyrightGgoods() {
|
||||
{data.map((item: any) => {
|
||||
return (
|
||||
<div className='goodSBox rightgoods' key={item.goodsId} style={{
|
||||
height: 300,
|
||||
// height: 300,
|
||||
cursor: 'pointer',
|
||||
}}
|
||||
onClick={() => {
|
||||
@ -277,8 +282,17 @@ export default function CopyrightGgoods() {
|
||||
preview={false}
|
||||
style={{ maxWidth: '100%' }}
|
||||
></Image>
|
||||
<div className='tipsPrice' style={{
|
||||
display: item.goodsFlag == '特价' ? 'unset' : 'none'
|
||||
}}>特价</div>
|
||||
<div className='goodsTime'>
|
||||
截止日期 : {item.goodsLastTime}
|
||||
</div>
|
||||
</div>
|
||||
<div className='goodsBot'>
|
||||
<div className='goodsNameBox'>
|
||||
<div className='goodsName' title={item.goodsName}>{item.goodsName}</div>
|
||||
</div>
|
||||
<div className='goodsPrice'>
|
||||
<div>
|
||||
<span style={{
|
||||
@ -289,13 +303,8 @@ export default function CopyrightGgoods() {
|
||||
|
||||
|
||||
</div>
|
||||
<div className='goodsNameBox'>
|
||||
<div className='tipsPrice'>特价</div>
|
||||
<div className='goodsName' title={item.goodsName}>{item.goodsName}</div>
|
||||
</div>
|
||||
<div className='goodsTime'>
|
||||
截止日期 : {item.goodsLastTime}
|
||||
</div>
|
||||
|
||||
|
||||
{/* <div className='goodsBtnBox'>
|
||||
<Button className='goodsBtn' style={{
|
||||
display: item.goodsStatus == '1' ? 'none' : 'unset'
|
||||
|
@ -323,8 +323,11 @@ export default function ProductRelease() {
|
||||
}
|
||||
useEffect(() => {
|
||||
getGoodsDate(page)
|
||||
}, [page, selectTypeArray])
|
||||
|
||||
}, [page])
|
||||
useEffect(() => {
|
||||
getGoodsDate(1)
|
||||
setPage(1)
|
||||
}, [selectTypeArray])
|
||||
useEffect(() => {
|
||||
getSoftTypeListDate()
|
||||
}, [])
|
||||
@ -346,16 +349,16 @@ export default function ProductRelease() {
|
||||
<div className='typeName'
|
||||
key={item.dataId}
|
||||
style={{
|
||||
color: selectTypeArray.includes(item.dataId)? '#E73B3B' : '#707070',
|
||||
color: selectTypeArray.includes(item.dataId) ? '#E73B3B' : '#707070',
|
||||
}}
|
||||
onClick={()=>{
|
||||
onClick={() => {
|
||||
if (selectTypeArray.includes(item.dataId)) {
|
||||
setSelectTypeArray(selectTypeArray.filter((typeId: any) => typeId !== item.dataId))
|
||||
}else{
|
||||
setSelectTypeArray(selectTypeArray.filter((typeId: any) => typeId !== item.dataId))
|
||||
} else {
|
||||
setSelectTypeArray([...selectTypeArray, item.dataId])
|
||||
}
|
||||
}}
|
||||
>
|
||||
>
|
||||
{item.dataName}
|
||||
</div>
|
||||
)
|
||||
@ -524,8 +527,15 @@ export default function ProductRelease() {
|
||||
}}
|
||||
style={{ maxWidth: '100%' }}
|
||||
></Image>
|
||||
<div className='goodsTime'>
|
||||
截止日期 : {item.goodsLastTime}
|
||||
</div>
|
||||
</div>
|
||||
<div className='goodsBot'>
|
||||
<div className='goodsNameBox'>
|
||||
{/* <div className='tipsPrice'>特价</div> */}
|
||||
<div className='goodsName' title={item.goodsName}>{item.goodsName}</div>
|
||||
</div>
|
||||
<div className='goodsPrice'>
|
||||
<div>
|
||||
<span style={{
|
||||
@ -559,27 +569,28 @@ export default function ProductRelease() {
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div className='goodsNameBox'>
|
||||
{/* <div className='tipsPrice'>特价</div> */}
|
||||
<div className='goodsName' title={item.goodsName}>{item.goodsName}</div>
|
||||
</div>
|
||||
<div className='goodsTime'>
|
||||
截止日期 : {item.goodsLastTime}
|
||||
</div>
|
||||
|
||||
|
||||
<div className='goodsBtnBox'>
|
||||
<Button className='goodsBtn' style={{
|
||||
display: item.goodsStatus == '1' ? 'none' : 'unset'
|
||||
display: item.goodsStatus == '1' ? 'none' : 'unset',
|
||||
width: '80px'
|
||||
}}
|
||||
onClick={() => {
|
||||
edit(item)
|
||||
}}>编辑</Button>
|
||||
<Button className='goodsBtn' type="primary" style={{
|
||||
width: '163px',
|
||||
background:'#0FADAB',
|
||||
display: item.goodsCheckStatus == '1' || item.goodsCheckStatus == '2' ? 'none' : 'unset'
|
||||
}} onClick={() => submit(item)}>提交审核</Button>
|
||||
<Button className='goodsBtn' type="primary" style={{
|
||||
width: '80px',
|
||||
display: item.goodsStatus == '0' && item.goodsCheckStatus == '2' ? 'unset' : 'none'
|
||||
}} onClick={() => sell(item)}>上架</Button>
|
||||
<Button className='goodsBtn' type="primary" style={{
|
||||
width: '80px',
|
||||
background:'rgb(248, 97, 97)',
|
||||
display: item.goodsStatus == '0' || item.goodsOrderStatus == '1' ? 'none' : 'unset'
|
||||
}}
|
||||
onClick={() => off(item)}>下架</Button>
|
||||
|
@ -88,7 +88,7 @@ thead {
|
||||
/* 使用 grid 布局 */
|
||||
display: grid;
|
||||
/* 自动填充列,每列最小宽度 183px,最大宽度 1fr */
|
||||
grid-template-columns: repeat(auto-fill, minmax(183px, 1fr));
|
||||
grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
|
||||
/* 行间距 10px */
|
||||
row-gap: 20px;
|
||||
/* 列间距 10px */
|
||||
@ -152,19 +152,49 @@ thead {
|
||||
|
||||
.goodsImg {
|
||||
width: 100%;
|
||||
height: 183px;
|
||||
height: 245px;
|
||||
object-fit: cover;
|
||||
/* background: pink; */
|
||||
padding: 15px 9px 0px 9px;
|
||||
box-sizing: border-box;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.goodsTime {
|
||||
font-size: 14px;
|
||||
color: #e6e6e6;
|
||||
/* margin-top: 10px; */
|
||||
position: absolute;
|
||||
/* background-color: skyblue; */
|
||||
height: 33px;
|
||||
background: rgba(11, 70, 75, 0.41);
|
||||
width: 100%;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
text-align: center;
|
||||
line-height: 33px;
|
||||
}
|
||||
|
||||
.tipsPrice {
|
||||
width: 63px;
|
||||
height: 32px;
|
||||
background: #FF9F08;
|
||||
border-radius: 0px 0px 0px 10px;
|
||||
color: white;
|
||||
font-size: 18px;
|
||||
text-align: center;
|
||||
line-height: 32px;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.goodsBot {
|
||||
padding: 10px 5px 10px 5px;
|
||||
box-sizing: border-box;
|
||||
/* height: 157px; */
|
||||
/* background-color: rgb(167, 167, 167); */
|
||||
/* background-color: rgb(175, 64, 64); */
|
||||
}
|
||||
|
||||
.goodsPrice {
|
||||
@ -188,22 +218,12 @@ thead {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.tipsPrice {
|
||||
width: 38px;
|
||||
height: 23px;
|
||||
background: #FF9600;
|
||||
border-radius: 5px;
|
||||
color: white;
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
line-height: 23px;
|
||||
margin-right: 6px;
|
||||
}
|
||||
|
||||
|
||||
.goodsName {
|
||||
width: calc(100% - 29px);
|
||||
/* background-color: #1bd258; */
|
||||
font-weight: bold;
|
||||
/* font-weight: bold; */
|
||||
font-size: 20px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
@ -211,15 +231,12 @@ thead {
|
||||
/* cursor: pointer; */
|
||||
}
|
||||
|
||||
.goodsTime {
|
||||
font-size: 14px;
|
||||
color: #707070;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
|
||||
.goodsBtnBox {
|
||||
display: flex;
|
||||
margin-top: 10px;
|
||||
|
||||
}
|
||||
|
||||
.goodsBtn {
|
||||
@ -268,9 +285,10 @@ thead {
|
||||
.goodsTypeArray {
|
||||
display: flex;
|
||||
font-size: 18px;
|
||||
flex-wrap: wrap;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
.typeName{
|
||||
|
||||
.typeName {
|
||||
margin-left: 10px;
|
||||
margin-bottom: 5px;
|
||||
/* background-color: pink; */
|
||||
|
@ -156,6 +156,7 @@ export default function TransactionOrder() {
|
||||
width={110}
|
||||
render={(text) => (
|
||||
<span style={{ color: '#FF5D15', fontSize: '24px', fontWeight: '700' }}>{text.goodsPrice}</span>
|
||||
// <span style={{ color: '#FF5D15', fontSize: '24px', fontWeight: '700' }}>1</span>
|
||||
)} />
|
||||
<Column title="订单状态" dataIndex="orderStatus" align="center"
|
||||
width={120}
|
||||
|
@ -88,7 +88,8 @@ import topblue from '../../static/appimgs/topblue.png'
|
||||
|
||||
import right from '../../static/trademark/right.png'
|
||||
import yes from '../../static/trademark/yes.png'
|
||||
|
||||
import firImg from '../../static/fir.png'
|
||||
import noFirImg from '../../static/noFir.png'
|
||||
|
||||
export default function Index() {
|
||||
|
||||
@ -877,6 +878,7 @@ export default function Index() {
|
||||
const copyrightKeyWordshandleSearch = () => {
|
||||
setCopyrightKeywords(copyrightNewKeywords)
|
||||
}
|
||||
const [specialPrice,setSpecialPrice] = useState(false) //商品特价标识
|
||||
const copyrightInit = () => {
|
||||
setMinPrice(null)
|
||||
setMaxPrice(null)
|
||||
@ -886,7 +888,10 @@ export default function Index() {
|
||||
setCopyrightType(null)
|
||||
setCopyrightNewKeywords('')
|
||||
setCopyrightKeywords('')
|
||||
// 清除特价标识
|
||||
setSpecialPrice(false)
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
if (location.pathname == '/copyright-goods') {
|
||||
nav('/copyright-goods', {
|
||||
@ -898,10 +903,12 @@ export default function Index() {
|
||||
copyrightDate: copyrightDate,
|
||||
copyrightLanguage: copyrightLanguage,
|
||||
copyrightType: copyrightType,
|
||||
// 新增特价标识
|
||||
goodsFlag:specialPrice?'特价':''
|
||||
}
|
||||
})
|
||||
}
|
||||
}, [copyrightKeywords, minPrice, maxPrice, sort, copyrightDate, copyrightLanguage, copyrightType])
|
||||
}, [copyrightKeywords, minPrice, maxPrice, sort, copyrightDate, copyrightLanguage, copyrightType,specialPrice])
|
||||
|
||||
// ----------------------------------------------------------------------------------------------
|
||||
|
||||
@ -3084,6 +3091,21 @@ export default function Index() {
|
||||
options={[]}
|
||||
value={copyrightType}
|
||||
/>
|
||||
<Button
|
||||
icon={<img src={specialPrice?noFirImg:firImg} style={{ width: 15, height: 18 }} />}
|
||||
style={{
|
||||
background: specialPrice?'#FF9F08':'#FFF6EF',
|
||||
color: specialPrice?'white':'#FF9F00 ',
|
||||
marginLeft: 5, height: 31,
|
||||
border:'1px solid #FF9F00 ',
|
||||
}}
|
||||
onClick={()=>{
|
||||
// 特价标识
|
||||
setSpecialPrice(!specialPrice)
|
||||
}}
|
||||
>
|
||||
今日特价
|
||||
</Button>
|
||||
<Button
|
||||
style={{
|
||||
marginLeft: 5, height: 31
|
||||
@ -3096,9 +3118,7 @@ export default function Index() {
|
||||
>
|
||||
清除
|
||||
</Button>
|
||||
<div >
|
||||
今日特价!
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div style={{ display: tradingSearchBox ? 'block' : 'none', }}>
|
||||
|
BIN
src/static/fir.png
Normal file
BIN
src/static/fir.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.3 KiB |
BIN
src/static/noFir.png
Normal file
BIN
src/static/noFir.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
@ -151,6 +151,16 @@ export function getUseUrl() {
|
||||
console.error("请求出错:", error);
|
||||
});
|
||||
}
|
||||
// 购买协议
|
||||
export function getBuyUrl() {
|
||||
axios.get(`${baseUrl}/operator/app/agreementportal/getrelease/0542d435-dc22-459b-bf4a-28a61afe400b `)
|
||||
.then((data:any) => {
|
||||
window.open(`${baseUrl}/operator/route/agreementportal/view?agreementId=${data.data.agreementId}&title=${data.data.title}`)
|
||||
})
|
||||
.catch(error => {
|
||||
console.error("请求出错:", error);
|
||||
});
|
||||
}
|
||||
// 软件委托开发协议
|
||||
export function getSoftUrl() {
|
||||
return `${baseUrl}/Seda.html`
|
||||
|
Loading…
Reference in New Issue
Block a user