Commit 5509eb9b authored by 前端-钟卫鹏's avatar 前端-钟卫鹏

fix: 采购销售订单列表导出,商品副单位价格,采购订单列表修改送货时间

parent 15624697
......@@ -271,6 +271,7 @@ const AddProducts: React.FC<{}> = (props) => {
goods: { id: item.goodsId },
attributeAndValueList: item.attributeAndValueList,
unitPrice: item.unitPrice,
priceRate: item.priceRate,
commodityPic: productInfoByEdit.unitPriceAndPicList[index].commodityPic
}
})
......
......@@ -57,6 +57,7 @@ const PriceAttributeForm: React.FC<Iprops> = (props) => {
const [isTax, setIsTax] = useState<boolean>(true) // 是否含税
const [assistantUniquePrice, setAssistantUniquePrice] = useState<any>(0) // 副单价
const [assistantUniqueLadderPrice, setAssistantUniqueLadderPrice] = useState<any[]>([]) // 副阶梯单价
const [assistantUniquePriceRate, setAssistantUniquePriceRate] = useState<any>(0) // 副单价换算比率
const [combineAttributeChangeFatories, setCombineAttributeChangeFatories] = useState<number>(0)
......@@ -309,7 +310,6 @@ const PriceAttributeForm: React.FC<Iprops> = (props) => {
width: 200,
render: (text, record) => {
const assistPrice = _tableDataSource[record['索引']]["副单价"]
console.log(assistPrice, 'assis')
if(assistPrice && Array.isArray(assistPrice)) {
return assistPrice.map(p => <p>{planPrice===3 ? p : `¥${p}`}</p>)
} else if(assistPrice) {
......@@ -358,21 +358,38 @@ const PriceAttributeForm: React.FC<Iprops> = (props) => {
_tempObj['规格ID'] = productInfoByEdit.unitPriceAndPicList[i]?.id
}
if(updateFlag.current){ // 初次渲染tab 再次进入tab采用缓存数据
console.log(1, productInfoByEdit.unitPriceAndPicList[i])
if(productInfoByEdit.unitPriceAndPicList[i]?.unitPrice) {
let unitPric = productInfoByEdit.unitPriceAndPicList[i]?.unitPrice
_tempObj['单价'] = orderlyLadderPrice(unitPric)
// _tempObj['单价'] = orderlyLadderPrice(unitPric)
const _price = orderlyLadderPrice(unitPric)
const _priceRate = productInfoByEdit.unitPriceAndPicList[i]?.priceRate
console.log(_price, _priceRate)
_tempObj['单价'] = _price
_tempObj['副单价率'] = _priceRate
setAssistantUniquePriceRate(_priceRate)
const _priceNumber = Object.keys(_price)[0] === '0-0' ? Object.values(_price)[0] : Object.values(_price)
_tempObj['副单价'] = Array.isArray(_priceNumber) ? _priceNumber.map(_p => (Number(_p) * Number(_priceRate) / 100).toFixed(2)) : (Number(_priceNumber) * Number(_priceRate) / 100).toFixed(2)
} else {
_tempObj['单价'] = {}
}
}else{
console.log(2, _tableDataSource[i] && tableDataSource[i] && tableDataSource[i])
if(_tableDataSource[i] && tableDataSource[i] && tableDataSource[i]['单价']) {
let unitPric = _tableDataSource[i] && tableDataSource[i] && tableDataSource[i]['单价']
_tempObj['单价'] = orderlyLadderPrice(unitPric)
// _tempObj['单价'] = orderlyLadderPrice(unitPric)
const _price = orderlyLadderPrice(unitPric)
const _priceRate = _tableDataSource[i] && tableDataSource[i] && tableDataSource[i]['副单价率']
console.log(_price, _priceRate)
_tempObj['单价'] = _price
_tempObj['副单价率'] = _priceRate
setAssistantUniquePriceRate(_priceRate)
_tempObj['副单价'] = (Number(_price) * Number(_priceRate) / 100).toFixed(2)
} else {
_tempObj['单价'] = {}
}
}
}else{
} else {
_tempObj['对应货品'] = selectedGoods.length > 0 ? selectedGoods[0].id : 0
_tempObj['单价'] = _tableDataSource[i] && tableDataSource[i] && tableDataSource[i]['单价'] || {}
}
......@@ -417,9 +434,6 @@ const PriceAttributeForm: React.FC<Iprops> = (props) => {
useEffect(()=>{
constructedPrarams()
if(priceModalVisible) {
setAssistantUniquePrice(0)
}
},[combineAttributeArray, attributeObjArr, attributeValObjArr, priceModalVisible, tableDataSource])
/* 生成传输数据 */
......@@ -463,19 +477,22 @@ const PriceAttributeForm: React.FC<Iprops> = (props) => {
}
})
) /* code3 end */ /* code2 end */
console.log( _tableDataSource[index]&&_tableDataSource[index]['副单价率'])
_paramsArray.push({
goodsId: _tableDataSource[index] ? _tableDataSource[index]['对应货品'] : 0,
attributeAndValueList: _tempArr,
unitPrice: _tableDataSource[index]&&_tableDataSource[index]['单价'],
priceRate: _tableDataSource[index]&&_tableDataSource[index]['副单价率'],
id: _tableDataSource[index]&&_tableDataSource[index]['规格ID'],
}) /*带上货品id 带上单价*/
}) : _paramsArray.push({
goodsId: _tableDataSource[0] ? _tableDataSource[0]['对应货品'] : 0,
attributeAndValueList: [],
unitPrice: _tableDataSource[0]&&_tableDataSource[0]['单价'],
priceRate: _tableDataSource[0]&&_tableDataSource[0]['副单价率'],
id: _tableDataSource[0]&&_tableDataSource[0]['规格ID'],
}) /*带上货品id 带上单价*/ /* code1 end */
console.log(_tableDataSource, 'params', _paramsArray)
setPriceAttributeParams(_paramsArray)
}
......@@ -531,6 +548,7 @@ const PriceAttributeForm: React.FC<Iprops> = (props) => {
const confirmPrice = () => {
setPriceForm.validateFields().then(v => {
setPriceModalVisible(false)
console.log(v, 'v')
const { ladderPrice, ladderRange } = v
let _priceRange = {}
if(ladderPrice){ // 判断阶梯价格
......@@ -540,20 +558,26 @@ const PriceAttributeForm: React.FC<Iprops> = (props) => {
}else{
_priceRange['0-0'] = v.uniquePrice
}
console.log(v, assistantUniquePrice, assistantUniqueLadderPrice)
let _row = { ...curretSetPriceRow, 单价: _priceRange, 副单价: ladderPrice ? [...assistantUniqueLadderPrice] : assistantUniquePrice }
let _row = {
...curretSetPriceRow,
单价: _priceRange,
副单价: ladderPrice ? [...assistantUniqueLadderPrice] : assistantUniquePrice,
副单价率: assistantUniquePriceRate
}
let newTabeData = [..._tableDataSource]
if(isBatchSetting){ // 判断是否批量设置价格
// _tableDataSource.map(_item => _item['单价'] = _priceRange)
_tableDataSource.forEach(_item => {
_item['单价'] = _priceRange
_item['副单价'] = ladderPrice ? [...assistantUniqueLadderPrice] : assistantUniquePrice
_item['副单价率'] = assistantUniquePriceRate
})
}else{
newTabeData[curretSetPriceRow['索引']] = _row
}
_tableDataSource = newTabeData
setTableDataSource(_tableDataSource)
console.log(_tableDataSource, 'confirmPrice')
})
}
......@@ -561,17 +585,22 @@ const PriceAttributeForm: React.FC<Iprops> = (props) => {
setIsBatchSetting(false) // 点击行操作批量置为false
setCurrentSetPriceRow(record)
setPriceModalVisible(true)
// console.log(record, 'record') // 通过判断key字符串'0-0' 是否是阶梯价格 注:空对象时候{}为新建状态
console.log(record, 'record') // 通过判断key字符串'0-0' 是否是阶梯价格 注:空对象时候{}为新建状态
setPriceForm.resetFields() // 先清空 若需要价格回显 在此处处理
if(Object.keys(record['单价'])[0] === '0-0') { // 状态为非阶梯价格
setLadderPrice(false)
setPriceForm.setFieldsValue({ladderPrice: false, uniquePrice: Object.values(record['单价'])[0]})
const p = Object.values(record['单价'])[0]
setPriceForm.setFieldsValue({ladderPrice: false, uniquePrice: p})
setPriceForm.setFieldsValue({assistantUniquePriceRate: record['副单价率']})
setAssistantUniquePrice((Number(p || 0) * Number(record['副单价率'] || 0) / 100).toFixed(2))
}else if(JSON.stringify(record['单价']) === '{}'){ // 新建情况下默认为{}
setLadderPrice(false)
setAssistantUniquePrice(0)
}else{ // 否则编辑情况下
setLadderPrice(true)
let numberArray = Object.keys(record['单价']).map(item => item.split('-').map(_ => Number(_)))
let priceArray = Object.values(record['单价'])
setPriceForm.setFieldsValue({assistantUniquePriceRate: record['副单价率']})
// 截取范围数组中第一个和最小起订 做对比,变动则重置阶梯数量
let minOrder = priceForm.getFieldValue('minOrder')
if(numberArray[0][0] === minOrder){
......@@ -579,6 +608,7 @@ const PriceAttributeForm: React.FC<Iprops> = (props) => {
numberArray.map((_item, _index) => {
tempArr.push({ numberPrice: priceArray[_index], numberRange: { numberMin: _item[0], numberMax: _item[1] } })
})
setAssistantUniqueLadderPrice(() => tempArr.map(_item => (Number(_item.numberPrice) * Number(record['副单价率']) / 100).toFixed(2)))
setPriceForm.setFieldsValue({ladderPrice: true, ladderRange: tempArr})
}else{
let tempArr = [];
......@@ -645,7 +675,6 @@ const PriceAttributeForm: React.FC<Iprops> = (props) => {
}
const formValueChange = (changeValue, values) => {
console.log(values, 'vvv')
if(values.ladderPrice) {
setAssistantUniqueLadderPrice(() => {
return values?.ladderRange ? values.ladderRange.map(item => {
......@@ -659,6 +688,7 @@ const PriceAttributeForm: React.FC<Iprops> = (props) => {
} else {
setAssistantUniquePrice((Number(values['uniquePrice'] || 0) * Number(values['assistantUniquePriceRate'] || 0) / 100).toFixed(2))
}
setAssistantUniquePriceRate(values['assistantUniquePriceRate'])
}
useEffect(() => {
......
......@@ -25,8 +25,6 @@ const { RangePicker } = DatePicker
let paramsArray = [];
const isEdit = history.location.query?.id
const ProductAttributeForm: React.FC<Iprops> = (props) => {
const { attributesData, onRef } = props
const [isClearFormAndDataInEdit, setIsClearFormAndDataInEdit] = useState<boolean>(false) // 编辑情况下 是否要清空商品属性表单数据和页面全局数据
......@@ -45,7 +43,7 @@ const ProductAttributeForm: React.FC<Iprops> = (props) => {
useEffect(()=>{
onRef(productAttributeFormRef)
// 编辑情况下 构建选中属性数据 给paramsArray初始化数据用于编辑 设置表单数据
if(isEdit){
if(history.location.query?.id){
constructProductSelectAttribute()
attributeForm.setFieldsValue(getProductAttributeFormParamsByEdit)
}
......@@ -53,7 +51,7 @@ const ProductAttributeForm: React.FC<Iprops> = (props) => {
useEffect(() => {
// 属性变动 表明品类品牌变动 清空页面全局参数组合和store的选中属性 重置表单 (只对新增有效)
if(isEdit){
if(history.location.query?.id){
// 编辑第一次执行不清空,之后的变动需要清空
if(isClearFormAndDataInEdit){
paramsArray = []
......@@ -150,7 +148,7 @@ const ProductAttributeForm: React.FC<Iprops> = (props) => {
let _isPrice = null
let _isUpdateAttribute = null
let _isDisabled = false
if(isEdit){
if(history.location.query?.id){
_isPrice = attrItem.isPrice
_isUpdateAttribute = productInfoByEdit.isUpdateAttribute
_isDisabled = _isPrice && !_isUpdateAttribute
......@@ -268,7 +266,7 @@ const ProductAttributeForm: React.FC<Iprops> = (props) => {
<Tabs defaultActiveKey="1" tabPosition="left">
{
attributesData?.length > 0 && attributesData.map(attributeItem =>
isEdit && !productInfoByEdit.isUpdateAttribute && (attributeItem.createTime > productInfoByEdit.createTime) ? null : <TabPane tab={attributeItem.name} key={attributeItem.id}>
!productInfoByEdit?.isUpdateAttribute && (attributeItem?.createTime > productInfoByEdit?.createTime) ? null : <TabPane tab={attributeItem.name} key={attributeItem.id}>
{
renderTabPanchildren(attributeItem)
}
......
......@@ -363,23 +363,26 @@ const Products: React.FC<{}> = () => {
console.log('取消删除')
}
const onChangeUpShop = (values) => {
const onChangeUpShop = async (values) => {
console.log(values, 'values')
// 全是自营商城 无需判断
// 商城属性: 1.B端商城 2.C端商城 3.B端自营商城 4.C端自营商城。为null的话就不是自营商城。
if(values.every(item => item.property === 3 || item.property === 4)) {
setCheckedValues(values)
return ;
}
// 判断上架之前是否有店铺 有即可以上下架
if(judgeShopRef.current){
PublicApi.getTemplateWebMemberShopWebFindCurrMemberShop({
memberId: getAuth().memberId,
memberRoleId: getAuth().memberRoleId
}).then(res => {
if(res.data?.id){
setShopId(res.data)
setCheckedValues(values)
}else{
message.error('您还还未创建店铺,请先创建店铺!')
setTimeout(() => {
history.push('/memberCenter/shopAbility/infoManage')
}, 1000)
}
})
const { data } = await PublicApi.getTemplateWebMemberShopWebFindCurrMemberShop({ memberId: getAuth().memberId, memberRoleId: getAuth().memberRoleId })
if(data?.id) {
setShopId(data)
setCheckedValues(values)
} else {
message.error('您还还未创建店铺,请先创建店铺!')
setTimeout(() => {
history.push('/memberCenter/shopAbility/infoManage')
}, 1000)
}
judgeShopRef.current = false
} else {
setCheckedValues(values)
......@@ -407,7 +410,8 @@ const Products: React.FC<{}> = () => {
if(isUp) {
if(checkedValues.length > 0){
const fn = isBatch ? PublicApi.postProductCommodityPublishCommodityBatch : PublicApi.postProductCommodityPublishCommodity
fn(isBatch ? {storeId: shopId['id'], storeName: shopId['name'], shopList: checkedValues, idList: currentRef.current} : {storeId: shopId['id'], storeName: shopId['name'], ...params}).then(res => {
// @ts-ignore
fn(isBatch ? {storeId: shopId['id'], storeName: shopId['name'], shopList: checkedValues, idList: currentRef.current} : {storeId: shopId?.id || null, storeName: shopId?.name|| null, ...params}).then(() => {
setUpDownModal(false)
ref.current.reload()
setIsDisabledOKbtn(false)
......
......@@ -17,6 +17,8 @@ import { constructTableData, transformDataForNiceForm } from '../../effect'
import PriceModal from './priceModal'
import ProductModal from './productModal'
import MemberModal from './memberModal'
import { useAsyncSelect } from '@/formSchema/effects/useAsyncSelect'
import { fectchShopListsSource } from '@/utils/type'
const { Search } = Input
......@@ -27,6 +29,10 @@ export interface PriceSettingProps {
formSubmit?(values),
}
const fetchShopLists = async () => {
return await fectchShopListsSource({type: 1})
}
const PriceSetting:React.FC<PriceSettingProps> = (props) => {
const { addSchemaAction, schema, formSubmit, onFieldChange = () => {} } = props
const priceRef = useRef<any>({})
......@@ -225,14 +231,14 @@ const PriceSetting:React.FC<PriceSettingProps> = (props) => {
FormEffectHooks.onFormInputChange$().subscribe(() => {
onFieldChange()
})
useAsyncSelect('shopId', fetchShopLists, ['name', 'id'])
$('onFieldValueChange', 'shopId').subscribe(parentState => {
if (parentState.value) {
ctx.setFieldState('shopId', state => {
// state.dataSource = pageStatus === PageStatus.PREVIEW ?
// GlobalConfig.web.shopInfo.filter(v => v.id === parentState.value && state.value.includes(v.id))
// :
state.dataSource = GlobalConfig.web.shopInfo.filter(v => v.id === parentState.value)
// state.dataSource = GlobalConfig.web.shopInfo.filter(v => v.id === parentState.value)
if(pageStatus === PageStatus.EDIT) {
state.props['x-component-props'].disabled = true;
......
......@@ -3,6 +3,7 @@ import { history } from 'umi'
import { formatTimeString } from '@/utils'
import StatusColors from '../components/statusColors'
import EyePreview from '@/components/EyePreview'
import { ORDER_TYPE_CHANNEL_POINTS, ORDER_TYPE_POINTS } from '@/constants/order'
export const baseOrderListColumns: any = () => {
......@@ -49,7 +50,7 @@ export const baseOrderListColumns: any = () => {
dataIndex: 'amount',
key: 'amount',
ellipsis: true,
render: (t) => `¥${t}`
render: (t, r) => (r.orderType === ORDER_TYPE_POINTS || r.orderType === ORDER_TYPE_CHANNEL_POINTS) ? t : `¥${t}`
},
{
title: '订单类型',
......
......@@ -19,6 +19,9 @@ import { useHttpRequest } from '@/hooks/useHttpRequest'
import TableOperation from '@/components/TableOperation'
import { ORDER_TYPE_POINTS } from '@/constants/order'
import axios from 'axios'
import { getAuth } from '@/utils/auth'
import moment from 'moment'
const SelectStyles = styled((props) => <div className='select-list' {...props}></div>)`
.select_style_border {
......@@ -61,6 +64,7 @@ const fetchTableData = async (params) => {
const formActions = createFormActions();
const destroyActions = createFormActions()
const adjustActions = createFormActions();
// const showDataSource = [
// { id: 1, name: "换货"},
......@@ -75,6 +79,7 @@ const PurchaseOrder: React.FC<PurchaseOrderProps> = (props) => {
const [orderType, setOrderType] = useState<any>()
const ref = useRef<any>({})
const destoryRef = useRef<any>({})
const adjustRef = useRef<any>({})
const { run, loading } = useHttpRequest(PublicApi.postOrderBuyerCancel)
const [showDataSource, setShowDataSource] = useState([
{ id: 1, name: "换货"},
......@@ -82,6 +87,7 @@ const PurchaseOrder: React.FC<PurchaseOrderProps> = (props) => {
{ id: 3, name: "维修"},
])
const [fetchParams, setFetchParams] = useState<any>()
const { token, memberId, memberRoleId } = (getAuth() || {})
const loadingTableData = (params) => {
setFetchParams(params)
......@@ -153,13 +159,15 @@ const PurchaseOrder: React.FC<PurchaseOrderProps> = (props) => {
const buttonGroup = {
'取消订单': record.showCancel,
'售后': record.showAfterSales,
'评价': record.showComment
'评价': record.showComment,
'调整送货时间': record.showModifyDeliverTime
}
const operationHandler = {
'取消订单': () => handleCancel(record.orderId),
'售后': () => handleSaleAfter(record),
'评价': () => handleEvaluate(record.orderId),
'调整送货时间': () => handleAdjust(record)
}
return (
......@@ -185,24 +193,72 @@ const PurchaseOrder: React.FC<PurchaseOrderProps> = (props) => {
}
}
const handleExport = async () => {
const downloadLink = document.createElement('a')
// const data = await PublicApi.getOrderBuyerExport({...fetchParams}, {extendsOptions: { responseType: "blob" }})
const data = await axios.get('/order/buyer/export', {
params: {...fetchParams},
headers: {
"Content-Type": "application/vnd.ms-excel;charset=UTF-8"
},
responseType: 'blob'
console.log(`${process.env.BACK_GATEWAY}/order/vendor/export?token=${token}`)
window.open(`${process.env.BACK_GATEWAY}/order/buyer/export?token=${token}`, '_blank')
// const downloadLink = document.createElement('a')
// downloadLink.style.display = 'none';
// downloadLink.href = `${process.env.BACK_GATEWAY}order/buyer/export?token=${token}`;
// downloadLink.target = '_blank'
// document.body.appendChild(downloadLink)
// downloadLink.click()
// document.body.removeChild(downloadLink)
// axios({
// method: 'GET',
// url: '/order/buyer/export',
// params: {...fetchParams},
// responseType: 'blob',
// headers: {
// token,
// 'contentType': 'application/vnd.ms-excel;charset=UTF-8'
// },
// }).then(res => {
// console.log(res, res['headers'])
// // @ts-ignore
// let blob = new Blob([res.data], {type: "application/vnd.ms-excel;charset=utf-8"});
// downloadLink.style.display = 'none';
// downloadLink.href = URL.createObjectURL(blob);
// downloadLink.download = '采购订单列表.xls'
// document.body.appendChild(downloadLink)
// downloadLink.click()
// document.body.removeChild(downloadLink)
// }).catch(err => {
// console.log(err)
// })
}
const handleAdjust = async (record) => {
adjustRef.current.setVisible(true)
const { code, data } = await PublicApi.getOrderBuyerGetDeliveryTime({ shopId: record.shopId, orderId: record.orderId })
if(code === 1000) {
adjustActions.setFieldValue('orderId', record.orderId)
adjustActions.setFieldValue('reason', data.reason)
adjustActions.setFieldValue('deliverDate', data.deliverDate)
adjustActions.setFieldState('timeLine', prevState => {
prevState.visible = data.isShow
})
}
}
const handleSubmitAdjust = () => {
adjustActions.submit().then(async ({values}: any) => {
console.log(values, 'adjust')
const result = await PublicApi.postOrderBuyerUpdateDeliveryTime(values)
if (result.code === 1000) {
adjustActions.reset()
adjustRef.current.setVisible(false)
setTimeout(() => {
ref.current.reload()
}, 800)
}
})
// @ts-ignore
let blob = new Blob([data], {type: 'application/vnd.ms-excel'})
downloadLink.style.display = 'none';
downloadLink.href = URL.createObjectURL(blob);
downloadLink.download = '采购订单列表.xls'
document.body.appendChild(downloadLink)
downloadLink.click()
document.body.removeChild(downloadLink)
}
const resetAdjustSelect = () => {
adjustActions.reset()
}
const controllerBtns = <Button style={{width: 140}} onClick={handleExport} type='default'>导出</Button>
......@@ -309,6 +365,83 @@ const PurchaseOrder: React.FC<PurchaseOrderProps> = (props) => {
}}
modalProps={{confirmLoading: loading}}
/>
{/* 调整送货时间 */}
<ModalForm
modalTitle='调整送货时间'
currentRef={adjustRef}
confirm={handleSubmitAdjust}
cancel={resetAdjustSelect}
actions={adjustActions}
// className={styles.adjustModal}
schema={{
type: 'object',
properties: {
NO_SUBMIT: {
type: 'object',
"x-component": 'mega-layout',
"x-component-props": {
labelAlign: 'top',
},
properties: {
orderId: {
type: 'number',
title: '当前id',
visible: false,
},
deliverDate: {
type: 'string',
"x-component": 'date',
title: '送货时间',
required: true,
"x-component-props": {
disabledDate: current => {
return current && current < moment().startOf('day')
},
showTime: true,
style: { width: '100%' }
}
},
timeLine: {
title: '时间段',
type: 'radio',
enum: [
{ label: '审核通过', value: 1 },
{ label: '审核不通过', value: 0 },
],
"x-component-props": {
disabled: false,
optionType: 'button',
// className: styles.adjustFormItem
},
},
reason: {
type: 'textarea',
"x-component-props": {
rows: 4,
placeholder: '在此输入你的原因, 最多50个汉字'
},
title: '调整原因',
"x-rules": [
{
required: true,
message: '请输入调整原因'
},
{
limitByte: true,
maxByte: 100
}
]
}
}
}
}
}}
effects={($, actions) => {
$('onFormInit').subscribe(() => {
})
}}
/>
</PageHeaderWrapper>
}
......
......@@ -42,9 +42,8 @@ const InquiryModalTable:React.FC<InquiryModalTableProps> = (props) => {
const handleConfirm = async () => {
const item = rowSelectionCtl.selectRow[0]
console.log(item, 'item')
if (item) {
schemaAction.setFieldValue('quoteNo', item.quotationNo)
schemaAction.setFieldValue('quoteId', item.id)
const data = await fetchOrderApi.getProductListByQuotationOrderId({
id: item.inquiryListId
})
......@@ -53,16 +52,19 @@ const InquiryModalTable:React.FC<InquiryModalTableProps> = (props) => {
v.memberId = item.offerMemberId
v.memberRoleId = item.offerMemberRoleId
v.orderMode = schemaAction.getFieldValue('orderMode')
v.shopId = schemaAction.getFieldValue('shopId')
v.shopId = item['shopId']
// b2b询价下单 定价类型必定为2
v.priceType = 2
return v
})
schemaAction.setFieldValue('quoteNo', item.quotationNo)
schemaAction.setFieldValue('quoteId', item.id)
schemaAction.setFieldValue('vendorRoleId', item.offerMemberRoleId)
schemaAction.setFieldValue('products', await filterProductDataById([], newData))
schemaAction.setFieldValue('vendorMemberName', item.offerMemberName)
schemaAction.setFieldValue('vendorMemberId', item.offerMemberId)
schemaAction.setFieldValue('vendorRoleId', item.offerMemberRoleId)
schemaAction.setFieldValue('shopId', item['shopId'])
// 询价单回显订单明细
schemaAction.setFieldValue('digest', item.details)
}
......@@ -76,7 +78,7 @@ const InquiryModalTable:React.FC<InquiryModalTableProps> = (props) => {
visible={visible}
confirm={handleConfirm}
cancel={() => setVisible(false)}
fetchTableData={async (params) => (await PublicApi.getTransactionNotarizeEnquiryProductQuotationList({...params, externalState: 4, shopId: schemaAction.getFieldValue('shopId')})).data}
fetchTableData={async (params) => (await PublicApi.getTransactionNotarizeEnquiryProductQuotationList({...params, externalState: 4})).data}
rowSelection={rowSelection}
modalType='inquiryByDefault'
searchName="quotationNo"
......
......@@ -65,7 +65,7 @@ export const useProductTableChangeForPay = (ctx: ISchemaFormActions | ISchemaFor
const productItem = value[0]
if(pageStatus === PageStatus.ADD) { // 新增下 需要支付信息生成支付次数
ctx.setFieldValue('payments', []) // 变动后先 清空支付信息
const shopId = ctx.getFieldValue('shopId')
const shopId = productItem['shopId']
const products = value.map(item => ({ productId: item.commodityId, skuId: item.productId }))
if(shopId && products?.length) {
// 判断不存在物流 隐藏交付地址
......
......@@ -350,9 +350,9 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
// 唤起报价单弹窗
const handleOrderNo = async () => {
if(!addSchemaAction.getFieldValue('shopId')) {
return message.error('请先选择适应商城')
}
// if(!addSchemaAction.getFieldValue('shopId')) {
// return message.error('请先选择适应商城')
// }
inquiryRef.current.setVisible(true)
}
......@@ -436,7 +436,7 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
effects={($, ctx) => {
useAsyncSelect('orderMode', fetchOrderMode, ['text', 'id'])
$('onFormMount').subscribe(async () => {
const data = await fectchShopListsSource({ type: 1, environment: 1})
const data = await fectchShopListsSource()
if(data && data.length) {
ctx.setFieldState('shopId', state => {
state.props.enum = data.map(item => ({
......@@ -503,13 +503,13 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
}
})
// 新增下并且不是采购跳转 切换商城 清空受影响的字段
$('onFieldValueChange', 'shopId').subscribe(state => {
pageStatus === PageStatus.ADD && !quotationId && ctx.reset({
validate: false,
selector: '*(quoteNo,quoteId,vendorMemberName,vendorMemberId,vendorRoleId,products,payments)'
})
})
// // 新增下并且不是采购跳转 切换商城 清空受影响的字段
// $('onFieldValueChange', 'shopId').subscribe(state => {
// pageStatus === PageStatus.ADD && !quotationId && ctx.reset({
// validate: false,
// selector: '*(quoteNo,quoteId,vendorMemberName,vendorMemberId,vendorRoleId,products,payments)'
// })
// })
}}
expressionScope={{
......
......@@ -65,28 +65,6 @@ const basicInfo: ISchema = {
},
],
},
shopId: {
type: 'number',
// enum: getShopTypeMap,
enum: [],
title: '适应商城',
required: true,
// visible: false,
},
digest: {
type: 'string',
title: '订单摘要',
"x-rules": [
{
required: true,
message: '请输入订单摘要'
},
{
limitByte: true,
maxByte: 60
}
]
},
quoteNo: {
type: 'string',
title: '对应报价单号',
......@@ -113,6 +91,31 @@ const basicInfo: ISchema = {
title: '报价单号ID',
visible: false,
},
digest: {
type: 'string',
title: '订单摘要',
"x-rules": [
{
required: true,
message: '请输入订单摘要'
},
{
limitByte: true,
maxByte: 60
}
]
},
shopId: {
type: 'number',
// enum: getShopTypeMap,
enum: [],
title: '适应商城',
required: true,
"x-component-props": {
disabled: true,
},
// visible: false,
},
vendorMemberName: {
type: 'string',
title: '供应会员',
......
......@@ -4,7 +4,6 @@ import { useLinkageUtils } from '@/utils/formEffectUtils';
import { fetchOrderApi } from '../apis';
import { PublicApi } from '@/services/api';
// 异步填充表格字段
const asyncPadDataForProduct = async (ctx: ISchemaFormActions | ISchemaFormAsyncActions, productValue: any) => {
const productData = productValue.value
......@@ -106,6 +105,13 @@ export const useProductTableChangeForPay = (ctx: ISchemaFormActions | ISchemaFor
})
}
// 异步处理发货 时间配置
export const useOrderDeliverTimeEffect = (ctx: ISchemaFormActions | ISchemaFormAsyncActions, shopId) => {
PublicApi.getOrderParamFindDeliveryDate({shopId}).then(res => {
console.log(res.data, '商城变动驱动送货时间段')
})
}
// 表单初始化时,对应操作
export const useOrderFormInitEffect = (ctx: ISchemaFormActions | ISchemaFormAsyncActions) => {
FormEffectHooks.onFormMount$().subscribe(async () => {
......
......@@ -8,7 +8,7 @@ import { createFormActions, registerVirtualBox, useFormSpy } from '@formily/antd
import { SaveOutlined, PlusOutlined } from '@ant-design/icons'
import NiceForm from '@/components/NiceForm'
import { mergeAllSchemas } from './schema'
import { useEditHideField, useOrderFormInitEffect, useProductTableChangeForPay } from './effects'
import { useEditHideField, useOrderDeliverTimeEffect, useOrderFormInitEffect, useProductTableChangeForPay } from './effects'
import { orderCombination, procurementProcessField, procurementRenderField, procurmentRenderInit } from './constant'
import ProductModalTable from './components/productModalTable'
import CirculationRecord from '../components/circulationRecord'
......@@ -432,6 +432,8 @@ const AgentOrderDetail:React.FC<AgentOrderDetailProps> = (props) => {
// 新增下并且不是采购跳转 切换商城 清空受影响的字段
$('onFieldValueChange', 'shopId').subscribe(async state => {
console.log(state, 'shop')
// 初始化 配送时间段处理
useOrderDeliverTimeEffect(ctx, state.value)
const data = await fetchOrderApi.getOrderModeOrderType({shopType: state.values[1]['type']})
ctx.setFieldValue('orderMode', data.orderMode)
ctx.setFieldValue('orderModeName', data.orderModeName)
......
......@@ -230,6 +230,19 @@ const submitInfo: ISchema = {
style: { width: 400 }
}
},
timeLine: {
// title: '配送时间段',
type: 'radio',
enum: [
{ label: '审核通过', value: 1 },
{ label: '审核不通过', value: 0 },
],
"x-component-props": {
disabled: false,
optionType: 'button',
// className: styles.adjustFormItem
},
},
}
},
deliveryAddresId: {
......
......@@ -9,6 +9,7 @@ import { ISchemaFormActions, ISchemaFormAsyncActions } from '@formily/antd'
import { useModalTable } from '../../purchaseOrder/orderCollectB2b/model/useModalTable'
import { Button } from 'antd'
import { PublicApi } from '@/services/api'
import { ORDER_TYPE_CHANNEL_POINTS, ORDER_TYPE_POINTS } from '@/constants/order'
/** 订单审核各个页面 只有订单类型查询的Schema */
export const tableListSchema: any = (align?: String, colStyle?: Object) => {
......@@ -123,6 +124,7 @@ export const baseOrderListColumns: any = () => {
align: 'center',
dataIndex: 'amount',
key: 'amount',
render: (t, r) => (r.orderType === ORDER_TYPE_POINTS || r.orderType === ORDER_TYPE_CHANNEL_POINTS) ? t : `¥${t}`
},
{
title: '订单类型',
......
......@@ -33,19 +33,19 @@ const formActions = createFormActions();
const destroyActions = createFormActions();
const pauseActions = createFormActions();
const transformActions = createFormActions();
const adjustActions = createFormActions();
const SaleOrder: React.FC<SaleOrderProps> = () => {
const ref = useRef<any>({})
const destoryRef = useRef<any>({})
const pauseRef = useRef<any>({})
const orderIds = useRef<number[]>([])
const adjustRef = useRef<any>({})
const { run, loading } = useHttpRequest(PublicApi.postOrderVendorCancel)
const { run: runPause, loading: loadingEnd } = useHttpRequest(PublicApi.postOrderVendorTerminate)
const { transformRef, orderColumns } = useTransformOrderTable(transformActions)
const { roles } = getAuth() || {}
const serversRoles = roles.filter(item => item['roleType'] === MEMBER_ROLE_TYPE_SERVICE_CONSUMER)
const { token, memberId, memberRoleId } = (getAuth() || {})
// 提交取消
const handleSubmit = () => {
......@@ -173,24 +173,15 @@ const SaleOrder: React.FC<SaleOrderProps> = () => {
})
}
const handleSubmitAdjust = () => {
}
const resetAdjustSelect = () => {
}
/** 参照后台数据生成 */
const renderOptionButton = (record) => {
const buttonGroup = { '取消订单': record.showCancel, '中止': record.showTerminate, '评价': record.showComment, '转单': record.showTransfer, '调整送货时间': true }
const buttonGroup = { '取消订单': record.showCancel, '中止': record.showTerminate, '评价': record.showComment, '转单': record.showTransfer }
const operationHandler = {
'取消订单': () => handleCancel(record),
'中止': () => handleSuspend(record),
'评价': () => handleEvaluate(record.orderId),
'转单': () => onlyTransform(record.orderId),
'调整送货时间': () => adjustRef.current.setVisible(true)
}
return (
......@@ -216,11 +207,25 @@ const SaleOrder: React.FC<SaleOrderProps> = () => {
}
}
const handleExport = async () => {
console.log(`${process.env.BACK_GATEWAY}/order/vendor/export?token=${token}`)
window.open(`${process.env.BACK_GATEWAY}/order/vendor/export?token=${token}`, '_blank')
// const downloadLink = document.createElement('a')
// downloadLink.style.display = 'none';
// downloadLink.href = `${process.env.BACK_GATEWAY}order/vendor/export?token=${token}`;
// downloadLink.target = '_blank'
// document.body.appendChild(downloadLink)
// downloadLink.click()
// document.body.removeChild(downloadLink)
}
const controllerBtns = <Space>
<Button style={{width: 140}} onClick={() => {}} type='default'>导出</Button>
<Button style={{width: 140}} onClick={handleExport} type='default'>导出</Button>
<Button type="primary" onClick={() => batchTransform()}>转单</Button>
</Space>
registerVirtualBox("CustomTitle", ({ props }) => {
return <p>当前勾运了<b> { props['x-component-props'].number } </b>张订单进行转单,转单后生成的采购订单可通过会员角色<b> {props['x-component-props'].roleName || serversRoles[0]['memberRoleName']} </b>进行查看</p>
})
......@@ -422,78 +427,6 @@ const SaleOrder: React.FC<SaleOrderProps> = () => {
orderColumns,
}}
/>
{/* 调整送货时间 */}
<ModalForm
modalTitle='调整送货时间'
currentRef={adjustRef}
confirm={handleSubmitAdjust}
cancel={resetAdjustSelect}
actions={adjustActions}
// className={styles.adjustModal}
schema={{
type: 'object',
properties: {
NO_SUBMIT: {
type: 'object',
"x-component": 'mega-layout',
"x-component-props": {
labelAlign: 'top',
},
properties: {
deliverDate: {
type: 'string',
"x-component": 'date',
title: '送货时间',
required: true,
"x-component-props": {
disabledDate: current => {
return current && current < moment().startOf('day')
},
style: { width: '100%' }
}
},
timeLine: {
title: '时间段',
type: 'radio',
enum: [
{ label: '审核通过', value: 1 },
{ label: '审核不通过', value: 0 },
],
default: 1,
"x-component-props": {
disabled: false,
optionType: 'button',
// className: styles.adjustFormItem
},
},
adjustReason: {
type: 'textarea',
"x-component-props": {
rows: 4,
placeholder: '在此输入你的原因, 最多50个汉字'
},
title: '调整原因',
"x-rules": [
{
required: true,
message: '请输入调整原因'
},
{
limitByte: true,
maxByte: 100
}
]
}
}
}
}
}}
effects={($, actions) => {
$('onFormInit').subscribe(() => {
})
}}
/>
</PageHeaderWrapper>
}
......
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