Commit b30043d5 by sunerhu

1.修改登陆页面暂时隐藏注册邀请码

2.修改项目中日期格式不正确。
3.添加公共js 日期文件
parent ca779ad8
......@@ -12,9 +12,9 @@
{{loginTypeName}}
</view>
<form>
<view class="inputItem" v-if="loginType==='register'">
<!-- <view class="inputItem" v-if="loginType==='register'">
<input class="uni-input" name="invitationCode" placeholder="输入邀请码(非必填)" v-model="invitation_code"/>
</view>
</view> -->
<view class="inputItem" v-if="loginType!=='agentlogin'">
<input class="uni-input" name="mobileNo" placeholder="输入手机号" v-model="form.mobile" maxlength="11"/>
</view>
......
......@@ -10,6 +10,7 @@
</template>
<script>
import {fmdata} from '@/util/currentDate.js'
export default {
props:{
fields:{
......@@ -22,16 +23,18 @@
name: "time-picker",
data() {
return {
queryDate: `${new Date().getFullYear()}-${new Date().getMonth() + 1}`,
queryDate: fmdata(new Date(),'M'),
// queryDate: `${new Date().getFullYear()}-${new Date().getMonth() + 1}`,
maxDate: `${new Date().getFullYear()}-${new Date().getMonth() + 1}`,
};
},
mounted() {
if(this.fields == "month"){
this.queryDate = `${new Date().getFullYear()}-${new Date().getMonth() + 1}`
// this.queryDate = `${new Date().getFullYear()}-${new Date().getMonth() + 1}`
this.queryDate = fmdata(new Date(),'M');
}else if (this.fields == "year") {
this.queryDate = `${new Date().getFullYear()}`
console.log(this.queryDate, 'cak')
// this.queryDate = `${new Date().getFullYear()}`
this.queryDate = fmdata(new Date(),'Y');
}else {
return false
}
......
......@@ -136,6 +136,10 @@
}
}
}
},
"nvueLaunchMode" : "",
"uniStatistics" : {
"enable" : false
}
},
/* 快应用特有相关 */
......@@ -187,6 +191,14 @@
}
}
}
},
"uniStatistics" : {
"enable" : false
},
"optimization" : {
"treeShaking" : {
"enable" : true
}
}
},
"_spaceID" : "mp-68e17e23-e517-4839-8210-27480303cc51",
......
......@@ -22,8 +22,8 @@
<!-- v-show="!sliceshare" -->
<view class="courseBannerBox" v-if="!sliceshare">
<video v-if="isRenderVideo" id="myVideo" :src="courseInfo.filePathOss" :initial-time="viewTime"
object-fit="contain" class="videoBox" :poster="courseInfo.fileFirstImage"
:title="courseInfo.fileTitle" @play="playVideo" @pause="pause" @timeupdate="timeupdate" style="width: 100vw;height: 320rpx;"></video>
object-fit="contain" class="videoBox" :poster="courseInfo.fileFirstImage" :title="courseInfo.fileTitle"
@play="playVideo" @pause="pause" @timeupdate="timeupdate" style="width: 100vw;height: 320rpx;"></video>
</view>
<!-- 课程详情图 -->
......@@ -39,6 +39,17 @@
</view>
<text>唤醒App</text>
</view>
<!-- v-if="isWeixin == true" -->
<!-- <view class="awakenApp">
<wx-open-launch-app id="launch-btn" appid="wxb591d0034cdcf0cd" extinfo="extinfo">
<script type="text/wxtag-template">
<button class="btn" >打开/下载App</button>
</script>
</wx-open-launch-app>
</view> -->
<strong>
</strong>
</view>
</view>
<view class="dataBox">
......@@ -139,6 +150,7 @@
},
data() {
return {
isWeixin: false,
isRenderVideo: false,
fileId: null,
lecturerId: null,
......@@ -170,13 +182,13 @@
shareCode: null,
sharelogin: false,
startTime: '',
newCourseInfo:{},
isPauseFlag:true,
CONFIG : {
android: 'https://a.app.qq.com/o/simple.jsp?pkgname=com.xiaoxiao.shihaoo',
ios: 'https://apps.apple.com/cn/app/%E6%98%AF%E5%A5%BD/id1457958161',
scheme: 'com.qdxxzy.user://'
}
newCourseInfo: {},
isPauseFlag: true,
CONFIG: {
android: 'https://a.app.qq.com/o/simple.jsp?pkgname=com.xiaoxiao.shihaoo',
ios: 'https://apps.apple.com/cn/app/%E6%98%AF%E5%A5%BD/id1457958161',
scheme: 'com.qdxxzy.user://'
}
};
},
methods: {
......@@ -188,17 +200,17 @@
this.userId = val
uni.setStorageSync('cffp_userId', this.userId);
this.courseDetail();
setTimeout(()=>{
setTimeout(() => {
this.getuserRead(this.courseInfo.status)
},500)
}, 500)
} else {
this.sharelogin = false
}
},
/**
* 判断是否为微信浏览器
* 兼容ios
* */
* 判断是否为微信浏览器
* 兼容ios
* */
// isWeiXin() {
// return /micromessenger/i.test(navigator.userAgent.toLowerCase()) || typeof navigator.wxuserAgent !== 'undefined'
// },
......@@ -218,11 +230,11 @@
// }
// document.body.removeChild(ifr);
// }, 2000);
// ifr.setAttribute('src', url);
// ifr.setAttribute('style', 'display:none');
// document.body.appendChild(ifr);
// setTimeout(function () { //启动app时间较长处理
// let t2 = Date.now();
// if (t2 - t1 < t + 100) {
......@@ -240,9 +252,9 @@
// }, 1000);
// }
// },
/**
* 超时跳转h5页面
* */
/**
* 超时跳转h5页面
* */
// goConfirmAddr() {
// let { isAndroid } = judgePhoneType();
// window.location.href = !isAndroid ? CONFIG.ios : CONFIG.android ;
......@@ -250,7 +262,6 @@
jumpapp() {
let platform = uni.getSystemInfoSync().platform
if (platform == 'ios') {
// var loadDateTime = new Date();
window.location.href = "https://mcffp.anjibao.cn/app/";
// window.setTimeout(function() { //如果没有安装app,便会执行setTimeout跳转下载页
// var timeOutDateTime = new Date();
......@@ -262,29 +273,17 @@
// }, 500);
} else if (platform == 'android') {
window.location.href = "cffpapp://";
// window.open('cffpapp://');
// var loadDateTime = new Date();
// window.setTimeout(function() { //如果没有安装app,便会执行setTimeout跳转下载页
// var timeOutDateTime = new Date();
// if (timeOutDateTime - loadDateTime < 500) {
// } else {
// // window.location = "https://mdev.anjibao.cn/cffp/app.ipa"; //ios下载地址
// window.location = "www.baidu.com"; //ios下载地址
// }
// }, 500);
// window.location.href = "cffpapp://";
}
},
goBack() {
let back = getCurrentPages();
if(back && back.length>1) {
uni.navigateBack({
delta: 1
});
}else{
history.back();
if (back && back.length > 1) {
uni.navigateBack({
delta: 1
});
} else {
history.back();
}
},
// 监听空白关闭
......@@ -413,7 +412,7 @@
}
if (this.courseInfo.status == 2) {
this.findVideoPlayback();
}else{
} else {
this.isRenderVideo = true;
}
}
......@@ -450,16 +449,16 @@
});
} else {
this.videoContext.pause();
if(this.fileId != item.fileId){
if (this.fileId != item.fileId) {
// 当点击的课程和当前播放的课程不一致时,执行此方法
uni.showLoading({
title: '加载中'
});
this.newCourseInfo = {
fileId:item.fileId,
packFileId:item.packFileId,
fileId: item.fileId,
packFileId: item.packFileId,
}
if(this.isPauseFlag){
if (this.isPauseFlag) {
this.pause()
}
}
......@@ -478,20 +477,20 @@
viewTime: Math.floor(this.viewTime),
playbackStatus: this.viewTime >= this.totalTime ? '2' : '1'
}
return new Promise((resolve,reject)=>{
if(this.viewTime == 0){
return new Promise((resolve, reject) => {
if (this.viewTime == 0) {
resolve('success');
return;
}
api.saveVideoPlayback(param).then(res => {
api.saveVideoPlayback(param).then(res => {
if (res['success']) {
this.playbackId = res['data']['id'];
console.log('save已经执行完毕');
resolve('success');
}else{
} else {
reject('fail')
}
}).catch((err)=>{
}).catch((err) => {
reject('fail')
})
})
......@@ -509,7 +508,7 @@
api.findVideoPlayback(param).then(res => {
if (res['success']) {
this.videoPlaybackInfo = res['data'];
console.log('查询视频播放轨迹结果=====',this.videoPlaybackInfo)
console.log('查询视频播放轨迹结果=====', this.videoPlaybackInfo)
this.viewTime = this.videoPlaybackInfo.viewTime
this.viewTime = this.videoPlaybackInfo.viewTime ? this.videoPlaybackInfo.viewTime : 0;
this.totalTime = this.videoPlaybackInfo.totalTime ? this.videoPlaybackInfo.totalTime : 0;
......@@ -518,7 +517,7 @@
// 跳转到指定位置
this.videoContext.seek(this.viewTime);
uni.hideLoading();
}else{
} else {
this.isRenderVideo = true;
this.totalTime = this.viewTime = 0;
// 跳转到指定位置
......@@ -529,9 +528,9 @@
},
// 点击播放
playVideo(e) {
console.log('playVideo',this.totalTime,this.viewTime)
console.log('playVideo', this.totalTime, this.viewTime)
this.isPauseFlag = false;
if(this.viewTime>=this.totalTime){
if (this.viewTime >= this.totalTime) {
this.viewTime = 0;
this.videoContext.seek(this.viewTime);
}
......@@ -547,14 +546,14 @@
},
// // 暂停播放
async pause() {
if (this.courseInfo.status != 1){
if (this.courseInfo.status != 1) {
console.log('pause')
this.isPauseFlag = true;
if (this.timer) {
clearInterval(this.timer)
}
const result = await this.saveVideoPlayback()
if(result=='success' && this.newCourseInfo.fileId){
if (result == 'success' && this.newCourseInfo.fileId) {
console.log('新的课程要进行赋值查询了')
this.fileId = this.newCourseInfo.fileId;
this.courseInfo.packFileId = this.newCourseInfo.packFileId;
......@@ -615,6 +614,27 @@
var url = window.location.href.split('#')[0]
hshare(data, url)
},
// 唤醒app 测试
JsApiTicketApi() {
let WxConfigRequestVO = {
url: window.location.href.split('#')[0],
systemType: '1'
}
api.Wxshare(WxConfigRequestVO).then(res => {
console.log(res, '第三步');
jWeixin.config({
debug: false, //调试的时候需要 在app上回弹出errmg:config ok 的时候就证明没问题了 这时候就可以改为false
appId: res.data.appId, //appid
timestamp: res.data.timestamp, //时间戳
nonceStr: res.data.nonceStr, //随机串
signature: res.data.signature, //签名
jsApiList: res.data.jsApiList //必填 是下面需要用到的方法集合
})
if (callback) {
callback()
}
})
},
},
......@@ -624,6 +644,8 @@
if (option.coursesharing) {
this.userId = ''
this.coursesharing = option.coursesharing
// this.isWeixin = true; // 是微信端
// this.JsApiTicketApi();
this.serialsNo = option.serialsNo
this.shareCode = option.shareCode
this.shareUserId = option.shareUserId
......@@ -636,7 +658,6 @@
uni.setStorageSync('h5_coursesharing', this.coursesharing);
this.getshareData()
}
let dataForm = uni.getStorageSync('userinfodataForm')
this.realName = dataForm.realName
// this.switchTab(1);
......@@ -645,16 +666,41 @@
this.switchTab(1);
this.loginType = uni.getStorageSync('loginType')
},
// mounted() {
// let _this = this;
// var btn = document.getElementById('launch-btn');
// alert(btn)
// btn.addEventListener('launch', function(e) {
// alert('success')
// console.log('success');
// });
// btn.addEventListener('error', function(e) {
// console.log('fail', e.detail);
// alert('fail')
// uni.showModal({
// title: '系统消息',
// content: '您的手机未找到当前应用,是否去下载?',
// success: function(res) {
// if (res.confirm) {
// window.location.href = _this.versionsData.versionResources
// console.log('用户点击确定');
// } else if (res.cancel) {
// console.log('用户点击取消');
// }
// }
// });
// });
// },
onReady() {
this.videoContext = uni.createVideoContext('myVideo');
},
onUnload() {
if (this.courseInfo.status != 1 && this.viewTime!=0) {
if (this.courseInfo.status != 1 && this.viewTime != 0) {
this.videoContext.pause();
this.saveVideoPlayback();
if (this.timer) {
clearInterval(this.timer)
}
}
}
}
}
......
......@@ -199,7 +199,7 @@
padding: 20rpx;
.grey{
min-width: 100rpx;
font-size: 24rpx;
font-size: 22rpx;
color: #CECECE;
}
}
......
......@@ -66,11 +66,12 @@
</template>
<script>
import {fmdata} from '@/util/currentDate.js'
import api from '../../api/api';
export default{
data(){
return {
fortuneDate:`${new Date().getFullYear()}-${new Date().getMonth() + 1}-${new Date().getDate()}`,
fortuneDate: fmdata(new Date(),'D'),
maxDate:`${new Date().getFullYear()}-${new Date().getMonth() + 1}`,
navList:[{name:'日积分',timeFlag:'D'},{name:'月积分',timeFlag:'M'},{name:'年积分',timeFlag:'Y'}],
timeFlag:'D',
......@@ -92,14 +93,15 @@
selectNav(navItem){
this.timeFlag = navItem.timeFlag;
if(this.timeFlag == 'D'){
this.fortuneDate = `${new Date().getFullYear()}-${new Date().getMonth() + 1}-${new Date().getDate()}`
this.fortuneDate = fmdata(new Date(),'D');
}
if(this.timeFlag == 'M'){
this.fortuneDate = `${new Date().getFullYear()}-${new Date().getMonth() + 1}`
this.fortuneDate = fmdata(new Date(),'M');
this.fields = 'month'
}
if(this.timeFlag == 'Y'){
this.fortuneDate=`${new Date().getFullYear()}`
this.fortuneDate = fmdata(new Date(),'Y');
// this.fortuneDate=`${new Date().getFullYear()}`
this.fields = 'year'
}
this.findByUserIdForFortuneStatistic();
......
......@@ -43,7 +43,10 @@
<view class="shareOrderInfoItem" v-for="item in userShareCourses" :key="item.fileId">
<view class="timeBox">{{item.shareDate}}</view>
<view class="courseInfoContent">
<course-item :thumbnailPath="item.displayImage" :title="item.fileTitle" :summaryBox="item.fileSynopsis" :dataList="{coursePrice:item.coursePrice,salesNumber:item.salesNumber}" :fileLecturerId="item.fileLecturerId"></course-item>
<course-item :thumbnailPath="item.displayImage" :title="item.fileTitle"
:summaryBox="item.fileSynopsis"
:dataList="{coursePrice:item.coursePrice,salesNumber:item.salesNumber}"
:fileLecturerId="item.fileLecturerId"></course-item>
</view>
<view class="countsContent">
<view @click="goDetail(item.fileId,1)">
......@@ -71,94 +74,98 @@
<script>
import api from "@/api/api";
import courseItem from "@/components/courseItem/courseItem.vue";
import {
fmdata
} from '@/util/currentDate.js'
export default {
components:{
components: {
courseItem
},
data() {
return {
queryDate:`${new Date().getFullYear()}-${new Date().getMonth() + 1}`,
maxDate:`${new Date().getFullYear()}-${new Date().getMonth() + 1}`,
userId:uni.getStorageSync('cffp_userId'),
queryDate: fmdata(new Date(), 'M'),
// queryDate:`${new Date().getFullYear()}-${new Date().getMonth() + 1}`,
maxDate: `${new Date().getFullYear()}-${new Date().getMonth() + 1}`,
userId: uni.getStorageSync('cffp_userId'),
coursesCountInfos: {
shareFrequencyMonth:0,
integralMonth:0,
shareSectionMonth:0,
shareFrequencyCount:0,
integralCount:0,
shareSectionCount:0
},
userShareCourses:[]
shareFrequencyMonth: 0,
integralMonth: 0,
shareSectionMonth: 0,
shareFrequencyCount: 0,
integralCount: 0,
shareSectionCount: 0
},
userShareCourses: []
}
},
methods: {
goBack(){
let back = getCurrentPages();
if(back && back.length>1) {
uni.navigateBack({
delta: 1
});
}else{
history.back();
goBack() {
let back = getCurrentPages();
if (back && back.length > 1) {
uni.navigateBack({
delta: 1
});
} else {
history.back();
}
},
bindDateChange: function(e) {
bindDateChange: function(e) {
this.queryDate = e.detail.value;
this.userShareCount();
this.userShareQuery();
},
userShareCount(){
userShareCount() {
const params = {
userId:this.userId,
queryDate:this.queryDate
userId: this.userId,
queryDate: this.queryDate
}
api.userShareCount(params).then(res=>{
api.userShareCount(params).then(res => {
console.log(res)
if(res['success']){
if (res['success']) {
this.coursesCountInfos = res['data'] ? res['data'] : this.coursesCountInfos;
Object.keys(this.coursesCountInfos).forEach((item)=>{
if(!this.coursesCountInfos[item]){
Object.keys(this.coursesCountInfos).forEach((item) => {
if (!this.coursesCountInfos[item]) {
this.coursesCountInfos[item] = 0;
}
})
}else{
} else {
this.coursesCountInfos = {
shareFrequencyMonth:0,
integralMonth:0,
shareSectionMonth:0,
shareFrequencyCount:0,
integralCount:0,
shareSectionCount:0
shareFrequencyMonth: 0,
integralMonth: 0,
shareSectionMonth: 0,
shareFrequencyCount: 0,
integralCount: 0,
shareSectionCount: 0
};
console.log(this.coursesCountInfos)
}
})
},
userShareQuery(){
userShareQuery() {
const params = {
userId:this.userId,
queryDate:this.queryDate
userId: this.userId,
queryDate: this.queryDate
}
console.log(this.userShareCourses)
api.userShareQuery(params).then(res=>{
api.userShareQuery(params).then(res => {
console.log(res)
if(res['success']){
if (res['success']) {
this.userShareCourses = res['data']['userShareCourses'];
}else{
} else {
this.userShareCourses = [];
}
})
},
// 查看详情
goDetail(val,type){
goDetail(val, type) {
uni.navigateTo({
url:`/pages/commonDetail/commonDetail?fileId=${val}&type=${type}`
url: `/pages/commonDetail/commonDetail?fileId=${val}&type=${type}`
})
},
// 查看积分
viewIntegral(){
viewIntegral() {
uni.navigateTo({
url:`/pages/myPoints/myPoints`
url: `/pages/myPoints/myPoints`
})
}
},
......@@ -167,35 +174,39 @@
this.userShareQuery();
},
mounted() {
}
}
</script>
<style lang="scss">
.container{
.container {
height: 100%;
.timeSelectContent{
.timeSelectContent {
background-color: #fff;
padding: 20rpx 0;
display: flex;
justify-content: center;
align-items: baseline;
color: #333;
.xiajiantou{
.xiajiantou {
color: #999;
font-size: 24rpx;
transform: rotate(90deg);
margin-left: 8rpx;
}
}
.shareStatisticalContent{
.shareStatisticalContent {
background-color: #fff;
margin: 10rpx 20rpx;
padding: 20rpx 14rpx;
display: flex;
flex-wrap: wrap;
.statisticItem{
.statisticItem {
flex: 1;
min-width: 33%;
display: flex;
......@@ -203,29 +214,35 @@
align-items: center;
border-right: 1px solid #F4F4F4;
margin-bottom: 10rpx;
&:nth-of-type(3n){
&:nth-of-type(3n) {
border-right: none;
}
text{
text {
color: #333;
font-size: 36rpx;
&:last-child{
&:last-child {
color: #666;
font-size: 28rpx;
}
&.colorText{
&.colorText {
color: #F15A1F;
}
}
}
}
.shareDetailContent{
h3{
.shareDetailContent {
h3 {
color: #333;
font-size: 36rpx;
position: relative;
margin: 10rpx 0 10rpx 58rpx;
&::before{
&::before {
content: '';
display: block;
position: absolute;
......@@ -237,27 +254,33 @@
background-color: #FA882F;
}
}
.shareOrderInfoItem{
.shareOrderInfoItem {
margin: 0 20rpx;
.timeBox{
.timeBox {
font-size: 28rpx;
color: #999;
margin: 10rpx 0 10rpx 50rpx;
}
.countsContent{
.countsContent {
background-color: #fff;
display: flex;
border-bottom-left-radius: 20rpx;
border-bottom-right-radius: 20rpx;
padding: 10rpx 10rpx 20rpx 10rpx;
view{
view {
flex: 1;
font-size: 24rpx;
display: flex;
align-items: center;
text{
text {
color: #666;
&:last-child{
&:last-child {
margin-left: 10rpx;
color: #0A2F99;
font-weight: bold;
......
......@@ -3,7 +3,10 @@
<!-- 课程详情 -->
<template v-if="courseInfoItem">
<view class="courseItemBox">
<course-item :thumbnailPath="courseInfoItem.displayImage" :title="courseInfoItem.fileTitle" :summaryBox="courseInfoItem.fileSynopsis" :dataList="{coursePrice:courseInfoItem.coursePrice,salesNumber:courseInfoItem.salesNumber}" :fileLecturerId="courseInfoItem.fileLecturerId" :fileId="fileId"></course-item>
<course-item :thumbnailPath="courseInfoItem.displayImage" :title="courseInfoItem.fileTitle"
:summaryBox="courseInfoItem.fileSynopsis"
:dataList="{coursePrice:courseInfoItem.coursePrice,salesNumber:courseInfoItem.salesNumber}"
:fileLecturerId="courseInfoItem.fileLecturerId" :fileId="fileId"></course-item>
</view>
</template>
<!-- 价格明细 -->
......@@ -12,10 +15,15 @@
<view><text>现价</text><text>¥{{Number(courseInfoItem.coursePrice).toFixed(2)}}</text></view>
<view>
<text @click="toggle(1,'bottom')">积分抵扣<i class="iconfont icon-31tishi"></i></text>
<text class="integralBox" @click="toggle(2,'bottom')" v-if="intergralInfo.preFortune">{{!isDeduction ? '未选' : '已选'}}积分,可抵扣{{deductionCore}}<i class="iconfont icon-youjiantou"></i></text>
<text class="integralBox" @click="toggle(2,'bottom')"
v-if="intergralInfo.preFortune">{{isDeduction != 'true' ? '未选' : '已选'}}积分,可抵扣{{deductionCore}}<i
class="iconfont icon-youjiantou"></i></text>
<text style="color: #666666;font-size: 30rpx;" v-else>暂无积分</text>
</view>
<view><text>合计</text><text>¥{{Number(totalPrice).toFixed(2)}}</text></view>
<view><text>合计</text>
<text v-if="isRedirect == 1">{{calculatedPrice}}</text>
<text v-else>¥{{Number(totalPrice).toFixed(2)}}</text>
</view>
</view>
<!-- 支付方式 -->
<view class="paymentMethodContent">
......@@ -28,7 +36,7 @@
<view class="selectRadio" :class="{'actived':paymentMethod===2}">
<i class="iconfont icon-duihao"></i>
</view>
</view>
<view class="paymentItem" @click="selectPaymentMethod(1)" v-if="deviceType==3">
<view>
......@@ -40,7 +48,7 @@
</view>
</view>
<!-- #ifdef APP-PLUS -->
<view class="paymentItem" @click="selectPaymentMethod(1)" >
<!-- <view class="paymentItem" @click="selectPaymentMethod(1)">
<view>
<i class="iconfont icon-py_weixinzhifu"></i>
<text>微信支付</text>
......@@ -48,23 +56,37 @@
<view class="selectRadio" :class="{'actived':paymentMethod===1}">
<i class="iconfont icon-duihao"></i>
</view>
</view>
</view> -->
<!-- #endif -->
</view>
<!-- 底部 -->
<view class="totalContent">
<view class="priceInfoBox">
<view>合计: <strong style="font-size: 36rpx;">¥{{totalPrice}}</strong></view>
<view>共优惠:<strong style="color:#F15A1F" v-if="isDeduction == true">¥{{Number(deductionCore * intergralInfo.preFortune).toFixed(2)}}</strong>
<text style="color:#F15A1F" v-else>0</text>
</view>
<view>合计:
<strong v-if="isRedirect == 1">{{calculatedPrice}}</strong>
<strong v-else style="font-size: 36rpx;">¥{{totalPrice}}</strong>
</view>
<view class="" v-if="isRedirect == 1">
<view>共优惠:<strong style="color:#F15A1F">
<text v-if="isDeduction == 'true'">{{deductionCore}}</text>
<text style="color:#F15A1F" v-else>0</text>
</strong>
</view>
</view>
<view class="" v-else>
<view>共优惠:<strong style="color:#F15A1F"
v-if="isDeduction == 'true'">¥{{Number(deductionCore * intergralInfo.preFortune).toFixed(2)}}</strong>
<text style="color:#F15A1F" v-else>0</text>
</view>
</view>
</view>
<view class="confirmOrder" :class="{'gray':paymentBtnDisabled}" @click="pay()">提交订单</view>
</view>
<view v-html="payForm">
</view>
<!-- 普通弹窗 -->
<!-- 普通弹窗 -->
<uni-popup ref="popup" background-color="#fff">
<view class="popup-content">
<view class="title">
......@@ -72,13 +94,13 @@
<h3>{{popupTitle}}</h3>
<i class="iconfont icon-guanbi" @click="closePopup(1)"></i>
</view>
<view v-if="popupType===1"><text>1积分=1元,积分抵扣如同现金,所有课程均可使用.</text></view>
<view v-if="popupType===1"><text>1积分=1元,积分抵扣如同现金,所有课程均可使用.</text></view>
<view v-if="popupType===2">
<view class="deductionInfoItem" :class="{'actived':isDeduction}" @click="selectDeduction(true)">
<view class="deductionInfoItem" :class="{'actived':isDeduction == 'true'}" @click="selectDeduction(true)">
<view style="display: flex;">
<text>可抵扣</text>
<view class="integralInfoBox">
<text class="deductionCount" >¥{{deductionCore * intergralInfo.preFortune || '0'}}</text>
<text class="deductionCount">¥{{deductionCore * intergralInfo.preFortune || '0'}}</text>
<text>需{{deductionCore}}积分兑换</text>
</view>
</view>
......@@ -86,7 +108,7 @@
<i class="iconfont icon-duihao"></i>
</view>
</view>
<view class="deductionInfoItem" :class="{'actived':!isDeduction}" @click="selectDeduction(false)">
<view class="deductionInfoItem" :class="{'actived':isDeduction == 'false'}" @click="selectDeduction(false)">
<view>
<text>不使用积分抵扣</text>
</view>
......@@ -97,7 +119,7 @@
<view class="confirmBtn" @click="closePopup(1);toggle(3,'center')">
确认
</view>
</view>
</view>
</view>
</uni-popup>
<view class="popupContainer">
......@@ -129,13 +151,13 @@
</uni-popup>
</view>
<view class="markBox" @click="tipsFlag=false" v-if="tipsFlag">
<view class="guideImgBox">
<image src="../../static/Group132.png" mode="widthFix"></image>
<view class="tips">
<view class="text-center">请点击右上角菜单</view>
<view>因微信屏蔽支付宝的支付请求,请使用浏览器打开页面完成支付。在浏览器内支付完成后,请返回微信,到我的订单下,以检测支付结果。</view>
<view class="guideImgBox">
<image src="../../static/Group132.png" mode="widthFix"></image>
<view class="tips">
<view class="text-center">请点击右上角菜单</view>
<view>因微信屏蔽支付宝的支付请求,请使用浏览器打开页面完成支付。在浏览器内支付完成后,请返回微信,到我的订单下,以检测支付结果。</view>
</view>
</view>
</view>
</view>
</view>
</template>
......@@ -143,76 +165,80 @@
<script>
import api from "@/api/api";
import courseItem from "@/components/courseItem/courseItem.vue";
import { nextTick } from "vue";
import {
nextTick
} from "vue";
import common from '../../common/common';
export default {
components:{
components: {
courseItem
},
data() {
return {
courseInfoItem:{},
fileId:null,
paymentMethod:2,
popupTitle:'积分抵扣规则',
popupType:1,
isDeduction:false,
courseInfoItem: {},
fileId: null,
paymentMethod: 2,
popupTitle: '积分抵扣规则',
popupType: 1,
isDeduction: 'false',
userId: uni.getStorageSync('cffp_userId'),
intergralInfo:{},
orderId:'',
paymentBtnDisabled:false,
action:'',
params:'',
actionType:'',
charset:'',
contentType:'',
payForm:'',
deviceType:'',
tipsFlag:false,
isRedirect:null,
amount:0,
calculatedPrice:0
intergralInfo: {},
orderId: '',
paymentBtnDisabled: false,
action: '',
params: '',
actionType: '',
charset: '',
contentType: '',
payForm: '',
deviceType: '',
tipsFlag: false,
isRedirect: null,
amount: 0,
calculatedPrice: 0
}
},
computed:{
totalPrice(){
if(this.isDeduction == true){
return (this.courseInfoItem.coursePrice - (this.deductionCore * this.intergralInfo.preFortune)).toFixed(2)
}else{
computed: {
totalPrice() {
if (this.isDeduction == "true") {
return (this.courseInfoItem.coursePrice - (this.deductionCore * this.intergralInfo.preFortune))
.toFixed(2)
} else {
return this.courseInfoItem.coursePrice;
}
},
deductionCore(){
if(this.courseInfoItem.coursePrice / this.intergralInfo.preFortune < this.intergralInfo.yesExchangeFortune){
deductionCore() {
if (this.courseInfoItem.coursePrice / this.intergralInfo.preFortune < this.intergralInfo
.yesExchangeFortune) {
return parseFloat((this.courseInfoItem.coursePrice / this.intergralInfo.preFortune)).toFixed(2)
}else{
} else {
return this.intergralInfo.yesExchangeFortune
}
}
},
methods: {
// 支付
pay(){
if(this.paymentBtnDisabled){
pay() {
if (this.paymentBtnDisabled) {
return false;
}
this.paymentBtnDisabled = true;
let param = {
orderId:this.orderId,
amount:this.isRedirect==1?this.calculatedPrice : this.totalPrice,
paymentMethod:this.paymentMethod,
userId:this.userId,
integralExchange:this.isDeduction? parseFloat(this.deductionCore) : 0,
paymentType:'',
isPayOrAuth:'',
fileId:this.fileId
orderId: this.orderId,
amount: this.isRedirect == 1 ? this.calculatedPrice : this.totalPrice,
paymentMethod: this.paymentMethod,
userId: this.userId,
integralExchange: this.isDeduction == "true" ? this.deductionCore : 0,
paymentType: '',
isPayOrAuth: '',
fileId: this.fileId
}
if(this.paymentMethod==1){
if (this.paymentMethod == 1) {
// APP:微信app支付
// #ifdef APP-PLUS
param.paymentType = 1;
api.unifiedPay(param).then(res=>{
api.unifiedPay(param).then(res => {
console.log(res)
this.paymentBtnDisabled = false;
})
......@@ -220,239 +246,258 @@
// #ifdef H5
param.paymentType = 2;
//deviceType:PC为1,移动端为2,微信为3
if(this.deviceType == 3){
if (this.deviceType == 3) {
let _this = this
param.isPayOrAuth = 1;
api.wxAuthorize(param).then((res)=>{
this.paymentBtnDisabled = false;
if(this.amount == '0'){
uni.navigateTo({
url:`/pages/orderStatus/orderStatus?orderId=${this.orderId}&fileId=${this.fileId}&orderStatus=2&userId=${this.userId}&isRedirect=1`
})
return false
}
if(res['success']){
window.location.href = res['data']['paymentForm']['action'];
// } else {
api.wxAuthorize(param).then((res) => {
_this.paymentBtnDisabled = false;
if (res['success']) {
if (param.amount == '0.00') {
uni.navigateTo({
url: `/pages/orderStatus/orderStatus?orderId=${_this.orderId}&fileId=${_this.fileId}&orderStatus=2&userId=${_this.userId}`
})
return false
} else {
window.location.href = res['data']['paymentForm']['action'];
}
}
})
}else{
// }
} else {
//微信二维码支付
}
// #endif
}else if(this.paymentMethod==2){
} else if (this.paymentMethod == 2) {
// APP:支付宝app支付
// #ifdef APP-PLUS
param.paymentType = 1;
api.unifiedPay(param).then(res=>{
api.unifiedPay(param).then(res => {
this.paymentBtnDisabled = false;
if(res['success']){
if (res['success']) {
const aliOrderString = res['data']['aliOrderString'];
let _this = this
if(aliOrderString){
if (aliOrderString) {
uni.requestPayment({
provider: 'alipay',
orderInfo: aliOrderString,
success: function (resp) {
provider: 'alipay',
orderInfo: aliOrderString,
success: function(resp) {
uni.navigateTo({
url:`/pages/orderStatus/orderStatus?orderId=${_this.orderId}&fileId=${_this.fileId}&orderStatus=2&userId=${_this.userId}&isRedirect=1`
url: `/pages/orderStatus/orderStatus?orderId=${_this.orderId}&fileId=${_this.fileId}&orderStatus=2&userId=${_this.userId}&isRedirect=1`
})
},
fail: function (err) {
console.log('fail:' + JSON.stringify(err));
},
fail: function(err) {
console.log('fail:' + JSON.stringify(err));
uni.navigateTo({
url:`/pages/orderStatus/orderStatus?orderId=${_this.orderId}&fileId=${_this.fileId}&orderStatus=1&userId=${_this.userId}&isRedirect=1`
url: `/pages/orderStatus/orderStatus?orderId=${_this.orderId}&fileId=${_this.fileId}&orderStatus=1&userId=${_this.userId}&isRedirect=1`
})
}
}
});
}else{
} else {
uni.navigateTo({
url:`/pages/orderStatus/orderStatus?orderId=${this.orderId}&fileId=${this.fileId}&orderStatus=2&userId=${this.userId}&isRedirect=1`
url: `/pages/orderStatus/orderStatus?orderId=${this.orderId}&fileId=${this.fileId}&orderStatus=2&userId=${this.userId}&isRedirect=1`
})
}
}else{
} else {
uni.showModal({
content: res['message'],
success: function (res) {
if (res.confirm) {
console.log('用户点击确定');
} else if (res.cancel) {
content: res['message'],
success: function(res) {
if (res.confirm) {
console.log('用户点击确定');
} else if (res.cancel) {
console.log('用户点击取消');
}
}
}
});
}
})
// #endif
//#ifdef H5
//支付宝h5支付
console.log(JSON.stringify(param))
param.paymentType = 2;
// this.amount = this.totalPrice;
if(this.deviceType == 3){
this.tipsFlag = true;
// this.amount = this.totalPrice;
this.paymentBtnDisabled = false;
let deductionCore = this.isDeduction==true ? parseFloat(this.deductionCore) : 0;
let url = window.location.href + `&isRedirect=1&amount=${this.amount}&isDeduction=${this.isDeduction}&deductionCore=${deductionCore}&jumptime=${new Date()}`;
window.history.replaceState(null, '',url);
return;
}
api.unifiedPay(param).then((res)=>{
const data = res['data'];
this.paymentBtnDisabled = false;
if(res['success']){
debugger;
if(data.orderStatus != '' && data.orderStatus != null){
uni.navigateTo({
url:`/pages/orderStatus/orderStatus?orderId=${this.orderId}&fileId=${this.fileId}&orderStatus=2&userId=${this.userId}&isRedirect=1`
})
return false
}
this.payForm = res['data']['aliOrderString'];
// this.$nextTick(() => {
// console.log(document.forms)
// document.forms['punchout_form'].submit();
// })
}else{
uni.showModal({
content: res['message'],
success: function (res) {
if (res.confirm) {
console.log('用户点击确定');
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
this.amount = this.totalPrice;
if (this.deviceType == 3) {
if (param.amount == '0.00') {
this.getunifiedPay(param)
return false
} else {
this.tipsFlag = true;
this.amount = this.totalPrice;
this.paymentBtnDisabled = false;
let deductionCore = this.isDeduction == "true" ? parseFloat(this.deductionCore) : 0;
let url = window.location.href +
`&isRedirect=1&amount=${this.amount}&isDeduction=${this.isDeduction}&deductionCore=${deductionCore}&jumptime=${new Date()}`;
window.history.replaceState(null, '', url);
return;
}
})
}
this.getunifiedPay(param)
//#endif
}
},
getunifiedPay(param){
api.unifiedPay(param).then((res) => {
const data = res['data'];
this.paymentBtnDisabled = false;
if (res['success']) {
if (data.orderStatus != null && data.orderStatus != '') {
uni.navigateTo({
url: `/pages/orderStatus/orderStatus?orderId=${this.orderId}&fileId=${this.fileId}&orderStatus=2&userId=${this.userId}`
})
return false
}
this.payForm = res['data']['aliOrderString'];
this.$nextTick(() => {
console.log(document.forms)
document.forms['punchout_form'].submit();
})
} else {
uni.showModal({
content: res['message'],
success: function(res) {
if (res.confirm) {
console.log('用户点击确定');
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
}
})
},
// 积分查询
queryByUserIdFortuneStatistic(){
api.queryByUserIdFortuneStatistic({userId:this.userId}).then(res=>{
if(res['success']){
queryByUserIdFortuneStatistic() {
api.queryByUserIdFortuneStatistic({
userId: this.userId
}).then(res => {
if (res['success']) {
this.intergralInfo = res['data'];
this.intergralInfo.preFortune = 1.0;
}
})
},
// 课程详情页面
courseDetail(){
api.courseDetail({fileId:this.fileId,userId:this.userId}).then(res=>{
console.log('课程详情',res);
if(res['success']){
this.courseInfoItem = res['data']['data'];
courseDetail() {
api.courseDetail({
fileId: this.fileId,
userId: this.userId
}).then(res => {
console.log('课程详情', res);
if (res['success']) {
this.courseInfoItem = res['data']['data'];
}
})
},
// 选择支付方式
selectPaymentMethod(value){
selectPaymentMethod(value) {
this.paymentMethod = value;
},
// 从下往上弹出
toggle(val,type) {
toggle(val, type) {
// type 1为积分抵扣规则,2为优惠详情
this.popupType = val;
// open 方法传入参数 等同在 uni-popup 组件上绑定 type属性
if(this.popupType===3){
if(this.isDeduction){
this.$refs.popup1.open(type);
if (this.popupType === 3) {
if (this.isDeduction) {
this.$refs.popup1.open(type);
}
}else{
} else {
this.$refs.popup.open(type);
}
if(this.popupType===1){
if (this.popupType === 1) {
this.popupTitle = '积分抵扣规则'
}else if(this.popupType===2){
} else if (this.popupType === 2) {
this.popupTitle = '优惠详情'
}else if(this.popupType===3){
} else if (this.popupType === 3) {
this.popupTitle = '积分兑换'
}
},
// 关闭弹出层
closePopup(val){
if(val===1){
closePopup(val) {
if (val === 1) {
this.$refs.popup.close()
}else{
} else {
this.$refs.popup1.close()
}
},
// 选择是否抵扣
selectDeduction(type){
this.isDeduction = type;
selectDeduction(type) {
this.isDeduction = String(type);
},
// 确认积分兑换
confirmIntergralDeduction(){
confirmIntergralDeduction() {
},
},
onLoad(option){
onLoad(option) {
this.fileId = option.fileId;
this.orderId = option.orderId;
if(option.userId){
if (option.userId) {
this.userId = option.userId
}
this.courseDetail();
this.queryByUserIdFortuneStatistic()
this.deviceType = common.checkDeviceType();
if(this.deviceType == 3){
if (this.deviceType == 3) {
this.paymentMethod = 1;
}
this.isRedirect = option.isRedirect;
if(this.isRedirect == 1){
if (this.isRedirect == 1) {
this.deductionCore = option.deductionCore;
this.amount = Number(option.amount);
this.isDeduction = option.isDeduction;
this.isDeduction = String(option.isDeduction);
this.calculatedPrice = Number(this.amount);
console.log(JSON.stringify(option))
setTimeout(()=>{
setTimeout(() => {
this.pay();
},500)
}, 500)
}
},
mounted() {
}
mounted() {}
}
</script>
<style lang="scss">
.container{
.container {
position: relative;
height: 95vh;
.courseItemBox{
.courseItemBox {
padding: 20rpx 30rpx;
background-color: #fff;
}
.popup-content{
.title{
.popup-content {
.title {
display: flex;
justify-content: space-between;
align-items: baseline;
h3{
h3 {
text-align: center;
color: #333;
font-size: 32rpx;
margin-bottom: 30rpx;
}
.iconfont{
.iconfont {
color: #999;
}
}
text{
text {
color: #666;
font-size: 30rpx;
}
.deductionInfoItem{
.deductionInfoItem {
display: flex;
justify-content: space-between;
align-items: center;
......@@ -463,20 +508,24 @@
border-radius: 20rpx;
min-height: 90rpx;
margin-top: 30rpx;
.integralInfoBox{
.integralInfoBox {
display: flex;
flex-direction: column;
margin-left: 10rpx;
text{
text {
font-size: 30rpx;
color: #333333;
}
.deductionCount{
.deductionCount {
font-size: 36rpx;
color: #F15A1F;
}
}
.selectRadio{
.selectRadio {
color: #D8D8D8;
width: 40rpx;
height: 40rpx;
......@@ -486,24 +535,28 @@
justify-content: center;
align-items: center;
}
&.actived{
&.actived {
border: 3rpx solid #20269B;
background-color: #fff;
.selectRadio{
.selectRadio {
background-color: #20269B;
color: #fff;
}
}
}
.integralDeductionContent{
.intergralItem{
.integralDeductionContent {
.intergralItem {
display: flex;
justify-content: space-between;
margin-bottom: 10rpx;
}
}
.confirmBtn{
.confirmBtn {
border-radius: 80rpx;
height: 80rpx;
width: 60%;
......@@ -515,25 +568,30 @@
align-items: center;
}
}
.popup1-content{
.popup1-content {
padding: 30rpx 34rpx 20rpx 42rpx;
border-radius: 20rpx;
.title{
.title {
display: flex;
justify-content: space-between;
align-items: baseline;
h3{
h3 {
text-align: center;
color: #333;
font-size: 32rpx;
margin-bottom: 30rpx;
}
.iconfont{
.iconfont {
color: #999;
}
}
.integralDeductionContent{
.intergralItem{
.integralDeductionContent {
.intergralItem {
display: flex;
justify-content: space-between;
color: #333;
......@@ -541,7 +599,8 @@
margin-bottom: 10rpx;
}
}
.confirmBtn{
.confirmBtn {
border-radius: 80rpx;
height: 80rpx;
width: 60%;
......@@ -553,64 +612,81 @@
align-items: center;
}
}
.priceInfoContent,.paymentMethodContent,.totalContent{
.priceInfoContent,
.paymentMethodContent,
.totalContent {
background-color: #fff;
margin: 0 10rpx;
padding: 20rpx;
}
.priceInfoContent{
view{
.priceInfoContent {
view {
display: flex;
justify-content: space-between;
text{
&:last-child{
text {
&:last-child {
font-weight: bold;
}
&.integralBox{
&.integralBox {
color: #FA6900;
font-weight: normal;
.iconfont{
.iconfont {
color: #999;
}
}
}
.iconfont{
.iconfont {
margin-left: 10rpx;
}
}
}
.priceInfoContent,.paymentMethodContent{
.priceInfoContent,
.paymentMethodContent {
border-bottom: 5px solid #fbfbfb;
color: #333;
h4{
h4 {
font-size: 32rpx;
margin-bottom: 20rpx;
}
view{
view {
margin-bottom: 10rpx;
}
}
.paymentMethodContent{
.paymentItem{
.paymentMethodContent {
.paymentItem {
display: flex;
align-items: center;
justify-content: space-between;
view{
view {
display: flex;
align-items: center;
}
.icon-zhifubao{
.icon-zhifubao {
color: #5A9EF7;
font-size: 60rpx;
margin-right: 20rpx;
}
.icon-py_weixinzhifu{
.icon-py_weixinzhifu {
color: #09BB07;
font-size: 60rpx;
margin-right: 20rpx;
}
.selectRadio{
.selectRadio {
width: 40rpx;
height: 40rpx;
display: flex;
......@@ -619,15 +695,17 @@
border-radius: 50%;
border: 1px solid #D8D8D8;
color: transparent;
&.actived{
&.actived {
background-color: #0A2F99;
color: #fff;
}
}
}
}
.totalContent{
.totalContent {
position: absolute;
bottom: 0;
left: 0;
......@@ -637,67 +715,73 @@
align-items: center;
justify-content: space-between;
box-sizing: border-box;
.priceInfoBox{
.priceInfoBox {
font-size: 30rpx;
color: #333;
view:first-child{
view:first-child {
margin-bottom: 10rpx;
}
}
.confirmOrder{
background-color: #20269B;
color: #fff;
padding: 14rpx 38rpx;
border-radius: 80rpx;
.confirmOrder {
background-color: #20269B;
color: #fff;
padding: 14rpx 38rpx;
border-radius: 80rpx;
}
.gray{
.gray {
background: #666;
}
}
}
.markBox {
position: fixed;
left: 0;
top: 0;
bottom: 0;
right: 0;
width: 100%;
height: 100%;
color: #fff;
display: flex;
justify-content: flex-end;
z-index: 100000;
background: rgba(0, 0, 0, 0.8);
}
.markBox {
position: fixed;
left: 0;
top: 0;
bottom: 0;
right: 0;
width: 100%;
height: 100%;
color: #fff;
display: flex;
justify-content: flex-end;
z-index: 100000;
background: rgba(0, 0, 0, 0.8);
}
// .iconfont {
// position: absolute;
// right: 8%;
// font-size: 40px;
// top: 2px;
// font-weight: bold;
// }
.guideImgBox {
margin: 20px auto;
uni-image{
width: 25%!important;
position: absolute;
right: 0;
top:0;
}
}
.tips {
margin-top: 20%;
padding: 0 30px;
}
.tips p {
font-size: 18px;
margin-top: 10px;
text-align: justify;
letter-spacing: 1px;
}
// .iconfont {
// position: absolute;
// right: 8%;
// font-size: 40px;
// top: 2px;
// font-weight: bold;
// }
.guideImgBox {
margin: 20px auto;
uni-image {
width: 25% !important;
position: absolute;
right: 0;
top: 0;
}
}
.tips {
margin-top: 20%;
padding: 0 30px;
}
.tips p {
font-size: 18px;
margin-top: 10px;
text-align: justify;
letter-spacing: 1px;
}
</style>
......@@ -79,13 +79,15 @@
<script>
import api from "@/api/api";
import courseItem from "@/components/courseItem/courseItem.vue";
import {fmdata} from '@/util/currentDate.js'
export default {
components:{
courseItem
},
data() {
return {
queryDate:`${new Date().getFullYear()}-${new Date().getMonth() + 1}`,
queryDate: fmdata(new Date(),'M'),
// queryDate:`${new Date().getFullYear()}-${new Date().getMonth() + 1 < 10 ? '0' + (new Date().getMonth() + 1): new Date().getMonth() + 1}`,
maxDate:`${new Date().getFullYear()}-${new Date().getMonth() + 1}`,
userId: uni.getStorageSync('cffp_userId'),
coursesCountInfos:{},
......
export function fmdata(val, filets) {
var date = new Date(Number(val)); //时间戳为10位需*1000,时间戳为13位的话不需乘1000
var Y = date.getFullYear();
var M = (date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1);
// var D = date.getDate() + " ";
var D = (date.getDate() < 10 ? "0" + (date.getDate()) : date.getDate()) + " ";
var h = date.getHours() + ":";
var m = date.getMinutes() + ":";
var s = (date.getSeconds() < 10 ? "0" + (date.getSeconds()) : date.getSeconds());
if (filets == 'D') {
return Y + "-" + M + "-" + D;
}
if (filets == 'M') {
return Y + "-" + M;
}
if (filets == 'Y') {
return Y;
}
// return Y + M + D + h + m + s;
}
export function fmdataTime(val) {
var date = new Date(Number(val)); //时间戳为10位需*1000,时间戳为13位的话不需乘1000
var Y = date.getFullYear() + "-";
var M = (date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1) + "-";
// var D = date.getDate() + " ";
var D = (date.getDate() < 10 ? "0" + (date.getDate()) : date.getDate()) + " ";
var h = date.getHours() + ":";
// var m = date.getMinutes() + ":";
var m = (date.getMinutes() < 10 ? "0" + (date.getMinutes()) : date.getMinutes()) + ":";
var s = (date.getSeconds() < 10 ? "0" + (date.getSeconds()) : date.getSeconds());
return h + m + s;
}
// format(date, fmt) {
// let ret;
// const opt = {
// "Y+": date.getFullYear().toString(), // 年
// "m+": (date.getMonth() + 1).toString(), // 月
// "d+": date.getDate().toString(), // 日
// "H+": date.getHours().toString(), // 时
// "M+": date.getMinutes().toString(), // 分
// "S+": date.getSeconds().toString() // 秒
// // 有其他格式化字符需求可以继续添加,必须转化成字符串
// };
// for (let k in opt) {
// ret = new RegExp("(" + k + ")").exec(fmt);
// if (ret) {
// fmt = fmt.replace(
// ret[1],
// ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, "0")
// );
// }
// }
// // str=str.Substring(0,i);
// return fmt;
// },
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment