Commit 2342df41 authored by 靳野's avatar 靳野

Merge branch 'dev' into 'master'

Dev

See merge request !124
parents 16143778 7ee33fc9
......@@ -2,6 +2,7 @@ import slash from 'slash2';
import defaultSettings from './defaultSettings'; // https://umijs.org/config/
import webpackPlugin from './plugin.config';
import groupMealRoute from './groupMealRoute';
import path from 'path';
const { pwa, primaryColor } = defaultSettings; // preview.pro.ant.design only do not use in your production ;
// preview.pro.ant.design 专用环境变量,请不要在你的项目中使用它。
......@@ -386,7 +387,7 @@ export default {
},
},
},
chunks: ['antdesigns', 'vendors', 'mapvgl', 'umi'],
chunks: ['common', 'antdesigns', 'vendors', 'mapvgl', 'umi'],
chainWebpack: webpackPlugin,
nodeModulesTransform: {
type: 'none',
......@@ -400,4 +401,5 @@ export default {
},
},
*/
webpack5: {},
};
......@@ -2,7 +2,6 @@
// eslint-disable-next-line eslint-comments/abdeils - enable - pair;
/* eslint-disable import/no-extraneous-dependencies */
import ThemeColorReplacer from 'webpack-theme-color-replacer';
import generate from '@ant-design/colors/lib/generate';
import webpack from 'webpack';
const SentryPlugin = require('@qg/sentry-webpack-plugin');
......@@ -12,36 +11,6 @@ export default config => {
if (process.env.NODE_ENV === 'production') {
config.plugin('sentry-webpack-plugin').use(SentryPlugin, [SentryConfig]);
}
// preview.pro.ant.design only do not use in your production;
if (
process.env.ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION === 'site' ||
process.env.NODE_ENV !== 'production'
) {
config.plugin('webpack-theme-color-replacer').use(ThemeColorReplacer, [
{
fileName: 'css/theme-colors-[contenthash:8].css',
matchColors: getAntdSerials('#1890ff'),
// 主色系列
// 改变样式选择器,解决样式覆盖问题
changeSelector(selector) {
switch (selector) {
case '.ant-calendar-today .ant-calendar-date':
return ':not(.ant-calendar-selected-date)' + selector;
case '.ant-btn:focus,.ant-btn:hover':
return '.ant-btn:focus:not(.ant-btn-primary),.ant-btn:hover:not(.ant-btn-primary)';
case '.ant-btn.active,.ant-btn:active':
return '.ant-btn.active:not(.ant-btn-primary),.ant-btn:active:not(.ant-btn-primary)';
default:
return selector;
}
}, // isJsUgly: true,
},
]);
} // optimize chunks
if (process.env.SENTRY_ENV === 'prod') {
config.plugin('source-map-dev-tool-plugin').use(webpack.SourceMapDevToolPlugin, [
{
......@@ -55,7 +24,7 @@ export default config => {
.splitChunks({
chunks: 'all', //async异步代码分割 initial同步代码分割 all同步异步分割都开启
automaticNameDelimiter: '.',
name: true,
name: 'common',
minSize: 30000, // 引入的文件大于30kb才进行分割
minChunks: 1, // 模块至少使用次数
cacheGroups: {
......
This diff is collapsed.
......@@ -90,8 +90,7 @@
"slash2": "^2.0.0",
"sortablejs": "^1.13.0",
"umi": "^3.0.0",
"umi-request": "^1.2.7",
"webpack-theme-color-replacer": "^1.2.15"
"umi-request": "^1.2.7"
},
"devDependencies": {
"@ant-design/pro-cli": "^1.0.13",
......@@ -129,8 +128,7 @@
"node-fetch": "^2.6.0",
"prettier": "^1.17.1",
"pro-download": "1.0.1",
"stylelint": "^10.1.0",
"webpack": "^4.46.0"
"stylelint": "^10.1.0"
},
"engines": {
"node": ">=10.0.0"
......
import { DownloadOutlined } from '@ant-design/icons';
import { Popover, Typography } from 'antd';
import React, { useRef } from 'react';
import { connect } from 'dva';
import { connect } from 'umi';
import { isAntDesignPro } from '@/utils/utils';
import styles from './index.less';
......
import { LogoutOutlined, SettingOutlined, UserOutlined, EditOutlined } from '@ant-design/icons';
import { Avatar, Menu, Spin } from 'antd';
import React from 'react';
import { connect } from 'dva';
import { history } from 'umi';
import { connect, history } from 'umi';
import HeaderDropdown from '../HeaderDropdown';
import styles from './index.less';
......
import React, { useState, useEffect } from 'react';
import { Tag, message, Badge } from 'antd';
import { connect } from 'dva';
import { connect } from 'umi';
import groupBy from 'lodash/groupBy';
import moment from 'moment';
import { BellOutlined } from '@ant-design/icons';
......
import React, { Component } from 'react';
import { Tag, message } from 'antd';
import { connect } from 'dva';
import { connect } from 'umi';
import groupBy from 'lodash/groupBy';
import moment from 'moment';
import NoticeIcon from '../NoticeIcon';
......
import { Tooltip } from 'antd';
import React from 'react';
import { NotificationOutlined } from '@ant-design/icons';
import { connect } from 'dva';
import { connect } from 'umi';
import Avatar from './AvatarDropdown';
import HeaderSearch from '../HeaderSearch';
import styles from './index.less';
......
......@@ -2,7 +2,7 @@ import React, { useState, useEffect, forwardRef, useImperativeHandle } from 'rea
import { useHistory } from 'react-router-dom';
import { Modal, Tabs, Pagination, Spin, notification, Checkbox, Badge } from 'antd';
import { apiGetBussinessMsgList, apiGetBusinessMsgUnReadCount } from '@/services/messageReminder';
import { connect } from 'dva';
import { connect } from 'umi';
import Empty from '../Empty';
import styles from './index.less';
import { CHANNEL_ID } from '@/utils/constants';
......
......@@ -4,7 +4,7 @@ import { CloseOutlined, DoubleLeftOutlined, DoubleRightOutlined } from '@ant-des
import classNames from 'classnames';
import { useHistory } from 'react-router-dom';
// import copy from 'copy-to-clipboard';
import { connect } from 'dva';
import { connect } from 'umi';
import { apiGetBussinessMsgList } from '@/services/messageReminder';
import Empty from '../Empty';
import styles from './index.less';
......
// eslint-disable-next-line eslint-comments/disable-enable-pair
/* eslint-disable import/no-extraneous-dependencies */
import client from 'webpack-theme-color-replacer/client';
import generate from '@ant-design/colors/lib/generate';
export default {
getAntdSerials(color) {
const lightCount = 9;
const divide = 10; // 淡化(即less的tint)
let lightens = new Array(lightCount).fill(0);
lightens = lightens.map((_, i) => client.varyColor.lighten(color, i / divide));
const colorPalettes = generate(color);
const rgb = client.varyColor.toNum3(color.replace('#', '')).join(',');
return lightens.concat(colorPalettes).concat(rgb);
},
changeColor(color) {
if (!color) {
return Promise.resolve();
}
const options = {
// new colors array, one-to-one corresponde with `matchColors`
newColors: this.getAntdSerials(color),
changeUrl(cssUrl) {
// while router is not `hash` mode, it needs absolute path
return `/${cssUrl}`;
},
};
return client.changer.changeColor(options, Promise);
},
};
......@@ -6,8 +6,7 @@
/* eslint-disable no-underscore-dangle, no-confusing-arrow */
import ProLayout from '@ant-design/pro-layout';
import React, { useState, useEffect, useRef } from 'react';
import { Link } from 'umi';
import { connect } from 'dva';
import { Link, connect } from 'umi';
import { Icon as LegacyIcon } from '@ant-design/compatible';
import { Result, Button, Layout, Menu } from 'antd';
import Authorized from '@/utils/Authorized';
......
import React from 'react';
import { connect } from 'dva';
import { Redirect } from 'umi';
import { Redirect, connect } from 'umi';
import PageLoading from '@/components/PageLoading';
import localStorage from '@/utils/localStorage';
import sessionStorage from '@/utils/sessionStorage';
......
import { getMenuData, getPageTitle } from '@ant-design/pro-layout';
import { Helmet } from 'react-helmet';
import React from 'react';
import { connect } from 'dva';
import { connect } from 'umi';
import logo from '../assets/logo.png';
import styles from './UserLayout.less';
......
import { message } from 'antd';
import defaultSettings from '../../config/defaultSettings';
import themeColorClient from '../components/SettingDrawer/themeColorClient';
const updateTheme = newPrimaryColor => {
if (newPrimaryColor) {
const timeOut = 0;
const hideMessage = message.loading('正在切换主题!', timeOut);
themeColorClient.changeColor(newPrimaryColor).finally(() => hideMessage());
}
};
......
import React, { useState, useEffect } from 'react';
import { Row, Col } from 'antd';
import { Link } from 'umi';
import { Link, connect } from 'umi';
import { FileTextOutlined } from '@ant-design/icons';
import style from './styles.less';
import { getPendingNum } from './service';
import { connect } from 'dva';
import { AFTER_SALE_ORDER, PENDING_DELIVERY_ORDER } from '@/../config/permission.config';
const Admin = props => {
......
......@@ -3,7 +3,7 @@ import { Tabs, notification, Form, Modal } from 'antd';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import ProTable from '@ant-design/pro-table';
import { AFTER_SALE_ORDER } from '@/../config/permission.config';
import { connect } from 'dva';
import { connect } from 'umi';
import { FormSearch } from '@/components/FormSearch';
import moment from 'moment';
import { useLocation } from 'react-router-dom';
......
......@@ -2,7 +2,7 @@ import { Tabs } from 'antd';
import React from 'react';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { AFTER_SALE_ORDER } from '@/../config/permission.config';
import { connect } from 'dva';
import { connect } from 'umi';
import Pending from './Pending';
import PassAudit from './PassAudit';
......
import React from 'react';
import Redirect from 'umi/redirect';
import { connect } from 'dva';
import { connect } from 'umi';
import pathToRegexp from 'path-to-regexp';
import Authorized from '@/utils/Authorized';
......
......@@ -13,7 +13,7 @@ import {
} from 'antd';
import React, { Component, useState } from 'react';
import { SwapRightOutlined } from '@ant-design/icons';
import { connect } from 'dva';
import { connect } from 'umi';
import { saveAs } from 'file-saver';
import { format } from 'date-fns';
import styles from '../style.less';
......
import { Form, Button, Input, Select, notification, Cascader, InputNumber } from 'antd';
import React, { Component } from 'react';
import { SwapRightOutlined } from '@ant-design/icons';
import { connect } from 'dva';
import { connect } from 'umi';
import ImportGoodsModal from '@/components/ImportGoodsModal';
import styles from '../../style.less';
import { apiDownBiddingTemplate, apiUploadGoodsFile } from '../../service';
......
......@@ -3,7 +3,7 @@ import '@ant-design/compatible/assets/index.css';
import { Card, Pagination, Table, notification, Drawer, Spin } from 'antd';
import React, { Component } from 'react';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { connect } from 'dva';
import { connect } from 'umi';
import styles from '../style.less';
import { apiCategoryListType, apiProductBiddingInfo } from '../service';
......
......@@ -10,6 +10,7 @@ export function column(specArr = []) {
dataIndex: 'id',
width: 200,
align: 'center',
render: id => <>{`${id}`}</>,
},
...specArr,
{
......@@ -64,7 +65,7 @@ export function column(specArr = []) {
initialValue={row.stock || 0}
rules={[{ required: true, message: '请输入库存!' }, { validator: isIntegerNotMust }]}
>
<InputNumber min={0} max={500} />
<InputNumber min={0} max={999999} />
</Form.Item>
</div>
),
......@@ -110,6 +111,12 @@ export function columnManage() {
align: 'center',
render: (_, row) => <div>{row.stock || '-'}</div>,
},
{
title: '库存起报量',
dataIndex: 'inventoryReportQuantity',
width: 160,
align: 'center',
},
{
title: '操作',
dataIndex: 'action',
......
......@@ -3,7 +3,7 @@ import '@ant-design/compatible/assets/index.css';
import { Card, Pagination, Table, notification, Drawer, Spin, Button, Modal } from 'antd';
import React, { Component } from 'react';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { connect } from 'dva';
import { connect } from 'umi';
import styles from './style.less';
import UpdateStock from './UpdateStock';
......@@ -342,9 +342,9 @@ class goodsManage extends Component {
};
serviceVisbleChange = async row => {
const { state, spuId, productType } = row;
const { state, spuId, productType, skuId } = row;
this.setState({ createloading: true });
const { data, msg } = await spuDetail({ id: spuId }); // spuId
const { data, msg } = await spuDetail({ skuId, id: spuId }, state); // spuId
if (data) {
const SourceData = ProcessEditData(data, row);
console.log('index.js=============>', SourceData);
......
......@@ -16,7 +16,7 @@ const headers = {
* yapi: http://yapi.quantgroups.com/project/389/interface/api/23814
*/
export async function searchList(params) {
return request.post('/product/api/merchant/page', {
return request.post('/api/merchants/products/page', {
prefix: goodsApi,
data: stringify(params),
headers,
......@@ -26,7 +26,7 @@ export async function searchList(params) {
// 新增商品
export async function addGoods(params) {
return request.post('/product/api/merchant/add', {
return request.post('/api/merchants/products/add', {
prefix: goodsApi,
data: params,
});
......@@ -35,7 +35,7 @@ export async function addGoods(params) {
// 编辑商品
export async function editGoods(params) {
return request.post('/product/api/merchant/edit', {
return request.post('/api/merchants/products/edit', {
prefix: goodsApi,
data: params,
});
......@@ -59,8 +59,12 @@ export async function apiGetAttribute(categoryId) {
return data;
}
// 编辑--获取详情
export async function spuDetail(params) {
return request.post('/product/api/merchant/detail', {
export async function spuDetail(params, state) {
let url = '/api/merchants/products/sku-detail';
if (state === 4) {
url = '/api/merchants/products/detail';
}
return request.post(url, {
prefix: goodsApi,
params,
headers,
......@@ -69,7 +73,7 @@ export async function spuDetail(params) {
// 商品规格
export async function getSpecList() {
return request.post('/product/spec/api/merchant/list', {
return request.post('/api/merchants/specs/getAll', {
prefix: goodsApi,
});
}
......@@ -85,7 +89,7 @@ export async function getImageInfo(spuNo) {
// 商品分类
export async function categoryList() {
return request.post('/product/category/api/merchant/getAll', {
return request.post('/api/merchants/categories/getAllTree', {
prefix: goodsApi,
});
}
......@@ -113,7 +117,7 @@ export async function uploadFile(file) {
// 商品修改日志
export async function changeLog(params) {
return request.post('/product/logs/api/merchant/page', {
return request.post('/api/merchant/change/logs/page', {
data: stringify(params),
prefix: goodsApi,
headers,
......@@ -122,7 +126,7 @@ export async function changeLog(params) {
// 审核详情日志
export async function productMerchantLog(productId) {
return request.get('/product/api/merchant/auditLog', {
return request.get('/api/merchants/audit/logs/list', {
params: {
productId,
},
......@@ -258,7 +262,7 @@ export const apiQueryLastChangeLog = skuId =>
// 商品上下架
export const apiChangeStateGoods = async params => {
const data = await request.post('/product/api/merchant/pushedOrOffline/batch', {
const data = await request.post('/api/merchants/products/api/merchant/pushedOrOffline/batch', {
data: stringify(params),
prefix: goodsApi,
headers,
......@@ -301,7 +305,7 @@ export async function apiGoodsActionBatch(data) {
}
// 外卖商品列表
export async function apiTakeawayGoods(params) {
return request.post('/product/api/merchant/page', {
return request.post('/api/merchants/products/page', {
prefix: goodsApi,
data: stringify(params),
headers,
......
......@@ -7,7 +7,7 @@ import ProTable from '@ant-design/pro-table';
import { saveAs } from 'file-saver';
import { format } from 'date-fns';
import moment from 'moment';
import { connect } from 'dva';
import { connect } from 'umi';
import PaymentBillModal from './components/PaymentBillModal';
import UploadInvoiceModal from './components/UploadInvoiceModal';
import InvoiceListModal from './components/InvoiceListModal';
......
......@@ -13,7 +13,7 @@ import {
} from 'antd';
import React, { Component, useState } from 'react';
import { SwapRightOutlined } from '@ant-design/icons';
import { connect } from 'dva';
import { connect } from 'umi';
import { saveAs } from 'file-saver';
import { format } from 'date-fns';
import styles from '../style.less';
......
......@@ -3,7 +3,7 @@ import '@ant-design/compatible/assets/index.css';
import { Card, Pagination, Table, notification, Drawer, Spin, Button, Modal } from 'antd';
import React, { Component } from 'react';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { connect } from 'dva';
import { connect } from 'umi';
import styles from './style.less';
import UpdateStock from './UpdateStock';
......
......@@ -26,7 +26,7 @@ export async function searchList(params) {
// 新增商品
export async function addGoods(params) {
return request.post('/product/api/merchant/add', {
return request.post('/api/merchants/products/add', {
prefix: goodsApi,
data: params,
});
......@@ -69,7 +69,7 @@ export async function spuDetail(params) {
// 商品规格
export async function getSpecList() {
return request.post('/product/spec/api/merchant/list', {
return request.post('/api/merchants/specs/getAll', {
prefix: goodsApi,
});
}
......@@ -85,7 +85,7 @@ export async function getImageInfo(spuNo) {
// 商品分类
export async function categoryList() {
return request.post('/product/category/api/merchant/getAll', {
return request.post('/api/merchants/categories/getAllTree', {
prefix: goodsApi,
});
}
......@@ -113,7 +113,7 @@ export async function uploadFile(file) {
// 商品修改日志
export async function changeLog(params) {
return request.post('/product/logs/api/merchant/page', {
return request.post('/api/merchant/change/logs/page', {
data: stringify(params),
prefix: goodsApi,
headers,
......@@ -258,7 +258,7 @@ export const apiQueryLastChangeLog = skuId =>
// 商品上下架
export const apiChangeStateGoods = async params => {
const data = await request.post('/product/api/merchant/pushedOrOffline/batch', {
const data = await request.post('/api/merchants/products/api/merchant/pushedOrOffline/batch', {
data: stringify(params),
prefix: goodsApi,
headers,
......
......@@ -2,7 +2,7 @@ import { Button, Upload, notification } from 'antd';
import React, { useRef } from 'react';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import ProTable from '@ant-design/pro-table';
import { connect } from 'dva';
import { connect } from 'umi';
import { POP_BATCH_DELIVERY } from '@/../config/permission.config';
import {
queryToBatchSend,
......
......@@ -3,9 +3,8 @@ import React, { useState, useEffect, useRef } from 'react';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { useLocation } from 'react-router-dom';
import ProTable from '@ant-design/pro-table';
import { FormInstance } from 'antd/lib/form';
import moment from 'moment';
import { connect } from 'dva';
import { connect } from 'umi';
import { POP_PENDING_DELIVERY_ORDER, POP_DELIVERY_ORDER } from '@/../config/permission.config';
import style from './index.less';
import LogisticsForm from './components/LogisticsForm';
......@@ -63,7 +62,7 @@ const TableList = props => {
const multiLogisticsModalRef = useRef();
const actionRef = useRef();
const ref = useRef(FormInstance);
const ref = useRef();
const handleCom = async (skuInfo, expressInfo) => {
const tempObj = {
expressCompanyCode: expressInfo?.expressCompanyCode ?? '',
......
......@@ -5,7 +5,7 @@ import { PageHeaderWrapper } from '@ant-design/pro-layout';
import ProTable from '@ant-design/pro-table';
import { saveAs } from 'file-saver';
import { format } from 'date-fns';
import { connect } from 'dva';
import { connect } from 'umi';
import { RECONCILIATION_QUERY } from '@/../config/permission.config';
import { columns, toolBarRender } from './data';
import { query, confirmSelfBill, downloadSelfBillDetail } from './service';
......@@ -165,9 +165,6 @@ const ReconciliationQuery = props => {
bordered
toolBarRender={onToolBarRender}
scroll={{ x: '100%', y: 400 }}
pagination={{
pageSize: 100,
}}
/>
</PageHeaderWrapper>
</Spin>
......
......@@ -137,11 +137,7 @@ const ServiceGoods = options => {
// 查询外卖商品详情
const querGetShopDetail = async params => {
const { spuId, shopId, skuId } = params;
const temp = {
id: spuId,
shopId,
skuId,
};
const temp = { skuId };
const { data } = await apiGetShopDetail(temp);
const {
name,
......
......@@ -19,14 +19,14 @@ export const merchantUpload = async files => {
};
export const getProductDetail = id =>
request.post('/product/api/merchant/detail', {
request.post('/api/merchants/products/detail', {
prefix: goodsApi,
params: { id },
headers,
});
export const merchantCategoryGetAll = () =>
request.post('/product/category/api/merchant/getAll', {
request.post('/api/merchants/categories/getAllTree', {
prefix: goodsApi,
});
......@@ -42,7 +42,7 @@ export const merchantBrandList = () =>
// 获取规格列表
export const merchantSpecList = () =>
request.post('/product/spec/api/merchant/list', {
request.post('/api/merchants/specs/getAll', {
prefix: goodsApi,
});
......@@ -72,13 +72,13 @@ export const merchantgetJdPicList = async params => {
};
export const merchantProductAdd = data =>
request.post('/product/api/merchant/add', {
request.post('/api/merchants/products/add', {
prefix: goodsApi,
data,
});
export const merchantProductEdit = data =>
request.post('/product/api/merchant/edit', {
request.post('/api/merchants/products/edit', {
prefix: goodsApi,
data,
});
......@@ -169,7 +169,7 @@ export const apiShopIds = data =>
// 获取店铺详情 http://yapi.quantgroups.com/project/389/interface/api/57589
export const apiGetShopDetail = data =>
request.post('/product/api/merchant/detail', {
request.post('/api/merchants/products/sku-detail', {
prefix: goodsApi,
data: stringify(_.omitBy(data, v => !v)),
headers: {
......
......@@ -5,7 +5,7 @@ import { Button, Upload, notification, Spin } from 'antd';
import React, { useRef, useEffect, useState } from 'react';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import ProTable from '@ant-design/pro-table';
import { connect } from 'dva';
import { connect } from 'umi';
import { columns, toolBarRender, dateStateEnum } from './data';
import { query, selfPaymentBill } from './service';
import { SETTLEMENT_SHEET } from '@/../config/permission.config';
......
......@@ -3,7 +3,7 @@ import React, { useRef, useEffect, useState } from 'react';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import ProTable from '@ant-design/pro-table';
import lodash from 'lodash';
import { connect } from 'dva';
import { connect } from 'umi';
import { AFTER_SALE_ADDRESS } from '@/../config/permission.config';
import styles from './index.less';
import AddrForm from './form';
......
import { Tabs } from 'antd';
import React from 'react';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { connect } from 'dva';
import { connect } from 'umi';
import { CANCEL_BILL_MANAGE } from '@/../config/permission.config';
import Pending from './Pending';
import PassAudit from './PassAudit';
......
......@@ -2,7 +2,7 @@ import { Button, Popconfirm, notification } from 'antd';
import React, { useRef, useEffect, useState } from 'react';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import ProTable from '@ant-design/pro-table';
import { connect } from 'dva';
import { connect } from 'umi';
import { columns } from './data';
import AddArea from './addArea';
import { searchList, addressTree } from './services';
......
......@@ -2,7 +2,7 @@ import { Button, Upload, notification } from 'antd';
import React, { useRef } from 'react';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import ProTable from '@ant-design/pro-table';
import { connect } from 'dva';
import { connect } from 'umi';
import { BATCH_DELIVERY } from '@/../config/permission.config';
import {
queryToBatchSend,
......
......@@ -5,7 +5,7 @@ import { useLocation } from 'react-router-dom';
import ProTable from '@ant-design/pro-table';
import { FormInstance } from 'antd/lib/form';
import moment from 'moment';
import { connect } from 'dva';
import { connect } from 'umi';
import { PENDING_DELIVERY_ORDER, DELIVERY_ORDER } from '@/../config/permission.config';
import style from './index.less';
import LogisticsForm from './components/LogisticsForm';
......
import { Form, Tabs, Input, Button, Pagination, notification } from 'antd';
import React, { useState, useEffect, useRef } from 'react';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { connect } from 'dva';
import { connect } from 'umi';
import { QUERY_ORDER } from '@/../config/permission.config';
import { values } from 'lodash';
import style from './index.less';
......
import { Alert, Tabs } from 'antd';
import React, { Component } from 'react';
import { connect } from 'dva';
import { connect } from 'umi';
import LoginComponents from './components/Login';
import styles from './style.less';
import LoginSMS from './components/Login/LoginSms';
......
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