Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

shopping-checkout

Package Overview
Dependencies
Maintainers
1
Versions
14
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

shopping-checkout - npm Package Compare versions

Comparing version 0.1.1 to 0.1.2

libs/templates/6pm/index.js

25

bin/cli.js

@@ -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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc