Merge branch 'main' into feature/person-num
# Conflicts: # src/App.jsxfeature/hotel-cruise
commit
ea7048e41b
@ -0,0 +1,7 @@
|
|||||||
|
|
||||||
|
process.env.REACT_APP_BUILD_TIME = new Date().getTime()+(5*60*1000);
|
||||||
|
|
||||||
|
require('child_process').execSync(
|
||||||
|
'react-scripts build',
|
||||||
|
{ stdio: 'inherit' }
|
||||||
|
);
|
Binary file not shown.
After Width: | Height: | Size: 8.7 KiB |
@ -0,0 +1,109 @@
|
|||||||
|
import { useContext, useState, useEffect, useMemo } from 'react';
|
||||||
|
import { observer } from 'mobx-react';
|
||||||
|
import { ChoroplethMap } from '@ant-design/maps';
|
||||||
|
import { dataFieldAlias } from '../libs/ht';
|
||||||
|
import { cloneDeep } from '../utils/commons';
|
||||||
|
|
||||||
|
export default observer((props) => {
|
||||||
|
const { dataSource, sourceField, valueField, ...extConfig } = props;
|
||||||
|
|
||||||
|
const [mdataSource, setMdataSource] = useState([]);
|
||||||
|
useEffect(() => {
|
||||||
|
const dataMapped = (cloneDeep(dataSource) || []).reduce((r, v) => ({...r,
|
||||||
|
[(v.groupsLabel || '_').replace('(待删除)', '')]: v
|
||||||
|
}), {});
|
||||||
|
if (dataMapped?.['中国']) {
|
||||||
|
dataMapped['中国'].groupsLabel = '中华人民共和国';
|
||||||
|
}
|
||||||
|
setMdataSource(Object.values(dataMapped));
|
||||||
|
return () => {};
|
||||||
|
}, [dataSource, valueField]);
|
||||||
|
|
||||||
|
const config = {
|
||||||
|
container: '#topC',
|
||||||
|
map: {
|
||||||
|
// type: 'amap',
|
||||||
|
type: 'mapbox',
|
||||||
|
// style: 'blank',
|
||||||
|
center: [120.19382669582967, 30.258134],
|
||||||
|
zoom: 2,
|
||||||
|
pitch: 0,
|
||||||
|
// scrollZoom: false,
|
||||||
|
// dragPan: false,
|
||||||
|
// zoomEnable: false,
|
||||||
|
// token: 'd78b5ba25a4699a1cb567b7a933e630b', // amap
|
||||||
|
},
|
||||||
|
// geoArea: {
|
||||||
|
// url: 'https://gw.alipayobjects.com/os/alisis/geo-data-v0.1.2/choropleth-data',
|
||||||
|
// type: 'topojson',
|
||||||
|
// },
|
||||||
|
source: {
|
||||||
|
data: mdataSource.filter((ele) => ele[sourceField]),
|
||||||
|
joinBy: {
|
||||||
|
geoField: 'name',
|
||||||
|
sourceField: sourceField || 'name',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
autoFit: true,
|
||||||
|
color: {
|
||||||
|
field: valueField || 'value',
|
||||||
|
value: [
|
||||||
|
'#001D70',
|
||||||
|
'#0047A5',
|
||||||
|
'#1A4397',
|
||||||
|
'#2555B7',
|
||||||
|
'#3165D1',
|
||||||
|
'#3D76DD',
|
||||||
|
'#467BE8',
|
||||||
|
'#6296FE',
|
||||||
|
'#7EA6F9',
|
||||||
|
'#98B7F7',
|
||||||
|
'#BDD0F8',
|
||||||
|
'#DDE6F7',
|
||||||
|
'#F2F5FC'].reverse(),
|
||||||
|
scale: { type: 'quantile' },
|
||||||
|
},
|
||||||
|
viewLevel: {
|
||||||
|
// level: 'country',
|
||||||
|
// adcode: '100000',
|
||||||
|
// granularity: 'province',
|
||||||
|
level: 'world',
|
||||||
|
adcode: 'all',
|
||||||
|
granularity: 'country',
|
||||||
|
},
|
||||||
|
chinaBorder: false,
|
||||||
|
style: {
|
||||||
|
opacity: 1,
|
||||||
|
stroke: '#fff',
|
||||||
|
lineWidth: 0.6,
|
||||||
|
lineOpacity: 1,
|
||||||
|
},
|
||||||
|
state: {
|
||||||
|
active: {
|
||||||
|
stroke: 'yellow',
|
||||||
|
lineWidth: 0.6,
|
||||||
|
// lineOpacity: 0.8,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
label: {
|
||||||
|
visible: true,
|
||||||
|
field: 'name',
|
||||||
|
style: {
|
||||||
|
fill: '#000',
|
||||||
|
opacity: 0.8,
|
||||||
|
fontSize: 10,
|
||||||
|
stroke: '#fff',
|
||||||
|
strokeWidth: 1.5,
|
||||||
|
textAllowOverlap: false,
|
||||||
|
padding: [8, 8],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
items: ['name', { field: valueField, alias: dataFieldAlias[valueField].alias, customValue: (v) => dataFieldAlias[valueField].formatter(v) }],
|
||||||
|
},
|
||||||
|
zoom: false,
|
||||||
|
legend: false,
|
||||||
|
};
|
||||||
|
|
||||||
|
return <ChoroplethMap {...config} />;
|
||||||
|
});
|
@ -0,0 +1,51 @@
|
|||||||
|
import { makeAutoObservable, runInAction, toJS } from 'mobx';
|
||||||
|
import { fetchJSON } from '../utils/request';
|
||||||
|
import { isEmpty, sortBy, pick, merge, fixTo2Decimals, groupBy, sortKeys, fixToInt, cloneDeep } from '../utils/commons';
|
||||||
|
import { dataFieldAlias } from './../libs/ht';
|
||||||
|
|
||||||
|
class Trade {
|
||||||
|
constructor(rootStore) {
|
||||||
|
this.rootStore = rootStore;
|
||||||
|
makeAutoObservable(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 明细
|
||||||
|
*/
|
||||||
|
getDetailData = async (param, page) => {
|
||||||
|
this.detailData[page] = { loading: true, dataSource: [], originData: [] };
|
||||||
|
const json = await fetchJSON('/service-Analyse2/GetTradeApartDetail', param);
|
||||||
|
if (json.errcode === 0) {
|
||||||
|
runInAction(() => {
|
||||||
|
this.detailData[page].loading = false;
|
||||||
|
this.detailData[page].dataSource = json.result;
|
||||||
|
this.detailData[page].originData = json.result;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return json.result;
|
||||||
|
};
|
||||||
|
|
||||||
|
setSearchValues(body) {
|
||||||
|
this.searchValues = body;
|
||||||
|
}
|
||||||
|
|
||||||
|
timeLineKey = 'week';
|
||||||
|
setTimeLineKey(v) {
|
||||||
|
this.timeLineKey = v;
|
||||||
|
}
|
||||||
|
|
||||||
|
resetData = () => {
|
||||||
|
this.detailData = {
|
||||||
|
orders: { loading: false, dataSource: [], originData: [] },
|
||||||
|
trade: { loading: false, dataSource: [], originData: [] },
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
searchValues = {};
|
||||||
|
detailData = {
|
||||||
|
orders: { loading: false, dataSource: [], originData: [] },
|
||||||
|
trade: { loading: false, dataSource: [], originData: [] },
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Trade;
|
@ -0,0 +1,19 @@
|
|||||||
|
import { observer } from 'mobx-react';
|
||||||
|
import moment from 'moment';
|
||||||
|
import { APP_VERSION } from '../config';
|
||||||
|
import { SlackOutlined, SketchOutlined, AntCloudOutlined, RedditOutlined, GithubOutlined } from '@ant-design/icons';
|
||||||
|
|
||||||
|
export default observer((props) => {
|
||||||
|
const compileTime = moment(Number(process.env.REACT_APP_BUILD_TIME)).format('YYYY-MM-DD ddd HH:mm:ss');
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<div>
|
||||||
|
<SketchOutlined /> <AntCloudOutlined /> <SlackOutlined /> <RedditOutlined /> <GithubOutlined />
|
||||||
|
<div>欢迎! </div>
|
||||||
|
<div>当前版本: v<span>{APP_VERSION}</span></div>
|
||||||
|
<div>编译时间: <span>{compileTime}</span></div>
|
||||||
|
<SketchOutlined /> <AntCloudOutlined /> <SlackOutlined /> <RedditOutlined /> <GithubOutlined />
|
||||||
|
</div>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
});
|
Loading…
Reference in New Issue