From 0fa627d021ee2683a8895e49080757c51990a6e1 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期五, 08 八月 2025 16:31:46 +0800
Subject: [PATCH] 导出,商品打标签
---
manager/src/api/goods.js | 9 +
manager/src/views/goods/goods-info/goods.vue | 143 +++++++++++++++++++++++++++++++++++
manager/src/api/goods-tag.js | 17 ++++
manager/src/views/promotions/coupon/coupon-receive.vue | 41 ++++++++++
manager/src/api/promotion.js | 6 +
5 files changed, 211 insertions(+), 5 deletions(-)
diff --git a/manager/src/api/goods-tag.js b/manager/src/api/goods-tag.js
new file mode 100644
index 0000000..b6f1d75
--- /dev/null
+++ b/manager/src/api/goods-tag.js
@@ -0,0 +1,17 @@
+import service from "@/libs/axios";
+
+// 缂栬緫鍟嗗搧鏍囩
+export const addOrUpDateTag = (params) => {
+ return service({
+ url: "/lmk/goodsTag/addOrUpdate",
+ method: "POST",
+ data: params
+ })
+}
+
+export const getGoodSTagById = (params) => {
+ return service({
+ url: "/lmk/goodsTag/getGoods/" +params,
+ method: "GET",
+ })
+}
diff --git a/manager/src/api/goods.js b/manager/src/api/goods.js
index 11d1b40..ab6af95 100644
--- a/manager/src/api/goods.js
+++ b/manager/src/api/goods.js
@@ -226,6 +226,11 @@
return getRequest(`/statistics/refund/order/getPrice`, params)
}
-export const getGoodsFirstSkuId = (id) =>{
- return getRequest('/goods/goods/getFirstSkuId/'+id)
+export const getGoodsFirstSkuId = (id) => {
+ return getRequest('/goods/goods/getFirstSkuId/' + id)
}
+
+export const queryExportGoods = (params) =>{
+ return getRequest("/goods/goods/queryExportGoods", params,'blob')
+}
+
diff --git a/manager/src/api/promotion.js b/manager/src/api/promotion.js
index 880ae64..82d6e29 100644
--- a/manager/src/api/promotion.js
+++ b/manager/src/api/promotion.js
@@ -280,4 +280,8 @@
// 鑾峰彇浼樻儬鍒搁鍙栬褰�
export const getCouponReceiveList = (params) => {
return getRequest("/promotion/coupon/received", params);
-};
\ No newline at end of file
+};
+
+export const queryExportCoupon = (params) =>{
+ return getRequest("/promotion/coupon/queryExportCoupon", params,'blob')
+}
diff --git a/manager/src/views/goods/goods-info/goods.vue b/manager/src/views/goods/goods-info/goods.vue
index 66c568b..55309ba 100644
--- a/manager/src/views/goods/goods-info/goods.vue
+++ b/manager/src/views/goods/goods-info/goods.vue
@@ -76,6 +76,12 @@
icon="ios-search"
>鎼滅储</Button
>
+ <Button
+ @click="queryExportGoods"
+ class="search-btn"
+ type="primary"
+ >瀵煎嚭鍟嗗搧娓呭崟</Button
+ >
</Form>
<Table
:loading="loading"
@@ -106,6 +112,22 @@
</div>
</template>
</Table>
+ <Modal
+ v-model="showUpdateTag"
+ title="鏍囩"
+ width="800"
+ :mask-closable="false"
+ >
+ <Select v-model="tagForm.selectTagIds" multiple filterable :loading="selectLoading" style="width:200px;">
+ <Option v-for="item in options" :key="item.id" :label="item.tagName" :value="item.id"></Option>
+ </Select>
+
+ <div slot="footer">
+ <Button type="error" @click="saveTag">淇濆瓨</Button>
+ <!-- <Button type="primary" @click="generalQrCode">纭</Button>-->
+ </div>
+ </Modal>
+
<Modal
v-model="showGeneralQrCode"
title="浜岀淮鐮�"
@@ -162,9 +184,12 @@
</template>
<script>
-import { getGoodsListData, upGoods, lowGoods ,getGoodsFirstSkuId } from "@/api/goods";
+import { getGoodsListData, upGoods, lowGoods ,getGoodsFirstSkuId,queryExportGoods } from "@/api/goods";
import {getSts} from '@/api/file'
import vueQr from "vue-qr";
+import {getTags} from "@/api/tag";
+import {addOrUpDateTag,getGoodSTagById} from "@/api/goods-tag"
+
export default {
components: {
"vue-qr": vueQr,
@@ -172,6 +197,18 @@
name: "goods",
data() {
return {
+ tagForm:{
+ selectTagIds:[],
+ goodsId:'',
+ createType:'MANAGER',
+ },
+
+ selectLoading: false,
+ options: [],
+
+ showUpdateTag:false,
+
+
showGeneralQrCode:false,
QRCodeUrl:'',
codeUrl: this.QRcodeBaseUrl+ '/scanpage/goods',
@@ -323,6 +360,7 @@
"Button",
{
props: {
+ type: "info",
size: "small",
},
on: {
@@ -332,6 +370,24 @@
},
},
"鐢熸垚浜岀淮鐮�"
+ ),
+ h(
+ "Button",
+ {
+ style: {
+ marginRight: "5px",
+ marginTop: "5px",
+ },
+ props: {
+ size: "small",
+ },
+ on: {
+ click: () => {
+ this.openTagsModal(params.row);
+ },
+ },
+ },
+ "缂栬緫鏍囩"
)
]);
} else {
@@ -374,6 +430,9 @@
h(
"Button",
{
+ style: {
+ marginRight: "5px",
+ },
props: {
type: "error",
size: "small",
@@ -385,6 +444,23 @@
},
},
"鐢熸垚浜岀淮鐮�"
+ ),h(
+ "Button",
+ {
+ style: {
+ marginRight: "5px",
+ marginTop: "5px",
+ },
+ props: {
+ size: "small",
+ },
+ on: {
+ click: () => {
+ this.openTagsModal(params.row);
+ },
+ },
+ },
+ "缂栬緫鏍囩"
)
]);
}
@@ -396,6 +472,56 @@
};
},
methods: {
+ saveTag(){
+ this.showUpdateTag = false;
+ const form = {
+ tagIds:this.tagForm.selectTagIds,
+ createType:this.tagForm.createType,
+ goodsId:this.tagForm.goodsId
+ }
+ addOrUpDateTag(form).then(res =>{
+ console.log(res)
+ })
+ },
+ openTagsModal(row){
+
+ this.showUpdateTag = true;
+ this.tagForm.selectTagIds = [];
+ this.tagForm.goodsId = "";
+ getGoodSTagById(row.id).then(res =>{
+ if(res.code === 200){
+ this.tagForm.goodsId = row.id;
+ res.data.forEach(item =>{
+ this.tagForm.selectTagIds.push(item.tagId);
+ })
+ }
+ console.log(this.tagForm)
+ })
+ },
+ queryExportGoods(){
+ queryExportGoods(this.searchForm).then(res =>{
+ const blob = new Blob([res], {
+ type: "application/vnd.ms-excel;charset=utf-8",
+ });
+ //瀵逛簬<a>鏍囩锛屽彧鏈� Firefox 鍜� Chrome锛堝唴鏍革級 鏀寔 download 灞炴��
+ //IE10浠ヤ笂鏀寔blob浣嗘槸渚濈劧涓嶆敮鎸乨ownload
+ if ("download" in document.createElement("a")) {
+ //鏀寔a鏍囩download鐨勬祻瑙堝櫒
+ const link = document.createElement("a"); //鍒涘缓a鏍囩
+ link.download = "鍟嗗搧娓呭崟.xlsx"; //a鏍囩娣诲姞灞炴��
+ link.style.display = "none";
+ link.href = URL.createObjectURL(blob);
+ document.body.appendChild(link);
+ link.click(); //鎵ц涓嬭浇
+ URL.revokeObjectURL(link.href); //閲婃斁url
+ document.body.removeChild(link); //閲婃斁鏍囩
+ } else {
+ navigator.msSaveBlob(blob, fileName);
+ }
+ })
+
+
+ },
closeGeneralQrCode(){
this.showGeneralQrCode = false;
},
@@ -505,9 +631,24 @@
query: { id: id },
})
},
+ remoteMethod(query) {
+ this.selectLoading = true;
+ var params = {
+ "tagTypeKey": "GOODS",
+ "pageNumber": 1,
+ "pageSize": 500
+ }
+ getTags(params).then(res => {
+ this.options = res.data;
+ this.selectLoading = false;
+ });
+ },
+
},
+
mounted() {
this.init();
+ this.remoteMethod("")
},
};
</script>
diff --git a/manager/src/views/promotions/coupon/coupon-receive.vue b/manager/src/views/promotions/coupon/coupon-receive.vue
index 160d475..dab6836 100644
--- a/manager/src/views/promotions/coupon/coupon-receive.vue
+++ b/manager/src/views/promotions/coupon/coupon-receive.vue
@@ -67,6 +67,12 @@
class="search-btn"
>鎼滅储</Button
>
+ <Button
+ @click="queryExportCoupon"
+ type="primary"
+ class="search-btn">
+ 瀵煎嚭棰嗗彇璁板綍
+ </Button>
</Form>
<Table
v-if="refreshTable"
@@ -97,7 +103,7 @@
</div>
</template>
<script>
-import { getCouponReceiveList } from "@/api/promotion";
+import { getCouponReceiveList,queryExportCoupon } from "@/api/promotion";
import {
memberPromotionsStatusRender,
promotionsScopeTypeRender,
@@ -254,6 +260,39 @@
},
},
methods: {
+ queryExportCoupon(){
+ console.log(this.selectDate.length === 0);
+
+ if(this.selectDate.length === 0){
+ this.$Message.error("蹇呴』閫夋嫨鏃堕棿鑼冨洿锛屾悳绱㈠悗杩涜瀵煎嚭锛�");
+ this.searchForm.startTime = null;
+ this.searchForm.endTime = null;
+ }else{
+ this.searchForm.startTime = this.selectDate[0].getTime();
+ this.searchForm.endTime = this.selectDate[1].getTime();
+ queryExportCoupon(this.searchForm).then(res =>{
+ const blob = new Blob([res], {
+ type: "application/vnd.ms-excel;charset=utf-8",
+ });
+ //瀵逛簬<a>鏍囩锛屽彧鏈� Firefox 鍜� Chrome锛堝唴鏍革級 鏀寔 download 灞炴��
+ //IE10浠ヤ笂鏀寔blob浣嗘槸渚濈劧涓嶆敮鎸乨ownload
+ if ("download" in document.createElement("a")) {
+ //鏀寔a鏍囩download鐨勬祻瑙堝櫒
+ const link = document.createElement("a"); //鍒涘缓a鏍囩
+ link.download = "浼樻儬鍒搁鍙栬褰�.xlsx"; //a鏍囩娣诲姞灞炴��
+ link.style.display = "none";
+ link.href = URL.createObjectURL(blob);
+ document.body.appendChild(link);
+ link.click(); //鎵ц涓嬭浇
+ URL.revokeObjectURL(link.href); //閲婃斁url
+ document.body.removeChild(link); //閲婃斁鏍囩
+ } else {
+ navigator.msSaveBlob(blob, fileName);
+ }
+ })
+ }
+
+ },
back() {
this.$store.commit("removeTag", "coupon-receive");
this.$router.go(-1);
--
Gitblit v1.8.0