合伙人
This commit is contained in:
parent
1ceaf78fb7
commit
df72bbfcdf
@ -33,6 +33,7 @@ export default defineAppConfig({
|
|||||||
'pages/message-detail/index',
|
'pages/message-detail/index',
|
||||||
'/pages/login-quick/index',
|
'/pages/login-quick/index',
|
||||||
'/pages/invite/index',
|
'/pages/invite/index',
|
||||||
|
'/pages/city-partant/index',
|
||||||
],
|
],
|
||||||
window: {
|
window: {
|
||||||
backgroundTextStyle: 'light',
|
backgroundTextStyle: 'light',
|
||||||
|
@ -238,3 +238,12 @@
|
|||||||
margin-left: calc((375px - 200px)/2);
|
margin-left: calc((375px - 200px)/2);
|
||||||
margin-top: 100px;
|
margin-top: 100px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.f12 {
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.f14 {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
3
src/pages/city-partant/index.config.js
Normal file
3
src/pages/city-partant/index.config.js
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
export default definePageConfig({
|
||||||
|
navigationBarTitleText: '申请成为合伙人'
|
||||||
|
})
|
236
src/pages/city-partant/index.jsx
Normal file
236
src/pages/city-partant/index.jsx
Normal file
@ -0,0 +1,236 @@
|
|||||||
|
import { Image, Input, Label, Text, View } from "@tarojs/components"
|
||||||
|
import back from '@/images/back.png'
|
||||||
|
import checked from '@/images/checked.png'
|
||||||
|
import next from '@/images/next.png'
|
||||||
|
import eye from '@/images/eye.png'
|
||||||
|
import './index.scss'
|
||||||
|
import { Button } from "@nutui/nutui-react-taro"
|
||||||
|
import { useState } from "react"
|
||||||
|
import Taro from "@tarojs/taro"
|
||||||
|
import backNav from '@/images/backNav.png'
|
||||||
|
import { Picker } from "@nutui/nutui-react-taro"
|
||||||
|
import { cardList, cities, partners, scoreWithdraw, userDetail } from "../../utils/api"
|
||||||
|
import { useEffect } from "react"
|
||||||
|
import { closeLoading, errorNotice, loading, successNotice } from "../../utils/utils"
|
||||||
|
import { Address } from "@nutui/nutui-react-taro"
|
||||||
|
|
||||||
|
const activeEye = eye
|
||||||
|
|
||||||
|
const Login = () => {
|
||||||
|
|
||||||
|
const [account, setAccount] = useState('')
|
||||||
|
const [mobile, setMobile] = useState('')
|
||||||
|
|
||||||
|
const [visible, setVisible] = useState(false)
|
||||||
|
const [bank, setBank] = useState({ value: 0, text: '' })
|
||||||
|
const [pwd, setPwd] = useState('')
|
||||||
|
|
||||||
|
const [user, setUser] = useState({})
|
||||||
|
const [card, setCard] = useState([])
|
||||||
|
const [bankList, setBankList] = useState([])
|
||||||
|
const [text, setText] = useState('请选择地址')
|
||||||
|
const [normal, setNormal] = useState(false)
|
||||||
|
const [cityList, setCityList] = useState([])
|
||||||
|
const [province, setProvince] = useState([])
|
||||||
|
|
||||||
|
const [city, setCity] = useState([])
|
||||||
|
|
||||||
|
const [country, setCountry] = useState([])
|
||||||
|
const [address, setAddress] = useState({
|
||||||
|
province,
|
||||||
|
city,
|
||||||
|
country,
|
||||||
|
addressIdStr: '0_0_0_0',
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
const areaOptions = [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
value: 'city', text: '城市合伙人',
|
||||||
|
},
|
||||||
|
{ value: 'county', text: '区县合伙人' }
|
||||||
|
]
|
||||||
|
]
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
userDetail().then(rs => {
|
||||||
|
if (!rs) return
|
||||||
|
setUser(rs)
|
||||||
|
})
|
||||||
|
cardList().then(rs => {
|
||||||
|
if (!rs) return
|
||||||
|
setCard(rs.items)
|
||||||
|
setBankList([rs.items.map(item => ({ value: item.id, text: `${item.bank_name} ${item.account_number}` }))])
|
||||||
|
})
|
||||||
|
|
||||||
|
cities().then(res => {
|
||||||
|
if (!res) return
|
||||||
|
setCityList(res.items)
|
||||||
|
setProvince(res.items?.filter(item => item.deep == 0))
|
||||||
|
})
|
||||||
|
}, [])
|
||||||
|
|
||||||
|
|
||||||
|
// 返回页面
|
||||||
|
const backFn = () => {
|
||||||
|
Taro.getCurrentPages().length > 0 && Taro.navigateBack()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const confirmPicker = (val, list) => {
|
||||||
|
list.forEach(item => {
|
||||||
|
setBank(item)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const onChange = async (cal) => {
|
||||||
|
const re = await cities(cal.value.id)
|
||||||
|
const d = re.items
|
||||||
|
if (!d.length) {
|
||||||
|
setNormal(false)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
setTimeout(() => {
|
||||||
|
switch (cal.next) {
|
||||||
|
case 'city':
|
||||||
|
setCity(d)
|
||||||
|
break;
|
||||||
|
case 'country':
|
||||||
|
if (bank.value == 'city') {
|
||||||
|
setNormal(false)
|
||||||
|
}
|
||||||
|
setCountry(d)
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
setNormal(false)
|
||||||
|
}
|
||||||
|
}, 200)
|
||||||
|
}
|
||||||
|
|
||||||
|
const close = (val) => {
|
||||||
|
setNormal(false)
|
||||||
|
if (val.data && !!val.data.addressStr) {
|
||||||
|
setText((val.data).addressStr)
|
||||||
|
setAddress({ province: val.data.province, city: val.data.city, country: val.data.country, addressIdStr: val.data.addressIdStr })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const submit = async () => {
|
||||||
|
if (!account) {
|
||||||
|
errorNotice("请输入姓名")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (!mobile) {
|
||||||
|
errorNotice("请输入电话")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (!bank) {
|
||||||
|
errorNotice("请选择合作区域类型")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (!address == '0_0_0_0') {
|
||||||
|
errorNotice('请选择地址')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const addressId = address.addressIdStr.split('_')
|
||||||
|
loading('区域合伙人申请中...')
|
||||||
|
const data = {
|
||||||
|
province_id: Number(addressId[0]),
|
||||||
|
city_id: Number(addressId[1]),
|
||||||
|
county_id: Number(addressId[2]),
|
||||||
|
level: bank.value,
|
||||||
|
real_name: account,
|
||||||
|
phone: mobile
|
||||||
|
}
|
||||||
|
const re = await partners(data)
|
||||||
|
closeLoading()
|
||||||
|
if (!re) return
|
||||||
|
successNotice('申请成功')
|
||||||
|
setTimeout(() => {
|
||||||
|
backFn()
|
||||||
|
}, 1000)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return <View className="city-partant-frame bg-slate-50 h-screen text-base">
|
||||||
|
<View className='addr-detail-title'>
|
||||||
|
<Image src={backNav} className="square-35 absolute left-10 nav-icon" onClick={backFn} />
|
||||||
|
申请城市合伙人
|
||||||
|
</View>
|
||||||
|
<View className="city-partant-container relative">
|
||||||
|
<View>
|
||||||
|
<View className="form-item mt-22">
|
||||||
|
<View className="form-label">姓名</View>
|
||||||
|
<View className="form-control relative">
|
||||||
|
<Input className="form-input" type="text" placeholder="请输入姓名" onInput={(v) => {
|
||||||
|
setAccount(v.detail.value)
|
||||||
|
}} />
|
||||||
|
{
|
||||||
|
account && <Image className="w-6 h-6 absolute right-0 bottom-16" src={checked} />
|
||||||
|
}
|
||||||
|
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
<View className="form-item mt-22">
|
||||||
|
<View className="form-label">电话</View>
|
||||||
|
<View className="form-control relative">
|
||||||
|
<Input className="form-input" type="text" placeholder="请输入电话" onInput={(v) => {
|
||||||
|
setMobile(v.detail.value)
|
||||||
|
}} />
|
||||||
|
{
|
||||||
|
mobile && <Image className="w-6 h-6 absolute right-0 bottom-16" src={checked} />
|
||||||
|
}
|
||||||
|
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
<View className="form-item mt-22">
|
||||||
|
<View className="form-label">区域</View>
|
||||||
|
<View className="form-control relative">
|
||||||
|
<Input className="form-input" disabled placeholder="请选择申请区域" value={bank.text} />
|
||||||
|
<Button className="code-btn" onClick={() => {
|
||||||
|
setVisible(true)
|
||||||
|
}}>选择申请区域</Button>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
{
|
||||||
|
!!bank.value && <View className="form-item mt-22">
|
||||||
|
<View className="form-label">区域城市</View>
|
||||||
|
<View className="form-control relative" onClick={() => {
|
||||||
|
setNormal(true)
|
||||||
|
}}>
|
||||||
|
<Input className="form-input" disabled placeholder="请选择申请区域城市" value={text} />
|
||||||
|
<Image src={next} className='next-icon form-item-icon' />
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
}
|
||||||
|
{
|
||||||
|
|
||||||
|
<View className="city-partant-footer ">
|
||||||
|
<Button className="city-partant-btn" onClick={submit}>立即申请</Button>
|
||||||
|
</View>
|
||||||
|
}
|
||||||
|
</View>
|
||||||
|
|
||||||
|
</View>
|
||||||
|
<Picker
|
||||||
|
isVisible={visible}
|
||||||
|
listData={areaOptions}
|
||||||
|
onConfirm={(values, list) => confirmPicker(values, list)}
|
||||||
|
onClose={() => setVisible(false)}
|
||||||
|
|
||||||
|
/>
|
||||||
|
<Address
|
||||||
|
modelValue={normal}
|
||||||
|
province={province}
|
||||||
|
city={city}
|
||||||
|
country={country}
|
||||||
|
customAddressTitle="请选择所在地区"
|
||||||
|
onChange={onChange}
|
||||||
|
onClose={close}
|
||||||
|
/>
|
||||||
|
</View>
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export default Login
|
138
src/pages/city-partant/index.scss
Normal file
138
src/pages/city-partant/index.scss
Normal file
@ -0,0 +1,138 @@
|
|||||||
|
.city-partant-frame {
|
||||||
|
height: 100vh;
|
||||||
|
font-size: 14px;
|
||||||
|
font-family: Source Han Sans CN-Bold, Source Han Sans CN;
|
||||||
|
background-color: #FBFBFD;
|
||||||
|
}
|
||||||
|
|
||||||
|
.city-partant-container {
|
||||||
|
width: 375px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 20px 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-item {
|
||||||
|
height: 68px;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-label {
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: bold;
|
||||||
|
font-family: Source Han Sans CN-Bold, Source Han Sans CN;
|
||||||
|
color: #2a2b2d;
|
||||||
|
line-height: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-input>.weui-input {
|
||||||
|
border: none;
|
||||||
|
height: 52px;
|
||||||
|
line-height: 52px;
|
||||||
|
border-bottom: 1px solid #262A34;
|
||||||
|
position: relative;
|
||||||
|
font-size: 16px;
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-input>.weui-input:focus {
|
||||||
|
border-bottom: 2px solid #F67952;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-input-placeholder,
|
||||||
|
.form-input>.weui-input::placeholder {
|
||||||
|
font-size: 16px;
|
||||||
|
font-family: Source Han Sans CN-Regular, Source Han Sans CN;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #aeafb4;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-control {
|
||||||
|
height: 52px;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.forgot-password {
|
||||||
|
height: 24px;
|
||||||
|
font-size: 16px;
|
||||||
|
font-family: Source Han Sans CN-Regular, Source Han Sans CN;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #666;
|
||||||
|
line-height: 24px;
|
||||||
|
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.city-partant-btn {
|
||||||
|
width: 253px;
|
||||||
|
height: 55px;
|
||||||
|
background: #F67952;
|
||||||
|
border-radius: 68px 68px 68px 68px;
|
||||||
|
opacity: 1;
|
||||||
|
border: none;
|
||||||
|
color: white;
|
||||||
|
font-size: 16px;
|
||||||
|
font-family: Source Han Sans CN-Bold, Source Han Sans CN;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.city-partant-footer {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
position: fixed;
|
||||||
|
bottom: 100px;
|
||||||
|
justify-content: center;
|
||||||
|
width: 315px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.code-btn {
|
||||||
|
width: 83px;
|
||||||
|
height: 30px;
|
||||||
|
background: #F67952;
|
||||||
|
border-radius: 4px 4px 4px 4px;
|
||||||
|
opacity: 1;
|
||||||
|
font-size: 12px;
|
||||||
|
font-family: Source Han Sans CN-Bold, Source Han Sans CN;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #FFFFFF;
|
||||||
|
border: none;
|
||||||
|
padding: 0;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
bottom: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.city-partant-amount {
|
||||||
|
width: 332px;
|
||||||
|
height: 120px;
|
||||||
|
background: #F67952;
|
||||||
|
border-radius: 16px 16px 16px 16px;
|
||||||
|
opacity: 1;
|
||||||
|
margin-bottom: 36px;
|
||||||
|
color: #FFFFFF;
|
||||||
|
font-size: 12px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding-left: 23px;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.city-partant-container .form-label {
|
||||||
|
color: #5E6272 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.city-partant-amount-price {
|
||||||
|
font-size: 26px;
|
||||||
|
font-weight: bold;
|
||||||
|
margin-top: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-item-icon {
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.city-partant-frame .nut-popup {
|
||||||
|
background-color: #FFFFFF !important;
|
||||||
|
}
|
@ -66,7 +66,15 @@ const Index = () => {
|
|||||||
</View>
|
</View>
|
||||||
<View className='flex-start my-id-box'>
|
<View className='flex-start my-id-box'>
|
||||||
<Image src={level1} className='my-id-icon' />
|
<Image src={level1} className='my-id-icon' />
|
||||||
<Text className=''>{user.is_city_partner ? '区域合伙人' : ''}</Text>
|
{
|
||||||
|
user.is_city_partner && <Text className=''>{user.city_partner_level == 'city' ? '城市合伙人' : '区域合伙人'}</Text>
|
||||||
|
}
|
||||||
|
{
|
||||||
|
!user.is_city_partner && <Text className='f14' onClick={() => {
|
||||||
|
navigateTo('/pages/city-partant/index')
|
||||||
|
}}>申请城市合伙人</Text>
|
||||||
|
}
|
||||||
|
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
<View className='my-container'>
|
<View className='my-container'>
|
||||||
|
@ -126,6 +126,12 @@ function Index() {
|
|||||||
<Image src={next} className='next-icon' />
|
<Image src={next} className='next-icon' />
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
|
<View className='userInfo-form' onClick={() => { navigateTo('/pages/my-card/index') }}>
|
||||||
|
<View className='userInfo-form-name'>申请城市合伙人</View>
|
||||||
|
<View className='flex justify-between items-center ' >
|
||||||
|
<Image src={next} className='next-icon' />
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
</View>
|
</View>
|
||||||
|
|
||||||
</View>
|
</View>
|
||||||
|
@ -123,3 +123,8 @@ export const msgList = async (params) => {
|
|||||||
export const msgDetail = async (id) => {
|
export const msgDetail = async (id) => {
|
||||||
return await g(`/news/${id}`)
|
return await g(`/news/${id}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export const partners = async (data) => {
|
||||||
|
return await p('/partners', data)
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user