mirror of
https://gitee.com/hzy6/HzyAdmin.git
synced 2025-12-06 08:39:07 +08:00
优化前端ui主题皮肤
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
import {defineComponent, computed} from "vue";
|
||||
import {ConfigProvider, Spin} from "ant-design-vue";
|
||||
import { defineComponent, computed } from "vue";
|
||||
import { ConfigProvider, Spin } from "ant-design-vue";
|
||||
import AppStore from "@/core/store/AppStore.js";
|
||||
import zhCN from "ant-design-vue/es/locale/zh_CN";
|
||||
import enUS from "ant-design-vue/es/locale/en_US";
|
||||
import dayjs from "dayjs";
|
||||
import "dayjs/locale/zh-cn";
|
||||
import ThemeStore, {TokenTheme} from "@/core/store/layouts/ThemeStore.js";
|
||||
import ThemeStore from "@/core/store/layouts/ThemeStore.js";
|
||||
import HeaderStore from "@/core/store/layouts/HeaderStore.js";
|
||||
import CoreStore from "@/core/store/layouts/CoreStore";
|
||||
|
||||
@@ -20,12 +20,12 @@ export default defineComponent({
|
||||
|
||||
let colorItemBgSelectedObject = computed(() => {
|
||||
return JSON.stringify(themeStore.state.menuTheme) == "{}" ? {} : {
|
||||
colorItemBgSelected: themeStore.state.tokenTheme!.colorPrimary ?? new TokenTheme().colorPrimary
|
||||
colorItemBgSelected: themeStore.state.tokenTheme!.colorPrimary
|
||||
}
|
||||
})
|
||||
|
||||
let layoutColorBgHeader = computed(() => {
|
||||
return headerStore.state.useColorPrimary ? {colorBgHeader: themeStore.state.tokenTheme?.colorPrimary} : {colorBgHeader: 'transparent'}
|
||||
return headerStore.state.useColorPrimary ? { colorBgHeader: themeStore.state.tokenTheme?.colorPrimary } : { colorBgHeader: 'transparent' }
|
||||
})
|
||||
|
||||
// 计算国际化
|
||||
@@ -42,9 +42,7 @@ export default defineComponent({
|
||||
<ConfigProvider
|
||||
locale={locale.value}
|
||||
theme={{
|
||||
token: {
|
||||
...themeStore.state.tokenTheme,
|
||||
},
|
||||
token: themeStore.state.tokenTheme,
|
||||
components: {
|
||||
Menu: {
|
||||
...themeStore.state.menuTheme,
|
||||
@@ -58,7 +56,7 @@ export default defineComponent({
|
||||
}}>
|
||||
{/* <div class="bg" style={{ backgroundImage: 'url(' + themeStore.bgImageList[themeStore.state.backgroundImageIndex] + ')' }}> */}
|
||||
<Spin spinning={loading.value}>
|
||||
<div style={{"min-height": "200px"}}>
|
||||
<div style={{ "min-height": "200px" }}>
|
||||
<router-view></router-view>
|
||||
</div>
|
||||
</Spin>
|
||||
|
||||
@@ -74,26 +74,29 @@ function handlePaths() {
|
||||
|
||||
<template>
|
||||
<div v-if="props.show">
|
||||
<a-card :bordered="false" :bodyStyle="{ padding: 0 }">
|
||||
<div :class="{ 'pl-16 pr-16 pt-16 pb-16': !classPadding }" :style="{ background: themeStore.state.isDark ? '#141414' : '#fff', color: themeStore.state.isDark ? '#fff' : '' }">
|
||||
<slot name="nav">
|
||||
<a-breadcrumb>
|
||||
<a-breadcrumb-item v-for="item in navs">
|
||||
<AppIcon :name="item.icon" v-if="item.icon" />
|
||||
<span>{{ translate(`menu.${item.id}`, item.name) }}</span>
|
||||
</a-breadcrumb-item>
|
||||
</a-breadcrumb>
|
||||
</slot>
|
||||
<!-- <div class="mt-16">
|
||||
<div class="pt-16 pl-16 pr-16">
|
||||
<a-card :bordered="false" :bodyStyle="{ padding: 0 }">
|
||||
<div :class="{ 'pl-16 pr-16 pt-16 pb-16': !classPadding }">
|
||||
<slot name="nav">
|
||||
<a-breadcrumb>
|
||||
<a-breadcrumb-item v-for="item in navs">
|
||||
<AppIcon :name="item.icon" v-if="item.icon" />
|
||||
<span>{{ translate(`menu.${item.id}`, item.name) }}</span>
|
||||
</a-breadcrumb-item>
|
||||
</a-breadcrumb>
|
||||
</slot>
|
||||
<!-- <div class="mt-16">
|
||||
<span style="font-weight: bold; font-size: 20px; color: rgba(0, 0, 0, 0.85)">{{ router.currentRoute.value.meta.title }}</span>
|
||||
</div> -->
|
||||
<slot name="describe">
|
||||
<div class="mt-8" v-if="props.describe">
|
||||
<span>{{ props.describe }}</span>
|
||||
</div>
|
||||
</slot>
|
||||
</div>
|
||||
</a-card>
|
||||
<slot name="describe">
|
||||
<div class="mt-8" v-if="props.describe">
|
||||
<span>{{ props.describe }}</span>
|
||||
</div>
|
||||
</slot>
|
||||
</div>
|
||||
</a-card>
|
||||
</div>
|
||||
|
||||
<div :class="{ 'p-16': !bodyClassPadding }" :style="{ ...(props.bodyStyle ?? {}) }">
|
||||
<slot></slot>
|
||||
</div>
|
||||
@@ -102,4 +105,3 @@ function handlePaths() {
|
||||
<slot></slot>
|
||||
</div>
|
||||
</template>
|
||||
../router/index1
|
||||
|
||||
@@ -60,8 +60,8 @@ function jumpPro() {
|
||||
<div class="hzy-header-btn" @click="menuStore.onChangeCollapse(!menuStore.state.isCollapse)">
|
||||
<!-- <a-tooltip>
|
||||
<template #title>菜单收展</template>
|
||||
<AppIcon :name="menuStore.state.isCollapse ? 'MenuUnfoldOutlined' : 'MenuFoldOutlined'" :size="iconSize" />
|
||||
</a-tooltip> -->
|
||||
<AppIcon :name="menuStore.state.isCollapse ? 'MenuUnfoldOutlined' : 'MenuFoldOutlined'" :size="iconSize" />
|
||||
</a-tooltip> -->
|
||||
<AppIcon :name="menuStore.state.isCollapse ? 'MenuUnfoldOutlined' : 'MenuFoldOutlined'" :size="iconSize" />
|
||||
</div>
|
||||
<div style="flex: 1 1 0%; height: 100%; display: flex" v-if="menuStore.state.menuMode == EMenuMode.top">
|
||||
@@ -69,7 +69,9 @@ function jumpPro() {
|
||||
</div>
|
||||
<div style="flex: 1 1 0%" v-else></div>
|
||||
<!-- Pro -->
|
||||
<div class="hzy-header-btn text-danger" @click="jumpPro()" style="font-weight: bold" v-if="!coreStore.state.isMobile">Pro By React</div>
|
||||
<div class="hzy-header-btn text-danger" @click="jumpPro()" style="font-weight: bold"
|
||||
v-if="!coreStore.state.isMobile">
|
||||
Pro By React</div>
|
||||
<!-- HzyAdmin 文档 -->
|
||||
<a-tooltip>
|
||||
<template #title>HzyAdmin 文档</template>
|
||||
@@ -96,12 +98,12 @@ function jumpPro() {
|
||||
</div>
|
||||
</a-tooltip>
|
||||
|
||||
<!-- 暗黑 -->
|
||||
<!-- 白昼 / 黑夜 -->
|
||||
<a-tooltip>
|
||||
<template #title>暗黑</template>
|
||||
<template #title>白昼 / 黑夜</template>
|
||||
<div class="hzy-header-btn" @click="themeStore.changeTheme(!themeStore.state.isDark)">
|
||||
<AppIcon name="Sunny" :size="iconSize" v-if="themeStore.state.isDark" />
|
||||
<AppIcon name="MoonNight" :size="iconSize" v-else />
|
||||
<AppIcon name="MoonNight" :size="iconSize + 5" style="color:white" v-if="themeStore.state.isDark" />
|
||||
<AppIcon name="Sunny" :size="iconSize + 5" v-else />
|
||||
</div>
|
||||
</a-tooltip>
|
||||
|
||||
@@ -121,7 +123,9 @@ function jumpPro() {
|
||||
<template #overlay>
|
||||
<a-menu>
|
||||
<a-menu-item @click="logOut">
|
||||
<a href="javascript:;"> <AppIcon name="LogoutOutlined" /> 退出登录 </a>
|
||||
<a href="javascript:;">
|
||||
<AppIcon name="LogoutOutlined" /> 退出登录
|
||||
</a>
|
||||
</a-menu-item>
|
||||
</a-menu>
|
||||
</template>
|
||||
@@ -139,6 +143,7 @@ function jumpPro() {
|
||||
|
||||
<style lang="less">
|
||||
.hzy-layout {
|
||||
|
||||
//覆盖样式
|
||||
.ant-layout-header {
|
||||
position: relative;
|
||||
|
||||
@@ -87,15 +87,15 @@ let left = computed(() => {
|
||||
|
||||
.hzy-ground-glass {
|
||||
// 透明样式
|
||||
position: absolute;
|
||||
left: 0;
|
||||
right: 0;
|
||||
top: 0;
|
||||
//background-image: radial-gradient(transparent 1px, #ffffff 1px);
|
||||
background-size: 4px 4px;
|
||||
backdrop-filter: saturate(50%) blur(1px);
|
||||
-webkit-backdrop-filter: saturate(50%) blur(1px);
|
||||
box-shadow: 0 4px 4px #00152914;
|
||||
// position: absolute;
|
||||
// left: 0;
|
||||
// right: 0;
|
||||
// top: 0;
|
||||
// background-image: radial-gradient(transparent 1px, #ffffff 1px);
|
||||
// background-size: 4px 4px;
|
||||
// backdrop-filter: saturate(50%) blur(1px);
|
||||
// -webkit-backdrop-filter: saturate(50%) blur(1px);
|
||||
// box-shadow: 0 4px 4px #00152914;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,33 +4,88 @@ import MenuStore from "@/core/store/layouts/MenuStore";
|
||||
import HeaderStore from "@/core/store/layouts/HeaderStore";
|
||||
import SettingsStore from "@/core/store/layouts/SettingsStore";
|
||||
import ThemeStore from "@/core/store/layouts/ThemeStore";
|
||||
import AppIcon from "@/core/components/AppIcon.vue";
|
||||
|
||||
const layoutStore = LayoutStore();
|
||||
const menuStore = MenuStore();
|
||||
const headerStore = HeaderStore();
|
||||
const settingsStore = SettingsStore();
|
||||
const themeStore = ThemeStore();
|
||||
|
||||
// 取色器 防抖渲染
|
||||
function debounce(func: Function, wait: number) {
|
||||
let timeout: NodeJS.Timeout;
|
||||
return (...args: any[]) => {
|
||||
clearTimeout(timeout);
|
||||
timeout = setTimeout(() => func.apply(this, args), wait);
|
||||
};
|
||||
}
|
||||
|
||||
const changeColorPrimary = debounce((color:any) => {
|
||||
themeStore.changeColorPrimary(color);
|
||||
}, 1000);
|
||||
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<a-drawer class="hzy-settings" placement="right" width="350px" :closable="false" v-model:open="settingsStore.state.show">
|
||||
<a-drawer class="hzy-settings" placement="right" width="350px" :closable="false"
|
||||
v-model:open="settingsStore.state.show">
|
||||
|
||||
<a-divider>白昼 / 黑夜</a-divider>
|
||||
<div class="mt-24 text-center" style="
|
||||
display:flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
flex-wrap: nowrap;">
|
||||
<div @click="themeStore.changeTheme(!themeStore.state.isDark)"
|
||||
style="width: 80px; height: 80px; text-align: center; cursor: pointer;">
|
||||
<AppIcon name="MoonNight" :size="16" style="color:white" v-if="themeStore.state.isDark" />
|
||||
<AppIcon name="Sunny" :size="16" v-else />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a-divider>品牌色</a-divider>
|
||||
<div class="hzy-skin-list mb-5 text-center">
|
||||
<template v-for="(item, index) in themeStore.colorPrimaryList" :key="index">
|
||||
<div class="hzy-skin-item" :style="{ backgroundColor: item }" @click="themeStore.changeColorPrimary(item)"></div>
|
||||
<div class="hzy-skin-item" :style="{ backgroundColor: item.colorPrimary }"
|
||||
@click="themeStore.changeColorPrimary(item)"></div>
|
||||
</template>
|
||||
</div>
|
||||
<a-button block @click="headerStore.changeUseColorPrimary()">{{ headerStore.state.useColorPrimary ? "头部不使用品牌色" : "头部使用品牌色" }}</a-button>
|
||||
|
||||
<a-button block @click="headerStore.changeUseColorPrimary()">
|
||||
{{ headerStore.state.useColorPrimary ? "头部不使用品牌色" : "头部使用品牌色" }}
|
||||
</a-button>
|
||||
|
||||
<a-divider>基础文本 / 基础背景颜色</a-divider>
|
||||
<div class="mt-24 text-center">
|
||||
<div class="hzy-skin-list mb-5 text-center">
|
||||
<a-space>
|
||||
<a-button type="link">基础背景色</a-button>
|
||||
<a-input v-model:value="themeStore.state.tokenTheme!.colorBgBase" />
|
||||
<a-input type="color" :value="themeStore.state.tokenTheme!.colorBgBase"
|
||||
@change="e => changeColorPrimary({ colorBgBase: e.target.value })" style="width:80px" />
|
||||
</a-space>
|
||||
<a-space class="mt-5">
|
||||
<a-button type="link">基础文本色</a-button>
|
||||
<a-input v-model:value="themeStore.state.tokenTheme!.colorTextBase" />
|
||||
<a-input type="color" :value="themeStore.state.tokenTheme!.colorTextBase"
|
||||
@change="e => changeColorPrimary({ colorTextBase: e.target.value })" style="width:80px" />
|
||||
</a-space>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a-divider>菜单颜色</a-divider>
|
||||
<div class="mt-16 text-center">
|
||||
<div class="mt-24 text-center">
|
||||
<div class="hzy-skin-list mb-5 text-center">
|
||||
<template v-for="(item, index) in themeStore.menuThemeList" :key="index">
|
||||
<div class="hzy-skin-item" style="border: 1px solid #67c23a" :style="{ backgroundColor: item.colorItemBg }" @click="themeStore.changeMenuTheme(index)"></div>
|
||||
<div class="hzy-skin-item" style="border: 1px solid #67c23a" :style="{ backgroundColor: item.colorItemBg }"
|
||||
@click="themeStore.changeMenuTheme(index)"></div>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a-divider v-if="!layoutStore.state.isMobile">菜单栏模式</a-divider>
|
||||
<div class="mt-16 text-center" v-if="!layoutStore.state.isMobile">
|
||||
<div class="mt-24 text-center" v-if="!layoutStore.state.isMobile">
|
||||
<a-radio-group name="radioGroup" defaultValue="1" v-model:value="menuStore.state.menuMode">
|
||||
<a-radio value="1">默认</a-radio>
|
||||
<a-radio value="2">顶部</a-radio>
|
||||
@@ -47,6 +102,7 @@ const themeStore = ThemeStore();
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: center;
|
||||
|
||||
.hzy-skin-item {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
|
||||
@@ -26,4 +26,8 @@ const _style = computed(() => {
|
||||
<LayoutOneLevelMenu v-if="menuStore.state.menuMode == EMenuMode.left" />
|
||||
<LayoutMenuPcVue />
|
||||
</div>
|
||||
<!-- <template v-else>
|
||||
<LayoutOneLevelMenu v-if="menuStore.state.menuMode == EMenuMode.left" />
|
||||
<LayoutMenuPcVue />
|
||||
</template> -->
|
||||
</template>
|
||||
|
||||
@@ -74,7 +74,8 @@ onMounted(() => {
|
||||
<template #title>
|
||||
{{ translate(`menu.${item.id}`, item.name) }}
|
||||
</template>
|
||||
<li :key="methods.getJumpUrl(item)" :class="{ active: methods.getJumpUrl(item) == state.selectedKey }" @click="methods.onMenuSelected(methods.getJumpUrl(item))">
|
||||
<li :key="methods.getJumpUrl(item)" :class="{ active: methods.getJumpUrl(item) == state.selectedKey }"
|
||||
@click="methods.onMenuSelected(methods.getJumpUrl(item))">
|
||||
<AppIcon :name="item.icon" :size="22" />
|
||||
<div class="mt-8">
|
||||
{{ translate(`menu.${item.id}`, item.name) }}
|
||||
@@ -86,12 +87,9 @@ onMounted(() => {
|
||||
</div>
|
||||
<!-- 顶部模式 -->
|
||||
<ul class="hzy-one-nav" v-if="menuStore.state.menuMode == EMenuMode.top">
|
||||
<li
|
||||
v-for="item in appStore.state.oneLevels"
|
||||
:key="methods.getJumpUrl(item)"
|
||||
<li v-for="item in appStore.state.oneLevels" :key="methods.getJumpUrl(item)"
|
||||
:class="{ active: methods.getJumpUrl(item) == state.selectedKey }"
|
||||
@click="methods.onMenuSelected(methods.getJumpUrl(item))"
|
||||
>
|
||||
@click="methods.onMenuSelected(methods.getJumpUrl(item))">
|
||||
<div class="menu-item">
|
||||
<AppIcon :name="item.icon" :size="16" v-if="item.icon" />
|
||||
<div class="ml-5">{{ translate(`menu.${item.id}`, item.name) }}</div>
|
||||
@@ -105,7 +103,7 @@ onMounted(() => {
|
||||
background-color: #000000;
|
||||
z-index: 7;
|
||||
box-shadow: 8px 0px 2px 0 rgba(0, 0, 0, 0.1);
|
||||
width: v-bind("menuStore.state.leftModeWidth+'px'");
|
||||
width: v-bind("menuStore.state.leftModeWidth + 'px'");
|
||||
|
||||
ul {
|
||||
margin: 0;
|
||||
@@ -122,7 +120,8 @@ onMounted(() => {
|
||||
}
|
||||
|
||||
.active {
|
||||
background: v-bind("themeStore.state.tokenTheme?.colorPrimary");
|
||||
// background: v-bind("themeStore.state.tokenTheme?.colorBgLayout");
|
||||
color: v-bind('themeStore.state.tokenTheme?.colorPrimary') !important;
|
||||
//
|
||||
transition: background-color 0.1s;
|
||||
-moz-transition: background-color 0.1s;
|
||||
@@ -133,12 +132,13 @@ onMounted(() => {
|
||||
}
|
||||
|
||||
li:hover {
|
||||
background: v-bind("themeStore.state.tokenTheme?.colorPrimary");
|
||||
// background: v-bind("themeStore.state.tokenTheme?.colorBgLayout");
|
||||
color: v-bind('themeStore.state.tokenTheme?.colorPrimary') !important;
|
||||
}
|
||||
}
|
||||
|
||||
* {
|
||||
color: #e5e7eb !important;
|
||||
// color: #e5e7eb !important;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -175,19 +175,21 @@ onMounted(() => {
|
||||
|
||||
.active {
|
||||
.menu-item {
|
||||
background: v-bind("themeStore.state.tokenTheme?.colorPrimary");
|
||||
// background: v-bind("themeStore.state.tokenTheme?.colorBgLayout");
|
||||
color: v-bind('themeStore.state.tokenTheme?.colorPrimary') !important;
|
||||
|
||||
* {
|
||||
color: #e5e7eb !important;
|
||||
// color: #e5e7eb !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.menu-item:hover {
|
||||
background: v-bind("themeStore.state.tokenTheme?.colorPrimary");
|
||||
// background: v-bind("themeStore.state.tokenTheme?.colorBgLayout");
|
||||
color: v-bind('themeStore.state.tokenTheme?.colorPrimary') !important;
|
||||
|
||||
* {
|
||||
color: #e5e7eb !important;
|
||||
// color: #e5e7eb !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
import {defineStore} from "pinia";
|
||||
import {computed, reactive, onMounted, Ref} from "vue";
|
||||
import {theme as antdTheme} from "ant-design-vue";
|
||||
import { defineStore } from "pinia";
|
||||
import { computed, reactive, onMounted, Ref } from "vue";
|
||||
import { theme as antdTheme } from "ant-design-vue";
|
||||
import AppConsts from "@/utils/AppConsts.js";
|
||||
import {FullToken, UseComponentStyleResult} from "ant-design-vue/es/theme/internal";
|
||||
import { AliasToken } from "ant-design-vue/es/theme/internal";
|
||||
import { MappingAlgorithm } from "ant-design-vue/es/config-provider/context";
|
||||
// import Img0 from "@/assets/images/login-1.jpg";
|
||||
// import Img1 from "@/assets/images/bg-1.jpg";
|
||||
// import Img2 from "@/assets/images/bg-2.jpg";
|
||||
@@ -27,7 +28,7 @@ interface IState {
|
||||
/**
|
||||
* 全局 主题
|
||||
*/
|
||||
tokenTheme?: TokenTheme;
|
||||
tokenTheme?: AliasToken;
|
||||
/**
|
||||
* 菜单主题
|
||||
*/
|
||||
@@ -38,19 +39,6 @@ interface IState {
|
||||
backgroundImageIndex: number;
|
||||
}
|
||||
|
||||
export class TokenTheme {
|
||||
colorPrimary: string = "#2f54eb";
|
||||
//
|
||||
// colorBgLayout: "red",
|
||||
// paddingXXS: 16,
|
||||
// paddingXS: 16,
|
||||
// paddingSM: 16,
|
||||
// padding: 16,
|
||||
// paddingMD: 16,
|
||||
// paddingLG: 16,
|
||||
// paddingXL: 16,
|
||||
}
|
||||
|
||||
/**
|
||||
* 菜单主题接口
|
||||
*/
|
||||
@@ -74,8 +62,9 @@ interface IMenuTheme {
|
||||
}
|
||||
|
||||
export default defineStore("ThemeStore", () => {
|
||||
var tokenTheme = new TokenTheme();
|
||||
var tokenTheme = {} as AliasToken;
|
||||
|
||||
// 菜单主题集合
|
||||
const menuThemeList: IMenuTheme[] = [
|
||||
// 白色
|
||||
{},
|
||||
@@ -112,7 +101,86 @@ export default defineStore("ThemeStore", () => {
|
||||
];
|
||||
|
||||
// 品牌色集合
|
||||
const colorPrimaryList: string[] = ["#2f54eb", "#1677FF", "#5A54F9", "#9E339F", "#ED4192", "#E0282E", "#F4801A", "#F2BD27", "#00B96B", "#393D49", "#009688", "#63BA79"];
|
||||
const colorPrimaryList: AliasToken[] = [
|
||||
{
|
||||
colorPrimary: "#2f54eb",
|
||||
colorLink: "#2f54eb",
|
||||
colorLinkHover: "#2f54eb",
|
||||
colorLinkActive: "#2f54eb"
|
||||
} as AliasToken,
|
||||
{
|
||||
colorPrimary: "#1677FF",
|
||||
colorLink: "#1677FF",
|
||||
colorLinkHover: "#1677FF",
|
||||
colorLinkActive: "#1677FF",
|
||||
} as AliasToken,
|
||||
{
|
||||
colorPrimary: "#5A54F9",
|
||||
colorLink: "#5A54F9",
|
||||
colorLinkHover: "#5A54F9",
|
||||
colorLinkActive: "#5A54F9",
|
||||
} as AliasToken,
|
||||
{
|
||||
colorPrimary: "#9E339F",
|
||||
colorLink: "#9E339F",
|
||||
colorLinkHover: "#9E339F",
|
||||
colorLinkActive: "#9E339F",
|
||||
} as AliasToken,
|
||||
{
|
||||
colorPrimary: "#ED4192",
|
||||
colorLink: "#ED4192",
|
||||
colorLinkHover: "#ED4192",
|
||||
colorLinkActive: "#ED4192",
|
||||
} as AliasToken,
|
||||
{
|
||||
colorPrimary: "#E0282E",
|
||||
colorLink: "#E0282E",
|
||||
colorLinkHover: "#E0282E",
|
||||
colorLinkActive: "#E0282E",
|
||||
} as AliasToken,
|
||||
{
|
||||
colorPrimary: "#F4801A",
|
||||
colorLink: "#F4801A",
|
||||
colorLinkHover: "#F4801A",
|
||||
colorLinkActive: "#F4801A",
|
||||
} as AliasToken,
|
||||
{
|
||||
colorPrimary: "#f0e04b",
|
||||
colorLink: "#f0e04b",
|
||||
colorLinkHover: "#f0e04b",
|
||||
colorLinkActive: "#f0e04b",
|
||||
} as AliasToken,
|
||||
{
|
||||
colorPrimary: "#F2BD27",
|
||||
colorLink: "#F2BD27",
|
||||
colorLinkHover: "#F2BD27",
|
||||
colorLinkActive: "#F2BD27",
|
||||
} as AliasToken,
|
||||
{
|
||||
colorPrimary: "#00B96B",
|
||||
colorLink: "#00B96B",
|
||||
colorLinkHover: "#00B96B",
|
||||
colorLinkActive: "#00B96B",
|
||||
} as AliasToken,
|
||||
{
|
||||
colorPrimary: "#393D49",
|
||||
colorLink: "#393D49",
|
||||
colorLinkHover: "#393D49",
|
||||
colorLinkActive: "#393D49",
|
||||
} as AliasToken,
|
||||
{
|
||||
colorPrimary: "#009688",
|
||||
colorLink: "#009688",
|
||||
colorLinkHover: "#009688",
|
||||
colorLinkActive: "#009688",
|
||||
} as AliasToken,
|
||||
{
|
||||
colorPrimary: "#63BA79",
|
||||
colorLink: "#63BA79",
|
||||
colorLinkHover: "#63BA79",
|
||||
colorLinkActive: "#63BA79",
|
||||
} as AliasToken
|
||||
];
|
||||
|
||||
// /**
|
||||
// * 背景图片
|
||||
@@ -148,19 +216,23 @@ export default defineStore("ThemeStore", () => {
|
||||
state.isDark = isDark;
|
||||
let colorPrimary = ThemeCacheUtil.getColorPrimary();
|
||||
if (colorPrimary) {
|
||||
state.tokenTheme!.colorPrimary = colorPrimary;
|
||||
state.tokenTheme! = colorPrimary;
|
||||
}
|
||||
});
|
||||
|
||||
// 主题 类型 MappingAlgorithm
|
||||
|
||||
//
|
||||
const getAlgorithm = (themes: ThemeName[] = []) =>
|
||||
themes.map((theme) => {
|
||||
if (theme === "dark") {
|
||||
return antdTheme.darkAlgorithm;
|
||||
}
|
||||
|
||||
if (theme === "compact") {
|
||||
return antdTheme.compactAlgorithm;
|
||||
return antdTheme.compactAlgorithm
|
||||
}
|
||||
|
||||
return antdTheme.defaultAlgorithm;
|
||||
});
|
||||
|
||||
@@ -172,6 +244,11 @@ export default defineStore("ThemeStore", () => {
|
||||
*/
|
||||
function changeTheme(isDark: boolean) {
|
||||
state.isDark = isDark;
|
||||
// 重置背景色,前景色
|
||||
changeColorPrimary({
|
||||
colorBgBase: "",
|
||||
colorTextBase: ""
|
||||
} as AliasToken);
|
||||
ThemeCacheUtil.setIsDark(isDark);
|
||||
}
|
||||
|
||||
@@ -187,9 +264,9 @@ export default defineStore("ThemeStore", () => {
|
||||
/**
|
||||
* 改变主色 品牌色
|
||||
*/
|
||||
function changeColorPrimary(color: string) {
|
||||
state.tokenTheme!.colorPrimary = color;
|
||||
ThemeCacheUtil.setColorPrimary(color);
|
||||
function changeColorPrimary(color: AliasToken) {
|
||||
state.tokenTheme! = { ...state.tokenTheme!, ...color };
|
||||
ThemeCacheUtil.setColorPrimary(state.tokenTheme);
|
||||
}
|
||||
|
||||
return {
|
||||
@@ -246,16 +323,24 @@ class ThemeCacheUtil {
|
||||
/**
|
||||
* 保存品牌色
|
||||
*/
|
||||
static setColorPrimary(color: string) {
|
||||
localStorage.setItem(`${AppConsts.appPrefix}_color_primary`, color);
|
||||
static setColorPrimary(color: AliasToken) {
|
||||
localStorage.setItem(`${AppConsts.appPrefix}_color_primary`, JSON.stringify(color));
|
||||
}
|
||||
|
||||
/**
|
||||
* 读取品牌色
|
||||
* @returns
|
||||
*/
|
||||
static getColorPrimary() {
|
||||
static getColorPrimary(): AliasToken | null {
|
||||
var result = localStorage.getItem(`${AppConsts.appPrefix}_color_primary`);
|
||||
return result;
|
||||
if (!result) {
|
||||
return null;
|
||||
}
|
||||
|
||||
try {
|
||||
return JSON.parse(result) as AliasToken;
|
||||
} catch (error) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -271,7 +271,7 @@ function jumpDetails(row: any) {
|
||||
新建
|
||||
</a-button>
|
||||
<a-popconfirm title="您确定要删除?" @confirm="deleteList()" okText="确定" cancelText="取消" v-if="power.delete">
|
||||
<a-button type="primary" danger>
|
||||
<a-button danger>
|
||||
<template #icon>
|
||||
<AppIcon name="DeleteOutlined" />
|
||||
</template>
|
||||
@@ -311,10 +311,10 @@ function jumpDetails(row: any) {
|
||||
<a href="javascript:void(0)" @click="jumpDetails(record)">详情</a>
|
||||
</template>
|
||||
<a-divider type="vertical" />
|
||||
<a href="javascript:;" @click="() => refInfo?.open(record.id)" v-if="power.update">编辑</a>
|
||||
<a-button type="link" href="javascript:;" @click="() => refInfo?.open(record.id)" v-if="power.update">编辑</a-button>
|
||||
<a-divider type="vertical" />
|
||||
<a-popconfirm title="您确定要删除?" @confirm="deleteList(record.id)" okText="确定" cancelText="取消" v-if="power.delete">
|
||||
<a class="text-danger">删除</a>
|
||||
<a-button type="link" danger>删除</a-button>
|
||||
</a-popconfirm>
|
||||
</template>
|
||||
</a-table-column>
|
||||
|
||||
@@ -208,7 +208,7 @@ function openTableEditor() {
|
||||
|
||||
<!-- 批量删除 -->
|
||||
<a-popconfirm title="您确定要删除?" @confirm="deleteList()" okText="确定" cancelText="取消">
|
||||
<a-button type="primary" danger>
|
||||
<a-button danger>
|
||||
<template #icon>
|
||||
<AppIcon name="DeleteOutlined" />
|
||||
</template>
|
||||
@@ -246,7 +246,7 @@ function openTableEditor() {
|
||||
<a href="javascript:;" @click="() => refInfo?.open(record)">配置</a>
|
||||
<a-divider type="vertical" />
|
||||
<a-popconfirm title="您确定要删除?" @confirm="deleteList(record.id)" okText="确定" cancelText="取消">
|
||||
<a class="text-danger">删除</a>
|
||||
<a-button type="link" danger>删除</a-button>
|
||||
</a-popconfirm>
|
||||
</template>
|
||||
</a-table-column>
|
||||
|
||||
@@ -249,7 +249,7 @@ function change() {
|
||||
<a-table-column title="操作" data-index="id">
|
||||
<template #default="{ record }">
|
||||
<a-popconfirm title="您确定要删除?" @confirm="deleteList(record.id)" okText="确定" cancelText="取消">
|
||||
<a class="text-danger">删除</a>
|
||||
<a-button type="link" danger>删除</a-button>
|
||||
</a-popconfirm>
|
||||
</template>
|
||||
</a-table-column>
|
||||
|
||||
@@ -216,7 +216,7 @@ function openForm(id: string) {
|
||||
新建
|
||||
</a-button>
|
||||
<a-popconfirm title="您确定要删除?" @confirm="deleteList()" okText="确定" cancelText="取消">
|
||||
<a-button type="primary" danger>
|
||||
<a-button danger>
|
||||
<template #icon>
|
||||
<AppIcon name="DeleteOutlined"/>
|
||||
</template>
|
||||
@@ -250,7 +250,7 @@ function openForm(id: string) {
|
||||
<a @click="openForm(record.id)">编辑</a>
|
||||
<a-divider type="vertical"/>
|
||||
<a-popconfirm title="您确定要删除?" @confirm="deleteList(record.id)" okText="确定" cancelText="取消">
|
||||
<a class="text-danger">删除</a>
|
||||
<a-button type="link" danger>删除</a-button>
|
||||
</a-popconfirm>
|
||||
</template>
|
||||
</a-table-column>
|
||||
|
||||
@@ -162,7 +162,7 @@ async function deleteList(id?: string) {
|
||||
新建
|
||||
</a-button>
|
||||
<a-popconfirm title="您确定要删除?" @confirm="deleteList()" okText="确定" cancelText="取消" v-if="power.delete">
|
||||
<a-button type="primary" danger>
|
||||
<a-button danger>
|
||||
<template #icon>
|
||||
<AppIcon name="DeleteOutlined" />
|
||||
</template>
|
||||
@@ -204,12 +204,12 @@ async function deleteList(id?: string) {
|
||||
<!-- 操作 -->
|
||||
<a-table-column title="操作" data-index="id" v-if="power.update || power.delete || power.insert">
|
||||
<template #default="{ record }">
|
||||
<a href="javascript:void(0)" @click="refInfo?.open(null, record.id)" v-if="power.insert">新建</a>
|
||||
<a-button type="link" @click="refInfo?.open(null, record.id)" v-if="power.insert">新建</a-button>
|
||||
<a-divider type="vertical" />
|
||||
<a href="javascript:;" @click="() => refInfo?.open(record.id, record.parentId)" v-if="power.update">编辑</a>
|
||||
<a-button type="link" @click="() => refInfo?.open(record.id, record.parentId)" v-if="power.update">编辑</a-button>
|
||||
<a-divider type="vertical" />
|
||||
<a-popconfirm title="您确定要删除?" @confirm="deleteList(record.id)" okText="确定" cancelText="取消" v-if="power.delete">
|
||||
<a class="text-danger">删除</a>
|
||||
<a-button type="link" danger>删除</a-button>
|
||||
</a-popconfirm>
|
||||
</template>
|
||||
</a-table-column>
|
||||
|
||||
@@ -220,7 +220,7 @@ function exportExcel() {
|
||||
新建
|
||||
</a-button>
|
||||
<a-popconfirm title="您确定要删除?" @confirm="deleteList()" okText="确定" cancelText="取消" v-if="power.delete">
|
||||
<a-button type="primary" danger>
|
||||
<a-button danger>
|
||||
<template #icon>
|
||||
<AppIcon name="DeleteOutlined"/>
|
||||
</template>
|
||||
@@ -247,11 +247,11 @@ function exportExcel() {
|
||||
<!-- 操作 -->
|
||||
<a-table-column v-bind="item" v-if="power.update || power.delete">
|
||||
<template #default="{ record }">
|
||||
<a href="javascript:;" @click="() => refInfo?.open(record.id)" v-if="power.update">编辑</a>
|
||||
<a-button type="link" href="javascript:;" @click="() => refInfo?.open(record.id)" v-if="power.update">编辑</a-button>
|
||||
<a-divider type="vertical"/>
|
||||
<a-popconfirm title="您确定要删除?" @confirm="deleteList(record.id)" okText="确定" cancelText="取消"
|
||||
v-if="power.delete">
|
||||
<a class="text-danger">删除</a>
|
||||
<a-button type="link" danger>删除</a-button>
|
||||
</a-popconfirm>
|
||||
</template>
|
||||
</a-table-column>
|
||||
|
||||
@@ -192,7 +192,7 @@ function openGlobalNameJson() {
|
||||
新建
|
||||
</a-button>
|
||||
<a-popconfirm title="您确定要删除?" @confirm="deleteList()" okText="确定" cancelText="取消" v-if="power.delete">
|
||||
<a-button type="primary" danger>
|
||||
<a-button danger>
|
||||
<template #icon>
|
||||
<AppIcon name="DeleteOutlined"/>
|
||||
</template>
|
||||
@@ -247,15 +247,15 @@ function openGlobalNameJson() {
|
||||
<!-- 操作 -->
|
||||
<a-table-column title="操作" data-index="id" v-if="power.update || power.delete || power.insert">
|
||||
<template #default="{ record }">
|
||||
<a href="javascript:void(0)" @click="refInfo?.open(null, record.id)" v-if="power.insert">新建</a>
|
||||
<a-button type="link" @click="refInfo?.open(null, record.id)" v-if="power.insert">新建</a-button>
|
||||
<a-divider type="vertical"/>
|
||||
<a href="javascript:;" @click="() => refInfo?.open(record.id, record.parentId)" v-if="power.update">编辑</a>
|
||||
<a-button type="link" @click="() => refInfo?.open(record.id, record.parentId)" v-if="power.update">编辑</a-button>
|
||||
<a-divider type="vertical"/>
|
||||
<a href="javascript:;" @click="() => copyMenu(record.id)" v-if="power.update">复制</a>
|
||||
<a-button type="link" @click="() => copyMenu(record.id)" v-if="power.update">复制</a-button>
|
||||
<a-divider type="vertical"/>
|
||||
<a-popconfirm title="您确定要删除?" @confirm="deleteList(record.id)" okText="确定" cancelText="取消"
|
||||
v-if="power.delete">
|
||||
<a class="text-danger">删除</a>
|
||||
<a-button type="link" danger>删除</a-button>
|
||||
</a-popconfirm>
|
||||
</template>
|
||||
</a-table-column>
|
||||
|
||||
@@ -186,7 +186,7 @@ async function deleteList(id?: string) {
|
||||
新建
|
||||
</a-button>
|
||||
<a-popconfirm title="您确定要删除?" @confirm="deleteList()" okText="确定" cancelText="取消" v-if="power.delete">
|
||||
<a-button type="primary" danger>
|
||||
<a-button danger>
|
||||
<template #icon>
|
||||
<AppIcon name="DeleteOutlined" />
|
||||
</template>
|
||||
@@ -207,9 +207,9 @@ async function deleteList(id?: string) {
|
||||
</template>
|
||||
<!-- table-col -->
|
||||
<template #table-col>
|
||||
<a-table-column title="接口地址" data-index="api" :width="250" :ellipsis="true" fixed="left" />
|
||||
<a-table-column title="操作系统" data-index="os" :width="100" />
|
||||
<a-table-column title="浏览器" data-index="browser" :width="100" />
|
||||
<a-table-column title="接口地址" data-index="api" :width="200" :ellipsis="true" fixed="left" />
|
||||
<a-table-column title="操作系统" data-index="os" :width="150" />
|
||||
<a-table-column title="浏览器" data-index="browser" :width="110" />
|
||||
<a-table-column title="ip地址" data-index="ip" :width="120" />
|
||||
<a-table-column title="接口描述" :width="200">
|
||||
<template #default="{ record }">
|
||||
@@ -227,14 +227,14 @@ async function deleteList(id?: string) {
|
||||
</a-table-column>
|
||||
<a-table-column title="操作人姓名" data-index="userName" :width="100" />
|
||||
<a-table-column title="操作人账号" data-index="loginName" :width="100" />
|
||||
<a-table-column title="创建时间" data-index="creationTime" :width="150" />
|
||||
<a-table-column title="创建时间" data-index="creationTime" :width="160" />
|
||||
<!-- 操作 -->
|
||||
<a-table-column title="操作" data-index="id" :width="100">
|
||||
<a-table-column title="操作" data-index="id" :width="160">
|
||||
<template #default="{ record }">
|
||||
<a href="javascript:;" @click="() => refInfo?.open(record.id)">详情</a>
|
||||
<a-button type="link" @click="() => refInfo?.open(record.id)">详情</a-button>
|
||||
<a-divider type="vertical" />
|
||||
<a-popconfirm title="您确定要删除?" @confirm="deleteList(record.id)" okText="确定" cancelText="取消" v-if="power.delete">
|
||||
<a class="text-danger">删除</a>
|
||||
<a-button type="link" danger>删除</a-button>
|
||||
</a-popconfirm>
|
||||
</template>
|
||||
</a-table-column>
|
||||
|
||||
@@ -162,7 +162,7 @@ async function deleteList(id?: string) {
|
||||
新建
|
||||
</a-button>
|
||||
<a-popconfirm title="您确定要删除?" @confirm="deleteList()" okText="确定" cancelText="取消" v-if="power.delete">
|
||||
<a-button type="primary" danger>
|
||||
<a-button danger>
|
||||
<template #icon>
|
||||
<AppIcon name="DeleteOutlined" />
|
||||
</template>
|
||||
@@ -208,12 +208,12 @@ async function deleteList(id?: string) {
|
||||
<!-- 操作 -->
|
||||
<a-table-column title="操作" data-index="id" v-if="power.update || power.delete || power.insert">
|
||||
<template #default="{ record }">
|
||||
<a href="javascript:void(0)" @click="refInfo?.open(null, record.id)" v-if="power.insert">新建</a>
|
||||
<a-button type="link" @click="refInfo?.open(null, record.id)" v-if="power.insert">新建</a-button>
|
||||
<a-divider type="vertical" />
|
||||
<a href="javascript:;" @click="() => refInfo?.open(record.id, record.parentId)" v-if="power.update">编辑</a>
|
||||
<a-button type="link" @click="() => refInfo?.open(record.id, record.parentId)" v-if="power.update">编辑</a-button>
|
||||
<a-divider type="vertical" />
|
||||
<a-popconfirm title="您确定要删除?" @confirm="deleteList(record.id)" okText="确定" cancelText="取消" v-if="power.delete">
|
||||
<a class="text-danger">删除</a>
|
||||
<a-button type="link" danger>删除</a-button>
|
||||
</a-popconfirm>
|
||||
</template>
|
||||
</a-table-column>
|
||||
|
||||
@@ -228,7 +228,7 @@ function exportExcel() {
|
||||
新建
|
||||
</a-button>
|
||||
<a-popconfirm title="您确定要删除?" @confirm="deleteList()" okText="确定" cancelText="取消" v-if="power.delete">
|
||||
<a-button type="primary" danger>
|
||||
<a-button danger>
|
||||
<template #icon>
|
||||
<AppIcon name="DeleteOutlined"/>
|
||||
</template>
|
||||
@@ -263,11 +263,11 @@ function exportExcel() {
|
||||
<!-- 操作 -->
|
||||
<a-table-column v-bind="item" v-if="power.update || power.delete">
|
||||
<template #default="{ record }">
|
||||
<a href="javascript:;" @click="() => refInfo?.open(record.id)" v-if="power.update">编辑</a>
|
||||
<a-button type="link" href="javascript:;" @click="() => refInfo?.open(record.id)" v-if="power.update">编辑</a-button>
|
||||
<a-divider type="vertical"/>
|
||||
<a-popconfirm title="您确定要删除?" @confirm="deleteList(record.id)" okText="确定" cancelText="取消"
|
||||
v-if="power.delete">
|
||||
<a class="text-danger">删除</a>
|
||||
<a-button type="link" danger>删除</a-button>
|
||||
</a-popconfirm>
|
||||
</template>
|
||||
</a-table-column>
|
||||
|
||||
@@ -248,7 +248,7 @@ function exportExcel() {
|
||||
新建
|
||||
</a-button>
|
||||
<a-popconfirm title="您确定要删除?" @confirm="deleteList()" okText="确定" cancelText="取消" v-if="power.delete">
|
||||
<a-button type="primary" danger>
|
||||
<a-button danger>
|
||||
<template #icon>
|
||||
<AppIcon name="DeleteOutlined"/>
|
||||
</template>
|
||||
@@ -294,11 +294,11 @@ function exportExcel() {
|
||||
<!-- 操作 -->
|
||||
<a-table-column v-bind="item">
|
||||
<template #default="{ record }">
|
||||
<a href="javascript:;" @click="() => refInfo?.open(record.id)" v-if="power.update">编辑</a>
|
||||
<a-button type="link" href="javascript:;" @click="() => refInfo?.open(record.id)" v-if="power.update">编辑</a-button>
|
||||
<a-divider type="vertical"/>
|
||||
<a-popconfirm title="您确定要删除?" @confirm="deleteList(record.id)" okText="确定" cancelText="取消"
|
||||
v-if="power.delete">
|
||||
<a class="text-danger">删除</a>
|
||||
<a-button type="link" danger>删除</a-button>
|
||||
</a-popconfirm>
|
||||
<a-divider type="vertical"/>
|
||||
<a href="javascript:;" @click="() => refFunctionAuthority?.open(record.id)">功能权限</a>
|
||||
|
||||
@@ -262,25 +262,18 @@ findBackMethods.initRows();
|
||||
|
||||
<template>
|
||||
<PageContainer :show="!$props.isFindBack">
|
||||
<TableCurd
|
||||
ref="refTableCurd"
|
||||
v-model:config="state"
|
||||
@change="
|
||||
(changeTable) => {
|
||||
state.page = changeTable.pagination.current ?? 1;
|
||||
state.size = changeTable.pagination.pageSize ?? state.size;
|
||||
state.search.sort = changeTable.sorter instanceof Array ? [...changeTable.sorter] : [changeTable.sorter];
|
||||
findList();
|
||||
}
|
||||
"
|
||||
@show-size-change="
|
||||
({ current, size }) => {
|
||||
state.page = current == 0 ? 1 : current;
|
||||
state.size = size;
|
||||
findList();
|
||||
}
|
||||
"
|
||||
>
|
||||
<TableCurd ref="refTableCurd" v-model:config="state" @change="(changeTable) => {
|
||||
state.page = changeTable.pagination.current ?? 1;
|
||||
state.size = changeTable.pagination.pageSize ?? state.size;
|
||||
state.search.sort = changeTable.sorter instanceof Array ? [...changeTable.sorter] : [changeTable.sorter];
|
||||
findList();
|
||||
}
|
||||
" @show-size-change="({ current, size }) => {
|
||||
state.page = current == 0 ? 1 : current;
|
||||
state.size = size;
|
||||
findList();
|
||||
}
|
||||
">
|
||||
<!-- search -->
|
||||
<template #search>
|
||||
<a-form ref="refSearchForm" :model="state.search.vm" v-if="power.search">
|
||||
@@ -297,43 +290,30 @@ findBackMethods.initRows();
|
||||
</a-col>
|
||||
<a-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
|
||||
<a-form-item class="mb-0" name="organizationId" label="所属组织">
|
||||
<a-tree-select
|
||||
v-model:value="state.search.vm.organizationId"
|
||||
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
|
||||
placeholder="所属组织"
|
||||
allow-clear
|
||||
tree-default-expand-all
|
||||
show-search
|
||||
tree-node-filter-prop="name"
|
||||
:tree-data="organizationTree"
|
||||
<a-tree-select v-model:value="state.search.vm.organizationId"
|
||||
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }" placeholder="所属组织" allow-clear
|
||||
tree-default-expand-all show-search tree-node-filter-prop="name" :tree-data="organizationTree"
|
||||
:field-names="{
|
||||
children: 'children',
|
||||
label: 'name',
|
||||
value: 'id',
|
||||
}"
|
||||
class="w100"
|
||||
></a-tree-select>
|
||||
}" class="w100"></a-tree-select>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<!--button-->
|
||||
<a-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" class="text-right">
|
||||
<a-space :size="8">
|
||||
<a-button
|
||||
@click="
|
||||
state.page = 1;
|
||||
refSearchForm?.resetFields();
|
||||
findList();
|
||||
"
|
||||
>
|
||||
<a-button @click="
|
||||
state.page = 1;
|
||||
refSearchForm?.resetFields();
|
||||
findList();
|
||||
">
|
||||
重置
|
||||
</a-button>
|
||||
<a-button
|
||||
type="primary"
|
||||
@click="
|
||||
state.page = 1;
|
||||
findList();
|
||||
"
|
||||
>
|
||||
<a-button type="primary" @click="
|
||||
state.page = 1;
|
||||
findList();
|
||||
">
|
||||
查询
|
||||
</a-button>
|
||||
</a-space>
|
||||
@@ -344,8 +324,12 @@ findBackMethods.initRows();
|
||||
<!-- toolbar-left -->
|
||||
<template #toolbar-left>
|
||||
<a-button @click="state.search.state = !state.search.state" v-if="power.search">
|
||||
<div v-if="state.search.state"><AppIcon name="UpOutlined" /> 收起</div>
|
||||
<div v-else><AppIcon name="DownOutlined" /> 展开</div>
|
||||
<div v-if="state.search.state">
|
||||
<AppIcon name="UpOutlined" /> 收起
|
||||
</div>
|
||||
<div v-else>
|
||||
<AppIcon name="DownOutlined" /> 展开
|
||||
</div>
|
||||
</a-button>
|
||||
<a-button type="primary" @click="() => refInfo?.open()" v-if="power.insert">
|
||||
<template #icon>
|
||||
@@ -354,7 +338,7 @@ findBackMethods.initRows();
|
||||
新建
|
||||
</a-button>
|
||||
<a-popconfirm title="您确定要删除?" @confirm="deleteList()" okText="确定" cancelText="取消" v-if="power.delete">
|
||||
<a-button type="primary" danger>
|
||||
<a-button danger>
|
||||
<template #icon>
|
||||
<AppIcon name="DeleteOutlined" />
|
||||
</template>
|
||||
@@ -391,10 +375,11 @@ findBackMethods.initRows();
|
||||
<!-- 操作 -->
|
||||
<a-table-column v-bind="item" v-if="power.update || power.delete">
|
||||
<template #default="{ record }">
|
||||
<a href="javascript:;" @click="() => refInfo?.open(record.id)" v-if="power.update">编辑</a>
|
||||
<a-button type="link" @click="() => refInfo?.open(record.id)" v-if="power.update">编辑</a-button>
|
||||
<a-divider type="vertical" />
|
||||
<a-popconfirm title="您确定要删除?" @confirm="deleteList(record.id)" okText="确定" cancelText="取消" v-if="power.delete">
|
||||
<a class="text-danger">删除</a>
|
||||
<a-popconfirm title="您确定要删除?" @confirm="deleteList(record.id)" okText="确定" cancelText="取消"
|
||||
v-if="power.delete">
|
||||
<a-button type="link" danger>删除</a-button>
|
||||
</a-popconfirm>
|
||||
</template>
|
||||
</a-table-column>
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -9,9 +9,30 @@
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="2860f50d-3889-4593-b97d-a875a552fade" name="Changes" comment="">
|
||||
<change beforePath="$PROJECT_DIR$/../admin-client/src/App.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/../admin-client/src/App.tsx" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../admin-client/src/core/components/PageContainer.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../admin-client/src/core/components/PageContainer.vue" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../admin-client/src/core/components/layouts/LayoutHeader.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../admin-client/src/core/components/layouts/LayoutHeader.vue" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../admin-client/src/core/components/layouts/LayoutMode1.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../admin-client/src/core/components/layouts/LayoutMode1.vue" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../admin-client/src/core/components/layouts/LayoutSettings.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../admin-client/src/core/components/layouts/LayoutSettings.vue" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../admin-client/src/core/components/layouts/LayoutSider.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../admin-client/src/core/components/layouts/LayoutSider.vue" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../admin-client/src/core/components/layouts/menus/LayoutMenuOneLevel.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../admin-client/src/core/components/layouts/menus/LayoutMenuOneLevel.vue" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../admin-client/src/core/store/layouts/ThemeStore.ts" beforeDir="false" afterPath="$PROJECT_DIR$/../admin-client/src/core/store/layouts/ThemeStore.ts" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../admin-client/src/views/base/member/Index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../admin-client/src/views/base/member/Index.vue" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../admin-client/src/views/development_tool/low_code/Index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../admin-client/src/views/development_tool/low_code/Index.vue" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../admin-client/src/views/development_tool/low_code/components/Columns.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../admin-client/src/views/development_tool/low_code/components/Columns.vue" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../admin-client/src/views/example/list/Index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../admin-client/src/views/example/list/Index.vue" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../admin-client/src/views/system/sys_dictionary/Index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../admin-client/src/views/system/sys_dictionary/Index.vue" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../admin-client/src/views/system/sys_function/Index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../admin-client/src/views/system/sys_function/Index.vue" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../admin-client/src/views/system/sys_menu/Index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../admin-client/src/views/system/sys_menu/Index.vue" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../admin-client/src/views/system/sys_operation_log/Index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../admin-client/src/views/system/sys_operation_log/Index.vue" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../admin-client/src/views/system/sys_organization/Index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../admin-client/src/views/system/sys_organization/Index.vue" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../admin-client/src/views/system/sys_post/Index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../admin-client/src/views/system/sys_post/Index.vue" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../admin-client/src/views/system/sys_role/Index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../admin-client/src/views/system/sys_role/Index.vue" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../admin-client/src/views/system/sys_user/Index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../admin-client/src/views/system/sys_user/Index.vue" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../admin-client/vite.config.ts.timestamp-1710149415062-83b284a445003.mjs" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/.idea.HZY.Admin/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/.idea.HZY.Admin/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/HZY.Api.Admin/Controllers/AdminControllerBase.cs" beforeDir="false" afterPath="$PROJECT_DIR$/HZY.Api.Admin/Controllers/AdminControllerBase.cs" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/HZY.Api.Admin/Models/ApplicationConst.cs" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/HZY.Api.Admin/HZY.Api.Admin.xml" beforeDir="false" afterPath="$PROJECT_DIR$/HZY.Api.Admin/HZY.Api.Admin.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/../doc/hzy_admin_sqlserver_20230227.sql" beforeDir="false" afterPath="$PROJECT_DIR$/../doc/hzy_admin_sqlserver_20230227.sql" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
@@ -32,17 +53,8 @@
|
||||
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/cce50c897b474f2086c294b066a3a1a722800/fa/b2ff7ad3/DefaultEntity.cs" root0="FORCE_HIGHLIGHTING" />
|
||||
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/bf9021a960b74107a7e141aa06bc9d8a0a53c929178c2fb95b1597be8af8dc/ExceptionDispatchInfo.cs" root0="FORCE_HIGHLIGHTING" />
|
||||
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/f0e62cf3fcafec12baaa8b324345dde874d42ef7eb3911f7d53153ee3f57cb3e/Controller.cs" root0="SKIP_HIGHLIGHTING" />
|
||||
<setting file="file://$PROJECT_DIR$/../../HZY.Framework/HZY.Framework.Repository.EntityFramework/Attributes/EntityDescriptionAttribute.cs" root0="SKIP_HIGHLIGHTING" />
|
||||
<setting file="file://$PROJECT_DIR$/../../HZY.Framework/HZY.Framework.Repository.EntityFramework/IRepository.cs" root0="SKIP_HIGHLIGHTING" />
|
||||
<setting file="mock:///Users/haozhiying/gitee/HzyAdmin/admin-server/HZY.Api.Admin/ApiAdminStartup.cs" root0="SKIP_HIGHLIGHTING" />
|
||||
<setting file="mock:///Users/haozhiying/gitee/HzyAdmin/admin-server/HZY.Api.Admin/ApiAdminStartup.cs" root0="SKIP_HIGHLIGHTING" />
|
||||
<setting file="mock:///Users/haozhiying/gitee/HzyAdmin/admin-server/HZY.Api.Admin/Controllers/DevelopmentTools/CodeGenerationController.cs" root0="SKIP_HIGHLIGHTING" />
|
||||
<setting file="mock:///Users/haozhiying/gitee/HzyAdmin/admin-server/HZY.Api.Admin/Controllers/Systems/PersonalCenterController.cs" root0="SKIP_HIGHLIGHTING" />
|
||||
<setting file="mock:///Users/haozhiying/gitee/HzyAdmin/admin-server/HZY.Api.Admin/GlobalUsings.cs" root0="SKIP_HIGHLIGHTING" />
|
||||
<setting file="mock:///Users/haozhiying/gitee/HzyAdmin/admin-server/HZY.Api.Admin/wwwroot/code_generation/template/tempController.cshtml" root0="FORCE_HIGHLIGHTING" root1="FORCE_HIGHLIGHTING" root2="SKIP_HIGHLIGHTING" />
|
||||
<setting file="mock:///Users/haozhiying/gitee/HzyAdmin/admin-server/HZY.Core/ApplicationServices/ApplicationService.cs" root0="SKIP_HIGHLIGHTING" />
|
||||
<setting file="mock:///Users/haozhiying/gitee/HzyAdmin/admin-server/HZY.Shared.Admin/ApplicationServices/ApplicationControllerBase.cs" root0="SKIP_HIGHLIGHTING" />
|
||||
<setting file="mock:///Users/haozhiying/gitee/HzyAdmin/admin-server/HZY.Shared.Admin/ApplicationServices/ApplicationService.cs" root0="SKIP_HIGHLIGHTING" />
|
||||
<setting file="mock:///Users/haozhiying/gitee/HzyAdmin/admin-server/HZY.Shared/AppStartupBaseCore.cs" root0="SKIP_HIGHLIGHTING" />
|
||||
</component>
|
||||
<component name="MetaFilesCheckinStateConfiguration" checkMetaFiles="true" />
|
||||
<component name="ProjectColorInfo">{
|
||||
@@ -124,7 +136,9 @@
|
||||
<workItem from="1728655661359" duration="1827000" />
|
||||
<workItem from="1728713368546" duration="62000" />
|
||||
<workItem from="1728744396430" duration="23200000" />
|
||||
<workItem from="1728898440919" duration="65000" />
|
||||
<workItem from="1728898440919" duration="96000" />
|
||||
<workItem from="1728969108855" duration="1050000" />
|
||||
<workItem from="1728970167165" duration="8142000" />
|
||||
</task>
|
||||
<task id="LOCAL-00001" summary="优化,修复,升级版本">
|
||||
<option name="closed" value="true" />
|
||||
@@ -214,7 +228,15 @@
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1728815109377</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="12" />
|
||||
<task id="LOCAL-00012" summary="优化路由模版的定义">
|
||||
<option name="closed" value="true" />
|
||||
<created>1728898525376</created>
|
||||
<option name="number" value="00012" />
|
||||
<option name="presentableId" value="LOCAL-00012" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1728898525376</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="13" />
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TypeScriptGeneratedFilesManager">
|
||||
@@ -245,6 +267,7 @@
|
||||
<MESSAGE value="update xml" />
|
||||
<MESSAGE value="升级框架插件 版本到 8.0.8" />
|
||||
<MESSAGE value="优化控制器层的父类" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="优化控制器层的父类" />
|
||||
<MESSAGE value="优化路由模版的定义" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="优化路由模版的定义" />
|
||||
</component>
|
||||
</project>
|
||||
@@ -1771,16 +1771,6 @@
|
||||
<param name="file"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:HZY.Api.Admin.Models.ApplicationConst">
|
||||
<summary>
|
||||
程序常量
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:HZY.Api.Admin.Models.ApplicationConst.RouteTemplate">
|
||||
<summary>
|
||||
路由模版
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:HZY.Api.Admin.Models.Configs.AppConfiguration">
|
||||
<summary>
|
||||
程序配置信息映射类 appsettings.json
|
||||
|
||||
@@ -1183,7 +1183,7 @@ CREATE TABLE [dbo].[quartz_job_task] (
|
||||
[JobPoint] varchar(255) COLLATE Chinese_PRC_CI_AS NULL,
|
||||
[RequsetMode] int NULL,
|
||||
[Remark] varchar(255) COLLATE Chinese_PRC_CI_AS NULL,
|
||||
[State] int NULL,
|
||||
[State] bit NULL,
|
||||
[ExecuteTime] datetime2(7) NULL,
|
||||
[Type] int NULL
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user