sohelp-eleplus 1.1.21 → 1.1.24
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/cache/DictCache.js +38 -7
- package/cache/ModuleCache.js +18 -1
- package/cache/README.md +53 -0
- package/components.js +1 -0
- package/http/CrudHttp.js +63 -43
- package/http/DictHttp.js +5 -1
- package/http/ModuleHttp.js +26 -11
- package/http/README.md +50 -0
- package/http/SohelpHttp.js +48 -49
- package/package.json +1 -1
- package/sohelp-ace-editor/README.md +53 -0
- package/sohelp-application-select/README.md +15 -0
- package/sohelp-autocode/README.md +38 -0
- package/sohelp-autocode/index.vue +7 -7
- package/sohelp-calendar-view/README.md +15 -0
- package/sohelp-card/README.md +27 -0
- package/sohelp-card-view/README.md +15 -0
- package/sohelp-condition/README.md +61 -0
- package/sohelp-cry-input/README.md +30 -0
- package/sohelp-date/README.md +27 -0
- package/sohelp-datetime/README.md +29 -0
- package/sohelp-datetime-picker/README.md +36 -0
- package/sohelp-datetime-range/README.md +35 -0
- package/sohelp-dict/README.md +43 -0
- package/sohelp-dict/index.vue +118 -72
- package/sohelp-drawer/README.md +42 -0
- package/sohelp-drawer/index.vue +4 -1
- package/sohelp-drop-card/README.md +41 -0
- package/sohelp-dyn-select/README.md +36 -0
- package/sohelp-dyn-select/index.vue +2 -2
- package/sohelp-dyn-tree/README.md +31 -0
- package/sohelp-dyn-tree-select/README.md +28 -0
- package/sohelp-entity-form/README.md +45 -0
- package/sohelp-entity-form/index.vue +14 -5
- package/sohelp-entity-grid/README.md +18 -0
- package/sohelp-file-upload/README.md +35 -0
- package/sohelp-file-upload/index.vue +21 -3
- package/sohelp-filter-scheme/README.md +41 -0
- package/sohelp-grid/README.md +47 -0
- package/sohelp-grid/index.vue +124 -73
- package/sohelp-grid/js/DefaultGridOptions.js +2 -1
- package/sohelp-grid/js/DefaultProps.js +5 -1
- package/sohelp-grid/js/useSohelpGridConfig.js +33 -4
- package/sohelp-grid-select/README.md +38 -0
- package/sohelp-grid-view/README.md +34 -0
- package/sohelp-grid-view/filter/README.md +45 -0
- package/sohelp-grid-view/filter/config/README.md +37 -0
- package/sohelp-grid-view/filter/filter-form.vue +15 -12
- package/sohelp-grid-view/index.vue +62 -2
- package/sohelp-grid-view-select/README.md +36 -0
- package/sohelp-group-view/README.md +7 -0
- package/sohelp-icon-select/README.md +21 -0
- package/sohelp-image-upload/README.md +35 -0
- package/sohelp-image-upload/index.vue +8 -2
- package/sohelp-import/README.md +35 -0
- package/sohelp-input/README.md +21 -0
- package/sohelp-modal/README.md +30 -0
- package/sohelp-modal/index.vue +2 -1
- package/sohelp-module/README.md +24 -0
- package/sohelp-number-input/README.md +18 -0
- package/sohelp-number-range/README.md +24 -0
- package/sohelp-org-select/README.md +20 -0
- package/sohelp-org-tree/README.md +18 -0
- package/sohelp-org-tree-select/README.md +22 -0
- package/sohelp-org-user-tree/README.md +18 -0
- package/sohelp-org-user-tree-select/README.md +7 -0
- package/sohelp-page/README.md +21 -0
- package/sohelp-pagination/README.md +13 -0
- package/sohelp-power/README.md +27 -0
- package/sohelp-pro-form/README.md +35 -0
- package/sohelp-pro-form/components/pro-form-item.vue +10 -7
- package/sohelp-pro-form/index.vue +6 -0
- package/sohelp-pro-form/util.js +6 -13
- package/sohelp-pro-layout/README.md +7 -0
- package/sohelp-pro-table/README.md +13 -0
- package/sohelp-process/README.md +24 -0
- package/sohelp-rate/README.md +23 -0
- package/sohelp-rate/index.vue +12 -8
- package/sohelp-relation/README.md +7 -0
- package/sohelp-rich-text/README.md +23 -0
- package/sohelp-richtext/README.md +3 -0
- package/sohelp-role-select/README.md +20 -0
- package/sohelp-search/README.md +7 -0
- package/sohelp-search-pro-form/README.md +3 -0
- package/sohelp-select/README.md +51 -0
- package/sohelp-select/index.vue +18 -21
- package/sohelp-split-panel/README.md +31 -0
- package/sohelp-switch/README.md +33 -0
- package/sohelp-table/README.md +36 -0
- package/sohelp-table-select/index.vue +358 -0
- package/sohelp-tenant-select/README.md +31 -0
- package/sohelp-text/README.md +17 -0
- package/sohelp-textarea-input/README.md +24 -0
- package/sohelp-textarea-input/index.vue +16 -11
- package/sohelp-time/README.md +22 -0
- package/sohelp-tree/README.md +32 -0
- package/sohelp-tree-select/README.md +18 -0
- package/sohelp-user-select/README.md +22 -0
- package/sohelp-user-tag/README.md +15 -0
- package/sohelp-user-tree/README.md +15 -0
- package/sohelp-vform-drawer/README.md +25 -0
- package/sohelp-vform-eleplus/README.md +39 -0
- package/sohelp-vform-modal/README.md +25 -0
- package/sohelp-vform-select/README.md +15 -0
- package/sohelp-vxe-grid/README.md +50 -0
- package/sohelp-vxe-grid-select/README.md +36 -0
- package/sohelp-vxe-table/README.md +27 -0
- package/sohelp-workflow/README.md +28 -0
- package/sohelp-workflow-drawer/README.md +38 -0
- package/sohelp-grid/SohelpGridConfig.js~ +0 -408
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# SohelpGridView 综合表格视图组件
|
|
2
|
+
|
|
3
|
+
这是一个组合组件,集成了 `SohelpFilterScheme`(筛选区)和 `SohelpGrid`(表格区),实现了典型的“左侧/顶部筛选 + 右侧/底部表格”的布局模式,并内置了数据加载逻辑。
|
|
4
|
+
|
|
5
|
+
## 基础用法
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<sohelp-grid-view
|
|
9
|
+
viewCode="user_list_view"
|
|
10
|
+
entityName="SysUser"
|
|
11
|
+
/>
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## 属性 (Props)
|
|
15
|
+
|
|
16
|
+
| 属性名 | 类型 | 默认值 | 说明 |
|
|
17
|
+
| config | Object | - | 视图配置对象(如果未提供 viewCode,可直接传入配置) |
|
|
18
|
+
| viewCode | String | - | 视图编码,用于从后端加载视图配置 |
|
|
19
|
+
| entityName | String | - | 实体名称,用于默认的数据请求 |
|
|
20
|
+
|
|
21
|
+
## 公开方法 (Expose)
|
|
22
|
+
|
|
23
|
+
- `reload(params)`: 刷新表格数据。
|
|
24
|
+
- `getSelectRecords()`: 获取表格选中行。
|
|
25
|
+
|
|
26
|
+
## 核心逻辑
|
|
27
|
+
|
|
28
|
+
1. **配置加载**: 组件挂载时,根据 `viewCode` 调用 `/engine/web/view/read` 获取视图配置(包括筛选配置和表格列配置)。
|
|
29
|
+
2. **数据加载**:
|
|
30
|
+
- 监听筛选组件的 `filter` 事件。
|
|
31
|
+
- 监听表格组件的 `page-change` 和 `sort-change` 事件。
|
|
32
|
+
- 自动组装分页、排序、筛选参数,调用 `/engine/web/entity/findAll` (或其他配置的接口) 加载数据。
|
|
33
|
+
3. **布局**: 支持筛选区和表格区的伸缩布局(SplitPane)。
|
|
34
|
+
4. **状态保存**: 支持保存用户对列宽、筛选条件的个性化设置。
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Grid Filter Component
|
|
2
|
+
|
|
3
|
+
This component provides advanced filtering capabilities for grid views, supporting custom configuration, various display positions (top, modal, side), and integration with filter schemes.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Advanced Filtering**: Support for complex filter conditions.
|
|
8
|
+
- **Configurable Layout**: Can be positioned at the top, side, or in a modal.
|
|
9
|
+
- **Scheme Management**: Save and switch between different filter schemes.
|
|
10
|
+
- **Customizable**: Configure which fields to display and how to filter them.
|
|
11
|
+
|
|
12
|
+
## Props
|
|
13
|
+
|
|
14
|
+
| Name | Type | Default | Description |
|
|
15
|
+
| :--- | :--- | :--- | :--- |
|
|
16
|
+
| modelValue | Object | - | The current filter value. |
|
|
17
|
+
| propertiesMap | Object | `{}` | Map of property definitions for the filter fields. |
|
|
18
|
+
| config | Object | - | The filter configuration object (v-model). |
|
|
19
|
+
| filterValue | Object | - | The filter values (v-model). |
|
|
20
|
+
|
|
21
|
+
## Events
|
|
22
|
+
|
|
23
|
+
| Name | Description | Parameters |
|
|
24
|
+
| :--- | :--- | :--- |
|
|
25
|
+
| change | Triggered when filter values change. | - |
|
|
26
|
+
| filter | Triggered when a filter action is executed. | `filterValue` |
|
|
27
|
+
| update:modelValue | Updates the model value. | `value` |
|
|
28
|
+
| close | Triggered when the filter panel is closed. | - |
|
|
29
|
+
| reset | Triggered when the filter is reset. | - |
|
|
30
|
+
| save | Triggered when filter configuration is saved. | `true` |
|
|
31
|
+
| changeFilterScheme | Triggered when the filter scheme is changed. | `schemeValue`, `filterValue` |
|
|
32
|
+
|
|
33
|
+
## Usage
|
|
34
|
+
|
|
35
|
+
```vue
|
|
36
|
+
<template>
|
|
37
|
+
<SohelpGridFilter
|
|
38
|
+
v-model:config="gridConfig"
|
|
39
|
+
v-model:filterValue="filterValues"
|
|
40
|
+
:propertiesMap="properties"
|
|
41
|
+
@filter="handleFilter"
|
|
42
|
+
@reset="handleReset"
|
|
43
|
+
/>
|
|
44
|
+
</template>
|
|
45
|
+
```
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Grid Filter Config Component
|
|
2
|
+
|
|
3
|
+
A configuration modal for the grid filter system, allowing users to customize the grid's appearance and behavior, including visible columns, sorting, search keywords, and filter schemes.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Column Management**: Show/hide and reorder grid columns.
|
|
8
|
+
- **Advanced Filter Setup**: Configure fields available for advanced filtering.
|
|
9
|
+
- **Sort Configuration**: Set up default and available sort fields.
|
|
10
|
+
- **Keyword Search**: Configure fields included in keyword search.
|
|
11
|
+
- **Scheme Management**: Manage saved filter schemes.
|
|
12
|
+
- **General Config**: Basic settings for the grid filter.
|
|
13
|
+
|
|
14
|
+
## Props
|
|
15
|
+
|
|
16
|
+
| Name | Type | Default | Description |
|
|
17
|
+
| :--- | :--- | :--- | :--- |
|
|
18
|
+
| modelValue | Boolean | - | Controls the visibility of the configuration modal (v-model). |
|
|
19
|
+
| config | Object | - | The configuration object to be modified. |
|
|
20
|
+
|
|
21
|
+
## Events
|
|
22
|
+
|
|
23
|
+
| Name | Description | Parameters |
|
|
24
|
+
| :--- | :--- | :--- |
|
|
25
|
+
| update:modelValue | Updates the visibility state. | `visible` |
|
|
26
|
+
| done | Triggered when configuration is completed. | - |
|
|
27
|
+
|
|
28
|
+
## Usage
|
|
29
|
+
|
|
30
|
+
```vue
|
|
31
|
+
<template>
|
|
32
|
+
<SohelpGridFilterConfig
|
|
33
|
+
v-model="configVisible"
|
|
34
|
+
:config="gridConfig"
|
|
35
|
+
/>
|
|
36
|
+
</template>
|
|
37
|
+
```
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
</el-radio-group>
|
|
24
24
|
</div>
|
|
25
25
|
<!-- advanced -->
|
|
26
|
-
<div class="advanced-box" ref="advancedBoxRef">
|
|
26
|
+
<div class="advanced-box" ref="advancedBoxRef" :style="{ '--max-columns': config?.filter?.config?.maxColumns }">
|
|
27
27
|
<filter-condition-item
|
|
28
28
|
@search="filter"
|
|
29
29
|
v-for="(item, index) in getFilterList"
|
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
v-model="filterValue.filter[index]"
|
|
32
32
|
:properties="propertiesMap?.[item.name]"
|
|
33
33
|
:ref="(el) => setItemRef(el, item.name)"
|
|
34
|
+
class="sohelp-filter-condition"
|
|
34
35
|
></filter-condition-item>
|
|
35
36
|
</div>
|
|
36
37
|
<template #footer>
|
|
@@ -139,15 +140,16 @@
|
|
|
139
140
|
if (_sum > threshold) {
|
|
140
141
|
return {
|
|
141
142
|
_index: index,
|
|
142
|
-
index: index,
|
|
143
|
-
key: key,
|
|
144
|
-
accumulatedSum: sum,
|
|
145
|
-
value: value
|
|
143
|
+
index: index,
|
|
144
|
+
key: key,
|
|
145
|
+
accumulatedSum: sum,
|
|
146
|
+
value: value
|
|
146
147
|
};
|
|
147
148
|
}
|
|
148
149
|
sum += value;
|
|
149
150
|
index++;
|
|
150
151
|
}
|
|
152
|
+
|
|
151
153
|
return {
|
|
152
154
|
index: map.size
|
|
153
155
|
};
|
|
@@ -157,7 +159,11 @@
|
|
|
157
159
|
* 获取当前显示的元素
|
|
158
160
|
*/
|
|
159
161
|
const getFilterList = computed(() => {
|
|
160
|
-
|
|
162
|
+
const { filterPosition } = config.value.filter?.config;
|
|
163
|
+
if (filterPosition?.toUpperCase() === 'TOP') {
|
|
164
|
+
return filterList.value?.slice(0, maxRowsConfig.current.index + 1);
|
|
165
|
+
}
|
|
166
|
+
return filterList.value;
|
|
161
167
|
});
|
|
162
168
|
|
|
163
169
|
const load = () => {
|
|
@@ -429,18 +435,15 @@
|
|
|
429
435
|
overflow-y: auto;
|
|
430
436
|
|
|
431
437
|
.advanced-box {
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
flex-wrap: wrap;
|
|
438
|
+
width: calc(100% - 10px);
|
|
439
|
+
display: grid;
|
|
440
|
+
grid-template-columns: repeat(var(--max-columns), 1fr);
|
|
436
441
|
|
|
437
442
|
.is-expand {
|
|
438
443
|
display: none !important;
|
|
439
444
|
}
|
|
440
445
|
|
|
441
446
|
.sohelp-filter-condition {
|
|
442
|
-
width: calc(50% - 10px);
|
|
443
|
-
|
|
444
447
|
.filter-condition {
|
|
445
448
|
width: 100% !important;
|
|
446
449
|
}
|
|
@@ -30,7 +30,10 @@
|
|
|
30
30
|
'operationButtonClick',
|
|
31
31
|
'changeFilterScheme',
|
|
32
32
|
'editClosed',
|
|
33
|
-
'currentColumnChange'
|
|
33
|
+
'currentColumnChange',
|
|
34
|
+
'checkboxChange',
|
|
35
|
+
'pageChange',
|
|
36
|
+
'radioChange'
|
|
34
37
|
]);
|
|
35
38
|
|
|
36
39
|
// grid实例
|
|
@@ -75,6 +78,18 @@
|
|
|
75
78
|
})
|
|
76
79
|
});
|
|
77
80
|
|
|
81
|
+
const checkboxChange = (row, checked, type) => {
|
|
82
|
+
emit('checkboxChange', row, checked, type);
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
const radioChange = (config) => {
|
|
86
|
+
emit('radioChange', config);
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
const pageChange = (config) => {
|
|
90
|
+
emit('pageChange', config);
|
|
91
|
+
};
|
|
92
|
+
|
|
78
93
|
/**
|
|
79
94
|
* 分割器配置
|
|
80
95
|
*/
|
|
@@ -200,6 +215,41 @@
|
|
|
200
215
|
return sohelpGridRef.value?.selections;
|
|
201
216
|
};
|
|
202
217
|
|
|
218
|
+
/**
|
|
219
|
+
* 设置复选框行键
|
|
220
|
+
|
|
221
|
+
* @param row 行数据
|
|
222
|
+
|
|
223
|
+
* @param checked 是否选中
|
|
224
|
+
*/
|
|
225
|
+
const setCheckboxRowKey = (row, checked) => {
|
|
226
|
+
sohelpGridRef.value?.setCheckboxRowKey(row, checked);
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
const setRadioRowKey = (row, checked) => {
|
|
230
|
+
sohelpGridRef.value?.setRadioRowKey(row, checked);
|
|
231
|
+
};
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* 获取选中的记录
|
|
235
|
+
*/
|
|
236
|
+
const getCheckboxRecords = () => {
|
|
237
|
+
return sohelpGridRef.value?.getCheckboxRecords();
|
|
238
|
+
};
|
|
239
|
+
/**
|
|
240
|
+
* 获取保留的记录
|
|
241
|
+
*/
|
|
242
|
+
const getCheckboxReserveRecords = (isFull = false) => {
|
|
243
|
+
return sohelpGridRef.value?.getCheckboxReserveRecords(isFull);
|
|
244
|
+
};
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* 获取数据
|
|
248
|
+
*/
|
|
249
|
+
const getData = () => {
|
|
250
|
+
return sohelpGridRef.value?.getData();
|
|
251
|
+
};
|
|
252
|
+
|
|
203
253
|
watch(
|
|
204
254
|
_filterValue,
|
|
205
255
|
(val) => {
|
|
@@ -217,7 +267,12 @@
|
|
|
217
267
|
reload,
|
|
218
268
|
load,
|
|
219
269
|
refresh,
|
|
220
|
-
validate
|
|
270
|
+
validate,
|
|
271
|
+
setCheckboxRowKey,
|
|
272
|
+
getCheckboxRecords,
|
|
273
|
+
getCheckboxReserveRecords,
|
|
274
|
+
getData,
|
|
275
|
+
setRadioRowKey
|
|
221
276
|
});
|
|
222
277
|
</script>
|
|
223
278
|
<script>
|
|
@@ -258,6 +313,11 @@
|
|
|
258
313
|
@operationButtonClick="operationButtonClick"
|
|
259
314
|
@editClosed="editClosed"
|
|
260
315
|
@currentColumnChange="currentColumnChange"
|
|
316
|
+
@checkboxChange="checkboxChange"
|
|
317
|
+
@checkboxAll="checkboxChange"
|
|
318
|
+
@radioChange="radioChange"
|
|
319
|
+
@pageChange="pageChange"
|
|
320
|
+
v-bind="$attrs"
|
|
261
321
|
>
|
|
262
322
|
<template v-for="(_, name) in $slots" #[name]="slotProps">
|
|
263
323
|
<slot :name="name" v-bind="slotProps" />
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# SohelpGridViewSelect 表格视图选择器
|
|
2
|
+
|
|
3
|
+
基于 `SohelpGridView` 的弹窗选择器组件。通过 `refid` 引用配置,点击按钮弹出表格视图进行数据选择,支持单选和多选。
|
|
4
|
+
|
|
5
|
+
## 基础用法
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<sohelp-grid-view-select
|
|
9
|
+
v-model="selectedId"
|
|
10
|
+
refid="user_view_ref"
|
|
11
|
+
/>
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## 属性 (Props)
|
|
15
|
+
|
|
16
|
+
| 属性名 | 类型 | 默认值 | 说明 |
|
|
17
|
+
| modelValue | String/Array | [] | 绑定的值(ID 或 ID 数组) |
|
|
18
|
+
| refid | String | - | 必填,视图引用 ID,用于加载表格配置 |
|
|
19
|
+
| multiple | Boolean | false | 是否多选 |
|
|
20
|
+
| data | Object/Array | - | 已选中的数据对象(用于回显) |
|
|
21
|
+
| labelField | String | 'label' | 显示文本字段名 |
|
|
22
|
+
| valueField | String | 'id' | 值字段名 |
|
|
23
|
+
|
|
24
|
+
## 事件 (Events)
|
|
25
|
+
|
|
26
|
+
| 事件名 | 说明 | 回调参数 |
|
|
27
|
+
| update:modelValue | 更新绑定值 | (value) |
|
|
28
|
+
| update:data | 更新选中数据对象 | (data) |
|
|
29
|
+
| confirm | 确认选择时触发 | (rows) |
|
|
30
|
+
| show | 弹窗打开时触发 | - |
|
|
31
|
+
|
|
32
|
+
## 功能特性
|
|
33
|
+
|
|
34
|
+
- **引用配置**: 通过 `refid` 复用已有的表格视图配置。
|
|
35
|
+
- **标签展示**: 选中的数据以标签形式展示在输入框区域,支持移除。
|
|
36
|
+
- **弹窗选择**: 集成完整的 `SohelpGridView`,支持筛选、分页等功能。
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# SohelpIconSelect 图标选择器
|
|
2
|
+
|
|
3
|
+
支持多种图标库(Element Plus, EleAdminPlus, VxeUI)的图标选择组件,提供可视化预览。
|
|
4
|
+
|
|
5
|
+
## 基础用法
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<sohelp-icon-select v-model="iconName" />
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 属性 (Props)
|
|
12
|
+
|
|
13
|
+
| 属性名 | 类型 | 默认值 | 说明 |
|
|
14
|
+
| modelValue | String | - | 选中的图标名称 |
|
|
15
|
+
|
|
16
|
+
## 功能特性
|
|
17
|
+
|
|
18
|
+
- **多图库支持**: 内置 Element Plus、EleAdminPlus 和 VxeUI 图标库。
|
|
19
|
+
- **可视化预览**: 下拉列表中直接展示图标样式。
|
|
20
|
+
- **搜索**: 支持通过图标名称过滤。
|
|
21
|
+
- **前缀展示**: 输入框前缀显示当前选中的图标。
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# SohelpImageUpload 图片上传组件
|
|
2
|
+
|
|
3
|
+
基于 `vxe-upload` 定制的图片上传组件,专注于图片处理,支持预览、粘贴上传、多图上传等。
|
|
4
|
+
|
|
5
|
+
## 基础用法
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<sohelp-image-upload v-model="imageId" />
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 属性 (Props)
|
|
12
|
+
|
|
13
|
+
| 属性名 | 类型 | 默认值 | 说明 |
|
|
14
|
+
| modelValue | String/Array | - | 绑定的图片 ID |
|
|
15
|
+
| data | Object/Array | [] | 图片对象数据 |
|
|
16
|
+
| readonly | Boolean | false | 是否只读 |
|
|
17
|
+
| multiple | Boolean | false | 是否多选 |
|
|
18
|
+
| limitCount | Number | 9 | 最大上传数量 |
|
|
19
|
+
| limitSize | Number | 10 | 单张图片大小限制 (MB) |
|
|
20
|
+
| imageTypes | Array | ['jpg', 'png'...] | 允许的图片类型 |
|
|
21
|
+
| imageConfig | Object | {width: 30, height: 26} | 图片显示配置 |
|
|
22
|
+
|
|
23
|
+
## 事件 (Events)
|
|
24
|
+
|
|
25
|
+
| 事件名 | 说明 | 回调参数 |
|
|
26
|
+
| update:modelValue | 更新绑定 ID | (value) |
|
|
27
|
+
| update:data | 更新图片对象数据 | (data) |
|
|
28
|
+
|
|
29
|
+
## 功能特性
|
|
30
|
+
|
|
31
|
+
- **图片预览**: 上传后可预览缩略图。
|
|
32
|
+
- **粘贴上传**: 支持从剪贴板粘贴图片上传。
|
|
33
|
+
- **下载**: 支持下载图片。
|
|
34
|
+
- **删除**: 支持删除图片,需二次确认。
|
|
35
|
+
- **进度显示**: 显示上传百分比。
|
|
@@ -105,7 +105,10 @@
|
|
|
105
105
|
layout: 'horizontal'
|
|
106
106
|
};
|
|
107
107
|
}
|
|
108
|
-
}
|
|
108
|
+
},
|
|
109
|
+
refid: String,
|
|
110
|
+
ref_id: String,
|
|
111
|
+
ref_type: [String, Number]
|
|
109
112
|
});
|
|
110
113
|
|
|
111
114
|
const emit = defineEmits(['update:modelValue', 'update:data']);
|
|
@@ -160,7 +163,7 @@
|
|
|
160
163
|
return false;
|
|
161
164
|
}
|
|
162
165
|
|
|
163
|
-
const res = await SohelpHttp.post('/engine/web/file/delete', { id: id });
|
|
166
|
+
const res = await SohelpHttp.post('/engine/web/file/delete', { id: id, refid: props.refid });
|
|
164
167
|
|
|
165
168
|
if (res.meta.success) {
|
|
166
169
|
ElMessage.success(res.meta.message);
|
|
@@ -182,6 +185,9 @@
|
|
|
182
185
|
const uploadMethod = async ({ file }) => {
|
|
183
186
|
const formData = new FormData();
|
|
184
187
|
formData.append('files', file);
|
|
188
|
+
formData.append('refid', props.refid);
|
|
189
|
+
formData.append('ref_id', props.ref_id);
|
|
190
|
+
formData.append('ref_type', props.ref_type);
|
|
185
191
|
|
|
186
192
|
const res = await SohelpHttp.post('/engine/web/file/upload', formData);
|
|
187
193
|
if (res.meta.success && res.data.length > 0) {
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# SohelpImport 数据导入组件
|
|
2
|
+
|
|
3
|
+
提供 Excel 数据导入功能的完整解决方案,包含模板下载、文件上传、数据预览、导入历史管理等功能。
|
|
4
|
+
|
|
5
|
+
## 基础用法
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<sohelp-import
|
|
9
|
+
v-model="showImport"
|
|
10
|
+
refid="user_import_ref"
|
|
11
|
+
:fields="importFields"
|
|
12
|
+
/>
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## 属性 (Props)
|
|
16
|
+
|
|
17
|
+
| 属性名 | 类型 | 默认值 | 说明 |
|
|
18
|
+
| modelValue | Boolean | false | 控制弹窗显示隐藏 |
|
|
19
|
+
| refid | String | - | 必填,导入配置引用 ID |
|
|
20
|
+
| fields | Array | [] | 可导入字段列表,用于配置映射 |
|
|
21
|
+
|
|
22
|
+
## 事件 (Events)
|
|
23
|
+
|
|
24
|
+
| 事件名 | 说明 | 回调参数 |
|
|
25
|
+
| update:modelValue | 弹窗显隐状态更新 | (visible) |
|
|
26
|
+
| close | 关闭弹窗时触发 | - |
|
|
27
|
+
|
|
28
|
+
## 功能特性
|
|
29
|
+
|
|
30
|
+
- **模板下载**: 根据 `refid` 下载对应的 Excel 导入模板。
|
|
31
|
+
- **文件上传**: 支持拖拽上传,限制文件格式 (.xls, .xlsx) 和大小。
|
|
32
|
+
- **数据预览**: 上传后自动解析并展示前 50 条数据供预览。
|
|
33
|
+
- **导入历史**: 查看历史导入记录,支持重新下载原文件、恢复导入或删除记录。
|
|
34
|
+
- **配置映射**: (可选) 支持配置 Excel 列与系统字段的映射关系。
|
|
35
|
+
- **进度反馈**: 上传和解析过程有明确的进度和状态提示。
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# SohelpInput 输入框组件
|
|
2
|
+
|
|
3
|
+
基于 `el-input` 的封装,增加了自动聚焦功能。
|
|
4
|
+
|
|
5
|
+
## 基础用法
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<sohelp-input v-model="value" auto-focus />
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 属性 (Props)
|
|
12
|
+
|
|
13
|
+
| 属性名 | 类型 | 默认值 | 说明 |
|
|
14
|
+
| modelValue | String/Number | - | 绑定值 |
|
|
15
|
+
| autoFocus | Boolean | false | 组件挂载后是否自动获取焦点 |
|
|
16
|
+
| disabled | Boolean | false | 是否禁用 |
|
|
17
|
+
| readonly | Boolean | false | 是否只读 |
|
|
18
|
+
|
|
19
|
+
## 事件 (Events)
|
|
20
|
+
|
|
21
|
+
支持 `el-input` 的所有事件。
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# SohelpModal 弹窗组件
|
|
2
|
+
|
|
3
|
+
通用的弹窗组件封装,提供了标准的头部、内容区和底部按钮布局。
|
|
4
|
+
|
|
5
|
+
## 基础用法
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<sohelp-modal v-model="visible" title="标题" @confirm="handleConfirm">
|
|
9
|
+
内容区域
|
|
10
|
+
</sohelp-modal>
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## 属性 (Props)
|
|
14
|
+
|
|
15
|
+
| 属性名 | 类型 | 默认值 | 说明 |
|
|
16
|
+
| modelValue | Boolean | false | 控制弹窗显示隐藏 |
|
|
17
|
+
| showFooter | Boolean | true | 是否显示底部按钮栏 |
|
|
18
|
+
| closeOnClickModal | Boolean | false | 点击遮罩层是否关闭 |
|
|
19
|
+
| title | String | - | 弹窗标题 |
|
|
20
|
+
|
|
21
|
+
## 事件 (Events)
|
|
22
|
+
|
|
23
|
+
| 事件名 | 说明 | 回调参数 |
|
|
24
|
+
| confirm | 点击确认按钮时触发 | - |
|
|
25
|
+
| cancel | 点击取消或关闭时触发 | - |
|
|
26
|
+
|
|
27
|
+
## 公开方法 (Expose)
|
|
28
|
+
|
|
29
|
+
- `show()`: 打开弹窗。
|
|
30
|
+
- `close()`: 关闭弹窗。
|
package/sohelp-modal/index.vue
CHANGED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# SohelpModule 模块弹窗管理器
|
|
2
|
+
|
|
3
|
+
用于统一管理和渲染动态弹窗(Modal)和抽屉(Drawer)的组件,通常用于低代码场景或需要动态打开表单的场景。
|
|
4
|
+
|
|
5
|
+
## 基础用法
|
|
6
|
+
|
|
7
|
+
通常在应用的根组件或布局组件中引入一次即可。
|
|
8
|
+
|
|
9
|
+
```html
|
|
10
|
+
<sohelp-module ref="moduleRef" />
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## 功能特性
|
|
14
|
+
|
|
15
|
+
- **动态渲染**: 根据状态动态渲染多个 `sohelp-modal` 或 `sohelp-drawer`。
|
|
16
|
+
- **集成表单**: 内部默认集成 `sohelp-vform-eleplus`,用于加载动态表单。
|
|
17
|
+
- **状态管理**: 使用 `useModalManager` Hook 管理弹窗的打开和关闭状态。
|
|
18
|
+
|
|
19
|
+
## 公开方法 (Expose)
|
|
20
|
+
|
|
21
|
+
- `openModal(id, params)`: 打开指定 ID 的模态框。
|
|
22
|
+
- `closeModal(id)`: 关闭指定 ID 的模态框。
|
|
23
|
+
- `openDrawer(id, params)`: 打开指定 ID 的抽屉。
|
|
24
|
+
- `closeDrawer(id)`: 关闭指定 ID 的抽屉。
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# SohelpNumberInput 数字输入框
|
|
2
|
+
|
|
3
|
+
基于 `el-input-number` 的封装,增加了自动聚焦功能。
|
|
4
|
+
|
|
5
|
+
## 基础用法
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<sohelp-number-input v-model="num" :auto-focus="true" />
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 属性 (Props)
|
|
12
|
+
|
|
13
|
+
| 属性名 | 类型 | 默认值 | 说明 |
|
|
14
|
+
| autoFocus | Boolean | false | 是否自动获取焦点 |
|
|
15
|
+
|
|
16
|
+
## 其他
|
|
17
|
+
|
|
18
|
+
继承 `el-input-number` 的所有属性和事件,默认 `controls-position="right"`。
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# SohelpNumberRange 数字范围输入
|
|
2
|
+
|
|
3
|
+
用于输入一个数值范围(最小值 - 最大值),会自动处理最小值不能大于最大值的逻辑。
|
|
4
|
+
|
|
5
|
+
## 基础用法
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<sohelp-number-range v-model="range" :min="0" :max="100" />
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 属性 (Props)
|
|
12
|
+
|
|
13
|
+
| 属性名 | 类型 | 默认值 | 说明 |
|
|
14
|
+
| modelValue | Array | [] | 范围数组 [min, max] |
|
|
15
|
+
| min | Number | -Infinity | 允许的最小值 |
|
|
16
|
+
| max | Number | Infinity | 允许的最大值 |
|
|
17
|
+
| separator | String | '-' | 分隔符 |
|
|
18
|
+
| clearable | Boolean | true | 是否可清空 |
|
|
19
|
+
|
|
20
|
+
## 事件 (Events)
|
|
21
|
+
|
|
22
|
+
| 事件名 | 说明 | 回调参数 |
|
|
23
|
+
| update:modelValue | 值变化时触发 | (value: Array) |
|
|
24
|
+
| change | 值变化时触发 | (value: Array) |
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# SohelpOrgSelect 组织机构选择器(下拉框)
|
|
2
|
+
|
|
3
|
+
基于 `sohelp-dyn-select` 封装,预设了组织机构列表的接口地址。
|
|
4
|
+
|
|
5
|
+
## 基础用法
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<sohelp-org-select v-model="orgId" />
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 属性 (Props)
|
|
12
|
+
|
|
13
|
+
| 属性名 | 类型 | 默认值 | 说明 |
|
|
14
|
+
| url | String | '/engine/web/org/list' | 数据接口地址 |
|
|
15
|
+
| labelField | String | 'org_name' | 显示文本字段 |
|
|
16
|
+
| valueField | String | 'id' | 值字段 |
|
|
17
|
+
|
|
18
|
+
## 其他
|
|
19
|
+
|
|
20
|
+
支持 `sohelp-dyn-select` 的所有属性。
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# SohelpOrgTree 组织机构树
|
|
2
|
+
|
|
3
|
+
基于 `sohelp-dyn-tree` 封装,预设了组织机构列表的接口地址,用于展示组织机构树形结构。
|
|
4
|
+
|
|
5
|
+
## 基础用法
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<sohelp-org-tree @node-click="handleNodeClick" />
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 属性 (Props)
|
|
12
|
+
|
|
13
|
+
| 属性名 | 类型 | 默认值 | 说明 |
|
|
14
|
+
| url | String | '/engine/web/org/list' | 数据接口地址 |
|
|
15
|
+
|
|
16
|
+
## 其他
|
|
17
|
+
|
|
18
|
+
支持 `sohelp-dyn-tree` 的所有属性和事件。
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# SohelpOrgTreeSelect 组织机构树选择器
|
|
2
|
+
|
|
3
|
+
用于选择组织机构的树形下拉组件。自动从接口加载平铺数据并转换为树形结构展示。
|
|
4
|
+
|
|
5
|
+
## 基础用法
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<sohelp-org-tree-select v-model="orgId" />
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 属性 (Props)
|
|
12
|
+
|
|
13
|
+
| 属性名 | 类型 | 默认值 | 说明 |
|
|
14
|
+
| modelValue | String/Number/Array | - | 绑定的值 |
|
|
15
|
+
| data | Object | {} | 绑定的完整数据对象 |
|
|
16
|
+
| url | String | '/engine/web/org/list' | 数据接口地址 |
|
|
17
|
+
| datasource | Array/Function/Promise | - | 数据源,优先级高于 url |
|
|
18
|
+
| readonly | Boolean | false | 是否只读 |
|
|
19
|
+
|
|
20
|
+
## 内部逻辑
|
|
21
|
+
|
|
22
|
+
组件挂载时会自动请求数据,并根据 `id` 和 `parent_id` 字段将扁平数据转换为树形结构 (`treeProps.data`) 传递给内部的 `sohelp-tree-select`。
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# SohelpOrgUserTree 组织人员树
|
|
2
|
+
|
|
3
|
+
用于展示组织机构和人员混合树形结构的组件,基于 `sohelp-dyn-tree` 封装。
|
|
4
|
+
|
|
5
|
+
## 基础用法
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<sohelp-org-user-tree @node-click="handleNodeClick" />
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 属性 (Props)
|
|
12
|
+
|
|
13
|
+
| 属性名 | 类型 | 默认值 | 说明 |
|
|
14
|
+
| url | String | '/engine/web/org/list' | 数据接口地址 |
|
|
15
|
+
|
|
16
|
+
## 其他
|
|
17
|
+
|
|
18
|
+
支持 `sohelp-dyn-tree` 的所有属性和事件。
|