【新增】1.temu条码组件 2.添加SKU
This commit is contained in:
@@ -290,8 +290,6 @@ export default {
|
||||
},
|
||||
|
||||
created() {
|
||||
window.eval = () => {
|
||||
}
|
||||
const devVersion = require('../manifest.development.json').version
|
||||
const prodVersion = require('../manifest.production.json').version
|
||||
this.version = process.env.NODE_ENV === 'production' ? prodVersion : devVersion
|
||||
@@ -392,7 +390,7 @@ export default {
|
||||
}
|
||||
await detalAction(res);
|
||||
console.log("--fileList--", fileList)
|
||||
},
|
||||
},
|
||||
gotoKefu() {
|
||||
window.open('https://work.weixin.qq.com/kfid/kfcaa4208f661131eba', '_blank')
|
||||
},
|
||||
|
||||
@@ -22,7 +22,8 @@
|
||||
:current.sync="search.current"
|
||||
:size.sync="search.size"
|
||||
style="margin-top: 8px;"
|
||||
@getList="getList">
|
||||
@getList="getList"
|
||||
@selection-change="handleSelectionChange">
|
||||
<el-table-column slot="productName" width="300px" :show-overflow-tooltip='true' label="商品名称" fixed="left">
|
||||
<template slot-scope="scope">
|
||||
<div>
|
||||
@@ -45,22 +46,79 @@
|
||||
title="添加SKU"
|
||||
width="1400px"
|
||||
@confirm="onConfirm">
|
||||
<ai-search-bar>
|
||||
<template #left>
|
||||
<el-select v-model="skuSearch.mallId" placeholder="请选择店铺" size="small" @change="onMallChange">
|
||||
<el-option
|
||||
v-for="item in $store.state.mallList"
|
||||
:key="item.mallId"
|
||||
:label="item.mallName"
|
||||
:value="item.mallId">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
<template #right>
|
||||
</template>
|
||||
</ai-search-bar>
|
||||
<div class="search-item__wrapper">
|
||||
<div class="left">
|
||||
<div class="search-item">
|
||||
<label>添加方式:</label>
|
||||
<el-radio-group v-model="addType" size="small" @change="onSearchRest">
|
||||
<el-radio-button label="1">按类目添加</el-radio-button>
|
||||
<el-radio-button label="2">按SKC添加</el-radio-button>
|
||||
<el-radio-button label="3">按SKU添加</el-radio-button>
|
||||
</el-radio-group>
|
||||
</div>
|
||||
<div class="search-item">
|
||||
<label>店铺:</label>
|
||||
<el-select v-model="skuSearch.mallId" placeholder="请选择店铺" size="small">
|
||||
<el-option
|
||||
v-for="item in $store.state.mallList"
|
||||
:key="item.mallId"
|
||||
:label="item.mallName"
|
||||
:value="item.mallId">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="right"></div>
|
||||
</div>
|
||||
<div class="search-item__wrapper">
|
||||
<div class="left">
|
||||
<div class="search-item" v-show="addType === '1'">
|
||||
<label>商品分类:</label>
|
||||
<el-cascader
|
||||
style="width: 280px;"
|
||||
v-model="targetCatId"
|
||||
:props="props"
|
||||
size="small"
|
||||
filterable
|
||||
:show-all-levels="false"
|
||||
collapse-tags
|
||||
clearable>
|
||||
</el-cascader>
|
||||
<el-button style="margin-left: 10px;" @click="onCateChange" size="small" :disabled="!skuSearch.mallId" :loading="isLoading">查询</el-button>
|
||||
</div>
|
||||
<div class="search-item" v-show="addType === '2'">
|
||||
<label>SKC:</label>
|
||||
<el-input
|
||||
v-model="skuReqParams.SKC"
|
||||
style="width: 250px"
|
||||
size="small"
|
||||
v-throttle="() => {getSkuList()}"
|
||||
placeholder="多个查询请用户逗号分割"
|
||||
clearable
|
||||
@clear="getSkuList()"
|
||||
suffix-icon="iconfont iconSearch">
|
||||
</el-input>
|
||||
<el-button style="margin-left: 10px;" @click="getSkuList" size="small" :disabled="!skuSearch.mallId" :loading="isLoading">查询</el-button>
|
||||
</div>
|
||||
<div class="search-item" v-show="addType === '3'">
|
||||
<label>SKU:</label>
|
||||
<el-input
|
||||
v-if="addType === '3'"
|
||||
v-model="skuReqParams.SKU"
|
||||
style="width: 250px"
|
||||
size="small"
|
||||
v-throttle="() => {getSkuList()}"
|
||||
placeholder="多个查询请用户逗号分割"
|
||||
clearable
|
||||
@clear="getSkuList()"
|
||||
suffix-icon="iconfont iconSearch">
|
||||
</el-input>
|
||||
<el-button style="margin-left: 10px;" @click="getSkuList" size="small" :disabled="!skuSearch.mallId" :loading="isLoading">查询</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<ai-table
|
||||
height="400"
|
||||
height="370"
|
||||
:tableData="skuList"
|
||||
:col-configs="colConfigs"
|
||||
:total="skuTotal"
|
||||
@@ -69,7 +127,8 @@
|
||||
style="margin-top: 8px;"
|
||||
@getList="getSkuList"
|
||||
:pageSizes="[10, 20, 50, 100, 500, 1000]"
|
||||
v-loading="isLoading">
|
||||
v-loading="isLoading"
|
||||
:isShowPagination="false">
|
||||
<el-table-column slot="productName" width="300px" :show-overflow-tooltip="true" label="商品名称" fixed="left">
|
||||
<template slot-scope="scope">
|
||||
<div>
|
||||
@@ -87,11 +146,12 @@
|
||||
<script>
|
||||
import { sendChromeAPIMessage } from '@/api/chromeApi'
|
||||
export default {
|
||||
name: 'Template',
|
||||
name: 'SkuManage',
|
||||
|
||||
data () {
|
||||
return {
|
||||
colConfigs: [
|
||||
{ type: 'selection' },
|
||||
// { slot: 'productName', label: '商品名称', width: '300px', align: 'left', fixed: 'left' },
|
||||
// { prop: 'category', label: '分类', width: '140px', align: 'left', fixed: 'left' },
|
||||
{ prop: 'mallName', label: '店铺名称', align: 'left' },
|
||||
@@ -118,9 +178,38 @@
|
||||
isShow: false,
|
||||
skuReqParams: {
|
||||
page: 1,
|
||||
pageSize: 100
|
||||
pageSize: 100,
|
||||
SKC: '',
|
||||
SKU: ''
|
||||
},
|
||||
isLoading: false
|
||||
isLoading: false,
|
||||
addType: '1',
|
||||
props: {
|
||||
value: 'catId',
|
||||
label: 'catName',
|
||||
multiple: true,
|
||||
checkStrictly: true,
|
||||
lazy: true,
|
||||
lazyLoad (value, resolve) {
|
||||
sendChromeAPIMessage({
|
||||
url: 'bg-anniston-mms/category/children/list',
|
||||
needMallId: true,
|
||||
data: {
|
||||
parentCatId: value.level === 0 ? '' : value.value
|
||||
}
|
||||
}).then(res => {
|
||||
if (res.errorCode === 1000000) {
|
||||
resolve(res.result.categoryNodeVOS.map(v => {
|
||||
return {
|
||||
...v,
|
||||
leaf: v.isLeaf
|
||||
}
|
||||
}))
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
targetCatId: []
|
||||
}
|
||||
},
|
||||
|
||||
@@ -143,15 +232,78 @@
|
||||
this.$router.push('/addLabelsTemplate')
|
||||
},
|
||||
|
||||
requestSKUList () {
|
||||
sendChromeAPIMessage({
|
||||
onSearchRest() {
|
||||
this.skuReqParams.SKC = ''
|
||||
this.skuReqParams.SKU = ''
|
||||
},
|
||||
|
||||
handleSelectionChange(e) {
|
||||
console.log(e)
|
||||
},
|
||||
|
||||
getSKCList(catIds, page) {
|
||||
return new Promise(resolve => {
|
||||
sendChromeAPIMessage({
|
||||
url: 'bg-visage-mms/product/skc/pageQuery',
|
||||
needMallId: true,
|
||||
mallId: this.skuSearch.mallId,
|
||||
anti: true,
|
||||
data: {
|
||||
page: 1,
|
||||
pageSize: 200,
|
||||
catIds: catIds
|
||||
}
|
||||
}).then(res => {
|
||||
if (res.errorCode == 1000000) {
|
||||
resolve({
|
||||
list: res.result.pageItems.map(v => v.productSkcId),
|
||||
isHasNext: page * 200 < res.result.total
|
||||
})
|
||||
} else {
|
||||
resolve({ list: [], isHasNext: false })
|
||||
}
|
||||
}).catch(() => {
|
||||
resolve({ list: [], isHasNext: false })
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
async onCateChange() {
|
||||
let page = 1
|
||||
let list = []
|
||||
let isHasNext = true
|
||||
this.isLoading = true
|
||||
while (isHasNext) {
|
||||
const result = await this.getSKCList([].concat(this.targetCatId.flat()), page)
|
||||
page = page + 1
|
||||
isHasNext = result.isHasNext ? true : false
|
||||
list.push(...result.list)
|
||||
|
||||
await this.$sleepSync(5000)
|
||||
}
|
||||
|
||||
const skcList = [...new Set(list)]
|
||||
const len = Math.ceil(skcList.length / 100)
|
||||
for (let i = 0; i < len; i++) {
|
||||
this.skuReqParams.page = 1
|
||||
this.skuReqParams.SKC = [...new Set(list)].slice(i * 100, i * 100 + 100).join(',')
|
||||
await this.requestSKUList()
|
||||
await this.$sleepSync(2000)
|
||||
}
|
||||
},
|
||||
|
||||
requestSKUList() {
|
||||
this.isLoading = true
|
||||
return sendChromeAPIMessage({
|
||||
url: 'bg-visage-mms/labelcode/pageQuery',
|
||||
needMallId: true,
|
||||
mallId: this.skuSearch.mallId,
|
||||
anti: true,
|
||||
data: {
|
||||
page: this.skuSearch.size > 100 ? this.skuReqParams.page : this.skuSearch.current,
|
||||
pageSize: this.skuSearch.size > 100 ? 100 : this.skuSearch.size
|
||||
page: this.skuReqParams.page,
|
||||
pageSize: 200,
|
||||
productSkcIdList: (['2', '1'].includes(this.addType)) ? this.skuReqParams.SKC.split(',') : [],
|
||||
productSkuIdList: this.addType === '3' ? this.skuReqParams.SKU.split(',') : []
|
||||
}
|
||||
}).then(async (res) => {
|
||||
if (res.errorCode == 1000000) {
|
||||
@@ -170,10 +322,10 @@
|
||||
this.skuTotal = res.result.total
|
||||
this.skuList.push(...list)
|
||||
|
||||
if (this.skuSearch.size > 100 && (res.result.total > this.skuList.length)) {
|
||||
if (res.result.total > this.skuList.length) {
|
||||
this.skuReqParams.page++
|
||||
await this.$sleepSync(5000)
|
||||
this.requestSKUList()
|
||||
await this.requestSKUList()
|
||||
} else {
|
||||
this.isLoading = false
|
||||
}
|
||||
@@ -181,23 +333,6 @@
|
||||
})
|
||||
},
|
||||
|
||||
onMallChange (e) {
|
||||
if (!e) {
|
||||
this.skuList = []
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
this.$userCheck(this.skuSearch.mallId).then(() => {
|
||||
this.skuList = []
|
||||
this.skuReqParams.page = 1
|
||||
this.isLoading = true
|
||||
this.requestSKUList()
|
||||
}).catch(() => {
|
||||
this.skuSearch.mallId = ''
|
||||
})
|
||||
},
|
||||
|
||||
getSkuList () {
|
||||
if (!this.skuSearch.mallId) {
|
||||
return this.$message.error('请选择店铺')
|
||||
@@ -235,4 +370,16 @@
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.Template {
|
||||
.search-item__wrapper {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
|
||||
&>div {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user