Browse Source

feat: 利好后台

lihao
nili 3 months ago
parent
commit
00a41ac581
  1. 7
      config/routes.ts
  2. 72
      dist/343.7ff141fb.async.js
  3. 1
      dist/_umi_route_preload_helper.55e8b291.js
  4. 1
      dist/_umi_route_preload_helper.dcc239ae.js
  5. 4
      dist/index.html
  6. 1
      dist/p__AdminManagement.16f4328b.async.js
  7. 1
      dist/p__AdminManagement.3daf3600.async.js
  8. 1
      dist/p__AdvRecordListV2.7d43902a.async.js
  9. 1
      dist/p__AdvRecordListV2.c183b707.async.js
  10. 1
      dist/p__App__AppManagement.7b88d7c4.async.js
  11. 1
      dist/p__App__AppManagement.8c2eb6d0.async.js
  12. 1
      dist/p__MoneyManagement.7ad34f8d.async.js
  13. 2
      dist/p__Proxy__ProxyAdvRecordListV2.2e1ec116.async.js
  14. 1
      dist/p__Proxy__ProxyUserManagement.7f03f17a.async.js
  15. 1
      dist/p__Proxy__ProxyUserManagement.f7d74b28.async.js
  16. 1
      dist/p__SuperAdmin.92290426.async.js
  17. 1
      dist/p__SuperAdmin.e8eab676.async.js
  18. 1
      dist/p__UserManagement.5e827801.async.js
  19. 1
      dist/p__UserManagement.7a38d351.async.js
  20. 94
      dist/umi.613afa6c.js
  21. 6
      src/app.tsx
  22. 14
      src/pages/AdminManagement.tsx
  23. 8
      src/pages/AdvRecordListV2.tsx
  24. 166
      src/pages/App/CashConfigForm.tsx
  25. 28
      src/pages/UserManagement.tsx

7
config/routes.ts

@ -55,13 +55,6 @@ export default [
access: 'canAdmin', access: 'canAdmin',
component: './UserManagement', component: './UserManagement',
}, },
{
path: '/money/:code',
name: '提现管理',
icon: 'smile',
access: 'canAdmin',
component: './MoneyManagement',
},
{ {
path: '/app/:code', path: '/app/:code',
name: '应用列表', name: '应用列表',

72
dist/247.3fe8fb10.async.js → dist/343.7ff141fb.async.js

File diff suppressed because one or more lines are too long

1
dist/_umi_route_preload_helper.55e8b291.js

@ -0,0 +1 @@
!function(){"use strict";var t="/".replace(/([^/])$/,"$1/"),e=location.pathname,n=e.startsWith(t)&&decodeURI("/".concat(e.slice(t.length)));if(n){var a=document,c=a.head,r=a.createElement.bind(a),i=function(t,e,n){var a,c=e.r[t]||(null===(a=Object.entries(e.r).find((function(e){var n=e[0];return new RegExp("^".concat(n.replace(/\/:[^/]+/g,"/[^/]+").replace("/*","/.+"),"$")).test(t)})))||void 0===a?void 0:a[1]);return null==c?void 0:c.map((function(t){var a=e.f[t][1],c=e.f[t][0];return{type:c.split(".").pop(),url:"".concat(n.publicPath).concat(c),attrs:[["data-".concat(e.b),"".concat(e.p,":").concat(a)]]}}))}(n,{"p":"ant-design-pro","b":"webpack","f":[["51.a2ea1b3b.async.js",51],["134.6fc81d91.async.js",134],["169.57647c7d.async.js",169],["p__Welcome.61596037.async.js",185],["t__plugin-layout__Layout.6cae69f5.chunk.css",301],["t__plugin-layout__Layout.4594a64b.async.js",301],["343.7ff141fb.async.js",343],["p__User__Login__index.9d3ab92e.async.js",366],["p__DeviceOwnerApp.c61abcd9.async.js",371],["390.41467286.async.js",390],["393.38316f72.async.js",393],["397.fb5f72c1.async.js",397],["p__SuperAdmin.e8eab676.async.js",455],["p__Proxy__ProxyUserManagement.f7d74b28.async.js",526],["531.4c68f902.async.js",531],["539.49b7b156.async.js",539],["p__AdvRecordListV2.c183b707.async.js",542],["p__Bind.b6ee068f.async.js",557],["559.016bfdbb.async.js",559],["p__404.0c100574.async.js",571],["635.20e45f05.async.js",635],["p__App__AppManagement.8c2eb6d0.async.js",731],["p__AdminManagement.3daf3600.async.js",816],["822.4ba8fa04.async.js",822],["841.614ef4c0.async.js",841],["p__AdvRecordList.fc092f59.async.js",857],["p__UserManagement.7a38d351.async.js",903],["905.6e225d1b.async.js",905],["930.fca7adbf.async.js",930],["942.561ac28f.async.js",942],["p__Proxy__ProxyAdvRecordListV2.2e1ec116.async.js",990]],"r":{"/*":[19,27],"/":[1,4,5,18,20,27],"/welcome":[1,2,3,10,18,28,4,5,20,27],"/super":[0,1,2,6,12,14,15,23,27,28,4,5,18,20],"/adminList":[0,1,2,22,23,29,4,5,18,20,27],"/bind":[1,2,10,11,17,18,28,4,5,20,27],"/appList":[0,1,2,6,11,14,15,21,23,27,28,4,5,18,20],"/advList/:code":[0,1,2,14,15,18,23,24,25,27,28,4,5,20],"/advListV2/:code":[0,1,2,14,15,16,18,23,24,27,28,4,5,20],"/user/:code":[0,1,2,14,15,23,26,27,28,4,5,18,20],"/app/:code":[0,1,2,8,14,15,18,23,24,27,28,4,5,20],"/user/login":[1,2,7,14,23],"/proxy/advListV2/:code":[0,1,2,14,15,18,23,24,27,28,30,4,5,20],"/proxy/user/:code":[0,1,2,13,14,15,23,27,28,4,5,18,20]}},{publicPath:"/"});null==i||i.forEach((function(t){var e,n=t.type,a=t.url;if("js"===n)(e=r("script")).src=a,e.async=!0;else{if("css"!==n)return;(e=r("link")).href=a,e.rel="preload",e.as="style"}t.attrs.forEach((function(t){e.setAttribute(t[0],t[1]||"")})),c.appendChild(e)}))}}();

1
dist/_umi_route_preload_helper.dcc239ae.js

@ -1 +0,0 @@
!function(){"use strict";var t="/".replace(/([^/])$/,"$1/"),e=location.pathname,n=e.startsWith(t)&&decodeURI("/".concat(e.slice(t.length)));if(n){var a=document,c=a.head,r=a.createElement.bind(a),i=function(t,e,n){var a,c=e.r[t]||(null===(a=Object.entries(e.r).find((function(e){var n=e[0];return new RegExp("^".concat(n.replace(/\/:[^/]+/g,"/[^/]+").replace("/*","/.+"),"$")).test(t)})))||void 0===a?void 0:a[1]);return null==c?void 0:c.map((function(t){var a=e.f[t][1],c=e.f[t][0];return{type:c.split(".").pop(),url:"".concat(n.publicPath).concat(c),attrs:[["data-".concat(e.b),"".concat(e.p,":").concat(a)]]}}))}(n,{"p":"ant-design-pro","b":"webpack","f":[["51.a2ea1b3b.async.js",51],["134.6fc81d91.async.js",134],["169.57647c7d.async.js",169],["p__Welcome.61596037.async.js",185],["p__MoneyManagement.7ad34f8d.async.js",190],["247.3fe8fb10.async.js",247],["t__plugin-layout__Layout.6cae69f5.chunk.css",301],["t__plugin-layout__Layout.4594a64b.async.js",301],["p__User__Login__index.9d3ab92e.async.js",366],["p__DeviceOwnerApp.c61abcd9.async.js",371],["390.41467286.async.js",390],["393.38316f72.async.js",393],["397.fb5f72c1.async.js",397],["p__SuperAdmin.92290426.async.js",455],["p__Proxy__ProxyUserManagement.7f03f17a.async.js",526],["531.4c68f902.async.js",531],["539.49b7b156.async.js",539],["p__AdvRecordListV2.7d43902a.async.js",542],["p__Bind.b6ee068f.async.js",557],["559.016bfdbb.async.js",559],["p__404.0c100574.async.js",571],["635.20e45f05.async.js",635],["p__App__AppManagement.7b88d7c4.async.js",731],["p__AdminManagement.16f4328b.async.js",816],["822.4ba8fa04.async.js",822],["841.614ef4c0.async.js",841],["p__AdvRecordList.fc092f59.async.js",857],["p__UserManagement.5e827801.async.js",903],["905.6e225d1b.async.js",905],["930.fca7adbf.async.js",930],["942.561ac28f.async.js",942],["p__Proxy__ProxyAdvRecordListV2.edf1fabd.async.js",990]],"r":{"/*":[20,28],"/":[1,6,7,19,21,28],"/welcome":[1,2,3,11,19,29,6,7,21,28],"/super":[0,1,2,5,13,15,16,24,28,29,6,7,19,21],"/adminList":[0,1,2,23,24,30,6,7,19,21,28],"/bind":[1,2,11,12,18,19,29,6,7,21,28],"/appList":[0,1,2,5,12,15,16,22,24,28,29,6,7,19,21],"/advList/:code":[0,1,2,15,16,19,24,25,26,28,29,6,7,21],"/advListV2/:code":[0,1,2,15,16,17,19,24,25,28,29,6,7,21],"/user/:code":[0,1,2,15,16,24,27,28,29,6,7,19,21],"/money/:code":[0,1,2,4,15,16,24,28,29,6,7,19,21],"/app/:code":[0,1,2,9,15,16,19,24,25,28,29,6,7,21],"/user/login":[1,2,8,15,24],"/proxy/advListV2/:code":[0,1,2,15,16,19,24,25,28,29,31,6,7,21],"/proxy/user/:code":[0,1,2,14,15,16,24,28,29,6,7,19,21]}},{publicPath:"/"});null==i||i.forEach((function(t){var e,n=t.type,a=t.url;if("js"===n)(e=r("script")).src=a,e.async=!0;else{if("css"!==n)return;(e=r("link")).href=a,e.rel="preload",e.as="style"}t.attrs.forEach((function(t){e.setAttribute(t[0],t[1]||"")})),c.appendChild(e)}))}}();

4
dist/index.html

@ -7,10 +7,10 @@
<title>Ant Design Pro</title> <title>Ant Design Pro</title>
<link rel="stylesheet" href="/umi.1ca9308c.css"> <link rel="stylesheet" href="/umi.1ca9308c.css">
<script async src="/scripts/loading.js"></script> <script async src="/scripts/loading.js"></script>
<script src="/_umi_route_preload_helper.dcc239ae.js"></script> <script src="/_umi_route_preload_helper.55e8b291.js"></script>
</head> </head>
<body> <body>
<div id="root"></div> <div id="root"></div>
<script src="/umi.fe244e1a.js"></script> <script src="/umi.613afa6c.js"></script>
</body> </body>
</html> </html>

1
dist/p__AdminManagement.16f4328b.async.js

File diff suppressed because one or more lines are too long

1
dist/p__AdminManagement.3daf3600.async.js

File diff suppressed because one or more lines are too long

1
dist/p__AdvRecordListV2.7d43902a.async.js

File diff suppressed because one or more lines are too long

1
dist/p__AdvRecordListV2.c183b707.async.js

File diff suppressed because one or more lines are too long

1
dist/p__App__AppManagement.7b88d7c4.async.js

File diff suppressed because one or more lines are too long

1
dist/p__App__AppManagement.8c2eb6d0.async.js

File diff suppressed because one or more lines are too long

1
dist/p__MoneyManagement.7ad34f8d.async.js

File diff suppressed because one or more lines are too long

2
dist/p__Proxy__ProxyAdvRecordListV2.edf1fabd.async.js → dist/p__Proxy__ProxyAdvRecordListV2.2e1ec116.async.js

File diff suppressed because one or more lines are too long

1
dist/p__Proxy__ProxyUserManagement.7f03f17a.async.js

File diff suppressed because one or more lines are too long

1
dist/p__Proxy__ProxyUserManagement.f7d74b28.async.js

File diff suppressed because one or more lines are too long

1
dist/p__SuperAdmin.92290426.async.js

File diff suppressed because one or more lines are too long

1
dist/p__SuperAdmin.e8eab676.async.js

File diff suppressed because one or more lines are too long

1
dist/p__UserManagement.5e827801.async.js

File diff suppressed because one or more lines are too long

1
dist/p__UserManagement.7a38d351.async.js

File diff suppressed because one or more lines are too long

94
dist/umi.fe244e1a.js → dist/umi.613afa6c.js

File diff suppressed because one or more lines are too long

6
src/app.tsx

@ -93,12 +93,6 @@ const matrixMenu = (app: API.MatrixAppBo): MenuDataItem => {
access: 'canAdmin', access: 'canAdmin',
component: './UserManagement', component: './UserManagement',
}, },
{
name: '提现管理',
path: '/money/' + app.code,
access: 'canAdmin',
component: './MoneyManagement',
},
], ],
}; };
}; };

14
src/pages/AdminManagement.tsx

@ -73,8 +73,8 @@ const AdminManagement = () => {
case 3: case 3:
roleText = '游戏主'; roleText = '游戏主';
break; break;
case 4: case 5:
roleText = '设备主'; roleText = '代理';
break; break;
default: default:
roleText = ''; roleText = '';
@ -127,9 +127,6 @@ const AdminManagement = () => {
case 3: case 3:
roleText = '游戏主'; roleText = '游戏主';
break; break;
case 4:
roleText = '设备主';
break;
case 5: case 5:
roleText = '代理'; roleText = '代理';
break; break;
@ -262,12 +259,6 @@ const AdminManagement = () => {
/> />
</TabPane> </TabPane>
)} )}
<TabPane tab="设备主" key="2">
<Table
columns={deviceColumns}
dataSource={data.filter((x) => x.role === 4 && x.hide === 0)}
/>
</TabPane>
<TabPane tab="代理" key="3"> <TabPane tab="代理" key="3">
<Table <Table
columns={deviceColumns} columns={deviceColumns}
@ -324,7 +315,6 @@ const AdminManagement = () => {
<Select.Option disabled={currentUser?.role && currentUser.role > 2} value={3}> <Select.Option disabled={currentUser?.role && currentUser.role > 2} value={3}>
</Select.Option> </Select.Option>
<Select.Option value={4}></Select.Option>
<Select.Option value={5}></Select.Option> <Select.Option value={5}></Select.Option>
</Select> </Select>
</Form.Item> </Form.Item>

8
src/pages/AdvRecordListV2.tsx

@ -111,14 +111,6 @@ const AdvRecordListV2: React.FC = () => {
return x / 100; return x / 100;
}, },
}, },
{
title: '金币',
dataIndex: 'ecpmReal',
hideInSearch: true,
renderText: (x) => {
return x;
},
},
{ {
title: '设备', title: '设备',
dataIndex: 'device', dataIndex: 'device',

166
src/pages/App/CashConfigForm.tsx

@ -1,6 +1,5 @@
import { getAppNormalConfig, saveNormalConfig } from '@/services/matrix/matrixAppConfigController'; import { getAppNormalConfig, saveNormalConfig } from '@/services/matrix/matrixAppConfigController';
import { InfoCircleOutlined, MinusCircleOutlined, PlusOutlined } from '@ant-design/icons'; import { Form, InputNumber, Modal, Switch } from 'antd';
import { Button, Col, Form, Input, InputNumber, Modal, Row, Switch, Tooltip } from 'antd';
import React, { useEffect } from 'react'; import React, { useEffect } from 'react';
export type AppNormalConfigFormProps = { export type AppNormalConfigFormProps = {
@ -40,23 +39,6 @@ const AppNormalConfigForm: React.FC<AppNormalConfigFormProps> = (props) => {
props.onSubmit(); props.onSubmit();
}; };
const formItemLayout = {
labelCol: {
xs: { span: 24 },
sm: { span: 6 },
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 20 },
},
};
const formItemLayoutWithOutLabel = {
wrapperCol: {
xs: { span: 24, offset: 10 },
sm: { span: 20, offset: 6 },
},
};
return ( return (
<Modal title="编辑" visible={props.updateModalOpen} onOk={handleOk} onCancel={handleCancel}> <Modal title="编辑" visible={props.updateModalOpen} onOk={handleOk} onCancel={handleCancel}>
<Form labelCol={{ span: 6 }} wrapperCol={{ span: 18 }} form={form} onFinish={handleSaveApp}> <Form labelCol={{ span: 6 }} wrapperCol={{ span: 18 }} form={form} onFinish={handleSaveApp}>
@ -69,152 +51,6 @@ const AppNormalConfigForm: React.FC<AppNormalConfigFormProps> = (props) => {
<Form.Item name="tencentDailyLimit" label="广告每日次数"> <Form.Item name="tencentDailyLimit" label="广告每日次数">
<InputNumber /> <InputNumber />
</Form.Item> </Form.Item>
<Form.List name="moneyLadder">
{(fields, { add, remove }) => (
<>
<Form.Item
// {...(index === 0 ? formItemLayout : formItemLayoutWithOutLabel)}
label={
<>
<span style={{ marginLeft: 4 }}>
<Tooltip title="用户可选的提现金额档位,单位分">
<InfoCircleOutlined />
</Tooltip>
</span>
</>
}
required={false}
>
<Row>
{fields.map((field) => (
<Form.Item
// {...(index === 0 ? formItemLayout : formItemLayoutWithOutLabel)}
label={''}
required={false}
key={field.key}
>
<Row align={'stretch'} style={{ marginRight: 10 }}>
<Form.Item
{...field}
validateTrigger={['onChange', 'onBlur']}
rules={[
{
required: true,
message: '请输入金额或者删除',
},
]}
noStyle
>
<InputNumber placeholder="金额,单位分" />
</Form.Item>
<MinusCircleOutlined
style={{ marginLeft: 4 }}
className="dynamic-delete-button"
onClick={() => remove(field.name)}
/>
</Row>
</Form.Item>
))}
</Row>
<Form.Item {...formItemLayoutWithOutLabel}>
<Button type="dashed" onClick={() => add()} icon={<PlusOutlined />}>
</Button>
</Form.Item>
</Form.Item>
</>
)}
</Form.List>
<Form.Item
name="noAuditMoney"
label={
<>
<span style={{ marginLeft: 4 }}>
<Tooltip title="低于此金额的提现申请将会自动审核通过,单位分">
<InfoCircleOutlined />
</Tooltip>
</span>
</>
}
>
<InputNumber placeholder="单位分" style={{ width: '60%' }} />
</Form.Item>
<Form.Item name="qqUrl" label="QQ群链接">
<Input />
</Form.Item>
<Form.Item
name="dayLimit"
label={
<>
<span style={{ marginLeft: 4 }}>
<Tooltip title="同个账号或同个支付宝每日最多提现的次数">
<InfoCircleOutlined />
</Tooltip>
</span>
</>
}
>
<InputNumber style={{ width: '60%' }} />
</Form.Item>
<Form.Item
name="maxIncomeEachVideo"
label={
<>
<span style={{ marginLeft: 4 }}>
<Tooltip title="看一条视频最多能获得的钱,单位分">
<InfoCircleOutlined />
</Tooltip>
</span>
</>
}
>
<InputNumber style={{ width: '60%' }} />
</Form.Item>
<Form.Item name="defaultRate" label={<></>}>
<InputNumber style={{ width: '60%' }} />
</Form.Item>
<Form.List name="dayRates">
{(fields, { add, remove }) => (
<>
{fields.map(({ key, name }, index) => (
<>
<Form.Item
{...(index === 0 ? formItemLayout : formItemLayoutWithOutLabel)}
label={index === 0 ? '特殊日分成比例' : ''}
required={false}
key={key}
>
<Row key={key} align="stretch" gutter={16}>
<Col span={8}>
<Form.Item name={[name, 'day']} rules={[{ required: true }]}>
<Input placeholder="Day" />
</Form.Item>
</Col>
<Col span={8}>
<Form.Item name={[name, 'rate']} rules={[{ required: true }]}>
<Input placeholder="Rate" />
</Form.Item>
</Col>
<Col>
<MinusCircleOutlined onClick={() => remove(name)} />
</Col>
</Row>
</Form.Item>
</>
))}
<Form.Item {...formItemLayoutWithOutLabel}>
<Button type="dashed" onClick={() => add()} block>
</Button>
</Form.Item>
</>
)}
</Form.List>
</Form> </Form>
</Modal> </Modal>
); );

28
src/pages/UserManagement.tsx

@ -3,7 +3,6 @@ import { ActionType, PageContainer, ProColumns, ProTable } from '@ant-design/pro
import { useParams } from '@umijs/max'; import { useParams } from '@umijs/max';
import { Flex, Popconfirm, Tag } from 'antd'; import { Flex, Popconfirm, Tag } from 'antd';
import { useEffect, useRef } from 'react'; import { useEffect, useRef } from 'react';
import { cent2Yuan, formatIncome } from '../utils/numberUtils';
import UserInfo from './User/UserInfo'; import UserInfo from './User/UserInfo';
const UserManagement: React.FC = () => { const UserManagement: React.FC = () => {
@ -38,16 +37,6 @@ const UserManagement: React.FC = () => {
return <UserInfo data={r} />; return <UserInfo data={r} />;
}, },
}, },
{
title: '支付宝名称',
dataIndex: 'name',
hideInSearch: true,
},
{
title: '支付宝账号',
dataIndex: 'aliPayAccount',
hideInSearch: true,
},
{ {
title: '微信', title: '微信',
dataIndex: 'wxOpenId', dataIndex: 'wxOpenId',
@ -59,22 +48,7 @@ const UserManagement: React.FC = () => {
return <Tag color="red"></Tag>; return <Tag color="red"></Tag>;
}, },
}, },
{
title: '总收益(元)',
hideInSearch: true,
dataIndex: 'income',
renderText: (r: number) => {
return formatIncome(r);
},
},
{
title: '已提现(元)',
hideInSearch: true,
dataIndex: 'realMoney',
renderText: (r: number) => {
return cent2Yuan(r);
},
},
{ {
title: '注册时间', title: '注册时间',
hideInSearch: true, hideInSearch: true,

Loading…
Cancel
Save