Compare commits
19 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
67b8108825 | ||
|
|
90046641c0 | ||
|
|
e7f5670b72 | ||
|
|
510f3aa888 | ||
|
|
acbd7f6a86 | ||
|
|
f3ad1604d8 | ||
|
|
b1d1f60f96 | ||
|
|
191edd1eb4 | ||
|
|
0cbe017a95 | ||
|
|
b1abecfb29 | ||
|
|
2511778c9f | ||
|
|
fea7848653 | ||
|
|
3cdaba63b7 | ||
|
|
5ece8b562f | ||
|
|
15614d9489 | ||
|
|
7b43c97f5f | ||
|
|
74043c55ae | ||
|
|
f69c86f92b | ||
|
|
c7cb7c103d |
@@ -3,7 +3,7 @@
|
|||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vue-cli-service --env.NODE_ENV=development build-watch --mode development",
|
"dev": "vue-cli-service --env.NODE_ENV=development build-watch --mode development",
|
||||||
"build": "vue-cli-service build"
|
"build": "vue-cli-service build"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -42,7 +42,7 @@
|
|||||||
"eslint": "^7.32.0",
|
"eslint": "^7.32.0",
|
||||||
"eslint-plugin-vue": "^8.0.3",
|
"eslint-plugin-vue": "^8.0.3",
|
||||||
"javascript-obfuscator": "2.6.0",
|
"javascript-obfuscator": "2.6.0",
|
||||||
"sass": "^1.68.0",
|
"sass": "1.32.13",
|
||||||
"sass-loader": "^7.3.1",
|
"sass-loader": "^7.3.1",
|
||||||
"vue-cli-plugin-chrome-extension-cli": "~1.1.4",
|
"vue-cli-plugin-chrome-extension-cli": "~1.1.4",
|
||||||
"vue-template-compiler": "^2.6.14",
|
"vue-template-compiler": "^2.6.14",
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"condition": {
|
"condition": {
|
||||||
"urlFilter": "||xc.rqlis.com:888"
|
"urlFilter": "||xc.rqlis.com"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -4,7 +4,7 @@ import store from '@/store'
|
|||||||
|
|
||||||
|
|
||||||
var instance = axios.create({
|
var instance = axios.create({
|
||||||
baseURL: process.env.NODE_ENV === 'production' ? 'http://124.71.2.127:10248' : 'http://124.71.2.127:10248',
|
baseURL: process.env.NODE_ENV === 'production' ? 'http://temu.jjcp52.com' : 'http://124.71.2.127:10248',
|
||||||
timeout: 50000,
|
timeout: 50000,
|
||||||
validateStatus: function (status) {
|
validateStatus: function (status) {
|
||||||
return status < 500
|
return status < 500
|
||||||
|
|||||||
@@ -11,12 +11,11 @@
|
|||||||
url('https://at.alicdn.com/t/font_1995974_ihzpmuv4lpk.svg#iconfont') format('svg');
|
url('https://at.alicdn.com/t/font_1995974_ihzpmuv4lpk.svg#iconfont') format('svg');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: "iconfont";
|
font-family: 'iconfont'; /* Project id 4680344 */
|
||||||
src: url('https://at.alicdn.com/t/c/font_4680344_rxl7gevvsys.woff2?t=1725970465332') format('woff2'),
|
src: url('https://at.alicdn.com/t/c/font_4680344_v54lqtndz8.woff2?t=1730871528436') format('woff2'),
|
||||||
url('https://at.alicdn.com/t/c/font_4680344_rxl7gevvsys.woff?t=1725970465332') format('woff'),
|
url('https://at.alicdn.com/t/c/font_4680344_v54lqtndz8.woff?t=1730871528436') format('woff'),
|
||||||
url('https://at.alicdn.com/t/c/font_4680344_rxl7gevvsys.ttf?t=1725970465332') format('truetype');
|
url('https://at.alicdn.com/t/c/font_4680344_v54lqtndz8.ttf?t=1730871528436') format('truetype');
|
||||||
}
|
}
|
||||||
|
|
||||||
.iconfont {
|
.iconfont {
|
||||||
@@ -577,3 +576,7 @@ img {
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.el-tooltip__popper {
|
||||||
|
max-width: 600px;
|
||||||
|
}
|
||||||
|
|||||||
@@ -36,7 +36,6 @@
|
|||||||
v-for="(price, i) in priceList"
|
v-for="(price, i) in priceList"
|
||||||
:key="i"
|
:key="i"
|
||||||
@click="currIndex = i, getQrcode(price)">
|
@click="currIndex = i, getQrcode(price)">
|
||||||
<h3>{{ price.remark }}</h3>
|
|
||||||
<div class="price">
|
<div class="price">
|
||||||
<i>¥</i>
|
<i>¥</i>
|
||||||
<span>{{ price.price }}</span>
|
<span>{{ price.price }}</span>
|
||||||
@@ -45,7 +44,7 @@
|
|||||||
<i>¥</i>
|
<i>¥</i>
|
||||||
<span>{{ price.originPrice }}</span>
|
<span>{{ price.originPrice }}</span>
|
||||||
</div>
|
</div>
|
||||||
<p>{{ price.coin }}条/每年</p>
|
<p>{{ price.coin }}金币</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -388,6 +387,7 @@
|
|||||||
&__item {
|
&__item {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
width: 140px;
|
width: 140px;
|
||||||
height: 170px;
|
height: 170px;
|
||||||
|
|||||||
@@ -48,12 +48,14 @@
|
|||||||
class="item"
|
class="item"
|
||||||
style="cursor: pointer;"
|
style="cursor: pointer;"
|
||||||
@click="search.type = 1, search.current = 1, isShowImage = true, getConfig()">
|
@click="search.type = 1, search.current = 1, isShowImage = true, getConfig()">
|
||||||
|
<i class="iconfont"></i>
|
||||||
<div>图片素材</div>
|
<div>图片素材</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="item"
|
class="item"
|
||||||
style="cursor: pointer;"
|
style="cursor: pointer;"
|
||||||
@click="search.type = 0, search.current = 1, isShowImage = true, getConfig()">
|
@click="search.type = 0, search.current = 1, isShowImage = true, getConfig()">
|
||||||
|
<i class="iconfont"></i>
|
||||||
<div>文字素材</div>
|
<div>文字素材</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -197,34 +199,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- <ai-table
|
|
||||||
:tableData="templateList"
|
|
||||||
:col-configs="templateColConfigs"
|
|
||||||
:total="templateTotal"
|
|
||||||
:current.sync="searchTemplate.current"
|
|
||||||
:size.sync="searchTemplate.size"
|
|
||||||
height="480"
|
|
||||||
@getList="getTemplateList"
|
|
||||||
v-loading="templateLoading">
|
|
||||||
<el-table-column slot="img" label="预览图" align="center">
|
|
||||||
<template v-slot="{ row }">
|
|
||||||
<el-image
|
|
||||||
style="width: 200px; height: 200px"
|
|
||||||
fit="contain"
|
|
||||||
:src="row.previewUrl"
|
|
||||||
:preview-src-list="[row.previewUrl]">
|
|
||||||
</el-image>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column slot="options" label="操作" align="center" width="200">
|
|
||||||
<template v-slot="{ row }">
|
|
||||||
<div class="table-options">
|
|
||||||
<el-button type="text" @click="showTemplate(row)">模板预览</el-button>
|
|
||||||
<el-button type="text" @click="updateTempate(row)">使用</el-button>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
</ai-table> -->
|
|
||||||
<div class="dialog-footer" slot="footer">
|
<div class="dialog-footer" slot="footer">
|
||||||
<el-button @click="isShowTemplate = false">取消</el-button>
|
<el-button @click="isShowTemplate = false">取消</el-button>
|
||||||
</div>
|
</div>
|
||||||
@@ -310,12 +284,16 @@
|
|||||||
height: 160
|
height: 160
|
||||||
},
|
},
|
||||||
'80 * 60': {
|
'80 * 60': {
|
||||||
width: 160,
|
width: 240,
|
||||||
height: 120
|
height: 180
|
||||||
},
|
},
|
||||||
'60 * 40': {
|
'70 * 50': {
|
||||||
width: 120,
|
width: 210,
|
||||||
height: 80
|
height: 150
|
||||||
|
},
|
||||||
|
'70 * 40': {
|
||||||
|
width: 210,
|
||||||
|
height: 120
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
paperPopVisible: false,
|
paperPopVisible: false,
|
||||||
@@ -342,10 +320,6 @@
|
|||||||
isShowImage: false,
|
isShowImage: false,
|
||||||
tableData: [],
|
tableData: [],
|
||||||
total: 0,
|
total: 0,
|
||||||
templateColConfigs: [
|
|
||||||
{ prop: 'name', label: '模板名称', align: 'left' },
|
|
||||||
{ slot: 'img'}
|
|
||||||
],
|
|
||||||
templateLoading: false,
|
templateLoading: false,
|
||||||
hasMore: true
|
hasMore: true
|
||||||
}
|
}
|
||||||
@@ -438,6 +412,18 @@
|
|||||||
this.hiprintTemplate.update(config)
|
this.hiprintTemplate.update(config)
|
||||||
this.hiprintTemplate.setPaper(config.panels[0].width, config.panels[0].height)
|
this.hiprintTemplate.setPaper(config.panels[0].width, config.panels[0].height)
|
||||||
|
|
||||||
|
this.curPaper = {
|
||||||
|
type: 'other',
|
||||||
|
width: config.panels[0].width,
|
||||||
|
height: config.panels[0].height
|
||||||
|
}
|
||||||
|
|
||||||
|
this.$nextTick(() => {
|
||||||
|
if (this.curPaper.type === 'other') {
|
||||||
|
this.paperWidth = config.panels[0].width
|
||||||
|
this.paperHeight = config.panels[0].height
|
||||||
|
}
|
||||||
|
})
|
||||||
this.dynamicFromList = JSON.parse(res.data.params)
|
this.dynamicFromList = JSON.parse(res.data.params)
|
||||||
this.isShowTemplate = false
|
this.isShowTemplate = false
|
||||||
}
|
}
|
||||||
@@ -555,6 +541,9 @@
|
|||||||
$('#custom-provider').empty()
|
$('#custom-provider').empty()
|
||||||
// eslint-disable-next-line no-undef
|
// eslint-disable-next-line no-undef
|
||||||
hiprint.PrintElementTypeManager.build($('#custom-provider'), 'customProvider')
|
hiprint.PrintElementTypeManager.build($('#custom-provider'), 'customProvider')
|
||||||
|
|
||||||
|
$('#custom-provider ul ul li:eq(0)').prepend('<i class="iconfont"></i>')
|
||||||
|
$('#custom-provider ul ul li:eq(1)').prepend('<i class="iconfont"></i>')
|
||||||
},
|
},
|
||||||
|
|
||||||
buildDesigner() {
|
buildDesigner() {
|
||||||
@@ -825,6 +814,7 @@
|
|||||||
width: 100px;
|
width: 100px;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
|
padding-top: 10px;
|
||||||
background-color: #eee;
|
background-color: #eee;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
|
|
||||||
@@ -833,7 +823,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
margin-top: 10px;
|
|
||||||
padding: 10px 0;
|
padding: 10px 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ export const customProvider = function () {
|
|||||||
new hiprint.PrintElementTypeGroup('', [
|
new hiprint.PrintElementTypeGroup('', [
|
||||||
{
|
{
|
||||||
tid: 'providerModule1.html',
|
tid: 'providerModule1.html',
|
||||||
title: 'temu条码',
|
title: 'TEMU条码',
|
||||||
data: 'XS888888888',
|
data: 'XS888888888',
|
||||||
type: 'html',
|
type: 'html',
|
||||||
formatter: function (data, options, sukData) {
|
formatter: function (data, options, sukData) {
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"*://*.geiwohuo.com/",
|
"*://*.geiwohuo.com/",
|
||||||
"*://*.ltwebstatic.com/",
|
"*://*.ltwebstatic.com/",
|
||||||
"*://*.goodcang.com/",
|
"*://*.goodcang.com/",
|
||||||
"*://*.rqlis.com*"
|
"*://*.rqlis.com/"
|
||||||
],
|
],
|
||||||
"permissions": [
|
"permissions": [
|
||||||
"cookies",
|
"cookies",
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
"*://*.shein.com/",
|
"*://*.shein.com/",
|
||||||
"*://*.geiwohuo.com/",
|
"*://*.geiwohuo.com/",
|
||||||
"*://*.ltwebstatic.com/",
|
"*://*.ltwebstatic.com/",
|
||||||
"*://*.rqlis.com"
|
"*://*.rqlis.com/"
|
||||||
],
|
],
|
||||||
"permissions": [
|
"permissions": [
|
||||||
"cookies",
|
"cookies",
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import Vue from 'vue'
|
import Vue from 'vue'
|
||||||
import VueRouter from 'vue-router'
|
import VueRouter from 'vue-router'
|
||||||
import store from '@/store'
|
import store from '@/store'
|
||||||
|
import media from "@/router/media";
|
||||||
|
|
||||||
Vue.use(VueRouter)
|
Vue.use(VueRouter)
|
||||||
|
|
||||||
@@ -298,7 +299,7 @@ const router = new VueRouter({
|
|||||||
name: 'sendGoods_xc',
|
name: 'sendGoods_xc',
|
||||||
component: () => import('../view/semi/SemiSendGoods_XC.vue')
|
component: () => import('../view/semi/SemiSendGoods_XC.vue')
|
||||||
},
|
},
|
||||||
|
|
||||||
// {
|
// {
|
||||||
// path: 'statistics',
|
// path: 'statistics',
|
||||||
// name: 'statistics',
|
// name: 'statistics',
|
||||||
@@ -317,7 +318,7 @@ const router = new VueRouter({
|
|||||||
path: 'oushuitong',
|
path: 'oushuitong',
|
||||||
name: 'oushuitong',
|
name: 'oushuitong',
|
||||||
meta: {
|
meta: {
|
||||||
activeMenu:'/qualification'
|
activeMenu: '/qualification'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -332,7 +333,7 @@ const router = new VueRouter({
|
|||||||
name: 'addLabelsTemplate',
|
name: 'addLabelsTemplate',
|
||||||
component: () => import('../view/lables/AddTemplate.vue'),
|
component: () => import('../view/lables/AddTemplate.vue'),
|
||||||
meta: {
|
meta: {
|
||||||
activeMenu:'/labelsTemplate'
|
activeMenu: '/labelsTemplate'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -345,9 +346,10 @@ const router = new VueRouter({
|
|||||||
name: 'skuManage',
|
name: 'skuManage',
|
||||||
component: () => import('../view/lables/SkuManage.vue'),
|
component: () => import('../view/lables/SkuManage.vue'),
|
||||||
meta: {
|
meta: {
|
||||||
activeMenu:'/labelsTemplate'
|
activeMenu: '/labelsTemplate'
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
...media
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -375,11 +377,11 @@ const router = new VueRouter({
|
|||||||
component: () => import('../view/login/Forget.vue')
|
component: () => import('../view/login/Forget.vue')
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
scrollBehavior (to, from, savedPosition) {
|
scrollBehavior(to, from, savedPosition) {
|
||||||
if (savedPosition) {
|
if (savedPosition) {
|
||||||
return savedPosition
|
return savedPosition
|
||||||
} else {
|
} else {
|
||||||
return { x: 0, y: 0 }
|
return {x: 0, y: 0}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
3
src/router/media.js
Normal file
3
src/router/media.js
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
export default [
|
||||||
|
{name: "imageTranslate", path: "imageTranslate", component: () => import("@/view/media/imageTranslate.vue")}
|
||||||
|
]
|
||||||
@@ -108,15 +108,19 @@ export function transform(leftData) {
|
|||||||
"valueExtendInfo": ""
|
"valueExtendInfo": ""
|
||||||
});
|
});
|
||||||
rightSkuItem.productSkuId = 0;
|
rightSkuItem.productSkuId = 0;
|
||||||
rightSkuItem.productSkuWhExtAttrReq = {
|
if (!leftSkuItem.productSkuWhExtAttr) {
|
||||||
"productSkuVolumeReq": leftSkuItem.productSkuWhExtAttr.productSkuVolume,
|
rightSkuItem.productSkuWhExtAttrReq = null
|
||||||
"productSkuWeightReq": leftSkuItem.productSkuWhExtAttr.productSkuWeight,
|
} else {
|
||||||
"productSkuBarCodeReqs": leftSkuItem.productSkuWhExtAttr.productSkuBarCodes,
|
rightSkuItem.productSkuWhExtAttrReq = {
|
||||||
"productSkuSensitiveAttrReq": {
|
"productSkuVolumeReq": leftSkuItem.productSkuWhExtAttr?.productSkuVolume,
|
||||||
"isSensitive": leftSkuItem.productSkuWhExtAttr.productSkuSensitiveAttr.isSensitive,
|
"productSkuWeightReq": leftSkuItem.productSkuWhExtAttr?.productSkuWeight,
|
||||||
"sensitiveList": leftSkuItem.productSkuWhExtAttr.productSkuSensitiveAttr.sensitiveList},
|
"productSkuBarCodeReqs": leftSkuItem.productSkuWhExtAttr?.productSkuBarCodes,
|
||||||
"productSkuSensitiveLimitReq": leftSkuItem.productSkuWhExtAttr.productSkuSensitiveLimit,
|
"productSkuSensitiveAttrReq": {
|
||||||
};
|
"isSensitive": leftSkuItem.productSkuWhExtAttr?.productSkuSensitiveAttr.isSensitive,
|
||||||
|
"sensitiveList": leftSkuItem.productSkuWhExtAttr?.productSkuSensitiveAttr.sensitiveList},
|
||||||
|
"productSkuSensitiveLimitReq": leftSkuItem.productSkuWhExtAttr?.productSkuSensitiveLimit,
|
||||||
|
};
|
||||||
|
}
|
||||||
rightSkuItem.currencyType = leftSkuItem.currencyType;
|
rightSkuItem.currencyType = leftSkuItem.currencyType;
|
||||||
|
|
||||||
rightSkcItem.productSkuReqs.push(rightSkuItem);
|
rightSkcItem.productSkuReqs.push(rightSkuItem);
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
<el-dropdown @command="handleClick">
|
<el-dropdown @command="handleClick">
|
||||||
<div class="userinfo">
|
<div class="userinfo">
|
||||||
<span>{{ $store.state.userInfo.name + "(" + $store.state.userInfo.phone + ")" }}</span>
|
<span>{{ userInfo.name + "(" + userInfo.phone + ")" }}</span>
|
||||||
<img src="../assets/images/bottom.png"/>
|
<img src="../assets/images/bottom.png"/>
|
||||||
</div>
|
</div>
|
||||||
<el-dropdown-menu slot="dropdown">
|
<el-dropdown-menu slot="dropdown">
|
||||||
@@ -38,17 +38,26 @@
|
|||||||
<div class="admin-main">
|
<div class="admin-main">
|
||||||
<el-scrollbar class="left">
|
<el-scrollbar class="left">
|
||||||
<el-menu
|
<el-menu
|
||||||
:default-active="activePath"
|
:default-active="activePath"
|
||||||
:collapse-transition="true"
|
:collapse-transition="true"
|
||||||
unique-opened
|
unique-opened
|
||||||
background-color="#545c64"
|
background-color="#545c64"
|
||||||
router
|
router
|
||||||
text-color="#fff"
|
text-color="#fff"
|
||||||
:collapse="isCollapse">
|
:collapse="isCollapse">
|
||||||
<el-menu-item index="/welcome">
|
<el-menu-item index="/welcome">
|
||||||
<i class="el-icon-monitor"></i>
|
<i class="el-icon-monitor"></i>
|
||||||
<span slot="title">工作台</span>
|
<span slot="title">工作台</span>
|
||||||
</el-menu-item>
|
</el-menu-item>
|
||||||
|
|
||||||
|
<el-submenu index="/imageTranslate">
|
||||||
|
<template #title>
|
||||||
|
<i class="el-icon-cpu"/>
|
||||||
|
<span>AI助手</span>
|
||||||
|
</template>
|
||||||
|
<el-menu-item index="/imageTranslate">图片翻译</el-menu-item>
|
||||||
|
</el-submenu>
|
||||||
|
|
||||||
<el-submenu index="/normalSendGoods">
|
<el-submenu index="/normalSendGoods">
|
||||||
<template slot="title">
|
<template slot="title">
|
||||||
<i class="el-icon-shopping-cart-2"></i>
|
<i class="el-icon-shopping-cart-2"></i>
|
||||||
@@ -74,7 +83,7 @@
|
|||||||
<el-menu-item index="/findSeller">查找买手</el-menu-item>
|
<el-menu-item index="/findSeller">查找买手</el-menu-item>
|
||||||
<el-menu-item index="/priceDown">拒绝调价</el-menu-item>
|
<el-menu-item index="/priceDown">拒绝调价</el-menu-item>
|
||||||
<!--<el-menu-item index="/batchUpload">批量上品</el-menu-item>-->
|
<!--<el-menu-item index="/batchUpload">批量上品</el-menu-item>-->
|
||||||
<el-menu-item v-if="$store.state.userInfo.phone == '18610967550' || $store.state.userInfo.phone == '18571466720'" index="/draft">
|
<el-menu-item v-if="$store.state.userInfo.phone == '18610967550' || isAdmin" index="/draft">
|
||||||
草稿箱管理
|
草稿箱管理
|
||||||
</el-menu-item>
|
</el-menu-item>
|
||||||
<el-menu-item index="/sellerSelect">上新生命周期管理</el-menu-item>
|
<el-menu-item index="/sellerSelect">上新生命周期管理</el-menu-item>
|
||||||
@@ -153,16 +162,16 @@
|
|||||||
<el-menu-item index="/copyProductShein">商品复制</el-menu-item>
|
<el-menu-item index="/copyProductShein">商品复制</el-menu-item>
|
||||||
<el-menu-item index="/orderListShein">发货订单</el-menu-item>
|
<el-menu-item index="/orderListShein">发货订单</el-menu-item>
|
||||||
<el-menu-item index="/productListOdm">商品列表(ODM)</el-menu-item>
|
<el-menu-item index="/productListOdm">商品列表(ODM)</el-menu-item>
|
||||||
<el-menu-item v-if="$store.state.userInfo.phone == '18571466720' || $store.state.userInfo.phone == '18666013582'" index="/returnRecordShein">退货与报废单列表</el-menu-item>
|
<el-menu-item v-if="isAdmin || $store.state.userInfo.phone == '18666013582'" index="/returnRecordShein">退货与报废单列表</el-menu-item>
|
||||||
<el-menu-item v-if="$store.state.userInfo.phone == '18571466720' || $store.state.userInfo.phone == '17607119772'" index="/labelInfoShein">
|
<el-menu-item v-if="isAdmin || $store.state.userInfo.phone == '17607119772'" index="/labelInfoShein">
|
||||||
标签管理
|
标签管理
|
||||||
</el-menu-item>
|
</el-menu-item>
|
||||||
<el-menu-item v-if="$store.state.userInfo.phone == '18571466720' || $store.state.userInfo.phone == '17607119772'" index="/purchaseOrderListShein">
|
<el-menu-item v-if="isAdmin || $store.state.userInfo.phone == '17607119772'" index="/purchaseOrderListShein">
|
||||||
发货单列表
|
发货单列表
|
||||||
</el-menu-item>
|
</el-menu-item>
|
||||||
<el-menu-item index="/saleStatShein">商家账单统计</el-menu-item>
|
<el-menu-item index="/saleStatShein">商家账单统计</el-menu-item>
|
||||||
</el-submenu>
|
</el-submenu>
|
||||||
<el-submenu index="/dataManager" v-if="$store.state.userInfo.phone == '18571466720'">
|
<el-submenu index="/dataManager" v-if="isAdmin">
|
||||||
<template slot="title">
|
<template slot="title">
|
||||||
<i class="el-icon-s-data"></i>
|
<i class="el-icon-s-data"></i>
|
||||||
<span slot="title">数据管理</span>
|
<span slot="title">数据管理</span>
|
||||||
@@ -210,6 +219,7 @@
|
|||||||
<el-menu-item index="/labelsPrint">标签打印</el-menu-item>
|
<el-menu-item index="/labelsPrint">标签打印</el-menu-item>
|
||||||
</el-submenu>
|
</el-submenu>
|
||||||
</el-submenu>
|
</el-submenu>
|
||||||
|
|
||||||
</el-menu>
|
</el-menu>
|
||||||
</el-scrollbar>
|
</el-scrollbar>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
@@ -221,18 +231,18 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<el-dialog
|
<el-dialog
|
||||||
title="激活充值"
|
title="激活充值"
|
||||||
:visible="$store.state.activeDlgShow"
|
:visible="$store.state.activeDlgShow"
|
||||||
:close-on-click-modal="false"
|
:close-on-click-modal="false"
|
||||||
width="1200"
|
width="1200"
|
||||||
:before-close="handleClose">
|
:before-close="handleClose">
|
||||||
<ai-payment/>
|
<ai-payment/>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<el-dialog
|
<el-dialog
|
||||||
title="温馨提示"
|
title="温馨提示"
|
||||||
:visible="$store.state.showSheinAlert"
|
:visible="$store.state.showSheinAlert"
|
||||||
:close-on-click-modal="false"
|
:close-on-click-modal="false"
|
||||||
width="1200">
|
width="1200">
|
||||||
<span style="font-size: large">1、检查“SHEIN商家后台”是否登录,如没登录,请先登录,之后再刷新助手<br></span>
|
<span style="font-size: large">1、检查“SHEIN商家后台”是否登录,如没登录,请先登录,之后再刷新助手<br></span>
|
||||||
<span style="font-size: large">2、如果SHEIN商家后台已经登录,仍然弹出当前窗口,则需要SHEIN进行二次授权,二次授权可在菜单“商品管理->商品列表”,任意选择一个商品,在“库存”一栏,点击修改,在新打开的页面中可看到“正在鉴权”的字样,即可完成二次授权</span>
|
<span style="font-size: large">2、如果SHEIN商家后台已经登录,仍然弹出当前窗口,则需要SHEIN进行二次授权,二次授权可在菜单“商品管理->商品列表”,任意选择一个商品,在“库存”一栏,点击修改,在新打开的页面中可看到“正在鉴权”的字样,即可完成二次授权</span>
|
||||||
<span slot="footer" class="dialog-footer">
|
<span slot="footer" class="dialog-footer">
|
||||||
@@ -240,10 +250,10 @@
|
|||||||
</span>
|
</span>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<el-dialog
|
<el-dialog
|
||||||
title="温馨提示"
|
title="温馨提示"
|
||||||
:visible="$store.state.showTemuAlert"
|
:visible="$store.state.showTemuAlert"
|
||||||
:close-on-click-modal="false"
|
:close-on-click-modal="false"
|
||||||
width="1200">
|
width="1200">
|
||||||
<span style="font-size: large">请先打开卖家中心“结算数据->售后管理”页面进行二次授权,<a target="_blank" style="text-decoration: underline" href="https://seller.kuajingmaihuo.com/main/aftersales/information">去打开</a><br></span>
|
<span style="font-size: large">请先打开卖家中心“结算数据->售后管理”页面进行二次授权,<a target="_blank" style="text-decoration: underline" href="https://seller.kuajingmaihuo.com/main/aftersales/information">去打开</a><br></span>
|
||||||
<span slot="footer" class="dialog-footer">
|
<span slot="footer" class="dialog-footer">
|
||||||
<el-button @click="closeTemuAlert">关 闭</el-button>
|
<el-button @click="closeTemuAlert">关 闭</el-button>
|
||||||
@@ -257,175 +267,176 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import {mapMutations, mapState} from 'vuex'
|
import {mapMutations, mapState} from 'vuex'
|
||||||
import AiPayment from "@/components/AiPayment.vue";
|
import AiPayment from "@/components/AiPayment.vue";
|
||||||
import LablesMember from '@/components/LablesMember'
|
import LablesMember from '@/components/LablesMember'
|
||||||
import {sendAliexpressAPIMessage, sendGoodcangAPIMessage} from "@/api/chromeApi";
|
import {sendAliexpressAPIMessage, sendGoodcangAPIMessage} from "@/api/chromeApi";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {AiPayment, LablesMember},
|
components: {AiPayment, LablesMember},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
isCollapse: false,
|
isCollapse: false,
|
||||||
activePath: '/home',
|
activePath: '/home',
|
||||||
form: {
|
form: {
|
||||||
mallId: this.$store.state.mallId,
|
mallId: this.$store.state.mallId,
|
||||||
mallName: this.$store.state.mallName,
|
mallName: this.$store.state.mallName,
|
||||||
code: ''
|
code: ''
|
||||||
},
|
|
||||||
version: '',
|
|
||||||
vipType: ["体验会员", "月会员", "半年会员", "年会员", "多店通用年会员"]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
freeLogo: () => require("../assets/free.png"),
|
|
||||||
getStateInfo() {
|
|
||||||
if (this.$store.state.userInfo.flag == 0) {
|
|
||||||
return '未激活';
|
|
||||||
} else if (this.$store.state.userInfo.flag == 1) {
|
|
||||||
if (this.$store.state.userInfo.type != 4) {
|
|
||||||
return `(${this.$store.state.userInfo.mallName})` + this.vipType[this.$store.state.userInfo.type] + '(' + this.$store.state.userInfo.expireTime.substring(0, 10) + ')';
|
|
||||||
} else {
|
|
||||||
return this.vipType[this.$store.state.userInfo.type] + '(' + this.$store.state.userInfo.expireTime.substring(0, 10) + ')'
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
return '已过期';
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
version: '',
|
||||||
...mapState(['mallName', 'mallList'])
|
vipType: ["体验会员", "月会员", "半年会员", "年会员", "多店通用年会员"]
|
||||||
},
|
}
|
||||||
|
},
|
||||||
watch: {
|
computed: {
|
||||||
$route(v) {
|
freeLogo: () => require("../assets/free.png"),
|
||||||
if (v.meta && v.meta.activeMenu) {
|
getStateInfo() {
|
||||||
this.activePath = v.meta.activeMenu
|
if (this.$store.state.userInfo.flag == 0) {
|
||||||
|
return '未激活';
|
||||||
|
} else if (this.$store.state.userInfo.flag == 1) {
|
||||||
|
if (this.$store.state.userInfo.type != 4) {
|
||||||
|
return `(${this.$store.state.userInfo.mallName})` + this.vipType[this.$store.state.userInfo.type] + '(' + this.$store.state.userInfo.expireTime.substring(0, 10) + ')';
|
||||||
} else {
|
} else {
|
||||||
this.activePath = v.fullPath
|
return this.vipType[this.$store.state.userInfo.type] + '(' + this.$store.state.userInfo.expireTime.substring(0, 10) + ')'
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
created() {
|
|
||||||
const devVersion = require('../manifest.development.json').version
|
|
||||||
const prodVersion = require('../manifest.production.json').version
|
|
||||||
this.version = process.env.NODE_ENV === 'production' ? prodVersion : devVersion
|
|
||||||
if (this.$route.meta && this.$route.meta.activeMenu) {
|
|
||||||
this.activePath = this.$route.meta.activeMenu
|
|
||||||
} else {
|
} else {
|
||||||
this.activePath = this.$route.fullPath
|
return '已过期';
|
||||||
}
|
}
|
||||||
// this.testGoodcang()
|
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
...mapState(['mallName', 'mallList', 'userInfo']),
|
||||||
...mapMutations(['setActiveDlgShow']),
|
isAdmin: v => ['18571466720'].includes(v.userInfo.phone),
|
||||||
handleClick(e) {
|
},
|
||||||
if (e === 'logout') {
|
|
||||||
this.$store.dispatch('SignOut', false)
|
watch: {
|
||||||
} else if (e === 'pwd') {
|
$route(v) {
|
||||||
this.$router.push('changePwd')
|
if (v.meta && v.meta.activeMenu) {
|
||||||
} else if (e === 'message') {
|
this.activePath = v.meta.activeMenu
|
||||||
this.$router.push('message')
|
} else {
|
||||||
} else if (e === 'coin') {
|
this.activePath = v.fullPath
|
||||||
this.$router.push('coinFlow')
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
created() {
|
||||||
|
const devVersion = require('../manifest.development.json').version
|
||||||
|
const prodVersion = require('../manifest.production.json').version
|
||||||
|
this.version = process.env.NODE_ENV === 'production' ? prodVersion : devVersion
|
||||||
|
if (this.$route.meta && this.$route.meta.activeMenu) {
|
||||||
|
this.activePath = this.$route.meta.activeMenu
|
||||||
|
} else {
|
||||||
|
this.activePath = this.$route.fullPath
|
||||||
|
}
|
||||||
|
// this.testGoodcang()
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
...mapMutations(['setActiveDlgShow']),
|
||||||
|
handleClick(e) {
|
||||||
|
if (e === 'logout') {
|
||||||
|
this.$store.dispatch('SignOut', false)
|
||||||
|
} else if (e === 'pwd') {
|
||||||
|
this.$router.push('changePwd')
|
||||||
|
} else if (e === 'message') {
|
||||||
|
this.$router.push('message')
|
||||||
|
} else if (e === 'coin') {
|
||||||
|
this.$router.push('coinFlow')
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
openMember(index) {
|
||||||
|
this.$refs.LablesMember.show(index)
|
||||||
|
},
|
||||||
|
|
||||||
|
handleClose() {
|
||||||
|
this.form.mallId = "";
|
||||||
|
this.form.mallName = "";
|
||||||
|
this.form.code = "";
|
||||||
|
this.setActiveDlgShow(false)
|
||||||
|
},
|
||||||
|
toActive() {
|
||||||
|
this.setActiveDlgShow(true)
|
||||||
|
},
|
||||||
|
getMessage(type) {
|
||||||
|
return `你使用的是“${this.vipType[type]}”兑换券,确定兑换?`;
|
||||||
|
},
|
||||||
|
active() {
|
||||||
|
this.$refs.form.validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
this.$http.post(`/api/coupon/getDetail`, null, {
|
||||||
|
params: {
|
||||||
|
code: this.form.code
|
||||||
|
}
|
||||||
|
}).then(res => {
|
||||||
|
if (res.code == 0) {
|
||||||
|
let msg = this.getMessage(res.data.type);
|
||||||
|
this.$confirm(msg, '温馨提示', {
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'info'
|
||||||
|
}).then(() => {
|
||||||
|
this.$http.post(`/api/order/upgradeByCode`, null, {
|
||||||
|
params: {
|
||||||
|
...this.form
|
||||||
|
}
|
||||||
|
}).then(res => {
|
||||||
|
if (res.code == 0) {
|
||||||
|
this.$message.success('激活成功')
|
||||||
|
this.$store.dispatch('getUserInfo')
|
||||||
|
this.setActiveDlgShow(false)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
},
|
})
|
||||||
|
},
|
||||||
openMember(index) {
|
sign() {
|
||||||
this.$refs.LablesMember.show(index)
|
this.$http.post(`/api/malluser/sign`).then(res => {
|
||||||
},
|
if (res.code == 0) {
|
||||||
|
this.$message.success('签到成功')
|
||||||
handleClose() {
|
this.$store.dispatch('getUserInfo')
|
||||||
this.form.mallId = "";
|
}
|
||||||
this.form.mallName = "";
|
})
|
||||||
this.form.code = "";
|
},
|
||||||
this.setActiveDlgShow(false)
|
async openFolder() {
|
||||||
},
|
console.log(22)
|
||||||
toActive() {
|
let fileList = []
|
||||||
this.setActiveDlgShow(true)
|
const res = await window.showDirectoryPicker({})
|
||||||
},
|
const detalAction = async (obj) => {
|
||||||
getMessage(type) {
|
if (obj.entries) {
|
||||||
return `你使用的是“${this.vipType[type]}”兑换券,确定兑换?`;
|
const dirs = obj.entries()
|
||||||
},
|
for await (const entry of dirs) {
|
||||||
active() {
|
if (entry[1].entries) {
|
||||||
this.$refs.form.validate((valid) => {
|
detalAction(entry[1])
|
||||||
if (valid) {
|
} else {
|
||||||
this.$http.post(`/api/coupon/getDetail`, null, {
|
fileList.push({
|
||||||
params: {
|
name: entry[0],
|
||||||
code: this.form.code
|
path: obj.name,
|
||||||
}
|
fileHandle: entry[1],
|
||||||
}).then(res => {
|
file: await entry[1].getFile()
|
||||||
if (res.code == 0) {
|
})
|
||||||
let msg = this.getMessage(res.data.type);
|
|
||||||
this.$confirm(msg, '温馨提示', {
|
|
||||||
confirmButtonText: '确定',
|
|
||||||
cancelButtonText: '取消',
|
|
||||||
type: 'info'
|
|
||||||
}).then(() => {
|
|
||||||
this.$http.post(`/api/order/upgradeByCode`, null, {
|
|
||||||
params: {
|
|
||||||
...this.form
|
|
||||||
}
|
|
||||||
}).then(res => {
|
|
||||||
if (res.code == 0) {
|
|
||||||
this.$message.success('激活成功')
|
|
||||||
this.$store.dispatch('getUserInfo')
|
|
||||||
this.setActiveDlgShow(false)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
sign() {
|
|
||||||
this.$http.post(`/api/malluser/sign`).then(res => {
|
|
||||||
if (res.code == 0) {
|
|
||||||
this.$message.success('签到成功')
|
|
||||||
this.$store.dispatch('getUserInfo')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
async openFolder() {
|
|
||||||
console.log(22)
|
|
||||||
let fileList = []
|
|
||||||
const res = await window.showDirectoryPicker({})
|
|
||||||
const detalAction = async (obj) => {
|
|
||||||
if (obj.entries) {
|
|
||||||
const dirs = obj.entries()
|
|
||||||
for await (const entry of dirs) {
|
|
||||||
if (entry[1].entries) {
|
|
||||||
detalAction(entry[1])
|
|
||||||
} else {
|
|
||||||
fileList.push({
|
|
||||||
name: entry[0],
|
|
||||||
path: obj.name,
|
|
||||||
fileHandle: entry[1],
|
|
||||||
file: await entry[1].getFile()
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
await detalAction(res);
|
}
|
||||||
console.log("--fileList--", fileList)
|
await detalAction(res);
|
||||||
},
|
console.log("--fileList--", fileList)
|
||||||
gotoKefu() {
|
},
|
||||||
window.open('https://work.weixin.qq.com/kfid/kfcaa4208f661131eba', '_blank')
|
gotoKefu() {
|
||||||
},
|
window.open('https://work.weixin.qq.com/kfid/kfcaa4208f661131eba', '_blank')
|
||||||
closeSheinAlert() {
|
},
|
||||||
this.$store.commit('setSheinAlertShow', false)
|
closeSheinAlert() {
|
||||||
},
|
this.$store.commit('setSheinAlertShow', false)
|
||||||
closeTemuAlert() {
|
},
|
||||||
this.$store.commit('setTemuAlertShow', false)
|
closeTemuAlert() {
|
||||||
},
|
this.$store.commit('setTemuAlertShow', false)
|
||||||
getAliexpressGoodsList() {
|
},
|
||||||
let url = "https://seller-acs.aliexpress.com/h5/mtop.global.merchant.self.product.manager.render.list/1.0/?jsv=2.7.2&appKey=30267743&t=1713978403051&sign=ba2bda69b4a2695c7279d4bc05f51741&v=1.0&timeout=15000&H5Request=true&url=mtop.global.merchant.self.product.manager.render.list&__channel-id__=701301&api=mtop.global.merchant.self.product.manager.render.list&type=originaljson&dataType=json&valueType=original&x-i18n-regionID=AE"
|
getAliexpressGoodsList() {
|
||||||
url = url + "&data=" + encodeURIComponent(
|
let url = "https://seller-acs.aliexpress.com/h5/mtop.global.merchant.self.product.manager.render.list/1.0/?jsv=2.7.2&appKey=30267743&t=1713978403051&sign=ba2bda69b4a2695c7279d4bc05f51741&v=1.0&timeout=15000&H5Request=true&url=mtop.global.merchant.self.product.manager.render.list&__channel-id__=701301&api=mtop.global.merchant.self.product.manager.render.list&type=originaljson&dataType=json&valueType=original&x-i18n-regionID=AE"
|
||||||
|
url = url + "&data=" + encodeURIComponent(
|
||||||
JSON.stringify({
|
JSON.stringify({
|
||||||
"channelId": "701301",
|
"channelId": "701301",
|
||||||
"jsonBody": JSON.stringify({
|
"jsonBody": JSON.stringify({
|
||||||
@@ -443,34 +454,34 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
"from":"SELF",
|
"from": "SELF",
|
||||||
"bizParam":"{\"version\":\"simple\"}"
|
"bizParam": "{\"version\":\"simple\"}"
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
sendAliexpressAPIMessage({
|
sendAliexpressAPIMessage({
|
||||||
url: url
|
url: url
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
//console.log(res)
|
//console.log(res)
|
||||||
})
|
})
|
||||||
},
|
|
||||||
testGoodcang() {
|
|
||||||
sendGoodcangAPIMessage({
|
|
||||||
url: "/api/v1/product/list",
|
|
||||||
method: 'POST',
|
|
||||||
data: {
|
|
||||||
"page_index": 1,
|
|
||||||
"page_size": 20,
|
|
||||||
"product_status": 1
|
|
||||||
}
|
|
||||||
}).then(res => {
|
|
||||||
console.log(res)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
mounted() {
|
testGoodcang() {
|
||||||
// this.getAliexpressGoodsList()
|
sendGoodcangAPIMessage({
|
||||||
|
url: "/api/v1/product/list",
|
||||||
|
method: 'POST',
|
||||||
|
data: {
|
||||||
|
"page_index": 1,
|
||||||
|
"page_size": 20,
|
||||||
|
"product_status": 1
|
||||||
|
}
|
||||||
|
}).then(res => {
|
||||||
|
console.log(res)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
// this.getAliexpressGoodsList()
|
||||||
}
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
<div class="search-item__wrapper">
|
<div class="search-item__wrapper">
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<div class="search-item" v-show="addType === '1'">
|
<div class="search-item" v-show="addType === '1'">
|
||||||
<label>发货单:</label>
|
<label>店铺:</label>
|
||||||
<el-select v-model="search.mallId" placeholder="请选择店铺" size="small">
|
<el-select v-model="search.mallId" placeholder="请选择店铺" size="small">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in $store.state.mallList"
|
v-for="item in $store.state.mallList"
|
||||||
@@ -31,6 +31,8 @@
|
|||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-button style="margin-left: 10px;" size="small" :disabled="!search.mallId" :loading="isLoading" @click="searchSkuList">查询</el-button>
|
<el-button style="margin-left: 10px;" size="small" :disabled="!search.mallId" :loading="isLoading" @click="searchSkuList">查询</el-button>
|
||||||
|
|
||||||
|
<p class="tips">发货单列表->待仓库发货</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="search-item" v-show="addType === '2' || addType === '3'">
|
<div class="search-item" v-show="addType === '2' || addType === '3'">
|
||||||
<label>{{ addType === '2' ? 'SKC:' : 'SKU:' }}</label>
|
<label>{{ addType === '2' ? 'SKC:' : 'SKU:' }}</label>
|
||||||
@@ -40,7 +42,7 @@
|
|||||||
style="width: 250px"
|
style="width: 250px"
|
||||||
size="small"
|
size="small"
|
||||||
clearable
|
clearable
|
||||||
placeholder="多个查询请用户逗号分割"
|
placeholder="多个查询请用逗号分割"
|
||||||
suffix-icon="iconfont iconSearch">
|
suffix-icon="iconfont iconSearch">
|
||||||
</el-input>
|
</el-input>
|
||||||
<el-input
|
<el-input
|
||||||
@@ -48,7 +50,7 @@
|
|||||||
v-model="search.productSkcId"
|
v-model="search.productSkcId"
|
||||||
style="width: 250px"
|
style="width: 250px"
|
||||||
size="small"
|
size="small"
|
||||||
placeholder="多个查询请用户逗号分割"
|
placeholder="多个查询请用逗号分割"
|
||||||
clearable
|
clearable
|
||||||
suffix-icon="iconfont iconSearch">
|
suffix-icon="iconfont iconSearch">
|
||||||
</el-input>
|
</el-input>
|
||||||
@@ -63,6 +65,18 @@
|
|||||||
:height="height"
|
:height="height"
|
||||||
@getList="() => {}"
|
@getList="() => {}"
|
||||||
:loading="isLoading">
|
:loading="isLoading">
|
||||||
|
<el-table-column slot="product" width="280px" label="商品信息" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<div class="product">
|
||||||
|
<img :src="scope.row.thumbUrl" v-if="scope.row.thumbUrl">
|
||||||
|
<div class="right">
|
||||||
|
<el-tooltip class="item" effect="dark" :content="scope.row.productName" placement="top">
|
||||||
|
<div>{{ scope.row.productName }}</div>
|
||||||
|
</el-tooltip>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column slot="options" label="操作" align="center" fixed="right" width="120px">
|
<el-table-column slot="options" label="操作" align="center" fixed="right" width="120px">
|
||||||
<template v-slot="{ row }">
|
<template v-slot="{ row }">
|
||||||
<div class="table-options">
|
<div class="table-options">
|
||||||
@@ -103,12 +117,15 @@
|
|||||||
return {
|
return {
|
||||||
colConfigs: [
|
colConfigs: [
|
||||||
{ prop: 'mallName', label: '店铺名称', align: 'left' },
|
{ prop: 'mallName', label: '店铺名称', align: 'left' },
|
||||||
|
// { prop: 'productName', label: '商品名称', width: '280px', align: 'center' },
|
||||||
|
{ slot: 'product' },
|
||||||
{ prop: 'labelCode', label: '条码编码', align: 'center' },
|
{ prop: 'labelCode', label: '条码编码', align: 'center' },
|
||||||
{ prop: 'productSkcId', label: 'SKC', align: 'center' },
|
{ prop: 'productSkcId', label: 'SKC', align: 'center' },
|
||||||
{ prop: 'productSkuId', label: 'SKU', align: 'center' },
|
{ prop: 'productSkuId', label: 'SKU', align: 'center' },
|
||||||
{ prop: 'skuExtCode', label: 'SKU货号', align: 'center' },
|
{ prop: 'skuExtCode', label: 'SKU货号', align: 'center' },
|
||||||
{ prop: 'skuSpecName', label: '次销售属性', align: 'center' },
|
{ prop: 'skuSpecName', label: '次销售属性', align: 'center' },
|
||||||
{ prop: 'deliveryNum', label: '发货数', align: 'center' }
|
{ prop: 'deliveryNum', label: '发货数', align: 'center' },
|
||||||
|
{ prop: 'purchaseTime', label: '创建时间', align: 'center', format: v => this.$dayjs(v).format('YYYY-MM-DD HH:mm:ss') }
|
||||||
],
|
],
|
||||||
search: {
|
search: {
|
||||||
mallId: '',
|
mallId: '',
|
||||||
@@ -281,6 +298,7 @@
|
|||||||
labelCode: v.labelCode,
|
labelCode: v.labelCode,
|
||||||
skuExtCode: v.skuExtCode,
|
skuExtCode: v.skuExtCode,
|
||||||
deliveryNum: v.deliveryNum,
|
deliveryNum: v.deliveryNum,
|
||||||
|
thumbUrl: v.thumbUrl,
|
||||||
skuSpecName: v.secondarySpecVOList.map(item => {
|
skuSpecName: v.secondarySpecVOList.map(item => {
|
||||||
return item.specName
|
return item.specName
|
||||||
}).join(',')
|
}).join(',')
|
||||||
@@ -339,5 +357,35 @@
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.product {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
|
.right {
|
||||||
|
flex: 1;
|
||||||
|
margin-left: 10px;
|
||||||
|
text-align: left;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
|
||||||
|
div {
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
width: 60px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.tips {
|
||||||
|
margin-left: 20px;
|
||||||
|
font-size: 14px;
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -142,7 +142,7 @@
|
|||||||
v-model="skuReqParams.SKC"
|
v-model="skuReqParams.SKC"
|
||||||
style="width: 250px"
|
style="width: 250px"
|
||||||
size="small"
|
size="small"
|
||||||
placeholder="多个查询请用户逗号分割"
|
placeholder="多个查询请用逗号分割"
|
||||||
clearable
|
clearable
|
||||||
@clear="getSkuList()"
|
@clear="getSkuList()"
|
||||||
suffix-icon="iconfont iconSearch">
|
suffix-icon="iconfont iconSearch">
|
||||||
@@ -156,7 +156,7 @@
|
|||||||
v-model="skuReqParams.SKU"
|
v-model="skuReqParams.SKU"
|
||||||
style="width: 250px"
|
style="width: 250px"
|
||||||
size="small"
|
size="small"
|
||||||
placeholder="多个查询请用户逗号分割"
|
placeholder="多个查询请用逗号分割"
|
||||||
clearable
|
clearable
|
||||||
@clear="getSkuList()"
|
@clear="getSkuList()"
|
||||||
suffix-icon="iconfont iconSearch">
|
suffix-icon="iconfont iconSearch">
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ import CryptoJS from 'crypto-js'
|
|||||||
this.$refs.form.validate((valid) => {
|
this.$refs.form.validate((valid) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
if (this.form.password != this.form.repassword) {
|
if (this.form.password != this.form.repassword) {
|
||||||
this.$message.success('两次密码输入不一致');
|
this.$message.error('两次密码输入不一致');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.btnLoading = true
|
this.btnLoading = true
|
||||||
|
|||||||
34
src/view/media/i18n.js
Normal file
34
src/view/media/i18n.js
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
export const languages = {
|
||||||
|
CHS: '中文(简体)',
|
||||||
|
CHT: '中文(繁体)',
|
||||||
|
CSY: '捷克语',
|
||||||
|
NLD: '荷兰语',
|
||||||
|
ENG: '英语',
|
||||||
|
FRA: '法语',
|
||||||
|
DEU: '德语',
|
||||||
|
HUN: '匈牙利语',
|
||||||
|
ITA: '意大利语',
|
||||||
|
JPN: '日语',
|
||||||
|
KOR: '朝鲜文',
|
||||||
|
PLK: '波兰语',
|
||||||
|
PTB: '葡萄牙语(巴西)',
|
||||||
|
ROM: '罗马尼亚语',
|
||||||
|
RUS: '俄罗斯语',
|
||||||
|
ESP: '西班牙语',
|
||||||
|
TRK: '土耳其语',
|
||||||
|
VIN: '越南语',
|
||||||
|
ARA: '阿拉伯语',
|
||||||
|
SRP: '塞尔维亚语',
|
||||||
|
HRV: '克罗地亚语',
|
||||||
|
THA: '泰语',
|
||||||
|
IND: '印尼语',
|
||||||
|
FIL: '菲律宾语(他加禄语)',
|
||||||
|
}
|
||||||
|
export const engines = {
|
||||||
|
google: '谷歌翻译',
|
||||||
|
papago: 'Papago',
|
||||||
|
m2m100: 'M2M100',
|
||||||
|
deepl: 'DeepL',
|
||||||
|
none: '清除文字',
|
||||||
|
original: '不翻译'
|
||||||
|
}
|
||||||
44
src/view/media/imageTranslate.vue
Normal file
44
src/view/media/imageTranslate.vue
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
<script>
|
||||||
|
import AiDetail from "@/components/AiDetail.vue";
|
||||||
|
import AiSelect from "@/components/AiSelect.vue";
|
||||||
|
import {engines, languages} from "@/view/media/i18n";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "imageTranslate",
|
||||||
|
components: {AiSelect, AiDetail},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
form: {},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
languages: () => Object.entries(languages).map(([k, v]) => ({dictName: v, dictValue: k})),
|
||||||
|
engines: () => Object.entries(engines).map(([k, v]) => ({dictName: v, dictValue: k})),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<ai-list class="imageTranslate">
|
||||||
|
<ai-title slot="title" title="图片翻译" isShowBottomBorder/>
|
||||||
|
<template #content>
|
||||||
|
<el-form size="mini" label-width="120px">
|
||||||
|
<el-collapse>
|
||||||
|
<el-collapse-item title="翻译参数" name="1">
|
||||||
|
<el-form-item label="翻译引擎">
|
||||||
|
<ai-select v-model="form.translator" :select-list="engines"/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="翻译语言">
|
||||||
|
<ai-select v-model="form.targetLang" :select-list="languages"/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-collapse-item>
|
||||||
|
</el-collapse>
|
||||||
|
</el-form>
|
||||||
|
</template>
|
||||||
|
</ai-list>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.imageTranslate {
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -71,7 +71,7 @@ import { formatDate } from "@/utils/date.js"
|
|||||||
detailPicList: [],
|
detailPicList: [],
|
||||||
coin: 150,
|
coin: 150,
|
||||||
colConfigs: [
|
colConfigs: [
|
||||||
{ slot: 'productName', label: '商品名称', width: '180px', align: 'left', fixed: 'left' },
|
{ slot: 'productName', label: '商品名称', width: '180px', align: 'left', fixed: 'left' },
|
||||||
{ prop: 'category', label: '分类', width: '140px', align: 'left', fixed: 'left' },
|
{ prop: 'category', label: '分类', width: '140px', align: 'left', fixed: 'left' },
|
||||||
{ prop: 'productId', label: 'SPU ID', width: '120px', align: 'left' },
|
{ prop: 'productId', label: 'SPU ID', width: '120px', align: 'left' },
|
||||||
{ prop: 'productSkcId', label: 'SKC ID', width: '120px', align: 'left' },
|
{ prop: 'productSkcId', label: 'SKC ID', width: '120px', align: 'left' },
|
||||||
@@ -130,9 +130,9 @@ import { formatDate } from "@/utils/date.js"
|
|||||||
await this.dealAction("", res)
|
await this.dealAction("", res)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
},
|
},
|
||||||
async dealAction (root, obj) {
|
async dealAction (root, obj) {
|
||||||
console.log(obj)
|
console.log(obj)
|
||||||
if (obj.entries) {
|
if (obj.entries) {
|
||||||
@@ -188,7 +188,7 @@ import { formatDate } from "@/utils/date.js"
|
|||||||
} else if (entry[0] == '详情图' && entry[1].kind == 'directory') {
|
} else if (entry[0] == '详情图' && entry[1].kind == 'directory') {
|
||||||
this.detailPicList = await this.getPictureList(root + '/' + entry[0], entry[1])
|
this.detailPicList = await this.getPictureList(root + '/' + entry[0], entry[1])
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
if (this.mainPicList.length >= 0 && this.detailPicList.length >= 0) {
|
if (this.mainPicList.length >= 0 && this.detailPicList.length >= 0) {
|
||||||
await this.beginAddToDraft(obj.name)
|
await this.beginAddToDraft(obj.name)
|
||||||
@@ -302,4 +302,4 @@ import { formatDate } from "@/utils/date.js"
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -107,8 +107,19 @@
|
|||||||
:tableData="orderDataList"
|
:tableData="orderDataList"
|
||||||
:col-configs="orderColConfig"
|
:col-configs="orderColConfig"
|
||||||
height="700"
|
height="700"
|
||||||
:isShowPagination="false"
|
:size="100"
|
||||||
|
:current.sync="form.current"
|
||||||
|
:size.sync="form.size"
|
||||||
|
:total="orderTotal"
|
||||||
|
@getList="getOrderList"
|
||||||
style="margin-top: 8px;">
|
style="margin-top: 8px;">
|
||||||
|
<el-table-column slot="options" label="操作" align="center" fixed="right" width="140px">
|
||||||
|
<template v-slot="{ row }">
|
||||||
|
<div class="table-options">
|
||||||
|
<el-button type="text" v-if="form.status == '1'" @click="toSend(row)">重新发货</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
</ai-table>
|
</ai-table>
|
||||||
</ai-card>
|
</ai-card>
|
||||||
<AiDialog
|
<AiDialog
|
||||||
@@ -197,6 +208,7 @@
|
|||||||
return {
|
return {
|
||||||
isShow: false,
|
isShow: false,
|
||||||
orderDataList: [],
|
orderDataList: [],
|
||||||
|
orderTotal: 0,
|
||||||
colConfigs: [
|
colConfigs: [
|
||||||
{ type: "selection", width: '70px', align: 'left' },
|
{ type: "selection", width: '70px', align: 'left' },
|
||||||
{ slot: 'productName' },
|
{ slot: 'productName' },
|
||||||
@@ -225,7 +237,9 @@
|
|||||||
],
|
],
|
||||||
form: {
|
form: {
|
||||||
warehouseId: 'XinCang',
|
warehouseId: 'XinCang',
|
||||||
status: ''
|
status: '',
|
||||||
|
current: 1,
|
||||||
|
size: 100
|
||||||
},
|
},
|
||||||
mallId: '',
|
mallId: '',
|
||||||
mallName: '',
|
mallName: '',
|
||||||
@@ -319,6 +333,7 @@
|
|||||||
}
|
}
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
this.orderDataList = res.data.records
|
this.orderDataList = res.data.records
|
||||||
|
this.orderTotal = res.data.total
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
handleClick (e) {
|
handleClick (e) {
|
||||||
@@ -516,6 +531,10 @@
|
|||||||
params['invoice[product_declared_value][]'] = ''
|
params['invoice[product_declared_value][]'] = ''
|
||||||
params['invoice[product_weight][]'] = ''
|
params['invoice[product_weight][]'] = ''
|
||||||
|
|
||||||
|
if (obj.details[0].warehouseCode == 'UAXC002') {
|
||||||
|
params.courier = 'USPS'
|
||||||
|
}
|
||||||
|
|
||||||
for (let i = 0; i < obj.details.length; i++) {
|
for (let i = 0; i < obj.details.length; i++) {
|
||||||
params[`platform_barcode[${obj.details[i].productId}]`] = ''
|
params[`platform_barcode[${obj.details[i].productId}]`] = ''
|
||||||
params[`product_title_en[${obj.details[i].productId}]`] = obj.details[i].productTitleEn
|
params[`product_title_en[${obj.details[i].productId}]`] = obj.details[i].productTitleEn
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
const path = require('path')
|
const path = require('path')
|
||||||
const fs = require('fs')
|
const fs = require('fs')
|
||||||
// const JavaScriptObfuscator = require('webpack-obfuscator')
|
|
||||||
|
|
||||||
// Generate pages object
|
// Generate pages object
|
||||||
const pages = {}
|
const pages = {}
|
||||||
|
|
||||||
@@ -22,11 +20,12 @@ chromeName.forEach((name) => {
|
|||||||
entry: `src/entry/${name}`, template: 'public/index.html', filename: `${fileName}.html`
|
entry: `src/entry/${name}`, template: 'public/index.html', filename: `${fileName}.html`
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
const isDevMode = process.env.NODE_ENV === 'development'
|
const isDevMode = process.env.NODE_ENV === 'development'
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
pages, filenameHashing: false, chainWebpack: (config) => {
|
pages,
|
||||||
|
filenameHashing: false,
|
||||||
|
chainWebpack: (config) => {
|
||||||
config.plugin('copy').use(require('copy-webpack-plugin'), [{
|
config.plugin('copy').use(require('copy-webpack-plugin'), [{
|
||||||
patterns: [{
|
patterns: [{
|
||||||
from: path.resolve(`src/manifest.${process.env.NODE_ENV}.json`), to: `${path.resolve('dist')}/manifest.json`
|
from: path.resolve(`src/manifest.${process.env.NODE_ENV}.json`), to: `${path.resolve('dist')}/manifest.json`
|
||||||
@@ -34,21 +33,25 @@ module.exports = {
|
|||||||
from: path.resolve(`public/`), to: `${path.resolve('dist')}/`
|
from: path.resolve(`public/`), to: `${path.resolve('dist')}/`
|
||||||
}]
|
}]
|
||||||
}])
|
}])
|
||||||
}, devServer: {
|
},
|
||||||
port: 8080, open: true, overlay: {
|
devServer: {
|
||||||
warnings: false, errors: true
|
port: 8080, open: true, hot: true,
|
||||||
}, proxy: {
|
proxy: {
|
||||||
'/api': {
|
'/api': {
|
||||||
target: 'http://pdd.jjcp52.com', changeOrigin: true, ws: true, pathRewrite: {
|
target: 'http://pdd.jjcp52.com', changeOrigin: true, ws: true, pathRewrite: {
|
||||||
'^/api': '/'
|
'^/api': '/'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, lintOnSave: false, configureWebpack: {
|
},
|
||||||
|
lintOnSave: false,
|
||||||
|
configureWebpack: {
|
||||||
output: {
|
output: {
|
||||||
filename: `[name].js`, chunkFilename: `[name].js`
|
filename: `[name].js`, chunkFilename: `[name].js`
|
||||||
}, devtool: isDevMode ? 'inline-source-map' : false
|
},
|
||||||
}, css: {
|
devtool: isDevMode ? 'inline-source-map' : false
|
||||||
|
},
|
||||||
|
css: {
|
||||||
extract: false // Make sure the css is the same
|
extract: false // Make sure the css is the same
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user