diff --git a/packages/tsdaodaobase/src/Components/Subscribers/list.tsx b/packages/tsdaodaobase/src/Components/Subscribers/list.tsx index 6b0cf5a..884381e 100644 --- a/packages/tsdaodaobase/src/Components/Subscribers/list.tsx +++ b/packages/tsdaodaobase/src/Components/Subscribers/list.tsx @@ -13,184 +13,206 @@ import { Checkbox } from "@douyinfe/semi-ui/lib/es/checkbox"; import { GroupRole } from "../../Service/Const"; export interface SubscriberListProps { - channel: Channel - canSelect?: boolean; // 是否支持多选 - disableSelectList?: string[]; // 禁选列表 - onSelect?: (items: Subscriber[]) => void; + channel: Channel; + canSelect?: boolean; // 是否支持多选 + disableSelectList?: string[]; // 禁选列表 + onSelect?: (items: Subscriber[]) => void; } export interface SubscriberListState { - selectedList: Subscriber[] + selectedList: Subscriber[]; } -export class SubscriberList extends Component { +export class SubscriberList extends Component< + SubscriberListProps, + SubscriberListState +> { + constructor(props: SubscriberListProps) { + super(props); + this.state = { + selectedList: [], + }; + } - constructor(props: SubscriberListProps) { - super(props); - this.state = { - selectedList: [] - } + onSearch = (v: string, vm: SubscriberListVM) => { + vm.search(v); + }; + + handleScroll = (e: React.UIEvent, vm: SubscriberListVM) => { + const target = e.target as HTMLDivElement; + const offset = 200; + if ( + target.scrollTop + target.clientHeight + offset >= + target.scrollHeight + ) { + console.log("到底了"); + vm.loadMoreSubscribersIfNeed(); + } + }; + + // 获取显示名称 + getShowName = (subscriber: Subscriber) => { + // 优先显示个人备注 + const channelInfo = WKSDK.shared().channelManager.getChannelInfo( + new Channel(subscriber.uid, ChannelTypePerson) + ); + if ( + channelInfo && + channelInfo.orgData.remark && + channelInfo.orgData.remark.trim() !== "" + ) { + return channelInfo.orgData.remark; } - onSearch = (v: string, vm: SubscriberListVM) => { - vm.search(v) + // 其次显示群内备注 + if (subscriber.remark && subscriber.remark.trim() !== "") { + return subscriber.remark; } - handleScroll = (e: React.UIEvent, vm: SubscriberListVM) => { - const target = e.target as HTMLDivElement; - const offset = 200; - if (target.scrollTop + target.clientHeight + offset >= target.scrollHeight) { - console.log("到底了"); - vm.loadMoreSubscribersIfNeed() + // 最后显示昵称 + return subscriber.name; + }; + + onItemClick = (subscriber: Subscriber) => { + const { canSelect } = this.props; + if (!canSelect) { + WKApp.shared.baseContext.showUserInfo(subscriber.uid, this.props.channel); + return; + } + this.checkItem(subscriber); + }; + + isDisableItem(id: string) { + const { disableSelectList } = this.props; + if (disableSelectList && disableSelectList.length > 0) { + for (const disableSelect of disableSelectList) { + if (disableSelect === id) { + return true; } + } + } + return false; + } + + isCheckItem(item: Subscriber) { + const { selectedList } = this.state; + for (const selected of selectedList) { + if (selected.uid === item.uid) { + return true; + } + } + return false; + } + + checkItem(item: Subscriber) { + const { selectedList } = this.state; + const { onSelect } = this.props; + let newSelectedList = selectedList; + let found = -1; + for (let index = 0; index < newSelectedList.length; index++) { + const selected = newSelectedList[index]; + if (selected.uid === item.uid) { + found = index; + break; + } + } + if (found >= 0) { + newSelectedList.splice(found, 1); + } else { + newSelectedList = [item, ...selectedList]; } - // 获取显示名称 - getShowName = (subscriber: Subscriber) => { - - // 优先显示个人备注 - const channelInfo = WKSDK.shared().channelManager.getChannelInfo(new Channel(subscriber.uid, ChannelTypePerson)) - if (channelInfo && channelInfo.orgData.remark && channelInfo.orgData.remark.trim() !== "") { - return channelInfo.orgData.remark; - } - - // 其次显示群内备注 - if (subscriber.remark && subscriber.remark.trim() !== "") { - return subscriber.remark; - } - - // 最后显示昵称 - return subscriber.name + this.setState({ + selectedList: newSelectedList, + }); + if (onSelect) { + onSelect(newSelectedList); } + } - onItemClick = (subscriber: Subscriber) => { - const { canSelect } = this.props - if (!canSelect) { - WKApp.shared.baseContext.showUserInfo(subscriber.uid, this.props.channel) - return - } - this.checkItem(subscriber) + getRoleName = (item: Subscriber) => { + if (item.role === GroupRole.owner) { + return "群主"; + } else if (item.role === GroupRole.manager) { + return "管理员"; + } else { + return ""; } + }; - isDisableItem(id: string) { - const { disableSelectList } = this.props; - if (disableSelectList && disableSelectList.length > 0) { - for (const disableSelect of disableSelectList) { - if (disableSelect === id) { - return true; - } - } - } - return false; - } - - isCheckItem(item: Subscriber) { - const { selectedList } = this.state; - for (const selected of selectedList) { - if (selected.uid === item.uid) { - return true; - } - } - return false; - } - - checkItem(item: Subscriber) { - const { selectedList } = this.state; - const { onSelect } = this.props; - let newSelectedList = selectedList; - let found = -1; - for (let index = 0; index < newSelectedList.length; index++) { - const selected = newSelectedList[index]; - if (selected.uid === item.uid) { - found = index; - break; - } - } - if (found >= 0) { - newSelectedList.splice(found, 1); - } else { - newSelectedList = [item, ...selectedList]; - } - - this.setState({ - selectedList: newSelectedList, - }); - if (onSelect) { - onSelect(newSelectedList); - } - } - - - getRoleName = (item: Subscriber) => { - if (item.role === GroupRole.owner) { - return "群主" - } else if (item.role === GroupRole.manager) { - return "管理员" - } else { - return "" - } - } - - - render() { - - const { canSelect } = this.props - return { - return new SubscriberListVM(this.props.channel); - }} - render={(vm: SubscriberListVM) => { - - return
{ this.handleScroll(e, vm) }}> -
-
- -
-
- { - this.onSearch(v.target.value, vm); - }} - placeholder={"搜索"} - ref={(rf) => { }} - type="text" - style={{ fontSize: "17px" }} - /> -
-
-
- { - vm.subscribers.map((item) => { - - return
{ this.onItemClick(item) }}> - {canSelect ? ( -
- -
- ) : undefined} -
- -
-
-
{this.getShowName(item)}{this.getShowName(item)}
-
{this.getRoleName(item)}
-
-
- }) - } - -
+ render() { + const { canSelect } = this.props; + return ( + { + return new SubscriberListVM(this.props.channel); + }} + render={(vm: SubscriberListVM) => { + return ( +
{ + this.handleScroll(e, vm); + }} + > +
+
+
- }} - > - - - } -} \ No newline at end of file +
+ { + this.onSearch(v.target.value, vm); + }} + placeholder={"搜索"} + ref={(rf) => {}} + type="text" + style={{ fontSize: "17px" }} + /> +
+
+
+ {vm.subscribers.map((item) => { + return ( +
{ + this.onItemClick(item); + }} + > + {canSelect ? ( +
+ +
+ ) : undefined} +
+ +
+
+
+ {this.getShowName(item)} +
+
+ {this.getRoleName(item)} +
+
+
+ ); + })} +
+
+ ); + }} + >
+ ); + } +}