Ver Fonte

Merge branch 'http_mock' of git.xiaojukeji.com:jacklijiajia/thoth-frontend into http_mock

qinzhipeng_v há 5 anos atrás
pai
commit
b69c4cbf5d

+ 4 - 3
package.json

@@ -40,9 +40,9 @@
     "path-to-regexp": "2.4.0",
     "qrcodejs2": "0.0.2",
     "simditor": "^2.3.26",
-    "swiper": "^4.5.0",
     "v-jsoneditor": "^1.2.2",
     "vue": "2.6.10",
+    "vue-awesome-swiper": "^4.0.4",
     "vue-fullcalendar": "^1.0.9",
     "vue-json-viewer": "^2.2.8",
     "vue-qr": "^2.2.1",
@@ -71,15 +71,16 @@
     "html-webpack-plugin": "3.2.0",
     "mockjs": "1.0.1-beta3",
     "node-sass": "^4.9.0",
-    "stylus": "^0.54.7",
-    "stylus-loader": "^3.0.2",
     "runjs": "^4.3.2",
     "sass-loader": "^7.1.0",
     "script-ext-html-webpack-plugin": "2.1.3",
     "script-loader": "^0.7.2",
     "serve-static": "^1.13.2",
+    "stylus": "^0.54.7",
+    "stylus-loader": "^3.0.2",
     "svg-sprite-loader": "4.1.3",
     "svgo": "1.2.2",
+    "swiper": "^4.5.1",
     "vue-template-compiler": "2.6.10"
   },
   "engines": {

BIN
src/icons/png/next.png


BIN
src/icons/png/previous.png


+ 1 - 1
src/icons/svg/测试.svg

@@ -1,3 +1,3 @@
 
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M996.291765 1.505882H86.919529C38.972235 1.505882 0 39.333647 0 85.835294V939.670588c0 46.561882 38.972235 84.329412 86.979765 84.329412H996.291765c48.007529 0 87.04-37.767529 87.04-84.329412V85.835294c0-46.501647-39.152941-84.329412-87.04-84.329412zM86.919529 62.343529H996.291765c13.372235 0 24.214588 10.541176 24.214588 23.491765v116.073412H62.765176V85.835294c0-12.950588 10.842353-23.491765 24.214589-23.491765zM996.291765 963.041882H86.979765a23.853176 23.853176 0 0 1-24.214589-23.491764V252.687059h957.741177v686.923294c0 12.950588-10.902588 23.491765-24.274824 23.491765z" fill="#565656" p-id="1096"></path><path d="M897.024 784.986353H668.009412c-17.950118 0-32.406588 13.010824-32.406588 29.153882s14.456471 29.153882 32.406588 29.153883h229.014588c18.010353 0 32.406588-13.010824 32.406588-29.153883s-14.456471-29.153882-32.406588-29.153882z m-599.943529-288.225882a34.876235 34.876235 0 0 0-45.778824-1.505883 27.105882 27.105882 0 0 0-1.566118 41.200941l140.830118 136.252236-139.625412 120.410353a27.045647 27.045647 0 0 0-0.963764 41.200941c6.384941 5.963294 14.878118 8.975059 23.371294 8.975059a33.852235 33.852235 0 0 0 22.407529-8.131765l162.635294-140.227765a27.166118 27.166118 0 0 0 1.325177-40.96l-162.635294-157.214117z" fill="#409EFF" p-id="1097"></path></svg>
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M1003.656533 1.501867H87.6544C39.253333 1.501867 0 39.3216 0 85.879467v853.8112C0 986.180267 39.253333 1024 87.6544 1024h916.002133c48.3328 0 87.586133-37.819733 87.586134-84.309333V85.879467c0-46.557867-39.389867-84.3776-87.586134-84.3776zM87.6544 62.395733h916.002133c13.448533 0 24.3712 10.513067 24.3712 23.483734v116.053333H63.2832v-116.053333c0-12.970667 10.922667-23.483733 24.3712-23.483734z m916.002133 900.573867H87.6544a23.9616 23.9616 0 0 1-24.3712-23.415467V252.586667h964.744533v686.967466c0 12.970667-10.922667 23.415467-24.3712 23.415467z" fill="#565656" p-id="1096"></path><path d="M903.714133 784.930133h-230.741333c-18.158933 0-32.699733 13.038933-32.699733 29.218134 0 16.110933 14.5408 29.149867 32.699733 29.149866h230.741333c18.090667 0 32.631467-12.970667 32.631467-29.149866s-14.5408-29.218133-32.631467-29.218134zM299.349333 496.708267a35.362133 35.362133 0 0 0-46.148266-1.4336 26.965333 26.965333 0 0 0-1.6384 41.233066l141.9264 136.192-140.629334 120.4224a26.897067 26.897067 0 0 0-1.024 41.1648c6.417067 5.9392 15.018667 9.0112 23.552 9.0112 8.192 0 16.384-2.730667 22.528-8.192l163.84-140.151466a27.0336 27.0336 0 0 0 1.365334-40.96l-163.84-157.2864z" fill="#409EFF" p-id="1097"></path></svg>
 		

+ 9 - 7
src/views/ToConfigure/configure.vue

@@ -151,16 +151,17 @@
                 border
                 :tree-props="{children: 'childModules', hasChildren: 'hasChildren'}"
                 :row-class-name="tableRowhidden"
+                header-align="center"
               >
-                <el-table-column v-if="false" prop="id" label="ID" width="180" />
-                <el-table-column prop="moduleName" label="模块名称" width="280">
+                <el-table-column v-if="false" prop="id" label="ID" width="180" align="center" />
+                <el-table-column prop="moduleName" label="模块名称">
                   <template slot="header">
                     模块名称<i class="el-icon-circle-plus" @click="handlerModule('add')" />
                   </template>
                 </el-table-column>
-                <el-table-column prop="creator" label="创建人" width="120" />
-                <el-table-column prop="createTime" label="创建时间" />
-                <el-table-column label="操作">
+                <el-table-column prop="creator" label="创建人" width="120" align="center" />
+                <el-table-column prop="createTime" label="创建时间" width="180" align="center" />
+                <el-table-column label="操作" width="240" align="center">
                   <template slot-scope="scope">
                     <el-button
                       size="mini"
@@ -172,7 +173,6 @@
                     >编辑</el-button>
                     <el-button
                       size="mini"
-                      type="danger"
                       @click="handlerModule('delete', scope.row, scope.$index)"
                     >删除</el-button>
                   </template>
@@ -589,19 +589,21 @@ export default {
     handlerModule(type, data, index) { // 模块处理
       console.log(data)
       this.moduleDialog = true
-      this.moduleTitle = '新增模块'
       this.curcentModule = type
       this.moduleForm = { bizId: null, moduleNames: [null], parentId: -1, id: null }// 初始化
       this.curcentParent = '无'
       if (data && type === 'add') {
+        this.moduleTitle = '新增模块'
         this.curcentParent = data.moduleName
         this.moduleForm.parentId = data.id
       } else if (data && type === 'edit') {
+        this.moduleTitle = '编辑模块'
         this.moduleForm.id = data.id
         this.curcentParent = data.parentId === -1 ? '无' : data.parentModuleName
         this.moduleForm.parentId = data.parentId
         this.moduleForm.moduleNames[0] = data.moduleName
       } else if (data && type === 'delete') {
+        this.moduleTitle = '删除确认'
         this.moduleForm.id = data.id
         this.moduleForm.moduleNames[0] = data.moduleName
       }

+ 4 - 0
src/views/projectManage/bugList/bugindex.vue

@@ -344,6 +344,9 @@
       <el-main :style="type === 'page'?{padding: '1%'}:{padding: '0'}">
         <el-row class="headerBg table_v" style=" padding-top: 0px;">
           <el-col :span="24" style="min-height: 47vh;">
+            <div v-if="type !== 'page'" style="position: relative;top: 5px;right: 10px">
+              <el-divider />
+            </div>
             <el-table
               size="small"
               :data="tableData"
@@ -746,3 +749,4 @@ export default {
   }
 }
 </script>
+

+ 80 - 61
src/views/projectManage/version/list/index.vue

@@ -1,38 +1,58 @@
 <template>
-  <el-container>
+  <el-container class="version_list">
     <div style="width:100%;height:100%;padding-top:1px;background-color: #F2F3F6;">
-      <div class="layout_header">
-        <div style="font-size: 14px;color: #333333;padding-left:20px">
-          <el-dropdown placement="bottom" @command="handleCommand">
-            <span class="el-dropdown-link">
-              {{ getTitle(searchTitle.client) }}
-              <i class="el-icon-arrow-down el-icon--right" />
-            </span>
-            <el-dropdown-menu slot="dropdown" class="version_el-dropdown-menu">
-              <el-dropdown-item
-                v-for="(item,index) in searchInfo.clients"
-                :key="index"
-                :command="{value: item,flag: 1}"
-              >{{ item.msg }}</el-dropdown-item>
-            </el-dropdown-menu>
-          </el-dropdown>
+      <el-main class="layout_header" style="padding: 1% 2%">
+        <div>
+          <span style="font-size: 22px;letter-spacing: 1px;font-weight: 600;color: #333B4A;">版本</span>
         </div>
-        <div style="font-size: 14px;color: #333333;padding-left:50px">
-          <el-dropdown placement="bottom" @command="handleCommand">
-            <span class="el-dropdown-link">
-              {{ getTitle(searchTitle.version) }}
-              <i class="el-icon-arrow-down el-icon--right" />
-            </span>
-            <el-dropdown-menu slot="dropdown" class="version_el-dropdown-menu">
-              <el-dropdown-item
-                v-for="(item,index) in searchInfo.versions"
-                :key="index"
-                :command="{value: item,flag: 2}"
-              >{{ item.msg }}</el-dropdown-item>
-            </el-dropdown-menu>
-          </el-dropdown>
+        <div style="position: relative;right: 1%">
+          <el-divider />
         </div>
-      </div>
+        <el-row>
+          <el-col :span="20">
+            <span class="queryName">客户端</span>
+            <el-select
+              v-model="searchForm.clientType"
+              size="small"
+              style="padding-left: 2px;"
+              clearable
+              filterable
+              placeholder="请选择"
+              @change="getVersionHomePageList()"
+            >
+              <el-option
+                v-for="item in searchInfo.clients"
+                :key="item.code"
+                :label="item.msg"
+                :value="item.code"
+              />
+            </el-select>
+            <span class="queryName" style="margin-left: 4%">版本</span>
+            <el-select
+              v-model="searchForm.versionType"
+              size="small"
+              style="padding-left: 2px;"
+              clearable
+              filterable
+              placeholder="请选择"
+              @change="getVersionHomePageList()"
+            >
+              <el-option
+                v-for="item in searchInfo.versions"
+                :key="item.code"
+                :label="item.msg"
+                :value="item.code"
+              />
+            </el-select>
+          </el-col>
+          <el-col :span="4">
+            <div style="font-size: 14px;color: #00A0FF;cursor: pointer;line-height: 32px;text-align: right" @click="timeLineShow = !timeLineShow">{{ timeLineShow?'收起详情':'版本详情' }}</div>
+          </el-col>
+        </el-row>
+        <div v-if="timeLineShow" class="time-line-container">
+          <time-line :steps="timeLineSteps" />
+        </div>
+      </el-main>
       <div class="layout_main version_list_layout_main">
         <div style="display:flex;align-items: center;padding:20px">
           <div style="width:4px;height:17px;background:#409EFF;border-radius:1px;" />
@@ -109,15 +129,26 @@
 </template>
 
 <script>
+import TimeLine from './timeLine'
 import { getVersionHomePageList, showAppClientEnum, showVersionEnum } from '@/api/version.js'
 import VersionChart from '@/components/chart/index.vue'
 
 export default {
   components: {
-    VersionChart
+    VersionChart,
+    TimeLine
   },
   data() {
     return {
+      timeLineSteps: [
+        { dateLabel: 'January 2017', title: 'Gathering Information' },
+        { dateLabel: 'February 2017', title: 'Planning' },
+        { dateLabel: 'March 2017', title: 'Design' },
+        { dateLabel: 'April 2017', title: 'Content Writing and Assembly' },
+        { dateLabel: 'May 2017', title: 'Coding' },
+        { dateLabel: 'June 2017', title: 'Testing, Review & Launch' },
+        { dateLabel: 'July 2017', title: 'Maintenance' }],
+      timeLineShow: false,
       priorityColors: ['#F56C6C', '#FF8952', '#F5E300', '#7ED321', '#61D3B8', '#69B3FF', '#BDBDBD'],
       tableData: [],
       loading: false,
@@ -301,29 +332,6 @@ export default {
         return str.substring(0, 6) + '...'
       }
     },
-    handleCommand(command) {
-      switch (command.flag) {
-        case 1:
-          this.searchTitle.client = command.value.msg
-          this.searchInfo.versions = command.value.childEnumInfos
-          if (command.value.code !== this.searchForm.clientType) {
-            if (this.searchInfo.versions && this.searchInfo.versions.length > 0) {
-              this.searchForm.versionType = this.searchInfo.versions[0].code
-              this.searchTitle.version = this.searchInfo.versions[0].msg
-            } else {
-              this.searchForm.versionType = null
-              this.searchTitle.version = '无版本'
-            }
-          }
-          this.searchForm.clientType = command.value.code
-          break
-        case 2:
-          this.searchForm.versionType = command.value.code
-          this.searchTitle.version = command.value.msg
-          break
-      }
-      this.getVersionHomePageList()
-    },
     getToRequirementDetails(id) {
       this.$router.push({ name: '需求详情', params: { id: id + '' }})
     },
@@ -448,6 +456,18 @@ export default {
 </script>
 
 <style scoped>
+.time-line-container {
+  margin-top: 20px;
+  border: 1px solid rgba(238,238,238,1);
+  background: #FCFCFC;
+  border-radius: 4px;
+}
+.queryName {
+  display: inline-block;
+  width: 80px;
+  color: #333333;
+  font-size: 14px;
+}
 .el-dropdown-link {
   cursor: pointer;
   color: #333333;
@@ -461,11 +481,8 @@ export default {
   padding: 0 5px 2% 0
 }
 .layout_header {
-  height: 60px;
   width: 98%;
   margin: 1% auto;
-  display: flex;
-  align-items: center;
 }
 .layout_main {
   width: 98%;
@@ -493,9 +510,11 @@ export default {
 </style>
 
 <style>
-.el-dropdown-menu__item:not(.is-disabled):hover {
-  background-color: #f6f7fa;
-  color: #606266;
+.version_list .el-divider--horizontal {
+    display: block;
+    height: 1px;
+    width: 100%;
+    margin: 10px;
 }
 .version_list_layout_main .el-table__body tr:hover td {
   color: #409eff;

+ 162 - 0
src/views/projectManage/version/list/timeLine.vue

@@ -0,0 +1,162 @@
+<template>
+  <div class="swiper-container">
+    <swiper ref="mySwiper" class="swiper-wrapper timeline" :options="options">
+      <swiper-slide v-for="(item,index) in steps" :key="index" class="swiper-slide">
+        <div class="timestamp">
+          <span class="date">{{ item.dateLabel }}</span>
+        </div>
+        <div class="status">
+          <span>{{ item.title }}</span>
+        </div>
+      </swiper-slide>
+      <!-- 分页器 -->
+      <div slot="pagination" class="swiper-pagination" />
+      <!-- 左右箭头 -->
+    </swiper>
+    <div class="swiper-button">
+      <div class="swiper-button-prev">
+        <img style="width:100%;height:100%" :src="preImg">
+      </div>
+      <div class="swiper-button-next">
+        <img style="width:100%;height:100%" :src="nextImg">
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import preImg from '@/icons/png/previous.png'
+import nextImg from '@/icons/png/next.png'
+import 'swiper/dist/css/swiper.css'
+// import Swiper from 'swiper'
+import { Swiper, SwiperSlide, directive } from 'vue-awesome-swiper'
+// import 'swiper/css/swiper.css'
+
+export default {
+  components: {
+    Swiper,
+    SwiperSlide
+  },
+  directives: {
+    swiper: directive
+  },
+  props: {
+    steps: {
+      type: Array,
+      default() {
+        return [
+          { dateLabel: 'January 2017', title: 'Gathering Information' },
+          { dateLabel: 'February 2017', title: 'Planning' },
+          { dateLabel: 'March 2017', title: 'Design' },
+          { dateLabel: 'April 2017', title: 'Content Writing and Assembly' },
+          { dateLabel: 'May 2017', title: 'Coding' },
+          { dateLabel: 'June 2017', title: 'Testing, Review & Launch' },
+          { dateLabel: 'July 2017', title: 'Maintenance' }
+        ]
+      }
+    }
+  },
+  data() {
+    return {
+      nextImg: nextImg,
+      preImg: preImg,
+      options: {
+        // 设置点击箭头
+        navigation: {
+          nextEl: '.swiper-button-next',
+          prevEl: '.swiper-button-prev'
+        },
+        pagination: {
+          el: '.swiper-pagination'
+        },
+        // pagination: '.swiper-pagination',
+        slidesPerView: 5,
+        grabCursor: true
+      }
+    }
+  },
+  computed: {
+    swiper() {
+      return this.$refs.mySwiper.$swiper
+    }
+  },
+  mounted() {
+  }
+}
+</script>
+
+<style scoped>
+.swiper-container {
+  padding: 50px 0;
+}
+.timeline {
+  width: 90%;
+  list-style-type: none;
+  display: flex;
+  padding: 0;
+  text-align: center;
+}
+.timeline li {
+  transition: all 200ms ease-in;
+}
+.timestamp {
+  width: 200px;
+  margin-bottom: 20px;
+  padding: 0px 40px;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  font-weight: 100;
+}
+.status {
+  padding: 0px 10px;
+  display: flex;
+  justify-content: center;
+  border-top: 4px solid #409eff;
+  position: relative;
+  transition: all 200ms ease-in ;
+}
+
+.status span {
+  font-weight: 600;
+  padding-top: 20px;
+}
+.status span:before {
+  content: '';
+  width: 25px;
+  height: 25px;
+  background-color: #e8eeff;
+  border-radius: 25px;
+  border: 4px solid #409eff;
+  position: absolute;
+  top: -18px;
+  left: 42%;
+  transition: all 200ms ease-in;
+}
+.swiper-slide {
+  height: 150px;
+  width: 200px;
+  text-align: center;
+  font-size: 18px;
+}
+.swiper-slide:nth-child(2n) {
+  width: 40%;
+}
+.swiper-slide:nth-child(3n) {
+  width: 20%;
+}
+.swiper-button {
+  position: relative;
+  top: -108px;
+}
+.swiper-button-prev,
+.swiper-button-next {
+  background-image: none !important;
+}
+</style>
+
+<style>
+.swiper-container .swiper-pagination-bullet-active {
+  background-color: #409eff;
+}
+</style>

+ 6 - 11
src/views/workbench/person/index.vue

@@ -59,7 +59,7 @@
     <el-main class="layout_main" style="margin-top: 10px">
       <el-tabs v-model="activeName">
         <el-tab-pane label="缺陷" name="first">
-          <div style="margin: 10px 0 20px 0">
+          <div style="margin: 10px 0 10px 0">
             <div :class="myHandleTab" style="display: inline-block;font-size: 14px" @click="myHandleTab = 'bug_tab_select';myCreateTab = 'my_create';selectBugList(2)">待我处理</div>
             <div :class="myCreateTab" style="display: inline-block;font-size: 14px;margin-left: 20px" @click="myHandleTab = 'my_handle';myCreateTab = 'bug_tab_select';selectBugList(1)">我提报的</div>
           </div>
@@ -184,7 +184,7 @@
             </div>
           </div>
           <el-table
-            v-if="busyClassName === 'selected'"
+            v-show="busyClassName === 'selected'"
             border
             :data="selfScheduleBusyTableData"
             style="width: 100%;font-size: 14px; color:#333B4A;margin-top: 20px"
@@ -218,7 +218,7 @@
             </el-table-column>
           </el-table>
           <el-table
-            v-else
+            v-show="busyClassName !== 'selected'"
             border
             :data="selfScheduleIdleTableData"
             style="width: 100%;font-size: 14px; color:#333B4A;margin-top: 20px"
@@ -230,9 +230,9 @@
                 {{ scope.row.startTime + ' ~ ' + scope.row.endTime }}
               </template>
             </el-table-column>
-            <el-table-column prop="needDays" label="使用/工作日/全部" align="center" min-width="30">
+            <el-table-column label="使用/工作日/全部" align="center" min-width="30">
               <template v-slot="scope">
-                {{ scope.row.needDays + '/' + scope.row.legalDays + '/' + scope.row.allDays }}
+                <div>{{ scope.row.needDays + '/' + scope.row.legalDays + '/' + scope.row.allDays }}</div>
               </template>
             </el-table-column>
           </el-table>
@@ -424,6 +424,7 @@ export default {
         })
         .then(res => {
           this.selfScheduleIdleTableData = res.data.list
+          console.log(this.selfScheduleIdleTableData)
           this.selfScheduleListTotal = res.data.total
         })
     },
@@ -580,9 +581,6 @@ button:hover {
 </style>
 
 <style>
-.workbench_penson .el-tabs .el-tabs__nav-wrap::after {
-  background-color: transparent;
-}
 .workbench_penson button {
   outline: none !important;
   outline-color: transparent;
@@ -611,9 +609,6 @@ button:hover {
 .workbench_fullscreen_dialog .el-tabs .el-tabs__nav-scroll {
   padding: 0 44%;
 }
-.workbench_fullscreen_dialog .el-tabs .el-tabs__nav-wrap::after {
-  background-color: transparent;
-}
 </style>
 
 // 布局

+ 1 - 1
src/views/workbench/person/myFullCalendar.vue

@@ -104,7 +104,7 @@ export default {
   data() {
     return {
       today: new Date(),
-      monthClassName: 'month',
+      monthClassName: 'month selected',
       weekClassName: 'week',
       dayClassName: 'day',
       todayClassName: 'today',

+ 1 - 1
src/views/workbench/team/index.vue

@@ -379,8 +379,8 @@ export default {
             }
           }
           this.tasks.push(item)
-          this.ganttShow = true
         }
+        this.ganttShow = true
       }
     }
   }