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
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -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};
|
||||
|
|
|
@ -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…
Reference in New Issue