This commit is contained in:
PQZ 2025-04-09 15:52:10 +08:00
commit 6e41bc2374
21 changed files with 1122 additions and 68 deletions

View File

@ -58,7 +58,7 @@
align-items: center; align-items: center;
font-size: 30rpx; font-size: 30rpx;
justify-content: center; justify-content: center;
z-index: 999; z-index: 9;
.navigationBarBack { .navigationBarBack {
width: 200rpx; width: 200rpx;

View File

@ -113,8 +113,7 @@
height: 130rpx; height: 130rpx;
.dl-image { .dl-image {
width: 70rpx; height: 45rpx;
height: 55rpx;
} }
.dl-vip { .dl-vip {

View File

@ -24,6 +24,9 @@ module.exports = {
}, { }, {
title: "新人手册", title: "新人手册",
code: "new_people_text" code: "new_people_text"
}, {
title: "认证指南",
code: "user_auth_text"
} }
] ]
} }

View File

@ -149,6 +149,18 @@
"style": { "style": {
"navigationBarTitleText": "" "navigationBarTitleText": ""
} }
},
{
"path": "auth/auth-choose",
"style": {
"navigationBarTitleText": ""
}
},
{
"path": "auth/auth-form",
"style": {
"navigationBarTitleText": ""
}
} }
] ]
}], }],

View File

@ -0,0 +1,161 @@
<template>
<view class="auth-choose-box">
<navigation-bar-vue title="通告主认证" style="width: 100%;" background-color="#ffffff"
title-color="#000000"></navigation-bar-vue>
<view class="choose-detail">
<view class="item-title">依照相关法律法规请先验证身份</view>
<view class="item-detail" style="background-color: #FFF1F3;" @click="goForm('01')">
<view class="detail-left-box">
<view class="left-top">
<image src="@/static/mine/auth/dian.png" mode="aspectFit"></image>
<text>品牌方</text>
</view>
<view class="left-bottom">如果你要推广自己公司的产品请选择品牌方</view>
</view>
<image class="detail-right-img" src="@/static/mine/auth/pinpaifang.png" mode="aspectFit"></image>
</view>
<view class="item-detail" style="background-color: #F2FAFE;" @click="goForm('02')">
<view class="detail-left-box">
<view class="left-top">
<image src="@/static/mine/auth/dian.png" mode="aspectFit"></image>
<text>代运营公司</text>
</view>
<view class="left-bottom">如果你所在的公司需要推广其他公司的产品请选择代运营公司</view>
</view>
<image class="detail-right-img" src="@/static/mine/auth/gognsi.png" mode="aspectFit"></image>
</view>
<view class="item-detail" style="background-color: #F8F4FF;" @click="goForm('03')">
<view class="detail-left-box">
<view class="left-top">
<image src="@/static/mine/auth/dian.png" mode="aspectFit"></image>
<text>个人PR</text>
</view>
<view class="left-bottom">如果你是以个人名义推广其他公司的产品请选择个人PR</view>
</view>
<image class="detail-right-img" src="@/static/mine/auth/geren.png" mode="aspectFit"></image>
</view>
<view class="item-detail" style="background-color: #FEF8F3;" @click="goForm('04')">
<view class="detail-left-box">
<view class="left-top">
<image src="@/static/mine/auth/dian.png" mode="aspectFit"></image>
<text>电商</text>
</view>
<view class="left-bottom">如果你是淘宝/天猫/京东等电商商家想推广自己店铺的产品请选择电商</view>
</view>
<image class="detail-right-img" src="@/static/mine/auth/dianshang.png" mode="aspectFit"></image>
</view>
</view>
</view>
</template>
<script>
import navigationBarVue from '@/components/navigation/navigationBar.vue';
export default {
components: {
navigationBarVue
},
data() {
return {
}
},
methods: {
goForm(value) {
this.$tab.navigateTo('/pages/mine/auth/auth-form?key=' + value)
}
}
}
</script>
<style lang="scss">
.auth-choose-box {
padding-top: calc(90rpx + var(--status-bar-height));
border-top: 1rpx solid #F4F4F4;
background-color: white;
width: 100%;
color: #363636;
font-size: 30rpx;
height: 100%;
display: flex;
flex-direction: column;
align-items: self-start;
justify-content: center;
position: relative;
.choose-detail {
border-top: 1rpx solid #F4F4F4;
height: calc(100vh - var(--status-bar-height) - var(--window-bottom) - 95rpx);
overflow-y: scroll;
width: 100%;
padding: 20rpx 30rpx;
background-color: white;
border-radius: 20rpx;
display: flex;
flex-direction: column;
align-items: self-start;
justify-content: start;
position: relative;
.item-title {
padding-bottom: 20rpx;
font-weight: bold;
background-image: url('/static/mine/auth/xiantiao.png');
background-repeat: no-repeat;
background-position: bottom right;
background-size: 43% 60%;
}
.item-detail {
width: 100%;
display: flex;
align-items: center;
justify-content: start;
margin-top: 20rpx;
padding: 30rpx;
border-radius: 20rpx;
.detail-left-box {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
justify-content: start;
padding-right: 20rpx;
.left-top {
width: 100%;
display: flex;
align-items: center;
justify-content: start;
margin-bottom: 20rpx;
image {
width: 30rpx;
height: 30rpx;
}
text {
margin-left: 10rpx;
font-weight: bold;
font-size: 34rpx;
}
}
.left-bottom {
font-size: 26rpx;
width: 100%;
display: flex;
align-items: center;
justify-content: start;
}
}
.detail-right-img {
width: 180rpx;
height: 180rpx;
margin-right: 30rpx;
}
}
}
}
</style>

View File

@ -0,0 +1,605 @@
<template>
<view class="container-box">
<navigation-bar-vue title="通告主认证" style="width: 100%;" background-color="#ffffff"
title-color="#000000"></navigation-bar-vue>
<view class="content">
<view class="title-max-box">
<view class="title-box">
<view class="item-title">
<view style="padding-bottom: 20rpx;">我是</view>
<view class="bg-img">{{identityTypeText}}</view>
</view>
<view class="title-right" @click="viewAuthText()">认证指南<uni-icons type="right" color="#623109"
size="12"></uni-icons></view>
</view>
<view class="form-warn">
<image src="@/static/detail/warn.png" mode="aspectFit"></image>
<text>平台不会公开用户隐私信息仅用于验证身份</text>
</view>
</view>
<!-- 表单区域 -->
<view class="content-detail-box">
<!-- 资质认证 -->
<view class="form-box">
<view class="left-top">
<image src="@/static/mine/auth/dian.png" mode="aspectFit"></image>
<text>资质认证</text>
</view>
<view class="form-content">
<view class="item-field-row" v-if="'03'!=identityType">
<view class="img-upload" v-if="'01'==identityType">
<uni-file-picker iconPath="/static/mine/auth/shangbiao.png" :value="SBList"
imgTitle="商标注册证" :sizeType="sizeType" @select="afterRead($event,'SBList')"
@delete="deleteFile($event,'SBList')" limit="1"></uni-file-picker>
</view>
<view class="img-upload">
<uni-file-picker iconPath="/static/mine/auth/yingyezhizhao.png" required="true"
:value="YYZZList" imgTitle="营业执照" :sizeType="sizeType"
@select="afterRead($event,'YYZZList')" @delete="deleteFile($event,'YYZZList')"
limit="1"></uni-file-picker>
</view>
</view>
<view class="item-field" v-if="'02'==identityType || '03'==identityType">
<view class="item-lable is-required">
<image src="@/static/mine/required.png" mode="aspectFit"></image>与品牌方沟通记录
</view>
<view class="item-value">
<uni-file-picker :value="GTList" :sizeType="sizeType"
@select="afterRead($event,'GTList')" @delete="deleteFile($event,'GTList')"
limit="9"></uni-file-picker>
</view>
</view>
<view class="item-field" v-if="'03'==identityType">
<view class="item-lable is-required">
<image src="@/static/mine/required.png" mode="aspectFit"></image>品牌投放授权/合同
</view>
<view class="warn-little-text">* 需加盖申请主体红色公章不支持PS章电子章部门章及专用章</view>
<view class="item-value">
<uni-file-picker :value="SQList" :sizeType="sizeType"
@select="afterRead($event,'SQList')" @delete="deleteFile($event,'SQList')"
limit="9"></uni-file-picker>
</view>
</view>
<view class="item-field-row" v-if="'01'==identityType">
<view class="item-lable is-required">
<image src="@/static/mine/required.png" mode="aspectFit"></image>品牌名
</view>
<view class="item-value">
<input class="uni-input" v-model="dataObj.name" type="number" placeholder="请输入" />
</view>
</view>
<view class="item-field-row" v-if="'01'==identityType || '02'==identityType">
<view class="item-lable is-required">
<image src="@/static/mine/required.png" mode="aspectFit"></image>公司全称
</view>
<view class="item-value">
<input class="uni-input" v-model="dataObj.name" type="number" placeholder="请输入" />
</view>
</view>
<view class="item-field-row" v-if="'03'==identityType">
<view class="item-lable is-required">
<image src="@/static/mine/required.png" mode="aspectFit"></image>授权公司全称
</view>
<view class="item-value">
<input class="uni-input" v-model="dataObj.name" type="number" placeholder="请输入" />
</view>
</view>
<view class="item-field" v-if="'04'==identityType">
<view class="item-lable is-required">
<image src="@/static/mine/required.png" mode="aspectFit"></image>店铺后台截图
</view>
<view class="item-value">
<uni-file-picker :value="DPHTList" :sizeType="sizeType"
@select="afterRead($event,'DPHTList')" @delete="deleteFile($event,'DPHTList')"
limit="9"></uni-file-picker>
</view>
</view>
<view class="item-field" v-if="'04'==identityType">
<view class="item-lable is-required">
<image src="@/static/mine/required.png" mode="aspectFit"></image>店铺物流截图
</view>
<view class="item-value">
<uni-file-picker :value="DPWLList" :sizeType="sizeType"
@select="afterRead($event,'DPWLList')" @delete="deleteFile($event,'DPWLList')"
limit="9"></uni-file-picker>
</view>
</view>
<view class="item-field-row" v-if="'04'==identityType">
<view class="item-lable is-required">
<image src="@/static/mine/required.png" mode="aspectFit"></image>店铺名称
</view>
<view class="item-value">
<input class="uni-input" v-model="dataObj.name" type="number" placeholder="请输入" />
</view>
</view>
<view class="item-field-row" v-if="'04'==identityType">
<view class="item-lable is-required">
<image src="@/static/mine/required.png" mode="aspectFit"></image>店铺链接
</view>
<view class="item-value">
<input class="uni-input" v-model="dataObj.name" type="number" placeholder="请输入" />
</view>
</view>
<view class="item-field-row">
<view class="item-lable is-required">
<image src="@/static/mine/required.png" mode="aspectFit"></image>行业领域
</view>
<view class="item-value">
<input class="uni-input" v-model="dataObj.name" type="number" placeholder="请输入" />
</view>
</view>
<view class="item-field" v-if="'03'!=identityType">
<view class="item-lable is-required">
<image src="@/static/mine/required.png" mode="aspectFit"></image>公司所在城市
</view>
<view class="item-value">
<uni-data-picker placeholder="请选择" popup-title="请选择" :localdata="dataTree"
v-model="dataObj.cityId" @change="onchange" @nodeclick="onnodeclick"
@popupopened="onpopupopened" @popupclosed="onpopupclosed">
</uni-data-picker>
</view>
</view>
<view class="item-field" v-if="'03'==identityType">
<view class="item-lable is-required">
<image src="@/static/mine/required.png" mode="aspectFit"></image>个人所在城市
</view>
<view class="item-value">
<uni-data-picker placeholder="请选择" popup-title="请选择" :localdata="dataTree"
v-model="dataObj.cityId" @change="onchange" @nodeclick="onnodeclick"
@popupopened="onpopupopened" @popupclosed="onpopupclosed">
</uni-data-picker>
</view>
</view>
</view>
</view>
<!-- 身份认证 -->
<view class="form-box">
<view class="left-top">
<image src="@/static/mine/auth/dian.png" mode="aspectFit"></image>
<text>身份认证</text>
</view>
<view class="form-content">
<view class="item-field">
<view class="item-lable is-required">
<image src="@/static/mine/required.png" mode="aspectFit"></image>企业微信/钉钉个人资料页/在职证明
</view>
<view class="warn-little-text">* 需要包含姓名公司名和职位在职证明需加盖申请主体红色公章不支持PS章电子章部门章及专用章</view>
<view class="item-value">
<uni-file-picker :value="SFList" :sizeType="sizeType"
@select="afterRead($event,'SFList')" @delete="deleteFile($event,'SFList')"
limit="9"></uni-file-picker>
</view>
</view>
<view class="item-field-row">
<view class="item-lable is-required">
<image src="@/static/mine/required.png" mode="aspectFit"></image>姓名
</view>
<view class="item-value">
<input class="uni-input" v-model="dataObj.name" type="number" placeholder="请输入" />
</view>
</view>
<view class="item-field-row">
<view class="item-lable is-required">
<image src="@/static/mine/required.png" mode="aspectFit"></image>身份证号
</view>
<view class="item-value">
<input class="uni-input" v-model="dataObj.name" type="number" placeholder="请输入" />
</view>
</view>
<view class="item-field">
<view class="item-lable is-required">
附言选填
</view>
<view class="item-value">
<textarea style="margin-top: 10rpx;" v-model="dataObj.detail" placeholder="请输入详细地址" />
</view>
</view>
</view>
</view>
<view class="submit-field" style="align-items: center;">
<view class="submit-box" @click="submitForm()">提交认证</view>
</view>
</view>
</view>
</view>
</template>
<script>
import navigationBarVue from '@/components/navigation/navigationBar.vue';
import {
getTextByIdentityType
} from '@/utils/common.js'
import {
treeCity
} from '@/api/business/base.js'
import config from '@/config';
export default {
components: {
navigationBarVue
},
data() {
return {
globalConfig: getApp().globalData.config,
//
identityType: "",
identityTypeText: "",
//
dataTree: [],
sizeType: ['compressed'],
//
SBList: [],
//
YYZZList: [],
//
SFList: [],
//
GTList: [],
//
SQList: [],
//
DPHTList: [],
//
DPWLList: [],
dataObj: {
name: ""
},
}
},
onLoad(option) {
this.initAddress();
this.identityType = option.key
this.identityTypeText = getTextByIdentityType(option.key)
},
methods: {
viewAuthText() {
this.$tab.navigateTo(
`/pages/common/richview/index?title=${this.globalConfig.appInfo.agreements[4].title}&code=${this.globalConfig.appInfo.agreements[4].code}`
)
},
/**初始化树结构*/
initAddress() {
treeCity().then(res => {
this.dataTree = res.data
}).catch((e) => {
uni.showToast({
icon: 'error',
duration: 2000,
title: e
});
})
},
afterRead(file, key) {
for (let i = 0; i < file.tempFilePaths.length; i++) {
upload({
url: '',
filePath: file.tempFilePaths[i]
}).then((res) => {
console.log(res, '215')
this[key].push({
url: config.baseUrl + res.data
})
console.log(this[key], "this[key]")
})
}
},
deleteFile(index, key) {
console.log('删除文件', this[key][index]);
this[key].splice(index, 1);
},
onnodeclick(e) {
console.log(e, 135);
},
onpopupopened(e) {
console.log('popupopened');
},
onpopupclosed(e) {
console.log('popupclosed');
},
onchange(e) {
console.log('onchange:', e);
},
submit() {
console.log(this.dataObj)
},
}
}
</script>
<style lang="scss">
.container-box {
padding-top: calc(90rpx + var(--status-bar-height));
border-top: 1rpx solid #F4F4F4;
background-color: white;
width: 100%;
color: #363636;
font-size: 30rpx;
height: 100%;
display: flex;
flex-direction: column;
align-items: self-start;
justify-content: center;
position: relative;
.content {
border-top: 1rpx solid #F4F4F4;
height: calc(100vh - var(--status-bar-height) - var(--window-bottom) - 95rpx);
overflow-y: scroll;
width: 100%;
background-color: white;
border-radius: 20rpx;
display: flex;
flex-direction: column;
align-items: self-start;
justify-content: start;
position: relative;
.title-max-box {
width: 100%;
padding: 20rpx 30rpx;
display: flex;
flex-direction: column;
align-items: self-start;
justify-content: start;
.title-box {
width: 100%;
display: flex;
align-items: center;
justify-content: center;
.item-title {
flex: 1;
display: flex;
align-items: center;
justify-content: start;
font-weight: bold;
.bg-img {
padding-bottom: 20rpx;
background-image: url('/static/mine/auth/xiantiao.png');
background-repeat: no-repeat;
background-position: bottom right;
background-size: 100% 50%;
}
}
.title-right {
display: flex;
align-items: center;
justify-content: flex-end;
font-size: 24rpx;
width: 160rpx;
padding-bottom: 20rpx;
}
}
.form-warn {
margin-top: 30rpx;
width: 100%;
font-size: 24rpx;
display: flex;
align-items: center;
justify-content: start;
background-color: #FDECD9;
color: #FF6627;
border-radius: 20rpx;
padding: 15rpx;
image {
width: 40rpx;
height: 40rpx;
margin-right: 20rpx;
}
text {
flex: 1;
display: flex;
align-items: center;
justify-content: start;
}
}
}
.content-detail-box {
width: 100%;
display: flex;
flex-direction: column;
align-items: self-start;
justify-content: start;
background-color: #F2F2F2;
padding: 20rpx;
.form-box {
margin-bottom: 20rpx;
background-color: white;
border-radius: 20rpx;
padding: 20rpx 20rpx;
width: 100%;
display: flex;
flex-direction: column;
align-items: self-start;
justify-content: start;
.left-top {
width: 100%;
display: flex;
align-items: center;
justify-content: start;
margin-bottom: 20rpx;
image {
width: 30rpx;
height: 30rpx;
}
text {
margin-left: 10rpx;
font-weight: bold;
font-size: 32rpx;
}
}
.form-content {
width: 100%;
.item-field-row {
width: 100%;
display: flex;
align-items: self-start;
justify-content: start;
padding-bottom: 15rpx;
.img-upload {
width: 50%;
margin: 10rpx 10rpx;
display: flex;
align-items: center;
justify-content: center;
}
.is-required {
image {
width: 20rpx;
height: 20rpx;
margin-right: 10rpx;
}
}
.item-lable {
width: 210rpx;
padding: 15rpx 0;
display: flex;
align-items: center;
justify-content: start;
}
.item-value {
flex: 1;
padding-left: 20rpx;
display: flex;
align-items: center;
justify-content: flex-end;
input {
width: 100%;
padding-left: 20rpx;
line-height: 1;
height: 70rpx;
border: 1rpx solid #dcdfe6;
border-radius: 8rpx;
}
.choose-add {
color: #686868;
padding: 10rpx 0 10rpx 20rpx;
display: flex;
align-items: center;
justify-content: flex-start;
border: 1rpx solid #dcdfe6;
border-radius: 8rpx;
}
textarea {
width: 100%;
height: 150rpx;
color: #686868;
padding: 10rpx 0 10rpx 20rpx;
border: 1rpx solid #dcdfe6;
border-radius: 8rpx;
}
}
}
.item-field {
width: 100%;
display: flex;
flex-direction: column;
align-items: self-start;
justify-content: center;
margin-bottom: 20rpx;
.warn-little-text {
color: #FE9860;
font-size: 18rpx;
margin-bottom: 20rpx;
}
.is-required {
image {
width: 20rpx;
height: 20rpx;
margin-right: 10rpx;
}
}
.item-lable {
padding: 15rpx 0;
display: flex;
align-items: center;
justify-content: center;
}
.item-value {
width: 100%;
input {
width: 100%;
padding-left: 20rpx;
line-height: 1;
height: 70rpx;
border: 1rpx solid #dcdfe6;
border-radius: 8rpx;
}
.choose-add {
color: #686868;
padding: 10rpx 0 10rpx 20rpx;
display: flex;
align-items: center;
justify-content: flex-start;
border: 1rpx solid #dcdfe6;
border-radius: 8rpx;
}
textarea {
width: 100%;
height: 150rpx;
color: #686868;
padding: 10rpx 0 10rpx 20rpx;
border: 1rpx solid #dcdfe6;
border-radius: 8rpx;
}
}
}
}
}
.submit-field {
width: 100%;
display: flex;
flex-direction: column;
align-items: self-start;
justify-content: center;
margin-bottom: 20rpx;
.submit-box {
padding: 15rpx 0;
background-color: #FC1F3E;
color: white;
width: 80%;
border-radius: 10rpx;
margin-top: 20rpx;
text-align: center;
}
}
}
}
}
</style>

View File

@ -2,7 +2,7 @@
<view :class="['my-card-box',ifChoose?'has-footer':'']"> <view :class="['my-card-box',ifChoose?'has-footer':'']">
<navigation-bar-vue title="我的名片" style="width: 100%;" background-color="#ffffff" <navigation-bar-vue title="我的名片" style="width: 100%;" background-color="#ffffff"
title-color="#000000"></navigation-bar-vue> title-color="#000000"></navigation-bar-vue>
<view class="opt-box" v-if="!ifChoose"> <view class="opt-box">
<view v-if="!ifEdit" class="item-dom" @click="manager(true)"><uni-icons type="bars" color="#FC1F3E" <view v-if="!ifEdit" class="item-dom" @click="manager(true)"><uni-icons type="bars" color="#FC1F3E"
size="16"></uni-icons><text></text></view> size="16"></uni-icons><text></text></view>
<view v-if="!ifEdit" class="item-dom" @click="addCard()"> <view v-if="!ifEdit" class="item-dom" @click="addCard()">
@ -19,7 +19,7 @@
<view class="card-dom " v-for="item in busiCardList"> <view class="card-dom " v-for="item in busiCardList">
<!-- 多选框--管理状态或者选择名片时使用 --> <!-- 多选框--管理状态或者选择名片时使用 -->
<view class="choose-dom" v-if="ifChoose"> <view class="choose-dom" v-if="ifChoose">
<uni-data-checkbox v-model="item.choosed" :disabled="1!=item.approvalStatus" multiple <uni-data-checkbox v-model="item.choosed" :disabled="item.canUse=='0'" multiple
:localdata="checkboxArray" /> :localdata="checkboxArray" />
</view> </view>
<view :class="['right-content',item.choosed.length>0?'click':'']"> <view :class="['right-content',item.choosed.length>0?'click':'']">
@ -62,7 +62,7 @@
</view> </view>
<view class="right-button"> <view class="right-button">
<text>已选择{{getChooseNum}}</text> <text>已选择{{getChooseNum}}</text>
<view class="button-dom">保存</view> <view class="button-dom" @click="chooseOk">保存</view>
</view> </view>
</view> </view>
</view> </view>
@ -77,12 +77,20 @@
getUserBusiCard, getUserBusiCard,
removeBusiCard removeBusiCard
} from '@/api/business/member.js' } from '@/api/business/member.js'
import {
getSignCard
} from '@/api/business/signCard.js'
import {
hasRights
} from '@/utils/common.js'
import rightsCode from '@/utils/rightsCode.js'
export default { export default {
components: { components: {
navigationBarVue navigationBarVue
}, },
data() { data() {
return { return {
noticeId: null,
// //
ifEdit: false, ifEdit: false,
//(false) //(false)
@ -106,7 +114,29 @@
onShow() { onShow() {
this.initData(); this.initData();
}, },
onLoad(param) {
if (param.ifChoose) {
this.ifChoose = param.ifChoose
}
if (param.noticeId) {
this.noticeId = param.noticeId
}
},
methods: { methods: {
chooseOk() {
let info = hasRights(rightsCode.manyCardReport)
if (!info && this.busiCardList.length > 1) {
//
uni.showToast({
title: '未开通会员不可添加多个',
icon: 'none'
})
return
}
uni.$emit('updateCard', this.busiCardList)
uni.navigateBack()
},
/** /**
* 数值单位转换 * 数值单位转换
* @param {Object} number * @param {Object} number
@ -117,20 +147,40 @@
// //
initData() { initData() {
this.busiCardList = [] this.busiCardList = []
getUserBusiCard().then(res => { if (!this.ifChoose) {
if (res.data.length > 0) { getUserBusiCard().then(res => {
res.data.map((item) => { if (res.data.length > 0) {
item.choosed = [] res.data.map((item) => {
this.busiCardList.push(item) item.choosed = []
}) this.busiCardList.push(item)
} })
}).catch((e) => { }
uni.showToast({ }).catch((e) => {
icon: 'error', uni.showToast({
duration: 2000, icon: 'error',
title: e duration: 2000,
}); title: e
}) });
})
} else {
getSignCard({
noticeId: this.noticeId
}).then(res => {
if (res.data.list.length > 0) {
res.data.list.map((item) => {
item.choosed = []
this.busiCardList.push(item)
})
}
}).catch((e) => {
uni.showToast({
icon: 'error',
duration: 2000,
title: e
});
})
}
}, },
/**删除名片*/ /**删除名片*/
remove(id) { remove(id) {
@ -159,13 +209,13 @@
chooseAllFun(e) { chooseAllFun(e) {
if (e.detail.value.length > 0) { if (e.detail.value.length > 0) {
this.busiCardList.map((item) => { this.busiCardList.map((item) => {
if ("1" == item.approvalStatus) { if ("1" == item.canUse) {
item.choosed = [true] item.choosed = [true]
} }
}) })
} else { } else {
this.busiCardList.map((item) => { this.busiCardList.map((item) => {
if ("1" == item.approvalStatus) { if ("1" == item.canUse) {
item.choosed = [] item.choosed = []
} }
}) })
@ -424,4 +474,4 @@
} }
} }
} }
</style> </style>

View File

@ -92,7 +92,7 @@
<view class="box-room"> <view class="box-room">
<view class="detail-title">个人信息</view> <view class="detail-title">个人信息</view>
<view class="menu-box top-column"> <view class="menu-box top-column">
<view class="menu-item" v-if="'01'==localUserType"> <view class="menu-item" v-if="'01'==localUserType" @click="goAuth()">
<!-- <image src="@/static/mine/zuji.png" mode="aspectFit"></image> --> <!-- <image src="@/static/mine/zuji.png" mode="aspectFit"></image> -->
<image src="@/static/mine/caise/renzheng.png" mode="aspectFit"></image> <image src="@/static/mine/caise/renzheng.png" mode="aspectFit"></image>
<view class="text-dom">通告主认证</view> <view class="text-dom">通告主认证</view>
@ -278,6 +278,9 @@
goMyAddr() { goMyAddr() {
this.$tab.navigateTo('/pages/mine/addr/addr-list') this.$tab.navigateTo('/pages/mine/addr/addr-list')
}, },
goAuth() {
this.$tab.navigateTo('/pages/mine/auth/auth-choose')
},
goMemberCard() { goMemberCard() {
this.$tab.navigateTo('/pages/mine/member/member-card?userType='+this.localUserType) this.$tab.navigateTo('/pages/mine/member/member-card?userType='+this.localUserType)
}, },

View File

@ -435,6 +435,7 @@
}, },
dialogConfirm() { dialogConfirm() {
console.log('点击确认') console.log('点击确认')
this.$tab.navigateTo('/pages/mine/card/my-card')
}, },
dialogClose() { dialogClose() {
console.log('点击关闭') console.log('点击关闭')
@ -454,7 +455,7 @@
}).then(res => { }).then(res => {
if (res.code == 200) { if (res.code == 200) {
if (res.data.canUserNum > 0) { if (res.data.canUserNum > 0) {
this.$tab.navigateTo('/pages/notice/report') this.$tab.navigateTo('/pages/notice/report?noticeId=' + this.noticeId)
} else { } else {
this.$refs.alertDialog.open() this.$refs.alertDialog.open()
} }

View File

@ -4,16 +4,17 @@
title-color="#3D3D3D"></navigation-bar-vue> title-color="#3D3D3D"></navigation-bar-vue>
<view class="notice-detail-last-box"> <view class="notice-detail-last-box">
<view class="dl-notice-title"> <view class="dl-notice-title">
<image class="dl-image" src="/static/platform/xiaohongshu.png" mode="aspectFit"></image> <image class="dl-image" :src="'/static/platform/'+noticeDetail.platformCode+'.png'" mode="aspectFit">
<view class="dl-text">找小红书达人种草蓝月亮洗衣液</view> </image>
<view class="dl-text">{{noticeDetail.title||''}}</view>
</view> </view>
<view class="end-date-box"> <view class="end-date-box">
<view class="end-date">截止日期2024-03-04</view> <view class="end-date">截止日期{{noticeDetail.endDate||''}}</view>
</view> </view>
<!-- 主体内容区域 --> <!-- 主体内容区域 -->
<view class="main-content"> <view class="main-content">
<!-- 会员开通 --> <!-- 会员开通 -->
<view class="dl-member-box" @click="goMemberCard()"> <view class="dl-member-box" @click="goMemberCard()" v-if="!rightInfo.manyCardReport">
<view class="dl-left"> <view class="dl-left">
<image class="dl-icon" src="@/static/index/zuanshi.png" mode="aspectFit"></image> <image class="dl-icon" src="@/static/index/zuanshi.png" mode="aspectFit"></image>
<text>开通会员 添加更多名片</text> <text>开通会员 添加更多名片</text>
@ -23,7 +24,7 @@
</view> </view>
</view> </view>
<!-- 添加更多名片 --> <!-- 添加更多名片 -->
<view class="add-more-card" @click="goMemberCard()"> <view class="add-more-card" @click="goSignCard()" v-else>
<view class="dl-left"> <view class="dl-left">
<image class="dl-icon" src="@/static/detail/card.png" mode="aspectFit"></image> <image class="dl-icon" src="@/static/detail/card.png" mode="aspectFit"></image>
<text>添加更多名片</text> <text>添加更多名片</text>
@ -36,23 +37,23 @@
<view class="member-card-box" v-for="(item,index) in cardList"> <view class="member-card-box" v-for="(item,index) in cardList">
<view class="card-title"> <view class="card-title">
<!-- 需要根据平台code取对应的图片 TODO --> <!-- 需要根据平台code取对应的图片 TODO -->
<image src="@/static/platform/xiaohongshu.png" mode="aspectFit"></image> <image :src="'/static/platform/'+item.platformCode+'.png'" mode="aspectFit"></image>
<text>小红书博主</text> <text>{{item.platformName+'博主'}}</text>
</view> </view>
<view class="card-content"> <view class="card-content">
<view class="card-person-info"> <view class="card-person-info">
<view class="card-name"> <view class="card-name">
<view>小王同学</view> <view>{{item.accountName}}</view>
</view> </view>
</view> </view>
</view> </view>
<view class="card-bottom"> <view class="card-bottom">
<view class="fans-dom"> <view class="fans-dom">
粉丝 {{ formatNumberWithUnits(100000) }} 粉丝 {{ formatNumberWithUnits(item.fansNum) }}
</view> </view>
<view class="change-dom-bg"> <view class="change-dom-bg">
</view> </view>
<view class="change-dom"> <view class="change-dom" @click="goMyCard()">
切换 切换
</view> </view>
</view> </view>
@ -65,12 +66,10 @@
<text>注意为了您的信息安全平台不建议填写您的银行卡号身份证号密码等隐私信息</text> <text>注意为了您的信息安全平台不建议填写您的银行卡号身份证号密码等隐私信息</text>
</view> </view>
<view class="field-form-box"> <view class="field-form-box">
<uni-forms ref="baseForm" :modelValue="baseFormData"> <uni-forms>
<uni-forms-item label="姓名" required> <uni-forms-item v-for="(it,idx) in signFormData.customForm" :label="it.label" required
<uni-easyinput type="text" v-model="baseFormData.name" placeholder="请输入姓名" /> labelWidth="100">
</uni-forms-item> <uni-easyinput v-model="signFormData.customForm[idx].value" placeholder="请输入" />
<uni-forms-item label="年龄" required>
<uni-easyinput type="number" v-model="baseFormData.age" placeholder="请输入年龄" />
</uni-forms-item> </uni-forms-item>
</uni-forms> </uni-forms>
</view> </view>
@ -78,21 +77,21 @@
<!-- 联系方式 --> <!-- 联系方式 -->
<view class="custom-form-box" style="padding: 0 25rpx;"> <view class="custom-form-box" style="padding: 0 25rpx;">
<view class="field-form-box"> <view class="field-form-box">
<uni-forms ref="telForm" :modelValue="telFormData"> <uni-forms ref="signForm" :modelValue="signFormData" :rules="signRules">
<uni-forms-item label="联系方式" required labelWidth="100"> <uni-forms-item label="联系方式" required labelWidth="100" name="tel">
<uni-easyinput type="number" v-model="baseFormData.name" placeholder="请输入姓名" /> <uni-easyinput type="number" v-model="signFormData.tel" placeholder="请输入微信/手机号" />
</uni-forms-item> </uni-forms-item>
</uni-forms> </uni-forms>
</view> </view>
</view> </view>
<!-- 收件地址 --> <!-- 收件地址 -->
<view class="custom-addr-box"> <view class="custom-addr-box" v-if="userAddr">
<view class="left-text">收件地址</view> <view class="left-text">收件地址</view>
<view class="right-text"> <view class="right-text">
<text>中国 山东省 济南市 历城区</text> <text>{{userAddr.cityName}}</text>
<text>财富中心1007A</text> <text>{{userAddr.detail}}</text>
<text>朱春运</text> <text>{{userAddr.name}}</text>
<text>17862909999</text> <text>{{userAddr.tel}}</text>
</view> </view>
<view class="change-addr-dom">切换</view> <view class="change-addr-dom">切换</view>
</view> </view>
@ -116,22 +115,69 @@
formatNumberWithUnits formatNumberWithUnits
} from '@/utils/common.js' } from '@/utils/common.js'
import navigationBarVue from '@/components/navigation/navigationBar.vue'; import navigationBarVue from '@/components/navigation/navigationBar.vue';
import {
getSignCard
} from '@/api/business/signCard.js'
import {
getNoticeDetail
} from '@/api/business/notice';
import {
hasRights
} from '@/utils/common.js'
import rightsCode from '@/utils/rightsCode.js'
import {
getUserAddress
} from '@/api/business/member.js'
export default { export default {
components: { components: {
navigationBarVue navigationBarVue
}, },
data() { data() {
return { return {
//使 signRules: {
cardList: ['', ''], //
// tel: {
baseFormData: { // tel
name: '', rules: [
age: '' // tel
{
required: true,
errorMessage: '请填写联系方式',
}
]
}
}, },
noticeId: null,
//使
cardList: [],
//
// //
telFormData: { signFormData: {
tel: "" tel: null,
customForm: []
},
//
noticeDetail: {
id: "",
title: "",
endDate: null,
feeDown: null,
feeUp: null,
needNum: null,
userId: null,
brand: null,
fansDown: null,
fansUp: null,
city: null,
bloggerTypes: null,
updateTime: null,
approvalStatus: '0',
viewNum: 0,
detail: null,
platformCode: "",
platformName: "",
//
imageArray: []
}, },
// //
rules: { rules: {
@ -151,9 +197,47 @@
}] }]
} }
}, },
rightInfo: {
manyCardReport: false,
superReport: false
},
userAddr: null
} }
}, },
onShow() {
this.getRightsCode()
},
onLoad(params) {
this.noticeId = params.noticeId
if (this.noticeId) {
this.getDetail()
}
this.getCard()
this.userAddress()
let that = this
uni.$on('updateCard', function(data) {
that.updateCard(data)
})
},
methods: { methods: {
userAddress() {
getUserAddress().then(res => {
if (res.data && res.data.length > 0) {
this.userAddr = res.data[0]
}
})
},
updateCard(data) {
console.log(data, 211);
this.cardList = data
},
/**
* 跳转名片列表
*/
goMyCard() {
this.$tab.navigateTo('/pages/mine/card/my-card?ifChoose=true&noticeId=' + this.noticeId)
},
/** /**
* 数值单位转换 * 数值单位转换
* @param {Object} number * @param {Object} number
@ -161,8 +245,66 @@
formatNumberWithUnits(number) { formatNumberWithUnits(number) {
return formatNumberWithUnits(number) return formatNumberWithUnits(number)
}, },
getRightsCode() {
let info = hasRights(rightsCode.manyCardReport)
if (!info) {
this.rightInfo.manyCardReport = false
} else {
this.rightInfo.manyCardReport = true
}
},
goSignCard() {
this.$tab.navigateTo('/pages/mine/card/my-card')
},
goMemberCard() {
this.$tab.navigateTo('/pages/mine/member/member-card')
},
getDetail() {
getNoticeDetail({
noticeId: this.noticeId
}).then(res => {
if (res.code == 200) {
this.noticeDetail = res.data.noticeDetail
if (this.noticeDetail.customForm.length > 0) {
this.noticeDetail.customForm.forEach(it => {
this.signFormData.customForm.push({
label: it,
value: ''
})
})
}
}
console.log(this.signFormData, 269);
}).catch((e) => {
this.isTriggered = false
uni.showToast({
icon: 'error',
duration: 2000,
title: e
});
})
},
/**
* 报名
*/
getCard() {
getSignCard({
noticeId: this.noticeId
}).then(res => {
if (this.cardList.length == 0) {
this.cardList.push(res.data.list[0])
}
}).catch((e) => {
uni.showToast({
icon: 'error',
duration: 2000,
title: e
});
})
},
submit() { submit() {
this.$refs.baseForm.validate().then(res => { this.$refs.signForm.validate().then(res => {
console.log('success', res); console.log('success', res);
uni.showToast({ uni.showToast({
title: `校验通过` title: `校验通过`
@ -613,4 +755,4 @@
} }
} }
} }
</style> </style>

BIN
static/mine/auth/dian.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

BIN
static/mine/auth/geren.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
static/mine/auth/gognsi.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -4,14 +4,19 @@
<text class="file-title">{{ title }}</text> <text class="file-title">{{ title }}</text>
<text class="file-count">{{ filesList.length }}/{{ limitLength }}</text> <text class="file-count">{{ filesList.length }}/{{ limitLength }}</text>
</view> </view>
<upload-image :small="small" v-if="fileMediatype === 'image' && showType === 'grid'" :readonly="readonly" <upload-image :iconPath="iconPath" :small="small" v-if="fileMediatype === 'image' && showType === 'grid'"
:image-styles="imageStyles" :files-list="filesList" :limit="limitLength" :disablePreview="disablePreview" :readonly="readonly" :image-styles="imageStyles" :files-list="filesList" :limit="limitLength"
:delIcon="delIcon" @uploadFiles="uploadFiles" @choose="choose" @delFile="delFile"> :disablePreview="disablePreview" :delIcon="delIcon" @uploadFiles="uploadFiles" @choose="choose"
@delFile="delFile">
<slot> <slot>
<view class="is-add"> <view class="is-add" v-if="''==iconPath">
<view :class="['icon-add',small?'new-icon-add':'']"></view> <view :class="['icon-add',small?'new-icon-add':'']"></view>
<view :class="['icon-add rotate',small?'new-icon-add':'']"></view> <view :class="['icon-add rotate',small?'new-icon-add':'']"></view>
</view> </view>
<view class="is-add custom-add" v-else>
<image :src="iconPath" mode="aspectFit"></image>
<view :class="['img-title',required?'is-required':'']">{{imgTitle}}</view>
</view>
</slot> </slot>
</upload-image> </upload-image>
<upload-file v-if="fileMediatype !== 'image' || showType !== 'grid'" :readonly="readonly" <upload-file v-if="fileMediatype !== 'image' || showType !== 'grid'" :readonly="readonly"
@ -111,6 +116,10 @@
type: Boolean, type: Boolean,
default: false default: false
}, },
required: {
type: Boolean,
default: false
},
disablePreview: { disablePreview: {
type: Boolean, type: Boolean,
default: false default: false
@ -154,6 +163,14 @@
type: String, type: String,
default: '' default: ''
}, },
iconPath: {
type: String,
default: ''
},
imgTitle: {
type: String,
default: ''
},
listStyles: { listStyles: {
type: Object, type: Object,
default () { default () {
@ -526,10 +543,11 @@
* @param {Object} index * @param {Object} index
*/ */
delFile(index) { delFile(index) {
this.$emit('delete', { // this.$emit('delete', {
tempFile: this.files[index], // tempFile: this.files[index],
tempFilePath: this.files[index].url // tempFilePath: this.files[index].url
}) // })
this.$emit('delete', index)
this.files.splice(index, 1) this.files.splice(index, 1)
this.$nextTick(() => { this.$nextTick(() => {
this.setEmit() this.setEmit()
@ -620,7 +638,7 @@
} }
</script> </script>
<style> <style lang="scss">
.uni-file-picker { .uni-file-picker {
/* #ifndef APP-NVUE */ /* #ifndef APP-NVUE */
box-sizing: border-box; box-sizing: border-box;
@ -657,6 +675,40 @@
justify-content: center; justify-content: center;
} }
.custom-add {
width: 100%;
height: 100%;
flex-direction: column;
align-items: center;
justify-content: flex-start;
background-color: #FAFAFA;
border-radius: 15rpx;
position: relative;
image {
margin-top: 30rpx;
width: 70%;
height: 150rpx;
}
.img-title {
font-size: 24rpx;
width: 100%;
background-color: #E9E9E9;
padding: 10rpx 0;
color: #363636;
text-align: center;
position: absolute;
bottom: 0;
}
.is-required:before {
padding-right: 8rpx;
content: "*";
color: red;
}
}
.icon-add { .icon-add {
width: 50px; width: 50px;
height: 5px; height: 5px;

View File

@ -66,6 +66,10 @@
} }
} }
}, },
iconPath: {
type: String,
default: ''
},
delIcon: { delIcon: {
type: Boolean, type: Boolean,
default: true default: true
@ -109,6 +113,9 @@
if (true == this.small) { if (true == this.small) {
obj.width = '25%' obj.width = '25%'
obj['padding-top'] = '25%' obj['padding-top'] = '25%'
} else if ('' != this.iconPath) {
obj.width = '100%'
obj['padding-top'] = '80%'
} else { } else {
obj.width = '33.3%' obj.width = '33.3%'
} }
@ -125,6 +132,9 @@
return classles return classles
}, },
borderStyle() { borderStyle() {
if ("" != this.iconPath) {
return "border-width:0 !important"
}
let { let {
border border
} = this.styles } = this.styles

View File

@ -177,4 +177,20 @@ export function calculateTimeDifference(time) {
} else { } else {
return parseInt(remainingHours) + "小时前" return parseInt(remainingHours) + "小时前"
} }
}
/**
* 翻译认证身份类型
* @param {Object} key
*/
export function getTextByIdentityType(key) {
if ("01" == key) {
return "品牌方"
} else if ("02" == key) {
return "代运营公司"
} else if ("03" == key) {
return "个人PR"
} else if ("04" == key) {
return "电商"
}
} }