hookehuyr

选择器组件,多行输入框组件调整

......@@ -15,7 +15,7 @@
v-model="item.value"
:name="item.name"
:placeholder="item.component_props.placeholder"
:rules="rules"
:rules="item.rules"
:required="item.component_props.required"
readonly
@touchstart.stop="showKeyboard"
......
......@@ -7,27 +7,51 @@
-->
<template>
<div class="picker-field-page">
<div class="label">{{ item.label }}<span v-if="item.required">&nbsp;*</span></div>
<van-field v-model="item.value" is-link readonly :name="item.key" :required="item.required"
:placeholder="item.placeholder" :rules="item.rules" @click="showPicker = true" />
<div class="label">
{{ item.component_props.label
}}<span v-if="item.component_props.required">&nbsp;*</span>
</div>
<van-field
v-model="item.value"
is-link
readonly
:name="item.key"
:required="item.component_props.required"
:placeholder="item.component_props.placeholder"
:rules="item.rules"
@click="showPicker = true"
/>
<van-popup v-model:show="showPicker" position="bottom">
<van-picker :columns="item.options" @confirm="onConfirm" @cancel="showPicker = false" />
<van-picker
:columns="item.component_props.options"
@confirm="onConfirm"
@cancel="showPicker = false"
/>
</van-popup>
</div>
</template>
<script setup>
const props = defineProps({
item: Object
})
const selectedValues = ref('');
item: Object,
});
onMounted(() => {
props.item.component_props.options = props.item.component_props.options.map((opt) => {
return {
text: opt,
value: opt,
};
});
});
const selectedValues = ref("");
const showPicker = ref(false);
const onConfirm = ({ selectedOptions }) => {
props.item.value = selectedOptions[0]?.value;
showPicker.value = false;
};
</script>
<style lang="less" scoped>
......
......@@ -7,21 +7,33 @@
-->
<template>
<div class="textarea-field-page">
<div class="label">{{ item.label }}<span v-if="item.required">&nbsp;*</span></div>
<van-field v-model="item.value" :name="item.name" :type="item.type" :placeholder="item.placeholder"
:rules="item.rules" :required="item.required" :rows="item.component_props.rows"
autosize :maxlength="item.component_props.maxlength" show-word-limit />
<div class="label">
{{ item.component_props.label
}}<span v-if="item.component_props.required">&nbsp;*</span>
</div>
<van-field
v-model="item.value"
:name="item.name"
:type="item.type"
:placeholder="item.component_props.placeholder"
:rules="item.rules"
:required="item.component_props.required"
:rows="item.component_props.rows"
autosize
:maxlength="item.component_props.maxlength"
show-word-limit
/>
</div>
</template>
<script setup>
const props = defineProps({
item: Object
})
item: Object,
});
</script>
<style lang="less" scoped>
.textarea-field-page {
.textarea-field-page {
.label {
padding: 1rem 1rem 0 1rem;
font-size: 0.9rem;
......@@ -30,5 +42,5 @@ const props = defineProps({
color: red;
}
}
}
}
</style>
......