192.Vue.js智能扫码点餐系统(二十六)【后台Koa中集成打印小票接口、Vue中下单在小票中打印对应的菜品/桌号/备注】2019.03.26

0、知识点

  • koa后台集成打印接口
  • 打印菜品、桌号、备注

1、后台Koa接口代码

/**
 * Created by Administrator on 2018/3/21 0021.
 */
const md5=require('md5');

const multer = require('koa-multer');

const  fs=require('fs');

var sd = require('silly-datetime');

var request = require('request');

var tools={
    getTime(){

        return new Date();
    },
    getOrderId(){
        var order_id = sd.format(new Date(), 'YYYYMMDDHHmmss');
        var numArr=[0,1,2,3,4,5,6,7,8,9];
        var randomStr='';
        for(var i=0;i<6;i++){
            randomStr+=numArr[Math.floor(Math.random()*10)];
        }
        return order_id+randomStr;  /*字符串的拼接*/
    },
    getFormatTime(){
       return sd.format(new Date(), 'YYYY-MM-DD HH:mm:ss');
    },
    md5(str){
        return md5(str);
    },cateToList(data){

        var firstArr=[];  /*获取一级分类*/
        for(var i=0;i<data.length;i++){
            if(data[i].pid=='0'){
                firstArr.push(data[i])
            }
        }
        //console.log(firstArr);
        for(var i=0;i<firstArr.length;i++){
            firstArr[i].list=[];
            for(var j=0;j<data.length;j++){
                //console.log(data[j]);
                if(firstArr[i]._id==data[j].pid){
                    firstArr[i].list.push(data[j])
                }
            }
        }
        //console.log(firstArr)
        return firstArr;

    },
    upload(){
        //https://github.com/expressjs/multer/blob/master/doc/README-zh-cn.md
	    //配置
        var storage = multer.diskStorage({
            //文件保存路径
            destination: function (req, file, cb) {

                var d=sd.format(new Date(), 'YYYYMMDD');
                var dir='public/upload/'+d;

                fs.exists(dir, async (exists)=> {
                    if(!exists){
                        await fs.mkdir(dir);
                    }
                    cb(null,dir);
                });

            },
            //修改文件名称
            filename: function (req, file, cb) {
                var fileFormat = (file.originalname).split(".");
                cb(null,Date.now() + "." + fileFormat[fileFormat.length - 1]);
            }
        })


//加载配置
        var upload = multer({ storage: storage });

        return  multer({ storage: storage });
    }
    //请求数据的模块
    ,requestData(urlStr){
        return new Promise((resolve,reject)=>{

            request(urlStr, function (error, response, body) {
                if (!error && response.statusCode == 200) {
                    var jsBody = JSON.parse(body);
                    jsBody.status = 100;
                    jsBody.msg = '操作成功';
                    resolve(JSON.stringify(jsBody));
                }else{

                    reject(error)
                }
            })
        })

    },sign(json){
        var arr=[];
        for(var i in json){
            arr.push(i);
        }
        //如果这个参数被省略,那么元素将按照 ASCII 字符顺序进行升序排列(也就是所谓的自然顺序)
        arr=arr.sort();
        var str='';
        for(let i=0;i<arr.length;i++){
            str+=arr[i]+json[arr[i]]
        }
        return md5(str);
    },
    getOrderPrintInfo(total_price,p_mark,uid,result){
        var orderInfo;
        orderInfo = "<CB>桌号为"+uid+"的菜单</CB><BR>";//标题字体如需居中放大,就需要用标签套上
        orderInfo += "名称          <RIGHT>价格 数量</RIGHT><BR>";
        orderInfo += "--------------------------------<BR>";
        for (var i = 0; i < result.length; i++) {
            orderInfo += result[i].title + "        <RIGHT>" + result[i].price + "     " + result[i].num  + "</RIGHT><BR>";
        }
        orderInfo += "合计:" + total_price + "元<BR>";
        orderInfo += "购买时间:" + this.getFormatTime() + "<BR><BR>";

        orderInfo += "备注:<B>" +p_mark+ "</B><BR><BR>";
    

        return orderInfo;

    }



}

module.exports=tools;


猜你喜欢

转载自blog.csdn.net/youyouwuxin1234/article/details/88833112
今日推荐