no message

This commit is contained in:
kuaifan 2021-06-10 23:58:05 +08:00
parent 4eee5cced6
commit d7ce383c36
8 changed files with 120 additions and 98 deletions

View File

@ -43,7 +43,7 @@
</div>
</div>
</div>
<Modal :title="$L('浏览图片空间的图片')" v-model="browseVisible" class="img-upload-modal" class-name="simple-modal" width="710">
<Modal :title="$L('浏览图片空间的图片')" v-model="browseVisible" class="img-upload-modal" width="710">
<div class="browse-load" v-if="isLoading">{{$L('加载中...')}}</div>
<div class="browse-list" :class="httpType==='input'?'browse-list-disabled':''" ref="browselistbox">
<div class="browse-item" v-for="item in browseList" @click="browseItem(item)">
@ -66,7 +66,7 @@
<Button v-if="httpType===''" type="primary" @click="handleCallback(true)">{{$L('完成')}}</Button>
</div>
</Modal>
<Modal :title="$L('查看图片')" v-model="visible" class="img-upload-modal" class-name="simple-modal" draggable>
<Modal :title="$L('查看图片')" v-model="visible" class="img-upload-modal" draggable>
<div style="max-height:480px;overflow:auto;">
<a :href="imgVisible" target="_blank"><img :src="imgVisible" v-if="visible" style="max-width:100%;max-height:900px;display:block;margin:0 auto"></a>
</div>

View File

@ -34,7 +34,7 @@
<Icon type="ios-loading" class="upload-control-spin-icon-load"></Icon>
<div>{{$L('正在上传文件...')}}</div>
</Spin>
<Modal v-model="transfer" class="teditor-transfer" @on-visible-change="transferChange" class-name="simple-modal" footer-hide fullscreen transfer>
<Modal v-model="transfer" class="teditor-transfer" @on-visible-change="transferChange" footer-hide fullscreen transfer>
<div slot="close">
<Button type="primary" size="small">{{$L('完成')}}</Button>
</div>

View File

@ -73,8 +73,7 @@
<Modal
v-model="addShow"
:title="$L('新建项目')"
:mask-closable="false"
class-name="simple-modal">
:mask-closable="false">
<Form ref="addProject" :model="addData" :rules="addRule" label-width="auto" @submit.native.prevent>
<FormItem prop="name" :label="$L('项目名称')">
<Input type="text" v-model="addData.name"></Input>
@ -101,6 +100,14 @@
<Button type="primary" :loading="loadIng > 0" @click="onAddProject">{{$L('添加')}}</Button>
</div>
</Modal>
<!--任务详情-->
<Modal
v-model="projectTask._show"
:title="$L('任务详情')"
:mask-closable="false">
</Modal>
</div>
</template>
@ -156,7 +163,7 @@ export default {
},
computed: {
...mapState(['userId', 'userInfo', 'dialogMsgUnread', 'projectList']),
...mapState(['userId', 'userInfo', 'dialogMsgUnread', 'projectList', 'projectTask']),
},
watch: {

View File

@ -122,72 +122,75 @@
<div
v-for="item in panelTask(column.project_task)"
:class="['task-item task-draggable', item.complete_at ? 'complete' : '']"
:style="item.color ? {backgroundColor: item.color} : {}">
<div :class="['task-head', item.desc ? 'has-desc' : '']">
<div class="task-title"><pre>{{item.name}}</pre></div>
<div v-if="item.loading === true" class="loading"><Loading /></div>
<EDropdown
v-else
trigger="click"
size="small"
@command="dropTask(item, $event)">
<Icon type="ios-more" />
<EDropdownMenu slot="dropdown" class="project-list-more-dropdown-menu">
<EDropdownItem v-if="item.complete_at" command="uncomplete">
<div class="item red">
<Icon type="md-checkmark-circle-outline" />{{$L('标记未完成')}}
</div>
</EDropdownItem>
<EDropdownItem v-else command="complete">
<div class="item">
<Icon type="md-radio-button-off" />{{$L('完成')}}
</div>
</EDropdownItem>
<EDropdownItem command="archived">
<div class="item">
<Icon type="ios-filing" />{{$L('归档')}}
</div>
</EDropdownItem>
<EDropdownItem command="delete">
<div class="item">
<Icon type="md-trash" />{{$L('删除')}}
</div>
</EDropdownItem>
<EDropdownItem divided disabled>{{$L('背景色')}}</EDropdownItem>
<EDropdownItem v-for="(c, k) in taskColorList" :key="k" :command="c">
<div class="item">
<i class="iconfont" :style="{color:c.color||'#f9f9f9'}" v-html="c.color == item.color ? '&#xe61d;' : '&#xe61c;'"></i>{{$L(c.name)}}
</div>
</EDropdownItem>
</EDropdownMenu>
</EDropdown>
:style="item.color ? {backgroundColor: item.color} : {}"
@click="$store.commit('openTask', item)">
<div :class="['task-head', item.desc ? 'has-desc' : '']">
<div class="task-title"><pre>{{item.name}}</pre></div>
<div class="task-menu" @click.stop="">
<div v-if="item.loading === true" class="loading"><Loading /></div>
<EDropdown
v-else
trigger="click"
size="small"
@command="dropTask(item, $event)">
<Icon type="ios-more" />
<EDropdownMenu slot="dropdown" class="project-list-more-dropdown-menu">
<EDropdownItem v-if="item.complete_at" command="uncomplete">
<div class="item red">
<Icon type="md-checkmark-circle-outline" />{{$L('标记未完成')}}
</div>
</EDropdownItem>
<EDropdownItem v-else command="complete">
<div class="item">
<Icon type="md-radio-button-off" />{{$L('完成')}}
</div>
</EDropdownItem>
<EDropdownItem command="archived">
<div class="item">
<Icon type="ios-filing" />{{$L('归档')}}
</div>
</EDropdownItem>
<EDropdownItem command="delete">
<div class="item">
<Icon type="md-trash" />{{$L('删除')}}
</div>
</EDropdownItem>
<EDropdownItem divided disabled>{{$L('背景色')}}</EDropdownItem>
<EDropdownItem v-for="(c, k) in taskColorList" :key="k" :command="c">
<div class="item">
<i class="iconfont" :style="{color:c.color||'#f9f9f9'}" v-html="c.color == item.color ? '&#xe61d;' : '&#xe61c;'"></i>{{$L(c.name)}}
</div>
</EDropdownItem>
</EDropdownMenu>
</EDropdown>
</div>
</div>
<div v-if="item.desc" class="task-desc" v-html="item.desc"></div>
<div v-if="item.task_tag.length > 0" class="task-tags">
<Tag v-for="(tag, keyt) in item.task_tag" :key="keyt" :color="tag.color">{{tag.name}}</Tag>
</div>
<div class="task-users">
<ul>
<li v-for="(user, keyu) in item.task_user" :key="keyu">
<UserAvatar :userid="user.userid" size="32" :borderWitdh="2" :borderColor="item.color"/>
</li>
</ul>
<div v-if="item.file_num > 0" class="task-icon">{{item.file_num}}<Icon type="ios-link-outline" /></div>
<div v-if="item.msg_num > 0" class="task-icon">{{item.msg_num}}<Icon type="ios-chatbubbles-outline" /></div>
</div>
<div class="task-progress">
<div v-if="item.sub_num > 0" class="task-sub-num">{{item.sub_complete}}/{{item.sub_num}}</div>
<Progress :percent="item.percent" :stroke-width="6" />
<ETooltip
v-if="item.end_at"
:class="['task-time', item.today ? 'today' : '', item.overdue ? 'overdue' : '']"
:open-delay="600"
:content="item.end_at">
<div v-if="!item.complete_at"><Icon type="ios-time-outline"/>{{ expiresFormat(item.end_at) }}</div>
</ETooltip>
</div>
<em v-if="item.p_name" class="priority-color" :style="{backgroundColor:item.p_color}"></em>
</div>
<div v-if="item.desc" class="task-desc" v-html="item.desc"></div>
<div v-if="item.task_tag.length > 0" class="task-tags">
<Tag v-for="(tag, keyt) in item.task_tag" :key="keyt" :color="tag.color">{{tag.name}}</Tag>
</div>
<div class="task-users">
<ul>
<li v-for="(user, keyu) in item.task_user" :key="keyu">
<UserAvatar :userid="user.userid" size="32" :borderWitdh="2" :borderColor="item.color"/>
</li>
</ul>
<div v-if="item.file_num > 0" class="task-icon">{{item.file_num}}<Icon type="ios-link-outline" /></div>
<div v-if="item.msg_num > 0" class="task-icon">{{item.msg_num}}<Icon type="ios-chatbubbles-outline" /></div>
</div>
<div class="task-progress">
<div v-if="item.sub_num > 0" class="task-sub-num">{{item.sub_complete}}/{{item.sub_num}}</div>
<Progress :percent="item.percent" :stroke-width="6" />
<ETooltip
v-if="item.end_at"
:class="['task-time', item.today ? 'today' : '', item.overdue ? 'overdue' : '']"
:open-delay="600"
:content="item.end_at">
<div v-if="!item.complete_at"><Icon type="ios-time-outline"/>{{ expiresFormat(item.end_at) }}</div>
</ETooltip>
</div>
<em v-if="item.p_name" class="priority-color" :style="{backgroundColor:item.p_color}"></em>
</div>
<div class="task-item">
<TaskAddSimple
:column-id="column.id"
@ -291,8 +294,7 @@
width: '90%',
maxWidth: '640px'
}"
:mask-closable="false"
class-name="simple-modal">
:mask-closable="false">
<TaskAdd v-model="addData"/>
<div slot="footer">
<Button type="default" @click="addShow=false">{{$L('取消')}}</Button>
@ -304,8 +306,7 @@
<Modal
v-model="settingShow"
:title="$L('项目设置')"
:mask-closable="false"
class-name="simple-modal">
:mask-closable="false">
<Form ref="addProject" :model="settingData" label-width="auto" @submit.native.prevent>
<FormItem prop="name" :label="$L('项目名称')">
<Input type="text" v-model="settingData.name" :maxlength="32" :placeholder="$L('必填')"></Input>
@ -324,8 +325,7 @@
<Modal
v-model="userShow"
:title="$L('成员管理')"
:mask-closable="false"
class-name="simple-modal">
:mask-closable="false">
<Form ref="addProject" :model="userData" label-width="auto" @submit.native.prevent>
<FormItem prop="userids" :label="$L('项目成员')">
<UserInput v-if="userShow" v-model="userData.userids" :uncancelable="userData.uncancelable" :multiple-max="100" :placeholder="$L('选择项目成员')"/>
@ -341,8 +341,7 @@
<Modal
v-model="transferShow"
:title="$L('移交项目')"
:mask-closable="false"
class-name="simple-modal">
:mask-closable="false">
<Form ref="addProject" :model="transferData" label-width="auto" @submit.native.prevent>
<FormItem prop="owner_userid" :label="$L('项目负责人')">
<UserInput v-if="transferShow" v-model="transferData.owner_userid" :multiple-max="1" :placeholder="$L('选择项目负责人')"/>

View File

@ -50,7 +50,7 @@
</template>
</EDropdownMenu>
</EDropdown>
<div class="item-title">{{item.name}}</div>
<div class="item-title" @click="$store.commit('openTask', item)">{{item.name}}</div>
<div v-if="item.sub_num > 0" class="item-sub-num" @click="getSublist(item)">
<Icon type="md-git-merge" />
{{item.sub_complete}}/{{item.sub_num}}

View File

@ -199,6 +199,15 @@ export default {
}
},
/**
* 打开任务详情页
* @param state
* @param task
*/
openTask(state, task) {
state.projectTask = Object.assign({_show:true}, task);
},
/**
* 获取用户基本信息
* @param state

View File

@ -184,6 +184,7 @@ state.wsReadWaitList = [];
state.projectLoad = 0;
state.projectList = state.cacheProjectList;
state.projectDetail = {id: 0, project_column: [], project_user: []};
state.projectTask = {_show: false, id: 0, task_user: [], task_tag: []};
// 会话消息
state.dialogId = 0;

View File

@ -285,7 +285,7 @@
flex-direction: column;
}
.task-item {
list-style: none;
cursor: pointer;
margin: 0 10px 16px;
background-color: #ffffff;
border-radius: 12px;
@ -312,26 +312,30 @@
word-wrap: break-word;
}
}
.loading,
.ivu-icon {
.task-menu {
margin-left: 8px;
width: 22px;
height: 22px;
display: flex;
align-items: center;
justify-content: center;
margin-left: 8px;
.common-loading {
width: 16px;
height: 16px;
margin: 0;
.loading,
.ivu-icon {
width: 22px;
height: 22px;
display: flex;
align-items: center;
justify-content: center;
.common-loading {
width: 16px;
height: 16px;
margin: 0;
}
}
}
.ivu-icon {
font-size: 22px;
color: #666666;
cursor: pointer;
&:hover {
color: #555555;
.ivu-icon {
font-size: 22px;
color: #777777;
cursor: pointer;
&:hover {
color: #555555;
}
}
}
&.has-desc {
@ -551,6 +555,7 @@
}
}
.ivu-icon {
cursor: pointer;
font-size: 16px;
color: #cccccc;
margin-right: 8px;
@ -573,6 +578,7 @@
.item-title {
flex: 1;
padding: 0 22px 0 0;
cursor: pointer;
}
.item-sub-num {
flex-shrink: 0;