feat: 增加请求二维码功能;有权限才能使用;

fix: 接收图片保存出错
dev/supplier-email-drawer
LiaoYijun 9 months ago
parent e924508b1d
commit d3b39a7fbd

@ -30,6 +30,10 @@ const useAuthStore = create(devtools((set, get) => ({
isPermitted: (perm) => { isPermitted: (perm) => {
const { loginUser } = get() const { loginUser } = get()
if (perm === PERM_USE_WHATSAPP) {
return ['404', '383', '227'].includes(loginUser.userId)
}
if (perm === PERM_USE_EMAL) { if (perm === PERM_USE_EMAL) {
return true//['501', '466', '599', '495', '143', '370', '639', '513', '654', '404', '383', '227'].includes(loginUser.userId) return true//['501', '466', '599', '495', '143', '370', '639', '513', '654', '404', '383', '227'].includes(loginUser.userId)
} }
@ -79,6 +83,7 @@ const useAuthStore = create(devtools((set, get) => ({
} }
}), }),
whatsAppBusiness: json.result.whatsappinfo.length > 0 ? json.result.whatsappinfo[0].whatsapp_waba : '', whatsAppBusiness: json.result.whatsappinfo.length > 0 ? json.result.whatsappinfo[0].whatsapp_waba : '',
whatsAppNo: json.result.whatsappinfo.length > 0 ? json.result.whatsappinfo[0].whatsapp_wa : '',
accountName: json.result.opicode, accountName: json.result.opicode,
username: json.result.nick, username: json.result.nick,
avatarUrl: json.result.avatarUrl, avatarUrl: json.result.avatarUrl,

@ -2,14 +2,19 @@ import { useEffect, useCallback, useState } from 'react'
import { Row, Col, Space, Input, Descriptions, Avatar, Tag, Divider, List, App, Button, Flex, Select, Spin, Form, Typography, QRCode, Tooltip } from 'antd' import { Row, Col, Space, Input, Descriptions, Avatar, Tag, Divider, List, App, Button, Flex, Select, Spin, Form, Typography, QRCode, Tooltip } from 'antd'
import { UserOutlined, InfoCircleOutlined, ReloadOutlined, CheckCircleFilled } from '@ant-design/icons' import { UserOutlined, InfoCircleOutlined, ReloadOutlined, CheckCircleFilled } from '@ant-design/icons'
import useAuthStore from '@/stores/AuthStore' import useAuthStore from '@/stores/AuthStore'
import { fetchJSON } from '@/utils/request'
import { Conditional } from '@/components/Conditional'
import { PERM_USE_WHATSAPP } from '@/stores/AuthStore'
function Profile() { function Profile() {
const { notification } = App.useApp() const { notification } = App.useApp()
const [wabaForm] = Form.useForm() const [wabaForm] = Form.useForm()
const [loginUser, setWhatsAppBusiness] = useAuthStore((state) => [state.loginUser, state.setWhatsAppBusiness]) const [loginUser, setWhatsAppBusiness, isPermitted] = useAuthStore((state) => [
state.loginUser, state.setWhatsAppBusiness, state.isPermitted
])
const [text, setText] = useState('') const [qrCode, setQRCode] = useState('')
useEffect(() => { useEffect(() => {
// //
@ -36,6 +41,21 @@ function Profile() {
}) })
}, []) }, [])
const handelGernaterQR = useCallback(() => {
const phone = loginUser.whatsAppNo
fetchJSON(
'http://localhost:3031/api/v1/whatsapp/channels/qrcode',
{ phone })
.then(r => {
console.info(r)
setQRCode(r.result.qr)
})
.catch(ex => {
console.error(ex)
})
}, [])
const customStatusRender = (info) => { const customStatusRender = (info) => {
switch (info.status) { switch (info.status) {
case 'expired': case 'expired':
@ -107,7 +127,7 @@ function Profile() {
<span>商业号身份</span> <span>商业号身份</span>
</Space> </Space>
}> }>
<Form layout='vertical' className='w-3/5' form={wabaForm} initialValues={{ whatsAppBusiness: loginUser.whatsAppBusiness }}> <Form layout='vertical' className='w-3/5' form={wabaForm} initialValues={{ whatsAppBusiness: loginUser.whatsAppBusiness, whatsAppNo: loginUser.whatsAppNo }}>
<Form.Item name='whatsAppBusiness'> <Form.Item name='whatsAppBusiness'>
<Select <Select
options={[ options={[
@ -142,6 +162,11 @@ function Profile() {
]} ]}
/> />
</Form.Item> </Form.Item>
<Form.Item
label='WhatsApp'
name='whatsAppNo'>
<Input />
</Form.Item>
<Form.Item> <Form.Item>
<Button type='primary' onClick={handelUpdateWABA}> <Button type='primary' onClick={handelUpdateWABA}>
保存 保存
@ -175,6 +200,7 @@ function Profile() {
<Typography.Title level={2}>在系统上使用 WhatsApp</Typography.Title> <Typography.Title level={2}>在系统上使用 WhatsApp</Typography.Title>
<Typography.Paragraph> <Typography.Paragraph>
<ul> <ul>
<li>点击生成二维码</li>
<li>在手机上打开 WhatsApp</li> <li>在手机上打开 WhatsApp</li>
<li>点击已关联的设备再点击关联新设备</li> <li>点击已关联的设备再点击关联新设备</li>
<li>将手机对准屏幕扫描二维码</li> <li>将手机对准屏幕扫描二维码</li>
@ -184,12 +210,12 @@ function Profile() {
</Col> </Col>
<Col span={6}> <Col span={6}>
<Flex gap='middle' vertical justify={'center'} align={'center'}> <Flex gap='middle' vertical justify={'center'} align={'center'}>
<Input <QRCode size={264} value={qrCode} errorLevel='L' />
placeholder="" <Conditional
value={text} condition={isPermitted(PERM_USE_WHATSAPP)}
onChange={(e) => setText(e.target.value)} whenTrue={<Button type='primary' onClick={handelGernaterQR}>生成</Button>}
/> />
<QRCode size={264} value={text} errorLevel='L' />
</Flex> </Flex>
</Col> </Col>
</Row> </Row>

@ -118,7 +118,7 @@ const createWhatsApp = async (phone) => {
logger, logger,
// pass this so that baileys can request a reupload of media // pass this so that baileys can request a reupload of media
// that has been deleted // that has been deleted
reuploadRequest: sock.updateMediaMessage reuploadRequest: waSocket.updateMediaMessage
} }
) )
// save to file // save to file

Loading…
Cancel
Save