@xjw_/vue2-npm-system 1.0.78 → 1.0.80

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.
Files changed (215) hide show
  1. package/README.md +379 -379
  2. package/dist/@xjw_/vue2-npm-system.js +1 -1
  3. package/dist/@xjw_/vue2-npm-system.js.map +1 -1
  4. package/dist/jc-vue-components.min.js +2 -1
  5. package/dist/jc-vue-components.min.js.map +1 -0
  6. package/lib/_virtual/_commonjsHelpers.js +2 -1
  7. package/lib/_virtual/_commonjsHelpers.js.map +1 -0
  8. package/lib/_virtual/_vue.js +1 -0
  9. package/lib/_virtual/_vue.js.map +1 -0
  10. package/lib/_virtual/dom.js +1 -0
  11. package/lib/_virtual/dom.js.map +1 -0
  12. package/lib/_virtual/index.js +1 -0
  13. package/lib/_virtual/index.js.map +1 -0
  14. package/lib/_virtual/merge.js +1 -0
  15. package/lib/_virtual/merge.js.map +1 -0
  16. package/lib/_virtual/popup-manager.js +1 -0
  17. package/lib/_virtual/popup-manager.js.map +1 -0
  18. package/lib/_virtual/scrollbar-width.js +1 -0
  19. package/lib/_virtual/scrollbar-width.js.map +1 -0
  20. package/lib/_virtual/types.js +1 -0
  21. package/lib/_virtual/types.js.map +1 -0
  22. package/lib/_virtual/util.js +1 -0
  23. package/lib/_virtual/util.js.map +1 -0
  24. package/lib/_virtual/vdom.js +1 -0
  25. package/lib/_virtual/vdom.js.map +1 -0
  26. package/lib/assets/svg/filter.svg.js +2 -0
  27. package/lib/assets/svg/filter.svg.js.map +1 -0
  28. package/lib/assets/svg/print.svg.js +2 -0
  29. package/lib/assets/svg/print.svg.js.map +1 -0
  30. package/lib/assets/svg/search.svg.js +2 -0
  31. package/lib/assets/svg/search.svg.js.map +1 -0
  32. package/lib/assets/svg/upload.svg.js +2 -0
  33. package/lib/assets/svg/upload.svg.js.map +1 -0
  34. package/lib/components/SvgIcon.js +2 -1
  35. package/lib/components/SvgIcon.map_script.js +1 -0
  36. package/lib/components/SvgIcon.vue +65 -0
  37. package/lib/components/SvgIcon.vue.js.map +1 -0
  38. package/lib/components/SvgIcon.vue_rollup-plugin-vue_script.js +2 -0
  39. package/lib/components/SvgIcon.vue_rollup-plugin-vue_styles.0.js +2 -0
  40. package/lib/components/SvgIcon.vue_rollup-plugin-vue_styles.0.vue.js.map +1 -0
  41. package/lib/components/XBusinessLog.js +2 -1
  42. package/lib/components/XBusinessLog.map_script.js +1 -0
  43. package/lib/components/XBusinessLog.vue +275 -0
  44. package/lib/components/XBusinessLog.vue.js.map +1 -0
  45. package/lib/components/XBusinessLog.vue_rollup-plugin-vue_script.js +2 -0
  46. package/lib/components/XBusinessLog.vue_rollup-plugin-vue_styles.0.js +2 -0
  47. package/lib/components/XBusinessLog.vue_rollup-plugin-vue_styles.0.vue.js.map +1 -0
  48. package/lib/components/XDatePicker.js +2 -1
  49. package/lib/components/XDatePicker.map_script.js +1 -0
  50. package/lib/components/XDatePicker.vue +229 -0
  51. package/lib/components/XDatePicker.vue.js.map +1 -0
  52. package/lib/components/XDatePicker.vue_rollup-plugin-vue_script.js +2 -0
  53. package/lib/components/XDatePicker.vue_rollup-plugin-vue_styles.0.js +2 -0
  54. package/lib/components/XDatePicker.vue_rollup-plugin-vue_styles.0.vue.js.map +1 -0
  55. package/lib/components/XElForm.js +2 -1
  56. package/lib/components/XElForm.map_script.js +1 -0
  57. package/lib/components/XElForm.vue +164 -0
  58. package/lib/components/XElForm.vue.js.map +1 -0
  59. package/lib/components/XElForm.vue_rollup-plugin-vue_script.js +2 -0
  60. package/lib/components/XElForm.vue_rollup-plugin-vue_styles.0.js +2 -0
  61. package/lib/components/XElForm.vue_rollup-plugin-vue_styles.0.vue.js.map +1 -0
  62. package/lib/components/XElFormItem.js +2 -1
  63. package/lib/components/XElFormItem.map_script.js +1 -0
  64. package/lib/components/XElFormItem.vue +113 -0
  65. package/lib/components/XElFormItem.vue.js.map +1 -0
  66. package/lib/components/XElFormItem.vue_rollup-plugin-vue_script.js +2 -0
  67. package/lib/components/XElFormItem.vue_rollup-plugin-vue_styles.0.js +2 -0
  68. package/lib/components/XElFormItem.vue_rollup-plugin-vue_styles.0.vue.js.map +1 -0
  69. package/lib/components/XElOption.js +2 -1
  70. package/lib/components/XElOption.map_script.js +1 -0
  71. package/lib/components/XElOption.vue +99 -0
  72. package/lib/components/XElOption.vue.js.map +1 -0
  73. package/lib/components/XElOption.vue_rollup-plugin-vue_script.js +2 -0
  74. package/lib/components/XElOption.vue_rollup-plugin-vue_styles.0.js +2 -0
  75. package/lib/components/XElOption.vue_rollup-plugin-vue_styles.0.vue.js.map +1 -0
  76. package/lib/components/XElSelect.js +2 -1
  77. package/lib/components/XElSelect.map_script.js +1 -0
  78. package/lib/components/XElSelect.vue +164 -0
  79. package/lib/components/XElSelect.vue.js.map +1 -0
  80. package/lib/components/XElSelect.vue_rollup-plugin-vue_script.js +2 -0
  81. package/lib/components/XElSelect.vue_rollup-plugin-vue_styles.0.js +2 -0
  82. package/lib/components/XElSelect.vue_rollup-plugin-vue_styles.0.vue.js.map +1 -0
  83. package/lib/components/XPagination.js +2 -1
  84. package/lib/components/XPagination.map_script.js +1 -0
  85. package/lib/components/XPagination.vue +102 -0
  86. package/lib/components/XPagination.vue.js.map +1 -0
  87. package/lib/components/XPagination.vue_rollup-plugin-vue_script.js +2 -0
  88. package/lib/components/XPagination.vue_rollup-plugin-vue_styles.0.js +2 -0
  89. package/lib/components/XPagination.vue_rollup-plugin-vue_styles.0.vue.js.map +1 -0
  90. package/lib/components/XReportTable.js +2 -1
  91. package/lib/components/XReportTable.map_script.js +1 -0
  92. package/lib/components/XReportTable.vue +477 -0
  93. package/lib/components/XReportTable.vue.js.map +1 -0
  94. package/lib/components/XReportTable.vue_rollup-plugin-vue_script.js +2 -0
  95. package/lib/components/XReportTable.vue_rollup-plugin-vue_styles.0.js +2 -0
  96. package/lib/components/XReportTable.vue_rollup-plugin-vue_styles.0.vue.js.map +1 -0
  97. package/lib/components/XSearchBar.js +2 -1
  98. package/lib/components/XSearchBar.map_script.js +1 -0
  99. package/lib/components/XSearchBar.vue +494 -0
  100. package/lib/components/XSearchBar.vue.js.map +1 -0
  101. package/lib/components/XSearchBar.vue_rollup-plugin-vue_script.js +2 -0
  102. package/lib/components/XSearchBar.vue_rollup-plugin-vue_styles.0.js +2 -0
  103. package/lib/components/XSearchBar.vue_rollup-plugin-vue_styles.0.vue.js.map +1 -0
  104. package/lib/components/XVxeColumn.js +2 -1
  105. package/lib/components/XVxeColumn.map_script.js +1 -0
  106. package/lib/components/XVxeColumn.vue +49 -0
  107. package/lib/components/XVxeColumn.vue.js.map +1 -0
  108. package/lib/components/XVxeColumn.vue_rollup-plugin-vue_script.js +2 -0
  109. package/lib/components/XVxeColumn.vue_rollup-plugin-vue_styles.0.js +2 -0
  110. package/lib/components/XVxeColumn.vue_rollup-plugin-vue_styles.0.vue.js.map +1 -0
  111. package/lib/components/XVxeTable.js +2 -1
  112. package/lib/components/XVxeTable.map_script.js +1 -0
  113. package/lib/components/XVxeTable.vue +426 -0
  114. package/lib/components/XVxeTable.vue.js.map +1 -0
  115. package/lib/components/XVxeTable.vue_rollup-plugin-vue_script.js +2 -0
  116. package/lib/components/XVxeTable.vue_rollup-plugin-vue_styles.0.js +2 -0
  117. package/lib/components/XVxeTable.vue_rollup-plugin-vue_styles.0.vue.js.map +1 -0
  118. package/lib/index.css +1 -1
  119. package/lib/index.js +172 -1
  120. package/lib/index.js.map +1 -0
  121. package/lib/node_modules/@babel/runtime/helpers/defineProperty.js +1 -0
  122. package/lib/node_modules/@babel/runtime/helpers/defineProperty.js.map +1 -0
  123. package/lib/node_modules/@babel/runtime/helpers/typeof.js +1 -0
  124. package/lib/node_modules/@babel/runtime/helpers/typeof.js.map +1 -0
  125. package/lib/node_modules/element-ui/lib/message.js +1 -0
  126. package/lib/node_modules/element-ui/lib/message.js.map +1 -0
  127. package/lib/node_modules/element-ui/lib/theme-chalk/base.css.js +2 -0
  128. package/lib/node_modules/element-ui/lib/theme-chalk/base.css.js.map +1 -0
  129. package/lib/node_modules/element-ui/lib/theme-chalk/message.css.js +2 -0
  130. package/lib/node_modules/element-ui/lib/theme-chalk/message.css.js.map +1 -0
  131. package/lib/node_modules/element-ui/lib/utils/dom.js +1 -0
  132. package/lib/node_modules/element-ui/lib/utils/dom.js.map +1 -0
  133. package/lib/node_modules/element-ui/lib/utils/merge.js +1 -0
  134. package/lib/node_modules/element-ui/lib/utils/merge.js.map +1 -0
  135. package/lib/node_modules/element-ui/lib/utils/popup/index.js +1 -0
  136. package/lib/node_modules/element-ui/lib/utils/popup/index.js.map +1 -0
  137. package/lib/node_modules/element-ui/lib/utils/popup/popup-manager.js +1 -0
  138. package/lib/node_modules/element-ui/lib/utils/popup/popup-manager.js.map +1 -0
  139. package/lib/node_modules/element-ui/lib/utils/scrollbar-width.js +1 -0
  140. package/lib/node_modules/element-ui/lib/utils/scrollbar-width.js.map +1 -0
  141. package/lib/node_modules/element-ui/lib/utils/types.js +1 -0
  142. package/lib/node_modules/element-ui/lib/utils/types.js.map +1 -0
  143. package/lib/node_modules/element-ui/lib/utils/util.js +1 -0
  144. package/lib/node_modules/element-ui/lib/utils/util.js.map +1 -0
  145. package/lib/node_modules/element-ui/lib/utils/vdom.js +1 -0
  146. package/lib/node_modules/element-ui/lib/utils/vdom.js.map +1 -0
  147. package/lib/node_modules/style-inject/dist/style-inject.es.js +1 -0
  148. package/lib/node_modules/vue-runtime-helpers/dist/normalize-component.mjs.js +1 -0
  149. package/lib/node_modules/vue-runtime-helpers/dist/normalize-component.mjs.js.map +1 -0
  150. package/lib/plugins/svg-icon.js +145 -1
  151. package/lib/plugins/svg-icon.js.map +1 -0
  152. package/lib/styles/x-ui.scss +159 -159
  153. package/lib/styles/x-ui.scss.js +2 -0
  154. package/lib/styles/x-ui.scss.js.map +1 -0
  155. package/lib/styles.js +2 -0
  156. package/lib/styles.js.map +1 -0
  157. package/lib/utils/LuoFormat.js +65 -1
  158. package/lib/utils/LuoFormat.js.map +1 -0
  159. package/lib/utils/format.js +55 -1
  160. package/lib/utils/format.js.map +1 -0
  161. package/lib/utils/request.js +252 -1
  162. package/lib/utils/request.js.map +1 -0
  163. package/lib/utils/validate.js +14 -1
  164. package/lib/utils/validate.js.map +1 -0
  165. package/package.json +6 -21
  166. package/dist/jc-vue-components.js +0 -2
  167. package/dist/jc-vue-components.js.map +0 -1
  168. package/dist/jc-vue-components.min.css +0 -1
  169. package/es/_virtual/_commonjsHelpers.js +0 -1
  170. package/es/_virtual/_vue.js +0 -1
  171. package/es/_virtual/dom.js +0 -1
  172. package/es/_virtual/index.js +0 -1
  173. package/es/_virtual/merge.js +0 -1
  174. package/es/_virtual/popup-manager.js +0 -1
  175. package/es/_virtual/scrollbar-width.js +0 -1
  176. package/es/_virtual/types.js +0 -1
  177. package/es/_virtual/util.js +0 -1
  178. package/es/_virtual/vdom.js +0 -1
  179. package/es/assets/svg/filter.svg +0 -3
  180. package/es/assets/svg/print.svg +0 -1
  181. package/es/assets/svg/search.svg +0 -1
  182. package/es/assets/svg/upload.svg +0 -1
  183. package/es/components/SvgIcon.js +0 -1
  184. package/es/components/XBusinessLog.js +0 -1
  185. package/es/components/XDatePicker.js +0 -1
  186. package/es/components/XElForm.js +0 -1
  187. package/es/components/XElFormItem.js +0 -1
  188. package/es/components/XElOption.js +0 -1
  189. package/es/components/XElSelect.js +0 -1
  190. package/es/components/XPagination.js +0 -1
  191. package/es/components/XReportTable.js +0 -1
  192. package/es/components/XSearchBar.js +0 -1
  193. package/es/components/XVxeColumn.js +0 -1
  194. package/es/components/XVxeTable.js +0 -1
  195. package/es/index.css +0 -1
  196. package/es/index.js +0 -1
  197. package/es/node_modules/@babel/runtime/helpers/defineProperty.js +0 -1
  198. package/es/node_modules/@babel/runtime/helpers/typeof.js +0 -1
  199. package/es/node_modules/element-ui/lib/message.js +0 -1
  200. package/es/node_modules/element-ui/lib/utils/dom.js +0 -1
  201. package/es/node_modules/element-ui/lib/utils/merge.js +0 -1
  202. package/es/node_modules/element-ui/lib/utils/popup/index.js +0 -1
  203. package/es/node_modules/element-ui/lib/utils/popup/popup-manager.js +0 -1
  204. package/es/node_modules/element-ui/lib/utils/scrollbar-width.js +0 -1
  205. package/es/node_modules/element-ui/lib/utils/types.js +0 -1
  206. package/es/node_modules/element-ui/lib/utils/util.js +0 -1
  207. package/es/node_modules/element-ui/lib/utils/vdom.js +0 -1
  208. package/es/node_modules/vue-runtime-helpers/dist/normalize-component.mjs.js +0 -1
  209. package/es/plugins/svg-icon.js +0 -1
  210. package/es/styles/variables.scss +0 -56
  211. package/es/styles/x-ui.scss +0 -160
  212. package/es/utils/LuoFormat.js +0 -1
  213. package/es/utils/format.js +0 -1
  214. package/es/utils/request.js +0 -1
  215. package/es/utils/validate.js +0 -1
package/README.md CHANGED
@@ -1,379 +1,379 @@
1
- # JC Vue Components
2
-
3
- 基于 Element-UI 的 Vue2 组件库,二次封装常用组件,提供更丰富的业务功能。
4
-
5
- ## 版本信息
6
-
7
- - Vue: 2.6.10
8
- - Element-UI: 2.13.2
9
- - VXE-Table: ^3.2.20
10
-
11
- ## 安装
12
-
13
- ```bash
14
- npm install @xjw_/vue2-npm-system
15
- ```
16
-
17
- ## 快速开始
18
-
19
- ### 全局注册
20
-
21
- ```javascript
22
- import Vue from 'vue'
23
- import ElementUI from 'element-ui'
24
- import JcComponents from '@xjw_/vue2-npm-system'
25
-
26
- // 注意:需要自行导入 Element-UI 样式
27
- import 'element-ui/lib/theme-chalk/index.css'
28
-
29
- Vue.use(ElementUI)
30
- Vue.use(JcComponents)
31
- ```
32
-
33
- ### 按需引入
34
-
35
- ```javascript
36
- import Vue from 'vue'
37
- import { JcButton, JcInput, JcTable } from '@xjw_/vue2-npm-system'
38
-
39
- Vue.component('JcButton', JcButton)
40
- Vue.component('JcInput', JcInput)
41
- Vue.component('JcTable', JcTable)
42
- ```
43
-
44
- ## 工具函数
45
-
46
- ### createRequest 请求封装
47
-
48
- 基于 axios 的通用请求封装,支持统一的错误处理和 token 管理。
49
-
50
- ```javascript
51
- import { createRequest } from '@xjw_/vue2-npm-system'
52
-
53
- // 创建请求实例
54
- const request = createRequest({
55
- baseURL: 'http://api.example.com',
56
- timeout: 30000,
57
- // 获取 token 的方法
58
- getToken: () => {
59
- return localStorage.getItem('token')
60
- },
61
- // Token 过期回调
62
- onTokenExpired: () => {
63
- // 清除 token,跳转登录页等
64
- localStorage.removeItem('token')
65
- window.location.href = '/login'
66
- },
67
- // 自定义成功状态码
68
- successCodes: [200, 2000, 3000]
69
- })
70
-
71
- // 使用请求实例
72
- export function getUserList(params, pageSize, pageNum) {
73
- return request({
74
- url: '/api/user/list',
75
- method: 'post',
76
- data: {
77
- ...params,
78
- pageSize,
79
- pageNum
80
- }
81
- })
82
- }
83
- ```
84
-
85
- **配置项:**
86
- - `baseURL`: API 基础地址
87
- - `timeout`: 超时时间(毫秒)
88
- - `getToken`: 获取 token 的函数
89
- - `onTokenExpired`: Token 过期时的回调
90
- - `successCodes`: 成功的状态码数组 (默认: [200, 2000, 3000])
91
- - `errorHandler`: 自定义错误处理函数
92
- - `headers`: 额外的请求头
93
-
94
- ## 组件列表
95
-
96
- ### JcButton 按钮
97
-
98
- 增强的按钮组件,支持防抖、加载状态等功能。
99
-
100
- ```vue
101
- <template>
102
- <jc-button
103
- jc-type="primary"
104
- :debounce="1000"
105
- :loading="loading"
106
- @click="handleClick"
107
- >
108
- 点击我
109
- </jc-button>
110
- </template>
111
- ```
112
-
113
- **Props:**
114
- - `jc-type`: 按钮类型 (default: 'primary')
115
- - `size`: 尺寸 (default: 'medium')
116
- - `disabled`: 是否禁用 (default: false)
117
- - `loading`: 是否加载中 (default: false)
118
- - `debounce`: 防抖时间(毫秒)(default: 0)
119
-
120
- **Events:**
121
- - `click`: 点击事件
122
-
123
- ### JcInput 输入框
124
-
125
- 增强的输入框组件,支持字数统计、密码显示等功能。
126
-
127
- ```vue
128
- <template>
129
- <jc-input
130
- v-model="value"
131
- type="password"
132
- show-password
133
- show-count
134
- :maxlength="100"
135
- placeholder="请输入"
136
- />
137
- </template>
138
- ```
139
-
140
- **Props:**
141
- - `value`: 绑定值
142
- - `type`: 输入框类型 (default: 'text')
143
- - `size`: 尺寸 (default: 'medium')
144
- - `disabled`: 是否禁用 (default: false)
145
- - `clearable`: 是否可清空 (default: true)
146
- - `showPassword`: 显示切换密码图标 (default: false)
147
- - `maxlength`: 最大长度
148
- - `showCount`: 显示字数统计 (default: false)
149
-
150
- **Events:**
151
- - `input`: 输入事件
152
- - `change`: 改变事件
153
- - `blur`: 失焦事件
154
- - `focus`: 聚焦事件
155
-
156
- ### JcDialog 对话框
157
-
158
- 增强的对话框组件,内置确认/取消按钮。
159
-
160
- ```vue
161
- <template>
162
- <jc-dialog
163
- :visible.sync="dialogVisible"
164
- title="标题"
165
- width="50%"
166
- @confirm="handleConfirm"
167
- @cancel="handleCancel"
168
- >
169
- <p>对话框内容</p>
170
- </jc-dialog>
171
- </template>
172
- ```
173
-
174
- **Props:**
175
- - `visible`: 是否显示 (default: false)
176
- - `title`: 标题
177
- - `width`: 宽度 (default: '50%')
178
- - `showFooter`: 显示底部 (default: true)
179
- - `showCancelButton`: 显示取消按钮 (default: true)
180
- - `showConfirmButton`: 显示确认按钮 (default: true)
181
- - `confirmLoading`: 确认按钮加载中 (default: false)
182
-
183
- **Events:**
184
- - `open`: 打开事件
185
- - `close`: 关闭事件
186
- - `confirm`: 确认事件
187
- - `cancel`: 取消事件
188
-
189
- ### JcSelect 选择器
190
-
191
- 增强的选择器组件,支持数据配置和多选。
192
-
193
- ```vue
194
- <template>
195
- <jc-select
196
- v-model="value"
197
- :options="options"
198
- multiple
199
- filterable
200
- placeholder="请选择"
201
- />
202
- </template>
203
-
204
- <script>
205
- export default {
206
- data() {
207
- return {
208
- value: '',
209
- options: [
210
- { value: '1', label: '选项一' },
211
- { value: '2', label: '选项二' }
212
- ]
213
- }
214
- }
215
- }
216
- </script>
217
- ```
218
-
219
- **Props:**
220
- - `value`: 绑定值
221
- - `options`: 选项数组
222
- - `multiple`: 是否多选 (default: false)
223
- - `filterable`: 是否可搜索 (default: false)
224
- - `valueKey`: 值字段名 (default: 'value')
225
- - `labelKey`: 标签字段名 (default: 'label')
226
-
227
- **Events:**
228
- - `change`: 改变事件
229
- - `visible-change`: 显示/隐藏事件
230
-
231
- ### XBusinessLog 业务日志查询
232
-
233
- 集成的业务日志查询组件,包含搜索栏和数据表格。
234
-
235
- ```vue
236
- <template>
237
- <div class="app-container">
238
- <x-business-log
239
- ref="businessLog"
240
- :api-method="selectSysBusinessLogList"
241
- :page-size="10"
242
- :parse-time-method="parseTime"
243
- />
244
- </div>
245
- </template>
246
-
247
- <script>
248
- import { selectSysBusinessLogList } from "@/api/system/log"
249
-
250
- export default {
251
- name: "BusinessLog",
252
- methods: {
253
- // 自定义时间格式化(可选)
254
- parseTime(time) {
255
- if (!time) return ''
256
- const date = new Date(time)
257
- // 你的格式化逻辑
258
- return formattedTime
259
- }
260
- }
261
- }
262
- </script>
263
- ```
264
-
265
- **Props:**
266
- - `apiMethod`: API 请求方法 (必需),接收 `(params, pageSize, pageNum)` 参数
267
- - `pageSize`: 每页条数 (默认: 10)
268
- - `parseTimeMethod`: 自定义时间格式化函数 (可选)
269
-
270
- **Methods:**
271
- - `resetForm()`: 重置表单并重新查询
272
- - `refresh()`: 刷新列表
273
- - `getList()`: 获取数据列表
274
-
275
- **API 方法要求:**
276
-
277
- 传入的 `apiMethod` 应该返回 Promise,响应格式为:
278
- ```javascript
279
- {
280
- rows: [], // 数据列表
281
- total: 0 // 总条数
282
- }
283
- ```
284
-
285
- 示例 API 封装:
286
- ```javascript
287
- import request from '@/utils/request'
288
-
289
- export function selectSysBusinessLogList(params, pageSize, pageNum) {
290
- return request({
291
- url: '/system/business-log/list',
292
- method: 'post',
293
- data: {
294
- ...params,
295
- pageSize,
296
- pageNum
297
- }
298
- })
299
- }
300
- ```
301
-
302
- ### JcTable 表格
303
-
304
- 增强的表格组件,支持动态列配置和分页。
305
-
306
- ```vue
307
- <template>
308
- <jc-table
309
- :data="tableData"
310
- :columns="columns"
311
- :show-index="true"
312
- :show-selection="true"
313
- :show-pagination="true"
314
- :total="100"
315
- @selection-change="handleSelectionChange"
316
- >
317
- <template slot="operation" slot-scope="{ row }">
318
- <jc-button @click="handleEdit(row)">编辑</jc-button>
319
- </template>
320
- </jc-table>
321
- </template>
322
-
323
- <script>
324
- export default {
325
- data() {
326
- return {
327
- tableData: [],
328
- columns: [
329
- { prop: 'name', label: '姓名', minWidth: 100 },
330
- { prop: 'age', label: '年龄', width: 80 }
331
- ]
332
- }
333
- }
334
- }
335
- </script>
336
- ```
337
-
338
- **Props:**
339
- - `data`: 表格数据
340
- - `columns`: 列配置
341
- - `size`: 尺寸 (default: 'medium')
342
- - `border`: 边框 (default: true)
343
- - `showIndex`: 显示序号 (default: false)
344
- - `showSelection`: 显示选择列 (default: false)
345
- - `showOperation`: 显示操作列 (default: false)
346
- - `showPagination`: 显示分页 (default: false)
347
-
348
- **Events:**
349
- - `selection-change`: 选择变化事件
350
- - `sort-change`: 排序变化事件
351
- - `size-change`: 每页条数变化事件
352
- - `current-change-page`: 页码变化事件
353
-
354
- ## 本地开发
355
-
356
- ```bash
357
- # 安装依赖
358
- npm install
359
-
360
- # 开发模式
361
- npm run dev
362
-
363
- # 构建
364
- npm run build
365
- ```
366
-
367
- ## 发布到 npm
368
-
369
- ```bash
370
- # 修改版本号
371
- npm version patch # 或 minor/major
372
-
373
- # 发布
374
- npm publish
375
- ```
376
-
377
- ## License
378
-
379
- MIT
1
+ # JC Vue Components
2
+
3
+ 基于 Element-UI 的 Vue2 组件库,二次封装常用组件,提供更丰富的业务功能。
4
+
5
+ ## 版本信息
6
+
7
+ - Vue: 2.6.10
8
+ - Element-UI: 2.13.2
9
+ - VXE-Table: ^3.2.20
10
+
11
+ ## 安装
12
+
13
+ ```bash
14
+ npm install @xjw_/vue2-npm-system
15
+ ```
16
+
17
+ ## 快速开始
18
+
19
+ ### 全局注册
20
+
21
+ ```javascript
22
+ import Vue from 'vue'
23
+ import ElementUI from 'element-ui'
24
+ import JcComponents from '@xjw_/vue2-npm-system'
25
+
26
+ // 注意:需要自行导入 Element-UI 样式
27
+ import 'element-ui/lib/theme-chalk/index.css'
28
+
29
+ Vue.use(ElementUI)
30
+ Vue.use(JcComponents)
31
+ ```
32
+
33
+ ### 按需引入
34
+
35
+ ```javascript
36
+ import Vue from 'vue'
37
+ import { JcButton, JcInput, JcTable } from '@xjw_/vue2-npm-system'
38
+
39
+ Vue.component('JcButton', JcButton)
40
+ Vue.component('JcInput', JcInput)
41
+ Vue.component('JcTable', JcTable)
42
+ ```
43
+
44
+ ## 工具函数
45
+
46
+ ### createRequest 请求封装
47
+
48
+ 基于 axios 的通用请求封装,支持统一的错误处理和 token 管理。
49
+
50
+ ```javascript
51
+ import { createRequest } from '@xjw_/vue2-npm-system'
52
+
53
+ // 创建请求实例
54
+ const request = createRequest({
55
+ baseURL: 'http://api.example.com',
56
+ timeout: 30000,
57
+ // 获取 token 的方法
58
+ getToken: () => {
59
+ return localStorage.getItem('token')
60
+ },
61
+ // Token 过期回调
62
+ onTokenExpired: () => {
63
+ // 清除 token,跳转登录页等
64
+ localStorage.removeItem('token')
65
+ window.location.href = '/login'
66
+ },
67
+ // 自定义成功状态码
68
+ successCodes: [200, 2000, 3000]
69
+ })
70
+
71
+ // 使用请求实例
72
+ export function getUserList(params, pageSize, pageNum) {
73
+ return request({
74
+ url: '/api/user/list',
75
+ method: 'post',
76
+ data: {
77
+ ...params,
78
+ pageSize,
79
+ pageNum
80
+ }
81
+ })
82
+ }
83
+ ```
84
+
85
+ **配置项:**
86
+ - `baseURL`: API 基础地址
87
+ - `timeout`: 超时时间(毫秒)
88
+ - `getToken`: 获取 token 的函数
89
+ - `onTokenExpired`: Token 过期时的回调
90
+ - `successCodes`: 成功的状态码数组 (默认: [200, 2000, 3000])
91
+ - `errorHandler`: 自定义错误处理函数
92
+ - `headers`: 额外的请求头
93
+
94
+ ## 组件列表
95
+
96
+ ### JcButton 按钮
97
+
98
+ 增强的按钮组件,支持防抖、加载状态等功能。
99
+
100
+ ```vue
101
+ <template>
102
+ <jc-button
103
+ jc-type="primary"
104
+ :debounce="1000"
105
+ :loading="loading"
106
+ @click="handleClick"
107
+ >
108
+ 点击我
109
+ </jc-button>
110
+ </template>
111
+ ```
112
+
113
+ **Props:**
114
+ - `jc-type`: 按钮类型 (default: 'primary')
115
+ - `size`: 尺寸 (default: 'medium')
116
+ - `disabled`: 是否禁用 (default: false)
117
+ - `loading`: 是否加载中 (default: false)
118
+ - `debounce`: 防抖时间(毫秒)(default: 0)
119
+
120
+ **Events:**
121
+ - `click`: 点击事件
122
+
123
+ ### JcInput 输入框
124
+
125
+ 增强的输入框组件,支持字数统计、密码显示等功能。
126
+
127
+ ```vue
128
+ <template>
129
+ <jc-input
130
+ v-model="value"
131
+ type="password"
132
+ show-password
133
+ show-count
134
+ :maxlength="100"
135
+ placeholder="请输入"
136
+ />
137
+ </template>
138
+ ```
139
+
140
+ **Props:**
141
+ - `value`: 绑定值
142
+ - `type`: 输入框类型 (default: 'text')
143
+ - `size`: 尺寸 (default: 'medium')
144
+ - `disabled`: 是否禁用 (default: false)
145
+ - `clearable`: 是否可清空 (default: true)
146
+ - `showPassword`: 显示切换密码图标 (default: false)
147
+ - `maxlength`: 最大长度
148
+ - `showCount`: 显示字数统计 (default: false)
149
+
150
+ **Events:**
151
+ - `input`: 输入事件
152
+ - `change`: 改变事件
153
+ - `blur`: 失焦事件
154
+ - `focus`: 聚焦事件
155
+
156
+ ### JcDialog 对话框
157
+
158
+ 增强的对话框组件,内置确认/取消按钮。
159
+
160
+ ```vue
161
+ <template>
162
+ <jc-dialog
163
+ :visible.sync="dialogVisible"
164
+ title="标题"
165
+ width="50%"
166
+ @confirm="handleConfirm"
167
+ @cancel="handleCancel"
168
+ >
169
+ <p>对话框内容</p>
170
+ </jc-dialog>
171
+ </template>
172
+ ```
173
+
174
+ **Props:**
175
+ - `visible`: 是否显示 (default: false)
176
+ - `title`: 标题
177
+ - `width`: 宽度 (default: '50%')
178
+ - `showFooter`: 显示底部 (default: true)
179
+ - `showCancelButton`: 显示取消按钮 (default: true)
180
+ - `showConfirmButton`: 显示确认按钮 (default: true)
181
+ - `confirmLoading`: 确认按钮加载中 (default: false)
182
+
183
+ **Events:**
184
+ - `open`: 打开事件
185
+ - `close`: 关闭事件
186
+ - `confirm`: 确认事件
187
+ - `cancel`: 取消事件
188
+
189
+ ### JcSelect 选择器
190
+
191
+ 增强的选择器组件,支持数据配置和多选。
192
+
193
+ ```vue
194
+ <template>
195
+ <jc-select
196
+ v-model="value"
197
+ :options="options"
198
+ multiple
199
+ filterable
200
+ placeholder="请选择"
201
+ />
202
+ </template>
203
+
204
+ <script>
205
+ export default {
206
+ data() {
207
+ return {
208
+ value: '',
209
+ options: [
210
+ { value: '1', label: '选项一' },
211
+ { value: '2', label: '选项二' }
212
+ ]
213
+ }
214
+ }
215
+ }
216
+ </script>
217
+ ```
218
+
219
+ **Props:**
220
+ - `value`: 绑定值
221
+ - `options`: 选项数组
222
+ - `multiple`: 是否多选 (default: false)
223
+ - `filterable`: 是否可搜索 (default: false)
224
+ - `valueKey`: 值字段名 (default: 'value')
225
+ - `labelKey`: 标签字段名 (default: 'label')
226
+
227
+ **Events:**
228
+ - `change`: 改变事件
229
+ - `visible-change`: 显示/隐藏事件
230
+
231
+ ### XBusinessLog 业务日志查询
232
+
233
+ 集成的业务日志查询组件,包含搜索栏和数据表格。
234
+
235
+ ```vue
236
+ <template>
237
+ <div class="app-container">
238
+ <x-business-log
239
+ ref="businessLog"
240
+ :api-method="selectSysBusinessLogList"
241
+ :page-size="10"
242
+ :parse-time-method="parseTime"
243
+ />
244
+ </div>
245
+ </template>
246
+
247
+ <script>
248
+ import { selectSysBusinessLogList } from "@/api/system/log"
249
+
250
+ export default {
251
+ name: "BusinessLog",
252
+ methods: {
253
+ // 自定义时间格式化(可选)
254
+ parseTime(time) {
255
+ if (!time) return ''
256
+ const date = new Date(time)
257
+ // 你的格式化逻辑
258
+ return formattedTime
259
+ }
260
+ }
261
+ }
262
+ </script>
263
+ ```
264
+
265
+ **Props:**
266
+ - `apiMethod`: API 请求方法 (必需),接收 `(params, pageSize, pageNum)` 参数
267
+ - `pageSize`: 每页条数 (默认: 10)
268
+ - `parseTimeMethod`: 自定义时间格式化函数 (可选)
269
+
270
+ **Methods:**
271
+ - `resetForm()`: 重置表单并重新查询
272
+ - `refresh()`: 刷新列表
273
+ - `getList()`: 获取数据列表
274
+
275
+ **API 方法要求:**
276
+
277
+ 传入的 `apiMethod` 应该返回 Promise,响应格式为:
278
+ ```javascript
279
+ {
280
+ rows: [], // 数据列表
281
+ total: 0 // 总条数
282
+ }
283
+ ```
284
+
285
+ 示例 API 封装:
286
+ ```javascript
287
+ import request from '@/utils/request'
288
+
289
+ export function selectSysBusinessLogList(params, pageSize, pageNum) {
290
+ return request({
291
+ url: '/system/business-log/list',
292
+ method: 'post',
293
+ data: {
294
+ ...params,
295
+ pageSize,
296
+ pageNum
297
+ }
298
+ })
299
+ }
300
+ ```
301
+
302
+ ### JcTable 表格
303
+
304
+ 增强的表格组件,支持动态列配置和分页。
305
+
306
+ ```vue
307
+ <template>
308
+ <jc-table
309
+ :data="tableData"
310
+ :columns="columns"
311
+ :show-index="true"
312
+ :show-selection="true"
313
+ :show-pagination="true"
314
+ :total="100"
315
+ @selection-change="handleSelectionChange"
316
+ >
317
+ <template slot="operation" slot-scope="{ row }">
318
+ <jc-button @click="handleEdit(row)">编辑</jc-button>
319
+ </template>
320
+ </jc-table>
321
+ </template>
322
+
323
+ <script>
324
+ export default {
325
+ data() {
326
+ return {
327
+ tableData: [],
328
+ columns: [
329
+ { prop: 'name', label: '姓名', minWidth: 100 },
330
+ { prop: 'age', label: '年龄', width: 80 }
331
+ ]
332
+ }
333
+ }
334
+ }
335
+ </script>
336
+ ```
337
+
338
+ **Props:**
339
+ - `data`: 表格数据
340
+ - `columns`: 列配置
341
+ - `size`: 尺寸 (default: 'medium')
342
+ - `border`: 边框 (default: true)
343
+ - `showIndex`: 显示序号 (default: false)
344
+ - `showSelection`: 显示选择列 (default: false)
345
+ - `showOperation`: 显示操作列 (default: false)
346
+ - `showPagination`: 显示分页 (default: false)
347
+
348
+ **Events:**
349
+ - `selection-change`: 选择变化事件
350
+ - `sort-change`: 排序变化事件
351
+ - `size-change`: 每页条数变化事件
352
+ - `current-change-page`: 页码变化事件
353
+
354
+ ## 本地开发
355
+
356
+ ```bash
357
+ # 安装依赖
358
+ npm install
359
+
360
+ # 开发模式
361
+ npm run dev
362
+
363
+ # 构建
364
+ npm run build
365
+ ```
366
+
367
+ ## 发布到 npm
368
+
369
+ ```bash
370
+ # 修改版本号
371
+ npm version patch # 或 minor/major
372
+
373
+ # 发布
374
+ npm publish
375
+ ```
376
+
377
+ ## License
378
+
379
+ MIT