diff --git a/resources/assets/js/pages/manage/components/DialogWrapper.vue b/resources/assets/js/pages/manage/components/DialogWrapper.vue
index 2715782ba..0317c45e2 100644
--- a/resources/assets/js/pages/manage/components/DialogWrapper.vue
+++ b/resources/assets/js/pages/manage/components/DialogWrapper.vue
@@ -498,7 +498,7 @@ export default {
todoViewLoad: false,
todoViewShow: false,
- todoViewTmp: {},
+ todoViewData: {},
todoViewMid: 0,
todoViewId: 0,
@@ -720,17 +720,17 @@ export default {
},
replyItem() {
- return this.replyId ? this.dialogMsgs.find(({id}) => id === this.replyId) : null
+ return this.replyId ? this.allMsgs.find(({id}) => id === this.replyId) : null
},
todoViewMsg() {
if (this.todoViewMid) {
- const msg = this.dialogMsgs.find(item => item.id == this.todoViewMid)
+ const msg = this.allMsgs.find(item => item.id == this.todoViewMid)
if (msg) {
return msg
}
- if (this.todoViewTmp.id === this.todoViewMid) {
- return this.todoViewTmp
+ if (this.todoViewData.id === this.todoViewMid) {
+ return this.todoViewData
}
}
return null
@@ -741,7 +741,6 @@ export default {
dialogId: {
handler(dialog_id) {
if (dialog_id) {
- this.tempMsgs = []
this.msgNew = 0
//
if (this.allMsgList.length > 0) {
@@ -751,7 +750,8 @@ export default {
this.msgType = '';
this.$store.dispatch("getDialogMsgs", {
dialog_id,
- msg_id: this.msgId
+ msg_id: this.msgId,
+ msg_type: this.msgType,
}).then(_ => {
this.openId = dialog_id;
setTimeout(this.onSearchMsgId, 100)
@@ -770,28 +770,13 @@ export default {
immediate: true
},
- msgType(msg_type) {
- if (msg_type) {
- this.$store.dispatch("getDialogMsgs", {
- dialog_id: this.dialogId,
- msg_id: this.msgId,
- msg_type,
- save_cancel: true,
- }).then(({data}) => {
- if (data.list.length > 0) {
- const ids = this.tempMsgs.map(item => item.id)
- const list = data.list.filter(item => !ids.includes(item.id))
- if (list.length > 0) {
- this.tempMsgs.push(...list.map(item => Object.assign(item, {
- isMsgType: true
- })))
- }
- }
- }).catch(_ => {});
- } else {
- this.tempMsgs = this.tempMsgs.filter(({isMsgType}) => isMsgType !== true)
- }
- requestAnimationFrame(this.onToBottom)
+ msgType() {
+ this.$store.dispatch("getDialogMsgs", {
+ dialog_id: this.dialogId,
+ msg_id: this.msgId,
+ msg_type: this.msgType,
+ clear_before: true
+ }).catch(_ => {})
},
dialogSearchMsgId() {
@@ -817,12 +802,13 @@ export default {
},
wsOpenNum(num) {
- if (num <= 1 || this.msgType) {
+ if (num <= 1) {
return
}
this.$store.dispatch("getDialogMsgs", {
dialog_id: this.dialogId,
msg_id: this.msgId,
+ msg_type: this.msgType,
}).catch(_ => {});
},
@@ -1080,6 +1066,7 @@ export default {
this.$store.dispatch("getDialogMsgs", {
dialog_id: this.dialogId,
msg_id: this.msgId,
+ msg_type: this.msgType,
position_id
}).finally(_ => {
const index = this.allMsgs.findIndex(item => item.id === position_id)
@@ -1112,7 +1099,7 @@ export default {
msg_id: this.todoViewMid
},
}).then(({data}) => {
- this.todoViewTmp = data
+ this.todoViewData = data
})
}
},
@@ -1120,7 +1107,7 @@ export default {
onCloseTodo() {
this.todoViewLoad = false
this.todoViewShow = false
- this.todoViewTmp = {}
+ this.todoViewData = {}
this.todoViewMid = 0
this.todoViewId = 0
},
@@ -1308,7 +1295,7 @@ export default {
data: {
dialog_id: this.dialogId,
},
- spinner: 300,
+ spinner: 600,
}).then(({data}) => {
if (data.tel) {
$A.eeuiAppSendMessage({
@@ -1564,7 +1551,11 @@ export default {
break;
default:
- this.msgType = type
+ if (this.loadMsg) {
+ $A.messageWarning("正在加载,请稍后再试...")
+ } else {
+ this.msgType = type
+ }
break;
}
},
@@ -1781,17 +1772,13 @@ export default {
},
onViewPicture(currentUrl) {
- const data = $A.cloneJSON(this.dialogMsgs.filter(item => {
- if (item.dialog_id === this.dialogId) {
- if (item.type === 'file') {
- return ['jpg', 'jpeg', 'gif', 'png'].includes(item.msg.ext);
- } else if (item.type === 'text') {
- return item.msg.text.match(/
]*?>/);
- }
+ const data = this.allMsgs.filter(item => {
+ if (item.type === 'file') {
+ return ['jpg', 'jpeg', 'gif', 'png'].includes(item.msg.ext);
+ } else if (item.type === 'text') {
+ return item.msg.text.match(/
]*?>/);
}
return false;
- })).sort((a, b) => {
- return a.id - b.id;
});
//
const list = [];
@@ -1860,8 +1847,8 @@ export default {
const index = this.dialogMsgs.findIndex(item => item.id == data.id)
if (index > -1) {
this.$store.dispatch("saveDialogMsg", data);
- } else if (this.todoViewTmp.id === data.id) {
- this.todoViewTmp = Object.assign({}, this.todoViewTmp, data)
+ } else if (this.todoViewData.id === data.id) {
+ this.todoViewData = Object.assign(this.todoViewData, data)
}
}).catch(({msg}) => {
$A.messageError(msg);
diff --git a/resources/assets/js/store/actions.js b/resources/assets/js/store/actions.js
index 87b7ad1da..212b6cb54 100644
--- a/resources/assets/js/store/actions.js
+++ b/resources/assets/js/store/actions.js
@@ -2270,15 +2270,15 @@ export default {
* @param state
* @param dispatch
* @param getters
- * @param data {dialog_id, msg_id, ?msg_type, ?position_id, ?prev_id, ?next_id, ?save_before, ?save_cancel}
+ * @param data {dialog_id, msg_id, ?msg_type, ?position_id, ?prev_id, ?next_id, ?save_before, ?clear_before}
* @returns {Promise}
*/
getDialogMsgs({state, dispatch, getters}, data) {
return new Promise((resolve, reject) => {
const saveBefore = typeof data.save_before === "function" ? data.save_before : _ => {}
- const saveCancel = typeof data.save_cancel === "boolean" ? data.save_cancel : false
+ const clearBefore = typeof data.clear_before === "boolean" ? data.clear_before : false
if (typeof data.save_before !== "undefined") delete data.save_before
- if (typeof data.save_cancel !== "undefined") delete data.save_cancel
+ if (typeof data.clear_before !== "undefined") delete data.clear_before
//
const loadKey = `msg::${data.dialog_id}-${data.msg_id}-${data.msg_type || ''}`
if (getters.isLoad(loadKey)) {
@@ -2287,27 +2287,30 @@ export default {
}
dispatch("setLoad", loadKey)
//
+ if (clearBefore) {
+ state.dialogMsgs = state.dialogMsgs.filter(({dialog_id}) => dialog_id !== data.dialog_id)
+ }
+ //
dispatch("call", {
url: 'dialog/msg/list',
data,
+ spinner: 3000,
complete: _ => dispatch("cancelLoad", loadKey)
}).then(result => {
saveBefore()
- if (!saveCancel) {
- const resData = result.data;
- if ($A.isJson(resData.dialog)) {
- dispatch("saveDialog", resData.dialog);
- //
- const ids = resData.list.map(({id}) => id)
- state.dialogMsgs = state.dialogMsgs.filter(item => item.dialog_id != data.dialog_id || ids.includes(item.id));
- }
- if ($A.isArray(resData.todo)) {
- state.dialogTodos = state.dialogTodos.filter(item => item.dialog_id != data.dialog_id)
- dispatch("saveDialogTodo", resData.todo)
- }
+ const resData = result.data;
+ if ($A.isJson(resData.dialog)) {
+ dispatch("saveDialog", resData.dialog);
//
- dispatch("saveDialogMsg", resData.list)
+ const ids = resData.list.map(({id}) => id)
+ state.dialogMsgs = state.dialogMsgs.filter(item => item.dialog_id != data.dialog_id || ids.includes(item.id));
}
+ if ($A.isArray(resData.todo)) {
+ state.dialogTodos = state.dialogTodos.filter(item => item.dialog_id != data.dialog_id)
+ dispatch("saveDialogTodo", resData.todo)
+ }
+ //
+ dispatch("saveDialogMsg", resData.list)
resolve(result)
}).catch(e => {
console.warn(e);