移除一些造成编译错误的页面

This commit is contained in:
洛洛希雅 2024-04-26 21:20:06 +08:00
parent bb9062f191
commit 291dbff80d
4 changed files with 0 additions and 888 deletions

View File

@ -1,313 +0,0 @@
<template>
<el-drawer v-model="drawer" :title="title" :before-close="close">
<div v-loading="loading" class="drawer__content">
<el-tabs
v-model="activeName"
style="flex: 1; overflow: scroll"
:stretch="true"
>
<el-tab-pane label="组" :name="0">
<el-form
ref="menu"
:model="form"
:rules="menuRules"
label-width="80px"
>
<el-form-item label="组名称" prop="title">
<el-input
v-model.trim="form.title"
autocomplete="off"
placeholder="请输入组名称"
/>
</el-form-item>
<el-form-item label="组路由" prop="path">
<el-input
v-model.trim="form.path"
autocomplete="off"
placeholder="请输入组路由"
/>
</el-form-item>
<el-form-item label="组图标" prop="icon">
<icon-selector v-model="form.icon"/>
</el-form-item>
<el-form-item label="组排序" prop="order">
<el-input-number
v-model="form.order"
:min="0"
label="序号"
/>
</el-form-item>
</el-form>
</el-tab-pane>
<el-tab-pane label="菜单" :name="1">
<el-form
ref="submenu"
:model="form"
:rules="submenuRules"
label-width="80px"
>
<el-form-item label="菜单名称" prop="title">
<el-input
v-model.trim="form.title"
autocomplete="off"
placeholder="请输入菜单名称"
/>
</el-form-item>
<el-form-item label="菜单路由" prop="path">
<el-input
v-model.trim="form.path"
autocomplete="off"
placeholder="请输入菜单路由"
/>
</el-form-item>
<el-form-item label="上级菜单" prop="parentId">
<el-select
ref="singleTree"
v-model="form.parentTitle"
placeholder="请选择上级菜单"
class="vab-tree-select"
clearable
popper-class="select-tree-popper"
value-key="id"
@clear="selectTreeClearHandle()"
>
<el-option :value="form.parentId">
<el-tree
id="singleSelectTree"
ref="singleSelectTree"
:current-node-key="form.parentId"
:data="menuData"
:default-expanded-keys="selectTreeDefaultSelectedKeys"
:highlight-current="true"
:props="selectTreeDefaultProps"
node-key="id"
@node-click="selectTreeNodeClick"
>
<template #defalut="{ node }">
<span class="vab-tree-item">
<i :class="'bi bi-' + node.icon" />
{{ node.label }}</span>
</template>
</el-tree>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="组件路径" prop="component">
<el-input
v-model.trim="form.component"
autocomplete="off"
placeholder="请输入组件路径"
/>
</el-form-item>
<el-form-item label="菜单图标" prop="icon">
<icon-selector v-model="form.icon"/>
</el-form-item>
<el-form-item label="菜单排序" prop="order">
<el-input-number
v-model="form.order"
:min="0"
label="序号"
/>
</el-form-item>
</el-form>
</el-tab-pane>
</el-tabs>
<div class="drawer__footer">
<el-button size="default" @click="close(true)"> </el-button>
<el-button size="default" type="primary" @click="save"> </el-button>
</div>
</div>
</el-drawer>
</template>
<script>
import { doAdd, doUpdate } from "@/api/menuManagement";
import { allIcons } from "@/utils/common-util";
export default {
name: "MenuManagementEdit",
components: {},
props: {
//
menuData: {
type: Array,
default: () => {
return [];
}
}
},
data() {
return {
activeName: 0,
iconList: [],
/* 单选树---------开始 */
selectTreeDefaultSelectedKeys: [], //key
selectTreeDefaultProps: {
children: "children",
label: "title"
},
/* 单选树---------结束 */
form: {
title: "",
icon: "",
path: "",
parentId: "",
component: "",
parentTitle: "",
//
order: 0,
type: ""
},
menuRules: {
path: [{ required: true, trigger: "blur", message: "请输入路由" }],
title: [{ required: true, trigger: "blur", message: "请输入标题" }],
icon: [{ required: true, trigger: "blur", message: "请选择图标" }]
},
submenuRules: {
path: [{ required: true, trigger: "blur", message: "请输入路由" }],
title: [{ required: true, trigger: "blur", message: "请输入标题" }],
component: [
{ required: true, trigger: "blur", message: "请输入组件路径" }
],
parentId: [
{ required: true, trigger: "blur", message: "请选择上级菜单" }
]
},
formBackup: {
title: "",
icon: "",
path: "",
parentId: "",
component: "",
parentTitle: "",
//
order: 0,
type: ""
},
title: "",
loading: false,
drawer: false
};
},
created() {
this.getIconList();
},
methods: {
getIconList() {
this.iconList = allIcons().map(it => ({ value: it, label: it }));
},
showEdit(row) {
if (!row) {
this.title = "添加";
} else {
this.title = "编辑";
this.activeName = row.type;
this.form = Object.assign({}, row);
}
this.loading = true;
this.drawer = true;
this.$nextTick(() => {
this.formBackup = Object.assign({}, this.form);
this.initSingleTree();
});
setTimeout(() => {
this.loading = false;
}, 1500);
},
//
async initSingleTree() {
if (this.form.parentId) {
this.$nextTick(() => {
this.selectTreeDefaultSelectedKeys = [this.form.parentId]; //
//
this.$refs.singleSelectTree.setCurrentKey(this.form.parentId); //
});
}
},
//
selectTreeClearHandle() {
this.selectTreeDefaultSelectedKeys = [];
this.clearSelected();
this.form.parentTitle = "";
this.form.parentId = "";
this.$refs.singleSelectTree.setCurrentKey(""); //
},
//
clearSelected() {
const allNode = document.querySelectorAll(
"#singleSelectTree .el-tree-node"
);
allNode.forEach((element) => element.classList.remove("is-current"));
},
//
selectTreeNodeClick(data, node, el) {
this.form.parentTitle = data.title;
this.form.parentId = data.id;
this.$refs.singleTree.blur();
},
async close(confirm) {
if (this.loading) return;
const compare =
JSON.stringify(this.form) !== JSON.stringify(this.formBackup);
if (confirm && compare) {
const rs = await elConfirmNoCancelBtn(null, "编辑数据将会清空,确认退出?");
if (rs !== "confirm") return;
this.resetDrawer();
} else {
this.resetDrawer();
}
},
resetDrawer() {
this.$refs["menu"].resetFields();
this.$refs["submenu"].resetFields();
this.form = this.$options.data().form;
this.formBackup = this.$options.data().formBackup;
this.drawer = false;
},
save() {
const whichForm = this.activeName === "0" ? "menu" : "submenu";
this.$refs[whichForm].validate(async (valid) => {
if (valid) {
let msg;
this.form.type = Number(this.activeName);
if (this.title === "添加") {
const resp = await doAdd(this.form);
msg = resp.msg;
} else {
const resp = await doUpdate(this.form);
msg = resp.msg;
}
elMessage(msg, "success");
this.$emit("fetch-data");
this.close(false);
} else {
return false;
}
});
}
}
};
</script>
<style lang="scss" scoped>
.drawer__content {
display: flex;
flex-direction: column;
height: 100%;
form {
flex: 1;
}
.drawer__footer {
display: flex;
button {
flex: 1;
}
}
}
</style>

View File

@ -1,143 +0,0 @@
<template>
<app-page class="menuManagement-container">
<!-- <vab-query-form>-->
<!-- <vab-query-form-left-panel :span="4">-->
<!-- <last-breadcrumb class="page-breadcrumb"/>-->
<!-- </vab-query-form-left-panel>-->
<!-- <vab-query-form-right-panel :span="20">-->
<!-- </vab-query-form-right-panel>-->
<!-- </vab-query-form>-->
<template #right>
<el-button type="primary" @click="handleEdit()">添加</el-button>
</template>
<div class="container-inner">
<el-table
v-loading="listLoading"
:data="list"
:element-loading-text="elementLoadingText"
row-key="path"
default-expand-all
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
:header-cell-style="{ background: '#F7F9FB', textAlign: 'center' }"
>
<el-table-column
show-overflow-tooltip
prop="meta.title"
label="标题"
style="text-align: center"
/>
<el-table-column show-overflow-tooltip label="类型" width="100">
<template #default="{ row }">
<div style="text-align: center">
<el-tag v-if="row.type === '0'" effect="dark">目录</el-tag>
<el-tag v-else type="success" effect="dark">菜单</el-tag>
</div>
</template>
</el-table-column>
<el-table-column show-overflow-tooltip label="图标" width="150">
<template #default="{ row }">
<div style="text-align: center">
<span v-if="row.meta">
<i :class="'icon bi bi-' + row.meta.icon"/>
</span>
</div>
</template>
</el-table-column>
<el-table-column
show-overflow-tooltip
prop="name"
label="name"
/>
<el-table-column
show-overflow-tooltip
prop="path"
label="路径"
/>
<el-table-column
show-overflow-tooltip
prop="component"
label="vue文件路径"
/>
<el-table-column
show-overflow-tooltip
prop="redirect"
label="重定向"
/>
<el-table-column label="操作" width="150">
<template #default="{ row }">
<div style="display: flex; justify-content: center">
<el-button class="icon" type="primary" link @click="handleEdit(row)">
<i class="bi bi-pencil-square"/>
</el-button>
<el-button class="icon" type="primary" link @click="handleDelete(row)">
<i class="bi bi-trash"/>
</el-button>
</div>
</template>
</el-table-column>
</el-table>
<edit ref="edit" :menu-data="menuData" @fetch-data="fetchData"/>
</div>
</app-page>
</template>
<script>
import { doDelete, getTree } from '@/api/menuManagement'
import Edit from './components/MenuManagementEdit.vue'
import AppPage from "@/components/AppPage.vue";
export default {
name: 'MenuManagement',
components: { Edit, AppPage },
data() {
return {
data: [],
defaultProps: {
children: 'children',
label: 'label',
},
list: [],
listLoading: true,
elementLoadingText: '正在加载...',
}
},
computed: {
menuData() {
return this.list
},
},
created() {
this.fetchData()
},
methods: {
handleEdit(row) {
if (row) {
this.$refs['edit'].showEdit(row)
} else {
this.$refs['edit'].showEdit()
}
},
async handleDelete(row) {
if (row.id) {
const rs = await elConfirmNoCancelBtn(null, '你确定要删除当前项吗')
if (rs !== 'confirm') return;
const { msg } = await doDelete(row)
elMessage(msg, 'success')
await this.fetchData()
}
},
async fetchData() {
this.listLoading = true
this.list = await getTree()
setTimeout(() => {
this.listLoading = false
}, 300)
},
},
}
</script>
<style scoped lang="scss">
.icon {
font-size: 1.5em !important;
padding: 5px !important;
}
</style>

View File

@ -1,235 +0,0 @@
<template>
<el-drawer v-model="drawer" :title="title" :before-close="close">
<div v-loading="loading" class="drawer__content">
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="角色名称:" prop="roleName">
<el-input
v-model.trim="form.roleName"
autocomplete="off"
placeholder="请输入角色名称"
/>
</el-form-item>
<el-form-item label="角色key" prop="type">
<el-input
v-model.trim="form.type"
autocomplete="off"
placeholder="请输入角色key"
/>
</el-form-item>
<el-form-item label="菜单列表:" prop="menuId">
<el-select
v-model="form.menuTitle"
class="vab-tree-select"
clearable
collapse-tags
multiple
popper-class="select-tree-popper"
@clear="selectTreeClearHandle()"
@remove-tag="removeSelectTreeTag"
>
<!-- <el-select-->
<!-- v-model="form.menuTitle"-->
<!-- class="vab-tree-select"-->
<!-- clearable-->
<!-- multiple-->
<!-- popper-class="select-tree-popper"-->
<!-- @clear="selectTreeClearHandle()"-->
<!-- @remove-tag="removeSelectTreeTag"-->
<!-- >-->
<el-option :value="form.menuId" style="height: 250px; overflow: auto; background-color: white">
<el-tree
id="multipleSelectTree"
ref="multipleSelectTree"
:data="menu"
:default-expanded-keys="form.menuId"
:highlight-current="true"
:props="selectTreeDefaultProps"
node-key="id"
show-checkbox
@check="multipleSelectTreeCheckNode"
/>
</el-option>
</el-select>
</el-form-item>
</el-form>
<div class="drawer__footer">
<el-button size="default" @click="close(true)"> </el-button>
<el-button size="default" type="primary" @click="save"> </el-button>
</div>
</div>
</el-drawer>
</template>
<script>
import { doAdd, doUpdate } from "@/api/roleManagement";
import { getTree } from "@/api/menuManagement";
import { delay } from "@/utils/common-util";
export default {
name: "RoleManagementEdit",
data() {
return {
form: {
roleName: "",
type: "",
menuId: [],
menuTitle: []
},
rules: {
roleName: [
{ required: true, trigger: "blur", message: "请输入角色名称" }
],
menuId: [{ required: true, trigger: "blur", message: "请选择菜单" }]
},
formBackup: {
roleName: "",
type: "",
menuId: [],
menuTitle: []
},
title: "",
loading: false,
drawer: false,
/* 单选树-多选树---------开始 */
menu: [],
selectTreeDefaultProps: {
children: "children",
label: "title"
}
/* 单选树-多选树---------结束 */
};
},
created() {
},
methods: {
/* 单选/多选树方法-------------------开始 */
//
async initSingleTree() {
this.menu = await getTree();
this.$nextTick(() => {
//
this.form.menuId.forEach((item) => {
const node = this.$refs.multipleSelectTree.getNode(item);
if (node && node.isLeaf) {
this.$refs.multipleSelectTree.setChecked(node, true);
}
});
});
},
//
selectTreeClearHandle() {
this.form.menuTitle = [];
this.form.menuId = [];
this.$refs.multipleSelectTree.setCheckedKeys([]);
},
// select
removeSelectTreeTag(val) {
const stack = JSON.parse(JSON.stringify(this.menu));
while (stack.length) {
const curr = stack.shift();
if (curr.title == val) {
this.form.menuId.splice(this.form.menuId.indexOf(curr.id), 1);
return this.$refs.multipleSelectTree.setChecked(curr.id, false);
}
if (curr.children && curr.children.length) {
stack.unshift(...curr.children);
}
}
},
//
multipleSelectTreeCheckNode(data, node, el) {
const checkedNodes = this.$refs.multipleSelectTree.getCheckedNodes();
const halfCheckedNodes =
this.$refs.multipleSelectTree.getHalfCheckedNodes();
const allNodes = checkedNodes.concat(halfCheckedNodes);
const keyArr = [];
const valueArr = [];
allNodes.forEach((item) => {
keyArr.push(item.id);
valueArr.push(item.title);
});
this.form.menuTitle = valueArr;
this.form.menuId = keyArr;
},
/* 单选/多选树方法-------------------结束 */
showEdit(row) {
if (!row) {
this.title = "添加";
} else {
this.title = "编辑";
this.form = Object.assign({}, row);
}
this.loading = true;
this.drawer = true;
this.$nextTick(() => {
this.formBackup = Object.assign({}, this.form);
this.initSingleTree();
});
setTimeout(() => {
this.loading = false;
}, 1500);
},
async close(confirm) {
if (this.loading) return;
const compare =
JSON.stringify(this.form) !== JSON.stringify(this.formBackup);
if (confirm && compare) {
const rs = await elConfirmNoCancelBtn(null,
"编辑数据将会清空,确认退出?"
);
if (rs !== "confirm") return;
this.resetDrawer();
} else {
this.resetDrawer();
}
},
resetDrawer() {
this.$refs["form"].resetFields();
this.form = this.$options.data().form;
this.formBackup = this.$options.data().formBackup;
this.drawer = false;
},
save() {
this.$refs["form"].validate(async (valid) => {
if (valid) {
let msg;
if (this.title === "添加") {
const resp = await doAdd(this.form);
msg = resp.msg;
} else {
const resp = await doUpdate(this.form);
msg = resp.msg;
}
elMessage(msg, "success");
this.$emit("fetch-data");
this.close(false);
} else {
return false;
}
});
}
}
};
</script>
<style lang="scss" scoped>
.drawer__content {
display: flex;
flex-direction: column;
height: 100%;
form {
flex: 1;
}
.drawer__footer {
display: flex;
button {
flex: 1;
}
}
}
</style>

View File

@ -1,197 +0,0 @@
<template>
<app-page class="roleManagement-container">
<template #right>
<el-form :inline="true" :model="queryForm" class="nav" @submit.prevent>
<el-form-item>
<el-input
v-model.trim="queryForm.roleName"
placeholder="请输入查询条件"
@keyup.enter="queryData"
>
<template #suffix>
<i
class="el-icon-search el-input__icon i-search"
@click="queryData"
/>
</template>
</el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleEdit">添加</el-button>
</el-form-item>
<!-- <el-form-item>-->
<!-- <el-button-->
<!-- icon="el-icon-delete"-->
<!-- type="danger"-->
<!-- @click="handleDestroy"-->
<!-- >-->
<!-- 批量删除-->
<!-- </el-button>-->
<!-- </el-form-item>-->
</el-form>
</template>
<div class="container-inner">
<el-table
v-loading="listLoading"
:data="list"
:element-loading-text="elementLoadingText"
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
:header-cell-style="{ background: '#F7F9FB', textAlign: 'center' }"
:cell-style="{ textAlign: 'center' }"
@selection-change="setSelectRows"
>
<!-- <el-table-column show-overflow-tooltip type="selection"></el-table-column>-->
<el-table-column
show-overflow-tooltip
width="120"
prop="id"
label="id"
/>
<el-table-column
show-overflow-tooltip
width="200"
prop="roleName"
label="角色名称"
/>
<el-table-column
show-overflow-tooltip
width="200"
prop="type"
label="角色类型"
/>
<el-table-column show-overflow-tooltip label="菜单列表">
<template #default="{ row }">
<span>{{ row.menuTitle.toString() }}</span>
</template>
</el-table-column>
<el-table-column label="操作" width="200">
<template #default="{ row }">
<el-button class="icon" type="primary" link @click="handleEdit(row)">
<i class="bi bi-pencil-square" />
</el-button>
<el-button class="icon" type="primary" link @click="handleDestroy(row)">
<i class="bi bi-trash" />
</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
background
:current-page="queryForm.pageNo"
:page-size="queryForm.pageSize"
:layout="layout"
:total="total"
style="justify-content: center"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
<edit ref="edit" @fetch-data="fetchData" />
</div>
</app-page>
</template>
<script>
import { doDelete, getList } from "@/api/roleManagement";
import Edit from "./components/RoleManagementEdit.vue";
import AppPage from "@/components/AppPage.vue";
export default {
name: "RoleManagement",
components: { Edit, AppPage },
data() {
return {
list: null,
listLoading: true,
layout: "total, sizes, prev, pager, next, jumper",
total: 0,
selectRows: "",
elementLoadingText: "正在加载...",
queryForm: {
pageNo: 1,
pageSize: 10,
roleName: ""
}
};
},
created() {
this.fetchData();
},
methods: {
setSelectRows(val) {
this.selectRows = val;
},
handleEdit(row) {
if (row.id) {
this.$refs["edit"].showEdit(row);
} else {
this.$refs["edit"].showEdit();
}
},
async handleDestroy(row) {
// if (row.id) {
// this.$baseConfirm('', null, async () => {
// const { msg } = await doDelete({ ids: row.id })
// this.$baseMessage(msg, 'success')
// this.fetchData()
// })
// } else {
// if (this.selectRows.length > 0) {
// const ids = this.selectRows.map((item) => item.id).join()
// this.$baseConfirm('', null, async () => {
// const { msg } = await doDelete({ ids })
// this.$baseMessage(msg, 'success')
// this.fetchData()
// })
// } else {
// this.$baseMessage('', 'error')
// return false
// }
// }
const rs = await elConfirmNoCancelBtn(null, "你确定要删除当前项吗");
if (rs !== "confirm") return;
const { msg } = await doDelete({
id: row.id
});
elMessage(msg, "success");
this.fetchData();
},
handleSizeChange(val) {
this.queryForm.pageSize = val;
this.fetchData();
},
handleCurrentChange(val) {
this.queryForm.pageNo = val;
this.fetchData();
},
queryData() {
this.queryForm.pageNo = 1;
this.fetchData();
},
async fetchData() {
this.listLoading = true;
const { data } = await getList(this.queryForm);
this.list = data.rows;
this.total = data.total;
setTimeout(() => {
this.listLoading = false;
}, 300);
}
}
};
</script>
<style scoped lang="scss">
.nav > * {
margin-bottom: 0;
margin-right: 1em;
&:last-child {
margin-right: 0;
}
}
.icon {
font-size: 1.5em !important;
padding: 5px !important;
}
</style>