From 27f2fce9329694c04e72bf0c4367497844b24923 Mon Sep 17 00:00:00 2001 From: itgaojian163 Date: Tue, 14 Feb 2023 18:02:57 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B4=AD=E7=89=A9=E8=BD=A6=E3=80=81=E6=94=B6?= =?UTF-8?q?=E8=B4=A7=E5=9C=B0=E5=9D=80=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.js | 105 ++-- app.json | 6 +- pages/center/center.js | 14 +- pages/center/center.wxml | 8 + pages/index/index.js | 549 +++++++++--------- pages/shop/shopcategory.js | 107 ++-- pages/shop/shopcategory.wxml | 4 + pages/shop/shopcategory.wxss | 26 + subpages/addshopaddress/addshopaddress.js | 244 ++++++++ subpages/addshopaddress/addshopaddress.json | 4 + subpages/addshopaddress/addshopaddress.wxml | 72 +++ subpages/addshopaddress/addshopaddress.wxss | 58 ++ subpages/editshopaddress/editshopaddress.js | 285 +++++++++ subpages/editshopaddress/editshopaddress.json | 4 + subpages/editshopaddress/editshopaddress.wxml | 74 +++ subpages/editshopaddress/editshopaddress.wxss | 64 ++ subpages/goodsaddress/goodsaddress.js | 132 +++++ subpages/goodsaddress/goodsaddress.json | 4 + subpages/goodsaddress/goodsaddress.wxml | 23 + subpages/goodsaddress/goodsaddress.wxss | 106 ++++ subpages/goodscar/goodscar.js | 70 ++- subpages/goodscar/goodscar.wxml | 35 +- subpages/goodscar/goodscar.wxss | 199 ++++++- subpages/goodsdetail/goodsdetail.js | 54 +- subpages/goodsdetail/goodsdetail.wxml | 6 +- subpages/goodsorder/goodsorder.js | 66 +++ subpages/goodsorder/goodsorder.json | 3 + subpages/goodsorder/goodsorder.wxml | 2 + subpages/goodsorder/goodsorder.wxss | 1 + subpages/images/ic_add_circle_icon.png | Bin 0 -> 809 bytes subpages/images/ic_arrow_cir.png | Bin 0 -> 416 bytes subpages/images/ic_cb_checked.png | Bin 0 -> 869 bytes subpages/images/ic_cb_unchecked.png | Bin 0 -> 900 bytes subpages/images/ic_del_circle_icon.png | Bin 0 -> 696 bytes subpages/images/ic_edit_icon.png | Bin 0 -> 425 bytes 35 files changed, 1933 insertions(+), 392 deletions(-) create mode 100644 subpages/addshopaddress/addshopaddress.js create mode 100644 subpages/addshopaddress/addshopaddress.json create mode 100644 subpages/addshopaddress/addshopaddress.wxml create mode 100644 subpages/addshopaddress/addshopaddress.wxss create mode 100644 subpages/editshopaddress/editshopaddress.js create mode 100644 subpages/editshopaddress/editshopaddress.json create mode 100644 subpages/editshopaddress/editshopaddress.wxml create mode 100644 subpages/editshopaddress/editshopaddress.wxss create mode 100644 subpages/goodsaddress/goodsaddress.js create mode 100644 subpages/goodsaddress/goodsaddress.json create mode 100644 subpages/goodsaddress/goodsaddress.wxml create mode 100644 subpages/goodsaddress/goodsaddress.wxss create mode 100644 subpages/goodsorder/goodsorder.js create mode 100644 subpages/goodsorder/goodsorder.json create mode 100644 subpages/goodsorder/goodsorder.wxml create mode 100644 subpages/goodsorder/goodsorder.wxss create mode 100644 subpages/images/ic_add_circle_icon.png create mode 100755 subpages/images/ic_arrow_cir.png create mode 100644 subpages/images/ic_cb_checked.png create mode 100644 subpages/images/ic_cb_unchecked.png create mode 100644 subpages/images/ic_del_circle_icon.png create mode 100644 subpages/images/ic_edit_icon.png diff --git a/app.js b/app.js index 53e31aa..4fa4578 100644 --- a/app.js +++ b/app.js @@ -3,59 +3,60 @@ var restAjax = require('utils/restAjax.js'); var dialog = require('utils/dialog.js'); // + 'https://www.xzszwhy.cn/usercenter' App({ - loginUrl: restAjax.baseUrl, - usercenterUrl: restAjax.baseUrl, - newsUrl: restAjax.baseUrl, - newsContentUrl: restAjax.baseUrl, - libraryUrl: restAjax.baseUrl, - venueUrl: restAjax.baseUrl, - activityUrl: restAjax.baseUrl, - volunteerUrl: restAjax.baseUrl, - activityUrl: restAjax.baseUrl, - volunteerUrl: restAjax.baseUrl, - liveUrl: restAjax.baseUrl, - liveRecordUrl: restAjax.baseUrl, - socialUrl: restAjax.baseUrl, - shopUrl: restAjax.url + "xzshop", - restAjax: restAjax, - shopImgUrl: restAjax.url + "xzshop/route/file/download/true/", - dialog: dialog, - onLaunch: function () { - // 展示本地存储能力 - var logs = wx.getStorageSync('logs') || [] - logs.unshift(Date.now()) - wx.setStorageSync('logs', logs) + loginUrl: restAjax.baseUrl, + usercenterUrl: restAjax.baseUrl, + newsUrl: restAjax.baseUrl, + newsContentUrl: restAjax.baseUrl, + libraryUrl: restAjax.baseUrl, + venueUrl: restAjax.baseUrl, + activityUrl: restAjax.baseUrl, + volunteerUrl: restAjax.baseUrl, + activityUrl: restAjax.baseUrl, + volunteerUrl: restAjax.baseUrl, + liveUrl: restAjax.baseUrl, + liveRecordUrl: restAjax.baseUrl, + socialUrl: restAjax.baseUrl, + shopUrl: restAjax.url + "xzshop", + restAjax: restAjax, + shopImgUrl: restAjax.url + "xzshop/route/file/download/true/", + dialog: dialog, + onLaunch: function () { + // 展示本地存储能力 + var logs = wx.getStorageSync('logs') || [] + logs.unshift(Date.now()) + wx.setStorageSync('logs', logs) - // 登录 - wx.login({ - success: res => { - // 发送 res.code 到后台换取 openId, sessionKey, unionId - } - }) - // 获取用户信息 - wx.getSetting({ - success: res => { - if (res.authSetting['scope.userInfo']) { - // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框 - wx.getUserInfo({ + // 登录 + wx.login({ success: res => { - // 可以将 res 发送给后台解码出 unionId - this.globalData.userInfo = res.userInfo - - // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回 - // 所以此处加入 callback 以防止这种情况 - if (this.userInfoReadyCallback) { - this.userInfoReadyCallback(res) - } + // 发送 res.code 到后台换取 openId, sessionKey, unionId } - }) - } - } - }) - }, - globalData: { - userInfo: null, - curLat: -1, - curLng: -1, - } + }) + // 获取用户信息 + wx.getSetting({ + success: res => { + if (res.authSetting['scope.userInfo']) { + // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框 + wx.getUserInfo({ + success: res => { + // 可以将 res 发送给后台解码出 unionId + this.globalData.userInfo = res.userInfo + + // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回 + // 所以此处加入 callback 以防止这种情况 + if (this.userInfoReadyCallback) { + this.userInfoReadyCallback(res) + } + } + }) + } + } + }) + }, + globalData: { + userInfo: null, + curLat: -1, + curLng: -1, + carList: [] + } }) \ No newline at end of file diff --git a/app.json b/app.json index 15169b4..85c4699 100644 --- a/app.json +++ b/app.json @@ -40,7 +40,11 @@ "pages/serviceActivityDetail/serviceActivityDetail", "pages/shop/shopcategory", "subpages/goodsdetail/goodsdetail", - "subpages/goodscar/goodscar" + "subpages/goodscar/goodscar", + "subpages/goodsaddress/goodsaddress", + "subpages/goodsorder/goodsorder", + "subpages/addshopaddress/addshopaddress", + "subpages/editshopaddress/editshopaddress" ], "subPackages": [ { diff --git a/pages/center/center.js b/pages/center/center.js index 3a818fd..b77a26e 100644 --- a/pages/center/center.js +++ b/pages/center/center.js @@ -90,7 +90,19 @@ Page({ }, }) }, - // 购物车 + //收货地址 + toAddressManage() { + wx.navigateTo({ + url: '/subpages/goodsaddress/goodsaddress', + }) + }, + //我的订单 + toShopOrder() { + wx.navigateTo({ + url: '/subpages/goodsorder/goodsorder', + }) + }, + //购物车 toShopCar() { wx.navigateTo({ url: '/subpages/goodscar/goodscar', diff --git a/pages/center/center.wxml b/pages/center/center.wxml index ed6b883..fd29c68 100644 --- a/pages/center/center.wxml +++ b/pages/center/center.wxml @@ -45,6 +45,14 @@ 购物车 + + + 收货地址 + + + + 我的订单 + + + + + 省份 + + + + {{tempProvIndex==-1 ? '请选择省份':tempProvArray[tempProvIndex].areaName}} + + + + + + + + + + + {{cityIndex==-1? '请选择市':cityArray[cityIndex].areaName}} + + + + + + + 区、县 + + + + {{countyIndex==-1? '请选择区县':countyArray[countyIndex].areaName}} + + + + + + + 乡镇街道 + + + + {{villageIndex==-1?'请选择乡镇街道':villageArray[villageIndex].areaName}} + + + + + + + 详细地址 + + + + + + 姓名 + + + + + + 联系方式 + + + + + + 邮政编码 + + + + +保存 \ No newline at end of file diff --git a/subpages/addshopaddress/addshopaddress.wxss b/subpages/addshopaddress/addshopaddress.wxss new file mode 100644 index 0000000..27e72fb --- /dev/null +++ b/subpages/addshopaddress/addshopaddress.wxss @@ -0,0 +1,58 @@ +/* subpages/addshopaddress/addshopaddress.wxss */ +.address-content { + display: flex; + flex-direction: column; + justify-content: center; + align-items: flex-start; + padding: 20rpx; +} + +.address-item { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: center; + width: 100%; + font-size: 32rpx; +} + +.address-item:nth-of-type(n+2) { + margin-top: 20rpx; +} + + + +.area-title { + width: 25%; +} + +.line { + background: #9f1512; + width: 5rpx; + height: 35rpx; +} + +.area-content { + flex: 2; + margin-left: 20rpx; +} + +.arrow-icon { + width: 32rpx; + height: 32rpx; +} + + +.bottom-btn { + height: 80rpx; + background: #9f1512; + border-radius: 10rpx; + text-align: center; + color: white; + position: fixed; + bottom: 0rpx; + left: 0rpx; + line-height: 80rpx; + margin: 0rpx 20rpx 10rpx 20rpx; + width: 95%; +} \ No newline at end of file diff --git a/subpages/editshopaddress/editshopaddress.js b/subpages/editshopaddress/editshopaddress.js new file mode 100644 index 0000000..a4198b7 --- /dev/null +++ b/subpages/editshopaddress/editshopaddress.js @@ -0,0 +1,285 @@ +// subpages/addshopaddress/addshopaddress.js +var app = getApp(); +Page({ + + /** + * 页面的初始数据 + */ + data: { + id: '', + token: '', + area1: '', + area2: '', + area3: '', + area4: '', + detailContent: '', + name: '', + phone: '', + zipCode: '', + + tempProvIndex: -1, + tempProvArray: [], + + cityIndex: -1, + cityArray: [], + + countyIndex: -1, + countyArray: [], + + villageIndex: -1, + villageArray: [], + detailBean: {} + + }, + + /** + * 生命周期函数--监听页面加载 + */ + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + var _self = this; + var id = options.id + _self.setData({ + id: id + }) + _self.getToken().then(result => { + _self.getAddressDetail(); + }) + _self.getAreaList(0, 1); + }, + getToken() { + var self = this; + return new Promise(resolve => { + wx.getStorage({ + key: 'token', + success(res) { + self.setData({ + token: res.data + }) + return resolve(); + } + }) + }) + }, + getAddressDetail() { + var _self = this; + app.dialog.loading("加载中..."); + app.restAjax.get(app.restAjax.path('{baseUrl}/app/shopaddress/get/{shopAddressId}', [app.shopUrl, _self.data.id]), null, { + headers: { + token: _self.data.token + } + }, function (code, data) { + wx.hideLoading() + if (data) { + _self.setData({ + detailBean: data, + detailContent: data.shopAddressContent, + name: data.shopAddressName, + phone: data.shopAddressPhone, + zipCode: data.shopAddressZipcode + }) + } + }, function (code, data) { + wx.hideLoading() + }) + }, + inputZip(e) { + this.setData({ + zipCode: e.detail.value + }) + }, + inputName(e) { + this.setData({ + name: e.detail.value + }) + }, + inputPhone(e) { + this.setData({ + phone: e.detail.value + }) + }, + inputDetail(e) { + this.setData({ + detailContent: e.detail.value + }) + }, + //获取 + getAreaList(areaId, type) { + var _self = this; + app.dialog.loading("加载中..."); + app.restAjax.get(app.restAjax.path('{shopUrl}/app/area/listbyparentidrelease/{areaParentId}', + [app.loginUrl, areaId]), + null, null, + function (code, data) { + switch (type) { + case 1: //省份 + _self.setData({ + tempProvIndex: -1, + tempProvArray: data + }) + break; + case 2: + _self.setData({ + cityArray: data + }) + break; + case 3: + _self.setData({ + countyArray: data + }) + break; + case 4: + _self.setData({ + villageArray: data + }) + break; + default: + break; + } + }, + function (code, data) { + app.dialog.msg(data.msg); + }, + function () { + wx.hideLoading(); + }) + }, + //省份选择 + provChange(e) { + var index = e.detail.value + this.setData({ + tempProvIndex: index, + cityIndex: -1, + cityArray: [], + countyIndex: -1, + countyArray: [], + villageIndex: -1, + villageArray: [] + }) + this.getAreaList(this.data.tempProvArray[this.data.tempProvIndex].areaId, 2); + }, + //市选择 + cityChange(e) { + var index = e.detail.value + this.setData({ + cityIndex: index, + countyIndex: -1, + countyArray: [], + villageIndex: -1, + villageArray: [] + }) + this.getAreaList(this.data.cityArray[this.data.cityIndex].areaId, 3); + }, + //区县选择 + countyChange(e) { + var index = e.detail.value + this.setData({ + countyIndex: index, + villageIndex: -1, + villageArray: [] + }) + this.getAreaList(this.data.countyArray[this.data.countyIndex].areaId, 4); + }, + //乡镇选择 + villageChange(e) { + var index = e.detail.value + this.setData({ + villageIndex: index + }) + }, + doSave() { + if (this.checkParams()) { + app.dialog.loading("修改中...") + var _self = this; + var areaName = ''; + var areaId = ''; + var areaCode = ''; + if (_self.data.tempProvIndex == -1) { + areaName = _self.data.detailBean.areaName; + areaId = _self.data.detailBean.areaId; + areaCode = _self.data.detailBean.areaCode; + } else { + areaName = _self.data.tempProvArray[_self.data.tempProvIndex].areaName + ' ' + _self.data.cityArray[_self.data.cityIndex].areaName + ' ' + _self.data.countyArray[_self.data.countyIndex].areaName + ' ' + _self.data.villageArray[_self.data.villageIndex].areaName; + areaCode = _self.data.villageArray[_self.data.villageIndex].areaCode; + areaId = _self.data.villageArray[_self.data.villageIndex].areaId; + } + var info = { + areaCode: areaCode, + areaId: areaId, + areaName: areaName, + shopAddressContent: _self.data.detailContent, + shopAddressName: _self.data.name, + shopAddressPhone: _self.data.phone, + shopAddressZipcode: _self.data.zipCode + }; + app.restAjax.put(app.restAjax.path('{url}/app/shopaddress/update/{shopAddressId}', [app.shopUrl, _self.data.id]), info, { + headers: { + token: _self.data.token + } + }, function (code, data) { + wx.hideLoading() + console.log(code) + if (code == 200) { + app.dialog.msg("修改成功") + var pages = getCurrentPages(); + let prevPage = pages[pages.length - 2]; + prevPage.doRefresh() + wx.navigateBack() + } + }, function (code, data) { + wx.hideLoading() + app.dialog.msg(data.msg); + }); + } + }, + checkParams() { + if (this.data.tempProvIndex != -1) { + if (this.data.tempProvIndex == -1) { + wx.showToast({ + title: '请选择省份', + }) + return false; + } + if (this.data.cityIndex == -1) { + wx.showToast({ + title: '请选择市', + }) + return false; + } + if (this.data.countyIndex == -1) { + wx.showToast({ + title: '请选择区县', + }) + return false; + } + if (this.data.villageIndex == -1) { + wx.showToast({ + title: '请选择乡镇街道', + }) + return false; + } + } + if (this.data.detailContent == '') { + wx.showToast({ + title: '请输入详细地址', + }) + return false; + } + if (this.data.name == '') { + wx.showToast({ + title: '请输入姓名', + }) + return false; + } + if (this.data.phone == '') { + wx.showToast({ + title: '请输入联系方式', + }) + return false; + } + return true; + + } +}) \ No newline at end of file diff --git a/subpages/editshopaddress/editshopaddress.json b/subpages/editshopaddress/editshopaddress.json new file mode 100644 index 0000000..8340eab --- /dev/null +++ b/subpages/editshopaddress/editshopaddress.json @@ -0,0 +1,4 @@ +{ + "usingComponents": {}, + "navigationBarTitleText": "收货地址修改" +} \ No newline at end of file diff --git a/subpages/editshopaddress/editshopaddress.wxml b/subpages/editshopaddress/editshopaddress.wxml new file mode 100644 index 0000000..ac1a5cb --- /dev/null +++ b/subpages/editshopaddress/editshopaddress.wxml @@ -0,0 +1,74 @@ + + + + {{detailBean.areaName}} + + + 省份 + + + + {{tempProvIndex==-1 ? '请选择省份':tempProvArray[tempProvIndex].areaName}} + + + + + + + + + + + {{cityIndex==-1? '请选择市':cityArray[cityIndex].areaName}} + + + + + + + 区、县 + + + + {{countyIndex==-1? '请选择区县':countyArray[countyIndex].areaName}} + + + + + + + 乡镇街道 + + + + {{villageIndex==-1?'请选择乡镇街道':villageArray[villageIndex].areaName}} + + + + + + + 详细地址 + + + + + + 姓名 + + + + + + 联系方式 + + + + + + 邮政编码 + + + + +保存 \ No newline at end of file diff --git a/subpages/editshopaddress/editshopaddress.wxss b/subpages/editshopaddress/editshopaddress.wxss new file mode 100644 index 0000000..20832cc --- /dev/null +++ b/subpages/editshopaddress/editshopaddress.wxss @@ -0,0 +1,64 @@ +/* subpages/addshopaddress/addshopaddress.wxss */ +.address-content { + display: flex; + flex-direction: column; + justify-content: center; + align-items: flex-start; + padding: 20rpx; +} + +.address-item { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: center; + width: 100%; + font-size: 32rpx; +} + +.address-item:nth-of-type(n+2) { + margin-top: 20rpx; +} + + + +.area-title { + width: 25%; +} + +.line { + background: #9f1512; + width: 5rpx; + height: 35rpx; +} + +.area-content { + flex: 2; + margin-left: 20rpx; +} + +.arrow-icon { + width: 32rpx; + height: 32rpx; +} + + +.bottom-btn { + height: 80rpx; + background: #9f1512; + border-radius: 10rpx; + text-align: center; + color: white; + position: fixed; + bottom: 0rpx; + left: 0rpx; + line-height: 80rpx; + margin: 0rpx 20rpx 10rpx 20rpx; + width: 95%; +} + +.current-address { + font-size: 36rpx; + padding: 20rpx 0rpx; + font-weight: bold; +} \ No newline at end of file diff --git a/subpages/goodsaddress/goodsaddress.js b/subpages/goodsaddress/goodsaddress.js new file mode 100644 index 0000000..f2d0581 --- /dev/null +++ b/subpages/goodsaddress/goodsaddress.js @@ -0,0 +1,132 @@ +// subpages/goodsaddress/goodsaddress.js +var app = getApp(); +Page({ + + /** + * 页面的初始数据 + */ + data: { + token: '', + list: [], + hidePageLoading: false + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + var _self = this; + _self.getToken().then(result => { + _self.getList(); + }) + }, + getToken() { + var self = this; + return new Promise(resolve => { + wx.getStorage({ + key: 'token', + success(res) { + self.setData({ + token: res.data + }) + return resolve(); + } + }) + }) + }, + //获取列表 + getList() { + var _self = this + var header = { + headers: { + token: _self.data.token + } + }; + + app.restAjax.get(app.restAjax.path('{shopUrl}/app/shopaddress/list', [app.shopUrl]), null, header, function (code, data) { + console.log(data); + _self.setData({ + list: data, + hidePageLoading: true + }) + }, function (code, data) { + app.dialog.msg(data.msg); + _self.setData({ + hidePageLoading: true + }) + }, function () { + wx.hideLoading(); + _self.setData({ + hideLoading: true + }) + }) + }, + doRefresh() { + this.setData({ + list: [] + }) + this.getList(); + }, + doEdit(e) { + var id = e.currentTarget.dataset.id; + wx.navigateTo({ + url: '/subpages/editshopaddress/editshopaddress?id=' + id, + }) + }, + doDel(e) { + var id = e.currentTarget.dataset.id; + var _self = this; + wx.showModal({ + title: '警告', + content: '确定要删除该收货地址吗?', + complete: (res) => { + if (res.confirm) { + app.dialog.loading("删除中...") + app.restAjax.delete(app.restAjax.path('{shopUrl}/app/shopaddress/remove/{ids}', [app.shopUrl, id]), null, { + headers: { + token: _self.data.token + } + }, function (code, data) { + wx.hideLoading() + if (code == 200) { + app.dialog.msg("删除成功") + _self.getList() + } + }, function (code, data) { + app.dialog.msg(data.msg) + }); + } + } + }) + }, + doSetDefault(e) { + var _self = this; + app.dialog.loading('设置中') + var id = e.currentTarget.dataset.id + var index = e.currentTarget.dataset.index + app.restAjax.put(app.restAjax.path('{shopUrl}/app/shopaddress/updatedefault/{shopAddressId}', [app.shopUrl, id]), null, { + headers: { + token: _self.data.token + } + }, function (code, data) { + wx.hideLoading(); + if (code == 200) { + app.dialog.msg('设置成功') + } + _self.setData({ + list: [] + }) + _self.getList(); + }, function (code, data) { + console.log(data) + wx.hideLoading(); + app.dialog.msg(data.msg) + }) + + }, + addAddress() { + wx.navigateTo({ + url: '/subpages/addshopaddress/addshopaddress' + }) + }, +}) \ No newline at end of file diff --git a/subpages/goodsaddress/goodsaddress.json b/subpages/goodsaddress/goodsaddress.json new file mode 100644 index 0000000..99a8774 --- /dev/null +++ b/subpages/goodsaddress/goodsaddress.json @@ -0,0 +1,4 @@ +{ + "usingComponents": {}, + "navigationBarTitleText": "收货地址" +} \ No newline at end of file diff --git a/subpages/goodsaddress/goodsaddress.wxml b/subpages/goodsaddress/goodsaddress.wxml new file mode 100644 index 0000000..ffecd0f --- /dev/null +++ b/subpages/goodsaddress/goodsaddress.wxml @@ -0,0 +1,23 @@ + + + + + + + {{item.areaName}} + {{item.shopAddressContent}} + {{item.shopAddressName}} {{item.shopAddressPhone}} + + + + + + + + + + 暂无数据 + + 新增收货地址 + + \ No newline at end of file diff --git a/subpages/goodsaddress/goodsaddress.wxss b/subpages/goodsaddress/goodsaddress.wxss new file mode 100644 index 0000000..b024cc7 --- /dev/null +++ b/subpages/goodsaddress/goodsaddress.wxss @@ -0,0 +1,106 @@ +/* subpages/goodsaddress/goodsaddress.wxss */ +.empty-box { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + position: absolute; + top: 50%; + left: 50%; + transform: translateX(-50%)translateY(-50%); +} + +.empty-box image { + width: 140rpx; + height: 100rpx; +} + +.empty-box text { + margin-top: 20rpx; + font-size: 32rpx; +} + +.content-box { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + width: 95%; + padding: 20rpx; + border-radius: 10rpx; + box-shadow: 5rpx 5rpx 20rpx #f2f2f2; + margin: 20rpx 20rpx 100rpx 0rpx; +} + +.address-item { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: center; + padding: 10rpx; + border-bottom: 1rpx solid #f2f2f2; + width: 100%; +} + + +.address-item .check { + width: 48rpx; + height: 48rpx; + +} + +.address-content { + display: flex; + flex-direction: column; + justify-content: center; + align-items: flex-start; + width: 100%; + max-width: 100%; + margin-left: 20rpx; +} + +.address-area { + font-size: 32rpx; +} + +.address-name { + font-size: 40rpx; + margin: 10rpx 0rpx; +} + +.address-phone { + font-size: 32rpx; +} + +.address-control-box { + display: flex; + width: 80rpx; + flex-direction: column; + justify-content: space-around; + align-items: center; +} + +.edit-icon { + width: 48rpx; + height: 48rpx; +} + +.del-icon { + width: 48rpx; + height: 48rpx; + margin-top: 20rpx; +} + +.bottom-btn { + height: 80rpx; + background: #9f1512; + border-radius: 10rpx; + text-align: center; + color: white; + position: fixed; + bottom: 0rpx; + left: 0rpx; + line-height: 80rpx; + margin: 0rpx 20rpx 10rpx 20rpx; + width: 95%; +} \ No newline at end of file diff --git a/subpages/goodscar/goodscar.js b/subpages/goodscar/goodscar.js index 55a6f3a..f0cd204 100644 --- a/subpages/goodscar/goodscar.js +++ b/subpages/goodscar/goodscar.js @@ -1,4 +1,5 @@ // subpages/goodscar/goodscar.js +var app = getApp(); Page({ /** @@ -7,6 +8,8 @@ Page({ data: { carList: [], isHidePageloading: false, + imgUrl: app.shopImgUrl, + totalPrice: 0.0 }, /** @@ -22,6 +25,7 @@ Page({ carList: value, isHidePageloading: true }) + _self.countPrice() } else { _self.setData({ isHidePageloading: true @@ -31,5 +35,69 @@ Page({ } }, - + delGoods(e) { + var _self = this; + wx.showModal({ + title: '提示', + content: '确定要删除该商品吗?', + complete: (res) => { + if (res.confirm) { + var index = e.currentTarget.dataset.index + console.log(index) + _self.data.carList.splice(index, 1) + _self.setData({ + carList: _self.data.carList + }) + wx.setStorageSync('carlist', _self.data.carList); + _self.countPrice(); + } + } + }) + }, + delCount(e) { + var _self = this; + var index = e.currentTarget.dataset.index + if (this.data.carList[index].carAmount == 1) { + return; + } + this.data.carList[index].carAmount -= 1; + this.setData({ + carList: this.data.carList + }) + wx.setStorageSync('carlist', _self.data.carList); + _self.countPrice(); + }, + addCount(e) { + var _self = this; + var index = e.currentTarget.dataset.index + this.data.carList[index].carAmount += 1; + this.setData({ + carList: this.data.carList + }) + wx.setStorageSync('carlist', _self.data.carList); + _self.countPrice(); + }, + selSelect(e) { + var _self = this; + var index = e.currentTarget.dataset.index; + _self.data.carList[index].isCheck = !_self.data.carList[index].isCheck; + _self.setData({ + carList: _self.data.carList + }) + wx.setStorageSync('carlist', _self.data.carList); + _self.countPrice(); + }, + countPrice() { + var _self = this; + var tempCount = 0; + for (let i = 0; i < _self.data.carList.length; i++) { + const item = _self.data.carList[i]; + if (item.isCheck) { + tempCount = item.goodsPrice * item.carAmount + tempCount; + } + } + _self.setData({ + totalPrice: tempCount + }) + } }) \ No newline at end of file diff --git a/subpages/goodscar/goodscar.wxml b/subpages/goodscar/goodscar.wxml index 187b84c..4095d88 100644 --- a/subpages/goodscar/goodscar.wxml +++ b/subpages/goodscar/goodscar.wxml @@ -3,11 +3,27 @@ - + - + - + + ¥{{item.goodsPrice}} + {{item.goodsStandarName}} + + + 销量{{item.goodsSalesVolume}} + {{item.goodsNotFreight ==1 ? '不包邮':'包邮'}} + + + + + {{item.carAmount}} + + + + + @@ -18,4 +34,15 @@ 暂无数据 - \ No newline at end of file + + + + + + + ¥ + {{totalPrice}} + + 去结算 + + \ No newline at end of file diff --git a/subpages/goodscar/goodscar.wxss b/subpages/goodscar/goodscar.wxss index ecad7d5..d96ddc6 100644 --- a/subpages/goodscar/goodscar.wxss +++ b/subpages/goodscar/goodscar.wxss @@ -24,20 +24,211 @@ font-size: 32rpx; } -.goods-item {} +.goods-item { + display: flex; + flex-direction: row; + padding: 10rpx; + margin-top: 10rpx; +} .check { width: 48rpx; height: 48rpx; + min-width: 48rpx; + min-height: 48rpx; + max-height: 48rpx; + max-width: 48rpx; } .goods { display: flex; flex-direction: row; justify-content: flex-start; - + margin-left: 20rpx; } -.goods .goods-img{} -.goods-content{ +.goods-img { + width: 180rpx; + height: 160rpx; +} + + +.goods-content { + margin: 0rpx 10rpx; + flex: 1; +} + +.goods-name { + font-size: 32rpx; + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; +} + +.goods-unit-price { + font-size: 40rpx; + color: #9f1512; + margin-top: 10rpx; +} + +.goods-standard { + margin-top: 10rpx; + font-size: 32rpx; + border: 1rpx solid #9f1512; + border-radius: 3rpx; + color: #9f1512; + width: fit-content; + max-width: fit-content; + padding: 0rpx 10rpx; +} + +.goods-type-box { + display: flex; + flex-direction: row; + justify-content: space-around; + align-items: center; + margin-top: 20rpx; +} + +.goods-type-box image { + width: 48rpx; + height: 48rpx; +} + +.goods-type { + color: #9f1512; + font-size: 25rpx; + border: 1rpx solid #9f1512; + padding: 0rpx 10rpx; + text-align: center; +} + +.goods-type:last-child { + margin-left: 20rpx; +} + +.type-box { + display: flex; + flex-direction: row; + width: 50%; + justify-content: flex-start; + align-items: center; +} + +.add-del-box { + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; +} + +.add-del-box .txt { + font-size: 35rpx; + padding: 0rpx 15rpx; +} + +.control-box { + width: 50%; + display: flex; + flex-direction: row; + justify-content: space-around; +} + + + +.bottom-box { + display: flex; + flex-direction: column; + background: white; + position: fixed; + bottom: 0; + left: 0; + width: 100%; + +} + +.bottom-content { + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + margin: 25rpx; +} + +.bottom-price { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: baseline; + color: #e70606; + text-align: center; + font-weight: bold; +} + +.price-icon { + font-size: 30rpx; +} + +.price-content { + font-size: 55rpx; +} + + +.icon-btn { + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; +} + +.car-icon { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + font-size: 30rpx; +} + +.car-icon image { + width: 48rpx; + height: 48rpx; + align-items: center; + align-self: center; + margin-left: 25rpx; + margin-top: 10rpx; +} + +.car { + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; +} + +.car-num { + position: relative; + right: 10rpx; + top: -10rpx; + background: #e70606; + color: white; + width: 48rpx; + height: 48rpx; + border-radius: 50%; + text-align: center; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + font-size: 25rpx; +} + +.car-add { + background: linear-gradient(to right bottom, rgb(245, 74, 74), rgb(221, 5, 5) 70px); + color: white; + padding: 15rpx; + border-radius: 10rpx; + margin-left: 20rpx; + font-size: 32rpx; } \ No newline at end of file diff --git a/subpages/goodsdetail/goodsdetail.js b/subpages/goodsdetail/goodsdetail.js index 311ce03..ca58ec6 100644 --- a/subpages/goodsdetail/goodsdetail.js +++ b/subpages/goodsdetail/goodsdetail.js @@ -14,6 +14,7 @@ Page({ curStandardIndex: 0, imgUrl: app.shopImgUrl, carList: [], + carNum: 0, }, /** @@ -26,6 +27,33 @@ Page({ this.getGoodsDetail(); }, + onShow() { + try { + var value = wx.getStorageSync('carlist'); + if (value) { + this.setData({ + carList: value + }) + this.parseCarList(); + } + } catch (error) { + + } + }, + parseCarList() { + var _self = this; + var count = 0; + for (let i = 0; i < _self.data.carList.length; i++) { + const item = _self.data.carList[i]; + count = item.carAmount + count; + } + console.log(count) + if (count > 0) { + _self.setData({ + carNum: count + }) + } + }, //获取商品详情 getGoodsDetail() { var _self = this @@ -121,9 +149,33 @@ Page({ addToCar() { //判断购物车中是否存在该商品 var _self = this; + var pos = -1; for (let i = 0; i < _self.data.carList.length; i++) { var item = _self.data.carList[i]; - + if (_self.data.detailBean.goodsId == item.goodsId && _self.data.detailBean.goodsStandarId == item.goodsStandarId) { + pos = i; + break; + } + } + if (pos != -1) { + _self.data.carList[pos].carAmount = _self.data.carList[pos].carAmount + 1; + } else { + _self.data.detailBean.carAmount = 1; + _self.data.carList.push(_self.data.detailBean); + } + _self.setData({ + carList: _self.data.carList + }) + _self.parseCarList(); + wx.setStorageSync('carlist', _self.data.carList) + }, + openCar() { + if (this.data.carNum > 0) { + wx.navigateTo({ + url: '/subpages/goodscar/goodscar', + }) + } else { + app.dialog.msg('购物车无数据') } } }) \ No newline at end of file diff --git a/subpages/goodsdetail/goodsdetail.wxml b/subpages/goodsdetail/goodsdetail.wxml index 6cb7388..b41c699 100644 --- a/subpages/goodsdetail/goodsdetail.wxml +++ b/subpages/goodsdetail/goodsdetail.wxml @@ -71,13 +71,13 @@ - + - {{carList.length}} + {{carNum>99? '99+':carNum}} 购物车 - 添加购物车 + 加入购物车 \ No newline at end of file diff --git a/subpages/goodsorder/goodsorder.js b/subpages/goodsorder/goodsorder.js new file mode 100644 index 0000000..8918d75 --- /dev/null +++ b/subpages/goodsorder/goodsorder.js @@ -0,0 +1,66 @@ +// subpages/goodsorder/goodsorder.js +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/subpages/goodsorder/goodsorder.json b/subpages/goodsorder/goodsorder.json new file mode 100644 index 0000000..3928faa --- /dev/null +++ b/subpages/goodsorder/goodsorder.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/subpages/goodsorder/goodsorder.wxml b/subpages/goodsorder/goodsorder.wxml new file mode 100644 index 0000000..d01a740 --- /dev/null +++ b/subpages/goodsorder/goodsorder.wxml @@ -0,0 +1,2 @@ + +subpages/goodsorder/goodsorder.wxml diff --git a/subpages/goodsorder/goodsorder.wxss b/subpages/goodsorder/goodsorder.wxss new file mode 100644 index 0000000..1af25b1 --- /dev/null +++ b/subpages/goodsorder/goodsorder.wxss @@ -0,0 +1 @@ +/* subpages/goodsorder/goodsorder.wxss */ \ No newline at end of file diff --git a/subpages/images/ic_add_circle_icon.png b/subpages/images/ic_add_circle_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..09f0577a04a5d25c459c0e4d0da22ee1bf929241 GIT binary patch literal 809 zcmV+^1J?YBP)Px%<4Ht8R9HvNm(NQSVHn51&+HEgrFLe2RYWNL0l|_+UD8vRf-df<)G@*+s1AAP zq!M%~=u{S!t5g>|1QpaRAwo#$5Y#D1C^p@hoiWtQ=FStN%{sHLJF{c#Hn4|bzt8i0 z-sgRv=Y59I;D;I%C zhJbKeLb?RTWd`<+&`nLKdaeP1(=9NI}E`X1t{e)aJeiC;_GrwzqghB zmH-nm@q|J2(q~|YnZX!2t7^lQd{qR<#H1@A+^!y+r@%bIhLB?cX@M|QO)oH?>{azw z<(f?ZnMCvyn4i0@oQ*D7U7Rv?nOLL~B)oOA5ez!qo6mo+>l^^)foqM6(_Z#mRy2og zCN8lX0KgyT6#d8uP_VQPC*uj}Dl=}nI|BRx07Mw<%W1bZ0X&hUovQ(S_F8Jb0e~My zppfdHUp9NkMk5+aNXLos#>?tWjbDH@|HK#NoPO5{5EpL{=vrL>z*DlKcR2tuap^sP zqxAs*niZ`n4HQa;FcXh{1^B=Qz@cbX9qA_ zWV_dNZ>tOe1cXpa&%(lr4M4mD(1khye3BLIprZ_Hy?(co0VWLg|82*m3`~mRu9YBt z0kGFg7PbM9U8P{^TrRiZ$bk9sC?*ZN-Rl;dUx4!A#Bm#%O=FdeSua`e36Kr4aL7I< zRv1Xc^I#fv-3A{634pY$XwSABNUT4+ZAEP(88M&kQ}w6i3;REZQj4;oW4Q&<&<_*) zevR#JiIWlP2BRCG&Ps=rfN2IE7DB&Y3}ly7*Mn>y$-Iay%_IeK@{oCO|{#S9GG z!XV7ZFl&wkP%tgPC&U#<-?(w(@#Du&o;-Q_^eKb{GM>S}^XJcjf-oL}28v(3dKJhA zDt__e1%v@4f#MJVF$Bm4GWc5*-UDq?DhcunX5e)wUgmx5=l>?#Um<^1N9|vAbP>;w z+vc;ZK2FMt%UN9Fx{=$^8K`=xr;B4q#hks9@A5Sn@U)&z2>2)H=oCy>>Ii2{!dHpr;V{w-mKKA+5gC4D*F}10Pp>r zwalSzPS}iVyA&UHzqCG2jAfIzcg0)Ix;gPLS+BJS``>#O{s8D;22WQ% Jmvv4FO#m-k(!Brx literal 0 HcmV?d00001 diff --git a/subpages/images/ic_cb_checked.png b/subpages/images/ic_cb_checked.png new file mode 100644 index 0000000000000000000000000000000000000000..fec766eba66d15efeee1573464dd2f3ea32f8613 GIT binary patch literal 869 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 T(3u2N00000NkvXXu0mjfg)gu| literal 0 HcmV?d00001