Commit ae9bff17 authored by “yiyousong”'s avatar “yiyousong”

perf: 优化跳转

parent 916bc99e
......@@ -5,7 +5,7 @@
<script>
import local from "@/utils/local";
import { mapMutations } from "vuex";
import { calcMenu } from "@/router";
import { calcMenu, menusFilter } from "@/router";
import { generateRoutes, filterBtn } from "@/utils";
import { getMenuTree } from "@/api/system";
export default {
......@@ -55,6 +55,7 @@ export default {
// 过滤掉按钮
let menus = filterBtn(menuList, false);
let routes = generateRoutes(menus);
routes = menusFilter(routes);
this.SET_menusList(menus);
this.setBtnPermissions(menuList);
calcMenu();
......
<template>
<el-container>
<el-container class="layout">
<el-header height="64px">
<Header></Header>
</el-header>
<el-container>
<el-container class="layout-main">
<el-aside width="200px" v-if="layout === 'side'">
<MenuBar></MenuBar>
</el-aside>
......@@ -73,7 +73,7 @@ export default {
</script>
<style lang="less" scoped>
.el-container {
.layout {
width: 100vw;
height: 100vh;
}
......@@ -81,6 +81,9 @@ export default {
padding: 0px 20px;
background: linear-gradient(90deg, #1845c6 0%, #2999ff 100%);
}
.layout-main {
height: calc(100vh - 64px);
}
.el-aside {
background-color: #fff;
}
......
......@@ -217,7 +217,7 @@
]"
>
<el-input
class="mr-[10px]"
style="margin-right: 10px"
v-model="v.value"
placeholder="请输入链接地址"
/>
......@@ -354,7 +354,11 @@ export default {
if (this.form.resourceType === 1) {
resourceUrl = this.form.resourceUrl.join(",");
} else {
resourceUrl = this.form.urls.map((v) => v.value).join(",");
resourceUrl = this.form.urls
.map((v) => {
return v.value.startsWith("/") ? v.value : "/" + v.value;
})
.join(",");
}
this.$delete(form, "resourceType");
this.$delete(form, "urls");
......
......@@ -9,7 +9,13 @@
:close-on-click-modal="false"
top="10vh"
>
<el-form ref="form" :model="form" :rules="rules" size="medium" label-width="100px">
<el-form
ref="form"
:model="form"
:rules="rules"
size="medium"
label-width="100px"
>
<el-form-item label="资源名称" prop="name">
<el-input v-model="form.name" placeholder="请输入资源名称"></el-input>
</el-form-item>
......@@ -29,14 +35,23 @@
v-for="(v, i) in form.urls"
:key="i"
:prop="`urls.${i}.value`"
:rules="[{ required: true, validator: validatorUrl, trigger: 'blur' }]"
:rules="[
{ required: true, validator: validatorUrl, trigger: 'blur' },
]"
>
<el-input class="mr-[10px]" v-model="v.value" placeholder="请输入链接地址" />
<el-input
style="margin-right: 10px"
v-model="v.value"
placeholder="请输入链接地址"
/>
<div class="flex">
<el-button type="primary" @click="changeParams(i, 'add')">
<i class="el-icon-plus"></i>
</el-button>
<el-button type="danger" v-if="i > 0" @click="changeParams(i, 'remove')"
<el-button
type="danger"
v-if="i > 0"
@click="changeParams(i, 'remove')"
><i class="el-icon-minus"></i
></el-button>
</div>
......@@ -45,7 +60,11 @@
</el-form>
<span slot="footer" class="dialog-footer">
<el-button size="medium" @click="handleRest">重 置</el-button>
<el-button size="medium" type="primary" @click="handleOk" :loading="loading"
<el-button
size="medium"
type="primary"
@click="handleOk"
:loading="loading"
>确 定</el-button
>
</span>
......@@ -54,44 +73,46 @@
</template>
<script>
import { saveResource } from '@/api/system';
import { saveResource } from "@/api/system";
export default {
props: {
title: {
type: String,
required: true,
default: ''
default: "",
},
show: {
type: Boolean,
required: true,
default: false
default: false,
},
dict: {
type: Object,
required: true,
default: () => {
return {};
}
}
},
},
},
data() {
return {
loading: false,
form: {
name: '',
authType: '',
url: '',
name: "",
authType: "",
url: "",
urls: [
{
value: ''
}
]
value: "",
},
],
},
rules: {
name: [{ required: true, message: '请输入资源名称', trigger: 'blur' }],
authType: [{ required: true, message: '请选择权限类型', trigger: 'change' }]
}
name: [{ required: true, message: "请输入资源名称", trigger: "blur" }],
authType: [
{ required: true, message: "请选择权限类型", trigger: "change" },
],
},
};
},
computed: {
......@@ -100,9 +121,9 @@ export default {
return this.show;
},
set(val) {
this.$emit('update:show', val);
}
}
this.$emit("update:show", val);
},
},
},
created() {},
methods: {
......@@ -113,12 +134,12 @@ export default {
this.loading = true;
let res = await saveResource({
...this.form,
url: this.form.urls.map((v) => v.value).join(',')
url: this.form.urls.map((v) => v.value).join(","),
});
let { code, msg } = res.data;
if (code == 1) {
this.$message.success(msg);
this.$emit('success');
this.$emit("success");
this.handleClose();
}
this.loading = false;
......@@ -128,7 +149,7 @@ export default {
// 新增
onAdd() {
Object.assign(this.form, this.$options.data().form);
this.form.id && this.$delete(this.form, 'id');
this.form.id && this.$delete(this.form, "id");
},
// 编辑
onEdit(row) {
......@@ -136,23 +157,23 @@ export default {
this.form = { ...row };
let arr = [];
if (this.form.url) {
arr = this.form.url.split(',').map((v) => {
arr = this.form.url.split(",").map((v) => {
return {
value: v
value: v,
};
});
}
this.$set(this.form, 'urls', arr);
this.$set(this.form, "urls", arr);
}, 10);
},
// 重置
handleRest() {
this.$resetForm('form');
this.$set(this.form, 'urls', [{ value: '' }]);
this.$resetForm("form");
this.$set(this.form, "urls", [{ value: "" }]);
},
// 关闭
handleClose() {
this.$resetForm('form');
this.$resetForm("form");
this.Visible = false;
},
// 判断是否存在链接
......@@ -162,20 +183,20 @@ export default {
// 校验链接地址
validatorUrl(rule, value, callback) {
if (!value) {
callback(new Error('请输入链接'));
callback(new Error("请输入链接"));
} else if (this.isRepeat(value)) {
callback(new Error('重复的链接地址'));
callback(new Error("重复的链接地址"));
} else {
callback();
}
},
changeParams(index, type) {
if (type == 'add') {
if (type == "add") {
let obj = {
value: ''
value: "",
};
if (this.form.urls.some((v) => !v.value)) {
this.$message.warning('请先完成前面地址的填写');
this.$message.warning("请先完成前面地址的填写");
return;
}
this.form.urls.splice(index + 1, 0, obj);
......@@ -183,8 +204,8 @@ export default {
this.form.urls.splice(index, 1);
}
// this.$forceUpdate();
}
}
},
},
};
</script>
......
......@@ -173,7 +173,7 @@ router.beforeEach((to, from, next) => {
});
// 过滤菜单
function menusFilter(arr) {
export function menusFilter(arr) {
let router = arr.filter((v) => {
if (!v.hidden) {
if (v.children) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment