diff --git a/app/Http/Controllers/Api/DialogController.php b/app/Http/Controllers/Api/DialogController.php index 66bd98e0b..82d7ddfb4 100755 --- a/app/Http/Controllers/Api/DialogController.php +++ b/app/Http/Controllers/Api/DialogController.php @@ -38,7 +38,7 @@ class DialogController extends AbstractController * * @apiParam {String} [at_after] 只读取在这个时间之后更新的对话 * @apiParam {Number} [page] 当前页,默认:1 - * @apiParam {Number} [pagesize] 每页显示数量,默认:100,最大:200 + * @apiParam {Number} [pagesize] 每页显示数量,默认:50,最大:100 * * @apiSuccess {Number} ret 返回状态码(1正确、0错误) * @apiSuccess {String} msg 返回信息(错误描述) @@ -57,7 +57,7 @@ class DialogController extends AbstractController $list = $builder ->orderByDesc('u.top_at') ->orderByDesc('web_socket_dialogs.last_at') - ->paginate(Base::getPaginate(200, 100)); + ->paginate(Base::getPaginate(100, 50)); $list->transform(function (WebSocketDialog $item) use ($user) { return $item->formatData($user->userid); }); diff --git a/resources/assets/js/pages/manage/messenger.vue b/resources/assets/js/pages/manage/messenger.vue index 838dc6363..3c8a60b70 100644 --- a/resources/assets/js/pages/manage/messenger.vue +++ b/resources/assets/js/pages/manage/messenger.vue @@ -755,7 +755,7 @@ export default { if (timeout > -1) { this.__updateDialogs = setTimeout(_ => { if (this.tabActive === 'dialog') { - this.$store.dispatch("getDialogs", true).catch(() => {}); + this.$store.dispatch("getDialogs", {hideLoad: true}).catch(() => {}); } }, timeout) } diff --git a/resources/assets/js/store/actions.js b/resources/assets/js/store/actions.js index 92cf74246..2b48387d1 100644 --- a/resources/assets/js/store/actions.js +++ b/resources/assets/js/store/actions.js @@ -1278,7 +1278,7 @@ export default { // dispatch("call", { url: 'project/task/lists', - data: data + data }).then(result => { if (data.project_id) { state.projectLoad--; @@ -2071,40 +2071,53 @@ export default { * 获取会话列表 * @param state * @param dispatch - * @param hideLoad + * @param data * @returns {Promise} */ - getDialogs({state, dispatch}, hideLoad) { + getDialogs({state, dispatch}, data) { return new Promise(function (resolve, reject) { if (state.userId === 0) { state.cacheDialogs = []; reject({msg: 'Parameter error'}); return; } - let data = {}; - if (hideLoad !== true) { + data = $A.isJson(data) ? data : {} + if (data.hideLoad !== true) { state.loadDialogs++; } - if (state.cacheDialogs.length > 0) { - const tmpList = state.cacheDialogs.sort((a, b) => { - if (a.top_at || b.top_at) { - return $A.Date(b.top_at) - $A.Date(a.top_at); - } - return $A.Date(b.last_at) - $A.Date(a.last_at); - }) - data.at_after = tmpList[0].last_at; + if (typeof data.pagesize === "undefined") { + data.pagesize = 20 + } + if (typeof data.page === "undefined") { + data.page = 1 + if (state.cacheDialogs.length > 0) { + const tmpList = state.cacheDialogs.sort((a, b) => { + if (a.top_at || b.top_at) { + return $A.Date(b.top_at) - $A.Date(a.top_at); + } + return $A.Date(b.last_at) - $A.Date(a.last_at); + }) + data.at_after = tmpList[0].last_at; + } } dispatch("call", { url: 'dialog/lists', data, }).then(result => { - dispatch("saveDialog", result.data.data); - resolve(result) + const resData = result.data; + dispatch("saveDialog", resData.data); + // + if (resData.next_page_url && resData.current_page < 5) { + data.page++ + dispatch("getDialogs", data).then(resolve).catch(reject) + } else { + resolve() + } }).catch(e => { console.warn(e); reject(e) }).finally(_ => { - if (hideLoad !== true) { + if (data.hideLoad !== true) { state.loadDialogs--; } });