1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- import { Button, Picker, PickerColumn } from 'vant';
- import { PropType, defineComponent, onMounted, reactive, watch } from 'vue';
- export default defineComponent({
- name: 'drop-down-modal',
- props: {
- selectValues: {
- type: [String, Number],
- default: null
- },
- columns: {
- type: Array as PropType<PickerColumn>,
- default: () => []
- },
- open: {
- type: Boolean,
- default: false
- }
- },
- emits: ['dropDownClose', 'dropDownConfirm'],
- setup(props, { emit }) {
- const forms = reactive({
- values: [] as any
- });
- onMounted(() => {
- forms.values = [props.selectValues];
- });
- watch(
- () => props.selectValues,
- () => {
- forms.values = [props.selectValues];
- }
- );
- watch(
- () => props.open,
- () => {
- setTimeout(() => {
- forms.values = [props.selectValues];
- }, 100);
- }
- );
- return () => (
- <>
- <Picker
- v-model={forms.values}
- showToolbar={false}
- visibleOptionNum={5}
- columns={props.columns}
- />
- <div class={['btnGroupPopup', 'van-hairline--top']}>
- <Button round onClick={() => emit('dropDownClose')}>
- 取消
- </Button>
- <Button
- type="primary"
- round
- onClick={() => {
- emit('dropDownConfirm', forms.values);
- }}>
- 确定
- </Button>
- </div>
- </>
- );
- }
- });
|