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 @@
数量
-
+
+ 0?couponshow=true:''">
+
+
+ 已选择 {{coupon.couponTitle}}
+
+
+ 当前有优惠券可使用
+
+
+
+
+
+
+
+
+ 选择优惠券
+
+
+
+
+
+
+ ¥
+
+
+ {{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 @@
-
-
-
- 个人信息
+
+
+
+
+
+ {{appPersonallist.patientName}}
+
+
+
+ {{appPersonallist.age}}
+
+
+ 岁
+
+ {{appPersonallist.sex=='MALE'?'男':''}}
+ {{appPersonallist.sex=='FEMALE'?'女':''}}
+
+
+
+ {{appPersonallist.phone}}
+
+
+ 修改信息
+
-
-
-
- 我的订单
+
+
+
+
+ 登录
+
+
+
+
+ 健康档案
+
+
+
+
+
+ 积分
+
+ {{appPersonallist.integral}}
+
+ 0
+
+
+
+
+
+ 优惠券
+
+ {{appPersonallist.patientCouponCount}}
+
+ 0张
+
+
+
+
+
+
+ 商品订单
+
+
+ 查看全部
+
+
+
+
+
+
+ 待付款
+
+ {{appPersonallist.waitPayCount}}
+
+
+ 99+
+
+
+
+
+ 待收货
+
+ {{appPersonallist.waitReceivedGoodsCount}}
+
+
+ 99+
+
+
+
+
+ 待评价
+
+ {{appPersonallist.receivedGoodsCount}}
+
+
+ 99+
+
+
+
+
+ 已完成
+
+
+
+
+
+ 护理站服务订单
+
+
+
+ 退出账号
+
+
+
-
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 @@
+
+
+
+
+
+ 券
+
+
+ {{total}}张
+
+
+
+
+
+
+ 全部
+
+ |
+
+ 未使用
+
+ |
+
+ 已使用
+
+ |
+
+ 已过期
+
+
+
+
+
+
+
+ ¥
+
+
+ {{item.couponPrice}}
+
+
+
+ {{item.couponTitle}}
+
+
+ 满{{item.couponConsumePrice}}可用
+
+
+ 有效期至{{item.expirationEndTime}}
+
+
+ {{item.useStatus=='EXPIRED'?'已过期':''}}
+ {{item.useStatus=='USED'?'已使用':''}}
+
+
+ {{item.useStatus=='NOT_USED'?'使用':''}}
+
+
+
+ 领取来源:{{item.receiveSource =='NEW_PEOPLE_WELFARE'?'新人福利':''}}
+ {{item.receiveSource =='EVENT_GIFT'?'活动赠送':''}}
+ {{item.receiveSource =='CONSUME_REBATE'?'消费返券':''}}
+
+
+
+
+
+
+
+
+
+
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 @@
-
-
-
-
- 敬请期待
+
+
+
+ 券
+
+
+ {{total}}张
+
+
+
+
+
+
+
+
+
+ ¥
+
+
+ {{item.couponPrice}}
+
+
+
+ {{item.couponTitle}}
+
+
+ 满{{item.couponConsumePrice}}可用
+
+
+ 有效期至{{item.expirationEndTime}}
+
+
+ {{item.useStatus=='RECEIVE'?'领取':''}}
+
+
+ {{item.useStatus=='EXPIRED'?'已过期':''}}
+ {{item.useStatus=='USED'?'已使用':''}}
+
+
+ {{item.useStatus=='NOT_USED'?'使用':''}}
+
+
+
+ 领取来源:{{item.receiveSource =='NEW_PEOPLE_WELFARE'?'新人福利':''}}
+ {{item.receiveSource =='EVENT_GIFT'?'活动赠送':''}}
+ {{item.receiveSource =='CONSUME_REBATE'?'消费返券':''}}
+
+
+
+
+
+
+
+
+ 请完善个人信息
+
+
+ 取消
+
+
+ 去完善
+
+
+
+
-
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 @@
-
- 头像:
-
-
+
+
+
- 姓名:
+ 姓名:
+ maxlength='5' />
+
+
+ 性别:
+
+
+ {{item.name}}
+
+
+
+ 出生日期:
+
+ {{appPersonallist.birthDate}}
+
+
- 身份证号:
- 身份证号:
+
- 所属区域:
+ 所属区域:
{{address}}
- 详细地址:
+ 详细地址:
@@ -40,24 +54,25 @@
- 疾病类型:
-
-
+ 基础疾病:
+
+
{{item.diseaseName}}
-
+
- 我已阅读并同意我已阅读并同意《用户协议》
- 完成
+ 确认修改
@@ -82,9 +97,10 @@
@funcValue="getpickerParentValue" pickerSize="4">
+
+
-
-
-
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 @@
-
-
-
-
-
-
-
-
-
-
- {{appPersonallist.patientName}}
-
-
-
-
-
- 修改信息
-
-
-
-
-
- 姓名:{{appPersonallist.patientName}}
-
-
- 姓名:
-
-
- 电话:{{appPersonallist.phone}}
-
-
- 电话:
-
-
- 身份证:{{appPersonallist.cardNo}}
-
-
- 身份证:
-
-
-
- 区域:
-
-
- {{appPersonallist.areaName}}
-
-
-
-
- 区域:
-
-
-
-
-
-
- 地址:
-
-
- {{appPersonallist.address}}
-
-
-
-
- 地址:
-
-
-
-
- 疾病类型:
-
- {{item.diseaseName}}
-
-
- 退出账号
-
-
-
-
-
-
-
-
-
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