CJumpSelect 是一个跳转选择组件,用于在表单中提供跨页面的选择功能。点击组件会触发回调函数,开发者可以在回调中实现跳转到选择页面的逻辑,并通过回调接收选择结果。
import { CJumpSelect } from '@components/forms/select';
itemRes
(Object,必填):表单数据资源对象,表单组件内部机制专用placeholder
(String,可选):输入框占位提示文本onPageSelectCall
(Function,必填):跨页选择模式的回调函数,用于处理页面跳转和接收选择结果readOnly
(Boolean,可选):只读模式,默认为 false<template>
<CForm :form="form">
<CFormItem name="department" label="部门">
<CJumpSelect
placeholder="请选择部门"
:onPageSelectCall="handleDepartmentSelect"
/>
</CFormItem>
</CForm>
</template>
<script>
import { CForm, CFormItem } from '@components/forms/form';
import { CJumpSelect } from '@components/forms/select';
export default {
components: {
CForm,
CFormItem,
CJumpSelect
},
data() {
return {
form: {
department: ''
},
// 保存回调函数
selectCallback: null
};
},
methods: {
handleDepartmentSelect(callback) {
if (callback === null) {
// 组件销毁时会传入 null,清除回调
this.selectCallback = null;
return;
}
// 保存回调函数
this.selectCallback = callback;
// 跳转到部门选择页面
this.$router.push({
path: '/pages/department-selector/index'
});
},
// 在部门选择页面选择完成后调用
onDepartmentSelected(department) {
if (this.selectCallback) {
// 调用回调函数,传递选择结果
this.selectCallback({
name: department.name,
value: department.id
});
}
}
}
};
</script>
<CFormItem name="department" label="部门">
<CJumpSelect
placeholder="请选择部门"
:onPageSelectCall="handleDepartmentSelect"
:readOnly="true"
/>
</CFormItem>
onPageSelectCall
回调函数会在组件点击时被调用,并传入一个回调函数,用于接收选择结果name
和 value
两个属性,分别表示选项的显示名称和值onPageSelectCall(null)
,开发者应在回调函数中处理这种情况,清除相关状态