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