Files
rcs5.0_new/packages/rcs_5.0/src/views/demos/examples/input.vue
T

599 lines
18 KiB
Vue
Raw Normal View History

2025-05-19 17:29:51 +08:00
<template>
<div class="content">
<e-row :gutter="24">
<!-- 基本用法 -->
<e-col
:span="12"
class="box-card"
>
<e-card shadow="always">
<div
slot="header"
class="clearfix"
>
<span>基本用法</span>
</div>
<div>
<e-input
v-model="input"
placeholder="请输入内容"
/>
</div>
</e-card>
</e-col>
<!-- 禁用状态 -->
<e-col
:span="12"
class="box-card"
>
<e-card shadow="always">
<div
slot="header"
class="clearfix"
>
<span>禁用状态</span>
</div>
<div>
<e-input
v-model="input2"
placeholder="请输入内容"
:disabled="true"
/>
</div>
</e-card>
</e-col>
<!-- 可清空 -->
<e-col
:span="12"
class="box-card"
>
<e-card shadow="always">
<div
slot="header"
class="clearfix"
>
<span>可清空</span>
</div>
<div>
<e-input
v-model="input3"
placeholder="请输入内容"
clearable
/>
</div>
</e-card>
</e-col>
<!-- 密码框 -->
<e-col
:span="12"
class="box-card"
>
<e-card shadow="always">
<div
slot="header"
class="clearfix"
>
<span>密码框</span>
</div>
<div>
<e-input
v-model="input4"
placeholder="请输入密码"
show-password
/>
</div>
</e-card>
</e-col>
<!-- 文本域 -->
<e-col
:span="24"
class="box-card"
>
<e-card shadow="always">
<div
slot="header"
class="clearfix"
>
<span>文本域</span>
</div>
<div>
<e-input
v-model="textarea"
type="textarea"
:rows="2"
placeholder="请输入内容"
/>
</div>
</e-card>
</e-col>
<!-- icon 的输入框 -->
<e-col
:span="24"
class="box-card"
>
<e-card shadow="always">
<div
slot="header"
class="clearfix"
>
<span> icon 的输入框</span>
</div>
<div>
<div class="demo-input-suffix">
属性方式
<e-input
v-model="input5"
placeholder="请选择日期"
suffix-icon="el-icon-date"
/>
<e-input
v-model="input6"
placeholder="请输入内容"
prefix-icon="el-icon-search"
/>
</div>
<div class="demo-input-suffix">
slot 方式
<e-input
v-model="input7"
placeholder="请选择日期"
>
<i
slot="suffix"
class="e-input__icon el-icon-date"
/>
</e-input>
<e-input
v-model="input8"
placeholder="请输入内容"
>
<i
slot="prefix"
class="e-input__icon el-icon-search"
/>
</e-input>
</div>
</div>
</e-card>
</e-col>
<!-- 可自适应文本高度的文本域 -->
<e-col
:span="24"
class="box-card"
>
<e-card shadow="always">
<div
slot="header"
class="clearfix"
>
<span>可自适应文本高度的文本域</span>
</div>
<div>
<e-input
v-model="textarea1"
type="textarea"
autosize
placeholder="请输入内容"
/>
<div style="margin: 20px 0;" />
<e-input
v-model="textarea2"
type="textarea"
:autosize="{ minRows: 2, maxRows: 4}"
placeholder="请输入内容"
/>
</div>
</e-card>
</e-col>
<!-- 复合型输入框 -->
<e-col
:span="24"
class="box-card"
>
<e-card shadow="always">
<div
slot="header"
class="clearfix"
>
<span>复合型输入框</span>
</div>
<div>
<div>
<e-input
v-model="input9"
placeholder="请输入内容"
>
<template slot="prepend">Http://</template>
</e-input>
</div>
<div style="margin-top: 15px;">
<e-input
v-model="input10"
placeholder="请输入内容"
>
<template slot="append">.com</template>
</e-input>
</div>
<div style="margin-top: 15px;">
<e-input
v-model="input11"
placeholder="请输入内容"
class="input-with-select"
>
<e-select
slot="prepend"
v-model="select"
placeholder="请选择"
>
<e-option
label="餐厅名"
value="1"
/>
<e-option
label="订单号"
value="2"
/>
<e-option
label="用户电话"
value="3"
/>
</e-select>
<e-button
slot="append"
icon="el-icon-search"
/>
</e-input>
</div>
</div>
</e-card>
</e-col>
<!-- 尺寸 -->
<e-col
:span="24"
class="box-card"
>
<e-card shadow="always">
<div
slot="header"
class="clearfix"
>
<span>尺寸</span>
</div>
<div>
<div class="demo-input-size">
<div class="block">
<e-input
v-model="input12"
placeholder="请输入内容"
suffix-icon="el-icon-date"
/>
</div>
<div class="block">
<e-input
v-model="input13"
size="medium"
placeholder="请输入内容"
suffix-icon="el-icon-date"
/>
</div>
<div class="block">
<e-input
v-model="input14"
size="small"
placeholder="请输入内容"
suffix-icon="el-icon-date"
/>
</div>
<div class="block">
<e-input
v-model="input15"
size="mini"
placeholder="请输入内容"
suffix-icon="el-icon-date"
/>
</div>
</div>
</div>
</e-card>
</e-col>
<!-- 带输入建议 -->
<e-col
:span="24"
class="box-card"
>
<e-card shadow="always">
<div
slot="header"
class="clearfix"
>
<span>带输入建议</span>
</div>
<div>
<e-row class="demo-autocomplete">
<e-col :span="12">
<div class="sub-title">激活即列出输入建议</div>
<e-autocomplete
v-model="state1"
class="inline-input"
:fetch-suggestions="querySearch"
placeholder="请输入内容"
@select="handleSelect"
/>
</e-col>
<e-col :span="12">
<div class="sub-title">输入后匹配输入建议</div>
<e-autocomplete
v-model="state2"
class="inline-input"
:fetch-suggestions="querySearch"
placeholder="请输入内容"
:trigger-on-focus="false"
@select="handleSelect"
/>
</e-col>
</e-row>
</div>
</e-card>
</e-col>
<!-- 自定义模板 -->
<e-col
:span="12"
class="box-card"
>
<e-card shadow="always">
<div
slot="header"
class="clearfix"
>
<span>自定义模板</span>
</div>
<div>
<e-autocomplete
v-model="state"
popper-class="my-autocomplete"
:fetch-suggestions="querySearch"
placeholder="请输入内容"
@select="handleSelect"
>
<i
slot="suffix"
class="el-icon-edit e-input__icon"
@click="handleIconClick"
/>
<template slot-scope="{ item }">
<div class="name">{{ item.value }}</div>
<span class="addr">{{ item.address }}</span>
</template>
</e-autocomplete>
</div>
</e-card>
</e-col>
<!-- 远程搜索 -->
<e-col
:span="12"
class="box-card"
>
<e-card shadow="always">
<div
slot="header"
class="clearfix"
>
<span>远程搜索</span>
</div>
<div>
<e-autocomplete
v-model="state"
:fetch-suggestions="querySearchAsync"
placeholder="请输入内容"
@select="handleSelect"
/>
</div>
</e-card>
</e-col>
<!-- 输入长度限制 -->
<e-col
:span="24"
class="box-card"
>
<e-card shadow="always">
<div
slot="header"
class="clearfix"
>
<span>输入长度限制</span>
</div>
<div>
<e-input
v-model="text"
type="text"
placeholder="请输入内容"
maxlength="10"
show-word-limit
/>
<div style="margin: 20px 0;" />
<e-input
v-model="textarea"
type="textarea"
placeholder="请输入内容"
maxlength="30"
show-word-limit
/>
</div>
</e-card>
</e-col>
</e-row>
</div>
</template>
<script>
export default {
components: {},
data() {
return {
input: '',
input2: '',
input3: '',
input4: '',
input5: '',
input6: '',
input7: '',
input8: '',
textarea: '',
textarea1: '',
textarea2: '',
input9: '',
input10: '',
input11: '',
select: '',
input12: '',
input13: '',
input14: '',
input15: '',
restaurants: [],
state1: '',
state2: '',
state: '',
timeout: null,
text: '',
textarea: '',
};
},
mounted() {
this.restaurants = this.loadAll();
},
methods: {
querySearch(queryString, cb) {
var restaurants = this.restaurants;
var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants;
// 调用 callback 返回建议列表的数据
cb(results);
},
createFilter(queryString) {
return (restaurant) => {
return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0);
};
},
querySearchAsync(queryString, cb) {
var restaurants = this.restaurants;
var results = queryString ? restaurants.filter(this.createStateFilter(queryString)) : restaurants;
clearTimeout(this.timeout);
this.timeout = setTimeout(() => {
cb(results);
}, 3000 * Math.random());
},
createStateFilter(queryString) {
return (state) => {
return (state.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0);
};
},
handleIconClick(ev) {
console.log(ev);
},
loadAll() {
return [
{ 'value': '三全鲜食(北新泾店)', 'address': '长宁区新渔路144号' },
{ 'value': 'Hot honey 首尔炸鸡(仙霞路)', 'address': '上海市长宁区淞虹路661号' },
{ 'value': '新旺角茶餐厅', 'address': '上海市普陀区真北路988号创邑金沙谷6号楼113' },
{ 'value': '泷千家(天山西路店)', 'address': '天山西路438号' },
{ 'value': '胖仙女纸杯蛋糕(上海凌空店)', 'address': '上海市长宁区金钟路968号1幢18号楼一层商铺18-101' },
{ 'value': '贡茶', 'address': '上海市长宁区金钟路633号' },
{ 'value': '豪大大香鸡排超级奶爸', 'address': '上海市嘉定区曹安公路曹安路1685号' },
{ 'value': '茶芝兰(奶茶,手抓饼)', 'address': '上海市普陀区同普路1435号' },
{ 'value': '十二泷町', 'address': '上海市北翟路1444弄81号B幢-107' },
{ 'value': '星移浓缩咖啡', 'address': '上海市嘉定区新郁路817号' },
{ 'value': '阿姨奶茶/豪大大', 'address': '嘉定区曹安路1611号' },
{ 'value': '新麦甜四季甜品炸鸡', 'address': '嘉定区曹安公路2383弄55号' },
{ 'value': 'Monica摩托主题咖啡店', 'address': '嘉定区江桥镇曹安公路2409号1F2383弄62号1F' },
{ 'value': '浮生若茶(凌空soho店)', 'address': '上海长宁区金钟路968号9号楼地下一层' },
{ 'value': 'NONO JUICE 鲜榨果汁', 'address': '上海市长宁区天山西路119号' },
{ 'value': 'CoCo都可(北新泾店)', 'address': '上海市长宁区仙霞西路' },
{ 'value': '快乐柠檬(神州智慧店)', 'address': '上海市长宁区天山西路567号1层R117号店铺' },
{ 'value': 'Merci Paul cafe', 'address': '上海市普陀区光复西路丹巴路28弄6号楼819' },
{ 'value': '猫山王(西郊百联店)', 'address': '上海市长宁区仙霞西路88号第一层G05-F01-1-306' },
{ 'value': '枪会山', 'address': '上海市普陀区棕榈路' },
{ 'value': '纵食', 'address': '元丰天山花园(东门) 双流路267号' },
{ 'value': '钱记', 'address': '上海市长宁区天山西路' },
{ 'value': '壹杯加', 'address': '上海市长宁区通协路' },
{ 'value': '唦哇嘀咖', 'address': '上海市长宁区新泾镇金钟路999号2幢(B幢)第01层第1-02A单元' },
{ 'value': '爱茜茜里(西郊百联)', 'address': '长宁区仙霞西路88号1305室' },
{ 'value': '爱茜茜里(近铁广场)', 'address': '上海市普陀区真北路818号近铁城市广场北区地下二楼N-B2-O2-C商铺' },
{ 'value': '鲜果榨汁(金沙江路和美广店)', 'address': '普陀区金沙江路2239号金沙和美广场B1-10-6' },
{ 'value': '开心丽果(缤谷店)', 'address': '上海市长宁区威宁路天山路341号' },
{ 'value': '超级鸡车(丰庄路店)', 'address': '上海市嘉定区丰庄路240号' },
{ 'value': '妙生活果园(北新泾店)', 'address': '长宁区新渔路144号' },
{ 'value': '香宜度麻辣香锅', 'address': '长宁区淞虹路148号' },
{ 'value': '凡仔汉堡(老真北路店)', 'address': '上海市普陀区老真北路160号' },
{ 'value': '港式小铺', 'address': '上海市长宁区金钟路968号15楼15-105室' },
{ 'value': '蜀香源麻辣香锅(剑河路店)', 'address': '剑河路443-1' },
{ 'value': '北京饺子馆', 'address': '长宁区北新泾街道天山西路490-1号' },
{ 'value': '饭典*新简餐(凌空SOHO店)', 'address': '上海市长宁区金钟路968号9号楼地下一层9-83室' },
{ 'value': '焦耳·川式快餐(金钟路店)', 'address': '上海市金钟路633号地下一层甲部' },
{ 'value': '动力鸡车', 'address': '长宁区仙霞西路299弄3号101B' },
{ 'value': '浏阳蒸菜', 'address': '天山西路430号' },
{ 'value': '四海游龙(天山西路店)', 'address': '上海市长宁区天山西路' },
{ 'value': '樱花食堂(凌空店)', 'address': '上海市长宁区金钟路968号15楼15-105室' },
{ 'value': '壹分米客家传统调制米粉(天山店)', 'address': '天山西路428号' },
{ 'value': '福荣祥烧腊(平溪路店)', 'address': '上海市长宁区协和路福泉路255弄57-73号' },
{ 'value': '速记黄焖鸡米饭', 'address': '上海市长宁区北新泾街道金钟路180号1层01号摊位' },
{ 'value': '红辣椒麻辣烫', 'address': '上海市长宁区天山西路492号' },
{ 'value': '(小杨生煎)西郊百联餐厅', 'address': '长宁区仙霞西路88号百联2楼' },
{ 'value': '阳阳麻辣烫', 'address': '天山西路389号' },
{ 'value': '南拳妈妈龙虾盖浇饭', 'address': '普陀区金沙江路1699号鑫乐惠美食广场A13' },
];
},
handleSelect(item) {
console.log(item);
},
},
};
</script>
<style>
.marginLeft {
margin-left: 10px
}
.content {
height: 100%;
padding: 30px;
background:#fff;
}
.block {
display: inline-block;
margin-left: 10px;
margin-bottom: 5px;
}
.box-card .el-col{
margin-bottom:10px;
}
.e-select .e-input {
width: 130px;
}
.input-with-select .e-input-group__prepend {
background-color: #fff;
}
.my-autocomplete {
li {
line-height: normal;
padding: 7px;
.name {
text-overflow: ellipsis;
overflow: hidden;
}
.addr {
font-size: 12px;
color: #b4b4b4;
}
.highlighted .addr {
color: #ddd;
}
}
}
</style>