@@ -172,8 +173,7 @@ import JsonExcel from 'vue-json-excel'
this.reqData.pageNo = 1
await this.getProductList({page: this.reqData.pageNo,
- pageSize: this.reqData.pageSize,
- productSkuIds: skuIds})
+ pageSize: this.reqData.pageSize}, skuIds)
this.costList = []
await this.getSkuCostList()
@@ -227,13 +227,24 @@ import JsonExcel from 'vue-json-excel'
this.$store.commit("setTemuAlertShow", true)
}
},
- async getProductList(params) {
+ async getProductList(params, skuIds) {
+ let productSkuIds = []
+ let i = (params.page - 1) * params.pageSize
+ let j = 0
+ for (; i < skuIds.length; i++) {
+ productSkuIds.push(skuIds[i])
+ j ++
+ if (j == params.pageSize) break
+ }
+ if (productSkuIds.length == 0) return
let res = await sendChromeAPIMessage({
url: 'bg-visage-mms/product/skc/pageQuery',
needMallId: true,
mallId: this.mallId,
data: {
- ...params
+ page: 1,
+ pageSize: params.pageSize,
+ productSkuIds
}})
if (res.errorCode == 1000000) {
res.result.pageItems.map((item) => {
@@ -251,10 +262,8 @@ import JsonExcel from 'vue-json-excel'
})
})
- if ((params.page * params.pageSize) < res.result.total) {
- params.page ++
- await this.getProductList(params)
- }
+ params.page ++
+ await this.getProductList(params, skuIds)
}
},
async getSkuCostList() {
diff --git a/src/view/sale/CostManageTemu.vue b/src/view/sale/CostManageTemu.vue
index a085499..6ef70e2 100644
--- a/src/view/sale/CostManageTemu.vue
+++ b/src/view/sale/CostManageTemu.vue
@@ -206,6 +206,7 @@ import { saveAs } from 'file-saver'
this.isLoading = true
this.getList()
}).catch((err) => {
+ this.mallId = ''
this.isLoading = false
})
},
diff --git a/src/view/sale/ExportSaleData.vue b/src/view/sale/ExportSaleData.vue
index 4b60f38..cc42c37 100644
--- a/src/view/sale/ExportSaleData.vue
+++ b/src/view/sale/ExportSaleData.vue
@@ -3,6 +3,7 @@
@@ -133,7 +134,7 @@
ref="table0"
:isShowPagination="false"
:tableData="filteredData"
- height="500"
+ height="700"
:col-configs="colConfigs"
:total="filteredData.length"
style="margin-top: 8px;"
@@ -706,6 +707,7 @@ import { Message } from 'element-ui'
this.getSkuCostList()
this.getList()
}).catch((err) => {
+ this.mallId = ''
console.log(err)
this.isLoading = false
})
diff --git a/src/view/sale/ExportSaleOutData.vue b/src/view/sale/ExportSaleOutData.vue
index 4facb6d..5c3517f 100644
--- a/src/view/sale/ExportSaleOutData.vue
+++ b/src/view/sale/ExportSaleOutData.vue
@@ -47,7 +47,7 @@
:tableData="tableData"
:col-configs="colConfigs"
:total="tableData.length"
- height="500"
+ height="700"
style="margin-top: 8px;"
@getList="() => {}">
@@ -150,6 +150,7 @@ import { Message } from 'element-ui'
this.getList(2)
}
}).catch((err) => {
+ this.mallId = ''
this.isLoading = false
})
},
diff --git a/src/view/sale/ExportSaleStatTemu.vue b/src/view/sale/ExportSaleStatTemu.vue
new file mode 100644
index 0000000..9651ebf
--- /dev/null
+++ b/src/view/sale/ExportSaleStatTemu.vue
@@ -0,0 +1,888 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
开始统计
+
下载图片
+
+ 下载SKC统计
+
+
+ 下载SKU统计
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ %
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.saleAmount }}
+
+
+
+
+ {{ scope.row.profitAmount }}
+
+
+
+
+ {{ scope.row.saleCount }}
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.saleAmount }}
+
+
+
+
+ {{ scope.row.profitAmount }}
+
+
+
+
+ {{ scope.row.saleCount }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.saleAmount }}
+
+
+
+
+ {{ scope.row.profitAmount }}
+
+
+
+
+ {{ scope.row.saleCount }}
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.skcExtCode + '/' + scope.row.skuExtCode }}
+
+
+
+
+ {{ scope.row.saleAmount }}
+
+
+
+
+ {{ scope.row.profitAmount }}
+
+
+
+
+ {{ scope.row.saleCount }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.skcExtCode + '/' + scope.row.skuExtCode }}
+
+
+
+
+ {{ scope.row.saleAmount }}
+
+
+
+
+ {{ scope.row.profitAmount }}
+
+
+
+
+ {{ scope.row.saleCount }}
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.skcExtCode + '/' + scope.row.skuExtCode }}
+
+
+
+
+ {{ scope.row.saleAmount }}
+
+
+
+
+ {{ scope.row.profitAmount }}
+
+
+
+
+ {{ scope.row.saleCount }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/view/shein/CertCenterShein.vue b/src/view/shein/CertCenterShein.vue
index 6ef2733..945bca4 100644
--- a/src/view/shein/CertCenterShein.vue
+++ b/src/view/shein/CertCenterShein.vue
@@ -6,15 +6,50 @@
isShowBottomBorder>
-
+
+
+
+ 已驳回
+ 待补充
+
+
- 导出
+
+
+
+
+ 导出
{}">
+
+
+
+ 审批失败
+
+
+
+
+
+ {{ item.certificate_url_name }}
+
+
+
+
+
+
+ 导出
+
+ {}">
@@ -36,9 +71,10 @@ import { saveAs } from 'file-saver'
data () {
return {
isLoading: false,
- list: [],
mallId: '',
- colConfigs: [
+ certStatus: 'refused',
+ waitUploadList: [],
+ waitUploadColConfigs: [
{ prop: 'spu', label: 'SPU', align: 'left' },
{ prop: 'productName', label: '商品标题', align: 'left' },
{ prop: 'skc', label: 'SKC ID', align: 'left' },
@@ -46,7 +82,20 @@ import { saveAs } from 'file-saver'
{ prop: 'certificateTypeName', label: '证书类型', align: 'left' },
{ prop: 'mergeSiteName', label: '管控地区', align: 'left' },
{ prop: 'subSite', label: '管控子站点', align: 'left' },
- { slot: 'uploadEndTime', label: '上传截止时间', align: 'left' }
+ { prop: 'uploadEndTime', label: '上传截止时间', align: 'left' }
+ ],
+ refusedList: [],
+ refusedColConfigs: [
+ { prop: 'spu', label: 'SPU', align: 'left' },
+ { prop: 'productName', label: '商品标题', align: 'left' },
+ { prop: 'skc', label: 'SKC ID', align: 'left' },
+ { prop: 'mainAttrName', label: '主规格', align: 'left' },
+ { slot: 'auditStatus', label: '状态' },
+ { prop: 'certificateTypeName', label: '证书类型', align: 'left' },
+ { slot: 'certName', label: '证书名称' },
+ { prop: 'refusedReason', label: '审核备注', align: 'left' },
+ { prop: 'mergeSiteName', label: '管控地区', align: 'left' },
+ { prop: 'subSite', label: '管控子站点', align: 'left' }
],
tableData: [],
@@ -55,12 +104,33 @@ import { saveAs } from 'file-saver'
},
mounted () {
- this.isLoading = true
- this.getList()
+ this.$http.post('/api/malluser/info').then(res => {
+ if (res.code == 0) {
+ this.$store.commit('setUserInfo', res.data)
+ if (res.data.flag != 1) {
+ Message.error('您的账号未激活或已失效,请激活后使用')
+ this.$store.commit('setActiveDlgShow', true)
+ return;
+ }
+ this.getList()
+ }
+ })
},
methods: {
async getList () {
+ this.isLoading = true
+ this.currentPage = 1
+ if (this.certStatus == 'refused') {
+ this.refusedList = []
+ await this.getRefusedList()
+ } else {
+ this.waitUploadList = []
+ await this.getWaitUploadList()
+ }
+ this.isLoading = false
+ },
+ async getWaitUploadList() {
let res = await sendGeiwohuoAPIMessage({
url: `spmp-api-prefix/spmp/certificate/get_skc_certificate_miss_list?page_num=${this.currentPage}&page_size=200`,
method: 'POST',
@@ -84,30 +154,95 @@ import { saveAs } from 'file-saver'
subSite: subSite.join(',')
}
- this.list.push(data)
+ this.waitUploadList.push(data)
}
if (res.info.data.length == 200 && (res.info.meta.count > 200*this.currentPage)) {
this.currentPage++
await this.sleepSync(200)
- await this.getList()
- } else {
- this.isLoading = false
+ await this.getWaitUploadList()
}
} else if (res.code == 100004 || res.code == 20302) {
- this.isLoading = false
+ this.$store.commit("setSheinAlertShow", true)
+ }
+ },
+ async getRefusedList() {
+ let res = await sendGeiwohuoAPIMessage({
+ url: `spmp-api-prefix/spmp/certificate/get_skc_certificate_list?page_num=${this.currentPage}&page_size=200`,
+ method: 'POST',
+ data: {
+ audit_status: 3
+ }})
+ if (res.code == '0') {
+ for(let i = 0;i < res.info.data.length; i++) {
+ let item = res.info.data[i];
+ let mainSite = []
+ let subSite = []
+ item.merge_site_info_list.map(e => {
+ mainSite.push(e.merge_site_name)
+ subSite = subSite.concat(e.sub_site_list)
+ })
+ let data = {
+ pqmsCertificateSn: item.pqms_certificate_sn,
+ auditStatus: item.audit_status,
+ spu: item.spu_name,
+ productName: item.skc_name_cn,
+ skc: item.skc_name,
+ mainAttrName: item.main_attribute_name,
+ mergeSiteName: mainSite.join(','),
+ certificateTypeName: item.certificate_type_name,
+ certName: item.cert_file_list,
+ refusedReason: null,
+ subSite: subSite.join(',')
+ }
+
+ this.refusedList.push(data)
+ }
+ if (res.info.data.length == 200 && (res.info.meta.count > 200*this.currentPage)) {
+ this.currentPage++
+ await this.sleepSync(200)
+ await this.getRefusedList()
+ } else {
+ await this.getAuditInfo()
+ }
+ } else if (res.code == 100004 || res.code == 20302) {
+ this.$store.commit("setSheinAlertShow", true)
+ }
+ },
+ async getAuditInfo() {
+ let pqmsList = []
+ this.refusedList.map(item => {
+ pqmsList.push(item.pqmsCertificateSn)
+ })
+
+ let res = await sendGeiwohuoAPIMessage({
+ url: `spmp-api-prefix/spmp/certificate/get_cert_audit_fail_reason`,
+ method: 'POST',
+ data: {
+ pqms_certificate_sn_list: pqmsList
+ }})
+ if (res.code == '0') {
+ res.info.data.map(item => {
+ for (let i = 0; i < this.refusedList.length; i++) {
+ if (this.refusedList[i].pqmsCertificateSn == item.certificate_sn) {
+ this.refusedList[i].refusedReason = item.fail_reason
+ break
+ }
+ }
+ })
+ } else if (res.code == 100004 || res.code == 20302) {
this.$store.commit("setSheinAlertShow", true)
}
},
sleepSync(milliseconds) {
return new Promise(resolve => setTimeout(resolve, milliseconds));
},
- exportToExcel() {
+ exportWaitUploadToExcel() {
// 假设你有一个表格数据的数组
const data = [
["SPU", "商品标题", "SKC ID", "主规格", "证书类型", "管控地区", "管控子站点", "上传截止时间"]
]
- this.list.map(item => {
+ this.waitUploadList.map(item => {
data.push([item.spu, item.productName, item.skc, item.mainAttrName, item.certificateTypeName, item.mergeSiteName, item.subSite, item.uploadEndTime])
})
@@ -128,6 +263,41 @@ import { saveAs } from 'file-saver'
// 使用saveAs下载文件
saveAs(dataBlob, '待补充证书列表.xlsx');
+ // 清理
+ window.URL.revokeObjectURL(blobUrl);
+ },
+ exportRefusedToExcel() {
+ // 假设你有一个表格数据的数组
+ const data = [
+ ["SPU", "商品标题", "SKC ID", "主规格", "证书类型","证书名称", "证书地址", "审核备注", "管控地区", "管控子站点"]
+ ]
+
+ this.refusedList.map(item => {
+ let certName = [], certUrl = []
+ item.certName.map(item1 => {
+ certName.push(item1.certificate_url_name)
+ certUrl.push(item1.certificate_url)
+ })
+ data.push([item.spu, item.productName, item.skc, item.mainAttrName, item.certificateTypeName, certName.join(','), certUrl.join(','), item.refusedReason, item.mergeSiteName, item.subSite])
+ })
+
+ // 将数据转换为工作表
+ const worksheet = XLSX.utils.aoa_to_sheet(data);
+
+ // 创建工作簿并添加工作表
+ const workbook = XLSX.utils.book_new();
+ XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
+
+ // 生成Excel文件
+ const excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });
+
+ // 使用blob和FileReader创建一个Blob URL
+ const dataBlob = new Blob([excelBuffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8' });
+ const blobUrl = window.URL.createObjectURL(dataBlob);
+
+ // 使用saveAs下载文件
+ saveAs(dataBlob, '已驳回证书列表.xlsx');
+
// 清理
window.URL.revokeObjectURL(blobUrl);
}
diff --git a/src/view/shein/CopyProductShein.vue b/src/view/shein/CopyProductShein.vue
index 4594677..d384dcc 100644
--- a/src/view/shein/CopyProductShein.vue
+++ b/src/view/shein/CopyProductShein.vue
@@ -26,6 +26,7 @@
style="margin-top: 8px;"
:current.sync="search.current" :size.sync="search.size"
@selection-change="handleSelectionChange"
+ height="700"
@getList="getList">
@@ -140,7 +141,17 @@ import { Message } from 'element-ui'
},
created () {
- this.getList()
+ this.$http.post('/api/malluser/info').then(res => {
+ if (res.code == 0) {
+ this.$store.commit('setUserInfo', res.data)
+ if (res.data.flag != 1) {
+ Message.error('您的账号未激活或已失效,请激活后使用')
+ this.$store.commit('setActiveDlgShow', true)
+ return;
+ }
+ this.getList()
+ }
+ })
},
methods: {
diff --git a/src/view/shein/CostManageShein.vue b/src/view/shein/CostManageShein.vue
index f9eddf5..16579fc 100644
--- a/src/view/shein/CostManageShein.vue
+++ b/src/view/shein/CostManageShein.vue
@@ -179,9 +179,19 @@ import { saveAs } from 'file-saver'
},
mounted () {
- this.getUserInfo()
- this.isLoading = true
- this.getList()
+ this.$http.post('/api/malluser/info').then(res => {
+ if (res.code == 0) {
+ this.$store.commit('setUserInfo', res.data)
+ if (res.data.flag != 1) {
+ Message.error('您的账号未激活或已失效,请激活后使用')
+ this.$store.commit('setActiveDlgShow', true)
+ return;
+ }
+ this.getUserInfo()
+ this.isLoading = true
+ this.getList()
+ }
+ })
},
methods: {
diff --git a/src/view/shein/ExportSaleDataShein.vue b/src/view/shein/ExportSaleDataShein.vue
index a3f7db1..650f3c6 100644
--- a/src/view/shein/ExportSaleDataShein.vue
+++ b/src/view/shein/ExportSaleDataShein.vue
@@ -54,7 +54,7 @@
ref="table0"
:isShowPagination="false"
:tableData="filteredData"
- height="500"
+ height="700"
:col-configs="colConfigs"
:total="filteredData.length"
style="margin-top: 8px;"
@@ -134,7 +134,9 @@ import { Message } from 'element-ui'
{prop: 'ableSaleDays',label: '可售天数',align: 'center'},
{prop: 'cost',label: '价格',width: '120px',align: 'center'},
{prop: 'costPrice',label: '成本',width: '120px',align: 'center'},
- {prop: 'todaySale',label: '今日销量',width: '120px',align: 'center'},
+ {prop: 'todaySale',label: '今日销量',width: '120px',align: 'center',sortable: true,'sort-method': (a, b) => {
+ return a.todaySale - b.todaySale
+ }},
{prop: 'todayProfit',label: '利润',width: '120px',align: 'center',sortable: true,'sort-method': (a, b) => {
return a.todayProfit - b.todayProfit
}},
diff --git a/src/view/shein/ExportSaleStatShein.vue b/src/view/shein/ExportSaleStatShein.vue
index 2556090..c67fd5c 100644
--- a/src/view/shein/ExportSaleStatShein.vue
+++ b/src/view/shein/ExportSaleStatShein.vue
@@ -30,8 +30,8 @@
+ name="SKU账单数据.xls"
+ worksheet="SKU账单数据">
下载SKU统计
@@ -310,7 +310,7 @@ import { DualAxes } from '@antv/g2plot'
isLoading: false,
skcColConfigs: [
- { prop: 'skcCode', label: '货号', width: '180px' },
+ { prop: 'skcCode', label: '货号', width: '250px' },
{ slot: 'amount', label: '销售额', align: 'center' },
{ prop: 'quantity', label: '单数', align: 'center' },
{ prop: 'cost', label: '成本', align: 'center'},
@@ -327,7 +327,7 @@ import { DualAxes } from '@antv/g2plot'
"利润率": "profitPercent",
},
skuColConfigs: [
- { prop: 'skuCode', label: '属性集', width: '220px' },
+ { prop: 'skuCode', label: '属性集', width: '250px' },
{ slot: 'amount', label: '销售额', align: 'center' },
{ prop: 'quantity', label: '单数', align: 'center' },
{ prop: 'cost', label: '成本', align: 'center'},
@@ -602,7 +602,6 @@ import { DualAxes } from '@antv/g2plot'
}
}
}
- console.log(this.leftChartData)
this.chartObj.changeData([this.leftChartData, this.rightChartData])
this.isLoading = false
}
@@ -665,6 +664,9 @@ import { DualAxes } from '@antv/g2plot'
} else {
break
}
+ } else if (res2.code == 100004 || res2.code == 20302) {
+ this.isLoading = false
+ this.$store.commit("setSheinAlertShow", true)
}
}
}
diff --git a/src/view/shipping/MyNormalOrder.vue b/src/view/shipping/MyNormalOrder.vue
index 0b4a6ad..e43332b 100644
--- a/src/view/shipping/MyNormalOrder.vue
+++ b/src/view/shipping/MyNormalOrder.vue
@@ -21,26 +21,36 @@