首次提交

This commit is contained in:
2025-04-13 19:40:44 +08:00
commit eec6aef7d7
440 changed files with 44422 additions and 0 deletions

View File

@@ -0,0 +1,4 @@
export default definePageConfig({
navigationBarTitleText: '服务协议与隐私政策',
navigationBarTextStyle: 'black'
})

View File

@@ -0,0 +1,30 @@
import {useEffect, useState} from "react";
import Taro from '@tarojs/taro'
import {View, RichText} from '@tarojs/components'
const Agreement = () => {
const [content, setContent] = useState<any>('')
const reload = () => {
Taro.hideTabBar()
setContent('<p>' +
'<span style="font-size: 14px;">欢迎使用</span>' +
'<span style="font-size: 14px;">&nbsp;</span>' +
'<span style="font-size: 14px;"><strong><span style="color: rgb(255, 0, 0);">【WebSoft】</span></strong></span>' +
'<span style="font-size: 14px;">服务协议&nbsp;</span>' +
'</p>')
}
useEffect(() => {
reload()
}, [])
return (
<>
<View className={'content text-gray-700 text-sm p-4'}>
<RichText nodes={content}/>
</View>
</>
)
}
export default Agreement

View File

@@ -0,0 +1,4 @@
export default definePageConfig({
navigationBarTitleText: '忘记密码',
navigationBarTextStyle: 'black'
})

36
src/passport/forget.tsx Normal file
View File

@@ -0,0 +1,36 @@
import {useEffect} from "react";
import Taro from '@tarojs/taro'
import {Input, Button} from '@nutui/nutui-react-taro'
import {copyText} from "@/utils/common";
const Register = () => {
const reload = () => {
Taro.hideTabBar()
}
useEffect(() => {
reload()
}, [])
return (
<>
<div className={'flex flex-col justify-center px-5 pt-3'}>
<div className={'text-sm py-2'}></div>
<div className={'flex flex-col justify-between items-center my-2'}>
<Input type="text" placeholder="手机号" maxLength={11} style={{backgroundColor: '#ffffff', borderRadius: '8px'}}/>
</div>
<div className={'flex flex-col justify-between items-center my-2'}>
<Input type="password" placeholder="新的密码" style={{backgroundColor: '#ffffff', borderRadius: '8px'}}/>
</div>
<div className={'flex justify-between items-center bg-white rounded-lg my-2 pr-2'}>
<Input type="text" placeholder="短信验证码" style={{ backgroundColor: '#ffffff', borderRadius: '8px'}}/>
<Button onClick={() => copyText('https://site-10398.shoplnk.cn?v=1.33')}></Button>
</div>
<div className={'flex justify-center my-5'}>
<Button type="info" size={'large'} className={'w-full rounded-lg p-2'}></Button>
</div>
</div>
</>
)
}
export default Register

View File

@@ -0,0 +1,4 @@
export default definePageConfig({
navigationBarTitleText: '登录',
navigationBarTextStyle: 'black'
})

56
src/passport/login.tsx Normal file
View File

@@ -0,0 +1,56 @@
import {useEffect, useState} from "react";
import Taro from '@tarojs/taro'
import {Input, Radio, Button} from '@nutui/nutui-react-taro'
const Login = () => {
const [isAgree, setIsAgree] = useState(false)
const reload = () => {
Taro.hideTabBar()
}
useEffect(() => {
reload()
}, [])
return (
<>
<div className={'flex flex-col justify-center px-5'}>
<div className={'text-3xl text-center py-5 font-normal my-10'}></div>
<>
<div className={'flex flex-col justify-between items-center my-2'}>
<Input type="text" placeholder="手机号" maxLength={11}
style={{backgroundColor: '#ffffff', borderRadius: '8px'}}/>
</div>
<div className={'flex flex-col justify-between items-center my-2'}>
<Input type="password" placeholder="密码" style={{backgroundColor: '#ffffff', borderRadius: '8px'}}/>
</div>
<div className={'flex justify-between my-2 text-left px-1'}>
<a href={'#'} className={'text-blue-600 text-sm'}
onClick={() => Taro.navigateTo({url: '/passport/forget'})}></a>
<a href={'#'} className={'text-blue-600 text-sm'}
onClick={() => Taro.navigateTo({url: '/passport/register'})}></a>
</div>
<div className={'flex justify-center my-5'}>
<Button type="info" size={'large'} className={'w-full rounded-lg p-2'} disabled={!isAgree}></Button>
</div>
<div className={'my-2 flex fixed justify-center bottom-20 left-0 text-sm items-center text-center w-full'}>
<Button onClick={() => Taro.navigateTo({url: '/passport/setting'})}></Button>
</div>
{/*<div className={'w-full fixed bottom-20 my-2 flex justify-center text-sm items-center text-center'}>*/}
{/* 没有账号?<a href={''} onClick={() => Taro.navigateTo({url: '/passport/register'})}*/}
{/* className={'text-blue-600'}>立即注册</a>*/}
{/*</div>*/}
</>
<div className={'my-2 flex text-sm items-center px-1'}>
<Radio style={{color: '#333333'}} checked={isAgree} onClick={() => setIsAgree(!isAgree)}></Radio>
<span className={'text-gray-400'} onClick={() => setIsAgree(!isAgree)}></span><a
onClick={() => Taro.navigateTo({url: '/passport/agreement'})}
className={'text-blue-600'}></a>
</div>
</div>
</>
)
}
export default Login

View File

@@ -0,0 +1,4 @@
export default definePageConfig({
navigationBarTitleText: '注册账号',
navigationBarTextStyle: 'black'
})

47
src/passport/register.tsx Normal file
View File

@@ -0,0 +1,47 @@
import {useEffect, useState} from "react";
import Taro from '@tarojs/taro'
import {Input, Radio, Button} from '@nutui/nutui-react-taro'
const Register = () => {
const [isAgree, setIsAgree] = useState(false)
const reload = () => {
Taro.hideTabBar()
}
useEffect(() => {
reload()
}, [])
return (
<>
<div className={'flex flex-col justify-center px-5 pt-3'}>
<div className={'text-xl font-bold py-2'}>14</div>
<div className={'text-sm py-1 font-normal text-gray-500'}></div>
<div className={'text-sm pb-4 font-normal text-gray-500'}>
WebSoft为您提供独立站的解决方案
</div>
<div className={'flex flex-col justify-between items-center my-2'}>
<Input type="text" placeholder="手机号" maxLength={11} style={{backgroundColor: '#ffffff', borderRadius: '8px'}}/>
</div>
<div className={'flex flex-col justify-between items-center my-2'}>
<Input type="password" placeholder="密码" style={{backgroundColor: '#ffffff', borderRadius: '8px'}}/>
</div>
<div className={'flex flex-col justify-between items-center my-2'}>
<Input type="password" placeholder="再次输入密码" style={{backgroundColor: '#ffffff', borderRadius: '8px'}}/>
</div>
<div className={'flex justify-center my-5'}>
<Button type="info" size={'large'} className={'w-full rounded-lg p-2'} disabled={!isAgree}></Button>
</div>
<div className={'my-2 flex text-sm items-center px-1'}>
<Radio style={{color: '#333333'}} checked={isAgree} onClick={() => setIsAgree(!isAgree)}></Radio>
<span className={'text-gray-400'} onClick={() => setIsAgree(!isAgree)}></span>
<a onClick={() => Taro.navigateTo({url: '/passport/agreement'})} className={'text-blue-600'}></a>
</div>
</div>
<div className={'w-full fixed bottom-20 my-2 flex justify-center text-sm items-center text-center'}>
<a className={'text-blue-600'} onClick={() => Taro.navigateBack()}></a>
</div>
</>
)
}
export default Register

View File

@@ -0,0 +1,4 @@
export default definePageConfig({
navigationBarTitleText: '服务配置',
navigationBarTextStyle: 'black'
})

82
src/passport/setting.tsx Normal file
View File

@@ -0,0 +1,82 @@
import {useEffect, useState} from "react";
import Taro from '@tarojs/taro'
import {Input, Button,Form} from '@nutui/nutui-react-taro'
const Setting = () => {
const [FormData, setFormData] = useState<any>(
{
domain: undefined
}
)
// 提交表单
const submitSucceed = (values: any) => {
if(values.domain){
Taro.setStorageSync('ServerUrl',values.domain)
setFormData({
domain: values.domain
})
Taro.showToast({
title: '保存成功',
icon: 'success'
});
setTimeout(() => {
Taro.navigateBack()
},500)
}
}
const submitFailed = (error: any) => {
console.log(error, 'err...')
// Taro.showToast({ title: error[0].message, icon: 'error' })
}
const reload = () => {
Taro.hideTabBar()
if (Taro.getStorageSync('ServerUrl')) {
setFormData({
domain: Taro.getStorageSync('ServerUrl')
})
}
}
useEffect(() => {
reload()
}, [])
return (
<>
<Form
divider
initialValues={FormData}
labelPosition="left"
onFinish={(values) => submitSucceed(values)}
onFinishFailed={(errors) => submitFailed(errors)}
footer={
<div
style={{
display: 'flex',
justifyContent: 'center',
width: '100%'
}}
>
<Button nativeType="submit" block type="info" size={'large'}>
</Button>
</div>
}
>
<div className={'flex flex-col justify-center pt-3'}>
<div className={'text-sm py-1 px-4'}></div>
<Form.Item
name="domain"
initialValue={FormData.domain}
rules={[{message: '请输入服务域名'}]}
>
<Input placeholder="https://domain.com/api" type="text" style={{backgroundColor: '#f5f5f5', borderRadius: '8px', padding: '5px 10px'}}/>
</Form.Item>
</div>
</Form>
</>
)
}
export default Setting