diff --git a/甲情_甲意/.mini-ide/compileMode.json b/甲情_甲意/.mini-ide/compileMode.json index 0d5ab65..bb090f5 100644 --- a/甲情_甲意/.mini-ide/compileMode.json +++ b/甲情_甲意/.mini-ide/compileMode.json @@ -109,6 +109,21 @@ "title": "支付界面", "page": "pages/zhifujiemian/zhifujiemian", "launchMode": "common" + }, + { + "title": "商品界面", + "page": "pages/shangpinjiemian/shangpinjiemian", + "launchMode": "common" + }, + { + "title": "预约支付", + "page": "pages/yuyuezhifu/yuyuezhifu", + "launchMode": "common" + }, + { + "title": "pages/shanmenspjm/shanmenspjm", + "page": "pages/shanmenspjm/shanmenspjm", + "launchMode": "common" } ] } \ No newline at end of file diff --git a/甲情_甲意/miniprogram/app.json b/甲情_甲意/miniprogram/app.json index b478554..7a0b1f7 100644 --- a/甲情_甲意/miniprogram/app.json +++ b/甲情_甲意/miniprogram/app.json @@ -23,7 +23,11 @@ "pages/meijiashirenzheng/meijiashirenzheng", "pages/pingjia/pingjia", "pages/test1/test1", - "pages/denglutest/denglutest" + "pages/denglutest/denglutest", + "pages/yuyuezhifu/yuyuezhifu", + "pages/shnagmendianpu/shnagmendianpu", + "pages/yuyuezhifusm/yuyuezhifusm", + "pages/yuyuejiemian/yuyuejiemian" ], "window": { "defaultTitle": "甲情甲意", diff --git a/甲情_甲意/miniprogram/pages/daodianfuwu/daodianfuwu.axml b/甲情_甲意/miniprogram/pages/daodianfuwu/daodianfuwu.axml index 29e46f5..728ba71 100644 --- a/甲情_甲意/miniprogram/pages/daodianfuwu/daodianfuwu.axml +++ b/甲情_甲意/miniprogram/pages/daodianfuwu/daodianfuwu.axml @@ -19,7 +19,7 @@ - + {{item.businessName}} diff --git a/甲情_甲意/miniprogram/pages/dianpuzhuye/dianpuzhuye.acss b/甲情_甲意/miniprogram/pages/dianpuzhuye/dianpuzhuye.acss index 50e696d..eadc654 100644 --- a/甲情_甲意/miniprogram/pages/dianpuzhuye/dianpuzhuye.acss +++ b/甲情_甲意/miniprogram/pages/dianpuzhuye/dianpuzhuye.acss @@ -1,8 +1,7 @@ .cebian { width: 20%; - height: 100v; + height: 100vh; background-color: #efeced; - overflow: hidden; } .text { @@ -26,17 +25,20 @@ } .xinxi{ width: 80%; - height: 100%; + height: 550px; display: flex; - justify-content: center; align-items: center; flex-direction: column; - overflow-y: scroll + overflow-y: scroll; + overflow-x: hidden; + } .pages{ width: 100%; + height: 560px; display: flex; margin-top: 30rpx; + } .shop{ width: 90%; @@ -73,7 +75,7 @@ background-color: #fb96b1; } .yuyuekuang{ - width: 100%; + width: 95%; display: flex; justify-content: space-between; } @@ -177,7 +179,8 @@ height: 20px; .pingjia{ width: 100%; display: flex; - justify-content: center; + flex-direction: column; + align-items: center; margin-top: 10rpx; } .pingjiakuang{ diff --git a/甲情_甲意/miniprogram/pages/dianpuzhuye/dianpuzhuye.axml b/甲情_甲意/miniprogram/pages/dianpuzhuye/dianpuzhuye.axml index 8dd2929..767d170 100644 --- a/甲情_甲意/miniprogram/pages/dianpuzhuye/dianpuzhuye.axml +++ b/甲情_甲意/miniprogram/pages/dianpuzhuye/dianpuzhuye.axml @@ -62,7 +62,7 @@ - + {{item.commoditiesName}} @@ -74,7 +74,7 @@ 预约 - + @@ -83,15 +83,15 @@ - + - - 陌路 + + {{item.user.username}} 颜色:冰透系列裸色01色+烤灯-简约 - aslkjhdklajshdkalsdhaskljdhaskldhaskhdaksjhdkjsh + {{item.userRating.review}} diff --git a/甲情_甲意/miniprogram/pages/dianpuzhuye/dianpuzhuye.js b/甲情_甲意/miniprogram/pages/dianpuzhuye/dianpuzhuye.js index 6b0da18..8b62544 100644 --- a/甲情_甲意/miniprogram/pages/dianpuzhuye/dianpuzhuye.js +++ b/甲情_甲意/miniprogram/pages/dianpuzhuye/dianpuzhuye.js @@ -42,6 +42,7 @@ Page({ showShoppingCart: true, // 控制购物车部分是否显示 showComments: false, // 控制评论部分是否显示 showBusinessInfo: false, // 控制商家信息是否显示 + pingjia:[], }, onLoad(options) { // Extract userId and address from options @@ -54,7 +55,7 @@ Page({ const storeStatus = options.storeStatus; const id = options.id const businessPhone = options.businessPhone - console.log(id,'zheyedesaksdas'); + console.log(id,'这是店铺id吗'); // Set them in data for use in the page this.setData({ userId: userId, @@ -72,10 +73,10 @@ Page({ method: 'POST', data: { businessId: id, - commoditiesGroupId: id, + commoditiesGroupId: "", commoditiesName: "", current: 0, - pageSize: 2, + pageSize: 100, sortField: "", sortOrder: "", status: "", @@ -101,7 +102,7 @@ Page({ console.error('Request failed', error); } }); - + this.pingjia() }, soucang() { my.getStorage({ @@ -115,7 +116,8 @@ Page({ url: url + '/api/collect/add', method: 'POST', data: { - businessId: businessId // 使用 businessId 来请求收藏 + businessId: businessId, // 使用 businessId 来请求收藏 + userId: userInfo.id }, headers: { 'content-type': 'application/json', @@ -123,6 +125,7 @@ Page({ }, dataType: 'json', success: (res) => { + console.log(res); if(res.data.code===0){ my.alert({ content: '收藏成功' @@ -159,57 +162,37 @@ Page({ }, }); }, - - // meijiahsi(){ - // my.request({ - // url: url + '/api/manicurist/userQueryAll', - // method: 'GET', - // data: { - // businessId: this.data.id - // }, - // headers: { - // 'content-type': 'application/json', - // }, - // dataType: 'json', - // success: (res) => { - // console.log('Request succeeded:', res); - // if (res.data && res.data.data) { - // this.setData({ - // meijiashi: res.data.data, // 更新 tuijian 列表 - // }); - // } else { - // console.log('shibaile') - // } - // }, - // fail: (error) => { - // console.error('Request failed', error); - // } - // }); - // }, pingjia(){ - my.navigateTo({ - url:'/pages/shangpinpingjia/shangpinpingjia' - }) + my.request({ + url: url + '/api/level/listBusinessRating', + method: 'GET', + data: { + businessId:this.data.id, + }, + headers: { + 'content-type': 'application/json', + }, + dataType: 'json', + success: (res) => { + console.log(res,'评价部分'); + if(res.data.code===0){ + this.setData({ + pingjia:res.data.data, + useridpingjia:res.data.data.userId + }) + } + }, + fail: (error) => { + console.error('请求失败: ', JSON.stringify(error)); + my.alert({ content: '请求失败,请稍后重试' }); + }, + }); }, zixun(){ my.navigateTo({ url:'/pages/zixunmeijiashi/zixunmeijiashi' }) }, - shangpinjiemian(item){ - const id = item.target.dataset.num - console.log('传递的数据:', id); - const ids = id.id - const commoditiesPrice = id.commoditiesPrice - const commoditiesName = id.commoditiesName - const commoditiesImage = id.commoditiesImage - const businessId = id.businessId - console.log('Address being passed: ',id,commoditiesPrice,commoditiesName,commoditiesImage,businessId); - my.navigateTo({ - url:`/pages/shangpinjiemian/shangpinjiemian?commoditiesPrice=${commoditiesPrice}&&commoditiesName=${commoditiesName}&&commoditiesImage=${commoditiesImage}&&ids=${ids}&&businessId=${businessId}` - }) - console.log(ids,businessId,commoditiesImage,commoditiesName,commoditiesPrice+'这是商品的') - }, // 点击事件处理函数 selectItem(e) { const id = e.currentTarget.dataset.id; @@ -282,4 +265,80 @@ chaxunzhuangtai(e) { }); } }, +jiaru(item) { + const id = item.target.dataset.num + console.log('传递的数据:', id); + const ids = id.id + const businessId = id.businessId + my.getStorage({ + key: 'userInfo', + success: (res) => { + const userInfo = res.data; + console.log(userInfo); + if (userInfo && userInfo.cookie) { + my.request({ + url: url + '/api/cart/add', + method: 'POST', + data: { + businessId: businessId, + commoditiesId: ids, + quantity: 1, + selectedOptions: "", + userId: userInfo.id + }, + headers: { + 'content-type': 'application/json', + 'Cookie': userInfo.cookie, // 通过头部传递 cookie + }, + dataType: 'json', + success: (res) => { + if(res.data.code===0){ + console.log(res); + my.alert({ content: '成功添加到购物车' }); + } + else if(res.data.code===40100){ + my.alert({ + content: '登录信息已过期,请重新登录' + }); + my.navigateTo({ + url:'/pages/denglu/denglu' + }) + }else{ + console.log(res,'shibaile'); + } + }, + fail: (error) => { + console.error('请求失败: ', JSON.stringify(error)); + my.alert({ content: '请求失败,请稍后重试' }); + }, + }); + } else { + my.alert({ + content: '您未登录,请先登录。', + success: () => { + my.navigateTo({ + url: '/pages/denglu/denglu', + }); + }, + }); + } + }, +}); +}, +shangpinjiemian(item){ + const id = item.target.dataset.num + console.log('传递的数据:', id); + const ids = id.id + const commoditiesPrice = id.commoditiesPrice + const commoditiesName = id.commoditiesName + const commoditiesImage = id.commoditiesImage + const businessId = id.businessId + const dianpuid = this.data.id + const businessName =this.data.businessName + console.log('Address being passed: ',id,commoditiesPrice,commoditiesName,commoditiesImage,businessId); + my.navigateTo({ + url:`/pages/shangpinjiemian/shangpinjiemian?commoditiesPrice=${commoditiesPrice}&&commoditiesName=${commoditiesName}&&commoditiesImage=${commoditiesImage}&&ids=${ids}&&businessId=${businessId}&&dianpuid=${dianpuid}&&businessName=${businessName}` + }) + console.log(ids,businessId,commoditiesImage,commoditiesName,commoditiesPrice+'这是商品的',dianpuid+'这是店铺的') +}, }); \ No newline at end of file diff --git a/甲情_甲意/miniprogram/pages/gouwuche/gouwuche.js b/甲情_甲意/miniprogram/pages/gouwuche/gouwuche.js index 9f0bda4..244c457 100644 --- a/甲情_甲意/miniprogram/pages/gouwuche/gouwuche.js +++ b/甲情_甲意/miniprogram/pages/gouwuche/gouwuche.js @@ -127,10 +127,10 @@ calculateTotalPrice() { }, // 页面加载时获取商品数据 - onLoad() { + onShow() { this.setData({ select_all: false, - products:[], + selectedProducts:[], }); my.getStorage({ key: 'userInfo', @@ -140,13 +140,16 @@ calculateTotalPrice() { my.request({ url: url + '/api/cart/selectByUserId', method: 'POST', - data: { id: this.data.id }, + data: { + id: userInfo.id + }, headers: { 'content-type': 'application/json', 'Cookie': userInfo.cookie, }, dataType: 'json', success: (res) => { + console.log(res,'hhhhhhhhhhhh'); if (res.data.code === 0) { console.log(res); const cartItems = res.data.data; @@ -191,14 +194,21 @@ calculateTotalPrice() { const userInfo = res.data; this.setData({ id: userInfo.id, // 获取 id + }); // 发送请求移除商品 if (userInfo && userInfo.cookie) { my.request({ url: url + '/api/cart/delete', method: 'POST', - data: { id: cartId }, // 使用 cartId 作为参数 - headers: { 'content-type': 'application/json', 'Cookie': userInfo.cookie }, + data: { + id: cartId, + userId: userInfo.id + }, // 使用 cartId 作为参数 + headers: { + 'content-type': 'application/json', + 'Cookie': userInfo.cookie + }, dataType: 'json', success: (res) => { console.log(res); diff --git a/甲情_甲意/miniprogram/pages/image/duihao.png b/甲情_甲意/miniprogram/pages/image/duihao.png new file mode 100644 index 0000000..1a35d43 Binary files /dev/null and b/甲情_甲意/miniprogram/pages/image/duihao.png differ diff --git a/甲情_甲意/miniprogram/pages/image/shangjiaruzu.png b/甲情_甲意/miniprogram/pages/image/shangjiaruzu.png index 3546a81..5fe3a15 100644 Binary files a/甲情_甲意/miniprogram/pages/image/shangjiaruzu.png and b/甲情_甲意/miniprogram/pages/image/shangjiaruzu.png differ diff --git a/甲情_甲意/miniprogram/pages/image/tuichudenglu.png b/甲情_甲意/miniprogram/pages/image/tuichudenglu.png index 17438c2..c9fd38d 100644 Binary files a/甲情_甲意/miniprogram/pages/image/tuichudenglu.png and b/甲情_甲意/miniprogram/pages/image/tuichudenglu.png differ diff --git a/甲情_甲意/miniprogram/pages/image/wodedingdan.png b/甲情_甲意/miniprogram/pages/image/wodedingdan.png index 8c3a124..9c6bcd4 100644 Binary files a/甲情_甲意/miniprogram/pages/image/wodedingdan.png and b/甲情_甲意/miniprogram/pages/image/wodedingdan.png differ diff --git a/甲情_甲意/miniprogram/pages/image/wodepingjia.png b/甲情_甲意/miniprogram/pages/image/wodepingjia.png index 3bcedee..f2f8ebb 100644 Binary files a/甲情_甲意/miniprogram/pages/image/wodepingjia.png and b/甲情_甲意/miniprogram/pages/image/wodepingjia.png differ diff --git a/甲情_甲意/miniprogram/pages/meijiashirenzheng/meijiashirenzheng.acss b/甲情_甲意/miniprogram/pages/meijiashirenzheng/meijiashirenzheng.acss index 95f8097..08f1658 100644 --- a/甲情_甲意/miniprogram/pages/meijiashirenzheng/meijiashirenzheng.acss +++ b/甲情_甲意/miniprogram/pages/meijiashirenzheng/meijiashirenzheng.acss @@ -1,8 +1,6 @@ .container { padding: 20px; } - - .section-title { font-size: 18px; font-weight: bold; @@ -72,19 +70,24 @@ margin-top: 20px; } .button { - background-color: #f3bfc1; /* Light pink background color */ - color: #000000; /* Text color */ - border-radius: 20px; /* Rounded edges */ - padding: 10px 20px; - text-align: center; + width: 80%; + height: 40px; + background-color: #f3bfc1; + color: #000000; + border-radius: 20px; font-size: 16px; - width: 300px; - margin-top: 20px; - cursor: pointer; /* 鼠标悬停时显示为点击样式 */ - position: relative; - left: 20px; + display: flex; + justify-content: center; + align-items: center; } .box{ position: relative; right: 13px; +} +.tijiao{ + width: 100%; + height: 100px; + display: flex; + justify-content: center; + align-items: center; } \ No newline at end of file diff --git a/甲情_甲意/miniprogram/pages/meijiashirenzheng/meijiashirenzheng.axml b/甲情_甲意/miniprogram/pages/meijiashirenzheng/meijiashirenzheng.axml index be0be4d..821adfc 100644 --- a/甲情_甲意/miniprogram/pages/meijiashirenzheng/meijiashirenzheng.axml +++ b/甲情_甲意/miniprogram/pages/meijiashirenzheng/meijiashirenzheng.axml @@ -5,6 +5,10 @@ 姓名 + + 性别 + + 电子邮箱 @@ -23,6 +27,10 @@ 身份证号 + + 擅长项目 + + 请选择省市 @@ -42,24 +50,14 @@ 请上传美甲师证明 + onUpload="{{onUpload ? onUpload : 'onUpload'}}" + uploadingText="上传中……" + uploadfailedText="上传失败" + > - - 请上传身份证照 - - - - 提交申请 + + 提交申请 + \ No newline at end of file diff --git a/甲情_甲意/miniprogram/pages/meijiashirenzheng/meijiashirenzheng.js b/甲情_甲意/miniprogram/pages/meijiashirenzheng/meijiashirenzheng.js index 9dc04c4..43bea06 100644 --- a/甲情_甲意/miniprogram/pages/meijiashirenzheng/meijiashirenzheng.js +++ b/甲情_甲意/miniprogram/pages/meijiashirenzheng/meijiashirenzheng.js @@ -29,14 +29,15 @@ Page({ url: url + '/api/manicurist/add', method: 'POST', data: { - certificate_path: this.data.selectedOption, + certificate_path: this.data.zhengshu, certification_number: this.data.idcard, email: this.data.person, - gender: 0, - issuing_authority: "hhh", + gender: this.data.xingbie, + issuing_authority: this.data.selectedOption, manicuristName: this.data.businessName, phone: this.data.phone, - specialties: "hhh" + specialties: this.data.shanchang, + userId: userInfo.id }, headers: { 'content-type': 'application/json', @@ -44,17 +45,18 @@ Page({ }, dataType: 'json', success: (res) => { + console.log(res); if(res.data.code===0){ my.navigateBack(); - my.alert({content:res.data.description}) + my.alert({content:'审核中请耐心等待'}) } elif(res.data.code===50001) { - my.alert({content:res.data.description}) + my.alert({content:'姓名已存在或参数有误'}) } elif(res.data.code===40100) { - my.alert({content:res.data.description}) + my.alert({content:'请先登录'}) } }, fail: (error) => { @@ -82,6 +84,18 @@ Page({ }); console.log(e.detail.value); }, + shanchang(e) { + this.setData({ + shanchang: e.detail.value, + }); + console.log(e.detail.value); + }, + xingbie(e) { + this.setData({ + xingbie: e.detail.value, + }); + console.log(e.detail.value); + }, person(e) { this.setData({ person: e.detail.value, @@ -174,7 +188,59 @@ validateForm() { }); return false; } + if (!this.data.zhengshu) { + my.showToast({ + content: '请选择省市', + type: 'none', + duration: 2000, + }); + return false; + } + if (!this.data.shanchang) { + my.showToast({ + content: '请选择省市', + type: 'none', + duration: 2000, + }); + return false; + } + if (!this.data.xingbie) { + my.showToast({ + content: '请选择省市', + type: 'none', + duration: 2000, + }); + return false; + } return true; // 所有验证通过 }, +// 证明 +onUpload(file) { + return new Promise((resolve, reject) => { + console.log('上传文件路径:', file); // 确保文件路径正确 + my.uploadFile({ + url: url + '/api/file/upload/server/not_login', + fileType: 'image', + name: 'file', + filePath: file.path, + formData: { + biz: 'card', + }, + success: res => { + resolve(file.path); + console.log('上传成功:', res); + const cunchu = JSON.parse(res.data) + this.setData({ + zhengshu:cunchu.data, + }) + console.log(this.data.yingyeimage,'hhhhhhhhhhhhhhh'); + }, + fail: (err) => { + console.log('上传失败:', err); + reject(); + }, + }); + }); +}, }); diff --git a/甲情_甲意/miniprogram/pages/shangjiaruzhu/shangjiaruzhu.acss b/甲情_甲意/miniprogram/pages/shangjiaruzhu/shangjiaruzhu.acss index 95f8097..2d17aac 100644 --- a/甲情_甲意/miniprogram/pages/shangjiaruzhu/shangjiaruzhu.acss +++ b/甲情_甲意/miniprogram/pages/shangjiaruzhu/shangjiaruzhu.acss @@ -72,19 +72,24 @@ margin-top: 20px; } .button { - background-color: #f3bfc1; /* Light pink background color */ - color: #000000; /* Text color */ - border-radius: 20px; /* Rounded edges */ - padding: 10px 20px; - text-align: center; + width: 80%; + height: 40px; + background-color: #f3bfc1; + color: #000000; + border-radius: 20px; font-size: 16px; - width: 300px; - margin-top: 20px; - cursor: pointer; /* 鼠标悬停时显示为点击样式 */ - position: relative; - left: 20px; + display: flex; + justify-content: center; + align-items: center; } .box{ position: relative; right: 13px; +} +.tijiao{ + width: 100%; + height: 100px; + display: flex; + justify-content: center; + align-items: center; } \ No newline at end of file diff --git a/甲情_甲意/miniprogram/pages/shangjiaruzhu/shangjiaruzhu.axml b/甲情_甲意/miniprogram/pages/shangjiaruzhu/shangjiaruzhu.axml index 8f0b699..2fad6c6 100644 --- a/甲情_甲意/miniprogram/pages/shangjiaruzhu/shangjiaruzhu.axml +++ b/甲情_甲意/miniprogram/pages/shangjiaruzhu/shangjiaruzhu.axml @@ -11,17 +11,22 @@ - - - 联系方式 - + + + 账号 + + + + 密码 + @@ -41,24 +46,32 @@ 请上传营业执照 + onUpload="{{onUpload ? onUpload : 'onUpload'}}" + uploadingText="上传中……" + uploadfailedText="上传失败" + > - 请上传身份证照 + 请上传身份证正面照 + onChange="onChange" + onUpload="{{onUpload1 ? onUpload1 : 'onUpload1'}}" + uploadingText="上传中……" + uploadfailedText="上传失败" + > + + + 请上传身份证反面照 + - 提交申请 - + + + 提交申请 diff --git a/甲情_甲意/miniprogram/pages/shangjiaruzhu/shangjiaruzhu.js b/甲情_甲意/miniprogram/pages/shangjiaruzhu/shangjiaruzhu.js index ef77615..3cd41b3 100644 --- a/甲情_甲意/miniprogram/pages/shangjiaruzhu/shangjiaruzhu.js +++ b/甲情_甲意/miniprogram/pages/shangjiaruzhu/shangjiaruzhu.js @@ -1,4 +1,5 @@ import cityList from './city'; +import {url} from '../request' Page({ data: { cityList, @@ -7,30 +8,38 @@ Page({ }, onLoad() {}, ruzhu(){ - // my.request({ - // url: url+'/api/business/add', - // method: 'POST', - // data: { - - // }, - // headers: { - // 'content-type': 'application/json', //默认值 - // }, - // dataType: 'json', - // success: (res)=> { - // my.alert({ content: 'success' }); - // }, - // fail: function (error) { - // console.error('fail: ', JSON.stringify(error)); - // }, - // complete: function (res) { - // my.hideLoading(); - // my.alert({ content: 'complete' }); - // }, - // }); - my.alert({ content: '正在审核中,请耐心等待' }); - my.navigateBack() + if (!this.validateForm()) { + return; // 验证未通过,阻止提交 + } + my.request({ + url: url+'/api/business/add', + method: 'POST', + data: { + address: this.data.selectedOption, + backIdCard: this.data.backIdCard, + businessName: this.data.businessName, + businessPhone: this.data.phone, + frontIdCard:this.data.frontIdCard, + license: this.data.yingyeimage, + shopkeeper: this.data.person, + userAccount: this.data.userAccount, + userPassword: this.data.userPassword + }, + headers: { + 'content-type': 'application/json', //默认值 + }, + dataType: 'json', + success: (res)=> { + console.log(res); + my.alert({ content: '正在审核中,请耐心等待' }); + my.navigateBack() + }, + fail: function (error) { + console.error('fail: ', JSON.stringify(error)); + }, + }); }, + // 获取数据 businessName(e) { this.setData({ businessName: e.detail.value, @@ -49,10 +58,220 @@ Page({ }); console.log(e.detail.value); }, - idcard(e) { + // idcard(e) { + // this.setData({ + // idcard: e.detail.value, + // }); + // console.log(e.detail.value); + // }, + userAccount(e) { this.setData({ - idcard: e.detail.value, + userAccount: e.detail.value, }); console.log(e.detail.value); }, + userPassword(e) { + this.setData({ + userPassword: e.detail.value, + }); + console.log(e.detail.value); + }, + // 地点选择 + handleCascaderPickerChange(cascaderValue, selectedOption, e) { + console.log('cityChange', cascaderValue, selectedOption, e); +}, +handleCascaderOnOk(cascaderValue, selectedOption, e) { + console.log('cityOk', cascaderValue, selectedOption, e); + const selectedCityLabels = selectedOption.map(option => option.label).join(' '); + + this.setData({ + selectedOption: selectedCityLabels + }); + + console.log('Selected cities:', this.data.selectedOption); +}, +// 前端校验 +validateForm() { + // 验证店铺名(非空) + if (!this.data.businessName) { + my.showToast({ + content: '店铺名不能为空', + type: 'none', + duration: 2000, + }); + return false; + } + if (!this.data.userPassword&&this.data.userPassword.length>=8) { + my.showToast({ + content: '密码不能为空,并且不少于8位', + type: 'none', + duration: 2000, + }); + return false; + } + if (!this.data.userAccount) { + my.showToast({ + content: '账号不能为空', + type: 'none', + duration: 2000, + }); + return false; + } + if (!this.data.person) { + my.showToast({ + content: '姓名不能为空', + type: 'none', + duration: 2000, + }); + return false; + } + // 验证电话(简单的正则校验) + const phoneRegex = /^1[3-9]\d{9}$/; + if (!this.data.phone || !phoneRegex.test(this.data.phone)) { + my.showToast({ + content: '请输入有效的手机号码', + type: 'none', + duration: 2000, + }); + return false; + } + + // 验证身份证号(简单的正则校验) + // const idcardRegex = /^\d{17}(\d|X)$/; + // if (!this.data.idcard || !idcardRegex.test(this.data.idcard)) { + // my.showToast({ + // content: '请输入有效的身份证号', + // type: 'none', + // duration: 2000, + // }); + // return false; + // } + + // 验证是否选择了城市 + if (!this.data.selectedOption) { + my.showToast({ + content: '请选择省市', + type: 'none', + duration: 2000, + }); + return false; + } + // 验证图片是否上传 + if (!this.data.yingyeimage) { + my.showToast({ + content: '请上传营业执照', + type: 'none', + duration: 2000, + }); + return false; + } + + if (!this.data.frontIdCard) { + my.showToast({ + content: '请上传身份证正面照', + type: 'none', + duration: 2000, + }); + return false; + } + + if (!this.data.backIdCard) { + my.showToast({ + content: '请上传身份证反面照', + type: 'none', + duration: 2000, + }); + return false; + } + + return true; // 所有验证通过 +}, +onChange(fileList) { + + console.log('图片列表:', fileList); +}, +// 营业执照 +onUpload(file) { + return new Promise((resolve, reject) => { + console.log('上传文件路径:', file); // 确保文件路径正确 + my.uploadFile({ + url: url + '/api/file/upload/server/not_login', + fileType: 'image', + name: 'file', + filePath: file.path, + formData: { + biz: 'card', + }, + success: res => { + resolve(file.path); + console.log('上传成功:', res); + const cunchu = JSON.parse(res.data) + this.setData({ + yingyeimage:cunchu.data, + }) + console.log(this.data.yingyeimage,'hhhhhhhhhhhhhhh'); + }, + fail: (err) => { + console.log('上传失败:', err); + reject(); + }, + }); + }); +}, +// 身份证正面 +onUpload1(file) { + return new Promise((resolve, reject) => { + console.log('上传文件路径:', file); // 确保文件路径正确 + my.uploadFile({ + url: url + '/api/file/upload/server/not_login', + fileType: 'image', + name: 'file', + filePath: file.path, + formData: { + biz: 'card', + }, + success: res => { + resolve(file.path); + console.log('上传成功:', res); + const cunchu = JSON.parse(res.data) + this.setData({ + frontIdCard:cunchu.data, + }) + console.log(this.data.yingyeimage,'hhhhhhhhhhhhhhh'); + }, + fail: (err) => { + console.log('上传失败:', err); + reject(); + }, + }); + }); +}, +// 身份证反面 +onUpload2(file) { + return new Promise((resolve, reject) => { + console.log('上传文件路径:', file); // 确保文件路径正确 + my.uploadFile({ + url: url + '/api/file/upload/server/not_login', + fileType: 'image', + name: 'file', + filePath: file.path, + formData: { + biz: 'card', + }, + success: res => { + resolve(file.path); + console.log('上传成功:', res); + const cunchu = JSON.parse(res.data) + this.setData({ + backIdCard:cunchu.data, + }) + console.log(this.data.yingyeimage,'hhhhhhhhhhhhhhh'); + }, + fail: (err) => { + console.log('上传失败:', err); + reject(); + }, + }); + }); +}, }); diff --git a/甲情_甲意/miniprogram/pages/shangmenyuyue/shangmenyuyue.acss b/甲情_甲意/miniprogram/pages/shangmenyuyue/shangmenyuyue.acss index 3aa1558..4e8424c 100644 --- a/甲情_甲意/miniprogram/pages/shangmenyuyue/shangmenyuyue.acss +++ b/甲情_甲意/miniprogram/pages/shangmenyuyue/shangmenyuyue.acss @@ -1,12 +1,13 @@ - .search-line { + width: 100%; display: flex; align-items: center; - justify-content: center; - padding: 16px; + justify-content: space-between; + padding: 10px; } .cancel { - margin-left: 8px; + color: var(--color-text-primary); + } .image1{ width: 30rpx; @@ -88,4 +89,14 @@ align-items: center; margin-top: 50rpx; flex-direction: column; +} +.dingweikuang{ + width: 100%; + position: relative; + left: 50rpx; + top: 30rpx; +} +.dingweiimage{ + width: 30rpx; + height: 30rpx; } \ No newline at end of file diff --git a/甲情_甲意/miniprogram/pages/shangmenyuyue/shangmenyuyue.axml b/甲情_甲意/miniprogram/pages/shangmenyuyue/shangmenyuyue.axml index 340e973..cf8cc08 100644 --- a/甲情_甲意/miniprogram/pages/shangmenyuyue/shangmenyuyue.axml +++ b/甲情_甲意/miniprogram/pages/shangmenyuyue/shangmenyuyue.axml @@ -1,36 +1,25 @@ - - + + + - - - - - - - {{selectedCity}} + + + + + 取消 + + + + + {{selectedCity}} - + {{item.businessName}} diff --git a/甲情_甲意/miniprogram/pages/shangmenyuyue/shangmenyuyue.js b/甲情_甲意/miniprogram/pages/shangmenyuyue/shangmenyuyue.js index cb8daca..de8d823 100644 --- a/甲情_甲意/miniprogram/pages/shangmenyuyue/shangmenyuyue.js +++ b/甲情_甲意/miniprogram/pages/shangmenyuyue/shangmenyuyue.js @@ -106,13 +106,16 @@ Page({ console.log('Address being passed: ', ID,address,businessName,businessAvatar,endBusiness,startBusiness,businessPhone); my.navigateTo({ - url: `/pages/dianpuzhuye/dianpuzhuye?userId=${userId}&&address=${address}&&businessName=${businessName}&&businessAvatar=${businessAvatar}&&startBusiness=${startBusiness}&&endBusiness=${endBusiness}&&storeStatus=${storeStatus}&&id=${ID}&&businessPhone=${businessPhone}`, + url: `/pages/shnagmendianpu/shnagmendianpu?userId=${userId}&&address=${address}&&businessName=${businessName}&&businessAvatar=${businessAvatar}&&startBusiness=${startBusiness}&&endBusiness=${endBusiness}&&storeStatus=${storeStatus}&&id=${ID}&&businessPhone=${businessPhone}`, }); }, - onChange(value) { + onChange(e) { this.setData({ - inputtext:value - }) + inputtext:e.detail.value, + }); + console.log(e.detail.value); console.log(this.data.inputtext); }, + + }); diff --git a/甲情_甲意/miniprogram/pages/shangpinjiemian/shangpinjiemian.acss b/甲情_甲意/miniprogram/pages/shangpinjiemian/shangpinjiemian.acss index 6543242..4c94913 100644 --- a/甲情_甲意/miniprogram/pages/shangpinjiemian/shangpinjiemian.acss +++ b/甲情_甲意/miniprogram/pages/shangpinjiemian/shangpinjiemian.acss @@ -6,10 +6,9 @@ /* 价格 */ .box1{ width: 100%; - height: 80px; + display: flex; background-color: #eec2c7; position: relative; - top:0rpx; border-radius: 15px; } .z1{ @@ -18,45 +17,33 @@ position: relative; } .z2{ - top: 80rpx; - right: 140rpx; - position: relative; font-weight: bolder; font-size: 20px; } - /* 商品底部 */ - /* 商品价格 */ - .z3{ font-size: 22px; font-weight: bolder; - position: relative; - top:25rpx; - right: 60rpx; } .z4{ position: relative; color: rgb(29, 18, 18); } .box8{ -width: 400rpx; -position: relative; -left: 240rpx; -top: 25rpx; + display:flex; + flex-direction: column; + width: 60%; } /* 商品介绍 */ .z5{ font-size: 15px; - position: relative; - top:20rpx; color: darkgrey; - left: 5px; } .time{ width: 100%; - height: 400px; + height: auto; border-top: 2px solid #aba8a8; margin-top: 40rpx; + margin-bottom: 130rpx; border-radius: 20px; } .yuyuetext{ @@ -81,4 +68,56 @@ top: 25rpx; flex-wrap: wrap; justify-content: space-evenly; gap: 10px; +} +.miajishikuang { + display: flex; + flex-wrap: wrap; /* 允许换行 */ + justify-content: flex-start; /* 使项目均匀分布 */ + gap: 10px; +} +.meijishsibox { + width: 23%; + text-align: center; +} +.meijiashiimage { + width: 70px; + height: 70px; + border-radius: 50%; + display: block; + margin: 0 auto; +} +.mejiashitext { + margin-top: 5px; + display: flex; + justify-content: center; +} +.duihaoimage { + width: 20px; + height: 20px; +} +.duihaoimage{ + width: 20px; + height: 20px; +} +.zhifubox{ + width: 100%; + display: flex; + justify-content: center; + align-items: center; + position:fixed; + bottom: 40rpx; +} +.zhifuzhong{ + width: 90%; + height: 50px; + background-color: #eec2c7; + border-radius: 30px; + display: flex; + justify-content: center; + align-items: center; +} +.textbox{ + width: 30%; + display: flex; + flex-direction: column; } \ No newline at end of file diff --git a/甲情_甲意/miniprogram/pages/shangpinjiemian/shangpinjiemian.axml b/甲情_甲意/miniprogram/pages/shangpinjiemian/shangpinjiemian.axml index a43b869..442fe39 100644 --- a/甲情_甲意/miniprogram/pages/shangpinjiemian/shangpinjiemian.axml +++ b/甲情_甲意/miniprogram/pages/shangpinjiemian/shangpinjiemian.axml @@ -1,20 +1,22 @@ - + - - 年售1000+ - ¥{{commoditiesPrice}} - 【{{commoditiesName}}】 + + 年售1000+ + + ¥{{commoditiesPrice}} + + + 【{{commoditiesName}}】 款式随便做,饰品不限量,含甲片,含卸甲 - + 须知 需提前两小时预约 周一至周日全天可用 购买后30天内有效 购买前请仔细阅读 - @@ -26,4 +28,23 @@ {{item.title}} + + 指定美甲师 + + + + + + {{item.manicuristName}} + + + + + + + + + + 立即购买 + \ No newline at end of file diff --git a/甲情_甲意/miniprogram/pages/shangpinjiemian/shangpinjiemian.js b/甲情_甲意/miniprogram/pages/shangpinjiemian/shangpinjiemian.js index 5868f7f..b4e21af 100644 --- a/甲情_甲意/miniprogram/pages/shangpinjiemian/shangpinjiemian.js +++ b/甲情_甲意/miniprogram/pages/shangpinjiemian/shangpinjiemian.js @@ -19,6 +19,7 @@ Page({ { title: '17:00' }, ], selectedTime: '', + meijiashi:[], }, onLoad(options) { @@ -27,6 +28,9 @@ Page({ const commoditiesPrice = options.commoditiesPrice; const ids = options.ids; const businessId = options.businessId; + const dianpuid = options.dianpuid + const businessName = options.businessName + this.setData({ commoditiesImage: commoditiesImage, @@ -34,6 +38,8 @@ Page({ commoditiesPrice: commoditiesPrice, ids: ids, businessId: businessId, + dianpuid:dianpuid, + businessName:businessName }); }, @@ -50,26 +56,8 @@ Page({ }); }, onShow(){ -this.checkUserLogin +this.meijiahsi() }, - // 检查登录状态 - checkUserLogin() { - my.getStorages({ - key: 'userInfo', - success: (res) => { - if (res.data && res.data.openId) { - - } else { - - } - }, - fail: (err) => { - console.error('获取用户信息失败:', err); - }, - }); - }, - - jiaru() { my.getStorage({ key: 'userInfo', @@ -130,4 +118,80 @@ this.checkUserLogin }); console.log('选中的时间:', this.data.selectedTime); // 打印选中的时间 }, + // 美甲师 + meijiahsi(){ + my.request({ + url: url + '/api/manicurist/userQueryAll', + method: 'GET', + data: { + businessId: this.data.dianpuid + }, + headers: { + 'content-type': 'application/json', + }, + dataType: 'json', + success: (res) => { + console.log('Request succeeded:', res); + if (res.data && res.data.data) { + const modifiedData = res.data.data.map(item => { + return { + ...item, // 保留原来的属性 + selected: false // 添加 selected 属性 + }; + }); + + // 更新 data 中的 meijiashi 数据 + this.setData({ + meijiashi: modifiedData + }); + + console.log(this.data.meijiashi, '更新后数据'); + } else { + console.log('shibaile') + } + }, + fail: (error) => { + console.error('Request failed', error); + } + }); + }, + onManicuristClick(event) { + const index = event.currentTarget.dataset.index; + let meijiashi = this.data.meijiashi; + + // 取消所有美甲师的选中状态 + meijiashi.forEach((item, i) => { + item.selected = false; + }); + + // 设置当前点击的美甲师为选中状态 + meijiashi[index].selected = true; + + // 更新 data 中的 meijiashi + this.setData({ + meijiashi: meijiashi + }); + this.setData({ + meijiashiname:meijiashi[index].manicuristName, + meijiashiid:meijiashi[index].id + }) + + console.log('当前选中的美甲师:', this.data.meijiashiname,this.data.meijiashiid); + }, + zhifu(){ + const commoditiesImage = this.data.commoditiesImage; + const commoditiesName = this.data.commoditiesName; + const commoditiesPrice = this.data.commoditiesPrice; + const meijiashiname = this.data.meijiashiname; + const yuyuetime = this.data.selectedTime + const meijiashiid = this.data.meijiashiid + const selectedTime = this.data.selectedTime + const dianpuid = this.data.dianpuid + const businessName = this.data.businessName + const shopid = this.data.ids + my.navigateTo({ + url:`/pages/yuyuezhifu/yuyuezhifu?commoditiesImage=${commoditiesImage}&&commoditiesName=${commoditiesName}&&commoditiesPrice=${commoditiesPrice}&&meijiashiname=${meijiashiname}&&yuyuetime=${yuyuetime}&&meijiashiid=${meijiashiid}&&selectedTime=${selectedTime}&&dianpuid=${dianpuid}&&businessName=${businessName}&&shopid=${shopid}` + }) + console.log(businessName,'dianpumingcheng'); + } }); diff --git a/甲情_甲意/miniprogram/pages/shangpinjiemian/shangpinjiemian.json b/甲情_甲意/miniprogram/pages/shangpinjiemian/shangpinjiemian.json index c5f5fb8..65cc476 100644 --- a/甲情_甲意/miniprogram/pages/shangpinjiemian/shangpinjiemian.json +++ b/甲情_甲意/miniprogram/pages/shangpinjiemian/shangpinjiemian.json @@ -1,8 +1,7 @@ { "defaultTitle": "商品界面", "usingComponents": { - "ant-range-picker": "antd-mini/es/DatePicker/RangePicker/index", - "ant-tabs": "antd-mini/es/Tabs/index" + }, "styleIsolation": "apply-shared" } diff --git a/甲情_甲意/miniprogram/pages/shnagmendianpu/shnagmendianpu.acss b/甲情_甲意/miniprogram/pages/shnagmendianpu/shnagmendianpu.acss new file mode 100644 index 0000000..4f6f4a7 --- /dev/null +++ b/甲情_甲意/miniprogram/pages/shnagmendianpu/shnagmendianpu.acss @@ -0,0 +1,222 @@ +.cebian { + width: 20%; + height: 100%vw; + background-color: #efeced; +} + +.text { + width: 100%; + height: 50px; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + cursor: pointer; +} +.color { + font-size: 14px; + color: rgb(0, 0, 0); /* 默认文字颜色 */ +} +.xian{ + width: 60px; + height: 3px; + background-color: #f2819f; + margin-top: 5rpx; +} +.xinxi{ + width: 80%; + height: 540px; + display: flex; + align-items: center; + flex-direction: column; + overflow-y: scroll; + overflow-x: hidden; +} +.pages{ + width: 100%; + display: flex; + margin-top: 30rpx; +} +.shop{ + width: 90%; + height:130px; + border: 1px solid #f2819f; + border-radius: 20px; + margin-top: 20rpx; + display: flex; +} +.image{ + width: 100px; + height: 100px; + border-radius: 20px; +} +.imagebox{ + width: 100px; + height: 130px; + display: flex; + align-items: center; + justify-content: center; + margin-left: 10rpx; +} +.dingwei{ + position: relative; +} +.yuyue{ + display: flex; + justify-content: center; + align-items: center; + width: 50px; + height: 20px; + border-radius: 20px; + border: 1px solid #fb96b1; + background-color: #fb96b1; +} +.yuyuekuang{ + width: 95%; + display: flex; + justify-content: space-between; +} +.gouimage{ +width: 20px; +height: 20px; +} +/* 店铺名框 */ +.Box2 +{ + width: 100%; + height: 150px; + background-color: white; + position: relative; + top:30px; + border-radius: 15px; +} +/* 店铺名 */ +.z2{ + font-size: 25px; + font-weight: bolder; + position: relative; +} +.image1{ + width: 80px; + height: 20px; + margin-left: 10rpx; + margin-top: 20rpx; +} +.z3{ + position: relative; + left: 30rpx; + bottom: 8rpx; + color: rgb(194, 53, 53); +} +.z4{ + position: relative; + left: 80rpx; + bottom:10rpx; +} +/* 营业时间 */ +.z6{ + color: #4095E5; + font-weight: bolder; + top:20px; + left: 10px; + position: relative; +} +.z7{ + position: relative; + top:38rpx; + left: 30rpx; + font-size: 13px; +} +.box3{ + width: 100%; + height: 1px; + background-color: darkgrey; +} +/* 地址 */ +.z8{ + font-size: 12px; + margin-left: 10rpx; +} +.image3{ + width: 10px; + height: 12px; + margin-left: 5rpx; +} +.box4{ + width: 100%; + height: 1px; + background-color: darkgrey; + margin-top: 10rpx; +} +.shangimage{ + width: 200rpx; + height: 200rpx; + border-radius: 10%; + margin-left: 20rpx; +} +.box8{ + width: 500rpx; + height: 200rpx; + position: relative; + left: 230rpx; + bottom: 200rpx; +} +.tiao{ + width: 100px; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; +} +.tiaobox{ + width: 100%; + height: 30px; + display: flex; +} +.pingjia{ + width: 100%; + display: flex; + justify-content: center; + margin-top: 10rpx; +} +.pingjiakuang{ + width: 90%; + border-top: #6e7071 1px solid; + height: auto; +} +.pingjiaimage{ + width: 40px; + height: 40px; + border-radius: 50px; +} +.touxiang{ + width: 100%; + height: 40px; + display: flex; + align-items: center; + margin-top: 10rpx; +} +.kuangimage{ + width: 100px; + height: 100px; + margin:10rpx 10rpx 10rpx 10rpx; + border-radius: 10px; +} +.tupianbox{ + width: 100%; + justify-content: center; +} +.soucangimage{ + width: 30px; + height: 30px; + position: absolute; + right: 80rpx; + top: -40rpx; +} +.zixunimage{ + width: 30px; + height: 30px; + position: absolute; + right: 0rpx; + top: -40rpx; +} \ No newline at end of file diff --git a/甲情_甲意/miniprogram/pages/shnagmendianpu/shnagmendianpu.axml b/甲情_甲意/miniprogram/pages/shnagmendianpu/shnagmendianpu.axml new file mode 100644 index 0000000..91afcb7 --- /dev/null +++ b/甲情_甲意/miniprogram/pages/shnagmendianpu/shnagmendianpu.axml @@ -0,0 +1,124 @@ + + + + + {{businessName}} + + + 4.9 + 500条 + + + + + + + + + + + + + 已休息 + 营业中 + 营业时间:{{startBusiness}}-{{endBusiness}} + + + + + + + + {{address}} + + + + + + + + {{item.hengname}} + + + + + + + + + {{item.name}} + + + + + + + + + + + + + + {{item.commoditiesName}} + + + 款式随便做,饰品不限量,含甲片,含卸甲 + + + ¥{{item.commoditiesPrice}} + + 预约 + + + + + + + + + + + + + + + {{item.user.username}} + + + 颜色:冰透系列裸色01色+烤灯-简约 + + {{item.userRating.review}} + + + + + + + + + + + + + + + 店铺名称:{{businessName}} + + + + 联系电话:{{businessPhone}} + + + + 营业时间:{{startBusiness}}-{{endBusiness}} + + + + 店铺地址:{{address}} + + + \ No newline at end of file diff --git a/甲情_甲意/miniprogram/pages/shnagmendianpu/shnagmendianpu.js b/甲情_甲意/miniprogram/pages/shnagmendianpu/shnagmendianpu.js new file mode 100644 index 0000000..935f8c4 --- /dev/null +++ b/甲情_甲意/miniprogram/pages/shnagmendianpu/shnagmendianpu.js @@ -0,0 +1,343 @@ +import{url} from '../request' +Page({ + data: { + lie: [ + { id: 1, name: '推荐款式', showLine: true }, + { id: 2, name: '中长款', showLine: false }, + { id: 3, name: '本甲款', showLine: false }, + { id: 4, name: '长款', showLine: false }, + { id: 5, name: '短款', showLine: false }, + ], + names:[ + { id:1, hengname:'款式分类',line:true}, + {id:2,hengname:'评价',line:false}, + {id:3,hengname:'商家',line:false}, + ], + userId: '', + address: '', + businessName:'', + businessAvatar:'', + startBusiness:'', + endBusiness:'', + storeStatus:'', + businessId: '', + commoditiesGroupId: 0, + commoditiesName: "", + current: 0, + pageSize: 0, + sortField: "", + sortOrder: "", + status: "", + tuijian:[], + meijiashi:[], + email: "", + gender: 0, + manicuristAvatar: "", + manicuristName: "", + phone: "", + rating: 0, + specialties: "", + id:'', + filteredShopping: [], + showShoppingCart: true, // 控制购物车部分是否显示 + showComments: false, // 控制评论部分是否显示 + showBusinessInfo: false, // 控制商家信息是否显示 + pingjia:[], + }, + onLoad(options) { + // Extract userId and address from options + const userId = options.userId; + const address = options.address; + const businessName = options.businessName; + const businessAvatar = options.businessAvatar; + const startBusiness = options.startBusiness; + const endBusiness = options.endBusiness; + const storeStatus = options.storeStatus; + const id = options.id + const businessPhone = options.businessPhone + console.log(id,'这是店铺id吗'); + // Set them in data for use in the page + this.setData({ + userId: userId, + address: address, + businessName:businessName, + businessAvatar:businessAvatar, + endBusiness:endBusiness, + startBusiness:startBusiness, + storeStatus:storeStatus, + id:id, + businessPhone:businessPhone, + }); + my.request({ + url: url + '/api/commodities/list/page/commodities', + method: 'POST', + data: { + businessId: id, + commoditiesGroupId: "", + commoditiesName: "", + current: 0, + pageSize: 100, + sortField: "", + sortOrder: "", + status: "", + }, + headers: { + 'content-type': 'application/json', + }, + dataType: 'json', + success: (res) => { + console.log(id,'这是onload'); + console.log('Request succeeded:', res); + if (res.data && res.data.data) { + this.setData({ + tuijian: res.data.data.records, // 更新 tuijian 列表 + }); + this.chushihua(); + console.log(this.data.tuijian,'这是推荐'); + } else { + console.log('shibaile') + } + }, + fail: (error) => { + console.error('Request failed', error); + } + }); + this.pingjia() + }, + soucang() { + my.getStorage({ + key: 'userInfo', + success: (res) => { + const userInfo = res.data; + const businessId = this.data.id; // 获取 onLoad 中保存的 id + + if (userInfo && userInfo.cookie) { + my.request({ + url: url + '/api/collect/add', + method: 'POST', + data: { + businessId: businessId, // 使用 businessId 来请求收藏 + userId: userInfo.id + }, + headers: { + 'content-type': 'application/json', + 'Cookie': userInfo.cookie, + }, + dataType: 'json', + success: (res) => { + console.log(res); + if(res.data.code===0){ + my.alert({ + content: '收藏成功' + }); + } + else if(res.data.code===40100){ + my.alert({ + content: '登录信息已过期,请重新登录' + }); + my.navigateTo({ + url:'/pages/denglu/denglu' + }) + }else{ + my.alert({ + content: '店铺已收藏' + }); + } + }, + fail: (error) => { + console.error('请求失败: ', JSON.stringify(error)); + my.alert({ content: '请求失败,请稍后重试' }); + }, + }); + } else { + my.alert({ + content: '您未登录,请先登录。', + success: () => { + my.navigateTo({ + url: '/pages/denglu/denglu', + }); + }, + }); + } + }, + }); + }, + pingjia(){ + my.request({ + url: url + '/api/level/listBusinessRating', + method: 'GET', + data: { + businessId:this.data.id, + }, + headers: { + 'content-type': 'application/json', + }, + dataType: 'json', + success: (res) => { + console.log(res,'评价部分'); + if(res.data.code===0){ + this.setData({ + pingjia:res.data.data, + useridpingjia:res.data.data.userId + }) + } + }, + fail: (error) => { + console.error('请求失败: ', JSON.stringify(error)); + my.alert({ content: '请求失败,请稍后重试' }); + }, + }); + }, + zixun(){ + my.navigateTo({ + url:'/pages/zixunmeijiashi/zixunmeijiashi' + }) + }, + // 点击事件处理函数 +selectItem(e) { + const id = e.currentTarget.dataset.id; + console.log(id); + // 更新对应的 showLine 状态,控制是否显示线条 + const updatedLie = this.data.lie.map(item => { + if (item.id === id) { + item.showLine = !item.showLine; // 切换显示状态 + } else { + item.showLine = false; // 其他项隐藏 + } + return item; + }); + + // 根据点击的类别 id 筛选对应的商品 + const filteredShopping = this.data.tuijian.filter(item => String(item.commoditiesGroupId) === String(id)); + + // 更新数据 + this.setData({ + lie: updatedLie, + filteredShopping, // 更新右侧商品列表 + showShoppingCart: true, // 显示购物车部分 + showComments: false, // 隐藏评论部分 + showBusinessInfo: false, // 隐藏商家信息部分 + }); + console.log(this.data.filteredShopping,'hhhhhhhhhhhhhh'); +}, +chushihua(){ + this.setData({ + filteredShopping: this.data.tuijian.filter(item => String(item.commoditiesGroupId) === "1"), // 默认选中类别 1 + }) + console.log(this.data.filteredShopping,'chushi'); +}, +chaxunzhuangtai(e) { + const id = e.currentTarget.dataset.id; + console.log(id); + + // 更新对应的 line 状态,控制是否显示线条 + const updatednames = this.data.names.map(item => { + if (item.id === id) { + item.line = !item.line; // 切换显示状态 + } else { + item.line = false; // 其他项隐藏 + } + return item; + }); + + this.setData({ + names: updatednames, + }); + + // 根据点击的分类切换显示内容 + if (id === 1) { + this.setData({ + showShoppingCart: true, // 显示购物车 + showComments: false, // 隐藏评论 + showBusinessInfo: false, // 隐藏商家信息 + }); + } else if (id === 2) { + this.setData({ + showShoppingCart: false, // 隐藏购物车 + showComments: true, // 显示评论 + showBusinessInfo: false, // 隐藏商家信息 + }); + } else if (id === 3) { + this.setData({ + showShoppingCart: false, // 隐藏购物车 + showComments: false, // 隐藏评论 + showBusinessInfo: true, // 显示商家信息 + }); + } +}, +jiaru(item) { + const id = item.target.dataset.num + console.log('传递的数据:', id); + const ids = id.id + const businessId = id.businessId + my.getStorage({ + key: 'userInfo', + success: (res) => { + const userInfo = res.data; + if (userInfo && userInfo.cookie) { + my.request({ + url: url + '/api/cart/add', + method: 'POST', + data: { + businessId: businessId, + commoditiesId: ids, + quantity: 1, + selectedOptions: "", + userId: userInfo.id + }, + headers: { + 'content-type': 'application/json', + 'Cookie': userInfo.cookie, // 通过头部传递 cookie + }, + dataType: 'json', + success: (res) => { + if(res.data.code===0){ + console.log(res); + my.alert({ content: '成功添加到购物车' }); + } + else if(res.data.code===40100){ + my.alert({ + content: '登录信息已过期,请重新登录' + }); + my.navigateTo({ + url:'/pages/denglu/denglu' + }) + }else{ + console.log(res,'shibaile'); + } + }, + fail: (error) => { + console.error('请求失败: ', JSON.stringify(error)); + my.alert({ content: '请求失败,请稍后重试' }); + }, + }); + } else { + my.alert({ + content: '您未登录,请先登录。', + success: () => { + my.navigateTo({ + url: '/pages/denglu/denglu', + }); + }, + }); + } + }, +}); +}, +shangpinjiemian(item){ + const id = item.target.dataset.num + console.log('传递的数据:', id); + const ids = id.id + const commoditiesPrice = id.commoditiesPrice + const commoditiesName = id.commoditiesName + const commoditiesImage = id.commoditiesImage + const businessId = id.businessId + const dianpuid = this.data.id + const businessName =this.data.businessName + console.log('Address being passed: ',id,commoditiesPrice,commoditiesName,commoditiesImage,businessId); + my.navigateTo({ + url:`/pages/yuyuejiemian/yuyuejiemian?commoditiesPrice=${commoditiesPrice}&&commoditiesName=${commoditiesName}&&commoditiesImage=${commoditiesImage}&&ids=${ids}&&businessId=${businessId}&&dianpuid=${dianpuid}&&businessName=${businessName}` + }) + console.log(ids,businessId,commoditiesImage,commoditiesName,commoditiesPrice+'这是商品的',dianpuid+'这是店铺的') +}, +}); \ No newline at end of file diff --git a/甲情_甲意/miniprogram/pages/shnagmendianpu/shnagmendianpu.json b/甲情_甲意/miniprogram/pages/shnagmendianpu/shnagmendianpu.json new file mode 100644 index 0000000..bd2bda3 --- /dev/null +++ b/甲情_甲意/miniprogram/pages/shnagmendianpu/shnagmendianpu.json @@ -0,0 +1,5 @@ +{ + "defaultTitle": "店铺主页", + "usingComponents": {}, + "styleIsolation": "apply-shared" +} diff --git a/甲情_甲意/miniprogram/pages/shouye/shouye.axml b/甲情_甲意/miniprogram/pages/shouye/shouye.axml index 018b1c1..75bf924 100644 --- a/甲情_甲意/miniprogram/pages/shouye/shouye.axml +++ b/甲情_甲意/miniprogram/pages/shouye/shouye.axml @@ -37,7 +37,7 @@ - + {{item.businessName}} diff --git a/甲情_甲意/miniprogram/pages/test/test.acss b/甲情_甲意/miniprogram/pages/test/test.acss index 50e696d..9083b1a 100644 --- a/甲情_甲意/miniprogram/pages/test/test.acss +++ b/甲情_甲意/miniprogram/pages/test/test.acss @@ -1,223 +1,120 @@ -.cebian { - width: 20%; - height: 100v; - background-color: #efeced; - overflow: hidden; +.box { + width: 100vw; + min-height: 100vh; /* 确保容器至少占满屏幕的高度 */ + background-color: #eec2c7; + overflow-y: auto; /* 允许竖直方向滚动 */ + width: 100vw; /* 或者 750rpx */ + height: auto; + overflow:hidden; /* 防止溢出 */ +} + +.box3 { + display: flex; + flex-direction: column; + background-color: rgba(252, 240, 240, 0.807); + border-radius: 20px; + padding: 10px; + margin-bottom: 80px; /* 留出一些空间给底部结算栏 */ + margin-top: 30rpx; +} + +.box1 { + width: 100%; + height: 170px; + display: flex; + flex-direction: row; +} + +.image { + width: 120px; + height: 120px; + border-radius: 10px; + position: relative; + left: 20px; + top: 20px; +} + +.box4 { + position: relative; + top: 80px; + left: 10px; + width: 25px; + height: 25px; +} + +.box5 { + height: 50px; + position: relative; + left: 40px; + top:30px; } .text { - width: 100%; - height: 50px; + padding: 5px; +} + +.container { + width: 100px; + position: relative; + left: 100px; + top: 20px; + display: flex; +} + +.boxd { + width: 100px; + height: 40px; + position: absolute; + border-radius: 30px; + background-color: rgb(162, 12, 12); + left: 570rpx; display: flex; - justify-content: center; align-items: center; - flex-direction: column; - cursor: pointer; + justify-content: center; } -.color { - font-size: 14px; - color: rgb(0, 0, 0); /* 默认文字颜色 */ + +.text1 { + color: #ffffff; + position: unset; } -.xian{ + +.boxall { + display: flex; + align-items: center; + padding: 10px; + position: fixed; + bottom: 0; + left: 0; + width: 100%; + background-color: #fff; + box-shadow: 0 -2px 5px rgba(0, 0, 0, 0.1); +} +.text2 { + position: relative; + left: 200rpx; +} +.text3{ + height: 20px; width: 60px; - height: 3px; - background-color: #f2819f; - margin-top: 5rpx; + position: absolute; + left: 620rpx; + font-size:12px; + color:#a8b0b8 } -.xinxi{ - width: 80%; - height: 100%; - display: flex; - justify-content: center; - align-items: center; - flex-direction: column; - overflow-y: scroll -} -.pages{ - width: 100%; - display: flex; - margin-top: 30rpx; -} -.shop{ - width: 90%; - height:130px; - border: 1px solid #f2819f; - border-radius: 20px; - margin-top: 20rpx; - display: flex; -} -.image{ - width: 100px; - height: 100px; - border-radius: 20px; -} -.imagebox{ - width: 100px; - height: 130px; - display: flex; - align-items: center; - justify-content: center; - margin-left: 10rpx; -} -.dingwei{ - position: relative; -} -.yuyue{ - display: flex; - justify-content: center; - align-items: center; - width: 50px; - height: 20px; - border-radius: 20px; - border: 1px solid #fb96b1; - background-color: #fb96b1; -} -.yuyuekuang{ - width: 100%; - display: flex; - justify-content: space-between; -} -.gouimage{ -width: 20px; -height: 20px; -} -/* 店铺名框 */ -.Box2 -{ - width: 100%; - height: 150px; +.number{ + width: 30px; background-color: white; - position: relative; - top:30px; - border-radius: 15px; -} -/* 店铺名 */ -.z2{ - font-size: 25px; - font-weight: bolder; - position: relative; -} -.image1{ - width: 80px; - height: 20px; - margin-left: 10rpx; - margin-top: 20rpx; -} -.z3{ - position: relative; - left: 30rpx; - bottom: 8rpx; - color: rgb(194, 53, 53); -} -.z4{ - position: relative; - left: 80rpx; - bottom:10rpx; -} -/* 营业时间 */ -.z6{ - color: #4095E5; - font-weight: bolder; - top:20px; - left: 10px; - position: relative; -} -.z7{ - position: relative; - top:38rpx; - left: 30rpx; - font-size: 13px; -} -.box3{ - width: 100%; - height: 1px; - background-color: darkgrey; -} -/* 地址 */ -.z8{ - font-size: 12px; - margin-left: 10rpx; -} -.image3{ - width: 10px; - height: 12px; - margin-left: 5rpx; -} -.box4{ - width: 100%; - height: 1px; - background-color: darkgrey; - margin-top: 10rpx; -} -.shangimage{ - width: 200rpx; - height: 200rpx; - border-radius: 10%; - margin-left: 20rpx; -} -.box8{ - width: 500rpx; - height: 200rpx; - position: relative; - left: 230rpx; - bottom: 200rpx; -} -.tiao{ - width: 100px; - display: flex; - justify-content: center; - align-items: center; - flex-direction: column; -} -.tiaobox{ - width: 100%; - height: 30px; - display: flex; -} -.pingjia{ - width: 100%; display: flex; justify-content: center; - margin-top: 10rpx; -} -.pingjiakuang{ - width: 90%; - border-top: #6e7071 1px solid; - height: auto; -} -.pingjiaimage{ - width: 40px; - height: 40px; - border-radius: 50px; -} -.touxiang{ - width: 100%; - height: 40px; - display: flex; align-items: center; - margin-top: 10rpx; } -.kuangimage{ - width: 100px; - height: 100px; - margin:10rpx 10rpx 10rpx 10rpx; - border-radius: 10px; -} -.tupianbox{ - width: 100%; +.beijing{ + display: flex; justify-content: center; -} -.soucangimage{ - width: 30px; - height: 30px; - position: absolute; - right: 80rpx; - top: -40rpx; -} -.zixunimage{ - width: 30px; - height: 30px; - position: absolute; - right: 0rpx; - top: -40rpx; + align-items: center; + width: 25px; + height: 25px; + background-color: white; + font-size: 20p; + } \ No newline at end of file diff --git a/甲情_甲意/miniprogram/pages/test/test.axml b/甲情_甲意/miniprogram/pages/test/test.axml index 85aa05c..d38c8b8 100644 --- a/甲情_甲意/miniprogram/pages/test/test.axml +++ b/甲情_甲意/miniprogram/pages/test/test.axml @@ -1,124 +1,46 @@ - - - - - {{businessName}} - - - 4.9 - 500条 - - - - - - - - - - - - - 已休息 - 营业中 - 营业时间:{{startBusiness}}-{{endBusiness}} - - - - - - - - {{address}} - - - - - - - - {{item.hengname}} - - - - - - - - - {{item.name}} - - - - - - - - - + + + + + + + + + + + + + + {{item.commoditiesName}} + + + ¥{{item.commoditiesPrice}} + + + + - + + + {{item.quantity}} + + + + + + + + 移除购物车 - - - {{item.commoditiesName}} - - - 款式随便做,饰品不限量,含甲片,含卸甲 - - - ¥{{item.commoditiesPrice}} - - 预约 - - - - - - + + + + + + + 全选 + 合计:¥{{totalPrice}} + + 结算 - - - - - - 陌路 - - - 颜色:冰透系列裸色01色+烤灯-简约 - - aslkjhdklajshdkalsdhaskljdhaskldhaskhdaksjhdkjsh - - - - - - - - - - - - - - - 店铺名称:{{businessName}} - - - - 联系电话:{{businessPhone}} - - - - 营业时间:{{startBusiness}}-{{endBusiness}} - - - - 店铺地址:{{address}} - - - \ No newline at end of file diff --git a/甲情_甲意/miniprogram/pages/test/test.js b/甲情_甲意/miniprogram/pages/test/test.js index f3b91da..c3b0b55 100644 --- a/甲情_甲意/miniprogram/pages/test/test.js +++ b/甲情_甲意/miniprogram/pages/test/test.js @@ -1,143 +1,181 @@ -import{url} from '../request' +import { url } from '../request'; + Page({ data: { - lie: [ - { id: 1, name: '推荐款式', showLine: true }, - { id: 2, name: '中长款', showLine: false }, - { id: 3, name: '本甲款', showLine: false }, - { id: 4, name: '长款', showLine: false }, - { id: 5, name: '短款', showLine: false }, - ], - names:[ - { id:1, hengname:'款式分类',line:true}, - {id:2,hengname:'评价',line:false}, - {id:3,hengname:'商家',line:false}, - ], - userId: '', - address: '', - businessName:'', - businessAvatar:'', - startBusiness:'', - endBusiness:'', - storeStatus:'', - businessId: '', - commoditiesGroupId: 0, - commoditiesName: "", - current: 0, - pageSize: 0, - sortField: "", - sortOrder: "", - status: "", - tuijian:[], - meijiashi:[], - email: "", - gender: 0, - manicuristAvatar: "", - manicuristName: "", - phone: "", - rating: 0, - specialties: "", - id:'', - filteredShopping: [], - showShoppingCart: true, // 控制购物车部分是否显示 - showComments: false, // 控制评论部分是否显示 - showBusinessInfo: false, // 控制商家信息是否显示 + id: '', + productList: [], // 商品列表 + select_all: false, + checkbox_productListid: '', + totalPrice: 0, }, - onLoad(options) { - // Extract userId and address from options - const userId = options.userId; - const address = options.address; - const businessName = options.businessName; - const businessAvatar = options.businessAvatar; - const startBusiness = options.startBusiness; - const endBusiness = options.endBusiness; - const storeStatus = options.storeStatus; - const id = options.id - const businessPhone = options.businessPhone - console.log(id,'zheyedesaksdas'); - // Set them in data for use in the page + // 计算总价 +calculateTotalPrice() { + const totalPrice = this.data.productList + .filter(item => item.checked) // 只计算勾选的商品 + .reduce((sum, item) => sum + item.quantity * item.commoditiesPrice, 0); + + // 格式化总价为两位小数 + const formattedTotalPrice = totalPrice.toFixed(2); + + // 更新 totalPrice + this.setData({ totalPrice: formattedTotalPrice }); +}, + // 增加商品数量 + increaseQuantity(e) { + const { index } = e.currentTarget.dataset; // 获取当前商品的索引 + const updatedProductList = [...this.data.productList]; + const item = updatedProductList[index]; + // 增加数量 + if (item.quantity < 999) { + item.quantity += 1; + } + this.setData({ productList: updatedProductList }); + this.calculateTotalPrice(); // 重新计算总价 + }, + // 减少商品数量 + decreaseQuantity(e) { + const { index } = e.currentTarget.dataset; // 获取当前商品的索引 + const updatedProductList = [...this.data.productList]; + const item = updatedProductList[index]; + // 减少数量 + if (item.quantity > 1) { + item.quantity -= 1; + } + this.setData({ productList: updatedProductList }); + this.calculateTotalPrice(); // 重新计算总价 + }, + // 全选/取消全选 + selectall(e) { + const newSelectAll = !this.data.select_all; + const updatedProductList = this.data.productList.map(item => ({ + ...item, + checked: newSelectAll, + })); + + const checkbox_productListid = newSelectAll + ? updatedProductList.map(item => item.cartId).join(',') + : ''; + this.setData({ - userId: userId, - address: address, - businessName:businessName, - businessAvatar:businessAvatar, - endBusiness:endBusiness, - startBusiness:startBusiness, - storeStatus:storeStatus, - id:id, - businessPhone:businessPhone, + productList: updatedProductList, + select_all: newSelectAll, + checkbox_productListid, }); - my.request({ - url: url + '/api/commodities/list/page/commodities', - method: 'POST', - data: { - businessId: id, - commoditiesGroupId: id, - commoditiesName: "", - current: 0, - pageSize: 2, - sortField: "", - sortOrder: "", - status: "", - }, - headers: { - 'content-type': 'application/json', - }, - dataType: 'json', - success: (res) => { - console.log(id,'这是onload'); - console.log('Request succeeded:', res); - if (res.data && res.data.data) { - this.setData({ - tuijian: res.data.data.records, // 更新 tuijian 列表 - }); - this.chushihua(); - console.log(this.data.tuijian,'这是推荐'); - } else { - console.log('shibaile') - } - }, - fail: (error) => { - console.error('Request failed', error); - } + console.log("arr=", checkbox_productListid); + this.calculateTotalPrice(); // 重新计算总价 + const selectedProducts = updatedProductList.filter(item => item.checked); + this.setData({ + selectedProducts, // 存储勾选的商品信息 }); - + console.log(selectedProducts); }, - soucang() { + checkboxChange(e) { + const { value } = e.detail; // 当前选中的值列表 + const updatedProductList = this.data.productList.map(item => ({ + ...item, + checked: value.includes(item.cartId.toString()), + })); + const select_all = updatedProductList.every(item => item.checked); + this.setData({ + productList: updatedProductList, + select_all, + }); + this.calculateTotalPrice(); // 更新总价 + // 提取勾选的商品 + const selectedProducts = updatedProductList.filter(item => item.checked); + this.setData({ + selectedProducts, // 存储勾选的商品信息 + }); + console.log(selectedProducts,'askldjaslkdaslkdjklas'); + }, + // 获取商品数据 + fetchProductDetails(cartItems) { + const promises = cartItems.map((item) => { + return new Promise((resolve, reject) => { + my.request({ + url: url + '/api/commodities/getById/commodities', + method: 'GET', + data: { id: item.commoditiesId }, + headers: { 'content-type': 'application/json' }, + success: (res) => { + if (res.data.code === 0) { + const productData = res.data.data; + productData.cartId = item.id; // 将 cartId 添加到商品数据中 + productData.quantity = item.quantity || 1; // 初始化数量 + resolve(productData); + } else { + reject(`商品信息获取失败: ${res.data.message}`); + } + }, + fail: (error) => { + reject(error); + }, + }); + }); + }); + + Promise.all(promises) + .then((productList) => { + // 确保没有重复商品 + const mergedProductList = []; + productList.forEach((product) => { + const existingProduct = mergedProductList.find( + (item) => item.commoditiesId === product.commoditiesId + ); + if (existingProduct) { + // 如果已存在相同商品,则累加数量 + existingProduct.quantity += product.quantity; + } else { + // 如果是新商品,则添加 + mergedProductList.push(product); + } + }); + + this.setData({ productList: mergedProductList }); + this.calculateTotalPrice(); // 初始化总价 + }) + .catch((error) => { + console.error('商品信息获取失败: ', error); + my.alert({ content: '商品信息获取失败,请稍后重试' }); + }); + }, + + + + // 页面加载时获取商品数据 + onShow() { + this.setData({ + select_all: false, + selectedProducts:[], + }); my.getStorage({ key: 'userInfo', success: (res) => { const userInfo = res.data; - const businessId = this.data.id; // 获取 onLoad 中保存的 id - if (userInfo && userInfo.cookie) { my.request({ - url: url + '/api/collect/add', + url: url + '/api/cart/selectByUserId', method: 'POST', - data: { - businessId: businessId // 使用 businessId 来请求收藏 - }, + data: { + id: userInfo.id + }, headers: { 'content-type': 'application/json', 'Cookie': userInfo.cookie, }, dataType: 'json', success: (res) => { - if(res.data.code===0){ + console.log(res,'hhhhhhhhhhhh'); + if (res.data.code === 0) { + console.log(res); + const cartItems = res.data.data; + this.fetchProductDetails(cartItems); + } else { my.alert({ - content: '收藏成功' - }); - } - else if(res.data.code===40100){ - my.alert({ - content: '登录信息已过期,请重新登录' + content: '登录信息已过期,请重新登录', }); my.navigateTo({ - url:'/pages/denglu/denglu' - }) - }else{ - my.alert({ - content: '店铺已收藏' + url: '/pages/denglu/denglu', }); } }, @@ -146,13 +184,66 @@ Page({ my.alert({ content: '请求失败,请稍后重试' }); }, }); - } else { + } + else{ my.alert({ - content: '您未登录,请先登录。', - success: () => { - my.navigateTo({ - url: '/pages/denglu/denglu', - }); + content:'您未登录,请先登录' + }) + my.navigateTo({ + url:'/pages/denglu/denglu' + }) + } + }, + }); + }, + yichu(e) { + const cartId = e.currentTarget.dataset.id; // 获取商品的 cartId + if (!cartId) { + console.error('没有找到商品cartId'); + my.alert({ content: '商品ID未找到,请稍后重试' }); + return; + } + + console.log('需要移除的商品cartId:', cartId); + + my.getStorage({ + key: 'userInfo', + success: (res) => { + const userInfo = res.data; + + if (userInfo && userInfo.cookie) { + // 发送请求移除商品 + my.request({ + url: url + '/api/cart/delete', + method: 'POST', + data: { + id: cartId, // 商品 cartId + userId: userInfo.id, // 当前用户ID + }, + headers: { + 'content-type': 'application/json', + 'Cookie': userInfo.cookie, + }, + dataType: 'json', + success: (res) => { + if (res.data.code === 0) { + my.alert({ content: '成功移除商品' }); + + // 从 productList 中移除对应的商品 + const updatedProductList = this.data.productList.filter( + (item) => item.cartId !== cartId + ); + + this.setData({ productList: updatedProductList }); + this.calculateTotalPrice(); // 更新总价 + } else { + my.alert({ content: '移除商品失败,请稍后重试' }); + console.log(res); + } + }, + fail: (error) => { + console.error('请求失败: ', JSON.stringify(error)); + my.alert({ content: '请求失败,请稍后重试' }); }, }); } @@ -160,127 +251,54 @@ Page({ }); }, - // meijiahsi(){ - // my.request({ - // url: url + '/api/manicurist/userQueryAll', - // method: 'GET', - // data: { - // businessId: this.data.id - // }, - // headers: { - // 'content-type': 'application/json', - // }, - // dataType: 'json', - // success: (res) => { - // console.log('Request succeeded:', res); - // if (res.data && res.data.data) { - // this.setData({ - // meijiashi: res.data.data, // 更新 tuijian 列表 - // }); - // } else { - // console.log('shibaile') - // } - // }, - // fail: (error) => { - // console.error('Request failed', error); - // } - // }); - // }, - pingjia(){ - my.navigateTo({ - url:'/pages/shangpinpingjia/shangpinpingjia' - }) + // 移除后更新 + updateCartList() { + this.setData({ select_all: false }); + my.getStorage({ + key: 'userInfo', + success: (res) => { + const userInfo = res.data; + if (userInfo && userInfo.cookie) { + my.request({ + url: url + '/api/cart/selectByUserId', // 获取最新的购物车数据 + method: 'POST', + data: { + id: this.data.id + }, // 使用当前用户ID + headers: { + 'content-type': 'application/json', + 'Cookie': userInfo.cookie + }, + dataType: 'json', + success: (res) => { + if (res.data.code === 0) { + const cartItems = res.data.data; + this.fetchProductDetails(cartItems, userInfo.id); + } else { + my.alert({ content: '获取购物车数据失败,请稍后重试' }); + } + }, + fail: (error) => { + console.error('请求失败: ', JSON.stringify(error)); + my.alert({ content: '请求失败,请稍后重试' }); + }, + }); + } + }, + }); }, - zixun(){ - my.navigateTo({ - url:'/pages/zixunmeijiashi/zixunmeijiashi' - }) - }, - shangpinjiemian(item){ - const id = item.target.dataset.num - console.log('传递的数据:', id); - const ids = id.id - const commoditiesPrice = id.commoditiesPrice - const commoditiesName = id.commoditiesName - const commoditiesImage = id.commoditiesImage - const businessId = id.businessId - console.log('Address being passed: ',id,commoditiesPrice,commoditiesName,commoditiesImage,businessId); - my.navigateTo({ - url:`/pages/shangpinjiemian/shangpinjiemian?commoditiesPrice=${commoditiesPrice}&&commoditiesName=${commoditiesName}&&commoditiesImage=${commoditiesImage}&&ids=${ids}&&businessId=${businessId}` - }) - console.log(ids,businessId,commoditiesImage,commoditiesName,commoditiesPrice+'这是商品的') - }, - // 点击事件处理函数 -selectItem(e) { - const id = e.currentTarget.dataset.id; - console.log(id); - // 更新对应的 showLine 状态,控制是否显示线条 - const updatedLie = this.data.lie.map(item => { - if (item.id === id) { - item.showLine = !item.showLine; // 切换显示状态 - } else { - item.showLine = false; // 其他项隐藏 + jiesuan() { + const products = this.data.selectedProducts; + if(!products || products.length === 0){ + my.alert({ + content:'请选择商品' + }) + }else{ + const productsStr = JSON.stringify(products) + const prices =this.data.totalPrice + my.navigateTo({ + url: '/pages/zhifujiemian/zhifujiemian?products='+encodeURIComponent(productsStr)+ '&prices=' + encodeURIComponent(prices) + }); } - return item; - }); - - // 根据点击的类别 id 筛选对应的商品 - const filteredShopping = this.data.tuijian.filter(item => String(item.commoditiesGroupId) === String(id)); - - // 更新数据 - this.setData({ - lie: updatedLie, - filteredShopping, // 更新右侧商品列表 - showShoppingCart: true, // 显示购物车部分 - showComments: false, // 隐藏评论部分 - showBusinessInfo: false, // 隐藏商家信息部分 - }); - console.log(this.data.filteredShopping,'hhhhhhhhhhhhhh'); -}, -chushihua(){ - this.setData({ - filteredShopping: this.data.tuijian.filter(item => String(item.commoditiesGroupId) === "1"), // 默认选中类别 1 - }) - console.log(this.data.filteredShopping,'chushi'); -}, -chaxunzhuangtai(e) { - const id = e.currentTarget.dataset.id; - console.log(id); - - // 更新对应的 line 状态,控制是否显示线条 - const updatednames = this.data.names.map(item => { - if (item.id === id) { - item.line = !item.line; // 切换显示状态 - } else { - item.line = false; // 其他项隐藏 - } - return item; - }); - - this.setData({ - names: updatednames, - }); - - // 根据点击的分类切换显示内容 - if (id === 1) { - this.setData({ - showShoppingCart: true, // 显示购物车 - showComments: false, // 隐藏评论 - showBusinessInfo: false, // 隐藏商家信息 - }); - } else if (id === 2) { - this.setData({ - showShoppingCart: false, // 隐藏购物车 - showComments: true, // 显示评论 - showBusinessInfo: false, // 隐藏商家信息 - }); - } else if (id === 3) { - this.setData({ - showShoppingCart: false, // 隐藏购物车 - showComments: false, // 隐藏评论 - showBusinessInfo: true, // 显示商家信息 - }); - } -}, -}); - + }, +}); \ No newline at end of file diff --git a/甲情_甲意/miniprogram/pages/wode/wode.acss b/甲情_甲意/miniprogram/pages/wode/wode.acss index 756e0ab..1a32eee 100644 --- a/甲情_甲意/miniprogram/pages/wode/wode.acss +++ b/甲情_甲意/miniprogram/pages/wode/wode.acss @@ -43,8 +43,8 @@ } .image1{ - max-width: 35px; - max-height: 25px; + max-width: 30px; + max-height: 30px; position:relative; } /* 退出登录 */ diff --git a/甲情_甲意/miniprogram/pages/wode/wode.js b/甲情_甲意/miniprogram/pages/wode/wode.js index 5f69570..8b8a464 100644 --- a/甲情_甲意/miniprogram/pages/wode/wode.js +++ b/甲情_甲意/miniprogram/pages/wode/wode.js @@ -15,6 +15,7 @@ Page({ this.setData({ username: userInfo.username, avatarUrl: userInfo.avatarUrl, + messagelogin:userInfo, }); }else{ this.setData({ @@ -56,10 +57,18 @@ Page({ }); }, login() { - my.navigateTo({ - url: '/pages/denglu/denglu' - }); + if (!this.data.messagelogin) { + my.navigateTo({ + url: '/pages/denglu/denglu' + }); + } else { + my.showToast({ + content: '您已登录,无需重复登录', + duration: 2000 // 提示持续时间 + }); + } }, + meijishi() { my.navigateTo({ url: '/pages/meijiashirenzheng/meijiashirenzheng' diff --git a/甲情_甲意/miniprogram/pages/wodedingdan/wodedingdan.axml b/甲情_甲意/miniprogram/pages/wodedingdan/wodedingdan.axml index 8b48c99..f8f7494 100644 --- a/甲情_甲意/miniprogram/pages/wodedingdan/wodedingdan.axml +++ b/甲情_甲意/miniprogram/pages/wodedingdan/wodedingdan.axml @@ -73,7 +73,7 @@ 到店服务 ¥{{item.commoditiesVO.commoditiesPrice}} - + 取消 diff --git a/甲情_甲意/miniprogram/pages/wodedingdan/wodedingdan.js b/甲情_甲意/miniprogram/pages/wodedingdan/wodedingdan.js index b81c213..23e0efd 100644 --- a/甲情_甲意/miniprogram/pages/wodedingdan/wodedingdan.js +++ b/甲情_甲意/miniprogram/pages/wodedingdan/wodedingdan.js @@ -55,7 +55,9 @@ Page({ paymentStatus: "", sortField: "", sortOrder: "", - startTime: "" + startTime: "", + userId: userInfo.id, + userRole: 0, }, headers: { 'content-type': 'application/json', @@ -126,5 +128,108 @@ getPaymentStatusText(status) { const statusObj = this.paymentStatuses.find(item => item.paymentStatuses === status.toString()); return statusObj ? statusObj.statue : '未知状态'; // 如果找不到对应状态,返回 '未知状态' }, +quxiao(e){ + const orderId = e.currentTarget.dataset.id; + console.log(orderId,'zheshiorderid'); + my.getStorage({ + key: 'userInfo', + success: (res) => { + const userInfo = res.data; + this.setData({ + id: userInfo.id, // 获取 id + }); + + if (userInfo && userInfo.cookie) { + my.request({ + url: url + '/api/orders/cancel', + method: 'POST', + data: { + "id": 0 + }, + headers: { + 'content-type': 'application/json', + 'Cookie': userInfo.cookie, + }, + dataType: 'json', + success: (res) => { + if(res.data.code===0){ + my.showToast({ + content: '订单已取消', + }); + this.fetchOrders() + } + else if(res.data.code===40100){ + my.alert({ + content: '登录信息已过期,请重新登录' + }); + my.navigateTo({ + url:'/pages/denglu/denglu' + }) + } + console.log(res); + console.log(this.data.dingdan); + }, + fail: (error) => { + console.error('请求失败: ', JSON.stringify(error)); + my.alert({ content: '请求失败,请稍后重试' }); + }, + }); + } + else { + my.alert({ + content: '您未登录,请先登录。', + success: () => { + my.navigateTo({ + url: '/pages/denglu/denglu', + }); + }, + }); + } + }, + }); +}, +fetchOrders() { + my.getStorage({ + key: 'userInfo', + success: (res) => { + const userInfo = res.data; + if (userInfo && userInfo.cookie) { + my.request({ + url: url + '/api/orders/my/page', + method: 'POST', + data: { + claimStatus: 0, + current: 1, + endTime: "", + id: "", + pageSize: 10, + paymentStatus: "", + sortField: "", + sortOrder: "", + startTime: "", + userId: userInfo.id, + userRole: 0, + }, + headers: { + 'content-type': 'application/json', + 'Cookie': userInfo.cookie, + }, + dataType: 'json', + success: (res) => { + if (res.data.code === 0) { + this.setData({ + dingdan: res.data.data.records, + }); + } + }, + fail: (error) => { + console.error('请求失败: ', JSON.stringify(error)); + my.alert({ content: '请求失败,请稍后重试' }); + }, + }); + } + }, + }); +} }); diff --git a/甲情_甲意/miniprogram/pages/wodepingjia/wodepingjia.js b/甲情_甲意/miniprogram/pages/wodepingjia/wodepingjia.js index 99b158c..a4fb8c6 100644 --- a/甲情_甲意/miniprogram/pages/wodepingjia/wodepingjia.js +++ b/甲情_甲意/miniprogram/pages/wodepingjia/wodepingjia.js @@ -19,64 +19,47 @@ Page({ ], }, - // onShow(){ - // my.getStorage({ - // key: 'userInfo', - // success: (res) => { - // const userInfo = res.data; - // this.setData({ - // id: userInfo.id, // 获取 id - // }); + onShow(){ + my.getStorage({ + key: 'userInfo', + success: (res) => { + const userInfo = res.data; + this.setData({ + id: userInfo.id, // 获取 id + }); - // if (userInfo && userInfo.cookie) { - // my.request({ - // url: url + '/api/orders/my/page', - // method: 'POST', - // data: { - // claimStatus: 0, - // current: 1, - // endTime: "", - // id: "", - // pageSize: 10, - // paymentStatus: 0, - // sortField: "", - // sortOrder: "", - // startTime: "" - // }, - // headers: { - // 'content-type': 'application/json', - // 'Cookie': userInfo.cookie, - // }, - // dataType: 'json', - // success: (res) => { - // if(res.data&&res.data.data){ - // this.setData({ - // dingdan:res.data.data.records, - - // }) - // } - // console.log(res); - // console.log(this.data.dingdan); - // console.log(this.data.dingdan); - // }, - // fail: (error) => { - // console.error('请求失败: ', JSON.stringify(error)); - // my.alert({ content: '请求失败,请稍后重试' }); - // }, - // }); - // } else { - // my.alert({ - // content: '您未登录,请先登录。', - // success: () => { - // my.navigateTo({ - // url: '/pages/denglu/denglu', - // }); - // }, - // }); - // } - // }, - // }); - // }, + if (userInfo) { + my.request({ + url: url + '/api/level/list', + method: 'POST', + data: { + + }, + headers: { + 'content-type': 'application/json', + }, + dataType: 'json', + success: (res) => { + console.log(res,"sadkaskd"); + }, + fail: (error) => { + console.error('请求失败: ', JSON.stringify(error)); + my.alert({ content: '请求失败,请稍后重试' }); + }, + }); + } else { + my.alert({ + content: '您未登录,请先登录。', + success: () => { + my.navigateTo({ + url: '/pages/denglu/denglu', + }); + }, + }); + } + }, + }); + }, // tab栏 onSwipeChange(e) { this.setData({ diff --git a/甲情_甲意/miniprogram/pages/wodeshoucang/wodeshoucang.js b/甲情_甲意/miniprogram/pages/wodeshoucang/wodeshoucang.js index f5fa5ae..bd66a60 100644 --- a/甲情_甲意/miniprogram/pages/wodeshoucang/wodeshoucang.js +++ b/甲情_甲意/miniprogram/pages/wodeshoucang/wodeshoucang.js @@ -29,11 +29,14 @@ Page({ key: 'userInfo', success: (res) => { const userInfo = res.data; + console.log(userInfo.id); if (userInfo && userInfo.cookie) { my.request({ url: url + '/api/collect/list', method: 'POST', - data: {}, + data: { + id:userInfo.id + }, headers: { 'content-type': 'application/json', 'Cookie': userInfo.cookie, @@ -158,7 +161,9 @@ Page({ my.request({ url: url + '/api/collect/list', method: 'POST', - data: {}, + data: { + id:userInfo.id + }, headers: { 'content-type': 'application/json', 'Cookie': userInfo.cookie, @@ -183,7 +188,13 @@ Page({ my.alert({ content: '请求失败,请稍后重试' }); }, }); - } + } + else{ + my.alert({content:'您未登录,请先登录'}) + my.navigateTo({ + url:'/pages/denglu/denglu' + }) + } }, }); }, diff --git a/甲情_甲意/miniprogram/pages/wodeyuyue/wodeyuyue.acss b/甲情_甲意/miniprogram/pages/wodeyuyue/wodeyuyue.acss index 026203e..ec3a097 100644 --- a/甲情_甲意/miniprogram/pages/wodeyuyue/wodeyuyue.acss +++ b/甲情_甲意/miniprogram/pages/wodeyuyue/wodeyuyue.acss @@ -18,8 +18,10 @@ position: relative; } .neirong{ + display: flex; + flex-direction: column; margin-left: 20rpx; - width: 200px; + width: 50%; } .shijian{ display: flex; @@ -31,13 +33,22 @@ .image1{ width: 50rpx; height: 50rpx; - margin-top: 20rpx; - position: relative; - left: 330rpx; } .yemian{ display: flex; flex-direction: column; justify-content: center; align-items: center; +} +.statues{ + width: 50%; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} +.xinxibox{ + width: 100%; + display: flex; + } \ No newline at end of file diff --git a/甲情_甲意/miniprogram/pages/wodeyuyue/wodeyuyue.axml b/甲情_甲意/miniprogram/pages/wodeyuyue/wodeyuyue.axml index 6410d1a..d7ff8a5 100644 --- a/甲情_甲意/miniprogram/pages/wodeyuyue/wodeyuyue.axml +++ b/甲情_甲意/miniprogram/pages/wodeyuyue/wodeyuyue.axml @@ -1,24 +1,33 @@ - + - {{item.name}} + {{item.businessName}} - {{item.neirong}} + {{item.notes}} - - - 我的预约:{{item.shijian}} + + + + 我的预约:{{item.formattedAppointmentTime}} + + + 服务方式:到店服务 + 服务方式:上门服务 + + + 指定美甲师:{{item.manicuristName}} + - - 指定美甲师:{{item.meijiashi}} - + + + 正在进行中...... + + + + 已完成 - - - {{item.data}} - {{item.status}} \ No newline at end of file diff --git a/甲情_甲意/miniprogram/pages/wodeyuyue/wodeyuyue.js b/甲情_甲意/miniprogram/pages/wodeyuyue/wodeyuyue.js index 589c8ec..b358cdc 100644 --- a/甲情_甲意/miniprogram/pages/wodeyuyue/wodeyuyue.js +++ b/甲情_甲意/miniprogram/pages/wodeyuyue/wodeyuyue.js @@ -1,5 +1,7 @@ +import {url} from '../request' Page({ data: { + myyuyue:[], yuyue:[ { name:'佳佳温馨提示:', @@ -43,5 +45,62 @@ Page({ } ] }, - onLoad() {}, + onShow() { + my.getStorage({ + key: 'userInfo', + success: (res) => { + const userInfo = res.data; + if (userInfo && userInfo.cookie) { + my.request({ + url: url + '/api/appointments/query', + method: 'POST', + data: { + id: userInfo.id + }, + headers: { + 'content-type': 'application/json', + 'Cookie': userInfo.cookie, + }, + dataType: 'json', + success: (res) => { + console.log(res); + + // 在这里处理后端返回的时间字段 + const appointments = res.data.data.map(item => { + const appointmentTime = new Date(item.appointmentTime); // 将时间字符串转换为 Date 对象 + + // 格式化日期为 'YYYY-MM-DD HH:mm' 形式 + const formattedDate = appointmentTime.getFullYear() + '-' + + ('0' + (appointmentTime.getMonth() + 1)).slice(-2) + '-' + + ('0' + appointmentTime.getDate()).slice(-2) + ' ' + + ('0' + appointmentTime.getHours()).slice(-2) + ':' + + ('0' + appointmentTime.getMinutes()).slice(-2); + + // 返回新的数组,带有格式化后的日期 + return { + ...item, + formattedAppointmentTime: formattedDate + }; + }); + + this.setData({ + myyuyue: appointments + }); + console.log(this.data.myyuyue); + }, + fail: (error) => { + console.error('请求失败: ', JSON.stringify(error)); + my.alert({ content: '请求失败,请稍后重试' }); + }, + }); + } else { + my.alert({ content: '您未登录,请先登录' }); + my.navigateTo({ + url: '/pages/denglu/denglu' + }); + } + }, + }); + }, + }); diff --git a/甲情_甲意/miniprogram/pages/yuyuejiemian/yuyuejiemian.acss b/甲情_甲意/miniprogram/pages/yuyuejiemian/yuyuejiemian.acss new file mode 100644 index 0000000..4c94913 --- /dev/null +++ b/甲情_甲意/miniprogram/pages/yuyuejiemian/yuyuejiemian.acss @@ -0,0 +1,123 @@ +/* 商品图背景 */ +.image{ + width: 100%; + height: 300px; +} +/* 价格 */ +.box1{ + width: 100%; + display: flex; + background-color: #eec2c7; + position: relative; + border-radius: 15px; +} +.z1{ + top: 20rpx; + left: 20rpx; + position: relative; +} +.z2{ + font-weight: bolder; + font-size: 20px; +} +.z3{ + font-size: 22px; + font-weight: bolder; +} +.z4{ + position: relative; + color: rgb(29, 18, 18); +} +.box8{ + display:flex; + flex-direction: column; + width: 60%; +} +/* 商品介绍 */ +.z5{ + font-size: 15px; + color: darkgrey; +} +.time{ + width: 100%; + height: auto; + border-top: 2px solid #aba8a8; + margin-top: 40rpx; + margin-bottom: 130rpx; + border-radius: 20px; +} +.yuyuetext{ + width: 100%; + height: 50px; +} +.timebox{ + width: 100px; + height: 40px; + border: 1px solid #8f8c8c; + border-radius: 10px; + margin-left: 20rpx; + display: flex; + justify-content: center; + align-items: center; + margin-top: 10rpx; +} +.boxtextkuang{ + width: 100%; + height: 180px; + display: flex; + flex-wrap: wrap; + justify-content: space-evenly; + gap: 10px; +} +.miajishikuang { + display: flex; + flex-wrap: wrap; /* 允许换行 */ + justify-content: flex-start; /* 使项目均匀分布 */ + gap: 10px; +} +.meijishsibox { + width: 23%; + text-align: center; +} +.meijiashiimage { + width: 70px; + height: 70px; + border-radius: 50%; + display: block; + margin: 0 auto; +} +.mejiashitext { + margin-top: 5px; + display: flex; + justify-content: center; +} +.duihaoimage { + width: 20px; + height: 20px; +} +.duihaoimage{ + width: 20px; + height: 20px; +} +.zhifubox{ + width: 100%; + display: flex; + justify-content: center; + align-items: center; + position:fixed; + bottom: 40rpx; +} +.zhifuzhong{ + width: 90%; + height: 50px; + background-color: #eec2c7; + border-radius: 30px; + display: flex; + justify-content: center; + align-items: center; +} +.textbox{ + width: 30%; + display: flex; + flex-direction: column; +} \ No newline at end of file diff --git a/甲情_甲意/miniprogram/pages/yuyuejiemian/yuyuejiemian.axml b/甲情_甲意/miniprogram/pages/yuyuejiemian/yuyuejiemian.axml new file mode 100644 index 0000000..6d6f4a6 --- /dev/null +++ b/甲情_甲意/miniprogram/pages/yuyuejiemian/yuyuejiemian.axml @@ -0,0 +1,50 @@ + + + + + + + 年售1000+ + + ¥{{commoditiesPrice}} + + + + 【{{commoditiesName}}】 + 款式随便做,饰品不限量,含甲片,含卸甲 + + + + 须知 需提前两小时预约 周一至周日全天可用 购买后30天内有效 购买前请仔细阅读 + + + + + 预约时间 + + + + {{item.title}} + + + + 指定美甲师 + + + + + + {{item.manicuristName}} + + + + + + + + + + 立即预约 + + \ No newline at end of file diff --git a/甲情_甲意/miniprogram/pages/yuyuejiemian/yuyuejiemian.js b/甲情_甲意/miniprogram/pages/yuyuejiemian/yuyuejiemian.js new file mode 100644 index 0000000..6724930 --- /dev/null +++ b/甲情_甲意/miniprogram/pages/yuyuejiemian/yuyuejiemian.js @@ -0,0 +1,194 @@ +import {url} from '../request' + +Page({ + data: { + commoditiesImage: '', + commoditiesPrice: '', + commoditiesName: '', + businessId: '', + ids: '', + time: [ + { title: '9:00' }, + { title: '10:00' }, + { title: '11:00' }, + { title: '12:00' }, + { title: '13:00' }, + { title: '14:00' }, + { title: '15:00' }, + { title: '16:00' }, + { title: '17:00' }, + ], + selectedTime: '', + meijiashi:[], + }, + + onLoad(options) { + const commoditiesImage = options.commoditiesImage; + const commoditiesName = options.commoditiesName; + const commoditiesPrice = options.commoditiesPrice; + const ids = options.ids; + const businessId = options.businessId; + const dianpuid = options.dianpuid + const businessName = options.businessName + + this.setData({ + commoditiesImage: commoditiesImage, + commoditiesName: commoditiesName, + commoditiesPrice: commoditiesPrice, + ids: ids, + businessId: businessId, + dianpuid:dianpuid, + businessName:businessName + }); + console.log(ids,'shangpinid'); + }, + + // 切换标签 + onChange(current) { + this.setData({ + current, + }); + }, + onSwipeChange(e) { + this.setData({ + current: e.detail.current, + }); +}, + onShow(){ +this.meijiahsi() + }, + jiaru() { + my.getStorage({ + key: 'userInfo', + success: (res) => { + const userInfo = res.data; + if (userInfo && userInfo.cookie) { + my.request({ + url: url + '/api/cart/add', + method: 'POST', + data: { + businessId: this.data.businessId, + commoditiesId: this.data.ids, + quantity: 1, + selectedOptions: "", + }, + headers: { + 'content-type': 'application/json', + 'Cookie': userInfo.cookie, // 通过头部传递 cookie + }, + dataType: 'json', + success: (res) => { + if(res.data.code===0){ + console.log(res); + my.alert({ content: '成功添加到购物车' }); + } + else if(res.data.code===40100){ + my.alert({ + content: '登录信息已过期,请重新登录' + }); + my.navigateTo({ + url:'/pages/denglu/denglu' + }) + } + }, + fail: (error) => { + console.error('请求失败: ', JSON.stringify(error)); + my.alert({ content: '请求失败,请稍后重试' }); + }, + }); + } else { + my.alert({ + content: '您未登录,请先登录。', + success: () => { + my.navigateTo({ + url: '/pages/denglu/denglu', + }); + }, + }); + } + }, + }); + }, + selectTime(e) { + const selectedTime = e.currentTarget.dataset.time; // 获取点击的时间 + console.log(selectedTime); + this.setData({ + selectedTime: selectedTime, // 更新选中的时间 + }); + console.log('选中的时间:', this.data.selectedTime); // 打印选中的时间 + }, + // 美甲师 + meijiahsi(){ + my.request({ + url: url + '/api/manicurist/userQueryAll', + method: 'GET', + data: { + businessId: this.data.dianpuid + }, + headers: { + 'content-type': 'application/json', + }, + dataType: 'json', + success: (res) => { + console.log('Request succeeded:meijiashi', res); + if (res.data && res.data.data) { + const modifiedData = res.data.data.map(item => { + return { + ...item, // 保留原来的属性 + selected: false // 添加 selected 属性 + }; + }); + + // 更新 data 中的 meijiashi 数据 + this.setData({ + meijiashi: modifiedData + }); + + console.log(this.data.meijiashi, '更新后数据'); + } else { + console.log('shibaile') + } + }, + fail: (error) => { + console.error('Request failed', error); + } + }); + }, + onManicuristClick(event) { + const index = event.currentTarget.dataset.index; + let meijiashi = this.data.meijiashi; + // 取消所有美甲师的选中状态 + meijiashi.forEach((item, i) => { + item.selected = false; + }); + + // 设置当前点击的美甲师为选中状态 + meijiashi[index].selected = true; + + // 更新 data 中的 meijiashi + this.setData({ + meijiashi: meijiashi + }); + this.setData({ + meijiashiname:meijiashi[index].manicuristName, + meijiashiid:meijiashi[index].id + }) + + console.log('当前选中的美甲师:', this.data.meijiashiname,this.data.meijiashiid); + }, + zhifu(){ + const commoditiesImage = this.data.commoditiesImage; + const commoditiesName = this.data.commoditiesName; + const commoditiesPrice = this.data.commoditiesPrice; + const meijiashiname = this.data.meijiashiname; + const yuyuetime = this.data.selectedTime + const meijiashiid = this.data.meijiashiid + const selectedTime = this.data.selectedTime + const dianpuid = this.data.dianpuid + const businessName = this.data.businessName + const shopid = this.data.ids + my.navigateTo({ + url:`/pages/yuyuezhifusm/yuyuezhifusm?commoditiesImage=${commoditiesImage}&&commoditiesName=${commoditiesName}&&commoditiesPrice=${commoditiesPrice}&&meijiashiname=${meijiashiname}&&yuyuetime=${yuyuetime}&&meijiashiid=${meijiashiid}&&selectedTime=${selectedTime}&&dianpuid=${dianpuid}&&businessName=${businessName}&&shopid=${shopid}` + }) + } +}); diff --git a/甲情_甲意/miniprogram/pages/yuyuejiemian/yuyuejiemian.json b/甲情_甲意/miniprogram/pages/yuyuejiemian/yuyuejiemian.json new file mode 100644 index 0000000..7efd6d2 --- /dev/null +++ b/甲情_甲意/miniprogram/pages/yuyuejiemian/yuyuejiemian.json @@ -0,0 +1,5 @@ +{ + "defaultTitle": "预约上门", + "usingComponents": {}, + "styleIsolation": "apply-shared" +} diff --git a/甲情_甲意/miniprogram/pages/yuyuezhifu/yuyuezhifu.acss b/甲情_甲意/miniprogram/pages/yuyuezhifu/yuyuezhifu.acss new file mode 100644 index 0000000..15ea00d --- /dev/null +++ b/甲情_甲意/miniprogram/pages/yuyuezhifu/yuyuezhifu.acss @@ -0,0 +1,61 @@ +.all{ + width: 100%; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + } + .box{ + width: 90%; + height: 450px; + display: flex; + border: 1px solid #9fa1a3; + border-radius: 20px; + margin-top: 20rpx; + flex-direction: column; + overflow: hidden; + } + .image{ + width: 80px; + height: 80px; + border-radius: 10px; + } + .xinxi{ + width: 100%; + height: 100px; + display: flex; + margin-left: 20rpx + } + .juzhong{ + display:flex; + align-items:center + } + .biaoti{ + width: 249px; + margin-left: 10rpx; + } + .text{ + font-size: 18px; + font-weight: bold; + } + .form{ + width: 100%; + height: 200px; + } + .xian{ + width: 100%; + height: 1px; + background-color: #9fa1a3; + + } + .zhifu{ + display: flex; + justify-content: center; + align-items: center; + width: 90%; + height: 50px; + background-color: #ee8d97; + border-radius: 40px; + position: fixed; + bottom: 40rpx; + } \ No newline at end of file diff --git a/甲情_甲意/miniprogram/pages/yuyuezhifu/yuyuezhifu.axml b/甲情_甲意/miniprogram/pages/yuyuezhifu/yuyuezhifu.axml new file mode 100644 index 0000000..d32736d --- /dev/null +++ b/甲情_甲意/miniprogram/pages/yuyuezhifu/yuyuezhifu.axml @@ -0,0 +1,66 @@ + + + + + + + + + + {{commoditiesName}} + + ¥{{commoditiesPrice}} + + + 共1件 + + + + + + + + 商品总价 + ¥{{commoditiesPrice}} + + + + 姓名 + + + + + 联系方式 + + + + + 备注 + + + + + 蚂蚁积分 + 暂不可用 + + + + 预约时间 + {{yuyuetime}} + + + + 指定美甲师 + {{meijiashiname}} + + + + 小计 + ¥{{commoditiesPrice}} + + + + + 立即预约 + + \ No newline at end of file diff --git a/甲情_甲意/miniprogram/pages/yuyuezhifu/yuyuezhifu.js b/甲情_甲意/miniprogram/pages/yuyuezhifu/yuyuezhifu.js new file mode 100644 index 0000000..d30d95a --- /dev/null +++ b/甲情_甲意/miniprogram/pages/yuyuezhifu/yuyuezhifu.js @@ -0,0 +1,171 @@ +import {url} from '../request' +Page({ + data: { + + }, + onLoad(options) { + const commoditiesImage = options.commoditiesImage; + const commoditiesName = options.commoditiesName; + const commoditiesPrice =options.commoditiesPrice + const meijiashiname = options.meijiashiname; + const yuyuetime = options.yuyuetime; + const meijiashiid = options.meijiashiid; + const selectedTime = options.selectedTime; // 例如 "9:00" + const dianpuid = options.dianpuid; + const businessName = options.businessName; + const shopid = options.shopid + + // 获取当前日期 + const currentDate = new Date(); + const year = currentDate.getFullYear(); + const month = (currentDate.getMonth() + 1).toString().padStart(2, '0'); // 补充两位 + const day = currentDate.getDate().toString().padStart(2, '0'); // 补充两位 + + // 处理 selectedTime,确保格式正确,例如 "9:00" 转为 "09:00" + const timeParts = selectedTime.split(':'); + const hours = timeParts[0].padStart(2, '0'); // 补充小时 + const minutes = timeParts[1].padStart(2, '0'); // 补充分钟 + + // 拼接日期和时间 + const formattedDateTime = `${month}-${day} ${hours}:${minutes}`; + + // 设置格式化后的 selectedTime + this.setData({ + commoditiesImage: commoditiesImage, + commoditiesName: commoditiesName, + commoditiesPrice: commoditiesPrice, + meijiashiname: meijiashiname, + yuyuetime: yuyuetime, + meijiashiid: meijiashiid, + selectedTime: formattedDateTime, // 存储格式化后的时间 + dianpuid: dianpuid, + businessName: businessName, + shopid:shopid + }); + }, + name(e){ + this.setData({ + name: e.detail.value, + }); + console.log(e.detail.value); + }, + phone(e){ + this.setData({ + phone: e.detail.value, + }); + console.log(e.detail.value); + }, + zhifu(){ + my.getStorage({ + key: 'userInfo', + success: (res) => { + const userInfo = res.data; + this.setData({ + id: userInfo.id, // 获取 id + }); + // 发送请求移除商品 + if (userInfo && userInfo.cookie) { + my.request({ + url: url + '/api/appointments/add', + method: 'POST', + data: { + appointmentTime: this.data.selectedTime, + businessId: this.data.dianpuid, + businessName: this.data.businessName, + id: "", + manicuristId: this.data.meijiashiid, + manicuristName: this.data.meijiashiname, + notes: "", + payMethod: 0, + phone: this.data.phone, + serviceMode: 0, + userId: userInfo.id, + userName: this.data.name, + }, + headers: { + 'content-type': 'application/json', + 'Cookie': userInfo.cookie + }, + dataType: 'json', + success: (res) => { + console.log(res); + if (res.data.code === 0) { + my.alert({content:'预约成功'}) + my.navigateBack(); + console.log('chenggong'); + } else { + my.alert({ content: '失败,请稍后重试' }); + console.log(this.data.name,userInfo.id,this.data.phone,this.data.meijiashiname,this.data.meijiashiid,this.data.businessName,this.data.dianpuid,this.data.selectedTime,); + } + }, + }); + } + }, + }); + this.add() + }, + add(){ + my.getStorage({ + key: 'userInfo', + success: (res) => { + const userInfo = res.data; + this.setData({ + id: userInfo.id, // 获取 id + + }); + // 发送请求移除商品 + if (userInfo && userInfo.cookie) { + my.request({ + url: url + '/api/orders/add', + method: 'POST', + data: { + businessId: this.data.dianpuid, + notes:this.data.note, + orderItemsAddRequest: [ + { + attributeNames: this.data.commoditiesName, + commoditiesId: this.data.shopid, + quantity: 1 + } + ], + payMethod: 0, + phone: this.data.phone, + totalPrice: this.data.commoditiesPrice, + userId: this.data.id, + userName: this.data.name + }, + headers: { + 'content-type': 'application/json', + 'Cookie': userInfo.cookie + }, + dataType: 'json', + success: (res) => { + console.log(this.data.name,this.data.commoditiesPrice,this.data.phone,this.data.shopid,this.data.commoditiesName,this.data.note,this.data.dianpuid,this.data.id,); + console.log(res,'成功'); + if (res.data.code === 0) { + my.showToast({ + content: '待商家确认,请稍后', + duration: 2000 // 提示持续时间 + }); + my.navigateBack(); + console.log('chenggong'); + } else { + my.alert({ content: '失败,请稍后重试' }); + console.log(this.data.name,this.data.commoditiesPrice,this.data.phone,this.data.shopid,this.data.commoditiesName,this.data.note,this.data.dianpuid,'else'); + } + }, + fail:(res)=>{ + console.log(this.data.name,this.data.commoditiesPrice,this.data.phone,this.data.shopid,this.data.commoditiesName,this.data.note,this.data.dianpuid,'失败'); + } + }); + } + }, + }); + }, + note(e){ + this.setData({ + note: e.detail.value, + }); + console.log(e.detail.value); + } +}); diff --git a/甲情_甲意/miniprogram/pages/yuyuezhifu/yuyuezhifu.json b/甲情_甲意/miniprogram/pages/yuyuezhifu/yuyuezhifu.json new file mode 100644 index 0000000..3356e10 --- /dev/null +++ b/甲情_甲意/miniprogram/pages/yuyuezhifu/yuyuezhifu.json @@ -0,0 +1,5 @@ +{ + "defaultTitle": "到店支付", + "usingComponents": {}, + "styleIsolation": "apply-shared" +} diff --git a/甲情_甲意/miniprogram/pages/yuyuezhifusm/yuyuezhifusm.acss b/甲情_甲意/miniprogram/pages/yuyuezhifusm/yuyuezhifusm.acss new file mode 100644 index 0000000..7edf263 --- /dev/null +++ b/甲情_甲意/miniprogram/pages/yuyuezhifusm/yuyuezhifusm.acss @@ -0,0 +1,61 @@ +.all{ + width: 100%; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + } + .box{ + width: 90%; + height: 520px; + display: flex; + border: 1px solid #9fa1a3; + border-radius: 20px; + margin-top: 20rpx; + flex-direction: column; + overflow: hidden; + } + .image{ + width: 80px; + height: 80px; + border-radius: 10px; + } + .xinxi{ + width: 100%; + height: 100px; + display: flex; + margin-left: 20rpx + } + .juzhong{ + display:flex; + align-items:center + } + .biaoti{ + width: 249px; + margin-left: 10rpx; + } + .text{ + font-size: 18px; + font-weight: bold; + } + .form{ + width: 100%; + height: 200px; + } + .xian{ + width: 100%; + height: 1px; + background-color: #9fa1a3; + + } + .zhifu{ + display: flex; + justify-content: center; + align-items: center; + width: 90%; + height: 50px; + background-color: #ee8d97; + border-radius: 40px; + position: fixed; + bottom: 40rpx; + } \ No newline at end of file diff --git a/甲情_甲意/miniprogram/pages/yuyuezhifusm/yuyuezhifusm.axml b/甲情_甲意/miniprogram/pages/yuyuezhifusm/yuyuezhifusm.axml new file mode 100644 index 0000000..1fd4962 --- /dev/null +++ b/甲情_甲意/miniprogram/pages/yuyuezhifusm/yuyuezhifusm.axml @@ -0,0 +1,76 @@ + + + + + + + + + + {{commoditiesName}} + + ¥{{commoditiesPrice}} + + + 共1件 + + + + + + + + 商品总价 + ¥{{commoditiesPrice}} + + + + 姓名 + + + + + 联系方式 + + + + + 地址 + + + + + 备注 + + + + + 蚂蚁积分 + 暂不可用 + + + + 预约时间 + {{yuyuetime}} + + + + 指定美甲师 + {{meijiashiname}} + + + + 上门预约费用 + ¥{{price}} + + + + 小计 + ¥{{commoditiesPrice}} + + + + + 立即预约 + + \ No newline at end of file diff --git a/甲情_甲意/miniprogram/pages/yuyuezhifusm/yuyuezhifusm.js b/甲情_甲意/miniprogram/pages/yuyuezhifusm/yuyuezhifusm.js new file mode 100644 index 0000000..9305132 --- /dev/null +++ b/甲情_甲意/miniprogram/pages/yuyuezhifusm/yuyuezhifusm.js @@ -0,0 +1,173 @@ +import {url} from '../request' +Page({ + data: { + price:50, + + }, + onLoad(options) { + const commoditiesImage = options.commoditiesImage; + const commoditiesName = options.commoditiesName; + const commoditiesPrice = parseFloat(options.commoditiesPrice) + this.data.price; + const meijiashiname = options.meijiashiname; + const yuyuetime = options.yuyuetime; + const meijiashiid = options.meijiashiid; + const selectedTime = options.selectedTime; // 例如 "9:00" + const dianpuid = options.dianpuid; + const businessName = options.businessName; + const shopid = options.shopid; + + // 获取当前日期 + const currentDate = new Date(); + const year = currentDate.getFullYear(); + const month = (currentDate.getMonth() + 1).toString().padStart(2, '0'); // 补充两位 + const day = currentDate.getDate().toString().padStart(2, '0'); // 补充两位 + + // 处理 selectedTime,确保格式正确,例如 "9:00" 转为 "09:00" + const timeParts = selectedTime.split(':'); + const hours = timeParts[0].padStart(2, '0'); // 补充小时 + const minutes = timeParts[1].padStart(2, '0'); // 补充分钟 + + // 拼接日期和时间 + const formattedDateTime = `${month}-${day} ${hours}:${minutes}`; + + // 设置格式化后的 selectedTime + this.setData({ + commoditiesImage: commoditiesImage, + commoditiesName: commoditiesName, + commoditiesPrice: commoditiesPrice, + meijiashiname: meijiashiname, + yuyuetime: yuyuetime, + meijiashiid: meijiashiid, + selectedTime: formattedDateTime, // 存储格式化后的时间 + dianpuid: dianpuid, + businessName: businessName, + shopid:shopid + }); + }, + + yuyue(){ + my.getStorage({ + key: 'userInfo', + success: (res) => { + const userInfo = res.data; + this.setData({ + id: userInfo.id, // 获取 id + }); + // 发送请求移除商品 + if (userInfo && userInfo.cookie) { + my.request({ + url: url + '/api/appointments/add', + method: 'POST', + data: { + appointmentTime: this.data.selectedTime, + businessId: this.data.dianpuid, + businessName: this.data.businessName, + id: "", + manicuristId: this.data.meijiashiid, + manicuristName: this.data.meijiashiname, + notes: "", + payMethod: 0, + phone: this.data.phone, + serviceMode: 0, + userId: userInfo.id, + userName: this.data.name, + }, + headers: { + 'content-type': 'application/json', + 'Cookie': userInfo.cookie + }, + dataType: 'json', + success: (res) => { + console.log(res); + if (res.data.code === 0) { + my.alert({content:'预约成功'}) + my.navigateBack(); + console.log('chenggong'); + } else { + my.alert({ content: '失败,请稍后重试' }); + console.log(this.data.name,userInfo.id,this.data.phone,this.data.meijiashiname,this.data.meijiashiid,this.data.businessName,this.data.dianpuid,this.data.selectedTime,); + } + }, + }); + } + }, + }); + this.add() + }, + add(){ + my.getStorage({ + key: 'userInfo', + success: (res) => { + const userInfo = res.data; + this.setData({ + id: userInfo.id, // 获取 id + + }); + // 发送请求移除商品 + if (userInfo && userInfo.cookie) { + my.request({ + url: url + '/api/orders/add', + method: 'POST', + data: { + businessId: this.data.dianpuid, + notes:this.data.note, + orderItemsAddRequest: [ + { + attributeNames: this.data.commoditiesName, + commoditiesId: this.data.shopid, + quantity: 1 + } + ], + payMethod: 0, + phone: this.data.phone, + totalPrice: this.data.commoditiesPrice, + userId: this.data.id, + userName: this.data.name + }, + headers: { + 'content-type': 'application/json', + 'Cookie': userInfo.cookie + }, + dataType: 'json', + success: (res) => { + console.log(this.data.name,this.data.commoditiesPrice,this.data.phone,this.data.shopid,this.data.commoditiesName,this.data.note,this.data.dianpuid,this.data.id,); + console.log(res,'成功'); + if (res.data.code === 0) { + my.showToast({ + content: '待商家确认,请稍后', + duration: 2000 // 提示持续时间 + }); + my.navigateBack(); + console.log('chenggong'); + } else { + my.alert({ content: '失败,请稍后重试' }); + console.log(this.data.name,this.data.commoditiesPrice,this.data.phone,this.data.shopid,this.data.commoditiesName,this.data.note,this.data.dianpuid,'else'); + } + }, + fail:(res)=>{ + console.log(this.data.name,this.data.commoditiesPrice,this.data.phone,this.data.shopid,this.data.commoditiesName,this.data.note,this.data.dianpuid,'失败'); + } + }); + } + }, + }); + }, + name(e){ + this.setData({ + name: e.detail.value, + }); + console.log(e.detail.value); + }, + phone(e){ + this.setData({ + phone: e.detail.value, + }); + console.log(e.detail.value); + }, + note(e){ + this.setData({ + note: e.detail.value, + }); + console.log(e.detail.value); + } +}); diff --git a/甲情_甲意/miniprogram/pages/yuyuezhifusm/yuyuezhifusm.json b/甲情_甲意/miniprogram/pages/yuyuezhifusm/yuyuezhifusm.json new file mode 100644 index 0000000..a40287a --- /dev/null +++ b/甲情_甲意/miniprogram/pages/yuyuezhifusm/yuyuezhifusm.json @@ -0,0 +1,5 @@ +{ + "defaultTitle": "上门支付", + "usingComponents": {}, + "styleIsolation": "apply-shared" +}