From 0d0e67818a45161af14114211f43aafd232a6da2 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期二, 27 一月 2026 10:52:15 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 admin/src/views/business/platformGoods.vue |  166 ++++++++++++++++++++++++++-----------------------------
 1 files changed, 79 insertions(+), 87 deletions(-)

diff --git a/admin/src/views/business/platformGoods.vue b/admin/src/views/business/platformGoods.vue
index d425ab0..885cc8c 100644
--- a/admin/src/views/business/platformGoods.vue
+++ b/admin/src/views/business/platformGoods.vue
@@ -2,11 +2,6 @@
   <TableLayout :permissions="['business:goods:query']">
     <!-- 鎼滅储琛ㄥ崟 -->
     <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-      <el-tabs v-model="activeName" @tab-click="handleClick">
-        <el-tab-pane label="鍏ㄩ儴鍟嗗搧" name="first"></el-tab-pane>
-        <el-tab-pane label="宸插敭缃勫晢鍝�" name="second"></el-tab-pane>
-        <el-tab-pane label="鍥炴敹绔欏晢鍝�" name="third"></el-tab-pane>
-      </el-tabs>
       <el-form-item label="鍟嗗搧鍚嶇О" prop="name">
         <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ晢鍝佸悕绉�" @keypress.enter.native="search"></el-input>
       </el-form-item>
@@ -16,7 +11,10 @@
       <el-form-item label="鎵�灞炲垎绫�" prop="categoryId">
         <el-select
           v-model="searchForm.categoryId"
+          style="width: 150px"
           placeholder="璇烽�夋嫨鎵�灞炲垎绫�"
+          clearable
+          @change="search"
         >
           <el-option
             v-for="item in labels"
@@ -29,7 +27,10 @@
       <el-form-item label="鎵�灞炲搧鐗�" prop="brandId">
         <el-select
           v-model="searchForm.brandId"
+          style="width: 150px"
           placeholder="璇烽�夋嫨鎵�灞炲搧鐗�"
+          clearable
+          @change="search"
         >
           <el-option
             v-for="item in brands"
@@ -41,8 +42,10 @@
       </el-form-item>
       <el-form-item label="涓婃灦鐘舵��" prop="status">
         <el-select
-          v-model="searchForm.brandId"
+          v-model="searchForm.status"
           placeholder="璇烽�夋嫨涓婃灦鐘舵��"
+          clearable
+          @change="search"
         >
           <el-option :key="0" :value="0" label="涓婃灦"></el-option>
           <el-option :key="1" :value="1" label="涓嬫灦"></el-option>
@@ -51,15 +54,15 @@
       <section>
         <el-button type="primary" @click="search">鎼滅储</el-button>
         <el-button @click="reset">閲嶇疆</el-button>
-        <el-button @click="$refs.operaPlatformGoodsSkuWindow.open('骞冲彴SKU')">閲嶇疆</el-button>
       </section>
     </el-form>
     <!-- 琛ㄦ牸鍜屽垎椤� -->
     <template v-slot:table-wrap>
-      <ul class="toolbar" v-permissions="['business:goods:create', 'business:goods:delete']">
-        <li><el-button type="primary" @click="$refs.operaGoodsWindow.open('鏂板缓鍟嗗搧', null, 0)" v-permissions="['business:goods:create']">鏂板缓</el-button></li>
-        <li><el-button type="primary" @click="issued(0)">涓婃灦</el-button></li>
-        <li><el-button type="primary" @click="soldOut(1)">涓嬫灦</el-button></li>
+      <ul class="toolbar" >
+        <li><el-button type="primary" icon="el-icon-plus" @click="$refs.operaGoodsWindow.open('鏂板缓鍟嗗搧', null, 0)" v-permissions="['business:goods:create']">鏂板缓</el-button></li>
+        <li><el-button type="primary"  icon="el-icon-edit"  @click="issued(0)">涓婃灦</el-button></li>
+        <li><el-button type="danger"  icon="el-icon-edit"  @click="issued(1)">涓嬫灦</el-button></li>
+        <li><p class="tip-warn" style="width: 100%;margin-left: 20px;"><i class="el-icon-warning"></i>鎻愮ず锛氥�愪緵璐т环璁剧疆銆戝彧缁熻鍚敤鐘舵�佺殑渚涢攢鍟嗚缃暟鎹紝锛堝凡瀹氫环渚涢攢鍟嗘暟/鍏ㄩ儴渚涢攢鍟嗘暟锛�</p></li>
       </ul>
       <el-table
         v-loading="isWorking.search"
@@ -69,50 +72,47 @@
         @selection-change="handleSelectionChange"
       >
         <el-table-column type="selection" width="55"></el-table-column>
-        <el-table-column prop="id" label="鍟嗗搧ID" min-width="100px"></el-table-column>
-        <el-table-column prop="imgurl" label="鍟嗗搧淇℃伅" min-width="100px">
+        <el-table-column prop="imgurl" label="鍟嗗搧淇℃伅" min-width="80px">
           <template slot-scope="{row}">
-            <el-image :scr="row.imgurlfull" :preview-src-list="[row.imgurlfull]"></el-image>
-            {{ row.name }}
+            <el-image style="width: 50px;height: 50px;" v-if="row.imgurl && row.imgurl!=''" :src="row.resourcePath+row.imgurl" :preview-src-list="[row.resourcePath+row.imgurl]"></el-image>
           </template>
         </el-table-column>
-        <el-table-column prop="categoryName" label="鎵�灞炲垎绫�" min-width="100px"></el-table-column>
-        <el-table-column prop="brandName" label="鎵�灞炲搧鐗�" min-width="100px"></el-table-column>
-        <el-table-column prop="showPrice" label="灞曠ず浠锋牸" min-width="100px"></el-table-column>
-        <el-table-column prop="salenum" label="搴撳瓨" min-width="100px"></el-table-column>
-        <el-table-column prop="salenum" label="铏氭嫙閿�閲�" min-width="100px"></el-table-column>
-        <el-table-column prop="salenum" label="瀹為檯閿�閲�" min-width="100px"></el-table-column>
-        <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
-        <el-table-column prop="status" label="鐘舵��" min-width="100px">
+        <el-table-column prop="id" label="鍟嗗搧ID" min-width="150px" ></el-table-column>
+        <el-table-column prop="name" label="鍟嗗搧鍚嶇О" min-width="150px" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="categoryName" label="鎵�灞炲垎绫�" min-width="120px"></el-table-column>
+        <el-table-column prop="brandName" label="鎵�灞炲搧鐗�" min-width="120px"></el-table-column>
+        <el-table-column prop="price" label="灞曠ず浠锋牸" min-width="100px"></el-table-column>
+        <el-table-column prop="skuPrice" label="閿�鍞环(鍏�)" min-width="100px"></el-table-column>
+        <el-table-column prop="shopPrice" label="渚涜揣浠疯缃�" min-width="100px" align="center">
+          <template slot-scope="{row}" >
+            <div title="閽堝鍚敤渚涢攢鍟嗕环鏍艰缃粺璁�" @click="goPriceSet(row)" style="cursor:pointer;"><span  class="red"> {{row.pricedShopNum||0}}</span> / <span class="green"> {{row.shopNum||0}}</span>  </div>
+          </template>
+        </el-table-column>
+        <el-table-column prop="stockNum" label="鍓╀綑搴撳瓨閲�" min-width="100px"></el-table-column>
+        <el-table-column prop="salesVolume" label="瀹為檯閿�閲�" min-width="100px"></el-table-column>
+        <el-table-column prop="editDate" label="鏈�杩戞洿鏂版椂闂�" min-width="100px"></el-table-column>
+        <el-table-column prop="status" label="涓婁笅鏋剁姸鎬�" min-width="100px" fixed="right" align="center">
           <template slot-scope="{row}">
             <el-switch
               v-model="row.status"
-              :active-value="1"
-              :inactive-value="0"
+              :active-value="0"
+              :inactive-value="1"
               active-color="#13ce66"
               inactive-color="#ff4949"
               @change="statusChange(row)"
             ></el-switch>
           </template>
         </el-table-column>
-        <!-- <el-table-column prop="isrec" label="鏄惁鎺ㄨ崘 0鍚� 1鏄�" min-width="100px"></el-table-column>
-        <el-table-column prop="styleImg" label="鍜栬眴椋庡懗鍥�" min-width="100px"></el-table-column>
-        <el-table-column prop="labels" label="鍟嗗搧鏍囩闆嗗悎,澶氫釜鐢ㄨ嫳鏂囬�楀彿闅斿紑" min-width="100px"></el-table-column> -->
-        <!-- v-if="containPermissions(['business:goods:update', 'business:goods:delete'])" -->
         <el-table-column
           label="鎿嶄綔"
-          min-width="120"
+          min-width="160"
           fixed="right"
         >
           <template slot-scope="{row}">
-            <template v-if="row.status==1">
-              <el-button type="text" @click="$refs.operaGoodsWindow.open('缂栬緫鍟嗗搧', row, 0)" v-permissions="['business:goods:update']">缂栬緫</el-button>
-              <el-button type="text" @click="$refs.operaPlatformGoodsSkuWindow.open('骞冲彴SKU', row)">SKU</el-button>
-              <el-button type="text" @click="deleteById(row)" v-permissions="['business:goods:delete']">鍒犻櫎</el-button>
-            </template>
-            <template v-else>
-              <el-button type="text" @click="$refs.operaGoodsDetailWindow.open('鍟嗗搧璇︽儏', row, 0)">鏌ョ湅璇︽儏</el-button>
-            </template>
+             <el-button type="text" v-if="row.status == 1" @click="$refs.operaGoodsWindow.open('缂栬緫鍟嗗搧', row, 0)" v-permissions="['business:goods:update']">缂栬緫</el-button>
+            <el-button type="text" v-permissions="['business:goods:update']" @click="goPriceSet(row)">渚涜揣浠�</el-button>
+            <el-button type="text" style="color: red;" @click="deleteById(row)" v-permissions="['business:goods:delete']">鍒犻櫎</el-button>
+            <!-- <el-button type="text" @click="$refs.operaGoodsDetailWindow.open('鍟嗗搧璇︽儏', row, 0)">鏌ョ湅璇︽儏</el-button>-->
           </template>
         </el-table-column>
       </el-table>
@@ -127,6 +127,7 @@
     <OperaGoodsWindow ref="operaGoodsWindow" @success="handlePageChange"/>
     <OperaGoodsDetailWindow ref="operaGoodsDetailWindow"/>
     <OperaPlatformGoodsSkuWindow ref="operaPlatformGoodsSkuWindow"/>
+    <OperaShopGoodsWindow ref="OperaShopGoodsWindow" @success="priceSuccess"/>
   </TableLayout>
 </template>
 
@@ -137,49 +138,35 @@
 import OperaGoodsWindow from '@/components/business/OperaGoodsWindow'
 import OperaGoodsDetailWindow from '@/components/business/OperaGoodsDetailWindow'
 import OperaPlatformGoodsSkuWindow from '@/components/business/OperaPlatformGoodsSkuWindow'
-import { fetchList as labelList } from '@/api/business/labels'
-import { updateById } from '@/api/business/goods'
+import OperaShopGoodsWindow from '@/components/business/OperaShopGoodsWindow'
+import { findAll as labelList } from '@/api/business/labels'
 export default {
   name: 'Goods',
   extends: BaseTable,
-  components: { TableLayout, Pagination, OperaGoodsWindow, OperaGoodsDetailWindow, OperaPlatformGoodsSkuWindow },
+  components: { TableLayout, Pagination, OperaGoodsWindow, OperaGoodsDetailWindow, OperaPlatformGoodsSkuWindow, OperaShopGoodsWindow },
   data () {
     return {
       activeName: 'first',
       // 鎼滅储
       searchForm: {
         id: '',
-        creator: '',
-        createDate: '',
-        editor: '',
-        editDate: '',
-        isdeleted: '',
-        remark: '',
-        imgurl: '',
         name: '',
-        info: '',
         categoryId: '',
         brandId: '',
-        price: '',
-        salenum: '',
-        content: '',
-        sortnum: '',
-        looknum: '',
         // 绫诲瀷 0骞冲彴鍟嗗煄 1鍜栬眴鍟嗗煄 2鍜栧暋璁″垝鍟嗗搧
         type: '0', // 骞冲彴鍟嗗搧
         status: '',
-        isrec: '',
-        styleImg: '',
         labels: ''
       },
       labels: [],
       brands: [],
+      serials: []
     }
   },
-  provide() {
+  provide () {
     return {
       labels: () => this.labels,
-      brands: () => this.brands,
+      brands: () => this.brands
     }
   },
   created () {
@@ -190,58 +177,63 @@
       'field.main': 'id'
     })
     this.search()
-
     labelList({
-      capacity: 999,
-      model: {
-        type: 0 //鍟嗗搧鍒嗙被
-      }
+      type: 0 // 鍟嗗搧鍒嗙被
+    }).then(res => {
+      this.labels = res
+    })
+    labelList({
+      type: 1 // 鍟嗗搧鍝佺墝
     })
       .then(res => {
-        this.labels = res.records
-      })
-    labelList({
-      capacity: 999,
-      model: {
-        type: 1 //鍟嗗搧鍝佺墝
-      }
-    })
-      .then(res => {
-        this.brands = res.records
+        this.brands = res
       })
   },
   methods: {
-    handleClick(val) {
+    priceSuccess () {
+      this.handlePageChange()
+    },
+    goPriceSet (row) {
+      if (row.skuPrice == null) {
+        this.$tip.warning('璇峰厛璁剧疆鍟嗗搧閿�鍞环锛�')
+        return
+      }
+      this.$refs.OperaShopGoodsWindow.open('璁剧疆渚涜揣浠� - ' + row.name, row)
+    },
+    handleClick (val) {
 
     },
     /**
      *
      * @param {涓婁笅鐘舵�亇 status 0涓婃灦 1涓嬫灦
      */
-    issued(status) {
+    issued (status) {
       if (this.tableData.selectedRows.length === 0) {
         this.$tip.warning('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�')
         return
       }
-      let message = `纭${status==0?'涓婃灦':'涓嬫灦'}閫変腑鐨勫晢鍝佷箞?`
+      const message = `纭${status === 0 ? '涓婃灦' : '涓嬫灦'}閫変腑鐨勫晢鍝佷箞?`
       this.$dialog.messageWaring(message)
         .then(() => {
-
+          var temp = []
+          this.tableData.selectedRows.forEach(item => {
+            temp.push({ id: item.id, name: item.name, status: status })
+          })
+          this.statusChangeBiz(temp)
         })
     },
-
-    statusChange(row) {
-      updateById(row)
-        .then(() => {
-          this.$message.success('鎿嶄綔鎴愬姛')
-        })
-        .catch(e => {
-          this.$message.error('鎿嶄綔鎴愬姛')
-        })
+    statusChange (row) {
+      this.statusChangeBiz([row])
+    },
+    statusChangeBiz (rows) {
+      this.api.updateStatus(rows)
         .then(() => {
           this.handlePageChange()
         })
+        .catch(e => {
+          this.handlePageChange()
+        })
     }
-  },
+  }
 }
 </script>

--
Gitblit v1.9.3