2024-05-06 14:57:20 +08:00
|
|
|
|
<template>
|
|
|
|
|
<div>
|
|
|
|
|
<el-form label-position="top" :inline="true" class="popover">
|
2024-05-06 15:14:21 +08:00
|
|
|
|
<el-select
|
|
|
|
|
v-model="select"
|
|
|
|
|
placeholder="请选择"
|
|
|
|
|
class="dateselect"
|
|
|
|
|
:size="size"
|
|
|
|
|
@keydown.enter.native="search"
|
|
|
|
|
@change="changeText"
|
|
|
|
|
>
|
|
|
|
|
<template slot="prefix">
|
|
|
|
|
{{ (PopUp.find((e) => e.enName == select) || {}).lable }}
|
|
|
|
|
</template>
|
|
|
|
|
<el-option
|
|
|
|
|
v-for="item in PopUp"
|
|
|
|
|
:key="item.enName"
|
|
|
|
|
:label="item.lable"
|
|
|
|
|
:value="item.enName"
|
2024-05-06 14:57:20 +08:00
|
|
|
|
>
|
2024-05-06 15:14:21 +08:00
|
|
|
|
</el-option>
|
|
|
|
|
</el-select>
|
2024-05-06 14:57:20 +08:00
|
|
|
|
|
|
|
|
|
<el-popover
|
|
|
|
|
placement="bottom"
|
|
|
|
|
trigger="manual"
|
|
|
|
|
ref="popover"
|
|
|
|
|
popper-class="popperOptions"
|
|
|
|
|
v-model="popBox"
|
|
|
|
|
>
|
|
|
|
|
<el-input
|
|
|
|
|
v-model="textarea"
|
|
|
|
|
type="textarea"
|
|
|
|
|
:rows="12"
|
|
|
|
|
placeholder="一行一项,最多支持200行"
|
|
|
|
|
resize="none"
|
|
|
|
|
@input="changeText('textarea')"
|
|
|
|
|
/>
|
|
|
|
|
<el-divider class="divider"></el-divider>
|
|
|
|
|
<div class="btnbox">
|
|
|
|
|
<div>
|
|
|
|
|
<el-button size="mini" @click="close">关闭</el-button>
|
|
|
|
|
</div>
|
|
|
|
|
<div>
|
|
|
|
|
<el-button size="mini" @click="clear">清空</el-button>
|
2024-05-06 15:14:21 +08:00
|
|
|
|
<el-button size="mini" type="primary" plain @click="search"
|
2024-05-06 14:57:20 +08:00
|
|
|
|
>查询</el-button
|
|
|
|
|
>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<el-input
|
|
|
|
|
slot="reference"
|
|
|
|
|
v-model="value"
|
|
|
|
|
:size="size"
|
|
|
|
|
class="compound-input"
|
|
|
|
|
:placeholder="placeholder"
|
|
|
|
|
@input="changeText('value')"
|
2024-05-06 15:14:21 +08:00
|
|
|
|
@keydown.enter.native="search"
|
2024-05-06 14:57:20 +08:00
|
|
|
|
>
|
|
|
|
|
<i
|
|
|
|
|
slot="suffix"
|
|
|
|
|
class="iconfont iconicon-piliangcaozuo imeiicondefault"
|
|
|
|
|
:class="popBox ? 'imeiiconActive' : 'imeiicon'"
|
|
|
|
|
style="font-size: 12px; margin-top: 4px"
|
|
|
|
|
@click.prevent="eject"
|
|
|
|
|
></i>
|
|
|
|
|
</el-input>
|
|
|
|
|
</el-popover>
|
|
|
|
|
</el-form>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
export default {
|
|
|
|
|
props: {
|
|
|
|
|
size: {
|
|
|
|
|
type: String,
|
|
|
|
|
default: "small",
|
|
|
|
|
},
|
|
|
|
|
default: {
|
2024-05-06 15:14:21 +08:00
|
|
|
|
default: null,
|
2024-05-06 14:57:20 +08:00
|
|
|
|
},
|
|
|
|
|
data: {
|
|
|
|
|
type: Array,
|
|
|
|
|
default: () => {
|
|
|
|
|
return [];
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
components: {},
|
|
|
|
|
data() {
|
|
|
|
|
return {
|
|
|
|
|
select: this.default,
|
|
|
|
|
value: "",
|
|
|
|
|
textarea: "",
|
|
|
|
|
values: "",
|
|
|
|
|
popBox: false,
|
|
|
|
|
placeholder: "请输入内容",
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
computed: {
|
|
|
|
|
// 带弹出框
|
|
|
|
|
PopUp() {
|
|
|
|
|
if (!this.data) return;
|
2024-05-06 15:14:21 +08:00
|
|
|
|
let arr = [];
|
|
|
|
|
arr = this.data.filter((item) => item.isPopUp && item.show);
|
|
|
|
|
if (arr && arr.length) {
|
|
|
|
|
arr.findIndex((e) => e.enName == this.select) == -1
|
|
|
|
|
? this.$set(this, "select", arr[0].enName)
|
|
|
|
|
: "";
|
|
|
|
|
}
|
|
|
|
|
return arr;
|
2024-05-06 14:57:20 +08:00
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
methods: {
|
|
|
|
|
changeText(mark) {
|
2024-05-06 15:14:21 +08:00
|
|
|
|
if (mark) {
|
|
|
|
|
const rep = /[^\s]+/g;
|
|
|
|
|
let values = "";
|
|
|
|
|
if (mark == "textarea") {
|
|
|
|
|
this.value = "";
|
|
|
|
|
values = this._.words(this.textarea, rep).join();
|
|
|
|
|
} else {
|
|
|
|
|
this.textarea = "";
|
|
|
|
|
values = this.value;
|
|
|
|
|
}
|
|
|
|
|
this.values = values;
|
2024-05-06 14:57:20 +08:00
|
|
|
|
}
|
2024-05-06 15:14:21 +08:00
|
|
|
|
this.$emit("CompoundSearch", this.select, this.values);
|
2024-05-06 14:57:20 +08:00
|
|
|
|
},
|
|
|
|
|
//弹出层
|
|
|
|
|
eject() {
|
|
|
|
|
this.popBox = !this.popBox;
|
|
|
|
|
},
|
|
|
|
|
//清除
|
|
|
|
|
clear() {
|
2024-05-06 15:14:21 +08:00
|
|
|
|
this.$set(this, "textarea", "");
|
|
|
|
|
this.$set(this, "value", "");
|
|
|
|
|
this.$set(this, "values", "");
|
2024-05-06 14:57:20 +08:00
|
|
|
|
this.disable = false;
|
|
|
|
|
},
|
|
|
|
|
//关闭弹出层
|
|
|
|
|
close() {
|
|
|
|
|
this.popBox = false;
|
|
|
|
|
},
|
|
|
|
|
//回车事件
|
2024-05-06 15:14:21 +08:00
|
|
|
|
search() {
|
|
|
|
|
this.close();
|
|
|
|
|
this.$emit("SearchCompound");
|
2024-05-06 14:57:20 +08:00
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style scoped lang='scss'>
|
|
|
|
|
.popover {
|
|
|
|
|
width: 330px;
|
|
|
|
|
display: flex;
|
|
|
|
|
line-height: 0;
|
|
|
|
|
span {
|
|
|
|
|
width: 100%;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
::v-deep .dateselect {
|
|
|
|
|
flex-grow: 0;
|
|
|
|
|
flex-shrink: 0;
|
|
|
|
|
min-width: 105px;
|
|
|
|
|
max-width: 155px;
|
|
|
|
|
color: #fff;
|
|
|
|
|
text-align: start;
|
|
|
|
|
.el-input__prefix {
|
|
|
|
|
position: relative;
|
|
|
|
|
top: 0;
|
|
|
|
|
left: 0;
|
|
|
|
|
padding: 0 35px 0 18px;
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
color: #606266;
|
|
|
|
|
visibility: hidden;
|
|
|
|
|
}
|
|
|
|
|
.el-input {
|
|
|
|
|
height: 100%;
|
|
|
|
|
}
|
|
|
|
|
.el-input__inner {
|
|
|
|
|
padding: 0 15px;
|
|
|
|
|
border-radius: 4px 0 0 4px;
|
|
|
|
|
z-index: 1;
|
|
|
|
|
}
|
|
|
|
|
.el-input__inner:hover {
|
|
|
|
|
z-index: 1;
|
|
|
|
|
}
|
|
|
|
|
.el-input__suffix {
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: flex-start;
|
|
|
|
|
z-index: 50;
|
|
|
|
|
}
|
|
|
|
|
.el-input__inner {
|
|
|
|
|
position: absolute;
|
|
|
|
|
left: 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
::v-deep .compound-input {
|
|
|
|
|
flex-grow: 1;
|
|
|
|
|
margin-left: -1px;
|
|
|
|
|
.imeiicondefault {
|
|
|
|
|
padding: 5px;
|
|
|
|
|
border-radius: 4px;
|
|
|
|
|
background: #f0f2f5;
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.imeiiconActive {
|
|
|
|
|
color: #409eff;
|
|
|
|
|
background: #e9f1fc;
|
|
|
|
|
}
|
|
|
|
|
.el-input__inner {
|
|
|
|
|
position: relative;
|
|
|
|
|
border-radius: 0 4px 4px 0 !important;
|
|
|
|
|
}
|
|
|
|
|
.el-input__inner:hover {
|
|
|
|
|
position: relative;
|
|
|
|
|
z-index: 1;
|
|
|
|
|
}
|
|
|
|
|
.el-input.is-active .el-input__inner,
|
|
|
|
|
.el-input__inner:focus {
|
|
|
|
|
position: relative;
|
|
|
|
|
z-index: 1;
|
|
|
|
|
}
|
|
|
|
|
.el-input__suffix {
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
z-index: 50;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.btnbox {
|
|
|
|
|
padding: 5px;
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
border: none;
|
|
|
|
|
}
|
|
|
|
|
.divider {
|
|
|
|
|
margin: 0;
|
|
|
|
|
}
|
|
|
|
|
::v-deep .el-textarea__inner {
|
|
|
|
|
border: none;
|
|
|
|
|
}
|
|
|
|
|
</style>
|