vsoft-ui 1.0.3 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,214 +1,199 @@
1
1
  # VSoft UI
2
2
 
3
- 基于 Element Plus 的 Vue3 组件库,支持全局权限控制
3
+ 基于 Element Plus 的二次封装组件库,包含全局权限控制功能。
4
4
 
5
- [![npm version](https://img.shields.io/npm/v/vsoft-ui.svg)](https://www.npmjs.com/package/vsoft-ui)
6
- [![license](https://img.shields.io/npm/l/vsoft-ui.svg)](https://github.com/your-username/vsoft-ui/blob/main/LICENSE)
7
- [![vue](https://img.shields.io/badge/Vue-3.3+-brightgreen.svg)](https://vuejs.org/)
8
- [![element-plus](https://img.shields.io/badge/Element%20Plus-2.13+-blue.svg)](https://element-plus.org/)
9
-
10
- ## 简介
11
-
12
- VSoft UI 是一个基于 Vue 3 和 Element Plus 的二次封装组件库,专注于提供简单高效的权限控制解决方案。通过组件级、指令级和 Hook 级三种权限控制方式,帮助开发者快速构建具有权限管理功能的应用。
13
-
14
- ## 主要特性
15
-
16
- - 📦 基于 Element Plus,提供一致的设计语言
17
- - 🔒 内置权限控制功能,支持三种权限控制方式
18
- - 🚀 零学习成本,基于 Vue 3 Composition API
19
- - 📝 完整的 TypeScript 支持
20
- - 🛠️ 丰富的示例和详细文档
21
-
22
- ## 快速开始
23
-
24
- ### 安装
5
+ ## 安装
25
6
 
26
7
  ```bash
27
- # 使用 pnpm(推荐)
28
- pnpm add vsoft-ui
8
+ npm install vsoft-ui element-plus @element-plus/icons-vue
9
+ ```
10
+
11
+ ## 使用
29
12
 
30
- # 或使用 npm
31
- npm install vsoft-ui
13
+ ### 1. 引入样式
32
14
 
33
- # 或使用 yarn
34
- yarn add vsoft-ui
15
+ ```js
16
+ // 引入 Element Plus 样式
17
+ import 'element-plus/dist/index.css'
35
18
  ```
36
19
 
37
- ### 引入
20
+ ### 2. 注册组件库
38
21
 
39
- ```typescript
22
+ ```js
23
+ // main.ts
40
24
  import { createApp } from 'vue'
41
- import ElementPlus from 'element-plus'
42
- import 'element-plus/dist/index.css'
43
- import VSoftUI from 'vsoft-ui'
44
25
  import App from './App.vue'
26
+ import VSoftUI from 'vsoft-ui'
45
27
 
46
28
  const app = createApp(App)
47
- app.use(ElementPlus)
29
+
30
+ // 安装组件库
48
31
  app.use(VSoftUI)
32
+
49
33
  app.mount('#app')
50
34
  ```
51
35
 
52
- ### 设置权限
53
-
54
- 在应用启动时设置用户权限:
36
+ ### 3. 权限控制配置
55
37
 
56
- ```typescript
57
- // main.ts
58
- import { permission } from 'vsoft-ui'
38
+ ```js
39
+ // 在适当的位置设置权限
40
+ import { usePermission } from 'vsoft-ui'
59
41
 
60
- // 设置用户权限
61
- permission.setPermissions(['button:add', 'button:edit', 'input:query'])
42
+ const { setPermissions } = usePermission()
43
+ setPermissions(['user:view', 'user:edit', 'button:click'])
62
44
  ```
63
45
 
64
46
  ## 组件使用
65
47
 
66
- ### 按钮组件
67
-
68
- ```vue
69
- <template>
70
- <!-- 基本用法 -->
71
- <v-button type="primary">主要按钮</v-button>
72
-
73
- <!-- 权限控制 -->
74
- <v-button type="success" permission="button:add">添加按钮</v-button>
75
- <v-button type="warning" permission="['button:edit', 'button:update']">编辑按钮</v-button>
76
- <v-button type="danger" permission="['button:delete', 'button:manage']" permission-mode="all">删除按钮</v-button>
77
- </template>
78
- ```
79
-
80
- ### 输入框组件
48
+ 所有组件均以 `V` 开头,保持与 Element Plus API 一致:
81
49
 
82
50
  ```vue
83
51
  <template>
84
- <!-- 基本用法 -->
85
- <v-input v-model="value" placeholder="请输入内容" />
52
+ <!-- 权限控制指令 -->
53
+ <v-button v-permission="'user:view'" type="primary">查看</v-button>
54
+ <v-button v-permission="'user:edit'" type="success">编辑</v-button>
86
55
 
87
- <!-- 权限控制 -->
88
- <v-input v-model="value" permission="input:query" placeholder="查询输入框" />
56
+ <!-- 普通组件 -->
57
+ <v-form>
58
+ <v-form-item label="用户名" prop="username">
59
+ <v-input v-model="form.username" placeholder="请输入用户名"></v-input>
60
+ </v-form-item>
61
+ </v-form>
89
62
  </template>
90
63
 
91
- <script setup lang="ts">
92
- import { ref } from 'vue'
64
+ <script setup>
65
+ import { ref, reactive } from 'vue'
93
66
 
94
- const value = ref('')
67
+ const form = reactive({
68
+ username: ''
69
+ })
95
70
  </script>
96
71
  ```
97
72
 
98
73
  ## 权限控制
99
74
 
100
- VSoft UI 提供三种权限控制方式:
101
-
102
- ### 1. 组件级权限控制
103
-
104
- 所有 VSoft UI 组件都支持 `permission` 和 `permission-mode` 属性:
75
+ ### 指令方式
105
76
 
106
77
  ```vue
107
- <template>
108
- <!-- 基本权限控制 -->
109
- <v-button permission="button:add">添加按钮</v-button>
110
-
111
- <!-- 多权限控制(任一权限) -->
112
- <v-button permission="['button:edit', 'button:update']">编辑按钮</v-button>
113
-
114
- <!-- 多权限控制(所有权限) -->
115
- <v-button permission="['button:delete', 'button:manage']" permission-mode="all">删除按钮</v-button>
116
- </template>
117
- ```
78
+ <!-- 单个权限 -->
79
+ <v-button v-permission="'user:view'">查看</v-button>
118
80
 
119
- ### 2. 指令级权限控制
81
+ <!-- any 模式 - 满足任一权限 -->
82
+ <v-button v-permission:any="['user:view', 'user:edit']">编辑</v-button>
120
83
 
121
- 使用 `v-permission` 指令对任何元素进行权限控制:
122
-
123
- ```vue
124
- <template>
125
- <!-- 基本权限控制 -->
126
- <el-button v-permission="'button:delete'" type="danger">删除按钮</el-button>
127
-
128
- <!-- 使用 any 修饰符 -->
129
- <el-button v-permission:any="['button:edit', 'button:update']" type="warning">编辑按钮</el-button>
130
-
131
- <!-- 使用 all 修饰符 -->
132
- <el-button v-permission:all="['button:manage', 'button:admin']" type="primary">管理按钮</el-button>
133
- </template>
84
+ <!-- all 模式 - 满足所有权限 -->
85
+ <v-button v-permission:all="['user:view', 'user:admin']">管理</v-button>
134
86
  ```
135
87
 
136
- ### 3. Hook 级权限控制
137
-
138
- 使用 `usePermission` Hook 进行更灵活的权限判断:
88
+ ### 组合式函数
139
89
 
140
90
  ```vue
141
91
  <template>
142
- <el-button v-if="canAdd" type="primary" @click="handleAdd">添加按钮</el-button>
143
- <el-button v-if="canEdit" type="success" @click="handleEdit">编辑按钮</el-button>
92
+ <v-button @click="checkPermission">检查权限</v-button>
144
93
  </template>
145
94
 
146
- <script setup lang="ts">
95
+ <script setup>
147
96
  import { usePermission } from 'vsoft-ui'
148
97
 
149
- const { hasPermission } = usePermission()
150
-
151
- const canAdd = hasPermission('button:add')
152
- const canEdit = hasPermission('button:edit')
98
+ const { hasPermission, hasAllPermissions } = usePermission()
153
99
 
154
- const handleAdd = () => { /* ... */ }
155
- const handleEdit = () => { /* ... */ }
100
+ const checkPermission = () => {
101
+ const canView = hasPermission('user:view')
102
+ const canAdmin = hasAllPermissions(['user:view', 'user:admin'])
103
+ console.log(canView, canAdmin)
104
+ }
156
105
  </script>
157
106
  ```
158
107
 
159
- ## 开发
160
-
161
- ### 运行示例
162
-
163
- ```bash
164
- pnpm dev
165
- ```
166
-
167
- ### 构建
168
-
169
- ```bash
170
- pnpm build
171
- ```
172
-
173
- ### 文档
174
-
175
- ```bash
176
- # 启动文档开发服务器
177
- pnpm dev:docs
178
-
179
- # 构建文档
180
- pnpm build:docs
181
- ```
182
-
183
- ## 文档
184
-
185
- - [完整文档](https://your-username.github.io/vsoft-ui/)
186
- - [权限控制指南](/permission/usage)
187
- - [组件文档](/components)
188
-
189
- ## 贡献
190
-
191
- 欢迎提交 Issue 和 Pull Request!
192
-
193
- ## 许可证
194
-
195
- [MIT](LICENSE)
108
+ ## 组件列表
109
+
110
+ - VAffix
111
+ - VAlert
112
+ - VAside
113
+ - VAvatar
114
+ - VBacktop
115
+ - VBadge
116
+ - VBreadcrumb
117
+ - VBreadcrumbItem
118
+ - VButton
119
+ - VCalendar
120
+ - VCard
121
+ - VCarousel
122
+ - VCarouselItem
123
+ - VCascader
124
+ - VCheckbox
125
+ - VCheckboxButton
126
+ - VCollapse
127
+ - VCollapseItem
128
+ - VColorPicker
129
+ - VConfigProvider
130
+ - VContainer
131
+ - VDatePicker
132
+ - VDialog
133
+ - VDivider
134
+ - VDrawer
135
+ - VDropdown
136
+ - VDropdownItem
137
+ - VDropdownMenu
138
+ - VEmpty
139
+ - VFooter
140
+ - VForm
141
+ - VFormItem
142
+ - VHeader
143
+ - VIcon
144
+ - VImage
145
+ - VInput
146
+ - VInputNumber
147
+ - VLink
148
+ - VMain
149
+ - VMenu
150
+ - VMenuGroup
151
+ - VMenuItem
152
+ - VOption
153
+ - VOptionGroup
154
+ - VPagination
155
+ - VPopconfirm
156
+ - VPopper
157
+ - VProgress
158
+ - VRadio
159
+ - VRadioButton
160
+ - VRate
161
+ - VScrollbar
162
+ - VSelect
163
+ - VSelectV2
164
+ - VSlider
165
+ - VSpace
166
+ - VStep
167
+ - VSteps
168
+ - VSubMenu
169
+ - VSwitch
170
+ - VTable
171
+ - VTableColumn
172
+ - VTabPane
173
+ - VTabs
174
+ - VTag
175
+ - VTimeline
176
+ - VTimelineItem
177
+ - VTimePicker
178
+ - VTooltip
179
+ - VTransfer
180
+ - VTree
181
+ - VTreeNode
182
+ - VUpload
183
+ - VUploadDragger
184
+
185
+ ## 注意事项
186
+
187
+ 1. 本组件库基于 Element Plus,使用前请确保已安装 Element Plus 和 @element-plus/icons-vue
188
+ 2. 请手动引入 Element Plus 样式:`import 'element-plus/dist/index.css'`
189
+ 3. 组件库已自动安装 Element Plus,无需再次单独安装
190
+ 4. 所有组件均保持与 Element Plus API 一致,使用方式相同
196
191
 
197
192
  ## 更新日志
198
193
 
199
- ### v1.0.2
194
+ - 1.0.0: 初始版本,包含权限控制和基础组件
195
+ - 1.0.4: 优化打包配置,修复样式问题
200
196
 
201
- - 修复组件构建问题
202
- - 优化权限控制逻辑
203
- - 完善文档内容
204
-
205
- ### v1.0.1
206
-
207
- - 修复组件级权限控制问题
208
- - 优化组件传参机制
209
-
210
- ### v1.0.0
197
+ ## 许可证
211
198
 
212
- - 初始版本发布
213
- - 实现 Button 和 Input 组件
214
- - 添加三种权限控制方式
199
+ MIT