Commit bddcdc38 authored by GuanHua's avatar GuanHua
parents 94402b84 d7684fbd
......@@ -798,10 +798,12 @@ export const PurchaseOrderInsideWorkStateTexts = {
2: '一级待审核订单',
3: '二级待审核订单',
4: '待提交订单',
5: '待确认电子合同',
// 5: '待确认电子合同',
5: '提交订单完成',
6: '提交一级审核订单不通过',
7: '提交二级审核订单不通过',
8: '待支付订单',
// 8: '待支付订单',
8: '确认电子合同',
10: '支付成功',
11: '支付失败',
12: '待确认收货',
......
......@@ -20,7 +20,7 @@ import {
GetAsReplaceGoodsGetDetailByConsumerResponse,
GetAsReplaceGoodsPageReturnedGoodsResponse,
} from '@/services/AfterServiceApi';
import { CREDIT_INNER_STATUS, CREDIT_OUTER_STATUS, CREDIT_STATUS } from '@/constants';
import { EXCHANGE_OUTER_STATUS_FINISHED } from '@/constants';
import { normalizeFiledata, FileData, findLastIndexFlowState } from '@/utils';
import AvatarWrap from '@/components/AvatarWrap';
import StatusTag from '@/components/StatusTag';
......@@ -317,14 +317,14 @@ const DetailInfo: React.FC<DetailInfoProps> = ({
<Row
gutter={24}
>
<Col span={detailInfo && detailInfo.evaluate ? 6 : 8}>
<Col span={detailInfo && detailInfo.outerStatus === EXCHANGE_OUTER_STATUS_FINISHED ? 6 : 8}>
{/* 相关不良原因举证附件 */}
<Suspense fallback={null}>
<FileList fileList={detailInfo?.fileList} />
</Suspense>
</Col>
<Col span={detailInfo && detailInfo.evaluate ? 6 : 8}>
<Col span={detailInfo && detailInfo.outerStatus === EXCHANGE_OUTER_STATUS_FINISHED ? 6 : 8}>
{/* 退货收货地址 */}
<Suspense fallback={null}>
<ReturnAddressInfo
......@@ -346,7 +346,7 @@ const DetailInfo: React.FC<DetailInfoProps> = ({
</Suspense>
</Col>
<Col span={detailInfo && detailInfo.evaluate ? 6 : 8}>
<Col span={detailInfo && detailInfo.outerStatus === EXCHANGE_OUTER_STATUS_FINISHED ? 6 : 8}>
{/* 换货收货地址 */}
<Suspense fallback={null}>
<ExchangeAddressInfo
......@@ -368,7 +368,7 @@ const DetailInfo: React.FC<DetailInfoProps> = ({
</Suspense>
</Col>
{detailInfo && detailInfo.evaluate && (
{detailInfo && detailInfo.outerStatus === EXCHANGE_OUTER_STATUS_FINISHED && (
<Col span={6}>
{/* 售后评价 */}
<Suspense fallback={null}>
......
......@@ -15,17 +15,15 @@ const ExchangePrConfirmBackVerify: React.FC = () => {
return;
}
setSubmitLoading(true);
// PublicApi.postPayCreditHandleVerifyStepOne({
// applyId: id,
// isPass: values.agree,
// opinion: values.reason,
// }).then(res => {
// if (res.code === 1000) {
// history.goBack();
// }
// }).finally(() => {
// setSubmitLoading(false);
// });
PublicApi.postAsReplaceGoodsConfirmAllReturnGoodsReceipt({
dataId: id,
}).then(res => {
if (res.code === 1000) {
history.goBack();
}
}).finally(() => {
setSubmitLoading(false);
});
};
return (
......
......@@ -17,17 +17,15 @@ const ExchangePrDeliverVerify: React.FC = () => {
return;
}
setSubmitLoading(true);
// PublicApi.postPayCreditHandleVerifyStepOne({
// applyId: id,
// isPass: values.agree,
// opinion: values.reason,
// }).then(res => {
// if (res.code === 1000) {
// history.goBack();
// }
// }).finally(() => {
// setSubmitLoading(false);
// });
PublicApi.postAsReplaceGoodsConfirmReturnDeliveryGoods({
dataId: id,
}).then(res => {
if (res.code === 1000) {
history.goBack();
}
}).finally(() => {
setSubmitLoading(false);
});
};
const handleVisible = flag => {
......
......@@ -23,17 +23,17 @@ const ExchangePrFinishedDetailVerify: React.FC = () => {
if (!id) {
return;
}
// setConfirmLoading(true);
// PublicApi.postAsExchangeGoodsConfirmComplete({
// repairId: id,
// evaluate: values,
// }).then(res => {
// if (res.code === 1000) {
// history.goBack();
// }
// }).finally(() => {
// setConfirmLoading(false);
// });
setConfirmLoading(true);
PublicApi.postAsReplaceGoodsConfirmComplete({
replaceId: id,
evaluate: values,
}).then(res => {
if (res.code === 1000) {
history.goBack();
}
}).finally(() => {
setConfirmLoading(false);
});
};
return (
......
......@@ -17,17 +17,15 @@ const ExchangePrReceivedVerify: React.FC = () => {
return;
}
setSubmitLoading(true);
// PublicApi.postPayCreditHandleVerifyStepOne({
// applyId: id,
// isPass: values.agree,
// opinion: values.reason,
// }).then(res => {
// if (res.code === 1000) {
// history.goBack();
// }
// }).finally(() => {
// setSubmitLoading(false);
// });
PublicApi.postAsReplaceGoodsConfirmReplaceReceiveGoods({
dataId: id,
}).then(res => {
if (res.code === 1000) {
history.goBack();
}
}).finally(() => {
setSubmitLoading(false);
});
};
const handleVisible = flag => {
......
......@@ -20,6 +20,7 @@ import {
GetAsReplaceGoodsGetDetailBySupplierResponse,
GetAsReplaceGoodsPageReturnedGoodsResponse,
} from '@/services/AfterServiceApi';
import { EXCHANGE_OUTER_STATUS_FINISHED } from '@/constants';
import { normalizeFiledata, FileData, findLastIndexFlowState } from '@/utils';
import AvatarWrap from '@/components/AvatarWrap';
import StatusTag from '@/components/StatusTag';
......@@ -362,14 +363,14 @@ const DetailInfo: React.FC<DetailInfoProps> = ({
<Row
gutter={24}
>
<Col span={detailInfo && detailInfo.evaluate ? 6 : 8}>
<Col span={detailInfo && detailInfo.outerStatus === EXCHANGE_OUTER_STATUS_FINISHED ? 6 : 8}>
{/* 相关不良原因举证附件 */}
<Suspense fallback={null}>
<FileList fileList={detailInfo?.fileList} />
</Suspense>
</Col>
<Col span={detailInfo && detailInfo.evaluate ? 6 : 8}>
<Col span={detailInfo && detailInfo.outerStatus === EXCHANGE_OUTER_STATUS_FINISHED ? 6 : 8}>
{/* 退货收货地址 */}
<Suspense fallback={null}>
<ReturnAddressInfo
......@@ -391,7 +392,7 @@ const DetailInfo: React.FC<DetailInfoProps> = ({
</Suspense>
</Col>
<Col span={detailInfo && detailInfo.evaluate ? 6 : 8}>
<Col span={detailInfo && detailInfo.outerStatus === EXCHANGE_OUTER_STATUS_FINISHED ? 6 : 8}>
{/* 换货收货地址 */}
<Suspense fallback={null}>
<ExchangeAddressInfo
......@@ -413,7 +414,7 @@ const DetailInfo: React.FC<DetailInfoProps> = ({
</Suspense>
</Col>
{detailInfo && detailInfo.evaluate && (
{detailInfo && detailInfo.outerStatus === EXCHANGE_OUTER_STATUS_FINISHED && (
<Col span={6}>
{/* 售后评价 */}
<Suspense fallback={null}>
......
......@@ -111,7 +111,7 @@ const ProductImageForm: React.FC<{}> = (props) => {
setIsAllAttributePic(setImageType)
_priceAttributeParams = priceAttributeParams.map((_item, _index) => {
let _obj = {..._item, goodsId: _item.goods.id}
let _obj = {..._item, goodsId: _item?.goods?.id || _item.goodsId}
_obj.commodityPic = maintainImageData[_index] || []
return _obj
})
......
......@@ -189,8 +189,9 @@ const CreateOrderElectronModal:React.FC<OrderElectronModalProps> = (props) => {
effects={($, actions) => {
// $('onFormInit').subscribe(() => {
if (data.isElectronicContract === 1) {
useAsyncSelect('contractTemplateId', async () => (await PublicApi.getOrderSelectListContractTemplate()).data, ['name', 'id'])
actions.setFieldValue("contractTemplateId", data.contractTemplateId)
useAsyncSelect('contractTemplateId', async () => (await PublicApi.getOrderSelectListContractTemplate()).data, ['name', 'id']).then(()=>{
actions.setFieldValue("contractTemplateId", data.contractTemplateId)
})
} else {
actions.setFieldState('usingElectronicContracts', state => {
state.value = 0
......
......@@ -95,20 +95,24 @@ export const MoneyTotalBox = ({ dataSource, isEditData }) => {
}
const [amountMoney, setAmountMoney] = useState<number>(amount || sum + freePrice)
// useEffect(() => {
// const _sum = orderProductRequests.reduce((prev, next) => prev + Number((next.money || 0)), 0)
// setSum(_sum)
// }, [])
const [changeTotal, setChangeTotal] = useState<boolean>(false) // 是否改变总价
// 总计金额
useEffect(() => {
setAmountMoney(() => (sum*1000 + freePrice*1000)/1000)
}, [sum, freePrice])
useEffect(() => {
if(changeTotal){
// 执行修改订单运费
PublicApi.postOrderProductPriceUpdate({orderId: dataSource.id, price: freePrice, type: 2})
}
}, [amountMoney])
const handleConfirm = () => {
setFreePrice(Number(modalPriceActions.getFieldValue('freePrice') || 0))
modelRef.current.setVisible(false)
setChangeTotal(true)
}
useEffect(() => {
......@@ -294,7 +298,6 @@ const SaleOrderProductTable:React.FC<OrderProductTableProps> = (props) => {
const warehouseRef = useRef<any>({})
// 判断是否可操作当前表格
console.log(SaleOrderInsideWorkStateTexts[data.purchaseOrderInteriorState],data, 'data')
const isEditData = SaleOrderInsideWorkStateTexts[data.purchaseOrderInteriorState] === '待审核订单'
const productComponents = {
body: {
......@@ -338,12 +341,14 @@ const SaleOrderProductTable:React.FC<OrderProductTableProps> = (props) => {
const handleSave = row => {
const newData = [...orderProductRequests];
const index = newData.findIndex(item => row.key === item.key);
const index = newData.findIndex(item => row.id === item.id);
const item = newData[index];
newData.splice(index, 1, {
...item,
...row,
});
// 执行修改订单价格
PublicApi.postOrderProductPriceUpdate({orderId: data.id, orderDetailsId: row.id, price: row.price, type: 1})
ctl.setData({
...data,
orderProductRequests: newData
......
......@@ -30,6 +30,7 @@ import { changeRouterTitleByStatus } from '../../_public/order/utils'
import { ReadyAddOrderDetailContext } from '../context'
import AuditProcess from '@/components/AuditProcess'
import styles from './index.less'
import { toPoint } from '@/utils/type'
export interface PurchaseOrderDetailProps {}
......@@ -180,7 +181,7 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
orderProductRequests: _orderProductRequests.map(v => {
v.price = 1
v.isMemberPrice = Number(v.isMemberPrice)
v.memberPrice = parseInt(v.memberPrice)
v.memberPrice = toPoint(v.memberPrice)
v.imgUrl = v.mainPic
v.minOrder = v.minOrder
// v.productId = v.id
......
......@@ -5,6 +5,7 @@ import { productInfoColumns } from '../constant';
import ProductTableCell, { ProductEditableRow } from '../components/productTableCell';
import { useModalTable } from './useModalTable';
import { usePageStatus, PageStatus } from '@/hooks/usePageStatus';
import { toPoint } from '@/utils/type';
export const getUnitPriceTotal = (record) => {
const purchaseCount = Number(record['purchaseCount']) || 0
......@@ -27,7 +28,9 @@ export const getUnitPriceTotal = (record) => {
return false
}
})
return unitPrice * purchaseCount
// 考虑会员折扣
let memberPrice = record?.memberPrice ? toPoint(record.memberPrice) : 1
return unitPrice * purchaseCount * memberPrice
}
export const useProductTable = (ctx: ISchemaFormActions | ISchemaFormAsyncActions) => {
const productRef = useRef<any>({})
......
import React from 'react'
import React, { useRef } from 'react'
import { history } from 'umi'
import { Card, Button, Space, Dropdown, Menu } from 'antd'
import { StandardTable } from 'god'
......@@ -24,14 +24,17 @@ const fetchTableData = async (params) => {
// TODO
const FirstApprovedOrder:React.FC<FirstApprovedOrderProps> = (props) => {
const refTable = useRef<any>({})
const {
columns
} = useSelfTable()
} = useSelfTable(refTable)
return <PageHeaderWrapper>
<Card>
<StandardTable
fetchTableData={params => fetchTableData(params)}
ref={refTable}
columns={columns}
rowKey={'orderNo'}
formilyLayouts={{
......
import React, { useRef } from 'react'
import { history, Link } from 'umi'
import { Button, Row, Col, Progress } from 'antd'
import { Button, Row, Col, Progress, Popconfirm } from 'antd'
import { PublicApi } from '@/services/api'
import EyePreview from '@/components/EyePreview'
import { formatTimeString } from '@/utils'
......@@ -49,8 +49,18 @@ const CircleChart = props => {
}
// 业务hooks, 待支付订单
export const useSelfTable = () => {
export const useSelfTable = (props) => {
const { refTable } = props
const ref = useRef<any>({})
const handleCancel = (param) => {
PublicApi.postOrderPurchaseOrderCancel({id: param}).then(res => {
if(res.code === 1000) {
refTable.current.reload()
}
})
}
const payOrderColumns: any[] = [
{
title: '订单号',
......@@ -124,27 +134,41 @@ export const useSelfTable = () => {
title: '当前支付', align: 'center', dataIndex: 'currentPayments', width: 140, render: (text, record) => <>
<Row justify='space-between'>
<Col>{record.currentPayments} / {record.sum}</Col>
<Col>
{/* <Col>
{
record.currentPayments !== record.sum &&
(record.externalState === PurchaseOrderOutWorkState.PAY_ORDER || record.externalState === PurchaseOrderOutWorkState.CONFIRM_NOT_ARRIVED_ACCOUNT) &&
<Link to={`/memberCenter/tranactionAbility/purchaseOrder/readyPayOrder/detail?id=${record.id}`}>去支付</Link>
}
</Col>
</Col> */}
</Row>
<Progress percent={Math.ceil(record.currentPayments / record.sum)} showInfo={false} />
</>
},
// {
// title: '操作',
// align: 'center',
// dataIndex: 'ctl',
// key: 'ctl',
// render: (text, record) => <>
// <Button type='link' onClick={() => handleConfirm(record)}>支付</Button>
// <Button type='link' onClick={() => handleCancel(record.id)}>取消订单</Button>
// </>
// }
{
title: '操作',
align: 'center',
dataIndex: 'ctl',
key: 'ctl',
render: (text, record) => <>
{
record.currentPayments !== record.sum &&
(record.externalState === PurchaseOrderOutWorkState.PAY_ORDER || record.externalState === PurchaseOrderOutWorkState.CONFIRM_NOT_ARRIVED_ACCOUNT) &&
<Link to={`/memberCenter/tranactionAbility/purchaseOrder/readyPayOrder/detail?id=${record.id}`}>去支付</Link>
}
{
(record.externalState === PurchaseOrderOutWorkState.PAY_ORDER && !record.signatureLogId || record.externalState === PurchaseOrderOutWorkState.CONFIRM_NOT_ARRIVED_ACCOUNT) &&
<Popconfirm
title="是否要取消该订单?"
onConfirm={() => handleCancel(record.id)}
okText="是"
cancelText="否"
>
<Button type='link'>取消订单</Button>
</Popconfirm>
}
</>
}
]
return {
......
......@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2020-09-16 15:16:47
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-11-25 16:29:06
* @LastEditTime: 2020-11-25 17:25:55
* @Description: 联动逻辑相关
*/
import { Modal } from 'antd';
......@@ -314,7 +314,7 @@ const getParams = type => {
},
tableProps: {
rowKey: 'orderNo',
lableKey: '',
lableKey: 'orderNo',
},
};
......@@ -325,7 +325,6 @@ const getParams = type => {
basicParams.columns = purchaseOrderColumns;
basicParams.fetchTableData = fetchOrderPurchaseReceiptAddList;
basicParams.formilyProps.ctx.schema = purchaseOrderBillSchema;
basicParams.tableProps.lableKey = 'orderNo';
break;
}
......@@ -335,7 +334,6 @@ const getParams = type => {
basicParams.columns = salesOrderColumns;
basicParams.fetchTableData = getOrderSalesInvoiceOrderList;
basicParams.formilyProps.ctx.schema = purchaseOrderBillSchema; // 这里用同一个 schema 是因为接口参数名是一样的,后台做了处理
basicParams.tableProps.lableKey = 'orderNo';
break;
}
......@@ -345,7 +343,6 @@ const getParams = type => {
basicParams.columns = machiningWarehousingColumns;
basicParams.fetchTableData = getMachiningWarehousingList;
basicParams.formilyProps.ctx.schema = machiningWarehousingBillSchema;
basicParams.tableProps.lableKey = 'noticeNo';
break;
}
......@@ -355,7 +352,6 @@ const getParams = type => {
basicParams.columns = machiningDeliveryColumns;
basicParams.fetchTableData = getMachiningDeliveryList;
basicParams.formilyProps.ctx.schema = machiningDeliveryBillSchema;
basicParams.tableProps.lableKey = 'noticeNo';
break;
}
......
......@@ -97,28 +97,6 @@ const BillsForm: React.FC<BillsFormProps> = ({
},
]
// 获取品牌
const fetchBrand = async () => {
const res = await PublicApi.getProductSelectGetSelectBrand({
name: '',
});
if (res.code === 1000) {
return res.data;
}
return [];
}
// 获取会员品类
const fetchCustomerCategory = async () => {
const res = await PublicApi.getProductSelectGetSelectCustomerCategory({
name: '',
});
if (res.code === 1000) {
return res.data;
}
return [];
}
// 获取单据详情
const getBillInfo = () => {
if (!id) {
......@@ -660,6 +638,7 @@ const BillsForm: React.FC<BillsFormProps> = ({
produceNoticeOrderDetailId: extraData.id,
orderNo: extraData.orderNo,
processNum: extraData.processNum,
productName: extraData.productName,
storageCount: productCount,
};
}),
......@@ -709,6 +688,7 @@ const BillsForm: React.FC<BillsFormProps> = ({
produceNoticeOrderDetailId: extraData.id,
orderNo: extraData.orderNo,
processNum: extraData.processNum,
productName: extraData.productName,
shipmentQuantity: productCount,
};
}),
......@@ -902,8 +882,6 @@ const BillsForm: React.FC<BillsFormProps> = ({
'name',
FORM_FILTER_PATH,
);
useAsyncSelect('brandId', fetchBrand, ['name', 'id']);
useAsyncSelect('customerCategoryId', fetchCustomerCategory, ['name', 'id']);
},
inline: false,
}
......
......@@ -18,6 +18,7 @@ import {
DEPENDENT_DOC_INTERNAL,
} from '@/constants';
import { PATTERN_MAPS } from '@/constants/regExp';
import { PublicApi } from '@/services/api';
const orderDetailSchema: ISchema = {
type: 'object',
......@@ -777,18 +778,25 @@ export const goodsSearchSchema: ISchema = {
},
},
customerCategoryId: {
type: 'string',
type: 'string',
'x-component': 'SearchSelect',
'x-component-props': {
placeholder: '品类',
allowClear: true,
fetchSearch: PublicApi.getProductSelectGetSelectCustomerCategory,
style: {
width: '100%',
}
},
},
brandId: {
type: 'string',
enum: [],
'x-component': 'SearchSelect',
'x-component-props': {
placeholder: '品牌',
allowClear: true,
fetchSearch: PublicApi.getProductSelectGetSelectBrand,
style: {
width: '100%',
}
},
},
submit: {
......
export function isString(str: any):str is string {
return typeof str === 'string'
}
// 分数转小数
export const toPoint = (percent: string) => {
let str: any = percent.replace("%","");
str = str / 100;
return str;
}
// 小数转分数
export const toPercent = (point: number) => {
let str = Number(point * 100).toFixed(1);
str += "%";
return str;
}
\ No newline at end of file
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