no message
This commit is contained in:
parent
4eee5cced6
commit
d7ce383c36
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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: {
|
||||
|
@ -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 ? '' : ''"></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 ? '' : ''"></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('选择项目负责人')"/>
|
||||
|
@ -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}}
|
||||
|
9
resources/assets/js/store/mutations.js
vendored
9
resources/assets/js/store/mutations.js
vendored
@ -199,6 +199,15 @@ export default {
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 打开任务详情页
|
||||
* @param state
|
||||
* @param task
|
||||
*/
|
||||
openTask(state, task) {
|
||||
state.projectTask = Object.assign({_show:true}, task);
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取用户基本信息
|
||||
* @param state
|
||||
|
1
resources/assets/js/store/state.js
vendored
1
resources/assets/js/store/state.js
vendored
@ -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;
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user