qinzhipeng_v 5 years ago
parent
commit
ee05a7f972

+ 1 - 1
src/api/caseProject.js

@@ -87,7 +87,7 @@ export function updateCaseData(data) {
 // key新增
 export function createCaseData(data) {
   return request({
-    url: mockUrl + '/case/createCaseAndBackList',
+    url: mockUrl + '/case/createCase',
     method: 'post',
     data
   })

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

@@ -12,7 +12,7 @@
           </el-row>
           <el-row>
             <el-col :span="21">
-              <el-form-item label="前置条件" prop="caseCondition">
+              <el-form-item label="前置条件">
                 <el-input v-model="caseData.caseCondition" placeholder="请输入" />
               </el-form-item>
             </el-col>
@@ -20,20 +20,20 @@
           <el-row>
             <el-col :span="21">
               <div style="white-space:nowrap; display:flex;">
-                <el-form-item label="所属项目" prop="projectName" style="flex:1"><el-input v-model="caseData.projectName" clearable placeholder="请输入" /></el-form-item>
-                <el-form-item label="所属需求" prop="taskName" style="flex:1; margin-left: 2%;"><el-input v-model="caseData.taskName" clearable placeholder="请输入" /></el-form-item>
+                <el-form-item label="所属项目" style="flex:1"><el-input v-model="caseData.projectName" clearable placeholder="请输入" /></el-form-item>
+                <el-form-item label="所属需求" style="flex:1; margin-left: 2%;"><el-input v-model="caseData.taskName" clearable placeholder="请输入" /></el-form-item>
               </div>
             </el-col>
           </el-row>
           <el-row>
             <el-col :span="21">
               <div style="white-space:nowrap; display:flex;">
-                <el-form-item label="用例优先级" prop="casePriority" style="flex:1">
+                <el-form-item label="用例优先级" 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; margin-left: 2%;"><el-input v-model="caseData.api" clearable placeholder="请输入" /></el-form-item>
+                <el-form-item label="API" style="flex:1; margin-left: 2%;"><el-input v-model="caseData.api" clearable placeholder="请输入" /></el-form-item>
               </div>
             </el-col>
           </el-row>
@@ -51,6 +51,21 @@
             </el-col>
           </el-row>
         </el-form>
+        <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-header>
       <el-main style="background:#ffffff;height:auto; width:94%;margin: 0 3% 3% 3%; font-size:14px;border-radius:8px;">
         <!-- 新增 -->
@@ -70,7 +85,7 @@
         </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 :disabled="dis" type="primary" @click=" title_Name === '新增' ? caseCreateCase(caseData) : caseQueryCase(caseData)">保 存</el-button>
             <el-button style="margin:9% 0 0 4%;" @click="$router.go(-1)">取 消</el-button>
           </el-col>
         </el-row>
@@ -81,7 +96,7 @@
 </template>
 
 <script>
-import { createCaseData } from '@/api/caseProject.js'
+import { createCaseData, queryCasesData, updateCaseData } from '@/api/caseProject.js'
 
 export default {
   data() {
@@ -92,16 +107,13 @@ export default {
       startId: '',
       caseData: {},
       dis: false,
+      btn_show: false,
       id: '',
-      arry: [],
       arr: [],
+      uptataKey: [],
+      title_Name: '',
       createFormData: {
-        title: [{ required: true, message: '用例名称不能为空', trigger: 'change' }],
-        caseCondition: [{ required: true, message: '前置条件不能为空', trigger: 'change' }],
-        projectName: [{ required: true, message: '所属项目不能为空', trigger: 'change' }],
-        taskName: [{ required: true, message: '所属需求不能为空', trigger: 'change' }],
-        api: [{ required: true, message: 'API不能为空', trigger: 'change' }],
-        casePriority: [{ required: true, message: '用例优先级不能为空', trigger: 'change' }]
+        title: [{ required: true, message: '用例名称不能为空', trigger: 'change' }]
       },
       priorityStrings: [{ name: 'p0', value: 0 }, { name: 'p1', value: 1 }, { name: 'p2', value: 2 }, { name: 'p3', value: 3 }]
     }
@@ -113,20 +125,42 @@ export default {
     // 初始化
     initCode() {
       if (this.$route.query.data) {
+        this.title_Name = '新增'
+        this.$set(this.caseData, 'casePriority', 3)
         this.startId = this.$route.query.data
         if (this.$refs['caseData'] !== undefined) {
           this.$refs['caseData'].resetFields()
         }
       }
+      if (this.$route.query.id) {
+        this.title_Name = '编辑'
+        this.url = window.location.href // 获取url中"?"符后的字串
+        this.caseFolderId = this.url.split('&caseFolderId=')
+        console.log(this.caseFolderId)
+        this.id = this.caseFolderId[0].split('?id=')
+        console.log(this.id)
+        queryCasesData({ caseFolderId: this.caseFolderId[1] }).then(res => {
+          for (var el of res.data.list) {
+            if (el.id === Number(this.id[1])) {
+              this.caseData = el
+              if (this.caseData.accessory !== '') {
+                this.btn_show = true
+                console.log(typeof (this.caseData.accessory))
+                var obj = JSON.parse(this.caseData.accessory.split('{}'))
+                for (var a of obj) {
+                  this.uptataKey.push(a)
+                }
+                break
+              }
+            }
+          }
+        })
+      }
     },
 
     // 图片上传成功的回调
     handleAvatarSuccess(response, file, fileList) {
-      var 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)
-      console.log(this.arry)
       this.dis = false
     },
 
@@ -145,23 +179,52 @@ export default {
       this.data.splice(e, 1)
     },
 
+    // 图片上传成功的回调(编辑)
+    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)
+        }
+      }
+    },
+
+    // 编辑_数据
+    caseQueryCase(vel) {
+      console.log('编辑' + JSON.stringify(vel))
+      this.caseData = vel
+      this.caseData.accessory = JSON.stringify(this.uptataKey)
+      updateCaseData(this.caseData).then(res => {
+        this.$message({ type: 'success', message: res.msg, duration: 1000 })
+        this.$router.go('-1')
+      })
+    },
+
     // 新建Data
     caseCreateCase(vel) {
+      console.log('新增' + JSON.stringify(vel))
       this.$refs['caseData'].validate((valid) => {
         if (valid) {
           this.caseData = vel
-          this.accessory =
-          this.caseData.caseInfos = this.data
+          this.caseData.accessory = JSON.stringify(this.arr)
+          this.caseData.description = JSON.stringify(this.data)
           this.caseData.creator = this.userNames
           this.caseData.modifier = this.userNames
           this.caseData.caseFolderId = this.startId
           this.caseData.bizId = this.bizJson
+          console.log(this.caseData)
           createCaseData(this.caseData).then(res => {
             if (res.code === 200) {
               this.$message({ type: 'success', message: res.msg, duration: 1000 })
               this.$router.go('-1')
             } else {
-              this.$notify({ title: '提示', message: res.msg, duration: 1000 })
+              this.$message({ type: 'error', message: res.msg, duration: 1000 })
             }
           })
         }
@@ -173,20 +236,28 @@ export default {
 
 <style>
 .bgColorSz {
-    width: 100%;
-    height: 96vh;
-    background: #F2F3F6;
-    font-size: 0.9rem;
-    display: flex;
-    justify-content: center;
-    align-items: center;
-  }
-  .upload .avatar-uploader-icon {
-    font-size: 14px;
-    color: #8c939d;
-    line-height: 178px;
-    text-align: center;
+  width: 100%;
+  height: 96vh;
+  background: #F2F3F6;
+  font-size: 0.9rem;
+  display: flex;
+  justify-content: center;
+  align-items: center;
   }
+
+.cla .el-table td {
+  padding:0px;
+}
+.deleteSty {
+  cursor: pointer;
+  border: none;
+}
+.upload .avatar-uploader-icon {
+  font-size: 14px;
+  color: #8c939d;
+  line-height: 178px;
+  text-align: center;
+}
   /* .upload .el-upload-dragger {
      width: 43em;
   } */

+ 0 - 1
src/views/Platform/useCase/queryUse.vue

@@ -72,7 +72,6 @@ export default {
       queryCase({ id: this.id[1], caseFolderId: this.caseFolderId[1] }).then(res => {
         for (var el of res.data.list) {
           el.id === Number(this.id[1]) ? this.formLabelAlign = el : ''
-          console.log(this.formLabelAlign)
           var obj = JSON.parse(this.formLabelAlign.accessory.split('{}')[0])
           for (var a of obj) {
             this.uptataKey.push(a)

+ 1 - 1
src/views/Platform/useCase/updateUse.vue

@@ -156,7 +156,7 @@ export default {
       }
     },
 
-    // 新建Data
+    // 编辑_数据
     caseCreateCase(vel) {
       this.caseData = vel
       this.caseData.accessory = JSON.stringify(this.uptataKey)

+ 58 - 9
src/views/Platform/useCasePage.vue

@@ -4,16 +4,16 @@
     <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;">
-            <div class="nav_Input" style="min-height:81vh;" @click="click_fa">
+          <el-aside width="17%" style=" background: #FFF;margin: 1% 0 1% 1%; border-radius:8px;">
+            <div class="nav_Input" style="min-height:90vh;" @click="click_fa">
               <br>
-              <p v-show="node_Data" style="color: #DCDFE6; margin: 100% 0;font-size:14px; text-align:center;">空空如也</p>
+              <p v-show="node_Data" style="color: #DCDFE6; margin: 100% 0;font-size:14px; text-align:center;" @click="createFolder">新建文件夹</p>
               <el-tree
                 v-if="dataShow"
                 :data="data1"
                 node-key="id"
                 draggable
-                :expand-on-click-node="true"
+                :expand-on-click-node="false"
                 :default-expanded-keys="[1]"
                 :default-checked-keys="[5]"
                 @node-drag-start="handleDragStart"
@@ -27,12 +27,21 @@
                 <span slot-scope="{ node, data }" style="width:100%;" class="custom-tree-node" @mouseenter="mouseenter(data)" @mouseleave="mouseleave(data)">
                   <span :title="data.label" class="span_el" @dblclick="dblclick(data)">{{ node.label }}</span>
                   <el-input v-if="data.que" ref="get_Input" v-model="node_Name.name" size="mini" @blur="queryNodeName(node_Name.name, data)">输入框</el-input>
-                  <el-button v-show="data.del" type="text" size="mini" icon="el-icon-delete" @click="() => remove(node, data)" />
+                  <el-dropdown v-show="data.del" style="margin-left:10px" trigger="click">
+                    <span class="el-dropdown-link">
+                      ···<i class="el-icon--right" />
+                    </span>
+                    <el-dropdown-menu slot="dropdown">
+                      <el-dropdown-item @click.native="createFolder">新建节点</el-dropdown-item>
+                      <el-dropdown-item @click.native="dblclick(data)">编辑节点</el-dropdown-item>
+                      <el-dropdown-item @click.native="() => remove(node, data)">删除节点</el-dropdown-item>
+                      <el-dropdown-item @click.native="() => append(data)">新建子节点</el-dropdown-item>
+                    </el-dropdown-menu>
+                  </el-dropdown>
                 </span>
               </el-tree>
               <el-input v-if="Folder_Show" ref="input1" v-model="add_Folder" size="mini" placeholder="新建文件夹" @blur="hide_input(add_Folder)" />
             </div>
-            <div style="padding: 0% 15% 15% 15%; text-align: center;"><el-button icon="el-icon-circle-plus" style="border:none;" @click="createFolder">新建文件夹</el-button></div>
           </el-aside>
           <el-container>
             <el-header style="background:#ffffff;height:auto; width:98%;margin: 1%; font-size:13px; border-radius:8px;">
@@ -74,6 +83,16 @@
               </el-row>
             </el-header>
             <el-main style="background:#ffffff; width:98%;margin:0% 1% 1% 1%; font-size:14px;border-radius:8px;">
+              <el-upload
+                class="upload-demo"
+                action="https://jsonplaceholder.typicode.com/posts/"
+                :on-success="handlePreview"
+                multiple
+                :limit="3"
+                :file-list="fileList"
+              >
+                <el-button size="small" type="primary">点击上传</el-button>
+              </el-upload>
               <el-button type="primary" style="margin-left:1%;width:10%;" @click="uploadFile()">导入</el-button>
               <el-tooltip class="item" effect="light" content="导出勾选项,没有勾选将导出模版" placement="top">
                 <el-button style="margin-left:2%;width:10%;" @click="exportExcel">导出</el-button>
@@ -151,7 +170,7 @@ export default {
       userData: '',
       caseInfo: '',
       pageSize: 5,
-      curIndex: 0,
+      curIndex: 1,
       startId: '',
       created_id: '-1',
       end: '',
@@ -271,6 +290,36 @@ export default {
       })
     },
 
+    // 添加节点
+    append(data) {
+      console.log(data)
+      var id = 1
+      const newChild = { id: id++, label: '新建子节点', children: [] }
+      if (!data.children) {
+        this.$set(data, 'children', [])
+      }
+      data.children.push(newChild)
+      this.formData = {
+        bizId: this.bizJson,
+        folderName: newChild.label,
+        xmindUrl: '',
+        parentFolderId: this.startId,
+        creator: this.userInformation,
+        modifier: this.userInformation
+      }
+      createFolderData(this.formData).then(res => {
+      //   if (res.code === 200) {
+      //     this.$message({ message: res.msg, type: 'success', duration: 1000, offset: 150 })
+      //     this.data1 = []
+      //     this.AllQueryFolderData(this.bizJson)
+      //     this.add_Folder = ''
+      //   } else {
+      //     this.$message({ message: res.msg, type: 'error', duration: 1000, offset: 150 })
+      //     this.add_Folder = ''
+      //   }
+      })
+    },
+
     // 更新节点
     queryNodeName(val, data) {
       var mun = ''
@@ -427,7 +476,7 @@ export default {
             break
           case 2: // 编辑
             // this.div1 = false
-            this.$router.push({ path: '/Platform/useCasePage/updateUse', query: { id: this.startId }})
+            this.$router.push({ path: '/Platform/useCasePage/createUse', query: { id: ele.id, caseFolderId: ele.caseFolderId }})
             break
           case 3: // 新增
             this.$router.push({ path: '/Platform/useCasePage/createUse', query: { data: this.startId }})
@@ -507,7 +556,7 @@ export default {
       this.created_id = e.id
       this.formData = {
         pageSize: 5,
-        curIndex: 0,
+        curIndex: 1,
         caseFolderId: e.id
       }
       queryCasesData(this.formData).then(res => {