|
@@ -0,0 +1,68 @@
|
|
|
|
+<template>
|
|
|
|
+ <el-select
|
|
|
|
+ v-model="selected"
|
|
|
|
+ class="status-select"
|
|
|
|
+ :placeholder="placeholder"
|
|
|
|
+ filterable
|
|
|
|
+ :clearable="clearable"
|
|
|
|
+ :disabled="disabled"
|
|
|
|
+ @change="select"
|
|
|
|
+ >
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in optionList"
|
|
|
|
+ :key="item.id"
|
|
|
|
+ :value="item.id"
|
|
|
|
+ :label="item.name"
|
|
|
|
+ >
|
|
|
|
+ </el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+</template>
|
|
|
|
+
|
|
|
|
+<script>
|
|
|
|
+import { enumsByType } from "../../modules/base/api";
|
|
|
|
+
|
|
|
|
+export default {
|
|
|
|
+ name: "status-select",
|
|
|
|
+ props: {
|
|
|
|
+ disabled: { type: Boolean, default: false },
|
|
|
|
+ placeholder: { type: String, default: "请选择状态" },
|
|
|
|
+ value: { type: [Number, String], default: "" },
|
|
|
|
+ clearable: { type: Boolean, default: true },
|
|
|
|
+ type: {
|
|
|
|
+ type: String,
|
|
|
|
+ default: "",
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+ data() {
|
|
|
|
+ return {
|
|
|
|
+ optionList: [],
|
|
|
|
+ selected: "",
|
|
|
|
+ };
|
|
|
|
+ },
|
|
|
|
+ watch: {
|
|
|
|
+ value: {
|
|
|
|
+ immediate: true,
|
|
|
|
+ handler(val) {
|
|
|
|
+ this.selected = val;
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+ created() {
|
|
|
|
+ this.search();
|
|
|
|
+ },
|
|
|
|
+ methods: {
|
|
|
|
+ async search() {
|
|
|
|
+ if (!this.type) return;
|
|
|
|
+ const res = await enumsByType(this.type);
|
|
|
|
+ this.optionList = res;
|
|
|
|
+ },
|
|
|
|
+ select() {
|
|
|
|
+ this.$emit("input", this.selected);
|
|
|
|
+ this.$emit(
|
|
|
|
+ "change",
|
|
|
|
+ this.optionList.find((item) => item.id === this.selected)
|
|
|
|
+ );
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+};
|
|
|
|
+</script>
|