<template> <div style=""> <ns-input class="ns-input-area" :disabled="true" placeholder="请选择" @click="chose" :value="floorName" > <template #addonAfter> <a-button class="ns-area" style="background: #5cc0d1; height: 32px" @click="chose" >{{ addonAfter }} </a-button> </template> </ns-input> </div> <a-modal v-model:visible="visible" :maskClosable="false" @ok="handleOkAddress" @cancel="cancelModel" width="900px" style="top: 3%" > <p class="title">地址选择</p> <ns-view-list-table v-bind="tableConfigAddress" :row-selection="rowSelectionAddress" /> </a-modal> </template> <script lang="ts"> import { defineComponent, ref } from 'vue'; import { http } from '/nerv-lib/util/http'; // let rowSelection=''; export default defineComponent({ name: 'NsInputAddress', // props: { // addonAfter: { // type: String, // default: '', // }, // }, // eslint-disable-next-line vue/require-prop-types props: ['size', 'id', 'field', 'formModel', 'allowClear', 'value', 'addonAfter', 'disabled'], emits: ['change', 'blur'], setup() { const pra = { pageSize: 10, regionType: 2, }; let resData = ref(); http.get('/api/community/community/objs/Region', pra).then((res) => { // console.log(res.data.data); resData.value = res.data.data; }); return { resData }; }, data() { return { activeKey: '1', //地址选择 tableConfigAddress: { api: '/api/community/community/objs/BedChoose/Inspection?regionType=2', defaultPageSize: 5, columns: [ { title: '楼栋单元', dataIndex: 'floorName', fixed: 'left', width: 200, }, { title: '楼层', dataIndex: 'floorNum', width: 200, }, { title: '房间', dataIndex: 'roomName', width: 200, }, ], formConfig: { schemas: [ ///api/community/community/objs/Region?regionType=2 { field: 'regionUuid', component: 'nsSelectApi', label: '楼栋单元', // addLink: ['regionName', 'regionUuid'], autoAddLink: true, componentProps: { autoSelectFirst: false, api: '/api/community/community/objs/Region', params: { pageSize: 10, regionType: 2, }, resultField: 'data.data', labelField: 'regionName', valueField: 'regionUuid', immediate: true, }, }, { field: 'floorUuid', label: '楼层', dynamicParams: { regionUuid: 'fieldLink.regionUuid.regionUuid', }, defaultParams: { regionType: 2, pageSize: 10, }, component: 'nsSelectApi', defaultValue: '', componentProps: { autoSelectFirst: false, api: '/api/community/community/objs/Region', resultField: 'data.data', labelField: 'regionName', valueField: 'regionUuid', // options: [ // { // label: '全部', // value: 'all', // }, // ], }, }, ], params: {}, }, // columnActions: { // width: 0, // title: '', // actions: [ // { // label: '启动', // name: 'start', // ifShow: true, // }, // ], // }, rowKey: 'roomUuid', }, visible: false, regionUuid: '', roomUuid: '', floorName: '', rootLevelCode: '', rowSelectionAddress: { type: 'radio', onSelect: (record: DataItem, selected: boolean, selectedRows: DataItem[]) => { this.roomUuid = selectedRows[0].roomUuid; this.queryName = selectedRows[0].floorName; this.spliceAddress = selectedRows[0].floorName + '-' + selectedRows[0].floorNum + '-' + selectedRows[0].roomName; // console.log(selectedRows[0]); // console.log("type"); // console.log(this.floorName); // console.log(this.type); }, }, }; }, methods: { chose() { this.visible = true; }, cancelModel() { this.floorName = ''; }, handleOkAddress() { this.floorName = this.spliceAddress; // console.log(this.resData); this.resData.forEach((item) => { for (let val in item) { if (item[val] == this.queryName) { this.rootLevelCode = item['rootLevelCode']; return; } } }); this.$emit('change', { address: this.floorName, rootLevelCode: this.rootLevelCode }); this.visible = false; }, }, }); </script> <style lang="less" scoped> .ns-area:hover, :focus { color: white !important; } .ns-area { color: white; } :deep(.ant-input) { background: rgba(223, 227, 233, 0.5); } :deep(.ant-input:focus) { border-color: rgba(223, 227, 233, 0.5); border-right-width: 0px !important; outline: 0; box-shadow: none; } :deep(.ant-input) { border-right: 0px; } :deep(.ns-area) { border: 0px; } </style>