Compare commits

..

19 Commits

Author SHA1 Message Date
aixianling
67b8108825 Merge remote-tracking branch 'gitee/master' 2024-11-07 11:52:31 +08:00
juanmao2009
90046641c0 !12 代码合并
Merge pull request !12 from juanmao2009/label
2024-11-07 03:16:10 +00:00
aixianling
e7f5670b72 新增图片翻译功能及多语言支持 2024-11-06 17:53:13 +08:00
yanran200830
510f3aa888 修复bug 2024-11-06 13:50:03 +08:00
juanmao2009
acbd7f6a86 !11 修改会员信息
Merge pull request !11 from juanmao2009/label
2024-11-06 02:52:47 +00:00
yanran200830
f3ad1604d8 修复金币充值bug 2024-11-06 10:50:12 +08:00
aixianling
b1d1f60f96 调整Home.vue页面布局和功能 2024-11-06 09:31:58 +08:00
aixianling
191edd1eb4 Merge remote-tracking branch 'gitee/master'
# Conflicts:
#	src/router/index.js
#	src/view/Home.vue
#	yarn.lock
2024-11-06 09:31:25 +08:00
juanmao2009
0cbe017a95 !10 调整文字
Merge pull request !10 from juanmao2009/label
2024-11-05 13:45:05 +00:00
liushiwei
b1abecfb29 调整 2024-11-05 21:44:30 +08:00
juanmao2009
2511778c9f !9 调整
Merge pull request !9 from juanmao2009/label
2024-11-05 13:29:24 +00:00
liushiwei
fea7848653 调整 2024-11-05 21:28:49 +08:00
juanmao2009
3cdaba63b7 !8 调整
Merge pull request !8 from juanmao2009/label
2024-11-05 13:28:27 +00:00
liushiwei
5ece8b562f 调整 2024-11-05 21:27:16 +08:00
juanmao2009
15614d9489 !7 标签管理
Merge pull request !7 from juanmao2009/label
2024-11-05 13:21:56 +00:00
liushiwei
7b43c97f5f Merge branch 'label' of https://gitee.com/three-make-money/temu-plugin into label 2024-11-05 21:20:17 +08:00
liushiwei
74043c55ae 调整 2024-11-05 21:20:05 +08:00
aixianling
f69c86f92b 管理权限统一 2024-11-05 09:35:31 +08:00
aixianling
c7cb7c103d 先提交一下,打个钉子 2024-11-04 17:47:02 +08:00
21 changed files with 460 additions and 300 deletions

View File

@@ -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",

View File

@@ -18,7 +18,7 @@
] ]
}, },
"condition": { "condition": {
"urlFilter": "||xc.rqlis.com:888" "urlFilter": "||xc.rqlis.com"
} }
} }
] ]

View File

@@ -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

View File

@@ -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;
}

View File

@@ -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;

View File

@@ -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">&#xe672;</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">&#xe883;</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">&#xe953;</i>')
$('#custom-provider ul ul li:eq(1)').prepend('<i class="iconfont">&#xe6f3;</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;
} }
} }

View File

@@ -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) {

View File

@@ -23,7 +23,7 @@
"*://*.geiwohuo.com/", "*://*.geiwohuo.com/",
"*://*.ltwebstatic.com/", "*://*.ltwebstatic.com/",
"*://*.goodcang.com/", "*://*.goodcang.com/",
"*://*.rqlis.com*" "*://*.rqlis.com/"
], ],
"permissions": [ "permissions": [
"cookies", "cookies",

View File

@@ -22,7 +22,7 @@
"*://*.shein.com/", "*://*.shein.com/",
"*://*.geiwohuo.com/", "*://*.geiwohuo.com/",
"*://*.ltwebstatic.com/", "*://*.ltwebstatic.com/",
"*://*.rqlis.com" "*://*.rqlis.com/"
], ],
"permissions": [ "permissions": [
"cookies", "cookies",

View File

@@ -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)
@@ -347,7 +348,8 @@ const router = new VueRouter({
meta: { meta: {
activeMenu: '/labelsTemplate' activeMenu: '/labelsTemplate'
} }
} },
...media
] ]
}, },
{ {

3
src/router/media.js Normal file
View File

@@ -0,0 +1,3 @@
export default [
{name: "imageTranslate", path: "imageTranslate", component: () => import("@/view/media/imageTranslate.vue")}
]

View File

@@ -108,15 +108,19 @@ export function transform(leftData) {
"valueExtendInfo": "" "valueExtendInfo": ""
}); });
rightSkuItem.productSkuId = 0; rightSkuItem.productSkuId = 0;
if (!leftSkuItem.productSkuWhExtAttr) {
rightSkuItem.productSkuWhExtAttrReq = null
} else {
rightSkuItem.productSkuWhExtAttrReq = { rightSkuItem.productSkuWhExtAttrReq = {
"productSkuVolumeReq": leftSkuItem.productSkuWhExtAttr.productSkuVolume, "productSkuVolumeReq": leftSkuItem.productSkuWhExtAttr?.productSkuVolume,
"productSkuWeightReq": leftSkuItem.productSkuWhExtAttr.productSkuWeight, "productSkuWeightReq": leftSkuItem.productSkuWhExtAttr?.productSkuWeight,
"productSkuBarCodeReqs": leftSkuItem.productSkuWhExtAttr.productSkuBarCodes, "productSkuBarCodeReqs": leftSkuItem.productSkuWhExtAttr?.productSkuBarCodes,
"productSkuSensitiveAttrReq": { "productSkuSensitiveAttrReq": {
"isSensitive": leftSkuItem.productSkuWhExtAttr.productSkuSensitiveAttr.isSensitive, "isSensitive": leftSkuItem.productSkuWhExtAttr?.productSkuSensitiveAttr.isSensitive,
"sensitiveList": leftSkuItem.productSkuWhExtAttr.productSkuSensitiveAttr.sensitiveList}, "sensitiveList": leftSkuItem.productSkuWhExtAttr?.productSkuSensitiveAttr.sensitiveList},
"productSkuSensitiveLimitReq": leftSkuItem.productSkuWhExtAttr.productSkuSensitiveLimit, "productSkuSensitiveLimitReq": leftSkuItem.productSkuWhExtAttr?.productSkuSensitiveLimit,
}; };
}
rightSkuItem.currencyType = leftSkuItem.currencyType; rightSkuItem.currencyType = leftSkuItem.currencyType;
rightSkcItem.productSkuReqs.push(rightSkuItem); rightSkcItem.productSkuReqs.push(rightSkuItem);

View File

@@ -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">
@@ -49,6 +49,15 @@
<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">
@@ -294,7 +304,8 @@
} }
}, },
...mapState(['mallName', 'mallList']) ...mapState(['mallName', 'mallList', 'userInfo']),
isAdmin: v => ['18571466720'].includes(v.userInfo.phone),
}, },
watch: { watch: {

View File

@@ -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>

View File

@@ -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">

View File

@@ -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
View 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: '不翻译'
}

View 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>

View File

@@ -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

View File

@@ -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
} }
} }