no message
This commit is contained in:
parent
6a0bc37645
commit
14a645472d
@ -139,7 +139,7 @@ class ProjectController extends AbstractController
|
|||||||
'desc' => $desc,
|
'desc' => $desc,
|
||||||
'userid' => $user->userid,
|
'userid' => $user->userid,
|
||||||
]);
|
]);
|
||||||
return AbstractModel::transaction(function() use ($insertColumns, $project) {
|
AbstractModel::transaction(function() use ($insertColumns, $project) {
|
||||||
$project->save();
|
$project->save();
|
||||||
ProjectUser::createInstance([
|
ProjectUser::createInstance([
|
||||||
'project_id' => $project->id,
|
'project_id' => $project->id,
|
||||||
@ -150,11 +150,12 @@ class ProjectController extends AbstractController
|
|||||||
$column['project_id'] = $project->id;
|
$column['project_id'] = $project->id;
|
||||||
ProjectColumn::createInstance($column)->save();
|
ProjectColumn::createInstance($column)->save();
|
||||||
}
|
}
|
||||||
$data = $project->find($project->id);
|
|
||||||
$data->addLog("创建项目");
|
|
||||||
$data->pushMsg('add', $data->toArray());
|
|
||||||
return Base::retSuccess('添加成功', $data);
|
|
||||||
});
|
});
|
||||||
|
//
|
||||||
|
$data = $project->find($project->id);
|
||||||
|
$data->addLog("创建项目");
|
||||||
|
$data->pushMsg('add', $data->toArray());
|
||||||
|
return Base::retSuccess('添加成功', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -78,10 +78,6 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
mounted() {
|
|
||||||
this.msgRead()
|
|
||||||
},
|
|
||||||
|
|
||||||
computed: {
|
computed: {
|
||||||
...mapState(['userId']),
|
...mapState(['userId']),
|
||||||
|
|
||||||
@ -94,11 +90,16 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
watch: {
|
||||||
msgRead() {
|
msgData: {
|
||||||
this.$store.dispatch("dialogMsgRead", this.msgData);
|
handler(data) {
|
||||||
},
|
this.$store.dispatch("dialogMsgRead", data);
|
||||||
|
},
|
||||||
|
immediate: true,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
popperShow() {
|
popperShow() {
|
||||||
this.$store.dispatch("call", {
|
this.$store.dispatch("call", {
|
||||||
url: 'dialog/msg/readlist',
|
url: 'dialog/msg/readlist',
|
||||||
|
@ -28,7 +28,8 @@
|
|||||||
static>
|
static>
|
||||||
<div ref="manageList" class="dialog-list">
|
<div ref="manageList" class="dialog-list">
|
||||||
<ul>
|
<ul>
|
||||||
<li v-if="dialogMsgLoad > 0 && dialogMsgList.length === 0" class="loading"><Loading/></li>
|
<li v-if="dialogMsgHasMorePages" class="history" @click="$store.dispatch('getDialogMsgListNextPage')">{{$L('加载历史消息')}}</li>
|
||||||
|
<li v-else-if="dialogMsgLoad > 0 && dialogMsgList.length === 0" class="loading"><Loading/></li>
|
||||||
<li v-else-if="dialogMsgList.length === 0" class="nothing">{{$L('暂无消息')}}</li>
|
<li v-else-if="dialogMsgList.length === 0" class="nothing">{{$L('暂无消息')}}</li>
|
||||||
<li v-for="(item, key) in dialogMsgList" :key="key" :class="{self:item.userid == userId}">
|
<li v-for="(item, key) in dialogMsgList" :key="key" :class="{self:item.userid == userId}">
|
||||||
<div class="dialog-avatar">
|
<div class="dialog-avatar">
|
||||||
@ -101,7 +102,14 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
computed: {
|
computed: {
|
||||||
...mapState(['userId', 'dialogId', 'dialogDetail', 'dialogMsgLoad', 'dialogMsgList']),
|
...mapState([
|
||||||
|
'userId',
|
||||||
|
'dialogId',
|
||||||
|
'dialogDetail',
|
||||||
|
'dialogMsgLoad',
|
||||||
|
'dialogMsgList',
|
||||||
|
'dialogMsgHasMorePages',
|
||||||
|
]),
|
||||||
|
|
||||||
peopleNum() {
|
peopleNum() {
|
||||||
return this.dialogDetail.type === 'group' ? $A.runNum(this.dialogDetail.people) : 0;
|
return this.dialogDetail.type === 'group' ? $A.runNum(this.dialogDetail.people) : 0;
|
||||||
|
72
resources/assets/js/store/actions.js
vendored
72
resources/assets/js/store/actions.js
vendored
@ -842,9 +842,10 @@ export default {
|
|||||||
* 获取会话消息
|
* 获取会话消息
|
||||||
* @param state
|
* @param state
|
||||||
* @param dispatch
|
* @param dispatch
|
||||||
|
* @param commit
|
||||||
* @param dialog_id
|
* @param dialog_id
|
||||||
*/
|
*/
|
||||||
getDialogMsgList({state, dispatch}, dialog_id) {
|
getDialogMsgList({state, dispatch, commit}, dialog_id) {
|
||||||
if (state.method.runNum(dialog_id) === 0) {
|
if (state.method.runNum(dialog_id) === 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -853,6 +854,8 @@ export default {
|
|||||||
}
|
}
|
||||||
//
|
//
|
||||||
state.dialogMsgList = [];
|
state.dialogMsgList = [];
|
||||||
|
state.dialogMsgCurrentPage = 1;
|
||||||
|
state.dialogMsgHasMorePages = false;
|
||||||
if (state.method.isJson(state.cacheDialogMsg[dialog_id])) {
|
if (state.method.isJson(state.cacheDialogMsg[dialog_id])) {
|
||||||
let length = state.cacheDialogMsg[dialog_id].data.length;
|
let length = state.cacheDialogMsg[dialog_id].data.length;
|
||||||
if (length > 50) {
|
if (length > 50) {
|
||||||
@ -873,38 +876,56 @@ export default {
|
|||||||
url: 'dialog/msg/lists',
|
url: 'dialog/msg/lists',
|
||||||
data: {
|
data: {
|
||||||
dialog_id: dialog_id,
|
dialog_id: dialog_id,
|
||||||
|
page: state.dialogMsgCurrentPage
|
||||||
},
|
},
|
||||||
}).then(result => {
|
}).then(result => {
|
||||||
state.dialogMsgLoad--;
|
state.dialogMsgLoad--;
|
||||||
state.cacheDialogMsg[dialog_id + "::load"] = false;
|
state.cacheDialogMsg[dialog_id + "::load"] = false;
|
||||||
const dialog = result.data.dialog;
|
const data = result.data;
|
||||||
const reverse = result.data.data.reverse();
|
|
||||||
// 更新缓存
|
// 更新缓存
|
||||||
state.cacheDialogMsg[dialog_id] = {
|
state.cacheDialogMsg[dialog_id] = {
|
||||||
dialog,
|
dialog: data.dialog,
|
||||||
data: reverse,
|
data: data.data.reverse(),
|
||||||
};
|
};
|
||||||
state.method.setStorage("cacheDialogMsg", state.cacheDialogMsg);
|
state.method.setStorage("cacheDialogMsg", state.cacheDialogMsg);
|
||||||
// 更新当前会话消息
|
// 更新当前会话消息
|
||||||
if (state.dialogId == dialog_id) {
|
commit("dialogMsgListSuccess", data);
|
||||||
state.dialogDetail = dialog;
|
|
||||||
reverse.forEach((item) => {
|
|
||||||
let index = state.dialogMsgList.findIndex(({id}) => id == item.id);
|
|
||||||
if (index === -1) {
|
|
||||||
state.dialogMsgList.push(item);
|
|
||||||
} else {
|
|
||||||
state.dialogMsgList.splice(index, 1, item);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
// 更新会话数据
|
|
||||||
dispatch("saveDialog", dialog);
|
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
state.dialogMsgLoad--;
|
state.dialogMsgLoad--;
|
||||||
state.cacheDialogMsg[dialog_id + "::load"] = false;
|
state.cacheDialogMsg[dialog_id + "::load"] = false;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取下一页会话消息
|
||||||
|
* @param state
|
||||||
|
* @param dispatch
|
||||||
|
* @param commit
|
||||||
|
*/
|
||||||
|
getDialogMsgListNextPage({state, dispatch, commit}) {
|
||||||
|
if (!state.dialogMsgHasMorePages) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
state.dialogMsgHasMorePages = false;
|
||||||
|
state.dialogMsgCurrentPage++;
|
||||||
|
//
|
||||||
|
const dialog_id = state.dialogId;
|
||||||
|
//
|
||||||
|
state.dialogMsgLoad++;
|
||||||
|
dispatch("call", {
|
||||||
|
url: 'dialog/msg/lists',
|
||||||
|
data: {
|
||||||
|
dialog_id: dialog_id,
|
||||||
|
page: state.dialogMsgCurrentPage
|
||||||
|
},
|
||||||
|
}).then(result => {
|
||||||
|
state.dialogMsgLoad--;
|
||||||
|
commit("dialogMsgListSuccess", result.data);
|
||||||
|
}).catch(() => {
|
||||||
|
state.dialogMsgLoad--;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取未读信息
|
* 获取未读信息
|
||||||
* @param state
|
* @param state
|
||||||
@ -974,13 +995,14 @@ export default {
|
|||||||
if (!state.method.isJson(msgData.r)) msgData.r = {};
|
if (!state.method.isJson(msgData.r)) msgData.r = {};
|
||||||
//
|
//
|
||||||
const {id, dialog_id, r} = msgData;
|
const {id, dialog_id, r} = msgData;
|
||||||
if (!r.read_at) {
|
if (r.read_at) {
|
||||||
r.read_at = state.method.formatDate('Y-m-d H:i:s');
|
return;
|
||||||
let dialog = state.dialogList.find(({id}) => id == dialog_id);
|
}
|
||||||
if (dialog && dialog.unread > 0) {
|
r.read_at = state.method.formatDate('Y-m-d H:i:s');
|
||||||
dialog.unread--
|
let dialog = state.dialogList.find(({id}) => id == dialog_id);
|
||||||
state.dialogMsgUnread--;
|
if (dialog && dialog.unread > 0) {
|
||||||
}
|
dialog.unread--
|
||||||
|
state.dialogMsgUnread--;
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
state.wsReadWaitList.push(id);
|
state.wsReadWaitList.push(id);
|
||||||
|
29
resources/assets/js/store/mutations.js
vendored
29
resources/assets/js/store/mutations.js
vendored
@ -177,5 +177,32 @@ export default {
|
|||||||
state.calendarTask.splice(index, 1)
|
state.calendarTask.splice(index, 1)
|
||||||
}
|
}
|
||||||
this.dispatch("getProjectBasic", {id: data.project_id});
|
this.dispatch("getProjectBasic", {id: data.project_id});
|
||||||
}
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 会话消息列表
|
||||||
|
* @param state
|
||||||
|
* @param data
|
||||||
|
*/
|
||||||
|
dialogMsgListSuccess(state, data) {
|
||||||
|
const dialog = data.dialog;
|
||||||
|
const list = data.data;
|
||||||
|
// 更新当前会话消息
|
||||||
|
if (state.dialogId == dialog.id) {
|
||||||
|
state.dialogDetail = dialog;
|
||||||
|
list.forEach((item) => {
|
||||||
|
let index = state.dialogMsgList.findIndex(({id}) => id == item.id);
|
||||||
|
if (index === -1) {
|
||||||
|
state.dialogMsgList.unshift(item);
|
||||||
|
} else {
|
||||||
|
state.dialogMsgList.splice(index, 1, item);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 页数数据
|
||||||
|
state.dialogMsgCurrentPage = data.current_page;
|
||||||
|
state.dialogMsgHasMorePages = data.current_page < data.last_page;
|
||||||
|
// 更新会话数据
|
||||||
|
this.dispatch("saveDialog", dialog);
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
4
resources/assets/js/store/state.js
vendored
4
resources/assets/js/store/state.js
vendored
@ -281,9 +281,11 @@ state.calendarTask = [];
|
|||||||
state.dialogId = 0;
|
state.dialogId = 0;
|
||||||
state.dialogList = [];
|
state.dialogList = [];
|
||||||
state.dialogDetail = {};
|
state.dialogDetail = {};
|
||||||
|
state.dialogMsgUnread = 0;
|
||||||
state.dialogMsgLoad = 0;
|
state.dialogMsgLoad = 0;
|
||||||
state.dialogMsgList = [];
|
state.dialogMsgList = [];
|
||||||
state.dialogMsgUnread = 0;
|
state.dialogMsgCurrentPage = 1;
|
||||||
|
state.dialogMsgHasMorePages = false;
|
||||||
|
|
||||||
// 任务优先级
|
// 任务优先级
|
||||||
state.taskPriority = [];
|
state.taskPriority = [];
|
||||||
|
@ -175,6 +175,18 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
&.history {
|
||||||
|
cursor: pointer;
|
||||||
|
justify-content: center;
|
||||||
|
font-size: 13px;
|
||||||
|
padding: 3px 0;
|
||||||
|
margin: 12px 0;
|
||||||
|
opacity: 0.6;
|
||||||
|
transition: opacity 0.2s;
|
||||||
|
&:hover {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
&.loading {
|
&.loading {
|
||||||
padding: 12px 0;
|
padding: 12px 0;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user