|                                                                                                                                                                         |  | <template>	<view class="uv-drop-down-item" @click="clickHandler">		<uv-text :text="label" :size="getTextStyle.size" :color="getTextStyle.color" lines="1" :custom-style="{marginRight: '10rpx',maxWidth:'200rpx'}"></uv-text>		<uv-icon :name="getDownIcon.name" :size="getDownIcon.size" :color="getDownIcon.color" v-if="[1,'1'].indexOf(type)==-1"></uv-icon>	</view></template><script>	import mpMixin from '@/uni_modules/uv-ui-tools/libs/mixin/mpMixin.js';	import mixin from '@/uni_modules/uv-ui-tools/libs/mixin/mixin.js';	/**	 * DropDown 下拉框	 * @description 下拉筛选	 * @tutorial https://ext.dcloud.net.cn/plugin?name=uv-drop-down
	 * @property {String | Number} name 字段标识	 * @property {String | Number} type 类型 1 没有筛选项,直接进行选中和不选中  2 有多个选项	 * @property {String | Number} label 筛选项的文本	 * @property {Boolean} isDrop 该项是否打开	 */	export default {		name: 'uv-drop-down-item',		mixins: [mpMixin, mixin],		emits: ['click'],		props: {			name: {				type: [String, Number],				default: ''			},			// 类型 1 没有筛选项,直接进行选中和不选中  2 有多个选项
			type: {				type: [String, Number],				default: '2'			},			// 筛选的文本
			label: {				type: [String],				default: ''			},			// 筛选值
			value: {				type: [String, Number, null],				default: ''			},			// 是否下拉菜单打开
			isDrop: {				type: Boolean,				default: false			}		},		data() {			return {				parentData: {					defaultValue: [0, '0', 'all'],					textSize: '30rpx',					textColor: '#333',					textActiveSize: '30rpx',					textActiveColor: '#3c9cff',					extraIcon: {},					extraActiveIcon: {},					sign: '',					clickHandler: Function				},				active: false,				isDroped: false,				elId: ''			}		},		watch: {			isDrop: {				handler(newVal) {					this.isDroped = newVal;				},				immediate: true			},			value: {				handler(newVal) {					this.$nextTick(()=>{						this.active = this.parentData.defaultValue.indexOf(newVal) == -1;					})				},				immediate: true			}		},		computed: {			getDownIcon() {				const style = {					size: '30rpx',					color: '#333',					...this.parentData.extraIcon				}				if (this.active || this.isDroped) {					style.color = this.parentData.extraActiveIcon?.color ? this.parentData.extraActiveIcon?.color : '#3c9cff';					style.size = this.parentData.extraActiveIcon?.size ? this.parentData.extraActiveIcon?.size : '30rpx';				}				if (this.isDroped) {					style.name = this.parentData.extraActiveIcon?.name;				}				return style;			},			getTextStyle() {				const style = {					size: this.parentData.textSize,					color: this.parentData.textColor				};				if (this.active || this.isDroped) {					style.size = this.parentData.textActiveSize;					style.color = this.parentData.textActiveColor;				}				return style;			}		},		created() {			this.init();		},		methods: {			init() {				this.elId = this.$uv.guid();				this.getParentData('uv-drop-down');				if (!this.parent) {					this.$uv.error('uv-drop-down必须搭配uv-drop-down-item组件使用');				}				uni.$on('HANDLE_DROPDOWN_ONE', id => {					if (this.isDroped && this.elId != id) {						this.isDroped = false;					}				})				uni.$on(`${this.parentData.sign}_CLOSEPOPUP`, async () => {					if (this.isDroped) {						this.isDroped = false;					}				})			},			async clickHandler() {				let data = {};				uni.$emit('HANDLE_DROPDOWN_ONE', this.elId);				switch (+this.type) {					case 1:						this.active = !this.active;						data = {							name: this.name,							active: this.active,							type: this.type						};						break;					case 2:						this.isDroped = !this.isDroped;						data = {							name: this.name,							active: this.isDroped,							type: this.type						};						break;				}				this.parentData.clickHandler(data);				this.$emit('click', data);				uni.$emit(`${this.parentData.sign}_CLICKMENU`, {					show: +this.type > 1 && this.isDroped				});			}		}	}</script><style scoped lang="scss">	@import '@/uni_modules/uv-ui-tools/libs/css/components.scss';	.uv-drop-down-item {		@include flex;		align-items: center;		padding: 20rpx;	}</style>
 |