refactor: `urils/commons` --> `@haina/utils-commons`, `@haina/utils-request` 部分

main
Lei OT 3 months ago
parent e581f9df73
commit 7c00c9167e

36
package-lock.json generated

@ -10,9 +10,9 @@
"dependencies": {
"@ant-design/charts": "^1.4.2",
"@ant-design/pro-components": "^2.6.16",
"@haina/utils-commons": "https://research.hainatravel.com/npm/utils-commons-0.1.1.tgz",
"@haina/utils-pagespy": "https://research.hainatravel.com/npm/utils-pagespy-0.1.1.tgz",
"@haina/utils-request": "https://research.hainatravel.com/npm/utils-request-0.1.1.tgz",
"@haina/utils-commons": "https://research.hainatravel.com/npm/utils-commons-0.1.2.tgz",
"@haina/utils-pagespy": "https://research.hainatravel.com/npm/utils-pagespy-0.1.2.tgz",
"@haina/utils-request": "https://research.hainatravel.com/npm/utils-request-0.1.2.tgz",
"antd": "^4.22.6",
"dingtalk-jsapi": "^3.0.9",
"docx": "^9.5.1",
@ -3847,21 +3847,21 @@
}
},
"node_modules/@haina/utils-commons": {
"version": "0.1.1",
"resolved": "https://research.hainatravel.com/npm/utils-commons-0.1.1.tgz",
"integrity": "sha512-I3Ll5iNLtrnOCzs0IB3OXGQa0l75aQT740NKCUFwR1DHRx9vjeoqestS/PamZN1fuiodxWHkOao3JXOPRwSSfw==",
"version": "0.1.2",
"resolved": "https://research.hainatravel.com/npm/utils-commons-0.1.2.tgz",
"integrity": "sha512-7BhbQ6aLTzhLm7lHyswVj4Jl2FGfj9/W5xQiLYcEkzZGdQViXa7ILxVHPFLKPeAD4LdcWJBpeS3fOQ/Z3XHwdg==",
"hasInstallScript": true
},
"node_modules/@haina/utils-pagespy": {
"version": "0.1.1",
"resolved": "https://research.hainatravel.com/npm/utils-pagespy-0.1.1.tgz",
"integrity": "sha512-aMyp8QPDM1URGOn0Bw1z1zUM7MDUDuHiPT8U5Zmusb6EIka+7XVmunQGy7HMPSgrfByD5DlNFkF/l5ej45PRtA==",
"version": "0.1.2",
"resolved": "https://research.hainatravel.com/npm/utils-pagespy-0.1.2.tgz",
"integrity": "sha512-0kpGUgIiKWnyJjVw/ZzE8cLRc36p/vuHTcDrgyi41VLexRTX1NrdJgh5wUYpC/TMqWpIx+OYutPITTuG6z0YOQ==",
"hasInstallScript": true
},
"node_modules/@haina/utils-request": {
"version": "0.1.1",
"resolved": "https://research.hainatravel.com/npm/utils-request-0.1.1.tgz",
"integrity": "sha512-p+0ApwEf+lcSOr7tS9kdgZmW+vZc0Gol6+8IejNv/qfMk6cmuBJYn5khvcSR1mblBPMag+464YpoBI32R9OMDQ==",
"version": "0.1.2",
"resolved": "https://research.hainatravel.com/npm/utils-request-0.1.2.tgz",
"integrity": "sha512-TnaqEMT/WrIGVFxEH0x0qxjwnIuvNoDOJrw/vACYdpSsdx1TjFwOPjh0bLaiBn41tvVGWK8QDUwQqfB9pFFxOg==",
"hasInstallScript": true
},
"node_modules/@humanwhocodes/config-array": {
@ -24413,16 +24413,16 @@
"integrity": "sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA=="
},
"@haina/utils-commons": {
"version": "https://research.hainatravel.com/npm/utils-commons-0.1.1.tgz",
"integrity": "sha512-I3Ll5iNLtrnOCzs0IB3OXGQa0l75aQT740NKCUFwR1DHRx9vjeoqestS/PamZN1fuiodxWHkOao3JXOPRwSSfw=="
"version": "https://research.hainatravel.com/npm/utils-commons-0.1.2.tgz",
"integrity": "sha512-7BhbQ6aLTzhLm7lHyswVj4Jl2FGfj9/W5xQiLYcEkzZGdQViXa7ILxVHPFLKPeAD4LdcWJBpeS3fOQ/Z3XHwdg=="
},
"@haina/utils-pagespy": {
"version": "https://research.hainatravel.com/npm/utils-pagespy-0.1.1.tgz",
"integrity": "sha512-aMyp8QPDM1URGOn0Bw1z1zUM7MDUDuHiPT8U5Zmusb6EIka+7XVmunQGy7HMPSgrfByD5DlNFkF/l5ej45PRtA=="
"version": "https://research.hainatravel.com/npm/utils-pagespy-0.1.2.tgz",
"integrity": "sha512-0kpGUgIiKWnyJjVw/ZzE8cLRc36p/vuHTcDrgyi41VLexRTX1NrdJgh5wUYpC/TMqWpIx+OYutPITTuG6z0YOQ=="
},
"@haina/utils-request": {
"version": "https://research.hainatravel.com/npm/utils-request-0.1.1.tgz",
"integrity": "sha512-p+0ApwEf+lcSOr7tS9kdgZmW+vZc0Gol6+8IejNv/qfMk6cmuBJYn5khvcSR1mblBPMag+464YpoBI32R9OMDQ=="
"version": "https://research.hainatravel.com/npm/utils-request-0.1.2.tgz",
"integrity": "sha512-TnaqEMT/WrIGVFxEH0x0qxjwnIuvNoDOJrw/vACYdpSsdx1TjFwOPjh0bLaiBn41tvVGWK8QDUwQqfB9pFFxOg=="
},
"@humanwhocodes/config-array": {
"version": "0.11.10",

@ -5,9 +5,9 @@
"dependencies": {
"@ant-design/charts": "^1.4.2",
"@ant-design/pro-components": "^2.6.16",
"@haina/utils-commons": "https://research.hainatravel.com/npm/utils-commons-0.1.1.tgz",
"@haina/utils-pagespy": "https://research.hainatravel.com/npm/utils-pagespy-0.1.1.tgz",
"@haina/utils-request": "https://research.hainatravel.com/npm/utils-request-0.1.1.tgz",
"@haina/utils-commons": "https://research.hainatravel.com/npm/utils-commons-0.1.2.tgz",
"@haina/utils-pagespy": "https://research.hainatravel.com/npm/utils-pagespy-0.1.2.tgz",
"@haina/utils-request": "https://research.hainatravel.com/npm/utils-request-0.1.2.tgz",
"antd": "^4.22.6",
"dingtalk-jsapi": "^3.0.9",
"docx": "^9.5.1",

@ -4,7 +4,7 @@ import { stores_Context } from '../config';
import { Table, Row, Col, Divider, Switch, Space, Tabs } from 'antd';
import SearchForm from '../components/search/SearchForm';
import { TableExportBtn, VSTag } from '../components/Data';
import { fixTo2Decimals, isEmpty } from '../utils/commons';
import { fixTo2Decimals, isEmpty } from '@haina/utils-commons';
// TdCellDataTable
const TdCell = (tdprops) => {

@ -5,7 +5,7 @@ import GroupSelect from "../components/search/GroupSelect";
import DatePickerCharts from "../components/search/DatePickerCharts";
import { stores_Context } from "../config";
import { observer } from "mobx-react";
import * as comm from "../utils/commons";
import { emptyValue } from "@haina/utils-commons";
import { Line } from "@ant-design/charts";
import * as config from "../config";
@ -19,7 +19,7 @@ class ExchangeRate extends Component {
render() {
const { dashboard_store, date_picker_store } = this.context;
const { exchangeRate_data } = dashboard_store;
const line_data_source = comm.empty(exchangeRate_data.data) ? [] : exchangeRate_data.data.CurrencyData1;
const line_data_source = emptyValue(exchangeRate_data.data) ? [] : exchangeRate_data.data.CurrencyData1;
const line_config = {
data: line_data_source,
padding: "auto",

@ -1,7 +1,7 @@
import { useEffect, useState } from 'react';
import { observer } from 'mobx-react';
import { Bullet } from '@ant-design/plots';
import { sortBy, merge, isEmpty } from '../utils/commons';
import { sortBy, merge, isEmpty } from '@haina/utils-commons';
import { dataFieldAlias } from '../libs/ht';
export default observer((props) => {

@ -1,6 +1,6 @@
import { useEffect, useState } from 'react';
import { observer } from 'mobx-react';
import { sortBy, merge } from '../utils/commons';
import { sortBy, merge } from '@haina/utils-commons';
import { dataFieldAlias } from '../libs/ht';
import { Column } from '@ant-design/plots';

@ -1,5 +1,5 @@
import moment from 'moment';
import { fixTo2Decimals, groupBy, isEmpty, sortBy } from '../../utils/commons';
import { fixTo2Decimals, groupBy, isEmpty, sortBy } from '@haina/utils-commons';
export const datePartOptions = [
{ label: '日', value: 'day' },

@ -1,6 +1,6 @@
import { observer } from 'mobx-react';
import { Pie, measureTextWidth } from '@ant-design/plots';
import { fixTo2Decimals, merge } from '../utils/commons';
import { fixTo2Decimals, merge } from '@haina/utils-commons';
import { dataFieldAlias } from './../libs/ht';
export default observer((props) => {

@ -4,7 +4,7 @@ import { Line } from '@ant-design/plots';
import { observer } from 'mobx-react';
import { dataFieldAlias } from '../libs/ht';
import DateGroupRadio from '../components/DateGroupRadio';
import { cloneDeep, groupBy, sortBy } from '../utils/commons';
import { cloneDeep, groupBy, sortBy } from '@haina/utils-commons';
export default observer((props) => {
const { dataSource: rawData, showAVG, showCompareSum, loading, solidLineTime,

@ -1,6 +1,6 @@
import { observer } from 'mobx-react';
import { Line } from '@ant-design/plots';
import { merge, isEmpty, groupBy, sortBy } from '../utils/commons';
import { merge, isEmpty, groupBy, sortBy } from '@haina/utils-commons';
import { dataFieldAlias } from '../libs/ht';
export default observer((props) => {

@ -2,7 +2,7 @@ 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';
import { cloneDeep } from '@haina/utils-commons';
export default observer((props) => {
const { dataSource, sourceField, valueField, containerNode, ...extConfig } = props;

@ -1,7 +1,7 @@
import { observer } from 'mobx-react';
import { message } from 'antd';
import { Mix, getCanvasPattern, } from '@ant-design/plots';
import { merge, isEmpty, cloneDeep } from '../utils/commons';
import { merge, isEmpty, cloneDeep } from '@haina/utils-commons';
import { dataFieldAlias } from '../libs/ht';
const COLOR_SETS = [

@ -1,6 +1,6 @@
import { observer } from 'mobx-react';
import { Mix } from '@ant-design/plots';
import { merge, isEmpty, groupBy, cloneDeep } from '../utils/commons';
import { merge, isEmpty, groupBy, cloneDeep } from '@haina/utils-commons';
import { dataFieldAlias } from '../libs/ht';
export default observer((props) => {

@ -1,6 +1,6 @@
import { observer } from 'mobx-react';
import { Mix, getCanvasPattern } from '@ant-design/plots';
import { merge, isEmpty, cloneDeep } from '../utils/commons';
import { merge, isEmpty, cloneDeep } from '@haina/utils-commons';
import { dataFieldAlias } from '../libs/ht';
const COLOR_SETS = [

@ -1,6 +1,6 @@
import React from 'react';
import { DualAxes } from '@ant-design/charts';
import { fixTo2Decimals, fixTo4Decimals, fixTo1Decimals, groupBy } from '../utils/commons';
import { fixTo2Decimals, fixTo4Decimals, fixTo1Decimals, groupBy } from '@haina/utils-commons';
const ParetoChart = ({ data, xField, yField, thresholds = { A: 80, B: 90 }, title = '帕累托分析', showCategory = true, showThresholds = true, yFieldAlias }) => {
// 1.

@ -1,6 +1,6 @@
import { useEffect, useState } from 'react';
import { observer } from 'mobx-react';
import { sortBy, merge } from '../utils/commons';
import { sortBy, merge } from '@haina/utils-commons';
import { dataFieldAlias } from '../libs/ht';
import { Mix, Scatter } from '@ant-design/plots';

@ -1,7 +1,7 @@
import { observer } from 'mobx-react';
import { Waterfall } from '@ant-design/plots';
import { dataFieldAlias } from './../libs/ht';
import { fixTo4Decimals, merge } from '../utils/commons';
import { fixTo4Decimals, merge } from '@haina/utils-commons';
export default observer((props) => {
const { dataSource, line, title, ...extProps } = props;

@ -4,7 +4,7 @@ import { stores_Context } from './../../config';
import { Typography, Row, Col, Tabs, } from 'antd';
import SearchForm from './../search/SearchForm';
import { KPIObjects } from './../../libs/ht';
import { merge, pick } from './../../utils/commons';
import { merge, pick } from '@haina/utils-commons';
import ProfitTable from './SubjectTable/Profit';
import Count from './SubjectTable/Count';
import Rates from './SubjectTable/Rates';

@ -7,7 +7,7 @@ import { Button, Table, Switch, Input, Space, Typography, Row, Col, Spin, Radio,
import { EditableProTable, ProCard, ProFormField } from '@ant-design/pro-components';
import SearchForm from './../search/SearchForm';
import { bu } from './../../libs/ht';
import { isEmpty, objectMapper, fixToInt, fixTo2Decimals, fixTo4Decimals, cloneDeep, numberFormatter } from './../../utils/commons';
import { isEmpty, objectMapper, fixToInt, fixTo2Decimals, fixTo4Decimals, cloneDeep, numberFormatter } from '@haina/utils-commons';
const { Text } = Typography;
const initialPercentKey = new Array(12).fill(1).reduce((r, v, i) => ({ ...r, [`M${i + 1}Percent`]: [8, 9].includes(i) ? 10 : 8 }), {});

@ -5,7 +5,7 @@ import { stores_Context } from '../../../config';
import { Button, Switch, Input, Space, Typography, Row, Col, message } from 'antd';
import { EditableProTable } from '@ant-design/pro-components';
import { KPIObjects } from '../../../libs/ht';
import { isEmpty, fixTo2Decimals, fixTo4Decimals, cloneDeep, numberFormatter, fixToInt } from '../../../utils/commons';
import { isEmpty, fixTo2Decimals, fixTo4Decimals, cloneDeep, numberFormatter, fixToInt } from '@haina/utils-commons';
export const KPIObjectsMapped = KPIObjects.reduce((a, c) => ({ ...a, [String(c.key)]: c }), {});
const { Text } = Typography;

@ -5,7 +5,7 @@ import { stores_Context } from './../../../config';
import { Button, Switch, Input, Space, Typography, Row, Col, message } from 'antd';
import { EditableProTable } from '@ant-design/pro-components';
import { KPIObjects } from './../../../libs/ht';
import { isEmpty, fixTo2Decimals, fixTo4Decimals, cloneDeep, numberFormatter, fixToInt } from './../../../utils/commons';
import { isEmpty, fixTo2Decimals, fixTo4Decimals, cloneDeep, numberFormatter, fixToInt } from '@haina/utils-commons';
export const KPIObjectsMapped = KPIObjects.reduce((a, c) => ({ ...a, [String(c.key)]: c }), {});
const { Text } = Typography;

@ -5,7 +5,7 @@ import { stores_Context } from '../../../config';
import { Button, Switch, Input, Space, Typography, Row, Col, message } from 'antd';
import { EditableProTable } from '@ant-design/pro-components';
import { KPIObjects } from '../../../libs/ht';
import { isEmpty, fixTo2Decimals, fixTo4Decimals, cloneDeep, numberFormatter, fixToInt } from '../../../utils/commons';
import { isEmpty, fixTo2Decimals, fixTo4Decimals, cloneDeep, numberFormatter, fixToInt } from '@haina/utils-commons';
export const KPIObjectsMapped = KPIObjects.reduce((a, c) => ({ ...a, [String(c.key)]: c }), {});
const { Text } = Typography;

@ -1,8 +1,8 @@
import React from 'react';
import { Select } from 'antd';
import { fetchJSON } from './../../utils/request';
import { fetchJSON } from '@haina/utils-request';
import { observer } from 'mobx-react';
import { isEmpty, merge, objectMapper } from './../../utils/commons';
import { isEmpty, merge, objectMapper } from '@haina/utils-commons';
const { Option } = Select;

@ -1,7 +1,7 @@
import { createContext, useContext, useEffect } from 'react';
import { toJS } from 'mobx';
import { observer } from 'mobx-react';
import { DATE_FORMAT, SMALL_DATETIME_FORMAT, stores_Context } from './../../config';
import { DATE_FORMAT, HT_HOST, SMALL_DATETIME_FORMAT, stores_Context } from './../../config';
import { SearchOutlined } from '@ant-design/icons';
import { Form, Row, Col, Select, Button, Space, DatePicker, Input, InputNumber } from 'antd';
import moment from 'moment';
@ -14,7 +14,7 @@ import DateTypeSelect from './DataTypeSelect';
import DatePickerCharts from './DatePickerCharts';
import YearPickerCharts from './YearPickerCharts';
import SearchInput from './Input';
import { objectMapper, at, empty, isEmpty } from './../../utils/commons';
import { objectMapper, at, empty, isEmpty } from '@haina/utils-commons';
import { departureDateTypes } from './../../libs/ht';
import './search.css';
@ -317,7 +317,7 @@ function getFields(props) {
'agency',
99,
<Form.Item name={'agency'} initialValue={at(props, 'initialValue.agency')[0] || undefined} {...fieldProps.agency}>
<SearchInput autoGet url="/service-web/QueryData/GetVEIName" map={{ 'CAV_VEI_SN': 'key', 'VEI2_CompanyBN': 'label' }} resultkey={'result1'} placeholder="所有地接社" {...fieldProps.agency} />
<SearchInput autoGet url={HT_HOST + "/service-web/QueryData/GetVEIName"} map={{ 'CAV_VEI_SN': 'key', 'VEI2_CompanyBN': 'label' }} resultkey={'result1'} placeholder="所有地接社" {...fieldProps.agency} />
</Form.Item>
),
item(
@ -326,7 +326,7 @@ function getFields(props) {
<Form.Item name={'billtype'}>
<SearchInput
autoGet
url="/service-web/QueryData/GetCreditCardBillType"
url={HT_HOST + "/service-web/QueryData/GetCreditCardBillType"}
map={{ 'cb_billtype': ['key', 'label'] }}
// map={{ 'cb_billtype': 'key' }}
resultkey={'billtype'}
@ -502,7 +502,7 @@ function getFields(props) {
<SearchInput
{...fieldProps.operator}
autoGet
url="/service-Analyse2/GetOperatorInfo"
url={HT_HOST + "/service-Analyse2/GetOperatorInfo"}
map={{ 'op_id': 'key', 'cn_name': 'label' }}
resultkey={'result'}
placeholder="输入搜索顾问: 中/英名字"
@ -526,21 +526,21 @@ function getFields(props) {
'country',
99,
<Form.Item name={'country'}>
<SearchInput {...fieldProps?.country || {}} autoGet url="/service-Analyse2/GetCountryInfo" map={{ 'c_id': 'key', 'cn_name': 'label' }} resultkey={'result'} placeholder="输入搜索国籍: 中/英名字" />
<SearchInput {...fieldProps?.country || {}} autoGet url={HT_HOST+"/service-Analyse2/GetCountryInfo"} map={{ 'c_id': 'key', 'cn_name': 'label' }} resultkey={'result'} placeholder="输入搜索国籍: 中/英名字" />
</Form.Item>
),
item(
'city',
99,
<Form.Item name={'city'}>
<SearchInput autoGet url="/service-Analyse2/GetDestinationInfo" map={{ 'c_id': 'key', 'cn_name': 'label' }} resultkey={'result'} placeholder="输入搜索城市: 中/英名字" />
<SearchInput autoGet url={HT_HOST + "/service-Analyse2/GetDestinationInfo"} map={{ 'c_id': 'key', 'cn_name': 'label' }} resultkey={'result'} placeholder="输入搜索城市: 中/英名字" />
</Form.Item>
),
item(
'globalCity',
99,
<Form.Item name={'globalCity'}>
<SearchInput autoGet url="/service-Analyse2/GetGlobalDestinationInfo" map={{ 'c_id': 'key', 'cn_name': 'label' }} resultkey={'result'} placeholder="输入搜索城市: 中/英名字" />
<SearchInput autoGet url={HT_HOST + "/service-Analyse2/GetGlobalDestinationInfo"} map={{ 'c_id': 'key', 'cn_name': 'label' }} resultkey={'result'} placeholder="输入搜索城市: 中/英名字" />
</Form.Item>
),
item(

@ -1,5 +1,5 @@
import moment from 'moment';
import { fixTo4Decimals, fixTo1Decimals, fixToInt, groupBy, sortBy, cloneDeep, pick, unique, flush, fixTo2Decimals, isEmpty } from '../utils/commons';
import { fixTo4Decimals, fixTo1Decimals, fixToInt, groupBy, sortBy, cloneDeep, pick, unique, flush, fixTo2Decimals, isEmpty } from '@haina/utils-commons';
/**
* 事业部

@ -2,8 +2,9 @@ import {makeAutoObservable, runInAction} from "mobx";
import moment from "moment";
import { NavLink } from "react-router-dom";
import * as config from "../config";
import * as req from '../utils/request';
import { groupBy, prepareUrl, isEmpty, show_vs_tag, formatPercent, percentToDecimal } from '../utils/commons';
import * as req from '@haina/utils-request';
import { groupBy, prepareUrl, isEmpty, formatPercent, percentToDecimal } from '@haina/utils-commons';
import { show_vs_tag, } from "./../utils/commons";
class CustomerServices {

@ -1,15 +1,16 @@
import {makeAutoObservable, runInAction, toJS } from "mobx";
import { fetchJSON } from '../utils/request';
import { fetchJSON } from '@haina/utils-request';
import * as config from "../config";
import { groupsMappedByKey, sitesMappedByCode, pivotBy } from './../libs/ht';
import { sortBy, show_vs_tag, formatPercent, groupBy, isEmpty, uniqWith, formatPercentToFloat } from "../utils/commons";
import { sortBy, formatPercent, groupBy, isEmpty, uniqWith, formatPercentToFloat } from "@haina/utils-commons";
import { show_vs_tag, } from "./../utils/commons";
import moment from 'moment';
/**
* 用于透视的数据
*/
const getDetailData = async (param) => {
const json = await fetchJSON('/service-Analyse2/GetTradeApartDetail', param);
const json = await fetchJSON(config.HT_HOST + '/service-Analyse2/GetTradeApartDetail', param);
return json.errcode === 0 ? json.result : [];
};

@ -1,7 +1,8 @@
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 { fetchJSON } from '@haina/utils-request';
import { isEmpty, sortBy, pick, merge, fixTo2Decimals, groupBy, sortKeys, fixToInt, cloneDeep } from '@haina/utils-commons';
import { dataFieldAlias } from './../libs/ht';
import { HT_HOST } from '../config';
class Trade {
constructor(rootStore) {
@ -15,7 +16,7 @@ class Trade {
getDetailData = async (param, page) => {
this.loading = true;
this.detailData[page] = { loading: true, dataSource: [], originData: [] };
const json = await fetchJSON('/service-Analyse2/GetTradeApartDetail', param);
const json = await fetchJSON(HT_HOST + '/service-Analyse2/GetTradeApartDetail', param);
if (json.errcode === 0) {
runInAction(() => {
this.loading = false;
@ -27,7 +28,7 @@ class Trade {
if (!isEmpty(param.DateDiff1)) {
this.loading2 = true;
const param2 = { ...cloneDeep(param), Date1: param.DateDiff1, Date2: param.DateDiff2 };
const json2 = await fetchJSON('/service-Analyse2/GetTradeApartDetail', param2);
const json2 = await fetchJSON(HT_HOST + '/service-Analyse2/GetTradeApartDetail', param2);
if (json2.errcode === 0) {
runInAction(() => {
this.loading2 = false;

@ -1,10 +1,11 @@
import { makeAutoObservable, runInAction, toJS } from 'mobx';
import * as req from '../utils/request';
import { isEmpty, sortBy, objectMapper } from '../utils/commons';
import * as req from '@haina/utils-request';
import { isEmpty, sortBy, objectMapper } from '@haina/utils-commons';
import { HT_HOST } from '../config';
const modelMapper = {
'operator': {
url: '/service-Analyse2/GetOperatorInfo',
url: HT_HOST + '/service-Analyse2/GetOperatorInfo',
mapper: {
op_id: [{ key: 'key' }, { key: 'value' }],
cn_name: { key: 'label' },
@ -12,7 +13,7 @@ const modelMapper = {
},
},
'country': {
url: '/service-Analyse2/GetCountryInfo',
url: HT_HOST + '/service-Analyse2/GetCountryInfo',
mapper: {
c_id: [{ key: 'key' }, { key: 'value' }],
cn_name: { key: 'label' },
@ -20,7 +21,7 @@ const modelMapper = {
},
},
'destination': {
url: '/service-Analyse2/GetDestinationInfo/test',
url: HT_HOST + '/service-Analyse2/GetDestinationInfo/test',
mapper: {
id: [{ key: 'key' }, { key: 'value' }],
cn_name: { key: 'label' },
@ -28,14 +29,14 @@ const modelMapper = {
},
},
'vendor': {
url: '/service-web/QueryData/GetVEIName',
url: HT_HOST + '/service-web/QueryData/GetVEIName',
mapper: {
CAV_VEI_SN: [{ key: 'key' }, { key: 'value' }],
VEI2_CompanyBN: { key: 'label' },
},
},
'creditcardbilltype': {
url: '/service-web/QueryData/GetCreditCardBillType',
url: HT_HOST + '/service-web/QueryData/GetCreditCardBillType',
mapper: {
cb_billtype: [{ key: 'key' }, { key: 'value' }, { key: 'label' }],
},

@ -1,19 +1,19 @@
import { makeAutoObservable, runInAction, toJS } from 'mobx';
import * as req from '../utils/request';
import { DATE_FORMAT, SMALL_DATETIME_FORMAT } from './../config';
import * as req from '@haina/utils-request';
import { DATE_FORMAT, SMALL_DATETIME_FORMAT, HT_HOST } from './../config';
import moment from 'moment';
import { isEmpty, pick, sortBy, fixTo2Decimals, cloneDeep, unique } from '../utils/commons';
import { isEmpty, pick, sortBy, fixTo2Decimals, cloneDeep, unique } from '@haina/utils-commons';
const modelMapper = {
'tourDays': { url: '/service-Analyse2/GetTradeApartByTourDays', keySort: true, dynamicsX: false },
'PML': { url: '/service-Analyse2/GetTradeApartByPML', keySort: true, dynamicsX: false },
'ConfirmDays': { url: '/service-Analyse2/GetTradeApartByConfirmDays', keySort: true, dynamicsX: false },
'ApplyDays': { url: '/service-Analyse2/GetTradeApartByApplyDays', keySort: true, dynamicsX: false },
'PersonNum': { url: '/service-Analyse2/GetTradeApartByPersonNum', keySort: true, dynamicsX: false },
'destination': { url: '/service-Analyse2/GetTradeApartByDestination', keySort: false, dynamicsX: true, },
'GlobalDestination': { url: '/service-Analyse2/GetTradeApartByGlobalDestination', keySort: false, dynamicsX: true, },
'destinationCountry': { url: '/service-Analyse2/GetTradeApartByDestinationCountry', keySort: false, dynamicsX: true, },
'guestCountry': { url: '/service-Analyse2/GetTradeApartByGuestCountry', keySort: false, dynamicsX: true, },
'tourDays': { url: HT_HOST + '/service-Analyse2/GetTradeApartByTourDays', keySort: true, dynamicsX: false },
'PML': { url: HT_HOST + '/service-Analyse2/GetTradeApartByPML', keySort: true, dynamicsX: false },
'ConfirmDays': { url: HT_HOST + '/service-Analyse2/GetTradeApartByConfirmDays', keySort: true, dynamicsX: false },
'ApplyDays': { url: HT_HOST + '/service-Analyse2/GetTradeApartByApplyDays', keySort: true, dynamicsX: false },
'PersonNum': { url: HT_HOST + '/service-Analyse2/GetTradeApartByPersonNum', keySort: true, dynamicsX: false },
'destination': { url: HT_HOST + '/service-Analyse2/GetTradeApartByDestination', keySort: false, dynamicsX: true, },
'GlobalDestination': { url: HT_HOST + '/service-Analyse2/GetTradeApartByGlobalDestination', keySort: false, dynamicsX: true, },
'destinationCountry': { url: HT_HOST + '/service-Analyse2/GetTradeApartByDestinationCountry', keySort: false, dynamicsX: true, },
'guestCountry': { url: HT_HOST + '/service-Analyse2/GetTradeApartByGuestCountry', keySort: false, dynamicsX: true, },
};
class Distribution {
constructor(appStore) {
@ -76,7 +76,7 @@ class Distribution {
*/
getDetailData = async (param) => {
this.detailData.loading = true;
const json = await req.fetchJSON('/service-Analyse2/GetTradeApartDetail', param);
const json = await req.fetchJSON(HT_HOST + '/service-Analyse2/GetTradeApartDetail', param);
if (json.errcode === 0) {
runInAction(() => {
this.detailData.loading = false;

@ -1,7 +1,7 @@
import {makeAutoObservable, runInAction} from "mobx";
import * as config from "../config";
import * as comm from '../utils/commons';
import { fetchJSON } from '../utils/request';
import * as comm from '@haina/utils-commons';
import { fetchJSON } from '@haina/utils-request';
// 财务管理
@ -42,7 +42,7 @@ class FinancialStore {
set_bill_filtered(values) {
if (Array.isArray(values)) {
this.credit_card_data.filteredValue = values;
} else if (comm.empty(values)) {
} else if (comm.emptyValue(values)) {
this.credit_card_data.filteredValue = [];
} else {
this.credit_card_data.filteredValue = [values];
@ -55,7 +55,7 @@ class FinancialStore {
set_table_handleChange = (pagination, filters, sorter) => {
const filters_arr = Object.values(filters);
if (!comm.empty(filters_arr)) {
if (!comm.emptyValue(filters_arr)) {
this.set_bill_filtered(filters_arr[0]);
}
};
@ -138,9 +138,9 @@ class FinancialStore {
*/
serviceModelMapper = {
'inbound': { url: '/service-Analyse2/inbound_person_num', keySort: true, dynamicsX: false },
'outbound': { url: '/service-Analyse2/outbound_person_num', keySort: true, dynamicsX: false },
'domestic': { url: '/service-Analyse2/domestic_person_num', keySort: true, dynamicsX: false },
'inbound': { url: config.HT_HOST + '/service-Analyse2/inbound_person_num', keySort: true, dynamicsX: false },
'outbound': { url: config.HT_HOST + '/service-Analyse2/outbound_person_num', keySort: true, dynamicsX: false },
'domestic': { url: config.HT_HOST + '/service-Analyse2/domestic_person_num', keySort: true, dynamicsX: false },
};
servicePersonNum = { curTab: 'inbound', loading: false,

@ -1,8 +1,8 @@
import { makeAutoObservable, runInAction, toJS } from 'mobx';
import { fetchJSON } from '../utils/request';
import { isEmpty, sortDescBy, objectMapper, groupBy, pick, unique, cloneDeep, omit, fixTo2Decimals } from '../utils/commons';
import { fetchJSON } from '@haina/utils-request';
import { isEmpty, sortDescBy, objectMapper, groupBy, pick, unique, cloneDeep, omit, fixTo2Decimals } from '@haina/utils-commons';
import { groupsMappedByCode, dataFieldAlias } from './../libs/ht';
import { DATE_FORMAT, SMALL_DATETIME_FORMAT } from './../config';
import { DATE_FORMAT, SMALL_DATETIME_FORMAT, HT_HOST } from './../config';
import moment from 'moment';
const fetchHotelData = async (param) => {
@ -24,7 +24,7 @@ const fetchHotelData = async (param) => {
CompareDateEnd: '',
Area: '-1',
};
const json = await fetchJSON('/service-Analyse2/HotelReservation', { ...defaultParam, ...param });
const json = await fetchJSON(HT_HOST + '/service-Analyse2/HotelReservation', { ...defaultParam, ...param });
return json.errcode === 0 ? json.result || [] : [];
};
@ -47,7 +47,7 @@ const fetchCruiseData = async (param) => {
PersonNumEnd: '',
Country: '-1',
};
const json = await fetchJSON('/service-Analyse2/CruiseReservation', { ...defaultParam, ...param });
const json = await fetchJSON(HT_HOST + '/service-Analyse2/CruiseReservation', { ...defaultParam, ...param });
return json.errcode === 0 ? json.result || [] : [];
};

@ -1,6 +1,7 @@
import { makeAutoObservable, runInAction, toJS } from 'mobx';
import * as req from '../utils/request';
import { isEmpty, sortBy, groupBy, cloneDeep, fixTo4Decimals, flush } from '../utils/commons';
import * as req from '@haina/utils-request';
import { isEmpty, sortBy, groupBy, cloneDeep, fixTo4Decimals, flush } from '@haina/utils-commons';
import { HT_HOST } from '../config';
import moment from 'moment';
class KPI {
@ -11,13 +12,13 @@ class KPI {
async delByID(ids) {
const data = { 'kpi_ids': ids };
const json = await req.delJSON('/service-Analyse2/delkpi_multi', data);
const json = await req.delJSON(HT_HOST + '/service-Analyse2/delkpi_multi', data);
return json.errcode === 0;
}
async saveOrUpdate(tableData) {
const data = { 'kpis': tableData };
const json = await req.postJSON('/service-Analyse2/setkpi_multi', data);
const json = await req.postJSON(HT_HOST + '/service-Analyse2/setkpi_multi', data);
return json.errcode === 0;
}
@ -39,7 +40,7 @@ class KPI {
};
this.listLoading = true;
this.pageData = [];
const json = await req.fetchJSON('/service-Analyse2/getkpi', _param);
const json = await req.fetchJSON(HT_HOST + '/service-Analyse2/getkpi', _param);
if (json.errcode === 0) {
const yearData = parseKPI(json.result, ['subject', 'object_id']);
runInAction(() => {

@ -1,15 +1,15 @@
import { makeAutoObservable, runInAction } from 'mobx';
import { fetchJSON } from '../utils/request';
import { objectMapper, pick, price_to_number, } from '../utils/commons';
import { fetchJSON } from '@haina/utils-request';
import { objectMapper, pick, price_to_number, } from '@haina/utils-commons';
import { pivotBy } from '../libs/ht';
import moment from "moment";
import { DATE_FORMAT, DATETIME_FORMAT, SMALL_DATETIME_FORMAT } from '../config';
import { DATE_FORMAT, DATETIME_FORMAT, SMALL_DATETIME_FORMAT, HT_HOST } from '../config';
/**
* 用于透视的数据
*/
const getDetailData = async (param) => {
const json = await fetchJSON('/service-Analyse2/GetTradeApartDetail', param);
const json = await fetchJSON(HT_HOST + '/service-Analyse2/GetTradeApartDetail', param);
return json.errcode === 0 ? json.result : [];
};
/**
@ -26,7 +26,7 @@ const getOrderCountByType = async (param) => {
Date2: 'COLI_ApplyDate2',
});
const url = '/service-web/QueryData/GetOrderCountByType';
const json = await fetchJSON(url, paramBody);
const json = await fetchJSON(HT_HOST + url, paramBody);
return json.errcode === 0 ? json : {};
};
const getAgentGroupInfoALL = async (param) => {
@ -37,7 +37,7 @@ const getAgentGroupInfoALL = async (param) => {
// Date2: 'OldDate2',
});
const url = '/service-web/QueryData/GetAgentGroupInfoALL';
const json = await fetchJSON(url, paramBody);
const json = await fetchJSON(HT_HOST + url, paramBody);
return json.errcode === 0 ? json : {};
};
const getDepartmentOrderMLByType = async (param) => {
@ -47,7 +47,7 @@ const getDepartmentOrderMLByType = async (param) => {
OrderType: 'OrderType', // 总览, 产品类型
});
const url = '/service-web/QueryData/GetDepartmentOrderMLByType';
const json = await fetchJSON(url, paramBody);
const json = await fetchJSON(HT_HOST + url, paramBody);
const { result1 } = json.errcode === 0 ? json : { result1: [] };
const total1 = ['COLI_CJCount', 'COLI_ML2',].reduce(
(r, col) => ({

@ -1,15 +1,15 @@
import { makeAutoObservable, runInAction } from 'mobx';
import { fetchJSON } from '../utils/request';
import { objectMapper, pick, price_to_number, } from '../utils/commons';
import { fetchJSON } from '@haina/utils-request';
import { objectMapper, pick, price_to_number, } from '@haina/utils-commons';
import { pivotBy } from './../libs/ht';
import moment from "moment";
import { DATE_FORMAT, DATETIME_FORMAT, SMALL_DATETIME_FORMAT } from '../config';
import { DATE_FORMAT, DATETIME_FORMAT, SMALL_DATETIME_FORMAT, HT_HOST } from '../config';
/**
* 用于透视的数据
*/
const getDetailData = async (param) => {
const json = await fetchJSON('/service-Analyse2/GetTradeApartDetail', param);
const json = await fetchJSON(HT_HOST + '/service-Analyse2/GetTradeApartDetail', param);
return json.errcode === 0 ? json.result : [];
};
/**
@ -26,7 +26,7 @@ const getOrderCountByType = async (param) => {
Date2: 'COLI_ApplyDate2',
});
const url = '/service-web/QueryData/GetOrderCountByType';
const json = await fetchJSON(url, paramBody);
const json = await fetchJSON(HT_HOST + url, paramBody);
return json.errcode === 0 ? json : {};
};
const getAgentGroupInfoALL = async (param) => {
@ -37,7 +37,7 @@ const getAgentGroupInfoALL = async (param) => {
Date2: 'OldDate2',
});
const url = '/service-web/QueryData/GetAgentGroupInfoALL';
const json = await fetchJSON(url, paramBody);
const json = await fetchJSON(HT_HOST + url, paramBody);
return json.errcode === 0 ? json : {};
};
const getDepartmentOrderMLByType = async (param) => {
@ -47,7 +47,7 @@ const getDepartmentOrderMLByType = async (param) => {
OrderType: 'OrderType', // 总览, 产品类型
});
const url = '/service-web/QueryData/GetDepartmentOrderMLByType';
const json = await fetchJSON(url, paramBody);
const json = await fetchJSON(HT_HOST + url, paramBody);
const { result1 } = json.errcode === 0 ? json : { result1: [] };
const total1 = ['COLI_CJCount', 'COLI_ML2',].reduce(
(r, col) => ({

@ -2,7 +2,7 @@ import { makeAutoObservable, runInAction, toJS } from "mobx";
import { CaretUpOutlined, CaretDownOutlined } from "@ant-design/icons";
import { Tag } from "antd";
import * as config from "../config";
import * as comm from "../utils/commons";
import * as comm from '@haina/utils-commons';
import moment from "moment";
import { NavLink } from "react-router-dom";
import { groupsMappedByCode } from './../libs/ht';
@ -99,7 +99,7 @@ class OrdersStore {
// 比如2022-10-01~2022-10-30 vs 2021-10-01~2021-10-30 则需要在2021年的时间段加365天的时间映射成2022起始时间段
// 相差的天数用a.diff(b, 'days')计算
format_data_source(data_source, start_date, end_date) {
const result = [];
const result = {};
for (const item of data_source.ordercount1) {
if (result[item.ApplyDate]) {
result[item.ApplyDate].yField += item.orderCount;
@ -130,7 +130,7 @@ class OrdersStore {
}
}
}
return comm.set_array_index(result);
return Object.values(result);
}
/**

@ -1,10 +1,11 @@
import { makeAutoObservable, runInAction } from 'mobx';
import moment from 'moment';
import * as config from '../config';
import * as comm from '../utils/commons';
import * as comm from '@haina/utils-commons';
import { show_vs_tag, } from "./../utils/commons";
import { NavLink } from 'react-router-dom';
import { groupsMappedByCode, dataFieldAlias } from './../libs/ht';
import * as req from '../utils/request';
import * as req from '@haina/utils-request';
import { parseKPI } from './KPI';
import { parseMergeItem } from './Trade';
@ -107,8 +108,8 @@ class SaleStore {
let result = [];
const date1_start = date_moment.start_date.format(config.DATE_FORMAT);
const date1_end = date_moment.end_date.format(config.DATE_FORMAT);
const date2_start = comm.empty(date_moment.start_date_cp) ? '' : date_moment.start_date_cp.format(config.DATE_FORMAT);
const date2_end = comm.empty(date_moment.end_date_cp) ? '' : date_moment.end_date_cp.format(config.DATE_FORMAT);
const date2_start = comm.emptyValue(date_moment.start_date_cp) ? '' : date_moment.start_date_cp.format(config.DATE_FORMAT);
const date2_end = comm.emptyValue(date_moment.end_date_cp) ? '' : date_moment.end_date_cp.format(config.DATE_FORMAT);
this.loading = true;
this.date_title = `${date1_start}~${date1_end}`;
let url = '/service-web/QueryData/GetDepartmentOrderML';
@ -122,7 +123,7 @@ class SaleStore {
.then((response) => response.json())
.then((json) => {
result = json.result1;
// if (!comm.empty(json.result2) && !comm.empty(date_moment.start_date_cp)) {
// if (!comm.emptyValue(json.result2) && !comm.emptyValue(date_moment.start_date_cp)) {
// let diff_days = date_moment.start_date.diff(date_moment.start_date_cp, "days");
// for (let item of json.result2) {
// result.push({
@ -149,8 +150,8 @@ class SaleStore {
const result = { dataSource: [], columns: [] };
const date1_start = date_moment.start_date.format(config.DATE_FORMAT);
const date1_end = date_moment.end_date.format(config.DATE_FORMAT);
const date2_start = comm.empty(date_moment.start_date_cp) ? '' : date_moment.start_date_cp.format(config.DATE_FORMAT);
const date2_end = comm.empty(date_moment.end_date_cp) ? '' : date_moment.end_date_cp.format(config.DATE_FORMAT);
const date2_start = comm.emptyValue(date_moment.start_date_cp) ? '' : date_moment.start_date_cp.format(config.DATE_FORMAT);
const date2_end = comm.emptyValue(date_moment.end_date_cp) ? '' : date_moment.end_date_cp.format(config.DATE_FORMAT);
this.loading_table = true;
this.date_title = `${date1_start}~${date1_end}`;
let url = '/service-web/QueryData/GetDepartmentOrderMLByType';
@ -163,7 +164,7 @@ class SaleStore {
fetch(config.HT_HOST + url)
.then((response) => response.json())
.then((json) => {
// if (!comm.empty(json.result2) && !comm.empty(date_moment.start_date_cp)) {
// if (!comm.emptyValue(json.result2) && !comm.emptyValue(date_moment.start_date_cp)) {
// eslint-disable-next-line no-constant-condition
if (false) {
} else {
@ -383,7 +384,7 @@ class SaleStore {
const items = mergeDiffData.filter((d) => String(d.OPI_SN) === String(item.OPI_SN)); // 筛选出有当前顾问的记录
const total_data_value = items.length ? items.reduce((a, b) => a + b.COLI_YJLY, 0) : ''; // 记录累加
const total_data_value_diff = items.length ? items.reduce((a, b) => a + b.COLI_YJLY2, 0) : ''; // 记录累加
if (comm.empty(type_data[op_sn])) {
if (comm.emptyValue(type_data[op_sn])) {
type_data[op_sn] = [{ key: item.OPI_SN }, { T_name: item.OPI_Name }, { T_OPI: item.OPI_SN }, { T_total: total_data_value }, { V_total: total_data_value_diff }];
}
const _diff = comm.objectMapper(comm.pick(item, ['COLI_YJLY_diff', 'COLI_YJLY_vs', 'COLI_YJLY2']), {
@ -393,7 +394,7 @@ class SaleStore {
});
type_data[op_sn].push({
['T_' + item.SubTypeSN]: diffDateFlagYes
? comm.show_vs_tag(_diff[`vs_${item.SubTypeSN}`]+'%', _diff[`diff_${item.SubTypeSN}`], item.COLI_YJLY, _diff[`v_${item.SubTypeSN}`])
? show_vs_tag(_diff[`vs_${item.SubTypeSN}`]+'%', _diff[`diff_${item.SubTypeSN}`], item.COLI_YJLY, _diff[`v_${item.SubTypeSN}`])
: item.COLI_YJLY,
..._diff,
[`TV_${item.SubTypeSN}`]: item.COLI_YJLY,
@ -427,7 +428,7 @@ class SaleStore {
children: [
{
title: diffDateFlagYes
? comm.show_vs_tag(totalDiff.vs, totalDiff.diff, totalDiff.val, totalDiff.diffVal)
? show_vs_tag(totalDiff.vs, totalDiff.diff, totalDiff.val, totalDiff.diffVal)
: type_data_arr.reduce((a, b) => a + b.T_total, 0),
dataIndex: 'T_total',
},
@ -447,7 +448,7 @@ class SaleStore {
};
result.columns.push({
title: item.SubTypeName, _val: total_data_value,
children: [{ title: diffDateFlagYes ? comm.show_vs_tag(columnDiff.vs, columnDiff.diff, total_data_value, total_data_value_diff) : total_data_value, dataIndex: data_index }],
children: [{ title: diffDateFlagYes ? show_vs_tag(columnDiff.vs, columnDiff.diff, total_data_value, total_data_value_diff) : total_data_value, dataIndex: data_index }],
sorter: (a, b) => b[`TV_${item.SubTypeSN}`] - a[`TV_${item.SubTypeSN}`],
});
return item;
@ -476,8 +477,8 @@ class SaleStore {
const result = { dataSource: [], columns: [] };
const date1_start = date_moment.start_date.format(config.DATE_FORMAT);
const date1_end = date_moment.end_date.format(config.DATE_FORMAT);
const date2_start = comm.empty(date_moment.start_date_cp) ? '' : date_moment.start_date_cp.format(config.DATE_FORMAT);
const date2_end = comm.empty(date_moment.end_date_cp) ? '' : date_moment.end_date_cp.format(config.DATE_FORMAT);
const date2_start = comm.emptyValue(date_moment.start_date_cp) ? '' : date_moment.start_date_cp.format(config.DATE_FORMAT);
const date2_end = comm.emptyValue(date_moment.end_date_cp) ? '' : date_moment.end_date_cp.format(config.DATE_FORMAT);
let url = '/service-web/QueryData/GetDepartmentOrderMLByType_sub';
url += `?DepartmentList=${this.groups.toString()}&DateType=${this.date_type}&subType=${type_sub}&subTypeVal=-1&WebCode=${this.webcode}&IncludeTickets=${this.include_tickets}`;
url += `&Date1=${date1_start}&Date2=${date1_end}%2023:59:00`;
@ -488,7 +489,7 @@ class SaleStore {
fetch(config.HT_HOST + url)
.then((response) => response.json())
.then((json) => {
// if (!comm.empty(json.result2) && !comm.empty(date_moment.start_date_cp)) {
// if (!comm.emptyValue(json.result2) && !comm.emptyValue(date_moment.start_date_cp)) {
// eslint-disable-next-line no-constant-condition
if (false) {
} else {
@ -533,10 +534,10 @@ class SaleStore {
];
// 数据处理,把相同类型放入同一个数组
const type_data = [];
!comm.empty(json.result1) &&
!comm.emptyValue(json.result1) &&
Object.values(json.result1).map((item) => {
const subtype_sn = 'type_' + item.subType;
if (comm.empty(type_data[subtype_sn])) {
if (comm.emptyValue(type_data[subtype_sn])) {
type_data[subtype_sn] = { subType: item.subType, subType_name: item.subTypeVal, data: [item] };
} else {
type_data[subtype_sn].data.push(item);
@ -641,7 +642,7 @@ class SaleStore {
});
Object.assign(getkpiParam, { object: curObject, subject: 'sum_profit' });
getkpiParam.object_id = curObject === 'overview' ? '' : objects.map((ele) => ele.key).join(',');
const json = await req.fetchJSON('/service-Analyse2/getkpi', getkpiParam);
const json = await req.fetchJSON(config.HT_HOST + '/service-Analyse2/getkpi', getkpiParam);
if (json.errcode === 0) {
const yearData = parseKPI(json.result, ['subject', 'object_id']);
const year = moment(queryData.Date1).year();
@ -654,7 +655,7 @@ class SaleStore {
* 获取业绩数据
*/
async fetchTradeData(queryData) {
const json = await req.fetchJSON('/service-Analyse2/GetTradeProcess', queryData);
const json = await req.fetchJSON(config.HT_HOST + '/service-Analyse2/GetTradeProcess', queryData);
return json;
}
@ -662,7 +663,7 @@ class SaleStore {
* 获取业绩数据: 商务订单
*/
async fetchTradeDataBiz(queryData) {
const json = await req.fetchJSON('/service-Analyse2/GetTradeProcess_biz', queryData);
const json = await req.fetchJSON(config.HT_HOST + '/service-Analyse2/GetTradeProcess_biz', queryData);
return json;
}

@ -1,8 +1,8 @@
import { makeAutoObservable, runInAction } from 'mobx';
import { fetchJSON } from '../utils/request';
import { isEmpty, sortDescBy, groupBy, pick, unique } from '../utils/commons';
import { fetchJSON } from '@haina/utils-request';
import { isEmpty, sortDescBy, groupBy, pick, unique } from '@haina/utils-commons';
import { groupsMappedByCode } from './../libs/ht';
import { DATE_FORMAT, SMALL_DATETIME_FORMAT } from './../config';
import { DATE_FORMAT, SMALL_DATETIME_FORMAT, HT_HOST } from './../config';
import moment from 'moment';
const fetchResultsData = async (param) => {
@ -15,7 +15,7 @@ const fetchResultsData = async (param) => {
groupType: '',
groupDateType: '',
};
const json = await fetchJSON('/service-Analyse2/sales_crm_results', { ...defaultParam, ...param });
const json = await fetchJSON(HT_HOST + '/service-Analyse2/sales_crm_results', { ...defaultParam, ...param });
return json.errcode === 0 ? json.result : [];
};
@ -29,7 +29,7 @@ const fetchProcessData = async (param) => {
groupType: '',
groupDateType: '',
};
const json = await fetchJSON('/service-Analyse2/sales_crm_process', { ...defaultParam, ...param });
const json = await fetchJSON(HT_HOST + '/service-Analyse2/sales_crm_process', { ...defaultParam, ...param });
return json.errcode === 0 ? json.result : [];
};
@ -43,7 +43,7 @@ const fetchRiskDetailData = async (param) => {
Date2: '',
IncludeTickets: '1',
};
const json = await fetchJSON('/service-Analyse2/sales_crm_process_detail', {...defaultParam, ...param});
const json = await fetchJSON(HT_HOST + '/service-Analyse2/sales_crm_process_detail', {...defaultParam, ...param});
return json.errcode === 0 ? json.result : [];
};

@ -1,9 +1,9 @@
import { makeAutoObservable, runInAction, toJS } from 'mobx';
import * as req from '../utils/request';
import * as req from '@haina/utils-request';
import moment from 'moment';
import { isEmpty, sortBy, pick, merge, fixTo2Decimals, groupBy, sortKeys, fixToInt, cloneDeep } from '../utils/commons';
import { isEmpty, sortBy, pick, merge, fixTo2Decimals, groupBy, sortKeys, fixToInt, cloneDeep } from '@haina/utils-commons';
import { dataFieldAlias } from './../libs/ht';
import { DATE_FORMAT, SMALL_DATETIME_FORMAT } from './../config';
import { DATE_FORMAT, SMALL_DATETIME_FORMAT, HT_HOST } from './../config';
class Trade {
constructor(rootStore) {
@ -286,7 +286,7 @@ class Trade {
* 获取业绩数据: 传统订单
*/
async fetchTradeData(queryData) {
const json = await req.fetchJSON('/service-Analyse2/GetTradeProcess', queryData);
const json = await req.fetchJSON(HT_HOST + '/service-Analyse2/GetTradeProcess', queryData);
// if (json.errcode === 0) {
// return json;
// }
@ -297,7 +297,7 @@ class Trade {
* 获取业绩数据: 商务订单
*/
async fetchTradeDataBiz(queryData) {
const json = await req.fetchJSON('/service-Analyse2/GetTradeProcess_biz', queryData);
const json = await req.fetchJSON(HT_HOST + '/service-Analyse2/GetTradeProcess_biz', queryData);
// if (json.errcode === 0) {
// return json;
// }

@ -1,6 +1,6 @@
import {makeAutoObservable, runInAction} from "mobx";
import * as config from "../config";
import * as req from '../utils/request';
import * as req from '@haina/utils-request';
class Wechat {

@ -1,6 +1,6 @@
import {makeAutoObservable, runInAction} from "mobx";
import * as config from "../config";
import * as req from '../utils/request';
import * as req from '@haina/utils-request';
class WhatsApp {

@ -11,7 +11,8 @@ import Business_unit from "../components/search/BusinessSelect";
import DatePickerCharts from "../components/search/DatePickerCharts";
import SearchForm from './../components/search/SearchForm';
import { Line, Pie } from "@ant-design/charts";
import * as comm from "../utils/commons";
import * as comm from '@haina/utils-commons';
import { show_vs_tag } from './../utils/commons';
import * as config from "../config";
const Credit_card_bill = () => {
@ -20,7 +21,7 @@ const Credit_card_bill = () => {
const format_data = data => {
const result = { dataSource: [], columns: [] };
if (!comm.empty(data)) {
if (!comm.emptyValue(data)) {
if (date_picker_store.start_date_cp && date_picker_store.end_date_cp) {
//
const total_data1 = data.BillTypeDataTotal1;
@ -49,7 +50,7 @@ const Credit_card_bill = () => {
title: "美金",
children: [
{
title: comm.show_vs_tag(total_data1.usd_vs, total_data1.usd_diff, total_data1.cb_usd, total_data2.cb_usd),
title: show_vs_tag(total_data1.usd_vs, total_data1.usd_diff, total_data1.cb_usd, total_data2.cb_usd),
dataIndex: "cb_usd",
},
],
@ -58,7 +59,7 @@ const Credit_card_bill = () => {
title: "人民币",
children: [
{
title: comm.show_vs_tag(total_data1.rmb_vs, total_data1.rmb_diff, total_data1.cb_rmb, total_data2.cb_rmb),
title: show_vs_tag(total_data1.rmb_vs, total_data1.rmb_diff, total_data1.cb_rmb, total_data2.cb_rmb),
dataIndex: "cb_rmb",
},
],
@ -71,8 +72,8 @@ const Credit_card_bill = () => {
key: item.key,
cb_billtype: item.cb_billtype,
groups: item.groups,
cb_usd: comm.show_vs_tag(item.usd_vs, item.usd_diff, item.cb_usd, item2.cb_usd),
cb_rmb: comm.show_vs_tag(item.rmb_vs, item.rmb_diff, item.cb_rmb, item2.cb_rmb),
cb_usd: show_vs_tag(item.usd_vs, item.usd_diff, item.cb_usd, item2.cb_usd),
cb_rmb: show_vs_tag(item.rmb_vs, item.rmb_diff, item.cb_rmb, item2.cb_rmb),
});
}
}
@ -124,7 +125,7 @@ const Credit_card_bill = () => {
const format_data_detail = data => {
const result = { dataSource: [], columns: [] };
if (!comm.empty(data)) {
if (!comm.emptyValue(data)) {
let show_vs = false;
let usd_totle1;
let usd_totle2;
@ -185,7 +186,7 @@ const Credit_card_bill = () => {
title: "美金",
children: [
{
title: show_vs ? comm.show_vs_tag(usd_vs, usd_diff, usd_totle1, usd_totle2) : usd_totle1,
title: show_vs ? show_vs_tag(usd_vs, usd_diff, usd_totle1, usd_totle2) : usd_totle1,
dataIndex: "cb_usd",
},
],
@ -195,7 +196,7 @@ const Credit_card_bill = () => {
title: "人民币",
children: [
{
title: show_vs ? comm.show_vs_tag(rmb_vs, rmb_diff, rmb_totle1, rmb_totle2) : rmb_totle1,
title: show_vs ? show_vs_tag(rmb_vs, rmb_diff, rmb_totle1, rmb_totle2) : rmb_totle1,
dataIndex: "cb_rmb",
},
],
@ -231,8 +232,8 @@ const Credit_card_bill = () => {
return data.map(item => ({...item, cb_usd_number: parseFloat(item.cb_usd.replace(/,/g, ""))}));
};
const credit_card_bills = !comm.empty(credit_card_data.data) ? format_data_detail(credit_card_data.data) : format_data_detail([]);
const credit_card_bills_by_type = !comm.empty(credit_card_data.data_by_type) ? format_data(credit_card_data.data_by_type) : format_data([]);
const credit_card_bills = !comm.emptyValue(credit_card_data.data) ? format_data_detail(credit_card_data.data) : format_data_detail([]);
const credit_card_bills_by_type = !comm.emptyValue(credit_card_data.data_by_type) ? format_data(credit_card_data.data_by_type) : format_data([]);
const pie_config = {
appendPadding: 10,

@ -3,7 +3,7 @@ import { observer } from 'mobx-react';
import { useParams, useLocation } from 'react-router-dom';
import { stores_Context } from '../config';
import { Row, Col, Spin, Table, Select, Typography, Card, Button, Space, Divider, Alert } from 'antd';
import { cloneDeep, groupBy, isEmpty, omit, pick, sortBy, unique, cartesianProductArray, fixTo2Decimals } from '../utils/commons';
import { cloneDeep, groupBy, isEmpty, omit, pick, sortBy, unique, cartesianProductArray, fixTo2Decimals } from '@haina/utils-commons';
import { dataFieldAlias, pivotBy } from '../libs/ht';
import SearchForm from '../components/search/SearchForm';
import { Line } from '@ant-design/plots';

@ -2,7 +2,7 @@ import { useContext, useEffect, useMemo } from 'react';
import { observer } from 'mobx-react';
import { stores_Context } from '../config';
import { Row, Col, Spin, Space, Radio, Tabs, Table } from 'antd';
import { empty } from '../utils/commons';
import { emptyValue } from '@haina/utils-commons';
import { dataFieldAlias } from '../libs/ht';
import Scatter from './../components/Scatter';
import SearchForm from './../components/search/SearchForm';
@ -20,7 +20,7 @@ export default observer((props) => {
};
useEffect(() => {
if (empty(detailData.dataSource)) {
if (emptyValue(detailData.dataSource)) {
detailRefresh();
}
}, []);

@ -4,7 +4,7 @@ import { stores_Context } from '../config';
import { Row, Col, Spin, Tabs, Table, Space, Typography, Divider } from 'antd';
import { RingProgress } from '@ant-design/plots';
import SearchForm from './../components/search/SearchForm';
import { empty } from '../utils/commons';
import { emptyValue } from '@haina/utils-commons';
import { dataFieldAlias } from '../libs/ht';
import { VSTag, TableExportBtn } from './../components/Data';
import MixYnQ from './../components/MixYnQ';
@ -51,7 +51,7 @@ export default observer(() => {
const onTabsChange = (tab) => {
DistributionStore.setCurTab(tab);
if (empty(DistributionStore[tab].dataSource)) {
if (emptyValue(DistributionStore[tab].dataSource)) {
pageRefresh();
}
};

@ -13,7 +13,7 @@ import LineWithKPI from '../components/LineWithKPI';
import DataFieldRadio from '../components/DataFieldRadio';
import { datePartOptions } from './../components/DateGroupRadio/date';
import SearchForm from './../components/search/SearchForm';
import { empty, cloneDeep, isEmpty } from './../utils/commons';
import { cloneDeep, isEmpty } from '@haina/utils-commons';
import { dataFieldAlias } from './../libs/ht';
import './home.css';

@ -5,7 +5,7 @@ import { observer } from 'mobx-react';
import 'moment/locale/zh-cn';
import SearchForm from '../components/search/SearchForm';
import { TableExportBtn } from '../components/Data';
import * as comm from '../utils/commons';
import * as comm from '@haina/utils-commons';
const HostCaseCount = () => {
const { customer_store, date_picker_store } = useContext(stores_Context);

@ -2,7 +2,7 @@ import { useContext, useEffect, useState } from 'react';
import { stores_Context } from './../config';
import { observer } from 'mobx-react';
import { Row, Col, Tabs, Spin } from 'antd';
import { flush, isEmpty, objectMapper, pick } from './../utils/commons';
import { flush, isEmpty, objectMapper, pick } from '@haina/utils-commons';
import { KPIObjects } from './../libs/ht';
import ObjectPanel from '../components/kpi/ObjectPanel';
import OverviewPanel from './../components/kpi/OverviewPanel';

@ -5,7 +5,7 @@ import { Table, Row, Col, Divider, Tooltip } from 'antd';
import { InfoCircleOutlined } from '@ant-design/icons';
import SearchForm from '../components/search/SearchForm';
import { TableExportBtn } from './../components/Data';
import { fixTo2Decimals } from './../utils/commons';
import { fixTo2Decimals } from '@haina/utils-commons';
const numberConvert10K = (number, scale = 10) => {
return fixTo2Decimals(number / (1000 * scale)) + '';

@ -5,7 +5,7 @@ import { Table, Row, Col, Divider, Tooltip } from 'antd';
import { InfoCircleOutlined } from '@ant-design/icons';
import SearchForm from '../components/search/SearchForm';
import { TableExportBtn } from './../components/Data';
import { fixTo2Decimals } from './../utils/commons';
import { fixTo2Decimals } from '@haina/utils-commons';
const numberConvert10K = (number, scale = 10) => {
return fixTo2Decimals(number / (1000 * scale)) + '';

@ -6,7 +6,8 @@ import { Line, Pie, } from "@ant-design/charts";
import { observer } from "mobx-react";
import * as config from "../config";
import { NavLink } from "react-router-dom";
import * as comm from "../utils/commons";
import * as comm from '@haina/utils-commons';
import { show_vs_tag } from './../utils/commons';
import { utils, writeFileXLSX } from "xlsx";
import DateGroupRadio from '../components/DateGroupRadio';
import SearchForm from './../components/search/SearchForm';
@ -23,7 +24,7 @@ class Orders extends Component {
format_data(data) {
const { date_picker_store, orders_store } = this.context;
const result = { dataSource: [], columns: [] };
if (!comm.empty(data)) {
if (!comm.emptyValue(data)) {
const ordercountTotal1 = data.ordercountTotal1;
const ordercountTotal2 = data.ordercountTotal2;
if (date_picker_store.start_date_cp && date_picker_store.end_date_cp) {
@ -57,7 +58,7 @@ class Orders extends Component {
title: '数量',
children: [
{
title: comm.show_vs_tag(ordercountTotal1.OrderCount_vs, ordercountTotal1.OrderCount_diff, ordercountTotal1.OrderCount, ordercountTotal2.OrderCount),
title: show_vs_tag(ordercountTotal1.OrderCount_vs, ordercountTotal1.OrderCount_diff, ordercountTotal1.OrderCount, ordercountTotal2.OrderCount),
titleX: [ordercountTotal1.OrderCount, ordercountTotal2.OrderCount].join(' vs '),
dataIndex: 'OrderCount',
},
@ -67,7 +68,7 @@ class Orders extends Component {
title: '成交数',
children: [
{
title: comm.show_vs_tag(ordercountTotal1.CJCount_vs, ordercountTotal1.CJCount_diff, ordercountTotal1.CJCount, ordercountTotal2.CJCount),
title: show_vs_tag(ordercountTotal1.CJCount_vs, ordercountTotal1.CJCount_diff, ordercountTotal1.CJCount, ordercountTotal2.CJCount),
titleX: [ordercountTotal1.CJCount, ordercountTotal2.CJCount].join(' vs '),
dataIndex: 'CJCount',
},
@ -77,7 +78,7 @@ class Orders extends Component {
title: '成交人数',
children: [
{
title: comm.show_vs_tag(ordercountTotal1.CJPersonNum_vs, ordercountTotal1.CJPersonNum_diff, ordercountTotal1.CJPersonNum, ordercountTotal2.CJPersonNum),
title: show_vs_tag(ordercountTotal1.CJPersonNum_vs, ordercountTotal1.CJPersonNum_diff, ordercountTotal1.CJPersonNum, ordercountTotal2.CJPersonNum),
titleX: [ordercountTotal1.CJPersonNum, ordercountTotal2.CJPersonNum].join(' vs '),
dataIndex: 'CJPersonNum',
},
@ -87,7 +88,7 @@ class Orders extends Component {
title: '成交率',
children: [
{
title: comm.show_vs_tag(ordercountTotal1.CJrate_vs, ordercountTotal1.CJrate_diff, ordercountTotal1.CJrate, ordercountTotal2.CJrate),
title: show_vs_tag(ordercountTotal1.CJrate_vs, ordercountTotal1.CJrate_diff, ordercountTotal1.CJrate, ordercountTotal2.CJrate),
titleX: [ordercountTotal1.CJrate, ordercountTotal2.CJrate].join(' vs '),
dataIndex: 'CJrate',
},
@ -97,7 +98,7 @@ class Orders extends Component {
title: '成交毛利(预计)',
children: [
{
title: comm.show_vs_tag(ordercountTotal1.YJLY_vs, ordercountTotal1.YJLY_diff, ordercountTotal1.YJLY, ordercountTotal2.YJLY),
title: show_vs_tag(ordercountTotal1.YJLY_vs, ordercountTotal1.YJLY_diff, ordercountTotal1.YJLY, ordercountTotal2.YJLY),
titleX: [ordercountTotal1.YJLY, ordercountTotal2.YJLY].join(' vs '),
dataIndex: 'YJLY',
},
@ -108,7 +109,7 @@ class Orders extends Component {
title: '单个订单价值',
children: [
{
title: comm.show_vs_tag(ordercountTotal1.Ordervalue_vs, ordercountTotal1.Ordervalue_diff, ordercountTotal1.Ordervalue, ordercountTotal2.Ordervalue),
title: show_vs_tag(ordercountTotal1.Ordervalue_vs, ordercountTotal1.Ordervalue_diff, ordercountTotal1.Ordervalue, ordercountTotal2.Ordervalue),
titleX: [ordercountTotal1.Ordervalue, ordercountTotal2.Ordervalue].join(' vs '),
dataIndex: 'Ordervalue',
},
@ -127,17 +128,17 @@ class Orders extends Component {
key: item.key,
OrderType: item.OrderType,
OrderTypeSN: item.OrderTypeSN,
OrderCount: comm.show_vs_tag(item.OrderCount_vs, item.OrderCount_diff, item.OrderCount, item2.OrderCount),
OrderCount: show_vs_tag(item.OrderCount_vs, item.OrderCount_diff, item.OrderCount, item2.OrderCount),
OrderCount_X: ([item.OrderCount, item2.OrderCount].join(' vs ')),
CJCount: comm.show_vs_tag(item.CJCount_vs, item.CJCount_diff, item.CJCount, item2.CJCount),
CJCount: show_vs_tag(item.CJCount_vs, item.CJCount_diff, item.CJCount, item2.CJCount),
CJCount_X: ([item.CJCount, item2.CJCount].join(' vs ')),
CJPersonNum: comm.show_vs_tag(item.CJPersonNum_vs, item.CJPersonNum_diff, item.CJPersonNum, item2.CJPersonNum),
CJPersonNum: show_vs_tag(item.CJPersonNum_vs, item.CJPersonNum_diff, item.CJPersonNum, item2.CJPersonNum),
CJPersonNum_X: ([item.CJPersonNum, item2.CJPersonNum].join(' vs ')),
CJrate: comm.show_vs_tag(item.CJrate_vs, item.CJrate_diff, item.CJrate, item2.CJrate),
CJrate: show_vs_tag(item.CJrate_vs, item.CJrate_diff, item.CJrate, item2.CJrate),
CJrate_X: ([item.CJrate, item2.CJrate].join(' vs ')),
YJLY: comm.show_vs_tag(item.YJLY_vs, item.YJLY_diff, item.YJLY, item2.YJLY),
YJLY: show_vs_tag(item.YJLY_vs, item.YJLY_diff, item.YJLY, item2.YJLY),
YJLY_X: ([item.YJLY, item2.YJLY].join(' vs ')),
Ordervalue: comm.show_vs_tag(item.Ordervalue_vs, item.Ordervalue_diff, item.Ordervalue, item2.Ordervalue),
Ordervalue: show_vs_tag(item.Ordervalue_vs, item.Ordervalue_diff, item.Ordervalue, item2.Ordervalue),
Ordervalue_X: ([item.Ordervalue, item2.Ordervalue].join(' vs ')),
});
}
@ -148,17 +149,17 @@ class Orders extends Component {
key: item.key,
OrderType: item.OrderType,
OrderTypeSN: item.OrderTypeSN,
OrderCount: comm.show_vs_tag(comm.formatPercent(item.OrderCount), item.OrderCount, item.OrderCount, 0),
OrderCount: show_vs_tag(comm.formatPercent(item.OrderCount), item.OrderCount, item.OrderCount, 0),
OrderCount_X: ([item.OrderCount, 0].join(' vs ')),
CJCount: comm.show_vs_tag(comm.formatPercent(item.CJCount), item.CJCount, item.CJCount, 0),
CJCount: show_vs_tag(comm.formatPercent(item.CJCount), item.CJCount, item.CJCount, 0),
CJCount_X: ([item.CJCount, 0].join(' vs ')),
CJPersonNum: comm.show_vs_tag(comm.formatPercent(item.CJPersonNum), item.CJPersonNum, item.CJPersonNum, 0),
CJPersonNum: show_vs_tag(comm.formatPercent(item.CJPersonNum), item.CJPersonNum, item.CJPersonNum, 0),
CJPersonNum_X: ([item.CJPersonNum, 0].join(' vs ')),
CJrate: comm.show_vs_tag(item.CJrate, item.CJrate, item.CJrate, 0),
CJrate: show_vs_tag(item.CJrate, item.CJrate, item.CJrate, 0),
CJrate_X: ([item.CJrate, 0].join(' vs ')),
YJLY: comm.show_vs_tag(comm.formatPercent(item.YJLY), item.YJLY, item.YJLY, 0),
YJLY: show_vs_tag(comm.formatPercent(item.YJLY), item.YJLY, item.YJLY, 0),
YJLY_X: ([item.YJLY, 0].join(' vs ')),
Ordervalue: comm.show_vs_tag(comm.formatPercent(item.Ordervalue), item.Ordervalue, item.Ordervalue, 0),
Ordervalue: show_vs_tag(comm.formatPercent(item.Ordervalue), item.Ordervalue, item.Ordervalue, 0),
Ordervalue_X: ([item.Ordervalue, 0].join(' vs ')),
});
}
@ -176,17 +177,17 @@ class Orders extends Component {
key: item2.key,
OrderType: item2.OrderType,
OrderTypeSN: item2.OrderTypeSN,
OrderCount: comm.show_vs_tag(comm.formatPercent(-item2.OrderCount), -item2.OrderCount, 0, item2.OrderCount),
OrderCount: show_vs_tag(comm.formatPercent(-item2.OrderCount), -item2.OrderCount, 0, item2.OrderCount),
OrderCount_X: ([ 0, item2.OrderCount].join(' vs ')),
CJCount: comm.show_vs_tag(comm.formatPercent(-item2.CJCount), -item2.CJCount, 0, item2.CJCount),
CJCount: show_vs_tag(comm.formatPercent(-item2.CJCount), -item2.CJCount, 0, item2.CJCount),
CJCount_X: ([ 0, item2.CJCount].join(' vs ')),
CJPersonNum: comm.show_vs_tag(comm.formatPercent(-item2.CJPersonNum), -item2.CJPersonNum, 0, item2.CJPersonNum),
CJPersonNum: show_vs_tag(comm.formatPercent(-item2.CJPersonNum), -item2.CJPersonNum, 0, item2.CJPersonNum),
CJPersonNum_X: ([0, item2.CJPersonNum].join(' vs ')),
CJrate: comm.show_vs_tag(-item2.CJrate, -item2.CJrate, 0, item2.CJrate),
CJrate: show_vs_tag(-item2.CJrate, -item2.CJrate, 0, item2.CJrate),
CJrate_X: ([ 0, item2.CJrate].join(' vs ')),
YJLY: comm.show_vs_tag(comm.formatPercent(-item2.YJLY), -item2.YJLY, 0, item2.YJLY),
YJLY: show_vs_tag(comm.formatPercent(-item2.YJLY), -item2.YJLY, 0, item2.YJLY),
YJLY_X: ([0, item2.YJLY].join(' vs ')),
Ordervalue: comm.show_vs_tag(comm.formatPercent(-item2.Ordervalue), -item2.Ordervalue, 0, item2.Ordervalue),
Ordervalue: show_vs_tag(comm.formatPercent(-item2.Ordervalue), -item2.Ordervalue, 0, item2.Ordervalue),
Ordervalue_X: ([ 0, item2.Ordervalue].join(' vs ')),
});
}
@ -255,10 +256,10 @@ class Orders extends Component {
const table_data = orders_store.orderCountData_Form ? this.format_data(orders_store.orderCountData_Form) : [];
const data_source = orders_store.orderCountData ? orders_store.orderCountData : [];
const avg_line_y = Math.round(orders_store.avgLine1);
const pie_data = comm.empty(orders_store.orderCountData_Form)
const pie_data = comm.emptyValue(orders_store.orderCountData_Form)
? []
: orders_store.orderCountData_Form.ordercount1.map((ele) => ({ ...ele, YJLYx: comm.price_to_number(ele.YJLY) })); //
const pie_data2 = comm.empty(orders_store.orderCountData_Form)
const pie_data2 = comm.emptyValue(orders_store.orderCountData_Form)
? []
: orders_store.orderCountData_Form.ordercount2.map((ele) => ({ ...ele, YJLYx: comm.price_to_number(ele.YJLY) }));

@ -5,7 +5,7 @@ import { stores_Context } from "../config";
import { Line } from "@ant-design/charts";
import { observer } from "mobx-react";
import { NavLink, useParams } from "react-router-dom";
import * as comm from "../utils/commons";
import * as comm from '@haina/utils-commons';
import * as config from "../config";
import { utils, writeFileXLSX } from "xlsx";
import DateGroupRadio from '../components/DateGroupRadio';
@ -80,7 +80,7 @@ const Orders_sub = () => {
const format_data = data => {
const result = { dataSource: [], columns: [] };
if (!comm.empty(data)) {
if (!comm.emptyValue(data)) {
result.columns = [
{
title: "页面",
@ -108,7 +108,7 @@ const Orders_sub = () => {
const format_data_detail = data => {
const result = { dataSource: [], columns: [] };
if (!comm.empty(data)) {
if (!comm.emptyValue(data)) {
result.columns = [
{
title: "订单号",

@ -4,7 +4,7 @@ import { ContainerOutlined, UserSwitchOutlined } from '@ant-design/icons';
import { stores_Context } from '../config';
import { Column, Pie } from '@ant-design/charts';
import { observer } from 'mobx-react';
import * as comm from '../utils/commons';
import * as comm from '@haina/utils-commons';
import { utils, writeFileXLSX } from 'xlsx';
import SearchForm from './../components/search/SearchForm';
import { TableExportBtn } from './../components/Data';
@ -13,7 +13,7 @@ const Sale = () => {
const { sale_store, date_picker_store } = useContext(stores_Context);
//const ml_data = sale_store.ml_data; //
const type_data = comm.empty(sale_store.type_data) ? { dataSource: [], columns: [] } : sale_store.type_data; //
const type_data = comm.emptyValue(sale_store.type_data) ? { dataSource: [], columns: [] } : sale_store.type_data; //
const column_config_create = (tab_name) => {
let average_value = 0; //线

@ -2,7 +2,7 @@ import React, { useContext, useState } from 'react';
import { Row, Col, Table, Select, Space, Typography, Progress, Spin, Divider, Button, Switch } from 'antd';
import { stores_Context } from '../config';
import { observer } from 'mobx-react';
import * as comm from '../utils/commons';
import * as comm from '@haina/utils-commons';
import SearchForm from './../components/search/SearchForm';
import { dataFieldAlias, overviewGroup } from '../libs/ht';
import Donut from './../components/Donut';

@ -6,7 +6,7 @@ import { Column, Pie } from "@ant-design/charts";
import { observer } from "mobx-react";
import DatePickerCharts from "../components/search/DatePickerCharts";
import { NavLink, useParams } from "react-router-dom";
import * as comm from "../utils/commons";
import * as comm from '@haina/utils-commons';
import * as config from "../config";
import GroupSelect from "../components/search/GroupSelect";
@ -18,7 +18,7 @@ const Sale_sub = () => {
sale_store.get_department_order_ml_by_type_sub(date_picker_store, type_sub);
}, []);
const type_data = comm.empty(sale_store.type_data_sub) ? { dataSource: [], columns: [] } : sale_store.type_data_sub;
const type_data = comm.emptyValue(sale_store.type_data_sub) ? { dataSource: [], columns: [] } : sale_store.type_data_sub;
return (
<div>
@ -29,7 +29,7 @@ const Sale_sub = () => {
</Row>
<Spin size="large" spinning={sale_store.spinning}>
<Row gutter={{ sm: 16, lg: 32 }}>
{!comm.empty(type_data.dataSource) &&
{!comm.emptyValue(type_data.dataSource) &&
type_data.dataSource.map(item => {
return (
<Col key={"col-" + item.subType_name} md={24} xxl={12}>

@ -4,7 +4,7 @@ import { stores_Context } from '../config';
import { Spin, Table, Row, Col, Tabs, Switch } from 'antd';
import SearchForm from './../components/search/SearchForm';
import { TableExportBtn } from './../components/Data';
import { empty } from '../utils/commons';
import { emptyValue } from '@haina/utils-commons';
import './kpi.css';
const apartOptions = [
@ -75,7 +75,7 @@ export default observer((props) => {
activeKey={curTab}
onChange={(v) => {
financialStore.setCurTab(v);
if (empty(servicePersonNum[v].dataSource)) {
if (emptyValue(servicePersonNum[v].dataSource)) {
pageRefresh();
}
}}

@ -3,7 +3,8 @@ import { Row, Col, Tabs, Table, Divider, Spin, Checkbox, Space } from 'antd';
import { ContainerOutlined, BlockOutlined, SmileOutlined, MobileOutlined, CustomerServiceOutlined, IeOutlined } from '@ant-design/icons';
import { Line, Pie } from '@ant-design/charts';
import { NavLink } from 'react-router-dom';
import * as comm from '../../utils/commons';
import * as comm from '@haina/utils-commons';
import { show_vs_tag } from './../../utils/commons';
import DateGroupRadio from '../../components/DateGroupRadio';
import SearchForm from '../../components/search/SearchForm';
import { TableExportBtn } from '../../components/Data';
@ -144,10 +145,10 @@ const BizOrder = observer(() => {
{
title: !showDiff
? result.ordercountTotal1?.OrderCount
: comm.show_vs_tag(result.ordercountTotal1?.OrderCount_vs, result.ordercountTotal1?.OrderCount_diff, result.ordercountTotal1?.OrderCount, result.ordercountTotal2?.OrderCount),
: show_vs_tag(result.ordercountTotal1?.OrderCount_vs, result.ordercountTotal1?.OrderCount_diff, result.ordercountTotal1?.OrderCount, result.ordercountTotal2?.OrderCount),
titleX: [result.ordercountTotal1?.OrderCount, result.ordercountTotal2?.OrderCount].join(' vs '),
dataIndex: 'OrderCount',
render: (text, r) => (!showDiff ? text : comm.show_vs_tag(r.OrderCount_vs, r.OrderCount_diff, r.OrderCount, r.diff?.OrderCount)),
render: (text, r) => (!showDiff ? text : show_vs_tag(r.OrderCount_vs, r.OrderCount_diff, r.OrderCount, r.diff?.OrderCount)),
},
],
},
@ -157,10 +158,10 @@ const BizOrder = observer(() => {
{
title: !showDiff
? result.ordercountTotal1?.CJCount
: comm.show_vs_tag(result.ordercountTotal1?.CJCount_vs, result.ordercountTotal1?.CJCount_diff, result.ordercountTotal1?.CJCount, result.ordercountTotal2?.CJCount),
: show_vs_tag(result.ordercountTotal1?.CJCount_vs, result.ordercountTotal1?.CJCount_diff, result.ordercountTotal1?.CJCount, result.ordercountTotal2?.CJCount),
titleX: [result.ordercountTotal1?.CJCount, result.ordercountTotal2?.CJCount].join(' vs '),
dataIndex: 'CJCount',
render: (text, r) => (!showDiff ? text : comm.show_vs_tag(r.CJCount_vs, r.CJCount_diff, r.CJCount, r.diff?.CJCount)),
render: (text, r) => (!showDiff ? text : show_vs_tag(r.CJCount_vs, r.CJCount_diff, r.CJCount, r.diff?.CJCount)),
},
],
},
@ -170,10 +171,10 @@ const BizOrder = observer(() => {
{
title: !showDiff
? result.ordercountTotal1?.CJPersonNum
: comm.show_vs_tag(result.ordercountTotal1?.CJPersonNum_vs, result.ordercountTotal1?.CJPersonNum_diff, result.ordercountTotal1?.CJPersonNum, result.ordercountTotal2?.CJPersonNum),
: show_vs_tag(result.ordercountTotal1?.CJPersonNum_vs, result.ordercountTotal1?.CJPersonNum_diff, result.ordercountTotal1?.CJPersonNum, result.ordercountTotal2?.CJPersonNum),
titleX: [result.ordercountTotal1?.CJPersonNum, result.ordercountTotal2?.CJPersonNum].join(' vs '),
dataIndex: 'CJPersonNum',
render: (text, r) => (!showDiff ? text : comm.show_vs_tag(r.CJPersonNum_vs, r.CJPersonNum_diff, r.CJPersonNum, r.diff?.CJPersonNum)),
render: (text, r) => (!showDiff ? text : show_vs_tag(r.CJPersonNum_vs, r.CJPersonNum_diff, r.CJPersonNum, r.diff?.CJPersonNum)),
},
],
},
@ -183,10 +184,10 @@ const BizOrder = observer(() => {
{
title: !showDiff
? result.ordercountTotal1?.CJrate
: comm.show_vs_tag(result.ordercountTotal1?.CJrate_vs, result.ordercountTotal1?.CJrate_diff, result.ordercountTotal1?.CJrate, result.ordercountTotal2?.CJrate),
: show_vs_tag(result.ordercountTotal1?.CJrate_vs, result.ordercountTotal1?.CJrate_diff, result.ordercountTotal1?.CJrate, result.ordercountTotal2?.CJrate),
titleX: [result.ordercountTotal1?.CJrate, result.ordercountTotal2?.CJrate].join(' vs '),
dataIndex: 'CJrate',
render: (text, r) => (!showDiff ? text : comm.show_vs_tag(r.CJrate_vs, r.CJrate_diff, r.CJrate, r.diff?.CJrate)),
render: (text, r) => (!showDiff ? text : show_vs_tag(r.CJrate_vs, r.CJrate_diff, r.CJrate, r.diff?.CJrate)),
},
],
},
@ -196,10 +197,10 @@ const BizOrder = observer(() => {
{
title: !showDiff
? result.ordercountTotal1?.YJLY
: comm.show_vs_tag(result.ordercountTotal1?.YJLY_vs, result.ordercountTotal1?.YJLY_diff, result.ordercountTotal1?.YJLY, result.ordercountTotal2?.YJLY),
: show_vs_tag(result.ordercountTotal1?.YJLY_vs, result.ordercountTotal1?.YJLY_diff, result.ordercountTotal1?.YJLY, result.ordercountTotal2?.YJLY),
titleX: [result.ordercountTotal1?.YJLY, result.ordercountTotal2?.YJLY].join(' vs '),
dataIndex: 'YJLY',
render: (text, r) => (!showDiff ? text : comm.show_vs_tag(r.YJLY_vs, r.YJLY_diff, r.YJLY, r.diff?.YJLY)),
render: (text, r) => (!showDiff ? text : show_vs_tag(r.YJLY_vs, r.YJLY_diff, r.YJLY, r.diff?.YJLY)),
},
],
},
@ -210,10 +211,10 @@ const BizOrder = observer(() => {
{
title: !showDiff
? result.ordercountTotal1?.Ordervalue
: comm.show_vs_tag(result.ordercountTotal1?.Ordervalue_vs, result.ordercountTotal1?.Ordervalue_diff, result.ordercountTotal1?.Ordervalue, result.ordercountTotal2?.Ordervalue),
: show_vs_tag(result.ordercountTotal1?.Ordervalue_vs, result.ordercountTotal1?.Ordervalue_diff, result.ordercountTotal1?.Ordervalue, result.ordercountTotal2?.Ordervalue),
titleX: [result.ordercountTotal1?.Ordervalue, result.ordercountTotal2?.Ordervalue].join(' vs '),
dataIndex: 'Ordervalue',
render: (text, r) => (!showDiff ? text : comm.show_vs_tag(r.Ordervalue_vs, r.Ordervalue_diff, r.Ordervalue, r.diff?.Ordervalue)),
render: (text, r) => (!showDiff ? text : show_vs_tag(r.Ordervalue_vs, r.Ordervalue_diff, r.Ordervalue, r.diff?.Ordervalue)),
},
],
},

@ -3,7 +3,7 @@ import { Row, Col, Tabs, Table, Divider, Spin, Space } from 'antd';
import { ContainerOutlined, BlockOutlined, SmileOutlined, MobileOutlined } from '@ant-design/icons';
import { Line } from '@ant-design/charts';
import { NavLink, useParams } from 'react-router-dom';
import * as comm from '../../utils/commons';
import { getWeek } from '@haina/utils-commons';
import DateGroupRadio from '../../components/DateGroupRadio';
import SearchForm from '../../components/search/SearchForm';
import { TableExportBtn } from '../../components/Data';
@ -187,7 +187,7 @@ const BizOrderSub = observer(({ ...props }) => {
let ret = title;
switch (activeDateGroupRadioSub) {
case 'day':
ret = `${title} ${comm.getWeek(datum.xField)}`; //
ret = `${title} ${getWeek(datum.xField)}`; //
break;
default:

@ -2,7 +2,8 @@ import { useContext } from 'react';
import { Row, Col, Table, Spin, Space, Divider } from 'antd';
import { Funnel, Pie, Sunburst } from '@ant-design/charts';
import * as comm from '../../../utils/commons';
import { isEmpty } from '@haina/utils-commons';
import { show_vs_tag } from '../../../utils/commons';
import SearchForm from '../../../components/search/SearchForm';
import { observer } from 'mobx-react';
@ -34,7 +35,7 @@ const buildFunnelData = (data1, data2) => {
{ stage: '火车票Upsell', number: (_getTrainUpsell(data1?.data)?.OrderCount || 0) + 0, dateRange: data1?.dateRangeStr },
{ stage: 'Upsell成行', number: _getTrainUpsell(data1?.data)?.CJCount, dateRange: data1?.dateRangeStr },
];
const data02 = !comm.isEmpty(data2)
const data02 = !isEmpty(data2)
? [
{ stage: '火车票服务', number: _getTrainService(data2?.data)?.OrderCount || 0, dateRange: data2?.dateRangeStr },
{ stage: '成行出票', number: _getTrainService(data2?.data)?.CJCount || 0, dateRange: data2?.dateRangeStr },
@ -47,13 +48,13 @@ const buildFunnelData = (data1, data2) => {
};
const buildPieData = (data1, data2) => {
const data01 = !comm.isEmpty(data1)
const data01 = !isEmpty(data1)
? [
{ stage: '火车票出票', number: Number((data1?.data?.[0]?.YJLY || '0').replaceAll(',', '')), dateRange: data1?.dateRangeStr },
{ stage: 'Upsell成行', number: Number((data1?.data?.[1]?.YJLY || '0').replaceAll(',', '')), dateRange: data1?.dateRangeStr },
]
: [];
const data02 = !comm.isEmpty(data2)
const data02 = !isEmpty(data2)
? [
{ stage: '火车票出票', number: Number((data2?.data?.[0]?.YJLY || '0').replaceAll(',', '')), dateRange: data2?.dateRangeStr },
{ stage: 'Upsell成行', number: Number((data2?.data?.[1]?.YJLY || '0').replaceAll(',', '')), dateRange: data2?.dateRangeStr },
@ -70,7 +71,7 @@ const TrainsUpsell = observer(({ ...props }) => {
const [trainsOrdersSummary, compareData] = useTrainsStore((state) => state.trainsOrdersSummary);
const trainsUpsellOrdersDetail = useTrainsStore((state) => state.trainsUpsellOrdersDetail);
// const showDiff = !comm.isEmpty(searchValuesToSub.DateDiff2);
const showDiff = !comm.isEmpty(compareData);
const showDiff = !isEmpty(compareData);
const getTrainsWithUpsell = useTrainsStore((state) => state.getTrainsWithUpsell);
const getTrainsOrderDetail = useTrainsStore((state) => state.getTrainsOrderDetail);
@ -167,33 +168,33 @@ const TrainsUpsell = observer(({ ...props }) => {
{
title: '数量',
dataIndex: 'OrderCount',
render: (text, r) => (!showDiff ? text : comm.show_vs_tag(r.OrderCount_vs, r.OrderCount_diff, r.OrderCount, r.diff?.OrderCount)),
render: (text, r) => (!showDiff ? text : show_vs_tag(r.OrderCount_vs, r.OrderCount_diff, r.OrderCount, r.diff?.OrderCount)),
},
{
title: '成交数',
dataIndex: 'CJCount',
render: (text, r) => (!showDiff ? text : comm.show_vs_tag(r.CJCount_vs, r.CJCount_diff, r.CJCount, r.diff?.CJCount)),
render: (text, r) => (!showDiff ? text : show_vs_tag(r.CJCount_vs, r.CJCount_diff, r.CJCount, r.diff?.CJCount)),
},
{
title: '成交人数',
dataIndex: 'CJPersonNum',
render: (text, r) => (!showDiff ? text : comm.show_vs_tag(r.CJPersonNum_vs, r.CJPersonNum_diff, r.CJPersonNum, r.diff?.CJPersonNum)),
render: (text, r) => (!showDiff ? text : show_vs_tag(r.CJPersonNum_vs, r.CJPersonNum_diff, r.CJPersonNum, r.diff?.CJPersonNum)),
},
{
title: '成交率',
dataIndex: 'CJrate',
render: (text, r) => (!showDiff ? text : comm.show_vs_tag(r.CJrate_vs, r.CJrate_diff, r.CJrate, r.diff?.CJrate)),
render: (text, r) => (!showDiff ? text : show_vs_tag(r.CJrate_vs, r.CJrate_diff, r.CJrate, r.diff?.CJrate)),
},
{
title: '成交毛利(预计)',
dataIndex: 'YJLY',
render: (text, r) => (!showDiff ? text : comm.show_vs_tag(r.YJLY_vs, r.YJLY_diff, r.YJLY, r.diff?.YJLY)),
render: (text, r) => (!showDiff ? text : show_vs_tag(r.YJLY_vs, r.YJLY_diff, r.YJLY, r.diff?.YJLY)),
},
{
title: '单个订单价值',
dataIndex: 'Ordervalue',
render: (text, r) => (!showDiff ? text : comm.show_vs_tag(r.Ordervalue_vs, r.Ordervalue_diff, r.Ordervalue, r.diff?.Ordervalue)),
render: (text, r) => (!showDiff ? text : show_vs_tag(r.Ordervalue_vs, r.Ordervalue_diff, r.Ordervalue, r.diff?.Ordervalue)),
},
];
return (

@ -6,7 +6,7 @@ import moment from 'moment';
import { Row, Col, Table, Select, Spin, Tag } from 'antd';
import SearchForm from '../../components/search/SearchForm';
import MixFieldsDetail from '../../components/MixFieldsDetail';
import { fixTo2Decimals, isEmpty, pick } from '../../utils/commons';
import { fixTo2Decimals, isEmpty, pick } from '@haina/utils-commons';
import Column from '../../components/Column';
import { groupsMappedByKey } from '../../libs/ht';

@ -5,7 +5,7 @@ import { stores_Context } from '../../config';
import { InfoCircleOutlined } from '@ant-design/icons';
import { Row, Col, Table, Tooltip } from 'antd';
import SearchForm from '../../components/search/SearchForm';
import { pick } from '../../utils/commons';
import { pick } from '@haina/utils-commons';
const COLOR_SETS = [
"#FFFFFF",

@ -4,7 +4,7 @@ import { observer } from 'mobx-react';
import { stores_Context, DATE_FORMAT, SMALL_DATETIME_FORMAT } from '../../config';
import { InfoCircleOutlined } from '@ant-design/icons';
import { Row, Col, Table, Divider, Button, Popover, Tooltip } from 'antd';
import { fixTo2Decimals } from '../../utils/commons';
import { fixTo2Decimals } from '@haina/utils-commons';
import MixFieldsDetail from '../../components/MixFieldsDetail';
const COLOR_SETS = [

Loading…
Cancel
Save