fix: 积分订单问题、会员等级设置问题

This commit is contained in:
lzhizhao 2025-06-16 10:21:11 +08:00
parent bd156edb60
commit a3a1c08527
3 changed files with 559 additions and 352 deletions

View File

@ -78,24 +78,28 @@ export default {
}, },
methods: { methods: {
queryTableData(pageNo, pageSize) { queryTableData(pageNo, pageSize) {
setTimeout(() => { this.$api.marketing.marketingLevelPage(this.modalData).then((res) => {
setTimeout(() => { let list = res.data.data ? res.data.data : [];
this.$refs.oTableThree.complete([ this.$refs.oTableThree.complete(list)
{ });
levelName: "", // setTimeout(() => {
requiredGrowthValue: 0, // setTimeout(() => {
growthValueUpperLimit: 999999999, // this.$refs.oTableThree.complete([
enableMemberDiscount: false, // {
enablePointsRedemption: false, // levelName: "",
enableBirthdayCoupons: false, // requiredGrowthValue: 0,
enableBirthdayReward: false, // growthValueUpperLimit: 999999999,
discountRate: "", // enableMemberDiscount: false,
rewardEffectiveTimeType: "", // enablePointsRedemption: false,
memberLevelCouponsList: [], // enableBirthdayCoupons: false,
}, // enableBirthdayReward: false,
]); // discountRate: "",
}); // rewardEffectiveTimeType: "",
}, 10); // memberLevelCouponsList: [],
// },
// ]);
// });
// }, 10);
}, },
toggle(e) { toggle(e) {
if (this.modalConfig.show == false) { if (this.modalConfig.show == false) {
@ -515,4 +519,4 @@ export default {
}, },
asyncComputed: {}, asyncComputed: {},
}; };
</script> </script>

View File

@ -1,375 +1,257 @@
<template> <template>
<div> <div style="height: calc(100vh - 200px)">
<div v-if="isShopId" style="height: calc(100vh - 200px)"> <el-form
<obj-table-plus v-if="storeList.length > 1"
ref="oTable" :inline="true"
style="height: 100%" :model="formInline"
:tableCols="tableCols" class="demo-form-inline"
:tableProp="tableProp" >
@query="queryList" <el-form-item label="摊铺">
v-model="dataList" <el-select
:tableEvent="tableEvent" class="filter-item"
:enableAutoQuery="false" style="width: 200px"
> v-model="formInline.shopId"
<template slot="tableTop"> placeholder="请选择摊铺"
<el-form :inline="true" :model="formInline" class="demo-form-inline"> >
<el-form-item label="订单号"> <el-option
<el-input v-for="item in storeList"
v-model="formInline.name" :key="item.shopId"
placeholder="订单号搜索" :label="item.shopName"
></el-input> :value="item.shopId"
</el-form-item> >
<el-form-item label="商品名称"> </el-option>
<el-input </el-select>
v-model="formInline.name" </el-form-item>
placeholder="商品名称或id" <el-form-item label="商品名称">
></el-input> <el-input
</el-form-item> v-model="formInline.productName"
<el-form-item label="下单时间"> placeholder="商品名称"
<el-date-picker ></el-input>
v-model="value1" </el-form-item>
type="datetimerange" <!-- <el-form-item label="预售时间"> -->
start-placeholder="开始日期" <!-- <el-date-picker -->
end-placeholder="结束日期" <!-- @change="changeValueOne" -->
> <!-- value-format="yyyy-MM-dd HH:mm:ss" -->
</el-date-picker> <!-- v-model="valueOne" -->
</el-form-item> <!-- type="datetimerange" -->
<el-form-item> <!-- start-placeholder="开始日期" -->
<el-button type="primary" @click="$refs.oTable.reload()" <!-- end-placeholder="结束日期" -->
>查询</el-button <!-- > -->
> <!-- </el-date-picker> -->
<el-button type="primary" @click="Reset">重置</el-button> <!-- </el-form-item> -->
</el-form-item> <el-form-item>
</el-form> <el-button type="primary" @click="getList">查询</el-button>
<el-tabs v-model="activeName" @tab-click="handleClick"> <el-button type="primary" @click="Reset">重置</el-button>
<el-tab-pane <el-button
v-for="item in statusList" type="success"
:key="item.value" @click="
:label="item.label" $router.push({ name: 'operation-management-total-order/index' })
:name="item.value" "
></el-tab-pane> >菜市场总订单</el-button
</el-tabs> >
<div class="mb-2"> </el-form-item>
<el-button type="primary" size="small" @click="addProduct" </el-form>
>批量导出</el-button <el-tabs v-model="formInline.group" @tab-click="handleClick">
> <el-tab-pane
v-for="item in statusList"
:key="item.value"
:label="item.label"
:name="item.value"
></el-tab-pane>
</el-tabs>
<el-table :data="tableData" height="70vh" border style="width: 100%">
<el-table-column type="expand">
<template slot-scope="props">
<div style="padding-left: 20px" m="4">
<el-table :data="props.row.productOrders" :border="true">
<el-table-column type="index" width="50" label="序号">
</el-table-column>
<el-table-column label="商品订单号" prop="productOrderNo" />
<el-table-column label="商品名称" prop="productName" />
<el-table-column label="商品原价" prop="originPrice" />
<el-table-column label="商品终价" prop="finalPrice" />
<el-table-column label="商品订单金额" prop="productOrderMoney" />
<el-table-column label="商品数量" prop="productCount" />
<el-table-column label="商品单价" prop="productFinalPrice" />
<el-table-column label="商品图片" prop="productImg">
<template slot-scope="scope">
<el-image
style="width: 60px; height: 60px"
:src="scope.row.productImg"
:preview-src-list="[scope.row.productImg]"
>
</el-image>
</template>
</el-table-column>
</el-table>
</div> </div>
</template> </template>
</obj-table-plus> </el-table-column>
<!-- 添加或编辑 --> <el-table-column label="总订单号" prop="orderNo" />
<!-- <add-or-update <el-table-column label="结算单位订单号" prop="unitOrderNo" />
:marketId="formInline.marketId" <el-table-column label="总商品数量" prop="productCount" />
:shopId="formInline.shopId" <el-table-column label="订单状态" prop="preSaleStage">
@queryList="$refs.oTable.reload()" <template slot-scope="scope">
ref="addOrUpdate" {{
></add-or-update> --> scope.row.preSaleStage === 1
</div> ? '已付定金'
<div style="height: calc(100vh - 200px)" v-else> : scope.row.preSaleStage === 2
<el-empty :image-size="200" description="您不是摊主哦"></el-empty> ? '已付尾款'
: '待付定金'
}}
</template>
</el-table-column>
<el-table-column label="顾客实际支付" prop="totalMoney" />
<el-table-column label="商品总价" prop="productMoney" />
<el-table-column label="配送费" prop="deliveryMoney" />
<el-table-column label="优惠券减免" prop="couponMoney" />
<el-table-column label="支付时间" prop="payTime" />
<el-table-column label="预计送达时间" prop="predictDeliveryTime" />
<el-table-column label="预计收入" prop="predictIncome" />
<el-table-column label="距离" prop="distance" />
<el-table-column label="备注" prop="remark" />
<el-table-column fixed="right" width="100px" label="操作" align="center">
<template slot-scope="scope">
<el-button type="primary" size="mini" @click="view(scope.row)">
查看
</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<div class="pagination-container">
<el-pagination
:current-page="formInline.pageNumber"
:page-sizes="[10, 20, 30, 50]"
:page-size="formInline.pageSize"
:total="total"
background
layout="total, sizes, prev, pager, next, jumper"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
</div> </div>
<!-- 订单详情 -->
<viewDetails ref="viewDetails"></viewDetails>
</div> </div>
</template> </template>
<script> <script>
// import AddDiscount from "./popup/add-discount.vue"; import viewDetails from './popup/view-details.vue'
// import AddPrice from "./popup/add-price.vue"; import { mapState } from 'vuex'
// import AddOrUpdate from "./popup/add-or-update.vue";
// import earlyWarning from "./popup/early-warning.vue";
export default { export default {
// components: { earlyWarning, AddOrUpdate }, components: { viewDetails },
data() { data() {
return { return {
activeName: "5", valueOne: [],
value1: "1",
advanceSellStatus: "",
dataList: [],
formInline: { formInline: {
name: "", group: '',
marketId: "", shopId: '',
shopId: "", pageNumber: 1,
}, pageSize: 10,
marketList: [], productName: '',
tableProp: { startTime: '',
"auto-resize": true, endTime: ''
border: true,
height: "auto",
"row-id": "id",
"show-overflow": false,
}, },
statusList: [ statusList: [
{ {
label: "全部", label: '全部订单',
value: "5", value: '0'
}, },
{ {
label: "代发货", label: '待备货',
value: "0", value: '1'
}, },
{ {
label: "带收货", label: '待取货',
value: "1", value: '2'
}, },
{ {
label: "待评价", label: '待收货',
value: "2", value: '3'
}, },
{ {
label: "已取消", label: '已完成',
value: "3", value: '4'
}, }
{
label: "交易关闭",
value: "3",
},
{
label: "已完成",
value: "3",
},
], ],
productFilterType: "SALE", tableData: [],
selectList: [], total: 0
isShopId: "",
storeList: [],
};
},
created() {
if (JSON.parse(sessionStorage.getItem("userInfo")).markets?.length > 0) {
this.isShopId = true;
this.formInline.marketId = JSON.parse(
sessionStorage.getItem("userInfo")
).markets[0].marketId;
this.marketList = JSON.parse(sessionStorage.getItem("userInfo")).markets;
console.log(this.marketList);
this.getData();
} else if (JSON.parse(sessionStorage.getItem("userInfo")).shopId) {
(this.formInline.shopId = JSON.parse(
sessionStorage.getItem("userInfo")
).shopId),
(this.isShopId = true);
this.$nextTick(() => {
this.$refs.oTable.reload();
});
} else {
this.isShopId = false;
} }
}, },
created() {
this.formInline = {
group: '0',
// marketId: this.marketId,
shopId: this.shopId,
productName: '',
startTime: '',
endTime: ''
}
this.valueOne = []
this.getList()
},
methods: { methods: {
getData() { changeValueOne(e) {
console.log(e)
if (e) {
this.formInline.startTime = e[0]
this.formInline.endTime = e[1]
} else {
this.formInline.startTime = ''
this.formInline.endTime = ''
}
},
getList() {
//
this.$api.mer_admin this.$api.mer_admin
.storeList({ marketId: this.formInline.marketId }) .shopOrderPage({
.then((res) => {
this.storeList = res.data.data;
this.formInline.shopId = res.data.data[0].shopId;
this.$nextTick(() => {
this.$refs.oTable.reload();
});
});
},
addProduct() {
this.$refs.addOrUpdate.toggle().add();
},
deleteProduct() {
console.log(this.selectList);
let integers = this.selectList.map((item) => {
return item.id;
});
this.$confirm("此操作将删除该商品, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
console.log("111");
this.$api.mer_admin.BatchDeleteProducts(integers).then((res) => {
this.$refs.oTable.reload();
});
})
.catch(() => {
this.$message({
type: "info",
message: "已取消删除",
});
});
},
queryList(pageNo, pageSize) {
this.$api.preSale
.preSaleProducts({
pageNumber: pageNo,
pageSize: pageSize,
...this.formInline, ...this.formInline,
advanceSellStatus: this.advanceSellStatus, orderCategory: 2
merchantId: JSON.parse(sessionStorage.getItem("userInfo")).merchantId,
productQuerySortParam: [],
}) })
.then((res) => { .then(res => {
console.log(res); console.log(res)
this.$refs.oTable.complete( this.tableData = res.data.data.data
res.data.data.data, this.total = Number(res.data.data.total)
Number(res.data.data.total)
);
}) })
.catch((err) => {
this.$refs.oTable.complete(false);
});
}, },
Reset() { Reset() {
this.formInline = { this.formInline = {
name: "", group: '0',
marketId: JSON.parse(sessionStorage.getItem("userInfo")).markets[0] shopId: this.shopId,
.marketId, productName: '',
}; startTime: '',
this.$refs.oTable.reload(); endTime: ''
}
this.valueOne = []
this.getList()
}, },
handleClick(e) { handleClick(e) {
console.log(e.name); this.advanceSellStatus = e.name
if (e.name == "5") { this.getList()
this.advanceSellStatus = "";
} else {
this.advanceSellStatus = e.name;
}
this.$refs.oTable.reload();
}, },
addEarlyWarning() { view(row) {
this.$refs.earlyWarning.toggle().add(); this.$refs.viewDetails.toggle(row).update()
}, },
handleSizeChange(val) {
this.formInline.pageSize = val
this.getList()
},
handleCurrentChange(val) {
this.formInline.pageNumber = val
this.getList()
}
}, },
computed: { computed: {
tableCols() { ...mapState('userData', [
return [ 'isMerchant',
{ type: "checkbox", width: "60px", fixed: "left" }, 'marketList',
// { type: "seq", width: "60px", align: "center", title: "" }, 'storeList',
{ 'marketId',
title: "订单号", 'shopId'
align: "center", ])
field: "id", }
}, }
{
title: "订单商品",
field: "productPhotoList",
align: "center",
width: "80px",
type: "jsx",
render: ({ row }) => {
if (row.productPhotoList.length > 0) {
return (
<el-image
preview-src-list={row.productPhotoList.map((item) => {
return item.url;
})}
src={row.productPhotoList[0].url}
></el-image>
);
} else {
return <span>暂无商品图</span>;
}
},
},
{
title: "规格/数量",
align: "center",
field: "startTime",
type: "jsx",
render: ({ row }) => {
return (
<span>
{row.startTime}{row.endTime}
</span>
);
},
},
{
title: "兑换积分",
align: "center",
field: "minSalePrice",
type: "jsx",
render: ({ row }) => {
return (
<span>
{row.balancePaymentStartTime}{row.balancePaymentEndTime}
</span>
);
},
},
{
title: "下单时间",
align: "center",
field: "presalePrice",
type: "jsx",
render: ({ row }) => {
if (
Math.min.apply(
Math,
row.productSpecificationList.map((item) => item.presalePrice)
) ==
Math.max.apply(
Math,
row.productSpecificationList.map((item) => item.presalePrice)
)
) {
return (
<span>
{Math.min.apply(
Math,
row.productSpecificationList.map(
(item) => item.presalePrice
)
)}
</span>
);
} else {
return (
<span>
{Math.min.apply(
Math,
row.productSpecificationList.map(
(item) => item.presalePrice
)
)}
{Math.max.apply(
Math,
row.productSpecificationList.map(
(item) => item.presalePrice
)
)}
</span>
);
}
},
},
{
title: "操作",
fixed: "right",
type: "jsx",
align: "center",
width: "100px",
render: ({ row }) => {
let changeInventory = () => {
this.$refs.addStock.toggle(row).update();
};
return (
<div>
<el-button size="mini" type="primary" onClick={changeInventory}>
查看
</el-button>
</div>
);
},
},
];
},
tableEvent() {
return {
"checkbox-all": ({ records, reserves }) => {
this.selectList = [...records, ...reserves];
},
"checkbox-change": ({ records, reserves }) => {
this.selectList = [...records, ...reserves];
},
};
},
},
};
</script> </script>
<style lang="scss" scoped></style> <style lang="scss" scoped></style>

View File

@ -0,0 +1,321 @@
<template>
<div>
<obj-modal
ref="modal"
labelWidth="150px"
:modalConfig="modalConfig"
:modalData="modalData"
:modalHandles="modalHandles"
>
<div slot="dialog__content">
<el-form
:model="ruleForm"
ref="ruleForm"
label-width="150px"
class="demo-ruleForm"
>
<el-row>
<el-col :span="8">
<el-form-item label="订单状态:">
<span>
{{
ruleForm.preSaleStage === 1
? '已付定金'
: ruleForm.preSaleStage === 2
? '已付尾款'
: '待付定金'
}}
</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="总订单号:">
<span>{{ ruleForm.orderNo }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label=" 结算单位订单号:">
<span>{{ ruleForm.unitOrderNo }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="总商品数量:">
<span>{{ ruleForm.productCount }}</span>
</el-form-item></el-col
>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="顾客支付:">
<span>{{ ruleForm.totalMoney }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="配送费:">
<span>{{ ruleForm.deliveryMoney }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="优惠券减免:">
<span>{{ ruleForm.couponMoney }}</span>
</el-form-item></el-col
>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="下单时间:">
<span>{{ ruleForm.payTime }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="预计送达时间:">
<span>{{ ruleForm.predictDeliveryTime }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="预计收入:">
<span>{{ ruleForm.predictIncome }}</span>
</el-form-item></el-col
>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="距离:">
<span>{{ ruleForm.distance }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="预计自动取消时间:">
<span>{{ ruleForm.predictAutoCancelTime }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="备注:">
<span>{{ ruleForm.remark }}</span>
</el-form-item></el-col
>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="包装费:">
<span>{{ ruleForm.packageMoney }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="平台服务费:">
<span>{{ ruleForm.platformMoney }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="备餐完成时间:">
<span>{{ ruleForm.completePrepareTime }}</span>
</el-form-item></el-col
>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="开始配送时间:">
<span>{{ ruleForm.startDeliveryTime }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="配送完成时间:">
<span>{{ ruleForm.completeDeliveryTime }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="下单时间:">
<span>{{ ruleForm.createTime }}</span>
</el-form-item></el-col
>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="完成取货时间:">
<span>{{ ruleForm.pickTime }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<el-form-item label="订单完成时间:">
<span>{{ ruleForm.completeTime }}</span>
</el-form-item></el-col
>
<el-col :span="8">
<!-- <el-form-item label="配送方式:">
<span>{{ ruleForm.deliveryType }}</span>
</el-form-item> -->
</el-col>
</el-row>
<div style="padding: 0 0 0 20px; font-size: 16px; font-weight: 600">
订单商品
</div>
<div style="padding: 20px">
<div style="border-top: 1px solid #ccc; padding: 10px 0 0 0">
<el-table
border
ref="multipleTable"
:data="ruleForm.productOrders"
tooltip-effect="dark"
style="width: 100%"
@selection-change="handleSelectionChange"
>
<el-table-column
prop="shopName"
align="center"
label="店铺名称"
width="80"
>
</el-table-column>
<el-table-column
align="center"
label="商品名称"
prop="productName"
/>
<el-table-column
align="center"
label="商品图片"
prop="productImg"
>
<template slot-scope="scope">
<el-image
style="width: 60px; height: 60px"
:src="scope.row.productImg"
:preview-src-list="[scope.row.productImg]"
>
</el-image>
</template>
</el-table-column>
<el-table-column
align="center"
label="规格"
prop="productSpecName"
>
</el-table-column>
<el-table-column
align="center"
label="商品原价"
prop="originPrice"
>
</el-table-column>
<el-table-column
align="center"
label="商品终价"
prop="finalPrice"
width="120"
/>
<el-table-column
prop="productOrderMoney"
align="center"
label="商品订单金额"
width="200"
>
</el-table-column>
</el-table>
</div>
</div>
</el-form>
</div>
<!-- 选择商品 -->
</obj-modal>
</div>
</template>
<script>
import { debounce, cloneDeep } from 'lodash'
export default {
components: {},
props: {},
data() {
return {
isAdd: true,
//
modalConfig: {
title: '订单详情',
show: false,
width: '1200px',
fullscreen: true
},
modalData: {},
ruleForm: {},
tableData: []
}
},
watch: {
// "modalConfig.show"(newVal) {
// if (newVal) {
// //
// setTimeout(() => {
// this.$refs.ruleForm.resetFields();
// });
// }
// },
},
methods: {
queryTableData(pageNo, pageSize) {},
toggle(e) {
if (this.modalConfig.show == false) {
this.modalConfig.show = true
} else {
this.modalConfig.show = false
}
if (e) {
this.init(cloneDeep(e))
}
return {
add: () => {
this.modalConfig.title = '订单详情'
this.isAdd = true
},
update: () => {
this.modalConfig.title = '订单详情'
this.isAdd = false
}
}
},
init(row) {
console.log(row)
this.ruleForm = row
},
handleSelectionChange(e) {
console.log(e)
},
getRefundStatus(val) {
if (val == 0) {
return '正常'
} else if (val == 1) {
return '退款中'
} else if (val == 2) {
return '完全退款'
} else if (val == 3) {
return '部分退款'
} else if (val == 4) {
return '拒绝用户退款'
} else if (val == -1) {
return '退款失败'
} else if (val == -2) {
return '用户申请退款中'
}
}
},
computed: {
modalHandles() {
return [
{
label: '关闭',
handle: () => {
this.toggle()
}
}
// {
// label: "",
// type: "primary",
// // submit: true,
// handle: () => {
// },
// },
]
}
},
asyncComputed: {}
}
</script>
<style lang="scss" scoped></style>