|
@@ -0,0 +1,111 @@
|
|
|
+<template>
|
|
|
+ <!-- multiple
|
|
|
+ filterable
|
|
|
+ remote
|
|
|
+ :multiple-limit="1" :remote-method="remoteMethod" -->
|
|
|
+ <el-select
|
|
|
+ v-model="value"
|
|
|
+ filterable
|
|
|
+ reserve-keyword
|
|
|
+ :size="size || 'medium'"
|
|
|
+ style="width: 100%"
|
|
|
+ :placeholder="placeholder || ''"
|
|
|
+ :disabled="disabled"
|
|
|
+ :loading="selectLoading"
|
|
|
+ @change="selectChange"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="(item, index) in options"
|
|
|
+ :key="item.id + index + 'spec'"
|
|
|
+ :label="item.spec_name"
|
|
|
+ :value="item.id"
|
|
|
+ :disabled="item.status === '1'"
|
|
|
+ >
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import asyncRequest from "@/apis/components/search-company-type";
|
|
|
+import resToken from "@/mixins/resToken";
|
|
|
+export default {
|
|
|
+ name: "SearchCompanyType",
|
|
|
+ mixins: [resToken],
|
|
|
+ props: [
|
|
|
+ "size",
|
|
|
+ "value",
|
|
|
+ "placeholder",
|
|
|
+ "isDetail",
|
|
|
+ "disabled",
|
|
|
+ "type",
|
|
|
+ "names",
|
|
|
+ ],
|
|
|
+ /**
|
|
|
+ * 属性集合
|
|
|
+ * @param {String} size : 组件大小 非必填
|
|
|
+ * @param {Array} value : 选中值 必填
|
|
|
+ * @param {String} placeholder : 提示信息 非必填
|
|
|
+ * @param {Boolean} isDetail : 是否是详情逻辑 必填
|
|
|
+ * @param {Boolean} disabled : 是否禁用 必填
|
|
|
+ * @param {String} names : 选中值label 展示详情必填
|
|
|
+ */
|
|
|
+ /**
|
|
|
+ * 事件集合
|
|
|
+ * @searchChange : 选中值变化调用 抛出选中数据
|
|
|
+ */
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ options: [],
|
|
|
+ selectLoading: false,
|
|
|
+ searchName: "",
|
|
|
+ formValue: {
|
|
|
+ start: "",
|
|
|
+ end: "",
|
|
|
+ creater: "",
|
|
|
+ status: "",
|
|
|
+ spec_name: "",
|
|
|
+ },
|
|
|
+ };
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+ // names: function (val, old) {
|
|
|
+ // // console.log(val, old);
|
|
|
+ // this.searchName = val;
|
|
|
+ // if (this.isDetail && this.searchName) {
|
|
|
+ // this.remoteMethod(this.searchName);
|
|
|
+ // }
|
|
|
+ // },
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ this.options = [];
|
|
|
+ this.selectLoading = false;
|
|
|
+ this.remoteMethod();
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ async selectChange(e) {
|
|
|
+ let item = {};
|
|
|
+ if (e) {
|
|
|
+ item = this.options.find((i) => i.id === e);
|
|
|
+ }
|
|
|
+ this.$emit("searchChange", item);
|
|
|
+ },
|
|
|
+ //query
|
|
|
+ async remoteMethod() {
|
|
|
+ this.selectLoading = true;
|
|
|
+ this.options = [];
|
|
|
+ const { code, data, message } = await asyncRequest.list(this.formValue);
|
|
|
+ if (code === 0) {
|
|
|
+ this.options = data;
|
|
|
+ } else if (code >= 100 && code <= 104) {
|
|
|
+ await this.logout();
|
|
|
+ } else {
|
|
|
+ this.$message.warning(message);
|
|
|
+ }
|
|
|
+ this.selectLoading = false;
|
|
|
+ },
|
|
|
+ },
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<style>
|
|
|
+</style>
|