Commit 917e826b authored by Bill's avatar Bill

fix: 加工物流单, 修改密码页自适应,

parent ae6e3738
import { LogoutOutlined, SettingOutlined, UserOutlined } from '@ant-design/icons'; import { LogoutOutlined, LockOutlined } from '@ant-design/icons';
import { Avatar, Menu, Spin } from 'antd'; import { Avatar, Menu, Spin } from 'antd';
import React from 'react'; import React from 'react';
import { history } from 'umi'; import { history, Link } from 'umi';
import PersonDropdown from './PersonDropdown' import PersonDropdown from './PersonDropdown'
import styles from '../styles/RightContent.less'; import styles from '../styles/RightContent.less';
import { removeAuth, removeRouters, getAuth } from '@/utils/auth'; import { removeAuth, removeRouters, getAuth } from '@/utils/auth';
...@@ -30,6 +30,9 @@ const AvatarDropdown = () => { ...@@ -30,6 +30,9 @@ const AvatarDropdown = () => {
个人设置 个人设置
</Menu.Item> </Menu.Item>
<Menu.Divider /> */} <Menu.Divider /> */}
<Menu.Item>
<Link to="/memberCenter/systemSetting/accountSetting"><LockOutlined />修改密码</Link>
</Menu.Item>
<Menu.Item onClick={logout} key="logout"> <Menu.Item onClick={logout} key="logout">
<LogoutOutlined /> <LogoutOutlined />
退出登录 退出登录
...@@ -47,4 +50,4 @@ const AvatarDropdown = () => { ...@@ -47,4 +50,4 @@ const AvatarDropdown = () => {
) )
} }
export default AvatarDropdown export default AvatarDropdown
\ No newline at end of file
...@@ -30,7 +30,6 @@ const GlobalHeaderRight: React.FC<{}> = (props) => { ...@@ -30,7 +30,6 @@ const GlobalHeaderRight: React.FC<{}> = (props) => {
const ws = useRef<WebSocket | null>(null); const ws = useRef<WebSocket | null>(null);
const webSocketInit = useCallback(() => { const webSocketInit = useCallback(() => {
console.log(ws.current)
if (SOCKET_URL && (!ws.current || ws.current.readyState === 3) && userInfo) { if (SOCKET_URL && (!ws.current || ws.current.readyState === 3) && userInfo) {
const url = `${SOCKET_URL}/report/websocket?memberId=${userInfo.memberId}&roleId=${userInfo.memberRoleId}&token=${userInfo.token}&source=${1}`; const url = `${SOCKET_URL}/report/websocket?memberId=${userInfo.memberId}&roleId=${userInfo.memberRoleId}&token=${userInfo.token}&source=${1}`;
ws.current = new WebSocket(url); ws.current = new WebSocket(url);
...@@ -39,8 +38,9 @@ const GlobalHeaderRight: React.FC<{}> = (props) => { ...@@ -39,8 +38,9 @@ const GlobalHeaderRight: React.FC<{}> = (props) => {
} }
ws.current.onmessage = (e) => { ws.current.onmessage = (e) => {
console.log(e) console.log(e)
if(e.data.type === NOT_READ_MESSAGE) { const data = JSON.parse(e.data);
setMessage(e.data.data); if(data.type === NOT_READ_MESSAGE) {
setMessage(data.data);
} }
}; };
ws.current.onclose = (e) => { ws.current.onclose = (e) => {
......
import React, { useState, useEffect, useCallback } from 'react'; import React, { useState, useEffect, useCallback } from 'react';
// import { SchemaForm } from '@formily/antd'; // import { SchemaForm } from '@formily/antd';
import { Form, Input, Row, Col, Button, Select, message, AutoComplete } from 'antd'; import { Form, Input, Row, Col, Button, Select, message, AutoComplete } from 'antd';
import styles from './index.less'; import styles from './index.less';
import { StepForwardOutlined, CheckCircleOutlined, CloseCircleOutlined } from '@ant-design/icons'; import { StepForwardOutlined, CheckCircleOutlined, CloseCircleOutlined } from '@ant-design/icons';
...@@ -7,7 +7,6 @@ import GetCaptchaCode from '../GetCaptchaCode'; ...@@ -7,7 +7,6 @@ import GetCaptchaCode from '../GetCaptchaCode';
import classNames from 'classnames' import classNames from 'classnames'
import { PublicApi } from '@/services/api'; import { PublicApi } from '@/services/api';
import phoneRegExp from './utils'; import phoneRegExp from './utils';
import options from '@/pages/editor/settingsPanel/propsSettings/Animate/config';
const Option = Select.Option; const Option = Select.Option;
const EditDataComponent = (props) => { const EditDataComponent = (props) => {
...@@ -19,7 +18,7 @@ const EditDataComponent = (props) => { ...@@ -19,7 +18,7 @@ const EditDataComponent = (props) => {
const passwordValidator = async (rule, value) => { const passwordValidator = async (rule, value) => {
let temp = {} let temp = {}
let length = value && value.length >= 8 && value.length <= 20; let length = value && value.length >= 8 && value.length <= 20;
let trim = !(/\s\S+|^\s\S+|\s$/.test(value)) // let trim = !(/\s\S+|^\s\S+|\s$/.test(value)) //
let compact = /^(?=.*[0-9].*)(?=.*[A-Z].*)(?=.*[a-z].*)/.test(value); // 必须含有大小写和数字 let compact = /^(?=.*[0-9].*)(?=.*[A-Z].*)(?=.*[a-z].*)/.test(value); // 必须含有大小写和数字
temp['length'] = length temp['length'] = length
temp['trim'] = trim temp['trim'] = trim
...@@ -48,7 +47,7 @@ const EditDataComponent = (props) => { ...@@ -48,7 +47,7 @@ const EditDataComponent = (props) => {
throw new Error("请填写正确的手机号") throw new Error("请填写正确的手机号")
} }
setCanSandCode(true); setCanSandCode(true);
} }
// 邮箱验证 // 邮箱验证
const emailValidator = async (rule, value) => { const emailValidator = async (rule, value) => {
...@@ -69,7 +68,7 @@ const EditDataComponent = (props) => { ...@@ -69,7 +68,7 @@ const EditDataComponent = (props) => {
} }
getAllCountryCode(); getAllCountryCode();
} }
}, []) }, [])
// 获取新手机手机验证码 // 获取新手机手机验证码
const getCode = () => { const getCode = () => {
...@@ -82,7 +81,7 @@ const EditDataComponent = (props) => { ...@@ -82,7 +81,7 @@ const EditDataComponent = (props) => {
const service = SERVICE_CHECK[type]; const service = SERVICE_CHECK[type];
const postData = ( const postData = (
props.type == 'phone' props.type == 'phone'
? { ? {
countryCode: form.getFieldValue('country'), countryCode: form.getFieldValue('country'),
phone: form.getFieldValue('newPhone') phone: form.getFieldValue('newPhone')
} }
...@@ -126,7 +125,7 @@ const EditDataComponent = (props) => { ...@@ -126,7 +125,7 @@ const EditDataComponent = (props) => {
[styles.success]: pwdStatus.length, [styles.success]: pwdStatus.length,
})}>{pwdStatus.length ? <CheckCircleOutlined /> : <CloseCircleOutlined/>}</span> })}>{pwdStatus.length ? <CheckCircleOutlined /> : <CloseCircleOutlined/>}</span>
密码长度8-20个字符</p> 密码长度8-20个字符</p>
<p className={styles.trim}> <p className={styles.trim}>
<span className={classNames({ <span className={classNames({
[styles.icon]: !pwdStatus.trim, [styles.icon]: !pwdStatus.trim,
[styles.success]: pwdStatus.trim, [styles.success]: pwdStatus.trim,
...@@ -135,13 +134,13 @@ const EditDataComponent = (props) => { ...@@ -135,13 +134,13 @@ const EditDataComponent = (props) => {
</span> </span>
密码不能包含空格 密码不能包含空格
</p> </p>
<p className={styles.compact}> <p className={styles.compact}>
<span className={classNames({ <span className={classNames({
[styles.icon]: !pwdStatus.compact, [styles.icon]: !pwdStatus.compact,
[styles.success]: pwdStatus.compact, [styles.success]: pwdStatus.compact,
})}> })}>
{pwdStatus.compact ? <CheckCircleOutlined /> : <CloseCircleOutlined/>} {pwdStatus.compact ? <CheckCircleOutlined /> : <CloseCircleOutlined/>}
</span> </span>
密码必须包含大小写、小写字母和数字 密码必须包含大小写、小写字母和数字
</p> </p>
</div> </div>
...@@ -223,7 +222,7 @@ const EditDataComponent = (props) => { ...@@ -223,7 +222,7 @@ const EditDataComponent = (props) => {
} }
</Select> </Select>
</Form.Item> </Form.Item>
</Col> </Col>
<Col span={14}> <Col span={14}>
<Form.Item <Form.Item
...@@ -236,7 +235,7 @@ const EditDataComponent = (props) => { ...@@ -236,7 +235,7 @@ const EditDataComponent = (props) => {
<Input disabled={!inputCanEdit}/> <Input disabled={!inputCanEdit}/>
</Form.Item> </Form.Item>
</Col> </Col>
</Row> </Row>
</Form.Item> </Form.Item>
<Form.Item label="验证码"> <Form.Item label="验证码">
...@@ -263,4 +262,4 @@ const EditDataComponent = (props) => { ...@@ -263,4 +262,4 @@ const EditDataComponent = (props) => {
) )
} }
export default EditDataComponent export default EditDataComponent
\ No newline at end of file
...@@ -5,12 +5,14 @@ ...@@ -5,12 +5,14 @@
align-items: center; align-items: center;
background-color: #fff; background-color: #fff;
padding: 36px 24px; padding: 36px 24px;
width: 610px;
height: 156px; height: 156px;
width: 100%;
overflow: hidden;
.infos { .infos {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
align-items: center;
.image { .image {
margin-right: 22px; margin-right: 22px;
...@@ -27,7 +29,7 @@ ...@@ -27,7 +29,7 @@
line-height: 24px; line-height: 24px;
margin-bottom: 16px; margin-bottom: 16px;
} }
.tips { .tips {
font-size: 13px; font-size: 13px;
font-family: PingFangSC-Regular, PingFang SC; font-family: PingFangSC-Regular, PingFang SC;
...@@ -35,14 +37,14 @@ ...@@ -35,14 +37,14 @@
color: #42526E; color: #42526E;
line-height: 22px; line-height: 22px;
margin-bottom: 0; margin-bottom: 0;
} }
} }
} }
.controls { .controls {
width: 90px; width: 90px;
text-align: right; text-align: right;
// cursor: pointer; // cursor: pointer;
} }
} }
\ No newline at end of file
import React, { useState, useCallback } from 'react'; import React, { useState, useCallback } from 'react';
// import { SchemaForm } from '@formily/antd'; // import { SchemaForm } from '@formily/antd';
import { Form, Input, Button, Row, Col, message } from 'antd'; import { Form, Input, Button, Row, Col, message } from 'antd';
import SafeVerification from '../../SafeVerification'; import SafeVerification from '../../SafeVerification';
import TypeForHeader from '../../TypeForHeader'; import TypeForHeader from '../../TypeForHeader';
...@@ -129,7 +129,7 @@ const EmailVerifyPanel = (props) => { ...@@ -129,7 +129,7 @@ const EmailVerifyPanel = (props) => {
} }
{ {
visible visible
? <> ? <>
<EditDataComponent type={pageType} form={form}/> <EditDataComponent type={pageType} form={form}/>
<Form.Item {...tailLayout}> <Form.Item {...tailLayout}>
<Button type="primary" htmlType="submit"> <Button type="primary" htmlType="submit">
...@@ -144,4 +144,4 @@ const EmailVerifyPanel = (props) => { ...@@ -144,4 +144,4 @@ const EmailVerifyPanel = (props) => {
) )
} }
export default EmailVerifyPanel; export default EmailVerifyPanel;
\ No newline at end of file
import React, {useState} from 'react'; import React, {useState} from 'react';
// import { SchemaForm } from '@formily/antd'; // import { SchemaForm } from '@formily/antd';
import { Form, Input, Button, Row, Col, message } from 'antd'; import { Form, Input, Button, Row, Col, message } from 'antd';
import SafeVerification from '../../SafeVerification'; import SafeVerification from '../../SafeVerification';
import EditDataComponent from '../../EditDataComponent'; import EditDataComponent from '../../EditDataComponent';
...@@ -7,6 +7,7 @@ import { PublicApi } from '@/services/api'; ...@@ -7,6 +7,7 @@ import { PublicApi } from '@/services/api';
import { history } from 'umi' import { history } from 'umi'
import { encryptedByAES } from '@/utils/cryptoAes' import { encryptedByAES } from '@/utils/cryptoAes'
const layout = { const layout = {
labelCol: { span: 3 }, labelCol: { span: 3 },
wrapperCol: { span: 13 }, wrapperCol: { span: 13 },
...@@ -18,7 +19,7 @@ const tailLayout = { ...@@ -18,7 +19,7 @@ const tailLayout = {
interface IProps { interface IProps {
// 当前页面是属于 修改密码还是修改邮箱,还是修改手机 // 当前页面是属于 修改密码还是修改邮箱,还是修改手机
pageType: string, pageType: string,
} }
const PaycodeVerifyPanel: React.FC<IProps> = (props) => { const PaycodeVerifyPanel: React.FC<IProps> = (props) => {
...@@ -85,7 +86,7 @@ const PaycodeVerifyPanel: React.FC<IProps> = (props) => { ...@@ -85,7 +86,7 @@ const PaycodeVerifyPanel: React.FC<IProps> = (props) => {
form={form} form={form}
onFinish={handleFinish} onFinish={handleFinish}
> >
{ {
!visible !visible
? <> ? <>
...@@ -110,7 +111,7 @@ const PaycodeVerifyPanel: React.FC<IProps> = (props) => { ...@@ -110,7 +111,7 @@ const PaycodeVerifyPanel: React.FC<IProps> = (props) => {
} }
{ {
visible visible
? <> ? <>
<EditDataComponent type={pageType} form={form} /> <EditDataComponent type={pageType} form={form} />
<Form.Item {...tailLayout}> <Form.Item {...tailLayout}>
<Button type="primary" htmlType="submit"> <Button type="primary" htmlType="submit">
...@@ -126,4 +127,4 @@ const PaycodeVerifyPanel: React.FC<IProps> = (props) => { ...@@ -126,4 +127,4 @@ const PaycodeVerifyPanel: React.FC<IProps> = (props) => {
) )
} }
export default PaycodeVerifyPanel; export default PaycodeVerifyPanel;
\ No newline at end of file
import React, { useCallback, useState } from 'react'; import React, { useCallback, useState } from 'react';
// import { SchemaForm } from '@formily/antd'; // import { SchemaForm } from '@formily/antd';
import { Form, Input, Button, Row, Col, message } from 'antd'; import { Form, Input, Button, Row, Col, message } from 'antd';
import SafeVerification from '../../SafeVerification'; import SafeVerification from '../../SafeVerification';
import TypeForHeader from '../../TypeForHeader'; import TypeForHeader from '../../TypeForHeader';
...@@ -21,7 +21,7 @@ const tailLayout = { ...@@ -21,7 +21,7 @@ const tailLayout = {
interface IProps { interface IProps {
phone: string, phone: string,
// 当前页面是属于 修改密码还是修改邮箱,还是修改手机 // 当前页面是属于 修改密码还是修改邮箱,还是修改手机
pageType: string, pageType: string,
} }
const PhoneVerifyPanel: React.FC<IProps> = (props) => { const PhoneVerifyPanel: React.FC<IProps> = (props) => {
...@@ -129,11 +129,9 @@ const PhoneVerifyPanel: React.FC<IProps> = (props) => { ...@@ -129,11 +129,9 @@ const PhoneVerifyPanel: React.FC<IProps> = (props) => {
</> </>
: null : null
} }
{ {
visible visible
? <> ? <>
<EditDataComponent type={pageType} form={form} /> <EditDataComponent type={pageType} form={form} />
<Form.Item {...tailLayout}> <Form.Item {...tailLayout}>
<Button type="primary" htmlType="submit"> <Button type="primary" htmlType="submit">
...@@ -143,10 +141,10 @@ const PhoneVerifyPanel: React.FC<IProps> = (props) => { ...@@ -143,10 +141,10 @@ const PhoneVerifyPanel: React.FC<IProps> = (props) => {
</> </>
: null : null
} }
</Form> </Form>
</div> </div>
) )
} }
export default PhoneVerifyPanel; export default PhoneVerifyPanel;
\ No newline at end of file
...@@ -5,7 +5,7 @@ import GetCaptchaCode from '../../GetCaptchaCode'; ...@@ -5,7 +5,7 @@ import GetCaptchaCode from '../../GetCaptchaCode';
import SafeVerification from '../../SafeVerification'; import SafeVerification from '../../SafeVerification';
import TypeForHeader from '../../TypeForHeader'; import TypeForHeader from '../../TypeForHeader';
import { history } from 'umi' import { history } from 'umi'
import { encryptedByAES } from '@/utils/cryptoAes'
const layout = { const layout = {
labelCol: { span: 3 }, labelCol: { span: 3 },
wrapperCol: { span: 13 }, wrapperCol: { span: 13 },
...@@ -18,7 +18,7 @@ const tailLayout = { ...@@ -18,7 +18,7 @@ const tailLayout = {
interface IProps { interface IProps {
phone: string, phone: string,
// 当前页面是属于 修改密码还是修改邮箱,还是修改手机 // 当前页面是属于 修改密码还是修改邮箱,还是修改手机
pageType: string, pageType: string,
} }
const ResetPayCode: React.FC<IProps> = (props) => { const ResetPayCode: React.FC<IProps> = (props) => {
...@@ -27,7 +27,7 @@ const ResetPayCode: React.FC<IProps> = (props) => { ...@@ -27,7 +27,7 @@ const ResetPayCode: React.FC<IProps> = (props) => {
const { phone, pageType } = props; const { phone, pageType } = props;
const onFinish = (values) => { const onFinish = (values) => {
const postData = { const postData = {
payPassword: values.password payPassword: encryptedByAES(values.password)
} }
// /member/security/pay/update // /member/security/pay/update
const service = PublicApi.postMemberSecurityPayUpdate; const service = PublicApi.postMemberSecurityPayUpdate;
...@@ -158,7 +158,7 @@ const ResetPayCode: React.FC<IProps> = (props) => { ...@@ -158,7 +158,7 @@ const ResetPayCode: React.FC<IProps> = (props) => {
} }
{ {
visible visible
? <> ? <>
{ {
renderPwd() renderPwd()
} }
...@@ -170,10 +170,10 @@ const ResetPayCode: React.FC<IProps> = (props) => { ...@@ -170,10 +170,10 @@ const ResetPayCode: React.FC<IProps> = (props) => {
</> </>
: null : null
} }
</Form> </Form>
</div> </div>
) )
} }
export default ResetPayCode export default ResetPayCode
\ No newline at end of file
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState } from 'react';
import { Card } from 'antd'; import { Row, Col } from 'antd';
import { PageHeaderWrapper } from '@ant-design/pro-layout'; import { PageHeaderWrapper } from '@ant-design/pro-layout';
import TypeVerify from './components/TypeVerify'; import TypeVerify from './components/TypeVerify';
import styles from './index.less';
import { PublicApi } from '@/services/api'; import { PublicApi } from '@/services/api';
const getData = async () => { const getData = async () => {
...@@ -22,26 +21,27 @@ const AccountSetting = () => { ...@@ -22,26 +21,27 @@ const AccountSetting = () => {
const TYPES = ['loginPwd', 'email', 'phone', 'paycode'] const TYPES = ['loginPwd', 'email', 'phone', 'paycode']
return ( return (
<PageHeaderWrapper> <PageHeaderWrapper>
<div className={styles.page}> <div >
<Row gutter={[24,24]}>
{ {
TYPES.map((item) => { TYPES.map((item) => {
return ( return (
<div className={styles.item} key={item}> <Col xxl={12} xl={12} lg={24} md={24} sm={24} xs={24} key={item}>
<TypeVerify <TypeVerify
type={item} type={item}
phone={account.phone} phone={account.phone}
email={account.email} email={account.email}
paycode={account.hasPayPassword} paycode={account.hasPayPassword}
/> />
</div> </Col>
) )
}) })
} }
</Row>
</div> </div>
</PageHeaderWrapper> </PageHeaderWrapper>
) )
} }
export default AccountSetting; export default AccountSetting;
\ No newline at end of file
...@@ -60,7 +60,7 @@ enum OuterAndInnerStatus { ...@@ -60,7 +60,7 @@ enum OuterAndInnerStatus {
/** /**
* 待确认物流单 * 待确认物流单
*/ */
pending_confirm_logistics = '待确认物流单', pending_confirm_logistics = '4_17',
/** /**
* 待确认发货 * 待确认发货
*/ */
...@@ -174,8 +174,8 @@ const processStock: React.FC<{}> = () => { ...@@ -174,8 +174,8 @@ const processStock: React.FC<{}> = () => {
<a onClick={() => handleVisible(record.id)}>审核</a> <a onClick={() => handleVisible(record.id)}>审核</a>
</Popconfirm> </Popconfirm>
), ),
[OuterAndInnerStatus.pending_add_logistics]: <Link to={`${ADD_LOGISTICS_PATH}`}>新增</Link>, [OuterAndInnerStatus.pending_add_logistics]: <Link to={`${ADD_LOGISTICS_PATH}?createType=3&shipmentOrderId=${record.deliveryId}&shipmentOrderCode=${record.deliveryNo}&relevanceOrderId=${record.id}`}>新增物流单</Link>,
[OuterAndInnerStatus.pending_confirm_logistics]: <a>查看</a>, [OuterAndInnerStatus.pending_confirm_logistics]: <Link to={`${ADD_LOGISTICS_PATH}?createType=3&shipmentOrderId=${record.deliveryId}&shipmentOrderCode=${record.deliveryNo}&relevanceOrderId=${record.id}&isPreview=1`}>查看物流单</Link>,
[OuterAndInnerStatus.pending_confirm_deliver]: <Link to={`${PENDING_DELIVERD_PATH}/detail?id=${record.id}`}>发货</Link>, [OuterAndInnerStatus.pending_confirm_deliver]: <Link to={`${PENDING_DELIVERD_PATH}/detail?id=${record.id}`}>发货</Link>,
[OuterAndInnerStatus.pending_add_process_in_warehouse]: ( [OuterAndInnerStatus.pending_add_process_in_warehouse]: (
<Link <Link
...@@ -201,7 +201,7 @@ const processStock: React.FC<{}> = () => { ...@@ -201,7 +201,7 @@ const processStock: React.FC<{}> = () => {
[OuterAndInnerStatus.pending_confirm_receive]: <Link to={`${ASSIGN_PENDING_RECEIVE}/detail?id=${record.id}`}>收货</Link>, [OuterAndInnerStatus.pending_confirm_receive]: <Link to={`${ASSIGN_PENDING_RECEIVE}/detail?id=${record.id}`}>收货</Link>,
[OuterAndInnerStatus.pending_confirm_receipt]: <Link to={`${PENDING_RECEIPT_PATH}/detail?id=${record.id}`}>确认回单</Link> [OuterAndInnerStatus.pending_confirm_receipt]: <Link to={`${PENDING_RECEIPT_PATH}/detail?id=${record.id}`}>确认回单</Link>
} }
return MAP[`${outerStatus}_${innerStatus}`] || MAP[record.innerStatusName] return MAP[`${outerStatus}_${innerStatus}`]
} }
} }
] ]
......
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