From 22aaacd9e51da58ed10221639b6bd2fd9a13c6e5 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期五, 16 一月 2026 18:49:23 +0800
Subject: [PATCH] 经销商管理

---
 admin/src/components/business/OperaMemberDetail.vue |  212 +++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 167 insertions(+), 45 deletions(-)

diff --git a/admin/src/components/business/OperaMemberDetail.vue b/admin/src/components/business/OperaMemberDetail.vue
index a20e0f9..8734a5f 100644
--- a/admin/src/components/business/OperaMemberDetail.vue
+++ b/admin/src/components/business/OperaMemberDetail.vue
@@ -1,65 +1,187 @@
 <template>
-  <GlobalAlertWindow
-    :title="title"
-    :visible.sync="visible"
-    :confirm-working="isWorking"
-    @confirm="confirm"
+  <GlobalWindow
+      :title="title"
+      width="100%"
+      :visible.sync="visible"
   >
-    <el-descriptions direction="horizontal" labelClassName="descriptions-label" :column="1">
-      <el-descriptions-item label="浼氬憳鏄电О">{{ form.nickName }}</el-descriptions-item>
-      <el-descriptions-item label="鐪熷疄濮撳悕">{{ form.name }}</el-descriptions-item>
-      <el-descriptions-item label="鎵嬫満鍙�">{{ form.phone }}</el-descriptions-item>
-      <el-descriptions-item label="韬唤璇佸彿">{{ form.idcard }}</el-descriptions-item>
-      <el-descriptions-item label="鎬у埆">{{ form.sex==0?'鐢�':form.sex==1?'濂�':'鏈煡' }}</el-descriptions-item>
-      <el-descriptions-item label="鍦板尯">{{ form.addr }}</el-descriptions-item>
-      <el-descriptions-item label="涓�鍙ヨ瘽浠嬬粛">{{ form.info }}</el-descriptions-item>
-    </el-descriptions>
-    <div slot="footer"></div>
-  </GlobalAlertWindow>
+    <div style="display: block">
+      <div class="header">
+        <div  class="header-b">鐢ㄦ埛淇℃伅</div>
+        <div v-if="info.phone!=null && info.phone!=''" class="header-blue">宸叉巿鏉冩墜鏈哄彿</div>
+      </div>
+      <div class="info-item">
+          <div class="info-item-a">寰俊openid锛�<span>{{info.openId}}</span></div>
+          <div class="info-item-a">鏄电О锛�<span>{{info.nickname}}</span></div>
+          <div class="info-item-a">瀹㈡埛濮撳悕锛�<span>{{info.name}}</span></div>
+      </div>
+      <div class="info-item">
+        <div class="info-item-a">鎺堟潈鎵嬫満鍙凤細<span>{{info.phone}}</span></div>
+        <div class="info-item-a">鍏宠仈缁忛攢鍟嗭細<span>{{info.shopName}}</span> <span class="blue btn" @click="showChangeRecord">鍙樻洿璁板綍</span></div>
+        <div class="info-item-a"></div>
+      </div>
+      <div class="info-item"></div>
+    </div>
+    <div style="display: block">
+      <div class="header">
+        <div  class="header-b">绉垎鏄庣粏</div>
+        <div v-if="info.phone!=null && info.phone!=''" class="header-btn">
+          <el-button style="display: inline" type="primary" @click="changeIntegral">绉垎璋冩暣</el-button>
+        </div>
+      </div>
+      <TableLayout >
+        <!-- 琛ㄦ牸鍜屽垎椤� -->
+        <template v-slot:table-wrap>
+            <div >
+              <div style="float: left; margin-bottom: 20px;width:50%;">
+                  <div class="info-item">
+                    <div class="info-item-a">鐜版湁绉垎锛�<span>{{info.integral || 0}}</span></div>
+                    <div class="info-item-a">绱绉垎锛�<span>{{info.totalIntegral||0}}</span></div>
+                  </div>
+              </div>
+              <div style="float: right; margin-bottom: 20px;">
+                <el-select  v-model="searchForm.type"  placeholder="鍏ㄩ儴"  clearable @change="search" style="width: 120px;" >
+                  <el-option  :key="0" :value="0"  label="鑾峰緱"  ></el-option>
+                  <el-option   :key="1" :value="1" label="鎵i櫎"  ></el-option>
+                </el-select>
+                <el-button @click="search" type="鐐瑰嚮鍒锋柊"  icon="el-icon-refresh"  style="margin-left: 10px;" ></el-button>
+              </div>
+            </div>
+            <el-table
+                v-loading="isWorking.search"
+                :data="tableData.list"
+                stripe
+                border
+                @selection-change="handleSelectionChange"
+            >
+              <el-table-column prop="type"  label="鑾峰緱/鎵i櫎" align="center" min-width="150px">
+                <template slot-scope="{row}">
+                  {{ row.saleType == 1?'鎵i櫎':'鑾峰緱'}}
+                </template>
+              </el-table-column>
+              <el-table-column prop="num" label="鏁伴噺" fixed align="center" min-width="100px">  </el-table-column>
+              <el-table-column prop="strObjType" label="娑堣垂绫诲瀷" align="center" min-width="100px"></el-table-column>
+              <el-table-column prop="orderCode" label="鍏宠仈璁㈠崟" align="center" min-width="150px"></el-table-column>
+              <el-table-column prop="remark" label="澶囨敞" align="center" min-width="200px"></el-table-column>
+              <el-table-column prop="createDate" label="鍙樺姩鏃堕棿" align="center" min-width="200px"></el-table-column>
+            </el-table>
+            <pagination
+                @size-change="handleSizeChange"
+                @current-change="handlePageChange"
+                :pagination="tableData.pagination"
+            >
+            </pagination>
+        </template>
+      </TableLayout>
+    </div>
+    <template  v-slot:footer>
+      <el-button @click="visible=false">杩斿洖</el-button>
+    </template>
+    <OperaChangeShopRecordWindow ref="OperaChangeShopRecordWindow"/>
+    <OperaChangeIntegralWindow ref="OperaChangeIntegralWindow" @success="successBiz"/>
+  </GlobalWindow>
 </template>
 
 <script>
-import BaseOpera from '@/components/base/BaseOpera'
-import GlobalAlertWindow from '@/components/common/GlobalAlertWindow'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaChangeShopRecordWindow from '@/components/business/OperaChangeShopRecordWindow'
+import OperaChangeIntegralWindow from '@/components/business/OperaChangeIntegralWindow'
 export default {
-  name: 'OperaCouponWindow',
-  extends: BaseOpera,
-  components: { GlobalAlertWindow },
+  name: 'OperaShopGoodsWindow',
+  extends: BaseTable,
+  components: { GlobalWindow, TableLayout, Pagination, OperaChangeShopRecordWindow,OperaChangeIntegralWindow },
   data () {
-    
     return {
-      getDate: [],
-      // 琛ㄥ崟鏁版嵁
-      form: {
-        id: null,
-        name: '',
-        nickName: '',
-        sex: '',
-        addr: '',
-        phone: '',
-        idcard: '',
-        info: ''
-      },
-      
+      title: '',
+      visible: false,
+      tabelHeight: null,
+      info: {},
+      // 鎼滅储
+      searchForm: {
+        memberId: '',
+        userType: 0,
+        type: null
+      }
     }
   },
+
   created () {
     this.config({
-      api: '/business/coupon',
-      'field.id': 'id'
+      module: '鐢ㄦ埛淇℃伅琛�',
+      api: '/business/integral',
+      'field.id': 'id',
+      'field.main': 'id'
     })
   },
   methods: {
-    
-  },
+    successBiz(){
+      this.handlePageChange()
+      this.$emit('success')
+    },
+    showChangeRecord () {
+      if (this.info) {
+        this.$refs.OperaChangeShopRecordWindow.open('瀹㈡埛缁忛攢鍟嗗彉鏇磋褰�', this.info)
+      }
+    },
+    changeIntegral () {
+      if (this.info) {
+        this.$refs.OperaChangeIntegralWindow.open('瀹㈡埛绉垎璋冩暣', this.info)
+      }
+    },
+    open (title, goods) {
+      this.title = title
+      this.visible = true
+      this.info = goods
+      this.searchForm.memberId = goods.id
+      this.search()
+    },
+    handleClick (val) {
+    }
+  }
 }
 </script>
+<style scoped>
+.table-pagination{
+  position: fixed !important;
+  bottom: 50px;
+}
+.header-b{
+  display: inline-block;
+  font-size: 16px;
+  font-weight: bold;
+}
+.header-blue{
+  display: inline-block;
+  font-size: 12px;
+  border: 1px solid #216EEE;
+  padding: 2px 10px;
+  margin-left: 20px;
+  color: #216EEE;
+  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;
 
-<style lang="scss">
-.descriptions-label {
-  width: 80px;
-  text-align: right !important;
-  display: block !important;;
+}
+.info-item-a span{
+  font-weight: 600;
+}
+.info-item-a  .btn{
+  font-size: 12px !important;
+  cursor: pointer !important;
 }
 </style>
-

--
Gitblit v1.9.3