增加信息

This commit is contained in:
PC-202306242200\Administrator
2024-09-11 14:32:54 +08:00
parent 538f0d7731
commit fe72625bce
75 changed files with 1281 additions and 423 deletions

View File

@@ -55,15 +55,7 @@ export default defineConfig({
* @doc 代理介绍 https://umijs.org/docs/guides/proxy
* @doc 代理配置 https://umijs.org/docs/api/config#proxy
*/
proxy: proxy['pro'],
define: {
"process.env": {
API_URL: "https://shopapi.jitucdz.com",
WS_URL: "ws://shopapi.jitucdz.com",
STATIC_URL: "https://shopapi.jitucdz.com",
WEMAP_KEY: "ZFDBZ-YUTWB-353UZ-NYKEY-JTVIZ-Q3F6X",
},
},
proxy: proxy[REACT_APP_ENV],
/**
* @name 快速热更新配置
* @description 一个不错的热更新组件,更新时可以保留 state

View File

@@ -37,10 +37,10 @@ export default {
},
},
dev: {
'/admin/': {
'/api/': {
target: 'http://192.168.1.32:1002',
changeOrigin: true,
pathRewrite: { '^/admin': '/admin' },
pathRewrite: { '^/api': '/api' },
},
},
pre: {
@@ -50,18 +50,4 @@ export default {
pathRewrite: { '^/admin': '/admin' },
},
},
prod: {
'/admin/': {
target: 'https://iadminapi.zhongshuai2023.com',
changeOrigin: true,
pathRewrite: { '^/admin': '/admin' },
},
},
pro: {
'/admin/': {
target: 'https://iadminapi.zhongshuai2023.com',
changeOrigin: true,
pathRewrite: { '^/admin': '/admin' },
},
},
};

1
dist/1156.1bbdcfa3.async.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

40
dist/2911.27900bb6.async.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

78
dist/3917.f9f758fe.async.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

3
dist/5384.529f9ae4.async.js vendored Normal file

File diff suppressed because one or more lines are too long

58
dist/6030.760d1f86.async.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

3
dist/939.4dac2e3d.async.js vendored Normal file

File diff suppressed because one or more lines are too long

2
dist/index.html vendored
View File

@@ -8,6 +8,6 @@
</head>
<body>
<div id="root"></div>
<script src="/umi.e4c2eae3.js"></script>
<script src="/umi.978e06ed.js"></script>
</body></html>

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
"use strict";(self.webpackChunkant_design_pro=self.webpackChunkant_design_pro||[]).push([[5351],{986:function(L,d,e){e.r(d),e.d(d,{default:function(){return C}});var m=e(90228),s=e.n(m),p=e(87999),c=e.n(p),g=e(7485);function y(l){return i.apply(this,arguments)}function i(){return i=c()(s()().mark(function l(o){return s()().wrap(function(a){for(;;)switch(a.prev=a.next){case 0:return a.abrupt("return",(0,g.request)("/apin/device/amount/page",{method:"POST",headers:{"Content-Type":"application/json;charset=UTF-8"},data:o||{}}));case 1:case"end":return a.stop()}},l)})),i.apply(this,arguments)}var T=e(50959),x=e(16030),R=e(78383),u=e(11527),j=function(){var o=(0,T.useRef)(),v=[{title:"ID",dataIndex:"id",valueType:"text",search:!1},{title:"\u670D\u52A1\u8D39\u91D1\u989D",dataIndex:"amout",valueType:"text",search:!1},{title:"\u670D\u52A1\u8D39\u4EA7\u751F\u65E5\u671F",dataIndex:"incomeDay",valueType:"dateRange",search:{transform:function(r){return{incomeDayBegin:r[0],incomeDayEnd:r[1]}}}},{title:"\u521B\u5EFA\u65F6\u95F4",dataIndex:"createTime",valueType:"text",search:!1}];return(0,u.jsx)(x._z,{children:(0,u.jsx)("div",{style:{width:"100%",float:"right"},children:(0,u.jsx)(R.Z,{actionRef:o,rowKey:"id",search:{labelWidth:120},request:function(){var a=c()(s()().mark(function r(f,I,P){var h,t;return s()().wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,y(f);case 2:return h=n.sent,t=h.data,n.abrupt("return",{data:(t==null?void 0:t.records)||[],total:t==null?void 0:t.total});case 5:case"end":return n.stop()}},r)}));return function(r,f,I){return a.apply(this,arguments)}}(),columns:v},"logList")})})},C=j}}]);
"use strict";(self.webpackChunkant_design_pro=self.webpackChunkant_design_pro||[]).push([[5351],{986:function(L,d,e){e.r(d),e.d(d,{default:function(){return C}});var m=e(90228),s=e.n(m),p=e(87999),c=e.n(p),g=e(7485);function y(l){return i.apply(this,arguments)}function i(){return i=c()(s()().mark(function l(o){return s()().wrap(function(a){for(;;)switch(a.prev=a.next){case 0:return a.abrupt("return",(0,g.request)("/apin/device/amount/page",{method:"POST",headers:{"Content-Type":"application/json;charset=UTF-8"},data:o||{}}));case 1:case"end":return a.stop()}},l)})),i.apply(this,arguments)}var T=e(50959),x=e(16030),R=e(35384),u=e(11527),j=function(){var o=(0,T.useRef)(),v=[{title:"ID",dataIndex:"id",valueType:"text",search:!1},{title:"\u670D\u52A1\u8D39\u91D1\u989D",dataIndex:"amout",valueType:"text",search:!1},{title:"\u670D\u52A1\u8D39\u4EA7\u751F\u65E5\u671F",dataIndex:"incomeDay",valueType:"dateRange",search:{transform:function(r){return{incomeDayBegin:r[0],incomeDayEnd:r[1]}}}},{title:"\u521B\u5EFA\u65F6\u95F4",dataIndex:"createTime",valueType:"text",search:!1}];return(0,u.jsx)(x._z,{children:(0,u.jsx)("div",{style:{width:"100%",float:"right"},children:(0,u.jsx)(R.Z,{actionRef:o,rowKey:"id",search:{labelWidth:120},request:function(){var a=c()(s()().mark(function r(f,I,P){var h,t;return s()().wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,y(f);case 2:return h=n.sent,t=h.data,n.abrupt("return",{data:(t==null?void 0:t.records)||[],total:t==null?void 0:t.total});case 5:case"end":return n.stop()}},r)}));return function(r,f,I){return a.apply(this,arguments)}}(),columns:v},"logList")})})},C=j}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
"use strict";(self.webpackChunkant_design_pro=self.webpackChunkant_design_pro||[]).push([[2722],{15643:function(b,m,t){t.r(m);var T=t(90228),a=t.n(T),E=t(87999),s=t.n(E),i=t(19869),y=t(50959),p=t(16030),P=t(35384),u=t(11527),g=function(){var v=(0,y.useRef)(),d=[{title:"ID",dataIndex:"id",valueType:"text",search:!1},{title:"\u7528\u6237ID",dataIndex:"userId",valueType:"text",search:!1},{title:"\u94B1\u5305",dataIndex:"points2",valueType:"text",search:!1},{title:"\u4FEE\u6539\u65F6\u95F4",dataIndex:"updateTime",valueType:"text",search:!1},{title:"\u521B\u5EFA\u65F6\u95F4",dataIndex:"createTime",valueType:"text",search:!1}];return(0,u.jsx)(p._z,{children:(0,u.jsx)("div",{style:{width:"100%",float:"right"},children:(0,u.jsx)(P.Z,{actionRef:v,rowKey:"id",search:{labelWidth:120},request:function(){var D=s()(a()().mark(function o(f,c,n){var r,_;return a()().wrap(function(l){for(;;)switch(l.prev=l.next){case 0:return l.next=2,(0,i.xY)(f);case 2:return r=l.sent,_=r.data,l.abrupt("return",{data:(_==null?void 0:_.records)||[],total:_==null?void 0:_.total});case 5:case"end":return l.stop()}},o)}));return function(o,f,c){return D.apply(this,arguments)}}(),columns:d},"logList")})})};m.default=g},19869:function(b,m,t){t.d(m,{G6:function(){return f},I7:function(){return g},eq:function(){return P},hT:function(){return v},xY:function(){return y}});var T=t(90228),a=t.n(T),E=t(87999),s=t.n(E),i=t(7485);function y(n){return p.apply(this,arguments)}function p(){return p=s()(a()().mark(function n(r){return a()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,i.request)("/api/userspoints/page",{method:"POST",headers:{"Content-Type":"application/json;charset=UTF-8"},data:r||{}}));case 1:case"end":return e.stop()}},n)})),p.apply(this,arguments)}function P(n){return u.apply(this,arguments)}function u(){return u=s()(a()().mark(function n(r){return a()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,i.request)("/api/userspoints/extract/page",{method:"POST",headers:{"Content-Type":"application/json;charset=UTF-8"},data:r||{}}));case 1:case"end":return e.stop()}},n)})),u.apply(this,arguments)}function g(n){return h.apply(this,arguments)}function h(){return h=s()(a()().mark(function n(r){return a()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,i.request)("/api/userspoints/record/page",{method:"POST",headers:{"Content-Type":"application/json;charset=UTF-8"},data:r||{}}));case 1:case"end":return e.stop()}},n)})),h.apply(this,arguments)}function v(n){return d.apply(this,arguments)}function d(){return d=s()(a()().mark(function n(r){return a()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,i.request)("/api/userspoints/points/extract/export",{method:"POST",headers:{"Content-Type":"application/json;charset=UTF-8"},data:r||{},responseType:"blob"}));case 1:case"end":return e.stop()}},n)})),d.apply(this,arguments)}function D(n){return o.apply(this,arguments)}function o(){return o=_asyncToGenerator(_regeneratorRuntime().mark(function n(r){return _regeneratorRuntime().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",request("/api/userspoints/points/export",{method:"POST",headers:{"Content-Type":"application/json;charset=UTF-8"},data:r||{},responseType:"blob"}));case 1:case"end":return e.stop()}},n)})),o.apply(this,arguments)}function f(n){return c.apply(this,arguments)}function c(){return c=s()(a()().mark(function n(r){return a()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,i.request)("/api/userspoints/points/record/export",{method:"POST",headers:{"Content-Type":"application/json;charset=UTF-8"},data:r||{},responseType:"blob"}));case 1:case"end":return e.stop()}},n)})),c.apply(this,arguments)}}}]);

View File

@@ -1 +0,0 @@
"use strict";(self.webpackChunkant_design_pro=self.webpackChunkant_design_pro||[]).push([[2722],{15643:function(T,o,e){e.r(o);var c=e(90228),t=e.n(c),h=e(87999),u=e.n(h),l=e(19869),E=e(50959),d=e(16030),f=e(78383),a=e(11527),D=function(){var _=(0,E.useRef)(),r=[{title:"ID",dataIndex:"id",valueType:"text",search:!1},{title:"\u7528\u6237ID",dataIndex:"userId",valueType:"text",search:!1},{title:"\u94B1\u5305",dataIndex:"points2",valueType:"text",search:!1},{title:"\u4FEE\u6539\u65F6\u95F4",dataIndex:"updateTime",valueType:"text",search:!1},{title:"\u521B\u5EFA\u65F6\u95F4",dataIndex:"createTime",valueType:"text",search:!1}];return(0,a.jsx)(d._z,{children:(0,a.jsx)("div",{style:{width:"100%",float:"right"},children:(0,a.jsx)(f.Z,{actionRef:_,rowKey:"id",search:{labelWidth:120},request:function(){var p=u()(t()().mark(function n(P,g,O){var v,s;return t()().wrap(function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,(0,l.xY)(P);case 2:return v=i.sent,s=v.data,i.abrupt("return",{data:(s==null?void 0:s.records)||[],total:s==null?void 0:s.total});case 5:case"end":return i.stop()}},n)}));return function(n,P,g){return p.apply(this,arguments)}}(),columns:r},"logList")})})};o.default=D},19869:function(T,o,e){e.d(o,{I7:function(){return D},eq:function(){return f},xY:function(){return E}});var c=e(90228),t=e.n(c),h=e(87999),u=e.n(h),l=e(7485);function E(_){return d.apply(this,arguments)}function d(){return d=u()(t()().mark(function _(r){return t()().wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",(0,l.request)("/api/userspoints/page",{method:"POST",headers:{"Content-Type":"application/json;charset=UTF-8"},data:r||{}}));case 1:case"end":return n.stop()}},_)})),d.apply(this,arguments)}function f(_){return a.apply(this,arguments)}function a(){return a=u()(t()().mark(function _(r){return t()().wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",(0,l.request)("/api/userspoints/extract/page",{method:"POST",headers:{"Content-Type":"application/json;charset=UTF-8"},data:r||{}}));case 1:case"end":return n.stop()}},_)})),a.apply(this,arguments)}function D(_){return m.apply(this,arguments)}function m(){return m=u()(t()().mark(function _(r){return t()().wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",(0,l.request)("/api/userspoints/record/page",{method:"POST",headers:{"Content-Type":"application/json;charset=UTF-8"},data:r||{}}));case 1:case"end":return n.stop()}},_)})),m.apply(this,arguments)}}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
"use strict";(self.webpackChunkant_design_pro=self.webpackChunkant_design_pro||[]).push([[6109],{3599:function(P,h,n){n.r(h);var E=n(48305),r=n.n(E),p=n(50959),d=n(94675),i=n(33917),v=n(92790),t=n(11527);h.default=function(m){var _=m.values,O=m.modalOpenState,o=m.onModalOpenState,D=(0,p.useState)(null),l=r()(D,2),a=l[0],u=l[1],c=(0,p.useState)(null),e=r()(c,2),j=e[0],A=e[1];(0,p.useEffect)(function(){_!=null&&_.id&&(0,v.QN)(_==null?void 0:_.id).then(function(f){var T=f.data;A(T||[])}).catch(function(){})},[_]);var M=[{title:"\u8D26\u5355\u53F7",dataIndex:"orderNo",search:!1},{title:"\u6295\u8D44\u4EBA",dataIndex:"shop",search:!1,render:function(T,s){return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{children:["\u7528\u6237\u540D\uFF1A",s==null?void 0:s.username]}),(0,t.jsxs)("div",{children:["\u624B\u673A\u53F7\uFF1A",s==null?void 0:s.phone]}),(0,t.jsxs)("div",{children:["\u7B49\u7EA7\uFF1A",s==null?void 0:s.level]})]})}},{title:"\u7C7B\u578B",dataIndex:"typeValue",search:!1},{title:"\u91D1\u989D",dataIndex:"points",search:!1},{title:"\u521B\u5EFA\u65F6\u95F4",dataIndex:"createTime",search:!1}];return(0,t.jsx)(t.Fragment,{children:(0,t.jsx)(d.Z,{width:"800px",title:"\u5206\u7EA2",open:O,onOk:function(){o(!1)},onCancel:function(){o(!1)},children:(0,t.jsx)(t.Fragment,{children:(0,t.jsx)(i.Z,{rowKey:"id",columns:M,dataSource:j,pagination:!1})})})})}},92790:function(P,h,n){n.d(h,{Lp:function(){return D},QN:function(){return O},aT:function(){return v},tX:function(){return m}});var E=n(90228),r=n.n(E),p=n(87999),d=n.n(p),i=n(7485);function v(a){return t.apply(this,arguments)}function t(){return t=d()(r()().mark(function a(u){return r()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,i.request)("/api/orders/page",{method:"POST",headers:{"Content-Type":"application/json;charset=UTF-8"},data:u||{}}));case 1:case"end":return e.stop()}},a)})),t.apply(this,arguments)}function m(a){return _.apply(this,arguments)}function _(){return _=d()(r()().mark(function a(u){return r()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,i.request)("/api/orders/export",{method:"POST",headers:{"Content-Type":"application/json;charset=UTF-8"},data:u||{},responseType:"blob"}));case 1:case"end":return e.stop()}},a)})),_.apply(this,arguments)}function O(a){return o.apply(this,arguments)}function o(){return o=d()(r()().mark(function a(u){return r()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,i.request)("/api/orders/orderIncomeList?id=".concat(u),{method:"GET",headers:{"Content-Type":"application/json;charset=UTF-8"}}));case 1:case"end":return e.stop()}},a)})),o.apply(this,arguments)}function D(a){return l.apply(this,arguments)}function l(){return l=d()(r()().mark(function a(u){return r()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,i.request)("/api/orders/orderRefund",{method:"POST",headers:{"Content-Type":"application/json;charset=UTF-8"},data:u||{}}));case 1:case"end":return e.stop()}},a)})),l.apply(this,arguments)}}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
"use strict";(self.webpackChunkant_design_pro=self.webpackChunkant_design_pro||[]).push([[6660],{25387:function(A,m,_){_.r(m);var v=_(90228),t=_.n(v),D=_(87999),c=_.n(D),p=_(48305),E=_.n(p),l=_(57571),d=_(50959),s=_(94675),a=_(35384),n=_(11527);m.default=function(i){var e=i.values,I=i.modalOpenState,O=i.onModalOpenState,T=(0,d.useState)(null),P=E()(T,2),R=P[0],x=P[1],j=(0,d.useState)(null),M=E()(j,2),L=M[0],U=M[1],f=(0,d.useRef)();(0,d.useEffect)(function(){f.current&&f.current.reload()},[e]);var g=[{title:"\u7528\u6237ID",dataIndex:"userId",search:!1},{title:"\u8BBE\u5907ID",dataIndex:"deviceId",search:!1},{title:"\u5206\u8D26\u65E5\u671F",dataIndex:"incomeDate",search:!1},{title:"\u521B\u5EFA\u65F6\u95F4",dataIndex:"createTime",search:!1}];return(0,n.jsx)(n.Fragment,{children:(0,n.jsx)(s.Z,{width:"800px",title:"\u6536\u76CA\u5217\u8868",open:I,onOk:function(){O(!1)},onCancel:function(){O(!1)},children:(0,n.jsx)(n.Fragment,{children:(0,n.jsx)(a.Z,{actionRef:f,rowKey:"id",search:{labelWidth:120},request:function(){var h=c()(t()().mark(function b(u,C,K){var y,r;return t()().wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return u.deviceNo=e==null?void 0:e.deviceNo,u.orderId=e==null?void 0:e.orderId,u.userId=e==null?void 0:e.userId,o.next=5,(0,l.f)(u);case 5:return y=o.sent,r=y.data,o.abrupt("return",{data:(r==null?void 0:r.records)||[],total:r==null?void 0:r.total});case 8:case"end":return o.stop()}},b)}));return function(b,u,C){return h.apply(this,arguments)}}(),columns:g},"logList")})})})}},57571:function(A,m,_){_.d(m,{L:function(){return E},f:function(){return d}});var v=_(90228),t=_.n(v),D=_(87999),c=_.n(D),p=_(7485);function E(a){return l.apply(this,arguments)}function l(){return l=c()(t()().mark(function a(n){return t()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,p.request)("/api/device/page",{method:"POST",headers:{"Content-Type":"application/json;charset=UTF-8"},data:n||{}}));case 1:case"end":return e.stop()}},a)})),l.apply(this,arguments)}function d(a){return s.apply(this,arguments)}function s(){return s=c()(t()().mark(function a(n){return t()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,p.request)("/api/device/incomeday/page",{method:"POST",headers:{"Content-Type":"application/json;charset=UTF-8"},data:n||{}}));case 1:case"end":return e.stop()}},a)})),s.apply(this,arguments)}}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
"use strict";(self.webpackChunkant_design_pro=self.webpackChunkant_design_pro||[]).push([[8280],{20902:function(B,s,e){var l=e(35361),o=e(56929),i=e(50959),m=e(20734),E=e(11527),a=["fieldProps","proFieldProps"],_=function(r,p){var u=r.fieldProps,t=r.proFieldProps,D=(0,o.Z)(r,a);return(0,E.jsx)(m.Z,(0,l.Z)({ref:p,valueType:"textarea",fieldProps:u,proFieldProps:t},D))};s.Z=i.forwardRef(_)},79669:function(B,s,e){e.r(s);var l=e(90228),o=e.n(l),i=e(87999),m=e.n(i),E=e(5e4),a=e(49547),_=e(19014),A=e(20902),r=e(40676),p=e(50959),u=e(11527);s.default=function(t){var D=t.modalOpenState,h=t.onModalOpenState,O=t.onSubmit,c=(0,p.useRef)();return(0,u.jsx)(u.Fragment,{children:(0,u.jsxs)(E.Y,{title:"\u6295\u8D44\u4EBA-\u8F6C\u6302",formRef:c,submitter:{searchConfig:{resetText:"\u91CD\u7F6E"},resetButtonProps:{onClick:function(){var n;(n=c.current)===null||n===void 0||n.resetFields()}}},onFinish:function(){var F=m()(o()().mark(function n(M){var P;return o()().wrap(function(d){for(;;)switch(d.prev=d.next){case 0:return d.next=2,O(M);case 2:(P=c.current)===null||P===void 0||P.resetFields();case 3:case"end":return d.stop()}},n)}));return function(n){return F.apply(this,arguments)}}(),open:D,onOpenChange:h,children:[(0,u.jsxs)("div",{className:"text-red-600 ",children:[(0,u.jsx)("div",{children:"A\uFF1A\u9700\u8981\u8F6C\u6302\u7684\u6295\u8D44\u4EBA"}),(0,u.jsx)("div",{children:"B\uFF1A\u8F6C\u6302\u8BE5\u6295\u8D44\u4EBA\u540D\u4E0B"}),(0,u.jsx)("div",{children:"\u8BE5\u64CD\u4F5C\u628AA\u8F6C\u6302\u5230B\u540D\u4E0B"})]}),(0,u.jsx)(r.Z,{children:"A\uFF1A\u9700\u8981\u8F6C\u6302\u7684\u6295\u8D44\u4EBA"}),(0,u.jsxs)(a.A.Group,{children:[(0,u.jsx)(_.Z,{rules:[{required:!0,message:"\u8BF7\u8F93\u5165"}],width:"md",name:"userNameSource",label:"\u7528\u6237\u540D(A)",placeholder:"\u8BF7\u8F93\u5165"}),(0,u.jsx)(_.Z,{rules:[{required:!0,message:"\u8BF7\u8F93\u5165"}],width:"md",name:"phoneSource",label:"\u624B\u673A\u53F7(A)",placeholder:"\u8BF7\u8F93\u5165"})]}),(0,u.jsx)(r.Z,{children:"B\uFF1A\u628AA\u8F6C\u6302\u8BE5\u6295\u8D44\u4EBA\u540D\u4E0B"}),(0,u.jsxs)(a.A.Group,{children:[(0,u.jsx)(_.Z,{rules:[{required:!0,message:"\u8BF7\u8F93\u5165"}],width:"md",name:"userNameTarget",label:"\u7528\u6237\u540D(B)",placeholder:"\u8BF7\u8F93\u5165"}),(0,u.jsx)(_.Z,{rules:[{required:!0,message:"\u8BF7\u8F93\u5165"}],width:"md",name:"phoneTarget",label:"\u624B\u673A\u53F7(B)",placeholder:"\u8BF7\u8F93\u5165"})]}),(0,u.jsx)(A.Z,{rules:[{required:!0,message:"\u8BF7\u8F93\u5165"}],width:"md",name:"remark",label:"\u5907\u6CE8",placeholder:"\u8BF7\u8F93\u5165"})]})})}}}]);

View File

@@ -1 +0,0 @@
"use strict";(self.webpackChunkant_design_pro=self.webpackChunkant_design_pro||[]).push([[8280],{20902:function(B,s,e){var d=e(35361),a=e(56929),i=e(50959),m=e(20734),E=e(11527),o=["fieldProps","proFieldProps"],_=function(r,p){var u=r.fieldProps,n=r.proFieldProps,D=(0,a.Z)(r,o);return(0,E.jsx)(m.Z,(0,d.Z)({ref:p,valueType:"textarea",fieldProps:u,proFieldProps:n},D))};s.Z=i.forwardRef(_)},79669:function(B,s,e){e.r(s);var d=e(90228),a=e.n(d),i=e(87999),m=e.n(i),E=e(5e4),o=e(49547),_=e(19014),A=e(20902),r=e(40676),p=e(50959),u=e(11527);s.default=function(n){var D=n.values,h=n.modalOpenState,O=n.onModalOpenState,v=n.onSubmit,c=(0,p.useRef)();return(0,u.jsx)(u.Fragment,{children:(0,u.jsxs)(E.Y,{title:"\u6295\u8D44\u4EBA-\u8F6C\u6302",formRef:c,submitter:{searchConfig:{resetText:"\u91CD\u7F6E"},resetButtonProps:{onClick:function(){var t;(t=c.current)===null||t===void 0||t.resetFields()}}},initialValues:D,onFinish:function(){var F=m()(a()().mark(function t(M){var P;return a()().wrap(function(l){for(;;)switch(l.prev=l.next){case 0:return l.next=2,v(M);case 2:(P=c.current)===null||P===void 0||P.resetFields();case 3:case"end":return l.stop()}},t)}));return function(t){return F.apply(this,arguments)}}(),open:h,onOpenChange:O,children:[(0,u.jsxs)("div",{className:"text-red-600 ",children:[(0,u.jsx)("div",{children:"A\uFF1A\u9700\u8981\u8F6C\u6302\u7684\u6295\u8D44\u4EBA"}),(0,u.jsx)("div",{children:"B\uFF1A\u8F6C\u6302\u8BE5\u6295\u8D44\u4EBA\u540D\u4E0B"}),(0,u.jsx)("div",{children:"\u8BE5\u64CD\u4F5C\u628AA\u8F6C\u6302\u5230B\u540D\u4E0B"})]}),(0,u.jsx)(r.Z,{children:"A\uFF1A\u9700\u8981\u8F6C\u6302\u7684\u6295\u8D44\u4EBA"}),(0,u.jsxs)(o.A.Group,{children:[(0,u.jsx)(_.Z,{rules:[{required:!0,message:"\u8BF7\u8F93\u5165"}],width:"md",name:"userNameSource",label:"\u7528\u6237\u540D(A)",placeholder:"\u8BF7\u8F93\u5165"}),(0,u.jsx)(_.Z,{rules:[{required:!0,message:"\u8BF7\u8F93\u5165"}],width:"md",name:"phoneSource",label:"\u624B\u673A\u53F7(A)",placeholder:"\u8BF7\u8F93\u5165"})]}),(0,u.jsx)(r.Z,{children:"B\uFF1A\u628AA\u8F6C\u6302\u8BE5\u6295\u8D44\u4EBA\u540D\u4E0B"}),(0,u.jsxs)(o.A.Group,{children:[(0,u.jsx)(_.Z,{rules:[{required:!0,message:"\u8BF7\u8F93\u5165"}],width:"md",name:"userNameTarget",label:"\u7528\u6237\u540D(B)",placeholder:"\u8BF7\u8F93\u5165"}),(0,u.jsx)(_.Z,{rules:[{required:!0,message:"\u8BF7\u8F93\u5165"}],width:"md",name:"phoneTarget",label:"\u624B\u673A\u53F7(B)",placeholder:"\u8BF7\u8F93\u5165"})]}),(0,u.jsx)(A.Z,{rules:[{required:!0,message:"\u8BF7\u8F93\u5165"}],width:"md",name:"remark",label:"\u5907\u6CE8",placeholder:"\u8BF7\u8F93\u5165"})]})})}}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -148,7 +148,6 @@ const BasicForm: FC<Record<string, any>> = () => {
name={'ageMan'}
>
<InputNumber
max={65}
addonAfter="岁"
/>
</ProForm.Item>
@@ -336,6 +335,7 @@ const BasicForm: FC<Record<string, any>> = () => {
>
<InputNumber
min={0}
max={100}
addonAfter="%"
/>
</ProForm.Item>

View File

@@ -1,9 +1,9 @@
import { variationPage } from '@/services/finance/index';
import { variationPage, recordExtract } from '@/services/finance/index';
import { exportData } from '@/utils/func';
import React, { useRef, useEffect,useState } from 'react';
import React, { useRef, useEffect, useState } from 'react';
import { useIntl, useAccess } from '@umijs/max';
import { message, Tag, Select } from 'antd';
import { message, Tag, Select, Button } from 'antd';
import { ActionType, PageContainer, ProTable } from '@ant-design/pro-components';
import moneyType from '@/assets/json/moneyType.json'
import { usersPage } from '@/services/user/user';
@@ -11,7 +11,7 @@ import { usersPage } from '@/services/user/user';
const LogTableList: React.FC = () => {
const actionRef = useRef<ActionType>();
const [searchParams, setSearchParams] = useState(null);
const [shopOption, setShopOption] = useState([]);
const searchShop = async (value) => {
@@ -143,9 +143,15 @@ const LogTableList: React.FC = () => {
labelWidth: 120,
defaultCollapsed: false,
}}
toolBarRender={() => [
<Button type="primary" onClick={async () => {
let _res = await recordExtract(searchParams)
exportData(_res, '积分变动记录')
}}></Button>,
]}
request={async (params, sorter, filter) => {
params.pointType = 1
setSearchParams(params)
let { data } = await variationPage(params)
return {
data: data?.records || [],

View File

@@ -1,9 +1,9 @@
import { variationPage } from '@/services/finance/index';
import { variationPage,recordExtract } from '@/services/finance/index';
import { exportData } from '@/utils/func';
import React, { useRef, useEffect, useState } from 'react';
import { useIntl, useAccess } from '@umijs/max';
import { message, Tag, Select } from 'antd';
import { message, Tag, Select,Button } from 'antd';
import { ActionType, PageContainer, ProTable, ProFormSelect } from '@ant-design/pro-components';
import moneyType from '@/assets/json/moneyType.json'
import { usersPage } from '@/services/user/user';
@@ -14,6 +14,10 @@ import { usersPage } from '@/services/user/user';
const LogTableList: React.FC = () => {
const actionRef = useRef<ActionType>();
const [shopOption, setShopOption] = useState([]);
const [searchParams, setSearchParams] = useState(null);
const searchShop = async (value) => {
const { success, data } = await usersPage({
@@ -144,8 +148,15 @@ const LogTableList: React.FC = () => {
labelWidth: 120,
defaultCollapsed: false,
}}
toolBarRender={() => [
<Button type="primary" onClick={async () => {
let _res = await recordExtract(searchParams)
exportData(_res, '积分记录')
}}></Button>,
]}
request={async (params, sorter, filter) => {
params.pointType = 2
setSearchParams(params)
let { data } = await variationPage(params)
return {
data: data?.records || [],

View File

@@ -1,6 +1,6 @@
import { withdrawPage } from '@/services/finance/index';
import { withdrawPage, withdrawExtract } from '@/services/finance/index';
import { usersPage } from '@/services/user/user';
import { exportData } from '@/utils/func';
import React, { useRef, useEffect, useState } from 'react';
import { useIntl, useAccess } from '@umijs/max';
@@ -13,8 +13,11 @@ import TempFormModal from './components/TempFormModal';
const LogTableList: React.FC = () => {
const actionRef = useRef<ActionType>();
const [tempFormModal, setTempFormModal] = useState(false);
const [shopOption, setShopOption] = useState([]);
const [searchParams, setSearchParams] = useState(null);
const searchShop = async (value) => {
const { success, data } = await usersPage({
@@ -225,14 +228,16 @@ const LogTableList: React.FC = () => {
defaultCollapsed: false,
}}
toolBarRender={() => [
<Button type="primary" onClick={() => {
window.location.href = exportLink(searchParams, '/admin/withdraw/export1');
<Button type="primary" onClick={async () => {
let _res = await withdrawExtract(searchParams)
exportData(_res, '提现记录')
}}></Button>,
<Button icon={<UploadOutlined />} onClick={() => {
<Button icon={<UploadOutlined />} onClick={async () => {
setTempFormModal(true)
}}></Button>
]}
request={async (params, sorter, filter) => {
setSearchParams(params)
let { data } = await withdrawPage(params)
return {
data: data?.records || [],

View File

@@ -0,0 +1,86 @@
/*
* @Note:
* @Author: 2058827620@qq.com
* @Date: 2022-04-03 10:53:25
*/
import React, { useState, useEffect } from 'react';
import {
Modal,
Table
} from 'antd';
import { orderList } from '@/services/order';
export default ({ values, modalOpenState, onModalOpenState }) => {
const [config, setConfig] = useState(null);
const [items, setItems] = useState(null);
useEffect(() => {
if (!values?.id) {
return
}
orderList(values?.id).then(({ data }) => {
setItems(data || []);
}).catch(() => {
});
}, [values]);
const columns = [
{
title: '账单号',
dataIndex: 'orderNo',
search: false,
},
{
title: '投资人',
dataIndex: 'shop',
search: false,
render: (_, record) => {
return <>
<div>{record?.username}</div>
<div>{record?.phone}</div>
<div>{record?.level}</div>
</>
},
},
{
title: '类型',
dataIndex: 'typeValue',
search: false,
},
{
title: '金额',
dataIndex: 'points',
search: false,
},
{
title: '创建时间',
dataIndex: 'createTime',
search: false,
},
];
return (
<>
<Modal width="800px" title="分红" open={modalOpenState} onOk={() => {
onModalOpenState(false);
}} onCancel={() => {
onModalOpenState(false)
}}>
<>
<Table
rowKey="id"
columns={columns}
dataSource={items}
pagination={false}
/>
</>
</Modal>
</>
);
};

View File

@@ -0,0 +1,103 @@
/*
* @Note:
* @Author: 2058827620@qq.com
* @Date: 2022-04-03 17:02:15
*/
import { ProForm, ModalForm, ProFormRadio, ProFormText, ProFormTextArea, ProFormMoney, ProFormCaptcha, ProFormInstance } from '@ant-design/pro-components';
import { Button } from 'antd';
import { useEffect, useRef } from 'react';
import { smsCode } from '@/services/user/user'
export default ({ modalOpenState, onModalOpenState, onSubmit }) => {
const restFormRef = useRef<ProFormInstance>();
const handleFinish = async (formValues) => {
await onSubmit(formValues);
restFormRef.current?.resetFields();
};
return (
<>
<ModalForm
title="订单-退单"
formRef={restFormRef}
submitter={{
searchConfig: {
resetText: '重置',
},
resetButtonProps: {
onClick: () => {
restFormRef.current?.resetFields();
},
},
}}
onFinish={handleFinish}
open={modalOpenState}
onOpenChange={onModalOpenState}
>
<ProFormText hidden={true} width="md" name="id" />
<ProForm.Group>
<ProFormText
rules={[{ required: true, message: '请输入!' }]}
width="md"
name="userName"
label="用户名"
placeholder="请输入"
/>
<ProFormText
rules={[{ required: true, message: '请输入!' }]}
width="md"
name="phone"
label="手机号"
placeholder="请输入"
/>
</ProForm.Group>
<ProForm.Group>
<ProFormCaptcha
placeholder={'请输入验证码'}
captchaTextRender={(timing, count) => {
if (timing) {
return `${count} ${'获取验证码'}`;
}
return '获取验证码';
}}
label="验证码"
name="smsCode"
rules={[
{
required: true,
message: '请输入验证码!',
},
]}
onGetCaptcha={async () => {
const { data } = await smsCode();
}}
/>
</ProForm.Group>
<ProForm.Group>
<ProFormText
rules={[{ required: true, message: '请输入!' }]}
width="md"
name="orderNo"
label="订单号"
placeholder="请输入"
/>
</ProForm.Group>
<ProFormTextArea
rules={[{ required: true, message: '请输入' }]}
width="md"
name="remarks"
label="退款原因"
placeholder="请输入"
/>
</ModalForm>
</>
);
};

View File

@@ -1,16 +1,23 @@
import { orderPage, orderExport } from '@/services/order';
import { orderPage, orderExport, orderRefund } from '@/services/order';
import { exportData } from '@/utils/func';
import React, { useRef, useEffect, useState } from 'react';
import { useIntl, useAccess } from '@umijs/max';
import { message, Tag, Image, Button, Select } from 'antd';
import { ActionType, PageContainer, ProTable } from '@ant-design/pro-components';
import BonusFormModal from './components/BonusFormModal';
import EscFormModal from './components/EscFormModal';
const LogTableList: React.FC = () => {
const actionRef = useRef<ActionType>();
const [searchParams, setSearchParams] = useState(null);
const [bonusFormModal, setBonusFormModal] = useState(false);
const [row, setRow] = useState();
const [selectedRowsState, setSelectedRows] = useState([]);
const [escFormModal, setEscFormModal] = useState(false);
const columns = [
{
title: '订单号',
@@ -21,7 +28,8 @@ const LogTableList: React.FC = () => {
return <div className={'flex items-center'}>
{record.orderNo}
<Button type="link" onClick={() => {
setRow(record);
setBonusFormModal(true);
}}></Button>
</div>
}
@@ -161,9 +169,28 @@ const LogTableList: React.FC = () => {
},
];
const escSubmit = async (fields) => {
const { success } = await orderRefund(fields);
if (success) {
message.success('退单成功');
actionRef.current?.reload();
setEscFormModal(false);
}
}
return (
<PageContainer>
<div style={{ width: '100%', float: 'right' }}>
<EscFormModal
modalOpenState={escFormModal}
onModalOpenState={setEscFormModal}
onSubmit={escSubmit}
/>
<BonusFormModal
values={row}
modalOpenState={bonusFormModal}
onModalOpenState={setBonusFormModal}
/>
<ProTable
actionRef={actionRef}
rowKey="id"
@@ -175,7 +202,7 @@ const LogTableList: React.FC = () => {
<Button
danger
onClick={() => {
// setRefundFormModal(true);
setEscFormModal(true);
}}
>
退
@@ -193,6 +220,11 @@ const LogTableList: React.FC = () => {
total: data?.total,
};
}}
rowSelection={{
onChange: (_, selectedRows) => {
setSelectedRows(selectedRows)
},
}}
columns={columns}
/>
</div>

View File

@@ -0,0 +1,112 @@
/*
* @Note:
* @Author: 2058827620@qq.com
* @Date: 2022-04-03 10:53:25
*/
import { incomedayPage } from '@/services/piles';
import React, { useState, useEffect, useRef } from 'react';
import {
Modal,
Table
} from 'antd';
import { ActionType, PageContainer, ProTable } from '@ant-design/pro-components';
import { orderList } from '@/services/order';
export default ({ values, modalOpenState, onModalOpenState }) => {
const [config, setConfig] = useState(null);
const [items, setItems] = useState(null);
const actionRef = useRef<ActionType>();
useEffect(() => {
if (actionRef.current) {
actionRef.current.reload();
}
}, [values]);
const columns = [
{
title: '用户ID',
dataIndex: 'userId',
search: false,
},
{
title: '设备ID',
dataIndex: 'deviceId',
search: false,
},
{
title: '分账日期',
dataIndex: 'incomeDate',
search: false,
},
// {
// title: '服务费金额',
// dataIndex: 'serviceAmount',
// search: false,
// },
// {
// title: '用户分成金额',
// dataIndex: 'userAmount',
// search: false,
// },
// {
// title: '平台分成金额',
// dataIndex: 'platformAmount',
// search: false,
// },
// {
// title: '奖金金额',
// dataIndex: 'bonusAmount',
// search: false,
// },
// {
// title: '平台分成配置',
// dataIndex: 'setConfig',
// search: false,
// },
{
title: '创建时间',
dataIndex: 'createTime',
search: false,
},
];
return (
<>
<Modal width="800px" title="收益列表" open={modalOpenState} onOk={() => {
onModalOpenState(false);
}} onCancel={() => {
onModalOpenState(false)
}}>
<>
<ProTable
actionRef={actionRef}
rowKey="id"
key="logList"
search={{
labelWidth: 120,
}}
request={async (params, sorter, filter) => {
params.deviceNo = values?.deviceNo
params.orderId = values?.orderId
params.userId = values?.userId
let { data } = await incomedayPage(params)
return {
data: data?.records || [],
total: data?.total,
};
}}
columns={columns}
/>
</>
</Modal>
</>
);
};

140
src/pages/piles/index.tsx Normal file
View File

@@ -0,0 +1,140 @@
import { devicePage } from '@/services/piles';
import { exportData } from '@/utils/func';
import React, { useRef, useEffect, useState } from 'react';
import { useIntl, useAccess } from '@umijs/max';
import { message, Tag, Image, Button, Select } from 'antd';
import { ActionType, PageContainer, ProTable } from '@ant-design/pro-components';
import BonusFormModal from './components/BonusFormModal';
const LogTableList: React.FC = () => {
const actionRef = useRef<ActionType>();
const [searchParams, setSearchParams] = useState(null);
const [bonusFormModal, setBonusFormModal] = useState(false);
const [row, setRow] = useState();
const columns = [
{
title: '设备号',
dataIndex: 'deviceNo',
valueType: 'text',
search: false,
render: (_: any, record: any) => {
return <div className={'flex items-center'}>
{record.deviceNo || '-'}
<Button type="link" onClick={() => {
setRow(record);
setBonusFormModal(true);
}}></Button>
</div>
}
},
{
title: '订单号',
dataIndex: 'orderId',
valueType: 'text',
search: false,
},
{
title: '设备类型',
dataIndex: 'deviceType',
valueType: 'text',
search: false,
},
{
title: '设备状态',
dataIndex: 'deviceStatus',
valueType: 'text',
search: false,
render: (_: any, record: any) => {
let color = record.deviceStatus == 1 ? 'volcano' : record.deviceStatus == 2 ? 'orange' : 'red'
return <Tag color={color}>{record.deviceStatus == 1 ? '已安装' : record.deviceStatus == 2 ? '已运营' : '未安装'}</Tag>
},
},
{
title: '设备总收益',
dataIndex: 'income',
valueType: 'text',
search: false,
},
{
title: '安装站点名称',
dataIndex: 'stationName',
valueType: 'text',
search: false,
},
{
title: '安装站点地址',
dataIndex: 'stationAddress',
valueType: 'text',
search: false,
},
{
title: '安装时间',
dataIndex: 'installTime',
valueType: 'text',
search: false,
},
{
title: '交付时间',
dataIndex: 'deliverDate',
valueType: 'text',
search: false,
},
{
title: '分账有效期',
dataIndex: 'paymentValidity',
valueType: 'text',
search: false,
},
{
title: '分账类型',
dataIndex: 'paymentType',
valueType: 'text',
search: false,
render: (_: any, record: any) => {
let color = record.paymentType == 1 ? 'volcano' : 'red'
return <Tag color={color}>{record.paymentType == 1 ? '普通分账' : '不分账'}</Tag>
},
},
{
title: '创建时间',
dataIndex: 'createTime',
valueType: 'text',
search: false,
},
];
return (
<PageContainer>
<div style={{ width: '100%', float: 'right' }}>
<BonusFormModal
values={row}
modalOpenState={bonusFormModal}
onModalOpenState={setBonusFormModal}
/>
<ProTable
actionRef={actionRef}
rowKey="id"
key="logList"
search={{
labelWidth: 120,
}}
request={async (params, sorter, filter) => {
setSearchParams({ ...params });
let { data } = await devicePage(params)
return {
data: data?.records || [],
total: data?.total,
};
}}
columns={columns}
/>
</div>
</PageContainer>
);
};
export default LogTableList;

View File

@@ -0,0 +1,119 @@
/*
* @Note:
* @Author: 2058827620@qq.com
* @Date: 2022-04-03 17:02:15
*/
import { ProForm, ModalForm, ProFormRadio, ProFormText, ProFormTextArea, ProFormMoney, ProFormCaptcha, ProFormInstance } from '@ant-design/pro-components';
import { Button } from 'antd';
import { useEffect, useRef } from 'react';
import { smsCode } from '@/services/user/user'
export default ({ modalOpenState, onModalOpenState, onSubmit }) => {
const restFormRef = useRef<ProFormInstance>();
const handleFinish = async (formValues) => {
await onSubmit(formValues);
restFormRef.current?.resetFields();
};
return (
<>
<ModalForm
title="用户-余额"
formRef={restFormRef}
submitter={{
searchConfig: {
resetText: '重置',
},
resetButtonProps: {
onClick: () => {
restFormRef.current?.resetFields();
},
},
}}
onFinish={handleFinish}
open={modalOpenState}
onOpenChange={onModalOpenState}
>
<ProFormText hidden={true} width="md" name="id" />
<ProForm.Group>
<ProFormText
rules={[{ required: true, message: '请输入!' }]}
width="md"
name="userName"
label="用户名"
placeholder="请输入"
/>
<ProFormText
rules={[{ required: true, message: '请输入!' }]}
width="md"
name="phone"
label="手机号"
placeholder="请输入"
/>
</ProForm.Group>
<ProForm.Group>
<ProFormCaptcha
placeholder={'请输入验证码'}
captchaTextRender={(timing, count) => {
if (timing) {
return `${count} ${'获取验证码'}`;
}
return '获取验证码';
}}
label="验证码"
name="smsCode"
rules={[
{
required: true,
message: '请输入验证码!',
},
]}
onGetCaptcha={async () => {
const { data } = await smsCode();
}}
/>
</ProForm.Group>
<ProForm.Group>
{/* <ProFormRadio.Group
rules={[{ required: true, message: '请输入!' }]}
name="type"
label="类型"
radioType="button"
options={[
{
label: '线下充值',
value: '51',
},
{
label: '余额划扣',
value: '52',
},
]}
/> */}
<ProFormMoney
rules={[{ required: true, message: '请输入!' }]}
label="金额"
name="rechargeAmount"
customSymbol="¥"
/>
</ProForm.Group>
<ProFormTextArea
rules={[{ required: true, message: '请输入' }]}
width="md"
name="remark"
label="备注"
placeholder="请输入"
/>
</ModalForm>
</>
);
};

View File

@@ -0,0 +1,98 @@
/*
* @Note:
* @Author: 2058827620@qq.com
* @Date: 2022-04-03 10:53:25
*/
import React, { useState, useEffect } from 'react';
import {
Modal,
Table
} from 'antd';
import { pageUpAndDownLevel } from '@/services/user/user';
export default ({ values, modalOpenState, onModalOpenState }) => {
const [items2, setitems2] = useState(null);
const [items, setItems] = useState(null);
useEffect(() => {
if (!values?.id) {
return
}
pageUpAndDownLevel(values?.id).then(({ data, success }) => {
if (success) {
setItems(data?.upLevel || []);
setitems2(data?.downLevel)
}
}).catch(() => {
});
}, [values]);
const columns = [
{
title: 'ID',
dataIndex: 'id',
search: false,
},
{
title: '用户',
dataIndex: 'shop',
search: false,
render: (_, record) => {
return <>
<div>{record?.userName}</div>
<div>{record?.phone}</div>
<div>{record?.level}</div>
</>
},
},
{
title: '余额',
dataIndex: 'points2',
search: false,
},
{
title: '收益',
dataIndex: 'points1',
search: false,
},
{
title: '创建时间',
dataIndex: 'createTime',
search: false,
},
];
return (
<>
<Modal width="800px" title="" open={modalOpenState} onOk={() => {
onModalOpenState(false);
}} onCancel={() => {
onModalOpenState(false)
}}>
<>
<div style={{ margin: '15px 0' }}></div>
<Table
rowKey="id"
columns={columns}
dataSource={items}
pagination={false}
/>
<div style={{ margin: '15px 0' }}>
</div>
<Table
rowKey="id"
columns={columns}
dataSource={items2}
pagination={false}
/>
</>
</Modal >
</>
);
};

View File

@@ -9,7 +9,7 @@ import { Divider } from 'antd';
import { useEffect, useRef } from 'react';
import FilesManager from '@/components/FilesManage/index';
export default ({ values, modalOpenState, onModalOpenState, onSubmit }) => {
export default ({ modalOpenState, onModalOpenState, onSubmit }) => {
const restFormRef = useRef<ProFormInstance>();
return (
@@ -27,7 +27,6 @@ export default ({ values, modalOpenState, onModalOpenState, onSubmit }) => {
},
},
}}
initialValues={values}
onFinish={async (e) => {
await onSubmit(e)
restFormRef.current?.resetFields();

View File

@@ -1,4 +1,4 @@
import { usersPage, usersAdd, usersDelete, usersUpdate, updateUserLevel, userTransferHanging, exportUser } from '@/services/user/user';
import { usersPage, usersAdd, usersDelete, usersUpdate, updateUserLevel, userTransferHanging, exportUser, userRecharge } from '@/services/user/user';
import React, { useRef, useEffect, useState } from 'react';
@@ -10,6 +10,12 @@ import { PlusOutlined, LineChartOutlined } from '@ant-design/icons';
import { exportData } from '@/utils/func';
import LevelFormModal from './components/LevelFormModal';
import TempFormModal from './components/TempFormModal';
import ShopModal from './components/ShopModal';
import MoneyFormModal from './components/MoneyFormModal';
/**
* 添加节点
*
@@ -76,6 +82,10 @@ const LogTableList: React.FC = () => {
const [levelFormModal, setLevelFormModal] = useState(false);
const [tempFormModal, setTempFormModal] = useState(false);
const [searchParams, setSearchParams] = useState(null);
const [shopModal, setBonusFormModal] = useState(false);
const [row, setRow] = useState();
const [moneyFormModal, setMoneyFormModal] = useState(false);
// 更改等级
@@ -97,12 +107,30 @@ const LogTableList: React.FC = () => {
}
};
const handleMoney = async (fields) => {
const { success } = await userRecharge(fields);
if (success) {
message.success('余额变更成功');
actionRef.current?.reload();
setMoneyFormModal(false);
}
}
const columns = [
{
title: 'ID',
dataIndex: 'id',
valueType: 'text',
search: false,
render: (_: any, record: any) => {
return <div className={'flex items-center'}>
{record.id}
<Button type="link" onClick={() => {
setRow(record);
setBonusFormModal(true);
}}></Button>
</div>
}
},
{
title: '头像',
@@ -136,7 +164,7 @@ const LogTableList: React.FC = () => {
},
{
title: '收益',
dataIndex: 'points2',
dataIndex: 'points1',
valueType: 'text',
search: false,
},
@@ -224,6 +252,11 @@ const LogTableList: React.FC = () => {
return (
<PageContainer>
<div style={{ width: '100%', float: 'right' }}>
<ShopModal
values={row}
modalOpenState={shopModal}
onModalOpenState={setBonusFormModal}
/>
<LevelFormModal
modalOpenState={levelFormModal}
onModalOpenState={setLevelFormModal}
@@ -234,6 +267,11 @@ const LogTableList: React.FC = () => {
onModalOpenState={setTempFormModal}
onSubmit={handleTemp}
/>
<MoneyFormModal
modalOpenState={moneyFormModal}
onModalOpenState={setMoneyFormModal}
onSubmit={handleMoney}
/>
<ProTable
actionRef={actionRef}
@@ -246,7 +284,7 @@ const LogTableList: React.FC = () => {
<Button
danger
onClick={() => {
setTradeFormModal(true)
setMoneyFormModal(true)
}}
>

View File

@@ -127,7 +127,8 @@ export const errorConfig: RequestConfig = {
// 拦截请求配置,进行个性化处理。
const Authorization = localStorage.getItem('token') || ''
const headers = { Authorization };
config.url.includes('https://');
// let url = config.url;
// const url = config?.url;
let url = `https://iadminapi.zhongshuai2023.com` + config.url;
if (config.url.includes('https://')) {
url = config.url;

View File

@@ -29,3 +29,37 @@ export async function variationPage(body) {
data: body || {},
});
}
export async function withdrawExtract(body) {
return request('/api/userspoints/points/extract/export', {
method: 'POST',
headers: {
'Content-Type': 'application/json;charset=UTF-8',
},
data: body || {},
responseType: 'blob'
});
}
export async function pointsExtract(body) {
return request('/api/userspoints/points/export', {
method: 'POST',
headers: {
'Content-Type': 'application/json;charset=UTF-8',
},
data: body || {},
responseType: 'blob'
});
}
export async function recordExtract(body) {
return request('/api/userspoints/points/record/export', {
method: 'POST',
headers: {
'Content-Type': 'application/json;charset=UTF-8',
},
data: body || {},
responseType: 'blob'
});
}

View File

@@ -17,5 +17,27 @@ export async function orderExport(body) {
'Content-Type': 'application/json;charset=UTF-8',
},
data: body || {},
responseType: 'blob'
});
}
export async function orderList(id) {
return request(`/api/orders/orderIncomeList?id=${id}`, {
method: 'GET',
headers: {
'Content-Type': 'application/json;charset=UTF-8',
},
});
}
// 退单
export async function orderRefund(bodys) {
return request('/api/orders/orderRefund', {
method: 'POST',
headers: {
'Content-Type': 'application/json;charset=UTF-8',
},
data: bodys || {},
});
}

View File

@@ -0,0 +1,22 @@
import { request } from '@umijs/max';
export async function devicePage(body) {
return request('/api/device/page', {
method: 'POST',
headers: {
'Content-Type': 'application/json;charset=UTF-8',
},
data: body || {},
});
}
export async function incomedayPage(body) {
return request('/api/device/incomeday/page', {
method: 'POST',
headers: {
'Content-Type': 'application/json;charset=UTF-8',
},
data: body || {},
});
}

View File

@@ -71,3 +71,33 @@ export async function exportUser(body) {
});
}
export async function pageUpAndDownLevel(id) {
return request(`/api/users/upAndDownLevel?id=${id}`, {
method: 'GET',
headers: {
'Content-Type': 'application/json;charset=UTF-8',
},
});
}
export async function userRecharge(body) {
return request('/api/users/userRecharge', {
method: 'POST',
headers: {
'Content-Type': 'application/json;charset=UTF-8',
},
data: body || {},
});
}
// 获取短信
export async function smsCode() {
return request(`/api/sms/sensitiveSendSms`, {
method: 'GET',
headers: {
'Content-Type': 'application/json;charset=UTF-8',
},
});
}

View File

@@ -19,6 +19,7 @@ export function exportLink(searchParams, api) {
};
export function exportData(_res,name) {
console.log(_res);
// 获取文件的二进制数据
const blob = new Blob([_res], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
// 创建下载链接