emis-frontend/src/views/emis/EmisBaseTools/EmisSiteSimplePicker.vue

193 lines
4.6 KiB
Vue
Raw Normal View History

2024-04-22 05:35:19 +00:00
<template>
2024-05-07 04:53:25 +00:00
<!-- :loading="loading" -->
<!-- v-el-select-loadmore="loadmore" -->
<!-- <i class="el-icon-arrow-down select-down" :class="visible&&'rotate180'"></i> -->
2024-04-22 05:35:19 +00:00
<el-select
filterable
clearable
2024-05-07 04:53:25 +00:00
autocomplete="false"
ref="selectDom"
2024-04-22 05:35:19 +00:00
v-model="svalue"
2024-05-07 04:53:25 +00:00
remote
:remote-method="queryData"
2024-04-22 05:35:19 +00:00
:placeholder="placeholder"
style="width: 100%;"
:disabled="disabled"
2024-05-07 04:53:25 +00:00
@focus="onFocus"
class="remote-select"
@change="onChange"
@clear="onClear"
@visible-change="reverseArrow"
>
2024-05-14 23:36:32 +00:00
<el-option v-for="item in dataList" :key="item.siteCode" :label="item.siteName" :value="item.siteCode" ></el-option>
2024-04-22 05:35:19 +00:00
</el-select>
2024-05-07 04:53:25 +00:00
2024-04-22 05:35:19 +00:00
</template>
<script>
2024-05-07 04:53:25 +00:00
import { listSimpleEmisSite } from "@/api/emis/emisSite";
2024-04-22 05:35:19 +00:00
export default {
name: "EmisSiteSimplePicker",
2024-05-07 04:53:25 +00:00
components: {
},
dicts: [],
2024-04-22 05:35:19 +00:00
props: {
value: {
type: String,
required: false
},
placeholder: {
type: String,
required: false
},
countryCode: {
type: String,
required: false
},
2024-05-11 03:13:13 +00:00
siteType:{
type: [String,Number],
required: false
},
2024-04-22 05:35:19 +00:00
isInitiated:{
type: [Boolean,String],
required: false,
default:false
},
disabled:{
type: [Boolean,String],
required: false
},
},
data() {
return {
loading:false,
2024-05-07 04:53:25 +00:00
visible:false,
dataList: [],
2024-04-22 05:35:19 +00:00
svalue: this.value,
2024-05-07 04:53:25 +00:00
filterMap:new Map(),
firstFlag:true,
queryParams:{
pageNum:1,
pageSize:20,
searchValue:null,
2024-05-11 03:13:13 +00:00
siteType:this.siteType,
2024-05-07 04:53:25 +00:00
countryCode:this.countryCode,
siteCode:null
}
2024-04-22 05:35:19 +00:00
};
},
watch: {
value(newVal) {
this.svalue = newVal;
2024-05-07 04:53:25 +00:00
console.log("000=>"+this.svalue);
this.firstFlag = true;
2024-04-22 05:35:19 +00:00
this.initData();
},
2024-05-07 04:53:25 +00:00
siteType(newVal, oldVal) {
if(newVal!= oldVal ){
}
2024-05-11 03:13:13 +00:00
this.initData();
2024-05-07 04:53:25 +00:00
},
2024-04-22 05:35:19 +00:00
countryCode(newVal, oldVal) {
2024-05-07 04:53:25 +00:00
if(newVal!= oldVal ){
}
2024-05-11 03:13:13 +00:00
this.initData();
2024-04-22 05:35:19 +00:00
}
},
created() {
2024-05-07 04:53:25 +00:00
// this.queryData();
},
beforeDestroy(){
this.firstFlag = true;
2024-04-22 05:35:19 +00:00
},
methods: {
onChange() {
this.$emit("input", this.svalue);
2024-05-07 04:53:25 +00:00
let itemData=this.filterMap[this.svalue];
2024-04-22 05:35:19 +00:00
this.$emit("onChange",itemData);
},
2024-05-07 04:53:25 +00:00
onClear(){
this.queryParams.searchValue=null;
this.queryData();
},
onFocus(){
this.queryData();
},
initData(){
if(this.svalue && this.firstFlag ){
let queryParams = {
siteCode:this.svalue
2024-04-22 05:35:19 +00:00
}
2024-05-07 04:53:25 +00:00
listSimpleEmisSite(queryParams).then(response => {
this.dataList=response.rows;
const curItem = response.rows[0];
let curOption = {
currentLabel: curItem.siteName,
currentValue: curItem.siteCode,
label:curItem.siteName,
value:curItem.siteCode,
}
this.$refs.selectDom.cachedOptions.push(curOption)
response.rows.forEach(item => {
if(!this.filterMap.hasOwnProperty(item.siteCode)){
this.filterMap[item.siteCode]=item;
}
});
this.firstFlag = false;
});
}
2024-04-22 05:35:19 +00:00
},
2024-05-07 04:53:25 +00:00
queryData(val) {
if(val && this.queryParams.pageNum == 1){
this.dataList=[];
}
this.queryParams.searchValue=val;
listSimpleEmisSite(this.queryParams).then(response => {
this.dataList=response.rows;
response.rows.forEach(item => {
if(!this.filterMap.hasOwnProperty(item.siteCode)){
this.filterMap[item.siteCode]=item;
2024-04-22 05:35:19 +00:00
}
2024-05-07 04:53:25 +00:00
});
});
},
// loadmore() {
// this.visible = true
// this.queryParams.pageNum++;
// this.queryData();
// },
reverseArrow(flag) {
let rulesDom = this.$refs["selectDom"].$el.querySelector(
".el-input .el-input__suffix .el-input__suffix-inner .el-input__icon"
); // 找到dom
if (flag) {
rulesDom.classList.add("is-reverse"); // 对dom新增class
2024-04-22 05:35:19 +00:00
} else {
2024-05-07 04:53:25 +00:00
rulesDom.classList.remove("is-reverse"); // 对dom新增class
2024-04-22 05:35:19 +00:00
}
},
}
};
</script>
2024-05-07 04:53:25 +00:00
<style lang="scss" scoped>
// right: 30px;
// cursor: pointer;
:deep .el-select.remote-select{
.el-select__caret::before{
content: '\e6e1';
}
.is-focus{
.el-select__caret{
transform: rotateZ(0deg);
}
}
}
</style>