$('.navLayout').find('.navList').removeClass("on").find('.con').hide().find('a').removeClass("on"); $('.navLayout').find('.navList').eq(0).addClass("on").find('.con').show().find('a').eq(2).addClass("on"); const seeDetail = new Vue({ el: '#seeDetail', mixins: [cmSysVitaMixins], data() { const defaultConfirmParam = { cartType:3, // 购买类型:(1自主下单, 3协销下单) orderSource:1, // 订单来源 1WWW 6小程序[采美,星范] addressId:0, // 收货地址Id cityId:0, // 收货地址Id orderInfo:[], // 订单商品数据 // 订单发票信息 addressInfo:{ receiver:'', mobile:'', provinceId:'', cityId:'', townId:'', address:'' }, // 订单地址信息 orderInvoice:{ type: 0 }, // 订单发票信息 payInfo:{ // 订单金额数据 orderShouldPayFee: 0, // 订单最终支付金额 clauseId:0 // 条款Id } }; return { isFiexd:false, shopId:'', addressForm:{ receiver:'', mobile:'', provinceId:'', cityId:'', townId:'', address:'' }, invoiceForm:{ type:0, // 0 不开发票 1 普通发票 2 增值税发票 headingType:0, // 0 个人 1 单位 invoiceTitle:'', // 发票抬头 corporationTaxNum:'',//单位税号 registeredAddress:'',// 注册地址 registeredPhone:'',// 注册电话 openBank:'',// 开户银行 bankAccountNo:''// 银行账号 }, hanldShouldPayFee:0, prosParams:{ productInfo:[], shopId:'', cityId:'' }, confirmParam: defaultConfirmParam, // 提交订单参数 supplier:{}, orderInfoArray:[], provinceList:[], cityList:[], townList:[], productsArr:[], isLoading:true, abnormalProductList:[],// 成本异常商品 goodsDialogVisible:false, abnormalDialogVisible:false, productRadio:null, checkedProductList:[], total:0, productsList:[], listQuery:{ name:'',//商品名称 shopId:'', pageNum:1, pageSize:10 }, rules: { receiver: [{required: true,message: '请填写收货人',trigger: 'blur'}], mobile: [{required: true,message: '请填写联系方式',trigger: 'blur'}], provinceId: [{required: true,message: '请选择省份',trigger: 'change'}], cityId: [{required: true,message: '请选择市',trigger: 'change'}], townId: [{required: true,message: '请选择区县',trigger: 'change'}], address: [{required: true,message: '请填写详细地址信息',trigger: 'blur'}], invoiceTitle: [{required: true,message: '请填写发票抬头',trigger: 'blur'}], corporationTaxNum: [{required: true,message: '请填写单位税号',trigger: 'blur'}], registeredAddress: [{required: true,message: '请填写详细地址信息',trigger: 'blur'}], registeredPhone: [{required: true,message: '请填写注册电话',trigger: 'blur'}], openBank: [{required: true,message: '请填写开户银行',trigger: 'blur'}], bankAccountNo: [{required: true,message: '请填写银行账号',trigger: 'blur'}] }, submitLoading:false, } }, filters: { amountfilters(value) { if (value) { return Number(value).toFixed(2) } else { return '0.00' } }, }, computed: { disabled() { return this.productRadio === null }, checkedConfirmFlag(){ if(this.confirmParam.cityId && this.checkedProductList.length > 0 ){ return true } }, }, methods: { // 计算总运费 handleTotalPostage(supplier){ if(supplier.isColdChina){ if(supplier.handlePostageFlag === 2){ return (supplier.coldChain*100 + supplier.postage*100 - supplier.postage*100)/100 }else{ return (supplier.postage*100 + supplier.coldChain*100)/100 } }else{ return supplier.postage } }, // 勾选冷链费 handleChangeColdChina(flag,supplier){ if(flag){ supplier.totalPrice = Number((supplier.totalPrice*100 + supplier.coldChain*100)/100) this.attributePallPrice() console.log('totalPrice',supplier.totalPrice) }else{ supplier.totalPrice = Number(this.repiceNumSub(supplier.totalPrice,supplier.coldChain)) this.attributePallPrice() console.log('hanldShouldPayFee',this.hanldShouldPayFee) } }, getProvinceOptions(){ // 获取全部省份 const _this = this; OrderApi.GetAddressSelect({},function(res){ if(res.code === 0 && res.data){ _this.provinceList = res.data; }else{ CAIMEI.Alert(res.msg,'确定',false); } }); }, getCityList(parentId){// 获取地区 const _this = this; this.cityList = []; this.townList = []; this.addressForm.cityId = ''; this.addressForm.townId = ''; OrderApi.GetAddressSelect({ parentId: parentId,type:1 },function(res){ if(res.code === 0 && res.data){ _this.cityList = res.data; }else{ CAIMEI.Alert(res.msg,'确定',false); } }); }, getTownList(cityId){ const _this = this; this.townList = []; this.addressForm.townId = ''; this.confirmParam.cityId = this.prosParams.cityId = this.addressForm.cityId console.log('cityId',cityId) OrderApi.GetAddressSelect({parentId: cityId,type:2},function(res){ if(res.code === 0 && res.data){ _this.townList = res.data; }else{ CAIMEI.Alert(res.msg,'确定',false); } }) // 切换市区时重新调用确认订单信息 if(this.checkedProductList.length > 0){ this.prosParams.productInfo = this.handleProStringify(this.checkedProductList) console.log('prosParams',this.prosParams) this.getSettlement(this.prosParams) } }, handleConfirm(){ // 校验收货信息 this.$refs['dataForm'].validate(async valid => { if (valid) { if(this.productsArr.length === 0){ this.$alert('请添加商品~', '提示', { type: 'warning', confirmButtonText: '确定', }); } } }) // 校验发票 if(this.invoiceForm.type!==0){ this.$refs['invoiceForm'].validate(async valid => { if (valid) { if(this.checkedConfirmFlag){ this.initializationParams() } } }) }else { if(this.checkedConfirmFlag){ this.initializationParams() } } }, //统一处理 initializationParams(){ // 发票信息 if(this.invoiceForm.type!==0){ this.invoiceForm.type = parseInt(this.invoiceForm.type) this.confirmParam.orderInvoice = this.invoiceForm; } //商品信息 this.confirmParam.orderInfo = this.hanldeProcessing() console.log('orderInfo',this.confirmParam.orderInfo) this.confirmParam.payInfo.orderShouldPayFee = parseFloat(this.hanldShouldPayFee).toFixed(2); this.confirmParam.addressInfo = JSON.stringify(this.addressForm) console.log('addressInfo',this.confirmParam.addressInfo) this.confirmParam.payInfo = JSON.stringify(this.confirmParam.payInfo) this.confirmParam.orderInfo = JSON.stringify(this.confirmParam.orderInfo) this.confirmParam.orderInvoice = JSON.stringify(this.confirmParam.orderInvoice) console.log('confirmParam',this.confirmParam); this.handleConfirmOrder(this.confirmParam); }, // 处理数据格式 hanldeProcessing() { return this.orderInfoArray.map(el => { let productInfo = [] el.cartList.forEach(pros => { productInfo.push({ skuId: pros.skuId, productNum: pros.number, presentNum: 0, productType: pros.giftType, price: pros.price.toString() }) }) return { splitCode: el.splitCode, shopId: el.shopId, note: el.note ? el.note : '', postage: el.isColdChina ? parseInt(el.postage + el.coldChain).toFixed(2) : parseInt(el.postage).toFixed(2), postageFlag: parseInt(el.handlePostageFlag), isColdChina: el.isColdChina ? 1 : 0, productInfo: productInfo } }) }, handleConfirmOrder(params){ const _this = this; this.submitLoading = true setTimeout(()=>{ SupplierApi.shopGenerateOrder(params,function(response){ if(response.code === 0){ const data = response.data _this.submitLoading = false _this.$message({ message: '恭喜你,订单提交成功~', type: 'success' }); setTimeout(()=>{ _this.submitLoading = false _this.formatConfirmParam() window.location.href = '/supplier/order/detail.html?shopOrderId='+data.shopOrderId },2000) }else{ setTimeout(()=>{ _this.$message.error(response.msg) _this.submitLoading = false _this.formatConfirmParam() },2000) } }) },1000) }, // 还原提交订单参数格式 formatConfirmParam:function(){ this.confirmParam.payInfo = JSON.parse(this.confirmParam.payInfo); this.confirmParam.orderInfo = JSON.parse(this.confirmParam.orderInfo); this.confirmParam.addressInfo = JSON.parse(this.confirmParam.addressInfo); this.confirmParam.orderInvoice = JSON.parse(this.confirmParam.orderInvoice); console.log('payInfo',this.confirmParam.payInfo) }, // 添加商品弹窗显示 handleShowVisible(){ this.getProductList() this.goodsDialogVisible = true }, //切换页码 handleCurrentChange(val){ this.listQuery.pageNum = val; this.getProductList(); }, // 已选择的禁用勾选框 handleSelectable(row) { const skuIds = this.checkedProductList.map(pros => pros.skuId); console.log('skuIds',skuIds) return !skuIds.includes(row.skuId); }, //取消选择 handleCanle(){ this.productRadio = null this.goodsDialogVisible = false }, // 删除确认商品 handleDelete(index){ this.checkedProductList.splice(index, 1) if(this.checkedProductList.length === 0){ this.productsArr = [] } if(this.checkedProductList.length > 0){ this.prosParams.productInfo = this.handleProStringify(this.checkedProductList) this.getSettlement(this.prosParams) } }, //修改sku handleChangeSku(row){ const _this = this let skus = row.skus console.log('skus',skus) skus.forEach((sku)=>{ if(row.skuId === sku.skuId){ if(sku.ladderPriceFlag === 1){ row.price = _this.handeleToFixed(sku.ladderPriceList[0].buyPrice) row.count = sku.minBuyNumber row.minBuyNumber = sku.minBuyNumber row.ladderPriceFlag = sku.ladderPriceFlag row.ladderPriceList = sku.ladderPriceList }else{ row.price = _this.handeleToFixed(sku.price) row.count = sku.minBuyNumber row.minBuyNumber = sku.minBuyNumber row.ladderPriceFlag = sku.ladderPriceFlag row.ladderPriceList = sku.ladderPriceList } } }) }, // 修改数量判断阶梯价 handleChangeNumber(row){ const _this = this if (row.count < row.minBuyNumber) { row.count = row.minBuyNumber if (row.ladderPriceFlag === 1) { row.ladderPriceList.forEach((item) => { if (row.count >= item.buyNum) { row.price = _this.handeleToFixed(item.buyPrice) } }) } else { row.price = _this.handeleToFixed(row.price) } } else { if (row.ladderPriceFlag === 1) { row.ladderPriceList.forEach((item) => { if (row.count >= item.buyNum) { row.price = _this.handeleToFixed(item.buyPrice) } }) } else { row.price = _this.handeleToFixed(row.price) } } }, // 保留小数点后两位数 handeleToFixed(value){ return value.toFixed(2) }, //确认选择商品 handleAddProConfirm(){ this.checkedProductList = [...this.checkedProductList,...this.productRadio] this.prosParams.productInfo = this.handleProStringify(this.checkedProductList) this.getSettlement(this.prosParams) }, // 统一格式化确认订单商品信息参数 handleProStringify(productInfo){ return JSON.stringify(productInfo.map((pros)=>{ return { productId:pros.productId, count:pros.count, skuId:pros.skuId, price:pros.price } })) }, // 确认订单信息 getSettlement(params){ const _this = this; this.orderInfoArray =[] SupplierApi.getSettlement(params,function(response){ if(response.code === 0){ let data = response.data if(data.abnormalProductList.length > 0){ _this.abnormalProductList = data.abnormalProductList _this.abnormalDialogVisible = true // 根据 checkedProductList 中的 skuId,删除 abnormalProductList 中的相同 skuId 的数据 _this.checkedProductList = _this.checkedProductList.filter(check => !_this.abnormalProductList.map(abnormal => abnormal.skuId).includes(check.skuId)); console.log('checkedProductList',_this.checkedProductList) }else{ _this.supplier = data.shop _this.orderInfoArray.push(_this.supplier) _this.hanldShouldPayFee = data.shop.totalPrice; _this.supplier.handlePostageFlag = data.shop.postageFlag _this.productsArr = data.shop.cartList _this.handleCanle() } }else{ _this.$message.error(response.msg) } }) }, // 选择商品 handleSelectionChange(row) { this.productRadio = row console.log('productRadio', this.productRadio) }, getProductList(){//我的商品数据初始化 const _this = this; this.isLoading = true SupplierApi.getShopProduct(this.listQuery,function(response){ if(response.code === 0){ const data = response.data _this.productsList = data.results.map((pros)=>{ pros.count = pros.minBuyNumber pros.price = _this.handeleToFixed(pros.price) return pros }) _this.total = data.totalRecord _this.isLoading = false }else{ CAIMEI.Alert(response.msg, '确定') _this.isLoading = false } }) }, }, mounted () { const _this = this; this.getProvinceOptions(); if(globalUserData){ this.listQuery.shopId = this.confirmParam.shopId = globalUserData.shopId; this.shopId = this.prosParams.shopId = globalUserData.shopId; } if (isPC) { $(window).scroll(function (event) { var supportPageOffset = window.pageXOffset !== undefined; // 判断是否支持pageXOffset var isCSS1Compat = ((document.compatMode || "") === "CSS1Compat"); // 判断渲染模式是不是标准模式 var scrollHeight = supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop; if (scrollHeight < 100) { _this.isFiexd = true } else { _this.isFiexd = false } }); } }, });