From f1173e3b68edca653126712dcc62f1f2ed23c507 Mon Sep 17 00:00:00 2001 From: Ling53666 <14656070+ling53666@user.noreply.gitee.com> Date: Mon, 13 Jan 2025 21:07:00 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E4=BA=86=E5=B7=B2=E7=9F=A5?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 甲情_甲意/.mini-ide/compileMode.json | 15 + 甲情_甲意/miniprogram/app.json | 6 +- .../pages/daodianfuwu/daodianfuwu.axml | 2 +- .../pages/dianpuzhuye/dianpuzhuye.acss | 17 +- .../pages/dianpuzhuye/dianpuzhuye.axml | 12 +- .../miniprogram/pages/dianpuzhuye/dianpuzhuye.js | 157 ++++-- .../miniprogram/pages/gouwuche/gouwuche.js | 20 +- 甲情_甲意/miniprogram/pages/image/duihao.png | Bin 0 -> 10583 bytes .../miniprogram/pages/image/shangjiaruzu.png | Bin 397 -> 9355 bytes .../miniprogram/pages/image/tuichudenglu.png | Bin 478 -> 4520 bytes .../miniprogram/pages/image/wodedingdan.png | Bin 371 -> 4183 bytes .../miniprogram/pages/image/wodepingjia.png | Bin 631 -> 3586 bytes .../meijiashirenzheng/meijiashirenzheng.acss | 27 +- .../meijiashirenzheng/meijiashirenzheng.axml | 32 +- .../pages/meijiashirenzheng/meijiashirenzheng.js | 80 ++- .../pages/shangjiaruzhu/shangjiaruzhu.acss | 25 +- .../pages/shangjiaruzhu/shangjiaruzhu.axml | 49 +- .../pages/shangjiaruzhu/shangjiaruzhu.js | 269 +++++++++- .../pages/shangmenyuyue/shangmenyuyue.acss | 19 +- .../pages/shangmenyuyue/shangmenyuyue.axml | 39 +- .../pages/shangmenyuyue/shangmenyuyue.js | 11 +- .../pages/shangpinjiemian/shangpinjiemian.acss | 77 ++- .../pages/shangpinjiemian/shangpinjiemian.axml | 35 +- .../pages/shangpinjiemian/shangpinjiemian.js | 102 +++- .../pages/shangpinjiemian/shangpinjiemian.json | 3 +- .../pages/shnagmendianpu/shnagmendianpu.acss | 222 ++++++++ .../pages/shnagmendianpu/shnagmendianpu.axml | 124 +++++ .../pages/shnagmendianpu/shnagmendianpu.js | 343 ++++++++++++ .../pages/shnagmendianpu/shnagmendianpu.json | 5 + .../miniprogram/pages/shouye/shouye.axml | 2 +- 甲情_甲意/miniprogram/pages/test/test.acss | 311 ++++------- 甲情_甲意/miniprogram/pages/test/test.axml | 160 ++---- 甲情_甲意/miniprogram/pages/test/test.js | 508 +++++++++--------- 甲情_甲意/miniprogram/pages/wode/wode.acss | 4 +- 甲情_甲意/miniprogram/pages/wode/wode.js | 15 +- .../pages/wodedingdan/wodedingdan.axml | 2 +- .../miniprogram/pages/wodedingdan/wodedingdan.js | 107 +++- .../miniprogram/pages/wodepingjia/wodepingjia.js | 97 ++-- .../pages/wodeshoucang/wodeshoucang.js | 17 +- .../miniprogram/pages/wodeyuyue/wodeyuyue.acss | 19 +- .../miniprogram/pages/wodeyuyue/wodeyuyue.axml | 35 +- .../miniprogram/pages/wodeyuyue/wodeyuyue.js | 61 ++- .../pages/yuyuejiemian/yuyuejiemian.acss | 123 +++++ .../pages/yuyuejiemian/yuyuejiemian.axml | 50 ++ .../pages/yuyuejiemian/yuyuejiemian.js | 194 +++++++ .../pages/yuyuejiemian/yuyuejiemian.json | 5 + .../miniprogram/pages/yuyuezhifu/yuyuezhifu.acss | 61 +++ .../miniprogram/pages/yuyuezhifu/yuyuezhifu.axml | 66 +++ .../miniprogram/pages/yuyuezhifu/yuyuezhifu.js | 171 ++++++ .../miniprogram/pages/yuyuezhifu/yuyuezhifu.json | 5 + .../pages/yuyuezhifusm/yuyuezhifusm.acss | 61 +++ .../pages/yuyuezhifusm/yuyuezhifusm.axml | 76 +++ .../pages/yuyuezhifusm/yuyuezhifusm.js | 173 ++++++ .../pages/yuyuezhifusm/yuyuezhifusm.json | 5 + 54 files changed, 3124 insertions(+), 895 deletions(-) create mode 100644 甲情_甲意/miniprogram/pages/image/duihao.png create mode 100644 甲情_甲意/miniprogram/pages/shnagmendianpu/shnagmendianpu.acss create mode 100644 甲情_甲意/miniprogram/pages/shnagmendianpu/shnagmendianpu.axml create mode 100644 甲情_甲意/miniprogram/pages/shnagmendianpu/shnagmendianpu.js create mode 100644 甲情_甲意/miniprogram/pages/shnagmendianpu/shnagmendianpu.json create mode 100644 甲情_甲意/miniprogram/pages/yuyuejiemian/yuyuejiemian.acss create mode 100644 甲情_甲意/miniprogram/pages/yuyuejiemian/yuyuejiemian.axml create mode 100644 甲情_甲意/miniprogram/pages/yuyuejiemian/yuyuejiemian.js create mode 100644 甲情_甲意/miniprogram/pages/yuyuejiemian/yuyuejiemian.json create mode 100644 甲情_甲意/miniprogram/pages/yuyuezhifu/yuyuezhifu.acss create mode 100644 甲情_甲意/miniprogram/pages/yuyuezhifu/yuyuezhifu.axml create mode 100644 甲情_甲意/miniprogram/pages/yuyuezhifu/yuyuezhifu.js create mode 100644 甲情_甲意/miniprogram/pages/yuyuezhifu/yuyuezhifu.json create mode 100644 甲情_甲意/miniprogram/pages/yuyuezhifusm/yuyuezhifusm.acss create mode 100644 甲情_甲意/miniprogram/pages/yuyuezhifusm/yuyuezhifusm.axml create mode 100644 甲情_甲意/miniprogram/pages/yuyuezhifusm/yuyuezhifusm.js create mode 100644 甲情_甲意/miniprogram/pages/yuyuezhifusm/yuyuezhifusm.json 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 0000000000000000000000000000000000000000..1a35d43bf3200516d2ad8700cd466ab86c1ad20c GIT binary patch literal 10583 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 z z&U?_;9b`2tWywa>UKKTK6Rn0yaH$vK@s{Wql3T!&2GUk4iQUG}ZruLt!I7%22G6$S z#eKM%6?)ioa)OupB)ex>0?Zjjb&?ANh=`1!NK^C2y+_pI)UI1uQ6|`guMKt5;E48EIM2%#M(~sV? z$Jlr;17a@&cmqVwM8ij_s-y4Omhw{$gPx8#xqSw5azKKte$0~9!es?`rNO{)F~?P^ zETLpD6dExI6w`?`GbtZWVBoZv!J&N7J9 z+kq2(+sx#CI2gJW5+peZ;QV09`u}%+Cc4ch_V!cDR^3)8IouI=EfwE#6dAt<@NueQ3T|DL?U~dH_v^!68VY=vg%zV`2@h~ zRTRUjyUN=uWl>h(<1xZ9fR5ed4 zbugS4BCrO5fC-6G&40l3c{7`n$I2@jz6he_F2YEdSvSB7e?@VHlZF`rt4?;3e6&(Z zXJ7UE%ooR;PG7AfR0tAqM+I%Td6c#|#*pOj-%9Pj2A=IP{`2{* z+UNhL5}Rx0_$G)HET*k_%t-n%)NAfzrsL}D8K~$+DAp(l1S!O@_Ci;z+onX2?zHt; z2A)u?8x<0yQLfB7@YAz{Wpb25VC2lKJ6RXItr>QKVtQEUXsKBoyR~+UqLbBj`t!WwPSmJ zY0#iU`QeQ~pqAvlp$YI}uJsPGM%j{+liQXe@_CUD{jULjj)ZY*bXM+vY-R^)!OjI$i_TLa;bocLS&J4l;7C#kz|0)oIf<+N5cjEEc`H4#y1UV_LJFck9p< z-a&Mu80zzdK=+C9twoFRIDj2}3HCR+iU;w+JBXGQ3YAoffb6qkKs>-YUdUG&bxp@r z%`6|(?T{dYLKIHWg}~zJiGv~r?gVIaO*;Q#tPo#pos*Y4U{x6*L8=04sC0bRsb(1|&JQtX9Z9z$dnH+!w2*zf!#oNswY&@=Gk(|81A} zK4!jlsDG6zU7UKGS4btN67kspK2=5E{up)Ky-AjPtAo*y1o3Pu2f$Lsk9k&8gs<7M zJ^#G2ju9m2rK~s+PGsQA)eM^%SH-gKIn}h`S9ik^Az=A9(JS_9ax+R+(AC$?sCw^rMZU;Pb7ki~X#LInIPzk&8U zpRkOW?hq{Qh*jahjW$1Pq^Q_-!gv-dB`M^eU8-%C2=9RDD^Vx+Sha1b=no0f3pED* zVt{`ZVY*|>tos)gKpRzNaeDG@O)O4g@JRrfwTOek55u4tv3B<#wXmmRBP2*as1f0A z!F`TQ~!aO+*B&}Qw35)L5)6TmzPpr)Gn%seal4$q)`enrh}Di~@wg8Z?q zt$ACq^j*?;u3!+{US+072;z68lJWTXj@&;LaIPDX!u0sQWEfupFaf~+wRVhw6#!r1 zx6@Ot{ajon#`5k1hp+uR06$1DTfL}xm`gM=7{MB(Y z@A8Jqr#IRrx3-jc4>ouYX6ymN9*}VA&rvPl< zQCC;sy$`oWUp0V*@^26p64An*m8Dn5@g@tYqvL}h=8My(Zz}M1R8XWfLXquPk$@!$ z(xsN0Y0aFG8ApG~>2rw`g5FNuY33ONzWX+NnQ^_x}!DoWY+neFghyVj0 z7{F{|(b1aC%L3HHatv#NtXVNHl{ksWIE}%356e}oZBPX;cl1Oe9b2`}d#SdjYj15t z5M&Lk-S*@!2#ARUOynW_U{?EO)?ktGG7O$g)Y1`cziqJwjSZnyX7x{vR<J(NDxhk%F}s9iFOer zb}`75?SnoMkZz2~y?NUYd$; z`GFDHg@o9J4f+^?nwhzUfRE0JskQdqe&M zKC8`Yihv7=kAb=}sAimb4FrONG*L*S0GrKF@&ab#%p)0z+~Jp;r?06W&>>GAnwZ_n z;qih|+$38Iu8av^ibIgPSUp5yAJ14%-YTvnjfWspV=Ad5j2*|&>n3`laLQLt0xJ1y zULD`$goZq|kIr3_wdDT3oc}U+&8M=mt@7RW#l>lMgyIp-=d$_I+W4sGMx-kxNlf=k z$gAD~_C;t81Bp7+|CuzH3)v0pvu36I_w|-E_#6A;7JSXqr^5nFqMkx${=~^q7R-$N z_Iov`5ki^-7pVU_KI#jRjx6mR`|AP&Zdo|IF3eqndV)1$@`=+3;8w$svYgly`ywQb zQfj7B6}aV`8s+EsR^^cv)S*A__NHa?Qw0o$lC$ImC|s##`bGp2ae5bY&IFSZvTE_% zAIZG;=JbK}nR#9o+=95WTT*Zx6gFIXzwhv8?}{T7E(`&6k%kX~7Viz@G)5}6-gcIa zd{VuT30)FsRh{OQq>K1PQ!@8G;e+@sWCM0v4^#J^F~U!_mx{W?YT<#I_;qB4K{f~e zWDHz2^(+Jo-Hn4o@*D+xbW*O9(=|*K%K1xx+Iy`%4R1!|(+OGy1c|ke60+dh*@A_? zaJWklsNGk~nrS>oAAA}U9gUk`Sh(^nVjsQ>{FnzQTqp3q@wF^6(j%J5wqD_LO|Cc7 zk5a6tQM?k%P42EAe#$UY!)CxpPc2I0Uu6bckdnr&>ma4taG8#Jbr4L60sMLTN3zug zrWJv~p1uI>M6Hi`bBHsNTE5{4@+mh8688uqM8o^-cT;%cwm{*5&i9r3&SvLHKt=2& z0?q@Tp$6>2FFF`Oi(i-1U7(`|J>H>qp@_W7}Vp?P&k@Hnjydxe#M_EaP>9 z+e`|aVNeO(?aiXWxhKf{tk=`&_d!Cd|2lydi{1Ejnr?VBtSvbZl zsUja0>J(dyNEX1gv-oqTCMQ4pQ|0?7XAb1VyO1T^k-GzKz-EKGl{C~jN+j$URvmve z{{~N5*n&XWS|s3b67;AS-JWhk1mw8$iW+fRGe$0t=oEpF`aN|EaOFW#+urL8#@PPZ z^CN$Hd{Z)l)WQ`P@>_>NpQEI*S9n?AD!MtE8s&PS2>Rd^=I5UrZ7X_sli$4FVfA2b zDog`)WjcGNH}zI0zw7C|Y?6`N6IXHM7HPPYCJa;ZXVjoPqtg9;`Bt^yyT;3Gh8LN1 z(jh$z`?Yj?5-@iLWXOV26y|cOry?dnMBQRYZjzb(RfeqebNNel&?t4q-#>?&zX((m z6rK=|UW;CcJ<&%MMToHrQ0-0erZG(n$L3vBk2f*=xfsY1vK(>}{0WWZDN9m8B^lF6 zjOR__aL<=NJtJPi*B4)U$A)816G5KMMly&`Vidhn+AFT?Gf-f9f#o+PK=Ema0lk0j zBGN!p%}v_59Ttz#%^HuzJcokS_=+2?=E)3rXp?s2lbij@HmNu`IMkocet7*`j>#aZ zaIOy++c0WatRV?(Qo!r}^n&=!sZTV0M;8+`lj^1aNm-_JeXlXeGSmvChxIF(77;o+ zo13#c8i}}dtrX?go)5i`W=&n3X;sy;w8~;i_jCoX{>>H%;?scgl<`2$KL4^9P4zus zxUM*1v7zrVe_ZVtigI%spT4q!FP>d0qWUa5V<5Lrty`^%7G`Fe&3TG*&E_HXZa?bj z8yXvT+Xg?={bX}WVEmBcU!oHkZm^z?;km4H@bEy7_WzZveG1ms3T1$qnlrSFGxVPL zTjxjq>pstJxHl2&73;qbk|S{7_yVQt`SCFgbW_liolf&16x#|Pbr-^ z0{=k}Xs9q6W1CI-+v=x4ii^Ge!Vx`e@<`x8%RIxr3HeEdDp46&@YNvCb|cIGZQx|3 z0lSgRO_{PM?_uuYu^k;`ZsP+?BQ4@*!Ase9eL>aFDOY)EZ(0`-e!QH;xh4FjW_ac- z!HwBIYliAKe`osFip%E`z3*1_7OeTZV6}j{%ygJGO*?h&w>NrJok)Vz zAuGxFL3_;VpN^1R$Z{Y|WLak?90LZ6`>(2TS8*-l2F63=OyXX!Jr( z8l0z&Z~To?CJ&>fhZG8B=m?n5MAF9hU%cV5NB8%8te@Z|=me@8sV}$v|Y}7iEq3j>=15R&rKOHQhIF$=+SQ$ zf>x{GwXLl!24?0EVMgNf@Uspb|d2oPs5s?v;rm+o?ByjXc(c{(4fUCI>XI91kD1UZzCIngocbdqK9( zg(=wRMl53=YeB0eW}^PoeSP)1*#|oX;|v39rh4rgphuM~to-dKtH`K#B)AI|sB~kK z;3phI^^d>2ZEkGz>SH&pPHW(Xc>!B$LgS^ogD3|En>U~0Zj7 zD_m#W)=R79?S%&G`Iw{TcZNu;hpv%V~rBI;eIzK6hJ@fp$|qD@{T2 z$a4tD#?ZNBa{JCo2G8`w@Cp@4wFE&e-7)ZLX>oB8**x#}i|ylwQa)hm$6;D*Dl|9> zsmo+#Th9SW3=%@b5nsabYe?vb9&8SMd$X?ka`Um1-lmzCHwk&{YDaIE&}=AjFQLQyF2Y z$t8gtmtIO3cPa{WbSfho2nov)S*--(#&`A)cOq(PYI;Xj_QEvT8JU>!rWY2vRQQxq ztz05!`8EP^_kx3i!%V7sYQl(!NBez|7!OF~BF<$}OD843$D4&S4VE(k_VQ10tIf<}9urOWFq}tTK1oOodfc>( zmwR)M18PckY;JY;{=xgLKpZhBIM_X|KdJKmx_Z^)FIg;KvDm}>5l02?2uu_latbKu zIJ+<%$uE_)rlzKAGqtutor+=${dkf_Y*-4{sd8Tt9O70mK6e`rodu$ZEI2%pmKs$6 zMDXIWJqdO|T8^kEmCLD_F>KMltqlUX2~dsam}-0?K8Qm}a-dz3{J=oT{%%}Ybo@OF zo;_pqs5#wUxoY~0QNsigsWR5Sdi3ju(vd!}Y^^e#ENjE~v(Bp^6!S1X(6Zv?_SyEv z#)j3esVTJ2Lw=UaKyM48HpwDsJc;PNWAod{v|i=IRrhp0HhOeOFhjItu3o9icGiCA z)m_xV?Qs<~R2a}HLe-7Bjfebn$w?&`h3jv9Xsv)JTMPM}f_1H2t>K88eJN#>)AZ6- zRmQ0X^VxnNYFWKV%q5k_j-NrR{3)uvpZe7cJR9ED@{rNAoiB0+!^=$fI*St!+8cpI zM~%`^TxtN#v+0>IfzAb z;hp@1+?%YG;RbB5ya;r%aK-yX;f|!+aar{x^@;fM(5ZE^OC;^hC>r?*Vm5=k$y+*3 zK!KV(I(>G;h&Xo%L{VXX{IA)FbgM@Xl0pxQQZS0F(d@QHxsufqO4uYR!LE$XL5ALE zSE8<++uJm%u!Zt*2B(KOEd?>bA7i+t+(z-`#bMYaRb=yLC_zAgT0Q zbFKUPAxM*){ci%6O;!O{7e`d4!To$?bUPfzQPj>|*TcyZMP`iT*pBp4rJwr#>}D_= zRgRey5oO1?mp67$K%l#y8mjc@QfSl)1i{hi@uBtu35-&up~DBE#l81)8NPiAQo7%# z9SQ%yYtkAc)45%YLKP@@rhXl7gYJH7XyGz0md3`!|7=G|6I>7$x1;SU*j_DHy_gX- zE+rpB%>fyV(@CA2_WE_R{MqA-p>}+=mO!?n;hp+JEr(5O;V)ECwx}o!gK3 z+%0BtvyI$DqWboCO`e&!i@|o2dtSJ4pue<*gd{>?Z3)cstJ^NC%U;bU(IPETL!CtTHSj3T>)xlo=lMJ}=jkpYV$L9hw($VbLp zFN_&V0Ux3vT8x?XC$t1HEU)H#g23^iAq>pm2x)V>#wXtk;BRhnZNcc12xWfbf z>BE}g7wL7n8?l-Phs*{CB)@I6NlSUDckc99oLjvDhrvi)NAA2x7y z<$U9FNdl7sMyJNYF zj`t1^53T*UB(Bs51+Z<%W>GrkIUQSjo#jw(XlUq!iP$@X^;+uY+q%*nztlo%E_mY* zexWBcS7V<|%^i?cY74QatI_aA;qk;Z=zBT@vZj#afd*N*kQay>|TaGW?XPB8jSs8GO>@aM;Cj!gyg98w0~5^hIc>D%jh$;X4X?-AUH+6h`Jj(fFgN8f) zdqokUj*W%Q(>tyG0_HW-Mbnat0)2S4aRb&2K#juVasPZ@oZ85AKKz!Kv@2)#vw|~v z78VwD?fNo}XBPDi!=s0Xe!3~2FI^ub@L#kYt9vWJ{?^?|?9UaI>~tE)dBeJRo0c_#K3sL zm%DdJ+_V5gmf33t6VZz@k>bE-78Vv(a*}PkG;$`v8bc7F*AV3ujd!HRL3G^q zZp_HMm7C?SxDk{zlg0ohFx4@s<hJtr){f(_zH&LON{X^zKH^y}(HQhxE+E z<}H0Z+3yJ=VRW+TkQ(<2epV0~dX2vRw=4^&`?IoyJL*7NkcnpEZ=zP45_2&XXl8JQ zVm(${VB^XZO(9o?ZI_TkO2Q`RnNuATP7ci)fM~q|M1sD|B7A&gFH+3ojn@w5xEPQv z*TW)s?96jHnAb*!`;%>lQ*VVN9evur2?+@Y2S-Qyxjm&iy!}r_Hl!r)S`_r1X9dUw zBiLF--Q4IRcdmDrJ3f!XBvVhm1$JSK!=04kW`zkk_Crfq640^XrX9UgF~LO(FMV9f zKbMdBBT+=SxP5iUv`6+~OWX$I`4p$xd7D11g0#=-=#Ai@AnEz!_lZmH{OeAdD%(`|7D7ZBZ7OHwpXD`+lEZ^K1u;-@aKN}pp*yh+>CBIZT6hg zxtFw41C}aebeVvqV^+n`hCNN;6rya>W%!wlHn;0jZ&M7amXw~I+x{x{y-KapYrztfHoB?ql|CwFAGP^ z26`I{>@U*A_ou(%!GFw=GL1cu7|8ip$-ERe&w{L16Th**AbV? zY&BK4I(Bq%8`X!Bk>7Mc`RX!6w?`G4`+$cjMnWk1B>p>5Rir#AOf`5Tbhqz4AHgiI zH61eP^M=PF7E`WF4&8M}LOoR@9^`Roa0#!XQ7*D%t^e+L)YncJU`& z2lRYYTa5cgBcQaVd7Z&WUf^NU{(^+pjjR4ih6e9@+x)gi`8Z|z&nJjIzx!2GR6;?* zO8o&!0@+^%wUbEr5;q|RWUskSiWIyRCfa18K6UNNZ|~r6xGT-c=2hzkYzWT5+D{HA z*~L%MOI~686;^5i_W5SZ`}dlq|1-s3WRdVAMRS0+aMh?tKG`QB-nrMhV8jGGMy;%~ z6H5KZ;cROsL1aMkT5#{zuNGG~03vM=F+IR=7^^+cj5JWmPEOLq@Xvhx5J#F2noC*9 zC7xYPFsh{EpP4ozu>IJ;N`RY*PdQw?AVTbV&c1Q}~PRb09x0w6JLGeLX;4Omky_K)8#H^@48C{+BUt3F9Y z!pSt<7Stsf(N(NtYM;Hp<)@;~bD+-cEBY>NvnM;RkNeN#>Gsm&BvarX39dTc-<0zG zUW!Eb(pKehU~XHTz)ZBf1_rmypZGS5M7ts#u}rEd%YxpwL7w*u-uM5I7lK5FYa5wK zs6+3y>~U{x zpAwgC)(JMLv09t=UkLqHU?!I!@{yB{)BjrRADpOxEx)U}>RRyo?Xzf11}YF0;tB;f zYdg%#VQ9;khi}LC2Lgh~ZnQ>UNA>M9wfUF9yTd8QUl`CRr9}&3t!Ei}_$B7J1`g?q zc#OEtNn@I(=|Zbje0yFH3l1NE`PIgAY;4uOlnR?*JGyW+L`H75cEB?dHxmmvnbBg44> z8|Fuy`@goZO^Qc%+9G}}gMTkCN@;C?L6tlzN0_@P2_bu}@~|WywNQ%^D#UXxNMy3M zLw@eR?8-}?xE9F!Qu7lBnMe)zSZc!d8G#x$7-8gw2~dTC38u6mf+1MPFD9Z6)1u$9 zeHV`O5G9R0WHU_Y(wM3(m^Q@aXk7uh&!E1xX;kebMZ z%(I{{E;fB`e!vK0g(rXCJ zA51R92l%O{#HFn2-FF=;`)$KDIeHkGk|4u}4xA~M6~dxEX@&{6gtb~Jme$rLlV6Jk zwkzaq2pMnLmTF%Vbv5QsnlMExr{Ago6V`$A{vVRv`8UwJzRhPIq}n76D3 z*+->egr`4+Lkvva^W2i;|KZ}swX(9AOF3OD_C&?G$DcSb%Y0vQ6E*)^#$o4j03*Yj3LUh7$_I=qZR|19csx}>x} zQ%QZhm%)KKa2d+A3Sr$FJKkN}RBmLQ1=wy$mCG1m<*v1Br~;^65A%6yAm<{gzOA1b z=?41}+wSg|Zc%#ayv&hhur7_FRsWB)`|m)`?WQjTh<&`7?sBHV4en>7WlR@A0RaJ% zz!q%QkTXhi;VF8KBUL@lLtVkpJ2OmsR_Lm+u%V`)i8s**Eks8RkCIEV( zIa%71F8-GbeL!$fCk~o}usi@;mdQsr8D~g(IjrEWVH4r-L#X&0_$p-6g zsO4T!FCdrJBP?$^XGi)uh^9|;3vJ};HM<+&h|PzeQ`Xv*aloxsHKl`b~bke*N0~;^IOM$Y~ndxQ<16C)F41({FBW z#$#)&&l(h+QXO(_TPS$;$SLG9`GgxN;Xk)ebCJ%a4!C4ktKe4y+ z#a3Qkeso!yvtOP~WB`+9`9RW-17g3#+TA=1z}Qm3+q|9yvVa9R*WIOZ=0}tqMcWPW z%KJ>l_2V8{*MdM`nSZqa_&R;s-SH`L%c%OQ_s0JJXriIQ1Pwt=r@Ix%+2#p6tmg3u z?rEo2%f5qF{P|=K$S}rWzL_kA7GQKCy*s=78}H?i0H4RT(XS-1pdEDN4L*WIJkX^) zR0`OaI+&IbuFpOuhur?RaL=2bXERN+v&W1DZh-@IA6YV}VW zPSrkdc%HYq>)`8vqKJKxDWaBFC*1F?I8*j7J)D}F>Qjb%M5BX3u|awt=CNs)dZ<9s z=2V|v4_{KX*y8Qm;+ygJ^|c~mL`8zM%9miNA~hB4_*(!t)oz5e@X_9^RqmUDrEW8Q ztkf6R5zcVvjE41zS}zAQ$zKC?c!@I>XY6t0y9NU(0*eUDj3an78T02CX6U&Nw%=3j znZ_2~J5TmI+Uj4(#@?@}>Gnc;uzY1E?D!Zlv-^r7^U;`JAoxu1DdViHY#&P+MFikP z^-%aA2IY$)&XQ-Kog6}-p4b-PlYhxi{F3y*wZAJ4z{i@qySw`UCmw+2t)leBx&2~( zQ#;RtQk+BNVe`O=?j5>X6UZ#5sSAv2qz0y*<-N+RMfT^@SzBAHXMTCCsF!1K>;FJ9 zfkYQ+Bz2m6)}HYDtl8yIHxcA4bm7Pri8}8oT>UEGZ-&xus50Vnf8S`|3fEAkF25I2 zE#jQDTMg+^6ZpSL=vwZQ2XpgxNN5q485o>%Lf|XbeIVISrdictKqN8HC4Ar-de34( zya!rrFZe0(+5*#J=isn>0pO5)Vp(tvBu)P2tiyT@y>4Iuw*+!FhcoG=rag_@G!L^M z{C^LM^nVWyD5ec#=U|+z=^-~kf>qp59cfczz{=GNb^Rd)6{~FI8&Y(R-frv>e!w!N zpJ?66sZk%WQ8*Hx{d4mb)1$ms9@AjP#yT^8Rwh*#T0rNwIaR=MLcHFdVbq9Y*`udq zqAri9Df;4_Zi{5!zAwYdEf$&ZGpA)#>Oei#wQZl}jS=64I_rlC1?0f_NTG>f_J#Db zl>fp*_dqr;o(&bi(U>0IycXPlZKS)g{?)%;fIMAkRht0^TQQHWH)?W*h^{8pQ^5rE z(xN+Vf>tfSj~>TbzZtAxL=G?k6z?dxgpvt3DJg%e_I7N-zn>8mIC+ZnlSf`ZwYvEumKvy_(e5q?a0LoqzF81A zs~S;2Wev43H_qZ;O$;_j&Q$>B39bW=#x~Odl{D3jxN!?@pn!&-#0UTX*UY)l$pj`} Ue>H;$R2P9XRdrD{%8w%d2kLp%4gdfE literal 397 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0h7I;J!GcX91fH32|H2Dgk1|?4y$B+p3w^JKAn;m#ut(zuWbWYyU0U|9< zP7VL{P(y9!HHF-r?2d+J-}R1FX~(;XcfD{D+^@N1UAE-$k0m*`zpcr*tg=Pt^h2ii zZnG{-H7VCn4ze;iUo6?Cs5`^GKcGYDvWab3xmn2R!=g#%A`9&f>wv~bCiopw=)=OAGf@IA~X5U`-?gyVrOH;Hvv5ptMRD5bxr*p|HoS<*vU%@ n)|x4Z?3$$~@-fwE=^e&(9lx2QrmqSE1|fr|tDnm{r-UW|3LT<9 diff --git a/甲情_甲意/miniprogram/pages/image/tuichudenglu.png b/甲情_甲意/miniprogram/pages/image/tuichudenglu.png index 17438c20c5c28f0c248744173f13049810d8d292..c9fd38df2085c9c134e31fd4645dd5f88ad8a086 100644 GIT binary patch literal 4520 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 S8+rs7Ck&phelF{r5}E*F=Er&f diff --git a/甲情_甲意/miniprogram/pages/image/wodedingdan.png b/甲情_甲意/miniprogram/pages/image/wodedingdan.png index 8c3a12428ba7ce79883ad43668033111a188a110..9c6bcd407df105b8acce5d2bc54b4b0d1c8766a2 100644 GIT binary patch literal 4183 zcmds5XHZk!+C3={La0GP3mPPVigZCV2%#w;MVcTjfb@>OC}6|{P~a6I(v>1A0!j-- zq!SbZ(i9YfqJUI=X@N+I2z+6_-`{*Q_s5+(_s2PV_Utv!T6;hHS$m(8biwi*Kd&S& z008`^CPp@#wrBt0;pV(694iYr4d|-PIRl__5d9MXgoI6v^z9=URR~0jpTVeJ{)1{3(Kiv4Dj9uka!pPlOaKxm@qPnhX*NYm%$T`zkq`L-J5c} zMz*w&)YH~Paz6B7Z_BS~V&R`L`<TM{zU-I5n6MQ#7M@L+#H{S0LxHje@l>ODVTkPQ~|WWY0f~omI_VuoD%pXq(Mon zFC18YuG!b&mk2&3O;Z*quk$(yT?U57|>N6AcmR!kWU)|1j06L!c-5C zkHf;QoX}w-6v9v>@B3~E7|IAp#}2gQ54`e9aM3Al#UaaynulpFZEAYgT}nJ}2ZR2! z4E@6|&##XuN0(!|!Y$p>qU?>H-hyttQ?6uE1D+ZDNS$@SvI(0**U3aQZB;Jg8aMTI zegWD@r~yqwah)T;sG;$!HpI+XKnjIlMXnqbX3ogQ)A|4%n<;goejpRozITnC|BI`Shw3}W>3J;7x7RJ_?4%9iblH6ijdV?~@k3yw$s3no z%0%c$SX1#jC*i~CMo0TYI0^q2mdz*-qTr*`j@Pzejm*GRVJonihV6MgHQbV)Q(AO*yPC=i|^d+48^ zW|qvRI-FkpSR*a0Ekd&tXgeoMiPMNo&;~xHv5ZNCSe;)1fyoA##jqYiYZ<+keRI#= zLi|f?MZ_?iY016&T$1RMX9cO(JS#(~u|Q6m0+v0^sTZ)4I~W?`cqk;y?$fm-LQL1H zF_7@GF0%s>|7|tW#tl8@E7+FDKpH81kS5!L7OkfW_;&_FWyfwu*96NcSds>KG}a0@Zr;+BSUr8DtM7O_{KFk3|X8V4QSlKu<+o6 z?2BA*^FkLkl7dero*_vXQlc=RRAN~yRQ^IG5pIGx+jfwaEYqVyA)RZp*9VInacF~L zg=7hW?sOrqgC;cDi5D0$JVTMdagX~|FxAUE>VnwG`=Ry}8nic41qAQxVL)=!pbub3 zX3wi*Chp+b-fR-ob7le5FCNUFufWoiEQ>s!w525*^pGLebGg)nMDEw{Hyl`w33w`Q-(J1;Nd zF(KrEs_NLsv!VO*S0napEm^upbU$gj)99+!LI2r$Qt!l=elN}iD>QwsFxXuYGKpJ5 zF%qYn0bQFnA;U%G@Y?Vsw_H{xcedPO;Sy2ffW6RVgN?z$)~j@cUMMKcdL#C|DE%da zi&;&)IsMTsR}VC41N@1NJm#Um5moSSSf_t)TH~OVVE4YGEaedD+{}S%RuUf?#Awn= zL5^TGgI~bLKuh)Ox(fx+FgqXjV2@fUk}GJ@@9Vr!zY3I!Aax_Pra3!C$k4!zcXH_A zh68x?N%2ywMD9SaZ=MF0|FeS)vq zan8wtrk$Zj`nSEOHFbO(w~W%k)wLY<&8mU#S3!}N(bf6CIos7d;lCqg;)au~A62=? zzEHj;a&MM|^K?VI*A6X2bFRMs>wYcMJ2OCv${qCZ5@0JMJXp&Tr@PHEn{JWG*^{Id z+^IK1njkKPZcE*^pB{V|KD5lQ87$VXoI5o9vB71fe{=AK2F^iCI(R-eyfjw4rdo@n zH&W-j@Q6R~i*imrzdLL?Pv*fbA({kSisMd99n#27mYyUHM32mdOzPBYOHWTWx~98% zBFgs-Yj`q!Ygr<}phN+EzE(}T-L(6JW2UV@1(tH>5h^t_ebP@=FZaAGOA5c0x=(KR&wjvWhF#+9 zHz{=B_eEFR54*xZ8Kcfs_40MWjq!&G9>G%^(ZKb7!^tSVREWE|pd6i3ML-)A=wL`# zSPFd>S+I1xYuVChZVFL@Amv5R)}p+t8q+2pxNg>b8hlDAM}9V}`jS z2(oCuAK~ydke;Wo#vPU*&KMV_&4YqG@)*VJ30B+dZ3)!3L$q+Yjq>_GuN3(MM>H#t z-S--`L&}=p^Woq{pdNdl6DgP1O(a~eU7t5SZ56U0;8s3qoFpbDk50FDF0hSCJ{JC! za(8+Im0u&-8s*ul2X?ILT0fs1a0NVyl}|mC@~~5F=G3D>r)M^N>2V1@Iz}vU`>8^! z0?J;!aY-52y=3?8>dvA|U@GdS31(as=eGATO|X9(L>0b1_S6i`n4R+5KHPB;P*w_x zt*XtMvDZy208BpnzBwetiGfCcY;P)UPhWw7v|FgkxOXZbW=5PIyi+Ow zw!rcPSFM?+7}mBsR*hRATFuZc<>ujkIy@$Dpe>KLO)#+baK{8I%Z@9laB=00Gsb?Z z;h5fhLs^$nWnMcoag&m{gNlfVAzZqvT$Y`NH&AWHtsXGR)ZWVFt-AQ_jQ91Ht2rtv zPPOu&gU8k!HZzMy+dn;b%52KO2l#{x4zxgRKN0(!JfG0K3#f4e^70T z(GXsLO*7;WPD;~t=5yBn)+*RTe?^|zo$O;wS(IH=YK&f1M#9|iLinW5YJ-<^7>llghqGR`3b zA4|qHo)_hC$K1a=4Jv7vkGTZ*TDG-Qq#YpJCB?P(v#7mS`fgUZZ+l_Mzm7VORBP>{ zw>o9I?*GmSTKQ>)X|?*kr}f@wpD@4nK=+$B`1E=N9D8q~rN5q+Lnt;kk4_!zqc^1( zf`6WdEN#8om!UVH*nN2^{zS4pmf|r}U5S6u+2MOG($W5vZNF;i$f$7!o~NK98g=%E zQlF;wuWv;u97K4GvVbnR)EXlsCnWDtb8r3wu!U(mi-Y>WIU(m~r;cbD`6;{rl_TXS zH8|Yo;yX(oCx+qXA{@zs16Dn3?`PKf7&A;?jc$`7uNqaB3uo(BBvOj(;TDw^yp`u5 zaLxH+jsXX;*csz%iVlKayQ`jIUTBV)F(V)7KGmqbo3$7LMHs>3k61yd&SZb7m3!j) z4}C(a%`x8Tqq27$%0@rgJ>@2wkeQ8M7w>xpn#c zI^2ji-g*f#+4(nfD?<{uR{eSPNN7dnqx$(vm5(&lN3Zt&sa+FU^A#Z`UkRwg^RN|w z`a^O{AzA}>Wp&Db`<`6hUV4cjQ^W}>VLt6c>xZKc*4v=>{xPn*D(>X~mf_Vc>CZ}Q zekYSH6W`hG6}7gzA`?_xcIL06l-p-k^4f)yLXD>mEi4Q-d7gY16Q$dI{zucRV`}GF z7|Ik11#wgiCtNPrjr}7Uc-iOum+^UPOhvFIA_;#C1jl9;&Ivx`eDePI6>#-A6icy- zeW>RLM)nkbC>wajxjfsz19l5J*X20NDy?iYJlIsOlpQCJA@iMX{o?Yk2VfEgqZu2g U`LVm4KLvoPv87R^fqU%#0L)!z`v3p{ literal 371 zcmeAS@N?(olHy`uVBq!ia0vp^DnP8r!3HEZp5@dAQjEnx?oJHr&dIz4a#+$GeI0>P z{oH>NS%G}c0*}aI1_q%L5N5oWCSL*6z~SlQ7!u+BcIs>1W&<8JYo^HtoRc?jfJg(+ zRjad3K51n3y%P4xGpyd^Z&6`PMT`95R-Kp=hgx-n7UteQWa67Bb3D)VeDRI%fA>C~ z=+Yt2bNIt5ixr_0_v)OkKCaw3VVdULM|vgkpI!#_1uNQdW-`i7%y~6Qz`& zoltJKd3h;S@xiGrSFUQO>^aD)54QE}t5_T<3)tSZ3*|I54>s>@=p3?!*OABw+%a@4m zYUYmIG2v)E_etjUk$^2#~Rhn!-uu{W{`mOKFl6oaR$ KpUXO@geCxYhLlSH diff --git a/甲情_甲意/miniprogram/pages/image/wodepingjia.png b/甲情_甲意/miniprogram/pages/image/wodepingjia.png index 3bcedeeac8e4a41c53d4f8fbf15491f3e4eda8bf..f2f8ebb0fdb27121baae0cb02f200b7ac439fa16 100644 GIT binary patch literal 3586 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姓名 + + 性别 + + 电子邮箱 @@ -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" +}