no message
This commit is contained in:
parent
4eee5cced6
commit
d7ce383c36
@ -43,7 +43,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</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-load" v-if="isLoading">{{$L('加载中...')}}</div>
|
||||||
<div class="browse-list" :class="httpType==='input'?'browse-list-disabled':''" ref="browselistbox">
|
<div class="browse-list" :class="httpType==='input'?'browse-list-disabled':''" ref="browselistbox">
|
||||||
<div class="browse-item" v-for="item in browseList" @click="browseItem(item)">
|
<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>
|
<Button v-if="httpType===''" type="primary" @click="handleCallback(true)">{{$L('完成')}}</Button>
|
||||||
</div>
|
</div>
|
||||||
</Modal>
|
</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;">
|
<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>
|
<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>
|
</div>
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
<Icon type="ios-loading" class="upload-control-spin-icon-load"></Icon>
|
<Icon type="ios-loading" class="upload-control-spin-icon-load"></Icon>
|
||||||
<div>{{$L('正在上传文件...')}}</div>
|
<div>{{$L('正在上传文件...')}}</div>
|
||||||
</Spin>
|
</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">
|
<div slot="close">
|
||||||
<Button type="primary" size="small">{{$L('完成')}}</Button>
|
<Button type="primary" size="small">{{$L('完成')}}</Button>
|
||||||
</div>
|
</div>
|
||||||
|
@ -73,8 +73,7 @@
|
|||||||
<Modal
|
<Modal
|
||||||
v-model="addShow"
|
v-model="addShow"
|
||||||
:title="$L('新建项目')"
|
:title="$L('新建项目')"
|
||||||
:mask-closable="false"
|
:mask-closable="false">
|
||||||
class-name="simple-modal">
|
|
||||||
<Form ref="addProject" :model="addData" :rules="addRule" label-width="auto" @submit.native.prevent>
|
<Form ref="addProject" :model="addData" :rules="addRule" label-width="auto" @submit.native.prevent>
|
||||||
<FormItem prop="name" :label="$L('项目名称')">
|
<FormItem prop="name" :label="$L('项目名称')">
|
||||||
<Input type="text" v-model="addData.name"></Input>
|
<Input type="text" v-model="addData.name"></Input>
|
||||||
@ -101,6 +100,14 @@
|
|||||||
<Button type="primary" :loading="loadIng > 0" @click="onAddProject">{{$L('添加')}}</Button>
|
<Button type="primary" :loading="loadIng > 0" @click="onAddProject">{{$L('添加')}}</Button>
|
||||||
</div>
|
</div>
|
||||||
</Modal>
|
</Modal>
|
||||||
|
|
||||||
|
<!--任务详情-->
|
||||||
|
<Modal
|
||||||
|
v-model="projectTask._show"
|
||||||
|
:title="$L('任务详情')"
|
||||||
|
:mask-closable="false">
|
||||||
|
|
||||||
|
</Modal>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -156,7 +163,7 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
computed: {
|
computed: {
|
||||||
...mapState(['userId', 'userInfo', 'dialogMsgUnread', 'projectList']),
|
...mapState(['userId', 'userInfo', 'dialogMsgUnread', 'projectList', 'projectTask']),
|
||||||
},
|
},
|
||||||
|
|
||||||
watch: {
|
watch: {
|
||||||
|
@ -122,72 +122,75 @@
|
|||||||
<div
|
<div
|
||||||
v-for="item in panelTask(column.project_task)"
|
v-for="item in panelTask(column.project_task)"
|
||||||
:class="['task-item task-draggable', item.complete_at ? 'complete' : '']"
|
:class="['task-item task-draggable', item.complete_at ? 'complete' : '']"
|
||||||
:style="item.color ? {backgroundColor: item.color} : {}">
|
:style="item.color ? {backgroundColor: item.color} : {}"
|
||||||
<div :class="['task-head', item.desc ? 'has-desc' : '']">
|
@click="$store.commit('openTask', item)">
|
||||||
<div class="task-title"><pre>{{item.name}}</pre></div>
|
<div :class="['task-head', item.desc ? 'has-desc' : '']">
|
||||||
<div v-if="item.loading === true" class="loading"><Loading /></div>
|
<div class="task-title"><pre>{{item.name}}</pre></div>
|
||||||
<EDropdown
|
<div class="task-menu" @click.stop="">
|
||||||
v-else
|
<div v-if="item.loading === true" class="loading"><Loading /></div>
|
||||||
trigger="click"
|
<EDropdown
|
||||||
size="small"
|
v-else
|
||||||
@command="dropTask(item, $event)">
|
trigger="click"
|
||||||
<Icon type="ios-more" />
|
size="small"
|
||||||
<EDropdownMenu slot="dropdown" class="project-list-more-dropdown-menu">
|
@command="dropTask(item, $event)">
|
||||||
<EDropdownItem v-if="item.complete_at" command="uncomplete">
|
<Icon type="ios-more" />
|
||||||
<div class="item red">
|
<EDropdownMenu slot="dropdown" class="project-list-more-dropdown-menu">
|
||||||
<Icon type="md-checkmark-circle-outline" />{{$L('标记未完成')}}
|
<EDropdownItem v-if="item.complete_at" command="uncomplete">
|
||||||
</div>
|
<div class="item red">
|
||||||
</EDropdownItem>
|
<Icon type="md-checkmark-circle-outline" />{{$L('标记未完成')}}
|
||||||
<EDropdownItem v-else command="complete">
|
</div>
|
||||||
<div class="item">
|
</EDropdownItem>
|
||||||
<Icon type="md-radio-button-off" />{{$L('完成')}}
|
<EDropdownItem v-else command="complete">
|
||||||
</div>
|
<div class="item">
|
||||||
</EDropdownItem>
|
<Icon type="md-radio-button-off" />{{$L('完成')}}
|
||||||
<EDropdownItem command="archived">
|
</div>
|
||||||
<div class="item">
|
</EDropdownItem>
|
||||||
<Icon type="ios-filing" />{{$L('归档')}}
|
<EDropdownItem command="archived">
|
||||||
</div>
|
<div class="item">
|
||||||
</EDropdownItem>
|
<Icon type="ios-filing" />{{$L('归档')}}
|
||||||
<EDropdownItem command="delete">
|
</div>
|
||||||
<div class="item">
|
</EDropdownItem>
|
||||||
<Icon type="md-trash" />{{$L('删除')}}
|
<EDropdownItem command="delete">
|
||||||
</div>
|
<div class="item">
|
||||||
</EDropdownItem>
|
<Icon type="md-trash" />{{$L('删除')}}
|
||||||
<EDropdownItem divided disabled>{{$L('背景色')}}</EDropdownItem>
|
</div>
|
||||||
<EDropdownItem v-for="(c, k) in taskColorList" :key="k" :command="c">
|
</EDropdownItem>
|
||||||
<div class="item">
|
<EDropdownItem divided disabled>{{$L('背景色')}}</EDropdownItem>
|
||||||
<i class="iconfont" :style="{color:c.color||'#f9f9f9'}" v-html="c.color == item.color ? '' : ''"></i>{{$L(c.name)}}
|
<EDropdownItem v-for="(c, k) in taskColorList" :key="k" :command="c">
|
||||||
</div>
|
<div class="item">
|
||||||
</EDropdownItem>
|
<i class="iconfont" :style="{color:c.color||'#f9f9f9'}" v-html="c.color == item.color ? '' : ''"></i>{{$L(c.name)}}
|
||||||
</EDropdownMenu>
|
</div>
|
||||||
</EDropdown>
|
</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>
|
||||||
<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">
|
<div class="task-item">
|
||||||
<TaskAddSimple
|
<TaskAddSimple
|
||||||
:column-id="column.id"
|
:column-id="column.id"
|
||||||
@ -291,8 +294,7 @@
|
|||||||
width: '90%',
|
width: '90%',
|
||||||
maxWidth: '640px'
|
maxWidth: '640px'
|
||||||
}"
|
}"
|
||||||
:mask-closable="false"
|
:mask-closable="false">
|
||||||
class-name="simple-modal">
|
|
||||||
<TaskAdd v-model="addData"/>
|
<TaskAdd v-model="addData"/>
|
||||||
<div slot="footer">
|
<div slot="footer">
|
||||||
<Button type="default" @click="addShow=false">{{$L('取消')}}</Button>
|
<Button type="default" @click="addShow=false">{{$L('取消')}}</Button>
|
||||||
@ -304,8 +306,7 @@
|
|||||||
<Modal
|
<Modal
|
||||||
v-model="settingShow"
|
v-model="settingShow"
|
||||||
:title="$L('项目设置')"
|
:title="$L('项目设置')"
|
||||||
:mask-closable="false"
|
:mask-closable="false">
|
||||||
class-name="simple-modal">
|
|
||||||
<Form ref="addProject" :model="settingData" label-width="auto" @submit.native.prevent>
|
<Form ref="addProject" :model="settingData" label-width="auto" @submit.native.prevent>
|
||||||
<FormItem prop="name" :label="$L('项目名称')">
|
<FormItem prop="name" :label="$L('项目名称')">
|
||||||
<Input type="text" v-model="settingData.name" :maxlength="32" :placeholder="$L('必填')"></Input>
|
<Input type="text" v-model="settingData.name" :maxlength="32" :placeholder="$L('必填')"></Input>
|
||||||
@ -324,8 +325,7 @@
|
|||||||
<Modal
|
<Modal
|
||||||
v-model="userShow"
|
v-model="userShow"
|
||||||
:title="$L('成员管理')"
|
:title="$L('成员管理')"
|
||||||
:mask-closable="false"
|
:mask-closable="false">
|
||||||
class-name="simple-modal">
|
|
||||||
<Form ref="addProject" :model="userData" label-width="auto" @submit.native.prevent>
|
<Form ref="addProject" :model="userData" label-width="auto" @submit.native.prevent>
|
||||||
<FormItem prop="userids" :label="$L('项目成员')">
|
<FormItem prop="userids" :label="$L('项目成员')">
|
||||||
<UserInput v-if="userShow" v-model="userData.userids" :uncancelable="userData.uncancelable" :multiple-max="100" :placeholder="$L('选择项目成员')"/>
|
<UserInput v-if="userShow" v-model="userData.userids" :uncancelable="userData.uncancelable" :multiple-max="100" :placeholder="$L('选择项目成员')"/>
|
||||||
@ -341,8 +341,7 @@
|
|||||||
<Modal
|
<Modal
|
||||||
v-model="transferShow"
|
v-model="transferShow"
|
||||||
:title="$L('移交项目')"
|
:title="$L('移交项目')"
|
||||||
:mask-closable="false"
|
:mask-closable="false">
|
||||||
class-name="simple-modal">
|
|
||||||
<Form ref="addProject" :model="transferData" label-width="auto" @submit.native.prevent>
|
<Form ref="addProject" :model="transferData" label-width="auto" @submit.native.prevent>
|
||||||
<FormItem prop="owner_userid" :label="$L('项目负责人')">
|
<FormItem prop="owner_userid" :label="$L('项目负责人')">
|
||||||
<UserInput v-if="transferShow" v-model="transferData.owner_userid" :multiple-max="1" :placeholder="$L('选择项目负责人')"/>
|
<UserInput v-if="transferShow" v-model="transferData.owner_userid" :multiple-max="1" :placeholder="$L('选择项目负责人')"/>
|
||||||
|
@ -50,7 +50,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</EDropdownMenu>
|
</EDropdownMenu>
|
||||||
</EDropdown>
|
</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)">
|
<div v-if="item.sub_num > 0" class="item-sub-num" @click="getSublist(item)">
|
||||||
<Icon type="md-git-merge" />
|
<Icon type="md-git-merge" />
|
||||||
{{item.sub_complete}}/{{item.sub_num}}
|
{{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
|
* @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.projectLoad = 0;
|
||||||
state.projectList = state.cacheProjectList;
|
state.projectList = state.cacheProjectList;
|
||||||
state.projectDetail = {id: 0, project_column: [], project_user: []};
|
state.projectDetail = {id: 0, project_column: [], project_user: []};
|
||||||
|
state.projectTask = {_show: false, id: 0, task_user: [], task_tag: []};
|
||||||
|
|
||||||
// 会话消息
|
// 会话消息
|
||||||
state.dialogId = 0;
|
state.dialogId = 0;
|
||||||
|
@ -285,7 +285,7 @@
|
|||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
.task-item {
|
.task-item {
|
||||||
list-style: none;
|
cursor: pointer;
|
||||||
margin: 0 10px 16px;
|
margin: 0 10px 16px;
|
||||||
background-color: #ffffff;
|
background-color: #ffffff;
|
||||||
border-radius: 12px;
|
border-radius: 12px;
|
||||||
@ -312,26 +312,30 @@
|
|||||||
word-wrap: break-word;
|
word-wrap: break-word;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.loading,
|
.task-menu {
|
||||||
.ivu-icon {
|
margin-left: 8px;
|
||||||
width: 22px;
|
width: 22px;
|
||||||
height: 22px;
|
height: 22px;
|
||||||
display: flex;
|
.loading,
|
||||||
align-items: center;
|
.ivu-icon {
|
||||||
justify-content: center;
|
width: 22px;
|
||||||
margin-left: 8px;
|
height: 22px;
|
||||||
.common-loading {
|
display: flex;
|
||||||
width: 16px;
|
align-items: center;
|
||||||
height: 16px;
|
justify-content: center;
|
||||||
margin: 0;
|
.common-loading {
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
.ivu-icon {
|
||||||
.ivu-icon {
|
font-size: 22px;
|
||||||
font-size: 22px;
|
color: #777777;
|
||||||
color: #666666;
|
cursor: pointer;
|
||||||
cursor: pointer;
|
&:hover {
|
||||||
&:hover {
|
color: #555555;
|
||||||
color: #555555;
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
&.has-desc {
|
&.has-desc {
|
||||||
@ -551,6 +555,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
.ivu-icon {
|
.ivu-icon {
|
||||||
|
cursor: pointer;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
color: #cccccc;
|
color: #cccccc;
|
||||||
margin-right: 8px;
|
margin-right: 8px;
|
||||||
@ -573,6 +578,7 @@
|
|||||||
.item-title {
|
.item-title {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
padding: 0 22px 0 0;
|
padding: 0 22px 0 0;
|
||||||
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
.item-sub-num {
|
.item-sub-num {
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user