提交 fbf9244c 作者: ZhangLingKun

功能:系统设置-成员管理-编辑客服弹窗

上级 8f9ad741
流水线 #9089 已通过 于阶段
in 1 分 2 秒
...@@ -256,6 +256,8 @@ export type listCompanyMembersType = InterItemFunction< ...@@ -256,6 +256,8 @@ export type listCompanyMembersType = InterItemFunction<
userAccountId: number; userAccountId: number;
}; };
userSex: number; userSex: number;
serviceAlias: string;
serviceImg: string;
}[] }[]
>; >;
//单位-成员绑定 //单位-成员绑定
...@@ -480,3 +482,12 @@ export type systemMessageListByUserType = InterListFunction< ...@@ -480,3 +482,12 @@ export type systemMessageListByUserType = InterListFunction<
subject: string; subject: string;
} }
>; >;
// 修改添加客服别名客服头像
export type updateAliasImgByUidType = InterFunction<
{
serviceAlias: string;
serviceImg: string;
userAccountId?: number;
},
NonNullable<unknown>
>;
...@@ -28,6 +28,7 @@ import { ...@@ -28,6 +28,7 @@ import {
systemMessageListByUserType, systemMessageListByUserType,
transferLeaderType, transferLeaderType,
unbindCompanyMemberType, unbindCompanyMemberType,
updateAliasImgByUidType,
updateBAccountType, updateBAccountType,
updatePasswordType, updatePasswordType,
updateRoleInfoType, updateRoleInfoType,
...@@ -93,6 +94,9 @@ export class SystemManageAPI { ...@@ -93,6 +94,9 @@ export class SystemManageAPI {
//单位-管理员转让 //单位-管理员转让
static transferLeader: transferLeaderType = (params) => static transferLeader: transferLeaderType = (params) =>
axios.get('/userapp/company/transferLeader', { params }); axios.get('/userapp/company/transferLeader', { params });
//修改添加客服别名客服头像
static updateAliasImgByUid: updateAliasImgByUidType = (params) =>
axios.post('/userapp/company/updateAliasImgByUid', params);
//账号权限-列表 //账号权限-列表
static getListRoleInfoPage: listRoleInfoPageType = (data) => static getListRoleInfoPage: listRoleInfoPageType = (data) =>
......
...@@ -23,6 +23,7 @@ interface PropsType { ...@@ -23,6 +23,7 @@ interface PropsType {
}[], }[],
) => void; // 上传文件改变时的状态 ) => void; // 上传文件改变时的状态
defaultFileList?: { url: string }[]; // 默认文件列表 defaultFileList?: { url: string }[]; // 默认文件列表
value?: { url: string }[]; // 默认文件列表
disabled?: boolean; // 是否禁用 disabled?: boolean; // 是否禁用
showUploadList?: boolean; showUploadList?: boolean;
} }
...@@ -45,6 +46,7 @@ export const Uploader: React.FC<PropsType> = (props) => { ...@@ -45,6 +46,7 @@ export const Uploader: React.FC<PropsType> = (props) => {
fileLength, fileLength,
onChange, onChange,
defaultFileList, defaultFileList,
value,
disabled, disabled,
} = props; } = props;
// 开始上传 // 开始上传
...@@ -145,13 +147,19 @@ export const Uploader: React.FC<PropsType> = (props) => { ...@@ -145,13 +147,19 @@ export const Uploader: React.FC<PropsType> = (props) => {
.map((v) => fileTypeList.find((i) => i.value === v)?.label) .map((v) => fileTypeList.find((i) => i.value === v)?.label)
.filter((v) => !!v) .filter((v) => !!v)
.join(','); .join(',');
// 组件挂载
useEffect(() => { useEffect(() => {
// 如果有默认文件列表 // 如果有默认文件列表
if (defaultFileList?.length) { if (defaultFileList?.length) {
setFileList(defaultFileList); setFileList(defaultFileList);
} else { return;
setFileList([]); }
if (value?.length) {
setFileList(value);
return;
} }
setFileList([]);
}, [defaultFileList]); }, [defaultFileList]);
return ( return (
<div className='uploader-view'> <div className='uploader-view'>
......
import React, { useEffect } from 'react';
import { Form, Input, message, Modal, ModalProps } from 'antd';
import { listCompanyMembersType, updateAliasImgByUidType } from '~/api/interface/systemManageType';
import { InterListType, InterReqType } from '~/api/interface';
import { Uploader } from '~/components/uploader';
import { UploadOutlined } from '@ant-design/icons';
import { SystemManageAPI } from '~/api';
// 单位-成员列表返回类型
type MembersType = InterListType<listCompanyMembersType>[0];
// 请求类型
type ReqType = InterReqType<updateAliasImgByUidType>;
const EditMemberModalView: React.FC<ModalProps & { data?: MembersType; onCancel: () => void }> = ({
open,
onCancel,
title,
data,
}) => {
// 表单钩子
const [form] = Form.useForm<ReqType & { serviceImg: { url: string }[] }>();
// 关闭弹窗事件
const handleCancel = () => {
onCancel?.();
};
// 确认事件
const handleOk = () => {
form.validateFields().then(async (values) => {
const res = await SystemManageAPI.updateAliasImgByUid({
serviceAlias: values.serviceAlias,
serviceImg: values.serviceImg?.[0].url,
userAccountId: data?.id,
});
if (res && res.code === '200') {
message.success('操作成功');
onCancel?.();
}
});
};
// 组件挂载
useEffect(() => {
if (!open) return;
form.setFieldsValue({
serviceAlias: data?.serviceAlias || data?.userName || data?.nickName,
serviceImg: [{ url: data?.serviceImg || data?.userImg }],
});
// console.log('组件挂载 --->', data);
}, [open]);
return (
<Modal open={open} title={title} onCancel={handleCancel} onOk={handleOk}>
<Form form={form} wrapperCol={{ span: 10 }}>
<Form.Item
label='客服昵称'
name='serviceAlias'
rules={[{ required: true, message: '请输入客服昵称' }]}
>
<Input placeholder='请输入客服昵称' maxLength={25} />
</Form.Item>
<Form.Item
label='客服头像'
name='serviceImg'
rules={[{ required: true, message: '请上传客服头像' }]}
>
<Uploader fileUpload={true}>
<UploadOutlined />
</Uploader>
</Form.Item>
</Form>
</Modal>
);
};
export default EditMemberModalView;
...@@ -2,13 +2,14 @@ import { useEffect, useState } from 'react'; ...@@ -2,13 +2,14 @@ import { useEffect, useState } from 'react';
import { SystemManageAPI } from '~/api'; import { SystemManageAPI } from '~/api';
import { InterDataType, PaginationProps } from '~/api/interface'; import { InterDataType, PaginationProps } from '~/api/interface';
import { listCompanyMembersType } from '~/api/interface/systemManageType'; import { listCompanyMembersType } from '~/api/interface/systemManageType';
import { Button, message, Modal, SelectProps, Table } from 'antd'; import { Button, message, Modal, SelectProps, Table, Image } from 'antd';
import '~/pages/systemManage/companyManage/companyDetail/index.scss'; import '~/pages/systemManage/companyManage/companyDetail/index.scss';
import { ColumnsType } from 'antd/es/table'; import { ColumnsType } from 'antd/es/table';
import { PlusOutlined } from '@ant-design/icons'; import { PlusOutlined } from '@ant-design/icons';
import AddPeopleModal from '~/pages/systemManage/companyManage/companyDetail/components/addPeopleModal'; import AddPeopleModal from '~/pages/systemManage/companyManage/companyDetail/components/addPeopleModal';
import { useSelector } from 'react-redux'; import { useSelector } from 'react-redux';
import TransferLeaderModal from '~/pages/systemManage/companyManage/companyDetail/components/transferLeaderModal'; import TransferLeaderModal from '~/pages/systemManage/companyManage/companyDetail/components/transferLeaderModal';
import EditMemberModalView from '~/pages/systemManage/companyManage/companyMember/comp/editMemberModal';
//单位-成员列表返回类型 //单位-成员列表返回类型
type companyMembersType = InterDataType<listCompanyMembersType>['list']; type companyMembersType = InterDataType<listCompanyMembersType>['list'];
...@@ -27,6 +28,8 @@ const CompanyMemberView = () => { ...@@ -27,6 +28,8 @@ const CompanyMemberView = () => {
const [currentCompanyMembers, setCurrentCompanyMembers] = useState<companyMembersType[0]>(); const [currentCompanyMembers, setCurrentCompanyMembers] = useState<companyMembersType[0]>();
const [addPeopleModalShow, setAddPeopleModalShow] = useState<boolean>(false); const [addPeopleModalShow, setAddPeopleModalShow] = useState<boolean>(false);
const [transferLeaderModalShow, setTransferLeaderModalShow] = useState<boolean>(false); const [transferLeaderModalShow, setTransferLeaderModalShow] = useState<boolean>(false);
// 编辑弹窗是否开启
const [editModalShow, setEditModalShow] = useState<boolean>(false);
//单位成员列表 //单位成员列表
const getListCompanyMembers = (companyInfoId: number) => { const getListCompanyMembers = (companyInfoId: number) => {
SystemManageAPI.getListCompanyMembers({ SystemManageAPI.getListCompanyMembers({
...@@ -120,23 +123,45 @@ const CompanyMemberView = () => { ...@@ -120,23 +123,45 @@ const CompanyMemberView = () => {
render: (text, record) => text || record?.nickName, render: (text, record) => text || record?.nickName,
}, },
{ {
title: '手机号',
align: 'center',
dataIndex: 'phoneNum',
},
{
title: '角色', title: '角色',
align: 'center', align: 'center',
dataIndex: 'leader', dataIndex: 'leader',
render: (text) => roleList?.find((i) => i?.value === text)?.label || text, render: (text) => roleList?.find((i) => i?.value === text)?.label || text,
}, },
{ {
title: '手机号', title: '客服昵称',
align: 'center', align: 'center',
dataIndex: 'phoneNum', dataIndex: 'serviceAlias',
render: (text, record) => text || record?.nickName || record?.userName || '无',
},
{
title: '客服头像',
align: 'center',
dataIndex: 'serviceImg',
render: (text, record) => <Image src={text || record?.userImg} width={35} />,
}, },
{ {
title: '操作', title: '操作',
width: '15%', width: '15%',
align: 'center', align: 'center',
fixed: 'right',
render: (_text: string, record) => ( render: (_text: string, record) => (
<> <>
{/*userInfo.companyInfoVO.leader === record.leader*/} <Button
type='link'
disabled={userInfo.companyInfoVO.leader !== 1 || record.leader === 2}
onClick={() => {
setCurrentCompanyMembers(record);
setEditModalShow(true);
}}
>
编辑
</Button>
<Button <Button
type='link' type='link'
disabled={userInfo.companyInfoVO.leader !== 1} disabled={userInfo.companyInfoVO.leader !== 1}
...@@ -150,6 +175,7 @@ const CompanyMemberView = () => { ...@@ -150,6 +175,7 @@ const CompanyMemberView = () => {
userInfo.companyInfoVO.leader !== 1 || userInfo.companyInfoVO.leader === record.leader userInfo.companyInfoVO.leader !== 1 || userInfo.companyInfoVO.leader === record.leader
} }
onClick={() => unbindCompanyClick(record)} onClick={() => unbindCompanyClick(record)}
danger={true}
> >
解绑 解绑
</Button> </Button>
...@@ -176,6 +202,7 @@ const CompanyMemberView = () => { ...@@ -176,6 +202,7 @@ const CompanyMemberView = () => {
columns={tableColumns} columns={tableColumns}
dataSource={listCompanyMembers} dataSource={listCompanyMembers}
size={'small'} size={'small'}
scroll={{ x: 1000 }}
pagination={{ pagination={{
total: pagination.totalCount, total: pagination.totalCount,
pageSize: pagination.pageSize, pageSize: pagination.pageSize,
...@@ -202,6 +229,16 @@ const CompanyMemberView = () => { ...@@ -202,6 +229,16 @@ const CompanyMemberView = () => {
companyInfoId={companyId} companyInfoId={companyId}
currentCompanyMembers={currentCompanyMembers} currentCompanyMembers={currentCompanyMembers}
/> />
{/*编辑客服弹窗*/}
<EditMemberModalView
open={editModalShow}
data={currentCompanyMembers}
title={'编辑客服'}
onCancel={() => {
setEditModalShow(false);
getListCompanyMembers(companyId);
}}
/>
</div> </div>
); );
}; };
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论