使用方法
使用方法
<el-form-item
class="form-condition"
:label="$t('privacyPolicy.userId')"
prop="userNo"
>
<LoadMoreSelect
v-model="detailForm.userNo"
:fetchOptions="fetchStockLocationUserNoData"
keyField="value"
labelField="label"
valueField="value"
:page="this.selectPage.pageIndex"
:pageSize="this.selectPage.pageSize"
/>
</el-form-item>
import LoadMoreSelect from '@/components/LoadMoreSelect/LoadMoreSelect.vue';
components: { LoadMoreSelect },
methods: {
async fetchStockLocationUserNoData({ pageIndex, pageSize, query }) {
const response = await qryUserId({
pageIndex,
pageSize,
info: query,
isDeleted: 0
});
return response;
},
}
main.js
Vue.directive('loadmore', {
bind(el, binding) {
let select_dom = el.querySelector('.el-select-dropdown .el-select-dropdown__wrap');
select_dom.addEventListener('scroll', function () {
const CONDITION = this.scrollHeight - this.scrollTop <= this.clientHeight;
if (CONDITION) {
binding.value();
}
});
}
});
使用方法
<el-form-item
class="form-condition"
:label="$t('privacyPolicy.userId')"
prop="userNo"
>
<LoadMoreSelect
v-model="detailForm.userNo"
:fetchOptions="fetchStockLocationUserNoData"
keyField="value"
labelField="label"
valueField="value"
:page="this.selectPage.pageIndex"
:pageSize="this.selectPage.pageSize"
/>
</el-form-item>
import LoadMoreSelect from '@/components/LoadMoreSelect/LoadMoreSelect.vue';
components: { LoadMoreSelect },
methods: {
async fetchStockLocationUserNoData({ pageIndex, pageSize, query }) {
const response = await qryUserId({
pageIndex,
pageSize,
info: query,
isDeleted: 0
});
return response;
},
}
<template>
<el-option ref="el" class="el-select-loading" value="">
<template v-if="hasMore">
<el-icon v-if="loading" class="el-icon-loading"></el-icon>
<span v-if="loading" class="el-select-loading__tips">{{ $t('common.loading') }}</span>
<span v-else class="el-select-loading__tips">{{ $t('common.SeeMore') }}</span>
</template>
<template v-else>{{ $t('common.Nodata') }}</template>
</el-option>
</template>
<script>
export default {
name: 'LoadMoreSelectOption',
props: {
hasMore: {
type: Boolean,
required: false
},
loading: {
type: Boolean,
required: false
}
},
data() {
return {};
},
mounted() {},
beforeDestroy() {},
methods: {}
};
</script>
<style scoped lang="scss">
.el-select-loading {
display: flex;
align-items: center;
justify-content: center;
cursor: initial;
pointer-events: none;
background-color: rgb(255, 255, 255);
color: #4d4d4d;
font-size: 12px;
&__icon {
font-size: 16px;
animation: rotate 1.5s linear infinite;
}
&__tips {
margin-left: 6px;
}
@keyframes rotate {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
}
</style>