Selaa lähdekoodia

营销单页+图片上传接口

xhj 2 vuotta sitten
vanhempi
commit
ff8eff6a56

+ 1 - 1
components/update-userinfo/index.vue

@@ -62,7 +62,7 @@
 				uni.showLoading({
 					title: '头像上传中'
 				});
-				req.uploadFile('/api/upload', e.detail.avatarUrl, res => {
+				req.uploadFile('/api/nocheck/upload', e.detail.avatarUrl, res => {
 					this.avatar = res.src;
 					uni.hideLoading();
 				});

+ 59 - 0
library/page/page.css

@@ -0,0 +1,59 @@
+/* activity.css */
+page{background: #f5f5f5;}
+.top-fixed{
+	position: fixed;
+	top: 0;
+	right: 0;
+	left: 0;
+	background-color: #fff;
+	z-index: 101;
+}
+.search-box{
+	padding: 30rpx;
+	background-color: #fff;
+}
+
+.search-text{
+	color: #999999;
+}
+
+
+.search-input{
+	height: 76rpx;
+	line-height: 76rpx;;
+	background: #F5F5F5;
+	border-radius: 38rpx;
+	padding: 0 26rpx;
+	font-size: 24rpx;
+}
+.search-input input{
+	font-size: 24rpx;
+}
+.search-input image{
+	width: 34rpx;
+	height: 34rpx;
+	margin-right: 26rpx;
+}
+.search-all{
+	color: #2a82fd;
+	font-size: 30rpx;
+	margin-left: 46rpx;
+}
+.act-list{padding: 0 30rpx;}
+.act-list .li{padding: 0rpx 0 35rpx;background-color: #fff;margin: 30rpx 0;border-radius: 10rpx;}
+.act-list .li:last-child{border-bottom: none;}
+.imgbox{height: 394rpx;border-radius: 10rpx;overflow: hidden;position: relative;}
+.imgbox image{width: 100%;height: 100%;border-radius: 10rpx 10rpx 0 0;}
+.infos{padding: 30rpx 22rpx 0;}
+.tag{display: block;height: 30rpx;border-radius: 6rpx 15rpx 15rpx 0;font-size: 20rpx;color: #fff;padding: 0 15rpx;position: absolute;top: 0;left: 0;background: #31a8fa;line-height: 30rpx;}
+.stas{align-items: flex-end;}
+.tag-box{font-size: 24rpx;color: #717580;line-height: 33rpx;}
+.tag-box text{margin-right: 15rpx;}
+.act-tit{font-size: 30rpx;color: #333333;line-height: 42rpx;font-weight: bold;}
+.area{font-size: 24rpx;color: #999;margin-top: 20rpx;line-height: 33rpx;}
+.area text{margin-right: 10rpx;}
+.money{font-size: 30rpx;color: var(--main);}
+.money text{font-size: 18rpx;}
+.act-btn{padding:0 20rpx !important; height: 64rpx !important;background: #27D699;border-radius: 32rpx !important;font-size: 28rpx;color: #fff;text-align: center;line-height: 64rpx;margin-bottom: 15rpx;margin-left: 30rpx;}
+.act-btn.end{background: #e3e3e3;color: #999;}
+.mede{position: fixed;left: 50%;transform: translateX(-50%);bottom: 30rpx;width: 328rpx;height: 80rpx;background: var(--btn);border-radius: 40rpx;font-size: 30rpx;color: #fff;text-align: center;line-height: 80rpx;}

+ 143 - 0
library/page/page.vue

@@ -0,0 +1,143 @@
+<template>
+	<view v-if="isShow">
+		<view class="top-fixed">
+			<view class="search-box ddflex">
+				<view class="search-input ddflex fflex">
+					<image src="/static/images/ssico.png"></image>
+					<input @confirm="searchFn" confirm-type="search" @input="searchFn" v-model="searchVal" class="fflex"
+						placeholder="请输入关键词" />
+				</view>
+			</view>
+		</view>
+		<view style="height: 140rpx;"></view>
+		<view class="act-list" v-if="pageList && pageList.length > 0">
+			<view class="li" v-for="(item, index) in pageList" :key="index"  @click="jumpUrl('/library/pageDetail/index?code=' + item.code)">
+				<view class="imgbox"><image :src="item.pic" mode="aspectFill"></image></view>
+				<view class="infos fflex">
+					<view class="stas ddflex">
+						<view class="fflex">
+							<view class="act-tit tover">{{ item.title }}</view>
+							<!-- <view class="tag-box tovers">{{ item.brief }}</view> -->
+							<view class="area ddflex">
+								<view>分享 775  |  带来流量 89</view>
+							</view>
+						</view>
+						<button class="act-btn ddflex">
+							<image style="width: 20rpx;height: 22rpx;margin-right: 10rpx;" src="../static/images/money.png"></image>
+							立即分享
+						</button>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view class="nodata" v-else>
+			<image :src="picUrlss + 'empty_dd.png'"></image>
+			<text>暂无记录~</text>
+		</view>
+	</view>
+</template>
+
+<script>
+const req = require('../../utils/request.js');
+const api = require('../../utils/api.js');
+const util = require('../../utils/util.js');
+const app = getApp();
+export default {
+	components: { },
+	data() {
+		return {
+			picUrlss: req.public.picUrls,
+			isShow: false,
+			pageList: [],
+			isLoad: true,
+			form: {
+				page: 1,
+				limit: 10
+			},
+			isLogin: false,
+			userinfovip: {}
+		};
+	},
+	onLoad() {},
+	onShow() {
+		this.isLogin = req.isAuth();
+		this.getPageList(true);
+		if (this.isLogin) {
+			this.getuserVip();
+		}
+	},
+	onReachBottom: function() {
+		this.form.page++;
+		this.getPageList(false);
+	},
+	onShareAppMessage() {
+		
+	},
+	onShareTimeline() {
+		
+	},
+
+	methods: {
+		jumpUrl(url) {
+			if (!req.isLogins(true)) {
+				return;
+			}
+			uni.navigateTo({
+				url: url
+			});
+		},
+		getPageList(isShow) {
+			if (!this.isLoad) return false;
+			this.isLoad = false;
+			let form = this.form;
+			form.rootCode = 'brochure'
+			uni.showLoading();
+			req.getRequest(
+				'/api/material/library',
+				form,
+				res => {
+					this.isShow = true;
+					res = res?res.list:[]
+					if (res && res.length == 10) {
+						this.isLoad = true;
+					}
+					if (this.form.page > 1) {
+						res = this.pageList.concat(res);
+					}
+					this.pageList = res;
+					uni.hideLoading();
+				},
+				isShow
+			);
+		},
+		getuserVip() {
+			req.getRequest('/api/user/levelDetails', {}, data => {
+				let expireTime = Array;
+				if (data.expireTime) {
+					expireTime = data.expireTime.split(' ');
+					data.expireTime = data.expireTime.replace(/-/g, '/');
+				} // 解决苹果不兼容---日期
+				let nowTime = new Date().getTime();
+				let endTime = new Date(data.expireTime).getTime();
+				let times = parseInt((endTime - nowTime) / 1000); // var expireTime= new Date(data.expireTime)
+				// console.log(times, nowTime, endTime, data.expireTime);
+				this.userinfovip = data;
+				if (times <= 0) {
+					this.userinfovip.end = true;
+				} else {
+					this.userinfovip.end = false;
+				}
+			});
+		},
+		toActivity(item) {
+			uni.navigateTo({
+				url: '/match/activityDetail/activityDetail?id=' + item.id
+			});
+		}
+	}
+};
+</script>
+
+<style>
+@import './page.css';
+</style>

+ 771 - 0
library/pageDetail/index.css

@@ -0,0 +1,771 @@
+.flex-col{flex-direction: column;}
+.ddflex{align-items: center;}
+.fflex{flex: 1;}
+
+.home{width: 160rpx;height: 72rpx;background-color: rgba(0,0,0,.7);border-radius: 36rpx;justify-content: center;position: fixed;left: 20rpx;z-index: 10;}
+.home text{font-size: 29rpx;color: #fff;}
+.home image{width: 29rpx;height: 28rpx;margin-right: 10rpx;}
+
+.top {
+	background-color: #fff;
+	padding: 20rpx 30rpx;
+}
+
+.logos {
+	font-size: 22rpx;
+	color: #666;
+}
+
+.logo-img {
+	width: 185rpx;
+	height: 39rpx;
+	margin-right: 15rpx;
+}
+
+.logo-r {
+	position: relative;
+	padding-left: 10rpx;
+}
+
+.logo-r:before {
+	content: '';
+	display: block;
+	width: 1rpx;
+	height: 39rpx;
+	background-color: #D1D1D1;
+	position: absolute;
+	top: 50%;
+	transform: translateY(-50%);
+	left: 0;
+}
+
+.logo-r .ddflex {
+	font-size: 20rpx;
+	color: #999;
+	margin-bottom: 5rpx;
+}
+
+.logo-r .ddflex image {
+	width: 17rpx;
+	height: 24rpx;
+	margin-right: 5rpx;
+}
+
+.tel {
+	width: 210rpx;
+	height: 70rpx;
+	border: 1rpx solid #FA9350;
+	border-radius: 8rpx;
+}
+
+.tel-t {
+	height: 32rpx;
+	background-color: #FA9350;
+	font-size: 20rpx;
+	color: #fff;
+	justify-content: center;
+}
+
+.tel-t image {
+	width: 20rpx;
+	height: 20rpx;
+	margin-right: 7rpx;
+}
+
+.call {
+	font-size: 26rpx;
+	color: #FA9350;
+	font-weight: bold;
+	text-align: center;
+	line-height: 38rpx;
+}
+
+/* 轮播图 */
+.ban {
+	height: 400rpx;
+	position: relative;
+	background: #fff;
+}
+
+.swiper {
+	width: 100%;
+	height: 400rpx;
+}
+
+.swiper image {
+	width: 100%;
+	height: 100%;
+}
+
+.swiper-img {
+	width: 750rpx;
+	height: 400rpx;
+}
+
+.dots {
+	position: absolute;
+	left: 50%;
+	transform: translateX(-50%);
+	bottom: 30rpx;
+	z-index: 3;
+	justify-content: center;
+}
+
+.dot {
+	width: 12rpx;
+	height: 12rpx;
+	background: rgba(255, 255, 255, .4);
+	margin: 0 3rpx;
+	border-radius: 6rpx;
+}
+
+.dot.active {
+	background: #fff;
+	width: 28rpx;
+}
+
+/* 表单 */
+.form {
+	padding: 40rpx 30rpx;
+	background: #fff;
+}
+
+.form-title {
+	text-align: center;
+}
+.form-title text{font-size: 32rpx;
+	color: #333;
+	font-weight: bold;}
+
+.form-list {
+	margin-top: 40rpx;
+}
+
+.form-list .li {
+	background: #f9f9f9;
+	border-radius: 15rpx;
+	margin-bottom: 20rpx;
+}
+
+.label {
+	font-size: 160rpx;
+	font-size: 28rpx;
+	color: #666;
+	padding-left: 30rpx;
+}
+
+.ipt {
+	font-size: 30rpx;
+	color: #333;
+	padding: 25rpx 30rpx;
+}
+
+.textarea {
+	font-size: 30rpx;
+	color: #333;
+	padding: 25rpx 30rpx;
+	height: 180rpx;
+}
+
+.phone-ipt {
+	font-size: 30rpx;
+	color: #333;
+	text-align: left;
+	padding: 25rpx 30rpx;
+}
+
+.pickers {
+	font-size: 30rpx;
+	color: #333;
+	text-align: left;
+	padding: 25rpx 30rpx;
+}
+
+.placeholder {
+	color: #999;
+}
+
+.form-btn {
+	margin-top: 60rpx;
+	background-color: #2B8CFF;
+	font-size: 30rpx;
+	color: #fff;
+	text-align: center;
+	line-height: 90rpx;
+	border-radius: 10rpx;
+}
+
+/* 文本 */
+.richText {
+	background-color: #fff;
+	padding: 40rpx 30rpx;
+	font-size: 34rpx;
+	color: #333;
+	line-height: 1.7;
+	margin: 20rpx 0;
+}
+
+/* 商品 */
+.product {
+	margin: 20rpx 0;
+	padding: 0 30rpx;
+	background-color: #fff;
+}
+
+.product .li {
+	border-bottom: 1rpx solid #e9e9e9;
+	padding: 30rpx 0;
+	align-items: flex-start;
+}
+
+.product .li:last-child {
+	border-bottom: none;
+}
+
+.pro-img {
+	width: 200rpx;
+	height: 200rpx;
+	border-radius: 15rpx;
+	margin-right: 20rpx;
+}
+
+.pro-info {
+	height: 200rpx;
+	position: relative;
+}
+
+.pro-name {
+	font-size: 30rpx;
+	color: #333;
+	line-height: 40rpx;
+	height: 85rpx;
+	overflow: hidden;
+}
+
+.pro-bri {
+	font-size: 24rpx;
+	color: #999;
+}
+
+.pro-opt {
+	justify-content: space-between;
+	position: absolute;
+	left: 0;
+	right: 0;
+	bottom: 0;
+}
+
+.money {
+	font-size: 36rpx;
+	color: #C5020B;
+	font-weight: bold;
+}
+
+.money text {
+	font-size: 22rpx;
+	color: #252A3B;
+	margin-left: 5rpx;
+	font-weight: normal;
+}
+
+.pro-btn {
+	background-color: #2B8CFF;
+	height: 50rpx;
+	border-radius: 25rpx;
+	padding: 0 20rpx;
+	font-size: 28rpx;
+	color: #fff;
+	text-align: center;
+	line-height: 50rpx;
+}
+
+.product2 {
+	margin: 20rpx 0;
+	padding: 30rpx;
+}
+
+.product2 .li {
+	width: 330rpx;
+	margin-right: 30rpx;
+	background-color: #fff;
+	border-radius: 15rpx;
+}
+
+.product2 .li:nth-child(2n) {
+	margin-right: 0;
+}
+
+.product2 .pro-img {
+	width: 330rpx;
+	height: 330rpx;
+	border-radius: 15rpx 15rpx 0 0;
+}
+
+.product2 .li .pro-info {
+	padding: 20rpx;
+	height: auto;
+}
+
+.product2 .li .pro-opt {
+	position: inherit;
+	margin-top: 10rpx;
+}
+
+.pro-cart image {
+	width: 42rpx;
+	height: 42rpx;
+}
+
+.product3 {
+	margin: 20rpx 0;
+	padding: 20rpx 0;
+	background: none;
+	height: 260rpx;
+	overflow: hidden;
+}
+
+.product3 scroll-view {
+	white-space: nowrap;
+	padding-bottom: 20rpx;
+}
+
+.product3 .li {
+	width: 600rpx;
+	margin-right: 30rpx;
+	border: none;
+	display: inline-block;
+	padding: 30rpx;
+	background-color: #fff;
+	border-radius: 20rpx;
+}
+
+.product3 .li:first-child {
+	margin-left: 30rpx;
+}
+
+/* 图片 */
+.images image {
+	width: 100%;
+}
+
+/* 客服 */
+.contact {
+	position: fixed;
+	bottom: 20%;
+	right: 30rpx;
+	z-index: 50;
+	background-color: rgba(255, 255, 255, .9);
+	box-shadow: 0 0 10rpx rgba(0, 0, 0, .1);
+	justify-content: center;
+	font-size: 24rpx;
+	color: #333;
+	flex-direction: column;
+	width: 100rpx;
+	height: 100rpx;
+	border-radius: 50%;
+}
+
+.contact image {
+	width: 40rpx;
+	height: 34rpx;
+	margin: 0 auto 5rpx;
+}
+
+/* 分享 */
+.share {
+	position: fixed;
+	bottom: 30%;
+	right: 30rpx;
+	z-index: 50;
+	background-color: rgba(255, 255, 255, .9);
+	box-shadow: 0 0 10rpx rgba(0, 0, 0, .1);
+	justify-content: center;
+	font-size: 24rpx;
+	color: #333;
+	flex-direction: column;
+	width: 100rpx;
+	height: 100rpx;
+	border-radius: 50%;
+}
+
+.share image {
+	width: 34rpx;
+	height: 34rpx;
+	margin: 0 auto 5rpx;
+}
+
+/* 优惠券 */
+.coupon {
+	padding: 60rpx 30rpx 30rpx;
+}
+
+.tag {
+	width: 156rpx;
+	height: 40rpx;
+	background-color: #FC3C31;
+	border-radius: 20rpx 20rpx 20rpx 0;
+	font-size: 28rpx;
+	color: #fff;
+	text-align: center;
+	line-height: 40rpx;
+	margin: 0 auto 15rpx;
+}
+
+.form-title view {
+	position: relative;
+	display: inline-block;
+}
+
+.form-title view text {
+	position: relative;
+	z-index: 5;
+}
+
+.form-title view::after {
+	content: '';
+	display: block;
+	height: 6rpx;
+	background-color: #FFC72C;
+	position: absolute;
+	bottom: 2rpx;
+	left: 30rpx;
+	right: 30rpx;
+	z-index: 2;
+}
+
+.coupon-list {
+	padding: 10rpx 0 0;
+}
+
+.coupon-list .li {
+	background-color: #fff;
+	box-shadow: 0 0 32rpx rgba(0, 0, 0, 0.04);
+	border-radius: 15rpx;
+	padding: 0 22rpx;
+	color: #999;
+	margin-bottom: 24rpx;
+	position: relative;
+	margin-top: 30rpx;
+}
+
+.info {
+	border-bottom: 1rpx dashed #E9E9E9;
+	padding: 20rpx 22rpx 29rpx 9rpx;
+	position: relative;
+}
+
+.info::before,
+.info::after {
+	content: '';
+	display: block;
+	width: 20rpx;
+	height: 20rpx;
+	background-color: #f6f6f6;
+	border-radius: 50%;
+	position: absolute;
+	bottom: -10rpx;
+}
+
+.info::before {
+	left: -34rpx;
+}
+
+.info::after {
+	right: -34rpx;
+}
+
+.info .left-pic {
+	width: 80rpx;
+	height: 80rpx;
+	margin-right: 15rpx;
+}
+
+.info .left-pic image {
+	width: 100%;
+	height: 100%;
+}
+
+.title {
+	font-size: 32rpx;
+	color: #222;
+	font-weight: bold;
+}
+
+.time {
+	font-size: 22rpx;
+	margin-top: 15rpx;
+}
+
+.info-r {
+	text-align: right;
+	margin-left: 20rpx;
+	width: 160rpx;
+}
+
+.money{justify-content: flex-end;}
+.money text {
+	font-size: 40rpx;
+	color: #EB0000;
+}
+
+
+.money .texts {
+	color: #EB0000;
+	font-size: 30rpx;
+}
+
+.man {
+	font-size: 22rpx;
+	text-align: right;
+}
+
+.li-bot {
+	padding: 15rpx 15rpx 15rpx 7rpx;
+	height: 80rpx;
+}
+
+.check {
+	font-size: 24rpx;
+	color: #666;
+}
+
+.check image {
+	width: 17rpx;
+	height: 11rpx;
+	margin-left: 8rpx;
+}
+
+.infos {
+	font-size: 20rpx;
+	padding: 15rpx 0 30rpx;
+}
+
+.infos view {
+	padding: 5rpx 0;
+}
+
+.yong {
+	width: 130rpx;
+	height: 50rpx;
+	background: linear-gradient(90deg, #009AFF 0%, #3FBDFB 100%);
+	border-radius: 28rpx;
+	font-size: 24rpx;
+	color: #fff;
+	justify-content: center;
+	text-align: center;
+}
+
+.yong-ma{width: 38rpx;height: 38rpx;margin-right: 40rpx;}
+
+/* 充值金额 */
+.recharge {
+	padding: 45rpx 0 0 0;
+}
+
+.rechargeMoney {
+	font-size: 32rpx;
+	/* font-weight: bold; */
+	color: #666;
+}
+
+.rechargeul {
+	padding: 40rpx 0 0 0;
+	flex-wrap: wrap;
+	/* border-bottom: 1rpx solid #DBDBDB; */
+}
+
+.rechargeId {
+	padding: 25rpx 0;
+	font-size: 40rpx;
+	color: #333;
+	font-weight: bold;
+	border-bottom: 1rpx solid #DBDBDB;
+	align-items: center;
+	margin-bottom: 70rpx;
+}
+
+.rechargeId text {
+	font-weight: bold;
+	margin-right: 22rpx;
+}
+
+.rechargeId input {
+	font-size: 48rpx;
+	color: #333;
+	height: 60rpx;
+	font-weight: normal;
+}
+
+.rechargeId.on {
+	border-color: #F32A27;
+}
+
+.placeholder {
+	color: #BABABA;
+}
+
+.rechargeli {
+	padding: 60rpx 0;
+	width: 210rpx;
+	border-radius: 20rpx;
+	margin-right: 30rpx;
+	background-color: #F7F4F8;
+	margin-bottom: 50rpx;
+	border: 1rpx solid #F7F4F8;
+	box-sizing: border-box;
+	text-align: center;
+	justify-content: center;
+}
+
+.rechargeli:nth-child(3n) {
+	margin-right: 0;
+}
+
+.rechargeli-active {
+	border-color: #F32A27;
+	background-color: #fef3f3;
+}
+
+.awealth {
+	color: #F32A27 !important;
+}
+
+.wealth {
+	font-size: 30rpx;
+	font-weight: bold;
+	text-align: center;
+}
+
+.chongzhi {
+	padding: 25rpx 20rpx;
+	text-align: center;
+	background-color: #FD3A31;
+	border-radius: 10rpx;
+	font-size: 32rpx;
+	color: #FFFFFF;
+}
+
+.subchongzhi {
+	padding: 23rpx 18rpx;
+	text-align: center;
+	color: #FD3A31;
+	border-radius: 10rpx;
+	font-size: 32rpx;
+	border: 1rpx solid #FD3A31;
+	margin-top: 30rpx;
+}
+
+
+/* 手机号弹窗 */
+.mask {
+	position: fixed;
+	z-index: 99;
+	top: 0;
+	left: 0;
+	right: 0;
+	bottom: 0;
+	background-color: rgba(0, 0, 0, .5);
+}
+
+.regi {
+	position: fixed;
+	width: 550rpx;
+	left: 50%;
+	top: 50%;
+	transform: translate(-50%,-50%);
+	border-radius: 15rpx;
+	padding: 0 30rpx 30rpx;
+	background-color: #fff;
+	z-index: 100;
+}
+
+.regi-tit {
+	border-bottom: 2rpx solid #D8D8D8;
+	font-size: 30rpx;
+	color: #333;
+	padding: 35rpx 0 35rpx;
+	text-align: center;
+}
+
+.regi-close {
+	width: 37rpx;
+	height: 37rpx;
+	position: absolute;
+	top: 20rpx;
+	right: 22rpx;
+}
+
+.phone {
+	align-items: center;
+	margin: 100rpx 0 100rpx;
+}
+
+.phone input {
+	font-size: 30rpx;
+	color: #333;
+}
+.regi-btn {
+	background-color: #2B8CFF;
+	width: 245rpx;
+	height: 75rpx;
+	line-height: 75rpx;
+	font-size: 30rpx;
+	color: #fff;
+	margin-bottom: 20rpx;
+	text-align: center;
+	border-radius: 45rpx;
+}
+.regi-btn1{background-color: #e9e9e9;color: #666;}
+
+/* 导引 */
+.guide{width: 420rpx;height: 523rpx;background-color: #FFFFFF;border-radius: 40rpx;position: fixed;top: 0;right: 45rpx;z-index: 100;padding: 45rpx 0 0 60rpx;box-sizing: border-box;}
+.guide::before{content: '';display: block;width: 0;height: 0;border: 20rpx solid transparent;border-top: none;border-bottom-color: #fff;position: absolute;right: 85rpx;top: -15rpx;}
+.guide-tit{font-size: 40rpx;color: #333;font-weight: bold;padding-left: 10rpx;}
+.guide-tip{font-size: 24rpx;color: #999;padding-left: 10rpx;margin-top: 5rpx;}
+.guide-s{font-size: 36rpx;color: #333;font-weight: bold;margin-top: 38rpx;}
+.guide-s image{width: 56rpx;height: 56rpx;margin-right: 18rpx;}
+.guide-btn{width: 300rpx;height: 86rpx;background: linear-gradient(90deg, #009AFF 0%, #3FBDFB 100%);border-radius: 50rpx;font-size: 32rpx;color: #fff;font-weight: bold;text-align: center;line-height: 86rpx;margin-top: 50rpx;}
+
+.popupPost{
+	position: fixed;left: 0;right: 0; z-index: 100;bottom: 400rpx;
+}
+.popup{background-color: #fff;border-radius: 40rpx;width: 634rpx;box-sizing: border-box;padding: 54rpx 47rpx 60rpx;text-align: center;margin: auto;}
+.popup-img{width: 318rpx;height: 206rpx;margin: 0 auto;}
+.popup-tip{font-size: 52rpx;color: #333;font-weight: bold;margin-top: 30rpx;text-align: center;}
+.popup-tips{text-align: center;font-size: 32rpx;color: #999;margin: 25rpx auto 0;max-width: 430rpx;}
+.popup-btns{margin-top: 75rpx;justify-content: space-between;}
+.back-home{text-align: center; font-size: 32rpx;color: #2B8CFF;width: 260rpx;height: 86rpx;border-radius: 50rpx;border: 2rpx solid #2B8CFF;justify-content: center;box-sizing: border-box;}
+.check-btn{text-align: center;font-size: 32rpx;color: #fff;width: 260rpx;height: 86rpx;border-radius: 50rpx;background: linear-gradient(90deg, #009AFF 0%, #3FBDFB 100%);justify-content: center;}
+.popup-closePost{
+	position: absolute;
+	left: 0;
+	right: 0;
+	bottom: -154rpx;
+}
+.popup-close{width: 89rpx;height: 89rpx;position: absolute;margin: auto;}
+
+.popup-ipt{margin-top: 55rpx;border: 1rpx solid #707070;border-radius: 15rpx;padding: 20rpx 40rpx;font-size: 32rpx;color: #333;text-align: left;box-sizing: border-box;height: 90rpx;line-height: 50rpx;}
+.placeholder{color: #999;}
+
+
+.ceng{position: fixed;left: 0;top: 0;right: 0;bottom: 0;background-color: rgba(0,0,0,.5);z-index: 99;}
+.qrcodePost{
+	position: fixed;
+	left: 0;
+	right: 0;
+	bottom: 400;
+	z-index: 100;
+}
+.qrcode{background-color: #fff;width: 560rpx;border-radius: 15rpx;padding: 30rpx;box-sizing: border-box;text-align: center;margin: auto;}
+.code{font-size: 30rpx;color: #333;font-weight: bold;padding: 30rpx 0 50rpx;justify-content: center;border-top: 1rpx dashed #e9e9e9;}
+.code text{color: #2B8CFF;}
+.copy{font-size: 24rpx;color: #999;border: 1rpx solid #e9e9e9;border-radius: 20rpx;height: 40rpx;line-height: 40rpx;width: 100rpx;margin-left: 15rpx;font-weight: normal;text-align: center;}
+.qr-code{justify-content: center;padding: 50rpx 0;}
+.closePost{
+	position: absolute;left: 0;right: 0;bottom: -90rpx;
+}
+.close{width: 60rpx;height: 60rpx;margin: auto;}
+.code-image{
+	width: 400rpx;
+	height: 400rpx;
+}

+ 823 - 0
library/pageDetail/index.vue

@@ -0,0 +1,823 @@
+<template>
+	<view class="page-div">
+		<block v-if="jsonContent && jsonContent.length > 0" v-for="(item, index) in jsonContent" tid="index">
+			<view class="ban" v-if="item.key == 'banner'">
+				<swiper class="swiper" @change="swiperChange" autoplay="true" interval="5000" duration="300">
+					<block v-for="(it,idx) in item.value.imageList" tid="idx">
+						<swiper-item>
+							<image lazy-load="true" :src="it.src" mode="aspectFill" @click="clickBanner(item)"></image>
+						</swiper-item>
+					</block>
+				</swiper>
+				<view class="dots ddflex">
+					<block v-for="(it,idx) in item.value.imageList" tid="idx"><view :class="['dot', idx == swiperCurrent ? 'active' : '']"></view></block>
+				</view>
+			</view>
+			<view class="form flex-col ddflex" v-if="item.key == 'applicationForm'">
+				<text class="form-title" v-if="item.value.title.isShow">{{ item.value.title.value }}</text>
+				<view class="form-list flex-col ddflex">
+					<view class="li ddflex" v-for="(it,idx) in item.value.formItemList" tid="idx">
+						<block v-if="it.type == 1">
+							<!-- <input value="{{it.fieldValue}}" placeholder="{{'请填写0' + it.label}}" placeholder-class="placeholder" class="ipt fflex" if="{{it.dataType == 1}}" data-item="{{it}}" @change="changeFieldValue"/>
+							<block else> -->
+									<!-- if="{{isInclude(it.label, '手机')}}" -->
+								<input
+								    v-if="it.dataType == 1"
+								    :value="it.fieldValue"
+									:placeholder="'请填写' + it.label"
+									placeholder-class="placeholder"
+									maxlength="11"
+									:data-item="it"
+									type="tel"
+									@change="changeFieldValue"
+									class="ipt fflex"
+								/>
+								<input v-else 
+								:value="it.fieldValue"  
+								:placeholder="'请填写' + it.label" 
+								placeholder-class="placeholder" 
+								class="ipt fflex" 
+								:data-item="it"
+								@change="changeFieldValue"/>
+							<!-- </block> -->
+						</block>
+						<textarea
+							:value="it.fieldValue"
+							:placeholder="'请填写' + it.label"
+							placeholder-class="placeholder"
+							class="textarea fflex"
+							v-else-if="it.type == 4"
+							:data-item="it"
+							@change="changeFieldValue"
+						></textarea>
+						<!-- <picker :range="it.option" class="pickers fflex" @change="changeOptions($event, idx)" v-else-if="it.type == 5">
+							<text if="it.fieldValue">{{ it.fieldValue }}</text>
+							<text class="placeholder" else>请选择{{ it.label }}</text>
+						</picker> -->
+					</view>
+				</view>
+				<text class="form-btn" @click="formSubmit(item.value)">{{ item.value.buttonName }}</text>
+			</view>
+			<view class="richText" v-if="item.key == 'text'">
+				 <richtext type="html">{{item.value.content}}</richtext>
+				</view>
+			<block v-if="item.key == 'product'">
+				<view class="product flex-col ddflex" v-if="item.value.layoutNum == 1">
+					<view class="li ddflex" v-for="(it,idx) in item.value.productList" tid="idx" @click="jumpUrl('/product/detail', {id:it.id})">
+						<image :src="it.pic" mode="aspectFill" class="pro-img"></image>
+						<view class="pro-info fflex">
+							<text class="pro-name tovers">{{ it.title }}</text>
+							<text class="pro-bri tover" v-if="it.brief">{{ it.brief }}</text>
+							<view class="pro-opt ddflex">
+								<view class="money">
+									<text>¥{{ it.minSalePrice }}</text>
+									<text class="texts">/起</text>
+								</view>
+								<text class="pro-btn">立即购买</text>
+							</view>
+						</view>
+					</view>
+				</view>
+				<view class="product2 ddflex" v-if="item.value.layoutNum == 2">
+					<view class="li" v-for="(it, idx) in item.value.productList" tid="idx" @click="jumpUrl('/product/detail', {id:it.id})">
+						<image :src="it.pic" mode="aspectFill" class="pro-img"></image>
+						<view class="pro-info fflex">
+							<text class="pro-name tovers">{{ it.title }}</text>
+							<view class="pro-opt ddflex">
+								<view class="money">
+									<text>¥{{ it.minSalePrice }}</text>
+									<text class="texts">/起</text>
+								</view>
+								<view class="pro-cart"><image src="../../assets/static/pages/images/jia.png"></image></view>
+							</view>
+						</view>
+					</view>
+				</view>
+				<view class="product product3 flex-col ddflex" v-if="item.value.layoutNum == 3">
+					<scroll-view scroll-x="true">
+						<view class="li" v-for="(it,idx) in item.value.productList" tid="idx" @click="jumpUrl('/product/detail', {id:it.id})">
+							<view class="ddflex">
+								<image :src="it.pic" mode="aspectFill" class="pro-img"></image>
+								<view class="pro-info fflex">
+									<text class="pro-name tovers">{{ it.title }}</text>
+									<text class="pro-bri tover" v-if="it.brief">{{ it.brief }}</text>
+									<view class="pro-opt ddflex">
+										<view class="money">
+											<text>¥{{ it.minSalePrice }}</text>
+											<text class="texts">/起</text>
+										</view>
+										<text class="pro-btn">立即购买</text>
+									</view>
+								</view>
+							</view>
+						</view>
+					</scroll-view>
+				</view>
+			</block>
+			<view class="images" v-if="item.key == 'images'"><image :src="item.value.src" mode="widthFix"></image></view>
+			<block v-if="item.key == 'customerService'">
+				<!-- 企微客服 -->
+				<view class="contact ddflex" @click="customerServiceChat(item.value)" v-if="item.value.type == '1'">
+					<image src="../../assets/static/pages/images/kfico.png"></image>
+					<text>客服</text>
+				</view>
+				<!-- 第三方客服 -->
+				<view class="contact ddflex" @click="jumpHref(item.value)" v-if="item.value.type == '2'">
+					<image src="../../static/pages/images/kfico.png"></image>客服
+				</view>
+				<!-- 微信客服、内置客服页面 -->
+				<button open-type="contact" class="contact ddflex" v-if="item.value.type == '0' || item.value.type == '3'">
+					<image src="../../assets/static/pages/images/kfico.png"></image>
+					<text>客服</text>
+				</button>
+			</block>
+
+			<view class="coupon flex-col ddflex" v-if="item.key == 'coupon'">
+				<!-- <view class="tag">免费领取</view> -->
+				<view class="form-title">
+					<view>
+						<text>{{ item.value.couponTitle }}</text>
+					</view>
+				</view>
+				<view class="coupon-list flex-col ddflex">
+					<view class="li flex-col ddflex" v-for="(it,indexx) in item.value.couponList" tid="indexx">
+						<view class="info ddflex">
+							<view class="left-pic"><image :src="it.couponIcon?it.couponIcon:'../../assets/static/pages/images/coup_logo.jpg'" mode="aspectFill"></image></view>
+							<view class="fflex flex-col ddflex">
+								<text class="title">{{ it.couponTitle }}</text>
+								<text class="time">{{ getDateFormat(it.couponStart) }}-{{ getDateFormat(it.couponEnd) }}</text>
+							</view>
+							<view class="info-r flex-col ddflex">
+								<view class="money">
+									<text class="texts">¥</text>
+									<text>{{ it.couponAmount }}</text>
+								</view>
+								<text class="man">{{ it.couponBrief }}</text>
+							</view>
+						</view>
+						<view class="li-bot ddflex">
+							<view class="check ddflex fflex" @click="checks(it)">
+								<text>查看详情</text>
+								<image v-if="!it.isShow" src="../../assets/static/pages/images/bico.png"></image>
+								<image v-else src="../../assets/static/pages/images/bico.png" class="bico_h"></image>
+							</view>
+							<!-- <image src="../../static/images/ma_dark.png" class="yong-ma"></image> -->
+							<block v-if="it.userCount >= it.userReceive && it.userCount != 0 && it.userReceive != -1">
+								<text class="yong ddflex" @click="jumpUrl('pages/mine/coupons')">去使用</text>
+							</block>
+							<block v-else>
+								<text
+									@click="getCoupon(it)"
+									class="yong ddflex"
+									v-if="item.value.btnBackground.length == 2"
+									:style="'background: linear-gradient(90deg, ' + item.value.btnBackground[0] + ' 0%, ' + item.value.btnBackground[1] + ' 100%);'"
+								>
+									{{ item.value.buttonName }}
+								</text>
+								<text
+									@click="getCoupon(it)"
+									class="yong ddflex"
+									v-else-if="item.value.btnBackground.length == 1"
+									:style="'background: ' + item.value.btnBackground[0] + ';'"
+								>
+									{{ item.value.buttonName }}
+								</text>
+								<text class="yong ddflex" v-else @click="getCoupon(it)">{{ item.value.buttonName }}</text>
+							</block>
+						</view>
+						<view class="infos" v-if="it.isShow">
+							<text>使用范围:{{ it.couponBrief }}</text>
+						</view>
+					</view>
+				</view>
+			</view>
+			<view class="coupon flex-col ddflex" v-if="item.key == 'recharge'">
+				<text class="tag">快捷充值</text>
+				<view class="form-title">
+					<view>
+						<text>{{ item.value.rechargeTitle }}</text>
+					</view>
+				</view>
+				<view class="recharge flex-col ddflex">
+					<view :class="'dflex rechargeId' + (isInt ? ' on' : '')">
+						<text v-if="item.value.showSymbol">¥</text>
+						<input
+							:placeholder="item.value.placeholderText ? item.value.placeholderText : '点击输入充值金额'"
+							placeholder-class="placeholder"
+							:value="pay"
+							type="number"
+							@change="amount"
+							@focus="focus"
+						/>
+					</view>
+					<text class="rechargeMoney" v-if="TabList && TabList.length > 0">快捷充值</text>
+					<view class="rechargeul dflex" v-if="TabList && TabList.length > 0">
+						<!--选中 加class active -->
+						<view :class="'rechargeli '+(it.active ?'rechargeli-active':'')" v-for="(it,index) in TabList" tid="index" @click="switchTab(it, index)">
+							<text :class="'wealth '+ (item.active ?' awealth':'')">充{{ it.rechargeAmount }}元</text>
+							<!-- <view class="give awealth">
+								送40元
+							</view> -->
+						</view>
+					</view>
+				</view>
+				<text
+					class="chongzhi"
+					@click="remainder()"
+					:style="item.value.mainColor ? 'background-color: ' + item.value.mainColor + ';border: 1px solid ' + item.value.mainColor + ';' : ''"
+				>
+					{{ item.value.buttonName }}
+				</text>
+			</view>
+		</block>
+
+	
+		<view class="mask" v-if="isShowMask"></view>
+		<!-- <view class="guide" :style="'top:'+37+'rpx;'">
+			<view class="guide-tit">点这里更多操作</view>
+			<view class="guide-tip">领取优惠不迷路</view>
+			<view class="guide-s ddflex"><image src="../../static/images/cz_jia.png"></image>添加到桌面</view>
+			<view class="guide-s ddflex"><image src="../../static/images/cz_home.png"></image>返回首页</view>
+			<view class="guide-btn">我知道了</view>
+		</view> -->
+		<view class="popupPost" v-if="isShowBMDialogView">
+			<view class="popup flex-col ddflex" v-if="isShowBMDialogView">
+				<image src="../../assets/static/images/popup_tip.png" class="popup-img"></image>
+				<text class="popup-tip">提交成功</text>
+				<text class="popup-tips">你的信息已提交,会有专业人员联系你,请耐心等待</text>
+				<view class="popup-btns ddflex">
+					<text class="back-home ddflex" @click="goHome()">去首页</text>
+					<text class="check-btn ddflex" @click="hintDialogView()">确定</text>
+				</view>
+				<view class="popup-closePost">
+					<image src="../../assets/static/images/popup_close.png" class="popup-close" @click="hintDialogView()"></image>
+				</view>
+			</view>
+		</view>
+
+		<view class="popupPost" v-if="isShowRemainderDialogView">
+			<view class="popup flex-col ddflex" v-if="isShowRemainderDialogView">
+				<image src="../../assets/static/images/popup_tip.png" class="popup-img"></image>
+				<text class="popup-tip">充值成功</text>
+				<text class="popup-tips">充值已成功,可前往“我的钱包”查看余额</text>
+				<view class="popup-btns ddflex">
+					<text class="back-home ddflex" @click="goHome()">去首页</text>
+					<text class="check-btn ddflex" @click="jumpUrl('pages/wallet/index')">查看余额</text>
+				</view>
+				<image src="../../assets/static/images/popup_close.png" class="popup-close" @click="hintDialogView()"></image>
+			</view>
+		</view>
+
+		<view class="popupPost" v-if="isShowCouponDialogView">
+			<view class="popup flex-col ddflex" v-if="isShowCouponDialogView">
+				<image src="../../assets/static/images/popup_tip.png" class="popup-img"></image>
+				<text class="popup-tip">领取成功</text>
+				<text class="popup-tips">已存入“我的优惠券”中,可前往查看使用</text>
+				<view class="popup-btns ddflex">
+					<text class="back-home ddflex" @click="jumpUrl('pages/mine/coupons')">我的优惠券</text>
+					<text class="check-btn ddflex" @click="createCode()">立即使用</text>
+				</view>
+				<image src="../../assets/static/images/popup_close.png" class="popup-close" @click="hintDialogView()"></image>
+			</view>
+		</view>
+
+		<view class="popupPost" v-if="isShowBindMobileView">
+			<view class="popup flex-col ddflex" v-if="isShowBindMobileView">
+				<text class="popup-tip">验证手机号</text>
+				<text class="popup-tips">该手机号仅用于线下核销验证请放心填写</text>
+				<input :value="phoneNumberValue" maxlength="11" type="number" placeholder="请输入手机号" placeholder-class="placeholder" class="popup-ipt" @change="phoneNumberChange" />
+				<view class="popup-btns ddflex" style="margin-top: 60rpx">
+					<text class="back-home ddflex" @click="hintBindMobileView()">取消</text>
+					<text class="check-btn ddflex" @click="confirmBundMoble()">确定</text>
+				</view>
+				<image src="../../assets/static/images/popup_close.png" class="popup-close" @click="hintDialogView()"></image>
+			</view>
+		</view>
+
+		<view class="ceng" v-if="isShowCard" @click="hideCardPop()"></view>
+		<view class="qrcodePost" v-if="isShowCard">
+			<view class="qrcode flex-col ddflex" v-if="isShowCard">
+			<text class="hintt">{{ currentCard.couponTitle }}</text>
+			<view class="qr-code ddflex">
+				<image class="code-image" :src="currentCard.qrCodeUri"></image>
+			</view>
+			<view class="code ddflex">
+				<text>{{ currentCard.id }}</text>
+				<text class="copy" @click="copyCode()">复制</text>
+			</view>
+			<text class="hittext">- 请将二维码出示给店员核销使用 -</text>
+			<view class="closePost">
+				<image src="../../assets/static/pages/images/close2.png" class="close" @click="hideCardPop()"></image>
+			</view>
+		</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import req from '../../utils/request.js'
+import util from '../../utils/util.js'
+import route from '../../utils/route.js'
+
+export default {
+	data() {
+		return {
+			code: '',
+			systems: {},
+			params: '',
+			jsonContent: '',
+			swiperCurrent: 0,
+			hideShare: true,
+			codeUrl: '',
+			sessionKey: '',
+			openid: '',
+			userInfo: {},
+			isShow: false,
+			
+			//充值
+			TabList: [],
+			money: '',
+			id: '',
+			pay: '',
+			active: false,
+			isInt: false,
+			orderId: '',
+			
+			checkCoupon: '', //选中的优惠券
+			isOpenHuaweiMobile: '', //判断是否在华为上使用手机号授权
+			
+			isHuawei: false,
+			isShowMask: false,
+			isShowBMDialogView: false,
+			isShowBindMobileView: false,
+			phoneNumberValue: '',
+			isShowRemainderDialogView: false,
+			isShowCouponDialogView: false,
+			
+			isCoupon: false, //是否为优惠券
+			isRemainder: false, //是否为充值
+			//使用用券
+			isShowCard: false,
+			currentCard: {},
+		}
+	},
+	async onLoad(options) {
+		console.log(options)
+		this.code = options.code
+		this.getAbout();
+		await this.getParams();
+	},
+	async onShow() {
+		var userInfosStr = await req.getStorage('userInfo');
+		if (userInfosStr) {
+			this.userInfo = userInfosStr
+		}
+		if (this.orderId) {
+			let i = 0;
+			req.loadIng();
+			let timer = setInterval(() => {
+				route.balanceStare(
+					{
+						logsId: this.orderId
+					},
+					res => {
+						if (res.isSuccess || i === 4) {
+							req.hideLoading();
+							this.orderId = '';
+							this.pay = '';
+							clearInterval(timer);
+							if (res.isSuccess) {
+								this.showRemainderDialogView();
+							}
+						} else {
+							i++;
+						}
+					}
+				);
+			}, 300);
+		}
+	},
+	methods: {
+		goHome() {
+			this.hintDialogView();
+			uni.navigateBack()
+		},
+		getAbout() {
+			var _this = this;
+			req.getRequest('/api/other/config', {}, function (res) {
+				_this.isOpenHuaweiMobile = res.isOpenHuaweiMobile;
+			});
+		},
+		// 余额充值
+		async remainder() {
+			this.isCoupon = false; //是否为优惠券
+			this.isRemainder = true; //是否为充值
+			if (!await req.isLogins(true)) {
+				return;
+			}
+			let that = this;
+			let from = {};
+			if (this.pay && this.pay > 0) {
+				from.money = this.pay;
+			} else {
+				return req.msg('输入的充值金额需大于0');
+			}
+			route.remainder(from, data => {
+				that.orderId = data;
+				if (!data) {
+					return req.msg('充值下单失败');
+				} else {
+					route.balancePay(data, '4', that.pay, res => {
+						if (res) {
+						}
+					});
+				}
+			});
+		},
+		
+		switchTab(item, index) {
+			this.TabList.map(it => {
+				it.active = false;
+			});
+			this.TabList[index].active = true;
+			this.pay = item.rechargeAmount;
+		},
+		
+		// 输入金额根据输入金额获取赠送多少金额
+		amount(e) {
+			console.log('输入框中的金额>>>>', e.text);
+			let money = e.text;
+			this.pay = money;
+		},
+		
+		focus(e) {
+			this.isInt = true;
+			this.TabList.map(it => {
+				it.active = false;
+			});
+		},
+		
+		getCouponBtnText(item, name) {
+			return item.userCount >= item.userReceive && item.userCount != 0 && item.userReceive != -1 ? '已领取' : 'name';
+		},
+		
+		showBindMobileView() {
+			this.isShowMask = true;
+			this.isShowBindMobileView = true;
+		},
+		
+		hintBindMobileView() {
+			this.isShowMask = false;
+			this.isShowBindMobileView = false;
+		},
+		
+		showRemainderDialogView() {
+			this.isShowMask = true;
+			this.isShowRemainderDialogView = true;
+		},
+		
+		hintRemainderDialogView() {
+			this.isShowMask = false;
+			this.isShowRemainderDialogView = false;
+		},
+		
+		showCouponDialogView() {
+			this.isShowMask = true;
+			this.isShowCouponDialogView = true;
+		},
+		
+		hintCouponDialogView() {
+			this.isShowMask = false;
+			this.isShowCouponDialogView = false;
+		},
+		
+		showBMDialogView() {
+			this.isShowMask = true;
+			this.isShowBMDialogView = true;
+		},
+		
+		hintBMDialogView() {
+			this.isShowMask = false;
+			this.isShowBMDialogView = false;
+		},
+		
+		hintDialogView() {
+			this.hintRemainderDialogView();
+			this.hintBindMobileView();
+			this.hintCouponDialogView();
+			this.hintBMDialogView();
+		},
+		
+		createCode() {
+			if (this.currentCard) {
+				this.isShowCard = true;
+			} else {
+				this.jumpUrl('pages/mine/coupons');
+			}
+			this.hintDialogView();
+		},
+		hideCardPop() {
+			this.isShowCard = false;
+		},
+		
+		copyCode() {
+			uni.setClipboardData({
+				data: this.currentCard.id,
+				success: function(res) {
+					req.msg('复制成功');
+				}
+			});
+		},
+		
+		phoneNumberChange(ev) {
+			this.phoneNumberValue = ev.text;
+		},
+		
+		/**
+		 * 确定设置手机号
+		 */
+		confirmBundMoble() {
+			if (!this.phoneNumberValue) {
+				req.msg('请输入手机号');
+				return;
+			}
+			if (!util.isMobile(this.phoneNumberValue)) {
+				req.msg('请输入11位有效手机号');
+				return;
+			}
+			req.loadIng();
+			this.bundMoble(this.phoneNumberValue);
+			this.hintBindMobileView();
+		},
+		
+		/**
+		 * 领取优惠券
+		 * @param {Object} item
+		 */
+		async getCoupon(item) {
+			console.log('数据>>>>>>>>', item);
+			this.isCoupon = true; //是否为优惠券
+			this.isRemainder = false; //是否为充值
+			this.checkCoupon = item;
+			if (!await req.isLogins(true)) {
+				return;
+			}
+			let _ts = this;
+			if (!_ts.userInfo.mobile) {
+				req.getPhoneNumber(res => {
+					_ts.bundMoble(res);
+				});
+				return;
+			}
+			this.couponReceive();
+		},
+		
+		couponReceive() {
+			var that = this;
+			if (this.checkCoupon.userReceive > -1 && this.checkCoupon.userCount >= this.checkCoupon.userReceive) {
+				return req.msg('您已领取过了');
+			}
+			req.postRequest(
+				'/api/coupon/receive',
+				{
+					id: this.checkCoupon.id
+				},
+				res => {
+					this.currentCard = res;
+					console.log('领取完成>>>>', this.currentCard);
+					this.getParams();
+					this.showCouponDialogView();
+				},
+				true
+			);
+		},
+		
+		/**
+		 * 绑定手机号
+		 */
+		bundMoble(mobile) {
+			req.postRequest(
+				'/api/noCode/mobile',
+				{
+					mobile: mobile
+				},
+				res => {
+					this.isShowBindMobileView = false;
+					this.userInfo = res;
+					req.setStorage('userInfo', res);
+					req.hideLoading();
+					this.couponReceive();
+				},
+				true
+			);
+		},
+		
+		checks(item, index) {
+			item.isShow = !item.isShow;
+			this.$forceUpdate();
+		},
+		getParams() {
+			let that = this;
+			let params = {
+				code: this.code
+			};
+			return new Promise((resolve, reject) => {
+				req.getRequest(
+					'/api/material/library/detail',
+					params,
+					data => {
+						data.params.jsonContent.map(item => {
+							if (item.key == 'applicationForm') {
+								//表单
+								item.value.formItemList.map(it => {
+									if (it.label.indexOf('姓名') > -1) {
+										if (that.userInfo.nickName) {
+											it.fieldValue = that.userInfo.nickName;
+										}
+									}
+									if (it.label.indexOf('手机') > -1) {
+										if (that.userInfo.mobile) {
+											it.fieldValue = that.userInfo.mobile;
+										}
+									}
+									if (it.type == 4) {
+										//备注
+										it.fieldValue = '';
+									}
+									if (it.type == 5) {
+										it.option = ['大健康', '快销品'];
+									}
+								});
+							} else if (item.key == 'recharge') {
+								//充值
+								if (item.value.fastRechargeList && item.value.fastRechargeList.length > 0) {
+									that.TabList = item.value.fastRechargeList.map(it => {
+										var itm = {
+											rechargeAmount: it,
+											active: false
+										};
+										return itm;
+									});
+									if (that.TabList && that.TabList.length > 0) {
+										that.TabList[0].active = true;
+										that.pay = that.TabList[0].rechargeAmount;
+									}
+									console.log('TabList数据====', that.TabList);
+								}
+							}
+							return item;
+						});
+						that.params = data;
+						that.jsonContent = data.params.jsonContent;
+						uni.setNavigationBarTitle({
+							title:data.title
+						})
+						console.log('data.title==', data.title);
+						resolve();
+					},
+					true
+				);
+			});
+		},
+		swiperChange(e) {
+			this.swiperCurrent = e.index;
+		},
+		async jumpUrl(url) {
+			this.hintDialogView();
+			if (await req.isLogins(true)) {
+				uni.navigateTo({
+					url:url
+				})
+			}
+		},
+		
+		jumpUrlCS() {
+			// router.push({
+			// 	uri: '/pages/pagecontent',
+			// });
+		},
+		
+		customerServiceChat(item) {
+			wx.openCustomerServiceChat({
+				extInfo: {
+					url: item.target
+				},
+				corpId: item.id,
+				success(res) {
+					console.log('调用微信客服')
+				}
+			})
+		},
+		jumpHref(item) {
+			window.location.href = item.target;
+		},
+		
+		isInclude(label, keytxt) {
+			return label.indexOf(keytxt) != -1;
+		},
+		
+		changeOptions(e, idx) {
+			console.log('选择==', e);
+			console.log('idx==', idx);
+			this.jsonContent.map(item => {
+				if (item.key == 'applicationForm') {
+					item.value.formItemList.map((it, index) => {
+						if (it.type == 5 && idx == index) {
+							it.fieldValue = it.option[e.detail.value];
+						}
+					});
+				}
+				return item;
+			});
+			this.$forceUpdate();
+		},
+		
+		changeFieldValue(ev) {
+			ev._currentTarget._dataset.item.fieldValue = ev.text;
+		},
+		
+		checkRequire(formItemList) {
+			for (var i = 0; i < formItemList.length; i++) {
+				if (formItemList[i].required) {
+					//不等于备注,并且为空时返回
+					if (!this.isInclude(formItemList[i].label, '备注') && !formItemList[i].fieldValue) {
+						req.msg('请填写' + formItemList[i].label);
+						return false;
+					}
+					if (formItemList[i].type == 1 && this.isInclude(formItemList[i].label, '手机')) {
+						if (!util.isMobile(formItemList[i].fieldValue)) {
+							req.msg('请输入11位有效手机号');
+							return false;
+						}
+					}
+				}
+			}
+			return true;
+		},
+		
+		/**
+		 * 提交报名表单
+		 * @param {Object} datas
+		 */
+		formSubmit(datas) {
+			// if (!req.isLogins(true)) {
+			// 	return;
+			// }
+			let params = {
+				formId: datas.database
+			};
+			if (this.userInfo.id) {
+				params.belongUid = this.userInfo.id;
+			}
+			let formItemList = datas.formItemList;
+			let valueList = [];
+			if (!this.checkRequire(formItemList)) return false;
+			formItemList.map(it => {
+				let obj = {
+					fieldId: it.databaseLabel,
+					fieldName: it.label,
+					fieldType: it.type,
+					fieldValue: it.fieldValue
+				};
+				valueList.push(obj);
+			});
+			params.valueList = valueList;
+			console.log('表单提交==', params);
+			req.postRequest(
+				'/api/v3/custom/form/submit',
+				params,
+				data => {
+					this.showBMDialogView();
+				},
+				true
+			);
+		},
+		callPhone(phone) {
+			uni.makePhoneCall({
+				phoneNumber: phone
+			});
+		},
+		// 时间格式化
+		getDateFormat(date) {
+			return util.formatTime(new Date(date)).t3;
+		},
+	},
+	mounted() {
+		const systemInfo = uni.getSystemInfoSync();
+		// px转换到rpx的比例
+		let pxToRpxScale = 750 / systemInfo.windowWidth;
+		let systems = {
+			ktxStatusHeight: systemInfo.statusBarHeight * pxToRpxScale, // 状态栏的高度
+			navigationHeight: 44 * pxToRpxScale // 导航栏的高度
+		};
+		systems.barHeight = systems.ktxStatusHeight + systems.navigationHeight;
+		this.systems = systems;
+	}
+
+	
+};
+</script>
+
+<style>
+@import './index.css';
+</style>

BIN
library/static/images/money.png


+ 2 - 2
mine/comments/comments.vue

@@ -241,7 +241,7 @@
 			var promise = Promise.all(allList.map(tempFilePath => {
 				return new Promise(function(resolve, reject) {
 					req.loadIng("上传中");
-					req.uploadFile('/api/upload', tempFilePath.filePath, res => {
+					req.uploadFile('/api/nocheck/upload', tempFilePath.filePath, res => {
 						// console.log(res)
 						let avatar = that.products[index].buyShow;
 						let d = {};
@@ -280,7 +280,7 @@
 						var promise = Promise.all(tempFilePaths.map(tempFilePath => {
 							return new Promise(function(resolve, reject) {
 								req.loadIng("上传中");
-								req.uploadFile('/api/upload', tempFilePath, res => {
+								req.uploadFile('/api/nocheck/upload', tempFilePath, res => {
 									// console.log(res)
 									let avatar = that.products[index].buyShow;
 									let d = {};

+ 1 - 1
mine/refund/applyRefund/applyRefund.vue

@@ -704,7 +704,7 @@ export default {
 						tempFilePaths.map((tempFilePath, index) => {
 							return new Promise(function(resolve, reject) {
 								req.loadIng('上传中');
-								req.uploadFile('/api/upload', tempFilePath, res => {
+								req.uploadFile('/api/nocheck/upload', tempFilePath, res => {
 									// console.log(res);
 									that.setData({
 										credentialsUrl: that.credentialsUrl.concat(res.src)

+ 1 - 1
mine/update/index.vue

@@ -54,7 +54,7 @@
 			},
 
 			uploadAvatar(e) {
-				req.uploadFile('/api/upload', e.detail.avatarUrl, res => {
+				req.uploadFile('/api/nocheck/upload', e.detail.avatarUrl, res => {
 					this.avatar = res.src
 				});
 			},

+ 1 - 1
mine/userinfo/userinfo.vue

@@ -179,7 +179,7 @@
 			},
 
 			uploadAvatar(e) {
-				req.uploadFile('/api/upload', e.detail.avatarUrl, res => {
+				req.uploadFile('/api/nocheck/upload', e.detail.avatarUrl, res => {
 					this.avatar = res.src
 				});
 				// let that = this;

+ 1 - 1
office/createTeam/index.vue

@@ -103,7 +103,7 @@ export default {
 					var promise = Promise.all(
 						tempFilePaths.map(tempFilePath => {
 							return new Promise(function(resolve, reject) {
-								req.uploadFile('/api/upload', tempFilePath, res => {
+								req.uploadFile('/api/nocheck/upload', tempFilePath, res => {
 									let picUrls = that.zhiPicUrls;
 									that.zhiPicUrls = picUrls.concat(res.src);
 									uni.hideLoading()

+ 1 - 1
office/diary/diary.vue

@@ -50,7 +50,7 @@ export default {
 					var promise = Promise.all(
 						tempFilePaths.map(tempFilePath => {
 							return new Promise(function(resolve, reject) {
-								req.uploadFile('/api/upload', tempFilePath, res => {
+								req.uploadFile('/api/nocheck/upload', tempFilePath, res => {
 									that.posterUrl = res.src;
 								});
 							});

+ 1 - 1
office/news/news.vue

@@ -189,7 +189,7 @@ export default {
 					var promise = Promise.all(
 						tempFilePaths.map(tempFilePath => {
 							return new Promise(function(resolve, reject) {
-								req.uploadFile('/api/upload', tempFilePath, res => {
+								req.uploadFile('/api/nocheck/upload', tempFilePath, res => {
 									let picUrls = that.zhiPicUrls;
 									that.zhiPicUrls = picUrls.concat(res.src);
 									uni.hideLoading()

+ 10 - 0
pages.json

@@ -1309,6 +1309,16 @@
 					"style": {
 						"navigationBarTitleText": "产品链接"
 					}
+				},{
+					"path": "page/page",
+					"style": {
+						"navigationBarTitleText": "营销单页"
+					}
+				},{
+					"path": "pageDetail/index",
+					"style": {
+						"navigationBarTitleText": ""
+					}
 				}
 			]
 		}

+ 1 - 0
pages/index/index.css

@@ -510,6 +510,7 @@ page{background: #fff;}
 	color: #000;
 	margin-top: 10rpx;
 	white-space: pre-wrap;
+	    height: 74rpx;
 }
 .ac-date{
 	line-height: 25rpx;

+ 1 - 1
pages/user/user.vue

@@ -92,7 +92,7 @@
 						<view>海报推广</view>
 					</view>
 					<vieW class="order-line"></vieW>
-					<view class="order-item ddflex fflex" @click="jumpUrl('match/activity/activity?current=3')">
+					<view class="order-item ddflex fflex" @click="jumpUrl('library/page/page')">
 						<image src="/static/images/yxdy.png"></image>
 						<view>营销单页</view>
 					</view>

+ 1 - 1
prescription/Consultation/index.vue

@@ -481,7 +481,7 @@
 						var promise = Promise.all(tempFilePaths.map((tempFilePath, index) => {
 							return new Promise(function(resolve, reject) {
 								req.loadIng("上传中");
-								req.uploadFile('/api/upload', tempFilePath, res => {
+								req.uploadFile('/api/nocheck/upload', tempFilePath, res => {
 									// console.log(res);
 									that.setData({
 										avatar: that.avatar.concat(res.src)

+ 1 - 1
prescription/prescriptionInformation/index.vue

@@ -82,7 +82,7 @@ export default {
           var promise = Promise.all(tempFilePaths.map((tempFilePath, index) => {
             return new Promise(function (resolve, reject) {
               req.loadIng("上传中");
-              req.uploadFile('/api/upload', tempFilePath, res => {
+              req.uploadFile('/api/nocheck/upload', tempFilePath, res => {
                 // console.log(res);
                 that.setData({
                   avatar: that.avatar.concat(res.src)

+ 1 - 1
product/info/info.vue

@@ -171,7 +171,7 @@
 
 					success(res) {
 						// console.log(res.tempFilePaths);
-						req.uploadFile('/api/upload', res.tempFilePaths[0], res => {
+						req.uploadFile('/api/nocheck/upload', res.tempFilePaths[0], res => {
 							req.msg('图片上传成功');
 							that.setData({
 								avatar: res.src

+ 1 - 1
promote/withdrawal/bindCard/bindCard.vue

@@ -217,7 +217,7 @@ export default {
 					uni.showLoading({
 						title: '上传中'
 					});
-					req.uploadFile('/api/upload', res.tempFilePaths[0], res => {
+					req.uploadFile('/api/nocheck/upload', res.tempFilePaths[0], res => {
 						uni.hideLoading();
 						if (type == 1) {
 							//正面

+ 2 - 2
utils/request.js

@@ -1077,7 +1077,7 @@ function unitConverter (num) {
 const saveBehavior = (params, success) => {
 	//用户行为:behavior 1、关注 2、收藏 3、点赞 4、浏览 5、确认 6、海报
 	//用户行为操作对象:type 1、产品 2、赛事 3、未知 4、内容 5、课程 6、老师 7、素材 8、题目 9、资料领取 10、招聘职位 11、用户 12、用户须知 13、素材 15、科室 16、海报 20、医生 21日历、探索 47评价
-	postRequest('/api/v3/save', params, data => {
+	postRequest('/api/v3/behavior/save', params, data => {
 		success.call(this, data)
 	})
 }
@@ -1085,7 +1085,7 @@ const getBehavior = (params, success) => {
 	//用户行为:behavior 1、关注 2、收藏 3、点赞 4、浏览 5、确认 6、海报
 	//用户行为操作对象:type 1、产品 2、赛事 3、未知 4、内容 5、课程 6、老师 7、素材 8、题目 9、资料领取 10、招聘职位 11、用户 12、用户须知 13、素材 15、科室 16、海报 20、医生 21日历、探索 47评价
 	console.log('行为')
-	getRequest('/api/v3/get', params, data => {
+	getRequest('/api/v3/behavior/get', params, data => {
 		success.call(this, data)
 	})
 }