224 lines
4.9 KiB
Vue
224 lines
4.9 KiB
Vue
<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>
|