|
|
- <template>
- <view class="address h-100">
- <view class="address-container" v-if="addressData.length">
- <view
- class="address-container-item flex align-center justify-between m-b-20"
- v-for="(item,index) in addressData"
- :key="index"
- @click="selectAddress(item)"
- >
- <view class="nameOne_box">
- <text class="nameOne">{{item.name.substr(0,1)}}</text>
- </view>
- <view class="flex-1 m-r-30">
- <view class="flex align-center">
- <text class="font-36 m-r-60" style="font-weight: bold;">{{item.name}}</text>
- <text class="text-grey font-32">{{item.phone}}</text>
- </view>
- <view class="m-b-4 address_box">
- <view class="icon_box m-r-20" v-if="item.defaultFlag">
- <u-tag text="默认" mode="dark" size="mini" v-if="item.defaultFlag"/>
- </view>
- <text class="font-30 m-r-20">{{item.shippingAddress}}</text>
- <text class="text-black font-30">{{item.addressDetail}}</text>
- </view>
- </view>
- <com-view @click="toEdit(item)" v-if="type !== 'select'">
- <view class="address-container-item-edit flex align-center justify-end">
- <u-icon name="edit-pen" color="#000" size="50"></u-icon>
- </view>
- </com-view>
- </view>
- </view>
- <view class="vw-100 h-100" v-if="!addressData.length">
- <u-empty icon-size="430" text="没有收货地址" :src="IMG_URL + 'address-empty.png'"></u-empty>
- </view>
- <view class="address-footer position-fixed flex align-center justify-center">
- <u-button type="primary" shape="circle" @click="toAdd" class="font-size-34">新增收货地址</u-button>
- </view>
- </view>
- </template>
-
- <script>
- import { IMG_URL } from '@/env.js'
- export default{
- data(){
- return{
- IMG_URL,
- value:'',
- params:{
- pageNo:1,
- pageSize:10
- },
- addressData:[],
- type: '',
- url: '' //从哪里来
- }
- },
-
- onLoad(options) {
- let pages_url = getCurrentPages();
- this.url = pages_url[0].route;
- if (options.type) this.type = options.type
-
- // 删除地址
- uni.$on('delAddress', params => {
- let idx = this.addressData.find(item => params.id === item.id)
- this.addressData.splice(idx, 1)
- })
- // 新增地址
- uni.$on('addAddress', () => {
- this.getAddressList()
- })
- // 编辑地址
- uni.$on('editAddress', params => {
- let idx = this.addressData.find(item => params.id === item.id)
- this.addressData.splice(idx, 1, {...this.addressData[idx], ...params})
- })
-
- },
- onShow() {
- this.getAddressList()
- },
- onUnload() {
- uni.$off('delAddress')
- uni.$off('addAddress')
- uni.$off('editAddress')
- // 获取倒退的页面
- uni.switchTab({
- url: this.url
- })
- },
-
- methods: {
- selectAddress (item) {
- if (this.type === 'select') {
- console.log(item)
- // uni.$emit('SELECT_ADDRESS', item)
- let params = {
- ...item,
- type: 'user'
- }
- this.$store.commit('set_location', params)
- uni.navigateBack({
- delta: 1
- })
- }else {
- // 从首页进入 选择地址
- this.type === 'select_home'
- let params = {
- ...item,
- }
- this.$store.commit('set_location', params)
- uni.navigateBack({
- delta: 3
- })
- }
- },
- toEdit(item) {
- // 编辑地址
- const info = JSON.stringify(item)
- console.log(encodeURIComponent(info))
- uni.navigateTo({
- url: `/pages/my/address/addressEdit?type=edit&title=编辑地址&info=${encodeURIComponent(info)}`
- })
- },
- getAddressList() {
- const params = this.params
- uni.showLoading();
- this.$api('getAddressList', params).then(res => {
- let { code, result, message } = res
- uni.hideLoading();
- if(code == 200) {
- this.addressData = result.records;
- console.log( code, result, message)
- }else{
- this.$Toast(message)
- }
- }).catch(err => {
- this.$Toast(err.message)
- })
- },
- toAdd () {
- // &info={}
- this.$tools.navigateTo({
- url: '/pages/my/address/addressEdit?type=add&title=新增地址'
- })
- }
- }
- }
- </script>
-
- <style scoped lang="scss">
-
- .nameOne_box{
- width: 100rpx;
- height: 100rpx;
- border-radius: 50%;
- text-align: center;
- line-height: 100rpx;
- font-size: 43rpx;
- font-weight: bold;
- color: #fff;
- margin-right: 20rpx;
- background-color: rgba(12,133,255,.6);
-
- }
- .address_box{
- float: left;
- .icon_box{
- display: inline-block;
- }
- }
- .list-box{
- width: 750upx;
- }
- .u-radio-group{
- width: 100%;
- }
- .item{
- margin: 32upx;
- border: 1upx solid #707070;
- padding: 20upx;
- border-radius: 10upx;
- position: relative;
- width: 100%;
- .delete{
- position: absolute;
- right: 20upx;
- top: 20upx;
- }
- .header-box{
- display: flex;
- align-items: center;
- text{
- margin-left: 12upx;
- font-size: 26upx;
- }
- .phone-box{
- margin-left: 20upx;
- }
- .nickname{
- font-size: 28upx;
- font-weight: bold;
- color: #000000;
- }
- .tel{
- color: #707070;
- margin-left: 4upx;
- }
- }
- .content-box{
- padding: 20upx 10upx;
- display: flex;
- font-size: 28upx;
- color: #707070;
- text{
- margin-left: 8upx;
- }
- }
- .bottom-box{
- padding:10upx 10upx 10upx 10upx;
- display: flex;
- justify-content: space-between;
- align-items: center;
- font-size: 26upx;
- .text-orange-dark{
- color: #FFA206;
- font-size: 26upx;
- }
- }
- }
- .function-box{
- position: fixed;
- bottom: 0upx;
- left: 0upx;
- height: 150upx;
- width: 750upx;
- display: flex;
- align-items: center;
- justify-content: center;
- .create{
- display: flex;
- align-items: center;
- justify-content: center;
- width: 670upx;
- height: 95upx;
- background-color: #000000;
- color: #FFFFFF;
- }
- }
-
- .address {
- padding-bottom: 120rpx;
- &-container {
- height: 100%;
- background: #fff;
- padding: 30rpx;
-
- &-item {
- border-bottom: 2rpx solid #f1f1f1;
- padding-bottom: 20rpx;
- &-edit {
- width: 50rpx;
- height: 50rpx;
- }
- }
- }
- &-footer {
- height: 120rpx;
- bottom: 0;
- left: 0;
- width: 100%;
- background: #fff;
- /deep/.u-btn {
- width: 600rpx;
- height: 80rpx;
- }
- }
- }
- </style>
|