Слияние кода завершено, страница обновится автоматически
git clone https://gitee.com/in-wechat/BLETicketPrinter.git BLETicketPrinter
{
"pages":[
"BLETicketPrinter/pages/printer/printer"
]
}
import { Printer } from "../../BLETicketPrinter/printer";
Page({
data: {
order: {
//.....
}
},
onLoad: function (options) {
this.initData();
},
//Процесс можно выбрать из получения данных с сервера
initData(){
this.setData({
order: {
//Данные заказа
order_id: "202207120513",
state_string: "завершено",
make_time: "2022 год 7 месяц 12 день",
time: "2022-07-12 13:14:20",
//Сотрудник, оформивший заказ
employee_name: "Иу Юэр",
employee_phone: "186xxxx8888",
//Информация о клиенте
customer_name: "Чжан Сань",
customer_phone: "138xxxx8998",
//Название магазина
shop_name: "Центр печати на площади",
shop_address: "Район Цинсю, улица Миньцзу, район xxx, площадь Синьцзи",
shop_phone: "159xxxx0246",
//Список товаров заказа
sku_list: [
{name: "Ледяной сахар, жёлтая кожица, рассада", quantity: 50, price: 12, amount: 10},
{name: "Драгоценная наложница, жёлтая кожица, рассада", quantity: 20, price: 18, amount: 15},
{name: "Чёрный алмаз, жёлтая кожица, рассада", quantity: 30, price: 13, amount: 10},
{name: "Удобрение для посадки, также используется для подкормки", quantity: 20, price: 90, amount: 80}
],
//Общая сумма заказа
sku_amount: 3150,
amount: 2500,
sku_discount: 450,
discount: 200,
fee: 0,
//Общее количество товара
sku_quantity: 120
}
});
},
//Печать. Обратите внимание, что ширина билета при печати составляет 32 символа на моём устройстве. Для других устройств необходимо настроить ширину соответствующим образом.
print_ing: false,
print(){
if(this.print_ing) return;
this.print_ing = true;
let order = this.data.order;
//Преобразование списка товаров заказа в таблицу для печати с заголовком
let sku_table = [];
//Заголовок таблицы — одномерный массив, представляющий количество столбцов. Здесь используются три столбца.
sku_table.push(["Название", "Количество", "Цена за единицу"]);
//Каждая строка таблицы представляет один товар
for(let i=0; i<order.sku_list.length; i++){
let sku = order.sku_list[i];
//Цифры должны быть представлены в виде строк, чтобы избежать ошибок при печати
sku_table.push([sku.name, sku.quantity.toString(), sku.amount.toFixed(2)]);
}
//
let printer = new Printer("gb2312");
printer.init()
//Ширина бумаги по умолчанию составляет 32 символа. При печати таблицы необходимо установить ширину каждого столбца в соответствии с шириной бумаги.
.setPaperWidth(32)
//Рекомендуется начать печать с пустой строки
//Сначала напечатайте название магазина в качестве заголовка
.newLine().printText(order.shop_name)
//Используйте одну строку для заполнения знака равенства в качестве разделительной линии
.newLine().fillText("=")
//Номер заказа, обратите внимание, что один пробел равен одному символу. Один китайский иероглиф равен двум символам
.newLine().printText("Номер заказа:" + order.order_id.toString())
.newLine().printText("Статус заказа:" + order.state_string)
.newLine().printText("Оформивший сотрудник:" + order.employee_name + "(" + order.employee_phone.toString() + ")")
.newLine().printText("Клиент:" + order.customer_name + "(" + order.customer_phone.toString() + ")")
.newLine().printText("Время оформления заказа:" + order.make_time)
//Вся страница имеет ширину 32 символа, печатается одна таблица с тремя столбцами. Ширина первого столбца составляет 16 символов, второго — 4 символа, третьего — 8 символов.
//Поскольку добавлены границы, ширина равна: 1+16+1+4+1+8+1, зарезервированы символы границ.
.newLine().printTable(sku_table, [16,4,8], true)
//Напечатать два абзаца текста, выровненных по левому и правому краям соответственно
.newLine().printLRText("Общее количество товаров:", order.sku_quantity.toString() + "шт.")
.newLine()
.newLine().printLRText("Общая стоимость товаров:", order.sku_amount.toFixed(2))
.newLine().printLRText("Прочие расходы:", "+" + order.fee.toFixed(2))
.newLine().printLRText("Специальная скидка для клиентов:", "-" + order.sku_discount.toFixed(2))
.newLine().printLRText("Дополнительная скидка от магазина:", "-" + order.discount.toFixed(2))
.newLine()
.newLine().printLRText("Фактическая сумма к оплате:", order.amount.toFixed(2))
.newLine()
.newLine().printText("Адрес магазина:" + order.shop_address)
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )