2.3.0
This commit is contained in:
		| @@ -14,31 +14,11 @@ | ||||
|                     "header": "Referer", | ||||
|                     "operation": "set", | ||||
|                     "value": "https://kuajing.pinduoduo.com/main/order-manage" | ||||
|                 }, | ||||
|                 { | ||||
|                     "header": "Sec-Fetch-Site", | ||||
|                     "operation": "set", | ||||
|                     "value": "same-origin" | ||||
|                 }, | ||||
|                 { | ||||
|                     "header": "Sec-Ch-Ua", | ||||
|                     "operation": "set", | ||||
|                     "value": "\"Not/A)Brand\";v=\"99\", \"Google Chrome\";v=\"115\", \"Chromium\";v=\"115\"" | ||||
|                 }, | ||||
|                 { | ||||
|                     "header": "Sec-Ch-Ua-Mobile", | ||||
|                     "operation": "set", | ||||
|                     "value": "?0" | ||||
|                 }, | ||||
|                 { | ||||
|                     "header": "Sec-Ch-Ua-Platform", | ||||
|                     "operation": "set", | ||||
|                     "value": "Windows" | ||||
|                 } | ||||
|             ] | ||||
|         }, | ||||
|         "condition": { | ||||
|             "urlFilter": "joinDeliveryGoodsOrderPlatform" | ||||
|             "urlFilter": "||kuajing.pinduoduo.com" | ||||
|         } | ||||
|     } | ||||
| ] | ||||
| @@ -47,6 +47,8 @@ chrome.action.onClicked.addListener(function () { | ||||
| }); | ||||
|  | ||||
| chrome.webRequest.onSendHeaders.addListener(details => { | ||||
|   console.log(11111) | ||||
|   console.log(details.url) | ||||
|   if (details.url && (details.url.indexOf('joinDeliveryGoodsOrderPlatform')  != -1)) { | ||||
|     details.requestHeaders.push({ | ||||
|       name: 'Referer', | ||||
| @@ -58,6 +60,19 @@ chrome.webRequest.onSendHeaders.addListener(details => { | ||||
|         break; | ||||
|       } | ||||
|     } | ||||
|   } else if (details.url && (details.url.indexOf('mms/userInfo')  != -1)) { | ||||
|     console.log(3413243243) | ||||
|     details.requestHeaders.push({ | ||||
|       name: 'Referer', | ||||
|       value: 'https://kuajing.pinduoduo.com/main/order-manage' | ||||
|     }) | ||||
|     for (let i = 0 ; i < details.requestHeaders.length; i++) { | ||||
|       if (details.requestHeaders[i].name == 'Origin') { | ||||
|         console.log(95459745974) | ||||
|         details.requestHeaders[i].value = 'https://kuajing.pinduoduo.com' | ||||
|         break; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| }, | ||||
| {urls: ["<all_urls>"]},["requestHeaders", "extraHeaders"]); | ||||
|   | ||||
| @@ -2,7 +2,7 @@ | ||||
|   "manifest_version": 3, | ||||
|   "name": "TEMU助手", | ||||
|   "description": "TEMU助手 - 自动化提高生产效率", | ||||
|   "version": "2.2.4", | ||||
|   "version": "2.3.0", | ||||
|   "background": { | ||||
|     "service_worker": "/background.js" | ||||
|   }, | ||||
| @@ -27,6 +27,13 @@ | ||||
|     "declarativeNetRequestFeedback", | ||||
|     "activeTab" | ||||
|   ], | ||||
|   "declarative_net_request": { | ||||
|     "rule_resources": [{ | ||||
|       "id": "1", | ||||
|       "enabled": true, | ||||
|       "path": "rules_1.json" | ||||
|     }] | ||||
|   }, | ||||
|   "content_scripts": [ | ||||
|     { | ||||
|       "matches": [ | ||||
|   | ||||
| @@ -46,6 +46,11 @@ const router = new VueRouter({ | ||||
|           name: 'copyProduct', | ||||
|           component: () => import('../view/product/CopyProduct.vue') | ||||
|         }, | ||||
|         { | ||||
|           path: 'reducePrice', | ||||
|           name: 'reducePrice', | ||||
|           component: () => import('../view/product/ReducePrice.vue') | ||||
|         }, | ||||
|  | ||||
|         { | ||||
|           path: 'message', | ||||
|   | ||||
| @@ -56,6 +56,7 @@ | ||||
|               <span slot="title">商品管理</span> | ||||
|             </template> | ||||
|             <el-menu-item index="/copyProduct">商品复制</el-menu-item> | ||||
|             <el-menu-item index="/reducePrice">商品调价</el-menu-item> | ||||
|           </el-submenu> | ||||
|  | ||||
|           <el-menu-item index="/saleData"> | ||||
|   | ||||
							
								
								
									
										395
									
								
								src/view/product/ReducePrice.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										395
									
								
								src/view/product/ReducePrice.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,395 @@ | ||||
| <template> | ||||
|   <div> | ||||
|     <ai-list class="list"> | ||||
|       <ai-title | ||||
|         slot="title" | ||||
|         title="商品模板" | ||||
|         tips="请先在当前浏览器登录“拼多多跨境卖家中心”,期间保持登录状态" | ||||
|         isShowBottomBorder> | ||||
|       </ai-title> | ||||
|       <template slot="content"> | ||||
|         <div class="content"> | ||||
|           <ai-search-bar> | ||||
|             <template #left> | ||||
|               <el-button type="button" :icon="'el-icon-delete'" :class="'el-button el-button--primary'" @click="remove()">删除</el-button> | ||||
|               <el-button v-if="$store.state.mallName" type="button" :class="'el-button el-button--primary'" @click="toAddTemplate()">添加商品模板</el-button> | ||||
|               <el-button v-if="$store.state.mallName" type="button" :class="'el-button el-button--primary'" @click="beforeAddToDraft">添加到草稿箱</el-button> | ||||
|             </template> | ||||
|             <template #right> | ||||
|               <el-button size="small" circle icon="el-icon-refresh-right" @click="getList()"></el-button> | ||||
|             </template> | ||||
|           </ai-search-bar> | ||||
|           <ai-table | ||||
|             :tableData="tableData" | ||||
|             :col-configs="colConfigs" | ||||
|             :total="total" | ||||
|             style="margin-top: 8px;" | ||||
|             :current.sync="search.current" :size.sync="search.size" | ||||
|             @selection-change="handleSelectionChange" | ||||
|             @getList="getList"> | ||||
|           </ai-table> | ||||
|         </div> | ||||
|       </template> | ||||
|     </ai-list> | ||||
|  | ||||
|     <el-dialog | ||||
|       title="商品列表" | ||||
|       :visible.sync="dlgShow" | ||||
|       :close-on-click-modal="false" | ||||
|       width="80%" | ||||
|       :before-close="handleClose"> | ||||
|       <ai-list class="list"> | ||||
|         <template slot="content"> | ||||
|           <div class="content"> | ||||
|             <ai-search-bar> | ||||
|               <template #left> | ||||
|                 <div class="search-item"> | ||||
|                   <label style="width:90px">店铺:</label> | ||||
|                   <el-select v-model="productPage.mallId" @change="productTableData = [], productPage.total = 0, productPage.page =1, getProductList()" placeholder="请选择"> | ||||
|                     <el-option | ||||
|                       v-for="item in $store.state.mallList" | ||||
|                       :key="item.mallId" | ||||
|                       :label="item.mallName" | ||||
|                       :value="item.mallId"> | ||||
|                     </el-option> | ||||
|                   </el-select> | ||||
|                 </div> | ||||
|                 <div class="search-item"> | ||||
|                   <label style="width:90px">SKC:</label> | ||||
|                   <el-input size="small" placeholder="请输入SKC,多个用,隔开" v-model="productPage.productSkcIds" @keyup.enter.native="productPage.page =1, getProductList()"></el-input> | ||||
|                 </div> | ||||
|                 <div class="search-item"> | ||||
|                   <label style="width:90px">商品名称:</label> | ||||
|                   <el-input size="small" placeholder="请输入商品名称" v-model="productPage.productName" @keyup.enter.native="productPage.page =1, getProductList()"></el-input> | ||||
|                 </div> | ||||
|               </template> | ||||
|               <template #right> | ||||
|                 <el-button @click="productPage= { | ||||
|                       page: 1, | ||||
|                       pageSize: 10, | ||||
|                       productName: '', | ||||
|                       productSkcIds: '' | ||||
|                     }, getProductList()">重置</el-button> | ||||
|                 <el-button type="primary" @click="search.page =1, getProductList()">查询</el-button> | ||||
|               </template> | ||||
|             </ai-search-bar> | ||||
|             <ai-table | ||||
|               :tableData="productTableData" | ||||
|               :col-configs="productColConfigs" | ||||
|               :total="productPage.total" | ||||
|               :current.sync="productPage.page" :size.sync="productPage.pageSize" | ||||
|               style="margin-top: 8px;" | ||||
|               @selection-change="productHandleSelectionChange" | ||||
|               @getList="getProductList"> | ||||
|             </ai-table> | ||||
|           </div> | ||||
|         </template> | ||||
|       </ai-list> | ||||
|       <span slot="footer" class="dialog-footer"> | ||||
|         <el-button @click="dlgShow = false">取 消</el-button> | ||||
|         <el-button type="primary" @click="saveProduct">添加到模板</el-button> | ||||
|       </span> | ||||
|     </el-dialog> | ||||
|  | ||||
|     <ai-dialog | ||||
|       title="请选择店铺" | ||||
|       :visible.sync="mallDlgShow" | ||||
|       :close-on-click-modal="false" | ||||
|       width="790px" | ||||
|       customFooter | ||||
|       @close="handleClose"> | ||||
|       <el-form class="ai-form" :model="form" label-width="120px" ref="form"> | ||||
|         <el-form-item label="店铺" style="width: 100%;" prop="targetMallId" :rules="[{ required: true, message: '请选择店铺', trigger: 'blur' }]"> | ||||
|           <el-select style="width: 380px" v-model="form.targetMallId" placeholder="请选择"> | ||||
|             <el-option | ||||
|               v-for="item in $store.state.mallList" | ||||
|               :key="item.mallId" | ||||
|               :label="item.mallName" | ||||
|               :value="item.mallId"> | ||||
|             </el-option> | ||||
|           </el-select> | ||||
|         </el-form-item> | ||||
|         <el-form-item label="商品分类" style="width: 100%;" prop="targetCatId" :rules="[{ required: true, message: '请选择商品分类', trigger: 'blur' }]"> | ||||
|           <el-cascader style="width: 380px" v-model="form.targetCatId" :props="props"></el-cascader> | ||||
|         </el-form-item> | ||||
|       </el-form> | ||||
|       <div class="dialog-footer" slot="footer"> | ||||
|         <el-button @click="mallDlgShow = false">取 消</el-button> | ||||
|         <el-button type="primary" @click="addToDraft">确定</el-button> | ||||
|       </div> | ||||
|     </ai-dialog> | ||||
|   </div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import {sendChromeAPIMessage} from '@/api/chromeApi' | ||||
| import {timestampToTime} from '@/utils/date' | ||||
| import {transform} from '@/utils/product' | ||||
| import { Message } from 'element-ui' | ||||
|  | ||||
|   export default { | ||||
|     name: 'ReducePrice', | ||||
|  | ||||
|     data () { | ||||
|       return { | ||||
|         search: { | ||||
|           current: 1, | ||||
|           size: 10, | ||||
|           productName: '', | ||||
|           mallName: '', | ||||
|           startDate: '', | ||||
|           endDate: '' | ||||
|         }, | ||||
|         props: { | ||||
|           value: 'catId', | ||||
|           label: 'catName', | ||||
|           lazy: true, | ||||
|           lazyLoad (node, resolve) { | ||||
|             sendChromeAPIMessage({ | ||||
|               url: 'bg-anniston-mms/category/children/list', | ||||
|               needMallId: true, | ||||
|               data: { | ||||
|                 parentCatId: node.value || '' | ||||
|               } | ||||
|             }).then(res => { | ||||
|               if (res.errorCode === 1000000) { | ||||
|                 resolve(res.result.categoryNodeVOS.map(v => { | ||||
|                   return { | ||||
|                     ...v, | ||||
|                     leaf: v.isLeaf | ||||
|                   } | ||||
|                 })) | ||||
|               } | ||||
|             }) | ||||
|           } | ||||
|         }, | ||||
|         colConfigs: [ | ||||
|           { type: "selection", width: '70px', align: 'left', fixed: 'left'}, | ||||
|           { prop: 'productSpu', label: 'SPU', align: 'left' }, | ||||
|           { prop: 'productName', label: '商品名称', align: 'left' }, | ||||
|           { prop: 'mallName', label: '来源店铺', align: 'left'}, | ||||
|           { prop: 'createTime', label: '添加时间', width: '180px', fixed: 'right'} | ||||
|         ], | ||||
|         tableData: [], | ||||
|         total: 0, | ||||
|         ids: [], | ||||
|  | ||||
|         dlgShow: false, | ||||
|         productTableData: [], | ||||
|         productPage: {page: 1, pageSize: 10, mallId: '', productName: '', productSkcIds: '', total: 0}, | ||||
|         productColConfigs: [ | ||||
|           { type: "selection", width: '70px', align: 'left', fixed: 'left'}, | ||||
|           { prop: 'productSpu', label: 'SPU ID', align: 'left' }, | ||||
|           { prop: 'productSkc', label: 'SKC ID', align: 'left' }, | ||||
|           { prop: 'productName', label: '商品名称', align: 'left' }, | ||||
|           { prop: 'createTime', label: '创建时间', align: 'left' } | ||||
|         ], | ||||
|  | ||||
|         mallDlgShow: false, | ||||
|         productIds: [], | ||||
|         form: { | ||||
|           targetMallId: '', | ||||
|           targetCatId: [] | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|  | ||||
|     created () { | ||||
|       this.getList() | ||||
|       if (this.$store.state.mallList.length > 0) { | ||||
|         this.productPage.mallId = this.$store.state.mallList[0].mallId | ||||
|       } | ||||
|     }, | ||||
|  | ||||
|     methods: { | ||||
|       getList () { | ||||
|         this.$http.post('/api/product/myPage',null,{ | ||||
|             params: { | ||||
|                 ...this.search | ||||
|             } | ||||
|         }).then(res => { | ||||
|             this.tableData = res.data.records | ||||
|             this.total = res.data.total | ||||
|         }) | ||||
|       }, | ||||
|       remove () { | ||||
|         if (this.ids.length <= 0) { | ||||
|           alert('请选择要删除的商品'); | ||||
|           return; | ||||
|         } | ||||
|         this.$confirm('确定要删除?', '温馨提示', { | ||||
|           type: 'warning' | ||||
|         }).then(() => { | ||||
|           this.$http.post('/api/product/delByIds',this.ids | ||||
|           ).then(res => { | ||||
|             if (res.code == 0) { | ||||
|               this.$message.success('删除成功!') | ||||
|               this.getList() | ||||
|             } | ||||
|           }) | ||||
|         }) | ||||
|       }, | ||||
|       handleSelectionChange(val) { | ||||
|         this.ids = []; | ||||
|         val.forEach(e => { | ||||
|           this.ids.push(e.id); | ||||
|         }); | ||||
|       }, | ||||
|  | ||||
|       // 添加模板 | ||||
|       handleClose() { | ||||
|         this.productTableData = [] | ||||
|         this.productPage = {page: 1, pageSize: 10, total: 0} | ||||
|         this.dlgShow = false | ||||
|       }, | ||||
|       toAddTemplate() { | ||||
|         this.$http.post('/api/malluser/info').then(res => { | ||||
|           if (res.code == 0) { | ||||
|             this.$store.commit('setUserInfo', res.data) | ||||
|             if (res.data.flag != 1) { | ||||
|               Message.error('您的账号未激活或已失效,请激活后使用') | ||||
|               this.$store.commit('setActiveDlgShow', true) | ||||
|               return; | ||||
|             } | ||||
|             this.dlgShow = true | ||||
|             this.getProductList() | ||||
|           } | ||||
|         }) | ||||
|       }, | ||||
|       getProductList() { | ||||
|         let params = {}; | ||||
|         params.page = this.productPage.page; | ||||
|         params.pageSize = this.productPage.pageSize; | ||||
|         if (this.productPage.productName) { | ||||
|           params.productName = this.productPage.productName | ||||
|         } | ||||
|         if (this.productPage.productSkcIds) { | ||||
|           params.productSkcIds = this.productPage.productSkcIds.split(',') | ||||
|         } | ||||
|         sendChromeAPIMessage({ | ||||
|           url: 'bg-visage-mms/product/skc/pageQuery', | ||||
|           needMallId: true, | ||||
|           mallId: this.productPage.mallId, | ||||
|           data: { | ||||
|             ...params | ||||
|         }}).then((res) => { | ||||
|           if (res.errorCode == 1000000) { | ||||
|             this.productPage.total = res.result.total | ||||
|             this.productTableData = res.result.pageItems.map((item) => { | ||||
|               return { | ||||
|                 productSpu: item.productId, | ||||
|                 productSkc: item.productSkcId, | ||||
|                 productName: item.productName, | ||||
|                 createTime: timestampToTime(item.createdAt) | ||||
|               }; | ||||
|             }) | ||||
|           } else { | ||||
|             Message.error("【拼多多】" + res.errorMsg) | ||||
|           } | ||||
|         }); | ||||
|       }, | ||||
|       productHandleSelectionChange(val) { | ||||
|         this.productIds = []; | ||||
|         val.forEach(e => { | ||||
|           this.productIds.push(e.productSpu); | ||||
|         }); | ||||
|       }, | ||||
|       saveProduct() { | ||||
|         if (this.productIds.length <= 0) { | ||||
|           Message.error('请选择商品'); | ||||
|           return; | ||||
|         } | ||||
|         this.productIds.map((productSpu, index) => { | ||||
|             setTimeout(() => { | ||||
|               sendChromeAPIMessage({ | ||||
|               url: 'bg-visage-mms/product/query', | ||||
|               needMallId: true, | ||||
|               mallId: this.productPage.mallId, | ||||
|               data: { | ||||
|                 productEditTaskUid: '', | ||||
|                 productId: productSpu | ||||
|             }}).then((res) => { | ||||
|               if (res.errorCode == 1000000) { | ||||
|                 let content = transform(res.result) | ||||
|                 let mallInfo = this.$store.state.mallList.filter(item => { | ||||
|                   return item.mallId == this.productPage.mallId | ||||
|                 }) | ||||
|                 this.$http.post('/api/product/add', { | ||||
|                     mallId: mallInfo[0].mallId, | ||||
|                     mallName: mallInfo[0].mallName, | ||||
|                     productSpu: res.result.productId, | ||||
|                     productName: res.result.productName, | ||||
|                     content: content | ||||
|                   }).then(res1 => { | ||||
|                   if (res1.code == 0) { | ||||
|                     Message.success("商品【" + res.result.productName + "】成功添加为商品模板") | ||||
|                     if (index == this.productIds.length - 1) { | ||||
|                       this.getList() | ||||
|                     } | ||||
|                   } | ||||
|                 }) | ||||
|               } | ||||
|             }) | ||||
|           }, 200 * index) | ||||
|         }) | ||||
|       }, | ||||
|       beforeAddToDraft() { | ||||
|         if (this.ids.length <= 0) { | ||||
|           Message.error('请选择商品模板'); | ||||
|           return; | ||||
|         } | ||||
|         this.mallDlgShow = true | ||||
|       }, | ||||
|       addToDraft() { | ||||
|         this.$refs.form.validate((valid) => { | ||||
|           if (valid) { | ||||
|             this.ids.map((id, index) => { | ||||
|               let product = this.tableData.filter((item) => { | ||||
|                 return item.id == id | ||||
|               }) | ||||
|               setTimeout(() => { | ||||
|                 sendChromeAPIMessage({ | ||||
|                   url: 'bg-visage-mms/product/draft/add', | ||||
|                   needMallId: true, | ||||
|                   mallId: this.form.targetMallId, | ||||
|                   data: { | ||||
|                     catId: this.form.targetCatId[this.form.targetCatId.length - 1] | ||||
|                 }}).then((res) => { | ||||
|                   if (res.errorCode == 1000000) { | ||||
|                     let draftId = res.result.productDraftId | ||||
|                     let content = JSON.parse(product[0].content) | ||||
|                     let i = 0 | ||||
|                     for (; i < this.form.targetCatId.length; i++) { | ||||
|                       content['cat' + (i+1) + 'Id'] = this.form.targetCatId[i] | ||||
|                     } | ||||
|                     for (; i < 10; i++) { | ||||
|                       content['cat' + (i+1) + 'Id'] = '' | ||||
|                     } | ||||
|                     content.productDraftId = draftId | ||||
|                     sendChromeAPIMessage({ | ||||
|                       url: 'bg-visage-mms/product/draft/save', | ||||
|                       needMallId: true, | ||||
|                       mallId: this.form.targetMallId, | ||||
|                       data: { | ||||
|                         ...content | ||||
|                     }}).then((res) => { | ||||
|                       if (res.errorCode == 1000000) { | ||||
|                         Message.success("商品【" + product[0].productName + "】成功添加到草稿箱") | ||||
|                       } | ||||
|                     }) | ||||
|                   } else { | ||||
|                     Message.error("【拼多多】" + res.errorMsg) | ||||
|                   } | ||||
|                 }) | ||||
|               }, 1000*index) | ||||
|             }) | ||||
|             this.mallDlgShow = false | ||||
|           } | ||||
|         }) | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| </script> | ||||
|  | ||||
| <style scoped lang="scss"> | ||||
| </style> | ||||
		Reference in New Issue
	
	Block a user