Browse Source

Merge remote-tracking branch 'origin/master'

master
chenkun 10 months ago
parent
commit
3e7d3ff276
11 changed files with 492 additions and 314 deletions
  1. +15
    -4
      api/api.js
  2. +29
    -79
      components/config/configPopup.vue
  3. +9
    -3
      components/toast/confirmationPopup.vue
  4. +1
    -1
      config.js
  5. +58
    -3
      pages/publish/actorRelease.vue
  6. +64
    -27
      pages/publish/publishPost.vue
  7. +1
    -1
      pages_mine/mine/authOption.vue
  8. +154
    -72
      pages_mine/mine/authPerson.vue
  9. +151
    -120
      pages_mine/mine/certifiedIndividual.vue
  10. +4
    -4
      pages_mine/mine/releaseRecord.vue
  11. +6
    -0
      store/store.js

+ 15
- 4
api/api.js View File

@ -53,7 +53,11 @@ const config = {
url: '/api/index/getWorkPage',
method: 'GET'
},
//获取投诉原因
indexTopPayList: {
url: '/api/index/getTopPayList',
method: 'GET'
},
// 小程序-个人中心接口
@ -65,9 +69,16 @@ const config = {
auth: true,
limit : 1500,
},
//获取用户平台数据
infoGetInfoMoney: {
url: '/api/info/getInfoMoney',
//添加银行卡
infoAddBankCard: {
url: '/api/info/addBankCard',
method: 'GET',
auth: true,
limit : 1500,
},
//发布动态
infoReleaseTrends: {
url: '/api/info/releaseTrends',
method: 'GET',
auth: true
},


+ 29
- 79
components/config/configPopup.vue View File

@ -1,16 +1,7 @@
<template>
<!-- 协议配置弹出层组件 -->
<view>
<uv-parse
v-if="tiled"
:content="content">
</uv-parse>
<uv-popup
v-else
:customStyle="{height: '75vh'}"
ref="popup">
<view id="config">
<view class="configPopup">
<uv-popup ref="popup" :round="30" :customStyle="{height: '50vh'}">
<view class="content">
<uv-parse :content="content"></uv-parse>
</view>
</uv-popup>
@ -18,80 +9,39 @@
</template>
<script>
import { mapState } from 'vuex'
import { mapGetters } from 'vuex'
export default {
name:"configPopup",
props : {
findValue : {//
type : String,
},
findKey : {//
type : String,
default : 'keyValue'
},
contentKey : {//
type : String,
default : 'content'
},
languageContentKey : {//
type : Object,
},
index : {//
type : Number,
},
tiled : {
default : false,
type : Boolean,
}
},
name: 'configPoup',
data() {
return {
};
},
computed : {
...mapState(['configList']),
locale(){
return this.$t('components.config.configPopup')
},
obj(){
if(typeof this.index == 'number'){
return this.configList[this.index]
}
for(let i = 0; i < this.configList.length; i++){
if(this.configList[i][this.findKey] == this.findValue){
return this.configList[i]
}
}
},
objKey(){
if(this.languageContentKey
&& this.languageContentKey[this.$i18n.locale]){
return this.languageContentKey[this.$i18n.locale]
}
return this.contentKey
},
content(){
if(!this.obj){
return `<h3>${this.locale.noData}</h3>`
}
return this.obj[this.objKey]
content : ''
}
},
methods : {
open(type = 'bottom'){
if(this.tiled){
return
}
this.$refs.popup.open(type);
},
onShow(){
console.log(this.getConfig);
},
methods: {
//
open(key){
console.log(key);
this.content = this.getConfig[key]
this.$refs.popup.open('bottom');
}
},
computed : {
...mapGetters(['getConfig'])
}
}
</script>
<style scoped lang="scss">
#config{
padding: 20rpx;
line-height: 50rpx;
}
<style lang="scss" scoped>
.configPopup {
.content{
padding: 30rpx 20rpx;
}
}
</style>

+ 9
- 3
components/toast/confirmationPopup.vue View File

@ -1,7 +1,7 @@
<template>
<uv-popup
:safeAreaInsetBottom="false"
round="40rpx"
:round="round"
ref="popup">
<view class="toast">
<view class="title">
@ -18,7 +18,7 @@
</view>
<view class="btnstwo" v-else>
<view class="btn c" @click="$emit('cancel')">
取消
{{ cancelText }}
</view>
<view class="btn" @click="$emit('confirm')">
{{ confirmText }}
@ -40,6 +40,12 @@
},
cancel : {
default : false
},
cancelText : {
default : '取消'
},
round : {
default : '40rpx'
}
},
methods : {
@ -55,7 +61,7 @@
<style lang="scss" scoped>
.toast{
width: 500rpx;
min-width: 500rpx;
.title{
min-height: 70rpx;
display: flex;


+ 1
- 1
config.js View File

@ -5,7 +5,7 @@ import utils from './utils/utils.js'
// 当前环境
const type = 'prod'
const type = 'dev'
// 环境配置


+ 58
- 3
pages/publish/actorRelease.vue View File

@ -5,6 +5,18 @@
@leftClick="$utils.navigateBack"
title="演员发布"/>
<view class="images box">
<uv-upload
:fileList="fileListImage"
:maxCount="1"
multiple
width="150rpx"
height="150rpx"
@delete="deleteImage2"
@afterRead="afterRead2"
:previewFullImage="true"></uv-upload>
</view>
<view class="form">
<view class="form-item">
<view class="label">
@ -179,6 +191,7 @@
// url: 'https://cdn.uviewui.com/uview/swiper/2.jpg'
// },
],
fileListImage : [],
};
},
methods : {
@ -195,9 +208,43 @@
})
})
},
submit(){},
preview(){},
draft(){},
deleteImage2(e){
this.fileListImage.splice(e.index, 1)
},
afterRead2(e){
let self = this
e.file.forEach(file => {
self.$Oss.ossUpload(file.url).then(url => {
self.fileListImage.push({
url
})
})
})
},
pay(){
let arr = []
this.fileList.forEach(n => {
arr.push(n.url)
})
let data = {
...this.form,
isCard : 1,
image : arr.join(',')
}
this.$api('infoReleaseTrends', data,
res => {
if(res.code == 200){
this.$refs.confirmationPopupUpload.open()
}
})
},
submit(){
},
}
}
</script>
@ -212,6 +259,14 @@
margin-right: 25rpx;
margin-top: 10rpx;
}
.box{
padding: 0 20rpx;
}
.images{
display: flex;
flex-wrap: wrap;
padding: 20rpx;
}
.form{
.label{
padding: 20rpx;


+ 64
- 27
pages/publish/publishPost.vue View File

@ -18,7 +18,7 @@
</view>
<view class="title-input box">
<input type="text" placeholder="添加标题"/>
<input type="text" placeholder="添加标题" v-model="form.title"/>
</view>
<view class="content-input">
@ -41,7 +41,7 @@
v-for="(item, index) in upTopList"
:key="index">
<view class="left">
{{ item.info }}
置顶{{ item.day }}{{ item.money }}
</view>
<view class="right">
<uv-radio
@ -70,6 +70,7 @@
<confirmationPopup
ref="confirmationPopup"
title="提示"
@confirm="pay"
confirmText="确认支付">
<view class="confirmationPopup">
<image src="/static/image/publish/pay.png"
@ -84,6 +85,7 @@
<confirmationPopup
ref="confirmationPopupUpload"
title="提示"
@confirm="$utils.navigateTo('/index/index')"
confirmText="确认">
<view class="confirmationPopup">
<image src="/static/image/publish/upload.png"
@ -112,36 +114,23 @@
},
data() {
return {
upTopList : [
{
info : '置顶1天3元',
id : 1,
},
{
info : '置顶2天3元',
id : 4,
},
{
info : '置顶3天3元',
id : 3,
},
{
info : '置顶4天3元',
id : 2,
},
],
upTopList : [],
form : {
image : [],
// image : [],
content : '',
upTop : '',
// upTop : '',
title : '',
},
fileList: [
{
url: 'https://cdn.uviewui.com/uview/swiper/2.jpg'
},
// {
// url: 'https://cdn.uviewui.com/uview/swiper/2.jpg'
// },
],
};
},
onShow() {
this.indexTopPayList()
},
methods : {
deleteImage(e){
this.fileList.splice(e.index, 1)
@ -150,15 +139,63 @@
let self = this
e.file.forEach(file => {
self.$Oss.ossUpload(file.url).then(url => {
console.log(url);
self.fileList.push({
url
})
})
})
},
indexTopPayList(){
this.$api('indexTopPayList', res => {
if(res.code == 200){
this.upTopList = res.result
}
})
},
pay(){
let arr = []
this.fileList.forEach(n => {
arr.push(n.url)
})
let data = {
...this.form,
isCard : 1,
image : arr.join(',')
}
this.$api('infoReleaseTrends', data,
res => {
if(res.code == 200){
this.$refs.confirmationPopupUpload.open()
}
})
},
submit(){
this.$refs.confirmationPopup.open()
console.log(this.form);
if(this.fileList.length == 0){
return uni.showToast({
title: '请上传图片',
icon : 'none'
})
}
if (this.$utils.verificationAll(this.form, {
title: '请输入标题',
content: '请输入正文',
})) {
return
}
if(this.form.upTop){
}else{
this.$refs.confirmationPopup.open()
}
},
preview(){},
draft(){},


+ 1
- 1
pages_mine/mine/authOption.vue View File

@ -36,7 +36,7 @@ export default {
},
firmAuth() {
uni.redirectTo({
url: '/pages_mine/mine/certifiedIndividual?type=firm'
url: '/pages_mine/mine/enterpriseCertification'
})
// this.$utils.navigateTo('/mine/certifiedIndividual?type=firm')
},


+ 154
- 72
pages_mine/mine/authPerson.vue View File

@ -1,90 +1,172 @@
<template>
<view class="auth-person">
<!--顶部导航栏-->
<navbar leftClick @leftClick="$utils.navigateBack" title="认证个人"/>
<view class="auth-person">
<!--顶部导航栏-->
<navbar leftClick @leftClick="$utils.navigateBack" title="认证个人" />
<!--身份信息页面-->
<view class="container">
<view class="form-item">
<view class="label">姓名</view>
<view class="input">{{ name }}</view>
</view>
<!--身份信息页面-->
<view class="container">
<view class="form-item">
<view class="label">姓名</view>
<view class="input">
<input type="text" v-model="certifiedIndividual.name"/>
</view>
</view>
<uv-divider :hairline="false" lineColor="#c0c0c0" dot></uv-divider>
<uv-divider :hairline="false" lineColor="#c0c0c0" dot></uv-divider>
<view class="form-item">
<view class="label">身份证号</view>
<view class="input">{{ idCard }}</view>
</view>
<view class="form-item">
<view class="label">身份证号</view>
<view class="input">
<input type="text" v-model="certifiedIndividual.card"/>
</view>
</view>
<uv-divider :hairline="false" lineColor="#c0c0c0" dot></uv-divider>
</view>
<uv-divider :hairline="false" lineColor="#c0c0c0" dot></uv-divider>
</view>
<!--下一步按钮-->
<button @click="onNextClick" class="bottomBtn">
立即认证
</button>
</view>
<!--下一步按钮-->
<button @click="onNextClick" class="bottomBtn">
立即认证
</button>
<confirmationPopup
ref="confirmationPopup"
title="提示"
cancel
:cancelText="cancelText[type]"
@confirm="submit"
round="0"
@cancel="$refs.confirmationPopup.close()"
:confirmText="confirmText[type]">
<view class="confirmationPopup"
v-if="type == 0">
电子认证服务协议
数字证书(以下简称证书)是电子商务认证有限公司(以下简称广东)签发的网上凭证是为身份确实资信可靠的个人单位和服务器等在网上进行安全电子交易安全电子事务处理等提供的一种身份认证凡企业机关团体行政事业等单位个人和服务器数字证书申请人(以下简称证书申请人)均可向广东业务受理审批单位申请领用数字证书为了保障数字证书申请人的合法权利维护电子商务认证有限公司的合法经营权益双方本着自愿平等的原则达成以下协议书条款双方共同遵守执行第三方认证是 XX制造网为其XX通会员提供的一项以标准化审核认证为主要内容的服务
含资质认证与实地认证
实地认证的审核认证服务内容要包括会员的工商注册信息销售贸易能力和()产品设计开发能力体系和产品认证生产能力和质量管理实景照片等内容资质认证的审核认证服务内容主要包括会员的工商注册信息经营资
生产许可资质等内容
第三方认证审核分为初次审核和年度复审两种类型初次审核是指对会员进行首次审核并出具报告年度复审是指为了认证保证报告所反映的实际情况的时效性而对会员进行的每年一次的复审XX制造网根据用户提交的服务申请及用户进行的自评情况与用户确定服务购买意向并签署合同用户支付相应费用后XX制造网委托第三方认证机构在约定的日期进行审核并出具相应的认证报告XX制造网将使用专有标识对通过审核
的用户的展示厅进行标注
</view>
<view class="confirmationPopup"
style="padding: 70rpx 20rpx;"
v-if="type == 1">
本次认证需付费确认
</view>
</confirmationPopup>
</view>
</template>
<script>
import '../../common.css'; // CSS
export default {
data() {
return {
name: 'xiaohua',
idCard: '2101472154874512'
}
},
methods: {
onCameraClick() {
//
},
onNextClick() {
uni.redirectTo({
url: '/pages_mine/mine/purse'
})
}
}
}
import '../../common.css'; // CSS
import { mapState } from 'vuex'
import confirmationPopup from '@/components/toast/confirmationPopup.vue'
export default {
components : {
confirmationPopup,
},
data() {
return {
type : 0,
cancelText : ['不同意', '取消'],
confirmText : ['同意', '同意并支付'],
}
},
computed : {
...mapState(['certifiedIndividual']),
},
methods: {
onCameraClick() {
//
},
onNextClick() {
if (this.$utils.verificationAll(this.certifiedIndividual, {
imageReverseSide: '请上传身份证背面',
imageStraight: '请上传身份证正面',
card: '请输入身份证号',
name: '请输入姓名',
})) {
return
}
this.$refs.confirmationPopup.open()
},
submit(){
this.$refs.confirmationPopup.close()
if(this.type == 0){
setTimeout(() => {
this.type = 1
this.$refs.confirmationPopup.open()
}, 500)
}else{
this.$api('infoSubmitCertification', this.certifiedIndividual,
res => {
if(res.code == 200){
uni.showToast({
title:'认证成功',
icon : 'none'
})
setTimeout(() => {
uni.redirectTo({
url: '/pages/index/center'
})
}, 500)
}
})
}
},
}
}
</script>
<style scoped lang="scss">
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
.auth-person {
.container {
padding: 100rpx 50rpx 50rpx 50rpx;
//border: 1px solid red;
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
.confirmationPopup{
max-height: 60vh;
overflow-y: auto;
overflow-x: hidden;
width: 600rpx;
padding: 20rpx;
text-align: center;
}
.header {
margin-bottom: 40rpx;
font-size: 28rpx;
color: #666;
}
.auth-person {
.container {
padding: 100rpx 50rpx 50rpx 50rpx;
//border: 1px solid red;
.form-item {
margin-bottom: 40rpx;
.header {
margin-bottom: 40rpx;
font-size: 28rpx;
color: #666;
}
.label {
font-size: 36rpx;
margin-bottom: 10px;
display: block;
}
.form-item {
margin-bottom: 40rpx;
.input {
width: 100vw;
font-size: 38rpx;
margin-top: 40rpx;
}
}
}
.label {
font-size: 36rpx;
margin-bottom: 10px;
display: block;
}
}
.input {
font-size: 30rpx;
margin-top: 40rpx;
background-color: #f7f7f7;
padding: 20rpx;
border: 1px solid #66666633;
}
}
}
</style>
}
</style>

+ 151
- 120
pages_mine/mine/certifiedIndividual.vue View File

@ -1,139 +1,170 @@
<template>
<view class="certified-individual">
<!--顶部导航栏-->
<navbar leftClick @leftClick="$utils.navigateBack" title="个人认证"/>
<view class="certified-individual">
<!--顶部导航栏-->
<navbar leftClick @leftClick="$utils.navigateBack" title="个人认证" />
<!--内容区域-->
<view class="content">
<view class="title">
<view class="image">
<image src="../static/auth/1.svg" style="width: 100%;height: 100%"></image>
</view>
请确保二代身份证有效,并且头像文字清晰四角对齐,无反光无遮挡
</view>
<view class="center">
<view class="avatarFace">
<image src="../static/auth/2.png" style="width: 100%;height: 100%"></image>
</view>
<view class="reverseSide">
<image src="../static/auth/2.png" style="width: 100%;height: 100%"></image>
</view>
</view>
</view>
<!--内容区域-->
<view class="content">
<view class="title">
<view class="image">
<image src="../static/auth/1.svg" style="width: 100%;height: 100%"></image>
</view>
请确保二代身份证有效,并且头像文字清晰四角对齐,无反光无遮挡
</view>
<view class="center">
<view class="avatarFace" @click="uploadImage('imageStraight')">
<image v-if="certifiedIndividual.imageStraight" :src="certifiedIndividual.imageStraight" style="width: 100%;height: 100%"></image>
<image v-else src="../static/auth/2.png" style="width: 100%;height: 100%"></image>
</view>
<view class="reverseSide" @click="uploadImage('imageReverseSide')">
<image v-if="certifiedIndividual.imageReverseSide" :src="certifiedIndividual.imageReverseSide" style="width: 100%;height: 100%"></image>
<image v-else src="../static/auth/2.png" style="width: 100%;height: 100%"></image>
</view>
</view>
</view>
<!--立即认证按钮-->
<view @click="nowAuth" class="bottomBtn">
立即认证
</view>
<!--立即认证按钮-->
<view @click="nowAuth" class="bottomBtn">
立即认证
</view>
<!--人脸识别服务协议-->
<view class="agree">
<uv-checkbox-group v-model="checkboxValue" placement="column" size="35"
activeColor="#008000" inactiveColor="#999999">
<uv-checkbox shape='circle' :checked="true" name="apple"
:label="labelValue ? labelValue : ''" iconSize="35">
</uv-checkbox>
</uv-checkbox-group>
我已阅读并同意签署 <span style="color:#009dff">人脸识别服务协议</span>
</view>
</view>
<!--人脸识别服务协议-->
<view class="agree">
<uv-checkbox-group v-model="checkboxValue" placement="column" size="35" activeColor="#008000"
inactiveColor="#999999">
<uv-checkbox shape='circle' :checked="true" name="apple" :label="labelValue ? labelValue : ''"
iconSize="35">
</uv-checkbox>
</uv-checkbox-group>
我已阅读并同意签署 <span style="color:#009dff">服务协议</span>
<span style="color:#009dff">隐私政策</span>
</view>
</view>
</template>
<script>
export default {
onLoad: function (options) {
console.log(options,"options")
// id
this.type = options.type;
console.log('this.type :', this.type);
// ...
},
data() {
return {
checkboxValue: '香蕉',
labelValue: '', // labelValue
type: '',
};
},
methods: {
nowAuth() {
if (this.type=="person"){
uni.redirectTo({
url: '/pages_mine/mine/authPerson'
})
// this.$utils.navigateTo('/mine/authPerson')
}else if (this.type=="firm"){
uni.redirectTo({
url: '/pages_mine/mine/authFirm'
})
// this.$utils.navigateTo('/mine/authFirm')
}
}
}
}
import { mapState } from 'vuex'
export default {
onLoad: function(options) {
this.type = options.type;
},
computed : {
...mapState(['certifiedIndividual']),
},
data() {
return {
checkboxValue: [],
labelValue: '', // labelValue
type: '',
};
},
methods: {
uploadImage(key) {
this.$Oss.ossUploadImage({
success : url => {
this.certifiedIndividual[key] = url
}
})
},
nowAuth() {
// if(!this.certifiedIndividual.imageReverseSide){
// return uni.showToast({
// title: '',
// icon: 'none'
// })
// }
// if(!this.certifiedIndividual.imageStraight){
// return uni.showToast({
// title: '',
// icon: 'none'
// })
// }
uni.redirectTo({
url: '/pages_mine/mine/authPerson'
})
// if (this.type == "person") {
// uni.redirectTo({
// url: '/pages_mine/mine/authPerson'
// })
// // this.$utils.navigateTo('/mine/authPerson')
// } else if (this.type == "firm") {
// uni.redirectTo({
// url: '/pages_mine/mine/authFirm'
// })
// // this.$utils.navigateTo('/mine/authFirm')
// }
}
}
}
</script>
<style lang="scss" scoped>
.certified-individual {
.content {
padding: 40rpx;
.certified-individual {
.content {
padding: 40rpx;
.title {
display: flex;
font-size: 30rpx;
.title {
display: flex;
font-size: 30rpx;
.image {
display: flex;
align-items: flex-start;
width: 10vw;
height: 3vh;
}
}
.image {
display: flex;
align-items: flex-start;
width: 10vw;
height: 3vh;
}
}
.center {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
gap: 150rpx;
margin-top: 15%;
.center {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
gap: 150rpx;
margin-top: 15%;
.avatarFace {
width: 80vw;
height: 20vh;
}
.avatarFace {
width: 80vw;
height: 20vh;
}
.reverseSide {
width: 80vw;
height: 20vh;
}
}
}
.reverseSide {
width: 80vw;
height: 20vh;
}
}
}
.bottomBtn {
position: fixed;
bottom: 15%;
left: 25%;
width: 50%;
height: 60rpx;
line-height: 60rpx;
font-size: 30rpx;
color: #FFFFFF;
text-align: center;
.bottomBtn {
position: fixed;
bottom: 15%;
left: 25%;
width: 50%;
height: 60rpx;
line-height: 60rpx;
font-size: 30rpx;
color: #FFFFFF;
text-align: center;
//border: 1px solid red;
background: $uni-linear-gradient-color;
-webkit-background-clip: text; /*将设置的背景颜色限制在文字中*/
-webkit-text-fill-color: transparent; /*给文字设置成透明*/
}
//border: 1px solid red;
background: $uni-linear-gradient-color;
-webkit-background-clip: text;
/*将设置的背景颜色限制在文字中*/
-webkit-text-fill-color: transparent;
/*给文字设置成透明*/
}
.agree {
position: fixed;
bottom: 7%;
display: flex;
padding-left: 20rpx;
//border: 1px solid red;
}
}
</style>
.agree {
position: fixed;
bottom: 7%;
display: flex;
font-size: 26rpx;
justify-content: center;
//border: 1px solid red;
}
}
</style>

+ 4
- 4
pages_mine/mine/releaseRecord.vue View File

@ -11,13 +11,13 @@
</view>
<!--标签栏-->
<view class="tabbar">
<view class="" @click="tabChange('all')">
<view class="" @click="tabChange(0)">
<span :class="checkedIndex==0 ? 'tabbarItemActive' : 'tabbarItemNoActive'">全部</span>
</view>
<view class="" @click="tabChange('tiezi')">
<view class="" @click="tabChange(1)">
<span :class="checkedIndex==1 ? 'tabbarItemActive' : 'tabbarItemNoActive'">贴子</span>
</view>
<view class="" @click="tabChange('mingpian')">
<view class="" @click="tabChange(2)">
<span :class="checkedIndex==2 ? 'tabbarItemActive' : 'tabbarItemNoActive'">名片</span>
</view>
</view>
@ -91,7 +91,7 @@
//
tabChange(type) {
this.checkedIndex = (type == 'all' ? 0 : (type == 'tiezi' ? 1 : 2))
this.checkedIndex = type
this.queryParams.pageNo = 1
this.queryParams.pageSize = 10
this.getData()


+ 6
- 0
store/store.js View File

@ -11,6 +11,12 @@ const store = new Vuex.Store({
configList: [], //配置列表
count : 10,
userInfo : {},
certifiedIndividual : {
imageReverseSide: '',
imageStraight: '',
card: '',
name: '',
},
},
getters: {},
mutations: {


Loading…
Cancel
Save