easybill-ui 1.4.1 → 1.4.3
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 +49 -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 +150 -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 +55 -46
- 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,54 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<el-tooltip :content="tooltipModel.content" v-bind="tooltipModel || {}">
|
|
3
|
-
<el-button class="tooltip" type="primary" link>
|
|
4
|
-
<el-icon><Warning /></el-icon>
|
|
5
|
-
</el-button>
|
|
6
|
-
<template #content>
|
|
7
|
-
<div v-html="tooltipModel.content"></div>
|
|
8
|
-
</template>
|
|
9
|
-
</el-tooltip>
|
|
10
|
-
</template>
|
|
11
|
-
<script lang="ts" setup>
|
|
12
|
-
import { Warning } from "@element-plus/icons-vue"
|
|
13
|
-
import { type PropType, computed } from "vue"
|
|
14
|
-
import type { Fields, FormItem, TooltipProps } from "./types"
|
|
15
|
-
const props = defineProps({
|
|
16
|
-
tooltip: {
|
|
17
|
-
type: [String, Function, Object] as PropType<string | ((formModel: Fields, formItem: FormItem) => Partial<TooltipProps> | string) | Partial<TooltipProps>>,
|
|
18
|
-
default: null,
|
|
19
|
-
},
|
|
20
|
-
formItem: {
|
|
21
|
-
required: true,
|
|
22
|
-
type: Object as PropType<FormItem>,
|
|
23
|
-
},
|
|
24
|
-
formModel: {
|
|
25
|
-
type: Object as PropType<Fields>,
|
|
26
|
-
default: () => ({}),
|
|
27
|
-
},
|
|
28
|
-
})
|
|
29
|
-
|
|
30
|
-
const tooltipModel = computed(() => {
|
|
31
|
-
let tooltip = props.tooltip
|
|
32
|
-
if (!tooltip) {
|
|
33
|
-
return { content: "" }
|
|
34
|
-
}
|
|
35
|
-
if (typeof tooltip == "function") {
|
|
36
|
-
tooltip = tooltip(props.formModel, props.formItem)
|
|
37
|
-
return getTooltip(tooltip)
|
|
38
|
-
}
|
|
39
|
-
return getTooltip(tooltip)
|
|
40
|
-
})
|
|
41
|
-
// 获取组件tooltip内容
|
|
42
|
-
const getTooltip = (tooltip: Partial<TooltipProps> | string): Partial<TooltipProps> => {
|
|
43
|
-
if (!tooltip) {
|
|
44
|
-
return { content: "" }
|
|
45
|
-
}
|
|
46
|
-
let t: Partial<TooltipProps> = {}
|
|
47
|
-
if (typeof tooltip == "string") {
|
|
48
|
-
t = { content: tooltip }
|
|
49
|
-
} else {
|
|
50
|
-
t = tooltip
|
|
51
|
-
}
|
|
52
|
-
return t
|
|
53
|
-
}
|
|
54
|
-
</script>
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { isReactive, isRef, isVNode, type Component, type VNode } from "vue"
|
|
2
|
-
import SchemaFormAutocomplete from "./schema-form-autocomplete.vue"
|
|
3
|
-
import SchemaFormCascader from "./schema-form-cascader.vue"
|
|
4
|
-
import SchemaFormCheckbox from "./schema-form-checkbox.vue"
|
|
5
|
-
import SchemaFormChoose from "./schema-form-choose.vue"
|
|
6
|
-
import SchemaFormColorPicker from "./schema-form-color-picker.vue"
|
|
7
|
-
import SchemaFormDatePicker from "./schema-form-date-picker.vue"
|
|
8
|
-
import SchemaFormInputNumber from "./schema-form-input-number.vue"
|
|
9
|
-
import SchemaFormInput from "./schema-form-input.vue"
|
|
10
|
-
import SchemaFormRadio from "./schema-form-radio.vue"
|
|
11
|
-
import SchemaFormSelectV2 from "./schema-form-select-v2.vue"
|
|
12
|
-
import SchemaFormSelect from "./schema-form-select.vue"
|
|
13
|
-
import SchemaFormSwitch from "./schema-form-switch.vue"
|
|
14
|
-
import SchemaFormTimePicker from "./schema-form-time-picker.vue"
|
|
15
|
-
import SchemaFormTreeSelect from "./schema-form-tree-select.vue"
|
|
16
|
-
import SchemaFormValue from "./schema-form-value.vue"
|
|
17
|
-
interface PresetMap {
|
|
18
|
-
[key: string]: Component
|
|
19
|
-
}
|
|
20
|
-
const presetMap: PresetMap = {
|
|
21
|
-
"schema-input": SchemaFormInput,
|
|
22
|
-
"schema-select": SchemaFormSelect,
|
|
23
|
-
"schema-select-v2": SchemaFormSelectV2,
|
|
24
|
-
"schema-radio": SchemaFormRadio,
|
|
25
|
-
"schema-checkbox": SchemaFormCheckbox,
|
|
26
|
-
"schema-input-number": SchemaFormInputNumber,
|
|
27
|
-
"schema-switch": SchemaFormSwitch,
|
|
28
|
-
"schema-date-picker": SchemaFormDatePicker,
|
|
29
|
-
"schema-time-picker": SchemaFormTimePicker,
|
|
30
|
-
"schema-color-picker": SchemaFormColorPicker,
|
|
31
|
-
"schema-value": SchemaFormValue,
|
|
32
|
-
"schema-cascader": SchemaFormCascader,
|
|
33
|
-
"schema-autocomplete": SchemaFormAutocomplete,
|
|
34
|
-
"schema-tree-select": SchemaFormTreeSelect,
|
|
35
|
-
"schema-choose": SchemaFormChoose,
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export default presetMap
|
|
39
|
-
export const preset = Object.keys(presetMap)
|
|
40
|
-
export const getComponent = (type: string | VNode = "input") => {
|
|
41
|
-
// 预设组件
|
|
42
|
-
if (typeof type == "string" && preset.includes("schema-" + type)) {
|
|
43
|
-
return presetMap["schema-" + type]
|
|
44
|
-
} else if (isReactive(type) || isRef(type) || isVNode(type) || (typeof type == "object" && "setup" in type)) {
|
|
45
|
-
// 自定义组件
|
|
46
|
-
// return createVNode(type)
|
|
47
|
-
return type
|
|
48
|
-
} else {
|
|
49
|
-
// 'el-原生组件'
|
|
50
|
-
return null
|
|
51
|
-
}
|
|
52
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<el-autocomplete v-model="model" v-bind="props.props" v-on="props.eventObject">
|
|
3
|
-
<template #default="{ item }">
|
|
4
|
-
<div v-if="item.html" v-html="item.html"></div>
|
|
5
|
-
<div v-else>{{ item.label || item.value }}</div>
|
|
6
|
-
</template>
|
|
7
|
-
</el-autocomplete>
|
|
8
|
-
</template>
|
|
9
|
-
<script lang="ts" setup>
|
|
10
|
-
import { FormItemProps } from "easybill-ui/components/CurdForm/src/types"
|
|
11
|
-
import { type CascaderValue } from "element-plus"
|
|
12
|
-
import { computed, type PropType } from "vue"
|
|
13
|
-
const props = defineProps({
|
|
14
|
-
...FormItemProps,
|
|
15
|
-
modelValue: {
|
|
16
|
-
type: [String, Number] as PropType<CascaderValue>,
|
|
17
|
-
default: undefined,
|
|
18
|
-
}, // 表单项值
|
|
19
|
-
})
|
|
20
|
-
const emits = defineEmits(["update:modelValue"])
|
|
21
|
-
const model = computed({
|
|
22
|
-
get: () => props.modelValue,
|
|
23
|
-
set: (val) => emits("update:modelValue", val),
|
|
24
|
-
})
|
|
25
|
-
</script>
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<el-cascader v-model="model" :options="options" v-bind="props.props" v-on="props.eventObject"></el-cascader>
|
|
3
|
-
</template>
|
|
4
|
-
<script lang="ts" setup>
|
|
5
|
-
import { type CascaderOption, type CascaderValue } from "element-plus"
|
|
6
|
-
import { computed, type PropType } from "vue"
|
|
7
|
-
import { FormItemProps } from "../types"
|
|
8
|
-
const props = defineProps({
|
|
9
|
-
...FormItemProps,
|
|
10
|
-
modelValue: {
|
|
11
|
-
type: [String, Number] as PropType<CascaderValue>,
|
|
12
|
-
default: undefined,
|
|
13
|
-
}, // 表单项值
|
|
14
|
-
})
|
|
15
|
-
const emits = defineEmits(["update:modelValue"])
|
|
16
|
-
const model = computed({
|
|
17
|
-
get: () => props.modelValue,
|
|
18
|
-
set: (val) => emits("update:modelValue", val),
|
|
19
|
-
})
|
|
20
|
-
const options = computed(() => {
|
|
21
|
-
const ops = props.formItem.options as CascaderOption[]
|
|
22
|
-
return ops
|
|
23
|
-
})
|
|
24
|
-
</script>
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="schema-form-radio">
|
|
3
|
-
<div v-if="formItem.loading" class="loading" style="color: #999; font-size: 12px">
|
|
4
|
-
<el-icon class="is-loading"><Loading /></el-icon> {{ t("el.form.loading") }}
|
|
5
|
-
</div>
|
|
6
|
-
<el-checkbox-group v-if="!formItem.loading && formItem.options && formItem.options.length" v-model="model" :class="[props?.showType]" style="width: 100%" v-bind="props" v-on="eventObject">
|
|
7
|
-
<template v-for="option in formItem.options" :key="option.value">
|
|
8
|
-
<el-checkbox-button v-if="props?.componentName == 'button'" :disabled="option.disabled" :style="option.style" v-bind="option"> {{ option.label }} </el-checkbox-button>
|
|
9
|
-
<el-checkbox v-else :disabled="option.disabled" :style="option.style" v-bind="option"> {{ option.label }} </el-checkbox>
|
|
10
|
-
</template>
|
|
11
|
-
</el-checkbox-group>
|
|
12
|
-
<div v-if="!formItem.loading && !formItem.options?.length" class="empty">
|
|
13
|
-
<component :is="empty" v-if="empty" :form-model="formModel" :form-item="formItem" :props="props" />
|
|
14
|
-
<template v-else>
|
|
15
|
-
<el-icon><Warning /></el-icon> <span>{{ props.noDataText || t("el.form.nodata") }}</span>
|
|
16
|
-
</template>
|
|
17
|
-
</div>
|
|
18
|
-
</div>
|
|
19
|
-
</template>
|
|
20
|
-
<script lang="ts">
|
|
21
|
-
import { Loading, Warning } from "@element-plus/icons-vue"
|
|
22
|
-
import { useLocale } from "easybill-ui"
|
|
23
|
-
import { computed, defineComponent, type PropType, toRaw } from "vue"
|
|
24
|
-
import { FormItemProps } from "../types"
|
|
25
|
-
export default defineComponent({
|
|
26
|
-
name: "SchemaFormCheckbox",
|
|
27
|
-
components: { Loading, Warning },
|
|
28
|
-
props: {
|
|
29
|
-
...FormItemProps,
|
|
30
|
-
modelValue: {
|
|
31
|
-
type: Array as PropType<(string | number)[]>,
|
|
32
|
-
default: () => [],
|
|
33
|
-
}, // 表单项值
|
|
34
|
-
},
|
|
35
|
-
emits: ["update:modelValue"],
|
|
36
|
-
setup(props, { emit }) {
|
|
37
|
-
const model = computed({
|
|
38
|
-
get: () => props.modelValue,
|
|
39
|
-
set: (val) => emit("update:modelValue", val),
|
|
40
|
-
})
|
|
41
|
-
if (!(model.value instanceof Array)) {
|
|
42
|
-
model.value = []
|
|
43
|
-
}
|
|
44
|
-
const { t } = useLocale()
|
|
45
|
-
|
|
46
|
-
return {
|
|
47
|
-
model,
|
|
48
|
-
empty: toRaw(props.props.empty) || "",
|
|
49
|
-
t,
|
|
50
|
-
}
|
|
51
|
-
},
|
|
52
|
-
})
|
|
53
|
-
</script>
|
|
@@ -1,225 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="schema-form-choose">
|
|
3
|
-
<div class="choose-content-wrapper">
|
|
4
|
-
<div v-if="formItem.loading" class="loading">
|
|
5
|
-
<el-icon class="is-loading"><Loading /></el-icon> {{ t("el.form.loading") }}
|
|
6
|
-
</div>
|
|
7
|
-
<el-radio-group v-else-if="options?.length" v-model="currentValue" :class="[props.props?.showType, chooseGroupClass]" v-bind="props.props" v-on="props.eventObject">
|
|
8
|
-
<template v-for="(option, index) in options" :key="option.value">
|
|
9
|
-
<component :is="props?.props?.componentName == 'button' ? 'el-radio-button' : 'el-radio'" :value="option.value" :disabled="option.disabled" :border="option.border" :size="option.size" :style="option.style">
|
|
10
|
-
<component v-if="option.component" :is="option.component" :row="option" :$index="index" :form-model="formModel" :form-item="formItem" :props="props" />
|
|
11
|
-
<span v-else-if="option.html" v-html="option.html"></span>
|
|
12
|
-
<span v-else>{{ option.label }}</span>
|
|
13
|
-
<FormTooltip v-if="option.tooltip" :tooltip="option.tooltip" :form-item="formItem" :form-model="formModel" />
|
|
14
|
-
</component>
|
|
15
|
-
</template>
|
|
16
|
-
</el-radio-group>
|
|
17
|
-
<div v-else class="empty">
|
|
18
|
-
<component :is="empty" v-if="empty" :form-model="formModel" :form-item="formItem" :props="props" />
|
|
19
|
-
<template v-else>
|
|
20
|
-
<el-icon><Warning /></el-icon> <span>{{ props.props?.noDataText || t("el.form.nodata") }}</span>
|
|
21
|
-
</template>
|
|
22
|
-
</div>
|
|
23
|
-
|
|
24
|
-
<!-- 子表单项区域 -->
|
|
25
|
-
<div class="choose-sub-items-wrapper" :style="wrapperStyle">
|
|
26
|
-
<div ref="innerRef" class="choose-sub-items" :class="subItemsClass">
|
|
27
|
-
<template v-for="subItem in displaySubItems" :key="subItem.prop">
|
|
28
|
-
<el-form-item :prop="subItem.prop" :label="subItem.label" :label-width="subItem.labelWidth" :class="getSubFormItemStyle(subItem)" v-bind="getSubFormItemProps(subItem)">
|
|
29
|
-
<template v-for="(item, key) in getSubFormItemProps(subItem)?.slots || {}" :key="key" #[key]="row">
|
|
30
|
-
<component :is="item" v-bind="row" />
|
|
31
|
-
</template>
|
|
32
|
-
<FormItem :form-item="subItem" :form-model="formModel" @change="onSubItemChange">
|
|
33
|
-
<template #prefix>
|
|
34
|
-
<slot :name="subItem.prop + 'Prefix'" :form-item="subItem" :form-model="formModel"></slot>
|
|
35
|
-
</template>
|
|
36
|
-
<template #suffix>
|
|
37
|
-
<slot :name="subItem.prop + 'Suffix'" :form-item="subItem" :form-model="formModel"></slot>
|
|
38
|
-
</template>
|
|
39
|
-
</FormItem>
|
|
40
|
-
</el-form-item>
|
|
41
|
-
</template>
|
|
42
|
-
</div>
|
|
43
|
-
</div>
|
|
44
|
-
</div>
|
|
45
|
-
</div>
|
|
46
|
-
</template>
|
|
47
|
-
|
|
48
|
-
<script lang="ts" setup>
|
|
49
|
-
import { Loading, Warning } from "@element-plus/icons-vue"
|
|
50
|
-
import { useLocale } from "easybill-ui"
|
|
51
|
-
import { computed, inject, nextTick, onUnmounted, ref, toRaw, watch, type PropType } from "vue"
|
|
52
|
-
import FormItem from "../FormItem.vue"
|
|
53
|
-
import FormTooltip from "../FormTooltip.vue"
|
|
54
|
-
import { FormItemProps, type CurdFormOptionItem, type Fields, type FormContext, type FormItem as FormItemType } from "../types"
|
|
55
|
-
|
|
56
|
-
const props = defineProps({
|
|
57
|
-
...FormItemProps,
|
|
58
|
-
modelValue: {
|
|
59
|
-
type: [String, Number, Boolean] as PropType<string | number | boolean | null>,
|
|
60
|
-
default: null,
|
|
61
|
-
},
|
|
62
|
-
})
|
|
63
|
-
|
|
64
|
-
const emit = defineEmits(["update:modelValue"])
|
|
65
|
-
const { t } = useLocale()
|
|
66
|
-
const formContext = inject<FormContext>("curdFormContext")
|
|
67
|
-
|
|
68
|
-
const chooseGroupClass = computed(() => {
|
|
69
|
-
return props?.props?.showType || ""
|
|
70
|
-
})
|
|
71
|
-
|
|
72
|
-
const subItemsClass = computed(() => {
|
|
73
|
-
return props?.props?.subItemsClass || ""
|
|
74
|
-
})
|
|
75
|
-
|
|
76
|
-
const currentValue = computed({
|
|
77
|
-
get: () => props.modelValue,
|
|
78
|
-
set: (val) => {
|
|
79
|
-
emit("update:modelValue", val)
|
|
80
|
-
},
|
|
81
|
-
})
|
|
82
|
-
|
|
83
|
-
const options = computed(() => {
|
|
84
|
-
const allOptions: CurdFormOptionItem[] = []
|
|
85
|
-
if (props.props?.all) {
|
|
86
|
-
const optionItem: CurdFormOptionItem = { value: "", label: t("el.form.all") }
|
|
87
|
-
if (typeof props.props.all === "object") {
|
|
88
|
-
Object.assign(optionItem, props.props.all)
|
|
89
|
-
}
|
|
90
|
-
allOptions.push(optionItem)
|
|
91
|
-
}
|
|
92
|
-
return [...allOptions, ...(props.formItem.options || [])]
|
|
93
|
-
})
|
|
94
|
-
|
|
95
|
-
const empty = computed(() => toRaw(props.props?.empty) || "")
|
|
96
|
-
|
|
97
|
-
const currentOption = computed(() => {
|
|
98
|
-
if (!currentValue.value) return null
|
|
99
|
-
return options.value.find((opt) => opt.value === currentValue.value)
|
|
100
|
-
})
|
|
101
|
-
|
|
102
|
-
// 动画控制状态
|
|
103
|
-
const innerRef = ref<HTMLElement | null>(null)
|
|
104
|
-
const wrapperStyle = ref<Record<string, string>>({})
|
|
105
|
-
const displaySubItems = ref<FormItemType[]>([])
|
|
106
|
-
const isAnimating = ref(false)
|
|
107
|
-
|
|
108
|
-
// 辅助函数:从父级 schema 中查找指定的表单项
|
|
109
|
-
const findFormItemsByProps = (props: string[]) => {
|
|
110
|
-
const parentSchema = formContext?.formSchema || { formItem: [] }
|
|
111
|
-
const allFormItems = parentSchema.formItem || []
|
|
112
|
-
return allFormItems.filter((item: FormItemType) => props.includes(item.prop))
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
// 获取当前选项下需要显示的子表单项
|
|
116
|
-
const visibleSubItems = computed(() => {
|
|
117
|
-
const opt = currentOption.value
|
|
118
|
-
if (!opt) return []
|
|
119
|
-
|
|
120
|
-
if (opt.items?.length) return opt.items
|
|
121
|
-
if (opt.props?.length) return findFormItemsByProps(opt.props)
|
|
122
|
-
|
|
123
|
-
return []
|
|
124
|
-
})
|
|
125
|
-
|
|
126
|
-
// 更新外层高度
|
|
127
|
-
const updateWrapperHeight = (height: number, animate = true) => {
|
|
128
|
-
if (animate) {
|
|
129
|
-
wrapperStyle.value = { height: height + "px" }
|
|
130
|
-
} else {
|
|
131
|
-
wrapperStyle.value = { height: height + "px", transition: "none" }
|
|
132
|
-
nextTick(() => {
|
|
133
|
-
wrapperStyle.value.transition = ""
|
|
134
|
-
})
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
// 监听选项变化,动态计算高度实现平滑过渡
|
|
139
|
-
watch(
|
|
140
|
-
visibleSubItems,
|
|
141
|
-
async (newItems) => {
|
|
142
|
-
// 获取旧高度
|
|
143
|
-
const oldHeight = innerRef.value?.scrollHeight || 0
|
|
144
|
-
|
|
145
|
-
if (newItems.length > 0) {
|
|
146
|
-
// 更新内容
|
|
147
|
-
displaySubItems.value = newItems
|
|
148
|
-
// 等待 DOM 渲染
|
|
149
|
-
await nextTick()
|
|
150
|
-
// 获取新高度
|
|
151
|
-
const newHeight = innerRef.value?.scrollHeight || 0
|
|
152
|
-
if (oldHeight !== newHeight) {
|
|
153
|
-
// 先设置回旧高度(防止跳动)
|
|
154
|
-
wrapperStyle.value = { height: oldHeight + "px" }
|
|
155
|
-
isAnimating.value = true
|
|
156
|
-
// 下一帧设置新高度触发过渡
|
|
157
|
-
requestAnimationFrame(() => {
|
|
158
|
-
updateWrapperHeight(newHeight)
|
|
159
|
-
})
|
|
160
|
-
} else {
|
|
161
|
-
updateWrapperHeight(newHeight, false)
|
|
162
|
-
}
|
|
163
|
-
} else {
|
|
164
|
-
// 无内容时收起
|
|
165
|
-
updateWrapperHeight(0)
|
|
166
|
-
isAnimating.value = false
|
|
167
|
-
setTimeout(() => {
|
|
168
|
-
displaySubItems.value = []
|
|
169
|
-
}, 300)
|
|
170
|
-
}
|
|
171
|
-
},
|
|
172
|
-
{ immediate: true },
|
|
173
|
-
)
|
|
174
|
-
|
|
175
|
-
// ResizeObserver 监听内层高度变化
|
|
176
|
-
let resizeObserver: ResizeObserver | null = null
|
|
177
|
-
|
|
178
|
-
watch(innerRef, (el) => {
|
|
179
|
-
if (el) {
|
|
180
|
-
resizeObserver = new ResizeObserver((entries) => {
|
|
181
|
-
// 只在非动画状态且高度变化时更新
|
|
182
|
-
const newHeight = entries[0]?.contentRect.height
|
|
183
|
-
if (newHeight !== undefined && !isAnimating.value) {
|
|
184
|
-
updateWrapperHeight(newHeight, false)
|
|
185
|
-
}
|
|
186
|
-
})
|
|
187
|
-
resizeObserver.observe(el as unknown as Element)
|
|
188
|
-
}
|
|
189
|
-
})
|
|
190
|
-
|
|
191
|
-
onUnmounted(() => {
|
|
192
|
-
if (resizeObserver) {
|
|
193
|
-
resizeObserver.disconnect()
|
|
194
|
-
}
|
|
195
|
-
})
|
|
196
|
-
|
|
197
|
-
// 获取子表单项的额外 props
|
|
198
|
-
const getSubFormItemProps = (subItem: FormItemType) => {
|
|
199
|
-
if (subItem.formItemProps) {
|
|
200
|
-
if (subItem.formItemProps instanceof Function) {
|
|
201
|
-
return subItem.formItemProps(props.formModel, subItem)
|
|
202
|
-
}
|
|
203
|
-
return { ...subItem.formItemProps }
|
|
204
|
-
}
|
|
205
|
-
return {}
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
// 获取子表单项的样式类
|
|
209
|
-
const getSubFormItemStyle = (subItem: FormItemType) => {
|
|
210
|
-
if (!subItem.span) return "el-form-item-full"
|
|
211
|
-
return "el-form-item-" + subItem.span
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
// 子表单项变化事件
|
|
215
|
-
const onSubItemChange = (formModel: Fields, formItem: FormItemType) => {
|
|
216
|
-
// 1. 先执行子表单项自己的 change 事件
|
|
217
|
-
if (formItem.eventObject?.change) {
|
|
218
|
-
formItem.eventObject.change(formModel, formItem, formContext!)
|
|
219
|
-
}
|
|
220
|
-
// 2. 向上传递到 CurdForm,保持与其他表单项一致
|
|
221
|
-
if (formContext?.change) {
|
|
222
|
-
formContext.change(formModel, formItem)
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
</script>
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<el-color-picker v-model="model" show-alpha v-bind="props" v-on="eventObject"> </el-color-picker>
|
|
3
|
-
</template>
|
|
4
|
-
<script lang="ts">
|
|
5
|
-
import { computed, defineComponent } from "vue"
|
|
6
|
-
import { FormItemProps } from "../types"
|
|
7
|
-
export default defineComponent({
|
|
8
|
-
name: "SchemaFormColorPicker",
|
|
9
|
-
components: {},
|
|
10
|
-
props: FormItemProps,
|
|
11
|
-
emits: ["update:modelValue"],
|
|
12
|
-
setup(props, { emit }) {
|
|
13
|
-
const model = computed({
|
|
14
|
-
get: () => props.modelValue,
|
|
15
|
-
set: (val) => emit("update:modelValue", val),
|
|
16
|
-
})
|
|
17
|
-
|
|
18
|
-
return {
|
|
19
|
-
model,
|
|
20
|
-
}
|
|
21
|
-
},
|
|
22
|
-
})
|
|
23
|
-
</script>
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<el-date-picker v-model="model" type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD" v-bind="props" v-on="eventObject">
|
|
3
|
-
<template v-for="(item, key) in props.slots" :key="key" #[key]="slotScope">
|
|
4
|
-
<component :is="item" v-model="model" v-bind="slotScope" :form-item="formItem" :form-model="formModel" :props="props" :event-object="eventObject" />
|
|
5
|
-
</template>
|
|
6
|
-
</el-date-picker>
|
|
7
|
-
</template>
|
|
8
|
-
<script lang="ts">
|
|
9
|
-
import { type ModelValueType } from "element-plus"
|
|
10
|
-
import { computed, defineComponent, type PropType } from "vue"
|
|
11
|
-
import { FormItemProps } from "../types"
|
|
12
|
-
export default defineComponent({
|
|
13
|
-
name: "SchemaFormDatePicker",
|
|
14
|
-
components: {},
|
|
15
|
-
props: {
|
|
16
|
-
...FormItemProps,
|
|
17
|
-
modelValue: {
|
|
18
|
-
type: [Array, String] as PropType<ModelValueType>,
|
|
19
|
-
default: "",
|
|
20
|
-
}, // 表单项值
|
|
21
|
-
},
|
|
22
|
-
emits: ["update:modelValue"],
|
|
23
|
-
setup(props, { emit }) {
|
|
24
|
-
const model = computed({
|
|
25
|
-
get: () => props.modelValue,
|
|
26
|
-
set: (val) => emit("update:modelValue", val),
|
|
27
|
-
})
|
|
28
|
-
|
|
29
|
-
return {
|
|
30
|
-
model,
|
|
31
|
-
}
|
|
32
|
-
},
|
|
33
|
-
})
|
|
34
|
-
</script>
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<el-input-number v-model="model" v-bind="props.props" v-on="eventObject">
|
|
3
|
-
<template v-for="(item, key) in props.props?.slots" :key="key" #[key]="slotScope">
|
|
4
|
-
<component :is="item" v-model="model" v-bind="slotScope" :form-item="props.formItem" :form-model="props.formModel" :props="props.props" :event-object="eventObject" />
|
|
5
|
-
</template>
|
|
6
|
-
</el-input-number>
|
|
7
|
-
</template>
|
|
8
|
-
<script lang="ts" setup>
|
|
9
|
-
import { FormItemProps } from "../types"
|
|
10
|
-
const props = defineProps(FormItemProps)
|
|
11
|
-
const model = defineModel()
|
|
12
|
-
</script>
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<el-input v-model="model" v-trim v-bind="props.props" v-on="eventObject">
|
|
3
|
-
<template v-for="(item, key) in props.props?.slots" :key="key" #[key]>
|
|
4
|
-
<component :is="item" :form-item="props.formItem" :form-model="props.formModel" :props="props.props" :event-object="props.eventObject" />
|
|
5
|
-
</template>
|
|
6
|
-
</el-input>
|
|
7
|
-
</template>
|
|
8
|
-
<script lang="ts">
|
|
9
|
-
import { directives } from "../directive"
|
|
10
|
-
import { FormItemProps } from "../types"
|
|
11
|
-
|
|
12
|
-
export default {
|
|
13
|
-
directives: {
|
|
14
|
-
trim: directives.trim,
|
|
15
|
-
},
|
|
16
|
-
}
|
|
17
|
-
</script>
|
|
18
|
-
<script lang="ts" setup>
|
|
19
|
-
const props = defineProps(FormItemProps)
|
|
20
|
-
const model = defineModel()
|
|
21
|
-
</script>
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="schema-form-radio">
|
|
3
|
-
<div v-if="props.formItem.loading" class="loading" style="color: #999; font-size: 12px">
|
|
4
|
-
<el-icon class="is-loading"><Loading /></el-icon> {{ t("el.form.loading") }}
|
|
5
|
-
</div>
|
|
6
|
-
<el-radio-group v-if="!props.formItem.loading && options?.length" v-model="model" :class="[props?.props?.showType]" v-bind="props.props" v-on="props.eventObject">
|
|
7
|
-
<template v-for="(option, index) in options" :key="option.value">
|
|
8
|
-
<component :is="props?.props?.type == 'button' || props?.props?.componentName == 'button' ? 'el-radio-button' : 'el-radio'" :value="option.value" :disabled="option.disabled" :border="option.border" :size="option.size" :style="option.style">
|
|
9
|
-
<component v-if="option.component" :is="option.component" :row="option" :$index="index" :form-model="props.formModel" :form-item="props.formItem" :props="props.props" />
|
|
10
|
-
<span v-else-if="option.html" v-html="option.html"></span>
|
|
11
|
-
<span v-else>{{ option.label }}</span>
|
|
12
|
-
<FormTooltip v-if="option.tooltip" :tooltip="option.tooltip" :form-item="props.formItem" :form-model="props.formModel" />
|
|
13
|
-
</component>
|
|
14
|
-
</template>
|
|
15
|
-
</el-radio-group>
|
|
16
|
-
<div v-if="!props.formItem.loading && !options?.length" class="empty">
|
|
17
|
-
<component :is="empty" v-if="empty" :form-model="props.formModel" :form-item="props.formItem" :props="props.props" />
|
|
18
|
-
<template v-else>
|
|
19
|
-
<el-icon><Warning /></el-icon> <span>{{ props.props?.noDataText || t("el.form.nodata") }}</span>
|
|
20
|
-
</template>
|
|
21
|
-
</div>
|
|
22
|
-
</div>
|
|
23
|
-
</template>
|
|
24
|
-
<script lang="ts" setup>
|
|
25
|
-
import { Loading, Warning } from "@element-plus/icons-vue"
|
|
26
|
-
import { useLocale } from "easybill-ui"
|
|
27
|
-
import { computed, toRaw } from "vue"
|
|
28
|
-
import FormTooltip from "../FormTooltip.vue"
|
|
29
|
-
import { FormItemProps, type CurdFormOptionItem } from "../types"
|
|
30
|
-
|
|
31
|
-
const props = defineProps({
|
|
32
|
-
...FormItemProps,
|
|
33
|
-
modelValue: {
|
|
34
|
-
type: [String, Number, Boolean],
|
|
35
|
-
default: null,
|
|
36
|
-
},
|
|
37
|
-
})
|
|
38
|
-
const emits = defineEmits(["update:modelValue"])
|
|
39
|
-
const model = computed({
|
|
40
|
-
get: () => props.modelValue,
|
|
41
|
-
set: (val) => emits("update:modelValue", val),
|
|
42
|
-
})
|
|
43
|
-
const { t } = useLocale()
|
|
44
|
-
const empty = computed(() => toRaw(props.props.empty) || "")
|
|
45
|
-
const options = computed(() => {
|
|
46
|
-
const alloptions: CurdFormOptionItem[] = []
|
|
47
|
-
if (props.props.all) {
|
|
48
|
-
const optionItem: CurdFormOptionItem = { value: "", label: t("el.form.all") }
|
|
49
|
-
if (typeof props.props.all == "boolean") {
|
|
50
|
-
alloptions.push(optionItem)
|
|
51
|
-
} else if (typeof props.props.all == "object") {
|
|
52
|
-
Object.assign(optionItem, props.props.all)
|
|
53
|
-
alloptions.push(optionItem)
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
const opts = props.formItem.options || []
|
|
57
|
-
return [...alloptions, ...opts]
|
|
58
|
-
})
|
|
59
|
-
</script>
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<el-select-v2 v-model="model" style="width: 100%" :options="list" :loading="props.formItem.loading || loading" :filterable="true" v-bind="selectProps" v-on="props.eventObject">
|
|
3
|
-
<template v-for="(item, key) in props.props?.slots" :key="key" #[key]>
|
|
4
|
-
<component :is="item" v-model="model" :form-item="props.formItem" :form-model="props.formModel" :props="props.props" :event-object="props.eventObject" />
|
|
5
|
-
</template>
|
|
6
|
-
</el-select-v2>
|
|
7
|
-
</template>
|
|
8
|
-
<script lang="ts" setup>
|
|
9
|
-
import { computed, onMounted, ref, watch } from "vue"
|
|
10
|
-
import type { CurdFormOptionItem } from "../types"
|
|
11
|
-
import { FormItemProps } from "../types"
|
|
12
|
-
|
|
13
|
-
const props = defineProps({
|
|
14
|
-
...FormItemProps,
|
|
15
|
-
modelValue: {
|
|
16
|
-
type: [String, Number, Boolean, Array],
|
|
17
|
-
default: null,
|
|
18
|
-
},
|
|
19
|
-
})
|
|
20
|
-
const emits = defineEmits(["update:modelValue"])
|
|
21
|
-
const model = computed({
|
|
22
|
-
get: () => props.modelValue,
|
|
23
|
-
set: (val) => emits("update:modelValue", val),
|
|
24
|
-
})
|
|
25
|
-
const loading = ref(false)
|
|
26
|
-
// 有的options是从接口里拿的,掉接口需要时间,初始全选的时候全选的按钮没有勾选上,所以监听options
|
|
27
|
-
const list = ref(props.formItem.options || [])
|
|
28
|
-
watch(
|
|
29
|
-
() => props.formItem.options,
|
|
30
|
-
(val) => {
|
|
31
|
-
list.value = val || []
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
deep: true,
|
|
35
|
-
},
|
|
36
|
-
)
|
|
37
|
-
onMounted(() => {})
|
|
38
|
-
const { filterMethod, remoteMethod, ...selectProps } = props.props
|
|
39
|
-
// 前端筛选
|
|
40
|
-
if (filterMethod) {
|
|
41
|
-
selectProps.filterMethod = function (val: string) {
|
|
42
|
-
const remoteMehotd1 = filterMethod as (val: string, optionItem?: CurdFormOptionItem) => Promise<CurdFormOptionItem[]>
|
|
43
|
-
list.value = props.formItem?.options?.filter((a) => remoteMehotd1(val, a)) || []
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
// 远程筛选
|
|
47
|
-
if (selectProps.remote && remoteMethod) {
|
|
48
|
-
selectProps.remoteMethod = function (val: string) {
|
|
49
|
-
loading.value = true
|
|
50
|
-
const remoteMehotd1 = remoteMethod as (val: string, optionItem?: CurdFormOptionItem) => Promise<CurdFormOptionItem[]>
|
|
51
|
-
remoteMehotd1(val)
|
|
52
|
-
.then((res) => {
|
|
53
|
-
list.value = res
|
|
54
|
-
})
|
|
55
|
-
.finally(() => {
|
|
56
|
-
loading.value = false
|
|
57
|
-
})
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
</script>
|