更新
This commit is contained in:
		| @@ -8,7 +8,6 @@ | |||||||
|   }, |   }, | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|     "@antv/g2plot": "^2.4.31", |     "@antv/g2plot": "^2.4.31", | ||||||
|     "@toast-ui/vue-image-editor": "^3.15.2", |  | ||||||
|     "axios": "^1.4.0", |     "axios": "^1.4.0", | ||||||
|     "core-js": "^3.8.3", |     "core-js": "^3.8.3", | ||||||
|     "dayjs": "^1.11.9", |     "dayjs": "^1.11.9", | ||||||
|   | |||||||
| @@ -33,42 +33,160 @@ function init() { | |||||||
|                 baseList.push({type: 1, index: j+1, src: obj.imageComponent.imagePathList[j]}) |                 baseList.push({type: 1, index: j+1, src: obj.imageComponent.imagePathList[j]}) | ||||||
|             } |             } | ||||||
|  |  | ||||||
|  |             var video = document.querySelector('video') | ||||||
|  |             if (video) { | ||||||
|  |                 baseList.push({type: 2, index: 1, src: video.src}) | ||||||
|  |             } | ||||||
|  |  | ||||||
|             var zip = new JSZip(); |             var zip = new JSZip(); | ||||||
|             var imgsBanner = zip.folder("轮插图"); |             var imgsBanner = zip.folder("轮播图"); | ||||||
|             var imgsDetail = zip.folder("详情图"); |             var imgsDetail = zip.folder("详情图"); | ||||||
|  |             var videos = zip.folder("视频"); | ||||||
|             for (var k = 0; k < baseList.length; k++) { |             for (var k = 0; k < baseList.length; k++) { | ||||||
|                 let type = baseList[k].type |                 let type = baseList[k].type | ||||||
|                 let index = baseList[k].index |                 let index = baseList[k].index | ||||||
|                 let image = new Image(); |                 if (type == 2) { | ||||||
|                 // 解决跨域 Canvas 污染问题 |                     let x = new XMLHttpRequest() | ||||||
|                 image.setAttribute("crossOrigin", "anonymous"); |                     x.open('GET', baseList[k].src, true) | ||||||
|                 image.onload = function () { |                     x.responseType = 'blob' | ||||||
|                   let canvas = document.createElement("canvas"); |                     x.onload = (e) => { | ||||||
|                   canvas.width = image.width; |                         downloadList.push({type: type, index: index, data: x.response}); | ||||||
|                   canvas.height = image.height; |                         if (downloadList.length === baseList.length && downloadList.length > 0) { | ||||||
|                   let context = canvas.getContext("2d"); |                             for (let l = 0; l < downloadList.length; l++) { | ||||||
|                   context.drawImage(image, 0, 0, image.width, image.height); |                                 if (downloadList[l].type == '0') { | ||||||
|                   let url = canvas.toDataURL(); // 得到图片的base64编码数据 |                                     imgsDetail.file(`详情图${downloadList[l].index}.png`, downloadList[l].data, { base64: true }); | ||||||
|                   canvas.toDataURL("image/png"); |                                 } else if (downloadList[l].type == '1') { | ||||||
|                   downloadList.push({type: type, index: index, data: url.substring(22)}); // 去掉base64编码前的     data:image/png;base64, |                                     imgsBanner.file(`轮播图${downloadList[l].index}.png`, downloadList[l].data, { base64: true }); | ||||||
|                   if (downloadList.length === baseList.length && downloadList.length > 0) { |                                 } else if (downloadList[l].type == '2') { | ||||||
|                     for (let l = 0; l < downloadList.length; l++) { |                                     videos.file(`视频.mp4`, downloadList[l].data, { Blob: true }); | ||||||
|                         if (downloadList[l].type == '0') { |                                 } | ||||||
|                             imgsDetail.file(`详情图${downloadList[l].index}.png`, downloadList[l].data, { base64: true }); |                             } | ||||||
|                         } else if (downloadList[l].type == '1') { |                             zip.generateAsync({ type: "blob" }).then(function (content) { | ||||||
|                             imgsBanner.file(`轮播图${downloadList[l].index}.png`, downloadList[l].data, { base64: true }); |                               // see FileSaver.js | ||||||
|  |                               saveAs(content, "aliexpress_" + id + ".zip"); | ||||||
|  |                             }); | ||||||
|                         } |                         } | ||||||
|                     } |                     } | ||||||
|                     zip.generateAsync({ type: "blob" }).then(function (content) { |                     x.send() | ||||||
|                       // see FileSaver.js |                 } else { | ||||||
|                       saveAs(content, "aliexpress_" + id + ".zip"); |                     let image = new Image(); | ||||||
|                     }); |                     // 解决跨域 Canvas 污染问题 | ||||||
|                   } |                     image.setAttribute("crossOrigin", "anonymous"); | ||||||
|                 }; |                     image.onload = function () { | ||||||
|                 image.src = baseList[k].src; |                       let canvas = document.createElement("canvas"); | ||||||
|  |                       canvas.width = image.width; | ||||||
|  |                       canvas.height = image.height; | ||||||
|  |                       let context = canvas.getContext("2d"); | ||||||
|  |                       context.drawImage(image, 0, 0, image.width, image.height); | ||||||
|  |                       let url = canvas.toDataURL(); // 得到图片的base64编码数据 | ||||||
|  |                       canvas.toDataURL("image/png"); | ||||||
|  |                       downloadList.push({type: type, index: index, data: url.substring(22)}); // 去掉base64编码前的     data:image/png;base64, | ||||||
|  |                       if (downloadList.length === baseList.length && downloadList.length > 0) { | ||||||
|  |                         for (let l = 0; l < downloadList.length; l++) { | ||||||
|  |                             if (downloadList[l].type == '0') { | ||||||
|  |                                 imgsDetail.file(`详情图${downloadList[l].index}.png`, downloadList[l].data, { base64: true }); | ||||||
|  |                             } else if (downloadList[l].type == '1') { | ||||||
|  |                                 imgsBanner.file(`轮播图${downloadList[l].index}.png`, downloadList[l].data, { base64: true }); | ||||||
|  |                             }  else if (downloadList[l].type == '2') { | ||||||
|  |                                 videos.file(`视频.mp4`, downloadList[l].data, { Blob: true }); | ||||||
|  |                             } | ||||||
|  |                         } | ||||||
|  |                         zip.generateAsync({ type: "blob" }).then(function (content) { | ||||||
|  |                           // see FileSaver.js | ||||||
|  |                           saveAs(content, "aliexpress_" + id + ".zip"); | ||||||
|  |                         }); | ||||||
|  |                       } | ||||||
|  |                     }; | ||||||
|  |                     image.src = baseList[k].src; | ||||||
|  |                 } | ||||||
|               } |               } | ||||||
|         }) |         }) | ||||||
|         document.body.appendChild(popup) |         document.body.appendChild(popup) | ||||||
|  |     } else if (window.location.href.startsWith('https://www.amazon.com/')) { | ||||||
|  |         var content = document.getElementById('ATFCriticalFeaturesDataContainer').innerHTML | ||||||
|  |         content = content.substring(content.indexOf('jQuery.parseJSON(')) | ||||||
|  |         content = content.substring(content.indexOf("(")) | ||||||
|  |         content = content.substring(2, content.indexOf("');")) | ||||||
|  |         let obj = JSON.parse(content) | ||||||
|  |         let colorImages = obj.colorImages | ||||||
|  |         if (colorImages) { | ||||||
|  |             const popup = document.createElement("div") | ||||||
|  |             popup.innerText = "下载图片" | ||||||
|  |             const styles = { | ||||||
|  |                 position: "fixed", | ||||||
|  |                 right: '10px', | ||||||
|  |                 top: '60px', | ||||||
|  |                 zIndex: 9999, | ||||||
|  |                 padding: "8px", | ||||||
|  |                 background: "#409EFF", | ||||||
|  |                 color: "#fff", | ||||||
|  |                 borderRadius: "8px", | ||||||
|  |                 cursor: "pointer" | ||||||
|  |             } | ||||||
|  |             for (const e in styles) { | ||||||
|  |                 popup.style[e] = styles[e] | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             popup.addEventListener('click', async () => { | ||||||
|  |                 var baseList = []; | ||||||
|  |                 var downloadList = [] | ||||||
|  |  | ||||||
|  |                 var zip = new JSZip(); | ||||||
|  |                 var imgsBanner = zip.folder("轮播图"); | ||||||
|  |                 var imgsDetail = zip.folder("详情图"); | ||||||
|  |                 // var videos = zip.folder("视频"); | ||||||
|  |  | ||||||
|  |                 for (let i in colorImages) { | ||||||
|  |                     let folderName = imgsBanner.folder(i) | ||||||
|  |                     let item1 = colorImages[i] | ||||||
|  |                     let index = 0 | ||||||
|  |                     for (let j in item1) { | ||||||
|  |                         let item2 = item1[j] | ||||||
|  |                         baseList.push({type: 1, index: ++index, src: item2.hiRes, folder: folderName}) | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 var imgObjList = document.querySelectorAll('div.aplus-v2 img') | ||||||
|  |                 for (var i = 0; i < imgObjList.length; i++) { | ||||||
|  |                     baseList.push({type: 0, index: i+1, src: imgObjList[i].getAttribute('data-src'), folder: imgsDetail}) | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 for (var k = 0; k < baseList.length; k++) { | ||||||
|  |                     let type = baseList[k].type | ||||||
|  |                     let index = baseList[k].index | ||||||
|  |                     let folder = baseList[k].folder | ||||||
|  |  | ||||||
|  |                     let image = new Image(); | ||||||
|  |                     // 解决跨域 Canvas 污染问题 | ||||||
|  |                     image.setAttribute("crossOrigin", "anonymous"); | ||||||
|  |                     image.onload = function () { | ||||||
|  |                       let canvas = document.createElement("canvas"); | ||||||
|  |                       canvas.width = image.width; | ||||||
|  |                       canvas.height = image.height; | ||||||
|  |                       let context = canvas.getContext("2d"); | ||||||
|  |                       context.drawImage(image, 0, 0, image.width, image.height); | ||||||
|  |                       let url = canvas.toDataURL(); // 得到图片的base64编码数据 | ||||||
|  |                       canvas.toDataURL("image/png"); | ||||||
|  |                       downloadList.push({type: type, index: index, folder: folder, data: url.substring(22)}); // 去掉base64编码前的     data:image/png;base64, | ||||||
|  |                       if (downloadList.length === baseList.length && downloadList.length > 0) { | ||||||
|  |                         for (let l = 0; l < downloadList.length; l++) { | ||||||
|  |                             if (downloadList[l].type == '0') { | ||||||
|  |                                 downloadList[l].folder.file(`详情图${downloadList[l].index}.png`, downloadList[l].data, { base64: true }); | ||||||
|  |                             } else if (downloadList[l].type == '1') { | ||||||
|  |                                 downloadList[l].folder.file(`轮播图${downloadList[l].index}.png`, downloadList[l].data, { base64: true }); | ||||||
|  |                             } | ||||||
|  |                         } | ||||||
|  |                         zip.generateAsync({ type: "blob" }).then(function (content) { | ||||||
|  |                           // see FileSaver.js | ||||||
|  |                           saveAs(content, "amazon.zip"); | ||||||
|  |                         }); | ||||||
|  |                       } | ||||||
|  |                     }; | ||||||
|  |                     image.src = baseList[k].src; | ||||||
|  |                 } | ||||||
|  |             }) | ||||||
|  |             document.body.appendChild(popup) | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 6.7 KiB | 
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 84 KiB | 
| @@ -16,7 +16,8 @@ | |||||||
|   "host_permissions": [ |   "host_permissions": [ | ||||||
|     "*://*.pinduoduo.com/", |     "*://*.pinduoduo.com/", | ||||||
|     "*://*.temu.com/", |     "*://*.temu.com/", | ||||||
|     "*://*.aliexpress.us/" |     "*://*.aliexpress.us/", | ||||||
|  |     "*://*.amazon.com/" | ||||||
|   ], |   ], | ||||||
|   "permissions": [ |   "permissions": [ | ||||||
|     "cookies", |     "cookies", | ||||||
| @@ -39,7 +40,8 @@ | |||||||
|   "content_scripts": [ |   "content_scripts": [ | ||||||
|     { |     { | ||||||
|       "matches": [ |       "matches": [ | ||||||
|         "*://*.aliexpress.us/item/*" |         "*://*.aliexpress.us/item/*", | ||||||
|  |         "*://*.amazon.com/*" | ||||||
|       ], |       ], | ||||||
|       "js": [ |       "js": [ | ||||||
|         "/content.js" |         "/content.js" | ||||||
| @@ -49,7 +51,7 @@ | |||||||
|   "web_accessible_resources": [ |   "web_accessible_resources": [ | ||||||
|     { |     { | ||||||
|       "resources": [ "js/download.js","js/jszip.min.js","js/FileSaver.js" ], |       "resources": [ "js/download.js","js/jszip.min.js","js/FileSaver.js" ], | ||||||
|       "matches": [ "*://*.aliexpress.us/*" ] |       "matches": [ "*://*.aliexpress.us/*", "*://*.amazon.com/*" ] | ||||||
|     } |     } | ||||||
|   ] |   ] | ||||||
| } | } | ||||||
|   | |||||||
| @@ -16,7 +16,8 @@ | |||||||
|   "host_permissions": [ |   "host_permissions": [ | ||||||
|     "*://*.pinduoduo.com/", |     "*://*.pinduoduo.com/", | ||||||
|     "*://*.temu.com/", |     "*://*.temu.com/", | ||||||
|     "*://*.aliexpress.us/" |     "*://*.aliexpress.us/", | ||||||
|  |     "*://*.amazon.com/" | ||||||
|   ], |   ], | ||||||
|   "permissions": [ |   "permissions": [ | ||||||
|     "cookies", |     "cookies", | ||||||
| @@ -39,7 +40,8 @@ | |||||||
|   "content_scripts": [ |   "content_scripts": [ | ||||||
|     { |     { | ||||||
|       "matches": [ |       "matches": [ | ||||||
|         "*://*.aliexpress.us/item/*" |         "*://*.aliexpress.us/item/*", | ||||||
|  |         "*://*.amazon.com/*" | ||||||
|       ], |       ], | ||||||
|       "js": [ |       "js": [ | ||||||
|         "/content.js" |         "/content.js" | ||||||
| @@ -49,7 +51,7 @@ | |||||||
|   "web_accessible_resources": [ |   "web_accessible_resources": [ | ||||||
|     { |     { | ||||||
|       "resources": [ "js/download.js","js/jszip.min.js","js/FileSaver.js" ], |       "resources": [ "js/download.js","js/jszip.min.js","js/FileSaver.js" ], | ||||||
|       "matches": [ "*://*.aliexpress.us/*" ] |       "matches": [ "*://*.aliexpress.us/*", "*://*.amazon.com/*" ] | ||||||
|     } |     } | ||||||
|   ] |   ] | ||||||
| } | } | ||||||
|   | |||||||
| @@ -27,6 +27,10 @@ | |||||||
|               :rules="[{ required: true, message: '请再次输入密码', trigger: 'blur' }]"> |               :rules="[{ required: true, message: '请再次输入密码', trigger: 'blur' }]"> | ||||||
|               <el-input  placeholder="请再次输入密码" type="password" v-model="form.repassword"></el-input> |               <el-input  placeholder="请再次输入密码" type="password" v-model="form.repassword"></el-input> | ||||||
|             </el-form-item> |             </el-form-item> | ||||||
|  |             <el-form-item | ||||||
|  |               prop="inviteCode"> | ||||||
|  |               <el-input  placeholder="请输入邀请码(非必填)" v-model="form.inviteCode"></el-input> | ||||||
|  |             </el-form-item> | ||||||
|             <el-form-item label="" prop="code" :rules="[{ required: true, message: '请输入验证码', trigger: 'blur' }]"> |             <el-form-item label="" prop="code" :rules="[{ required: true, message: '请输入验证码', trigger: 'blur' }]"> | ||||||
|               <div class="code-item"> |               <div class="code-item"> | ||||||
|                 <el-input style="width: 300px;" maxlength="4" placeholder="请输入验证码" v-model="form.code"></el-input> |                 <el-input style="width: 300px;" maxlength="4" placeholder="请输入验证码" v-model="form.code"></el-input> | ||||||
| @@ -56,6 +60,7 @@ | |||||||
|           password: '', |           password: '', | ||||||
|           repassword: '', |           repassword: '', | ||||||
|           code: '', |           code: '', | ||||||
|  |           inviteCode: '', | ||||||
|           phone: '' |           phone: '' | ||||||
|         }, |         }, | ||||||
|         phoneReg: (rule, value, callback) => { |         phoneReg: (rule, value, callback) => { | ||||||
|   | |||||||
| @@ -12,11 +12,11 @@ | |||||||
|           <ai-search-bar> |           <ai-search-bar> | ||||||
|             <template #left> |             <template #left> | ||||||
|               <div class="search-item"> |               <div class="search-item"> | ||||||
|                 <label style="width:110px">商品来源:</label> |                 <label style="width:80px">来源:</label> | ||||||
|                 <ai-select :selectList="$dict.getDict('copy_from')" :clearable="true" v-model="search.type" @change="search.current =1, getList()"></ai-select> |                 <ai-select :selectList="$dict.getDict('copy_from')" :clearable="true" v-model="search.type" @change="search.current =1, getList()"></ai-select> | ||||||
|               </div> |               </div> | ||||||
|               <div class="search-item"> |               <div class="search-item"> | ||||||
|                 <label style="width:110px">店铺:</label> |                 <label style="width:80px">店铺:</label> | ||||||
|                 <el-select v-model="search.mallId" :clearable="true" @change="search.current =1, getList()" placeholder="请选择店铺" size="small"> |                 <el-select v-model="search.mallId" :clearable="true" @change="search.current =1, getList()" placeholder="请选择店铺" size="small"> | ||||||
|                   <el-option |                   <el-option | ||||||
|                     v-for="item in $store.state.mallList" |                     v-for="item in $store.state.mallList" | ||||||
| @@ -43,6 +43,11 @@ | |||||||
|             style="margin-top: 8px;" |             style="margin-top: 8px;" | ||||||
|             :current.sync="search.current" :size.sync="search.size" |             :current.sync="search.current" :size.sync="search.size" | ||||||
|             @getList="getList"> |             @getList="getList"> | ||||||
|  |             <el-table-column slot="url" label="商品地址" align="left"> | ||||||
|  |               <template slot-scope="scope"> | ||||||
|  |                 <div><a :href="scope.row.url" target="_blank">{{ scope.row.url }}</a></div> | ||||||
|  |               </template> | ||||||
|  |             </el-table-column> | ||||||
|           </ai-table> |           </ai-table> | ||||||
|         </div> |         </div> | ||||||
|       </template> |       </template> | ||||||
| @@ -56,7 +61,7 @@ | |||||||
|       customFooter |       customFooter | ||||||
|       @close="handleClose"> |       @close="handleClose"> | ||||||
|       <el-form class="ai-form" :model="form" label-width="140px" ref="form"> |       <el-form class="ai-form" :model="form" label-width="140px" ref="form"> | ||||||
|         <el-form-item label="商品来源:" style="width: 100%;" prop="type" :rules="[{ required: true, message: '请选择商品来源', trigger: 'blur' }]"> |         <el-form-item label="来源:" style="width: 100%;" prop="type" :rules="[{ required: true, message: '请选择来源', trigger: 'blur' }]"> | ||||||
|           <el-radio-group v-model="form.type" size="medium"> |           <el-radio-group v-model="form.type" size="medium"> | ||||||
|             <el-radio :label="1">TEMU</el-radio> |             <el-radio :label="1">TEMU</el-radio> | ||||||
|             <!--<el-radio :label="2">速卖通</el-radio>--> |             <!--<el-radio :label="2">速卖通</el-radio>--> | ||||||
| @@ -89,163 +94,8 @@ | |||||||
|  |  | ||||||
| <script> | <script> | ||||||
| import {sendChromeAPIMessage, sendChromeWebReqMessage} from '@/api/chromeApi' | import {sendChromeAPIMessage, sendChromeWebReqMessage} from '@/api/chromeApi' | ||||||
| import 'tui-image-editor/dist/tui-image-editor.css' |  | ||||||
| import 'tui-color-picker/dist/tui-color-picker.css' |  | ||||||
| import { Message } from 'element-ui' | import { Message } from 'element-ui' | ||||||
|  |  | ||||||
| const ImageEditor = require('tui-image-editor') |  | ||||||
|   const localeZh = { |  | ||||||
|     // override default English locale to your custom |  | ||||||
|     Crop: '裁剪', |  | ||||||
|     ZoomIn: '放大', |  | ||||||
|     ZoomOut: '缩小', |  | ||||||
|     Hand: '拖拽', |  | ||||||
|     History: '历史记录', |  | ||||||
|     DeleteAll: '全部删除', |  | ||||||
|     Delete: '删除', |  | ||||||
|     Undo: '撤销', |  | ||||||
|     Redo: '反撤销', |  | ||||||
|     Reset: '重置', |  | ||||||
|     Flip: '镜像', |  | ||||||
|     Rotate: '旋转', |  | ||||||
|     Draw: '画', |  | ||||||
|     Shape: '形状标注', |  | ||||||
|     Icon: '图标标注', |  | ||||||
|     Text: '文字标注', |  | ||||||
|     Mask: '遮罩', |  | ||||||
|     Filter: '滤镜', |  | ||||||
|     Bold: '加粗', |  | ||||||
|     Italic: '斜体', |  | ||||||
|     Underline: '下划线', |  | ||||||
|     Left: '左对齐', |  | ||||||
|     Center: '居中', |  | ||||||
|     Right: '右对齐', |  | ||||||
|     Color: '颜色', |  | ||||||
|     'Text size': '字体大小', |  | ||||||
|     Custom: '自定义', |  | ||||||
|     Square: '正方形', |  | ||||||
|     Apply: '应用', |  | ||||||
|     Cancel: '取消', |  | ||||||
|     'Flip X': 'X 轴', |  | ||||||
|     'Flip Y': 'Y 轴', |  | ||||||
|     Range: '区间', |  | ||||||
|     Stroke: '描边', |  | ||||||
|     Fill: '填充', |  | ||||||
|     Circle: '圆', |  | ||||||
|     Triangle: '三角', |  | ||||||
|     Rectangle: '矩形', |  | ||||||
|     Free: '曲线', |  | ||||||
|     Straight: '直线', |  | ||||||
|     Arrow: '箭头', |  | ||||||
|     'Arrow-2': '箭头2', |  | ||||||
|     'Arrow-3': '箭头3', |  | ||||||
|     'Star-1': '星星1', |  | ||||||
|     'Star-2': '星星2', |  | ||||||
|     Polygon: '多边形', |  | ||||||
|     Location: '定位', |  | ||||||
|     Heart: '心形', |  | ||||||
|     Bubble: '气泡', |  | ||||||
|     'Custom icon': '自定义图标', |  | ||||||
|     'Load Mask Image': '加载蒙层图片', |  | ||||||
|     Grayscale: '灰度', |  | ||||||
|     Blur: '模糊', |  | ||||||
|     Sharpen: '锐化', |  | ||||||
|     Emboss: '浮雕', |  | ||||||
|     'Remove White': '除去白色', |  | ||||||
|     Distance: '距离', |  | ||||||
|     Brightness: '亮度', |  | ||||||
|     Noise: '噪音', |  | ||||||
|     'Color Filter': '彩色滤镜', |  | ||||||
|     Sepia: '棕色', |  | ||||||
|     Sepia2: '棕色2', |  | ||||||
|     Invert: '负片', |  | ||||||
|     Pixelate: '像素化', |  | ||||||
|     Threshold: '阈值', |  | ||||||
|     Tint: '色调', |  | ||||||
|     Multiply: '正片叠底', |  | ||||||
|     Blend: '混合色' |  | ||||||
|     // etc... |  | ||||||
|   } |  | ||||||
|   const customTheme = { |  | ||||||
|     // image 左上角度图片 |  | ||||||
|     'common.bi.image': '', // 在这里换上你喜欢的logo图片 |  | ||||||
|     'common.bisize.width': '0px', |  | ||||||
|     'common.bisize.height': '0px', |  | ||||||
|     'common.backgroundImage': 'none', |  | ||||||
|     'common.backgroundColor': '#f3f4f6', |  | ||||||
|     'common.border': '1px solid #444', |  | ||||||
|   |  | ||||||
|     // header |  | ||||||
|     'header.backgroundImage': 'none', |  | ||||||
|     'header.backgroundColor': '#f3f4f6', |  | ||||||
|     'header.border': '0px', |  | ||||||
|     'header.display': 'none', |  | ||||||
|   |  | ||||||
|     // load button |  | ||||||
|     'loadButton.backgroundColor': '#fff', |  | ||||||
|     'loadButton.border': '1px solid #ddd', |  | ||||||
|     'loadButton.color': '#222', |  | ||||||
|     'loadButton.fontFamily': 'NotoSans, sans-serif', |  | ||||||
|     'loadButton.fontSize': '12px', |  | ||||||
|     'loadButton.display': 'none', // 可以直接隐藏掉 |  | ||||||
|   |  | ||||||
|     // download button |  | ||||||
|     'downloadButton.backgroundColor': '#fdba3b', |  | ||||||
|     'downloadButton.border': '1px solid #fdba3b', |  | ||||||
|     'downloadButton.color': '#fff', |  | ||||||
|     'downloadButton.fontFamily': 'NotoSans, sans-serif', |  | ||||||
|     'downloadButton.fontSize': '12px', |  | ||||||
|     'downloadButton.display': 'none', // 可以直接隐藏掉 |  | ||||||
|   |  | ||||||
|     // icons default |  | ||||||
|     'menu.normalIcon.color': '#8a8a8a', |  | ||||||
|     'menu.activeIcon.color': '#555555', |  | ||||||
|     'menu.disabledIcon.color': '#434343', |  | ||||||
|     'menu.hoverIcon.color': '#e9e9e9', |  | ||||||
|     'submenu.normalIcon.color': '#8a8a8a', |  | ||||||
|     'submenu.activeIcon.color': '#e9e9e9', |  | ||||||
|   |  | ||||||
|     'menu.iconSize.width': '24px', |  | ||||||
|     'menu.iconSize.height': '24px', |  | ||||||
|     'submenu.iconSize.width': '32px', |  | ||||||
|     'submenu.iconSize.height': '32px', |  | ||||||
|   |  | ||||||
|     // submenu primary color |  | ||||||
|     'submenu.backgroundColor': '#1e1e1e', |  | ||||||
|     'submenu.partition.color': '#858585', |  | ||||||
|   |  | ||||||
|     // submenu labels |  | ||||||
|     'submenu.normalLabel.color': '#858585', |  | ||||||
|     'submenu.normalLabel.fontWeight': 'lighter', |  | ||||||
|     'submenu.activeLabel.color': '#fff', |  | ||||||
|     'submenu.activeLabel.fontWeight': 'lighter', |  | ||||||
|   |  | ||||||
|     // checkbox style |  | ||||||
|     'checkbox.border': '1px solid #ccc', |  | ||||||
|     'checkbox.backgroundColor': '#fff', |  | ||||||
|   |  | ||||||
|     // rango style |  | ||||||
|     'range.pointer.color': '#fff', |  | ||||||
|     'range.bar.color': '#666', |  | ||||||
|     'range.subbar.color': '#d1d1d1', |  | ||||||
|   |  | ||||||
|     'range.disabledPointer.color': '#414141', |  | ||||||
|     'range.disabledBar.color': '#282828', |  | ||||||
|     'range.disabledSubbar.color': '#414141', |  | ||||||
|   |  | ||||||
|     'range.value.color': '#fff', |  | ||||||
|     'range.value.fontWeight': 'lighter', |  | ||||||
|     'range.value.fontSize': '11px', |  | ||||||
|     'range.value.border': '1px solid #353535', |  | ||||||
|     'range.value.backgroundColor': '#151515', |  | ||||||
|     'range.title.color': '#fff', |  | ||||||
|     'range.title.fontWeight': 'lighter', |  | ||||||
|   |  | ||||||
|     // colorpicker style |  | ||||||
|     'colorpicker.button.border': '1px solid #1e1e1e', |  | ||||||
|     'colorpicker.title.color': '#fff' |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   export default { |   export default { | ||||||
|     name: 'NiubiCopy', |     name: 'NiubiCopy', | ||||||
|  |  | ||||||
| @@ -281,7 +131,7 @@ const ImageEditor = require('tui-image-editor') | |||||||
|           } |           } | ||||||
|         }, |         }, | ||||||
|         colConfigs: [ |         colConfigs: [ | ||||||
|           { prop: 'url', label: '商品地址', align: 'left' }, |           { slot: 'url', label: '商品地址', align: 'left' }, | ||||||
|           { prop: 'type', label: '来源', width: '100px', align: 'left',format: v => this.$dict.getLabel('copy_from', v), }, |           { prop: 'type', label: '来源', width: '100px', align: 'left',format: v => this.$dict.getLabel('copy_from', v), }, | ||||||
|           { prop: 'mallName', label: '店铺名称', width: '200px', align: 'left'}, |           { prop: 'mallName', label: '店铺名称', width: '200px', align: 'left'}, | ||||||
|           { prop: 'createTime', label: '复制时间', width: '180px', fixed: 'right'} |           { prop: 'createTime', label: '复制时间', width: '180px', fixed: 'right'} | ||||||
| @@ -331,96 +181,95 @@ const ImageEditor = require('tui-image-editor') | |||||||
|       async addToDraft() { |       async addToDraft() { | ||||||
|         this.$refs.form.validate((valid) => { |         this.$refs.form.validate((valid) => { | ||||||
|           if (valid) { |           if (valid) { | ||||||
|             let source |             this.$http.post('/api/copyProduct/check',null, {params: {type: 0}}).then(res => { | ||||||
|             if (this.form.type == '1') { |               if (res.code == 0) { | ||||||
|               source = 'temu' |                 let source | ||||||
|             } else if (this.form.type == '2') { |                 if (this.form.type == '1') { | ||||||
|               source = 'aliexpress' |                   source = 'temu' | ||||||
|             } |                 } else if (this.form.type == '2') { | ||||||
|             sendChromeWebReqMessage({ |                   source = 'aliexpress' | ||||||
|               type: source, |  | ||||||
|               url: this.form.url, |  | ||||||
|             }).then((res) => { |  | ||||||
|               if (this.form.type == '1') { |  | ||||||
|                 if (res.indexOf("rawData") == -1) { |  | ||||||
|                   Message.error("请检查地址是否正确,或者“TEMU”网站是否出现图形验证码") |  | ||||||
|                   return |  | ||||||
|                 } |                 } | ||||||
|                 let str = res.substring(res.indexOf("rawData")) |  | ||||||
|                 str = str.substring(0, str.indexOf("<\/script>")) |  | ||||||
|                 str = str.substring(str.indexOf("{")) |  | ||||||
|                 str = str.substring(0, str.lastIndexOf("}")) |  | ||||||
|                 str = str + "}" |  | ||||||
|  |  | ||||||
|                 let goodsObj = JSON.parse(str) |  | ||||||
|                 this.goods = goodsObj.store.goods |  | ||||||
|                 this.sku = goodsObj.store.sku |  | ||||||
|                 this.productDetail = goodsObj.store.productDetail |  | ||||||
|  |  | ||||||
|                 let specIds = [] |  | ||||||
|                 this.sku.forEach(item => { |  | ||||||
|                   item.specs.forEach(item1 => { |  | ||||||
|                     let flag = false |  | ||||||
|                     specIds.forEach(item2 => { |  | ||||||
|                       if (item2.specValue == item1.specValue) { |  | ||||||
|                         flag = true |  | ||||||
|                       } |  | ||||||
|                     }) |  | ||||||
|                     if (!flag) { |  | ||||||
|                       specIds.push({specKeyId: item1.specKeyId, specValue: item1.specValue}) |  | ||||||
|                     } |  | ||||||
|                   }) |  | ||||||
|                 }) |  | ||||||
|  |  | ||||||
|                 Promise.all(specIds.map(item => this.getSpecId(item).then(res => { |  | ||||||
|                   this.sku.forEach(item1 => { |  | ||||||
|                     item1.specs.forEach(item2 => { |  | ||||||
|                       if (item2.specValue == item.specValue) { |  | ||||||
|                         item2.specValueId = res.result.specId |  | ||||||
|                       } |  | ||||||
|                     }) |  | ||||||
|                   }) |  | ||||||
|                   return 0 |  | ||||||
|                 }))).then(() => { |  | ||||||
|                   this.$http.post('/api/copyProduct/translate',{type: 1, goods: this.goods, sku: this.sku, productDetail: this.productDetail}).then(res => { |  | ||||||
|                     if (res.code == 0) { |  | ||||||
|                       this.createDraft(res.data) |  | ||||||
|                     } |  | ||||||
|                   }) |  | ||||||
|                 }) |  | ||||||
|               } else if (this.form.type == '2') { |  | ||||||
|                 if (res.indexOf("runParams") == -1) { |  | ||||||
|                   Message.error("请检查地址是否正确,或者“速卖通”网站是否出现滑动条") |  | ||||||
|                   return |  | ||||||
|                 } |  | ||||||
|                 let str = res.substring(res.indexOf("runParams")) |  | ||||||
|                 str = str.substring(0, str.indexOf("<\/script>")) |  | ||||||
|                 str = str.substring(str.indexOf("{")) |  | ||||||
|                 str = str.substring(0, str.lastIndexOf("}")) |  | ||||||
|                 str = str.substring(str.indexOf('data')) |  | ||||||
|                 str = str.substring(5) |  | ||||||
|  |  | ||||||
|                 let obj = JSON.parse(str) |  | ||||||
|  |  | ||||||
|                 /*this.$http.post('/api/copyProduct/translate',{type: 2, productName: obj.productInfoComponent.subject, skuObj: obj.skuComponent, productDetail: this.productDetail}).then(res => { |  | ||||||
|                   if (res.code == 0) { |  | ||||||
|                     this.createDraft(res.data) |  | ||||||
|                   } |  | ||||||
|                 })*/ |  | ||||||
|  |  | ||||||
|                 sendChromeWebReqMessage({ |                 sendChromeWebReqMessage({ | ||||||
|                   type: source, |                   type: source, | ||||||
|                   url: obj.productDescComponent.descriptionUrl, |                   url: this.form.url, | ||||||
|                 }).then((res1) => { |                 }).then((res) => { | ||||||
|                   res1 = res1.substring(0, res1.indexOf("<script>")) |                   if (this.form.type == '1') { | ||||||
|                   let str = res1.replace(/<img[^>]+src="([^">]+)"[^>]+>/g, '$1\n').replace(/<.*?>/g, '[||]') |                     if (res.indexOf("rawData") == -1) { | ||||||
|                   let arr = str.split('[||]') |                       Message.error("请检查地址是否正确,或者“TEMU”网站是否出现图形验证码") | ||||||
|                   for (let i = 0; i < arr.length; i++) { |                       return | ||||||
|                     console.log(arr[i]) |                     } | ||||||
|  |                     let str = res.substring(res.indexOf("rawData")) | ||||||
|  |                     str = str.substring(0, str.indexOf("<\/script>")) | ||||||
|  |                     str = str.substring(str.indexOf("{")) | ||||||
|  |                     str = str.substring(0, str.lastIndexOf("}")) | ||||||
|  |                     str = str + "}" | ||||||
|  |  | ||||||
|  |                     let goodsObj = JSON.parse(str) | ||||||
|  |                     this.goods = goodsObj.store.goods | ||||||
|  |                     this.sku = goodsObj.store.sku | ||||||
|  |                     this.productDetail = goodsObj.store.productDetail | ||||||
|  |  | ||||||
|  |                     let specIds = [] | ||||||
|  |                     this.sku.forEach(item => { | ||||||
|  |                       item.specs.forEach(item1 => { | ||||||
|  |                         let flag = false | ||||||
|  |                         specIds.forEach(item2 => { | ||||||
|  |                           if (item2.specValue == item1.specValue) { | ||||||
|  |                             flag = true | ||||||
|  |                           } | ||||||
|  |                         }) | ||||||
|  |                         if (!flag) { | ||||||
|  |                           specIds.push({specKeyId: item1.specKeyId, specValue: item1.specValue}) | ||||||
|  |                         } | ||||||
|  |                       }) | ||||||
|  |                     }) | ||||||
|  |  | ||||||
|  |                     Promise.all(specIds.map(item => this.getSpecId(item).then(res => { | ||||||
|  |                       this.sku.forEach(item1 => { | ||||||
|  |                         item1.specs.forEach(item2 => { | ||||||
|  |                           if (item2.specValue == item.specValue) { | ||||||
|  |                             item2.specValueId = res.result.specId | ||||||
|  |                           } | ||||||
|  |                         }) | ||||||
|  |                       }) | ||||||
|  |                       return 0 | ||||||
|  |                     }))).then(() => { | ||||||
|  |                       this.$http.post('/api/copyProduct/translate',{type: 1, goods: this.goods, sku: this.sku, productDetail: this.productDetail}).then(res => { | ||||||
|  |                         if (res.code == 0) { | ||||||
|  |                           this.createDraft(res.data) | ||||||
|  |                         } | ||||||
|  |                       }) | ||||||
|  |                     }) | ||||||
|  |                   } else if (this.form.type == '2') { | ||||||
|  |                     /*if (res.indexOf("runParams") == -1) { | ||||||
|  |                       Message.error("请检查地址是否正确,或者“速卖通”网站是否出现滑动条") | ||||||
|  |                       return | ||||||
|  |                     } | ||||||
|  |                     let str = res.substring(res.indexOf("runParams")) | ||||||
|  |                     str = str.substring(0, str.indexOf("<\/script>")) | ||||||
|  |                     str = str.substring(str.indexOf("{")) | ||||||
|  |                     str = str.substring(0, str.lastIndexOf("}")) | ||||||
|  |                     str = str.substring(str.indexOf('data')) | ||||||
|  |                     str = str.substring(5) | ||||||
|  |  | ||||||
|  |                     let obj = JSON.parse(str) | ||||||
|  |  | ||||||
|  |                     sendChromeWebReqMessage({ | ||||||
|  |                       type: source, | ||||||
|  |                       url: obj.productDescComponent.descriptionUrl, | ||||||
|  |                     }).then((res1) => { | ||||||
|  |                       res1 = res1.substring(0, res1.indexOf("<script>")) | ||||||
|  |                       let str = res1.replace(/<img[^>]+src="([^">]+)"[^>]+>/g, '$1\n').replace(/<.*?>/g, '[||]') | ||||||
|  |                       let arr = str.split('[||]') | ||||||
|  |                       for (let i = 0; i < arr.length; i++) { | ||||||
|  |                         console.log(arr[i]) | ||||||
|  |                       } | ||||||
|  |                     })*/ | ||||||
|                   } |                   } | ||||||
|                 }) |                 }) | ||||||
|               } |               } | ||||||
|             }) |             }) | ||||||
|  |              | ||||||
|           } |           } | ||||||
|         }) |         }) | ||||||
|       }, |       }, | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user