feat(dealer): 添加微信客服功能并优化订单和客户页面

- 在 app.config.ts 中添加微信客服页面路由
- 修改订单页面标题为"电费收益"
- 新增微信客服页面组件和样式
- 优化客户交易页面,添加搜索功能
- 更新二维码页面文案- 新增微信二维码图片说明文档
This commit is contained in:
2025-09-03 14:43:41 +08:00
parent e4d993548f
commit 1368155736
11 changed files with 287 additions and 9 deletions

View File

@@ -0,0 +1,3 @@
export default definePageConfig({
navigationBarTitleText: '微信客服'
})

View File

@@ -0,0 +1,176 @@
.wechat-service-page {
min-height: 100vh;
.service-tabs {
background-color: #fff;
.nut-tabs__titles {
background-color: #fff;
}
.nut-tabs__content {
padding: 0;
}
}
.qr-container {
padding: 20px;
min-height: calc(100vh - 100px);
.qr-header {
text-align: center;
margin-bottom: 30px;
.qr-title {
display: block;
font-weight: bold;
color: #333;
margin-bottom: 8px;
}
.qr-description {
display: block;
color: #666;
line-height: 1.5;
}
}
.qr-content {
display: flex;
flex-direction: column;
align-items: center;
gap: 30px;
.qr-code-wrapper {
background-color: #fff;
border-radius: 12px;
padding: 30px;
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1);
text-align: center;
.qr-code-image {
width: 360px;
height: 360px;
border-radius: 8px;
margin-bottom: 15px;
}
.wechat-id {
display: block;
color: #333;
font-weight: 500;
}
}
.qr-tips {
background-color: #fff;
border-radius: 12px;
padding: 20px;
width: 100%;
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1);
.tip-title {
display: block;
font-weight: bold;
color: #333;
margin-bottom: 15px;
}
.tip-item {
display: block;
color: #666;
line-height: 1.8;
margin-bottom: 8px;
padding-left: 10px;
position: relative;
&:before {
content: '';
color: #07c160;
font-weight: bold;
position: absolute;
left: 0;
}
&:last-child {
margin-bottom: 0;
}
}
}
}
}
}
// 响应式适配
@media (max-width: 375px) {
.wechat-service-page {
.qr-container {
padding: 15px;
.qr-content {
.qr-code-wrapper {
padding: 20px;
.qr-code-image {
width: 180px;
height: 180px;
}
}
}
}
}
}
// 深色模式适配
@media (prefers-color-scheme: dark) {
.wechat-service-page {
background-color: #1a1a1a;
.service-tabs {
.nut-tabs__titles {
background-color: #2a2a2a;
border-bottom-color: #333;
}
}
.qr-container {
background-color: #1a1a1a;
.qr-header {
.qr-title {
color: #fff;
}
.qr-description {
color: #ccc;
}
}
.qr-content {
.qr-code-wrapper {
background-color: #2a2a2a;
.qr-code-image {
border-color: #444;
}
.wechat-id {
color: #fff;
}
}
.qr-tips {
background-color: #2a2a2a;
.tip-title {
color: #fff;
}
.tip-item {
color: #ccc;
}
}
}
}
}
}

View File

@@ -0,0 +1,68 @@
import {useEffect, useState} from 'react'
import {View, Text, Image} from '@tarojs/components'
import {Tabs} from '@nutui/nutui-react-taro'
import './index.scss'
import {listCmsWebsiteField} from "@/api/cms/cmsWebsiteField";
import {CmsWebsiteField} from "@/api/cms/cmsWebsiteField/model";
interface QrCodeData {
id: string
title: string
description: string
qrCode: string
wechatId: string
}
const WechatService = () => {
const [activeTab, setActiveTab] = useState('0')
const [codes, setCodes] = useState<CmsWebsiteField[]>([])
const renderQRCode = (data: typeof codes[0]) => (
<View className="qr-container">
<View className="qr-content">
<View className="qr-code-wrapper">
<Image
src={`${data.value}`}
className="qr-code-image"
mode="aspectFit"
/>
<Text className="wechat-id">{data.comments}</Text>
</View>
<View className="qr-tips">
<Text className="tip-title">使</Text>
<Text className="tip-item">1. </Text>
<Text className="tip-item">2. </Text>
<Text className="tip-item">3. </Text>
<Text className="tip-item">4. </Text>
</View>
</View>
</View>
)
useEffect(() => {
listCmsWebsiteField({ name: 'kefu'}).then(data => {
if(data){
setCodes(data)
}
})
}, []);
return (
<View className="wechat-service-page">
<Tabs
value={activeTab}
onChange={(value) => setActiveTab(`${value}`)}
className="service-tabs"
>
{codes.map((item) => (
<Tabs.TabPane key={item.id} title={item.comments} value={item.id}>
{renderQRCode(item)}
</Tabs.TabPane>
))}
</Tabs>
</View>
)
}
export default WechatService