// components/List/index.js
import { getDataByPath } from "../../utils/util"
import { get } from "../../utils/api"
Component({
    /**
     * 组件的属性列表
     */
    properties: {
        url: {
            type: String
        },
        dataPath: {
            type: String
        },
        list: {
            type: Array
        },
        params: {
            type: Object,
        },
        limit: {
            type: Number,
            value: 10
        },
        scrolling:{
            type:Boolean,
            value:true,
        },
        emptyText:{
            type:String,
            value:"暂无数据"
        }
    },

    /**
     * 组件的初始数据
     */
    data: {
        page: 1,
        limit: 10,
        more: true,
        loading: false
    },
    // 数据监听器
    observers: {
        "url,params"(url) {
            if (!url) return
            this.resetPage();
        },
    },
    /**
     * 组件的方法列表
     */
    methods: {
        loadMore() {
            let page = this.data.page + 1;
            this.setData({ page })
            this.getData();
        },
        getData() {
            if (!this.data.more) return
            if (!this.data.loading && (!this.data.params || Object.keys(this.data.params).length > 0)) {
                this.setData({ loading: true })
                // 增加租户id
                let {tenantId} = wx.getStorageSync('tenant')
                if(this.data?.params) {
                    this.data.params.tenantId = tenantId
                }
                get(this.data.url, Object.assign({}, { page: this.data.page, limit: this.data.limit }, this.data.params || {})).then(res => {
                    let records;
                    if (res.code == 0) {
                        records = getDataByPath(res, this.data.dataPath || "data.records")
                    } else {
                        records = [];
                    }
                    if (records.length < this.data.limit) {
                        this.setData({ more: false })
                    }
                this.triggerEvent("update-list", records)
                }).catch(e => {
                    wx.showToast({
                        title: e || '系统错误',
                        duration: 1500,
                    });
                }).finally(() => {
                    this.setData({ loading: false })
                })
            }
        },
        resetPage() {
            this.setData({ more: true, page: 1 })
            this.triggerEvent('reset-list')
            this.getData();
        }
    }
})
