mic-org 1.1.1 → 1.1.2

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 (3) hide show
  1. package/README.md +407 -30
  2. package/package.json +1 -1
  3. package/src/index.d.ts +15 -10
package/README.md CHANGED
@@ -6,6 +6,52 @@
6
6
  > 仅限于 vue3 + vite +element-plus + sass 工程中,因为部分组件以及样式有调用
7
7
 
8
8
  ---------------------------------
9
+
10
+ ## npm引用
11
+
12
+ ``` bash
13
+
14
+ npm install mic-org
15
+
16
+ ```
17
+
18
+ ## 组件导入
19
+
20
+ ``` js
21
+
22
+ import 'mic-org/dist/index.css'; // 组件样式
23
+ import MicOrg from 'mic-org'; // 组件全局导入
24
+
25
+ app.use(MicOrg);
26
+
27
+ ```
28
+
29
+ ## 普通方法导入
30
+
31
+ ``` js
32
+
33
+ import { mic } from 'mic-org'; // 方法导入
34
+
35
+ ```
36
+
37
+ ## 类方法导入
38
+
39
+ ``` js
40
+
41
+ import { Mic } from 'mic-org'; // 方法导入
42
+
43
+ ```
44
+
45
+ ## scss变量导入
46
+
47
+ ``` js
48
+
49
+ @use "mic-org/css/variable.scss" as *;
50
+
51
+ ```
52
+
53
+ ---------------------------------
54
+
9
55
  ## 组件输出
10
56
  | Component | Description |
11
57
  | -------------- | ----------- |
@@ -19,76 +65,407 @@
19
65
 
20
66
  ---------------------------------
21
67
 
22
- ## 组件相关方法
68
+ 1. **mic-search使用**
23
69
 
70
+ > props: span
71
+ > 1. span,默认为 4,即:4列, span值为number;
72
+ > 说明:它本身是个搜索项外层框架,用的是grid布局
24
73
 
74
+ ```js
25
75
 
76
+ <mic-search :span="4"></mic-search>
26
77
 
78
+ ```
79
+
80
+ 2. **mic-vac使用**
81
+
82
+ > props: span
83
+ > 1. span,默认为 1,即:4列, span值为number;
84
+ > 说明:它本身是为了搜索框内容添加空白列的,也可以在它的标签内添加插槽内容,但是它插槽里的内容是居右对齐的
85
+
86
+ ```js
87
+
88
+ <mic-search :span="4">
89
+ <mic-vac :span="2">
90
+ <el-button>查询</el-button>
91
+ <el-button>重置</el-button>
92
+ </mic-vac>
93
+ </mic-search>
94
+
95
+ ```
96
+
97
+ 3. **mic-select使用**
98
+
99
+ > props: span,label,border,width,options (可以把el-select其它的属性/方法全部写入,组件内部使用了$attrs继承)
100
+ > 1. span,默认为 1,即:1列, span值为number;
101
+ > 2. label,搜索项的label项,必填;
102
+ > 3. border,针对如果搜索项整个背景如果是白色,那么可以添加border做搜索项的区分
103
+ > 4. width, label项的宽度,默认为 100px
104
+ > 5. options,组件的下拉列表,必填,类型 Array<{label:string,value:any}>;
105
+
106
+ > emits: change
107
+ > 1. change, 触发el-select的change事件后,同步触发此事件
108
+
109
+ ```js
110
+
111
+ <mic-search :span="4">
112
+ <mic-search
113
+ label="测试"
114
+ width="100px"
115
+ v-model="data"
116
+ border="1px solid #fff"
117
+ :options="[{label:'男',value:1},{label:'女',value:2}]"
118
+ @change="(val)=>{console.log(val)}"
119
+ />
120
+ </mic-search>
121
+
122
+ ```
123
+
124
+ 4. **mic-input使用**
125
+
126
+ > props: span,label,border,width (可以把el-input其它的属性/方法全部写入,组件内部使用了$attrs继承)
127
+ > 1. span,默认为 1,即:1列, span值为number;
128
+ > 2. label,搜索项的label项,必填;
129
+ > 3. border,针对如果搜索项整个背景如果是白色,那么可以添加border做搜索项的区分
130
+ > 4. width, label项的宽度,默认为 100px
27
131
 
132
+ > emits: change, keydown
133
+ > 1. change, 触发el-input的input事件后,同步触发此事件
134
+ > 2. keydown, 触发el-input的keydown.enter事件后,同步触发此事件
28
135
 
136
+ ```js
137
+
138
+ <mic-search :span="4">
139
+ <mic-input
140
+ label="测试"
141
+ width="100px"
142
+ v-model="data"
143
+ border="1px solid #fff"
144
+ @change="(val)=>{console.log(val)}"
145
+ @keydown="(val)=>{console.log(val)}"
146
+ />
147
+ </mic-search>
148
+
149
+ ```
150
+
151
+ 5. **mic-date使用**
152
+
153
+ > props: span,label,border,width,format (可以把el-date-picker其它的属性/方法全部写入,组件内部使用了$attrs继承)
154
+ > 1. span,默认为 1,即:1列, span值为number;
155
+ > 2. label,搜索项的label项,必填;
156
+ > 3. border,针对如果搜索项整个背景如果是白色,那么可以添加border做搜索项的区分
157
+ > 4. width, label项的宽度,默认为 100px
158
+ > 4. format, format以及value-format 的类型, 必填,取的是 el-date-picker 的format值
159
+
160
+ > emits: change
161
+ > 1. change, 触发el-date-picker的change事件后,同步触发此事件
162
+
163
+ ```js
164
+
165
+ <mic-search :span="4">
166
+ <mic-date
167
+ label="测试"
168
+ width="100px"
169
+ format="YYYY-MM-DD"
170
+ border="1px solid #fff"
171
+ v-model="data"
172
+ @change="(val)=>{console.log(val)}"
173
+ />
174
+ </mic-search>
175
+
176
+ ```
177
+
178
+ 6. **mic-table使用**
179
+
180
+ > props: tableAttr,tableData,columns,selectSingle,selectKey,disabledCondition,page
181
+ > 1. tableAttr, 给el-table添加一些 mic-table组件中未定义的属性,已经使用v-bind进行了承接
182
+ > 2. tableData, 表格数据 组件内会给每一项增加两个属性:
183
+ > - checked 是否选中;
184
+ > - disabled 是否禁用;
185
+ > 3. columns,表格列,每列有:
186
+ > - type 属性,重构了el-table中的select功能, 值为 select以及 el-table中其它的类型;
187
+ > - attr 属性,给el-table-column 添加mic-table组件中未定义的属性,已经使用v-bind进行了承接;
188
+ > - hidden 属性,值为boolean , 判断列是否展示;
189
+ > - **重点提示:如果要自定义列中的内容,已经配置了插槽,插槽名为attr中的prop值,子组件向父组件传的参数是scope**
190
+ > 4. selectSingle, 是否单选,默认为false,即多选
191
+ > 5. selectKey, 选中项的key值,默认为id
192
+ > 6. disabledCondition, 禁用条件,函数类型,返回true则禁用
193
+ > 7. page, 分页信息,包含total、currentPage、pageSize等属性
194
+
195
+ > emits: selection-change,page-change
196
+ > 1. selection-change,选中项时,触发此方法,把选中项返回
197
+ > 2. page-change, 页码变化时,触发此方法,会把total、currentPage、pageSize都返回
198
+
199
+ > defineExpose: clearSelection,setSelection
200
+ > 1. clearSelection,用 ref绑定父组件中的自组件后,通过此方法清空选中
201
+ > 2. setSelection, 用 ref绑定父组件中的自组件后,通过此方法让指定项默认选中
202
+
203
+ > 按钮插槽 buttonLeft,buttonRight
204
+ > 说明:表格上方一般都要放置按钮,这两个插槽用来放按钮
205
+
206
+ ```js
207
+
208
+ <mic-table
209
+ :tableAttr="{height:100}"
210
+ :tableData="[{id:0,name:'张三'}]"
211
+ :columns="[{type:'select',attr:{}},{attr:{prop:'name',label:'姓名'}}]"
212
+ :selectSingle="true"
213
+ selectKey="id"
214
+ :disabledCondition="(items:any)=>items.id==0"
215
+ :page="{
216
+ total: 100,
217
+ currentPage: 1,
218
+ pageSize: 20
219
+ }"
220
+ @selection-change="(val)=>{console.log(val)}"
221
+ @page-change="(val)=>{console.log(val)}"
222
+ >
223
+ <template #buttonLeft>
224
+ <el-button>新建</el-button>
225
+ <el-button>删除</el-button>
226
+ </template>
227
+ <template #buttonRight>
228
+ <el-button>通过</el-button>
229
+ <el-button>拒绝</el-button>
230
+ </template>
231
+ <template #name={ scope }>
232
+ <el-input v-model="scope.row.name"/>
233
+ </template>
234
+ </mic-search>
235
+
236
+ ```
237
+
238
+ 7. **mic-dialog使用**
239
+
240
+ > props: labelWidth,formList,optionList,rules,cancelText,confirmText(可以把el-dialog其它的属性全部写入,组件内部使用了$attrs继承)
241
+ > 1. labelWidth, form表单label宽度
242
+ > 2. formList, form表单项 它的类型为Array<{module?:string,children:Array<{
243
+ span:number,
244
+ prop:string,
245
+ label:string,
246
+ type?:'input' | 'select' | 'time' | undefined | null,
247
+ attr?:Record<string,any>,
248
+ event?:Record<any,any>,
249
+ }>}>
250
+ > - **重点提示:如果要自定义表单项中的内容,已经配置了插槽,插槽名为children中的prop值,子组件向父组件传的参数是form,attr**
251
+ > 3. optionList, 下拉列表项,它的类型为Record<string,Array<{label:string,value:any}>>
252
+ > 4. rules, form表单校验
253
+ > 5. cancelText, 取消按钮文本
254
+ > 6. confirmText, 确认按钮文本
255
+
256
+ > emits: confirm
257
+ > 1. confirm,确认时回传
258
+
259
+ > defineModel: show,form
260
+ > 1. show, 控制弹窗显隐
261
+ > 2. form, form表单数据
262
+
263
+ ```js
264
+
265
+ <mic-dialog
266
+ width="50%"
267
+ title="提示"
268
+ labelWidth="100px"
269
+ :formList="[{module:'个人信息',children:[{span:12,prop:'name',label:'姓名',type:'select',attr:{},event:{}}]}]"
270
+ :optionList="{name:[{label:'张三',value:1},{label:'李四',value:2}]}"
271
+ :rules="{}"
272
+ v-model:form="{name:1}"
273
+ v-model:show="showDialog"
274
+ cancelText="取消"
275
+ confirmText="确认"
276
+ @conirm="(val)=>{console.log(val)}"
277
+ >
278
+ <template #name={ form,attr,event }>
279
+ <el-input v-model="scope.row.name"/>
280
+ </template>
281
+ </mic-dialog>
282
+
283
+ ```
284
+
285
+ ---------------------------------
29
286
 
30
287
  ## 方法输出
31
288
  | Function | Description |
32
289
  | -------------- | ----------- |
33
290
  | reset | 用于重置对象中的内容 |
34
- | check | 用于校验数据类型 mic.check('aaa') == 'String' |
35
- | isType | 校验是否指定类型 mic.isType('aaa','String') == true |
36
- | capital | 将金额转为汉字金额 mic.capital(321.32) 输出 “叁佰贰拾壹元贰角壹分” |
37
- | load | 用于自定义全局/或者局部loading |
291
+ | check | 用于校验数据类型 |
292
+ | isType | 校验是否指定类型 |
293
+ | capital | 将金额转为汉字金额 ,只能处理亿级别的 |
38
294
  | equal | 校验两个对象内容是否完全一致 |
295
+ | load | 用于自定义全局/或者局部loading |
296
+
39
297
 
40
298
  ---------------------------------
41
299
 
42
- ## Array输出
43
- | Function | Description |
44
- | -------------- | ----------- |
45
- | equal | 校验数组(子集为普通对象)中,指定的字段的值是否一致 |
46
- | deepIncludes | 校验数组(子集为普通对象)中,是否包含某个字段对应的值 |
300
+ 1. **reset使用**
301
+
302
+ ```js
303
+
304
+ import { mic } from 'mic-org';
305
+ const data = ref({ name: '', age: 0 });
306
+ data.value.name = '张三';
307
+ data.value.age = 10;
308
+ const resetData = () => {
309
+ mic.reset(data.value,{age:0});
310
+ };
311
+
312
+ ```
313
+
314
+ 2. **check使用**
315
+
316
+ ```js
317
+
318
+ import { mic } from 'mic-org';
319
+ const data = ref({ name: '', age: 0 });
320
+ mic.check(data.value) //输出结果 Object;
321
+
322
+ ```
323
+
324
+ 3. **isType使用**
325
+
326
+ ```js
327
+
328
+ import { mic } from 'mic-org';
329
+ mic.capital(321.32) //输出结果 “叁佰贰拾壹元贰角壹分”
330
+
331
+ ```
332
+
333
+ 4. **capital使用**
334
+
335
+ ```js
336
+
337
+ import { mic } from 'mic-org';
338
+ const data = ref({ name: '', age: 0 });
339
+ mic.isType(data.value) == 'Object' //输出结果 true
340
+
341
+ ```
342
+
343
+ 5. **equal使用**
344
+
345
+ ```js
346
+
347
+ import { mic } from 'mic-org';
348
+ const data = ref({ name: '', age: 0 });
349
+ const dataB = ref({ name: '1', age: 0 });
350
+ mic.equal(data.value,dataB.value) //输出结果 false
351
+
352
+ ```
353
+
354
+ 6. **load使用**
355
+
356
+ > 1. className没值的话,就是全局loading
357
+ > 2. loadStyle 可以定义loading的背景颜色,也可以定义loading的颜色
358
+
359
+ ```js
47
360
 
361
+ import { mic } from 'mic-org';
362
+ const funA = ()=>{
363
+ mic.load(()=>{
364
+ console.log('1111')
365
+ },{className:'',loadStyle:{bgColor:'#fff',color:'#005eba'}})()
366
+ }
367
+ const funB = mic.load(()=>{
368
+ console.log('2222')
369
+ },{className:''})
370
+
371
+ ```
48
372
  ---------------------------------
49
373
 
50
- ## Math输出
374
+ ## 类输出
51
375
  | Function | Description |
52
376
  | -------------- | ----------- |
53
- | exact | 用于解决 加/减/乘/除 的计算精度问题 |
377
+ | domHeight | 获取想要的元素的宽/高,也可通过别的元素的加/减计算得来,对应的是像素值 |
54
378
 
55
379
  ---------------------------------
56
380
 
57
- ## npm引用
58
-
59
- ``` text
60
-
61
- npm install mic-org
381
+ 1. **domHeight使用**
382
+
383
+ > 1. 实例入参类型 Array<{name:string,type:'+' | '-'}>
384
+ > 2. 获取宽度/高度时, 需要在后面加个.value,width/height是reactive对象,为了做到响应式,里面包裹了value
385
+
386
+ ```js
387
+
388
+ import { Mic } from 'mic-org';
389
+ const DOMA = new Mic.domHeight([
390
+ {
391
+ name:'.boxa',
392
+ type:'+',
393
+ }
394
+ ])
395
+ console.log(DOMA.height.value) //获取DOMA的高度,像素单位
396
+ console.log(DOMA.width.value) //获取DOMA的宽度,像素单位
397
+
398
+ //假设,A包裹了B元素和C元素,此时想要获得C元素的高度/宽度
399
+ const DOMC = new Mic.domHeight([
400
+ {
401
+ name:'.boxa',
402
+ type:'+',
403
+ },{
404
+ name:'.boxb',
405
+ type:'-',
406
+ }
407
+ ])
408
+ // B元素和C元素上下排列,要获取高度,直接DOMC.height.value就可以
409
+ console.log(DOMC.height.value)
410
+ // B元素和C元素左右排列,要获取宽度,直接DOMC.width.value就可以
411
+ console.log(DOMC.width.value)
62
412
 
63
413
  ```
414
+
415
+ ---------------------------------
416
+
417
+ ## Array输出
418
+ | Function | Description |
419
+ | -------------- | ----------- |
420
+ | equal | 校验数组(子集为普通对象)中,指定的字段的值是否一致 |
421
+ | deepIncludes | 校验数组(子集为普通对象)中,是否包含某个字段对应的值 |
64
422
 
65
423
  ---------------------------------
66
424
 
67
- ## 工程导入
425
+ 1. **equal使用**
68
426
 
69
- ``` main.js
427
+ ```js
70
428
 
71
- import 'mic-org/dist/index.css'; // 组件样式
72
- import Mic from 'mic-org'; // 组件全局导入
429
+ let a = [{id:0,name:'张三'},{id:1,name:'张三'}];
73
430
 
74
- app.use(Mic);
431
+ a.equal('name') // 输出结果 true
432
+ a.equal(['id','name']) // 输出结果 false
75
433
 
76
434
  ```
77
435
 
78
- ``` other.js
436
+ 2. **deepIncludes使用**
437
+
438
+ ```js
79
439
 
80
- import { mic } from 'mic-org'; // 方法导入
440
+ let a = [{id:0,name:'张三'},{id:1,name:'张三'}];
81
441
 
442
+ a.deepIncludes({name:'张三'}) // 输出结果 true
443
+ a.deepIncludes({id:1,name:'张三'}) // 输出结果 true
444
+ a.deepIncludes({id:2,name:'张三'}) // 输出结果 false
445
+
82
446
  ```
83
447
 
84
- ``` mic-variable.css
448
+ ---------------------------------
85
449
 
86
- import 'mic-org/css/variable.scss'; // 可使用mic-org中定义的sass变量
450
+ ## Math输出
451
+ | Function | Description |
452
+ | -------------- | ----------- |
453
+ | exact | 用于解决 加/减/乘/除 的计算精度问题 |
454
+
455
+ ---------------------------------
456
+
457
+ 1. **exact使用**
87
458
 
459
+ ```js
460
+
461
+ Math.exact(0.1,0.2,'+') //输出 0.3,而不是 0.30000000000000004
462
+
88
463
  ```
89
464
 
90
- ## 版本
465
+ ---------------------------------
466
+
467
+ ## 版本 1.1.2
91
468
 
92
- 1.1.1 -- 1.增加mic-table组件
93
- -- 2.增加mic-dialog组件
94
- -- 3.增加equal方法
469
+ - 1.优化load方法
470
+ - 2.优化misc-dialog组件
471
+ - 3.新增domHeight 类,获取元素的像素宽/高
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mic-org",
3
- "version": "1.1.1",
3
+ "version": "1.1.2",
4
4
  "main": "./dist/mic.umd.js",
5
5
  "module": "./dist/mic.es.js",
6
6
  "exports": {
package/src/index.d.ts CHANGED
@@ -1,14 +1,19 @@
1
- // 声明组件导出(假设你的组件库导出了 Button 等组件)
2
- export { default as MicDate } from './mic-date/index.vue';
3
- export { default as MicInput } from './mic-input/index.vue';
4
- export { default as MicLayout } from './mic-layout/index.vue';
5
- export { default as MicSearch } from './mic-search/index.vue';
6
- export { default as MicSelect } from './mic-select/index.vue';
7
- export { default as MicVac } from './mic-vac/index.vue';
8
- export { Mic_Check } from './hooks/index.ts';
9
- export { Mic_Load } from './hooks/index.ts';
10
- export { Mic_Reset } from './hooks/index.ts';
1
+ // 导出你的 mic 对象/函数
2
+ export const mic: {
3
+ // 这里写你真实的类型(随便写,只要导出即可)
4
+ check: any
5
+ reset: any
6
+ isType: any
7
+ capital: any
8
+ equal: any
9
+ load: any
10
+ }
11
11
 
12
+ // 导出你的 Mic 类
13
+ export const Mic: {
14
+ // 这里写你真实的类型(随便写,只要导出即可)
15
+ domHeight: any
16
+ }
12
17
  declare module 'mj-integrate-component/css/index.scss' {
13
18
  const content: string;
14
19
  export default content;