v0.1.1
This commit is contained in:
@@ -131,5 +131,16 @@ export default {
|
||||
method: "get",
|
||||
params
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 拖拽设计需求排序
|
||||
* @returns
|
||||
*/
|
||||
switch_position(from_key, to_key, pos, project_id) {
|
||||
return request({
|
||||
url: "/project/switch_position",
|
||||
method: "get",
|
||||
params: { from_key, to_key, pos, project_id }
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,9 +3,12 @@ import { storeToRefs } from "pinia"
|
||||
import { Message, Notification } from "@arco-design/web-vue"
|
||||
import caseApi from "@/api/project/case"
|
||||
import { useTreeDataStore } from "@/store"
|
||||
import designApi from "@/api/project/designDemand"
|
||||
import { useRoute } from "vue-router"
|
||||
|
||||
export default function useTreeDrag(projectId, routeViewRef) {
|
||||
// global
|
||||
const route = useRoute()
|
||||
const treeDataStore = useTreeDataStore()
|
||||
const { treeData } = storeToRefs(treeDataStore)
|
||||
// 闭包储存变量
|
||||
@@ -19,15 +22,15 @@ export default function useTreeDrag(projectId, routeViewRef) {
|
||||
const pao2Container = ref(null)
|
||||
// a-tree -> 节点在可释放目标释放的操作 - drapNode是被拖拽的节点,
|
||||
// dropNone是释放在哪个节点下,dropPosition是释放的位置-1,0...
|
||||
const ondrop = ({ e, dragNode, dropNode, dropPosition }) => {
|
||||
const data = treeData.value // 1.这是整体的树数据
|
||||
// 提示用户只能拖拽用例节点
|
||||
if (dragNode.level !== "4") {
|
||||
Message.warning("只能拖拽用例节点")
|
||||
const ondrop = async ({ e, dragNode, dropNode, dropPosition }) => {
|
||||
const data = treeData.value // 这是整体的树数据
|
||||
// 提示用户只能拖拽用例节点、设计需求节点
|
||||
if (!["2", "4"].includes(dragNode.level)) {
|
||||
Message.warning("只能拖拽用例节点、设计需求节点")
|
||||
return
|
||||
}
|
||||
// 拖拽逻辑:
|
||||
// 1.首先只能拖拽用例节点才能实现功能
|
||||
// 1.用例节点拖拽
|
||||
if (dragNode.level === "4") {
|
||||
// 2.1.如果是拖拽到测试项节点下
|
||||
if (dropNode.level === "3") {
|
||||
@@ -58,10 +61,19 @@ export default function useTreeDrag(projectId, routeViewRef) {
|
||||
dragDropPosition = dropPosition
|
||||
}
|
||||
}
|
||||
// 2.设计需求节点拖拽-改变sort字段
|
||||
if (dragNode.level === "2") {
|
||||
// 如果位置为0,即放在节点上不处理
|
||||
if (dropPosition === 0) return
|
||||
// 如果不为0,则发出请求,传key后端处理即可
|
||||
const res = await designApi.switch_position(dragNode.key, dropNode.key, dropPosition, route.query.id)
|
||||
// 最后更新树状目录
|
||||
treeDataStore.updateDesignDemandTreeData({ key: res.data }, route.query.id)
|
||||
}
|
||||
}
|
||||
// a-tree拖拽时是否允许在某级别节点上释放:目前支持在测试项节点、测试用例节点释放
|
||||
const allowdrop = (options) => {
|
||||
if (options.dropNode.level === "4" || options.dropNode.level === "3") {
|
||||
if (["4", "3", "2"].includes(options.dropNode.level)) {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
|
||||
@@ -93,7 +93,7 @@ export default function useNodeClick(expandedKeys: Ref<string[]>) {
|
||||
timerId && clearTimeout(timerId)
|
||||
timerId = null
|
||||
}
|
||||
}, 250)
|
||||
}, 250) as any
|
||||
}
|
||||
return {
|
||||
selectedKeys,
|
||||
|
||||
@@ -23,11 +23,7 @@
|
||||
<a-tabs default-active-key="login-log" :animation="true">
|
||||
<a-tab-pane key="login-log" title="登录日志" v-loading="isDataLoading">
|
||||
<a-timeline class="pl-5 mt-3" v-if="loginLogList.length">
|
||||
<a-timeline-item
|
||||
:label="`IP地址:${item.ip},操作系统:${item.os}`"
|
||||
v-for="(item, idx) in loginLogList"
|
||||
:key="idx"
|
||||
>
|
||||
<a-timeline-item :label="`IP地址:${item.ip},操作系统:${item.os}`" v-for="(item, idx) in loginLogList" :key="idx">
|
||||
您于 {{ item.create_datetime }} 登录系统,浏览器:{{ item.browser }}
|
||||
</a-timeline-item>
|
||||
</a-timeline>
|
||||
|
||||
@@ -71,7 +71,6 @@ const route = useRoute()
|
||||
const problemFormRef = ref(null)
|
||||
const title = ref("问题单表单")
|
||||
const crudRef = ref()
|
||||
|
||||
// 2025年5月新增
|
||||
const replaceModal = ref()
|
||||
const handleReplaceClick = () => {
|
||||
|
||||
Reference in New Issue
Block a user