This commit is contained in:
Vinjor 2025-04-02 17:35:06 +08:00
parent b7c44e9bc0
commit 6e9625fa40
4 changed files with 359 additions and 173 deletions

View File

@ -19,7 +19,8 @@
<view class="text little-1">{{ item.city }}</view> <view class="text little-1">{{ item.city }}</view>
<view class="text">{{ item.detail }}</view> <view class="text">{{ item.detail }}</view>
<view class="text little-2 item-flex"> <view class="text little-2 item-flex">
{{ item.name }} {{ item.tel }} <view v-if="item.isDefault=='1'" class="item-icon">默认</view> {{ item.name }} {{ item.tel }}
<view v-if="item.isDefault=='1'" class="item-icon">默认</view>
</view> </view>
</view> </view>
<view class="item-opt"> <view class="item-opt">
@ -36,14 +37,14 @@
<image class="" src="@/static/images/nothing.png"></image> <image class="" src="@/static/images/nothing.png"></image>
</view> </view>
</scroll-view> </scroll-view>
</view> </view>
</view> </view>
</template> </template>
<script> <script>
import { getUserAddress } from '@/api/business/member.js' import {
getUserAddress
} from '@/api/business/member.js'
export default { export default {
data() { data() {
return { return {
@ -55,45 +56,24 @@ import { getUserAddress } from '@/api/business/member.js'
total: 0, total: 0,
// //
isTriggered: false, isTriggered: false,
dataList: [{ dataList: []
id: null,
tel: "",
name: "",
city: "",
detail: "",
isDefault: "1",
}, {
id: null,
tel: "",
name: "",
city: "",
detail: "",
isDefault: "0",
}, {
id: null,
tel: "",
name: "",
city: "",
detail: "",
isDefault: "0",
}]
} }
}, },
onLoad() { onLoad() {
this.initData(); this.initData();
}, },
methods: { methods: {
initData(){ initData() {
getUserAddress().then(res=>{ getUserAddress().then(res => {
this.dataList = res.data this.dataList = res.data
}).catch((e)=>{ }).catch((e) => {
uni.showToast({ uni.showToast({
icon: 'error', icon: 'error',
duration: 2000, duration: 2000,
title: e title: e
}); });
}) })
}, },
addNew() { addNew() {
this.$tab.navigateTo(`/pages/mine/addr/addr-detail`) this.$tab.navigateTo(`/pages/mine/addr/addr-detail`)

View File

@ -1,97 +1,346 @@
<template> <template>
<view class="my-card-box"> <view :class="['my-card-box',ifChoose?'has-footer':'']">
<view class="card-dom click"> <view class="opt-box" v-if="!ifChoose">
<view class="card-title"> <view v-if="!ifEdit" class="item-dom" @click="manager(true)"><uni-icons type="bars" color="#FC1F3E"
<!-- 需要根据平台code取对应的图片 TODO --> size="16"></uni-icons><text></text></view>
<image :src="'/static/platform/'+'xiaohongshu'+'.png'" mode="aspectFit"></image> <view v-if="!ifEdit" class="item-dom" @click="addCard()">
<text>小红书博主</text> <uni-icons type="plusempty" color="#FC1F3E" size="16"></uni-icons>
<view class="edit-text" @click="edit()"> <text>新增名片</text>
<image style="margin-right: 10rpx;width: 30rpx;height: 30rpx;" src="@/static/mine/edit.png"
mode="aspectFit">
</image>
编辑
</view>
</view> </view>
<view v-for="item in busiCardList" class="card-content"> <view v-if="ifEdit" class="item-dom" @click="manager(false)"><uni-icons type="closeempty" color="#FC1F3E"
<image :src="'/static/platform/'+item.platformCode+'.png'" mode="aspectFit"></image> size="16"></uni-icons><text>退</text></view>
<view class="card-person-info"> </view>
<view style="font-weight: bold;"> <view class="addr-list-box">
<view>{{ item.nickname }} <image src="@/static/mine/sex_boy.png" mode="aspectFit"></image> <view class="card-dom " v-for="item in busiCardList">
<!-- 需要判断用户性别 TODO --> <!-- 多选框--管理状态或者选择名片时使用 -->
<!-- <image src="@/static/mine/sex_girl.png" mode="aspectFit"></image> --> <view class="choose-dom" v-if="ifEdit || ifChoose">
<uni-data-checkbox v-model="item.choosed" :disabled="1!=item.approvalStatus" multiple
:localdata="checkboxArray" />
</view>
<view :class="['right-content',item.choosed.length>0?'click':'']">
<view class="card-title">
<!-- 需要根据平台code取对应的图片 TODO -->
<image :src="'/static/platform/'+item.platformCode+'.png'" mode="aspectFit"></image>
<text>{{item.platformName}}博主</text>
<view class="edit-text" @click="edit()">
<text v-if="1==item.approvalStatus" style="color:#5986F2;">已审核</text>
<text v-else-if="0==item.approvalStatus" style="color:#FC1F3E ;">审核中</text>
<text v-else>未通过</text>
</view> </view>
</view> </view>
<view class="detail-text"> <view class="card-content">
粉丝{{ item.fansNum }} <view class="card-person-info">
<view class="card-name">
<view>{{ item.nickname }}</view>
</view>
<view class="detail-text">
<view class="fans-dom">
粉丝{{ formatNumberWithUnits(item.fansNum) }}
</view>
<view class="nickname-dom">
昵称{{ item.accountName }}
</view>
</view>
</view>
</view>
<view v-if="ifEdit" @click="del(item)" :class="['edit-dom',item.choosed.length>0?'':'no-choose']">删除
</view>
<view v-else :class="['edit-dom',item.choosed.length>0?'':'no-choose']" @click="edit(item)">编辑
</view> </view>
<view class="detail-text">
昵称{{ item.accountName }}
</view>
</view> </view>
</view> </view>
<image class="choosed" src="@/static/mine/choosed.png" mode="aspectFit"></image>
</view> </view>
<view class="add-new-card" @click="addCard()"> <view v-if="ifChoose" class="footer-box">
<image src="@/static/mine/new.png" mode="aspectFit"></image> <view class="left-radio">
<view>添加新的名片</view> <uni-data-checkbox @change="chooseAllFun()" multiple :localdata="chooseAll" />
</view>
<view class="right-button">
<text>已选择{{getChooseNum}}</text>
<view class="button-dom">保存</view>
</view>
</view> </view>
</view> </view>
</template> </template>
<script> <script>
import { getUserBusiCard } from '@/api/business/member.js' import {
formatNumberWithUnits
} from '@/utils/common.js'
import {
getUserBusiCard
} from '@/api/business/member.js'
export default { export default {
data() { data() {
return { return {
busiCardList:[], //
ifEdit: false,
//
ifChoose: true,
checkboxArray: [{
text: '',
value: true
}],
chooseAll: [{
text: '全选',
value: true
}],
busiCardList: [],
} }
}, },
onLoad() { computed: {
this.initData(); getChooseNum() {
}, return this.busiCardList.filter((item) => item.choosed.length > 0).length
}
},
onLoad() {
this.initData();
},
methods: { methods: {
// /**
initData(){ * 数值单位转换
getUserBusiCard().then(res=>{ * @param {Object} number
this.busiCardList = res.data */
}).catch((e)=>{ formatNumberWithUnits(number) {
uni.showToast({ return formatNumberWithUnits(number)
icon: 'error', },
duration: 2000, //
title: e initData() {
}); getUserBusiCard().then(res => {
}) if (res.data.length > 0) {
}, res.data.map((item) => {
item.choosed = []
this.busiCardList.push(item)
})
}
}).catch((e) => {
uni.showToast({
icon: 'error',
duration: 2000,
title: e
});
})
},
/**
* 全选
* @param {Object} e
*/
chooseAllFun(e) {
if (e.detail.value.length > 0) {
this.busiCardList.map((item) => {
if ("1" == item.approvalStatus) {
item.choosed = [true]
}
})
} else {
this.busiCardList.map((item) => {
if ("1" == item.approvalStatus) {
item.choosed = []
}
})
}
},
/**
* 删除名片
* @param {Object} item
*/
del(item) {},
// //
edit() { edit(item) {
this.$tab.navigateTo('/pages/mine/card/card-detail') this.$tab.navigateTo('/pages/mine/card/card-detail')
}, },
addCard() { addCard() {
this.$tab.navigateTo('/pages/mine/card/card-detail') this.$tab.navigateTo('/pages/mine/card/card-detail')
} },
/**
* 进入管理
*/
manager(flag) {
this.ifEdit = flag
},
} }
} }
</script> </script>
<style lang="scss"> <style lang="scss">
.has-footer {
padding-bottom: calc(var(--window-bottom) + 85rpx);
}
.my-card-box { .my-card-box {
border-top: 1rpx solid #F4F4F4; border-top: 1rpx solid #F4F4F4;
padding: 30rpx;
width: 100%; width: 100%;
color: #363636; color: #363636;
font-size: 30rpx; font-size: 32rpx;
height: 100%; height: 100%;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: self-start;
justify-content: center; justify-content: center;
position: relative; position: relative;
.opt-box {
width: 100%;
display: flex;
color: #FC1F3E;
padding: 25rpx;
align-items: center;
justify-content: center;
border-bottom: 1rpx solid #F2F2F2;
.item-dom {
flex: 1;
display: flex;
align-items: center;
justify-content: center;
text {
margin-left: 10rpx;
}
}
}
.addr-list-box {
height: 100%;
padding: 20rpx 30rpx;
background-color: #F2F2F2;
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: start;
.card-dom {
width: 100%;
font-size: 30rpx;
display: flex;
align-items: center;
justify-content: start;
position: relative;
.choose-dom {
width: 60rpx;
display: flex;
align-items: center;
justify-content: start;
}
.edit-dom {
right: 0;
bottom: 0;
position: absolute;
padding: 10rpx 30rpx;
font-size: 25rpx;
color: white;
background-color: #FC1F3E;
border-radius: 15rpx 0 15rpx 0;
}
.no-choose {
right: -3rpx !important;
bottom: -3rpx !important;
padding: 10rpx 33rpx 13rpx 30rpx !important;
border-radius: 15rpx 0 20rpx 0 !important;
}
.right-content {
flex: 1;
width: 100%;
border: 3rpx solid white;
padding: 20rpx;
border-radius: 20rpx;
background-color: white;
position: relative;
z-index: 10;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
margin-bottom: 20rpx;
.card-title {
width: 100%;
display: flex;
align-items: center;
justify-content: center;
image {
width: 40rpx;
height: 40rpx;
}
text {
padding-left: 10rpx;
flex: 1;
}
.edit-text {
display: flex;
align-items: center;
justify-content: flex-end;
text-align: right;
width: 150rpx;
}
}
.card-content {
margin-top: 20rpx;
width: 100%;
display: flex;
align-items: center;
justify-content: flex-start;
image {
width: 120rpx;
height: 120rpx;
border-radius: 15rpx;
}
.card-person-info {
padding-left: 20rpx;
flex: 1;
display: flex;
align-items: self-start;
justify-content: center;
flex-direction: column;
.card-name {
font-weight: bold;
font-size: 32rpx;
}
image {
margin-left: 10rpx;
width: 20rpx;
height: 20rpx;
}
.detail-text {
width: 100%;
display: flex;
color: #363636;
align-items: center;
justify-content: start;
font-size: 24rpx;
padding: 5rpx 0;
.fans-dom {
width: 30%;
}
.nickname-dom {
flex: 1;
}
}
}
}
}
}
}
.click { .click {
background-color: #FFF4F6 !important; border: 3rpx solid #FC1F3E !important;
border: 2rpx solid #FC1F3E !important;
position: relative; position: relative;
.choosed { .choosed {
@ -103,96 +352,40 @@
} }
} }
.card-dom { .footer-box {
width: 100%; z-index: 999;
border: 2rpx solid white; padding: 20rpx 30rpx;
padding: 25rpx;
border-radius: 40rpx;
background-color: white; background-color: white;
position: relative; width: 100%;
z-index: 10;
font-size: 26rpx;
display: flex; display: flex;
flex-direction: column;
align-items: center; align-items: center;
justify-content: center; justify-content: start;
margin-bottom: 20rpx; position: fixed;
bottom: var(--window-bottom);
.card-title { .left-radio {
width: 100%; text-align: left;
width: 30%;
}
.right-button {
flex: 1;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: flex-end;
image {
width: 40rpx;
height: 40rpx;
}
text { text {
padding-left: 15rpx; margin-right: 15rpx;
flex: 1; font-size: 24rpx;
} }
.edit-text { .button-dom {
display: flex; padding: 10rpx 40rpx;
align-items: center; background-color: #FC1F3E;
justify-content: flex-end;
width: 150rpx;
}
}
.card-content {
margin-top: 20rpx;
width: 100%;
display: flex;
align-items: center;
justify-content: flex-start;
image {
width: 120rpx;
height: 120rpx;
border-radius: 15rpx; border-radius: 15rpx;
color: white;
} }
.card-person-info {
padding-left: 20rpx;
flex: 1;
display: flex;
align-items: self-start;
justify-content: center;
flex-direction: column;
image {
margin-left: 10rpx;
width: 20rpx;
height: 20rpx;
}
.detail-text {
font-size: 20rpx;
padding: 5rpx 0;
}
}
}
}
.add-new-card {
width: 100%;
padding: 90rpx;
border-radius: 40rpx;
background-color: white;
position: relative;
z-index: 10;
font-size: 26rpx;
display: flex;
align-items: center;
justify-content: center;
image {
margin-right: 20rpx;
width: 50rpx;
height: 50rpx;
} }
} }
} }

View File

@ -3,7 +3,6 @@
<view class="line-box"> <view class="line-box">
<view class="dl-title">领域</view> <view class="dl-title">领域</view>
<button size="default" type="primary" @click="saveSet()">保存</button>
<view class="dl-content"> <view class="dl-content">
<view class="line-row" v-for="(item,index) in bloggerTypeList"> <view class="line-row" v-for="(item,index) in bloggerTypeList">
<view v-for="(t,i) in item" :class="t.code==dataObj.bloggerTypeCode?'line-item click':'line-item'" <view v-for="(t,i) in item" :class="t.code==dataObj.bloggerTypeCode?'line-item click':'line-item'"
@ -116,6 +115,9 @@
</view> </view>
</view> </view>
</view> </view>
<view class="line-box" style="align-items: center;">
<view class="submit-box" @click="saveSet()">保存</view>
</view>
<!-- 输入框示例 --> <!-- 输入框示例 -->
<uni-popup ref="inputDialog" type="dialog" :key="keywordsValue"> <uni-popup ref="inputDialog" type="dialog" :key="keywordsValue">
<uni-popup-dialog ref="inputClose" mode="input" title="新增关键词" placeholder="请输入关键词" <uni-popup-dialog ref="inputClose" mode="input" title="新增关键词" placeholder="请输入关键词"
@ -345,6 +347,16 @@
align-items: self-start; align-items: self-start;
justify-content: inherit; justify-content: inherit;
.submit-box {
padding: 15rpx 0;
background-color: #FC1F3E;
color: white;
width: 70%;
margin-bottom: 30rpx;
border-radius: 10rpx;
text-align: center;
}
.dl-title { .dl-title {
font-weight: bold; font-weight: bold;
font-size: 38rpx; font-size: 38rpx;
@ -445,4 +457,4 @@
} }
} }
} }
</style> </style>

View File

@ -544,6 +544,7 @@
// //
.checkbox__inner { .checkbox__inner {
border-radius: 50%;
/* #ifndef APP-NVUE */ /* #ifndef APP-NVUE */
flex-shrink: 0; flex-shrink: 0;
box-sizing: border-box; box-sizing: border-box;
@ -552,7 +553,7 @@
width: 16px; width: 16px;
height: 16px; height: 16px;
border: 1px solid $border-color; border: 1px solid $border-color;
border-radius: 4px; // border-radius: 4px;
background-color: #fff; background-color: #fff;
z-index: 1; z-index: 1;