Toggle navigation
Toggle navigation
This project
Loading...
Sign in
Hooke
/
data-table
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Graphs
Network
Create a new issue
Commits
Issue Boards
Authored by
hookehuyr
2022-11-18 15:42:33 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
e1c91b01f1a0a8ffe924e9513d3b3517aaede485
e1c91b01
1 parent
f6e11638
选择器组件,多行输入框组件调整
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
53 additions
and
17 deletions
src/components/NumberField/index.vue
src/components/PickerField/index.vue
src/components/TextareaField/index.vue
src/components/NumberField/index.vue
View file @
e1c91b0
...
...
@@ -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"
...
...
src/components/PickerField/index.vue
View file @
e1c91b0
...
...
@@ -7,27 +7,51 @@
-->
<template>
<div class="picker-field-page">
<div class="label">{{ item.label }}<span v-if="item.required"> *</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"> *</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>
...
...
src/components/TextareaField/index.vue
View file @
e1c91b0
...
...
@@ -7,21 +7,33 @@
-->
<template>
<div class="textarea-field-page">
<div class="label">{{ item.label }}<span v-if="item.required"> *</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"> *</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>
...
...
Please
register
or
login
to post a comment