Commit 126d2fcc authored by XieZhiXiong's avatar XieZhiXiong
parents ed070a53 65318967
// 这里的env只有对本地起效, 线上构建不用 // 这里的env只有对本地起效, 线上构建不用
const path = require('path') const path = require('path')
module.exports = { module.exports = {
scm: { scm: {
SITE_ID: '1', SITE_ID: '1',
BACK_GATEWAY: 'http://lingxi-scm.wg.shushangyun.com', BACK_GATEWAY: 'http://lingxi-scm.wg.shushangyun.com',
USE_ROUTE_CONFIG: false, USE_ROUTE_CONFIG: false,
SOCKET_URL: 'ws://lingxi-scm.wg.shushangyun.com', SOCKET_URL: 'ws://lingxi-scm.wg.shushangyun.com',
ssh: JSON.stringify({ ssh: JSON.stringify({
user: "www", user: "www",
// Password optional, prompted if none given // Password optional, prompted if none given
password: "!@#project_$%^231(1)wwwuser3", password: "!@#project_$%^231(1)wwwuser3",
host: "119.23.219.65", host: "119.23.219.65",
port: 8122, port: 8122,
localRoot: path.resolve('./dist/'), localRoot: path.resolve('./dist/'),
remoteRoot: "/usr/local/nginx/html/lingxi/yanshi/api/scm/admin/dist/", remoteRoot: "/usr/local/nginx/html/lingxi/yanshi/api/scm/admin/dist/",
// include: ["*", "**/*"], // this would upload everything except dot files // include: ["*", "**/*"], // this would upload everything except dot files
include: ["*"], include: ["*"],
// e.g. exclude sourcemaps, and ALL files in node_modules (including dot files) // e.g. exclude sourcemaps, and ALL files in node_modules (including dot files)
// exclude: ["dist/**/*.map", "node_modules/**", "node_modules/**/.*", ".git/**"], // exclude: ["dist/**/*.map", "node_modules/**", "node_modules/**/.*", ".git/**"],
// delete ALL existing files at destination before uploading, if true // delete ALL existing files at destination before uploading, if true
deleteRemote: true, deleteRemote: true,
// Passive mode is forced (EPSV command is not sent) // Passive mode is forced (EPSV command is not sent)
forcePasv: true forcePasv: true
}) })
}, },
10: { 10: {
SITE_ID: '1', SITE_ID: '1',
BACK_GATEWAY: 'http://10.0.0.10:8100', BACK_GATEWAY: 'http://10.0.0.10:8100',
USE_ROUTE_CONFIG: true, USE_ROUTE_CONFIG: true,
SOCKET_URL: 'ws://10.0.0.10:8100', SOCKET_URL: 'ws://10.0.0.10:8100',
ssh: JSON.stringify({ ssh: JSON.stringify({
user: "root", user: "root",
// Password optional, prompted if none given // Password optional, prompted if none given
password: "123456", password: "123456",
host: "10.0.0.10", host: "10.0.0.10",
port: 22, port: 22,
localRoot: path.resolve('./dist/'), localRoot: path.resolve('./dist/'),
remoteRoot: "/home/www/lingxi/lingxi-business-system/dist/", remoteRoot: "/home/www/lingxi/lingxi-business-system/dist/",
// include: ["*", "**/*"], // this would upload everything except dot files // include: ["*", "**/*"], // this would upload everything except dot files
include: ["*"], include: ["*"],
// e.g. exclude sourcemaps, and ALL files in node_modules (including dot files) // e.g. exclude sourcemaps, and ALL files in node_modules (including dot files)
// exclude: ["dist/**/*.map", "node_modules/**", "node_modules/**/.*", ".git/**"], // exclude: ["dist/**/*.map", "node_modules/**", "node_modules/**/.*", ".git/**"],
// delete ALL existing files at destination before uploading, if true // delete ALL existing files at destination before uploading, if true
deleteRemote: true, deleteRemote: true,
// Passive mode is forced (EPSV command is not sent) // Passive mode is forced (EPSV command is not sent)
forcePasv: true forcePasv: true
}) })
}, },
25: { 25: {
SITE_ID: '1', SITE_ID: '1',
BACK_GATEWAY: 'http://10.0.0.25:8100', BACK_GATEWAY: 'http://10.0.0.25:8100',
USE_ROUTE_CONFIG: true, USE_ROUTE_CONFIG: true,
SOCKET_URL: 'ws://10.0.0.25:8100', SOCKET_URL: 'ws://10.0.0.25:8100',
ssh: JSON.stringify({ ssh: JSON.stringify({
user: "root", user: "root",
// Password optional, prompted if none given // Password optional, prompted if none given
password: "123456", password: "123456",
host: "10.0.0.25", host: "10.0.0.25",
port: 22, port: 22,
localRoot: path.resolve('./dist/'), localRoot: path.resolve('./dist/'),
remoteRoot: "/data/.jenkins/workspace/lingxi-business-system/dist/", remoteRoot: "/data/.jenkins/workspace/lingxi-business-system/dist/",
// include: ["*", "**/*"], // this would upload everything except dot files // include: ["*", "**/*"], // this would upload everything except dot files
include: ["*"], include: ["*"],
// e.g. exclude sourcemaps, and ALL files in node_modules (including dot files) // e.g. exclude sourcemaps, and ALL files in node_modules (including dot files)
// exclude: ["dist/**/*.map", "node_modules/**", "node_modules/**/.*", ".git/**"], // exclude: ["dist/**/*.map", "node_modules/**", "node_modules/**/.*", ".git/**"],
// delete ALL existing files at destination before uploading, if true // delete ALL existing files at destination before uploading, if true
deleteRemote: true, deleteRemote: true,
// Passive mode is forced (EPSV command is not sent) // Passive mode is forced (EPSV command is not sent)
forcePasv: true forcePasv: true
}) })
} }
} }
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
"build:analyze": "ANALYZE=1 umi build", "build:analyze": "ANALYZE=1 umi build",
"build:clean": "umi build", "build:clean": "umi build",
"build:scm": "cross-env SITE_ID=1 BACK_GATEWAY=http://lingxi-scm.wg.shushangyun.com SOCKET_URL=ws://lingxi-scm.wg.shushangyun.com yarn build", "build:scm": "cross-env SITE_ID=1 BACK_GATEWAY=http://lingxi-scm.wg.shushangyun.com SOCKET_URL=ws://lingxi-scm.wg.shushangyun.com yarn build",
"build:all": "cross-env SITE_ID=1 BACK_GATEWAY=http://lingxi-all.wg.shushangyun.com SOCKET_URL=ws://lingxi-all.wg.shushangyun.com yarn build",
"build:10": "cross-env SITE_ID=1 BACK_GATEWAY=http://10.0.0.10:8100 SOCKET_URL=ws://10.0.0.10:9400 yarn build", "build:10": "cross-env SITE_ID=1 BACK_GATEWAY=http://10.0.0.10:8100 SOCKET_URL=ws://10.0.0.10:9400 yarn build",
"build:25": "cross-env SITE_ID=352 BACK_GATEWAY=http://10.0.0.25:8100 SOCKET_URL=ws://10.0.0.25:9400 yarn build", "build:25": "cross-env SITE_ID=352 BACK_GATEWAY=http://10.0.0.25:8100 SOCKET_URL=ws://10.0.0.25:9400 yarn build",
"postinstall": "umi generate tmp", "postinstall": "umi generate tmp",
......
...@@ -2,13 +2,13 @@ ...@@ -2,13 +2,13 @@
* @Author: XieZhiXiong * @Author: XieZhiXiong
* @Date: 2020-09-15 17:48:36 * @Date: 2020-09-15 17:48:36
* @LastEditors: zwp * @LastEditors: zwp
* @LastEditTime: 2020-12-01 18:12:54 * @LastEditTime: 2021-01-06 10:54:54
* @Description: 内外部流转记录组件 * @Description: 内外部流转记录组件
*/ */
import React from 'react'; import React from 'react';
import { import {
Steps, Steps,
Tabs, Tabs,
} from 'antd'; } from 'antd';
import MellowCard from '@/components/MellowCard'; import MellowCard from '@/components/MellowCard';
import styles from './index.less'; import styles from './index.less';
...@@ -16,17 +16,25 @@ import styles from './index.less'; ...@@ -16,17 +16,25 @@ import styles from './index.less';
interface AuditProcessProp { interface AuditProcessProp {
outerVerifyCurrent?: number; outerVerifyCurrent?: number;
innerVerifyCurrent?: number; innerVerifyCurrent?: number;
outerVerifySteps?: { step: number, stepName: string, roleName: string }[]; outerVerifySteps?: {
innerVerifySteps?: { step: number, stepName: string, roleName: string }[]; step: number,
stepName: string,
roleName: string,
}[];
innerVerifySteps?: {
step: number,
stepName: string,
roleName: string,
}[];
customTitleKey?: string customTitleKey?: string
customKey?: string customKey?: string
}; };
const AuditProcess: React.FC<AuditProcessProp> = ({ const AuditProcess: React.FC<AuditProcessProp> = ({
outerVerifyCurrent = 0, outerVerifyCurrent = 0,
innerVerifyCurrent = 0, innerVerifyCurrent = 0,
outerVerifySteps = [], outerVerifySteps = [],
innerVerifySteps = [], innerVerifySteps = [],
customTitleKey, customTitleKey,
customKey customKey
}) => ( }) => (
...@@ -37,14 +45,15 @@ const AuditProcess: React.FC<AuditProcessProp> = ({ ...@@ -37,14 +45,15 @@ const AuditProcess: React.FC<AuditProcessProp> = ({
<Tabs.TabPane tab="外部审核流程" key="1"> <Tabs.TabPane tab="外部审核流程" key="1">
<Steps style={{ marginTop: 30 }} progressDot current={outerVerifyCurrent}> <Steps style={{ marginTop: 30 }} progressDot current={outerVerifyCurrent}>
{outerVerifySteps.map(item => ( {outerVerifySteps.map(item => (
<Steps.Step <Steps.Step
key={customKey ? item[customKey] : item.step} key={customKey ? item[customKey] : item.step}
title={customTitleKey ? item[customTitleKey] : item.stepName} title={customTitleKey ? item[customTitleKey] : item.stepName}
description={item.roleName} description={item.roleName}
status={item["isExecute"] ? "finish" : "wait"}
/> />
))} ))}
</Steps> </Steps>
</Tabs.TabPane> </Tabs.TabPane>
} }
{ {
innerVerifySteps?.length > 0 && innerVerifySteps?.length > 0 &&
...@@ -55,6 +64,7 @@ const AuditProcess: React.FC<AuditProcessProp> = ({ ...@@ -55,6 +64,7 @@ const AuditProcess: React.FC<AuditProcessProp> = ({
key={customKey ? item[customKey] : item.step} key={customKey ? item[customKey] : item.step}
title={customTitleKey ? item[customTitleKey] : item.stepName} title={customTitleKey ? item[customTitleKey] : item.stepName}
description={item.roleName} description={item.roleName}
status={item["isExecute"] ? "finish" : "wait"}
/> />
))} ))}
</Steps> </Steps>
...@@ -64,4 +74,4 @@ const AuditProcess: React.FC<AuditProcessProp> = ({ ...@@ -64,4 +74,4 @@ const AuditProcess: React.FC<AuditProcessProp> = ({
</MellowCard> </MellowCard>
); );
export default AuditProcess; export default AuditProcess;
\ No newline at end of file
...@@ -67,6 +67,8 @@ ...@@ -67,6 +67,8 @@
.invoice_list_item_btn { .invoice_list_item_btn {
margin: 0 10px; margin: 0 10px;
color: @main-color;
cursor: pointer;
} }
} }
} }
...@@ -78,7 +80,7 @@ ...@@ -78,7 +80,7 @@
display: block; display: block;
width: 100%; width: 100%;
} }
.ant-radio-wrapper { .ant-radio-wrapper {
display: flex; display: flex;
width: 100%; width: 100%;
...@@ -88,10 +90,10 @@ ...@@ -88,10 +90,10 @@
margin: 10px; margin: 10px;
padding-left: 16px; padding-left: 16px;
} }
.ant-radio-wrapper.ant-radio-wrapper-checked { .ant-radio-wrapper.ant-radio-wrapper-checked {
border: 1px solid @main-color; border: 1px solid @main-color;
&::after { &::after {
content: ''; content: '';
position: absolute; position: absolute;
...@@ -105,4 +107,4 @@ ...@@ -105,4 +107,4 @@
} }
} }
} }
} }
\ No newline at end of file
import React, { useContext, useEffect, useState, useMemo } from 'react' import React, { useContext, useEffect, useState, useMemo } from 'react'
import { Row, Col, Tag } from 'antd' import { Row, Col, Tag, Modal } from 'antd'
import MellowCard from '@/components/MellowCard' import MellowCard from '@/components/MellowCard'
import { OrderDetailContext } from '../../context' import { OrderDetailContext } from '../../context'
import { formatTimeString } from '@/utils' import { formatTimeString } from '@/utils'
...@@ -29,25 +29,6 @@ const payInfo = [ ...@@ -29,25 +29,6 @@ const payInfo = [
{ title: '运费', name: 'freight' } { title: '运费', name: 'freight' }
] ]
const otherInfo = [
{ title: '发票', name: 'theInvoiceInfo', render: item => <div className={style.invoice_list_item}>
<div className={style.invoice_list_item_content}>
<div className={cx(style.invoice_list_item_content_tag, item.kind !== 1 ? style.special : '')}>{item.kind === 1 ? '增值税普通发票' : '增值税专用发票'}</div>
<div className={style.invoice_list_item_content_name}>
<div>{item.invoiceTitle}</div>
<div>{item.taxNo}</div>
</div>
</div>
{
<div className={style.invoice_list_item_btn_group}>
{/* 查看功能todo */}
{/* <div className={style.invoice_list_item_btn}>查看</div> */}
</div>
}
</div>, resetCol: {flex: '1 1 100%'} },
{ title: '包装要求', name: 'pageRequire' },
{ title: '其他要求', name: 'restsRequire' },
]
const electronInfo = [ const electronInfo = [
{ title: '电子合同', name: 'none' }, { title: '电子合同', name: 'none' },
...@@ -60,11 +41,33 @@ const RenderCard = ({ infoList, dataSource }) => infoList.map(v => dataSource[v. ...@@ -60,11 +41,33 @@ const RenderCard = ({ infoList, dataSource }) => infoList.map(v => dataSource[v.
const OrderMergeInfo: React.FC<OrderMergeInfoProps> = (props) => { const OrderMergeInfo: React.FC<OrderMergeInfoProps> = (props) => {
const orderDetailCtx = useContext(OrderDetailContext) const orderDetailCtx = useContext(OrderDetailContext)
const [isModalVisible, setIsModalVisible] = useState(false)
// const address = useMemo(async () => { // const address = useMemo(async () => {
// const { data } = await PublicApi.getLogisticsSelectListReceiverAddress() // const { data } = await PublicApi.getLogisticsSelectListReceiverAddress()
// return data // return data
// }, []) // }, [])
const { data, ctl } = orderDetailCtx const { data, ctl } = orderDetailCtx
const {theInvoiceInfo} = data
const otherInfo = [
{ title: '发票', name: 'theInvoiceInfo', render: item => <div className={style.invoice_list_item}>
<div className={style.invoice_list_item_content}>
<div className={cx(style.invoice_list_item_content_tag, item.kind !== 1 ? style.special : '')}>{item.kind === 1 ? '增值税普通发票' : '增值税专用发票'}</div>
<div className={style.invoice_list_item_content_name}>
<div>{item.invoiceTitle}</div>
<div>{item.taxNo}</div>
</div>
</div>
{
<div className={style.invoice_list_item_btn_group}>
{/* 查看功能todo */}
<div className={style.invoice_list_item_btn} onClick={()=>setIsModalVisible(true)}>查看 &gt;</div>
</div>
}
</div>, resetCol: {flex: '1 1 100%'} },
{ title: '包装要求', name: 'pageRequire' },
{ title: '其他要求', name: 'restsRequire' },
]
// useEffect(() => { // useEffect(() => {
// if (data.deliveryAddresId && !data.receiverName) { // if (data.deliveryAddresId && !data.receiverName) {
...@@ -82,6 +85,7 @@ const OrderMergeInfo: React.FC<OrderMergeInfoProps> = (props) => { ...@@ -82,6 +85,7 @@ const OrderMergeInfo: React.FC<OrderMergeInfoProps> = (props) => {
// } // }
return ( return (
<>
<Row style={{ marginTop: 24 }} gutter={24}> <Row style={{ marginTop: 24 }} gutter={24}>
<Col span={12}> <Col span={12}>
<MellowCard title='交易信息' fullHeight> <MellowCard title='交易信息' fullHeight>
...@@ -110,9 +114,22 @@ const OrderMergeInfo: React.FC<OrderMergeInfoProps> = (props) => { ...@@ -110,9 +114,22 @@ const OrderMergeInfo: React.FC<OrderMergeInfoProps> = (props) => {
</MellowCard> </MellowCard>
</Col> </Col>
</Row> </Row>
<Modal title="发票信息" visible={isModalVisible} onOk={()=>setIsModalVisible(false)} onCancel={()=>setIsModalVisible(false)}>
<Row gutter={[0 ,10]} style={{fontSize: 14}}>
<Col span={4}>开具类型:</Col><Col span={20}>{theInvoiceInfo?.type === 1 ? "企业" : "个人"}</Col>
<Col span={4}>发票种类:</Col><Col span={20}>{theInvoiceInfo?.kind === 1 ? "增值税普通发票" : "增值税专用发票"}</Col>
<Col span={4}>发票抬头:</Col><Col span={20}>{theInvoiceInfo?.invoiceTitle}</Col>
<Col span={4}>纳税号:</Col><Col span={20}>{theInvoiceInfo?.taxNo}</Col>
<Col span={4}>开户行:</Col><Col span={20}>{theInvoiceInfo?.bankOfDeposit}</Col>
<Col span={4}>账号:</Col><Col span={20}>{theInvoiceInfo?.account}</Col>
<Col span={4}>地址:</Col><Col span={20}>{theInvoiceInfo?.addres}</Col>
<Col span={4}>电话:</Col><Col span={20}>{theInvoiceInfo?.tel}</Col>
</Row>
</Modal>
</>
) )
} }
OrderMergeInfo.defaultProps = {} OrderMergeInfo.defaultProps = {}
export default OrderMergeInfo export default OrderMergeInfo
\ No newline at end of file
...@@ -391,7 +391,7 @@ const OrderProductTable:React.FC<OrderProductTableProps> = (props) => { ...@@ -391,7 +391,7 @@ const OrderProductTable:React.FC<OrderProductTableProps> = (props) => {
dataIndex: 'memberPrice', dataIndex: 'memberPrice',
align: 'center', align: 'center',
key: 'memberPrice', key: 'memberPrice',
render: (text, record) => record.isMemberPrice ? (text * 100 + '%') : null render: (text, record) => record.isMemberPrice ? (text * 10000 / 100 + '%') : null
}, },
{ {
title: creditsCommodity ? '兑换数量' : '采购数量', title: creditsCommodity ? '兑换数量' : '采购数量',
......
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