Commit 32cd5011 authored by 前端-钟卫鹏's avatar 前端-钟卫鹏
parents b9d07be6 42706953
## god-template
### 为数商云&醒电构建项目提供react脚手架模板
### 为&醒电构建项目提供react脚手架模板
- god页面模板, 依赖于[umi](https://umijs.org/), 更多配置可以查看
- god组件库[文档](http://10.0.0.22:8080/)
......@@ -24,4 +24,4 @@
1. 样式
- 全局样式需写在src/global/global.less下, 涉及到color, size之类的属性尽量变量化 并且储存在/styles/theme.less中
"umi-plugin-antd-theme": "^2.1.2"
\ No newline at end of file
"umi-plugin-antd-theme": "^2.1.2"
......@@ -131,6 +131,13 @@ const AuthConfigRoute: RouterChild = {
component: '@/pages/accountSetting/editAccount',
hideInMenu: true,
},
// 实名认证
{
path: '/memberCenter/systemSetting/accountSetting/realname',
name: 'realname',
component: '@/pages/accountSetting/realname',
hideInMenu: true,
},
//消息中心
{
path: '/memberCenter/systemSetting/message',
......
public/static/imgs/Fav.jpg

2.6 KB | W: | H:

public/static/imgs/Fav.jpg

2.11 KB | W: | H:

public/static/imgs/Fav.jpg
public/static/imgs/Fav.jpg
public/static/imgs/Fav.jpg
public/static/imgs/Fav.jpg
  • 2-up
  • Swipe
  • Onion skin
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="48px" height="48px" viewBox="0 0 48 48" version="1.1">
<title>图标</title>
<g id="账户安全" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="A.1-账户安全设置" transform="translate(-272.000000, -512.000000)">
<g id="卡片" transform="translate(256.000000, 496.000000)">
<g id="图标" transform="translate(16.000000, 16.000000)">
<rect id="矩形" fill="#F5F6F7" x="0" y="0" width="48" height="48" rx="4"></rect>
<g id="图标" transform="translate(8.000000, 8.000000)" fill="#91959B">
<path d="M16,2.66666667 C19.6818983,2.66666667 22.6666667,5.651435 22.6666667,9.33333333 C22.6666667,11.2637064 21.8462216,13.0024542 20.5350137,14.2198944 C20.9101807,14.3731306 21.2758562,14.5448148 21.6309128,14.7338196 C17.7017664,15.2411887 14.6666667,18.5994849 14.6666667,22.6666667 C14.6666667,24.7165472 15.4376463,26.5863558 16.7054512,28.0019381 L5.59186294,28.0012161 C4.83381424,28.0022844 4.19411129,27.4376148 4.10107959,26.6852957 C4.0336932,26.1402311 4,25.689577 4,25.3333333 C4,20.3105494 7.085912,16.0085188 11.4652306,14.219747 C10.1537784,13.0024542 9.33333333,11.2637064 9.33333333,9.33333333 C9.33333333,5.651435 12.3181017,2.66666667 16,2.66666667 Z" id="🎨-Icon-Сolor"></path>
<path d="M26.8366534,20.9535193 L22.1354582,25.5883134 C21.9229748,25.8007968 21.5776892,25.8007968 21.3652058,25.5883134 L19.0677291,23.3439575 C18.749004,23.0385126 18.749004,22.5338645 19.0544489,22.2151394 C19.3598938,21.9096946 19.8512616,21.9096946 20.1567065,22.2018592 L21.5112882,23.5033201 C21.6440903,23.6361222 21.8565737,23.6361222 21.9893758,23.5033201 L25.7343958,19.8247012 C26.0398406,19.5192563 26.5444887,19.5192563 26.8499336,19.8247012 C27.1553785,20.1434263 27.1553785,20.6480744 26.8366534,20.9535193 M28.8021248,20.0903054 C28.4435591,19.2802125 27.9787517,18.5763612 27.3811421,17.9654714 C26.7835325,17.3545817 26.0796813,16.876494 25.2695883,16.5312085 C24.4594954,16.1726428 23.5962815,16 22.6799469,16 C21.750332,16 20.873838,16.1726428 20.063745,16.5312085 C19.2536521,16.8897742 18.5498008,17.3678619 17.9521912,17.9654714 C17.3545817,18.5763612 16.876494,19.2802125 16.5312085,20.0903054 C16.185923,20.9003984 16,21.7636122 16,22.6799469 C16,23.5962815 16.1726428,24.4594954 16.5312085,25.2695883 C16.8897742,26.0796813 17.3545817,26.7835325 17.9521912,27.3944223 C18.5498008,28.0053121 19.2536521,28.4701195 20.063745,28.815405 C20.873838,29.1606906 21.750332,29.3333333 22.6799469,29.3333333 C23.5962815,29.3333333 24.4594954,29.1606906 25.2695883,28.815405 C26.0796813,28.4701195 26.7835325,27.9920319 27.3811421,27.3944223 C27.9787517,26.7835325 28.4568393,26.0796813 28.8021248,25.2695883 C29.1606906,24.4594954 29.3333333,23.5962815 29.3333333,22.6799469 C29.3200531,21.7636122 29.1474104,20.9003984 28.8021248,20.0903054" id="🎨-Icon-Сolor"></path>
</g>
<rect id="矩形" x="0" y="0" width="48" height="48"></rect>
</g>
</g>
</g>
</g>
</svg>
......@@ -4,6 +4,7 @@ import { Modal } from 'antd'
import { TabTreeActions } from '@/components/TabTree'
import { ISchemaFormActions } from '@formily/antd'
import { isObject } from '@/utils'
import { usePageStatus } from './usePageStatus'
export enum FormState {
FREE, // 空闲状态
......@@ -13,7 +14,7 @@ export enum FormState {
export interface useTreeTabOptions {
selectCallback?(selectKey?, node?),
fetchMenuData?(),
fetchMenuData?(roleId?: number),
fetchItemDetailData?(id),
// 重置右侧详情
resetDetail?(),
......@@ -47,13 +48,14 @@ export const useTreeData = (options: useTreeTabOptions = {}) => {
const [nodeRecord, setNodeRecord] = useState<any>(null)
const [isEditForm, setIsEditForm] = useState<boolean>(false)
const { id } = usePageStatus();
useEffect(() => {
resetMenu()
}, [])
const resetMenu = async () => {
if (fetchMenuData) {
const res = await fetchMenuData()
const res = await fetchMenuData(Number(id))
setTreeData(res.data || [])
}
}
......
......@@ -55,7 +55,7 @@ export const getSelectedMenuKeys = (
const defaultFooterDom = (
<DefaultFooter
// copyright={`瓴犀-${new Date().getFullYear()} 前端组体验出品`}
copyright={`全链数字化解决方案`}
links={[]}
/>
);
......
......@@ -4,8 +4,8 @@ import cx from 'classnames'
const BaseFooter: React.FC = (props) => {
return (
<footer className={cx(styles.lingxiBusinessUserFooter)}>Copy Right©广州市数商云网络科技有限公司 粤ICP备13044797号-5</footer>
<footer className={cx(styles.lingxiBusinessUserFooter)}>全链数字化解决方案</footer>
)
}
export default BaseFooter
\ No newline at end of file
export default BaseFooter
......@@ -37,7 +37,7 @@ import marketing from './en-US/marketing'
import responseCode from './en-US/responseCode'
export default {
'global.siteName': '瓴犀',
'global.siteName': '',
...common,
...menu,
...home,
......
export default {
'accountSetting.twoPasswordsDifferent':'Two passwords are different',
'accountSetting.inputCorrentPhoneNumble':'Please fill in the correct phone number',
'accountSetting.unvalidEmail':'Invalid Email',
'accountSetting.loginPsw':'Login password',
'accountSetting.pswLength':'Password length is 8-20 characters',
'accountSetting.pswNotEmptySymbol':'Password cannot contain spaces',
'accountSetting.pswDiverse':'Password must contain uppercase and lowercase letters, lowercase letters and numbers',
'accountSetting.confirmPsw':'Confirm password',
'accountSetting.emailAddress':'Email address',
'accountSetting.emailCode':'Email verification code',
'accountSetting.inputEmailCode':'Please fill in the email verification code',
'accountSetting.newPhoneNumble':'New phone number',
'accountSetting.inputPhoneNumble':'Please fill in the phone number',
'accountSetting.code':'Verification code',
'accountSetting.inputCode':'Please fill in the verification code',
'accountSetting.getVerificationCode':'Get verification code',
'accountSetting.clickVerify':'Click to verify',
'accountSetting.verifyError':'Verification failed',
'accountSetting.verifyRightSlide':'Slide to the right to verify',
'accountSetting.currentlyBoundPhoneNumble':'Currently bound phone number',
'accountSetting.CurrentlyAuthenticatedMailbox':'Currently authenticated mailbox',
'accountSetting.notBoundEmail':'You have not bound an email',
'accountSetting.notSettingPsw':'You have not set a payment password',
'accountSetting.modify':'Modify',
'accountSetting.setEmail':'Set Email',
'accountSetting.setPayPsw':'Set payment password',
'accountSetting.resetPayPsw':'Reset payment password',
'accountSetting.verifyOk':'Verification successful',
'accountSetting.submit':'Submit',
'accountSetting.phoneCodeVerify':'Mobile verification code verification',
'accountSetting.emailVerify':'Email Verification',
'accountSetting.payPswVerify':'Payment password verification',
'accountSetting.inputPayPsw':'Please fill in the payment password',
'accountSetting.payPsw':'Payment password',
'accountSetting.setSixNumblePsw':'Please set a 6-digit password',
'accountSetting.setNewPayPsw':'Set a new payment password',
'accountSetting.back':'Back',
'accountSetting.modifyLoginPsw':'Modify login password',
'accountSetting.modifyEmail':'Modify Email',
'accountSetting.modifyPhone':'Modify phone',
"accountSetting.French": "France",
"accountSetting.mobileVerify": "Mobile Verification",
"accountSetting.adviseChangePsw": "Internet accounts are at risk of being stolen. It is recommended that you change your password regularly to protect your account security",
"accountSetting.yourVerifyEmail": "Your verified email:",
"accountSetting.yourVerifyPhone": "Your verified phone:",
"accountSetting.ifLossTochange": "If it is lost or disabled, please change it immediately to avoid account theft",
"accountSetting.pswStartToUpdate": "Your payment password has been turned on. It is recommended that you change your payment password regularly to improve security"
'accountSetting.twoPasswordsDifferent': 'Two passwords are different',
'accountSetting.inputCorrentPhoneNumble': 'Please fill in the correct phone number',
'accountSetting.unvalidEmail': 'Invalid Email',
'accountSetting.loginPsw': 'Login password',
'accountSetting.pswLength': 'Password length is 8-20 characters',
'accountSetting.pswNotEmptySymbol': 'Password cannot contain spaces',
'accountSetting.pswDiverse': 'Password must contain uppercase and lowercase letters, lowercase letters and numbers',
'accountSetting.confirmPsw': 'Confirm password',
'accountSetting.emailAddress': 'Email address',
'accountSetting.emailCode': 'Email verification code',
'accountSetting.inputEmailCode': 'Please fill in the email verification code',
'accountSetting.newPhoneNumble': 'New phone number',
'accountSetting.inputPhoneNumble': 'Please fill in the phone number',
'accountSetting.code': 'Verification code',
'accountSetting.inputCode': 'Please fill in the verification code',
'accountSetting.getVerificationCode': 'Get verification code',
'accountSetting.clickVerify': 'Click to verify',
'accountSetting.verifyError': 'Verification failed',
'accountSetting.verifyRightSlide': 'Slide to the right to verify',
'accountSetting.currentlyBoundPhoneNumble': 'Currently bound phone number',
'accountSetting.CurrentlyAuthenticatedMailbox': 'Currently authenticated mailbox',
'accountSetting.notBoundEmail': 'You have not bound an email',
'accountSetting.notSettingPsw': 'You have not set a payment password',
'accountSetting.modify': 'Modify',
'accountSetting.setEmail': 'Set Email',
'accountSetting.setPayPsw': 'Set payment password',
'accountSetting.resetPayPsw': 'Reset payment password',
'accountSetting.verifyOk': 'Verification successful',
'accountSetting.submit': 'Submit',
'accountSetting.phoneCodeVerify': 'Mobile verification code verification',
'accountSetting.emailVerify': 'Email Verification',
'accountSetting.payPswVerify': 'Payment password verification',
'accountSetting.inputPayPsw': 'Please fill in the payment password',
'accountSetting.payPsw': 'Payment password',
'accountSetting.setSixNumblePsw': 'Please set a 6-digit password',
'accountSetting.setNewPayPsw': 'Set a new payment password',
'accountSetting.back': 'Back',
'accountSetting.modifyLoginPsw': 'Modify login password',
'accountSetting.modifyEmail': 'Modify Email',
'accountSetting.modifyPhone': 'Modify phone',
"accountSetting.French": "France",
"accountSetting.mobileVerify": "Mobile Verification",
"accountSetting.adviseChangePsw": "Internet accounts are at risk of being stolen. It is recommended that you change your password regularly to protect your account security",
"accountSetting.yourVerifyEmail": "Your verified email:",
"accountSetting.yourVerifyPhone": "Your verified phone:",
"accountSetting.ifLossTochange": "If it is lost or disabled, please change it immediately to avoid account theft",
"accountSetting.pswStartToUpdate": "Your payment password has been turned on. It is recommended that you change your payment password regularly to improve security",
'accountSetting.cardImage': 'id card photo',
'accountSetting.cardMessage': 'Please upload clear and complete original color photos, ID card information visible and inevitable.',
'accountSetting.cardFace': 'Human face',
'accountSetting.emblem': 'National Emblem',
'accountSetting.cardInfo': 'id information',
'accountSetting.name': 'name',
'accountSetting.cardNo': 'cardNo',
'accountSetting.cardLabel': 'Automatic acquisition of upload photos',
'accountSetting.certified': 'Not certified',
'accountSetting.certified1': 'anew authentication',
'accountSetting.certified2': 'authentication',
'accountSetting.certified3': 'Enjoy full name membership exclusive services to enhance personal account security and credibility',
}
......@@ -37,7 +37,7 @@ import marketing from './ko-KR/marketing'
import responseCode from './ko-KR/responseCode'
export default {
'global.siteName': '瓴犀',
'global.siteName': '',
...common,
...menu,
...home,
......
export default {
'accountSetting.twoPasswordsDifferent': '비밀번호가 달라요.',
'accountSetting.inputCorrentPhoneNumble': '정확한 핸드폰 번호를 기입해 주십시오',
'accountSetting.unvalidEmail': '잘못된 메일박스',
'accountSetting.loginPsw': '로그인 암호',
'accountSetting.pswLength': '암호 길이 8-20자',
'accountSetting.pswNotEmptySymbol': '암호에는 공백을 사용할 수 없습니다.',
'accountSetting.pswDiverse': '암호에는 대소문자, 소문자 및 숫자가 포함되어야 합니다.',
'accountSetting.confirmPsw': '암호 확인',
'accountSetting.emailAddress': '메일 주소',
'accountSetting.emailCode': '메일박스 인증번호',
'accountSetting.inputEmailCode': '메일박스 인증번호를 기입하십시오',
'accountSetting.newPhoneNumble': '새 핸드폰 번호',
'accountSetting.inputPhoneNumble': '핸드폰 번호를 기입해 주세요',
'accountSetting.code': '인증 코드',
'accountSetting.inputCode': '인증번호를 입력하십시오.',
'accountSetting.getVerificationCode': '인증 코드 가져오기',
'accountSetting.clickVerify': '클릭하여 검증',
'accountSetting.verifyError': '인증 실패',
'accountSetting.verifyRightSlide': '오른쪽으로 슬라이딩 확인',
'accountSetting.currentlyBoundPhoneNumble': '현재 귀속 핸드폰 번호',
'accountSetting.CurrentlyAuthenticatedMailbox': '현재 인증된 사서함',
'accountSetting.notBoundEmail': '너 아직 메일박스 연결 안 했어.',
'accountSetting.notSettingPsw': '결제 암호를 설정하지 않았습니다.',
'accountSetting.modify': '수정',
'accountSetting.setEmail': '사서함 설정',
'accountSetting.setPayPsw': '결제 암호 설정',
'accountSetting.resetPayPsw': '결제 암호 재설정',
'accountSetting.verifyOk': '검증 성공',
'accountSetting.submit': '커밋',
'accountSetting.phoneCodeVerify': '핸드폰 검사 코드 검증',
'accountSetting.emailVerify': '메일박스 확인',
'accountSetting.payPswVerify': '결제 암호 확인',
'accountSetting.inputPayPsw': '결제 비밀번호 입력',
'accountSetting.payPsw': '지불 비밀번호',
'accountSetting.setSixNumblePsw': '6자리 숫자의 비밀번호를 설정하세요',
'accountSetting.setNewPayPsw': '새 결제 암호 설정',
'accountSetting.back': '되돌아오다',
'accountSetting.modifyLoginPsw': '로그인 암호 수정',
'accountSetting.modifyEmail': '메일박스 수정',
'accountSetting.modifyPhone': '핸드폰 수정',
"accountSetting.French": '프랑스',
"accountSetting.mobileVerify": '휴대폰 인증',
"accountSetting.adviseChangePsw": '인터넷 계정에 도난 위험이 존재하므로 정기적으로 비밀번호를 변경하여 계정의 안전을 보호하는 것을 권장합니다',
"accountSetting.yourVerifyEmail": '인증된 메일박스:',
"accountSetting.yourVerifyPhone": '인증된 휴대폰:',
"accountSetting.ifLossTochange": '분실 또는 정지 시, 계정 도난 방지 즉시 교환',
"accountSetting.pswStartToUpdate": '결제 암호가 켜져 있으므로 정기적으로 새 결제 암호를 교체하여 보안을 강화하는 것이 좋습니다.'
'accountSetting.twoPasswordsDifferent': '비밀번호가 달라요.',
'accountSetting.inputCorrentPhoneNumble': '정확한 핸드폰 번호를 기입해 주십시오',
'accountSetting.unvalidEmail': '잘못된 메일박스',
'accountSetting.loginPsw': '로그인 암호',
'accountSetting.pswLength': '암호 길이 8-20자',
'accountSetting.pswNotEmptySymbol': '암호에는 공백을 사용할 수 없습니다.',
'accountSetting.pswDiverse': '암호에는 대소문자, 소문자 및 숫자가 포함되어야 합니다.',
'accountSetting.confirmPsw': '암호 확인',
'accountSetting.emailAddress': '메일 주소',
'accountSetting.emailCode': '메일박스 인증번호',
'accountSetting.inputEmailCode': '메일박스 인증번호를 기입하십시오',
'accountSetting.newPhoneNumble': '새 핸드폰 번호',
'accountSetting.inputPhoneNumble': '핸드폰 번호를 기입해 주세요',
'accountSetting.code': '인증 코드',
'accountSetting.inputCode': '인증번호를 입력하십시오.',
'accountSetting.getVerificationCode': '인증 코드 가져오기',
'accountSetting.clickVerify': '클릭하여 검증',
'accountSetting.verifyError': '인증 실패',
'accountSetting.verifyRightSlide': '오른쪽으로 슬라이딩 확인',
'accountSetting.currentlyBoundPhoneNumble': '현재 귀속 핸드폰 번호',
'accountSetting.CurrentlyAuthenticatedMailbox': '현재 인증된 사서함',
'accountSetting.notBoundEmail': '너 아직 메일박스 연결 안 했어.',
'accountSetting.notSettingPsw': '결제 암호를 설정하지 않았습니다.',
'accountSetting.modify': '수정',
'accountSetting.setEmail': '사서함 설정',
'accountSetting.setPayPsw': '결제 암호 설정',
'accountSetting.resetPayPsw': '결제 암호 재설정',
'accountSetting.verifyOk': '검증 성공',
'accountSetting.submit': '커밋',
'accountSetting.phoneCodeVerify': '핸드폰 검사 코드 검증',
'accountSetting.emailVerify': '메일박스 확인',
'accountSetting.payPswVerify': '결제 암호 확인',
'accountSetting.inputPayPsw': '결제 비밀번호 입력',
'accountSetting.payPsw': '지불 비밀번호',
'accountSetting.setSixNumblePsw': '6자리 숫자의 비밀번호를 설정하세요',
'accountSetting.setNewPayPsw': '새 결제 암호 설정',
'accountSetting.back': '되돌아오다',
'accountSetting.modifyLoginPsw': '로그인 암호 수정',
'accountSetting.modifyEmail': '메일박스 수정',
'accountSetting.modifyPhone': '핸드폰 수정',
"accountSetting.French": '프랑스',
"accountSetting.mobileVerify": '휴대폰 인증',
"accountSetting.adviseChangePsw": '인터넷 계정에 도난 위험이 존재하므로 정기적으로 비밀번호를 변경하여 계정의 안전을 보호하는 것을 권장합니다',
"accountSetting.yourVerifyEmail": '인증된 메일박스:',
"accountSetting.yourVerifyPhone": '인증된 휴대폰:',
"accountSetting.ifLossTochange": '분실 또는 정지 시, 계정 도난 방지 즉시 교환',
"accountSetting.pswStartToUpdate": '결제 암호가 켜져 있으므로 정기적으로 새 결제 암호를 교체하여 보안을 강화하는 것이 좋습니다.',
'accountSetting.cardImage': '신분증 사진',
'accountSetting.cardMessage': '선명하고 완전한 컬러 원본 사진을 올려주시면 신분증 제반 정보가 보이고 필연입니다.',
'accountSetting.cardFace': '피규어',
'accountSetting.emblem': '국장면',
'accountSetting.cardInfo': '아이디 정보',
'accountSetting.name': '이름',
'accountSetting.cardNo': '식별 번호',
'accountSetting.cardLabel': '자동으로 사진 업로드',
'accountSetting.certified': '인증되지 않은',
'accountSetting.certified1': '재인증',
'accountSetting.certified2': '확인됨',
'accountSetting.certified3': '실명 회원만의 서비스를 누리고 개인 계정의 보안과 신용을 향상시키십시오.',
}
......@@ -37,7 +37,7 @@ import marketing from './zh-CN/marketing'
import responseCode from './zh-CN/responseCode'
export default {
'global.siteName': '瓴犀',
'global.siteName': '',
...common,
...menu,
...home,
......
......@@ -96,7 +96,7 @@ export default {
'common.error.diannaoweilianjie': '电脑未连接到网络',
'common.error.fanghuoqianghuosha': '防火墙或杀毒软件阻止',
'common.error.shuaxinyemianshi': '刷新页面试试',
'common.error.shushangyunfu': '数商云服务',
'common.error.shushangyunfu': '服务',
/** 其他 */
'common.money': '¥',
......
......@@ -239,11 +239,11 @@ export default {
'components.daoruwanchengqingdianjidao': '导入完成请点击导入完成',
'components.daorujiancha': '导入检查',
'components.shujudaoru': '数据导入',
'components.shangyeshuzihuayoulingxi': '商业数字化有瓴犀',
'components.shangyeshuzihuayoulingxi': '商业数字化',
'components.dianjixiazaishoujikehu': '点击下载手机客户端',
'components.dianjiyoushangjiaoxuanzeliu': '点击右上角选择浏览器打开',
'components.lingxishangchengAPP': '瓴犀商城APP',
'components.CopyRightguangzhoushishushangyun': 'Copy Right©广州市数商云网络科技有限公司 粤ICP备13044797号-5',
'components.lingxishangchengAPP': '商城APP',
'components.CopyRightguangzhoushishushangyun': '全链数字化解决方案',
'components.mianzhaishengming': '免责声明',
'components.fuwutiaokuan': '服务条款',
'components.lianxiwomen': '联系我们',
......
export default {
'accountSetting.twoPasswordsDifferent': '两次密码不一样',
'accountSetting.inputCorrentPhoneNumble': '请填写正确的手机号',
'accountSetting.unvalidEmail': '无效的邮箱',
'accountSetting.loginPsw': '登录密码',
'accountSetting.pswLength': '密码长度8-20个字符',
'accountSetting.pswNotEmptySymbol': '密码不能包含空格',
'accountSetting.pswDiverse': '密码必须包含大小写、小写字母和数字',
'accountSetting.confirmPsw': '确认密码',
'accountSetting.emailAddress': '邮箱地址',
'accountSetting.emailCode': '邮箱验证码',
'accountSetting.inputEmailCode': '请填写邮箱验证码',
'accountSetting.newPhoneNumble': '新的手机号码',
'accountSetting.inputPhoneNumble': '请填写手机号',
'accountSetting.code': '验证码',
'accountSetting.inputCode': '请填写验证码',
'accountSetting.getVerificationCode': '获取验证码',
'accountSetting.clickVerify': '点击进行验证',
'accountSetting.verifyError': '验证失败',
'accountSetting.verifyRightSlide': '向右滑动验证',
'accountSetting.currentlyBoundPhoneNumble': '当前绑定手机号码',
'accountSetting.CurrentlyAuthenticatedMailbox': '当前已认证邮箱',
'accountSetting.notBoundEmail': '你还没有绑定邮箱',
'accountSetting.notSettingPsw': '您未设置支付密码',
'accountSetting.modify': '修改',
'accountSetting.setEmail': '设置邮箱',
'accountSetting.setPayPsw': '设置支付密码',
'accountSetting.resetPayPsw': '重置支付密码',
'accountSetting.verifyOk': '验证成功',
'accountSetting.submit': '提交',
'accountSetting.phoneCodeVerify': '手机校验码验证',
'accountSetting.emailVerify': '邮箱验证',
'accountSetting.payPswVerify': '支付密码验证',
'accountSetting.inputPayPsw': '请填写支付密码',
'accountSetting.payPsw': '支付密码',
'accountSetting.setSixNumblePsw': '请设置6位数字的密码',
'accountSetting.setNewPayPsw': '设置新的支付密码',
'accountSetting.back': '返回',
'accountSetting.modifyLoginPsw': '修改登录密码',
'accountSetting.modifyEmail': '修改邮箱',
'accountSetting.modifyPhone': '修改手机',
"accountSetting.French": "法国",
"accountSetting.mobileVerify": "手机验证",
"accountSetting.adviseChangePsw": "互联网账号存在被盗风险,建议您定期更改密码以保护账号安全",
"accountSetting.yourVerifyEmail": "您验证的邮箱:",
"accountSetting.yourVerifyPhone": "您验证的手机:",
"accountSetting.ifLossTochange": "若丢失或已停用,请立刻更换,避免账号被盗",
"accountSetting.pswStartToUpdate": "您的支付密码已开启,建议您定期更换新的支付密码,提高安全性"
}
\ No newline at end of file
'accountSetting.twoPasswordsDifferent': '两次密码不一样',
'accountSetting.inputCorrentPhoneNumble': '请填写正确的手机号',
'accountSetting.unvalidEmail': '无效的邮箱',
'accountSetting.loginPsw': '登录密码',
'accountSetting.pswLength': '密码长度8-20个字符',
'accountSetting.pswNotEmptySymbol': '密码不能包含空格',
'accountSetting.pswDiverse': '密码必须包含大小写、小写字母和数字',
'accountSetting.confirmPsw': '确认密码',
'accountSetting.emailAddress': '邮箱地址',
'accountSetting.emailCode': '邮箱验证码',
'accountSetting.inputEmailCode': '请填写邮箱验证码',
'accountSetting.newPhoneNumble': '新的手机号码',
'accountSetting.inputPhoneNumble': '请填写手机号',
'accountSetting.code': '验证码',
'accountSetting.inputCode': '请填写验证码',
'accountSetting.getVerificationCode': '获取验证码',
'accountSetting.clickVerify': '点击进行验证',
'accountSetting.verifyError': '验证失败',
'accountSetting.verifyRightSlide': '向右滑动验证',
'accountSetting.currentlyBoundPhoneNumble': '当前绑定手机号码',
'accountSetting.CurrentlyAuthenticatedMailbox': '当前已认证邮箱',
'accountSetting.notBoundEmail': '你还没有绑定邮箱',
'accountSetting.notSettingPsw': '您未设置支付密码',
'accountSetting.modify': '修改',
'accountSetting.setEmail': '设置邮箱',
'accountSetting.setPayPsw': '设置支付密码',
'accountSetting.resetPayPsw': '重置支付密码',
'accountSetting.verifyOk': '验证成功',
'accountSetting.submit': '提交',
'accountSetting.phoneCodeVerify': '手机校验码验证',
'accountSetting.emailVerify': '邮箱验证',
'accountSetting.payPswVerify': '支付密码验证',
'accountSetting.inputPayPsw': '请填写支付密码',
'accountSetting.payPsw': '支付密码',
'accountSetting.setSixNumblePsw': '请设置6位数字的密码',
'accountSetting.setNewPayPsw': '设置新的支付密码',
'accountSetting.back': '返回',
'accountSetting.modifyLoginPsw': '修改登录密码',
'accountSetting.modifyEmail': '修改邮箱',
'accountSetting.modifyPhone': '修改手机',
"accountSetting.French": "法国",
"accountSetting.mobileVerify": "手机验证",
"accountSetting.adviseChangePsw": "互联网账号存在被盗风险,建议您定期更改密码以保护账号安全",
"accountSetting.yourVerifyEmail": "您验证的邮箱:",
"accountSetting.yourVerifyPhone": "您验证的手机:",
"accountSetting.ifLossTochange": "若丢失或已停用,请立刻更换,避免账号被盗",
"accountSetting.pswStartToUpdate": "您的支付密码已开启,建议您定期更换新的支付密码,提高安全性",
'accountSetting.cardImage': '身份证照片',
'accountSetting.cardMessage': '请上传清晰完整的彩色原件照片,身份证各项信息可见和是必然。',
'accountSetting.cardFace': '人像面',
'accountSetting.emblem': '国徽面',
'accountSetting.cardInfo': '身份证信息',
'accountSetting.name': '姓名',
'accountSetting.cardNo': '身份证号码',
'accountSetting.cardLabel': '上传照片自动获取',
'accountSetting.certified': '未认证',
'accountSetting.certified1': '重新认证',
'accountSetting.certified2': '实名认证',
'accountSetting.certified3': '享受实名会员专属服务,提升个人账户安全信用度',
}
......@@ -28,7 +28,7 @@ const NoFoundPage: React.FC<{}> = () => {
</div>
</Col>
<Col span={12}>
<img className={styles.image} src={Img} alt={intl.formatMessage({ id: 'common.error.shushangyunfu', defaultMessage: '数商云服务' })}/>
<img className={styles.image} src={Img} alt={intl.formatMessage({ id: 'common.error.shushangyunfu', defaultMessage: '服务' })}/>
</Col>
</Row>
</div>
......
......@@ -33,7 +33,7 @@ const NoFoundPage: React.FC<{}> = () => {
</div>
</Col>
<Col span={12}>
<img className={styles.image} src={Img} alt={intl.formatMessage({ id: 'common.error.shushangyunfu', defaultMessage: '数商云服务' })} />
<img className={styles.image} src={Img} alt={intl.formatMessage({ id: 'common.error.shushangyunfu', defaultMessage: '服务' })} />
</Col>
</Row>
</div>
......
......@@ -33,7 +33,7 @@ const InternetError: React.FC<{}> = () => {
</div>
</Col>
<Col span={12}>
<img className={styles.image} src={Img} alt={intl.formatMessage({ id: 'common.error.shushangyunfu', defaultMessage: '数商云服务' })} />
<img className={styles.image} src={Img} alt={intl.formatMessage({ id: 'common.error.shushangyunfu', defaultMessage: '服务' })} />
</Col>
</Row>
</div>
......
......@@ -6,26 +6,31 @@ import { ReactComponent as EmailIcon } from '@/assets/securityIcons/email.svg';
import { ReactComponent as TelephoneIcon } from '@/assets/securityIcons/telephone.svg';
import { ReactComponent as PasswordIcon } from '@/assets/securityIcons/password.svg';
import { ReactComponent as PaycodeIcon } from '@/assets/securityIcons/paycode.svg';
import { ReactComponent as Realname } from '@/assets/securityIcons/realname.svg';
import Icon from '@ant-design/icons';
import { getIntl, useIntl} from 'umi'
import { getIntl, useIntl } from 'umi'
const intl = getIntl();
const TITLE_NAP = {
'loginPwd': {
title: `${intl.formatMessage({ id: 'accountSetting.loginPsw'})}`,
title: `${intl.formatMessage({ id: 'accountSetting.loginPsw' })}`,
desc: `${intl.formatMessage({ id: 'accountSetting.adviseChangePsw' })}`
},
'email': {
title: `${intl.formatMessage({ id: 'accountSetting.emailVerify'})}`,
title: `${intl.formatMessage({ id: 'accountSetting.emailVerify' })}`,
desc: `${intl.formatMessage({ id: 'accountSetting.yourVerifyEmail' })}{{email}}`
},
'phone': {
title: `${intl.formatMessage({ id: 'accountSetting.mobileVerify'})}`,
title: `${intl.formatMessage({ id: 'accountSetting.mobileVerify' })}`,
desc: `${intl.formatMessage({ id: 'accountSetting.yourVerifyPhone' })}{{phone}},${intl.formatMessage({ id: 'accountSetting.ifLossTochange' })}`
} ,
},
'paycode': {
title: `${intl.formatMessage({ id: 'accountSetting.payPsw'})}`,
title: `${intl.formatMessage({ id: 'accountSetting.payPsw' })}`,
desc: `${intl.formatMessage({ id: 'accountSetting.pswStartToUpdate' })}`
},
'realname': {
title: intl.formatMessage({ id: 'accountSetting.certified2' }),
desc: intl.formatMessage({ id: 'accountSetting.certified3' })
}
}
......@@ -33,39 +38,42 @@ interface IProps {
email: string,
phone: string,
paycode: number, // 0 | 1
type: "loginPwd" | "email" | "phone" | "paycode"
isAuth: number, // 1 | 2
type: "loginPwd" | "email" | "phone" | "paycode" | "realname"
}
const Icons = {
"loginPwd": <Icon component={() => <EmailIcon /> } />,
"email": <Icon component={() => <PasswordIcon /> } />,
"phone": <Icon component={() => <TelephoneIcon /> } />,
"paycode": <Icon component={() => <PaycodeIcon /> } />,
"loginPwd": <Icon component={() => <EmailIcon />} />,
"email": <Icon component={() => <PasswordIcon />} />,
"phone": <Icon component={() => <TelephoneIcon />} />,
"paycode": <Icon component={() => <PaycodeIcon />} />,
"realname": <Icon component={() => <Realname />} />,
}
const TypeVerify: React.FC<IProps> = (props) => {
const intl = useIntl();
const { type, email, phone, paycode } = props;
const { type, email, phone, paycode, isAuth } = props;
const titleRender = () => {
return TITLE_NAP[type].title
}
const descRender = () => {
if(type == 'email' && email == '') {
if (type == 'email' && email == '') {
return intl.formatMessage({ id: 'accountSetting.notBoundEmail' })
} else if(type == 'paycode' && paycode == 0) {
} else if (type == 'paycode' && paycode == 0) {
return intl.formatMessage({ id: 'accountSetting.notSettingPsw' })
}
return TITLE_NAP[type].desc.replace(/\{\{(.*?)\}\}/, (match, key) => { return props[key] });
return TITLE_NAP[type].desc.replace(/\{\{(.*?)\}\}/, (match, key) => { return props[key] });
}
const renderLink = () => {
let title = intl.formatMessage({ id: 'accountSetting.modify' });
if(type == 'email' && email == '') {
if (type == 'email' && email == '') {
title = intl.formatMessage({ id: 'accountSetting.setEmail' })
} else if(type == 'paycode') {
} else if (type == 'paycode') {
title = paycode == 0 ? intl.formatMessage({ id: 'accountSetting.setPayPsw' }) : intl.formatMessage({ id: 'accountSetting.resetPayPsw' })
} else if (type == 'realname') {
title = isAuth == 1 ? intl.formatMessage({ id: 'accountSetting.certified' }) : intl.formatMessage({ id: 'accountSetting.certified1' })
}
return <Link to={`/memberCenter/systemSetting/accountSetting/${type}`}>{title}</Link>
}
......
......@@ -6,4 +6,72 @@
.item {
margin: 0 24px 24px 0;
}
}
\ No newline at end of file
}
.r_title {
font-size: 14px;
color: #252D37;
font-weight: 500;
padding-bottom: 6px;
line-height: 16px;
}
.r_text {
color: #91959B;
font-size: 12px;
font-weight: 400;
line-height: 16px;
}
.r_body {
margin-top: 16px;
display: flex;
align-items: center;
}
.r_cardFile {
width: 156px;
display: flex;
flex-direction: column;
margin-right: 16px;
}
.r_fileLayout {
width: 100%;
height: 96px;
overflow: hidden;
background-color: #F5F6F7;
border-radius: 4px;
}
.r_imageBox {
width: 100%;
height: 100%;
position: relative;
}
.r_clear {
position: absolute;
top: 5px;
right: 5px;
z-index: 999;
}
.r_clearicon {
font-size: 24px;
}
.r_fileText {
font-size: 12px;
text-align: center;
color: #91959B;
line-height: 16px;
padding: 4px 0px
}
.r_item {
display: flex;
margin-top: 16px;
align-items: center;
}
.r_lable {
width: 144px;
color: #91959B;
}
.r_value {
width: 600px;
padding: 8px;
border-radius: 4px;
color: #C8CACD;
background-color: #F5F6F7;
}
......@@ -18,7 +18,7 @@ const AccountSetting = () => {
}
init()
}, [])
const TYPES = ['loginPwd', 'email', 'phone', 'paycode']
const TYPES = ['loginPwd', 'email', 'phone', 'paycode', 'realname']
return (
<PageHeaderWrapper>
<div >
......@@ -32,6 +32,7 @@ const AccountSetting = () => {
phone={account.phone}
email={account.email}
paycode={account.hasPayPassword}
isAuth={account.isAuth}
/>
</Col>
)
......
import React, { useEffect, useState } from 'react';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import ReutrnEle from '@/components/ReturnEle';
import { useIntl, history } from 'umi';
import { Button, Card, Image, message, Upload } from 'antd';
import styles from './index.less'
import data from '@/pages/transaction/common/uploadProps';
import card_ortho from '@/assets/imgs/card_ortho.png'
import card_inverse from '@/assets/imgs/card_inverse.png'
import { postMemberSecuritySaveAuthInfo, getMemberSecurityGetUserInfo, postMemberSecurityUploadIdCard } from '@/services/MemberV2Api';
import { CloseSquareFilled } from '@ant-design/icons';
type InfoProps = {
/** 身份证正面(人头像) */
frontUrl?: string,
/** 身份证反面(国徽像) */
backUrl?: string,
/** 姓名 */
name?: string,
/** 身份证号码 */
cardNo?: string
}
const RealnameLayout = () => {
const intl = useIntl();
const [info, setInfo] = useState<InfoProps>()
const [term, setTerm] = useState<boolean>(false);
const [loading, setLoading] = useState<boolean>(false);
const [disabled, setDisabled] = useState<boolean>(true);
/** 人像面 */
const handleFrontUrl = ({ file }) => {
if (file.status !== "done") {
return
}
const front = file.response.data;
const data = {
...info,
frontUrl: front,
backUrl: info?.backUrl,
}
setTerm(true)
setInfo(data);
}
/** 人像面 */
const handleBackUrl = ({ file }) => {
if (file.status !== "done") {
return
}
const back = file.response.data;
const data = {
...info,
backUrl: back,
}
setTerm(true)
setInfo(data);
}
useEffect(() => {
if (info?.frontUrl && info?.backUrl && term) {
postMemberSecurityUploadIdCard({ frontUrl: info?.frontUrl, backUrl: info?.backUrl }).then((res) => {
if (res.code !== 1000) {
message.error(res.message)
return
}
const data = {
...res.data,
frontUrl: info?.frontUrl,
backUrl: info?.backUrl,
}
setInfo(data);
})
}
}, [info?.frontUrl, info?.backUrl, term])
useEffect(() => {
getMemberSecurityGetUserInfo().then((res: any) => {
if (res.code !== 1000) {
message.error(res.message)
return
}
const { data } = res
setInfo(data)
})
}, [])
const handleSubmit = () => {
setLoading(true)
postMemberSecuritySaveAuthInfo({ ...info } as any).then((res: any) => {
if (res.code !== 1000) {
message.error(res.message)
setLoading(false)
return
}
history.goBack()
})
}
useEffect(() => {
if (info?.frontUrl && info?.backUrl && info?.cardNo && info?.name) {
setDisabled(false)
} else {
setDisabled(true)
}
}, [info?.frontUrl, info?.backUrl, info?.cardNo, info?.name])
const handleCircle = (name: string) => {
let data: InfoProps = {}
switch (name) {
case 'frontUrl':
data = {
frontUrl: '',
name: '',
cardNo: '',
backUrl: info?.backUrl,
}
setInfo(data)
break;
case 'backUrl':
data = {
frontUrl: info?.frontUrl,
name: '',
cardNo: '',
backUrl: ''
}
setInfo(data)
break;
}
}
return (
<PageHeaderWrapper
onBack={() => history.goBack()}
backIcon={<ReutrnEle description={intl.formatMessage({ id: 'accountSetting.back' })} />}
extra={<Button loading={loading} disabled={disabled} type='primary' onClick={handleSubmit}>{intl.formatMessage({ id: 'accountSetting.submit' })}</Button>}
>
<Card style={{ marginBottom: '16px' }}>
<div className={styles.r_title}>{intl.formatMessage({ id: 'accountSetting.cardImage' })}</div>
<div className={styles.r_text}>{intl.formatMessage({ id: 'accountSetting.cardMessage' })}</div>
<div className={styles.r_body}>
<div className={styles.r_cardFile}>
<div className={styles.r_fileLayout}>
{info?.frontUrl ? (
<div className={styles.r_imageBox}>
<div className={styles.r_clear} onClick={() => handleCircle('frontUrl')}>
<CloseSquareFilled className={styles.r_clearicon} />
</div>
<Image width='100%' height='100%' src={info?.frontUrl} />
</div>
) : (
<div className={styles.r_imageBox}>
<Upload
{...data}
showUploadList={false}
accept=".png,.jpg"
onChange={handleFrontUrl}
>
<Image height='100%' preview={false} src={card_ortho} />
</Upload>
</div>
)}
</div>
<div className={styles.r_fileText}>{intl.formatMessage({ id: 'accountSetting.cardFace' })}</div>
</div>
<div className={styles.r_cardFile}>
<div className={styles.r_fileLayout}>
{info?.backUrl ? (
<div className={styles.r_imageBox}>
<div className={styles.r_clear} onClick={() => handleCircle('backUrl')}>
<CloseSquareFilled className={styles.r_clearicon} />
</div>
<Image width='100%' height='100%' src={info?.backUrl} />
</div>
) : (
<div className={styles.r_imageBox}>
<Upload
{...data}
showUploadList={false}
accept=".png,.jpg"
onChange={handleBackUrl}
>
<Image height='100%' preview={false} src={card_inverse} />
</Upload>
</div>
)}
</div>
<div className={styles.r_fileText}>{intl.formatMessage({ id: 'accountSetting.emblem' })}</div>
</div>
</div>
</Card>
<Card style={{ marginBottom: '16px' }}>
<div className={styles.r_title}>{intl.formatMessage({ id: 'accountSetting.cardInfo' })}</div>
<div className={styles.r_item}>
<div className={styles.r_lable}>{intl.formatMessage({ id: 'accountSetting.name' })}</div>
<div className={styles.r_value}>{info?.name || intl.formatMessage({ id: 'accountSetting.cardLabel' })}</div>
</div>
<div className={styles.r_item}>
<div className={styles.r_lable}>{intl.formatMessage({ id: 'accountSetting.cardNo' })}</div>
<div className={styles.r_value}>{info?.cardNo || intl.formatMessage({ id: 'accountSetting.cardLabel' })}</div>
</div>
</Card>
</PageHeaderWrapper>
)
}
export default RealnameLayout
......@@ -54,11 +54,6 @@ const TabFormErrors = props => {
);
};
const fetchMenuData = async () => {
const res = await getMemberRoleAuthTree();
return { data: res.data.menus };
};
const TabsItem = Tabs.TabPane;
const menuActions = createFormActions();
......@@ -109,6 +104,14 @@ const MemberDetail: React.FC<{}> = () => {
} = useTreeTabs({
fetchMenuData: fetchOrgsTreeData,
});
const fetchMenuData = useCallback(async (roleId: number) => {
const res = await getMemberRoleAuthTree({
memberRoleId: roleId
});
return { data: res.data.menus };
}, []);
const { treeData, handleSelect } = useTreeData({
fetchMenuData,
fetchItemDetailData: ({ id }) =>
......
......@@ -3,7 +3,7 @@
* @Date: 2021-01-28 10:32:29
* @LastEditTime: 2021-03-01 11:39:28
* @LastEditors: Please set LastEditors
* @Description: 瓴犀装修组件配置集合
* @Description: 装修组件配置集合
* @FilePath: /lingxi-business-paltform/src/pages/editor/configs/componentConfigs/LingXiUI/index.ts
*/
import TopBar from './TopBar'
......
......@@ -13,7 +13,7 @@ const TopBar = () => {
<div className={styles.topBar}>
<div className={styles['topBar-content']}>
<div>
<div>瓴犀企业商城</div>
<div>企业商城</div>
</div>
<div className={styles.right}>
<div className={styles.toLogin}>你好,请登录</div>
......
......@@ -256,7 +256,7 @@ const UserRegistry = () => {
<title>{intl.formatMessage({id: 'user.yonghuzhuce'})}</title>
</Helmet>
<div className={cx('register', globalStyles.lingxiBusinessContent1024)}>
{/* <h3>欢迎您注册数商云账号</h3> */}
{/* <h3>欢迎您注册账号</h3> */}
<div className={cx('registerBox', globalStyles.lingxiBusinessMarginContent)}>
<Steps current={current} className={'stepWrap'} size='small'>
{stepList.map(v => <Steps.Step title={v.title} key={v.key}></Steps.Step>)}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment