部分修改

This commit is contained in:
PC-202306242200\Administrator
2024-09-26 09:37:53 +08:00
parent dd71064775
commit e1647dcdda
60 changed files with 623 additions and 124 deletions

View File

@@ -85,8 +85,8 @@ export default defineConfig({
define: {
'process.env': {
// API_URL: "https://iadminapi.zhongshuai2023.com",
// API_URL: "http://192.168.1.63:1002",
API_URL: "http://192.168.1.54:1002",
API_URL: "http://192.168.1.63:1002",
// API_URL: "http://192.168.1.54:1002",
WS_URL: "ws://lv.com",
STATIC_URL: "http://lv.com",
WEMAP_KEY: 'ZFDBZ-YUTWB-353UZ-NYKEY-JTVIZ-Q3F6X'

File diff suppressed because one or more lines are too long

1
dist/2438.454aa9bd.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.ca339b1f.js"></script>
<script src="/umi.2e978fc8.js"></script>
</body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
"use strict";(self.webpackChunkant_design_pro=self.webpackChunkant_design_pro||[]).push([[4417],{40860:function(w,c,_){_.r(c);var b=_(90228),v=_.n(b),j=_(87999),M=_.n(j),O=_(26068),u=_.n(O),A=_(67825),R=_.n(A),I=_(48305),m=_.n(I),i=_(50959),x=_(98984),y=_(16030),C=_(35384),o=_(11527),S=["type","defaultRender","formItemProps","fieldProps"];c.default=function(){var B={shop_id:"",todate:""},T={username:"",mobile:"",code:""},W=(0,i.useState)(B),h=m()(W,2),H=h[0],J=h[1],K=(0,i.useState)(T),E=m()(K,2),Q=E[0],V=E[1],L=(0,i.useRef)(),U=(0,i.useState)([]),f=m()(U,2),G=f[0],F=f[1],g=(0,i.useState)(null),D=m()(g,2),X=D[0],$=D[1],Z=function(r){shopItems({username:r}).then(function(e){var n,a=e.data,d=[];a==null||(n=a.data)===null||n===void 0||n.map(function(t){t.label="".concat(t.username," ").concat(t.mobile),d.push(t)}),F(d)})},z=[{title:"\u6D3B\u52A8\u540D\u79F0",dataIndex:"title",search:!1},{title:"\u6295\u8D44\u4EBA",dataIndex:"shop_id",render:function(r,e){var n,a;return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)("div",{children:["\u7528\u6237\u540D\uFF1A",e==null||(n=e.shop)===null||n===void 0?void 0:n.username]}),(0,o.jsxs)("div",{children:["\u624B\u673A\u53F7\uFF1A",e==null||(a=e.shop)===null||a===void 0?void 0:a.mobile]})]})},renderFormItem:function(r,e,n){var a=e.type,d=e.defaultRender,t=e.formItemProps,p=e.fieldProps,N=R()(e,S);return(0,o.jsx)(x.Z,u()(u()({},p),{},{allowClear:!0,showSearch:!0,placeholder:"\u8BF7\u8F93\u5165\u7528\u6237\u540D",style:{width:"100%"},filterOption:!1,onSearch:function(P){P&&Z(P)},fieldNames:{label:"label",value:"id"},options:G}))}},{title:"\u8BA4\u9886\u65F6\u95F4",dataIndex:"todate",search:!1},{title:"\u5145\u7535\u6869",dataIndex:"device",search:!1,render:function(r,e){var n=e==null?void 0:e.device.map(function(a){return a.id});return n.join(",")}},{title:"\u521B\u5EFA\u65F6\u95F4",dataIndex:"created_at",search:!1}];return(0,o.jsx)(y._z,{ghost:!0,children:(0,o.jsx)(o.Fragment,{children:(0,o.jsx)(C.Z,{actionRef:L,rowKey:"id",search:{defaultCollapsed:!1},toolBarRender:function(){return[]},request:function(){var l=M()(v()().mark(function r(e,n,a){var d,t,p;return v()().wrap(function(s){for(;;)switch(s.prev=s.next){case 0:return $(u()({token:""},e)),s.next=3,shopActivityItems813(u()(u()({},e),{},{sorter:n,filter:a}));case 3:return d=s.sent,t=d.data,p=d.success,s.abrupt("return",{data:(t==null?void 0:t.items)||[],total:t==null?void 0:t.total,success:p});case 7:case"end":return s.stop()}},r)}));return function(r,e,n){return l.apply(this,arguments)}}(),columns:z})})})}}}]);

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

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
"use strict";(self.webpackChunkant_design_pro=self.webpackChunkant_design_pro||[]).push([[5829],{85751:function(h,s,_){_.r(s);var p=_(26068),l=_.n(p),M=_(15558),P=_.n(M),c=_(48305),i=_.n(c),j=_(94675),A=_(953),m=_(50159),u=_(50959),v=_(75201),b=_(59806),n=_(11527);s.default=function(o){var C=o.modalOpenState,U=o.onModalOpenState,B=o.onSubmit,x=(0,u.useState)([]),r=i()(x,2),e=r[0],E=r[1],f=(0,u.useState)(!1),D=i()(f,2),R=D[0],T=D[1],L={onRemove:function(t){var a=e.indexOf(t),d=e.slice();d.splice(a,1),E(d)},beforeUpload:function(t){return E([].concat(P()(e),[t])),!1},fileList:e};return(0,n.jsx)(n.Fragment,{children:(0,n.jsx)(j.Z,{title:"\u5BFC\u5165\u63D0\u73B0\u7ED3\u679C",open:C,onOk:B,footer:function(t,a){var d=a.OkBtn,S=a.CancelBtn;return(0,n.jsx)(n.Fragment,{children:(0,n.jsx)(d,{})})},children:(0,n.jsxs)("div",{className:"flex",children:[(0,n.jsx)(A.Z,l()(l()({className:"mr-6"},L),{},{children:(0,n.jsx)(m.ZP,{icon:(0,n.jsx)(v.Z,{}),children:"\u9009\u62E9\u6587\u4EF6"})})),(0,n.jsx)(m.ZP,{icon:(0,n.jsx)(b.Z,{}),children:"\u4E0B\u8F7D\u6A21\u677F"})]})})})}}}]);

View File

@@ -0,0 +1 @@
"use strict";(self.webpackChunkant_design_pro=self.webpackChunkant_design_pro||[]).push([[5829],{85751:function(T,i,_){_.r(i);var p=_(26068),u=_.n(p),O=_(15558),f=_.n(O),M=_(48305),m=_.n(M),P=_(94675),j=_(953),r=_(50159),E=_(50959),v=_(75201),C=_(59806),n=_(11527);i.default=function(l){var A=l.modalOpenState,b=l.onModalOpenState,h=l.onSubmit,x=(0,E.useState)([]),c=m()(x,2),a=c[0],s=c[1],B=(0,E.useState)(!1),D=m()(B,2),S=D[0],I=D[1],U={onRemove:function(e){var t=a.indexOf(e),d=a.slice();d.splice(t,1),s(d)},beforeUpload:function(e){return s([].concat(f()(a),[e])),!1},fileList:a},L=function(){var e=new FormData;a.forEach(function(t){e.append("file",t)}),h(e),s([])};return(0,n.jsx)(n.Fragment,{children:(0,n.jsx)(P.Z,{title:"\u5BFC\u5165\u63D0\u73B0\u7ED3\u679C",open:A,onCancel:function(){b(!1)},onOk:L,footer:function(e,t){var d=t.OkBtn,R=t.CancelBtn;return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(R,{}),(0,n.jsx)(d,{})]})},children:(0,n.jsxs)("div",{className:"flex",children:[(0,n.jsx)(j.Z,u()(u()({className:"mr-6"},U),{},{children:(0,n.jsx)(r.ZP,{icon:(0,n.jsx)(v.Z,{}),children:"\u9009\u62E9\u6587\u4EF6"})})),(0,n.jsx)(r.ZP,{icon:(0,n.jsx)(C.Z,{}),onClick:function(){window.open("https://zhongshuai-test.oss-cn-beijing.aliyuncs.com/upload/20240911/11ecca80-3f06-43c9-9c63-e9a9e4ef0173.xlsx")},children:"\u4E0B\u8F7D\u6A21\u677F"})]})})})}}}]);

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(b,E,u){u.r(E);var g=u(48305),r=u.n(g),m=u(50959),l=u(94675),o=u(33917),v=u(92790),s=u(11527);E.default=function(h){var i=h.values,y=h.modalOpenState,d=h.onModalOpenState,C=(0,m.useState)(null),p=r()(C,2),P=p[0],T=p[1],O=(0,m.useState)(null),c=r()(O,2),D=c[0],f=c[1];(0,m.useEffect)(function(){i!=null&&i.id&&(0,v.QN)(i==null?void 0:i.id).then(function(_){var n=_.data;f(n||[])}).catch(function(){})},[i]);var j=[{title:"id",dataIndex:"id",search:!1},{title:"\u6295\u8D44\u4EBA",dataIndex:"shop",search:!1,render:function(n,t){return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{children:["\u7528\u6237\u540D\uFF1A",t==null?void 0:t.userName]}),(0,s.jsxs)("div",{children:["\u624B\u673A\u53F7\uFF1A",t==null?void 0:t.phone]}),(0,s.jsxs)("div",{children:["\u7B49\u7EA7\uFF1A",t==null?void 0:t.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,s.jsx)(s.Fragment,{children:(0,s.jsx)(l.Z,{width:"800px",title:"\u5206\u7EA2",open:y,onOk:function(){d(!1)},onCancel:function(){d(!1)},children:(0,s.jsx)(s.Fragment,{children:(0,s.jsx)(o.Z,{rowKey:"id",columns:j,dataSource:D,pagination:!1})})})})}},92790:function(b,E,u){u.d(E,{KP:function(){return O},Lp:function(){return C},QN:function(){return y},a5:function(){return P},aT:function(){return v},nr:function(){return j},sb:function(){return D},tX:function(){return h}});var g=u(90228),r=u.n(g),m=u(87999),l=u.n(m),o=u(7485);function v(n){return s.apply(this,arguments)}function s(){return s=l()(r()().mark(function n(t){return r()().wrap(function(a){for(;;)switch(a.prev=a.next){case 0:return a.abrupt("return",(0,o.request)("/api/orders/page",{method:"POST",headers:{"Content-Type":"application/json;charset=UTF-8"},data:t||{}}));case 1:case"end":return a.stop()}},n)})),s.apply(this,arguments)}function h(n){return i.apply(this,arguments)}function i(){return i=l()(r()().mark(function n(t){return r()().wrap(function(a){for(;;)switch(a.prev=a.next){case 0:return a.abrupt("return",(0,o.request)("/api/orders/export",{method:"POST",headers:{"Content-Type":"application/json;charset=UTF-8"},data:t||{},responseType:"blob"}));case 1:case"end":return a.stop()}},n)})),i.apply(this,arguments)}function y(n){return d.apply(this,arguments)}function d(){return d=l()(r()().mark(function n(t){return r()().wrap(function(a){for(;;)switch(a.prev=a.next){case 0:return a.abrupt("return",(0,o.request)("/api/orders/orderIncomeList?id=".concat(t),{method:"GET",headers:{"Content-Type":"application/json;charset=UTF-8"}}));case 1:case"end":return a.stop()}},n)})),d.apply(this,arguments)}function C(n){return p.apply(this,arguments)}function p(){return p=l()(r()().mark(function n(t){return r()().wrap(function(a){for(;;)switch(a.prev=a.next){case 0:return a.abrupt("return",(0,o.request)("/api/orders/orderRefund",{method:"POST",headers:{"Content-Type":"application/json;charset=UTF-8"},data:t||{}}));case 1:case"end":return a.stop()}},n)})),p.apply(this,arguments)}function P(){return T.apply(this,arguments)}function T(){return T=l()(r()().mark(function n(){return r()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,o.request)("/api/orders/getWeiXinCollect",{method:"GET",headers:{"Content-Type":"application/json;charset=UTF-8"}}));case 1:case"end":return e.stop()}},n)})),T.apply(this,arguments)}function O(){return c.apply(this,arguments)}function c(){return c=l()(r()().mark(function n(){return r()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,o.request)("/api/orders/getCollect",{method:"GET",headers:{"Content-Type":"application/json;charset=UTF-8"}}));case 1:case"end":return e.stop()}},n)})),c.apply(this,arguments)}function D(){return f.apply(this,arguments)}function f(){return f=l()(r()().mark(function n(){return r()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,o.request)("/api/orders/getBalance",{method:"GET",headers:{"Content-Type":"application/json;charset=UTF-8"}}));case 1:case"end":return e.stop()}},n)})),f.apply(this,arguments)}function j(){return _.apply(this,arguments)}function _(){return _=l()(r()().mark(function n(){return r()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",(0,o.request)("/api/orders/getZhiFuBaoCollect",{method:"GET",headers:{"Content-Type":"application/json;charset=UTF-8"}}));case 1:case"end":return e.stop()}},n)})),_.apply(this,arguments)}}}]);

View File

@@ -1 +0,0 @@
"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

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

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([[5096],{34927:function(j,u,e){var r=e(35361),i=e(56929),p=e(89558),a=e(47186),m=e(50959),E=e(50756),P=e(20734),D=e(11527),d=["fieldProps","options","radioType","layout","proFieldProps","valueEnum"],s=m.forwardRef(function(_,n){var l=_.fieldProps,v=_.options,A=_.radioType,R=_.layout,h=_.proFieldProps,f=_.valueEnum,c=(0,i.Z)(_,d);return(0,D.jsx)(P.Z,(0,r.Z)((0,r.Z)({valueType:A==="button"?"radioButton":"radio",ref:n,valueEnum:(0,p.h)(f,void 0)},c),{},{fieldProps:(0,r.Z)({options:v,layout:R},l),proFieldProps:h,filedConfig:{customLightMode:!0}}))}),O=m.forwardRef(function(_,n){var l=_.fieldProps,v=_.children;return(0,D.jsx)(a.ZP,(0,r.Z)((0,r.Z)({},l),{},{ref:n,children:v}))}),M=(0,E.G)(O,{valuePropName:"checked",ignoreWidth:!0}),o=M;o.Group=s,o.Button=a.ZP.Button,o.displayName="ProFormComponent",u.Z=o},20902:function(j,u,e){var r=e(35361),i=e(56929),p=e(50959),a=e(20734),m=e(11527),E=["fieldProps","proFieldProps"],P=function(d,s){var O=d.fieldProps,M=d.proFieldProps,o=(0,i.Z)(d,E);return(0,m.jsx)(a.Z,(0,r.Z)({ref:s,valueType:"textarea",fieldProps:O,proFieldProps:M},o))};u.Z=p.forwardRef(P)},62791:function(j,u,e){e.r(u);var r=e(90228),i=e.n(r),p=e(26068),a=e.n(p),m=e(87999),E=e.n(m),P=e(48305),D=e.n(P),d=e(5e4),s=e(19014),O=e(49547),M=e(34927),o=e(20902),_=e(50959),n=e(11527);u.default=function(l){var v=l.modalOpenState,A=l.onModalOpenState,R=l.onSubmit,h=(0,_.useRef)(),f=(0,_.useState)(""),c=D()(f,2),F=c[0],W=c[1],L=function(){var C=E()(i()().mark(function t(b){var B;return i()().wrap(function(T){for(;;)switch(T.prev=T.next){case 0:return T.next=2,R(a()(a()({},b),{},{pemType:F}));case 2:(B=h.current)===null||B===void 0||B.resetFields();case 3:case"end":return T.stop()}},t)}));return function(b){return C.apply(this,arguments)}}();return(0,n.jsx)(n.Fragment,{children:(0,n.jsxs)(d.Y,{title:"\u7528\u6237-\u89D2\u8272",formRef:h,submitter:{searchConfig:{resetText:"\u91CD\u7F6E"},resetButtonProps:{onClick:function(){var t;(t=h.current)===null||t===void 0||t.resetFields()}}},onFinish:L,open:v,onOpenChange:A,children:[(0,n.jsx)(s.Z,{hidden:!0,width:"md",name:"id"}),(0,n.jsxs)(O.A.Group,{children:[(0,n.jsx)(s.Z,{rules:[{required:!0,message:"\u8BF7\u8F93\u5165!"}],width:"md",name:"userName",label:"\u7528\u6237\u540D",placeholder:"\u8BF7\u8F93\u5165"}),(0,n.jsx)(s.Z,{rules:[{required:!0,message:"\u8BF7\u8F93\u5165!"}],width:"md",name:"phone",label:"\u624B\u673A\u53F7",placeholder:"\u8BF7\u8F93\u5165"})]}),(0,n.jsx)(M.Z.Group,{name:"pemType",options:[{label:"\u4E0D\u80FD\u63A8\u5E7F",value:"0"},{label:"\u53EF\u4EE5\u63A8\u5E7F",value:"1"}],label:"\u63A8\u5E7F\u6743\u9650",rules:[{required:!1,message:"\u8BF7\u9009\u62E9\u63A8\u5E7F\u6743\u9650"}],fieldProps:{onChange:function(t){W(t.target.value)}}}),(0,n.jsx)(o.Z,{rules:[{required:!0,message:"\u8BF7\u8F93\u5165"}],width:"md",name:"remark",label:"\u5907\u6CE8",placeholder:"\u8BF7\u8F93\u5165"})]})})}}}]);

View File

@@ -0,0 +1 @@
"use strict";(self.webpackChunkant_design_pro=self.webpackChunkant_design_pro||[]).push([[5722],{34927:function(j,u,e){var r=e(35361),i=e(56929),p=e(89558),a=e(47186),m=e(50959),E=e(50756),P=e(20734),D=e(11527),d=["fieldProps","options","radioType","layout","proFieldProps","valueEnum"],s=m.forwardRef(function(_,n){var l=_.fieldProps,v=_.options,A=_.radioType,R=_.layout,h=_.proFieldProps,f=_.valueEnum,c=(0,i.Z)(_,d);return(0,D.jsx)(P.Z,(0,r.Z)((0,r.Z)({valueType:A==="button"?"radioButton":"radio",ref:n,valueEnum:(0,p.h)(f,void 0)},c),{},{fieldProps:(0,r.Z)({options:v,layout:R},l),proFieldProps:h,filedConfig:{customLightMode:!0}}))}),O=m.forwardRef(function(_,n){var l=_.fieldProps,v=_.children;return(0,D.jsx)(a.ZP,(0,r.Z)((0,r.Z)({},l),{},{ref:n,children:v}))}),M=(0,E.G)(O,{valuePropName:"checked",ignoreWidth:!0}),o=M;o.Group=s,o.Button=a.ZP.Button,o.displayName="ProFormComponent",u.Z=o},20902:function(j,u,e){var r=e(35361),i=e(56929),p=e(50959),a=e(20734),m=e(11527),E=["fieldProps","proFieldProps"],P=function(d,s){var O=d.fieldProps,M=d.proFieldProps,o=(0,i.Z)(d,E);return(0,m.jsx)(a.Z,(0,r.Z)({ref:s,valueType:"textarea",fieldProps:O,proFieldProps:M},o))};u.Z=p.forwardRef(P)},28947:function(j,u,e){e.r(u);var r=e(90228),i=e.n(r),p=e(26068),a=e.n(p),m=e(87999),E=e.n(m),P=e(48305),D=e.n(P),d=e(5e4),s=e(19014),O=e(49547),M=e(34927),o=e(20902),_=e(50959),n=e(11527);u.default=function(l){var v=l.modalOpenState,A=l.onModalOpenState,R=l.onSubmit,h=(0,_.useRef)(),f=(0,_.useState)(""),c=D()(f,2),F=c[0],W=c[1],L=function(){var C=E()(i()().mark(function t(b){var B;return i()().wrap(function(T){for(;;)switch(T.prev=T.next){case 0:return T.next=2,R(a()(a()({},b),{},{roleType:F}));case 2:(B=h.current)===null||B===void 0||B.resetFields();case 3:case"end":return T.stop()}},t)}));return function(b){return C.apply(this,arguments)}}();return(0,n.jsx)(n.Fragment,{children:(0,n.jsxs)(d.Y,{title:"\u7528\u6237-\u89D2\u8272",formRef:h,submitter:{searchConfig:{resetText:"\u91CD\u7F6E"},resetButtonProps:{onClick:function(){var t;(t=h.current)===null||t===void 0||t.resetFields()}}},onFinish:L,open:v,onOpenChange:A,children:[(0,n.jsx)(s.Z,{hidden:!0,width:"md",name:"id"}),(0,n.jsxs)(O.A.Group,{children:[(0,n.jsx)(s.Z,{rules:[{required:!0,message:"\u8BF7\u8F93\u5165!"}],width:"md",name:"userName",label:"\u7528\u6237\u540D",placeholder:"\u8BF7\u8F93\u5165"}),(0,n.jsx)(s.Z,{rules:[{required:!0,message:"\u8BF7\u8F93\u5165!"}],width:"md",name:"phone",label:"\u624B\u673A\u53F7",placeholder:"\u8BF7\u8F93\u5165"})]}),(0,n.jsx)(M.Z.Group,{name:"roleType",options:[{label:"\u666E\u901A\u7528\u6237",value:"0"},{label:"\u516C\u53F8\u7528\u6237",value:"1"}],label:"\u7528\u6237\u89D2\u8272",rules:[{required:!1,message:"\u8BF7\u9009\u62E9\u7528\u6237\u89D2\u8272"}],fieldProps:{onChange:function(t){W(t.target.value)}}}),(0,n.jsx)(o.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

@@ -14,6 +14,8 @@ import { exportLink } from '@/utils/func';
import AuthConsumer from '@/components/Authority';
import { activity10CarUserList } from '@/services/activity/index';
// import services from '@/services/admin';
// const { shopActivityItems, shopDeleteItems } = services.ShopActivityController;
@@ -100,9 +102,9 @@ export default () => {
dataIndex: 'shop_id',
render: (_, record) => {
return <>
<div>{record?.shop?.username}</div>
<div>{record?.shop?.mobile}</div>
<div>{record?.vip}</div>
<div>{record?.usersInfo?.userName}</div>
<div>{record?.usersInfo?.phone}</div>
<div>{record?.usersInfo?.level}</div>
</>
},
renderFormItem: (
@@ -143,11 +145,8 @@ export default () => {
},
{
title: '有效期',
dataIndex: 'type',
dataIndex: 'expirationDate',
search: false,
render: (_, record) => {
return record?.valid_time ? dayjs(record?.valid_time * 1000).format('YYYY-MM-DD') : ''
},
},
{
title: '客户资料',
@@ -226,13 +225,13 @@ export default () => {
]}
request={async (params, sorter, filter) => {
setSearchParams({ token: '', ...params });
const { data, success } = await shopActivityItems({
const { data, success } = await activity10CarUserList({
...params,
sorter,
filter,
});
return {
data: data?.items || [],
data: data?.records || [],
total: data?.total,
success,
};

View File

@@ -4,6 +4,8 @@ import {
PageContainer,
ProTable,
} from '@ant-design/pro-components';
import { activity10s1UserList } from '@/services/activity/index';
export default () => {
@@ -152,13 +154,13 @@ export default () => {
]}
request={async (params, sorter, filter) => {
setSearchParams({ token: '', ...params });
const { data, success } = await shopActivityItems813({
const { data, success } = await activity10s1UserList({
...params,
sorter,
filter,
});
return {
data: data?.items || [],
data: data?.records || [],
total: data?.total,
success,
};

View File

@@ -21,7 +21,7 @@ const LogTableList: React.FC = () => {
const searchShop = async (value) => {
const { success, data } = await usersPage({
userName: value
userId: value
});
data.records.map((i) => {
i.userName = i.userName + ' ' + i.phone
@@ -56,7 +56,7 @@ const LogTableList: React.FC = () => {
{...fieldProps}
allowClear
showSearch
placeholder="请输入用户名"
placeholder="请输入用户名或手机号"
style={{ width: "100%" }}
filterOption={false}
onSearch={
@@ -81,18 +81,27 @@ const LogTableList: React.FC = () => {
valueType: 'text',
search: false,
},
// {
// title: '当前余额',
// dataIndex: 'curPoints',
// valueType: 'text',
// search: false,
// },
{
title: '当前余额',
dataIndex: 'curPoints',
valueType: 'text',
search: false,
},
{
title: '余额变动',
dataIndex: 'points',
valueType: 'text',
search: false,
},
{
title: '类型',
dataIndex: 'pointType',
valueType: 'text',
search: false,
render: (_: any, record: any) => {
return _ == 1 ? '收益' : '余额'
},
},
{
title: '来源',
dataIndex: 'sourceType',
@@ -160,6 +169,12 @@ const LogTableList: React.FC = () => {
/>
},
},
{
title: '备注',
dataIndex: 'remarks',
valueType: 'text',
search: false,
},
{
title: '创建时间',
dataIndex: 'createTime',

View File

@@ -6,13 +6,16 @@
import { Divider, Modal, Upload, Button, UploadProps, UploadFile } from 'antd';
import { useEffect, useRef, useState } from 'react';
import { DownloadOutlined,UploadOutlined } from '@ant-design/icons';
import { DownloadOutlined, UploadOutlined } from '@ant-design/icons';
export default ({ modalOpenState, onModalOpenState, onSubmit }) => {
const [fileList, setFileList] = useState<UploadFile[]>([]);
const [fileList, setFileList] = useState([]);
const [uploading, setUploading] = useState(false);
const props: UploadProps = {
onRemove: (file) => {
const index = fileList.indexOf(file);
@@ -22,16 +25,27 @@ export default ({ modalOpenState, onModalOpenState, onSubmit }) => {
},
beforeUpload: (file) => {
setFileList([...fileList, file]);
return false;
},
fileList,
};
const handleUpload = () => {
const formData = new FormData();
fileList.forEach((file) => {
formData.append('file', file);
});
onSubmit(formData)
setFileList([])
};
return (
<>
<Modal title="导入提现结果" open={modalOpenState} onOk={onSubmit} footer={(_, { OkBtn, CancelBtn }) => (
<Modal title="导入提现结果" open={modalOpenState} onCancel={() => {
onModalOpenState(false)
}} onOk={handleUpload} footer={(_, { OkBtn, CancelBtn }) => (
<>
<CancelBtn />
<OkBtn />
</>
)}>
@@ -39,7 +53,9 @@ export default ({ modalOpenState, onModalOpenState, onSubmit }) => {
<Upload className='mr-6' {...props}>
<Button icon={<UploadOutlined />}></Button>
</Upload>
<Button icon={<DownloadOutlined />}></Button>
<Button icon={<DownloadOutlined />} onClick={() => {
window.open('https://zhongshuai-test.oss-cn-beijing.aliyuncs.com/upload/20240911/11ecca80-3f06-43c9-9c63-e9a9e4ef0173.xlsx');
}}></Button>
</div>
</Modal>
</>

View File

@@ -1,4 +1,4 @@
import { withdrawPage, withdrawExtract } from '@/services/finance/index';
import { withdrawPage, withdrawExtract, importUsersPointsExtract } from '@/services/finance/index';
import { usersPage } from '@/services/user/user';
import { exportData } from '@/utils/func';
@@ -32,8 +32,9 @@ const LogTableList: React.FC = () => {
const handleTemp = async (fields) => {
return
const { success } = await userTransferHanging(fields);
console.log(fields);
const { success } = await importUsersPointsExtract(fields);
if (success) {
message.success('导入成功');
actionRef.current?.reload();

View File

@@ -32,8 +32,8 @@ export default ({ values, modalOpenState, onModalOpenState }) => {
const columns = [
{
title: '账单号',
dataIndex: 'orderNo',
title: 'id',
dataIndex: 'id',
search: false,
},
{
@@ -42,7 +42,7 @@ export default ({ values, modalOpenState, onModalOpenState }) => {
search: false,
render: (_, record) => {
return <>
<div>{record?.username}</div>
<div>{record?.userName}</div>
<div>{record?.phone}</div>
<div>{record?.level}</div>
</>

View File

@@ -1,4 +1,4 @@
import { orderPage, orderExport, orderRefund } from '@/services/order';
import { orderPage, orderExport, orderRefund, getWeiXinCollect, getCollect, getBalance,getZhiFuBaoCollect } from '@/services/order';
import { exportData } from '@/utils/func';
import React, { useRef, useEffect, useState } from 'react';
import { useIntl, useAccess } from '@umijs/max';
@@ -17,10 +17,19 @@ const LogTableList: React.FC = () => {
const [row, setRow] = useState();
const [selectedRowsState, setSelectedRows] = useState([]);
const [escFormModal, setEscFormModal] = useState(false);
const [count1, setCount1] = useState({});
const [count2, setCount2] = useState({});
const [count3, setCount3] = useState({});
const [count4, setCount4] = useState({});
const access = useAccess()
const count = useState({})
const [shopOption, setShopOption] = useState([]);
const searchShop = async (value) => {
const { success, data } = await usersPage({
@@ -80,7 +89,7 @@ const LogTableList: React.FC = () => {
{...fieldProps}
allowClear
showSearch
placeholder="请输入用户名"
placeholder="请输入用户名或手机号"
style={{ width: "100%" }}
filterOption={false}
onSearch={
@@ -243,44 +252,44 @@ const LogTableList: React.FC = () => {
<Col span={6}>
<Card>
<div></div>
<div>: {count?.all0?.money}</div>
<div>: {count3?.amountCount}</div>
<div className='flex '>
<div>{count?.all0?.order_num}</div>
<div>{count3?.orderCount}</div>
<div className='w-6'></div>
<div>{count?.all0?.goods_num}</div>
<div>{count3?.goodsCount}</div>
</div>
</Card>
</Col>
<Col span={6}>
<Card>
<div></div>
<div>: {count?.all1?.money}</div>
<div>: {count1?.amountCount}</div>
<div className='flex '>
<div>{count?.all1?.order_num}</div>
<div>{count1?.orderCount}</div>
<div className='w-6'></div>
<div>{count?.all1?.goods_num}</div>
<div>{count1?.goodsCount}</div>
</div>
</Card>
</Col>
<Col span={6}>
<Card>
<div></div>
<div>: {count?.all3?.money}</div>
<div>: {count2?.amountCount}</div>
<div className='flex '>
<div>{count?.all3?.order_num}</div>
<div>{count2?.orderCount}</div>
<div className='w-6'></div>
<div>{count?.all3?.goods_num}</div>
<div>{count2?.goodsCount}</div>
</div>
</Card>
</Col>
<Col span={6}>
<Card>
<div>线</div>
<div>: {count?.all4?.money}</div>
<div></div>
<div>: {count4?.amountCount}</div>
<div className='flex '>
<div>{count?.all4?.order_num}</div>
<div>{count4?.orderCount}</div>
<div className='w-6'></div>
<div>{count?.all4?.goods_num}</div>
<div>{count4?.goodsCount}</div>
</div>
</Card>
</Col>
@@ -323,6 +332,20 @@ const LogTableList: React.FC = () => {
request={async (params, sorter, filter) => {
setSearchParams({ ...params });
let { data } = await orderPage(params)
let _count1 = await getWeiXinCollect()
let _count2 = await getBalance()
let _count3 = await getCollect()
let _count4 = await getZhiFuBaoCollect()
// let _count4 = await getWeiXinCollect()
setCount1(_count1.data);
setCount2(_count2.data);
setCount3(_count3.data);
setCount4(_count4.data);
return {
data: data?.records || [],
total: data?.total,

View File

@@ -16,7 +16,7 @@ const LogTableList: React.FC = () => {
const [shopOption, setShopOption] = useState([]);
const searchShop = async (value) => {
const { success, data } = await usersPage({
userName: value
userId: value
});
data.records.map((i) => {
i.userName = i.userName + ' ' + i.phone
@@ -40,6 +40,7 @@ const LogTableList: React.FC = () => {
<div>ID:{record?.userId}</div>
<div>{record?.userName}</div>
<div>{record?.phone}</div>
<div>{record?.level}</div>
</div>
},
renderFormItem: (
@@ -51,7 +52,7 @@ const LogTableList: React.FC = () => {
{...fieldProps}
allowClear
showSearch
placeholder="请输入用户名"
placeholder="请输入用户名或手机号"
style={{ width: "100%" }}
filterOption={false}
onSearch={
@@ -70,21 +71,14 @@ const LogTableList: React.FC = () => {
/>
},
},
{
title: '用户手机号',
dataIndex: 'userInfo',
valueType: 'text',
search: true,
hidden: true
},
{
title: '支付类型',
dataIndex: 'orderPlatform',
dataIndex: 'payType',
valueType: 'text',
search: true,
render: (_: any, record: any) => {
let color = record.orderPlatform == 1 ? 'volcano' : record.orderPlatform == 2 ? 'orange' : 'red'
return <Tag color={color}>{record.orderPlatform == 1 ? '钱包' : record.orderPlatform == 2 ? '钱包' : record.orderPlatform == 3 ? '支付宝' : '-'}</Tag>
let color = record.payType == 1 ? 'volcano' : record.payType == 2 ? 'orange' : 'red'
return <Tag color={color}>{record.payType == 1 ? '支付宝' : record.payType == 2 ? '微信' : '-'}</Tag>
},
renderFormItem: (
_,
@@ -108,6 +102,16 @@ const LogTableList: React.FC = () => {
/>
},
},
{
title: '业务类型',
dataIndex: 'businessType',
valueType: 'text',
search: false,
render: (_: any, record: any) => {
let color = record.businessType == 1 ? 'volcano' : record.businessType == 2 ? 'orange' : 'red'
return <Tag color={color}>{record.businessType == 1 ? '钱包充值' : record.businessType == 2 ? '购买商品' : '-'}</Tag>
}
},
{
title: '支付通道',
dataIndex: 'platform',
@@ -115,7 +119,7 @@ const LogTableList: React.FC = () => {
search: true,
render: (_: any, record: any) => {
let color = record.platform == 1 ? 'volcano' : record.platform == 2 ? 'orange' : 'red'
return <Tag color={color}>{record.platform == 1 ? '上海汇付' : record.platform == 2 ? '支付' : '微信'}</Tag>
return <Tag color={color}>{record.platform == 1 ? '上海汇付' : record.platform == 2 ? '京东支付' : record.platform == 3 ? '微信' : record.platform == 4 ? '金钱吧' : ''}</Tag>
},
renderFormItem: (
_,
@@ -126,6 +130,7 @@ const LogTableList: React.FC = () => {
{ label: '上海汇付', value: 1 },
{ label: '支付宝', value: 2 },
{ label: '微信', value: 3 },
{ label: '金钱吧', value: 4 },
]
return <Select
{...fieldProps}
@@ -147,7 +152,7 @@ const LogTableList: React.FC = () => {
search: true,
render: (_: any, record: any) => {
let colors = ['gold', 'green', 'volcano', 'red', 'magenta']
return <Tag color={colors[record.status]}>{record.status == 0 ? '待支付' : record.status == 1 ? '支付成功' : record.status == -1 ? '取消' : record.status == -2 ? '退款' : ''}</Tag>
return <Tag color={colors[record.status]}>{record.status == 0 ? '待支付' : record.status == 1 ? '处理中' : record.status == 2 ? '支付完成' : record.status == -1 ? '支付失败' : ''}</Tag>
},
renderFormItem: (
_,
@@ -156,9 +161,9 @@ const LogTableList: React.FC = () => {
) => {
const statusMap = [
{ label: '待支付', value: 0 },
{ label: '支付成功', value: 1 },
{ label: '取消', value: -1 },
{ label: '退款中', value: -2 },
{ label: '处理中', value: 1 },
{ label: '支付完成', value: 2 },
{ label: '支付失败', value: -1 },
]
return <Select
{...fieldProps}

View File

@@ -19,6 +19,7 @@ const LogTableList: React.FC = () => {
const [shopOption, setShopOption] = useState([]);
const handleTemp = async (fields) => {
const { success } = await importDeviceData(fields);
if (success) {
message.success('导入成功');
@@ -29,7 +30,7 @@ const LogTableList: React.FC = () => {
const searchShop = async (value) => {
const { success, data } = await usersPage({
userName: value
userId: value
});
data.records.map((i) => {
i.userName = i.userName + ' ' + i.phone
@@ -54,8 +55,8 @@ const LogTableList: React.FC = () => {
}
},
{
title: '订单ID',
dataIndex: 'orderId',
title: '订单',
dataIndex: 'orderNo',
valueType: 'text',
search: true,
},
@@ -65,9 +66,9 @@ const LogTableList: React.FC = () => {
valueType: 'text',
render: (_: any, record: any) => {
return <div>
<div>ID:{record?.userId}</div>
<div>{record?.userName}</div>
<div>{record?.phone}</div>
<div>{record?.level}</div>
</div>
},
renderFormItem: (
@@ -79,7 +80,7 @@ const LogTableList: React.FC = () => {
{...fieldProps}
allowClear
showSearch
placeholder="请输入用户名"
placeholder="请输入用户名或手机号"
style={{ width: "100%" }}
filterOption={false}
onSearch={
@@ -99,11 +100,10 @@ const LogTableList: React.FC = () => {
},
},
{
title: '用户手机号',
dataIndex: 'userInfo',
title: '设备添加天数',
dataIndex: 'addDate',
valueType: 'text',
search: true,
hidden: true
search: false,
},
{
title: '设备类型',
@@ -125,12 +125,6 @@ const LogTableList: React.FC = () => {
return <Tag color={color}>{record.deviceStatus == 1 ? '已安装' : record.deviceStatus == 2 ? '已运营' : '未安装'}</Tag>
},
},
{
title: '设备总收益',
dataIndex: 'income',
valueType: 'text',
search: false,
},
{
title: '安装站点名称',
dataIndex: 'stationName',

View File

@@ -10,7 +10,7 @@ import {
} from 'antd';
import { pageUpAndDownLevel } from '@/services/user/user';
import { pageUpAndDownLevel,findFormUserId } from '@/services/user/user';
export default ({ values, modalOpenState, onModalOpenState }) => {
@@ -22,10 +22,10 @@ export default ({ values, modalOpenState, onModalOpenState }) => {
if (!values?.id) {
return
}
pageUpAndDownLevel(values?.id).then(({ data, success }) => {
findFormUserId(values?.id).then(({ data, success }) => {
if (success) {
setItems(data?.upLevel || []);
setitems2(data?.downLevel)
setItems(data?.userUp || []);
setitems2(data?.userDown)
}
}).catch(() => {

View File

@@ -0,0 +1,96 @@
/*
* @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, useState } from 'react';
import { smsCode } from '@/services/user/user'
export default ({ modalOpenState, onModalOpenState, onSubmit }) => {
const restFormRef = useRef<ProFormInstance>();
const [pemType, setmenuType] = useState<any>('');
const handleFinish = async (formValues) => {
await onSubmit({ ...formValues, pemType });
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>
<ProFormRadio.Group
name="pemType"
options={[
{
label: '不能推广',
value: '0',
},
{
label: '可以推广',
value: '1',
},
]}
label={'推广权限'}
rules={[
{
required: false,
message: '请选择推广权限',
},
]}
fieldProps={{
onChange: (e) => {
setmenuType(e.target.value);
},
}}
/>
<ProFormTextArea
rules={[{ required: true, message: '请输入' }]}
width="md"
name="remark"
label="备注"
placeholder="请输入"
/>
</ModalForm>
</>
);
};

View File

@@ -0,0 +1,96 @@
/*
* @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, useState } from 'react';
import { smsCode } from '@/services/user/user'
export default ({ modalOpenState, onModalOpenState, onSubmit }) => {
const restFormRef = useRef<ProFormInstance>();
const [roleType, setmenuType] = useState<any>('');
const handleFinish = async (formValues) => {
await onSubmit({ ...formValues, roleType });
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>
<ProFormRadio.Group
name="roleType"
options={[
{
label: '普通用户',
value: '0',
},
{
label: '公司用户',
value: '1',
},
]}
label={'用户角色'}
rules={[
{
required: false,
message: '请选择用户角色',
},
]}
fieldProps={{
onChange: (e) => {
setmenuType(e.target.value);
},
}}
/>
<ProFormTextArea
rules={[{ required: true, message: '请输入' }]}
width="md"
name="remark"
label="备注"
placeholder="请输入"
/>
</ModalForm>
</>
);
};

View File

@@ -1,4 +1,4 @@
import { usersPage, usersAdd, usersDelete, usersUpdate, updateUserLevel, userTransferHanging, exportUser, userRecharge, accountChange } from '@/services/user/user';
import { usersPage, usersAdd, usersDelete, usersUpdate, updateUserLevel, userTransferHanging, exportUser, userRecharge, accountChange, updateUserRoleType, updateUserPemType } from '@/services/user/user';
import React, { useRef, useEffect, useState } from 'react';
@@ -13,6 +13,8 @@ import TempFormModal from './components/TempFormModal';
import ShopModal from './components/ShopModal';
import MoneyFormModal from './components/MoneyFormModal';
import TradeFormModal from './components/TradeFormModal';
import UpRole from './components/UpRole';
import UpPem from './components/UpPem';
@@ -83,8 +85,27 @@ const LogTableList: React.FC = () => {
const [row, setRow] = useState();
const [moneyFormModal, setMoneyFormModal] = useState(false);
const [tradeFormModal, setTradeFormModal] = useState(false);
const [upRoleDatd, setUpRoleDatd] = useState(false);
const [upPemData, setUpPemData] = useState(false);
const access = useAccess()
const [shopOption, setShopOption] = useState([]);
const searchShop = async (value) => {
const { success, data } = await usersPage({
userId: value
});
data.records.map((i) => {
i.userName = i.userName + ' ' + i.phone
})
setShopOption(data.records)
}
// 更改等级
const handleLevel = async (fields) => {
const { success } = await updateUserLevel({ ...fields });
@@ -113,6 +134,25 @@ const LogTableList: React.FC = () => {
}
}
const handleUpRole = async (fields) => {
const { success } = await updateUserRoleType(fields);
if (success) {
message.success('角色修改成功');
actionRef.current?.reload();
setUpRoleDatd(false);
}
}
const handleUpPem = async (fields) => {
const { success } = await updateUserPemType(fields);
if (success) {
message.success('推广权限修改成功');
actionRef.current?.reload();
setUpPemData(false);
}
}
const columns = [
{
title: 'ID',
@@ -136,22 +176,86 @@ const LogTableList: React.FC = () => {
search: false,
},
{
title: '用户',
dataIndex: 'userName',
title: '用户信息',
dataIndex: 'userId',
valueType: 'text',
search: true,
render: (_: any, record: any) => {
return <div>
<div>{record?.nickName}</div>
<div>{record?.userName}</div>
<div>{record?.phone}</div>
<div>{record?.level}</div>
</div>
},
renderFormItem: (
_,
{ type, defaultRender, formItemProps, fieldProps, ...rest },
form,
) => {
return <Select
{...fieldProps}
allowClear
showSearch
placeholder="请输入用户名或手机号"
style={{ width: "100%" }}
filterOption={false}
onSearch={
(e) => {
if (!e) {
return;
}
searchShop(e);
}
}
fieldNames={{
label: "userName",
value: "id"
}}
options={shopOption}
/>
},
},
{
title: '用户昵称',
dataIndex: 'nickName',
valueType: 'text',
search: true,
},
{
title: '手机号',
dataIndex: 'phone',
title: '邀请人信息',
dataIndex: 'formUserId',
valueType: 'text',
search: true,
render: (_: any, record: any) => {
return <div>
<div>{record?.formUser?.nickName}</div>
<div>{record?.formUser?.userName}</div>
<div>{record?.formUser?.phone}</div>
<div>{record?.formUser?.level}</div>
</div>
},
renderFormItem: (
_,
{ type, defaultRender, formItemProps, fieldProps, ...rest },
form,
) => {
return <Select
{...fieldProps}
allowClear
showSearch
placeholder="请输入用户名或手机号"
style={{ width: "100%" }}
filterOption={false}
onSearch={
(e) => {
if (!e) {
return;
}
searchShop(e);
}
}
fieldNames={{
label: "userName",
value: "id"
}}
options={shopOption}
/>
},
},
{
title: '钱包',
@@ -165,18 +269,30 @@ const LogTableList: React.FC = () => {
valueType: 'text',
search: false,
},
{
title: '等级',
dataIndex: 'level',
valueType: 'text',
search: false,
},
{
title: '邀请码',
dataIndex: 'shareCode',
valueType: 'text',
search: true,
},
{
title: '角色类型',
dataIndex: 'userRole',
valueType: 'text',
search: false,
render: (_, record) => {
return _ == 0 ? '普通用户' : '公司用户'
}
},
{
title: '推广权限',
dataIndex: 'pemType',
valueType: 'text',
search: false,
render: (_, record) => {
return _ == 0 ? '不能邀请' : '可以邀请'
}
},
{
title: '状态',
dataIndex: 'status',
@@ -195,6 +311,12 @@ const LogTableList: React.FC = () => {
return record.qrCode ? <Image src={record.qrCode} width={60} height={60}></Image> : '-'
}
},
{
title: '备注',
dataIndex: 'remark',
valueType: 'text',
search: false,
},
{
title: '创建时间',
dataIndex: 'createTime',
@@ -288,6 +410,19 @@ const LogTableList: React.FC = () => {
onSubmit={handleMoney}
/>
<UpRole
modalOpenState={upRoleDatd}
onModalOpenState={setUpRoleDatd}
onSubmit={handleUpRole}
/>
<UpPem
modalOpenState={upPemData}
onModalOpenState={setUpPemData}
onSubmit={handleUpPem}
/>
<ProTable
actionRef={actionRef}
rowKey="id"
@@ -297,6 +432,24 @@ const LogTableList: React.FC = () => {
defaultCollapsed: false,
}}
toolBarRender={() => [
<Button
danger
hidden={!access.hasPerms('/api/users/updateUserPemType')}
onClick={() => {
setUpPemData(true)
}}
>
广
</Button>,
<Button
danger
hidden={!access.hasPerms('/api/users/updateUserRoleType')}
onClick={() => {
setUpRoleDatd(true)
}}
>
</Button>,
<Button
danger
hidden={!access.hasPerms('/api/users/userRecharge')}

View File

@@ -40,4 +40,22 @@ export async function deleteBatchByIds(body) {
});
}
export async function activity10s1UserList(body) {
return request('/api/activity/activity10s1UserList', {
method: 'POST',
headers: {
'contentcategory-Type': 'application/json;charset=UTF-8',
},
data: body || {},
});
}
export async function activity10CarUserList(body) {
return request('/api/activity/activity10CarUserList', {
method: 'POST',
headers: {
'contentcategory-Type': 'application/json;charset=UTF-8',
},
data: body || {},
});
}

View File

@@ -62,4 +62,13 @@ export async function recordExtract(body) {
}
export async function importUsersPointsExtract(body) {
return request('/api/userspoints/importUsersPointsExtract', {
method: 'POST',
headers: {
'Content-Type': 'application/json;charset=UTF-8',
},
data: body || {},
responseType: 'blob'
});
}

View File

@@ -41,3 +41,39 @@ export async function orderRefund(bodys) {
});
}
export async function getWeiXinCollect() {
return request('/api/orders/getWeiXinCollect', {
method: 'GET',
headers: {
'Content-Type': 'application/json;charset=UTF-8',
},
});
}
export async function getCollect() {
return request('/api/orders/getCollect', {
method: 'GET',
headers: {
'Content-Type': 'application/json;charset=UTF-8',
},
});
}
export async function getBalance() {
return request('/api/orders/getBalance', {
method: 'GET',
headers: {
'Content-Type': 'application/json;charset=UTF-8',
},
});
}
export async function getZhiFuBaoCollect() {
return request('/api/orders/getZhiFuBaoCollect', {
method: 'GET',
headers: {
'Content-Type': 'application/json;charset=UTF-8',
},
});
}

View File

@@ -80,6 +80,16 @@ export async function pageUpAndDownLevel(id) {
});
}
export async function findFormUserId(id) {
return request(`/api/users/findFormUserId?id=${id}`, {
method: 'GET',
headers: {
'Content-Type': 'application/json;charset=UTF-8',
},
});
}
export async function userRecharge(body) {
return request('/api/users/userRecharge', {
method: 'POST',
@@ -111,3 +121,23 @@ export async function accountChange(body) {
});
}
export async function updateUserRoleType(body) {
return request(`/api/users/updateUserRoleType`, {
method: 'POST',
headers: {
'Content-Type': 'application/json;charset=UTF-8',
},
data: body || {},
});
}
export async function updateUserPemType(body) {
return request(`/api/users/updateUserPemType`, {
method: 'POST',
headers: {
'Content-Type': 'application/json;charset=UTF-8',
},
data: body || {},
});
}