123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228 |
- <template>
- <view class="content">
- <view class="row b-b">
- <text class="tit">联系人</text>
- <input class="input" type="text" v-model="addressData.consignee" placeholder="收货人姓名" placeholder-class="placeholder" />
- </view>
- <view class="row b-b">
- <text class="tit">手机号</text>
- <input class="input" type="number" v-model="addressData.phone" placeholder="收货人手机号码" placeholder-class="placeholder" />
- </view>
- <view class="row b-b">
- <text class="tit">城市</text>
- <input placeholder="请选择城市" disabled="true" :value="addressData.province + ' ' + addressData.city + ' ' + addressData.county" @click="lotusAddressData.visible = true" class="input">
- <lotus-address v-on:choseVal="choseValue" :lotusAddressData="lotusAddressData"></lotus-address>
- </input>
- </view>
- <view class="row b-b">
- <text class="tit">地图:</text>
- <input class="input" @click="openMap()" type="text" value="" v-model="mapAddressName" placeholder="在地图上搜索并选择地址" disabled="true" />
- <text class="yticon icon-shouhuodizhi"></text>
- </view>
- <view class="row b-b">
- <text class="tit">详细</text>
- <input class="input" type="text" v-model="addressData.address" placeholder="街道、楼号、门牌" placeholder-class="placeholder" />
- </view>
- <view class="row default-row">
- <text class="tit">设为默认</text>
- <switch :checked="addressData.defaultAddress===0?false:true" color="#2AAC34" @change="switchChange" />
- </view>
- <button class="add-btn" @click="confirm">提交</button>
- </view>
- </template>
- <script>
- import lotusAddress from "@/components/Winglau14-lotusAddress/Winglau14-lotusAddress.vue"
- export default {
- data() {
- return {
- mapAddressName: '',
- addressData: {
- consignee: '',
- phone: '',
- province: '',
- city: '',
- county: '',
- address: '',
- defaultAddress: 0,
- def: false
- },
- lotusAddressData:{
- visible:false,
- provinceName:'',
- cityName:'',
- townName:'',
- },
- }
- },
- onLoad(option){
- let title = '新增收货地址';
- if(option.type==='edit'){
- title = '编辑收货地址'
- this.addressData = JSON.parse(option.data)
- }else {
- if(option.data){
- title = '新增收货地址'
- this.addressData = JSON.parse(option.data)
- }
- }
- this.manageType = option.type;
- uni.setNavigationBarTitle({
- title
- })
- },
- methods: {
- switchChange(e){
- this.addressData.defaultAddress = e.detail.value?1:0
- this.addressData.def = e.detail.value
- },
- choseValue(res){
- //res数据源包括已选省市区与省市区code
- this.lotusAddressData.visible = false;//visible为显示与关闭组件标识true显示false隐藏
- if(res.isChose){
- console.log(res)
- this.lotusAddressData.provinceName = res.provice;//省
- this.lotusAddressData.cityName = res.city;//市
- this.lotusAddressData.townName = res.town;//区
- //赋值到addressData
- this.addressData.province = res.provice
- this.addressData.city = res.city
- this.addressData.county = res.town
- }
- },
- openMap() {
- var _this = this;
- uni.chooseLocation({
- success: function(res) {
- console.log('res', res);
- _this.addressData.latitude = res.latitude;
- _this.addressData.longitude = res.longitude;
- _this.mapAddressName= res.name;
- _this.addressData.address = res.name;
- }
- });
- },
- //提交
- confirm(){
- const that = this
- let data = this.addressData;
- if(!data.consignee){
- this.$api.msg('请填写收货人姓名');
- return;
- }
- if (!/^(1[3|4|5|6|7|8|9][0-9])\d{8}$/.test(data.phone)) {
- that.$api.msg('请输入正确的手机号码');
- return
- }
- if (!data.province) {
- that.$api.msg('请选择省市区');
- return
- }
- if (!data.city) {
- that.$api.msg('请选择二级城市')
- return
- }
- if (!data.county) {
- that.$api.msg('请选择三级区或县')
- return
- }
- if(!data.address){
- that.$api.msg('请输入详细地址');
- return
- }
- //this.$api.prePage()获取上一页实例,可直接调用上页所有数据和方法,在App.vue定义
- //this.$api.msg(`地址${this.manageType=='edit' ? '修改': '添加'}成功`);
- if (that.manageType === 'edit') {
- that.$api.request('post', 'address/app/updateAddress', {
- ...that.addressData,
- addressId : that.addressData.id
- }).then(res => {
- // 修改为更通用的方式
- const pages = getCurrentPages();
- const prevPage = pages[pages.length - 2];
- if (prevPage && prevPage.$vm) {
- prevPage.$vm.loadData && prevPage.$vm.loadData(); // 调用上一页的刷新方法
- }
- uni.navigateBack();
- })
- } else {
- that.$api.request('post', 'address/app/addAddress', that.addressData).then(res => {
- const pages = getCurrentPages();
- const prevPage = pages[pages.length - 2];
- if (prevPage && prevPage.$vm) {
- prevPage.$vm.loadData && prevPage.$vm.loadData(); // 调用上一页的刷新方法
- }
- uni.navigateBack();
- })
- }
- },
- },
- components:{
- "lotus-address":lotusAddress
- },
- }
- </script>
- <style lang="scss">
- page{
- background: $page-color-base;
- padding-top: 16upx;
- }
- .row{
- display: flex;
- align-items: center;
- position: relative;
- padding:0 30upx;
- height: 110upx;
- background: #fff;
- .tit{
- flex-shrink: 0;
- width: 120upx;
- font-size: 30upx;
- color: $font-color-dark;
- }
- .input{
- flex: 1;
- font-size: 30upx;
- color: $font-color-dark;
- }
- .icon-shouhuodizhi{
- font-size: 36upx;
- color: $font-color-light;
- }
- }
- .default-row{
- margin-top: 16upx;
- .tit{
- flex: 1;
- }
- switch{
- transform: translateX(16upx) scale(.9);
- }
- }
- .add-btn{
- display: flex;
- align-items: center;
- justify-content: center;
- width: 690upx;
- height: 80upx;
- margin: 60upx auto;
- font-size: $font-lg;
- color: #fff;
- background-color: $base-color;
- border-radius: 10upx;
- // box-shadow: 1px 2px 5px rgba(219, 63, 96, 0.4);
- }
- </style>
|