소스 검색

httpmock 我的工作台

qinzhipeng_v 5 년 전
부모
커밋
a5dc5e92db
6개의 변경된 파일217개의 추가작업 그리고 14개의 파일을 삭제
  1. 1 0
      src/router/index.js
  2. 142 1
      src/views/Platform/useCasePage.vue
  3. 10 2
      src/views/mock/httpmock.vue
  4. 44 7
      src/views/mock/httprule.vue
  5. 15 4
      src/views/mock/interface.vue
  6. 5 0
      src/views/mock/rule.vue

+ 1 - 0
src/router/index.js

@@ -94,6 +94,7 @@ export const constantRoutes = [
       {
         path: 'useCasePage',
         name: 'useCasePage',
+        hidden: true,
         component: () => import('@/views/Platform/useCasePage'),
         meta: { title: '用例管理' }
       },

+ 142 - 1
src/views/Platform/useCasePage.vue

@@ -1,5 +1,145 @@
 <template>
-  <div>
+  <div style="background:#F2F3F6">
+    <el-container>
+      <el-header style="background:#ffffff;height:25vh;; width:94%;margin:3%; font-size:14px;">
+        <el-row>
+          <el-col :span="20" style="white-space:nowrap;">
+            前置条件
+            <el-input v-model="value" placeholder="请输入内容" style="margin-top:1.3%;" />
+            <el-button class="headerStyle" style="margin-left:1%;" type="primary" @click="queryCaseData(createParticipation)">查询</el-button>
+            <el-button type="primary" @click="createGetShow">新增</el-button>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="20" style="white-space:nowrap;">
+            <div class="headerStyle" style="margin:1% 0;">
+              <span>优先级</span>
+              <el-select v-model="createParticipation.casePriority" style="width: 20%;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" />
+              api接口 <el-input v-model="createParticipation.api" placeholder="api接口" clearable style="width: 50%;margin-right:5px;" class="filter-item" />
+
+            </div>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="20" style="white-space:nowrap;">
+            <div class="demonstration headerStyle">创建时间
+              <el-date-picker v-model="createParticipation.createTime" style="width:20%;margin-right:5px;" type="datetime" placeholder="开始日期" /> -
+              <el-date-picker v-model="createParticipation.modifyTime" style="width:20%;margin-right:5px;" type="datetime" placeholder="结束日期" />
+              创建人 <el-input v-model="createParticipation.creator" placeholder="创建人" clearable style="width: 50%;" 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)">
+
+            </div>
+          </el-col>
+        </el-row>
+      </el-header>
+      <el-container>
+        <el-aside width="150pt">
+          <el-dialog title="提示" :visible.sync="centerDialogVisible" width="30%" center>
+            <el-form :model="formData">
+              <el-form-item label="目录名称 :"><el-input v-model="formData.folderName" autocomplete="off" style="width: 280px" /></el-form-item>
+            </el-form>
+            <span slot="footer" class="dialog-footer">
+              <el-button type="primary" @click="deleteCodeData(formData), centerDialogVisible = false">删除当前目录</el-button>
+              <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: #fff; height:93vh; padding:15%;"
+            :data="data1"
+            node-key="id"
+            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"
+            @node-contextmenu="createUpdate"
+            @node-click="clickFun"
+          />
+        </el-aside>
+        <el-main>
+          <el-button type="primary" style="margin-left:6%;" @click="uploadFile()">导入</el-button>
+          <el-button class="headerStyle" style="margin-left:6%;" type="primary" @click="exportExcel">导出</el-button>
+          <!-- 主页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>
+                <!-- <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 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-container>
       <el-aside width="150pt">
         <el-dialog title="提示" :visible.sync="centerDialogVisible" width="30%" center>
@@ -212,6 +352,7 @@ export default {
   name: 'UseCasePage',
   data() {
     return {
+      value: '',
       centerDialogVisible: false,
       dialogFormVisibleQuery: false,
       moduleTypeShow: false,

+ 10 - 2
src/views/mock/httpmock.vue

@@ -47,7 +47,10 @@
         <template slot-scope="scope"><span>{{ scope.row.actualUrl }}</span></template>
       </el-table-column>
       <el-table-column label="创建人" min-width="110px" align="center">
-        <template slot-scope="scope"><span>{{ scope.row.creator }}</span></template>
+        <template slot-scope="scope">{{ scope.row.creator }}</template>
+      </el-table-column>
+      <el-table-column label="更新人" min-width="110px" align="center">
+        <template slot-scope="scope">{{ scope.row.updator }}</template>
       </el-table-column>
       <el-table-column label="更新时间" min-width="150px" align="center">
         <template slot-scope="scope"><span>{{ scope.row.updateTimeStr }}</span></template>
@@ -186,6 +189,8 @@ export default {
       consumerSelections,
       sortOptions: [{ label: 'ID Ascending', key: '+id' }, { label: 'ID Descending', key: '-id' }],
       statusOptions: ['published', 'draft', 'deleted'],
+      userNames: localStorage.getItem('realname'),
+      username: localStorage.getItem('username'),
       showReviewer: false,
       showSubmitBtn: true,
       temp: {
@@ -369,6 +374,9 @@ export default {
       this.$refs['serviceDataForms'].validate((valid) => {
         if (valid) {
           this.serviceData = ele
+          this.serviceData.creator = this.userNames
+          this.serviceData.creatorEn = this.username
+          this.serviceData.updator = ''
           this.serviceData.id = ''
           this.serviceData.returnDataType === 512
           if (this.serviceData.requestForWard) { this.serviceData.redirect = 1 } else { this.serviceData.redirect = 0 }
@@ -498,7 +506,7 @@ export default {
             method: ele.method,
             actualUrl: this.serviceData.actualUrl,
             status: this.serviceData.status,
-            creator: this.serviceData.creator,
+            updator: this.userNames,
             returnDataType: '512',
             mockUrl: this.serviceData.mockUrl,
             redirect: this.serviceData.redirect

+ 44 - 7
src/views/mock/httprule.vue

@@ -184,8 +184,32 @@ export default {
   },
   data() {
     return {
-      styleObj: {
-        'color': 'rgba(0, 0, 0, 0.726)'
+      isAnyshow: false,
+      isNotAnyRequest: false,
+      expression: '',
+      btnReception: {},
+      whenScript: '',
+      userNames: localStorage.getItem('realname'),
+      username: localStorage.getItem('username'),
+      ruleForm: {
+        whenScript: 0,
+        expression1: 'any',
+        maxPrior: -1,
+        minPrior: 100,
+        execSort: 1,
+        ruleDesc: '',
+        metaRuleList: [{ operator: '', expression1: '', expression2: '', judgeType: '', judgeValue: '', and: '', or: '', prior: '', bracket: '' }]
+      },
+      rulesCheck: {
+        metaRuleList: [{ required: true, message: '条件不能为空', trigger: 'change' }],
+        whenScript: [{ required: true, message: '不能条件为空', trigger: 'change' }],
+        execSort: [{ required: true, message: '优先级1-100', trigger: 'change' }],
+        returnMessage: [{ required: true, message: '不能为空', trigger: 'change' }],
+        ruleDesc: [{ required: true, message: '描述不能为空', trigger: 'change' }],
+        expression1: [{ required: true, message: '请输入方法', trigger: 'change' }],
+        expression2: [{ required: true, message: '请输入运算符', trigger: 'change' }],
+        judgeType: [{ required: true, message: '请选择匹配规则', trigger: 'change' }],
+        judgeValue: [{ required: true, message: '请选择参数', trigger: 'change' }]
       },
       tableKey: 0,
       list: null,
@@ -368,11 +392,24 @@ export default {
       if (typeof shouldJson === 'string') {
         this.$refs['ruleDataForm'].validate((valid) => {
           if (valid) {
-            delete this.ruleData.id
-            this.ruleData.methodProtocol = 'http'
-            this.ruleData.methodId = parseInt(this.$route.path.split('/')[3])
-            createRule(this.ruleData).then(response => {
-              console.log(this.ruleData)
+            this.dataFrom = vel
+            this.dataFrom.creator = this.userNames
+            this.dataFrom.creatorEn = this.username
+            this.dataFrom.updator = ''
+            this.dataFrom.methodId = parseInt(this.$route.path.split('/')[3])
+            this.dataFrom.methodProtocol = 'http'
+            this.dataFrom = vel
+            this.dataFrom = vel
+
+            this.showguiz === false ? this.dataFrom.whenScript = '' : ''
+            this.isNotAnyRequest === false ? this.dataFrom.metaRuleList = [] : this.dataFrom.metaRuleList = [{ 'operator': '', 'expression': vel.expression1 + '.' + vel.expression2, 'judgeType': vel.judgeType, 'judgeValue': vel.judgeValue }]
+            delete this.dataFrom.expression1
+            delete this.dataFrom.expression2
+            delete this.dataFrom.judgeType
+            delete this.dataFrom.judgeValue
+            delete this.dataFrom.id
+
+            createRule(this.dataFrom).then(response => {
               if (response.code === 200) {
                 this.dialogFormVisible = false
                 this.getList()

+ 15 - 4
src/views/mock/interface.vue

@@ -84,6 +84,15 @@
           <span>{{ scope.row.updateTimeStr }}</span>
         </template>
       </el-table-column>
+
+      <el-table-column label="创建人" min-width="110px" align="center">
+        <template slot-scope="scope">{{ scope.row.creator }}</template>
+      </el-table-column>
+
+      <el-table-column label="更新人" min-width="110px" align="center">
+        <template slot-scope="scope">{{ scope.row.updator }}</template>
+      </el-table-column>
+
       <el-table-column v-if="showReviewer" label="备注" min-width="110px" align="center">
         <template slot-scope="scope">
           <span style="color:red;">{{ scope.row.remark }}</span>
@@ -255,6 +264,8 @@ export default {
       styleObj: {
         'color': 'rgba(0, 0, 0, 0.726)'
       },
+      userNames: localStorage.getItem('realname'),
+      username: localStorage.getItem('username'),
       tableKey: 0,
       list: null,
       total: 0,
@@ -566,9 +577,9 @@ export default {
           if (typeof this.serviceData.consumerIds === 'object') {
             this.serviceData.consumerIds = '[' + this.serviceData.consumerIds.toString() + ']'
           }
-          // console.log('#######################')
-          // console.log(this.serviceData)
-          // console.log('#######################')
+          this.serviceData.creator = this.userNames
+          this.serviceData.creatorEn = this.username
+          this.$set(this.serviceData, 'updator', '')
           createService(this.serviceData).then(response => {
             // this.list.unshift(this.serviceData)
             // console.log(response)
@@ -695,7 +706,7 @@ export default {
             methodStatus: this.serviceData.methodStatus,
             consumerIds: '[' + this.serviceData.consumerIds.toString() + ']',
             remark: this.serviceData.remark,
-            updator: ''
+            updator: this.userNames
           }
           // console.log(tempData)
           updateService(tempData).then(response => {

+ 5 - 0
src/views/mock/rule.vue

@@ -174,6 +174,8 @@ export default {
       styleObj: {
         'color': 'rgba(0, 0, 0, 0.726)'
       },
+      userNames: localStorage.getItem('realname'),
+      username: localStorage.getItem('username'),
       tableKey: 0,
       list: null,
       total: 0,
@@ -355,6 +357,9 @@ export default {
           if (valid) {
             delete this.ruleData.id
             this.ruleData.methodId = parseInt(this.$route.path.split('/')[3])
+            this.ruleData.creator = this.userNames
+            this.ruleData.creatorEn = this.username
+            this.ruleData.updator = ''
             createRule(this.ruleData).then(response => {
               // this.list.unshift(this.serviceData)
               if (response.code === 200) {