From e06438f77623100349446da23acef1d5f5d1f872 Mon Sep 17 00:00:00 2001 From: yovinchen Date: Fri, 22 Sep 2023 15:41:37 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=B0=8F=E7=A8=8B=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/vcs.xml | 1 + atguigu-tuan/.hbuilderx/launch.json | 19 + atguigu-tuan/App.vue | 23 + atguigu-tuan/common/bmap-wx.min.js | 1 + atguigu-tuan/common/const.js | 2 + atguigu-tuan/common/css/iconfont.css | 123 +++++ atguigu-tuan/common/css/iconfont.ttf | Bin 0 -> 12912 bytes atguigu-tuan/common/css/iconfont.woff | Bin 0 -> 8660 bytes atguigu-tuan/common/css/iconfont.woff2 | Bin 0 -> 7524 bytes atguigu-tuan/common/http.api.js | 167 ++++++ atguigu-tuan/common/http.interceptor.js | 38 ++ atguigu-tuan/common/svgIcon.js | 7 + .../components/AddToCart/AddToCart.vue | 132 +++++ .../CouponInfoList/CouponInfoList.vue | 130 +++++ .../components/ListImgItem/ListImgItem.vue | 99 ++++ .../PickUpLocationHeader.vue | 130 +++++ .../PickUpLocationItem/PickUpLocationItem.vue | 99 ++++ atguigu-tuan/index.html | 15 + atguigu-tuan/main.js | 26 + atguigu-tuan/manifest.json | 80 +++ atguigu-tuan/package.json | 7 + atguigu-tuan/pages.json | 164 ++++++ atguigu-tuan/pages/cart/cart.vue | 228 ++++++++ atguigu-tuan/pages/categories/categories.vue | 295 +++++++++++ atguigu-tuan/pages/homeItem/homeItem.vue | 336 ++++++++++++ atguigu-tuan/pages/index/index.vue | 487 ++++++++++++++++++ atguigu-tuan/pages/login/login.vue | 139 +++++ atguigu-tuan/pages/my/my.vue | 275 ++++++++++ .../choosePickUpLocation.vue | 174 +++++++ .../myPickUpLocation/myPickUpLocation.vue | 100 ++++ .../pagesOrder/confirmOrder/confirmOrder.vue | 345 +++++++++++++ .../pagesOrder/getOrderInfo/getOrderInfo.vue | 187 +++++++ .../pagesOrder/orderList/orderList.vue | 341 ++++++++++++ atguigu-tuan/pagesSeckill/seckill/seckill.vue | 188 +++++++ atguigu-tuan/static/images/location.png | Bin 0 -> 2200 bytes .../static/images/tabbar/cart-selected.png | Bin 0 -> 2938 bytes atguigu-tuan/static/images/tabbar/cart.png | Bin 0 -> 2796 bytes .../images/tabbar/categories-selected.png | Bin 0 -> 3804 bytes .../static/images/tabbar/categories.png | Bin 0 -> 3546 bytes .../static/images/tabbar/home-selected.png | Bin 0 -> 2029 bytes atguigu-tuan/static/images/tabbar/home.png | Bin 0 -> 1881 bytes .../static/images/tabbar/my-selected.png | Bin 0 -> 2440 bytes atguigu-tuan/static/images/tabbar/my.png | Bin 0 -> 2343 bytes atguigu-tuan/static/logo.png | Bin 0 -> 41821 bytes atguigu-tuan/store/index.js | 19 + atguigu-tuan/store/modules/cart.js | 246 +++++++++ atguigu-tuan/store/modules/categories.js | 27 + atguigu-tuan/store/modules/index.js | 59 +++ atguigu-tuan/store/modules/order.js | 90 ++++ atguigu-tuan/store/modules/pickUpLocation.js | 63 +++ atguigu-tuan/uni.scss | 78 +++ atguigu-tuan/yarn.lock | 18 + 52 files changed, 4958 insertions(+) create mode 100644 atguigu-tuan/.hbuilderx/launch.json create mode 100644 atguigu-tuan/App.vue create mode 100644 atguigu-tuan/common/bmap-wx.min.js create mode 100644 atguigu-tuan/common/const.js create mode 100644 atguigu-tuan/common/css/iconfont.css create mode 100644 atguigu-tuan/common/css/iconfont.ttf create mode 100644 atguigu-tuan/common/css/iconfont.woff create mode 100644 atguigu-tuan/common/css/iconfont.woff2 create mode 100644 atguigu-tuan/common/http.api.js create mode 100644 atguigu-tuan/common/http.interceptor.js create mode 100644 atguigu-tuan/common/svgIcon.js create mode 100644 atguigu-tuan/components/AddToCart/AddToCart.vue create mode 100644 atguigu-tuan/components/CouponInfoList/CouponInfoList.vue create mode 100644 atguigu-tuan/components/ListImgItem/ListImgItem.vue create mode 100644 atguigu-tuan/components/PickUpLocationHeader/PickUpLocationHeader.vue create mode 100644 atguigu-tuan/components/PickUpLocationItem/PickUpLocationItem.vue create mode 100644 atguigu-tuan/index.html create mode 100644 atguigu-tuan/main.js create mode 100644 atguigu-tuan/manifest.json create mode 100644 atguigu-tuan/package.json create mode 100644 atguigu-tuan/pages.json create mode 100644 atguigu-tuan/pages/cart/cart.vue create mode 100644 atguigu-tuan/pages/categories/categories.vue create mode 100644 atguigu-tuan/pages/homeItem/homeItem.vue create mode 100644 atguigu-tuan/pages/index/index.vue create mode 100644 atguigu-tuan/pages/login/login.vue create mode 100644 atguigu-tuan/pages/my/my.vue create mode 100644 atguigu-tuan/pagesLocation/choosePickUpLocation/choosePickUpLocation.vue create mode 100644 atguigu-tuan/pagesLocation/myPickUpLocation/myPickUpLocation.vue create mode 100644 atguigu-tuan/pagesOrder/confirmOrder/confirmOrder.vue create mode 100644 atguigu-tuan/pagesOrder/getOrderInfo/getOrderInfo.vue create mode 100644 atguigu-tuan/pagesOrder/orderList/orderList.vue create mode 100644 atguigu-tuan/pagesSeckill/seckill/seckill.vue create mode 100644 atguigu-tuan/static/images/location.png create mode 100644 atguigu-tuan/static/images/tabbar/cart-selected.png create mode 100644 atguigu-tuan/static/images/tabbar/cart.png create mode 100644 atguigu-tuan/static/images/tabbar/categories-selected.png create mode 100644 atguigu-tuan/static/images/tabbar/categories.png create mode 100644 atguigu-tuan/static/images/tabbar/home-selected.png create mode 100644 atguigu-tuan/static/images/tabbar/home.png create mode 100644 atguigu-tuan/static/images/tabbar/my-selected.png create mode 100644 atguigu-tuan/static/images/tabbar/my.png create mode 100644 atguigu-tuan/static/logo.png create mode 100644 atguigu-tuan/store/index.js create mode 100644 atguigu-tuan/store/modules/cart.js create mode 100644 atguigu-tuan/store/modules/categories.js create mode 100644 atguigu-tuan/store/modules/index.js create mode 100644 atguigu-tuan/store/modules/order.js create mode 100644 atguigu-tuan/store/modules/pickUpLocation.js create mode 100644 atguigu-tuan/uni.scss create mode 100644 atguigu-tuan/yarn.lock diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 94a25f7..676e256 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -2,5 +2,6 @@ + \ No newline at end of file diff --git a/atguigu-tuan/.hbuilderx/launch.json b/atguigu-tuan/.hbuilderx/launch.json new file mode 100644 index 0000000..cac109a --- /dev/null +++ b/atguigu-tuan/.hbuilderx/launch.json @@ -0,0 +1,19 @@ +{ + // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/ + // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数 + "version": "0.0", + "configurations": [ + { + "default": { + "launchtype": "local" + }, + "h5": { + "launchtype": "local" + }, + "mp-weixin": { + "launchtype": "local" + }, + "type": "uniCloud" + } + ] +} diff --git a/atguigu-tuan/App.vue b/atguigu-tuan/App.vue new file mode 100644 index 0000000..c3dc5ef --- /dev/null +++ b/atguigu-tuan/App.vue @@ -0,0 +1,23 @@ + + + diff --git a/atguigu-tuan/common/bmap-wx.min.js b/atguigu-tuan/common/bmap-wx.min.js new file mode 100644 index 0000000..11aeded --- /dev/null +++ b/atguigu-tuan/common/bmap-wx.min.js @@ -0,0 +1 @@ +"use strict"; function _classCallCheck(t, a) { if (!(t instanceof a)) throw new TypeError("Cannot call a class as a function") } var _createClass = function () { function t(t, a) { for (var e = 0; e < a.length; e++) { var i = a[e]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i) } } return function (a, e, i) { return e && t(a.prototype, e), i && t(a, i), a } }(), BMapWX = function () { function t(a) { _classCallCheck(this, t), this.ak = a.ak } return _createClass(t, [{ key: "getWXLocation", value: function (t, a, e, i) { t = t || "gcj02", a = a || function () { }, e = e || function () { }, i = i || function () { }, wx.getLocation({ type: t, success: a, fail: e, complete: i }) } }, { key: "search", value: function (t) { var a = this; t = t || {}; var e = { query: t.query || "生活服务$美食&酒店", scope: t.scope || 1, filter: t.filter || "", coord_type: t.coord_type || 2, page_size: t.page_size || 10, page_num: t.page_num || 0, output: t.output || "json", ak: a.ak, sn: t.sn || "", timestamp: t.timestamp || "", radius: t.radius || 2e3, ret_coordtype: "gcj02ll" }, i = { iconPath: t.iconPath, iconTapPath: t.iconTapPath, width: t.width, height: t.height, alpha: t.alpha || 1, success: t.success || function () { }, fail: t.fail || function () { } }, n = function (t) { e.location = t.latitude + "," + t.longitude, wx.request({ url: "https://api.map.baidu.com/place/v2/search", data: e, header: { "content-type": "application/json" }, method: "GET", success: function (t) { var a = t.data; if (0 === a.status) { var e = a.results, n = {}; n.originalData = a, n.wxMarkerData = []; for (var s = 0; s < e.length; s++)n.wxMarkerData[s] = { id: s, latitude: e[s].location.lat, longitude: e[s].location.lng, title: e[s].name, iconPath: i.iconPath, iconTapPath: i.iconTapPath, address: e[s].address, telephone: e[s].telephone, alpha: i.alpha, width: i.width, height: i.height }; i.success(n) } else i.fail({ errMsg: a.message, statusCode: a.status }) }, fail: function (t) { i.fail(t) } }) }, s = function (t) { i.fail(t) }, o = function (t) { }; if (t.location) { var c = t.location.split(",")[1]; n({ errMsg: "input location", latitude: t.location.split(",")[0], longitude: c }) } else a.getWXLocation("gcj02", n, s, o) } }, { key: "suggestion", value: function (t) { var a = this; t = t || {}; var e = { query: t.query || "", region: t.region || "全国", city_limit: t.city_limit || !1, output: t.output || "json", ak: a.ak, sn: t.sn || "", timestamp: t.timestamp || "", ret_coordtype: "gcj02ll" }, i = { success: t.success || function () { }, fail: t.fail || function () { } }; wx.request({ url: "https://api.map.baidu.com/place/v2/suggestion", data: e, header: { "content-type": "application/json" }, method: "GET", success: function (t) { var a = t.data; 0 === a.status ? i.success(a) : i.fail({ errMsg: a.message, statusCode: a.status }) }, fail: function (t) { i.fail(t) } }) } }, { key: "regeocoding", value: function (t) { var a = this; t = t || {}; var e = { coordtype: t.coordtype || "gcj02ll", ret_coordtype: "gcj02ll", radius: t.radius || 1e3, ak: a.ak, sn: t.sn || "", output: t.output || "json", callback: t.callback || function () { }, extensions_poi: t.extensions_poi || 1, extensions_road: t.extensions_road || !1, extensions_town: t.extensions_town || !1, language: t.language || "zh-CN", language_auto: t.language_auto || 0 }, i = { iconPath: t.iconPath, iconTapPath: t.iconTapPath, width: t.width, height: t.height, alpha: t.alpha || 1, success: t.success || function () { }, fail: t.fail || function () { } }, n = function (t) { e.location = t.latitude + "," + t.longitude, wx.request({ url: "https://api.map.baidu.com/reverse_geocoding/v3", data: e, header: { "content-type": "application/json" }, method: "GET", success: function (a) { var e = a.data; if (0 === e.status) { var n = e.result, s = {}; s.originalData = e, s.wxMarkerData = [], s.wxMarkerData[0] = { id: 0, latitude: t.latitude, longitude: t.longitude, address: n.formatted_address, iconPath: i.iconPath, iconTapPath: i.iconTapPath, desc: n.sematic_description, business: n.business, alpha: i.alpha, width: i.width, height: i.height }, i.success(s) } else i.fail({ errMsg: e.message, statusCode: e.status }) }, fail: function (t) { i.fail(t) } }) }, s = function (t) { i.fail(t) }, o = function (t) { }; if (t.location) { var c = t.location.split(",")[1]; n({ errMsg: "input location", latitude: t.location.split(",")[0], longitude: c }) } else a.getWXLocation("gcj02", n, s, o) } }, { key: "geocoding", value: function (t) { var a = this; t = t || {}; var e = { address: t.address || "", city: t.city || "", ret_coordtype: t.coordtype || "gcj02ll", ak: a.ak, sn: t.sn || "", output: t.output || "json", callback: t.callback || function () { } }, i = { iconPath: t.iconPath, iconTapPath: t.iconTapPath, width: t.width, height: t.height, alpha: t.alpha || 1, success: t.success || function () { }, fail: t.fail || function () { } }; if (t.address) wx.request({ url: "https://api.map.baidu.com/geocoding/v3", data: e, header: { "content-type": "application/json" }, method: "GET", success: function (t) { var a = t.data; if (0 === a.status) { var e = a.result, n = a; n.originalData = a, n.wxMarkerData = [], n.wxMarkerData[0] = { id: 0, latitude: e.location.lat, longitude: e.location.lng, iconPath: i.iconPath, iconTapPath: i.iconTapPath, alpha: i.alpha, width: i.width, height: i.height }, i.success(n) } else i.fail({ errMsg: a.message, statusCode: a.status }) }, fail: function (t) { i.fail(t) } }); else { var n = { errMsg: "input address!" }; i.fail(n) } } }, { key: "weather", value: function (t) { var a = this; t = t || {}; var e = { coord_type: t.coord_type || "gcj02", output: t.output || "json", ak: a.ak, sn: t.sn || "", timestamp: t.timestamp || "" }, i = { success: t.success || function () { }, fail: t.fail || function () { } }, n = function (t) { e.location = t.longitude + "," + t.latitude, wx.request({ url: "https://api.map.baidu.com/telematics/v3/weather", data: e, header: { "content-type": "application/json" }, method: "GET", success: function (t) { var a = t.data; if (0 === a.error && "success" === a.status) { var e = a.results, n = {}; n.originalData = a, n.currentWeather = [], n.currentWeather[0] = { currentCity: e[0].currentCity, pm25: e[0].pm25, date: e[0].weather_data[0].date, temperature: e[0].weather_data[0].temperature, weatherDesc: e[0].weather_data[0].weather, wind: e[0].weather_data[0].wind }, i.success(n) } else i.fail({ errMsg: a.message, statusCode: a.status }) }, fail: function (t) { i.fail(t) } }) }, s = function (t) { i.fail(t) }, o = function (t) { }; if (t.location) { var c = t.location.split(",")[0]; n({ errMsg: "input location", latitude: t.location.split(",")[1], longitude: c }) } else a.getWXLocation("gcj02", n, s, o) } }]), t }(); module.exports.BMapWX = BMapWX; \ No newline at end of file diff --git a/atguigu-tuan/common/const.js b/atguigu-tuan/common/const.js new file mode 100644 index 0000000..49940e8 --- /dev/null +++ b/atguigu-tuan/common/const.js @@ -0,0 +1,2 @@ +export const BAIDU_MAP_AK = 'jU4Ww0DiPzXUZmCshR6XjcH5Y3AG6GCE' +export const BAIDU_MAP_WEB_AK = '1FRohQ2W2TH9XGvEHmuckB6G' \ No newline at end of file diff --git a/atguigu-tuan/common/css/iconfont.css b/atguigu-tuan/common/css/iconfont.css new file mode 100644 index 0000000..dbc2eec --- /dev/null +++ b/atguigu-tuan/common/css/iconfont.css @@ -0,0 +1,123 @@ +@font-face { + font-family: "iconfont"; /* Project id 2738663 */ + src: url('./common/css/iconfont.woff2?t=1629617005518') format('woff2'), + url('./common/css/iconfont.woff?t=1629617005518') format('woff'), + url('./common/css/iconfont.ttf?t=1629617005518') format('truetype'); +} + +.iconfont { + font-family: "iconfont" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-pinglun2:before { + content: "\e629"; +} + +.icon-tihuoguanli:before { + content: "\e6a9"; +} + +.icon-daifahuo1:before { + content: "\e612"; +} + +.icon-daifukuan:before { + content: "\e621"; +} + +.icon-tuikuanshouhou:before { + content: "\e6bb"; +} + +.icon-truck-full:before { + content: "\e9d9"; +} + +.icon-daifahuo:before { + content: "\e708"; +} + +.icon-dianpu:before { + content: "\e650"; +} + +.icon-miaosha:before { + content: "\e60e"; +} + +.icon-tubiaolunkuo-:before { + content: "\e605"; +} + +.icon-kefu:before { + content: "\e601"; +} + +.icon-shezhi:before { + content: "\e61c"; +} + +.icon-yonghu:before { + content: "\e616"; +} + +.icon-yaoqing:before { + content: "\e687"; +} + +.icon-ico:before { + content: "\e646"; +} + +.icon-yonghu1:before { + content: "\e615"; +} + +.icon-zhekou-:before { + content: "\e607"; +} + +.icon-tousu:before { + content: "\e638"; +} + +.icon-jiameng:before { + content: "\e624"; +} + +.icon-shanghupiliangruzhu:before { + content: "\e62b"; +} + +.icon-biaoqiankuozhan_tuijian-394:before { + content: "\ebfb"; +} + +.icon-tubiaozhizuomoban:before { + content: "\e647"; +} + +.icon-shuiguo:before { + content: "\f342"; +} + +.icon-cart:before { + content: "\e60c"; +} + +.icon-aui-icon-my:before { + content: "\e61f"; +} + +.icon-categories:before { + content: "\e60f"; +} + +.icon-home:before { + content: "\e61b"; +} + diff --git a/atguigu-tuan/common/css/iconfont.ttf b/atguigu-tuan/common/css/iconfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e43b99efb12e97c69291b2388b448956c248cedb GIT binary patch literal 12912 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 Qj?j&N04v+wy&us30T&fOJpcdz literal 0 HcmV?d00001 diff --git a/atguigu-tuan/common/css/iconfont.woff2 b/atguigu-tuan/common/css/iconfont.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..de55df065d762915b626234c758f37473c1a1b2a GIT binary patch literal 7524 zcmV-q9h>5JPew8T0RR9103Boi3jhEB05Wg@038+p0RR9100000000000000000000 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 literal 0 HcmV?d00001 diff --git a/atguigu-tuan/common/http.api.js b/atguigu-tuan/common/http.api.js new file mode 100644 index 0000000..965ed62 --- /dev/null +++ b/atguigu-tuan/common/http.api.js @@ -0,0 +1,167 @@ +import {BAIDU_MAP_WEB_AK} from './const.js'; + +const get_baidu_map_address = + `https://api.map.baidu.com/reverse_geocoding/v3/?output=json&ak=${BAIDU_MAP_WEB_AK}&coordtype=wgs84ll&location=` // 通过经纬度获取地址信息 +const get_home_index = 'home/index' // 获取首页数据 +const get_sys_region_find_all_list = '/sys/region/findAllList' // 查询所有提供点的区域 +const get_search_leader = '/search/leader' // 根据经纬度搜索提货点 +const get_select_leader = 'user/leader/auth/selectLeader' // 选择提货点 +const get_categories = '/home/category' // 获取分类 +const get_search_sku = '/search/sku' // 搜索商品 +const get_home_item = '/home/item' // 商品详情 +const get_add_to_cart = '/cart/addToCart' // 加入购物车 +const get_cart_list = '/cart/cartList' // 购物车列表 +const get_check_cart = '/cart/checkCart' // 切换购物车商品的选中状态 +const delete_cart = '/cart/deleteCart' // 删除购物车 +const get_activity_cart_list = '/cart/activityCartList' // 带活动的购物车列表 +const get_check_all_cart = '/cart/checkAllCart' // 对所有购物车商品进行全选/反选 +const post_batch_check_cart = '/cart/batchCheckCart' // 对指定的多个商品进行选择/反选 +const get_find_all_sec_kill_time_list = '/activity/seckill/findAllSeckillTimeList' // 从缓存中查询时间段列表 +const get_find_sec_kill_sku_list = '/activity/seckill/findSeckillSkuList/' // 从缓存中读取秒杀sku +const get_coupon_info = '/activity/auth/getCouponInfo/' // 领取优惠券 +const get_confirm_order = '/order/auth/confirmOrder' // 确认订单 +const post_submit_order = '/order/auth/submitOrder' // 生成订单 +const get_order_info = '/order/auth/getOrderInfoById' // 订单详情 +const get_wx_login = '/user/weixin/wxLogin' // 微信用户登陆 +const post_update_user = '/user/weixin/auth/updateUser' // 更新用户信息 +const get_weixin_payment = '/payment/weixin/createJsapi/' // 获取微信支付信息 +const get_find_user_order = '/order/auth/findUserOrderPage' // 获取用户订单信息 +const get_order_status = '/payment/weixin/queryPayStatus' // 获取订单状态 + +const install = (Vue, vm) => { + const limit = 10; + const page = 1 + + // 获取首页数据 + const getHomeIndex = () => vm.$u.get(get_home_index); + /*--------------------------------------------------------- + 提货点模块 + ---------------------------------------------------------*/ + // 根据经纬度获取地址信息 + const getBaiduMapAddress = (o) => vm.$u.get(get_baidu_map_address + `${o.latitude},${o.longitude}`) + // 查询所有提供点的区域 + const getSysRegionFindAllList = () => vm.$u.get(get_sys_region_find_all_list, { + showLoading: false + }); + // 根据经纬度搜索提货点 + const getSearchLeader = (o) => vm.$u.get(get_search_leader + `/${o.page}/${o.limit}`, { + ...o, + showLoading: false + }) + // 选择提货点 + const getSelectLeader = (o) => vm.$u.get(get_select_leader + `/${o.leaderId}`, { + showLoading: false + }) + /*--------------------------------------------------------- + 商品模块 + ---------------------------------------------------------*/ + // 获取分类 + const getCategories = () => vm.$u.get(get_categories, { + showLoading: false + }); + // 搜索商品 + const getSearchSku = (o) => vm.$u.get(get_search_sku + + `/${o.page || page}/${o.limit || limit}`, { + ...o, + limit: o.limit || limit + }); + // 商品详情 + const getHomeItem = (o) => vm.$u.get(get_home_item + `/${o.skuId}`); + /*--------------------------------------------------------- + 秒杀模块 + ---------------------------------------------------------*/ + // 从缓存中查询时间段列表 + const getFindAllSeckillTimeList = () => vm.$u.get(get_find_all_sec_kill_time_list); + // 从缓存中读取秒杀sku + const getFindSeckillSkuList = (o) => vm.$u.get(get_find_sec_kill_sku_list + `/${o.timeName}`); + /*--------------------------------------------------------- + 购物车模块 + ---------------------------------------------------------*/ + // 加入购物车 + const getAddToCart = (o) => vm.$u.get(get_add_to_cart + `/${o.skuId}/${o.skuNum}`, { + showLoading: false + }); + // 购物车列表 + const getCartList = () => vm.$u.get(get_cart_list); + // 切换购物车商品的选中状态 + const getCheckCart = (o) => vm.$u.get(get_check_cart + `/${o.skuId}/${o.isChecked}`, { + showLoading: false + }); + // 删除购物车 + const deleteCart = (skuId) => vm.$u.delete(delete_cart + `/${skuId}`, { + showLoading: false + }); + // 带活动的购物车列表 + const getActivityCartList = (o) => vm.$u.get(get_activity_cart_list, { + showLoading: o.showLoading ? o.showLoading : false + }); + // 对所有购物车商品进行全选/反选 + const getCheckAllCart = (o) => vm.$u.get(get_check_all_cart + `/${o.isChecked}`, { + showLoading: o.showLoading ? o.showLoading : false + }); + // 对指定的多个商品进行选择/反选 + const postBatchCheckCart = (o) => vm.$u.post(post_batch_check_cart + `/${o.isChecked}`, o.skuIdList); + // 领取优惠券 + const getCouponInfo = (o) => vm.$u.get(get_coupon_info + `/${o.id}`) + // 确认订单 + const getConfirmOrder = () => vm.$u.get(get_confirm_order) + // 生成订单 + const postSubmitOrder = (o) => vm.$u.post(post_submit_order, o) + // 订单详情 + const getOrderInfo = (o) => vm.$u.get(get_order_info + `/${o.orderId}`) + // 获取微信支付信息 + const getWxPayment = (o) => vm.$u.get(get_weixin_payment + `/${o.orderNo}`) + + // 获取订单状态信息 + const getOrderStatus = (o) => vm.$u.get(get_order_status + `/${o.orderNo}`) + + /*--------------------------------------------------------- + 用户登陆 + ---------------------------------------------------------*/ + // 微信用户登陆 + const getWxLogin = (o) => vm.$u.get(get_wx_login + `/${o.code}`, { + showLoading: false + }) + // 更新用户信息 + const postUpdateUser = (o) => vm.$u.post(post_update_user, { + ...o, + showLoading: false + }) + // 获取用户订单信息 + const getFindUserOrder = (o) => vm.$u.get(get_find_user_order + `/${o.page}/${o.limit}`, { + ...o + }) + + vm.$u.api = { + getHomeIndex, + getSysRegionFindAllList, + getSearchLeader, + getSelectLeader, + getCategories, + getSearchSku, + getHomeItem, + getAddToCart, + getCartList, + getCheckCart, + deleteCart, + getActivityCartList, + getCheckAllCart, + postBatchCheckCart, + getBaiduMapAddress, + getFindAllSeckillTimeList, + getFindSeckillSkuList, + getCouponInfo, + getConfirmOrder, + postSubmitOrder, + getOrderInfo, + getWxPayment, + getWxLogin, + postUpdateUser, + getFindUserOrder, + getOrderStatus + }; +} + +export default { + install +} diff --git a/atguigu-tuan/common/http.interceptor.js b/atguigu-tuan/common/http.interceptor.js new file mode 100644 index 0000000..fc1fc02 --- /dev/null +++ b/atguigu-tuan/common/http.interceptor.js @@ -0,0 +1,38 @@ +const install = (Vue, vm) => { + Vue.prototype.$u.http.setConfig({ + //baseUrl: 'https://gmall-prod.atguigu.cn/api', + baseUrl: 'http://ggkt2.vipgz1.91tunnel.com/api', + loadingText: '请求中...', // 请求loading中的文字提示 + loadingTime: 800, // 在此时间内,请求还没回来的话,就显示加载中动画,单位ms + loadingMask: true, // 展示loading的时候,是否给一个透明的蒙层,防止触摸穿透 + }); + + // 请求拦截,配置Token等参数 + Vue.prototype.$u.http.interceptor.request = (config) => { + config.header.token = uni.getStorageSync('token') + + return config; + } + // 响应拦截,判断状态码是否通过 + Vue.prototype.$u.http.interceptor.response = (res) => { + if (res.code == 200) { + return res.data; + } else if (res.code == 208) { + // 未登陆,token过期 + uni.reLaunch({ + url: '/pages/login/login' + }) + return false; + } else { + uni.showToast({ + title: res.message, + icon: 'none' + }) + return false; + } + } +} + +export default { + install +} diff --git a/atguigu-tuan/common/svgIcon.js b/atguigu-tuan/common/svgIcon.js new file mode 100644 index 0000000..c3bf001 --- /dev/null +++ b/atguigu-tuan/common/svgIcon.js @@ -0,0 +1,7 @@ +export const fruit = 'data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iODEiIGhlaWdodD0iODEiPjxwYXRoIGQ9Ik01NDMuNjQyIDI2NC4zOTdjNS4xNDUtNi45ODkgOC4yNDMtMTUuNTkgOC4yNDMtMjQuOTYgMC0yMy4yOTYtMTguODY3LTQyLjE2My00Mi4xNjMtNDIuMTYzLTE3LjIzIDAtMzIuMDUyIDEwLjM2OC0zOC41OCAyNS4xOS0xMTYuMjI0LTQwLjc4LTI2MC44MzggMTQuNzQ2LTM0NC45MDggMTQwLjY0Ni05My42MiAxNDAuMTg2LTc3LjkyNyAzMTYuMjEyIDMzLjEyNiA0MDEuMTAxLTUuMjc0IDcuMDQtOC40NDggMTUuNzctOC40NDggMjUuMjQyIDAgMjMuMjk2IDE4Ljg2NyA0Mi4xNjMgNDIuMTYzIDQyLjE2MyAxOS4wNzIgMCAzNS4xNDktMTIuNjcyIDQwLjM3MS0zMC4wMjkgMTE0LjA0OCAzMy4xNTIgMjUxLjgwMi0yMi43ODQgMzMzLjA1Ni0xNDQuNDYgOTAuNjI0LTEzNS43MDYgNzguNzk3LTMwNS4wNzYtMjIuODYtMzkyLjczeiIgZmlsbD0iI0Y5QzA1RCIvPjxwYXRoIGQ9Ik01NTguMzEgMjg5LjUxUzMzMC43MjYgMzAxLjkgMjY1LjQ5OCA1MzMuM2MtNTQuOTEyIDE5NC43OSA1Ni4yMTcgMjY5LjI4NiA1Ni4yMTcgMjY5LjI4Nmw4MS40Ni0xOC4zMDRzLTk1LjU5MS05OS4zMjgtNjQuNzk0LTI1Ny42MzljMTcuMzMxLTU4LjcyNiA1NS4yMTktMTY3Ljg4NSAyMzAuNC0yMTAuNjg4IDMuODkxLTIxLjM3Ni0xMC40Ny0yNi40NDUtMTAuNDctMjYuNDQ1eiIgZmlsbD0iI0VBQTI0MiIvPjxwYXRoIGQ9Ik0zMzguMzU1IDU4NS45MDdhMjY5LjYyIDI2OS42MiAwIDEgMCA1MzkuMjM5IDAgMjY5LjYyIDI2OS42MiAwIDEgMC01MzkuMjM5IDB6IiBmaWxsPSIjRkZFMDhBIi8+PHBhdGggZD0iTTI0NS4yMjIgMzU3Ljc4NmExNS4zMyAxNS4zMyAwIDAgMS0xMS40NDMtNS4wOTVjLTUuNjU3LTYuMzIzLTUuMTQ1LTE2LjAyNSAxLjE3OC0yMS42ODMgMS43OTItMS42MTMgNDQuMTYtMzkuMzczIDg3LjgzMy01NS44ODUgNy45MzYtMi45OTUgMTYuNzk0Ljk5OSAxOS43OSA4LjkzNSAyLjk5NCA3LjkzNi0xIDE2Ljc5My04LjkzNSAxOS43ODgtMzguMjQ3IDE0LjQ2NC03Ny43OTkgNDkuNjY0LTc4LjE4MyA1MC4wMjNhMTUuMTk0IDE1LjE5NCAwIDAgMS0xMC4yNCAzLjkxN3pNMzcwLjM1NSAyNzQuMzU1YTE2LjM4NCAxNi4zODQgMCAxIDAgMzIuNzY4IDAgMTYuMzg0IDE2LjM4NCAwIDEgMC0zMi43NjggMHoiIGZpbGw9IiNGN0Y4RjgiLz48cGF0aCBkPSJNNzA3LjEyMyAzMzUuMTA0YzEyLjg3Ny0yNC4zMiAyMS43ODYtOTAuMDYgMTAuNjc1LTEyMy4zOTItNzUuMzQgMjcuNDk0LTEwNi41OTggNzAuOTYzLTExOS40NSAxMDQuNzggMy4yLS4xMDIgNi40LS4xNzggOS42MjYtLjE3OCAxMDAuMTQ4IDAgMTg3LjU0NiA1NC42MDQgMjM0LjAzNiAxMzUuNjU0IDYzLjUzOS0zOS44MzQgMTEyLjg5Ni0xMTEuODQ2IDEyNC44LTE2MC41MTItMTI0Ljg1Mi0zNi42MDgtMjE0LjQuNjY2LTI1OS42ODcgNDMuNjQ4eiIgZmlsbD0iIzY0RDg4MiIvPjxwYXRoIGQ9Ik05NTEuNzgyIDI5Ny45ODRzLTc0LjUyMSA2NS4zNTctMTQ1LjEgODYuMjcyYzMwLjA1NCA0MC41MjUgNDQuMDA2IDYxLjk3OCA0NC4wMDYgNjEuOTc4czk5Ljc4OS04NS41MDQgMTAxLjA5NC0xNDguMjV6IiBmaWxsPSIjNTJDMTY5Ii8+PHBhdGggZD0iTTc5OC43NzEgNjAxLjI2N0g0MTQuODIyYy04LjQ3MyAwLTE1LjM2LTYuODg2LTE1LjM2LTE1LjM2czYuODg3LTE1LjM2IDE1LjM2LTE1LjM2aDM4My45NWM4LjQ3MyAwIDE1LjM2IDYuODg3IDE1LjM2IDE1LjM2cy02Ljg4NyAxNS4zNi0xNS4zNiAxNS4zNnoiIGZpbGw9IiNFQUEyNDIiLz48cGF0aCBkPSJNNjA2Ljc5NyA3OTMuMjQyYy04LjQ3NCAwLTE1LjM2LTYuODg3LTE1LjM2LTE1LjM2di0zODMuOTVjMC04LjQ3MyA2Ljg4Ni0xNS4zNiAxNS4zNi0xNS4zNnMxNS4zNiA2Ljg4NyAxNS4zNiAxNS4zNnYzODMuOTVjMCA4LjQ3My02Ljg2MSAxNS4zNi0xNS4zNiAxNS4zNnoiIGZpbGw9IiNFQUEyNDIiLz48cGF0aCBkPSJNNDcxLjA2NiA3MzcuMDI0YTE1LjM2IDE1LjM2IDAgMCAxLTEwLjg1NS0yNi4yMTRMNzMxLjcgNDM5LjI5NmExNS4zNiAxNS4zNiAwIDAgMSAyMS43MDkgMGM1Ljk5IDUuOTkgNS45OSAxNS43MTggMCAyMS43MzRMNDgxLjkyIDczMi41MThhMTUuMzM3IDE1LjMzNyAwIDAgMS0xMC44NTQgNC41MDZ6IiBmaWxsPSIjRUFBMjQyIi8+PHBhdGggZD0iTTc0Mi41NTQgNzM3LjAyNGMtMy45NDMgMC03Ljg2LTEuNTEtMTAuODU1LTQuNTA2TDQ2MC4xODYgNDYxLjAzYy01Ljk5LTUuOTktNS45OS0xNS43MTggMC0yMS43MzRhMTUuMzYgMTUuMzYgMCAwIDEgMjEuNzA4IDBMNzUzLjQwOCA3MTAuODFhMTUuMzYgMTUuMzYgMCAwIDEtMTAuODU0IDI2LjIxNHoiIGZpbGw9IiNFQUEyNDIiLz48cGF0aCBkPSJNODM0LjI3OCA4MzkuODM0Yy0xNS4xNTUgMC0yNy40NDMgMTIuMjg4LTI3LjQ0MyAyNy40NDNzMTIuMjg4IDI3LjQ0MyAyNy40NDMgMjcuNDQzIDI3LjQ0NC0xMi4yODggMjcuNDQ0LTI3LjQ0My0xMi4yNjMtMjcuNDQzLTI3LjQ0NC0yNy40NDN6TTQwOS44NTYgODk0Ljc0NmExOS40MDUgMTkuNDA1IDAgMSAwIDM4LjgxIDAgMTkuNDA1IDE5LjQwNSAwIDEgMC0zOC44MSAwek05NzMuMjg2IDI2OS4zMzhjLTEwNS4yNDEtMzAuODQ4LTE4MS42MzItMTEuMzY3LTIyOS4zMjQgMTIuNjk3IDMuMTIzLTI3LjkzIDIuMzgtNTcuNDcyLTQuMzI3LTc3LjYxOWEyMy4wNTggMjMuMDU4IDAgMCAwLTI5Ljc3My0xNC4zNjJjLTY0LjQ4NiAyMy41MjctOTkuODE0IDU4LjQ0NS0xMTkuMTkzIDkwLjA2MWEyNTkuODcyIDI1OS44NzIgMCAwIDAtMTguODE2LTIwLjk5MmMyLjAyMi02LjMyMyAzLjA0Ni0xMi45NTMgMy4wNDYtMTkuNzEyIDAtMzUuOTQyLTI5LjIzNS02NS4yMDMtNjUuMjAzLTY1LjIwM2E2NS4xMjYgNjUuMTI2IDAgMCAwLTQ4LjA1MSAyMS4xNzFjLTU3LjgwNS0xNS43MTgtMTIyLjI5MS0xMS4wODUtMTgzLjYwMyAxMy40OTEtNjcuNDA1IDI3LjAwOC0xMjguMTI4IDc3LjIzNi0xNzAuOTgzIDE0MS40MTVDMTEuMzQxIDQ5My42NyAyMi43ODQgNjczLjk3IDEzMC43MTQgNzcwLjQwNmE2NS4xNiA2NS4xNiAwIDAgMC0yLjg0MiAxOS4wNzJjMCAzNS45NDMgMjkuMjM1IDY1LjIwNCA2NS4yMDMgNjUuMjA0IDIwLjg2NCAwIDQwLjE2Ny0xMC4xOSA1Mi4yNzUtMjYuMzQzIDU3LjAxMiAxMi4wODMgMTE3LjQyOCA0LjcxIDE3My44NzYtMTguOTQ0IDUwLjk5NSA0My4xMzYgMTE2Ljg5IDY5LjE5NyAxODguNzQ4IDY5LjE5NyAxNjEuMzgzIDAgMjkyLjY2LTEzMS4yNzcgMjkyLjY2LTI5Mi42NiAwLTQ1LjI2LTEwLjM0My04OC4xNjYtMjguNzc1LTEyNi40ODkgNjEuNjItNDUuNTE3IDEwNS43OC0xMTUuMzc5IDExNy4zMjUtMTYyLjQ4MyAyLjk0NC0xMS45OC00LjA3LTI0LjE0LTE1Ljg5OC0yNy42MjJ6bS0yNzMuNTYxLTI0Ljk2Yy43MTcgMjAuMTcyLTIuMjI3IDQ0LjA4My02LjU4IDYxLjU0MmEyOTAuMTk0IDI5MC4xOTQgMCAwIDAtNTYuNjc4LTExLjI2NGMxMi44NTEtMTcuMjI5IDMyLjY2Ni0zNS4yMjYgNjMuMjU4LTUwLjI3OHptLTQ1OS44NTMgNTM1LjA5Yy0xMi4xMzQtMy41MDYtMjQuODU4IDMuMzgtMjguNDkzIDE1LjQ4OS0yLjQwNiA4LjAxMy05LjkzMyAxMy42MTktMTguMzA0IDEzLjYxOS0xMC41NDcgMC0xOS4xMjMtOC41NzYtMTkuMTIzLTE5LjEyMyAwLTUuMTk3IDIuMS05LjA4OCAzLjg0LTExLjQxOCA3LjU3OC0xMC4xMTIgNS42MDYtMjQuNDQ4LTQuNDI5LTMyLjEyOC0xMDIuMTE4LTc4LjA1NC0xMTQuNDA2LTI0MC41ODktMjcuOTgtMzY5Ljk5NyA2MC4xNi05MC4wODYgMTU2LjA1Ny0xNDMuNTY0IDI0Ni45MzctMTQzLjU2NCAyNC4zNDYgMCA0OC4zNTggMy44NCA3MS4xOTQgMTEuODUyYTIzLjAwMiAyMy4wMDIgMCAwIDAgMjguNjk3LTEyLjQ0MWMzLjA3Mi02LjkzOCA5LjkzMy0xMS40NDMgMTcuNDg1LTExLjQ0MyAxMC41NDcgMCAxOS4xMjMgOC41NzYgMTkuMTIzIDE5LjEyMyAwIDUuMTItMi4wMjIgOC45Ni0zLjczNyAxMS4yOWEyMy4wMyAyMy4wMyAwIDAgMCAzLjUwNyAzMS4xMDNjNi41MDIgNS42MDcgMTIuNTQ0IDExLjU5NyAxOC4yMjcgMTcuODctMTMyLjA5NiAyOC4yMS0yMzEuNSAxNDUuODE3LTIzMS41IDI4Ni4yMDcgMCA3MS40NSAyNS43NTMgMTM2Ljk4NiA2OC40NTQgMTg3Ljg1My00Ny43MTkgMTYuNDEtOTcuNjEzIDE5LjE3NC0xNDMuODk4IDUuNzA5em0zNjguMTAyIDUzLjAxOGMtNTMuNDc4IDAtMTAzLjAxNC0xNy4xMjYtMTQzLjQ2Mi00Ni4xMyAwIDAtMzEuNjE2LTIyLjE3LTM2LjUwNi0zMi4wNTItNDEuMjkyLTQ0LjEwOS02Ni42MzYtMTAzLjM0Ny02Ni42MzYtMTY4LjM5NyAwLTEyNS4xODQgOTMuNzcyLTIyOC44OSAyMTQuNzU4LTI0NC41MzEgMCAwIDMzLjYxMy02LjQ1MSA1MC41MzQtMS4zMDYgNDUuNDQgMy40ODIgODguNjI4IDE5LjUzMyAxMjQuOTU0IDQ1LjU2OGwuNTYzLjQxYzEuNjEzIDEuMTUyIDMuMiAyLjM1NSA0Ljc4NyAzLjU1OC44Mi42MTUgMS42MzkgMS4yMyAyLjQzMiAxLjg3YTE2NS43NyAxNjUuNzcgMCAwIDEgMi4yMDIgMS43NjZjNTYuNjAyIDQ1LjIxIDkyLjkyOCAxMTQuNzkgOTIuOTI4IDE5Mi42OS4wMjYgMTM1LjkzNy0xMTAuNTkyIDI0Ni41NTQtMjQ2LjU1NCAyNDYuNTU0ek04NDguNTkgNDE5LjMwMmEyOTIuNDAzIDI5Mi40MDMgMCAwIDAtNTkuMjktNjIuOTI0Yy0uNTYzLS40NjEtMS4xNTItLjg5Ni0xLjcxNS0xLjMzMi0xLjE1Mi0uODk2LTIuMzA0LTEuNzY2LTMuNDU2LTIuNjYyLTEuNDM0LTEuMDc1LTIuODkzLTIuMTUtNC4zNTItMy4yMjYtLjQxLS4zMDctLjg0NS0uNjE0LTEuMjU0LS45MjFhMjkyLjU5NyAyOTIuNTk3IDAgMCAwLTI3LjQ5NS0xNy41NjJjMzQuNDgzLTIwLjk5MiA5NS45MjMtNDMuNDk0IDE4Ni4wMzUtMjMuMTY4LTE1LjM4NSAzNi4xOTktNDcuODcyIDgwLjUzOC04OC40NzMgMTExLjc5NXoiIGZpbGw9IiM0NzRFNTQiLz48L3N2Zz4=' + +export const discount = 'data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iODEiIGhlaWdodD0iODEiPjxwYXRoIGQ9Ik05MjMuNTI0IDUxNC42NjZMNjIxLjU2MiAxMDMuMTk5YTguNzk1IDguNzk1IDAgMCAwLTcuMDYxLTMuNTg5bC0yNjQuMjI3LS44MzhoLS4wMjdhOC43OSA4Ljc5IDAgMCAwLTguMzk2IDYuMTg1bC00My4xMTMgMTM4LjgxMS0xMTIuNjM5LS4zNThoLS4wMjdhOC43OSA4Ljc5IDAgMCAwLTguMzk2IDYuMTg0bC03OC41MDggMjUyLjc3YTguNzg2IDguNzg2IDAgMCAwIDEuMzA5IDcuODExbDMwMS45NjEgNDExLjQ2NmE4Ljc5NSA4Ljc5NSAwIDAgMCAxMi4yOTcgMS44ODNsMzQyLjczNC0yNTEuOTNhOC43OTQgOC43OTQgMCAwIDAgMS44ODEtMTIuMjg5bC02LjIyMy04LjQ3OSAxNjguNTE4LTEyMy44NzFjMy45MDktMi44NzcgNC43NTEtOC4zNzcgMS44NzktMTIuMjg5em0tNTA3LjUzIDI0NC41OTJhNi44MzIgNi44MzIgMCAwIDEtOS41MjMtMS42ODIgNi44MzcgNi44MzcgMCAwIDEgMS42ODMtOS41MjNsOTAuNjY2LTYzLjQyOCA3LjIwNy01LjA0MyA3LjIwNy01LjA0MS0zOC41MDgtNTIuNDczLTcuMjA3IDUuMDQxLTcuMjA3IDUuMDQzLTkyLjE4NCA2NC40ODhhNi44MTQgNi44MTQgMCAwIDEtMy45MTQgMS4yMzYgNi44MjcgNi44MjcgMCAwIDEtNS42MDktMi45MiA2LjgzNiA2LjgzNiAwIDAgMSAxLjY4NC05LjUyM2w5MS45My02NC4zMTEgNy4yMDctNS4wNDMgNy4yMDctNS4wNDEtMzguNTEtNTIuNDczLTcuMjA2IDUuMDQxLTcuMjA3IDUuMDQxLTkzLjQ0OCA2NS4zNzVhNi44MzMgNi44MzMgMCAwIDEtOS41MjMtMS42ODQgNi44MzYgNi44MzYgMCAwIDEgMS42ODMtOS41MjNsOTMuMTk0LTY1LjE5NyA3LjIwNy01LjA0MSA3LjIwNy01LjA0MS01OS4zNzMtODAuOTA1YTc0Ljc1IDc0Ljc1IDAgMCAxLTYuNDI4IDYuMTA0IDc0LjU0NyA3NC41NDcgMCAwIDEtMy45ODggMy4xNjUgNzcuNDgxIDc3LjQ4MSAwIDAgMS0zLjA0MyAyLjExNmMtMzMuMDM5IDIxLjg0Mi03Ny45MDYgMTQuMDk4LTEwMS41OTItMTguMTc3LTI0LjQyLTMzLjI3NC0xNy4yMTUtODAuMjE0IDE2LjA2MS0xMDQuNjM0YTc0LjYxMiA3NC42MTIgMCAwIDEgMy4xMzctMi4xODIgNzQuNTEyIDc0LjUxMiAwIDAgMSAxMS4wNy02LjAwMiA3My45MTggNzMuOTE4IDAgMCAxIDEwLjM0NC0zLjY1NmwzMC45MTYtOTkuNTQzIDM5LjU4NC0xMjcuNDQ2IDI1My4yOTMuODAyIDI5NC4xNDEgNDAwLjgwOC0xNjEuNDMxIDExOC42Ni0xNjcuMTM4IDEyMi44NTgtNTQuMjU2LTczLjkzNC03LjIwNSA1LjA0MS03LjIwNyA1LjA0MS05MC45MjEgNjMuNjA2eiIgZmlsbD0iI0QzMjA1NSIvPjxwYXRoIGQ9Ik0yODguNzE2IDM4My40NjhhMzYuMjQxIDM2LjI0MSAwIDAgMC03LjE5MSA1LjA2MWMtMTMuNjk2IDEyLjM1OS0xNi4wODYgMzMuMzkzLTQuOTQxIDQ4LjU3OSAxMS4xNDUgMTUuMTg4IDMxLjkyNiAxOS4yMTUgNDcuODI0IDkuODU1YTM2LjIzMiAzNi4yMzIgMCAwIDAgMy4wOTgtMi4wMzkgMzYuNzE3IDM2LjcxNyAwIDAgMCAzLjg4OS0zLjMwNCAzNi4xMzggMzYuMTM4IDAgMCAwIDUuNjczLTcuMTNsLTM5Ljg0Ny01NC4yOTdhMzYuMTU3IDM2LjE1NyAwIDAgMC04LjUwNSAzLjI3NXptMjI1LjY5OS01Mi4yMDRhNzUuMjI3IDc1LjIyNyAwIDAgMCAyLjY3Ni0yLjA3MmMzMC45NjMtMjQuOTI0IDM3LjEzMi03MC4yMDIgMTMuMzgzLTEwMi41NjItMjQuNDE5LTMzLjI3NC03MS4zNTktNDAuNDc5LTEwNC42MzMtMTYuMDYtMTIuMDAxIDguODA3LTIwLjU5IDIwLjU0OS0yNS41NDkgMzMuNTE3LTguNzg5IDIyLjk4OS02LjEyNSA0OS44NDMgOS40ODggNzEuMTE4IDI0LjQyIDMzLjI3NCA3MS4zNTggNDAuNDc5IDEwNC42MzUgMTYuMDU5em0tNzMuNjU2LTM4Ljc5NGMtMTEuMDQ1LTE1LjA1LTguNzg5LTM1LjgzNyA0LjU4Mi00OC4yMzlhMzYuNTc3IDM2LjU3NyAwIDAgMSAzLjIzNC0yLjY4MmMxNi4xOTMtMTEuODg1IDM5LjAzNy04LjM3OCA1MC45MiA3LjgxNiAxMS4yMTEgMTUuMjcyIDguNzIzIDM2LjQ1Ni01LjE4NCA0OC43ODdhMzYuNDMgMzYuNDMgMCAwIDEtMi42MzEgMi4xMzVjLTE2LjE5NSAxMS44ODQtMzkuMDM3IDguMzc4LTUwLjkyMS03LjgxN3oiIGZpbGw9IiNEMzIwNTUiLz48cGF0aCBkPSJNNTU4LjM3NCA2NDMuMDU3bDcuOTU3IDEwLjg4NSAxLjMzMiAxLjgyMmE2Ljg0MyA2Ljg0MyAwIDAgMCA5LjU1NyAxLjQ4NWwxMTcuNTU0LTg1LjkzOEw4MDguNjkgNDg4LjAzYTYuODM3IDYuODM3IDAgMCAwIDEuNDg1LTkuNTU2TDcxMC4wNDggMzQxLjUxMmE2Ljg0NSA2Ljg0NSAwIDAgMC00LjQ3Mi0yLjcyMyA2Ljg1OSA2Ljg1OSAwIDAgMC01LjA4NSAxLjIzNmwtMTE0LjE4OCA4My40NzktMTE3LjI4MSA4NS43NGE2LjgzOSA2LjgzOSAwIDAgMC0yLjM2OSA3LjkxYy4yMTUuNTcyLjUwNCAxLjEyOS44ODMgMS42NDhsNC44NDYgNi42MjUgMzkuNzgzIDU0LjQyIDcuMzU5IDEwLjA2OCAzOC44NSA1My4xNDJ6IiBmaWxsPSIjRTNCOTMzIi8+PC9zdmc+' + +export const invite = 'data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iODEiIGhlaWdodD0iODEiPjxwYXRoIGQ9Ik04MDcuMiA0MzcuMVYyMDEuMmMwLTI5LjQtMjMuOC01My4yLTUzLjItNTMuMkgyNzYuNWMtMjkuNCAwLTUzLjIgMjMuOC01My4yIDUzLjJ2MjM1LjljMCA2LjEtNC4zIDExLjUtMTAuMyAxMi43bC0zMC44IDYuNGMtMjEuNyA0LjUtMzcuMiAyMy42LTM3LjIgNDUuOHYyODcuN2MwIDQ0LjIgMzUuOSA4MC4xIDgwLjEgODAuMWg1ODAuNGM0NC4yIDAgODAuMS0zNS45IDgwLjEtODAuMVY1MDJjMC0yMi4yLTE1LjYtNDEuMi0zNy4yLTQ1LjhsLTMwLjgtNi40Yy02LjEtMS4zLTEwLjQtNi41LTEwLjQtMTIuN3oiIGZpbGw9IiNGRjU1NkUiLz48cGF0aCBkPSJNMjc2LjUgMTQ4Yy0yOS40IDAtNTMuMiAyMy44LTUzLjIgNTMuMnYxMy4xYzMxLTI2LjggNjUuNy00OS4zIDEwMy41LTY2LjNoLTUwLjN6bTUzMC43IDk2di00Mi45YzAtMjkuNC0yMy44LTUzLjItNTMuMi01My4yaC04MS4yYzUxIDIzLjEgOTYuNiA1NS45IDEzNC40IDk2LjF6TTE0NS4xIDc2MC4ydjI5LjVjMCA0NC4yIDM1LjkgODAuMSA4MC4xIDgwLjFoMjEuOWMtNDAuMy0zMC4yLTc0LjgtNjcuNC0xMDItMTA5LjZ6bTc0MC41IDI5LjV2LTg2LjljLTI5LjQgNjYuNC03NS40IDEyMy44LTEzMi44IDE2Ni45aDUyLjdjNDQuMiAwIDgwLjEtMzUuOSA4MC4xLTgweiIgZmlsbD0iI0ZGNTU2RSIvPjxwYXRoIGQ9Ik0xNDUuMSA2NDkuMnYxMTFjMjcuMiA0Mi4zIDYxLjggNzkuNSAxMDIgMTA5LjZoMTY4LjJDMjkyLjIgODQ3IDE5MSA3NjIuMyAxNDUuMSA2NDkuMnptNzQwLjUgNTMuNlY1MDJjMC0yMi4yLTE1LjYtNDEuMi0zNy4yLTQ1LjhsLTguMi0xLjdjMyAxOSA0LjcgMzguNCA0LjcgNTguMSAwIDE3Ny45LTEyNy44IDMyNS44LTI5Ni43IDM1N2gyMDQuNmM1Ny4zLTQzIDEwMy4zLTEwMC40IDEzMi44LTE2Ni44em0tNDA0LTU1My4yYzE0Mi43IDAgMjY2LjEgODIuMyAzMjUuNSAyMDIuMVYyNDRjLTM3LjctNDAuMi04My4zLTczLTEzNC4yLTk1LjloLTM0NmMtMzcuOCAxNy03Mi42IDM5LjUtMTAzLjQgNjYuM3Y0My4xYzY1LjctNjYuNiAxNTcuMS0xMDcuOSAyNTguMS0xMDcuOXoiIGZpbGw9IiNGRjVGNzEiLz48cGF0aCBkPSJNODQ0LjcgNTEyLjdjMC0xOS44LTEuNi0zOS4zLTQuNy01OC4xbC0yMi42LTQuN2MtNi0xLjMtMTAuMy02LjYtMTAuMy0xMi43di04NS40Qzc0Ny43IDIzMiA2MjQuMyAxNDkuNyA0ODEuNiAxNDkuN2MtMTAxIDAtMTkyLjQgNDEuMi0yNTguMyAxMDcuOHY0Ny43YzU1LjgtNzEuMSAxNDIuNS0xMTYuOCAyMzkuOS0xMTYuOCAxNjguMyAwIDMwNC42IDEzNi40IDMwNC42IDMwNC42UzYzMS42IDc5Ny41IDQ2My4zIDc5Ny41IDE1OC43IDY2MS4xIDE1OC43IDQ5Mi45YzAtOC40LjQtMTYuNiAxLTI0LjktOSA4LjYtMTQuNiAyMC43LTE0LjYgMzMuOXYxNDcuM0MxOTEgNzYyLjIgMjkyLjMgODQ3IDQxNS4yIDg2OS43aDEzM2MxNjguNy0zMS4yIDI5Ni41LTE3OS4xIDI5Ni41LTM1N3oiIGZpbGw9IiNGRjY5NzQiLz48cGF0aCBkPSJNNDYzLjMgNzk3LjVjMTY4LjMgMCAzMDQuNi0xMzYuNCAzMDQuNi0zMDQuNlM2MzEuNiAxODguMiA0NjMuMyAxODguMmMtOTcuNCAwLTE4NC4xIDQ1LjctMjM5LjkgMTE2Ljh2NjAuNGMzOS45LTgyIDEyNC4xLTEzOC43IDIyMS41LTEzOC43IDEzNiAwIDI0Ni4zIDExMC4yIDI0Ni4zIDI0Ni4zUzU4MC45IDcxOS4zIDQ0NSA3MTkuMyAxOTguOCA2MDkuMSAxOTguOCA0NzNjMC02LjkuMy0xMy43LjktMjAuNGwtMTcuMyAzLjZjLTguNyAxLjgtMTYuNCA2LTIyLjYgMTEuOC0uNyA4LjItMSAxNi41LTEgMjQuOS0uMSAxNjguMiAxMzYuMyAzMDQuNiAzMDQuNSAzMDQuNnoiIGZpbGw9IiNGRjczNzciLz48cGF0aCBkPSJNNDQ1IDcxOS4zYzEzNiAwIDI0Ni4zLTExMC4yIDI0Ni4zLTI0Ni4zUzU4MC45IDIyNi44IDQ0NSAyMjYuOGMtOTcuNCAwLTE4MS43IDU2LjYtMjIxLjUgMTM4Ljd2NzEuNmMwIDYuMS00LjMgMTEuNS0xMC4zIDEyLjdsLTEzLjUgMi44Yy0uNiA2LjctLjkgMTMuNS0uOSAyMC40IDAgMTM2LjEgMTEwLjIgMjQ2LjMgMjQ2LjIgMjQ2LjN6bS0xOC4yLTQ1My44YzEwMy43IDAgMTg3LjggODQuMSAxODcuOCAxODcuOHMtODQuMSAxODcuOC0xODcuOCAxODcuOFMyMzkgNTU3IDIzOSA0NTMuM3M4NC4xLTE4Ny44IDE4Ny44LTE4Ny44eiIgZmlsbD0iI0ZGN0U3QSIvPjxwYXRoIGQ9Ik00MjYuOCA2NDFjMTAzLjcgMCAxODcuOC04NC4xIDE4Ny44LTE4Ny44cy04NC4xLTE4Ny44LTE4Ny44LTE4Ny44UzIzOSAzNDkuNSAyMzkgNDUzLjIgMzIzLjEgNjQxIDQyNi44IDY0MXptLTE4LjQtMzM3YzcxLjQgMCAxMjkuNCA1Ny45IDEyOS40IDEyOS40cy01Ny45IDEyOS41LTEyOS40IDEyOS41UzI3OSA1MDQuOSAyNzkgNDMzLjUgMzM3IDMwNCA0MDguNCAzMDR6IiBmaWxsPSIjRkY4ODdEIi8+PHBhdGggZD0iTTMxNi45IDUyNS4wMjJBMTI5LjQgMTI5LjQgMCAxIDAgNDk5Ljg5NCAzNDIuMDIgMTI5LjQgMTI5LjQgMCAxIDAgMzE2LjkgNTI1LjAyMnoiIGZpbGw9IiNGRjkyODAiLz48cGF0aCBkPSJNODA1LjUgODc4LjhIMjI1LjFjLTQ5LjEgMC04OS4xLTQwLTg5LjEtODkuMVY1MDJjMC0yNi4zIDE4LjctNDkuMyA0NC40LTU0LjZsMzAuOC02LjRjMS44LS40IDMuMS0yIDMuMS0zLjlWMjAxLjJjMC0zNC4zIDI3LjktNjIuMiA2Mi4yLTYyLjJINzU0YzM0LjMgMCA2Mi4yIDI3LjkgNjIuMiA2Mi4ydjIzNS45YzAgMS45IDEuMyAzLjUgMy4zIDMuOWwzMC44IDYuNGMyNS43IDUuNSA0NC40IDI4LjQgNDQuNCA1NC42djI4Ny43Yy0uMSA0OS4xLTQwLjEgODkuMS04OS4yIDg5LjF6TTI3Ni41IDE1N2MtMjQuNCAwLTQ0LjIgMTkuOC00NC4yIDQ0LjJ2MjM1LjljMCAxMC40LTcuNCAxOS41LTE3LjUgMjEuNUwxODQgNDY1Yy0xNy40IDMuNi0zMCAxOS4yLTMwIDM3djI4Ny43YzAgMzkuMiAzMS45IDcxLjEgNzEuMSA3MS4xaDU4MC40YzM5LjIgMCA3MS4xLTMxLjkgNzEuMS03MS4xVjUwMmMwLTE3LjctMTIuNi0zMy4zLTMwLjEtMzdsLTMwLjgtNi40Yy0xMC40LTIuMi0xNy42LTExLTE3LjYtMjEuNVYyMDEuMmMwLTI0LjQtMTkuOC00NC4yLTQ0LjItNDQuMkgyNzYuNXoiIGZpbGw9IiNFRjQ4NjgiLz48cGF0aCBkPSJNNzY0LjUgNTI5LjNMNTQ1LjEgNjM0LjdjLTE4LjkgOS00MC43IDktNTkuNiAwTDI2Ni4xIDUyOS4zYy0xMi4yLTUuOC0yNi40IDMtMjYuNCAxNi42djE5OC44YzAgMjAuMyAxNi40IDM2LjcgMzYuNyAzNi43aDQ3Ny43YzIwLjMgMCAzNi43LTE2LjQgMzYuNy0zNi43VjU0NS45Yy4xLTEzLjYtMTQtMjIuNS0yNi4zLTE2LjZ6bS0yNTcuNi05My41YzIuNSAxLjkgNS4zIDIuNyA4LjQgMi43IDIuOSAwIDUuOC0xIDguNC0yLjcgMi41LTEuOSA2MC44LTQxLjcgODUuMS03OC40IDguNC0xMi42IDE4LjgtMjguNCAxOC44LTUwLjggMC0zNy42LTI5LjEtNjguMy02NC42LTY4LjMtMTkuNyAwLTM1LjQgOS42LTQ3LjQgMjUuNC0xMi4xLTE1LjctMjcuNy0yNS40LTQ3LjQtMjUuNC0zNS43IDAtNjQuOCAzMC42LTY0LjggNjguMyAwIDIyLjUgMTAuNCAzOC4zIDE4LjggNTAuOCAyMy44IDM2LjggODIuMSA3Ni41IDg0LjcgNzguNHoiIGZpbGw9IiNGRkM3QzciLz48cGF0aCBkPSJNMzQwLjEgMTg4LjJoLTljLTM0LjIgMC02MiAyNy44LTYyIDYydjY1LjZjMCA5LjkgOC4xIDE4IDE4IDE4czE4LTguMSAxOC0xOHYtNjUuNmMwLTE0LjQgMTEuNy0yNiAyNi0yNmg5YzkuOSAwIDE4LTguMSAxOC0xOHMtOC4xLTE4LTE4LTE4em0tNTMgMTY5LjdjLTkuOSAwLTE4IDguMS0xOCAxOHYxMmMwIDkuOSA4LjEgMTggMTggMThzMTgtOC4xIDE4LTE4di0xMmMwLTEwLTguMS0xOC0xOC0xOHoiIGZpbGw9IiNGRkYiLz48L3N2Zz4=' + +export const recommend = 'data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iODEiIGhlaWdodD0iODEiPjxwYXRoIGQ9Ik04MjYuMzY4IDI1My42NDVjLTU3LjM0NC01Ny4zNDQtMTQyLjQzOC02OS45NC0yMTIuMDItMzcuODM3LTMzLjc0IDE4NC4xMTUtMjMxLjM3MiAzMDguMjc1LTQ0OS41ODYgMjc5LjE0Mi0zLjIyNi0uNDEtNi4zNS0uOTcyLTkuNTc1LTEuNDg0IDYuNCA5LjI2NyAxMy42NyAxOC4xMjQgMjEuOTY1IDI2LjQxOWw1OC40MiA1OC40MTkgMjU4Ljk2OSAyNTguOTdjMy45OTMgMy45OTMgMTAuNDk2IDMuOTkzIDE0LjQ5IDBMNzY4IDU3OC4zMDRsNTguNDItNTguNDJjNzMuNDcxLTczLjU3NCA3My40NzEtMTkyLjc2Ny0uMDUyLTI2Ni4yNHoiIGZpbGw9IiNmZmUwNDgiLz48cGF0aCBkPSJNNTAxLjc2IDg2MC42NzJjLTguMTkyIDAtMTUuOTIzLTMuMTc0LTIxLjcwOS05LjAxMUwxNjIuNjYyIDUzNC4yNzJjLTgxLjM1Ni04MS4zNTctODEuMzU2LTIxMy44MTEgMC0yOTUuMTY4czIxMy44MTItODEuMzU3IDI5NS4xNjggMGEyMC41MjEgMjAuNTIxIDAgMCAxIDAgMjguOTggMjAuNTIxIDIwLjUyMSAwIDAgMS0yOC45NzkgMGMtNjUuNDMzLTY1LjM4My0xNzEuODI3LTY1LjQzNC0yMzcuMjYgMHMtNjUuNDM0IDE3MS44MjYgMCAyMzcuMjZMNTAxLjc2IDgxNS40NjJsMzEwLjExOC0zMTAuMTE4YzY1LjQzNC02NS40MzQgNjUuNDM0LTE3MS44MjcgMC0yMzcuMjZzLTE3MS44MjctNjUuNDM0LTIzNy4yNiAwTDQ1NC4xNDQgMzg0Ljk3MmEyMC40OCAyMC40OCAwIDAgMS0yOC45OC0uNDYxIDIwLjQ3NSAyMC40NzUgMCAwIDEgLjQ2Mi0yOC45OGwxMjAuMjY4LTExNi42ODRjMzkuMjItMzkuMjIgOTEuNTk3LTYwLjkyOCAxNDcuMzU0LTYwLjkyOHMxMDguMTg2IDIxLjcwOSAxNDcuNjEgNjEuMTMzYzgxLjM1NiA4MS4zNTcgODEuMzU2IDIxMy44MTEgMCAyOTUuMTY4TDUyMy40NjggODUxLjYxYTMwLjE5MyAzMC4xOTMgMCAwIDEtMjEuNzA4IDkuMDYyeiIgZmlsbD0iIzU1NTI0RiIvPjwvc3ZnPg==' diff --git a/atguigu-tuan/components/AddToCart/AddToCart.vue b/atguigu-tuan/components/AddToCart/AddToCart.vue new file mode 100644 index 0000000..b845dd5 --- /dev/null +++ b/atguigu-tuan/components/AddToCart/AddToCart.vue @@ -0,0 +1,132 @@ + + + + + diff --git a/atguigu-tuan/components/CouponInfoList/CouponInfoList.vue b/atguigu-tuan/components/CouponInfoList/CouponInfoList.vue new file mode 100644 index 0000000..a6ffa8c --- /dev/null +++ b/atguigu-tuan/components/CouponInfoList/CouponInfoList.vue @@ -0,0 +1,130 @@ + + + + + diff --git a/atguigu-tuan/components/ListImgItem/ListImgItem.vue b/atguigu-tuan/components/ListImgItem/ListImgItem.vue new file mode 100644 index 0000000..802b046 --- /dev/null +++ b/atguigu-tuan/components/ListImgItem/ListImgItem.vue @@ -0,0 +1,99 @@ + + + + + diff --git a/atguigu-tuan/components/PickUpLocationHeader/PickUpLocationHeader.vue b/atguigu-tuan/components/PickUpLocationHeader/PickUpLocationHeader.vue new file mode 100644 index 0000000..b8b4bf6 --- /dev/null +++ b/atguigu-tuan/components/PickUpLocationHeader/PickUpLocationHeader.vue @@ -0,0 +1,130 @@ + + + + + diff --git a/atguigu-tuan/components/PickUpLocationItem/PickUpLocationItem.vue b/atguigu-tuan/components/PickUpLocationItem/PickUpLocationItem.vue new file mode 100644 index 0000000..bb39595 --- /dev/null +++ b/atguigu-tuan/components/PickUpLocationItem/PickUpLocationItem.vue @@ -0,0 +1,99 @@ + + + + + diff --git a/atguigu-tuan/index.html b/atguigu-tuan/index.html new file mode 100644 index 0000000..566b36c --- /dev/null +++ b/atguigu-tuan/index.html @@ -0,0 +1,15 @@ + + + + + + + + + + +
+ + + diff --git a/atguigu-tuan/main.js b/atguigu-tuan/main.js new file mode 100644 index 0000000..a1ba7de --- /dev/null +++ b/atguigu-tuan/main.js @@ -0,0 +1,26 @@ +import App from './App' +import Vue from 'vue' +import uView from "uview-ui"; +import store from './store' +import dayjs from 'dayjs'; + +Vue.prototype.$dayjs = dayjs; +Vue.use(uView); +Vue.config.productionTip = false +App.mpType = 'app' +const app = new Vue({ + ...App, + store +}) + +// http拦截器,将此部分放在new Vue()和app.$mount()之间,才能App.vue中正常使用 +import httpInterceptor from '@/common/http.interceptor.js' + +Vue.use(httpInterceptor, app) + +// http接口API集中管理引入部分 +import httpApi from '@/common/http.api.js' + +Vue.use(httpApi, app) + +app.$mount() diff --git a/atguigu-tuan/manifest.json b/atguigu-tuan/manifest.json new file mode 100644 index 0000000..71f216e --- /dev/null +++ b/atguigu-tuan/manifest.json @@ -0,0 +1,80 @@ +{ + "name": "atguigu-tuan", + "appid": "__UNI__3804DB8", + "description": "", + "versionName": "1.0.0", + "versionCode": "100", + "transformPx": false, + /* 5+App特有相关 */ + "app-plus": { + "usingComponents": true, + "nvueStyleCompiler": "uni-app", + "compilerVersion": 3, + "splashscreen": { + "alwaysShowBeforeRender": true, + "waiting": true, + "autoclose": true, + "delay": 0 + }, + /* 模块配置 */ + "modules": {}, + /* 应用发布信息 */ + "distribute": { + /* android打包配置 */ + "android": { + "permissions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ] + }, + /* ios打包配置 */ + "ios": {}, + /* SDK配置 */ + "sdkConfigs": {} + } + }, + /* 快应用特有相关 */ + "quickapp": {}, + /* 小程序特有相关 */ + "mp-weixin": { + "appid": "wx2edefe049c6a37b9", + "setting": { + "urlCheck": false, + "es6": true, + "postcss": true, + "minified": true + }, + "usingComponents": true, + "permission": { + "scope.userLocation": { + "desc": "获取地理位置" + } + } + }, + "mp-alipay": { + "usingComponents": true + }, + "mp-baidu": { + "usingComponents": true + }, + "mp-toutiao": { + "usingComponents": true + }, + "uniStatistics": { + "enable": false + }, + "vueVersion": "2" +} diff --git a/atguigu-tuan/package.json b/atguigu-tuan/package.json new file mode 100644 index 0000000..3ec2342 --- /dev/null +++ b/atguigu-tuan/package.json @@ -0,0 +1,7 @@ +{ + "dependencies": { + "dayjs": "^1.10.7", + "uview-ui": "^1.8.4", + "vuex": "^3.6.2" + } +} diff --git a/atguigu-tuan/pages.json b/atguigu-tuan/pages.json new file mode 100644 index 0000000..a3d5be5 --- /dev/null +++ b/atguigu-tuan/pages.json @@ -0,0 +1,164 @@ +{ + "easycom": { + "^u-(.*)": "uview-ui/components/u-$1/u-$1.vue" + }, + "pages": [ + //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages + { + "path": "pages/index/index", + "style": { + "navigationStyle": "custom", + // 隐藏系统导航栏 + "navigationBarTextStyle": "white", + // 状态栏字体为白色,只能为 white-白色,black-黑色 二选一 + "navigationBarTitleText": "uni-app" + } + }, + { + "path": "pages/categories/categories", + "style": { + "navigationStyle": "custom", + // 隐藏系统导航栏 + "navigationBarTitleText": "分类", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/cart/cart", + "style": { + "navigationStyle": "custom", + // 隐藏系统导航栏 + "navigationBarTitleText": "购物车", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/my/my", + "style": { + "navigationStyle": "custom", + // 隐藏系统导航栏 + "navigationBarTitleText": "我的", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/login/login", + "style": { + "navigationBarTitleText": "登陆页", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/homeItem/homeItem", + "style": { + "navigationStyle": "custom", + // 隐藏系统导航栏 + "navigationBarTitleText": "", + "enablePullDownRefresh": false + } + } + ], + "globalStyle": { + "navigationBarTextStyle": "black", + "navigationBarTitleText": "uni-app", + "navigationBarBackgroundColor": "#F8F8F8", + "backgroundColor": "#F8F8F8" + }, + "tabBar": { + "color": "#2c2c2c", + "selectedColor": "#d81e06", + "borderStyle": "white", + "backgroundColor": "#ffffff", + "list": [ + { + "pagePath": "pages/index/index", + "iconPath": "static/images/tabbar/home.png", + "selectedIconPath": "static/images/tabbar/home-selected.png", + "text": "首页" + }, + { + "pagePath": "pages/categories/categories", + "iconPath": "static/images/tabbar/categories.png", + "selectedIconPath": "static/images/tabbar/categories-selected.png", + "text": "分类" + }, + { + "pagePath": "pages/cart/cart", + "iconPath": "static/images/tabbar/cart.png", + "selectedIconPath": "static/images/tabbar/cart-selected.png", + "text": "购物车" + }, + { + "pagePath": "pages/my/my", + "iconPath": "static/images/tabbar/my.png", + "selectedIconPath": "static/images/tabbar/my-selected.png", + "text": "我的" + } + ] + }, + "subPackages": [ + { + "root": "pagesLocation", + "pages": [ + { + "path": "myPickUpLocation/myPickUpLocation", + "style": { + "navigationBarTitleText": "我的提货点", + "enablePullDownRefresh": false + } + }, + { + "path": "choosePickUpLocation/choosePickUpLocation", + "style": { + "navigationBarTitleText": "选择其它提货点", + "enablePullDownRefresh": false + } + } + ] + }, + { + "root": "pagesOrder", + "pages": [ + { + "path": "confirmOrder/confirmOrder", + "style": { + "navigationBarTitleText": "确认订单", + "enablePullDownRefresh": false, + "navigationStyle": "custom" + // 隐藏系统导航栏 + } + }, + { + "path": "getOrderInfo/getOrderInfo", + "style": { + "navigationBarTitleText": "确认支付", + "enablePullDownRefresh": false, + "navigationStyle": "custom" + // 隐藏系统导航栏 + } + }, + { + "path": "orderList/orderList", + "style": { + "navigationBarTitleText": "订单列表", + "enablePullDownRefresh": false + } + } + ] + }, + { + "root": "pagesSeckill", + "pages": [ + { + "path": "seckill/seckill", + "style": { + "navigationBarTitleText": "限时秒杀", + "enablePullDownRefresh": false, + "navigationStyle": "custom" + // 隐藏系统导航栏 + } + } + ] + } + ] +} diff --git a/atguigu-tuan/pages/cart/cart.vue b/atguigu-tuan/pages/cart/cart.vue new file mode 100644 index 0000000..8bb9387 --- /dev/null +++ b/atguigu-tuan/pages/cart/cart.vue @@ -0,0 +1,228 @@ + + + + + diff --git a/atguigu-tuan/pages/categories/categories.vue b/atguigu-tuan/pages/categories/categories.vue new file mode 100644 index 0000000..0bc1b7f --- /dev/null +++ b/atguigu-tuan/pages/categories/categories.vue @@ -0,0 +1,295 @@ + + + + + diff --git a/atguigu-tuan/pages/homeItem/homeItem.vue b/atguigu-tuan/pages/homeItem/homeItem.vue new file mode 100644 index 0000000..1cc0b73 --- /dev/null +++ b/atguigu-tuan/pages/homeItem/homeItem.vue @@ -0,0 +1,336 @@ + + + + + diff --git a/atguigu-tuan/pages/index/index.vue b/atguigu-tuan/pages/index/index.vue new file mode 100644 index 0000000..14a2ae8 --- /dev/null +++ b/atguigu-tuan/pages/index/index.vue @@ -0,0 +1,487 @@ + + + + + diff --git a/atguigu-tuan/pages/login/login.vue b/atguigu-tuan/pages/login/login.vue new file mode 100644 index 0000000..63abf98 --- /dev/null +++ b/atguigu-tuan/pages/login/login.vue @@ -0,0 +1,139 @@ + + + + + diff --git a/atguigu-tuan/pages/my/my.vue b/atguigu-tuan/pages/my/my.vue new file mode 100644 index 0000000..a6ad8a6 --- /dev/null +++ b/atguigu-tuan/pages/my/my.vue @@ -0,0 +1,275 @@ + + + + + diff --git a/atguigu-tuan/pagesLocation/choosePickUpLocation/choosePickUpLocation.vue b/atguigu-tuan/pagesLocation/choosePickUpLocation/choosePickUpLocation.vue new file mode 100644 index 0000000..6a1f53b --- /dev/null +++ b/atguigu-tuan/pagesLocation/choosePickUpLocation/choosePickUpLocation.vue @@ -0,0 +1,174 @@ + + + + + diff --git a/atguigu-tuan/pagesLocation/myPickUpLocation/myPickUpLocation.vue b/atguigu-tuan/pagesLocation/myPickUpLocation/myPickUpLocation.vue new file mode 100644 index 0000000..ff9cc17 --- /dev/null +++ b/atguigu-tuan/pagesLocation/myPickUpLocation/myPickUpLocation.vue @@ -0,0 +1,100 @@ + + + + + diff --git a/atguigu-tuan/pagesOrder/confirmOrder/confirmOrder.vue b/atguigu-tuan/pagesOrder/confirmOrder/confirmOrder.vue new file mode 100644 index 0000000..724fd28 --- /dev/null +++ b/atguigu-tuan/pagesOrder/confirmOrder/confirmOrder.vue @@ -0,0 +1,345 @@ + + + + + diff --git a/atguigu-tuan/pagesOrder/getOrderInfo/getOrderInfo.vue b/atguigu-tuan/pagesOrder/getOrderInfo/getOrderInfo.vue new file mode 100644 index 0000000..940e394 --- /dev/null +++ b/atguigu-tuan/pagesOrder/getOrderInfo/getOrderInfo.vue @@ -0,0 +1,187 @@ + + + + + diff --git a/atguigu-tuan/pagesOrder/orderList/orderList.vue b/atguigu-tuan/pagesOrder/orderList/orderList.vue new file mode 100644 index 0000000..19560d4 --- /dev/null +++ b/atguigu-tuan/pagesOrder/orderList/orderList.vue @@ -0,0 +1,341 @@ + + + + + + + diff --git a/atguigu-tuan/pagesSeckill/seckill/seckill.vue b/atguigu-tuan/pagesSeckill/seckill/seckill.vue new file mode 100644 index 0000000..264cda6 --- /dev/null +++ b/atguigu-tuan/pagesSeckill/seckill/seckill.vue @@ -0,0 +1,188 @@ + + + + + diff --git a/atguigu-tuan/static/images/location.png b/atguigu-tuan/static/images/location.png new file mode 100644 index 0000000000000000000000000000000000000000..8324ae9c076a4b355ece3fa8811aa085db37187d GIT binary patch literal 2200 zcmai$=Q|q;1I1&{7`??^ZR-}oRjd}P!Gs_lNkU20G~XD8DA&-|6-)S_Oev{2iHO6 zW2~nIs3Hpf0st6|pTIOt18vAzZYV)B?!GG*|Jh@j-GW<~$-puE0y8$BK8@=IH{*0I zeRjzZ!WGFS$?cjN*!Lob0!5!7a3sVX|5q+A^V1lS3qBO^qIL&HG|tTrAIy zvf9@Fn7cCYM?}qlwie+*;x-|0M_J$(Q7ME7rDV^~G*JjDE=-%77{FnLrZhTI%AQjy zo*73=eZ#cmeTk^PsHkR)MZ$jo9ouTyc>g@@?mE?JjeUkl`hus7%;`;sFA9SWViS#=hq{8-TtRzW9<;q>bEpM&#>j0rrSMN*7ubI&Ar$Bm{|0h6Wh^W zl|+3`>lVF%b#9PXX7WD5(Lnb(1tJH0GKvzyjwx2MR#$swgu9)iuNAY-?chw9DM0#) zEABAH@T?MU{EW)&Gg?VeW+?0#X%4p$CGy73?|75n079*D9nTweF(Mv!zF#78iGkQL zE(hly6B;a&P`jD2Z|c;B3X5EwSF|IuV3j2(pe={blCKe07!oZl{Aa70neSka_E5`D ztY!rl0lp_k_xbS>9QY#oZInL9Solk{Oy`4(JMidek)|1)vXb1_B!P# zMarTZt5IQbqQ-Y_$JiQ*rj&T(-HpL)rey6qR68x~s7wdBWEzZ4nF8>Z{Krl$VN)Nc zSL1N<2e;Eydo~+`g#O57&J3Cv*oF8=59aLxh zz$!xGT|jzspLTnj#L(qgy^722Gx%CHunRW0e0i7e08Mibp{CssH2i>bY(*$%=+EFwA!vdQ>795Qfa#Jq+e zMkRv0d@4?+LH4ATYWP+b^qoiGi-+IC;~w8s7l`|w_qX5vax63;oz(O}n=9}2hsDl4 z%jnQ%@?ZM(i{6JX!22$jyKzv`yNd)VA)FiL4Dgo&KTc^_nk|V1$E(7rr-1K%DD+4P zRSYg7IkS~=q$Y`-RVA5oCz#rEQN z))B;%j&#!&E-b$f_oX;^Lz+MLK91So*%P7JAE`{>3*a9iHl*LQtcwln&o^S|<2>e^ z%{?;6Ur7HyIRPN=vAWn48az0dHBXMz z#GMxaceENfmqml0PP1N^Hw?(HCH!diwUz04`8mJfgje@llVmQx#;8I^cc)nfyM#K^ zLfEXoAp&gjp?%wafqwpCXS064uJLp>vPmQ-$h( z{G!`tefv9hO9y^?5C+N_?Gua&%qj}1Bp7A0Cc9xe_QN|GsCXsmfel-dpiE@q zJ}Njo$9h1W+U|ZYN)I^Aza_zIWk1_rcnNbi)hf(oe90(KSXFhT1KdVRCbH3`q1=08 zgl?a)GlnF;^)UlEu7LR}i3@lJK@wK2~IQ_x3%-Mv(j;5L}h1}DY9<{+|c@1r9qbl$4tM&`EJQf26d&93SV!Y%EsCrqe zEn8J9{ndUI*Uqo+-qCN);qdrpUvtHd$q`vU`H{JXa}QrPD(@8!In_1Qv~{v~o%EYt z25`g#?;U4drZC8Nd>#5QYm=ecqxyCCNEM#7F_-shHLtR`hA~`DpZLPw(|`Q32lA@i zGWfZhFJy`ocH?hno2K8#7x}RxCqu*+L}Lx zwdzPPi0QKy)ZYDg1b1RTb5@d;^xki+=*f@3#jWq5!a(YCPhiuyF!&b&D1SI2gJ*!j z>FB2fRlwX)kA!a7{E=kAs1D+y-<0|*V)5zg={VXEM9Ib*Xid7wAsb6?4lFP~gN<%- zDDw1rHK&LJKdP^nw^URn{s!aY=LHB{q*Mf&mfKbGzkxpbI9w&cIy?!-Dt&!508exb KVO3gok^ch8XgpT{ literal 0 HcmV?d00001 diff --git a/atguigu-tuan/static/images/tabbar/cart-selected.png b/atguigu-tuan/static/images/tabbar/cart-selected.png new file mode 100644 index 0000000000000000000000000000000000000000..cf0e0b97a875e6e36b9b20bca72741cfc6acec7e GIT binary patch literal 2938 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 literal 0 HcmV?d00001 diff --git a/atguigu-tuan/static/images/tabbar/cart.png b/atguigu-tuan/static/images/tabbar/cart.png new file mode 100644 index 0000000000000000000000000000000000000000..e5fc17e3eb97a44f9413255e8dc31d2b241e86c6 GIT binary patch literal 2796 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 A6#xJL literal 0 HcmV?d00001 diff --git a/atguigu-tuan/static/images/tabbar/home.png b/atguigu-tuan/static/images/tabbar/home.png new file mode 100644 index 0000000000000000000000000000000000000000..e104fef1bba13c4d1a44e16cd634015d79dedf2c GIT binary patch literal 1881 zcmV-f2d4OmP)Px+6G=otRCr$PoLy{GMHGO~xwRIJ@j>e!h?3X@x-++^jS~E=iAsnNA56rkU?B)? z1S25^qDJLGG5#PCls^Uhi6$gIh^SFRtP&!qrD138Hf{6;q6X7ojEO1O-D5@WqhDw0&rE91d&B07kO-x1OE zh&TfPE+{khC?YNwLVT2nM$E}$0+DmR8~|R^*-S)R9mm-zg!nf2x$C+!3xz@_A}%R2 zcZKJ9>tnKrJ+0~xIp^xb%q;a?a-gfC6}--zY>pn9t|CbGck!RAbAH zD^__Gkv9d#3RTF!53YTAT| z_iJ=MFQt6a)U$$mQiI4jSCOG|))`V<)2&F$A;#ERL|mK7>CF?pG-ts z5OKD~k(EM-b&0JGQBbbn6xW@1n=Uv;A-b-63lVJw0JRVHi#j;ymQwCY8{jGZqZFLq z0ARk9@(WY87=y?ddk7IX0l+x{;|@EH)0NF;512AKsvgEz1`)St3XW3oxRg?@Srdy9 zh@A6h0pJ;pHJ{}3`G@=a`+rSrX-oy}?d|6d4-aqC6&$s|_dIWDOx35SC570)Io}Qd z3p9pomQt1!mZS#9onNlt0Kk`0$|MIM@egGgV=ajICIH;3aqKB6<#TZzPHP_LybAzS z$_dI(0B~d6f)gteIp=o(z%~H5GGNVL0I*a_`CeKelImrQ%|gVj01({a6aZj$oPtv^ zMAvnfs3lC$86p~NXlPiR&1Ux{bu{hyZEbB+3x$IE6$N)Vu?kK_5X&PK!?Wp+64N-1@DUiRK3MixE-f_@Mj&08_&X&ZrPM=jxv~ zwS>7Spq+~6b?UQmA+GD*PDJXoCs=Tlf3rp_IAtM@a)f`xahyfjYALPhA}Y!IM6}BD zycbXT9|{o>yMz!Wi|g?Y@RWa?^NwPkoZ|DjM@o5HRETE`{=a|=`l&gkvJfi`1`DxL zVw&+5qJ?OHfB_XY5-mgn1PrLKk!T?rAYed+jYJF4009FkY$RHU1_&5XVI$E(G(fBTNA)$ey00Q#GnnsU9p zz3Luh)ugTi*e!@Zd8~{}B%MXY+QFY$~ zfNHip&p(ieHhP|?n$S~|nub`s|M;=Sd+p`XVsnqWjCn&~&Ri*_>Tym*Y8~SKAdq}M zKQXL%h;y#G6CUspJ0PW;nF>Jw)l(g8cB+kQB*k3#d*J68>H2bOYwKkV4Gq%&VvWYe z#z}pBeX0rFxYR7fOeS-U<2Z)`9#5B2W}{HxoWB#eh&eB<2F#j;$QWCIh;RFV9g|XC z8U>&l!x(!E5nuI&PsWXT+Cx(5YVV{S6;dY%EM)1G< zZ6h%Pr%{L4NK8u5L?i;h*9Pn;r^5e2qKdYdx*f|{*&3D;Q{-2oIw{04vo&(Ra}_MC z8;HTqTU{ioj`LSE?|n#{V_iU0f7K%5ec5bQovi;W+SeCMn>KAqV`JkSB5F>XoL_$> zZ#F6BM0KX9n%qO*s^WW2rQ=UeC8B|mk&!(E0|S5h?XKkE)#O=M&$18=d|m$lOj~r0 TADvnP00000NkvXXu0mjf8wg;b literal 0 HcmV?d00001 diff --git a/atguigu-tuan/static/images/tabbar/my-selected.png b/atguigu-tuan/static/images/tabbar/my-selected.png new file mode 100644 index 0000000000000000000000000000000000000000..72ae2203ee0cc36b629d27ff6ce6ee1ec91f3852 GIT binary patch literal 2440 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 N002ovPDHLkV1n_-X>kAm literal 0 HcmV?d00001 diff --git a/atguigu-tuan/static/logo.png b/atguigu-tuan/static/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..665131f9fdae53f743e7fb250bd2e7a79698b6b3 GIT binary patch literal 41821 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 item.skuId === skuId) + return pos === -1 ? false : true; + } + }, + // 获取单个商品的购买数量 + getProductSkuNum(state) { + return function (skuId) { + const index = state.cartList.findIndex(item => item.skuId === skuId); + return index !== -1 ? state.cartList[index].skuNum : 0; + } + }, + // 获取购物车商品信息列表 + getCartInfoList(state) { + return state.activityCartList.carInfoVoList + }, + // 是否显示包含多个商品的内容 + showMultiCheckbox(state) { + return function (index) { + return state.activityCartList.carInfoVoList[index].cartInfoList.length > 1 + } + }, + // 确认多个商品项是否为选中 + getMultiCheckCart(state) { + return function (index) { + return state.activityCartList.carInfoVoList[index].cartInfoList.every(item => item.isChecked === 1); + } + }, + // 获取多个商品项的ids + getMultiCheckedIds(state) { + return function (index) { + let ids = [] + state.activityCartList.carInfoVoList[index].cartInfoList.forEach(item => ids.push(item.skuId)); + return ids.toString(); + } + }, + // 判断是否全选 + isAllSelected(state) { + let isAllSelected = true; + state.activityCartList.carInfoVoList && state.activityCartList.carInfoVoList + .forEach(carInfoItem => { + carInfoItem.cartInfoList.forEach(cartInfoItem => { + if (cartInfoItem.isChecked === 0) { + isAllSelected = false; + return false; + } + }) + }) + return isAllSelected; + }, + // 获取购物车价格信息 + getCartPriceInfo(state) { + if (!state.activityCartList.totalAmount) { + return { + couponReduceAmount: 0, + originalTotalAmount: 0, + totalAmount: 0 + } + } + + return { + couponReduceAmount: state.activityCartList.couponReduceAmount, + originalTotalAmount: state.activityCartList.originalTotalAmount, + totalAmount: state.activityCartList.totalAmount + } + }, + // 确认选中购物车的数量 + getSelectedCount(state) { + let count = 0; + state.activityCartList.carInfoVoList && state.activityCartList.carInfoVoList + .forEach(carInfoItem => { + carInfoItem.cartInfoList.forEach(cartInfoItem => { + if (cartInfoItem.isChecked === 1) { + count += cartInfoItem.skuNum; + } + }) + }) + return count; + }, + // 获取购物车优惠券信息列表 + getCartCouponInfoList(state) { + return state.activityCartList.couponInfoList + }, +} + +const mutations = { + // 添加到购物车 + addShopMutation(state, payload) { + state.cartList.push(payload); + }, + // 获取不带活动的购物车列表 + getCartListMutation(state, payload) { + state.cartList = payload; + }, + // 修改购物车数量 + changeSkuNumMutation(state, payload) { + // skuId为商品id + // value为+1或者-1,操作的递增值 + // currentBuyNum为number-box组件当前商品购物车的操作值 + const { + skuId, + value, + currentBuyNum + } = payload + const index = state.cartList.findIndex(item => item.skuId === skuId); + // 如果当前购买数量小于1则删除该商品 + if (currentBuyNum < 1) { + state.cartList.splice(index, 1) + } else { + state.cartList[index].skuNum += value + } + }, + // 删除购物车 + deleteShopMutation(state, payload) { + // 删除cartList中的数据 + const cartListIndex = state.cartList.findIndex(item => item.skuId === payload); + state.cartList.splice(cartListIndex, 1) + }, + // 获取带活动的购物车列表 + getActivityCartListMutation(state, payload) { + state.activityCartList = payload + }, + +} +const actions = { + // 添加到购物车 + async addShopAction({ + commit, + state + }, payload) { + // 给对象添加响应式数据属性 + Vue.set(payload, 'skuNum', 1) + Vue.set(payload, 'skuId', payload.id) + Vue.set(payload, 'isChecked', 1) + await this._vm.$u.api.getAddToCart({ + skuId: payload.id, + skuNum: payload.skuNum, + }) + commit('addShopMutation', payload) + }, + // 获取不带活动的购物车列表 + async getCartListAction({ + commit + }) { + let result = await this._vm.$u.api.getCartList() + commit('getCartListMutation', result) + }, + // 修改购物车数量 + async changeSkuNumAction({ + commit, + dispatch + }, payload) { + const { + skuId, + value, + currentBuyNum, + isCart + } = payload; + // 如果当前购买的数量小于1,则需要将该商品从购物车中删除,否则进行购物车数量的修改 + if (currentBuyNum < 1) { + dispatch('deleteShopAction', payload) + } else { + await this._vm.$u.api.getAddToCart({ + skuId: skuId, + skuNum: value, + }) + commit('changeSkuNumMutation', payload) + } + + // 通过isCart判断是否是在购物车里进行购物车数量的改变, + // 如果是在购物车里进行数量变化,则还需要获取带活动的购物车列表 + if (isCart) dispatch('getActivityCartListAction') + + }, + // 删除购物车 + async deleteShopAction({ + commit, + dispatch + }, payload) { + const { + skuId, + value, + currentBuyNum, + isCart + } = payload; + await this._vm.$u.api.deleteCart(skuId); + + // 删除时如果是在购物车列表操作,则需要重新获取数据 + if (isCart) await dispatch('getActivityCartListAction') + await commit('deleteShopMutation', skuId) + }, + // 获取带活动的购物车列表 + async getActivityCartListAction({ + commit + }, payload) { + let showLoading = false; + if (payload) showLoading = true + + let result = await this._vm.$u.api.getActivityCartList({ + showLoading + }) + commit('getActivityCartListMutation', result) + }, + // 切换购物车商品的选中状态 + async changeCheckCartAction({ + commit, + dispatch + }, payload) { + let result = await this._vm.$u.api.getCheckCart(payload) + dispatch('getActivityCartListAction') + }, + // 对指定的多个商品进行选择/反选 + async changeMultiCheckedCartAction({ + commit, + dispatch + }, payload) { + let result = await this._vm.$u.api.postBatchCheckCart(payload) + dispatch('getActivityCartListAction') + }, + // 对所有购物车商品进行全选/反选 + async changeAllCheckCartAction({ + commit, + dispatch + }, payload) { + let result = await this._vm.$u.api.getCheckAllCart(payload) + dispatch('getActivityCartListAction') + }, +}; + +export default { + namespaced: true, + state, + mutations, + actions, + getters, +}; diff --git a/atguigu-tuan/store/modules/categories.js b/atguigu-tuan/store/modules/categories.js new file mode 100644 index 0000000..ddfb1c5 --- /dev/null +++ b/atguigu-tuan/store/modules/categories.js @@ -0,0 +1,27 @@ +const state = { + categories: [] +}; +const getters = {}; +const mutations = { + updateCategoriesMutation(state, payload) { + state.categories = payload; + } +}; +const actions = { + async getCategoriesAction({ + commit + }) { + return new Promise(async reslove => { + let result = await this._vm.$u.api.getCategories() + commit('updateCategoriesMutation', result) + reslove(); + }) + } +}; +export default { + namespaced: true, + state, + mutations, + actions, + getters, +}; diff --git a/atguigu-tuan/store/modules/index.js b/atguigu-tuan/store/modules/index.js new file mode 100644 index 0000000..87ee1c4 --- /dev/null +++ b/atguigu-tuan/store/modules/index.js @@ -0,0 +1,59 @@ +const state = { + home: {} +}; +const getters = { + // 商品分类 + categoryList(state) { + return state.home.categoryList || []; + }, + // 热销商品 + hotSkuList(state) { + return state.home.hotSkuList || []; + }, + // 新人专享 + newPersonSkuInfoList(state) { + return state.home.newPersonSkuInfoList || []; + }, + // 提货点信息 + leaderAddressVo(state) { + return state.home.leaderAddressVo || {} + }, + // 秒杀时间 + seckillTime(state) { + return state.home.seckillTime || {} + }, + // 秒杀商品 + seckillSkuVoList(state) { + return state.home.seckillSkuVoList || [] + } +}; +const mutations = { + // 获取首页数据 + getHomeIndexMutation(state, payload) { + state.home = payload + } +}; +const actions = { + async getHomeIndexAction({ + commit, + dispatch + }) { + // 直接用this.$u.api在仓库中是无法调用到对应的接口的,因为this对象指向不同 + // 仓库中的this指向的是Store,所以需要通过this._vm来找到对应的Vue实例 + let result = await this._vm.$u.api.getHomeIndex() + await commit('getHomeIndexMutation', result) + // 利用root属性将派发pickUpLocation模块中的action动作 + dispatch('pickUpLocationModule/changeLeaderAddressVoAction', result.leaderAddressVo, { + root: true + }) + + dispatch('cartModule/getCartListAction', {}, {root: true}) + } +}; +export default { + namespaced: true, + state, + mutations, + actions, + getters, +}; diff --git a/atguigu-tuan/store/modules/order.js b/atguigu-tuan/store/modules/order.js new file mode 100644 index 0000000..d6b9212 --- /dev/null +++ b/atguigu-tuan/store/modules/order.js @@ -0,0 +1,90 @@ +import Vue from 'vue' + +const state = { + order: {} +}; + +const getters = { + // 获取订单商品信息列表 + getCartInfoList(state) { + return state.order.carInfoVoList + }, + // 获取提货点信息 + getLeaderAddressVo(state) { + return state.order.leaderAddressVo + }, + // 确认选中购物车的数量 + getSelectedCount(state) { + let count = 0; + state.order.carInfoVoList && state.order.carInfoVoList + .forEach(carInfoItem => { + carInfoItem.cartInfoList.forEach(cartInfoItem => { + if (cartInfoItem.isChecked === 1) { + count += cartInfoItem.skuNum; + } + }) + }) + return count; + }, + // 获取购物车价格信息 + getCartPriceInfo(state) { + if (!state.order.totalAmount) { + return { + couponReduceAmount: 0, + originalTotalAmount: 0, + totalAmount: 0, + activityReduceAmount: 0 + } + } + + return { + couponReduceAmount: state.order.couponReduceAmount, + originalTotalAmount: state.order.originalTotalAmount, + totalAmount: state.order.totalAmount, + activityReduceAmount: state.order.activityReduceAmount + } + }, + // 是否显示包含多个商品的内容 + showMultiCheckbox(state) { + return function (index) { + return state.order.carInfoVoList[index].cartInfoList.length > 1 + } + }, + // 获取订单优惠券信息列表 + getCartCouponInfoList(state) { + const couponInfoList = state.order.couponInfoList || [] + if (couponInfoList) { + couponInfoList.forEach(( + item) => { + Vue.set(item, 'selected', item.isOptimal === 1 && item.isSelect === 1) + + }) + } + return couponInfoList + }, +} + +const mutations = { + // 获取确认订单 + getConfirmOrderMutation(state, payload) { + state.order = payload + } +} + +const actions = { + // 获取确认订单 + async getConfirmOrderAction({ + commit + }) { + let result = await this._vm.$u.api.getConfirmOrder() + commit('getConfirmOrderMutation', result) + } +} + +export default { + namespaced: true, + state, + mutations, + actions, + getters, +}; diff --git a/atguigu-tuan/store/modules/pickUpLocation.js b/atguigu-tuan/store/modules/pickUpLocation.js new file mode 100644 index 0000000..64226da --- /dev/null +++ b/atguigu-tuan/store/modules/pickUpLocation.js @@ -0,0 +1,63 @@ +const state = { + leaderAddressVo: {}, // 当前提货点 + currentPickUpArea: '', // 当前提货点区域 + findAllList: [], // 指定区域的提货点列表 +}; +const getters = { + checkIsCurrent(state, payload) { + return function (id) { + if (state.leaderAddressVo) { + return state.leaderAddressVo.leaderId === id; + } else { + return false + } + } + }, +}; +const mutations = { + getSysRegionFindAllListMutation(state, payload) { + state.findAllList = payload + }, + setCurrentPickUpAreaMutation(state, payload) { + state.currentPickUpArea = payload.regionName + }, + changeCurrentPickUpAreaMutation(state, payload) { + state.currentPickUpArea = payload[0].regionName + }, + changeLeaderAddressVoMutation(state, payload) { + state.leaderAddressVo = payload; + } +}; +const actions = { + async getSysRegionFindAllListAction({ + commit + }) { + let result = await this._vm.$u.api.getSysRegionFindAllList(); + await commit('getSysRegionFindAllListMutation', result) + await commit('changeCurrentPickUpAreaMutation', result) + }, + changeLeaderAddressVoAction({ + commit, + dispatch + }, payload) { + commit('changeLeaderAddressVoMutation', payload) + }, + async selectLeaderAddressVoAction({ + commit, + dispatch + }, payload) { + let result = await this._vm.$u.api.getSelectLeader(payload); + // 从首页设置当前提货点 + dispatch('indexModule/getHomeIndexAction', {}, { + root: true + }) + } +}; + +export default { + namespaced: true, + state, + mutations, + actions, + getters, +}; diff --git a/atguigu-tuan/uni.scss b/atguigu-tuan/uni.scss new file mode 100644 index 0000000..54df989 --- /dev/null +++ b/atguigu-tuan/uni.scss @@ -0,0 +1,78 @@ +/** + * 这里是uni-app内置的常用样式变量 + * + * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 + * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App + * + */ + +/** + * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 + * + * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 + */ + +@import 'uview-ui/theme.scss'; + +/* 颜色变量 */ + +/* 行为相关颜色 */ +$uni-color-primary: #007aff; +$uni-color-success: #4cd964; +$uni-color-warning: #f0ad4e; +$uni-color-error: #dd524d; + +/* 文字基本颜色 */ +$uni-text-color: #333; //基本色 +$uni-text-color-inverse: #fff; //反色 +$uni-text-color-grey: #999; //辅助灰色,如加载更多的提示信息 +$uni-text-color-placeholder: #808080; +$uni-text-color-disable: #c0c0c0; + +/* 背景颜色 */ +$uni-bg-color: #ffffff; +$uni-bg-color-grey: #f8f8f8; +$uni-bg-color-hover: #f1f1f1; //点击状态颜色 +$uni-bg-color-mask: rgba(0, 0, 0, 0.4); //遮罩颜色 + +/* 边框颜色 */ +$uni-border-color: #c8c7cc; + +/* 尺寸变量 */ + +/* 文字尺寸 */ +$uni-font-size-sm: 12px; +$uni-font-size-base: 14px; +$uni-font-size-lg: 16; + +/* 图片尺寸 */ +$uni-img-size-sm: 20px; +$uni-img-size-base: 26px; +$uni-img-size-lg: 40px; + +/* Border Radius */ +$uni-border-radius-sm: 2px; +$uni-border-radius-base: 3px; +$uni-border-radius-lg: 6px; +$uni-border-radius-circle: 50%; + +/* 水平间距 */ +$uni-spacing-row-sm: 5px; +$uni-spacing-row-base: 10px; +$uni-spacing-row-lg: 15px; + +/* 垂直间距 */ +$uni-spacing-col-sm: 4px; +$uni-spacing-col-base: 8px; +$uni-spacing-col-lg: 12px; + +/* 透明度 */ +$uni-opacity-disabled: 0.3; // 组件禁用态的透明度 + +/* 文章场景相关 */ +$uni-color-title: #2C405A; // 文章标题颜色 +$uni-font-size-title: 20px; +$uni-color-subtitle: #555555; // 二级标题颜色 +$uni-font-size-subtitle: 26px; +$uni-color-paragraph: #3F536E; // 文章段落颜色 +$uni-font-size-paragraph: 15px; diff --git a/atguigu-tuan/yarn.lock b/atguigu-tuan/yarn.lock new file mode 100644 index 0000000..c493869 --- /dev/null +++ b/atguigu-tuan/yarn.lock @@ -0,0 +1,18 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +dayjs@^1.10.7: + version "1.10.7" + resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.10.7.tgz#2cf5f91add28116748440866a0a1d26f3a6ce468" + integrity sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig== + +uview-ui@^1.8.4: + version "1.8.4" + resolved "https://r.cnpmjs.org/uview-ui/download/uview-ui-1.8.4.tgz#e32bbf2379421d319022e324e1cb7b5387d3bd44" + integrity sha1-4yu/I3lCHTGQIuMk4ct7U4fTvUQ= + +vuex@^3.6.2: + version "3.6.2" + resolved "https://registry.npmjs.org/vuex/-/vuex-3.6.2.tgz#236bc086a870c3ae79946f107f16de59d5895e71" + integrity sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw==