|
- // 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: "",
- merOrderId: "",
- startTime: '',
- endTime: "",
- mallTenantId: "",
- pickedAddress: "请选择地址",
- isDetail: false,
- pickedAddressDetail: "",
- pickedDate: "请选择日期",
- pickedStartTime: "请选择",
- pickedEndTime: "请选择",
- reservationMerchantName: "",
- describeStr: "",
- mallList: [],
- merchantId: "",
- currentIndex: "",
- status: "",
- isShowBtns: false,
- latitude: "",
- longitude: "",
- shopItem: null
- },
- onLoad(options) {
- console.log(options, 'options')
-
- const mallTenantId = tt.getStorageSync('mallTenantId');
- if (mallTenantId) {
- this.setData({
- mallTenantId
- })
- }
-
- const date = (new Date()).getTime()
- const nowDate = util.timestampToTime(date, 'YYYY-MM-DD')
- const startTime = util.timestampToTime(options.startTime * 1, 'YYYY-MM-DD')
-
- console.log(nowDate, startTime, 'time');
-
- const finalStartTime = options.startTime * 1 > date * 1 ? startTime : nowDate
-
- console.log(finalStartTime, 'finalStartTime');
-
- // const mallList = [{
- // merchantName: "1家帮汇家政保洁(河池市庆远镇)",
- // latitude: 50.277748,
- // longitude: 119.996078,
- // id: 1
- // }, {
- // merchantName: "2家帮汇家政保洁(河池市庆远镇)",
- // latitude: 35.277748,
- // longitude: 119.996078,
- // id: 2
- // }, {
- // merchantName: "3家帮汇家政保洁(河池市庆远镇)",
- // id: 3
- // }, {
- // merchantName: "4家帮汇家政保洁(河池市庆远镇)",
- // latitude: 45.277748,
- // longitude: 119.996078,
- // id: 4
- // }]
-
- this.setData({
- id: options.id || '',
- orderId: options.orderId || '',
- merOrderId: options.merOrderId || '',
- startTime: finalStartTime,
- endTime: options.endTime || '',
- })
-
- // this.getCouponMerchant()
-
- if (this.data.id) {
- this.getDetail(this.data.id)
- } else {
- this.setData({
- isShowBtns: true
- })
- }
- },
-
- goSelectShop() {
- const data = this.data
- const id = data.id
- const orderId = data.orderId
- const merOrderId = data.merOrderId
- const startTime = data.startTime
- const endTime = data.endTime
-
- tt.navigateTo({
- url: `/pages2/shopSelect/shopSelect?id=${id}&orderId=${orderId}&merOrderId=${merOrderId}&startTime=${startTime}&endTime=${endTime}`,
- });
- },
-
- setMerchant(e) {
- console.log(e.detail.value, 'e');
- const index = e.detail.value
- this.setData({
- currentIndex: index,
- merchantId: this.data.mallList[index].id,
- reservationMerchantName: ''
- })
- console.log(this.data.currentIndex, this.data.merchantId);
- },
-
- /**
- * 获得经纬度
- */
- getLocation() {
- console.log('getLocation');
- let that = this;
- tt.getLocation({
- type: "wgs84",
- // isHighAccuracy: true,
- success: function (res) {
- console.log(res, 'getLocation')
- that.setData({
- latitude: res.latitude,
- longitude: res.longitude,
- })
- const latitudeNow = res.latitude
- const longitudeNow = res.longitude
-
- const mallLocationArr = []
- const mallList = that.data.mallList
- mallList.forEach((item, index) => {
- const obj = {
- latitude: item.latitude || false,
- longitude: item.longitude || false,
- id: item.id,
- index: index
- }
- mallLocationArr.push(obj)
- })
- console.log(mallLocationArr, 'mallLocationArr');
-
- const tempArr = mallList
- const bloobArr = []
-
- mallLocationArr.forEach((item, index) => {
- const distanceData = that.getDistances(latitudeNow, longitudeNow, item.latitude, item.longitude)
- tempArr[index].distance_str = distanceData.distance_str
- tempArr[index].distanceName = tempArr[index].merchantName + ' ' + distanceData.distance_str
- tempArr[index].distance = distanceData.distance
- bloobArr.push(tempArr[index])
- })
-
- const finalSortMallList = that.bloob(bloobArr)
- console.log(finalSortMallList, 'finalSortMallList');
- that.setData({
- mallList: finalSortMallList
- })
- },
- // 拒绝提供定位权限
- fail: error => {
- console.log(error, 'error');
- const mallList = that.data.mallList
- mallList.forEach(item => {
- item.distanceName = item.merchantName
- })
-
- that.setData({
- mallList
- })
-
- },
- complete: finish => {
- let isSuccess = 0
- const mallList = that.data.mallList
- mallList.forEach(item => {
- if (item.distance_str) {
- isSuccess = 1
- }
- })
- if (!isSuccess) {
- tt.showToast({
- title: '定位失败!',
- icon: "fail"
- });
- }
- }
- })
- },
-
- getCouponMerchant() { //获取适用门店
- const that = this
- Http.get({
- url: config.api.orderDetail,
- data: {
- orderId: that.data.merOrderId,
- mallTenantId: that.data.mallTenantId || ''
- }
- }).then(res => {
- const couponChannelId = res.data.orders[0].couponChannelId
-
- Http.get({
- url: config.api.couponMerchant,
- data: {
- couponChannelId,
- mallTenantId: that.data.mallTenantId || ''
- }
- }).then(res => {
- const keys = Object.keys(res.data)
- const mallList = []
- let i = 0
- keys.forEach(item => {
- const arr = item.split('|')
- const obj = {
- tenantId: arr[0],
- mallName: arr[1],
- merchantVoList: res.data[item],
- expand: false
- }
- if (i == 0) {
- obj.expand = true
- }
- mallList.push(obj)
- i++
- })
- that.setData({
- mallList: mallList[0].merchantVoList
- })
- console.log(that.data.mallList, 'mallList');
- that.getLocation()
- })
- }).catch(err => {
-
- })
- },
-
- chooseAddress() {
- if (!this.data.isShowBtns) return
- let that = this;
- tt.chooseLocation({
- success: function (res) {
- that.setData({
- pickedAddress: res.address,
- isDetail: true
- })
- },
- fail: function (error) {
- console.log(error)
- that.setData({
- isDetail: true
- })
- tt.showToast({
- title: '请点击右上角:更多-权限设置-开启地理位置授权',
- icon: 'none',
- duration: 4000,
- success: () => {
- setTimeout(() => {
- tt.showToast({
- title: '或直接填写详细地址',
- icon: 'none',
- duration: 3000,
- });
- }, 4000);
- }
- });
- },
- complete: function (data) {}
- })
- },
-
- chooseAddressDetail() {
- this.setData({
- pickedAddressDetailFlag: false
- })
- },
-
- 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
- })
- },
-
-
- inputAddressDetail(e) {
- this.setData({
- pickedAddressDetail: e.detail.value
- })
- },
-
- describing(e) {
- this.setData({
- describeStr: e.detail.value
- })
- },
-
- confirm() {
- const tempData = this.data
-
- if (tempData.pickedAddress == '请选择地址' && !tempData.pickedAddressDetail) {
- 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,
- detailedAddress: tempData.pickedAddressDetail,
- startDate: tempData.pickedDate + " " + tempData.pickedStartTime + ":00",
- endDate: tempData.pickedDate + " " + tempData.pickedEndTime + ":00",
- describeStr: tempData.describeStr,
- mallTenantId: tempData.mallTenantId || '',
- reservationMerchantId: tempData.merchantId
- }
-
- if (this.data.id) {
- data.id = this.data.id
- }
-
- if (this.data.status == 1 || 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'
- });
- })
- },
-
- getDetail(id) {
- const that = this
- Http.get({
- url: config.api.getOrderReservationDetail,
- data: {
- id,
- mallTenantId: this.data.mallTenantId || ''
- }
- }).then(res => {
- console.log(res, 'getOrderReservationDetail');
- const status = res.data.status
- that.setData({
- pickedAddress: res.data.userAddress || '请选择地址',
- pickedAddressDetail: res.data.detailedAddress,
- isDetail: true,
- 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,
- appointmentText: res.data.status == 1 ? "重新预约" : "修改预约",
- merchantId: res.data.reservationMerchantId,
- reservationMerchantName: res.data.reservationMerchantName
- })
- if (status == 0 || status == 1 || status == 2 || status == 3 || status == '-1') {
- that.setData({
- isShowBtns: true
- })
- }
- }).catch(err => {
- console.log(err, 'getOrderReservationDetail');
- })
- },
-
- /**
- * @description:根据经纬度计算距离
- * @param {*} locationInfo (lat1, lng1, lat2, lng2)
- * @return: distanceObj: { distance , distance_str }
- */
- getDistances(lat1, lng1, lat2, lng2) {
-
- if (lat2 || lng2) {
- function rad(num) {
- return num * Math.PI / 180.0;
- }
- var radLat1 = rad(lat1);
- var radLat2 = rad(lat2);
- var a = radLat1 - radLat2;
- var b = rad(lng1) - rad(lng2);
- var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
- Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
- s = s * 6378.137;
- s = Math.round(s * 10000) / 10000;
-
- var distance = s;
- var distance_str = "";
-
- if (parseInt(distance) >= 1) {
- distance_str = distance.toFixed(2) + "km";
- } else if (!arseInt(distance)) {
- return false
- } else {
- distance_str = (distance * 1000).toFixed(2) + "m";
- }
-
- let objData = {
- distance: distance,
- distance_str: distance_str
- }
- return objData
- } else {
- let objData = {
- distance: Infinity,
- distance_str: ''
- }
- return objData
- }
-
- },
-
- bloob(arr) {
- const tempArr = arr
- for (let i = 0; i < tempArr.length - 1; i++) {
- for (let j = 0; j < tempArr.length - 1 - i; j++) {
- if (tempArr[j].distance > tempArr[j + 1].distance) {
- let temp = tempArr[j];
- tempArr[j] = tempArr[j + 1];
- tempArr[j + 1] = temp;
- }
- }
- }
- return tempArr
- },
-
- onShow() {
- const shopItem = app.globalData.shopItem
- if (shopItem) {
- this.setData({
- shopItem,
- merchantId: shopItem.id,
- reservationMerchantName: ""
- })
- console.log(this.data.shopItem, 'shopItem');
- app.globalData.shopItem = null
- }
- }
- })
|