javacodeadmin/.history/ruoyi-ui/src/views/system/GoodsOrder/index_20250522180536.vue

597 lines
20 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="主订单号" prop="mainOrderId">
<el-input
v-model="queryParams.mainOrderId"
placeholder="请输入主订单号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="订单号" prop="orderId">
<el-input
v-model="queryParams.orderId"
placeholder="请输入订单号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="支付单号" prop="transactionId">
<el-input
v-model="queryParams.transactionId"
placeholder="请输入微信支付单号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="用户" prop="uid">
<el-select v-model="queryParams.uid" placeholder="请选择用户" clearable filterable>
<el-option v-for="item in userDataList" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="商品" prop="productId">
<el-select v-model="queryParams.productId" placeholder="请选择商品" clearable filterable>
<el-option v-for="item in goodsDataList" :key="item.id" :label="item.title" :value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="支付金额" prop="priceRange">
<el-input
v-model="queryParams.payPriceMin"
placeholder="最低价"
style="width: 100px; margin-right: 10px;"
type="number"
min="0"
clearable
/>
<span style="margin: 0 5px;">-</span>
<el-input
v-model="queryParams.payPriceMax"
placeholder="最高价"
style="width: 100px;"
type="number"
min="0"
clearable
/>
</el-form-item>
<el-form-item label="支付时间">
<el-date-picker
v-model="daterangePayTime"
style="width: 240px"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item>
<el-form-item label="创建时间">
<el-date-picker
v-model="daterangeCreatedAt"
style="width: 240px"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['system:GoodsOrder:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['system:GoodsOrder:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['system:GoodsOrder:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['system:GoodsOrder:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="GoodsOrderList" @selection-change="handleSelectionChange" border>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="ID" align="center" width="55" prop="id" />
<el-table-column label="订单号" align="center" prop="orderId" />
<el-table-column label="用户" align="center" width="95" prop="uname" />
<el-table-column label="商品" align="center" prop="productName" />
<el-table-column label="姓名" align="center" width="75" prop="name" />
<el-table-column label="电话" align="center" width="125" prop="phone" />
<el-table-column label="数量" align="center" width="65" prop="num" />
<el-table-column label="总价" align="center" width="65" prop="totalPrice" />
<el-table-column label="总价" width="120px" align="left" prop="totalPrice" >
<template slot-scope="scope">
<span >¥{{scope.row.totalPrice.toFixed(2)}}</span>
</template>
</el-table-column>
<el-table-column label="支付金额" width="120px" align="left" prop="payPrice" >
<template slot-scope="scope">
<span >¥{{scope.row.payPrice.toFixed(2)}}</span>
</template>
</el-table-column>
<el-table-column label="抵扣金额" width="120px" align="left" prop="deduction" >
<template slot-scope="scope">
<span >¥{{scope.row.deduction.toFixed(2)}}</span>
</template>
</el-table-column>
<el-table-column label="支付时间" align="center" prop="payTime" width="150">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.payTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="订单状态" align="center" prop="status">
<template slot-scope="scope">
<dict-tag :options="dict.type.goods_order_status" :value="scope.row.status"/>
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" prop="createdAt" width="150">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createdAt, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="更新时间}" align="center" prop="updatedAt" width="150">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.updatedAt, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['system:GoodsOrder:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['system:GoodsOrder:remove']"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改商品订单对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="主订单号" prop="mainOrderId">
<el-input v-model="form.mainOrderId" placeholder="请输入主订单号" />
</el-form-item>
<el-form-item label="订单号" prop="orderId">
<el-input v-model="form.orderId" placeholder="请输入订单号" />
</el-form-item>
<el-form-item label="微信支付单号" prop="transactionId">
<el-input v-model="form.transactionId" placeholder="请输入微信支付单号" />
</el-form-item>
<el-form-item label="用户" prop="uid">
<el-input v-model="form.uid" placeholder="请输入用户" />
</el-form-item>
<el-form-item label="商品" prop="productId">
<el-input v-model="form.productId" placeholder="请输入商品" />
</el-form-item>
<el-form-item label="姓名" prop="name">
<el-input v-model="form.name" placeholder="请输入姓名" />
</el-form-item>
<el-form-item label="电话" prop="phone">
<el-input v-model="form.phone" placeholder="请输入电话" />
</el-form-item>
<el-form-item label="地址" prop="address">
<el-input v-model="form.address" placeholder="请输入地址" />
</el-form-item>
<el-form-item label="数量" prop="num">
<el-input v-model="form.num" placeholder="请输入数量" />
</el-form-item>
<el-form-item label="总价" prop="totalPrice">
<el-input v-model="form.totalPrice" placeholder="请输入总价" />
</el-form-item>
<el-form-item label="商品金额" prop="goodPrice">
<el-input v-model="form.goodPrice" placeholder="请输入商品金额" />
</el-form-item>
<el-form-item label="服务金额" prop="servicePrice">
<el-input v-model="form.servicePrice" placeholder="请输入服务金额" />
</el-form-item>
<el-form-item label="支付金额" prop="payPrice">
<el-input v-model="form.payPrice" placeholder="请输入支付金额" />
</el-form-item>
<el-form-item label="抵扣金额" prop="deduction">
<el-input v-model="form.deduction" placeholder="请输入抵扣金额" />
</el-form-item>
<el-form-item label="邮费" prop="postage">
<el-input v-model="form.postage" placeholder="请输入邮费" />
</el-form-item>
<el-form-item label="支付时间" prop="payTime">
<el-date-picker clearable
v-model="form.payTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择支付时间">
</el-date-picker>
</el-form-item>
<el-form-item label="快递" prop="deliveryId">
<el-input v-model="form.deliveryId" placeholder="请输入快递" />
</el-form-item>
<el-form-item label="快递单号" prop="deliveryNum">
<el-input v-model="form.deliveryNum" placeholder="请输入快递单号" />
</el-form-item>
<el-form-item label="发货时间" prop="sendTime">
<el-date-picker clearable
v-model="form.sendTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择发货时间">
</el-date-picker>
</el-form-item>
<el-form-item label="备注" prop="mark">
<el-input v-model="form.mark" placeholder="请输入备注" />
</el-form-item>
<el-form-item label="关联地址" prop="addressId">
<el-input v-model="form.addressId" placeholder="请输入关联地址" />
</el-form-item>
<el-form-item label="多规格产品" prop="sku">
<el-input v-model="form.sku" type="textarea" placeholder="请输入内容" />
</el-form-item>
<el-form-item label="${comment}" prop="createdAt">
<el-date-picker clearable
v-model="form.createdAt"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择${comment}">
</el-date-picker>
</el-form-item>
<el-form-item label="${comment}" prop="updatedAt">
<el-date-picker clearable
v-model="form.updatedAt"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择${comment}">
</el-date-picker>
</el-form-item>
<el-form-item label="${comment}" prop="deletedAt">
<el-date-picker clearable
v-model="form.deletedAt"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择${comment}">
</el-date-picker>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listGoodsOrder, getGoodsOrder, delGoodsOrder, addGoodsOrder, updateGoodsOrder,getUserDataList,getGoodsDataList } from "@/api/system/GoodsOrder"
export default {
name: "GoodsOrder",
dicts: ['goods_order_status'],
data() {
return {
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 商品订单表格数据
GoodsOrderList: [],
userDataList: [],
// 服务订单表格数据
goodsDataList : [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
type: null,
mainOrderId: null,
orderId: null,
transactionId: null,
uid: null,
productId: null,
name: null,
phone: null,
address: null,
num: null,
totalPrice: null,
goodPrice: null,
servicePrice: null,
payPrice: null,
deduction: null,
postage: null,
payTime: null,
status: null,
deliveryId: null,
deliveryNum: null,
sendTime: null,
mark: null,
addressId: null,
sku: null,
createdAt: null,
updatedAt: null,
deletedAt: null
},
// 表单参数
form: {},
// 表单校验
rules: {
type: [
{ required: true, message: "1:服务项目 2商品不能为空", trigger: "change" }
],
orderId: [
{ required: true, message: "订单号不能为空", trigger: "blur" }
],
uid: [
{ required: true, message: "用户不能为空", trigger: "blur" }
],
productId: [
{ required: true, message: "商品不能为空", trigger: "blur" }
],
name: [
{ required: true, message: "姓名不能为空", trigger: "blur" }
],
phone: [
{ required: true, message: "电话不能为空", trigger: "blur" }
],
address: [
{ required: true, message: "地址不能为空", trigger: "blur" }
],
num: [
{ required: true, message: "数量不能为空", trigger: "blur" }
],
totalPrice: [
{ required: true, message: "总价不能为空", trigger: "blur" }
],
payPrice: [
{ required: true, message: "支付金额不能为空", trigger: "blur" }
],
status: [
{ required: true, message: "订单状态 1:待支付 2已支付待发货3待收货 4待评价 5已收货 6取消 20申请退款 21同意退款 22驳回退款不能为空", trigger: "change" }
],
addressId: [
{ required: true, message: "关联地址不能为空", trigger: "blur" }
],
},
userDataList: [],
goodsDataList: [],
daterangePayTime: [],
daterangeCreatedAt: [],
}
},
created() {
this.getList()
this.getGoodsDataList()
this.getUserDataList()
},
methods: {
/** 查询商品订单列表 */
getList() {
this.loading = true
listGoodsOrder(this.queryParams).then(response => {
this.GoodsOrderList = response.rows
this.total = response.total
this.loading = false
})
},
// 取消按钮
cancel() {
this.open = false
this.reset()
},
// 表单重置
reset() {
this.form = {
id: null,
type: null,
mainOrderId: null,
orderId: null,
transactionId: null,
uid: null,
productId: null,
name: null,
phone: null,
address: null,
num: null,
totalPrice: null,
goodPrice: null,
servicePrice: null,
payPrice: null,
deduction: null,
postage: null,
payTime: null,
status: null,
deliveryId: null,
deliveryNum: null,
sendTime: null,
mark: null,
addressId: null,
sku: null,
createdAt: null,
updatedAt: null,
deletedAt: null
}
this.resetForm("form")
},
/** 搜索按钮操作 */
handleQuery() {
// 处理支付时间
if (this.daterangePayTime && this.daterangePayTime.length === 2) {
this.queryParams.paystartdate = this.daterangePayTime[0];
this.queryParams.payenddate = this.daterangePayTime[1];
} else {
this.queryParams.paystartdate = undefined;
this.queryParams.payenddate = undefined;
}
// 处理创建时间
if (this.daterangeCreatedAt && this.daterangeCreatedAt.length === 2) {
this.queryParams.startdate = this.daterangeCreatedAt[0];
this.queryParams.enddate = this.daterangeCreatedAt[1];
} else {
this.queryParams.startdate = undefined;
this.queryParams.enddate = undefined;
}
// 删除多余的 payTime 和 createdAt 字段,防止后台报错
delete this.queryParams.payTime;
delete this.queryParams.createdAt;
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.daterangePayTime = [];
this.daterangeCreatedAt = [];
this.resetForm("queryForm");
this.handleQuery();
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset()
this.open = true
this.title = "添加商品订单"
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset()
const id = row.id || this.ids
getGoodsOrder(id).then(response => {
this.form = response.data
this.open = true
this.title = "修改商品订单"
})
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != null) {
updateGoodsOrder(this.form).then(response => {
this.$modal.msgSuccess("修改成功")
this.open = false
this.getList()
})
} else {
addGoodsOrder(this.form).then(response => {
this.$modal.msgSuccess("新增成功")
this.open = false
this.getList()
})
}
}
})
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids
this.$modal.confirm('是否确认删除商品订单编号为"' + ids + '"的数据项?').then(function() {
return delGoodsOrder(ids)
}).then(() => {
this.getList()
this.$modal.msgSuccess("删除成功")
}).catch(() => {})
},
/** 导出按钮操作 */
handleExport() {
this.download('system/GoodsOrder/export', {
...this.queryParams
}, `GoodsOrder_${new Date().getTime()}.xlsx`)
},
getGoodsDataList(){
this.$api.getGoodsDataList().then(response => {
this.goodsDataList = response.data
})
},
getUserDataList () {
this.$api.getUserDataList().then(response => {
this.userDataList = response.data
})
},
getGoodsDataListList () {
this.$api.getGoodsDataList().then(response => {
this.goodsDataList = response.data
})
},
}
}
</script>