no message
This commit is contained in:
parent
6a0bc37645
commit
14a645472d
@ -139,7 +139,7 @@ class ProjectController extends AbstractController
|
||||
'desc' => $desc,
|
||||
'userid' => $user->userid,
|
||||
]);
|
||||
return AbstractModel::transaction(function() use ($insertColumns, $project) {
|
||||
AbstractModel::transaction(function() use ($insertColumns, $project) {
|
||||
$project->save();
|
||||
ProjectUser::createInstance([
|
||||
'project_id' => $project->id,
|
||||
@ -150,11 +150,12 @@ class ProjectController extends AbstractController
|
||||
$column['project_id'] = $project->id;
|
||||
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: {
|
||||
...mapState(['userId']),
|
||||
|
||||
@ -94,11 +90,16 @@ export default {
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
msgRead() {
|
||||
this.$store.dispatch("dialogMsgRead", this.msgData);
|
||||
},
|
||||
watch: {
|
||||
msgData: {
|
||||
handler(data) {
|
||||
this.$store.dispatch("dialogMsgRead", data);
|
||||
},
|
||||
immediate: true,
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
popperShow() {
|
||||
this.$store.dispatch("call", {
|
||||
url: 'dialog/msg/readlist',
|
||||
|
@ -28,7 +28,8 @@
|
||||
static>
|
||||
<div ref="manageList" class="dialog-list">
|
||||
<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-for="(item, key) in dialogMsgList" :key="key" :class="{self:item.userid == userId}">
|
||||
<div class="dialog-avatar">
|
||||
@ -101,7 +102,14 @@ export default {
|
||||
},
|
||||
|
||||
computed: {
|
||||
...mapState(['userId', 'dialogId', 'dialogDetail', 'dialogMsgLoad', 'dialogMsgList']),
|
||||
...mapState([
|
||||
'userId',
|
||||
'dialogId',
|
||||
'dialogDetail',
|
||||
'dialogMsgLoad',
|
||||
'dialogMsgList',
|
||||
'dialogMsgHasMorePages',
|
||||
]),
|
||||
|
||||
peopleNum() {
|
||||
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 dispatch
|
||||
* @param commit
|
||||
* @param dialog_id
|
||||
*/
|
||||
getDialogMsgList({state, dispatch}, dialog_id) {
|
||||
getDialogMsgList({state, dispatch, commit}, dialog_id) {
|
||||
if (state.method.runNum(dialog_id) === 0) {
|
||||
return;
|
||||
}
|
||||
@ -853,6 +854,8 @@ export default {
|
||||
}
|
||||
//
|
||||
state.dialogMsgList = [];
|
||||
state.dialogMsgCurrentPage = 1;
|
||||
state.dialogMsgHasMorePages = false;
|
||||
if (state.method.isJson(state.cacheDialogMsg[dialog_id])) {
|
||||
let length = state.cacheDialogMsg[dialog_id].data.length;
|
||||
if (length > 50) {
|
||||
@ -873,38 +876,56 @@ export default {
|
||||
url: 'dialog/msg/lists',
|
||||
data: {
|
||||
dialog_id: dialog_id,
|
||||
page: state.dialogMsgCurrentPage
|
||||
},
|
||||
}).then(result => {
|
||||
state.dialogMsgLoad--;
|
||||
state.cacheDialogMsg[dialog_id + "::load"] = false;
|
||||
const dialog = result.data.dialog;
|
||||
const reverse = result.data.data.reverse();
|
||||
const data = result.data;
|
||||
// 更新缓存
|
||||
state.cacheDialogMsg[dialog_id] = {
|
||||
dialog,
|
||||
data: reverse,
|
||||
dialog: data.dialog,
|
||||
data: data.data.reverse(),
|
||||
};
|
||||
state.method.setStorage("cacheDialogMsg", state.cacheDialogMsg);
|
||||
// 更新当前会话消息
|
||||
if (state.dialogId == dialog_id) {
|
||||
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);
|
||||
commit("dialogMsgListSuccess", data);
|
||||
}).catch(() => {
|
||||
state.dialogMsgLoad--;
|
||||
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
|
||||
@ -974,13 +995,14 @@ export default {
|
||||
if (!state.method.isJson(msgData.r)) msgData.r = {};
|
||||
//
|
||||
const {id, dialog_id, r} = msgData;
|
||||
if (!r.read_at) {
|
||||
r.read_at = state.method.formatDate('Y-m-d H:i:s');
|
||||
let dialog = state.dialogList.find(({id}) => id == dialog_id);
|
||||
if (dialog && dialog.unread > 0) {
|
||||
dialog.unread--
|
||||
state.dialogMsgUnread--;
|
||||
}
|
||||
if (r.read_at) {
|
||||
return;
|
||||
}
|
||||
r.read_at = state.method.formatDate('Y-m-d H:i:s');
|
||||
let dialog = state.dialogList.find(({id}) => id == dialog_id);
|
||||
if (dialog && dialog.unread > 0) {
|
||||
dialog.unread--
|
||||
state.dialogMsgUnread--;
|
||||
}
|
||||
//
|
||||
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)
|
||||
}
|
||||
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.dialogList = [];
|
||||
state.dialogDetail = {};
|
||||
state.dialogMsgUnread = 0;
|
||||
state.dialogMsgLoad = 0;
|
||||
state.dialogMsgList = [];
|
||||
state.dialogMsgUnread = 0;
|
||||
state.dialogMsgCurrentPage = 1;
|
||||
state.dialogMsgHasMorePages = false;
|
||||
|
||||
// 任务优先级
|
||||
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 {
|
||||
padding: 12px 0;
|
||||
justify-content: center;
|
||||
|
Loading…
x
Reference in New Issue
Block a user