| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- <template>
- <div id="cascaderMap">
- <span class="buildFloor" style="margin-right: 12px;">设备类别</span>
- <slot></slot>
- <el-select v-model="value" placeholder="请选择" clearable :props="props" filterable
- :style="isWidth ? '' : 'width:160px;'" size="small"
- @change="changeVal">
- <el-option v-for="item in options" :key="item.code" :label="item.facility" :value="item.code"></el-option>
- </el-select>
- <!-- <el-cascader placeholder="请选择" :options="options" v-model="value" :props="props" filterable :style="isWidth ? '' : 'width:160px;'" size="small"
- @change="changeVal" change-on-select></el-cascader> -->
- </div>
- </template>
- <script>
- import { mapGetters } from 'vuex';
- import { queryEquip } from "@/api/object/equip";
- import { queryPhysicsAllType } from "@/api/dict";
- export default {
- name: "getCode",
- props: {
- isWidth: {
- type: Boolean,
- default: true
- },
- all: {
- type: Boolean,
- default: false,
- }
- },
- computed: {
- ...mapGetters("layout", ["projectId"])
- },
- data() {
- return {
- value: "",
- options: [],
- props: {
- value: "code",
- label: "facility"
- },
- falg: true,
- content: []
- };
- },
- created() {
- this.getData();
- },
- watch: {
- projectId() {
- this.value = '';
- this.getData();
- }
- },
- methods: {
- setValue(val) {
- this.value = val
- },
- //修改val
- changeVal(val) {
- let value = {}
- let flag = true;
- this.options.map(item => {
- if (item.code == val) {
- flag = false;
- value = item
- }
- })
- this.value = val
- if (flag) {
- this.value = '';
- }
- console.log(value)
- this.$emit("change", value)
- },
- //获取当前项目下的设备类型(只拿到编码-需要过滤)
- getData(val) {
- let param2 = {
- distinct: true,
- pageNumber: 1,
- pageSize: 1000,
- projection: [
- "classCode"
- ]
- }
- if (val && val[0] != 'all') {
- param2.filters = ''
- if (val[0] == "noKnow") {
- param2.filters += `;buildingId isNull`;
- } else if (val[0] && val[0] != "all") {
- param2.filters += `;buildingId='${val[0]}'`;
- }
- if (val[1] == "noKnow") {
- param2.filters += `;floorId isNull`;
- } else if (val[1] && val[1] != "all") {
- param2.filters += `;floorId='${val[1]}'`;
- }
- param2.filters = param2.filters.slice(1)
- }
- console.log(param2,'param2')
- let param1 = {
- type: "equipment"
- }
- let promise2 = new Promise((resolve, reject) => {
- queryEquip(param2, res => {
- resolve(res)
- })
- })
- let promise1 = new Promise((resolve, reject) => {
- queryPhysicsAllType(param1, res => {
- resolve(res)
- })
- })
- Promise.all([promise1, promise2]).then((res) => {
- let allData = res[0], data = res[1]
- this.options = this.formatOptions(allData.content)
- if (!this.all) {
- this.content = data.content.map(t => {
- return t.classCode
- });
- this.filterForOptions();
- }
- if (this.value) {
- this.changeVal(this.value)
- }
- })
- },
- //格式化options数据
- formatOptions(arr) {
- let data = [];
- arr && arr.map(t => {
- let temp = {};
- temp.code = t.code;
- temp.facility = t.name === t.aliasName ? t.name : `${t.name}(${t.aliasName})`;
- data.push(temp)
- })
- return data;
- },
- //过滤
- filterForOptions() {
- this.options = this.options.filter(item => {
- if (this.content.indexOf(item.code) > -1) {
- return item
- }
- })
- }
- }
- };
- </script>
- <style lang="less" scoped>
- #cascaderMap {
- float: left;
- margin-left: 10px;
- .buildFloor {
- color: #999999;
- font-size: 14px;
- }
- }
- </style>
|