react-toolkits 2.22.22 → 2.22.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/lib/{chunk-XQWJ5ZAA.js → chunk-2MBSA3L6.js} +2 -2
  3. package/lib/{chunk-XQWJ5ZAA.js.map → chunk-2MBSA3L6.js.map} +1 -1
  4. package/lib/chunk-AQQVGA3G.js +2 -0
  5. package/lib/chunk-AQQVGA3G.js.map +1 -0
  6. package/lib/{chunk-GUZYFAYW.js → chunk-CZVEA2JJ.js} +2 -2
  7. package/lib/{chunk-GUZYFAYW.js.map → chunk-CZVEA2JJ.js.map} +1 -1
  8. package/lib/chunk-OLBC35WM.js +3 -0
  9. package/lib/chunk-OLBC35WM.js.map +1 -0
  10. package/lib/{chunk-WF6CQ4VD.js → chunk-PRIFREWM.js} +2 -2
  11. package/lib/{chunk-WF6CQ4VD.js.map → chunk-PRIFREWM.js.map} +1 -1
  12. package/lib/{chunk-4LG4V23K.js → chunk-TPXP7CV6.js} +2 -2
  13. package/lib/{chunk-4LG4V23K.js.map → chunk-TPXP7CV6.js.map} +1 -1
  14. package/lib/chunk-UCD6QQ6P.js +2 -0
  15. package/lib/{chunk-A32VE3TQ.js.map → chunk-UCD6QQ6P.js.map} +1 -1
  16. package/lib/{chunk-GD42VZYO.js → chunk-VJ2323FK.js} +2 -2
  17. package/lib/{chunk-GD42VZYO.js.map → chunk-VJ2323FK.js.map} +1 -1
  18. package/lib/{chunk-LGVGDPRR.js → chunk-YQM2SZ3L.js} +2 -2
  19. package/lib/{chunk-LGVGDPRR.js.map → chunk-YQM2SZ3L.js.map} +1 -1
  20. package/lib/{createMenuItem-STIQZAS2.js → createMenuItem-4NN325FZ.js} +2 -2
  21. package/lib/{createMenuItem-STIQZAS2.js.map → createMenuItem-4NN325FZ.js.map} +1 -1
  22. package/lib/index.d.ts +1 -0
  23. package/lib/index.js +1 -1
  24. package/lib/{menuItemList-FO2YJKSU.js → menuItemList-YQ7GEN7E.js} +2 -2
  25. package/lib/{menuItemList-FO2YJKSU.js.map → menuItemList-YQ7GEN7E.js.map} +1 -1
  26. package/lib/{roleDetail-BTJNVKA3.js → roleDetail-SK2DKOBC.js} +2 -2
  27. package/lib/{roleDetail-BTJNVKA3.js.map → roleDetail-SK2DKOBC.js.map} +1 -1
  28. package/lib/{roleList-JLF5HIXG.js → roleList-XW5OFLBW.js} +2 -2
  29. package/lib/{roleList-JLF5HIXG.js.map → roleList-XW5OFLBW.js.map} +1 -1
  30. package/lib/{updateMenuItem-W62ZGTDH.js → updateMenuItem-CZWG6ZF3.js} +2 -2
  31. package/lib/{updateMenuItem-W62ZGTDH.js.map → updateMenuItem-CZWG6ZF3.js.map} +1 -1
  32. package/lib/{userDetail-UNBXTXAK.js → userDetail-QKKXCSJZ.js} +2 -2
  33. package/lib/{userDetail-UNBXTXAK.js.map → userDetail-QKKXCSJZ.js.map} +1 -1
  34. package/lib/{userList-PD5SOROE.js → userList-RTKPCUD7.js} +2 -2
  35. package/lib/{userList-PD5SOROE.js.map → userList-RTKPCUD7.js.map} +1 -1
  36. package/package.json +3 -3
  37. package/lib/chunk-A32VE3TQ.js +0 -2
  38. package/lib/chunk-F6U4XQKJ.js +0 -2
  39. package/lib/chunk-F6U4XQKJ.js.map +0 -1
  40. package/lib/chunk-KXTBMJYF.js +0 -3
  41. package/lib/chunk-KXTBMJYF.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/modules/permission/pages/roleList/index.tsx"],"names":["RoleList","modal","message","App","viewable","usePermission","useTranslation","permissionVersion","useToolkitsStore","s","refetch","useQueryListStore","ky","useKy","showCreateModal","createModal","useRoleModal","showUpdateModal","updateModal","remove","useRemoveRole","handleUpdateBtnClick","record","data","columns","value","jsx","Link","Fragment","_","jsxs","Space","AuthButton_default","Highlight_default","Card","UsergroupAddOutlined","QueryList_default","roleList_default","withContext"],"mappings":"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","file":"roleList-JLF5HIXG.js","sourcesContent":["import { UsergroupAddOutlined } from '@ant-design/icons'\nimport type { TableColumnsType } from 'antd'\nimport { App, Card, Space } from 'antd'\nimport { Link } from 'react-router-dom'\n\nimport { AuthButton, Highlight, QueryList, useQueryListStore, useToolkitsStore, withContext } from '@/components'\nimport { PermissionVersion } from '@/constants'\nimport { useKy } from '@/libs'\nimport { useTranslation } from '@/locale'\nimport { usePermission } from '@/services'\n\nimport { useRoleModal } from '../../hooks'\nimport { useRemoveRole } from '../../services'\nimport type { RoleListItem, RoleV1, RoleV2 } from '../../types'\n\nconst RoleList = () => {\n const { modal, message } = App.useApp()\n const { data: viewable } = usePermission('200005')\n const { t } = useTranslation()\n const { permissionVersion } = useToolkitsStore(s => s)\n const { refetch } = useQueryListStore()\n const ky = useKy()\n\n const { show: showCreateModal, modal: createModal } = useRoleModal({\n mode: 'create',\n onSuccess() {\n refetch('role-list', { page: 1 })\n },\n })\n const { show: showUpdateModal, modal: updateModal } = useRoleModal({\n mode: 'update',\n onSuccess() {\n refetch('role-list')\n },\n })\n\n const remove = useRemoveRole()\n\n const handleUpdateBtnClick = async (record: RoleListItem) => {\n const data = await ky.get<RoleV1 | RoleV2>(\n `/api/usystem/role/info${permissionVersion === PermissionVersion.V2 ? 'V2' : ''}?name=${record.name}`,\n )\n\n showUpdateModal({\n initialValues: {\n permissions: data.permissions,\n name: data.name.replace(/^role_/, ''),\n },\n extraValues: {\n id: data?.id,\n },\n })\n }\n\n const columns: TableColumnsType<RoleListItem> = [\n {\n title: t('global.name'),\n key: 'name',\n render(value: RoleListItem) {\n if (viewable) {\n return (\n <Link to={`${value.name}`} relative=\"path\">\n {value.name}\n </Link>\n )\n } else {\n return <>{value.name}</>\n }\n },\n },\n {\n title: 'ID',\n dataIndex: 'id',\n key: 'id',\n },\n {\n title: t('global.creationTime'),\n dataIndex: 'ctime',\n key: 'ctime',\n },\n {\n title: t('global.operation'),\n width: 150,\n align: 'center',\n render: (_, record) => {\n return (\n <Space size=\"small\">\n <AuthButton\n code=\"200003\"\n size=\"small\"\n type=\"link\"\n onClick={async () => {\n handleUpdateBtnClick(record)\n }}\n >\n {t('global.update')}\n </AuthButton>\n <AuthButton\n danger\n code=\"200004\"\n size=\"small\"\n type=\"link\"\n onClick={() => {\n modal.confirm({\n title: t('Role.deleteTitle'),\n content: (\n <Highlight texts={[record.name]}>{t('Role.deleteContent', { role: record.name })}</Highlight>\n ),\n async onOk() {\n await remove.mutate({\n id: record.id,\n name: record.name,\n })\n\n refetch('role-list')\n\n message.success(t('Role.deleteSuccessfully'))\n },\n })\n }}\n >\n {t('global.delete')}\n </AuthButton>\n </Space>\n )\n },\n },\n ]\n\n return (\n <>\n <Card\n title={t('global.role')}\n extra={\n <AuthButton\n type=\"primary\"\n code=\"200002\"\n icon={<UsergroupAddOutlined />}\n onClick={() => {\n showCreateModal()\n }}\n >\n {t('Role.createTitle')}\n </AuthButton>\n }\n >\n <QueryList<RoleListItem, undefined, { List: RoleListItem[]; Total: number }>\n identifier=\"role-list\"\n rowKey=\"name\"\n columns={columns}\n code=\"200001\"\n request={{\n url: '/api/usystem/role/list',\n method: 'GET',\n }}\n dataAdapter={data => ({\n total: data?.Total,\n items: data?.List,\n })}\n />\n </Card>\n {createModal}\n {updateModal}\n </>\n )\n}\n\nexport default withContext(RoleList, {\n isGlobal: true,\n})\n"]}
1
+ {"version":3,"sources":["../src/modules/permission/pages/roleList/index.tsx"],"names":["RoleList","modal","message","App","viewable","usePermission","useTranslation","permissionVersion","useToolkitsStore","s","refetch","useQueryListStore","ky","useKy","showCreateModal","createModal","useRoleModal","showUpdateModal","updateModal","remove","useRemoveRole","handleUpdateBtnClick","record","data","columns","value","jsx","Link","Fragment","_","jsxs","Space","AuthButton_default","Highlight_default","Card","UsergroupAddOutlined","QueryList_default","roleList_default","withContext"],"mappings":"idAeMA,CAAW,CAAA,IAAM,CACrB,GAAM,CAAE,MAAAC,CAAO,CAAA,OAAA,CAAAC,CAAQ,CAAIC,CAAAA,GAAAA,CAAI,QACzB,CAAA,CAAE,KAAMC,CAAS,CAAA,CAAIC,EAAc,QAAQ,CAAA,CAC3C,CAAE,CAAE,CAAIC,CAAAA,GAAAA,GACR,CAAE,iBAAA,CAAAC,CAAkB,CAAIC,CAAAA,CAAAA,CAAiBC,GAAKA,CAAC,CAAA,CAC/C,CAAE,OAAAC,CAAAA,CAAQ,EAAIC,CAAkB,EAAA,CAChCC,IAAKC,CAAM,EAAA,CAEX,CAAE,IAAMC,CAAAA,CAAAA,CAAiB,KAAOC,CAAAA,CAAY,CAAIC,CAAAA,CAAAA,CAAa,CACjE,IAAM,CAAA,QAAA,CACN,WAAY,CACVN,CAAAA,CAAQ,YAAa,CAAE,IAAA,CAAM,CAAE,CAAC,EAClC,CACF,CAAC,CAAA,CACK,CAAE,IAAMO,CAAAA,CAAAA,CAAiB,MAAOC,CAAY,CAAA,CAAIF,CAAa,CAAA,CACjE,IAAM,CAAA,QAAA,CACN,WAAY,CACVN,CAAAA,CAAQ,WAAW,EACrB,CACF,CAAC,CAEKS,CAAAA,CAAAA,CAASC,GAETC,CAAAA,CAAAA,CAAuB,MAAOC,CAAyB,EAAA,CAC3D,IAAMC,CAAO,CAAA,MAAMX,IAAG,GACpB,CAAA,CAAA,sBAAA,EAAyBL,CAAsB,GAAA,IAAA,CAAuB,IAAO,CAAA,EAAE,SAASe,CAAO,CAAA,IAAI,EACrG,CAEAL,CAAAA,CAAAA,CAAgB,CACd,aAAe,CAAA,CACb,YAAaM,CAAK,CAAA,WAAA,CAClB,KAAMA,CAAK,CAAA,IAAA,CAAK,QAAQ,QAAU,CAAA,EAAE,CACtC,CACA,CAAA,WAAA,CAAa,CACX,EAAA,CAAIA,CAAM,EAAA,EACZ,CACF,CAAC,EACH,EAEMC,CAA0C,CAAA,CAC9C,CACE,KAAO,CAAA,CAAA,CAAE,aAAa,CACtB,CAAA,GAAA,CAAK,OACL,MAAOC,CAAAA,CAAAA,CAAqB,CAC1B,OAAIrB,CAAAA,CAEAsB,IAACC,IAAA,CAAA,CAAK,EAAI,CAAA,CAAA,EAAGF,CAAM,CAAA,IAAI,GAAI,QAAS,CAAA,MAAA,CACjC,SAAAA,CAAM,CAAA,IAAA,CACT,EAGKC,GAAAE,CAAAA,QAAAA,CAAA,CAAG,QAAAH,CAAAA,CAAAA,CAAM,KAAK,CAEzB,CACF,EACA,CACE,KAAA,CAAO,KACP,SAAW,CAAA,IAAA,CACX,GAAK,CAAA,IACP,CACA,CAAA,CACE,MAAO,CAAE,CAAA,qBAAqB,EAC9B,SAAW,CAAA,OAAA,CACX,IAAK,OACP,CAAA,CACA,CACE,KAAO,CAAA,CAAA,CAAE,kBAAkB,CAC3B,CAAA,KAAA,CAAO,IACP,KAAO,CAAA,QAAA,CACP,OAAQ,CAACI,CAAAA,CAAGP,CAERQ,GAAAA,IAAAA,CAACC,KAAA,CAAA,CAAM,KAAK,OACV,CAAA,QAAA,CAAA,CAAAL,IAACM,GAAA,CAAA,CACC,KAAK,QACL,CAAA,IAAA,CAAK,QACL,IAAK,CAAA,MAAA,CACL,QAAS,SAAY,CACnBX,EAAqBC,CAAM,EAC7B,EAEC,QAAE,CAAA,CAAA,CAAA,eAAe,CACpB,CAAA,CAAA,CACAI,GAACM,CAAAA,GAAAA,CAAA,CACC,MAAM,CAAA,CAAA,CAAA,CACN,KAAK,QACL,CAAA,IAAA,CAAK,QACL,IAAK,CAAA,MAAA,CACL,QAAS,IAAM,CACb/B,EAAM,OAAQ,CAAA,CACZ,MAAO,CAAE,CAAA,kBAAkB,EAC3B,OACEyB,CAAAA,GAAAA,CAACO,GAAA,CAAA,CAAU,KAAO,CAAA,CAACX,EAAO,IAAI,CAAA,CAAI,WAAE,oBAAsB,CAAA,CAAE,KAAMA,CAAO,CAAA,IAAK,CAAC,CAAE,CAAA,CAAA,CAEnF,MAAM,IAAO,EAAA,CACX,MAAMH,CAAO,CAAA,MAAA,CAAO,CAClB,EAAIG,CAAAA,CAAAA,CAAO,EACX,CAAA,IAAA,CAAMA,CAAO,CAAA,IACf,CAAC,CAEDZ,CAAAA,CAAAA,CAAQ,WAAW,CAEnBR,CAAAA,CAAAA,CAAQ,QAAQ,CAAE,CAAA,yBAAyB,CAAC,EAC9C,CACF,CAAC,EACH,CAAA,CAEC,WAAE,eAAe,CAAA,CACpB,GACF,CAGN,CACF,CAEA,CAAA,OACE4B,IAAAF,CAAAA,QAAAA,CAAA,CACE,QAAAF,CAAAA,CAAAA,GAAAA,CAACQ,KAAA,CACC,KAAA,CAAO,EAAE,aAAa,CAAA,CACtB,MACER,GAACM,CAAAA,GAAAA,CAAA,CACC,IAAK,CAAA,SAAA,CACL,KAAK,QACL,CAAA,IAAA,CAAMN,IAACS,oBAAA,CAAA,EAAqB,CAC5B,CAAA,OAAA,CAAS,IAAM,CACbrB,IACF,CAAA,CAEC,WAAE,kBAAkB,CAAA,CACvB,EAGF,QAAAY,CAAAA,GAAAA,CAACU,IAAA,CACC,UAAA,CAAW,YACX,MAAO,CAAA,MAAA,CACP,QAASZ,CACT,CAAA,IAAA,CAAK,SACL,OAAS,CAAA,CACP,GAAK,CAAA,wBAAA,CACL,MAAQ,CAAA,KACV,EACA,WAAaD,CAAAA,CAAAA,GAAS,CACpB,KAAOA,CAAAA,CAAAA,EAAM,MACb,KAAOA,CAAAA,CAAAA,EAAM,IACf,CACF,CAAA,CAAA,CAAA,CACF,EACCR,CACAG,CAAAA,CAAAA,CAAAA,CACH,CAEJ,CAEOmB,CAAAA,CAAAA,CAAQC,EAAYtC,CAAU,CAAA,CACnC,QAAU,CAAA,CAAA,CACZ,CAAC","file":"roleList-XW5OFLBW.js","sourcesContent":["import { UsergroupAddOutlined } from '@ant-design/icons'\nimport type { TableColumnsType } from 'antd'\nimport { App, Card, Space } from 'antd'\nimport { Link } from 'react-router-dom'\n\nimport { AuthButton, Highlight, QueryList, useQueryListStore, useToolkitsStore, withContext } from '@/components'\nimport { PermissionVersion } from '@/constants'\nimport { useKy } from '@/libs'\nimport { useTranslation } from '@/locale'\nimport { usePermission } from '@/services'\n\nimport { useRoleModal } from '../../hooks'\nimport { useRemoveRole } from '../../services'\nimport type { RoleListItem, RoleV1, RoleV2 } from '../../types'\n\nconst RoleList = () => {\n const { modal, message } = App.useApp()\n const { data: viewable } = usePermission('200005')\n const { t } = useTranslation()\n const { permissionVersion } = useToolkitsStore(s => s)\n const { refetch } = useQueryListStore()\n const ky = useKy()\n\n const { show: showCreateModal, modal: createModal } = useRoleModal({\n mode: 'create',\n onSuccess() {\n refetch('role-list', { page: 1 })\n },\n })\n const { show: showUpdateModal, modal: updateModal } = useRoleModal({\n mode: 'update',\n onSuccess() {\n refetch('role-list')\n },\n })\n\n const remove = useRemoveRole()\n\n const handleUpdateBtnClick = async (record: RoleListItem) => {\n const data = await ky.get<RoleV1 | RoleV2>(\n `/api/usystem/role/info${permissionVersion === PermissionVersion.V2 ? 'V2' : ''}?name=${record.name}`,\n )\n\n showUpdateModal({\n initialValues: {\n permissions: data.permissions,\n name: data.name.replace(/^role_/, ''),\n },\n extraValues: {\n id: data?.id,\n },\n })\n }\n\n const columns: TableColumnsType<RoleListItem> = [\n {\n title: t('global.name'),\n key: 'name',\n render(value: RoleListItem) {\n if (viewable) {\n return (\n <Link to={`${value.name}`} relative=\"path\">\n {value.name}\n </Link>\n )\n } else {\n return <>{value.name}</>\n }\n },\n },\n {\n title: 'ID',\n dataIndex: 'id',\n key: 'id',\n },\n {\n title: t('global.creationTime'),\n dataIndex: 'ctime',\n key: 'ctime',\n },\n {\n title: t('global.operation'),\n width: 150,\n align: 'center',\n render: (_, record) => {\n return (\n <Space size=\"small\">\n <AuthButton\n code=\"200003\"\n size=\"small\"\n type=\"link\"\n onClick={async () => {\n handleUpdateBtnClick(record)\n }}\n >\n {t('global.update')}\n </AuthButton>\n <AuthButton\n danger\n code=\"200004\"\n size=\"small\"\n type=\"link\"\n onClick={() => {\n modal.confirm({\n title: t('Role.deleteTitle'),\n content: (\n <Highlight texts={[record.name]}>{t('Role.deleteContent', { role: record.name })}</Highlight>\n ),\n async onOk() {\n await remove.mutate({\n id: record.id,\n name: record.name,\n })\n\n refetch('role-list')\n\n message.success(t('Role.deleteSuccessfully'))\n },\n })\n }}\n >\n {t('global.delete')}\n </AuthButton>\n </Space>\n )\n },\n },\n ]\n\n return (\n <>\n <Card\n title={t('global.role')}\n extra={\n <AuthButton\n type=\"primary\"\n code=\"200002\"\n icon={<UsergroupAddOutlined />}\n onClick={() => {\n showCreateModal()\n }}\n >\n {t('Role.createTitle')}\n </AuthButton>\n }\n >\n <QueryList<RoleListItem, undefined, { List: RoleListItem[]; Total: number }>\n identifier=\"role-list\"\n rowKey=\"name\"\n columns={columns}\n code=\"200001\"\n request={{\n url: '/api/usystem/role/list',\n method: 'GET',\n }}\n dataAdapter={data => ({\n total: data?.Total,\n items: data?.List,\n })}\n />\n </Card>\n {createModal}\n {updateModal}\n </>\n )\n}\n\nexport default withContext(RoleList, {\n isGlobal: true,\n})\n"]}
@@ -1,2 +1,2 @@
1
- import {b}from'./chunk-XQWJ5ZAA.js';import {b as b$1}from'./chunk-GUZYFAYW.js';import {j,l,m,f}from'./chunk-KXTBMJYF.js';import {Editor}from'@monaco-editor/react';import {useQuery}from'@tanstack/react-query';import {App,Form,Card,Input,Switch,InputNumber,Button}from'antd';import {useEffect}from'react';import {useNavigate,useParams}from'react-router-dom';import {jsx,jsxs}from'react/jsx-runtime';var R=j(()=>{let{message:b$2}=App.useApp(),[i]=Form.useForm(),l$1=useNavigate(),{mutate:_}=b(),r=useParams(),{refetch:x}=b$1(),N=l(),{data:p,isLoading:v}=useQuery({queryKey:m.menus.detail(Number(r.id)),queryFn:()=>N.get(`/api/usystem/menu/info?id=${r.id}`),enabled:!!r.id}),q=async n=>{let{permissions:m,front_route:a,...u}=n;await _({...u,permissions:m?JSON.parse(m):void 0,front_route:f+a,id:+r.id}),x(),b$2.success("\u66F4\u65B0\u6210\u529F",.8,()=>l$1("../..",{relative:"route"}));};return useEffect(()=>{let{permissions:n,front_route:m,...a}=p??{},u=JSON.stringify(n||[],null,2),E=m?.replace(f,"");i.setFieldsValue({...a,permissions:u,front_route:E});},[p,i]),jsx(Card,{title:"\u66F4\u65B0\u83DC\u5355\u9879",loading:v,children:jsxs(Form,{scrollToFirstError:!0,form:i,labelCol:{flex:"120px"},initialValues:{is_common:!1,is_model:!1,order:0},onFinish:q,children:[jsx(Form.Item,{label:"\u83DC\u5355\u9879\u540D\u79F0",name:"category",rules:[{required:!0}],children:jsx(Input,{})}),jsx(Form.Item,{label:"\u524D\u7AEF\u8DEF\u7531",name:"front_route",rules:[{required:!0}],children:jsx(Input,{prefix:f})}),jsx(Form.Item,{label:"\u6A21\u677F\u540D\u79F0",name:"model_name",rules:[{required:!0}],children:jsx(Input,{})}),jsx(Form.Item,{label:"Is Common",name:"is_common",rules:[{required:!0}],valuePropName:"checked",children:jsx(Switch,{})}),jsx(Form.Item,{label:"Order",name:"order",children:jsx(InputNumber,{className:"w-full"})}),jsx(Form.Item,{label:"\u63A5\u53E3\u89C4\u5219",name:"permissions",children:jsx(Editor,{theme:"vs-dark",height:"300px",language:"json",options:{minimap:{enabled:!1}}})}),jsx(Form.Item,{label:"Schema",name:"scheme",rules:[{required:!0}],children:jsx(Editor,{theme:"vs-dark",height:"600px",language:"json",options:{minimap:{enabled:!1}}})}),jsx(Form.Item,{label:"Ext",name:"ext",children:jsx(Input.TextArea,{rows:5})}),jsx(Form.Item,{children:jsxs("div",{className:"flex justify-center gap-8",children:[jsx(Button,{type:"primary",htmlType:"submit",children:"\u63D0\u4EA4"}),jsx(Button,{onClick:()=>{l$1("../..",{relative:"path"});},children:"\u53D6\u6D88"})]})})]})})},{isGlobal:!0}),X=R;export{X as default};//# sourceMappingURL=updateMenuItem-W62ZGTDH.js.map
2
- //# sourceMappingURL=updateMenuItem-W62ZGTDH.js.map
1
+ import {b}from'./chunk-2MBSA3L6.js';import {b as b$1}from'./chunk-CZVEA2JJ.js';import {j,l,m,f}from'./chunk-OLBC35WM.js';import {Editor}from'@monaco-editor/react';import {useQuery}from'@tanstack/react-query';import {App,Form,Card,Input,Switch,InputNumber,Button}from'antd';import {useEffect}from'react';import {useNavigate,useParams}from'react-router-dom';import {jsx,jsxs}from'react/jsx-runtime';var R=j(()=>{let{message:b$2}=App.useApp(),[i]=Form.useForm(),l$1=useNavigate(),{mutate:_}=b(),r=useParams(),{refetch:x}=b$1(),N=l(),{data:p,isLoading:v}=useQuery({queryKey:m.menus.detail(Number(r.id)),queryFn:()=>N.get(`/api/usystem/menu/info?id=${r.id}`),enabled:!!r.id}),q=async n=>{let{permissions:m,front_route:a,...u}=n;await _({...u,permissions:m?JSON.parse(m):void 0,front_route:f+a,id:+r.id}),x(),b$2.success("\u66F4\u65B0\u6210\u529F",.8,()=>l$1("../..",{relative:"route"}));};return useEffect(()=>{let{permissions:n,front_route:m,...a}=p??{},u=JSON.stringify(n||[],null,2),E=m?.replace(f,"");i.setFieldsValue({...a,permissions:u,front_route:E});},[p,i]),jsx(Card,{title:"\u66F4\u65B0\u83DC\u5355\u9879",loading:v,children:jsxs(Form,{scrollToFirstError:!0,form:i,labelCol:{flex:"120px"},initialValues:{is_common:!1,is_model:!1,order:0},onFinish:q,children:[jsx(Form.Item,{label:"\u83DC\u5355\u9879\u540D\u79F0",name:"category",rules:[{required:!0}],children:jsx(Input,{})}),jsx(Form.Item,{label:"\u524D\u7AEF\u8DEF\u7531",name:"front_route",rules:[{required:!0}],children:jsx(Input,{prefix:f})}),jsx(Form.Item,{label:"\u6A21\u677F\u540D\u79F0",name:"model_name",rules:[{required:!0}],children:jsx(Input,{})}),jsx(Form.Item,{label:"Is Common",name:"is_common",rules:[{required:!0}],valuePropName:"checked",children:jsx(Switch,{})}),jsx(Form.Item,{label:"Order",name:"order",children:jsx(InputNumber,{className:"w-full"})}),jsx(Form.Item,{label:"\u63A5\u53E3\u89C4\u5219",name:"permissions",children:jsx(Editor,{theme:"vs-dark",height:"300px",language:"json",options:{minimap:{enabled:!1}}})}),jsx(Form.Item,{label:"Schema",name:"scheme",rules:[{required:!0}],children:jsx(Editor,{theme:"vs-dark",height:"600px",language:"json",options:{minimap:{enabled:!1}}})}),jsx(Form.Item,{label:"Ext",name:"ext",children:jsx(Input.TextArea,{rows:5})}),jsx(Form.Item,{children:jsxs("div",{className:"flex justify-center gap-8",children:[jsx(Button,{type:"primary",htmlType:"submit",children:"\u63D0\u4EA4"}),jsx(Button,{onClick:()=>{l$1("../..",{relative:"path"});},children:"\u53D6\u6D88"})]})})]})})},{isGlobal:!0}),X=R;export{X as default};//# sourceMappingURL=updateMenuItem-CZWG6ZF3.js.map
2
+ //# sourceMappingURL=updateMenuItem-CZWG6ZF3.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/modules/menu/pages/updateMenuItem/index.tsx"],"names":["EditMenuItem","withContext","message","App","form","Form","navigate","useNavigate","mutate","useUpdateMenu","params","useParams","refetch","useMenuList","ky","useKy","data","isLoading","useQuery","queryKeys","onFinish","values","permissions","front_route","rest","FRONTEND_ROUTE_PREFIX","useEffect","permissionsString","frontRoute","jsx","Card","jsxs","Input","Switch","InputNumber","Editor","Button","updateMenuItem_default"],"mappings":"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","file":"updateMenuItem-W62ZGTDH.js","sourcesContent":["import { Editor } from '@monaco-editor/react'\nimport { useQuery } from '@tanstack/react-query'\nimport { App, Button, Card, Form, Input, InputNumber, Switch } from 'antd'\nimport { useEffect } from 'react'\nimport { useNavigate, useParams } from 'react-router-dom'\n\nimport { withContext } from '@/components/toolkitsProvider'\nimport { FRONTEND_ROUTE_PREFIX } from '@/constants'\nimport { useKy } from '@/libs'\nimport { queryKeys } from '@/queryKeys'\nimport { useMenuList } from '@/services'\nimport type { MenuListItem } from '@/types'\n\nimport { useUpdateMenu } from '../../services'\n\ntype FormSchema = Omit<MenuListItem, 'id' | 'permissions'> & { permissions: string }\n\nconst EditMenuItem = withContext(\n () => {\n const { message } = App.useApp()\n const [form] = Form.useForm<FormSchema>()\n const navigate = useNavigate()\n const { mutate } = useUpdateMenu()\n const params = useParams<'id'>()\n const { refetch } = useMenuList()\n const ky = useKy()\n\n const { data, isLoading } = useQuery({\n queryKey: queryKeys.menus.detail(Number(params.id)),\n queryFn: () => ky.get<MenuListItem>(`/api/usystem/menu/info?id=${params.id}`),\n enabled: !!params.id,\n })\n\n const onFinish = async (values: FormSchema) => {\n const { permissions, front_route, ...rest } = values\n\n await mutate({\n ...rest,\n permissions: permissions ? JSON.parse(permissions) : undefined,\n front_route: FRONTEND_ROUTE_PREFIX + front_route,\n id: +params.id!,\n })\n refetch()\n message.success('更新成功', 0.8, () => navigate('../..', { relative: 'route' }))\n }\n\n useEffect(() => {\n const { permissions, front_route, ...rest } = data ?? {}\n const permissionsString = JSON.stringify(permissions || [], null, 2)\n const frontRoute = front_route?.replace(FRONTEND_ROUTE_PREFIX, '')\n form.setFieldsValue({\n ...rest,\n permissions: permissionsString,\n front_route: frontRoute,\n })\n }, [data, form])\n\n return (\n <Card title=\"更新菜单项\" loading={isLoading}>\n <Form\n scrollToFirstError\n form={form}\n labelCol={{ flex: '120px' }}\n initialValues={{ is_common: false, is_model: false, order: 0 }}\n onFinish={onFinish}\n >\n <Form.Item label=\"菜单项名称\" name=\"category\" rules={[{ required: true }]}>\n <Input />\n </Form.Item>\n <Form.Item label=\"前端路由\" name=\"front_route\" rules={[{ required: true }]}>\n <Input prefix={FRONTEND_ROUTE_PREFIX} />\n </Form.Item>\n <Form.Item label=\"模板名称\" name=\"model_name\" rules={[{ required: true }]}>\n <Input />\n </Form.Item>\n <Form.Item label=\"Is Common\" name=\"is_common\" rules={[{ required: true }]} valuePropName=\"checked\">\n <Switch />\n </Form.Item>\n <Form.Item label=\"Order\" name=\"order\">\n <InputNumber className=\"w-full\" />\n </Form.Item>\n <Form.Item label=\"接口规则\" name=\"permissions\">\n <Editor\n theme=\"vs-dark\"\n height=\"300px\"\n language=\"json\"\n options={{\n minimap: {\n enabled: false,\n },\n }}\n />\n </Form.Item>\n <Form.Item label=\"Schema\" name=\"scheme\" rules={[{ required: true }]}>\n <Editor\n theme=\"vs-dark\"\n height=\"600px\"\n language=\"json\"\n options={{\n minimap: {\n enabled: false,\n },\n }}\n />\n </Form.Item>\n <Form.Item label=\"Ext\" name=\"ext\">\n <Input.TextArea rows={5} />\n </Form.Item>\n <Form.Item>\n <div className=\"flex justify-center gap-8\">\n <Button type=\"primary\" htmlType=\"submit\">\n 提交\n </Button>\n <Button\n onClick={() => {\n navigate('../..', { relative: 'path' })\n }}\n >\n 取消\n </Button>\n </div>\n </Form.Item>\n </Form>\n </Card>\n )\n },\n { isGlobal: true },\n)\n\nexport default EditMenuItem\n"]}
1
+ {"version":3,"sources":["../src/modules/menu/pages/updateMenuItem/index.tsx"],"names":["EditMenuItem","withContext","message","App","form","Form","navigate","useNavigate","mutate","useUpdateMenu","params","useParams","refetch","useMenuList","ky","useKy","data","isLoading","useQuery","queryKeys","onFinish","values","permissions","front_route","rest","FRONTEND_ROUTE_PREFIX","useEffect","permissionsString","frontRoute","jsx","Card","jsxs","Input","Switch","InputNumber","Editor","Button","updateMenuItem_default"],"mappings":"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","file":"updateMenuItem-CZWG6ZF3.js","sourcesContent":["import { Editor } from '@monaco-editor/react'\nimport { useQuery } from '@tanstack/react-query'\nimport { App, Button, Card, Form, Input, InputNumber, Switch } from 'antd'\nimport { useEffect } from 'react'\nimport { useNavigate, useParams } from 'react-router-dom'\n\nimport { withContext } from '@/components/toolkitsProvider'\nimport { FRONTEND_ROUTE_PREFIX } from '@/constants'\nimport { useKy } from '@/libs'\nimport { queryKeys } from '@/queryKeys'\nimport { useMenuList } from '@/services'\nimport type { MenuListItem } from '@/types'\n\nimport { useUpdateMenu } from '../../services'\n\ntype FormSchema = Omit<MenuListItem, 'id' | 'permissions'> & { permissions: string }\n\nconst EditMenuItem = withContext(\n () => {\n const { message } = App.useApp()\n const [form] = Form.useForm<FormSchema>()\n const navigate = useNavigate()\n const { mutate } = useUpdateMenu()\n const params = useParams<'id'>()\n const { refetch } = useMenuList()\n const ky = useKy()\n\n const { data, isLoading } = useQuery({\n queryKey: queryKeys.menus.detail(Number(params.id)),\n queryFn: () => ky.get<MenuListItem>(`/api/usystem/menu/info?id=${params.id}`),\n enabled: !!params.id,\n })\n\n const onFinish = async (values: FormSchema) => {\n const { permissions, front_route, ...rest } = values\n\n await mutate({\n ...rest,\n permissions: permissions ? JSON.parse(permissions) : undefined,\n front_route: FRONTEND_ROUTE_PREFIX + front_route,\n id: +params.id!,\n })\n refetch()\n message.success('更新成功', 0.8, () => navigate('../..', { relative: 'route' }))\n }\n\n useEffect(() => {\n const { permissions, front_route, ...rest } = data ?? {}\n const permissionsString = JSON.stringify(permissions || [], null, 2)\n const frontRoute = front_route?.replace(FRONTEND_ROUTE_PREFIX, '')\n form.setFieldsValue({\n ...rest,\n permissions: permissionsString,\n front_route: frontRoute,\n })\n }, [data, form])\n\n return (\n <Card title=\"更新菜单项\" loading={isLoading}>\n <Form\n scrollToFirstError\n form={form}\n labelCol={{ flex: '120px' }}\n initialValues={{ is_common: false, is_model: false, order: 0 }}\n onFinish={onFinish}\n >\n <Form.Item label=\"菜单项名称\" name=\"category\" rules={[{ required: true }]}>\n <Input />\n </Form.Item>\n <Form.Item label=\"前端路由\" name=\"front_route\" rules={[{ required: true }]}>\n <Input prefix={FRONTEND_ROUTE_PREFIX} />\n </Form.Item>\n <Form.Item label=\"模板名称\" name=\"model_name\" rules={[{ required: true }]}>\n <Input />\n </Form.Item>\n <Form.Item label=\"Is Common\" name=\"is_common\" rules={[{ required: true }]} valuePropName=\"checked\">\n <Switch />\n </Form.Item>\n <Form.Item label=\"Order\" name=\"order\">\n <InputNumber className=\"w-full\" />\n </Form.Item>\n <Form.Item label=\"接口规则\" name=\"permissions\">\n <Editor\n theme=\"vs-dark\"\n height=\"300px\"\n language=\"json\"\n options={{\n minimap: {\n enabled: false,\n },\n }}\n />\n </Form.Item>\n <Form.Item label=\"Schema\" name=\"scheme\" rules={[{ required: true }]}>\n <Editor\n theme=\"vs-dark\"\n height=\"600px\"\n language=\"json\"\n options={{\n minimap: {\n enabled: false,\n },\n }}\n />\n </Form.Item>\n <Form.Item label=\"Ext\" name=\"ext\">\n <Input.TextArea rows={5} />\n </Form.Item>\n <Form.Item>\n <div className=\"flex justify-center gap-8\">\n <Button type=\"primary\" htmlType=\"submit\">\n 提交\n </Button>\n <Button\n onClick={() => {\n navigate('../..', { relative: 'path' })\n }}\n >\n 取消\n </Button>\n </div>\n </Form.Item>\n </Form>\n </Card>\n )\n },\n { isGlobal: true },\n)\n\nexport default EditMenuItem\n"]}
@@ -1,2 +1,2 @@
1
- import {b}from'./chunk-WF6CQ4VD.js';import'./chunk-F6U4XQKJ.js';import {a as a$2}from'./chunk-LGVGDPRR.js';import {a}from'./chunk-A32VE3TQ.js';import {c,a as a$1}from'./chunk-GUZYFAYW.js';import {i,l,m,h}from'./chunk-KXTBMJYF.js';import {useQuery}from'@tanstack/react-query';import {Tag,Breadcrumb,Card,Descriptions,Table}from'antd';import {useParams,Link}from'react-router-dom';import {jsx,jsxs,Fragment}from'react/jsx-runtime';var $=()=>{let i$1=useParams(),{t:r}=a(),{gameApiV2:T,permissionVersion:D}=i(),V=D==="v3",h$1=l(),{data:s,isLoading:L,refetch:C}=useQuery({queryKey:m.users.detail(i$1.id||""),queryFn:()=>h$1.get(`/api/usystem/user/info?id=${i$1.id}`),enabled:!!i$1.id}),{data:x}=c(),{data:B}=a$1("200005"),{show:A,modal:K}=b({mode:"update",onSuccess(){C();}}),S=[V&&{key:"group",title:r("global.projectGroup"),dataIndex:"game_group",render(o){return o.map(t=>jsx(Tag,{children:t===h?"\u901A\u7528":t},t))}},{key:"game",title:r("global.game"),dataIndex:"game_ids",render(o){return o.map(t=>{let U=x?.find(m=>String(T?m.game_id:m.id)===t);return jsx(Tag,{children:U?.name??(t===h?"\u901A\u7528":t)},t)})}},{key:"role",title:r("global.role"),dataIndex:"role",render(o){return B?jsx(Link,{to:`../../role/${o}`,relative:"path",children:o}):o}}].filter(Boolean);return jsxs(Fragment,{children:[jsx(Breadcrumb,{style:{marginBottom:"1.5rem"},items:[{key:"1",title:jsx(Link,{to:"..",relative:"path",children:r("global.user")})},{key:"2",title:"\u7528\u6237\u8BE6\u60C5"}]}),jsx(Card,{title:"\u7528\u6237\u8BE6\u60C5",loading:L,extra:jsx(a$2,{code:"100003",onClick:()=>{A({initialValues:{name:s?.name,permissions:s?.permissions},extraValues:{id:s.id}});},children:r("global.update")}),children:jsxs(Descriptions,{bordered:!0,column:1,children:[jsx(Descriptions.Item,{label:r("global.name"),children:s?.name}),jsx(Descriptions.Item,{label:"ID",children:s?.id}),jsx(Descriptions.Item,{label:r("global.role"),children:jsx(Table,{rowKey:"role",columns:S,dataSource:s?.permissions,pagination:!1})})]})}),K]})},O=$;export{O as default};//# sourceMappingURL=userDetail-UNBXTXAK.js.map
2
- //# sourceMappingURL=userDetail-UNBXTXAK.js.map
1
+ import {b}from'./chunk-PRIFREWM.js';import'./chunk-AQQVGA3G.js';import {a as a$2}from'./chunk-YQM2SZ3L.js';import {a}from'./chunk-UCD6QQ6P.js';import {c,a as a$1}from'./chunk-CZVEA2JJ.js';import {i,l,m,h}from'./chunk-OLBC35WM.js';import {useQuery}from'@tanstack/react-query';import {Tag,Breadcrumb,Card,Descriptions,Table}from'antd';import {useParams,Link}from'react-router-dom';import {jsx,jsxs,Fragment}from'react/jsx-runtime';var $=()=>{let i$1=useParams(),{t:r}=a(),{gameApiV2:T,permissionVersion:D}=i(),V=D==="v3",h$1=l(),{data:s,isLoading:L,refetch:C}=useQuery({queryKey:m.users.detail(i$1.id||""),queryFn:()=>h$1.get(`/api/usystem/user/info?id=${i$1.id}`),enabled:!!i$1.id}),{data:x}=c(),{data:B}=a$1("200005"),{show:A,modal:K}=b({mode:"update",onSuccess(){C();}}),S=[V&&{key:"group",title:r("global.projectGroup"),dataIndex:"game_group",render(o){return o.map(t=>jsx(Tag,{children:t===h?"\u901A\u7528":t},t))}},{key:"game",title:r("global.game"),dataIndex:"game_ids",render(o){return o.map(t=>{let U=x?.find(m=>String(T?m.game_id:m.id)===t);return jsx(Tag,{children:U?.name??(t===h?"\u901A\u7528":t)},t)})}},{key:"role",title:r("global.role"),dataIndex:"role",render(o){return B?jsx(Link,{to:`../../role/${o}`,relative:"path",children:o}):o}}].filter(Boolean);return jsxs(Fragment,{children:[jsx(Breadcrumb,{style:{marginBottom:"1.5rem"},items:[{key:"1",title:jsx(Link,{to:"..",relative:"path",children:r("global.user")})},{key:"2",title:"\u7528\u6237\u8BE6\u60C5"}]}),jsx(Card,{title:"\u7528\u6237\u8BE6\u60C5",loading:L,extra:jsx(a$2,{code:"100003",onClick:()=>{A({initialValues:{name:s?.name,permissions:s?.permissions},extraValues:{id:s.id}});},children:r("global.update")}),children:jsxs(Descriptions,{bordered:!0,column:1,children:[jsx(Descriptions.Item,{label:r("global.name"),children:s?.name}),jsx(Descriptions.Item,{label:"ID",children:s?.id}),jsx(Descriptions.Item,{label:r("global.role"),children:jsx(Table,{rowKey:"role",columns:S,dataSource:s?.permissions,pagination:!1})})]})}),K]})},O=$;export{O as default};//# sourceMappingURL=userDetail-QKKXCSJZ.js.map
2
+ //# sourceMappingURL=userDetail-QKKXCSJZ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/modules/permission/pages/userDetail/index.tsx"],"names":["UserDetail","params","useParams","t","useTranslation","gameApiV2","permissionVersion","useToolkitsStore","isV3","ky","useKy","data","isLoading","refetch","useQuery","queryKeys","games","useGames","roleViewable","usePermission","show","modal","useUserModalV2","columns","value","item","jsx","Tag","WILDCARD","matchedGame","game","Link","jsxs","Fragment","Breadcrumb","Card","AuthButton_default","Descriptions","Table","userDetail_default"],"mappings":"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","file":"userDetail-UNBXTXAK.js","sourcesContent":["import { useQuery } from '@tanstack/react-query'\nimport type { TableColumnsType } from 'antd'\nimport { Breadcrumb, Card, Descriptions, Table, Tag } from 'antd'\nimport { Link, useParams } from 'react-router-dom'\n\nimport { AuthButton, useToolkitsStore } from '@/components'\nimport { PermissionVersion, WILDCARD } from '@/constants'\nimport { useKy } from '@/libs'\nimport { useTranslation } from '@/locale'\nimport { queryKeys } from '@/queryKeys'\nimport { useGames, usePermission } from '@/services'\n\nimport { useUserModalV2 } from '../../hooks'\nimport type { UserListItem } from '../../types'\n\nconst UserDetail = () => {\n const params = useParams<'id'>()\n const { t } = useTranslation()\n const { gameApiV2, permissionVersion } = useToolkitsStore()\n const isV3 = permissionVersion === PermissionVersion.V3\n const ky = useKy()\n\n const { data, isLoading, refetch } = useQuery({\n queryKey: queryKeys.users.detail(params.id || ''),\n queryFn: () => ky.get<UserListItem>(`/api/usystem/user/info?id=${params.id}`),\n enabled: !!params.id,\n })\n const { data: games } = useGames()\n const { data: roleViewable } = usePermission('200005')\n\n const { show, modal } = useUserModalV2({\n mode: 'update',\n onSuccess() {\n refetch()\n },\n })\n\n const columns = [\n isV3 && {\n key: 'group',\n title: t('global.projectGroup'),\n dataIndex: 'game_group',\n render(value: string[]) {\n return value.map(item => {\n return <Tag key={item}>{item === WILDCARD ? '通用' : item}</Tag>\n })\n },\n },\n {\n key: 'game',\n title: t('global.game'),\n dataIndex: 'game_ids',\n render(value: string[]) {\n return value.map(item => {\n const matchedGame = games?.find(game => String(gameApiV2 ? game.game_id : game.id) === item)\n return <Tag key={item}>{matchedGame?.name ?? (item === WILDCARD ? '通用' : item)}</Tag>\n })\n },\n },\n {\n key: 'role',\n title: t('global.role'),\n dataIndex: 'role',\n render(value: string) {\n return roleViewable ? (\n <Link to={`../../role/${value}`} relative=\"path\">\n {value}\n </Link>\n ) : (\n value\n )\n },\n },\n ].filter(Boolean) as TableColumnsType\n\n return (\n <>\n <Breadcrumb\n style={{ marginBottom: '1.5rem' }}\n items={[\n {\n key: '1',\n title: (\n <Link to=\"..\" relative=\"path\">\n {t('global.user')}\n </Link>\n ),\n },\n {\n key: '2',\n title: '用户详情',\n },\n ]}\n />\n <Card\n title=\"用户详情\"\n loading={isLoading}\n extra={\n <AuthButton\n code=\"100003\"\n onClick={() => {\n show({\n initialValues: {\n name: data?.name,\n permissions: data?.permissions,\n },\n extraValues: {\n id: data!.id,\n },\n })\n }}\n >\n {t('global.update')}\n </AuthButton>\n }\n >\n <Descriptions bordered column={1}>\n <Descriptions.Item label={t('global.name')}>{data?.name}</Descriptions.Item>\n <Descriptions.Item label=\"ID\">{data?.id}</Descriptions.Item>\n <Descriptions.Item label={t('global.role')}>\n <Table rowKey=\"role\" columns={columns} dataSource={data?.permissions} pagination={false} />\n </Descriptions.Item>\n </Descriptions>\n </Card>\n {modal}\n </>\n )\n}\n\nexport default UserDetail\n"]}
1
+ {"version":3,"sources":["../src/modules/permission/pages/userDetail/index.tsx"],"names":["UserDetail","params","useParams","t","useTranslation","gameApiV2","permissionVersion","useToolkitsStore","isV3","ky","useKy","data","isLoading","refetch","useQuery","queryKeys","games","useGames","roleViewable","usePermission","show","modal","useUserModalV2","columns","value","item","jsx","Tag","WILDCARD","matchedGame","game","Link","jsxs","Fragment","Breadcrumb","Card","AuthButton_default","Descriptions","Table","userDetail_default"],"mappings":"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","file":"userDetail-QKKXCSJZ.js","sourcesContent":["import { useQuery } from '@tanstack/react-query'\nimport type { TableColumnsType } from 'antd'\nimport { Breadcrumb, Card, Descriptions, Table, Tag } from 'antd'\nimport { Link, useParams } from 'react-router-dom'\n\nimport { AuthButton, useToolkitsStore } from '@/components'\nimport { PermissionVersion, WILDCARD } from '@/constants'\nimport { useKy } from '@/libs'\nimport { useTranslation } from '@/locale'\nimport { queryKeys } from '@/queryKeys'\nimport { useGames, usePermission } from '@/services'\n\nimport { useUserModalV2 } from '../../hooks'\nimport type { UserListItem } from '../../types'\n\nconst UserDetail = () => {\n const params = useParams<'id'>()\n const { t } = useTranslation()\n const { gameApiV2, permissionVersion } = useToolkitsStore()\n const isV3 = permissionVersion === PermissionVersion.V3\n const ky = useKy()\n\n const { data, isLoading, refetch } = useQuery({\n queryKey: queryKeys.users.detail(params.id || ''),\n queryFn: () => ky.get<UserListItem>(`/api/usystem/user/info?id=${params.id}`),\n enabled: !!params.id,\n })\n const { data: games } = useGames()\n const { data: roleViewable } = usePermission('200005')\n\n const { show, modal } = useUserModalV2({\n mode: 'update',\n onSuccess() {\n refetch()\n },\n })\n\n const columns = [\n isV3 && {\n key: 'group',\n title: t('global.projectGroup'),\n dataIndex: 'game_group',\n render(value: string[]) {\n return value.map(item => {\n return <Tag key={item}>{item === WILDCARD ? '通用' : item}</Tag>\n })\n },\n },\n {\n key: 'game',\n title: t('global.game'),\n dataIndex: 'game_ids',\n render(value: string[]) {\n return value.map(item => {\n const matchedGame = games?.find(game => String(gameApiV2 ? game.game_id : game.id) === item)\n return <Tag key={item}>{matchedGame?.name ?? (item === WILDCARD ? '通用' : item)}</Tag>\n })\n },\n },\n {\n key: 'role',\n title: t('global.role'),\n dataIndex: 'role',\n render(value: string) {\n return roleViewable ? (\n <Link to={`../../role/${value}`} relative=\"path\">\n {value}\n </Link>\n ) : (\n value\n )\n },\n },\n ].filter(Boolean) as TableColumnsType\n\n return (\n <>\n <Breadcrumb\n style={{ marginBottom: '1.5rem' }}\n items={[\n {\n key: '1',\n title: (\n <Link to=\"..\" relative=\"path\">\n {t('global.user')}\n </Link>\n ),\n },\n {\n key: '2',\n title: '用户详情',\n },\n ]}\n />\n <Card\n title=\"用户详情\"\n loading={isLoading}\n extra={\n <AuthButton\n code=\"100003\"\n onClick={() => {\n show({\n initialValues: {\n name: data?.name,\n permissions: data?.permissions,\n },\n extraValues: {\n id: data!.id,\n },\n })\n }}\n >\n {t('global.update')}\n </AuthButton>\n }\n >\n <Descriptions bordered column={1}>\n <Descriptions.Item label={t('global.name')}>{data?.name}</Descriptions.Item>\n <Descriptions.Item label=\"ID\">{data?.id}</Descriptions.Item>\n <Descriptions.Item label={t('global.role')}>\n <Table rowKey=\"role\" columns={columns} dataSource={data?.permissions} pagination={false} />\n </Descriptions.Item>\n </Descriptions>\n </Card>\n {modal}\n </>\n )\n}\n\nexport default UserDetail\n"]}
@@ -1,2 +1,2 @@
1
- import {a as a$1,b}from'./chunk-WF6CQ4VD.js';import {c,b as b$1,e}from'./chunk-4LG4V23K.js';import {h}from'./chunk-F6U4XQKJ.js';import {a as a$2}from'./chunk-LGVGDPRR.js';import {a}from'./chunk-A32VE3TQ.js';import'./chunk-GUZYFAYW.js';import {j,i}from'./chunk-KXTBMJYF.js';import {UserAddOutlined}from'@ant-design/icons';import {App,Row,Col,Tag,Space,Card,Form,Input}from'antd';import {Link}from'react-router-dom';import {jsx,jsxs,Fragment}from'react/jsx-runtime';var _=()=>{let{modal:b$2,message:I}=App.useApp(),{t:o}=a(),L=h(),{refetch:r}=c(),{permissionVersion:n}=i(t=>t),M=n==="v1",l=n==="v3",c$1=n==="v4",{show:x,modal:A}=a$1({mode:"create",onSuccess(){r("user-list",{page:1});}}),{show:S,modal:F}=a$1({mode:"update",onSuccess(){r("user-list");}}),{show:B,modal:R}=b({mode:"create",onSuccess(){r("user-list",{page:1});}}),{show:z,modal:G}=b({mode:"update",onSuccess(){r("user-list");}}),H=[{title:o("global.name"),dataIndex:"name",key:"name",render(t,s){return l||c$1?jsx(Link,{to:`./${s.id}`,children:t}):t}},{title:"ID",dataIndex:"id",key:"id"},(M||l)&&{title:o("global.role"),dataIndex:"roles",key:"roles",width:"40%",render(t){return jsx(Row,{gutter:[4,4],children:(t||[]).map(s=>jsx(Col,{children:s==="root"?jsx(Tag,{color:"#f50",children:s}):jsx(Tag,{color:"#ff5a00",children:jsx(Link,{to:`../role/${s}`,children:s})})},s))})}},{title:o("global.creationTime"),dataIndex:"Ctime",key:"ctime"},{title:o("global.operation"),width:150,align:"center",render:(t,s)=>{let{name:i,permissions:O,roles:Q,id:m}=s;return jsxs(Space,{children:[jsx(a$2,{size:"small",type:"link",code:"100003",onClick:()=>{l||c$1?z({initialValues:{name:i,permissions:O},extraValues:{id:m}}):S({initialValues:{name:i,roles:Q},extraValues:{id:m}});},children:o("global.update")}),jsx(a$2,{danger:!0,size:"small",code:"100004",type:"link",onClick:()=>{b$2.confirm({title:o("User.deleteTitle"),content:jsx(b$1,{texts:[i],children:o("User.deleteContent",{user:i})}),async onOk(){await L.mutateAsync({id:m,name:i}),r("user-list"),I.success(o("User.deleteSuccessfully"));}});},children:o("global.delete")})]})}}].filter(Boolean);return jsxs(Fragment,{children:[jsx(Card,{title:o("global.user"),extra:jsx(a$2,{type:"primary",icon:jsx(UserAddOutlined,{}),code:"100002",onClick:()=>{l?B():x();},children:o("User.createTitle")}),children:jsx(e,{identifier:"user-list",code:"100001",request:{url:"/api/usystem/user/list",method:"GET"},rowKey:"id",columns:H,dataAdapter:t=>({total:t?.Total,items:t?.List}),renderForm:l?t=>jsx(Form,{form:t,children:jsx(Form.Item,{label:"\u540D\u79F0",name:"name",children:jsx(Input,{})})}):void 0})}),A,F,R,G]})},te=j(_,{isGlobal:!0});export{te as default};//# sourceMappingURL=userList-PD5SOROE.js.map
2
- //# sourceMappingURL=userList-PD5SOROE.js.map
1
+ import {a as a$1,b}from'./chunk-PRIFREWM.js';import {c,b as b$1,e}from'./chunk-TPXP7CV6.js';import {h}from'./chunk-AQQVGA3G.js';import {a as a$2}from'./chunk-YQM2SZ3L.js';import {a}from'./chunk-UCD6QQ6P.js';import'./chunk-CZVEA2JJ.js';import {j,i}from'./chunk-OLBC35WM.js';import {UserAddOutlined}from'@ant-design/icons';import {App,Row,Col,Tag,Space,Card,Form,Input}from'antd';import {Link}from'react-router-dom';import {jsx,jsxs,Fragment}from'react/jsx-runtime';var _=()=>{let{modal:b$2,message:I}=App.useApp(),{t:o}=a(),L=h(),{refetch:r}=c(),{permissionVersion:n}=i(t=>t),M=n==="v1",l=n==="v3",c$1=n==="v4",{show:x,modal:A}=a$1({mode:"create",onSuccess(){r("user-list",{page:1});}}),{show:S,modal:F}=a$1({mode:"update",onSuccess(){r("user-list");}}),{show:B,modal:R}=b({mode:"create",onSuccess(){r("user-list",{page:1});}}),{show:z,modal:G}=b({mode:"update",onSuccess(){r("user-list");}}),H=[{title:o("global.name"),dataIndex:"name",key:"name",render(t,s){return l||c$1?jsx(Link,{to:`./${s.id}`,children:t}):t}},{title:"ID",dataIndex:"id",key:"id"},(M||l)&&{title:o("global.role"),dataIndex:"roles",key:"roles",width:"40%",render(t){return jsx(Row,{gutter:[4,4],children:(t||[]).map(s=>jsx(Col,{children:s==="root"?jsx(Tag,{color:"#f50",children:s}):jsx(Tag,{color:"#ff5a00",children:jsx(Link,{to:`../role/${s}`,children:s})})},s))})}},{title:o("global.creationTime"),dataIndex:"Ctime",key:"ctime"},{title:o("global.operation"),width:150,align:"center",render:(t,s)=>{let{name:i,permissions:O,roles:Q,id:m}=s;return jsxs(Space,{children:[jsx(a$2,{size:"small",type:"link",code:"100003",onClick:()=>{l||c$1?z({initialValues:{name:i,permissions:O},extraValues:{id:m}}):S({initialValues:{name:i,roles:Q},extraValues:{id:m}});},children:o("global.update")}),jsx(a$2,{danger:!0,size:"small",code:"100004",type:"link",onClick:()=>{b$2.confirm({title:o("User.deleteTitle"),content:jsx(b$1,{texts:[i],children:o("User.deleteContent",{user:i})}),async onOk(){await L.mutateAsync({id:m,name:i}),r("user-list"),I.success(o("User.deleteSuccessfully"));}});},children:o("global.delete")})]})}}].filter(Boolean);return jsxs(Fragment,{children:[jsx(Card,{title:o("global.user"),extra:jsx(a$2,{type:"primary",icon:jsx(UserAddOutlined,{}),code:"100002",onClick:()=>{l?B():x();},children:o("User.createTitle")}),children:jsx(e,{identifier:"user-list",code:"100001",request:{url:"/api/usystem/user/list",method:"GET"},rowKey:"id",columns:H,dataAdapter:t=>({total:t?.Total,items:t?.List}),renderForm:l?t=>jsx(Form,{form:t,children:jsx(Form.Item,{label:"\u540D\u79F0",name:"name",children:jsx(Input,{})})}):void 0})}),A,F,R,G]})},te=j(_,{isGlobal:!0});export{te as default};//# sourceMappingURL=userList-RTKPCUD7.js.map
2
+ //# sourceMappingURL=userList-RTKPCUD7.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/modules/permission/pages/userList/index.tsx"],"names":["UserList","modal","message","App","t","useTranslation","remove","useRemoveUser","refetch","useQueryListStore","permissionVersion","useToolkitsStore","s","isV1","isV3","isV4","showCreateModal","createModal","useUserModal","showUpdateModal","updateModal","showCreateModalV2","createModalV2","useUserModalV2","showUpdateModalV2","updateModalV2","columns","value","record","jsx","Link","Row","item","Col","Tag","_","name","permissions","roles","id","jsxs","Space","AuthButton_default","Highlight_default","Fragment","Card","UserAddOutlined","QueryList_default","data","form","Form","Input","userList_default","withContext"],"mappings":"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","file":"userList-PD5SOROE.js","sourcesContent":["import { UserAddOutlined } from '@ant-design/icons'\nimport type { TableColumnsType } from 'antd'\nimport { App, Card, Col, Form, Input, Row, Space, Tag } from 'antd'\nimport { type FC } from 'react'\nimport { Link } from 'react-router-dom'\n\nimport { AuthButton, Highlight, QueryList, useQueryListStore, useToolkitsStore, withContext } from '@/components'\nimport { PermissionVersion } from '@/constants'\nimport { useTranslation } from '@/locale'\n\nimport { useUserModal, useUserModalV2 } from '../../hooks'\nimport { useRemoveUser } from '../../services'\nimport type { UserListItem } from '../../types'\n\nconst UserList: FC = () => {\n const { modal, message } = App.useApp()\n const { t } = useTranslation()\n const remove = useRemoveUser()\n const { refetch } = useQueryListStore()\n const { permissionVersion } = useToolkitsStore(s => s)\n const isV1 = permissionVersion === PermissionVersion.V1\n const isV3 = permissionVersion === PermissionVersion.V3\n const isV4 = permissionVersion === PermissionVersion.V4\n\n const { show: showCreateModal, modal: createModal } = useUserModal({\n mode: 'create',\n onSuccess() {\n refetch('user-list', { page: 1 })\n },\n })\n\n const { show: showUpdateModal, modal: updateModal } = useUserModal({\n mode: 'update',\n onSuccess() {\n refetch('user-list')\n },\n })\n\n const { show: showCreateModalV2, modal: createModalV2 } = useUserModalV2({\n mode: 'create',\n onSuccess() {\n refetch('user-list', { page: 1 })\n },\n })\n\n const { show: showUpdateModalV2, modal: updateModalV2 } = useUserModalV2({\n mode: 'update',\n onSuccess() {\n refetch('user-list')\n },\n })\n\n const columns = (\n [\n {\n title: t('global.name'),\n dataIndex: 'name',\n key: 'name',\n render(value: string, record) {\n if (isV3 || isV4) {\n return <Link to={`./${record.id}`}>{value}</Link>\n }\n return value\n },\n },\n {\n title: 'ID',\n dataIndex: 'id',\n key: 'id',\n },\n (isV1 || isV3) && {\n title: t('global.role'),\n dataIndex: 'roles',\n key: 'roles',\n width: '40%',\n render(value: string[]) {\n return (\n <Row gutter={[4, 4]}>\n {(value || []).map((item: string) => (\n <Col key={item}>\n {item === 'root' ? (\n <Tag color=\"#f50\">{item}</Tag>\n ) : (\n <Tag color=\"#ff5a00\">\n <Link to={`../role/${item}`}>{item}</Link>\n </Tag>\n )}\n </Col>\n ))}\n </Row>\n )\n },\n },\n {\n title: t('global.creationTime'),\n dataIndex: 'Ctime',\n key: 'ctime',\n },\n {\n title: t('global.operation'),\n width: 150,\n align: 'center',\n render: (_, record) => {\n const { name, permissions, roles, id } = record\n return (\n <Space>\n <AuthButton\n size=\"small\"\n type=\"link\"\n code=\"100003\"\n onClick={() => {\n if (isV3 || isV4) {\n showUpdateModalV2({\n initialValues: {\n name,\n permissions,\n },\n extraValues: {\n id,\n },\n })\n } else {\n showUpdateModal({\n initialValues: {\n name,\n roles,\n },\n extraValues: {\n id,\n },\n })\n }\n }}\n >\n {t('global.update')}\n </AuthButton>\n <AuthButton\n danger\n size=\"small\"\n code=\"100004\"\n type=\"link\"\n onClick={() => {\n modal.confirm({\n title: t('User.deleteTitle'),\n content: <Highlight texts={[name]}>{t('User.deleteContent', { user: name })}</Highlight>,\n async onOk() {\n await remove.mutateAsync({\n id,\n name,\n })\n refetch('user-list')\n message.success(t('User.deleteSuccessfully'))\n },\n })\n }}\n >\n {t('global.delete')}\n </AuthButton>\n </Space>\n )\n },\n },\n ] as TableColumnsType<UserListItem>\n ).filter(Boolean)\n\n return (\n <>\n <Card\n title={t('global.user')}\n extra={\n <AuthButton\n type=\"primary\"\n icon={<UserAddOutlined />}\n code=\"100002\"\n onClick={() => {\n if (isV3) {\n showCreateModalV2()\n } else {\n showCreateModal()\n }\n }}\n >\n {t('User.createTitle')}\n </AuthButton>\n }\n >\n <QueryList<UserListItem, { name?: string }, { List: UserListItem[]; Total: number }>\n identifier=\"user-list\"\n code=\"100001\"\n request={{\n url: '/api/usystem/user/list',\n method: 'GET',\n }}\n rowKey=\"id\"\n columns={columns}\n dataAdapter={data => ({\n total: data?.Total,\n items: data?.List,\n })}\n renderForm={\n isV3\n ? form => (\n <Form form={form}>\n <Form.Item label=\"名称\" name=\"name\">\n <Input />\n </Form.Item>\n </Form>\n )\n : undefined\n }\n />\n </Card>\n {createModal}\n {updateModal}\n {createModalV2}\n {updateModalV2}\n </>\n )\n}\n\nexport default withContext(UserList, { isGlobal: true })\n"]}
1
+ {"version":3,"sources":["../src/modules/permission/pages/userList/index.tsx"],"names":["UserList","modal","message","App","t","useTranslation","remove","useRemoveUser","refetch","useQueryListStore","permissionVersion","useToolkitsStore","s","isV1","isV3","isV4","showCreateModal","createModal","useUserModal","showUpdateModal","updateModal","showCreateModalV2","createModalV2","useUserModalV2","showUpdateModalV2","updateModalV2","columns","value","record","jsx","Link","Row","item","Col","Tag","_","name","permissions","roles","id","jsxs","Space","AuthButton_default","Highlight_default","Fragment","Card","UserAddOutlined","QueryList_default","data","form","Form","Input","userList_default","withContext"],"mappings":"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","file":"userList-RTKPCUD7.js","sourcesContent":["import { UserAddOutlined } from '@ant-design/icons'\nimport type { TableColumnsType } from 'antd'\nimport { App, Card, Col, Form, Input, Row, Space, Tag } from 'antd'\nimport { type FC } from 'react'\nimport { Link } from 'react-router-dom'\n\nimport { AuthButton, Highlight, QueryList, useQueryListStore, useToolkitsStore, withContext } from '@/components'\nimport { PermissionVersion } from '@/constants'\nimport { useTranslation } from '@/locale'\n\nimport { useUserModal, useUserModalV2 } from '../../hooks'\nimport { useRemoveUser } from '../../services'\nimport type { UserListItem } from '../../types'\n\nconst UserList: FC = () => {\n const { modal, message } = App.useApp()\n const { t } = useTranslation()\n const remove = useRemoveUser()\n const { refetch } = useQueryListStore()\n const { permissionVersion } = useToolkitsStore(s => s)\n const isV1 = permissionVersion === PermissionVersion.V1\n const isV3 = permissionVersion === PermissionVersion.V3\n const isV4 = permissionVersion === PermissionVersion.V4\n\n const { show: showCreateModal, modal: createModal } = useUserModal({\n mode: 'create',\n onSuccess() {\n refetch('user-list', { page: 1 })\n },\n })\n\n const { show: showUpdateModal, modal: updateModal } = useUserModal({\n mode: 'update',\n onSuccess() {\n refetch('user-list')\n },\n })\n\n const { show: showCreateModalV2, modal: createModalV2 } = useUserModalV2({\n mode: 'create',\n onSuccess() {\n refetch('user-list', { page: 1 })\n },\n })\n\n const { show: showUpdateModalV2, modal: updateModalV2 } = useUserModalV2({\n mode: 'update',\n onSuccess() {\n refetch('user-list')\n },\n })\n\n const columns = (\n [\n {\n title: t('global.name'),\n dataIndex: 'name',\n key: 'name',\n render(value: string, record) {\n if (isV3 || isV4) {\n return <Link to={`./${record.id}`}>{value}</Link>\n }\n return value\n },\n },\n {\n title: 'ID',\n dataIndex: 'id',\n key: 'id',\n },\n (isV1 || isV3) && {\n title: t('global.role'),\n dataIndex: 'roles',\n key: 'roles',\n width: '40%',\n render(value: string[]) {\n return (\n <Row gutter={[4, 4]}>\n {(value || []).map((item: string) => (\n <Col key={item}>\n {item === 'root' ? (\n <Tag color=\"#f50\">{item}</Tag>\n ) : (\n <Tag color=\"#ff5a00\">\n <Link to={`../role/${item}`}>{item}</Link>\n </Tag>\n )}\n </Col>\n ))}\n </Row>\n )\n },\n },\n {\n title: t('global.creationTime'),\n dataIndex: 'Ctime',\n key: 'ctime',\n },\n {\n title: t('global.operation'),\n width: 150,\n align: 'center',\n render: (_, record) => {\n const { name, permissions, roles, id } = record\n return (\n <Space>\n <AuthButton\n size=\"small\"\n type=\"link\"\n code=\"100003\"\n onClick={() => {\n if (isV3 || isV4) {\n showUpdateModalV2({\n initialValues: {\n name,\n permissions,\n },\n extraValues: {\n id,\n },\n })\n } else {\n showUpdateModal({\n initialValues: {\n name,\n roles,\n },\n extraValues: {\n id,\n },\n })\n }\n }}\n >\n {t('global.update')}\n </AuthButton>\n <AuthButton\n danger\n size=\"small\"\n code=\"100004\"\n type=\"link\"\n onClick={() => {\n modal.confirm({\n title: t('User.deleteTitle'),\n content: <Highlight texts={[name]}>{t('User.deleteContent', { user: name })}</Highlight>,\n async onOk() {\n await remove.mutateAsync({\n id,\n name,\n })\n refetch('user-list')\n message.success(t('User.deleteSuccessfully'))\n },\n })\n }}\n >\n {t('global.delete')}\n </AuthButton>\n </Space>\n )\n },\n },\n ] as TableColumnsType<UserListItem>\n ).filter(Boolean)\n\n return (\n <>\n <Card\n title={t('global.user')}\n extra={\n <AuthButton\n type=\"primary\"\n icon={<UserAddOutlined />}\n code=\"100002\"\n onClick={() => {\n if (isV3) {\n showCreateModalV2()\n } else {\n showCreateModal()\n }\n }}\n >\n {t('User.createTitle')}\n </AuthButton>\n }\n >\n <QueryList<UserListItem, { name?: string }, { List: UserListItem[]; Total: number }>\n identifier=\"user-list\"\n code=\"100001\"\n request={{\n url: '/api/usystem/user/list',\n method: 'GET',\n }}\n rowKey=\"id\"\n columns={columns}\n dataAdapter={data => ({\n total: data?.Total,\n items: data?.List,\n })}\n renderForm={\n isV3\n ? form => (\n <Form form={form}>\n <Form.Item label=\"名称\" name=\"name\">\n <Input />\n </Form.Item>\n </Form>\n )\n : undefined\n }\n />\n </Card>\n {createModal}\n {updateModal}\n {createModalV2}\n {updateModalV2}\n </>\n )\n}\n\nexport default withContext(UserList, { isGlobal: true })\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "react-toolkits",
3
3
  "type": "module",
4
- "version": "2.22.22",
4
+ "version": "2.22.27",
5
5
  "sideEffects": [
6
6
  "*.css"
7
7
  ],
@@ -68,9 +68,9 @@
68
68
  "ts-essentials": "^10.0.3",
69
69
  "tsup": "^8.3.5",
70
70
  "typescript": "^5.6.3",
71
+ "tsconfig": "0.0.6",
71
72
  "@flow97/eslint-config-react": "1.1.2",
72
- "tailwind-config": "0.1.3",
73
- "tsconfig": "0.0.6"
73
+ "tailwind-config": "0.1.3"
74
74
  },
75
75
  "peerDependencies": {
76
76
  "antd": "^5.12.2",
@@ -1,2 +0,0 @@
1
- import {i}from'./chunk-KXTBMJYF.js';import {has,template,get}from'lodash-es';import {useMemo}from'react';function l(){let t=i(e=>e.locale);return {t:useMemo(()=>(e,r)=>has(t,e)?template(get(t,e))(r):e,[t])}}export{l as a};//# sourceMappingURL=chunk-A32VE3TQ.js.map
2
- //# sourceMappingURL=chunk-A32VE3TQ.js.map
@@ -1,2 +0,0 @@
1
- import {l,m,i}from'./chunk-KXTBMJYF.js';import {useQuery,useQueryClient,useMutation}from'@tanstack/react-query';function q(){let e=l();return useQuery({queryKey:m.roles.all,queryFn:()=>e.get("/api/usystem/role/all")})}function v(e){let r=i(i=>i.permissionVersion),t=l(),n=r==="v2"?"v2":"v1";return useQuery({queryKey:m.roles.detail(e,n),queryFn:()=>t.get(`/api/usystem/role/${n==="v2"?"infoV2":"info"}?name=${e}`)})}function f(){let{permissionVersion:e}=i(i=>i),r=l(),t=useQueryClient(),n=e==="v2"?"v2":"v1";return useMutation({mutationKey:m.roles.create(n),mutationFn:({name:i,permissions:y})=>r.post(n==="v2"?"/api/usystem/role/createV2":"/api/usystem/role/create",{name:i,permissions:y}),onSuccess:()=>{t.invalidateQueries({queryKey:m.roles.all});}})}function K(){let{permissionVersion:e}=i(i=>i),r=l(),t=useQueryClient(),n=e==="v2"?"v2":"v1";return useMutation({mutationKey:m.roles.update(n),mutationFn:({id:i,name:y,permissions:p})=>r.post(n==="v2"?"/api/usystem/role/updateV2":"/api/usystem/role/update",{id:i,name:y,permissions:p}),onSuccess:()=>{t.invalidateQueries({queryKey:m.roles.all});}})}function R(){let e=l(),r=useQueryClient();return useMutation({mutationKey:m.roles.delete,mutationFn:({id:t,name:n})=>e.post("/api/usystem/role/delete",{id:t,name:n}),onSuccess:()=>{r.invalidateQueries({queryKey:m.roles.all});}})}function k(){let e=l(),r=useQueryClient();return useMutation({mutationKey:m.users.create,mutationFn:t=>e.post("/api/usystem/user/create",t),onSuccess:()=>{r.invalidateQueries({queryKey:m.users.all});}})}function x(){let e=l(),r=useQueryClient();return useMutation({mutationKey:m.users.update,mutationFn:t=>e.post("/api/usystem/user/update",t),onSuccess:()=>{r.invalidateQueries({queryKey:m.users.all});}})}function F(){let e=l(),r=useQueryClient();return useMutation({mutationKey:m.users.delete,mutationFn:({id:t,name:n})=>e.post("/api/usystem/user/delete",{id:t,name:n}),onSuccess:()=>{r.invalidateQueries({queryKey:m.users.all});}})}function P(){let e=l();return useQuery({queryKey:m.permissions.allPermissions,queryFn:()=>e.get("/api/usystem/user/allPermssions")})}function C(){let e=l();return useQuery({queryKey:m.permissions.allPermissionsV2,queryFn:()=>e.get("/api/usystem/user/allPermssionsV2")})}export{q as a,v as b,f as c,K as d,R as e,k as f,x as g,F as h,P as i,C as j};//# sourceMappingURL=chunk-F6U4XQKJ.js.map
2
- //# sourceMappingURL=chunk-F6U4XQKJ.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/modules/permission/services/index.ts"],"names":["useAllRoles","ky","useKy","useQuery","queryKeys","useRole","name","permissionVersion","useToolkitsStore","state","version","useCreateRole","s","queryClient","useQueryClient","useMutation","permissions","useUpdateRole","id","useRemoveRole","useCreateUser","arg","useUpdateUser","useRemoveUser","useAllPermissions","useAllPermissionsV2"],"mappings":"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","file":"chunk-F6U4XQKJ.js","sourcesContent":["import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'\n\nimport { useToolkitsStore } from '@/components/toolkitsProvider'\nimport { PermissionVersion } from '@/constants'\nimport { useKy } from '@/libs'\nimport { queryKeys } from '@/queryKeys'\n\nimport type { PermissionEnumItem, RoleEnumItem, RoleV1, RoleV2 } from '../types'\n\nexport function useAllRoles() {\n const ky = useKy()\n return useQuery({\n queryKey: queryKeys.roles.all,\n queryFn: () => ky.get<RoleEnumItem[]>('/api/usystem/role/all'),\n })\n}\n\nexport function useRole(name: string) {\n const permissionVersion = useToolkitsStore(state => state.permissionVersion)\n const ky = useKy()\n const version = permissionVersion === PermissionVersion.V2 ? 'v2' : 'v1'\n\n return useQuery({\n queryKey: queryKeys.roles.detail(name, version),\n queryFn: () => ky.get<RoleV1 | RoleV2>(`/api/usystem/role/${version === 'v2' ? 'infoV2' : 'info'}?name=${name}`),\n })\n}\n\nexport function useCreateRole() {\n const { permissionVersion } = useToolkitsStore(s => s)\n const ky = useKy()\n const queryClient = useQueryClient()\n const version = permissionVersion === PermissionVersion.V2 ? 'v2' : 'v1'\n\n return useMutation({\n mutationKey: queryKeys.roles.create(version),\n mutationFn: ({ name, permissions }: { name: string; permissions: RoleV1['permissions'] | RoleV2['permissions'] }) =>\n ky.post(version === 'v2' ? '/api/usystem/role/createV2' : '/api/usystem/role/create', { name, permissions }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: queryKeys.roles.all })\n },\n })\n}\n\nexport function useUpdateRole() {\n const { permissionVersion } = useToolkitsStore(s => s)\n const ky = useKy()\n const queryClient = useQueryClient()\n const version = permissionVersion === PermissionVersion.V2 ? 'v2' : 'v1'\n\n return useMutation({\n mutationKey: queryKeys.roles.update(version),\n mutationFn: ({\n id,\n name,\n permissions,\n }: {\n id: number\n name: string\n permissions: RoleV1['permissions'] | RoleV2['permissions']\n }) =>\n ky.post(version === 'v2' ? '/api/usystem/role/updateV2' : '/api/usystem/role/update', { id, name, permissions }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: queryKeys.roles.all })\n },\n })\n}\n\nexport function useRemoveRole() {\n const ky = useKy()\n const queryClient = useQueryClient()\n\n return useMutation({\n mutationKey: queryKeys.roles.delete,\n mutationFn: ({ id, name }: { id: number; name: string }) => ky.post('/api/usystem/role/delete', { id, name }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: queryKeys.roles.all })\n },\n })\n}\n\nexport function useCreateUser() {\n const ky = useKy()\n const queryClient = useQueryClient()\n\n return useMutation({\n mutationKey: queryKeys.users.create,\n mutationFn: (\n arg:\n | { name: string; roles: string[] }\n | {\n name: string\n permissions: {\n game_group: string[]\n game_ids: string[]\n role: string\n }[]\n },\n ) => ky.post('/api/usystem/user/create', arg),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: queryKeys.users.all })\n },\n })\n}\n\nexport function useUpdateUser() {\n const ky = useKy()\n const queryClient = useQueryClient()\n\n return useMutation({\n mutationKey: queryKeys.users.update,\n mutationFn: (\n arg:\n | { id: string; name: string; roles: string[] }\n | {\n id: string\n name: string\n permissions: {\n game_group: string[]\n game_ids: string[]\n role: string\n }[]\n },\n ) => ky.post('/api/usystem/user/update', arg),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: queryKeys.users.all })\n },\n })\n}\n\nexport function useRemoveUser() {\n const ky = useKy()\n const queryClient = useQueryClient()\n\n return useMutation({\n mutationKey: queryKeys.users.delete,\n mutationFn: ({ id, name }: { id: string; name: string }) => ky.post('/api/usystem/user/delete', { id, name }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: queryKeys.users.all })\n },\n })\n}\n\nexport function useAllPermissions() {\n const ky = useKy()\n\n return useQuery({\n queryKey: queryKeys.permissions.allPermissions,\n queryFn: () => ky.get<PermissionEnumItem[]>('/api/usystem/user/allPermssions'),\n })\n}\n\nexport function useAllPermissionsV2() {\n const ky = useKy()\n\n return useQuery({\n queryKey: queryKeys.permissions.allPermissionsV2,\n queryFn: () => ky.get<PermissionEnumItem[]>('/api/usystem/user/allPermssionsV2'),\n })\n}\n"]}
@@ -1,3 +0,0 @@
1
- import {create,useStore,createStore}from'zustand';import {App}from'antd';import {createContext,useContext,useMemo,useRef}from'react';import {persist,createJSONStorage}from'zustand/middleware';import {jwtDecode}from'jwt-decode';import {jsx}from'react/jsx-runtime';import ne from'ky';import {useNavigate}from'react-router-dom';function K(){return create((e,t)=>({open:new Map,usedIds:new Set,isOpen:o=>t().open.get(o)??!1,show(o){e({open:new Map(t().open).set(o,!0)});},hide(o){e({open:new Map(t().open).set(o,!1)});},hideAll(){e({open:new Map});},checkUniqueness(o){let{usedIds:n}=t();return !n.has(o)},registerIds(o){let{usedIds:n}=t();return n.has(o)?!1:(e({usedIds:new Set(n).add(o)}),!0)},cleanup(o){let{open:n,usedIds:a}=t(),p=new Map(n),T=new Set(a);p.delete(o),T.delete(o),e({open:p,usedIds:T});}}))}var j=0,H=()=>{let e=Date.now(),t=Math.floor(Math.random()*1e3),o=++j%1e3;return e*1e6+t*1e3+o};var k={getItem:e=>sessionStorage.getItem(e)||localStorage.getItem(e),setItem:(e,t)=>{sessionStorage.setItem(e,t),localStorage.setItem(e,t);},removeItem(e){sessionStorage.removeItem(e),localStorage.removeItem(e);}};var we="https://idaas.ifunplus.cn/enduser/api/application/plugin_FunPlus/sso/v1",S="App-ID",Ee="/console/",v=(a=>(a.V1="v1",a.V2="v2",a.V3="v3",a.V4="v4",a))(v||{}),Ue="*";var W={global:{noEntitlement:"No permission, please contact the administrator.",name:"Name",creationTime:"Creation Time",operation:"Operation",update:"Update",edit:"Edit",delete:"Delete",selectAll:"Select All",game:"Game",user:"User",role:"Role",username:"Username",password:"Password",label:"Label",method:"Method",route:"Route",request:"Request",response:"Response",add:"Add",signIn:"Sign In",projectGroup:"Project Group",view:"View",back:"Back"},SignIn:{title:"Sign In Method",signInWithIDass:"Sign in with IDass",unregistered:"You are not yet registered on the platform, please contact the administrator",welcome:"Welcome"},NotFound:{subTitle:"The page you visited does not exist",buttonText:"Return to homepage"},FilterFormWrapper:{confirmText:"Search",resetText:"Reset"},FormModal:{confirmText:"Confirm",cancelText:"Cancel"},GameSelect:{label:"Current Game",placeholder:"Please select a game"},RequireGame:{description:"Please select a game"},UserWidget:{signOutText:"Sign Out"},User:{createTitle:"Create User",createSuccessfully:"User created successfully",updateTitle:"Update User",updateSuccessfully:"User updated successfully",deleteTitle:"Delete User",deleteContent:"Are you sure you want to delete user <%= user %>?",deleteSuccessfully:"User deleted successfully"},Role:{createTitle:"Create Role",createSuccessfully:"Role created successfully",updateTitle:"Update Role",updateSuccessfully:"Role updated successfully",deleteTitle:"Delete Role",deleteContent:"Are you sure you want to delete role <%= role %>?",deleteSuccessfully:"Role deleted successfully"},PermissionList:{failedDescription:"Failed to get permission list",baseSectionTitle:"Platform Basic Permissions",gameSectionTitle:"Game Permissions",gameSectionDescription:"Please select a game first",gameSelectPlaceholder:"Please select a game first",removeText:"Remove",addText:"Add Game Permissions"},RoleDetail:{title:"Role Details"},InfiniteList:{loadingText:"Loading...",reachEndText:"You've reached the end",loadMoreText:"Load more"}},w=W;var E=e=>({locale:w,gameApiV2:!1,isGlobal:!1,loginPath:"/sign_in",mainPagePath:"/",permissionVersion:"v1",setContext(t){e(o=>({...o,...t}));}});var U=e=>({setGameId:t=>{e({gameId:t});}});var Y=e=>{if(!e)return null;try{return jwtDecode(e)}catch{return null}},A=e=>({token:void 0,user:null,setToken:t=>{let o=Y(t);e({token:t,user:o});}});var D=e=>createStore()(persist((...t)=>{let[o,,n]=t;return {...A(...t),...U(...t),...E(...t),clear:()=>{let a=n.getInitialState();o(a),n.persist.clearStorage();},...e}},{name:"toolkits",storage:createJSONStorage(()=>k),partialize:t=>({token:t.token,gameId:t.gameId,collapsed:t.collapsed,user:t.user})}));var b=createContext(null);function C(e){let t=useContext(b);if(!t)throw new Error("Missing ToolkitsProvider in the tree");return useStore(t,e||(o=>o))}var G=e=>{let{children:t,...o}=e,n=useRef(),a=useContext(b)?.getState();if(n.current||(n.current=D({...a,...o})),!n.current.getState().loginPath)throw new Error('ToolkitsProvider: \u8BF7\u914D\u7F6E "loginPath"');return jsx(b.Provider,{value:n.current,children:jsx(App,{children:t})})},oe=(e,t)=>{let o=n=>jsx(G,{...t,children:jsx(e,{...n})});return o.displayName=`withContext(${e.displayName||e.name||"Component"})`,o},se=G;var O=[0,1,200],h={OK:200,UNAUTHORIZED:401,FORBIDDEN:403,UNREGISTERED:412},le=3e4;var N=e=>!e||typeof e!="object"?"Unknown error":e.msg||e.message||e.error||"Unknown error",ce=e=>{let{value:t,allowedCodes:o}=e;return t==null||typeof t!="number"?!1:o.includes(t)},ue=(e,t)=>{if(t<h.OK||t>=300)return !1;if(!e||typeof e!="object")return !0;let o=[{field:"code",value:e.code,allowedCodes:O},{field:"status",value:e.status,allowedCodes:O},{field:"errno",value:e.errno,allowedCodes:O}];return o.some(a=>a.value!==void 0&&a.value!==null)?o.every(a=>a.value===void 0||a.value===null||ce(a)):!0},pe=async(e,t)=>{switch(t){case"blob":return e.blob();case"text":return e.text();case"arrayBuffer":return e.arrayBuffer();case"formData":return e.formData();case"json":default:return e.json()}},de=e=>{let{baseURL:t}=e||{},{notification:o}=App.useApp(),n=useNavigate(),a=C(),{token:p,isGlobal:T,gameId:R,permissionVersion:I,loginPath:y,clear:x}=a,F=()=>{x(),n(y);},M=()=>{if(x(),y){let s=new URL(y,window.location.origin);s.searchParams.set("unregistered","true"),n(s.toString());}},_=()=>{o.error({message:"\u8BBF\u95EE\u88AB\u7981\u6B62",description:"\u60A8\u6CA1\u6709\u6743\u9650\u8BBF\u95EE\u6B64\u8D44\u6E90\u3002"});},B=s=>async(r,i,l)=>{if(s==="blob"||s==="arrayBuffer"||s==="text"||s==="formData")return l;let c;try{c=await l.clone().json();}catch{return l}if(ue(c,l.status)){let f=c.data!==void 0?c.data:c;return new Response(JSON.stringify(f),{status:l.status,statusText:l.statusText,headers:l.headers})}let d=N(c);o.error({message:"Request failed",description:d});let m=new Error(d);throw m.response=l,m.data=c,m},V=(s,r)=>{switch(s){case h.UNAUTHORIZED:F();break;case h.UNREGISTERED:M();break;case h.FORBIDDEN:_();break;default:{let i=N(r)||`HTTP ${s} Error`;o.error({message:"Request failed",description:i});break}}},P=useMemo(()=>ne.create({prefixUrl:t,retry:0,timeout:le,headers:{Accept:"application/json","Content-Type":"application/json"},hooks:{beforeRequest:[s=>{p&&s.headers.set("Authorization",`Bearer ${p}`),!s.headers.has(S)&&I!=="v1"&&(T||!R?s.headers.set(S,"global"):s.headers.set(S,encodeURIComponent(String(R))));}],beforeError:[async s=>{let{response:r}=s;if(r){let i=r.status,l;try{let c=r.headers.get("content-type")||"";(c.includes("application/json")||c.startsWith("text/"))&&(l=await r.clone().json());}catch{}V(i,l);}else o.error({message:"Network Error",description:s.message||"Network request failed"});return s}]}}),[t,p,T,R,I,o,y,x]),u=async(s,r,i,l)=>{let{responseType:c,...d}=l||{},m={...d,hooks:{...d.hooks,afterResponse:[...d.hooks?.afterResponse||[],B(c)]}},f;return i?f=await P(r,{method:s,json:i,...m}):f=await P(r,{method:s,...m}),pe(f,c)};return {get:(s,r)=>u("GET",s,void 0,r),post:(s,r,i)=>u("POST",s,r,i),put:(s,r,i)=>u("PUT",s,r,i),delete:(s,r)=>u("DELETE",s,void 0,r),patch:(s,r,i)=>u("PATCH",s,r,i),options:(s,r)=>u("OPTIONS",s,void 0,r),head:(s,r)=>u("HEAD",s,void 0,r),request:s=>{let{url:r,...i}=s;return u(i.method||"GET",r,void 0,i)},instance:P}};var ct={permissions:{check:(e,t)=>["permissions","check",e,t],allPermissions:["permissions","all"],allPermissionsV2:["permissions","allV2"]},users:{all:["users"],detail:e=>["users","detail",e],create:["users","create"],update:["users","update"],delete:["users","delete"]},roles:{all:["roles"],detail:(e,t)=>["roles","detail",e,t],create:e=>["roles","create",e],update:e=>["roles","update",e],delete:["roles","delete"]},menus:{all:["menus"],navbar:e=>["menus","navbar",e],detail:e=>["menus","detail",e],create:["menus","create"],update:["menus","update"],delete:["menus","delete"]},enums:{gameGroups:["enums","gameGroups"],gameIds:e=>["enums","gameIds",e]},games:{all:["games","all"]}};
2
- export{K as a,H as b,k as c,we as d,S as e,Ee as f,v as g,Ue as h,C as i,oe as j,se as k,de as l,ct as m};//# sourceMappingURL=chunk-KXTBMJYF.js.map
3
- //# sourceMappingURL=chunk-KXTBMJYF.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/createVisibilityStore.ts","../src/utils/generateId.ts","../src/utils/mixedStorage.ts","../src/constants/index.ts","../src/locale/en_GB.ts","../src/stores/context.ts","../src/stores/game.ts","../src/stores/token.ts","../src/stores/index.ts","../src/components/toolkitsProvider/ToolkitsProvider.tsx","../src/libs/ky.ts","../src/queryKeys.ts"],"names":["createVisibilityStore","create","set","get","uuid","usedIds","open","newOpen","newUsedIds","globalCounter","generateId","timestamp","random","counter","mixedStorage","name","value","SSO_URL","APP_ID_HEADER","FRONTEND_ROUTE_PREFIX","PermissionVersion","WILDCARD","locale","en_GB_default","createContextSlice","state","prev","createGameSlice","id","decodeToken","token","jwtDecode","createTokenSlice","user","createToolkitsStore","initProps","createStore","persist","args","store","initialState","createJSONStorage","ToolkitsContext","createContext","useToolkitsStore","selector","useContext","useStore","ToolkitsProvider","props","children","restProps","storeRef","useRef","parentState","jsx","App","withContext","Component","providerProps","WrappedComponent","ToolkitsProvider_default","SUCCESS_RESPONSE_CODES","HTTP_STATUS","REQUEST_TIMEOUT","extractErrorMessage","data","isStatusCodeSuccess","config","allowedCodes","isSuccessResponse","status","statusChecks","processResponseByType","response","responseType","useKy","baseURL","notification","navigate","useNavigate","toolkitsStore","isGlobal","gameId","permissionVersion","loginPath","clear","handleUnauthorized","handleUnregistered","url","handleForbidden","createResponseHandler","_request","_options","responseData","errorMessage","error","handleHttpStatusError","instance","useMemo","ky","request","contentType","makeRequest","method","requestOptions","kyOptions","finalOptions","options","requestOpts","queryKeys","permissions","version","gameGroups"],"mappings":"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","file":"chunk-KXTBMJYF.js","sourcesContent":["import { create } from 'zustand'\n\nexport interface VisibilityState {\n open: Map<number, boolean>\n usedIds: Set<number>\n isOpen: (uuid: number) => boolean\n show: (uuid: number) => void\n hide: (uuid: number) => void\n hideAll: () => void\n checkUniqueness: (uuid: number) => boolean\n registerIds: (uuid: number) => boolean\n cleanup: (uuid: number) => void\n}\n\n/**\n * 创建一个可见性管理的 Zustand store\n * 用于管理 Modal、Drawer 等组件的显示/隐藏状态\n * 每次调用都会创建一个独立的 store 实例,确保不同组件间的状态隔离\n */\nexport function createVisibilityStore() {\n return create<VisibilityState>((set, get) => ({\n open: new Map(),\n usedIds: new Set(),\n isOpen: uuid => get().open.get(uuid) ?? false,\n show(uuid) {\n set({\n open: new Map(get().open).set(uuid, true),\n })\n },\n hide(uuid) {\n set({ open: new Map(get().open).set(uuid, false) })\n },\n hideAll() {\n set({ open: new Map() })\n },\n checkUniqueness(uuid) {\n const { usedIds } = get()\n return !usedIds.has(uuid)\n },\n registerIds(uuid) {\n const { usedIds } = get()\n if (usedIds.has(uuid)) {\n return false // ID 已被使用\n }\n set({ usedIds: new Set(usedIds).add(uuid) })\n return true // 注册成功\n },\n cleanup(uuid) {\n const { open, usedIds } = get()\n const newOpen = new Map(open)\n const newUsedIds = new Set(usedIds)\n newOpen.delete(uuid)\n newUsedIds.delete(uuid)\n set({ open: newOpen, usedIds: newUsedIds })\n },\n }))\n}\n","/**\n * 生成唯一 ID 的函数\n * 使用时间戳 + 随机数 + 计数器的组合来确保唯一性\n */\nlet globalCounter = 0\n\nexport const generateId = (): number => {\n const timestamp = Date.now()\n const random = Math.floor(Math.random() * 1000)\n const counter = ++globalCounter % 1000\n\n // 组合:时间戳(毫秒) * 1000000 + 随机数 * 1000 + 计数器\n // 这样可以确保即使在同一毫秒内生成多个ID也不会重复\n return timestamp * 1000000 + random * 1000 + counter\n}\n","import type { StateStorage } from 'zustand/middleware'\n\n// 通过 SessionStorage 隔离数据,防止多开页面时的数据冲突。\n// 当 SessionStorage 不存在时,使用 LocalStorage。\nexport const mixedStorage: StateStorage = {\n getItem: (name: string): string | null => {\n return sessionStorage.getItem(name) || localStorage.getItem(name)\n },\n setItem: (name: string, value: string) => {\n sessionStorage.setItem(name, value)\n localStorage.setItem(name, value)\n },\n removeItem(name: string) {\n sessionStorage.removeItem(name)\n localStorage.removeItem(name)\n },\n}\n","export const SSO_URL = 'https://idaas.ifunplus.cn/enduser/api/application/plugin_FunPlus/sso/v1'\n\nexport const APP_ID_HEADER = 'App-ID'\n\nexport const FRONTEND_ROUTE_PREFIX = '/console/'\n\nexport enum PermissionVersion {\n V1 = 'v1',\n V2 = 'v2',\n V3 = 'v3',\n V4 = 'v4',\n}\n\nexport const WILDCARD = '*'\n","import type { Locale } from '.'\n\nconst locale: Locale = {\n global: {\n noEntitlement: 'No permission, please contact the administrator.',\n name: 'Name',\n creationTime: 'Creation Time',\n operation: 'Operation',\n update: 'Update',\n edit: 'Edit',\n delete: 'Delete',\n selectAll: 'Select All',\n game: 'Game',\n user: 'User',\n role: 'Role',\n username: 'Username',\n password: 'Password',\n label: 'Label',\n method: 'Method',\n route: 'Route',\n request: 'Request',\n response: 'Response',\n add: 'Add',\n signIn: 'Sign In',\n projectGroup: 'Project Group',\n view: 'View',\n back: 'Back',\n },\n SignIn: {\n title: 'Sign In Method',\n signInWithIDass: 'Sign in with IDass',\n unregistered: 'You are not yet registered on the platform, please contact the administrator',\n welcome: 'Welcome',\n },\n NotFound: {\n subTitle: 'The page you visited does not exist',\n buttonText: 'Return to homepage',\n },\n FilterFormWrapper: {\n confirmText: 'Search',\n resetText: 'Reset',\n },\n FormModal: {\n confirmText: 'Confirm',\n cancelText: 'Cancel',\n },\n GameSelect: {\n label: 'Current Game',\n placeholder: 'Please select a game',\n },\n RequireGame: {\n description: 'Please select a game',\n },\n UserWidget: {\n signOutText: 'Sign Out',\n },\n User: {\n createTitle: 'Create User',\n createSuccessfully: 'User created successfully',\n updateTitle: 'Update User',\n updateSuccessfully: 'User updated successfully',\n deleteTitle: 'Delete User',\n deleteContent: 'Are you sure you want to delete user <%= user %>?',\n deleteSuccessfully: 'User deleted successfully',\n },\n Role: {\n createTitle: 'Create Role',\n createSuccessfully: 'Role created successfully',\n updateTitle: 'Update Role',\n updateSuccessfully: 'Role updated successfully',\n deleteTitle: 'Delete Role',\n deleteContent: 'Are you sure you want to delete role <%= role %>?',\n deleteSuccessfully: 'Role deleted successfully',\n },\n PermissionList: {\n failedDescription: 'Failed to get permission list',\n baseSectionTitle: 'Platform Basic Permissions',\n gameSectionTitle: 'Game Permissions',\n gameSectionDescription: 'Please select a game first',\n gameSelectPlaceholder: 'Please select a game first',\n removeText: 'Remove',\n addText: 'Add Game Permissions',\n },\n RoleDetail: {\n title: 'Role Details',\n },\n InfiniteList: {\n loadingText: 'Loading...',\n reachEndText: \"You've reached the end\",\n loadMoreText: 'Load more',\n },\n}\n\nexport default locale\n","// import type { AxiosInterceptorManager, AxiosResponse, InternalAxiosRequestConfig } from 'axios'\nimport type { StateCreator } from 'zustand'\n\nimport { PermissionVersion } from '@/constants'\nimport type { Locale } from '@/locale'\nimport enGb from '@/locale/en_GB'\n\nexport interface ContextSlice {\n locale: Locale\n permissionVersion: PermissionVersion // 权限版本\n gameApiV2: boolean\n loginPath: string // 登录页路径\n isGlobal: boolean // 为 true 时,APP-ID header 为 'global',否则为当前的游戏的 id。\n navWidth?: number // 侧边栏宽度\n collapsed?: boolean\n collapsible?: boolean // 菜单是否可折叠\n mainPagePath: string // 首页地址\n setContext(state: Partial<Omit<ContextSlice, 'setContext'>>): void\n}\n\nexport const createContextSlice: StateCreator<ContextSlice, [], [], ContextSlice> = set => ({\n locale: enGb,\n gameApiV2: false,\n isGlobal: false,\n loginPath: '/sign_in',\n mainPagePath: '/',\n permissionVersion: PermissionVersion.V1,\n setContext(state) {\n set(prev => ({ ...prev, ...state }))\n },\n})\n","import type { StateCreator } from 'zustand'\n\nexport interface GameSlice {\n gameId?: string | number\n setGameId: (id?: string | number) => void\n}\n\nexport const createGameSlice: StateCreator<GameSlice, [], [], GameSlice> = set => ({\n setGameId: id => {\n set({ gameId: id })\n },\n})\n","import { jwtDecode } from 'jwt-decode'\nimport type { StateCreator } from 'zustand'\n\n/**\n * JWT Token 解码后的用户信息\n */\nexport interface UserInfo {\n authorityId: string\n exp: number\n}\n\nexport interface TokenSlice {\n /** JWT Token */\n token?: string\n user: UserInfo | null\n setToken: (token: string) => void\n}\n\nconst decodeToken = (token?: string): UserInfo | null => {\n if (!token) return null\n\n try {\n return jwtDecode<UserInfo>(token)\n } catch {\n return null\n }\n}\n\nexport const createTokenSlice: StateCreator<TokenSlice, [], []> = set => ({\n token: undefined,\n user: null,\n setToken: token => {\n const user = decodeToken(token)\n set({ token, user })\n },\n})\n","import { createStore } from 'zustand'\nimport { createJSONStorage, persist } from 'zustand/middleware'\n\nimport { mixedStorage } from '@/utils'\n\nimport { type ContextSlice, createContextSlice } from './context'\nimport type { GameSlice } from './game'\nimport { createGameSlice } from './game'\nimport type { TokenSlice } from './token'\nimport { createTokenSlice } from './token'\n\nexport type ToolkitsState = TokenSlice &\n GameSlice &\n ContextSlice & {\n clear: () => void\n }\n\nexport const createToolkitsStore = (initProps?: Partial<ContextSlice>) => {\n return createStore<ToolkitsState>()(\n persist(\n (...args) => {\n const [set, , store] = args\n return {\n ...createTokenSlice(...args),\n ...createGameSlice(...args),\n ...createContextSlice(...args),\n clear: () => {\n const initialState = store.getInitialState()\n set(initialState)\n store.persist.clearStorage()\n },\n ...initProps,\n }\n },\n {\n name: 'toolkits',\n storage: createJSONStorage(() => mixedStorage),\n partialize: state => ({\n token: state.token,\n gameId: state.gameId,\n collapsed: state.collapsed,\n user: state.user,\n }),\n },\n ),\n )\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { App } from 'antd'\nimport type { ComponentType, FC, PropsWithChildren } from 'react'\nimport { createContext, useContext, useRef } from 'react'\nimport { useStore } from 'zustand'\n\nimport type { ToolkitsState } from '@/stores'\nimport { createToolkitsStore } from '@/stores'\nimport type { ContextSlice } from '@/stores/context'\n\ntype ToolkitsStore = ReturnType<typeof createToolkitsStore>\n\nconst ToolkitsContext = createContext<ToolkitsStore | null>(null)\n\n// 重载函数签名:支持有 selector 和无 selector 两种调用方式\nexport function useToolkitsStore(): ToolkitsState\nexport function useToolkitsStore<T>(selector: (state: ToolkitsState) => T): T\nexport function useToolkitsStore<T>(selector?: (state: ToolkitsState) => T): T | ToolkitsState {\n const store = useContext(ToolkitsContext)\n if (!store) throw new Error('Missing ToolkitsProvider in the tree')\n\n // 总是调用 useStore,根据是否有 selector 决定使用什么选择器\n return useStore(store, selector || ((state: ToolkitsState) => state as T))\n}\n\nexport type ToolkitsProviderProps = PropsWithChildren<Partial<Omit<ContextSlice, 'setContext'>>>\n\nconst ToolkitsProvider: FC<ToolkitsProviderProps> = props => {\n const { children, ...restProps } = props\n const storeRef = useRef<ToolkitsStore>()\n const parentState = useContext(ToolkitsContext)?.getState()\n\n if (!storeRef.current) {\n storeRef.current = createToolkitsStore({ ...parentState, ...restProps })\n }\n\n if (!storeRef.current.getState().loginPath) {\n throw new Error('ToolkitsProvider: 请配置 \"loginPath\"')\n }\n\n return (\n <ToolkitsContext.Provider value={storeRef.current}>\n <App>{children}</App>\n </ToolkitsContext.Provider>\n )\n}\n\nexport const withContext = (Component: ComponentType, providerProps: Omit<ToolkitsProviderProps, 'children'>) => {\n const WrappedComponent = (props: any) => {\n return (\n <ToolkitsProvider {...providerProps}>\n <Component {...props} />\n </ToolkitsProvider>\n )\n }\n\n WrappedComponent.displayName = `withContext(${Component.displayName || Component.name || 'Component'})`\n\n return WrappedComponent\n}\n\nif (process.env.NODE_ENV !== 'production') {\n ToolkitsProvider.displayName = 'ToolkitsProvider'\n}\n\nexport default ToolkitsProvider\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { App } from 'antd'\nimport ky, { type KyInstance, type Options as KyOptions } from 'ky'\nimport { useMemo } from 'react'\nimport { useNavigate } from 'react-router-dom'\n\nimport { useToolkitsStore } from '@/components/toolkitsProvider'\nimport { APP_ID_HEADER, PermissionVersion } from '@/constants'\n\n// 响应成功状态码常量\nconst SUCCESS_RESPONSE_CODES = [0, 1, 200] as const\n\n// HTTP 状态码常量\nconst HTTP_STATUS = {\n OK: 200,\n UNAUTHORIZED: 401,\n FORBIDDEN: 403,\n UNREGISTERED: 412,\n} as const\n\n// 请求超时时间(毫秒)\nconst REQUEST_TIMEOUT = 30000\n\n// 成功响应状态码字段类型\ntype StatusField = 'code' | 'status' | 'errno'\n\n// 状态码检查配置\ninterface StatusCheckConfig {\n field: StatusField\n value: unknown\n allowedCodes: readonly number[]\n}\n\n// 响应类型枚举\nexport enum ResponseType {\n JSON = 'json',\n BLOB = 'blob',\n TEXT = 'text',\n ARRAY_BUFFER = 'arrayBuffer',\n FORM_DATA = 'formData',\n}\n\n// 通用请求选项接口\ninterface RequestOptions extends KyOptions {\n responseType?: ResponseType\n}\n\n// useKy Hook 配置选项\nexport interface UseKyOptions {\n baseURL?: string\n}\n\n// HTTP客户端方法接口 - 支持泛型响应类型\ninterface KyMethods {\n get: <T = any>(url: string, options?: RequestOptions) => Promise<T>\n post: <T = any>(url: string, data?: any, options?: RequestOptions) => Promise<T>\n put: <T = any>(url: string, data?: any, options?: RequestOptions) => Promise<T>\n delete: <T = any>(url: string, options?: RequestOptions) => Promise<T>\n patch: <T = any>(url: string, data?: any, options?: RequestOptions) => Promise<T>\n options: <T = any>(url: string, options?: RequestOptions) => Promise<T>\n head: <T = any>(url: string, options?: RequestOptions) => Promise<T>\n request: <T = any>(options: RequestOptions & { url: string }) => Promise<T>\n instance: KyInstance\n}\n\n// 错误消息提取工具函数\nconst extractErrorMessage = (data: any): string => {\n if (!data || typeof data !== 'object') {\n return 'Unknown error'\n }\n\n return data.msg || data.message || data.error || 'Unknown error'\n}\n\n/**\n * 检查单个状态码字段是否成功\n * @param config 状态码检查配置\n * @returns 是否成功\n */\nconst isStatusCodeSuccess = (config: StatusCheckConfig): boolean => {\n const { value, allowedCodes } = config\n\n if (value === undefined || value === null) {\n return false\n }\n\n if (typeof value !== 'number') {\n return false\n }\n\n return allowedCodes.includes(value)\n}\n\n/**\n * 判断响应是否成功\n * @param data 响应数据\n * @param status HTTP状态码\n * @returns 是否成功\n */\nconst isSuccessResponse = (data: any, status: number): boolean => {\n // 如果HTTP状态码不在2xx范围,直接返回失败\n if (status < HTTP_STATUS.OK || status >= 300) {\n return false\n }\n\n // 如果没有响应数据或不是对象,认为成功(可能是空响应)\n if (!data || typeof data !== 'object') {\n return true\n }\n\n // 定义状态码检查配置\n const statusChecks: StatusCheckConfig[] = [\n { field: 'code', value: data.code, allowedCodes: SUCCESS_RESPONSE_CODES },\n { field: 'status', value: data.status, allowedCodes: SUCCESS_RESPONSE_CODES },\n { field: 'errno', value: data.errno, allowedCodes: SUCCESS_RESPONSE_CODES },\n ]\n\n // 检查是否有任何业务状态码字段存在且表示成功\n const hasBusinessStatusCode = statusChecks.some(config => config.value !== undefined && config.value !== null)\n\n // 如果存在业务状态码字段,则必须检查它们是否都表示成功\n if (hasBusinessStatusCode) {\n return statusChecks.every(\n config => config.value === undefined || config.value === null || isStatusCodeSuccess(config),\n )\n }\n\n // 如果没有业务状态码字段,HTTP 2xx 就认为成功\n return true\n}\n\n/**\n * 根据响应类型处理响应数据\n * @param response 响应对象\n * @param responseType 响应类型\n * @returns 处理后的响应数据\n */\nconst processResponseByType = async (response: Response, responseType?: ResponseType): Promise<any> => {\n switch (responseType) {\n case ResponseType.BLOB:\n return response.blob()\n case ResponseType.TEXT:\n return response.text()\n case ResponseType.ARRAY_BUFFER:\n return response.arrayBuffer()\n case ResponseType.FORM_DATA:\n return response.formData()\n case ResponseType.JSON:\n default:\n return response.json()\n }\n}\n\n/**\n * HTTP客户端Hook (基于 Ky) - 内部使用版本\n * @param config 配置选项\n * @returns HTTP客户端方法集合\n */\nexport const useKy = (config?: UseKyOptions): KyMethods => {\n const { baseURL } = config || {}\n const { notification } = App.useApp()\n const navigate = useNavigate()\n\n // 获取工具包状态\n const toolkitsStore = useToolkitsStore()\n const { token, isGlobal, gameId, permissionVersion, loginPath, clear } = toolkitsStore\n\n // 处理未授权错误\n const handleUnauthorized = () => {\n clear()\n navigate(loginPath)\n }\n\n // 处理未注册错误\n const handleUnregistered = () => {\n clear()\n if (loginPath) {\n // 添加未注册参数到登录页 URL\n const url = new URL(loginPath, window.location.origin)\n url.searchParams.set('unregistered', 'true')\n navigate(url.toString())\n }\n }\n\n // 处理禁止访问错误\n const handleForbidden = () => {\n notification.error({\n message: '访问被禁止',\n description: '您没有权限访问此资源。',\n })\n }\n\n // 创建响应处理函数\n const createResponseHandler = (responseType?: ResponseType) => {\n return async (_request: any, _options: any, response: Response): Promise<Response> => {\n // 非 JSON 类型直接交由调用方按响应类型读取\n if (\n responseType === ResponseType.BLOB ||\n responseType === ResponseType.ARRAY_BUFFER ||\n responseType === ResponseType.TEXT ||\n responseType === ResponseType.FORM_DATA\n ) {\n return response\n }\n\n // 默认 JSON\n let data: any\n try {\n data = await response.clone().json()\n } catch {\n // 非 JSON 或空响应体,直接返回原响应\n return response\n }\n\n if (isSuccessResponse(data, response.status)) {\n const responseData = data.data !== undefined ? data.data : data\n return new Response(JSON.stringify(responseData), {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n })\n }\n\n const errorMessage = extractErrorMessage(data)\n\n notification.error({\n message: 'Request failed',\n description: errorMessage,\n })\n\n const error = new Error(errorMessage)\n ;(error as any).response = response\n ;(error as any).data = data\n throw error\n }\n }\n\n // 处理HTTP状态码错误\n const handleHttpStatusError = (status: number, data: any) => {\n switch (status) {\n case HTTP_STATUS.UNAUTHORIZED:\n handleUnauthorized()\n break\n\n case HTTP_STATUS.UNREGISTERED:\n handleUnregistered()\n break\n\n case HTTP_STATUS.FORBIDDEN:\n handleForbidden()\n break\n\n default: {\n // 安全地提取错误消息\n const errorMessage = extractErrorMessage(data) || `HTTP ${status} Error`\n notification.error({\n message: 'Request failed',\n description: errorMessage,\n })\n break\n }\n }\n }\n\n // 创建ky实例\n const instance = useMemo(() => {\n return ky.create({\n prefixUrl: baseURL,\n retry: 0,\n timeout: REQUEST_TIMEOUT,\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n hooks: {\n beforeRequest: [\n request => {\n // 设置认证 headers\n if (token) {\n request.headers.set('Authorization', `Bearer ${token}`)\n }\n\n // 设置应用 ID headers\n if (!request.headers.has(APP_ID_HEADER) && permissionVersion !== PermissionVersion.V1) {\n if (isGlobal || !gameId) {\n request.headers.set(APP_ID_HEADER, 'global')\n } else {\n // 对 gameId 进行 URL 编码以避免非 ASCII 字符导致的 XMLHttpRequest 错误\n request.headers.set(APP_ID_HEADER, encodeURIComponent(String(gameId)))\n }\n }\n },\n ],\n beforeError: [\n async error => {\n const { response } = error\n\n if (response) {\n const status = response.status\n let data: any\n\n try {\n const contentType = response.headers.get('content-type') || ''\n if (contentType.includes('application/json') || contentType.startsWith('text/')) {\n data = await response.clone().json()\n }\n } catch {\n // 忽略 JSON 解析错误\n }\n\n handleHttpStatusError(status, data)\n } else {\n // 网络错误或请求超时等情况\n notification.error({\n message: 'Network Error',\n description: error.message || 'Network request failed',\n })\n }\n\n return error\n },\n ],\n },\n })\n }, [baseURL, token, isGlobal, gameId, permissionVersion, notification, loginPath, clear])\n\n // 通用请求处理函数\n const makeRequest = async <T = any>(\n method: string,\n url: string,\n data?: any,\n requestOptions?: RequestOptions,\n ): Promise<T> => {\n const { responseType, ...kyOptions } = requestOptions || {}\n\n // 创建带有响应类型处理器的请求选项\n const finalOptions: KyOptions = {\n ...kyOptions,\n hooks: {\n ...kyOptions.hooks,\n afterResponse: [...(kyOptions.hooks?.afterResponse || []), createResponseHandler(responseType)],\n },\n }\n\n let response: Response\n\n if (data) {\n response = await instance(url, { method, json: data, ...finalOptions })\n } else {\n response = await instance(url, { method, ...finalOptions })\n }\n\n // 根据响应类型返回相应数据\n return processResponseByType(response, responseType)\n }\n\n // HTTP方法\n const get = <T = any>(url: string, options?: RequestOptions): Promise<T> => {\n return makeRequest<T>('GET', url, undefined, options)\n }\n\n const post = <T = any>(url: string, data?: any, options?: RequestOptions): Promise<T> => {\n return makeRequest<T>('POST', url, data, options)\n }\n\n const put = <T = any>(url: string, data?: any, options?: RequestOptions): Promise<T> => {\n return makeRequest<T>('PUT', url, data, options)\n }\n\n const del = <T = any>(url: string, options?: RequestOptions): Promise<T> => {\n return makeRequest<T>('DELETE', url, undefined, options)\n }\n\n const patch = <T = any>(url: string, data?: any, options?: RequestOptions): Promise<T> => {\n return makeRequest<T>('PATCH', url, data, options)\n }\n\n const options = <T = any>(url: string, requestOptions?: RequestOptions): Promise<T> => {\n return makeRequest<T>('OPTIONS', url, undefined, requestOptions)\n }\n\n const head = <T = any>(url: string, requestOptions?: RequestOptions): Promise<T> => {\n return makeRequest<T>('HEAD', url, undefined, requestOptions)\n }\n\n const request = <T = any>(requestOptions: RequestOptions & { url: string }): Promise<T> => {\n const { url, ...requestOpts } = requestOptions\n return makeRequest<T>(requestOpts.method || 'GET', url, undefined, requestOpts)\n }\n\n return {\n get,\n post,\n put,\n delete: del,\n patch,\n options,\n head,\n request,\n instance,\n }\n}\n","// 查询键工厂 - 使用简单的对象和函数来生成查询键\nexport const queryKeys = {\n // 权限相关\n permissions: {\n check: (permissions: string[], version: 'v1' | 'v2') => ['permissions', 'check', permissions, version] as const,\n allPermissions: ['permissions', 'all'] as const,\n allPermissionsV2: ['permissions', 'allV2'] as const,\n },\n // 用户相关\n users: {\n all: ['users'] as const,\n detail: (id: string) => ['users', 'detail', id] as const,\n create: ['users', 'create'] as const,\n update: ['users', 'update'] as const,\n delete: ['users', 'delete'] as const,\n },\n // 角色相关\n roles: {\n all: ['roles'] as const,\n detail: (name: string, version: 'v1' | 'v2') => ['roles', 'detail', name, version] as const,\n create: (version: 'v1' | 'v2') => ['roles', 'create', version] as const,\n update: (version: 'v1' | 'v2') => ['roles', 'update', version] as const,\n delete: ['roles', 'delete'] as const,\n },\n // 菜单相关\n menus: {\n all: ['menus'] as const,\n navbar: (gameId?: string) => ['menus', 'navbar', gameId] as const,\n detail: (id: number) => ['menus', 'detail', id] as const,\n create: ['menus', 'create'] as const,\n update: ['menus', 'update'] as const,\n delete: ['menus', 'delete'] as const,\n },\n // 枚举相关\n enums: {\n gameGroups: ['enums', 'gameGroups'] as const,\n gameIds: (gameGroups: string[]) => ['enums', 'gameIds', gameGroups] as const,\n },\n // 游戏相关\n games: {\n all: ['games', 'all'] as const,\n },\n}\n\nexport type QueryKeys = typeof queryKeys\n"]}