feat(customer): 添加客户报备重复检查功能

- 新增 DUP_CHECK_LIMIT 和 DUP_CHECK_MAX_PAGES 常量配置
- 实现三要素重复检查逻辑,支持地址、楼栋号、单元号、房号、姓名、电话等字段组合匹配
- 添加 normalizeText 函数处理文本标准化
- 实现 combinationsOf3 函数生成三个元素的组合
- 添加 checkDuplicateBeforeSubmit 函数执行重复检查
- 在提交前验证重复报备并显示提示信息
- 移除用户页面中的 IsDealer 组件
- 更新用户组件删除实名认证和收货地址相关功能
This commit is contained in:
2026-02-02 13:05:19 +08:00
parent 9294c7b049
commit 316aab2616
3 changed files with 150 additions and 36 deletions

View File

@@ -2,11 +2,11 @@ import {Cell} from '@nutui/nutui-react-taro'
import navTo from "@/utils/common";
import Taro from '@tarojs/taro'
import {View, Text} from '@tarojs/components'
import {ArrowRight, ShieldCheck, LogisticsError, Location, Tips, Ask} from '@nutui/icons-react-taro'
import {ArrowRight, LogisticsError, Tips, Ask} from '@nutui/icons-react-taro'
import {useUser} from '@/hooks/useUser'
const UserCell = () => {
const {logoutUser, isCertified} = useUser();
const {logoutUser} = useUser();
const onLogout = () => {
Taro.showModal({
@@ -50,37 +50,37 @@ const UserCell = () => {
navTo('/user/wallet/index', true)
}}
/>
<Cell
className="nutui-cell-clickable"
title={
<View style={{display: 'inline-flex', alignItems: 'center'}}>
<Location size={16}/>
<Text className={'pl-3 text-sm'}></Text>
</View>
}
align="center"
extra={<ArrowRight color="#cccccc" size={18}/>}
onClick={() => {
navTo('/user/address/index', true)
}}
/>
<Cell
className="nutui-cell-clickable"
title={
<View style={{display: 'inline-flex', alignItems: 'center'}}>
<ShieldCheck size={16} color={isCertified() ? '#52c41a' : '#666'}/>
<Text className={'pl-3 text-sm'}></Text>
{isCertified() && (
<Text className={'pl-2 text-xs text-green-500'}></Text>
)}
</View>
}
align="center"
extra={<ArrowRight color="#cccccc" size={18}/>}
onClick={() => {
navTo('/user/userVerify/index', true)
}}
/>
{/*<Cell*/}
{/* className="nutui-cell-clickable"*/}
{/* title={*/}
{/* <View style={{display: 'inline-flex', alignItems: 'center'}}>*/}
{/* <Location size={16}/>*/}
{/* <Text className={'pl-3 text-sm'}>收货地址</Text>*/}
{/* </View>*/}
{/* }*/}
{/* align="center"*/}
{/* extra={<ArrowRight color="#cccccc" size={18}/>}*/}
{/* onClick={() => {*/}
{/* navTo('/user/address/index', true)*/}
{/* }}*/}
{/*/>*/}
{/*<Cell*/}
{/* className="nutui-cell-clickable"*/}
{/* title={*/}
{/* <View style={{display: 'inline-flex', alignItems: 'center'}}>*/}
{/* <ShieldCheck size={16} color={isCertified() ? '#52c41a' : '#666'}/>*/}
{/* <Text className={'pl-3 text-sm'}>实名认证</Text>*/}
{/* {isCertified() && (*/}
{/* <Text className={'pl-2 text-xs text-green-500'}>已认证</Text>*/}
{/* )}*/}
{/* </View>*/}
{/* }*/}
{/* align="center"*/}
{/* extra={<ArrowRight color="#cccccc" size={18}/>}*/}
{/* onClick={() => {*/}
{/* navTo('/user/userVerify/index', true)*/}
{/* }}*/}
{/*/>*/}
<Cell
className="nutui-cell-clickable"
title={