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