lion 2 years ago
parent 4553d52cc9
commit 6e873c93e6

@ -61,6 +61,9 @@
"desc" : "提供您最近的活动地址"
}
},
"optimization" : {
"subPackages" : true
},
"requiredPrivateInfos" : [ "getLocation" ]
},
"mp-alipay" : {

@ -0,0 +1,210 @@
<template>
<view class="container">
<view class="nav">
<view v-for="(item,index) in list" @click="towhere(index)">
<view class="imgs">
<img :src="item.icon" alt="" v-if="!item.show" :style="{'width':item.width,'height':item.height}">
<img :src="item.icon1" alt="" v-else :style="{'width':item.width,'height':item.height}">
</view>
<view :class="item.show?'textscur':'texts'">{{item.text}}</view>
</view>
</view>
<view class="bg">
<img :src="bg" alt="" class="bgs">
<view v-for="(item,index) in curlist">
<block v-for="(m,i) in item">
<uni-transition duration="1500" ref="ani" custom-class="transition"
:show="index === currentIndex">
<img :src="dl_cur" alt="" :style="{'top':m.top,'left':m.left,'right':m.right}" class="curs">
</uni-transition>
<!-- <u-transition :show="true" mode="fade" duration='1000'>
<img :src="dl_cur" alt="" :style="{'top':m.top,'left':m.left,'right':m.right}" class="curs">
</u-transition> -->
</block>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
bg: require("./static/dl/dlbg.png"),
dl_cur: require("./static/dl/dl_cur.png"),
currentIndex: '',
isshow:true,
curlist: [
[{
'top': '268rpx',
'left': '13rpx',
'right': ''
}, {
'top': '268rpx',
'right': '10rpx',
'left': ''
}, {
'top': '320rpx',
'right': '10rpx',
'left': ''
}],
[{
'top': '290rpx',
'right': '50rpx',
'left': ''
}],
[{
'top': '424rpx',
'left': '',
'right': '265rpx',
}],
[{
'top': '424rpx',
'left': '266rpx',
'right': '',
}],
],
list: [{
text: '卫生间',
icon: require("./static/dl/dl1.png"),
icon1: require("./static/dl/dl1_cur.png"),
show: false,
width: '42rpx',
height: '46rpx'
},
// {
// text: '',
// icon: require("./static/dl/dl2.png"),
// icon1: require("./static/dl/dl2_cur.png"),
// show: false,
// width: '44rpx',
// height: '44rpx'
// },
{
text: '电梯',
icon: require("./static/dl/dl3.png"),
icon1: require("./static/dl/dl3_cur.png"),
show: false,
width: '38rpx',
height: '64rpx'
},
// {
// text: '',
// icon: require("./static/dl/dl4.png"),
// icon1: require("./static/dl/dl4_cur.png"),
// show: false,
// width: '38rpx',
// height: '46rpx'
// },
{
text: '服务台',
icon: require("./static/dl/dl5.png"),
icon1: require("./static/dl/dl5_cur.png"),
show: false,
width: '44rpx',
height: '38rpx'
}, {
text: '休息区',
icon: require("./static/dl/dl6.png"),
icon1: require("./static/dl/dl6_cur.png"),
show: false,
width: '54rpx',
height: '38rpx'
},
// {
// text: '',
// icon: require("./static/dl/dl7.png"),
// icon1: require("./static/dl/dl7_cur.png"),
// show: false,
// width: '38rpx',
// height: '38rpx'
// },
]
}
},
methods: {
towhere(index) {
this.list.map((item, i) => {
item.show = false
if (index == i) {
item.show = !item.show
this.currentIndex = item.show ? index : ''
// this.ishow = true
}
})
}
}
}
</script>
<style scoped>
.container {
background-color: #f5ede6;
min-height: 100vh;
padding-top: 30rpx;
}
.nav {
background-color: #fff;
display: flex;
justify-content: space-around;
/* border:1px solid #ddd; */
box-shadow: 0px 0px 10rpx 0px rgba(0, 0, 0, 0.5);
margin: 0 20rpx;
padding: 30rpx 15rpx;
margin-bottom: 80rpx;
border-radius: 10rpx;
}
.nav>view {
text-align: center;
}
.nav>view .imgs {
height: 64rpx;
}
.nav>view img {
vertical-align: middle;
display: inline-block;
}
.nav>view .texts {
color: #333;
font-size: 24rpx;
}
.nav>view .textscur {
color: #cf995a;
font-size: 24rpx;
}
.bg {
width: 100%;
height: 711rpx;
position: relative;
}
.bg img.bgs {
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
}
.bg img.curs {
width: 80rpx;
height: 80rpx;
position: absolute;
z-index: 999;
/* top:0;
left:0;
right:0 */
}
</style>

Binary file not shown.

After

Width:  |  Height:  |  Size: 481 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 482 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 359 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 360 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 690 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 700 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 535 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 527 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 367 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 367 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 515 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 517 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 373 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 385 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

@ -62,7 +62,7 @@
"enablePullDownRefresh": false
}
}, {
},{
"path": "pages/guide/index",
"style": {
"navigationBarTitleText": "服务",
@ -79,13 +79,6 @@
"enablePullDownRefresh": false
}
}, {
"path": "pages/map/map",
"style": {
"navigationBarTitleText": "展馆导航",
"enablePullDownRefresh": false
}
}, {
"path": "pages/visit/index",
"style": {
@ -234,20 +227,32 @@
}
}, {
"path": "pages/vr/vrpagegm",
"path": "pages/guide/feedbackinfo",
"style": {
"navigationBarTitleText": "",
"navigationBarTitleText": "意见建议详情",
"enablePullDownRefresh": false
}
}
],
"subPackages":[{
"root": "packages",
"pages":[{
"path": "dl/index",
"style": {
"navigationBarTitleText": "展厅导览",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#fff"
}
}, {
"path": "pages/guide/feedbackinfo",
"path": "map/map",
"style": {
"navigationBarTitleText": "意见建议详情",
"navigationBarTitleText": "展馆导航",
"enablePullDownRefresh": false
}
}
}]
}
],
"globalStyle": {
"navigationBarTextStyle": "black",

@ -18,11 +18,6 @@
<text>活动时间{{timeFormat(numberlist.start_time,"yyyy年MM月DD日")}}{{getHm(numberlist.start_time)}}-{{getHm(numberlist.end_time)}}</text>
</view>
<!-- <view class="activityBox-row">
<text class="icon-huodongfangshi iconfont"></text>
<text>活动方式{{list.area_name}}</text>
</view> -->
<view class="activityBox-row">
<text class="icon-huodong iconfont"></text>
<text>活动地址{{list.address}}</text>
@ -30,7 +25,8 @@
<view class="activityBox-row">
<text class="icon-renshu iconfont"></text>
<text>人数限制{{numberlist.total==0?'不限':numberlist.total}}</text>
<text>人数限制{{(list.form==2?10 : (numberlist.total==0?'不限':numberlist.total))}}</text>
</view>
<view class="activityBox-row flex-row align-center" @click="tothere">
<text class="icon-ditu-dibiao iconfont"></text>
@ -61,7 +57,7 @@
<text class="box-tips-txt"
v-if="type=='user'">每单限购{{list.person_max_count}}同一身份证当天限购1张</text>
<text class="box-tips-txt"
v-if="type=='team'">{{list.team_min_count}}人以上可团体预约<!-- 一个团体最多{{list.team_max_count}} --></text>
v-if="type=='team'">{{list.form==2?10:list.team_min_count}}人以上可团体预约<!-- 一个团体最多{{list.team_max_count}} --></text>
</view>
<view>
<view class="box-card-content">
@ -151,11 +147,6 @@
<u-input placeholder="请输入单位名称" v-model="form.unit"></u-input>
</u-form-item>
<u-form-item label="证件类型" labelWidth="80" prop="card_type1" required>
<!-- <u-radio-group v-model="form.card_type">
<u-radio width="50%" activeColor="#cf995a" v-for="(item, index) in cardType"
:key="index" :name=item.id :label="item.name">
</u-radio>
</u-radio-group> -->
<u-cell-group :border="false">
<u-cell @click="showCards" :title="card_type_names" :isLink="true"
arrow-direction="down"></u-cell>
@ -187,17 +178,12 @@
</u-form-item>
<u-form-item label="证件类型" labelWidth="80" prop="formUser.card_type" ref="formUser.card_type"
required>
<!-- <u-radio-group v-model="formUser.card_type">
<u-radio width="50%" activeColor="#cf995a" v-for="(item, index) in cardType"
:key="index" :name=item.id :label="item.name">
</u-radio>
</u-radio-group> -->
<u-cell-group :border="false">
<u-cell @click="showCard" :title="card_type_name" :isLink="true" arrow-direction="down">
</u-cell>
</u-cell-group>
</u-form-item>
<u-form-item label="证件号码" labelWidth="80" prop="formUser.idcard" ref="formUser.idcard" required>
<u-form-item label="证件号码" labelWidth="80" prop="formUser.idcard" ref="formUser.idcard">
<u-input v-model="formUser.idcard" placeholder="请输入证件号码"></u-input>
</u-form-item>
<u-form-item label="手机号" labelWidth="80" prop="formUser.mobile" ref="formUser.mobile">
@ -212,23 +198,7 @@
<u-picker :show="cardshow" @cancel="cancel" @confirm="confirmCard" ref="uPicker" :columns="cardLists"
keyName="label"></u-picker>
<u-picker :show="cardshows" @cancel="cancels" @confirm="confirmCards" ref="uPickers" :columns="cardLists"
keyName="label"></u-picker>
<!-- <u-popup :show="showInfo" mode="bottom" @close="closeInfo" :round="10" closeable>
<view class="mpopup">
<view class="mpopup-title">
{{currentNotice.title}}
</view>
<view class="mpopup-content" style="margin-top: 60rpx;">
<rich-text :nodes="currentNotice.content"></rich-text>
v-if="currentNotice.isTemplate"
<view @click="downLoad" style="color:#cf995a ;" >下载模版</view>
<view style="margin-top: 80px;"></view>
<u-button type="primary" @click="closeInfo"></u-button>
</view>
</view>
</u-popup> -->
keyName="label"></u-picker>
<u-popup :show="showInfo" mode="bottom" @close="closeInfo" :round="10" closeable>
<view class="mpopup" :style="[{height:maxheight}]">
@ -239,7 +209,6 @@
<view class="mpopup-content" style="margin-top: 60rpx;">
<scroll-view scroll-y="true" :style="[{height:scrollheight}]">
<!-- <rich-text :nodes="currentNotice.content"></rich-text> -->
<view class="htmls" style="line-height: 50rpx;text-indent: 2em;" v-html="currentNotice.content">
</view>
<view @click="downLoad" style="color:#cf995a ;">下载模版</view>
@ -267,7 +236,6 @@
mode="center" width="600rpx" height="150rpx">
<view class="">
<view class="successBox">
<!-- <u-icon name="checkmark-circle" size="90" color="#cf995a"></u-icon> -->
<view class="h3">您已经预约成功</view>
<view class="p">报名成功</view>
<view class="p">即将跳转到活动预约 {{time}} s</view>
@ -323,17 +291,11 @@
message: '请输入证件号',
trigger: 'blur'
}],
card_type: [{
required: true,
message: '请选择证件类型',
trigger: 'change'
}]
},
cardshow: false,
cardshows: false,
card_type_name: "身份证",
card_type_names: "身份证",
// cardLists:['','','','',''],
cardLists: [
[{
value: 1,
@ -581,22 +543,7 @@
})
return false;
}
if (that.formUser.card_type == 1) {
if (this.util.isNull(this.formUser.idcard)) {
uni.showToast({
icon: "none",
title: "请填写身份证号"
})
return false;
}
if (!that.util.isValidCardID(that.formUser.idcard)) {
uni.showToast({
icon: "none",
title: "请正确输入身份证号"
})
return false;
}
}
if (that.isEdit) {
that.form.details_list[that.isEditIndex] = that.formUser;
that.isEdit = false

@ -6,13 +6,6 @@
<view :class="!item.isCanBook?'gray100':''"></view>
<view class="activityBox-top">
<image :src='item.cover_upload.url' style="width: 100%;height: 333rpx;"></image>
<!-- <view class="book-status">
{{item.rate_name}}
</view> -->
<!-- <view class="book-num" v-if="item.orders_count>0">
<text class="book-num-y"> {{isUnde(item.orders_count)}} </text>
<text>人已报名</text>
</view> -->
</view>
<view class="activityBox-content flex-col">
<view class="activityBox-row">
@ -60,20 +53,12 @@
更多>>
</view>
</view>
<!-- <view class="activityBox-row">
<text class="icon-huodongfangshi iconfont"></text>
<text>活动方式{{isUnde(item.area_name)}}</text>
</view> -->
<view class="activityBox-row">
<text class="icon-huodong iconfont"></text>
<text>活动地址{{isUnde(item.address)}}</text>
</view>
<!-- <view class="activityBox-row">
<text class="icon-renshu iconfont"></text>
<text>人数限制{{isUnde(item.total)==0?'不限':isUnde(item.total)}}</text>
</view> -->
<view class="activityBox-row flex-row align-center" style="margin-bottom: 0rpx;"
@click.stop="tothere(item)">
<text class="icon-ditu-dibiao iconfont"></text>

@ -3,7 +3,6 @@
<view class="">
<view class="activityBox">
<view class="activityBox-top">
<!-- <image src="../../static/img/img_activity.jpg" style="width: 100%;height: 333rpx;"></image> -->
<swiper autoplay="true" :interval="4000" :duration="1000" :indicator-dots="true"
indicator-active-color="rgba(255, 255, 255, 0.7)" indicator-color="rgba(239, 149, 37, 1)"
:current="topSwiperIndex" @change="topSwiperTab">
@ -17,24 +16,11 @@
<view class="activityBox-content flex-col">
<view class="activityBox-row flex-row justify-between">
<text class="activityBox-title">{{isUnde(list.name)}}</text>
<!-- <view class="tag tag_green activityBox_btn">
<text>{{isUnde(list.type_name)}}</text>
</view> -->
</view>
<!-- <view class="activityBox-row">
<text class="icon-huodongfangshi iconfont"></text>
<text>活动方式{{isUnde(list.area_name)}}</text>
</view> -->
<view class="activityBox-row">
<text class="icon-huodong iconfont"></text>
<text>活动地址{{isUnde(list.address)}}</text>
</view>
<!-- <view class="activityBox-row">
<text class="icon-renshu iconfont"></text>
<text>人数限制{{isUnde(list.total)==0?'不限':isUnde(list.total)}}</text>
</view> -->
<view class="activityBox-row flex-row align-center" @click="tothere">
<text class="icon-ditu-dibiao iconfont"></text>
<text>距离{{isUnde(list.distance)}}km</text>
@ -42,11 +28,6 @@
<text class="icon-daohang1 iconfont" style="margin-right: 0;"></text>
</view>
</view>
<!-- <view class="colortext activityBox-row" v-if="list.status==1">
{{list.rate_name}} (已报名{{list.orders_total}})
</view> -->
</view>
</view>
<view class="infoBox" style="padding-bottom:0;margin-bottom: 26rpx;">
@ -67,14 +48,17 @@
活动时间{{item.time}}
</text>
</view>
<view style="padding-left:50rpx;margin-bottom:10rpx">
<text style="margin-right:20rpx">
限制人数{{item.total==0?'不限':item.total}}
</text>
<text>
已报人数{{item.has_total}}
</text>
<view style="padding-left:50rpx;margin-bottom:10rpx">
<text v-if="list.form!=2">
限制人数{{item.total==0?'不限':item.total}}
</text>
<text v-else>
{{item.has_total>0?"预约已满":""}}
</text>
<text style="margin-left:20rpx">
已报名数{{item.has_total}}
</text>
</view>
<view class="book-box-row-timeitem-status" v-if="item.checked">
<u-icon name="checkmark" color="#fff" size="20rpx"></u-icon>
@ -89,11 +73,9 @@
</view>
<view class="infoBox-content">
<u-parse v-if='showContent' :content="list.content?list.content:' '"/>
<!-- <rich-text style="text-indent: 2em;font-size: 28rpx;" :nodes="list.content"></rich-text> -->
</view>
</view>
</view>
<!-- <view class="infofooter" v-if="list.isCanBook&&list.total!=list.orders_total"> -->
<view class="infofooter" v-if="list.orders_total==0||(list.orders_total>0&&list.total!=list.orders_total)&&isCanBook">
<u-popup :show="showNumbers" mode="bottom" @close="closeNum" :round="10" closeable>
<view class="mpopup">
@ -111,7 +93,7 @@
</view>
</view>
</u-popup>
<view class="flex-row" v-if="list.status==1&&isCanBook">
<view class="flex-row" v-if="list.status==1">
<view style="margin-right: 14rpx;flex: 1;" v-if="list.join_type==1||list.join_type==0">
<u-button type="primary" @click="tobook('team')"></u-button>
</view>
@ -192,14 +174,7 @@
this.util.alert("您选择的场次不可预约!");
// this.isCanBook = false
return;
};
// var nt = new Date();
// this.isCanBook = this.$moment(nt).isBefore(item.end_plan);
// console.log("this.isCanBook",this.isCanBook)
// if(!this.isCanBook){
// this.util.alert("");
// return;
// }
};
var _numbers = this.numbers;
for (var mod of _numbers) {
mod.checked = false;
@ -257,6 +232,9 @@
if (m.has_total == m.total && m.total != 0) {
m.disabled = true
}
if(res.form==2&&parseInt(m.has_total)>0){
m.disabled = true
}
numberArr.push(m);
if (!m.disabled) {
@ -266,7 +244,6 @@
i++;
}
}
//console.log("numberArr[0].id", numberArr[0].id);
if (chkMod){
that.activity_number_id = chkMod.id
that.isCanBook = true

@ -41,7 +41,24 @@
</view>
</view>
</view>
<view class="box-bottom">
<!-- 展厅导览 -->
<view class="box-bottom" style="padding-bottom:0" @click='toDl'>
<view class="exhibit">
<view>
<view>
<span></span>
<span>展厅导览</span>
</view>
<u-icon name="arrow-right"></u-icon>
</view>
</view>
<view class="exhibit_list">
<img :src="dlimg" alt="" style="height:300rpx">
<span>2F 平面图</span>
</view>
</view>
<view class="box-bottom" style="padding-top:0">
<!-- 当前展览 -->
<view class="exhibit">
<view @click='toExhibitList'>
@ -56,21 +73,6 @@
<span>{{exhibitObj.name}}</span>
</view>
</view>
<!-- 展厅导览 -->
<!-- <view class="exhibit">
<view>
<view>
<span></span>
<span>展厅导览</span>
</view>
<u-icon name="arrow-right"></u-icon>
</view>
<view class="exhibit_list">
<img src="../../static/img/exhibit.png" alt="">
<span>追寻伟人足迹传承闻天家风张闻天家风展</span>
</view>
</view> -->
</view>
<!-- 参观预约 -->
<u-popup :show="showBook" mode="bottom" @close="closeBook" :round="10" closeable>
@ -192,7 +194,6 @@
<view v-html="currentNotice.content" style="font-size:28rpx;line-height: 2.3;text-indent: 2em;">
</view>
<!-- <rich-text :nodes="currentNotice.content"></rich-text> -->
</view>
</view>
</u-popup>
@ -235,7 +236,8 @@
currentIndex: 0,
listCalendar: [],
showAuthorization: false,
openType: 1
openType: 1,
dlimg:require("../../static/img/daolan.png")
}
},
onShareAppMessage() {
@ -262,6 +264,11 @@
uni.navigateTo({
url: "/pages/exhibit/list"
});
},
toDl(){
uni.navigateTo({
url: "/packages/dl/index"
});
},
togame() {
uni.navigateToMiniProgram({
@ -424,7 +431,7 @@
},
openMap() {
uni.navigateTo({
url: "/pages/map/map"
url: "/packages/map/map"
})
},
openPark() {
@ -562,16 +569,6 @@
isOpenDate = true;
} else {
isOpenDate = false;
/* uni.showToast({
icon: "none",
title: selectDate + "不可以预约",
complete() {
setTimeout(function() {
that.load3Day(that.$moment(selectDate).add('days', 1)
.format("yyyy-MM-DD"))
}, 2000)
}
}, 2000) */
}
}
i++;
@ -626,15 +623,13 @@
.wrap{
background-color: #cf995a;
}
.navBarBox {
/* background-color: #cf995a; */
.navBarBox {
position: fixed;
top:0;
left:0;
width:100%;
z-index:999;
background: linear-gradient(to bottom,#f6d593,#cf995a);
/* height:190rpx; */
background: linear-gradient(to bottom,#f6d593,#cf995a);
}
.navBarBox .statusBar {}

@ -89,7 +89,6 @@
:sourceType="['album','camera']" :compress="false" :quality="80" :formData="otherData"
:remove="true" :dataType="1" @uploadSuccess="uploadSuccess" @imgDelete="imgDelete"
@uploadFail="uploadFail" :action="action"></htz-image-upload>
<!-- <u-textarea v-model="form.avatar" placeholder="请输入内容"></u-textarea> -->
</u-form-item>
</u-form>
<u-button type="primary" @click="tosubmit"></u-button>

@ -175,15 +175,7 @@
</view>
</view>
</view>
<!-- <view class="box-card">
<u-form-item label="特殊情况" labelWidth="80" prop="leader" ref="leader">
<u-checkbox-group @change="radioChange">
<u-checkbox activeColor="#cf995a" label="乘坐轮椅等行动不便者" v-model="specialtype" name='1' shape="circle"></u-checkbox>
</u-checkbox-group>
</u-form-item>
</view> -->
<view class="box-card" v-if="type=='team'">
<view class="box-card-title">
{{type=="team"?"领队人信息":"联系人信息"}}
@ -198,11 +190,7 @@
<u-input placeholder="请输入单位名称" v-model="form.unit"></u-input>
</u-form-item>
<u-form-item label="证件类型" labelWidth="80" prop="card_type1" required>
<!-- <u-radio-group v-model="form.card_type">
<u-radio width="50%" activeColor="#cf995a" v-for="(item, index) in cardList"
:key="index" :name=item.idx :label="item.name">
</u-radio>
</u-radio-group> -->
<u-cell-group :border="false">
<u-cell @click="showCards" :title="card_type_names" :isLink="true"
arrow-direction="down"></u-cell>
@ -241,16 +229,11 @@
<u-input placeholder="请输入姓名" v-model="formUser.name"></u-input>
</u-form-item>
<u-form-item label="证件类型" labelWidth="80" prop="card_type1" ref="card_type" required>
<!-- <u-radio-group v-model="formUser.card_type">
<u-radio width="50%" activeColor="#cf995a" v-for="(item, index) in cardList"
:key="index" :name=item.idx :label="item.name">
</u-radio>
</u-radio-group> -->
<u-cell-group :border="false">
<u-cell @click="showCard" :title="card_type_name" :isLink="true" arrow-direction="down">
</u-cell>
</u-cell-group>
<!-- <u-input placeholder="身份证" disabled @click="showCard" v-model="formUser.card_type"></u-input> -->
</u-form-item>
<u-form-item label="证件号码" labelWidth="80" prop="idcard" ref="idcard" required>
<u-input placeholder="请输入证件号码" v-model="formUser.idcard"></u-input>
@ -260,7 +243,6 @@
<u-radio width="100%" activeColor="#cf995a" v-for="(item, index) in disabilitys"
:key="index" :name=item.idx :label="item.name">
</u-radio>
<!-- <u-checkbox activeColor="#cf995a" label="乘坐轮椅等行动不便者" v-model="specialtype" name='1' shape="circle"></u-checkbox> -->
</u-radio-group>
</u-form-item>
@ -290,7 +272,6 @@
<view class="mpopup-content" style="margin-top: 60rpx;">
<scroll-view scroll-y="true" :style="[{height:scrollheight}]">
<!-- <rich-text :nodes="currentNotice.content"></rich-text> -->
<view class="htmls" style="line-height: 50rpx;text-indent: 2em;" v-html="currentNotice.content">
</view>
<view @click="downLoad" style="color:#cf995a ;" v-if="currentNotice.isTemplate"></view>
@ -307,7 +288,6 @@
mode="center" width="600rpx" height="150rpx">
<view class="">
<view class="successBox">
<!-- <u-icon name="checkmark-circle" size="90" color="#cf995a"></u-icon> -->
<view class="h3">您已经预约成功</view>
<view class="p">即将跳转到参观预约 {{time}} s</view>
</view>
@ -580,9 +560,7 @@
} else {
this.specialid = 0
}
// if(this.$refs.radio.currentValue){
// this.specialtype = val;
// }
},
loadCommonUser() {
var that = this;
@ -612,7 +590,6 @@
}
}
// this.form.total = this.form.details_list.length;
},
downLoad() {
const downloadTask = uni.downloadFile({
@ -688,10 +665,7 @@
submitOrder() {
this.form.date = this.currentDate.date;
this.form.rule_id = this.currentTime.id;
// if(this.specialid){
// //
// this.form.is_disability = this.specialid;
// }
if(this.type!='team'){
if (this.form.details_list.length != this.form.total) {
uni.showToast({
@ -775,16 +749,6 @@
clearTimeout(that.timer)
}, 3000)
// uni.showToast({
// icon: "none",
// title: "",
// complete() {
// uni.redirectTo({
// url: "/pages/success/success?from=visit&id=" + res.id
// })
// }
// })
},
utilFail: function(res) {
that.util.toast(res);
@ -871,19 +835,7 @@
return false;
}
}
// if (this.util.isNull(this.formUser.mobile)) {
// uni.showToast({
// icon: "none",
// title: ""
// })
// return false;
// } else if (!this.util.phoneRegex.test(this.formUser.mobile)) {
// uni.showToast({
// icon: "none",
// title: ""
// })
// return false;
// }
if (!this.util.isNull(this.formUser.mobile)) {
if (!this.util.phoneRegex.test(this.formUser.mobile)) {
uni.showToast({
@ -1059,16 +1011,6 @@
isOpenDate = true;
} else {
isOpenDate = false;
/* uni.showToast({
icon: "none",
title: selectDate + "不可以预约",
complete() {
setTimeout(function() {
that.load3Day(that.$moment(selectDate).add('days', 1)
.format("yyyy-MM-DD"))
}, 2000)
}
}, 2000) */
}
}
i++;

@ -1,9 +0,0 @@
<template>
<web-view src="https://suzhoushijian.szgmbwg.org.cn?v=1.0"></web-view>
</template>
<script>
</script>
<style>
</style>

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

@ -0,0 +1,22 @@
## 1.3.22023-05-04
- 修复 NVUE 平台报错的问题
## 1.3.12021-11-23
- 修复 init 方法初始化问题
## 1.3.02021-11-19
- 优化 组件UI并提供设计资源详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-transition](https://uniapp.dcloud.io/component/uniui/uni-transition)
## 1.2.12021-09-27
- 修复 init 方法不生效的 Bug
## 1.2.02021-07-30
- 组件兼容 vue3如何创建 vue3 项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
## 1.1.12021-05-12
- 新增 示例地址
- 修复 示例项目缺少组件的 Bug
## 1.1.02021-04-22
- 新增 通过方法自定义动画
- 新增 custom-class 非 NVUE 平台支持自定义 class 定制样式
- 优化 动画触发逻辑,使动画更流畅
- 优化 支持单独的动画类型
- 优化 文档示例
## 1.0.22021-02-05
- 调整为 uni_modules 目录规范

@ -0,0 +1,131 @@
// const defaultOption = {
// duration: 300,
// timingFunction: 'linear',
// delay: 0,
// transformOrigin: '50% 50% 0'
// }
// #ifdef APP-NVUE
const nvueAnimation = uni.requireNativePlugin('animation')
// #endif
class MPAnimation {
constructor(options, _this) {
this.options = options
// 在iOS10+QQ小程序平台下传给原生的对象一定是个普通对象而不是Proxy对象否则会报parameter should be Object instead of ProxyObject的错误
this.animation = uni.createAnimation({
...options
})
this.currentStepAnimates = {}
this.next = 0
this.$ = _this
}
_nvuePushAnimates(type, args) {
let aniObj = this.currentStepAnimates[this.next]
let styles = {}
if (!aniObj) {
styles = {
styles: {},
config: {}
}
} else {
styles = aniObj
}
if (animateTypes1.includes(type)) {
if (!styles.styles.transform) {
styles.styles.transform = ''
}
let unit = ''
if(type === 'rotate'){
unit = 'deg'
}
styles.styles.transform += `${type}(${args+unit}) `
} else {
styles.styles[type] = `${args}`
}
this.currentStepAnimates[this.next] = styles
}
_animateRun(styles = {}, config = {}) {
let ref = this.$.$refs['ani'].ref
if (!ref) return
return new Promise((resolve, reject) => {
nvueAnimation.transition(ref, {
styles,
...config
}, res => {
resolve()
})
})
}
_nvueNextAnimate(animates, step = 0, fn) {
let obj = animates[step]
if (obj) {
let {
styles,
config
} = obj
this._animateRun(styles, config).then(() => {
step += 1
this._nvueNextAnimate(animates, step, fn)
})
} else {
this.currentStepAnimates = {}
typeof fn === 'function' && fn()
this.isEnd = true
}
}
step(config = {}) {
// #ifndef APP-NVUE
this.animation.step(config)
// #endif
// #ifdef APP-NVUE
this.currentStepAnimates[this.next].config = Object.assign({}, this.options, config)
this.currentStepAnimates[this.next].styles.transformOrigin = this.currentStepAnimates[this.next].config.transformOrigin
this.next++
// #endif
return this
}
run(fn) {
// #ifndef APP-NVUE
this.$.animationData = this.animation.export()
this.$.timer = setTimeout(() => {
typeof fn === 'function' && fn()
}, this.$.durationTime)
// #endif
// #ifdef APP-NVUE
this.isEnd = false
let ref = this.$.$refs['ani'] && this.$.$refs['ani'].ref
if(!ref) return
this._nvueNextAnimate(this.currentStepAnimates, 0, fn)
this.next = 0
// #endif
}
}
const animateTypes1 = ['matrix', 'matrix3d', 'rotate', 'rotate3d', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scale3d',
'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'translate', 'translate3d', 'translateX', 'translateY',
'translateZ'
]
const animateTypes2 = ['opacity', 'backgroundColor']
const animateTypes3 = ['width', 'height', 'left', 'right', 'top', 'bottom']
animateTypes1.concat(animateTypes2, animateTypes3).forEach(type => {
MPAnimation.prototype[type] = function(...args) {
// #ifndef APP-NVUE
this.animation[type](...args)
// #endif
// #ifdef APP-NVUE
this._nvuePushAnimates(type, args)
// #endif
return this
}
})
export function createAnimation(option, _this) {
if(!_this) return
clearTimeout(_this.timer)
return new MPAnimation(option, _this)
}

@ -0,0 +1,286 @@
<template>
<!-- #ifndef APP-NVUE -->
<view v-show="isShow" ref="ani" :animation="animationData" :class="customClass" :style="transformStyles" @click="onClick"><slot></slot></view>
<!-- #endif -->
<!-- #ifdef APP-NVUE -->
<view v-if="isShow" ref="ani" :animation="animationData" :class="customClass" :style="transformStyles" @click="onClick"><slot></slot></view>
<!-- #endif -->
</template>
<script>
import { createAnimation } from './createAnimation'
/**
* Transition 过渡动画
* @description 简单过渡动画组件
* @tutorial https://ext.dcloud.net.cn/plugin?id=985
* @property {Boolean} show = [false|true] 控制组件显示或隐藏
* @property {Array|String} modeClass = [fade|slide-top|slide-right|slide-bottom|slide-left|zoom-in|zoom-out] 过渡动画类型
* @value fade 渐隐渐出过渡
* @value slide-top 由上至下过渡
* @value slide-right 由右至左过渡
* @value slide-bottom 由下至上过渡
* @value slide-left 由左至右过渡
* @value zoom-in 由小到大过渡
* @value zoom-out 由大到小过渡
* @property {Number} duration 过渡动画持续时间
* @property {Object} styles 组件样式 css 样式注意带-连接符的属性需要使用小驼峰写法如`backgroundColor:red`
*/
export default {
name: 'uniTransition',
emits:['click','change'],
props: {
show: {
type: Boolean,
default: false
},
modeClass: {
type: [Array, String],
default() {
return 'fade'
}
},
duration: {
type: Number,
default: 300
},
styles: {
type: Object,
default() {
return {}
}
},
customClass:{
type: String,
default: ''
},
onceRender:{
type:Boolean,
default:false
},
},
data() {
return {
isShow: false,
transform: '',
opacity: 1,
animationData: {},
durationTime: 300,
config: {}
}
},
watch: {
show: {
handler(newVal) {
if (newVal) {
this.open()
} else {
// close,
if (this.isShow) {
this.close()
}
}
},
immediate: true
}
},
computed: {
//
stylesObject() {
let styles = {
...this.styles,
'transition-duration': this.duration / 1000 + 's'
}
let transform = ''
for (let i in styles) {
let line = this.toLine(i)
transform += line + ':' + styles[i] + ';'
}
return transform
},
//
transformStyles() {
return 'transform:' + this.transform + ';' + 'opacity:' + this.opacity + ';' + this.stylesObject
}
},
created() {
//
this.config = {
duration: this.duration,
timingFunction: 'ease',
transformOrigin: '50% 50%',
delay: 0
}
this.durationTime = this.duration
},
methods: {
/**
* ref 触发 初始化动画
*/
init(obj = {}) {
if (obj.duration) {
this.durationTime = obj.duration
}
this.animation = createAnimation(Object.assign(this.config, obj),this)
},
/**
* 点击组件触发回调
*/
onClick() {
this.$emit('click', {
detail: this.isShow
})
},
/**
* ref 触发 动画分组
* @param {Object} obj
*/
step(obj, config = {}) {
if (!this.animation) return
for (let i in obj) {
try {
if(typeof obj[i] === 'object'){
this.animation[i](...obj[i])
}else{
this.animation[i](obj[i])
}
} catch (e) {
console.error(`方法 ${i} 不存在`)
}
}
this.animation.step(config)
return this
},
/**
* ref 触发 执行动画
*/
run(fn) {
if (!this.animation) return
this.animation.run(fn)
},
//
open() {
clearTimeout(this.timer)
this.transform = ''
this.isShow = true
let { opacity, transform } = this.styleInit(false)
if (typeof opacity !== 'undefined') {
this.opacity = opacity
}
this.transform = transform
// nextTick wx
this.$nextTick(() => {
// TODO
this.timer = setTimeout(() => {
this.animation = createAnimation(this.config, this)
this.tranfromInit(false).step()
this.animation.run()
this.$emit('change', {
detail: this.isShow
})
}, 20)
})
},
//
close(type) {
if (!this.animation) return
this.tranfromInit(true)
.step()
.run(() => {
this.isShow = false
this.animationData = null
this.animation = null
let { opacity, transform } = this.styleInit(false)
this.opacity = opacity || 1
this.transform = transform
this.$emit('change', {
detail: this.isShow
})
})
},
//
styleInit(type) {
let styles = {
transform: ''
}
let buildStyle = (type, mode) => {
if (mode === 'fade') {
styles.opacity = this.animationType(type)[mode]
} else {
styles.transform += this.animationType(type)[mode] + ' '
}
}
if (typeof this.modeClass === 'string') {
buildStyle(type, this.modeClass)
} else {
this.modeClass.forEach(mode => {
buildStyle(type, mode)
})
}
return styles
},
//
tranfromInit(type) {
let buildTranfrom = (type, mode) => {
let aniNum = null
if (mode === 'fade') {
aniNum = type ? 0 : 1
} else {
aniNum = type ? '-100%' : '0'
if (mode === 'zoom-in') {
aniNum = type ? 0.8 : 1
}
if (mode === 'zoom-out') {
aniNum = type ? 1.2 : 1
}
if (mode === 'slide-right') {
aniNum = type ? '100%' : '0'
}
if (mode === 'slide-bottom') {
aniNum = type ? '100%' : '0'
}
}
this.animation[this.animationMode()[mode]](aniNum)
}
if (typeof this.modeClass === 'string') {
buildTranfrom(type, this.modeClass)
} else {
this.modeClass.forEach(mode => {
buildTranfrom(type, mode)
})
}
return this.animation
},
animationType(type) {
return {
fade: type ? 1 : 0,
'slide-top': `translateY(${type ? '0' : '-100%'})`,
'slide-right': `translateX(${type ? '0' : '100%'})`,
'slide-bottom': `translateY(${type ? '0' : '100%'})`,
'slide-left': `translateX(${type ? '0' : '-100%'})`,
'zoom-in': `scaleX(${type ? 1 : 0.8}) scaleY(${type ? 1 : 0.8})`,
'zoom-out': `scaleX(${type ? 1 : 1.2}) scaleY(${type ? 1 : 1.2})`
}
},
//
animationMode() {
return {
fade: 'opacity',
'slide-top': 'translateY',
'slide-right': 'translateX',
'slide-bottom': 'translateY',
'slide-left': 'translateX',
'zoom-in': 'scale',
'zoom-out': 'scale'
}
},
// 线
toLine(name) {
return name.replace(/([A-Z])/g, '-$1').toLowerCase()
}
}
}
</script>
<style></style>

@ -0,0 +1,84 @@
{
"id": "uni-transition",
"displayName": "uni-transition 过渡动画",
"version": "1.3.2",
"description": "元素的简单过渡动画",
"keywords": [
"uni-ui",
"uniui",
"动画",
"过渡",
"过渡动画"
],
"repository": "https://github.com/dcloudio/uni-ui",
"engines": {
"HBuilderX": ""
},
"directories": {
"example": "../../temps/example_temps"
},
"dcloudext": {
"sale": {
"regular": {
"price": "0.00"
},
"sourcecode": {
"price": "0.00"
}
},
"contact": {
"qq": ""
},
"declaration": {
"ads": "无",
"data": "无",
"permissions": "无"
},
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui",
"type": "component-vue"
},
"uni_modules": {
"dependencies": ["uni-scss"],
"encrypt": [],
"platforms": {
"cloud": {
"tcb": "y",
"aliyun": "y"
},
"client": {
"App": {
"app-vue": "y",
"app-nvue": "y"
},
"H5-mobile": {
"Safari": "y",
"Android Browser": "y",
"微信浏览器(Android)": "y",
"QQ浏览器(Android)": "y"
},
"H5-pc": {
"Chrome": "y",
"IE": "y",
"Edge": "y",
"Firefox": "y",
"Safari": "y"
},
"小程序": {
"微信": "y",
"阿里": "y",
"百度": "y",
"字节跳动": "y",
"QQ": "y"
},
"快应用": {
"华为": "u",
"联盟": "u"
},
"Vue": {
"vue2": "y",
"vue3": "y"
}
}
}
}
}

@ -0,0 +1,11 @@
## Transition 过渡动画
> **组件名uni-transition**
> 代码块: `uTransition`
元素过渡动画
### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-transition)
#### 如使用过程中有任何问题或者您对uni-ui有一些好的建议欢迎加入 uni-ui 交流群871950839
Loading…
Cancel
Save