kuaifan 5 yıl önce
ebeveyn
işleme
671e5c60aa

+ 3 - 6
resources/assets/js/main/App.vue

@@ -1,26 +1,23 @@
 <template>
     <div id="app">
+        <w-header></w-header>
         <transition :name="transitionName">
             <keep-alive>
                 <router-view class="child-view"></router-view>
             </keep-alive>
         </transition>
-        <Drawer v-model="chatDrawerShow" :closable="false" width="75%">
-            <chat-index></chat-index>
-        </Drawer>
         <w-spinner></w-spinner>
     </div>
 </template>
 
 <script>
     import WSpinner from "./components/WSpinner";
-    import ChatIndex from "./components/chat/Index";
+    import WHeader from "./components/WHeader";
     export default {
-        components: {ChatIndex, WSpinner},
+        components: {WHeader, WSpinner},
         data () {
             return {
                 transitionName: null,
-                chatDrawerShow: true,
             }
         },
         mounted() {

+ 31 - 16
resources/assets/js/main/components/WHeader.vue

@@ -1,15 +1,15 @@
 <template>
     <div class="w-header">
-        <div class="w-header-row">
+        <div v-if="tabActive" class="w-header-row">
             <div class="w-header-row-left">
                 <ul>
-                    <li :class="value==='todo'?'active':''">
+                    <li :class="tabActive==='todo'?'active':''">
                         <a href="javascript:void(0)" @click="tabPage('todo')"><i class="ft icon">&#xe89e;</i>{{$L('待办')}}</a>
-                    </li><li :class="value==='project'?'active':''">
+                    </li><li :class="tabActive==='project'?'active':''">
                         <a href="javascript:void(0)" @click="tabPage('project')"><i class="ft icon">&#xe6b8;</i>{{$L('项目')}}</a>
-                    </li><li :class="value==='docs'?'active':''">
+                    </li><li :class="tabActive==='docs'?'active':''">
                         <a href="javascript:void(0)" @click="tabPage('docs')"><i class="ft icon">&#xe915;</i>{{$L('知识库')}}</a>
-                    </li><li :class="value==='team'?'active':''">
+                    </li><li :class="tabActive==='team'?'active':''">
                         <a href="javascript:void(0)" @click="tabPage('team')"><i class="ft icon">&#xe90d;</i>{{$L('团队')}}</a>
                     </li>
                 </ul>
@@ -25,9 +25,12 @@
                         <Dropdown-item name="out">{{$L('退出登录')}}</Dropdown-item>
                     </Dropdown-menu>
                 </Dropdown>
+                <div class="right-info" @click="chatDrawerShow=true">
+                    <Icon class="right-mticon" type="md-notifications" size="24"/>
+                </div>
                 <Dropdown class="right-info" trigger="click" @on-click="setLanguage" transfer>
                     <div>
-                        <Icon class="right-globe" type="md-globe" size="24"/>
+                        <Icon class="right-mticon" type="md-globe" size="24"/>
                         <Icon type="md-arrow-dropdown"/>
                     </div>
                     <Dropdown-menu slot="list">
@@ -37,7 +40,7 @@
                 </Dropdown>
             </div>
         </div>
-        <Drawer v-model="userDrawerShow" width="70%">
+        <WDrawer v-model="userDrawerShow" maxWidth="1000">
             <Tabs v-model="userDrawerTab">
                 <TabPane :label="$L('个人资料')" name="personal">
                     <Form ref="formDatum" :model="formDatum" :rules="ruleDatum" :label-width="80">
@@ -100,14 +103,16 @@
                     <header-archived :canload="userDrawerShow && userDrawerTab == 'archivedtask'"></header-archived>
                 </TabPane>
             </Tabs>
-        </Drawer>
+        </WDrawer>
+        <WDrawer v-model="chatDrawerShow" :closable="false" maxWidth="1080">
+            <chat-index></chat-index>
+        </WDrawer>
     </div>
 </template>
 
 <style lang="scss" scoped>
     .w-header {
         z-index: 15;
-        height: 40px;
         position: fixed;
         left: 0;
         top: 0;
@@ -165,7 +170,7 @@
                     position: relative;
                     margin-left: 12px;
                     cursor: pointer;
-                    .right-globe {
+                    .right-mticon {
                         vertical-align: top;
                         margin-top: 8px;
                     }
@@ -204,15 +209,15 @@
     import ImgUpload from "./ImgUpload";
     import HeaderCreate from "./project/header/create";
     import HeaderArchived from "./project/header/archived";
+    import ChatIndex from "./chat/Index";
+    import WDrawer from "./iview/WDrawer";
     export default {
         name: 'WHeader',
-        components: {HeaderArchived, HeaderCreate, ImgUpload},
-        props: {
-            value: {
-            },
-        },
+        components: {WDrawer, ChatIndex, HeaderArchived, HeaderCreate, ImgUpload},
         data() {
             return {
+                tabActive: '',
+
                 loadIng: 0,
                 userInfo: {},
                 userDrawerShow: false,
@@ -235,6 +240,8 @@
                 formSetting: {
                     bgid: 0,
                 },
+
+                chatDrawerShow: false,
             }
         },
         created() {
@@ -295,6 +302,14 @@
                 resCall();
             }, false);
             resCall();
+            //
+            this.tabActive = this.$route.meta.tabActive;
+        },
+        watch: {
+            '$route' () {
+                this.tabActive = this.$route.meta.tabActive;
+                this.userDrawerShow = false;
+            }
         },
         methods: {
             getBgUrl(id, thumb) {
@@ -357,8 +372,8 @@
                                     },
                                     success: (res) => {
                                         if (res.ret === 1) {
-                                            this.$Message.success(this.$L('修改成功,请重新登录!'));
                                             this.userDrawerShow = false;
+                                            this.$Message.success(this.$L('修改成功,请重新登录!'));
                                             this.$refs[name].resetFields();
                                             $A.userLogout();
                                         } else {

+ 330 - 0
resources/assets/js/main/components/iview/WDrawer.vue

@@ -0,0 +1,330 @@
+<template>
+    <div v-transfer-dom :data-transfer="transfer">
+        <transition name="fade">
+            <div :class="maskClasses" :style="maskStyle" v-show="visible" v-if="mask" @click="handleMask"></div>
+        </transition>
+        <div :class="wrapClasses" @click="handleWrapClick">
+            <transition :name="'move-' + placement">
+                <div :class="classes" :style="mainStyles" v-show="visible">
+                    <div :class="contentClasses" ref="content">
+                        <a class="ivu-drawer-close" v-if="closable" @click="close">
+                            <slot name="close">
+                                <Icon type="ios-close"></Icon>
+                            </slot>
+                        </a>
+                        <div :class="[prefixCls + '-header']" v-if="showHead"><slot name="header"><div :class="[prefixCls + '-header-inner']">{{ title }}</div></slot></div>
+                        <div :class="[prefixCls + '-body']" :style="styles"><slot></slot></div>
+                    </div>
+                    <div class="ivu-drawer-drag" :class="{ 'ivu-drawer-drag-left': placement === 'left' }" v-if="draggable" @mousedown="handleTriggerMousedown">
+                        <slot name="trigger">
+                            <div class="ivu-drawer-drag-move-trigger">
+                                <div class="ivu-drawer-drag-move-trigger-point">
+                                    <i></i><i></i><i></i><i></i><i></i>
+                                </div>
+                            </div>
+                        </slot>
+                    </div>
+                </div>
+            </transition>
+        </div>
+    </div>
+</template>
+<script>
+    import Icon from 'view-design/src/components/icon';
+    import { oneOf, findBrothersComponents, findComponentsUpward } from 'view-design/src/utils/assist';
+    import TransferDom from 'view-design/src/directives/transfer-dom';
+    import Emitter from 'view-design/src/mixins/emitter';
+    import ScrollbarMixins from 'view-design/src/components/modal/mixins-scrollbar';
+
+    import { on, off } from 'view-design/src/utils/dom';
+
+    const prefixCls = 'ivu-drawer';
+
+    export default {
+        name: 'WDrawer',
+        mixins: [ Emitter, ScrollbarMixins ],
+        components: { Icon },
+        directives: { TransferDom },
+        props: {
+            value: {
+                type: Boolean,
+                default: false
+            },
+            title: {
+                type: String
+            },
+            width: {
+                type: [Number, String],
+                default: '100%'
+            },
+            minWidth: {
+                type: [Number, String],
+                default: 0
+            },
+            maxWidth: {
+                type: [Number, String],
+                default: 0
+            },
+            closable: {
+                type: Boolean,
+                default: true
+            },
+            maskClosable: {
+                type: Boolean,
+                default: true
+            },
+            mask: {
+                type: Boolean,
+                default: true
+            },
+            maskStyle: {
+                type: Object
+            },
+            styles: {
+                type: Object
+            },
+            scrollable: {
+                type: Boolean,
+                default: false
+            },
+            placement: {
+                validator (value) {
+                    return oneOf(value, ['left', 'right']);
+                },
+                default: 'right'
+            },
+            zIndex: {
+                type: Number,
+                default: 1000
+            },
+            transfer: {
+                type: Boolean,
+                default () {
+                    return !this.$IVIEW || this.$IVIEW.transfer === '' ? true : this.$IVIEW.transfer;
+                }
+            },
+            className: {
+                type: String
+            },
+            inner: {
+                type: Boolean,
+                default: false
+            },
+            // Whether drag and drop is allowed to adjust width
+            draggable: {
+                type: Boolean,
+                default: false
+            },
+            beforeClose: Function,
+        },
+        data () {
+            return {
+                prefixCls: prefixCls,
+                visible: this.value,
+                wrapShow: false,
+                showHead: true,
+                canMove: false,
+                dragWidth: this.width,
+                wrapperWidth: this.width,
+                wrapperLeft: 0,
+                minHandleWidth: 256
+            };
+        },
+        computed: {
+            wrapClasses () {
+                return [
+                    `${prefixCls}-wrap`,
+                    {
+                        [`${prefixCls}-hidden`]: !this.wrapShow,
+                        [`${this.className}`]: !!this.className,
+                        [`${prefixCls}-no-mask`]: !this.mask,
+                        [`${prefixCls}-wrap-inner`]: this.inner,
+                        [`${prefixCls}-wrap-dragging`]: this.canMove
+                    }
+                ];
+            },
+            mainStyles () {
+                let style = {};
+
+                const minWidth = parseInt(this.minWidth);
+                if (minWidth > 0) {
+                    style.minWidth = minWidth <= 100 ? `${minWidth}%` : `${minWidth}px`;
+                }
+
+                const maxWidth = parseInt(this.maxWidth);
+                if (maxWidth > 0) {
+                    style.maxWidth = maxWidth <= 100 ? `${maxWidth}%` : `${maxWidth}px`;
+                }
+
+                const width = parseInt(this.dragWidth);
+
+                const styleWidth = {
+                    width: width <= 100 ? `${width}%` : `${width}px`
+                };
+
+                Object.assign(style, styleWidth);
+
+                return style;
+            },
+            contentClasses () {
+                return [
+                    `${prefixCls}-content`,
+                    {
+                        [`${prefixCls}-content-no-mask`]: !this.mask
+                    }
+                ];
+            },
+            classes () {
+                return [
+                    `${prefixCls}`,
+                    `${prefixCls}-${this.placement}`,
+                    {
+                        [`${prefixCls}-no-header`]: !this.showHead,
+                        [`${prefixCls}-inner`]: this.inner
+                    }
+                ];
+            },
+            maskClasses () {
+                return [
+                    `${prefixCls}-mask`,
+                    {
+                        [`${prefixCls}-mask-inner`]: this.inner
+                    }
+                ];
+            }
+        },
+        methods: {
+            close () {
+                if (!this.beforeClose) {
+                    return this.handleClose();
+                }
+
+                const before = this.beforeClose();
+
+                if (before && before.then) {
+                    before.then(() => {
+                        this.handleClose();
+                    });
+                } else {
+                    this.handleClose();
+                }
+            },
+            handleClose () {
+                this.visible = false;
+                this.$emit('input', false);
+                this.$emit('on-close');
+            },
+            handleMask () {
+                if (this.maskClosable && this.mask) {
+                    this.close();
+                }
+            },
+            handleWrapClick (event) {
+                // use indexOf,do not use === ,because ivu-modal-wrap can have other custom className
+                const className = event.target.getAttribute('class');
+                if (className && className.indexOf(`${prefixCls}-wrap`) > -1) this.handleMask();
+            },
+            handleMousemove (event) {
+                if (!this.canMove || !this.draggable) return;
+                // 更新容器宽度和距离左侧页面距离,如果是window则距左侧距离为0
+                this.handleSetWrapperWidth();
+                const left = event.pageX - this.wrapperLeft;
+                // 如果抽屉方向为右边,宽度计算需用容器宽度减去left
+                let width = this.placement === 'right' ? this.wrapperWidth - left : left;
+                // 限定最小宽度
+                width = Math.max(width, parseFloat(this.minHandleWidth));
+                event.atMin = width === parseFloat(this.minHandleWidth);
+                // 如果当前width不大于100,视为百分比
+                if (width <= 100) width = (width / this.wrapperWidth) * 100;
+                this.dragWidth = width;
+                this.$emit('on-resize-width', parseInt(this.dragWidth));
+            },
+            handleSetWrapperWidth () {
+                const {
+                    width,
+                    left
+                } = this.$el.getBoundingClientRect();
+                this.wrapperWidth = width;
+                this.wrapperLeft = left;
+            },
+            handleMouseup () {
+                if (!this.draggable) return;
+                this.canMove = false;
+            },
+            handleTriggerMousedown () {
+                this.canMove = true;
+                // 防止鼠标选中抽屉中文字,造成拖动trigger触发浏览器原生拖动行为
+                window.getSelection().removeAllRanges();
+            },
+        },
+        mounted () {
+            if (this.visible) {
+                this.wrapShow = true;
+            }
+
+            let showHead = true;
+
+            if (this.$slots.header === undefined && !this.title) {
+                showHead = false;
+            }
+
+            this.showHead = showHead;
+
+            on(document, 'mousemove', this.handleMousemove);
+            on(document, 'mouseup', this.handleMouseup);
+            this.handleSetWrapperWidth();
+        },
+        beforeDestroy () {
+            off(document, 'mousemove', this.handleMousemove);
+            off(document, 'mouseup', this.handleMouseup);
+            this.removeScrollEffect();
+        },
+        watch: {
+            value (val) {
+                this.visible = val;
+            },
+            visible (val) {
+                if (val === false) {
+                    this.timer = setTimeout(() => {
+                        this.wrapShow = false;
+                        // #4831 Check if there are any drawers left at the parent level
+                        const brotherDrawers = findBrothersComponents(this, 'Drawer') || [];
+                        const parentDrawers = findComponentsUpward(this, 'Drawer') || [];
+
+                        const otherDrawers = [].concat(brotherDrawers).concat(parentDrawers);
+
+                        const isScrollDrawer = otherDrawers.some(item => item.visible && !item.scrollable);
+
+                        if (!isScrollDrawer) {
+                            this.removeScrollEffect();
+                        }
+                    }, 300);
+                } else {
+                    if (this.timer) clearTimeout(this.timer);
+                    this.wrapShow = true;
+                    if (!this.scrollable) {
+                        this.addScrollEffect();
+                    }
+                }
+                this.broadcast('Table', 'on-visible-change', val);
+                this.broadcast('Slider', 'on-visible-change', val);  // #2852
+                this.$emit('on-visible-change', val);
+            },
+            scrollable (val) {
+                if (!val) {
+                    this.addScrollEffect();
+                } else {
+                    this.removeScrollEffect();
+                }
+            },
+            title (val) {
+                if (this.$slots.header === undefined) {
+                    this.showHead = !!val;
+                }
+            },
+            width (val) {
+                this.dragWidth = val;
+            }
+        }
+    };
+</script>

+ 4 - 3
resources/assets/js/main/components/report/my.vue

@@ -31,9 +31,9 @@
             <!-- 分页 -->
             <Page class="pageBox" :total="listTotal" :current="listPage" :disabled="loadIng > 0" @on-change="setPage" @on-page-size-change="setPageSize" :page-size-opts="[10,20,30,50,100]" placement="top" show-elevator show-sizer show-total transfer></Page>
         </div>
-        <Drawer v-model="addDrawerShow" width="70%">
+        <WDrawer v-model="addDrawerShow" maxWidth="1000">
             <report-add :canload="addDrawerShow" :id="addDrawerId" @on-success="addDrawerSuccess"></report-add>
-        </Drawer>
+        </WDrawer>
         <Modal
             v-model="contentShow"
             :title="contentTitle"
@@ -57,13 +57,14 @@
     import DrawerTabsContainer from "../DrawerTabsContainer";
     import ReportAdd from "./add";
     import ReportContent from "./content";
+    import WDrawer from "../iview/WDrawer";
 
     /**
      * 我的汇报
      */
     export default {
         name: 'ReportMy',
-        components: {ReportContent, ReportAdd, DrawerTabsContainer},
+        components: {WDrawer, ReportContent, ReportAdd, DrawerTabsContainer},
         props: {
             canload: {
                 type: Boolean,

+ 1 - 4
resources/assets/js/main/pages/docs.vue

@@ -3,8 +3,6 @@
 
         <v-title>{{$L('知识库')}}-{{$L('轻量级的团队在线协作')}}</v-title>
 
-        <w-header value="docs"></w-header>
-
         <div class="w-nav">
             <div class="nav-row">
                 <div class="w-nav-left">
@@ -187,11 +185,10 @@
     }
 </style>
 <script>
-    import WHeader from "../components/WHeader";
     import WContent from "../components/WContent";
     import NestedDraggable from "../components/docs/NestedDraggable";
     export default {
-        components: {NestedDraggable, WContent, WHeader},
+        components: {NestedDraggable, WContent},
         data () {
             return {
                 loadIng: 0,

+ 4 - 3
resources/assets/js/main/pages/docs/edit.vue

@@ -22,7 +22,7 @@
             </div>
         </div>
 
-        <Drawer v-model="docDrawerShow" width="450">
+        <WDrawer v-model="docDrawerShow" maxWidth="450">
             <Tabs v-if="docDrawerShow" v-model="docDrawerTab">
                 <TabPane :label="$L('知识库目录')" name="menu">
                     <nested-draggable :lists="sectionLists" :readonly="true" :activeid="sid" @change="handleSection"></nested-draggable>
@@ -32,7 +32,7 @@
                     <Table class="tableFill" :columns="historyColumns" :data="historyLists" :no-data-text="historyNoDataText" size="small" stripe></Table>
                 </TabPane>
             </Tabs>
-        </Drawer>
+        </WDrawer>
 
     </div>
 </template>
@@ -172,11 +172,12 @@
     import Sheet from "../../components/docs/sheet/index";
     import Flow from "../../components/docs/flow/index";
     import NestedDraggable from "../../components/docs/NestedDraggable";
+    import WDrawer from "../../components/iview/WDrawer";
 
     Vue.use(minder)
 
     export default {
-        components: {Flow, Sheet, TEditor, NestedDraggable},
+        components: {WDrawer, Flow, Sheet, TEditor, NestedDraggable},
         data () {
             return {
                 loadIng: 0,

+ 7 - 8
resources/assets/js/main/pages/project.vue

@@ -3,8 +3,6 @@
 
         <v-title>{{$L('项目')}}-{{$L('轻量级的团队在线协作')}}</v-title>
 
-        <w-header value="project"></w-header>
-
         <div class="w-nav">
             <div class="nav-row">
                 <div class="w-nav-left">
@@ -106,7 +104,7 @@
             </div>
         </Modal>
 
-        <Drawer v-model="projectDrawerShow" width="75%">
+        <WDrawer v-model="projectDrawerShow" maxWidth="1000">
             <Tabs v-if="projectDrawerShow" v-model="projectDrawerTab">
                 <TabPane :label="$L('已归档任务')" name="archived">
                     <project-archived :canload="projectDrawerShow && projectDrawerTab == 'archived'" :projectid="handleProjectId"></project-archived>
@@ -118,9 +116,9 @@
                     <project-users :canload="projectDrawerShow && projectDrawerTab == 'member'" :projectid="handleProjectId"></project-users>
                 </TabPane>
             </Tabs>
-        </Drawer>
+        </WDrawer>
 
-        <Drawer v-model="projectListDrawerShow" width="50%">
+        <WDrawer v-model="projectListDrawerShow" maxWidth="740">
             <Tabs v-if="projectListDrawerShow" v-model="projectListDrawerTab">
                 <TabPane :label="$L('参与的项目')" name="myjoin">
                     <project-my-join :canload="projectListDrawerShow && projectListDrawerTab == 'myjoin'"></project-my-join>
@@ -132,7 +130,7 @@
                     <project-my-manage :canload="projectListDrawerShow && projectListDrawerTab == 'mycreate'"></project-my-manage>
                 </TabPane>
             </Tabs>
-        </Drawer>
+        </WDrawer>
     </div>
 </template>
 
@@ -272,7 +270,6 @@
     }
 </style>
 <script>
-    import WHeader from "../components/WHeader";
     import WContent from "../components/WContent";
     import WLoading from "../components/WLoading";
     import ProjectArchived from "../components/project/archived";
@@ -282,11 +279,13 @@
     import ProjectMyJoin from "../components/project/my/join";
     import ProjectMyManage from "../components/project/my/manage";
     import Project from "../mixins/project";
+    import WDrawer from "../components/iview/WDrawer";
     export default {
         components: {
+            WDrawer,
             ProjectMyManage,
             ProjectMyJoin,
-            ProjectMyFavor, ProjectStatistics, ProjectUsers, ProjectArchived, WLoading, WContent, WHeader},
+            ProjectMyFavor, ProjectStatistics, ProjectUsers, ProjectArchived, WLoading, WContent},
         mixins: [
             Project
         ],

+ 7 - 8
resources/assets/js/main/pages/project/panel.vue

@@ -3,8 +3,6 @@
 
         <v-title>{{$L('项目面板')}}-{{$L('轻量级的团队在线协作')}}</v-title>
 
-        <w-header value="project"></w-header>
-
         <div class="w-nav">
             <div class="nav-row">
                 <div class="w-nav-left">
@@ -88,7 +86,7 @@
             </draggable>
         </w-content>
 
-        <Drawer v-model="projectDrawerShow" width="80%">
+        <WDrawer v-model="projectDrawerShow" maxWidth="1080">
             <Tabs v-if="projectDrawerShow" v-model="projectDrawerTab">
                 <TabPane :label="$L('任务列表')" name="lists">
                     <project-task-lists :canload="projectDrawerShow && projectDrawerTab == 'lists'" :projectid="projectid" :labelLists="projectSimpleLabel"></project-task-lists>
@@ -100,9 +98,9 @@
                     <project-task-logs :canload="projectDrawerShow && projectDrawerTab == 'logs'" :projectid="projectid"></project-task-logs>
                 </TabPane>
             </Tabs>
-        </Drawer>
+        </WDrawer>
 
-        <Drawer v-model="projectSettingDrawerShow" width="75%">
+        <WDrawer v-model="projectSettingDrawerShow" maxWidth="1000">
             <Tabs v-if="projectSettingDrawerShow" v-model="projectSettingDrawerTab">
                 <TabPane :label="$L('已归档任务')" name="archived">
                     <project-archived :canload="projectSettingDrawerShow && projectSettingDrawerTab == 'archived'" :projectid="projectid"></project-archived>
@@ -114,7 +112,7 @@
                     <project-users :canload="projectSettingDrawerShow && projectSettingDrawerTab == 'member'" :projectid="projectid"></project-users>
                 </TabPane>
             </Tabs>
-        </Drawer>
+        </WDrawer>
     </div>
 </template>
 
@@ -309,7 +307,6 @@
 <script>
     import draggable from 'vuedraggable'
 
-    import WHeader from "../../components/WHeader";
     import WContent from "../../components/WContent";
     import WLoading from "../../components/WLoading";
     import ProjectAddTask from "../../components/project/task/add";
@@ -319,14 +316,16 @@
     import ProjectArchived from "../../components/project/archived";
     import ProjectUsers from "../../components/project/users";
     import ProjectStatistics from "../../components/project/statistics";
+    import WDrawer from "../../components/iview/WDrawer";
 
     export default {
         components: {
+            WDrawer,
             ProjectStatistics,
             ProjectUsers,
             ProjectArchived,
             ProjectTaskLogs,
-            ProjectTaskFiles, ProjectTaskLists, ProjectAddTask, draggable, WLoading, WContent, WHeader},
+            ProjectTaskFiles, ProjectTaskLists, ProjectAddTask, draggable, WLoading, WContent},
         data () {
             return {
                 loadIng: 0,

+ 1 - 4
resources/assets/js/main/pages/team.vue

@@ -3,8 +3,6 @@
 
         <v-title>{{$L('团队')}}-{{$L('轻量级的团队在线协作')}}</v-title>
 
-        <w-header value="team"></w-header>
-
         <div class="w-nav">
             <div class="nav-row">
                 <div class="w-nav-left">
@@ -88,11 +86,10 @@
     }
 </style>
 <script>
-    import WHeader from "../components/WHeader";
     import WContent from "../components/WContent";
     import ImgUpload from "../components/ImgUpload";
     export default {
-        components: {ImgUpload, WContent, WHeader},
+        components: {ImgUpload, WContent},
         data () {
             return {
                 loadIng: 0,

+ 7 - 8
resources/assets/js/main/pages/todo.vue

@@ -3,8 +3,6 @@
 
         <v-title>{{$L('待办')}}-{{$L('轻量级的团队在线协作')}}</v-title>
 
-        <w-header value="todo"></w-header>
-
         <div class="w-nav">
             <div class="nav-row">
                 <div class="w-nav-left">
@@ -72,7 +70,7 @@
             </div>
         </w-content>
 
-        <Drawer v-model="todoDrawerShow" width="75%">
+        <WDrawer v-model="todoDrawerShow" maxWidth="1000">
             <Tabs v-if="todoDrawerShow" v-model="todoDrawerTab">
                 <TabPane :label="$L('待办日程')" name="calendar">
                     <todo-calendar :canload="todoDrawerShow && todoDrawerTab == 'calendar'"></todo-calendar>
@@ -84,9 +82,9 @@
                     <todo-attention :canload="todoDrawerShow && todoDrawerTab == 'attention'"></todo-attention>
                 </TabPane>
             </Tabs>
-        </Drawer>
+        </WDrawer>
 
-        <Drawer v-model="todoReportDrawerShow" width="75%">
+        <WDrawer v-model="todoReportDrawerShow" maxWidth="1000">
             <Tabs v-if="todoReportDrawerShow" v-model="todoReportDrawerTab">
                 <TabPane :label="$L('我的汇报')" name="my">
                     <report-my :canload="todoReportDrawerShow && todoReportDrawerTab == 'my'"></report-my>
@@ -95,7 +93,7 @@
                     <report-receive :canload="todoReportDrawerShow && todoReportDrawerTab == 'receive'"></report-receive>
                 </TabPane>
             </Tabs>
-        </Drawer>
+        </WDrawer>
     </div>
 </template>
 
@@ -318,7 +316,6 @@
 <script>
     import draggable from 'vuedraggable'
 
-    import WHeader from "../components/WHeader";
     import WContent from "../components/WContent";
     import WLoading from "../components/WLoading";
     import TodoCalendar from "../components/project/todo/calendar";
@@ -328,11 +325,13 @@
     import Task from "../mixins/task";
     import ReportMy from "../components/report/my";
     import ReportReceive from "../components/report/receive";
+    import WDrawer from "../components/iview/WDrawer";
 
     export default {
         components: {
+            WDrawer,
             ReportReceive,
-            ReportMy, draggable, TodoAttention, TodoComplete, TodoCalendar, WContent, WHeader, WLoading},
+            ReportMy, draggable, TodoAttention, TodoComplete, TodoCalendar, WContent, WLoading},
         mixins: [
             Task
         ],

+ 5 - 5
resources/assets/js/main/routes.js

@@ -6,22 +6,22 @@ export default [
     }, {
         path: '/todo',
         name: 'todo',
-        meta: { slide: false },
+        meta: { slide: false, tabActive: 'todo' },
         component: resolve => require(['./pages/todo.vue'], resolve)
     }, {
         path: '/project',
         name: 'project',
-        meta: { slide: false },
+        meta: { slide: false, tabActive: 'project' },
         component: resolve => require(['./pages/project.vue'], resolve)
     }, {
         path: '/project/panel/:projectid',
         name: 'project-panel',
-        meta: { slide: false },
+        meta: { slide: false, tabActive: 'project' },
         component: resolve => require(['./pages/project/panel.vue'], resolve)
     }, {
         path: '/docs',
         name: 'docs',
-        meta: { slide: false },
+        meta: { slide: false, tabActive: 'docs' },
         component: resolve => require(['./pages/docs.vue'], resolve)
     }, {
         path: '/docs/edit/:sid',
@@ -31,7 +31,7 @@ export default [
     }, {
         path: '/team',
         name: 'team',
-        meta: { slide: false },
+        meta: { slide: false, tabActive: 'team' },
         component: resolve => require(['./pages/team.vue'], resolve)
     }
 ]