"use strict"; const common_vendor = require("../../../../common/vendor.js"); const _sfc_main = { name: "u-picker", mixins: [common_vendor.mpMixin, common_vendor.mixin, common_vendor.props$20], data() { return { // 上一次选择的列索引 lastIndex: [], // 索引值 ,对应picker-view的value innerIndex: [], // 各列的值 innerColumns: [], // 上一次的变化列索引 columnIndex: 0 }; }, watch: { // 监听默认索引的变化,重新设置对应的值 defaultIndex: { immediate: true, handler(n) { this.setIndexs(n, true); } }, // 监听columns参数的变化 columns: { immediate: true, deep: true, handler(n) { this.setColumns(n); } } }, emits: ["close", "cancel", "confirm", "change"], methods: { // 获取item需要显示的文字,判别为对象还是文本 getItemText(item) { if (common_vendor.index.$u.test.object(item)) { return item[this.keyName]; } else { return item; } }, // 关闭选择器 closeHandler() { if (this.closeOnClickOverlay) { this.$emit("close"); } }, // 点击工具栏的取消按钮 cancel() { this.$emit("cancel"); }, // 点击工具栏的确定按钮 confirm() { this.$emit("confirm", { indexs: this.innerIndex, value: this.innerColumns.map((item, index) => item[this.innerIndex[index]]), values: this.innerColumns }); }, // 选择器某一列的数据发生变化时触发 changeHandler(e) { const { value } = e.detail; let index = 0, columnIndex = 0; for (let i = 0; i < value.length; i++) { let item = value[i]; if (item !== (this.lastIndex[i] || 0)) { columnIndex = i; index = item; break; } } this.columnIndex = columnIndex; const values = this.innerColumns; this.setLastIndex(value); this.setIndexs(value); this.$emit("change", { value: this.innerColumns.map((item, index2) => item[value[index2]]), index, indexs: value, // values为当前变化列的数组内容 values, columnIndex }); }, // 设置index索引,此方法可被外部调用设置 setIndexs(index, setLastIndex) { this.innerIndex = common_vendor.index.$u.deepClone(index); if (setLastIndex) { this.setLastIndex(index); } }, // 记录上一次的各列索引位置 setLastIndex(index) { this.lastIndex = common_vendor.index.$u.deepClone(index); }, // 设置对应列选项的所有值 setColumnValues(columnIndex, values) { this.innerColumns.splice(columnIndex, 1, values); let tmpIndex = common_vendor.index.$u.deepClone(this.innerIndex); for (let i = 0; i < this.innerColumns.length; i++) { if (i > this.columnIndex) { tmpIndex[i] = 0; } } this.setIndexs(tmpIndex); }, // 获取对应列的所有选项 getColumnValues(columnIndex) { (async () => { await common_vendor.index.$u.sleep(); })(); return this.innerColumns[columnIndex]; }, // 设置整体各列的columns的值 setColumns(columns) { console.log(columns); this.innerColumns = common_vendor.index.$u.deepClone(columns); if (this.innerIndex.length === 0) { this.innerIndex = new Array(columns.length).fill(0); } }, // 获取各列选中值对应的索引 getIndexs() { return this.innerIndex; }, // 获取各列选中的值 getValues() { (async () => { await common_vendor.index.$u.sleep(); })(); return this.innerColumns.map((item, index) => item[this.innerIndex[index]]); } } }; if (!Array) { const _easycom_u_toolbar2 = common_vendor.resolveComponent("u-toolbar"); const _easycom_u_loading_icon2 = common_vendor.resolveComponent("u-loading-icon"); const _easycom_u_popup2 = common_vendor.resolveComponent("u-popup"); (_easycom_u_toolbar2 + _easycom_u_loading_icon2 + _easycom_u_popup2)(); } const _easycom_u_toolbar = () => "../u-toolbar/u-toolbar.js"; const _easycom_u_loading_icon = () => "../u-loading-icon/u-loading-icon.js"; const _easycom_u_popup = () => "../u-popup/u-popup.js"; if (!Math) { (_easycom_u_toolbar + _easycom_u_loading_icon + _easycom_u_popup)(); } function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { return common_vendor.e({ a: _ctx.showToolbar }, _ctx.showToolbar ? { b: common_vendor.o($options.cancel), c: common_vendor.o($options.confirm), d: common_vendor.p({ cancelColor: _ctx.cancelColor, confirmColor: _ctx.confirmColor, cancelText: _ctx.cancelText, confirmText: _ctx.confirmText, title: _ctx.title }) } : {}, { e: common_vendor.f($data.innerColumns, (item, index, i0) => { return common_vendor.e({ a: _ctx.$u.test.array(item) }, _ctx.$u.test.array(item) ? { b: common_vendor.f(item, (item1, index1, i1) => { return { a: common_vendor.t($options.getItemText(item1)), b: index1, c: index1 === $data.innerIndex[index] ? "bold" : "normal" }; }), c: _ctx.$u.addUnit(_ctx.itemHeight), d: _ctx.$u.addUnit(_ctx.itemHeight) } : {}, { e: index }); }), f: `height: ${_ctx.$u.addUnit(_ctx.itemHeight)}`, g: $data.innerIndex, h: _ctx.immediateChange, i: `${_ctx.$u.addUnit(_ctx.visibleItemCount * _ctx.itemHeight)}`, j: common_vendor.o((...args) => $options.changeHandler && $options.changeHandler(...args)), k: _ctx.loading }, _ctx.loading ? { l: common_vendor.p({ mode: "circle" }) } : {}, { m: common_vendor.o($options.closeHandler), n: common_vendor.p({ show: _ctx.show }) }); } const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-1500ce68"], ["__file", "F:/兴元/开门柜项目/平台端管理系统小程序/node_modules/uview-plus/components/u-picker/u-picker.vue"]]); wx.createComponent(Component);