feat: 顾问邮箱加上 mat_sn;图文集使用 Drawer 展示;

2.0/email-builder
Jimmy Liow 11 months ago
parent bb96b04cd7
commit 55c9a18699

@ -32,4 +32,4 @@ npm version patch --no-git-tag-version
## 本机测试账号
GLOBAL_SALES_LOGIN_USER
{"userId":"383","userIdStr":"383,609","emailList":[{"opi_sn":383,"email":"lyj@asiahighlights.com","default":false,"backup":false},{"opi_sn":383,"email":"lyj@chinahighlights.com","default":false,"backup":true},{"opi_sn":383,"email":"lyj@hainatravel.com","default":true,"backup":false}],"username":"廖一军","avatarUrl":"https://static-legacy.dingtalk.com/media/lALPBDDrhXr716HNAoDNAoA_640_640.png","mobile":"+86-18777396951","email":"lyj@hainatravel.com","whatsAppBusiness":"8617458471254","openId":"iioljiPmZ4RPoOYpkFiSn7IKAiEiE","accountList":[{"OPI_SN":383,"OPI_Code":"LYJ","OPI_NameCN":"廖一军","OPI_DEI_SN":7,"OPI_NameEN":"Jimmy Liow"},{"OPI_SN":609,"OPI_Code":"LYJAH","OPI_NameCN":"廖一军ah","OPI_DEI_SN":28,"OPI_NameEN":"Jimmy Liow"}]}
{"userId":"383","userIdStr":"383,609","emailList":[{"opi_sn":383,"mat_sn":760,"email":"lyj@asiahighlights.com","default":false,"backup":false},{"opi_sn":383,"mat_sn":759,"email":"lyj@chinahighlights.com","default":false,"backup":true},{"opi_sn":383,"mat_sn":758,"email":"lyj@hainatravel.com","default":true,"backup":false}],"username":"廖一军","avatarUrl":"https://static-legacy.dingtalk.com/media/lALPBDDrhXr716HNAoDNAoA_640_640.png","mobile":"+86-18777396951","email":"lyj@hainatravel.com","whatsAppBusiness":"8617458471254","openId":"iioljiPmZ4RPoOYpkFiSn7IKAiEiE","accountList":[{"OPI_SN":383,"OPI_Code":"LYJ","OPI_NameCN":"廖一军","OPI_DEI_SN":7,"OPI_NameEN":"Jimmy Liow"},{"OPI_SN":609,"OPI_Code":"LYJAH","OPI_NameCN":"廖一军ah","OPI_DEI_SN":28,"OPI_NameEN":"Jimmy Liow"}]}

@ -66,6 +66,7 @@ const useAuthStore = create((set, get) => ({
emailList: json.result?.emaillist.map(item => {
return {
opi_sn: item.opi_sn,
mat_sn: item.mat_sn,
email: item.email,
default: item.Isdefaultemail == 1,
backup: item.Isbakemail == 1,

@ -13,6 +13,7 @@ import {
Typography,
theme,
Badge,
Drawer,
} from 'antd'
import 'dayjs/locale/zh-cn'
import { useEffect, useState } from 'react'
@ -24,6 +25,8 @@ import 'react-chat-elements/dist/main.css'
import ReloadPrompt from './ReloadPrompt'
import ClearCache from './ClearCache'
import SnippetList from './accounts/SnippetList'
import { BUILD_VERSION, BUILD_DATE } from '@/config'
const { Header, Footer, Content } = Layout
@ -37,6 +40,14 @@ function DesktopApp() {
const totalNotify = useConversationStore((state) => state.totalNotify)
const [drawerOpen, setDrawerOpen] = useState(false)
const onClick = ({ key }) => {
if (key === 'snippet-list') {
setDrawerOpen(true)
}
}
let defaultPath = '/order/follow'
if (href !== '/') {
@ -78,35 +89,42 @@ function DesktopApp() {
return (
<Layout>
<Header
className="header"
className='header'
style={{
position: 'sticky',
top: 0,
zIndex: 2,
width: '100%',
background: 'white',
}}
>
<Row gutter={{ md: 24 }} align="middle">
<Col flex="220px">
<NavLink to="/">
<img src={AppLogo} className="logo" alt="App logo" />
}}>
<Drawer
title='图文集管理'
placement={'top'}
size={'large'}
onClose={() => setDrawerOpen(false)}
open={drawerOpen}>
<SnippetList></SnippetList>
</Drawer>
<Row gutter={{ md: 24 }} align='middle'>
<Col flex='220px'>
<NavLink to='/'>
<img src={AppLogo} className='logo' alt='App logo' />
</NavLink>
<Title level={3}>销售平台</Title>
</Col>
<Col span={10}>
<Menu
mode="horizontal"
mode='horizontal'
selectedKeys={[defaultPath]}
items={[
{
key: '/order/follow',
label: <Link to="/order/follow">订单跟踪</Link>,
label: <Link to='/order/follow'>订单跟踪</Link>,
},
{
key: '/order/chat',
label: (
<Link to="/order/chat">
<Link to='/order/chat'>
在线聊天
<Badge
count={totalNotify > 0 ? totalNotify : undefined}
@ -119,34 +137,33 @@ function DesktopApp() {
},
{
key: '/callcenter/call',
label: <Link to="/callcenter/call">语音通话</Link>,
label: <Link to='/callcenter/call'>语音通话</Link>,
},
{
key: '/chat/history',
label: <Link to="/chat/history">聊天记录</Link>,
label: <Link to='/chat/history'>聊天记录</Link>,
},
]}
/>
</Col>
<Col
flex="auto"
flex='auto'
style={{
color: 'white',
marginBottom: '0',
display: 'flex',
justifyContent: 'end',
}}
>
}}>
<ReloadPrompt />
<Dropdown
menu={{
items: [
{
label: <Link to="/account/profile">个人资料</Link>,
label: <Link to='/account/profile'>个人资料</Link>,
key: 'profile',
},
{
label: <Link to="/account/snippet-list">图文集管理</Link>,
label: '图文集管理',
key: 'snippet-list',
},
{ type: 'divider' },
@ -155,17 +172,16 @@ function DesktopApp() {
{ label: <ClearCache />, key: 'clearcache' },
{ type: 'divider' },
{
label: <Link to="/p/dingding/logout">退出</Link>,
label: <Link to='/p/dingding/logout'>退出</Link>,
key: 'logout',
},
],
onClick,
}}
trigger={['click']}
>
trigger={['click']}>
<a
onClick={(e) => e.preventDefault()}
style={{ color: colorPrimary }}
>
style={{ color: colorPrimary }}>
<Space>
<Avatar src={loginUser.avatarUrl}>
{loginUser?.username?.substring(1)}
@ -185,8 +201,7 @@ function DesktopApp() {
margin: 0,
minHeight: 280,
background: colorBgContainer,
}}
>
}}>
<Outlet />
</Content>
</Layout>

@ -8,7 +8,7 @@ import {
Tag,
Divider,
List,
Result,
Alert,
Button,
Flex,
Select,
@ -158,13 +158,17 @@ function Profile() {
header={<div>邮箱</div>}
dataSource={loginUser.emailList}
renderItem={(item) => {
const isDefault = item.default ? <Tag color="green">默认</Tag> : null
const isBackup = item.backup ? <Tag color="cyan">备用</Tag> : null
const isDefault = item.default ? (
<Tag color='green'>默认</Tag>
) : null
const isBackup = item.backup ? <Tag color='cyan'>备用</Tag> : null
return (
<List.Item>{item.email} {isDefault}{isBackup}</List.Item>
<List.Item>
{item.email} {isDefault}
{isBackup}
</List.Item>
)
}
}
}}
/>
</Col>
</Row>
@ -183,16 +187,16 @@ function Profile() {
</Typography>
</Col>
<Col span={6}>
<Flex gap="middle" vertical justify={'center'} align={'center'}>
<Flex gap='middle' vertical justify={'center'} align={'center'}>
<QRCode
size={264}
size={264}
value={'https://web.whatsapp.com/'}
status='scanned'
statusRender={customStatusRender}
/>
WhatsApp8618754124786
<Button type='primary'></Button>
</Flex>
<Alert message='WhatsApp8618754124786' type='success' showIcon />
<Button type='primary'>退</Button>
</Flex>
</Col>
</Row>
</>

@ -142,10 +142,10 @@ function SnippetList() {
<Form.Item>
<Button
onClick={() => {
// snippetForm.setFieldsValue({
// title: 'Title....',
// content: editorContent
// })
snippetForm.setFieldsValue({
title: 'Title....',
content: editorContent
})
setSnippetModalOpen(true)
}}>
新增

Loading…
Cancel
Save