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

perf: 优化跳转

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