diff --git a/src/cascader/cascader.en-US.md b/src/cascader/cascader.en-US.md
index 5fe0241e8..8d7306d4b 100644
--- a/src/cascader/cascader.en-US.md
+++ b/src/cascader/cascader.en-US.md
@@ -15,6 +15,7 @@ title | String / Slot / Function | - | Typescript:`string \| TNode`。[see mor
value | String / Number | - | `v-model` and `v-model:value` is supported | N
defaultValue | String / Number | - | uncontrolled property | N
visible | Boolean | false | \- | N
+checkStrictly | Boolean | false | \- | N
placeholder | String / Slot / Function | - | Typescript:`string \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-mobile-vue/blob/develop/src/common.ts) | N
onChange | Function | | Typescript:`(value: string \| number, selectedOptions: string[]) => void`
| N
onClose | Function | | Typescript:`(trigger: TriggerSource) => void`
[see more ts definition](https://github.com/Tencent/tdesign-mobile-vue/tree/develop/src/cascader/type.ts)。
`type TriggerSource = 'overlay' \| 'close-btn' \| 'finish'`
| N
diff --git a/src/cascader/cascader.md b/src/cascader/cascader.md
index a1909c90a..571d66189 100644
--- a/src/cascader/cascader.md
+++ b/src/cascader/cascader.md
@@ -14,6 +14,7 @@ title | String / Slot / Function | - | 标题。TS 类型:`string \| TNode`。
value | String / Number | - | 选项值。支持语法糖 `v-model` 或 `v-model:value` | N
defaultValue | String / Number | - | 选项值。非受控属性 | N
visible | Boolean | false | 是否展示 | N
+checkStrictly | Boolean | false | 父子节点选中状态不再关联,可各自选中或取消 | N
placeholder | String / Slot / Function | 选择选项 | 未选中时的提示文案。TS 类型:`string \| TNode`。[通用类型定义](https://github.com/Tencent/tdesign-mobile-vue/blob/develop/src/common.ts) | N
onChange | Function | | TS 类型:`(value: string \| number, selectedOptions: string[]) => void`
值发生变更时触发 | N
onClose | Function | | TS 类型:`(trigger: TriggerSource) => void`
关闭时触发。[详细类型定义](https://github.com/Tencent/tdesign-mobile-vue/tree/develop/src/cascader/type.ts)。
`type TriggerSource = 'overlay' \| 'close-btn' \| 'finish'`
| N
diff --git a/src/cascader/cascader.vue b/src/cascader/cascader.vue
index dfd08b851..3ffe200e4 100644
--- a/src/cascader/cascader.vue
+++ b/src/cascader/cascader.vue
@@ -266,7 +266,24 @@ export default defineComponent({
close('overlay');
};
+ const onCloseChange = () => {
+ if (!stepIndex.value) {
+ setCascaderValue('', []);
+ } else {
+ const item = items[stepIndex.value - 1][selectedIndexes[stepIndex.value - 1]];
+
+ setCascaderValue(
+ item[(keys as Ref).value?.value ?? 'value'],
+ items.slice(0, stepIndex.value).map((item, index) => toRaw(item?.[selectedIndexes[index]])),
+ );
+ }
+ };
+
const onClose = () => {
+ if (props.checkStrictly) {
+ onCloseChange();
+ }
+
open.value = false;
close('close-btn');
};
diff --git a/src/cascader/props.ts b/src/cascader/props.ts
index 67c8f6354..dedacc5be 100644
--- a/src/cascader/props.ts
+++ b/src/cascader/props.ts
@@ -59,6 +59,11 @@ export default {
},
/** 是否展示 */
visible: Boolean,
+ /** 父子节点选中状态不再关联,可各自选中或取消 */
+ checkStrictly: {
+ type: Boolean,
+ default: false,
+ },
/** 值发生变更时触发 */
onChange: Function as PropType,
/** 关闭时触发 */