123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472 |
- <template>
- <view class="pages">
- <view class="addrs">
- <view class="addrs-item" :class="item.defaultStatus==1?'default':''" v-for="(item,index) in addrsList" :key="index">
- <view class="addrs-item-content" @click="selectDefault(item)">
- <view class="addrs-item-upwrap">
- <view class="addrs-item-name">收货人:{{item.name}}</view>
- <view class="addrs-item-phoneNumber">{{item.phoneNumber}}</view>
- </view>
- <view class="addrs-item-addr">收货地址:{{item.province}}{{item.city}}{{item.region}}{{item.detailAddress}}</view>
- </view>
- <view class="addrs-item-icon-wrap" @click="editAddr(item)">
-
- <text>编辑</text>
- </view>
- </view>
- </view>
- <view class="new-btn-wrap">
- <view class="new-btn" @click="newAddr">添加新地址</view>
- </view>
-
- <view class="newaddr-page fix-content translate" :class="{ 'open': fixPageOpen }">
- <view class="fix-content-nav"><text @click="closeFixPage" class="iconfont iconhoutui"></text></view>
-
-
- <view class="form-item select-addr required" @click="addressShow = true">
- <view class="form-item-til">选择地址</view>
- <view class="form-item-con">
- <text v-if="address==''">请选择地址</text>
- {{address}}
- <pickerAddress v-model="addressShow" @confirm="addresspick" />
- </view>
- </view>
- <view class="form-item required">
- <view class="form-item-til">详细地址</view>
- <view class="form-item-con">
- <input type="text" placeholder="请输入详细地址" v-model="params.detailAddress" value="" />
- </view>
- </view>
- <view class="form-item required">
- <view class="form-item-til">联系人</view>
- <view class="form-item-con">
- <input type="text" placeholder="请输入联系人" v-model="params.name" value="" />
- </view>
- </view>
- <view class="form-item required">
- <view class="form-item-til">联系电话</view>
- <view class="form-item-con">
- <input type="text" placeholder="请输入联系电话" v-model="params.phoneNumber" value="" />
- </view>
- </view>
- <view class="form-item">
- <view class="form-item-til">邮政编码</view>
- <view class="form-item-con">
- <input type="text" placeholder="请输入邮政编码" v-model="params.postCode" value="" />
- </view>
- </view>
- <view class="form-item">
- <view class="form-item-til">设为默认收货地址</view>
- <view class="form-item-con" style="min-width: auto;">
- <switch :checked="params.defaultStatus==1?true:false" @change="switchDefaultStatus" />
- </view>
- </view>
- <view class="form-item" v-if="isedit">
- <view class="form-item-til" style="color: red;" @click="delAddr">删除收货地址</view>
- </view>
- <view class="form-item save-addr">
- <view class="form-item-til" @click="saveAddr">保存收货地址</view>
- </view>
-
- </view>
-
- <uni-popup ref="popup" type="dialog">
- <uni-popup-dialog type="info" content="确认删除此地址吗?" :duration="2000" :before-close="true" @close="closepopup" @confirm="confirmpopup"></uni-popup-dialog>
- </uni-popup>
- </view>
- </template>
- <script>
-
-
-
-
-
-
-
- import uniPopup from '@/components/uni-popup/uni-popup.vue';
- import uniPopupDialog from '@/components/uni-popup/uni-popup-dialog.vue';
- import pickerAddress from '@/components/liudx-pickerAddress/index.vue'
- const defaultparams= {
- token: '',
- name: '',
- phoneNumber: "",
- defaultStatus: "0",
- postCode: "",
- province: "",
- city: "",
- region: "",
- detailAddress: "",
- latitude: '',
- longitude: ''
- };
- export default {
-
-
-
-
-
-
-
-
-
-
-
- components: {
-
-
-
-
-
- uniPopup,
- uniPopupDialog,
- pickerAddress
- },
- data() {
- return {
- addressShow: false,
- form: {
- province: '',
- city: '',
- area: '',
- },
- address: '',
-
- isedit: false,
- isselectAddr:false,
- addrsList: [],
- token:'',
- params: Object.assign({},defaultparams),
- ruleItems:{
- name: '',
- phoneNumber: "",
- province: "",
- city: "",
- region: "",
- detailAddress: "",
- },
- rules: {
- name: {rule: /^.{1,20}$/,msg: "请填写姓名(1-20个字符)"},
- province: {rule: /\S/,msg: "请填写必要内容"},
- city: {rule: /\S/,msg: "请填写必要内容"},
- region: {rule: /\S/,msg: "请填写必要内容"},
- detailAddress: {rule: /\S/,msg: "请填写详细地址"},
- phoneNumber: {rule: /(^1[3|4|5|7|8|9]\d{9}$)|(^09\d{8}$)/,msg: "请填写正确手机号"},
- },
- fixPageOpen: false,
- center: {
- lng: 106.632713,
- lat: 26.653157
- },
- zoom: 12,
- }
- },
- onShow() {
- let serf = this;
- this.getAddrList();
- },
- onLoad() {
-
- let self = this;
- uni.getStorage({
- key:'token',
- success: function (res) {
- self.token = res.data;
-
- }
- });
- uni.getStorage({
- key:'selectAddr',
- success: function (res) {
- self.isselectAddr = true;
-
- },
- fail:function(){
- self.isselectAddr = false;
- }
- });
-
- },
- onUnload() {
- this.isselectAddr = false;
- uni.setStorage({
- key:'selectAddr',
- data:false
- });
- },
- methods: {
- addresspick(obj) {
- console.log('addresspick',obj);
- this.params.province = obj.province.areaName;
- this.params.city = obj.city.areaName;
- this.params.region = obj.area.areaName||'';
- this.concatAddr();
- },
- concatAddr(){
- this.address = this.params.province + this.params.city +this.params.region;
- },
- getAddrList() {
- let thetoken = 'Bearer ' + this.token;
- this.$api.http.get(this.config.apiBaseurl + '/member/address/list',{header: {Authorization:thetoken}}).then(res => {
-
- this.addrsList = res.data.data;
- if(this.addrsList.length == 1 && this.addrsList[0].defaultStatus!=1){
-
-
- setTimeout(this.setDefault(this.addrsList[0].id),1000);
-
- }
- }).catch(err => {
-
- })
- },
- newAddr() {
- this.fixPageOpen = true;
- },
- closeFixPage(){
- this.fixPageOpen = false;
- this.params = Object.assign({},defaultparams);
- this.isedit = false;
- this.address = '';
- this.getAddrList();
-
- },
-
- switchDefaultStatus(e) {
- if (e.target.value) {
- this.params.defaultStatus = 1;
- } else {
- this.params.defaultStatus = 0;
- }
-
- },
- editAddr(item){
- this.isedit = true;
- this.params = Object.assign(this.params,item);
- this.concatAddr();
- this.fixPageOpen = true;
- },
- saveAddr(){
- console.log(this.isedit);
- for (let x in this.ruleItems) {
-
- if(!this.validate(x)) return;
- }
- console.log('this.params',this.params);
-
- if(this.isedit){
-
-
- this.$api.http.put(this.config.apiBaseurl + '/member/address/update/'+this.params.id,this.params,{
- header: {
- Accept:'application/json',
- Authorization: 'Bearer '+ this.token,
- },
- }).then(res => {
- this.closeFixPage();
-
- }).catch(err =>{
- console.log('err',err)
- });
- }else{
-
- if(this.addrsList.length == 0 ){this.params.defaultStatus = 1}
- this.$api.http.post(this.config.apiBaseurl + '/member/address/add',this.params,{
- header: {
- Accept:'application/json',
- Authorization: 'Bearer '+ this.token,
- },
- }).then(res => {
- this.closeFixPage();
-
- uni.getStorage({
- key:'productID',
- success: res => {
- console.log('productID',res.data);
- this.jumpProduct(res.data);
- uni.removeStorage({
- key:'productID'
- });
- }
- });
-
-
- }).catch(err =>{
- console.log('err',err)
- });
- }
-
-
- },
- closepopup(done){
- done()
- },
- confirmpopup(done,value){
- this.$api.http.delete(this.config.apiBaseurl + '/member/address/delete/'+this.params.id,{},{
- header: {
- Accept:'application/json',
- Authorization: 'Bearer '+ this.token,
- },
- }).then(res => {
- this.closeFixPage();
-
- }).catch(err =>{
- console.log('err',err)
- });
- done()
- },
- delAddr(item){
- this.$refs.popup.open();
- },
- selectDefault(item){
-
- if(item.defaultStatus != 1){
- this.setDefault(item.id);
- }
- console.log(this.$router);
- console.log(this.$router.history.current.fullPath);
- if(this.isselectAddr){this.$router.go(-1);}
- },
- setDefault(id){
- this.$api.http.put(this.config.apiBaseurl + '/member/address/default/'+id,{},{
- header: {
- Accept:'application/json',
- Authorization: 'Bearer '+ this.token,
- },
- }).then(res => {
-
- console.log('res',res)
- }).catch(err =>{
- console.log('err',err)
- });
- },
-
- validate(key) {
- let bool = true;
- if (!this.rules[key].rule.test(this.params[key])) {
-
- uni.showToast({
- icon:"none",
- title: this.rules[key].msg,
- })
-
- bool = false;
- return false;
- }
- return bool;
- },
-
- jumpProduct(id){
- uni.navigateTo({
- url:`/pages/product/product?id=${id}`,
- fail(err) {
- console.log(err)
- }
- })
- },
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- }
- }
- </script>
- <style scoped>
- @import url("./addrs.css");
- </style>
|