Przeglądaj źródła

fix: 修复超管操作时存在租户隔离的部分问题

喵你个旺呀 1 rok temu
rodzic
commit
191ff26e08

+ 3 - 7
Web/src/views/system/dict/index.vue

@@ -75,11 +75,6 @@
 						<el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"><ele-Collection /></el-icon>字典值【{{ state.editDictTypeName }}】
 					</template>
 					<el-form :model="state.queryDictDataParams" ref="queryForm" :inline="true" @submit.native.prevent>
-						<el-form-item label="租户" v-if="userStore.userInfos.accountType == 999">
-							<el-select v-model="state.queryDictDataParams.tenantId" placeholder="租户" clearable style="width: 100%">
-								<el-option :value="item.value" :label="`${item.label} (${item.host})`" v-for="(item, index) in state.tenantList" :key="index" />
-							</el-select>
-						</el-form-item>
 						<el-form-item label="显示文本">
 							<el-input v-model="state.queryDictDataParams.label" placeholder="显示文本" @keyup.enter="handleDictDataQuery" />
 						</el-form-item>
@@ -221,6 +216,7 @@ const handleDictTypeQuery = async () => {
 // 查询字典值操作
 const handleDictDataQuery = async () => {
 	state.loading = true;
+	state.queryDictDataParams.tenantId = state.queryDictTypeParams.tenantId;
 	let params = Object.assign(state.queryDictDataParams, state.tableDictDataParams);
 	const res = await getAPI(SysDictDataApi).apiSysDictDataPagePost(params);
 	state.dictDataData = res.data.result?.items ?? [];
@@ -249,7 +245,7 @@ const resetDictDataQuery = () => {
 // 打开新增字典页面
 const openAddDictType = () => {
 	state.editDictTypeTitle = '添加字典';
-	editDictTypeRef.value?.openDialog({ status: 1, orderNo: 100 });
+	editDictTypeRef.value?.openDialog({ status: 1, orderNo: 100, tenantId: state.queryDictTypeParams.tenantId });
 };
 
 // 打开新增字典值页面
@@ -259,7 +255,7 @@ const openAddDictData = () => {
 		return;
 	}
 	state.editDictDataTitle = '添加字典值';
-	editDictDataRef.value?.openDialog({ status: 1, orderNo: 100, dictTypeId: state.queryDictDataParams.dictTypeId });
+	editDictDataRef.value?.openDialog({ status: 1, orderNo: 100, dictTypeId: state.queryDictDataParams.dictTypeId, tenantId: state.queryDictTypeParams.tenantId });
 };
 
 // 打开编辑字典页面

+ 3 - 1
Web/src/views/system/menu/index.vue

@@ -62,7 +62,7 @@
 			</el-table>
 		</el-card>
 
-		<EditMenu ref="editMenuRef" :title="state.editMenuTitle" :menuData="state.menuData" @handleQuery="handleQuery" />
+		<EditMenu ref="editMenuRef" :title="state.editMenuTitle" :menuData="state.allMenuData" @handleQuery="handleQuery" />
 	</div>
 </template>
 
@@ -83,6 +83,7 @@ const state = reactive({
 	loading: false,
 	tenantList: [] as Array<any>,
 	menuData: [] as Array<SysMenu>,
+	allMenuData: [] as Array<SysMenu>,
 	queryParams: {
 		tenantId: undefined,
 		title: undefined,
@@ -116,6 +117,7 @@ const resetQuery = () => {
 
 // 打开新增页面
 const openAddMenu = () => {
+	getAPI(SysMenuApi).apiSysMenuListGet(undefined, undefined, state.queryParams.tenantId).then(({data}) => state.allMenuData = data.result ?? []);
 	const data = { type: 2, isHide: false, isKeepAlive: true, isAffix: false, isIframe: false, tenantId: undefined, status: 1, orderNo: 100 };
 	if (userStore.userInfos.accountType == 999) data.tenantId = state.queryParams.tenantId;
 	state.editMenuTitle = '添加菜单';

+ 7 - 4
Web/src/views/system/org/component/orgTree.vue

@@ -2,7 +2,7 @@
 	<el-card class="box-card" shadow="hover" style="height: 100%" body-style="height:100%; overflow:auto">
 		<template #header>
 			<div class="card-header">
-				<div class="tree-h-flex">
+				<div class="tree-h-flex" v-if="!props.tenantId">
 					<el-select v-if="userStore.userInfos.accountType == 999" v-model="state.tenantId" @change="initTreeData()" placeholder="请选择租户" class="w100 mb10">
 						<el-option :value="item.value" :label="`${item.label} (${item.host})`" v-for="(item, index) in state.tenantList" :key="index" />
 					</el-select>
@@ -66,16 +66,19 @@ import {SysOrgApi, SysTenantApi} from '/@/api-services/api';
 import { SysOrg } from '/@/api-services/models';
 import { useUserInfo } from "/@/stores/userInfo";
 
+const props = defineProps({
+	tenantId: Number,
+});
 const userStore = useUserInfo();
 const filterText = ref('');
 const treeRef = ref<InstanceType<typeof ElTree>>();
 const state = reactive({
 	loading: false,
-	tenantList: [],
-	tenantId: undefined as Number,
+	tenantList: [] as Array<any>,
+	tenantId: props.tenantId as number,
 	orgData: [] as Array<SysOrg>,
 	isShowCheckbox: false,
-	ownOrgData: [],
+	ownOrgData: [] as Array<SysOrg>,
 });
 
 onMounted( async () => {

+ 1 - 1
Web/src/views/system/print/component/editPrint.vue

@@ -106,7 +106,7 @@ onMounted(async () => {});
 // 打开弹窗
 const openDialog = (row: any) => {
 	state.ruleForm = JSON.parse(JSON.stringify(row));
-	if (JSON.stringify(state.ruleForm) !== '{}') {
+	if (state.ruleForm?.template) {
 		let templateJson = JSON.parse(state.ruleForm.template);
 		mode.value = templateJson.panels[0].index;
 	}

+ 2 - 8
Web/src/views/system/role/component/editRole.vue

@@ -65,7 +65,7 @@
 </template>
 
 <script lang="ts" setup name="sysEditRole">
-import { onMounted, reactive, ref } from 'vue';
+import { reactive, ref } from 'vue';
 import type { ElTree } from 'element-plus';
 
 import { getAPI } from '/@/utils/axios-utils';
@@ -85,15 +85,9 @@ const state = reactive({
 	menuData: [] as Array<SysMenu>, // 菜单数据
 });
 
-onMounted(async () => {
-	state.loading = true;
-	var res = await getAPI(SysMenuApi).apiSysMenuListGet();
-	state.menuData = res.data.result ?? [];
-	state.loading = false;
-});
-
 // 打开弹窗
 const openDialog = async (row: any) => {
+	state.menuData = await getAPI(SysMenuApi).apiSysMenuListGet(undefined, undefined, row?.tenantId).then((res) => res.data.result ?? []);
 	ruleFormRef.value?.resetFields();
 	treeRef.value?.setCheckedKeys([]); // 清空选中值
 	state.ruleForm = JSON.parse(JSON.stringify(row));

+ 2 - 3
Web/src/views/system/role/component/grantData.vue

@@ -16,7 +16,7 @@
 					</el-col>
 					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl1="24" v-show="state.ruleForm.dataScope === 5">
 						<el-form-item label="机构列表:">
-							<OrgTree ref="orgTreeRef" class="w100" />
+							<OrgTree ref="orgTreeRef" class="w100" :tenant-id="state.ruleForm.tenantId" />
 						</el-form-item>
 					</el-col>
 				</el-row>
@@ -36,13 +36,12 @@ import { reactive, ref } from 'vue';
 import OrgTree from '/@/views/system/org/component/orgTree.vue';
 import { getAPI } from '/@/utils/axios-utils';
 import { SysRoleApi } from '/@/api-services/api';
-import { RoleOrgInput } from '/@/api-services/models';
 
 const emits = defineEmits(['handleQuery']);
 const orgTreeRef = ref();
 const state = reactive({
 	isShowDialog: false,
-	ruleForm: {} as RoleOrgInput
+	ruleForm: {} as any
 });
 
 // 打开弹窗