| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- <template>
- <el-select
- v-model="selectedId"
- placeholder="选择租户"
- clearable
- filterable
- size="small"
- style="width: 160px"
- @change="handleChange"
- >
- <el-option
- v-for="item in tenantList"
- :key="item.id"
- :label="item.tenantName"
- :value="item.id"
- />
- </el-select>
- </template>
- <script>
- import { tenantList } from '@/api/tenant/tenant'
- import { listCompanyOptions } from '@/api/admin/sysCompany'
- export default {
- name: 'InlineTenantSelector',
- props: {
- /** admin=总后台(/admin/company/options),saas=租户总后台(/tenant/tenant/tenantList) */
- mode: {
- type: String,
- default: 'saas'
- }
- },
- data() {
- return {
- tenantList: [],
- selectedId: null
- }
- },
- created() {
- // 从Vuex恢复上次选择
- const saved = this.$store.getters.selectedCompanyId
- if (saved) {
- this.selectedId = saved
- }
- this.loadTenants()
- },
- methods: {
- loadTenants() {
- const loader = this.mode === 'admin'
- ? listCompanyOptions().then(response => response.data || [])
- : tenantList().then(response => response.rows || response.data || [])
- loader.then(list => {
- this.tenantList = list
- }).catch(() => {
- this.tenantList = []
- })
- },
- handleChange(val) {
- this.$store.dispatch('tenant/setCompanyId', val || null)
- const item = val ? this.tenantList.find(t => t.id === val) : null
- this.$emit('change', val || null, item)
- },
- /** 供父组件「重置」时清空租户选择 */
- reset() {
- this.selectedId = null
- this.$store.dispatch('tenant/setCompanyId', null)
- this.$emit('change', null, null)
- }
- }
- }
- </script>
|