qinzhipeng_v 6 år sedan
förälder
incheckning
f35265e3c3

+ 12 - 11
src/views/Platform/defectManagement.vue

@@ -134,16 +134,13 @@
             </el-form-item>
           </div>
         </div>
-        <el-form-item v-show="false" label="附件" :label-width="formLabelWidth">
-          <el-upload
-            class="upload-demo"
-            list-type="picture-card"
-            action=" http://page-daily.kuaidadi.com/upload/img.node"
-          >
-            <!-- action=" http://page-daily.kuaidadi.com/upload/img.node" 线下 -->
+        <el-form-item v-show="true" label="附件" :label-width="formLabelWidth">
+          <el-upload class="upload-demo" list-type="picture-card" action="https://jsonplaceholder.typicode.com/posts/">
+            <!-- action="http://page-daily.kuaidadi.com/upload/img.node" 线下 -->
             <!-- action="http://star.xiaojukeji.com/upload/img.node" 线上 -->
             <!-- action="https://jsonplaceholder.typicode.com/posts/" 原始地址-->
-            <el-button size="small" type="primary">点击上传</el-button>
+            <i class="el-icon-plus" />
+            <!-- <el-button size="small" type="primary">点击上传</el-button> -->
           </el-upload>
         </el-form-item>
 
@@ -320,9 +317,13 @@ export default {
       })
     },
     clickChangeType(e) {
-      console.log(e)
-      this.form.businessType = ''
-      e === '服务端' ? this.businessTypeStr = this.serviceTypeEnumList : this.businessTypeStr = this.clientTypeEnumList
+      // console.log(this.form.businessType)
+      // this.form.businessType = ''
+      if (e === '服务端') {
+        this.businessTypeStr = this.serviceTypeEnumList
+      } else {
+        this.businessTypeStr = this.clientTypeEnumList
+      }
     },
     dataQuery(e) {
       this.bizJson = localStorage.getItem('key')

+ 19 - 10
src/views/Platform/presentation/DailyNewsAdded.vue

@@ -18,26 +18,27 @@
       <el-radio label="2" @change="deleteProject(2)">关闭项目节点</el-radio>
     </el-radio-group>
     <div v-show="showbut1" style="border:1px solid #ccc;width:79vw;margin-top:15px;">
-      <el-button class="btn" icon="el-icon-plus">新增时间节点</el-button>
+      <el-button class="btn" icon="el-icon-plus" @click="createDateNode">新增时间节点</el-button>
       <el-button class="btn" icon="el-icon-delete">删除节点</el-button>
     </div>
     <div v-show="showbut1" style="width:79vw;border:1px solid #ccc;padding:100px 0;" class="time_line_box">
       <div class="time_line" style="width:100%;">
         <ol>
-          <li>
-            <a class="order_item" style="left:15%;">一号节点</a>
+          <!-- <li v-for="(todo, index) in todos" ref="todos" /> -->
+          <li style="list-style-type:none;">
+            <a class="order_item" style="left:5%;">一号节点</a>
           </li>
-          <li>
+          <li style="list-style-type:none;">
             <a class="order_item" style="left:25%;">二号节点</a>
           </li>
-          <li>
-            <a class="order_item" style="left:35%;">三号节点</a>
+          <li style="list-style-type:none;">
+            <a class="order_item" style="left:45%;">三号节点</a>
           </li>
-          <li>
-            <a class="order_item" style="left:45%;">四号节点</a>
+          <li style="list-style-type:none;">
+            <a class="order_item" style="left:65%;">四号节点</a>
           </li>
-          <li>
-            <a class="order_item" style="left:55%;">五号节点</a>
+          <li style="list-style-type:none;">
+            <a class="order_item" style="left:85%;">五号节点</a>
           </li>
         </ol>
         <!-- <span class="filling_line" style="transform: scaleX(100);" /> -->
@@ -95,6 +96,11 @@ export default {
         ownner: [{ required: true, message: 'by不能为空', trigger: 'change' }]
       },
       value: '',
+      todos: [
+        { data: `<li><a>li</a></li>` },
+        { data: `<li>li</li>` },
+        { data: `<li>li</li>` }
+      ],
       steps: [],
       content: null,
       dialogFormVisible: false,
@@ -275,6 +281,9 @@ export default {
         this.showbut1 = false
         this.showbut = '2'
       }
+    },
+    createDateNode() {
+
     }
   }
 }

+ 25 - 16
src/views/Platform/presentation/presentationReport.vue

@@ -1,5 +1,5 @@
 <template>
-  <div style="margin:2% 9%;">
+  <div style="margin:2% 3% 9%;">
     <!-- 提测报告,新增服务端报告 -->
     <el-form ref="fromCreateData" :inline="true" :model="fromCreateData" :rules="serviceDataRules">
       <el-row :gutter="20">
@@ -9,7 +9,7 @@
           </el-form-item>
         </el-col>
         <el-col :span="2">
-          <el-form-item label="by" prop="submitter" style="margin-left:6vw;background: white">
+          <el-form-item label="by" prop="submitter" style="margin-left:4vw;background: white">
             <el-input v-model="fromCreateData.submitter" style="width:20vw; margin-left:30px; border:2px solid #ccc;border-radius: 4px;" placeholder="who" />
           </el-form-item>
         </el-col>
@@ -27,8 +27,8 @@
         <el-col :span="12">
           <el-form-item label="是否延期" prop="lateStatus">
             <el-radio-group v-model="fromCreateData.lateStatus">
-              <el-radio style="margin: 0 95px;" label="1" @change="lateStatusChange">是</el-radio>
-              <el-radio style="padding-right: 185px;" label="2" @change="lateStatusChange">否</el-radio>
+              <el-radio style="margin: 0 95px;" label="1" @change="lateStatusChange('1')">是</el-radio>
+              <el-radio style="padding-right: 185px;" label="2" @change="lateStatusChange('2')">否</el-radio>
             </el-radio-group>
           </el-form-item>
           <el-form-item v-if="showDelay" label="延期原因" prop="lateReason" style="margin-left:75px;">
@@ -45,7 +45,7 @@
       <el-row :gutter="20">
         <el-col :span="12">
           <el-form-item label="优先级 " prop="priority">
-            <el-select v-model="fromCreateData.priority" style="width:32vw;padding-left:18px;" placeholder="请选择优先级">
+            <el-select v-model="fromCreateData.priority" style="width:32vw;" placeholder="请选择优先级">
               <el-option v-for="item in priorityStrings" :key="item.value" :label="item.name" :value="item.name" />
             </el-select>
           </el-form-item>
@@ -54,13 +54,14 @@
       </el-row>
       <el-row :gutter="20">
         <el-col :span="12">
-          <el-form-item label="涉及安全项" prop="lateSta">
-            <el-radio-group v-model="fromCreateData.lateSta">
-              <el-radio style="margin: 0 109px;" label="1" @change="showStatusData">是</el-radio>
-              <el-radio label="2" @change="showStatusData">否</el-radio>
+          <el-form-item label="涉及安全项" prop="getInfo" style=" white-space:nowrap;">
+            <el-radio-group v-model="fromCreateData.getInfo">
+              <el-radio style="margin: 0 85px;" label="1" @change="showStatusData('1')">是</el-radio>
+              <el-radio style="margin-right: 50px;" label="2" @change="showStatusData('2')">否</el-radio>
+              <a href="http://wiki.intra.xiaojukeji.com/pages/viewpage.action?pageId=237016271" style="color:blue; font-size:13px;padding-right: 32px;">普惠SDL准入标准</a>
             </el-radio-group>
-            <a href="http://wiki.intra.xiaojukeji.com/pages/viewpage.action?pageId=237016271" style="color:blue; font-size:13px;padding-right: 10px;">普惠SDL准入标准</a>
           </el-form-item>
+
           <el-form-item v-if="showData" label="完成结果" prop="safeInfo" style="margin-left:75px;">
             <el-input v-model="fromCreateData.safeInfo" style="width:29.2vw;" />
           </el-form-item>
@@ -157,7 +158,7 @@ export default {
         selfTestInfo: [{ required: true, message: '自测结果不能为空', trigger: 'change' }],
         testSuggest: [{ required: true, message: '测试建议不能为空', trigger: 'change' }],
         isEdition: [{ required: true, message: '是否跟版不能为空', trigger: 'change' }],
-        lateSta: [{ required: true, message: '涉及安全项不能为空', trigger: 'change' }]
+        getInfo: [{ required: true, message: '涉及安全项不能为空', trigger: 'change' }]
       },
       objData: '',
       showButton: true,
@@ -166,7 +167,7 @@ export default {
       showDelay: false,
       labelWidth: '60px',
       lateStatus: '',
-      lateSta: '',
+      getInfo: '',
       fromCreateData: {},
       editorContent: '',
       showData: false,
@@ -204,7 +205,8 @@ export default {
         this.showButton1 = true
         this.showButton = false
         this.fromCreateData = this.$route.query.data
-        if (this.fromCreateData.lateStatus === 1) {
+        console.log(this.$route.query.data.lateStatus)
+        if (this.fromCreateData.lateReason !== null) {
           this.fromCreateData.lateStatus = '1'
           this.showDelay = true
         } else {
@@ -212,10 +214,10 @@ export default {
           this.showDelay = false
         }
         if (this.fromCreateData.safeInfo !== null) {
-          this.fromCreateData.lateSta = '1'
+          this.fromCreateData.getInfo = '1'
           this.showData = true
         } else {
-          this.fromCreateData.lateSta = '2'
+          this.fromCreateData.getInfo = '2'
           this.showData = false
         }
       }
@@ -278,7 +280,14 @@ export default {
       e === '1' ? this.showDelay = true : this.showDelay = false
     },
     showStatusData(e) {
-      console.log(e)
+      // console.log(e)
+      // if (e === 1) {
+      //   this.fromCreateData.getInfo = '1'
+      //   this.showData = true
+      // } else {
+      //   this.fromCreateData.getInfo = '2'
+      //   this.showData = false
+      // }
       e === '1' ? this.showData = true : this.showData = false
     },
     clickPreview(ele) {

+ 417 - 163
src/views/Platform/presentation/testPage.vue

@@ -1,207 +1,461 @@
 <template>
-  <el-container>
-    <el-aside width="200px">
-      <el-tree
-        style="background: #E9EEF3; height:100%; padding:30px;"
-        :data="data"
-        node-key="id"
-        default-expand-all
-        draggable
-        :allow-drop="allowDrop"
-        :allow-drag="allowDrag"
-        @node-drag-start="handleDragStart"
-        @node-drag-enter="handleDragEnter"
-        @node-drag-leave="handleDragLeave"
-        @node-drag-over="handleDragOver"
-        @node-drag-end="handleDragEnd"
-        @node-drop="handleDrop"
-      />
-    </el-aside>
+  <div>
     <el-container>
-      <el-header style="height: auto; display:flex; text-align:right">
-        <div style="flex:1;">
-          <div class="demonstration headerStyle">创建时间<el-date-picker v-model="value" align="right" type="date" style="width: 75%;" placeholder="选择日期" /></div>
-          <div class="headerStyle">标题 <el-input v-model="value" placeholder="标题" clearable style="width: 75%;" class="filter-item" /></div>
-        </div>
-        <div style="flex:1;">
-          <div class="headerStyle">创建人 <el-input v-model="value" placeholder="创建人" clearable style="width: 75%;" class="filter-item" /></div>
-          <div class="headerStyle">优先级
-            <el-select v-model="value" style="width: 75%;" clearable placeholder="优先级">
-              <el-option v-for="item in value" :key="item.value" :label="item.name" :value="item.value" />
-            </el-select>
+      <el-aside width="150pt">
+        <el-tree
+          v-show="dataShow"
+          style="background: #E9EEF3; height:auto; padding:15%;"
+          :data="data1"
+          node-key="id"
+          @node-contextmenu="createUpdate"
+          @node-click="clickFun"
+        />
+      </el-aside>
+      <el-container>
+        <el-header style="height: auto; width:100%;">
+          <el-row>
+            <el-col :span="23" style="white-space:nowrap;margin:2% 0;">
+              <el-date-picker v-model="createParticipation.createTime" style="width:19%;margin-right:0px;" type="datetime" placeholder="开始日期" /> -
+              <el-date-picker v-model="createParticipation.modifyTime" style="width:19%;margin-right:5px;" type="datetime" placeholder="结束日期" />
+              <el-input v-model="createParticipation.folderName" placeholder="用例名" clearable style="width: 20%;margin-right:5px;" class="filter-item" />
+              <el-select v-model="createParticipation.casePriority" style="width: 8%;margin-right:5px;" clearable placeholder="优先级">
+                <el-option v-for="item in priorityStrings" :key="item.value" :label="item.name" :value="item.value" />
+              </el-select>
+              <el-input v-model="createParticipation.api" placeholder="api接口" clearable style="width: 16%;margin-right:5px;" class="filter-item" />
+              <el-input v-model="createParticipation.creator" placeholder="创建人" clearable style="width: 14%;" class="filter-item" />
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="23" style="white-space:nowrap;text-align:center;">
+              <el-button class="headerStyle" type="primary" icon="el-icon-search" @click="queryCaseData(createParticipation)">查询</el-button>
+              <el-button type="primary" icon="el-icon-circle-plus-outline" @click="createGetShow">新增</el-button>
+            </el-col>
+          </el-row>
+        </el-header>
+        <el-main>
+          <!-- 主页table -->
+          <el-table :data="gridData" fit height="570vh" tooltip-effect="dark" style="width: 100%" @select-all="clickAllData" @selection-change="handleSelectionChange">
+            <el-table-column type="selection" width="55" align="center" @change="clickAllData(gridData)" />
+            <el-table-column prop="id" label="ID" width="60px" align="center">
+              <template slot-scope="scope">
+                <span>{{ scope.row.id }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="caseName" label="用例名" width="150" align="center">
+              <template slot-scope="scope">
+                <span>{{ scope.row.caseName }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="expectedResult" label="期望结果" width="150" align="center">
+              <template slot-scope="scope">
+                <span>{{ scope.row.expectedResult }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="casePriorityName" label="优先级" width="80" align="center">
+              <template slot-scope="scope">
+                <span>{{ scope.row.casePriorityName }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="creatorName" label="创建人" width="100" align="center">
+              <template slot-scope="scope">
+                <el-tag type="success">{{ scope.row.creatorName }}</el-tag>
+              </template>
+            </el-table-column>
+            <el-table-column prop="modifierName" label="修改人" width="100" align="center">
+              <template slot-scope="scope">
+                <span>{{ scope.row.modifierName }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="createTime" label="创建时间" width="200" align="center">
+              <template slot-scope="scope">
+                <span>{{ scope.row.createTime }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column label="操作" min-width="220px" align="center" fixed="right">
+              <template slot-scope="scope">
+                <el-button size="mini" type="primary" @click="queryGetShow(gridData)">查看</el-button>
+                <el-button size="mini" type="primary" @click="updateGetShow(scope.row)">编辑</el-button>
+                <el-button size="mini" type="primary" @click="deleteCaseData(scope.row.id)">删除</el-button>
+              </template>
+            </el-table-column>
+          </el-table>
+          <!-- 导出文件内容 -->
+          <el-table v-show="false" id="out-table" :data="tableData" fit height="570vh" tooltip-effect="dark" style="width: 100%">
+            <el-table-column type="index" prop="ids" label="序号" width="50" />
+            <!-- <el-table-column prop="ids" label="序号" /> -->
+            <el-table-column prop="caseName" label="用例名" />
+            <el-table-column prop="description" label="用例描述" />
+            <el-table-column prop="expectedResult" label="期望结果" />
+            <el-table-column prop="api" label="对应api" />
+            <el-table-column prop="projectTypeName" label="项目类型" />
+            <el-table-column prop="taskTypeName" label="平台类型" />
+            <el-table-column prop="casePriorityName" label="用例优先级" />
+            <el-table-column prop="moduleTypeName" label="模块名" />
+            <el-table-column prop="creatorName" label="创建人" />
+            <el-table-column prop="modifierName" label="修改人" />
+            <el-table-column prop="remark" label="备注" />
+            <el-table-column prop="createTime" label="创建时间" />
+          </el-table>
+          <el-pagination :current-page="curIndex" :page-sizes="[5, 10, 20]" :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="100" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
+        </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>
-        <div style="flex:1;">
-          <div class="headerStyle">状态
-            <el-select v-model="value" style="width: 75%;" clearable placeholder="状态">
-              <el-option v-for="item in value" :key="item.value" :label="item.name" :value="item.value" />
-            </el-select>
+          <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>
-        <div style="flex:1; display:flex;">
+        <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-button class="headerStyle" type="primary" icon="el-icon-search">导出</el-button>
-            <el-button class="headerStyle" type="primary" icon="el-icon-search">导入</el-button>
+            <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-button class="headerStyle" type="primary" icon="el-icon-search">查询</el-button>
-            <el-button class="headerStyle" type="primary" icon="el-icon-search">新增</el-button>
+            <el-form-item v-show="moduleTypeShow" label="模块类型 :">{{ caseData.moduleTypeName }}</el-form-item>
           </div>
         </div>
-      </el-header>
-      <el-main>
-        <el-table ref="multipleTable" :data="tableData" fit tooltip-effect="dark" style="width: 100%" @selection-change="handleSelectionChange">
-          <el-table-column type="selection" width="55" align="center" />
-          <el-table-column prop="id" label="ID" width="40px" />
-          <el-table-column prop="name" label="标题" width="180" align="center" />
-          <el-table-column prop="name" label="级别" width="80" align="center" />
-          <el-table-column prop="name" label="创建人" width="100" align="center" />
-          <el-table-column label="创建时间" width="200" align="center">
-            <template slot-scope="scope">{{ scope.row.date }}</template>
-          </el-table-column>
-          <el-table-column prop="name" label="状态" width="220" align="center">
-            <el-radio v-model="radioButton" :label="1" @change="statusChange(1)">fail</el-radio>
-            <el-radio v-model="radioButton" :label="2" @change="statusChange(2)">pass</el-radio>
-          </el-table-column>
-          <el-table-column label="操作" min-width="220px" align="center" fixed="right">
-            <template />
-          </el-table-column>
-        </el-table>
-        <el-pagination
-          :current-page="curIndex"
-          :page-sizes="[5, 10, 20]"
-          :page-size="pageSize"
-          layout="total, sizes, prev, pager, next, jumper"
-          :total="100"
-          @size-change="handleSizeChange"
-          @current-change="handleCurrentChange"
-        />
-      </el-main>
-    </el-container>
-  </el-container>
+        <el-form-item label="用例描述 :">{{ caseData.description }}</el-form-item>
+        <el-form-item label="备注 :">{{ caseData.remark }}</el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="dialogFormVisibleQuery = false">关 闭</el-button>
+      </div>
+    </el-dialog>
+  </div>
 </template>
 
 <script>
-
+import { projectGetNameMap } from '@/api/testCaseProject.js'
+import { queryCasesData, createCaseData, updateCaseData, deleteCaseData, settingQueryModuleInfoListData } from '@/api/caseProject.js'
 export default {
-  name: 'TestPage',
+  name: 'TestCaseProject',
   data() {
     return {
-      value: '',
-      radioButton: 0,
-      pageSize: 0,
-      curIndex: 0,
-      total: 0,
-      data: [{
-        id: 1,
-        label: '代驾',
-        children: [{
-          id: 4,
-          label: '订单',
-          children: [{
-            id: 9,
-            label: '1 订单'
-          }, {
-            id: 10,
-            label: '2 订单'
-          }]
+      dialogFormVisibleQuery: false,
+      moduleTypeShow: false,
+      dataShow: true,
+      titleName: '',
+      dialogFormVisibleUpdate: false,
+      priorityStrings: [{ name: 'p0', value: 0 }, { name: 'p1', value: 1 }, { name: 'p2', value: 2 }, { name: 'p3', value: 3 }],
+      projectTypeStrings: [{ name: 'B端', value: 1 }, { name: 'C端', value: 2 }],
+      taskTypeStrings: [{ name: '客户端', value: 1 }, { name: '服务端', value: 2 }],
+      userInformation: localStorage.getItem('username'),
+      userNames: localStorage.getItem('realname'),
+      bizJson: localStorage.getItem('key'),
+      pickerOptions: {
+        shortcuts: [{
+          text: '最近一周',
+          onClick(picker) {
+            const end = new Date()
+            const start = new Date()
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
+            picker.$emit('pick', [start, end])
+          }
         }, {
-          id: 6,
-          label: '营销'
-        }]
-      }, {
-        id: 2,
-        label: '乘客端',
-        children: [{
-          id: 5,
-          label: '小程序'
+          text: '最近一个月',
+          onClick(picker) {
+            const end = new Date()
+            const start = new Date()
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
+            picker.$emit('pick', [start, end])
+          }
         }, {
-          id: 6,
-          label: 'wabapp'
+          text: '最近三个月',
+          onClick(picker) {
+            const end = new Date()
+            const start = new Date()
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
+            picker.$emit('pick', [start, end])
+          }
         }]
-      }],
-      defaultProps: {
-        children: 'children',
-        label: 'label'
       },
-      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 弄'
-      }],
-      multipleSelection: []
+      createTimeData: '',
+      userData: '',
+      pageSize: 5,
+      curIndex: 0,
+      startId: '',
+      createParticipation: {},
+      moduleTypeStr: [],
+      gridData: [],
+      caseData: {},
+      createFormData: {
+        caseName: [{ required: true, message: '用例名不能为空', trigger: 'change' }],
+        description: [{ required: true, message: '用例描述不能为空', trigger: 'change' }],
+        expectedResult: [{ required: true, message: '期望结果不能为空', trigger: 'change' }],
+        api: [{ required: true, message: '对应接口不能为空', trigger: 'change' }],
+        projectType: [{ required: true, message: '项目类型不能为空', trigger: 'change' }],
+        taskType: [{ required: true, message: '任务类型不能为空', trigger: 'change' }],
+        casePriority: [{ required: true, message: '用例优先级不能为空', trigger: 'change' }]
+      },
+      dialogTableVisible: false,
+      formData: {},
+      formLabelWidth: '120px',
+      data1: [],
+      tableData: [],
+      excelData: [],
+      imFile: '',
+      failNum: '',
+      successNum: '',
+      startKey: '',
+      obj: ''
     }
   },
-
+  created() {
+    this.AllQueryFolderData()
+    this.moduleTypeArr()
+  },
+  mounted() {
+    this.imFile = document.getElementById('imFile')
+  },
   methods: {
-    handleSelectionChange(val) {
-      console.log(val)
-      this.multipleSelection = val
+    AllQueryFolderData() {
+      projectGetNameMap({}).then(res => {
+        for (var a of res.data) {
+          for (var b of a.taskNameMapList) {
+            var num = {}
+            var arr = []
+            num.label = b.taskName
+            num.id = b.id
+            arr.push(num)
+          }
+          console.log(arr)
+          this.data1.push({ id: a.id, label: a.projectName, children: num })
+        }
+
+        console.log(this.data1)
+      })
+    },
+    moduleTypeArr() {
+      settingQueryModuleInfoListData(this.formData).then(res => {
+        this.moduleTypeStr = res.data
+      })
+    },
+    handleSizeChange(size) {
+      this.pageSize = size
+      this.pageIndex()
     },
-    handleDragStart(node, ev) {
-      console.log('drag start', node)
+    handleCurrentChange(curIndex) {
+      this.curIndex = curIndex
+      this.pageIndex()
     },
-    handleDragEnter(draggingNode, dropNode, ev) {
-      console.log('tree drag enter: ', dropNode.label)
+    pageIndex() {
+      this.formData = {
+        pageSize: this.pageSize,
+        curIndex: this.curIndex,
+        caseFolderId: this.startId
+      }
+      queryCasesData(this.formData).then(res => {
+        this.gridData = res.data
+      })
     },
-    handleDragLeave(draggingNode, dropNode, ev) {
-      console.log('tree drag leave: ', dropNode.label)
+    clickAllData(rows) {
+      this.formData = {
+        caseFolderId: this.startId
+      }
+      queryCasesData(this.formData).then(res => {
+        this.tableData = res.data
+      })
     },
-    handleDragOver(draggingNode, dropNode, ev) {
-      console.log('tree drag over: ', dropNode.label)
+    taskTypeChange(ele) {
+      if (ele === 2) {
+        this.moduleTypeShow = true
+      } else {
+        this.moduleTypeShow = false
+      }
     },
-    handleDragEnd(draggingNode, dropNode, dropType, ev) {
-      console.log('tree drag end: ', dropNode && dropNode.label, dropType)
+    // 新增
+    caseCreateCase(vel, e) {
+      if (e === '编辑') {
+        updateCaseData(this.caseData).then(res => {
+          this.successFun()
+          this.dialogFormVisibleUpdate = false
+        })
+      }
+      if (vel !== '' && e === '新增') {
+        this.$refs['caseData'].validate((valid) => {
+          if (valid) {
+            this.caseData = vel
+            this.caseData.creator = this.userInformation
+            this.caseData.creatorName = this.userNames
+            this.caseData.modifier = this.userInformation
+            this.caseData.pageSize = 5
+            this.caseData.curIndex = 0
+            this.caseData.caseFolderId = this.startId
+            this.caseData.bizId = this.bizJson
+            createCaseData(this.caseData).then(res => {
+              if (res.code === 200) {
+                this.gridData = res.data
+                this.successFun()
+                this.dialogFormVisibleUpdate = false
+              } else {
+                this.$notify({ title: '提示', message: res.msg, duration: 2000 })
+              }
+            })
+          }
+        })
+      }
     },
-    handleDrop(draggingNode, dropNode, dropType, ev) {
-      console.log('tree drop: ', dropNode.label, dropType)
+    // 查询
+    queryCaseData(ele) {
+      if (this.createParticipation.caseName === '') return false
+      if (this.startId === '') {
+        this.$notify({ title: '提示', message: '请选择目录', duration: 2000 })
+      } else {
+        this.createParticipation = ele
+        this.createParticipation.caseFolderId = this.startId
+        this.createParticipation.pageSize = this.pageSize
+        this.createParticipation.curIndex = this.curIndex
+        queryCasesData(this.createParticipation).then(res => {
+          this.gridData = res.data
+        })
+      }
     },
-    allowDrop(draggingNode, dropNode, type) {
-      if (dropNode.data.label === '二级 3-1') {
-        return type !== 'inner'
+    // 查看
+    queryGetShow(ele) {
+      if (this.startId === '') {
+        this.$notify({ title: '提示', message: '请选择目录', duration: 2000 })
       } else {
-        return true
+        for (var vel of ele) {
+          var obj = vel
+        }
+        if (obj.taskType === 2) { this.moduleTypeShow = true }
+        this.dialogFormVisibleQuery = true
+        this.caseData = {}
+        this.caseData = obj
       }
     },
-    allowDrag(draggingNode) {
-      return draggingNode.data.label.indexOf('三级 3-2-2') === -1
+    // 编辑
+    updateGetShow(ele) {
+      this.titleName = '编辑'
+      this.caseData = ele
+      if (this.startId === '') {
+        this.$notify({ title: '提示', message: '请选择目录', duration: 2000 })
+      } else {
+        if (ele.taskType === 2) { this.moduleTypeShow = true }
+        this.dialogFormVisibleUpdate = true
+      }
     },
-    statusChange(e) {
-      console.log(e)
-      this.radioButton = e
+
+    // 新增
+    createGetShow() {
+      this.titleName = '新增'
+      if (this.startId === '') {
+        this.$notify({ title: '提示', message: '请选择目录', duration: 2000 })
+      } else {
+        this.dialogFormVisibleUpdate = true
+        // this.caseData = {}
+        this.moduleTypeShow = false
+        // this.$refs['caseData'].resetFields()
+        if (this.$refs['caseData'] !== undefined) {
+          this.$refs['caseData'].resetFields()
+        }
+      }
     },
-    handleSizeChange(size) {
-      this.pageSize = size
+    handleSelectionChange(val) {
+      this.tableData = val
     },
-    handleCurrentChange(curIndex) {
-      this.curIndex = curIndex
+    createUpdate(e, ele) {
+      this.startId = ele.id
+      this.codeId = ele.id
+      this.formData = {}
+    },
+    clickFun(e) {
+      this.startId = e.id
+      this.formData = {
+        pageSize: 5,
+        curIndex: 0,
+        caseFolderId: e.id
+      }
+      queryCasesData(this.formData).then(res => {
+        this.gridData = res.data
+      })
+    },
+    deleteCaseData(e) {
+      if (this.startId === '') {
+        this.$notify({ title: '提示', message: '请选择目录', duration: 2000 })
+      } else {
+        this.$confirm('是否确认删除', '确认信息', {
+          distinguishCancelAndClose: true,
+          confirmButtonText: '确定',
+          cancelButtonText: '取消'
+        })
+          .then(() => {
+            this.formData = { id: e, modifier: this.userInformation }
+            deleteCaseData(this.formData).then(res => {
+              if (res.code === 200) {
+                this.$message({ type: 'success', message: '已删除' })
+                this.data1 = []
+                this.AllQueryFolderData()
+                this.createParticipation.caseFolderId = this.startId
+                queryCasesData(this.createParticipation).then(res => {
+                  this.gridData = res.data
+                })
+              } else {
+                this.errorFun(res.msg)
+              }
+            })
+          })
+          .catch(action => { this.$message({ type: 'success', message: '已取消' }) })
+      }
+    },
+    successFun() {
+      this.$notify({ title: 'Success', message: 'Created Successfully', type: 'success', duration: 2000 })
+    },
+    errorFun(e) {
+      this.$notify({ title: 'Failed', message: e, type: 'error', duration: 2000 })
     }
   }
 }
 </script>
 
 <style>
-  .headerStyle {
-  margin:10px;
+.headerStyle {
+  margin:5px 0;
   }
 </style>

+ 2 - 2
src/views/Platform/projectPage.vue

@@ -241,7 +241,7 @@
           <div style="flex:1;">
             <el-form-item label="业务模块" prop="businessType" label-width="100px">
               <el-select v-model="formTask.businessType" placeholder="业务模块">
-                <el-option v-for="item in businessTypeStr" :key="item.value" :label="item.name" :value="item.name" />
+                <el-option v-for="item in businessTypeStr" :key="item.code" :label="item.name" :value="item.code" />
               </el-select>
             </el-form-item>
             <el-form-item label="是否免测" prop="notest" label-width="100px">
@@ -1069,7 +1069,7 @@ export default {
       })
     },
     clickType(e) {
-      this.formTask.businessType = ''
+      // this.formTask.businessType = ''
       e === 1 ? this.businessTypeStr = this.serviceTypeEnumList : this.businessTypeStr = this.clientTypeEnumList
     },
     yesCallBack1(e, ele) {

+ 199 - 75
src/views/Platform/useCasePage.vue

@@ -11,7 +11,12 @@
             <el-button type="primary" @click="createCase(formData)">新 增</el-button>
           </span>
         </el-dialog>
+        <div v-show="createCaseCode" style="background: #E9EEF3; height:93vh; text-align:center; padding:50% 0;">
+          <p>请先创建任务,再继续·····</p>
+          <el-button type="primary" @click="changeStartId">新 增</el-button>
+        </div>
         <el-tree
+          v-show="dataShow"
           style="background: #E9EEF3; height:93vh; padding:15%;"
           :data="data1"
           node-key="id"
@@ -37,7 +42,8 @@
                 <el-select v-model="createParticipation.casePriority" style="width: 18%;margin-right:5px;" clearable placeholder="用例优先级">
                   <el-option v-for="item in priorityStrings" :key="item.value" :label="item.name" :value="item.value" />
                 </el-select>
-                用例名 <el-input v-model="createParticipation.folderName" placeholder="用例名" clearable style="width: 20%;" class="filter-item" />
+                用例名
+                <el-input v-model="createParticipation.folderName" placeholder="用例名" clearable style="width: 20%;" class="filter-item" />
                 <el-button class="headerStyle" style="margin-left:6%;" type="primary" @click="exportExcel">导出</el-button>
                 <el-button class="headerStyle" type="primary" @click="queryCaseData(createParticipation)">查询</el-button>
               </div>
@@ -57,66 +63,90 @@
           </el-row>
         </el-header>
         <el-main>
-          <el-table :data="gridData" fit height="570vh" tooltip-effect="dark" style="width: 100%" @selection-change="handleSelectionChange">
-            <el-table-column type="selection" width="55" align="center" />
+          <!-- 主页table -->
+          <el-table :data="gridData" fit height="570vh" tooltip-effect="dark" style="width: 100%" @select-all="clickAllData" @selection-change="handleSelectionChange">
+            <el-table-column type="selection" width="55" align="center" @change="clickAllData(gridData)" />
             <el-table-column prop="id" label="ID" width="60px" align="center">
               <template slot-scope="scope">
                 <span>{{ scope.row.id }}</span>
               </template>
             </el-table-column>
-            <el-table-column prop="caseName" label="用例名" width="150" align="center" />
-            <el-table-column prop="expectedResult" label="期望结果" width="150" align="center" />
-            <el-table-column prop="casePriorityName" label="用例优先级" width="80" align="center" />
-            <el-table-column prop="creatorName" label="创建人" width="100" align="center" />
-            <el-table-column prop="modifierName" label="修改人" width="100" align="center" />
-            <el-table-column prop="createTime" label="创建时间" width="200" align="center" />
-            <el-table-column prop="address" label="操作" min-width="220px" align="center" fixed="right">
+            <el-table-column prop="caseName" label="用例名" width="150" align="center">
+              <template slot-scope="scope">
+                <span>{{ scope.row.caseName }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="expectedResult" label="期望结果" width="150" align="center">
               <template slot-scope="scope">
-                <el-button size="mini" type="primary" @click="queryGetShow(gridData, '查看')">查看</el-button>
-                <el-button size="mini" type="primary" @click="queryGetShow(gridData, '编辑')">编辑</el-button>
+                <span>{{ scope.row.expectedResult }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="casePriorityName" label="用例优先级" width="80" align="center">
+              <template slot-scope="scope">
+                <span>{{ scope.row.casePriorityName }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="creatorName" label="创建人" width="100" align="center">
+              <template slot-scope="scope">
+                <el-tag type="success">{{ scope.row.creatorName }}</el-tag>
+                <!-- <span>{{ scope.row.creatorName }}</span> -->
+              </template>
+            </el-table-column>
+            <el-table-column prop="modifierName" label="修改人" width="100" align="center">
+              <template slot-scope="scope">
+                <span>{{ scope.row.modifierName }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="createTime" label="创建时间" width="200" align="center">
+              <template slot-scope="scope">
+                <span>{{ scope.row.createTime }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column label="操作" min-width="220px" align="center" fixed="right">
+              <template slot-scope="scope">
+                <el-button size="mini" type="primary" @click="queryGetShow(gridData)">查看</el-button>
+                <el-button size="mini" type="primary" @click="updateGetShow(scope.row)">编辑</el-button>
                 <el-button size="mini" type="primary" @click="deleteCaseData(scope.row.id)">删除</el-button>
               </template>
             </el-table-column>
           </el-table>
+          <!-- 导出文件内容 -->
           <el-table v-show="false" id="out-table" :data="tableData" fit height="570vh" tooltip-effect="dark" style="width: 100%">
-            <!-- <el-table-column prop="caseFolderId" label="目录id" /> -->
             <el-table-column type="index" prop="ids" label="序号" width="50" />
             <!-- <el-table-column prop="ids" label="序号" /> -->
             <el-table-column prop="caseName" label="用例名" />
+            <el-table-column prop="description" label="用例描述" />
             <el-table-column prop="expectedResult" label="期望结果" />
+            <el-table-column prop="api" label="对应api" />
+            <el-table-column prop="projectTypeName" label="项目类型" />
+            <el-table-column prop="taskTypeName" label="平台类型" />
             <el-table-column prop="casePriorityName" label="用例优先级" />
+            <el-table-column prop="moduleTypeName" label="模块名" />
             <el-table-column prop="creatorName" label="创建人" />
             <el-table-column prop="modifierName" label="修改人" />
-            <el-table-column prop="createTime" label="创建时间" />
             <el-table-column prop="remark" label="备注" />
-            <el-table-column prop="description" label="用例描述" />
-            <el-table-column prop="api" label="对应接口" />
-            <el-table-column prop="taskTypeName" label="任务类型" />
-            <el-table-column prop="projectTypeName" label="项目类型" />
-            <el-table-column prop="moduleTypeName" label="模块类型" />
+            <el-table-column prop="createTime" label="创建时间" />
           </el-table>
           <el-pagination :current-page="curIndex" :page-sizes="[5, 10, 20]" :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="100" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
         </el-main>
       </el-container>
     </el-container>
-
+    <!-- 新增-编辑 -->
     <el-dialog :title="titleName" :visible.sync="dialogFormVisibleUpdate" width="80%">
-      <el-form :model="caseData" label-width="90pt" :rules="createFormData">
+      <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="对应接口" prop="api"><el-input v-model="caseData.api" 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-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>
@@ -127,44 +157,67 @@
               </el-select>
             </el-form-item>
           </div>
-
           <div style="flex:1;">
-            <el-form-item label="模块类型" prop="casePriority">
+            <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>
-            <!-- <el-form-item v-show="moduleTypeShow" label="模块类型"><el-input v-model="caseData.moduleType" clearable autocomplete="off" style="width: 200px" /></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 v-show="Determine" type="primary" @click="caseCreateCase(caseData, titleName)">确 定</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-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="dialogFormVisibleQuery = false">关 闭</el-button>
       </div>
     </el-dialog>
   </div>
 </template>
 
 <script>
-import { createFolderData, queryAllFolderData, queryCasesData, createCaseData, updateCaseData, deleteFolderData, deleteCaseData, settingQueryModuleInfoListData } from '@/api/caseProject.js'
-// caseDownloadCaseData
-// caseUploadCaseData
+import { createFolderData, queryAllFolderData, queryCasesData, createCaseData, updateCaseData, deleteFolderData, deleteCaseData, settingQueryModuleInfoListData, updateFolderData } from '@/api/caseProject.js'
+import { mockUrl } from '@/apiConfig/api'
 import FileSaver from 'file-saver'
 import axios from 'axios'
-
 import XLSX from 'xlsx'
+
 export default {
   name: 'UseCasePage',
   data() {
     return {
-      Determine: true,
       centerDialogVisible: false,
+      dialogFormVisibleQuery: false,
       moduleTypeShow: false,
+      dataShow: true,
       titleName: '',
+      createCaseCode: false,
       dialogFormVisibleUpdate: false,
       priorityStrings: [{ name: 'p0', value: 0 }, { name: 'p1', value: 1 }, { name: 'p2', value: 2 }, { name: 'p3', value: 3 }],
       projectTypeStrings: [{ name: 'B端', value: 1 }, { name: 'C端', value: 2 }],
@@ -206,7 +259,7 @@ export default {
       startId: '',
       createParticipation: {},
       moduleTypeStr: [],
-      gridData: [{}],
+      gridData: [],
       caseData: {},
       createFormData: {
         caseName: [{ required: true, message: '用例名不能为空', trigger: 'change' }],
@@ -225,7 +278,9 @@ export default {
       excelData: [],
       imFile: '',
       failNum: '',
-      successNum: ''
+      successNum: '',
+      startKey: '',
+      obj: ''
     }
   },
   created() {
@@ -263,6 +318,11 @@ export default {
           }
           this.data1.push(arr)
         }
+        console.log(this.data1)
+        if (this.data1.length === 0) {
+          this.createCaseCode = true
+          this.dataShow = false
+        }
       })
     },
     moduleTypeArr() {
@@ -272,9 +332,37 @@ export default {
     },
     handleSizeChange(size) {
       this.pageSize = size
+      this.pageIndex()
     },
     handleCurrentChange(curIndex) {
       this.curIndex = curIndex
+      this.pageIndex()
+    },
+    pageIndex() {
+      this.formData = {
+        pageSize: this.pageSize,
+        curIndex: this.curIndex,
+        caseFolderId: this.startId
+      }
+      queryCasesData(this.formData).then(res => {
+        this.gridData = res.data
+      })
+    },
+    clickAllData(rows) {
+      // if (rows) {
+      //   rows.forEach(row => {
+      //     this.$refs.multipleTable.toggleRowSelection(row)
+      //   })
+      // } else {
+      //   this.$refs.multipleTable.clearSelection()
+      // }
+
+      this.formData = {
+        caseFolderId: this.startId
+      }
+      queryCasesData(this.formData).then(res => {
+        this.tableData = res.data
+      })
     },
     taskTypeChange(ele) {
       if (ele === 2) {
@@ -292,21 +380,25 @@ export default {
         })
       }
       if (vel !== '' && e === '新增') {
-        this.caseData = vel
-        this.caseData.creator = this.userInformation
-        this.caseData.creatorName = this.userNames
-        this.caseData.modifier = this.userInformation
-        this.caseData.pageSize = 5
-        this.caseData.curIndex = 0
-        this.caseData.caseFolderId = this.startId
-        this.caseData.bizId = this.bizJson
-        createCaseData(this.caseData).then(res => {
-          if (res.code === 200) {
-            this.gridData = res.data
-            this.successFun()
-            this.dialogFormVisibleUpdate = false
-          } else {
-            this.$notify({ title: '提示', message: res.msg, duration: 2000 })
+        this.$refs['caseData'].validate((valid) => {
+          if (valid) {
+            this.caseData = vel
+            this.caseData.creator = this.userInformation
+            this.caseData.creatorName = this.userNames
+            this.caseData.modifier = this.userInformation
+            this.caseData.pageSize = 5
+            this.caseData.curIndex = 0
+            this.caseData.caseFolderId = this.startId
+            this.caseData.bizId = this.bizJson
+            createCaseData(this.caseData).then(res => {
+              if (res.code === 200) {
+                this.gridData = res.data
+                this.successFun()
+                this.dialogFormVisibleUpdate = false
+              } else {
+                this.$notify({ title: '提示', message: res.msg, duration: 2000 })
+              }
+            })
           }
         })
       }
@@ -327,9 +419,7 @@ export default {
       }
     },
     // 查看
-    queryGetShow(ele, e) {
-      this.titleName = e
-      this.titleName === '查看' ? this.Determine = false : this.Determine = true
+    queryGetShow(ele) {
       if (this.startId === '') {
         this.$notify({ title: '提示', message: '请选择目录', duration: 2000 })
       } else {
@@ -337,23 +427,39 @@ export default {
           var obj = vel
         }
         if (obj.taskType === 2) { this.moduleTypeShow = true }
-        this.dialogFormVisibleUpdate = true
+        this.dialogFormVisibleQuery = true
         this.caseData = {}
         this.caseData = obj
       }
     },
+    // 编辑
+    updateGetShow(ele) {
+      this.titleName = '编辑'
+      this.caseData = ele
+      if (this.startId === '') {
+        this.$notify({ title: '提示', message: '请选择目录', duration: 2000 })
+      } else {
+        if (ele.taskType === 2) { this.moduleTypeShow = true }
+        this.dialogFormVisibleUpdate = true
+      }
+    },
+
     // 新增
     createGetShow() {
       this.titleName = '新增'
-      this.Determine = true
       if (this.startId === '') {
         this.$notify({ title: '提示', message: '请选择目录', duration: 2000 })
       } else {
         this.dialogFormVisibleUpdate = true
-        this.caseData = {}
+        // this.caseData = {}
         this.moduleTypeShow = false
+        // this.$refs['caseData'].resetFields()
+        if (this.$refs['caseData'] !== undefined) {
+          this.$refs['caseData'].resetFields()
+        }
       }
     },
+    // 文件夹新增
     createCase(vel) {
       if (vel.folderName !== '') {
         this.formData = {
@@ -367,6 +473,8 @@ export default {
           if (res.code === 200) {
             this.centerDialogVisible = false
             this.successFun()
+            this.createCaseCode = false
+            this.dataShow = true
             this.data1 = []
             this.AllQueryFolderData()
           } else {
@@ -382,23 +490,38 @@ export default {
       this.tableData = val
     },
     handleDragStart(node, ev) {
-      console.log('drag start', node)
+      console.log('节点开始拖拽时触发的事件', node)
+      console.log(node.key)
+      this.startKey = node.key
     },
     handleDragEnter(draggingNode, dropNode, ev) {
-      console.log('tree drag enter: ', dropNode.label)
+      console.log('拖拽进入其他节点时触发的事件', dropNode.data.id)
     },
     handleDragLeave(draggingNode, dropNode, ev) {
-      console.log('tree drag leave: ', dropNode.label)
+      console.log('拖拽离开某个节点时触发的事件', dropNode.data.id)
     },
     handleDragOver(draggingNode, dropNode, ev) {
-      console.log('tree drag over: ', dropNode.label)
+      console.log('在拖拽节点时触发的事件', dropNode.data.id)
     },
     handleDragEnd(draggingNode, dropNode, dropType, ev) {
-      console.log('tree drag end: ', dropNode && dropNode.label, dropType)
+      console.log('拖拽结束时(可能未成功)触发的事件', dropNode && dropNode.key, dropType)
     },
     handleDrop(draggingNode, dropNode, dropType, ev) {
-      console.log('tree drop: ', dropNode.label, dropType)
+      console.log('拖拽成功完成时触发的事件', dropNode.key, dropType)
+      this.endKey = dropNode.key
+      var startEnd = { bizId: this.bizJson, modifier: this.userInformation, folderName: dropNode.label, parentFolderId: this.endKey, creator: this.userInformation }
+      console.log(startEnd)
+      updateFolderData(startEnd).then(res => {
+        if (res.code === 200) {
+          this.successFun()
+          this.data1 = []
+          this.AllQueryFolderData()
+        } else {
+          this.errorFun(res.msg)
+        }
+      })
     },
+    // 拖拽时判定目标节点能否被放置
     allowDrop(draggingNode, dropNode, type) {
       if (dropNode.data.label === '二级 3-1') {
         return type !== 'inner'
@@ -406,10 +529,12 @@ export default {
         return true
       }
     },
+    // 判断节点能否被拖拽
     allowDrag(draggingNode) {
       return draggingNode.data.label.indexOf('三级 3-2-2') === -1
     },
     createUpdate(e, ele) {
+      this.startId = ele.id
       this.codeId = ele.id
       this.formData = {}
       this.centerDialogVisible = true
@@ -450,6 +575,10 @@ export default {
           this.$message({ type: 'success', message: '已取消' })
         })
     },
+    changeStartId() {
+      this.startId = '-1'
+      this.centerDialogVisible = true
+    },
     deleteCaseData(e) {
       if (this.startId === '') {
         this.$notify({ title: '提示', message: '请选择目录', duration: 2000 })
@@ -485,7 +614,6 @@ export default {
       this.$notify({ title: 'Failed', message: e, type: 'error', duration: 2000 })
     },
     exportExcel() {
-      debugger
       if (this.startId === '') {
         this.$notify({ title: '提示', message: '请选择目录', duration: 2000 })
       } else {
@@ -496,7 +624,6 @@ export default {
         try {
           FileSaver.saveAs(new Blob([wbout], { type: 'application/octet-stream' }), 'sheetjs.xlsx')
         } catch (e) { if (typeof console !== 'undefined') console.log(e, wbout) }
-        console.log(wbout)
         return wbout
       }
     },
@@ -518,19 +645,19 @@ export default {
       const config = {
         headers: { 'Content-Type': 'multipart/form-data' }
       }
-      axios.post('http://10.179.24.176:8980/case/uploadCase', formData, config).then(res => {
+      axios.post(mockUrl + '/case/uploadCase', formData, config).then(res => {
         var code = res.data.data
         this.successNum = code.successNum
         this.failNum = code.failNum
-        console.log(this.failNum)
         if (res.status === 200) {
           if (this.failNum === 0) {
-            this.$notify({ title: 'Success', message: '上传成功', type: 'success', duration: 15000 })
+            this.updateCaseListData()
+            // this.$notify({ title: 'Success', message: '上传成功', type: 'success', duration: 15000 })
           } else {
             this.haha = '上传成功' + this.successNum + '上传失败' + this.failNum
-            this.$notify({ title: 'Success', message: this.haha, type: 'success', duration: 15000 })
+            this.$notify({ title: 'error', message: this.haha, type: 'success', duration: 2000 })
           }
-          this.updateCaseListData()
+
           this.$refs.imFile.value = null
         } else {
           this.$message({ type: 'success', message: '导入失败' })
@@ -551,10 +678,7 @@ export default {
       if (this.startId === '') {
         this.$notify({ title: '提示', message: '请选择目录', duration: 2000 })
       } else {
-        console.log(this.imFile)
-        this.$refs.imFile.click()
-        // this.imFile = document.getElementById('imFile')
-        // this.imFile.click()
+        this.$refs.imFile.click() // this.imFile.click()
       }
     },
     updateCaseListData() {

+ 3 - 0
src/views/home/index.vue

@@ -281,6 +281,9 @@ export default {
         case '2' :
           this.$router.push({ name: 'Mock' })
           break
+        case '3':
+          this.$router.push({ name: 'jar包管理' })
+          break
         case '4' :
           this.$router.push({ name: 'projectPage' })
       }