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,236 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="table-filter">
|
|
3
|
-
<slot name="top"></slot>
|
|
4
|
-
<div>
|
|
5
|
-
<FilterExternal ref="filterExternalRef" :select-params="selectParams" :list-query="listQuery" :has-slot="selectParams.some((a) => !a.external)" :extendContext="extendContext" v-bind="$attrs" @change="onChange">
|
|
6
|
-
<template #default>
|
|
7
|
-
<FilterSearchBox v-if="selectParams.some((a) => !a.external)" ref="searchRef" :select-params="selectParams.filter((a) => !a.external)" :select-list="selectList" :list-query="listQuery" @search="onChange" />
|
|
8
|
-
</template>
|
|
9
|
-
</FilterExternal>
|
|
10
|
-
</div>
|
|
11
|
-
<FilterTags :select-list="selectList" :list-query="listQuery" @remove="onRemove" @change="onChange" @item-click="onTagClick"></FilterTags>
|
|
12
|
-
<slot name="bottom"></slot>
|
|
13
|
-
</div>
|
|
14
|
-
</template>
|
|
15
|
-
|
|
16
|
-
<script lang="ts" setup>
|
|
17
|
-
import { onMounted, type PropType, provide, reactive, type Ref, ref, watch } from "vue"
|
|
18
|
-
import type { CurdFormOptionItem, FormContext } from "../../CurdForm"
|
|
19
|
-
import { deepClone } from "../../CurdTable/utils/common"
|
|
20
|
-
import * as I from "../types"
|
|
21
|
-
import FilterExternal from "./FilterExternal/FilterExternal.vue"
|
|
22
|
-
import FilterSearchBox from "./FilterSearchBox.vue"
|
|
23
|
-
import FilterTags from "./components/FilterTags.vue"
|
|
24
|
-
|
|
25
|
-
const props = defineProps({
|
|
26
|
-
/**
|
|
27
|
-
* @deprecated since version 1.0
|
|
28
|
-
*/
|
|
29
|
-
selectParams: {
|
|
30
|
-
type: Array as PropType<Array<I.ParamsItem>>,
|
|
31
|
-
default: () => {
|
|
32
|
-
return []
|
|
33
|
-
},
|
|
34
|
-
},
|
|
35
|
-
schema: {
|
|
36
|
-
type: Array as PropType<Array<I.ParamsItem>>,
|
|
37
|
-
default: undefined,
|
|
38
|
-
},
|
|
39
|
-
/**
|
|
40
|
-
* @deprecated since version 1.0
|
|
41
|
-
*/
|
|
42
|
-
listQuery: {
|
|
43
|
-
type: Object as PropType<I.ListQuery>,
|
|
44
|
-
default: () => {
|
|
45
|
-
return {}
|
|
46
|
-
},
|
|
47
|
-
},
|
|
48
|
-
modelValue: {
|
|
49
|
-
type: Object as PropType<I.ListQuery>,
|
|
50
|
-
default: undefined,
|
|
51
|
-
},
|
|
52
|
-
option: {
|
|
53
|
-
type: Object as PropType<Partial<I.FilterOption>>,
|
|
54
|
-
default: undefined,
|
|
55
|
-
},
|
|
56
|
-
})
|
|
57
|
-
const emit = defineEmits(["search"])
|
|
58
|
-
const searchRef = ref()
|
|
59
|
-
const selectList: Ref<I.ParamsItem[]> = ref([])
|
|
60
|
-
const selectParams = ref<I.ParamsItem[]>(props.schema || props.selectParams || [])
|
|
61
|
-
const listQuery = reactive<I.ListQuery>(props.modelValue || props.listQuery || {})
|
|
62
|
-
|
|
63
|
-
const onChange = (d?: I.ParamsItem) => {
|
|
64
|
-
//清除一遍
|
|
65
|
-
for (let i = 0; i < selectList.value.length; i++) {
|
|
66
|
-
const sitem = selectList.value[i]
|
|
67
|
-
if (!listQuery[sitem.prop] && listQuery[sitem.prop] !== 0) {
|
|
68
|
-
selectList.value.splice(i, 1)
|
|
69
|
-
i--
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
// console.log("selectList", selectList, listQuery)
|
|
73
|
-
if (d) {
|
|
74
|
-
const cur = selectList.value.find((j) => d.prop == j.prop && d.label == j.label)
|
|
75
|
-
if (cur) {
|
|
76
|
-
if (listQuery[cur.prop] === "" || listQuery[cur.prop] === null || listQuery[cur.prop] === undefined) {
|
|
77
|
-
selectList.value.splice(
|
|
78
|
-
selectList.value.findIndex((j) => d.prop == j.prop),
|
|
79
|
-
1,
|
|
80
|
-
)
|
|
81
|
-
} else {
|
|
82
|
-
cur.tagNames = d.tagNames
|
|
83
|
-
}
|
|
84
|
-
} else if (typeof listQuery[d.prop] !== "undefined" && listQuery[d.prop] !== "") {
|
|
85
|
-
selectList.value.push(d)
|
|
86
|
-
}
|
|
87
|
-
emit("search", listQuery, selectList.value)
|
|
88
|
-
return
|
|
89
|
-
}
|
|
90
|
-
emit("search", listQuery, selectList.value)
|
|
91
|
-
}
|
|
92
|
-
const onRemove = () => {
|
|
93
|
-
emit("search", listQuery, selectList.value)
|
|
94
|
-
}
|
|
95
|
-
const getTags = () => {
|
|
96
|
-
selectParams.value.forEach((a) => {
|
|
97
|
-
let i = selectList.value.findIndex((j) => a.prop == j.prop)
|
|
98
|
-
if (!a.external && i == -1 && listQuery[a.prop]) {
|
|
99
|
-
if (a.options && a.options.length) {
|
|
100
|
-
const prop = String(listQuery[a.prop])
|
|
101
|
-
// const propI = prop.indexOf(",")
|
|
102
|
-
let tagNames = a.tagNames || a.options.find((j) => j.value == listQuery[a.prop])?.label
|
|
103
|
-
// 处理多选value的值
|
|
104
|
-
if (!a.tagNames && a.type == "checkbox") {
|
|
105
|
-
let propList = prop.split(",").map((item) => {
|
|
106
|
-
return a?.options?.find((j) => String(j.value) == String(item))?.label
|
|
107
|
-
})
|
|
108
|
-
tagNames = propList.join(" | ")
|
|
109
|
-
}
|
|
110
|
-
selectList.value.push({ ...a, tagNames: tagNames })
|
|
111
|
-
} else if (a.asyncOptions) {
|
|
112
|
-
loadOptions(a.prop).then((res: CurdFormOptionItem[]) => {
|
|
113
|
-
selectList.value.push({
|
|
114
|
-
...a,
|
|
115
|
-
tagNames: a.tagNames || res.find((j) => j.value == listQuery[a.prop])?.label || "",
|
|
116
|
-
})
|
|
117
|
-
})
|
|
118
|
-
} else {
|
|
119
|
-
selectList.value.push(a)
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
})
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
const setItem = (prop: string, paramsItem?: I.ParamsItem) => {
|
|
126
|
-
// 加延时是因为在curdtable那边筛选后,调用setItem时,listQuery更新不及时
|
|
127
|
-
setTimeout(() => {
|
|
128
|
-
let item = paramsItem || selectParams.value.find((a) => a.prop == prop)
|
|
129
|
-
if (!item || item.external) return
|
|
130
|
-
const current = selectList.value.find((a) => a.prop == prop && a.label == item.label)
|
|
131
|
-
if (!current) {
|
|
132
|
-
if (typeof listQuery[prop] !== "undefined" && listQuery[prop] !== "") {
|
|
133
|
-
selectList.value.push({
|
|
134
|
-
...item,
|
|
135
|
-
tagNames: item.tagNames || item.options?.find((j) => j.value == listQuery[prop])?.label,
|
|
136
|
-
})
|
|
137
|
-
}
|
|
138
|
-
} else if (item.options && item.options.length) {
|
|
139
|
-
let tagNames = item.options?.find((j) => j.value == listQuery[prop])?.label
|
|
140
|
-
// 处理多选value的值
|
|
141
|
-
if (!item.tagNames && item.type == "checkbox") {
|
|
142
|
-
let propList = prop.split(",").map((a) => {
|
|
143
|
-
return item?.options?.find((j) => String(j.value) == String(a))?.label
|
|
144
|
-
})
|
|
145
|
-
tagNames = propList.join(" | ")
|
|
146
|
-
}
|
|
147
|
-
current.tagNames = tagNames
|
|
148
|
-
} else if (item.asyncOptions) {
|
|
149
|
-
item.asyncOptions(listQuery, item, tableFilterContext as FormContext).then((res) => {
|
|
150
|
-
current.tagNames = item.tagNames || res.find((j) => j.value == listQuery[prop])?.label
|
|
151
|
-
})
|
|
152
|
-
}
|
|
153
|
-
if ((current && typeof current.tagNames == "undefined") || (current && current.tagNames === "")) {
|
|
154
|
-
selectList.value.splice(
|
|
155
|
-
selectList.value.findIndex((a) => a.prop == prop),
|
|
156
|
-
1,
|
|
157
|
-
)
|
|
158
|
-
}
|
|
159
|
-
})
|
|
160
|
-
}
|
|
161
|
-
//主动赋值
|
|
162
|
-
const setValue = (prop: string, value: unknown) => {
|
|
163
|
-
listQuery[prop] = value
|
|
164
|
-
setItem(prop)
|
|
165
|
-
}
|
|
166
|
-
const state = ref<I.State>({
|
|
167
|
-
isFocus: false,
|
|
168
|
-
})
|
|
169
|
-
const filterExternalRef = ref()
|
|
170
|
-
const loadOptions = (prop: string, option?: unknown) => {
|
|
171
|
-
const current = selectParams.value.find((a) => a.prop == prop)
|
|
172
|
-
if (!current || !current.asyncOptions) return
|
|
173
|
-
if (current.external) {
|
|
174
|
-
return filterExternalRef.value.loadOptions(prop, option)
|
|
175
|
-
}
|
|
176
|
-
return searchRef.value.loadOptions(prop, option)
|
|
177
|
-
}
|
|
178
|
-
const extendContext = {
|
|
179
|
-
loadOptions: loadOptions,
|
|
180
|
-
}
|
|
181
|
-
const clear = () => {
|
|
182
|
-
for (let i = 0; i < selectList.value.length; i++) {
|
|
183
|
-
delete listQuery[selectList.value[i].prop]
|
|
184
|
-
selectList.value.splice(i, 1)
|
|
185
|
-
i--
|
|
186
|
-
}
|
|
187
|
-
emit("search", listQuery, selectList.value)
|
|
188
|
-
}
|
|
189
|
-
// 重新调用selectParams
|
|
190
|
-
const refreshSelectParams = () => {
|
|
191
|
-
if (props.schema || props.selectParams) {
|
|
192
|
-
selectParams.value = deepClone(props.schema || props.selectParams)
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
const getCurrentIndex = () => {
|
|
196
|
-
return searchRef.value && searchRef.value.currentIndex
|
|
197
|
-
}
|
|
198
|
-
//点标签,切换到当前项
|
|
199
|
-
const onTagClick = (item: I.ParamsItem) => {
|
|
200
|
-
const i = selectParams.value.findIndex((a) => a.prop == item.prop && a.label == item.label)
|
|
201
|
-
searchRef.value.setIndex(i)
|
|
202
|
-
}
|
|
203
|
-
const tableFilterContext = reactive<I.TableFilterContext>({
|
|
204
|
-
loadOptions,
|
|
205
|
-
search: () => {
|
|
206
|
-
emit("search", listQuery, selectList.value)
|
|
207
|
-
},
|
|
208
|
-
setValue,
|
|
209
|
-
setOptions: (prop: string, options: CurdFormOptionItem[]) => {
|
|
210
|
-
const current = selectParams.value.find((a) => a.prop == prop)
|
|
211
|
-
if (!current || current.external) return
|
|
212
|
-
current.options = options
|
|
213
|
-
setItem(prop)
|
|
214
|
-
},
|
|
215
|
-
formModel: listQuery,
|
|
216
|
-
components: {},
|
|
217
|
-
change: () => {},
|
|
218
|
-
formRef: undefined,
|
|
219
|
-
})
|
|
220
|
-
watch(
|
|
221
|
-
() => [props.schema, props.selectParams],
|
|
222
|
-
() => {
|
|
223
|
-
refreshSelectParams()
|
|
224
|
-
getTags()
|
|
225
|
-
},
|
|
226
|
-
)
|
|
227
|
-
provide("tableFilter", tableFilterContext)
|
|
228
|
-
provide("state", state)
|
|
229
|
-
provide("selectList", selectList)
|
|
230
|
-
provide("selectParams", selectParams)
|
|
231
|
-
provide("option", props.option)
|
|
232
|
-
defineExpose({ setItem, selectList, loadOptions, clear, refreshSelectParams, getCurrentIndex, listQuery, selectParams })
|
|
233
|
-
onMounted(() => {
|
|
234
|
-
getTags()
|
|
235
|
-
})
|
|
236
|
-
</script>
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div ref="wrapperRef" class="filter-item" style="flex: 1">
|
|
3
|
-
<CurdForm v-if="show" ref="formRef" v-model="query" :form-schema="formSchema" @change="onChange" />
|
|
4
|
-
</div>
|
|
5
|
-
</template>
|
|
6
|
-
<script lang="ts" setup>
|
|
7
|
-
import { inject, type PropType, reactive, ref, type Ref, watch } from "vue"
|
|
8
|
-
import type { FormSchema } from "../../../CurdForm"
|
|
9
|
-
import type { ListQuery } from "../../types"
|
|
10
|
-
import * as I from "../../types"
|
|
11
|
-
|
|
12
|
-
const props = defineProps({
|
|
13
|
-
modelValue: {
|
|
14
|
-
type: Object as PropType<ListQuery>,
|
|
15
|
-
default: () => {
|
|
16
|
-
return {}
|
|
17
|
-
},
|
|
18
|
-
},
|
|
19
|
-
paramsItem: {
|
|
20
|
-
type: Object as PropType<I.ParamsItem>,
|
|
21
|
-
default: () => ({}),
|
|
22
|
-
},
|
|
23
|
-
})
|
|
24
|
-
const emit = defineEmits(["change", "search"])
|
|
25
|
-
|
|
26
|
-
const listQuery = reactive<ListQuery>(props.modelValue)
|
|
27
|
-
const query = defineModel<ListQuery>({} as ListQuery) //ref(Utils.deepClone(props.listQuery))
|
|
28
|
-
const formRef = ref()
|
|
29
|
-
const selectParams = inject<Ref<I.ParamsItem[]>>("selectParams") || ref([])
|
|
30
|
-
const formSchema = ref<FormSchema>({
|
|
31
|
-
formItem: [
|
|
32
|
-
...selectParams.value
|
|
33
|
-
.filter((a) => !a.external)
|
|
34
|
-
.map((a) => {
|
|
35
|
-
a.hidden = props.paramsItem.prop != a.prop
|
|
36
|
-
return a
|
|
37
|
-
}),
|
|
38
|
-
],
|
|
39
|
-
})
|
|
40
|
-
const show = ref(true)
|
|
41
|
-
watch(
|
|
42
|
-
() => props.paramsItem.prop,
|
|
43
|
-
() => {
|
|
44
|
-
show.value = false
|
|
45
|
-
formSchema.value.formItem = selectParams.value
|
|
46
|
-
.filter((a) => !a.external)
|
|
47
|
-
.map((a) => {
|
|
48
|
-
a.hidden = props.paramsItem.prop != a.prop
|
|
49
|
-
return a
|
|
50
|
-
})
|
|
51
|
-
setTimeout(() => {
|
|
52
|
-
show.value = true
|
|
53
|
-
})
|
|
54
|
-
},
|
|
55
|
-
)
|
|
56
|
-
const wrapperRef = ref()
|
|
57
|
-
|
|
58
|
-
const onChange = () => {
|
|
59
|
-
const val = query.value && query.value[props.paramsItem.prop]
|
|
60
|
-
if (props.paramsItem.tableKey && props.paramsItem.tableKey.length && Array.isArray(val)) {
|
|
61
|
-
props.paramsItem.tableKey.forEach((a, i) => {
|
|
62
|
-
listQuery[a] = val[i]
|
|
63
|
-
})
|
|
64
|
-
} else {
|
|
65
|
-
listQuery[props.paramsItem.prop] = val || ""
|
|
66
|
-
}
|
|
67
|
-
emit("search", props.paramsItem)
|
|
68
|
-
}
|
|
69
|
-
const setValue = (prop: string) => {
|
|
70
|
-
if (query.value) listQuery[prop] = query.value[prop]
|
|
71
|
-
}
|
|
72
|
-
const loadOptions = (prop: string, config?: unknown) => {
|
|
73
|
-
return formRef.value.loadOptions(prop, config)
|
|
74
|
-
}
|
|
75
|
-
defineExpose({ setValue, loadOptions })
|
|
76
|
-
</script>
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div v-if="selectList.length" class="filter-tags">
|
|
3
|
-
<div class="tag-title">已筛选</div>
|
|
4
|
-
<div class="tag-list">
|
|
5
|
-
<div v-for="(item, i) in selectList" :key="i" class="tag-item">
|
|
6
|
-
<el-popover ref="popoverRef" trigger="click" placement="bottom-start" :disabled="!['select'].includes(item.type)" popper-class="table-filter-tag-popper" @show="show(i)">
|
|
7
|
-
<template #reference>
|
|
8
|
-
<div class="dropdown-toggle" @click="onClick(item)">
|
|
9
|
-
<div class="label">{{ item.label }}:</div>
|
|
10
|
-
<div class="value">{{ isValue(item) }}</div>
|
|
11
|
-
<div class="action" @click.stop="remove(item, i)">
|
|
12
|
-
<el-icon>
|
|
13
|
-
<CircleCloseFilled />
|
|
14
|
-
</el-icon>
|
|
15
|
-
</div>
|
|
16
|
-
</div>
|
|
17
|
-
</template>
|
|
18
|
-
<div ref="selectRef" class="select-list" @click.stop>
|
|
19
|
-
<TagsSelect ref="tagsSelectRef" v-model="listQuery[item.prop] as number | string | boolean | []" :list-query="listQuery" :params-item="item" @change="onChange" />
|
|
20
|
-
</div>
|
|
21
|
-
</el-popover>
|
|
22
|
-
</div>
|
|
23
|
-
<div class="tag-clear"><el-button type="primary" link @click="clear">清空</el-button></div>
|
|
24
|
-
</div>
|
|
25
|
-
|
|
26
|
-
<slot></slot>
|
|
27
|
-
</div>
|
|
28
|
-
</template>
|
|
29
|
-
<script lang="ts" setup>
|
|
30
|
-
import { CircleCloseFilled } from "@element-plus/icons-vue"
|
|
31
|
-
import { inject, type PropType, ref, type Ref } from "vue"
|
|
32
|
-
import type { ListQuery } from "../../types"
|
|
33
|
-
import * as I from "../../types"
|
|
34
|
-
import TagsSelect from "./containers/TagsSelect.vue"
|
|
35
|
-
const emit = defineEmits(["change", "remove", "itemClick"])
|
|
36
|
-
const props = defineProps({
|
|
37
|
-
listQuery: {
|
|
38
|
-
type: Object as PropType<ListQuery>,
|
|
39
|
-
default: () => {
|
|
40
|
-
return {}
|
|
41
|
-
},
|
|
42
|
-
},
|
|
43
|
-
})
|
|
44
|
-
const visibleMap = ref<Record<string, boolean>>({})
|
|
45
|
-
const listQuery: Ref<ListQuery> = ref(props.listQuery)
|
|
46
|
-
const selectList = inject<Ref<I.ParamsItem[]>>("selectList") || ref([])
|
|
47
|
-
const remove = (row: I.ParamsItem, index: number) => {
|
|
48
|
-
selectList.value.splice(index, 1)
|
|
49
|
-
// listQuery.value[row.prop] = ""
|
|
50
|
-
delete listQuery.value[row.prop]
|
|
51
|
-
emit("remove")
|
|
52
|
-
}
|
|
53
|
-
const clear = () => {
|
|
54
|
-
for (let i = 0; i < selectList.value.length; i++) {
|
|
55
|
-
delete listQuery.value[selectList.value[i].prop]
|
|
56
|
-
selectList.value.splice(i, 1)
|
|
57
|
-
i--
|
|
58
|
-
}
|
|
59
|
-
emit("remove")
|
|
60
|
-
}
|
|
61
|
-
const isValue = (item: I.ParamsItem) => {
|
|
62
|
-
let text = item.tagNames
|
|
63
|
-
let type = item.type
|
|
64
|
-
switch (type) {
|
|
65
|
-
case "time":
|
|
66
|
-
if (item.tableKey && item.tableKey.length) {
|
|
67
|
-
return listQuery?.value[item.tableKey[0]] + " 至 " + listQuery?.value[item.tableKey[1]]
|
|
68
|
-
} else {
|
|
69
|
-
return listQuery?.value[item.prop]
|
|
70
|
-
}
|
|
71
|
-
break
|
|
72
|
-
case "select":
|
|
73
|
-
if (!text) {
|
|
74
|
-
const cur = item.options?.find((a) => a.value == listQuery.value[item.prop])
|
|
75
|
-
if (cur) {
|
|
76
|
-
text = cur.label
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
break
|
|
80
|
-
default:
|
|
81
|
-
return text || listQuery.value[item.prop]
|
|
82
|
-
}
|
|
83
|
-
return text
|
|
84
|
-
}
|
|
85
|
-
const popoverRef = ref()
|
|
86
|
-
const selectRef = ref()
|
|
87
|
-
const tagsSelectRef = ref()
|
|
88
|
-
const show = (i: number) => {
|
|
89
|
-
if (selectList.value[i].type !== "select") return
|
|
90
|
-
|
|
91
|
-
if (tagsSelectRef.value[i] && tagsSelectRef.value[i].focus) tagsSelectRef.value[i].focus()
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
const onChange = (opt: { prop: string; label: string; value: unknown }) => {
|
|
95
|
-
for (let j in visibleMap.value) {
|
|
96
|
-
visibleMap.value[j] = false
|
|
97
|
-
}
|
|
98
|
-
select(
|
|
99
|
-
opt,
|
|
100
|
-
selectList.value.find((a) => a.prop == opt.prop),
|
|
101
|
-
)
|
|
102
|
-
for (let i in popoverRef.value) {
|
|
103
|
-
popoverRef.value[i].hide()
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
const select = (
|
|
107
|
-
option: {
|
|
108
|
-
prop: string
|
|
109
|
-
label: string
|
|
110
|
-
value: unknown
|
|
111
|
-
},
|
|
112
|
-
params?: I.ParamsItem,
|
|
113
|
-
) => {
|
|
114
|
-
if (!params) return
|
|
115
|
-
const val = option.value
|
|
116
|
-
if (params.tableKey && params.tableKey.length && Array.isArray(val)) {
|
|
117
|
-
params.tableKey.forEach((a, i) => {
|
|
118
|
-
listQuery.value[a] = val[i]
|
|
119
|
-
})
|
|
120
|
-
} else {
|
|
121
|
-
listQuery.value[params.prop] = val
|
|
122
|
-
}
|
|
123
|
-
params.tagNames = option.label
|
|
124
|
-
emit("change", params)
|
|
125
|
-
}
|
|
126
|
-
const onClick = (item: I.ParamsItem) => {
|
|
127
|
-
if (["select"].includes(item.type)) {
|
|
128
|
-
return
|
|
129
|
-
}
|
|
130
|
-
emit("itemClick", item)
|
|
131
|
-
}
|
|
132
|
-
</script>
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<el-popover ref="popoverRef" trigger="click" placement="bottom-start" hide-delay="0" popper-class="table-filter-tag-popper">
|
|
3
|
-
<template #reference>
|
|
4
|
-
<div ref="toggleRef" class="table-filter-toggle">
|
|
5
|
-
<span class="current-filter-label">{{ props.selectParams[props.index]?.label }}</span>
|
|
6
|
-
<el-icon><ArrowDown /></el-icon>
|
|
7
|
-
</div>
|
|
8
|
-
</template>
|
|
9
|
-
<div ref="wrapperRef" class="table-filter-List">
|
|
10
|
-
<ul>
|
|
11
|
-
<template v-for="(item, i) in props.selectParams" :key="i">
|
|
12
|
-
<li v-if="!item.external" :class="{ active: props.index == i }" @click="select(i)">{{ item?.label }}</li>
|
|
13
|
-
</template>
|
|
14
|
-
</ul>
|
|
15
|
-
</div>
|
|
16
|
-
</el-popover>
|
|
17
|
-
</template>
|
|
18
|
-
<script lang="ts" setup>
|
|
19
|
-
import { ArrowDown } from "@element-plus/icons-vue"
|
|
20
|
-
import { type PropType, ref } from "vue"
|
|
21
|
-
import * as I from "../../types"
|
|
22
|
-
const props = defineProps({
|
|
23
|
-
selectParams: {
|
|
24
|
-
type: Array as PropType<Array<I.ParamsItem>>,
|
|
25
|
-
default: () => {
|
|
26
|
-
return []
|
|
27
|
-
},
|
|
28
|
-
},
|
|
29
|
-
index: {
|
|
30
|
-
type: Number,
|
|
31
|
-
default: 0,
|
|
32
|
-
},
|
|
33
|
-
})
|
|
34
|
-
const emits = defineEmits(["update:index"])
|
|
35
|
-
const popoverRef = ref()
|
|
36
|
-
const select = (i: number) => {
|
|
37
|
-
popoverRef.value.hide()
|
|
38
|
-
emits("update:index", i)
|
|
39
|
-
}
|
|
40
|
-
</script>
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div v-if="visible" ref="wrapperRef" class="table-filter-type" :style="style" @mousedown.stop>
|
|
3
|
-
<component :is="typeList[params.type || 'input']" v-model="query[params.prop]" :list-query="listQuery" :params-item="params" @change="onChange" @cancel="onCancel" />
|
|
4
|
-
</div>
|
|
5
|
-
</template>
|
|
6
|
-
<script lang="ts" setup>
|
|
7
|
-
import { type PropType, ref, type Ref, watch } from "vue"
|
|
8
|
-
import * as I from "../../types"
|
|
9
|
-
|
|
10
|
-
import * as Utils from "../../../../utils/common"
|
|
11
|
-
import type { ListQuery } from "../../types"
|
|
12
|
-
import TagsSelect from "./containers/TagsSelect.vue"
|
|
13
|
-
|
|
14
|
-
const props = defineProps({
|
|
15
|
-
listQuery: {
|
|
16
|
-
type: Object as PropType<ListQuery>,
|
|
17
|
-
default: () => {
|
|
18
|
-
return {}
|
|
19
|
-
},
|
|
20
|
-
},
|
|
21
|
-
})
|
|
22
|
-
const emit = defineEmits(["click", "change", "cancel", "close"])
|
|
23
|
-
const listQuery: Ref<ListQuery> = ref(props.listQuery)
|
|
24
|
-
const query: Ref<ListQuery> = ref(Utils.deepClone(props.listQuery))
|
|
25
|
-
const params = ref<I.ParamsItem>({} as I.ParamsItem)
|
|
26
|
-
const visible: Ref<boolean> = ref(false)
|
|
27
|
-
const style = ref({})
|
|
28
|
-
const typeList: Record<string, unknown> = { select: TagsSelect }
|
|
29
|
-
|
|
30
|
-
watch(
|
|
31
|
-
() => props.listQuery,
|
|
32
|
-
(val) => {
|
|
33
|
-
let q = Utils.deepClone(val)
|
|
34
|
-
let arr: Array<string> = []
|
|
35
|
-
if (params.value.tableKey && params.value.tableKey.length) {
|
|
36
|
-
params.value.tableKey.forEach((a) => {
|
|
37
|
-
arr.push(listQuery.value[a] + "")
|
|
38
|
-
})
|
|
39
|
-
q[params.value.prop] = arr
|
|
40
|
-
}
|
|
41
|
-
query.value = q
|
|
42
|
-
},
|
|
43
|
-
{ immediate: true, deep: true },
|
|
44
|
-
)
|
|
45
|
-
const wrapperRef = ref()
|
|
46
|
-
const open = (_event: Event, option: I.ParamsItem) => {
|
|
47
|
-
params.value = option
|
|
48
|
-
visible.value = true
|
|
49
|
-
console.log("params", params)
|
|
50
|
-
document.getElementById("app")?.addEventListener("mousedown", close)
|
|
51
|
-
}
|
|
52
|
-
const close = () => {
|
|
53
|
-
visible.value = false
|
|
54
|
-
emit("close")
|
|
55
|
-
}
|
|
56
|
-
defineExpose({ close, open })
|
|
57
|
-
const onChange = (option: ChangeOption) => {
|
|
58
|
-
const val = option.value
|
|
59
|
-
if (params.value.tableKey && params.value.tableKey.length && Array.isArray(val)) {
|
|
60
|
-
params.value.tableKey.forEach((a, i) => {
|
|
61
|
-
listQuery.value[a] = val[i]
|
|
62
|
-
})
|
|
63
|
-
} else {
|
|
64
|
-
listQuery.value[option.prop] = val
|
|
65
|
-
}
|
|
66
|
-
emit("change", option, params.value)
|
|
67
|
-
close()
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
const onCancel = () => {
|
|
71
|
-
close()
|
|
72
|
-
emit("cancel")
|
|
73
|
-
}
|
|
74
|
-
interface ChangeOption {
|
|
75
|
-
prop: string
|
|
76
|
-
value: unknown
|
|
77
|
-
}
|
|
78
|
-
</script>
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="base-select" @click.stop>
|
|
3
|
-
<div v-if="ps.filterable" class="remote-input" @click.stop>
|
|
4
|
-
<el-input ref="selectInputRef" v-model="textModel" placeholder="输入搜索名称" clearable @input="onInput">
|
|
5
|
-
<template #prefix>
|
|
6
|
-
<el-icon class="el-input__icon"><Search /></el-icon>
|
|
7
|
-
</template>
|
|
8
|
-
</el-input>
|
|
9
|
-
</div>
|
|
10
|
-
<div v-loading="loading" class="select-spinner">
|
|
11
|
-
<ul v-if="options && options.length">
|
|
12
|
-
<li v-if="ps.all" :class="{ active: !model }" @click="onChange(allItem)">全部</li>
|
|
13
|
-
<li v-for="(item, index) in options" :key="index" :class="{ active: model === item.value }" @click="onChange(item)">{{ item.label }}</li>
|
|
14
|
-
</ul>
|
|
15
|
-
<el-empty v-else description="暂无数据" :image-size="40" />
|
|
16
|
-
</div>
|
|
17
|
-
</div>
|
|
18
|
-
</template>
|
|
19
|
-
<script lang="ts" setup>
|
|
20
|
-
import { Search } from "@element-plus/icons-vue"
|
|
21
|
-
import { computed, inject, onMounted, type PropType, ref, type Ref } from "vue"
|
|
22
|
-
import type { CurdFormOptionItem } from "../../../../CurdForm"
|
|
23
|
-
import * as I from "../../../types"
|
|
24
|
-
const emit = defineEmits(["update:modelValue", "change"])
|
|
25
|
-
const props = defineProps({
|
|
26
|
-
paramsItem: {
|
|
27
|
-
type: Object as PropType<I.ParamsItem>,
|
|
28
|
-
default: () => {
|
|
29
|
-
return {}
|
|
30
|
-
},
|
|
31
|
-
},
|
|
32
|
-
modelValue: {
|
|
33
|
-
type: [Number, String, Boolean, Array],
|
|
34
|
-
default: "",
|
|
35
|
-
},
|
|
36
|
-
listQuery: {
|
|
37
|
-
type: Object as PropType<I.ListQuery>,
|
|
38
|
-
default: () => {
|
|
39
|
-
return {}
|
|
40
|
-
},
|
|
41
|
-
},
|
|
42
|
-
})
|
|
43
|
-
const model: Ref<string | number | boolean | Array<unknown>> = ref(props.modelValue)
|
|
44
|
-
|
|
45
|
-
const tableFilterContext = inject<I.TableFilterContext>("tableFilter")
|
|
46
|
-
|
|
47
|
-
const paramsItem = ref(props.paramsItem)
|
|
48
|
-
const selectInputRef = ref()
|
|
49
|
-
|
|
50
|
-
onMounted(() => {
|
|
51
|
-
const ps = props.paramsItem && props.paramsItem.props
|
|
52
|
-
if (typeof ps != "function" && ps?.filterable && !paramsItem.value.options?.length) {
|
|
53
|
-
selectInputRef.value.focus()
|
|
54
|
-
tableFilterContext?.loadOptions(paramsItem.value.prop)
|
|
55
|
-
}
|
|
56
|
-
})
|
|
57
|
-
const ps = computed(() => {
|
|
58
|
-
let ps = props.paramsItem && props.paramsItem.props
|
|
59
|
-
if (typeof ps == "function") {
|
|
60
|
-
return ps(props.listQuery, props.paramsItem)
|
|
61
|
-
}
|
|
62
|
-
return ps || {}
|
|
63
|
-
})
|
|
64
|
-
const textModel: Ref<string> = ref("")
|
|
65
|
-
const loading: Ref<boolean> = ref(false)
|
|
66
|
-
const allItem = { label: "全部", value: "" }
|
|
67
|
-
|
|
68
|
-
const options = computed(() => {
|
|
69
|
-
return paramsItem.value.asyncOptions ? props.paramsItem.options : props.paramsItem.options?.filter((a) => a.label.includes(textModel.value))
|
|
70
|
-
})
|
|
71
|
-
|
|
72
|
-
const onChange = (row: CurdFormOptionItem) => {
|
|
73
|
-
paramsItem.value.tagNames = row.label
|
|
74
|
-
model.value = row.value
|
|
75
|
-
textModel.value = ""
|
|
76
|
-
emit("update:modelValue", model.value)
|
|
77
|
-
emit("change", { prop: paramsItem.value.prop, value: model.value, label: row.label })
|
|
78
|
-
}
|
|
79
|
-
const onInput = () => {
|
|
80
|
-
if (paramsItem.value.asyncOptions) {
|
|
81
|
-
paramsItem.value.options = []
|
|
82
|
-
tableFilterContext?.loadOptions(paramsItem.value.prop, { queryString: textModel.value })
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
const focus = () => {
|
|
86
|
-
if (selectInputRef.value) selectInputRef.value.focus()
|
|
87
|
-
}
|
|
88
|
-
defineExpose({ focus })
|
|
89
|
-
</script>
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { defineComponent } from "vue"
|
|
2
|
-
import type { CurdFormOptionItem, FormContext, FormItem, FormItemTypeEmun } from "../CurdForm"
|
|
3
|
-
export interface ParamsItem extends FormItem {
|
|
4
|
-
type?: FormItemTypeEmun | ReturnType<typeof defineComponent>
|
|
5
|
-
tableKey?: Array<string>
|
|
6
|
-
external?: boolean | "left" | "right"
|
|
7
|
-
all?: boolean
|
|
8
|
-
sortIndex?: number // 排序,数字越大越靠前
|
|
9
|
-
tagNames?: string
|
|
10
|
-
}
|
|
11
|
-
export type FilterItem = ParamsItem
|
|
12
|
-
export interface TableFilterContext {
|
|
13
|
-
loadOptions: (prop: string, config?: unknown) => void
|
|
14
|
-
setOptions: (prop: string, options: CurdFormOptionItem[], config?: unknown) => void
|
|
15
|
-
setValue: (prop: string, value: unknown) => void
|
|
16
|
-
search: () => void
|
|
17
|
-
formModel: ListQuery
|
|
18
|
-
components: FormContext["components"]
|
|
19
|
-
change: FormContext["change"]
|
|
20
|
-
formRef?: FormContext["formRef"]
|
|
21
|
-
formSchema?: FormContext["formSchema"]
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export interface ListQuery {
|
|
25
|
-
[key: string]: unknown
|
|
26
|
-
}
|
|
27
|
-
export interface FilterOption {
|
|
28
|
-
formProps: {
|
|
29
|
-
labelWidth?: string | number
|
|
30
|
-
labelPosition?: "left" | "right" | "center" | string
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export interface State {
|
|
35
|
-
isFocus: boolean
|
|
36
|
-
}
|