Browse Source

Merge branch 'master' of http://git.mydig.net/Sagoo-Cloud/sagoo-admin-ui

yukai 3 years ago
parent
commit
94e3a23963

+ 9 - 6
src/layout/routerView/link.vue

@@ -1,9 +1,9 @@
 <template>
-	<div class="layout-view-bg-white flex layout-view-link" :style="{ height: `calc(100vh - ${setLinkHeight}` }">
-		<a :href="currentRoutemeta?.isLink" target="_blank" rel="opener" class="flex-margin">
-			{{ currentRoutemeta?.title.indexOf('.')>0?$t(currentRoutemeta?.title):currentRoutemeta?.title }}:{{ currentRoutemeta?.isLink }}
-		</a>
-	</div>
+  <div class="layout-view-bg-white flex layout-view-link" :style="{ height: `calc(100vh - ${setLinkHeight}` }">
+    <a :href="currentRouteMeta?.linkUrl" target="_blank" rel="opener" class="flex-margin">
+      {{ currentRouteMeta?.title.indexOf('.')>0?$t(currentRouteMeta?.title):currentRouteMeta?.title }}:{{ currentRouteMeta?.linkUrl }}
+    </a>
+  </div>
 </template>
 
 <script lang="ts">
@@ -15,11 +15,13 @@ import { useStore } from '/@/store/index';
 interface LinkViewState {
 	currentRouteMeta: {
 		isLink: string;
+		linkUrl: string;
 		title: string;
 	};
 }
 interface LinkViewRouteMeta extends RouteMeta {
 	isLink: string;
+	linkUrl: string;
 	title: string;
 }
 
@@ -31,6 +33,7 @@ export default defineComponent({
 		const state = reactive<LinkViewState>({
 			currentRouteMeta: {
 				isLink: '',
+				linkUrl: '',
 				title: '',
 			},
 		});
@@ -44,7 +47,7 @@ export default defineComponent({
 		watch(
 			() => route.path,
 			() => {
-				state.currentRouteMeta = <LinkViewRouteMeta>route.meta;
+				state.currentRouteMeta = route.meta as LinkViewRouteMeta;
 			},
 			{
 				immediate: true,

+ 1 - 1
src/router/backEnd.ts

@@ -89,7 +89,7 @@ export function backEndComponent(routes: any) {
 			isHide: item.isHide,
 			isIframe: item.isIframe,
 			isKeepAlive: item.isKeepAlive,
-			isLink: item.isLink,
+			isLink: item.linkUrl || item.isLink,
 			linkUrl: item.linkUrl,
 			title: item.title,
 		}

+ 8 - 8
src/views/system/dept/component/edit.vue

@@ -3,7 +3,7 @@
     <el-dialog :title="(ruleForm.deptId?'修改':'添加')+'部门'" v-model="isShowDialog" width="769px">
       <el-form ref="formRef" :model="ruleForm" :rules="rules" size="default" label-width="90px">
         <el-row :gutter="35">
-          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
             <el-form-item label="所属组织" prop="organizationId">
               <el-cascader :options="orgData" :props="{ checkStrictly: true,emitPath: false, value: 'id', label: 'name' }" placeholder="请选择组织" clearable class="w100" v-model="ruleForm.organizationId">
                 <template #default="{ node, data }">
@@ -13,7 +13,7 @@
               </el-cascader>
             </el-form-item>
           </el-col>
-          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
             <el-form-item label="上级部门">
               <el-cascader :options="deptData" :props="{ checkStrictly: true,emitPath: false, value: 'deptId', label: 'deptName' }" placeholder="请选择部门" clearable class="w100" v-model="ruleForm.parentId">
                 <template #default="{ node, data }">
@@ -23,32 +23,32 @@
               </el-cascader>
             </el-form-item>
           </el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
             <el-form-item label="部门名称" prop="deptName">
               <el-input v-model="ruleForm.deptName" placeholder="请输入部门名称" clearable></el-input>
             </el-form-item>
           </el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
             <el-form-item label="负责人" prop="leader">
               <el-input v-model="ruleForm.leader" placeholder="请输入负责人" clearable></el-input>
             </el-form-item>
           </el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
             <el-form-item label="手机号" prop="phone">
               <el-input v-model="ruleForm.phone" placeholder="请输入手机号" clearable></el-input>
             </el-form-item>
           </el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
             <el-form-item label="邮箱" prop="email">
               <el-input v-model="ruleForm.email" placeholder="请输入" clearable></el-input>
             </el-form-item>
           </el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
             <el-form-item label="排序">
               <el-input-number v-model="ruleForm.orderNum" :min="0" :max="999" controls-position="right" placeholder="请输入排序" class="w100" />
             </el-form-item>
           </el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
             <el-form-item label="部门状态">
               <el-switch v-model="ruleForm.status" :active-value="1" :inactive-value="0" inline-prompt active-text="启" inactive-text="禁"></el-switch>
             </el-form-item>

+ 51 - 12
src/views/system/role/component/permission.vue

@@ -16,9 +16,9 @@
           </el-dropdown-menu>
         </template>
       </el-dropdown>
-      <el-button :disabled="step <= 0" @click="step--">上一步</el-button>
+      <el-button :disabled="step <= 0" @click="prev">上一步</el-button>
       <el-button :disabled="step >= 3" @click="next">下一步</el-button>
-      <el-button type="primary" :loading="btnLoading" :disabled="step < 3">确定</el-button>
+      <el-button type="primary" :loading="btnLoading" :disabled="step < 3" @click="submit">确定</el-button>
       <el-button @click="cancel">取消</el-button>
     </div>
     <el-steps :active="step" simple>
@@ -28,7 +28,7 @@
       <el-step title="接口权限" />
     </el-steps>
     <div class="scroll-part mt-3">
-      <el-tree ref="treeRef" :data="menuData" show-checkbox default-expand-all node-key="id" highlight-current :props="defaultProps" check-on-click-node :expand-on-click-node="false" />
+      <el-tree ref="treeRef" :data="treeData" show-checkbox default-expand-all node-key="id" highlight-current :props="defaultProps" check-on-click-node :expand-on-click-node="false" @check-change="checkChange" />
     </div>
   </el-dialog>
 </template>
@@ -41,10 +41,20 @@ const btnLoading = ref(false);
 const step = ref(0);
 const treeRef = ref();
 const title = ref('角色权限设置');
+const roleId = ref(0);
+const treeData = ref([]);
 const menuData = ref([]);
+const buttonData = ref([]);
+const listData = ref([]);
+const apiData = ref([]);
 const menuIds = ref([]);
+const buttonIds = ref([]);
+const columnIds = ref([]);
+const apiIds = ref([]);
 
 const typeList = ['menu', 'button', 'column', 'api'];
+const idsList = [menuIds, buttonIds, columnIds, apiIds];
+const treeDataList = [menuData, buttonData, listData, apiData];
 const defaultProps = {
 	children: 'children',
 	label: 'name',
@@ -52,25 +62,54 @@ const defaultProps = {
 
 const openDialog = async (row: any) => {
 	title.value = '角色权限设置 - ' + row.name;
+	roleId.value = row.id;
 	isShowDialog.value = true;
 	let res = await api.role.auth.getList(typeList[step.value]);
-	console.log(res);
+	// console.log(res);
+	treeData.value = res;
 	menuData.value = res;
 };
 const cancel = () => {
 	isShowDialog.value = false;
 };
+
+const prev = async () => {
+	const currentStep = step.value;
+	const prevStep = step.value - 1;
+	// 获取选中id
+	const val = treeRef.value.getCheckedKeys(currentStep === 0 ? false : true);
+	idsList[currentStep].value = val;
+	treeData.value = treeDataList[prevStep].value;
+	treeRef.value.setCheckedKeys(idsList[prevStep].value);
+	step.value = prevStep;
+};
+
 const next = async () => {
-	if (step.value === 0) {
-		const val = treeRef.value.getCheckedKeys(true);
-		console.log(val);
-		menuIds.value = val;
-		let res = await api.role.auth.getList(typeList[step.value + 1], val);
-		console.log(res);
-	}
+	const nextStep = step.value + 1;
+	let res = await api.role.auth.getList(typeList[nextStep], menuIds.value);
+	// console.log(res);
+	treeData.value = res;
+	treeDataList[nextStep].value = res;
+	treeRef.value.setCheckedKeys(idsList[nextStep].value);
+
+	step.value = nextStep;
+};
+
+const checkChange = () => {
+	idsList[step.value].value = treeRef.value.getCheckedKeys(step.value === 0 ? false : true);
+};
+const submit = async () => {
+	const data = {
+		menuIds: menuIds.value,
+		buttonIds: buttonIds.value,
+		columnIds: columnIds.value,
+		apiIds: apiIds.value,
+		roleId: roleId.value,
+	};
+	console.log(data);
 };
 
-// openDialog({ name: '超级管理员' });
+openDialog({ name: '超级管理员', id: 3 });
 
 defineExpose({ openDialog });
 </script>