You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Global-sales/src/views/CallCenter.jsx

68 lines
2.2 KiB
JavaScript

import { useCallback, useState, useEffect } from "react";
import { Grid, Divider, Layout, Flex, Spin, Input, Col, Row, List, Typography, Alert } from "antd";
import { PhoneOutlined, CustomerServiceOutlined, AudioOutlined } from "@ant-design/icons";
import { useParams, useHref, useNavigate } from "react-router-dom";
import { isEmpty } from "@/utils/commons";
import callCenterStore from "@/stores/CallCenterStore";
import useAuthStore from "@/stores/AuthStore";
const CallCenter = props => {
const href = useHref();
const navigate = useNavigate();
const { phonenumber } = useParams();
const [init_vonage, make_call, hang_up, logs, call_id, loading] = callCenterStore(state => [state.init_vonage, state.make_call, state.hang_up, state.logs, state.call_id, state.loading]);
const [loginUser] = useAuthStore(state => [state.loginUser]);
const [phone_number, setPhone_number] = useState(phonenumber);
useEffect(() => {
if (loginUser.userId === -1 && href.indexOf("/p/") === -1) {
navigate("/p/dingding/login?origin_url=" + href);
} else {
init_vonage(loginUser.userId);
}
}, [href, navigate, init_vonage, loginUser]);
const oncall = () => {
if (isEmpty(call_id)) {
make_call(phone_number);
} else {
hang_up();
}
};
return (
<>
<br />
<Row gutter={16}>
<Col md={24} lg={8} xxl={9}></Col>
<Col md={24} lg={8} xxl={6}>
<Input.Search
type="tel"
size="large"
defaultValue={phone_number}
placeholder="电话号码"
prefix={<AudioOutlined />}
suffix={loading ? <Spin /> : ""}
enterButton={call_id ? "挂断" : "拨号"}
onSearch={oncall}
onChange={e => {
setPhone_number(e.target.value);
}}></Input.Search>
</Col>
<Col md={24} lg={8} xxl={9}>
<Alert message={'不支持拨打中国大陆(+86)号码'} type="info" showIcon />
</Col>
</Row>
<Row gutter={16}>
<Col md={24} lg={8} xxl={9}></Col>
<Col md={24} lg={8} xxl={6}>
</Col>
</Row>
<Divider plain orientation="left" className="mb-0"></Divider>
<List header={<Typography.Text strong>Console Logs</Typography.Text>} bordered dataSource={logs} renderItem={item => <List.Item>{item}</List.Item>} />
</>
);
};
export default CallCenter;