From 34437176cfbc2dc30f786601f5abf27d605e2c15 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期一, 13 四月 2026 20:17:20 +0800
Subject: [PATCH] Merge branch 'master' of http://139.186.142.91:10010/r/productDev/gtzxinglijicun
---
admin/src/components/business/OperaWithdrawDetailWindow.vue | 297 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 297 insertions(+), 0 deletions(-)
diff --git a/admin/src/components/business/OperaWithdrawDetailWindow.vue b/admin/src/components/business/OperaWithdrawDetailWindow.vue
new file mode 100644
index 0000000..0d60c66
--- /dev/null
+++ b/admin/src/components/business/OperaWithdrawDetailWindow.vue
@@ -0,0 +1,297 @@
+<template>
+ <GlobalWindow
+ :title="title"
+ :visible.sync="visible"
+ :withFooter="false"
+ width="70%"
+ :confirm-working="isWorking.submit"
+ @confirm="handleConfirm"
+ >
+ <div class="detail-container">
+ <div class="section">
+ <div class="section-header">
+ <span class="section-title">鍩烘湰淇℃伅</span>
+ <span class="status-tag" :class="getStatusClass(detailInfo.status)">
+ {{ getStatusText(detailInfo.status) }}
+ </span>
+ </div>
+ <div class="info-grid">
+ <div class="info-item">
+ <span class="label">闂ㄥ簵鍚嶇О锛�</span>
+ <span class="value">{{ detailInfo.shopName }}</span>
+ </div>
+ <div class="info-item">
+ <span class="label">闂ㄥ簵鑱旂郴浜猴細</span>
+ <span class="value">{{ detailInfo.linkName }}</span>
+ </div>
+ <div class="info-item">
+ <span class="label">鐢宠鏃堕棿锛�</span>
+ <span class="value">{{ detailInfo.createTime }}</span>
+ </div>
+ </div>
+ </div>
+
+ <div class="section">
+ <div class="section-header">
+ <span class="section-title">鎻愮幇淇℃伅</span>
+ </div>
+ <div class="info-grid">
+ <div class="info-item">
+ <span class="label">鎻愮幇閲戦锛�</span>
+ <span class="value amount">楼{{ detailInfo.amount / 100 }}</span>
+ </div>
+ <div class="info-item">
+ <span class="label">鎻愮幇璐︽埛锛�</span>
+ <span class="value">{{ detailInfo.aliAccount }}</span>
+ </div>
+ <div class="info-item">
+ <span class="label">瀹℃牳浜猴細</span>
+ <span class="value">{{ detailInfo.updateUserName }}</span>
+ </div>
+ <div class="info-item">
+ <span class="label">瀹℃牳鏃堕棿锛�</span>
+ <span class="value">{{ detailInfo.updateTime }}</span>
+ </div>
+ <div class="info-item full-width">
+ <span class="label">瀹℃牳澶囨敞锛�</span>
+ <span class="value">{{ detailInfo.approveRemark }}</span>
+ </div>
+ </div>
+ </div>
+
+ <div class="section" v-if="detailInfo.status !== 0">
+ <div class="section-header">
+ <span class="section-title">瀹℃壒淇℃伅</span>
+ </div>
+ <div class="info-grid">
+ <div class="info-item">
+ <span class="label">瀹℃牳浜猴細</span>
+ <span class="value">{{ detailInfo.updateUserName }}</span>
+ </div>
+ <div class="info-item">
+ <span class="label">瀹℃牳鏃堕棿锛�</span>
+ <span class="value">{{ detailInfo.updateTime }}</span>
+ </div>
+ <div class="info-item full-width">
+ <span class="label">瀹℃牳澶囨敞锛�</span>
+ <span class="value">{{ detailInfo.approveRemark }}</span>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="approval-form" v-if="detailInfo.status === 0">
+ <el-form ref="approvalForm" :model="approvalForm" :rules="approvalRules">
+ <el-form-item label="瀹℃壒缁撴灉" prop="status">
+ <el-radio-group v-model="approvalForm.status">
+ <el-radio :label="1">閫氳繃</el-radio>
+ <el-radio :label="2">椹冲洖</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ <el-form-item label="澶囨敞" prop="approveRemark">
+ <el-input
+ v-model="approvalForm.approveRemark"
+ type="textarea"
+ :rows="3"
+ placeholder="璇疯緭鍏ュ娉�"
+ style="width: 100%"
+ ></el-input>
+ </el-form-item>
+ </el-form>
+ <div class="approval-buttons">
+ <el-button @click="visible = false">鍙栨秷</el-button>
+ <el-button type="primary" @click="handleConfirm" :loading="isWorking.submit">纭畾</el-button>
+ </div>
+ </div>
+ </GlobalWindow>
+</template>
+
+<script>
+import GlobalWindow from '@/components/common/GlobalWindow'
+import { getById, approve } from '@/api/business/shopWithdraw'
+
+export default {
+ name: 'OperaWithdrawDetailWindow',
+ components: { GlobalWindow },
+ data () {
+ return {
+ title: '鎻愮幇璇︽儏',
+ visible: false,
+ detailInfo: {
+ status: '',
+ shopName: '',
+ linkName: '',
+ createTime: '',
+ amount: '',
+ bankCardNo: '',
+ auditLogs: []
+ },
+ approvalForm: {
+ id: null,
+ status: 1,
+ approveRemark: ''
+ },
+ approvalRules: {
+ status: [{ required: true, message: '璇烽�夋嫨瀹℃壒缁撴灉', trigger: 'change' }]
+ },
+ isWorking: {
+ submit: false
+ }
+ }
+ },
+ methods: {
+ open (title, row) {
+ this.title = title
+ this.approvalForm.id = row.id
+ this.approvalForm.status = 1
+ this.approvalForm.approveRemark = ''
+ getById(row.id).then(res => {
+ this.detailInfo = {
+ status: res.status,
+ shopName: res.shopName,
+ linkName: res.linkName,
+ createTime: res.createTime,
+ amount: res.amount,
+ bankCardNo: res.bankCardNo,
+ auditLogs: res.auditLogs || [],
+ updateUserName: res.updateUserName,
+ updateTime: res.updateTime,
+ approveRemark: res.approveRemark
+ }
+ this.visible = true
+ }).catch(e => {
+ this.$tip.apiFailed(e)
+ })
+ },
+ getStatusText (status) {
+ const map = { 0: '鎻愮幇鐢宠涓�', 1: '鎻愮幇鎴愬姛', 2: '鎻愮幇澶辫触' }
+ return map[status] || '-'
+ },
+ getStatusClass (status) {
+ const map = { 0: 'status-pending', 1: 'status-success', 2: 'status-reject' }
+ return map[status] || ''
+ },
+ handleConfirm () {
+ if (this.detailInfo.status !== 0) {
+ this.visible = false
+ return
+ }
+ this.$refs.approvalForm.validate(valid => {
+ if (!valid) return
+ this.isWorking.submit = true
+ approve(this.approvalForm).then(res => {
+ this.$tip.apiSuccess(res || '鎻愪氦鎴愬姛')
+ this.visible = false
+ this.$emit('success')
+ }).catch(e => {
+ this.$tip.apiFailed(e)
+ }).finally(() => {
+ this.isWorking.submit = false
+ })
+ })
+ }
+ }
+}
+</script>
+
+<style scoped>
+.detail-container {
+ padding: 20px;
+}
+.section {
+ margin-bottom: 30px;
+}
+.section-header {
+ display: flex;
+ align-items: center;
+ gap: 15px;
+ margin-bottom: 15px;
+}
+.section-title {
+ font-size: 16px;
+ font-weight: bold;
+ color: #303133;
+ padding-left: 10px;
+ border-left: 4px solid #2E68EC;
+}
+.status-tag {
+ padding: 4px 12px;
+ border-radius: 4px;
+ font-size: 12px;
+}
+.status-pending {
+ background: #fdf6ec;
+ color: #E6A23C;
+}
+.status-success {
+ background: #f0f9eb;
+ color: #67C23A;
+}
+.status-reject {
+ background: #fef0f0;
+ color: #F56C6C;
+}
+.info-grid {
+ display: grid;
+ grid-template-columns: repeat(2, 1fr);
+ gap: 15px;
+ padding: 0 10px;
+}
+.info-item {
+ display: flex;
+ font-size: 14px;
+}
+.info-item .label {
+ color: #909399;
+ min-width: 90px;
+}
+.info-item .value {
+ color: #606266;
+}
+.info-item .amount {
+ color: #f56c6c;
+ font-weight: bold;
+}
+.info-item.full-width {
+ grid-column: span 2;
+}
+.timeline-content {
+ padding: 10px;
+ background: #f5f7fa;
+ border-radius: 4px;
+}
+.timeline-title {
+ font-size: 14px;
+ font-weight: bold;
+ color: #303133;
+ margin-bottom: 8px;
+}
+.timeline-info {
+ display: flex;
+ gap: 20px;
+ font-size: 13px;
+ color: #606266;
+ margin-bottom: 5px;
+}
+.timeline-remark {
+ font-size: 13px;
+ color: #909399;
+}
+.approval-form {
+ padding: 20px;
+ background: #f5f7fa;
+ border-top: 1px solid #eee;
+}
+.approval-form /deep/ .el-form-item {
+ margin-bottom: 15px;
+}
+.approval-form /deep/ .el-form-item:last-child {
+ margin-bottom: 0;
+}
+.approval-buttons {
+ display: flex;
+ justify-content: flex-end;
+ gap: 10px;
+ margin-top: 15px;
+}
+</style>
--
Gitblit v1.9.3