panxiandiao_i 5 年之前
父节点
当前提交
6d04597428

+ 9 - 0
src/api/qualityCenter.js

@@ -54,3 +54,12 @@ export function getOnlineVitium(params) {
     params
   })
 }
+
+// 线上缺陷数据
+export function getDefectInfo(params) {
+  return request({
+    url: qualityUrl + '/api/off-line-defects/data-info',
+    method: 'get',
+    params
+  })
+}

+ 1 - 1
src/apiConfig/api.js

@@ -6,4 +6,4 @@ export const mockUrl = 'http://10.179.24.176:8980' // 线下
 
 export const qualityUrl = 'http://10.179.209.19:8898' // 质量度量
 
-export const HMvehicleUrl = 'http://172.23.161.143:9999' // 电单车
+export const HMvehicleUrl = 'http://172.23.161.143:9999' // 电单车

+ 31 - 1
src/router/index.js

@@ -104,6 +104,13 @@ export const constantRoutes = [
                 name: '项目创建',
                 component: () => import('@/views/projectManage/projectList/projectCreate'),
                 meta: { title: '项目创建' }
+              },
+              {
+                path: 'projectPreview',
+                hidden: true,
+                name: '项目查看',
+                component: () => import('@/views/projectManage/projectList/projectPreview'),
+                meta: { title: '项目查看' }
               }
             ]
           },
@@ -111,7 +118,23 @@ export const constantRoutes = [
             path: 'taskList',
             name: '任务列表',
             component: () => import('@/views/projectManage/taskList/taskListIndex'),
-            meta: { title: '任务列表' }
+            meta: { title: '任务列表' },
+            children: [
+              {
+                path: 'taskCreate',
+                hidden: true,
+                name: '任务创建',
+                component: () => import('@/views/projectManage/taskList/taskCreate'),
+                meta: { title: '任务创建' }
+              },
+              {
+                path: 'taskPreview',
+                hidden: true,
+                name: '任务查看',
+                component: () => import('@/views/projectManage/taskList/taskPreview'),
+                meta: { title: '任务查看' }
+              }
+            ]
           }
         ]
       },
@@ -445,6 +468,13 @@ export const constantRoutes = [
             hidden: true,
             component: () => import('@/views/quality/qualityProcess.vue'),
             meta: { title: '上线过程' }
+          },
+          {
+            path: 'qualityDefectProcess',
+            name: '缺陷过程',
+            hidden: true,
+            component: () => import('@/views/quality/qualityDefectProcess.vue'),
+            meta: { title: '缺陷过程' }
           }
         ]
       }

+ 176 - 0
src/views/projectManage/projectList/projectCreate.vue

@@ -0,0 +1,176 @@
+<template>
+  <div id="window-judge" class="set-background">
+    <div class="block">
+      <el-form ref="form" :model="form" :rules="serviceDataRules">
+        <div class="block-flex">
+          <el-form-item label="任务名称" prop="name" label-width="110px"><el-input v-model="form.name" autocomplete="off" placeholder="普惠质量产品工具平台..." style="width:90%;" /></el-form-item>
+          <div class="line-between">
+            <el-form-item label="业务线" prop="bizId" label-width="124px">
+              <el-select v-model="form.bizId" style="width:76%;" placeholder="请选择" @change="clickChangePlatform(form.bizId)">
+                <el-option v-for="item in bizOptions" :key="item.code" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="平台类型" prop="platForm" label-width="147px">
+              <el-select v-model="form.platForm" placeholder="请选择" style="width:76%;">
+                <el-option v-for="item in platformTypeStr" :key="item.code" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+          </div>
+          <div class="line-between">
+            <el-form-item label="优先级" prop="priority" label-width="124px">
+              <el-select v-model="form.priority" style="width:76%;" placeholder="请选择">
+                <el-option v-for="item in priorityStrings" :key="item.value" :label="item.name" :value="item.value" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="状态" prop="status" label-width="147px">
+              <el-select v-model="form.status" placeholder="请选择" style="width:76%;">
+                <el-option v-for="item in statusOptionss" :key="item.value" :label="item.name" :value="item.value" />
+              </el-select>
+            </el-form-item>
+          </div>
+          <div class="line-between">
+            <el-form-item label="进展" prop="stage" label-width="124px">
+              <el-select v-model="form.stage" placeholder="请选择" style="width:76%;">
+                <el-option v-for="item in stageStrings" :key="item.value" :label="item.name" :value="item.value" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="版本" label-width="147px"><el-input v-model="form.version" autocomplete="off" placeholder="请填写" style="width:76%;" /></el-form-item>
+          </div>
+          <div class="line-between">
+            <el-form-item label="产品" label-width="124px"><el-input v-model="form.pm" autocomplete="off" placeholder="请填写" style="width:76%;" /></el-form-item>
+            <el-form-item label="开发" label-width="147px"><el-input v-model="form.reopenTimes" autocomplete="off" placeholder="请填写" style="width:76%;" /></el-form-item>
+          </div>
+          <div class="line-between">
+            <el-form-item label="测试" label-width="124px"><el-input v-model="form.reopenTimes" autocomplete="off" placeholder="请填写" style="width:76%;" /></el-form-item>
+            <el-form-item label="视觉" label-width="147px"><el-input v-model="form.reopenTimes" autocomplete="off" placeholder="请填写" style="width:76%;" /></el-form-item>
+          </div>
+          <div class="line-between">
+            <el-form-item label="交互" label-width="124px"><el-input v-model="form.reopenTimes" autocomplete="off" placeholder="请填写" style="width:76%;" /></el-form-item>
+            <el-form-item label="关注人" label-width="147px"><el-input v-model="form.reopenTimes" autocomplete="off" placeholder="请填写" style="width:76%;" /></el-form-item>
+          </div>
+          <el-form-item label="需求文档" prop="bugDescribe" label-width="110px"><el-input v-model="form.bugDescribe" placeholder="请填写" style="width:90%;" /></el-form-item>
+          <el-form-item label="描述" prop="bugDescribe" label-width="110px"><el-input v-model="form.bugDescribe" type="textarea" placeholder="请填写" rows="3" style="width:90%;" /></el-form-item>
+          <el-form-item label="文本" label-width="110px">
+            <div id="wangeditor" class="force-height" style="margin-bottom:22px;width:90%;height:110px" />
+          </el-form-item>
+          <el-form-item label="备注" prop="bugDescribe" label-width="110px"><el-input v-model="form.bugDescribe" type="textarea" placeholder="请填写" rows="3" style="width:90%;" /></el-form-item>
+          <el-form-item class="submit">
+            <el-button type="danger" plain size="mini" @click="$router.go(-1)">取 消</el-button>
+            <el-button class="move-button" size="mini" type="primary" @click="createFormData(form)">保 存</el-button>
+          </el-form-item>
+        </div>
+      </el-form>
+    </div>
+  </div>
+</template>
+
+<script>
+import E from 'wangeditor'
+import { projectGetTypeMap } from '@/api/projectPage'
+
+export default {
+  data() {
+    return {
+      form: {
+        platForm: ''
+      },
+      statusOptionss: [{ name: '待评估', value: 0 }, { name: '待需求产出', value: 1 }, { name: '待评审', value: 2 }, { name: '待排期', value: 3 }, { name: '待开发', value: 4 }, { name: '开发中', value: 5 }, { name: '待测试', value: 6 }, { name: '测试中', value: 7 }, { name: '验收中', value: 8 }, { name: '已上线', value: 9 }],
+      priorityStrings: [{ name: 'p0', value: 0 }, { name: 'p1', value: 1 }, { name: 'p2', value: 2 }, { name: 'p3', value: 3 }],
+      stageStrings: [{ name: '正常', value: 1 }, { name: 'delay', value: 2 }, { name: 'pending', value: 3 }],
+      bizOptions: [],
+      platformTypeStr: [],
+      bugTypeStr: [],
+      stageStr: [],
+      editorContent: '',
+      serviceDataRules: {
+        bizId: [{ required: true, message: '业务线不能为空', trigger: 'change' }],
+        platForm: [{ required: true, message: '平台类型不能为空', trigger: 'change' }],
+        status: [{ required: true, message: '状态不能为空', trigger: 'change' }],
+        name: [{ required: true, message: '任务名称不能为空', trigger: 'change' }],
+        priority: [{ required: true, message: '优先级不能为空', trigger: 'change' }],
+        stage: [{ required: true, message: '进展不能为空', trigger: 'change' }]
+      }
+    }
+  },
+  created() {
+    this.forkDown()
+  },
+  mounted() {
+    const editor = new E('#wangeditor')
+    editor.customConfig.menus = ['bold', 'italic', 'underline', 'link', 'list', 'justify', 'table']
+    editor.customConfig.onchange = (html) => {
+      this.editorContent = html
+      console.log(this.editorContent)
+    }
+    editor.create()
+  },
+  methods: {
+    // 业务线数据获取
+    forkDown() {
+      projectGetTypeMap().then(res => {
+        if (res.code === 200) {
+          this.bizOptions = res.data
+        } else {
+          this.errorFun('业务线数据获取失败')
+        }
+      })
+    },
+    // 业务线取子数据
+    clickChangePlatform(e) {
+      this.platformTypeStr = this.bizOptions.filter(value => value.code === e)[0].child
+      this.$set(this.form, 'platForm', '')
+    },
+    successFun(successText) {
+      this.$notify({ title: 'Success', message: `${successText} Successfully`, type: 'success', duration: 2000 })
+    },
+    errorFun(errorText) {
+      this.$notify({ title: 'Failed', message: `${errorText} Failed`, type: 'error', duration: 2000 })
+    }
+  }
+}
+</script>
+
+<style lang="stylus" scoped>
+  .set-background
+    background-color #F2F3F6
+    display flex
+    justify-content center
+    min-width 700px
+    .block
+      background-color rgba(255,255,255,1)
+      box-shadow 0px 0px 11px 0px rgba(238,240,245,1)
+      border-radius 7px
+      width 93%
+      margin 25px 0
+      padding 29px 50px
+    .block >>> .el-form-item__content
+      margin-left 0 !important
+    .block-flex
+      display flex
+      flex-wrap wrap
+    .block-flex >>> .el-form-item
+      width 100%
+      display flex
+    .block-flex >>> .el-form-item__content
+      width 100%
+    .force-height >>> .w-e-text-container
+      height 80px !important
+    .line-between
+      width 100%
+      display flex
+      justify-content space-between
+    .submit
+      margin 0 9%
+    .submit >>> .el-form-item__content
+      margin-top 40px
+      display flex
+      flex-direction row-reverse
+      .move-button
+        margin-right 20px
+    // .font
+    //   font-size 18px
+    //   font-family PingFangSC
+    //   font-weight 500
+    //   color rgba(51,59,74,1)
+    //   line-height 35px
+</style>

+ 60 - 12
src/views/projectManage/projectList/projectListIndex.vue

@@ -6,11 +6,11 @@
         <div class="block">
           <el-form :model="queryCode">
             <div class="set-between">
-              <el-form-item label="创建时间" label-width="70px"><el-date-picker v-model="form.dateQuery" align="left" size="medium" type="datetime" style="width:76%;" placeholder="选择日期" :picker-options="pickerOptions" /></el-form-item>
-              <el-form-item label="项目名称" label-width="70px"><el-input v-model="form.creator" placeholder="请选择项目" autocomplete="off" size="medium" style="width:76%;" /></el-form-item>
+              <el-form-item label="创建时间" label-width="70px"><el-date-picker v-model="queryCode.dateQuery" align="left" size="medium" type="datetime" style="width:76%;" placeholder="选择日期" :picker-options="pickerOptions" /></el-form-item>
+              <el-form-item label="项目名称" label-width="70px"><el-input v-model="queryCode.name" placeholder="请选择项目" autocomplete="off" clearable size="medium" style="width:76%;" /></el-form-item>
               <el-form-item label="状态" label-width="40px">
-                <el-select v-model="form.statusString" size="medium" style="width:50%;" clearable placeholder="状态">
-                  <el-option v-for="item in statusOptions" :key="item.value" :label="item.name" :value="item.value" />
+                <el-select v-model="queryCode.statusString" size="medium" style="width:60%;" clearable placeholder="状态">
+                  <el-option v-for="item in statusOptionss" :key="item.value" :label="item.name" :value="item.value" />
                 </el-select>
               </el-form-item>
             </div>
@@ -21,7 +21,7 @@
           </el-form>
           <div class="set-locate">
             <el-table
-              :data="tableData"
+              :data="list"
               border
               style="width: 100%"
               size="mini"
@@ -33,19 +33,22 @@
                 width="80"
               />
               <el-table-column
-                prop="vehicleId"
+                prop="name"
                 label="项目名称"
                 align="center"
                 width="200"
               />
               <el-table-column
-                prop="vehicleVersion"
                 label="状态"
                 align="center"
                 width="130"
-              />
+              >
+                <template slot-scope="scope">
+                  <el-tag type="success"><span>{{ scope.row.statusString }}</span></el-tag>
+                </template>
+              </el-table-column>
               <el-table-column
-                prop="ecuId"
+                prop="createTime"
                 label="创建时间"
                 align="center"
               />
@@ -71,16 +74,21 @@
 </template>
 
 <script>
+import { projectInit } from '@/api/projectPage.js'
 
 export default {
   data() {
     return {
-      tableData: [{ name: 'hah' }],
+      list: [],
       form: {},
       queryCode: {},
+      queryListData: {},
       curIndex: 1,
       pageSize: 20,
       total: 0,
+      statusOptionss: [{ name: '待评估', value: 0 }, { name: '待需求产出', value: 1 }, { name: '待评审', value: 2 }, { name: '待排期', value: 3 }, { name: '待开发', value: 4 }, { name: '开发中', value: 5 }, { name: '待测试', value: 6 }, { name: '测试中', value: 7 }, { name: '验收中', value: 8 }, { name: '已上线', value: 9 }],
+      userInformation: localStorage.getItem('username'),
+      userNames: localStorage.getItem('realname'),
       statusOptions: [],
       pickerOptions: {
         disabledDate(time) {
@@ -106,7 +114,46 @@ export default {
       }
     }
   },
+  mounted() {
+    this.initWindow()
+  },
+  created() {
+    this.getList()
+  },
   methods: {
+    getList() {
+      this.bizJson = localStorage.getItem('key')
+      this.queryListData = {
+        ename: this.userNames,
+        bizId: this.bizJson,
+        pageSize: this.pageSize,
+        curIndex: this.curIndex
+      }
+      projectInit(this.queryListData).then(response => {
+        this.list = response.data
+        this.total = this.list.length
+        this.platFormString = response.query.platformTypeEnumList
+      })
+    },
+    dataQuery(queryCode) {
+      this.Arra = []
+      queryCode.statusString !== '' ? this.Arra.push(queryCode.statusString) : ''
+      queryCode.status = this.Arra
+      queryCode.bizId = localStorage.getItem('key')
+      queryCode.ename = this.userNames
+      queryCode.pageSize = this.pageSize
+      queryCode.curIndex = this.curIndex
+      projectInit(queryCode).then(res => {
+        res.code === 200 ? this.list = res.data : this.errorFun('Query')
+      })
+    },
+    initWindow() {
+      if (!document.getElementById('window-judge')) {
+        document.getElementById('init-window').parentNode.style.overflow = 'visible'
+      } else {
+        document.getElementById('init-window').parentNode.style.overflow = 'hidden'
+      }
+    },
     createdCode() {
       this.$router.push({ name: '项目创建', params: { formData: this.form }, query: { id: this.form.id }})
     },
@@ -131,13 +178,12 @@ export default {
     background-color #F2F3F6
     display flex
     justify-content center
-    min-width 1000px
     .block
       background-color rgba(255,255,255,1)
       box-shadow 0px 0px 11px 0px rgba(238,240,245,1)
       border-radius 7px
       width 96%
-      margin 25px 0
+      margin 20px 0
       padding 20px
       min-height calc(100vh - 100px)
     .block >>> .el-form
@@ -146,6 +192,8 @@ export default {
       margin-top 10px
     .block >>> .el-form-item__content
       margin-left 0 !important
+    .block >>> th
+      background-color #F0F2F4 !important
     .set-between
       display flex
     .set-between >>> .el-button

+ 266 - 0
src/views/projectManage/projectList/projectPreview.vue

@@ -0,0 +1,266 @@
+<template>
+  <div id="window-judge" class="set-background">
+    <div style="width:96%">
+      <div class="block">
+        <div class="operate-flex">
+          <span>状态</span>
+          <el-select v-model="form.statusString" size="medium" style="width:11%;margin-right: 15px;" clearable placeholder="状态">
+            <el-option v-for="item in statusOptions" :key="item.value" :label="item.name" :value="item.value" />
+          </el-select>
+          <span>优先级</span>
+          <el-select v-model="form.statusString" size="medium" style="width:11%;margin-right: 15px;" clearable placeholder="优先级">
+            <el-option v-for="item in statusOptions" :key="item.value" :label="item.name" :value="item.value" />
+          </el-select>
+          <span>进展</span>
+          <el-select v-model="form.statusString" size="medium" style="width:11%;margin-right: 15px;" clearable placeholder="进展">
+            <el-option v-for="item in statusOptions" :key="item.value" :label="item.name" :value="item.value" />
+          </el-select>
+          <el-button type="primary" plain size="medium">新建日报报告</el-button>
+          <el-button type="primary" plain size="medium">新建准出报告</el-button>
+          <el-button type="primary" plain size="medium">新建任务</el-button>
+          <el-button type="primary" plain size="medium">编辑</el-button>
+        </div>
+        <div class="display-messege">
+          项目名称 :&nbsp;&nbsp;&nbsp;222
+        </div>
+        <div class="display-messege">
+          <div class="divide-twoparts">业务线 :&nbsp;&nbsp;&nbsp;222</div>
+          <div class="divide-twoparts">平台类型 :&nbsp;&nbsp;&nbsp;222</div>
+        </div>
+        <div class="display-messege">
+          <div class="divide-twoparts">产品 :&nbsp;&nbsp;&nbsp;222</div>
+          <div class="divide-twoparts">开发 :&nbsp;&nbsp;&nbsp;222</div>
+        </div>
+        <div class="display-messege">
+          <div class="divide-twoparts">测试 :&nbsp;&nbsp;&nbsp;222</div>
+          <div class="divide-twoparts">交互 :&nbsp;&nbsp;&nbsp;222</div>
+        </div>
+        <div class="display-messege">
+          <div class="divide-twoparts">视觉 :&nbsp;&nbsp;&nbsp;222</div>
+          <div class="divide-twoparts">关注人 :&nbsp;&nbsp;&nbsp;222</div>
+        </div>
+        <div class="display-messege">
+          <div class="divide-twoparts">描述 :&nbsp;&nbsp;&nbsp;222</div>
+          <div class="divide-twoparts">详细添加 :&nbsp;&nbsp;&nbsp;222</div>
+        </div>
+        <div class="display-messege-end">
+          备注 :&nbsp;&nbsp;&nbsp;222
+        </div>
+      </div>
+      <div class="block-end">
+        <el-tabs v-model="activeName">
+          <el-tab-pane label="任务列表" name="first">
+            <el-table
+              :data="tableData"
+              height="215"
+              border
+              style="width: 100%"
+              size="medium"
+            >
+              <el-table-column
+                prop="id"
+                label="ID"
+                align="center"
+                width="80"
+              />
+              <el-table-column
+                prop="vehicleId"
+                label="标题名称"
+                align="center"
+              />
+              <el-table-column
+                prop="vehicleVersion"
+                label="状态"
+                align="center"
+                width="130"
+              />
+              <el-table-column
+                prop="ecuId"
+                label="创建时间"
+                align="center"
+              />
+              <el-table-column
+                label="操作"
+                align="center"
+                width="300"
+              >
+                <template>
+                  <div>
+                    <el-button size="mini" type="primary" plain>编辑</el-button>
+                    <el-button size="mini" type="danger" plain>删除</el-button>
+                  </div>
+                </template>
+              </el-table-column>
+            </el-table>
+          </el-tab-pane>
+          <el-tab-pane label="日报列表" name="second">
+            <el-table
+              :data="tableData"
+              height="215"
+              border
+              style="width: 100%"
+              size="medium"
+            >
+              <el-table-column
+                prop="id"
+                label="ID"
+                align="center"
+                width="80"
+              />
+              <el-table-column
+                prop="vehicleId"
+                label="标题名称"
+                align="center"
+              />
+              <el-table-column
+                prop="ecuId"
+                label="创建时间"
+                align="center"
+              />
+              <el-table-column
+                label="操作"
+                align="center"
+                width="300"
+              >
+                <template>
+                  <div>
+                    <el-button size="mini" type="primary" plain>编辑</el-button>
+                    <el-button size="mini" type="danger" plain>删除</el-button>
+                  </div>
+                </template>
+              </el-table-column>
+            </el-table>
+          </el-tab-pane>
+          <el-tab-pane label="准出报告列表" name="third">
+            <el-table
+              :data="tableData"
+              height="215"
+              border
+              style="width: 100%"
+              size="medium"
+            >
+              <el-table-column
+                prop="id"
+                label="ID"
+                align="center"
+                width="80"
+              />
+              <el-table-column
+                prop="vehicleId"
+                label="标题名称"
+                align="center"
+              />
+              <el-table-column
+                prop="ecuId"
+                label="创建时间"
+                align="center"
+              />
+              <el-table-column
+                label="操作"
+                align="center"
+                width="300"
+              >
+                <template>
+                  <div>
+                    <el-button size="mini" type="primary" plain>编辑</el-button>
+                    <el-button size="mini" type="danger" plain>删除</el-button>
+                  </div>
+                </template>
+              </el-table-column>
+            </el-table>
+          </el-tab-pane>
+        </el-tabs>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      form: {},
+      statusOptions: [],
+      activeName: 'first',
+      tableData: [{
+        date: '2016-05-03',
+        name: '王小虎',
+        address: '上海市普陀区金沙江路 1518 弄'
+      }, {
+        date: '2016-05-02',
+        name: '王小虎',
+        address: '上海市普陀区金沙江路 1518 弄'
+      }, {
+        date: '2016-05-04',
+        name: '王小虎',
+        address: '上海市普陀区金沙江路 1518 弄'
+      }, {
+        date: '2016-05-01',
+        name: '王小虎',
+        address: '上海市普陀区金沙江路 1518 弄'
+      }, {
+        date: '2016-05-08',
+        name: '王小虎',
+        address: '上海市普陀区金沙江路 1518 弄'
+      }, {
+        date: '2016-05-06',
+        name: '王小虎',
+        address: '上海市普陀区金沙江路 1518 弄'
+      }]
+    }
+  }
+}
+</script>
+
+<style lang="stylus" scoped>
+  .set-background
+    background-color #F2F3F6
+    display flex
+    justify-content center
+    min-width 1000px
+    .block
+      background-color rgba(255,255,255,1)
+      box-shadow 0px 0px 11px 0px rgba(238,240,245,1)
+      border-radius 7px
+      width 100%
+      margin 20px 0
+      padding 10px 30px
+    .block-end
+      background-color rgba(255,255,255,1)
+      box-shadow 0px 0px 11px 0px rgba(238,240,245,1)
+      border-radius 7px
+      width 100%
+      margin 25px 0
+      padding 10px 30px
+      height calc(100vh - 425px)
+    .block-end >>> th
+      background-color #F0F2F4 !important
+    .block-end >>> .el-tabs__nav-wrap::after
+      background-color white
+    .operate-flex
+      height 50px
+      margin-bottom 25px
+      display flex
+      justify-content space-between
+      align-items center
+    .operate-flex span
+      margin-right 10px
+    .display-messege
+      font-size 14px
+      font-family PingFangSC-Regular,PingFangSC
+      font-weight 400
+      color rgba(51,59,74,1)
+      display flex
+      width 100%
+      margin-bottom 15px
+    .display-messege-end
+      font-size 14px
+      font-family PingFangSC-Regular,PingFangSC
+      font-weight 400
+      color rgba(51,59,74,1)
+      display flex
+      width 100%
+      margin-bottom 10px
+    .divide-twoparts
+      width 40%
+</style>

+ 244 - 0
src/views/projectManage/taskList/taskCreate.vue

@@ -0,0 +1,244 @@
+<template>
+  <div id="window-judge" class="set-background">
+    <el-form ref="form" :model="form" :rules="serviceDataRules">
+      <div class="block">
+        <div class="block-flex">
+          <el-form-item label="任务名称" prop="bugName" label-width="110px"><el-input v-model="form.bugName" autocomplete="off" placeholder="普惠质量产品工具平台..." style="width:90%;" /></el-form-item>
+          <div class="line-between">
+            <el-form-item label="优先级" prop="bugType" label-width="124px">
+              <el-select v-model="form.bugType" style="width:76%;" placeholder="请选择">
+                <el-option v-for="item in bugTypeStr" :key="item.name" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="是否测试" prop="stage" label-width="147px">
+              <el-select v-model="form.stage" placeholder="请选择" style="width:76%;">
+                <el-option v-for="item in stageStr" :key="item.name" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+          </div>
+          <div class="line-between">
+            <el-form-item label="状态" prop="bugType" label-width="124px">
+              <el-select v-model="form.bugType" style="width:76%;" placeholder="请选择">
+                <el-option v-for="item in bugTypeStr" :key="item.name" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="任务类型" prop="stage" label-width="147px">
+              <el-select v-model="form.stage" placeholder="请选择" style="width:76%;">
+                <el-option v-for="item in stageStr" :key="item.name" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+          </div>
+          <div class="line-between">
+            <el-form-item label="进展" prop="bugType" label-width="124px">
+              <el-select v-model="form.bugType" style="width:76%;" placeholder="请选择">
+                <el-option v-for="item in bugTypeStr" :key="item.name" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+            <el-form-item prop="bizId" label="业务线" label-width="147px">
+              <el-select v-model="form.bizId" placeholder="业务线" style="width:76%;" @change="clickChangePlatform(form.bizId)">
+                <el-option v-for="item in bizOptions" :key="item.value" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+          </div>
+          <div class="line-between-add">
+            <el-form-item label="平台类型" prop="platformType" label-width="124px">
+              <el-select ref="clearPlatform" v-model="form.platformType" placeholder="平台类型" style="width:76%;" @change="clickChangeBusiness(form.platformType)">
+                <el-option v-for="item in platformTypeStr" :key="item.name" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+            <el-form-item v-if="businessTypeShow" prop="clientType" label="业务模块" label-width="147px">
+              <el-select ref="clearBusiness" v-model="form.clientType" placeholder="业务模块" style="width:76%;">
+                <el-option v-for="item in businessTypeStr" :key="item.name" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+          </div>
+          <el-form-item label="需求文档" prop="bugDescribe" label-width="110px"><el-input v-model="form.bugDescribe" placeholder="请填写" style="width:90%;" /></el-form-item>
+          <el-form-item label="技术文档" prop="bugDescribe" label-width="110px"><el-input v-model="form.bugDescribe" placeholder="请填写" style="width:90%;" /></el-form-item>
+          <!-- <el-form-item class="submit">
+            <el-button type="danger" plain size="mini" @click="$router.go(-1)">取 消</el-button>
+            <el-button class="move-button" size="mini" type="primary" @click="createFormData(form)">保 存</el-button>
+          </el-form-item> -->
+        </div>
+      </div>
+      <div class="block">
+        <div class="block-flex">
+          <div class="line-between">
+            <el-form-item label="标签" prop="bugType" label-width="124px">
+              <el-select v-model="form.bugType" style="width:76%;" placeholder="请选择">
+                <el-option v-for="item in bugTypeStr" :key="item.name" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="分组" prop="stage" label-width="147px">
+              <el-select v-model="form.stage" placeholder="请选择" style="width:76%;">
+                <el-option v-for="item in stageStr" :key="item.name" :label="item.name" :value="item.code" />
+              </el-select>
+            </el-form-item>
+          </div>
+          <div class="line-between">
+            <el-form-item label="产品" prop="reopenTimes" label-width="124px"><el-input v-model="form.reopenTimes" autocomplete="off" placeholder="请填写" style="width:76%;" /></el-form-item>
+            <el-form-item label="开发" prop="reopenTimes" label-width="147px"><el-input v-model="form.reopenTimes" autocomplete="off" placeholder="请填写" style="width:76%;" /></el-form-item>
+          </div>
+          <div class="line-between">
+            <el-form-item label="测试" prop="reopenTimes" label-width="124px"><el-input v-model="form.reopenTimes" autocomplete="off" placeholder="请填写" style="width:76%;" /></el-form-item>
+            <el-form-item label="交互" prop="reopenTimes" label-width="147px"><el-input v-model="form.reopenTimes" autocomplete="off" placeholder="请填写" style="width:76%;" /></el-form-item>
+          </div>
+          <div class="line-between-add">
+            <el-form-item label="进展" prop="reopenTimes" label-width="124px"><el-input v-model="form.reopenTimes" autocomplete="off" placeholder="请填写" style="width:76%;" /></el-form-item>
+          </div>
+          <el-form-item label="bug描述" prop="bugDescribe" label-width="110px"><el-input v-model="form.bugDescribe" type="textarea" placeholder="bug描述" rows="3" style="width:90%;" /></el-form-item>
+        </div>
+      </div>
+      <div class="block">
+        <div class="block-flex">
+          <div class="line-between">
+            <el-form-item label="需求评审时间" prop="bugType" label-width="166px">
+              <el-date-picker v-model="form.dateQuery" align="left" size="medium" type="datetime" style="width:76%;" placeholder="选择日期" :picker-options="pickerOptions" />
+            </el-form-item>
+            <el-form-item label="计划提测时间" prop="stage" label-width="189px">
+              <el-date-picker v-model="form.dateQuery" align="left" size="medium" type="datetime" style="width:76%;" placeholder="选择日期" :picker-options="pickerOptions" />
+            </el-form-item>
+          </div>
+          <div class="line-between">
+            <el-form-item label="冒烟测试完成时间" prop="bugType" label-width="166px">
+              <el-date-picker v-model="form.dateQuery" align="left" size="medium" type="datetime" style="width:76%;" placeholder="选择日期" :picker-options="pickerOptions" />
+            </el-form-item>
+            <el-form-item label="实际提测时间" prop="stage" label-width="189px">
+              <el-date-picker v-model="form.dateQuery" align="left" size="medium" type="datetime" style="width:76%;" placeholder="选择日期" :picker-options="pickerOptions" />
+            </el-form-item>
+          </div>
+          <div class="line-between">
+            <el-form-item label="实际开始开发时间" prop="bugType" label-width="166px">
+              <el-date-picker v-model="form.dateQuery" align="left" size="medium" type="datetime" style="width:76%;" placeholder="选择日期" :picker-options="pickerOptions" />
+            </el-form-item>
+            <el-form-item label="实际开始测试时间" prop="stage" label-width="189px">
+              <el-date-picker v-model="form.dateQuery" align="left" size="medium" type="datetime" style="width:76%;" placeholder="选择日期" :picker-options="pickerOptions" />
+            </el-form-item>
+          </div>
+          <div class="line-between">
+            <el-form-item label="计划开始开发时间" prop="bugType" label-width="166px">
+              <el-date-picker v-model="form.dateQuery" align="left" size="medium" type="datetime" style="width:76%;" placeholder="选择日期" :picker-options="pickerOptions" />
+            </el-form-item>
+            <el-form-item label="计划开始测试时间" prop="stage" label-width="189px">
+              <el-date-picker v-model="form.dateQuery" align="left" size="medium" type="datetime" style="width:76%;" placeholder="选择日期" :picker-options="pickerOptions" />
+            </el-form-item>
+          </div>
+          <div class="line-between">
+            <el-form-item label="计划上线时间" prop="bugType" label-width="166px">
+              <el-date-picker v-model="form.dateQuery" align="left" size="medium" type="datetime" style="width:76%;" placeholder="选择日期" :picker-options="pickerOptions" />
+            </el-form-item>
+            <el-form-item label="实际上线时间" prop="stage" label-width="189px">
+              <el-date-picker v-model="form.dateQuery" align="left" size="medium" type="datetime" style="width:76%;" placeholder="选择日期" :picker-options="pickerOptions" />
+            </el-form-item>
+          </div>
+          <el-form-item label="备注" prop="bugDescribe" label-width="142px"><el-input v-model="form.bugDescribe" type="textarea" placeholder="bug描述" rows="3" style="width:90%;" /></el-form-item>
+        </div>
+      </div>
+    </el-form>
+  </div>
+</template>
+
+<script>
+import E from 'wangeditor'
+
+export default {
+  data() {
+    return {
+      form: {},
+      serviceDataRules: {},
+      bugTypeStr: [],
+      stageStr: [],
+      editorContent: '',
+      pickerOptions: {
+        disabledDate(time) {
+          return time.getTime() > Date.now()
+        },
+        shortcuts: [
+          {
+            text: '最近一周',
+            onClick(picker) {
+              const start = new Date()
+              start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
+              picker.$emit('pick', start)
+            }
+          }, {
+            text: '最近一个月',
+            onClick(picker) {
+              const start = new Date()
+              start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
+              picker.$emit('pick', start)
+            }
+          }
+        ]
+      }
+    }
+  },
+  mounted() {
+    const editor = new E('#wangeditor')
+    editor.customConfig.menus = ['bold', 'italic', 'underline', 'link', 'list', 'justify', 'table']
+    editor.customConfig.onchange = (html) => {
+      this.editorContent = html
+      console.log(this.editorContent)
+    }
+    editor.create()
+  },
+  methods: {
+    successFun(successText) {
+      this.$notify({ title: 'Success', message: `${successText} Successfully`, type: 'success', duration: 2000 })
+    },
+    errorFun(errorText) {
+      this.$notify({ title: 'Failed', message: `${errorText} Failed`, type: 'error', duration: 2000 })
+    }
+  }
+}
+</script>
+
+<style lang="stylus" scoped>
+  .set-background
+    background-color #F2F3F6
+    display flex
+    justify-content center
+    min-width 700px
+    .block
+      background-color rgba(255,255,255,1)
+      box-shadow 0px 0px 11px 0px rgba(238,240,245,1)
+      border-radius 7px
+      width 95%
+      margin 20px auto
+      padding 29px 50px
+    .block >>> .el-form-item__content
+      margin-left 0 !important
+    .block-flex
+      display flex
+      flex-wrap wrap
+    .block-flex >>> .el-form-item
+      width 100%
+      display flex
+    .block-flex >>> .el-form-item__content
+      width 100%
+    .force-height >>> .w-e-text-container
+      height 80px !important
+    .line-between
+      width 100%
+      display flex
+      justify-content space-between
+    .line-between-add
+      display flex
+      flex-wrap wrap
+      width 100%
+    .line-between-add >>> .el-form-item
+      width 50%
+    .submit
+      margin 0 9%
+    .submit >>> .el-form-item__content
+      margin-top 40px
+      display flex
+      flex-direction row-reverse
+      .move-button
+        margin-right 20px
+    // .font
+    //   font-size 18px
+    //   font-family PingFangSC
+    //   font-weight 500
+    //   color rgba(51,59,74,1)
+    //   line-height 35px
+</style>

+ 169 - 3
src/views/projectManage/taskList/taskListIndex.vue

@@ -1,13 +1,179 @@
 <template>
-  <div>
-    13233333333333333
+  <div id="init-window" style="position:relative">
+    <router-view />
+    <div style="position: absolute;width: 100%;">
+      <div class="set-background">
+        <div class="block">
+          <el-tabs v-model="activeName">
+            <el-tab-pane label="列表" name="first">
+              <el-form :model="queryCode">
+                <div class="set-between">
+                  <el-form-item label="创建时间" label-width="70px"><el-date-picker v-model="form.dateQuery" align="left" size="medium" type="datetime" style="width:76%;" placeholder="选择日期" :picker-options="pickerOptions" /></el-form-item>
+                  <el-form-item label="项目名称" label-width="70px"><el-input v-model="form.creator" placeholder="请选择项目" autocomplete="off" size="medium" style="width:76%;" /></el-form-item>
+                  <el-form-item label="状态" label-width="40px">
+                    <el-select v-model="form.statusString" size="medium" style="width:50%;" clearable placeholder="状态">
+                      <el-option v-for="item in statusOptions" :key="item.value" :label="item.name" :value="item.value" />
+                    </el-select>
+                  </el-form-item>
+                </div>
+                <div class="set-between">
+                  <el-button type="primary" plain size="medium" @click="dataQuery(queryCode)">查询</el-button>
+                  <el-button type="primary" plain size="medium" @click="createdCode()">新增</el-button>
+                </div>
+              </el-form>
+              <div class="set-locate">
+                <el-table
+                  :data="tableData"
+                  border
+                  style="width: 100%"
+                  size="mini"
+                >
+                  <el-table-column
+                    prop="id"
+                    label="ID"
+                    align="center"
+                    width="80"
+                  />
+                  <el-table-column
+                    prop="vehicleId"
+                    label="项目名称"
+                    align="center"
+                    width="200"
+                  />
+                  <el-table-column
+                    prop="vehicleVersion"
+                    label="状态"
+                    align="center"
+                    width="130"
+                  />
+                  <el-table-column
+                    prop="ecuId"
+                    label="创建时间"
+                    align="center"
+                  />
+                  <el-table-column
+                    label="操作"
+                    align="center"
+                    width="300"
+                  >
+                    <template>
+                      <div>
+                        <el-button size="mini" type="primary" plain>编辑</el-button>
+                        <el-button size="mini" type="danger" plain>删除</el-button>
+                      </div>
+                    </template>
+                  </el-table-column>
+                </el-table>
+                <el-pagination background style="margin-top:30px;" align="center" :current-page="curIndex" :page-size="pageSize" layout="prev, pager, next" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
+              </div>
+            </el-tab-pane>
+            <el-tab-pane label="看板" name="second">
+              2
+            </el-tab-pane>
+          </el-tabs>
+        </div>
+      </div>
+    </div>
   </div>
 </template>
 
 <script>
 
+export default {
+  data() {
+    return {
+      tableData: [{ name: 'hah' }],
+      form: {},
+      queryCode: {},
+      curIndex: 1,
+      pageSize: 20,
+      total: 0,
+      activeName: 'first',
+      statusOptions: [],
+      pickerOptions: {
+        disabledDate(time) {
+          return time.getTime() > Date.now()
+        },
+        shortcuts: [
+          {
+            text: '最近一周',
+            onClick(picker) {
+              const start = new Date()
+              start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
+              picker.$emit('pick', start)
+            }
+          }, {
+            text: '最近一个月',
+            onClick(picker) {
+              const start = new Date()
+              start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
+              picker.$emit('pick', start)
+            }
+          }
+        ]
+      }
+    }
+  },
+  mounted() {
+    this.initWindow()
+  },
+  methods: {
+    initWindow() {
+      if (!document.getElementById('window-judge')) {
+        document.getElementById('init-window').parentNode.style.overflow = 'visible'
+      } else {
+        document.getElementById('init-window').parentNode.style.overflow = 'hidden'
+      }
+    },
+    createdCode() {
+      this.$router.push({ name: '任务创建' })
+    },
+    handleSizeChange(size) {
+      this.pageSize = size
+    },
+    handleCurrentChange(curIndex) {
+      this.curIndex = curIndex
+    },
+    successFun(successText) {
+      this.$notify({ title: 'Success', message: `${successText} Successfully`, type: 'success', duration: 2000 })
+    },
+    errorFun(errorText) {
+      this.$notify({ title: 'Failed', message: `${errorText} Failed`, type: 'error', duration: 2000 })
+    }
+  }
+}
 </script>
 
 <style lang="stylus" scoped>
-
+  .set-background
+    background-color #F2F3F6
+    display flex
+    justify-content center
+    .block
+      background-color rgba(255,255,255,1)
+      box-shadow 0px 0px 11px 0px rgba(238,240,245,1)
+      border-radius 7px
+      width 96%
+      margin 25px 0
+      padding 10px 20px
+      min-height calc(100vh - 100px)
+    .block >>> .el-tabs__nav-wrap::after
+      background-color white
+    .block >>> .el-tabs__item
+      padding 0 10px 0 0
+    .block >>> .el-form
+      display flex
+      justify-content space-between
+      margin-top 10px
+    .block >>> .el-form-item__content
+      margin-left 0 !important
+    .set-between
+      display flex
+    .set-between >>> .el-button
+      height 36px
+    .set-between >>> .el-form-item
+      display flex
+      margin-right -35px
+    .set-locate
+      margin-top 15px
 </style>

+ 323 - 0
src/views/projectManage/taskList/taskPreview.vue

@@ -0,0 +1,323 @@
+<template>
+  <div id="window-judge" class="set-background">
+    <div style="width:96%">
+      <div class="block">
+        <div class="operate-flex">
+          <div style="width:100%">
+            <span>状态</span>
+            <el-select v-model="form.statusString" size="medium" style="width:27%;margin-right: 15px;" clearable placeholder="状态">
+              <el-option v-for="item in statusOptions" :key="item.value" :label="item.name" :value="item.value" />
+            </el-select>
+            <span>优先级</span>
+            <el-select v-model="form.statusString" size="medium" style="width:27%;margin-right: 15px;" clearable placeholder="优先级">
+              <el-option v-for="item in statusOptions" :key="item.value" :label="item.name" :value="item.value" />
+            </el-select>
+          </div>
+          <div style="display:flex">
+            <el-button type="primary" plain size="medium">新建日报报告</el-button>
+            <el-button type="primary" plain size="medium">新建准出报告</el-button>
+            <el-button type="primary" plain size="medium">新建日报</el-button>
+            <el-button type="primary" plain size="medium">新建bug</el-button>
+            <el-button type="primary" plain size="medium">编辑</el-button>
+          </div>
+        </div>
+        <div class="display-messege">
+          任务名称 :&nbsp;&nbsp;&nbsp;222
+        </div>
+        <div class="display-messege">
+          <div class="divide-fourparts">业务线 :&nbsp;&nbsp;&nbsp;222</div>
+          <div class="divide-fourparts">任务类型 :&nbsp;&nbsp;&nbsp;222</div>
+          <div class="divide-fourparts">产品 :&nbsp;&nbsp;&nbsp;222</div>
+          <div class="divide-fourparts">分组 :&nbsp;&nbsp;&nbsp;222</div>
+        </div>
+        <div class="display-messege">
+          <div class="divide-fourparts">平台类型 :&nbsp;&nbsp;&nbsp;222</div>
+          <div class="divide-fourparts">是否免测 :&nbsp;&nbsp;&nbsp;222</div>
+          <div class="divide-fourparts">测试 :&nbsp;&nbsp;&nbsp;222</div>
+          <div class="divide-fourparts">标签 :&nbsp;&nbsp;&nbsp;222</div>
+        </div>
+        <div class="display-messege">
+          <div class="divide-fourparts">业务模块 :&nbsp;&nbsp;&nbsp;222</div>
+          <div class="divide-fourparts">打回次数 :&nbsp;&nbsp;&nbsp;222</div>
+          <div class="divide-fourparts">开发 :&nbsp;&nbsp;&nbsp;222</div>
+        </div>
+        <div class="display-messege-end-one">
+          描述 :&nbsp;&nbsp;&nbsp;222
+        </div>
+        <div class="display-messege-end">
+          技术文档 :&nbsp;&nbsp;&nbsp;222
+        </div>
+        <div class="display-messege-end">
+          需求文档 :&nbsp;&nbsp;&nbsp;222
+        </div>
+      </div>
+      <div class="block">
+        <el-tabs v-model="activeName">
+          <el-tab-pane label="提测报告" name="first">
+            <el-table
+              :data="tableData"
+              height="215"
+              border
+              style="width: 100%"
+              size="medium"
+            >
+              <el-table-column
+                prop="id"
+                label="ID"
+                align="center"
+                width="80"
+              />
+              <el-table-column
+                prop="vehicleId"
+                label="标题名称"
+                align="center"
+              />
+              <el-table-column
+                prop="vehicleVersion"
+                label="状态"
+                align="center"
+                width="130"
+              />
+              <el-table-column
+                prop="ecuId"
+                label="创建时间"
+                align="center"
+              />
+              <el-table-column
+                label="操作"
+                align="center"
+                width="300"
+              >
+                <template>
+                  <div>
+                    <el-button size="mini" type="primary" plain>编辑</el-button>
+                    <el-button size="mini" type="danger" plain>打回</el-button>
+                  </div>
+                </template>
+              </el-table-column>
+            </el-table>
+          </el-tab-pane>
+          <el-tab-pane label="每日报告" name="second">
+            <el-table
+              :data="tableData"
+              height="215"
+              border
+              style="width: 100%"
+              size="medium"
+            >
+              <el-table-column
+                prop="id"
+                label="ID"
+                align="center"
+                width="80"
+              />
+              <el-table-column
+                prop="vehicleId"
+                label="标题名称"
+                align="center"
+              />
+              <el-table-column
+                prop="name"
+                label="创建时间"
+                align="center"
+              />
+            </el-table>
+          </el-tab-pane>
+          <el-tab-pane label="准出报告" name="third">
+            <el-table
+              :data="tableData"
+              height="215"
+              border
+              style="width: 100%"
+              size="medium"
+            >
+              <el-table-column
+                prop="id"
+                label="ID"
+                align="center"
+                width="80"
+              />
+              <el-table-column
+                prop="vehicleId"
+                label="标题名称"
+                align="center"
+              />
+              <el-table-column
+                prop="vehicleVersion"
+                label="状态"
+                align="center"
+                width="130"
+              />
+              <el-table-column
+                prop="name"
+                label="创建时间"
+                align="center"
+              />
+            </el-table>
+          </el-tab-pane>
+          <el-tab-pane label="Bug" name="forth">
+            <el-table
+              :data="tableData"
+              height="215"
+              border
+              style="width: 100%"
+              size="medium"
+            >
+              <el-table-column
+                prop="id"
+                label="ID"
+                align="center"
+                width="80"
+              />
+              <el-table-column
+                prop="vehicleId"
+                label="标题名称"
+                align="center"
+              />
+              <el-table-column
+                prop="vehicleVersion"
+                label="状态"
+                align="center"
+                width="130"
+              />
+              <el-table-column
+                prop="ecuId"
+                label="创建时间"
+                align="center"
+              />
+              <el-table-column
+                prop="name"
+                label="当前处理人"
+                align="center"
+              />
+            </el-table>
+          </el-tab-pane>
+        </el-tabs>
+      </div>
+      <div class="block-end">
+        <div class="display-messege">
+          <div class="divide-twoparts">需求评审时间 :&nbsp;&nbsp;&nbsp;222</div>
+          <div class="divide-twoparts">计划提测时间 :&nbsp;&nbsp;&nbsp;222</div>
+        </div>
+        <div class="display-messege">
+          <div class="divide-twoparts">冒烟测试完成时间 :&nbsp;&nbsp;&nbsp;222</div>
+          <div class="divide-twoparts">实际提测时间 :&nbsp;&nbsp;&nbsp;222</div>
+        </div>
+        <div class="display-messege">
+          <div class="divide-twoparts">实际开始开发时间 :&nbsp;&nbsp;&nbsp;222</div>
+          <div class="divide-twoparts">实际开始测试时间 :&nbsp;&nbsp;&nbsp;222</div>
+        </div>
+        <div class="display-messege">
+          <div class="divide-twoparts">计划开始开发时间 :&nbsp;&nbsp;&nbsp;222</div>
+          <div class="divide-twoparts">计划开始测试时间 :&nbsp;&nbsp;&nbsp;222</div>
+        </div>
+        <div class="display-messege">
+          <div class="divide-twoparts">计划上线时间 :&nbsp;&nbsp;&nbsp;222</div>
+          <div class="divide-twoparts">实际上线时间 :&nbsp;&nbsp;&nbsp;222</div>
+        </div>
+        <div class="display-messege">
+          备注 :&nbsp;&nbsp;&nbsp;222
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      form: {},
+      statusOptions: [],
+      activeName: 'first',
+      tableData: [{
+        date: '2016-05-03',
+        name: '王小虎',
+        address: '上海市普陀区金沙江路 1518 弄'
+      }, {
+        date: '2016-05-02',
+        name: '王小虎',
+        address: '上海市普陀区金沙江路 1518 弄'
+      }, {
+        date: '2016-05-04',
+        name: '王小虎',
+        address: '上海市普陀区金沙江路 1518 弄'
+      }, {
+        date: '2016-05-01',
+        name: '王小虎',
+        address: '上海市普陀区金沙江路 1518 弄'
+      }, {
+        date: '2016-05-08',
+        name: '王小虎',
+        address: '上海市普陀区金沙江路 1518 弄'
+      }, {
+        date: '2016-05-06',
+        name: '王小虎',
+        address: '上海市普陀区金沙江路 1518 弄'
+      }]
+    }
+  }
+}
+</script>
+
+<style lang="stylus" scoped>
+  .set-background
+    background-color #F2F3F6
+    display flex
+    justify-content center
+    min-width 1000px
+    .block
+      background-color rgba(255,255,255,1)
+      box-shadow 0px 0px 11px 0px rgba(238,240,245,1)
+      border-radius 7px
+      width 100%
+      margin 20px 0
+      padding 10px 30px
+    .block >>> .el-tabs__nav-wrap::after
+      background-color white
+    .block >>> th
+      background-color #F0F2F4 !important
+    .block-end
+      background-color rgba(255,255,255,1)
+      box-shadow 0px 0px 11px 0px rgba(238,240,245,1)
+      border-radius 7px
+      width 100%
+      margin 20px 0
+      padding 15px 30px 1px 30px
+    .operate-flex
+      height 50px
+      margin-bottom 25px
+      display flex
+      justify-content space-between
+      align-items center
+    .operate-flex span
+      margin-right 10px
+    .display-messege
+      font-size 14px
+      font-family PingFangSC-Regular,PingFangSC
+      font-weight 400
+      color rgba(51,59,74,1)
+      display flex
+      width 100%
+      margin-bottom 15px
+    .display-messege-end-one
+      font-size 14px
+      font-family PingFangSC-Regular,PingFangSC
+      font-weight 400
+      color rgba(51,59,74,1)
+      display flex
+      width 100%
+      margin 30px 0 15px 0
+    .display-messege-end
+      font-size 14px
+      font-family PingFangSC-Regular,PingFangSC
+      font-weight 400
+      color rgba(51,59,74,1)
+      display flex
+      width 100%
+      margin-bottom 15px
+    .divide-fourparts
+      width 25%
+    .divide-twoparts
+      width 50%
+</style>

+ 173 - 0
src/views/quality/qualityDefectProcess.vue

@@ -0,0 +1,173 @@
+
+<template>
+  <div id="window-judge" class="set-background">
+    <div class="block">
+      <div style="text-align:right;">
+        <el-link type="primary">指标计算指南</el-link>
+      </div>
+      <div class="title-search-output">
+        <div>线下缺陷</div>
+        <div class="search-output">
+          <el-input v-model="input" style="margin-right:5px" />
+          <el-button plain type="info" style="margin-right:35px">搜索</el-button>
+          <el-button type="primary">导出</el-button>
+        </div>
+      </div>
+      <el-table
+        :data="tableData"
+        border
+        style="width: 100%"
+        size="mini"
+      >
+        <el-table-column
+          prop="bugName"
+          label="bug名称"
+          align="center"
+        />
+        <el-table-column
+          prop="spaceKey"
+          label="项目空间"
+          align="center"
+        />
+        <el-table-column
+          prop="projectId"
+          label="Qrcc项目ID"
+          align="center"
+          width="100"
+        />
+        <el-table-column
+          prop="modelDetail"
+          label="模块"
+          align="center"
+        />
+        <el-table-column
+          prop="reporter"
+          label="报告人"
+          align="center"
+        />
+        <el-table-column
+          prop="platType"
+          label="平台类型"
+          align="center"
+        />
+        <el-table-column
+          prop="bugStep"
+          label="所属阶段"
+          align="center"
+        />
+        <el-table-column
+          prop="bugCreateTime"
+          label="创建时间"
+          align="center"
+          width="140"
+        />
+        <el-table-column
+          prop="bugType"
+          label="错误类型"
+          align="center"
+        />
+        <el-table-column
+          prop="operator"
+          label="经办人"
+          align="center"
+        />
+        <el-table-column
+          prop="bugLevel"
+          label="缺陷分级"
+          align="center"
+        />
+        <el-table-column
+          prop="bugPriority"
+          label="优先级"
+          align="center"
+        />
+        <el-table-column
+          prop="bugStatus"
+          label="状态"
+          align="center"
+        />
+        <el-table-column
+          prop="resolution"
+          label="解决结果"
+          align="center"
+        />
+        <el-table-column
+          prop="bugFindStyle"
+          label="发现方式"
+          align="center"
+        />
+      </el-table>
+      <el-pagination style="margin-top:30px;" align="center" :current-page="curIndex" :page-sizes="[5, 10, 20]" :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
+    </div>
+  </div>
+</template>
+
+<script>
+import { getDefectInfo } from '@/api/qualityCenter'
+// import { apiBusinessLineAll } from '@/api/qualityMeasurement.js'
+// import Json from '@/api/home.json'
+export default {
+  data() {
+    return {
+      tableData: [],
+      input: '',
+      curIndex: 1,
+      pageSize: 10,
+      total: 0,
+      processSerach: {}
+    }
+  },
+  created() {
+    this._initProcess()
+  },
+  methods: {
+    _initProcess() {
+      this.processSerach = { id: this.$route.query.id, type: this.$route.query.type, page: this.curIndex, perPage: this.pageSize, startTime: this.$route.query.startTime, endTime: this.$route.query.endTime }
+      getDefectInfo(this.processSerach).then(res => {
+        this.tableData = res.data
+        this.total = res.data.total
+      })
+    },
+    handleSizeChange(size) {
+      this.pageSize = size
+      this._initProcess()
+    },
+    handleCurrentChange(curIndex) {
+      this.curIndex = curIndex
+      this._initProcess()
+    }
+  }
+}
+</script>
+
+<style lang="stylus" scoped>
+  .set-background
+    background-color #F2F3F6
+    display flex
+    justify-content center
+    .block
+      background-color rgba(255,255,255,1)
+      box-shadow 0px 0px 11px 0px rgba(238,240,245,1)
+      border-radius 7px
+      width 97%
+      min-height calc(100vh - 100px)
+      margin-top 25px
+      padding 29px 20px
+      margin-bottom 22px
+      .title-search-output
+        display flex
+        align-items center
+        justify-content space-between
+        margin 15px 0
+        .search-output
+          display flex
+          justify-content space-around
+    .block >>> th
+      background-color #F1F4F7 !important
+      font-size 10px
+    .block >>> .el-table__body-wrapper  .cell
+      font-size 10px
+      white-space nowrap
+      text-overflow ellipsis
+      overflow hidden
+</style>

+ 1 - 1
src/views/quality/qualityMeasurement.vue

@@ -508,7 +508,7 @@ export default {
       this.$router.push({ name: '上线过程', query: { id: this.pauseTreeNode.id, type: this.pauseKey, dataType: e, startTime: this.timeInterval[0], endTime: this.timeInterval[1] }})
     },
     toDefectView() {
-      this.$router.push({ name: '上线过程', query: { id: this.pauseTreeNode.id, type: this.pauseKey, startTime: this.timeInterval[0], endTime: this.timeInterval[1] }})
+      this.$router.push({ name: '缺陷过程', query: { id: this.pauseTreeNode.id, type: this.pauseKey, startTime: this.timeInterval[0], endTime: this.timeInterval[1] }})
     },
     handleSelectSecondary(key) {
       console.log(key)

+ 17 - 2
src/views/virtualDevices/HMvehicle.vue

@@ -105,7 +105,17 @@
                     <div>
                       <el-button size="mini" type="success" plain @click="activate(scope.row.ecuId, scope.row.vehicleId, scope.row.batteryId, scope.row.imsi, scope.row.imei, scope.row.vehicleVersion, scope.row.cityName)">激活</el-button>
                       <el-button size="mini" type="info" plain @click="offHmvirtual(scope.row.ecuId)">下线</el-button>
-                      <el-button size="mini" type="danger" @click="delHmVirtual(scope.row.ecuId)">删除</el-button>
+                      <el-button size="mini" type="danger" @click="dialogVisible = true">删除</el-button>
+                      <el-dialog
+                        :visible.sync="dialogVisible"
+                        width="30%"
+                      >
+                        <span>确定要删除这条车辆信息吗</span>
+                        <span slot="footer" class="dialog-footer">
+                          <el-button type="primary" size="mini" @click="delHmVirtual(scope.row.ecuId)">确 定</el-button>
+                          <el-button type="danger" size="mini" @click="dialogVisible = false">取 消</el-button>
+                        </span>
+                      </el-dialog>
                       <el-button size="mini" type="primary">...</el-button>
                     </div>
                   </div>
@@ -149,6 +159,7 @@ export default {
       total: 0,
       city: cityJson,
       value: '',
+      dialogVisible: false,
       hmVehicleBaseInfo: {
         'batteryVoltage': 36511,
         'controllerTemperature': 25,
@@ -272,7 +283,7 @@ export default {
     activate(ecuId, vehicleId, batteryId, imsi, imei, vehicleVersion, cityName) {
       const params = { ecuId: ecuId, vehicleId: vehicleId, batteryId: batteryId, imsi: imsi, imei: imei, vehicleVersion: vehicleVersion, cityName: cityName, hmVehicleBaseInfo: this.hmVehicleBaseInfo, hmVehicleBaseStationInfo: this.hmVehicleBaseStationInfo, hmVehicleGpsInfo: this.hmVehicleGpsInfo }
       createHmVirtualDevice(params).then(res => {
-        if (res.success === 1) {
+        if (res.code === 200) {
           this.successFun('activate')
           this._queryDeviceInfo()
         } else {
@@ -301,6 +312,7 @@ export default {
           this.errorFun('delete')
         }
       })
+      this.dialogVisible = false
     },
     successFun(successText) {
       this.$notify({ title: 'Success', message: `${successText} Successfully`, type: 'success', duration: 2000 })
@@ -351,4 +363,7 @@ export default {
       .el-icon-lock , .el-icon-unlock
         font-size 20px
         margin 4px 7px 0 0
+      .specail-lock >>> .el-dialog__footer
+        display flex
+        justify-content center
 </style>

+ 31 - 12
src/views/virtualDevices/HMvehicleCreate.vue

@@ -2,23 +2,28 @@
   <div id="window-judge" class="set-background">
     <div class="block">
       <el-form ref="form" :model="form" :rules="serviceDataRules">
-        <el-form-item label="Imei" prop="imei" :label-width="formLabelWidth">
-          <el-input v-model="form.imei" autocomplete="off" />
-        </el-form-item>
         <el-form-item label="Eculd" prop="ecuId" :label-width="formLabelWidth">
-          <el-input v-model="form.ecuId" autocomplete="off" />
+          <el-input v-model="form.ecuId" style="width: 35%;" autocomplete="off" />
+          <div class="tip"><p>以VIR开头拼接13位数字 , 示例 : VIR0419070800454</p></div>
+        </el-form-item>
+        <el-form-item label="BatteryId" prop="batteryId" :label-width="formLabelWidth">
+          <el-input v-model="form.batteryId" style="width: 35%;" autocomplete="off" />
+          <div class="tip"><p>以BAA开头拼接13位数字 , 示例 : BAA3218101509005</p></div>
         </el-form-item>
         <el-form-item label="VehicleId" prop="vehicleId" :label-width="formLabelWidth">
-          <el-input v-model="form.vehicleId" autocomplete="off" />
+          <el-input v-model="form.vehicleId" style="width: 35%;" autocomplete="off" />
+          <div class="tip"><p>以9开头的8位数字 , 示例 : 92264605</p></div>
         </el-form-item>
-        <el-form-item label="Imsi" prop="imsi" :label-width="formLabelWidth">
-          <el-input v-model="form.imsi" autocomplete="off" />
+        <el-form-item label="Imei" prop="imei" :label-width="formLabelWidth">
+          <el-input v-model="form.imei" style="width: 35%;" autocomplete="off" />
+          <div class="tip"><p>以9开头的15位数字 , 示例 : 967047046635466</p></div>
         </el-form-item>
-        <el-form-item label="BatteryId" prop="batteryId" :label-width="formLabelWidth">
-          <el-input v-model="form.batteryId" autocomplete="off" />
+        <el-form-item label="Imsi" prop="imsi" :label-width="formLabelWidth">
+          <el-input v-model="form.imsi" style="width: 35%;" autocomplete="off" />
+          <div class="tip"><p>以9开头的15位数字 , 示例 : 960046550508466</p></div>
         </el-form-item>
         <el-form-item label="VehicleVersion" prop="vehicleVersion" :label-width="formLabelWidth">
-          <el-input v-model="form.vehicleVersion" autocomplete="off" />
+          <el-input v-model="form.vehicleVersion" style="width: 35%;" autocomplete="off" />
         </el-form-item>
         <el-form-item label="City" prop="cityName" :label-width="formLabelWidth">
           <el-select v-model="form.cityName" filterable placeholder="请选择">
@@ -98,7 +103,7 @@ export default {
         imei: [{ required: true, message: '终端IMEI码必须为十五位', trigger: 'change' }],
         ecuId: [{ required: true, message: '硬件中控ID不能为空', trigger: 'change' }],
         vehicleId: [{ required: true, message: '车辆ID不能为空', trigger: 'change' }],
-        imsi: [{ required: true, message: '终端IMSI码必须为十五位', trigger: 'change' }],
+        imsi: [{ required: true, message: '终端IMSI码不能为空', trigger: 'change' }],
         batteryId: [{ required: true, message: '电池ID不能为空', trigger: 'change' }],
         vehicleVersion: [{ required: true, message: '整车版本不能为空', trigger: 'change' }],
         cityName: [{ required: true, message: '城市名称不能为空', trigger: 'change' }]
@@ -114,7 +119,7 @@ export default {
           form.hmVehicleBaseStationInfo = this.hmVehicleBaseStationInfo
           form.hmVehicleGpsInfo = this.hmVehicleGpsInfo
           createHmVirtualDevice(form).then(res => {
-            if (res.success === 1) {
+            if (res.code === 200) {
               this.successFun('create')
               this.$router.go(-1)
             } else {
@@ -150,6 +155,20 @@ export default {
       min-height calc(100vh - 100px)
     .block >>> .el-form-item__label
       display flex
+    .block >>> .el-form-item__content
+      display flex
+    .tip
+      width 60%
+      position relative
+      text-align center
+    .tip p
+      position absolute
+      bottom 0px
+      padding 0px
+      margin 0px
+      color grey
+      height 30px
+      margin-left 15px
     .submit
       display flex
       flex-direction row-reverse