This commit is contained in:
weipengfei 2024-07-04 17:59:46 +08:00
parent 74d981c5bd
commit 8f95b9733e
12 changed files with 341 additions and 311 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -50,6 +50,8 @@ const form = ref({
price: 0,
uid: '',
user_ship: '',
village: null,
brigade: null,
});
const cart_id = ref([]);
const isRePay = ref(false);
@ -109,6 +111,8 @@ const handleEnter = () => {
userRechangeAmountApi({
uid: form.value.uid,
user_ship: form.value.user_ship,
village: form.value.village,
brigade: form.value.brigade,
price: form.value.price,
pay_type: pay_type,
auth_code: input.value,
@ -326,6 +330,8 @@ const cashBnt = () => {
userRechangeAmountApi({
uid: form.value.uid,
user_ship: form.value.user_ship,
village: form.value.village,
brigade: form.value.brigade,
price: form.value.price,
pay_type: 17,
})

View File

@ -67,6 +67,7 @@ const printReceipt = (content = "") => {
// -
const letPrintReceipt = (content = "") => {
console.log("预打印");
let str = printTicket(content, true)
console.log(str);
@ -142,7 +143,7 @@ onUnmounted(() => {
justify-content: center;
cursor: pointer;
">
<el-icon color="#fff" size="18" @click="onRefresh">
<el-icon color="#fff" size="25" @click="onRefresh">
<Refresh />
</el-icon>
</div>

View File

@ -41,7 +41,7 @@ onMounted(() => {
<div class="my-code" v-show="type == 1">
<h2>订单核销</h2>
<div class="box">
<input ref="inputRef" v-model="code" placeholder="" class="input" @keyup.enter="handleEnterKey" />
<input ref="inputRef" v-model="code" placeholder="请输入核销码" class="input" @keyup.enter="handleEnterKey" />
<div class="btn" @click="handleEnterKey">查询</div>
</div>
<div class="to-list" @click="handleListed">

View File

@ -129,7 +129,12 @@ onUnmounted(() => {
</div>
<div class="header-input">
<el-input v-model="where.order_id" placeholder="请输入订单编号" @keydown.enter="getOrderList(true)"
@clear="getOrderList(true)" clearable>
@clear="getOrderList(true)" >
<template #suffix>
<el-icon v-if="where.order_id != ''" size="18" @click="where.order_id = '';getOrderList(true)" style="cursor: pointer;margin-right: 0.5rem;">
<CircleClose />
</el-icon>
</template>
<template #append>
<el-button type="primary" style="
background-color: #1890ff;

View File

@ -238,13 +238,12 @@ onUnmounted(() => {
>
</div> -->
</div>
<!-- <div class="update-price">
<div class="update-price">
<el-switch v-model="is_storage" size="large" inline-prompt active-text="存货" inactive-text="不存" />
</div> -->
</div>
</div>
<div class="order-btn">
<el-button class="btn" type="primary" @click="goPay" :disabled="list.length == 0">{{ "立即结账 (F9)"
}}</el-button>
<el-button class="btn" type="primary" @click="goPay" :disabled="list.length == 0">{{ "立即结账 (F9)" }}</el-button>
</div>
</div>
<price ref="priceRef" @changeAllPrice="changeAllPrice"></price>

View File

@ -27,7 +27,7 @@ const name = ref("");
const loadMore = () => {
emit("loadMore", {
store_name_code: name.value,
store_name: name.value,
});
};
@ -86,8 +86,14 @@ onUnmounted(() => {
<div class="header-nav" :class="{ 'input-focus': isfocus }">
<div class="nav-item-label">搜索 (Shift)</div>
<div class="nav-item-input">
<el-input v-model="name" placeholder=" 搜索商品名称/条形码或点击聚焦扫码, 按回车(Enter)搜索" clearable ref="codeRef"
@focus="focus" @blur="blur" @keyup.enter="handleEnter" @clear="handleEnter" />
<el-input v-model="name" placeholder="搜索商品名称/条形码或点击聚焦扫码, 按回车(Enter)搜索" ref="codeRef" @focus="focus"
@blur="blur" @keyup.enter="handleEnter" @clear="handleEnter" style="font-size: 1rem;">
<template #suffix>
<el-icon v-if="name!=''" size="28" @click="name = ''" style="cursor: pointer;margin-right: 1rem;">
<CircleClose />
</el-icon>
</template>
</el-input>
</div>
<div class="nav-item-btn" @click="handleEnter">
<el-button class="btn" type="primary"><el-icon>
@ -288,7 +294,8 @@ onUnmounted(() => {
justify-content: center;
}
}
.no-stock-re{
.no-stock-re {
position: absolute;
top: 0;
left: 0;

View File

@ -43,11 +43,15 @@ const getStoreList = (data = {}, reload = false) => {
...where.value,
...data,
};
console.log("===", data, where.value);
if (reload) {
storeList.value = [];
where.value.page_no = 1;
loadEnd.value = false;
}
if(data.top_cate_id==='') {
where.value.store_name = null;
}
loading.value = true;
saleStoreListApi({
...where.value,
@ -60,11 +64,11 @@ const getStoreList = (data = {}, reload = false) => {
if (res.data?.lists?.length < where.value.page_size) loadEnd.value = true;
storeList.value = storeList.value.concat(res.data.lists);
if (
data.store_name_code &&
data.store_name &&
storeList.value.length == 1 &&
isAllDigits(data.store_name_code)
isAllDigits(data.store_name)
) {
shopRef.value.code = "";
shopRef.value.name = "";
shopRef.value.inputBlur();
changeItem(storeList.value[0]);
}

View File

@ -45,7 +45,7 @@ const changeDate = () => {
getOrderList(true);
};
const disabledDate = (time)=>{
const disabledDate = (time) => {
return time.getTime() > Date.now();
}
@ -104,7 +104,7 @@ onMounted(() => {
orderList.value[activeStore.value].paid = 1;
});
});
onUnmounted(()=>{
onUnmounted(() => {
mitt.off("update-sale-order-detail");
})
</script>
@ -116,77 +116,44 @@ onUnmounted(()=>{
{{ "收银订单" }}
</div>
<div class="nav-item-btn">
<el-radio-group
v-model="tabPosition"
@change="changeTabPosition"
size="small"
>
<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"
style="width: 14rem; margin-left: 1rem"
/>
<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" 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
>
<el-input v-model="where.order_id" placeholder="请输入订单编号" @keydown.enter="getOrderList(true)"
@clear="getOrderList(true)">
<template #suffix>
<el-icon v-if="where.order_id != ''" size="18" @click="where.order_id = '';getOrderList(true)" style="cursor: pointer;margin-right: 0.5rem;">
<CircleClose />
</el-icon>
</template>
<template #append>
<el-button
type="primary"
style="
<el-button type="primary" style="
background-color: #1890ff;
color: #fff;
border-radius: 0 0.315rem 0.315rem 0;
"
@click="getOrderList(true)"
>搜索</el-button
>
" @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="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>
<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>
@ -240,35 +207,43 @@ onUnmounted(()=>{
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: "收银";
@ -281,6 +256,7 @@ onUnmounted(()=>{
border-radius: 0.187rem;
}
}
.cahier2 {
&::before {
content: "平台";
@ -293,38 +269,46 @@ onUnmounted(()=>{
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;
@ -336,11 +320,13 @@ onUnmounted(()=>{
}
}
}
.bottom {
display: flex;
justify-content: space-between;
font-size: 0.9rem;
color: #777;
.manage-btn {
color: #fff;
background-color: #e6a23c;
@ -350,10 +336,12 @@ onUnmounted(()=>{
}
}
}
.item-active {
background-color: #efefef;
}
}
.load-end {
text-align: center;
padding: 1rem;

View File

@ -232,21 +232,31 @@ const updateAddress = async () => {
...addressInfo.value,
uid: formData.value.id
}).then(res => {
ElMessage.success('编辑成功')
selectedEd.value = JSON.parse(JSON.stringify(selectedValues.value))
ElMessage.success('编辑成功');
isDisabled.value = true;
})
}).catch(err => {
cancelUpdate();
} )
}
const cancelUpdate = () => {
selectedValues.value = JSON.parse(JSON.stringify(selectedEd.value))
if(selectedEd.value.length>0){
addressInfo.value.city = selectedEd.value[0]
addressInfo.value.area = selectedEd.value[1]
addressInfo.value.street = selectedEd.value[2]
addressInfo.value.village = selectedEd.value[3]
addressInfo.value.brigade = selectedEd.value[4]
}
isDisabled.value = true;
}
const isDisabled = ref(true);
const activeStore = ref(0);
const activeStoreList = ref(["基本信息"]);
// const activeStoreList = ref(["", ""]);
// const activeStoreList = ref([""]);
const activeStoreList = ref(["基本信息", "用户资产"]);
const isOut = ref(false); //
const productList = ref([]); //
@ -363,7 +373,9 @@ const shipRecharge = () => {
data: {
uid: formData.value.id,
price: shipForm.value.money,
user_ship: shipForm.value.user_ship
user_ship: shipForm.value.user_ship,
village: addressInfo.value.village,
brigade: addressInfo.value.brigade
}
});
payRef.value.drawer = true;
@ -372,11 +384,12 @@ const shipRecharge = () => {
})
}
const rechargeMoney = (type) => {
if(selectedEd.value.length == 0) return ElMessage.error("请先选择用户地址");
shipForm.value.type = type;
if (type == 'add') {
shipForm.value.user_ship = formData.value.user_ship;
shipForm.value.user_ship_name = formData.value.user_ship_name;
changeShip(shipForm.value.user_ship)
changeShip(shipForm.value.user_ship);
}
dialogFormShip.value = true;
}
@ -391,8 +404,10 @@ onMounted(() => {
data.phone = data.mobile + '';
delete data.mobile;
formData.value = Object.assign(res, data);
console.log(formData.value);
// console.log(formData.value);
})
selectedValues.value = [];
selectedEd.value = [];
getAddress();
initProduct(true);
shipForm.value = {
@ -528,7 +543,7 @@ onUnmounted(() => {
<div class="info-item-title">用户地址:</div>
<el-cascader :key="formData.id" style="flex: 1;" v-model="selectedValues" :options="options"
:props="props" :load="loadOptions" class="w-full" :disabled="isDisabled" />
<el-button v-if="isDisabled" type="primary" style="margin-left: 1rem;"
<el-button v-if="isDisabled && !selectedEd.length" type="primary" style="margin-left: 1rem;"
@click="isDisabled = false">修改</el-button>
<el-button v-if="!isDisabled" type="primary" style="margin-left: 1rem;"
@click="updateAddress">确认</el-button>

View File

@ -225,7 +225,12 @@ onUnmounted(() => {
</div>
<div class="header-input">
<el-input v-model="where.mobile" placeholder="搜索手机号" @keydown.enter="getOrderList(true)"
@clear="getOrderList(true)" clearable>
@clear="getOrderList(true)" >
<template #suffix>
<el-icon v-if="where.mobile != ''" size="18" @click="where.mobile = '';getOrderList(true)" style="cursor: pointer;margin-right: 0.5rem;">
<CircleClose />
</el-icon>
</template>
<template #append>
<el-button type="primary" style="
background-color: #1890ff;