easybill-ui 1.4.0 → 1.4.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.
- package/dist/_virtual/_plugin-vue_export-helper.js +9 -0
- package/dist/assets/easybill-ui.css +1 -0
- package/dist/components/ConstantStatus/index.d.ts +24 -0
- package/dist/components/ConstantStatus/index.js +7 -0
- package/dist/components/ConstantStatus/src/ConstantStatus.vue.d.ts +25 -0
- package/dist/components/ConstantStatus/src/ConstantStatus.vue.js +76 -0
- package/dist/components/ConstantStatus/src/ConstantStatus.vue2.js +4 -0
- package/dist/components/ConstantStatus/src/index.d.ts +3 -0
- package/dist/components/ConstantStatus/src/index.js +5 -0
- package/dist/components/ConstantStatus/src/types.d.ts +18 -0
- package/dist/components/CurdForm/index.d.ts +9 -0
- package/dist/components/CurdForm/index.js +9 -0
- package/dist/components/CurdForm/src/CurdForm.vue.js +7 -0
- package/dist/components/CurdForm/src/CurdForm.vue2.js +326 -0
- package/dist/components/CurdForm/src/CurdFormItem.vue.d.ts +37 -0
- package/dist/components/CurdForm/src/CurdFormItem.vue.js +55 -0
- package/dist/components/CurdForm/src/CurdFormItem.vue2.js +4 -0
- package/dist/components/CurdForm/src/FormItem.vue.d.ts +44 -0
- package/dist/components/CurdForm/src/FormItem.vue.js +128 -0
- package/dist/components/CurdForm/src/FormItem.vue2.js +4 -0
- package/dist/components/CurdForm/src/FormTooltip.vue.d.ts +33 -0
- package/dist/components/CurdForm/src/FormTooltip.vue.js +63 -0
- package/dist/components/CurdForm/src/FormTooltip.vue2.js +4 -0
- package/dist/components/CurdForm/src/components/index.d.ts +10 -0
- package/dist/components/CurdForm/src/components/index.js +38 -0
- package/dist/components/CurdForm/src/components/schema-form-autocomplete.vue.d.ts +56 -0
- package/dist/components/CurdForm/src/components/schema-form-autocomplete.vue.js +39 -0
- package/dist/components/CurdForm/src/components/schema-form-autocomplete.vue2.js +4 -0
- package/dist/components/CurdForm/src/components/schema-form-cascader.vue.d.ts +56 -0
- package/dist/components/CurdForm/src/components/schema-form-cascader.vue.js +32 -0
- package/dist/components/CurdForm/src/components/schema-form-cascader.vue2.js +4 -0
- package/dist/components/CurdForm/src/components/schema-form-checkbox.vue.d.ts +59 -0
- package/dist/components/CurdForm/src/components/schema-form-checkbox.vue.js +86 -0
- package/dist/components/CurdForm/src/components/schema-form-checkbox.vue2.js +33 -0
- package/dist/components/CurdForm/src/components/schema-form-choose.vue.js +217 -0
- package/dist/components/CurdForm/src/components/schema-form-choose.vue2.js +4 -0
- package/dist/components/CurdForm/src/components/schema-form-color-picker.vue.d.ts +54 -0
- package/dist/components/CurdForm/src/components/schema-form-color-picker.vue.js +15 -0
- package/dist/components/CurdForm/src/components/schema-form-color-picker.vue2.js +19 -0
- package/dist/components/CurdForm/src/components/schema-form-date-picker.vue.d.ts +56 -0
- package/dist/components/CurdForm/src/components/schema-form-date-picker.vue.js +32 -0
- package/dist/components/CurdForm/src/components/schema-form-date-picker.vue2.js +27 -0
- package/dist/components/CurdForm/src/components/schema-form-input-number.vue.d.ts +54 -0
- package/dist/components/CurdForm/src/components/schema-form-input-number.vue.js +39 -0
- package/dist/components/CurdForm/src/components/schema-form-input-number.vue2.js +4 -0
- package/dist/components/CurdForm/src/components/schema-form-input.vue.d.ts +54 -0
- package/dist/components/CurdForm/src/components/schema-form-input.vue.js +44 -0
- package/dist/components/CurdForm/src/components/schema-form-input.vue2.js +4 -0
- package/dist/components/CurdForm/src/components/schema-form-radio.vue.d.ts +54 -0
- package/dist/components/CurdForm/src/components/schema-form-radio.vue.js +114 -0
- package/dist/components/CurdForm/src/components/schema-form-radio.vue2.js +4 -0
- package/dist/components/CurdForm/src/components/schema-form-select-v2.vue.d.ts +54 -0
- package/dist/components/CurdForm/src/components/schema-form-select-v2.vue.js +69 -0
- package/dist/components/CurdForm/src/components/schema-form-select-v2.vue2.js +4 -0
- package/dist/components/CurdForm/src/components/schema-form-select.vue.js +65 -0
- package/dist/components/CurdForm/src/components/schema-form-select.vue2.js +66 -0
- package/dist/components/CurdForm/src/components/schema-form-switch.vue.d.ts +54 -0
- package/dist/components/CurdForm/src/components/schema-form-switch.vue.js +14 -0
- package/dist/components/CurdForm/src/components/schema-form-switch.vue2.js +25 -0
- package/dist/components/CurdForm/src/components/schema-form-time-picker.vue.d.ts +57 -0
- package/dist/components/CurdForm/src/components/schema-form-time-picker.vue.js +29 -0
- package/dist/components/CurdForm/src/components/schema-form-time-picker.vue2.js +30 -0
- package/dist/components/CurdForm/src/components/schema-form-tree-select.vue.d.ts +58 -0
- package/dist/components/CurdForm/src/components/schema-form-tree-select.vue.js +55 -0
- package/dist/components/CurdForm/src/components/schema-form-tree-select.vue2.js +31 -0
- package/dist/components/CurdForm/src/components/schema-form-value.vue.d.ts +54 -0
- package/dist/components/CurdForm/src/components/schema-form-value.vue.js +11 -0
- package/dist/components/CurdForm/src/components/schema-form-value.vue2.js +21 -0
- package/dist/components/CurdForm/src/directive/index.d.ts +12 -0
- package/dist/components/CurdForm/src/directive/index.js +32 -0
- package/dist/components/CurdForm/src/hooks/index.d.ts +4 -0
- package/dist/components/CurdForm/src/hooks/index.js +7 -0
- package/dist/components/CurdForm/src/types.d.ts +136 -0
- package/dist/components/CurdForm/src/types.js +27 -0
- package/dist/components/CurdForm/src/utils/ajax.d.ts +25 -0
- package/dist/components/CurdForm/src/utils/common.d.ts +1 -0
- package/dist/components/CurdForm/src/utils/common.js +13 -0
- package/dist/components/CurdGroupForm/index.d.ts +2 -0
- package/dist/components/CurdGroupForm/src/CurdGroupForm.vue.d.ts +36 -0
- package/dist/components/CurdGroupForm/src/CurdGroupForm.vue.js +113 -0
- package/dist/components/CurdGroupForm/src/CurdGroupForm.vue2.js +4 -0
- package/dist/components/CurdGroupForm/src/components/CurdFormGroup.vue.d.ts +52 -0
- package/dist/components/CurdGroupForm/src/components/CurdFormGroup.vue.js +64 -0
- package/dist/components/CurdGroupForm/src/components/CurdFormGroup.vue2.js +4 -0
- package/dist/components/CurdGroupForm/src/hooks/useFormHook.d.ts +12 -0
- package/dist/components/CurdGroupForm/src/hooks/useFormHook.js +32 -0
- package/dist/components/CurdGroupForm/types.d.ts +33 -0
- package/dist/components/CurdTable/index.d.ts +13 -0
- package/dist/components/CurdTable/index.js +7 -0
- package/dist/components/CurdTable/src/CurdTable.vue.js +562 -0
- package/dist/components/CurdTable/src/CurdTable.vue2.js +4 -0
- package/dist/components/CurdTable/src/STableColumnControl.vue.d.ts +21 -0
- package/dist/components/CurdTable/src/STableColumnControl.vue.js +132 -0
- package/dist/components/CurdTable/src/STableColumnControl.vue2.js +4 -0
- package/dist/components/CurdTable/src/STableDetail.vue.d.ts +9 -0
- package/dist/components/CurdTable/src/STableDetail.vue.js +53 -0
- package/dist/components/CurdTable/src/STableDetail.vue2.js +4 -0
- package/dist/components/CurdTable/src/STableFilter.vue.d.ts +28 -0
- package/dist/components/CurdTable/src/STableFilter.vue.js +40 -0
- package/dist/components/CurdTable/src/STableFilter.vue2.js +4 -0
- package/dist/components/CurdTable/src/STableItem.vue.d.ts +127 -0
- package/dist/components/CurdTable/src/STableItem.vue.js +147 -0
- package/dist/components/CurdTable/src/STableItem.vue2.js +4 -0
- package/dist/components/CurdTable/src/STableItemFilter.vue.d.ts +34 -0
- package/dist/components/CurdTable/src/STableItemFilter.vue.js +71 -0
- package/dist/components/CurdTable/src/STableItemFilter.vue2.js +4 -0
- package/dist/components/CurdTable/src/STableItemFormatter.vue.d.ts +38 -0
- package/dist/components/CurdTable/src/STableItemFormatter.vue.js +34 -0
- package/dist/components/CurdTable/src/STableItemFormatter.vue2.js +4 -0
- package/dist/components/CurdTable/src/STableItemHeader.vue.d.ts +16 -0
- package/dist/components/CurdTable/src/STableItemHeader.vue.js +24 -0
- package/dist/components/CurdTable/src/STableItemHeader.vue2.js +4 -0
- package/dist/components/CurdTable/src/STableItemHeaderTooltip.vue.d.ts +14 -0
- package/dist/components/CurdTable/src/STableItemHeaderTooltip.vue.js +48 -0
- package/dist/components/CurdTable/src/STableItemHeaderTooltip.vue2.js +4 -0
- package/dist/components/CurdTable/src/STableMenu.vue.d.ts +20 -0
- package/dist/components/CurdTable/src/STableMenu.vue.js +120 -0
- package/dist/components/CurdTable/src/STableMenu.vue2.js +4 -0
- package/dist/components/CurdTable/src/hooks/useColumnHook.d.ts +9 -0
- package/dist/components/CurdTable/src/hooks/useColumnHook.js +45 -0
- package/dist/components/CurdTable/src/types.d.ts +178 -0
- package/dist/components/CurdTable/utils/common.d.ts +5 -0
- package/dist/components/CurdTable/utils/common.js +18 -0
- package/dist/components/CurdTable/utils/tabelToExcel.d.ts +4 -0
- package/dist/components/CurdTable/utils/tabelToExcel.js +23 -0
- package/dist/components/DetailInfo/index.d.ts +147 -0
- package/dist/components/DetailInfo/index.js +7 -0
- package/dist/components/DetailInfo/src/DetailInfo.vue.d.ts +77 -0
- package/dist/components/DetailInfo/src/DetailInfo.vue.js +144 -0
- package/dist/components/DetailInfo/src/DetailInfo.vue2.js +4 -0
- package/dist/components/DetailInfo/src/DetailInfoContent.vue.d.ts +16 -0
- package/dist/components/DetailInfo/src/DetailInfoContent.vue.js +43 -0
- package/dist/components/DetailInfo/src/DetailInfoContent.vue2.js +4 -0
- package/dist/components/DetailInfo/src/DetailInfoTooltip.vue.d.ts +15 -0
- package/dist/components/DetailInfo/src/DetailInfoTooltip.vue.js +48 -0
- package/dist/components/DetailInfo/src/DetailInfoTooltip.vue2.js +4 -0
- package/dist/components/DetailInfo/src/types.d.ts +22 -0
- package/dist/components/FormDialog/index.d.ts +7 -0
- package/dist/components/FormDialog/index.js +6 -0
- package/dist/components/FormDialog/src/FormDialog.vue.d.ts +247 -0
- package/dist/components/FormDialog/src/FormDialog.vue.js +117 -0
- package/dist/components/FormDialog/src/FormDialog.vue2.js +191 -0
- package/dist/components/FormDialog/src/hooks/index.d.ts +2 -0
- package/dist/components/FormDialog/src/hooks/useStepList.d.ts +14 -0
- package/dist/components/FormDialog/src/hooks/useStepList.js +27 -0
- package/dist/components/FormDialog/src/hooks/useStepNavigation.d.ts +75 -0
- package/dist/components/FormDialog/src/hooks/useStepNavigation.js +34 -0
- package/dist/components/FormDialog/src/index.d.ts +13 -0
- package/dist/components/FormDialog/src/index.js +23 -0
- package/dist/components/FormDialog/src/types.d.ts +63 -0
- package/dist/components/TableFilter/index.d.ts +6 -0
- package/dist/components/TableFilter/index.js +7 -0
- package/dist/components/TableFilter/src/FilterExternal/FilterExternal.vue.js +91 -0
- package/dist/components/TableFilter/src/FilterExternal/FilterExternal.vue2.js +4 -0
- package/dist/components/TableFilter/src/FilterSearchBox.vue.d.ts +33 -0
- package/dist/components/TableFilter/src/FilterSearchBox.vue.js +71 -0
- package/dist/components/TableFilter/src/FilterSearchBox.vue2.js +4 -0
- package/dist/components/TableFilter/src/TableFilter.vue.js +180 -0
- package/dist/components/TableFilter/src/TableFilter.vue2.js +4 -0
- package/dist/components/TableFilter/src/components/FilterItem.vue.d.ts +37 -0
- package/dist/components/TableFilter/src/components/FilterItem.vue.js +63 -0
- package/dist/components/TableFilter/src/components/FilterItem.vue2.js +4 -0
- package/dist/components/TableFilter/src/components/FilterTags.vue.d.ts +114 -0
- package/dist/components/TableFilter/src/components/FilterTags.vue.js +142 -0
- package/dist/components/TableFilter/src/components/FilterTags.vue2.js +4 -0
- package/dist/components/TableFilter/src/components/FilterToggle.vue.d.ts +29 -0
- package/dist/components/TableFilter/src/components/FilterToggle.vue.js +70 -0
- package/dist/components/TableFilter/src/components/FilterToggle.vue2.js +4 -0
- package/dist/components/TableFilter/src/components/FilterType.vue.d.ts +30 -0
- package/dist/components/TableFilter/src/components/FilterType.vue.js +62 -0
- package/dist/components/TableFilter/src/components/FilterType.vue2.js +4 -0
- package/dist/components/TableFilter/src/components/containers/TagsSelect.vue.d.ts +42 -0
- package/dist/components/TableFilter/src/components/containers/TagsSelect.vue.js +99 -0
- package/dist/components/TableFilter/src/components/containers/TagsSelect.vue2.js +4 -0
- package/dist/components/TableFilter/types.d.ts +34 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.js +35 -0
- package/dist/locale/index.d.ts +9 -0
- package/dist/locale/index.js +6 -0
- package/dist/locale/lang/en.d.ts +49 -0
- package/{locale/lang/en.ts → dist/locale/lang/en.js} +10 -7
- package/dist/locale/lang/zh-cn.d.ts +49 -0
- package/{locale/lang/zh-cn.ts → dist/locale/lang/zh-cn.js} +10 -7
- package/dist/utils/common/index.d.ts +8 -0
- package/dist/utils/common/index.js +13 -0
- package/dist/utils/hooks/useGlobalConfig.d.ts +13 -0
- package/dist/utils/hooks/useGlobalConfig.js +22 -0
- package/dist/utils/hooks/useLocal.d.ts +15 -0
- package/dist/utils/hooks/useLocal.js +33 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.js +6 -0
- package/dist/utils/vue/index.d.ts +2 -0
- package/dist/utils/vue/index.js +4 -0
- package/dist/utils/vue/install.d.ts +2 -0
- package/dist/utils/vue/install.js +14 -0
- package/dist/utils/vue/make-installer.d.ts +5 -0
- package/dist/utils/vue/make-installer.js +9 -0
- package/dist/utils/vue/typescript.d.ts +5 -0
- package/package.json +61 -32
- package/components/ConstantStatus/index.ts +0 -5
- package/components/ConstantStatus/src/ConstantStatus.vue +0 -69
- package/components/ConstantStatus/src/index.ts +0 -3
- package/components/ConstantStatus/src/types.ts +0 -18
- package/components/CurdForm/index.ts +0 -9
- package/components/CurdForm/src/CurdForm.vue +0 -500
- package/components/CurdForm/src/CurdFormItem.vue +0 -70
- package/components/CurdForm/src/FormItem.vue +0 -105
- package/components/CurdForm/src/FormTooltip.vue +0 -54
- package/components/CurdForm/src/components/index.ts +0 -52
- package/components/CurdForm/src/components/schema-form-autocomplete.vue +0 -25
- package/components/CurdForm/src/components/schema-form-cascader.vue +0 -24
- package/components/CurdForm/src/components/schema-form-checkbox.vue +0 -53
- package/components/CurdForm/src/components/schema-form-choose.vue +0 -225
- package/components/CurdForm/src/components/schema-form-color-picker.vue +0 -23
- package/components/CurdForm/src/components/schema-form-date-picker.vue +0 -34
- package/components/CurdForm/src/components/schema-form-input-number.vue +0 -12
- package/components/CurdForm/src/components/schema-form-input.vue +0 -21
- package/components/CurdForm/src/components/schema-form-radio.vue +0 -59
- package/components/CurdForm/src/components/schema-form-select-v2.vue +0 -60
- package/components/CurdForm/src/components/schema-form-select.vue +0 -93
- package/components/CurdForm/src/components/schema-form-switch.vue +0 -29
- package/components/CurdForm/src/components/schema-form-time-picker.vue +0 -37
- package/components/CurdForm/src/components/schema-form-tree-select.vue +0 -45
- package/components/CurdForm/src/components/schema-form-value.vue +0 -25
- package/components/CurdForm/src/directive/index.ts +0 -60
- package/components/CurdForm/src/hooks/index.ts +0 -6
- package/components/CurdForm/src/types.ts +0 -146
- package/components/CurdForm/src/utils/ajax.ts +0 -125
- package/components/CurdForm/src/utils/common.ts +0 -17
- package/components/CurdGroupForm/index.ts +0 -2
- package/components/CurdGroupForm/src/CurdGroupForm.vue +0 -93
- package/components/CurdGroupForm/src/components/CurdFormGroup.vue +0 -39
- package/components/CurdGroupForm/src/hooks/useFormHook.ts +0 -55
- package/components/CurdGroupForm/types.ts +0 -22
- package/components/CurdTable/index.ts +0 -5
- package/components/CurdTable/src/CurdTable.vue +0 -470
- package/components/CurdTable/src/STableColumnControl.vue +0 -88
- package/components/CurdTable/src/STableDetail.vue +0 -52
- package/components/CurdTable/src/STableFilter.vue +0 -50
- package/components/CurdTable/src/STableItem.vue +0 -119
- package/components/CurdTable/src/STableItemFilter.vue +0 -53
- package/components/CurdTable/src/STableItemFormatter.vue +0 -35
- package/components/CurdTable/src/STableItemHeader.vue +0 -33
- package/components/CurdTable/src/STableItemHeaderTooltip.vue +0 -32
- package/components/CurdTable/src/STableMenu.vue +0 -77
- package/components/CurdTable/src/hooks/useColumnHook.ts +0 -77
- package/components/CurdTable/src/types.ts +0 -163
- package/components/CurdTable/utils/common.ts +0 -33
- package/components/CurdTable/utils/tabelToExcel.ts +0 -68
- package/components/DetailInfo/index.ts +0 -5
- package/components/DetailInfo/src/DetailInfo.vue +0 -108
- package/components/DetailInfo/src/DetailInfoContent.vue +0 -27
- package/components/DetailInfo/src/DetailInfoTooltip.vue +0 -33
- package/components/DetailInfo/src/types.ts +0 -23
- package/components/FormDialog/index.ts +0 -3
- package/components/FormDialog/src/FormDialog.vue +0 -276
- package/components/FormDialog/src/hooks/index.ts +0 -2
- package/components/FormDialog/src/hooks/useStepList.ts +0 -49
- package/components/FormDialog/src/hooks/useStepNavigation.ts +0 -74
- package/components/FormDialog/src/index.ts +0 -39
- package/components/FormDialog/src/types.ts +0 -51
- package/components/TableFilter/index.ts +0 -6
- package/components/TableFilter/src/FilterExternal/FilterExternal.vue +0 -121
- package/components/TableFilter/src/FilterSearchBox.vue +0 -65
- package/components/TableFilter/src/TableFilter.vue +0 -236
- package/components/TableFilter/src/components/FilterItem.vue +0 -76
- package/components/TableFilter/src/components/FilterTags.vue +0 -132
- package/components/TableFilter/src/components/FilterToggle.vue +0 -40
- package/components/TableFilter/src/components/FilterType.vue +0 -78
- package/components/TableFilter/src/components/containers/TagsSelect.vue +0 -89
- package/components/TableFilter/types.ts +0 -36
- package/index.ts +0 -25
- package/locale/index.ts +0 -11
- package/utils/common/index.ts +0 -24
- package/utils/hooks/useGlobalConfig.ts +0 -39
- package/utils/hooks/useLocal.ts +0 -61
- package/utils/index.ts +0 -2
- package/utils/vue/index.ts +0 -3
- package/utils/vue/install.ts +0 -18
- package/utils/vue/make-installer.ts +0 -16
- package/utils/vue/typescript.ts +0 -7
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<el-drawer v-model="visible" :title="t('el.table.detail')" size="40%">
|
|
3
|
-
<DetailInfo :data="list" :title="t('el.table.detail')" label-width="110px" show-type="table" />
|
|
4
|
-
</el-drawer>
|
|
5
|
-
</template>
|
|
6
|
-
<script lang="ts" setup>
|
|
7
|
-
import { ref, type Ref } from "vue"
|
|
8
|
-
import { useLocale } from "easybill-ui"
|
|
9
|
-
import DetailInfo, { type DetailDataItem } from "../../DetailInfo"
|
|
10
|
-
import type { ColumnItem } from "./types"
|
|
11
|
-
interface OpenOption {
|
|
12
|
-
columns: Array<ColumnItem>
|
|
13
|
-
data: Record<string, unknown>
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
const { t } = useLocale()
|
|
17
|
-
const visible = ref(false)
|
|
18
|
-
const list: Ref<Array<DetailDataItem>> = ref([])
|
|
19
|
-
const getValue = (data: DetailDataItem, column: ColumnItem, index: number) => {
|
|
20
|
-
if (column.formatter) {
|
|
21
|
-
return column.formatter(data, column, data[column.prop], index)
|
|
22
|
-
}
|
|
23
|
-
return typeof data[column.prop] == "undefined" || data[column.prop] === "" ? "--" : data[column.prop]
|
|
24
|
-
}
|
|
25
|
-
const open = (option: OpenOption) => {
|
|
26
|
-
list.value = []
|
|
27
|
-
option.columns.forEach((item, ci) => {
|
|
28
|
-
if (item.children && item.children.length) {
|
|
29
|
-
for (let i = 0; i < item.children.length; i++) {
|
|
30
|
-
const a = item.children[i]
|
|
31
|
-
if (a.hidden) continue
|
|
32
|
-
list.value.push({
|
|
33
|
-
label: a.label,
|
|
34
|
-
value: getValue(option.data, a, i),
|
|
35
|
-
span: (a.detail && a.detail.span) || 24,
|
|
36
|
-
options: a.options,
|
|
37
|
-
})
|
|
38
|
-
}
|
|
39
|
-
} else {
|
|
40
|
-
if (item.hidden) return
|
|
41
|
-
list.value.push({
|
|
42
|
-
label: item.label,
|
|
43
|
-
value: getValue(option.data, item, ci),
|
|
44
|
-
span: (item.detail && item.detail.span) || 24,
|
|
45
|
-
options: item.options,
|
|
46
|
-
})
|
|
47
|
-
}
|
|
48
|
-
})
|
|
49
|
-
visible.value = true
|
|
50
|
-
}
|
|
51
|
-
defineExpose({ open })
|
|
52
|
-
</script>
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="s-table-filter">
|
|
3
|
-
<TableFilter ref="tableFilterRef" :select-params="selectParams" :list-query="props.listQuery" v-bind="option?.filterAttrs" @search="onSearch"></TableFilter>
|
|
4
|
-
</div>
|
|
5
|
-
</template>
|
|
6
|
-
<script lang="ts" setup>
|
|
7
|
-
import { inject, type PropType, type Ref, ref } from "vue"
|
|
8
|
-
import TableFilter, { type FilterItem, type ListQuery, type ParamsItem } from "../../TableFilter"
|
|
9
|
-
import type { PropOption } from "./types"
|
|
10
|
-
|
|
11
|
-
const emits = defineEmits(["search"])
|
|
12
|
-
const option = inject<PropOption>("option")
|
|
13
|
-
const selectParams = inject<Ref<Array<ParamsItem>>>("selectParams") || ref([])
|
|
14
|
-
const props = defineProps({
|
|
15
|
-
listQuery: {
|
|
16
|
-
type: Object as PropType<ListQuery>,
|
|
17
|
-
default() {
|
|
18
|
-
return {}
|
|
19
|
-
},
|
|
20
|
-
},
|
|
21
|
-
})
|
|
22
|
-
const onSearch = () => {
|
|
23
|
-
emits("search", props.listQuery)
|
|
24
|
-
}
|
|
25
|
-
const tableFilterRef = ref()
|
|
26
|
-
const setItem = (prop: string, filterItem?: FilterItem) => {
|
|
27
|
-
tableFilterRef.value.setItem(prop, filterItem)
|
|
28
|
-
}
|
|
29
|
-
const getSelectList = () => {
|
|
30
|
-
return tableFilterRef.value.selectList
|
|
31
|
-
}
|
|
32
|
-
const loadOptions = (prop: string, config?: unknown) => {
|
|
33
|
-
return tableFilterRef.value.loadOptions(prop, config)
|
|
34
|
-
}
|
|
35
|
-
const clear = (prop: string) => {
|
|
36
|
-
return tableFilterRef.value.clear(prop)
|
|
37
|
-
}
|
|
38
|
-
// 刷新selectParams
|
|
39
|
-
const refreshSelectParams = () => {
|
|
40
|
-
tableFilterRef.value.refreshSelectParams()
|
|
41
|
-
}
|
|
42
|
-
// 获取当前tableFilter的prop
|
|
43
|
-
const getCurrentTableFilterProp = () => {
|
|
44
|
-
const currentIndex = tableFilterRef.value.getCurrentIndex()
|
|
45
|
-
if (currentIndex !== undefined) {
|
|
46
|
-
return selectParams.value[tableFilterRef.value.getCurrentIndex()].prop
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
defineExpose({ filterRef: tableFilterRef, setItem, getSelectList, loadOptions, clear, refreshSelectParams, getCurrentTableFilterProp })
|
|
50
|
-
</script>
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<el-table-column v-if="!getColumnHidden" :fixed="props.schema.fixed" v-bind="getColumnAttrs">
|
|
3
|
-
<template #header="scope">
|
|
4
|
-
<div class="header-td" :class="[props.schema.align]">
|
|
5
|
-
<slot :name="props.schema.prop + 'Header'" v-bind="scope"></slot>
|
|
6
|
-
<component v-if="props.schema.headerComponent" :is="props.schema.headerComponent" v-bind="scope" />
|
|
7
|
-
<STableItemHeader v-else-if="!props.isSlotHeader" :schema-item="props.schema" />
|
|
8
|
-
<STableItemFilter v-if="props.schema.filter && props.schema.filter.inner" ref="tableItemFilterRef" :filter="filterSchema" @change="onChange" />
|
|
9
|
-
</div>
|
|
10
|
-
</template>
|
|
11
|
-
<template #default="scope">
|
|
12
|
-
<slot :name="props.schema.prop" v-bind="scope"></slot>
|
|
13
|
-
<template v-if="props.schema.children?.length">
|
|
14
|
-
<template v-for="item in props.schema.children" :key="item.label">
|
|
15
|
-
<STableItem :ref="(el) => (tableItemRefs[item.prop] = el)" :schema="item" :is-slot="!!$slots[item.prop]" :is-slot-header="!!$slots[item.prop + 'Header']" :option="option" @search="onItemChange">
|
|
16
|
-
<template v-for="(_slot, key) in $slots" :key="key" #[key]="scopeChild">
|
|
17
|
-
<slot :name="key" v-bind="normalizeSlotScope(scopeChild)"></slot>
|
|
18
|
-
</template>
|
|
19
|
-
</STableItem>
|
|
20
|
-
</template>
|
|
21
|
-
</template>
|
|
22
|
-
<template v-if="!props.isSlot">
|
|
23
|
-
<ConstantStatus v-if="props.schema.options" :value="scope.row[props.schema.prop]" :options="props.schema.options" />
|
|
24
|
-
<span v-else-if="props.schema.copy">
|
|
25
|
-
<el-icon class="copy" :title="t('el.table.clickCopy')" @click.stop="copyValue(getValue(scope.row))"><CopyDocument /></el-icon>
|
|
26
|
-
<span v-if="props.schema.vHtml" v-html="getValue(scope.row)"></span>
|
|
27
|
-
<template v-else-if="props.schema.formatter"> <STableItemFormatter :row="scope.row" :index="scope.index" :schema="props.schema" /> </template>
|
|
28
|
-
<template v-else>{{ getValue(scope.row) }}</template>
|
|
29
|
-
</span>
|
|
30
|
-
<span v-else>
|
|
31
|
-
<span v-if="props.schema.vHtml" v-html="getValue(scope.row)"></span>
|
|
32
|
-
<template v-else-if="props.schema.formatter">
|
|
33
|
-
<STableItemFormatter :row="scope.row" :index="scope.index" :schema="props.schema" />
|
|
34
|
-
</template>
|
|
35
|
-
<template v-else>{{ getValue(scope.row) }}</template>
|
|
36
|
-
</span>
|
|
37
|
-
</template>
|
|
38
|
-
</template>
|
|
39
|
-
</el-table-column>
|
|
40
|
-
</template>
|
|
41
|
-
<script lang="ts" setup>
|
|
42
|
-
import { CopyDocument } from "@element-plus/icons-vue"
|
|
43
|
-
import { useLocale } from "easybill-ui"
|
|
44
|
-
import { ElMessage } from "element-plus"
|
|
45
|
-
import { computed, inject, type PropType, ref, type Ref } from "vue"
|
|
46
|
-
import ConstantStatus from "../../ConstantStatus"
|
|
47
|
-
import type { Fields } from "../../CurdForm"
|
|
48
|
-
import type { ParamsItem } from "../../TableFilter"
|
|
49
|
-
import { copy } from "../utils/common"
|
|
50
|
-
import STableItemFilter from "./STableItemFilter.vue"
|
|
51
|
-
import STableItemFormatter from "./STableItemFormatter.vue"
|
|
52
|
-
import STableItemHeader from "./STableItemHeader.vue"
|
|
53
|
-
import type { ColumnItem } from "./types"
|
|
54
|
-
const { t } = useLocale()
|
|
55
|
-
|
|
56
|
-
const props = defineProps({
|
|
57
|
-
schema: {
|
|
58
|
-
type: Object as PropType<ColumnItem<Record<string, unknown>>>,
|
|
59
|
-
default() {
|
|
60
|
-
return { options: [] }
|
|
61
|
-
},
|
|
62
|
-
},
|
|
63
|
-
isSlot: {
|
|
64
|
-
type: Boolean,
|
|
65
|
-
default: false,
|
|
66
|
-
},
|
|
67
|
-
isSlotHeader: {
|
|
68
|
-
type: Boolean,
|
|
69
|
-
default: false,
|
|
70
|
-
},
|
|
71
|
-
option: {
|
|
72
|
-
type: Object,
|
|
73
|
-
default: () => ({}),
|
|
74
|
-
},
|
|
75
|
-
})
|
|
76
|
-
defineSlots<Record<string, (scope: Record<string, unknown>) => unknown>>()
|
|
77
|
-
const selectParams = inject<Ref<Array<ParamsItem>>>("selectParams")
|
|
78
|
-
const filterSchema = computed(() => {
|
|
79
|
-
let result = selectParams?.value.filter((a) => a.prop == props.schema.filter?.prop || a.prop == props.schema.prop) //getFilterFromColumn(props.schema)
|
|
80
|
-
if (result && result.length > 1) {
|
|
81
|
-
result = result?.filter((a) => a.label == props.schema.label)
|
|
82
|
-
}
|
|
83
|
-
return (result && result[0]) || {}
|
|
84
|
-
})
|
|
85
|
-
const getColumnAttrs = computed(() => {
|
|
86
|
-
const { children, ...args } = props.schema
|
|
87
|
-
return args || children
|
|
88
|
-
})
|
|
89
|
-
const getValue = (row: Record<string, unknown>) => {
|
|
90
|
-
return typeof row[props.schema.prop] == "undefined" || row[props.schema.prop] === "" ? "--" : row[props.schema.prop]
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
// 复制值
|
|
94
|
-
const copyValue = async (value: unknown) => {
|
|
95
|
-
copy(String(value))
|
|
96
|
-
ElMessage.success(t("el.table.clickCopySuccess"))
|
|
97
|
-
}
|
|
98
|
-
const emits = defineEmits(["search"])
|
|
99
|
-
const search = inject<Fields>("search", {})
|
|
100
|
-
const getColumnHidden = computed(() => {
|
|
101
|
-
if (props.schema.hidden && props.schema.hidden instanceof Function) {
|
|
102
|
-
return props.schema.hidden(props.schema, search)
|
|
103
|
-
}
|
|
104
|
-
return props.schema.hidden
|
|
105
|
-
})
|
|
106
|
-
const onChange = (prop: string, value: string) => {
|
|
107
|
-
emits("search", prop, value, filterSchema.value)
|
|
108
|
-
}
|
|
109
|
-
const tableItemFilterRef = ref<InstanceType<typeof STableItemFilter>>()
|
|
110
|
-
const onSearch = (opt: { listQuery: Record<string, unknown> }) => {
|
|
111
|
-
if (tableItemFilterRef.value) tableItemFilterRef.value.search(opt)
|
|
112
|
-
}
|
|
113
|
-
const tableItemRefs: Ref<Record<string, unknown>> = ref({})
|
|
114
|
-
const normalizeSlotScope = (scope: unknown) => (scope && typeof scope === "object" ? scope : {})
|
|
115
|
-
const onItemChange = (prop: string, value: string) => {
|
|
116
|
-
emits("search", prop, value, filterSchema.value)
|
|
117
|
-
}
|
|
118
|
-
defineExpose({ search: onSearch })
|
|
119
|
-
</script>
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<el-popover :visible="visible" trigger="click" popper-class="filter-type-popper">
|
|
3
|
-
<template #reference>
|
|
4
|
-
<span ref="toggleRef" class="filter-dropdown-toggle" :class="{ active: typeof currentValue !== 'undefined' && currentValue !== '' }" @click.stop="openFilter">
|
|
5
|
-
<el-icon><Filter /></el-icon>
|
|
6
|
-
</span>
|
|
7
|
-
</template>
|
|
8
|
-
<FilterType ref="typeRef" :list-query="listQuery" @change="confirm" @close="visible = false"></FilterType>
|
|
9
|
-
</el-popover>
|
|
10
|
-
</template>
|
|
11
|
-
<script lang="ts" setup>
|
|
12
|
-
import { Filter } from "@element-plus/icons-vue"
|
|
13
|
-
import { ElPopover } from "element-plus"
|
|
14
|
-
import { computed, type PropType, ref } from "vue"
|
|
15
|
-
import type { Fields } from "../../CurdForm"
|
|
16
|
-
import FilterType from "../../TableFilter/src/components/FilterType.vue"
|
|
17
|
-
import type { ColumnItemFilter } from "./types"
|
|
18
|
-
|
|
19
|
-
const props = defineProps({
|
|
20
|
-
filter: {
|
|
21
|
-
type: Object as PropType<ColumnItemFilter>,
|
|
22
|
-
default() {
|
|
23
|
-
return {}
|
|
24
|
-
},
|
|
25
|
-
},
|
|
26
|
-
modelValue: {
|
|
27
|
-
type: [String, Number, Boolean],
|
|
28
|
-
default: "",
|
|
29
|
-
},
|
|
30
|
-
})
|
|
31
|
-
const emit = defineEmits(["change"])
|
|
32
|
-
let currentValue = ref<unknown>("")
|
|
33
|
-
const visible = ref(false)
|
|
34
|
-
const listQuery = computed(() => {
|
|
35
|
-
const o: Record<string, unknown> = {}
|
|
36
|
-
o[props.filter.prop || ""] = props.modelValue || currentValue.value
|
|
37
|
-
return o
|
|
38
|
-
})
|
|
39
|
-
const typeRef = ref()
|
|
40
|
-
const toggleRef = ref()
|
|
41
|
-
const openFilter = () => {
|
|
42
|
-
visible.value = true
|
|
43
|
-
typeRef.value.open(toggleRef.value, props.filter)
|
|
44
|
-
}
|
|
45
|
-
const confirm = (opt: { prop: string; value: unknown }) => {
|
|
46
|
-
currentValue.value = opt.value
|
|
47
|
-
emit("change", opt.prop, opt.value)
|
|
48
|
-
}
|
|
49
|
-
const search = (event: { listQuery: Fields }) => {
|
|
50
|
-
currentValue.value = event.listQuery[props.filter.prop || ""]
|
|
51
|
-
}
|
|
52
|
-
defineExpose({ search })
|
|
53
|
-
</script>
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
<script setup lang="ts">
|
|
2
|
-
import { computed, isReactive, isRef, isVNode, type PropType, ref, watchEffect } from "vue"
|
|
3
|
-
import type { ColumnItem } from "./types"
|
|
4
|
-
const props = defineProps({
|
|
5
|
-
schema: {
|
|
6
|
-
type: Object as PropType<ColumnItem<Record<string, unknown>>>,
|
|
7
|
-
default() {
|
|
8
|
-
return { options: [] }
|
|
9
|
-
},
|
|
10
|
-
},
|
|
11
|
-
row: {
|
|
12
|
-
type: Object,
|
|
13
|
-
default: () => ({}),
|
|
14
|
-
},
|
|
15
|
-
index: {
|
|
16
|
-
type: Number,
|
|
17
|
-
default: () => 0,
|
|
18
|
-
},
|
|
19
|
-
})
|
|
20
|
-
const formatterResult = ref(props.schema.formatter ? props.schema.formatter(props.row, props.row.column, props.row[props.schema.prop], props.index) : props.row[props.schema.prop])
|
|
21
|
-
const comp = computed(() => {
|
|
22
|
-
const type = formatterResult.value
|
|
23
|
-
if (type !== null && type !== "" && typeof type === "object" && (isReactive(type) || isRef(type) || isVNode(type) || type.setup)) return type
|
|
24
|
-
return null
|
|
25
|
-
})
|
|
26
|
-
watchEffect(() => {
|
|
27
|
-
formatterResult.value = props.schema.formatter ? props.schema.formatter(props.row, props.row.column, props.row[props.schema.prop], props.index) : props.row[props.schema.prop]
|
|
28
|
-
})
|
|
29
|
-
</script>
|
|
30
|
-
|
|
31
|
-
<template>
|
|
32
|
-
<component :is="comp" v-if="comp" />
|
|
33
|
-
<template v-else>{{ formatterResult }}</template>
|
|
34
|
-
</template>
|
|
35
|
-
<style scoped lang="scss"></style>
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<span class="tit">{{ title }}</span>
|
|
3
|
-
<STableItemHeaderTooltip :tooltip="tooltip" />
|
|
4
|
-
</template>
|
|
5
|
-
<script lang="ts" setup>
|
|
6
|
-
import { type PropType, computed } from "vue"
|
|
7
|
-
import STableItemHeaderTooltip from "./STableItemHeaderTooltip.vue"
|
|
8
|
-
import type { ColumnItem } from "./types"
|
|
9
|
-
const props = defineProps({
|
|
10
|
-
schemaItem: {
|
|
11
|
-
type: Object as PropType<ColumnItem<Record<string, unknown>>>,
|
|
12
|
-
default: () => ({}),
|
|
13
|
-
},
|
|
14
|
-
})
|
|
15
|
-
const tooltip = computed(() => {
|
|
16
|
-
if (typeof props.schemaItem.header != "string") {
|
|
17
|
-
return props.schemaItem.header?.tooltip
|
|
18
|
-
}
|
|
19
|
-
return ""
|
|
20
|
-
})
|
|
21
|
-
const title = computed(() => {
|
|
22
|
-
if (!props.schemaItem.header) {
|
|
23
|
-
return props.schemaItem.label
|
|
24
|
-
}
|
|
25
|
-
if (typeof props.schemaItem.header == "string") {
|
|
26
|
-
return props.schemaItem.header
|
|
27
|
-
}
|
|
28
|
-
if (typeof props.schemaItem.header === "object") {
|
|
29
|
-
return props.schemaItem.header.title || props.schemaItem.label
|
|
30
|
-
}
|
|
31
|
-
return ""
|
|
32
|
-
})
|
|
33
|
-
</script>
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<el-tooltip v-if="props.tooltip" v-bind="typeof props.tooltip == 'object' ? props.tooltip : {}">
|
|
3
|
-
<el-button class="tooltip" type="info" link>
|
|
4
|
-
<el-icon><Warning /></el-icon>
|
|
5
|
-
</el-button>
|
|
6
|
-
<template #content>
|
|
7
|
-
<div v-html="getTooltipContent()"></div>
|
|
8
|
-
</template>
|
|
9
|
-
</el-tooltip>
|
|
10
|
-
</template>
|
|
11
|
-
<script lang="ts" setup>
|
|
12
|
-
import { Warning } from "@element-plus/icons-vue"
|
|
13
|
-
const props = defineProps({
|
|
14
|
-
tooltip: {
|
|
15
|
-
type: [String, Object],
|
|
16
|
-
default: "",
|
|
17
|
-
},
|
|
18
|
-
})
|
|
19
|
-
const getTooltipContent = () => {
|
|
20
|
-
const tooltip = props.tooltip
|
|
21
|
-
if (!tooltip) {
|
|
22
|
-
return ""
|
|
23
|
-
}
|
|
24
|
-
if (typeof tooltip === "string") {
|
|
25
|
-
return tooltip
|
|
26
|
-
}
|
|
27
|
-
if (typeof tooltip === "object") {
|
|
28
|
-
return tooltip.content
|
|
29
|
-
}
|
|
30
|
-
return ""
|
|
31
|
-
}
|
|
32
|
-
</script>
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="table-menu">
|
|
3
|
-
<el-tooltip v-for="item in controlButtons" :key="item.label" :content="item.label" placement="top">
|
|
4
|
-
<el-dropdown v-if="item.options" trigger="click" class="table-menu-item" @command="handleSizeCommand">
|
|
5
|
-
<el-button type="info" link class="table-menu-item">
|
|
6
|
-
<el-icon><component :is="item.icon"></component></el-icon>
|
|
7
|
-
</el-button>
|
|
8
|
-
<template #dropdown>
|
|
9
|
-
<el-dropdown-menu>
|
|
10
|
-
<el-dropdown-item v-for="option in item.options" :key="option.value" :command="option.value">
|
|
11
|
-
<span :style="{ color: currentSize == option.value ? 'var(--el-color-primary)' : '' }">{{ option.label }}</span>
|
|
12
|
-
</el-dropdown-item>
|
|
13
|
-
</el-dropdown-menu>
|
|
14
|
-
</template>
|
|
15
|
-
</el-dropdown>
|
|
16
|
-
<el-button v-else type="info" link class="table-menu-item" @click="onClick(item)">
|
|
17
|
-
<el-icon><component :is="item.icon"></component></el-icon>
|
|
18
|
-
</el-button>
|
|
19
|
-
</el-tooltip>
|
|
20
|
-
<STableColumnControl v-model:visible="visible" />
|
|
21
|
-
</div>
|
|
22
|
-
</template>
|
|
23
|
-
<script lang="ts" setup>
|
|
24
|
-
import { Download, Operation, Refresh, ScaleToOriginal, Search } from "@element-plus/icons-vue"
|
|
25
|
-
import { useGlobalConfig, useLocale } from "easybill-ui"
|
|
26
|
-
import { computed, ref } from "vue"
|
|
27
|
-
import STableColumnControl from "./STableColumnControl.vue"
|
|
28
|
-
const emits = defineEmits(["operation"])
|
|
29
|
-
const props = defineProps({
|
|
30
|
-
filterVisible: {
|
|
31
|
-
type: Boolean,
|
|
32
|
-
default: true,
|
|
33
|
-
},
|
|
34
|
-
})
|
|
35
|
-
const { t } = useLocale()
|
|
36
|
-
const globalConfig = useGlobalConfig()
|
|
37
|
-
// 控制按钮逻辑
|
|
38
|
-
const controlButtons = computed(() => [
|
|
39
|
-
{ label: t("el.table.refresh"), value: "refresh", icon: Refresh },
|
|
40
|
-
{ label: props.filterVisible ? t("el.table.collapseQuery") : t("el.table.expandQuery"), value: "searchToggle", icon: Search },
|
|
41
|
-
{
|
|
42
|
-
label: t("el.table.density"),
|
|
43
|
-
icon: ScaleToOriginal,
|
|
44
|
-
value: "size",
|
|
45
|
-
options: [
|
|
46
|
-
{ label: t("el.table.default"), value: "default" },
|
|
47
|
-
{ label: t("el.table.medium"), value: "medium" },
|
|
48
|
-
{ label: t("el.table.small"), value: "small" },
|
|
49
|
-
],
|
|
50
|
-
},
|
|
51
|
-
{ label: t("el.table.exportData"), value: "export", icon: Download },
|
|
52
|
-
// { label: "打印", value: "print", icon: "Printer" },
|
|
53
|
-
{ label: t("el.table.columnSet"), value: "operation", icon: Operation },
|
|
54
|
-
])
|
|
55
|
-
const visible = ref(false)
|
|
56
|
-
const onClick = (item: ButtonItem) => {
|
|
57
|
-
emits("operation", item.value)
|
|
58
|
-
if (item.value == "operation") {
|
|
59
|
-
visible.value = true
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
const currentSize = ref(globalConfig.value.size || "default")
|
|
63
|
-
const handleSizeCommand = (val: "default" | "small" | "large") => {
|
|
64
|
-
currentSize.value = val
|
|
65
|
-
emits("operation", "size", val)
|
|
66
|
-
}
|
|
67
|
-
const openColumnControl = () => {
|
|
68
|
-
visible.value = true
|
|
69
|
-
}
|
|
70
|
-
defineExpose({ openColumnControl })
|
|
71
|
-
interface ButtonItem {
|
|
72
|
-
label: string
|
|
73
|
-
icon: unknown
|
|
74
|
-
value: string
|
|
75
|
-
options?: Array<{ label: string; value: string }>
|
|
76
|
-
}
|
|
77
|
-
</script>
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { provide, type Ref, ref, shallowRef } from "vue"
|
|
2
|
-
import type { ParamsItem } from "../../../TableFilter"
|
|
3
|
-
import { deepClone } from "../../utils/common"
|
|
4
|
-
import type { ColumnItem } from "../types"
|
|
5
|
-
|
|
6
|
-
export function useColumnHook<T>(): {
|
|
7
|
-
tableColumns: Ref<Array<ColumnItem<T>>>
|
|
8
|
-
selectParams: Ref<ParamsItem[]>
|
|
9
|
-
initColumn: (propsColumns: ColumnItem<T>[]) => Promise<void>
|
|
10
|
-
} {
|
|
11
|
-
const columns: Ref<Array<ColumnItem<T>>> = shallowRef([])
|
|
12
|
-
|
|
13
|
-
provide("columns", columns)
|
|
14
|
-
const getSchema = (colss: ColumnItem<T>[]) => {
|
|
15
|
-
const result: Array<ParamsItem> = []
|
|
16
|
-
const getFilter = (cols: Array<ColumnItem<T>>) => {
|
|
17
|
-
for (const i in cols) {
|
|
18
|
-
const a = deepClone(cols[i])
|
|
19
|
-
if (a.children && a.children.length) {
|
|
20
|
-
getFilter(a.children)
|
|
21
|
-
continue
|
|
22
|
-
}
|
|
23
|
-
if (a.filter) {
|
|
24
|
-
result.push(getFilterFromColumn<T>(a))
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
getFilter(colss)
|
|
29
|
-
return result
|
|
30
|
-
}
|
|
31
|
-
const selectParams = ref<ParamsItem[]>([])
|
|
32
|
-
// selectParams.value = getSchema()
|
|
33
|
-
provide("selectParams", selectParams)
|
|
34
|
-
async function initColumn(propsColumns: ColumnItem<T>[]) {
|
|
35
|
-
const cs = deepClone(propsColumns)
|
|
36
|
-
columns.value = cs //.filter((a) => !a.hidden)
|
|
37
|
-
const find = async (cs: ColumnItem<T>[]) => {
|
|
38
|
-
for (let i = 0; i < cs.length; i++) {
|
|
39
|
-
const item = cs[i]
|
|
40
|
-
if (item.children && item.children.length) {
|
|
41
|
-
find(item.children)
|
|
42
|
-
} else if (item.asyncOptions) {
|
|
43
|
-
item.options = await item.asyncOptions()
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
find(columns.value)
|
|
48
|
-
selectParams.value = getSchema(columns.value).sort((a, b) => (b.sortIndex || 0) - (a.sortIndex || 0))
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
return {
|
|
52
|
-
tableColumns: columns,
|
|
53
|
-
selectParams,
|
|
54
|
-
initColumn,
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
export function getFilterFromColumn<T>(a: ColumnItem<T>) {
|
|
58
|
-
const options = a.filter?.options || a.options
|
|
59
|
-
const item: ParamsItem = deepClone(a.filter) as ParamsItem
|
|
60
|
-
if (!item.prop) {
|
|
61
|
-
item.prop = a.prop
|
|
62
|
-
}
|
|
63
|
-
// label可能传空字符串
|
|
64
|
-
if (typeof item.label == "undefined") {
|
|
65
|
-
item.label = a.label
|
|
66
|
-
}
|
|
67
|
-
if (!item.options && options) {
|
|
68
|
-
item.options = options
|
|
69
|
-
}
|
|
70
|
-
if (!item.asyncOptions && a.asyncOptions) {
|
|
71
|
-
item.asyncOptions = a.asyncOptions
|
|
72
|
-
}
|
|
73
|
-
if (!item.eventObject && a.eventObject) {
|
|
74
|
-
item.eventObject = a.eventObject
|
|
75
|
-
}
|
|
76
|
-
return item
|
|
77
|
-
}
|