Commit 013e9bc2 authored by 吕小武's avatar 吕小武

Merge branch 'uat' into 'pro'

Uat See merge request !3
parents 75caabcf 58898c34
{ {
"files": { "files": {
"main.css": "//r.51gjj.com/webpublic/inclass/static/css/main.f28907b4.chunk.css", "main.css": "//r.51gjj.com/webpublic/inclass/static/css/main.5e7f706b.chunk.css",
"main.js": "//r.51gjj.com/webpublic/inclass/static/js/main.26dee19f.chunk.js", "main.js": "//r.51gjj.com/webpublic/inclass/static/js/main.921c1179.chunk.js",
"runtime-main.js": "//r.51gjj.com/webpublic/inclass/static/js/runtime-main.1af533b4.js", "runtime-main.js": "//r.51gjj.com/webpublic/inclass/static/js/runtime-main.1af533b4.js",
"static/css/2.42c51de4.chunk.css": "//r.51gjj.com/webpublic/inclass/static/css/2.42c51de4.chunk.css", "static/css/2.42c51de4.chunk.css": "//r.51gjj.com/webpublic/inclass/static/css/2.42c51de4.chunk.css",
"static/js/2.f879d27f.chunk.js": "//r.51gjj.com/webpublic/inclass/static/js/2.f879d27f.chunk.js", "static/js/2.0b6deec5.chunk.js": "//r.51gjj.com/webpublic/inclass/static/js/2.0b6deec5.chunk.js",
"index.html": "//r.51gjj.com/webpublic/inclass/index.html", "index.html": "//r.51gjj.com/webpublic/inclass/index.html",
"precache-manifest.2d4453593206ca64c295fbfca570bf4a.js": "//r.51gjj.com/webpublic/inclass/precache-manifest.2d4453593206ca64c295fbfca570bf4a.js", "precache-manifest.fd8086d7d77b3bd9e0547501d5c60d43.js": "//r.51gjj.com/webpublic/inclass/precache-manifest.fd8086d7d77b3bd9e0547501d5c60d43.js",
"service-worker.js": "//r.51gjj.com/webpublic/inclass/service-worker.js", "service-worker.js": "//r.51gjj.com/webpublic/inclass/service-worker.js",
"static/js/2.f879d27f.chunk.js.LICENSE.txt": "//r.51gjj.com/webpublic/inclass/static/js/2.f879d27f.chunk.js.LICENSE.txt" "static/js/2.0b6deec5.chunk.js.LICENSE.txt": "//r.51gjj.com/webpublic/inclass/static/js/2.0b6deec5.chunk.js.LICENSE.txt"
}, },
"entrypoints": [ "entrypoints": [
"static/js/runtime-main.1af533b4.js", "static/js/runtime-main.1af533b4.js",
"static/css/2.42c51de4.chunk.css", "static/css/2.42c51de4.chunk.css",
"static/js/2.f879d27f.chunk.js", "static/js/2.0b6deec5.chunk.js",
"static/css/main.f28907b4.chunk.css", "static/css/main.5e7f706b.chunk.css",
"static/js/main.26dee19f.chunk.js" "static/js/main.921c1179.chunk.js"
] ]
} }
\ No newline at end of file
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="//r.51gjj.com/webpublic/images/2020523/oyed3Mkrvrpdg.png"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="趣选课合作后台"/><title>趣选课合作后台</title><link href="//r.51gjj.com/webpublic/inclass/static/css/2.42c51de4.chunk.css" rel="stylesheet"><link href="//r.51gjj.com/webpublic/inclass/static/css/main.f28907b4.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(e){function t(t){for(var n,l,a=t[0],i=t[1],c=t[2],p=0,s=[];p<a.length;p++)l=a[p],Object.prototype.hasOwnProperty.call(o,l)&&o[l]&&s.push(o[l][0]),o[l]=0;for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n]);for(f&&f(t);s.length;)s.shift()();return u.push.apply(u,c||[]),r()}function r(){for(var e,t=0;t<u.length;t++){for(var r=u[t],n=!0,a=1;a<r.length;a++){var i=r[a];0!==o[i]&&(n=!1)}n&&(u.splice(t--,1),e=l(l.s=r[0]))}return e}var n={},o={1:0},u=[];function l(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,l),r.l=!0,r.exports}l.m=e,l.c=n,l.d=function(e,t,r){l.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},l.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.t=function(e,t){if(1&t&&(e=l(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(l.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)l.d(r,n,function(t){return e[t]}.bind(null,n));return r},l.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return l.d(t,"a",t),t},l.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},l.p="//r.51gjj.com/webpublic/inclass/";var a=this["webpackJsonpantd-demo-ts"]=this["webpackJsonpantd-demo-ts"]||[],i=a.push.bind(a);a.push=t,a=a.slice();for(var c=0;c<a.length;c++)t(a[c]);var f=i;r()}([])</script><script src="//r.51gjj.com/webpublic/inclass/static/js/2.f879d27f.chunk.js"></script><script src="//r.51gjj.com/webpublic/inclass/static/js/main.26dee19f.chunk.js"></script></body></html> <!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="//r.51gjj.com/webpublic/images/2020523/oyed3Mkrvrpdg.png"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="趣选课合作后台"/><title>趣选课合作后台</title><link href="//r.51gjj.com/webpublic/inclass/static/css/2.42c51de4.chunk.css" rel="stylesheet"><link href="//r.51gjj.com/webpublic/inclass/static/css/main.5e7f706b.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(e){function t(t){for(var n,l,a=t[0],i=t[1],c=t[2],p=0,s=[];p<a.length;p++)l=a[p],Object.prototype.hasOwnProperty.call(o,l)&&o[l]&&s.push(o[l][0]),o[l]=0;for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n]);for(f&&f(t);s.length;)s.shift()();return u.push.apply(u,c||[]),r()}function r(){for(var e,t=0;t<u.length;t++){for(var r=u[t],n=!0,a=1;a<r.length;a++){var i=r[a];0!==o[i]&&(n=!1)}n&&(u.splice(t--,1),e=l(l.s=r[0]))}return e}var n={},o={1:0},u=[];function l(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,l),r.l=!0,r.exports}l.m=e,l.c=n,l.d=function(e,t,r){l.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},l.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.t=function(e,t){if(1&t&&(e=l(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(l.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)l.d(r,n,function(t){return e[t]}.bind(null,n));return r},l.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return l.d(t,"a",t),t},l.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},l.p="//r.51gjj.com/webpublic/inclass/";var a=this["webpackJsonpantd-demo-ts"]=this["webpackJsonpantd-demo-ts"]||[],i=a.push.bind(a);a.push=t,a=a.slice();for(var c=0;c<a.length;c++)t(a[c]);var f=i;r()}([])</script><script src="//r.51gjj.com/webpublic/inclass/static/js/2.0b6deec5.chunk.js"></script><script src="//r.51gjj.com/webpublic/inclass/static/js/main.921c1179.chunk.js"></script></body></html>
\ No newline at end of file \ No newline at end of file
self.__precacheManifest = (self.__precacheManifest || []).concat([ self.__precacheManifest = (self.__precacheManifest || []).concat([
{ {
"revision": "afc008131569d94f3f1ee47b64d9b326", "revision": "42748d71e3535ed9229cc902132311d9",
"url": "//r.51gjj.com/webpublic/inclass/index.html" "url": "//r.51gjj.com/webpublic/inclass/index.html"
}, },
{ {
"revision": "2e3f8867eafa073d6efe", "revision": "d6dfed06381f24b4c1bd",
"url": "//r.51gjj.com/webpublic/inclass/static/css/2.42c51de4.chunk.css" "url": "//r.51gjj.com/webpublic/inclass/static/css/2.42c51de4.chunk.css"
}, },
{ {
"revision": "1d1572da23db50f48948", "revision": "edad57053728b364af00",
"url": "//r.51gjj.com/webpublic/inclass/static/css/main.f28907b4.chunk.css" "url": "//r.51gjj.com/webpublic/inclass/static/css/main.5e7f706b.chunk.css"
}, },
{ {
"revision": "2e3f8867eafa073d6efe", "revision": "d6dfed06381f24b4c1bd",
"url": "//r.51gjj.com/webpublic/inclass/static/js/2.f879d27f.chunk.js" "url": "//r.51gjj.com/webpublic/inclass/static/js/2.0b6deec5.chunk.js"
}, },
{ {
"revision": "3453b8997016469371284a28c0e873e2", "revision": "3453b8997016469371284a28c0e873e2",
"url": "//r.51gjj.com/webpublic/inclass/static/js/2.f879d27f.chunk.js.LICENSE.txt" "url": "//r.51gjj.com/webpublic/inclass/static/js/2.0b6deec5.chunk.js.LICENSE.txt"
}, },
{ {
"revision": "1d1572da23db50f48948", "revision": "edad57053728b364af00",
"url": "//r.51gjj.com/webpublic/inclass/static/js/main.26dee19f.chunk.js" "url": "//r.51gjj.com/webpublic/inclass/static/js/main.921c1179.chunk.js"
}, },
{ {
"revision": "974c6e20a7e1ca13a304", "revision": "974c6e20a7e1ca13a304",
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"); importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js");
importScripts( importScripts(
"//r.51gjj.com/webpublic/inclass/precache-manifest.2d4453593206ca64c295fbfca570bf4a.js" "//r.51gjj.com/webpublic/inclass/precache-manifest.fd8086d7d77b3bd9e0547501d5c60d43.js"
); );
self.addEventListener('message', (event) => { self.addEventListener('message', (event) => {
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This diff is collapsed.
import React, { useState, useEffect } from 'react';
import locale from 'antd/es/date-picker/locale/zh_CN';
import moment from 'moment';
import { Input, Button, Form, DatePicker, Row, Col } from 'antd';
import 'moment/locale/zh-cn';
import List from './list';
import BasicPage from '../../layout/basicPage';
import excelFn from '../../common/excel';
import { api } from '../../common/fetch';
// style
import './index.scss';
const FormItem = Form.Item;
const { RangePicker } = DatePicker;
moment.locale('zh-cn');
const PAGE_SIZE = 10;
interface FilterData {
class_name?: string;
start_time?: string;
end_time?: string;
current?: number;
limit?: number;
}
const OrderList: React.FC = () => {
const [class_name, set_className] = useState('');
const [start_time, set_startTime] = useState('');
const [end_time, set_endTime] = useState('');
const [dataSource, set_dataSource] = useState([]);
const [totalCount, set_totalCount] = useState(0);
const [current, set_current] = useState(1);
const [limit, set_limit] = useState(PAGE_SIZE);
const [form] = Form.useForm();
const formItemLayout = {
labelCol: {
xs: { span: 24 },
sm: { span: 10 },
md: { span: 10 }
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 18 },
md: { span: 18 }
}
};
useEffect(() => {
getList({
class_name,
start_time,
end_time,
current,
limit
});
}, []);
const getList = ({
class_name = '',
start_time = '',
end_time = '',
current = 1,
limit = PAGE_SIZE
}: FilterData) => {
api(`/51business/api/course/back/redeem/used`, {
type: 'GET',
data: {
class_name,
start_time: start_time ? start_time + ' 00:00:00' : '',
end_time: end_time ? end_time + ' 23:59:59' : '',
page: current,
limit: limit
}
}).then(r => {
set_dataSource(r.list);
set_totalCount(r.total_count);
});
};
const download = () => {
api('/51business/api/course/back/export/redeem/used', {
type: 'GET',
data: {
class_name,
start_time: start_time ? start_time + ' 00:00:00' : '',
end_time: end_time ? end_time + ' 23:59:59' : ''
},
responseType: 'arrayBuffer'
}).then(r => {
excelFn(r, `兑换订单列表${start_time}_${end_time}`);
});
};
const changeValue = (type: string, val: any) => {
let obj: any = {
class_name: () => set_className(val),
dates: () => {
let start_time = (val && moment(val[0]).format('YYYY-MM-DD')) || '';
let end_time = (val && moment(val[1]).format('YYYY-MM-DD')) || '';
set_startTime(start_time);
set_endTime(end_time);
}
};
obj[type] && obj[type]();
};
const resetData = () => {
form.resetFields();
changeValue('class_name', '');
set_current(1);
set_limit(PAGE_SIZE);
getList({});
};
const handleTableChange = (args: any) => {
set_current(args.current);
set_limit(args.pageSize);
getList({
class_name,
start_time,
end_time,
current: args.current,
limit: args.pageSize
});
};
const onFinish = () => {
set_current(1);
set_limit(PAGE_SIZE);
getList({
class_name,
start_time,
end_time,
current: 1,
limit: PAGE_SIZE
});
};
return (
<BasicPage>
<div className="analy-content">
<Form {...formItemLayout} form={form} onFinish={onFinish}>
<Row {...{ gutter: { xs: 8, sm: 16, md: 24 } }}>
<Col span="6">
<FormItem label="兑换课程名称:" name="class_name">
<Input
placeholder="请输入"
onChange={e => {
changeValue('class_name', e.target.value);
}}
/>
</FormItem>
</Col>
<Col span="6">
<FormItem label="兑换时间:" name="dates">
<RangePicker
locale={locale}
onCalendarChange={value => {
changeValue('dates', value);
}}
/>
</FormItem>
</Col>
</Row>
<Row
style={{ padding: '12px 0' }}
{...{ gutter: { xs: 8, sm: 16, md: 24 } }}
>
<Col md={12} sm={24}>
<Button
type="primary"
style={{ marginRight: '12px' }}
onClick={download}
>
导出订单信息表
</Button>
</Col>
<Col md={12} sm={24} style={{ textAlign: 'right' }}>
<Form.Item>
<Button
type="primary"
htmlType="submit"
style={{ marginRight: '12px' }}
>
查询
</Button>
<Button htmlType="button" onClick={resetData}>
重置
</Button>
</Form.Item>
</Col>
</Row>
</Form>
</div>
<List
dataSource={dataSource}
pageSize={limit}
current={current}
totalCount={totalCount}
handleTableChange={handleTableChange}
/>
</BasicPage>
);
};
export default OrderList;
import React from 'react';
import { Table } from 'antd';
const { Column } = Table;
interface DeatilI {
id: string | number;
class_name: string | number;
code: string | number;
channel: string | number;
is_used: string | number;
phone: string | number;
used_time: string;
}
interface ColsI {
title: string;
dataIndex: string;
key: string | number;
}
interface DataSourceI {
dataSource: DeatilI[];
pageSize: number;
current: number;
totalCount: number;
handleTableChange: any;
}
const columns = [
{
title: '订单号',
dataIndex: 'order_no',
key: 'order_no'
},
{
title: '兑换课程名称',
dataIndex: 'class_name',
key: 'class_name'
},
{
title: '兑换码',
dataIndex: 'code',
key: 'code'
},
{
title: '渠道',
dataIndex: 'channel',
key: 'channel'
},
{
title: '兑换授权手机号',
dataIndex: 'phone',
key: 'phone'
},
{
title: '兑换时间',
dataIndex: 'used_time',
key: 'used_time'
}
];
const Cols = (list: ColsI[]) => {
return list.map((item: any) => {
return <Column {...item} key={item.key} />;
});
};
const List: React.FC<DataSourceI> = props => {
return (
<div style={{ padding: '30px' }}>
<Table
rowKey={record => record.id || 'key'}
dataSource={props.dataSource}
onChange={props.handleTableChange}
pagination={{
pageSize: props.pageSize,
current: props.current,
total: props.totalCount,
showSizeChanger: true,
showTotal: (total, range) =>
`每页${range[1] - range[0] + 1}条,总计${total} 条`
}}
>
{Cols(columns)}
</Table>
</div>
);
};
export default List;
...@@ -8,8 +8,6 @@ interface DeatilI { ...@@ -8,8 +8,6 @@ interface DeatilI {
class_name: string | number; class_name: string | number;
address: () => {}; address: () => {};
pay: string | number; pay: string | number;
redeem: string | number;
type: string | number;
pay_time: string; pay_time: string;
} }
...@@ -29,7 +27,7 @@ interface DataSourceI { ...@@ -29,7 +27,7 @@ interface DataSourceI {
const columns = [ const columns = [
{ {
title: '订单号', title: '订单号',
dataIndex: 'order_no', dataIndex: 'order_no',
key: 'order_no' key: 'order_no'
}, },
...@@ -70,25 +68,12 @@ const columns = [ ...@@ -70,25 +68,12 @@ const columns = [
} }
}, },
{ {
title: '支付方式',
dataIndex: 'type',
key: 'type',
render: (row: any) => {
return <span>{row === 1 ? '微信' : '兑换码'}</span>;
}
},
{
title: '兑换码',
dataIndex: 'redeem',
key: 'redeem'
},
{
title: '付款金额(元)', title: '付款金额(元)',
dataIndex: 'pay', dataIndex: 'pay',
key: 'pay' key: 'pay'
}, },
{ {
title: '支付时间', title: '下单时间',
dataIndex: 'pay_time', dataIndex: 'pay_time',
key: 'pay_time' key: 'pay_time'
} }
......
import React from 'react'; import React from 'react';
import { Route, withRouter, Switch } from 'react-router-dom'; import { Route, withRouter, Switch } from 'react-router-dom';
import OrderList from '../pages/orderList/index'; import OrderList from '../pages/orderList/index';
import ExchangeCode from '../pages/exchangeCode/index'; import ExchangeCode from '../pages/exchangeCode/index';
import GenerateCode from '../pages/generateCode/index'; import GenerateCode from '../pages/generateCode/index';
import ExchangeList from '../pages/exchangeList/index';
import Login from '../pages/login/index'; import Login from '../pages/login/index';
const RouterChild = withRouter(() => { const RouterChild = withRouter(() => {
...@@ -12,6 +14,7 @@ const RouterChild = withRouter(() => { ...@@ -12,6 +14,7 @@ const RouterChild = withRouter(() => {
<Route path="/orderList" exact component={OrderList} /> <Route path="/orderList" exact component={OrderList} />
<Route path="/exchangeCode" exact component={ExchangeCode} /> <Route path="/exchangeCode" exact component={ExchangeCode} />
<Route path="/generateCode" exact component={GenerateCode} /> <Route path="/generateCode" exact component={GenerateCode} />
<Route path="/exchangeList" exact component={ExchangeList} />
<Route path="/" component={OrderList} /> <Route path="/" component={OrderList} />
</Switch> </Switch>
); );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment