jiangchengfeiyi-Web/src/views/CostumeAppointments/AppointmentOrder.vue

152 lines
5.4 KiB
Vue
Raw Normal View History

2024-12-02 01:49:09 +00:00
<template>
<div style="margin-bottom: 20px">
2025-03-04 08:30:31 +00:00
<el-input style="width: 250px; height: 30px; margin-right: 10px; font-size: 14px" suffix-icon="Search"
placeholder="请输入订单编号" v-model="orderNumber"></el-input>
<el-button class="ml-5" type="primary" @click="load" style="height: 30px;">搜索</el-button>
<el-button type="warning" @click="reset" style="height:30px">重置</el-button>
2024-12-02 01:49:09 +00:00
</div>
<!-- 数据展示层 -->
<el-table v-loading="loading" :data="tableData" border stripe header-cell-class-name="headerBg"
2025-03-04 08:30:31 +00:00
:cell-style="{ 'text-align': 'center', 'font-size': '16px' }" @selection-change="handleSelectionChange"
:header-cell-style="{ 'text-align': 'center' }" :row-style="{ height: '70px' }">
<!-- <el-table-column type="selection" width="55" fixed="left"></el-table-column> -->
<el-table-column prop="id" label="订单序号" width="80">
<template #default="{ $index }">
{{ $index + 1 }}
</template>
</el-table-column>
<el-table-column prop="orderNumber" label="订单编号" width="300"></el-table-column>
<el-table-column prop="createTime" label="下单时间" width="180"></el-table-column>
<el-table-column prop="totalAmount" label="订单实付金额"></el-table-column>
<el-table-column prop="orderStatus" label="订单状态"></el-table-column>
<el-table-column label="操作" width="220px" fixed="right">
2024-12-02 01:49:09 +00:00
<template #default="scope">
2025-03-03 12:50:33 +00:00
<el-button size="small" @click="showDetail(scope.row)">
详情
</el-button>
2025-03-04 08:30:31 +00:00
<el-popconfirm confirm-button-text='确定' cancel-button-text='取消' icon="InfoFilled" icon-color="red"
title="确定要退款吗?" @confirm="deleteOrder(scope.row)" width=180>
<template #reference>
<el-button :disabled="!['待发货'].includes(scope.row.orderStatus)" size="small" type="danger" plain>退款</el-button>
</template>
</el-popconfirm>
2024-12-02 01:49:09 +00:00
</template>
</el-table-column>
</el-table>
<!-- 分页器 -->
<div style="padding: 10px 0">
2024-12-10 11:27:49 +00:00
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
2025-03-04 08:30:31 +00:00
:current-page="searchParams.current" :page-size="searchParams.pageSize" :page-sizes="[5, 10, 15, 20]"
:small="null" :disabled="null" :background="null" layout="total, sizes, prev, pager, next, jumper"
:total="total" />
</div>
2024-12-02 01:49:09 +00:00
</template>
<script lang="ts" setup>
import { onMounted, ref } from "vue";
2024-12-02 01:49:09 +00:00
import myAxios from "@/api/myAxios";
import { ElMessage } from "element-plus";
2025-03-04 08:30:31 +00:00
import { SuccessInfo, ErrorInfo } from "@/utils/messageInfo";
import { useRouter, useRoute } from "vue-router";
import emitter from "@/utils/emitter";
const tableData: any = ref([]); //表单展示数据
const total = ref(0);
const orderNumber = ref('')
const searchParams: any = ref({ //封装分页
current: 1, //当前页码
pageSize: 5, //每页显示条数
sortField: "id", //根据ID分类
sortOrder: "descend", //降序
orderType: 'service'
2024-12-02 01:49:09 +00:00
})
2025-03-04 08:30:31 +00:00
const router = useRouter()
2025-03-03 12:50:33 +00:00
const route = useRoute()
const loading = ref(false)
onMounted(() => {
getOrderList() //页面加载获取订单列表
})
const handleSizeChange = (newSize: any) => {
searchParams.value.pageSize = newSize //新的页面数
getOrderList()
2024-12-02 01:49:09 +00:00
}
const handleCurrentChange = (Current: any) => {
searchParams.value.current = Current
getOrderList()
2024-12-02 01:49:09 +00:00
}
const handleSelectionChange = (row: any) => {
// id.value = JSON.parse(JSON.stringify(row));
}
//获取写真预约订单列表
const getOrderList = async () => {
try {
searchParams.value.orderNumber = orderNumber.value
const res = await myAxios.post('/advanceOrder/list', { ...searchParams.value });
console.log('订单信息--->', res.data.data);
if (res.data.code === 1) {
tableData.value = res.data.data.records;
total.value = parseInt(res.data.data.total)
console.log('表单信息--->', tableData.value);
} else {
ElMessage({
message: '获取数据失败',
});
}
} catch (error) {
2024-12-02 01:49:09 +00:00
ElMessage({
message: '发生错误',
});
2024-12-02 01:49:09 +00:00
}
}
//查看订单详情
2025-03-03 12:50:33 +00:00
const showDetail = (row: any) => {
2025-03-04 08:30:31 +00:00
router.push({ //不会将参数显示到地址栏中,这么做要修改routes中对应的path
name: '写真预约订单详情',
params: {
id: row.id
}
2025-03-03 12:50:33 +00:00
})
};
2025-03-04 08:30:31 +00:00
const deleteOrder = async (row: any) => { //微信退款
loading.value = true
2025-03-04 08:30:31 +00:00
console.log('row-->', row)
const res = await myAxios.post('/wechat/refund/create', { id: row.id }) //传入订单号取消订单并退款
console.log(res)
2025-03-04 08:30:31 +00:00
setTimeout(() => {
if (res.data.code === 1) {
SuccessInfo('退款成功')
getOrderList()
loading.value = false
}
2025-03-04 08:30:31 +00:00
}, 10000)
2024-12-10 11:27:49 +00:00
}
const reset = () => { //重置搜索框
orderNumber.value = ''
};
const load = () => {
getOrderList()
} //搜索的方法
2025-03-04 08:30:31 +00:00
const cancelOrder = async (row: any) => { //取消订单的方法(未支付能取消)
console.log('点击的这一行--->', row);
const res = await myAxios.post('/order/cancel/id', { id: row.id })
if (res.data.code === 1) {
getOrderList()
SuccessInfo('取消订单成功')
} else {
ErrorInfo('请求错误')
}
2024-12-02 01:49:09 +00:00
}
</script>
<style lang="scss" scoped>
/* 使用 ::v-deep 来修改表头的对齐方式 */
::v-deep .el-table__header th {
2025-03-04 08:30:31 +00:00
text-align: center;
/* 表头居中 */
font-size: 14px;
/* 设置字体大小 */
font-weight: bold;
/* 设置字体加粗 */
font-family: 'Arial', sans-serif;
/* 设置字体 */
}
2024-12-02 01:49:09 +00:00
</style>