diff --git a/api/CommodityDetails/CommodityDetails.js b/api/CommodityDetails/CommodityDetails.js index 513029e..3c9265f 100644 --- a/api/CommodityDetails/CommodityDetails.js +++ b/api/CommodityDetails/CommodityDetails.js @@ -1,8 +1,8 @@ import request from "../request.js" // 查询商品详细列表 -export function goodsDetails(goodsInfoId){ +export function goodsDetails(goodsInfoId, patientId) { return request({ - url: `/nurseApplet/nursingStationGoods/goodsDetails?goodsInfoId=${goodsInfoId}`, + url: `/nurseApplet/nursingStationGoods/goodsDetails?goodsInfoId=${goodsInfoId}&patientId=${patientId}`, method: 'GET' }) } diff --git a/api/user/user.js b/api/Personal/Personal.js similarity index 51% rename from api/user/user.js rename to api/Personal/Personal.js index 52939d2..8a37c6e 100644 --- a/api/user/user.js +++ b/api/Personal/Personal.js @@ -4,4 +4,13 @@ export function appPersonal(patientId) { url: `/nurseApp/login/appPersonal?patientId=${patientId}`, method: 'GET' }) -} \ No newline at end of file +} + + +//邀请 +export function inviteFriends(patientId) { + return request({ + url: `/nurseApplet/patientInfo/inviteFriends?inviteId=${patientId}`, + method: 'post' + }) +} diff --git a/api/coupon/index.js b/api/coupon/index.js new file mode 100644 index 0000000..03c8692 --- /dev/null +++ b/api/coupon/index.js @@ -0,0 +1,9 @@ +import request from "../request.js" + + +export function selectCoupon(pageNum, pageSize, patientId, couponstatus) { + return request({ + url: `/nurseApplet/patientInfo/selectCoupon?pageNum=${pageNum}&pageSize=${pageSize}&patientId=${patientId}&useStatus=${couponstatus}`, + method: 'get', + }) +} diff --git a/api/integral/index.js b/api/integral/index.js new file mode 100644 index 0000000..206c1d3 --- /dev/null +++ b/api/integral/index.js @@ -0,0 +1,35 @@ +import request from "../request.js" + + +//签到 +export function signIn(patientId) { + return request({ + url: `/nurseApplet/patientInfo/signIn?patientId=${patientId}&signInChannel=WECHAT_APPLET`, + method: 'post' + }) +} + +//积分 +export function selectPatientSignIn(patientId) { + return request({ + url: `/nurseApplet/patientInfo/selectPatientSignIn?patientId=${patientId}`, + method: 'get' + }) +} + +//可兑换商品 +export function selectExchangeGoods(pageNum, pageSize) { + return request({ + url: `/nurseApplet/patientInfo/selectExchangeGoods?pageNum=${pageNum}&pageSize=${pageSize}`, + method: 'get' + }) +} + +//兑换 +export function integralGoodsOrder(data) { + return request({ + url: `/nurseApplet/patientInfo/integralGoodsOrder`, + method: 'post', + data + }) +} diff --git a/api/materialbenefits/index.js b/api/materialbenefits/index.js new file mode 100644 index 0000000..3674ab3 --- /dev/null +++ b/api/materialbenefits/index.js @@ -0,0 +1,10 @@ +import request from "../request.js" + + +//新人优惠券 +export function couponByUseStatus(pageNum, pageSize, patientId) { + return request({ + url: `/nurseApplet/patientInfo/couponByUseStatus?pageNum=${pageNum}&pageSize=${pageSize}&patientId=${patientId}`, + method: 'get' + }) +} diff --git a/api/order/index.js b/api/order/index.js deleted file mode 100644 index 7bbe944..0000000 --- a/api/order/index.js +++ /dev/null @@ -1,9 +0,0 @@ -import request from "../request.js" - -export function orderCount(patientId) { - return request({ - url: `/nurseApp/login/orderCount?patientId=${patientId}`, - method: 'GET' - }) -} - diff --git a/api/request.js b/api/request.js index a0d6add..f99cde4 100644 --- a/api/request.js +++ b/api/request.js @@ -16,6 +16,9 @@ var request = function(config) { success(res) { if (res.data.code == 9999) { uni.removeStorageSync('token'); + uni.removeStorageSync('patientId'); + uni.removeStorageSync('openid'); + uni.removeStorageSync('phone'); let pages = getCurrentPages(); let path = pages[pages.length - 1].$page.fullPath if (path == '/pages/user/user') { diff --git a/components/r-canvas/r-canvas.js b/components/r-canvas/r-canvas.js new file mode 100644 index 0000000..256a23d --- /dev/null +++ b/components/r-canvas/r-canvas.js @@ -0,0 +1,735 @@ +export default{ + data(){ + return{ + system_info:{}, //system info + canvas_width:0, //canvas width px + canvas_height:0, //canvas height px + ctx:null, //canvas object + canvas_id:null, //canvas id + hidden:false,//Whether to hide canvas + scale:1,//canvas scale + r_canvas_scale:1, + if_ctx:true + } + }, + methods:{ + /** + * save r-canvas.vue object + * @param {Object} that + */ + // saveThis(that){ + // rCanvasThis = that + // }, + /** + * Draw round rect text + * @param {Object} config + * @param {Number} config.x x坐标 + * @param {Number} config.y y坐标 + * @param {Number} config.w 宽度 + * @param {Number} config.h 高度 + * @param {Number} config.radius 圆角弧度 + * @param {String} config.fill_color 矩形颜色 + */ + fillRoundRect(config) { + return new Promise((resolve,reject)=>{ + let x = this.compatibilitySize(parseFloat(config.x)*this.scale) + let y = this.compatibilitySize(parseFloat(config.y)*this.scale) + let w = this.compatibilitySize(parseFloat(config.w)*this.scale) + let h = this.compatibilitySize(parseFloat(config.h)*this.scale) + let radius = config.radius?parseFloat(config.radius)*this.scale:10*this.scale + + let fill_color = config.fill_color || "black" + // The diameter of the circle must be less than the width and height of the rectangle + if (2 * radius > w || 2 * radius > h) { + reject("The diameter of the circle must be less than the width and height of the rectangle") + return false; + } + this.ctx.save(); + this.ctx.translate(x, y); + // + this.drawRoundRectPath({ + w: w, + h: h, + radius: radius + }); + this.ctx.fillStyle = fill_color + this.ctx.fill(); + this.ctx.restore(); + resolve() + }) + }, + /** + * Draws the sides of a rounded rectangle + * @param {Object} config + * @param {Number} config.w 宽度 + * @param {Number} config.h 高度 + * @param {Number} config.radius 圆角弧度 + */ + drawRoundRectPath(config) { + this.ctx.beginPath(0); + this.ctx.arc(config.w - config.radius, config.h - config.radius, config.radius, 0, Math.PI / 2); + this.ctx.lineTo(config.radius, config.h); + this.ctx.arc(config.radius, config.h - config.radius, config.radius, Math.PI / 2, Math.PI); + this.ctx.lineTo(0, config.radius); + this.ctx.arc(config.radius, config.radius, config.radius, Math.PI, Math.PI * 3 / 2); + this.ctx.lineTo(config.w - config.radius, 0); + this.ctx.arc(config.w - config.radius, config.radius, config.radius, Math.PI * 3 / 2, Math.PI * 2); + this.ctx.lineTo(config.w, config.h - config.radius); + this.ctx.closePath(); + }, + /** + * Draw special Text,line wrapping is not supported + * @param {Object} config + * @param {String} config.text 文字 + * @param {Number} config.x x坐标 + * @param {Number} config.y y坐标 + * @param {String} config.font_color 文字颜色 + * @param {String} config.font_family 文字字体 + * @param {Number} config.font_size 文字大小(px) + */ + drawSpecialText(params){ + let general = params.general + let list = params.list + return new Promise(async (resolve,reject)=>{ + if(!general){ + reject("general cannot be empty:101") + return; + }else if(list && list.length>0){ + for(let i in list){ + if(i != 0){ + let font_size = list[i-1].font_size?parseFloat(list[i-1].font_size):20 + this.ctx.setFontSize(font_size) + general.x = parseFloat(general.x) + this.ctx.measureText(list[i-1].text).width + } + list[i].x = general.x + list[i].y = general.y + (list[i].margin_top?parseFloat(list[i].margin_top):0) + await this.drawText(list[i]) + } + resolve() + }else{ + reject("The length of config arr is less than 0") + return; + } + + }) + }, + /** + * array delete empty + * @param {Object} arr + */ + arrDeleteEmpty(arr){ + let newArr = [] + for(let i in arr){ + if(arr[i]){ + newArr.push(arr[i]) + } + } + return newArr + }, + /** + * Draw Text,support line + * @param {Object} config + * @param {String} config.text 文字 + * @param {Number} config.max_width 文字最大宽度(大于宽度自动换行) + * @param {Number} config.line_height 文字上下行间距 + * @param {Number} config.x x坐标 + * @param {Number} config.y y坐标 + * @param {String} config.font_color 文字颜色 + * @param {String} config.font_family 文字字体 默认值:Arial + * @param {String} config.text_align 文字对齐方式(left/center/right) + * @param {Number} config.font_size 文字大小(px) + * @param {Boolean} config.line_through_height 中划线大小 + * @param {Boolean} config.line_through_color 中划线颜色 + * @param {String} config.font_style 规定文字样式 + * @param {String} config.font_variant 规定字体变体 + * @param {String} config.font_weight 规定字体粗细 + * @param {String} config.line_through_cap 线末端类型 + * @param {String} config.line_clamp 最大行数 + * @param {String} config.line_clamp_hint 超过line_clamp后,尾部显示的自定义标识 如 ... + * @param {String} config.is_line_break 是否开启换行符换行 + * + */ + drawText(config,configuration = {}){ + + configuration['line_num'] = configuration.line_num?configuration.line_num:0 + configuration['text_width'] = configuration.text_width?configuration.text_width:0 + + return new Promise(async (resolve,reject)=>{ + + if(config.text){ + + let draw_width = 0,draw_height = 0,draw_x = config.x,draw_y = config.y + let font_size = config.font_size?(parseFloat(config.font_size)*this.scale):(20*this.scale) + let font_color = config.font_color || "#000" + let font_family = config.font_family || "Arial" + let line_height = config.line_height || config.font_size || 20 + let text_align = config.text_align || "left" + let font_weight = config.font_weight || "normal" + let font_variant = config.font_variant || "normal" + let font_style = config.font_style || "normal" + let line_clamp_hint = config.line_clamp_hint || '...' + let lineBreakJoinText = "" + let max_width = config.max_width?parseFloat(config.max_width)*this.scale:0 + // checkout is line break + if(config.is_line_break){ + let splitTextArr = config.text.split(/[\n]/g) + if(splitTextArr && splitTextArr.length > 0){ + let newSplitTextArr = this.arrDeleteEmpty(splitTextArr) + if(newSplitTextArr && newSplitTextArr.length > 0){ + lineBreakJoinText = newSplitTextArr.slice(1).join("\n") + config.text = newSplitTextArr[0] + }else{ + reject("Text cannot be empty:103") + return + } + }else{ + reject("Text cannot be empty:102") + return + } + } + + this.ctx.setFillStyle(font_color) // color + this.ctx.textAlign = text_align; + this.ctx.font = `${font_style} ${font_variant} ${font_weight} ${parseInt(font_size)}px ${font_family}` + if(configuration.text_width >= this.ctx.measureText(config.text).width){ + draw_width = configuration.text_width + }else if(max_width > 0){ + draw_width = max_width < this.ctx.measureText(config.text).width ? this.resetCompatibilitySize(max_width) : this.resetCompatibilitySize(this.ctx.measureText(config.text).width) + }else{ + draw_width = this.ctx.measureText(config.text).width + } + configuration.text_width = draw_width / this.scale + if( max_width && this.compatibilitySize(this.ctx.measureText(config.text).width) > this.compatibilitySize(max_width)){ + let current_text = "" + let text_arr = config.text.split("") + for(let i in text_arr){ + if( this.compatibilitySize(this.ctx.measureText(current_text+text_arr[i]).width) > this.compatibilitySize(max_width) ){ + // Hyphenation that is greater than the drawable width continues to draw + if(config.line_clamp && parseInt(config.line_clamp) == 1){ + // Subtracting the current_text tail width from the line_clamp_hint width + let current_text_arr = current_text.split('') + let json_current_text = '' + while(true){ + current_text_arr = current_text_arr.slice(1) + json_current_text = current_text_arr.join('') + if(this.compatibilitySize(this.ctx.measureText(json_current_text).width) <= this.compatibilitySize(this.ctx.measureText(line_clamp_hint).width)){ + current_text = current_text.replace(json_current_text,'') + break; + } + } + configuration.line_num += 1 + this.ctx.setFontSize(parseInt(this.compatibilitySize(font_size))) // font size + this.ctx.fillText(current_text + line_clamp_hint, this.compatibilitySize(parseFloat(config.x)*this.scale), this.compatibilitySize(parseFloat(config.y)*this.scale)); + }else{ + configuration.line_num += 1 + this.ctx.setFontSize(parseInt(this.compatibilitySize(font_size))) // font size + this.ctx.fillText(current_text, this.compatibilitySize(parseFloat(config.x)*this.scale), this.compatibilitySize(parseFloat(config.y)*this.scale)); + config.text = text_arr.slice(i).join("") + config.y = config.y + line_height + if(config.line_clamp){ + config.line_clamp = parseInt(config.line_clamp) - 1 + } + await this.drawText(config,configuration) + } + + break; + }else{ + current_text = current_text+text_arr[i] + } + } + }else{ + if(config.line_through_height){ + let x = parseFloat(config.x)*this.scale + let w + let y = parseFloat(config.y)*this.scale - (font_size / 2.6) + if(text_align == "left"){ + w = this.ctx.measureText(config.text).width/1.1 + parseFloat(config.x)*this.scale + }else if(text_align == "right"){ + w = parseFloat(config.x)*this.scale - this.ctx.measureText(config.text).width/1.1 + }else if(text_align == "center"){ + x = parseFloat(config.x)*this.scale - this.ctx.measureText(config.text).width / 1.1 / 2 + w = parseFloat(config.x)*this.scale + this.ctx.measureText(config.text).width / 1.1 / 2 + } + this.drawLineTo({ + x:x, + y:y, + w:w, + h:y, + line_width:config.line_through_height, + line_color:config.line_through_color, + line_cap:config.line_through_cap + }) + } + configuration.line_num += 1 + this.ctx.setFontSize(parseInt(this.compatibilitySize(font_size))) // font size + this.ctx.fillText(config.text, this.compatibilitySize(parseFloat(config.x)*this.scale), this.compatibilitySize(parseFloat(config.y)*this.scale)); + if(config.line_clamp){ + config.line_clamp = parseInt(config.line_clamp) - 1 + } + } + if(lineBreakJoinText){ + await this.drawText({...config,text:lineBreakJoinText,y:config.y + line_height},configuration) + } + draw_height = config.font_size * configuration.line_num + draw_width = configuration.text_width + resolve({draw_width,draw_height,draw_x,draw_y}) + }else{ + reject("Text cannot be empty:101") + } + }) + }, + /** + * Draw Line + * @param {Object} config + * @param {Object} config.x x坐标 + * @param {Object} config.y y坐标 + * @param {Object} config.w 线的宽度 + * @param {Object} config.h 线的高度 + * @param {Object} config.line_width 线的宽度 + * @param {Object} config.line_color 线条颜色 + */ + drawLineTo(config){ + let x = this.compatibilitySize(config.x) + let y = this.compatibilitySize(config.y) + let w = this.compatibilitySize(config.w) + let h = this.compatibilitySize(config.h) + let line_width = config.line_width?parseFloat(config.line_width)*this.scale:1*this.scale + let line_color = config.line_color || "black" + let line_cap = config.line_cap || "butt" + this.ctx.beginPath() + this.ctx.lineCap = line_cap + this.ctx.lineWidth = line_width + this.ctx.strokeStyle = line_color + this.ctx.moveTo(x,y) + this.ctx.lineTo(w,h) + this.ctx.stroke() + }, + /** + * Compatibility px + * @param {Object} size + */ + compatibilitySize(size) { + let canvasSize = (parseFloat(size) / 750) * this.system_info.windowWidth + canvasSize = parseFloat(canvasSize * 2) + return canvasSize + }, + /** + * Restore compatibility px + * @param {Object} size + */ + resetCompatibilitySize(size) { + let canvasSize = (parseFloat(size/2)/this.system_info.windowWidth) * 750 + return canvasSize + }, + /** + * Init canvas + */ + init(config){ + return new Promise(async (resolve,reject)=>{ + if(!config.canvas_id){ + reject("Canvas ID cannot be empty, please refer to the usage example") + return; + } + this.hidden = config.hidden + this.canvas_id = config.canvas_id + let system_info = await uni.getSystemInfoSync() + this.system_info = system_info + this.scale = config.scale&&parseFloat(config.scale)>0?parseInt(config.scale):1 + this.canvas_width = (config.canvas_width ? this.compatibilitySize(config.canvas_width) : system_info.windowWidth) * this.scale + this.canvas_height = (config.canvas_height ? this.compatibilitySize(config.canvas_height) : system_info.windowHeight) * this.scale, + this.r_canvas_scale = 1/this.scale + this.ctx = uni.createCanvasContext(this.canvas_id,this) + this.setCanvasConfig({ + global_alpha:config.global_alpha?parseFloat(config.global_alpha):1, + backgroundColor:config.background_color?config.background_color:"#fff" + }) + resolve() + }) + }, + /** + * clear canvas all path + */ + clearCanvas(){ + return new Promise(async (resolve,reject)=>{ + if(!this.ctx){ + reject("canvas is not initialized:101") + return + }else{ + this.ctx.clearRect(0,0,parseFloat(this.canvas_width)*this.scale,parseFloat(this.canvas_height)*this.scale) + await this.draw() + resolve() + } + }) + }, + /** + * Set canvas config + * @param {Object} config + */ + setCanvasConfig(config){ + this.ctx.globalAlpha = config.global_alpha + this.ctx.fillStyle = config.backgroundColor + this.ctx.fillRect(0, 0, parseFloat(this.canvas_width)*this.scale, parseFloat(this.canvas_height)*this.scale) + }, + /** + * set canvas width + * @param {Object} width + */ + setCanvasWidth(width){ + if(!width){ + // uni.showToast({ + // title:'setCanvasWidth:width error', + // icon:'none' + // }) + } + this.canvas_width = this.compatibilitySize(parseFloat(width)) * this.scale + this.ctx.width = this.canvas_width + }, + /** + * set canvas height + * @param {Object} height + */ + setCanvasHeight(height){ + if(!height){ + // uni.showToast({ + // title:'setCanvasWidth:height error', + // icon:'none' + // }) + } + this.canvas_height = this.compatibilitySize(parseFloat(height)) * this.scale + this.ctx.height = this.canvas_height + }, + /** + * Draw to filepath + */ + draw(callback){ + return new Promise((resolve,reject)=>{ + let stop = setTimeout(()=>{ + this.ctx.draw(false,setTimeout(()=>{ + uni.canvasToTempFilePath({ + canvasId: this.canvas_id, + quality: 1, + success: (res)=>{ + console.log('res',res) + resolve(res) + callback && callback(res) + }, + fail:(err)=>{ + reject(JSON.stringify(err)|| "Failed to generate poster:101") + } + },this) + },300)) + clearTimeout(stop) + },300) + }) + }, + /** + * draw rect + * @param {Number} config.x x坐标 + * @param {Number} config.y y坐标 + * @param {Number} config.w 图形宽度(px) + * @param {Number} config.h 图形高度(px) + * @param {Number} config.color 图形颜色 + * @param {Number} config.is_radius 是否开启圆图(1.1.6及以下版本废弃,请使用border_radius) + * @param {Number} config.border_width 边框大小 + * @param {Number} config.border_color 边框颜色 + * + */ + drawRect(config){ + return new Promise(async (resolve,reject)=>{ + if(!config.border_width || config.border_width <=0){ + config.border_width = 0 + }else{ + config.border_width = parseFloat(config.border_width) + } + if(parseFloat(config.border_width) > 0){ + let sub_config = JSON.parse(JSON.stringify(config)) + sub_config.border_width = 0 + sub_config.w = config.w + config.border_width + sub_config.h = config.h + config.border_width + sub_config.color = config.border_color || 'black' + if(sub_config.border_radius){ + sub_config.border_radius = parseFloat(sub_config.border_radius) + parseFloat(config.border_width) / 2 + } + await this.drawRect(sub_config) + } + + let color = config.color || 'white' + config.x = (parseFloat(config.x) + config.border_width / 2) + config.y = (parseFloat(config.y) + config.border_width / 2) + config['color'] = color + this.ctx.fillStyle = color; + if(config.is_radius || config.border_radius){ + this.setNativeBorderRadius(config) + this.ctx.fill() + }else{ + console.log('config.border_width',config.border_width) + this.ctx.fillRect(this.compatibilitySize(config.x*this.scale),this.compatibilitySize(config.y*this.scale),this.compatibilitySize(parseFloat(config.w)*this.scale),this.compatibilitySize(parseFloat(config.h)*this.scale)) + } + resolve() + }) + }, + /** + * Draw image + * @param {Object} config + * @param {String} config.url 图片链接 + * @param {Number} config.x x坐标 + * @param {Number} config.y y坐标 + * @param {Number} config.w 图片宽度(px) + * @param {Number} config.h 图片高度(px) + * @param {Number} config.border_width 边大小 + * @param {Number} config.border_color 边颜色 + * @param {Number} config.is_radius 是否开启圆图(1.1.6及以下版本废弃,请使用border_radius) + * @param {Number} config.border_radius 圆角弧度 + */ + drawImage(config){ + return new Promise(async (resolve,reject)=>{ + if(config.url){ + let type = 0 // 1、network image 2、native image 3、base64 image + let image_url + let reg = /^https?/ig; + if(reg.test(config.url)){ + type = 1 + }else{ + if((config.url.indexOf("data:image/png;base64") != -1) || config.url.indexOf("data:image/jpeg;base64") != -1 || config.url.indexOf("data:image/gif;base64") != -1){ + type = 3 + }else{ + type = 2 + } + } + if(type == 1){ + // network image + await this.downLoadNetworkFile(config.url).then(res=>{ // two function + image_url = res + }).catch(err=>{ + reject(err) + return; + }) + }else if(type == 2){ + // native image + const imageInfoResult = await uni.getImageInfo({ + src: config.url + }); + try{ + if(imageInfoResult.length <= 1){ + reject(imageInfoResult[0].errMsg + ':404') + return + } + }catch(e){ + reject(e+':500') + return + } + let base64 = await this.urlToBase64({url:imageInfoResult[1].path}) + // #ifdef MP-WEIXIN + await this.base64ToNative({url:base64}).then(res=>{ + image_url = res + }).catch(err=>{ + reject(JSON.stringify(err)+":501") + return; + }) + // #endif + // #ifndef MP-WEIXIN + image_url = base64 + // #endif + + }else if(type == 3){ + // #ifdef MP-WEIXIN + await this.base64ToNative({url:config.url}).then(res=>{ + image_url = res + }).catch(err=>{ + reject(JSON.stringify(err)+":500") + return; + }) + // #endif + // #ifndef MP-WEIXIN + image_url = config.url + // #endif + }else{ + reject("Other Type Errors:101") + return + } + if(config.border_width){ + let border_radius = 0 + if(config.border_radius){ + let multiple = config.w / config.border_radius + border_radius = (parseFloat(config.w) + parseFloat(config.border_width)) / multiple + } + // drawRect + await this.drawRect({ + x:parseFloat(config.x) - parseFloat(config.border_width)/2, + y:parseFloat(config.y) - parseFloat(config.border_width)/2, + w:parseFloat(config.w) + parseFloat(config.border_width), + h:parseFloat(config.h) + parseFloat(config.border_width), + color:config.border_color, + border_radius:border_radius, + border_width:config.border_width, + is_radius:config.is_radius + }) + } + + + + if(config.border_radius){ + config.color = config.color?config.color:'rgba(0,0,0,0)' + + // 圆角有白边,+0.5的误差 + config.w = config.w + 0.3 + config.h = config.h + 0.3 + + this.setNativeBorderRadius(config) + }else if(config.is_radius){ + //已废弃 is_radius + this.ctx.setStrokeStyle("rgba(0,0,0,0)") + this.ctx.save() + this.ctx.beginPath() + this.ctx.arc(this.compatibilitySize(parseFloat(config.x)*this.scale+parseFloat(config.w)*this.scale/2), this.compatibilitySize(parseFloat(config.y)*this.scale+parseFloat(config.h)*this.scale/2), this.compatibilitySize(parseFloat(config.w)*this.scale/2), 0, 2 * Math.PI, false) + this.ctx.stroke(); + this.ctx.clip() + } + + await this.ctx.drawImage(image_url,this.compatibilitySize(parseFloat(config.x)*this.scale),this.compatibilitySize(parseFloat(config.y)*this.scale),this.compatibilitySize(parseFloat(config.w)*this.scale),this.compatibilitySize(parseFloat(config.h)*this.scale)) + this.ctx.restore() //Restore previously saved drawing context + resolve() + }else{ + let err_msg = "Links cannot be empty:101" + reject(err_msg) + } + }) + }, + /** + * base64 to native available path + * @param {Object} config + */ + base64ToNative(config){ + return new Promise((resolve,reject)=>{ + let fileName = new Date().getTime() + var filePath = `${wx.env.USER_DATA_PATH}/${fileName}_rCanvas.png` + wx.getFileSystemManager().writeFile({ + filePath: filePath, + data: config.url.replace(/^data:\S+\/\S+;base64,/, ''), + encoding: 'base64', + success: function() { + resolve(filePath) + }, + fail: function(error) { + reject(error) + } + }) + }) + }, + /** + * native url to base64 + * @param {Object} config + */ + urlToBase64(config){ + return new Promise(async (resolve,reject)=>{ + if (typeof window != 'undefined') { + await this.downLoadNetworkFile(config.url).then(res=>{ // two function + resolve(res) + }).catch(err=>{ + reject(err) + }) + }else if (typeof plus != 'undefined') { + plus.io.resolveLocalFileSystemURL(config.url,(obj)=>{ + obj.file((file)=>{ + let fileReader = new plus.io.FileReader() + fileReader.onload = (res)=>{ + resolve(res.target.result) + } + fileReader.onerror = (err)=>{ + reject(err) + } + fileReader.readAsDataURL(file) + }, (err)=>{ + reject(err) + }) + },(err)=>{ + reject(err) + }) + }else if(typeof wx != 'undefined'){ + wx.getFileSystemManager().readFile({ + filePath: config.url, + encoding: 'base64', + success: function(res) { + resolve('data:image/png;base64,' + res.data) + }, + fail: function(error) { + reject(error) + } + }) + } + }) + }, + setNativeBorderRadius(config){ + let border_radius = config.border_radius?(parseFloat(config.border_radius)*this.scale):(20*this.scale) + if ((parseFloat(config.w)*this.scale) < 2 * border_radius) border_radius = (parseFloat(config.w)*this.scale) / 2; + if ((parseFloat(config.h)*this.scale) < 2 * border_radius) border_radius = (parseFloat(config.h)*this.scale) / 2; + this.ctx.beginPath(); + this.ctx.moveTo(this.compatibilitySize((parseFloat(config.x)*this.scale) + border_radius), this.compatibilitySize((parseFloat(config.y)*this.scale))); + this.ctx.arcTo(this.compatibilitySize((parseFloat(config.x)*this.scale) + (parseFloat(config.w)*this.scale)), this.compatibilitySize((parseFloat(config.y)*this.scale)), this.compatibilitySize((parseFloat(config.x)*this.scale) + (parseFloat(config.w)*this.scale)), this.compatibilitySize((parseFloat(config.y)*this.scale) + (parseFloat(config.h)*this.scale)), this.compatibilitySize(border_radius)); + this.ctx.arcTo(this.compatibilitySize((parseFloat(config.x)*this.scale) + (parseFloat(config.w)*this.scale)), this.compatibilitySize((parseFloat(config.y)*this.scale) + (parseFloat(config.h)*this.scale)), this.compatibilitySize((parseFloat(config.x)*this.scale)), this.compatibilitySize((parseFloat(config.y)*this.scale) + (parseFloat(config.h)*this.scale)), this.compatibilitySize(border_radius)); + this.ctx.arcTo((this.compatibilitySize(parseFloat(config.x)*this.scale)), this.compatibilitySize((parseFloat(config.y)*this.scale) + (parseFloat(config.h)*this.scale)), this.compatibilitySize((parseFloat(config.x)*this.scale)), this.compatibilitySize((parseFloat(config.y)*this.scale)), this.compatibilitySize(border_radius)); + this.ctx.arcTo(this.compatibilitySize((parseFloat(config.x)*this.scale)), this.compatibilitySize((parseFloat(config.y)*this.scale)), this.compatibilitySize((parseFloat(config.x)*this.scale) + (parseFloat(config.w)*this.scale)), this.compatibilitySize((parseFloat(config.y)*this.scale)), this.compatibilitySize(border_radius)); + this.ctx.closePath(); + this.ctx.strokeStyle = config.color || config.border_color || 'rgba(0,0,0,0)'; // 设置绘制边框的颜色 + this.ctx.stroke(); + this.ctx.save() + this.ctx.clip(); + + }, + /** + * Download network file + * @param {Object} url : download url + */ + downLoadNetworkFile(url){ + return new Promise((resolve,reject)=>{ + uni.downloadFile({ + url, + success:(res)=>{ + if(res.statusCode == 200){ + resolve(res.tempFilePath) + }else{ + reject("Download Image Fail:102") + } + }, + fail:(err)=>{ + reject("Download Image Fail:101") + } + }) + }) + }, + /** + * Save image to natice + * @param {Object} filePath : native imageUrl + */ + saveImage(filePath){ + return new Promise((resolve,reject)=>{ + if(!filePath){ + reject("FilePath cannot be null:101") + return; + } + + // #ifdef H5 + var createA = document.createElement("a"); + createA.download = filePath; + createA.href = filePath; + document.body.appendChild(createA); + createA.click(); + createA.remove(); + resolve() + // #endif + + // #ifndef H5 + uni.saveImageToPhotosAlbum({ + filePath: filePath, + success:(res)=>{ + resolve(res) + }, + fail:(err)=>{ + reject(err) + } + }) + // #endif + }) + } + } +} diff --git a/components/r-canvas/r-canvas.vue b/components/r-canvas/r-canvas.vue new file mode 100644 index 0000000..5722790 --- /dev/null +++ b/components/r-canvas/r-canvas.vue @@ -0,0 +1,26 @@ + + + + diff --git a/package.json b/package.json index bbd71fa..b4155c7 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,16 @@ { - "dependencies": { - "uview-ui": "^1.8.4" - } + "dependencies": { + "uview-ui": "^1.8.4" + }, + "id": "r-canvas", + "name": "海报生成,随心所欲绘制样式,原生canvas方法的二次封装,自定义函数,持续更新", + "version": "1.3.1", + "description": "图片不失帧,保留原有画质,canvas方法扩展,暴露原生实例,可自行扩展,最好用的canvas插件", + "keywords": [ + "canvas", + "画布生成图片", + "绘制图片", + "商品海报", + "朋友圈海报" + ] } diff --git a/pages.json b/pages.json index 8bfc2d4..b45f844 100644 --- a/pages.json +++ b/pages.json @@ -9,6 +9,58 @@ "navigationBarTitleText": "", "navigationStyle": "custom" } + }, { + "path": "pages/orderDetails/orderDetails", + "style": { + "navigationBarTitleText": "订单详情", + "navigationBarBackgroundColor": "#ffffff", + "enablePullDownRefresh": false + } + }, { + "path": "pages/integral/integral", + "style": { + "navigationBarTitleText": "积分", + "enablePullDownRefresh": false, + "navigationBarBackgroundColor": "#ffffff" + } + }, { + "path": "pages/information/information", + "style": { + "navigationBarTitleText": "完善个人信息", + "navigationBarBackgroundColor": "#ffffff", //背景颜色 + "enablePullDownRefresh": false + } + }, { + "path": "pages/CommodityDetails/CommodityDetails", + "style": { + "navigationBarTitleText": "商品详情", + "enablePullDownRefresh": false, + "navigationBarBackgroundColor": "#ffffff" + } + }, { + "path": "pages/coupon/coupon", + "style": { + "navigationBarTitleText": "优惠券", + "enablePullDownRefresh": false, + "navigationBarBackgroundColor": "#ffffff", + "onReachBottomDistance": 40, //距离底部多远时触发 单位为px + "enablePullDownRefresh": true //设置参数为true + } + }, { + "path": "pages/Personal/Personal", + "style": { + "navigationBarTitleText": "个人中心", + "enablePullDownRefresh": false, + "navigationBarBackgroundColor": "#ffffff", + "navigationStyle": "custom" + } + }, { + "path": "pages/modify/modify", + "style": { + "navigationBarTitleText": "修改信息", + "enablePullDownRefresh": false, + "navigationBarBackgroundColor": "#ffffff" //背景颜色 + } }, { "path": "pages/ProjectDetails/ProjectDetails", "style": { @@ -23,13 +75,6 @@ "navigationBarBackgroundColor": "#ffffff", //背景颜色 "enablePullDownRefresh": true //设置参数为true } - }, { - "path": "pages/information/information", - "style": { - "navigationBarTitleText": "完善个人信息", - "navigationBarBackgroundColor": "#ffffff", //背景颜色 - "enablePullDownRefresh": false - } }, { "path": "pages/lookrate/lookrate", @@ -54,13 +99,6 @@ } }, { - "path": "pages/modify/modify", - "style": { - "navigationBarTitleText": "修改信息", - "enablePullDownRefresh": false, - "navigationBarBackgroundColor": "#ffffff" //背景颜色 - } - }, { "path": "pages/appointmenttime/appointmenttime", "style": { "navigationBarTitleText": "预约时间", @@ -100,23 +138,6 @@ "enablePullDownRefresh": true //设置参数为true } }, - { - "path": "pages/user/user", - "style": { - "navigationBarTitleText": "个人信息", - "enablePullDownRefresh": false, - "navigationBarBackgroundColor": "#4C7BC9", //背景颜色 - "navigationBarTextStyle": "white" - } - }, - { - "path": "pages/orderDetails/orderDetails", - "style": { - "navigationBarTitleText": "订单详情", - "navigationBarBackgroundColor": "#ffffff", - "enablePullDownRefresh": false - } - }, { "path": "pages/payorderDetails/payorderDetails", "style": { @@ -124,13 +145,6 @@ "navigationBarBackgroundColor": "#ffffff", "enablePullDownRefresh": false } - }, { - "path": "pages/Personal/Personal", - "style": { - "navigationBarTitleText": "个人中心", - "enablePullDownRefresh": false, - "navigationBarBackgroundColor": "#ffffff" - } }, { "path": "pages/login/login", @@ -190,14 +204,6 @@ "enablePullDownRefresh": false } }, - { - "path": "pages/order/order", - "style": { - "navigationBarTitleText": "我的订单", - "enablePullDownRefresh": false, - "navigationBarBackgroundColor": "#ffffff" - } - }, { "path": "pages/menttimeorder/menttimeorder", "style": { @@ -249,14 +255,6 @@ "enablePullDownRefresh": true //设置参数为true } }, - { - "path": "pages/CommodityDetails/CommodityDetails", - "style": { - "navigationBarTitleText": "商品详情", - "enablePullDownRefresh": false, - "navigationBarBackgroundColor": "#ffffff" - } - }, { "path": "pages/nursestation/nursestation", "style": { @@ -310,7 +308,6 @@ // "onReachBottomDistance": 50 //距离底部多远时触发 单位为px // "enablePullDownRefresh": true //设置参数为true } - }, { "path": "pages/Healthknowledge/Healthknowledge", "style": { @@ -318,7 +315,6 @@ "enablePullDownRefresh": false, "navigationBarBackgroundColor": "#ffffff" } - }, { "path": "pages/Healthitem/Healthitem", "style": { @@ -349,7 +345,17 @@ "navigationBarBackgroundColor": "#ffffff" } } - ], + ,{ + "path" : "pages/Healthrecords/Healthrecords", + "style" : + { + "navigationBarTitleText": "健康档案", + "navigationBarBackgroundColor": "#ffffff", + "enablePullDownRefresh": false + } + + } + ], "globalStyle": { "navigationBarTextStyle": "black", "navigationBarTitleText": "", diff --git a/pages/Applforrefund/Applforrefund.vue b/pages/Applforrefund/Applforrefund.vue index 793c0e9..1f8d6c4 100644 --- a/pages/Applforrefund/Applforrefund.vue +++ b/pages/Applforrefund/Applforrefund.vue @@ -7,10 +7,14 @@ 退款原因 请选择 {{dictname}} - + - 退款金额 - ¥{{order.totalPrice}} + + 退款金额 + 退款积分 + ¥{{order.totalPrice}} + + {{order.integralExchangeSill}}积分 + @@ -40,7 +40,7 @@ · 仅工作日发货 - + @@ -69,8 +69,13 @@ 暂无 - - ¥{{updata.goodsPrice}} + + + ¥{{totalPrice}} + + + 实付价¥{{Paidinprice}} + 库存数量:{{updata.goodsStock}} @@ -124,10 +129,25 @@ 数量 - + + + + 优惠券 + + + 已选择 {{coupon.couponTitle}} + + + 当前有优惠券可使用 + + + @@ -161,9 +181,82 @@ + + + + + + 选择优惠券 + + + + + + + ¥ + + + {{item.couponPrice}} + + + + {{item.couponTitle}} + + + 满 + {{item.couponConsumePrice}} + 可用 + + + 有效期至{{item.expirationEndTime}} + + + 取消使用 + + + 使用 + + + + 领取来源:{{item.receiveSource =='NEW_PEOPLE_WELFARE'?'新人福利':''}} + + + + + + + ¥ + + + {{item.couponPrice}} + + + + {{item.couponTitle}} + + + 满 + {{item.couponConsumePrice}} + 可用 + + + 有效期至{{item.expirationEndTime}} + + + 不满足 + + + + 领取来源:{{item.receiveSource =='NEW_PEOPLE_WELFARE'?'新人福利':''}} + + + + + - + + diff --git a/pages/Personal/Personal.scss b/pages/Personal/Personal.scss new file mode 100644 index 0000000..db03985 --- /dev/null +++ b/pages/Personal/Personal.scss @@ -0,0 +1,186 @@ + .app { + font-size: 35rpx; + padding: 0 0 200rpx 0; + position: relative; + text-align: center; + .service { + position: absolute; + top:985rpx; + left:2%; + width: 96%; + height: 100rpx; + background: #FFFFFF; + box-shadow: 0rpx 9rpx 31rpx 9rpx rgba(0,0,0,0.03); + border-radius: 10rpx; + image { + width: 13rpx; + height: 23rpx; + position: absolute; + right:40rpx; + top:50%; + transform: translateY(-50%); + } + .serviceorder { + font-size: 32rpx; + height: 100rpx; + line-height: 100rpx; + position: absolute; + left: 31rpx; + } + } + .content { + position: absolute; + top:670rpx; + left:2%; + width: 96%; + height: 300rpx; + background: #FFFFFF; + box-shadow: 0rpx 9rpx 31rpx 9rpx rgba(0,0,0,0.03); + border-radius: 10rpx; + .center { + display: flex; + justify-content: space-around; + padding-top: 50rpx; + .OrderStatus { + position: relative; + height: 180rpx; + width: 25%; + .title{ + position: absolute; + top: 80rpx; + width:100%; + left:50%; + transform: translateX(-50%); + } + image { + width: 71rpx; + height: 63rpx; + position: absolute; + left: 50%; + transform: translateX(-50%); + } + .orderCount { + width: 38rpx; + height: 38rpx; + background: #FFFFFF; + border: 3rpx solid #DC222F; + position: absolute; + top: -20rpx; + right: 35rpx; + font-size: 22rpx; + border-radius: 50%; + line-height: 35rpx; + color: #DC222F; + } + } + } + .CommodityOrder { + font-size: 32rpx; + height: 80rpx; + line-height: 80rpx; + position: relative; + .title{ + position: absolute; + left: 31rpx; + } + .text{ + position: absolute; + right: 40rpx; + font-size: 26rpx; + color: #969494; + image{ + position: absolute; + top:50%; + transform: translateY(-50%); + padding-left: 10rpx; + width: 13rpx; + height: 23rpx; + } + } + } + } + .userinfo{ + position: absolute; + top:420rpx; + left:2%; + display: flex; + width: 96%; + height: 220rpx; + background-color: #fff; + border-radius: 10rpx; + box-shadow: 0rpx 0rpx 24rpx 0rpx rgba(101,176,249,0.41); + .item{ + width: 33%; + height: 100%; + padding-top: 40rpx; + .text{ + font-size: 30rpx; + line-height: 60rpx; + } + image{ + // margin-left: 50%; + // transform: translateX(-50%); + width: 85rpx; + height: 74rpx; + } + } + } + .user { + width: 100%; + height: 550rpx; + position: relative; + color: #FFFFFF; + font-size: 39rpx; + .modify { + position: absolute; + right: 3%; + top:250rpx; + font-size:28rpx; + image{ + width: 23rpx; + height: 23rpx; + padding-left: 10rpx; + } + } + .login{ + position: absolute; + top: 220rpx; + left: 35%; + font-size: 36rpx; + width: 180rpx; + line-height: 70rpx; + border:1rpx solid #fff; + height: 70rpx; + border-radius: 20rpx; + } + .nickname { + position: absolute; + top: 300rpx; + left: 35%; + font-size: 30rpx; + } + + .phone { + position: absolute; + top: 180rpx; + left: 35%; + } + .bjimg{ + width: 100%; + height: 100%; + image{ + width: 100%; + height: 100%; + } + } + .img { + width: 150rpx; + height: 150rpx; + border-radius: 50%; + background: #F6F6F6; + position: absolute; + top: 180rpx; + left: 8%; + } + } + } \ No newline at end of file diff --git a/pages/Personal/Personal.vue b/pages/Personal/Personal.vue index 09e5424..da02be0 100644 --- a/pages/Personal/Personal.vue +++ b/pages/Personal/Personal.vue @@ -1,143 +1,370 @@ - diff --git a/pages/coupon/coupon.scss b/pages/coupon/coupon.scss new file mode 100644 index 0000000..8acc4dc --- /dev/null +++ b/pages/coupon/coupon.scss @@ -0,0 +1,159 @@ + .app { + padding: 0; + + .content { + width: 96%; + margin: 20rpx auto 0; + background-color: #fff; + padding-bottom: 100rpx; + + .rollup { + border-radius: 5rpx; + + .item { + width: 94%; + height: 240rpx; + margin: 20rpx auto 0; + border: 1rpx solid #f4f5f7; + border-radius: 10rpx; + + .bottom { + font-size: 22rpx; + color: #969394; + line-height: 60rpx; + padding-left: 25rpx; + border-radius: 0 0 10rpx 10rpx; + } + + .top { + width: 100%; + height: 180rpx; + background: #FDE9E8; + position: relative; + color: #F44B2F; + border-radius: 10rpx 10rpx 0 0; + + .what { + padding: 0 10rpx; + height: 40rpx; + background: #FED1D2; + border-radius: 16rpx; + font-size: 20rpx; + line-height: 40rpx; + text-align: center; + position: absolute; + top: 120rpx; + left: 20rpx; + } + + .btngq { + width: 110rpx; + height: 50rpx; + border: 2rpx solid #DFDEDE; + border-radius: 24rpx; + font-size: 24rpx; + position: absolute; + top: 70rpx; + right: 20rpx; + text-align: center; + line-height: 50rpx; + background: #DFDEDE; + } + + .btn { + width: 98rpx; + height: 50rpx; + border: 2rpx solid #F44B2F; + border-radius: 24rpx; + font-size: 24rpx; + position: absolute; + top: 70rpx; + right: 20rpx; + text-align: center; + line-height: 50rpx; + } + + .time { + font-size: 24rpx; + position: absolute; + top: 120rpx; + left: 240rpx; + } + + .texts { + font-size: 32rpx; + font-weight: 800; + position: absolute; + top: 44rpx; + left: 240rpx; + } + + .title { + position: absolute; + top: 30rpx; + left: 10rpx; + + .price { + font-size: 54rpx; + font-weight: 700; + } + + .text { + font-weight: 600; + font-size: 34rpx; + } + } + } + } + } + + .statuss { + padding-top: 25rpx; + + span { + color: #c1c1c1; + font-size: 18rpx; + line-height: 60rpx; + } + + .statusitem { + text-align: center; + padding: 0 40rpx; + display: inline-block; + height: 60rpx; + font-size: 30rpx; + color: #969394; + line-height: 60rpx; + } + } + } + + .tabs { + width: 100%; + + .tab-item { + margin: 20rpx 0 0 24rpx; + text-align: center; + width: 20%; + + .text { + width: 70%; + margin-left: 15%; + height: 30rpx; + background: #F44B2F; + border-radius: 9rpx; + color: #fff; + font-size: 24rpx; + line-height: 30rpx; + } + + .title { + font-size: 40rpx; + font-family: Source Han Sans CN; + font-weight: 500; + color: #F44B2F; + line-height: 59rpx; + } + } + } + } \ No newline at end of file diff --git a/pages/coupon/coupon.vue b/pages/coupon/coupon.vue new file mode 100644 index 0000000..190bd35 --- /dev/null +++ b/pages/coupon/coupon.vue @@ -0,0 +1,148 @@ + + + + diff --git a/pages/customerservice/customerservice.vue b/pages/customerservice/customerservice.vue index 69ec122..b083eb2 100644 --- a/pages/customerservice/customerservice.vue +++ b/pages/customerservice/customerservice.vue @@ -3,24 +3,26 @@ 长按识别二维码 - + diff --git a/pages/diseasemanagement/diseasemanagement.vue b/pages/diseasemanagement/diseasemanagement.vue index 5087545..bf4feac 100644 --- a/pages/diseasemanagement/diseasemanagement.vue +++ b/pages/diseasemanagement/diseasemanagement.vue @@ -1,6 +1,6 @@ @@ -31,21 +45,25 @@ onShow() {}, onLoad() {}, methods: { - //国家老年病 - gogeriatricdisease() { - uni.navigateTo({ - url: "/pages/geriatricdisease/geriatricdisease" - }) - }, //跳转专病管理小程序 godiseasemanagement() { - uni.navigateToMiniProgram({ - appId: 'wxa690d053c34ceebd', - path: '/pages/index/index', - extraData: { - 'from': 'qy' - }, - success(res) {} + const phone = uni.getStorageSync('phone'); + if (phone) { + uni.navigateToMiniProgram({ + appId: 'wxa690d053c34ceebd', + path: '/pages/index/index', + extraData: { + 'from': 'qy', + 'phone': phone + }, + success(res) {} + }) + } + }, + //老年病中心 + gogeriatricdisease() { + uni.navigateTo({ + url: '/pages/geriatricdisease/geriatricdisease' }) }, }, @@ -71,6 +89,60 @@ diff --git a/pages/login/login.vue b/pages/login/login.vue index fc098f1..01e9c5e 100644 --- a/pages/login/login.vue +++ b/pages/login/login.vue @@ -84,7 +84,6 @@ }) }, 1500) } else { - uni.removeStorageSync('token'); this.$refs.uToast.show({ title: '登录失败', type: 'error', diff --git a/pages/materialbenefits/materialbenefits.vue b/pages/materialbenefits/materialbenefits.vue index ba62d02..bdd68b4 100644 --- a/pages/materialbenefits/materialbenefits.vue +++ b/pages/materialbenefits/materialbenefits.vue @@ -1,83 +1,404 @@ - diff --git a/pages/modify/modify.scss b/pages/modify/modify.scss index ef09bc7..e860f38 100644 --- a/pages/modify/modify.scss +++ b/pages/modify/modify.scss @@ -2,19 +2,22 @@ background-color: #F4F5F7; width: 100%; color: #000000; - padding-bottom: 50rpx; - /deep/ .u-drawer{ + padding: 15rpx 0 50rpx; + + /deep/ .u-drawer { z-index: 0 !important; } - .Agreement{ + + .Agreement { width: 100%; background-color: #F4F5F7; text-align: center; height: 1000rpx; position: absolute; - top:5%; + top: 5%; font-size: 30rpx; - .title{ + + .title { height: 100rpx; line-height: 100rpx; border-bottom: 1px solid #eeeeee; @@ -23,110 +26,141 @@ width: 100%; text-align: center; } - .scroll-Y{ - height:830rpx ; - overflow-y:scroll; + + .scroll-Y { + height: 830rpx; + overflow-y: scroll; text-align: left; text-indent: 2em; } + .cancel { - height:70rpx; + height: 70rpx; line-height: 70rpx; font-size: 32rpx; background-color: #F4F5F7; position: absolute; border-top: 1rpx solid #000000; - bottom:0; - right:0; + bottom: 0; + right: 0; width: 50%; color: #000000; } + .determine { - height:70rpx; + height: 70rpx; line-height: 70rpx; font-size: 32rpx; width: 50%; color: #F4F5F7; background: #4C7BC9; position: absolute; - bottom:0; - left:0; + bottom: 0; + left: 0; } } + .radio-content { - margin: 50rpx auto; + margin: 30rpx auto 0; width: 70%; text-align: center; font-size: 28rpx; position: relative; + .agreement { position: absolute; - top:50%; - left:20%; + top: 50%; + left: 20%; transform: translateY(-50%); color: #878987; - } + } + .radio-right { height: 100rpx; - + .radio { display: inline-block; - width: 35rpx; - height: 35rpx; + width: 50rpx; + height: 50rpx; border-radius: 70%; border: 2rpx solid #178ffb; position: absolute; - top:50%; - left:5%; + top: 50%; + left: 5%; transform: translateY(-50%); + .radio-active { width: 16rpx; height: 16rpx; border-radius: 50%; background-color: #178ffb; - position: absolute; - top:50%; - left:50%; - transform: translate(-50%,-50%); + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); } } } } - .finish{ - width: 25%; - height: 68rpx; - background: #4C7BC9; - border-radius: 26rpx; + + .finish { + width: 70%; + height: 71rpx; + background: #557BC2; + border-radius: 36rpx; text-align: center; - line-height: 68rpx; + line-height: 71rpx; color: #fff; - margin-top: 50rpx; - margin-left: 65%; + margin: 30rpx auto 0; + font-size: 32rpx; } + .userinfo { width: 96%; background-color: #fff; margin: 0 auto; border-radius: 20rpx; - .disease{ + + .disease { width: 100%; margin: 0 auto; padding: 0 6% 0 3%; line-height: 80rpx; border-bottom: 1rpx solid #D8D4D4; position: relative; - view{ - display: inline-block; + + .title { + font-size: 30rpx; + display: block; + line-height: 120rpx; } + .pictureA { width: 18rpx; height: 27rpx; position: absolute; - right:30rpx; - top:50%; + right: 30rpx; + top: 50%; transform: translateY(-50%); } } + + .itemimgs { + width: 100%; + height: 400rpx; + border-bottom: 1rpx solid #D8D4D4; + position: relative; + + .picture { + width: 200rpx; + height: 200rpx; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + } + } + .item { width: 94%; margin: 0 auto; @@ -135,44 +169,30 @@ border-bottom: 1rpx solid #D8D4D4; position: relative; font-size: 30rpx; - .picture { - vertical-align: middle; - width: 180rpx; - height: 180rpx; + ::v-deep .u-radio-group{ position: absolute; - top:10rpx; - right:80rpx; - } - - .pictureA { - margin-left: 3%; - width: 18rpx; - height: 27rpx; - position: absolute; - right:20rpx; top:50%; transform: translateY(-50%); + left:170rpx; + } + ::v-deep .u-radio{ + width: 150rpx !important; } .address { position: absolute; - left:25%; - top:50%; + left: 25%; + top: 50%; width: 75%; transform: translateY(-50%); display: inline-block; height: 120rpx; line-height: 120rpx; - overflow:hidden; - text-overflow:ellipsis; - white-space:nowrap; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } - span { - display: inline-block; - line-height: 120rpx; - height: 120rpx; - width: 25%; - } + ::v-deep .u-input__input { height: 120rpx; @@ -190,8 +210,8 @@ line-height: 120rpx; width: 75%; position: absolute; - left:25%; - top:50%; + left: 25%; + top: 50%; transform: translateY(-50%); } } diff --git a/pages/modify/modify.vue b/pages/modify/modify.vue index 0780659..1b5658e 100644 --- a/pages/modify/modify.vue +++ b/pages/modify/modify.vue @@ -1,32 +1,46 @@ - - - diff --git a/pages/orderDetails/orderDetails.scss b/pages/orderDetails/orderDetails.scss index dfae148..7ef8e22 100644 --- a/pages/orderDetails/orderDetails.scss +++ b/pages/orderDetails/orderDetails.scss @@ -133,7 +133,6 @@ border-radius: 20rpx; margin: 30rpx auto; position: relative; - padding-bottom: 130rpx; .name { width: 95%; @@ -152,6 +151,8 @@ } .details { + height: 380rpx; + position: relative; .detailslist { display: flex; @@ -175,17 +176,18 @@ overflow: hidden; text-overflow: ellipsis; white-space: nowrap; - width: 70%; + width: 65%; } span:nth-child(2) { color: #969394; float: right; - margin-right: 30rpx; + margin-right: 20rpx; } .bottom { - margin-top: 40rpx; + // margin-top: 40rpx; + margin-top: 15rpx; .box { color: #969394; @@ -209,7 +211,6 @@ right: 20rpx; bottom: 100rpx; } - } } @@ -218,7 +219,7 @@ position: absolute; left: 2.5%; bottom: 20rpx; - + .pay { font-size: 30rpx; color: #020000; @@ -230,7 +231,6 @@ color: #D43953; margin-right: 10rpx; } - } } } diff --git a/pages/orderDetails/orderDetails.vue b/pages/orderDetails/orderDetails.vue index b342ec9..ae319b8 100644 --- a/pages/orderDetails/orderDetails.vue +++ b/pages/orderDetails/orderDetails.vue @@ -12,7 +12,7 @@ 店铺名称 - + @@ -20,15 +20,20 @@ {{order.goodsName}} - ¥{{order.goodsPrice}} + ¥{{order.goodsPrice}} 型号:{{order.goodsAttributeName}} X{{order.goodsCount}} + + 优惠金额: + -¥{{order.discountPrice}} + - 申请退款 + 取消兑换 + 申请退款 退款中 @@ -47,9 +52,15 @@ + 实付款 - ¥{{order.totalPrice}} + ¥{{order.totalPrice}} + {{order.integralExchangeSill}}积分 @@ -60,7 +71,10 @@ 订单编号:{{order.goOrderNo}} 下单时间:{{order.orderTime}} - 退款时间:{{order.updateTime}} + 退款时间:{{order.updateTime}} + 退款时间:{{order.appleTime}} diff --git a/pages/payorderDetails/payorderDetails.vue b/pages/payorderDetails/payorderDetails.vue index ef3957d..82b29af 100644 --- a/pages/payorderDetails/payorderDetails.vue +++ b/pages/payorderDetails/payorderDetails.vue @@ -12,7 +12,7 @@ 店铺名称 - + @@ -26,6 +26,10 @@ 型号:{{order.goodsAttributeName}} X{{order.goodsCount}} + + 优惠金额: + -¥{{order.discountPrice}} + 申请退款 diff --git a/pages/refundType/refundType.scss b/pages/refundType/refundType.scss index 4edb73e..c1e4dc5 100644 --- a/pages/refundType/refundType.scss +++ b/pages/refundType/refundType.scss @@ -7,7 +7,6 @@ box-shadow: 0px 9rpx 31rpx 9rpx rgba(0, 0, 0, 0.03); border-radius: 20rpx; margin: 0 auto; - padding-bottom: 60rpx; .name { width: 95%; @@ -27,6 +26,8 @@ .details { .detailslist { + position: relative; + height:340rpx; display: flex; image { diff --git a/pages/refundType/refundType.vue b/pages/refundType/refundType.vue index df7d132..557b917 100644 --- a/pages/refundType/refundType.vue +++ b/pages/refundType/refundType.vue @@ -10,13 +10,18 @@ {{order.goodsName}} - ¥{{order.goodsPrice}} + ¥{{order.goodsPrice}} 型号:{{order.goodsAttributeName}} X{{order.goodsCount}} - + + + 实付款 + ¥{{order.totalPrice}} + {{order.integralExchangeSill}}积分 @@ -31,7 +36,7 @@ 我要退款(无需退货) 没收到货 - + @@ -40,7 +45,7 @@ 我要退货退款 已收到货,需要退还收到的货物 - + diff --git a/pages/startup/startup.vue b/pages/startup/startup.vue index 803f6e6..1593810 100644 --- a/pages/startup/startup.vue +++ b/pages/startup/startup.vue @@ -33,7 +33,15 @@ path: url, } }, + onLoad(query) { + // scene 需要使用 decodeURIComponent 才能获取到生成二维码时传入的 scene + const scene = decodeURIComponent(query.scene) + if (scene >= 0) { + uni.setStorageSync("invitationPatientId", scene) + } + }, onShow() { + var that = this createMobileToken().then(res => { uni.setStorageSync("token", res.data.token) }) diff --git a/pages/user/user.scss b/pages/user/user.scss deleted file mode 100644 index ac4fe44..0000000 --- a/pages/user/user.scss +++ /dev/null @@ -1,145 +0,0 @@ - .app { - font-size: 35rpx; - padding: 0 0 200rpx 0; - position: relative; - .signout{ - // position: absolute; - // bottom: 60rpx; - // width: 94%; - background: #FFFFFF; - margin-top: 50rpx; - height: 80rpx; - line-height: 80rpx; - // left:3%; - border-radius: 20rpx; - text-align: center; - } - .External { - width: 94%; - height: 100rpx; - line-height: 100rpx; - margin: 20rpx auto; - padding-left: 5%; - background: #FFFFFF; - box-shadow: 0px 9rpx 31rpx 9rpx rgba(0, 0, 0, 0.03); - border-radius: 20rpx; - position: relative; - .righttext { - position: absolute; - right: 12%; - top: 50%; - color: #969394; - transform: translateY(-50%); - } - - image { - width: 18rpx; - height: 27rpx; - position: absolute; - right: 5%; - top: 50%; - transform: translateY(-50%); - } - - .lefttext, - .righttext { - display: inline-block; - } - } - - .information { - width: 94%; - border-radius: 20rpx; - position: absolute; - top: 250rpx; - left: 3%; - color: #000000; - padding:0 0 0 0; - overflow: hidden; - font-size: 32rpx; - .disease{ - box-shadow: 0px 9rpx 31rpx 9rpx rgba(0, 0, 0, 0.03); - line-height: 60rpx; - padding:0 0 40rpx 5%; - background: #FFFFFF; - border-radius: 0 0 20rpx 20rpx; - } - .addressitem { - box-shadow: 0px 9rpx 31rpx 9rpx rgba(0, 0, 0, 0.03); - // height: 110rpx; - line-height: 80rpx; - border-bottom: 1rpx solid #D8D4D4; - background: #FFFFFF; - .address{ - line-height: 50rpx;font-size: 28rpx;width: 90%;margin: 0 auto; - } - } - .item { - box-shadow: 0px 9rpx 31rpx 9rpx rgba(0, 0, 0, 0.03); - // height: 110rpx; - line-height: 110rpx; - border-bottom: 1rpx solid #D8D4D4; - padding:0 0 0 5%; - background: #FFFFFF; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - // .address { - // position: absolute; - // top:50%; - // transform: translateY(-50%); - // // font-size: 30rpx; - // display: inline-block; - // width: 80%; - // overflow: hidden; - // text-overflow: ellipsis; - // white-space: nowrap; - // } - } - } - - .user { - width: 100%; - height: 500rpx; - background: #4C7BC9; - position: relative; - color: #FFFFFF; - - .modify { - font-size: 32rpx; - position: absolute; - right: 3%; - top: 22%; - } - - .nickname { - position: absolute; - top: 26%; - left: 33%; - } - - .phone { - position: absolute; - top: 13%; - left: 33%; - } - - .img { - width: 150rpx; - height: 150rpx; - border-radius: 50%; - background: #F6F6F6; - position: absolute; - top: 10%; - left: 8%; - - image { - width: 100rpx; - margin-left: 50%; - margin-top: 50%; - transform: translate(-50%, -50%); - height: 100rpx; - } - } - } - } \ No newline at end of file diff --git a/pages/user/user.vue b/pages/user/user.vue index 224faed..e69de29 100644 --- a/pages/user/user.vue +++ b/pages/user/user.vue @@ -1,218 +0,0 @@ - - - - diff --git a/static/Tobepaid.png b/static/Tobepaid.png index 49c967e..6ba4f01 100644 Binary files a/static/Tobepaid.png and b/static/Tobepaid.png differ diff --git a/static/evaluated.png b/static/evaluated.png index 8cd65fa..4960d9a 100644 Binary files a/static/evaluated.png and b/static/evaluated.png differ diff --git a/static/finished.png b/static/finished.png index 0b35f09..2ef3914 100644 Binary files a/static/finished.png and b/static/finished.png differ diff --git a/static/jfgz.png b/static/jfgz.png new file mode 100644 index 0000000..ec3a141 Binary files /dev/null and b/static/jfgz.png differ diff --git a/static/jiantou.png b/static/jiantou.png deleted file mode 100644 index 80157cd..0000000 Binary files a/static/jiantou.png and /dev/null differ diff --git a/static/jifen.png b/static/jifen.png new file mode 100644 index 0000000..be885a6 Binary files /dev/null and b/static/jifen.png differ diff --git a/static/jifenbeij.png b/static/jifenbeij.png new file mode 100644 index 0000000..2884b46 Binary files /dev/null and b/static/jifenbeij.png differ diff --git a/static/jkda.png b/static/jkda.png new file mode 100644 index 0000000..a57abd7 Binary files /dev/null and b/static/jkda.png differ diff --git a/static/kefuzx.jpg b/static/kefuzx.jpg deleted file mode 100644 index f749fc5..0000000 Binary files a/static/kefuzx.jpg and /dev/null differ diff --git a/static/pic.png b/static/pic.png deleted file mode 100644 index bf2e92e..0000000 Binary files a/static/pic.png and /dev/null differ diff --git a/static/qiandao.png b/static/qiandao.png new file mode 100644 index 0000000..48544c1 Binary files /dev/null and b/static/qiandao.png differ diff --git a/static/received.png b/static/received.png index fd196a9..3c684ae 100644 Binary files a/static/received.png and b/static/received.png differ diff --git a/static/rowsright.png b/static/rowsright.png deleted file mode 100644 index dbf914f..0000000 Binary files a/static/rowsright.png and /dev/null differ diff --git a/static/user.png b/static/user.png index 6e70dbb..dac4233 100644 Binary files a/static/user.png and b/static/user.png differ diff --git a/static/userl.png b/static/userl.png new file mode 100644 index 0000000..f7224f5 Binary files /dev/null and b/static/userl.png differ diff --git a/static/xg.png b/static/xg.png new file mode 100644 index 0000000..4ba6bf1 Binary files /dev/null and b/static/xg.png differ diff --git a/static/yaoqing.png b/static/yaoqing.png new file mode 100644 index 0000000..e8870b1 Binary files /dev/null and b/static/yaoqing.png differ diff --git a/static/yhj.png b/static/yhj.png new file mode 100644 index 0000000..903860e Binary files /dev/null and b/static/yhj.png differ