初始化仓库

This commit is contained in:
wangxiaowei
2025-04-22 14:17:58 +08:00
commit ec21e971be
543 changed files with 35423 additions and 0 deletions

View File

@ -0,0 +1,30 @@
/**
* perm 操作权限处理
* 指令用法:
* <el-button v-perms="['auth.menu/edit']">编辑</el-button>
*/
import useClipboard from 'vue-clipboard3'
import feedback from '@/utils/feedback'
const clipboard = 'data-clipboard-text'
export default {
mounted: (el: HTMLElement, binding: any) => {
el.setAttribute(clipboard, binding.value)
const { toClipboard } = useClipboard()
el.onclick = () => {
toClipboard(el.getAttribute(clipboard)!)
.then(() => {
feedback.msgSuccess('复制成功')
})
.catch(() => {
feedback.msgError('复制失败')
})
}
},
updated: (el: HTMLElement, binding: any) => {
el.setAttribute(clipboard, binding.value)
}
}

View File

@ -0,0 +1,29 @@
/**
* perm 操作权限处理
* 指令用法:
* <el-button v-perms="['auth.menu/edit']">编辑</el-button>
*/
import useUserStore from '@/stores/modules/user'
export default {
mounted: (el: HTMLElement, binding: any) => {
const { value } = binding
const userStore = useUserStore()
const permissions = userStore.perms
const all_permission = '*'
if (Array.isArray(value)) {
if (value.length > 0) {
const hasPermission = permissions.some((key: string) => {
return all_permission == key || value.includes(key)
})
if (!hasPermission) {
el.parentNode && el.parentNode.removeChild(el)
}
}
} else {
throw new Error('like v-perms="[\'auth.menu/edit\']"')
}
}
}

28
src/install/index.ts Normal file
View File

@ -0,0 +1,28 @@
import type { App } from 'vue'
const modules = import.meta.glob('./**/*', { eager: true })
// 安装方法,执行某一类相同操作
function install(app: App<Element>) {
Object.keys(modules).forEach((key) => {
const name = key.replace(/(.*\/)*([^.]+).*/gi, '$2')
const type = key.replace(/^\.\/([\w-]+).*/gi, '$1')
const module: any = modules[key]
if (module.default) {
switch (type) {
// 用于注册全局指令
case 'directives':
app.directive(name, module.default)
break
// 使用插件
case 'plugins':
typeof module.default === 'function' && module.default(app)
break
}
}
})
}
export default {
install
}

View File

@ -0,0 +1,62 @@
//引入 echarts 核心模块,核心模块提供了 echarts 使用必须要的接口。
//引入柱状图图表,图表后缀都为 Chart
import {
BarChart,
LineChart,
MapChart,
PictorialBarChart,
PieChart,
RadarChart,
ScatterChart
} from 'echarts/charts'
// 引入提示框,标题,直角坐标系,数据集,内置数据转换器组件,组件后缀都为 Component
import {
AriaComponent,
CalendarComponent,
DataZoomComponent,
GraphicComponent,
GridComponent,
LegendComponent,
ParallelComponent,
PolarComponent,
RadarComponent,
TimelineComponent,
TitleComponent,
ToolboxComponent,
TooltipComponent,
VisualMapComponent
} from 'echarts/components'
import * as echarts from 'echarts/core'
//标签自动布局,全局过渡动画等特性
import { LabelLayout, UniversalTransition } from 'echarts/features'
//引入 Canvas 渲染器,注意引入 CanvasRenderer 或者 SVGRenderer 是必须的一步
import { CanvasRenderer } from 'echarts/renderers'
// 注册必须的组件
echarts.use([
LegendComponent,
TitleComponent,
TooltipComponent,
GridComponent,
PolarComponent,
AriaComponent,
ParallelComponent,
BarChart,
LineChart,
PieChart,
MapChart,
RadarChart,
PictorialBarChart,
RadarComponent,
ToolboxComponent,
DataZoomComponent,
VisualMapComponent,
TimelineComponent,
CalendarComponent,
GraphicComponent,
ScatterChart,
CanvasRenderer,
LabelLayout,
UniversalTransition
])

View File

@ -0,0 +1,12 @@
//https://github.com/element-plus/element-plus/issues/7293
import 'element-plus/es/components/dialog/style/css'
import * as ElementPlusIcons from '@element-plus/icons-vue'
import type { App } from 'vue'
export default (app: App<Element>) => {
// 全局注册ElementPlus图标
for (const [key, component] of Object.entries(ElementPlusIcons)) {
app.component(key, component)
}
}

View File

@ -0,0 +1,10 @@
import 'highlight.js/styles/github.css'
import hljsVuePlugin from '@highlightjs/vue-plugin'
import hljs from 'highlight.js'
import type { App } from 'vue'
console.log(hljs)
export default (app: App<Element>) => {
app.use(hljsVuePlugin)
}

View File

@ -0,0 +1,7 @@
import type { App } from 'vue'
import store from '@/stores'
export default (app: App<Element>) => {
app.use(store)
}

View File

@ -0,0 +1,9 @@
import type { App } from 'vue'
import router from '@/router'
import { registerRouteGuard } from '@/router/guard'
export default (app: App<Element>) => {
registerRouteGuard(router)
app.use(router)
}