소스 검색

预约模块

product
HolyKnightIX 2 년 전
부모
커밋
3e6729d8a4
14개의 변경된 파일542개의 추가작업 그리고 58개의 파일을 삭제
  1. BIN
      assets/images/appointment.png
  2. +16
    -0
      config/config.js
  3. +236
    -1
      package2/pages/appointment/appointment.js
  4. +3
    -0
      package2/pages/appointment/appointment.json
  5. +35
    -1
      package2/pages/appointment/appointment.ttml
  6. +65
    -1
      package2/pages/appointment/appointment.ttss
  7. +12
    -12
      pages/coupon/detail/index.js
  8. +2
    -0
      pages/coupon/detail/index.ttml
  9. +4
    -0
      pages/coupon/detail/index.ttss
  10. +55
    -13
      pages/order/detail/index.js
  11. +12
    -6
      pages/order/detail/index.ttml
  12. +11
    -0
      pages/order/detail/index.ttss
  13. +12
    -0
      project.private.config.json
  14. +79
    -24
      utils/util.js

BIN
assets/images/appointment.png 파일 보기

Before After
Width: 800  |  Height: 194  |  Size: 28 KiB

+ 16
- 0
config/config.js 파일 보기

@@ -160,6 +160,22 @@ var config = {
* 订单退款状态
*/
getRefundStatus: "/order/getRefundStatus",
/**
* 查询预约状态
*/
getUserReservation: "/wxCouponOrderReservation/getUserReservation",
/**
* 保存/更改预约信息
*/
saveOrderReservation: "/wxCouponOrderReservation/saveOrUpdate",
/**
* 查询预约详情
*/
getOrderReservationDetail: "/wxCouponOrderReservation/detail",
/**
* 取消预约
*/
cancelReservation: "/wxCouponOrderReservation/cancelReservation",
/**
* 获取im客服id
*/


+ 236
- 1
package2/pages/appointment/appointment.js 파일 보기

@@ -1,9 +1,244 @@
// c:\Users\Holy-Knight-IX\Desktop\Working Space\4.TikTok-MiniPro\ttc\package2\pages\appointment\appointment.js
let config = require("../../../config/config.js");
let util = require("../../../utils/util");
let Http = require("../../../utils/HttpBasics");
let app = getApp();
const imgurl = require("../../../utils/imgurl");
Page({
data: {
appointmentText: "确认预约",
id: "",
orderId: "",
startTime: "",
endTime: "",
mallTenantId: "",
pickedAddress: "请选择地址",
pickedDate: "请选择日期",
pickedStartTime: "请选择",
pickedEndTime: "请选择",
describeStr: "",
status: ""
},
onLoad(options) {
console.log(options, 'options');
this.setData({
id: options.id || '',
orderId: options.orderId || '',
startTime: options.startTime || '',
endTime: options.endTime || ''
})

const mallTenantId = tt.getStorageSync('mallTenantId');
if (mallTenantId) {
this.setData({
mallTenantId
})
}

if (this.data.id) {
this.getDetail(this.data.id)
}
},

chooseAddress() {
let that = this;
tt.chooseLocation({
success: function (res) {
that.setData({
pickedAddress: res.address,
})
},
fail: function (error) {
console.log(error)
},
complete: function (data) {}
})
},

chooseDate(e) {
console.log(e.detail.value, 'e');
this.setData({
pickedDate: e.detail.value
})
},

chooseStartTime(e) {
console.log(e.detail.value, 'e');
this.setData({
pickedStartTime: e.detail.value
})
},

chooseEndTime(e) {
console.log(e.detail.value, 'e');
this.setData({
pickedEndTime: e.detail.value
})
},

describing(e) {
this.setData({
describeStr: e.detail.value
})
},

confirm() {
const tempData = this.data

if (tempData.pickedAddress == '请选择地址') {
tt.showToast({
title: '请选择地址!',
icon: 'fail'
});
return
}

if (tempData.pickedDate == '请选择日期') {
tt.showToast({
title: '请请选择日期!',
icon: 'fail'
});
return
}

if (tempData.pickedStartTime == '请选择') {
tt.showToast({
title: '请起始时间!',
icon: 'fail'
});
return
}

if (tempData.pickedEndTime == '请选择') {
tt.showToast({
title: '请结束时间!',
icon: 'fail'
});
return
}

const data = {
couponOrderId: tempData.orderId,
userAddress: tempData.pickedAddress,
startDate: tempData.pickedDate + " " + tempData.pickedStartTime + ":00",
endDate: tempData.pickedDate + " " + tempData.pickedEndTime + ":00",
describeStr: tempData.describeStr,
mallTenantId: tempData.mallTenantId || ''
}

if (this.data.id) {
data.id = this.data.id
}

if (this.data.status == 1) {
data.status = 0
}

console.log(data, 'data');
this.saveOrderReservation(data)
},

cancel() {
tt.showModal({
title: "取消预约",
content: "确定要取消预约吗?",
showCancel: true,
success: (res) => {
if (res.confirm) {
this.cancelReservation(this.data.id)
}
if (res.cancel) {
return
}
},
fail: (res) => {

},
});

},

cancelReservation(id) {
const that = this
Http.post({
url: config.api.cancelReservation,
data: {
id,
mallTenantId: this.data.mallTenantId || ''
}
}).then(res => {
console.log(res, 'cancelReservation');
tt.showToast({
title: '取消成功!',
icon: 'success',
duration: 2000,
success: (res) => {
setTimeout(() => {
tt.navigateBack();
}, 1500);
},
fail: (res) => {

},
});
}).catch(err => {
console.log(err, 'cancelReservation');
tt.showToast({
title: err.message,
icon: 'none'
});
})
},

saveOrderReservation(data) {
Http.post({
url: config.api.saveOrderReservation,
data
}).then(res => {
console.log(res, 'saveOrderReservation');
tt.showToast({
title: '预约成功!',
icon: 'success',
duration: 2000,
success: (res) => {
setTimeout(() => {
tt.navigateBack();
}, 1500);
},
fail: (res) => {

},
});
}).catch(err => {
console.log(err, 'saveOrderReservation');
tt.showToast({
title: err.message,
icon: 'none'
});
})
},
onLoad: function (options) {

getDetail(id) {
const that = this
Http.get({
url: config.api.getOrderReservationDetail,
data: {
id,
mallTenantId: this.data.mallTenantId || ''
}
}).then(res => {
console.log(res, 'getOrderReservationDetail');
that.setData({
pickedAddress: res.data.userAddress || '请选择地址',
pickedDate: util.timestampToTime(res.data.startDate, 'YYYY-MM-DD'),
pickedStartTime: util.timestampToTime(res.data.startDate, 'hh:mm'),
pickedEndTime: util.timestampToTime(res.data.endDate, 'hh:mm'),
describeStr: res.data.describeStr,
status: res.data.status,
appointmentText: res.data.status == 1 ? "重新预约" : "修改预约"
})
}).catch(err => {
console.log(err, 'getOrderReservationDetail');
})
}
})

+ 3
- 0
package2/pages/appointment/appointment.json 파일 보기

@@ -1,3 +1,6 @@
{
"navigationBarTitleText": "订单预约",
"navigationBarBackgroundColor": "#fff",
"navigationBarTextStyle": "black",
"usingComponents": {}
}

+ 35
- 1
package2/pages/appointment/appointment.ttml 파일 보기

@@ -1,2 +1,36 @@
<!-- c:\Users\Holy-Knight-IX\Desktop\Working Space\4.TikTok-MiniPro\ttc\package2\pages\appointment\appointment.ttml -->
<text>c:\Users\Holy-Knight-IX\Desktop\Working Space\4.TikTok-MiniPro\ttc\package2\pages\appointment\appointment.ttml</text>
<view class="continer">
<view tt:if="{{ pickedAddress != '请选择地址' }}" class="addressPicker" bindtap="chooseAddress">
<text>选择服务地点:</text>
<text>
<text class="address">{{ pickedAddress }}</text>
</text>
</view>

<view tt:if="{{ pickedAddress == '请选择地址' }}" class="addressPickerFlex" bindtap="chooseAddress">
<text>选择服务地点:</text>
<text>
<text class="address">{{ pickedAddress }}</text>
</text>
</view>

<view class="datePickerFlex">
<picker mode="date" start="{{ startTime }}" end="{{ endTime }}" bindchange='chooseDate'>选择服务日期:</picker>
<picker mode="date" start="{{ startTime }}" end="{{ endTime }}" bindchange='chooseDate' class="address">
{{ pickedDate }}</picker>
</view>

<view class="datePickerFlex">
<picker mode="time" bindchange='chooseTime'>预计上门时间:</picker>
<picker mode="time" bindchange='chooseStartTime' class="address">{{ pickedStartTime }}</picker>
-
<picker mode="time" start="{{ pickedStartTime }}" bindchange='chooseEndTime' class="address">{{ pickedEndTime }}
</picker>
</view>

<view class="textarea">
<textarea class="describe" placeholder="备注:说点什么吧" bindinput="describing" value="{{ describeStr }}"></textarea>
</view>
<button class="confirm" type="primary" bindtap="confirm">{{ appointmentText }}</button>
<button tt:if="{{ id && status != 1 }}" type="primary" bindtap="cancel">取消预约</button>
</view>

+ 65
- 1
package2/pages/appointment/appointment.ttss 파일 보기

@@ -1 +1,65 @@
/* c:\Users\Holy-Knight-IX\Desktop\Working Space\4.TikTok-MiniPro\ttc\package2\pages\appointment\appointment.ttss */
/* c:\Users\Holy-Knight-IX\Desktop\Working Space\4.TikTok-MiniPro\ttc\package2\pages\appointment\appointment.ttss */
page {
font-size: 30rpx;
box-sizing: border-box !important;
}

.continer {
width: 90%;
height: 100%;
margin: auto;
}

.addressPicker {
background-color: #fff;
border-radius: 20rpx;
padding: 30rpx;
margin: 35rpx auto;
}

.address {
color: #8a8a8a;
}

.addressPickerFlex {
display: flex;
justify-content: space-between;
background-color: #fff;
border-radius: 20rpx;
padding: 30rpx;
margin: 35rpx auto;
}


.datePicker {
background-color: #fff;
border-radius: 20rpx;
padding: 30rpx;
margin: 35rpx auto;
}

.datePickerFlex {
display: flex;
justify-content: space-between;
background-color: #fff;
border-radius: 20rpx;
padding: 30rpx;
margin: 35rpx auto;
}

.textarea {
margin: 35rpx auto;
overflow: hidden;
border-radius: 20rpx;
}

.describe {
width: 100%;
background-color: #fff;
padding: 25rpx;
}

.confirm {
background-color: #3c89ff;
margin-bottom: 20rpx;
}

+ 12
- 12
pages/coupon/detail/index.js 파일 보기

@@ -306,7 +306,7 @@ Page({
let param = {
id: this.data.cardData.couponOrderId,
cUserId: this.data.cardData.cuserId,
updateDate: util.formatTime(Number(that.data.cardData.updateDate), "yyyy-MM-dd hh:mm:ss")
updateDate: util.timestampToTime(Number(that.data.cardData.updateDate), "YYYY-MM-DD hh:mm:ss")
}
Http.get({
url: config.api.queryCardStatus,
@@ -327,7 +327,7 @@ Page({
let param = {
id: this.data.cardData.couponOrderId,
cUserId: this.data.cardData.cuserId,
updateDate: util.formatTime(Number(this.data.cardData.updateDate), "yyyy-MM-dd hh:mm:ss")
updateDate: util.timestampToTime(Number(this.data.cardData.updateDate), "YYYY-MM-DD hh:mm:ss")
}

this.setData({
@@ -788,7 +788,7 @@ Page({
clearInterval(that.data.setInterval)
}
if (res.data.actStatus == 0) {
var beginTime = util.formatTime(res.data.beginTime, "yyyy-MM-dd hh:mm:ss");
var beginTime = util.timestampToTime(res.data.beginTime, "YYYY-MM-DD hh:mm:ss");
if (util.timechuo(beginTime).indexOf('-') == 0) {
that.setData({
beginTime: "活动已结束",
@@ -799,7 +799,7 @@ Page({
});
}
} else {
var endTime = util.formatTime(res.data.endTime, "yyyy-MM-dd hh:mm:ss");
var endTime = util.timestampToTime(res.data.endTime, "YYYY-MM-DD hh:mm:ss");
if (util.timechuo(endTime).indexOf('-') == 0) {
that.setData({
endtime: "活动已结束",
@@ -818,8 +818,8 @@ Page({
if (res.data.type == 10) {
that.setData({
salePriceStr: res.data.salePriceStr,
pickEndDate: util.formatTime(res.data.pickEndDate, "yyyy-MM-dd"),
pickStartDate: util.formatTime(res.data.pickStartDate, "yyyy-MM-dd"),
pickEndDate: util.timestampToTime(res.data.pickEndDate, "YYYY-MM-DD"),
pickStartDate: util.timestampToTime(res.data.pickStartDate, "YYYY-MM-DD"),
priceStr: res.data.priceStr,
tailPriceStr: res.data.tailPriceStr,
origPriceStr: res.data.origPriceStr
@@ -827,12 +827,12 @@ Page({
}
if (res.data.validType == 1) {
that.setData({
soldStartTime: util.formatTime(res.data.soldStartTime, "yyyy-MM-dd") || null,
soldEndTime: util.formatTime(res.data.soldEndTime, "yyyy-MM-dd") || null,
validStartDate: util.formatTime(res.data.validStartDate, "yyyy-MM-dd"),
validEndDate: util.formatTime(res.data.validEndDate, "yyyy-MM-dd"),
pickStartDate: util.formatTime(res.data.pickStartDate, "yyyy-MM-dd"),
pickEndDate: util.formatTime(res.data.pickEndDate, "yyyy-MM-dd"),
soldStartTime: util.timestampToTime(res.data.soldStartTime, "YYYY-MM-DD") || null,
soldEndTime: util.timestampToTime(res.data.soldEndTime, "YYYY-MM-DD") || null,
validStartDate: util.timestampToTime(res.data.validStartDate, "YYYY-MM-DD"),
validEndDate: util.timestampToTime(res.data.validEndDate, "YYYY-MM-DD"),
pickStartDate: util.timestampToTime(res.data.pickStartDate, "YYYY-MM-DD"),
pickEndDate: util.timestampToTime(res.data.pickEndDate, "YYYY-MM-DD"),
});
} else {
if (res.data.validDays) {


+ 2
- 0
pages/coupon/detail/index.ttml 파일 보기

@@ -138,6 +138,8 @@

<shop tt:if="{{mallList.length>0}}" mallList="{{mallList}}"></shop>

<image tt:if="{{data.type == 69}}" class="alerting" mode='widthFix' src="../../../assets/images/appointment.png">
</image>
<view class='notes'>
<view class="notesH">购买须知</view>
<view class="timeText">使用期</view>


+ 4
- 0
pages/coupon/detail/index.ttss 파일 보기

@@ -377,6 +377,10 @@ button::after {
padding-bottom: 30rpx;
}

.alerting {
width: 100%;
}

.nodesD {
height: 87rpx;
line-height: 87rpx;


+ 55
- 13
pages/order/detail/index.js 파일 보기

@@ -60,7 +60,12 @@ Page({
IMorderId: "",
outOrderId: "",
outRefundOrderId: "",
canIUseRefund: false
canIUseRefund: false,
isAppointment: false,
appointStart: "",
appointEnd: "",
appointmentId: "",
appointmentStatus: ""
},

imCallback(e) {
@@ -175,6 +180,48 @@ Page({
})
},

goAppointment(e) {
const that = this
const orderId = e.currentTarget.dataset.id
const id = this.data.appointmentId
const startTime = that.data.order.validStartDate
const endTime = that.data.order.validEndDate

console.log(startTime, endTime);

tt.navigateTo({
url: `/package2/pages/appointment/appointment?id=${id}&orderId=${orderId}&startTime=${startTime}&endTime=${endTime}`,
});
},

getUserReservation(couponOrderId) {
const that = this
Http.get({
url: config.api.getUserReservation,
data: {
couponOrderId,
mallTenantId: this.data.mallTenantId || ''
}
}).then(res => {
console.log(res, 'getUserReservation');
if (res.data) {
const appointStart = util.timestampToTime(res.data.startDate, 'YYYY-MM-DD hh:mm:ss')
const appointEnd = util.timestampToTime(res.data.endDate, 'hh:mm:ss')
const appointmentId = res.data.id
const appointmentStatus = res.data.status
that.setData({
appointStart,
appointEnd,
appointmentId,
appointmentStatus,
isAppointment: true
})
}
}).catch(err => {
console.log(err, 'getUserReservation');
})
},

getOrderStatus(orderId) {
const that = this
Http.get({
@@ -222,13 +269,6 @@ Page({
})
},

goAppointment(e) {
const id = e.currentTarget.dataset.id
tt.navigateTo({
url: `/package2/pages/appointment/appointment?id=${id}`,
});
},

getIm() { //获取im客服id
const that = this
Http.get({
@@ -259,8 +299,10 @@ Page({
const couponChannelId = res.data.orders[0].couponChannelId

const orderID = res.data.orders[0].id
const cOrderID = res.data.orders[0].couponOrderId

that.getOrderStatus(orderID)
that.getUserReservation(cOrderID)
that.getIm()
const extParam = res.data.extParam || null
if (extParam) {
@@ -394,16 +436,16 @@ Page({
tenantId: res.data.tenantId
})
}
var createDate = util.formatTime(res.data.orders[0].createDate, "yyyy-MM-dd");
var createDate = util.timestampToTime(res.data.orders[0].createDate, "YYYY-MM-DD");
let tempData = res.data.orders[0]
tempData.deliveryInfo = tempData.deliveryInfo ? JSON.parse(tempData.deliveryInfo) : ""
tempData.itemGroup = tempData.itemGroup ? JSON.parse(tempData.itemGroup) : ""

tempData.soldStartTime = util.formatTime(tempData.soldStartTime, "yyyy-MM-dd") || null,
tempData.soldEndTime = util.formatTime(tempData.soldEndTime, "yyyy-MM-dd") || null,
tempData.soldStartTime = util.timestampToTime(tempData.soldStartTime, "YYYY-MM-DD") || null,
tempData.soldEndTime = util.timestampToTime(tempData.soldEndTime, "YYYY-MM-DD") || null,

tempData.validStartDate = util.formatTime(tempData.validStartDate, "yyyy-MM-dd")
tempData.validEndDate = util.formatTime(tempData.validEndDate, "yyyy-MM-dd")
tempData.validStartDate = util.timestampToTime(tempData.validStartDate, "YYYY-MM-DD")
tempData.validEndDate = util.timestampToTime(tempData.validEndDate, "YYYY-MM-DD")

tempData.couponOrderIdS = tempData.couponOrderId ? tempData.couponOrderId.slice(0, 4) + `******` + tempData.couponOrderId.slice(14) : ''



+ 12
- 6
pages/order/detail/index.ttml 파일 보기

@@ -116,14 +116,18 @@
-->
<!-- bindtap="powerDrawer" -->

<view tt:if="{{order.type != 69}}" class='dhCode' data-id="{{order.id}}" bindtap="goAppointment">
<view tt:if="{{order.type == 69 && order.couponOrderStatus == 0}}" class='dhCode' data-id="{{order.couponOrderId}}"
bindtap="goAppointment">
<view style="width:86%;clear: both;">
<text class="fl">预约时间:</text>
<text class="fr" style="color: #d4a971;">点击预约</text>
</view>
<view>
<!-- <image class="spcode" src="{{spcodeUrl}}" mode='widthFix'></image>
<image class="rArrow" src="{{chevronUrl}}" mode='widthFix'></image> -->

<text tt:if="{{ !isAppointment }}" class="fr" style="color: #d4a971;">点击预约</text>
<text tt:if="{{ isAppointment && appointmentStatus == 0 }}" class="fr"
style="color: #d4a971;">{{appointStart}}-{{appointEnd}}</text>
<text
tt:if="{{ isAppointment && ( appointmentStatus == 1 || appointmentStatus == 2 || appointmentStatus == 3 ) }}"
class="fr" style="color: #d4a971;">预约已取消
</text>
</view>
</view>

@@ -210,6 +214,8 @@
</view>
</view>

<image tt:if="{{order.type == 69}}" class="alerting" mode='widthFix' src="../../../assets/images/appointment.png">
</image>

<view class='notes'>
<view class="notesH">


+ 11
- 0
pages/order/detail/index.ttss 파일 보기

@@ -19,6 +19,17 @@ page {
z-index: 99999;
}

.alerting {
width: 100%;
}

.cancelAppoint {
color: #ffffff;
background-color: #ff0000;
border-radius: 5rpx;
padding: 5rpx 3rpx;
}

.serviceBox2 {
width: 50rpx;
height: 50rpx;


+ 12
- 0
project.private.config.json 파일 보기

@@ -56,8 +56,20 @@
"scene": "011007",
"launchFrom": "scan",
"location": "audit"
},
{
"id": 1686207127735,
"name": "预约功能调试",
"pathName": "package2/pages/appointment/appointment",
"query": "id=826355515227168768&startTime=2023-05-29&endTime=2023-06-28",
"scene": "990001",
"launchFrom": "scan",
"location": "qr_code"
}
]
}
},
"setting": {
"mockLogin": false
}
}

+ 79
- 24
utils/util.js 파일 보기

@@ -8,10 +8,11 @@ function convertUTCTimeToLocalTime(UTCDateString) {
if (!UTCDateString) {
return '-';
}
function formatFunc(str) { //格式化显示

function formatFunc(str) { //格式化显示
return str > 9 ? str : '0' + str
}
var date2 = new Date(UTCDateString); //这步是关键
var date2 = new Date(UTCDateString); //这步是关键
var year = date2.getFullYear();
var mon = formatFunc(date2.getMonth() + 1);
var day = formatFunc(date2.getDate());
@@ -20,7 +21,7 @@ function convertUTCTimeToLocalTime(UTCDateString) {
hour = hour >= 24 ? hour - 24 : hour;
hour = formatFunc(hour);
var min = formatFunc(date2.getMinutes());
var dateStr = ' ' + hour + ':' + min ;
var dateStr = ' ' + hour + ':' + min;
return dateStr;
}

@@ -29,15 +30,15 @@ function convertUTCTimeToLocalTime(UTCDateString) {
// return new Date(+new Date(dateee) + 8 * 3600 * 1000).toISOString().replace(/T/g, ' ').replace(/\.[\d]{3}Z/, '');
// }

function moodsText(Num){//人气值处理 Num人气值 返回字符串 处理到万位
function moodsText(Num) { //人气值处理 Num人气值 返回字符串 处理到万位
let sing = ""
if(Num>10000){
sing = (Num/10000).toFixed(2)+"w"
}else{
sing =Num
}
return sing
if (Num > 10000) {
sing = (Num / 10000).toFixed(2) + "w"
} else {
sing = Num
}
return sing
}

const formatTime = (date, fmt) => {
@@ -69,9 +70,9 @@ const formatTime = (date, fmt) => {
if (new RegExp("(" + k + ")").test(fmt))
fmt = fmt.replace(
RegExp.$1,
RegExp.$1.length == 1
? o[k]
: ("00" + o[k]).substr(("" + o[k]).length)
RegExp.$1.length == 1 ?
o[k] :
("00" + o[k]).substr(("" + o[k]).length)
);
return fmt;
} catch (error) {
@@ -104,6 +105,7 @@ function qrc(id, code, width, height) {
height: convert_length(height)
});
}

function fmtDate(obj) {
if (typeof obj === 'string' && obj.length === 13) {
obj = Number(obj);
@@ -121,6 +123,57 @@ function fmtDate(obj) {
);
}

/**
* @description 根据时间戳获取时间
* @param {*} timestamp 必传,number类型,时间戳数据(10位及以下,10位至13位);若不传,则返回:“无时间戳”
* @param {*} format 选传,string类型,提供以下时间格式:YYYY-MM-DD hh:mm:ss、YYYY/MM/DD hh:mm:ss、YYYY.MM.DD hh:mm:ss、YYYY MM DD hh:mm:ss、YYYY年MM月DD日 hh:mm:ss、YYYY-MM-DD、YYYY/MM/DD、YYYY.MM.DD、YYYY MM DD、YYYY年MM月DD日、hh:mm:ss、hh:mm;若不传,则默认为:YYYY-MM-DD
* @returns 根据要求的时间格式
* @version V 1.0, Created by YWQ, 2022.10.20
*/
function timestampToTime(timestamp, format) {
//时间戳为10位需*1000,时间戳为13位不需乘1000
const length = timestamp ? timestamp.length : ''
if (length <= 10) {
var date = new Date(timestamp * 1000)
} else {
var date = new Date(timestamp)
}
let Y = String(date.getFullYear())
let M = String(date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1)
let D = String(date.getDate() + 1 < 10 ? '0' + (date.getDate()) : date.getDate())
let h = String(date.getHours() + 1 < 10 ? '0' + (date.getHours()) : date.getHours())
let m = String(date.getMinutes() + 1 < 10 ? '0' + (date.getMinutes()) : date.getMinutes())
let s = String(date.getSeconds() + 1 < 10 ? '0' + (date.getSeconds()) : date.getSeconds())
// return Y + M + D + h + m + s
if (format == "YYYY-MM-DD hh:mm:ss") {
return Y + "-" + M + "-" + D + " " + h + ":" + m + ":" + s
} else if (format == "YYYY/MM/DD hh:mm:ss") {
return Y + "/" + M + "/" + D + " " + h + ":" + m + ":" + s
} else if (format == "YYYY.MM.DD hh:mm:ss") {
return Y + "." + M + "." + D + " " + h + ":" + m + ":" + s
} else if (format == "YYYY MM DD hh:mm:ss") {
return Y + " " + M + " " + D + " " + h + ":" + m + ":" + s
} else if (format == "YYYY年MM月DD日 hh:mm:ss") {
return Y + "年" + M + "月" + D + "日" + " " + h + ":" + m + ":" + s
} else if (format == "YYYY-MM-DD") {
return Y + "-" + M + "-" + D
} else if (format == "YYYY/MM/DD") {
return Y + "/" + M + "/" + D
} else if (format == "YYYY.MM.DD") {
return Y + "." + M + "." + D
} else if (format == "YYYY MM DD") {
return Y + " " + M + " " + D
} else if (format == "YYYY年MM月DD日") {
return Y + "年" + M + "月" + D + "日"
} else if (format == "hh:mm:ss") {
return h + ":" + m + ":" + s
} else if (format == "hh:mm") {
return h + ":" + m
} else {
return Y + "-" + M + "-" + D
}
}

//计算下单的时间与现在的时间的
function timechuo(startTime) {
var s1 = new Date(startTime.replace(/-/g, "/"));
@@ -137,20 +190,20 @@ function timechuo(startTime) {
var minute = Math.floor(runTime / 60);
var runTime = runTime % 60;
var second = runTime;
if (day && !year && !month){
if (day && !year && !month) {
return (day + '天' + hour + "小时" + minute + "分钟")
} else if (month && !year){
return ((month*30+day) +'天' + hour + "小时" + minute + "分钟")
} else if (month && !year) {
return ((month * 30 + day) + '天' + hour + "小时" + minute + "分钟")
} else if (year) {
return ((year*365 + month*30+ day) + '天' + hour + "小时" + minute + "分钟")
}else{
return ((year * 365 + month * 30 + day) + '天' + hour + "小时" + minute + "分钟")
} else {
return (hour + "小时" + minute + "分钟")
}
}


//计算时间差
function timecha(endTime,startTime) {
function timecha(endTime, startTime) {
var s1 = new Date(endTime.replace(/-/g, "/"));
var s2 = new Date(startTime.replace(/-/g, "/"));
var runTime = parseInt((s1.getTime() - s2.getTime()) / 1000);
@@ -165,8 +218,9 @@ function timecha(endTime,startTime) {
var minute = Math.floor(runTime / 60);
var runTime = runTime % 60;
var second = runTime;
return (month+"月"+day+"天"+hour+"小时"+minute+"分钟")
return (month + "月" + day + "天" + hour + "小时" + minute + "分钟")
}

function isJSON(str) {
if (typeof str == 'string') {
console.log("string")
@@ -202,6 +256,7 @@ module.exports = {
fmtDate: fmtDate,
timechuo: timechuo,
timecha: timecha,
moodsText:moodsText,
convertUTCTimeToLocalTime: convertUTCTimeToLocalTime
};
moodsText: moodsText,
convertUTCTimeToLocalTime: convertUTCTimeToLocalTime,
timestampToTime: timestampToTime
};

불러오는 중...
취소
저장