Merge pull request '完成发货接口的开发' (#61) from Brunch_LPQ into main

pull/63/head
ppnwsfegt 1 month ago
commit b3d05f8d65

@ -1,9 +1,11 @@
package com.itmk.web.order.controller;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.itmk.utils.ResultUtils;
import com.itmk.utils.ResultVo;
import com.itmk.web.order.entity.OrderParm;
import com.itmk.web.order.entity.SendParm;
import com.itmk.web.order.entity.UserOrder;
import com.itmk.web.order.entity.WxOrderParm;
import com.itmk.web.order.service.UserOrderService;
@ -36,4 +38,17 @@ public class UserOrderController {
IPage<UserOrder> orderList = userOrderService.getPcOrderList(parm);
return ResultUtils.success("查询成功!",orderList);
}
//发货
@PutMapping("/sendOrder")
public ResultVo sendOrder(@RequestBody SendParm parm){
//更新条件
LambdaUpdateWrapper<UserOrder> query = new LambdaUpdateWrapper<>();
query.eq(UserOrder::getOrderId,parm.getOrderId())
.set(UserOrder::getStatus,"1");
if(userOrderService.update(query)){
return ResultUtils.success("更新成功!");
}
return ResultUtils.error("更新失败!");
}
}

@ -0,0 +1,9 @@
package com.itmk.web.order.entity;
import lombok.Data;
@Data
public class SendParm {
private Long orderId;
}

@ -1,6 +1,11 @@
import http from "../../http";
import type { OrderListParm } from "./OrderModel";
//列表
export const gePcOrdertListApi = (parm:OrderListParm)=>{
return http.get("/wxapi/order/getPcOrderList",parm)
export const gePcOrdertListApi = (parm: OrderListParm) => {
return http.get("/wxapi/order/getPcOrderList", parm)
}
// 发货
export const sendOrderApi = (orderId: string) => {
return http.put("/wxapi/order/sendOrder", { orderId: orderId })
}

@ -1,63 +1,77 @@
import type { OrderListParm } from '../../api/order/OrderModel'
import {nextTick, onMounted, reactive, ref} from 'vue'
import { gePcOrdertListApi } from '../../api/order'
export default function useOrderTable(){
//表格高度
const tableHeight = ref(0)
//表格数据
const tableList = ref([])
//表格查询的参数
const listParm = reactive<OrderListParm>({
currentPage:1,
pageSize:10,
type:'',
userName:'',
total:0
})
//列表
const getList = async()=>{
let res = await gePcOrdertListApi(listParm)
if(res && res.code == 200){
//设置表格数据
tableList.value = res.data.records;
//设置分页总条数
listParm.total = res.data.total;
}
}
//搜索
const searchBtn = ()=>{
getList()
}
//重置
const resetBtn = ()=>{
listParm.currentPage = 1;
listParm.type = ''
getList()
import { nextTick, onMounted, reactive, ref } from 'vue'
import { gePcOrdertListApi, sendOrderApi } from '../../api/order'
import useInstance from '@/hooks/useInstance'
export default function useOrderTable() {
const { global } = useInstance()
//表格高度
const tableHeight = ref(0)
//表格数据
const tableList = ref([])
//表格查询的参数
const listParm = reactive<OrderListParm>({
currentPage: 1,
pageSize: 10,
type: '',
userName: '',
total: 0
})
//列表
const getList = async () => {
let res = await gePcOrdertListApi(listParm)
if (res && res.code == 200) {
//设置表格数据
tableList.value = res.data.records;
//设置分页总条数
listParm.total = res.data.total;
}
//页容量改变触发
const sizeChange = (size:number)=>{
listParm.pageSize = size;
}
//搜索
const searchBtn = () => {
getList()
}
//重置
const resetBtn = () => {
listParm.currentPage = 1;
listParm.type = ''
getList()
}
//页容量改变触发
const sizeChange = (size: number) => {
listParm.pageSize = size;
getList()
}
//页数改变触发
const currentChange = (page: number) => {
listParm.currentPage = page;
getList()
}
// 发货
const sendOrder = async (orderId: string) => {
let confirm = await global.$myconfirm('确定发货吗?')
if (confirm) {
let res = await sendOrderApi(orderId)
if (res && res.code == 200) {
getList()
}
}
//页数改变触发
const currentChange = (page:number)=>{
listParm.currentPage = page;
getList()
}
onMounted(()=>{
getList()
nextTick(()=>{
tableHeight.value = window.innerHeight - 220
})
}
onMounted(() => {
getList()
nextTick(() => {
tableHeight.value = window.innerHeight - 220
})
return{
tableList,
listParm,
getList,
searchBtn,
resetBtn,
sizeChange,
currentChange,
tableHeight
}
})
return {
tableList,
sendOrder,
listParm,
getList,
searchBtn,
resetBtn,
sizeChange,
currentChange,
tableHeight
}
}

@ -1,102 +1,103 @@
<template>
<el-main>
<!-- 搜索栏 -->
<el-form :model="listParm" :inline="true" size="default">
<el-form-item>
<el-input
v-model="listParm.userName"
placeholder="请输入姓名"
></el-input>
</el-form-item>
<el-form-item>
<el-button :icon="Search" @click="searchBtn"></el-button>
<el-button @click="resetBtn" type="danger" plain :icon="Close"
>重置</el-button
>
</el-form-item>
</el-form>
<!-- 表格
主子表的关键
1父表需要设置 row-key字段
2设置type = 'expand'
-->
<el-table
row-key="orderId"
:height="tableHeight"
:data="tableList"
border
stripe
>
<el-table-column type="expand">
<template #default="scope">
<el-table :data="scope.row.goodsList" border stripe>
<el-table-column label="菜品图片" prop="goodsImage">
<template #default="scope">
<el-image
:src="scope.row.goodsImage.split(',')[0]"
style="height: 60px; width: 60px; border-radius: 50%"
></el-image>
</template>
</el-table-column>
<el-table-column label="名称" prop="goodsName"></el-table-column>
<el-table-column label="价格" prop="price"></el-table-column>
<el-table-column label="规格" prop="specsName"></el-table-column>
</el-table>
</template>
</el-table-column>
<el-table-column label="姓名" prop="userName"></el-table-column>
<el-table-column label="电话" prop="phone"></el-table-column>
<el-table-column label="地址" prop="address"></el-table-column>
<el-table-column label="价格" prop="price"></el-table-column>
<el-table-column label="下单时间" prop="createTime"></el-table-column>
<el-table-column label="发货状态" prop="status">
<template #default="scope">
<el-tag v-if="scope.row.status == '0'" type="danger" size="default"
>待发货</el-tag
<el-main>
<!-- 搜索栏 -->
<el-form :model="listParm" :inline="true" size="default">
<el-form-item>
<el-input
v-model="listParm.userName"
placeholder="请输入姓名"
></el-input>
</el-form-item>
<el-form-item>
<el-button :icon="Search" @click="searchBtn"></el-button>
<el-button @click="resetBtn" type="danger" plain :icon="Close"
>重置</el-button
>
<el-tag v-if="scope.row.status == '1'" size="default" effect="dark"
>已发货</el-tag
>
<el-tag v-if="scope.row.status == '2'" size="default" effect="dark"
>已收货</el-tag
>
</template>
</el-table-column>
<el-table-column label="操作" width="200" align="center">
<template #default="scope">
<el-button type="primary" :icon="Edit" size="default">发货</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<el-pagination
@size-change="sizeChange"
@current-change="currentChange"
:current-page.sync="listParm.currentPage"
:page-sizes="[10, 20, 40, 80, 100]"
:page-size="listParm.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="listParm.total"
background
>
</el-pagination>
</el-main>
</template>
<script setup lang="ts">
import { Search, Close, Plus, Edit, Delete } from "@element-plus/icons-vue";
import useOrderTable from "../../compositions/order/useOrderTable";
//
const {
tableList,
getList,
listParm,
resetBtn,
searchBtn,
sizeChange,
currentChange,
tableHeight,
} = useOrderTable();
</script>
<style scoped></style>
</el-form-item>
</el-form>
<!-- 表格
主子表的关键
1父表需要设置 row-key字段
2设置type = 'expand'
-->
<el-table
row-key="orderId"
:height="tableHeight"
:data="tableList"
border
stripe
>
<el-table-column type="expand">
<template #default="scope">
<el-table :data="scope.row.goodsList" border stripe>
<el-table-column label="菜品图片" prop="goodsImage">
<template #default="scope">
<el-image
:src="scope.row.goodsImage.split(',')[0]"
style="height: 60px; width: 60px; border-radius: 50%"
></el-image>
</template>
</el-table-column>
<el-table-column label="名称" prop="goodsName"></el-table-column>
<el-table-column label="价格" prop="price"></el-table-column>
<el-table-column label="规格" prop="specsName"></el-table-column>
</el-table>
</template>
</el-table-column>
<el-table-column label="姓名" prop="userName"></el-table-column>
<el-table-column label="电话" prop="phone"></el-table-column>
<el-table-column label="地址" prop="address"></el-table-column>
<el-table-column label="价格" prop="price"></el-table-column>
<el-table-column label="下单时间" prop="createTime"></el-table-column>
<el-table-column label="发货状态" prop="status">
<template #default="scope">
<el-tag v-if="scope.row.status == '0'" type="danger" size="default"
>待发货</el-tag
>
<el-tag v-if="scope.row.status == '1'" size="default" effect="dark"
>已发货</el-tag
>
<el-tag v-if="scope.row.status == '2'" size="default" effect="dark"
>已收货</el-tag
>
</template>
</el-table-column>
<el-table-column label="操作" width="200" align="center">
<template #default="scope">
<el-button type="primary" @click="sendOrder(scope.row.orderId)" :icon="Edit" size="default">发货</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<el-pagination
@size-change="sizeChange"
@current-change="currentChange"
:current-page.sync="listParm.currentPage"
:page-sizes="[10, 20, 40, 80, 100]"
:page-size="listParm.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="listParm.total"
background
>
</el-pagination>
</el-main>
</template>
<script setup lang="ts">
import { Search, Close, Plus, Edit, Delete } from "@element-plus/icons-vue";
import useOrderTable from "../../compositions/order/useOrderTable";
//
const {
tableList,
sendOrder,
listParm,
resetBtn,
searchBtn,
sizeChange,
currentChange,
tableHeight,
} = useOrderTable();
</script>
<style scoped></style>
Loading…
Cancel
Save