From 7e52402a9d252670f8d06941d6198d1b6edbc1b8 Mon Sep 17 00:00:00 2001 From: xuliangzhan Date: Thu, 3 Jun 2021 21:36:14 +0800 Subject: [PATCH] update ts.d --- examples/api/checkbox.ts | 20 +++++++++++++++++++- examples/views/checkbox/Checkbox.vue | 8 ++++---- helper/vetur/attributes.json | 10 +++++++++- helper/vetur/tags.json | 4 +++- packages/checkbox/src/checkbox.ts | 15 ++++++++++----- types/checkbox-group.d.ts | 8 ++++++-- types/checkbox.d.ts | 6 +++++- types/grid.d.ts | 14 ++++++-------- 8 files changed, 62 insertions(+), 23 deletions(-) diff --git a/examples/api/checkbox.ts b/examples/api/checkbox.ts index 17950e5dc..eeeca1ca7 100644 --- a/examples/api/checkbox.ts +++ b/examples/api/checkbox.ts @@ -11,7 +11,7 @@ const apis = [ name: 'modelValue', descKey: 'app.api.checkbox.desc.value', version: '', - type: 'any', + type: 'string | number | boolean', enum: '', defVal: '', list: [] @@ -69,6 +69,24 @@ const apis = [ enum: '', defVal: 'false', list: [] + }, + { + name: 'checked-value', + desc: '选中时的值', + version: '4.0.21', + type: 'string | number | boolean', + enum: '', + defVal: 'true', + list: [] + }, + { + name: 'unchecked-value', + desc: '未选中时的值', + version: '4.0.21', + type: 'string | number | boolean', + enum: '', + defVal: 'false', + list: [] } ] }, diff --git a/examples/views/checkbox/Checkbox.vue b/examples/views/checkbox/Checkbox.vue index 89b2572f5..25d47f44e 100644 --- a/examples/views/checkbox/Checkbox.vue +++ b/examples/views/checkbox/Checkbox.vue @@ -17,7 +17,7 @@

- +

@@ -63,7 +63,7 @@ export default defineComponent({ value8: false, value9: true, value10: true, - value11: false, + value11: '1', value12: ['3'] }) return { @@ -84,7 +84,7 @@ export default defineComponent({

- +

@@ -113,7 +113,7 @@ export default defineComponent({ value8: false, value9: true, value10: true, - value11: false, + value11: '1', value12: ['3'] }) return { diff --git a/helper/vetur/attributes.json b/helper/vetur/attributes.json index 271a23dea..343e49a70 100644 --- a/helper/vetur/attributes.json +++ b/helper/vetur/attributes.json @@ -1172,7 +1172,7 @@ "description": "是否禁用" }, "vxe-checkbox/model-value": { - "type": "any", + "type": "string | number | boolean", "description": "v-model 绑定值" }, "vxe-checkbox/label": { @@ -1199,6 +1199,14 @@ "type": "boolean", "description": "是否不确定状态" }, + "vxe-checkbox/checked-value": { + "type": "string | number | boolean", + "description": "选中时的值" + }, + "vxe-checkbox/unchecked-value": { + "type": "string | number | boolean", + "description": "未选中时的值" + }, "vxe-checkbox-group/model-value": { "type": "any[]", "description": "v-model 绑定值" diff --git a/helper/vetur/tags.json b/helper/vetur/tags.json index bd7e6c31c..1cb5395d5 100644 --- a/helper/vetur/tags.json +++ b/helper/vetur/tags.json @@ -371,7 +371,9 @@ "size", "disabled", "title", - "indeterminate" + "indeterminate", + "checked-value", + "unchecked-value" ], "description": "复选框" }, diff --git a/packages/checkbox/src/checkbox.ts b/packages/checkbox/src/checkbox.ts index 0d3856cc4..91dac1038 100644 --- a/packages/checkbox/src/checkbox.ts +++ b/packages/checkbox/src/checkbox.ts @@ -9,10 +9,12 @@ import { VxeCheckboxConstructor, VxeCheckboxGroupConstructor, VxeCheckboxEmits, export default defineComponent({ name: 'VxeCheckbox', props: { - modelValue: Boolean as PropType, + modelValue: [String, Number, Boolean] as PropType, label: { type: [String, Number] as PropType, default: null }, indeterminate: Boolean as PropType, title: [String, Number] as PropType, + checkedValue: { type: [String, Number, Boolean] as PropType, default: true }, + uncheckedValue: { type: [String, Number, Boolean] as PropType, default: false }, content: [String, Number] as PropType, disabled: Boolean as PropType, size: { type: String as PropType, default: () => GlobalConfig.checkbox.size || GlobalConfig.size } @@ -43,18 +45,21 @@ export default defineComponent({ }) const computeChecked = computed(() => { - return $xecheckboxgroup ? XEUtils.includes($xecheckboxgroup.props.modelValue, props.label) : props.modelValue + return $xecheckboxgroup ? XEUtils.includes($xecheckboxgroup.props.modelValue, props.label) : props.modelValue === props.checkedValue }) const changeEvent = (evnt: Event & { target: { checked: boolean } }) => { + const { checkedValue, uncheckedValue } = props const isDisabled = computeDisabled.value if (!isDisabled) { const checked = evnt.target.checked + const value = checked ? checkedValue : uncheckedValue + const params = { checked, value, label: props.label } if ($xecheckboxgroup) { - $xecheckboxgroup.handleChecked({ checked, label: props.label }, evnt) + $xecheckboxgroup.handleChecked(params, evnt) } else { - emit('update:modelValue', checked) - checkboxMethods.dispatchEvent('change', { checked, label: props.label }, evnt) + emit('update:modelValue', value) + checkboxMethods.dispatchEvent('change', params, evnt) } } } diff --git a/types/checkbox-group.d.ts b/types/checkbox-group.d.ts index 20122b622..9a720a71d 100644 --- a/types/checkbox-group.d.ts +++ b/types/checkbox-group.d.ts @@ -1,6 +1,6 @@ import { SetupContext, RenderFunction, ComponentPublicInstance } from 'vue' import { VXEComponent, VxeComponentBase, SizeType, VxeEvent, ValueOf } from './component' -import { VxeCheckboxEvents } from './checkbox' +import { VxeCheckboxEvents, VxeCheckboxPropTypes } from './checkbox' /** * 组件 - 复选框组 @@ -40,7 +40,11 @@ export interface CheckboxGroupMethods { export interface VxeCheckboxGroupMethods extends CheckboxGroupMethods { } export interface CheckboxGroupPrivateMethods { - handleChecked(params: { checked: boolean, label: any }, evnt: Event): void; + handleChecked(params: { + checked: boolean; + value: VxeCheckboxPropTypes.ModelValue; + label: VxeCheckboxPropTypes.Label; + }, evnt: Event): void; } export interface VxeCheckboxGroupPrivateMethods extends CheckboxGroupPrivateMethods { } diff --git a/types/checkbox.d.ts b/types/checkbox.d.ts index 2db6f4803..9c6febf19 100644 --- a/types/checkbox.d.ts +++ b/types/checkbox.d.ts @@ -33,6 +33,8 @@ export type VxeCheckboxProps = { * 原生 title 属性 */ title?: VxeCheckboxPropTypes.Title; + checkedValue?: VxeCheckboxPropTypes.CheckedValue; + uncheckedValue?: VxeCheckboxPropTypes.UncheckedValue; /** * 内容 */ @@ -45,10 +47,12 @@ export type VxeCheckboxProps = { export namespace VxeCheckboxPropTypes { export type Size = SizeType; - export type ModelValue = boolean; + export type ModelValue = string | number | boolean; export type Label = string | number; export type Indeterminate = boolean; export type Title = string | number; + export type CheckedValue = string | number | boolean; + export type UncheckedValue = string | number | boolean; export type Content = string | number; export type Disabled = boolean; } diff --git a/types/grid.d.ts b/types/grid.d.ts index 251d69a42..df12cb1b5 100644 --- a/types/grid.d.ts +++ b/types/grid.d.ts @@ -148,6 +148,7 @@ export namespace VxeGridPropTypes { export interface PagerOpts extends PagerConfig { } interface ProxyAjaxQueryPageParams { + total: number; pageSize: number; currentPage: number; } @@ -159,17 +160,12 @@ export namespace VxeGridPropTypes { property: string; } - interface ProxyAjaxQueryFiltersParams { - field: string; - property: string; - values: any[]; - } - interface ProxyAjaxQueryParams { + $grid: VxeGridConstructor; page: ProxyAjaxQueryPageParams; sort: ProxyAjaxQuerySortCheckedParams; sorts: ProxyAjaxQuerySortCheckedParams[]; - filters: ProxyAjaxQueryFiltersParams[]; + filters: VxeTableDefines.FilterCheckedParams[]; form: any; } @@ -178,18 +174,20 @@ export namespace VxeGridPropTypes { $grid: VxeGridConstructor; sort: ProxyAjaxQuerySortCheckedParams; sorts: ProxyAjaxQuerySortCheckedParams[]; - filters: ProxyAjaxQueryFiltersParams[]; + filters: VxeTableDefines.FilterCheckedParams[]; form: any; options: any; } interface ProxyAjaxDeleteParams { + $grid: VxeGridConstructor; body: { removeRecords: any[]; } } interface ProxyAjaxSaveParams { + $grid: VxeGridConstructor; body: { insertRecords: any[]; updateRecords: any[];