268 lines
5.9 KiB
Vue
268 lines
5.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[itemObj.value]"
|
|||
|
:label="item[itemObj.label]"
|
|||
|
remote
|
|||
|
:value="item[itemObj.value]"
|
|||
|
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>
|
|||
|
|
|||
|
<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"
|
|||
|
>
|
|||
|
<el-option
|
|||
|
v-for="item in options"
|
|||
|
:key="item.id"
|
|||
|
:label="item.label"
|
|||
|
remote
|
|||
|
:value="item.id"
|
|||
|
placeholder="请输入"
|
|||
|
>
|
|||
|
</el-option>
|
|||
|
|
|||
|
<div style="bottom: -10px">
|
|||
|
<el-pagination
|
|||
|
v-if="pageTotal > pageSize"
|
|||
|
small
|
|||
|
@current-change="handleCurrentChange"
|
|||
|
:current-page="currentpage"
|
|||
|
:page-size="pageSize"
|
|||
|
layout="prev, pager,next,total"
|
|||
|
:total="pageTotal"
|
|||
|
>
|
|||
|
</el-pagination>
|
|||
|
</div>
|
|||
|
</el-select>
|
|||
|
</template>
|
|||
|
|
|||
|
<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() {
|
|||
|
if (Object.keys(this.ruleForm).length && this.ruleForm[this.itemObj.id]) {
|
|||
|
// this.getSelectdata(this.ruleForm[this.itemObj.id]);
|
|||
|
}
|
|||
|
},
|
|||
|
mounted() {
|
|||
|
},
|
|||
|
methods: {
|
|||
|
// 请求select信息(分页)
|
|||
|
async getUserModuleApi(obj = {}) {
|
|||
|
this.selLoading = true;
|
|||
|
const res = await getUserModuleApi(
|
|||
|
{
|
|||
|
tl: "mdmService",
|
|||
|
as: "mdmService",
|
|||
|
dj: "queryTemplateData",
|
|||
|
},
|
|||
|
{
|
|||
|
tableName: this.itemObj.service,
|
|||
|
value: this.itemObj.value,
|
|||
|
label: this.itemObj.label,
|
|||
|
pageNum: this.pageModel.pageIndex,
|
|||
|
pageSize: this.pageModel.limit,
|
|||
|
...obj,
|
|||
|
}
|
|||
|
);
|
|||
|
if (res.status === '200') {
|
|||
|
console.log(res)
|
|||
|
this.pageModel.total = res.attribute.total;
|
|||
|
this.options = res.attribute.list;
|
|||
|
}
|
|||
|
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) {
|
|||
|
// 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>
|