From 4eac422e52a4d28fb651b75d0f054697c7a2c0fa Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期一, 09 二月 2026 15:14:13 +0800
Subject: [PATCH] 优化

---
 admin/src/components/business/OperaWithdrawRecordWindow.vue |  353 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 353 insertions(+), 0 deletions(-)

diff --git a/admin/src/components/business/OperaWithdrawRecordWindow.vue b/admin/src/components/business/OperaWithdrawRecordWindow.vue
new file mode 100644
index 0000000..508e13e
--- /dev/null
+++ b/admin/src/components/business/OperaWithdrawRecordWindow.vue
@@ -0,0 +1,353 @@
+<template>
+  <GlobalWindow
+      :title="title"
+      width="100%"
+      :visible.sync="visible"
+  >
+      <div class="detail-box">
+        <div class="header">
+          <div  class="header-b">鍩烘湰淇℃伅</div>
+          <div v-if="form.status ==0" class="header-orange">寰呭鎵�</div>
+          <div v-if="form.status ==1" class="header-green">宸查�氳繃</div>
+          <div v-if="form.status ==2" class="header-red">宸查┏鍥�</div>
+        </div>
+        <div class="info-item">
+          <div class="info-item-a">缁忛攢鍟嗗悕绉帮細<span>{{form.shopName || ''}}</span> </div>
+          <div class="info-item-a">闂ㄥ簵ID锛�<span>{{form.shopCode || ''}}</span></div>
+          <div class="info-item-a">鐢宠鏃堕棿锛�<span>{{form.createDate || ''}}</span></div>
+        </div>
+        <div class="info-item"></div>
+      </div>
+      <div class="detail-box">
+        <div class="header">
+          <div  class="header-b">鎻愮幇淇℃伅</div>
+        </div>
+        <div class="info-item">
+          <div class="info-item-a">鎻愮幇閲戦锛�<span class="orange">锟{(form.amount || 0).toFixed(2)}}</span> </div>
+          <div class="info-item-a"> </div>
+          <div class="info-item-a"> </div>
+        </div>
+        <div class="info-item">
+          <div class="info-item-a">鎴峰悕锛�<span  >{{ form.name||'' }}</span> </div>
+          <div class="info-item-a">璐﹀彿锛�<span  >{{ form.bankAccount||'' }}</span> </div>
+          <div class="info-item-a">閾惰锛�<span  >{{ form.bankName||'' }}</span> </div>
+        </div>
+        <div class="info-item"></div>
+      </div>
+      <div class="detail-box">
+        <div class="header">
+          <div  class="header-b">瀹℃牳娴佺▼</div>
+        </div>
+        <div class="info-item">
+          <div class="time-line">
+            <el-timeline :reverse="true">
+              <el-timeline-item
+                  v-for="(item, index) in logList"
+                  :key="index"
+                  color="#2991FF"
+                  size="large"
+                  type="primary"
+              >
+                <div class="ml10">
+                  <div class="list-title">{{ item.title }}
+                    <i  v-if="item.status ==1"  class="el-icon-success green"></i>
+                    <i  v-if="item.status ==2"  class="el-icon-error red"></i>
+                  </div>
+                  <div class="list-company"><span>{{item.info }}</span><span style="margin-left: 10px">{{item.createTime }}</span></div>
+                  <div class="list-company1" v-if="item.status ===1"><span>鎵撴鍑瘉锛�</span>
+                     <div v-if="item.files && item.files.length"; style="display: block;margin-left: 100px;">
+                       <el-image
+                          v-for="file in item.files "
+                          :key="'file_'+file.fileurl"
+                          style="margin-right: 20px; width: 100px; height: 100px; border-radius: 2px;"
+                          :src="file.fileFullUrl"
+                          :preview-src-list="[file.fileFullUrl]"
+                      ></el-image>
+                     </div>
+                    <span v-else>鏃�</span>
+                  </div>
+                  <div class="list-company1"  v-if="item.status ===1"><span>鎵撴閾惰锛�</span><span>{{item.payBank||'-' }}</span></div>
+                  <div class="list-company1"  v-if="item.status ===1||item.status ==2"><span>瀹℃牳澶囨敞锛�</span><span>{{item.auditRemark||'' }}</span></div>
+                </div>
+              </el-timeline-item>
+            </el-timeline>
+          </div>
+        </div>
+      </div>
+    <div  v-if="form && form.status == 0">
+      <p class="tip-header" >鐢宠瀹℃壒</p>
+      <el-form :model="checkForm" ref="checkForm" :rules="rules" label-width="110px" label-suffix="锛�"  style="margin-left: 20px;width: 500px;" inline >
+        <el-form-item label="瀹℃牳缁撴灉" prop="status">
+          <el-radio-group v-model="checkForm.status">
+            <el-radio :label="1">閫氳繃</el-radio>
+            <el-radio  :label="2">椹冲洖</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="鎵撴鍑瘉" prop="payFileList" v-if="checkForm.status ==1">
+          <div style="margin-left: 150px">
+          <UploadImage
+              :fileList="checkForm.payFileList"
+              :uploadData="{folder:'transfer'}"
+              @beginUpload="isUploading=true"
+              @endUpload="isUploading=false"/>
+          <p class="tip-warn">
+            寤鸿灏哄锛�750px X 750px锛屼笂闄�6寮�
+            鏀寔png銆乯pg銆乯peg鏍煎紡锛屽ぇ灏忎笉瓒呰繃2M锛屼笂浼犲浘鐗囦笉鍏佽娑夊強鏀挎不鏁忔劅涓庤壊鎯�
+          </p>
+          </div>
+        </el-form-item>
+        <el-form-item label="鎵撴閾惰" prop="payBank" v-if="checkForm.status ==1">
+          <el-input v-model="checkForm.payBank" placeholder="璇疯緭鍏ユ墦娆鹃摱琛�"  style="width: 350px"  v-trim/>
+        </el-form-item>
+        <el-form-item label="瀹℃牳澶囨敞" prop="auditRemark">
+          <el-input v-model="checkForm.auditRemark" placeholder="璇疯緭鍏ュ鏍稿娉�" type="textarea"  style="width: 350px; " rows="6" v-trim/>
+        </el-form-item>
+      </el-form>
+      <div class="info-item-a"></div>
+    </div>
+    <template  v-slot:footer>
+      <el-button :loading="isWorking" @click="confirmDo" v-if="form && form.status ==0" :type="checkForm.status==2?'danger':'primary'"  >{{checkForm.status==2?'瀹℃牳椹冲洖':'瀹℃牳閫氳繃'}}</el-button>
+      <el-button @click="visible=false">杩斿洖</el-button>
+    </template>
+  </GlobalWindow>
+</template>
+<script>
+import GlobalWindow from '@/components/common/GlobalWindow'
+import BaseOpera from '@/components/base/BaseOpera'
+import UploadImage from '@/components/common/UploadImage'
+export default {
+  name: 'OperaShopInfoWindow',
+  extends: BaseOpera,
+  components: { GlobalWindow, UploadImage },
+  data () {
+    return {
+      title: '',
+      visible: false,
+      tabelHeight: null,
+      isUploading: false,
+      form: {},
+      logList: [],
+      checkForm: {
+        id: '',
+        status: '',
+        auditRemark: '',
+        payBank: '',
+        payFileList: null
+      },
+      rules: {
+        status: [
+          { required: true, message: '璇烽�夋嫨瀹℃牳缁撴灉' }
+        ]
+      }
+    }
+  },
+  created () {
+    this.config({
+      module: '鎻愮幇鐢宠琛�',
+      api: '/business/withdrawRecord',
+      'field.id': 'id',
+      'field.main': 'id'
+    })
+  },
+  methods: {
+    confirmDo () {
+      this.$refs.checkForm.validate((valid) => {
+        if (!valid) {
+          return
+        }
+        this.$dialog.confirm('鎮ㄧ‘瀹氭彁浜よ瀹℃壒缁撴灉鍚楋紵', '鎿嶄綔鎻愮ず', {
+          confirmButtonText: this.checkForm.status === 1 ? '纭閫氳繃' : '纭畾椹冲洖',
+          type: 'warning'
+        })
+          .then(() => {
+            this.isWorking = true
+            this.api.updateById(this.checkForm)
+              .then(() => {
+                this.$tip.apiSuccess('瀹℃壒鎴愬姛')
+                this.loadInfo()
+                this.$emit('success')
+              }).catch(e => {
+                this.$tip.apiFailed(e)
+              })
+              .finally(() => {
+                this.isWorking = false
+              })
+          })
+          .catch(e => {
+
+          })
+        // 璋冪敤鏂板缓鎺ュ彛
+      })
+    },
+    loadInfo () {
+      this.api.detail(this.form.id).then(res => {
+        this.form = res || this.form
+        this.logList = []
+        if (this.form.status == 1) {
+          this.logList.push({ title: '骞冲彴瀹℃牳閫氳繃', info: this.form.auditUserName, createTime: this.form.auditTime || '', status: 1, files: this.form.payFileList || [], bank: this.form.payBank || '', auditRemark: this.form.auditRemark || '' })
+        } else if (this.form.status == 2) {
+          this.logList.push({ title: '骞冲彴瀹℃牳椹冲洖', info: this.form.auditUserName, createTime: this.form.auditTime || '', status: 2, auditRemark: this.form.auditRemark || '' })
+        }
+        this.logList.push({ title: '缁忛攢鍟嗗彂璧锋彁鐜扮敵璇�', info: '鎭掕揪鏈烘閿�鍞湁闄愬叕鍙� ', createTime: this.form.createDate || '', status: 0 })
+      })
+    },
+    open (title, info) {
+      this.title = title
+      this.visible = true
+      this.form = info || {}
+      this.loadInfo()
+      this.logList = []
+      this.checkForm = {
+        id: info.id,
+        status: 1,
+        auditRemark: '',
+        payBank: '',
+        payFileList: []
+      }
+    }
+  }
+}
+</script>
+<style lang="scss"  scoped>
+.platgroup_tabs {
+  flex: 1;
+  display: flex;
+  border-bottom: 1px solid #dfe2e8;
+  margin-bottom: 30px;
+  .tab {
+    color: #666666;
+    margin-right: 40px;
+    cursor: pointer;
+    padding-bottom: 10px;
+    border-bottom: 2px solid #fff;
+  }
+
+  .active {
+    font-weight: 500;
+    font-size: 15px;
+    color: #216EEE;
+    border-bottom: 2px solid #216EEE;
+  }
+}
+.table-pagination{
+  position: fixed !important;
+  bottom: 50px;
+}
+.header-b{
+  display: inline-block;
+  font-size: 16px;
+  font-weight: bold;
+}
+.confirmbtn1{
+  color: #FFFFFF;
+  background-color: #0e83d1!important;
+  border-color: #0e83d1!important;
+}
+.confirmbtn2{
+  color: #FFFFFF;
+  background-color: red!important;
+  border-color: red!important;
+}
+.header-green{
+  display: inline-block;
+  font-size: 12px;
+  border: 1px solid green;
+  padding: 2px 10px;
+  margin-left: 20px;
+  color: green;
+  border-radius: 5px ;
+}
+.header-red{
+  display: inline-block;
+  font-size: 12px;
+  border: 1px solid red;
+  padding: 2px 10px;
+  margin-left: 20px;
+  color: red;
+  border-radius: 5px ;
+}
+.header-orange{
+  display: inline-block;
+  font-size: 12px;
+  border: 1px solid orange;
+  padding: 2px 10px;
+  margin-left: 20px;
+  color:  orange;
+  border-radius: 5px ;
+}
+.header-btn{
+  display: inline-block;
+  border: none;
+  padding: 2px 10px;
+  margin-left: 20px;
+}
+.info-item{
+  display: flex;
+  width: 100%;
+  margin: 15px;
+}
+.info-item-a{
+  flex: 1;
+  font-size: 14px;
+
+}
+.info-item-a span{
+  font-weight: 600;
+}
+.info-item-a  .btn{
+  font-size: 12px !important;
+  cursor: pointer !important;
+}
+
+.time-line {
+  margin-top: 20px;
+  margin-left: 20px;
+}
+.list-title {
+  font-size: 12px;
+  font-family: PingFangSC-Medium, PingFang SC;
+  font-weight: 500;
+  //color: #181b1e;
+  margin-bottom: 5px;
+}
+.list-company {
+  font-size: 12px;
+  font-family: PingFangSC-Regular, PingFang SC;
+  font-weight: 400;
+  color: #596878;
+  margin-bottom: 15px;
+}
+.list-company1 {
+  font-size: 12px;
+  font-family: PingFangSC-Regular, PingFang SC;
+  font-weight: 400;
+  margin-bottom: 15px;
+}
+.list-desc {
+  font-size: 12px;
+  font-family: PingFangSC-Regular, PingFang SC;
+  font-weight: 400;
+  color: #596878;
+}
+//宸︿晶鏃堕棿
+.time {
+  color: #409eff;
+  position: absolute;
+  left: -94px;
+  top: 1px;
+  .year {
+    font-size: 14px;
+    font-family: PingFangSC-Regular, PingFang SC;
+    font-weight: 400;
+    color: #20354a;
+  }
+  .day {
+    font-size: 12px;
+    font-family: PingFangSC-Regular, PingFang SC;
+    font-weight: 400;
+    color: black;
+    text-align: right;
+    margin-top: 0px;
+  }
+}
+</style>

--
Gitblit v1.9.3