适配 手机/平板端

This commit is contained in:
kuaifan 2021-09-21 10:39:35 +08:00
parent af28eaaace
commit 318d92c759
10 changed files with 132 additions and 12 deletions

42
public/css/app.css vendored
View File

@ -7041,6 +7041,9 @@ body .ivu-drawer-bottom .ivu-drawer-content .ivu-drawer-close .ivu-icon {
} }
@media (max-width: 768px) { @media (max-width: 768px) {
.page-project .project-list {
height: auto;
}
.page-project .project-dialog { .page-project .project-dialog {
position: absolute; position: absolute;
top: 0; top: 0;
@ -9451,8 +9454,11 @@ body .ivu-drawer-bottom .ivu-drawer-content .ivu-drawer-close .ivu-icon {
flex: 1; flex: 1;
display: flex; display: flex;
align-items: center; align-items: center;
padding-left: 18px; margin-left: 18px;
font-size: 12px; font-size: 12px;
width: 0;
height: 40px;
overflow: auto;
} }
.task-detail .task-info .head .nav > p { .task-detail .task-info .head .nav > p {
@ -9461,6 +9467,12 @@ body .ivu-drawer-bottom .ivu-drawer-content .ivu-drawer-close .ivu-icon {
padding-right: 5px; padding-right: 5px;
} }
.task-detail .task-info .head .nav > p > span {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.task-detail .task-info .head .nav > p:after { .task-detail .task-info .head .nav > p:after {
content: "/"; content: "/";
padding-left: 5px; padding-left: 5px;
@ -9880,6 +9892,8 @@ body .ivu-drawer-bottom .ivu-drawer-content .ivu-drawer-close .ivu-icon {
} }
.task-detail .task-dialog .no-dialog .no-input { .task-detail .task-dialog .no-dialog .no-input {
display: flex;
align-items: center;
margin: 32px 0 0 36px; margin: 32px 0 0 36px;
background-color: #F4F5F7; background-color: #F4F5F7;
padding: 10px 12px; padding: 10px 12px;
@ -9896,6 +9910,10 @@ body .ivu-drawer-bottom .ivu-drawer-content .ivu-drawer-close .ivu-icon {
box-shadow: none; box-shadow: none;
} }
.task-detail .task-dialog .no-dialog .no-input .no-send {
display: none;
}
.task-detail .task-dialog .project-log { .task-detail .task-dialog .project-log {
margin-left: 36px; margin-left: 36px;
} }
@ -10059,6 +10077,28 @@ body .ivu-drawer-bottom .ivu-drawer-content .ivu-drawer-close .ivu-icon {
transform: scale(0.9); transform: scale(0.9);
} }
@media (max-width: 768px) {
.task-detail .task-dialog .no-dialog .no-input {
position: relative;
padding-right: 52px;
}
.task-detail .task-dialog .no-dialog .no-input .no-send {
position: absolute;
top: 0;
right: 0;
bottom: 0;
font-size: 18px;
width: 46px;
display: flex;
align-items: center;
justify-content: center;
}
.task-detail .task-dialog .no-dialog .no-input .no-send .common-loading {
width: 20px;
height: 20px;
}
}
.task-priority { .task-priority {
font-size: 13px; font-size: 13px;
display: inline-block; display: inline-block;

2
public/js/app.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1
public/js/build/400.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -157,8 +157,12 @@ export default {
watch: { watch: {
'$route': { '$route': {
handler (route) { handler (route) {
if (route.query && route.query.msg && this.msgText == '') { if (route.query && route.query.sendmsg && this.msgText == '') {
this.msgText = route.query.msg; let query = $A.cloneJSON(route.query);
delete query.sendmsg;
this.goForward({query}, true);
this.msgText = route.query.sendmsg;
this.$nextTick(this.sendMsg);
} }
}, },
immediate: true immediate: true

View File

@ -96,9 +96,9 @@
<Icon v-if="taskDetail.complete_at" class="icon completed" type="md-checkmark-circle" @click="updateData('uncomplete')"/> <Icon v-if="taskDetail.complete_at" class="icon completed" type="md-checkmark-circle" @click="updateData('uncomplete')"/>
<Icon v-else class="icon" type="md-radio-button-off" @click="updateData('complete')"/> <Icon v-else class="icon" type="md-radio-button-off" @click="updateData('complete')"/>
<div class="nav"> <div class="nav">
<p v-if="projectName">{{projectName}}</p> <p v-if="projectName"><span>{{projectName}}</span></p>
<p v-if="columnName">{{columnName}}</p> <p v-if="columnName"><span>{{columnName}}</span></p>
<p v-if="taskDetail.id">{{taskDetail.id}}</p> <p v-if="taskDetail.id"><span>{{taskDetail.id}}</span></p>
</div> </div>
<Poptip <Poptip
v-if="getOwner.length === 0" v-if="getOwner.length === 0"
@ -387,6 +387,10 @@
:maxlength="255" :maxlength="255"
:placeholder="$L('输入消息...')" :placeholder="$L('输入消息...')"
@on-keydown="msgKeydown"/> @on-keydown="msgKeydown"/>
<div class="no-send" @click="openSend">
<Loading v-if="sendLoad"/>
<Icon v-else type="md-send" />
</div>
</div> </div>
</div> </div>
</div> </div>
@ -448,6 +452,8 @@ export default {
msgText: '', msgText: '',
navActive: 'dialog', navActive: 'dialog',
sendLoad: false,
taskPlugins: [ taskPlugins: [
'advlist autolink lists link image charmap print preview hr anchor pagebreak imagetools', 'advlist autolink lists link image charmap print preview hr anchor pagebreak imagetools',
'searchreplace visualblocks visualchars code', 'searchreplace visualblocks visualchars code',
@ -1099,7 +1105,7 @@ export default {
this.$store.dispatch("getDialogOne", data.dialog_id); this.$store.dispatch("getDialogOne", data.dialog_id);
this.$nextTick(() => { this.$nextTick(() => {
if (this.$store.state.windowMax768) { if (this.$store.state.windowMax768) {
this.goForward({path: '/manage/messenger', query: {msg: this.msgText}}); this.goForward({path: '/manage/messenger', query: {sendmsg: this.msgText}});
this.$store.state.method.setStorage("messenger::dialogId", data.dialog_id) this.$store.state.method.setStorage("messenger::dialogId", data.dialog_id)
this.$store.state.dialogOpenId = data.dialog_id; this.$store.state.dialogOpenId = data.dialog_id;
this.$store.dispatch('openTask', 0); this.$store.dispatch('openTask', 0);
@ -1113,6 +1119,32 @@ export default {
}); });
}, },
openSend() {
if (this.sendLoad) {
return;
}
this.sendLoad = true;
this.$store.dispatch("call", {
url: 'project/task/dialog',
data: {
task_id: this.taskDetail.id,
},
}).then(({data}) => {
this.sendLoad = false;
this.$store.dispatch("saveTask", data);
this.$store.dispatch("getDialogOne", data.dialog_id);
this.$nextTick(() => {
this.goForward({path: '/manage/messenger', query: {sendmsg: this.msgText}});
this.$store.state.method.setStorage("messenger::dialogId", data.dialog_id)
this.$store.state.dialogOpenId = data.dialog_id;
this.$store.dispatch('openTask', 0);
});
}).catch(({msg}) => {
this.sendLoad = false;
$A.modalError(msg);
});
},
deleteFile(file) { deleteFile(file) {
this.$set(file, '_deling', false); this.$set(file, '_deling', false);
this.$store.dispatch("forgetTaskFile", file.id) this.$store.dispatch("forgetTaskFile", file.id)

View File

@ -35,12 +35,20 @@
flex: 1; flex: 1;
display: flex; display: flex;
align-items: center; align-items: center;
padding-left: 18px; margin-left: 18px;
font-size: 12px; font-size: 12px;
width: 0;
height: 40px;
overflow: auto;
> p { > p {
display: flex; display: flex;
align-items: center; align-items: center;
padding-right: 5px; padding-right: 5px;
> span {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap
}
&:after { &:after {
content: "/"; content: "/";
padding-left: 5px; padding-left: 5px;
@ -401,6 +409,8 @@
margin-left: 36px; margin-left: 36px;
} }
.no-input { .no-input {
display: flex;
align-items: center;
margin: 32px 0 0 36px; margin: 32px 0 0 36px;
background-color: #F4F5F7; background-color: #F4F5F7;
padding: 10px 12px; padding: 10px 12px;
@ -413,6 +423,9 @@
box-shadow: none; box-shadow: none;
} }
} }
.no-send {
display: none;
}
} }
} }
.project-log { .project-log {
@ -570,3 +583,31 @@
transform: scale(0.9); transform: scale(0.9);
} }
} }
@media (max-width: 768px) {
.task-detail {
.task-dialog {
.no-dialog {
.no-input {
position: relative;
padding-right: 52px;
.no-send {
position: absolute;
top: 0;
right: 0;
bottom: 0;
font-size: 18px;
width: 46px;
display: flex;
align-items: center;
justify-content: center;
.common-loading {
width: 20px;
height: 20px;
}
}
}
}
}
}
}

View File

@ -20,6 +20,9 @@
@media (max-width: 768px) { @media (max-width: 768px) {
.page-project { .page-project {
.project-list {
height: auto;
}
.project-dialog { .project-dialog {
position: absolute; position: absolute;
top: 0; top: 0;