From f45bcaf01cd2c96e66b08d3f9b7287aa5b4cdab2 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期五, 17 四月 2026 19:19:01 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 admin/src/components/business/OperaShopInfoWindow.vue |  121 ++++++++++++++++++++++++----------------
 1 files changed, 73 insertions(+), 48 deletions(-)

diff --git a/admin/src/components/business/OperaShopInfoWindow.vue b/admin/src/components/business/OperaShopInfoWindow.vue
index 55322fc..f272d7d 100644
--- a/admin/src/components/business/OperaShopInfoWindow.vue
+++ b/admin/src/components/business/OperaShopInfoWindow.vue
@@ -1,16 +1,18 @@
 <template>
   <GlobalWindow
     :title="title"
+    :withFooter="false"
     :visible.sync="visible"
     width="80%"
   >
     <div class="store-header" v-if="storeInfo">
       <div class="store-header-left">
-        <!-- <el-image :src="storeInfo.headImage || defaultAvatar" fit="cover" class="store-avatar">
+        <el-image v-if="storeInfo.payMemberCoverImage" :src="storeInfo.payMemberCoverImage ? storeInfo.imgPrefix + storeInfo.payMemberCoverImage : ''" fit="cover" class="store-avatar">
           <div slot="error" class="image-slot">
             <i class="el-icon-picture-outline"></i>
           </div>
-        </el-image> -->
+        </el-image>
+        <img  v-if="! storeInfo.payMemberCoverImage" src="@/assets/avatar/man.png" fit="cover" class="store-avatar" />
       </div>
       <div class="store-header-right">
         <div class="store-name">{{ storeInfo.name }}</div>
@@ -38,14 +40,14 @@
     <el-tabs v-model="activeTab" class="store-tabs">
       <el-tab-pane label="闂ㄥ簵涓氱哗" name="performance">
         <el-form ref="searchForm" :model="searchForm" inline>
-          <el-form-item label="浜ゆ槗鍙�" prop="transactionId">
-            <el-input v-model="searchForm.transactionId" clearable placeholder="璇疯緭鍏ヤ氦鏄撳彿"></el-input>
+          <el-form-item label="浜ゆ槗鍙�" prop="orderNo">
+            <el-input v-model="searchForm.orderNo" clearable placeholder="璇疯緭鍏ヤ氦鏄撳彿"></el-input>
           </el-form-item>
-          <el-form-item label="鏀舵敮绫诲瀷" prop="type">
-            <el-select v-model="searchForm.type" clearable placeholder="璇烽�夋嫨绫诲瀷">
-              <el-option label="鍏ㄩ儴" :value="0"></el-option>
+          <el-form-item label="鏀舵敮绫诲瀷" prop="optType">
+            <el-select v-model="searchForm.optType" clearable placeholder="璇烽�夋嫨绫诲瀷">
+              <el-option label="鍏ㄩ儴" value=""></el-option>
               <el-option label="鏀跺叆" :value="1"></el-option>
-              <el-option label="鏀嚭" :value="2"></el-option>
+              <el-option label="鏀嚭" :value="-1"></el-option>
             </el-select>
           </el-form-item>
           <el-form-item label="鏀舵敮鏃堕棿" prop="createTime">
@@ -62,26 +64,32 @@
         <el-table :data="tableData.list" border stripe v-loading="isWorking.search" class="performance-table">
           <el-table-column label="鏀跺叆/鏀嚭" min-width="100px">
             <template slot-scope="{row}">
-              <span :class="row.type === 1 ? 'income' : 'expense'">{{ row.type === 1 ? '鏀跺叆' : '鏀嚭' }}</span>
+              <span :class="row.optType === 1 ? 'income' : 'expense'">{{ row.optType === 1 ? '鏀跺叆' : '鏀嚭' }}</span>
             </template>
           </el-table-column>
           <el-table-column prop="amount" label="閲戦锛堝厓锛�" min-width="100px">
             <template slot-scope="{row}">
-              <span :class="row.type === 1 ? 'income' : 'expense'">{{ row.amount }}</span>
+              <span :class="row.optType === 1 ? 'income' : 'expense'">{{ row.amount }}</span>
             </template>
           </el-table-column>
           <el-table-column prop="createTime" label="鏀舵敮鏃堕棿" min-width="160px"></el-table-column>
-          <el-table-column prop="businessType" label="涓氬姟绫诲瀷" min-width="100px"></el-table-column>
-          <el-table-column prop="transactionId" label="浜ゆ槗鍙�" min-width="180px"></el-table-column>
+          <el-table-column label="涓氬姟绫诲瀷" min-width="100px">
+            <template slot-scope="{row}">
+              <span v-if="row.type === 0">瀹屾垚璁㈠崟</span>
+              <span v-if="row.type === 1">鎻愮幇鏀嚭</span>
+              <span v-if="row.type === 2">鎻愮幇閫�鍥�</span>
+              <span v-if="row.type === 3">骞冲彴濂栧姳</span>
+            </template>
+          </el-table-column>
+          <el-table-column prop="orderNo" label="浜ゆ槗鍙�" min-width="180px"></el-table-column>
           <el-table-column label="鐘舵��" min-width="100px">
             <template slot-scope="{row}">
-              <span :class="row.status === 1 ? 'status-success' : 'status-pending'">
-                {{ row.status === 1 ? '宸插埌璐�' : '鎻愮幇涓�' }}
+              <span :class="row.vaildStatus === 1 ? 'status-success' : 'status-pending'">
+                {{ row.vaildStatus === 1 ? '宸插埌璐�' : '鎻愮幇涓�' }}
               </span>
             </template>
           </el-table-column>
         </el-table>
-
         <pagination
           @size-change="handleSizeChange"
           @current-change="handlePageChange"
@@ -133,19 +141,19 @@
               <div class="image-section">
                 <div class="image-item">
                   <span class="label">娉曚汉韬唤璇佹闈細</span>
-                  <el-image :src="storeInfo.idcardImg" fit="cover" class="qualification-image" :preview-src-list="[storeInfo.idcardImg]">
+                  <el-image :src="storeInfo.idcardImgUrl" fit="cover" class="qualification-image" :preview-src-list="[storeInfo.idcardImgUrl]">
                     <div slot="error" class="image-slot"><i class="el-icon-picture-outline"></i></div>
                   </el-image>
                 </div>
                 <div class="image-item">
                   <span class="label">娉曚汉韬唤璇佸弽闈細</span>
-                  <el-image :src="storeInfo.idcardImgBack" fit="cover" class="qualification-image" :preview-src-list="[storeInfo.idcardImgBack]">
+                  <el-image :src="storeInfo.idcardImgBackUrl" fit="cover" class="qualification-image" :preview-src-list="[storeInfo.idcardImgBackUrl]">
                     <div slot="error" class="image-slot"><i class="el-icon-picture-outline"></i></div>
                   </el-image>
                 </div>
                 <div class="image-item">
                   <span class="label">钀ヤ笟鎵х収锛�</span>
-                  <el-image :src="storeInfo.businessImg" fit="cover" class="qualification-image" :preview-src-list="[storeInfo.businessImg]">
+                  <el-image :src="storeInfo.businessImgUrl" fit="cover" class="qualification-image" :preview-src-list="[storeInfo.businessImgUrl]">
                     <div slot="error" class="image-slot"><i class="el-icon-picture-outline"></i></div>
                   </el-image>
                 </div>
@@ -160,14 +168,14 @@
               </div>
               <div class="image-item-row">
                 <span class="label">韬唤璇佸弽闈細</span>
-                <el-image :src="storeInfo.idcardImgBack" fit="cover" class="qualification-image" :preview-src-list="[storeInfo.idcardImgBack]">
+                <el-image :src="storeInfo.idcardImgBackUrl" fit="cover" class="qualification-image" :preview-src-list="[storeInfo.idcardImgBackUrl]">
                   <div slot="error" class="image-slot"><i class="el-icon-picture-outline"></i></div>
                 </el-image>
               </div>
               <div class="image-item-row">
                 <span class="label">鏈夋晥鍔冲姩鍚堝悓锛�</span>
                 <div class="image-list">
-                  <el-image v-for="(img, index) in storeInfo.laborContractImgs" :key="index" :src="img" fit="cover" class="qualification-image" :preview-src-list="storeInfo.laborContractImgs">
+                  <el-image v-for="(img, index) in storeInfo.laborContractImgUrls" :key="index" :src="img" fit="cover" class="qualification-image" :preview-src-list="storeInfo.laborContractImgUrls">
                     <div slot="error" class="image-slot"><i class="el-icon-picture-outline"></i></div>
                   </el-image>
                 </div>
@@ -175,7 +183,7 @@
               <div class="image-item-row">
                 <span class="label">绀句繚缂寸撼璇佹槑锛�</span>
                 <div class="image-list">
-                  <el-image v-for="(img, index) in storeInfo.socialSecurityImgs" :key="index" :src="img" fit="cover" class="qualification-image" :preview-src-list="storeInfo.socialSecurityImgs">
+                  <el-image v-for="(img, index) in storeInfo.socialSecurityImgUrls" :key="index" :src="img" fit="cover" class="qualification-image" :preview-src-list="storeInfo.socialSecurityImgUrls">
                     <div slot="error" class="image-slot"><i class="el-icon-picture-outline"></i></div>
                   </el-image>
                 </div>
@@ -188,7 +196,7 @@
             <div class="image-item-row">
               <span class="label">闂ㄥ簵闂ㄥご鐓э細</span>
               <div class="image-list">
-                <el-image v-for="(img, index) in storeInfo.storeFrontImgs" :key="index" :src="img" fit="cover" class="qualification-image" :preview-src-list="storeInfo.storeFrontImgs">
+                <el-image v-for="(img, index) in storeInfo.storeFrontImgUrls" :key="index" :src="img" fit="cover" class="qualification-image" :preview-src-list="storeInfo.storeFrontImgUrls">
                   <div slot="error" class="image-slot"><i class="el-icon-picture-outline"></i></div>
                 </el-image>
               </div>
@@ -196,7 +204,7 @@
             <div class="image-item-row">
               <span class="label">闂ㄥ簵鍐呴儴鐓х墖锛�</span>
               <div class="image-list">
-                <el-image v-for="(img, index) in storeInfo.storeInteriorImgs" :key="index" :src="img" fit="cover" class="qualification-image" :preview-src-list="storeInfo.storeInteriorImgs">
+                <el-image v-for="(img, index) in storeInfo.storeInteriorImgUrls" :key="index" :src="img" fit="cover" class="qualification-image" :preview-src-list="storeInfo.storeInteriorImgUrls">
                   <div slot="error" class="image-slot"><i class="el-icon-picture-outline"></i></div>
                 </el-image>
               </div>
@@ -204,7 +212,7 @@
             <div class="image-item-row">
               <span class="label">鍏跺畠鏉愭枡锛�</span>
               <div class="image-list">
-                <el-image v-for="(img, index) in storeInfo.otherMaterialImgs" :key="index" :src="img" fit="cover" class="qualification-image" :preview-src-list="storeInfo.otherMaterialImgs">
+                <el-image v-for="(img, index) in storeInfo.otherMaterialImgUrls" :key="index" :src="img" fit="cover" class="qualification-image" :preview-src-list="storeInfo.otherMaterialImgUrls">
                   <div slot="error" class="image-slot"><i class="el-icon-picture-outline"></i></div>
                 </el-image>
               </div>
@@ -221,6 +229,7 @@
 import GlobalWindow from '@/components/common/GlobalWindow'
 import Pagination from '@/components/common/Pagination'
 import { detail } from '@/api/business/shopInfo'
+import { fetchList, exportExcel } from '@/api/business/revenue'
 export default {
   name: 'OperaShopInfoWindow',
   extends: BaseOpera,
@@ -230,9 +239,11 @@
       activeTab: 'performance',
       storeInfo: null,
       searchForm: {
-        transactionId: '',
-        type: 0,
-        createTime: ''
+        orderNo: '',
+        optType: 0,
+        createTime: '',
+        memberId: '',
+        memberType: 2
       },
       tableData: {
         list: [],
@@ -257,14 +268,17 @@
   },
   methods: {
     open (title, row) {
+      this.searchForm.memberId = row.id
       detail(row.id)
         .then(res => {
           this.storeInfo = res
           this.activeTab = 'performance'
           this.searchForm = {
-            transactionId: '',
-            type: 0,
-            createTime: ''
+            orderNo: '',
+            optType: '',
+            createTime: '',
+            memberId: '',
+            memberType: 2
           }
           this.title = title
           this.visible = true
@@ -277,15 +291,18 @@
     search () {
       this.isWorking.search = true
       const data = {
-        pageIndex: this.tableData.pagination.pageIndex,
-        pageSize: this.tableData.pagination.pageSize,
-        shopId: this.storeInfo?.id,
-        transactionId: this.searchForm.transactionId,
-        type: this.searchForm.type,
-        startTime: this.searchForm.createTime?.[0] || '',
-        endTime: this.searchForm.createTime?.[1] || ''
+        capacity: this.tableData.pagination.pageSize,
+        page: this.tableData.pagination.pageIndex,
+        model: {
+          orderNo: this.searchForm.orderNo,
+          optType: this.searchForm.optType,
+          startTime: this.searchForm.createTime?.[0] || '',
+          endTime: this.searchForm.createTime?.[1] || '',
+          memberId: this.searchForm.memberId,
+          memberType: this.searchForm.memberType || ''
+        }
       }
-      this.api.fetchPerformance(data)
+      fetchList(data)
         .then(res => {
           this.tableData.list = res.list || []
           this.tableData.pagination.total = res.total || 0
@@ -299,9 +316,11 @@
     },
     reset () {
       this.searchForm = {
-        transactionId: '',
-        type: 0,
-        createTime: ''
+        orderNo: '',
+        optType: '',
+        createTime: '',
+        memberId: '',
+        memberType: 2
       }
       this.search()
     },
@@ -316,14 +335,20 @@
     exportExcel () {
       this.isWorking.export = true
       const data = {
-        shopId: this.storeInfo?.id,
-        transactionId: this.searchForm.transactionId,
-        type: this.searchForm.type,
-        startTime: this.searchForm.createTime?.[0] || '',
-        endTime: this.searchForm.createTime?.[1] || ''
+        capacity: 999999,
+        page: this.tableData.pagination.pageIndex,
+        model: {
+          orderNo: this.searchForm.orderNo,
+          optType: this.searchForm.optType,
+          startTime: this.searchForm.createTime?.[0] || '',
+          endTime: this.searchForm.createTime?.[1] || '',
+          memberId: this.searchForm.memberId,
+          memberType: this.searchForm.memberType || ''
+        }
       }
-      this.api.exportPerformance(data)
+      exportExcel(data)
         .then(res => {
+          this.download(res)
           this.$tip.apiSuccess('瀵煎嚭鎴愬姛')
         })
         .catch(e => {
@@ -470,4 +495,4 @@
   color: #909399;
   font-size: 20px;
 }
-</style>
\ No newline at end of file
+</style>

--
Gitblit v1.9.3