Commit fd8930eb authored by 前端-钟卫鹏's avatar 前端-钟卫鹏
parents 0a43d65c 202ca060
......@@ -14,7 +14,7 @@
"api": "god-ytt",
"testApi": "cross-env PRO_ENV=v2 god-ytt",
"scripts:build": "node scripts/run",
"scripts:build-yxc": "node scripts/run http://yxc-web-demo.shushangyun.com/api",
"scripts:build-test": "cross-env PRO_ENV=v2 node scripts/run",
"start:dev": "cross-env NODE_OPTIONS=--max_old_space_size=4096 umi dev",
"start:analyze": "ANALYZE=1 umi dev",
"clean": "rimraf node_modules",
......
const Axios = require('axios').default;
const deepClone = require('clone')
const { prefixServiceConfig, serviceConfig} = require('./server')
const BACK_GATEWAY = process.env.BACK_GATEWAY
const demoFetch = require('../../demo').fetchConfig
const isDemo = true
const remoteUrl = BACK_GATEWAY || process.argv[2] || 'http://10.0.0.25:8100'
console.log(`\n当前访问的后端url是${remoteUrl}!!!!!!`)
const axios = Axios.create({
baseURL: remoteUrl,
responseType: 'json',
headers: {
"source": "1"
}
})
async function prefixHttp() {
try {
const { data } = await axios(prefixServiceConfig.global)
if (data.code === 1000) {
return data.data
} else {
return {}
}
} catch (error) {
console.log(error)
}
}
// 批量组装接口
async function batchAxiosHttps(requestConfig) {
const asyncHttpQueue = deepClone(serviceConfig)
const httpErrorQueue = []
const serverErrorQueue = []
console.log('\n')
for (const item in serviceConfig) {
if (JSON.stringify(item) !== '{}') {
for (const subItem in serviceConfig[item]) {
try {
axios.interceptors.request.use(config => {
config.headers = Object.assign({}, config.headers, requestConfig.headers)
return config
})
const data = await axios(serviceConfig[item][subItem])
// 当接口出错时 不写入json文件
if (data.data.code === 1000) {
asyncHttpQueue[item][subItem] = data.data.data
} else {
serverErrorQueue.push({ ...asyncHttpQueue[item][subItem], ...data.data })
// 默认置为null
asyncHttpQueue[item][subItem] = null
}
} catch (err) {
console.log(err)
httpErrorQueue.push({ ...serviceConfig[item][subItem], ...err.response.data })
}
}
}
}
if (httpErrorQueue.length > 0) {
console.log('\n网络错误\n')
// 可在此做日志收集
console.log(httpErrorQueue)
}
if (serverErrorQueue.length > 0) {
console.log('\n接口服务错误\n')
// 可在此做日志收集
console.log(serverErrorQueue)
}
if (httpErrorQueue.length > 0 || serverErrorQueue.length > 0) {
// 退出构建
console.log('\n脚本构建失败!!!!!!')
// 终止当前进程
process.exit(1)
}
return isDemo ? Object.assign(asyncHttpQueue, await demoFetch()) : asyncHttpQueue
}
module.exports = {
prefixHttp,
batchAxiosHttps,
}
......@@ -13,25 +13,11 @@
*/
const Axios = require('axios').default;
const deepClone = require('clone')
const demoFetch = require('../../demo').fetchConfig
const isDemo = true
const { prefixHttp, batchAxiosHttps } = require('./batchAxiosHttps')
const SITE_ID = Number(process.env.SITE_ID)
const BACK_GATEWAY = process.env.BACK_GATEWAY
const remoteUrl = BACK_GATEWAY || process.argv[2] || 'http://10.0.0.25:8100'
console.log(`\n当前访问的后端url是${remoteUrl}!!!!!!`)
const axios = Axios.create({
baseURL: remoteUrl,
responseType: 'json',
headers: {
"source": "1"
}
})
if (!SITE_ID) {
console.log('\n构建失败!!!!!!')
......@@ -39,109 +25,16 @@ if (!SITE_ID) {
process.exit(1)
}
const serviceConfig = {
// 用于注册页
userRegister: {
useType: {
url: '/member/menu/register/type',
method: 'get'
async function pullConfigHttp() {
const data = await prefixHttp()
const { language = 'zh' } = data
console.log(`当前站点语言为${language}`)
const result = await batchAxiosHttps({
headers: {
'Accept-Language': language
}
},
web: {
shopInfo: {
url: '/manage/shop/findShopsBySiteId',
params: {
siteId: SITE_ID,
},
method: 'get'
},
orderMode: {
url: '/system/rule/getOrderMode',
method: 'get'
},
orderType: {
url: '/system/rule/getOrderType',
method: 'get'
},
},
global: {
siteInfo: {
url: '/manage/paas/site/details',
params: {
id: SITE_ID
},
method: 'get'
},
imConfig: {
url: '/manage/online/service/find/config',
method: 'get'
},
},
}
// 批量组装接口
async function batchAxiosHttps() {
const asyncHttpQueue = deepClone(serviceConfig)
// 请求队列的回调数据
// const requestQueueResult = {}
// const serverFn = async (obj) => {
// for (const item in obj) {
// // 当前属性是一个请求方法
// if (obj[item].url && obj[item].method) {
// const requestConfig = deepClone(obj[item])
// const { data } = await axios(requestConfig)
// requestQueueResult[requestConfig.url] = data.data
// obj[item] = data.data
// } else {
// serverFn(obj[item])
// }
// }
// }
// serverFn(asyncHttpQueue)
const httpErrorQueue = []
const serverErrorQueue = []
console.log('\n')
for (const item in serviceConfig) {
if (JSON.stringify(item) !== '{}') {
for (const subItem in serviceConfig[item]) {
try {
const data = await axios(serviceConfig[item][subItem])
// 当接口出错时 不写入json文件
if (data.data.code === 1000) {
asyncHttpQueue[item][subItem] = data.data.data
} else {
serverErrorQueue.push({ ...asyncHttpQueue[item][subItem], ...data.data })
// 默认置为null
asyncHttpQueue[item][subItem] = null
}
} catch (err) {
console.log(err)
httpErrorQueue.push({ ...serviceConfig[item][subItem], ...err.response.data })
}
}
}
}
if (httpErrorQueue.length > 0) {
console.log('\n网络错误\n')
// 可在此做日志收集
console.log(httpErrorQueue)
}
if (serverErrorQueue.length > 0) {
console.log('\n接口服务错误\n')
// 可在此做日志收集
console.log(serverErrorQueue)
}
if (httpErrorQueue.length > 0 || serverErrorQueue.length > 0) {
// 退出构建
console.log('\n脚本构建失败!!!!!!')
// 终止当前进程
process.exit(1)
}
return isDemo ? Object.assign(asyncHttpQueue, await demoFetch()) : asyncHttpQueue
})
return result
}
exports.fetchConfig = batchAxiosHttps
exports.fetchConfig = pullConfigHttp
const SITE_ID = Number(process.env.SITE_ID)
/**
* 前置接口 用于后续配置接口的信息获取
*/
const prefixServiceConfig = {
global: {
url: '/manage/paas/site/details',
params: {
id: SITE_ID
},
method: 'get'
}
}
const serviceConfig = {
// 用于注册页
userRegister: {
useType: {
url: '/member/menu/register/type',
method: 'get'
}
},
web: {
shopInfo: {
url: '/manage/shop/findShopsBySiteId',
params: {
siteId: SITE_ID,
},
method: 'get'
},
orderMode: {
url: '/system/rule/getOrderMode',
method: 'get'
},
orderType: {
url: '/system/rule/getOrderType',
method: 'get'
},
},
global: {
siteInfo: {
url: '/manage/paas/site/details',
params: {
id: SITE_ID
},
method: 'get'
},
imConfig: {
url: '/manage/online/service/find/config',
method: 'get'
},
},
}
module.exports = {
serviceConfig,
prefixServiceConfig
}
......@@ -563,27 +563,29 @@ const AddressSelect: React.FC<AddressSelectProps> = (props) => {
});
const res = addressType === 2 ? await getLogisticsShipperAddressGet({ id: `${id}` }) : await getLogisticsReceiverAddressGet({ id: `${id}` });
if (res.code === 1000) {
formActions.setFieldValue('name', addressType === 2 ? (res.data as GetLogisticsShipperAddressGetResponse).shipperName : (res.data as GetLogisticsReceiverAddressGetResponse).receiverName);
formActions.setFieldValue('provinceCode', res.data.provinceCode);
formActions.setFieldValue('cityCode', res.data.cityCode);
formActions.setFieldValue('districtCode', res.data.districtCode);
formActions.setFieldValue('streetCode', res.data.streetCode);
formActions.setFieldValue('detailed', res.data.address);
formActions.setFieldValue('postalCode', res.data.postalCode);
formActions.setFieldValue('areaCode', res.data.areaCode);
formActions.setFieldValue('phone', res.data.phone);
formActions.setFieldValue('tel', res.data.tel);
formActions.setFieldValue('isDefault', res.data.isDefault);
formActions.setFieldState('ADDRESS_NEW', state => {
state.visible = true;
});
formActions.setFieldState('ADD_ACTION', state => {
state.props['x-component-props'] = {
flag: false,
};
});
editAddressId.current = id;
setTimeout(() => {
formActions.setFieldValue('name', addressType === 2 ? (res.data as GetLogisticsShipperAddressGetResponse).shipperName : (res.data as GetLogisticsReceiverAddressGetResponse).receiverName);
formActions.setFieldValue('provinceCode', res.data.provinceCode);
formActions.setFieldValue('cityCode', res.data.cityCode);
formActions.setFieldValue('districtCode', res.data.districtCode);
formActions.setFieldValue('streetCode', res.data.streetCode);
formActions.setFieldValue('detailed', res.data.address);
formActions.setFieldValue('postalCode', res.data.postalCode);
formActions.setFieldValue('areaCode', res.data.areaCode);
formActions.setFieldValue('phone', res.data.phone);
formActions.setFieldValue('tel', res.data.tel);
formActions.setFieldValue('isDefault', res.data.isDefault);
formActions.setFieldState('ADD_ACTION', state => {
state.props['x-component-props'] = {
flag: false,
};
});
editAddressId.current = id;
}, 20);
} else {
message.warn(intl.formatMessage({ id: 'components.huoqudizhixinxishibai' }, { default: '获取地址信息失败' }));
}
......
......@@ -609,6 +609,9 @@ export default {
'member.components.MemberProfile.flowRecords':'Flow Records',
'member.components.MemberQualitiesForm.title':'Qualification Certificate',
'member.components.MemberRights.title':'Member Rights',
'member.components.MemberRights.rightType.1': 'Discount',
'member.components.MemberRights.rightType.2': 'Cashback',
'member.components.MemberRights.rightType.3': 'Points',
'member.components.MemberRightsAnalysis.returnMoney':'Cashback',
'member.components.MemberRightsAnalysis.sumReturnMoney':'Cumulative cash back amount',
'member.components.MemberRightsAnalysis.sumReturnMoney.unit':'CNY',
......
......@@ -1137,6 +1137,7 @@ export default {
"60026": "Quote deadline must be less than delivery date",
"47016": "page type already exists",
"49114": "Sorting cannot be repeated",
"49117": 'Sorting under the same recommendation label cannot be repeated'
"49117": 'Sorting under the same recommendation label cannot be repeated',
"21055": "The payment request amount of the document in the current payment request is greater than the remaining payment amount of the document",
}
......@@ -601,6 +601,9 @@ export default {
'member.components.MemberProfile.flowRecords': '유전 기록',
'member.components.MemberQualitiesForm.title': '자질 증명서',
'member.components.MemberRights.title': '회원 권익',
'member.components.MemberRights.rightType.1': '할인',
'member.components.MemberRights.rightType.2': '반 현',
'member.components.MemberRights.rightType.3': '적분',
'member.components.MemberRightsAnalysis.returnMoney': '현금으로 바꾸다',
'member.components.MemberRightsAnalysis.sumReturnMoney': '누적 현금 반환 금액',
'member.components.MemberRightsAnalysis.sumReturnMoney.unit': 'CNY',
......
......@@ -1136,5 +1136,6 @@ export default {
"60026": "견적 마감일은 배송 날짜보다 이전이어야 합니다.",
"47016": "페이지 유형이 이미 존재합니다",
"49114": "정렬은 중복될 수 없습니다.",
"49117": '같은 추천 탭 아래 정렬 중복 불가'
"49117": '같은 추천 탭 아래 정렬 중복 불가',
"21055": "현재 청구서에 증빙서류가 존재하는 청구금액은 증빙서류의 남은 지불금액보다 크다",
}
......@@ -605,6 +605,9 @@ export default {
'member.components.MemberProfile.flowRecords': '流转记录',
'member.components.MemberQualitiesForm.title': '资质证明',
'member.components.MemberRights.title': '会员权益',
'member.components.MemberRights.rightType.1': '折扣',
'member.components.MemberRights.rightType.2': '返现',
'member.components.MemberRights.rightType.3': '积分',
'member.components.MemberRightsAnalysis.returnMoney': '返现',
'member.components.MemberRightsAnalysis.sumReturnMoney': '累计返现金额',
'member.components.MemberRightsAnalysis.sumReturnMoney.unit': 'CNY',
......
......@@ -1138,4 +1138,5 @@ export default {
"47016": "页面类型已存在",
"49114": "排序不能重复",
"49117": "同一推荐标签下排序不能重复",
"21055": "当前请款单中存在单据的请款金额大于单据剩余支付金额",
}
......@@ -73,7 +73,7 @@ const MemberDocQualification: React.FC<IProps> = (props: IProps) => {
<Descriptions.Item label={intl.formatMessage({ id: 'member.components.MemberDocQualification.expireDay' })}>
{item.expireDay || intl.formatMessage({ id: 'member.components.MemberDocQualification.expireDay.nothing' })}
</Descriptions.Item>
<Descriptions.Item label={intl.formatMessage({ id: 'member.components.MemberDocQualification.permanent' })} style={{ paddingBottom: 0 }}>{item.permanent === 1 ? '长期有效' : ''}</Descriptions.Item>
<Descriptions.Item label={intl.formatMessage({ id: 'member.components.MemberDocQualification.permanent' })} style={{ paddingBottom: 0 }}>{item.permanent === 1 ? intl.formatMessage({ id: 'member.components.QualitiesUploadFormItem.permanent.infinite' }, { default: '长期有效' }) : ''}</Descriptions.Item>
</Descriptions>
</div>
</div>
......
......@@ -17,9 +17,9 @@ import equity_4 from '@/assets/imgs/equity-4.png';
import equity_5 from '@/assets/imgs/equity-5.png';
const equityTxtMap = {
1: '折扣',
2: '返现',
3: '积分',
1: 'member.components.MemberRights.rightType.1', // 折扣
2: 'member.components.MemberRights.rightType.2', // 返现
3: 'member.components.MemberRights.rightType.3', // 积分
};
const clsMap = {
......@@ -86,7 +86,7 @@ const MemberRights: React.FC<IProps> = (props: IProps) => {
<span
className={classNames(styles['tofo-item-tag'], styles[clsMap[item.rightTypeEnum]])}
>
{item.parameter}% {equityTxtMap[item.rightTypeEnum] || ''}
{item.parameter}% {intl.formatMessage({ id: equityTxtMap[item.rightTypeEnum] }) || ''}
</span>
</div>
{index !== data.length - 1 ? (
......
......@@ -175,7 +175,7 @@ const createComponent = (
const sonConfig = createComponent(
{
componentName,
childrenData: current.childrenData,
childrenData: current.childrenData.filter(Boolean),
startKey: keyNum,
dataSource,
primaryKey,
......@@ -395,8 +395,6 @@ function useGetLayout() {
...thirdFloorData,
},
}
// console.log(sideControllerData, "sideControllerData")
}
/** 设置左边菜单栏属性 */
sideControllerData = {
......@@ -480,9 +478,10 @@ function useGetLayout() {
...config,
}
} else {
console.log(childrenData)
const { config, keys } = createComponent({
componentName: [`CommodityList`, 'CommodityList.Item'],
childrenData: childrenData,
childrenData: childrenData.filter(Boolean),
startKey: startKey,
dataSource: activityDataResponse,
primaryKey: "id",
......
......@@ -116,6 +116,9 @@ function useSaveData(options: Options) {
const { ...childRestProps } = childrenNodeTarget?.props;
const childrenData = childrenNodeTarget.childNodes?.map((_listItem) => {
const sonNodeTarget = pageConfig[_listItem];
if (!sonNodeTarget?.props.id) {
return null
}
if (dataIndex === 'suggestProduct') {
return {
id: sonNodeTarget?.props.id,
......@@ -127,7 +130,7 @@ function useSaveData(options: Options) {
return {
title: childRestProps.title,
theme: childRestProps.theme || 0,
childrenData: childrenData
childrenData: childrenData.filter(Boolean),
};
})
}
......
......@@ -92,7 +92,7 @@ const Item: React.FC<IChildprops> = (props: IChildprops) => {
progress={
<Progress
percent={50}
progressTips={intl.formatMessage({ id: 'activityPage.surplus', defaultMessage: '剩余0%' }, { data: 50})}
progressTips={intl.formatMessage({ id: 'activityPage.surplus.percent', defaultMessage: '剩余0%' }, { data: 50})}
extra={
<div style={{fontSize: '10px', color: '#919598', marginLeft: '12px', minWidth: '80px'}}>
{intl.formatMessage({id: 'activityPage.surplus', defaultMessage: "剩余"})}
......
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