review code.

This commit is contained in:
lijiahang
2023-12-01 15:07:39 +08:00
parent d452fe1b10
commit 351669a4f3
11 changed files with 411 additions and 724 deletions

View File

@@ -1,83 +1,85 @@
<template>
<!-- 分组树 -->
<a-tree v-if="treeData.length"
ref="tree"
class="tree-container"
:blockNode="true"
:draggable="draggable"
:data="treeData"
:checkable="checkable"
v-model:checked-keys="checkedKeys"
:check-strictly="true"
@drop="moveGroup">
<!-- 标题 -->
<template #title="node">
<!-- 修改名称输入框 -->
<template v-if="node.editable">
<a-input size="mini"
ref="renameInput"
v-model="currName"
style="width: 138px;"
placeholder="名称"
autofocus
:max-length="32"
:disabled="node.loading"
@blur="() => saveNode(node.key)"
@pressEnter="() => saveNode(node.key)"
@change="() => saveNode(node.key)">
<template #suffix>
<!-- 加载中 -->
<icon-loading v-if="node.loading" />
<!-- 保存 -->
<icon-check v-else
class="pointer"
title="保存"
@click="() => saveNode(node.key)" />
</template>
</a-input>
</template>
<!-- 名称 -->
<span v-else
class="node-title-wrapper"
@click="() => emits('selectNode', node)">
<a-scrollbar>
<!-- 分组树 -->
<a-tree v-if="treeData.length"
ref="tree"
class="tree-container"
:blockNode="true"
:draggable="draggable"
:data="treeData"
:checkable="checkable"
v-model:checked-keys="checkedKeys"
:check-strictly="true"
@drop="moveGroup">
<!-- 标题 -->
<template #title="node">
<!-- 修改名称输入框 -->
<template v-if="node.editable">
<a-input size="mini"
ref="renameInput"
v-model="currName"
style="width: 138px;"
placeholder="名称"
autofocus
:max-length="32"
:disabled="node.loading"
@blur="() => saveNode(node.key)"
@pressEnter="() => saveNode(node.key)"
@change="() => saveNode(node.key)">
<template #suffix>
<!-- 加载中 -->
<icon-loading v-if="node.loading" />
<!-- 保存 -->
<icon-check v-else
class="pointer"
title="保存"
@click="() => saveNode(node.key)" />
</template>
</a-input>
</template>
<!-- 名称 -->
<span v-else
class="node-title-wrapper"
@click="() => emits('selectNode', node)">
{{ node.title }}
</span>
</template>
<!-- 操作图标 -->
<template #drag-icon="{ node }">
<a-space v-if="!node.editable">
<!-- 重命名 -->
<span v-permission="['asset:host-group:update']"
class="tree-icon"
title="重命名"
@click="rename(node.title, node.key)">
</template>
<!-- 操作图标 -->
<template #drag-icon="{ node }">
<a-space v-if="!node.editable">
<!-- 重命名 -->
<span v-permission="['asset:host-group:update']"
class="tree-icon"
title="重命名"
@click="rename(node.title, node.key)">
<icon-edit />
</span>
<!-- 删除 -->
<a-popconfirm content="确认删除这条记录吗?"
position="left"
type="warning"
@ok="deleteNode(node.key)">
<!-- 删除 -->
<a-popconfirm content="确认删除这条记录吗?"
position="left"
type="warning"
@ok="deleteNode(node.key)">
<span v-permission="['asset:host-group:delete']"
class="tree-icon" title="删除">
<icon-delete />
</span>
</a-popconfirm>
<!-- 新增 -->
<span v-permission="['asset:host-group:create']"
class="tree-icon"
title="新增"
@click="addChildren(node)">
</a-popconfirm>
<!-- 新增 -->
<span v-permission="['asset:host-group:create']"
class="tree-icon"
title="新增"
@click="addChildren(node)">
<icon-plus />
</span>
</a-space>
</template>
</a-tree>
<!-- 无数据 -->
<div v-else-if="!loading" class="empty-container">
<span>暂无数据</span>
<span>点击上方 '<icon-plus />' 添加一个分组吧~</span>
</div>
</a-space>
</template>
</a-tree>
<!-- 无数据 -->
<div v-else-if="!loading" class="empty-container">
<span>暂无数据</span>
<span>点击上方 '<icon-plus />' 添加一个分组吧~</span>
</div>
</a-scrollbar>
</template>
<script lang="ts">
@@ -344,10 +346,16 @@
</script>
<style lang="less" scoped>
:deep(.arco-scrollbar-container) {
height: 100%;
overflow-y: auto;
}
.tree-container {
min-width: 100%;
width: max-content;
user-select: none;
overflow: hidden;
}
.empty-container {
@@ -380,7 +388,7 @@
}
:deep(.arco-tree-node-title) {
padding: 0 68px 0 0;
padding: 0 80px 0 0;
height: 32px;
&:hover {

View File

@@ -36,12 +36,13 @@
const emits = defineEmits(['update:modelValue', 'change']);
// 切换 tab
const changeTab = ({ key, text }: TabRouterItem) => {
const changeTab = (item: TabRouterItem) => {
const key = item.key;
if (key === props.modelValue) {
return;
}
emits('update:modelValue', key);
emits('change', key, text);
emits('change', key, item);
};
onMounted(() => {
@@ -54,12 +55,12 @@
if (items.map(s => s.key).indexOf(props.modelValue as string | number) === -1) {
const item = items[0];
emits('update:modelValue', item.key);
emits('change', item.key, item.text);
emits('change', item.key, item);
} else {
// 触发 change 事件
const matchItem = items.find(s => s.key === props.modelValue);
if (matchItem) {
emits('change', matchItem.key, matchItem.text);
emits('change', matchItem.key, matchItem);
}
}
});