Soleilw 1 месяц назад
Родитель
Сommit
4a9857faa7
79 измененных файлов: 1364 добавлений и 934 удалений
  1. 142
    0
      dist/231.3d6aaf28.async.js
  2. 0
    1
      dist/231.d69fb849.async.js
  3. 95
    0
      dist/287.68b2403a.async.js
  4. 0
    2
      dist/296.109be4ad.async.js
  5. 0
    95
      dist/318.7ea00e73.async.js
  6. 0
    1
      dist/337.b68e4aaa.async.js
  7. 0
    95
      dist/338.622c8470.async.js
  8. 1
    1
      dist/365.bb7c97fd.async.js
  9. 0
    2
      dist/404.5daee6f7.async.js
  10. 2
    0
      dist/405.50ff1e4f.async.js
  11. 1
    0
      dist/429.6f8d69a4.async.js
  12. 0
    2
      dist/451.d385446f.async.js
  13. 0
    1
      dist/457.bd6e4e3e.async.js
  14. 95
    0
      dist/503.b28446a3.async.js
  15. 1
    1
      dist/535.8fc3516b.async.js
  16. 0
    142
      dist/581.9f96f300.async.js
  17. 1
    0
      dist/797.3b6c2e01.async.js
  18. 1
    0
      dist/857.7f55f3c2.async.js
  19. 1
    1
      dist/index.html
  20. 0
    1
      dist/p__Activity__List__index.c95792e0.async.js
  21. 1
    0
      dist/p__Activity__List__index.f55f872d.async.js
  22. 1
    0
      dist/p__Advertisement__List__index.6f299c7b.async.js
  23. 0
    1
      dist/p__Advertisement__List__index.c9276c4f.async.js
  24. 0
    1
      dist/p__Advertisement__Putin__index.2a16b487.async.js
  25. 1
    0
      dist/p__Advertisement__Putin__index.a641ecb1.async.js
  26. 0
    1
      dist/p__Company__Department__index.b8009e04.async.js
  27. 1
    0
      dist/p__Company__Department__index.e64fca52.async.js
  28. 0
    1
      dist/p__Company__List__index.5fa38f43.async.js
  29. 1
    0
      dist/p__Company__List__index.8d48da4e.async.js
  30. 0
    1
      dist/p__Company__Post__index.739791d0.async.js
  31. 1
    0
      dist/p__Company__Post__index.dca8e444.async.js
  32. 1
    0
      dist/p__Company__Vip__index.a239b1b5.async.js
  33. 0
    1
      dist/p__Company__Vip__index.bc5ab70f.async.js
  34. 1
    0
      dist/p__Fair__List__index.2e81bef3.async.js
  35. 0
    1
      dist/p__Fair__List__index.a1da20f9.async.js
  36. 0
    1
      dist/p__Feedback__index.4b00f2c8.async.js
  37. 1
    0
      dist/p__Feedback__index.c34f5f50.async.js
  38. 0
    1
      dist/p__Information__Article__index.6d874084.async.js
  39. 2
    0
      dist/p__Information__Article__index.e20d8ab5.async.js
  40. 0
    1
      dist/p__Information__Section__index.b098eef5.async.js
  41. 1
    0
      dist/p__Information__Section__index.c1fa4349.async.js
  42. 0
    1
      dist/p__Jobseeker__Account__index.5e568da2.async.js
  43. 1
    0
      dist/p__Jobseeker__Account__index.71f44a40.async.js
  44. 0
    1
      dist/p__Jobseeker__List__index.233d76e0.async.js
  45. 1
    0
      dist/p__Jobseeker__List__index.cde51a64.async.js
  46. 1
    1
      dist/p__Login__index.8dd388fe.async.js
  47. 1
    0
      dist/p__Permission__Account__index.943f28ef.async.js
  48. 0
    1
      dist/p__Permission__Account__index.d5b3851b.async.js
  49. 0
    1
      dist/p__Permission__List__index.787df597.async.js
  50. 1
    0
      dist/p__Permission__List__index.b2b8640c.async.js
  51. 0
    1
      dist/p__Permission__Role__index.29478fb3.async.js
  52. 2
    0
      dist/p__Permission__Role__index.3f9f96be.async.js
  53. 0
    1
      dist/p__Setting__Dictionary__index.09a77210.async.js
  54. 1
    0
      dist/p__Setting__Dictionary__index.cf0f8069.async.js
  55. 1
    0
      dist/p__Setting__Other__index.19f0dc05.async.js
  56. 0
    1
      dist/p__Setting__Other__index.b4c43b67.async.js
  57. 0
    1
      dist/p__Setting__System__index.031006f0.async.js
  58. 1
    0
      dist/p__Setting__System__index.58220482.async.js
  59. 36
    36
      dist/umi.1ea9be75.js
  60. 9
    0
      src/apis/api/index.ts
  61. 7
    1
      src/apis/types/url.d.ts
  62. 9
    1
      src/apis/url/index.ts
  63. 2
    6
      src/components/Render/Main/Activity/List/table/index.tsx
  64. 14
    4
      src/components/Render/Main/Advertisement/List/table/index.tsx
  65. 25
    6
      src/components/Render/Main/Advertisement/Putin/table/index.tsx
  66. 76
    28
      src/components/Render/Main/Company/Department/table/index.tsx
  67. 102
    67
      src/components/Render/Main/Company/List/table/index.tsx
  68. 218
    106
      src/components/Render/Main/Company/Post/table/index.tsx
  69. 120
    72
      src/components/Render/Main/Company/Vip/table/index.tsx
  70. 167
    80
      src/components/Render/Main/Fair/List/table/index.tsx
  71. 4
    8
      src/components/Render/Main/Information/Article/table/index.tsx
  72. 9
    41
      src/components/Render/Main/Information/Section/table/index.tsx
  73. 1
    28
      src/components/Render/Main/Jobseeker/Account/table/index.tsx
  74. 129
    63
      src/components/Render/Main/Jobseeker/List/table/index.tsx
  75. 14
    4
      src/components/Render/Permission/Account/table/index.tsx
  76. 16
    6
      src/components/Render/Permission/List/table/index.tsx
  77. 15
    4
      src/components/Render/Permission/Role/table/index.tsx
  78. 15
    5
      src/components/Render/Setting/Dictionary/table/index.tsx
  79. 14
    4
      src/components/Render/Setting/System/table/index.tsx

+ 142
- 0
dist/231.3d6aaf28.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 0
- 1
dist/231.d69fb849.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 95
- 0
dist/287.68b2403a.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 0
- 2
dist/296.109be4ad.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 0
- 95
dist/318.7ea00e73.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 0
- 1
dist/337.b68e4aaa.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 0
- 95
dist/338.622c8470.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


dist/365.bb7c97fd.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 0
- 2
dist/404.5daee6f7.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 2
- 0
dist/405.50ff1e4f.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 1
- 0
dist/429.6f8d69a4.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 0
- 2
dist/451.d385446f.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 0
- 1
dist/457.bd6e4e3e.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 95
- 0
dist/503.b28446a3.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


dist/535.8fc3516b.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 0
- 142
dist/581.9f96f300.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 1
- 0
dist/797.3b6c2e01.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 1
- 0
dist/857.7f55f3c2.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 1
- 1
dist/index.html Просмотреть файл

@@ -8,6 +8,6 @@
</head>
<body>
<div id="root"></div>
<script src="/umi.d33b65e9.js"></script>
<script src="/umi.1ea9be75.js"></script>
</body>
</html>

+ 0
- 1
dist/p__Activity__List__index.c95792e0.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 1
- 0
dist/p__Activity__List__index.f55f872d.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 1
- 0
dist/p__Advertisement__List__index.6f299c7b.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 0
- 1
dist/p__Advertisement__List__index.c9276c4f.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 0
- 1
dist/p__Advertisement__Putin__index.2a16b487.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 1
- 0
dist/p__Advertisement__Putin__index.a641ecb1.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 0
- 1
dist/p__Company__Department__index.b8009e04.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 1
- 0
dist/p__Company__Department__index.e64fca52.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 0
- 1
dist/p__Company__List__index.5fa38f43.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 1
- 0
dist/p__Company__List__index.8d48da4e.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 0
- 1
dist/p__Company__Post__index.739791d0.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 1
- 0
dist/p__Company__Post__index.dca8e444.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 1
- 0
dist/p__Company__Vip__index.a239b1b5.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 0
- 1
dist/p__Company__Vip__index.bc5ab70f.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 1
- 0
dist/p__Fair__List__index.2e81bef3.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 0
- 1
dist/p__Fair__List__index.a1da20f9.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 0
- 1
dist/p__Feedback__index.4b00f2c8.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 1
- 0
dist/p__Feedback__index.c34f5f50.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 0
- 1
dist/p__Information__Article__index.6d874084.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 2
- 0
dist/p__Information__Article__index.e20d8ab5.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 0
- 1
dist/p__Information__Section__index.b098eef5.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 1
- 0
dist/p__Information__Section__index.c1fa4349.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 0
- 1
dist/p__Jobseeker__Account__index.5e568da2.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 1
- 0
dist/p__Jobseeker__Account__index.71f44a40.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 0
- 1
dist/p__Jobseeker__List__index.233d76e0.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 1
- 0
dist/p__Jobseeker__List__index.cde51a64.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


dist/p__Login__index.8dd388fe.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 1
- 0
dist/p__Permission__Account__index.943f28ef.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 0
- 1
dist/p__Permission__Account__index.d5b3851b.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 0
- 1
dist/p__Permission__List__index.787df597.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 1
- 0
dist/p__Permission__List__index.b2b8640c.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 0
- 1
dist/p__Permission__Role__index.29478fb3.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 2
- 0
dist/p__Permission__Role__index.3f9f96be.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 0
- 1
dist/p__Setting__Dictionary__index.09a77210.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 1
- 0
dist/p__Setting__Dictionary__index.cf0f8069.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 1
- 0
dist/p__Setting__Other__index.19f0dc05.async.js Просмотреть файл

@@ -0,0 +1 @@
"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[580],{90672:function(K,C,e){var R=e(1413),i=e(45987),a=e(62435),P=e(34176),g=e(86074),A=["fieldProps","proFieldProps"],s=function(c,Z){var U=c.fieldProps,x=c.proFieldProps,t=(0,i.Z)(c,A);return(0,g.jsx)(P.Z,(0,R.Z)({ref:Z,valueType:"textarea",fieldProps:U,proFieldProps:x},t))};C.Z=a.forwardRef(s)},79127:function(K,C,e){e.r(C),e.d(C,{default:function(){return Y}});var R=e(5574),i=e.n(R),a=e(62435),P=e(59530),g=e(28459),A=e(15009),s=e.n(A),L=e(99289),c=e.n(L),Z=e(95338),U=e(14726),x=e(39680),t=e(86074),W=function(n){var o=n.dispatch,E=n.getId,p=n.openModel,u=(0,a.useRef)(),F=(0,a.useState)([]),f=i()(F,2),m=f[0],T=f[1],O=function(v){E(v)};return(0,a.useEffect)(function(){p.openModal||u.current.reload()},[p.openModal]),(0,t.jsx)(t.Fragment,{children:(0,t.jsx)(g.ZP,{theme:{token:{colorPrimary:"#4FBE70",colorLink:"#4FBE70"}},children:(0,t.jsx)(Z.Z,{actionRef:u,dataSource:m,search:!1,columns:[{title:"\u5206\u8BCD\u5185\u5BB9",dataIndex:"text"},{title:"\u64CD\u4F5C",key:"option",valueType:"option",fixed:"right",render:function(v,j,S){return[(0,t.jsx)(U.ZP,{type:"link",onClick:function(){o({type:"openModel/getOpenModal",payload:!0})},children:"\u66F4\u65B0\u5206\u8BCD\u5668"},"1")]}}],rowKey:"id",request:c()(s()().mark(function y(){var v,j=arguments;return s()().wrap(function(h){for(;;)switch(h.prev=h.next){case 0:return v=j.length>0&&j[0]!==void 0?j[0]:{},h.abrupt("return",(0,x.Ekb)().then(function(I){T([{text:I.data.text}])}));case 2:case"end":return h.stop()}},y)})),headerTitle:"\u5206\u8BCD\u5668"})})})},N=(0,P.connect)(function(r){var n=r.dictModel,o=r.openModel;return{dictModel:n,openModel:o}})(W),$=e(97269),G=e(90672),b=e(17788),z=e(86250),H=e(42075),J=e(68872),w={label:"name",value:"id"},Q=function(n){var o=n.dispatch,E=n.dictModel,p=n.openModel,u=n.id,F=(0,a.useRef)(),f=(0,a.useState)(!1),m=i()(f,2),T=m[0],O=m[1],y=(0,a.useState)(null),v=i()(y,2),j=v[0],S=v[1];(0,a.useEffect)(function(){O(p.openModal)},[p.openModal]);var h=(0,a.useState)(""),I=i()(h,2),q=I[0],k=I[1],_=function(d){k(d)};return(0,t.jsx)(t.Fragment,{children:(0,t.jsx)(g.ZP,{theme:{token:{colorPrimary:"#4FBE70"}},children:(0,t.jsx)(b.Z,{open:T,title:"\u66F4\u65B0\u5206\u8BCD\u5668",centered:!0,maskClosable:!1,footer:null,destroyOnClose:!0,width:1e3,onCancel:function(){o({type:"openModel/getOpenModal",payload:!1})},children:(0,t.jsx)($.A,{formRef:F,request:c()(s()().mark(function M(){var d;return s()().wrap(function(l){for(;;)switch(l.prev=l.next){case 0:if(!u){l.next=8;break}return l.next=3,(0,x.Ekb)({id:u});case 3:return d=l.sent,S(d.data),l.abrupt("return",d.data);case 8:return l.abrupt("return",{text:""});case 9:case"end":return l.stop()}},M)})),submitter:{searchConfig:{resetText:"\u53D6\u6D88",submitText:"\u4FDD\u5B58"},render:function(d,D){return(0,t.jsxs)(z.Z,{justify:"flex-end",children:[" ",(0,t.jsx)(H.Z,{children:D})]})},onReset:function(){S(null),o({type:"openModel/getOpenModal",payload:!1})}},onFinish:function(){var M=c()(s()().mark(function d(D){var l;return s()().wrap(function(B){for(;;)switch(B.prev=B.next){case 0:return B.next=2,(0,x.iwN)(D);case 2:l=B.sent,J.ZP.success("\u63D0\u4EA4\u6210\u529F"),o({type:"openModel/getOpenModal",payload:!1});case 5:case"end":return B.stop()}},d)}));return function(d){return M.apply(this,arguments)}}(),children:(0,t.jsx)(G.Z,{name:"text",label:"\u5206\u8BCD\u5185\u5BB9",placeholder:"\u8BF7\u8F93\u5165\u5206\u8BCD\u5185\u5BB9",rules:[{required:!0,message:"\u8BF7\u8F93\u5165\u5206\u8BCD\u5185\u5BB9"}]})})})})})},V=(0,P.connect)(function(r){var n=r.dictModel,o=r.openModel;return{dictModel:n,openModel:o}})(Q),X=function(n){var o=n.dispatch,E=n.openModel,p=(0,a.useState)(0),u=i()(p,2),F=u[0],f=u[1],m=function(O){f(O)};return(0,a.useEffect)(function(){E.openModal||f(0)},[E.openModal]),(0,t.jsx)(t.Fragment,{children:(0,t.jsxs)(g.ZP,{theme:{token:{colorPrimary:"#4FBE70"}},children:[(0,t.jsx)(N,{getId:m}),(0,t.jsx)(V,{id:F})]})})},Y=(0,P.connect)(function(r){var n=r.openModel;return{openModel:n}})(X)}}]);

+ 0
- 1
dist/p__Setting__Other__index.b4c43b67.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 0
- 1
dist/p__Setting__System__index.031006f0.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 1
- 0
dist/p__Setting__System__index.58220482.async.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


dist/umi.1ea9be75.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 9
- 0
src/apis/api/index.ts Просмотреть файл

@@ -50,17 +50,26 @@ export const GetCompanyVipInfo = GetModel(url.companyVipInfo);
export const PostCompanyMultiClose = PostModel(url.companyMultiClose);
export const PostCompanyMultiOpen = PostModel(url.companyMultiOpen);
export const PostCompanyFeechange = PostModel(url.companyFeechange);
export const PostCompanyMultiopenvip = PostModel(url.CompanyMultiopenvip);


export const PostCompanyEdit = PostModel(url.companyEdit);
export const PostCompanyViplist = GetModel(url.companyViplist);
export const PostCompanyJobAdd = PostModel(url.companyJobAdd);
export const PostcompanyJobDel = PostModel(url.companyJobDel);
export const PostCompanyJobEdit = PostModel(url.companyJobEdit);
export const GetCompanyJobList = GetModel(url.companyJobList);
export const PostCompanyJobInfo = GetModel(url.companyJobInfo);
export const PostcompanymMultieditPulishJob = PostModel(url.companymMultieditPulishJob);
export const PostcompanymMultieditstatusjob = PostModel(url.companymMultieditstatusjob);

export const PostCompanyDepartmentAdd = PostModel(url.companyDepartmentAdd);
export const PostcompanyDepartmentDel= PostModel(url.companyDepartmentDel);
export const PostCompanyDepartmentEdit = PostModel(url.companyDepartmentEdit);
export const GetCompanyDepartmentList = GetModel(url.CompanyDepartmentList);
export const GetCompanyDepartmentInfo = GetModel(url.companyDepartmentInfo);
export const PostcompanyDepartmentsDel = PostModel(url.companyDepartmentsDel);


// 类型
export const PostHousekeepingtypeAdd = PostModel(url.HousekeepingtypeAdd);

+ 7
- 1
src/apis/types/url.d.ts Просмотреть файл

@@ -37,19 +37,25 @@ declare namespace urlType {
companyEdit: String,
companyVipmanage: String,
companyViplist: String,
CompanyMultiopenvip: String,


companyJobAdd: String,
companyJobEdit: String,
companyJobDel: String,
companyJobList: String,
companyJobInfo: String,
companymMultieditPulishJob: String,
companymMultieditstatusjob: String,
CompanyRecruiters: String,
CompanyTurnJobseeker: String,
CompanyMultieditstatus: String,
companyDepartmentAdd: String,
companyDepartmentDel: String,
companyDepartmentEdit: String,
CompanyDepartmentList: String,
companyDepartmentInfo: String,
companyDepartmentsDel: String,
// 类型
HousekeepingtypeAdd: String,
HousekeepingtypeDel: String,

+ 9
- 1
src/apis/url/index.ts Просмотреть файл

@@ -43,17 +43,25 @@ export const url: urlType.url = {
companyViplist: admin + '/company/viplist',

companyJobAdd: admin + '/company/job_add',
companyJobDel: admin + '/company/job_del',
companyJobEdit: admin + '/company/job_edit',
companyJobList: admin + '/company/job_list',
companyJobInfo: admin + '/company/job_info',
companymMultieditPulishJob: admin + '/company/multieditpulishjob',
companymMultieditstatusjob: admin + '/company/multieditstatusjob',


CompanyRecruiters: admin + '/company/recruiters',
CompanyTurnJobseeker: admin + '/company/turn_jobseeker',
CompanyMultieditstatus: admin + '/company/multieditstatus',
companyDepartmentAdd: admin + '/company/department_add',
companyDepartmentDel: admin + '/company/department_del',
companyDepartmentEdit: admin + '/company/department_edit',
CompanyDepartmentList: admin + '/company/department_list',
companyDepartmentInfo: admin + '/company/department_info',

companyDepartmentsDel: admin + '/company/departments_del',
CompanyMultiopenvip: admin + '/company/multiopenvip',
// 家政
// 类型
HousekeepingtypeAdd: admin + '/housekeepingtype/add',

+ 2
- 6
src/components/Render/Main/Activity/List/table/index.tsx Просмотреть файл

@@ -106,17 +106,13 @@ const PagesMainActivityListTable: React.FC = ({ dispatch, openModel, getId }: an
onConfirm={(e) => {
PostActivityaddressDel({ id: record.id }).then(res => {
message.success('删除成功')
actionRef.current.reload();
actionRef.current?.reload();
})
}}
okText="删除"
cancelText="取消"
>
<a
key="delete"
>
删除
</a>
<Button danger type='link'>删除</Button>
</Popconfirm>
],
},

+ 14
- 4
src/components/Render/Main/Advertisement/List/table/index.tsx Просмотреть файл

@@ -4,7 +4,7 @@ import type { ActionType, ProFormInstance } from '@ant-design/pro-components';
import {
ProTable, TableDropdown
} from '@ant-design/pro-components';
import { Button, Image, ConfigProvider, Space, Descriptions } from 'antd';
import { Button, Image, ConfigProvider, Space, Descriptions, Popconfirm } from 'antd';
import { GetAdvertareaList } from '@/apis/api';

const PagesMainAdvertisementListTable: React.FC = ({ dispatch, openModel, getId }: any) => {
@@ -88,9 +88,19 @@ const PagesMainAdvertisementListTable: React.FC = ({ dispatch, openModel, getId
setId(record.id)
dispatch({ type: 'openModel/getOpenModal', payload: true })
}}>编辑</Button>,
<Button key='2' type='link' onClick={() => {

}}>删除</Button>
<Popconfirm
title="是否删除"
onConfirm={(e) => {
delSection({ id: record.id }).then(res => {
message.success('删除成功')
actionRef.current?.reload();
})
}}
okText="删除"
cancelText="取消"
>
<Button danger type='link'>删除</Button>
</Popconfirm>
],
},
]}

+ 25
- 6
src/components/Render/Main/Advertisement/Putin/table/index.tsx Просмотреть файл

@@ -149,23 +149,42 @@ const PagesMainAdvertisementPutinTable: React.FC = ({ dispatch, openModel, getId
setId(record.id)
dispatch({ type: 'openModel/getOpenModal', payload: true })
}}>编辑</Button>,
<Button size='small' type='link' onClick={() => {
// Modal.confirm({
// title: '更换图片',
// content: (<>
// <ProForm submitter={{ render: false }}>
// <UploadModel multiple={false} form_name="photo" image_length={1} uploadTxt="更换图片" image_type={3} imageUrl={record.photo} onUploadComplete={handleFileUploadedphoto}></UploadModel>
// </ProForm>
// </>),
// async onOk() {
// // let info = await GetCompanyInfo({ id: record.id });
// // let res = await updateCompany({ ...info.data, license_path: uploadedFilelicenseNameRef.current });
// // setUploadedFilelicenseName('');
// actionRef.current?.reload();
// },
// onCancel() {
// console.log('Cancel');
// },
// okText: '保存',
// cancelText: '取消',
// centered: true,
// });
}}>更换图片</Button>,
<Popconfirm
title="是否删除"
onConfirm={(e) => {
PostAdvertscheduleDel({ id: record.id }).then(res => {
message.success('删除成功')
actionRef.current.reload();
actionRef.current?.reload();
})
}}
okText="删除"
cancelText="取消"
>
<a
key="delete"
>
删除
</a>
<Button danger type='link'>删除</Button>
</Popconfirm>
],
},
]}

+ 76
- 28
src/components/Render/Main/Company/Department/table/index.tsx Просмотреть файл

@@ -5,8 +5,8 @@ import type { ActionType } from '@ant-design/pro-components';
import {
ProTable, ProFormSelect
} from '@ant-design/pro-components';
import { Button, ConfigProvider, Modal } from 'antd';
import { GetCompanyDepartmentList, getCompanyList, GetCompanyInfo } from '@/apis/api';
import { Button, ConfigProvider, Modal, Popconfirm, message, Space } from 'antd';
import { GetCompanyDepartmentList, getCompanyList, GetCompanyInfo, PostcompanyDepartmentsDel, PostcompanyDepartmentDel } from '@/apis/api';
const selectfieldNames = { label: 'full_name', value: 'id' };
const PagesMainCompanyDepartmentTable: React.FC = ({ dispatch, getId, openModel }: any) => {
const actionRef = useRef<ActionType>();
@@ -15,6 +15,8 @@ const PagesMainCompanyDepartmentTable: React.FC = ({ dispatch, getId, openModel
const [page, setPage] = useState<number>(1)
const [pageSize, setPageSize] = useState<number>(10)
const [companyId, setCompanyId] = useState<number>(0);
const [ids, setIds] = useState<number[]>([])

const setId = (id: number) => {
getId(id)
}
@@ -42,6 +44,12 @@ const PagesMainCompanyDepartmentTable: React.FC = ({ dispatch, getId, openModel
colorPrimary: '#4FBE70',
colorLink: '#4FBE70',

},
components: {
Modal: {
colorPrimary: '#4FBE70',

}
}
}}
>
@@ -53,6 +61,52 @@ const PagesMainCompanyDepartmentTable: React.FC = ({ dispatch, getId, openModel
actionRef={actionRef}
dataSource={list}
search={{ span: 8, labelWidth: 'auto' }}
tableAlertRender={({
selectedRowKeys,
selectedRows,
onCleanSelected,
}) => {
setIds(selectedRowKeys)
return (
<Space size={24}>
<span>
已选 {selectedRowKeys.length} 项
<a style={{ marginInlineStart: 8 }} onClick={onCleanSelected}>
取消选择
</a>
</span>
</Space>
);
}}
tableAlertOptionRender={({
onCleanSelected,
}) => {
return (
<Space size={16}>
<Button type="primary" onClick={() => {
Modal.confirm({
title: '批量删除',
content: '确定要删除所选的数据吗',
onOk() {
PostcompanyDepartmentsDel({ ids: ids }).then(res => {
onCleanSelected()
actionRef.current?.reload();
})

},
onCancel() {
console.log('Cancel');
},
okText: '确定',
cancelText: '取消',
centered: true
});
}}>
批量删除
</Button>,
</Space>
);
}}
rowSelection={{
type: 'checkbox'
}}
@@ -134,10 +188,20 @@ const PagesMainCompanyDepartmentTable: React.FC = ({ dispatch, getId, openModel
setId(record.id)
dispatch({ type: 'openModel/getOpenModal', payload: true })
}}>编辑</Button>,
<Button key='2' type='link' danger onClick={() => {
setId(record.id)
dispatch({ type: 'openModel/getOpenModal', payload: true })
}}>删除</Button>
<Popconfirm
title="是否删除"
onConfirm={(e) => {
PostcompanyDepartmentDel({ id: record.id }).then(res => {
message.success('删除成功')
actionRef.current?.reload();
})
}}
okText="删除"
cancelText="取消"
>
<Button danger type='link'>删除</Button>
</Popconfirm>,

],
},
]}
@@ -178,28 +242,12 @@ const PagesMainCompanyDepartmentTable: React.FC = ({ dispatch, getId, openModel
actionRef.current?.reload();
}}
headerTitle="部门列表"
toolBarRender={() => [<Button type="primary" onClick={() => {
Modal.confirm({
title: '批量删除',
content: '确定要删除所选的数据吗,参数:id',
onOk() {

},
onCancel() {
console.log('Cancel');
},
okText: '确定',
cancelText: '取消',
centered: true
});
}}>
批量删除
</Button>,
<Button type="primary" onClick={() => {
dispatch({ type: 'openModel/getOpenModal', payload: true })
}}>
添加部门
</Button>,
toolBarRender={() => [
<Button type="primary" onClick={() => {
dispatch({ type: 'openModel/getOpenModal', payload: true })
}}>
添加部门
</Button>,
]}
/>


+ 102
- 67
src/components/Render/Main/Company/List/table/index.tsx Просмотреть файл

@@ -1,4 +1,8 @@





import { useRef, useState, useEffect } from 'react';
import { connect, history, Link } from '@umijs/max';
import type { ActionType, ProFormInstance } from '@ant-design/pro-components';
@@ -6,7 +10,7 @@ import {
ProTable, ProFormRadio, ProForm
} from '@ant-design/pro-components';

import { Button, Image, ConfigProvider, Select, message, Descriptions, Space, Radio, Modal, Form, Row,Col, Badge } from 'antd';
import { Button, Image, ConfigProvider, Select, message, Descriptions, Space, Radio, Modal, Flex, Row, Col, Badge } from 'antd';
import { getCompanyList, GetCompanyInfo, updateCompany, PostCompanyExport, PostCompanyEdit, PostCompanyMultieditstatus } from '@/apis/api';
import { Imageprefix } from '@/constants';

@@ -22,8 +26,9 @@ const PagesMainCompanyListTable: React.FC = ({ dispatch, openModel, getId }: any
const [page, setPage] = useState<number>(1)
const [pageSize, setPageSize] = useState<number>(10)
const [expandedRowKeys, setExpandedRowKeys] = useState<string[]>([])
const [openMultieditPreview, setOpenMultieditPreview] = useState(false);
const [ids, setIds] = useState<number[]>([])
const [status, setStatus] = useState<number>(0)
const [status, setStatus] = useState<number>(1)



@@ -209,11 +214,40 @@ const PagesMainCompanyListTable: React.FC = ({ dispatch, openModel, getId }: any
actionRef={actionRef}
dataSource={list}
search={{ span: 6, labelWidth: 'auto' }}
tableAlertRender={({
selectedRowKeys,
selectedRows,
onCleanSelected,
}) => {
setIds(selectedRowKeys)
return (
<Space size={24}>
<span>
已选 {selectedRowKeys.length} 项
<a style={{ marginInlineStart: 8 }} onClick={onCleanSelected}>
取消选择
</a>
</span>
</Space>
);
}}
tableAlertOptionRender={() => {
return (
<Space size={16}>
<Button type="primary" onClick={() => {
if (ids.length === 0) {
message.error('请选择要操作的数据')
} else {
setOpenMultieditPreview(true)
}
}}>
批量管理账号
</Button>,
</Space>
);
}}
rowSelection={{
type: 'checkbox',
onChange: (selectedRowKeys, selectedRows) => {
setIds(selectedRowKeys)
},
type: 'checkbox'
}}
expandable={{
expandedRowRender
@@ -397,68 +431,7 @@ const PagesMainCompanyListTable: React.FC = ({ dispatch, openModel, getId }: any
}
headerTitle="企业列表"
toolBarRender={() => [
<Button type="primary" onClick={() => {
if (ids.length === 0) {
message.error('请选择要操作的数据')
} else {
Modal.confirm({
title: '请选择对批量数据进行何种操作',
content: (<>
<Radio.Group size='small' value={status} onChange={(e) => {
setStatus(e.target.value)
}} options={[
{ value: 1, label: '开通账号' },
{ value: 2, label: '关闭账号' }
]} >
{/* <Row gutter={[20, 20]} style={{ padding: 20 }}>
<Col span={12}>
<Radio value={1}>开通账号</Radio>
</Col>
<Col span={12}>
<Radio value={2}>关闭账号</Radio>
</Col>
{/* <Col span={12}>
<Radio value={3}>禁用1天</Radio>
</Col>
<Col span={12}>
<Radio value={4}>禁用3天</Radio>
</Col>
<Col span={12}>
<Radio value={5}>禁用7天</Radio>
</Col>
<Col span={12}>
<Radio value={6}>禁用15天</Radio>
</Col>
<Col span={12}>
<Radio value={7}>禁用30天</Radio>
</Col>
<Col span={12}>
<Radio value={8}>永久禁用</Radio>
</Col>
</Row> */}
</Radio.Group>
</>),
async onOk() {
if (status) {
let res = PostCompanyMultieditstatus({ ids: ids, status: status })
actionRef.current?.reload();
} else {
message.error('请选择状态')
return false
}
},
onCancel() {
console.log('Cancel');
},
okText: '确定',
cancelText: '取消',
centered: true
});
}

}}>
批量管理账号
</Button>,
<Button type="primary" onClick={() => {
message.info('数据导出需要时间,请耐心等待')
PostCompanyExport().then(res => {
@@ -499,6 +472,68 @@ const PagesMainCompanyListTable: React.FC = ({ dispatch, openModel, getId }: any
</Button >,
]}
/>

<Modal
open={openMultieditPreview}
title='请选择对批量数据进行何种操作'
centered
maskClosable={false}
destroyOnClose
width={400}
onCancel={() => {
setOpenMultieditPreview(false)
}}
onOk={() => {
if (status) {
PostCompanyMultieditstatus({ ids: ids, status: status }).then(res => {
setOpenMultieditPreview(false)
actionRef.current?.clearSelected();
actionRef.current?.reload();
})
} else {
message.error('请选择状态')
return false
}
}
}
>
<Flex justify='center' align='center' style={{ minHeight: 100 }}>
<Radio.Group size='small' value={status} onChange={(e) => {
setStatus(e.target.value)
}} options={[
{ value: 1, label: '开通账号' },
{ value: 2, label: '关闭账号' }
]} >
{/* <Row gutter={[20, 20]} style={{ padding: 20 }}>
<Col span={12}>
<Radio value={1}>开通账号</Radio>
</Col>
<Col span={12}>
<Radio value={2}>关闭账号</Radio>
</Col>
{/* <Col span={12}>
<Radio value={3}>禁用1天</Radio>
</Col>
<Col span={12}>
<Radio value={4}>禁用3天</Radio>
</Col>
<Col span={12}>
<Radio value={5}>禁用7天</Radio>
</Col>
<Col span={12}>
<Radio value={6}>禁用15天</Radio>
</Col>
<Col span={12}>
<Radio value={7}>禁用30天</Radio>
</Col>
<Col span={12}>
<Radio value={8}>永久禁用</Radio>
</Col>
</Row> */}
</Radio.Group>
</Flex>

</Modal >
</ConfigProvider >
</>
);

+ 218
- 106
src/components/Render/Main/Company/Post/table/index.tsx Просмотреть файл

@@ -4,8 +4,8 @@ import type { ActionType } from '@ant-design/pro-components';
import {
ProTable, ProFormSelect
} from '@ant-design/pro-components';
import { Button, ConfigProvider, message, Space, Descriptions, Radio, Row, Col, Modal } from 'antd';
import { GetCompanyJobList, getCompanyList, GetCompanyInfo, PostJobExport } from '@/apis/api';
import { Button, ConfigProvider, message, Space, Descriptions, Radio, Row, Popconfirm, Modal, Flex, InputNumber } from 'antd';
import { GetCompanyJobList, getCompanyList, GetCompanyInfo, PostJobExport, PostcompanymMultieditPulishJob, PostcompanymMultieditstatusjob, PostcompanyJobDel } from '@/apis/api';
import { Imageprefix } from '@/constants';
const selectfieldNames = { label: 'full_name', value: 'id' };
const PagesMainCompanyPostTable: React.FC = ({ dispatch, getId, openModel }: any) => {
@@ -16,6 +16,12 @@ const PagesMainCompanyPostTable: React.FC = ({ dispatch, getId, openModel }: any
const [pageSize, setPageSize] = useState<number>(10)
const [companyId, setCompanyId] = useState<number>(0);
const [expandedRowKeys, setExpandedRowKeys] = useState<string[]>([])
const [openMultieditPreview, setOpenMultieditPreview] = useState(false);
const [openMultieditPreview2, setOpenMultieditPreview2] = useState(false);
const [ids, setIds] = useState<number[]>([])
const [status, setStatus] = useState<number>(1)
const [usefuLife, setUsefuLife] = useState<number>(1)
const [disabledDate, setDisabledDate] = useState<Date | String | null>(null);
const setId = (id: number) => {
getId(id)
}
@@ -33,7 +39,25 @@ const PagesMainCompanyPostTable: React.FC = ({ dispatch, getId, openModel }: any
};
}, [openModel.openModal])

const handleTimeChange = (value) => {
setUsefuLife(value)
const today = new Date();
let end_date = new Date(today);

end_date.setDate(today.getDate() + value);
// 格式化日期为 YYYY-MM-DD
const formatDate = (date: Date): string => {
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0');
const day = String(date.getDate()).padStart(2, '0');
return `${year}-${month}-${day}`;
};

const formattedEndDate = formatDate(end_date);
setDisabledDate(formattedEndDate);
console.log(formattedEndDate);

};

return (
<>
@@ -42,7 +66,6 @@ const PagesMainCompanyPostTable: React.FC = ({ dispatch, getId, openModel }: any
token: {
colorPrimary: '#4FBE70',
colorLink: '#4FBE70',

}
}}
>
@@ -54,6 +77,81 @@ const PagesMainCompanyPostTable: React.FC = ({ dispatch, getId, openModel }: any
actionRef={actionRef}
dataSource={list}
search={{ span: 8, labelWidth: 'auto' }}
tableAlertRender={({
selectedRowKeys,
selectedRows,
onCleanSelected,
}) => {
setIds(selectedRowKeys)
return (
<Space size={24}>
<span>
已选 {selectedRowKeys.length} 项
<a style={{ marginInlineStart: 8 }} onClick={onCleanSelected}>
取消选择
</a>
</span>
</Space>
);
}}
tableAlertOptionRender={({
onCleanSelected,
}) => {
return (
<Space>
<Button type="primary" onClick={() => {
if (ids.length === 0) {
message.error('请选择要操作的数据')
} else {
setOpenMultieditPreview(true)
}
}}>
批量发布
</Button>,
<Button type="primary" onClick={() => {
if (ids.length === 0) {
message.error('请选择要操作的数据')
} else {
setOpenMultieditPreview2(true)
}
}}>
批量更改状态
</Button>,
<Button type="primary" onClick={() => {
Modal.confirm({
title: '批量删除',
content: '确定要删除所选的数据吗',
onOk() {
const promises = ids.map(item => {
return PostcompanyJobDel({ id: item });
});

// 等待所有请求完成
Promise.all(promises)
.then(() => {
message.success('批量删除成功');
actionRef.current?.clearSelected();
actionRef.current?.reload();
})
.catch(error => {
console.error('批量删除成功:', error);
message.error('批量删除成功');
});

},
onCancel() {
console.log('Cancel');
},
okText: '确定',
cancelText: '取消',
centered: true
});
}}>
批量删除
</Button>,
</Space>
);
}}
rowSelection={{
type: 'checkbox'
}}
@@ -167,11 +265,26 @@ const PagesMainCompanyPostTable: React.FC = ({ dispatch, getId, openModel }: any
title: '操作',
key: 'option',
valueType: 'option',
width: 200,
render: (_, record, action) => [
<Button key='1' type='link' onClick={() => {
setId(record.id)
dispatch({ type: 'openModel/getOpenModal', payload: true })
}}>编辑</Button>
}}>编辑</Button>,
<Popconfirm
title="是否删除"
onConfirm={(e) => {
PostcompanyJobDel({ id: record.id }).then(res => {
message.success('删除成功')
actionRef.current?.reload();
})
}}
okText="删除"
cancelText="取消"
>
<Button danger type='link'>删除</Button>

</Popconfirm>,
],
},
]}
@@ -217,112 +330,111 @@ const PagesMainCompanyPostTable: React.FC = ({ dispatch, getId, openModel }: any

}}
headerTitle="职位列表"
toolBarRender={() => [<Button type="primary" onClick={() => {
Modal.confirm({
title: '批量发布',
content: (<>
<div>参数: id, status,useful_life ,disabled_date </div>

<h4 style={{ fontWeight: 'bold' }}>有效期:</h4>
<Radio.Group size='small' onChange={async (e) => {
actionRef.current?.reload();
}}>
<Row gutter={[20, 20]} style={{ padding: 20 }}>
<Col span={12}>
<Radio value={1}>1天</Radio>
</Col>
<Col span={12}>
<Radio value={1}>3天</Radio>
</Col>
<Col span={12}>
<Radio value={1}>7天</Radio>
</Col>
<Col span={12}>
<Radio value={1}>15天</Radio>
</Col>
<Col span={12}>
<Radio value={1}>30天</Radio>
</Col>
</Row>

</Radio.Group>
</>),
onOk() {

},
onCancel() {
console.log('Cancel');
},
okText: '确定',
cancelText: '取消',
centered: true
});
}}>
批量发布
</Button>,
<Button type="primary" onClick={() => {
Modal.confirm({
title: '批量更改状态',
content: (<>
<div>参数: id, status</div>

<Radio.Group size='small' onChange={async (e) => {
actionRef.current?.reload();
}}>
<Row gutter={[20, 20]} style={{ padding: 20 }}>
<Col span={12}>
<Radio value={1}>发布中</Radio>
</Col>
<Col span={12}>
<Radio value={1}>未发布</Radio>
</Col>
<Col span={12}>
<Radio value={1}>暂停</Radio>
</Col>
<Col span={12}>
<Radio value={1}>已锁定</Radio>
</Col>
<Col span={12}>
<Radio value={1}>回收站</Radio>
</Col>
<Col span={12}>
<Radio value={1}>已过期</Radio>
</Col>
</Row>
</Radio.Group>
</>),
onOk() {

},
onCancel() {
console.log('Cancel');
},
okText: '确定',
cancelText: '取消',
centered: true
});
}}>
批量更改状态
</Button>,
<Button type="primary" onClick={() => {
message.info('数据导出需要时间,请耐心等待')
PostJobExport().then(res => {
let url = Imageprefix + res.data.excel_url;
window.open(url);
message.info('数据导出完毕')
})
}}>
导出数据
</Button>,
<Button type="primary" onClick={() => {
dispatch({ type: 'openModel/getOpenModal', payload: true })
}}>
添加职位
</Button>
toolBarRender={() => [
<Button type="primary" onClick={() => {
message.info('数据导出需要时间,请耐心等待')
PostJobExport().then(res => {
let url = Imageprefix + res.data.excel_url;
window.open(url);
message.info('数据导出完毕')
})
}}>
导出数据
</Button>,
<Button type="primary" onClick={() => {
dispatch({ type: 'openModel/getOpenModal', payload: true })
}}>
添加职位
</Button>
]}
/>
<Modal
open={openMultieditPreview}
title='请选择对批量数据进行何种操作'
centered
maskClosable={false}
destroyOnClose
width={400}
onCancel={() => {
setOpenMultieditPreview(false)
}}
onOk={() => {
if (usefuLife && disabledDate && status) {
PostcompanymMultieditPulishJob({ id: ids, useful_life: usefuLife, disabled_date: disabledDate, status: status }).then(res => {
setOpenMultieditPreview(false)
actionRef.current?.clearSelected();
actionRef.current?.reload();
})

} else {
message.error('请完成表单')
return false
}
}
}
>
<Flex vertical justify='center' style={{ minHeight: 100 }}>
<Space direction='vertical'>
<h4 style={{ fontWeight: 'bold' }}>状态:</h4>
<Radio.Group size='small' value={status} onChange={(e) => {
setStatus(e.target.value)
}}>
<Radio value={1}>发布中</Radio>
<Radio value={2}>未发布</Radio>
<Radio value={3}>暂停</Radio>
<Radio value={4}>已锁定</Radio>
<Radio value={5}>回收站</Radio>
<Radio value={6}>已过期</Radio>
</Radio.Group>
<h4 style={{ fontWeight: 'bold' }}>职位有效天数:</h4>
<InputNumber min={1} placeholder='请输入职位有效天数' onChange={(value) => {
handleTimeChange(value)
}} style={{ width: '100%' }} />
</Space>
</Flex>
</Modal >

<Modal
open={openMultieditPreview2}
title='请选择对批量数据进行何种操作'
centered
maskClosable={false}
destroyOnClose
width={400}
onCancel={() => {
setOpenMultieditPreview2(false)
}}
onOk={() => {
if (status) {
PostcompanymMultieditstatusjob({ id: ids, status: status }).then(res => {
setOpenMultieditPreview2(false)
actionRef.current?.clearSelected();
actionRef.current?.reload();
})
} else {
message.error('请完成表单')
return false
}
}
}
>
<Flex vertical justify='center' style={{ minHeight: 100 }}>
<Space direction='vertical'>
<h4 style={{ fontWeight: 'bold' }}>状态:</h4>
<Radio.Group size='small' value={status} onChange={(e) => {
setStatus(e.target.value)
}}>
<Radio value={1}>发布中</Radio>
<Radio value={2}>未发布</Radio>
<Radio value={3}>暂停</Radio>
<Radio value={4}>已锁定</Radio>
<Radio value={5}>回收站</Radio>
<Radio value={6}>已过期</Radio>
</Radio.Group>

</Space>
</Flex>
</Modal >
</ConfigProvider>

</>

+ 120
- 72
src/components/Render/Main/Company/Vip/table/index.tsx Просмотреть файл

@@ -4,8 +4,8 @@ import type { ActionType, ProFormInstance } from '@ant-design/pro-components';
import {
ProTable
} from '@ant-design/pro-components';
import { Button, Image, ConfigProvider, Input, Descriptions, Space, Modal, Radio, Row, Col } from 'antd';
import { PostCompanyViplist, PostCompanyFeechange } from '@/apis/api';
import { Button, Image, ConfigProvider, Input, Descriptions, Space, Modal, Radio, Row, Col, InputNumber, message, Flex } from 'antd';
import { PostCompanyViplist, PostCompanyFeechange, PostCompanyMultiopenvip } from '@/apis/api';
import { Imageprefix } from '@/constants';


@@ -18,7 +18,11 @@ const CompanyListPage: React.FC = ({ dispatch, getId, openModel }: any) => {
const [page, setPage] = useState<number>(1)
const [pageSize, setPageSize] = useState<number>(10)
const [fullname, setFullname] = useState<any>(sessionStorage.getItem('vip_company_info') ? JSON.parse(sessionStorage.getItem('vip_company_info')).full_name : '')

const [openMultieditPreview, setOpenMultieditPreview] = useState(false);
const [ids, setIds] = useState<number[]>([])
const [memberType, setMemberType] = useState<number>(1)
const [startDate, setStartDate] = useState<Date | String | null>(null);
const [endDate, setEndDate] = useState<Date | String | null>(null);
const setId = (id: number) => {
getId(id)
}
@@ -43,6 +47,31 @@ const CompanyListPage: React.FC = ({ dispatch, getId, openModel }: any) => {
}
}, [openModel.openFeeModal])

const handleTimeChange = (value) => {
const today = new Date();
let start_date = today;
let end_date = new Date(today);

end_date.setDate(today.getDate() + value);
// 格式化日期为 YYYY-MM-DD
const formatDate = (date: Date): string => {
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0');
const day = String(date.getDate()).padStart(2, '0');
return `${year}-${month}-${day}`;
};

const formattedStartDate = formatDate(start_date);
const formattedEndDate = formatDate(end_date);

setStartDate(formattedStartDate);
setEndDate(formattedEndDate);

console.log(formattedStartDate);
console.log(formattedEndDate);

};

const expandedRowRender = (record) => {
return (
<>
@@ -59,6 +88,9 @@ const CompanyListPage: React.FC = ({ dispatch, getId, openModel }: any) => {
);
};




return (
<>
<ConfigProvider
@@ -67,6 +99,12 @@ const CompanyListPage: React.FC = ({ dispatch, getId, openModel }: any) => {
colorPrimary: '#4FBE70',
colorLink: '#4FBE70',

},
components: {
Modal: {
colorPrimary: '#4FBE70',

}
}
}}
>
@@ -78,6 +116,38 @@ const CompanyListPage: React.FC = ({ dispatch, getId, openModel }: any) => {
search={{
span: 8, labelWidth: 'auto'
}}
tableAlertRender={({
selectedRowKeys,
selectedRows,
onCleanSelected,
}) => {
setIds(selectedRowKeys)
return (
<Space size={24}>
<span>
已选 {selectedRowKeys.length} 项
<a style={{ marginInlineStart: 8 }} onClick={onCleanSelected}>
取消选择
</a>
</span>
</Space>
);
}}
tableAlertOptionRender={() => {
return (
<Space size={16}>
<Button type="primary" onClick={() => {
if (ids.length === 0) {
message.error('请选择要操作的数据')
} else {
setOpenMultieditPreview(true)
}
}}>
批量开通会员
</Button>,
</Space>
);
}}
rowSelection={{
type: 'checkbox'
}}
@@ -213,76 +283,54 @@ const CompanyListPage: React.FC = ({ dispatch, getId, openModel }: any) => {
actionRef.current?.reload();
}}
headerTitle="VIP企业列表"
toolBarRender={() => [
<Button type="primary" onClick={() => {
Modal.confirm({
title: '请选择对批量数据开通哪种会员类型',
content: (<>
<div>参数: id, member_type,start_date,end_date </div>
<h4 style={{ fontWeight: 'bold' }}>类型:</h4>
<Radio.Group size='small' onChange={async (e) => {

actionRef.current?.reload();
}}>
<Row gutter={[20, 20]} style={{ padding: 20 }}>
<Col span={12}>
<Radio value={1}>试用申请中</Radio>
</Col>
<Col span={12}>
<Radio value={1}>试用正式</Radio>
</Col>
<Col span={12}>
<Radio value={1}>普通申请中</Radio>
</Col>
<Col span={12}>
<Radio value={1}>普通正式</Radio>
</Col>
<Col span={12}>
<Radio value={1}>VIP申请中</Radio>
</Col>
<Col span={12}>
<Radio value={1}>VIP正式</Radio>
</Col>
</Row>
</Radio.Group>
<h4 style={{ fontWeight: 'bold' }}>时长:</h4>
<Radio.Group size='small' onChange={async (e) => {
actionRef.current?.reload();
}}>
<Row gutter={[20, 20]} style={{ padding: 20 }}>
<Col span={12}>
<Radio value={1}>1天</Radio>
</Col>
<Col span={12}>
<Radio value={1}>3天</Radio>
</Col>
<Col span={12}>
<Radio value={1}>7天</Radio>
</Col>
<Col span={12}>
<Radio value={1}>15天</Radio>
</Col>
<Col span={12}>
<Radio value={1}>30天</Radio>
</Col>
</Row>
</Radio.Group>
</>),
onOk() {

},
onCancel() {
console.log('Cancel');
},
okText: '保存',
cancelText: '取消',
centered: true
});
}}>
批量开通会员
</Button>,
]}
/>


<Modal
open={openMultieditPreview}
title='请选择对批量数据进行何种操作'
centered
maskClosable={false}
destroyOnClose
width={400}
onCancel={() => {
setOpenMultieditPreview(false)
}}
onOk={() => {
if (memberType && startDate && endDate) {
PostCompanyMultiopenvip({ ids: ids, member_type: memberType, start_date: startDate, end_date: endDate }).then(res => {
setOpenMultieditPreview(false)
actionRef.current?.clearSelected();
actionRef.current?.reload();
})

} else {
message.error('请完成表单')
return false
}
}
}
>
<Flex vertical justify='center' style={{ minHeight: 100 }}>
<Space direction='vertical'>
<h4 style={{ fontWeight: 'bold' }}>类型:</h4>
<Radio.Group size='small' value={memberType} onChange={(e) => {
setMemberType(e.target.value)
}}>
<Radio value={1}>试用申请中</Radio>
<Radio value={2}>试用正式</Radio>
<Radio value={3}>普通申请中</Radio>
<Radio value={4}>普通正式</Radio>
<Radio value={5}>VIP申请中</Radio>
<Radio value={6}>VIP正式</Radio>
</Radio.Group>
<h4 style={{ fontWeight: 'bold' }}>时长:</h4>
<InputNumber min={1} placeholder='请输入时长' onChange={(value) => {
handleTimeChange(value)
}} style={{ width: '100%' }} />
</Space>
</Flex>
</Modal >
</ConfigProvider>
</>
);

+ 167
- 80
src/components/Render/Main/Fair/List/table/index.tsx Просмотреть файл

@@ -4,9 +4,9 @@ import type { ActionType, ProFormInstance } from '@ant-design/pro-components';
import {
ProTable, ProForm
} from '@ant-design/pro-components';
import { Button, ConfigProvider, Tag, Modal, Radio, Row, Col, Descriptions, Space, Image } from 'antd';
import { Button, ConfigProvider, Flex, Modal, Radio, message, DatePicker, Descriptions, Space, Image, Popconfirm } from 'antd';
import { Imageprefix } from '@/constants';
import { listRecruitment, GetRecruitmentDetail } from '@/apis/api';
import { listRecruitment, GetRecruitmentDetail, PostRecruitmentUpdate, PostRecruitmentDel } from '@/apis/api';

import UploadModel from '@/components/Common/upload';

@@ -17,7 +17,11 @@ const MainFairListPage: React.FC = ({ dispatch, getId, openModel }: any) => {
const [total, setTotal] = useState<number>(0)
const [page, setPage] = useState<number>(1)
const [pageSize, setPageSize] = useState<number>(10)

const [openMultieditPreview, setOpenMultieditPreview] = useState(false);
const [ids, setIds] = useState<number[]>([])
const [status, setStatus] = useState<number>(1)
const [startDate, setStartDate] = useState<Date | String | null>(null);
const [endDate, setEndDate] = useState<Date | String | null>(null);
const setId = (id: number) => {
getId(id)
}
@@ -38,7 +42,6 @@ const MainFairListPage: React.FC = ({ dispatch, getId, openModel }: any) => {
uploadedFilephotoNameRef.current = uploadedFilephotoName;
}, [uploadedFilephotoName])


const expandedRowRender = (record) => {
return (
<>
@@ -73,6 +76,70 @@ const MainFairListPage: React.FC = ({ dispatch, getId, openModel }: any) => {
actionRef={actionRef}
dataSource={list}
search={{ span: 8, labelWidth: 'auto' }}
tableAlertRender={({
selectedRowKeys,
selectedRows,
onCleanSelected,
}) => {
setIds(selectedRows)
return (
<Space size={24}>
<span>
已选 {selectedRows.length} 项
<a style={{ marginInlineStart: 8 }} onClick={onCleanSelected}>
取消选择
</a>
</span>
</Space>
);
}}
tableAlertOptionRender={() => {
return (
<Space>
<Button type="primary" onClick={() => {
if (ids.length === 0) {
message.error('请选择要操作的数据')
} else {
setOpenMultieditPreview(true)
}
}}>
批量管理招聘会
</Button>,
<Button type="primary" onClick={() => {
Modal.confirm({
title: '批量删除',
content: '确定要删除所选的数据吗',
onOk() {
const promises = ids.map(item => {
return PostRecruitmentDel({ id: item.id });
});

// 等待所有请求完成
Promise.all(promises)
.then(() => {
message.success('批量删除成功');
actionRef.current?.clearSelected();
actionRef.current?.reload();
})
.catch(error => {
console.error('批量删除成功:', error);
message.error('批量删除成功');
});

},
onCancel() {
console.log('Cancel');
},
okText: '确定',
cancelText: '取消',
centered: true
});
}}>
批量删除
</Button>,
</Space>
);
}}
rowSelection={{
type: 'checkbox'
}}
@@ -98,27 +165,27 @@ const MainFairListPage: React.FC = ({ dispatch, getId, openModel }: any) => {
dataIndex: 'open_date',
width: 200,
search: false
}, {
title: '结束时间',
dataIndex: 'close_date',
width: 200,
search: false
}, {
title: '开启状态',
dataIndex: 'status',
width: 300,
render: (_, record) => (<>
<Radio.Group size='small' value={record.status} onChange={async (e) => {
actionRef.current?.reload();
}}>
<Radio value={1}>已开启</Radio>
<Radio value={2}>已关闭</Radio>
</Radio.Group>
</>),
width: 200,
valueType: 'select',
valueEnum: {
0: { text: '全部' },
1: {
text: '已开启',
status: 'Processing'

},
2: {
text: '已关闭',
status: 'Error'

}
},
}, {
@@ -127,7 +194,7 @@ const MainFairListPage: React.FC = ({ dispatch, getId, openModel }: any) => {
width: 200,
search: false,
render: (_, record) => (<>
<Image src={`${Imageprefix}${record.photo}`} width={60} height={60} />
<Image src={`${Imageprefix}${record.photo}`} width={60} height={60} />
</>
)
},
@@ -140,7 +207,7 @@ const MainFairListPage: React.FC = ({ dispatch, getId, openModel }: any) => {
setId(record)
dispatch({ type: 'openModel/getOpenModal', payload: true })
}}>编辑</Button>,
<Button size='small' type='link' onClick={() => {
<Button size='small' type='link' onClick={() => {
Modal.confirm({
title: '更换图片',
content: (<>
@@ -149,9 +216,8 @@ const MainFairListPage: React.FC = ({ dispatch, getId, openModel }: any) => {
</ProForm>
</>),
async onOk() {
// let info = await GetCompanyInfo({ id: record.id });
// let res = await updateCompany({ ...info.data, license_path: uploadedFilelicenseNameRef.current });
// setUploadedFilelicenseName('');
let res = await PostRecruitmentUpdate({ ...record, photo: uploadedFilephotoNameRef.current });
setUploadedFilephotoName('');
actionRef.current?.reload();
},
onCancel() {
@@ -171,7 +237,20 @@ const MainFairListPage: React.FC = ({ dispatch, getId, openModel }: any) => {
setId(record)
dispatch({ type: 'openModel/getOpenFairDetailModal', payload: true })

}}>参与企业</Button>
}}>参与企业</Button>,
<Popconfirm
title="是否删除"
onConfirm={(e) => {
PostRecruitmentDel({ id: record.id }).then(res => {
message.success('删除成功')
actionRef.current?.reload();
})
}}
okText="删除"
cancelText="取消"
>
<Button danger type='link'>删除</Button>
</Popconfirm>,
],
},
]}
@@ -204,69 +283,77 @@ const MainFairListPage: React.FC = ({ dispatch, getId, openModel }: any) => {
setTotal(res.data.total)
})
}
toolBarRender={() => [<Button type="primary" onClick={() => {
Modal.confirm({
title: '请选择对批量数据进行何种操作',
content: (<>
<div>参数:id, status, open_date, close_date</div>
<h4 style={{ fontWeight: 'bold' }}>状态:</h4>
<Radio.Group size='small' onChange={async (e) => {

actionRef.current?.reload();
}}>
<Row gutter={[20, 20]} style={{ padding: 20 }}>
<Col span={12}>
<Radio value={1}>开启</Radio>
</Col>
<Col span={12}>
<Radio value={1}>关闭</Radio>
</Col>
</Row>
</Radio.Group>
<h4 style={{ fontWeight: 'bold' }}>时长:</h4>
<Radio.Group size='small' onChange={async (e) => {
actionRef.current?.reload();
}}>
<Row gutter={[20, 20]} style={{ padding: 20 }}>
<Col span={12}>
<Radio value={1}>1天</Radio>
</Col>
<Col span={12}>
<Radio value={1}>3天</Radio>
</Col>
<Col span={12}>
<Radio value={1}>7天</Radio>
</Col>
<Col span={12}>
<Radio value={1}>15天</Radio>
</Col>
<Col span={12}>
<Radio value={1}>30天</Radio>
</Col>
</Row>
</Radio.Group>
</>),
onOk() {

},
onCancel() {
console.log('Cancel');
},
okText: '保存',
cancelText: '取消',
centered: true
});
}}>
批量管理招聘会
</Button>,
<Button type="primary" onClick={() => {
dispatch({ type: 'openModel/getOpenModal', payload: true })
}}>
添加招聘会
</Button>
toolBarRender={() => [
<Button type="primary" onClick={() => {
dispatch({ type: 'openModel/getOpenModal', payload: true })
}}>
添加招聘会
</Button>
]}
headerTitle="招聘会列表"
/>


<Modal
open={openMultieditPreview}
title='请选择对批量数据进行何种操作'
centered
maskClosable={false}
destroyOnClose
width={400}
onCancel={() => {
setOpenMultieditPreview(false)
}}
onOk={() => {
if (status) {
const promises = ids.map(item => {
return PostRecruitmentUpdate({ ...item, status: status, open_date: startDate ? startDate : '', close_date: endDate ? endDate : '' });
});

// 等待所有请求完成
Promise.all(promises)
.then(() => {
setOpenMultieditPreview(false);
message.success('批量操作成功');
actionRef.current?.clearSelected();
actionRef.current?.reload();
})
.catch(error => {
console.error('批量操作失败:', error);
message.error('批量操作失败');
});
} else {
message.error('请完成表单')
return false
}
}
}
>
<Flex vertical justify='center' style={{ minHeight: 100 }}>
<Space direction='vertical'>
<h4 style={{ fontWeight: 'bold' }}>类型:</h4>
<Radio.Group size='small' value={status} onChange={(e) => {
setStatus(e.target.value)
}}>
<Radio value={1}>开启</Radio>
<Radio value={2}>关闭</Radio>
</Radio.Group>
{
status === 1 && (
<>
<h4 style={{ fontWeight: 'bold' }}>活动时间:</h4>
<DatePicker.RangePicker showTime format='YYYY-MM-DD HH:mm:ss' onChange={(date, dateString) => {
setStartDate(dateString[0]);
setEndDate(dateString[1]);
}} />
</>
)
}


</Space>
</Flex>
</Modal >
</ConfigProvider>
</>
);

+ 4
- 8
src/components/Render/Main/Information/Article/table/index.tsx Просмотреть файл

@@ -182,19 +182,15 @@ const PagesMainInformationArticleTable: React.FC = ({ dispatch, openModel, getId
onConfirm={(e) => {
delArticle({ id: record.id }).then(res => {
message.success('删除成功')
actionRef.current.reload();
actionRef.current?.reload();
})
}}
okText="删除"
cancelText="取消"
>
<Button
type='link'
key="delete"
>
删除
</Button>
</Popconfirm>
<Button danger type='link'>删除</Button>
</Popconfirm>,

],
},
]}

+ 9
- 41
src/components/Render/Main/Information/Section/table/index.tsx Просмотреть файл

@@ -4,7 +4,7 @@ import type { ActionType, ProFormInstance } from '@ant-design/pro-components';
import {
ProTable, ProForm
} from '@ant-design/pro-components';
import { Button, Image, ConfigProvider, Popconfirm, message, Modal,Radio, Row, Col} from 'antd';
import { Button, Image, ConfigProvider, Popconfirm, message, Modal, Radio, Row, Col } from 'antd';
import { listSection, delSection } from '@/apis/api';
import { Imageprefix } from '@/constants';
import UploadModel from '@/components/Common/upload';
@@ -146,19 +146,13 @@ const PagesMainInformationSectionTable: React.FC = ({ dispatch, openModel, getId
onConfirm={(e) => {
delSection({ id: record.id }).then(res => {
message.success('删除成功')
actionRef.current.reload();
actionRef.current?.reload();
})
}}
okText="删除"
cancelText="取消"
>
<Button
danger
type='link'
key="delete"
>
删除
</Button>
<Button danger type='link'>删除</Button>
</Popconfirm>
],
},
@@ -193,38 +187,12 @@ const PagesMainInformationSectionTable: React.FC = ({ dispatch, openModel, getId
})
}
headerTitle="栏目/频道"
toolBarRender={() => [<Button type="primary" onClick={() => {
Modal.confirm({
title: '请选择对批量数据进行何种操作',
content: (<>
<div>参数:id, display</div>

<Radio.Group size='small' onChange={async (e) => {

actionRef.current?.reload();
}}>
<Radio value={1}>可见</Radio>
<Radio value={1}>不可见</Radio>
</Radio.Group>
</>),
onOk() {

},
onCancel() {
console.log('Cancel');
},
okText: '保存',
cancelText: '取消',
centered: true
});
}}>
批量管理可见状态
</Button>,
<Button type="primary" onClick={() => {
dispatch({ type: 'openModel/getOpenModal', payload: true })
}}>
添加栏目/频道
</Button>
toolBarRender={() => [
<Button type="primary" onClick={() => {
dispatch({ type: 'openModel/getOpenModal', payload: true })
}}>
添加栏目/频道
</Button>
]}
expandable={{
childrenColumnName: 'childs', // 指定子节点数据的字段名

+ 1
- 28
src/components/Render/Main/Jobseeker/Account/table/index.tsx Просмотреть файл

@@ -154,34 +154,7 @@ const PagesMainJobseekerAccountTable: React.FC = ({ dispatch, getId, dictModel,
})
}
headerTitle="简历列表"
toolBarRender={() => [
<Button type="primary" onClick={() => {
Modal.confirm({
title: '请选择对批量数据进行何种操作',
content: (<>
<div>参数:id, status</div>

<Radio.Group size='small' onChange={async (e) => {
actionRef.current?.reload();
}}>
<Radio value={1}>开通</Radio>
<Radio value={2}>禁用</Radio>
</Radio.Group>
</>),
onOk() {

},
onCancel() {
console.log('Cancel');
},
okText: '保存',
cancelText: '取消',
centered: true
});
}}>
批量管理账号
</Button>,
]}
/>
</ConfigProvider>


+ 129
- 63
src/components/Render/Main/Jobseeker/List/table/index.tsx Просмотреть файл

@@ -4,7 +4,7 @@ import type { ActionType, ProFormInstance } from '@ant-design/pro-components';
import {
ProTable, ProForm, ProFormSelect, ProFormText, ProFormDependency
} from '@ant-design/pro-components';
import { Button, ConfigProvider, Image, message, Modal, Input, Row, Col, Space, Radio, Descriptions } from 'antd';
import { Button, ConfigProvider, Image, message, Modal, Input, Row, Flex, Space, Radio, Descriptions } from 'antd';
import { PostJobseekerList, PostJobseekerExport, PostJobapplicantUpdate } from '@/apis/api';
import { Imageprefix } from '@/constants';
import DragUpload from '@/components/Common/dragupload';
@@ -24,6 +24,11 @@ const PagesMainJobseekerListTable: React.FC = ({ dispatch, getId, dictModel, ope
const [total, setTotal] = useState<number>(0)
const [page, setPage] = useState<number>(1)
const [pageSize, setPageSize] = useState<number>(10)
const [openMultieditPreview, setOpenMultieditPreview] = useState(false);
const [ids, setIds] = useState<number[]>([])
const [status, setStatus] = useState<number>(2)
const [auditMemo, setAuditMemo] = useState<string>('')


const setId = (id: number) => {
getId(id)
@@ -108,6 +113,38 @@ const PagesMainJobseekerListTable: React.FC = ({ dispatch, getId, dictModel, ope
actionRef={actionRef}
dataSource={list}
search={{ span: 8, labelWidth: 'auto' }}
tableAlertRender={({
selectedRowKeys,
selectedRows,
onCleanSelected,
}) => {
setIds(selectedRows)
return (
<Space size={24}>
<span>
已选 {selectedRows.length} 项
<a style={{ marginInlineStart: 8 }} onClick={onCleanSelected}>
取消选择
</a>
</span>
</Space>
);
}}
tableAlertOptionRender={() => {
return (
<Space size={16}>
<Button type="primary" onClick={(record) => {
if (ids.length === 0) {
message.error('请选择要操作的数据')
} else {
setOpenMultieditPreview(true)
}
}}>
批量审核
</Button>,
</Space>
);
}}
rowSelection={{
type: 'checkbox'
}}
@@ -319,72 +356,101 @@ const PagesMainJobseekerListTable: React.FC = ({ dispatch, getId, dictModel, ope
setTotal(res.data.total)
})
}
toolBarRender={() => [<Button type="primary" onClick={(record) => {
Modal.confirm({
title: '请选择对批量数据审核',
content: (<>
<Space direction='vertical' style={{ width: '100%', padding: 20 }}>
<div>参数:id, customer_id, status, audit_memo</div>

<Radio.Group size='small' onChange={async (e) => {
actionRef.current?.reload();
}}>
<Radio value={2}>通过</Radio>
<Radio value={3}>不通过</Radio>
</Radio.Group>
<h4>如不通过请输入原因,按回车键保存,也可不填</h4>
<Input style={{ width: '100%' }} placeholder='此处不通过原因' defaultValue={record.status_txt} onPressEnter={async (e) => {
let res = await PostJobapplicantUpdate({ customer_id: record.customer_id, id: record.id, status: 3, audit_memo: e.target.value });
actionRef.current?.reload();
}}></Input>
</Space>

</>),
onOk() {

},
onCancel() {
console.log('Cancel');
},
okText: '保存',
cancelText: '取消',
centered: true
});
}}>
批量审核
</Button>,
<Button type="primary" onClick={() => {
message.info('数据导出需要时间,请耐心等待')
PostJobseekerExport().then(res => {
let url = Imageprefix + res.data.excel_url;
window.open(url);
message.info('数据导出完毕')
})
}}>
导出数据
</Button>,
<Button type="primary" onClick={() => {
Modal.confirm({
title: '导入文件',
content: (<>
<DragUpload form_name="doc_url" uploadTxt="导入文件"></DragUpload>
</>),
onOk() {
toolBarRender={() => [
<Button type="primary" onClick={() => {
message.info('数据导出需要时间,请耐心等待')
PostJobseekerExport().then(res => {
let url = Imageprefix + res.data.excel_url;
window.open(url);
message.info('数据导出完毕')
})
}}>
导出数据
</Button>,
<Button type="primary" onClick={() => {
Modal.confirm({
title: '导入文件',
content: (<>
<DragUpload form_name="doc_url" uploadTxt="导入文件"></DragUpload>
</>),
onOk() {

},
onCancel() {
console.log('Cancel');
},
okText: '确定',
cancelText: '取消',
centered: true
});
}}>
导入数据
</Button >,
},
onCancel() {
console.log('Cancel');
},
okText: '确定',
cancelText: '取消',
centered: true
});
}}>
导入数据
</Button >,
]}
headerTitle="简历列表"
/>


<Modal
open={openMultieditPreview}
title='请选择对批量数据进行何种操作'
centered
maskClosable={false}
destroyOnClose
width={400}
onCancel={() => {
setOpenMultieditPreview(false)
}}
onOk={async () => {
if (status) {
const promises = ids.map(item => {
return PostJobapplicantUpdate({ id: item.id, customer_id: item.customer_id, status: status, audit_memo: auditMemo });
});

// 等待所有请求完成
Promise.all(promises)
.then(() => {
setOpenMultieditPreview(false);
message.success('批量操作成功');
actionRef.current?.clearSelected();
actionRef.current?.reload();
})
.catch(error => {
console.error('批量操作失败:', error);
message.error('批量操作失败');
});

} else {
message.error('请完成表单')
return false
}
}
}
>
<Flex vertical justify='center' style={{ minHeight: 100 }}>
<Space direction='vertical'>
<h4 style={{ fontWeight: 'bold' }}>状态:</h4>
<Radio.Group size='small' value={status} onChange={(e) => {
setStatus(e.target.value)
}}>
<Radio value={1}>待审核</Radio>
<Radio value={2}>审核通过</Radio>
<Radio value={3}>审核不通过</Radio>
</Radio.Group>
{
status === 3 && (
<>
<h4>如不通过请输入原因,按回车键保存,也可不填</h4>
<Input style={{ width: '100%' }} placeholder='此处不通过原因' onChange={(e) => {
setAuditMemo(e.target.value)
}}></Input>
</>
)
}

</Space>
</Flex>
</Modal >
</ConfigProvider>

</>

+ 14
- 4
src/components/Render/Permission/Account/table/index.tsx Просмотреть файл

@@ -4,7 +4,7 @@ import type { ActionType, ProFormInstance } from '@ant-design/pro-components';
import {
ProTable, TableDropdown
} from '@ant-design/pro-components';
import { Button, Image, ConfigProvider, Tag } from 'antd';
import { Button, Image, ConfigProvider, Popconfirm } from 'antd';
import { getAccount } from '@/apis/api';
import { Imageprefix } from '@/constants';

@@ -74,9 +74,19 @@ const PagesPermissionAccountTable: React.FC = ({ dispatch, openModel, getId }: a
setId(record.id)
dispatch({ type: 'openModel/getOpenModal', payload: true })
}}>编辑</Button>,
<Button key='2' type='link' onClick={() => {

}}>删除</Button>
<Popconfirm
title="是否删除"
onConfirm={(e) => {
PostActivityaddressDel({ id: record.id }).then(res => {
message.success('删除成功')
actionRef.current?.reload();
})
}}
okText="删除"
cancelText="取消"
>
<Button danger type='link'>删除</Button>
</Popconfirm>
],
},
]}

+ 16
- 6
src/components/Render/Permission/List/table/index.tsx Просмотреть файл

@@ -4,7 +4,7 @@ import type { ActionType, ProFormInstance } from '@ant-design/pro-components';
import {
ProTable, TableDropdown
} from '@ant-design/pro-components';
import { Button, Image, ConfigProvider, Tag, Badge } from 'antd';
import { Button, Image, ConfigProvider, Popconfirm, Badge } from 'antd';
import { getPermissionListWithchilds } from '@/apis/api';
import { Imageprefix } from '@/constants';

@@ -93,13 +93,13 @@ const PagesPermissionListTable: React.FC = ({ dispatch, openModel, getId }: any)
search: false,
width: 200,
},
{
{
title: '上级菜单id',
dataIndex: 'parent_id',
search: false,
width: 200,
render: (_, record) => (<>
{record.parent_id == -1 ? <Badge status="processing" text='顶级菜单' /> : <Badge status="error" text={record.parent_id}/> }
{record.parent_id == -1 ? <Badge status="processing" text='顶级菜单' /> : <Badge status="error" text={record.parent_id} />}
</>
)
}, {
@@ -126,9 +126,19 @@ const PagesPermissionListTable: React.FC = ({ dispatch, openModel, getId }: any)
setId(record)
dispatch({ type: 'openModel/getOpenParentModal', payload: true })
}}>更换父级</Button>,
<Button key='4' type='link' onClick={() => {

}}>删除</Button>,
<Popconfirm
title="是否删除"
onConfirm={(e) => {
PostActivityaddressDel({ id: record.id }).then(res => {
message.success('删除成功')
actionRef.current?.reload();
})
}}
okText="删除"
cancelText="取消"
>
<Button danger type='link'>删除</Button>
</Popconfirm>
],
},
]}

+ 15
- 4
src/components/Render/Permission/Role/table/index.tsx Просмотреть файл

@@ -4,7 +4,7 @@ import type { ActionType, ProFormInstance } from '@ant-design/pro-components';
import {
ProTable, TableDropdown
} from '@ant-design/pro-components';
import { Button, Image, ConfigProvider, Tag } from 'antd';
import { Button, Image, ConfigProvider, Popconfirm } from 'antd';
import { GetRoleList } from '@/apis/api';
import { Imageprefix } from '@/constants';

@@ -76,9 +76,20 @@ const PagesPermissionRoleTable: React.FC = ({ dispatch, openModel, getId }: any)
setId(record.id)
dispatch({ type: 'openModel/getOpenDispenseModal', payload: true })
}}>分配权限</Button>,
<Button key='3' type='link' onClick={() => {

}}>删除</Button>
<Popconfirm
title="是否删除"
onConfirm={(e) => {
PostActivityaddressDel({ id: record.id }).then(res => {
message.success('删除成功')
actionRef.current?.reload();
})
}}
okText="删除"
cancelText="取消"
>
<Button danger type='link'>删除</Button>
</Popconfirm>
],
},
]}

+ 15
- 5
src/components/Render/Setting/Dictionary/table/index.tsx Просмотреть файл

@@ -4,7 +4,7 @@ import type { ActionType, ProFormInstance } from '@ant-design/pro-components';
import {
ProTable, TableDropdown
} from '@ant-design/pro-components';
import { Button, Image, ConfigProvider, Tag } from 'antd';
import { Button, Image, ConfigProvider, Popconfirm } from 'antd';
import { GetDictList } from '@/apis/api';
import { Imageprefix } from '@/constants';

@@ -21,7 +21,7 @@ const PagesSettingDictionaryTable: React.FC = ({ dispatch, openModel, getId }: a

useEffect(() => {
if (!openModel.openModal) {
actionRef.current.reload();
actionRef.current?.reload();
}
}, [openModel.openModal])

@@ -73,9 +73,19 @@ const PagesSettingDictionaryTable: React.FC = ({ dispatch, openModel, getId }: a
setId(record)
dispatch({ type: 'openModel/getOpenModal', payload: true })
}}>添加下级字典</Button>,
<Button key='2' type='link' onClick={() => {

}}>删除</Button>,
<Popconfirm
title="是否删除"
onConfirm={(e) => {
PostActivityaddressDel({ id: record.id }).then(res => {
message.success('删除成功')
actionRef.current?.reload();
})
}}
okText="删除"
cancelText="取消"
>
<Button danger type='link'>删除</Button>
</Popconfirm>
],
},
]}

+ 14
- 4
src/components/Render/Setting/System/table/index.tsx Просмотреть файл

@@ -4,7 +4,7 @@ import type { ActionType, ProFormInstance } from '@ant-design/pro-components';
import {
ProTable, TableDropdown
} from '@ant-design/pro-components';
import { Button, Image, ConfigProvider, Typography } from 'antd';
import { Button, Image, ConfigProvider, Popconfirm } from 'antd';
import { GetSysconfigList } from '@/apis/api';
import { Imageprefix } from '@/constants';
import he from 'he';
@@ -74,9 +74,19 @@ const PagesSettingSystemTable: React.FC = ({ dispatch, openModel, getId }: any)
setId(record.id)
dispatch({ type: 'openModel/getOpenModal', payload: true })
}}>编辑</Button>,
<Button key='2' type='link' onClick={() => {

}}>删除</Button>
<Popconfirm
title="是否删除"
onConfirm={(e) => {
PostActivityaddressDel({ id: record.id }).then(res => {
message.success('删除成功')
actionRef.current?.reload();
})
}}
okText="删除"
cancelText="取消"
>
<Button danger type='link'>删除</Button>
</Popconfirm>
],
},
]}

Загрузка…
Отмена
Сохранить