shopping-checkout
Advanced tools
Comparing version 0.1.1 to 0.1.2
@@ -18,5 +18,4 @@ #! /usr/bin/env node | ||
log( '小票工具 v' + pkg.version ); | ||
log( '问题或建议请联系 ' + pkg.author.email ); | ||
log( '\n开始运行小票工具 :)' ); | ||
log( '小票工具 v%s' , pkg.version ); | ||
log( '问题或建议请联系 %s' , pkg.author.email ); | ||
@@ -54,3 +53,3 @@ // 记录运行数据 | ||
log( '\n正在 ' + workDir + ' 里寻找是否有匹配的模板……' ); | ||
log( '\n正在 %s 里寻找是否有匹配的模板……' , workDir ); | ||
@@ -61,4 +60,3 @@ files.forEach( ( maybeTemplateName )=> { | ||
if ( err ) { | ||
log( '查询文件状态时出错:' ); | ||
log( err ); | ||
log( '查询文件状态时出错:' , err ); | ||
} else if ( stat.isDirectory() ) { | ||
@@ -72,3 +70,3 @@ handle( maybeTemplateName ); | ||
function handle( templateName ) { | ||
log( '找到模板:' + templateName ); | ||
log( '找到模板:' , templateName ); | ||
templateCount += 1; | ||
@@ -82,4 +80,3 @@ | ||
if ( err ) { | ||
log( '复制文件至目标文件夹时出错:' ); | ||
log( err ); | ||
log( '复制文件至目标文件夹时出错:' , err ); | ||
} | ||
@@ -99,6 +96,6 @@ } | ||
if ( err ) { | ||
log( '写入文件时出错:' + err ); | ||
log( '写入文件时出错:' , err ); | ||
} else { | ||
htmlCount += 1; | ||
log( '生成文件:' + destPath ); | ||
log( '生成文件:' , destPath ); | ||
} | ||
@@ -113,7 +110,7 @@ } ); | ||
process.on( 'exit' , function () { | ||
log( '\n运行完毕,此次运行发现了 ' + templateCount + ' 个模板文件夹,共生成 ' + htmlCount + ' 个 html 文件。' ); | ||
log( '\n运行完毕,此次运行发现了 %s 个模板文件夹,共生成 %s 个 html 文件。' , templateCount , htmlCount ); | ||
} ); | ||
function log( msg ) { | ||
console.log( msg ); | ||
function log() { | ||
console.log.apply( console , arguments ); | ||
} |
'use strict'; | ||
const toJson = require( 'xlsx' ).utils.sheet_to_json; | ||
const sheetToJson = require( 'xlsx' ).utils.sheet_to_json; | ||
/** | ||
* 保存属于商品的字段 | ||
* @type {string[]} | ||
*/ | ||
const itemKey = [ '图片文件名' , '品名' , '单价' , '数量' , '品牌' , '颜色' , '型号' , 'SKU' ]; | ||
/** | ||
* 支持的信用卡类型 | ||
*/ | ||
const supportCardType = { | ||
'万事达' : 'master' , | ||
'visa' : 'visa' | ||
}; | ||
/** | ||
* 逐行分析表格,每当解析完一条数据后则调用一次 onData | ||
@@ -10,3 +24,3 @@ * @param sheet | ||
module.exports = function ( sheet , onData ) { | ||
const array = toJson( sheet ); | ||
const array = sheetToJson( sheet ); | ||
@@ -16,8 +30,6 @@ // 同一个分单号下可能会有多个物品,所以要更改一下数据结构 | ||
array.forEach( ( rowData )=> { | ||
const itemData = { | ||
'图片文件名' : rowData[ '图片文件名' ] , | ||
'品名' : rowData[ '品名' ] , | ||
'单价' : rowData[ '单价' ] , | ||
'数量' : rowData[ '数量' ] | ||
}; | ||
const itemData = {}; | ||
itemKey.forEach( ( key )=> { | ||
itemData[ key ] = rowData[ key ]; | ||
} ); | ||
@@ -29,10 +41,9 @@ // 如果这行数据有分单号 | ||
rowData.items = [ itemData ]; | ||
delete rowData[ '图片文件名' ]; | ||
delete rowData[ '品名' ]; | ||
delete rowData[ '单价' ]; | ||
delete rowData[ '数量' ]; | ||
itemKey.forEach( ( key )=> { | ||
delete rowData[ key ]; | ||
} ); | ||
// 遇到一个新的分单号,则说明上一条分单号解析完成了,调用一次事件 | ||
if ( prevRowData ) { | ||
onData( prevRowData ); | ||
parseData( prevRowData ); | ||
} | ||
@@ -47,3 +58,29 @@ | ||
} ); | ||
onData( prevRowData ); // 最后一条分单数据 | ||
parseData( prevRowData ); // 最后一条分单数据 | ||
function parseData( rowData ) { | ||
// 信用卡类型 | ||
let cardTypeChinese = rowData[ '信用卡类型' ]; | ||
let cardType; | ||
if ( !cardTypeChinese ) { | ||
console.warn( '没有声明信用卡类型,默认使用 Master' ); | ||
cardTypeChinese = '万事达'; | ||
} | ||
cardTypeChinese = cardTypeChinese.toLowerCase(); | ||
cardType = supportCardType[ cardTypeChinese ]; | ||
if ( !cardType ) { | ||
console.error( '没有找到此信用卡类型:%s,默认使用万事达。' , cardTypeChinese ); | ||
cardType = 'master'; | ||
} | ||
rowData.cardType = cardType; | ||
// 计算总价 | ||
rowData[ '总价' ] = rowData.items.reduce( ( previousValue , currentItem )=> { | ||
return previousValue + Number( currentItem[ '单价' ] ) * Number( currentItem[ '数量' ] ); | ||
} , 0 ).toFixed( 2 ); | ||
onData( rowData ); | ||
} | ||
}; |
@@ -20,7 +20,2 @@ 'use strict'; | ||
parseSheet( sheet , ( rowData )=> { | ||
// 计算总价 | ||
rowData[ '总价' ] = rowData.items.reduce( ( previousValue , currentItem )=> { | ||
return previousValue + Number( currentItem[ '单价' ] ) * Number( currentItem[ '数量' ] ); | ||
} , 0 ).toFixed( 2 ); | ||
cons.dot( templatePath , rowData ) | ||
@@ -27,0 +22,0 @@ .then( ( html )=> { |
{ | ||
"name" : "shopping-checkout" , | ||
"version" : "0.1.1" , | ||
"version" : "0.1.2" , | ||
"description" : "根据数据生成购物网站的结算页面" , | ||
@@ -5,0 +5,0 @@ "preferGlobal" : true , |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
232355
15
769