From 585ff1cd29e9875f5f2a0fa2b0fdc876c5c6301f Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期一, 26 一月 2026 18:26:31 +0800
Subject: [PATCH] 小程序 接口开发
---
admin/src/components/business/OperaGoodsOrderDetail.vue | 147 +++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 136 insertions(+), 11 deletions(-)
diff --git a/admin/src/components/business/OperaGoodsOrderDetail.vue b/admin/src/components/business/OperaGoodsOrderDetail.vue
index d5580ef..093ec81 100644
--- a/admin/src/components/business/OperaGoodsOrderDetail.vue
+++ b/admin/src/components/business/OperaGoodsOrderDetail.vue
@@ -4,7 +4,7 @@
width="100%"
:visible.sync="visible"
>
- <div style="display: block">
+ <div class="detail-box">
<div class="header">
<div class="header-b">璁㈠崟璇︽儏</div>
<div v-if="info.status ==0" class="header-orange">寰呮敮浠�</div>
@@ -13,7 +13,10 @@
<span v-if="info.status ==3" class="header-grey ">浜ゆ槗瀹屾垚</span>
<div v-if="info.status ==4" class="header-grey">宸插叧闂�</div>
<div v-if="info.status ==6" class="header-grey">宸查��娆�</div>
- <div class="header-blue-btn" @click="showChangeRecord">鍙樻洿璁板綍</div>
+ <div style="text-align: right;">
+ <div class="header-red-btn" v-if="info.status == 0 || info.status == 1" @click="$refs.OperaOrderCancelWindow.open('鍙栨秷璁㈠崟', info)">鍙栨秷璁㈠崟</div>
+ <div class="header-red-btn" v-if="info.status == 3" @click="$refs.OperaOrderRefundWindow.open('璁㈠崟閫�娆�', info)">璁㈠崟閫�娆�</div>
+ </div>
</div>
<div class="info-item">
<div class="info-item-a">璁㈠崟缂栧彿锛�<span>{{info.code}}</span></div>
@@ -30,7 +33,11 @@
<div class="info-item-a" style="flex: 3">褰掑睘缁忛攢鍟嗭細<span >{{ info.shopName }}</span></div>
</div>
<div class="info-item">
- <div class="info-item-a" style="flex: 3">澶囨敞锛�<span v-if="info.sysInfo" class="red">{{info.sysInfo}}</span></div>
+ <div class="info-item-a" style="flex: 3">澶囨敞锛�<span v-if="info.sysInfo" class="red">{{info.sysInfo}}</span>
+ <span style="margin-left: 20px;" >
+ <el-button type="text" @click="$refs.operaOrderMarkWindow.open(info.sysInfo && info.sysInfo.length?'缂栬緫澶囨敞':'娣诲姞澶囨敞', info)">
+ {{ info.sysInfo && info.sysInfo.length?'淇敼澶囨敞':'娣诲姞澶囨敞' }}</el-button>
+ </span></div>
</div>
<div class="info-item"></div>
<div class="header">
@@ -45,6 +52,9 @@
<template v-if="info.receiveType!=1">
<div class="header">
<div class="header-b">蹇�掍俊鎭�</div>
+ <div class="header-blue-btn" v-if="info.status==1 && info.receiveType!=1" @click="$refs.operaShipmentsWindow.open('鍙戣揣',info)">鍙戣揣</div>
+ <div class="header-blue-btn" v-if="info.status==2 && info.receiveType!=1" @click="$refs.operaShipmentsWindow.open('蹇�掑彉鏇�',info)">蹇�掑彉鏇�</div>
+ <div class="header-blue-btn" @click="showChangeRecord">蹇�掑彉鏇磋褰�</div>
</div>
<div class="info-item" >
<div class="info-item-a">鏀惰揣浜猴細<span class="el-icon-user">{{info.linkname}}</span></div>
@@ -57,18 +67,117 @@
<div class="info-item-a" >鍙戣揣浜猴細<span>{{info.kdUserName }}</span></div>
</div>
<div class="info-item" >
- <div class="info-item-a">鍙戣揣鏃堕棿锛�<span >{{info.kdDate }}</span></div>
- <div class="info-item-a" style="flex: 2">蹇�掑娉細<span>{{info.kdInfo }}</span></div>
+ <div class="info-item-a">鍙戣揣鏃堕棿锛�<span>{{info.kdDate }}</span></div>
+ <div class="info-item-a" style="flex: 2;">蹇�掑娉細<span>{{info.kdInfo }}</span></div>
</div>
<div class="info-item"></div>
</template>
-
+ <template v-if="info.status ==6">
+ <div class="header">
+ <div class="header-b">閫�娆句俊鎭�</div>
+ <div class="header-blue-btn" v-if="info.status==1 && info.receiveType!=1" @click="$refs.operaShipmentsWindow.open('鍙戣揣',info)">鍙戣揣</div>
+ <div class="header-blue-btn" v-if="info.status==2 && info.receiveType!=1" @click="$refs.operaShipmentsWindow.open('蹇�掑彉鏇�',info)">蹇�掑彉鏇�</div>
+ </div>
+ <div class="info-item" >
+ <div class="info-item-a">閫�娆鹃噾棰濓細<span class="orange">锟{(info.refundMoney||0).toFixed(2)}}</span></div>
+ <div class="info-item-a" >鎿嶄綔浜猴細<span>{{info.refundUserName }}</span></div>
+ <div class="info-item-a" >閫�娆炬椂闂达細<span>{{info.refundTime }}</span></div>
+ </div>
+ <div class="info-item" >
+ <div class="info-item-a" >閫�娆惧娉細<span>{{info.kdInfo }}</span></div>
+ </div>
+ <div class="info-item"></div>
+ </template>
+ <template v-if="info.status == 4">
+ <div class="header">
+ <div class="header-b">鍙栨秷淇℃伅</div>
+ </div>
+ <div class="info-item" >
+ <div class="info-item-a">鍙栨秷鏃堕棿锛�<span >{{info.cancelDate}}</span></div>
+ <div class="info-item-a">鍙栨秷浜哄憳锛�<span>{{info.cancelUser !=null?info.cancelUserName:'鐢ㄦ埛涓诲姩鍙栨秷'}}</span></div>
+ <div class="info-item-a">鍙栨秷璇存槑锛�<span>{{info.cancelInfo }}</span></div>
+ </div>
+ <div class="info-item"></div>
+ </template>
+ <div class="header">
+ <div class="header-b">杩旂Н鍒嗕俊鎭�</div>
+ </div>
+ <div class="info-item" >
+ <div class="info-item-a">杩旇繕鐢ㄦ埛绉垎锛�<span class="orange"> {{(info.returnMemberIntegral||0)}}</span></div>
+ <div class="info-item-a">杩旇繕缁忛攢鍟嗙Н鍒嗭細<span class="orange">{{info.returnCustomerIntegral || 0 }}</span></div>
+ <div class="info-item-a"></div>
+ </div>
+ <div class="info-item"></div>
+ <div class="header">
+ <div class="header-b">鍟嗗搧淇℃伅</div>
+ </div>
+ <div class="info-item" >
+ <el-table :data="info.goodsorderDetailList||[]" stripe border >
+ <el-table-column prop="imgurl" label="鍟嗗搧鍥�" min-width="80px" align="center">
+ <template slot-scope="{row}">
+ <el-image style="width: 50px;height: 50px;" v-if="row.imgurl && row.imgurl!=''" :src="row.imgurl" :preview-src-list="[row.imgurl]"></el-image>
+ </template>
+ </el-table-column>
+ <el-table-column prop="name" label="鍟嗗搧鍚嶇О" align="center" min-width="150px"> </el-table-column>
+ <el-table-column prop="categoryName" label="鍟嗗搧鍒嗙被" align="center" min-width="150px"> </el-table-column>
+ <el-table-column prop="goodsWeight" label="閲嶉噺(kg)" align="center" min-width="150px"></el-table-column>
+ <el-table-column prop="price" label="閿�鍞环(鍏�)" align="center" min-width="100px">
+ <template slot-scope="{row}">
+ <span>锟{(row.price || 0).toFixed(2)}}</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="goodsNum" label="鏁伴噺" align="center" min-width="150px"></el-table-column>
+ <el-table-column prop="totalPrice" label="灏忚(鍏�)" align="center" min-width="150px">
+ <template slot-scope="{row}">
+ <span class="orange">锟{(row.totalPrice || 0).toFixed(2)}}</span>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+ <div class="info-item" >
+ <div class="info-item-a">鍟嗗搧鎬讳环锛�<span> 锟{((info.totalPrice||0)-(info.mailPrice || 0)).toFixed(2)}}</span></div>
+ <div class="info-item-a">蹇�掕垂锛�<span>锟{(info.mailPrice||0).toFixed(2)}}</span></div>
+ <div class="info-item-a">璁㈠崟鎬讳环锛�<span> 锟{(info.totalPrice||0).toFixed(2)}}</span></div>
+ </div>
+ <div class="info-item" >
+ <div class="info-item-a">浼樻儬鍏卞噺锛�<span> -锟{((info.integral||0) + (info.couponPrice||0)).toFixed(2) }}</span>
+ <span v-if="((info.integral||0) + (info.couponPrice||0)).toFixed(2)>0">
+ <el-popover
+ style="margin-left: 20px;"
+ placement="right-start"
+ width="360px"
+ @show="visible2=true"
+ @hide="visible2=false"
+ trigger="click" >
+ <div style="margin-top: 10px;font-size: 12px;">
+ <div style="margin-bottom: 20px;font-weight: 600;"> 浼樻儬鍏卞噺锛�<span class="red"> -锟{((info.integral||0) + (info.couponPrice||0)).toFixed(2) }}</span></div>
+ <div style="margin-bottom: 10px;display: flex;align-items: baseline;" v-if="(info.integral||0)>0">
+ <span style="border-left: 3px solid red;font-size: 10px;margin-right: 10px;height: 10px;"></span>
+ 绉垎鎶垫墸锛�-锟{(info.integral||0).toFixed(2) +' '}}浣跨敤{{(info.useIntegral||0)}}绉垎鎶垫墸锟{(info.integral||0).toFixed(2) +' '}}鍏�
+ </div>
+ <div style="margin-bottom: 10px;display: flex;align-items: baseline;" v-if="(info.couponPrice||0)>0">
+ <span style="border-left: 3px solid red;font-size: 10px;margin-right: 10px;height: 10px;"></span>
+ {{' 浼� 鎯� 鍒� '}}锛歿{' '}}-锟{(info.couponPrice||0).toFixed(2) +' '}}浣跨敤{{info.couponName}}
+ </div>
+ </div>
+ <el-button slot="reference" type="text">{{visible2?'鏀惰捣':'鏌ョ湅'}}</el-button>
+ </el-popover>
+ </span>
+ </div>
+ </div>
+ <div class="info-item" >
+ <div class="info-item-a">瀹炰粯閲戦锛�<span class="red"> 锟{(info.price||0).toFixed(2)}}</span></div>
+ </div>
</div>
<template v-slot:footer>
<el-button @click="visible=false">杩斿洖</el-button>
</template>
<OperaChangeOrderRecordWindow ref="OperaChangeOrderRecordWindow"/>
+ <OperaShipmentsWindow ref="operaShipmentsWindow" @success="successBiz"/>
<OperaChangeIntegralWindow ref="OperaChangeIntegralWindow" @success="successBiz"/>
+ <OperaOrderMarkWindow ref="operaOrderMarkWindow" @success="successBiz"/>
+ <OperaOrderCancelWindow ref="OperaOrderCancelWindow" @success="successBiz"/>
+ <OperaOrderRefundWindow ref="OperaOrderRefundWindow" @success="successBiz"/>
</GlobalWindow>
</template>
@@ -77,13 +186,18 @@
import BaseOpera from '@/components/base/BaseOpera'
import OperaChangeOrderRecordWindow from '@/components/business/OperaChangeOrderRecordWindow'
import OperaChangeIntegralWindow from '@/components/business/OperaChangeIntegralWindow'
+import OperaOrderCancelWindow from '@/components/business/OperaOrderCancelWindow'
+import OperaOrderMarkWindow from '@/components/business/OperaOrderMarkWindow'
+import OperaShipmentsWindow from '@/components/business/OperaShipmentsWindow'
+import OperaOrderRefundWindow from '@/components/business/OperaOrderRefundWindow'
export default {
name: 'OperaShopGoodsWindow',
extends: BaseOpera,
- components: { GlobalWindow, OperaChangeOrderRecordWindow, OperaChangeIntegralWindow },
+ components: { OperaOrderRefundWindow, GlobalWindow, OperaChangeOrderRecordWindow, OperaChangeIntegralWindow, OperaOrderMarkWindow, OperaShipmentsWindow, OperaOrderCancelWindow },
data () {
return {
title: '',
+ visible2: false,
visible: false,
tabelHeight: null,
info: {},
@@ -95,7 +209,6 @@
}
}
},
-
created () {
this.config({
module: '鐢ㄦ埛淇℃伅琛�',
@@ -106,9 +219,11 @@
},
methods: {
successBiz () {
- this.handlePageChange()
this.loadInfo()
this.$emit('success')
+ },
+ showCouponPrice () {
+
},
loadInfo () {
this.api.detail(this.info.id).then(res => {
@@ -146,11 +261,21 @@
font-size: 16px;
font-weight: bold;
}
+.header-red-btn{
+ display: inline-block;
+ font-size: 12px;
+ background-color: red;
+ padding: 2px 10px 3px 10px;
+ margin-left: 20px;
+ color: white;
+ cursor: pointer;
+ border-radius: 5px ;
+}
.header-blue-btn{
display: inline-block;
font-size: 12px;
background-color: #216EEE;
- padding: 2px 10px;
+ padding: 2px 10px 3px 10px;
margin-left: 20px;
color: white;
cursor: pointer;
@@ -191,7 +316,7 @@
}
.info-item-a span{
- font-weight: 600;
+ //font-weight: 500;
}
.info-item-a .btn{
font-size: 12px !important;
--
Gitblit v1.9.3