| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- import dayjs from "dayjs";
- import PageContainerBehavior from "../../../../core/behavior/page-container.behavior";
- // module/chats/pages/index/index.ts
- interface ScrollIntoViewEvent {
- detail: string;
- }
- interface HandleEvent {
- detail: { component: "guide" | "questionnaire"; scroll?: boolean };
- }
- interface NextTypeEvent {
- detail: { messageType: number };
- }
- interface Message extends Omit<HandleEvent["detail"], "scroll"> {
- id: string;
- }
- function getScrollcontext(this: any) {
- return this as {
- scroll: WechatMiniprogram.ScrollViewContext;
- timer: number;
- };
- }
- Component({
- behaviors: [PageContainerBehavior],
- lifetimes: {
- attached() {
- this.setData({
- date: dayjs().format("MM-DD HH:mm:ss"),
- });
- const component = this.data.component as "guide" | "questionnaire";
- this.handle({ detail: { component, scroll: true } });
- console.log("id-index",this.data);
- },
- ready() {
- wx.createSelectorQuery()
- .select("#scrollview")
- .node()
- .exec((res) => {
- getScrollcontext.call(this).scroll = res[0].node;
- });
- },
- },
- properties: {
- component: { type: String, value: "guide" },
- messageType: { type: Number, value: 0 },
- isShowGuide: { type: Boolean, value: false },
- id: { type: Number, value: 0 },
- },
- data: {
- date: "",
- messages: {} as Record<number, Message>,
- lastId: "",
- inputBoxBottom:0,
- tabbarValue:"/module/chats/pages/index/index",
- analysisCount: 0,
- },
- observers: {
- "messages.**"(messages) {
- const message = Object.values(messages).pop() as Message;
- this.setData({ lastId: message?.id });
- },
- },
- methods: {
- boxBottom(event: boxBottom) {
- console.log(event, "监听页面index高度event");
- this.setData({ inputBoxBottom: event.detail.inputBoxBottom+60 });
- console.log(this.data.inputBoxBottom, "监听页面index高度boxbottom");
- },
- nextType(event: NextTypeEvent) {
- this.setData({ messageType: event.detail.MessageType });
- },
- getCount(event: GetCountEvent) {
- this.setData({ analysisCount: event.detail.analysisCount });
- console.log(this.data.analysisCount, "监听页面index高度getCount");
- },
- handle(event: HandleEvent) {
- const index = Object.keys(this.data.messages).length;
- this.setData({
- [`messages.${index}`]: <Message>{
- id: `${this.is.replace(/\//g, "_")}-${index}`,
- component: event.detail?.component,
- },
- });
- if (event.detail?.scroll) this.scrollIntoView();
- },
- scrollIntoView(event?: ScrollIntoViewEvent) {
- clearTimeout(getScrollcontext.call(this).timer);
- const id = event?.detail ?? this.data.lastId;
- getScrollcontext.call(this).timer = setTimeout(() => {
- getScrollcontext
- .call(this)
- .scroll?.scrollIntoView(`#${id}`, { alignment: "end" });
- }, 300);
- },
- },
- });
|