From f6f5a8af7e6c5359e13d7c75172adb0bc6cac555 Mon Sep 17 00:00:00 2001
From: hyb <kk_huangyangbo@163.com>
Date: Fri, 23 Jan 2026 01:53:11 +0000
Subject: [PATCH] feat: 添加用户登录功能、添加注册功能、注册审批功能,参考:注册审批功能测试指南.md、驱动代码模块增加插入其他项目代码功能,驱动代码模块增加插入其他项目代码功能,优化测试报告模块前端布局和美化 - 实现超级用户管理系统用户,可进行增删改查,其他用户只可查看本人的数据,不可进行增删改 - 将Django后台管理中的用户配置相关功能迁移到系统中进行适配、可配置禁用、是否管理员、是否超级用户 - 增加用户管理的分组字段、可直接进行分组操作,实现用户管理即可通过分组配置实现各项目的访问权限 - 实现登录页面注册 - 实现管理员首页点击注册用户审批可实现通过不通过 - 实现未审核用户的登录提示与审核未通过的用户登录提示 - 实现一键插入其他本人可访问项目的脚本代码
---
测试组/Test_platform/Interface_automation/frontend/src/pages/httprunner/DebugTalk.vue | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 115 insertions(+), 0 deletions(-)
diff --git "a/\346\265\213\350\257\225\347\273\204/Test_platform/Interface_automation/frontend/src/pages/httprunner/DebugTalk.vue" "b/\346\265\213\350\257\225\347\273\204/Test_platform/Interface_automation/frontend/src/pages/httprunner/DebugTalk.vue"
index 106b44e..04e3047 100644
--- "a/\346\265\213\350\257\225\347\273\204/Test_platform/Interface_automation/frontend/src/pages/httprunner/DebugTalk.vue"
+++ "b/\346\265\213\350\257\225\347\273\204/Test_platform/Interface_automation/frontend/src/pages/httprunner/DebugTalk.vue"
@@ -18,6 +18,14 @@
@click="handleRunCode"
>在线运行</el-button
>
+ <el-button
+ round
+ icon="el-icon-document-copy"
+ type="success"
+ size="small"
+ @click="handleImportCode"
+ >插入其他项目代码</el-button
+ >
</div>
</el-header>
@@ -44,6 +52,65 @@
>
<RunCodeResult :msg="resp.msg"></RunCodeResult>
</el-drawer>
+
+ <el-dialog
+ title="插入其他项目代码"
+ :visible.sync="importDialogVisible"
+ width="70%"
+ :close-on-click-modal="false"
+ >
+ <div style="margin-bottom: 20px;">
+ <el-select
+ v-model="selectedProjectId"
+ placeholder="请选择项目"
+ filterable
+ @change="handleProjectChange"
+ style="width: 100%;"
+ >
+ <el-option
+ v-for="project in projectList"
+ :key="project.id"
+ :label="project.name"
+ :value="project.id"
+ >
+ <span style="float: left">{{ project.name }}</span>
+ <span style="float: right; color: #8492a6; font-size: 13px">{{ project.responsible }}</span>
+ </el-option>
+ </el-select>
+ </div>
+
+ <div v-if="selectedProjectCode" style="margin-bottom: 20px;">
+ <div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px;">
+ <span style="font-weight: bold;">代码预览:</span>
+ <el-button
+ type="primary"
+ size="small"
+ icon="el-icon-document-copy"
+ @click="handleCopyAll"
+ >
+ 全部复制
+ </el-button>
+ </div>
+ <el-input
+ type="textarea"
+ :rows="15"
+ v-model="selectedProjectCode"
+ readonly
+ style="font-family: 'Courier New', monospace;"
+ ></el-input>
+ </div>
+
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="importDialogVisible = false">取 消</el-button>
+ <el-button
+ type="primary"
+ @click="handleConfirmImport"
+ :disabled="!selectedProjectCode"
+ >
+ 确定插入
+ </el-button>
+ </span>
+ </el-dialog>
</el-container>
</template>
@@ -64,6 +131,10 @@
editor: null,
timeStamp: "",
isShowDebug: false,
+ importDialogVisible: false,
+ projectList: [],
+ selectedProjectId: "",
+ selectedProjectCode: "",
options: {
selectOnLineNumbers: false,
scrollbar: {
@@ -103,6 +174,50 @@
this.$api.getDebugtalk(this.$route.params.id).then(resp => {
this.code = resp;
});
+ },
+ handleImportCode() {
+ this.importDialogVisible = true;
+ this.getProjectList();
+ },
+ getProjectList() {
+ this.$api.getProjectList().then(resp => {
+ this.projectList = resp.results || [];
+ });
+ },
+ handleProjectChange(projectId) {
+ if (projectId) {
+ this.$api.getDebugtalk(projectId).then(resp => {
+ this.selectedProjectCode = resp.code || "";
+ }).catch(err => {
+ this.$message.error("获取项目驱动代码失败");
+ this.selectedProjectCode = "";
+ });
+ }
+ },
+ handleCopyAll() {
+ if (this.selectedProjectCode) {
+ const textarea = document.createElement("textarea");
+ textarea.value = this.selectedProjectCode;
+ document.body.appendChild(textarea);
+ textarea.select();
+ try {
+ document.execCommand("copy");
+ this.$message.success("代码已复制到剪贴板");
+ } catch (err) {
+ this.$message.error("复制失败,请手动复制");
+ }
+ document.body.removeChild(textarea);
+ }
+ },
+ handleConfirmImport() {
+ if (this.selectedProjectCode && this.editor) {
+ const currentCode = this.editor.getValue();
+ const newCode = currentCode + "\n\n" + this.selectedProjectCode;
+ this.editor.setValue(newCode);
+ this.code.code = newCode;
+ this.$message.success("代码已插入");
+ this.importDialogVisible = false;
+ }
}
},
watch: {
--
Gitblit v1.9.1