123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- import { Button, Dropdown, Menu } from "antd";
- import React, { useEffect, useState } from "react";
- import style from './index.less'
- import SelectAccount from "./selectAccount";
- import { getChannelName } from '@/utils/utils'
- type Props = {
- onChange: (value: { MP?: any, ADQ?: any, id: number, accountName: string }[]) => void,
- value: { MP?: any, ADQ?: any, id: number, accountName: string }[]
- }
- function InputAcc(props: Props) {
- const { value = [], onChange } = props
- const [selectAccShow, setSelectAccShow] = useState<boolean>(false)
- const [data, setData] = useState<{ title: String, num: Number }>({ title: '', num: 0 })
- useEffect(() => {
- if (value.length > 0) {
- let num = 0
- let title = ""
- for (const iterator of value) {
- if (iterator?.MP?.length > 0) {
- title = getChannelName(iterator.accountName) + '-' + iterator?.MP[0].uname
- break
- }
- }
- value?.forEach((item: any) => {
- if(item?.MP?.length > 0) {
- num += item?.MP?.length
- }
- })
- setData(() => ({ title, num: num !==0 ? num - 1 : 0 }))
- }
- }, [value])
- const menu = () => {
- return <Menu style={{ width: 220, borderRadius: 4 }}>
- {value?.map((item: { id: number, accountName: string, MP?: any[], ADQ?: any[] }) => {
- if ((item?.MP && item?.MP?.length > 0) || (item?.ADQ && item?.ADQ?.length > 0)) {
- return <div key={item?.id}>
- {item?.MP && item?.MP?.length > 0 && item?.MP?.map((mp: { id: number, uname: string }) => <Menu.Item style={{ cursor: 'default' }} key={mp?.id} className={style.acc}>
- <div className={style.cc}>
- <span>{getChannelName(item?.accountName)}-{mp?.uname}</span>
- </div>
- </Menu.Item>)}
- </div>
- } else {
- return null
- }
- })}
- </Menu>
- }
- return <>
- {selectAccShow && <SelectAccount show={selectAccShow} onClose={() => { setSelectAccShow(false) }} onChange={(e: any) => { onChange(e); setSelectAccShow(false) }} channelAccounts={value} />}
- {value?.some((item: any) => (item?.MP?.length > 0 || item?.ADQ?.length > 0)) ? <div className={style.inputAcc}>
- <Dropdown overlay={menu} trigger={['click']}>
- <div className={style.acc}>
- {data.title} {data.num > 0 && <span>+{data.num}</span>}
- </div>
- </Dropdown>
- <Button type="text" className={style.edit} size="small" onClick={() => { setSelectAccShow(true) }}>修改</Button>
- </div> : <Button type="primary" className={style.edit} size="small" onClick={() => { setSelectAccShow(true) }}>选择公众号</Button>}
- </>
- }
- export default React.memo(InputAcc)
|