合伙人
This commit is contained in:
parent
1ceaf78fb7
commit
df72bbfcdf
@ -33,6 +33,7 @@ export default defineAppConfig({
|
||||
'pages/message-detail/index',
|
||||
'/pages/login-quick/index',
|
||||
'/pages/invite/index',
|
||||
'/pages/city-partant/index',
|
||||
],
|
||||
window: {
|
||||
backgroundTextStyle: 'light',
|
||||
|
@ -238,3 +238,12 @@
|
||||
margin-left: calc((375px - 200px)/2);
|
||||
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 className='flex-start my-id-box'>
|
||||
<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 className='my-container'>
|
||||
|
@ -126,6 +126,12 @@ function Index() {
|
||||
<Image src={next} className='next-icon' />
|
||||
</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>
|
||||
|
@ -123,3 +123,8 @@ export const msgList = async (params) => {
|
||||
export const msgDetail = async (id) => {
|
||||
return await g(`/news/${id}`)
|
||||
}
|
||||
|
||||
|
||||
export const partners = async (data) => {
|
||||
return await p('/partners', data)
|
||||
}
|
Loading…
Reference in New Issue
Block a user