no message
This commit is contained in:
parent
e5be23d992
commit
e0e2318e2f
@ -187,8 +187,8 @@ class ProjectController extends AbstractController
|
|||||||
}
|
}
|
||||||
//
|
//
|
||||||
if ($project->name != $name) {
|
if ($project->name != $name) {
|
||||||
$project->name = $name;
|
|
||||||
$project->addLog("修改项目名称:{$project->name} => {$name}");
|
$project->addLog("修改项目名称:{$project->name} => {$name}");
|
||||||
|
$project->name = $name;
|
||||||
}
|
}
|
||||||
if ($project->desc != $desc) {
|
if ($project->desc != $desc) {
|
||||||
$project->desc = $desc;
|
$project->desc = $desc;
|
||||||
@ -511,6 +511,7 @@ class ProjectController extends AbstractController
|
|||||||
//
|
//
|
||||||
$list = $builder
|
$list = $builder
|
||||||
->join('project_task_users', 'project_tasks.id', '=', 'project_task_users.task_pid')
|
->join('project_task_users', 'project_tasks.id', '=', 'project_task_users.task_pid')
|
||||||
|
->whereNull('project_tasks.archived_at')
|
||||||
->where('project_tasks.parent_id', 0)
|
->where('project_tasks.parent_id', 0)
|
||||||
->where('project_task_users.userid', $user->userid)
|
->where('project_task_users.userid', $user->userid)
|
||||||
->orderByDesc('project_tasks.id')
|
->orderByDesc('project_tasks.id')
|
||||||
|
@ -356,8 +356,8 @@ class ProjectTask extends AbstractModel
|
|||||||
} elseif (mb_strlen($data['name']) > 255) {
|
} elseif (mb_strlen($data['name']) > 255) {
|
||||||
throw new ApiException('任务描述最多只能设置255个字');
|
throw new ApiException('任务描述最多只能设置255个字');
|
||||||
}
|
}
|
||||||
$this->name = $data['name'];
|
|
||||||
$this->addLog("修改{任务}标题:{$this->name} => {$data['name']}");
|
$this->addLog("修改{任务}标题:{$this->name} => {$data['name']}");
|
||||||
|
$this->name = $data['name'];
|
||||||
}
|
}
|
||||||
// 负责人
|
// 负责人
|
||||||
if (Arr::exists($data, 'owner')) {
|
if (Arr::exists($data, 'owner')) {
|
||||||
@ -420,8 +420,8 @@ class ProjectTask extends AbstractModel
|
|||||||
}
|
}
|
||||||
// 背景色
|
// 背景色
|
||||||
if (Arr::exists($data, 'color') && $this->color != $data['color']) {
|
if (Arr::exists($data, 'color') && $this->color != $data['color']) {
|
||||||
$this->color = $data['color'];
|
|
||||||
$this->addLog("修改任务背景色:{$this->color} => {$data['color']}");
|
$this->addLog("修改任务背景色:{$this->color} => {$data['color']}");
|
||||||
|
$this->color = $data['color'];
|
||||||
}
|
}
|
||||||
// 内容
|
// 内容
|
||||||
if (Arr::exists($data, 'content')) {
|
if (Arr::exists($data, 'content')) {
|
||||||
|
@ -45,7 +45,7 @@
|
|||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</ScrollerY>
|
</ScrollerY>
|
||||||
<div :class="['dialog-footer', msgNew > 0 && dialogMsgList.length > 0 ? 'newmsg' : '']">
|
<div :class="['dialog-footer', msgNew > 0 && dialogMsgList.length > 0 ? 'newmsg' : '']" @click="onActive">
|
||||||
<div class="dialog-newmsg" @click="goNewBottom">{{$L('有' + msgNew + '条新消息')}}</div>
|
<div class="dialog-newmsg" @click="goNewBottom">{{$L('有' + msgNew + '条新消息')}}</div>
|
||||||
<DragInput
|
<DragInput
|
||||||
ref="input"
|
ref="input"
|
||||||
@ -162,6 +162,8 @@ export default {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
this.autoBottom = true;
|
this.autoBottom = true;
|
||||||
|
this.$store.commit("dialogMoveToTop", this.dialogId);
|
||||||
|
this.onActive();
|
||||||
//
|
//
|
||||||
this.$store.dispatch("call", {
|
this.$store.dispatch("call", {
|
||||||
url: 'dialog/msg/sendtext',
|
url: 'dialog/msg/sendtext',
|
||||||
@ -237,6 +239,9 @@ export default {
|
|||||||
userid: this.userId,
|
userid: this.userId,
|
||||||
msg: { },
|
msg: { },
|
||||||
});
|
});
|
||||||
|
this.autoBottom = true;
|
||||||
|
this.$store.commit("dialogMoveToTop", this.dialogId);
|
||||||
|
this.onActive();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'error':
|
case 'error':
|
||||||
@ -260,6 +265,9 @@ export default {
|
|||||||
this.autoBottom = false;
|
this.autoBottom = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (res.scale === 1) {
|
||||||
|
this.autoBottom = true;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
goBottom() {
|
goBottom() {
|
||||||
@ -282,6 +290,10 @@ export default {
|
|||||||
this.$emit("on-blur", e)
|
this.$emit("on-blur", e)
|
||||||
},
|
},
|
||||||
|
|
||||||
|
onActive() {
|
||||||
|
this.$emit("on-active");
|
||||||
|
},
|
||||||
|
|
||||||
formatTime(date) {
|
formatTime(date) {
|
||||||
let time = Math.round(new Date(date).getTime() / 1000),
|
let time = Math.round(new Date(date).getTime() / 1000),
|
||||||
string = '';
|
string = '';
|
||||||
|
@ -59,8 +59,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="messenger-msg" @click="scrollIntoActive">
|
<div class="messenger-msg">
|
||||||
<DialogWrapper v-if="dialogId > 0"/>
|
<DialogWrapper v-if="dialogId > 0" @on-active="scrollIntoActive"/>
|
||||||
<div v-else class="dialog-no">
|
<div v-else class="dialog-no">
|
||||||
<div class="dialog-no-icon"><Icon type="ios-chatbubbles" /></div>
|
<div class="dialog-no-icon"><Icon type="ios-chatbubbles" /></div>
|
||||||
<div class="dialog-no-text">{{$L('选择一个会话开始聊天')}}</div>
|
<div class="dialog-no-text">{{$L('选择一个会话开始聊天')}}</div>
|
||||||
|
14
resources/assets/js/store/actions.js
vendored
14
resources/assets/js/store/actions.js
vendored
@ -885,7 +885,7 @@ export default {
|
|||||||
// 更新缓存
|
// 更新缓存
|
||||||
state.cacheDialogMsg[dialog_id] = {
|
state.cacheDialogMsg[dialog_id] = {
|
||||||
dialog: data.dialog,
|
dialog: data.dialog,
|
||||||
data: data.data.reverse(),
|
data: [],
|
||||||
};
|
};
|
||||||
state.method.setStorage("cacheDialogMsg", state.cacheDialogMsg);
|
state.method.setStorage("cacheDialogMsg", state.cacheDialogMsg);
|
||||||
// 更新当前会话消息
|
// 更新当前会话消息
|
||||||
@ -958,9 +958,10 @@ export default {
|
|||||||
/**
|
/**
|
||||||
* 根据消息ID 删除 或 替换 会话数据
|
* 根据消息ID 删除 或 替换 会话数据
|
||||||
* @param state
|
* @param state
|
||||||
|
* @param commit
|
||||||
* @param params {id, data}
|
* @param params {id, data}
|
||||||
*/
|
*/
|
||||||
dialogMsgUpdate({state}, params) {
|
dialogMsgUpdate({state, commit}, params) {
|
||||||
let {id, data} = params;
|
let {id, data} = params;
|
||||||
if (!id) {
|
if (!id) {
|
||||||
return;
|
return;
|
||||||
@ -978,6 +979,7 @@ export default {
|
|||||||
if (index > -1) {
|
if (index > -1) {
|
||||||
if (data) {
|
if (data) {
|
||||||
state.dialogMsgList.splice(index, 1, state.method.cloneJSON(data));
|
state.dialogMsgList.splice(index, 1, state.method.cloneJSON(data));
|
||||||
|
commit("dialogMsgListStorageCurrent");
|
||||||
// 是最后一条消息时更新会话 last_msg
|
// 是最后一条消息时更新会话 last_msg
|
||||||
if (state.dialogMsgList.length - 1 == index) {
|
if (state.dialogMsgList.length - 1 == index) {
|
||||||
const dialog = state.dialogList.find(({id}) => id == data.dialog_id);
|
const dialog = state.dialogList.find(({id}) => id == data.dialog_id);
|
||||||
@ -1116,6 +1118,7 @@ export default {
|
|||||||
} else {
|
} else {
|
||||||
state.dialogMsgList.splice(index, 1, data);
|
state.dialogMsgList.splice(index, 1, data);
|
||||||
}
|
}
|
||||||
|
commit("dialogMsgListStorageCurrent");
|
||||||
}
|
}
|
||||||
if (mode === "add2") {
|
if (mode === "add2") {
|
||||||
return;
|
return;
|
||||||
@ -1133,12 +1136,7 @@ export default {
|
|||||||
// 新增未读数
|
// 新增未读数
|
||||||
if (data.userid !== state.userId) dialog.unread++;
|
if (data.userid !== state.userId) dialog.unread++;
|
||||||
// 移动到首位
|
// 移动到首位
|
||||||
const index = state.dialogList.findIndex(({id}) => id == dialog_id);
|
commit("dialogMoveToTop", dialog_id);
|
||||||
if (index > -1) {
|
|
||||||
const tmp = state.method.cloneJSON(state.dialogList[index]);
|
|
||||||
state.dialogList.splice(index, 1);
|
|
||||||
state.dialogList.unshift(tmp);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// 新增任务消息数量
|
// 新增任务消息数量
|
||||||
state.projectDetail.project_column.some(({project_task}) => {
|
state.projectDetail.project_column.some(({project_task}) => {
|
||||||
|
30
resources/assets/js/store/mutations.js
vendored
30
resources/assets/js/store/mutations.js
vendored
@ -187,7 +187,8 @@ export default {
|
|||||||
} else {
|
} else {
|
||||||
state.dialogMsgList.splice(index, 1, item);
|
state.dialogMsgList.splice(index, 1, item);
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
|
this.commit("dialogMsgListStorageCurrent");
|
||||||
}
|
}
|
||||||
// 页数数据
|
// 页数数据
|
||||||
state.dialogMsgCurrentPage = data.current_page;
|
state.dialogMsgCurrentPage = data.current_page;
|
||||||
@ -195,4 +196,31 @@ export default {
|
|||||||
// 更新会话数据
|
// 更新会话数据
|
||||||
this.dispatch("saveDialog", dialog);
|
this.dispatch("saveDialog", dialog);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存当前会话消息
|
||||||
|
* @param state
|
||||||
|
*/
|
||||||
|
dialogMsgListStorageCurrent(state) {
|
||||||
|
if (!state.method.isJson(state.cacheDialogMsg[state.dialogId])) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//
|
||||||
|
state.cacheDialogMsg[state.dialogId].data = state.dialogMsgList;
|
||||||
|
state.method.setStorage("cacheDialogMsg", state.cacheDialogMsg);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将会话移动到首位
|
||||||
|
* @param state
|
||||||
|
* @param dialog_id
|
||||||
|
*/
|
||||||
|
dialogMoveToTop(state, dialog_id) {
|
||||||
|
const index = state.dialogList.findIndex(({id}) => id == dialog_id);
|
||||||
|
if (index > -1) {
|
||||||
|
const tmp = state.method.cloneJSON(state.dialogList[index]);
|
||||||
|
state.dialogList.splice(index, 1);
|
||||||
|
state.dialogList.unshift(tmp);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -490,6 +490,9 @@
|
|||||||
margin-left: 8px;
|
margin-left: 8px;
|
||||||
background-color: #ffffff;
|
background-color: #ffffff;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
|
.logs-activity {
|
||||||
|
padding: 22px 0 0 10px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user