1.优化会员扫码充值订单状态查询
This commit is contained in:
@@ -207,3 +207,16 @@ export function orderPrint(data) {
|
|||||||
data,
|
data,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询会员充值支付状态
|
||||||
|
* @param {*} data
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
export function queryPayStatus(params) {
|
||||||
|
return request({
|
||||||
|
method: "get",
|
||||||
|
url: "/order/pay/queryPayStatus",
|
||||||
|
params,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|||||||
@@ -171,7 +171,7 @@ async function findCouponAjax() {
|
|||||||
} else {
|
} else {
|
||||||
let arr = []
|
let arr = []
|
||||||
let ids = props.orderList.map(item => item.productId)
|
let ids = props.orderList.map(item => item.productId)
|
||||||
res.map(item => {
|
res && res.map(item => {
|
||||||
if (ids.includes(item.proId)) {
|
if (ids.includes(item.proId)) {
|
||||||
let pro = props.orderList.find(val => val.productId == item.proId)
|
let pro = props.orderList.find(val => val.productId == item.proId)
|
||||||
arr.push({
|
arr.push({
|
||||||
@@ -193,9 +193,7 @@ function show(userId) {
|
|||||||
showDialog.value = true
|
showDialog.value = true
|
||||||
query.value.userId = userId
|
query.value.userId = userId
|
||||||
findCouponAjax()
|
findCouponAjax()
|
||||||
|
|
||||||
console.log('couponModal.orderList===', props.orderList);
|
console.log('couponModal.orderList===', props.orderList);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
defineExpose({
|
defineExpose({
|
||||||
|
|||||||
@@ -69,36 +69,6 @@
|
|||||||
</div>
|
</div>
|
||||||
<scanModal ref="scanModalRef" :amount="props.amount" :money="money" :orderId="props.orderId"
|
<scanModal ref="scanModalRef" :amount="props.amount" :money="money" :orderId="props.orderId"
|
||||||
:selecttype="props.selecttype" :payType="payType" :payData="payData" @success="scanCodeSuccess" />
|
:selecttype="props.selecttype" :payType="payType" :payData="payData" @success="scanCodeSuccess" />
|
||||||
<el-dialog :title="`选择会员`" top="3vh" v-model="showDialog" width="80%">
|
|
||||||
<el-form inline>
|
|
||||||
<el-form-item>
|
|
||||||
<el-input placeholder="请输入手机号搜索会员" v-model="tableData.phone" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item>
|
|
||||||
<el-button type="primary" @click="getMemberList">搜索</el-button>
|
|
||||||
<el-button @click="resetTable">重置</el-button>
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
|
||||||
<el-table :data="tableData.list" height="440px" border stripe v-loading="tableData.loading">
|
|
||||||
<el-table-column prop="name" label="昵称" width="120px" />
|
|
||||||
<el-table-column prop="telephone" label="手机" width="150px" />
|
|
||||||
<el-table-column prop="code" label="编号" width="120px" />
|
|
||||||
<el-table-column prop="level" label="等级" />
|
|
||||||
<el-table-column prop="levelConsume" label="积分" />
|
|
||||||
<el-table-column prop="amount" label="余额" width="100px">
|
|
||||||
<template v-slot="scope">
|
|
||||||
¥{{ formatDecimal(scope.row.amount) }}
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="操作" width="120px">
|
|
||||||
<template v-slot="scope">
|
|
||||||
<el-button type="primary" @click="toHomeMember(scope.row)">选择</el-button>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
</el-table>
|
|
||||||
<el-pagination layout="prev, pager, next, total" background style="margin-top: 20px"
|
|
||||||
:total="Number(tableData.total)" v-model:current-page="tableData.page" @current-change="getMemberList" />
|
|
||||||
</el-dialog>
|
|
||||||
<!-- 选择挂账人员 -->
|
<!-- 选择挂账人员 -->
|
||||||
<el-dialog title="挂账" top="1vh" v-model="showBuyer" width="90%" @closed="resetBuyerTable">
|
<el-dialog title="挂账" top="1vh" v-model="showBuyer" width="90%" @closed="resetBuyerTable">
|
||||||
<el-form inline>
|
<el-form inline>
|
||||||
@@ -362,10 +332,10 @@ async function payCreditPayHandle(row) {
|
|||||||
buyerTable.loading = false;
|
buyerTable.loading = false;
|
||||||
emit("paySuccess");
|
emit("paySuccess");
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
buyerTable.loading = false;
|
|
||||||
payLoading.value = false;
|
|
||||||
console.log(error);
|
console.log(error);
|
||||||
}
|
}
|
||||||
|
buyerTable.loading = false;
|
||||||
|
payLoading.value = false;
|
||||||
}
|
}
|
||||||
// 显示选择挂账人 end
|
// 显示选择挂账人 end
|
||||||
|
|
||||||
@@ -374,6 +344,27 @@ function scanCodeSuccess() {
|
|||||||
emit("paySuccess");
|
emit("paySuccess");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 会员支付
|
||||||
|
async function vipPayAjax(row) {
|
||||||
|
try {
|
||||||
|
if (row.amount < money.value) {
|
||||||
|
ElMessage.error('余额不足')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
payData.value.payType = 'userPay'
|
||||||
|
payData.value.shopUserId = row.id
|
||||||
|
payData.value.checkOrderPay.userId = row.userId
|
||||||
|
payLoading.value = true;
|
||||||
|
|
||||||
|
await vipPay(payData.value)
|
||||||
|
emit("paySuccess");
|
||||||
|
} catch (error) {
|
||||||
|
console.log(error);
|
||||||
|
}
|
||||||
|
payLoading.value = false;
|
||||||
|
}
|
||||||
|
|
||||||
// 切换支付类型
|
// 切换支付类型
|
||||||
async function payTypeChange(index, item) {
|
async function payTypeChange(index, item) {
|
||||||
try {
|
try {
|
||||||
@@ -384,9 +375,12 @@ async function payTypeChange(index, item) {
|
|||||||
if (item.payType == "scanCode") {
|
if (item.payType == "scanCode") {
|
||||||
scanModalRef.value.show();
|
scanModalRef.value.show();
|
||||||
}
|
}
|
||||||
if (item.payType == "vipPay") {
|
if (item.payType == "member-account") {
|
||||||
showDialog.value = true;
|
if (goodsStore.vipUserInfo.id) {
|
||||||
getMemberList();
|
// await vipPayAjax(goodsStore.vipUserInfo)
|
||||||
|
} else {
|
||||||
|
SelectVipUserRef.value.show()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (item.payType == "buyer") {
|
if (item.payType == "buyer") {
|
||||||
showBuyerHandle();
|
showBuyerHandle();
|
||||||
@@ -434,11 +428,14 @@ async function confirmOrder() {
|
|||||||
} else {
|
} else {
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
case "vipPay":
|
case "member-account":
|
||||||
// 会员支付
|
// 会员支付
|
||||||
console.log("使用会员id支付");
|
|
||||||
payLoading.value = false;
|
payLoading.value = false;
|
||||||
showDialog.value = true;
|
if (goodsStore.vipUserInfo.id) {
|
||||||
|
await vipPayAjax(goodsStore.vipUserInfo)
|
||||||
|
} else {
|
||||||
|
SelectVipUserRef.value.show()
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@@ -500,66 +497,6 @@ async function queryPayTypeAjax() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const showDialog = ref(false);
|
|
||||||
const tableData = reactive({
|
|
||||||
phone: "",
|
|
||||||
loading: false,
|
|
||||||
list: [],
|
|
||||||
page: 1,
|
|
||||||
size: 10,
|
|
||||||
total: 0,
|
|
||||||
});
|
|
||||||
|
|
||||||
// 重置表格
|
|
||||||
function resetTable() {
|
|
||||||
tableData.phone = "";
|
|
||||||
tableData.page = 1;
|
|
||||||
getMemberList();
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取会员列表
|
|
||||||
async function getMemberList() {
|
|
||||||
try {
|
|
||||||
tableData.loading = true;
|
|
||||||
const res = await queryMembermember({
|
|
||||||
shopId: store.userInfo.shopId,
|
|
||||||
phone: tableData.phone,
|
|
||||||
page: tableData.page,
|
|
||||||
pageSize: tableData.size,
|
|
||||||
isFlag: 1,
|
|
||||||
});
|
|
||||||
tableData.loading = false;
|
|
||||||
tableData.list = res.list;
|
|
||||||
tableData.total = res.total;
|
|
||||||
} catch (error) {
|
|
||||||
console.log(error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 选择会员去下单
|
|
||||||
async function toHomeMember(row) {
|
|
||||||
try {
|
|
||||||
showDialog.value = false;
|
|
||||||
payLoading.value = true;
|
|
||||||
const res = await vipPay({
|
|
||||||
orderId: props.orderId,
|
|
||||||
vipUserId: row.id,
|
|
||||||
payAmount: props.discount > 0 ? money.value : "",
|
|
||||||
discountAmount:
|
|
||||||
props.discount > 0 ? formatDecimal(props.amount - money.value) : "",
|
|
||||||
});
|
|
||||||
global.setOrderTable();
|
|
||||||
global.setOrderMember();
|
|
||||||
|
|
||||||
payLoading.value = false;
|
|
||||||
ElMessage.success("支付成功");
|
|
||||||
emit("paySuccess");
|
|
||||||
} catch (error) {
|
|
||||||
payLoading.value = false;
|
|
||||||
console.log(error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 取消折扣
|
// 取消折扣
|
||||||
function cancelDiscount() {
|
function cancelDiscount() {
|
||||||
discountRateVlaue.value = 0
|
discountRateVlaue.value = 0
|
||||||
@@ -607,31 +544,29 @@ function clearCouponUser() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 折扣格式化
|
// 折扣格式化
|
||||||
function discountInput(e) {
|
const discountInput = _.debounce(function (e) {
|
||||||
couponForm.value.amount = couponForm.value.originAmount
|
couponForm.value.amount = couponForm.value.originAmount
|
||||||
setTimeout(() => {
|
couponForm.value.discountRatio = inputFilterFloat(e)
|
||||||
couponForm.value.discountRatio = inputFilterFloat(e)
|
if (couponForm.value.discountRatio > 9.9) {
|
||||||
if (couponForm.value.discountRatio > 9.9) {
|
couponForm.value.discountRatio = 9.9
|
||||||
couponForm.value.discountRatio = 9.9
|
}
|
||||||
}
|
if (couponForm.value.discountRatio < 0.1) {
|
||||||
if (couponForm.value.discountRatio < 0.1) {
|
couponForm.value.discountRatio = 0.1
|
||||||
couponForm.value.discountRatio = 0.1
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (couponForm.value.discountRatio) {
|
if (couponForm.value.discountRatio) {
|
||||||
couponForm.value.amount = formatDecimal(couponForm.value.amount * (couponForm.value.discountRatio / couponFormDiscountRate.value))
|
couponForm.value.amount = formatDecimal(couponForm.value.amount * (couponForm.value.discountRatio / couponFormDiscountRate.value))
|
||||||
} else {
|
} else {
|
||||||
couponForm.value.amount = formatDecimal(+couponForm.value.originAmount)
|
couponForm.value.amount = formatDecimal(+couponForm.value.originAmount)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 将优惠券/积分所有设置初始化
|
// 将优惠券/积分所有设置初始化
|
||||||
couponResList1.value = []
|
couponResList1.value = []
|
||||||
couponResList2.value = []
|
couponResList2.value = []
|
||||||
|
|
||||||
couponForm.value.pointsNum = ''
|
couponForm.value.pointsNum = ''
|
||||||
pointOptions.value.amount = 0
|
pointOptions.value.amount = 0
|
||||||
}, 50)
|
}, 500)
|
||||||
}
|
|
||||||
|
|
||||||
// 积分输入格式化
|
// 积分输入格式化
|
||||||
function pointInput(e) {
|
function pointInput(e) {
|
||||||
@@ -704,19 +639,29 @@ function resetCouponFormHandle() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 选择会员完成后
|
// 选择会员完成后
|
||||||
function selectUserHandle(row) {
|
async function selectUserHandle(row) {
|
||||||
couponFormUserList.value = [
|
try {
|
||||||
{
|
if (showCoupon.value) {
|
||||||
id: row.userId,
|
couponFormUserList.value = [
|
||||||
nickName: row.nickName,
|
{
|
||||||
}
|
id: row.userId,
|
||||||
]
|
nickName: row.nickName,
|
||||||
couponFormUser.value = row
|
}
|
||||||
pointOptionsAjax()
|
]
|
||||||
|
couponFormUser.value = row
|
||||||
|
pointOptionsAjax()
|
||||||
|
|
||||||
// 已存在选择的用户,并且切换了不通用户
|
// 已存在选择的用户,并且切换了不通用户
|
||||||
if (couponFormUser.id && row.userId != couponFormUser.value.userId) {
|
if (couponFormUser.id && row.userId != couponFormUser.value.userId) {
|
||||||
resetCoupon()
|
resetCoupon()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (payList.value[payActive.value].payType == 'member-account') {
|
||||||
|
vipPayAjax(row)
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.log(error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -859,7 +804,7 @@ function reset() {
|
|||||||
buyerRemark: "", // 订单备注
|
buyerRemark: "", // 订单备注
|
||||||
checkOrderPay: {
|
checkOrderPay: {
|
||||||
orderId: goodsStore.orderListInfo.id,
|
orderId: goodsStore.orderListInfo.id,
|
||||||
vipPrice: store.shopInfo.isMemberPrice || goodsStore.showVipPrice, // 是否使用会员价
|
vipPrice: store.shopInfo.isMemberPrice ? goodsStore.showVipPrice : 0, // 是否使用会员价
|
||||||
allPack: goodsStore.allSelected, // 是否整单打包
|
allPack: goodsStore.allSelected, // 是否整单打包
|
||||||
userId: goodsStore.vipUserInfo.id,
|
userId: goodsStore.vipUserInfo.id,
|
||||||
seatNum: goodsStore.tableInfo.num, // 用餐人数
|
seatNum: goodsStore.tableInfo.num, // 用餐人数
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ import { scanpay, queryOrder, quickPay, queryQuickPayStatus, accountPay, querySc
|
|||||||
import { useUser } from "@/store/user.js";
|
import { useUser } from "@/store/user.js";
|
||||||
import { useGlobal } from '@/store/global.js'
|
import { useGlobal } from '@/store/global.js'
|
||||||
import { formatDecimal } from '@/utils'
|
import { formatDecimal } from '@/utils'
|
||||||
import { microPay, queryOrderStatus, microPayVip, vipPay } from '@/api/order.js'
|
import { microPay, queryOrderStatus, microPayVip, vipPay, queryPayStatus } from '@/api/order.js'
|
||||||
|
|
||||||
const store = useUser();
|
const store = useUser();
|
||||||
const global = useGlobal()
|
const global = useGlobal()
|
||||||
@@ -113,6 +113,7 @@ const userPayWait = ref(false);
|
|||||||
const checkPayStatusLoading = ref(false);
|
const checkPayStatusLoading = ref(false);
|
||||||
|
|
||||||
const fastOrder = ref('')
|
const fastOrder = ref('')
|
||||||
|
const vipPayOrder = ref('')
|
||||||
|
|
||||||
// 提交扫码支付
|
// 提交扫码支付
|
||||||
async function submitHandle() {
|
async function submitHandle() {
|
||||||
@@ -210,8 +211,11 @@ async function checkPayStauts(tips = true) {
|
|||||||
try {
|
try {
|
||||||
if (props.selecttype == 1) {
|
if (props.selecttype == 1) {
|
||||||
// 会员扫码充值
|
// 会员扫码充值
|
||||||
const res = await queryScanPay({ flowId: fastOrder.value.id });
|
const res = await queryPayStatus({
|
||||||
if (res.status == 0) {
|
shopId: store.shopInfo.id,
|
||||||
|
payOrderNo: fastOrder.value.payOrderNo,
|
||||||
|
});
|
||||||
|
if (res == 'TRADE_SUCCESS') {
|
||||||
userPayWait.value = false
|
userPayWait.value = false
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
scanCode.value = "";
|
scanCode.value = "";
|
||||||
@@ -220,8 +224,7 @@ async function checkPayStauts(tips = true) {
|
|||||||
clearAutoCheckOrder()
|
clearAutoCheckOrder()
|
||||||
emits("success");
|
emits("success");
|
||||||
return;
|
return;
|
||||||
}
|
} else if (res == 'TRADE_AWAIT') {
|
||||||
if (res.status == 7) {
|
|
||||||
if (tips) {
|
if (tips) {
|
||||||
ElMessage.warning("用户支付中...");
|
ElMessage.warning("用户支付中...");
|
||||||
}
|
}
|
||||||
@@ -263,7 +266,6 @@ async function checkPayStauts(tips = true) {
|
|||||||
userPayWait.value = false
|
userPayWait.value = false
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
scanCode.value = "";
|
scanCode.value = "";
|
||||||
ElMessage.success("支付成功");
|
|
||||||
dialogVisible.value = false;
|
dialogVisible.value = false;
|
||||||
clearAutoCheckOrder()
|
clearAutoCheckOrder()
|
||||||
emits("success");
|
emits("success");
|
||||||
@@ -276,7 +278,7 @@ async function checkPayStauts(tips = true) {
|
|||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
clearAutoCheckOrder()
|
clearAutoCheckOrder()
|
||||||
ElMessage.error(res.msg);
|
ElMessage.error(res.msg || '');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -292,7 +294,9 @@ function resetScanCode() {
|
|||||||
userPayWait.value = false;
|
userPayWait.value = false;
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
scanCode.value = "";
|
scanCode.value = "";
|
||||||
inputRef.value.focus();
|
setTimeout(() => {
|
||||||
|
inputRef.value.focus();
|
||||||
|
}, 500)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 输入
|
// 输入
|
||||||
|
|||||||
@@ -17,9 +17,9 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<el-table :data="tableData.list" height="440px" border stripe v-loading="tableData.loading">
|
<el-table :data="tableData.list" height="440px" border stripe v-loading="tableData.loading">
|
||||||
<el-table-column prop="nickName" label="昵称" width="120px" />
|
<el-table-column prop="nickName" label="昵称" width="150px" />
|
||||||
<el-table-column prop="phone" label="手机" width="150px" />
|
<el-table-column prop="phone" label="手机" width="150px" />
|
||||||
<el-table-column prop="code" label="编号" width="120px" />
|
<el-table-column prop="code" label="编号" width="150px" />
|
||||||
<el-table-column prop="level" label="等级" />
|
<el-table-column prop="level" label="等级" />
|
||||||
<el-table-column prop="accountPoints" label="积分" />
|
<el-table-column prop="accountPoints" label="积分" />
|
||||||
<el-table-column prop="amount" label="余额" width="120px">
|
<el-table-column prop="amount" label="余额" width="120px">
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
¥{{ formatDecimal(scope.row.amount) }}
|
¥{{ formatDecimal(scope.row.amount) }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" width="120px">
|
<el-table-column label="操作" width="120px" fixed="right">
|
||||||
<template v-slot="scope">
|
<template v-slot="scope">
|
||||||
<el-button type="primary" @click="toHomeMember(scope.row)">选择</el-button>
|
<el-button type="primary" @click="toHomeMember(scope.row)">选择</el-button>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -109,6 +109,10 @@ export const useGlobal = defineStore("global", {
|
|||||||
type: "cash_pay",
|
type: "cash_pay",
|
||||||
label: "现金支付",
|
label: "现金支付",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
type: "credit_pay",
|
||||||
|
label: "挂账支付",
|
||||||
|
},
|
||||||
],
|
],
|
||||||
bizCodes: [
|
bizCodes: [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import { ElMessage } from "element-plus";
|
|||||||
// 商品store + 购物车store
|
// 商品store + 购物车store
|
||||||
export const useGoods = defineStore("goods", {
|
export const useGoods = defineStore("goods", {
|
||||||
state: () => ({
|
state: () => ({
|
||||||
showVipPrice: false,
|
showVipPrice: 0,
|
||||||
allSelected: 0, // 是否整单打包
|
allSelected: 0, // 是否整单打包
|
||||||
vipUserInfo: {}, // 会员信息
|
vipUserInfo: {}, // 会员信息
|
||||||
// tableInfo: {
|
// tableInfo: {
|
||||||
@@ -444,6 +444,7 @@ export const useGoods = defineStore("goods", {
|
|||||||
item.packFee = val.packFee;
|
item.packFee = val.packFee;
|
||||||
item.unitName = val.unitName;
|
item.unitName = val.unitName;
|
||||||
}
|
}
|
||||||
|
item.pack_number = item.packNumber;
|
||||||
item.product_name = item.productName;
|
item.product_name = item.productName;
|
||||||
item.number = item.num;
|
item.number = item.num;
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -203,13 +203,15 @@
|
|||||||
<el-dialog v-model="showPackModal" title="打包数量" @open="packModalOpen" width="350">
|
<el-dialog v-model="showPackModal" title="打包数量" @open="packModalOpen" width="350">
|
||||||
<div class="dialog">
|
<div class="dialog">
|
||||||
<div class="el-popover__title content">
|
<div class="el-popover__title content">
|
||||||
<el-form ref="packNumerFormRef" :model="packNumberForm" :rules="packNumberFormRules" label-width="60px"
|
<el-form ref="packNumerFormRef" :model="packNumberForm" :rules="packNumberFormRules" label-width="100px"
|
||||||
label-position="left">
|
label-position="left">
|
||||||
<el-form-item label="数量" prop="number">
|
<el-form-item :label="`数量(${packItem.unitName})`" prop="number">
|
||||||
<el-input v-model="packNumberForm.number"
|
<!-- <el-input v-model="packNumberForm.number"
|
||||||
:placeholder="`最多输入${+packItem.number}${packItem.unitName}`" @input="packNumberInput">
|
:placeholder="`最多输入${+packItem.number}${packItem.unitName}`" @input="packNumberInput">
|
||||||
<template #append>{{ packItem.unitName }}</template>
|
<template #append></template>
|
||||||
</el-input>
|
</el-input> -->
|
||||||
|
<el-input-number v-model="packNumberForm.number" :min="1"
|
||||||
|
:max="+packItem.number"></el-input-number>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
@@ -347,12 +349,17 @@ async function returnOrderItemAjax(num = 1) {
|
|||||||
function packHandle() {
|
function packHandle() {
|
||||||
let item = goodsStore.cartList[goodsStore.cartActiveIndex]
|
let item = goodsStore.cartList[goodsStore.cartActiveIndex]
|
||||||
if (item && item.id) {
|
if (item && item.id) {
|
||||||
if (item.number > 1) {
|
if (!item.pack_number || item.pack_number <= 0) {
|
||||||
// 大于1时需要编辑
|
if (item.number > 1) {
|
||||||
showPackModal.value = true
|
// 大于1时需要编辑
|
||||||
|
showPackModal.value = true
|
||||||
|
} else {
|
||||||
|
// 小于1时直接提交
|
||||||
|
goodsStore.operateCart({ ...item, pack_number: item.number }, 'edit')
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// 小于1时直接提交
|
// 取消打包
|
||||||
goodsStore.operateCart({ ...item, pack_number: item.number }, 'edit')
|
goodsStore.operateCart({ ...item, pack_number: 0 }, 'edit')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -576,14 +583,9 @@ function validatePackNumber(rule, value, callback) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function packNumberInput(e) {
|
|
||||||
setTimeout(() => {
|
|
||||||
packNumberForm.value.number = inputFilterFloat(e)
|
|
||||||
}, 50)
|
|
||||||
}
|
|
||||||
|
|
||||||
// modal打开时
|
// modal打开时
|
||||||
function packModalOpen() {
|
function packModalOpen() {
|
||||||
|
packNumberForm.value.number = 1
|
||||||
packItem.value = goodsStore.cartList[goodsStore.cartActiveIndex]
|
packItem.value = goodsStore.cartList[goodsStore.cartActiveIndex]
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -616,6 +618,10 @@ function packFormSubmit() {
|
|||||||
background-color: #efefef;
|
background-color: #efefef;
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
|
|
||||||
|
&:active {
|
||||||
|
background-color: #d3d3d3;
|
||||||
|
}
|
||||||
|
|
||||||
&.disabled {
|
&.disabled {
|
||||||
|
|
||||||
.t {
|
.t {
|
||||||
|
|||||||
@@ -31,8 +31,8 @@ const dialogVisible = ref(false)
|
|||||||
|
|
||||||
// 恢复挂单
|
// 恢复挂单
|
||||||
async function select(item) {
|
async function select(item) {
|
||||||
await goodsStore.recoverPending(item)
|
|
||||||
dialogVisible.value = false
|
dialogVisible.value = false
|
||||||
|
await goodsStore.recoverPending(item)
|
||||||
}
|
}
|
||||||
|
|
||||||
function show() {
|
function show() {
|
||||||
|
|||||||
@@ -190,7 +190,10 @@ async function printOrderLable(isBefore = false) {
|
|||||||
if (printStore.deviceNoteList.length) {
|
if (printStore.deviceNoteList.length) {
|
||||||
// 使用本地打印机打印
|
// 使用本地打印机打印
|
||||||
const data = await getOrderByIdAjax(goodsStore.orderListInfo.id);
|
const data = await getOrderByIdAjax(goodsStore.orderListInfo.id);
|
||||||
printStore.labelPrint(commOrderPrintData(data))
|
if (!isBefore) {
|
||||||
|
// 预结算不打印标签
|
||||||
|
printStore.labelPrint(commOrderPrintData(data))
|
||||||
|
}
|
||||||
printStore.pushReceiptData(commOrderPrintData({ ...data, isBefore: isBefore }));
|
printStore.pushReceiptData(commOrderPrintData({ ...data, isBefore: isBefore }));
|
||||||
} else {
|
} else {
|
||||||
// 本地没有可用打印机使用云打印机
|
// 本地没有可用打印机使用云打印机
|
||||||
|
|||||||
@@ -225,7 +225,7 @@ const createOrderLoading = ref(false);
|
|||||||
function selectUser(row) {
|
function selectUser(row) {
|
||||||
goodsStore.vipUserInfo = { ...row }
|
goodsStore.vipUserInfo = { ...row }
|
||||||
if (store.shopInfo.isMemberPrice && row.isVip) {
|
if (store.shopInfo.isMemberPrice && row.isVip) {
|
||||||
goodsStore.showVipPrice = true
|
goodsStore.showVipPrice = 1
|
||||||
goodsStore.calcCartInfo()
|
goodsStore.calcCartInfo()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -339,7 +339,7 @@ function showTableMerging() {
|
|||||||
// 清除会员与会员价
|
// 清除会员与会员价
|
||||||
function clearVipUserHandle() {
|
function clearVipUserHandle() {
|
||||||
goodsStore.vipUserInfo = ''
|
goodsStore.vipUserInfo = ''
|
||||||
goodsStore.showVipPrice = false
|
goodsStore.showVipPrice = 0
|
||||||
goodsStore.calcCartInfo()
|
goodsStore.calcCartInfo()
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -17,9 +17,9 @@
|
|||||||
<div class="btm" style="width: 80px;">
|
<div class="btm" style="width: 80px;">
|
||||||
<el-button type="primary"
|
<el-button type="primary"
|
||||||
v-if="item.bizCode == 'cashIn' || item.bizCode == 'wechatIn' || item.bizCode == 'alipayIn'"
|
v-if="item.bizCode == 'cashIn' || item.bizCode == 'wechatIn' || item.bizCode == 'alipayIn'"
|
||||||
@click="showRefundHandle(item)" :disabled="item.refundAmount > 0">
|
@click="showRefundHandle(item)" :disabled="item.amount == item.refundAmount">
|
||||||
<template v-if="item.refundAmount == 0">退款</template>
|
<template v-if="item.refundAmount < item.amount">退款</template>
|
||||||
<template v-if="item.refundAmount > 0">已退</template>
|
<template v-if="item.amount == item.refundAmount">已退</template>
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -221,7 +221,7 @@ async function passwordSuccess(e = '') {
|
|||||||
showDialog.value = false
|
showDialog.value = false
|
||||||
loading.value = false
|
loading.value = false
|
||||||
emits('refund')
|
emits('refund')
|
||||||
// memberqueryMemberAccountAjax()
|
memberqueryMemberAccountAjax()
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
loading.value = false
|
loading.value = false
|
||||||
console.log(error);
|
console.log(error);
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="手机" prop="phone" width="150"></el-table-column>
|
<el-table-column label="手机" prop="phone" width="150"></el-table-column>
|
||||||
<el-table-column label="性别" prop="sex" width="80">
|
<el-table-column label="性别" prop="sex">
|
||||||
<template v-slot="scope">
|
<template v-slot="scope">
|
||||||
{{ scope.row.sex == 1 ? '男' : '女' }}
|
{{ scope.row.sex == 1 ? '男' : '女' }}
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -4,34 +4,34 @@
|
|||||||
<h4>订单号:{{ item.orderNo }}</h4>
|
<h4>订单号:{{ item.orderNo }}</h4>
|
||||||
</template>
|
</template>
|
||||||
<template #default>
|
<template #default>
|
||||||
<div class="order_info">
|
<!-- <div class="order_info">
|
||||||
<!-- <div class="row"><span>订单类型:</span>{{ filterLable('orderType', item.orderType) }}</div>
|
<div class="row"><span>订单类型:</span>{{ filterLable('orderType', item.orderType) }}</div>
|
||||||
<div class="row"><span>平台类型:</span>{{ filterLable('platformType', item.platformType) }}</div>
|
<div class="row"><span>平台类型:</span>{{ filterLable('platformType', item.platformType) }}</div>
|
||||||
<div class="row"><span>用餐模式:</span>{{ filterLable('dineMode', item.dineMode) }}</div>
|
<div class="row"><span>用餐模式:</span>{{ filterLable('dineMode', item.dineMode) }}</div>
|
||||||
<div class="row"><span>订单备注:</span>{{ item.remark }}</div> -->
|
<div class="row"><span>订单备注:</span>{{ item.remark }}</div>
|
||||||
<!-- <div class="row"><span>支付类型:</span>{{ filterLable('payType', item.payType) }}</div>
|
<div class="row"><span>支付类型:</span>{{ filterLable('payType', item.payType) }}</div>
|
||||||
<div class="row"><span>支付单号:</span>{{ item.payOrderNo }}</div>
|
<div class="row"><span>支付单号:</span>{{ item.payOrderNo }}</div>
|
||||||
<div class="row"><span>支付金额:</span>¥{{ item.payAmount }}</div>
|
<div class="row"><span>支付金额:</span>¥{{ item.payAmount }}</div>
|
||||||
<div class="row"><span>支付时间:</span>{{ item.paidTime }}</div>
|
<div class="row"><span>支付时间:</span>{{ item.paidTime }}</div>
|
||||||
<div class="row"><span>订单金额(含折扣):</span>¥{{ item.orderAmount }}</div>
|
<div class="row"><span>订单金额(含折扣):</span>¥{{ item.orderAmount }}</div>
|
||||||
<div class="row"><span>订单原金额(不含折扣):</span>¥{{ item.originAmount }}</div> -->
|
<div class="row"><span>订单原金额(不含折扣):</span>¥{{ item.originAmount }}</div>
|
||||||
</div>
|
</div> -->
|
||||||
<div class="table">
|
<div class="table">
|
||||||
<div class="tab_head">
|
<div class="tab_head">
|
||||||
<el-radio-group v-model="refundType" @change="refundTypeChange">
|
<el-radio-group v-model="refundType" @change="refundTypeChange">
|
||||||
<el-radio-button label="整单退" :value="1" />
|
<el-radio-button label="整单退" :value="1" />
|
||||||
<el-radio-button label="部分退" :value="2" />
|
<el-radio-button label="部分退" :value="2" />
|
||||||
<el-radio-button label="自定义" :value="3" />
|
<!-- <el-radio-button label="自定义" :value="3" /> -->
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
<div class="amount">
|
<div class="amount">
|
||||||
<el-input v-model="customAmount" v-if="refundType == 3" style="width: 370px;height: 42px;"
|
<el-input v-model="refundAmount" style="width: 370px;height: 42px;" placeholder="请输入退款金额"
|
||||||
placeholder="请输入退款金额" @input="inputChange">
|
@input="inputChange">
|
||||||
<template #prepend>¥</template>
|
<template #prepend>¥</template>
|
||||||
<template #append>最多可退¥{{ formatDecimal(item.payAmount - item.refundAmount, 2) }}</template>
|
<template #append>最多可退¥{{ formatDecimal(item.payAmount - item.refundAmount, 2) }}</template>
|
||||||
</el-input>
|
</el-input>
|
||||||
<template v-else>
|
<!-- <template>
|
||||||
退款金额:¥{{ formatDecimal(refundType == 1 ? item.originAmount - item.refundAmount : amount) }}
|
退款金额:¥{{ formatDecimal(refundType == 1 ? item.originAmount - item.refundAmount : amount) }}
|
||||||
</template>
|
</template> -->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<el-table ref="tableRef" :data="item.onGoods" brder stripe @selection-change="tabSelectChange">
|
<el-table ref="tableRef" :data="item.onGoods" brder stripe @selection-change="tabSelectChange">
|
||||||
@@ -45,7 +45,7 @@
|
|||||||
<span>{{ scope.row.productName }}</span>
|
<span>{{ scope.row.productName }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="sku" v-if="scope.row.skuName">{{ scope.row.skuName }}</div>
|
<div class="sku" v-if="scope.row.skuName">{{ scope.row.skuName }}</div>
|
||||||
<div class="sku">¥{{ formatDecimal(+scope.row.payAmount) }}</div>
|
<div class="sku">¥{{ formatDecimal(+scope.row.unitPrice) }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -58,7 +58,8 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="退款数量" width="170">
|
<el-table-column label="退款数量" width="170">
|
||||||
<template v-slot="scope">
|
<template v-slot="scope">
|
||||||
<el-input-number v-model="scope.row.refund_number" :min="1" :max="scope.row.num"
|
<el-input-number v-model="scope.row.refund_number" :disabled="refundType == 1" :min="0"
|
||||||
|
:max="formatDecimal(scope.row.num - scope.row.refundNum - scope.row.returnNum, 2, true)"
|
||||||
style="width: 130px;" @change="numberChange">
|
style="width: 130px;" @change="numberChange">
|
||||||
</el-input-number>
|
</el-input-number>
|
||||||
</template>
|
</template>
|
||||||
@@ -76,7 +77,7 @@
|
|||||||
<span>{{ scope.row.productName }}</span>
|
<span>{{ scope.row.productName }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="sku" v-if="scope.row.skuName">{{ scope.row.skuName }}</div>
|
<div class="sku" v-if="scope.row.skuName">{{ scope.row.skuName }}</div>
|
||||||
<div class="sku">¥{{ formatDecimal(+scope.row.payAmount) }}</div>
|
<div class="sku">¥{{ formatDecimal(+scope.row.unitPrice) }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -98,7 +99,7 @@
|
|||||||
</el-table>
|
</el-table>
|
||||||
</template>
|
</template>
|
||||||
<div class="ipt">
|
<div class="ipt">
|
||||||
<el-input type="textarea" rows="4" v-model="remark" placeholder="请输入退单原因" />
|
<el-input type="textarea" :rows="4" v-model="remark" placeholder="请输入退单原因" />
|
||||||
</div>
|
</div>
|
||||||
<div class="remark_tag">
|
<div class="remark_tag">
|
||||||
<div class="item" v-for="(item, index) in remarkTagList" :key="index" @click="addRmarkHandle(item)">
|
<div class="item" v-for="(item, index) in remarkTagList" :key="index" @click="addRmarkHandle(item)">
|
||||||
@@ -122,6 +123,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
|
import _ from 'lodash'
|
||||||
import { ref } from 'vue'
|
import { ref } from 'vue'
|
||||||
import { useGlobal } from '@/store/global.js'
|
import { useGlobal } from '@/store/global.js'
|
||||||
import { formatDecimal, inputFilterFloat } from "@/utils/index.js";
|
import { formatDecimal, inputFilterFloat } from "@/utils/index.js";
|
||||||
@@ -140,8 +142,7 @@ const isShow = ref(false)
|
|||||||
const item = ref({})
|
const item = ref({})
|
||||||
const tableRef = ref(null)
|
const tableRef = ref(null)
|
||||||
const modify = ref(false)
|
const modify = ref(false)
|
||||||
const amount = ref(0)
|
const refundAmount = ref('')
|
||||||
const customAmount = ref('')
|
|
||||||
const refundType = ref(1)
|
const refundType = ref(1)
|
||||||
const remark = ref('')
|
const remark = ref('')
|
||||||
const remarkTagList = ref([
|
const remarkTagList = ref([
|
||||||
@@ -166,11 +167,7 @@ function handleRefund() {
|
|||||||
async function refundHandle(cash = false) {
|
async function refundHandle(cash = false) {
|
||||||
try {
|
try {
|
||||||
let rows = tableRef.value.getSelectionRows()
|
let rows = tableRef.value.getSelectionRows()
|
||||||
|
if (refundType.value == 2) {
|
||||||
if (refundType.value == 1) {
|
|
||||||
tableRef.value.clearSelection()
|
|
||||||
tableRef.value.toggleAllSelection()
|
|
||||||
} else if (refundType.value == 2) {
|
|
||||||
if (!rows.length) {
|
if (!rows.length) {
|
||||||
ElNotification({
|
ElNotification({
|
||||||
title: '错误',
|
title: '错误',
|
||||||
@@ -179,15 +176,24 @@ async function refundHandle(cash = false) {
|
|||||||
})
|
})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
} else if (refundType.value == 3) {
|
}
|
||||||
if (!customAmount.value) {
|
|
||||||
ElNotification({
|
if (!refundAmount.value) {
|
||||||
title: '错误',
|
ElNotification({
|
||||||
message: '请请输入退款金额',
|
title: '错误',
|
||||||
type: 'error',
|
message: '请请输入退款金额',
|
||||||
})
|
type: 'error',
|
||||||
return
|
})
|
||||||
}
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!remark.value) {
|
||||||
|
ElNotification({
|
||||||
|
title: '错误',
|
||||||
|
message: '请请输入退款原因',
|
||||||
|
type: 'error',
|
||||||
|
})
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
let refundDetails = []
|
let refundDetails = []
|
||||||
@@ -201,22 +207,7 @@ async function refundHandle(cash = false) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
let refundAmount = ''
|
if (refundAmount.value <= 0) {
|
||||||
switch (refundType.value) {
|
|
||||||
case 1:
|
|
||||||
refundAmount = item.value.orderAmount
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
refundAmount = amount.value
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
refundAmount = customAmount.value
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (refundAmount <= 0) {
|
|
||||||
ElNotification({
|
ElNotification({
|
||||||
title: '错误',
|
title: '错误',
|
||||||
message: '无可退金额',
|
message: '无可退金额',
|
||||||
@@ -227,7 +218,7 @@ async function refundHandle(cash = false) {
|
|||||||
|
|
||||||
let data = {
|
let data = {
|
||||||
orderId: item.value.id,
|
orderId: item.value.id,
|
||||||
refundAmount: refundAmount,
|
refundAmount: formatDecimal(+refundAmount.value),
|
||||||
modify: modify.value,
|
modify: modify.value,
|
||||||
cash: cash,
|
cash: cash,
|
||||||
refundReason: remark.value,
|
refundReason: remark.value,
|
||||||
@@ -259,7 +250,7 @@ async function printRefund(rows) {
|
|||||||
shop_name: store.shopInfo.shopName,
|
shop_name: store.shopInfo.shopName,
|
||||||
loginAccount: store.userInfo.name,
|
loginAccount: store.userInfo.name,
|
||||||
carts: [],
|
carts: [],
|
||||||
amount: item.value.orderAmount,
|
amount: formatDecimal(+refundAmount.value),
|
||||||
remark: item.value.remark,
|
remark: item.value.remark,
|
||||||
orderInfo: item.value,
|
orderInfo: item.value,
|
||||||
outNumber: item.value.id,
|
outNumber: item.value.id,
|
||||||
@@ -273,8 +264,8 @@ async function printRefund(rows) {
|
|||||||
name: item.productName,
|
name: item.productName,
|
||||||
number: item.num,
|
number: item.num,
|
||||||
skuName: item.skuName,
|
skuName: item.skuName,
|
||||||
salePrice: formatDecimal(item.payAmount / item.num),
|
salePrice: formatDecimal(+item.unitPrice),
|
||||||
totalAmount: formatDecimal(item.payAmount)
|
totalAmount: formatDecimal(+item.payAmount)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
@@ -301,12 +292,18 @@ function numberChange() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 选择退款项
|
// 选择退款项
|
||||||
function tabSelectChange(val) {
|
const tabSelectChange = _.debounce(function (val) {
|
||||||
amount.value = 0
|
refundAmount.value = ''
|
||||||
|
let num = 0
|
||||||
val.map(item => {
|
val.map(item => {
|
||||||
amount.value += item.refund_number * item.payAmount
|
if ((+item.refundNum + +item.returnNum) < item.num) {
|
||||||
|
num += item.refund_number * item.unitPrice
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
if (num) {
|
||||||
|
refundAmount.value = formatDecimal(num)
|
||||||
|
}
|
||||||
|
}, 100)
|
||||||
|
|
||||||
// 禁用所有行的选择
|
// 禁用所有行的选择
|
||||||
const selectable = (row, index) => {
|
const selectable = (row, index) => {
|
||||||
@@ -316,23 +313,26 @@ const selectable = (row, index) => {
|
|||||||
// 初始化抽屉
|
// 初始化抽屉
|
||||||
function resetDrawer() {
|
function resetDrawer() {
|
||||||
modify.value = false
|
modify.value = false
|
||||||
amount.value = 0
|
refundAmount.value = ''
|
||||||
customAmount.value = ''
|
|
||||||
refundType.value = 1
|
refundType.value = 1
|
||||||
remark.value = ''
|
remark.value = ''
|
||||||
}
|
}
|
||||||
|
|
||||||
function show(row) {
|
function show(row) {
|
||||||
|
resetDrawer()
|
||||||
|
|
||||||
isShow.value = true
|
isShow.value = true
|
||||||
item.value = { ...row }
|
let newRow = { ...row }
|
||||||
|
remark.value = ''
|
||||||
|
|
||||||
let onGoods = []
|
let onGoods = []
|
||||||
let returnGoods = []
|
let returnGoods = []
|
||||||
item.value.goods.map(item => {
|
newRow.goods.map(item => {
|
||||||
// 可退的最大数量,下单数量 - 已退数量 - 退菜数量
|
// 可退的最大数量,下单数量 - 已退数量 - 退菜数量
|
||||||
let refundMaxNum = item.num - item.refundNum - item.returnNum
|
let refundMaxNum = item.num - item.refundNum - item.returnNum
|
||||||
|
|
||||||
if (refundMaxNum <= 0) {
|
if (refundMaxNum <= 0) {
|
||||||
|
item.refund_number = item.num
|
||||||
// 已经退过,不在允许操作
|
// 已经退过,不在允许操作
|
||||||
returnGoods.push(item)
|
returnGoods.push(item)
|
||||||
} else {
|
} else {
|
||||||
@@ -342,13 +342,10 @@ function show(row) {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
item.value.onGoods = onGoods
|
newRow.onGoods = onGoods
|
||||||
item.value.returnGoods = returnGoods
|
newRow.returnGoods = returnGoods
|
||||||
|
|
||||||
console.log('item.value===', item.value);
|
item.value = newRow
|
||||||
|
|
||||||
|
|
||||||
resetDrawer()
|
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
tableRef.value.clearSelection()
|
tableRef.value.clearSelection()
|
||||||
@@ -372,16 +369,20 @@ function refundTypeChange(val) {
|
|||||||
case 1:
|
case 1:
|
||||||
modify.value = false
|
modify.value = false
|
||||||
// tableRef.value.toggleAllSelection()
|
// tableRef.value.toggleAllSelection()
|
||||||
|
|
||||||
// 遍历数据,将每一行设置为选中状态
|
// 遍历数据,将每一行设置为选中状态
|
||||||
item.value.goods.forEach((row) => {
|
item.value.onGoods.forEach((row) => {
|
||||||
tableRef.value.toggleRowSelection(row, true);
|
tableRef.value.toggleRowSelection(row, true);
|
||||||
});
|
});
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
modify.value = false
|
modify.value = false
|
||||||
tableRef.value.clearSelection()
|
if (item.value.onGoods.length == 1) {
|
||||||
|
item.value.onGoods.forEach((row) => {
|
||||||
|
tableRef.value.toggleRowSelection(row, true);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
tableRef.value.clearSelection()
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
modify.value = true
|
modify.value = true
|
||||||
@@ -392,15 +393,13 @@ function refundTypeChange(val) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 自定义退款金额输入
|
// 自定义退款金额输入
|
||||||
function inputChange(n) {
|
const inputChange = _.debounce(function (n) {
|
||||||
setTimeout(() => {
|
if (n > item.value.payAmount - item.value.refundAmount) {
|
||||||
if (n > item.value.payAmount - item.value.refundAmount) {
|
refundAmount.value = formatDecimal(item.value.payAmount - item.value.refundAmount, 2)
|
||||||
customAmount.value = formatDecimal(item.value.payAmount - item.value.refundAmount, 2)
|
} else {
|
||||||
} else {
|
refundAmount.value = inputFilterFloat(n)
|
||||||
customAmount.value = inputFilterFloat(n)
|
}
|
||||||
}
|
}, 300)
|
||||||
}, 100)
|
|
||||||
}
|
|
||||||
|
|
||||||
// 添加备注
|
// 添加备注
|
||||||
function addRmarkHandle(item) {
|
function addRmarkHandle(item) {
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<div class="table_wrap">
|
<div class="table_wrap">
|
||||||
<div class="table">
|
<div class="table">
|
||||||
<el-table :data="tableData.list" v-loading="tableData.loading" border strip height="100%">
|
<el-table :data="tableData.list" v-loading="tableData.loading" border strip height="100%">
|
||||||
<el-table-column label="台桌" prop="tableName" width="80" align="center">
|
<el-table-column label="台桌" prop="tableName" align="center">
|
||||||
<template v-slot="scope">
|
<template v-slot="scope">
|
||||||
<span v-if="scope.row.tableName">{{ scope.row.tableName }}</span>
|
<span v-if="scope.row.tableName">{{ scope.row.tableName }}</span>
|
||||||
<span v-else>无</span>
|
<span v-else>无</span>
|
||||||
@@ -76,11 +76,31 @@
|
|||||||
<div class="column">
|
<div class="column">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<el-button type="warning" :disabled="scope.row.status != 'unpaid'" :loading="scope.row.payLoading"
|
<el-button type="warning" :disabled="scope.row.status != 'unpaid'" :loading="scope.row.payLoading"
|
||||||
@click="orderDoneHandle(scope.row)">结算订单</el-button>
|
@click="orderDoneHandle(scope.row)">
|
||||||
|
<template v-if="scope.row.status == 'unpaid'">
|
||||||
|
结算订单
|
||||||
|
</template>
|
||||||
|
<template v-else>
|
||||||
|
订单完成
|
||||||
|
</template>
|
||||||
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<el-button type="primary" :disabled="refundState(scope.row.status)"
|
<el-button type="primary" :disabled="refundState(scope.row)" @click="RefundDrawerRef.show(scope.row)">
|
||||||
@click="RefundDrawerRef.show(scope.row)">订单退款</el-button>
|
<template v-if="scope.row.status == 'done'">
|
||||||
|
订单退款
|
||||||
|
</template>
|
||||||
|
<template
|
||||||
|
v-else-if="scope.row.status == 'part_refund' || (scope.row.status == 'refund' && scope.row.refundAmount < scope.row.payAmount)">
|
||||||
|
部分退单
|
||||||
|
</template>
|
||||||
|
<template v-else-if="scope.row.status == 'refund'">
|
||||||
|
已退订单
|
||||||
|
</template>
|
||||||
|
<template v-else>
|
||||||
|
不可退单
|
||||||
|
</template>
|
||||||
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<el-button type="success" @click="PrintDrawerRef.show(scope.row)">
|
<el-button type="success" @click="PrintDrawerRef.show(scope.row)">
|
||||||
@@ -173,8 +193,8 @@ function filterLable(key, type) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 过滤退款条件
|
// 过滤退款条件
|
||||||
function refundState(state) {
|
function refundState(row) {
|
||||||
switch (state) {
|
switch (row.status) {
|
||||||
case 'unpaid':
|
case 'unpaid':
|
||||||
return true;
|
return true;
|
||||||
case 'in-production':
|
case 'in-production':
|
||||||
@@ -186,7 +206,11 @@ function refundState(state) {
|
|||||||
case 'refunding':
|
case 'refunding':
|
||||||
return false;
|
return false;
|
||||||
case 'refund':
|
case 'refund':
|
||||||
return true;
|
if (row.refundAmount < row.payAmount) {
|
||||||
|
return false
|
||||||
|
} else {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
case 'part-refund':
|
case 'part-refund':
|
||||||
return false;
|
return false;
|
||||||
case 'cancelled':
|
case 'cancelled':
|
||||||
|
|||||||
Reference in New Issue
Block a user