diff --git a/pages.json b/pages.json index 48bd372..afb3b9f 100644 --- a/pages.json +++ b/pages.json @@ -22,6 +22,7 @@ { "path": "pages/user/user", "style": { + "navigationStyle": "custom", "navigationBarTitleText": "我的" } } @@ -81,33 +82,65 @@ } }, { - "path" : "ticketBooking/ticketBooking", - "style" : - { - "navigationBarTitleText" : "门票预订", - "navigationStyle":"custom" + "path": "eventCalendar/eventCalendar", + "style": { + "navigationBarTitleText": "活动日历" + } + }, + { + "path": "service/service", + "style": { + "navigationBarTitleText": "投诉举报" + } + }, + { + "path": "user/profile", + "style": { + "navigationBarTitleText": "个人信息" + } + }, + { + "path": "user/travelerList", + "style": { + "navigationBarTitleText": "常用信息" + } + }, + { + "path": "ticketBooking/ticketBooking", + "style": { + "navigationBarTitleText": "门票预订", + "navigationStyle": "custom" + } + }, + { + "path": "ticketBooking/detail", + "style": { + "navigationBarTitleText": "景区详情" + } + }, + { + "path": "ticketBooking/order", + "style": { + "navigationBarTitleText": "门票预订" } }, { - "path" : "ticketBooking/detail", - "style" : - { - "navigationBarTitleText" : "景区详情" + "path": "hotelHomestay/hotelHomestay", + "style": { + "navigationBarTitleText": "酒店民宿", + "navigationStyle": "custom" } }, { - "path" : "ticketBooking/order", - "style" : - { - "navigationBarTitleText" : "门票预订" + "path": "food/taocanDetail", + "style": { + "navigationBarTitleText": "套餐详情" } }, { - "path" : "hotelHomestay/hotelHomestay", - "style" : - { - "navigationBarTitleText" : "酒店民宿", - "navigationStyle":"custom" + "path": "food/foodOrder", + "style": { + "navigationBarTitleText": "订单填写" } } ] diff --git a/pages/index/index.vue b/pages/index/index.vue index 7acffb8..3cedde0 100644 --- a/pages/index/index.vue +++ b/pages/index/index.vue @@ -20,7 +20,7 @@ - 通知通知通知通知通知通知通知通知通知知通知知通知知通知 + {{notice}} @@ -58,7 +58,7 @@ - 今日共有27个活动 >>> + 今日共有{{eventCalendarNum}}个活动 >>> 活动日历 @@ -80,7 +80,7 @@ - 热门 + {{item.goods.image_tag}} @@ -103,7 +103,7 @@ - 人气推荐 + {{item.goods.image_tag}} {{item.goods.low_money / 100}} {{item.goods.title}} @@ -122,7 +122,7 @@ - 近期上新 + {{item.image_tag}} {{item.title}} @@ -196,7 +196,7 @@ { img: 'https://static.ticket.sz-trip.com/yandu/images/index/jdmp.png', text: '活动日历', - path: '' + path: '/subPackages/eventCalendar/eventCalendar' } ], scenic: {}, @@ -206,7 +206,9 @@ lineList: [], foodList: [], strategyList: [], - showMore: true + showMore: true, + notice: '', + eventCalendarNum: 0 } }, onReady() { @@ -223,8 +225,22 @@ this.getLineList() this.getFoodList() this.getArticleByType() + this.getLatest() + this.getEventCalendarNum() }, methods: { + // 获取活动日历数量 + getEventCalendarNum() { + this.Post({},'/api/activity/getActivityCalendarCount').then(res => { + this.eventCalendarNum = res.data.count + }) + }, + // 公告 + getLatest() { + this.Post({},'/api/anncmnt/getLatest').then(res => { + this.notice = res.data.title + }) + }, // 顶部banner getTopBanner() { this.Post({ @@ -569,6 +585,7 @@ font-size: 27rpx; color: #FFFFFF; overflow-x: auto; + white-space: nowrap; } .hot::-webkit-scrollbar { display: none; @@ -647,6 +664,7 @@ background: #71B580; border-radius: 0rpx 20rpx 0rpx 20rpx; overflow-x: auto; + white-space: nowrap; } .recommend::-webkit-scrollbar { display: none; @@ -709,6 +727,7 @@ font-size: 27rpx; color: #FFFFFF; overflow-x: auto; + white-space: nowrap; } .title-tag::-webkit-scrollbar { display: none; diff --git a/pages/user/user.vue b/pages/user/user.vue index 02409e3..274b63f 100644 --- a/pages/user/user.vue +++ b/pages/user/user.vue @@ -1,8 +1,575 @@ - \ No newline at end of file diff --git a/static/js/CommonFunction.js b/static/js/CommonFunction.js index 1c51388..cb001e9 100644 --- a/static/js/CommonFunction.js +++ b/static/js/CommonFunction.js @@ -62,6 +62,7 @@ Vue.prototype.IsMail = code => { // 图片显示判断 Vue.prototype.showImg = img => { + if(!img) return; if (img.indexOf('https://') != -1 || img.indexOf('http://') != -1) { return img; } else { diff --git a/static/js/mmmm-image-tools/index.js b/static/js/mmmm-image-tools/index.js new file mode 100644 index 0000000..acf40bc --- /dev/null +++ b/static/js/mmmm-image-tools/index.js @@ -0,0 +1,196 @@ +function getLocalFilePath(path) { + if (path.indexOf('_www') === 0 || path.indexOf('_doc') === 0 || path.indexOf('_documents') === 0 || path.indexOf('_downloads') === 0) { + return path + } + if (path.indexOf('file://') === 0) { + return path + } + if (path.indexOf('/storage/emulated/0/') === 0) { + return path + } + if (path.indexOf('/') === 0) { + var localFilePath = plus.io.convertAbsoluteFileSystem(path) + if (localFilePath !== path) { + return localFilePath + } else { + path = path.substr(1) + } + } + return '_www/' + path +} + +function dataUrlToBase64(str) { + var array = str.split(',') + return array[array.length - 1] +} + +var index = 0 +function getNewFileId() { + return Date.now() + String(index++) +} + +function biggerThan(v1, v2) { + var v1Array = v1.split('.') + var v2Array = v2.split('.') + var update = false + for (var index = 0; index < v2Array.length; index++) { + var diff = v1Array[index] - v2Array[index] + if (diff !== 0) { + update = diff > 0 + break + } + } + return update +} + +export function pathToBase64(path) { + return new Promise(function(resolve, reject) { + if (typeof window === 'object' && 'document' in window) { + if (typeof FileReader === 'function') { + var xhr = new XMLHttpRequest() + xhr.open('GET', path, true) + xhr.responseType = 'blob' + xhr.onload = function() { + if (this.status === 200) { + let fileReader = new FileReader() + fileReader.onload = function(e) { + resolve(e.target.result) + } + fileReader.onerror = reject + fileReader.readAsDataURL(this.response) + } + } + xhr.onerror = reject + xhr.send() + return + } + var canvas = document.createElement('canvas') + var c2x = canvas.getContext('2d') + var img = new Image + img.onload = function() { + canvas.width = img.width + canvas.height = img.height + c2x.drawImage(img, 0, 0) + resolve(canvas.toDataURL()) + canvas.height = canvas.width = 0 + } + img.onerror = reject + img.src = path + return + } + if (typeof plus === 'object') { + plus.io.resolveLocalFileSystemURL(getLocalFilePath(path), function(entry) { + entry.file(function(file) { + var fileReader = new plus.io.FileReader() + fileReader.onload = function(data) { + resolve(data.target.result) + } + fileReader.onerror = function(error) { + reject(error) + } + fileReader.readAsDataURL(file) + }, function(error) { + reject(error) + }) + }, function(error) { + reject(error) + }) + return + } + if (typeof wx === 'object' && wx.canIUse('getFileSystemManager')) { + wx.getFileSystemManager().readFile({ + filePath: path, + encoding: 'base64', + success: function(res) { + resolve('data:image/png;base64,' + res.data) + }, + fail: function(error) { + reject(error) + } + }) + return + } + reject(new Error('not support')) + }) +} + +export function base64ToPath(base64) { + return new Promise(function(resolve, reject) { + if (typeof window === 'object' && 'document' in window) { + base64 = base64.split(',') + var type = base64[0].match(/:(.*?);/)[1] + var str = atob(base64[1]) + var n = str.length + var array = new Uint8Array(n) + while (n--) { + array[n] = str.charCodeAt(n) + } + return resolve((window.URL || window.webkitURL).createObjectURL(new Blob([array], { type: type }))) + } + var extName = base64.split(',')[0].match(/data\:\S+\/(\S+);/) + if (extName) { + extName = extName[1] + } else { + reject(new Error('base64 error')) + } + var fileName = getNewFileId() + '.' + extName + if (typeof plus === 'object') { + var basePath = '_doc' + var dirPath = 'uniapp_temp' + var filePath = basePath + '/' + dirPath + '/' + fileName + if (!biggerThan(plus.os.name === 'Android' ? '1.9.9.80627' : '1.9.9.80472', plus.runtime.innerVersion)) { + plus.io.resolveLocalFileSystemURL(basePath, function(entry) { + entry.getDirectory(dirPath, { + create: true, + exclusive: false, + }, function(entry) { + entry.getFile(fileName, { + create: true, + exclusive: false, + }, function(entry) { + entry.createWriter(function(writer) { + writer.onwrite = function() { + resolve(filePath) + } + writer.onerror = reject + writer.seek(0) + writer.writeAsBinary(dataUrlToBase64(base64)) + }, reject) + }, reject) + }, reject) + }, reject) + return + } + var bitmap = new plus.nativeObj.Bitmap(fileName) + bitmap.loadBase64Data(base64, function() { + bitmap.save(filePath, {}, function() { + bitmap.clear() + resolve(filePath) + }, function(error) { + bitmap.clear() + reject(error) + }) + }, function(error) { + bitmap.clear() + reject(error) + }) + return + } + if (typeof wx === 'object' && wx.canIUse('getFileSystemManager')) { + var filePath = wx.env.USER_DATA_PATH + '/' + fileName + wx.getFileSystemManager().writeFile({ + filePath: filePath, + data: dataUrlToBase64(base64), + encoding: 'base64', + success: function() { + resolve(filePath) + }, + fail: function(error) { + reject(error) + } + }) + return + } + reject(new Error('not support')) + }) +} \ No newline at end of file diff --git a/static/js/mmmm-image-tools/package.json b/static/js/mmmm-image-tools/package.json new file mode 100644 index 0000000..e8b9c0a --- /dev/null +++ b/static/js/mmmm-image-tools/package.json @@ -0,0 +1,11 @@ +{ + "id": "mmmm-image-tools", + "name": "image-tools", + "version": "1.4.0", + "description": "图像转换工具,可用于图像和base64的转换", + "keywords": [ + "base64", + "保存", + "图像" + ] +} \ No newline at end of file diff --git a/static/js/request.js b/static/js/request.js index 71ae807..e71d867 100644 --- a/static/js/request.js +++ b/static/js/request.js @@ -1,7 +1,7 @@ import Vue from 'vue' import store from '@/store' -let NEWAPIURL = 'https://tongli.sz-trip.com/' +let NEWAPIURL = 'https://tongli.sz-trip.com' Vue.prototype.Post = (params, apiurl) => { if (uni.getStorageSync('userInfo') && JSON.parse(uni.getStorageSync('userInfo')).token) params.token = JSON.parse(uni.getStorageSync('userInfo')).token diff --git a/subPackages/eventCalendar/eventCalendar.vue b/subPackages/eventCalendar/eventCalendar.vue new file mode 100644 index 0000000..7de40f2 --- /dev/null +++ b/subPackages/eventCalendar/eventCalendar.vue @@ -0,0 +1,593 @@ + + + + + \ No newline at end of file diff --git a/subPackages/food/foodDetail.vue b/subPackages/food/foodDetail.vue index 0803693..2fbc3b7 100644 --- a/subPackages/food/foodDetail.vue +++ b/subPackages/food/foodDetail.vue @@ -1,5 +1,5 @@ @@ -32,27 +93,13 @@ id: null, info: null, sku: [], - productIndex: 0, - businessInfo: [], isCollect: 0, - showLength: 0, - buyNum: 1, - reserve_content: null, - // 主要内容列表 - navsList: [ - { name: "产品特色",id:'cpts' }, - { name: "费用说明",id:'fysm' }, - { name: "预订须知",id:'ydxz' }, - { name: "游客点评",id:'comment' } - ], - navIndex:0, //导航栏选中下标 - commentList: [], - commentNum: '' }; }, onLoad(option) { this.id = option.id; this.getDetail(); + this.getSpecificationsByGoodsId() }, methods: { getDetail() { @@ -77,7 +124,7 @@ // 收藏 collect() { this.Post({ - type: 3, + type: 16, id: this.id }, '/api/scenic/collect' @@ -94,9 +141,7 @@ }); }, order(item) { - let goods = this.sku[this.productIndex] - goods.buyNum = this.buyNum - uni.setStorageSync('order', JSON.stringify(goods)); //规格 + uni.setStorageSync('order', JSON.stringify(item)); //规格 uni.setStorageSync('info', JSON.stringify(this.info)); //商品 uni.navigateTo({ url: '/subPackages/oneplus/oneplusOrder' @@ -113,25 +158,8 @@ .bg { min-height: 100vh; overflow-x: hidden; - background: #f2f4f7; - padding-bottom: 210rpx; - } - - view { - box-sizing: border-box; - } - - button { - margin: 0; - padding: 0; - outline: none; - border-radius: 0; - background-color: transparent; - line-height: inherit; - } - - button::after { - border: none; + background: #F7F7F7; + padding-bottom: 50rpx; } .swipe-box { @@ -170,549 +198,183 @@ } } - .price-box1 { - padding: 24rpx 30rpx; - } - - .price-box { - z-index: 9; + .box { + padding: 0 26.67rpx; + margin-top: -26rpx; position: relative; - margin-top: -20rpx; - width: 750rpx; - background: #ffffff; - border-radius: 20rpx; - - - .price-zan { - display: flex; - align-items: center; - justify-content: space-between; - - .price { - display: flex; - - .present-price { - font-size: 42rpx; - font-family: PingFang SC; - font-weight: 400; - color: rgba(248, 74, 86, 1); - - &:before { - content: '¥'; - display: inline-block; - font-size: 26rpx; - } - - &:after { - content: '起'; - display: inline-block; - font-size: 24rpx; - font-family: PingFangSC; - font-weight: 400; - color: #8D8D8D; - } - } - } - } - - .tag { - margin-bottom: 40.67rpx; - margin-top: 20rpx; - display: flex; - align-items: center; - - .tag-item { - - background: rgba(254, 180, 25, .14); - border-radius: 18rpx; - margin-right: 18rpx; - font-size: 24rpx; - font-family: PingFangSC; - font-weight: 500; - color: #FEB419; - padding: 0 16rpx; - } - } - - .title { - font-size: 30rpx; - font-family: PingFangSC-Medium, PingFang SC; - font-weight: bold; - color: #000000; - margin-top: 20rpx; - } } - - .notice { - padding: 40rpx 30rpx; - width: 710rpx; - - background: #ffffff; - border-radius: 16rpx; - margin: 0 auto; - margin-top: 20rpx; - - .notice-title { - font-size: 36rpx; - font-family: PingFangSC-Medium, PingFang SC; - font-weight: 500; - color: #000000; - margin-bottom: 40rpx; - } - } - - .tab { - width: 750rpx; - height: 88rpx; - background: #ffffff; - box-shadow: 0px 1rpx 0px 0px rgba(227, 229, 232, 1); + + .top-box { + width: 697rpx; + height: 267rpx; + background: #FFFFFF; + border-radius: 20rpx; + padding: 22rpx 26.67rpx 39rpx 25rpx; display: flex; - align-items: center; - justify-content: space-between; - padding: 0 32rpx; - position: fixed; - top: 0; - - .tab-item { - height: 88rpx; - position: relative; - line-height: 88rpx; - - .tab-text { - font-size: 30rpx; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #393b3e; - } - - .act-text { - font-size: 30rpx; - font-family: PingFangSC-Medium, PingFang SC; - font-weight: 500; - color: #000000; - } - - .tab-line { - width: 60rpx; - height: 6rpx; - background: #08c59b; - border-radius: 3rpx; - position: absolute; - bottom: 0; - left: 50%; - transform: translate(-30rpx, 0); - } - } - } - - .more { - width: 100%; - height: 93rpx; - line-height: 93rpx; - text-align: center; - border-top: solid 1rpx rgba(227, 229, 232, 1); - font-size: 26rpx; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: 400; - color: #4D526C; - margin-top: 50rpx; + flex-direction: column; + justify-content: space-between; } - - .xzPopup { - width: 750rpx; - padding: 33rpx 26rpx 20rpx; - box-sizing: border-box; - background-color: #FFFFFF; - position: relative; - max-height: 70vh; - overflow-y: auto; - - view { - padding: 0 20rpx; - box-sizing: border-box; - margin-top: 35rpx; - } - - img { - width: 32rpx; - height: 32rpx; - position: absolute; - top: 33rpx; - right: 27rpx; - } + + .title { + width: 550rpx; + font-family: PingFang SC; + font-weight: 500; + font-size: 31rpx; + color: #000000; + margin: 3rpx 0 0 2rpx; } - - .comment { - font-size: 24rpx; - font-family: PingFangSC-Regular, PingFang SC; - font-weight: bold; - color: #6B0500; - margin-top: 28rpx; + + .collect image { + width: 48rpx; + height: 48rpx; } - - .btn-list { - position: fixed; - bottom: 0; - width: 750rpx; - height: 180rpx; - background: #FFFFFF; - box-shadow: 0rpx 0rpx 16rpx 0rpx rgba(6, 0, 1, 0.1); + + .line-style { display: flex; justify-content: space-between; - padding: 30rpx 50rpx 0 50rpx; - - .left-box { - display: flex; - align-items: flex-start; - - .img-box { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - margin-right: 64rpx; - - image { - width: 48rpx; - height: 48rpx; - } - - .text { - font-size: 24rpx; - font-family: PingFangSC; - font-weight: 400; - color: #666666; - } - - } - } - - .btn-buy { - width: 254rpx; - height: 78rpx; - background: linear-gradient(90deg, #F84A56, #FF9834); - border-radius: 40rpx; - text-align: center; - line-height: 78rpx; - font-size: 32rpx; - font-family: PingFangSC; - font-weight: 500; - color: #FFFFFF; - } - } - - .popup-content { - background-color: white; - padding: 0rpx 39rpx 51rpx 39rpx; - height: auto; - border-radius: 20rpx 20rpx 0 0 ; - } - - .bottom-productImg { - display: flex; - margin-bottom: 23rpx; - } - - .bottom-productImg img { - width: 218rpx; - height: 179rpx; - background: #666666; - border-radius: 13rpx; - } - - .right-content { - margin: 10rpx 0 0 41rpx; - } - - .bottom-productPrice { - font-size: 40rpx; - color: #FC524B; - &:before{ - content: "¥"; - font-size: 26rpx; - } + font-family: PingFang; + font-weight: 500; + font-size: 23rpx; + color: #000000; } - - .bottom-content { - width: 331rpx; + + .top-info { + font-family: PingFang; + font-weight: 500; font-size: 27rpx; - font-family: PingFang SC; - font-weight: 400; - color: #666666; - } - - .botProduct { - width: 320rpx; - // height: 78rpx; - border-radius: 13rpx; - background-color: #F5F5F5; - font-size: 29rpx; - font-family: PingFang SC; - font-weight: 400; - color: #333333; - line-height: 78rpx; - text-align: center; - margin-bottom: 25rpx; - display: inline-block; + color: #000000; } - - .botProduct:nth-child(even) { - margin-right: 30rpx; + + .left-icon { + width: 26.67rpx; + height: 26.67rpx; + margin-right: 8.67rpx; } - - .botProducts { - // border: 1rpx solid #00AAFF; - background-color:rgba(254, 180, 25, 1); - color: rgba(0, 0, 0, 1); + + .right-icon { + width: 30.67rpx; + height: 30.67rpx; } - - .buy-num { - font-size: 29rpx; - font-family: PingFang SC; - font-weight: 400; - color: #333333; - // border-top: 1rpx solid #CCCCCC; - padding: 39rpx 0; + + .flex-between { display: flex; - align-items: center; justify-content: space-between; + align-items: center; } - - .buy-num .number-btn { - display: flex; - } - - .buy-num .number-btn view { + + .phone, .address { display: flex; - justify-content: center; align-items: center; - width: 69rpx; - height: 69rpx; - border: 1rpx solid #CCCCCC; - border-radius: 7rpx; } - - .buy-num .number-btn>view text { - font-size: 46rpx; + + .box-title { + margin: 52rpx 0 26rpx 12rpx; + font-family: PingFang; + font-weight: bold; + font-size: 37rpx; + color: #000000; } - - .buy-btn { - width: 670rpx; - height: 78rpx; - text-align: center; - line-height: 78rpx; - background: linear-gradient(90deg, #F84A56, #FF9834); - border-radius: 40rpx; - - font-size: 34rpx; - font-family: PingFangSC; - font-weight: 500; - color: #FFFFFF; + + .item { + margin-bottom: 33.33rpx; + width: 697rpx; + height: 167rpx; + background: #FFFFFF; + border-radius: 13rpx; + padding: 6.67rpx 24rpx 6.67rpx 6.67rpx; + display: flex; } - .btn-box{ - width: 750rpx; - height: 151rpx; - background: #FFFFFF; - box-shadow: 0rpx 0rpx 16rpx 0rpx rgba(6,0,1,0.1); - display: flex; - align-items: center; - justify-content: center; + + .img { + width: 161rpx; + height: 153rpx; + background: #87CD93; + border-radius: 10rpx; + margin-right: 20rpx; + flex-shrink: 0; } - .sp{ - width: 100%; - height: 30rpx; - font-size: 32rpx; - font-family: PingFangSC; - font-weight: 400; - color: #060001; - line-height: 30rpx; - border-top: solid 2rpx #ccc; - margin: 60rpx 0; - padding-top: 30rpx; + + .content { + width: 580rpx; + padding: 20.67rpx 0 19.33rpx; + display: flex; + flex-direction: column; + justify-content: space-between; } - .guige { - padding: 42rpx 0; - border-top: 1rpx solid #D8D8D8; + .content-top { + } - .select-box { - // width: 100%; - height: 113rpx; - border-top: 1rpx solid #D8D8D8; - padding-left: 38rpx; - padding-right: 32rpx; + .item-title { + margin-right: 13.33rpx; + font-family: PingFang; + font-weight: bold; font-size: 31rpx; - font-family: PingFang SC; - font-weight: 500; color: #000000; + max-width: 286rpx; + } + + .right { + width: 12rpx; + height: 20rpx; + } + + .center { display: flex; - justify-content: space-between; align-items: center; } - .left { + .tags { + font-family: PingFang; + font-weight: 500; + font-size: 23rpx; + color: #666666; display: flex; } - .specifications { - margin-left: 27.33rpx; + .order { + width: 133rpx; + height: 53rpx; + background: linear-gradient(90deg, #F4A61F ,#FD6F34); + border-radius: 27rpx; + font-family: PingFang; + font-weight: bold; font-size: 31rpx; - font-family: PingFang SC; - font-weight: 500; - color: #888888; - white-space: nowrap; - width: 500rpx; - overflow: hidden; + color: #FFFFFF; + text-align: center; + line-height: 53rpx; } - .right { - width: 15.33rpx; - height: 27.33rpx; + .price { + width: 133rpx; + text-align: center; + font-family: PingFang; + font-weight: bold; + font-size: 36rpx; + color: #EE3E3B; + } + .price::before { + content: "¥"; + font-size: 24rpx; } .text-box { - width: 710rpx; - margin: 22rpx 20rpx; + width: 697rpx; + min-height: 953rpx; background: #FFFFFF; - position: relative; - border-radius: 13rpx; + border-radius: 20rpx; + padding: 36.67rpx 52.67rpx 26rpx 30rpx; } - .tab-box { - display: flex; - justify-content: space-around; - align-items: center; - font-size: 29rpx; - font-family: PingFangSC; - font-weight: 400; - color: #333333; - height: 85.33rpx; - line-height: 85.33rpx; + .shu { + margin: 0 4rpx; } - .seld-nav { - font-size: 33rpx; - font-family: PingFangSC; - font-weight: bold; - color: #000000; - // border-bottom: 5rpx solid #FEB419; + .tag:last-child .shu { + display: none; } - .line { - width: 47rpx; - height: 5rpx; - background: #FEB419; - border-radius: 3rpx; - margin-top: -10rpx; - } - .comment-box{ - width: 710rpx; - height: auto; - background: #FFFFFF; - border-radius: 13rpx; - margin: 24rpx auto 0; - padding: 0 20rpx; - - .comment-title{ - border-bottom: 1rpx solid #D9D9D9; - height: 95rpx; - display: flex; - align-items: center; - font-size: 35rpx; - font-family: PingFang SC; - font-weight: bold; - color: #000000; - - .comment-icon{ - width: 32rpx; - height: 32rpx; - margin-right: 14rpx; - } - - .comment-rate{ - font-size: 30rpx; - font-family: PingFang SC; - font-weight: 400; - color: #D62828; - margin-left: 10rpx; - } - - .comment-num{ - font-size: 27rpx; - font-family: PingFang SC; - font-weight: 400; - color: #999999; - } - } - - .comment-item{ - padding: 37rpx 0; - border-bottom: 1rpx solid #CCCCCC; - - .comment-avatar{ - width: 57rpx; - height: 57rpx; - border-radius: 50%; - margin-right: 15rpx; - } - - .comment-name{ - font-size: 21rpx; - font-family: PingFang SC; - font-weight: 400; - color: #666666; - } - - .comment-time { - font-family: PingFangSC; - font-weight: 400; - font-size: 24rpx; - color: #999999; - } - - .comment-content{ - margin-top: 30rpx; - font-size: 28rpx; - font-family: PingFang SC; - font-weight: 400; - color: #000000; - } - - .comment-imgs{ - margin-top: 34rpx; - overflow-x: auto; - white-space: nowrap; - - .comment-img{ - width: 147rpx; - height: 147rpx; - border-radius: 13rpx; - margin-right: 15rpx; - } - } - .comment-imgs::-webkit-scrollbar { - display: none; - } - } - - .empty-box { - text-align: center; - padding: 98rpx 0; - font-size: 28rpx; - color: #999999; - } - - .content-more{ - height: 98rpx; - display: flex; - align-items: center; - justify-content: flex-end; - font-size: 27rpx; - font-family: PingFang SC; - font-weight: 500; - color: #999999; - } - } + \ No newline at end of file diff --git a/subPackages/food/foodOrder.vue b/subPackages/food/foodOrder.vue new file mode 100644 index 0000000..23dec02 --- /dev/null +++ b/subPackages/food/foodOrder.vue @@ -0,0 +1,224 @@ + + + + + diff --git a/subPackages/food/taocanDetail.vue b/subPackages/food/taocanDetail.vue new file mode 100644 index 0000000..8183fd0 --- /dev/null +++ b/subPackages/food/taocanDetail.vue @@ -0,0 +1,22 @@ + + + + + diff --git a/subPackages/service/service.vue b/subPackages/service/service.vue new file mode 100644 index 0000000..b5a1498 --- /dev/null +++ b/subPackages/service/service.vue @@ -0,0 +1,186 @@ + + + + + diff --git a/subPackages/user/profile.vue b/subPackages/user/profile.vue new file mode 100644 index 0000000..17de9b1 --- /dev/null +++ b/subPackages/user/profile.vue @@ -0,0 +1,350 @@ + + + + + diff --git a/subPackages/user/travelerList.vue b/subPackages/user/travelerList.vue new file mode 100644 index 0000000..8f5c7eb --- /dev/null +++ b/subPackages/user/travelerList.vue @@ -0,0 +1,77 @@ + + + + +