From e76be05a7b2c16c8403ae01ffc8401edfa7807e8 Mon Sep 17 00:00:00 2001 From: wangsongsole Date: Wed, 31 May 2023 14:06:38 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=88=20per:=20=E6=95=B4=E5=90=88?= =?UTF-8?q?=E5=85=91=E6=8D=A2=E7=A0=81-=E7=BA=A2=E5=8C=85=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E3=80=82=E5=B9=B6=E4=BF=AE=E5=A4=8D=E7=BA=A2=E5=8C=85?= =?UTF-8?q?=E7=BB=84=E4=BB=B6bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/redPackets/index.jsx | 1 + .../exchangecode/exchangecodeAdd/index.jsx | 98 ++++--------------- .../exchangecode/exchangecodeAdd/utils.js | 60 ++++++++++++ src/pages/exchangecode/list/list.js | 5 + 4 files changed, 84 insertions(+), 80 deletions(-) diff --git a/src/components/redPackets/index.jsx b/src/components/redPackets/index.jsx index 283746cf..6d0e56c0 100644 --- a/src/components/redPackets/index.jsx +++ b/src/components/redPackets/index.jsx @@ -394,6 +394,7 @@ export default class addKnockGold extends Component { temp[index] = this.transformDataCode(); } sessionStorage.setItem('redPacketsData', JSON.stringify(temp)); + this.setState({ form_data: temp[index] }); return true; } else { /* 校验表单 */ diff --git a/src/pages/exchangecode/exchangecodeAdd/index.jsx b/src/pages/exchangecode/exchangecodeAdd/index.jsx index c450d779..76f9d8ae 100644 --- a/src/pages/exchangecode/exchangecodeAdd/index.jsx +++ b/src/pages/exchangecode/exchangecodeAdd/index.jsx @@ -44,8 +44,14 @@ import './index.less'; import moment from 'moment'; import Grid from '@/components/gird/main.js'; import { isSameDay } from 'date-fns'; -import { Column2, rulesInfo, codeInfo, init } from './utils.js'; - +import { + Column2, + rulesInfo, + codeInfo, + init, + redPacketsDataFn, + reductionFn +} from './utils.js'; import { divNum } from '@/tools/number'; const initArray = (targetNum) => { @@ -214,20 +220,9 @@ export default class exchangeAdd extends React.Component { rank: checkedArray, rankoptions: arr }); - - /* 分类缓存到本地 */ - sessionStorage.setItem( - 'productData', - JSON.stringify(this.storage(reqCopy.goods, 1)) - ); - sessionStorage.setItem( - 'knockGoldData', - JSON.stringify(this.storage(reqCopy.goods, 2)) - ); - sessionStorage.setItem( - 'redPacketsData', - JSON.stringify(this.storage(reqCopy.goods, 3)) - ); + this.storage(reqCopy.goods, 1, 'productData'); + this.storage(reqCopy.goods, 2, 'knockGoldData'); + this.storage(reqCopy.goods, 3, 'redPacketsData'); }, (err) => {} ); @@ -235,14 +230,14 @@ export default class exchangeAdd extends React.Component { .catch((err) => {}); } - /* 统一缓存数据处理 */ - storage(data = [], type) { - return data.filter((item) => { + /* 分类缓存到本地 */ + storage(data = [], type, key) { + const filterData = data.map((item) => { if (item.type === type) { - delete item.origin; - return item; + return item.origin; } }); + sessionStorage.setItem(key, JSON.stringify(filterData)); } /* 获取直连天下商品数据 */ @@ -886,87 +881,30 @@ export default class exchangeAdd extends React.Component { /* 处理立减金 */ data = JSON.parse(sessionStorage.getItem('knockGoldData')); concatData = this.state.tempdata.filter((item) => item.type !== 2); - temp = map(data, (item) => { let index = this.state.tempdata.findIndex((o) => { return o.channel_activity_id === item.channel_activity_id; }); - if (index > -1) { item.checked = this.state.tempdata[index].checked; } - /* 转换商品结构 */ - // temp - const newObj = {}; - newObj.product_name = item.batch_goods_name || item.product_name; //名字 - newObj.channel_activity_id = item.channel_activity_id; //批次号 - newObj.only = item.channel_activity_id; //批次号 - newObj.type = 2; //类型 - newObj.checked = item?.checked; - newObj.upstream = String(item.channel) === '1' ? '支付宝' : '微信'; //上游 - newObj.edit = 'edit'; - newObj.all_budget = item.all_budget; - newObj.effectDate = - item.effectDate || - item.time_limit?.effect_time.start_time + - ' 至 ' + - item.time_limit?.effect_time.end_time; //有效时间 - newObj.contract_price = item.contract_price || item.price; //单价 - newObj.official_price = item.official_price || item.reduce_amount; //官方价 - newObj.quantity = - item.quantity || - parseInt(divNum(item.all_budget, item.reduce_amount)); //总库 - newObj.stock = - item.stock || - parseInt(divNum(item.all_budget, item.reduce_amount)); //剩余 - newObj.usage = item.usage || 0; //已使用 - newObj.origin = item; - newObj.id = item.goods_id || item.id; - newObj.product_id = item.goods_id || item.id; - return newObj; + return reductionFn(item); }); } else { /* 处理红包 */ data = JSON.parse(sessionStorage.getItem('redPacketsData')); concatData = this.state.tempdata.filter((item) => item.type !== 3); - temp = map(data, (item) => { let index = this.state.tempdata.findIndex((o) => { return o.cash_activity_id === item.cash_activity_id; }); - if (index > -1) { item.checked = this.state.tempdata[index].checked; } /* 当复制商品被编辑后就删除标识 */ delete item.copy; - /* 转换商品结构 */ - const newObj = {}; - const price = - item.cash_amount_type === '1' - ? item.denomination - : `${item.min_denomination}~${item.max_denomination}`; - newObj.product_name = item.batch_goods_name; //名字 - newObj.channel_activity_id = item.cash_activity_id; //批次号 - newObj.cash_activity_id = item.cash_activity_id; //批次号 - newObj.only = item.cash_activity_id; //批次号 - newObj.type = 3; //类型 - newObj.checked = item?.checked; - newObj.upstream = String(item.channel) === 1 ? '支付宝' : '微信'; //上游 - newObj.edit = 'edit'; - newObj.all_budget = item.all_budget; - newObj.effectDate = item.begin_time + ' 至 ' + item.end_time; //有效时间 - newObj.contract_price = price; //单价 - newObj.cost_price = '-'; //单价 - newObj.official_price = price; //官方价 - newObj.quantity = item.num; //总库 - newObj.stock = item.stock || item.num; //剩余 - newObj.usage = item.usage || 0; //已使用 - newObj.id = item.goods_id || item.id; - newObj.product_id = item.goods_id || item.id; - newObj.origin = item; - return newObj; + return redPacketsDataFn(item); }); } let newArray = deWeightThree(temp.concat(concatData), 'only'); diff --git a/src/pages/exchangecode/exchangecodeAdd/utils.js b/src/pages/exchangecode/exchangecodeAdd/utils.js index 09b87031..ca8745aa 100644 --- a/src/pages/exchangecode/exchangecodeAdd/utils.js +++ b/src/pages/exchangecode/exchangecodeAdd/utils.js @@ -1,3 +1,4 @@ +import { divNum } from '@/tools/number'; //基本信息 export const codeInfo = { code_name: [{ type: 'required', message: '请输入兑换码名称' }], @@ -184,3 +185,62 @@ export const init = () => { codeStatus: '' /* 兑换码状态 */ }; }; + +/* 转换红包数据 */ +export function redPacketsDataFn(params) { + const newObj = {}; + const price = + params.cash_amount_type === '1' + ? params.denomination + : `${params.min_denomination}~${params.max_denomination}`; + newObj.product_name = params.batch_goods_name; //名字 + newObj.channel_activity_id = params.cash_activity_id; //批次号 + newObj.cash_activity_id = params.cash_activity_id; //批次号 + newObj.only = params.cash_activity_id; //批次号 + newObj.type = 3; //类型 + newObj.checked = params?.checked; + newObj.upstream = String(params.channel) === 1 ? '支付宝' : '微信'; //上游 + newObj.edit = 'edit'; + newObj.all_budget = params.all_budget; + newObj.effectDate = params.begin_time + ' 至 ' + params.end_time; //有效时间 + newObj.contract_price = price; //单价 + newObj.cost_price = '-'; //单价 + newObj.official_price = price; //官方价 + newObj.quantity = params.num; //总库 + newObj.stock = params.stock || params.num; //剩余 + newObj.usage = params.usage || 0; //已使用 + newObj.id = params.goods_id || params.id; + newObj.product_id = params.goods_id || params.id; + newObj.origin = params; + return newObj; +} + +/* 转换立减金数据 */ +export function reductionFn(params) { + const newObj = {}; + newObj.product_name = params.batch_goods_name || params.product_name; //名字 + newObj.channel_activity_id = params.channel_activity_id; //批次号 + newObj.only = params.channel_activity_id; //批次号 + newObj.type = 2; //类型 + newObj.checked = params?.checked; + newObj.upstream = String(params.channel) === '1' ? '支付宝' : '微信'; //上游 + newObj.edit = 'edit'; + newObj.all_budget = params.all_budget; + newObj.effectDate = + params.effectDate || + params.time_limit?.effect_time.start_time + + ' 至 ' + + params.time_limit?.effect_time.end_time; //有效时间 + newObj.contract_price = params.contract_price || params.price; //单价 + newObj.official_price = params.official_price || params.reduce_amount; //官方价 + newObj.quantity = + params.quantity || + parseInt(divNum(params.all_budget, params.reduce_amount)); //总库 + newObj.stock = + params.stock || parseInt(divNum(params.all_budget, params.reduce_amount)); //剩余 + newObj.usage = params.usage || 0; //已使用 + newObj.origin = params; + newObj.id = params.goods_id || params.id; + newObj.product_id = params.goods_id || params.id; + return newObj; +} diff --git a/src/pages/exchangecode/list/list.js b/src/pages/exchangecode/list/list.js index e60a6197..7989af58 100644 --- a/src/pages/exchangecode/list/list.js +++ b/src/pages/exchangecode/list/list.js @@ -45,6 +45,7 @@ export default class acclist extends React.Component { /* 新建/复制/编辑/兑换码 */ addCodeFunction(type, param) { sessionStorage.setItem('knockGold_effectDate', JSON.stringify({})); + sessionStorage.setItem('redPackets_effectDate', JSON.stringify({})); let activerou = [ { pagetitle: '新建兑换码', @@ -80,6 +81,10 @@ export default class acclist extends React.Component { 'knockGold_effectDate', JSON.stringify(param.keyBatch.plan) ); + sessionStorage.setItem( + 'redPackets_effectDate', + JSON.stringify(param.keyBatch.plan) + ); } sessionStorage.setItem('code_id', param?.id);