根据uniapp调整工程结构
This commit is contained in:
80
components/AiTextarea.vue
Normal file
80
components/AiTextarea.vue
Normal file
@@ -0,0 +1,80 @@
|
||||
<template>
|
||||
<section class="AiTextarea" :class="{border}">
|
||||
<u-input type="textarea" v-bind="$attrs" :value="value" :maxlength="maxlength"
|
||||
@input="handleInput" :disabled="disabled"/>
|
||||
<div class="bottomBar">
|
||||
<div class="leftPane">
|
||||
<slot name="bar"/>
|
||||
</div>
|
||||
<div v-if="!!maxlength">{{ value.length }}/{{ maxlength }}</div>
|
||||
</div>
|
||||
</section>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
export default {
|
||||
name: "AiTextarea",
|
||||
model: {
|
||||
prop: "value",
|
||||
event: "change"
|
||||
},
|
||||
props: {
|
||||
value: {default: ""},
|
||||
maxlength: {default: 0},
|
||||
border: Boolean,
|
||||
disabled: Boolean
|
||||
},
|
||||
methods: {
|
||||
handleInput(v) {
|
||||
this.$emit('change', v)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.AiTextarea {
|
||||
width: 100%;
|
||||
position: relative;
|
||||
|
||||
&.border {
|
||||
::v-deep textarea {
|
||||
border-radius: 4px;
|
||||
border: 1px solid #e2e1e1;
|
||||
padding: 16px 16px 36px;
|
||||
box-sizing: border-box;
|
||||
|
||||
}
|
||||
|
||||
.bottomBar {
|
||||
position: absolute;
|
||||
bottom: 8px;
|
||||
right: 16px;
|
||||
}
|
||||
|
||||
::v-deep .u-input__right-icon {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
right: 16px;
|
||||
transform: translateY(-50%);
|
||||
}
|
||||
}
|
||||
|
||||
.bottomBar {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
min-height: 36px;
|
||||
color: #999999;
|
||||
|
||||
.leftPane {
|
||||
display: flex;
|
||||
|
||||
& > * + * {
|
||||
margin-left: 32px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user