mirror of
https://github.com/kuaifan/dootask.git
synced 2026-03-17 11:13:26 +00:00
no message
This commit is contained in:
parent
a4a7939eae
commit
94e4054cd4
@ -58,8 +58,8 @@ export default {
|
|||||||
{icon: '', name: 'setting', label: '设置'},
|
{icon: '', name: 'setting', label: '设置'},
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
{icon: '', name: 'addProject', label: '创建项目'},
|
||||||
{icon: '', name: 'addTask', label: '添加任务'},
|
{icon: '', name: 'addTask', label: '添加任务'},
|
||||||
{icon: '', name: 'addProject', label: '添加项目'},
|
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|||||||
6
resources/assets/js/functions/web.js
vendored
6
resources/assets/js/functions/web.js
vendored
@ -549,6 +549,12 @@
|
|||||||
setTimeout(() => { $A.modalWarning(config) }, millisecond);
|
setTimeout(() => { $A.modalWarning(config) }, millisecond);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (typeof config === "string" && config === "Network exception") {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if ($A.isJson(config) && config.content === "Network exception") {
|
||||||
|
return;
|
||||||
|
}
|
||||||
$A.Modal.warning($A.modalConfig(config));
|
$A.Modal.warning($A.modalConfig(config));
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@ -10,16 +10,62 @@
|
|||||||
<div v-else class="login-subtitle">{{$L('输入您的凭证以访问您的帐户。')}}</div>
|
<div v-else class="login-subtitle">{{$L('输入您的凭证以访问您的帐户。')}}</div>
|
||||||
|
|
||||||
<div class="login-input">
|
<div class="login-input">
|
||||||
<Input v-if="isSoftware && cacheServerUrl" :value="$A.getDomain(cacheServerUrl)" prefix="ios-globe-outline" size="large" readonly clearable @on-clear="clearServerUrl"/>
|
<Input
|
||||||
|
v-if="isSoftware && cacheServerUrl"
|
||||||
|
:value="$A.getDomain(cacheServerUrl)"
|
||||||
|
prefix="ios-globe-outline"
|
||||||
|
size="large"
|
||||||
|
readonly
|
||||||
|
clearable
|
||||||
|
@on-clear="clearServerUrl"/>
|
||||||
|
|
||||||
<Input v-model="email" prefix="ios-mail-outline" :placeholder="$L('输入您的电子邮件')" type="email" size="large" @on-enter="onLogin" @on-blur="onBlur" />
|
<Input
|
||||||
|
v-model="email"
|
||||||
|
prefix="ios-mail-outline"
|
||||||
|
:placeholder="$L('输入您的电子邮件')"
|
||||||
|
type="email"
|
||||||
|
size="large"
|
||||||
|
@on-enter="onLogin"
|
||||||
|
@on-blur="onBlur"
|
||||||
|
clearable/>
|
||||||
|
|
||||||
<Input v-model="password" prefix="ios-lock-outline" :placeholder="$L('输入您的密码')" type="password" size="large" @on-enter="onLogin" />
|
<Input
|
||||||
|
v-model="password"
|
||||||
|
prefix="ios-lock-outline"
|
||||||
|
:placeholder="$L('输入您的密码')"
|
||||||
|
type="password"
|
||||||
|
size="large"
|
||||||
|
@on-enter="onLogin"
|
||||||
|
clearable/>
|
||||||
|
|
||||||
<Input v-if="loginType=='reg'" v-model="password2" prefix="ios-lock-outline" :placeholder="$L('输入确认密码')" type="password" size="large" @on-enter="onLogin" />
|
<Input
|
||||||
<Input v-if="loginType=='reg' && needInvite" v-model="invite" class="login-code" :placeholder="$L('请输入注册邀请码')" type="text" size="large" @on-enter="onLogin"><span slot="prepend"> {{$L('邀请码')}} </span></Input>
|
v-if="loginType=='reg'"
|
||||||
|
v-model="password2"
|
||||||
|
prefix="ios-lock-outline"
|
||||||
|
:placeholder="$L('输入确认密码')"
|
||||||
|
type="password"
|
||||||
|
size="large"
|
||||||
|
@on-enter="onLogin"
|
||||||
|
clearable/>
|
||||||
|
<Input
|
||||||
|
v-if="loginType=='reg' && needInvite"
|
||||||
|
v-model="invite"
|
||||||
|
class="login-code"
|
||||||
|
:placeholder="$L('请输入注册邀请码')"
|
||||||
|
type="text"
|
||||||
|
size="large"
|
||||||
|
@on-enter="onLogin"
|
||||||
|
clearable><span slot="prepend"> {{$L('邀请码')}} </span></Input>
|
||||||
|
|
||||||
<Input v-if="loginType=='login' && codeNeed" v-model="code" class="login-code" :placeholder="$L('输入图形验证码')" type="text" size="large" @on-enter="onLogin">
|
<Input
|
||||||
|
v-if="loginType=='login' && codeNeed"
|
||||||
|
v-model="code"
|
||||||
|
class="login-code"
|
||||||
|
:placeholder="$L('输入图形验证码')"
|
||||||
|
type="text"
|
||||||
|
size="large"
|
||||||
|
@on-enter="onLogin"
|
||||||
|
clearable>
|
||||||
<Icon type="ios-checkmark-circle-outline" class="login-icon" slot="prepend"></Icon>
|
<Icon type="ios-checkmark-circle-outline" class="login-icon" slot="prepend"></Icon>
|
||||||
<div slot="append" class="login-code-end" @click="reCode"><img :src="codeUrl"/></div>
|
<div slot="append" class="login-code-end" @click="reCode"><img :src="codeUrl"/></div>
|
||||||
</Input>
|
</Input>
|
||||||
|
|||||||
@ -1,96 +1,94 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="project-panel" :class="[tabTypeActive]">
|
<div class="project-panel" :class="[tabTypeActive]">
|
||||||
<PageTitle :title="projectData.name"/>
|
<PageTitle :title="projectData.name"/>
|
||||||
<div class="project-head">
|
<div class="project-titbox">
|
||||||
<div class="project-titbox">
|
<div class="project-title">
|
||||||
<div class="project-title">
|
<div class="project-back" @click="goBack">
|
||||||
<div class="project-back" @click="goBack">
|
<i class="taskfont"></i>
|
||||||
<i class="taskfont"></i>
|
|
||||||
</div>
|
|
||||||
<h1>{{projectData.name}}</h1>
|
|
||||||
<label v-if="projectData.top_at" class="top-text">{{$L('置顶')}}</label>
|
|
||||||
<div v-if="loading" class="project-load"><Loading/></div>
|
|
||||||
</div>
|
</div>
|
||||||
<ul class="project-icons">
|
<h1>{{projectData.name}}</h1>
|
||||||
<li class="project-avatar" :class="{'cursor-default': projectData.owner_userid !== userId}" @click="projectDropdown('user')">
|
<label v-if="projectData.top_at" class="top-text">{{$L('置顶')}}</label>
|
||||||
<ul>
|
<div v-if="loading" class="project-load"><Loading/></div>
|
||||||
<li>
|
|
||||||
<UserAvatar :userid="projectData.owner_userid" :size="36" :borderWitdh="2" :openDelay="0">
|
|
||||||
<p>{{$L('项目负责人')}}</p>
|
|
||||||
</UserAvatar>
|
|
||||||
<Badge v-if="(windowWidth <= 980 || projectData.cacheParameter.chat) && projectUser.length > 0" type="normal" :count="projectData.project_user.length"/>
|
|
||||||
</li>
|
|
||||||
<template v-if="!(windowWidth <= 980 || projectData.cacheParameter.chat) && projectUser.length > 0" v-for="item in projectUser">
|
|
||||||
<li v-if="item.userid === -1" class="more">
|
|
||||||
<ETooltip :disabled="!$isDesktop" :content="$L('共' + (projectData.project_user.length) + '个成员')">
|
|
||||||
<Icon type="ios-more"/>
|
|
||||||
</ETooltip>
|
|
||||||
</li>
|
|
||||||
<li v-else>
|
|
||||||
<UserAvatar :userid="item.userid" :size="36" :borderWitdh="2" :openDelay="0"/>
|
|
||||||
</li>
|
|
||||||
</template>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="project-icon" @click="addTaskOpen(0)">
|
|
||||||
<ETooltip :disabled="!$isDesktop" :content="$L('添加任务')">
|
|
||||||
<Icon class="menu-icon" type="md-add" />
|
|
||||||
</ETooltip>
|
|
||||||
</li>
|
|
||||||
<li :class="['project-icon', searchText!='' ? 'active' : '']">
|
|
||||||
<Tooltip :always="searchText!=''" @on-popper-show="searchFocus" theme="light" :rawIndex="10">
|
|
||||||
<Icon class="menu-icon" type="ios-search" @click="searchFocus" />
|
|
||||||
<div slot="content">
|
|
||||||
<Input v-model="searchText" ref="searchInput" :placeholder="$L('名称、描述...')" class="search-input" clearable/>
|
|
||||||
</div>
|
|
||||||
</Tooltip>
|
|
||||||
</li>
|
|
||||||
<li :class="['project-icon', projectData.cacheParameter.chat ? 'active' : '']" @click="toggleParameter('chat')">
|
|
||||||
<Icon class="menu-icon" type="ios-chatbubbles" />
|
|
||||||
<Badge class="menu-badge" :count="msgUnread"></Badge>
|
|
||||||
</li>
|
|
||||||
<li class="project-icon">
|
|
||||||
<EDropdown @command="projectDropdown" trigger="click" transfer>
|
|
||||||
<Icon class="menu-icon" type="ios-more" />
|
|
||||||
<EDropdownMenu v-if="projectData.owner_userid === userId" slot="dropdown">
|
|
||||||
<EDropdownItem command="setting">{{$L('项目设置')}}</EDropdownItem>
|
|
||||||
<EDropdownItem command="workflow">{{$L('工作流设置')}}</EDropdownItem>
|
|
||||||
<EDropdownItem command="user" divided>{{$L('成员管理')}}</EDropdownItem>
|
|
||||||
<EDropdownItem command="invite">{{$L('邀请链接')}}</EDropdownItem>
|
|
||||||
<EDropdownItem command="log" divided>{{$L('项目动态')}}</EDropdownItem>
|
|
||||||
<EDropdownItem command="archived_task">{{$L('已归档任务')}}</EDropdownItem>
|
|
||||||
<EDropdownItem command="deleted_task">{{$L('已删除任务')}}</EDropdownItem>
|
|
||||||
<EDropdownItem command="transfer" divided>{{$L('移交项目')}}</EDropdownItem>
|
|
||||||
<EDropdownItem command="archived">{{$L('归档项目')}}</EDropdownItem>
|
|
||||||
<EDropdownItem command="delete" style="color:#f40">{{$L('删除项目')}}</EDropdownItem>
|
|
||||||
</EDropdownMenu>
|
|
||||||
<EDropdownMenu v-else slot="dropdown">
|
|
||||||
<EDropdownItem command="log">{{$L('项目动态')}}</EDropdownItem>
|
|
||||||
<EDropdownItem command="archived_task">{{$L('已归档任务')}}</EDropdownItem>
|
|
||||||
<EDropdownItem command="deleted_task">{{$L('已删除任务')}}</EDropdownItem>
|
|
||||||
<EDropdownItem command="exit" divided style="color:#f40">{{$L('退出项目')}}</EDropdownItem>
|
|
||||||
</EDropdownMenu>
|
|
||||||
</EDropdown>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="project-subbox clearfix">
|
<ul class="project-icons">
|
||||||
<div class="project-subtitle" @click="showDesc">{{projectData.desc}}</div>
|
<li class="project-avatar" :class="{'cursor-default': projectData.owner_userid !== userId}" @click="projectDropdown('user')">
|
||||||
<div class="project-switch">
|
<ul>
|
||||||
<div v-if="completedCount > 0" class="project-checkbox">
|
<li>
|
||||||
<Checkbox :value="projectData.cacheParameter.completedTask" @on-change="toggleCompleted">{{$L('显示已完成')}}</Checkbox>
|
<UserAvatar :userid="projectData.owner_userid" :size="36" :borderWitdh="2" :openDelay="0">
|
||||||
</div>
|
<p>{{$L('项目负责人')}}</p>
|
||||||
<div v-if="flowList.length > 0" class="project-select">
|
</UserAvatar>
|
||||||
<Cascader :data="flowData" @on-change="flowChange" transfer-class-name="project-panel-flow-cascader" transfer>
|
<Badge v-if="(windowWidth <= 980 || projectData.cacheParameter.chat) && projectUser.length > 0" type="normal" :count="projectData.project_user.length"/>
|
||||||
<span :class="`project-flow ${flowInfo.status}`">{{ flowTitle }}</span>
|
</li>
|
||||||
</Cascader>
|
<template v-if="!(windowWidth <= 980 || projectData.cacheParameter.chat) && projectUser.length > 0" v-for="item in projectUser">
|
||||||
</div>
|
<li v-if="item.userid === -1" class="more">
|
||||||
<div class="project-switch-button">
|
<ETooltip :disabled="!$isDesktop" :content="$L('共' + (projectData.project_user.length) + '个成员')">
|
||||||
<div class="slider" :style="tabTypeStyle"></div>
|
<Icon type="ios-more"/>
|
||||||
<div @click="tabTypeChange('column')" :class="{ 'active': tabTypeActive === 'column'}"><i class="taskfont"></i></div>
|
</ETooltip>
|
||||||
<div @click="tabTypeChange('table')" :class="{ 'active': tabTypeActive === 'table'}"><i class="taskfont"></i></div>
|
</li>
|
||||||
<div @click="tabTypeChange('gantt')" :class="{ 'active': tabTypeActive === 'gantt'}"><i class="taskfont"></i></div>
|
<li v-else>
|
||||||
</div>
|
<UserAvatar :userid="item.userid" :size="36" :borderWitdh="2" :openDelay="0"/>
|
||||||
|
</li>
|
||||||
|
</template>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="project-icon" @click="addTaskOpen(0)">
|
||||||
|
<ETooltip :disabled="!$isDesktop" :content="$L('添加任务')">
|
||||||
|
<Icon class="menu-icon" type="md-add" />
|
||||||
|
</ETooltip>
|
||||||
|
</li>
|
||||||
|
<li :class="['project-icon', searchText!='' ? 'active' : '']">
|
||||||
|
<Tooltip :always="searchText!=''" @on-popper-show="searchFocus" theme="light" :rawIndex="10">
|
||||||
|
<Icon class="menu-icon" type="ios-search" @click="searchFocus" />
|
||||||
|
<div slot="content">
|
||||||
|
<Input v-model="searchText" ref="searchInput" :placeholder="$L('名称、描述...')" class="search-input" clearable/>
|
||||||
|
</div>
|
||||||
|
</Tooltip>
|
||||||
|
</li>
|
||||||
|
<li :class="['project-icon', projectData.cacheParameter.chat ? 'active' : '']" @click="toggleParameter('chat')">
|
||||||
|
<Icon class="menu-icon" type="ios-chatbubbles" />
|
||||||
|
<Badge class="menu-badge" :count="msgUnread"></Badge>
|
||||||
|
</li>
|
||||||
|
<li class="project-icon">
|
||||||
|
<EDropdown @command="projectDropdown" trigger="click" transfer>
|
||||||
|
<Icon class="menu-icon" type="ios-more" />
|
||||||
|
<EDropdownMenu v-if="projectData.owner_userid === userId" slot="dropdown">
|
||||||
|
<EDropdownItem command="setting">{{$L('项目设置')}}</EDropdownItem>
|
||||||
|
<EDropdownItem command="workflow">{{$L('工作流设置')}}</EDropdownItem>
|
||||||
|
<EDropdownItem command="user" divided>{{$L('成员管理')}}</EDropdownItem>
|
||||||
|
<EDropdownItem command="invite">{{$L('邀请链接')}}</EDropdownItem>
|
||||||
|
<EDropdownItem command="log" divided>{{$L('项目动态')}}</EDropdownItem>
|
||||||
|
<EDropdownItem command="archived_task">{{$L('已归档任务')}}</EDropdownItem>
|
||||||
|
<EDropdownItem command="deleted_task">{{$L('已删除任务')}}</EDropdownItem>
|
||||||
|
<EDropdownItem command="transfer" divided>{{$L('移交项目')}}</EDropdownItem>
|
||||||
|
<EDropdownItem command="archived">{{$L('归档项目')}}</EDropdownItem>
|
||||||
|
<EDropdownItem command="delete" style="color:#f40">{{$L('删除项目')}}</EDropdownItem>
|
||||||
|
</EDropdownMenu>
|
||||||
|
<EDropdownMenu v-else slot="dropdown">
|
||||||
|
<EDropdownItem command="log">{{$L('项目动态')}}</EDropdownItem>
|
||||||
|
<EDropdownItem command="archived_task">{{$L('已归档任务')}}</EDropdownItem>
|
||||||
|
<EDropdownItem command="deleted_task">{{$L('已删除任务')}}</EDropdownItem>
|
||||||
|
<EDropdownItem command="exit" divided style="color:#f40">{{$L('退出项目')}}</EDropdownItem>
|
||||||
|
</EDropdownMenu>
|
||||||
|
</EDropdown>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="project-subbox">
|
||||||
|
<div class="project-subtitle" @click="showDesc">{{projectData.desc}}</div>
|
||||||
|
<div class="project-switch">
|
||||||
|
<div v-if="completedCount > 0" class="project-checkbox">
|
||||||
|
<Checkbox :value="projectData.cacheParameter.completedTask" @on-change="toggleCompleted">{{$L('显示已完成')}}</Checkbox>
|
||||||
|
</div>
|
||||||
|
<div v-if="flowList.length > 0" class="project-select">
|
||||||
|
<Cascader :data="flowData" @on-change="flowChange" transfer-class-name="project-panel-flow-cascader" transfer>
|
||||||
|
<span :class="`project-flow ${flowInfo.status}`">{{ flowTitle }}</span>
|
||||||
|
</Cascader>
|
||||||
|
</div>
|
||||||
|
<div class="project-switch-button">
|
||||||
|
<div class="slider" :style="tabTypeStyle"></div>
|
||||||
|
<div @click="tabTypeChange('column')" :class="{ 'active': tabTypeActive === 'column'}"><i class="taskfont"></i></div>
|
||||||
|
<div @click="tabTypeChange('table')" :class="{ 'active': tabTypeActive === 'table'}"><i class="taskfont"></i></div>
|
||||||
|
<div @click="tabTypeChange('gantt')" :class="{ 'active': tabTypeActive === 'gantt'}"><i class="taskfont"></i></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
22
resources/assets/sass/dark.scss
vendored
22
resources/assets/sass/dark.scss
vendored
@ -96,19 +96,17 @@ body.dark-mode-reverse {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.project-panel {
|
.project-panel {
|
||||||
.project-head {
|
.project-titbox {
|
||||||
.project-titbox {
|
.project-title {
|
||||||
.project-title {
|
.top-text {
|
||||||
.top-text {
|
color: #000000;
|
||||||
color: #000000;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
.project-icons {
|
}
|
||||||
> li {
|
.project-icons {
|
||||||
&.project-icon {
|
> li {
|
||||||
&.active {
|
&.project-icon {
|
||||||
color: #000000;
|
&.active {
|
||||||
}
|
color: #000000;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,244 +1,239 @@
|
|||||||
.project-panel {
|
.project-panel {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
.project-head {
|
.project-titbox {
|
||||||
display: flex;
|
width: 100%;
|
||||||
flex-direction: column;
|
padding: 32px 32px 4px;
|
||||||
align-items: flex-start;
|
.project-title {
|
||||||
margin: 32px 32px 0;
|
float: left;
|
||||||
.project-titbox {
|
|
||||||
width: 100%;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: flex-start;
|
align-items: center;
|
||||||
justify-content: space-between;
|
margin-bottom: 8px;
|
||||||
margin-bottom: 20px;
|
.project-back {
|
||||||
.project-title {
|
display: none;
|
||||||
|
}
|
||||||
|
> h1 {
|
||||||
|
color: #333333;
|
||||||
|
font-size: 28px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
.project-load {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
.project-back {
|
margin-left: 18px;
|
||||||
display: none;
|
.common-loading {
|
||||||
}
|
width: 22px;
|
||||||
> h1 {
|
height: 22px;
|
||||||
color: #333333;
|
|
||||||
font-size: 28px;
|
|
||||||
font-weight: 600;
|
|
||||||
}
|
|
||||||
.project-load {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
margin-left: 18px;
|
|
||||||
.common-loading {
|
|
||||||
width: 22px;
|
|
||||||
height: 22px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.top-text {
|
|
||||||
height: 24px;
|
|
||||||
line-height: 24px;
|
|
||||||
border-radius:4px;
|
|
||||||
padding: 0 6px;
|
|
||||||
margin-top: 3px;
|
|
||||||
margin-left: 10px;
|
|
||||||
background-color: #8BCF70;
|
|
||||||
color:#FFFFFF;
|
|
||||||
text-align: center;
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.project-icons {
|
.top-text {
|
||||||
|
height: 24px;
|
||||||
|
line-height: 24px;
|
||||||
|
border-radius:4px;
|
||||||
|
padding: 0 6px;
|
||||||
|
margin-top: 3px;
|
||||||
|
margin-left: 10px;
|
||||||
|
background-color: #8BCF70;
|
||||||
|
color:#FFFFFF;
|
||||||
|
text-align: center;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.project-icons {
|
||||||
|
float: right;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
margin-top: 3px;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
> li {
|
||||||
|
list-style: none;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
flex-shrink: 0;
|
justify-content: center;
|
||||||
margin-top: 3px;
|
width: 36px;
|
||||||
> li {
|
height: 36px;
|
||||||
list-style: none;
|
border-radius: 50%;
|
||||||
display: flex;
|
position: relative;
|
||||||
align-items: center;
|
margin-left: 16px;
|
||||||
justify-content: center;
|
cursor: pointer;
|
||||||
width: 36px;
|
transition: box-shadow 0.3s;
|
||||||
height: 36px;
|
&:hover {
|
||||||
border-radius: 50%;
|
box-shadow: 0 0 6px #cccccc;
|
||||||
position: relative;
|
}
|
||||||
margin-left: 16px;
|
&.cursor-default {
|
||||||
cursor: pointer;
|
cursor: default;
|
||||||
transition: box-shadow 0.3s;
|
}
|
||||||
|
&.project-avatar {
|
||||||
|
width: auto;
|
||||||
|
min-width: 36px;
|
||||||
&:hover {
|
&:hover {
|
||||||
box-shadow: 0 0 6px #cccccc;
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
&.cursor-default {
|
> ul {
|
||||||
cursor: default;
|
display: flex;
|
||||||
}
|
align-items: center;
|
||||||
&.project-avatar {
|
> li {
|
||||||
width: auto;
|
list-style: none;
|
||||||
min-width: 36px;
|
margin-left: -6px;
|
||||||
&:hover {
|
transition: transform 0.2s;
|
||||||
box-shadow: none;
|
.ivu-badge {
|
||||||
}
|
position: absolute;
|
||||||
> ul {
|
top: -5px;
|
||||||
display: flex;
|
left: 23px;
|
||||||
align-items: center;
|
transform: scale(0.8);
|
||||||
> li {
|
}
|
||||||
list-style: none;
|
&:hover {
|
||||||
margin-left: -6px;
|
transform: scale(1.05);
|
||||||
transition: transform 0.2s;
|
}
|
||||||
.ivu-badge {
|
&:first-child {
|
||||||
position: absolute;
|
margin-left: 0;
|
||||||
top: -5px;
|
}
|
||||||
left: 23px;
|
&.more {
|
||||||
transform: scale(0.8);
|
display: flex;
|
||||||
}
|
align-items: center;
|
||||||
&:hover {
|
justify-content: center;
|
||||||
transform: scale(1.05);
|
font-size: 17px;
|
||||||
}
|
width: 30px;
|
||||||
&:first-child {
|
height: 32px;
|
||||||
margin-left: 0;
|
color: #aaaaaa;
|
||||||
}
|
background-color: transparent;
|
||||||
&.more {
|
border-color: transparent;
|
||||||
display: flex;
|
transform: scale(1) !important;
|
||||||
align-items: center;
|
z-index: 1;
|
||||||
justify-content: center;
|
|
||||||
font-size: 17px;
|
|
||||||
width: 30px;
|
|
||||||
height: 32px;
|
|
||||||
color: #aaaaaa;
|
|
||||||
background-color: transparent;
|
|
||||||
border-color: transparent;
|
|
||||||
transform: scale(1) !important;
|
|
||||||
z-index: 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
&.project-icon {
|
}
|
||||||
border-radius: 50%;
|
&.project-icon {
|
||||||
background-color: #F2F3F5;
|
border-radius: 50%;
|
||||||
.menu-icon {
|
background-color: #F2F3F5;
|
||||||
font-size: 20px;
|
.menu-icon {
|
||||||
width: 36px;
|
font-size: 20px;
|
||||||
height: 36px;
|
width: 36px;
|
||||||
line-height: 36px;
|
height: 36px;
|
||||||
}
|
line-height: 36px;
|
||||||
.menu-badge {
|
}
|
||||||
position: absolute;
|
.menu-badge {
|
||||||
top: -6px;
|
position: absolute;
|
||||||
left: 20px;
|
top: -6px;
|
||||||
transform: scale(0.8);
|
left: 20px;
|
||||||
}
|
transform: scale(0.8);
|
||||||
.search-input {
|
}
|
||||||
margin: 2px 0;
|
.search-input {
|
||||||
width: 170px;
|
margin: 2px 0;
|
||||||
}
|
width: 170px;
|
||||||
&.active {
|
}
|
||||||
color: #ffffff;
|
&.active {
|
||||||
background-color: $primary-color;
|
color: #ffffff;
|
||||||
}
|
background-color: $primary-color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.project-subbox {
|
}
|
||||||
width: 100%;
|
.project-subbox {
|
||||||
.project-subtitle {
|
width: 100%;
|
||||||
float: left;
|
padding: 0 32px;
|
||||||
color: #999999;
|
.project-subtitle {
|
||||||
line-height: 24px;
|
float: left;
|
||||||
padding: 6px 0;
|
color: #999999;
|
||||||
}
|
line-height: 24px;
|
||||||
.project-switch {
|
margin: 6px 0;
|
||||||
float: right;
|
}
|
||||||
margin: 3px 0 3px 32px;
|
.project-switch {
|
||||||
|
float: right;
|
||||||
|
margin: 3px 0 3px 32px;
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-end;
|
||||||
|
.project-checkbox {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: flex-end;
|
align-items: center;
|
||||||
.project-checkbox {
|
margin-right: 14px;
|
||||||
|
opacity: 0.9;
|
||||||
|
height: 30px;
|
||||||
|
.ivu-checkbox-focus {
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.project-select {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
margin-right: 14px;
|
||||||
|
opacity: 0.9;
|
||||||
|
height: 30px;
|
||||||
|
.project-flow {
|
||||||
|
font-size: 13px;
|
||||||
|
height: 28px;
|
||||||
|
line-height: 26px;
|
||||||
|
padding: 0 8px;
|
||||||
|
border-radius: 4px;
|
||||||
|
background: #f7f7f7;
|
||||||
|
border: 1px solid #e8eaec;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
margin-right: 14px;
|
justify-content: center;
|
||||||
opacity: 0.9;
|
cursor: pointer;
|
||||||
height: 30px;
|
&.start {
|
||||||
.ivu-checkbox-focus {
|
background-color: rgba($flow-status-start-color, 0.1);
|
||||||
box-shadow: none;
|
border-color: rgba($flow-status-start-color, 0.1);
|
||||||
|
color: $flow-status-start-color;
|
||||||
|
}
|
||||||
|
&.progress {
|
||||||
|
background-color: rgba($flow-status-progress-color, 0.1);;
|
||||||
|
border-color: rgba($flow-status-progress-color, 0.1);;
|
||||||
|
color: $flow-status-progress-color;
|
||||||
|
}
|
||||||
|
&.test {
|
||||||
|
background-color: rgba($flow-status-test-color, 0.1);;
|
||||||
|
border-color: rgba($flow-status-test-color, 0.1);;
|
||||||
|
color: $flow-status-test-color;
|
||||||
|
}
|
||||||
|
&.end {
|
||||||
|
background-color: rgba($flow-status-end-color, 0.1);;
|
||||||
|
border-color: rgba($flow-status-end-color, 0.1);;
|
||||||
|
color: $flow-status-end-color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.project-select {
|
}
|
||||||
display: flex;
|
.project-switch-button {
|
||||||
align-items: center;
|
display: flex;
|
||||||
margin-right: 14px;
|
align-items: center;
|
||||||
opacity: 0.9;
|
background-color: #ffffff;
|
||||||
height: 30px;
|
border-radius: 6px;
|
||||||
.project-flow {
|
height: 30px;
|
||||||
font-size: 13px;
|
position: relative;
|
||||||
height: 28px;
|
transition: all 0.2s;
|
||||||
line-height: 26px;
|
.active {
|
||||||
padding: 0 8px;
|
color: $primary-color;
|
||||||
border-radius: 4px;
|
|
||||||
background: #f7f7f7;
|
|
||||||
border: 1px solid #e8eaec;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
cursor: pointer;
|
|
||||||
&.start {
|
|
||||||
background-color: rgba($flow-status-start-color, 0.1);
|
|
||||||
border-color: rgba($flow-status-start-color, 0.1);
|
|
||||||
color: $flow-status-start-color;
|
|
||||||
}
|
|
||||||
&.progress {
|
|
||||||
background-color: rgba($flow-status-progress-color, 0.1);;
|
|
||||||
border-color: rgba($flow-status-progress-color, 0.1);;
|
|
||||||
color: $flow-status-progress-color;
|
|
||||||
}
|
|
||||||
&.test {
|
|
||||||
background-color: rgba($flow-status-test-color, 0.1);;
|
|
||||||
border-color: rgba($flow-status-test-color, 0.1);;
|
|
||||||
color: $flow-status-test-color;
|
|
||||||
}
|
|
||||||
&.end {
|
|
||||||
background-color: rgba($flow-status-end-color, 0.1);;
|
|
||||||
border-color: rgba($flow-status-end-color, 0.1);;
|
|
||||||
color: $flow-status-end-color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
.project-switch-button {
|
.slider {
|
||||||
display: flex;
|
position: absolute;
|
||||||
align-items: center;
|
top: 0;
|
||||||
background-color: #ffffff;
|
left: 0;
|
||||||
|
width: 33.3%;
|
||||||
|
height: 100%;
|
||||||
|
z-index: 0;
|
||||||
|
color: $primary-color;
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
|
border: 1px solid $primary-color;
|
||||||
|
background-color: rgba($primary-color, 0.1);
|
||||||
|
transition: left 0.2s;
|
||||||
|
}
|
||||||
|
&:hover {
|
||||||
|
box-shadow: 0 0 10px #e6ecfa;
|
||||||
|
}
|
||||||
|
> div {
|
||||||
|
z-index: 1;
|
||||||
|
width: 32px;
|
||||||
height: 30px;
|
height: 30px;
|
||||||
position: relative;
|
display: flex;
|
||||||
transition: all 0.2s;
|
align-items: center;
|
||||||
.active {
|
justify-content: center;
|
||||||
color: $primary-color;
|
border-radius: 6px;
|
||||||
}
|
cursor: pointer;
|
||||||
.slider {
|
color: $primary-text-color;
|
||||||
position: absolute;
|
> i {
|
||||||
top: 0;
|
font-size: 17px;
|
||||||
left: 0;
|
|
||||||
width: 33.3%;
|
|
||||||
height: 100%;
|
|
||||||
z-index: 0;
|
|
||||||
color: $primary-color;
|
|
||||||
border-radius: 6px;
|
|
||||||
border: 1px solid $primary-color;
|
|
||||||
background-color: rgba($primary-color, 0.1);
|
|
||||||
transition: left 0.2s;
|
|
||||||
}
|
|
||||||
&:hover {
|
|
||||||
box-shadow: 0 0 10px #e6ecfa;
|
|
||||||
}
|
|
||||||
> div {
|
|
||||||
z-index: 1;
|
|
||||||
width: 32px;
|
|
||||||
height: 30px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
border-radius: 6px;
|
|
||||||
cursor: pointer;
|
|
||||||
color: $primary-text-color;
|
|
||||||
> i {
|
|
||||||
font-size: 17px;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1026,50 +1021,48 @@
|
|||||||
|
|
||||||
@media (max-width: 768px) {
|
@media (max-width: 768px) {
|
||||||
.project-panel {
|
.project-panel {
|
||||||
.project-head {
|
.project-titbox {
|
||||||
margin: 12px 16px 0;
|
position: sticky;
|
||||||
.project-titbox {
|
top: 0;
|
||||||
display: block;
|
z-index: 2;
|
||||||
margin-bottom: 16px;
|
background-color: #fafafa;
|
||||||
.project-title {
|
padding: 12px 16px 4px;
|
||||||
float: left;
|
.project-title {
|
||||||
padding-bottom: 8px;
|
float: left;
|
||||||
.project-back {
|
.project-back {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
margin-left: -16px;
|
margin-left: -16px;
|
||||||
width: 52px;
|
width: 52px;
|
||||||
> i {
|
> i {
|
||||||
font-size: 26px;
|
font-size: 26px;
|
||||||
}
|
|
||||||
}
|
|
||||||
> h1 {
|
|
||||||
font-size: 22px;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.project-icons {
|
> h1 {
|
||||||
float: right;
|
font-size: 22px;
|
||||||
margin-left: 24px;
|
|
||||||
margin-top: 4px;
|
|
||||||
justify-content: flex-end;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.project-subbox {
|
.project-icons {
|
||||||
display: block;
|
float: right;
|
||||||
.project-subtitle {
|
margin-left: 24px;
|
||||||
margin-bottom: 6px;
|
margin-top: 4px;
|
||||||
word-break: break-all;
|
justify-content: flex-end;
|
||||||
text-overflow: ellipsis;
|
}
|
||||||
overflow: hidden;
|
}
|
||||||
display: -webkit-box;
|
.project-subbox {
|
||||||
-webkit-line-clamp: 2;
|
padding: 0 16px;
|
||||||
-webkit-box-orient: vertical;
|
.project-subtitle {
|
||||||
}
|
word-break: break-all;
|
||||||
.project-switch {
|
text-overflow: ellipsis;
|
||||||
margin-left: 0;
|
overflow: hidden;
|
||||||
justify-content: flex-end;
|
display: -webkit-box;
|
||||||
}
|
-webkit-line-clamp: 2;
|
||||||
|
-webkit-box-orient: vertical;
|
||||||
|
}
|
||||||
|
.project-switch {
|
||||||
|
margin-left: 0;
|
||||||
|
justify-content: flex-end;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.project-column {
|
.project-column {
|
||||||
|
|||||||
38
resources/assets/sass/pages/page-login.scss
vendored
38
resources/assets/sass/pages/page-login.scss
vendored
@ -63,12 +63,19 @@
|
|||||||
.login-code {
|
.login-code {
|
||||||
.ivu-input-group-prepend,
|
.ivu-input-group-prepend,
|
||||||
.ivu-input-group-append {
|
.ivu-input-group-append {
|
||||||
font-size: 14px;
|
font-size: 16px;
|
||||||
background: transparent;
|
background: transparent;
|
||||||
border-color: #f1f1f1;
|
border-color: #f1f1f1;
|
||||||
|
> span {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.ivu-input-group-prepend {
|
||||||
|
padding-right: 0;
|
||||||
}
|
}
|
||||||
.ivu-input {
|
.ivu-input {
|
||||||
border-left-color: transparent;
|
border-left-color: transparent;
|
||||||
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
.login-code-end {
|
.login-code-end {
|
||||||
margin: -6px -7px;
|
margin: -6px -7px;
|
||||||
@ -187,10 +194,31 @@
|
|||||||
width: 44px;
|
width: 44px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ivu-input-wrapper-large .ivu-input-prefix i,
|
.ivu-input-wrapper-large {
|
||||||
.ivu-input-wrapper-large .ivu-input-suffix i {
|
.ivu-input-prefix i,
|
||||||
font-size: 20px;
|
.ivu-input-suffix i {
|
||||||
line-height: 44px;
|
font-size: 20px;
|
||||||
|
line-height: 44px;
|
||||||
|
}
|
||||||
|
.ivu-input-icon {
|
||||||
|
height: 44px;
|
||||||
|
line-height: 44px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-code {
|
||||||
|
.ivu-input-group-prepend,
|
||||||
|
.ivu-input-group-append {
|
||||||
|
font-size: 18px;
|
||||||
|
background: #ffffff;
|
||||||
|
.login-code-end {
|
||||||
|
height: 42px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.ivu-input-group-prepend {
|
||||||
|
padding-left: 12px;
|
||||||
|
padding-right: 2px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user