qinzhipeng_v 5 سال پیش
والد
کامیت
f6dec3db05

+ 2 - 5
src/router/index.js

@@ -180,7 +180,7 @@ export const constantRoutes = [
           {
             path: 'testPageData',
             name: '测试计划管理',
-            // hidden: true,
+            hidden: true,
             component: () => import('@/views/Platform/presentation/testPage.vue'),
             meta: { title: '测试计划管理' }
           },
@@ -316,28 +316,25 @@ export const constantRoutes = [
           children: [{
             path: 'bizPage',
             name: '业务线',
-            // hidden: true,
             component: () => import('@/views/Platform/setUp/systemSetup/bizPage'),
             meta: { title: '业务线' }
           },
           {
             path: 'platformPage',
             name: '平台类型',
-            // hidden: true,
+
             component: () => import('@/views/Platform/setUp/systemSetup/platformPage'),
             meta: { title: '平台类型' }
           },
           {
             path: 'modulePage',
             name: '业务模块',
-            // hidden: true,
             component: () => import('@/views/Platform/setUp/systemSetup/modulePage'),
             meta: { title: '业务模块' }
           },
           {
             path: 'projectPage',
             name: '工程模块',
-            // hidden: true,
             component: () => import('@/views/Platform/setUp/systemSetup/projectPage'),
             meta: { title: '工程模块' }
           }

+ 0 - 10
src/views/Platform/presentation/ResultPageyL.vue

@@ -141,16 +141,6 @@
               <div v-show="showDelay1" class="marage">延期原因 : {{ ClientDatayl.taskLateReason }}</div><br>
             </div>
           </div>
-          <div style="display:flex;">
-            <div style="flex:1">
-              <div class="marage">涉及安全项 : <span :style="getInfoBtnDisabled">{{ ClientDatayl.getInfoBtn }}</span></div><br>
-            </div>
-            <div style="flex:1">
-              <div v-show="showData" class="marage">完成结果 : {{ ClientDatayl.safeInfo }}</div>
-            </div>
-          </div>
-
-          <div style="white-space: nowrap;">SDL链接 : <el-link href="http://wiki.intra.xiaojukeji.com/pages/viewpage.action?pageId=237016271" type="primary" target="_blank"> 普惠SDL准入标准</el-link></div>
 
           <div class="titleStyle">二. 项目背景</div>
 

+ 87 - 111
src/views/Platform/presentation/testPage.vue

@@ -1,21 +1,16 @@
 <template>
   <!-- 测试计划管理 -->
-  <div id="init-window" style="position:relative; min-height:95vh; background:#F2F3F6;">
+  <div id="init-window" style="position:relative; min-height:95vh; font-size:14px background:#F2F3F6;">
     <router-view />
     <div style="position: absolute;width: 100%;">
       <div style="background:#F2F3F6;">
         <el-container>
           <el-aside width="17%" style=" background: #FFF;margin: 1% 0 1% 1%; border-radius:8px;">
-            <div class="nav_Input" style="min-height:81vh;" @click="click_fa">
+            <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>
-              <el-tree
-                v-if="dataShow"
-                :data="data1"
-                :expand-on-click-node="true"
-                node-key="id"
-                @node-click="clickFun"
-              >
+              <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" :expand-on-click-node="false" node-key="id" @node-click="clickFun">
                 <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>
@@ -34,17 +29,16 @@
               </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: 14px; border-radius: 8px;">
+            <el-header style="background:#ffffff; height: auto; width: 98%; margin: 1%; font-size: 13px; border-radius: 8px;">
               <el-row>
                 <el-col :span="24" style="white-space:nowrap;">
                   序列号
                   <el-input v-model="test_plan.id" placeholder="请填写" style="width: 20%; margin: 4% 2%" />
                   测试计划状态
-                  <el-select v-model="test_plan.region" placeholder="活动区域" style="width: 20%; margin: 4% 2%">
-                    <el-option label="区域一" value="shanghai" />
+                  <el-select v-model="test_plan.region" placeholder="请选择" style="width: 20%; margin: 4% 2%">
+                    <el-option v-for="item in projectTypeStrings" :key="item.value" :label="item.name" :value="item.value" />
                   </el-select>
                   <el-button type="primary" @click="queryCaseData(test_plan)">查询</el-button>
                   <el-button type="primary" style="margin: 4% 2%" @click="createGetShow">新增</el-button>
@@ -56,13 +50,13 @@
               <el-radio-group v-model="radio" style="margin: 3%; width: 100%; display: flex;">
                 <el-radio style="margin: 0 3%; flex: 1; border-right: 1px solid #D8D8D8;" :label="3">通过{{ 13 }}个</el-radio>
                 <el-radio style="margin: 0 3%; flex: 1; border-right: 1px solid #D8D8D8;" :label="6">失败{{ 3 }}个</el-radio>
-                <el-radio style="margin: 0 3%; flex: 1; border-right: 1px solid #D8D8D8;" :label="9">阻塞{{ 3 }}个</el-radio>
+                <el-radio style="margin: 0 3%; flex: 1; border-right: 1px solid #D8D8D8;" :label="9">阻塞{{ 3 }}个</el-radio> -->
                 <el-radio style="margin: 0 3%; flex: 1" :label="11">未执行{{ 44 }}个</el-radio>
               </el-radio-group>
             </div>
             <el-main style="background:#ffffff; width:98%;margin:0% 1% 1% 1%; font-size:14px;border-radius:8px;">
               <!-- 主页table -->
-              <el-table :data="gridData" :header-cell-style="{ background: '#F0F2F4', color: '#333B4A' }" border tooltip-effect="dark" style="width: 100%">
+              <el-table :data="gridData" :header-cell-style="{ background: '#F0F2F4', color: '#333B4A' }" border tooltip-effect="dark" size="mini" style="width: 100%">
                 <el-table-column prop="id" label="序列号" min-width="80px" align="center">
                   <template slot-scope="scope">{{ scope.row.id }}</template>
                 </el-table-column>
@@ -103,71 +97,31 @@
             </el-main>
           </el-container>
         </el-container>
-        <!-- 新增-编辑 -->
-        <el-dialog :title="titleName" :visible.sync="dialogFormVisibleUpdate" width="80%">
-          <el-form ref="caseData" :model="caseData" label-width="90pt" :rules="createFormData">
-            <div style="display:flex;">
-              <div style="flex:1;">
-                <el-form-item label="序列号" prop="caseName"><el-input v-model="caseData.caseName" clearable autocomplete="off" style="width: 200px" /></el-form-item>
-                <el-form-item label="前置条件" prop="expectedResult"><el-input v-model="caseData.expectedResult" clearable autocomplete="off" style="width: 200px" /></el-form-item>
-                <el-form-item label="对应api" prop="api"><el-input v-model="caseData.api" clearable autocomplete="off" style="width: 200px" /></el-form-item>
-              </div>
-              <div style="flex:1;">
-                <el-form-item label="项目类型" prop="projectType">
-                  <el-select v-model="caseData.projectType" clearable placeholder="项目类型" style="width: 200px">
-                    <el-option v-for="item in projectTypeStrings" :key="item.value" :label="item.name" :value="item.value" />
-                  </el-select>
-                </el-form-item>
-                <el-form-item label="平台类型" prop="taskType">
-                  <el-select v-model="caseData.taskType" clearable placeholder="任务类型" style="width: 200px" @change="taskTypeChange(caseData.taskType)">
-                    <el-option v-for="item in taskTypeStrings" :key="item.value" :label="item.name" :value="item.value" />
-                  </el-select>
-                </el-form-item>
-                <el-form-item label="用例优先级" prop="casePriority">
-                  <el-select v-model="caseData.casePriority" clearable placeholder="用例优先级" style="width: 200px">
-                    <el-option v-for="item in priorityStrings" :key="item.value" :label="item.name" :value="item.value" />
-                  </el-select>
-                </el-form-item>
-              </div>
-              <div style="flex:1;">
-                <el-form-item v-show="moduleTypeShow" label="模块名" prop="casePriority">
-                  <el-select v-model="caseData.moduleType" clearable placeholder="模块类型" style="width: 200px">
-                    <el-option v-for="item in moduleTypeStr" :key="item.id" :label="item.moduleName" :value="item.id" />
-                  </el-select>
-                </el-form-item>
-              </div>
-            </div>
-            <el-form-item label="用例描述" prop="description"><el-input v-model="caseData.description" clearable type="textarea" style="width: 95%" :rows="5" placeholder="请输入内容" /></el-form-item>
-            <el-form-item label="备注"><el-input v-model="caseData.remark" clearable type="textarea" style="width: 95%" :rows="5" placeholder="请输入内容" /></el-form-item>
-          </el-form>
-          <div slot="footer" class="dialog-footer">
-            <el-button type="primary" @click="dialogFormVisibleUpdate = false">关 闭</el-button>
-            <el-button type="primary" @click="caseCreateCase(caseData, titleName)">确 定</el-button>
-          </div>
-        </el-dialog>
-
-        <el-dialog title="查看" :visible.sync="dialogFormVisibleQuery" width="80%">
-          <el-form ref="caseData" :model="caseData" label-width="90pt">
-            <div style="display:flex;">
-              <div style="flex:1;">
-                <el-form-item label="用例名 :">{{ caseData.caseName }}</el-form-item>
-                <el-form-item label="期望结果 :">{{ caseData.expectedResult }}</el-form-item>
-                <el-form-item label="对应接口 :">{{ caseData.api }}</el-form-item>
-              </div>
-              <div style="flex:1;">
-                <el-form-item label="项目类型 :">{{ caseData.projectTypeName }}</el-form-item>
-                <el-form-item label="任务类型 :">{{ caseData.taskTypeName }}</el-form-item>
-                <el-form-item label="用例优先级 :">{{ caseData.casePriorityName }}</el-form-item>
-              </div>
-              <div style="flex:1;">
-                <el-form-item v-show="moduleTypeShow" label="模块类型 :">{{ caseData.moduleTypeName }}</el-form-item>
-              </div>
-            </div>
-            <el-form-item label="用例描述 :">{{ caseData.description }}</el-form-item>
-            <el-form-item label="备注 :">{{ caseData.remark }}</el-form-item>
+        <!-- 新建测试计划 -->
+        <el-dialog title="新建测试计划" :visible.sync="dialogFormVisibleUpdate" width="30%" center>
+          <el-form ref="caseData" label-position="left" :model="caseData" label-width="120px" :rules="createFormData">
+            <el-form-item label="测试计划名称" prop="caseName">
+              <el-input v-model="caseData.caseName" clearable autocomplete="off" placeholder="请输入测试计划名称" style="width: 270px" />
+            </el-form-item>
+            <el-form-item label="测试计划类型" prop="projectType">
+              <el-select v-model="caseData.projectType" clearable placeholder="请选择【准入计划】【非准入计划】" style="width: 270px">
+                <el-option v-for="item in projectTypeStrings" :key="item.value" :label="item.name" :value="item.value" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="端类型" prop="taskType">
+              <el-select v-model="caseData.taskType" clearable placeholder="请选择【服务端】【客户端】" style="width: 270px">
+                <el-option v-for="item in taskTypeStrings" :key="item.value" :label="item.name" :value="item.value" />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="工程模块" prop="casePriority">
+              <el-select v-model="caseData.casePriority" clearable placeholder="请选择【多选组件】" style="width: 270px">
+                <el-option v-for="item in priorityStrings" :key="item.value" :label="item.name" :value="item.value" />
+              </el-select>
+            </el-form-item>
           </el-form>
           <div slot="footer" class="dialog-footer">
-            <el-button type="primary" @click="dialogFormVisibleQuery = false">关 闭</el-button>
+            <el-button @click="caseCreateCase(caseData, titleName)">确 定</el-button>
+            <el-button type="danger" @click="dialogFormVisibleUpdate = false">关 闭</el-button>
           </div>
         </el-dialog>
       </div>
@@ -176,15 +130,13 @@
 </template>
 
 <script>
-import { queryCasesData, createCaseData, updateCaseData, deleteCaseData, settingQueryModuleInfoListData, caseUpdateFolderName, createFolderData, deleteFolderData, queryTestPlanTree } from '@/api/caseProject.js'
+import { queryCasesData, createCaseData, updateCaseData, deleteCaseData, caseUpdateFolderName, createFolderData, deleteFolderData, queryTestPlanTree } from '@/api/caseProject.js'
 export default {
-  name: 'TestCaseProject',
+  name: 'Testpage',
   data() {
     return {
       test_plan: {},
       radio: 3,
-      dialogFormVisibleQuery: false,
-      moduleTypeShow: false,
       dataShow: true,
       Folder_Show: false,
       node_Data: false,
@@ -202,7 +154,6 @@ export default {
       curIndex: 0,
       startId: '',
       createParticipation: {},
-      moduleTypeStr: [],
       gridData: [],
       caseData: {},
       createFormData: {
@@ -231,7 +182,7 @@ export default {
   },
   created() {
     this.AllQueryFolderData()
-    this.moduleTypeArr()
+    // this.moduleTypeArr()
   },
   mounted() {
     this.imFile = document.getElementById('imFile')
@@ -251,11 +202,11 @@ export default {
         }
       })
     },
-    moduleTypeArr() {
-      settingQueryModuleInfoListData(this.formData).then(res => {
-        this.moduleTypeStr = res.data
-      })
-    },
+    // moduleTypeArr() {
+    //   settingQueryModuleInfoListData(this.formData).then(res => {
+    //     this.moduleTypeStr = res.data
+    //   })
+    // },
 
     dblclick(data) {
       console.log(data)
@@ -391,6 +342,25 @@ export default {
         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 = ''
+      //   }
+      })
     },
 
     handleSizeChange(size) {
@@ -411,18 +381,18 @@ export default {
         this.gridData = res.data
       })
     },
-    taskTypeChange(ele) {
-      if (ele === 2) {
-        this.moduleTypeShow = true
-      } else {
-        this.moduleTypeShow = false
-      }
-    },
+    // taskTypeChange(ele) {
+    //   if (ele === 2) {
+    //     this.moduleTypeShow = true
+    //   } else {
+    //     this.moduleTypeShow = false
+    //   }
+    // },
     // 新增
     caseCreateCase(vel, e) {
       if (e === '编辑') {
         updateCaseData(this.caseData).then(res => {
-          this.successFun()
+          this.$message({ message: res.msg, type: 'success', duration: 1000, offset: 150 })
           this.dialogFormVisibleUpdate = false
         })
       }
@@ -440,7 +410,7 @@ export default {
             createCaseData(this.caseData).then(res => {
               if (res.code === 200) {
                 this.gridData = res.data
-                this.successFun()
+                this.$message({ message: res.msg, type: 'success', duration: 1000, offset: 150 })
                 this.dialogFormVisibleUpdate = false
               } else {
                 this.$notify({ title: '提示', message: res.msg, duration: 2000 })
@@ -473,8 +443,7 @@ export default {
         for (var vel of ele) {
           var obj = vel
         }
-        if (obj.taskType === 2) { this.moduleTypeShow = true }
-        this.dialogFormVisibleQuery = true
+        // if (obj.taskType === 2) { this.moduleTypeShow = true }
         this.caseData = {}
         this.caseData = obj
       }
@@ -486,7 +455,7 @@ export default {
       if (this.startId === '') {
         this.$notify({ title: '提示', message: '请选择目录', duration: 2000 })
       } else {
-        if (ele.taskType === 2) { this.moduleTypeShow = true }
+        // if (ele.taskType === 2) { this.moduleTypeShow = true }
         this.dialogFormVisibleUpdate = true
       }
     },
@@ -498,7 +467,7 @@ export default {
         this.$notify({ title: '提示', message: '请选择目录', duration: 2000 })
       } else {
         this.dialogFormVisibleUpdate = true
-        this.moduleTypeShow = false
+        // this.moduleTypeShow = false
         // this.$refs['caseData'].resetFields()
         if (this.$refs['caseData'] !== undefined) {
           this.$refs['caseData'].resetFields()
@@ -543,18 +512,12 @@ export default {
                   this.gridData = res.data
                 })
               } else {
-                this.errorFun(res.msg)
+                this.$message({ message: res.msg, type: 'success', duration: 1000, offset: 150 })
               }
             })
           })
-          .catch(action => { this.$message({ type: 'success', message: '已取消' }) })
+          .catch(action => { this.$message({ message: '已取消', type: 'error', duration: 1000, offset: 150 }) })
       }
-    },
-    successFun() {
-      this.$notify({ title: 'Success', message: 'Created Successfully', type: 'success', duration: 2000 })
-    },
-    errorFun(e) {
-      this.$notify({ title: 'Failed', message: e, type: 'error', duration: 2000 })
     }
   }
 }
@@ -575,6 +538,19 @@ export default {
   .nav_Input .el-input--mini .el-input__inner {
    height: 23px !important;
   }
+  .nav_Input .el-tree-node__content {
+    color: #333B4A;
+  }
+  .nav_Input .el-tree-node__content .el-tree-node__expand-icon{
+      color: #333B4A;
+  }
+  .nav_Input .el-tree-node__expand-icon.is-leaf{
+        color: transparent !important;
+        cursor: default !important
+  }
+  .nav_Input .el-tree-node__children .custom-tree-node{
+      color: #6F7C93;
+  }
   .span_el {
     display: block;
     overflow: hidden;

+ 72 - 50
src/views/Platform/useCase/createUse.vue

@@ -2,64 +2,70 @@
   <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-form ref="caseData" label-position="left" :model="caseData" label-width="80pt" 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-col :span="21">
+              <el-form-item label="用例名称" prop="title">
+                <el-input v-model="caseData.title" placeholder="请填写【此处可能20字以上】…" />
               </el-form-item>
             </el-col>
           </el-row>
           <el-row>
-            <el-col :span="20">
+            <el-col :span="21">
+              <el-form-item label="前置条件" prop="caseCondition">
+                <el-input v-model="caseData.caseCondition" placeholder="请输入" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <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>
+              </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-select v-model="caseData.casePriority" clearable placeholder="用例优先级" style="width: 100%">
+                  <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>
+                <el-form-item label="API" prop="api" style="flex:1; margin-left: 2%;"><el-input v-model="caseData.api" clearable placeholder="请输入" /></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 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%;">
+          <!-- http://star.xiaojukeji.com/upload/img.node -->
           <el-row>
-            <el-col :span="20" style="margin:2% 0 0 0; white-space:nowrap;">
-              <el-form-item label="执行步骤">
-                <el-input v-model="item.description" type="textarea" :rows="4" placeholder="请输入内容" />
-                <el-button size="mini" type="primary" icon="el-icon-plus" style="margin-bottom: 6%;" @click="add" />
-                <el-button size="mini" icon="el-icon-minus" @click="deleteData(index)" />
+            <el-col :span="21" style="display:flex;" class="upload">
+              <el-form-item label="附件" style="flex:1">
+                <el-upload v-model="caseData.accessory" class="upload-demo" drag action="https://jsonplaceholder.typicode.com/posts/" multiple :on-success="handleAvatarSuccess" :on-progress="DisableButton">
+                  <i class="el-icon-plus avatar-uploader-icon"> 添加图片 </i>
+                </el-upload>
               </el-form-item>
-            </el-col>
-          </el-row>
-          <el-row>
-            <el-col :span="22">
-              <el-form-item label="预期结果">
-                <el-input v-model="item.expectedResult" placeholder="请输入内容" />
+              <el-form-item label="备注" style="flex:1; margin-left: 2%;">
+                <el-input v-model="caseData.remark" type="textarea" :rows="8" 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 v-model="item.accessory" class="upload-demo" drag action="http://star.xiaojukeji.com/upload/img.node" multiple :on-success="trademrakRegistSuccess.bind(null, {'index':index,'data':item})" :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="item.remark" type="textarea" :rows="8" placeholder="请输入内容" />
-                </el-form-item>
-              </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 v-for="(item, index) in data" :key="index" label-width="100px" :model="item">
+          <div style="display:flex; white-space:nowrap;">
+            <el-form-item label="执行步骤" style="flex:1">
+              <el-input v-model="item.description" placeholder="请填写【此处可能20字以上】…" />
+            </el-form-item>
+            <el-form-item label="预期结果" style="flex:1">
+              <el-input v-model="item.expectedResult" placeholder="请填写" />
+            </el-form-item>
+            <div style="flex:0.1; margin:0.26% 3%;">
+              <el-button size="mini" type="primary" icon="el-icon-plus" @click="add" />
+              <el-button size="mini" icon="el-icon-minus" @click="deleteData(index)" />
+            </div>
           </div>
         </el-form>
         <el-row>
@@ -80,7 +86,7 @@ import { createCaseData } from '@/api/caseProject.js'
 export default {
   data() {
     return {
-      data: [{ description: '', expectedResult: '', remark: '', accessory: '' }],
+      data: [{ description: '', expectedResult: '' }],
       userNames: localStorage.getItem('username'),
       bizJson: localStorage.getItem('key'),
       startId: '',
@@ -90,8 +96,11 @@ export default {
       arry: [],
       arr: [],
       createFormData: {
+        title: [{ required: true, message: '用例名称不能为空', trigger: 'change' }],
         caseCondition: [{ required: true, message: '前置条件不能为空', trigger: 'change' }],
-        api: [{ 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' }]
       },
       priorityStrings: [{ name: 'p0', value: 0 }, { name: 'p1', value: 1 }, { name: 'p2', value: 2 }, { name: 'p3', value: 3 }]
@@ -112,11 +121,12 @@ export default {
     },
 
     // 图片上传成功的回调
-    trademrakRegistSuccess(obj, res, file) {
-      var obj_data = obj.data
+    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
     },
 
@@ -127,8 +137,10 @@ export default {
 
     // 添加事件
     add() {
-      this.data.push({ description: '', expectedResult: '', remark: '', accessory: '' })
+      this.data.push({ description: '', expectedResult: '' })
     },
+
+    // 删除事件
     deleteData(e) {
       this.data.splice(e, 1)
     },
@@ -138,6 +150,7 @@ export default {
       this.$refs['caseData'].validate((valid) => {
         if (valid) {
           this.caseData = vel
+          this.accessory =
           this.caseData.caseInfos = this.data
           this.caseData.creator = this.userNames
           this.caseData.modifier = this.userNames
@@ -145,7 +158,6 @@ export default {
           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 {
@@ -169,12 +181,22 @@ export default {
     justify-content: center;
     align-items: center;
   }
-  .avatar-uploader-icon {
-    font-size: 20px;
+  .upload .avatar-uploader-icon {
+    font-size: 14px;
     color: #8c939d;
-    width: 178px;
-    height: 178px;
     line-height: 178px;
     text-align: center;
   }
+  /* .upload .el-upload-dragger {
+     width: 43em;
+  } */
+  /* .upload .el-form-item__content {
+    width:100%;
+  } */
+  /* .upload-container .el-upload {
+    width: 100%;
+  }
+  .upload-container .el-upload .el-upload-dragger {
+    width: 80%;
+  } */
 </style>

+ 31 - 45
src/views/Platform/useCasePage.vue

@@ -5,7 +5,7 @@
       <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" @mouseout="blues">
+            <div class="nav_Input" style="min-height:81vh;" @click="click_fa">
               <br>
               <p v-show="node_Data" style="color: #DCDFE6; margin: 100% 0;font-size:14px; text-align:center;">空空如也</p>
               <el-tree
@@ -25,7 +25,7 @@
                 @node-click="clickFun"
               >
                 <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 | ellipsis }}</span>
+                  <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)" />
                 </span>
@@ -38,32 +38,37 @@
             <el-header style="background:#ffffff;height:auto; width:98%;margin: 1%; font-size:13px; border-radius:8px;">
               <el-row>
                 <el-col style="white-space:nowrap; display: flex; justify-content: center; align-items: center;margin-top:1.3%;">
-                  前置条件
-                  <el-input v-model="createParticipation.caseCondition" clearable placeholder="请输入内容" style="margin-left:1%;" />
+                  用例名称
+                  <el-input v-model="createParticipation.title" clearable placeholder="请输入内容" style="margin-left:0.5%;" />
                   <el-button style="margin-left:1%;" type="primary" @click="queryCaseData(createParticipation)">查询</el-button>
                   <el-button @click="queryUpdateCreatd('', 3)">新增</el-button>
                 </el-col>
               </el-row>
               <el-row>
                 <el-col style="white-space:nowrap; display: flex; justify-content: center; align-items: center;margin:1.3% 0;">
-                  <div style="width:50%;white-space:nowrap; display: flex; justify-content: center; align-items: center;">
-                    序  号 &nbsp;<el-input v-model="createParticipation.id" placeholder="用例名" clearable style="width: 40%;margin: 0 2.5% 0 2%;" class="filter-item" />
+                  <div style="flex:1;display: flex;justify-content: center; align-items: center">
+                    序列号 &nbsp;<el-input v-model="createParticipation.id" placeholder="用例名" clearable style="width: 42%;margin: 0 2% 0 2%;" class="filter-item" />
                     优先级
                     <el-select v-model="createParticipation.casePriority" style="width: 40%;margin: 0 4% 0 3%;" clearable placeholder="优先级">
                       <el-option v-for="item in priorityStrings" :key="item.value" :label="item.name" :value="item.value" />
                     </el-select>
                   </div>
-                  api接口<el-input v-model="createParticipation.api" placeholder="api接口" clearable style="width: 50%;margin-left:1.8%;" class="filter-item" />
+                  <div style="flex:1;display: flex;justify-content: center; align-items: center">
+                    操作人 &nbsp;<el-input v-model="createParticipation.modifier" placeholder="操作人" clearable style="width: 100%;margin-left:1.7%;" class="filter-item" />
+                  </div>
                 </el-col>
               </el-row>
               <el-row>
                 <el-col style="white-space:nowrap; display: flex; justify-content: center; align-items: center;margin-bottom:1%;">
-                  <div style="width:50%;white-space:nowrap; display: flex; justify-content: center; align-items: center;">
+                  <div style="flex:1;display: flex;justify-content: center; align-items: center">
                     创建时间
-                    <el-date-picker v-model="createParticipation.createTime" style="width:40%;margin: 0 4.5% 0 2%;" type="datetime" placeholder="开始日期" /><span style="margin: 0 1% 0 1% ;"> 一 </span>
-                    <el-date-picker v-model="createParticipation.modifyTime" style="width:40%;margin: 0 4.5% 0 4.5%;" type="datetime" placeholder="结束日期" />
+                    <el-date-picker v-model="createParticipation.createTime" style="width:40%;margin: 0 3% 0 1%;" type="datetime" placeholder="开始日期" /><span style="margin: 0 1.1% 0 1.1% ;"> 一 </span>
+                    <el-date-picker v-model="createParticipation.modifyTime" style="width:40%;margin: 0 4% 0 3%;" type="datetime" placeholder="结束日期" />
+                  </div>
+                  <div style="flex:1;display: flex;justify-content: center; align-items: center">
+                    项目名称 <el-input v-model="createParticipation.projectName" placeholder="创建人" clearable style="width: 50%;margin: 0 2% 0 1%;" class="filter-item" />
+                    需求名称<el-input v-model="createParticipation.taskName" placeholder="创建人" clearable style="width: 50%;margin-left:2%;" class="filter-item" />
                   </div>
-                  操作人 <el-input v-model="createParticipation.modifier" placeholder="创建人" clearable style="width: 50%;margin-left:2%;" class="filter-item" />
                   <input id="imFile" ref="imFile" type="file" style="display: none" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel" @change="importFile(this)">
                 </el-col>
               </el-row>
@@ -74,19 +79,13 @@
                 <el-button style="margin-left:2%;width:10%;" @click="exportExcel">导出</el-button>
               </el-tooltip>
               <!-- 主页table -->
-              <el-table :data="gridData" :header-cell-style="{ background: '#F0F2F4', color: '#333B4A' }" style="width: 100%; font-size:13px;margin-top:1%;" border @select-all="clickAllData" @selection-change="handleSelectionChange">
+              <el-table :data="gridData" size="mini" :header-cell-style="{ background: '#F0F2F4', color: '#333B4A' }" style="width: 100%; font-size:13px;margin-top:1%;" border @select-all="clickAllData" @selection-change="handleSelectionChange">
                 <el-table-column type="selection" min-width="50" align="center" @change="clickAllData(gridData)" />
                 <el-table-column prop="id" label="序列号" min-width="80" align="center">
                   <template slot-scope="scope">{{ scope.row.id }}</template>
                 </el-table-column>
-                <el-table-column prop="caseCondition" :show-overflow-tooltip="true" label="前置条件" min-width="140" align="center">
-                  <template slot-scope="scope">{{ scope.row.caseCondition }}</template>
-                </el-table-column>
-                <el-table-column prop="api" :show-overflow-tooltip="true" label="API" min-width="140" align="center">
-                  <template slot-scope="scope">{{ scope.row.api }}</template>
-                </el-table-column>
-                <el-table-column prop="description" :show-overflow-tooltip="true" label="执行步骤" min-width="140" align="center">
-                  <template slot-scope="scope">{{ scope.row.description }}</template>
+                <el-table-column prop="caseCondition" :show-overflow-tooltip="true" label="用例名称" min-width="240" align="center">
+                  <template slot-scope="scope"><span style="color:#409EFF; cursor: pointer" @click="queryUpdateCreatd(scope.row, 1)">{{ scope.row.title }}</span></template>
                 </el-table-column>
                 <el-table-column prop="casePriority" label="优先级" min-width="80" align="center">
                   <template slot-scope="scope">{{ scope.row.casePriorityName }}</template>
@@ -94,9 +93,9 @@
                 <el-table-column prop="creatorName" label="操作人" min-width="110" align="center">
                   <template slot-scope="scope">{{ scope.row.modifier }}</template>
                 </el-table-column>
-                <el-table-column label="操作" min-width="220px" align="center">
+                <el-table-column label="操作" min-width="150px" align="center">
                   <template slot-scope="scope">
-                    <el-button size="mini" class="btn_query" plain @click="queryUpdateCreatd(scope.row, 1)">查看</el-button>
+                    <!-- <el-button size="mini" class="btn_query" plain @click="queryUpdateCreatd(scope.row, 1)">查看</el-button> -->
                     <el-button size="mini" type="primary" plain @click="queryUpdateCreatd(scope.row, 2)">编辑</el-button>
                     <el-button size="mini" type="danger" plain @click="deleteCaseData(scope.row.id)">删除</el-button>
                   </template>
@@ -125,7 +124,7 @@
 </template>
 
 <script>
-import { createFolderData, queryAllFolderData, queryCasesData, deleteFolderData, deleteCaseData, settingQueryModuleInfoListData, updateFolderData, caseUpdateFolderName } from '@/api/caseProject.js'
+import { createFolderData, queryAllFolderData, queryCasesData, deleteFolderData, deleteCaseData, updateFolderData, caseUpdateFolderName } from '@/api/caseProject.js'
 import { mockUrl } from '@/apiConfig/api'
 import FileSaver from 'file-saver'
 import axios from 'axios'
@@ -134,15 +133,6 @@ import Utils from '../../util.js'
 
 export default {
   name: 'UseCasePage',
-  filters: {
-    ellipsis(value) {
-      if (!value) return ''
-      if (value.length > 9) {
-        return value.slice(0, 9) + '...'
-      }
-      return value
-    }
-  },
   data() {
     return {
       fileList: [],
@@ -182,7 +172,7 @@ export default {
     }
   },
   created() {
-    this.moduleTypeArr()
+    // this.moduleTypeArr()
   },
   mounted() {
     var that = this
@@ -267,10 +257,6 @@ export default {
       }
     },
 
-    blues() {
-      console.log('blue')
-    },
-
     // 双击编辑
     dblclick(data) {
       this.label = data.label// 当前选中的名称
@@ -332,14 +318,14 @@ export default {
         document.getElementById('init-window').parentNode.style.overflow = 'hidden'
       }
     },
-    moduleTypeArr() {
-      axios.get('https://star.xiaojukeji.com/upload/getPresignedUrl.node?name=“文件名”').then(res => {
-        console.log(res)
-      })
-      settingQueryModuleInfoListData(this.formData).then(res => {
-        this.moduleTypeStr = res.data
-      })
-    },
+    // moduleTypeArr() {
+    //   axios.get('https://star.xiaojukeji.com/upload/getPresignedUrl.node?name=“文件名”').then(res => {
+    //     console.log(res)
+    //   })
+    //   settingQueryModuleInfoListData(this.formData).then(res => {
+    //     this.moduleTypeStr = res.data
+    //   })
+    // },
     handleSizeChange(size) {
       this.pageSize = size
       this.pageIndex()