Merge branch 'main' into gitee

This commit is contained in:
xiaoxian521 2024-02-29 13:18:53 +08:00
commit 7076d2761a
33 changed files with 183 additions and 73 deletions

View File

@ -37,6 +37,7 @@ const include = [
"@pureadmin/utils", "@pureadmin/utils",
"@wangeditor/editor", "@wangeditor/editor",
"responsive-storage", "responsive-storage",
"plus-pro-components",
"@howdyjs/mouse-menu", "@howdyjs/mouse-menu",
"@logicflow/extension", "@logicflow/extension",
"vue-virtual-scroller", "vue-virtual-scroller",

View File

@ -67,6 +67,7 @@ menus:
hsCollapse: Collapse hsCollapse: Collapse
hsProgress: Progress hsProgress: Progress
hsUpload: File Upload hsUpload: File Upload
hsCheckCard: CheckCard
hsmenus: MultiLevel Menu hsmenus: MultiLevel Menu
hsmenu1: Menu1 hsmenu1: Menu1
hsmenu1-1: Menu1-1 hsmenu1-1: Menu1-1

View File

@ -67,6 +67,7 @@ menus:
hsCollapse: 折叠面板 hsCollapse: 折叠面板
hsProgress: 进度条 hsProgress: 进度条
hsUpload: 文件上传 hsUpload: 文件上传
hsCheckCard: 多选卡片
hsmenus: 多级菜单 hsmenus: 多级菜单
hsmenu1: 菜单1 hsmenu1: 菜单1
hsmenu1-1: 菜单1-1 hsmenu1-1: 菜单1-1

View File

@ -78,6 +78,7 @@
"path": "^0.12.7", "path": "^0.12.7",
"pinia": "^2.1.7", "pinia": "^2.1.7",
"pinyin-pro": "^3.19.6", "pinyin-pro": "^3.19.6",
"plus-pro-components": "^0.0.1",
"qrcode": "^1.5.3", "qrcode": "^1.5.3",
"qs": "^6.11.2", "qs": "^6.11.2",
"responsive-storage": "^2.2.0", "responsive-storage": "^2.2.0",

16
pnpm-lock.yaml generated
View File

@ -95,6 +95,9 @@ dependencies:
pinyin-pro: pinyin-pro:
specifier: ^3.19.6 specifier: ^3.19.6
version: 3.19.6 version: 3.19.6
plus-pro-components:
specifier: ^0.0.1
version: 0.0.1(element-plus@2.5.6)(vue@3.4.14)
qrcode: qrcode:
specifier: ^1.5.3 specifier: ^1.5.3
version: 1.5.3 version: 1.5.3
@ -6709,6 +6712,19 @@ packages:
mlly: 1.6.1 mlly: 1.6.1
pathe: 1.1.2 pathe: 1.1.2
/plus-pro-components@0.0.1(element-plus@2.5.6)(vue@3.4.14):
resolution: {integrity: sha512-S4qvM6MF12y/G6ueqvgavVw8hVCIjVeO/Qol9uCiMpEJmxH60CfnfMVrx1mmea0jWquPWXFSk5U/Y1I2ua0BEQ==}
peerDependencies:
element-plus: ^2.3.4
vue: ^3.2.0
dependencies:
'@element-plus/icons-vue': 2.3.1(vue@3.4.14)
element-plus: 2.5.6(vue@3.4.14)
lodash-es: 4.17.21
sortablejs: 1.15.2
vue: 3.4.14(typescript@5.3.3)
dev: false
/pngjs@5.0.0: /pngjs@5.0.0:
resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==}
engines: {node: '>=10.13.0'} engines: {node: '>=10.13.0'}

View File

@ -1,55 +1,54 @@
// 这里存放本地图标,在 src/layout/index.vue 文件中加载,避免在首启动加载
import { addIcon } from "@iconify/vue/dist/offline"; import { addIcon } from "@iconify/vue/dist/offline";
/** // 本地菜单图标,后端在路由的 icon 中返回对应的图标字符串并且前端在此处使用 addIcon 添加即可渲染菜单图标
* src/layout/index.vue // @iconify-icons/ep
*/
// 本地菜单图标后端在路由的icon中返回对应的图标字符串并且前端在此处使用addIcon添加即可渲染菜单图标
import UbuntuFill from "@iconify-icons/ri/ubuntu-fill";
import Menu from "@iconify-icons/ep/menu"; import Menu from "@iconify-icons/ep/menu";
import Edit from "@iconify-icons/ep/edit"; import Edit from "@iconify-icons/ep/edit";
import InformationLine from "@iconify-icons/ri/information-line";
import SetUp from "@iconify-icons/ep/set-up"; import SetUp from "@iconify-icons/ep/set-up";
import TerminalWindowLine from "@iconify-icons/ri/terminal-window-line";
import Guide from "@iconify-icons/ep/guide"; import Guide from "@iconify-icons/ep/guide";
import HomeFilled from "@iconify-icons/ep/home-filled";
import Card from "@iconify-icons/ri/bank-card-line";
import ListCheck from "@iconify-icons/ri/list-check";
import Histogram from "@iconify-icons/ep/histogram";
import Ppt from "@iconify-icons/ri/file-ppt-2-line";
import CheckboxCircleLine from "@iconify-icons/ri/checkbox-circle-line";
import FlUser from "@iconify-icons/ri/admin-line";
import Role from "@iconify-icons/ri/admin-fill";
import Setting from "@iconify-icons/ri/settings-3-line";
import Dept from "@iconify-icons/ri/git-branch-line";
import Search from "@iconify-icons/ri/search-line";
import Lollipop from "@iconify-icons/ep/lollipop";
import Monitor from "@iconify-icons/ep/monitor"; import Monitor from "@iconify-icons/ep/monitor";
import Tag from "@iconify-icons/ri/bookmark-2-line"; import Lollipop from "@iconify-icons/ep/lollipop";
import Table from "@iconify-icons/ri/table-line"; import Histogram from "@iconify-icons/ep/histogram";
import Info from "@iconify-icons/ri/file-info-line"; import HomeFilled from "@iconify-icons/ep/home-filled";
import Artboard from "@iconify-icons/ri/artboard-line";
addIcon("ubuntuFill", UbuntuFill);
addIcon("ep:menu", Menu); addIcon("ep:menu", Menu);
addIcon("edit", Edit); addIcon("ep:edit", Edit);
addIcon("informationLine", InformationLine); addIcon("ep:set-up", SetUp);
addIcon("setUp", SetUp); addIcon("ep:guide", Guide);
addIcon("terminalWindowLine", TerminalWindowLine);
addIcon("guide", Guide);
addIcon("homeFilled", HomeFilled);
addIcon("card", Card);
addIcon("listCheck", ListCheck);
addIcon("histogram", Histogram);
addIcon("ppt", Ppt);
addIcon("checkboxCircleLine", CheckboxCircleLine);
addIcon("ri:admin-line", FlUser);
addIcon("ri:admin-fill", Role);
addIcon("ri:settings-3-line", Setting);
addIcon("ri:git-branch-line", Dept);
addIcon("search", Search);
addIcon("ep:lollipop", Lollipop);
addIcon("ep:monitor", Monitor); addIcon("ep:monitor", Monitor);
addIcon("ep:lollipop", Lollipop);
addIcon("ep:histogram", Histogram);
addIcon("ep:home-filled", HomeFilled);
// @iconify-icons/ri
import Tag from "@iconify-icons/ri/bookmark-2-line";
import Ppt from "@iconify-icons/ri/file-ppt-2-line";
import Card from "@iconify-icons/ri/bank-card-line";
import Role from "@iconify-icons/ri/admin-fill";
import Info from "@iconify-icons/ri/file-info-line";
import Dept from "@iconify-icons/ri/git-branch-line";
import Table from "@iconify-icons/ri/table-line";
import Search from "@iconify-icons/ri/search-line";
import FlUser from "@iconify-icons/ri/admin-line";
import Setting from "@iconify-icons/ri/settings-3-line";
import Artboard from "@iconify-icons/ri/artboard-line";
import ListCheck from "@iconify-icons/ri/list-check";
import UbuntuFill from "@iconify-icons/ri/ubuntu-fill";
import InformationLine from "@iconify-icons/ri/information-line";
import TerminalWindowLine from "@iconify-icons/ri/terminal-window-line";
import CheckboxCircleLine from "@iconify-icons/ri/checkbox-circle-line";
addIcon("ri:bookmark-2-line", Tag); addIcon("ri:bookmark-2-line", Tag);
addIcon("table", Table); addIcon("ri:file-ppt-2-line", Ppt);
addIcon("info", Info); addIcon("ri:bank-card-line", Card);
addIcon("artboard", Artboard); addIcon("ri:admin-fill", Role);
addIcon("ri:file-info-line", Info);
addIcon("ri:git-branch-line", Dept);
addIcon("ri:table-line", Table);
addIcon("ri:search-line", Search);
addIcon("ri:admin-line", FlUser);
addIcon("ri:settings-3-line", Setting);
addIcon("ri:artboard-line", Artboard);
addIcon("ri:list-check", ListCheck);
addIcon("ri:ubuntu-fill", UbuntuFill);
addIcon("ri:information-line", InformationLine);
addIcon("ri:terminal-window-line", TerminalWindowLine);
addIcon("ri:checkbox-circle-line", CheckboxCircleLine);

View File

@ -14,7 +14,7 @@ function handleSearch() {
class="search-container w-[40px] h-[48px] flex-c cursor-pointer navbar-bg-hover" class="search-container w-[40px] h-[48px] flex-c cursor-pointer navbar-bg-hover"
@click="handleSearch" @click="handleSearch"
> >
<IconifyIconOffline icon="search" /> <IconifyIconOffline icon="ri:search-line" />
</div> </div>
<SearchModal v-model:value="show" /> <SearchModal v-model:value="show" />
</div> </div>

View File

@ -8,7 +8,7 @@ export const routerArrays: Array<RouteConfigs> =
path: "/welcome", path: "/welcome",
meta: { meta: {
title: "menus.hshome", title: "menus.hshome",
icon: "homeFilled" icon: "ep:home-filled"
} }
} }
] ]

View File

@ -5,7 +5,7 @@ export default {
path: "/able", path: "/able",
redirect: "/able/watermark", redirect: "/able/watermark",
meta: { meta: {
icon: "ubuntuFill", icon: "ri:ubuntu-fill",
title: $t("menus.hsAble"), title: $t("menus.hsAble"),
rank: able rank: able
}, },

View File

@ -5,7 +5,7 @@ export default {
path: "/about", path: "/about",
redirect: "/about/index", redirect: "/about/index",
meta: { meta: {
icon: "info", icon: "ri:file-info-line",
title: $t("menus.hsAbout"), title: $t("menus.hsAbout"),
rank: about rank: about
}, },

View File

@ -6,7 +6,7 @@ export default {
path: "/board", path: "/board",
redirect: "/board/index", redirect: "/board/index",
meta: { meta: {
icon: "artboard", icon: "ri:artboard-line",
title: $t("menus.hsboard"), title: $t("menus.hsboard"),
rank: board rank: board
}, },

View File

@ -31,7 +31,15 @@ export default {
name: "PureUpload", name: "PureUpload",
component: () => import("@/views/components/upload/index.vue"), component: () => import("@/views/components/upload/index.vue"),
meta: { meta: {
title: $t("menus.hsUpload"), title: $t("menus.hsUpload")
}
},
{
path: "/components/check-card",
name: "CheckCard",
component: () => import("@/views/components/check-card.vue"),
meta: {
title: $t("menus.hsCheckCard"),
extraIcon: "IF-pure-iconfont-new svg" extraIcon: "IF-pure-iconfont-new svg"
} }
}, },

View File

@ -5,7 +5,7 @@ export default {
path: "/editor", path: "/editor",
redirect: "/editor/index", redirect: "/editor/index",
meta: { meta: {
icon: "edit", icon: "ep:edit",
title: $t("menus.hseditor"), title: $t("menus.hseditor"),
rank: editor rank: editor
}, },

View File

@ -5,7 +5,7 @@ export default {
path: "/error", path: "/error",
redirect: "/error/403", redirect: "/error/403",
meta: { meta: {
icon: "informationLine", icon: "ri:information-line",
// showLink: false, // showLink: false,
title: $t("menus.hsabnormal"), title: $t("menus.hsabnormal"),
rank: error rank: error

View File

@ -5,7 +5,7 @@ export default {
path: "/flow-chart", path: "/flow-chart",
redirect: "/flow-chart/index", redirect: "/flow-chart/index",
meta: { meta: {
icon: "setUp", icon: "ep:set-up",
title: $t("menus.hsflowChart"), title: $t("menus.hsflowChart"),
rank: flowchart rank: flowchart
}, },

View File

@ -6,7 +6,7 @@ export default {
path: "/form-design", path: "/form-design",
redirect: "/form-design/index", redirect: "/form-design/index",
meta: { meta: {
icon: "terminalWindowLine", icon: "ri:terminal-window-line",
title: $t("menus.hsFormDesign"), title: $t("menus.hsFormDesign"),
rank: formdesign rank: formdesign
}, },

View File

@ -5,7 +5,7 @@ export default {
path: "/guide", path: "/guide",
redirect: "/guide/index", redirect: "/guide/index",
meta: { meta: {
icon: "guide", icon: "ep:guide",
title: $t("menus.hsguide"), title: $t("menus.hsguide"),
rank: guide rank: guide
}, },

View File

@ -9,7 +9,7 @@ export default {
component: Layout, component: Layout,
redirect: "/welcome", redirect: "/welcome",
meta: { meta: {
icon: "homeFilled", icon: "ep:home-filled",
title: $t("menus.hshome"), title: $t("menus.hshome"),
rank: home rank: home
}, },

View File

@ -5,7 +5,7 @@ export default {
path: "/list", path: "/list",
redirect: "/list/card", redirect: "/list/card",
meta: { meta: {
icon: "listCheck", icon: "ri:list-check",
title: $t("menus.hsList"), title: $t("menus.hsList"),
rank: list rank: list
}, },
@ -15,7 +15,7 @@ export default {
name: "ListCard", name: "ListCard",
component: () => import("@/views/list/card/index.vue"), component: () => import("@/views/list/card/index.vue"),
meta: { meta: {
icon: "card", icon: "ri:bank-card-line",
title: $t("menus.hsListCard"), title: $t("menus.hsListCard"),
showParent: true showParent: true
} }

View File

@ -6,7 +6,7 @@ export default {
redirect: "/nested/menu1/menu1-1", redirect: "/nested/menu1/menu1-1",
meta: { meta: {
title: $t("menus.hsmenus"), title: $t("menus.hsmenus"),
icon: "histogram", icon: "ep:histogram",
rank: nested rank: nested
}, },
children: [ children: [

View File

@ -5,7 +5,7 @@ export default {
path: "/ppt", path: "/ppt",
redirect: "/ppt/index", redirect: "/ppt/index",
meta: { meta: {
icon: "ppt", icon: "ri:file-ppt-2-line",
title: "PPT", title: "PPT",
rank: ppt rank: ppt
}, },

View File

@ -5,7 +5,7 @@ export default {
path: "/result", path: "/result",
redirect: "/result/success", redirect: "/result/success",
meta: { meta: {
icon: "checkboxCircleLine", icon: "ri:checkbox-circle-line",
title: $t("menus.hsResult"), title: $t("menus.hsResult"),
rank: result rank: result
}, },

View File

@ -5,7 +5,7 @@ export default {
path: "/pure-table", path: "/pure-table",
redirect: "/pure-table/index", redirect: "/pure-table/index",
meta: { meta: {
icon: "table", icon: "ri:table-line",
title: "pure-admin-table", title: "pure-admin-table",
rank: table rank: table
}, },

View File

@ -10,6 +10,7 @@
.login-container { .login-container {
width: 100vw; width: 100vw;
height: 100vh; height: 100vh;
max-width: 100%;
display: grid; display: grid;
grid-template-columns: repeat(2, 1fr); grid-template-columns: repeat(2, 1fr);
grid-gap: 18rem; grid-gap: 18rem;

View File

@ -0,0 +1,82 @@
<script setup lang="ts">
import { ref, watch } from "vue";
// https://plus-pro-components.com/components/check-card-group.html
import { PlusCheckCardGroup } from "plus-pro-components";
import "plus-pro-components/es/components/check-card-group/style/css";
defineOptions({
name: "CheckCard"
});
const size = ref("default");
const dynamicSize = ref();
const list = ref("0");
const list1 = ref([]);
const options = [
{
title: "标题一",
value: "0",
description: "坚持梦想,成就不凡的自己",
avatar:
"https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg"
},
{
title: "标题二",
value: "1",
description: "每一次努力,都是成长的契机",
avatar:
"https://fuss10.elemecdn.com/1/34/19aa98b1fcb2781c4fba33d850549jpeg.jpeg"
}
];
watch(size, val =>
val === "disabled"
? (dynamicSize.value = "default")
: (dynamicSize.value = size.value)
);
</script>
<template>
<el-card shadow="never">
<template #header>
<div class="card-header">
<el-space wrap :size="40">
<el-link
v-tippy="{
content: '点击查看详细文档'
}"
href="https://plus-pro-components.com/components/check-card-group.html"
target="_blank"
style="font-size: 16px; font-weight: 800"
>
多选卡片组
</el-link>
<el-radio-group v-model="size" size="small">
<el-radio label="large">大尺寸</el-radio>
<el-radio label="default">默认尺寸</el-radio>
<el-radio label="small">小尺寸</el-radio>
<el-radio label="disabled">禁用</el-radio>
</el-radio-group>
</el-space>
</div>
</template>
<p class="mb-2 mt-4">单选</p>
<PlusCheckCardGroup
v-model="list"
:options="options"
:size="dynamicSize"
:disabled="size === 'disabled'"
/>
<p class="mb-2 mt-4">多选</p>
<PlusCheckCardGroup
v-model="list1"
:options="options"
:size="dynamicSize"
:disabled="size === 'disabled'"
multiple
/>
</el-card>
</template>

View File

@ -86,7 +86,7 @@ const optionsIcon: Array<OptionsType> = [
}, },
{ {
label: "周三", label: "周三",
icon: "terminalWindowLine" icon: "ri:terminal-window-line"
}, },
{ {
label: "周四" label: "周四"
@ -103,7 +103,7 @@ const optionsOnlyIcon: Array<OptionsType> = [
icon: HomeFilled icon: HomeFilled
}, },
{ {
icon: "terminalWindowLine" icon: "ri:terminal-window-line"
}, },
{ {
icon: "streamline-emojis:cow-face" icon: "streamline-emojis:cow-face"
@ -131,7 +131,7 @@ const optionsLabel: Array<OptionsType> = [
{ {
label: () => ( label: () => (
<div> <div>
{h(useRenderIcon("terminalWindowLine"), { {h(useRenderIcon("ri:terminal-window-line"), {
class: "m-auto mt-1 w-[18px] h-[18px]" class: "m-auto mt-1 w-[18px] h-[18px]"
})} })}
<p>周二</p> <p>周二</p>

View File

@ -110,7 +110,7 @@ const handleManageProduct = product => {
<el-icon class="el-input__icon"> <el-icon class="el-input__icon">
<IconifyIconOffline <IconifyIconOffline
v-show="searchValue.length === 0" v-show="searchValue.length === 0"
icon="search" icon="ri:search-line"
/> />
</el-icon> </el-icon>
</template> </template>

View File

@ -58,7 +58,7 @@ const {
<el-form-item> <el-form-item>
<el-button <el-button
type="primary" type="primary"
:icon="useRenderIcon('search')" :icon="useRenderIcon('ri:search-line')"
:loading="loading" :loading="loading"
@click="onSearch" @click="onSearch"
> >

View File

@ -48,7 +48,7 @@ const {
<el-form-item> <el-form-item>
<el-button <el-button
type="primary" type="primary"
:icon="useRenderIcon('search')" :icon="useRenderIcon('ri:search-line')"
:loading="loading" :loading="loading"
@click="onSearch" @click="onSearch"
> >

View File

@ -74,7 +74,7 @@ const {
<el-form-item> <el-form-item>
<el-button <el-button
type="primary" type="primary"
:icon="useRenderIcon('search')" :icon="useRenderIcon('ri:search-line')"
:loading="loading" :loading="loading"
@click="onSearch" @click="onSearch"
> >

View File

@ -95,7 +95,7 @@ const {
<el-form-item> <el-form-item>
<el-button <el-button
type="primary" type="primary"
:icon="useRenderIcon('search')" :icon="useRenderIcon('ri:search-line')"
:loading="loading" :loading="loading"
@click="onSearch" @click="onSearch"
> >

View File

@ -110,7 +110,7 @@ defineExpose({ onTreeReset });
<el-icon class="el-input__icon"> <el-icon class="el-input__icon">
<IconifyIconOffline <IconifyIconOffline
v-show="searchValue.length === 0" v-show="searchValue.length === 0"
icon="search" icon="ri:search-line"
/> />
</el-icon> </el-icon>
</template> </template>

View File

@ -36,7 +36,7 @@ const { loading, columns, dataList, pagination, Empty, onCurrentChange } =
circle circle
size="small" size="small"
:title="`查看序号为${row.id}的详情`" :title="`查看序号为${row.id}的详情`"
:icon="useRenderIcon('search')" :icon="useRenderIcon('ri:search-line')"
/> />
</template> </template>
</pure-table> </pure-table>