框架整理完毕

This commit is contained in:
2025-07-07 15:04:57 +08:00
parent 59f771d542
commit cb4b3952a5
26 changed files with 577 additions and 319 deletions

View File

@@ -3,7 +3,8 @@ export default defineAppConfig({
'pages/index/index', 'pages/index/index',
'pages/kefu/kefu', 'pages/kefu/kefu',
'pages/user/user', 'pages/user/user',
'pages/study/study' 'pages/study/study',
'pages/page/index'
], ],
"subpackages": [ "subpackages": [
{ {
@@ -40,7 +41,14 @@ export default defineAppConfig({
"index", "index",
"detail" "detail"
] ]
} },
{
"root": "honor",
"pages": [
"index",
"detail"
]
},
], ],
window: { window: {
backgroundTextStyle: 'dark', backgroundTextStyle: 'dark',
@@ -51,7 +59,7 @@ export default defineAppConfig({
tabBar: { tabBar: {
custom: false, custom: false,
color: "#8a8a8a", color: "#8a8a8a",
selectedColor: "#9a23d4", selectedColor: "#d81e06",
backgroundColor: "#ffffff", backgroundColor: "#ffffff",
list: [ list: [
{ {

View File

@@ -7,7 +7,7 @@
@tailwind utilities; @tailwind utilities;
page{ page{
background-color: #f5f5f5; background-color: #ffefef;
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: 100%; background-size: 100%;
background-position: bottom; background-position: bottom;

View File

@@ -1,5 +1,5 @@
import {useEffect} from 'react' import {useEffect} from 'react'
import Taro from '@tarojs/taro' // import Taro from '@tarojs/taro'
import {useDidShow, useDidHide} from '@tarojs/taro' import {useDidShow, useDidHide} from '@tarojs/taro'
// 全局样式 // 全局样式
@@ -12,7 +12,7 @@ function App(props) {
// 对应 onShow // 对应 onShow
useDidShow(() => { useDidShow(() => {
Taro.hideTabBar() // Taro.hideTabBar()
}) })
// 对应 onHide // 对应 onHide

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@@ -1,28 +1,35 @@
import { Tabbar } from '@nutui/nutui-react-taro' import {Tabbar} from '@nutui/nutui-react-taro'
import { Home, User, Date } from '@nutui/icons-react-taro' import {Home, User, Date} from '@nutui/icons-react-taro'
import Taro from '@tarojs/taro' import Taro from '@tarojs/taro'
function TabBar(){ function TabBar() {
return ( return (
<Tabbar <Tabbar
fixed fixed
onSwitch={(index) => { onSwitch={(index) => {
console.log(index) console.log(index)
if(index == 0){ if (index == 0) {
Taro.switchTab({ url: '/pages/index/index' }) Taro.switchTab({url: '/pages/index/index'})
} }
if(index == 1){ if (index == 1) {
Taro.navigateTo({ url: '/pages/study/study' }) Taro.switchTab({url: '/pages/study/study'})
} }
if(index == 2){ if (index == 2) {
Taro.switchTab({ url: '/pages/user/user' }) Taro.switchTab({url: '/pages/user/user'})
} }
}} }}
> style={{
<Tabbar.Item title="首页" icon={<Home size={18} />} /> display: 'none',
<Tabbar.Item title="AI问答" icon={<Date size={18} />} /> zIndex: 100,
<Tabbar.Item title="我的" icon={<User size={18} />} /> backgroundColor: '#fff',
</Tabbar> boxShadow: '0 0 10px rgba(0, 0, 0, 0.1)',
) }}
>
<Tabbar.Item title="首页" icon={<Home size={18}/>}/>
<Tabbar.Item title="AI问答" icon={<Date size={18}/>}/>
<Tabbar.Item title="我的" icon={<User size={18}/>}/>
</Tabbar>
)
} }
export default TabBar; export default TabBar;

View File

@@ -0,0 +1,4 @@
export default definePageConfig({
navigationBarTitleText: '详情',
navigationBarBackgroundColor: '#ffe0e0'
})

128
src/honor/detail.scss Normal file
View File

@@ -0,0 +1,128 @@
.content {
padding: 32px;
line-height: 2.4rem;
// 富文本内容样式
:global {
// 段落样式
p {
margin: 16px 0;
line-height: 1.8;
text-align: justify;
}
// 标题样式
h1, h2, h3, h4, h5, h6 {
margin: 24px 0 16px 0;
font-weight: bold;
line-height: 1.4;
}
h1 { font-size: 24px; }
h2 { font-size: 22px; }
h3 { font-size: 20px; }
h4 { font-size: 18px; }
h5 { font-size: 16px; }
h6 { font-size: 14px; }
// 图片样式
img {
max-width: 100%;
height: auto;
border-radius: 8px;
margin: 16px 0;
display: block;
}
// 列表样式
ul, ol {
margin: 16px 0;
padding-left: 24px;
li {
margin: 8px 0;
line-height: 1.6;
}
}
// 引用样式
blockquote {
margin: 16px 0;
padding: 16px;
background-color: #f5f5f5;
border-left: 4px solid #ddd;
border-radius: 4px;
p {
margin: 0;
font-style: italic;
}
}
// 代码样式
code {
background-color: #f5f5f5;
padding: 2px 6px;
border-radius: 4px;
font-family: 'Courier New', monospace;
font-size: 14px;
}
pre {
background-color: #f5f5f5;
padding: 16px;
border-radius: 8px;
overflow-x: auto;
margin: 16px 0;
code {
background: none;
padding: 0;
}
}
// 表格样式
table {
width: 100%;
border-collapse: collapse;
margin: 16px 0;
th, td {
border: 1px solid #ddd;
padding: 12px;
text-align: left;
}
th {
background-color: #f5f5f5;
font-weight: bold;
}
}
// 链接样式
a {
color: #1890ff;
text-decoration: none;
&:hover {
text-decoration: underline;
}
}
// 分割线样式
hr {
margin: 24px 0;
border: none;
border-top: 1px solid #eee;
}
// 强调样式
strong, b {
font-weight: bold;
}
em, i {
font-style: italic;
}
}
}

52
src/honor/detail.tsx Normal file
View File

@@ -0,0 +1,52 @@
import {useEffect, useState} from 'react'
import {Tag} from '@nutui/nutui-react-taro'
import {useRouter} from '@tarojs/taro'
import {Divider} from '@nutui/nutui-react-taro'
import {CmsArticle} from "@/api/cms/cmsArticle/model"
import {Eye} from '@nutui/icons-react-taro'
// 显示html富文本
import {View, RichText} from '@tarojs/components'
import './detail.scss'
import Line from "@/components/Gap";
import {getCmsArticle} from "@/api/cms/cmsArticle";
function Detail() {
const {params} = useRouter();
// 文章详情
const [item, setItem] = useState<CmsArticle>()
// 浏览量
const [views, setViews] = useState<number>()
const reload = () => {
getCmsArticle(Number(params.id)).then(data => {
if (data) {
setItem(data)
setViews(data.actualViews)
}
})
}
useEffect(() => {
reload();
}, []);
return (
<div className={'bg-white'}>
<div className={'p-3 font-bold text-lg'}>{item?.title}</div>
<div className={'flex justify-between px-3'}>
<Tag type={'success'}>{item?.categoryName}</Tag>
<div className={'flex items-center gap-2 text-sm text-gray-400'}><Eye size={14}/>{views}</div>
</div>
<Divider/>
<View className={'content text-gray-700 text-sm'}>
<RichText
nodes={item?.content || '暂无内容'}
space="nbsp"
/>
</View>
<Line height={44}/>
</div>
)
}
export default Detail

View File

@@ -0,0 +1,3 @@
export default definePageConfig({
navigationBarTitleText: '图文列表'
})

86
src/honor/index.tsx Normal file
View File

@@ -0,0 +1,86 @@
import {useEffect, useState} from "react";
import {pageCmsArticle} from "@/api/cms/cmsArticle";
import {CmsArticle} from "@/api/cms/cmsArticle/model";
import Taro from '@tarojs/taro'
import {useRouter} from '@tarojs/taro'
import {Image} from '@nutui/nutui-react-taro'
import {getCmsNavigation} from "@/api/cms/cmsNavigation";
import {CmsNavigation} from "@/api/cms/cmsNavigation/model";
/**
* 文章终极列表
* @constructor
*/
const Index = () => {
const {params} = useRouter();
const [navigation, setNavigation] = useState<CmsNavigation>()
const [list, setList] = useState<CmsArticle[]>([])
const reload = async () => {
// 获取栏目ID
const categoryId = Number(params.id);
// 当前栏目信息
const navs = await getCmsNavigation(categoryId);
// 终极新闻列表
const articles = await pageCmsArticle({categoryId});
// 当前栏目信息
if (navs) {
setNavigation(navs);
}
// 新闻列表
if (articles) {
setList(articles?.list || [])
}
}
useEffect(() => {
reload()
}, [])
return (
<>
<div style={{padding: navigation?.span + 'px'}}>
<Image src={navigation?.style} width={'100%'}
height={'auto'}/>
</div>
<div className={'bg-white rounded-lg py-3 px-3'}>
{
// 终极文章列表
list.map((item, index) => {
return (
<div
key={index}
className={'relative'}
style={{
background: 'url(https://oss.wsdns.cn/20250706/4dd93518d88f4b4a9028a769ad010295.png)',
backgroundSize: '100%',
backgroundRepeat: 'no-repeat',
margin: '10px 0',
width: '100%',
height: '66px',
display: 'flex',
alignItems: 'center',
justifyContent: 'center'
}}
onClick={() => Taro.navigateTo({url: `./detail?id=${item.articleId}`})}
>
{/* 标题 */}
<div
className={'absolute z-50 text-sm text-center text-[#F2FE03] font-bold leading-tight px-1'}
style={{
backgroundImage: `url(https://oss.wsdns.cn/20250706/4dd93518d88f4b4a9028a769ad010295.png})`,
width: '100%',
height: 'auto'
}}>
A {item.title}
</div>
</div>
)
})
}
</div>
</>
)
}
export default Index

View File

@@ -3,7 +3,7 @@ page {
.mobile-container { .mobile-container {
width: 100%; width: 100%;
min-height: 100vh; min-height: 90vh;
// PC端样式 // PC端样式
//@media screen and (min-width: 768px) { //@media screen and (min-width: 768px) {

128
src/pages/page/index.scss Normal file
View File

@@ -0,0 +1,128 @@
.content {
padding: 32px;
line-height: 2.4rem;
// 富文本内容样式
:global {
// 段落样式
p {
margin: 16px 0;
line-height: 1.8;
text-align: justify;
}
// 标题样式
h1, h2, h3, h4, h5, h6 {
margin: 24px 0 16px 0;
font-weight: bold;
line-height: 1.4;
}
h1 { font-size: 24px; }
h2 { font-size: 22px; }
h3 { font-size: 20px; }
h4 { font-size: 18px; }
h5 { font-size: 16px; }
h6 { font-size: 14px; }
// 图片样式
img {
max-width: 100%;
height: auto;
border-radius: 8px;
margin: 16px 0;
display: block;
}
// 列表样式
ul, ol {
margin: 16px 0;
padding-left: 24px;
li {
margin: 8px 0;
line-height: 1.6;
}
}
// 引用样式
blockquote {
margin: 16px 0;
padding: 16px;
background-color: #f5f5f5;
border-left: 4px solid #ddd;
border-radius: 4px;
p {
margin: 0;
font-style: italic;
}
}
// 代码样式
code {
background-color: #f5f5f5;
padding: 2px 6px;
border-radius: 4px;
font-family: 'Courier New', monospace;
font-size: 14px;
}
pre {
background-color: #f5f5f5;
padding: 16px;
border-radius: 8px;
overflow-x: auto;
margin: 16px 0;
code {
background: none;
padding: 0;
}
}
// 表格样式
table {
width: 100%;
border-collapse: collapse;
margin: 16px 0;
th, td {
border: 1px solid #ddd;
padding: 12px;
text-align: left;
}
th {
background-color: #f5f5f5;
font-weight: bold;
}
}
// 链接样式
a {
color: #1890ff;
text-decoration: none;
&:hover {
text-decoration: underline;
}
}
// 分割线样式
hr {
margin: 24px 0;
border: none;
border-top: 1px solid #eee;
}
// 强调样式
strong, b {
font-weight: bold;
}
em, i {
font-style: italic;
}
}
}

47
src/pages/page/index.tsx Normal file
View File

@@ -0,0 +1,47 @@
import {useEffect, useState} from 'react'
import {useRouter} from '@tarojs/taro'
import {Divider} from '@nutui/nutui-react-taro'
import {CmsArticle} from "@/api/cms/cmsArticle/model"
// 显示html富文本
import {View, RichText} from '@tarojs/components'
import './index.scss'
import {getCmsNavigation} from "@/api/cms/cmsNavigation";
function Detail() {
const {params} = useRouter();
// 文章详情
const [item, setItem] = useState<CmsArticle>()
// 正文
const [content, setContent] = useState<string>('')
const reload = async () => {
const nav = await getCmsNavigation(Number(params.id));
if(nav){
setItem(nav)
}
if(nav.design?.content){
setContent(nav.design?.content)
}
}
useEffect(() => {
reload().then();
}, []);
return (
<div className="mobile-container">
<div className={'bg-white'}>
<div className={'p-3 font-bold text-lg'}>{item?.title}</div>
<Divider/>
<View className={'content text-gray-700 text-sm'}>
<RichText
nodes={content || '暂无内容'}
space="nbsp"
/>
</View>
</div>
</div>
)
}
export default Detail

View File

@@ -1,112 +1,79 @@
import {Button} from '@nutui/nutui-react-taro'
import {Avatar, Tag, Space} from '@nutui/nutui-react-taro' import {Avatar, Tag, Space} from '@nutui/nutui-react-taro'
import Taro from '@tarojs/taro';
import {useEffect, useState} from "react"; import {useEffect, useState} from "react";
import {User} from "@/api/system/user/model"; import {User} from "@/api/system/user/model";
import navTo from "@/utils/common"; import navTo from "@/utils/common";
import {TenantId} from "@/utils/config"; import Taro from '@tarojs/taro'
import {getUserInfo} from "@/api/layout";
function UserCard() { function UserCard() {
const [IsLogin, setIsLogin] = useState<boolean>(false) const [IsLogin, setIsLogin] = useState<boolean>(false)
const [userInfo, setUserInfo] = useState<User>() const [userInfo, setUserInfo] = useState<User>()
useEffect(() => { useEffect(() => {
reload() reload().then()
}, []); }, []);
const reload = () => { const reload = async () => {
setIsLogin(true)
}; if(Taro.getStorageSync('UserId')){
setUserInfo(await getUserInfo())
/* 获取用户手机号 */
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)
setUserInfo(res.data.data.user)
setIsLogin(true)
}
})
} else {
console.log('登录失败!')
} }
} };
})
}
return ( return (
<> <>
<div className={'p-4'}> <div className={'p-4 bg-[#BE1717]'}>
<div <div
className={'user-card w-full bg-blue-900 flex flex-col justify-center rounded-xl'} className={'user-card w-full flex flex-col justify-center rounded-xl'}
style={{ style={{
background: 'linear-gradient(to bottom, #e1dfff, #f3f2f7)', // 这种情况建议使用类名来控制样式(引入外联样式) // background: 'linear-gradient(to bottom, #ff0000, #f3f2f7)', // 这种情况建议使用类名来控制样式(引入外联样式)
// width: '720rpx', // width: '720rpx',
// margin: '10px auto 0px auto', // margin: '10px auto 0px auto',
height: '144px', height: '144px',
// borderRadius: '22px 22px 0 0', // borderRadius: '22px 22px 0 0',
}} }}
> >
<div className={'user-card-header flex w-full justify-between items-center'}> <div className={'user-card-header flex w-full justify-between items-center'}>
<div className={'flex items-center mx-4'}> <div className={'flex items-center mx-4'}>
{ {
IsLogin ? ( IsLogin && (
<Avatar size="large" src={userInfo?.avatar} shape="round"/> <Avatar size="large" src={userInfo?.avatar} shape="round"/>
) : ( )
<Button className={'text-black'} open-type="getPhoneNumber" onGetPhoneNumber={handleGetPhoneNumber}> }
<Avatar size="large" src={userInfo?.avatar} shape="round"/> {
</Button> !IsLogin && (
) <Avatar size="large" src={userInfo?.avatar} shape="round"/>
} )
<div className={'user-info flex flex-col px-2'}> }
<div className={'py-1 text-black font-bold'}>{IsLogin ? userInfo?.mobile : '请点击头像登录'}</div> <div className={'user-info flex flex-col px-2'}>
{IsLogin ? ( {IsLogin ? (
<Space className={'grade text-xs py-1'}> <Space className={'grade text-xs py-1'}>
<Tag type="success" round> <Tag type="warning" round>
<div className={'p-1'}>{'注册用户'}</div> <div className={'p-1'}>{'注册用户'}</div>
</Tag> </Tag>
{/*{*/} {/*{*/}
{/* userInfo?.organizationName && (*/} {/* userInfo?.organizationName && (*/}
{/* <Tag type="warning" round>*/} {/* <Tag type="warning" round>*/}
{/* <div className={'p-1'}>{userInfo?.organizationName}</div>*/} {/* <div className={'p-1'}>{userInfo?.organizationName}</div>*/}
{/* </Tag>*/} {/* </Tag>*/}
{/* )*/} {/* )*/}
{/*}*/} {/*}*/}
</Space> </Space>
) : ''} ) : ''}
</div> </div>
</div>
<div
className={'mx-4 text-sm px-3 py-1 text-white border-gray-200 border-solid border-2 rounded-3xl'}
onClick={() => navTo('/user/profile/profile', true)}>
{'个人资料'}
</div>
</div>
</div>
</div> </div>
<div className={'mx-4 text-sm px-3 py-1 text-black border-gray-400 border-solid border-2 rounded-3xl'} </>
onClick={() => navTo('/user/profile/profile', true)}>
{'个人资料'}
</div>
</div>
</div>
</div>
</>
) )
} }
export default UserCard; export default UserCard;

View File

@@ -2,16 +2,19 @@ import {Cell, InfiniteLoading} from '@nutui/nutui-react-taro'
import navTo from "@/utils/common"; import navTo from "@/utils/common";
import UserFooter from "./UserFooter"; import UserFooter from "./UserFooter";
import Taro from '@tarojs/taro' import Taro from '@tarojs/taro'
import {ArrowRight, ShieldCheck, Truck, LogisticsError} from '@nutui/icons-react-taro' import {ArrowRight, Headphones} from '@nutui/icons-react-taro'
import {CSSProperties, useEffect, useState} from "react"; import {CSSProperties, useEffect} from "react";
const UserCell = () => { const UserCell = () => {
const [roleName, setRoleName] = useState<string>('')
const InfiniteUlStyle: CSSProperties = { const InfiniteUlStyle: CSSProperties = {
height: '88vh', height: '88vh',
padding: '16px', padding: '16px',
overflowY: 'auto', overflowY: 'auto',
overflowX: 'hidden', overflowX: 'hidden',
backgroundImage: 'url(https://oss.wsdns.cn/20250707/fc6234359d394788879ee64e27f76d2e.png?x-oss-process=image/resize,m_fixed,w_750/quality,Q_90)',
backgroundSize: 'cover',
backgroundRepeat: 'no-repeat',
backgroundPosition: 'bottom'
} }
const onLogout = () => { const onLogout = () => {
Taro.showModal({ Taro.showModal({
@@ -33,7 +36,7 @@ const UserCell = () => {
} }
useEffect(() => { useEffect(() => {
setRoleName(Taro.getStorageSync('RoleCode'))
}, []); }, []);
return ( return (
@@ -45,193 +48,18 @@ const UserCell = () => {
className="nutui-cell-clickable" className="nutui-cell-clickable"
title={ title={
<div style={{display: 'inline-flex', alignItems: 'center'}}> <div style={{display: 'inline-flex', alignItems: 'center'}}>
<ShieldCheck size={16}/> <Headphones size={16}/>
<span className={'pl-3 text-sm'}></span> <span className={'pl-3 text-sm'}></span>
</div> </div>
} }
align="center" align="center"
extra={<ArrowRight color="#cccccc" size={18}/>} extra={<ArrowRight color="#cccccc" size={18}/>}
onClick={() => { onClick={() => {
navTo('/user/userVerify/index', true) Taro.navigateTo({url: '/pages/page/index?id=4355'})
}} }}
/> />
</Cell.Group> </Cell.Group>
{
(roleName === 'kuaidi' || roleName == 'zhandian') && (
<>
<Cell.Group divider={true}>
<Cell
className="nutui-cell-clickable"
title={
<div style={{display: 'inline-flex', alignItems: 'center'}}>
<ShieldCheck size={16}/>
<span className={'pl-3 text-sm'}></span>
</div>
}
align="center"
extra={<ArrowRight color="#cccccc" size={18}/>}
onClick={() => {
navTo('/user/userVerify/admin', true)
}}
/>
</Cell.Group>
<Cell.Group divider={true}>
<Cell
className="nutui-cell-clickable"
title={
<div style={{display: 'inline-flex', alignItems: 'center'}}>
<Truck size={16}/>
<span className={'pl-3 text-sm'}></span>
</div>
}
align="center"
extra={<ArrowRight color="#cccccc" size={18}/>}
onClick={() => {
navTo('/hjm/violation/list', true)
}}
/>
</Cell.Group>
</>
)
}
{
roleName === 'kuaidiyuan' && (
<>
<Cell.Group divider={true}>
<Cell
className="nutui-cell-clickable"
title={
<div style={{display: 'inline-flex', alignItems: 'center'}}>
<Truck size={16}/>
<span className={'pl-3 text-sm'}></span>
</div>
}
align="center"
extra={<ArrowRight color="#cccccc" size={18}/>}
onClick={() => {
navTo('/user/car/index', true)
}}
/>
</Cell.Group>
<Cell.Group divider={true}>
<Cell
className="nutui-cell-clickable"
title={
<div style={{display: 'inline-flex', alignItems: 'center'}}>
<LogisticsError size={16}/>
<span className={'pl-3 text-sm'}></span>
</div>
}
align="center"
extra={<ArrowRight color="#cccccc" size={18}/>}
onClick={() => {
navTo('/hjm/bx/bx', true)
}}
/>
</Cell.Group>
</>
)
}
{
roleName === 'jiaojing' && (
<Cell.Group divider={true}>
<Cell
className="nutui-cell-clickable"
title={
<div style={{display: 'inline-flex', alignItems: 'center'}}>
<Truck size={16}/>
<span className={'pl-3 text-sm'}></span>
</div>
}
align="center"
extra={<ArrowRight color="#cccccc" size={18}/>}
onClick={() => {
navTo('/hjm/violation/list', true)
}}
/>
</Cell.Group>
)
}
{/*<Cell.Group divider={true} description={*/}
{/* <div style={{display: 'inline-flex', alignItems: 'center'}}>*/}
{/* <span style={{marginTop: '12px'}}>管理</span>*/}
{/* </div>*/}
{/*}>*/}
{/* <Cell*/}
{/* className="nutui-cell-clickable"*/}
{/* title={*/}
{/* <div style={{display: 'inline-flex', alignItems: 'center'}}>*/}
{/* <Presentation size={18}/>*/}
{/* <span style={{marginLeft: '5px'}}>分析</span>*/}
{/* </div>*/}
{/* }*/}
{/* align="center"*/}
{/* extra={<ArrowRight color="#cccccc" size={18}/>}*/}
{/* onClick={() => {*/}
{/* navTo('/bszx/bm-cert/bm-cert', true)*/}
{/* }}*/}
{/* />*/}
{/* <Cell*/}
{/* className="nutui-cell-clickable"*/}
{/* title={*/}
{/* <div style={{display: 'inline-flex', alignItems: 'center'}}>*/}
{/* <PickedUp size={18}/>*/}
{/* <span style={{marginLeft: '5px'}}>客户</span>*/}
{/* </div>*/}
{/* }*/}
{/* align="center"*/}
{/* extra={<ArrowRight color="#cccccc" size={18}/>}*/}
{/* onClick={() => {*/}
{/* navTo('/bszx/pay-log/pay-log', true)*/}
{/* }}*/}
{/* />*/}
{/* <Cell*/}
{/* className="nutui-cell-clickable"*/}
{/* title={*/}
{/* <div style={{display: 'inline-flex', alignItems: 'center'}}>*/}
{/* <Coupon size={18}/>*/}
{/* <span style={{marginLeft: '5px'}}>折扣</span>*/}
{/* </div>*/}
{/* }*/}
{/* align="center"*/}
{/* extra={<ArrowRight color="#cccccc" size={18}/>}*/}
{/* onClick={() => {*/}
{/* navTo('/user/profile/profile', true)*/}
{/* }}*/}
{/* />*/}
{/*</Cell.Group>*/}
{/*<Cell.Group divider={true} description={*/}
{/* <div style={{display: 'inline-flex', alignItems: 'center'}}>*/}
{/* <span style={{marginTop: '12px'}}>设置与帮助</span>*/}
{/* </div>*/}
{/*}>*/}
{/* <Cell*/}
{/* className="nutui-cell-clickable"*/}
{/* title="店铺设置"*/}
{/* align="center"*/}
{/* extra={<ArrowRight color="#cccccc" size={18}/>}*/}
{/* onClick={() => Taro.navigateTo({url: '/website/modify'})}*/}
{/* />*/}
{/* <Cell*/}
{/* className="nutui-cell-clickable"*/}
{/* title="帮助中心"*/}
{/* align="center"*/}
{/* extra={<ArrowRight color="#cccccc" size={18}/>}*/}
{/* onClick={() => {*/}
{/* navTo('/user/profile/profile', true)*/}
{/* }}*/}
{/* />*/}
{/* <Cell*/}
{/* className="nutui-cell-clickable"*/}
{/* title="问题反馈"*/}
{/* align="center"*/}
{/* extra={<ArrowRight color="#cccccc" size={18}/>}*/}
{/* onClick={() => {*/}
{/* navTo('/user/profile/profile', true)*/}
{/* }}*/}
{/* />*/}
{/*</Cell.Group>*/}
<Cell.Group divider={true} description={ <Cell.Group divider={true} description={
<div style={{display: 'inline-flex', alignItems: 'center'}}> <div style={{display: 'inline-flex', alignItems: 'center'}}>
<span style={{marginTop: '12px'}}></span> <span style={{marginTop: '12px'}}></span>
@@ -244,13 +72,13 @@ const UserCell = () => {
extra={<ArrowRight color="#cccccc" size={18}/>} extra={<ArrowRight color="#cccccc" size={18}/>}
onClick={() => navTo('/user/profile/profile', true)} onClick={() => navTo('/user/profile/profile', true)}
/> />
<Cell {/*<Cell*/}
className="nutui-cell-clickable" {/* className="nutui-cell-clickable"*/}
title="短信登录" {/* title="短信登录"*/}
align="center" {/* align="center"*/}
extra={<ArrowRight color="#cccccc" size={18}/>} {/* extra={<ArrowRight color="#cccccc" size={18}/>}*/}
onClick={() => navTo('/passport/sms-login', true)} {/* onClick={() => navTo('/passport/sms-login', true)}*/}
/> {/*/>*/}
<Cell <Cell
className="nutui-cell-clickable" className="nutui-cell-clickable"
title="退出登录" title="退出登录"

View File

@@ -5,7 +5,7 @@ import {Popup} from '@nutui/nutui-react-taro'
import {UserParam} from "@/api/system/user/model"; import {UserParam} from "@/api/system/user/model";
import {Button} from '@nutui/nutui-react-taro' import {Button} from '@nutui/nutui-react-taro'
import {Form, Input} from '@nutui/nutui-react-taro' import {Form, Input} from '@nutui/nutui-react-taro'
import {Copyright, Version} from "@/utils/config"; import {Version} from "@/utils/config";
const UserFooter = () => { const UserFooter = () => {
const [openLoginByPhone, setOpenLoginByPhone] = useState(false) const [openLoginByPhone, setOpenLoginByPhone] = useState(false)
const [clickNum, setClickNum] = useState<number>(0) const [clickNum, setClickNum] = useState<number>(0)
@@ -48,7 +48,7 @@ const UserFooter = () => {
<> <>
<div className={'text-center py-4 w-full text-gray-300'} onClick={onLoginByPhone}> <div className={'text-center py-4 w-full text-gray-300'} onClick={onLoginByPhone}>
<div className={'text-xs text-gray-400 py-1'}>{Version}</div> <div className={'text-xs text-gray-400 py-1'}>{Version}</div>
<div className={'text-xs text-gray-400 py-1'}>Copyright © { new Date().getFullYear() } {Copyright}</div> {/*<div className={'text-xs text-gray-400 py-1'}>Copyright © { new Date().getFullYear() } {Copyright}</div>*/}
</div> </div>
<Popup <Popup

View File

@@ -8,7 +8,7 @@ function User() {
useEffect(() => { useEffect(() => {
}, []); }, []);
return ( return (
<div className="mobile-container"> <div style={{ backgroundColor: '#ffefef', height: '100vh'}}>
<div className={'fixed w-full'}> <div className={'fixed w-full'}>
<UserCard /> <UserCard />
<UserCell /> <UserCell />