qinzhipeng_v 5 anni fa
parent
commit
b73ca2781a

+ 2 - 1
src/layout/components/AppMain.vue

@@ -2,7 +2,8 @@
   <section class="app-main">
     <transition name="fade-transform" mode="out-in">
       <keep-alive>
-        <router-view :key="key" />
+        <router-view v-if="$route.meta.keepAlive" :key="key" />
+        <router-view v-if="!$route.meta.keepAlive" :key="key" />
       </keep-alive>
     </transition>
   </section>

+ 8 - 1
src/router/index.js

@@ -146,7 +146,7 @@ export const constantRoutes = [
         name: '用例管理',
         // hidden: true,
         component: () => import('@/views/Platform/useCasePage'),
-        meta: { title: '用例管理' },
+        meta: { title: '用例管理', keepAlive: true },
         children: [
           {
             path: 'createUse',
@@ -161,6 +161,13 @@ export const constantRoutes = [
             hidden: true,
             component: () => import('@/views/Platform/useCase/queryUse'),
             meta: { title: '用例查看' }
+          },
+          {
+            path: 'updateUse',
+            name: '用例编辑',
+            hidden: true,
+            component: () => import('@/views/Platform/useCase/updateUse'),
+            meta: { title: '用例编辑' }
           }
         ]
       },

+ 7 - 7
src/views/Platform/bugManage/bugQuery.vue

@@ -228,15 +228,15 @@ export default {
       })
       bugGet(this.$route.query.id).then(res => {
         this.form = res.data
-        if (res.data.accessory === '') {
-          var str = res.data.accessory
-          if (str !== '') {
-            var obj = JSON.parse(str.split('{}')[0])
-            for (var a of obj) {
-              this.uptataKey.push(a)
-            }
+        // if (res.data.accessory === '') {
+        var str = res.data.accessory
+        if (str !== '') {
+          var obj = JSON.parse(str.split('{}')[0])
+          for (var a of obj) {
+            this.uptataKey.push(a)
           }
         }
+        // }
         for (const a of this.bizIdEnumList) {
           if (this.form.bizId === a.code) {
             this.bizId = this.form.bizName

+ 34 - 178
src/views/Platform/useCase/createUse.vue

@@ -25,58 +25,8 @@
         </el-form>
       </el-header>
       <el-main style="background:#ffffff;height:auto; width:94%;margin: 0 3% 3% 3%; font-size:14px;border-radius:8px;">
-        <!-- 编辑 -->
-        <el-form v-show="form_Query" label-width="80px" :model="caseData" style="box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04); margin-bottom:2%;">
-          <el-row>
-            <el-col :span="20" style="margin:2% 0 0 0; white-space:nowrap;">
-              <el-form-item label="执行步骤">
-                <el-input v-model="caseData.description" type="textarea" :rows="4" placeholder="请输入内容" />
-              </el-form-item>
-            </el-col>
-          </el-row>
-          <el-row>
-            <el-col :span="22">
-              <el-form-item label="预期结果">
-                <el-input v-model="caseData.expectedResult" placeholder="请输入内容" />
-              </el-form-item>
-            </el-col>
-          </el-row>
-          <div style="display:flex;">
-            <el-row style="flex:1;">
-              <el-col :span="22">
-                <el-form-item label="附件">
-                  <el-upload class="upload-demo" drag action="http://star.xiaojukeji.com/upload/img.node" multiple :on-success="(response, file, fileList)=>{return constractSuccUpload(response, file, fileList )}" :on-progress="DisableButton">
-                    <i class="el-icon-plus avatar-uploader-icon"> 添加图片 </i>
-                  </el-upload>
-                </el-form-item>
-              </el-col>
-            </el-row>
-            <el-row style="flex:1;">
-              <el-col :span="20">
-                <el-form-item label="备注">
-                  <el-input v-model="caseData.remark" type="textarea" :rows="8" placeholder="请输入内容" />
-                </el-form-item>
-              </el-col>
-            </el-row>
-          </div>
-          <div v-show="btn_show" align="center" class="cla">
-            <el-table v-show="btn_show" :data="uptataKey" fit style="width: 90%;">
-              <el-table-column label="" min-width="150">
-                <template slot-scope="scope">{{ scope.row.name }}</template>
-              </el-table-column>
-              <el-table-column label="" min-width="300">
-                <template slot-scope="scope"><a :href="scope.row.url" style="color:blue;">{{ scope.row.url }}</a></template>
-              </el-table-column>
-              <el-table-column fixed="right" label="" width="50" align="center">
-                <template slot-scope="scope">
-                  <el-button class="deleteSty" @click="deleteURL(scope.row)"> x </el-button>
-                </template>
-              </el-table-column>
-            </el-table>
-          </div>
-        </el-form>
         <!-- 新增 -->
-        <el-form v-for="(item, index) in data" v-show="form_created" :key="index" label-width="80px" :model="item" style="box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04); margin-bottom:2%;">
+        <el-form v-for="(item, index) in data" :key="index" label-width="80px" :model="item" style="box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04); margin-bottom:2%;">
           <el-row>
             <el-col :span="20" style="margin:2% 0 0 0; white-space:nowrap;">
               <el-form-item label="执行步骤">
@@ -111,26 +61,10 @@
               </el-col>
             </el-row>
           </div>
-          <div v-show="btn_show" align="center" class="cla">
-            <el-table v-show="btn_show" :data="uptataKey" fit style="width: 90%;">
-              <el-table-column label="" min-width="150">
-                <template slot-scope="scope">{{ scope.row.name }}</template>
-              </el-table-column>
-              <el-table-column label="" min-width="300">
-                <template slot-scope="scope"><a :href="scope.row.url" style="color:blue;">{{ scope.row.url }}</a></template>
-              </el-table-column>
-              <el-table-column fixed="right" label="" width="50" align="center">
-                <template slot-scope="scope">
-                  <el-button class="deleteSty" @click="deleteURL(scope.row)"> x </el-button>
-                </template>
-              </el-table-column>
-            </el-table>
-          </div>
         </el-form>
-        <!-- </div> -->
         <el-row>
           <el-col :span="22" style="text-align:right; ">
-            <el-button :disabled="dis" type="primary" @click="caseCreateCase(caseData, titleName)">保 存</el-button>
+            <el-button :disabled="dis" type="primary" @click="caseCreateCase(caseData)">保 存</el-button>
             <el-button style="margin:9% 0 0 4%;" @click="$router.go(-1)">取 消</el-button>
           </el-col>
         </el-row>
@@ -141,7 +75,7 @@
 </template>
 
 <script>
-import { createFolderData, createCaseData, updateCaseData, queryCasesData } from '@/api/caseProject.js'
+import { createCaseData } from '@/api/caseProject.js'
 
 export default {
   data() {
@@ -150,24 +84,16 @@ export default {
       userNames: localStorage.getItem('username'),
       bizJson: localStorage.getItem('key'),
       startId: '',
-      caseFolderId: '',
       caseData: {},
-      btn_show: false,
       dis: false,
-      form_Query: false,
-      form_created: false,
       id: '',
       arry: [],
       arr: [],
-      tableList: [],
-      titleName: '',
-      uptataKey: [],
       createFormData: {
         caseCondition: [{ required: true, message: '前置条件不能为空', trigger: 'change' }],
         api: [{ required: true, message: '对应接口不能为空', trigger: 'change' }],
         casePriority: [{ required: true, message: '用例优先级不能为空', trigger: 'change' }]
       },
-      textarea: '',
       priorityStrings: [{ name: 'p0', value: 0 }, { name: 'p1', value: 1 }, { name: 'p2', value: 2 }, { name: 'p3', value: 3 }]
     }
   },
@@ -175,74 +101,29 @@ export default {
     this.initCode()
   },
   methods: {
-    trademrakRegistSuccess(obj, res, file) {
-      var obj_data = obj.data
-      this.arr.push({ name: file.name, url: 'http:' + file.response.url })
-      obj_data.accessory = JSON.stringify(this.arr)
-      this.arry.push(obj_data)
-      this.dis = false
-      console.log(this.arry)
-    },
+    // 初始化
     initCode() {
-      if (this.$route.query.data) { // 新增
-        this.titleName = '新增'
-        this.form_created = true
-        this.btn_show = false
+      if (this.$route.query.data) {
         this.startId = this.$route.query.data
         if (this.$refs['caseData'] !== undefined) {
           this.$refs['caseData'].resetFields()
         }
       }
+    },
 
-      if (this.$route.query.id) { // 编辑
-        this.titleName = '编辑'
-        this.form_Query = true
-        this.url = window.location.href // 获取url中"?"符后的字串
-        this.id = this.url.split('?id=')
-        this.startId = this.id[1]
-        queryCasesData({ caseFolderId: this.id[1] }).then(res => {
-          for (var el of res.data.list) {
-            el.caseFolderId === Number(this.id[1]) ? this.caseData = el : ''
-            if (this.caseData.accessory !== '') {
-              this.btn_show = true
-              var obj = JSON.parse(this.caseData.accessory.split('{}')[0])
-              for (var a of obj) {
-                this.uptataKey.push(a)
-              }
-              break
-            }
-          }
-        })
-      }
+    // 图片上传成功的回调
+    trademrakRegistSuccess(obj, res, file) {
+      var obj_data = obj.data
+      this.arr.push({ name: file.name, url: 'http:' + file.response.url })
+      obj_data.accessory = JSON.stringify(this.arr)
+      this.arry.push(obj_data)
+      this.dis = false
     },
 
+    // 上传成功可以提交
     DisableButton() {
       this.dis = true
     },
-    getCreateUseData() {
-      if (this.$route.query.data) {
-        console.log(this.$route.query.data)
-        createFolderData(this.formData).then(res => {
-          if (res.code === 200) {
-            this.centerDialogVisible = false
-            this.$message({ type: 'success', message: res.msg, duration: 1000 })
-            this.createCaseCode = false
-            this.dataShow = true
-            this.data1 = []
-            this.AllQueryFolderData()
-          } else {
-            this.$message({ type: 'error', message: res.msg, duration: 1000 })
-          }
-        })
-      }
-    },
-
-    // 图片上传成功的回调(编辑)
-    constractSuccUpload(response, file, fileList) {
-      this.dis = false
-      const fileUrl = { name: file.name, url: 'http:' + file.response.url }
-      this.uptataKey.push(fileUrl)
-    },
 
     // 添加事件
     add() {
@@ -252,58 +133,33 @@ export default {
       this.data.splice(e, 1)
     },
 
-    deleteURL(vel) {
-      for (var i = 0; i < this.uptataKey.length; i++) {
-        if (this.uptataKey[i].name === vel.name) {
-          this.uptataKey.splice(i, 1)
-        }
-      }
-    },
-
     // 新建Data
-    caseCreateCase(vel, e) {
-      if (e === '编辑') {
-        this.caseData = vel
-        this.caseData.accessory = JSON.stringify(this.uptataKey)
-        updateCaseData(this.caseData).then(res => {
-          this.$message({ type: 'success', message: res.msg })
-          this.$router.go(-1)
-        })
-      }
-      if (e === '新增') {
-        this.$refs['caseData'].validate((valid) => {
-          if (valid) {
-            this.caseData = vel
-            this.caseData.caseInfos = this.data
-            this.caseData.creator = this.userNames
-            this.caseData.modifier = this.userNames
-            this.caseData.caseFolderId = this.startId
-            this.caseData.bizId = this.bizJson
-            createCaseData(this.caseData).then(res => {
-              if (res.code === 200) {
-                this.gridData = res.data
-                this.$message({ type: 'success', message: res.msg, duration: 1000 })
-                this.$router.go('-1')
-              } else {
-                this.$notify({ title: '提示', message: res.msg, duration: 1000 })
-              }
-            })
-          }
-        })
-      }
+    caseCreateCase(vel) {
+      this.$refs['caseData'].validate((valid) => {
+        if (valid) {
+          this.caseData = vel
+          this.caseData.caseInfos = this.data
+          this.caseData.creator = this.userNames
+          this.caseData.modifier = this.userNames
+          this.caseData.caseFolderId = this.startId
+          this.caseData.bizId = this.bizJson
+          createCaseData(this.caseData).then(res => {
+            if (res.code === 200) {
+              this.gridData = res.data
+              this.$message({ type: 'success', message: res.msg, duration: 1000 })
+              this.$router.go('-1')
+            } else {
+              this.$notify({ title: '提示', message: res.msg, duration: 1000 })
+            }
+          })
+        }
+      })
     }
   }
 }
 </script>
 
 <style>
-.cla .el-table td {
-  padding:0px;
-}
-.deleteSty {
-  cursor: pointer;
-  border: none;
-}
 .bgColorSz {
     width: 100%;
     height: 96vh;

+ 197 - 0
src/views/Platform/useCase/updateUse.vue

@@ -0,0 +1,197 @@
+<template>
+  <div id="window-judge" style="background:#F2F3F6;min-height:95vh;">
+    <el-container>
+      <el-header style="background:#ffffff;height:auto; width:94%;margin:3%; font-size:14px;border-radius:8px;">
+        <el-form ref="caseData" :model="caseData" label-width="90pt" style="margin:1%;" :rules="createFormData">
+          <el-row>
+            <el-col :span="20">
+              <el-form-item label="前置条件" label-width="80pt" prop="caseCondition">
+                <el-input v-model="caseData.caseCondition" placeholder="请输入内容" style="margin-left:1.3%;" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="20">
+              <div style="white-space:nowrap; display:flex;">
+                <el-form-item label="用例优先级" prop="casePriority" style="flex:1">
+                  <el-select v-model="caseData.casePriority" clearable placeholder="用例优先级" style="width: 100%">
+                    <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="API" prop="api" style="flex:1"><el-input v-model="caseData.api" clearable autocomplete="off" style="width: 100%; margin-left:3%;" /></el-form-item>
+              </div>
+            </el-col>
+          </el-row>
+        </el-form>
+      </el-header>
+      <el-main style="background:#ffffff;height:auto; width:94%;margin: 0 3% 3% 3%; font-size:14px;border-radius:8px;">
+        <!-- 编辑 -->
+        <el-form label-width="80px" :model="caseData" style="box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04); margin-bottom:2%;">
+          <el-row>
+            <el-col :span="20" style="margin:2% 0 0 0; white-space:nowrap;">
+              <el-form-item label="执行步骤">
+                <el-input v-model="caseData.description" type="textarea" :rows="4" placeholder="请输入内容" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="22">
+              <el-form-item label="预期结果">
+                <el-input v-model="caseData.expectedResult" placeholder="请输入内容" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <div style="display:flex;">
+            <el-row style="flex:1;">
+              <el-col :span="22">
+                <el-form-item label="附件">
+                  <el-upload class="upload-demo" drag action="http://star.xiaojukeji.com/upload/img.node" multiple :on-success="(response, file, fileList)=>{return constractSuccUpload(response, file, fileList )}" :on-progress="DisableButton">
+                    <i class="el-icon-plus avatar-uploader-icon"> 添加图片 </i>
+                  </el-upload>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row style="flex:1;">
+              <el-col :span="20">
+                <el-form-item label="备注">
+                  <el-input v-model="caseData.remark" type="textarea" :rows="8" placeholder="请输入内容" />
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </div>
+          <div v-show="btn_show" align="center" class="cla">
+            <el-table v-show="btn_show" :data="uptataKey" fit style="width: 90%;">
+              <el-table-column label="" min-width="150">
+                <template slot-scope="scope">{{ scope.row.name }}</template>
+              </el-table-column>
+              <el-table-column label="" min-width="300">
+                <template slot-scope="scope"><a :href="scope.row.url" style="color:blue;">{{ scope.row.url }}</a></template>
+              </el-table-column>
+              <el-table-column fixed="right" label="" width="50" align="center">
+                <template slot-scope="scope">
+                  <el-button class="deleteSty" @click="deleteURL(scope.row)"> x </el-button>
+                </template>
+              </el-table-column>
+            </el-table>
+          </div>
+        </el-form>
+        <el-row>
+          <el-col :span="22" style="text-align:right; ">
+            <el-button :disabled="dis" type="primary" @click="caseCreateCase(caseData)">保 存</el-button>
+            <el-button style="margin:9% 0 0 4%;" @click="$router.go(-1)">取 消</el-button>
+          </el-col>
+        </el-row>
+      </el-main>
+    </el-container>
+
+  </div>
+</template>
+
+<script>
+import { updateCaseData, queryCasesData } from '@/api/caseProject.js'
+
+export default {
+  data() {
+    return {
+      userNames: localStorage.getItem('username'),
+      bizJson: localStorage.getItem('key'),
+      startId: '',
+      caseData: {},
+      btn_show: false,
+      dis: false,
+      id: '',
+      arry: [],
+      arr: [],
+      uptataKey: [],
+      createFormData: {
+        caseCondition: [{ required: true, message: '前置条件不能为空', trigger: 'change' }],
+        api: [{ required: true, message: '对应接口不能为空', trigger: 'change' }],
+        casePriority: [{ required: true, message: '用例优先级不能为空', trigger: 'change' }]
+      },
+      priorityStrings: [{ name: 'p0', value: 0 }, { name: 'p1', value: 1 }, { name: 'p2', value: 2 }, { name: 'p3', value: 3 }]
+    }
+  },
+  created() {
+    this.initCode()
+  },
+  methods: {
+    // 初始化
+    initCode() {
+      if (this.$route.query.id) {
+        this.url = window.location.href // 获取url中"?"符后的字串
+        this.id = this.url.split('?id=')
+        this.startId = this.id[1]
+        queryCasesData({ caseFolderId: this.id[1] }).then(res => {
+          for (var el of res.data.list) {
+            el.caseFolderId === Number(this.id[1]) ? this.caseData = el : ''
+            if (this.caseData.accessory !== '') {
+              this.btn_show = true
+              var obj = JSON.parse(this.caseData.accessory.split('{}')[0])
+              for (var a of obj) {
+                this.uptataKey.push(a)
+              }
+              break
+            }
+          }
+        })
+      }
+    },
+
+    DisableButton() {
+      this.dis = true
+    },
+
+    // 图片上传成功的回调(编辑)
+    constractSuccUpload(response, file, fileList) {
+      this.dis = false
+      const fileUrl = { name: file.name, url: 'http:' + file.response.url }
+      this.uptataKey.push(fileUrl)
+    },
+
+    deleteURL(vel) {
+      for (var i = 0; i < this.uptataKey.length; i++) {
+        if (this.uptataKey[i].name === vel.name) {
+          this.uptataKey.splice(i, 1)
+        }
+      }
+    },
+
+    // 新建Data
+    caseCreateCase(vel) {
+      this.caseData = vel
+      this.caseData.accessory = JSON.stringify(this.uptataKey)
+      updateCaseData(this.caseData).then(res => {
+        this.$message({ type: 'success', message: res.msg })
+        this.$router.go(-1)
+      })
+    }
+  }
+}
+</script>
+
+<style>
+.cla .el-table td {
+  padding:0px;
+}
+.deleteSty {
+  cursor: pointer;
+  border: none;
+}
+.bgColorSz {
+    width: 100%;
+    height: 96vh;
+    background: #F2F3F6;
+    font-size: 0.9rem;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+  }
+  .avatar-uploader-icon {
+    font-size: 20px;
+    color: #8c939d;
+    width: 178px;
+    height: 178px;
+    line-height: 178px;
+    text-align: center;
+  }
+</style>

+ 19 - 5
src/views/Platform/useCasePage.vue

@@ -1,7 +1,7 @@
 <template>
   <div id="init-window" style="position:relative; min-height:95vh; background:#F2F3F6;">
     <router-view />
-    <div style="position: absolute;width: 100%;">
+    <div v-show="div1" style="position: absolute;width: 100%;">
       <div style="background:#F2F3F6;">
         <el-container>
           <el-aside width="15%" style=" background: #FFF;margin: 1% 0 1% 1%; border-radius:8px;">
@@ -113,8 +113,20 @@
                 <el-table-column prop="casePriority" label="用例优先级" />
                 <el-table-column prop="remark" label="备注" />
               </el-table>
+              <div class="block">
+                <el-pagination
+                  :current-page="currentPage4"
+                  :page-sizes="[5, 10, 20]"
+                  :page-size="5 "
+                  layout="total, sizes, prev, pager, next, jumper"
+                  :total="400"
+                  background
+                  @size-change="handleSizeChange"
+                  @current-change="handleCurrentChange"
+                />
+              </div>
               <div align="center">
-                <el-pagination :current-page="curIndex" :page-sizes="[5]" :page-size="pageSize" layout="total, prev, pager, next" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
+                <el-pagination :current-page="curIndex" background :page-sizes="[5]" :page-size="pageSize" layout="total, prev, pager, next" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
               </div>
             </el-main>
           </el-container>
@@ -145,6 +157,7 @@ export default {
   },
   data() {
     return {
+      div1: true,
       id: '',
       label: '',
       node_Name: {},
@@ -422,7 +435,8 @@ export default {
             this.$router.push({ path: '/Platform/useCasePage/queryUse', query: { id: ele.id, caseFolderId: ele.caseFolderId }})
             break
           case 2: // 编辑
-            this.$router.push({ path: '/Platform/useCasePage/createUse', query: { id: this.startId }})
+            // this.div1 = false
+            this.$router.push({ path: '/Platform/useCasePage/updateUse', query: { id: this.startId }})
             break
           case 3: // 新增
             this.$router.push({ path: '/Platform/useCasePage/createUse', query: { data: this.startId }})
@@ -522,8 +536,8 @@ export default {
             this.caseInfo = { id: e, modifier: this.userInformation }
             deleteCaseData(this.caseInfo).then(res => {
               if (res.code === 200) {
-                this.data1 = []
-                this.AllQueryFolderData(localStorage.getItem('key'))
+                // this.data1 = []
+                // this.AllQueryFolderData(localStorage.getItem('key'))
                 var data = {
                   pageSize: this.pageSize,
                   curIndex: this.curIndex,