diff --git a/packageA/pages/my_service/appment_main.js b/packageA/pages/my_service/appment_main.js new file mode 100644 index 0000000..34f6d04 --- /dev/null +++ b/packageA/pages/my_service/appment_main.js @@ -0,0 +1,653 @@ +var e = getApp(), + a = e.globalData.setting, + os = a, + t = e.request, + d = e.globalData; +Page({ + + /** + * 页面的初始数据 + */ + data: { + inurl: a.url, //接口网址 + iurl: a.imghost, //服务器网址 + store: 0, //是否显示服务门店列表 + beautician: 0, //是否显示美容师列表 + beautician_name: "", //选中的美容师名称 + beauticianID: "", //美容师id + bea_index: "", //美容师列表下标 + placeholder: "填写备注", //备注为空的placeholder + store_list: [], //门店列表 + beautician_list: [], //美容师列表 + store_name: "", //选择的服务门店 + fir_pick_index: 0, //选择的门店下标 + curpage: 1, //当前分页数 + pageSize: 8, //页大小 + total: 0, + ismore: 0, //是否加载完毕 + itemId: "", //服务id + project_id: "", //项目id + isScroll: true, //scroll-y是否可以滑动 + key_word: "", //是否按门店文字查询 + is_service_read: 0, //是否调用过门店接口 + is_search: 0, //是否通过key_word调用接口 + is_success: 0, //是否提交成功 + remarks: "", //备注 + storageId: "", //线下门店id + url: "/pages/user/my_service/appment_main", //本页面地址路径用于选择时间页面跳转回来 + buyType: "", //项目类型 + time: "", //选择预约时间 + tment_count: "", //可预约人数 + lat: "", //纬度坐标 + lon: "", //经度坐标 + is_gps: 1, //是否开启gps + validay: "", //服务项目有效期 + is_sub: 0, //判断是否重复提交 + is_textea: 1, //备注是否是可输入 + }, + //控制备注输入 + check_text: function() { + var th = this; + var is_textea = th.data.is_textea; + th.setData({ + is_textea: 1, + beautician: 0 + }) + }, + onclickstore: function() { + var th = this; + var store = th.data.store; + if (store) { + th.setData({ + store: 0, + is_textea: 1 + }) + } else { + th.setData({ + beautician: 0, + store: 1, + is_textea: 0 + }) + if (th.data.store_list.length < 1) { + wx.showLoading({ + title: '加载中', + }) + th.query_store(); + } + } + }, + //输入的备注 + input_remarks: function(e) { + var remarks = e.detail.value; + this.setData({ + remarks: remarks + }) + }, + //提交成功及发送模版代码 + success: function() { + var th = this; + var store = th.data.store_name; //门店名称 + var bea_name = th.data.beautician_name; //美容师名称 + var time = th.data.time; //预约时间 + var is_sub = th.data.is_sub; //是否重复提交 + var url = th.data.inurl + "/api/weshop/marketing/reservation/reservation/insert"; //接口路径 + var serviceId = th.data.itemId; //服务id + var beauticianID = th.data.beauticianID; //美容师id + var buyType = th.data.buyType; //服务项目类型 + var storeId = a.stoid; //商家id + var storageId = th.data.storageId; //门店id + var userId = d.user_id; //用户id + var remarks = th.data.remarks; //用户备注 + var project_id = th.data.project_id; //项目id + var validay = th.data.validay; + var json = { + "arrangeTime": time + ":00", + "beauticianId": beauticianID, + "buyType": buyType, + "effectiveDay": "", + "number": "", + "projectId": project_id, + "remark": remarks, + "serviceId": serviceId, + "states": 0, + "storageId": storageId, + "storeId": storeId, + "userId": userId, + "validay": validay + } + var data = JSON.stringify(json); + wx.request({ + url: url, + data: json, + method: 'post', + header: { + 'content-type': 'application/json' + }, // 设置请求的 header + success: function(res) { + th.setData({ + is_sub: 0 + }) + wx.hideLoading(); + if (res.data.code == 0) { + getApp().my_warnning("预约成功", 1, th); + var store_name = th.data.store_name; //预约门店 + var number = res.data.data.Number; + var temp_url = "/api/wx/open/app/user/sendSubscribeMsg"; //模版接口 + var userinfo = getApp().globalData.userInfo; + var name = d.userInfo.nickname; + var json = { + // "formId": formid, + "keyWord": [{ + "keyword": res.data.data.ServiceName + }, + { + "keyword": time.substring(0, 16) + }, { + "keyword": res.data.data.BeauticianName + }, { + "keyword": res.data.data.StorageName + }, { + "keyword": res.data.data.Address + } + ], + "page": "/pages/user/my_service/tment_details?number=" + number, + "storeId": a.stoid, + "typeId": "1011", + "userId": d.user_id + }; + var data = JSON.stringify(json); + //调用发送预约成功模版接口 + wx.request({ + url: th.data.inurl + temp_url, + data: data, + method: 'post', + header: { + 'content-type': 'application/json' + }, // 设置请求的 header + success: function(data) {} + }) + setTimeout(function() { + wx.redirectTo({ + url: "/pages/user/my_service/tment_details?number=" + number + }); + }, 1000); + } else { + getApp().my_warnning(res.data.msg, 0, th); + th.settime(); + } + } + }) + + }, + //定时显示texteat + settime: function() { + var th = this; + setTimeout(function() { + th.setData({ + is_textea: 1 + }) + }, 2000); + }, + //提交预约 + sub_success: function(e) { + var th = this; + var temp_url = th.data.inurl + "/api/wx/weappSendlist/page"; + var template_id = ""; + if (th.data.is_sub == 1) { + return false; + } + var store = th.data.store_name; //门店名称 + var bea_name = th.data.beautician_name; //美容师名称 + var time = th.data.time; //预约时间 + var is_sub = th.data.is_sub; //是否重复提交 + th.setData({ + is_textea: 0, + is_sub: 1 + }) + //提交预约前的判断 + if (store == "") { + getApp().my_warnning("请选择服务门店", 0, th); + th.setData({ + is_sub: 0 + }) + th.settime(); + return false; + } else if (bea_name == "") { + getApp().my_warnning("请选择美容师", 0, th); + th.setData({ + is_sub: 0 + }) + th.settime(); + return false; + } else if (time == undefined || time == '') { + getApp().my_warnning("请选择预约时间", 0, th); + th.setData({ + is_sub: 0 + }) + th.settime(); + return false; + } else { + var version =""; + //判断微信版本是否达到预约成功订阅的要求 + wx.getSystemInfo({ + success(res) { + version = res.version; + } + }) + wx.showLoading({ + title: '加载中', + }) + if (th.ver(version, '7.0.4') >= 0) { + //获取模版id + getApp().request.promiseGet(temp_url, { + data: { + store_id: a.stoid, + typeid: "1011" + } + }).then(res => { + if (res.data.code == 0 && res.data.data.pageData.length > 0) { + template_id = res.data.data.pageData[0].template_id; + // //授权订阅 + wx.requestSubscribeMessage({ + tmplIds: [template_id], + success(res) { + th.success(); + }, + fail(res) { + th.success(); + } + }) + } else { + th.success(); + } + }) + } else { + // 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示 + wx.showModal({ + title: '提示', + content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。' + }) + th.setData({ + is_sub: 0 + }) + } + + } + }, + //版本判断 + ver:function(v1,v2){ + v1 = v1.split('.') + v2 = v2.split('.') + var num1 = "" ; + var num2 = ""; + var len = Math.max(v1.length, v2.length) + + while (v1.length < len) { + v1.push('0') + } + while (v2.length < len) { + v2.push('0') + } + + for (let i = 0; i < len; i++) { + num1 = parseInt(v1[i]) + num2 = parseInt(v2[i]) + + if (num1 > num2) { + return 1 + } else if (num1 < num2) { + return -1 + } + } + return 0 + }, + goto: function(e) { + var th = this; + th.setData({ + beautician: 0, + is_textea: 0 + }) + if (th.data.store_name == "") { + getApp().my_warnning("请选择服务门店", 0, th); + th.settime(); + } else if (th.data.beautician_name == "") { + getApp().my_warnning("请选择美容师", 0, th); + th.settime(); + } else { + th.setData({ + is_textea: 1 + }) + var url = e.currentTarget.dataset.url; + getApp().goto(url); + } + }, + //点击选择门店 + choose_for_store: function(e) { + var th = this; + var index_c = e.currentTarget.dataset.ind; + var fir_pick_index = th.data.fir_pick_index; + //判断是否点击选中的门店,防止重复点击重复设置选中下标 + if (index_c == fir_pick_index) { + return false; + } else { + th.setData({ + fir_pick_index: index_c, + beautician_name: "", + time: "", + tment_count: "" + }) + } + }, + //确认选择门店 + choice_store: function() { + var th = this; + var index = th.data.fir_pick_index; + var store_name = th.data.store_list[index].StorageName; + var Id = th.data.store_list[index].Id; + th.setData({ + store: 0, + store_name: store_name, + storageId: Id, + is_textea: 1 + }) + }, + onReachBottom: function() { + var th = this; + if (this.data.total <= th.data.pageSize) return; + if (this.data.ismore) return; + + wx.showLoading({ + title: '加载中...', + }) + th.query_store(); + }, + //分页查询门店信息 + query_store: function() { + var th = this; + th.setData({ + is_textea: 0 + }) + var itemId = th.data.itemId; //服务id + var url = "/api/weshop/marketing/reservation/storage/pagenew"; + var key_word = th.data.key_word; + key_word = key_word.replace(/\s+/g, ""); + getApp().request.promiseGet(url, { + data: { + userId:getApp().globalData.user_id, + storeId: a.stoid, + serviceId: itemId, + latitude: th.data.lat, + longitude: th.data.lon, + page: th.data.curpage, + pageSize: th.data.pageSize, + keyWord: key_word + } + }).then(res => { + wx.hideLoading(); + if (res.data.code == 0) { + th.data.curpage++; + var arr1 = th.data.store_list; + var arr2 = res.data.data.pageData; + var arr3 = [...arr1, ...arr2]; + var ismore = 0; + if (arr3.length == res.data.data.total) ismore = 1 + th.setData({ + store_list: arr3, + total: res.data.data.total, + ismore: ismore, + is_service_read: 1, + }), wx.stopPullDownRefresh(); //停止下拉刷新 + if (key_word != "" && res.data.data.pageData.length < 1) { + th.setData({ + is_search: 1 + }) + } + } else { + getApp().my_warnning(res.data.msg, 0, th); + th.settime(); + } + }) + }, + //查询 + query_beautician: function() { + var th = this; + th.setData({ + is_textea: 0 + }) + if (th.data.store_name == "") { + getApp().my_warnning("请选择服务门店", 0, th); + th.settime(); + } else { + wx.showLoading({ + title: '加载中', + }) + var itemid = th.data.itemId; //正式使用的项目id + var storageId = th.data.storageId; //正式使用的线下门店id + var url = "/api/weshop/marketing/reservation/staff/pagenew"; //接口地址 + + getApp().request.promiseGet(url, { + data: { + storeId: a.stoid, + userId: d.user_id, + serviceId: itemid, + storageId: storageId + } + }).then(res => { + wx.hideLoading(); + if (res.data.code == 0) { + th.setData({ + beautician_list: res.data.data + }) + if (res.data.data.length < 1) { + getApp().my_warnning("暂无美容师", 0, th); + th.settime(); + } else { + if (th.data.beautician == 0) { + th.setData({ + beautician: 1, + }) + } else { + th.setData({ + beautician: 0, + }) + } + } + } else { + getApp().my_warnning(res.data.msg, 0, th); + th.settime(); + } + }) + } + }, + choice_beautician: function(e) { + var th = this; + var bea_index = e.currentTarget.dataset.baaindex; + var bea_name = th.data.beautician_list[bea_index].StaffName; + var BeauticianID = th.data.beautician_list[bea_index].staffid; + var StorageId=th.data.beautician_list[bea_index].StorageId + + th.setData({ + beautician_name: bea_name, + beautician: 0, + bea_index: bea_index, + beauticianID: BeauticianID, + time: "", + tment_count: "", + is_textea: 1, + StorageId:StorageId + }) + + }, + //获取搜索门店输入的值 + input_store: function(e) { + this.setData({ + key_word: e.detail.value + }) + }, + //搜索门店 + search_store: function() { + var th = this; + var key_word = th.data.key_word; + var store_list = th.data.store_list; + th.setData({ + curpage: 1, + is_search: 0, + store_list: [] + }) + wx.showLoading({ + title: '加载中', + }) + th.query_store(); + }, + //美容师预约跳转页面 + nav_bea: function() { + var th = this; + th.setData({ + beautician: 0 + }) + var storageId = th.data.storageId; //线下门店id + var itemId = th.data.itemId; //服务id + var project_id = th.data.project_id; + if (storageId == "") { + getApp().my_warnning("请选择服务门店", 0, th); + th.settime(); + } else { + th.setData({ + is_textea: 1 + }) + wx.navigateTo({ + url: "/pages/user/my_service/cosmetology_list?" + 'storageId=' + storageId + '&' + 'itemId=' + itemId + '&' + "projectId=" + project_id + }); + + } + }, + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function(options) { + var th = this; + th.setData({ + itemId: options.service_id, + buyType: options.BuyType, + project_id: options.ProjectID, + validay: options.Validay + }); + wx.getLocation({ + type: 'gcj02', + success: function(res) { + th.data.lat = res.latitude; + th.data.lon = res.longitude; + th.data.is_get_local_ok = 1; + th.setData({ + is_gps: 1 + }); + }, + fail: function(res) { + if (res.errCode == 2) { + th.setData({ + is_gps: 0 + }); + if (th.data.is_gps == 0) { + getApp().confirmBox("请开启GPS定位", null, 25000, !1); + th.settime(); + } + } else { + th.setData({ + is_gps: "3" + }); + } + + th.data.is_get_local_ok = 1; + } + }); + + // 获取当前默认导购信息及归属门店信息 + getApp().request.promiseGet('/api/weshop/shoppingGuide/geIdStaffInfo', { + data: { + store_id: 1, + guide_id: 73, + UserCode: '01', + } + }).then(res => { + console.log('res==>', res.data.data); + th.setData({ + store_name: res.data.data.StorageName, + beautician_name: res.data.data.StaffName, + }); + }); + + }, + //查询剩下可预约人数 + query_more: function() { + var th = this; + var url = "/api/weshop/marketing/reservation/can/reservation/countnew"; + var beauticianID = th.data.beauticianID; //美容师id + var projectID = th.data.itemId; //服务id + var seekTime = th.data.time; //预约日期 + var storageId = th.data.storageId; //门店id + var storeId = a.stoid; //商家id + getApp().request.promiseGet(url, { + data: { + beauticianId: beauticianID, + seekTime: seekTime, + serviceId: projectID, + storageId: storageId, + storeId: storeId + } + }).then(res => { + if (res.data.code == 0) { + var tment_count = res.data.data.CanReservation; + th.setData({ + tment_count: tment_count + }) + } else { + getApp().my_warnning(res.data.msg, 0, th); + th.settime(); + } + }) + + }, + /** + * 生命周期函数--监听页面显示 + */ + onShow: function() { + var th = this; + var seekTime = th.data.time; //预约日期 + if (seekTime != "") { + th.query_more(); + } + th.setData({ + time: th.data.time.substring(0, 16), + is_textea: 1 + }) + th.query_project(); + }, + //获取单个服务项目信息 + query_project: function() { + var th = this; + var url = "/api/weshop/marketing/reservation/sm/page"; //获取服务项目接口 + var project_id = th.data.project_id; //服务项目id + getApp().request.promiseGet(url, { + data: { + storeId: a.stoid, + userId: d.user_id, + projectId: project_id + } + }).then(res => { + if (res.data.code == 0) { + th.setData({ + validay: res.data.data.pageData[0].Validay + }) + } else { + getApp().my_warnning(res.data.msg, 0, th); + th.settime(); + } + }) + }, + //关闭导航 + close: function() { + var th = this; + var nav_b = th.selectComponent("#nav_b"); //组件的id + nav_b.close_box(); + } +}) \ No newline at end of file diff --git a/packageA/pages/my_service/appment_main.json b/packageA/pages/my_service/appment_main.json new file mode 100644 index 0000000..104895a --- /dev/null +++ b/packageA/pages/my_service/appment_main.json @@ -0,0 +1,7 @@ +{ + "navigationBarTitleText": "预约服务", + "usingComponents": { + "warn": "/components/long_warn/long_warn", + "nav_b": "/components/nav_b/nav_b" + } +} \ No newline at end of file diff --git a/packageA/pages/my_service/appment_main.wxml b/packageA/pages/my_service/appment_main.wxml new file mode 100644 index 0000000..788e683 --- /dev/null +++ b/packageA/pages/my_service/appment_main.wxml @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + {{store_name==""?'选择服务门店':store_name}} + + + + + + + + + + + + + + + + {{beautician_name==''?'选择美容师':beautician_name}} + + + + + + + {{item.StaffName}} + + + + + + + + + + + + + + + 预约时间 + + + + + {{time==""?'选择时间':time}} + + + + + + + + + + + + + + + + + {{remarks==''?'填写备注':remarks}} + + + + + + 注:剩余可预约人数{{tment_count}}人 + + + + + 我的预约 + +
+ +
+
+
+ +
+ + + + + 选择服务门店 + + + + + + 搜索 + + + + + + + + + + + + + + {{item.StorageName}} + + 距您:{{item.Distance}}km + + + {{item.Address}} + + + + + 没有找到{{key_word}}门店 + + + + + 数据加载完毕 + + + + + + 确定 + + + + + + + + \ No newline at end of file diff --git a/packageA/pages/my_service/appment_main.wxss b/packageA/pages/my_service/appment_main.wxss new file mode 100644 index 0000000..ba5d2c1 --- /dev/null +++ b/packageA/pages/my_service/appment_main.wxss @@ -0,0 +1,288 @@ +.container { + border-top: 7rpx solid rgb(245, 245, 245); +} + +.main { + width: 100%; + height: 305rpx; +} + +.angle { + transform: rotate(-45deg); + margin-right: 15rpx; + margin-bottom: 10rpx; + font-size: 26rpx; + color: rgb(142, 142, 142); +} +.StaffName{ + max-width: 350rpx; +} +.angler { + transform: rotate(227deg); + margin-bottom: 0rpx; +} + +.users { + background-color: rgb(255, 255, 255); +} + +.user { + width: 40rpx; + height: 40rpx; + margin-left: 15rpx; +} + +.Fram { + padding: 0rpx 60rpx; + margin-top: 60rpx; + background-color: rgb(255, 255, 255); +} + +.subSuccess { + position: fixed; + z-index: 3; + top: 420rpx; + left: 110rpx; + width: 540rpx; + height: 315rpx; + background-color: rgb(155, 155, 155); + text-align: center; + border-radius: 20rpx; + color: rgb(255, 255, 255); + font-weight: bold; +} + +.Success { + width: 110rpx; + height: 110rpx; + margin-top: 70rpx; + margin-bottom: 30rpx; +} + +.appment, .sub_appment { + width: 270rpx; + height: 60rpx; + line-height: 55rpx; + border-radius: 40rpx; +} + +button { + height: 100%; + background-color: rgb(214, 1, 33); +} + +.appment { + background-color: rgb(238, 238, 238); +} + +.sub_appment { + background-color: rgb(214, 1, 33); + color: rgb(255, 255, 255); +} + +.head { + width: 122rpx; + margin-right: 40rpx; + height: 50rpx; + line-height: 50rpx; +} + +.textarea { + width: 420rpx; + background-color: rgb(238, 238, 238); + border-radius: 6rpx; + height: 130rpx; + padding-left: 40rpx; + padding-right: 15rpx; + padding-top: 15rpx; + padding-bottom: 15rpx; +} + +.mabot { + margin-bottom: 35rpx; +} + +.select { + width: 420rpx; + height: 55rpx; + line-height: 55rpx; + background-color: rgb(238, 238, 238); + border-radius: 6rpx; + padding-left: 40rpx; + padding-right: 15rpx; +} + +.Cosmetology { + padding-left: 40rpx; + padding-right: 15rpx; + width: 365rpx; + background-color: rgb(238, 238, 238); + height: 50rpx; + line-height: 50rpx; + border-radius: 6rpx; +} + +.beauticians { + width: 407rpx; + z-index: 3; + top: 45rpx; + left: -1rpx; + padding: 0rpx 5rpx; + border: 2rpx solid rgb(238, 238, 238); + background-color: rgb(255, 255, 255); + padding-bottom: 5rpx; + height: 279rpx; + overflow-x: scroll; + overflow-y: scroll; +} + +.beautician { + height: 70rpx; + border-bottom: 2rpx solid rgb(238, 238, 238); + padding-left: 25rpx; +} + +.beaclone { + border-bottom: 0rpx; +} + +.notes { + margin-top: 15rpx; + margin-bottom: 60rpx; + margin-right: 8rpx; +} + +.color { + color: rgb(172, 172, 172); +} + +.submitMax { + margin-top: 50rpx; + padding: 0rpx 15rpx; +} + +.Remarks { + margin-top: 15rpx; +} + +/* 蒙尘 */ + +.disgraceful { + position: fixed; + z-index: 4; + width: 100%; + height: 100%; + top: 0rpx; + left: 0rpx; + background-color: rgba(0, 0, 0, 0.4); +} + +.storeList { + z-index: 5; + left: 0rpx; + border-top-left-radius: 25rpx; + border-top-right-radius: 25rpx; + background-color: rgb(255, 255, 255); + width: 100%; + padding: 45rpx 0rpx; +} + +.storeListpadd { + padding: 0rpx 31rpx; +} + +.choice { + margin-bottom: 5rpx; +} + +.inputstore { + width: 510rpx; + height: 43rpx; + line-height: 43rpx; + border-radius: 30rpx; + border: 2rpx solid rgb(238, 238, 238); + padding-left: 30rpx; +} + +.searchbar { + height: 95rpx; + border-bottom: 2rpx solid rgb(238, 238, 238); +} + +.search { + width: 125rpx; + height: 45rpx; + line-height: 45rpx; + background-color: rgb(219, 27, 52); + border-radius: 30rpx; + color: rgb(255, 255, 255); +} + +.stores { + height: 500rpx; + overflow-y: scroll; +} + +.store { + margin: 0rpx 16rpx; + padding-right: 15rpx; + border-bottom: 2rpx solid rgb(238, 238, 238); + padding: 20rpx 0rpx; +} + +.icon { + padding: 0rpx 15rpx; +} + +.circular { + width: 37rpx; + height: 37rpx; + border-radius: 50%; + border: 2rpx solid rgb(52, 52, 52); + margin: 0rpx 15rpx; +} + +.store_name_dis { + width: 90%; +} + +.name_dis { + margin-bottom: 5rpx; +} + +.store_name { + max-width: 420rpx; +} + +.store_dis { + height: 30rpx; + line-height: 30rpx; + padding: 5rpx 15rpx; + background-color: rgb(227, 227, 227); + border-radius: 25rpx; + margin-right: 20rpx; + color: rgb(159, 159, 159); + max-width: 200rpx; +} + +.store_address { + color: rgb(159, 159, 159); +} + +.determine { + background-color: rgb(196, 24, 26); + width: 500rpx; + border-radius: 35rpx; + height: 60rpx; + color: rgb(255, 255, 255); + margin: 20rpx 0rpx; +} + +.value { + max-width: 300rpx; +} + +.notstore { + height: 80rpx; + color: rgb(159, 159, 159); +} diff --git a/packageA/pages/my_service/beauty_deta.js b/packageA/pages/my_service/beauty_deta.js new file mode 100644 index 0000000..eaf4fdb --- /dev/null +++ b/packageA/pages/my_service/beauty_deta.js @@ -0,0 +1,420 @@ +var e = getApp(), + a = e.globalData.setting, + os = a, + t = e.request, + d = e.globalData; +Page({ + + /** + * 页面的初始数据 + */ + data: { + inurl: a.url, //接口网址 + iurl: a.imghost, + url: "", //选择选择时间后返回的页面 + defimgurl: "/miniapp/images/no-head.jpg", + seekTime: "", //当前服务预约选择的时间 + time_list: [], //可预约时间 + name: "", //美容师姓名 + comment: "", //美容师评价 + aweeks: [], //七天的预约时间 + head_img: "", //美容师头像 + time:['08:00','08:30', '09:00', '09:30', '10:00', '10:30', '11:00', '11:30', '12:00', '12:30', '13:00', '13:30', '14:00','14:30', '15:00', '15:30', '16:00', '16:30', '17:00','17:30', '18:00','18:30', '19:00', '19:30', '20:00', '20:30', '21:00', '21:30', '22:00','22:30'], + weeks: [], //星期几数组 + time_index: -1, //选择预约时间下标 + date_id: 0, //选择日期的id + beautician_id: "", //美容师id + itemId: "", //服务id + number: "", //预约单号 + modify: 0, //是否是修改时间 + iscos: 0, //是否是从美容师列表过来的 + hours: "", //获取当前时分秒 + projectId: "", //项目id + StaffName: "", //美容师名称 + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function(options) { + var th = this; + var myDate = new Date(); + var minutes = myDate.getMinutes(); //获取当前分钟数(0-59) + var hours = myDate.getHours() + ":" + minutes; //获取当前小时数(0-23) + var beautician_id = options.BeauticianID; + var storageId = options.StorageId; + + + th.setData({ + beautician_id: beautician_id, + itemId: options.itemId, + modify: options.modify, + hours: hours, + projectId: options.projectId, + storageId:storageId + }) + if (options.url != undefined) { + th.setData({ + url: options.url + }) + } + if (options.number != undefined) { + th.setData({ + number: options.number + }) + } + if (options.iscos != undefined) { + th.setData({ + iscos: options.iscos + }) + } + if (options.StaffName!=undefined){ + th.setData({ + StaffName: options.StaffName + }) + } + th.query_beatea(th.query_aweek); + }, + /** + * 生命周期函数--监听页面显示 + */ + onShow: function() { + var th = this; + //获取当前时间 + var myDate = new Date(); + // var date = myDate.getHours(); //获取当前小时数(0-23); + let str = myDate.toTimeString(); //"10:55:24 GMT+0800 (中国标准时间)" + let date = str.substring(0, 8); // '10:55:24' + th.setData({ + hours: date + }); + }, + + //图片失败,默认图片 + bind_bnerr1: function(e) { + var _errImg = e.target.dataset.errorimg; + var _Img = e.target.dataset.img; + if (_Img != undefined) { + var _errObj = {}; + _errObj[_errImg] = "/miniapp/images/no-head.jpg"; + this.setData(_errObj) //注意这里的赋值方式,只是将数据列表中的此项图片路径值替换掉 ; + } + }, + //选择服务日期 + check_date: function(e) { + var th = this; + var id = e.currentTarget.dataset.dateid; + var date_id = th.data.date_id; + var seekTime = th.data.aweeks[id].time; + if (id != date_id) { + th.setData({ + date_id: id, + seekTime: seekTime + }) + th.query_date(); + } + }, + //获取美容师信息 + query_beatea: function(func) { + var th = this; + var url = "/api/weshop/marketing/reservation/staff/get"; //接口路径 + var beautician_id = th.data.beautician_id; + getApp().request.promiseGet(url, { + data: { + beauticianId: beautician_id, + storeId: a.stoid, + } + }).then(res => { + if (res.data.code == 0) { + var data = res.data.data; + var ob={ + name: data.StaffName, + comment: data.Remark1, + head_img: data.PhotoUrl + }; + if(!th.data.storageId){ + ob.storageId=data.StorageId; + } + th.setData(ob); + func(); + } else { + getApp().my_warnning(res.data.msg, 0, th); + } + }) + }, + //返回上个页面 + navigateBack: function() { + var th = this; + var modify = th.data.modify; //是否是更改时间 + var seekTime = th.data.seekTime; //选择的日期 + var time_list = th.data.time_list; + var time_index = th.data.time_index; + if (time_index == -1) { + getApp().my_warnning("请选择预约时间", 0, th); + return false; + } + var date_id = th.data.date_id; + var date = th.data.aweeks[date_id].time; + var time = date + " " + time_list[time_index] + ":00"; + if (modify == 1) { + var json = { + "arrangeTime": time, + "number": th.data.number, + "remark": "更改时间", + "states": 0, + "storeId": a.stoid + }; + var data = JSON.stringify(json); + var url = th.data.inurl + "/api/weshop/marketing/reservation/reservation/update"; //预约接口地址 + wx.request({ + url: url, + data: data, + method: 'put', + header: { + 'content-type': 'application/json' + }, // 设置请求的 header + success: function(res) { + if (res.data.code == 0) { + getApp().my_warnning(res.data.data, 1, th); + setTimeout(function() { + wx.navigateBack({ + //返回 + delta: 1 + }) + }, 1000); + } else { + getApp().my_warnning(res.data.msg, 0, th); + } + } + }) + } else { + var pages = getCurrentPages(); //当前页面 + var iscos = th.data.iscos; + var delta = 1; + if (Number(iscos) == 1) { + delta = delta + Number(iscos); //返回哪个页面 + var prevPage = pages[pages.length - 2 - Number(iscos)]; //上一页面 + prevPage.setData({ + //直接给上一个页面赋值 + time: time, + beautician_name: th.data.StaffName, + beauticianID: th.data.beautician_id + }); + wx.navigateBack({ + //返回 + delta: 2 + }) + } else { + var prevPage = pages[pages.length - 2]; //上一页面 + prevPage.setData({ + //直接给上一个页面赋值 + time: time + }); + wx.navigateBack({ + //返回 + delta: 1 + }) + } + } + }, + //选择时间 + Selection_time: function(e) { + var th = this; + var index = e.currentTarget.dataset.index; + var time_index = th.data.time_index; + if (index == time_index) { + return false; + } else { + th.setData({ + time_index: index + }) + } + }, + //查询七天预约时间 + query_aweek: function() { + var th = this; + var beautician_id = th.data.beautician_id; //美容师id + var storageId=th.data.storageId; + + var itemId = th.data.itemId; //服务id + var projectId = th.data.projectId; //项目id + var url = "/api/weshop/marketing/reservation/staff/seven/time/listnew"; //接口地址 + getApp().request.promiseGet(url, { + data: { + projectId: projectId, + beauticianId: beautician_id, + serviceId: itemId, + storeId: a.stoid, + storageId:storageId + } + }).then(res => { + if (res.data.code == 0) { + var data = res.data.data; + var arr = []; + for (var i in data) { + var em = { + "time": i, + "val": data[i] + }; + arr.push(em); + } + arr.sort(th.sort_arr); + var weeks = ["今天", "明天", "后天"]; + var week = ""; + for (var i = 3; i < arr.length; i++) { + var date = new Date(arr[i].time); + if (date.getDay() == 0) week = "周日" + if (date.getDay() == 1) week = "周一" + if (date.getDay() == 2) week = "周二" + if (date.getDay() == 3) week = "周三" + if (date.getDay() == 4) week = "周四" + if (date.getDay() == 5) week = "周五" + if (date.getDay() == 6) week = "周六" + weeks[i] = week; + } + th.setData({ + aweeks: arr, + weeks: weeks + }) + th.query_date(); + + } else { + getApp().my_warnning(res.data.msg, 0, th); + } + }) + + }, + + query_date: function() { + var th = this; + var projectId = th.data.projectId; + var date_id = th.data.date_id; //日期下标 + var SeekTime = th.data.aweeks[date_id].time; + var val = th.data.aweeks[date_id].val; + + var url = "/api/weshop/marketing/reservation/staff/time/listnew"; + getApp().request.promiseGet(url, { + data: { + projectId: projectId, + staffId: th.data.beautician_id, + storageId:th.data.storageId, + serviceId: th.data.itemId, + seekTime: SeekTime, + storeId: a.stoid, + } + }).then(res => { + if (res.data.code == 0) { + var hours = th.data.hours; + var time_list = res.data.data; + var time = th.data.time; + var date_id = th + var new_time = []; + var date = th.data.hours.substring(0,2); + + //不等于空就是有可以预约的时间 + if (time_list != null) { + if (res.data.data && res.data.data[0]!= undefined) { + if (res.data.data[0].GroupHour && res.data.data[0].GroupHour.length > 11) { + getApp().my_warnning(res.data.data[0].GroupHour, 0, th); + } + } + //循环固定和可预约的时间 + for (var i = 0; i < time.length; i++) { + for (var ii = 0; ii < time_list.length; ii++) { + //判断固定的时间和可以预约的时间 + if (time[i] == time_list[ii].begintime.substring(0, 5)) { + var date_id = th.data.date_id; + if (date > time_list[ii].begintime.substring(0, 2) && date_id == 0) { + new_time[i] = ""; + break; + }else{ + new_time[i] = time_list[ii].begintime.substring(0, 5); + break; + } + } else { + new_time[i] = ""; + } + } + } + }else{ + for(var i = 0 ;i b) { + return 1; + } + return 0; + }, + + check_is_in_arr:function(val,pdata) { + if(!val || !pdata) return false; + for(var i in pdata){ + if(pdata[i].begintime.indexOf(val)!=-1){ + return true; + } + } + return false; + } + + + +}) \ No newline at end of file diff --git a/packageA/pages/my_service/beauty_deta.json b/packageA/pages/my_service/beauty_deta.json new file mode 100644 index 0000000..710a83b --- /dev/null +++ b/packageA/pages/my_service/beauty_deta.json @@ -0,0 +1,6 @@ +{ + "navigationBarTitleText": "美容师详情", + "usingComponents": { + "warn": "/components/long_warn/long_warn" + } +} \ No newline at end of file diff --git a/packageA/pages/my_service/beauty_deta.wxml b/packageA/pages/my_service/beauty_deta.wxml new file mode 100644 index 0000000..57591e4 --- /dev/null +++ b/packageA/pages/my_service/beauty_deta.wxml @@ -0,0 +1,77 @@ + + + + + + + + {{name}} + + + + + + + {{comment}} + + + 暂无介绍 + + + + + + + + + + 服务预约 + + + + + {{weeks[index]}} + {{item.time}} + + + + + {{weeks[index]}}(约满) + {{item.time}} + + + + + + + + + + + + + + {{it}} + + + + + + + {{it}} + + + + + + 确定选择 + + + + + + + + + + \ No newline at end of file diff --git a/packageA/pages/my_service/beauty_deta.wxss b/packageA/pages/my_service/beauty_deta.wxss new file mode 100644 index 0000000..09fc465 --- /dev/null +++ b/packageA/pages/my_service/beauty_deta.wxss @@ -0,0 +1,134 @@ +.container { + border-top: 7rpx solid rgb(245, 245, 245); +} + +.backcolor { + position: absolute; + top: 0rpx; + left: 0rpx; + z-index: 0; + width: 100%; + height: 270rpx; + background-color: rgb(214, 1, 33); + +} + +.comments { + position: absolute; + top: 45rpx; + left: 0rpx; + z-index: 1; + padding: 0rpx 23rpx; +} + +.name { + font-weight: bold; + float: left; + width: 250rpx; +} + +.head { + width: 130rpx; + height: 130rpx; + border-radius: 50%; + float: right; + margin: 0rpx 15rpx; + /* border: 2rpx solid red; */ +} + +.introduce { + margin-top: 90rpx; + text-indent: 2em; + color: rgb(102, 102, 102); +} + +.Personal { + width: 640rpx; + height: 300rpx; + background-color: rgb(255, 255, 255); + border-radius: 5rpx; + box-shadow: 0rpx 2rpx 2rpx 2rpx rgb(250, 228, 230); + margin-bottom: 65rpx; + padding-top: 40rpx; + padding-left: 35rpx; + padding-right: 35rpx; +} + +.choice { + height: 70rpx; + background-color: rgb(214, 1, 33); + color: rgb(255, 255, 255); + margin-top: 30rpx; +} + +.scroll-h { + white-space: nowrap; + width: 704rpx; + overflow: visible; + height: 125rpx; + color: transparent; +} + +.scroll-item-h { + display: inline-block; + width: 172rpx; + text-align: center; + overflow: visible; + height: 70rpx; + padding: 15rpx 0rpx; +} +::-webkit-scrollbar{ + width: 0; + height: 0; + color: transparent; +} +.box { + width: 0px; + height: 0px; + margin-left: 15rpx; + border-top: 21rpx solid transparent; + border-right: 21rpx solid transparent; + border-left: 21rpx solid transparent; + display: inline-block; + transform: rotate(180deg); + border-bottom: 21rpx solid rgb(214, 1, 33); +} + +.bd { + /* border: 2rpx solid rgb(238, 238, 238); */ + background-color: rgb(255, 255, 255); + color: rgb(20, 20, 20); +} + +.chbd { + border: 2rpx solid rgb(214, 1, 33); + background-color: rgb(214, 1, 33); + color: rgb(255, 255, 255); +} + +.Times { + background-color: rgb(238, 243, 247); + margin-bottom: 30rpx; + padding:34rpx 27rpx; +} + +.Time { + border: 2rpx solid rgb(238, 238, 238); + width: 160rpx; + height: 70rpx; + background-color: rgb(255, 255, 255); + text-align: center; + padding-top: 15rpx; + padding-bottom: 15rpx; +} +.chTime{ + border-color: rgb(214, 1, 33); +} +.nochTime{ + color: rgb(174,177,177); + background-color: rgb(250,250,250); +} +.abs { + left: 55rpx; + bottom: -39rpx; +} diff --git a/packageA/pages/my_service/cosmetology_list.js b/packageA/pages/my_service/cosmetology_list.js new file mode 100644 index 0000000..5d71119 --- /dev/null +++ b/packageA/pages/my_service/cosmetology_list.js @@ -0,0 +1,108 @@ +var e = getApp(), + a = e.globalData.setting, + os = a, + t = e.request, + d = e.globalData; +Page({ + + /** + * 页面的初始数据 + */ + data: { + defimgurl: "/miniapp/images/no-head.jpg", + iurl: a.imghost, + cosmetology_list: [], //美容师列表 + is_cosmetology_read: 0, //是否有读过美容师接口,该属性用在没有美容师列表的排版 + curpage: 1, //当前分页数 + pageSize: 10, //页大小 + total: 0, //总数量 + ismore: 0, //是否加载完毕 + itemId: 0, //服务id, + storageId: 0, //线下门店id + projectId:"",//项目id + }, + onReachBottom: function() { + var th = this; + if (this.data.total <= th.data.pageSize) return; + if (this.data.ismore) return; + wx.showLoading({ + title: '加载中...', + }) + th.query_cology(); + }, + query_cology: function() { + var th = this; + var url = "/api/weshop/marketing/reservation/staff/pagenew"; + var itemId = th.data.itemId; //服务id + var storageId = th.data.storageId; + getApp().request.promiseGet(url, { + data: { + storeId: a.stoid, + userId: d.user_id, + serviceId: itemId, + storageId: storageId, + page: th.data.curpage, + pageSize: th.data.pageSize + } + }).then(res => { + wx.hideLoading(); + if (res.data.code == 0) { + th.data.curpage++; + var arr1 = th.data.cosmetology_list; + var arr2 = res.data.data; + var arr3 = [...arr1, ...arr2]; + + + th.setData({ + cosmetology_list: arr3, + total: res.data.data.total, + is_service_read: 1, + is_cosmetology_read:1 + }), wx.stopPullDownRefresh(); //停止下拉刷新 + } else { + th.setData({ + is_cosmetology_read:1, + ismore:1 + }) + } + }) + }, + //图片失败,默认图片 + bind_bnerr1: function(e) { + var _errImg = e.target.dataset.errorimg; + var _Img = e.target.dataset.img; + if (_Img != undefined) { + var _errObj = {}; + _errObj[_errImg] = "/miniapp/images/no-head.jpg"; + console.log(_errObj,"zzzzzzz"); + this.setData(_errObj) //注意这里的赋值方式,只是将数据列表中的此项图片路径值替换掉 ; + } + }, + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function(options) { + var th = this; + th.setData({ + projectId: options.projectId, + itemId: options.itemId, + storageId: options.storageId + }) + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function() { + var th = this; + th.data.curpage++; + th.setData({ + cosmetology_list: [], + total: 0, + is_service_read: 0, + is_cosmetology_read:0 + }) + th.query_cology(); + }, + +}) \ No newline at end of file diff --git a/packageA/pages/my_service/cosmetology_list.json b/packageA/pages/my_service/cosmetology_list.json new file mode 100644 index 0000000..90bf58b --- /dev/null +++ b/packageA/pages/my_service/cosmetology_list.json @@ -0,0 +1,6 @@ +{ + "navigationBarTitleText": "美容师列表", + "usingComponents": { + "warn": "/components/long_warn/long_warn" + } +} \ No newline at end of file diff --git a/packageA/pages/my_service/cosmetology_list.wxml b/packageA/pages/my_service/cosmetology_list.wxml new file mode 100644 index 0000000..66049b0 --- /dev/null +++ b/packageA/pages/my_service/cosmetology_list.wxml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + {{item.StaffName}} + + + + + + + + + {{it.LabelName}} + + + + + + + + 预约 + + + + + {{item.Remark1}} + + + + 暂无介绍 + + + + + + + + 到底了 + + + + + + + + + + 暂无美容师 + + + 其他项目 + + + + \ No newline at end of file diff --git a/packageA/pages/my_service/cosmetology_list.wxss b/packageA/pages/my_service/cosmetology_list.wxss new file mode 100644 index 0000000..4a8fb7b --- /dev/null +++ b/packageA/pages/my_service/cosmetology_list.wxss @@ -0,0 +1,124 @@ +page{ + height: 100%; +} +.container{ + background-color: rgb(255,255,255); +} +.appointment { + width: 100%; + height: 305rpx; +} + +.single { + margin-left: 10rpx; + border-bottom: 1rpx solid rgb(229, 229, 229); + padding-bottom: 30rpx; + padding-left: 20rpx; + padding-right: 35rpx; + padding-top: 30rpx; +} + +.portrait { + width: 140rpx; + height: 140rpx; + border-radius: 50%; + margin-right: 30rpx; +} +.UserName{ + max-width: 250rpx; +} +.Stars { + width: 25rpx; + height: 25rpx; + margin-right: 7rpx; +} +.Labels{ + width: 100%; + margin-top: 15rpx; +} +.Label { + margin-top: 25rpx; +} + +.Labelitem { + width: 100rpx; + height: 30rpx; + border-radius: 20rpx; + line-height: 30rpx; + margin-right: 10rpx; + padding:0rpx 9rpx; +} + +.itone { + border: 2rpx solid rgb(22, 232, 131); + color: rgb(22, 232, 131); +} + +.itwo { + border: 2rpx solid rgb(92, 135, 248); + color: rgb(92, 135, 248); +} + +.ith { + border: 2rpx solid rgb(244, 143, 55); + color: rgb(244, 143, 55); +} + +.gofu { + width: 120rpx; + padding: 5rpx 0rpx; + border-radius: 25rpx; +} + +.go { + border: 1rpx solid rgb(196, 26, 46); + color: rgb(196, 26, 46); + background-color: rgb(255,255,255); +} + +.gofull { + border: 1rpx solid rgb(185, 185, 185); + color: rgb(185, 185, 185); + background-color: rgb(255,255,255); +} + +.information { + margin-top: 25rpx; + text-indent: 2em; + color: rgb(103, 103, 103); +} +/* 无订单 */ +.empty_order image { + width: 330rpx; + height: 280rpx; + margin-top: 120rpx; +} + +.empty_order .xc-ash { + margin-top: 10rpx; + font-weight: 600px; +} + +.empty_order navigator { + margin-top: 60rpx; + border-radius: 40rpx; +} + +.empty_order navigator view { + width: 247rpx; + height: 56rpx; + background-color: rgb(255, 72, 72); + border-radius: 40rpx; +} +.After_all { + height: 80rpx; +} + +.After_all .Line { + border-top: 3rpx solid rgb(0, 0, 0); + width: 130rpx; +} + +.After_all .end { + margin: 0rpx 15rpx; +} diff --git a/packageA/pages/my_service/hist_service.js b/packageA/pages/my_service/hist_service.js new file mode 100644 index 0000000..4365592 --- /dev/null +++ b/packageA/pages/my_service/hist_service.js @@ -0,0 +1,157 @@ +var e = getApp(), + a = e.globalData.setting, + os = a, + t = e.request, + d = e.globalData; +Page({ + + /** + * 页面的初始数据 + */ + data: { + iurl: a.imghost, + isPickerShow: false, + isPickerRender: false, + startTime: "", + endTime: "", + pickerConfig: { + endDate: true, + column: "", + dateLimit: true, + initStartTime: "2019-01-01 12:32:44", + initEndTime: "2019-12-01 12:32:44", + limitStartTime: "1917-05-06 12:32:44", + limitEndTime: "2055-05-06 12:32:44" + }, + hist_List: [], //服务项目列表 + is_service_read: 0, + curpage: 1, //当前分页数 + pageSize: 15, //页大小 + total: 0, + ismore: 0, //是否加载完毕 + is_screen: 0, //是否通过筛选来选择历史服务 + is_reset: 0, //是否重复点击 + is_nav: 1, //是否显示导航栏 + }, + pickerShow: function() { + this.setData({ + isPickerShow: true, + isPickerRender: true, + chartHide: true + }); + }, + pickerHide: function() { + var th = this; + th.setData({ + isPickerShow: false, + chartHide: false + }); + }, + //--选择时间-- + setPickerTime: function(val) { + let data = val.detail, + gl_data = getApp().globalData, + th = this; + th.setData({ + startTime: data.startTime, + endTime: data.endTime, + val: 0, + distance: 0, + hist_List: [], + curpage: 1, + is_screen: 1, + is_nav: 1 + }); + th.query_hist(); + }, + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function(options) { + var th = this; + th.query_hist(); + }, + /** + * 生命周期函数--监听页面显示 + */ + onShow: function() {}, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function() { + var th = this; + if (th.data.total <= th.data.pageSize) return false; + if (th.data.ismore) return false; + + wx.showLoading({ + title: '加载中...', + }) + th.query_hist(); + }, + //重置历史服务数据 + his_reset: function() { + var th = this; + var is_reset = th.data.is_reset; + if (is_reset == 0) { + th.setData({ + hist_List: [], + curpage: 1, + is_service_read: 0, + is_screen: 1, + is_reset: 1, + startTime: "", + endTime: "", + is_nav: 1 + }) + th.query_hist(); + } + }, + query_hist: function() { + + var th = this; + var startTime = th.data.startTime.substring(0, 10); //开始 + var endTime = th.data.endTime.substring(0, 10); //结束 + var url = "/api/weshop/marketing/reservation/history/reservation/page"; + getApp().request.promiseGet(url, { + data: { + storeId: a.stoid, + userId: d.user_id, + beginDate: startTime, + endDate: endTime, + page: th.data.curpage, + pageSize: th.data.pageSize + } + }).then(res => { + wx.hideLoading(); + th.setData({ + is_reset: 0 + }) + if (res.data.code == 0) { + th.data.curpage++; + var arr1 = th.data.hist_List; + var arr2 = res.data.data.pageData; + var arr3 = [...arr1, ...arr2]; + var ismore = 0; + if (arr3.length == res.data.total) ismore = 1 + th.setData({ + hist_List: arr3, + total: res.data.data.total, + ismore: ismore, + is_service_read: 1, + }), wx.stopPullDownRefresh(); //停止下拉刷新 + } else { + th.setData({ + is_service_read: 1, + is_screen: 0, + ismore: 1 + }) + if (startTime!="") { + th.setData({ + total:0 + }) + } + } + }) + } +}) \ No newline at end of file diff --git a/packageA/pages/my_service/hist_service.json b/packageA/pages/my_service/hist_service.json new file mode 100644 index 0000000..b81e3be --- /dev/null +++ b/packageA/pages/my_service/hist_service.json @@ -0,0 +1,7 @@ +{ + "navigationBarTitleText": "历史预约", + "usingComponents": { + "timePicker": "/components/timePicker/timePicker", + "warn": "/components/long_warn/long_warn" + } +} \ No newline at end of file diff --git a/packageA/pages/my_service/hist_service.wxml b/packageA/pages/my_service/hist_service.wxml new file mode 100644 index 0000000..2e8cb8e --- /dev/null +++ b/packageA/pages/my_service/hist_service.wxml @@ -0,0 +1,77 @@ + + + + + 共使用 + {{total}} + 次服务 + + + + 重置 + + + + 筛选 + + + + + + + + + + + + + {{item.ServiceName==''?'匿名':item.ServiceName}} + + (服务美容师: + + + (预约美容师: + + {{item.BeauticianName}} + ) + + {{item.ArrangeTime}} + + + + 未服务 + 已服务 + 已过期 + 已取消 + 已评价 + + + + + + + 到底了 + + + + + + 该时间段无预约记录 + + + + + + + 暂无服务记录 + + + 前往使用 + + + + + + + + \ No newline at end of file diff --git a/packageA/pages/my_service/hist_service.wxss b/packageA/pages/my_service/hist_service.wxss new file mode 100644 index 0000000..8882a8d --- /dev/null +++ b/packageA/pages/my_service/hist_service.wxss @@ -0,0 +1,121 @@ +page { + height: 100%; +} + +.box { + width: 0px; + height: 0px; + margin-left: 15rpx; + border-top: 11rpx solid rgba(0, 0, 0, 0); + border-right: 10rpx solid rgba(0, 0, 0, 0); + border-left: 10rpx solid rgba(0, 0, 0, 0); + display: inline-block; + margin-bottom: 10rpx; + color: red; + transform: rotate(0deg); + border-bottom: 18rpx solid rgb(153, 153, 153); +} + +.exption { + padding: 0rpx 45rpx; + background-color: rgb(238, 238, 238); + height: 70rpx; + color: rgb(153, 153, 153); + position: fixed; + top:0rpx; + left: 0rpx; + width: 660rpx; +} + +.count { + margin: 0rpx 5rpx; +} + +.Resetfram { + margin-right: 40rpx; +} + +.Reset { + margin-right: 5rpx; +} + +.Resetsub { + width: 30rpx; + height: 30rpx; +} +.items{ + margin-top: 70rpx; +} +.item { + margin: 0rpx 25rpx; + padding: 0rpx 20rpx; + height: 100rpx; + border-bottom: 1rpx solid rgb(242, 242, 242); +} + +.itemName { + margin-right: 10rpx; + max-width: 130rpx; +} + +.itemUsna { + max-width: 150rpx; +} + +.serState { + color: rgb(255, 82, 125); +} + +.container { + position: fixed; + width: 100%; + top: 0rpx; +} + +/* 无历史服务 */ + +.empty_order { + height: 100%; + background-color: rgb(238, 238, 238); +} + +.empty_order image { + width: 329rpx; + height: 229rpx; + margin-top: 202rpx; +} + +.empty_order .xc-ash { + margin-top: 10rpx; + font-weight: 600px; +} + +.empty_order navigator { + margin-top: 65rpx; + border-radius: 40rpx; +} + +.empty_order navigator view { + width: 247rpx; + height: 65rpx; + background-color: rgb(255, 72, 72); + border-radius: 40rpx; +} + +.After_all { + height: 80rpx; +} + +.After_all .Line { + border-top: 3rpx solid rgb(0, 0, 0); + width: 130rpx; +} + +.After_all .end { + margin: 0rpx 15rpx; +} +.slot{ + color: rgb(153, 153, 153); + height:300rpx; + width:100%; +} \ No newline at end of file diff --git a/packageA/pages/my_service/i_service.js b/packageA/pages/my_service/i_service.js new file mode 100644 index 0000000..20d4b62 --- /dev/null +++ b/packageA/pages/my_service/i_service.js @@ -0,0 +1,256 @@ +var e = getApp(), + a = e.globalData.setting, + os = a, + t = e.request, + d = e.globalData; +Page({ + + /** + * 页面的初始数据 + */ + data: { + qr_code_object: { + val: "12121", + content: "请将二维码展示给核销员,服务更快捷!" + }, + iurl: a.imghost, + defimgurl: "/miniapp/images/yyservice/yyxmdefault.jpg", + service_List: [], //服务项目列表 + is_service_read: 0, + curpage: 1, //当前分页数 + pageSize: 10, //页大小 + total: 0, + ismore: 0, //是否加载完毕 + userinfo: null, + is_sub: 0, //是否重复提交预约 + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function(options) { + var userinfo = getApp().globalData.userInfo; + if (userinfo == null) { + //界面必须使用warn 做ID,并调用 + return false; + } + this.setData({ + userinfo: userinfo + }); + var th = this; + th.query_service(); + }, + /** + * 生命周期函数--监听页面显示 + */ + onShow: function() { + var th = this; + var my_confirm = th.selectComponent("#my_confirm"); //组件的id + my_confirm.open_cancel(0); + }, + onReachBottom: function() { + var th = this; + if (this.data.total <= th.data.pageSize) return; + if (this.data.ismore) return; + + th.query_service(); + }, + //查询服务项目列表 + query_service: function() { + wx.showLoading({ + title: '加载中', + }) + var th = this; + var url = "/api/weshop/marketing/reservation/sm/page?State=1"; + getApp().request.promiseGet(url, { + data: { + storeId: a.stoid, + userId: d.user_id, + page: th.data.curpage, + pageSize: th.data.pageSize + } + }).then(res => { + wx.hideLoading(); + if (res.data.code == 0) { + th.data.curpage++; + var arr1 = th.data.service_List; + var arr2 = res.data.data.pageData; + var arr3 = [...arr1, ...arr2]; + var ismore = 0; + if (arr3.length == res.data.data.total) ismore = 1 + th.setData({ + service_List: arr3, + total: res.data.data.total, + ismore: ismore, + is_service_read: 1, + }), + wx.stopPullDownRefresh(); //停止下拉刷新 + } else { + th.setData({ + is_service_read: 1 + }) + } + }) + }, + /*-- 打开服务项目 --*/ + open_fw: function(e) { + wx.showLoading({ + title: '加载中', + }) + var th = this; + var url = e.currentTarget.dataset.url; + var service_id = e.currentTarget.dataset.service_id; //服务id + var project_id = e.currentTarget.dataset.project_id; + var ind = e.currentTarget.dataset.ind; + var item = this.data.service_List[ind]; + var ewm = "^" + th.data.userinfo.erpvipid + "|" + item.ProjectID + "|" + item.BuyType + "|TY01|"; + var tt = th.format_time(1); + ewm = ewm + tt; + th.data.qr_code_object.val = ewm; + th.data.qr_code_object.is_fw = 1; + var qc_com = th.selectComponent("#qc_com"); //组件的id + getApp().request.promiseGet("/api/weshop/marketing/reservation/reservation/check", { + data: { + serviceId: service_id, + storeId: a.stoid, + userId: d.user_id + } + }).then(res => { + wx.hideLoading(); + th.setData({ + is_sub: 0 + }) + if (res.data.data != null) { + var my_confirm = th.selectComponent("#my_confirm"); //组件的id + my_confirm.open_cancel(1); + my_confirm.open( + "已有预约记录!", + "预约详情", + "继续使用", + function() { + my_confirm.open_cancel(0); + var deta_url = "/pages/user/my_service/tment_details?number=" + res.data.data.Number; + wx.navigateTo({ + url: deta_url + }) + }, + function() { + my_confirm.open_cancel(0); + qc_com.open(th.data.qr_code_object) + } + + ) + + } else { + qc_com.open(th.data.qr_code_object) + } + }) + + }, + //图片失败,默认图片 + bind_bnerr1: function(e) { + var _errImg = e.target.dataset.errorimg; + var _Img = e.target.dataset.img; + if (_Img != undefined) { + var _errObj = {}; + _errObj[_errImg] = "/miniapp/images/no_cate_def.png"; + this.setData(_errObj) //注意这里的赋值方式,只是将数据列表中的此项图片路径值替换掉 ; + } + }, + format_time: function(isFull) { + var d = new Date(); + var m = d.getMonth() + 1; + if (m < 10) m = "0" + m; + var dd = d.getDate(); + if (dd < 10) dd = "0" + dd; + var fm = [d.getFullYear(), m, dd].join('-'); + if (isFull == 1) + fm = fm + ' ' + [d.getHours(), d.getMinutes(), d.getSeconds()].join(':') + return fm; + }, + //跳转到首页 + goto: function(e) { + var url = e.currentTarget.dataset.url; + getApp().goto(url); + }, + //校正是否可预约 + correcting: function(e) { + var th = this; + wx.showLoading({ + title: '加载中', + }) + if (th.data.is_sub == 0) { + th.setData({ + is_sub: 1 + }) + var url = e.currentTarget.dataset.url; + var service_id = e.currentTarget.dataset.service_id; //服务id + var project_id = e.currentTarget.dataset.project_id; + getApp().request.promiseGet("/api/weshop/marketing/reservation/reservation/check", { + data: { + serviceId: service_id, + storeId: a.stoid, + userId: d.user_id + } + }).then(res => { + wx.hideLoading(); + th.setData({ + is_sub: 0 + }) + if (res.data.code == 0) { + if (res.data.data != null) { + + var number = res.data.data.Number; + var my_confirm = th.selectComponent("#my_confirm"); //组件的id + my_confirm.open_cancel(1); + my_confirm.open( + "已有预约记录!", + "预约详情", + "继续预约", + function() { + my_confirm.open_cancel(0); + var deta_url = "/pages/user/my_service/tment_details?number=" + number; + wx.navigateTo({ + url: deta_url + }) + }, + function() { + my_confirm.open_cancel(0); + getApp().request.promiseGet("/api/weshop/marketing/reservation/reservation/sm/check", { + data: { + projectId: project_id, + serviceId: service_id, + storeId: a.stoid, + userId: d.user_id + } + }).then(res => { + if (res.data.code == 0) { + wx.navigateTo({ + url: url + }) + } else { + getApp().my_warnning(res.data.msg, 0, th); + } + }) + } + ) + } else { + wx.navigateTo({ + url: url, + }) + } + + } else { + getApp().my_warnning(res.data.msg, 0, th); + } + }) + } + }, + //关闭导航 + close: function () { + var th = this; + var nav_b = th.selectComponent("#nav_b"); //组件的id + nav_b.close_box(); + } + +}) \ No newline at end of file diff --git a/packageA/pages/my_service/i_service.json b/packageA/pages/my_service/i_service.json new file mode 100644 index 0000000..516d6e0 --- /dev/null +++ b/packageA/pages/my_service/i_service.json @@ -0,0 +1,9 @@ +{ + "navigationBarTitleText": "服务项目", + "usingComponents": { + "qr_code": "/components/qr_code/qr_code", + "warn": "/components/long_warn/long_warn", + "my_confirm": "/components/my_confirm/my_confirm", + "nav_b": "/components/nav_b/nav_b" + } +} \ No newline at end of file diff --git a/packageA/pages/my_service/i_service.wxml b/packageA/pages/my_service/i_service.wxml new file mode 100644 index 0000000..7191905 --- /dev/null +++ b/packageA/pages/my_service/i_service.wxml @@ -0,0 +1,103 @@ + + + + 服务记录 + 历史预约 + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{item.ServiceName}} + + + + 剩余次数: + {{item.ObtainTimes}} + + + + 有效期至 + {{item.Validay==""?"长期有效":item.Validay}} + + + + + + + + + 帮你预约 + + + + + + + + + + + + 到底了 + + + + + + + + + + + + + + + 暂无服务卡项,立即购买! + + + 回到首页 + + + + + + + + + + \ No newline at end of file diff --git a/packageA/pages/my_service/i_service.wxss b/packageA/pages/my_service/i_service.wxss new file mode 100644 index 0000000..a047ecd --- /dev/null +++ b/packageA/pages/my_service/i_service.wxss @@ -0,0 +1,173 @@ +page { + overflow-x: scroll; +} + +/* 背景定位 */ + +.backimage { + position: absolute; + top: 0rpx; + left: 0rpx; + z-index: 0; + width: 100%; + /* height: 100%; */ +} + +/* 历史服务定位 */ + +.History { + position: absolute; + top: 30rpx; + right: 20rpx; + z-index: 1; + color: rgb(255, 255, 255); +} + +.rel { + background-color: rgb(255, 255, 255); + width: 350rpx; + height: 430rpx; + border-radius: 20rpx; + display: inline-block; + margin-right: 15rpx; + margin-bottom: 20rpx; + box-shadow: 0rpx 3rpx 3rpx 3rpx rgb(233, 233, 233); +} + +.abs { + left: 10rpx; + top: 10rpx; +} + +.equity_money { + width: 50rpx; + height: 55rpx; +} + +.Serviceitems { + position: absolute; + top: 370rpx; + left: 0rpx; + z-index: 2; + padding-left: 18rpx; + padding-bottom: 20rpx; +} + +.itemimage { + width: 120rpx; + height: 120rpx; + border-radius: 50%; + margin-top: 30rpx; + margin-bottom: 20rpx; +} + +.itemName { + margin-bottom: 25rpx; + color: rgb(48, 48, 48); +} + +.itemName .Name { + max-width: 250rpx; + text-align: center; +} + +.itemCount { + margin-bottom: 5rpx; + color: rgb(177, 177, 177); + align-items: baseline; +} + +.itemEffective { + margin-bottom: 30rpx; + color: rgb(177, 177, 177); + align-items: baseline; +} + +.functionMax { + padding: 0rpx 25rpx; + color: rgb(254, 255, 255); +} + +.Use { + width: 170rpx; + height: 50rpx; + line-height: 50rpx; + border-radius: 25rpx; + background-color: red; +} + +.appointment { + width: 115rpx; + height: 50rpx; + line-height: 50rpx; + border-radius: 25rpx; + margin-left: 20rpx; +} + +.Date { + margin-left: 10rpx; +} + +/* 无服务项目 */ + +.cover { + position: fixed; + z-index: 1; + left: 0rpx; + top: 390rpx; + width: 100%; + height: 200rpx; + background-color: rgb(255, 255, 255); +} + +/* 无历史服务 */ + +.empty_order { + position: fixed; + left: 0rpx; + top: 500rpx; + z-index: 2; + width: 100%; +} + +.empty_order image { + width: 329rpx; + height: 229rpx; + margin-top: 80rpx; +} + +.empty_order .xc-ash { + margin-top: 10rpx; + font-weight: 600px; +} + +.empty_order navigator { + margin-top: 60rpx; + border-radius: 40rpx; +} + +.empty_order navigator view { + width: 247rpx; + height: 56rpx; + background-color: rgb(255, 72, 72); + border-radius: 40rpx; +} + +.After_all { + height: 80rpx; +} + +.After_all .Line { + border-top: 3rpx solid rgb(0, 0, 0); + width: 130rpx; +} + +.After_all .end { + margin: 0rpx 15rpx; +} + +.btn { + background-color: red; + padding: 10rpx 20rpx; + border-radius: 30rpx; +} diff --git a/packageA/pages/my_service/my_service.js b/packageA/pages/my_service/my_service.js new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/packageA/pages/my_service/my_service.js diff --git a/packageA/pages/my_service/my_service.wxml b/packageA/pages/my_service/my_service.wxml new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/packageA/pages/my_service/my_service.wxml diff --git a/packageA/pages/my_service/tment_details.js b/packageA/pages/my_service/tment_details.js new file mode 100644 index 0000000..7cdc06b --- /dev/null +++ b/packageA/pages/my_service/tment_details.js @@ -0,0 +1,137 @@ +var e = getApp(), + a = e.globalData.setting, + os = a, + t = e.request, + d = e.globalData; +Page({ + + /** + * 页面的初始数据 + */ + data: { + url: a.url, + iurl: a.imghost, + tment_details: [], //预约详情 + number: "", //订单号 + arrangeTime: "", //预约年月日 + day: "", //判断是上午还是下午 + states: 3, //3为取消预约 + }, + //取消预约 + cancel_tment: function(e) { + var th = this; + var my_confirm = th.selectComponent("#my_confirm"); //组件的id + my_confirm.open( + "确定取消?", + "取消", + "确定", + function() { + my_confirm.open_cancel(0); + }, + function() { + var index = e.currentTarget.dataset.index; + var states = th.data.states; + var tment_details = th.data.tment_details; + var number = th.data.number; + var json = { + "number": number, + "storeId": a.stoid, + "states": states + }; + var data = JSON.stringify(json); + var url = th.data.url + "/api/weshop/marketing/reservation/reservation/update"; //预约接口地址 + wx.request({ + url: url, + data: data, + method: 'put', + header: { + 'content-type': 'application/json' + }, // 设置请求的 header + success: function(res) { + my_confirm.open_cancel(0); + if (res.data.code == 0) { + getApp().my_warnning("取消成功", 1, th); + var start = 'tment_details[' + 0 + '].State'; + th.setData({ + [start]: 3 + }) + } else { + getApp().my_warnning(res.data.msg, 0, th); + } + } + }) + } + ); + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function(options) { + var th = this; + th.setData({ + number: options.number + }) + }, + //查询美容师详情 + query_bea: function() { + var th = this; + var number = th.data.number; + var url = "/api/weshop/marketing/reservation/reservation/page"; + getApp().request.promiseGet(url, { + data: { + storeId: a.stoid, + userId: d.user_id, + number: number + } + }).then(res => { + wx.hideLoading(); + if (res.data.code == 0) { + var data = res.data.data.pageData; + var arrangeTime = data[0].ArrangeTime.substring(0, 11); + var day = data[0].ArrangeTime.substring(11, 16); + th.setData({ + tment_details: data, + arrangeTime: arrangeTime, + day: day + }) + + } else { + getApp().my_warnning(res.data.msg, 0, th); + } + }) + }, + //显示核销码 + code_show: function(e) { + var th = this; + //--获取成功的时候-- + var no = e.currentTarget.dataset.order_sn; + var qc_com = th.selectComponent("#qc_com"); //组件的id + var obj = { + val: no, + content: "请将二维码展示给核销员,使用更快捷" + }; + qc_com.open(obj) + }, + //跳到首页 + goto: function(e) { + var th = this; + wx.navigateTo({ + url: '/pages/index/index/index', + }) + }, + /** + * 生命周期函数--监听页面显示 + */ + onShow: function() { + var th = this; + th.query_bea(); + }, + //关闭导航 + close: function () { + var th = this; + var nav_b = th.selectComponent("#nav_b"); //组件的id + nav_b.close_box(); + } +}) \ No newline at end of file diff --git a/packageA/pages/my_service/tment_details.json b/packageA/pages/my_service/tment_details.json new file mode 100644 index 0000000..98e6ad7 --- /dev/null +++ b/packageA/pages/my_service/tment_details.json @@ -0,0 +1,9 @@ +{ + "navigationBarTitleText": "预约详情", + "usingComponents": { + "qr_code": "/components/qr_code/qr_code", + "warn": "/components/long_warn/long_warn", + "my_confirm": "/components/my_confirm/my_confirm", + "nav_b": "/components/nav_b/nav_b" + } +} \ No newline at end of file diff --git a/packageA/pages/my_service/tment_details.wxml b/packageA/pages/my_service/tment_details.wxml new file mode 100644 index 0000000..a6c137b --- /dev/null +++ b/packageA/pages/my_service/tment_details.wxml @@ -0,0 +1,126 @@ + + + + + + 预约状态: + 未服务 + 已服务 + 已过期 + 已取消 + 已评价 + + + + + + + 预约订单: + {{number}} + + + + + + + 预约门店: + {{item.StorageName}} + + + + + 预约项目: + {{item.ServiceName}} + + + + + 预约时间: + {{arrangeTime}} + {{day}} + + + + + + + + + 服务美容师: + + + 预约美容师: + + + {{item.BeauticianName}} + + + + + + + + 人: + + {{item.VIPName}} + + + + + + + 号: + + {{item.MobileTel}} + + + + + + + + + + + + + + 温馨提示 + + 1.预约成功后需在指定时间前到达; + 2.如有任何问题可致电咨询; + 3.如需退约,需提前取消。 + + + + + + 取消预约 + + + 我的服务 + + + + 更改时间 + + + 发表评价 + + + 查看评价 + + + 重新预约 + + + + + + + + + + + + \ No newline at end of file diff --git a/packageA/pages/my_service/tment_details.wxss b/packageA/pages/my_service/tment_details.wxss new file mode 100644 index 0000000..d525a6a --- /dev/null +++ b/packageA/pages/my_service/tment_details.wxss @@ -0,0 +1,118 @@ +page { + width: 100%; + background-color: rgb(238, 238, 238); +} + +/* 公用 */ + +.lf { + padding: 0rpx 40rpx; +} + +.bt { + margin: 0rpx 15rpx; + padding: 0rpx 25rpx; + border-top: 2rpx dashed rgb(238, 238, 238); + padding-top: 50rpx; + padding-bottom: 50rpx; +} + +.bmt { + margin-bottom: 35rpx; +} + +.name { + width: 160rpx; + margin-right: 25rpx; +} + +.value { + max-width: 390rpx; +} + +/* 公用 */ + +.container { + padding-bottom:70rpx; +} + +.padding{ + margin: 0rpx 20rpx; +} + +.Subscriber { + overflow: hidden; + margin-top: 25rpx; + background-color: rgb(255, 255, 255); + border-radius: 10rpx; +} + +.statusBar { + height: 80rpx; + background-color: rgb(214, 1, 33); + color: rgb(255, 255, 255); +} + +.date { + margin-right: 25rpx; +} + +.items { + margin: 40rpx 0rpx; +} + +.Tips { + margin-top: 20rpx; + padding-top: 35rpx; + height: 255rpx; + border-radius: 10rpx; + background-color: rgb(255, 255, 255); + margin-bottom: 50rpx; +} + +.Cozy { + width: 165rpx; + height: 43rpx; + margin-bottom: 20rpx; + color: rgb(255, 255, 255); + background-size: 100%; +} + +.subs { + width: 710rpx; + padding: 15rpx 20rpx; + position: fixed; + bottom:0rpx; + background-color: rgb(255,255,255); +} + +.sub { + width: 325rpx; + height: 65rpx; + border-radius: 30rpx; + color: rgb(255, 255, 255); +} +.code{ + margin-left: 10rpx; + width: 50rpx; + height: 50rpx; +} +.rb { + background-color: rgb(214, 1, 33); +} + +/* 棒槌 */ + +.Stickl { + width: 39rpx; + height: 10rpx; + background-color: rgb(153, 153, 153); + transform: rotate(270deg); + border-radius: 20rpx; + left: 95rpx; + top: -15rpx; +} + +.Stickr { + left: 590rpx; +} diff --git a/packageA/pages/my_service/tment_eval.js b/packageA/pages/my_service/tment_eval.js new file mode 100644 index 0000000..3c60c6a --- /dev/null +++ b/packageA/pages/my_service/tment_eval.js @@ -0,0 +1,287 @@ + var e = getApp(), + a = e.globalData.setting, + os = a, + t = e.request, + d = e.globalData; +Page({ + + /** + * 页面的初始数据 + */ + data: { + url: a.url, //接口网址 + iurl: a.imghost, + defimgurl: "/miniapp/images/no-head.jpg", + stars_index: -1, //当前点击的星星下标 + labels: [], //星级标签数组 + sub_evaluate: 0, //是否评价成功 + proposal: "", //用户输入的建议 + proposal_size: 100, //评价意见和建议限定字数 + number: "", //订单单号 + beautician: "", //美容师信息 + fromType: "服务评价", //评价来源 + arrangeTime: "", //服务日期 + is_evaluate: 0, //是否评价 + EvaluateDatetime: "", //评价时间 + is_act:0, //是否能购获取图片 + actId:0, //活动ID + giftBagId:0, //礼包ID + + }, + //点击星级 + check_stars: function(e) { + var th = this; + var is_evaluate = th.data.is_evaluate; //0可点击 + if (is_evaluate == 0) { + var index = e.currentTarget.dataset.index; + var stars_index = th.data.stars_index; + if (index != stars_index) { + var url = "/api/weshop/marketing/reservation/star/label/list"; + getApp().request.promiseGet(url, { + data: { + Star: index + 1, + storeId: a.stoid + } + }).then(res => { + if (res.data.code == 0) { + th.setData({ + labels: res.data.data + }) + } else { + getApp().my_warnning(res.data.msg, 0, th); + return; + } + }) + th.setData({ + stars_index: index + }) + } + } + }, + //输入评价意见和建议 + input_proposal: function(e) { + var th = this; + var value = e.detail.value; + th.setData({ + proposal: value + }) + }, + //图片失败,默认图片 + bind_bnerr1: function (e) { + var th = this; + var _errImg = e.target.dataset.errorimg; + var _Img = e.target.dataset.img; + if (_Img != undefined) { + var _errObj = {}; + _errObj[_errImg] = "/miniapp/images/no-head.jpg"; + th.setData(_errObj) //注意这里的赋值方式,只是将数据列表中的此项图片路径值替换掉 ; + } + }, + //选择标签 + check_label: function(e) { + var th = this; + var evaluate = th.data.is_evaluate; //0为未评价,未评价才可点击标签 + if (evaluate == 0) { + var index = e.currentTarget.dataset.index; + var label_id = th.data.labels[index].check; + var labels = 'labels[' + index + '].check'; + if (label_id) { + label_id = 0 + } else { + label_id = 1 + } + th.setData({ + [labels]: label_id + }) + } + }, + //查询美容师信息 + query_bea: function() { + var th = this; + var url = "/api/weshop/marketing/reservation/reservation/page"; + var number = th.data.number; //订单编号 + getApp().request.promiseGet(url, { + data: { + storeId: a.stoid, + userId: d.user_id, + number: number + } + }).then(res => { + if (res.data.code == 0) { + var data = res.data.data.pageData; + var arrangeTime = data[0].ArrangeTime; + th.setData({ + beautician: data, + arrangeTime: arrangeTime + }) + } else { + getApp().my_warnning(res.data.msg, 0, th); + } + }) + }, + //获取预约评价 + evaluate_get: function() { + var th = this; + var url = "/api/weshop/evaluation/evaluate/get"; + getApp().request.promiseGet(url, { + data: { + number: th.data.number, + storeId: a.stoid + } + }).then(res => { + if (res.data.code == 0) { + th.setData({ + stars_index: res.data.data.Star-1, + labels: res.data.data.EvaluationList, + proposal: res.data.data.Remark, + EvaluateDatetime: res.data.data.EvaluateDatetime.substring(0, 19) + }) + } else { + getApp().my_warnning(res.data.msg, 0, th); + } + }) + }, + //提交评价 + evaluate_save: function() { + var th = this; + var stars = th.data.stars_index; //评价星级 + var proposal = th.data.proposal; + //判断是否评级 + if (stars < 0) { + getApp().my_warnning("请进行评分", 0, th); + return false; + } else if (proposal == "") { + getApp().my_warnning("给点建议呗", 0, th); + return false; + } + wx.showLoading({ + title: '加载中', + }) + var labels = th.data.labels; //星级标签数组 + var evaLabList = []; //用户选择的评价标签 + // 查询评价标签 + for (var i = 0; i < labels.length; i++) { + if (labels[i].check) { + evaLabList.push(labels[i].LabelName); + } + } + var url = th.data.url + "/api/weshop/evaluation/evaluate/insert"; + var posNo = th.data.number; //收银单号 + var proposal = th.data.proposal; //用户建议内容 + var fromType = th.data.fromType; //评价来源 + var json = { + "evaLabList": evaLabList, + "fromType": 2, + "number": posNo, + "remark": proposal, + "star": stars + 1, + "storeId": a.stoid + }; + var data = JSON.stringify(json); //转换成json格式 + wx.request({ + url: url, + data: data, + method: 'POST', + header: { + 'content-type': 'application/json' + }, // 设置请求的 header + success: function(res) { + wx.hideLoading(); + if (res.data.code == 0) { + getApp().my_warnning("评价成功", 1, th); + var namber=th.data.number; + setTimeout(function() { + wx.redirectTo({ + url: "/pages/user/my_service/tment_eval?Number="+namber+"&evaluate="+1 + }); + }, 2000); + } else { + getApp().my_warnning(res.data.msg, 0, th); + } + } + }) + + }, + //图片失败,默认图片 + bind_bnerr1: function(e) { + var th = this; + var _errImg = e.target.dataset.errorimg; + var _Img = e.target.dataset.img; + if (_Img != undefined) { + + var _errObj = {}; + _errObj[_errImg] = th.data.iurl+"/miniapp/images/no-head.jpg"; + th.setData(_errObj) //注意这里的赋值方式,只是将数据列表中的此项图片路径值替换掉 ; + } + }, + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function(options) { + var th = this; + th.setData({ + number: options.Number, + is_evaluate: options.evaluate + }) + th.query_bea(); + th.judge_act(); + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function() { + var th = this; + var is_evaluate = th.data.is_evaluate; + if (is_evaluate == 1) { + th.evaluate_get(); + } + }, + //评价其他跳转 + evaluate_qt:function(){ + + wx.redirectTo({ + url: "/pages/user/my_service/tment_order_list?state="+2 + }); + }, + //点击领取礼包 + clike_lb:function(){ + + var id=this.data.actId; + var gifbagid = this.data.gifbagid; + console.log(id,"订单", this.data.number), + wx.redirectTo({ + url: "/pages/giftpack/evaluategift/evaluategift?actId="+id+ "&orderType=2&orderNumber="+this.data.number + }); + + }, + + //--评价有礼判断--- + judge_act: function () { + var th = this; + var url = "/api/weshop/marketing/comment/act/judge"; + getApp().request.promiseGet(url, { + data: { + orderNumber: th.data.number, + orderType: 2, + storeId: a.stoid, + userId: d.user_id + } + }).then(res => { + if (res.data.code == 0) { + var id = res.data.data.id; + var giftbagid = res.data.data.giftbagid; + th.setData({ + is_act: 1, + actId: id, + giftBagId: giftbagid + }) + } else{ + th.setData({ + is_act:0 + }) + } + }) + }, + +}) \ No newline at end of file diff --git a/packageA/pages/my_service/tment_eval.json b/packageA/pages/my_service/tment_eval.json new file mode 100644 index 0000000..8d44d3f --- /dev/null +++ b/packageA/pages/my_service/tment_eval.json @@ -0,0 +1,7 @@ +{ + "navigationBarTitleText": "预约评价", + "usingComponents": { + "qr_code": "/components/qr_code/qr_code", + "warn": "/components/long_warn/long_warn" + } +} \ No newline at end of file diff --git a/packageA/pages/my_service/tment_eval.wxml b/packageA/pages/my_service/tment_eval.wxml new file mode 100644 index 0000000..2a52ff8 --- /dev/null +++ b/packageA/pages/my_service/tment_eval.wxml @@ -0,0 +1,105 @@ + + + + + + + + + + + + 服务美容师: + + {{it.BeauticianName}} + + + + + 服务项目: + {{it.ServiceName}} + + + + + 服务时间: + {{it.WriteTime}} + + + + + 评价时间: + {{EvaluateDatetime}} + + + + + + + + + + + + + + + + + {{proposal}} + + + + + + + {{item.LabelName}} + + + + + + + {{item.LabelName}} + + + + + + + + + + + + + + + + 评价成功 + + + + + + + 确认提交 + + + + + + + 评价其他 + + + + 点击领取礼品 + + + \ No newline at end of file diff --git a/packageA/pages/my_service/tment_eval.wxss b/packageA/pages/my_service/tment_eval.wxss new file mode 100644 index 0000000..8b0b898 --- /dev/null +++ b/packageA/pages/my_service/tment_eval.wxss @@ -0,0 +1,144 @@ +.container { + border-top: 7rpx solid rgb(245, 245, 245); + padding-bottom: 100rpx; + background-color: rgb(255, 255, 255); +} + +.head { + height: 270rpx; +} + +.headimg { + width: 190rpx; + height: 190rpx; + border-radius: 50%; +} + +.item { + margin-bottom: 20rpx; +} + +.itemlf { + width: 195rpx; +} + +.itemlr { + width: 360rpx; +} + +.starss { + margin-top: 15rpx; + border-top: 3rpx dashed rgb(203, 203, 203); + padding-top: 25rpx; + padding-left: 15rpx; +} + +.stars { + width: 50rpx; + height: 50rpx; + margin-right: 20rpx; +} + +.datetime { + width: 190rpx; +} + +.tea_labs { + padding: 0rpx 56rpx; + margin-top: 20rpx; +} + +.proposal { + right: 20rpx; + bottom: 20rpx; + color: rgb(152, 152, 152); +} + +.textarea { + width: 100%; + height: 200rpx; + margin-top: 70rpx; + border: 2rpx solid rgb(203, 203, 203); + border-radius: 13rpx; + padding-top: 25rpx; + padding-left: 30rpx; + margin-bottom: 30rpx; + padding-right: 15rpx; + padding-bottom: 20rpx; +} + +.labels { + display: inline-block; + max-height: 240rxp; + line-height: 50rpx; + padding-left: 15rpx; +} + +.label { + padding: 0rpx 10rpx; + height: 48rpx; + line-height: 48rpx; + border: 2rpx solid rgb(218, 218, 218); + color: rgb(152, 152, 152); + border-radius: 5rpx; + margin-right: 20rpx; + width: 165rpx; + display: inline-block; + text-align: center; + margin-bottom: 10rpx; +} + +/* 选择标签的样式 */ + +.checklabel { + border: 2rpx solid rgb(214, 1, 33); + background-color: rgb(255, 231, 235); + color: rgb(214, 1, 33); +} + +.feedback { + color: rgb(152, 152, 152); + margin-bottom: 70rpx; +} + +.Subs { + background-color: rgb(255, 255, 255); + position: fixed; + width: 100%; + bottom: 40rpx; +} + +.Submission { + width: 400rpx; + height: 65rpx; + border-radius: 60rpx; + background-color: rgb(214, 1, 33); + color: rgb(255, 255, 255); +} +.Submission.yellow-b{ + background-color: #ffb03f; + +} + +.clonri { + margin: 0rpx; +} + +.subSuccess { + position: fixed; + z-index: 3; + top: 435rpx; + left: 66rpx; + background-color: #a6a6a6a4; + width: 615rpx; + height: 315rpx; + border-radius: 20rpx; + color: rgb(255, 255, 255); +} + +.Success { + width: 110rpx; + height: 110rpx; + margin-top: 50rpx; + margin-bottom: 45rpx; +} diff --git a/packageA/pages/my_service/tment_order_list.js b/packageA/pages/my_service/tment_order_list.js new file mode 100644 index 0000000..8ad4b7f --- /dev/null +++ b/packageA/pages/my_service/tment_order_list.js @@ -0,0 +1,230 @@ +var e = getApp(), + a = e.globalData.setting, + os = a, + t = e.request, + d = e.globalData; +Page({ + + /** + * 页面的初始数据 + */ + data: { + url: a.url, //接口网址 + iurl: a.imghost, //图片网址 + activeCategoryId: 0, //类别选中下标 + defimgurl: "/miniapp/images/yyservice/yyxmdefault.jpg", + categories: [{ + name: "全部", + id: 0 + }, { + name: "未服务", + id: 1 + }, { + name: "已服务", + id: 2 + }, { + name: "已过期", + id: 3 + }], + tm_order_list: [], //我的预约订单列表 + curpage: 1, //当前分页数 + pageSize: 10, //页大小 + total: 0, + ismore: 0, //是否加载完毕 + is_read: 0, //是否加载接口 + states: 4, //4为取消预约 + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function(options) { + var state=options.state; + if (state != null && state != undefined && state!=""){ + this.setData({ activeCategoryId: state }); + } + + }, + changeTab: function(e) { + var th = this; + var id = e.currentTarget.dataset.id; + var activeCategoryId = th.data.activeCategoryId; + if (id != activeCategoryId) { + th.setData({ + activeCategoryId: id, + tm_order_list: [], + curpage: 1, + ismore: 0, + is_read: 0 + }) + th.query_orderList(); + } else { + return false; + } + }, + //显示核销码 + code_show: function(e) { + var th = this; + //--获取成功的时候-- + var no = e.currentTarget.dataset.order_sn; + var qc_com = th.selectComponent("#qc_com"); //组件的id + var obj = { + val: no, + content: "请将二维码展示给核销员,使用更快捷" + }; + qc_com.open(obj) + }, + query_orderList: function() { + wx.showLoading({ + title: '加载中', + }) + var th = this; + var url = "/api/weshop/marketing/reservation/reservation/page"; + + var state_index = th.data.activeCategoryId; + if (state_index == 0) { + state_index = ""; + } else { + --state_index; + } + th.setData({ + is_read: 0 + }) + getApp().request.promiseGet(url, { + data: { + storeId: a.stoid, + userId: d.user_id, + state: state_index, + page: th.data.curpage, + pageSize: th.data.pageSize + } + }).then(res => { + wx.hideLoading(); + if (res.data.code == 0) { + th.data.curpage++; + var arr1 = th.data.tm_order_list; + var arr2 = res.data.data.pageData; + var arr3 = [...arr1, ...arr2]; + for(var i = 0;i + + + + {{item.name}} + + + + + + + + + 订单编号:{{item.Number}} + + + 未服务 + 已服务 + 已过期 + 已取消 + 已评价 + + + + + + + + + + + + + + 预约门店: + {{item.StorageName}} + + + 预约项目: + {{item.ServiceName}} + + + + 服务美容师: + + + + 预约美容师: + + + {{item.BeauticianName}} + + + 预约时间: + {{item.ArrangeTime}} + + + 服务时间: + {{item.WriteTime}} + + + + + + + + + 取消预约 + + + 查看详情 + + 更改时间 + 发表评价 + 重新预约 + 评价详情 + + + + + 到底了 + + + + + + + + + + + 无预约记录 + + + 立即预约 + + + + + + + + + \ No newline at end of file diff --git a/packageA/pages/my_service/tment_order_list.wxss b/packageA/pages/my_service/tment_order_list.wxss new file mode 100644 index 0000000..2219dee --- /dev/null +++ b/packageA/pages/my_service/tment_order_list.wxss @@ -0,0 +1,152 @@ +page { + height: 100%; +} + +.container { + background-color: rgb(255, 255, 255); +} + +.type-navbar { + border-top: 3rpx solid rgb(221, 221, 221); + display: flex; + justify-content: space-between; + position: fixed; + background-color: rgb(255,255,255); + width:696rpx; +} +.itemMax{ + margin-top: 93rpx; +} + +.type-box { + height: 88rpx; + line-height: 88rpx; + padding: 0rpx 15rpx; + border-bottom: 5rpx solid rgb(255, 255, 255); +} + +.chtypebox { + border-bottom: 5rpx solid rgb(224, 18, 18); +} + +.Commodity_number { + height: 80rpx; + border-top: 13rpx solid rgb(245, 245, 245); +} + +.Commodity_number image { + width: 30rpx; + height: 32rpx; +} + +.padding { + padding: 0rpx 27rpx; +} + +.lin { + border-left: 2rpx solid rgb(211, 29, 54); + margin-left: 17rpx; + margin-right: 14rpx; + height: 40rpx; +} + +.order_number { + max-width: 550rpx; +} +.state{ + color: rgb(216,63,82); +} +.items { + border-top: 4rpx solid rgb(245, 245, 245); + border-bottom: 4rpx solid rgb(245, 245, 245); + height: 260rpx; +} +.code{ + width: 55rpx; + height: 55rpx; +} +.itemimage { + width: 190rpx; + height: 190rpx; + margin-right: 20rpx; + border-radius: 50%; + border: 1px solid #eee; +} + +.details { + height: 190rpx; +} + +.itemname { + width: 150rpx; + margin-right: 20rpx; +} + +.itemvalue { + max-width: 300rpx; +} + +.Unimportance { + width: 140rpx; + height: 40rpx; + line-height: 40rpx; + border-radius: 8rpx; + background-color: rgb(255, 255, 255); + margin-left: 20rpx; + border: 2rpx solid rgb(191, 191, 191); +} + +.important { + background-color: rgb(212, 28, 52); + border: 2rpx solid rgb(212, 28, 52); + color: rgb(255, 255, 255); +} + +.Unim { + height: 110rpx; +} + +.exactly { + height: 80rpx; + background-color: rgb(245, 245, 245); +} + +.exactly_text { + margin: 0rpx 15rpx; +} + +.line { + border-top: 2rpx solid rgb(0, 0, 0); + width: 130rpx; +} + +/* 无预约 */ + +.empty_order image { + width: 300rpx; + height: 280rpx; + margin-top: 202rpx; +} + +.empty_order .xc-ash { + margin-top: 10rpx; + font-weight: 600px; +} + +.empty_order navigator { + margin-top: 60rpx; + border-radius: 40rpx; +} + +.empty_order navigator view { + width: 247rpx; + height: 65rpx; + background-color: rgb(255, 72, 72); + border-radius: 40rpx; +} +.base{ + display: flex; + height: 38rpx; + line-height: 38rpx; + align-items: baseline; +} \ No newline at end of file