From 968e19468857f4521e1514fb42e0a6648e980742 Mon Sep 17 00:00:00 2001 From: weipengfei <2187978347@qq.com> Date: Thu, 16 May 2024 17:29:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 6 +- src/api/store.js | 7 +++ src/assets/order.mp3 | Bin 0 -> 11376 bytes src/components/pay.vue | 54 ++++++++++------- src/layout/index.vue | 13 +++- src/layout/myAside.vue | 63 +++++++++++++++---- src/layout/myHeader.vue | 49 ++------------- src/router/index.js | 6 ++ src/store/order.js | 18 ++++++ src/utils/EscPos.js | 70 ++++++++++++++++++++++ src/utils/EscPostUtils.js | 40 ++++--------- src/views/order/component/detail.vue | 4 +- src/views/order/component/order.vue | 7 ++- src/views/order/index.vue | 15 +++-- src/views/purchaseOrder/component/sub.vue | 4 +- src/views/saleHome/component/shop.vue | 18 ++++-- src/views/saleHome/index.vue | 63 +++++++++++++++++-- src/views/saleOrder/component/detail.vue | 4 +- src/views/saleOrder/component/order.vue | 9 ++- src/views/saleOrder/indexCount.vue | 7 +-- 20 files changed, 318 insertions(+), 139 deletions(-) create mode 100644 src/assets/order.mp3 create mode 100644 src/store/order.js create mode 100644 src/utils/EscPos.js diff --git a/.env.development b/.env.development index 6a0e204..8a2f4db 100644 --- a/.env.development +++ b/.env.development @@ -1,7 +1,7 @@ VITE_NOW_TYPE = 'dist' VITE_PUSH_URL = 'ws://192.168.1.22:8787' +VITE_BASE_URL = 'http://192.168.1.22:8546' - -# VITE_BASE_URL = 'http://192.168.1.22:8546' -VITE_BASE_URL = 'https://erp.lihaink.cn' \ No newline at end of file +# VITE_PUSH_URL ='wss://erp.lihaink.cn/pull' +# VITE_BASE_URL = 'https://erp.lihaink.cn' \ No newline at end of file diff --git a/src/api/store.js b/src/api/store.js index c53cdee..a4f83ba 100644 --- a/src/api/store.js +++ b/src/api/store.js @@ -147,4 +147,11 @@ export function opurchaseOrderApi(data) { */ export function subOrdersListApi(data) { return request.get(`/order/OpurchaseOrder/sub_orders`, { params: data }) +} + +/** + * @description 摊贩订单数量统计 + */ +export function merchantOrderCountApi(data) { + return request.get(`/order/retailOrder/merchant_order_count`, { params: data }) } \ No newline at end of file diff --git a/src/assets/order.mp3 b/src/assets/order.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..3cc34996f320522761a53e9974cff0c56aaa4a0c GIT binary patch literal 11376 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 literal 0 HcmV?d00001 diff --git a/src/components/pay.vue b/src/components/pay.vue index eb5736c..d52f4ac 100644 --- a/src/components/pay.vue +++ b/src/components/pay.vue @@ -110,22 +110,36 @@ const handleEnter = () => { message: res.data.trade_state_desc || '支付成功', type: "success", }); - if(res.data.message) audioplay(res.data.message); - beforeClose(); + // if(res.data.message) audioplay(res.data.message); + beforeClose(res.data); } else { - if (!res.data.group_order_sn) { - order_id.value = res.data.result.order_id; - loading.value = false; - return ElMessage({ - message: res.message, - type: "error", - }); - } else { - order_id.value = res.data.group_order_id; - count.value = 0; - timecount = 0; - getOrderStatus(res.data.group_order_sn); + if(res.msg=='用户支付中'&&res.code==1){ + ElMessage.warning(res.msg); + mitt.on('pay_success', (e)=>{ + ElMessage({ + message: '支付成功', + type: "success", + }); + setTimeout(()=>{ + mitt.off('pay_success'); + }, 200); + drawer.value = false; + beforeClose(e); + }) } + // if (!res.data.group_order_sn) { + // order_id.value = res.data.result.order_id; + // loading.value = false; + // return ElMessage({ + // message: res.message, + // type: "error", + // }); + // } else { + // order_id.value = res.data.group_order_id; + // count.value = 0; + // timecount = 0; + // getOrderStatus(res.data.group_order_sn); + // } } }) .catch((err) => { @@ -165,8 +179,8 @@ const orderPay = (id) => { message: res.message=='success'?'支付成功':res.message, type: "success", }); - if(res.data.message) audioplay(res.data.message); - beforeClose(); + // if(res.data.message) audioplay(res.data.message); + beforeClose(res.data); } else { order_id.value = res.data.group_order_id; count.value = 0; @@ -197,7 +211,7 @@ const getOrderStatus = (id) => { message: res.message, type: "success", }); - if(res.data.message) audioplay(res.data.message); + // if(res.data.message) audioplay(res.data.message); beforeClose(); } else { ElMessage({ @@ -229,7 +243,7 @@ const getOrderStatus = (id) => { }); }; -const beforeClose = () => { +const beforeClose = (data) => { window.removeEventListener("keydown", keyboard); reLoad.value = false; loading.value = false; @@ -237,7 +251,7 @@ const beforeClose = () => { collection.value = ""; collectionArray.value = []; codeRef.value?.blur(); - emit("paySuccess"); + emit("paySuccess", data); drawer.value = false; }; @@ -314,7 +328,7 @@ const cashBnt = () => { type: "success", }); changeActive(1); - if(res.data.message) audioplay(res.data.message); + // if(res.data.message) audioplay(res.data.message); beforeClose(); } else { if (!res.data.group_order_sn) { diff --git a/src/layout/index.vue b/src/layout/index.vue index cfe940d..7c067ea 100644 --- a/src/layout/index.vue +++ b/src/layout/index.vue @@ -12,14 +12,23 @@ const connection = new Push({ app_key: '2ce3ce22329517213caa7dad261f5695', }); - // 浏览器监听user-1 const user_channel = connection.subscribe(`store_merchant_${userStore.userInfo.merchant.mer_id}`); // const user_channel = connection.subscribe(`store_merchant_${1}`); // 当user-2频道有message事件的消息时 user_channel.on('message', function (data) { - console.log("收到消息--",data, JSON.parse(data.content)); + console.log("收到消息--",data); + try { + if(data?.content?.type=='cash_register'&&data?.content?.msg=="您有一笔订单已支付"){ + mitt.emit('pay_success', data?.content?.data); + } + if(data?.content?.type=='store_merchant'&&data?.content?.msg=="您有一笔新的订单"){ + mitt.emit('new_order', data?.content); + } + } catch (error) { + + } }); // 断线事件 user_channel.on('close', function () { diff --git a/src/layout/myAside.vue b/src/layout/myAside.vue index bebc25f..3f41d55 100644 --- a/src/layout/myAside.vue +++ b/src/layout/myAside.vue @@ -2,18 +2,56 @@ import { useRoute, useRouter } from "vue-router"; import { ref, onMounted, onUnmounted } from "vue"; import mitt from "@/utils/mitt.js"; +import { useOrderStore } from "@/store/order.js"; +import { merchantOrderCountApi } from "@/api/store.js"; +import { ElMessage } from "element-plus"; const router = useRouter(); const route = useRoute(); +const orderStore = useOrderStore(); +// setInterval(()=>{ +// setOrderCount(+orderStore.orderCount + 1) +// }, 2000) + +const setOrderCount = (e = 1) => { + orderStore.setOrderCount(e) + list.value.forEach(item=>{ + if(item.name == "order") item.count = e; + }) +}; + +const newOrder = (e) => { + merchantOrderCountApi().then((res) => { + setOrderCount(res?.data?.order_count || 0); + }); + ElMessage.success('您有新的订单') + // 创建音频对象 + var audio = new Audio("/src/assets/order.mp3"); + // 播放音频 + audio.play(); +}; + +// setTimeout(() => { +// newOrder({ +// msg: "您有一笔新的订单", +// }); +// }, 3000); + const navTo = (name) => { router.push({ name }); }; const list = ref([ { name: "saleHome", title: "收银", ico: "Sell", count: 0 }, { name: "saleOrder", title: "收银订单", ico: "DataLine", count: 0 }, - { name: "order", title: "摊贩订单", ico: "DataAnalysis", count: 2 }, - { name: "purchaseOrder", title: "采购订单", ico: "Tickets", count: 0 }, + { + name: "order", + title: "摊贩订单", + ico: "DataAnalysis", + count: +orderStore.orderCount, + }, + { name: "purchaseOrder", title: "采购订单", ico: "Van", count: 0 }, + { name: "orderCount", title: "订单统计", ico: "DocumentRemove", count: 0 }, // { name: "test", title: "打印", ico: "Tickets", count: 0 }, ]); const aup = () => { @@ -29,11 +67,16 @@ const adown = () => { onMounted(() => { mitt.on("up", aup); mitt.on("down", adown); + mitt.on("new_order", newOrder); + merchantOrderCountApi().then((res) => { + setOrderCount(res?.data?.order_count || 0); + }); }); onUnmounted(() => { mitt.off("aup", aup); mitt.off("adown", adown); + mitt.off("new_order", newOrder); }); @@ -80,14 +123,14 @@ onUnmounted(() => { background-color: #1890ff; transition: 300ms; } - .badge{ - position: absolute; - top: -0.5rem; - right: -0.5rem; - background-color: #ff4a00; - font-size: 0.7rem; - padding: 0.2rem 0.5rem; - border-radius: 2rem; + .badge { + position: absolute; + top: -0.5rem; + right: -0.5rem; + background-color: #ff4a00; + font-size: 0.7rem; + padding: 0.2rem 0.5rem; + border-radius: 2rem; } } } diff --git a/src/layout/myHeader.vue b/src/layout/myHeader.vue index 5f80401..fb31978 100644 --- a/src/layout/myHeader.vue +++ b/src/layout/myHeader.vue @@ -6,7 +6,7 @@ import { ElMessage } from "element-plus"; import { useRouter } from "vue-router"; import mitt from "@/utils/mitt.js"; import { usePrintStore } from "@/store/print.js"; -import * as Esc from "@/utils/EscPostUtils.js"; +import { printTicket } from "@/utils/EscPos.js"; const userStore = useUserStore(); const printStore = usePrintStore(); @@ -48,9 +48,7 @@ let isPrint = false; //是否正在打印小票 // 预打印 const printReceipt = (content = "") => { console.log("预打印"); - // console.log(Esc.inline3("单价 ", "数量", "小计", " ", 1) + "\n"); - // console.log(Esc.inline3("2.36元 ", "10包", "30.00元", " ", 1) + "\n"); - // return ; + console.log(printTicket(content, true)); if (isPrint) return; isPrint = true; uni.getEnv((res) => { @@ -70,46 +68,7 @@ const printReceipt = (content = "") => { const APPprint = (content = "") => { let str = ""; if (content === "") { - // str += "********************************\n"; - // str += "莲花农贸市场\n"; - // str += "单号: PF171568087790938356\n"; - // str += "测试商品 0.01元/kg\n"; - // str += "x 3 \t\t 0.10 \n"; - // str += "测试商品白菜 1.33元/kg\n"; - // str += "x 10 \t\t 13.30元\n"; - // str += "测试商品小黄鸭 36.59元/只\n"; - // str += "x 3 \t\t 106.97元\n"; - // str += " \t 合计: ¥235.36\n"; - // str += "\n"; - // str += "--------------------------------\n"; - // str += "\n"; - str += Esc.Size2(0) + Esc.Center() + Esc.boldFontOn() + "莲花农贸市场" + "\n"; - str += Esc.fillLine(" ") + Esc.boldFontOff() + "\n"; - str += Esc.Left() + "单号: PF171568087790938356" + "\n"; - str += Esc.Left() + "下单时间: 2024-5-15 18:00:32" + "\n"; - // 商品信息 - str += Esc.fillLine("=") + "\n"; - str += Esc.inline3("单价 ", "数量", "小计", " ", 1) + "\n"; - str += Esc.Left() + "白菜 大白菜" + "\n"; - str += Esc.inline3("206.36元 ", "10包", "3600.00元", " ", 1) + "\n"; - str += Esc.Left() + "白菜 大白菜" + "\n"; - str += Esc.inline3("206.36元 ", "10包", "3600.00元", " ", 1) + "\n"; - str += Esc.Left() + "白菜 大白菜" + "\n"; - str += Esc.inline3("206.36元 ", "10包", "3600.00元", " ", 1) + "\n"; - str += Esc.fillLine("=") + "\n"; - - str += Esc.Left() + "应付款: " + "29.96元" + "\n"; - str += Esc.Left() + "实付款: " + "29.96元" + "\n"; - str += Esc.Left() + "支付方式: " + "微信支付" + "\n"; - str += Esc.Left() + "支付单号: " + "4200002159202405159003084211" + "\n"; - str += Esc.fillLine("=") + "\n"; - - // 票尾 - str += Esc.fillLine(" ") + "\n"; - str += Esc.Center() + "欢迎下次光临!" + "\n"; - str += Esc.feedLines(" ") + "\n"; - // 切纸 - str += Esc.cutPaper(); + str = printTicket({}, true); //打印自检 console.log(str); } else str = content; uni.postMessage({ @@ -150,7 +109,7 @@ onUnmounted(() => { src="https://lihai001.oss-cn-chengdu.aliyuncs.com/def/12c93202404101530591311.png" > -
里海收银系统
+
泸优采收银系统
{ + + const orderCount = ref(localStorage.getItem('orderCount')||0); + + + const setOrderCount = (e)=>{ + orderCount.value = e; + localStorage.setItem('orderCount',e); + } + + return { + orderCount, + setOrderCount + } +}) \ No newline at end of file diff --git a/src/utils/EscPos.js b/src/utils/EscPos.js new file mode 100644 index 0000000..588b5f9 --- /dev/null +++ b/src/utils/EscPos.js @@ -0,0 +1,70 @@ +import * as Esc from "@/utils/EscPostUtils.js"; + +const testObj = { + mer_name: "莲花农贸市场", //商户名称 + service_phone: "0830-2669767", //客服电话 + number: "PF171568087790938356", //单号 + create_time: "2024-5-15 18:00:32", //下单时间 + total_price: "29.96", //总价 + pay_price: "29.96", //实付 + pay_type: "微信支付", //支付方式 + pay_number: "4200002159202405159003084211", //支付单号 + goods: [ + { + name: "白菜 大白菜", //商品名称 + sell: "236.60", //单价 + nums: "13", //数量 + unit_name: "kg", //单位 + total: "2896.34" //小计 + }, + { + name: "小黄鸭", //商品名称 + sell: "9.56", //单价 + nums: "2", //数量 + unit_name: "只", //单位 + total: "19.38" //小计 + }, + { + name: "卷心菜", //商品名称 + sell: "15.37", //单价 + nums: "8", //数量 + unit_name: "斤", //单位 + total: "134.38" //小计 + } + ] +} + +export const printTicket = (obj = {}, test = false) => { + let str = ""; + if(!obj || !obj.number) obj = testObj; + str += Esc.Size2(0) + Esc.Center() + Esc.boldFontOn() + obj.mer_name + "\n"; + str += Esc.fillLine(" ") + Esc.boldFontOff() + "\n"; + str += Esc.Left() + "单号: " + obj.number + "\n"; + str += Esc.Left() + "下单时间: " + obj.create_time + "\n"; + + // 商品信息 + str += Esc.fillLine("=") + "\n"; + + str += Esc.inline3("单价", "数量", "小计", " ", 1) + "\n"; + obj.goods.forEach(item => { + str += Esc.Left() + item.name + "\n"; + str += Esc.inline3(`${item.sell}元`, `${item.nums}${item.unit_name}`, `${item.total}元`, " ", 1) + "\n"; + }) + + str += Esc.fillLine("=") + "\n"; + + str += Esc.Left() + "应付款: " + obj.total_price + "元" + "\n"; + str += Esc.Left() + "实付款: " + obj.pay_price + "元" + "\n"; + str += Esc.Left() + "支付方式: " + obj.pay_type + "\n"; + str += Esc.Left() + "支付单号: " + obj.pay_number + "\n"; + str += Esc.Left() + "联系电话: " + obj.service_phone + "\n"; + str += Esc.fillLine("=") + "\n"; + + // 票尾 + str += Esc.fillLine(" ") + "\n"; + str += Esc.Center() + "欢迎下次光临!" + "\n"; + str += Esc.feedLines(" ") + "\n"; + // 切纸 + str += Esc.cutPaper(); + return str; +} \ No newline at end of file diff --git a/src/utils/EscPostUtils.js b/src/utils/EscPostUtils.js index 82f2b02..f85e439 100644 --- a/src/utils/EscPostUtils.js +++ b/src/utils/EscPostUtils.js @@ -1,3 +1,5 @@ +// 此为指令集, 如非必要请不要进行修改操作, 以免打印效果异常 + // 打印机纸宽58mm,页的宽度384,字符宽度为1,每行最多盛放32个字符 // 打印机纸宽80mm,页的宽度576,字符宽度为1,每行最多盛放48个字符 const PAGE_WIDTH = 384; @@ -238,39 +240,19 @@ export function inline(str1, str2, fillWith = ' ', fontWidth = 1) { * @param {string} fillWith 列之间的填充字符 * @param {number} fontWidth 字符宽度(默认为1) */ -export function inlineThreeColumns(str1, str2, str3, fillWith = ' ', fontWidth = 1) { - const lineWidth = MAX_CHAR_COUNT_EACH_LINE / fontWidth; - - // 计算每列的宽度(假设三列等宽) - const columnWidth = Math.floor(lineWidth / 3); - - // 计算每列的实际宽度 - const width1 = getStringWidth(str1); - const width2 = getStringWidth(str2); - const width3 = getStringWidth(str3); - - // 计算每列需要的填充数量 - let fillCount1 = columnWidth - width1; - let fillCount2 = columnWidth - width2; - let fillCount3 = lineWidth - columnWidth - (width1 + fillCount1 * fontWidth + width2 + fillCount2 * fontWidth + width3); - - // 创建填充字符串 - let fillStr1 = new Array(fillCount1).fill(fillWith.charAt(0)).join(''); - let fillStr2 = new Array(fillCount2).fill(fillWith.charAt(0)).join(''); - let fillStr3 = new Array(fillCount3).fill(fillWith.charAt(0)).join(''); - - // 拼接字符串 - return str1 + fillStr1 + str2 + fillStr2 + str3 + fillStr3; -} - export function inline3(str1, str2, str3, fillWith = ' ', fontWidth = 1) { const lineWidth = MAX_CHAR_COUNT_EACH_LINE / fontWidth; // 需要填充的字符数量 let fillCount = lineWidth - (getStringWidth(str1) + getStringWidth(str2) + getStringWidth(str3)) % lineWidth; - console.log("=",lineWidth, getStringWidth(str1) + getStringWidth(str2) + getStringWidth(str3), fillCount); - fillCount = Math.floor(fillCount / 2); - let fillStr = new Array(fillCount).fill(fillWith.charAt(0)).join(''); - return str1 + fillStr + str2 + fillStr + str3; + let count2 = Math.floor(fillCount / 2); //分别计算出两边各自需要填充的数量 + let count1 = fillCount - count2; + if(fillCount>2){ //往左偏移两位, 防止打印时,小计与数量重叠 + count1 -= 2; + count2 += 2; + } + let fillStr1 = new Array(count1).fill(fillWith.charAt(0)).join(''); + let fillStr2 = new Array(count2).fill(fillWith.charAt(0)).join(''); + return str1 + fillStr1 + str2 + fillStr2 + str3; } /** diff --git a/src/views/order/component/detail.vue b/src/views/order/component/detail.vue index 2e53cc6..740a19f 100644 --- a/src/views/order/component/detail.vue +++ b/src/views/order/component/detail.vue @@ -175,8 +175,8 @@ onUnmounted(() => {
支付方式:
微信收款 - 余额支付 - 微信支付 + 余额支付 + 微信支付
diff --git a/src/views/order/component/order.vue b/src/views/order/component/order.vue index b18012d..059f348 100644 --- a/src/views/order/component/order.vue +++ b/src/views/order/component/order.vue @@ -51,7 +51,7 @@ const where = ref({ page_size: 20, number: "", date: moment(new Date()).format("YYYY-MM-DD"), - source: props.source, + // source: props.source, }); const loading = ref(false); @@ -86,6 +86,7 @@ const getOrderList = (reload = false) => { const submitOrder = ()=>{ createOrderApi().then(res=>{ ElMessage.success("提交成功"); + getOrderList(true); }) } @@ -203,8 +204,8 @@ onUnmounted(()=>{
已支付 (微信收款) - (余额支付) - (微信支付) + (余额支付) + (微信支付)
未支付
diff --git a/src/views/order/index.vue b/src/views/order/index.vue index b48a3c9..14e3e84 100644 --- a/src/views/order/index.vue +++ b/src/views/order/index.vue @@ -31,13 +31,18 @@ const rules = ref({ detail: [{ required: true, message: "请输入地址", trigger: "blur" }], }); +const formRef = ref(null); + const submit = () => { - merchantCreateApi(form.value).then((res) => { - dialogFormVisible.value = false; - orderRef.value?.getOrderList(true); + formRef.value?.validate((valid) => { + if (valid) { + merchantCreateApi(form.value).then((res) => { + dialogFormVisible.value = false; + orderRef.value?.getOrderList(true); + }); + } }); }; -