| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 | 
							- import { VantComponent } from '../common/component';
 
- import { pickerProps } from './shared';
 
- VantComponent({
 
-     classes: ['active-class', 'toolbar-class', 'column-class'],
 
-     props: Object.assign(Object.assign({}, pickerProps), { valueKey: {
 
-             type: String,
 
-             value: 'text',
 
-         }, toolbarPosition: {
 
-             type: String,
 
-             value: 'top',
 
-         }, defaultIndex: {
 
-             type: Number,
 
-             value: 0,
 
-         }, columns: {
 
-             type: Array,
 
-             value: [],
 
-             observer(columns = []) {
 
-                 this.simple = columns.length && !columns[0].values;
 
-                 if (Array.isArray(this.children) && this.children.length) {
 
-                     this.setColumns().catch(() => { });
 
-                 }
 
-             },
 
-         } }),
 
-     beforeCreate() {
 
-         Object.defineProperty(this, 'children', {
 
-             get: () => this.selectAllComponents('.van-picker__column') || [],
 
-         });
 
-     },
 
-     methods: {
 
-         noop() { },
 
-         setColumns() {
 
-             const { data } = this;
 
-             const columns = this.simple ? [{ values: data.columns }] : data.columns;
 
-             const stack = columns.map((column, index) => this.setColumnValues(index, column.values));
 
-             return Promise.all(stack);
 
-         },
 
-         emit(event) {
 
-             const { type } = event.currentTarget.dataset;
 
-             if (this.simple) {
 
-                 this.$emit(type, {
 
-                     value: this.getColumnValue(0),
 
-                     index: this.getColumnIndex(0),
 
-                 });
 
-             }
 
-             else {
 
-                 this.$emit(type, {
 
-                     value: this.getValues(),
 
-                     index: this.getIndexes(),
 
-                 });
 
-             }
 
-         },
 
-         onChange(event) {
 
-             if (this.simple) {
 
-                 this.$emit('change', {
 
-                     picker: this,
 
-                     value: this.getColumnValue(0),
 
-                     index: this.getColumnIndex(0),
 
-                 });
 
-             }
 
-             else {
 
-                 this.$emit('change', {
 
-                     picker: this,
 
-                     value: this.getValues(),
 
-                     index: event.currentTarget.dataset.index,
 
-                 });
 
-             }
 
-         },
 
-         // get column instance by index
 
-         getColumn(index) {
 
-             return this.children[index];
 
-         },
 
-         // get column value by index
 
-         getColumnValue(index) {
 
-             const column = this.getColumn(index);
 
-             return column && column.getValue();
 
-         },
 
-         // set column value by index
 
-         setColumnValue(index, value) {
 
-             const column = this.getColumn(index);
 
-             if (column == null) {
 
-                 return Promise.reject(new Error('setColumnValue: 对应列不存在'));
 
-             }
 
-             return column.setValue(value);
 
-         },
 
-         // get column option index by column index
 
-         getColumnIndex(columnIndex) {
 
-             return (this.getColumn(columnIndex) || {}).data.currentIndex;
 
-         },
 
-         // set column option index by column index
 
-         setColumnIndex(columnIndex, optionIndex) {
 
-             const column = this.getColumn(columnIndex);
 
-             if (column == null) {
 
-                 return Promise.reject(new Error('setColumnIndex: 对应列不存在'));
 
-             }
 
-             return column.setIndex(optionIndex);
 
-         },
 
-         // get options of column by index
 
-         getColumnValues(index) {
 
-             return (this.children[index] || {}).data.options;
 
-         },
 
-         // set options of column by index
 
-         setColumnValues(index, options, needReset = true) {
 
-             const column = this.children[index];
 
-             if (column == null) {
 
-                 return Promise.reject(new Error('setColumnValues: 对应列不存在'));
 
-             }
 
-             const isSame = JSON.stringify(column.data.options) === JSON.stringify(options);
 
-             if (isSame) {
 
-                 return Promise.resolve();
 
-             }
 
-             return column.set({ options }).then(() => {
 
-                 if (needReset) {
 
-                     column.setIndex(0);
 
-                 }
 
-             });
 
-         },
 
-         // get values of all columns
 
-         getValues() {
 
-             return this.children.map((child) => child.getValue());
 
-         },
 
-         // set values of all columns
 
-         setValues(values) {
 
-             const stack = values.map((value, index) => this.setColumnValue(index, value));
 
-             return Promise.all(stack);
 
-         },
 
-         // get indexes of all columns
 
-         getIndexes() {
 
-             return this.children.map((child) => child.data.currentIndex);
 
-         },
 
-         // set indexes of all columns
 
-         setIndexes(indexes) {
 
-             const stack = indexes.map((optionIndex, columnIndex) => this.setColumnIndex(columnIndex, optionIndex));
 
-             return Promise.all(stack);
 
-         },
 
-     },
 
- });
 
 
  |