Browse Source

增加岗位管理,部门管理,角色管理的按钮权限和列表权限,并增加列表权限的快速设置及回车监听

yanglzh 2 năm trước cách đây
mục cha
commit
25d66f3ff3

+ 10 - 17
src/views/system/manage/dept/index.vue

@@ -20,7 +20,7 @@
 							</el-icon>
 							查询
 						</el-button>
-						<el-button size="default" type="success" class="ml10" @click="onOpenAddDept">
+						<el-button size="default" type="success" class="ml10" @click="onOpenAddDept" v-auth="'add'">
 							<el-icon>
 								<ele-FolderAdd />
 							</el-icon>
@@ -29,28 +29,21 @@
 					</el-form-item>
 				</el-form>
 			</div>
-			<el-table
-				:data="tableData.data"
-				style="width: 100%"
-				row-key="deptId"
-				default-expand-all
-				:tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
-				v-loading="tableData.loading"
-			>
-				<el-table-column prop="deptName" label="部门名称" show-overflow-tooltip> </el-table-column>
-				<el-table-column prop="status" label="部门状态" align="center" min-width="120">
+			<el-table :data="tableData.data" style="width: 100%" row-key="deptId" default-expand-all :tree-props="{ children: 'children', hasChildren: 'hasChildren' }" v-loading="tableData.loading">
+				<el-table-column prop="deptName" label="部门名称" v-col="'handle'" show-overflow-tooltip> </el-table-column>
+				<el-table-column prop="status" label="部门状态" v-col="'status'" align="center" min-width="120">
 					<template #default="scope">
 						<el-tag type="success" size="small" v-if="scope.row.status === 1">启用</el-tag>
 						<el-tag type="info" size="small" v-else>禁用</el-tag>
 					</template>
 				</el-table-column>
-				<el-table-column prop="orderNum" label="排序" align="center" min-width="120"></el-table-column>
-				<el-table-column prop="createdAt" label="创建时间" align="center" min-width="180"></el-table-column>
-				<el-table-column label="操作" align="center" width="140">
+				<el-table-column prop="orderNum" label="排序" v-col="'orderNum'" align="center" min-width="120"></el-table-column>
+				<el-table-column prop="createdAt" label="创建时间" v-col="'createdAt'" align="center" min-width="180"></el-table-column>
+				<el-table-column label="操作" align="center" width="140" v-col="'handle'">
 					<template #default="scope">
-						<el-button size="small" type="text" @click="onOpenAddDept(scope.row)" v-auth="'edit'">新增</el-button>
-						<el-button size="small" text type="warning" @click="onOpenEditDept(scope.row)">修改</el-button>
-						<el-button size="small" text type="danger" @click="onTabelRowDel(scope.row)">删除</el-button>
+						<el-button size="small" type="text" @click="onOpenAddDept(scope.row)" v-auth="'add'">新增</el-button>
+						<el-button size="small" text type="warning" @click="onOpenEditDept(scope.row)" v-auth="'edit'">修改</el-button>
+						<el-button size="small" text type="danger" @click="onTabelRowDel(scope.row)" v-auth="'del'">删除</el-button>
 					</template>
 				</el-table-column>
 			</el-table>

+ 1 - 1
src/views/system/manage/org/index.vue

@@ -40,7 +40,7 @@
 				</el-table-column>
 				<el-table-column prop="orderNum" label="排序" align="center" min-width="120" v-col="'orderNum'"></el-table-column>
 				<el-table-column prop="createdAt" label="创建时间" align="center" min-width="180" v-col="'createdAt'"></el-table-column>
-				<el-table-column label="操作" align="center" width="140">
+				<el-table-column label="操作" align="center" v-col="'handle'" width="140">
 					<template #default="scope">
 						<el-button size="small" type="text" @click="onOpenAddDept(scope.row)" v-auth="'add'">新增</el-button>
 						<el-button size="small" text type="warning" @click="onOpenEditDept(scope.row)" v-auth="'edit'">修改</el-button>

+ 10 - 10
src/views/system/manage/post/index.vue

@@ -23,7 +23,7 @@
 							</el-icon>
 							查询
 						</el-button>
-						<el-button size="default" type="success" class="ml10" @click="onOpenAddPost">
+						<el-button size="default" type="success" class="ml10" @click="onOpenAddPost" v-auth="'add'">
 							<el-icon>
 								<ele-FolderAdd />
 							</el-icon>
@@ -41,21 +41,21 @@
 			<el-table :data="tableData.data" style="width: 100%" @selection-change="handleSelectionChange" row-key="postId" :tree-props="{ children: 'children', hasChildren: 'hasChildren' }" v-loading="tableData.loading">
 				<el-table-column type="selection" width="55" align="center" />
 				<el-table-column type="index" label="序号" width="60" align="center" />
-				<el-table-column prop="postCode" label="岗位编码" width="220" show-overflow-tooltip></el-table-column>
-				<el-table-column prop="postName" label="岗位名称" show-overflow-tooltip></el-table-column>
-				<el-table-column prop="postSort" label="排序" width="60" align="center"></el-table-column>
-				<el-table-column prop="status" label="岗位状态" width="120" align="center">
+				<el-table-column prop="postCode" v-col="'postCode'" label="岗位编码" width="220" show-overflow-tooltip></el-table-column>
+				<el-table-column prop="postName" v-col="'postName'" label="岗位名称" show-overflow-tooltip></el-table-column>
+				<el-table-column prop="postSort" v-col="'postSort'" label="排序" width="60" align="center"></el-table-column>
+				<el-table-column prop="status" v-col="'status'" label="岗位状态" width="120" align="center">
 					<template #default="scope">
 						<el-tag type="success" size="small" v-if="scope.row.status === 1">启用</el-tag>
 						<el-tag type="info" size="small" v-else>禁用</el-tag>
 					</template>
 				</el-table-column>
-				<el-table-column prop="remark" label="岗位描述" show-overflow-tooltip></el-table-column>
-				<el-table-column prop="createdAt" label="创建时间" width="180" align="center"></el-table-column>
-				<el-table-column label="操作" width="100">
+				<el-table-column prop="remark" v-col="'remark'" label="岗位描述" show-overflow-tooltip></el-table-column>
+				<el-table-column prop="createdAt" v-col="'createdAt'" label="创建时间" width="180" align="center"></el-table-column>
+				<el-table-column label="操作" width="100" v-col="'handle'">
 					<template #default="scope">
-						<el-button size="small" text type="warning" @click="onOpenEditPost(scope.row)">修改</el-button>
-						<el-button size="small" text type="danger" @click="onRowDel(scope.row)">删除</el-button>
+						<el-button size="small" text type="warning" @click="onOpenEditPost(scope.row)" v-auth="'edit'">修改</el-button>
+						<el-button size="small" text type="danger" @click="onRowDel(scope.row)" v-auth="'del'">删除</el-button>
 					</template>
 				</el-table-column>
 			</el-table>

+ 1 - 1
src/views/system/manage/user/index.vue

@@ -73,7 +73,7 @@
 							</template>
 						</el-table-column>
 						<el-table-column prop="createdAt" label="创建时间" width="180" v-col="'createdAt'" align="center"></el-table-column>
-						<el-table-column label="操作" width="180" align="center" fixed="right">
+						<el-table-column label="操作" width="180" align="center" v-col="'handle'" fixed="right">
 							<template #default="scope">
 								<!-- <el-button size="small" text type="warning" @click="onOpenEditUser(scope.row)" v-auths="['edit','del']">修改</el-button>
                 <el-button size="small" text type="warning" @click="onOpenEditUser(scope.row)" v-auth-all="['edit','del']">修改</el-button> -->

+ 25 - 25
src/views/system/menu/component/btn-form.vue

@@ -1,29 +1,29 @@
 <template>
-  <el-dialog v-model="showDialog" :title="`${formData.id?'编辑按钮':'新增按钮'}`" width="500px" :close-on-click-modal="false" :close-on-press-escape="false">
-    <el-form ref="formRef" :model="formData" :rules="ruleForm" label-width="80px">
-      <el-form-item label="上级" prop="parentId">
-        <el-cascader :options="parentData" :props="{ label: 'name',value: 'id',checkStrictly: true,emitPath: false }" placeholder="请选择上级菜单" clearable class="w100" v-model="formData.parentId"></el-cascader>
-      </el-form-item>
-      <el-form-item label="名称" prop="name">
-        <el-input v-model="formData.name" placeholder="输入名称" />
-      </el-form-item>
-      <el-form-item label="编码" prop="types">
-        <el-input v-model="formData.types" placeholder="输入编码" />
-      </el-form-item>
-      <el-form-item label="状态" prop="status">
-        <el-switch v-model="formData.status" :active-value="1" :inactive-value="0" />
-      </el-form-item>
-      <el-form-item label="说明" prop="description">
-        <el-input v-model="formData.description" type="textarea" :rows="6" />
-      </el-form-item>
-    </el-form>
-    <template #footer>
-      <div class="dialog-footer">
-        <el-button @click="showDialog = false">取消</el-button>
-        <el-button type="primary" @click="onSubmit">确定</el-button>
-      </div>
-    </template>
-  </el-dialog>
+	<el-dialog v-model="showDialog" :title="`${formData.id ? '编辑按钮' : '新增按钮'}`" width="500px" :close-on-click-modal="false" :close-on-press-escape="false">
+		<el-form ref="formRef" :model="formData" :rules="ruleForm" label-width="80px" @keyup.enter.native="onSubmit">
+			<el-form-item label="上级" prop="parentId">
+				<el-cascader :options="parentData" :props="{ label: 'name', value: 'id', checkStrictly: true, emitPath: false }" placeholder="请选择上级菜单" clearable class="w100" v-model="formData.parentId"></el-cascader>
+			</el-form-item>
+			<el-form-item label="名称" prop="name">
+				<el-input v-model="formData.name" placeholder="输入名称" />
+			</el-form-item>
+			<el-form-item label="编码" prop="types">
+				<el-input v-model="formData.types" placeholder="输入编码" />
+			</el-form-item>
+			<el-form-item label="状态" prop="status">
+				<el-switch v-model="formData.status" :active-value="1" :inactive-value="0" />
+			</el-form-item>
+			<el-form-item label="说明" prop="description">
+				<el-input v-model="formData.description" type="textarea" :rows="6" />
+			</el-form-item>
+		</el-form>
+		<template #footer>
+			<div class="dialog-footer">
+				<el-button @click="showDialog = false">取消</el-button>
+				<el-button type="primary" @click="onSubmit">确定</el-button>
+			</div>
+		</template>
+	</el-dialog>
 </template>
 
 <script lang="ts" setup>

+ 47 - 47
src/views/system/menu/component/btn.vue

@@ -1,52 +1,52 @@
 <template>
-  <el-drawer v-model="drawer" :title="title" direction="rtl" size="700px">
-    <div class="p-3">
-      <el-button size="default" type="success" class="mr-3" @click="onAddRow">
-        <el-icon>
-          <ele-FolderAdd />
-        </el-icon>
-        新增按钮
-      </el-button>
+	<el-drawer v-model="drawer" :title="title" direction="rtl" size="700px">
+		<div class="p-3">
+			<el-button size="default" type="success" class="mr-3" @click="onAddRow">
+				<el-icon>
+					<ele-FolderAdd />
+				</el-icon>
+				新增按钮
+			</el-button>
 
-      <el-dropdown @command="addCommonType">
-        <el-button text type="primary">
-          <el-icon>
-            <ele-Plus />
-          </el-icon>常用按钮权限
-        </el-button>
-        <template #dropdown>
-          <el-dropdown-menu>
-            <el-dropdown-item command="add-新增">新增</el-dropdown-item>
-            <el-dropdown-item command="edit-编辑">编辑</el-dropdown-item>
-            <el-dropdown-item command="detail-详情">详情</el-dropdown-item>
-            <el-dropdown-item command="del-删除">删除</el-dropdown-item>
-            <el-dropdown-item command="upload-导入">导入</el-dropdown-item>
-            <el-dropdown-item command="dwonload-导出">导出</el-dropdown-item>
-            <el-dropdown-item command="reset-重置">重置</el-dropdown-item>
-          </el-dropdown-menu>
-        </template>
-      </el-dropdown>
-    </div>
+			<el-dropdown @command="addCommonType">
+				<el-button text type="primary">
+					<el-icon>
+						<ele-Plus />
+					</el-icon>常用按钮权限
+				</el-button>
+				<template #dropdown>
+					<el-dropdown-menu>
+						<el-dropdown-item command="add-新增">新增</el-dropdown-item>
+						<el-dropdown-item command="edit-编辑">编辑</el-dropdown-item>
+						<el-dropdown-item command="detail-详情">详情</el-dropdown-item>
+						<el-dropdown-item command="del-删除">删除</el-dropdown-item>
+						<el-dropdown-item command="upload-导入">导入</el-dropdown-item>
+						<el-dropdown-item command="dwonload-导出">导出</el-dropdown-item>
+						<el-dropdown-item command="reset-重置">重置</el-dropdown-item>
+					</el-dropdown-menu>
+				</template>
+			</el-dropdown>
+		</div>
 
-    <el-table :data="tableData" style="width: 100%" row-key="id" border :tree-props="{ children: 'children', hasChildren: 'hasChildren' }">
-      <el-table-column type="index" label="序号" width="60" align="center" />
-      <el-table-column prop="name" label="按钮名称" width="220" show-overflow-tooltip></el-table-column>
-      <el-table-column prop="types" label="按钮编码" show-overflow-tooltip></el-table-column>
-      <el-table-column prop="status" label="状态" width="100" align="center">
-        <template #default="scope">
-          <el-switch v-model="scope.row.status" inline-prompt :active-value="1" :inactive-value="0" active-text="启" inactive-text="禁" @change="handleStatusChange(scope.row)">
-          </el-switch>
-        </template>
-      </el-table-column>
-      <el-table-column label="操作" width="100" align="center">
-        <template #default="scope">
-          <el-button size="small" text type="warning" @click="onEdit(scope.row)">修改</el-button>
-          <el-button size="small" text type="danger" @click="onDel(scope.row)">删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-  </el-drawer>
-  <btnForm ref="btnFormRef" :parent-data="tableData" @getList="getList"></btnForm>
+		<el-table :data="tableData" style="width: 100%" row-key="id" border :tree-props="{ children: 'children', hasChildren: 'hasChildren' }">
+			<el-table-column type="index" label="序号" width="60" align="center" />
+			<el-table-column prop="name" label="按钮名称" width="220" show-overflow-tooltip></el-table-column>
+			<el-table-column prop="types" label="按钮编码" show-overflow-tooltip></el-table-column>
+			<el-table-column prop="status" label="状态" width="100" align="center">
+				<template #default="scope">
+					<el-switch v-model="scope.row.status" inline-prompt :active-value="1" :inactive-value="0" active-text="启" inactive-text="禁" @change="handleStatusChange(scope.row)">
+					</el-switch>
+				</template>
+			</el-table-column>
+			<el-table-column label="操作" width="100" align="center">
+				<template #default="scope">
+					<el-button size="small" text type="warning" @click="onEdit(scope.row)">修改</el-button>
+					<el-button size="small" text type="danger" @click="onDel(scope.row)">删除</el-button>
+				</template>
+			</el-table-column>
+		</el-table>
+	</el-drawer>
+	<btnForm ref="btnFormRef" :parent-data="tableData" @getList="getList"></btnForm>
 </template>
 
 <script lang="ts" setup>
@@ -70,7 +70,7 @@ const getList = async () => {
 
 const open = async (row: any) => {
 	// console.log(row);
-	title.value = '按钮权限 - ' + row.name;
+	title.value = '按钮权限 - ' + row.title;
 	drawer.value = true;
 	menuRow.value = row;
 	getList();

+ 23 - 23
src/views/system/menu/component/list-form.vue

@@ -1,29 +1,29 @@
 <template>
-  <el-dialog v-model="showDialog" :title="`${formData.id?'编辑显示列':'新增显示列'}`" width="500px" :close-on-click-modal="false" :close-on-press-escape="false">
-    <el-form ref="formRef" :model="formData" :rules="ruleForm" label-width="80px">
-      <!-- <el-form-item label="上级" prop="parentId">
+	<el-dialog v-model="showDialog" :title="`${formData.id ? '编辑显示列' : '新增显示列'}`" width="500px" :close-on-click-modal="false" :close-on-press-escape="false">
+		<el-form ref="formRef" :model="formData" :rules="ruleForm" label-width="80px" @keyup.enter.native="onSubmit">
+			<!-- <el-form-item label="上级" prop="parentId">
         <el-cascader :options="parentData" :props="{ label: 'name',value: 'id',checkStrictly: true,emitPath: false }" placeholder="请选择上级菜单" clearable class="w100" v-model="formData.parentId"></el-cascader>
       </el-form-item> -->
-      <el-form-item label="字段名称" prop="name">
-        <el-input v-model="formData.name" placeholder="字段名称" />
-      </el-form-item>
-      <el-form-item label="字段key" prop="code">
-        <el-input v-model="formData.code" placeholder="输入字段key" />
-      </el-form-item>
-      <el-form-item label="状态" prop="status">
-        <el-switch v-model="formData.status" :active-value="1" :inactive-value="0" />
-      </el-form-item>
-      <el-form-item label="说明" prop="description">
-        <el-input v-model="formData.description" type="textarea" :rows="6" />
-      </el-form-item>
-    </el-form>
-    <template #footer>
-      <div class="dialog-footer">
-        <el-button @click="showDialog = false">取消</el-button>
-        <el-button type="primary" @click="onSubmit">确定</el-button>
-      </div>
-    </template>
-  </el-dialog>
+			<el-form-item label="字段名称" prop="name">
+				<el-input v-model="formData.name" placeholder="字段名称" />
+			</el-form-item>
+			<el-form-item label="字段key" prop="code">
+				<el-input v-model="formData.code" placeholder="输入字段key" />
+			</el-form-item>
+			<el-form-item label="状态" prop="status">
+				<el-switch v-model="formData.status" :active-value="1" :inactive-value="0" />
+			</el-form-item>
+			<el-form-item label="说明" prop="description">
+				<el-input v-model="formData.description" type="textarea" :rows="6" />
+			</el-form-item>
+		</el-form>
+		<template #footer>
+			<div class="dialog-footer">
+				<el-button @click="showDialog = false">取消</el-button>
+				<el-button type="primary" @click="onSubmit">确定</el-button>
+			</div>
+		</template>
+	</el-dialog>
 </template>
 
 <script lang="ts" setup>

+ 61 - 30
src/views/system/menu/component/list.vue

@@ -1,34 +1,48 @@
 <template>
-  <el-drawer v-model="drawer" :title="title" direction="rtl" size="700px">
-    <div class="p-3">
-      <el-button size="default" type="success" class="mr-3" @click="onAddRow">
-        <el-icon>
-          <ele-FolderAdd />
-        </el-icon>
-        新增列
-      </el-button>
-    </div>
+	<el-drawer v-model="drawer" :title="title" direction="rtl" size="700px">
+		<div class="p-3">
+			<el-button size="default" type="success" class="mr-3" @click="onAddRow">
+				<el-icon>
+					<ele-FolderAdd />
+				</el-icon>
+				新增列
+			</el-button>
+			<el-dropdown @command="addCommonType">
+				<el-button text type="primary">
+					<el-icon>
+						<ele-Plus />
+					</el-icon>常用列表权限
+				</el-button>
+				<template #dropdown>
+					<el-dropdown-menu>
+						<el-dropdown-item command="status-状态">状态</el-dropdown-item>
+						<el-dropdown-item command="createdAt-创建时间">创建时间</el-dropdown-item>
+						<el-dropdown-item command="handle-操作">操作</el-dropdown-item>
+					</el-dropdown-menu>
+				</template>
+			</el-dropdown>
+		</div>
 
-    <el-table :data="tableData" style="width: 100%" row-key="id" border :tree-props="{ children: 'children', hasChildren: 'hasChildren' }">
-      <el-table-column type="index" label="序号" width="60" align="center" />
-      <el-table-column prop="name" label="字段名称" width="220" show-overflow-tooltip></el-table-column>
-      <el-table-column prop="code" label="字段key" show-overflow-tooltip></el-table-column>
-      <el-table-column prop="status" label="状态" width="100" align="center">
-        <template #default="scope">
-          <el-switch v-model="scope.row.status" inline-prompt :active-value="1" :inactive-value="0" active-text="启" inactive-text="禁" @change="handleStatusChange(scope.row)">
-          </el-switch>
-        </template>
-      </el-table-column>
-      <el-table-column label="操作" width="100" align="center">
-        <template #default="scope">
-          <el-button size="small" text type="warning" @click="onEdit(scope.row)">修改</el-button>
-          <el-button size="small" text type="danger" @click="onDel(scope.row)">删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-  </el-drawer>
-  <!-- <listForm ref="listFormRef" :parent-data="tableData" @getList="getList"></listForm> -->
-  <listForm ref="listFormRef" @getList="getList"></listForm>
+		<el-table :data="tableData" style="width: 100%" row-key="id" border :tree-props="{ children: 'children', hasChildren: 'hasChildren' }">
+			<el-table-column type="index" label="序号" width="60" align="center" />
+			<el-table-column prop="name" label="字段名称" width="220" show-overflow-tooltip></el-table-column>
+			<el-table-column prop="code" label="字段key" show-overflow-tooltip></el-table-column>
+			<el-table-column prop="status" label="状态" width="100" align="center">
+				<template #default="scope">
+					<el-switch v-model="scope.row.status" inline-prompt :active-value="1" :inactive-value="0" active-text="启" inactive-text="禁" @change="handleStatusChange(scope.row)">
+					</el-switch>
+				</template>
+			</el-table-column>
+			<el-table-column label="操作" width="100" align="center">
+				<template #default="scope">
+					<el-button size="small" text type="warning" @click="onEdit(scope.row)">修改</el-button>
+					<el-button size="small" text type="danger" @click="onDel(scope.row)">删除</el-button>
+				</template>
+			</el-table-column>
+		</el-table>
+	</el-drawer>
+	<!-- <listForm ref="listFormRef" :parent-data="tableData" @getList="getList"></listForm> -->
+	<listForm ref="listFormRef" @getList="getList"></listForm>
 </template>
 
 <script lang="ts" setup>
@@ -50,9 +64,26 @@ const getList = async () => {
 	tableData.value = res || [];
 };
 
+// 添加常用类型
+const addCommonType = async (command: string) => {
+	const [code, name] = command.split('-');
+	const formData: MenuListRow = {
+		parentId: -1,
+		menuId: menuRow.value.id as number,
+		name,
+		code,
+		description: '',
+		status: 1,
+	};
+	await api.menu.list.add(formData);
+	ElMessage.success('操作成功');
+	getList();
+	getBackEndControlRoutes();
+};
+
 const open = async (row: any) => {
 	// console.log(row);
-	title.value = '列表权限 - ' + row.name;
+	title.value = '列表权限 - ' + row.title;
 	drawer.value = true;
 	menuRow.value = row;
 	getList();