更新
This commit is contained in:
parent
8ead6c2002
commit
b375b44d45
@ -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_PUSH_URL = 'ws://192.168.1.22:8787'
|
||||
VITE_BASE_URL = 'http://192.168.1.22:8545'
|
||||
|
||||
VITE_PUSH_URL ='wss://erp.lihaink.cn/pull'
|
||||
VITE_BASE_URL = 'https://erp.lihaink.cn'
|
||||
# VITE_PUSH_URL ='wss://erp.lihaink.cn/pull'
|
||||
# VITE_BASE_URL = 'https://test-multi-store.lihaink.cn'
|
@ -1,4 +1,4 @@
|
||||
VITE_NOW_TYPE = 'build'
|
||||
|
||||
VITE_PUSH_URL ='wss://erp.lihaink.cn/pull'
|
||||
VITE_BASE_URL = 'https://erp.lihaink.cn'
|
||||
VITE_BASE_URL = 'https://test-multi-store.lihaink.cn'
|
File diff suppressed because one or more lines are too long
2
dist/assets/detail-SSwoB7VG.js
vendored
2
dist/assets/detail-SSwoB7VG.js
vendored
File diff suppressed because one or more lines are too long
2
dist/assets/index-BcmmN2mF.js
vendored
2
dist/assets/index-BcmmN2mF.js
vendored
File diff suppressed because one or more lines are too long
2
dist/assets/index-CaeMrXBn.js
vendored
2
dist/assets/index-CaeMrXBn.js
vendored
File diff suppressed because one or more lines are too long
2
dist/assets/index-D5NVVZ9r.js
vendored
2
dist/assets/index-D5NVVZ9r.js
vendored
File diff suppressed because one or more lines are too long
2
dist/assets/index-DFDQ9JgE.js
vendored
2
dist/assets/index-DFDQ9JgE.js
vendored
File diff suppressed because one or more lines are too long
2
dist/assets/indexCount-Dekjp8EX.js
vendored
2
dist/assets/indexCount-Dekjp8EX.js
vendored
@ -1 +1 @@
|
||||
import{h as S,i as Y}from"./pay.vue_vue_type_style_index_0_scoped_7f298acd_lang-BaAcCNPN.js";import{_ as w,u as P,r as o,b as h,j as k,q as N,c as f,h as b,e as t,t as d,s as D,f as r,w as x,g as F,v as M,x as V,A as j}from"./index-3-t8Fk7s.js";import{h as n}from"./moment-Cl4UOzQZ.js";const v=l=>(M("data-v-266c9d86"),l=l(),V(),l),q={"element-loading-text":"加载中",class:"my-order"},A={key:0,class:"from"},B={class:"form-card"},L=v(()=>t("div",{class:"tips"},"今日收银 平台+线上+现金 总金额",-1)),T={class:"form-card"},O=v(()=>t("div",{class:"tips"},"昨日收银 平台+线上+现金 总金额",-1)),E={class:"form-card"},R=v(()=>t("div",{class:"tips"},"本月收银 平台+线上+现金 总金额",-1)),U={class:"table"},z={__name:"indexCount",setup(l){const c=P(),m=o([]),g=j();o(1),o(null);const C=o({page:1,limit:15,staff_id:c.userInfo.service.service_id}),_=o(!1);o(0),(()=>{S(c.userInfo.service.mer_id,C.value).then(s=>{m.value=s.data})})();const a=o({});(()=>{_.value=!0,Y(c.userInfo.service.mer_id,{staff_id:c.userInfo.service.service_id}).then(s=>{a.value=s.data.data,_.value=!1})})();const I=(s,p)=>{let e="",i={};Number(n(s.day).format("MM"))>Number(n().format("MM"))?e=n().format("YYYY")-1+"-"+s.day.split("-").join("-"):e=n().format("YYYY")+"-"+s.day.split("-").join("-"),i.date=e,p.no==2&&(i.payType=1),p.no==3&&(i.payType=2),g.push({path:"order",query:i})};return(s,p)=>{const e=h("el-table-column"),i=h("el-table"),u=k("loading");return N((f(),b("div",q,[a.value.today?(f(),b("div",A,[t("div",B,[t("div",null,d((a.value.today.cashPayment+a.value.today.payPrice).toFixed(2)),1),L]),t("div",T,[t("div",null,d((a.value.yesterday.cashPayment+a.value.yesterday.payPrice).toFixed(2)),1),O]),t("div",E,[t("div",null,d((a.value.month.cashPayment+a.value.month.payPrice).toFixed(2)),1),R])])):D("",!0),t("div",U,[r(i,{data:m.value,style:{width:"100%"},onCellClick:I},{default:x(()=>[r(e,{prop:"day",label:"日期",width:"260"}),r(e,{prop:"total",label:"订单数量"}),r(e,{prop:"cash_payment",label:"现金收银金额"}),r(e,{prop:"cash_registe",label:"线上收银金额"}),r(e,{prop:"pay_price",label:"平台交易额"}),r(e,{label:"总金额"},{default:x(y=>[F(d(((+y.row.pay_price||0)+(+y.row.cash_payment||0)).toFixed(2)),1)]),_:1})]),_:1},8,["data"])])])),[[u,_.value]])}}},W=w(z,[["__scopeId","data-v-266c9d86"]]);export{W as default};
|
||||
import{h as S,i as Y}from"./pay.vue_vue_type_style_index_0_scoped_7f298acd_lang-BaAcCNPN.js";import{_ as w,u as P,r as o,b as h,j as k,q as N,c as f,h as b,e as t,t as d,s as D,f as r,w as x,g as F,v as M,x as V,A as j}from"./index-3-t8Fk7s.js";import{h as n}from"./moment-Cl4UOzQZ.js";const v=l=>(M("data-v-266c9d86"),l=l(),V(),l),q={"element-loading-text":"加载中",class:"my-order"},A={key:0,class:"from"},B={class:"form-card"},L=v(()=>t("div",{class:"tips"},"今日收银 平台+线上+现金 总金额",-1)),T={class:"form-card"},O=v(()=>t("div",{class:"tips"},"昨日收银 平台+线上+现金 总金额",-1)),E={class:"form-card"},R=v(()=>t("div",{class:"tips"},"本月收银 平台+线上+现金 总金额",-1)),U={class:"table"},z={__name:"indexCount",setup(l){const c=P(),m=o([]),g=j();o(1),o(null);const C=o({page:1,limit:15,staff_id:c.userInfo.service.service_id}),_=o(!1);o(0),(()=>{S(c.userInfo.service.store_id,C.value).then(s=>{m.value=s.data})})();const a=o({});(()=>{_.value=!0,Y(c.userInfo.service.store_id,{staff_id:c.userInfo.service.service_id}).then(s=>{a.value=s.data.data,_.value=!1})})();const I=(s,p)=>{let e="",i={};Number(n(s.day).format("MM"))>Number(n().format("MM"))?e=n().format("YYYY")-1+"-"+s.day.split("-").join("-"):e=n().format("YYYY")+"-"+s.day.split("-").join("-"),i.date=e,p.no==2&&(i.payType=1),p.no==3&&(i.payType=2),g.push({path:"order",query:i})};return(s,p)=>{const e=h("el-table-column"),i=h("el-table"),u=k("loading");return N((f(),b("div",q,[a.value.today?(f(),b("div",A,[t("div",B,[t("div",null,d((a.value.today.cashPayment+a.value.today.payPrice).toFixed(2)),1),L]),t("div",T,[t("div",null,d((a.value.yesterday.cashPayment+a.value.yesterday.payPrice).toFixed(2)),1),O]),t("div",E,[t("div",null,d((a.value.month.cashPayment+a.value.month.payPrice).toFixed(2)),1),R])])):D("",!0),t("div",U,[r(i,{data:m.value,style:{width:"100%"},onCellClick:I},{default:x(()=>[r(e,{prop:"day",label:"日期",width:"260"}),r(e,{prop:"total",label:"订单数量"}),r(e,{prop:"cash_payment",label:"现金收银金额"}),r(e,{prop:"cash_registe",label:"线上收银金额"}),r(e,{prop:"pay_price",label:"平台交易额"}),r(e,{label:"总金额"},{default:x(y=>[F(d(((+y.row.pay_price||0)+(+y.row.cash_payment||0)).toFixed(2)),1)]),_:1})]),_:1},8,["data"])])])),[[u,_.value]])}}},W=w(z,[["__scopeId","data-v-266c9d86"]]);export{W as default};
|
||||
|
2
dist/assets/indexList-DNHhtO8X.js
vendored
2
dist/assets/indexList-DNHhtO8X.js
vendored
@ -1 +1 @@
|
||||
import{e as F,a as G,g as J,f as K}from"./pay.vue_vue_type_style_index_0_scoped_7f298acd_lang-BaAcCNPN.js";import{_ as Q,u as W,r as s,b as d,j as X,q as Y,c,h as m,f as t,w as o,g as r,t as Z,e as P,d as I,A as ee,E as h,v as te,x as ae}from"./index-3-t8Fk7s.js";import{p as oe}from"./pay-Bt7FIL7i.js";const le=v=>(te("data-v-3c901223"),v=v(),ae(),v),se={"element-loading-text":"加载中",class:"my-order"},ne={key:0},re={key:1,style:{color:"#ff4a00"}},ie={key:0},de={key:1,class:"flex"},ce=le(()=>P("span",null,"提单前请清空购物车, 避免提单的商品与购物车商品混合, 请确保购物车内无数据后再进行提单",-1)),ue={class:"dialog-footer"},pe={__name:"indexList",setup(v){const k=W(),C=s([]),b=ee(),g=s(1),f=s(null),n=s({page:1,limit:20}),y=s(!1),w=s(0),i=()=>{y.value=!0,g.value==1&&(n.value.paid=null),g.value==2&&(n.value.paid=0),F(k.userInfo.service.mer_id,n.value).then(e=>{C.value=e.data.list,w.value=e.data.count,y.value=!1})};i();const x=s(0);(()=>{G({staff_id:k.userInfo.service.service_id}).then(e=>{var a;x.value=(a=e.data.list)==null?void 0:a.length})})();const A=e=>{n.value.page=1,i()},B=e=>{n.value.page=e,i()},D=e=>{n.value.page=e,i()},N=e=>{n.value.page=e,i()},R=()=>{i()},$=e=>{f.value.setRePay({price:e.pay_price,order_id:e.group_order_id}),f.value.drawer=!0},E=e=>{J({order_sn:e}).then(a=>{a.data.paid==1||a.message=="支付成功"?(h({message:a.message,type:"success"}),i()):h({message:a.message,type:"error"})}).catch(a=>{})},L=s(""),U=()=>{_.value=!1,K({order_sn:L.value}).then(e=>{h({message:e.message,type:"success"}),b.push({name:"home"})})},_=s(!1),z=e=>{L.value=e,_.value=!0},O=()=>{b.push({name:"home"})};return(e,a)=>{const S=d("el-radio-button"),T=d("el-radio-group"),u=d("el-table-column"),p=d("el-button"),j=d("el-table"),q=d("el-pagination"),H=d("el-dialog"),M=X("loading");return Y((c(),m("div",se,[t(T,{modelValue:g.value,"onUpdate:modelValue":a[0]||(a[0]=l=>g.value=l),style:{"margin-bottom":"30px"},onChange:A},{default:o(()=>[t(S,{value:1},{default:o(()=>[r("全部")]),_:1}),t(S,{value:2},{default:o(()=>[r("未支付")]),_:1})]),_:1},8,["modelValue"]),t(j,{data:C.value,style:{width:"100%"}},{default:o(()=>[t(u,{prop:"group_order_id",label:"ID",width:"100"}),t(u,{prop:"order_sn",label:"订单号",width:"260"}),t(u,{prop:"total_price",label:"订单金额"}),t(u,{prop:"paid",label:"支付状态"},{default:o(l=>[l.row.paid==1?(c(),m("span",ne,"已支付")):(c(),m("span",re,"未支付"))]),_:1}),t(u,{prop:"create_time",label:"订单创建时间"}),t(u,{prop:"pay_time",label:"订单支付时间"},{default:o(l=>[l.row.pay_time?(c(),m("span",ie,Z(l.row.pay_time),1)):(c(),m("div",de,[t(p,{type:"primary",link:"",onClick:V=>$(l.row)},{default:o(()=>[r("重新支付")]),_:2},1032,["onClick"]),t(p,{type:"primary",link:"",onClick:V=>E(l.row.order_sn)},{default:o(()=>[r("检测状态")]),_:2},1032,["onClick"]),t(p,{type:"primary",link:"",onClick:V=>z(l.row.order_sn)},{default:o(()=>[r("提单")]),_:2},1032,["onClick"])]))]),_:1})]),_:1},8,["data"]),t(q,{"page-size":n.value.limit,layout:"prev, pager, next",total:w.value,onPrevClick:B,onNextClick:D,onCurrentChange:N},null,8,["page-size","total"]),t(oe,{ref_key:"payRef",ref:f,onPaySuccess:R},null,512),t(H,{modelValue:_.value,"onUpdate:modelValue":a[2]||(a[2]=l=>_.value=l),title:"提示",width:"500"},{footer:o(()=>[P("div",ue,[t(p,{onClick:a[1]||(a[1]=l=>_.value=!1)},{default:o(()=>[r("取消")]),_:1}),x.value>0?(c(),I(p,{key:0,onClick:O},{default:o(()=>[r(" 前去清空购物车 ")]),_:1})):(c(),I(p,{key:1,type:"primary",onClick:U},{default:o(()=>[r(" 确认提单 ")]),_:1}))])]),default:o(()=>[ce]),_:1},8,["modelValue"])])),[[M,y.value]])}}},fe=Q(pe,[["__scopeId","data-v-3c901223"]]);export{fe as default};
|
||||
import{e as F,a as G,g as J,f as K}from"./pay.vue_vue_type_style_index_0_scoped_7f298acd_lang-BaAcCNPN.js";import{_ as Q,u as W,r as s,b as d,j as X,q as Y,c,h as m,f as t,w as o,g as r,t as Z,e as P,d as I,A as ee,E as h,v as te,x as ae}from"./index-3-t8Fk7s.js";import{p as oe}from"./pay-Bt7FIL7i.js";const le=v=>(te("data-v-3c901223"),v=v(),ae(),v),se={"element-loading-text":"加载中",class:"my-order"},ne={key:0},re={key:1,style:{color:"#ff4a00"}},ie={key:0},de={key:1,class:"flex"},ce=le(()=>P("span",null,"提单前请清空购物车, 避免提单的商品与购物车商品混合, 请确保购物车内无数据后再进行提单",-1)),ue={class:"dialog-footer"},pe={__name:"indexList",setup(v){const k=W(),C=s([]),b=ee(),g=s(1),f=s(null),n=s({page:1,limit:20}),y=s(!1),w=s(0),i=()=>{y.value=!0,g.value==1&&(n.value.paid=null),g.value==2&&(n.value.paid=0),F(k.userInfo.service.store_id,n.value).then(e=>{C.value=e.data.list,w.value=e.data.count,y.value=!1})};i();const x=s(0);(()=>{G({staff_id:k.userInfo.service.service_id}).then(e=>{var a;x.value=(a=e.data.list)==null?void 0:a.length})})();const A=e=>{n.value.page=1,i()},B=e=>{n.value.page=e,i()},D=e=>{n.value.page=e,i()},N=e=>{n.value.page=e,i()},R=()=>{i()},$=e=>{f.value.setRePay({price:e.pay_price,order_id:e.group_order_id}),f.value.drawer=!0},E=e=>{J({order_sn:e}).then(a=>{a.data.paid==1||a.message=="支付成功"?(h({message:a.message,type:"success"}),i()):h({message:a.message,type:"error"})}).catch(a=>{})},L=s(""),U=()=>{_.value=!1,K({order_sn:L.value}).then(e=>{h({message:e.message,type:"success"}),b.push({name:"home"})})},_=s(!1),z=e=>{L.value=e,_.value=!0},O=()=>{b.push({name:"home"})};return(e,a)=>{const S=d("el-radio-button"),T=d("el-radio-group"),u=d("el-table-column"),p=d("el-button"),j=d("el-table"),q=d("el-pagination"),H=d("el-dialog"),M=X("loading");return Y((c(),m("div",se,[t(T,{modelValue:g.value,"onUpdate:modelValue":a[0]||(a[0]=l=>g.value=l),style:{"margin-bottom":"30px"},onChange:A},{default:o(()=>[t(S,{value:1},{default:o(()=>[r("全部")]),_:1}),t(S,{value:2},{default:o(()=>[r("未支付")]),_:1})]),_:1},8,["modelValue"]),t(j,{data:C.value,style:{width:"100%"}},{default:o(()=>[t(u,{prop:"group_order_id",label:"ID",width:"100"}),t(u,{prop:"order_sn",label:"订单号",width:"260"}),t(u,{prop:"total_price",label:"订单金额"}),t(u,{prop:"paid",label:"支付状态"},{default:o(l=>[l.row.paid==1?(c(),m("span",ne,"已支付")):(c(),m("span",re,"未支付"))]),_:1}),t(u,{prop:"create_time",label:"订单创建时间"}),t(u,{prop:"pay_time",label:"订单支付时间"},{default:o(l=>[l.row.pay_time?(c(),m("span",ie,Z(l.row.pay_time),1)):(c(),m("div",de,[t(p,{type:"primary",link:"",onClick:V=>$(l.row)},{default:o(()=>[r("重新支付")]),_:2},1032,["onClick"]),t(p,{type:"primary",link:"",onClick:V=>E(l.row.order_sn)},{default:o(()=>[r("检测状态")]),_:2},1032,["onClick"]),t(p,{type:"primary",link:"",onClick:V=>z(l.row.order_sn)},{default:o(()=>[r("提单")]),_:2},1032,["onClick"])]))]),_:1})]),_:1},8,["data"]),t(q,{"page-size":n.value.limit,layout:"prev, pager, next",total:w.value,onPrevClick:B,onNextClick:D,onCurrentChange:N},null,8,["page-size","total"]),t(oe,{ref_key:"payRef",ref:f,onPaySuccess:R},null,512),t(H,{modelValue:_.value,"onUpdate:modelValue":a[2]||(a[2]=l=>_.value=l),title:"提示",width:"500"},{footer:o(()=>[P("div",ue,[t(p,{onClick:a[1]||(a[1]=l=>_.value=!1)},{default:o(()=>[r("取消")]),_:1}),x.value>0?(c(),I(p,{key:0,onClick:O},{default:o(()=>[r(" 前去清空购物车 ")]),_:1})):(c(),I(p,{key:1,type:"primary",onClick:U},{default:o(()=>[r(" 确认提单 ")]),_:1}))])]),default:o(()=>[ce]),_:1},8,["modelValue"])])),[[M,y.value]])}}},fe=Q(pe,[["__scopeId","data-v-3c901223"]]);export{fe as default};
|
||||
|
@ -31,43 +31,43 @@ export function productTitleApi(id, data) {
|
||||
/**
|
||||
* @description 上下架
|
||||
*/
|
||||
export function productStatusApi(mer_id, id, data) {
|
||||
return request.post(`server/${mer_id}/product/status/${id}`, data)
|
||||
export function productStatusApi(store_id, id, data) {
|
||||
return request.post(`server/${store_id}/product/status/${id}`, data)
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 平台分类
|
||||
*/
|
||||
export function categoryListApi(mer_id, data) {
|
||||
return request.get(`server/${mer_id}/category/list`, { params: data })
|
||||
export function categoryListApi(store_id, data) {
|
||||
return request.get(`server/${store_id}/category/list`, { params: data })
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 添加商品
|
||||
*/
|
||||
export function productCreateApi(mer_id, data) {
|
||||
return request.post(`server/${mer_id}/product/create`, data)
|
||||
export function productCreateApi(store_id, data) {
|
||||
return request.post(`server/${store_id}/product/create`, data)
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 编辑商品
|
||||
*/
|
||||
export function productUpdateApi(mer_id, id, data) {
|
||||
return request.post(`server/${mer_id}/product/update/${id}`, data)
|
||||
export function productUpdateApi(store_id, id, data) {
|
||||
return request.post(`server/${store_id}/product/update/${id}`, data)
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 商品详情
|
||||
*/
|
||||
export function productDetailApi(mer_id, id, data) {
|
||||
return request.get(`server/${mer_id}/product/detail/${id}`, { params: data })
|
||||
export function productDetailApi(store_id, id, data) {
|
||||
return request.get(`server/${store_id}/product/detail/${id}`, { params: data })
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 批发商品列表
|
||||
*/
|
||||
export function saleStoreListApi(data) {
|
||||
return request.get(`/goods/goods/mer_list`, { params: data })
|
||||
return request.get(`/store_product/storeProduct/lists`, { params: data })
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -4,21 +4,21 @@ import request from '@/utils/axios.js'
|
||||
* @description 加入购物车
|
||||
*/
|
||||
export function cartCreateApi(data) {
|
||||
return request.post(`/order/cart/create`, data)
|
||||
return request.post(`/cart/cart/create`, data)
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 购物列表
|
||||
*/
|
||||
export function cartListApi(data) {
|
||||
return request.get(`/order/cart/list`, { params: data })
|
||||
return request.get(`/cart/cart/list`, { params: data })
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 编辑购物车数据
|
||||
*/
|
||||
export function cartChangeApi(id, data) {
|
||||
return request.post(`user/cart/change/${id}`, data)
|
||||
return request.post(`user/cart/change/${id}`, data)
|
||||
}
|
||||
|
||||
|
||||
@ -26,84 +26,84 @@ export function cartChangeApi(id, data) {
|
||||
* @description 结算
|
||||
*/
|
||||
export function orderCheckApi(data) {
|
||||
return request.post(`/order/RetailOrder/checkOrder`, data)
|
||||
return request.post(`/store_order/StoreOrder/checkOrder`, data)
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 删除商品
|
||||
*/
|
||||
export function cartDeleteApi(data) {
|
||||
return request.post(`/order/cart/delete`, data)
|
||||
return request.post(`/cart/cart/delete`, data)
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 支付
|
||||
*/
|
||||
export function orderCreateApi(data) {
|
||||
return request.post(`/order/RetailOrder/createOrder`, data)
|
||||
return request.post(`/store_order/StoreOrder/createOrder`, data)
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 重新支付
|
||||
*/
|
||||
export function orderPayApi(id, data) {
|
||||
return request.post(`order/pay/${id}`, data)
|
||||
return request.post(`order/pay/${id}`, data)
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 订单状态
|
||||
*/
|
||||
export function orderStatusApi(data) {
|
||||
return request.get(`micropay_query`, { params: data })
|
||||
return request.get(`micropay_query`, { params: data })
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 订单列表
|
||||
*/
|
||||
export function orderListApi(data) {
|
||||
return request.get(`/order/retailOrder/merchant_order_list`, { params: data })
|
||||
return request.get(`/order/retailOrder/merchant_order_list`, { params: data })
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 核销订单列表
|
||||
*/
|
||||
export function verifierOrderListApi(id, code) {
|
||||
return request.get(`verifier/${id}/order/${code}`)
|
||||
export function verifierOrderListApi(data) {
|
||||
return request.get(`verifier/order`, { params: data })
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 未支付订单列表
|
||||
*/
|
||||
export function groupOrderListApi(id, data) {
|
||||
return request.get(`admin/${id}/group_order_list`, { params: data })
|
||||
return request.get(`admin/${id}/group_order_list`, { params: data })
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 提单
|
||||
*/
|
||||
export function orderLadingApi(data) {
|
||||
return request.get(`order_lading`, { params: data })
|
||||
return request.get(`order_lading`, { params: data })
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 核销
|
||||
*/
|
||||
export function verifierApi(mer_id, id, data) {
|
||||
return request.post(`verifier/${mer_id}/${id}`, data)
|
||||
export function verifierApi(store_id, id, data) {
|
||||
return request.post(`verifier/${store_id}/${id}`, data)
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 统计
|
||||
*/
|
||||
export function statisticsApi(mer_id, data) {
|
||||
return request.get(`admin/${mer_id}/statistics`, { params: data })
|
||||
export function statisticsApi(store_id, data) {
|
||||
return request.get(`admin/${store_id}/statistics`, { params: data })
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 统计列表
|
||||
*/
|
||||
export function orderPriceApi(mer_id, data) {
|
||||
return request.get(`admin/${mer_id}/order_price`, { params: data })
|
||||
export function orderPriceApi(store_id, data) {
|
||||
return request.get(`admin/${store_id}/order_price`, { params: data })
|
||||
}
|
||||
|
||||
|
||||
@ -111,47 +111,61 @@ export function orderPriceApi(mer_id, data) {
|
||||
* @description 收银订单列表
|
||||
*/
|
||||
export function saleOrderListApi(data) {
|
||||
return request.get(`/order/retailOrder/order_list`, { params: data })
|
||||
return request.get(`/store_order/StoreOrder/lists`, { params: data })
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 采购订单提交
|
||||
*/
|
||||
export function createOrderApi(data) {
|
||||
return request.post(`/order/OpurchaseOrder/createOrder`, { params: data })
|
||||
return request.post(`/order/OpurchaseOrder/createOrder`, { params: data })
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 订单商品列表
|
||||
*/
|
||||
export function cashierinfoListApi(data) {
|
||||
return request.get(`/order/cashierinfo/lists`, { params: data })
|
||||
return request.get(`/order/cashierinfo/lists`, { params: data })
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 订单详情
|
||||
*/
|
||||
export function cashierinfoDetailsApi(data) {
|
||||
return request.get(`/store_order/storeOrder/detail`, { params: data })
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 订单核销
|
||||
*/
|
||||
export function writeoffOrderApi(data) {
|
||||
return request.post(`/store_order/StoreOrder/writeoff_order`, data)
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 商户给用户添加地址
|
||||
*/
|
||||
export function merchantCreateApi(data) {
|
||||
return request.post(`/user/address/merchant_create`, data)
|
||||
return request.post(`/user/address/merchant_create`, data)
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 采购订单记录列表
|
||||
*/
|
||||
export function opurchaseOrderApi(data) {
|
||||
return request.get(`/order/OpurchaseOrder/lists`, { params: data })
|
||||
return request.get(`/order/OpurchaseOrder/lists`, { params: data })
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 采购订单子订单列表
|
||||
*/
|
||||
export function subOrdersListApi(data) {
|
||||
return request.get(`/order/OpurchaseOrder/sub_orders`, { params: 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 })
|
||||
return request.get(`/order/retailOrder/merchant_order_count`, { params: data })
|
||||
}
|
@ -97,7 +97,6 @@ const handleEnter = () => {
|
||||
return ElMessage.error("请输入正确的支付码");
|
||||
}
|
||||
orderCreateApi({
|
||||
address_id: "",
|
||||
key: form.value.key,
|
||||
cart_id: cart_id.value,
|
||||
pay_type: pay_type,
|
||||
@ -320,7 +319,6 @@ const cashBnt = () => {
|
||||
if (order_id.value) orderPay(order_id.value);
|
||||
else
|
||||
orderCreateApi({
|
||||
address_id: "",
|
||||
cart_id: cart_id.value,
|
||||
pay_type: "17", //现金支付 17
|
||||
})
|
||||
@ -457,7 +455,7 @@ onUnmounted(() => {
|
||||
</div>
|
||||
<div style="color: #999; padding: 2rem 0 0.3rem 0">应收金额(元):</div>
|
||||
<div style="color: #f5222d; padding-bottom: 2rem">
|
||||
¥<span style="font-size: 1.6rem">{{ form.total }}</span>
|
||||
¥<span style="font-size: 1.6rem">{{ form.pay_price }}</span>
|
||||
</div>
|
||||
<div
|
||||
v-loading="loading"
|
||||
|
@ -1,6 +1,6 @@
|
||||
const config = {
|
||||
url: import.meta.env.VITE_BASE_URL + '/api',
|
||||
upload: import.meta.env.VITE_BASE_URL + '/api/upload/image/field',
|
||||
url: import.meta.env.VITE_BASE_URL + '/store',
|
||||
upload: import.meta.env.VITE_BASE_URL + '/store/upload/image/field',
|
||||
}
|
||||
|
||||
export default config;
|
@ -13,7 +13,7 @@ const connection = new Push({
|
||||
});
|
||||
|
||||
// 浏览器监听user-1
|
||||
const user_channel = connection.subscribe(`store_merchant_${userStore.userInfo.merchant.mer_id}`);
|
||||
const user_channel = connection.subscribe(`store_merchant_${userStore.userInfo.store_id}`);
|
||||
// const user_channel = connection.subscribe(`store_merchant_${1}`);
|
||||
|
||||
// 当user-2频道有message事件的消息时
|
||||
@ -26,6 +26,9 @@ user_channel.on('message', function (data) {
|
||||
if(data?.content?.type=='store_merchant'&&data?.content?.msg=="您有一笔新的订单"){
|
||||
mitt.emit('new_order', data?.content);
|
||||
}
|
||||
if(data?.content?.type=='platform_print'){
|
||||
mitt.emit('platform_print', data?.content?.data);
|
||||
}
|
||||
} catch (error) {
|
||||
|
||||
}
|
||||
|
@ -15,156 +15,167 @@ const orderStore = useOrderStore();
|
||||
// }, 2000)
|
||||
|
||||
const setOrderCount = (e = 1) => {
|
||||
orderStore.setOrderCount(e)
|
||||
list.value.forEach(item=>{
|
||||
if(item.name == "order") item.count = e;
|
||||
})
|
||||
orderStore.setOrderCount(e)
|
||||
list.value.forEach(item => {
|
||||
if (item.name == "order") item.count = e;
|
||||
})
|
||||
};
|
||||
|
||||
let isPlaying = false;
|
||||
const newOrder = (e) => {
|
||||
merchantOrderCountApi().then((res) => {
|
||||
setOrderCount(res?.data?.order_count || 0);
|
||||
});
|
||||
ElMessage.success('您有新的订单');
|
||||
if (isPlaying) return; //正在播放时有新订单直接跳过播放
|
||||
// 创建音频对象
|
||||
var audio = new Audio("/src/assets/order.mp3");
|
||||
// 播放音频
|
||||
audio.play();
|
||||
isPlaying = true;
|
||||
// 添加ended事件监听器来检测播放结束
|
||||
audio.addEventListener('ended', function() {
|
||||
isPlaying = false;
|
||||
});
|
||||
// merchantOrderCountApi().then((res) => {
|
||||
// setOrderCount(res?.data?.order_count || 0);
|
||||
// });
|
||||
setOrderCount(0);
|
||||
ElMessage.success('您有新的订单');
|
||||
if (isPlaying) return; //正在播放时有新订单直接跳过播放
|
||||
// 创建音频对象
|
||||
var audio = new Audio("/src/assets/order.mp3");
|
||||
// 播放音频
|
||||
audio.play();
|
||||
isPlaying = true;
|
||||
// 添加ended事件监听器来检测播放结束
|
||||
audio.addEventListener('ended', function () {
|
||||
isPlaying = false;
|
||||
});
|
||||
};
|
||||
|
||||
setTimeout(() => {
|
||||
newOrder({
|
||||
msg: "您有一笔新的订单",
|
||||
});
|
||||
}, 2000);
|
||||
// setTimeout(() => {
|
||||
// newOrder({
|
||||
// msg: "您有一笔新的订单",
|
||||
// });
|
||||
// }, 2000);
|
||||
|
||||
const navTo = (name) => {
|
||||
router.push({ 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: +orderStore.orderCount,
|
||||
},
|
||||
{ name: "purchaseOrder", title: "采购订单", ico: "Van", count: 0 },
|
||||
{ name: "orderCount", title: "订单统计", ico: "DocumentRemove", count: 0 },
|
||||
{ name: "wallet", title: "余额提现", ico: "Wallet", count: 0 },
|
||||
// { name: "test", title: "打印", ico: "Tickets", count: 0 },
|
||||
{ name: "saleHome", title: "收银", ico: "Sell", count: 0 },
|
||||
{ name: "saleOrder", title: "收银订单", ico: "DataLine", count: 0 },
|
||||
{
|
||||
name: "order",
|
||||
title: "线上订单",
|
||||
ico: "DataAnalysis",
|
||||
count: 0,
|
||||
},
|
||||
{
|
||||
name: "convert",
|
||||
title: "订单核销",
|
||||
ico: "FullScreen",
|
||||
count: 0,
|
||||
},
|
||||
// { name: "purchaseOrder", title: "采购订单", ico: "Van", count: 0 },
|
||||
// { name: "orderCount", title: "订单统计", ico: "DocumentRemove", count: 0 },
|
||||
// { name: "wallet", title: "余额提现", ico: "Wallet", count: 0 },
|
||||
// { name: "test", title: "打印", ico: "Tickets", count: 0 },
|
||||
]);
|
||||
const aup = () => {
|
||||
let index = list.value.findIndex((item) => item.name == route.name);
|
||||
if (index == 0) index = list.value.length;
|
||||
if (index > 0) navTo(list.value[index - 1].name);
|
||||
let index = list.value.findIndex((item) => item.name == route.name);
|
||||
if (index == 0) index = list.value.length;
|
||||
if (index > 0) navTo(list.value[index - 1].name);
|
||||
};
|
||||
const adown = () => {
|
||||
let index = list.value.findIndex((item) => item.name == route.name);
|
||||
if (index == list.value.length - 1) index = -1;
|
||||
if (index < list.value.length - 1) navTo(list.value[index + 1].name);
|
||||
let index = list.value.findIndex((item) => item.name == route.name);
|
||||
if (index == list.value.length - 1) index = -1;
|
||||
if (index < list.value.length - 1) navTo(list.value[index + 1].name);
|
||||
};
|
||||
onMounted(() => {
|
||||
mitt.on("up", aup);
|
||||
mitt.on("down", adown);
|
||||
mitt.on("new_order", newOrder);
|
||||
mitt.on("set-order-count-zero", ()=>{
|
||||
setOrderCount(0);
|
||||
});
|
||||
merchantOrderCountApi().then((res) => {
|
||||
setOrderCount(res?.data?.order_count || 0);
|
||||
});
|
||||
mitt.on("up", aup);
|
||||
mitt.on("down", adown);
|
||||
mitt.on("new_order", newOrder);
|
||||
mitt.on("set-order-count-zero", () => {
|
||||
setOrderCount(0);
|
||||
});
|
||||
// merchantOrderCountApi().then((res) => {
|
||||
// setOrderCount(res?.data?.order_count || 0);
|
||||
// });
|
||||
setOrderCount(0)
|
||||
});
|
||||
|
||||
onUnmounted(() => {
|
||||
mitt.off("aup", aup);
|
||||
mitt.off("adown", adown);
|
||||
mitt.off("new_order", newOrder);
|
||||
mitt.on("set-order-count-zero");
|
||||
mitt.off("aup", aup);
|
||||
mitt.off("adown", adown);
|
||||
mitt.off("new_order", newOrder);
|
||||
mitt.on("set-order-count-zero");
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="my-card">
|
||||
<div
|
||||
v-for="item in list"
|
||||
:key="item.name"
|
||||
class="list-item"
|
||||
:class="{ active: route.name == item.name }"
|
||||
@click="navTo(item.name)"
|
||||
>
|
||||
<el-icon size="2rem">
|
||||
<component :is="item.ico" />
|
||||
</el-icon>
|
||||
<div>{{ item.title }}</div>
|
||||
<div v-if="item.count" class="badge">{{ item.count }}</div>
|
||||
<div class="my-card">
|
||||
<div v-for="item in list" :key="item.name" class="list-item" :class="{ active: route.name == item.name }"
|
||||
@click="navTo(item.name)">
|
||||
<el-icon size="2rem">
|
||||
<component :is="item.ico" />
|
||||
</el-icon>
|
||||
<div>{{ item.title }}</div>
|
||||
<div v-if="item.count" class="badge">{{ item.count }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.my-card {
|
||||
width: 100%;
|
||||
height: calc(100vh - 100px);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
padding-top: 1.5rem;
|
||||
overflow: auto;
|
||||
.list-item {
|
||||
width: 4.5rem;
|
||||
height: 4.5rem;
|
||||
border-radius: 0.7rem;
|
||||
cursor: pointer;
|
||||
width: 100%;
|
||||
height: calc(100vh - 100px);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
margin-bottom: 1.2rem;
|
||||
position: relative;
|
||||
padding-top: 1.5rem;
|
||||
overflow: auto;
|
||||
|
||||
&.active {
|
||||
background-color: #1890ff;
|
||||
transition: 300ms;
|
||||
.list-item {
|
||||
width: 4.5rem;
|
||||
height: 4.5rem;
|
||||
border-radius: 0.7rem;
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
margin-bottom: 1.2rem;
|
||||
position: relative;
|
||||
|
||||
&.active {
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 修改滚动条的样式 */
|
||||
::-webkit-scrollbar {
|
||||
display: none; /* 隐藏滚动条 */
|
||||
display: none;
|
||||
/* 隐藏滚动条 */
|
||||
}
|
||||
|
||||
/* 设置滚动条的轨道样式 */
|
||||
::-webkit-scrollbar-track {
|
||||
background-color: #f1f1f1; /* 设置轨道的背景色 */
|
||||
margin: 1.25rem 0;
|
||||
background-color: #f1f1f1;
|
||||
/* 设置轨道的背景色 */
|
||||
margin: 1.25rem 0;
|
||||
}
|
||||
|
||||
/* 设置滚动条的滑块样式 */
|
||||
::-webkit-scrollbar-thumb {
|
||||
background-color: #ccc; /* 设置滑块的背景色 */
|
||||
border-radius: 0.315rem; /* 设置滑块的圆角 */
|
||||
background-color: #ccc;
|
||||
/* 设置滑块的背景色 */
|
||||
border-radius: 0.315rem;
|
||||
/* 设置滑块的圆角 */
|
||||
}
|
||||
|
||||
/* 设置滚动条鼠标悬停时的滑块样式 */
|
||||
::-webkit-scrollbar-thumb:hover {
|
||||
background-color: #999; /* 设置鼠标悬停时滑块的背景色 */
|
||||
background-color: #999;
|
||||
/* 设置鼠标悬停时滑块的背景色 */
|
||||
}
|
||||
</style>
|
||||
|
@ -16,195 +16,223 @@ merInfo.value = userStore.userInfo;
|
||||
|
||||
const router = useRouter();
|
||||
const onLogout = () => {
|
||||
userStore.setUserInfo({});
|
||||
userStore.setToken("");
|
||||
router.push("/login");
|
||||
userStore.setUserInfo({});
|
||||
userStore.setToken("");
|
||||
router.push("/login");
|
||||
};
|
||||
|
||||
const onRefresh = () => {
|
||||
window.location.reload();
|
||||
window.location.reload();
|
||||
};
|
||||
|
||||
const dialogVisible = ref(false); //是否显示重新连接
|
||||
|
||||
// 连接打印机
|
||||
const connect = () => {
|
||||
console.log("连接打印机");
|
||||
uni.getEnv((res) => {
|
||||
if (res.h5) ElMessage.error("请使用APP连接打印机");
|
||||
else {
|
||||
printStore.setConnect(false);
|
||||
printStore.setPrintAddress('');
|
||||
dialogVisible.value = false;
|
||||
uni.postMessage({
|
||||
data: {
|
||||
type: "connect",
|
||||
},
|
||||
});
|
||||
}
|
||||
});
|
||||
console.log("连接打印机");
|
||||
uni.getEnv((res) => {
|
||||
if (res.h5) ElMessage.error("请使用APP连接打印机");
|
||||
else {
|
||||
printStore.setConnect(false);
|
||||
printStore.setPrintAddress('');
|
||||
dialogVisible.value = false;
|
||||
uni.postMessage({
|
||||
data: {
|
||||
type: "connect",
|
||||
},
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
let isPrint = false; //是否正在打印小票
|
||||
// 预打印
|
||||
const printReceipt = (content = "") => {
|
||||
console.log("预打印");
|
||||
console.log(printTicket(content, true));
|
||||
if (isPrint) return;
|
||||
isPrint = true;
|
||||
uni.getEnv((res) => {
|
||||
if (res.h5) {
|
||||
ElMessage.error("请使用APP打印小票");
|
||||
isPrint = false;
|
||||
} else {
|
||||
APPprint(content);
|
||||
setTimeout(() => {
|
||||
isPrint = false;
|
||||
}, 4000);
|
||||
}
|
||||
});
|
||||
console.log("预打印");
|
||||
console.log(printTicket(content, true));
|
||||
if (isPrint) return;
|
||||
isPrint = true;
|
||||
uni.getEnv((res) => {
|
||||
if (res.h5) {
|
||||
ElMessage.error("请使用APP打印小票");
|
||||
isPrint = false;
|
||||
} else {
|
||||
APPprint(content);
|
||||
setTimeout(() => {
|
||||
isPrint = false;
|
||||
}, 4000);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
// 小程序订单-预打印
|
||||
const letPrintReceipt = (content = "") => {
|
||||
console.log("预打印");
|
||||
let str = printTicket(content, true)
|
||||
console.log(str);
|
||||
if (isPrint) return;
|
||||
isPrint = true;
|
||||
uni.getEnv((res) => {
|
||||
if (res.h5) {
|
||||
ElMessage.error("请使用APP打印小票");
|
||||
isPrint = false;
|
||||
} else {
|
||||
APPprint(str);
|
||||
setTimeout(() => {
|
||||
isPrint = false;
|
||||
}, 4000);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
|
||||
// APP打印
|
||||
const APPprint = (content = "") => {
|
||||
let str = "";
|
||||
if (content === "") {
|
||||
str = printTicket({}, true); //打印自检
|
||||
console.log(str);
|
||||
} else str = content;
|
||||
uni.postMessage({
|
||||
data: {
|
||||
type: "print",
|
||||
content: str,
|
||||
},
|
||||
});
|
||||
let str = "";
|
||||
if (content === "") {
|
||||
str = printTicket({}, true); //打印自检
|
||||
console.log(str);
|
||||
} else str = content;
|
||||
uni.postMessage({
|
||||
data: {
|
||||
type: "print",
|
||||
content: str,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
onMounted(() => {
|
||||
mitt.on("printReceipt", printReceipt);
|
||||
// 监听消息
|
||||
window.addEventListener(
|
||||
"message",
|
||||
function (event) {
|
||||
// alert(JSON.stringify(event.data));
|
||||
if (event.data.type === "connect") {
|
||||
let str = event.data.data.address;
|
||||
printStore.setConnect(true);
|
||||
printStore.setPrintAddress(str);
|
||||
ElMessage.success("已连接打印机T58("+str+")");
|
||||
}
|
||||
},
|
||||
false
|
||||
);
|
||||
mitt.on("printReceipt", printReceipt);
|
||||
mitt.on("letPrintReceipt", letPrintReceipt);
|
||||
// 监听消息
|
||||
window.addEventListener(
|
||||
"message",
|
||||
function (event) {
|
||||
// alert(JSON.stringify(event.data));
|
||||
if (event.data.type === "connect") {
|
||||
let str = event.data.data.address;
|
||||
printStore.setConnect(true);
|
||||
printStore.setPrintAddress(str);
|
||||
ElMessage.success("已连接打印机T58(" + str + ")");
|
||||
}
|
||||
},
|
||||
false
|
||||
);
|
||||
});
|
||||
|
||||
onUnmounted(() => {
|
||||
mitt.off("printReceipt", printReceipt);
|
||||
mitt.off("printReceipt", printReceipt);
|
||||
mitt.off("letPrintReceipt", letPrintReceipt);
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="my-card">
|
||||
<div class="card-header">
|
||||
<div style="width: 4.5rem">
|
||||
<el-image
|
||||
style="height: 2.5rem; width: 2.5rem; margin: 0 auto"
|
||||
src="https://lihai001.oss-cn-chengdu.aliyuncs.com/def/12c93202404101530591311.png"
|
||||
></el-image>
|
||||
</div>
|
||||
<div class="card-title">泸优采收银系统</div>
|
||||
<div
|
||||
style="
|
||||
<div class="my-card">
|
||||
<div class="card-header">
|
||||
<div style="width: 4.5rem">
|
||||
<el-image style="height: 2.5rem; width: 2.5rem; margin: 0 auto"
|
||||
src="https://lihai001.oss-cn-chengdu.aliyuncs.com/def/12c93202404101530591311.png"></el-image>
|
||||
</div>
|
||||
<div class="card-title">泸优采收银系统</div>
|
||||
<div style="
|
||||
margin-left: 1rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
cursor: pointer;
|
||||
"
|
||||
>
|
||||
<el-icon color="#fff" size="18" @click="onRefresh"><Refresh /></el-icon>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div style="margin-right: 1rem">
|
||||
<el-button @click="mitt.emit('printReceipt')" type="primary">
|
||||
<span>打印自检</span>
|
||||
</el-button>
|
||||
</div>
|
||||
<div style="margin-right: 1rem" v-if="!printStore.is_connect||!printStore.printAddress">
|
||||
<el-button @click="connect" type="warning">
|
||||
<span>点击自动连接打印机</span>
|
||||
</el-button>
|
||||
</div>
|
||||
<div style="margin-right: 1rem;font-size: 0.9rem;" v-else @click="dialogVisible = true">
|
||||
<div>已连接打印机T58</div>
|
||||
<div style="font-size: 0.7rem;color: #ccc;">({{ printStore.printAddress }})</div>
|
||||
</div>
|
||||
<el-dialog v-model="dialogVisible" title="提示" width="500">
|
||||
<span>打印机已连接,是否重新连接</span>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button @click="dialogVisible = false">取消</el-button>
|
||||
<el-button type="primary" @click="connect"> 重新连接 </el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
<el-dropdown trigger="hover">
|
||||
<div class="el-dropdown-link">
|
||||
<el-avatar :src="merInfo.avatar" icon="user-filled" />
|
||||
<div class="info">
|
||||
<div>
|
||||
{{ merInfo.merchant.mer_name }}
|
||||
">
|
||||
<el-icon color="#fff" size="18" @click="onRefresh">
|
||||
<Refresh />
|
||||
</el-icon>
|
||||
</div>
|
||||
<div>{{ merInfo.merchant.service_phone }}</div>
|
||||
</div>
|
||||
<el-icon class="el-icon--right">
|
||||
<arrow-down />
|
||||
</el-icon>
|
||||
</div>
|
||||
<template #dropdown>
|
||||
<el-dropdown-menu>
|
||||
<el-dropdown-item @click="onLogout">退出登录</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</template>
|
||||
</el-dropdown>
|
||||
<div class="card-body">
|
||||
<div style="margin-right: 1rem">
|
||||
<el-button @click="mitt.emit('letPrintReceipt')" type="primary">
|
||||
<span>打印自检</span>
|
||||
</el-button>
|
||||
</div>
|
||||
<div style="margin-right: 1rem" v-if="!printStore.is_connect || !printStore.printAddress">
|
||||
<el-button @click="connect" type="warning">
|
||||
<span>点击自动连接打印机</span>
|
||||
</el-button>
|
||||
</div>
|
||||
<div style="margin-right: 1rem;font-size: 0.9rem;" v-else @click="dialogVisible = true">
|
||||
<div>已连接打印机T58</div>
|
||||
<div style="font-size: 0.7rem;color: #ccc;">({{ printStore.printAddress }})</div>
|
||||
</div>
|
||||
<el-dialog v-model="dialogVisible" title="提示" width="500">
|
||||
<span>打印机已连接,是否重新连接</span>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button @click="dialogVisible = false">取消</el-button>
|
||||
<el-button type="primary" @click="connect"> 重新连接 </el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
<el-dropdown trigger="hover">
|
||||
<div class="el-dropdown-link">
|
||||
<el-avatar :src="merInfo.avatar" icon="user-filled" />
|
||||
<div class="info">
|
||||
<div>
|
||||
{{ merInfo.name }}
|
||||
</div>
|
||||
<div>({{ merInfo.role_name }})</div>
|
||||
</div>
|
||||
<el-icon class="el-icon--right">
|
||||
<arrow-down />
|
||||
</el-icon>
|
||||
</div>
|
||||
<template #dropdown>
|
||||
<el-dropdown-menu>
|
||||
<el-dropdown-item @click="onLogout">退出登录</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</template>
|
||||
</el-dropdown>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.my-card {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
.card-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
.card-title {
|
||||
font-size: 1.6rem;
|
||||
}
|
||||
}
|
||||
.card-body {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
.el-dropdown-link {
|
||||
width: auto;
|
||||
display: flex;
|
||||
color: #fff;
|
||||
align-items: center;
|
||||
.info {
|
||||
margin: 0 0.5rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-around;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
|
||||
.card-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
.card-title {
|
||||
font-size: 1.6rem;
|
||||
}
|
||||
}
|
||||
|
||||
.card-body {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
|
||||
.el-dropdown-link {
|
||||
width: auto;
|
||||
display: flex;
|
||||
color: #fff;
|
||||
align-items: center;
|
||||
|
||||
.info {
|
||||
margin: 0 0.5rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-around;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.el-dropdown {
|
||||
border: none;
|
||||
border: none;
|
||||
}
|
||||
</style>
|
||||
|
@ -47,6 +47,12 @@ const routes = [
|
||||
meta: { title: '提现' },
|
||||
component: () => import('@/views/wallet/index.vue'),
|
||||
},
|
||||
{
|
||||
path: '/convert',
|
||||
name: 'convert',
|
||||
meta: { title: '订单核销' },
|
||||
component: () => import('@/views/convert/index.vue'),
|
||||
},
|
||||
{
|
||||
path: '/test',
|
||||
name: 'test',
|
||||
|
@ -1,63 +1,141 @@
|
||||
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" //小计
|
||||
// }
|
||||
// ]
|
||||
// }
|
||||
|
||||
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: [
|
||||
"id": 119,
|
||||
"store_id": 5,
|
||||
"staff_id": 0,
|
||||
"order_id": "PF1717833856721652",
|
||||
"pid": null,
|
||||
"uid": 0,
|
||||
"real_name": "",
|
||||
"user_phone": "",
|
||||
"user_address": "",
|
||||
"cart_id": "79",
|
||||
"freight_price": "0.00",
|
||||
"total_num": 1,
|
||||
"total_price": "0.00",
|
||||
"total_postage": "0.00",
|
||||
"pay_price": "0.00",
|
||||
"cost": "0.00",
|
||||
"profit": "0.00",
|
||||
"earnings": "0.00",
|
||||
"vip_price": "0.00",
|
||||
"pay_postage": "0.00",
|
||||
"deduction_price": "0.00",
|
||||
"coupon_id": 0,
|
||||
"coupon_price": "0.00",
|
||||
"paid": 1,
|
||||
"pay_time": 1717833856,
|
||||
"pay_type": "现金支付",
|
||||
"status": 2,
|
||||
"refund_status": 0,
|
||||
"refund_type": 0,
|
||||
"refund_express": "",
|
||||
"refund_reason_wap_img": null,
|
||||
"refund_reason_wap_explain": "",
|
||||
"refund_reason_time": 0,
|
||||
"refund_cancle_time": null,
|
||||
"refund_reason_wap": "",
|
||||
"refund_reason": "",
|
||||
"refund_num": 0,
|
||||
"refund_price": "0.00",
|
||||
"delivery_name": "",
|
||||
"delivery_code": "",
|
||||
"delivery_type": "",
|
||||
"delivery_id": "",
|
||||
"fictitious_content": "",
|
||||
"delivery_uid": 0,
|
||||
"mark": "",
|
||||
"remark": "",
|
||||
"mer_id": 0,
|
||||
"verify_code": "6-1717833856",
|
||||
"shipping_type": 2,
|
||||
"reservation": 0,
|
||||
"reservation_time": null,
|
||||
"is_writeoff": 1,
|
||||
"is_remind": 0,
|
||||
"create_time": "2024-06-08 16:04:16",
|
||||
"update_time": "2024-06-08 16:56:23",
|
||||
"delete_time": null,
|
||||
"system_store_name": "新店",
|
||||
"system_store_phone": "15699996666",
|
||||
"staff_name": "新店阿萨",
|
||||
"staff_phone": "15699996666",
|
||||
"nickname": "",
|
||||
"user_mobile": "",
|
||||
"info": [
|
||||
{
|
||||
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" //小计
|
||||
"store_id": 5,
|
||||
"product_id": 30,
|
||||
"cart_num": 1,
|
||||
"price": null,
|
||||
"total_price": null,
|
||||
"unit_name": "只",
|
||||
"store_name": "1"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
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";
|
||||
if(!obj || !obj.order_id) obj = testObj;
|
||||
str += Esc.Size2(0) + Esc.Center() + Esc.boldFontOn() + obj.system_store_name + "\n";
|
||||
str += Esc.fillLine(" ") + Esc.boldFontOff() + "\n";
|
||||
str += Esc.Left() + "单号: " + obj.number + "\n";
|
||||
str += Esc.Left() + "单号: " + obj.order_id + "\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";
|
||||
obj.info.forEach(item => {
|
||||
str += Esc.Left() + item.store_name + "\n";
|
||||
let total = +item.price || 0;
|
||||
total *= +item.cart_num;
|
||||
str += Esc.inline3(`${item.price || '0.00'}元`, `${item.cart_num}${item.unit_name}`, `${total}元`, " ", 1) + "\n";
|
||||
})
|
||||
|
||||
str += Esc.fillLine("=") + "\n";
|
||||
|
||||
str += Esc.Left() + "应付款: " + obj.total_price + "元" + "\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.Left() + "支付单号: " + obj.order_id + "\n";
|
||||
str += Esc.Left() + "联系电话: " + obj.system_store_phone + "\n";
|
||||
str += Esc.fillLine("=") + "\n";
|
||||
|
||||
// 票尾
|
||||
|
@ -1,11 +1,13 @@
|
||||
<script setup>
|
||||
import { nextTick, ref } from "vue";
|
||||
import { onMounted, onUnmounted, ref } from "vue";
|
||||
import {
|
||||
orderListApi,
|
||||
orderStatusApi,
|
||||
orderLadingApi,
|
||||
cartListApi,
|
||||
verifierApi,
|
||||
orderListApi,
|
||||
orderStatusApi,
|
||||
orderLadingApi,
|
||||
cartListApi,
|
||||
cashierinfoListApi,
|
||||
cashierinfoDetailsApi,
|
||||
writeoffOrderApi
|
||||
} from "@/api/store.js";
|
||||
import { useUserStore } from "@/store/user.js";
|
||||
import { ElMessage } from "element-plus";
|
||||
@ -16,12 +18,8 @@ import pay from "@/components/pay.vue";
|
||||
const userStore = useUserStore();
|
||||
const router = useRouter();
|
||||
|
||||
const formData = ref({});
|
||||
mitt.on("set-order-detail", (res) => {
|
||||
formData.value = res;
|
||||
nextTick(()=>{
|
||||
tableRef.value?.toggleAllSelection();
|
||||
})
|
||||
const formData = ref({
|
||||
id: "",
|
||||
});
|
||||
|
||||
const list = ref([]);
|
||||
@ -36,361 +34,259 @@ const activeStoreList = ref(["商品信息", "订单详情"]);
|
||||
const orderLadingSn = ref("");
|
||||
const dialogVisible = ref(false);
|
||||
const orderLadingComfirm = (order_sn) => {
|
||||
orderLadingSn.value = order_sn;
|
||||
dialogVisible.value = true;
|
||||
orderLadingSn.value = order_sn;
|
||||
dialogVisible.value = true;
|
||||
};
|
||||
const orderLading = () => {
|
||||
dialogVisible.value = false;
|
||||
orderLadingApi({
|
||||
order_sn: orderLadingSn.value,
|
||||
}).then((res) => {
|
||||
ElMessage({
|
||||
message: res.message,
|
||||
type: "success",
|
||||
dialogVisible.value = false;
|
||||
orderLadingApi({
|
||||
order_sn: orderLadingSn.value,
|
||||
staff_id: userStore.userInfo.service.service_id,
|
||||
}).then((res) => {
|
||||
ElMessage({
|
||||
message: res.message,
|
||||
type: "success",
|
||||
});
|
||||
router.push({
|
||||
name: "home",
|
||||
});
|
||||
});
|
||||
router.push({
|
||||
name: "home",
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
const rePay = (row) => {
|
||||
payRef.value.setRePay({
|
||||
price: row.pay_price,
|
||||
order_id: row.group_order_id,
|
||||
});
|
||||
payRef.value.drawer = true;
|
||||
payRef.value.setRePay({
|
||||
price: row.pay_price,
|
||||
order_id: row.group_order_id,
|
||||
});
|
||||
payRef.value.drawer = true;
|
||||
};
|
||||
|
||||
const getOrderStatus = (id) => {
|
||||
orderStatusApi({
|
||||
order_sn: id,
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.data.paid == 1 || res.message == "支付成功") {
|
||||
ElMessage({
|
||||
message: res.message,
|
||||
type: "success",
|
||||
});
|
||||
} else {
|
||||
ElMessage({
|
||||
message: res.message,
|
||||
type: "error",
|
||||
});
|
||||
}
|
||||
orderStatusApi({
|
||||
order_sn: id,
|
||||
})
|
||||
.catch((err) => {});
|
||||
.then((res) => {
|
||||
if (res.data.paid == 1 || res.message == "支付成功") {
|
||||
ElMessage({
|
||||
message: res.message,
|
||||
type: "success",
|
||||
});
|
||||
mitt.emit("update-sale-order-detail", {});
|
||||
formData.value.paid = 1;
|
||||
} else {
|
||||
ElMessage({
|
||||
message: res.message,
|
||||
type: "error",
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch((err) => { });
|
||||
};
|
||||
|
||||
const emit = defineEmits(['reInit'])
|
||||
const tableRef = ref(null);
|
||||
// 核销
|
||||
const convert = ()=>{
|
||||
let tableList = tableRef.value.getSelectionRows();
|
||||
if(tableList.length == 0){
|
||||
return ElMessage.error('请选择核销商品');
|
||||
}
|
||||
let query = {
|
||||
data: [],
|
||||
verify_code: formData.value.verify_code
|
||||
}
|
||||
tableList.forEach(item => {
|
||||
query.data.push({
|
||||
id: item.order_product_id,
|
||||
num: item.product_num
|
||||
const where = ref({
|
||||
page_no: 1,
|
||||
page_size: 15,
|
||||
loadend: false,
|
||||
loading: false,
|
||||
});
|
||||
const goods_list = ref([]);
|
||||
const getOrderList = () => {
|
||||
console.log("触底");
|
||||
if (formData.value.id && !where.value.loadend) {
|
||||
console.log("加载");
|
||||
where.value.loading = true;
|
||||
cashierinfoListApi({
|
||||
pid: formData.value.id,
|
||||
page_no: where.value.page_no,
|
||||
page_size: where.value.page_size,
|
||||
}).then((res) => {
|
||||
goods_list.value = [...goods_list.value, ...res.data.lists];
|
||||
if (res.data.lists.length < where.value.page_size)
|
||||
where.value.loadend = true;
|
||||
where.value.loading = false;
|
||||
where.value.page_no++;
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
const getDetail = () => {
|
||||
loading.value = true;
|
||||
cashierinfoDetailsApi({
|
||||
id: formData.value.id,
|
||||
}).then(res => {
|
||||
formData.value = res.data;
|
||||
setTimeout(() => {
|
||||
loading.value = false;
|
||||
}, 200)
|
||||
})
|
||||
});
|
||||
verifierApi(userStore.userInfo.service.mer_id, formData.value.order_id, query).then(res=>{
|
||||
ElMessage.success(res.message);
|
||||
emit('reInit');
|
||||
}).catch(err=>{
|
||||
ElMessage.error(err.message)
|
||||
})
|
||||
}
|
||||
|
||||
const convert = ()=>{
|
||||
writeoffOrderApi({
|
||||
verify_code: formData.value.verify_code
|
||||
}).then(res=>{
|
||||
formData.value.verify_code = 1;
|
||||
})
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
mitt.on("set-sale-order-detail", (res) => {
|
||||
console.log("===", res);
|
||||
formData.value = res;
|
||||
where.value.page_no = 1;
|
||||
where.value.loadend = false;
|
||||
where.value.loading = false;
|
||||
goods_list.value = [];
|
||||
// getDetail();
|
||||
// getOrderList();
|
||||
});
|
||||
});
|
||||
|
||||
onUnmounted(() => {
|
||||
mitt.off("set-sale-order-detail");
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="my-order">
|
||||
<div class="header-nav">
|
||||
<div
|
||||
v-for="(item, index) in activeStoreList"
|
||||
:key="index"
|
||||
class="nav-item"
|
||||
:class="{
|
||||
'nav-item-active': activeStore == index,
|
||||
'nav-item-radius1': activeStore == index + 1,
|
||||
'nav-item-radius2': activeStore == index - 1,
|
||||
}"
|
||||
@click="activeStore = index"
|
||||
>
|
||||
{{ item }}
|
||||
</div>
|
||||
<div
|
||||
class="nav-item"
|
||||
:class="{
|
||||
'nav-item-radius2': activeStore == activeStoreList.length - 1,
|
||||
}"
|
||||
style="flex: 1"
|
||||
></div>
|
||||
<div class="my-order">
|
||||
<div class="detail" v-if="formData.id" v-loading="loading">
|
||||
<div class="table" v-infinite-scroll="getOrderList" :infinite-scroll-distance="300"
|
||||
:infinite-scroll-delay="300" style="overflow: auto" :infinite-scroll-immediate="false">
|
||||
<div class="table-title">订单信息</div>
|
||||
<div class="table-info">
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">订单编号:</div>
|
||||
<div class="info-item-info">{{ formData.order_id }}</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">商品款数:</div>
|
||||
<div class="info-item-info">{{ formData.total_num || 0 }}</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">商品总价:</div>
|
||||
<div class="info-item-info">¥{{ formData.total_price }}</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">创建时间:</div>
|
||||
<div class="info-item-info">{{ formData.pay_time }}</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">优惠抵扣:</div>
|
||||
<div class="info-item-info">¥{{ formData.deduction_price }}</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">实际支付:</div>
|
||||
<div class="info-item-info">¥{{ formData.pay_price }}</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">支付时间:</div>
|
||||
<div class="info-item-info">{{ formData.pay_time }}</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">支付方式:</div>
|
||||
<div class="info-item-info">
|
||||
<span v-if="formData.pay_type == 9">微信收款</span>
|
||||
<span v-if="formData.pay_type == 17">现金支付</span>
|
||||
<span v-if="formData.pay_type == 13">支付宝收款</span>
|
||||
<span v-if="formData.pay_type == 3">余额支付</span>
|
||||
<span v-if="formData.pay_type == 1">微信支付</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="font-size: 0.9rem">
|
||||
共计
|
||||
<span style="color: #ff4a00">{{ formData.product?.length || " " }}</span> 款商品
|
||||
</div>
|
||||
<el-table :data="formData.product">
|
||||
<el-table-column label="商品信息">
|
||||
<template #default="{ row }">
|
||||
<div style="display: flex; align-items: center">
|
||||
<el-image style="height: 3rem; width: 3rem" :src="row.cart_info?.image"></el-image>
|
||||
<span style="margin-left: 0.5rem">{{ row.cart_info?.name }}</span>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="cart_info.price" label="单价" width="150" />
|
||||
<el-table-column prop="cart_info.cart_num" label="数量" width="150" />
|
||||
<el-table-column prop="cart_info.total" label="总价" width="150">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="footer">
|
||||
<el-button v-if="formData.is_writeoff==0" type="primary" size="large" :disabled="formData.is_writeoff" @click="convert">立即核销</el-button>
|
||||
<div v-else>该订单已核销</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>
|
||||
<el-empty description="没找到核销订单信息"></el-empty>
|
||||
</div>
|
||||
</div>
|
||||
<div class="detail" v-loading="loading">
|
||||
<div class="table" v-if="formData.orderProduct && activeStore == 0">
|
||||
<div style="font-size: 0.9rem">
|
||||
共计
|
||||
<span style="color: #ff4a00">{{ formData.total_num }}</span> 件商品
|
||||
</div>
|
||||
<el-table
|
||||
style="height: calc(100vh - 100px - 14rem)"
|
||||
:data="formData.orderProduct"
|
||||
ref="tableRef"
|
||||
>
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column prop="cart_info.product.store_name" label="商品信息">
|
||||
<template #default="{ row }">
|
||||
<div style="display: flex; align-items: center">
|
||||
<el-image
|
||||
style="height: 3rem; width: 3rem"
|
||||
:src="
|
||||
row.cart_info.productAttr.image ||
|
||||
row.cart_info.product.image
|
||||
"
|
||||
></el-image>
|
||||
<span style="margin-left: 0.5rem">{{
|
||||
row.cart_info.product.store_name
|
||||
}}</span>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="cart_info.productAttr.price"
|
||||
label="单价"
|
||||
width="150"
|
||||
/>
|
||||
<el-table-column prop="product_num" label="数量" width="180">
|
||||
<template #default="{ row }">
|
||||
<el-input-number v-model="row.product_num" step-strictly :max="row.refund_num" :min="1" :step="1" size="small"></el-input-number>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="total_price" label="总价" width="150" />
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="table" v-if="formData.orderProduct && activeStore == 1">
|
||||
<div class="table-title">订单信息</div>
|
||||
<div class="table-info">
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">创建时间:</div>
|
||||
<div class="info-item-info">{{ formData.create_time }}</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">商品总数:</div>
|
||||
<div class="info-item-info">{{ formData.total_num }}</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">商品总价:</div>
|
||||
<div class="info-item-info">¥{{ formData.total_price }}</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">支付时间:</div>
|
||||
<div class="info-item-info">{{ formData.pay_time }}</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">优惠抵扣:</div>
|
||||
<div class="info-item-info">¥{{ formData.deduction_price }}</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">实际支付:</div>
|
||||
<div class="info-item-info">¥{{ formData.pay_price }}</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">支付方式:</div>
|
||||
<div class="info-item-info">
|
||||
<span v-if="formData.pay_type == 11">微信收款</span>
|
||||
<span v-if="formData.pay_type == 12">现金支付</span>
|
||||
<span v-if="formData.pay_type == 13">支付宝收款</span>
|
||||
<span v-if="formData.pay_type == 0">余额支付</span>
|
||||
<span v-if="formData.pay_type == 1">微信支付</span>
|
||||
<span v-if="formData.pay_type == 9">商户余额支付</span>
|
||||
<span v-if="formData.pay_type == 10">对公转账</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-title" v-if="formData.service_info">收银员信息</div>
|
||||
<div
|
||||
class="table-info"
|
||||
v-if="formData.service_info"
|
||||
style="flex-direction: column"
|
||||
>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">头像:</div>
|
||||
<div class="info-item-info">
|
||||
<el-image
|
||||
style="height: 4rem; width: 4rem; border-radius: 50%"
|
||||
:src="formData.service_info.avatar"
|
||||
></el-image>
|
||||
</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">昵称:</div>
|
||||
<div class="info-item-info">
|
||||
{{ formData.service_info.nickname }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">账号:</div>
|
||||
<div class="info-item-info">
|
||||
{{ formData.service_info.account }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
<div class="info">
|
||||
<!-- <div class="ser">收银员: {{ formData.service_info.nickname }}</div> -->
|
||||
<div class="price">
|
||||
实付: <span>¥{{ formData.pay_price }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="handle" v-if="formData.verify_status==0">
|
||||
<el-button class="btn" type="warning" @click="convert"
|
||||
>核销</el-button
|
||||
>
|
||||
</div>
|
||||
<div class="handle" v-else>已支付</div>
|
||||
</div>
|
||||
</div>
|
||||
<pay ref="payRef" />
|
||||
<el-dialog v-model="dialogVisible" title="提示" width="500">
|
||||
<span
|
||||
>提单前请清空购物车, 避免提单的商品与购物车商品混合,
|
||||
请确保购物车内无数据后再进行提单</span
|
||||
>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button @click="dialogVisible = false">取消</el-button>
|
||||
<el-button v-if="cartCount > 0" @click="goHome">
|
||||
前去清空购物车
|
||||
</el-button>
|
||||
<el-button v-else type="primary" @click="orderLading">
|
||||
确认提单
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.my-order {
|
||||
border-radius: 1.2rem;
|
||||
height: 100%;
|
||||
flex: 1;
|
||||
background-color: #fff;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
|
||||
.header-nav {
|
||||
display: flex;
|
||||
background: linear-gradient(
|
||||
to bottom,
|
||||
#f5f5f5 50%,
|
||||
#fff 50%
|
||||
); /* 创建渐变背景 */
|
||||
.nav-item {
|
||||
height: 4rem;
|
||||
width: 8rem;
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
font-size: 1.2rem;
|
||||
background-color: #f5f5f5;
|
||||
border-radius: 1rem 1rem 0 0;
|
||||
}
|
||||
.nav-item-active {
|
||||
background-color: #fff;
|
||||
position: relative;
|
||||
transition: 300ms;
|
||||
}
|
||||
.nav-item-radius1 {
|
||||
border-radius: 0 0 1rem 0;
|
||||
}
|
||||
.nav-item-radius2 {
|
||||
border-radius: 0 0 0 1rem;
|
||||
}
|
||||
}
|
||||
.detail {
|
||||
height: calc(100vh - 100px - 4rem);
|
||||
box-sizing: border-box;
|
||||
border-radius: 1.2rem;
|
||||
height: 100%;
|
||||
flex: 1;
|
||||
background-color: #fff;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
|
||||
.table {
|
||||
padding: 1rem;
|
||||
padding-bottom: 6rem;
|
||||
.detail {
|
||||
height: 100%;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
|
||||
.table-title {
|
||||
font-weight: bold;
|
||||
padding-top: 1rem;
|
||||
}
|
||||
.table-info {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
color: #777;
|
||||
font-size: 0.9rem;
|
||||
padding-bottom: 2rem;
|
||||
border-bottom: 1px solid #eee;
|
||||
.table {
|
||||
padding: 1rem;
|
||||
padding-bottom: 6rem;
|
||||
overflow-y: auto;
|
||||
height: 100%;
|
||||
|
||||
&:last-child {
|
||||
border-bottom: none;
|
||||
.table-title {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.table-info {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
color: #777;
|
||||
font-size: 0.9rem;
|
||||
padding-bottom: 1rem;
|
||||
margin-bottom: 1rem;
|
||||
border-bottom: 1px solid #eee;
|
||||
|
||||
&:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.info-item {
|
||||
width: 33%;
|
||||
display: flex;
|
||||
padding-top: 1rem;
|
||||
|
||||
.info-item-title {
|
||||
flex-shrink: 0;
|
||||
padding-right: 1rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.info-item {
|
||||
width: 33%;
|
||||
display: flex;
|
||||
padding-top: 1rem;
|
||||
.info-item-title {
|
||||
flex-shrink: 0;
|
||||
padding-right: 1rem;
|
||||
}
|
||||
.footer {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 6rem;
|
||||
box-sizing: border-box;
|
||||
background-color: #fff;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
padding: 0 2rem;
|
||||
border-top: 1px solid #eee;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.footer {
|
||||
height: 6rem;
|
||||
box-sizing: border-box;
|
||||
padding: 0 1.5rem;
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
box-shadow: 0 -1px 0.625rem #eee;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
background-color: #fff;
|
||||
.info {
|
||||
display: flex;
|
||||
align-items: flex-end;
|
||||
.ser {
|
||||
font-weight: bold;
|
||||
margin-right: 1rem;
|
||||
}
|
||||
.price {
|
||||
margin-right: 1rem;
|
||||
span {
|
||||
color: #ff4a00;
|
||||
font-size: 1.2rem;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
}
|
||||
.handle {
|
||||
.btn {
|
||||
border-radius: 4rem;
|
||||
padding: 1.2rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
@ -1,10 +1,11 @@
|
||||
<script setup>
|
||||
import { ref, watch } from "vue";
|
||||
import {
|
||||
verifierOrderListApi,
|
||||
orderStatusApi,
|
||||
orderLadingApi,
|
||||
cartListApi,
|
||||
saleOrderListApi,
|
||||
cashierinfoDetailsApi,
|
||||
orderStatusApi,
|
||||
orderLadingApi,
|
||||
cartListApi,
|
||||
} from "@/api/store.js";
|
||||
import { useUserStore } from "@/store/user.js";
|
||||
import { ElMessage } from "element-plus";
|
||||
@ -15,22 +16,10 @@ const userStore = useUserStore();
|
||||
|
||||
const list = ref([]);
|
||||
|
||||
const tabPosition = ref(1); // 1-全部, 2-未支付
|
||||
const changeTabPosition = (e) => {
|
||||
where.value.page_no = 1;
|
||||
loadEnd.value = false;
|
||||
loading.value = false;
|
||||
orderList.value = [];
|
||||
getOrderList(true);
|
||||
};
|
||||
|
||||
|
||||
const payRef = ref(null);
|
||||
|
||||
const where = ref({
|
||||
page_no: 1,
|
||||
page_size: 20,
|
||||
search_info: ''
|
||||
verify_code: ''
|
||||
});
|
||||
|
||||
|
||||
@ -40,258 +29,263 @@ const activeStore = ref(0);
|
||||
|
||||
const loadEnd = ref(false);
|
||||
const orderList = ref([]);
|
||||
const getOrderList = (reload=false) => {
|
||||
if(!where.value.search_info) return ElMessage.error("请输入订单编号");
|
||||
if(reload) where.value.page_no = 1;
|
||||
else if(loadEnd.value || loading.value) return;
|
||||
loading.value = true;
|
||||
if (tabPosition.value == 1) where.value.paid = null;
|
||||
if (tabPosition.value == 2) where.value.paid = 0;
|
||||
orderList.value = [];
|
||||
mitt.emit("set-order-detail", {});
|
||||
verifierOrderListApi(userStore.userInfo.service.mer_id, where.value.search_info).then((res) => {
|
||||
orderList.value = [res.data];
|
||||
mitt.emit("set-order-detail", orderList.value[0]);
|
||||
// if(reload) orderList.value = res.data.list;
|
||||
// else orderList.value = [...orderList.value, ...res.data.list];
|
||||
// if(res.data.list.length < where.value.page_size) loadEnd.value = true;
|
||||
// else where.value.page_no++;
|
||||
// activeStore.value = 0;
|
||||
// mitt.emit("set-order-detail", orderList.value[0]);
|
||||
// total.value = res.data.count;
|
||||
loading.value = false;
|
||||
}).catch(err=>{
|
||||
loadEnd.value = true;
|
||||
loading.value = false;
|
||||
});
|
||||
const getOrderList = (reload = false) => {
|
||||
cashierinfoDetailsApi(where.value)
|
||||
.then((res) => {
|
||||
orderList.value = [res.data];
|
||||
activeStore.value = 0;
|
||||
mitt.emit("set-sale-order-detail", orderList.value[0]);
|
||||
total.value = res.data.count;
|
||||
if(orderList.value[0].is_writeoff) {
|
||||
ElMessage.warning('订单已核销过')
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
});
|
||||
};
|
||||
|
||||
const setForm = (item, index) => {
|
||||
activeStore.value = index;
|
||||
mitt.emit("set-order-detail", item);
|
||||
activeStore.value = index;
|
||||
mitt.emit("set-order-detail", item);
|
||||
}
|
||||
|
||||
const setCode = (code)=>{
|
||||
where.value.search_info = code;
|
||||
getOrderList(true);
|
||||
const setCode = (code) => {
|
||||
where.value.verify_code = code;
|
||||
getOrderList(true);
|
||||
}
|
||||
|
||||
const emit = defineEmits(["backOne"]);
|
||||
|
||||
const backOne = ()=>{
|
||||
emit("backOne");
|
||||
const backOne = () => {
|
||||
emit("backOne");
|
||||
}
|
||||
|
||||
defineExpose({
|
||||
setCode,
|
||||
setCode,
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="my-order">
|
||||
<div class="header-nav">
|
||||
<div class="nav-item">核销订单</div>
|
||||
<div class="nav-item-clear">
|
||||
<el-button type="primary" size="small" @click="backOne">返回上一页</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="header-input">
|
||||
<el-input v-model="where.search_info" placeholder="请输入订单编号" @keydown.enter="getOrderList(true)" clearable>
|
||||
<template #append>
|
||||
<el-button
|
||||
type="primary"
|
||||
style="
|
||||
<div class="my-order">
|
||||
<div class="header-nav">
|
||||
<div class="nav-item">核销订单</div>
|
||||
<div class="nav-item-clear">
|
||||
<el-button type="primary" size="small" @click="backOne">返回上一页</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="header-input">
|
||||
<el-input v-model="where.verify_code" placeholder="请输入核销码" @keydown.enter="getOrderList(true)" clearable>
|
||||
<template #append>
|
||||
<el-button type="primary" style="
|
||||
background-color: #1890ff;
|
||||
color: #fff;
|
||||
border-radius: 0 0.315rem 0.315rem 0;
|
||||
"
|
||||
@click="getOrderList(true)"
|
||||
>搜索</el-button
|
||||
>
|
||||
</template>
|
||||
</el-input>
|
||||
</div>
|
||||
<div class="order-list" v-loading="loading" v-infinite-scroll="getOrderList"
|
||||
:infinite-scroll-distance="300"
|
||||
:infinite-scroll-delay="500"
|
||||
infinite-scroll-immediate="false"
|
||||
style="overflow: auto">
|
||||
<div class="item" :class="{'item-active': activeStore == index}" v-for="(item, index) in orderList" :key="index" @click="setForm(item, index)">
|
||||
<div class="top">
|
||||
<div class="sn" :class="item.pay_type===11 || item.pay_type===12 || item.pay_type===13 ? 'cahier' : 'cahier2'">单号: {{ item.order_sn }}</div>
|
||||
<div class="create-time">{{ item.create_time }}</div>
|
||||
" @click="getOrderList(true)">搜索</el-button>
|
||||
</template>
|
||||
</el-input>
|
||||
</div>
|
||||
<div class="shop">
|
||||
<div class="left" v-if="item.orderProduct">
|
||||
<el-image
|
||||
v-for="(shop, imgkey) in item.orderProduct.slice(0, 5)"
|
||||
:key="imgkey"
|
||||
:src="
|
||||
shop.cart_info.productAttr.image || shop.cart_info.product.image
|
||||
"
|
||||
class="shop-img"
|
||||
></el-image>
|
||||
<div v-if="item.orderProduct.length == 1" class="shop-name">
|
||||
{{ item.orderProduct[0].cart_info.product.store_name }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="right">
|
||||
<div class="money">¥{{ item.pay_price }}</div>
|
||||
<div class="count">共{{ item.total_num }}件商品</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="pay">
|
||||
<div v-if="item.paid">
|
||||
已支付
|
||||
<div class="order-lists" v-loading="loading" :infinite-scroll-distance="300" :infinite-scroll-delay="500"
|
||||
style="overflow: auto">
|
||||
<div class="item" :class="{ 'item-active': activeStore == index }" v-for="(item, index) in orderList"
|
||||
:key="index" @click="setForm(item, index)">
|
||||
<div class="top">
|
||||
<div class="sn" :class="'cahier'">单号: {{ item.order_id }}</div>
|
||||
<div class="create-time">{{ item.pay_time }}</div>
|
||||
</div>
|
||||
<div class="shop">
|
||||
<div class="left" v-if="item.product">
|
||||
<el-image v-for="(shop, imgkey) in item.product.slice(0, 5)" :key="imgkey" :src="shop.cart_info.image"
|
||||
class="shop-img"></el-image>
|
||||
<div v-if="item.product.length == 1" class="shop-name">
|
||||
{{ item.product[0].store_name }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="right">
|
||||
<div class="money">¥{{ item.pay_price }}</div>
|
||||
<div class="count">共{{ item.total_num }}款商品</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="pay">
|
||||
<div v-if="item.paid">
|
||||
{{ item.paid_name }}
|
||||
<span v-if="item.pay_type == 9">(微信收款)</span>
|
||||
<span v-if="item.pay_type == 17">(现金支付)</span>
|
||||
<span v-if="item.pay_type == 13">(支付宝收款)</span>
|
||||
<span v-if="item.pay_type == 12">(现金支付)</span>
|
||||
<span v-if="item.pay_type == 11">(微信收款)</span>
|
||||
<span v-if="item.pay_type == 0">(余额支付)</span>
|
||||
<span v-if="item.pay_type == 3">(余额支付)</span>
|
||||
<span v-if="item.pay_type == 1">(微信支付)</span>
|
||||
<span v-if="item.pay_type == 9">(商户余额支付)</span>
|
||||
<span v-if="item.pay_type == 10">(对公转账)</span>
|
||||
</div>
|
||||
<div v-else style="color: #ff4a00">{{ item.paid_name }}</div>
|
||||
</div>
|
||||
<!-- <div class="cashier" v-if="item.service_info">
|
||||
收银员: {{ item.service_info.nickname }}
|
||||
</div> -->
|
||||
<div class="cashier" v-if="item.is_writeoff==0">核销码:{{ item.verify_code }}</div>
|
||||
<div class="cashier" v-else style="color: #ff4a00">已核销:{{ item.verify_code }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else style="color: #ff4a00;">未支付</div>
|
||||
</div>
|
||||
<div class="cashier" v-if="item.service_info">收银员: {{ item.service_info.nickname }}</div>
|
||||
<div class="cashier" v-else>平台订单</div>
|
||||
<div v-if="loadEnd" class="load-end">没有更多了</div>
|
||||
<div v-if="loading" class="load-end">加载中...</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="loadEnd" class="load-end">没有更多了</div>
|
||||
<div v-if="loading" class="load-end">加载中...</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.my-order {
|
||||
border-radius: 1.2rem;
|
||||
height: 100%;
|
||||
background-color: #fff;
|
||||
width: 30rem;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
border-radius: 1.2rem;
|
||||
height: 100%;
|
||||
background-color: #fff;
|
||||
width: 30rem;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
|
||||
.header-nav {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: 1rem;
|
||||
height: 1.5rem;
|
||||
.header-nav {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: 1rem;
|
||||
height: 1.5rem;
|
||||
|
||||
span {
|
||||
color: #ff4a00;
|
||||
span {
|
||||
color: #ff4a00;
|
||||
}
|
||||
|
||||
.nav-item-clear {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-size: 0.8rem;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
.nav-item-clear {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-size: 0.8rem;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
.header-input {
|
||||
padding: 1rem;
|
||||
padding-top: 0;
|
||||
height: 2.5rem;
|
||||
border-bottom: 1px solid #eee;
|
||||
}
|
||||
.order-list {
|
||||
height: calc(100vh - 100px - 8.2rem);
|
||||
overflow-y: auto;
|
||||
.item {
|
||||
padding: 1rem;
|
||||
|
||||
.header-input {
|
||||
padding: 1rem;
|
||||
padding-top: 0;
|
||||
height: 2.5rem;
|
||||
border-bottom: 1px solid #eee;
|
||||
.top {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: flex-end;
|
||||
.sn {
|
||||
font-weight: bold;
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
.cahier{
|
||||
&::before {
|
||||
content: "收银";
|
||||
font-weight: 400;
|
||||
font-size: 0.7rem;
|
||||
padding: 0.1rem 0.1rem;
|
||||
margin-right: 0.2rem;
|
||||
border: 1px solid #2ec479;
|
||||
color: #2ec479;
|
||||
border-radius: 0.18rem;
|
||||
}
|
||||
}
|
||||
.cahier2{
|
||||
&::before {
|
||||
content: "平台";
|
||||
font-weight: 400;
|
||||
font-size: 0.7rem;
|
||||
padding: 0.1rem 0.1rem;
|
||||
margin-right: 0.2rem;
|
||||
border: 1px solid #ff4a00;
|
||||
color: #ff4a00;
|
||||
border-radius: 0.18rem;
|
||||
}
|
||||
}
|
||||
.create-time {
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
}
|
||||
.shop {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
.right {
|
||||
flex-shrink: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
.money {
|
||||
font-size: 1rem;
|
||||
color: #ff4a00;
|
||||
font-weight: bold;
|
||||
}
|
||||
.count {
|
||||
font-size: 0.7rem;
|
||||
color: #999;
|
||||
}
|
||||
}
|
||||
.left {
|
||||
height: 4.5rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
.shop-img {
|
||||
width: 3.5rem;
|
||||
height: 3.5rem;
|
||||
border-radius: 0.3rem;
|
||||
margin-right: 0.4rem;
|
||||
}
|
||||
.shop-name {
|
||||
font-size: 0.9rem;
|
||||
color: #333;
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
/* 将文本限制为三行 */
|
||||
-webkit-line-clamp: 3;
|
||||
}
|
||||
}
|
||||
}
|
||||
.bottom{
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
font-size: 0.9rem;
|
||||
color: #777;
|
||||
}
|
||||
}
|
||||
.item-active{
|
||||
background-color: #efefef;
|
||||
|
||||
.order-lists {
|
||||
height: calc(100vh - 100px - 10.2rem);
|
||||
overflow-y: auto;
|
||||
|
||||
.item {
|
||||
padding: 1rem;
|
||||
border-bottom: 1px solid #eee;
|
||||
|
||||
.top {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: flex-end;
|
||||
|
||||
.sn {
|
||||
font-weight: bold;
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
|
||||
.cahier {
|
||||
&::before {
|
||||
content: "收银";
|
||||
font-weight: 400;
|
||||
font-size: 0.7rem;
|
||||
padding: 0.1rem 0.1rem;
|
||||
margin-right: 0.2rem;
|
||||
border: 1px solid #2ec479;
|
||||
color: #2ec479;
|
||||
border-radius: 0.187rem;
|
||||
}
|
||||
}
|
||||
|
||||
.cahier2 {
|
||||
&::before {
|
||||
content: "平台";
|
||||
font-weight: 400;
|
||||
font-size: 0.7rem;
|
||||
padding: 0.1rem 0.1rem;
|
||||
margin-right: 0.2rem;
|
||||
border: 1px solid #ff4a00;
|
||||
color: #ff4a00;
|
||||
border-radius: 0.187rem;
|
||||
}
|
||||
}
|
||||
|
||||
.create-time {
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
}
|
||||
|
||||
.shop {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
||||
.right {
|
||||
flex-shrink: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
|
||||
.money {
|
||||
font-size: 1rem;
|
||||
color: #ff4a00;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.count {
|
||||
font-size: 0.7rem;
|
||||
color: #999;
|
||||
}
|
||||
}
|
||||
|
||||
.left {
|
||||
height: 4.5rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
.shop-img {
|
||||
width: 3.5rem;
|
||||
height: 3.5rem;
|
||||
border-radius: 0.3rem;
|
||||
margin-right: 0.4rem;
|
||||
}
|
||||
|
||||
.shop-name {
|
||||
font-size: 0.9rem;
|
||||
color: #333;
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
/* 将文本限制为三行 */
|
||||
-webkit-line-clamp: 3;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.bottom {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
font-size: 0.9rem;
|
||||
color: #777;
|
||||
|
||||
.manage-btn {
|
||||
color: #fff;
|
||||
background-color: #e6a23c;
|
||||
border-radius: 0.2rem;
|
||||
padding: 0 0.2rem;
|
||||
margin-left: 0.5rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.item-active {
|
||||
background-color: #efefef;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.load-end {
|
||||
text-align: center;
|
||||
padding: 1rem;
|
||||
color: #333;
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
}
|
||||
.load-end{
|
||||
text-align: center;
|
||||
padding: 1rem;
|
||||
color: #333;
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
}
|
||||
</style>, watch
|
||||
|
@ -91,6 +91,7 @@ onMounted(() => {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -36,7 +36,7 @@ const getStoreList = (data={}, reload=false) => {
|
||||
where.value.page_no = 1;
|
||||
loadEnd.value = false;
|
||||
}
|
||||
storeListApi(userStore.userInfo.service.mer_id, where.value).then((res) => {
|
||||
storeListApi(userStore.userInfo.service.store_id, where.value).then((res) => {
|
||||
if (res.data?.list?.length < where.value.page_size) loadEnd.value = true;
|
||||
let list = res.data.list.map((item) => {
|
||||
item.attr = Object.keys(item.sku);
|
||||
@ -69,15 +69,8 @@ function isAllDigits(str) {
|
||||
const cartAddInfo = (item, change = "") => {
|
||||
// console.log(item, change);
|
||||
let q = {
|
||||
is_new: 0,
|
||||
product_id: item.product_id,
|
||||
cart_num: 1,
|
||||
product_attr_unique:
|
||||
item.sku[change] !== undefined ? item.sku[change].unique : "",
|
||||
staff_id: userStore.userInfo.service.service_id,
|
||||
product_type: 0,
|
||||
// spread_id: this.currSpid,
|
||||
// sale_type: 1
|
||||
};
|
||||
cartCreateApi(q).then((res) => {
|
||||
orderRef.value.getList();
|
||||
|
@ -14,8 +14,7 @@ const pwdRef = ref(null);
|
||||
const formLogin = ref({
|
||||
account: "",
|
||||
password: "",
|
||||
terminal: 3,
|
||||
scene: 1,
|
||||
terminal: 1,
|
||||
});
|
||||
|
||||
const onLogin = () => {
|
||||
@ -32,7 +31,6 @@ const onLogin = () => {
|
||||
login(formLogin.value)
|
||||
.then((res) => {
|
||||
if (res.data?.token) {
|
||||
if(!res.data.merchant||!res.data.merchant.service_phone) return ElMessage.error("请先完善商户信息");
|
||||
userStore.setToken(res.data.token);
|
||||
userStore.setUserInfo(res.data);
|
||||
router.push("/");
|
||||
|
@ -6,6 +6,7 @@ import {
|
||||
orderLadingApi,
|
||||
cartListApi,
|
||||
cashierinfoListApi,
|
||||
cashierinfoDetailsApi
|
||||
} from "@/api/store.js";
|
||||
import { useUserStore } from "@/store/user.js";
|
||||
import { ElMessage } from "element-plus";
|
||||
@ -69,7 +70,7 @@ const getOrderStatus = (id) => {
|
||||
message: res.message,
|
||||
type: "success",
|
||||
});
|
||||
mitt.emit("update-c-order-detail", {});
|
||||
mitt.emit("update-sale-order-detail", {});
|
||||
formData.value.paid = 1;
|
||||
} else {
|
||||
ElMessage({
|
||||
@ -107,57 +108,64 @@ const getOrderList = () => {
|
||||
}
|
||||
};
|
||||
|
||||
const emit = defineEmits(["addAddress"]);
|
||||
const addAddress = (item) => {
|
||||
emit("addAddress", item);
|
||||
};
|
||||
const getDetail = () =>{
|
||||
loading.value = true;
|
||||
cashierinfoDetailsApi({
|
||||
id: formData.value.id,
|
||||
}).then(res=>{
|
||||
formData.value = res.data;
|
||||
setTimeout(()=>{
|
||||
loading.value = false;
|
||||
}, 200)
|
||||
})
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
mitt.on("set-c-order-detail", (res) => {
|
||||
mitt.on("set-sale-order-detail", (res) => {
|
||||
console.log("===",res);
|
||||
formData.value = res;
|
||||
where.value.page_no = 1;
|
||||
where.value.loadend = false;
|
||||
where.value.loading = false;
|
||||
goods_list.value = [];
|
||||
getOrderList();
|
||||
getDetail();
|
||||
// getOrderList();
|
||||
});
|
||||
});
|
||||
|
||||
onUnmounted(() => {
|
||||
mitt.off("set-c-order-detail");
|
||||
mitt.off("set-sale-order-detail");
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="my-order">
|
||||
<div class="detail" v-loading="loading">
|
||||
<div class="detail" v-if="formData.id" v-loading="loading">
|
||||
<div
|
||||
class="table"
|
||||
v-loading="loading"
|
||||
v-infinite-scroll="getOrderList"
|
||||
:infinite-scroll-distance="300"
|
||||
:infinite-scroll-delay="300"
|
||||
style="overflow: auto"
|
||||
v-if="formData?.id"
|
||||
:infinite-scroll-immediate="false"
|
||||
>
|
||||
<div class="table-title">订单信息</div>
|
||||
<div class="table-info">
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">订单编号:</div>
|
||||
<div class="info-item-info">{{ formData.number }}</div>
|
||||
<div class="info-item-info">{{ formData.order_id }}</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">商品款数:</div>
|
||||
<div class="info-item-info">{{ formData.goods_count }}</div>
|
||||
<div class="info-item-info">{{ formData.total_num || 0 }}</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">商品总价:</div>
|
||||
<div class="info-item-info">¥{{ formData.total }}</div>
|
||||
<div class="info-item-info">¥{{ formData.total_price }}</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">创建时间:</div>
|
||||
<div class="info-item-info">{{ formData.create_time }}</div>
|
||||
<div class="info-item-info">{{ formData.pay_time }}</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">优惠抵扣:</div>
|
||||
@ -165,74 +173,49 @@ onUnmounted(() => {
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">实际支付:</div>
|
||||
<div class="info-item-info">¥{{ formData.actual }}</div>
|
||||
<div class="info-item-info">¥{{ formData.pay_price }}</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">支付时间:</div>
|
||||
<div class="info-item-info">{{ formData.update_time }}</div>
|
||||
<div class="info-item-info">{{ formData.pay_time }}</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">支付方式:</div>
|
||||
<div class="info-item-info">
|
||||
<span v-if="formData.pay_type == 9">微信收款</span>
|
||||
<span v-if="formData.pay_type == 3">余额支付</span>
|
||||
<span v-if="formData.pay_type == 1">微信支付</span>
|
||||
<span v-if="formData.pay_type == 9">微信收款</span>
|
||||
<span v-if="formData.pay_type == 17">现金支付</span>
|
||||
<span v-if="formData.pay_type == 13">支付宝收款</span>
|
||||
<span v-if="formData.pay_type == 3">余额支付</span>
|
||||
<span v-if="formData.pay_type == 1">微信支付</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-title">收货人信息</div>
|
||||
<div
|
||||
class="table-info"
|
||||
v-if="formData.user_phone"
|
||||
style="flex-direction: column"
|
||||
>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">收货人:</div>
|
||||
<div class="info-item-info">
|
||||
{{ formData.real_name }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">联系方式:</div>
|
||||
<div class="info-item-info">
|
||||
{{ formData.user_phone }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">收货地址:</div>
|
||||
<div class="info-item-info">
|
||||
{{ formData.user_address }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else class="addAddress">
|
||||
<el-button type="primary" @click="addAddress(formData)" size="large"
|
||||
>点击添加收货地址</el-button
|
||||
>
|
||||
</div>
|
||||
<div style="font-size: 0.9rem">
|
||||
共计
|
||||
<span style="color: #ff4a00">{{ formData.goods_count }}</span> 款商品
|
||||
<span style="color: #ff4a00">{{ formData.product?.length || " " }}</span> 款商品
|
||||
</div>
|
||||
<el-table :data="goods_list">
|
||||
<el-table :data="formData.product">
|
||||
<el-table-column label="商品信息">
|
||||
<template #default="{ row }">
|
||||
<div style="display: flex; align-items: center">
|
||||
<el-image
|
||||
style="height: 3rem; width: 3rem"
|
||||
:src="row.imgs"
|
||||
:src="row.cart_info?.image"
|
||||
></el-image>
|
||||
<span style="margin-left: 0.5rem">{{ row.goods_name }}</span>
|
||||
<span style="margin-left: 0.5rem">{{ row.cart_info?.name }}</span>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="price" label="单价" width="150" />
|
||||
<el-table-column prop="nums" label="数量" width="150" />
|
||||
<el-table-column prop="total" label="总价" width="150">
|
||||
<el-table-column prop="cart_info.price" label="单价" width="150" />
|
||||
<el-table-column prop="cart_info.cart_num" label="数量" width="150" />
|
||||
<el-table-column prop="cart_info.total" label="总价" width="150">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>
|
||||
<el-empty></el-empty>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -259,10 +242,6 @@ onUnmounted(() => {
|
||||
.table-title {
|
||||
font-weight: bold;
|
||||
}
|
||||
.addAddress {
|
||||
margin-top: 1rem;
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
.table-info {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
|
@ -1,60 +1,62 @@
|
||||
<script setup>
|
||||
import { ref, onMounted, onUnmounted } from "vue";
|
||||
import {
|
||||
orderListApi,
|
||||
orderStatusApi,
|
||||
orderLadingApi,
|
||||
cartListApi,
|
||||
saleOrderListApi,
|
||||
createOrderApi
|
||||
orderListApi,
|
||||
orderStatusApi,
|
||||
orderLadingApi,
|
||||
cartListApi,
|
||||
saleOrderListApi,
|
||||
} from "@/api/store.js";
|
||||
import { useUserStore } from "@/store/user.js";
|
||||
import { ElMessage } from "element-plus";
|
||||
import { useRoute } from "vue-router";
|
||||
import { useRouter } from "vue-router";
|
||||
import mitt from "@/utils/mitt.js";
|
||||
import moment from "moment";
|
||||
|
||||
const userStore = useUserStore();
|
||||
const props = defineProps({
|
||||
isSystem: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
source: {
|
||||
type: Number,
|
||||
default: 0,
|
||||
},
|
||||
isSystem: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
source: {
|
||||
type: Number,
|
||||
default: 1,
|
||||
},
|
||||
});
|
||||
|
||||
const route = useRoute();
|
||||
|
||||
const lists = ref([]);
|
||||
|
||||
const tabPosition = ref(1); // 1-全部, 2-未支付
|
||||
const changeTabPosition = (e) => {
|
||||
where.value.page_no = 1;
|
||||
loadEnd.value = false;
|
||||
loading.value = false;
|
||||
orderList.value = [];
|
||||
getOrderList(true);
|
||||
where.value.page_no = 1;
|
||||
loadEnd.value = false;
|
||||
loading.value = false;
|
||||
orderList.value = [];
|
||||
getOrderList(true);
|
||||
};
|
||||
|
||||
const payRef = ref(null);
|
||||
|
||||
const changeDate = (e) => {
|
||||
getOrderList(true);
|
||||
const date = ref("");
|
||||
const changeDate = () => {
|
||||
where.value.start_time = moment(date.value[0]).format('YYYY-MM-DD 00:00:00');
|
||||
where.value.end_time = moment(date.value[1]).format('YYYY-MM-DD 23:59:59');
|
||||
getOrderList(true);
|
||||
};
|
||||
const disabledDate = (time)=>{
|
||||
return time.getTime() > Date.now();
|
||||
|
||||
const disabledDate = (time) => {
|
||||
return time.getTime() > Date.now();
|
||||
}
|
||||
|
||||
|
||||
const where = ref({
|
||||
page_no: 1,
|
||||
page_size: 20,
|
||||
number: "",
|
||||
date: moment(new Date()).format("YYYY-MM-DD"),
|
||||
is_mer: 1
|
||||
// source: props.source,
|
||||
page_no: 1,
|
||||
page_size: 20,
|
||||
order_id: "",
|
||||
start_time: "",
|
||||
end_time: "",
|
||||
is_sashier: 2, // 1-收银订单, 2-小程序订单
|
||||
});
|
||||
|
||||
const loading = ref(false);
|
||||
@ -64,357 +66,277 @@ const activeStore = ref(0);
|
||||
const loadEnd = ref(false);
|
||||
const orderList = ref([]);
|
||||
const getOrderList = (reload = false) => {
|
||||
if (reload) where.value.page_no = 1;
|
||||
else if (loadEnd.value || loading.value) return;
|
||||
loading.value = true;
|
||||
if (tabPosition.value == 1) where.value.paid = null;
|
||||
if (tabPosition.value == 2) where.value.paid = 0;
|
||||
dialogVisible.value = false;
|
||||
orderListApi(where.value)
|
||||
.then((res) => {
|
||||
if (reload) orderList.value = res.data.lists;
|
||||
else orderList.value = [...orderList.value, ...res.data.lists];
|
||||
if (res.data.lists.length < where.value.page_size) loadEnd.value = true;
|
||||
else where.value.page_no++;
|
||||
activeStore.value = 0;
|
||||
mitt.emit("set-c-order-detail", orderList.value[0]);
|
||||
total.value = res.data.count;
|
||||
loading.value = false;
|
||||
})
|
||||
.catch((err) => {
|
||||
loadEnd.value = true;
|
||||
loading.value = false;
|
||||
});
|
||||
if (reload) where.value.page_no = 1;
|
||||
else if (loadEnd.value || loading.value) return;
|
||||
loading.value = true;
|
||||
if (tabPosition.value == 1) where.value.paid = null;
|
||||
if (tabPosition.value == 2) where.value.paid = 0;
|
||||
saleOrderListApi(where.value)
|
||||
.then((res) => {
|
||||
if (reload) orderList.value = res.data.lists;
|
||||
else orderList.value = [...orderList.value, ...res.data.lists];
|
||||
if (res.data.lists.length < where.value.page_size) loadEnd.value = true;
|
||||
else where.value.page_no++;
|
||||
activeStore.value = 0;
|
||||
mitt.emit("set-sale-order-detail", orderList.value[0]);
|
||||
total.value = res.data.count;
|
||||
loading.value = false;
|
||||
})
|
||||
.catch((err) => {
|
||||
loadEnd.value = true;
|
||||
loading.value = false;
|
||||
});
|
||||
};
|
||||
|
||||
const submitOrder = ()=>{
|
||||
createOrderApi().then(res=>{
|
||||
ElMessage.success("提交成功");
|
||||
getOrderList(true);
|
||||
mitt.emit("set-order-count-zero", res.data);
|
||||
})
|
||||
}
|
||||
|
||||
const setForm = (item, index) => {
|
||||
activeStore.value = index;
|
||||
mitt.emit("set-c-order-detail", item);
|
||||
activeStore.value = index;
|
||||
mitt.emit("set-sale-order-detail", item);
|
||||
};
|
||||
|
||||
defineExpose({
|
||||
getOrderList
|
||||
})
|
||||
|
||||
const emit = defineEmits(['addAddress'])
|
||||
const addAddress = (item)=>{
|
||||
emit('addAddress',item)
|
||||
}
|
||||
|
||||
const dialogVisible = ref(false);
|
||||
|
||||
onMounted(() => {
|
||||
mitt.on("update-c-order-detail", (item) => {
|
||||
orderList.value[activeStore.value].paid = 1;
|
||||
});
|
||||
dialogVisible.value = true;
|
||||
mitt.on("new_order", ()=>{
|
||||
if(route.name == "order"){
|
||||
dialogVisible.value = true;
|
||||
}
|
||||
});
|
||||
mitt.on("update-sale-order-detail", (item) => {
|
||||
console.log("===");
|
||||
orderList.value[activeStore.value].paid = 1;
|
||||
});
|
||||
});
|
||||
onUnmounted(()=>{
|
||||
mitt.off("update-c-order-detail");
|
||||
mitt.off("new_order");
|
||||
onUnmounted(() => {
|
||||
mitt.off("update-sale-order-detail");
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="my-order">
|
||||
<div class="header-nav">
|
||||
<div class="nav-item">
|
||||
{{ "待提交采购订单" }}
|
||||
</div>
|
||||
<div class="nav-item-btn">
|
||||
<!-- <el-radio-group
|
||||
v-model="tabPosition"
|
||||
@change="changeTabPosition"
|
||||
size="small"
|
||||
>
|
||||
<el-radio-button :value="1">已支付</el-radio-button>
|
||||
<el-radio-button :value="2">未支付</el-radio-button>
|
||||
</el-radio-group> -->
|
||||
<el-date-picker
|
||||
v-model="where.date"
|
||||
type="date"
|
||||
placeholder="请选择时间"
|
||||
size="small"
|
||||
<div class="my-order">
|
||||
<div class="header-nav">
|
||||
<div class="nav-item">
|
||||
{{ "线上订单" }}
|
||||
</div>
|
||||
<div class="nav-item-btn">
|
||||
<el-radio-group v-model="tabPosition" @change="changeTabPosition" size="small">
|
||||
<el-radio-button :value="1">全部</el-radio-button>
|
||||
<el-radio-button :value="2">未支付</el-radio-button>
|
||||
</el-radio-group>
|
||||
<el-date-picker v-model="date" type="daterange" start-placeholder="开始时间" end-placeholder="结束时间"
|
||||
size="small" value-format="YYYY/MM/DD" :disabled-date="disabledDate" @change="changeDate"
|
||||
:clearable="false"
|
||||
value-format="YYYY-MM-DD"
|
||||
:disabled-date="disabledDate"
|
||||
@change="changeDate"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="header-input">
|
||||
<el-input
|
||||
v-model="where.number"
|
||||
placeholder="请输入订单编号"
|
||||
@keydown.enter="getOrderList(true)"
|
||||
@clear="getOrderList(true)"
|
||||
clearable
|
||||
>
|
||||
<template #append>
|
||||
<el-button
|
||||
type="primary"
|
||||
style="
|
||||
style="width: 14rem; margin-left: 1rem" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="header-input">
|
||||
<el-input v-model="where.order_id" placeholder="请输入订单编号" @keydown.enter="getOrderList(true)"
|
||||
@clear="getOrderList(true)" clearable>
|
||||
<template #append>
|
||||
<el-button type="primary" style="
|
||||
background-color: #1890ff;
|
||||
color: #fff;
|
||||
border-radius: 0 0.315rem 0.315rem 0;
|
||||
"
|
||||
@click="getOrderList(true)"
|
||||
>搜索</el-button
|
||||
>
|
||||
</template>
|
||||
</el-input>
|
||||
</div>
|
||||
<div
|
||||
class="order-lists"
|
||||
v-loading="loading"
|
||||
v-infinite-scroll="getOrderList"
|
||||
:infinite-scroll-distance="300"
|
||||
:infinite-scroll-delay="500"
|
||||
style="overflow: auto"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
:class="{ 'item-active': activeStore == index }"
|
||||
v-for="(item, index) in orderList"
|
||||
:key="index"
|
||||
@click="setForm(item, index)"
|
||||
>
|
||||
<div class="top">
|
||||
<div class="sn">单号: {{ item.number }}</div>
|
||||
<div class="create-time">{{ item.create_time }}</div>
|
||||
" @click="getOrderList(true)">搜索</el-button>
|
||||
</template>
|
||||
</el-input>
|
||||
</div>
|
||||
<div class="shop">
|
||||
<div class="left" v-if="item.goods_list">
|
||||
<el-image
|
||||
v-for="(shop, imgkey) in item.goods_list.slice(0, 5)"
|
||||
:key="imgkey"
|
||||
:src="shop.imgs"
|
||||
class="shop-img"
|
||||
></el-image>
|
||||
<div v-if="item.goods_list.length == 1" class="shop-name">
|
||||
{{ item.goods_list[0].class_name }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="right">
|
||||
<div class="money">¥{{ item.total }}</div>
|
||||
<div class="count">共{{ item.goods_count }}款商品</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="pay">
|
||||
<div v-if="item.paid">
|
||||
已支付
|
||||
<span v-if="item.pay_type == 9">(微信收款)</span>
|
||||
<div class="order-lists" v-loading="loading" v-infinite-scroll="getOrderList" :infinite-scroll-distance="300"
|
||||
:infinite-scroll-delay="500" style="overflow: auto">
|
||||
<div class="item" :class="{ 'item-active': activeStore == index }" v-for="(item, index) in orderList"
|
||||
:key="index" @click="setForm(item, index)">
|
||||
<div class="top">
|
||||
<div class="sn" :class="'cahier'">单号: {{ item.order_id }}</div>
|
||||
<div class="create-time">{{ item.pay_time }}</div>
|
||||
</div>
|
||||
<div class="shop">
|
||||
<div class="left" v-if="item.product_info">
|
||||
<el-image v-for="(shop, imgkey) in item.product_info.slice(0, 5)" :key="imgkey"
|
||||
:src="shop.image" class="shop-img"></el-image>
|
||||
<div v-if="item.product_info.length == 1" class="shop-name">
|
||||
{{ item.product_info[0].store_name }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="right">
|
||||
<div class="money">¥{{ item.pay_price }}</div>
|
||||
<div class="count">共{{ item.product_info.length }}款商品</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="pay">
|
||||
<div v-if="item.paid">
|
||||
{{ item.paid_name }}
|
||||
<span v-if="item.pay_type == 9">(微信收款)</span>
|
||||
<span v-if="item.pay_type == 17">(现金支付)</span>
|
||||
<span v-if="item.pay_type == 13">(支付宝收款)</span>
|
||||
<span v-if="item.pay_type == 3">(余额支付)</span>
|
||||
<span v-if="item.pay_type == 1">(微信支付)</span>
|
||||
</div>
|
||||
<div v-else style="color: #ff4a00">未支付</div>
|
||||
</div>
|
||||
<!-- <div class="cashier" v-if="item.service_info">
|
||||
</div>
|
||||
<div v-else style="color: #ff4a00">{{ item.paid_name }}</div>
|
||||
</div>
|
||||
<!-- <div class="cashier" v-if="item.service_info">
|
||||
收银员: {{ item.service_info.nickname }}
|
||||
</div>
|
||||
<div class="cashier" v-else>平台订单</div> -->
|
||||
<div class="cashier" v-if="!item.address_id">
|
||||
<el-button size="small" type="primary" @click.stop="addAddress(item)">添加收货地址</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="loadEnd" class="load-end">没有更多了</div>
|
||||
<div v-if="loading" class="load-end">加载中...</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="loadEnd" class="load-end">没有更多了</div>
|
||||
<div v-if="loading" class="load-end">加载中...</div>
|
||||
<div style="width: 100%; height: 7rem"></div>
|
||||
</div>
|
||||
<div class="bottom-btn-fiexd" v-if="!loading">
|
||||
<el-button class="btn" type="primary" @click="submitOrder" :disabled="!orderList.length">
|
||||
提交采购</el-button
|
||||
>
|
||||
</div>
|
||||
<el-dialog
|
||||
v-model="dialogVisible"
|
||||
title="您有新的订单,是否立即刷新"
|
||||
width="500"
|
||||
:before-close="handleClose"
|
||||
>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button @click="dialogVisible = false">稍后刷新</el-button>
|
||||
<el-button type="primary" @click="getOrderList(true)">
|
||||
立即刷新
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.my-order {
|
||||
border-radius: 1.2rem;
|
||||
height: 100%;
|
||||
background-color: #fff;
|
||||
width: 30rem;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
|
||||
.header-nav {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
padding: 1rem;
|
||||
height: 3.5rem;
|
||||
|
||||
span {
|
||||
color: #ff4a00;
|
||||
}
|
||||
.nav-item {
|
||||
font-weight: bold;
|
||||
}
|
||||
.nav-item-btn {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
.header-input {
|
||||
padding: 1rem;
|
||||
padding-top: 0;
|
||||
height: 2.5rem;
|
||||
border-bottom: 1px solid #eee;
|
||||
}
|
||||
.order-lists {
|
||||
height: calc(100vh - 100px - 10.2rem);
|
||||
overflow-y: auto;
|
||||
.item {
|
||||
padding: 1rem;
|
||||
border-bottom: 1px solid #eee;
|
||||
.top {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: flex-end;
|
||||
.sn {
|
||||
font-weight: bold;
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
.cahier {
|
||||
&::before {
|
||||
content: "收银";
|
||||
font-weight: 400;
|
||||
font-size: 0.7rem;
|
||||
padding: 0.1rem 0.1rem;
|
||||
margin-right: 0.2rem;
|
||||
border: 1px solid #2ec479;
|
||||
color: #2ec479;
|
||||
border-radius: 0.187rem;
|
||||
}
|
||||
}
|
||||
.cahier2 {
|
||||
&::before {
|
||||
content: "平台";
|
||||
font-weight: 400;
|
||||
font-size: 0.7rem;
|
||||
padding: 0.1rem 0.1rem;
|
||||
margin-right: 0.2rem;
|
||||
border: 1px solid #ff4a00;
|
||||
color: #ff4a00;
|
||||
border-radius: 0.187rem;
|
||||
}
|
||||
}
|
||||
.create-time {
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
}
|
||||
.shop {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
.right {
|
||||
flex-shrink: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
.money {
|
||||
font-size: 1rem;
|
||||
color: #ff4a00;
|
||||
font-weight: bold;
|
||||
}
|
||||
.count {
|
||||
font-size: 0.7rem;
|
||||
color: #999;
|
||||
}
|
||||
}
|
||||
.left {
|
||||
height: 4.5rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
.shop-img {
|
||||
width: 3.5rem;
|
||||
height: 3.5rem;
|
||||
border-radius: 0.3rem;
|
||||
margin-right: 0.4rem;
|
||||
}
|
||||
.shop-name {
|
||||
font-size: 0.9rem;
|
||||
color: #333;
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
/* 将文本限制为三行 */
|
||||
-webkit-line-clamp: 3;
|
||||
}
|
||||
}
|
||||
}
|
||||
.bottom {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
font-size: 0.9rem;
|
||||
color: #777;
|
||||
.manage-btn {
|
||||
color: #fff;
|
||||
background-color: #e6a23c;
|
||||
border-radius: 0.2rem;
|
||||
padding: 0 0.2rem;
|
||||
margin-left: 0.5rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
.item-active {
|
||||
background-color: #efefef;
|
||||
}
|
||||
}
|
||||
.load-end {
|
||||
text-align: center;
|
||||
padding: 1rem;
|
||||
color: #333;
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
.bottom-btn-fiexd {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
border-top: 1px solid #eee;
|
||||
border-radius: 1.2rem;
|
||||
height: 100%;
|
||||
background-color: #fff;
|
||||
z-index: 100;
|
||||
height: 5.2rem;
|
||||
padding: 1rem 1.5rem;
|
||||
.btn {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
font-size: 1.2rem;
|
||||
border-radius: 3rem;
|
||||
width: 30rem;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
|
||||
.header-nav {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
padding: 1rem;
|
||||
height: 3.5rem;
|
||||
|
||||
span {
|
||||
color: #ff4a00;
|
||||
}
|
||||
|
||||
.nav-item {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.nav-item-btn {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
|
||||
.header-input {
|
||||
padding: 1rem;
|
||||
padding-top: 0;
|
||||
height: 2.5rem;
|
||||
border-bottom: 1px solid #eee;
|
||||
}
|
||||
|
||||
.order-lists {
|
||||
height: calc(100vh - 100px - 10.2rem);
|
||||
overflow-y: auto;
|
||||
|
||||
.item {
|
||||
padding: 1rem;
|
||||
border-bottom: 1px solid #eee;
|
||||
|
||||
.top {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: flex-end;
|
||||
|
||||
.sn {
|
||||
font-weight: bold;
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
|
||||
.cahier {
|
||||
&::before {
|
||||
content: "收银";
|
||||
font-weight: 400;
|
||||
font-size: 0.7rem;
|
||||
padding: 0.1rem 0.1rem;
|
||||
margin-right: 0.2rem;
|
||||
border: 1px solid #2ec479;
|
||||
color: #2ec479;
|
||||
border-radius: 0.187rem;
|
||||
}
|
||||
}
|
||||
|
||||
.cahier2 {
|
||||
&::before {
|
||||
content: "平台";
|
||||
font-weight: 400;
|
||||
font-size: 0.7rem;
|
||||
padding: 0.1rem 0.1rem;
|
||||
margin-right: 0.2rem;
|
||||
border: 1px solid #ff4a00;
|
||||
color: #ff4a00;
|
||||
border-radius: 0.187rem;
|
||||
}
|
||||
}
|
||||
|
||||
.create-time {
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
}
|
||||
|
||||
.shop {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
||||
.right {
|
||||
flex-shrink: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
|
||||
.money {
|
||||
font-size: 1rem;
|
||||
color: #ff4a00;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.count {
|
||||
font-size: 0.7rem;
|
||||
color: #999;
|
||||
}
|
||||
}
|
||||
|
||||
.left {
|
||||
height: 4.5rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
.shop-img {
|
||||
width: 3.5rem;
|
||||
height: 3.5rem;
|
||||
border-radius: 0.3rem;
|
||||
margin-right: 0.4rem;
|
||||
}
|
||||
|
||||
.shop-name {
|
||||
font-size: 0.9rem;
|
||||
color: #333;
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
/* 将文本限制为三行 */
|
||||
-webkit-line-clamp: 3;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.bottom {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
font-size: 0.9rem;
|
||||
color: #777;
|
||||
|
||||
.manage-btn {
|
||||
color: #fff;
|
||||
background-color: #e6a23c;
|
||||
border-radius: 0.2rem;
|
||||
padding: 0 0.2rem;
|
||||
margin-left: 0.5rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.item-active {
|
||||
background-color: #efefef;
|
||||
}
|
||||
}
|
||||
|
||||
.load-end {
|
||||
text-align: center;
|
||||
padding: 1rem;
|
||||
color: #333;
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
@ -3,85 +3,15 @@ import order from "./component/order.vue";
|
||||
import detail from "./component/detail.vue";
|
||||
import padding from "@/components/padding.vue";
|
||||
import { ref, nextTick } from "vue";
|
||||
import { merchantCreateApi } from "@/api/store";
|
||||
|
||||
const orderRef = ref(null);
|
||||
const dialogFormVisible = ref(false);
|
||||
const addAddress = (e) => {
|
||||
if (e.id != form.value.order_id) {
|
||||
form.value = {
|
||||
real_name: "",
|
||||
phone: "",
|
||||
detail: "",
|
||||
order_id: e.id,
|
||||
};
|
||||
} else form.value.order_id = e.id;
|
||||
dialogFormVisible.value = true;
|
||||
};
|
||||
|
||||
const form = ref({
|
||||
real_name: "",
|
||||
phone: "",
|
||||
detail: "",
|
||||
order_id: "",
|
||||
});
|
||||
const rules = ref({
|
||||
real_name: [{ required: true, message: "请输入姓名", trigger: "blur" }],
|
||||
phone: [{ required: true, message: "请输入手机号", trigger: "blur" }],
|
||||
detail: [{ required: true, message: "请输入地址", trigger: "blur" }],
|
||||
});
|
||||
|
||||
const formRef = ref(null);
|
||||
|
||||
const submit = () => {
|
||||
formRef.value?.validate((valid) => {
|
||||
if (valid) {
|
||||
merchantCreateApi(form.value).then((res) => {
|
||||
dialogFormVisible.value = false;
|
||||
orderRef.value?.getOrderList(true);
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="my-card">
|
||||
<order style="flex-shrink: 0" ref="orderRef" @addAddress="addAddress" />
|
||||
<order style="flex-shrink: 0;" ref="orderRef"/>
|
||||
<padding />
|
||||
<detail ref="detailRef" @addAddress="addAddress" />
|
||||
|
||||
<el-dialog v-model="dialogFormVisible" title="添加地址" width="500">
|
||||
<el-form ref="formRef" :model="form" label-width="100" :rules="rules">
|
||||
<el-form-item
|
||||
label="收货人"
|
||||
:label-width="formLabelWidth"
|
||||
prop="real_name"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.real_name"
|
||||
autocomplete="off"
|
||||
placeholder="请输入收货人"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="电话" :label-width="formLabelWidth" prop="phone">
|
||||
<el-input
|
||||
v-model="form.phone"
|
||||
type="number"
|
||||
placeholder="请输入电话"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="地址" :label-width="formLabelWidth" prop="detail">
|
||||
<el-input v-model="form.detail" placeholder="请输入地址" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button @click="dialogFormVisible = false">取消</el-button>
|
||||
<el-button type="primary" @click="submit"> 确认 </el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
<detail ref="detailRef"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -1,146 +1,36 @@
|
||||
<script setup>
|
||||
import { ref } from "vue";
|
||||
import {
|
||||
orderListApi,
|
||||
orderStatusApi,
|
||||
orderLadingApi,
|
||||
cartListApi,
|
||||
statisticsApi,
|
||||
orderPriceApi,
|
||||
} from "@/api/store.js";
|
||||
import { useUserStore } from "@/store/user.js";
|
||||
import pay from "@/components/pay.vue";
|
||||
import { amountTakingListsApi, financialRecordApi } from "@/api/merchant.js";
|
||||
import { ElMessage } from "element-plus";
|
||||
import { useRouter } from "vue-router";
|
||||
import moment from "moment";
|
||||
|
||||
const userStore = useUserStore();
|
||||
const orderList = ref([]);
|
||||
const router = useRouter();
|
||||
|
||||
const tabPosition = ref(1); // 1-全部, 2-未收银
|
||||
const payRef = ref(null);
|
||||
|
||||
const where = ref({
|
||||
page_no: 1,
|
||||
page_size: 15,
|
||||
staff_id: userStore.userInfo.service.service_id,
|
||||
});
|
||||
|
||||
const loading = ref(false);
|
||||
const total = ref(0);
|
||||
|
||||
const getOrderList = () => {
|
||||
orderPriceApi(userStore.userInfo.service.mer_id, where.value).then((res) => {
|
||||
orderList.value = res.data;
|
||||
// total.value = res.data.count;
|
||||
financialRecordApi(where.value).then((res) => {
|
||||
orderList.value = res.data.lists;
|
||||
});
|
||||
};
|
||||
|
||||
getOrderList();
|
||||
|
||||
const formData = ref({});
|
||||
const getStatistics = () => {
|
||||
loading.value = true;
|
||||
statisticsApi(userStore.userInfo.service.mer_id, {
|
||||
staff_id: userStore.userInfo.service.service_id,
|
||||
}).then((res) => {
|
||||
formData.value = res.data.data;
|
||||
loading.value = false;
|
||||
});
|
||||
};
|
||||
getStatistics();
|
||||
|
||||
const prevClick = (e) => {
|
||||
where.value.page_no = e;
|
||||
getOrderList();
|
||||
};
|
||||
|
||||
const nextClick = (e) => {
|
||||
where.value.page_no = e;
|
||||
getOrderList();
|
||||
};
|
||||
|
||||
const currentChange = (e) => {
|
||||
where.value.page_no = e;
|
||||
getOrderList();
|
||||
};
|
||||
|
||||
const cellClick = (row, column) => {
|
||||
let date = '';
|
||||
let query = {}
|
||||
if(Number(moment(row.day).format('MM')) > Number(moment().format('MM'))){
|
||||
let year = moment().format('YYYY');
|
||||
date = (year-1) + '-' + row.day.split('-').join('-');
|
||||
}else {
|
||||
let year = moment().format('YYYY');
|
||||
date = year + '-' + row.day.split('-').join('-');
|
||||
}
|
||||
query.date = date;
|
||||
if(column.no==2) query.payType = 1;
|
||||
if(column.no==3) query.payType = 2;
|
||||
router.push({
|
||||
path: "order",
|
||||
query: query
|
||||
})
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div v-loading="loading" element-loading-text="加载中" class="my-order">
|
||||
<div class="from" v-if="formData.today">
|
||||
<!-- <div class="form-card green">
|
||||
<div>{{ formData.today.payPrice }}</div>
|
||||
<div class="tips">今日线上收银金额</div>
|
||||
</div>
|
||||
<div class="form-card green">
|
||||
<div>{{ formData.yesterday.payPrice }}</div>
|
||||
<div class="tips">昨日线上收银金额</div>
|
||||
</div>
|
||||
<div class="form-card green">
|
||||
<div>{{ formData.month.payPrice }}</div>
|
||||
<div class="tips">本月线上收银金额</div>
|
||||
</div> -->
|
||||
<div class="form-card">
|
||||
<div>{{ (formData.today.cashPayment + formData.today.payPrice).toFixed(2) }}</div>
|
||||
<div class="tips">今日收银 平台+线上+现金 总金额</div>
|
||||
</div>
|
||||
<div class="form-card">
|
||||
<div>
|
||||
{{ (formData.yesterday.cashPayment + formData.yesterday.payPrice).toFixed(2) }}
|
||||
</div>
|
||||
<div class="tips">昨日收银 平台+线上+现金 总金额</div>
|
||||
</div>
|
||||
<div class="form-card">
|
||||
<div>{{ (formData.month.cashPayment + formData.month.payPrice).toFixed(2) }}</div>
|
||||
<div class="tips">本月收银 平台+线上+现金 总金额</div>
|
||||
</div>
|
||||
<!-- <div class="form-card red">
|
||||
<div>{{ formData.today.cashPayment }}</div>
|
||||
<div class="tips">今日现金收银金额</div>
|
||||
</div>
|
||||
<div class="form-card red">
|
||||
<div>{{ formData.yesterday.cashPayment }}</div>
|
||||
<div class="tips">昨日现金收银金额</div>
|
||||
</div>
|
||||
<div class="form-card red">
|
||||
<div>{{ formData.month.cashPayment }}</div>
|
||||
<div class="tips">本月现金收银金额</div>
|
||||
</div> -->
|
||||
</div>
|
||||
<div class="table">
|
||||
<el-table :data="orderList" style="width: 100%" @cell-click="cellClick">
|
||||
<el-table-column prop="day" label="日期" width="260" />
|
||||
<el-table-column prop="total" label="订单数量" />
|
||||
<el-table-column prop="cash_payment" label="现金收银金额" />
|
||||
<el-table-column prop="cash_registe" label="线上收银金额" />
|
||||
<el-table-column prop="pay_price" label="平台交易额" />
|
||||
<el-table-column label="总金额">
|
||||
<template #default="scope">
|
||||
{{ (((+scope.row.pay_price || 0) + (+scope.row.cash_payment || 0))).toFixed(2) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table :data="orderList" style="width: 100%">
|
||||
<el-table-column prop="record_date" label="时间" width="260" />
|
||||
<el-table-column prop="cashier_cash_total_amount" label="现金收银金额(元)" />
|
||||
<el-table-column prop="cashier_total_amount" label="线上收银金额(元)" />
|
||||
<el-table-column prop="platofrm_total_amount" label="平台订单金额(元)" />
|
||||
<el-table-column prop="total_amount" label="总金额(元)" />
|
||||
</el-table>
|
||||
</div>
|
||||
</div>
|
||||
@ -157,7 +47,7 @@ const cellClick = (row, column) => {
|
||||
width: 100%;
|
||||
padding-bottom: 1.25rem;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr); /* 六列 */
|
||||
grid-template-columns: repeat(5, 1fr); /* 六列 */
|
||||
gap: 1.25rem; /* 列间距 */
|
||||
|
||||
.form-card {
|
||||
@ -189,7 +79,6 @@ const cellClick = (row, column) => {
|
||||
box-sizing: border-box;
|
||||
padding: 1rem;
|
||||
overflow-y: scroll;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
/* 修改滚动条的样式 */
|
||||
|
@ -1,238 +0,0 @@
|
||||
<script setup>
|
||||
import { ref } from "vue";
|
||||
import {
|
||||
orderListApi,
|
||||
orderStatusApi,
|
||||
orderLadingApi,
|
||||
cartListApi
|
||||
} from "@/api/store.js";
|
||||
import { useUserStore } from "@/store/user.js";
|
||||
import pay from "@/components/pay.vue";
|
||||
import { ElMessage } from "element-plus";
|
||||
import { useRouter } from "vue-router";
|
||||
|
||||
const userStore = useUserStore();
|
||||
const orderList = ref([]);
|
||||
const router = useRouter();
|
||||
|
||||
const tabPosition = ref(1); // 1-全部, 2-未支付
|
||||
const payRef = ref(null);
|
||||
|
||||
const where = ref({
|
||||
page_no: 1,
|
||||
page_size: 20,
|
||||
});
|
||||
|
||||
const loading = ref(false);
|
||||
const total = ref(0);
|
||||
|
||||
const getOrderList = () => {
|
||||
loading.value = true;
|
||||
if (tabPosition.value == 1) where.value.paid = null;
|
||||
if (tabPosition.value == 2) where.value.paid = 0;
|
||||
orderListApi(userStore.userInfo.service.mer_id, where.value).then((res) => {
|
||||
orderList.value = res.data.list;
|
||||
total.value = res.data.count;
|
||||
loading.value = false;
|
||||
});
|
||||
};
|
||||
|
||||
getOrderList();
|
||||
|
||||
|
||||
const cartCount = ref(0);
|
||||
const getCartList = () => {
|
||||
cartListApi({
|
||||
staff_id: userStore.userInfo.service.service_id,
|
||||
}).then((res) => {
|
||||
cartCount.value = res.data.list?.length;
|
||||
});
|
||||
};
|
||||
getCartList();
|
||||
|
||||
const changeTabPosition = (e) => {
|
||||
where.value.page_no = 1;
|
||||
getOrderList();
|
||||
};
|
||||
|
||||
const prevClick = (e) => {
|
||||
where.value.page_no = e;
|
||||
getOrderList();
|
||||
};
|
||||
|
||||
const nextClick = (e) => {
|
||||
where.value.page_no = e;
|
||||
getOrderList();
|
||||
};
|
||||
|
||||
const currentChange = (e) => {
|
||||
where.value.page_no = e;
|
||||
getOrderList();
|
||||
};
|
||||
|
||||
const paySuccess = () => {
|
||||
getOrderList();
|
||||
};
|
||||
|
||||
const rePay = (row) => {
|
||||
payRef.value.setRePay({
|
||||
price: row.pay_price,
|
||||
order_id: row.group_order_id,
|
||||
});
|
||||
payRef.value.drawer = true;
|
||||
};
|
||||
|
||||
const getOrderStatus = (id) => {
|
||||
orderStatusApi({
|
||||
order_sn: id,
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.data.paid == 1 || res.message == "支付成功") {
|
||||
ElMessage({
|
||||
message: res.message,
|
||||
type: "success",
|
||||
});
|
||||
getOrderList();
|
||||
} else {
|
||||
ElMessage({
|
||||
message: res.message,
|
||||
type: "error",
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch((err) => {});
|
||||
};
|
||||
|
||||
const orderLadingSn = ref('')
|
||||
const orderLading = () => {
|
||||
dialogVisible.value = false;
|
||||
orderLadingApi({
|
||||
order_sn: orderLadingSn.value,
|
||||
}).then((res) => {
|
||||
ElMessage({
|
||||
message: res.message,
|
||||
type: "success",
|
||||
});
|
||||
router.push({
|
||||
name: "home",
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
const dialogVisible = ref(false);
|
||||
const orderLadingComfirm = (order_sn)=>{
|
||||
orderLadingSn.value = order_sn;
|
||||
dialogVisible.value = true;
|
||||
}
|
||||
|
||||
const goHome = ()=>{
|
||||
router.push({
|
||||
name: "home",
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div v-loading="loading" element-loading-text="加载中" class="my-order">
|
||||
<el-radio-group
|
||||
v-model="tabPosition"
|
||||
style="margin-bottom: 30px"
|
||||
@change="changeTabPosition"
|
||||
>
|
||||
<el-radio-button :value="1">全部</el-radio-button>
|
||||
<el-radio-button :value="2">未支付</el-radio-button>
|
||||
</el-radio-group>
|
||||
<el-table :data="orderList" style="width: 100%">
|
||||
<el-table-column prop="group_order_id" label="ID" width="100" />
|
||||
<el-table-column prop="order_sn" label="订单号" width="260" />
|
||||
<el-table-column prop="total_price" label="订单金额" />
|
||||
<el-table-column prop="paid" label="支付状态">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.paid == 1">已支付</span>
|
||||
<span v-else style="color: #ff4a00">未支付</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="create_time" label="订单创建时间" />
|
||||
<el-table-column prop="pay_time" label="订单支付时间">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.pay_time">{{ scope.row.pay_time }}</span>
|
||||
<div v-else class="flex">
|
||||
<el-button type="primary" link @click="rePay(scope.row)"
|
||||
>重新支付</el-button
|
||||
>
|
||||
<el-button
|
||||
type="primary"
|
||||
link
|
||||
@click="getOrderStatus(scope.row.order_sn)"
|
||||
>检测状态</el-button
|
||||
>
|
||||
<el-button
|
||||
type="primary"
|
||||
link
|
||||
@click="orderLadingComfirm(scope.row.order_sn)"
|
||||
>提单</el-button
|
||||
>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-pagination
|
||||
:page_no-size="where.page_size"
|
||||
layout="prev, pager, next"
|
||||
:total="total"
|
||||
@prev-click="prevClick"
|
||||
@next-click="nextClick"
|
||||
@current-change="currentChange"
|
||||
/>
|
||||
<pay ref="payRef" @paySuccess="paySuccess" />
|
||||
<el-dialog
|
||||
v-model="dialogVisible"
|
||||
title="提示"
|
||||
width="500"
|
||||
>
|
||||
<span>提单前请清空购物车, 避免提单的商品与购物车商品混合, 请确保购物车内无数据后再进行提单</span>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button @click="dialogVisible = false">取消</el-button>
|
||||
<el-button v-if="cartCount>0" @click="goHome">
|
||||
前去清空购物车
|
||||
</el-button>
|
||||
<el-button v-else type="primary" @click="orderLading">
|
||||
确认提单
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.my-order {
|
||||
background-color: #fff;
|
||||
border-radius: 1.2rem;
|
||||
box-sizing: border-box;
|
||||
padding: 1rem;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
/* 修改滚动条的样式 */
|
||||
::-webkit-scrollbar {
|
||||
width: 0.315rem; /* 设置滚动条的宽度 */
|
||||
}
|
||||
|
||||
/* 设置滚动条的轨道样式 */
|
||||
::-webkit-scrollbar-track {
|
||||
background-color: #f1f1f1; /* 设置轨道的背景色 */
|
||||
margin: 1.25rem 0;
|
||||
}
|
||||
|
||||
/* 设置滚动条的滑块样式 */
|
||||
::-webkit-scrollbar-thumb {
|
||||
background-color: #ccc; /* 设置滑块的背景色 */
|
||||
border-radius: 0.315rem; /* 设置滑块的圆角 */
|
||||
}
|
||||
|
||||
/* 设置滚动条鼠标悬停时的滑块样式 */
|
||||
::-webkit-scrollbar-thumb:hover {
|
||||
background-color: #999; /* 设置鼠标悬停时滑块的背景色 */
|
||||
}
|
||||
</style>
|
@ -1,43 +0,0 @@
|
||||
<script setup>
|
||||
import order from "./component/order.vue";
|
||||
import detail from "./component/detail.vue";
|
||||
import padding from "@/components/padding.vue";
|
||||
import { ref, nextTick } from "vue";
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="my-card">
|
||||
<order style="flex-shrink: 0;" ref="orderRef" isSystem/>
|
||||
<padding />
|
||||
<detail ref="detailRef"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style lang="scss">
|
||||
.my-card {
|
||||
display: flex;
|
||||
}
|
||||
/* 修改滚动条的样式 */
|
||||
::-webkit-scrollbar {
|
||||
width: 0.315rem; /* 设置滚动条的宽度 */
|
||||
}
|
||||
|
||||
/* 设置滚动条的轨道样式 */
|
||||
::-webkit-scrollbar-track {
|
||||
background-color: #f1f1f1; /* 设置轨道的背景色 */
|
||||
/* margin: 1.25rem 0; */
|
||||
}
|
||||
|
||||
/* 设置滚动条的滑块样式 */
|
||||
::-webkit-scrollbar-thumb {
|
||||
background-color: #ccc; /* 设置滑块的背景色 */
|
||||
border-radius: 0.315rem; /* 设置滑块的圆角 */
|
||||
}
|
||||
|
||||
/* 设置滚动条鼠标悬停时的滑块样式 */
|
||||
::-webkit-scrollbar-thumb:hover {
|
||||
background-color: #999; /* 设置鼠标悬停时滑块的背景色 */
|
||||
}
|
||||
</style>
|
@ -133,6 +133,7 @@ onUnmounted(()=>{
|
||||
value-format="YYYY-MM-DD"
|
||||
:disabled-date="disabledDate"
|
||||
@change="changeDate"
|
||||
:clearable="false"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -13,22 +13,22 @@ const discounts = ref(0); //优惠金额
|
||||
const userStore = useUserStore();
|
||||
|
||||
const clearAll = () => {
|
||||
let cart_id = [];
|
||||
let id = [];
|
||||
list.value.map((item) => {
|
||||
cart_id.push(item.cart_id);
|
||||
id.push(item.id);
|
||||
});
|
||||
if (cart_id.length == 0) return;
|
||||
deleteShop(cart_id);
|
||||
if (id.length == 0) return;
|
||||
deleteShop(id);
|
||||
};
|
||||
|
||||
const deleteOne = (cart_id) => {
|
||||
list.value = list.value.filter((item) => item.cart_id != cart_id);
|
||||
deleteShop([cart_id]);
|
||||
const deleteOne = (id) => {
|
||||
list.value = list.value.filter((item) => item.id != id);
|
||||
deleteShop([id]);
|
||||
};
|
||||
|
||||
const deleteShop = (arr) => {
|
||||
cartDeleteApi({
|
||||
cart_id: arr,
|
||||
id: arr,
|
||||
}).then((res) => {
|
||||
console.log(res);
|
||||
getList();
|
||||
@ -42,7 +42,9 @@ const getList = () => {
|
||||
cartListApi().then((res) => {
|
||||
if (res.data?.lists?.length > 0) {
|
||||
list.value = res.data.lists;
|
||||
allPrice.value = +res.data.extend.total_price;
|
||||
allPrice.value = res.data?.lists.reduce((previous, current) => {
|
||||
return previous + Number(current.total_price);
|
||||
}, 0)
|
||||
costPrice.value = allPrice.value;
|
||||
} else list.value = [];
|
||||
});
|
||||
@ -57,13 +59,12 @@ const goPay = () => {
|
||||
|
||||
const changeCartNum = (val, old) => {
|
||||
cartCreateApi({
|
||||
goods_id: val.goods_id,
|
||||
is_new: 0,
|
||||
product_id: val.product_id,
|
||||
cart_num: val.cart_num
|
||||
}).then((res) => {
|
||||
allPrice.value = 0;
|
||||
list.value.forEach((item) => {
|
||||
allPrice.value += item.sell*item.cart_num;
|
||||
allPrice.value += item.price*item.cart_num;
|
||||
});
|
||||
costPrice.value = allPrice.value;
|
||||
});
|
||||
@ -132,19 +133,19 @@ onUnmounted(() => {
|
||||
<el-image
|
||||
loading="lazy"
|
||||
class="order-item-img"
|
||||
:src="item.imgs"
|
||||
:src="item.image"
|
||||
></el-image>
|
||||
<div class="order-item-info">
|
||||
<div class="order-item-title">
|
||||
<div class="title">{{ item.goods_name }}</div>
|
||||
<div class="delete" @click="deleteOne(item.cart_id)">删除</div>
|
||||
<div class="title">{{ item.store_name }}</div>
|
||||
<div class="delete" @click="deleteOne(item.id)">删除</div>
|
||||
</div>
|
||||
<div class="order-item-sku">
|
||||
<span>{{ item.unit_name }}</span>
|
||||
</div>
|
||||
<div class="order-item-price">
|
||||
<div>
|
||||
¥<span>{{ item.sell }}</span>
|
||||
¥<span>{{ item.price }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<el-input-number
|
||||
|
@ -54,12 +54,12 @@ const close = () => {
|
||||
<div class="shop" v-loading="loading">
|
||||
<div class="shop-info">
|
||||
<div class="shop-info-left">
|
||||
<el-image loading="lazy" :src="form.imgs"></el-image>
|
||||
<el-image loading="lazy" :src="form.image"></el-image>
|
||||
</div>
|
||||
<div class="shop-info-right">
|
||||
<div class="shop-info-right-top">{{ form.name }}</div>
|
||||
<div class="shop-info-right-top">{{ form.store_name }}</div>
|
||||
<div class="shop-info-right-price">
|
||||
¥<span>{{ form.sell }}</span
|
||||
¥<span>{{ form.price }}</span
|
||||
><span style="font-size: 1rem; color: #777">
|
||||
/ {{ form.unit_name }}</span
|
||||
>
|
||||
|
@ -23,7 +23,7 @@ const name = ref("");
|
||||
|
||||
const loadMore = () => {
|
||||
emit("loadMore", {
|
||||
name: name.value,
|
||||
store_name_code: name.value,
|
||||
});
|
||||
};
|
||||
|
||||
@ -34,9 +34,11 @@ const changeItem = (item) => {
|
||||
};
|
||||
|
||||
const handleEnter = _.throttle(() => {
|
||||
let obj = {}
|
||||
if(/^\d+$/.test(name.value)) obj.code = name.value;
|
||||
else obj.name = name.value;
|
||||
let obj = {
|
||||
store_name_code: name.value,
|
||||
}
|
||||
// if(/^\d+$/.test(name.value)) obj.code = name.value;
|
||||
// else obj.name = name.value;
|
||||
emit("getStoreList", obj, true);
|
||||
}, 300)
|
||||
|
||||
@ -112,10 +114,10 @@ onUnmounted(() => {
|
||||
:key="index"
|
||||
@click="changeItem(item)"
|
||||
>
|
||||
<el-image loading="lazy" :src="item.imgs"></el-image>
|
||||
<div class="shop-name">{{ item.name }}</div>
|
||||
<el-image loading="lazy" :src="item.image"></el-image>
|
||||
<div class="shop-name">{{ item.store_name }}</div>
|
||||
<div class="shop-price">
|
||||
¥<span>{{ item.sell }}</span>
|
||||
¥<span>{{ item.price }}</span>
|
||||
<span class="unit-name">/{{item.unit_name}}</span>
|
||||
</div>
|
||||
<div class="no-stock" v-if="item.stock == 0">
|
||||
|
@ -70,8 +70,7 @@ function isAllDigits(str) {
|
||||
const cartAddInfo = (item, change = "") => {
|
||||
console.log(item, change);
|
||||
let q = {
|
||||
goods_id: item.id,
|
||||
is_new: 0,
|
||||
product_id: item.product_id,
|
||||
cart_num: item.cart_num,
|
||||
};
|
||||
cartCreateApi(q).then((res) => {
|
||||
@ -92,7 +91,7 @@ const editPupop = (item) => {
|
||||
const orderForm = ref({});
|
||||
// 结算
|
||||
const checkOut = () => {
|
||||
let cart_id = orderRef.value.list.map((item) => item.cart_id);
|
||||
let cart_id = orderRef.value.list.map((item) => item.id);
|
||||
let query = {
|
||||
cart_id: cart_id,
|
||||
};
|
||||
@ -121,7 +120,7 @@ const paySuccess = (data = null) => {
|
||||
// trade_type: "MICROPAY", //支付方式
|
||||
// transaction_id: "4200002159202405159003084211", //支付单号
|
||||
// }
|
||||
if(data) onPrint(data);
|
||||
// if(data) onPrint(data);
|
||||
setTimeout(()=>{
|
||||
orderRef.value.getList();
|
||||
})
|
||||
@ -143,8 +142,8 @@ const onPrint = (data)=>{
|
||||
if(data.pay_type==13) paytype = "支付宝支付";
|
||||
if(data.pay_type==9) paytype = "微信支付";
|
||||
let obj = {
|
||||
mer_name: userStore.userInfo.merchant.mer_name, //商户名称
|
||||
service_phone: userStore.userInfo.merchant.service_phone, //客服电话
|
||||
mer_name: userStore.userInfo.mer_name, //商户名称
|
||||
service_phone: userStore.userInfo.service_phone, //客服电话
|
||||
number: data.out_trade_no, //单号
|
||||
create_time: data.create_time, //下单时间
|
||||
total_price: orderForm.value.total, //总价
|
||||
|
@ -1,11 +1,12 @@
|
||||
<script setup>
|
||||
import { onMounted, onUnmounted, ref } from "vue";
|
||||
import {
|
||||
orderListApi,
|
||||
orderStatusApi,
|
||||
orderLadingApi,
|
||||
cartListApi,
|
||||
cashierinfoListApi,
|
||||
orderListApi,
|
||||
orderStatusApi,
|
||||
orderLadingApi,
|
||||
cartListApi,
|
||||
cashierinfoListApi,
|
||||
cashierinfoDetailsApi
|
||||
} from "@/api/store.js";
|
||||
import { useUserStore } from "@/store/user.js";
|
||||
import { ElMessage } from "element-plus";
|
||||
@ -17,7 +18,7 @@ const userStore = useUserStore();
|
||||
const router = useRouter();
|
||||
|
||||
const formData = ref({
|
||||
id: "",
|
||||
id: "",
|
||||
});
|
||||
|
||||
const list = ref([]);
|
||||
@ -32,221 +33,254 @@ const activeStoreList = ref(["商品信息", "订单详情"]);
|
||||
const orderLadingSn = ref("");
|
||||
const dialogVisible = ref(false);
|
||||
const orderLadingComfirm = (order_sn) => {
|
||||
orderLadingSn.value = order_sn;
|
||||
dialogVisible.value = true;
|
||||
orderLadingSn.value = order_sn;
|
||||
dialogVisible.value = true;
|
||||
};
|
||||
const orderLading = () => {
|
||||
dialogVisible.value = false;
|
||||
orderLadingApi({
|
||||
order_sn: orderLadingSn.value,
|
||||
staff_id: userStore.userInfo.service.service_id,
|
||||
}).then((res) => {
|
||||
ElMessage({
|
||||
message: res.message,
|
||||
type: "success",
|
||||
dialogVisible.value = false;
|
||||
orderLadingApi({
|
||||
order_sn: orderLadingSn.value,
|
||||
staff_id: userStore.userInfo.service.service_id,
|
||||
}).then((res) => {
|
||||
ElMessage({
|
||||
message: res.message,
|
||||
type: "success",
|
||||
});
|
||||
router.push({
|
||||
name: "home",
|
||||
});
|
||||
});
|
||||
router.push({
|
||||
name: "home",
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
const rePay = (row) => {
|
||||
payRef.value.setRePay({
|
||||
price: row.pay_price,
|
||||
order_id: row.group_order_id,
|
||||
});
|
||||
payRef.value.drawer = true;
|
||||
payRef.value.setRePay({
|
||||
price: row.pay_price,
|
||||
order_id: row.group_order_id,
|
||||
});
|
||||
payRef.value.drawer = true;
|
||||
};
|
||||
|
||||
const getOrderStatus = (id) => {
|
||||
orderStatusApi({
|
||||
order_sn: id,
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.data.paid == 1 || res.message == "支付成功") {
|
||||
ElMessage({
|
||||
message: res.message,
|
||||
type: "success",
|
||||
});
|
||||
mitt.emit("update-sale-order-detail", {});
|
||||
formData.value.paid = 1;
|
||||
} else {
|
||||
ElMessage({
|
||||
message: res.message,
|
||||
type: "error",
|
||||
});
|
||||
}
|
||||
orderStatusApi({
|
||||
order_sn: id,
|
||||
})
|
||||
.catch((err) => {});
|
||||
.then((res) => {
|
||||
if (res.data.paid == 1 || res.message == "支付成功") {
|
||||
ElMessage({
|
||||
message: res.message,
|
||||
type: "success",
|
||||
});
|
||||
mitt.emit("update-sale-order-detail", {});
|
||||
formData.value.paid = 1;
|
||||
} else {
|
||||
ElMessage({
|
||||
message: res.message,
|
||||
type: "error",
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch((err) => { });
|
||||
};
|
||||
|
||||
const where = ref({
|
||||
page_no: 1,
|
||||
page_size: 15,
|
||||
loadend: false,
|
||||
loading: false,
|
||||
page_no: 1,
|
||||
page_size: 15,
|
||||
loadend: false,
|
||||
loading: false,
|
||||
});
|
||||
const goods_list = ref([]);
|
||||
const getOrderList = () => {
|
||||
console.log("触底");
|
||||
if (formData.value.id && !where.value.loadend) {
|
||||
console.log("加载");
|
||||
where.value.loading = true;
|
||||
cashierinfoListApi({
|
||||
pid: formData.value.id,
|
||||
page_no: where.value.page_no,
|
||||
page_size: where.value.page_size,
|
||||
}).then((res) => {
|
||||
goods_list.value = [...goods_list.value, ...res.data.lists];
|
||||
if (res.data.lists.length < where.value.page_size)
|
||||
where.value.loadend = true;
|
||||
where.value.loading = false;
|
||||
where.value.page_no++;
|
||||
});
|
||||
}
|
||||
console.log("触底");
|
||||
if (formData.value.id && !where.value.loadend) {
|
||||
console.log("加载");
|
||||
where.value.loading = true;
|
||||
cashierinfoListApi({
|
||||
pid: formData.value.id,
|
||||
page_no: where.value.page_no,
|
||||
page_size: where.value.page_size,
|
||||
}).then((res) => {
|
||||
goods_list.value = [...goods_list.value, ...res.data.lists];
|
||||
if (res.data.lists.length < where.value.page_size)
|
||||
where.value.loadend = true;
|
||||
where.value.loading = false;
|
||||
where.value.page_no++;
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
const getDetail = () => {
|
||||
loading.value = true;
|
||||
cashierinfoDetailsApi({
|
||||
id: formData.value.id,
|
||||
}).then(res => {
|
||||
formData.value = res.data;
|
||||
setTimeout(() => {
|
||||
loading.value = false;
|
||||
}, 200)
|
||||
})
|
||||
}
|
||||
|
||||
const repay = ()=>{
|
||||
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
mitt.on("set-sale-order-detail", (res) => {
|
||||
formData.value = res;
|
||||
where.value.page_no = 1;
|
||||
where.value.loadend = false;
|
||||
where.value.loading = false;
|
||||
goods_list.value = [];
|
||||
getOrderList();
|
||||
});
|
||||
mitt.on("set-sale-order-detail", (res) => {
|
||||
console.log("===", res);
|
||||
formData.value = res;
|
||||
where.value.page_no = 1;
|
||||
where.value.loadend = false;
|
||||
where.value.loading = false;
|
||||
goods_list.value = [];
|
||||
getDetail();
|
||||
// getOrderList();
|
||||
});
|
||||
});
|
||||
|
||||
onUnmounted(() => {
|
||||
mitt.off("set-sale-order-detail");
|
||||
mitt.off("set-sale-order-detail");
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="my-order">
|
||||
<div class="detail" v-loading="loading">
|
||||
<div
|
||||
class="table"
|
||||
v-loading="loading"
|
||||
v-infinite-scroll="getOrderList"
|
||||
:infinite-scroll-distance="300"
|
||||
:infinite-scroll-delay="300"
|
||||
style="overflow: auto"
|
||||
:infinite-scroll-immediate="false"
|
||||
>
|
||||
<div class="table-title">订单信息</div>
|
||||
<div class="table-info">
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">订单编号:</div>
|
||||
<div class="info-item-info">{{ formData.number }}</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">商品款数:</div>
|
||||
<div class="info-item-info">{{ formData.goods_count }}</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">商品总价:</div>
|
||||
<div class="info-item-info">¥{{ formData.total }}</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">创建时间:</div>
|
||||
<div class="info-item-info">{{ formData.create_time }}</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">优惠抵扣:</div>
|
||||
<div class="info-item-info">¥{{ formData.deduction_price }}</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">实际支付:</div>
|
||||
<div class="info-item-info">¥{{ formData.actual }}</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">支付时间:</div>
|
||||
<div class="info-item-info">{{ formData.update_time }}</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">支付方式:</div>
|
||||
<div class="info-item-info">
|
||||
<span v-if="formData.pay_type == 9">微信收款</span>
|
||||
<span v-if="formData.pay_type == 3">余额支付</span>
|
||||
<span v-if="formData.pay_type == 1">微信支付</span>
|
||||
<div class="my-order">
|
||||
<div class="detail" v-if="formData.id" v-loading="loading">
|
||||
<div class="table" v-infinite-scroll="getOrderList" :infinite-scroll-distance="300"
|
||||
:infinite-scroll-delay="300" style="overflow: auto" :infinite-scroll-immediate="false">
|
||||
<div class="table-title">订单信息</div>
|
||||
<div class="table-info">
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">订单编号:</div>
|
||||
<div class="info-item-info">{{ formData.order_id }}</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">商品款数:</div>
|
||||
<div class="info-item-info">{{ formData.total_num || 0 }}</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">商品总价:</div>
|
||||
<div class="info-item-info">¥{{ formData.total_price }}</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">创建时间:</div>
|
||||
<div class="info-item-info">{{ formData.pay_time }}</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">优惠抵扣:</div>
|
||||
<div class="info-item-info">¥{{ formData.deduction_price }}</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">实际支付:</div>
|
||||
<div class="info-item-info">¥{{ formData.pay_price }}</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">支付时间:</div>
|
||||
<div class="info-item-info">{{ formData.pay_time }}</div>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<div class="info-item-title">支付方式:</div>
|
||||
<div class="info-item-info">
|
||||
<span v-if="formData.pay_type == 9">微信收款</span>
|
||||
<span v-if="formData.pay_type == 17">现金支付</span>
|
||||
<span v-if="formData.pay_type == 13">支付宝收款</span>
|
||||
<span v-if="formData.pay_type == 3">余额支付</span>
|
||||
<span v-if="formData.pay_type == 1">微信支付</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="font-size: 0.9rem">
|
||||
共计
|
||||
<span style="color: #ff4a00">{{ formData.product?.length || " " }}</span> 款商品
|
||||
</div>
|
||||
<el-table :data="formData.product">
|
||||
<el-table-column label="商品信息">
|
||||
<template #default="{ row }">
|
||||
<div style="display: flex; align-items: center">
|
||||
<el-image style="height: 3rem; width: 3rem" :src="row.cart_info?.image"></el-image>
|
||||
<span style="margin-left: 0.5rem">{{ row.cart_info?.name }}</span>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="cart_info.price" label="单价" width="150" />
|
||||
<el-table-column prop="cart_info.cart_num" label="数量" width="150" />
|
||||
<el-table-column prop="cart_info.total" label="总价" width="150">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="footer" v-if="!formData.paid">
|
||||
<el-button type="primary" size="large" @click="repay">重新支付</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="font-size: 0.9rem">
|
||||
共计
|
||||
<span style="color: #ff4a00">{{ formData.goods_count }}</span> 款商品
|
||||
<div v-else>
|
||||
<el-empty></el-empty>
|
||||
</div>
|
||||
<el-table :data="goods_list">
|
||||
<el-table-column label="商品信息">
|
||||
<template #default="{ row }">
|
||||
<div style="display: flex; align-items: center">
|
||||
<el-image
|
||||
style="height: 3rem; width: 3rem"
|
||||
:src="row.imgs"
|
||||
></el-image>
|
||||
<span style="margin-left: 0.5rem">{{ row.goods_name }}</span>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="price" label="单价" width="150" />
|
||||
<el-table-column prop="nums" label="数量" width="150" />
|
||||
<el-table-column prop="total" label="总价" width="150">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.my-order {
|
||||
border-radius: 1.2rem;
|
||||
height: 100%;
|
||||
flex: 1;
|
||||
background-color: #fff;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
|
||||
.detail {
|
||||
height: calc(100vh - 100px - 4rem);
|
||||
box-sizing: border-box;
|
||||
border-radius: 1.2rem;
|
||||
height: 100%;
|
||||
flex: 1;
|
||||
background-color: #fff;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
|
||||
.table {
|
||||
padding: 1rem;
|
||||
padding-bottom: 6rem;
|
||||
overflow-y: auto;
|
||||
height: 100%;
|
||||
.detail {
|
||||
height: 100%;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
|
||||
.table-title {
|
||||
font-weight: bold;
|
||||
}
|
||||
.table-info {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
color: #777;
|
||||
font-size: 0.9rem;
|
||||
padding-bottom: 1rem;
|
||||
margin-bottom: 1rem;
|
||||
border-bottom: 1px solid #eee;
|
||||
.table {
|
||||
padding: 1rem;
|
||||
padding-bottom: 6rem;
|
||||
overflow-y: auto;
|
||||
height: 100%;
|
||||
|
||||
&:last-child {
|
||||
border-bottom: none;
|
||||
.table-title {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.table-info {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
color: #777;
|
||||
font-size: 0.9rem;
|
||||
padding-bottom: 1rem;
|
||||
margin-bottom: 1rem;
|
||||
border-bottom: 1px solid #eee;
|
||||
|
||||
&:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.info-item {
|
||||
width: 33%;
|
||||
display: flex;
|
||||
padding-top: 1rem;
|
||||
|
||||
.info-item-title {
|
||||
flex-shrink: 0;
|
||||
padding-right: 1rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.info-item {
|
||||
width: 33%;
|
||||
display: flex;
|
||||
padding-top: 1rem;
|
||||
.info-item-title {
|
||||
flex-shrink: 0;
|
||||
padding-right: 1rem;
|
||||
}
|
||||
.footer {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 6rem;
|
||||
box-sizing: border-box;
|
||||
background-color: #fff;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
padding: 0 2rem;
|
||||
border-top: 1px solid #eee;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
</style>
|
||||
|
@ -11,6 +11,7 @@ import { useUserStore } from "@/store/user.js";
|
||||
import { ElMessage } from "element-plus";
|
||||
import { useRouter } from "vue-router";
|
||||
import mitt from "@/utils/mitt.js";
|
||||
import moment from "moment";
|
||||
|
||||
const userStore = useUserStore();
|
||||
const props = defineProps({
|
||||
@ -39,7 +40,8 @@ const payRef = ref(null);
|
||||
|
||||
const date = ref("");
|
||||
const changeDate = () => {
|
||||
where.value.date = date.value.join("-");
|
||||
where.value.start_time = moment(date.value[0]).format('YYYY-MM-DD 00:00:00');
|
||||
where.value.end_time = moment(date.value[1]).format('YYYY-MM-DD 23:59:59');
|
||||
getOrderList(true);
|
||||
};
|
||||
|
||||
@ -51,9 +53,10 @@ const disabledDate = (time)=>{
|
||||
const where = ref({
|
||||
page_no: 1,
|
||||
page_size: 20,
|
||||
number: "",
|
||||
date: "",
|
||||
source: props.source,
|
||||
order_id: "",
|
||||
start_time: "",
|
||||
end_time: "",
|
||||
is_sashier: 1, // 1-收银订单, 2-小程序订单
|
||||
});
|
||||
|
||||
const loading = ref(false);
|
||||
@ -125,13 +128,14 @@ onUnmounted(()=>{
|
||||
value-format="YYYY/MM/DD"
|
||||
:disabled-date="disabledDate"
|
||||
@change="changeDate"
|
||||
:clearable="false"
|
||||
style="width: 14rem; margin-left: 1rem"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="header-input">
|
||||
<el-input
|
||||
v-model="where.number"
|
||||
v-model="where.order_id"
|
||||
placeholder="请输入订单编号"
|
||||
@keydown.enter="getOrderList(true)"
|
||||
@clear="getOrderList(true)"
|
||||
@ -167,36 +171,37 @@ onUnmounted(()=>{
|
||||
@click="setForm(item, index)"
|
||||
>
|
||||
<div class="top">
|
||||
<div class="sn" :class="'cahier'">单号: {{ item.number }}</div>
|
||||
<div class="create-time">{{ item.create_time }}</div>
|
||||
<div class="sn" :class="'cahier'">单号: {{ item.order_id }}</div>
|
||||
<div class="create-time">{{ item.pay_time }}</div>
|
||||
</div>
|
||||
<div class="shop">
|
||||
<div class="left" v-if="item.goods_list">
|
||||
<div class="left" v-if="item.product_info">
|
||||
<el-image
|
||||
v-for="(shop, imgkey) in item.goods_list.slice(0, 5)"
|
||||
v-for="(shop, imgkey) in item.product_info.slice(0, 5)"
|
||||
:key="imgkey"
|
||||
:src="shop.imgs"
|
||||
:src="shop.image"
|
||||
class="shop-img"
|
||||
></el-image>
|
||||
<div v-if="item.goods_list.length == 1" class="shop-name">
|
||||
{{ item.goods_list[0].class_name }}
|
||||
<div v-if="item.product_info.length == 1" class="shop-name">
|
||||
{{ item.product_info[0].store_name }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="right">
|
||||
<div class="money">¥{{ item.total }}</div>
|
||||
<div class="count">共{{ item.goods_count }}款商品</div>
|
||||
<div class="money">¥{{ item.pay_price }}</div>
|
||||
<div class="count">共{{ item.product_info.length }}款商品</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="pay">
|
||||
<div v-if="item.paid">
|
||||
已支付
|
||||
{{ item.paid_name }}
|
||||
<span v-if="item.pay_type == 9">(微信收款)</span>
|
||||
<span v-if="item.pay_type == 17">(现金支付)</span>
|
||||
<span v-if="item.pay_type == 13">(支付宝收款)</span>
|
||||
<span v-if="item.pay_type == 3">(余额支付)</span>
|
||||
<span v-if="item.pay_type == 1">(微信支付)</span>
|
||||
<!-- <span class="manage-btn">待处理</span> -->
|
||||
</div>
|
||||
<div v-else style="color: #ff4a00">未支付</div>
|
||||
<div v-else style="color: #ff4a00">{{ item.paid_name }}</div>
|
||||
</div>
|
||||
<!-- <div class="cashier" v-if="item.service_info">
|
||||
收银员: {{ item.service_info.nickname }}
|
||||
|
@ -1,238 +0,0 @@
|
||||
<script setup>
|
||||
import { ref } from "vue";
|
||||
import {
|
||||
orderListApi,
|
||||
orderStatusApi,
|
||||
orderLadingApi,
|
||||
cartListApi
|
||||
} from "@/api/store.js";
|
||||
import { useUserStore } from "@/store/user.js";
|
||||
import pay from "@/components/pay.vue";
|
||||
import { ElMessage } from "element-plus";
|
||||
import { useRouter } from "vue-router";
|
||||
|
||||
const userStore = useUserStore();
|
||||
const orderList = ref([]);
|
||||
const router = useRouter();
|
||||
|
||||
const tabPosition = ref(1); // 1-全部, 2-未支付
|
||||
const payRef = ref(null);
|
||||
|
||||
const where = ref({
|
||||
page_no: 1,
|
||||
page_size: 20,
|
||||
});
|
||||
|
||||
const loading = ref(false);
|
||||
const total = ref(0);
|
||||
|
||||
const getOrderList = () => {
|
||||
loading.value = true;
|
||||
if (tabPosition.value == 1) where.value.paid = null;
|
||||
if (tabPosition.value == 2) where.value.paid = 0;
|
||||
orderListApi(userStore.userInfo.service.mer_id, where.value).then((res) => {
|
||||
orderList.value = res.data.list;
|
||||
total.value = res.data.count;
|
||||
loading.value = false;
|
||||
});
|
||||
};
|
||||
|
||||
getOrderList();
|
||||
|
||||
|
||||
const cartCount = ref(0);
|
||||
const getCartList = () => {
|
||||
cartListApi({
|
||||
staff_id: userStore.userInfo.service.service_id,
|
||||
}).then((res) => {
|
||||
cartCount.value = res.data.list?.length;
|
||||
});
|
||||
};
|
||||
getCartList();
|
||||
|
||||
const changeTabPosition = (e) => {
|
||||
where.value.page_no = 1;
|
||||
getOrderList();
|
||||
};
|
||||
|
||||
const prevClick = (e) => {
|
||||
where.value.page_no = e;
|
||||
getOrderList();
|
||||
};
|
||||
|
||||
const nextClick = (e) => {
|
||||
where.value.page_no = e;
|
||||
getOrderList();
|
||||
};
|
||||
|
||||
const currentChange = (e) => {
|
||||
where.value.page_no = e;
|
||||
getOrderList();
|
||||
};
|
||||
|
||||
const paySuccess = () => {
|
||||
getOrderList();
|
||||
};
|
||||
|
||||
const rePay = (row) => {
|
||||
payRef.value.setRePay({
|
||||
price: row.pay_price,
|
||||
order_id: row.group_order_id,
|
||||
});
|
||||
payRef.value.drawer = true;
|
||||
};
|
||||
|
||||
const getOrderStatus = (id) => {
|
||||
orderStatusApi({
|
||||
order_sn: id,
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.data.paid == 1 || res.message == "支付成功") {
|
||||
ElMessage({
|
||||
message: res.message,
|
||||
type: "success",
|
||||
});
|
||||
getOrderList();
|
||||
} else {
|
||||
ElMessage({
|
||||
message: res.message,
|
||||
type: "error",
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch((err) => {});
|
||||
};
|
||||
|
||||
const orderLadingSn = ref('')
|
||||
const orderLading = () => {
|
||||
dialogVisible.value = false;
|
||||
orderLadingApi({
|
||||
order_sn: orderLadingSn.value,
|
||||
}).then((res) => {
|
||||
ElMessage({
|
||||
message: res.message,
|
||||
type: "success",
|
||||
});
|
||||
router.push({
|
||||
name: "home",
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
const dialogVisible = ref(false);
|
||||
const orderLadingComfirm = (order_sn)=>{
|
||||
orderLadingSn.value = order_sn;
|
||||
dialogVisible.value = true;
|
||||
}
|
||||
|
||||
const goHome = ()=>{
|
||||
router.push({
|
||||
name: "home",
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div v-loading="loading" element-loading-text="加载中" class="my-order">
|
||||
<el-radio-group
|
||||
v-model="tabPosition"
|
||||
style="margin-bottom: 30px"
|
||||
@change="changeTabPosition"
|
||||
>
|
||||
<el-radio-button :value="1">全部</el-radio-button>
|
||||
<el-radio-button :value="2">未支付</el-radio-button>
|
||||
</el-radio-group>
|
||||
<el-table :data="orderList" style="width: 100%">
|
||||
<el-table-column prop="group_order_id" label="ID" width="100" />
|
||||
<el-table-column prop="order_sn" label="订单号" width="260" />
|
||||
<el-table-column prop="total_price" label="订单金额" />
|
||||
<el-table-column prop="paid" label="支付状态">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.paid == 1">已支付</span>
|
||||
<span v-else style="color: #ff4a00">未支付</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="create_time" label="订单创建时间" />
|
||||
<el-table-column prop="pay_time" label="订单支付时间">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.pay_time">{{ scope.row.pay_time }}</span>
|
||||
<div v-else class="flex">
|
||||
<el-button type="primary" link @click="rePay(scope.row)"
|
||||
>重新支付</el-button
|
||||
>
|
||||
<el-button
|
||||
type="primary"
|
||||
link
|
||||
@click="getOrderStatus(scope.row.order_sn)"
|
||||
>检测状态</el-button
|
||||
>
|
||||
<el-button
|
||||
type="primary"
|
||||
link
|
||||
@click="orderLadingComfirm(scope.row.order_sn)"
|
||||
>提单</el-button
|
||||
>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-pagination
|
||||
:page_no-size="where.page_size"
|
||||
layout="prev, pager, next"
|
||||
:total="total"
|
||||
@prev-click="prevClick"
|
||||
@next-click="nextClick"
|
||||
@current-change="currentChange"
|
||||
/>
|
||||
<pay ref="payRef" @paySuccess="paySuccess" />
|
||||
<el-dialog
|
||||
v-model="dialogVisible"
|
||||
title="提示"
|
||||
width="500"
|
||||
>
|
||||
<span>提单前请清空购物车, 避免提单的商品与购物车商品混合, 请确保购物车内无数据后再进行提单</span>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button @click="dialogVisible = false">取消</el-button>
|
||||
<el-button v-if="cartCount>0" @click="goHome">
|
||||
前去清空购物车
|
||||
</el-button>
|
||||
<el-button v-else type="primary" @click="orderLading">
|
||||
确认提单
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.my-order {
|
||||
background-color: #fff;
|
||||
border-radius: 1.2rem;
|
||||
box-sizing: border-box;
|
||||
padding: 1rem;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
/* 修改滚动条的样式 */
|
||||
::-webkit-scrollbar {
|
||||
width: 0.315rem; /* 设置滚动条的宽度 */
|
||||
}
|
||||
|
||||
/* 设置滚动条的轨道样式 */
|
||||
::-webkit-scrollbar-track {
|
||||
background-color: #f1f1f1; /* 设置轨道的背景色 */
|
||||
margin: 1.25rem 0;
|
||||
}
|
||||
|
||||
/* 设置滚动条的滑块样式 */
|
||||
::-webkit-scrollbar-thumb {
|
||||
background-color: #ccc; /* 设置滑块的背景色 */
|
||||
border-radius: 0.315rem; /* 设置滑块的圆角 */
|
||||
}
|
||||
|
||||
/* 设置滚动条鼠标悬停时的滑块样式 */
|
||||
::-webkit-scrollbar-thumb:hover {
|
||||
background-color: #999; /* 设置鼠标悬停时滑块的背景色 */
|
||||
}
|
||||
</style>
|
@ -1,43 +0,0 @@
|
||||
<script setup>
|
||||
import order from "./component/order.vue";
|
||||
import detail from "./component/detail.vue";
|
||||
import padding from "@/components/padding.vue";
|
||||
import { ref, nextTick } from "vue";
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="my-card">
|
||||
<!-- <order style="flex-shrink: 0;" ref="orderRef" isSystem/>
|
||||
<padding />
|
||||
<detail ref="detailRef"/> -->
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style lang="scss">
|
||||
.my-card {
|
||||
display: flex;
|
||||
}
|
||||
/* 修改滚动条的样式 */
|
||||
::-webkit-scrollbar {
|
||||
width: 0.315rem; /* 设置滚动条的宽度 */
|
||||
}
|
||||
|
||||
/* 设置滚动条的轨道样式 */
|
||||
::-webkit-scrollbar-track {
|
||||
background-color: #f1f1f1; /* 设置轨道的背景色 */
|
||||
/* margin: 1.25rem 0; */
|
||||
}
|
||||
|
||||
/* 设置滚动条的滑块样式 */
|
||||
::-webkit-scrollbar-thumb {
|
||||
background-color: #ccc; /* 设置滑块的背景色 */
|
||||
border-radius: 0.315rem; /* 设置滑块的圆角 */
|
||||
}
|
||||
|
||||
/* 设置滚动条鼠标悬停时的滑块样式 */
|
||||
::-webkit-scrollbar-thumb:hover {
|
||||
background-color: #999; /* 设置鼠标悬停时滑块的背景色 */
|
||||
}
|
||||
</style>
|
@ -61,7 +61,7 @@ const show = (type, data) => {
|
||||
};
|
||||
|
||||
const getProductDetail = (id) => {
|
||||
productDetailApi(userStore.userInfo.service.mer_id, id).then((res) => {
|
||||
productDetailApi(userStore.userInfo.service.store_id, id).then((res) => {
|
||||
res.data.image = [
|
||||
{
|
||||
url: res.data.image,
|
||||
@ -90,7 +90,7 @@ const getProductDetail = (id) => {
|
||||
|
||||
const categoryList = ref([]);
|
||||
const getCategoryList = () => {
|
||||
categoryListApi(userStore.userInfo.service.mer_id).then((res) => {
|
||||
categoryListApi(userStore.userInfo.service.store_id).then((res) => {
|
||||
categoryList.value = res.data;
|
||||
});
|
||||
};
|
||||
@ -133,14 +133,14 @@ else data.cate_id = data.cate_id || '';
|
||||
if (data.attrValue[0].stock<=0) return ElMessage.error("请输入商品库存");
|
||||
if (data.attrValue[0].price<=0) return ElMessage.error("请输入商品价格");
|
||||
if (showType.value == "add")
|
||||
productCreateApi(userStore.userInfo.service.mer_id, data).then((res) => {
|
||||
productCreateApi(userStore.userInfo.service.store_id, data).then((res) => {
|
||||
ElMessage.success(res.message);
|
||||
emit("reload", true);
|
||||
beforeClose();
|
||||
});
|
||||
else
|
||||
productUpdateApi(
|
||||
userStore.userInfo.service.mer_id,
|
||||
userStore.userInfo.service.store_id,
|
||||
data.product_id,
|
||||
data
|
||||
).then((res) => {
|
||||
|
@ -23,7 +23,7 @@ const total = ref(0);
|
||||
|
||||
const productTitle = ref([]);
|
||||
const getProductTitleApi = () => {
|
||||
productTitleApi(userStore.userInfo.service.mer_id).then((res) => {
|
||||
productTitleApi(userStore.userInfo.service.store_id).then((res) => {
|
||||
productTitle.value = res.data;
|
||||
});
|
||||
};
|
||||
@ -32,7 +32,7 @@ getProductTitleApi()
|
||||
const getShopList = (loadmore = false) => {
|
||||
loading.value = true;
|
||||
getProductTitleApi();
|
||||
storeListApi(userStore.userInfo.service.mer_id, where.value).then((res) => {
|
||||
storeListApi(userStore.userInfo.service.store_id, where.value).then((res) => {
|
||||
orderList.value = res.data.list;
|
||||
total.value = res.data.count;
|
||||
loading.value = false;
|
||||
@ -97,7 +97,7 @@ const handleSelect = (key) => {
|
||||
};
|
||||
|
||||
const updateShow = (row) => {
|
||||
productStatusApi(userStore.userInfo.service.mer_id, row.product_id, {
|
||||
productStatusApi(userStore.userInfo.service.store_id, row.product_id, {
|
||||
status: row.is_show ? 1 : 0
|
||||
}).then(res=>{
|
||||
ElMessage.success(res.message);
|
||||
|
@ -104,6 +104,7 @@ onUnmounted(() => {
|
||||
type="month"
|
||||
placeholder="请选择月份"
|
||||
@change="changeDate"
|
||||
:clearable="false"
|
||||
/>
|
||||
<el-date-picker
|
||||
v-if="listType == 2"
|
||||
@ -112,6 +113,7 @@ onUnmounted(() => {
|
||||
placeholder="请选择日期"
|
||||
@change="changeDate"
|
||||
format="YYYY-MM-DD"
|
||||
:clearable="false"
|
||||
/>
|
||||
<el-button type="primary" style="margin-left: 1rem">重置</el-button>
|
||||
</div>
|
||||
|
@ -9,7 +9,7 @@ export default ({ mode }) => defineConfig({
|
||||
outDir: loadEnv(mode, process.cwd()).VITE_NOW_TYPE
|
||||
},
|
||||
server: {
|
||||
port: '5178',
|
||||
port: '5181',
|
||||
host: '0.0.0.0',
|
||||
},
|
||||
resolve: {
|
||||
|
Loading…
x
Reference in New Issue
Block a user