diff --git a/.vscode/settings.json b/.vscode/settings.json index 8559b270b3f5a96a43beed70cbe8f073653cc5b0..651518ef7bd149910ea6c0ea6d65b2af1b2ea8a5 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -3,6 +3,6 @@ "eslint.format.enable": true, "eslint.validate": ["html", "javascript", "jsx", "typescript", "tsx"], "editor.codeActionsOnSave": { - "source.fixAll.eslint": true + "source.fixAll.eslint": "explicit" } } diff --git a/package.json b/package.json index 7fb6919d79df93343b81d487acdb5a5bda47039c..01ea37e31e2bff0817d469a6c1dc2d6af75c8687 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "react-dom": "^18.2.0" }, "devDependencies": { - "@ainiteam/quick-react-ui": "0.0.0-alpha.2", + "@ainiteam/quick-react-ui": "0.0.0-alpha.3", "@ant-design/icons": "^5.2.6", "@reduxjs/toolkit": "^2.0.1", "@types/crypto-js": "^4.2.1", diff --git a/src/api/system/role.ts b/src/api/system/role.ts index 33ce81b2e6a7d949977cab4cf8b65f889ca9bce3..c83412f4bd0fd464037f34502fb16621bc4f43ad 100644 --- a/src/api/system/role.ts +++ b/src/api/system/role.ts @@ -8,29 +8,29 @@ export { getDeptList } from "./dept"; *@Date: 2022-11-28 11:57:27 */ export const getRoleList = (): Promise>> => { - return request>>({ - url: api, - method: "GET" - }); + return request>>({ + url: api, + method: "GET", + }); }; export const addRole = (data: IRole) => { - return request({ - url: api, - method: "POST", - data - }); + return request({ + url: api, + method: "POST", + data, + }); }; export const updateRole = (data: IRole) => { - const { id } = data; - return request({ - url: `${api}/${id}`, - method: "PUT", - data - }); + const { id } = data; + return request({ + url: `${api}/${id}`, + method: "PUT", + data, + }); }; export const deleteRole = (id: number) => { - return request({ - url: `${api}/${id}`, - method: "DELETE" - }); + return request({ + url: `${api}/${id}`, + method: "DELETE", + }); }; diff --git a/src/layout/components/AiniMenu/index.tsx b/src/layout/components/AiniMenu/index.tsx index 918b191fb9e3cff306ac268dcfad61cc55078135..666b468ad9f3a1691ce2be9b6871ae876d282279 100644 --- a/src/layout/components/AiniMenu/index.tsx +++ b/src/layout/components/AiniMenu/index.tsx @@ -79,42 +79,43 @@ const AiniMenu: FC = (props: PropType) => { homeMenuClick(); }, }); - menuList.forEach((menu: IMenubar) => { - items.push({ - key: menu.menuId, - icon: , - label: menu.menuName, - // onClick: ({ domEvent}) => { - // domEvent.stopPropagation(); - // menuClick(menu); - // }, - children: menu.children.map((child: IMenubar) => { - return { - key: child.menuId, - icon: , - label: child.menuName, - onClick: ({ domEvent }) => { - domEvent.stopPropagation(); - menuClick(child); - }, - children: - child.children.length <= 0 - ? undefined - : child.children.map((child2: IMenubar) => { - return { - key: child2.menuId, - icon: , - label: child2.menuName, - onClick: ({ domEvent }) => { - domEvent.stopPropagation(); - menuClick(child2); - }, - }; - }), - }; - }), + menuList && + menuList.forEach((menu: IMenubar) => { + items.push({ + key: menu.menuId, + icon: , + label: menu.menuName, + // onClick: ({ domEvent}) => { + // domEvent.stopPropagation(); + // menuClick(menu); + // }, + children: menu.children.map((child: IMenubar) => { + return { + key: child.menuId, + icon: , + label: child.menuName, + onClick: ({ domEvent }) => { + domEvent.stopPropagation(); + menuClick(child); + }, + children: + child.children.length <= 0 + ? undefined + : child.children.map((child2: IMenubar) => { + return { + key: child2.menuId, + icon: , + label: child2.menuName, + onClick: ({ domEvent }) => { + domEvent.stopPropagation(); + menuClick(child2); + }, + }; + }), + }; + }), + }); }); - }); return ( { }); return arr; }; - //列表转下拉框树 export const listToSelectTree = (data: any, pId: any, options?: any) => { const defaultOptions = { @@ -88,7 +87,7 @@ export const listToSelectTree = (data: any, pId: any, options?: any) => { pId: "pId", sort: "sort", }; - const value = options && options ? options : defaultOptions; + const value = options && options.value ? options.value : defaultOptions.value; const label = options && options.label ? options.label : defaultOptions.label; const parentId = options && options.pId ? options.pId : defaultOptions.pId; const arr: any = []; diff --git a/src/views/system/role/index.tsx b/src/views/system/role/index.tsx index ac7355311c53259cf73a59334b6075d89fa6eee7..4f3f66d4a8a2cbff57d9e42a3c6ca975e8dba0e8 100644 --- a/src/views/system/role/index.tsx +++ b/src/views/system/role/index.tsx @@ -1,56 +1,51 @@ import { useState } from "react"; +// import { useDispatch, useSelector } from "react-redux"; import { Modal, message } from "antd"; import { ExclamationCircleFilled } from "@ant-design/icons"; import { IActionbar, IColumn, IFormItem, - // IPage, Crud, IDialogTitle, - // IToolbar, } from "@ainiteam/quick-react-ui"; import "./index.less"; +import { listToSelectTree, validatePermission } from "@/utils"; import { IDept, IRole } from "@/types"; import { getRoleList, addRole, updateRole, - // deleteRole, deleteRole, - // resetRolePassword, - // enableRole, - // disableRole, getDeptList, } from "@/api/system/role"; -import { listToSelectTree } from "@/utils"; -// import Crud from "node_modules/@ainiteam/quick-react-ui/dist/src/crud/crud"; +// import { AppDispatch, RootState } from "@/store"; +// import { getPermissionBtns } from "@/store/modules/user"; const Role: React.FC = () => { const { confirm } = Modal; - const [deptDataList, setDeptDataList] = useState([]); - - const [deptTreeData, setDeptTreeData] = useState([]); - + // const dispatch: AppDispatch = useDispatch(); + // const { activeTab } = useSelector((state: RootState) => state.tab); /** * 属性 */ const [loading, setLoading] = useState(false); const [tableDataList, setTableDataList] = useState([]); + const [deptDataList, setDeptDataList] = useState([]); + const [deptTreeData, setDeptTreeData] = useState([]); + // const permissionBtn = dispatch( + // getPermissionBtns(activeTab) + // ) as IUserPermissionButton; - const handleBatchDelete = (data: any, done: any) => { - const { ids } = data; - confirm({ - title: "警告", - icon: , - content: "你真的删除选择的角色吗?", - onOk() { - deleteRole(ids).then(() => { - message.success("角色删除成功"); - done(); - }); - }, - }); + /** + * 工具栏 + */ + const tableToolbar = { + hiddenBatchDeleteButton: true, + hiddenImportButton: true, + hiddenExportButton: true, + hiddenPrintButton: true, + // hiddenAddButton: !validatePermission(permissionBtn?.add), }; /** @@ -83,7 +78,6 @@ const Role: React.FC = () => { trigger: "blur", }, { - // validator: validateRoleId, trigger: "blur", }, ], @@ -100,10 +94,6 @@ const Role: React.FC = () => { message: "请输入角色名", trigger: "blur", }, - // { - // // validator: validateRoleName, - // trigger: "blur", - // }, ], }, { @@ -122,9 +112,19 @@ const Role: React.FC = () => { }, ], }, + { + label: "描述", + labelWidth: "80px", + vModel: "remark", + type: "textarea", + prop: "remark", + // options: deptTreeData, + }, ]; const handleFormSubmit = (form: IRole, done: any) => { const row = { ...form }; + row.deptId = form.deptId ? form.deptId : 0; + console.log("row", row); if (row.id) { console.log("updateRole", row); updateRole(row).then(() => { @@ -144,7 +144,22 @@ const Role: React.FC = () => { /** * 操作栏 */ - + const handleDelete = (item: IRole, done: any) => { + confirm({ + title: "警告", + icon: , + content: `你真的删除【${item.roleName}】的用户吗?`, + onOk() { + if (!item.id) { + return; + } + deleteRole(item.id).then(() => { + message.success("用户删除成功"); + done(); + }); + }, + }); + }; const tableActionbar: IActionbar = { width: 300, // hiddenEditButton: !validatePermission(permissionBtn?.edit), @@ -158,7 +173,7 @@ const Role: React.FC = () => { */ const tableColumns: IColumn[] = [ { - width: "100", + width: "200", label: "角色编号", prop: "roleId", }, @@ -172,7 +187,7 @@ const Role: React.FC = () => { width: "200", label: "所属部门", prop: "deptId", - format(row: IRole) { + render(row: IRole) { console.log("拿到的所属部门", deptDataList); const dept = deptDataList?.find((x: IDept) => x.id === row.deptId); @@ -191,22 +206,9 @@ const Role: React.FC = () => { }, ]; - /** - * 工具栏 - */ - const tableToolbar = { - hiddenBatchDeleteButton: true, - hiddenImportButton: true, - hiddenExportButton: true, - hiddenPrintButton: true, - // hiddenAddButton: !validatePermission(permissionBtn.value?.add) - }; - // /** - // * 加载部门下拉框数据 - // */ + //加载部门下拉框数据 const loadDeptSelectData = () => { getDeptList().then((res: any) => { - // debugger; const { data: deptList } = res; setDeptDataList([...deptList]); const deptTree = listToSelectTree(deptList, 0, { @@ -250,14 +252,13 @@ const Role: React.FC = () => { tableColumns={tableColumns} tableActionbar={tableActionbar} tableToolbar={tableToolbar} - pagebar={false} loading={loading} + pagebar={false} rowEdit={true} displayNumber={true} onLoad={loadData} onFormSubmit={handleFormSubmit} - // onDelete={handleDelete} - onBatchDelete={handleBatchDelete} + onDelete={handleDelete} > );