You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2 lines
14 KiB
2 lines
14 KiB
"use strict";(self["webpackChunkabcdf"]=self["webpackChunkabcdf"]||[]).push([[955],{955:function(t,e,i){i.r(e),i.d(e,{default:function(){return u}});var s=function(){var t=this,e=t._self._c;return e("div",{staticClass:"order-page"},[e("div",{staticClass:"page-header"},[e("h2",[t._v("填写收货人信息")]),e("el-button",{staticClass:"address-book-btn",attrs:{type:"text"},on:{click:function(e){return t.openDialog("add",{})}}},[t._v(" 新增/修改地址 ")])],1),e("div",{staticClass:"info-section"},[e("h3",[t._v("收货人信息")]),e("div",{staticClass:"address-item"},[e("span",{staticClass:"label"},[t._v("收货地址:")]),e("div",{staticClass:"address-content"},t._l(t.addresses,function(i,s){return e("div",{key:s,staticClass:"saved-address",class:{selected:t.selectedAddressIndex===s},on:{click:function(e){return t.selectAddress(s)}}},[e("span",{staticClass:"name-tag"},[t._v(t._s(i.name)+" "+t._s(i.province))]),e("span",{staticClass:"detail"},[t._v(t._s(i.address)+" "+t._s(i.phone))]),e("el-button",{staticClass:"edit-btn",attrs:{type:"text"},on:{click:function(e){return e.stopPropagation(),t.handleEdit(i)}}},[t._v("编辑")]),e("el-button",{staticClass:"delete-btn",attrs:{type:"text"},on:{click:function(e){return e.stopPropagation(),t.handleDelete()}}},[t._v("删除")])],1)}),0)])]),t._m(0),e("div",{staticClass:"goods-section"},[e("h3",[t._v("商品清单")]),t._l(t.orderGroups,function(i,s){return e("div",{key:s,staticClass:"order-group"},[e("div",{staticClass:"supplier-info"},[e("span",[t._v("供货名称:"+t._s(i.supplier))])]),e("table",{staticClass:"goods-table"},[t._m(1,!0),e("tbody",t._l(i.items,function(i,s){return e("tr",{key:s},[e("td",[e("img",{staticClass:"goods-img",attrs:{src:i.image,alt:"商品图片"}}),e("span",{staticClass:"goods-name"},[t._v(t._s(i.name))])]),e("td",[t._v(t._s(i.spec))]),e("td",[t._v(t._s(i.price))]),e("td",[t._v(t._s(i.quantity))]),e("td",[t._v(t._s(i.freight))]),e("td",[t._v(t._s(i.deliveryType))]),e("td",{staticClass:"subtotal"},[t._v(t._s(i.subtotal))])])}),0)]),e("div",{staticClass:"order-remark"},[e("span",{staticClass:"remark-label"},[t._v("订单备注:")]),e("div",{staticClass:"rich-text-editor"},[e("el-input",{staticClass:"remark-editor",attrs:{type:"textarea",rows:"4",placeholder:"请输入订单备注信息"},model:{value:i.remark,callback:function(e){t.$set(i,"remark",e)},expression:"group.remark"}}),t._e()],1)])])}),e("div",{staticClass:"total-info"},[e("p",[t._v(" 共 "+t._s(t.totalGoodsCount)+" 件商品,总商品金额 ¥"+t._s(t.totalGoodsAmount)+" ")]),e("p",[t._v("总运费 ¥"+t._s(t.totalFreight))]),e("p",{staticClass:"pay-amount"},[t._v("实付总金额 ¥"+t._s(t.totalPayAmount))]),e("p",{staticClass:"address-info"},[t._v(" 配送地:"+t._s(t.selectedAddress.address)),e("br"),t._v(" 交货地:"+t._s(t.selectedAddress.address)+" "+t._s(t.selectedAddress.phone)+" ")]),e("el-button",{staticClass:"submit-btn",attrs:{type:"primary"},on:{click:t.submitOrder}},[t._v(" 提交订单 ")])],1)],2),e("AddressFormDialog",{attrs:{visible:t.dialogVisible,type:t.dialogType,"initial-data":t.dialogData},on:{"update:visible":function(e){t.dialogVisible=e},save:t.handleSaveAddress}})],1)},r=[function(){var t=this,e=t._self._c;return e("div",{staticClass:"contract-section"},[e("h3",[t._v("签署合同")]),e("p",[t._v("如需签署合同,提交订单后,请至采购中心>合同中心签署")])])},function(){var t=this,e=t._self._c;return e("thead",[e("tr",[e("th",[t._v("商品")]),e("th",[t._v("规格")]),e("th",[t._v("单价(元)")]),e("th",[t._v("数量")]),e("th",[t._v("运费")]),e("th",[t._v("收货方式")]),e("th",[t._v("小计(元)")])])])}],a=(i(4114),i(8111),i(7588),i(1701),i(3518)),o=i(1734),d={name:"OrderPage",components:{AddressFormDialog:o.A},data(){return{addresses:[],selectedAddressIndex:-1,selectedTradeType:1,selectedInvoiceType:1,invoiceTitles:[{id:1,name:"苏州特色农产品发展有限公司"},{id:2,name:"个人"},{id:3,name:"苏州科技有限公司"}],selectedInvoiceTitle:null,orderGroups:[],totalGoodsCount:3,totalGoodsAmount:973,totalFreight:0,totalPayAmount:0,dialogVisible:!1,dialogType:"add",dialogData:{}}},computed:{...(0,a.L8)(["getOrderData"]),selectedAddress(){return this.addresses[this.selectedAddressIndex]||{}}},mounted(){this.getOrderData?(this.initOrderData(this.getOrderData),console.log(this.getOrderData)):(this.$message.error("未获取到商品信息,请重新操作"),this.$router.go(-1)),this.getAddress()},methods:{...(0,a.PY)(["clearOrderData"]),openDialog(t,e){this.dialogType=t,this.dialogData={...e},this.dialogVisible=!0},handleEdit(t){console.log(t),t.username=t.name,t.mobile=t.tel,this.openDialog("edit",t)},handleDelete(t){this.$confirm("此操作将永久删除该地址, 是否继续?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{this.post({id:t.id},"/api/uservice/user/delConsignee").then(t=>{1==t.code&&(this.getAddress(),this.$message.success("删除成功!"))})}).catch(()=>{this.$message.info("已取消删除")})},initOrderData(t){if("product"===t.from){const e=t.items[0];this.orderGroups=[{supplier:e.product.supplier_name,items:this.formatItems([e])}]}else"cart"===t.from&&(this.orderGroups=Object.entries(t.groups).map(([t,e])=>({supplier:t,items:this.formatItems(e)})));this.calculateTotal()},formatItems(t){return console.log(t,13213),t.map(t=>({id:t.sku.id,productId:t.product.id,name:t.product.title,image:t.product.headimg,spec:t.sku.sku_name,price:(t.sku.price/100).toFixed(2),quantity:t.quantity,freight:"0.00",deliveryType:"邮寄",type:t.product.type,subtotal:(t.sku.price/100*t.quantity+parseFloat("0.00")).toFixed(2)}))},getPost(){if(!this.selectedAddress.id)return void this.$message.warning("请先选择收货地址");this.totalFreight=0;const t=[];this.orderGroups.forEach((e,i)=>{e.items.forEach((e,i)=>{const s={consignee_id:this.selectedAddress.id,sku_id:e.id,num:e.quantity},r=this.post(s,"/api/order/get_post_price").then(t=>{if(1===t.code){const i=(t.data.price/100).toFixed(2);e.freight=i,e.subtotal=(parseFloat(e.price)*e.quantity+parseFloat(i)).toFixed(2),this.totalFreight=(parseFloat(this.totalFreight)+parseFloat(i)).toFixed(2)}}).catch(t=>{console.error(`获取商品 ${e.id} 邮费失败`,t),this.$message.error(`获取商品 ${e.name} 邮费失败,请重试`)});t.push(r)})}),Promise.all(t).then(()=>{this.calculateTotal()})},calculateTotalFreight(){let t=0;this.orderGroups.forEach(e=>{e.items.forEach(e=>{console.log(e),t+=parseFloat(e.freight)})}),this.totalFreight=t.toFixed(2)},calculateTotal(){let t=0,e=0;this.orderGroups.forEach(i=>{i.items.forEach(i=>{t+=i.quantity,e+=parseFloat(i.subtotal)})}),this.totalGoodsCount=t,this.totalGoodsAmount=e.toFixed(2),this.totalPayAmount=e.toFixed(2)},handleSaveAddress(t){t.is_default=0,"add"===this.dialogType?this.post(t,"/api/uservice/user/addNewConsignee").then(t=>{1==t.code&&(this.$message.success("保存成功"),this.getAddress(),this.dialogVisible=!1)}):this.post(t,"/api/uservice/user/editConsignee").then(t=>{1==t.code&&(this.$message.success("保存成功"),this.getAddress(),this.dialogVisible=!1)})},getAddress(){this.post({contactType:"CONSIGNEE",offset:"0",limit:"100"},"/api/uservice/user/getContactOrConsignee").then(t=>{t&&(this.addresses=t.data||[])})},selectAddress(t){this.selectedAddressIndex=t,this.getPost()},submitOrder(){if(!this.selectedAddress.id)return void this.$message.warning("请先选择收货地址");let t=[];this.orderGroups.forEach((e,i)=>{e.items.forEach((i,s)=>{console.log(i),t.push({type:i.type,product_id:i.productId,sku_id:i.id,product_num:i.quantity,post:this.selectedAddress.id,remark:e.remark||""})})}),console.log(t),this.post({data:JSON.stringify({product_list:t})},"/api/order/create").then(t=>{1==t.code&&(this.$message.success("订单提交成功!"),this.$router.push("/User/OrderList"))})}}},l=d,n=i(1656),c=(0,n.A)(l,s,r,!1,null,"0103a9f5",null),u=c.exports},1734:function(t,e,i){i.d(e,{A:function(){return n}});var s=function(){var t=this,e=t._self._c;return e("el-dialog",{attrs:{title:("add"===t.type?"新增":"编辑")+"收货地址",visible:t.visible,width:"700px"},on:{close:t.handleClose}},[e("el-form",{ref:"addressForm",attrs:{model:t.form,rules:t.rules,"label-width":"100px",size:"small"}},[e("el-form-item",{attrs:{label:"收货人",prop:"username"}},[e("el-input",{attrs:{placeholder:"请填写收货人姓名,限制10个字符",maxlength:"10"},model:{value:t.form.username,callback:function(e){t.$set(t.form,"username",e)},expression:"form.username"}})],1),e("el-form-item",{attrs:{label:"所在地区",prop:"region"}},[e("div",{staticClass:"region-selector"},[e("el-select",{staticClass:"region-select",attrs:{placeholder:"选择省份/直辖市"},on:{change:t.handleProvinceChange},model:{value:t.form.province_id,callback:function(e){t.$set(t.form,"province_id",e)},expression:"form.province_id"}},t._l(t.provinces,function(t){return e("el-option",{key:t.id,attrs:{label:t.name,value:t.id}})}),1),e("el-select",{staticClass:"region-select",attrs:{placeholder:"选择城市",disabled:!t.form.province_id},on:{change:t.handleCityChange},model:{value:t.form.city_id,callback:function(e){t.$set(t.form,"city_id",e)},expression:"form.city_id"}},t._l(t.cities,function(t){return e("el-option",{key:t.id,attrs:{label:t.name,value:t.id}})}),1),e("el-select",{staticClass:"region-select",attrs:{placeholder:"选择县区",disabled:!t.form.city_id},model:{value:t.form.district_id,callback:function(e){t.$set(t.form,"district_id",e)},expression:"form.district_id"}},t._l(t.districts,function(t){return e("el-option",{key:t.id,attrs:{label:t.name,value:t.id}})}),1)],1)]),e("el-form-item",{attrs:{label:"详细地址",prop:"detail_addr"}},[e("el-input",{attrs:{placeholder:"请填写详细地址,限制500个字符",maxlength:"500"},model:{value:t.form.detail_addr,callback:function(e){t.$set(t.form,"detail_addr",e)},expression:"form.detail_addr"}})],1),e("el-form-item",{attrs:{label:"手机号码",prop:"mobile"}},[e("el-input",{attrs:{placeholder:"请填写手机号码,限制11位数字",maxlength:"11",oninput:"value=value.replace(/[^\\d]/g,'')"},model:{value:t.form.mobile,callback:function(e){t.$set(t.form,"mobile",e)},expression:"form.mobile"}})],1)],1),e("div",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[e("el-button",{attrs:{size:"small"},on:{click:t.handleClose}},[t._v("取消")]),e("el-button",{attrs:{size:"small",type:"primary"},on:{click:t.saveAddress}},[t._v("保存")])],1)],1)},r=[],a=(i(8111),i(2489),i(116),{name:"AddressFormDialog",props:{visible:{type:Boolean,default:!1},type:{type:String,required:!0,validator:t=>["add","edit"].includes(t)},initialData:{type:Object,default:()=>({})}},data(){const t=(t,e,i)=>e?/^1[3-9]\d{9}$/.test(e)?void i():i(new Error("请输入正确的11位手机号码")):i(new Error("请输入手机号码")),e=(t,e,i)=>{if(!this.form.province_id||!this.form.city_id||!this.form.district_id)return i(new Error("请完整选择省市区"));i()};return{form:{id:null,username:"",detail_addr:"",mobile:"",province_id:null,city_id:null,district_id:null,region:""},rules:{username:[{required:!0,message:"请输入收货人姓名",trigger:"blur"},{max:10,message:"姓名不能超过10个字符",trigger:"blur"}],region:[{required:!0,validator:e,trigger:"change"}],detail_addr:[{required:!0,message:"请输入详细地址",trigger:"blur"},{max:500,message:"详细地址不能超过500个字符",trigger:"blur"}],mobile:[{required:!0,validator:t,trigger:"blur"}]},regionData:[]}},computed:{provinces(){return this.regionData.filter(t=>1===t.level)},cities(){return this.form.province_id?this.regionData.filter(t=>2===t.level&&t.pid===this.form.province_id):[]},districts(){return this.form.city_id?this.regionData.filter(t=>3===t.level&&t.pid===this.form.city_id):[]}},watch:{visible(t){t&&this.initForm()},initialData:{handler(){this.visible&&this.initForm()},deep:!0}},mounted(){this.getRegionData()},methods:{async getRegionData(){try{const t=await this.post({},"/api/uservice/user/getAreas");t&&t.data?this.regionData=t.data:this.$message.error("获取地区数据失败")}catch(t){console.error("获取地区数据出错:",t),this.$message.error("获取地区数据时发生错误")}},initForm(){this.$nextTick(()=>{this.$refs.addressForm&&this.$refs.addressForm.resetFields(),this.form={id:"edit"===this.type?this.initialData.id:null,username:this.initialData.username||"",detail_addr:this.initialData.detail_addr||"",mobile:this.initialData.mobile||"",province_id:this.initialData.province_id||null,city_id:this.initialData.city_id||null,district_id:this.initialData.district_id||null,region:this.initialData.region||""},"edit"===this.type&&this.initialData.region&&!this.form.province_id&&this.echoRegionSelection(this.initialData.region)})},echoRegionSelection(t){const e=t.split(" ");if(e.length<3)return;const i=this.provinces.find(t=>t.name===e[0]);i&&(this.form.province_id=i.id,this.$nextTick(()=>{const t=this.cities.find(t=>t.name===e[1]);t&&(this.form.city_id=t.id,this.$nextTick(()=>{const t=this.districts.find(t=>t.name===e[2]);t&&(this.form.district_id=t.id)}))}))},handleProvinceChange(){this.form.city_id=null,this.form.district_id=null},handleCityChange(){this.form.district_id=null},saveAddress(){this.$refs.addressForm.validate(async t=>{if(!t)return;const e=this.provinces.find(t=>t.id===this.form.province_id),i=this.cities.find(t=>t.id===this.form.city_id),s=this.districts.find(t=>t.id===this.form.district_id);if(!(e&&i&&s))return void this.$message.warning("地区信息不完整");const r={...this.form,region:`${e.name} ${i.name} ${s.name}`};this.$emit("save",r),this.handleClose()})},handleClose(){this.$emit("update:visible",!1)}}}),o=a,d=i(1656),l=(0,d.A)(o,s,r,!1,null,"7d3ebefd",null),n=l.exports}}]);
|
|
//# sourceMappingURL=955.1d798592.js.map
|