<!--商机转订单弹窗--> <template> <el-dialog title="商机转订单" width="1030px" :visible.sync="isShowInfo" append-to-body @close="close" > <div v-if="isShowInfo" class="salesDialog"> <div class="container"> <div class="containerFirst"> <div class="inputBox"> <red-star /> <input-vue v-model="changeOrderInfo.receiver" title="收货人" width="300px" class="inputWidth" /> </div> <div class="inputBox"> <red-star /> <input-vue v-model="changeOrderInfo.receiverPhone" title="收货人联系方式" width="300px" class="inputWidth" /> </div> </div> <div class="middle"> <red-star /> <input-vue title="交付地址"> <el-select v-model="changeOrderInfo.deliveryProvince" filterable placeholder="请选择" style="margin-right: 10px" @change="changeProvince" > <el-option v-for="item in ProvinceList" :key="item.id" :label="item.areaName" :value="item.id" /> </el-select> <el-select v-model="changeOrderInfo.deliveryCity" filterable placeholder="请选择" style="margin-right: 10px" @change="changeCity" > <el-option v-for="item in CityList" :key="item.id" :label="item.areaName" :value="item.id" /> </el-select> <el-select v-model="changeOrderInfo.deliveryArea" filterable placeholder="请选择" style="margin-right: 10px" > <el-option v-for="item in AreaList" :key="item.id" :label="item.areaName" :value="item.id" /> </el-select> <el-input v-model="changeOrderInfo.deliveryAddress" placeholder="请输入内容" style="width: 638px" /> </input-vue> </div> <div class="containerFirst"> <div class="inputBox"> <red-star /> <input-vue title="交付日期" class="inputWidth"> <el-date-picker v-model="changeOrderInfo.deliveryDate" style="width: 300px" type="date" placeholder="选择日期" format="yyyy 年 MM 月 dd 日" value-format="yyyy-MM-dd" /> </input-vue> </div> <div class="inputBox"> <input-vue title="备注" class="inputWidth" style="justify-content: space-between" > <el-input v-model="changeOrderInfo.remark" style="width: 300px" type="textarea" :rows="3" placeholder="请输入内容" /> </input-vue> </div> </div> </div> <div class="btnBox"> <el-button type="primary" class="save" @click="save"> 保存 </el-button> <el-button type="info" class="close" @click="close"> 取消 </el-button> </div> </div> </el-dialog> </template> <script> import InputVue from "../../input/inputVue.vue"; import RedStar from "../../redStar.vue"; import DialogHeader from "../dialogHeader.vue"; import { order_area } from "../../../../api/order/order"; import { turnOrder } from "../../../../api/sales/shop"; export default { components: { DialogHeader, InputVue, RedStar, }, props: ["isShowInfo", "busOppoId"], data() { return { ProvinceList: [], CityList: [], AreaList: [], changeOrderInfo: { busOppoId: "", deliveryDate: "", deliveryProvince: "", deliveryCity: "", deliveryArea: "", deliveryAddress: "", receiver: "", receiverPhone: "", remark: "", }, }; }, mounted() { order_area("pid=0").then((res) => { console.log(res); this.ProvinceList = res; }); }, methods: { save() { const { receiver, deliveryDate } = this.changeOrderInfo; // console.log(temp); if ( this.valiateProvince() && this.valiatePhone() && receiver && deliveryDate ) { const temp = { ...this.changeOrderInfo }; temp.busOppoId = this.busOppoId; const pindex = this.ProvinceList.findIndex((item) => { return item.id == temp.deliveryProvince; }); const cindex = this.CityList.findIndex((item) => { return item.id == temp.deliveryCity; }); const aindex = this.AreaList.findIndex((item) => { return item.id == temp.deliveryArea; }); temp.deliveryProvince = this.ProvinceList[pindex].areaName; temp.deliveryCity = this.CityList[cindex].areaName; temp.deliveryArea = this.AreaList[aindex].areaName; turnOrder(temp).then((res) => { this.$message.success("添加成功"); this.close(); }); }else { console.log(this.valiatePhone()) if(this.valiatePhone() === false){ this.$message.error("请检查手机号格式是否正确"); }else if(this.valiateProvince() === false){ this.$message.error("请检查地址格式是否正确"); }else{ this.$message.error("请正确填写信息"); } } }, close() { this.$emit("close"); this.reset(); }, reset() { this.changeOrderInfo = { busOppoId: "", deliveryDate: "", deliveryProvince: "", deliveryCity: "", deliveryArea: "", deliveryAddress: "", receiver: "", receiverPhone: "", remark: "", }; }, changeProvince(e) { order_area("pid=" + e).then((res) => { console.log(res); this.CityList = res; }); }, changeCity(e) { order_area("pid=" + e).then((res) => { console.log(res); this.AreaList = res; }); }, valiateProvince() { // 验证地址是否正确 const temp = { ...this.changeOrderInfo }; const pindex = this.ProvinceList.findIndex((item) => { return item.id == temp.deliveryProvince; }); const cindex = this.CityList.findIndex((item) => { return item.id == temp.deliveryCity; }); const aindex = this.AreaList.findIndex((item) => { return item.id == temp.deliveryArea; }); if (cindex < 0 || aindex < 0 || pindex < 0) { return false; } else { return true; } }, valiatePhone() { const reg = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/; if (reg.test(this.changeOrderInfo.receiverPhone)) { return true; } else { return false; } }, }, }; </script> <style lang="scss" scoped> .salesDialog { width: 1000px; .container { padding: 20px; .containerFirst, .middle { display: flex; align-items: center; // background: blue; } .middle { padding-right: 54px; } .containerFirst { // background: red; flex: 1; .inputBox { // background: green; display: flex; flex: 1; align-items: center; // justify-content: space-between; padding-right: 28px; } } } } .btnBox { padding: 30px; box-sizing: border-box; display: flex; align-items: center; justify-content: space-evenly; .save, .close { width: 100px; } } </style>