217 lines
7.0 KiB
TypeScript
217 lines
7.0 KiB
TypeScript
import {useEffect, useState} from "react";
|
|
import Taro from '@tarojs/taro';
|
|
import {Button, Space} from '@nutui/nutui-react-taro'
|
|
import {TriangleDown} from '@nutui/icons-react-taro'
|
|
import {Popup, Avatar, NavBar} from '@nutui/nutui-react-taro'
|
|
import {getUserInfo} from "@/api/layout";
|
|
import {TenantId} from "@/utils/config";
|
|
import {getOrganization} from "@/api/system/organization";
|
|
import {myUserVerify} from "@/api/system/userVerify";
|
|
|
|
const Header = (props: any) => {
|
|
const [IsLogin, setIsLogin] = useState<boolean>(true)
|
|
const [showBasic, setShowBasic] = useState(false)
|
|
const [statusBarHeight, setStatusBarHeight] = useState<number>()
|
|
const [roleName, setRoleName] = useState<string>()
|
|
|
|
const onNav = () => {
|
|
if (!IsLogin) {
|
|
|
|
return false;
|
|
}
|
|
Taro.switchTab({
|
|
url: '/pages/user/user',
|
|
})
|
|
}
|
|
const reload = () => {
|
|
Taro.getSystemInfo({
|
|
success: (res) => {
|
|
setStatusBarHeight(res.statusBarHeight)
|
|
},
|
|
})
|
|
getUserInfo().then((data) => {
|
|
if (data) {
|
|
console.log(data.organizationName,'0000')
|
|
setIsLogin(true);
|
|
Taro.setStorageSync('UserId', data.userId)
|
|
Taro.setStorageSync('Phone',data.phone)
|
|
// 机构ID
|
|
Taro.setStorageSync('OrganizationId',data.organizationId)
|
|
// 父级机构ID
|
|
getOrganization(Number(data.organizationId)).then(res => {
|
|
Taro.setStorageSync('OrganizationParentId',res.parentId)
|
|
})
|
|
// 所属站点名称
|
|
if(data.organizationName){
|
|
Taro.setStorageSync('OrganizationName',data.organizationName)
|
|
}
|
|
// 是否已认证
|
|
if(data.certification){
|
|
Taro.setStorageSync('Certification','1')
|
|
}
|
|
// 安装人员
|
|
const isInstaller = data.roles?.findIndex(item => item.roleCode == 'Installer')
|
|
if(isInstaller != -1){
|
|
setRoleName('安装人员')
|
|
Taro.setStorageSync('RoleName', '安装人员')
|
|
Taro.setStorageSync('RoleCode', 'Installer')
|
|
return false;
|
|
}
|
|
// 管理员
|
|
const isKdy = data.roles?.findIndex(item => item.roleCode == 'admin')
|
|
if(isKdy != -1){
|
|
setRoleName('管理员')
|
|
Taro.setStorageSync('RoleName', '管理')
|
|
Taro.setStorageSync('RoleCode', 'admin')
|
|
return false;
|
|
}
|
|
// 交警
|
|
const isJj = data.roles?.findIndex(item => item.roleCode == 'jiaojing')
|
|
if(isJj != -1){
|
|
setRoleName('交警')
|
|
Taro.setStorageSync('RoleName', '交警')
|
|
Taro.setStorageSync('RoleCode', 'jiaojing')
|
|
Taro.setStorageSync('Certification', 'jj')
|
|
return false;
|
|
}
|
|
// 邮政协会/管局
|
|
const isYz = data.roles?.findIndex(item => item.roleCode == 'youzheng')
|
|
if(isYz != -1){
|
|
setRoleName('邮政协会/管局')
|
|
Taro.setStorageSync('RoleName', '邮政协会/管局')
|
|
Taro.setStorageSync('RoleCode', 'youzheng')
|
|
Taro.setStorageSync('Certification', 'yz')
|
|
return false;
|
|
}
|
|
// 快递公司
|
|
const isKd = data.roles?.findIndex(item => item.roleCode == 'kuaidi')
|
|
if(isKd != -1){
|
|
setRoleName('快递公司')
|
|
Taro.setStorageSync('RoleName', '快递公司')
|
|
Taro.setStorageSync('RoleCode', 'kuaidi')
|
|
return false;
|
|
}
|
|
const isZD = data.roles?.findIndex(item => item.roleCode == 'zhandian')
|
|
if(isZD != -1){
|
|
setRoleName('快递站点')
|
|
Taro.setStorageSync('RoleName', '快递站点')
|
|
Taro.setStorageSync('RoleCode', 'zhandian')
|
|
}
|
|
// 快递员
|
|
const isKdyy = data.roles?.findIndex(item => item.roleCode == 'kuaidiyuan')
|
|
if(isKdyy != -1){
|
|
setRoleName('快递员')
|
|
Taro.setStorageSync('RoleName', '快递员')
|
|
Taro.setStorageSync('RoleCode', 'kuaidiyuan')
|
|
return false;
|
|
}
|
|
// 注册用户
|
|
const isUser = data.roles?.findIndex(item => item.roleCode == 'user')
|
|
if(isUser != -1){
|
|
setRoleName('注册用户')
|
|
Taro.setStorageSync('RoleName', '注册用户')
|
|
Taro.setStorageSync('RoleCode', 'user')
|
|
return false;
|
|
}
|
|
}
|
|
}).catch(() => {
|
|
setIsLogin(false);
|
|
console.log('未登录')
|
|
});
|
|
myUserVerify({status: 1}).then(data => {
|
|
if(data?.realName){
|
|
Taro.setStorageSync('RealName',data.realName)
|
|
}
|
|
})
|
|
}
|
|
|
|
/* 获取用户手机号 */
|
|
const handleGetPhoneNumber = ({detail}) => {
|
|
const {code, encryptedData, iv} = detail
|
|
Taro.login({
|
|
success: function () {
|
|
if (code) {
|
|
Taro.request({
|
|
url: 'https://server.gxwebsoft.com/api/wx-login/loginByMpWxPhone',
|
|
method: 'POST',
|
|
data: {
|
|
code,
|
|
encryptedData,
|
|
iv,
|
|
notVerifyPhone: true,
|
|
refereeId: 0,
|
|
sceneType: 'save_referee',
|
|
tenantId: TenantId
|
|
},
|
|
header: {
|
|
'content-type': 'application/json',
|
|
TenantId
|
|
},
|
|
success: function (res) {
|
|
Taro.setStorageSync('access_token', res.data.data.access_token)
|
|
Taro.setStorageSync('UserId', res.data.data.user.userId)
|
|
setIsLogin(true)
|
|
// 重新加载小程序
|
|
Taro.reLaunch({
|
|
url: '/pages/index/index'
|
|
})
|
|
}
|
|
})
|
|
} else {
|
|
console.log('登录失败!')
|
|
}
|
|
}
|
|
})
|
|
}
|
|
|
|
useEffect(() => {
|
|
reload()
|
|
}, [])
|
|
|
|
return (
|
|
<>
|
|
<NavBar
|
|
fixed={true}
|
|
style={{marginTop: `${statusBarHeight}px`, backgroundColor: 'transparent'}}
|
|
onBackClick={() => {
|
|
}}
|
|
left={
|
|
!IsLogin ? (
|
|
<div style={{display: 'flex', alignItems: 'center'}}>
|
|
<Button style={{color: '#000'}} open-type="getPhoneNumber" onGetPhoneNumber={handleGetPhoneNumber}>
|
|
<Space>
|
|
<Avatar
|
|
size="22"
|
|
src={props.user?.avatar}
|
|
/>
|
|
<span style={{color: '#000'}}>{props.user?.nickname}</span>
|
|
</Space>
|
|
</Button>
|
|
<TriangleDown size={9}/>
|
|
</div>
|
|
) : (
|
|
<div style={{display: 'flex', alignItems: 'center', gap: '8px'}} onClick={onNav}>
|
|
<Avatar
|
|
size="22"
|
|
src={props.user?.avatar}
|
|
/>
|
|
{props.user?.nickname}{roleName && <span>({roleName})</span>}
|
|
<TriangleDown size={9}/>
|
|
</div>
|
|
)}>
|
|
</NavBar>
|
|
<Popup
|
|
visible={showBasic}
|
|
position="bottom"
|
|
style={{width: '100%', height: '100%'}}
|
|
onClose={() => {
|
|
setShowBasic(false)
|
|
}}
|
|
>
|
|
<div style={{padding: '12px 0', fontWeight: 'bold', textAlign: 'center'}}>车辆信息</div>
|
|
</Popup>
|
|
</>
|
|
)
|
|
}
|
|
export default Header
|