feat: 设置进度条颜色跟随主色
|
|
@ -1,13 +0,0 @@
|
|||
{
|
||||
"hash": "f14be980",
|
||||
"browserHash": "16a0d7a2",
|
||||
"optimized": {
|
||||
"vue": {
|
||||
"src": "../../../../node_modules/.pnpm/vue@3.3.4/node_modules/vue/dist/vue.runtime.esm-bundler.js",
|
||||
"file": "vue.js",
|
||||
"fileHash": "e275f4f9",
|
||||
"needsInterop": false
|
||||
}
|
||||
},
|
||||
"chunks": {}
|
||||
}
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
{
|
||||
"type": "module"
|
||||
}
|
||||
|
|
@ -1,139 +0,0 @@
|
|||
import { defineConfig } from "vitepress";
|
||||
|
||||
/**
|
||||
* 站点配置
|
||||
* @see https://vitepress.dev/reference/site-config
|
||||
*/
|
||||
export default defineConfig({
|
||||
lang: "zh-CN",
|
||||
title: "AppnifyVUE",
|
||||
description: "一位前端开发者的博客",
|
||||
/**
|
||||
* 主题配置
|
||||
* @see https://vitepress.dev/reference/default-theme-config
|
||||
*/
|
||||
themeConfig: {
|
||||
logo: "/favicon.ico",
|
||||
search: {
|
||||
provider: "local",
|
||||
options: {
|
||||
translations: {
|
||||
button: {
|
||||
buttonText: "搜索",
|
||||
buttonAriaLabel: "搜索",
|
||||
},
|
||||
modal: {
|
||||
noResultsText: "没有找到结果",
|
||||
resetButtonTitle: "重置搜索",
|
||||
footer: {
|
||||
selectText: "选择",
|
||||
navigateText: "移动",
|
||||
closeText: "关闭",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
outline: {
|
||||
label: "本篇目录",
|
||||
},
|
||||
nav: [
|
||||
{
|
||||
text: "首页",
|
||||
link: "/",
|
||||
},
|
||||
{
|
||||
text: "项目概览",
|
||||
link: "/overview/",
|
||||
},
|
||||
{
|
||||
text: "开发文档",
|
||||
link: '/dev'
|
||||
},
|
||||
{
|
||||
text: '关于',
|
||||
link: '/about'
|
||||
},
|
||||
],
|
||||
sidebar: {
|
||||
"/front-end/": [
|
||||
{
|
||||
text: "基础知识",
|
||||
items: [
|
||||
{
|
||||
text: "HTML中的标签有多少个?",
|
||||
link: "/front-end/a",
|
||||
},
|
||||
{
|
||||
text: "Runtime API示例",
|
||||
link: "/front-end/b",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
text: '工具类库',
|
||||
items: [
|
||||
{
|
||||
text: 'Lodash在日常开发中有用的函数'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
text: 'vue',
|
||||
items: [
|
||||
{
|
||||
text: '如何将.vue文件编译成js文件?'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
text: '浏览器',
|
||||
items: [
|
||||
{
|
||||
text: '浏览器Console面板中有用的调试技巧',
|
||||
},
|
||||
{
|
||||
text: '如何利用EJS模板引擎辅助生成代码?',
|
||||
link: '/front-end/ejs-generate-code'
|
||||
},
|
||||
{
|
||||
text: '项目中的字典常量应该如何维护?'
|
||||
},
|
||||
{
|
||||
text: '从new xx()和new xx的区别聊聊JS中操作符的优先级问题',
|
||||
link: '/front-end/js-operator-priority'
|
||||
},
|
||||
{
|
||||
text: 'TailwindCSS中一些有意思的用法和实现'
|
||||
},
|
||||
{
|
||||
text: '函数柯里化是什么如何实现它?'
|
||||
},
|
||||
{
|
||||
text: '写一个VITE插件: 根据配置加载不同后缀的文件'
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
},
|
||||
socialLinks: [
|
||||
{
|
||||
icon: "github",
|
||||
link: "https://github.com/juetan",
|
||||
},
|
||||
],
|
||||
docFooter: {
|
||||
prev: "上一篇",
|
||||
next: "下一篇",
|
||||
},
|
||||
footer: {
|
||||
message: "© 2023 JueTan",
|
||||
copyright: "绝弹博客 版权所有",
|
||||
},
|
||||
},
|
||||
|
||||
markdown: {
|
||||
theme: "github-dark-dimmed",
|
||||
lineNumbers: true,
|
||||
},
|
||||
});
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
import { h } from 'vue'
|
||||
import Theme from 'vitepress/theme'
|
||||
import './style.css'
|
||||
import { EnhanceAppContext } from 'vitepress'
|
||||
|
||||
/**
|
||||
* 自定义主题
|
||||
* @see https://vitepress.dev/guide/custom-theme
|
||||
*/
|
||||
export default {
|
||||
...Theme,
|
||||
Layout: () => {
|
||||
return h(Theme.Layout, null, {
|
||||
// https://vitepress.dev/guide/extending-default-theme#layout-slots
|
||||
})
|
||||
},
|
||||
enhanceApp({ app, router, siteData }: EnhanceAppContext) {
|
||||
// ...
|
||||
}
|
||||
}
|
||||
|
|
@ -1,96 +0,0 @@
|
|||
/**
|
||||
* Customize default theme styling by overriding CSS variables:
|
||||
* https://github.com/vuejs/vitepress/blob/main/src/client/theme-default/styles/vars.css
|
||||
*/
|
||||
|
||||
/**
|
||||
* Colors
|
||||
* -------------------------------------------------------------------------- */
|
||||
|
||||
:root {
|
||||
--vp-c-brand: #09f;
|
||||
--vp-c-brand-light: #0099ffe0;
|
||||
--vp-c-brand-lighter: #0099ffa0;
|
||||
--vp-c-brand-lightest: #0099ffc0;
|
||||
--vp-c-brand-dark: #535bf2;
|
||||
--vp-c-brand-darker: #454ce1;
|
||||
--vp-c-brand-dimm: rgba(100, 108, 255, 0.08);
|
||||
--vp-sidebar-bg-color: transparent;
|
||||
--vp-nav-height: 56px;
|
||||
}
|
||||
/* :root {
|
||||
--vp-c-brand: #646cff;
|
||||
--vp-c-brand-light: #747bff;
|
||||
--vp-c-brand-lighter: #9499ff;
|
||||
--vp-c-brand-lightest: #bcc0ff;
|
||||
--vp-c-brand-dark: #535bf2;
|
||||
--vp-c-brand-darker: #454ce1;
|
||||
--vp-c-brand-dimm: rgba(100, 108, 255, 0.08);
|
||||
--vp-sidebar-bg-color: transparent;
|
||||
} */
|
||||
|
||||
/**
|
||||
* Component: Button
|
||||
* -------------------------------------------------------------------------- */
|
||||
|
||||
:root {
|
||||
--vp-button-brand-border: var(--vp-c-brand-light);
|
||||
--vp-button-brand-text: var(--vp-c-white);
|
||||
--vp-button-brand-bg: var(--vp-c-brand);
|
||||
--vp-button-brand-hover-border: var(--vp-c-brand-light);
|
||||
--vp-button-brand-hover-text: var(--vp-c-white);
|
||||
--vp-button-brand-hover-bg: var(--vp-c-brand-light);
|
||||
--vp-button-brand-active-border: var(--vp-c-brand-light);
|
||||
--vp-button-brand-active-text: var(--vp-c-white);
|
||||
--vp-button-brand-active-bg: var(--vp-button-brand-bg);
|
||||
}
|
||||
|
||||
/**
|
||||
* Component: Home
|
||||
* -------------------------------------------------------------------------- */
|
||||
|
||||
:root {
|
||||
--vp-home-hero-name-color: transparent;
|
||||
--vp-home-hero-name-background: -webkit-linear-gradient(120deg, #bd34fe 30%, #41d1ff);
|
||||
|
||||
--vp-home-hero-image-background-image: linear-gradient(-45deg, #bd34fe 50%, #47caff 50%);
|
||||
--vp-home-hero-image-filter: blur(40px);
|
||||
}
|
||||
|
||||
@media (min-width: 640px) {
|
||||
:root {
|
||||
--vp-home-hero-image-filter: blur(56px);
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 960px) {
|
||||
:root {
|
||||
--vp-home-hero-image-filter: blur(72px);
|
||||
}
|
||||
.VPContent .VPDoc {
|
||||
padding: 20px 0 40px;
|
||||
}
|
||||
.VPDoc .container > .content {
|
||||
background: #fff;
|
||||
padding: 28px 24px;
|
||||
box-shadow: 0 0 8px #f1f3f5;
|
||||
border: 1px solid #f1f3f5;
|
||||
border-radius: 4px;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Component: Custom Block
|
||||
* -------------------------------------------------------------------------- */
|
||||
|
||||
:root {
|
||||
--vp-custom-block-tip-border: var(--vp-c-brand);
|
||||
--vp-custom-block-tip-text: var(--vp-c-brand-darker);
|
||||
--vp-custom-block-tip-bg: var(--vp-c-brand-dimm);
|
||||
}
|
||||
|
||||
.dark {
|
||||
--vp-custom-block-tip-border: var(--vp-c-brand);
|
||||
--vp-custom-block-tip-text: var(--vp-c-brand-lightest);
|
||||
--vp-custom-block-tip-bg: var(--vp-c-brand-dimm);
|
||||
}
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
---
|
||||
outline: deep
|
||||
---
|
||||
|
||||
# Runtime API Examples
|
||||
|
||||
This page demonstrates usage of some of the runtime APIs provided by VitePress.
|
||||
The main `useData()` API can be used to access site, theme, and page data for the current page. It works in both `.md` and `.vue` files:
|
||||
|
||||
```md
|
||||
<script setup>
|
||||
import { useData } from 'vitepress'
|
||||
|
||||
const { theme, page, frontmatter } = useData()
|
||||
</script>
|
||||
|
||||
## Results
|
||||
|
||||
### Theme Data
|
||||
<pre>{{ theme }}</pre>
|
||||
|
||||
### Page Data
|
||||
<pre>{{ page }}</pre>
|
||||
|
||||
### Page Frontmatter
|
||||
<pre>{{ frontmatter }}</pre>
|
||||
```
|
||||
|
||||
<script setup>
|
||||
import { useData } from 'vitepress'
|
||||
|
||||
const { site, theme, page, frontmatter, localeIndex } = useData()
|
||||
</script>
|
||||
|
||||
## 输出结果
|
||||
|
||||
### 主题数据
|
||||
{{localeIndex}}
|
||||
<pre>{{ theme }}</pre>
|
||||
|
||||
### 页面数据
|
||||
<pre>{{ page }}</pre>
|
||||
|
||||
### 页面前置数据
|
||||
<pre>{{ frontmatter }}</pre>
|
||||
|
||||
## 更多
|
||||
|
||||
Check out the documentation for the [full list of runtime APIs](https://vitepress.dev/reference/runtime-api#usedata).
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
---
|
||||
# https://vitepress.dev/reference/default-theme-home-page
|
||||
layout: home
|
||||
|
||||
hero:
|
||||
name: "Appnify"
|
||||
text: ""
|
||||
tagline: 基于 vue3 + vite 的后台管理系统模板
|
||||
actions:
|
||||
- theme: brand
|
||||
text: 概览
|
||||
link: /markdown-examples
|
||||
- theme: alt
|
||||
text: 开发文档
|
||||
link: /api-examples
|
||||
image:
|
||||
src: /assets/td.svg
|
||||
alt: page
|
||||
---
|
||||
|
|
@ -1,85 +0,0 @@
|
|||
# Markdown语法示例
|
||||
|
||||
This page demonstrates some of the built-in markdown extensions provided by VitePress.
|
||||
|
||||
## Syntax Highlighting
|
||||
|
||||
VitePress provides Syntax Highlighting powered by [Shiki](https://github.com/shikijs/shiki), with additional features like line-highlighting:
|
||||
|
||||
**Input**
|
||||
|
||||
````
|
||||
```js{4}
|
||||
export default {
|
||||
data () {
|
||||
return {
|
||||
msg: 'Highlighted!'
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
````
|
||||
|
||||
**Output**
|
||||
|
||||
```js{4}
|
||||
export default {
|
||||
data () {
|
||||
return {
|
||||
msg: 'Highlighted!'
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Custom Containers
|
||||
|
||||
**Input**
|
||||
|
||||
```md
|
||||
::: info
|
||||
This is an info box.
|
||||
:::
|
||||
|
||||
::: tip
|
||||
This is a tip.
|
||||
:::
|
||||
|
||||
::: warning
|
||||
This is a warning.
|
||||
:::
|
||||
|
||||
::: danger
|
||||
This is a dangerous warning.
|
||||
:::
|
||||
|
||||
::: details
|
||||
This is a details block.
|
||||
:::
|
||||
```
|
||||
|
||||
**Output**
|
||||
|
||||
::: info
|
||||
This is an info box.
|
||||
:::
|
||||
|
||||
::: tip
|
||||
This is a tip.
|
||||
:::
|
||||
|
||||
::: warning
|
||||
This is a warning.
|
||||
:::
|
||||
|
||||
::: danger
|
||||
This is a dangerous warning.
|
||||
:::
|
||||
|
||||
::: details
|
||||
This is a details block.
|
||||
:::
|
||||
|
||||
## More
|
||||
|
||||
Check out the documentation for the [full list of markdown extensions](https://vitepress.dev/guide/markdown).
|
||||
|
Before Width: | Height: | Size: 15 KiB |
|
|
@ -43,7 +43,6 @@
|
|||
"vite-plugin-mock": "^3.0.0",
|
||||
"vite-plugin-pages": "^0.28.0",
|
||||
"vite-plugin-style-import": "^2.0.0",
|
||||
"vitepress": "1.0.0-beta.1",
|
||||
"vue": "^3.3.4",
|
||||
"vue-router": "^4.2.4",
|
||||
"vue-tsc": "^1.8.11"
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 79 KiB |
|
|
@ -25,7 +25,7 @@ export const config = {
|
|||
{{ icon: () => <IconRefresh></IconRefresh>, default: () => "重置" }}
|
||||
</Button>
|
||||
)}
|
||||
<Button type="primary" loading={tableRef?.loading.value} onClick={() => tableRef?.loadData()}>
|
||||
<Button type="primary" loading={tableRef?.loading.value} onClick={() => tableRef?.reloadData()}>
|
||||
{{ icon: () => <IconSearch></IconSearch>, default: () => "查询" }}
|
||||
</Button>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
import NProgress from 'nprogress';
|
||||
import 'nprogress/nprogress.css';
|
||||
import './nprogress.css';
|
||||
|
||||
NProgress.configure({
|
||||
showSpinner: false,
|
||||
|
|
@ -8,3 +9,4 @@ NProgress.configure({
|
|||
});
|
||||
|
||||
export { NProgress };
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,7 @@
|
|||
#nprogress .bar {
|
||||
background: rgb(var(--primary-5));
|
||||
}
|
||||
|
||||
#nprogress .peg {
|
||||
box-shadow: 0 0 10px rgb(var(--primary-5)), 0 0 5px rgb(var(--primary-5));
|
||||
}
|
||||
|
|
@ -0,0 +1,239 @@
|
|||
<svg
|
||||
viewBox="0 0 400 300"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
class="w-[280px]"
|
||||
>
|
||||
<path
|
||||
d="M55.92 169.384c-1.7-2.38-3.14-4.82-4.3-7.31-2.37-5.06-3.62-10.31-3.62-15.7 0-36.68 57.86-66.96 132.69-71.46M297.606 91.128c33.29 13.22 54.46 33.06 54.46 55.25 0 10.3-4.57 20.1-12.79 28.97M196.192 74.356c1.28-.01 2.56-.02 3.84-.02 24.71 0 48.05 2.79 68.67 7.75"
|
||||
stroke="#31333A"
|
||||
stroke-width="2.126"
|
||||
/>
|
||||
<path
|
||||
d="M315.532 118.444c12.36 7.6 21.59 16.4 26.77 25.97M201.24 110.279c83.97 0 152.03 32.25 152.03 72.04 0 39.79-68.06 72.04-152.03 72.04-35.63 0-68.41-5.81-94.32-15.54-15.97-5.99-29.33-13.47-39.16-21.99-11.83-10.25-18.55-22.01-18.55-34.51 0-22.37 21.52-42.36 55.28-55.57 2.1-.83 4.25-1.62 6.44-2.39"
|
||||
stroke="#31333A"
|
||||
stroke-width="2.126"
|
||||
/>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M126.986 201.18h128.76c6.56 0 11.88-5.33 11.88-11.89V57.88c0-6.56-5.32-11.88-11.88-11.88h-128.76c-3.15 0-6.18 1.25-8.41 3.48a11.899 11.899 0 0 0-3.48 8.41v131.4c0 3.15 1.25 6.18 3.48 8.41 2.23 2.23 5.26 3.48 8.41 3.48Z"
|
||||
fill="#DCDDDD"
|
||||
/>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M126.975 46h128.77c6.56 0 11.89 5.32 11.89 11.89v9.24h-152.54v-9.24c0-6.57 5.32-11.89 11.88-11.89Z"
|
||||
fill="#999"
|
||||
/>
|
||||
<path
|
||||
d="M136.064 99.007c12.54-2.76 26.01-4.74 40.13-5.79M64.414 131.78c9.47-8.83 22.67-16.61 38.62-22.88"
|
||||
stroke="#31333A"
|
||||
stroke-width="2.126"
|
||||
/>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M62.193 127.069c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5Z"
|
||||
fill="#31333A"
|
||||
/>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M147.693 73.57c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5Z"
|
||||
fill="#fff"
|
||||
/>
|
||||
<path
|
||||
d="M147.693 73.57c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5Z"
|
||||
stroke="#31333A"
|
||||
stroke-width="2.126"
|
||||
/>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="m89.926 158.793 6.93 12h-13.86l6.93-12Z"
|
||||
fill="#5578EC"
|
||||
/>
|
||||
<path
|
||||
d="m96.856 170.793-6.93-12-6.93 12h13.86Z"
|
||||
stroke="#3351E5"
|
||||
stroke-width="2.126"
|
||||
/>
|
||||
<path
|
||||
d="M259.143 237.095c-15.48 2.52-41.5 4.94-58.78 4.94-18.54 0-39.27-2.06-55.7-4.94M112.663 228.745c-2.15-.73-4.25-1.48-6.32-2.25-.42-.16-.84-.32-1.25-.48-15.42-5.9-28.34-13.21-37.91-21.51M332.263 202.087c-8.42 7.24-19.07 13.93-31.48 19.79-1.75.83-3.54 1.64-5.36 2.43"
|
||||
stroke="#31333A"
|
||||
stroke-width="2.126"
|
||||
/>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="m137.509 224.27-2.07 4.53c-.13.28-.11.61.05.88l2.56 4.28c.4.67-.14 1.51-.92 1.42l-4.95-.57a.94.94 0 0 0-.82.32l-3.28 3.76c-.51.59-1.48.33-1.63-.44l-.99-4.88a.945.945 0 0 0-.56-.68l-4.59-1.96a.944.944 0 0 1-.09-1.69l4.34-2.45a.97.97 0 0 0 .48-.74l.44-4.97c.07-.78 1-1.14 1.58-.61l3.67 3.37c.23.21.55.3.85.23l4.86-1.12c.77-.17 1.4.6 1.07 1.32Z"
|
||||
fill="#fff"
|
||||
/>
|
||||
<path
|
||||
d="m135.439 228.8 2.07-4.53a.945.945 0 0 0-1.07-1.32l-4.86 1.12a.95.95 0 0 1-.85-.23l-3.67-3.37a.944.944 0 0 0-1.58.61l-.44 4.97a.97.97 0 0 1-.48.74l-4.34 2.45a.944.944 0 0 0 .09 1.69l4.59 1.96c.29.12.49.37.56.68l.99 4.88c.15.77 1.12 1.03 1.63.44l3.28-3.76c.2-.24.51-.35.82-.32l4.95.57c.78.09 1.32-.75.92-1.42l-2.56-4.28a.947.947 0 0 1-.05-.88Z"
|
||||
stroke="#31333A"
|
||||
stroke-width="2.126"
|
||||
/>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="m335.832 196.284 8.478-1.554-1.554-8.479-8.479 1.555 1.555 8.478Z"
|
||||
fill="#5578EC"
|
||||
/>
|
||||
<path
|
||||
d="m343.99 187.106-8.475 1.553 1.17 6.384 8.475-1.554-1.17-6.383Z"
|
||||
stroke="#3351E5"
|
||||
stroke-width="2.126"
|
||||
/>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M136.863 209.542h128.76c6.56 0 11.88-5.33 11.88-11.89V66.242c0-6.56-5.32-11.88-11.88-11.88h-128.76c-3.15 0-6.18 1.25-8.41 3.48a11.899 11.899 0 0 0-3.48 8.41v131.4c0 3.15 1.25 6.18 3.48 8.41 2.23 2.23 5.26 3.48 8.41 3.48Z"
|
||||
fill="#fff"
|
||||
/>
|
||||
<path
|
||||
d="M278.57 55.425H126.036v153.05H278.57V55.425Z"
|
||||
stroke="#31333A"
|
||||
stroke-width="2.126"
|
||||
/>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M136.853 54.362h128.77c6.56 0 11.88 5.32 11.88 11.89v9.24h-152.53v-9.24c0-6.57 5.32-11.89 11.88-11.89Z"
|
||||
fill="#5578EC"
|
||||
/>
|
||||
<path
|
||||
d="M265.623 54.362h-128.77c-6.56 0-11.88 5.32-11.88 11.89v9.24h152.53v-9.24c0-6.57-5.32-11.89-11.88-11.89Z"
|
||||
stroke="#3351E5"
|
||||
stroke-width="2.126"
|
||||
/>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M132.492 64.922a5.695 5.695 0 1 1 11.39.01 5.695 5.695 0 0 1-11.39-.01ZM148.833 64.922a5.695 5.695 0 1 1 11.39.01 5.695 5.695 0 0 1-11.39-.01ZM165.176 64.922a5.695 5.695 0 1 1 11.39.011 5.695 5.695 0 0 1-11.39-.01Z"
|
||||
fill="#fff"
|
||||
/>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M145.772 162.308h110.93v-6.85h-110.93v6.85ZM145.772 173.204h110.93v-6.85h-110.93v6.85ZM145.772 184.1h62.4v-6.85h-62.4v6.85Z"
|
||||
fill="#C6C6C5"
|
||||
/>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M212.883 107.575c.27-.3.74-.32 1.05-.05a23.046 23.046 0 0 1 5.85 26.13c-4.66 4.52-11.57 6.95-18.89 5.98-1.96-.26-3.82-.75-5.57-1.43-.26-.11-.53-.21-.79-.33-.02 0-.04-.01-.06-.02a23.175 23.175 0 0 1-10.98-10.25c-.04-.06-.06-.12-.1-.18-1.61-3.32-2.29-7.05-1.79-10.88.18-1.32.49-2.6.93-3.81 2.58 1.13 5.31 1.89 8.11 2.25 6.06.81 11.8-.23 16.26-2.56a18.35 18.35 0 0 0 5.94-4.81l.04-.04Z"
|
||||
fill="#fff"
|
||||
/>
|
||||
<path
|
||||
d="M213.933 107.525a.752.752 0 0 0-1.05.05l-.04.04c-1.62 2-3.64 3.64-5.94 4.81-4.46 2.33-10.2 3.37-16.26 2.56-2.8-.36-5.53-1.12-8.11-2.25a18.45 18.45 0 0 0-.93 3.81c-.5 3.83.18 7.56 1.79 10.88.04.06.06.12.1.18 2.39 4.48 6.22 8.12 10.98 10.25.02.01.04.02.06.02.26.12.53.22.79.33 1.75.68 3.61 1.17 5.57 1.43 7.32.97 14.23-1.46 18.89-5.98a23.046 23.046 0 0 0-5.85-26.13Z"
|
||||
stroke="#31333A"
|
||||
stroke-width=".992"
|
||||
/>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M214.277 108.303c-.55-.47-1.38-.4-1.84.15-1.57 1.8-3.46 3.28-5.58 4.37-4.47 2.34-10.21 3.37-16.27 2.56-1.13-.15-2.25-.36-3.36-.64a26.29 26.29 0 0 0-2.77 8.76c-.26 1.93-.3 3.89-.13 5.83a22.908 22.908 0 0 1-3.65-15.77c.05-.41.12-.81.19-1.21-.51-.27-1.02-.55-1.5-.84-.59-.36-1.16-.74-1.71-1.14-.48-.35-.82-.85-.98-1.42a2.71 2.71 0 0 1 1.85-3.36c1.92-.56 3.89-.91 5.89-1.04 6.78-10.3 20.4-13.55 31.11-7.45a23.125 23.125 0 0 1 11.51 23.13c-.71 5.42-3.34 10.4-7.4 14.06 3.86-8.9 1.75-19.27-5.3-25.94a.265.265 0 0 0-.06-.05Z"
|
||||
fill="#31333A"
|
||||
/>
|
||||
<path
|
||||
d="M212.437 108.453c.46-.55 1.29-.62 1.84-.15.02.01.04.03.06.05 7.05 6.67 9.16 17.04 5.3 25.94 4.06-3.66 6.69-8.64 7.4-14.06a23.125 23.125 0 0 0-11.51-23.13c-10.71-6.1-24.33-2.85-31.11 7.45-2 .13-3.97.48-5.89 1.04a2.71 2.71 0 0 0-1.85 3.36c.16.57.5 1.07.98 1.42.55.4 1.12.78 1.71 1.14.48.29.99.57 1.5.84-.07.4-.14.8-.19 1.21-.74 5.52.55 11.13 3.65 15.77-.17-1.94-.13-3.9.13-5.83.4-3.06 1.34-6.02 2.77-8.76 1.11.28 2.23.49 3.36.64 6.06.81 11.8-.22 16.27-2.56 2.12-1.09 4.01-2.57 5.58-4.37Z"
|
||||
stroke="#31333A"
|
||||
/>
|
||||
<path
|
||||
d="m194.061 126.161 3.34-3.6M193.931 122.69l3.6 3.34M208.133 126.305l3.34-3.6M208.002 122.835l3.6 3.34M181.607 116.548c-1.479 11.132 7.154 21.47 19.288 23.082 12.123 1.611 23.157-6.112 24.636-17.245 1.481-11.142-7.153-21.479-19.276-23.09-12.133-1.613-23.167 6.111-24.648 17.253Z"
|
||||
stroke="#31333A"
|
||||
stroke-width="2.126"
|
||||
/>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="m169.931 103.186-9.09-.09v.07l-16.32 21.59.49 4.83 15.56.16-.07 7.12 9.08.09.07-7.12 3.96.04.06-6.07-3.95-.04.21-20.58Zm-9.192 9.971-.16-.02-1.01 1.73-7.24 8.72 8.31.08.1-10.51ZM247.096 136.867l9.09.09.07-7.12 3.95.04.07-6.07-3.95-.04.21-20.58-9.09-.09v.07l-16.32 21.59.49 4.83 15.56.16-.08 7.12Zm.248-23.7-.16-.03-1.01 1.73-7.24 8.72 8.3.08.11-10.5Z"
|
||||
fill="#31333A"
|
||||
/>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M264.771 220.051c-5.87 3.29-13 4.45-20.09 2.69-14.71-3.64-23.72-18.37-20.12-32.9 3.6-14.54 18.43-23.37 33.14-19.73 14.71 3.64 23.71 18.37 20.12 32.9-1.03 4.18-3 7.88-5.61 10.95l16.29 18.45.81-3.28 2.35 1.24-1.08 4.39-7.35 5.5-18.46-20.21Z"
|
||||
fill="#3351E5"
|
||||
/>
|
||||
<path
|
||||
d="M244.681 222.741c7.09 1.76 14.22.6 20.09-2.69l18.46 20.21 7.35-5.5 1.08-4.39-2.35-1.24-.81 3.28-16.29-18.45c2.61-3.07 4.58-6.77 5.61-10.95 3.59-14.53-5.41-29.26-20.12-32.9-14.71-3.64-29.54 5.19-33.14 19.73-3.6 14.53 5.41 29.26 20.12 32.9Z"
|
||||
stroke="#3351E5"
|
||||
stroke-width=".992"
|
||||
/>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M277.111 200.513c-.8 3.23-2.25 6.15-4.17 8.66l18.72 21.2-7.34 5.5-18.61-20.37c-5.79 3.37-13.02 4.57-20.26 2.78-14.19-3.51-23.02-17.16-19.72-30.48 3.29-13.33 17.47-21.28 31.66-17.77 14.18 3.51 23.01 17.16 19.72 30.48Z"
|
||||
fill="#5578EC"
|
||||
/>
|
||||
<path
|
||||
d="M272.941 209.173c1.92-2.51 3.37-5.43 4.17-8.66 3.29-13.32-5.54-26.97-19.72-30.48-14.19-3.51-28.37 4.44-31.66 17.77-3.3 13.32 5.53 26.97 19.72 30.48 7.24 1.79 14.47.59 20.26-2.78l18.61 20.37 7.34-5.5-18.72-21.2Z"
|
||||
stroke="#3351E5"
|
||||
stroke-width=".992"
|
||||
/>
|
||||
<path
|
||||
d="M258.139 169.99c-.06-.01-.11-.03-.16-.04-11.16-2.76-22.31 1.57-28.17 10.03a26.8 26.8 0 0 0-4.66 9.77c-3.6 14.54 5.41 29.27 20.12 32.91 7.09 1.75 14.22.6 20.09-2.69l18.46 20.21 7.35-5.5 1.08-4.39-17.21-19.48c1.5-2.37 2.66-5.01 3.37-7.88 3.6-14.53-5.41-29.27-20.12-32.9a.833.833 0 0 0-.15-.04Z"
|
||||
stroke="#31333A"
|
||||
stroke-width="2"
|
||||
/>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M232.624 189.502c-2.44 9.862 3.998 19.943 14.375 22.51 10.387 2.57 20.782-3.347 23.222-13.21 2.44-9.862-4-19.934-14.387-22.503-10.377-2.567-20.77 3.34-23.21 13.203Z"
|
||||
fill="#fff"
|
||||
/>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M235.672 205.485c-3.227-4.276-4.582-9.782-3.237-15.222 2.44-9.863 12.833-15.77 23.21-13.203 6.397 1.582 11.297 6.01 13.547 11.482-2.625-3.478-6.491-6.141-11.152-7.294-10.378-2.567-20.77 3.34-23.21 13.203-.938 3.792-.564 7.617.842 11.034Z"
|
||||
fill="#E7E7E7"
|
||||
/>
|
||||
<path
|
||||
d="M232.624 189.502c-2.44 9.862 3.998 19.943 14.375 22.51 10.387 2.57 20.782-3.347 23.222-13.21 2.44-9.862-4-19.934-14.387-22.503-10.377-2.567-20.77 3.34-23.21 13.203Z"
|
||||
stroke="#31333A"
|
||||
stroke-width="2"
|
||||
/>
|
||||
<path
|
||||
d="M250.303 204.983s-4.05.08-6.64-1.6c-2.59-1.67-2.95-3.98-2.95-3.98"
|
||||
stroke="#31333A"
|
||||
stroke-width="2.126"
|
||||
/>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="m287.587 249.187-16.93-18.84c-1.36-1.52-.21-4.8 2.59-7.31l3.38-3.03c2.79-2.52 6.17-3.32 7.54-1.8l16.93 18.84c1.37 1.53.21 4.8-2.59 7.31l-3.38 3.04c-2.79 2.51-6.17 3.31-7.54 1.79Z"
|
||||
fill="#DCDDDD"
|
||||
/>
|
||||
<path
|
||||
d="m270.657 230.347 16.93 18.84c1.37 1.52 4.75.72 7.54-1.79l3.38-3.04c2.8-2.51 3.96-5.78 2.59-7.31l-16.93-18.84c-1.37-1.52-4.75-.72-7.54 1.8l-3.38 3.03c-2.8 2.51-3.95 5.79-2.59 7.31Z"
|
||||
stroke="#31333A"
|
||||
stroke-width="2.126"
|
||||
/>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="m298.505 244.358-3.37 3.03c-2.8 2.52-6.18 3.32-7.54 1.8l-1.38-1.54 13.51-12.13 1.37 1.53c1.37 1.52.21 4.8-2.59 7.31Z"
|
||||
fill="#0D1D38"
|
||||
/>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="m287.587 249.186-16.93-18.84c-1.36-1.52-.21-4.8 2.59-7.31l.85-.76 21.88 24.36-.85.76c-2.79 2.51-6.17 3.31-7.54 1.79Z"
|
||||
fill="#DCDDDD"
|
||||
/>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M281.843 220.296c.82-.74 1.81-.97 2.21-.53l15.48 17.24c.4.44.06 1.4-.76 2.13-.81.73-1.8.97-2.2.52l-15.48-17.23c-.4-.44-.06-1.4.75-2.13Z"
|
||||
fill="#fff"
|
||||
/>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M180.431 108.9a3.55 3.55 0 1 0 .002 7.102 3.55 3.55 0 0 0-.002-7.102Z"
|
||||
fill="#31333A"
|
||||
/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 11 KiB |
|
|
@ -2,7 +2,7 @@
|
|||
<div class="w-full h-full flex justify-center items-center p-4">
|
||||
<div class="flex flex-col md:flex-row items-center">
|
||||
<div>
|
||||
<img src="@/assets/404.svg" alt="404" class="w-[320px]" />
|
||||
<img src="./image-404.svg" alt="404" class="w-[320px]" />
|
||||
</div>
|
||||
<div class="slide-in-bottom">
|
||||
<h1 class="text-3xl font-bold my-0">404</h1>
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 79 KiB |
|
|
@ -15,8 +15,8 @@
|
|||
<div
|
||||
class="login-box w-[960px] h-[560px] relative mx-4 grid md:grid-cols-2 rounded overflow-hidden border border-blue-100"
|
||||
>
|
||||
<div class="relative hidden md:block w-full h-full overflow-hidden bg-[rgb(var(--primary-6))] px-4">
|
||||
<img src="@/assets/td.svg" :alt="appStore.title" class="w-full h-full select-none" />
|
||||
<div class="login-left relative hidden md:block w-full h-full overflow-hidden bg-[rgb(var(--primary-6))] px-4">
|
||||
<!-- <img src="./image-br.svg" :alt="appStore.title" class="w-full h-full select-none" /> -->
|
||||
</div>
|
||||
<div class="relative p-20 px-8 md:px-14 bg-white shadow-sm">
|
||||
<div class="text-2xl">欢迎登陆</div>
|
||||
|
|
@ -115,11 +115,14 @@ const onSubmitForm = async () => {
|
|||
|
||||
<style lang="less" scoped>
|
||||
.page-login {
|
||||
background-image: url(@/assets/bg-login.jpg);
|
||||
background-image: url(./image-bg.jpg);
|
||||
}
|
||||
.login-box {
|
||||
box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.login-left {
|
||||
background: rgb(var(--primary-6)) url(/src/pages/_login/image-br.svg) no-repeat center center/90% auto;
|
||||
}
|
||||
</style>
|
||||
|
||||
<route lang="json">
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
<a-checkbox>全部选择</a-checkbox>
|
||||
</template>
|
||||
</a-card>
|
||||
<a-modal :visible="true" :width="1280" :title="'选择素材'" title-align="start" :closable="false">
|
||||
<a-modal v-model:visible="state.visible" :width="1280" :title="'选择素材'" title-align="start" :closable="false">
|
||||
<div class="w-full h-[600px] flex gap-4">
|
||||
<div class="w-64 p-2 pr-4 border">
|
||||
<a-input-search placeholder="请输入关键字"></a-input-search>
|
||||
|
|
@ -63,6 +63,7 @@ for (const item of items) {
|
|||
|
||||
const state = reactive({
|
||||
menus: items,
|
||||
visible: true
|
||||
});
|
||||
|
||||
const indeter = (items: any[]) => {
|
||||
|
|
@ -83,26 +84,17 @@ const onItemChange = (item: any, menu: any) => {
|
|||
};
|
||||
|
||||
const table = useTable({
|
||||
data: async (model, paging) => {
|
||||
return api.role.getRoles();
|
||||
},
|
||||
data: items,
|
||||
columns: [
|
||||
{
|
||||
title: "角色名称",
|
||||
dataIndex: "username",
|
||||
dataIndex: "title",
|
||||
width: 180,
|
||||
render({ record }) {
|
||||
return (
|
||||
<div class="flex flex-col overflow-hidden">
|
||||
<span>{record.name}</span>
|
||||
<span class="text-gray-400 text-xs truncate">{record.slug}</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "角色描述",
|
||||
title: "类型",
|
||||
dataIndex: "description",
|
||||
render: () => <a-tag color="blue">菜单</a-tag>,
|
||||
},
|
||||
{
|
||||
title: "创建时间",
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<div class="mt-1 text-gray-400">用户上传的图片、视频、音频等素材,可用于文章、图文、视频等内容的编辑。</div>
|
||||
</div>
|
||||
<div class="text-sm text-gray-400">
|
||||
<a-button type="primary">
|
||||
<a-button type="primary" @click="visible = true">
|
||||
<template #icon>
|
||||
<i class="icon-park-outline-add"></i>
|
||||
</template>
|
||||
|
|
@ -138,6 +138,20 @@
|
|||
<div class="mt-4 flex justify-end">
|
||||
<a-pagination :total="232" :show-total="true"></a-pagination>
|
||||
</div>
|
||||
<a-modal v-model:visible="visible" title="修改密码" :width="432" :footer="false" title-align="start">
|
||||
<a-form :model="{}" layout="vertical">
|
||||
<a-form-item label="原密码">
|
||||
<a-input placeholder="请输入原密码"></a-input>
|
||||
</a-form-item>
|
||||
<a-form-item label="新密码">
|
||||
<a-input placeholder="请输入新密码"></a-input>
|
||||
</a-form-item>
|
||||
<a-form-item label="确认新密码">
|
||||
<a-input placeholder="请再次输入新密码"></a-input>
|
||||
</a-form-item>
|
||||
<a-button type="primary" class="w-full mt-2">修改密码</a-button>
|
||||
</a-form>
|
||||
</a-modal>
|
||||
</template>
|
||||
</bread-page>
|
||||
</template>
|
||||
|
|
@ -145,6 +159,8 @@
|
|||
<script setup lang="tsx">
|
||||
import { Modal } from "@arco-design/web-vue";
|
||||
|
||||
const visible = ref(false)
|
||||
|
||||
const onRowActionsSelect = () => {
|
||||
Modal.open({
|
||||
title: "提示",
|
||||
|
|
|
|||
|
|
@ -1,229 +1,14 @@
|
|||
<template>
|
||||
<div class="m-4 p-4 bg-white">
|
||||
<Table v-bind="table">
|
||||
<template #action>
|
||||
<a-button @click="model.visible = true">
|
||||
<template #icon>
|
||||
<i class="icon-park-outline-download"></i>
|
||||
</template>
|
||||
导出
|
||||
</a-button>
|
||||
<a-button @click="model.visible = true">
|
||||
<template #icon>
|
||||
<i class="icon-park-outline-upload"></i>
|
||||
</template>
|
||||
导入
|
||||
</a-button>
|
||||
</template>
|
||||
</Table>
|
||||
<a-modal title="导出为文件" v-model:visible="model.visible" title-align="start">
|
||||
<a-form :model="{}" layout="vertical" class="export-form">
|
||||
<a-form-item label="文件名">
|
||||
<a-input v-model="model.filename" placeholder="请输入"></a-input>
|
||||
</a-form-item>
|
||||
<a-form-item label="文件类型">
|
||||
<div class="grid gap-2">
|
||||
<div
|
||||
v-for="item in exportTypes"
|
||||
@click="model.exportType = item.name"
|
||||
class="w-full flex justify-between items-center gap-4 rounded py-2 px-4 cursor-pointer bg-[var(--color-fill-2)] hover:bg-[var(--color-fill-3)]"
|
||||
:class="{
|
||||
'!border-brand-500': model.exportType === item.name,
|
||||
}"
|
||||
>
|
||||
<div class="flex items-center gap-2 rounded">
|
||||
<div class="">
|
||||
<i :class="item.icon" class="text-2xl text-brand-500"></i>
|
||||
</div>
|
||||
<div>
|
||||
<div class="text-slate-900">
|
||||
{{ item.label }}
|
||||
</div>
|
||||
<div class="text-slate-500 text-xs">
|
||||
{{ item.description }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<a-radio v-model="model.exportType" :value="item.name" class="mt-1"></a-radio>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
</a-modal>
|
||||
<a-modal title="导入类型" :visible="false" title-align="start">
|
||||
<a-alert> 请按照 <a-link>上传模板</a-link> 中的格式进行填写,上传文件后系统将自动导入数据 </a-alert>
|
||||
<a-upload draggable class="mt-4"></a-upload>
|
||||
</a-modal>
|
||||
</div>
|
||||
<div></div>
|
||||
</template>
|
||||
|
||||
<script setup lang="tsx" name="PostPage">
|
||||
import { api } from "@/api";
|
||||
import { Table, useTable } from "@/components";
|
||||
import { dayjs } from "@/libs";
|
||||
<script setup lang="tsx"></script>
|
||||
|
||||
const table = useTable({
|
||||
data: async (model, paging) => {
|
||||
return api.post.getPosts({ ...model, ...paging });
|
||||
},
|
||||
columns: [
|
||||
{
|
||||
title: "文章名称",
|
||||
dataIndex: "title",
|
||||
width: 240,
|
||||
},
|
||||
{
|
||||
title: "文章描述",
|
||||
dataIndex: "description",
|
||||
},
|
||||
{
|
||||
title: "创建时间",
|
||||
dataIndex: "createdAt",
|
||||
width: 200,
|
||||
render: ({ record }) => dayjs(record.createdAt).format(),
|
||||
},
|
||||
{
|
||||
title: "操作",
|
||||
type: "dropdown",
|
||||
width: 140,
|
||||
dropdowns: [
|
||||
{
|
||||
type: "modify",
|
||||
text: "修改",
|
||||
icon: "icon-park-outline-edit",
|
||||
},
|
||||
{
|
||||
type: "delete",
|
||||
text: "删除",
|
||||
icon: "icon-park-outline-delete",
|
||||
onClick: ({ record }) => {
|
||||
return api.post.delPost(record.id);
|
||||
},
|
||||
doptionProps: {
|
||||
class: "!text-red-500 !hover-bg-red-50",
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
search: {
|
||||
formProps: {
|
||||
layout: 'inline',
|
||||
},
|
||||
items: [
|
||||
{
|
||||
extend: "title",
|
||||
required: false,
|
||||
},
|
||||
{
|
||||
extend: "title",
|
||||
required: false,
|
||||
},
|
||||
{
|
||||
extend: "title",
|
||||
required: false,
|
||||
},
|
||||
{
|
||||
extend: "title",
|
||||
required: false,
|
||||
},
|
||||
{
|
||||
extend: "title",
|
||||
required: false,
|
||||
},
|
||||
],
|
||||
},
|
||||
create: {
|
||||
title: "新建文章",
|
||||
modalProps: {
|
||||
width: 580,
|
||||
maskClosable: false,
|
||||
},
|
||||
formProps: {
|
||||
layout: "vertical",
|
||||
},
|
||||
items: [
|
||||
{
|
||||
field: "title",
|
||||
label: "文章名称",
|
||||
type: "input",
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
field: "slug",
|
||||
label: "文章标识",
|
||||
type: "input",
|
||||
},
|
||||
{
|
||||
field: "description",
|
||||
label: "文章描述",
|
||||
type: "input",
|
||||
},
|
||||
{
|
||||
field: "content",
|
||||
label: "文章内容",
|
||||
type: "textarea",
|
||||
},
|
||||
],
|
||||
submit: ({ model }) => {
|
||||
return api.post.addPost(model);
|
||||
},
|
||||
},
|
||||
modify: {
|
||||
extend: true,
|
||||
title: "修改文章",
|
||||
submit: ({ model }) => {
|
||||
return api.post.updatePost(model.id, model);
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
const exportTypes = [
|
||||
{
|
||||
name: "excel",
|
||||
icon: "icon-park-outline-file-excel",
|
||||
label: "Excel格式",
|
||||
description: "导出为 .xlsx 文件",
|
||||
},
|
||||
{
|
||||
name: "csv",
|
||||
icon: "icon-park-outline-file-code",
|
||||
label: "CSV格式",
|
||||
description: "导出为 .csv 文件",
|
||||
},
|
||||
{
|
||||
name: "text",
|
||||
icon: "icon-park-outline-file-text",
|
||||
label: "TEXT格式",
|
||||
description: "导出为 .txt 文件",
|
||||
},
|
||||
];
|
||||
|
||||
const model = reactive({
|
||||
visible: false,
|
||||
exportType: "excel",
|
||||
filename: dayjs().format("文件YYYYMMDDHHmmss"),
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.export-form {
|
||||
.arco-form-item-content {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<style lang="less"></style>
|
||||
|
||||
<route lang="json">
|
||||
{
|
||||
"meta": {
|
||||
"sort": 10300,
|
||||
"title": "文章管理",
|
||||
"icon": "icon-park-outline-document-folder"
|
||||
},
|
||||
"parentMeta": {
|
||||
"sort": 10300,
|
||||
"title": "内容管理",
|
||||
"icon": "icon-park-outline-document-folder"
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ const after: NavigationHookAfter = function (to) {
|
|||
setTimeout(() => {
|
||||
appStore.setPageLoading(false);
|
||||
routeMap.set(to.fullPath, true);
|
||||
}, 200);
|
||||
}, 500);
|
||||
};
|
||||
|
||||
export const progressGuard = {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
@import url("@arco-design/web-vue/es/index.less");
|
||||
|
||||
// @blue-6: #09f;
|
||||
|
||||
@arcoblue-6:#08f;
|
||||
|
||||
body {
|
||||
|
|
|
|||
|
|
@ -17,6 +17,8 @@ body {
|
|||
#app {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
min-width: 1440px;
|
||||
min-height: 900px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
|
|
|
|||