@litianxiang/portal-ui 0.0.6 → 0.0.8

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 (62) hide show
  1. package/README.md +402 -6
  2. package/dist/index.d.ts +0 -10
  3. package/dist/index.js +1832 -2629
  4. package/dist/portal-ui.css +1 -1
  5. package/package.json +5 -8
  6. package/dist/styles/global.scss +0 -205
  7. package/dist/styles/iconfont.css +0 -1719
  8. package/dist/styles/iconfont.ttf +0 -0
  9. package/dist/styles/iconfont.woff +0 -0
  10. package/dist/styles/iconfont.woff2 +0 -0
  11. package/src/assets/iconfont/demo.css +0 -539
  12. package/src/assets/iconfont/demo_index.html +0 -9986
  13. package/src/assets/iconfont/iconfont.css +0 -1719
  14. package/src/assets/iconfont/iconfont.js +0 -1
  15. package/src/assets/iconfont/iconfont.json +0 -2991
  16. package/src/assets/iconfont/iconfont.ttf +0 -0
  17. package/src/assets/iconfont/iconfont.woff +0 -0
  18. package/src/assets/iconfont/iconfont.woff2 +0 -0
  19. package/src/assets/styles/element-ui.scss +0 -3772
  20. package/src/assets/styles/form.scss +0 -161
  21. package/src/assets/styles/global.scss +0 -205
  22. package/src/components/control/base/base-button.vue +0 -118
  23. package/src/components/control/base/base-checkbox.vue +0 -217
  24. package/src/components/control/base/base-china-area.vue +0 -555
  25. package/src/components/control/base/base-collapse-toggle.vue +0 -28
  26. package/src/components/control/base/base-date.vue +0 -148
  27. package/src/components/control/base/base-dialog.vue +0 -155
  28. package/src/components/control/base/base-file-preview.vue +0 -204
  29. package/src/components/control/base/base-input.vue +0 -130
  30. package/src/components/control/base/base-link.vue +0 -110
  31. package/src/components/control/base/base-messagebox.vue +0 -154
  32. package/src/components/control/base/base-number.vue +0 -139
  33. package/src/components/control/base/base-pagination.vue +0 -60
  34. package/src/components/control/base/base-radio.vue +0 -140
  35. package/src/components/control/base/base-select.vue +0 -156
  36. package/src/components/control/base/base-switch.vue +0 -134
  37. package/src/components/control/base/base-table.vue +0 -614
  38. package/src/components/control/base/base-textarea.vue +0 -117
  39. package/src/components/control/base/base-time.vue +0 -138
  40. package/src/components/control/base/base-upload.vue +0 -538
  41. package/src/components/control/busi/busi-approval-record.vue +0 -236
  42. package/src/components/control/busi/busi-dept.vue +0 -290
  43. package/src/components/control/busi/busi-file-preview.vue +0 -194
  44. package/src/components/control/busi/busi-outuser.vue +0 -210
  45. package/src/components/control/busi/busi-user-dialog.vue +0 -195
  46. package/src/components/control/busi/busi-user.vue +0 -321
  47. package/src/components/layout/global-loading.vue +0 -70
  48. package/src/components/layout/main-aside.vue +0 -179
  49. package/src/components/layout/main-fullscreen.vue +0 -79
  50. package/src/components/layout/main-header-crumb.vue +0 -78
  51. package/src/components/layout/main-header-info.vue +0 -150
  52. package/src/components/layout/main-header-tab.vue +0 -391
  53. package/src/components/layout/main-header.vue +0 -111
  54. package/src/components/layout/main-language.vue +0 -28
  55. package/src/components/layout/main-layout.vue +0 -252
  56. package/src/components/layout/main-menu.vue +0 -56
  57. package/src/file-preview.d.ts +0 -4
  58. package/src/file-preview.ts +0 -4
  59. package/src/index.d.ts +0 -38
  60. package/src/index.ts +0 -41
  61. package/src/utils/http.ts +0 -55
  62. package/src/vue-office.d.ts +0 -66
package/README.md CHANGED
@@ -1,11 +1,407 @@
1
1
  # @litianxiang/portal-ui
2
2
 
3
- 统一的流程表单公共控件库。
3
+ 统一的流程表单公共控件库,聚焦:
4
4
 
5
- 目前只是搭好包结构,后续可以从各项目的 `components/control` 中逐步抽取 Base/Busi 系列组件到此包,并通过 pnpm workspace 或 npm 发布给各微服务项目复用。
5
+ - Base 系列基础表单控件
6
+ - Busi 系列业务控件
7
+ - 统一消息弹框与文件预览能力
8
+ - 与 `@litianxiang/portal-core` 对齐的 http 初始化桥接
6
9
 
7
- ## 别名约定
10
+ > 样式边界约定:
11
+ >
12
+ > - `portal-ui` 负责 `element-ui.scss`、`form.scss`、`portal-ui.css`
13
+ > - `iconfont.css` 与 `global.scss` 已拆分到 `@litianxiang/portal-layout`
14
+
15
+ ## 安装
16
+
17
+ ```bash
18
+ pnpm add @litianxiang/portal-ui
19
+ # 或
20
+ npm i @litianxiang/portal-ui
21
+ ```
22
+
23
+ ## 快速接入
24
+
25
+ ### 1) 在 `main.ts` 引入样式
26
+
27
+ ```ts
28
+ import '@litianxiang/portal-ui/styles/portal-ui.css'
29
+ import '@litianxiang/portal-ui/styles/element-ui.scss'
30
+ import '@litianxiang/portal-ui/styles/form.scss'
31
+ ```
32
+
33
+ ### 2) 初始化 portal-ui 的 http
34
+
35
+ 推荐在应用启动时注入已有实例,或由 portal-ui 自行初始化:
36
+
37
+ ```ts
38
+ import { initPortalUiHttp } from '@litianxiang/portal-ui'
39
+
40
+ initPortalUiHttp({
41
+ getUserStore: () => useUserStore(),
42
+ getLoadingStore: () => useLoadingStore(),
43
+ baseURL: '',
44
+ onShowError: (msg) => warning(msg)
45
+ })
46
+ ```
47
+
48
+ 如果你已有统一 http:
49
+
50
+ ```ts
51
+ import { setPortalUiHttp } from '@litianxiang/portal-ui'
52
+
53
+ setPortalUiHttp(http, logoutToAuth)
54
+ ```
55
+
56
+ ## 导出 API
57
+
58
+ ### 组件导出(详细)
59
+
60
+ > 所有组件均可通过以下方式按需引入:
61
+
62
+ ```ts
63
+ import {
64
+ BaseInput,
65
+ BaseSelect,
66
+ BaseDate,
67
+ BaseUpload,
68
+ BaseTable
69
+ } from '@litianxiang/portal-ui'
70
+ ```
71
+
72
+ #### Base 系列
73
+
74
+ 1. **BaseInput**
75
+
76
+ - 用途:单行文本输入。
77
+ - 适用场景:姓名、标题、编号、关键字等普通输入。
78
+ - 示例:
79
+
80
+ ```vue
81
+ <BaseInput v-model="formData.name" placeholder="请输入姓名" clearable />
82
+ ```
83
+
84
+ 2. **BaseButton**
85
+
86
+ - 用途:统一按钮风格封装。
87
+ - 适用场景:提交、查询、重置、删除等操作按钮。
88
+ - 示例:
89
+
90
+ ```vue
91
+ <BaseButton type="primary" @click="handleSubmit">提交</BaseButton>
92
+ ```
93
+
94
+ 3. **BaseCollapseToggle**
95
+
96
+ - 用途:展开/折叠状态切换按钮。
97
+ - 适用场景:高级筛选区域、表单分段折叠。
98
+ - 示例:
99
+
100
+ ```vue
101
+ <BaseCollapseToggle v-model="expanded" />
102
+ ```
103
+
104
+ 4. **BaseSwitch**
105
+
106
+ - 用途:布尔状态开关。
107
+ - 适用场景:启用/禁用、开/关类字段。
108
+ - 示例:
109
+
110
+ ```vue
111
+ <BaseSwitch v-model="formData.enabled" />
112
+ ```
113
+
114
+ 5. **BaseTable**
115
+
116
+ - 用途:统一表格封装(表头、操作列、插槽能力)。
117
+ - 适用场景:列表页、主从明细、可编辑网格。
118
+ - 示例:
119
+
120
+ ```vue
121
+ <BaseTable :data="tableData" :columns="columns" row-key="id" />
122
+ ```
123
+
124
+ 6. **BaseSelect**
125
+
126
+ - 用途:下拉单选/多选封装。
127
+ - 适用场景:字典项、状态、分类等选项输入。
128
+ - 示例:
129
+
130
+ ```vue
131
+ <BaseSelect v-model="formData.status" :options="statusOptions" clearable />
132
+ ```
133
+
134
+ 7. **BaseNumber**
135
+
136
+ - 用途:数字输入封装。
137
+ - 适用场景:数量、金额、排序号等数值字段。
138
+ - 示例:
139
+
140
+ ```vue
141
+ <BaseNumber v-model="formData.count" :min="0" :max="9999" />
142
+ ```
143
+
144
+ 8. **BaseTextarea**
145
+
146
+ - 用途:多行文本输入。
147
+ - 适用场景:备注、说明、审批意见。
148
+ - 示例:
149
+
150
+ ```vue
151
+ <BaseTextarea v-model="formData.remark" :rows="4" placeholder="请输入备注" />
152
+ ```
153
+
154
+ 9. **BaseDate**
155
+
156
+ - 用途:日期/日期区间选择。
157
+ - 适用场景:申请日期、生效日期、统计区间。
158
+ - 示例:
159
+
160
+ ```vue
161
+ <BaseDate v-model="formData.applyDate" type="date" />
162
+ ```
163
+
164
+ 10. **BaseTime**
165
+
166
+ - 用途:时间选择。
167
+ - 适用场景:上班时间、会议时间、时段配置。
168
+ - 示例:
169
+
170
+ ```vue
171
+ <BaseTime v-model="formData.startTime" />
172
+ ```
173
+
174
+ 11. **BaseUpload**
175
+
176
+ - 用途:统一附件上传控件。
177
+ - 适用场景:流程附件、证明材料、图片/PDF/文档上传。
178
+ - 示例:
179
+
180
+ ```vue
181
+ <BaseUpload v-model="formData.files" :proc-bid="procBid" />
182
+ ```
183
+
184
+ 12. **BaseCheckbox**
185
+
186
+ - 用途:多选复选框组。
187
+ - 适用场景:标签多选、权限项多选、条件组合。
188
+ - 示例:
189
+
190
+ ```vue
191
+ <BaseCheckbox v-model="formData.tags" :options="tagOptions" />
192
+ ```
193
+
194
+ 13. **BaseRadio**
195
+
196
+ - 用途:单选按钮组。
197
+ - 适用场景:性别、类型、单一状态选择。
198
+ - 示例:
199
+
200
+ ```vue
201
+ <BaseRadio v-model="formData.type" :options="typeOptions" />
202
+ ```
203
+
204
+ 14. **BaseLink**
205
+
206
+ - 用途:统一样式的链接文本。
207
+ - 适用场景:详情跳转、附件下载、辅助操作入口。
208
+ - 示例:
209
+
210
+ ```vue
211
+ <BaseLink @click="openDetail(row)">查看详情</BaseLink>
212
+ ```
213
+
214
+ 15. **BaseDialog**
215
+
216
+ - 用途:弹窗容器封装。
217
+ - 适用场景:新增/编辑弹窗、确认操作弹窗。
218
+ - 示例:
219
+
220
+ ```vue
221
+ <BaseDialog v-model="dialogVisible" title="编辑信息">
222
+ <div>...</div>
223
+ </BaseDialog>
224
+ ```
225
+
226
+ 16. **BaseChinaArea**
227
+
228
+ - 用途:中国省市区联动选择。
229
+ - 适用场景:户籍地址、办公地址、收件地址。
230
+ - 示例:
231
+
232
+ ```vue
233
+ <BaseChinaArea v-model="formData.area" />
234
+ ```
235
+
236
+ 17. **BasePagination**
237
+
238
+ - 用途:统一分页组件。
239
+ - 适用场景:列表分页与查询联动。
240
+ - 示例:
241
+
242
+ ```vue
243
+ <BasePagination
244
+ :current-page="page.current"
245
+ :page-size="page.size"
246
+ :total="page.total"
247
+ @change="handlePageChange"
248
+ />
249
+ ```
250
+
251
+ #### Busi 系列
252
+
253
+ 18. **BaseApprovalRecord**
254
+
255
+ - 用途:审批记录展示(业务封装)。
256
+ - 适用场景:流程单据详情中的审批轨迹。
257
+ - 示例:
258
+
259
+ ```vue
260
+ <BaseApprovalRecord :proc-inst-id="procInstId" />
261
+ ```
262
+
263
+ 19. **BaseUser**
264
+
265
+ - 用途:人员选择控件。
266
+ - 适用场景:申请人、审批人、抄送人选择。
267
+ - 示例:
268
+
269
+ ```vue
270
+ <BaseUser v-model="formData.user" />
271
+ ```
272
+
273
+ 20. **BusiDept**
274
+
275
+ - 用途:部门选择控件。
276
+ - 适用场景:组织归属、发起部门、统计维度部门。
277
+ - 示例:
278
+
279
+ ```vue
280
+ <BusiDept v-model="formData.dept" />
281
+ ```
282
+
283
+ 21. **BusiOutUser**
284
+
285
+ - 用途:外包顾问选择控件。
286
+ - 适用场景:外包人员派工、顾问信息录入。
287
+ - 示例:
288
+
289
+ ```vue
290
+ <BusiOutUser v-model="formData.outUser" />
291
+ ```
292
+
293
+ 22. **BusiUserDialog**
294
+
295
+ - 用途:人员选择弹窗组件。
296
+ - 适用场景:复杂筛选+批量选择人员。
297
+ - 示例:
298
+
299
+ ```vue
300
+ <BusiUserDialog v-model="userDialogVisible" @confirm="handleUserConfirm" />
301
+ ```
302
+
303
+ #### 文件预览组件
304
+
305
+ 23. **BaseFilePreview**
306
+
307
+ - 用途:基础文件预览容器。
308
+ - 适用场景:单文件预览、附件详情预览。
309
+ - 示例:
310
+
311
+ ```vue
312
+ <BaseFilePreview :file-url="fileUrl" :file-name="fileName" />
313
+ ```
314
+
315
+ 24. **BusiFilePreview**
316
+
317
+ - 用途:业务场景文件预览组件(推荐)。
318
+ - 适用场景:流程单附件列表预览。
319
+ - 示例:
320
+
321
+ ```vue
322
+ <BusiFilePreview :files="attachmentList" />
323
+ ```
324
+
325
+ 25. **WorkflowFilePreview(兼容导出,已废弃)**
326
+
327
+ - 用途:历史命名兼容。
328
+ - 说明:已等价映射到 `BusiFilePreview`,新代码请直接使用 `BusiFilePreview`。
329
+
330
+ ### 方法导出(详细)
331
+
332
+ #### 1) `baseMessageBox`
333
+
334
+ - 作用:统一消息弹框能力(`confirm/alert/success/warning`)。
335
+ - 典型场景:提交前确认、删除确认、统一警告提示。
336
+ - 示例:
337
+
338
+ ```ts
339
+ import { baseMessageBox } from '@litianxiang/portal-ui'
340
+
341
+ await baseMessageBox.confirm('确认提交当前表单吗?')
342
+ baseMessageBox.success('保存成功')
343
+ baseMessageBox.warning('请先完善必填项')
344
+ ```
345
+
346
+ #### 2) `initPortalUiHttp(options)`
347
+
348
+ - 作用:创建并注册 portal-ui 默认 http(内部基于 `@litianxiang/portal-core` 的 `createAuthHttpClient`)。
349
+ - 入参:
350
+ - `getUserStore: () => any`:返回 user store。
351
+ - `getLoadingStore: () => any`:返回 loading store。
352
+ - `baseURL?: string`:可选请求前缀。
353
+ - `onShowError?: (msg: string) => void`:可选统一错误提示。
354
+ - 返回:`{ http, logoutToAuth }`。
355
+ - 示例:
356
+
357
+ ```ts
358
+ import { initPortalUiHttp } from '@litianxiang/portal-ui'
359
+
360
+ const { http, logoutToAuth } = initPortalUiHttp({
361
+ getUserStore: () => useUserStore(),
362
+ getLoadingStore: () => useLoadingStore(),
363
+ onShowError: (msg) => warning(msg)
364
+ })
365
+ ```
366
+
367
+ #### 3) `setPortalUiHttp(http, logoutToAuth?)`
368
+
369
+ - 作用:将业务系统已创建的 http 实例注入 portal-ui,避免重复创建拦截器。
370
+ - 入参:
371
+ - `http: any`:宿主项目的统一 http 实例。
372
+ - `logoutToAuth?: () => void`:可选统一退出函数。
373
+ - 典型场景:主项目已有 `http.ts`,portal-ui 只复用。
374
+ - 示例:
375
+
376
+ ```ts
377
+ import { setPortalUiHttp } from '@litianxiang/portal-ui'
378
+ import { http, logoutToAuth } from '@/utils/http'
379
+
380
+ setPortalUiHttp(http, logoutToAuth)
381
+ ```
382
+
383
+ ## 与 portal-core / portal-layout 的关系
384
+
385
+ - `portal-ui`:控件与表单样式
386
+ - `portal-layout`:布局组件、iconfont、global 样式
387
+ - `portal-core`:路由、鉴权、请求拦截、权限/菜单/用户状态内核
388
+
389
+ 建议业务站点统一按此分层依赖,避免职责交叉。
390
+
391
+ ## 本地开发
392
+
393
+ ```bash
394
+ pnpm install
395
+ pnpm run build
396
+ pnpm run pack:check
397
+ ```
398
+
399
+ `pack:check` 会先构建再打包到临时目录,用于发布前检查产物。
400
+
401
+ ## 发布建议
402
+
403
+ 1. 修改版本号(遵循 patch 递增)
404
+ 2. 执行 `pnpm run pack:check`
405
+ 3. 确认产物仅包含预期的 `dist` 与类型声明
406
+ 4. 执行 `npm publish --access public --registry=https://registry.npmjs.org/`
8
407
 
9
- - `portal.ui` 内部新增专属别名:`@ui/* -> src/*`
10
- - 该别名仅用于 `portal.ui` 工程内的类型解析与开发体验
11
- - 当前包以 `src` 源码形式发布给宿主项目,库内运行时导入建议继续使用相对路径,避免宿主缺少 `@ui` 解析配置导致构建失败
package/dist/index.d.ts CHANGED
@@ -22,16 +22,6 @@ export { default as BaseUser } from './components/control/busi/busi-user.vue'
22
22
  export { default as BusiDept } from './components/control/busi/busi-dept.vue'
23
23
  export { default as BusiOutUser } from './components/control/busi/busi-outuser.vue'
24
24
  export { default as BusiUserDialog } from './components/control/busi/busi-user-dialog.vue'
25
- export { default as MainLayout } from './components/layout/main-layout.vue'
26
- export { default as MainAside } from './components/layout/main-aside.vue'
27
- export { default as MainHeader } from './components/layout/main-header.vue'
28
- export { default as MainHeaderCrumb } from './components/layout/main-header-crumb.vue'
29
- export { default as MainHeaderInfo } from './components/layout/main-header-info.vue'
30
- export { default as MainHeaderTab } from './components/layout/main-header-tab.vue'
31
- export { default as MainFullscreen } from './components/layout/main-fullscreen.vue'
32
- export { default as MainLanguage } from './components/layout/main-language.vue'
33
- export { default as MainMenu } from './components/layout/main-menu.vue'
34
- export { default as GlobalLoading } from './components/layout/global-loading.vue'
35
25
  export { baseMessageBox } from './components/control/base/base-messagebox.vue'
36
26
 
37
27
  export type { InitPortalUiHttpOptions } from './utils/http'