qinzhipeng_v 5 年之前
父節點
當前提交
ebeb3bf996

+ 12 - 0
src/router/index.js

@@ -118,6 +118,18 @@ export const constantRoutes = [
             component: () => import('@/views/projectManage/projectList/projectPreview'),
             meta: { title: '项目查看' }
           },
+          {
+            path: 'taskIndex',
+            name: '任务列表',
+            component: () => import('@/views/projectManage/taskList/taskIndex'),
+            meta: { title: '任务' }
+          },
+          {
+            path: 'taskViewDetails',
+            name: '任务列表',
+            component: () => import('@/views/projectManage/taskList/taskViewDetails'),
+            meta: { title: '任务详情' }
+          },
           {
             path: 'taskList',
             name: '任务列表',

+ 2 - 36
src/views/projectManage/projectList/projectIndex.vue

@@ -26,44 +26,10 @@
             <el-dropdown-item v-for="item in all_city_list" :key="item.value" :command="{value:item.value,label:item.label, flag:4}">{{ item.label }}</el-dropdown-item>
           </el-dropdown-menu>
         </el-dropdown>
-        <!-- <el-select id="basicName" v-model="value" clearable size="mini" placeholder="全部">
-          <el-option v-for="item in options1" :key="item.value" :label="item.label" :value="item.value" />
-        </el-select>
-        <el-select id="basicName" v-model="value" clearable size="mini" placeholder="业务线">
-          <el-option v-for="item in options1" :key="item.value" :label="item.label" :value="item.value" />
-        </el-select>
-        <el-select id="basicName" v-model="value" clearable size="mini" placeholder="项目类型">
-          <el-option v-for="item in options1" :key="item.value" :label="item.label" :value="item.value" />
-        </el-select>
-        <el-select id="basicName" v-model="value" clearable size="mini" placeholder="优先级">
-          <el-option v-for="item in options1" :key="item.value" :label="item.label" :value="item.value" />
-        </el-select> -->
-        <el-select
-          id="basicName"
-          v-model="form_all.all_PersonInCharge"
-          filterable
-          remote
-          reserve-keyword
-          :remote-method="remoteMethod"
-          :loading="loading"
-          clearable
-          size="mini"
-          placeholder="负责人"
-        >
+        <el-select id="basicName" v-model="form_all.all_PersonInCharge" filterable remote reserve-keyword :remote-method="remoteMethod" :loading="loading" clearable size="mini" placeholder="负责人">
           <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
         </el-select>
-        <el-select
-          id="basicName"
-          v-model="form_all.all_Founder"
-          filterable
-          remote
-          reserve-keyword
-          :remote-method="remoteMethod"
-          :loading="loading"
-          clearable
-          size="mini"
-          placeholder="创建人"
-        >
+        <el-select id="basicName" v-model="form_all.all_Founder" filterable remote reserve-keyword :remote-method="remoteMethod" :loading="loading" clearable size="mini" placeholder="创建人">
           <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
         </el-select>
         <el-button type="primary" size="mini" style="float: right">查询</el-button>

+ 15 - 15
src/views/projectManage/projectList/projectViewDetails.vue

@@ -185,9 +185,9 @@
         </el-tabs>
       </el-header>
       <el-container>
-        <el-aside class="bgborder" style="margin:0 1%;">
+        <el-aside class="bgborder" style="margin:0 1% 1% 1%;">
           <div style="margin: 5%; font-weight: 600; white-space: nowrap;">
-            <b style="color: #409EFF;margin: 0 0.5%; font-size: 20px; ">I</b>需求列表
+            <b style="color: #409EFF;margin: 0 0.5%; font-size: 20px; ">I</b>任务筛选
           </div>
           <div class="aside">全部任务</div>
           <div class="aside" @click="show2 = !show2">归属需求任务</div>
@@ -221,7 +221,7 @@
           </div>
         </el-aside>
         <el-container>
-          <el-main class="bgborder" style=" margin: 0 1.3% 0 0;min-height: 50vh;">
+          <el-main class="bgborder" style=" margin: 0 1.3% 1% 0;min-height: 50vh;">
             <div style="margin: 2.5%; font-weight: 600; white-space: nowrap;">
               <b style="color: #409EFF;margin: 0 0.5%; font-size: 20px; ">I</b>任务列表
             </div>
@@ -261,21 +261,21 @@
                 <template slot-scope="scope">{{ scope.row.teamName }}</template>
               </el-table-column>
             </el-table>
+            <div style="marign-top:3%;display:flex;align-items: center;justify-content: flex-end;">
+              <el-pagination
+                background
+                :current-page="currentPage"
+                :page-sizes="[15, 20, 25, 30]"
+                :page-size="100"
+                layout="total, prev, pager, next, jumper"
+                :total="100"
+                @size-change="handleSizeChange"
+                @current-change="handleCurrentChange"
+              />
+            </div>
           </el-main>
         </el-container>
       </el-container>
-      <el-footer class="footer" style="display:flex;align-items: center;justify-content: flex-end;">
-        <el-pagination
-          background
-          :current-page="currentPage"
-          :page-sizes="[15, 20, 25, 30]"
-          :page-size="100"
-          layout="total, prev, pager, next, jumper"
-          :total="100"
-          @size-change="handleSizeChange"
-          @current-change="handleCurrentChange"
-        />
-      </el-footer>
     </el-container>
     <el-dialog :visible.sync="dialogFormVisible" class="dialog">
       <div style="margin:0 0 2% 3%; font-weight: 600; white-space: nowrap;font-size: 20px;">

+ 348 - 0
src/views/projectManage/taskList/taskIndex.vue

@@ -0,0 +1,348 @@
+<template>
+  <div style="background-color:#F2F3F6;display:flex;align-items: center;justify-content: center;">
+    <el-container>
+      <el-header class="bgborder" style=" margin: 1%;display:flex;align-items: center;justify-content: space-between;">
+        <el-dropdown @command="handleCommand">
+          <span class="el-dropdown-link drop_down" style="cursor: pointer;">{{ form_task.task_all }}<i class="el-icon-arrow-down el-icon--right" /></span>
+          <el-dropdown-menu slot="dropdown" align="center">
+            <el-dropdown-item v-for="item in all_city_list" :key="item.value" :command="{ value: item.value, label: item.label, flag: 1 }">{{ item.label }}</el-dropdown-item>
+          </el-dropdown-menu>
+        </el-dropdown>
+        <el-dropdown @command="handleCommand">
+          <span class="el-dropdown-link drop_down" style="cursor: pointer;">{{ form_task.task_name }}<i class="el-icon-arrow-down el-icon--right" /></span>
+          <el-dropdown-menu slot="dropdown" align="center">
+            <el-dropdown-item v-for="item in all_city_list" :key="item.value" :command="{ value: item.value, label: item.label, flag: 2 }">{{ item.label }}</el-dropdown-item>
+          </el-dropdown-menu>
+        </el-dropdown>
+        <el-dropdown @command="handleCommand">
+          <span class="el-dropdown-link drop_down" style="cursor: pointer;">{{ form_task.task_project }}<i class="el-icon-arrow-down el-icon--right" /></span>
+          <el-dropdown-menu slot="dropdown" align="center">
+            <el-dropdown-item v-for="item in all_city_list" :key="item.value" :command="{ value: item.value, label: item.label, flag: 3 }">{{ item.label }}</el-dropdown-item>
+          </el-dropdown-menu>
+        </el-dropdown>
+        <el-dropdown @command="handleCommand">
+          <span class="el-dropdown-link drop_down" style="cursor: pointer;">{{ form_task.task_demand }}<i class="el-icon-arrow-down el-icon--right" /></span>
+          <el-dropdown-menu slot="dropdown" align="center">
+            <el-dropdown-item v-for="item in all_city_list" :key="item.value" :command="{ value: item.value, label: item.label, flag: 4 }">{{ item.label }}</el-dropdown-item>
+          </el-dropdown-menu>
+        </el-dropdown>
+        <el-dropdown @command="handleCommand">
+          <span class="el-dropdown-link drop_down" style="cursor: pointer;">{{ form_task.task_ExemptionTest }}<i class="el-icon-arrow-down el-icon--right" /></span>
+          <el-dropdown-menu slot="dropdown" align="center">
+            <el-dropdown-item v-for="item in all_city_list" :key="item.value" :command="{ value: item.value, label: item.label, flag: 8 }">{{ item.label }}</el-dropdown-item>
+          </el-dropdown-menu>
+        </el-dropdown>
+        <el-dropdown @command="handleCommand">
+          <span class="el-dropdown-link drop_down" style="cursor: pointer;">{{ form_task.task_bizId }}<i class="el-icon-arrow-down el-icon--right" /></span>
+          <el-dropdown-menu slot="dropdown" align="center">
+            <el-dropdown-item v-for="item in all_city_list" :key="item.value" :command="{ value: item.value, label: item.label, flag: 5 }">{{ item.label }}</el-dropdown-item>
+          </el-dropdown-menu>
+        </el-dropdown>
+        <el-dropdown @command="handleCommand">
+          <span class="el-dropdown-link drop_down" style="cursor: pointer;">{{ form_task.task_platform }}<i class="el-icon-arrow-down el-icon--right" /></span>
+          <el-dropdown-menu slot="dropdown" align="center">
+            <el-dropdown-item v-for="item in all_city_list" :key="item.value" :command="{ value: item.value, label: item.label, flag: 6 }">{{ item.label }}</el-dropdown-item>
+          </el-dropdown-menu>
+        </el-dropdown>
+        <el-dropdown @command="handleCommand">
+          <span class="el-dropdown-link drop_down" style="cursor: pointer;">{{ form_task.task_Modular }}<i class="el-icon-arrow-down el-icon--right" /></span>
+          <el-dropdown-menu slot="dropdown" align="center">
+            <el-dropdown-item v-for="item in all_city_list" :key="item.value" :command="{ value: item.value, label: item.label, flag: 7 }">{{ item.label }}</el-dropdown-item>
+          </el-dropdown-menu>
+        </el-dropdown>
+        <el-select id="basicName" v-model="form_task.task_PersonInCharge" filterable remote reserve-keyword :remote-method="remoteMethod" :loading="loading" size="mini" placeholder="负责人">
+          <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
+        </el-select>
+        <el-select id="basicName" v-model="form_task.task_Participant" filterable remote reserve-keyword :remote-method="remoteMethod" :loading="loading" size="mini" placeholder="参与人">
+          <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
+        </el-select>
+        <el-select id="basicName" v-model="form_task.task_Founder" filterable remote reserve-keyword :remote-method="remoteMethod" :loading="loading" size="mini" placeholder="创建人">
+          <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
+        </el-select>
+        <el-button type="primary" size="mini" style="float: right">查询</el-button>
+        <el-button size="mini" style="float: right;" @click="query_Reset">重置</el-button>
+      </el-header>
+
+      <el-main class="bgborder" style=" margin: 0 1%;min-height: 79.5vh;padding:0 !important">
+        <div style="margin: 1.5%; font-weight: 600; white-space: nowrap;"><b style="color: #409EFF;margin: 0 0.5%; font-size: 20px; ">I</b>任务列表 <el-button type="primary" size="mini" icon="el-icon-plus" style="float: right;" @click="dialogFormVisible = true">新建</el-button></div>
+        <el-table :data="tableData" style="width: 100%;" size="mini" :header-cell-style="{ background: '#6AB4FF', color: '#FFFFFF' }" show-overflow-tooltip="true" :row-class-name="tableRowClassName">
+          <el-table-column label="任务名称" min-width="200" align="center" show-overflow-tooltip>
+            <template slot-scope="scope"><span @click="link_project">{{ scope.row.address }}</span></template>
+          </el-table-column>
+          <el-table-column label="归属项目" min-width="100" align="center">
+            <template slot-scope="scope">{{ scope.row.teamName }}</template>
+          </el-table-column>
+          <el-table-column label="归属需求" min-width="100" align="center">
+            <template slot-scope="scope">{{ scope.row.teamName }}</template>
+          </el-table-column>
+          <el-table-column label="业务线" min-width="100" align="center">
+            <template slot-scope="scope">{{ scope.row.teamName }}</template>
+          </el-table-column>
+          <el-table-column label="平台" min-width="100" align="center">
+            <template slot-scope="scope">{{ scope.row.teamName }}</template>
+          </el-table-column>
+          <el-table-column label="模块" min-width="100" align="center">
+            <template slot-scope="scope">{{ scope.row.teamName }}</template>
+          </el-table-column>
+          <el-table-column label="是否免测" min-width="80" align="center">
+            <template slot-scope="scope">{{ scope.row.teamName }}</template>
+          </el-table-column>
+          <el-table-column label="开发负责人" min-width="80" align="center">
+            <template slot-scope="scope">{{ scope.row.teamName }}</template>
+          </el-table-column>
+          <el-table-column label="测试负责人" min-width="80" align="center">
+            <template slot-scope="scope">{{ scope.row.teamName }}</template>
+          </el-table-column>
+          <el-table-column label="开发" min-width="80" align="center">
+            <template slot-scope="scope">{{ scope.row.teamName }}</template>
+          </el-table-column>
+          <el-table-column label="测试" min-width="100" align="center">
+            <template slot-scope="scope">{{ scope.row.teamName }}</template>
+          </el-table-column>
+          <el-table-column label="创建日期" min-width="120" align="center">
+            <template slot-scope="scope">{{ scope.row.date }}</template>
+          </el-table-column>
+        </el-table>
+      </el-main>
+      <el-footer class="footer" style="display:flex;align-items: center;justify-content: flex-end;">
+        <el-pagination background :current-page="currentPage" :page-sizes="[15, 20, 25, 30]" :page-size="100" layout="total, prev, pager, next, jumper" :total="100" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
+      </el-footer>
+    </el-container>
+    <el-dialog title="新建任务" :visible.sync="dialogFormVisible" width="70%">
+      <el-form :model="form" label-position="right" style="margin: 0 3%;" label-width="120px">
+        <el-form-item label="任务名称" style="width: 100%">
+          <el-input v-model="form.name" autocomplete="off" placeholder="请输入任务名称" />
+        </el-form-item>
+        <div style="display:flex;align-items: center;justify-content: space-between;">
+          <div>
+            <el-form-item label="直接归属">
+              <el-checkbox-group v-model="form.type">
+                <el-checkbox label="不归属" name="type"> 不归属</el-checkbox>
+                <el-checkbox label="需求" name="type" />
+                <el-checkbox label="项目" name="type" />
+              </el-checkbox-group>
+            </el-form-item>
+            <el-form-item label="业务/平台/模块">
+              <el-select v-model="form.value" clearable placeholder="请选择" style="width: 20vw">
+                <el-option v-for="item in options1" :key="item.value" :label="item.label" :value="item.value" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="开发负责人">
+              <el-select v-model="form.value1" filterable remote reserve-keyword :remote-method="remoteMethod" :loading="loading" clearable placeholder="请输入姓名或邮箱前缀" style="width: 100%">
+                <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
+              </el-select>
+            </el-form-item>
+          </div>
+          <div>
+            <el-form-item label="归属需求">
+              <el-select v-model="form.value" clearable placeholder="请选择" style="width:20vw">
+                <el-option v-for="item in options1" :key="item.value" :label="item.label" :value="item.value" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="是否免测">
+              <el-checkbox-group v-model="form.checkList">
+                <el-checkbox label="否" name="type" />
+                <el-checkbox label="是" name="type" />
+              </el-checkbox-group>
+            </el-form-item>
+            <el-form-item label="测试负责人">
+              <el-select v-model="form.value1" filterable remote reserve-keyword :remote-method="remoteMethod" :loading="loading" clearable placeholder="请输入姓名或邮箱前缀" style="width: 100%">
+                <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
+              </el-select>
+            </el-form-item>
+          </div>
+        </div>
+        <el-form-item label="技术文档链接">
+          <el-input v-model="form.textarea" placeholder="请粘贴链接" />
+        </el-form-item>
+        <div style="display:flex;align-items: center;justify-content: space-between;">
+          <el-form-item label="是否跟版">
+            <el-checkbox-group v-model="form.checkList" style="width: 20vw;">
+              <el-checkbox label="否" name="type" />
+              <el-checkbox label="是" name="type" />
+            </el-checkbox-group>
+          </el-form-item>
+          <el-form-item label="涉及的客户端">
+            <el-select v-model="form.value1" filterable remote reserve-keyword :remote-method="remoteMethod" :loading="loading" clearable placeholder="请选择 多选" style="width: 20vw">
+              <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
+            </el-select>
+          </el-form-item>
+        </div>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="dialogFormVisible = false">取 消</el-button>
+        <el-button type="primary" @click="dialogFormVisible = false">创 建</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      curIndex: 1,
+      pageSize: 15,
+      options: [],
+      value1: [],
+      list: [],
+      form: {
+        type: [],
+        checkList: []
+      },
+      form_task: {
+        task_all: '全部',
+        task_name: '任务名称',
+        task_project: '归属项目',
+        task_demand: '归属需求',
+        task_ExemptionTest: '是否免测',
+        task_PersonInCharge: '负责人',
+        task_bizId: '业务线',
+        task_platform: '平台',
+        task_Modular: '模块',
+        task_Participant: '参与人',
+        task_Founder: '创建人'
+
+      },
+      loading: false,
+      dialogFormVisible: false,
+      currentPage: 0,
+      tableData: [{
+        value: '2016-05-02',
+        address: '王小虎',
+        teamName: '金沙江路 1518 弄'
+      }],
+      options1: [{
+        teamName: '选项1',
+        label: '黄金糕'
+      }, {
+        teamName: '选项2',
+        label: '双皮奶'
+      }, {
+        teamName: '选项3',
+        label: '蚵仔煎'
+      }, {
+        value: '选项4',
+        label: '龙须面'
+      }, {
+        value: '选项5',
+        label: '北京烤系三星那些闹事你辛苦啦斯诺克选手内心鸭'
+      }],
+      value: '',
+      all_city_list: [{ value: 1, label: '秦志鹏' }, { value: 2, label: '汝瑞' }, { value: 3, label: '赵杰' }]
+    }
+  },
+  methods: {
+    handleCommand(command) {
+      console.log(command)
+      var isCommand = ''
+      switch (command.flag) {
+        case 1: // 全部
+          this.form_task.task_all = command.label
+          isCommand = command.label.value
+          break
+        case 2:
+          this.form_task.task_name = command.label
+          isCommand = command.label.value
+          break
+        case 3:
+          this.form_task.task_project = command.label
+          isCommand = command.label.value
+          break
+        case 4:
+          this.form_task.task_demand = command.label
+          isCommand = command.label.value
+          break
+        case 5:
+          this.form_task.task_bizId = command.label
+          isCommand = command.label.value
+          break
+        case 6:
+          this.form_task.task_platform = command.label
+          isCommand = command.label.value
+          break
+        case 7:
+          this.form_task.task_Modular = command.label
+          isCommand = command.label.value
+          break
+        case 8:
+          this.form_task.task_ExemptionTest = command.label
+          isCommand = command.label.value
+          break
+      }
+      console.log(isCommand)
+    },
+    remoteMethod(query) {
+      if (query !== '') {
+        this.loading = true
+        setTimeout(() => {
+          this.loading = false
+          this.options = this.list.filter(item => {
+            return item.label.toLowerCase()
+              .indexOf(query.toLowerCase()) > -1
+          })
+        }, 200)
+      } else {
+        this.options = []
+      }
+    },
+    tableRowClassName({ row, rowIndex }) {
+      if (rowIndex === 1) {
+        return 'warning-row'
+      } else if (rowIndex === 3) {
+        return 'success-row'
+      }
+      return ''
+    },
+    link_project() {
+      window.open('http://localhost:9528/#/Platform/projectManage/projectViewDetails', '_blank')
+    },
+    query_Reset() { // 重置
+      this.$set(this.form_task, 'task_all', '全部')
+      this.$set(this.form_task, 'task_name', '任务名称')
+      this.$set(this.form_task, 'task_project', '归属项目')
+      this.$set(this.form_task, 'task_demand', '归属需求')
+      this.$set(this.form_task, 'task_ExemptionTest', '是否免测')
+      this.$set(this.form_task, 'task_bizId', '业务线')
+      this.$set(this.form_task, 'task_platform', '平台')
+      this.$set(this.form_task, 'task_Modular', '模块')
+      this.$set(this.form_task, 'task_PersonInCharge', '负责人')
+      this.$set(this.form_task, 'task_Participant', '参与人')
+      this.$set(this.form_task, 'task_Modular', '创建人')
+    },
+    handleSizeChange(size) { //  分页
+      this.pageSize = size
+      // this.get_list()
+    },
+    handleCurrentChange(curIndex) { //  分页
+      this.curIndex = curIndex
+      // this.get_list()
+    }
+  }
+}
+</script>
+
+<style>
+  .footer { text-align: right; margin: 1%; background-color: #FFFFFF; border-radius: 8px; }
+
+  .bgborder { background-color: #FFFFFF; border-radius: 8px;}
+
+  .bgborder .el-input__inner { border: none;width: 90px;}
+
+  .bgborder .el-select .el-input .el-select__caret { color: #333333 !important; }
+
+  .bgborder .el-table .el-table__body tr:hover td { color: #409EFF; background: #EEF0F5; } /*hover时字体, 背景颜色*/
+
+  .bgborder .el-input__icon { width: 77px !important; }
+
+  .el-table .warning-row { background: oldlace; }
+
+  /* #basicName::-webkit-input-placeholder {
+    color: #333333;
+  } */
+  .drop_down {
+     font-size: 13px;
+     color: #333333;
+     /* white-space: nowrap; */
+  }
+</style>

+ 528 - 0
src/views/projectManage/taskList/taskViewDetails.vue

@@ -0,0 +1,528 @@
+<template>
+  <div style="background-color:#F2F3F6;display:flex;align-items: center;justify-content: center;">
+    <el-container>
+      <el-header class="bgborder" style=" margin: 1%;height: 7vh;display: flex; justify-content: space-between; align-items: center;">
+        <el-tooltip class="item" effect="dark" content="爱啥啥" placement="bottom">
+          <span style="float: left;">项目名称:"两轮车数据重构2.1.3版 两轮车数据重构2.1.3版 两轮车数据……"</span>
+        </el-tooltip>
+        <span style="float: right;">
+          <el-dropdown>
+            <el-button size="mini" type="primary" plain>已完成<i class="el-icon-arrow-down el-icon--right" /></el-button>
+            <el-dropdown-menu slot="dropdown">
+              <el-dropdown-item>进行中</el-dropdown-item>
+              <el-dropdown-item>已完成</el-dropdown-item>
+            </el-dropdown-menu>
+          </el-dropdown>
+          <el-button size="mini" type="primary" plain>删除任务</el-button>
+          <el-dropdown>
+            <el-button size="mini" type="primary" plain>新建<i class="el-icon-arrow-down el-icon--right" />
+            </el-button>
+            <el-dropdown-menu slot="dropdown">
+              <el-dropdown-item>新建需求</el-dropdown-item>
+              <el-dropdown-item>新建任务</el-dropdown-item>
+            </el-dropdown-menu>
+          </el-dropdown>
+        </span>
+      </el-header>
+      <el-container>
+        <el-aside class="bgborder" style=" margin:0 1%;minWidth: 55%;">
+          <div style="margin: 5%; font-weight: 600; white-space: nowrap;">
+            <b style="color: #409EFF;margin: 0 0.5%; font-size: 20px; ">I</b>数据统计
+          </div>
+          <div style="display: flex; justify-content: space-between; align-items: center;">
+            <span style="text-align: center; margin:0 8%">
+              <p>bug数量</p>
+              <p style="font-size: 70px;">19</p>
+              <p>
+                <span style="color: #F56C6C;">已延期2天</span>
+              </p>
+            </span>
+            <div id="div1" style="width:500px;height:300px;margin-bottom: 3%;">s</div>
+          </div>
+        </el-aside>
+        <el-container>
+          <el-main class="bgborder form_e" style="margin: 0 2.1% 0 0;min-height: 50vh;">
+            <div style="margin: 2.5%; font-weight: 600; white-space: nowrap;">
+              <b style="color: #409EFF;margin: 0 0.5%; font-size: 20px; ">I</b>基础信息
+            </div>
+            <el-form label-position="left" label-width="150px" style="margin: 0 8%" :model="formLabelAlign">
+              <el-row :gutter="20">
+                <el-col :span="12">
+                  <el-form-item label="所属项目:">{{ 12 }}</el-form-item>
+                </el-col>
+                <el-col :span="12" :push="7">
+                  <el-button size="mini" type="primary" @click="project_modifica(formLabelAlign.describe)">修改</el-button>
+                </el-col>
+              </el-row>
+              <el-form-item label="所属需求:">{{ "我是一个小需求" }}</el-form-item>
+              <el-form-item label="业务线/平台/模块:">{{ '代驾/服务端/支付' }}</el-form-item>
+              <el-form-item label="是否免测:">{{ '否' }}</el-form-item>
+              <el-form-item label="开发负责人:">{{ '秦志鹏' }}</el-form-item>
+              <el-form-item label="测试负责人:">{{ '郑美双' }}</el-form-item>
+              <el-form-item label="涉及的客户端:">{{ '滴滴乘客端app' }}</el-form-item>
+              <el-form-item label="技术文档:">{{ 'http://10.179.115.141:8877/#/' }}</el-form-item>
+
+            </el-form>
+          </el-main>
+        </el-container>
+      </el-container>
+      <el-header class="bgborder" style="margin: 1%;min-height: 70vh; padding: 0;">
+        <div style="margin: 3%; font-weight: 600; white-space: nowrap;">
+          <b style="color: #409EFF;margin: 0 0.5%; font-size: 20px; ">I</b>排期事件
+        </div>
+        <el-row :gutter="20" style="margin: 2% 3%">
+          <el-col :span="12">
+            <el-button size="mini" type="primary">添加事件</el-button>
+          </el-col>
+          <el-col :span="12" :push="7">
+            <el-button-group>
+              <el-button size="mini" type="primary" plain>甘特图</el-button>
+              <el-button size="mini" type="primary" plain>列 表</el-button>
+            </el-button-group>
+          </el-col>
+        </el-row>
+        <div>
+          <el-table :data="tableData" style="width: 100%;" size="mini" :header-cell-style="{ background: '#6AB4FF', color: '#FFFFFF' }" show-overflow-tooltip="true" :row-class-name="tableRowClassName">
+            <el-table-column label="事件名称" min-width="100" align="center">
+              <template slot-scope="scope">{{ scope.row.address }}</template>
+            </el-table-column>
+            <el-table-column label="描述" min-width="100" align="center">
+              <template slot-scope="scope">{{ scope.row.teamName }}</template>
+            </el-table-column>
+            <el-table-column label="排期" min-width="100" align="center">
+              <template slot-scope="scope">{{ scope.row.teamName }}</template>
+            </el-table-column>
+            <el-table-column label="人员" min-width="100" align="center">
+              <template slot-scope="scope">{{ scope.row.teamName }}</template>
+            </el-table-column>
+            <el-table-column label="操作" min-width="100" align="center">
+              <template>
+                <el-button size="mini" type="primary" plain>编辑</el-button>
+                <el-button size="mini" type="primary" plain>删除</el-button>
+              </template>
+            </el-table-column>
+          </el-table>
+
+        </div>
+      </el-header>
+      <el-footer class="footer" style=" height: auto;">
+        <el-tabs tab-position="top" @tab-click="handleClick">
+          <el-tab-pane label="Bug" style="position: relative;">
+            <el-divider style="color: #E9E9E9;" /><hr>
+            <div style="margin: 2% 0;display: flex; justify-content: space-start; align-items: center;">
+              <span>快速筛选:</span>
+              <span>全部</span>
+              <span>待测试</span>
+              <span>开发中</span>
+              <span>待开发</span>
+              <span>已完成</span>
+            </div>
+            <el-table :data="tableData" style="width: 100%;" size="mini" :header-cell-style="{ background: '#6AB4FF', color: '#FFFFFF' }" show-overflow-tooltip="true" :row-class-name="tableRowClassName">
+              <el-table-column label="标题名称" min-width="100" align="center">
+                <template slot-scope="scope">{{ scope.row.address }}</template>
+              </el-table-column>
+              <el-table-column label="状态" min-width="100" align="center">
+                <template slot-scope="scope">{{ scope.row.teamName }}</template>
+              </el-table-column>
+              <el-table-column label="提报人" min-width="100" align="center">
+                <template slot-scope="scope">{{ scope.row.teamName }}</template>
+              </el-table-column>
+              <el-table-column label="责任人" min-width="100" align="center">
+                <template slot-scope="scope">{{ scope.row.teamName }}</template>
+              </el-table-column>
+              <el-table-column label="提报日期" min-width="100" align="center">
+                <template slot-scope="scope">{{ scope.row.teamName }}</template>
+              </el-table-column>
+            </el-table>
+          </el-tab-pane>
+          <el-tab-pane label="提测报告" style="overflow: auto;width: 100%;">
+            f
+          </el-tab-pane>
+          <el-tab-pane label="测试报告" style="overflow: auto;width: 100%;">
+            f
+          </el-tab-pane>
+          <el-tab-pane label="准出报告" style="overflow: auto;width: 100%;">
+            f
+          </el-tab-pane>
+          <el-tab-pane label="评论" style="overflow: auto;width: 100%;">
+            f
+          </el-tab-pane>
+        </el-tabs>
+        <div style="display:flex;align-items: center;justify-content: flex-end;">
+          <el-pagination
+            background
+            :current-page="currentPage"
+            :page-sizes="[15, 20, 25, 30]"
+            :page-size="100"
+            layout="total, prev, pager, next, jumper"
+            :total="100"
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+          />
+        </div>
+
+      </el-footer>
+    </el-container>
+    <el-dialog title="新建项目" :visible.sync="dialog_FormVisible" width="70%">
+      <el-form :model="form" label-position="left" style="margin: 0 3%;">
+        <el-form-item label="项目名称" :label-width="formLabelWidth">
+          <el-input v-model="form.name" autocomplete="off" placeholder="请输入项目名称" />
+        </el-form-item>
+        <div style="display: flex;">
+          <div style="flex; 1;">
+            <el-form-item label="项目类型" :label-width="formLabelWidth">
+              <el-select v-model="form.value" clearable placeholder="业务/产品" style="width: 100%">
+                <el-option v-for="item in options1" :key="item.value" :label="item.label" :value="item.value" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="业务线" :label-width="formLabelWidth">
+              <el-select v-model="form.value" clearable placeholder="请选择" style="width:20vw">
+                <el-option v-for="item in options1" :key="item.value" :label="item.label" :value="item.value" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="产品负责人" :label-width="formLabelWidth">
+              <el-select v-model="form.value1" filterable remote reserve-keyword :remote-method="remoteMethod" :loading="loading" clearable placeholder="请输入姓名或邮箱前缀" style="width: 100%">
+                <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="测试负责人" :label-width="formLabelWidth">
+              <el-select v-model="form.value1" filterable remote reserve-keyword :remote-method="remoteMethod" :loading="loading" clearable placeholder="请输入姓名或邮箱前缀" style="width: 100%">
+                <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
+              </el-select>
+            </el-form-item>
+          </div>
+          <div style="flex; 1; margin: 0 0 0 auto;">
+            <el-form-item label="优先级" :label-width="formLabelWidth">
+              <el-select v-model="form.value" clearable placeholder="请选择" style="width:20vw">
+                <el-option v-for="item in options1" :key="item.value" :label="item.label" :value="item.value" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="项目负责人" :label-width="formLabelWidth">
+              <el-select v-model="form.value1" filterable remote reserve-keyword :remote-method="remoteMethod" :loading="loading" clearable placeholder="请输入姓名或邮箱前缀" style="width: 100%">
+                <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="开发负责人" :label-width="formLabelWidth">
+              <el-select v-model="form.value1" filterable remote reserve-keyword :remote-method="remoteMethod" :loading="loading" clearable placeholder="请输入姓名或邮箱前缀" style="width: 100%">
+                <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
+              </el-select>
+            </el-form-item>
+          </div>
+        </div>
+        <el-form-item label="项目描述" :label-width="formLabelWidth">
+          <el-input v-model="form.textarea" type="textarea" placeholder="请输入" show-word-limit />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="dialog_FormVisible = false">取 消</el-button>
+        <el-button type="primary" @click="dialog_FormVisible = false">创 建</el-button>
+      </div>
+    </el-dialog>
+    <el-dialog :visible.sync="centerDialogVisible" width="30%" center>
+      <div align="center">确定要删除此项目吗?</div>
+      <spn slot="footer" class="dialog-footer">
+        <el-button @click="centerDialogVisible = false">取 消</el-button>
+        <el-button type="primary" @click="centerDialogVisible = false">确 定</el-button>
+      </spn>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import echarts from 'echarts'
+export default {
+  data() {
+    return {
+      Addition: false,
+      Addition1: false,
+      Addition2: false,
+      textarea: '', // 项目总目标
+      total: 0,
+      tableData: [],
+      formLabelAlign: {
+        describe: ''
+      },
+      show2: true,
+      describe: false,
+      describe1: false,
+      dialogFormVisible: false,
+      dialog_FormVisible: false,
+      centerDialogVisible: false,
+      formLabelWidth: '120px',
+      form: {
+        name: '',
+        region: '',
+        date1: '',
+        date2: '',
+        delivery: false,
+        type: [],
+        resource: '',
+        desc: ''
+      },
+      formLabelWidth1: '60px',
+      project_Milepost: [
+        {
+          name: '第一阶段',
+          date: '2019/12/06',
+          code: '你丹江口市内存卡就是你的错'
+        },
+        {
+          name: '第一阶段',
+          date: '2019/12/06',
+          code: '你丹江口市内存卡就是你的错'
+        },
+        {
+          name: '第一阶段',
+          date: '2019/12/06',
+          code: '你丹江口市内存卡就是你的错'
+        },
+        {
+          name: '第一阶段',
+          date: '2019/12/06',
+          code: '你丹江口市内存卡就是你的错'
+        },
+        {
+          name: '第一阶段',
+          date: '2019/12/06',
+          code: '你丹江口市内存卡就是你的错'
+        },
+        {
+          name: '第一阶段',
+          date: '2019/12/06',
+          code: '你丹江口市内存卡就是你的错'
+        },
+        {
+          name: '第一阶段',
+          date: '2019/12/06',
+          code: '你丹江口市内存卡就是你的错'
+        },
+        {
+          name: '第一阶段',
+          date: '2019/12/06',
+          code: '你丹江口市内存卡就是你的错'
+        },
+        {
+          name: '第一阶段',
+          date: '2019/12/06',
+          code: '你丹江口市内存卡就是你的错'
+        },
+        {
+          name: '第一阶段',
+          date: '2019/12/06',
+          code: '你丹江口市内存卡就是你的错'
+        },
+        {
+          name: '第一阶段',
+          date: '2019/12/06',
+          code: '你丹江口市内存卡就是你的错'
+        }
+      ]
+    }
+  },
+  created() {
+    this.get_list()
+  },
+  mounted() {
+    this.get_echarts()
+  },
+  methods: {
+    get_list() {
+      if (this.textarea === '') {
+        this.Addition = true
+      } else {
+        this.Addition2 = true
+      }
+      if (this.formLabelAlign.describe !== '') {
+        this.describe1 = true
+      } else {
+        this.describe = false
+      }
+    },
+    get_echarts() {
+      var myChart = echarts.init(document.getElementById('div1'))
+      myChart.setOption({
+        xAxis: {
+          type: 'category',
+          data: ['待开发', '开发中', '待测试', '已完成']
+        },
+        yAxis: [{ gridIndex: 0, axisTick: { show: false }, axisLabel: { show: false }, splitLine: { show: false }, axisLine: { show: false }}],
+        series: [{
+          data: [120, 200, 150, 80],
+          type: 'bar'
+        }]
+      })
+      window.onresize = myChart.resize
+    },
+    project_modifica(e) {
+      this.dialog_FormVisible = true
+      // this.describe = true
+      // this.describe1 = false
+      // this.$set(this.formLabelAlign, 'describe', e)
+      // setTimeout(() => {
+      //   this.$refs.describe.focus()
+      // }, 100)
+    },
+    blur_describe(e) {
+      this.describe = false
+      this.describe1 = true
+      this.$set(this.formLabelAlign, 'describe', e)
+    },
+    click_b() {
+      console.log('v')
+    },
+    handleClick(tab, event) {
+      console.log(tab, event)
+    },
+    tableRowClassName({ row, rowIndex }) {
+      if (rowIndex === 1) {
+        return 'warning-row'
+      } else if (rowIndex === 3) {
+        return 'success-row'
+      }
+      return ''
+    },
+
+    ImmediateAddition() { // 立即添加(编辑)
+      setTimeout(() => { this.$refs.textarea.focus() }, 100)
+      this.Addition = false
+      this.Addition1 = true
+      this.Addition2 = false
+    },
+    blur_textarea(e) { // 项目总目标失去焦点
+      if (e !== '') {
+        this.textarea = e
+        this.Addition2 = true
+        this.Addition1 = false
+        this.Addition = false
+      } else {
+        this.Addition2 = false
+        this.Addition1 = false
+        this.Addition = true
+      }
+    },
+    handleSizeChange(size) { //  分页
+      this.pageSize = size
+      // this.get_list()
+    },
+    handleCurrentChange(curIndex) { //  分页
+      this.curIndex = curIndex
+      // this.get_list()
+    }
+  }
+}
+</script>
+<style lang="stylus">
+.footer .el-tabs__nav-wrap::after {
+  background-color: #FFFFFF !important;
+}
+
+.bgborder {
+  background-color: #FFFFFF;
+  border-radius: 8px;
+}
+
+.footer {
+  margin: 1%;
+  background-color: #FFFFFF;
+  border-radius: 8px;
+}
+
+.aside {
+  font-size: 14px;
+  margin: 5%;
+  cursor: pointer;
+}
+
+.aside:hover {
+  color: #409EFF;
+}
+
+.el-main {
+  padding: 0 !important;
+}
+
+.el-tooltip__popper {
+  max-width: 200px;
+}
+
+.test {
+  height: 50vh;
+  color: #666666;
+  font-size: 14px;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+.time-horizontal {
+  list-style-type: none;
+  padding: 0px;
+  margin: 0px;
+  width: 100%;
+  height: 222px;
+  white-space: nowrap;
+}
+
+.dialog .el-dialog__header {
+  padding: 0;
+}
+
+.time-horizontal li {
+  display: inline-block;
+  position: relative;
+  text-align: center;
+  width: 25%;
+  padding-top: 7%;
+}
+
+.time-horizontal li i div {
+  position: absolute;
+  top: -10px;
+  left: 50%;
+  margin-left: -10px;
+  width: 20px;
+  height: 20px;
+}
+
+.time-horizontal li i div b {
+  display: inline-block;
+  cursor: pointer;
+  border: 2px solid #61D3B8;
+  border-radius: 50%;
+  background: #61D3B8;
+  color: #61D3B8;
+  z-index: 9999;
+  width: 20px;
+  height: 20px;
+}
+
+.time-horizontal li i:before {
+  content: '';
+  width: 0%;
+  text-align: center;
+  position: absolute;
+  top: -50%;
+  left: 49.3%;
+  height: 100%;
+  border: 1px dashed #BBBBBB;
+}
+
+.time-horizontal li div {
+  text-align: center;
+  width: 100%;
+  position: absolute;
+  bottom: 197%;
+}
+
+.el-divider--horizontal {
+  display: block;
+  height: 1px;
+  width: 100%;
+  position: absolute !important;
+  margin: 0 !important;
+}
+
+.form_e .el-form-item {
+  margin-bottom: 0px;
+}
+</style>