Parcourir la source

feat: 添加项目通过验证码关联

zhaoxingrui il y a 5 ans
Parent
commit
5fdb849ba2

+ 6 - 0
src/api/devcloud/project.ts

@@ -25,3 +25,9 @@ export const getProjectMembersByProjectId = (projectId: number) => axios.get(`${
     projectId,
   },
 });
+
+export const generateRelateCode = (projectId: number) => axios.post(`${PROJECT_PREFIX}/relate/code?projectId=${projectId}`);
+
+export const relateProject = (projectId: number, code: string) => axios.post(
+  `${PROJECT_PREFIX}/relate/code?projectId=${projectId}&relateCode=${code}`,
+);

+ 12 - 0
src/components/SideBar.vue

@@ -18,6 +18,9 @@
     <el-menu-item index="apitest">
       <i class="icon" target="apitest"></i>
     </el-menu-item>
+    <el-menu-item index="invite">
+      <i class="icon" target="invite"></i>
+    </el-menu-item>
   </el-menu>
 </template>
 
@@ -101,4 +104,13 @@ export default {
     background-image: url("../assets/icon/test-using.svg");
   }
 }
+.icon[target=invite]{
+   background-image: url("../assets/icon/test.svg");
+  .el-menu-item:hover & {
+    background-image: url("../assets/icon/test-hover.svg");
+  }
+  .el-menu-item.is-active & {
+    background-image: url("../assets/icon/test-using.svg");
+  }
+}
 </style>

+ 4 - 0
src/router/index.ts

@@ -58,6 +58,10 @@ const routes: Array<RouteRecordRaw> = [
         path: 'apitest',
         component: () => import(/* webpackChunkName: "project" */'@/views/Project/APITest.vue'),
       },
+      {
+        path: 'invite',
+        component: () => import(/* webpackChunkName: "project" */'@/views/Project/Invite.vue'),
+      },
     ],
   }),
 ];

+ 5 - 4
src/views/Project/APITest.vue

@@ -178,6 +178,7 @@
         <template #title>创建测试任务</template>
         <el-form
           :model="createAPITestForm"
+          :rules="rules"
           ref="createAPITestForm"
           label-position="right"
           label-width="100px"
@@ -214,8 +215,8 @@
               </ElOption>
             </ElSelect>
           </el-form-item>
-          <el-form-item label="并发数" prop="qps" required>
-            <el-input v-model="createAPITestForm.qps" placeholder="请输入并发数"></el-input>
+          <el-form-item label="并发数" prop="qps" required="">
+            <el-input v-model="createAPITestForm.qps" placeholder="请输入并发数(10的倍数)"></el-input>
           </el-form-item>
         </el-form>
         <template #footer>
@@ -646,7 +647,7 @@
           width="60">
         </ElTableColumn>
         <ElTableColumn
-          prop="test_id"
+          prop="testId"
           label="所属测试ID"
           align="center"
           width="120">
@@ -835,7 +836,7 @@ export default {
           await APITestAPI.createAPITest({
             projectId: this.$store.state.workspace.currentProjectId,
             createTime: this.createAPITestForm.createTime,
-            username: '',
+            username: this.$store.state.user.username,
             testName: this.createAPITestForm.testName,
             url: this.createAPITestForm.url,
             params: this.createAPITestForm.params,

+ 52 - 0
src/views/Project/Invite.vue

@@ -0,0 +1,52 @@
+<template>
+<div>
+  <el-row  style="display: flex;flex-direction: row;align-items: center;margin-bottom: 10px;color: #333333">
+    <h4>生成邀请码</h4>
+  </el-row>
+  <span>邀请码:</span>{{relateCode}}
+  <span v-if="relateCode !== ''">(邀请码在5分钟后会失效,请及时填写!)</span>
+  <el-row style="display: flex;flex-direction: row;align-items: center">
+    <el-button
+      @click="generateRelateCode()"
+      type="text"
+      size="large">点击生成</el-button>
+  </el-row>
+  <el-row  style="display: flex;flex-direction: row;align-items: center;margin-top: 20px;color: #333333">
+    <h4>关联其他项目</h4>
+  </el-row>
+  <el-row style="display: flex;flex-direction: row;align-items: center;margin-top: 20px;">
+    <el-input v-model="targetCode" placeholder="请输入要关联的项目生成的邀请码" style="width: 270px"></el-input>
+    <el-button
+      @click="relate()"
+      type="text"
+      size="large">点击关联</el-button>
+  </el-row>
+</div>
+</template>
+
+<script>
+import { ProjectAPI } from '@/api';
+import { ElMessage } from 'element-plus';
+
+export default {
+  data() {
+    return {
+      relateCode: '',
+      targetCode: '',
+    };
+  },
+  methods: {
+    async generateRelateCode() {
+      this.relateCode = await ProjectAPI.generateRelateCode(this.$store.state.workspace.currentProjectId);
+    },
+    async relate() {
+      await ProjectAPI.relateProject(this.$store.state.workspace.currentProjectId, this.targetCode);
+      ElMessage.success('关联成功!');
+      this.targetCode = '';
+    },
+  },
+};
+</script>
+
+<style scoped>
+</style>