mirror of
https://github.com/cool-team-official/cool-admin-vue.git
synced 2025-12-13 14:12:50 +00:00
小改主题
This commit is contained in:
parent
55a71c4fe8
commit
e0b43109bc
@ -109,7 +109,7 @@
|
|||||||
|
|
||||||
.preload__loading::after,
|
.preload__loading::after,
|
||||||
.preload__loading::before {
|
.preload__loading::before {
|
||||||
content: "";
|
content: '';
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: -2px;
|
bottom: -2px;
|
||||||
|
|||||||
10
pnpm-lock.yaml
generated
10
pnpm-lock.yaml
generated
@ -88,8 +88,8 @@ importers:
|
|||||||
version: 0.18.5
|
version: 0.18.5
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@cool-vue/vite-plugin':
|
'@cool-vue/vite-plugin':
|
||||||
specifier: ^7.2.4
|
specifier: ^7.2.5
|
||||||
version: 7.2.4
|
version: 7.2.5
|
||||||
'@rushstack/eslint-patch':
|
'@rushstack/eslint-patch':
|
||||||
specifier: ^1.10.4
|
specifier: ^1.10.4
|
||||||
version: 1.10.4
|
version: 1.10.4
|
||||||
@ -333,8 +333,8 @@ packages:
|
|||||||
'@cool-vue/crud@7.2.5':
|
'@cool-vue/crud@7.2.5':
|
||||||
resolution: {integrity: sha512-+kvWAfz77jTDZqDfQPDsl2dzOeJs7TptOH/maBfwO3iyZcTaYBbcFEBpWG5vjaUeva8Fuo1rlmlr5q/OykuX7Q==}
|
resolution: {integrity: sha512-+kvWAfz77jTDZqDfQPDsl2dzOeJs7TptOH/maBfwO3iyZcTaYBbcFEBpWG5vjaUeva8Fuo1rlmlr5q/OykuX7Q==}
|
||||||
|
|
||||||
'@cool-vue/vite-plugin@7.2.4':
|
'@cool-vue/vite-plugin@7.2.5':
|
||||||
resolution: {integrity: sha512-lRVoCHeOQ+ZYnpCbVtfTGafdQ/glpb9Nk4YydGseNjVoXLfeJBGkZx2xsHOt54fjlFQMWyi+k4Qo28Ymgigtsg==}
|
resolution: {integrity: sha512-2xMo11P+c7ugNxSPlH3mjBKL4OSfTb49iQlki+GwTzIBykbxG5bi0pt5k9qzkz29R0dOWHWjjGrT6RpNlYvzkg==}
|
||||||
|
|
||||||
'@ctrl/tinycolor@3.6.1':
|
'@ctrl/tinycolor@3.6.1':
|
||||||
resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==}
|
resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==}
|
||||||
@ -3296,7 +3296,7 @@ snapshots:
|
|||||||
- '@vue/composition-api'
|
- '@vue/composition-api'
|
||||||
- typescript
|
- typescript
|
||||||
|
|
||||||
'@cool-vue/vite-plugin@7.2.4':
|
'@cool-vue/vite-plugin@7.2.5':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vue/compiler-sfc': 3.5.13
|
'@vue/compiler-sfc': 3.5.13
|
||||||
axios: 1.7.9
|
axios: 1.7.9
|
||||||
|
|||||||
@ -42,7 +42,6 @@ export default defineComponent({
|
|||||||
.cl-svg {
|
.cl-svg {
|
||||||
width: 1em;
|
width: 1em;
|
||||||
height: 1em;
|
height: 1em;
|
||||||
vertical-align: -0.15em;
|
|
||||||
fill: currentColor;
|
fill: currentColor;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,8 +8,13 @@
|
|||||||
>
|
>
|
||||||
<template v-for="(item, index) in list" :key="item.id">
|
<template v-for="(item, index) in list" :key="item.id">
|
||||||
<el-menu-item :index="`${index}`">
|
<el-menu-item :index="`${index}`">
|
||||||
<cl-svg v-if="item.icon" :name="item.icon" :size="18" />
|
<cl-svg class="icon" :name="item.icon" :size="16" v-if="item.icon" />
|
||||||
<span class="a-menu__name">{{ item.meta?.label }}</span>
|
<span class="label">{{ item.meta?.label }}</span>
|
||||||
|
|
||||||
|
<div class="arc">
|
||||||
|
<cl-svg name="arc" />
|
||||||
|
<cl-svg name="arc" />
|
||||||
|
</div>
|
||||||
</el-menu-item>
|
</el-menu-item>
|
||||||
</template>
|
</template>
|
||||||
</el-menu>
|
</el-menu>
|
||||||
@ -104,11 +109,12 @@ watch(
|
|||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.a-menu {
|
.a-menu {
|
||||||
margin: 5px 0 0 10px;
|
padding: 5px 0 0 15px;
|
||||||
|
background-color: var(--view-bg-color);
|
||||||
|
|
||||||
.el-menu {
|
.el-menu {
|
||||||
height: 40px;
|
height: 36px;
|
||||||
background: transparent;
|
background-color: transparent;
|
||||||
border: 0;
|
border: 0;
|
||||||
|
|
||||||
:deep(.el-sub-menu__title) {
|
:deep(.el-sub-menu__title) {
|
||||||
@ -118,31 +124,66 @@ watch(
|
|||||||
:deep(.el-menu-item) {
|
:deep(.el-menu-item) {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
height: 40px;
|
height: 36px;
|
||||||
padding: 0 15px;
|
padding: 0 16px 0 14px;
|
||||||
background: transparent;
|
|
||||||
border: 0;
|
border: 0;
|
||||||
color: #999;
|
color: var(--el-color-info);
|
||||||
|
position: relative;
|
||||||
|
background-color: transparent;
|
||||||
|
|
||||||
span {
|
.label {
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
margin-left: 3px;
|
margin-left: 3px;
|
||||||
line-height: normal;
|
line-height: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon {
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.label,
|
||||||
|
.icon {
|
||||||
|
position: relative;
|
||||||
|
z-index: 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.arc {
|
||||||
|
pointer-events: none;
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
opacity: 0;
|
||||||
|
border-radius: 8px 8px 0 0;
|
||||||
|
|
||||||
|
.cl-svg {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
color: var(--el-bg-color);
|
||||||
|
|
||||||
|
&:first-child {
|
||||||
|
left: -14px;
|
||||||
|
transform: scaleX(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
right: -14px;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background: transparent;
|
// color: #000;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.is-active {
|
&.is-active {
|
||||||
color: var(--color-primary);
|
color: var(--color-primary);
|
||||||
border-radius: 6px 6px 0 0;
|
|
||||||
background: #fff;
|
|
||||||
color: #000;
|
|
||||||
}
|
|
||||||
|
|
||||||
.cl-svg {
|
.arc {
|
||||||
margin-right: 5px;
|
background-color: var(--el-bg-color);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -217,7 +217,7 @@ onMounted(() => {
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
height: 30px;
|
height: 30px;
|
||||||
padding: 0 10px;
|
padding: 0 8px 0 12px;
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
color: var(--el-color-info);
|
color: var(--el-color-info);
|
||||||
|
|||||||
@ -63,7 +63,7 @@ const lastName = computed(() => last(list.value)?.meta?.label);
|
|||||||
margin: 0 10px;
|
margin: 0 10px;
|
||||||
|
|
||||||
.el-breadcrumb__inner {
|
.el-breadcrumb__inner {
|
||||||
font-size: 13px;
|
font-size: 12px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -146,7 +146,7 @@ onMounted(() => {
|
|||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
|
|
||||||
.cl-svg {
|
.cl-svg {
|
||||||
font-size: 15px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
|
|||||||
@ -51,7 +51,7 @@ onUnmounted(() => {
|
|||||||
margin: 0 10px 10px 10px;
|
margin: 0 10px 10px 10px;
|
||||||
width: calc(100% - 20px);
|
width: calc(100% - 20px);
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
border-radius: 4px;
|
border-radius: 6px;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
.none-enter-active {
|
.none-enter-active {
|
||||||
|
|||||||
@ -27,7 +27,7 @@ const { app } = useBase();
|
|||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.app-layout {
|
.app-layout {
|
||||||
display: flex;
|
display: flex;
|
||||||
background-color: #f7f7f7;
|
background-color: var(--view-bg-color);
|
||||||
height: 100%;
|
height: 100%;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
:root {
|
:root {
|
||||||
--view-bg-color: #f7f7f7;
|
--view-bg-color: var(--el-fill-color-light);
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
|
|||||||
3
src/modules/base/static/svg/arc.svg
Normal file
3
src/modules/base/static/svg/arc.svg
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<svg height="7" width="7">
|
||||||
|
<path d="M 0 0 A 7 7 0 0 0 7 7 L 0 7 Z"></path>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 83 B |
@ -1 +1,33 @@
|
|||||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1735127795772" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2135" xmlns:xlink="http://www.w3.org/1999/xlink" width="256" height="256"><path d="M42.666667 85.333333m42.666666 0l853.333334 0q42.666667 0 42.666666 42.666667l0 0q0 42.666667-42.666666 42.666667l-853.333334 0q-42.666667 0-42.666666-42.666667l0 0q0-42.666667 42.666666-42.666667Z" fill="#000000" p-id="2136"></path><path d="M426.666667 341.333333m42.666666 0l469.333334 0q42.666667 0 42.666666 42.666667l0 0q0 42.666667-42.666666 42.666667l-469.333334 0q-42.666667 0-42.666666-42.666667l0 0q0-42.666667 42.666666-42.666667Z" fill="#000000" p-id="2137"></path><path d="M426.666667 597.333333m42.666666 0l469.333334 0q42.666667 0 42.666666 42.666667l0 0q0 42.666667-42.666666 42.666667l-469.333334 0q-42.666667 0-42.666666-42.666667l0 0q0-42.666667 42.666666-42.666667Z" fill="#000000" p-id="2138"></path><path d="M42.666667 853.333333m42.666666 0l853.333334 0q42.666667 0 42.666666 42.666667l0 0q0 42.666667-42.666666 42.666667l-853.333334 0q-42.666667 0-42.666666-42.666667l0 0q0-42.666667 42.666666-42.666667Z" fill="#000000" p-id="2139"></path><path d="M234.026667 349.568a42.666667 42.666667 0 0 1 54.485333 65.450667l-4.096 3.413333L156.458667 512l127.957333 93.568a42.666667 42.666667 0 0 1 12.117333 55.082667l-2.858666 4.522666a42.666667 42.666667 0 0 1-55.125334 12.16l-4.522666-2.901333-175.018667-128a42.666667 42.666667 0 0 1-4.096-65.493333l4.096-3.413334 175.018667-128z" fill="#000000" p-id="2140"></path></svg>
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg
|
||||||
|
t="1735127795772"
|
||||||
|
class="icon"
|
||||||
|
viewBox="0 0 1024 1024"
|
||||||
|
version="1.1"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
p-id="2135"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
width="256"
|
||||||
|
height="256"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
d="M42.666667 85.333333m42.666666 0l853.333334 0q42.666667 0 42.666666 42.666667l0 0q0 42.666667-42.666666 42.666667l-853.333334 0q-42.666667 0-42.666666-42.666667l0 0q0-42.666667 42.666666-42.666667Z"
|
||||||
|
p-id="2136"
|
||||||
|
></path>
|
||||||
|
<path
|
||||||
|
d="M426.666667 341.333333m42.666666 0l469.333334 0q42.666667 0 42.666666 42.666667l0 0q0 42.666667-42.666666 42.666667l-469.333334 0q-42.666667 0-42.666666-42.666667l0 0q0-42.666667 42.666666-42.666667Z"
|
||||||
|
p-id="2137"
|
||||||
|
></path>
|
||||||
|
<path
|
||||||
|
d="M426.666667 597.333333m42.666666 0l469.333334 0q42.666667 0 42.666666 42.666667l0 0q0 42.666667-42.666666 42.666667l-469.333334 0q-42.666667 0-42.666666-42.666667l0 0q0-42.666667 42.666666-42.666667Z"
|
||||||
|
p-id="2138"
|
||||||
|
></path>
|
||||||
|
<path
|
||||||
|
d="M42.666667 853.333333m42.666666 0l853.333334 0q42.666667 0 42.666666 42.666667l0 0q0 42.666667-42.666666 42.666667l-853.333334 0q-42.666667 0-42.666666-42.666667l0 0q0-42.666667 42.666666-42.666667Z"
|
||||||
|
p-id="2139"
|
||||||
|
></path>
|
||||||
|
<path
|
||||||
|
d="M234.026667 349.568a42.666667 42.666667 0 0 1 54.485333 65.450667l-4.096 3.413333L156.458667 512l127.957333 93.568a42.666667 42.666667 0 0 1 12.117333 55.082667l-2.858666 4.522666a42.666667 42.666667 0 0 1-55.125334 12.16l-4.522666-2.901333-175.018667-128a42.666667 42.666667 0 0 1-4.096-65.493333l4.096-3.413334 175.018667-128z"
|
||||||
|
p-id="2140"
|
||||||
|
></path>
|
||||||
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
@ -1 +1,17 @@
|
|||||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1735127798306" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2305" xmlns:xlink="http://www.w3.org/1999/xlink" width="256" height="256"><path d="M935.466667 85.333333H85.333333a42.666667 42.666667 0 1 0 0 85.333334h850.133334a42.666667 42.666667 0 0 0 0-85.333334z m-382.72 256H85.333333a42.666667 42.666667 0 1 0 0 85.333334h467.413334a42.666667 42.666667 0 1 0 0-85.333334z m0 256H85.333333a42.666667 42.666667 0 0 0 0 85.333334h467.413334a42.666667 42.666667 0 1 0 0-85.333334z m382.72 256H85.333333a42.666667 42.666667 0 0 0 0 85.333334h850.133334a42.666667 42.666667 0 0 0 0-85.333334zM789.461333 349.568a42.410667 42.410667 0 0 0-59.392 9.258667c-12.8 17.536-10.24 41.642667 5.12 56.192l4.096 3.413333L866.773333 512l-127.488 93.568c-17.493333 12.8-22.357333 36.565333-12.117333 55.082667l2.901333 4.522666c12.8 17.578667 36.437333 22.442667 54.912 12.16l4.48-2.901333 174.464-128c21.76-15.957333 23.125333-47.530667 4.053334-65.493333l-4.053334-3.413334-174.464-128z" fill="#000000" p-id="2306"></path></svg>
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg
|
||||||
|
t="1735127798306"
|
||||||
|
class="icon"
|
||||||
|
viewBox="0 0 1024 1024"
|
||||||
|
version="1.1"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
p-id="2305"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
width="256"
|
||||||
|
height="256"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
d="M935.466667 85.333333H85.333333a42.666667 42.666667 0 1 0 0 85.333334h850.133334a42.666667 42.666667 0 0 0 0-85.333334z m-382.72 256H85.333333a42.666667 42.666667 0 1 0 0 85.333334h467.413334a42.666667 42.666667 0 1 0 0-85.333334z m0 256H85.333333a42.666667 42.666667 0 0 0 0 85.333334h467.413334a42.666667 42.666667 0 1 0 0-85.333334z m382.72 256H85.333333a42.666667 42.666667 0 0 0 0 85.333334h850.133334a42.666667 42.666667 0 0 0 0-85.333334zM789.461333 349.568a42.410667 42.410667 0 0 0-59.392 9.258667c-12.8 17.536-10.24 41.642667 5.12 56.192l4.096 3.413333L866.773333 512l-127.488 93.568c-17.493333 12.8-22.357333 36.565333-12.117333 55.082667l2.901333 4.522666c12.8 17.578667 36.437333 22.442667 54.912 12.16l4.48-2.901333 174.464-128c21.76-15.957333 23.125333-47.530667 4.053334-65.493333l-4.053334-3.413334-174.464-128z"
|
||||||
|
p-id="2306"
|
||||||
|
></path>
|
||||||
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="dept-tree">
|
<div class="dept-tree">
|
||||||
<div class="dept-tree__header">
|
<div class="dept-tree__header">
|
||||||
<div>组织架构</div>
|
<el-text>组织架构</el-text>
|
||||||
|
|
||||||
<ul class="dept-tree__op">
|
<ul class="dept-tree__op">
|
||||||
<li @click="refresh()">
|
<li @click="refresh()">
|
||||||
@ -384,21 +384,10 @@ onMounted(function () {
|
|||||||
&__header {
|
&__header {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
height: 40px;
|
height: 40px;
|
||||||
padding: 0 10px;
|
padding: 0 10px;
|
||||||
letter-spacing: 1px;
|
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
div {
|
|
||||||
font-size: 14px;
|
|
||||||
flex: 1;
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
i {
|
|
||||||
font-size: 18px;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
&__op {
|
&__op {
|
||||||
@ -412,9 +401,10 @@ onMounted(function () {
|
|||||||
margin-left: 5px;
|
margin-left: 5px;
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
border-radius: 4px;
|
||||||
|
|
||||||
&:not(.no):hover {
|
&:not(.no):hover {
|
||||||
background-color: var(--el-fill-color-lighter);
|
background-color: var(--el-fill-color-light);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -206,6 +206,10 @@ defineExpose({
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
width: 45px;
|
width: 45px;
|
||||||
|
|
||||||
|
.el-badge {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
color: var(--color-primary);
|
color: var(--color-primary);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -36,8 +36,7 @@ const chartOption = reactive({
|
|||||||
emphasis: {
|
emphasis: {
|
||||||
label: {
|
label: {
|
||||||
show: true,
|
show: true,
|
||||||
fontSize: '30',
|
fontSize: 30
|
||||||
fontWeight: 'bold'
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
labelLine: {
|
labelLine: {
|
||||||
@ -52,7 +51,8 @@ const chartOption = reactive({
|
|||||||
],
|
],
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
borderColor: '#fff',
|
borderColor: '#fff',
|
||||||
borderWidth: 4
|
borderWidth: 4,
|
||||||
|
borderRadius: 4
|
||||||
},
|
},
|
||||||
roundCap: 1
|
roundCap: 1
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,6 +5,10 @@
|
|||||||
background-color: var(--el-bg-color);
|
background-color: var(--el-bg-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
:deep(.el-tabs__header) {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
.scope {
|
.scope {
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
|
|||||||
@ -2,8 +2,8 @@
|
|||||||
<el-scrollbar class="plugins__wrapper" @dragover="onDragover" @drop="onDrop">
|
<el-scrollbar class="plugins__wrapper" @dragover="onDragover" @drop="onDrop">
|
||||||
<div class="plugins">
|
<div class="plugins">
|
||||||
<el-tabs v-model="tab.active" type="card" @tab-change="tab.onChange">
|
<el-tabs v-model="tab.active" type="card" @tab-change="tab.onChange">
|
||||||
<el-tab-pane label="已安装插件" name="installed"> </el-tab-pane>
|
<el-tab-pane label="已安装插件" name="installed" />
|
||||||
<el-tab-pane label="插件市场" name="shop"> </el-tab-pane>
|
<el-tab-pane label="插件市场" name="shop" />
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
|
|
||||||
<el-row :gutter="10">
|
<el-row :gutter="10">
|
||||||
|
|||||||
@ -1,14 +1,11 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-scrollbar class="plugins__wrapper">
|
<el-scrollbar class="plugins__wrapper">
|
||||||
<div class="plugins">
|
<div class="plugins">
|
||||||
<div class="header">
|
|
||||||
<el-tabs v-model="tab.active" type="card" @tab-change="tab.onChange">
|
<el-tabs v-model="tab.active" type="card" @tab-change="tab.onChange">
|
||||||
<el-tab-pane label="已安装插件" name="installed"> </el-tab-pane>
|
<el-tab-pane label="已安装插件" name="installed" />
|
||||||
<el-tab-pane label="插件市场" name="shop"> </el-tab-pane>
|
<el-tab-pane label="插件市场" name="shop" />
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container">
|
|
||||||
<el-row :gutter="10">
|
<el-row :gutter="10">
|
||||||
<el-col
|
<el-col
|
||||||
v-for="(item, index) in list"
|
v-for="(item, index) in list"
|
||||||
@ -57,7 +54,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
</div>
|
|
||||||
|
|
||||||
<cl-dialog v-model="det.visible" :title="det.title" width="60%">
|
<cl-dialog v-model="det.visible" :title="det.title" width="60%">
|
||||||
<el-tabs v-model="det.active" type="card" @tab-change="tab.onChange">
|
<el-tabs v-model="det.active" type="card" @tab-change="tab.onChange">
|
||||||
|
|||||||
@ -386,27 +386,23 @@ onActivated(() => {
|
|||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.task-list {
|
.task-list {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
background-color: var(--el-bg-color-page);
|
|
||||||
|
|
||||||
.list {
|
.list {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
padding: 10px 10px 0 10px;
|
|
||||||
box-sizing: border-box;
|
|
||||||
background-color: inherit;
|
|
||||||
|
|
||||||
.item {
|
.item {
|
||||||
background-color: var(--el-bg-color);
|
background-color: var(--el-bg-color);
|
||||||
padding: 15px 20px 0 20px;
|
padding: 15px 20px 0 20px;
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
margin: 0 15px 15px 0;
|
margin: 0 10px 10px 0;
|
||||||
height: 200px;
|
height: 200px;
|
||||||
width: 350px;
|
width: 350px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
|
|
||||||
.name {
|
.name {
|
||||||
font-size: 17px;
|
font-size: 16px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
@ -420,16 +416,12 @@ onActivated(() => {
|
|||||||
|
|
||||||
span {
|
span {
|
||||||
display: block;
|
display: block;
|
||||||
|
font-size: 12px;
|
||||||
|
|
||||||
&:nth-child(1) {
|
&:nth-child(1) {
|
||||||
font-size: 12px;
|
|
||||||
margin-bottom: 5px;
|
margin-bottom: 5px;
|
||||||
color: var(--el-color-info);
|
color: var(--el-color-info);
|
||||||
}
|
}
|
||||||
|
|
||||||
&:nth-child(2) {
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -441,7 +433,7 @@ onActivated(() => {
|
|||||||
height: 50px;
|
height: 50px;
|
||||||
|
|
||||||
.el-icon {
|
.el-icon {
|
||||||
font-size: 22px;
|
font-size: 16px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
@ -470,7 +462,7 @@ onActivated(() => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background-color: var(--el-fill-color-lighter);
|
box-shadow: 0px 0px 10px 1px var(--el-color-info-light-9);
|
||||||
}
|
}
|
||||||
|
|
||||||
&.is-add {
|
&.is-add {
|
||||||
|
|||||||
@ -29,7 +29,12 @@ export default defineComponent({
|
|||||||
// 是否返回选中层级下的所有值
|
// 是否返回选中层级下的所有值
|
||||||
allLevelsId: Boolean,
|
allLevelsId: Boolean,
|
||||||
// 是否父子不互相关联
|
// 是否父子不互相关联
|
||||||
checkStrictly: Boolean
|
checkStrictly: Boolean,
|
||||||
|
// 是否搜索
|
||||||
|
isSearch: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
emits: ['update:modelValue', 'change'],
|
emits: ['update:modelValue', 'change'],
|
||||||
@ -81,7 +86,7 @@ export default defineComponent({
|
|||||||
emit('update:modelValue', v);
|
emit('update:modelValue', v);
|
||||||
emit('change', v);
|
emit('change', v);
|
||||||
|
|
||||||
if (props.prop && !props.scope) {
|
if (props.prop && props.isSearch) {
|
||||||
Crud.value?.refresh({ page: 1, [props.prop]: v });
|
Crud.value?.refresh({ page: 1, [props.prop]: v });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -93,7 +98,7 @@ export default defineComponent({
|
|||||||
};
|
};
|
||||||
|
|
||||||
// 占位符
|
// 占位符
|
||||||
const placeholder = props.prop ? '选择搜索' : '请选择';
|
const placeholder = props.isSearch ? '全部' : '请选择';
|
||||||
|
|
||||||
// 树形下拉框
|
// 树形下拉框
|
||||||
const TreeSelect = (
|
const TreeSelect = (
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="cl-theme" @click="open">
|
<div class="cl-theme__icon" @click="open">
|
||||||
<el-badge type="primary" is-dot>
|
<el-badge type="primary" is-dot>
|
||||||
<cl-svg name="icon-discover" :size="16" />
|
<cl-svg name="icon-discover" :size="16" />
|
||||||
</el-badge>
|
</el-badge>
|
||||||
@ -128,16 +128,6 @@ function setTransition(val: any) {
|
|||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.cl-theme {
|
.cl-theme {
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
height: 100%;
|
|
||||||
width: 45px;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
color: var(--color-primary);
|
|
||||||
}
|
|
||||||
|
|
||||||
&-dark {
|
&-dark {
|
||||||
width: 45px;
|
width: 45px;
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
@ -177,16 +167,19 @@ function setTransition(val: any) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&__drawer {
|
&__icon {
|
||||||
:deep(.el-form-item) {
|
display: flex;
|
||||||
background-color: #f7f7f7;
|
align-items: center;
|
||||||
padding: 10px;
|
justify-content: center;
|
||||||
border-radius: 6px;
|
height: 100%;
|
||||||
border: 1px solid var(--el-border-color);
|
width: 45px;
|
||||||
|
|
||||||
.el-form-item__label {
|
.el-badge {
|
||||||
color: #000;
|
display: flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: var(--color-primary);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,7 +13,7 @@ html.dark {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.cl-crud {
|
.cl-crud {
|
||||||
background-color: transparent !important;
|
background-color: transparent;
|
||||||
|
|
||||||
.el-table {
|
.el-table {
|
||||||
&__header {
|
&__header {
|
||||||
@ -37,43 +37,6 @@ html.dark {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.app-layout {
|
|
||||||
background-color: var(--el-bg-color) !important;
|
|
||||||
|
|
||||||
.a-menu {
|
|
||||||
.el-menu-item {
|
|
||||||
border-radius: 6px !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.app-topbar {
|
|
||||||
background-color: transparent;
|
|
||||||
color: #fff;
|
|
||||||
|
|
||||||
span {
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.el-breadcrumb {
|
|
||||||
span {
|
|
||||||
color: #ddd;
|
|
||||||
}
|
|
||||||
|
|
||||||
&__item {
|
|
||||||
&:last-child {
|
|
||||||
span {
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.app-views {
|
|
||||||
background-color: #2f3447;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.el-overlay {
|
.el-overlay {
|
||||||
background-size: 4px 4px;
|
background-size: 4px 4px;
|
||||||
backdrop-filter: saturate(50%) blur(4px);
|
backdrop-filter: saturate(50%) blur(4px);
|
||||||
@ -83,22 +46,46 @@ html.dark {
|
|||||||
body.theme {
|
body.theme {
|
||||||
&-jihei {
|
&-jihei {
|
||||||
.app-layout {
|
.app-layout {
|
||||||
background-color: rgba(47, 52, 71, 0.9);
|
background-color: #3b3f4d;
|
||||||
|
|
||||||
|
.app-slider {
|
||||||
|
background-color: #2e313d;
|
||||||
|
}
|
||||||
|
|
||||||
.a-menu {
|
.a-menu {
|
||||||
|
padding: 5px 10px;
|
||||||
|
background-color: transparent;
|
||||||
|
color: #fff;
|
||||||
|
|
||||||
.el-menu-item {
|
.el-menu-item {
|
||||||
border-radius: 6px !important;
|
border-radius: 6px !important;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.arc {
|
||||||
|
border-radius: 8px !important;
|
||||||
|
|
||||||
|
.cl-svg {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.app-topbar {
|
.app-topbar {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
|
border-bottom: 0;
|
||||||
|
|
||||||
span {
|
span {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&__collapse {
|
||||||
|
&:hover {
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.el-breadcrumb {
|
.el-breadcrumb {
|
||||||
span {
|
span {
|
||||||
color: #ddd;
|
color: #ddd;
|
||||||
@ -113,6 +100,31 @@ body.theme {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.app-process {
|
||||||
|
background-color: transparent;
|
||||||
|
color: #fff;
|
||||||
|
|
||||||
|
&__item {
|
||||||
|
.el-text {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:not(.active):hover {
|
||||||
|
.el-text {
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__op {
|
||||||
|
.item {
|
||||||
|
&:hover {
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -6,18 +6,19 @@
|
|||||||
<slot name="left">
|
<slot name="left">
|
||||||
<div class="scope">
|
<div class="scope">
|
||||||
<div class="head">
|
<div class="head">
|
||||||
<span>{{ config.label }}</span>
|
<el-text class="label">{{ config.label }}</el-text>
|
||||||
|
|
||||||
<el-tooltip v-if="config.enableRefresh" content="刷新">
|
<el-tooltip v-if="config.enableRefresh" content="刷新">
|
||||||
<el-icon @click="refresh()">
|
<el-icon class="icon" @click="refresh()">
|
||||||
<icon-refresh />
|
<icon-refresh />
|
||||||
</el-icon>
|
</el-icon>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
|
|
||||||
<el-tooltip v-if="config.enableAdd" content="添加">
|
<el-tooltip v-if="config.enableAdd" content="添加">
|
||||||
<el-icon
|
<el-icon
|
||||||
v-permission="config.service.permission.add"
|
class="icon"
|
||||||
@click="edit()"
|
@click="edit()"
|
||||||
|
v-permission="config.service.permission.add"
|
||||||
>
|
>
|
||||||
<plus />
|
<plus />
|
||||||
</el-icon>
|
</el-icon>
|
||||||
@ -185,11 +186,13 @@ import { ElMessage, ElMessageBox } from 'element-plus';
|
|||||||
import { isEmpty, merge } from 'lodash-es';
|
import { isEmpty, merge } from 'lodash-es';
|
||||||
import { deepTree } from '/@/cool/utils';
|
import { deepTree } from '/@/cool/utils';
|
||||||
import { type ClViewGroup } from '../types/index.d';
|
import { type ClViewGroup } from '../types/index.d';
|
||||||
|
import { useClipboard } from '@vueuse/core';
|
||||||
|
|
||||||
const { browser, onScreenChange } = useBrowser();
|
const { browser, onScreenChange } = useBrowser();
|
||||||
const slots = useSlots();
|
const slots = useSlots();
|
||||||
const Form = useForm();
|
const Form = useForm();
|
||||||
const { refs, setRefs } = useCool();
|
const { refs, setRefs } = useCool();
|
||||||
|
const { copy } = useClipboard();
|
||||||
|
|
||||||
// 配置
|
// 配置
|
||||||
const config = reactive(
|
const config = reactive(
|
||||||
@ -428,6 +431,14 @@ function onContextMenu(e: any, item: ClViewGroup.Item) {
|
|||||||
target: 'item'
|
target: 'item'
|
||||||
},
|
},
|
||||||
list: [
|
list: [
|
||||||
|
{
|
||||||
|
label: '复制Key',
|
||||||
|
callback(done) {
|
||||||
|
done();
|
||||||
|
copy(item.key);
|
||||||
|
ElMessage.success('复制成功');
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
label: '编辑',
|
label: '编辑',
|
||||||
hidden: !config.service._permission.update,
|
hidden: !config.service._permission.update,
|
||||||
@ -479,6 +490,21 @@ defineExpose({
|
|||||||
$left-width: v-bind('config.leftWidth');
|
$left-width: v-bind('config.leftWidth');
|
||||||
$bg: var(--el-bg-color);
|
$bg: var(--el-bg-color);
|
||||||
|
|
||||||
|
.icon {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
cursor: pointer;
|
||||||
|
height: 26px;
|
||||||
|
width: 26px;
|
||||||
|
font-size: 16px;
|
||||||
|
border-radius: 4px;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: var(--el-fill-color-light);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
&__wrap {
|
&__wrap {
|
||||||
display: flex;
|
display: flex;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
@ -527,28 +553,25 @@ defineExpose({
|
|||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
padding: 0 10px;
|
padding: 0 10px;
|
||||||
|
|
||||||
& > span {
|
.label {
|
||||||
&:nth-child(1) {
|
|
||||||
flex: 1;
|
flex: 1;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
.el-icon {
|
.el-icon {
|
||||||
padding: 5px;
|
|
||||||
font-size: 16px;
|
|
||||||
margin-left: 5px;
|
margin-left: 5px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
border-radius: 4px;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
background-color: var(--el-fill-color-lighter);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.search {
|
.search {
|
||||||
height: 40px;
|
height: 40px;
|
||||||
padding: 0 10px;
|
padding: 0 10px;
|
||||||
|
|
||||||
|
:deep(.el-input__inner) {
|
||||||
|
&::placeholder {
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.data {
|
.data {
|
||||||
@ -579,15 +602,16 @@ defineExpose({
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
list-style: none;
|
list-style: none;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
padding: 10px 35px 10px 10px;
|
padding: 10px 34px 10px 10px;
|
||||||
margin: 0 10px;
|
margin: 0 10px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
font-size: 13px;
|
font-size: 12px;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
color: #666;
|
color: var(--el-text-color-regular);
|
||||||
position: relative;
|
position: relative;
|
||||||
background-color: #f7f7f7;
|
background-color: var(--el-fill-color-lighter);
|
||||||
|
line-height: 1;
|
||||||
|
|
||||||
.arrow-right {
|
.arrow-right {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
@ -640,16 +664,9 @@ defineExpose({
|
|||||||
}
|
}
|
||||||
|
|
||||||
.icon {
|
.icon {
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 0;
|
left: 10px;
|
||||||
top: 0;
|
background-color: var(--el-fill-color-lighter);
|
||||||
font-size: 18px;
|
|
||||||
cursor: pointer;
|
|
||||||
height: 100%;
|
|
||||||
width: 80px;
|
|
||||||
padding-left: 10px;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user