middleground_code_v2/src/views/newIntegrationTask/foregroundTask/baseNewSelect.vue

224 lines
4.9 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div>
<template v-if="!lookflag">
<el-select
v-loading="selLoading"
class="w-100"
v-model="selectValue"
:placeholder="placeholder"
:clearable="false"
style="width: 240px"
size="mini"
refs="mySelect"
:reserve-keyword="true"
:disabled="disabled"
filterable
popper-class="sele"
:filter-method="filter"
@change="fun"
@focus="funx"
@blur="funb"
@visible-change="hidden"
clearable
>
<el-option
v-for="item in options"
:key="item.plugId"
:label="item.plugName"
remote
:value="item.plugName"
placeholder="请选择"
>
</el-option>
<div style="bottom: -10px">
<el-pagination
v-if="pageModel.total > pageModel.limit"
small
@current-change="handleCurrentChange"
:current-page="pageModel.pageIndex"
:page-size="pageModel.limit"
layout="prev, pager,next,total"
:total="pageModel.total"
>
</el-pagination>
</div>
</el-select>
</template>
<template v-else
><div v-loading="selLoading">{{ showValue }}</div></template
>
</div>
</template>
<style scoped lang="scss">
::v-deep .el-input--mini .el-input__inner {
height: 38px;
}
.w-100 {
width: 100% !important;
}
.drop >>> .el-input__inner {
background: #5183ff !important;
color: white;
border: none;
height: 26px;
padding: 10px 22px 10px 10px;
text-align: center;
}
.drop {
width: 250px;
}
.drop >>> .el-select .el-input .el-select__caret {
display: none;
}
</style>
<script>
import debounce from "lodash/debounce";
import { getUserModuleApi } from "@/api/integrationOption/integrationOption.js";
export default {
props: {
ruleForm: {
type: Object,
default: {},
},
selectInfo: {
type: Object,
default: () => {
return {};
},
},
// 是否禁用
disabled: {
type: Boolean,
default: false,
},
placeholder: String,
value: {
type: String,
},
itemObj: {
type: Object,
default: () => {
return {};
},
},
lookflag: {
type: Boolean,
default: false,
},
},
data() {
return {
options: [], //当前页码的数据
pageModel: {
total: 0,
pageIndex: 1,
limit: 10,
},
selLoading: false,
showValue: "",
lookLoading: false,
};
},
computed: {
selectValue: {
get() {
return this.value;
},
set(val) {
this.$emit("input", val);
},
},
},
created() {
},
mounted() {
this.getUserModuleApi()
},
methods: {
// 请求select信息分页
async getUserModuleApi(obj = {}) {
this.selLoading = true;
const res = await getUserModuleApi(
{
tl: "sysPlugArgService",
as: "integrationTaskService",
dj: "queryPlugArg",
},
{
pageNum: this.pageModel.pageIndex,
pageSize: this.pageModel.limit,
...obj,
}
);
if (res.status === '200') {
this.pageModel.total = res.attribute.total;
this.options = res.attribute.list;
}
console.log(this.options,'options')
this.selLoading = false;
},
// 根据selectid找到value
async getSelectdata(id) {
this.selLoading = true;
const res = await getUserModuleApi(
{
tl: "mdmService",
as: "mdmService",
dj: "queryTemplateData",
},
{
tableName: this.itemObj.service,
id: id,
label: this.itemObj.label,
value: this.itemObj.value,
}
);
if (res.status == 200 && res.attribute.length) {
this.selLoading = false;
this.options = res.attribute;
this.showValue = res.attribute[0][this.itemObj.label];
} else {
this.selLoading = false;
this.options.push({
[this.itemObj.label]: "请选择",
[this.itemObj.value]: id,
});
}
},
// 页码改变事件
handleCurrentChange(val) {
this.pageModel.pageIndex = val;
this.getUserModuleApi();
},
// select选中更改事件
fun(val) {
console.log(val)
this.$emit("selectChangeHandle",val,this.options)
// this.$emit(`${this.funName}`, arr);
},
// 获得焦点
funx() {
this.getUserModuleApi();
},
// 失去焦点
funb() {},
hidden() {},
//搜索方法,将符合的数据存入options中并分页展示
filter: debounce(function (val) {
// this.pageModel.pageIndex = 1;
// this.getUserModuleApi({ lableValue: val });
}, 300),
},
//监听来自父组件的数据,当数据更新时,重置展示
watch: {},
};
</script>