|
|
- <template>
- <view class="card">
- <view class="top" @click="$emit('click')">
- <addressView :data="data"></addressView>
- </view>
- <view class="flex bottom">
- <view class="flex col">
- <view>
- <uv-radio-group
- v-model="radiovalue"
- shape="circle"
- size="36rpx"
- iconSize="36rpx"
- labelSize="24rpx"
- labelColor="#9B9B9B"
- activeColor="#7451DE"
- @change="onRadioChange"
- >
- <uv-radio :name="1">
- <view>默认地址</view>
- </uv-radio>
- </uv-radio-group>
- </view>
- </view>
- <button class="flex col btn" @click="onEdit">
- <image class="icon" src="@/pages_order/static/address/icon-edit.png" mode="scaleToFill"></image>
- <view>编辑</view>
- </button>
- <button class="flex col btn" @click="onDelete">
- <image class="icon" src="@/pages_order/static/address/icon-delete.png" mode="scaleToFill"></image>
- <view>删除</view>
- </button>
- </view>
- </view>
- </template>
-
- <script>
- import addressView from './addressView.vue';
-
- export default {
- components: {
- addressView,
- },
- props: {
- data: {
- type: Object,
- default() {
- return {}
- }
- },
- },
- data() {
- return {
- radiovalue: null,
- }
- },
- computed: {
- isDefault: {
- set(val) {
- this.radiovalue = val ? 1 : null
-
- if (this.data.default == val) {
- return
- }
-
- // todo: set this address as default
-
- this.$emit('defaultChange', val)
- },
- get() {
- return this.radiovalue == 1 ? true : false
- }
- },
- },
- watch: {
- data: {
- handler(val) {
- this.isDefault = val.default
- },
- immediate: true,
- deep: true,
- }
- },
- methods: {
- onRadioChange() {
- this.isDefault = true
- },
- onEdit() {
- // todo
- this.$emit('edit')
- },
- onDelete() {
- uni.showModal({
- title: '确认删除?',
- success : e => {
- if(e.confirm){
- // todo
- this.$emit('delete')
- }
- }
- })
- },
- }
- }
- </script>
-
- <style scoped lang="scss">
- .card {
- padding: 24rpx 32rpx;
- background: #FFFFFF;
- border-radius: 24rpx;
-
- .top {
- padding-bottom: 24rpx;
- }
-
- .bottom {
- padding-top: 24rpx;
- column-gap: 24rpx;
- border-top: 2rpx dashed #DADADA;
-
- .col {
- flex: 1;
- column-gap: 8rpx;
-
- font-family: PingFang SC;
- font-weight: 400;
- font-size: 24rpx;
- line-height: 1.4;
- color: #9B9B9B;
-
- .icon {
- width: 36rpx;
- height: 36rpx;
- }
- }
- }
- }
- </style>
|