From 00bd18fc5b361d4f08c3941d2f2c459e51472d4f Mon Sep 17 00:00:00 2001 From: wtq <2394975549@qq.com> Date: Thu, 30 Jul 2026 08:59:27 +0800 Subject: [PATCH] '' --- config/index.js | 3 +- src/apis/APIOrder.js | 64 +++- src/components/cmp/uploadFile/index.vue | 31 +- .../jxGoodManager/goodSet/goodSet.vue | 5 +- src/components/ordermanager/order-detail.vue | 10 +- src/components/ordermanager/order-manager.vue | 352 +++++++++++++++++- .../smalltools/tool-jxgoods-tojx.vue | 6 + .../storegoodsmanager/store-goods-manager.vue | 15 +- src/components/storemanager/create-store.vue | 2 +- src/components/storemanager/modify-store.vue | 5 +- src/pages/financial/createOrderTemp/index.vue | 2 +- src/pages/indexpage/cmp/mtStoreInfo.vue | 84 ++--- src/pages/indexpage/indexPage3.vue | 3 +- src/router/index.js | 18 +- 14 files changed, 516 insertions(+), 84 deletions(-) diff --git a/config/index.js b/config/index.js index 0185ce8..2255e2a 100644 --- a/config/index.js +++ b/config/index.js @@ -39,6 +39,7 @@ module.exports = { // target: 'http://api.jxc4.com/v2', // target: 'http://alpha.jxc4.com/v2', // 对应真实数据,修改后不会向平台提交 target: 'http://www.jxc4.com/beta/v2', // 正式环境 + // target: 'http://beta.jxc4.com/v2', // 测试环境 // target: 'http://192.168.56.1:8080/', // 后端api // target: 'http://alpha3.jxc4.com/v2', // 对应京东,修改后会提交 // target: 'http://www-gblm.jxc4.com/v2', // 百货 / 宠物 @@ -63,7 +64,7 @@ module.exports = { // target: 'http://api.jxc4.com/v2', // target: 'http://alpha.jxc4.com/v2', // 对应真实数据,修改后不会向平台提交 target: 'http://www.jxc4.com/v2', // 正式环境 - // target: 'http://192.168.56.1:8080', // 后端api + // target: 'http://192.168.0.75:8080/v2', // 后端api // target: 'http://www-jxgy.jxc4.com/v2', // 京西果园 // target: 'http://www-gblm.jxc4.com/v2', // 百货 / 宠物 changeOrigin: true, diff --git a/src/apis/APIOrder.js b/src/apis/APIOrder.js index a3377cf..e1cf33d 100644 --- a/src/apis/APIOrder.js +++ b/src/apis/APIOrder.js @@ -179,7 +179,7 @@ export const APIGetInvoiceRecord = async (json,page,noLoading=true) => { */ export const APIUploadOrderInvoice = async (json,noLoading=true) => { try { - let res = await api('v2/order/UploadOrderInvoice ', { + let res = await api('v2/order/UploadOrderInvoice', { method: 'POST', data: json, noLoading @@ -189,4 +189,66 @@ export const APIUploadOrderInvoice = async (json,noLoading=true) => { console.error('UploadOrderInvoice ', e) throw e } +} + + +/** + * @Title 上传订单拣货图片 https://tscc.meituan.com/home/doc/market/10143 + * @Description 上传订单拣货图片 + * @Param token header string true "认证token" + * @Param orderId formData string true "订单ID" + * @Param vendorID formData int true "平台ID" + * @Param mediaList formData string true "返图参数" + * + * @Success 200 {object} controllers.CallResult + * @Failure 200 {object} controllers.CallResult + * + * @mediaList + * Url string `json:"url"` + * Type int `json:"type"` + * ConfigSnapshotId int64 `json:"configSnapshotId"` + * ItemId int64 `json:"itemId"` + * Seq int `json:"seq"` + * InnerSeq int `json:"innerSeq"` + * RequireId int64 `json:"requireId"` + * MediaCode string `json:"mediaCode"` + */ +export const uploadOrderPickingMt = async (json,noLoading=true) => { + try { + let res = await api('v2/jxorder/UploadOrderPicking', { + method: 'POST', + data: json, + noLoading + }) + return res + } catch (e) { + console.error('UploadOrderPicking ', e) + throw e + } +} + + +/** + * 获取订单返图详情 https://tscc.meituan.com/home/doc/market/134 + * @Title 获取订单返图详情 + * @Description 获取订单返图详情 + * @Param token header string true "认证token" + * + * @Param orderId formData string true "订单ID" + * @Param vendorID formData int false "平台ID" + * + * @Success 200 {object} controllers.CallResult + * @Failure 200 {object} controllers.CallResult + */ +export const getOrderRequirePicture = async (json,noLoading=true) => { + try { + let res = await api('v2/jxorder/GetOrderRequirePicture', { + params: json, + noLoading + }) + return res + } catch (e) { + console.error('GetOrderPickingDetail ', e) + throw e + } } \ No newline at end of file diff --git a/src/components/cmp/uploadFile/index.vue b/src/components/cmp/uploadFile/index.vue index 71a95bd..527b792 100644 --- a/src/components/cmp/uploadFile/index.vue +++ b/src/components/cmp/uploadFile/index.vue @@ -77,7 +77,7 @@ - +
更多操作
@@ -533,6 +536,7 @@ + + + + +
+
+ 门店: + {{ mtUploadImgDia.orderInfo.storeName }} (ID: {{ mtUploadImgDia.orderInfo.jxStoreID }}) +
+
+ 序号: + 美团 #{{ mtUploadImgDia.orderInfo.orderSeq }} +
+
+ 订单号: + + {{ mtUploadImgDia.orderInfo.vendorOrderID }} + + +
+
+ +
+ +
+ + +
+ +
+ 加载中...... +
+ 查看示例图 +
+
+ + +
+ +
+ + 描述:{{ order.mediaDesc }} + + +
+ 加载中...... +
+ 查看示例图 +
+
+ + +
+ + +
+ +
+
+
+
+ + + +
+ + +
+ +
+ +
+ + 描述:{{ rule.mediaDesc }} + + +
+ 加载中...... +
+ 查看示例图 +
+ +
+ + +
+ + +
+ +
+
+
+
+
+
+
+ + + 取 消 + 确 定 + +
@@ -639,7 +798,7 @@ import api, { isGY } from "@/utils/api"; import batDealSelfTake from "@/components/ordermanager/methods/batSelfTake"; import StoresPick from "@/components/cmp/storePick/index.vue"; import goodsList from '@/components/cmp/goodsList' -import { orderStatusList } from "@/apis/APIOrder.js"; +import { orderStatusList,uploadOrderPickingMt,getOrderRequirePicture } from "@/apis/APIOrder.js"; import { apiEdition } from '@/config.js' import { mapGetters } from "vuex"; import { getBrands } from "@/apis/controls/brand.js"; @@ -648,6 +807,7 @@ moment.locale("zh-cn"); export default { name: "OrderManager", components: { + jxUploadFile:() => import ('@/components/cmp/uploadFile'), CMPWaybillInfo, CountDown, CreateWaybill, @@ -675,6 +835,14 @@ export default { } // 门店选择 return { + // 美团上传图片---- + mtOrderRealMediaDetail:[], + mtUploadImgDia: { + dialogVisible:false, + orderInfo:'', + img:'' + }, + // 美团上传图片---- logisticsData: { orderId: "", logisticId: "", @@ -699,7 +867,7 @@ export default { vendorOrderID: "", // 订单号 jxIncomeBegin: null, jxIncomeEnd: null, - keyword: "", // 关键字 + keyword: "", // 关键字 2602201502045507987返图订单 waybillVendorID: "", // 平台配送 deliveryTypes: [], //配送方式 dateRange: [], // fromDate toDate @@ -886,6 +1054,139 @@ export default { }, }, methods: { + async confirmUploadImg(){ + try { + + let mediaList = [] + let flag = true // 判断是否上传了图片 + this.mtOrderRealMediaDetail.forEach(item => { + if(item.dimension === 1){ + // 订单 + item.mediaRuleRequireList.forEach(i => { + mediaList.push({ + url:i.uploadImg, + type:0, + configSnapshotId:i.configSnapshotId, // 新返图必传,未传为老返图 + // itemId:item.itemId, + // seq:item.seq, + // innerSeq:i.innerSeq, + requireId:i.requireId, + mediaCode:i.ocrStr + }) + flag = i.uploadImg.length === 0 && i.uploadRequire === 1 ? false : true + }) + }else if(item.dimension === 2){ + // 商品 + item.productDimensionInfo.items.forEach(i => { + + i.mediaRuleRequireList.forEach(good => { + // console.log(item,'iiiiiiii,,,串串图片的参数信息',i,'good',good,'ocr',good.ocrStr) + mediaList.push({ + url:good.uploadImg, + type:0, + configSnapshotId:good.configSnapshotId, // 新返图必传,未传为老返图 + itemId:item.productDimensionInfo.itemId, + seq:item.productDimensionInfo.seq, + innerSeq:i.innerSeq, + requireId:good.requireId, + mediaCode:good.useOcr === 1 ? good.ocrStr : "" + }) + flag = good.uploadImg.length === 0 && good.uploadRequire === 1 ? false : true + }) + }) + } + // + }) + // console.log(mediaList,'串串图片的参数信息',this.mtOrderRealMediaDetail,'是否通过校验',flag) + + if(!flag) return this.$message('未完成图片上传') + let formData = new FormData(); + formData.append("orderId", this.mtUploadImgDia.orderInfo.vendorOrderID) + formData.append("vendorID", 1) + // https://tscc.meituan.com/home/doc/market/10143 + formData.append("mediaList",JSON.stringify(mediaList)) + // formData.append("imgs", JSON.stringify([this.mtUploadImgDia.img])) + let res = await uploadOrderPickingMt(formData) + + this.$message({ + message:'上传成功', + type: 'success', + center: true + }) + hideLoad() + console.log('上传图片的信息',res) + }catch(err){ + console.log('err',err) + hideLoad() + }finally{ + this.mtUploadImgDia.dialogVisible = false + hideLoad() + } + }, + copyOrderNo(orderNo){ + copyText(orderNo) + this.$message({ + message: "已复制到剪切板", + type: "success", + center: true, + }); + }, + // 打开上传图片弹框 美团 + async openMtDialog(row){ + // if(row.status !== 10) return // 目前还没有强制上传图片 后期不上传图片,无法发货(force_require_picture === 1 强制返图) + // let formData = new FormData(); + // formData.append("orderId", row.vendorOrderID) + // formData.append("vendorID", row.vendorID) + let res = await getOrderRequirePicture({ + orderId:row.vendorOrderID, + vendorID:row.vendorID + }) + let orderRealMediaDetail = JSON.parse(res.orderRealMediaDetail) + orderRealMediaDetail.subRealMediaDetailList.forEach(item => { + // console.log('循环',item) + this.mtOrderRealMediaDetail.push({ + ...item + }) + let items = [] + let mediaRuleRequireList = [] + let orderDimensionInfo = [] + if(item.dimension === 1){ + // 订单维度 + item.orderDimensionInfo.mediaRuleRequireList.forEach(i => { + orderDimensionInfo.push({ + ...i, + uploadImg:'' // 待上传的图片信息 + }) + }) + this.mtOrderRealMediaDetail[this.mtOrderRealMediaDetail.length -1].orderDimensionInfo = orderDimensionInfo + }else if(item.dimension === 2){ + // 商品维度 + items = [] + item.productDimensionInfo.items.forEach(i => { + // items.push({ + // ...i, + // uploadImg:'' // 待上传的图片信息 + // }) + items.push(i) + mediaRuleRequireList = [] + i.mediaRuleRequireList.forEach(good => { + // console.log(items,'itm,,items,good',good) + mediaRuleRequireList.push({ + ...good, + uploadImg:"" + }) + }) + items[items.length -1].mediaRuleRequireList = mediaRuleRequireList + }) + this.mtOrderRealMediaDetail[this.mtOrderRealMediaDetail.length -1].productDimensionInfo.items = items + } + }) + // this.mtOrderRealMediaDetail = JSON.parse(res.orderRealMediaDetail) // 实拍规则要求 + // console.log(orderRealMediaDetail,'订单维度',this.mtOrderRealMediaDetail) + this.mtUploadImgDia.orderInfo = row + this.mtUploadImgDia.dialogVisible = true + // console.log('this.mtUploadImgDia',this.mtUploadImgDia) + }, batOpenOrderDetail(){ if(this.selectOrder.length === 0) return this.$toast('请勾选订单信息') this.selectOrder.forEach(item => { @@ -894,7 +1195,7 @@ export default { }, handleSelectionChange(e){ this.selectOrder = e }, // 获取拉卡拉门店信息 - async getLklMerchant(storeID){ + async getLklMerchant(storeID){ let res = await QueryIncoming({ // customerNo, storeID, @@ -1111,8 +1412,8 @@ export default { if (res.code === "0") { // 成功 let obj = JSON.parse(res.data); - this.orderList = obj.data; - console.log('订单信息',this.orderList) + this.orderList = obj.data; // force_require_picture === 1 强制返图 2_审核成功 3_审核失败 + // console.log('订单信息,99999999999999999',this.orderList) this.totalCount = obj.totalCount; fn && fn(); // 把检索条件拷贝给下载条件 @@ -2520,4 +2821,45 @@ export default { } } } + +.order-info-block { + background-color: #f5f7fa; + padding: 15px; + border-radius: 4px; + font-size: 13px; + + .info-row { + margin-bottom: 8px; + line-height: 1.5; + + &:last-child { + margin-bottom: 0; + } + + .label { + color: #909399; + display: inline-block; + width: 60px; + } + + .value { + color: #303133; + font-weight: 500; + + &.copy-link { + cursor: pointer; + color: #409EFF; + + i { + margin-left: 5px; + font-size: 12px; + } + + &:hover { + opacity: 0.8; + } + } + } + } +} diff --git a/src/components/smalltools/tool-jxgoods-tojx.vue b/src/components/smalltools/tool-jxgoods-tojx.vue index f8d02ec..f216283 100644 --- a/src/components/smalltools/tool-jxgoods-tojx.vue +++ b/src/components/smalltools/tool-jxgoods-tojx.vue @@ -226,6 +226,12 @@ export default { storeIDs: `[${e}]`, isFocus: true } + if(this.searchForm.fromStoreID === e) { + this.$message('目标门店不能是标杆门店') + this.$refs.searchForm.resetFields() + return + } + // 查询该门店下是否有关注的商品 getStoresSkus(json,(res) => { if (JSON.parse(res.data).totalCount) { diff --git a/src/components/storegoodsmanager/store-goods-manager.vue b/src/components/storegoodsmanager/store-goods-manager.vue index 4aa7c82..7428b95 100644 --- a/src/components/storegoodsmanager/store-goods-manager.vue +++ b/src/components/storegoodsmanager/store-goods-manager.vue @@ -367,6 +367,12 @@ class="tiny-btn" @click="batOperateSale(-1)" >批量不可售 + 批量临时不可售
- +
单位:元 diff --git a/src/components/storemanager/modify-store.vue b/src/components/storemanager/modify-store.vue index ce17a5c..96db741 100644 --- a/src/components/storemanager/modify-store.vue +++ b/src/components/storemanager/modify-store.vue @@ -107,10 +107,11 @@
- +
- 单位:元 + 单位:元 + 不锁定
diff --git a/src/pages/financial/createOrderTemp/index.vue b/src/pages/financial/createOrderTemp/index.vue index dcf1632..322c24f 100644 --- a/src/pages/financial/createOrderTemp/index.vue +++ b/src/pages/financial/createOrderTemp/index.vue @@ -422,7 +422,7 @@ export default { if(this.payType !== "qrCode") return let res = await apiGetOrder({vendorOrderID:this.orderInfo.orderID}) if(res.data && res.data.length>0){ - console.log('res,,当前订单信息',res) + // console.log('res,,当前订单信息',res) if(res.data[0].status == 110 ) { this.orderPayStatus === "交易成功" this.$toast("支付成功") diff --git a/src/pages/indexpage/cmp/mtStoreInfo.vue b/src/pages/indexpage/cmp/mtStoreInfo.vue index 3961871..2d7fd1d 100644 --- a/src/pages/indexpage/cmp/mtStoreInfo.vue +++ b/src/pages/indexpage/cmp/mtStoreInfo.vue @@ -30,6 +30,14 @@ >
+ + + + + + + 查询 @@ -42,31 +50,13 @@ border stripe style="width: 100%"> - - - - - - - - - - -