From 89de2bbaf2e81ab3fa7a8c2aad3b76bc81033d3d Mon Sep 17 00:00:00 2001
From: xuxueyang <xuxy@fengyuntec.com>
Date: 星期二, 23 七月 2024 18:44:27 +0800
Subject: [PATCH] update 订单功能(花店端)

---
 pages/login/supplier-login.vue                  |   14 
 pages/home/components/home-price.vue            |   91 
 sub_pages/customer/shopping/shopping.vue        |  361 +++++
 sub_pages/supplier/flower-manage/flower-add.vue |    4 
 sub_pages/customer/self/follow.vue              |   29 
 sub_pages/customer/self/collect.vue             |  150 ++
 pages.json                                      |  483 ++++---
 mixin/mixin.js                                  |  928 +++++++-------
 pages/login/supplier-reg.vue                    |    4 
 sub_pages/customer/shopping/confirm.vue         |  103 +
 store/index.js                                  |  791 ++++++------
 sub_pages/customer/trade/detail.vue             |  607 +++++----
 12 files changed, 2,121 insertions(+), 1,444 deletions(-)

diff --git a/mixin/mixin.js b/mixin/mixin.js
index a2ac9ad..f197668 100644
--- a/mixin/mixin.js
+++ b/mixin/mixin.js
@@ -1,496 +1,506 @@
 import {
-	mapState
+    mapState
 } from 'vuex'
 import store from "../store";
 
 import environments from '@/environments'
 
 const mixinsCommon = {
-	computed: {
-		...mapState({
-			hasLogin: state => {
-				// console.log('computed hasLogin',state.hasLogin,state)
-				return state.hasLogin || false
-			},
-			selftype: state => {
-				return (state.currentInfo || {}).type || ''
-			},
-			currentInfo: state => {
-				return state.currentInfo || {}
-			},
-			cache_address: state => {
-				return state.cache_address || {}
-			},
-			cache_user: state => {
-				return state.currentInfo || {}
-			},
-			sign: state => {
-				return state.sign || {}
-			},
-			// currentEnId: state=>{
-			// 	// console.log('currentEnId',state.currentInfo.enId,state.currentInfo)
-			// 	return state.currentInfo.enId || ''
-			// }
-		}),
-	},
-	data() {
-		return {
-			list: [],
-			query: {},
-			page: {
-				size: 10,
-				current: 1,
-				total: 0,
-			},
-			style: {
-				'color': '#fff'
-			},
-			listApi: '',
-			regUserName: '用户-' + this.getRandomName(Math.floor(Math.random() * (6 - 2) + 3)),
-			regAvatarUrl: 'https://youzhen123.oss-cn-huhehaote.aliyuncs.com/WechatOwnerProperty/images/mrtx.png',
+    computed: {
+        ...mapState({
+            hasLogin: state => {
+                // console.log('computed hasLogin',state.hasLogin,state)
+                return state.hasLogin || false
+            },
+            selftype: state => {
+                return (state.currentInfo || {}).type || ''
+            },
+            currentInfo: state => {
+                return state.currentInfo || {}
+            },
+            cache_address: state => {
+                return state.cache_address || {}
+            },
+            cache_user: state => {
+                return state.currentInfo || {}
+            },
+            sign: state => {
+                return state.sign || {}
+            },
+            // currentEnId: state=>{
+            // 	// console.log('currentEnId',state.currentInfo.enId,state.currentInfo)
+            // 	return state.currentInfo.enId || ''
+            // }
+        }),
+    },
+    data() {
+        return {
+            list: [],
+            query: {},
+            page: {
+                size: 10,
+                current: 1,
+                total: 0,
+            },
+            style: {
+                'color': '#fff'
+            },
+            listApi: '',
+            regUserName: '用户-' + this.getRandomName(Math.floor(Math.random() * (6 - 2) + 3)),
+            regAvatarUrl: 'https://youzhen123.oss-cn-huhehaote.aliyuncs.com/WechatOwnerProperty/images/mrtx.png',
 
-		}
-	},
-	methods: {
-		onChooseavatar(e) {
-			let self = this;
-			let {
-				avatarUrl
-			} = e.detail;
-			this.regAvatarUrl = avatarUrl
-			console.log('avatarUrl', this.regAvatarUrl)
-		},
-		onBindblur(e) {
-			this.regUserName = e.detail.value; // 获取微信昵称
-		},
-		onBindinput(e) {
-			this.regUserName = e.detail.value; // 获取微信昵称
-		},
-		randomAccess(min, max) {
-			return Math.floor(Math.random() * (min - max) + max)
-		},
-		getRandomName(NameLength) {
-			let name = ""
-			for (let i = 0; i < NameLength; i++) {
-				let unicodeNum = ""
-				unicodeNum = this.randomAccess(0x4e00, 0x9fa5).toString(16)
-				name += this.decodeUnicode(unicodeNum)
-			}
-			return name
-		},
-		decodeUnicode(str) {
-			//Unicode显示方式是\u4e00
-			str = "\\u" + str
-			str = str.replace(/\\/g, "%");
-			//转换中文
-			str = unescape(str);
-			//将其他受影响的转换回原来
-			str = str.replace(/%/g, "\\");
-			return str;
-		},
-		async onWxCheckSubmit() {
-			if (this.regUserName == '微信用户') {
-				this.$message.showToast('昵称不合规,不可以叫做:微信用户哈~')
-				return
-			}
-			//保存一下
-			//先上传图片
-			if (this.regAvatarUrl ===
-				'https://youzhen123.oss-cn-huhehaote.aliyuncs.com/WechatOwnerProperty/images/mrtx.png') {
-				var picture = this.regAvatarUrl
-				//更新接口
-				this.$message.showLoading()
-				const {
-					code
-				} = await this.$http.request('post', "/api/current/user/update", {
-					data: {
-						...this.dto,
-						nickName: this.regUserName,
-						picture: picture
-					}
-				})
+        }
+    },
+    methods: {
+        onChooseavatar(e) {
+            let self = this;
+            let {
+                avatarUrl
+            } = e.detail;
+            this.regAvatarUrl = avatarUrl
+            console.log('avatarUrl', this.regAvatarUrl)
+        },
+        onBindblur(e) {
+            this.regUserName = e.detail.value; // 获取微信昵称
+        },
+        onBindinput(e) {
+            this.regUserName = e.detail.value; // 获取微信昵称
+        },
+        randomAccess(min, max) {
+            return Math.floor(Math.random() * (min - max) + max)
+        },
+        getRandomName(NameLength) {
+            let name = ""
+            for (let i = 0; i < NameLength; i++) {
+                let unicodeNum = ""
+                unicodeNum = this.randomAccess(0x4e00, 0x9fa5).toString(16)
+                name += this.decodeUnicode(unicodeNum)
+            }
+            return name
+        },
+        decodeUnicode(str) {
+            //Unicode显示方式是\u4e00
+            str = "\\u" + str
+            str = str.replace(/\\/g, "%");
+            //转换中文
+            str = unescape(str);
+            //将其他受影响的转换回原来
+            str = str.replace(/%/g, "\\");
+            return str;
+        },
+        async onWxCheckSubmit() {
+            if (this.regUserName == '微信用户') {
+                this.$message.showToast('昵称不合规,不可以叫做:微信用户哈~')
+                return
+            }
+            //保存一下
+            //先上传图片
+            if (this.regAvatarUrl ===
+                'https://youzhen123.oss-cn-huhehaote.aliyuncs.com/WechatOwnerProperty/images/mrtx.png') {
+                var picture = this.regAvatarUrl
+                //更新接口
+                this.$message.showLoading()
+                const {
+                    code
+                } = await this.$http.request('post', "/api/current/user/update", {
+                    data: {
+                        ...this.dto,
+                        nickName: this.regUserName,
+                        picture: picture
+                    }
+                })
 
-				this.$message.hideLoading()
-				this.$forceUpdate()
-				if (code == 0) {
-					this.$refs.popup_info.close()
-					this.$message.showToast('设置成功')
-					this.currentInfo.picture = picture
-					this.currentInfo.nickName = this.regUserName
-				} else {
+                this.$message.hideLoading()
+                this.$forceUpdate()
+                if (code == 0) {
+                    this.$refs.popup_info.close()
+                    this.$message.showToast('设置成功')
+                    this.currentInfo.picture = picture
+                    this.currentInfo.nickName = this.regUserName
+                } else {
 
-				}
-			} else {
-				this.$http.upload(this.regAvatarUrl).then(async res => {
-					var picture = res.data && res.data.length > 0 && res.data[0].url || ''
-					//更新接口
-					this.$message.showLoading()
-					const {
-						code
-					} = await this.$http.request('post', "/api/current/user/update", {
-						data: {
-							...this.currentInfo,
-							nickName: this.regUserName,
-							picture: picture
-						}
-					})
+                }
+            } else {
+                this.$http.upload(this.regAvatarUrl).then(async res => {
+                    var picture = res.data && res.data.length > 0 && res.data[0].url || ''
+                    //更新接口
+                    this.$message.showLoading()
+                    const {
+                        code
+                    } = await this.$http.request('post', "/api/current/user/update", {
+                        data: {
+                            ...this.currentInfo,
+                            nickName: this.regUserName,
+                            picture: picture
+                        }
+                    })
 
-					this.$message.hideLoading()
-					this.$forceUpdate()
-					if (code == 0) {
-						this.$refs.popup_info.close()
-						this.$message.showToast('设置成功')
-						this.currentInfo.picture = picture
-						this.currentInfo.nickName = this.regUserName
-					} else {
+                    this.$message.hideLoading()
+                    this.$forceUpdate()
+                    if (code == 0) {
+                        this.$refs.popup_info.close()
+                        this.$message.showToast('设置成功')
+                        this.currentInfo.picture = picture
+                        this.currentInfo.nickName = this.regUserName
+                    } else {
 
-					}
-				})
-			}
-		},
+                    }
+                })
+            }
+        },
 
 
-		async getUserProfile(e) {
-			this.$message.showLoading()
-			const res = await wx.getUserProfile({
-				desc: '用于完善会员资料',
-			});
-			console.log(res);
-			this.$message.hideLoading()
-			this.login_Wx(res.userInfo.avatarUrl, res.userInfo.nickName)
-		},
-		login_Wx(imgurl, nickname) {
-			//获取openId
-			// /wx/jscode2session
-			let inviter = this.$storage.getItem('inviter') || ''
-			let inviterName = this.$storage.getItem('inviterName') || ''
-			//有效24小时
-			if (inviter) {
-				var inviterTime = this.$storage.getItem('inviterTime')
-				if (new Date().getTime() > parseInt(inviterTime) + 1000 * 3600 * 24) {
-					inviter = ''
-					inviterName = ''
-					this.$storage.removeItem('inviter')
-					this.$storage.removeItem('inviterTime')
-					this.$storage.removeItem('inviterName')
-				}
-			}
+        async getUserProfile(e) {
+            this.$message.showLoading()
+            const res = await wx.getUserProfile({
+                desc: '用于完善会员资料',
+            });
+            console.log(res);
+            this.$message.hideLoading()
+            this.login_Wx(res.userInfo.avatarUrl, res.userInfo.nickName)
+        },
+        login_Wx(imgurl, nickname) {
+            //获取openId
+            // /wx/jscode2session
+            let inviter = this.$storage.getItem('inviter') || ''
+            let inviterName = this.$storage.getItem('inviterName') || ''
+            //有效24小时
+            if (inviter) {
+                var inviterTime = this.$storage.getItem('inviterTime')
+                if (new Date().getTime() > parseInt(inviterTime) + 1000 * 3600 * 24) {
+                    inviter = ''
+                    inviterName = ''
+                    this.$storage.removeItem('inviter')
+                    this.$storage.removeItem('inviterTime')
+                    this.$storage.removeItem('inviterName')
+                }
+            }
 
 
-			const tmp = this;
-			this.$message.showLoading()
-			this.openid = this.$storage.getItem('openid');
-			this.tel = this.$storage.getItem('tel');
-			console.log('info,info,info,info,info,info', this.openid, this.tel);
-			if (!!this.openid && !!this.tel) {
-				// this.login = true;
-			} else {
-				// this.login = false;
-				console.log('wx.login');
-				wx.login({
-					success: async res => {
-						if (res.code) {
-							//微信登录成功 已拿到code
-							// tmp.login = true;
-							// tmp.jsCode = res.code; //保存获取到的code
-							console.log('abcd', res.code);
-							// this.$http.request('post',`/api/login/wechat`,{data:{code:tmp.jsCode}})
-							this.$storage.setItem('jsCode', res.code);
-							const res2 = await wx.getUserInfo();
-							console.log('res', res2);
-							this.tcode = res.code || ''
-							// if (nickname == '微信用户' || true) {
-							// 	//跳出弹出框,获取具体用户信息
-							// 	tmp.$message.hideLoading()
+            const tmp = this;
+            this.$message.showLoading()
+            this.openid = this.$storage.getItem('openid');
+            this.tel = this.$storage.getItem('tel');
+            console.log('info,info,info,info,info,info', this.openid, this.tel);
+            if (!!this.openid && !!this.tel) {
+                // this.login = true;
+            } else {
+                // this.login = false;
+                console.log('wx.login');
+                wx.login({
+                    success: async res => {
+                        if (res.code) {
+                            //微信登录成功 已拿到code
+                            // tmp.login = true;
+                            // tmp.jsCode = res.code; //保存获取到的code
+                            console.log('abcd', res.code);
+                            // this.$http.request('post',`/api/login/wechat`,{data:{code:tmp.jsCode}})
+                            this.$storage.setItem('jsCode', res.code);
+                            const res2 = await wx.getUserInfo();
+                            console.log('res', res2);
+                            this.tcode = res.code || ''
+                            // if (nickname == '微信用户' || true) {
+                            // 	//跳出弹出框,获取具体用户信息
+                            // 	tmp.$message.hideLoading()
 
-							// 	this.$refs.popup_info.open()
+                            // 	this.$refs.popup_info.open()
 
-							// } else {
-							await this.$store.dispatch('loginwx', {
-								code: res.code,
-								imgurl: imgurl,
-								nickname: nickname,
-								inviter: inviter
-							});
-							tmp.$message.hideLoading()
-							this.$forceUpdate()
-							//延迟,如果用户昵称是微信用户的话?
-							
-							setTimeout(() => {
-								if (tmp.currentInfo && tmp.currentInfo.id) {
-									if (tmp.currentInfo.nickName == '微信用户') {
-										tmp.$refs.popup_info && tmp.$refs.popup_info.open()
-									}
-								}
-							}, 500)
-							// }
+                            // } else {
+                            await this.$store.dispatch('loginwx', {
+                                code: res.code,
+                                imgurl: imgurl,
+                                nickname: nickname,
+                                inviter: inviter
+                            });
+                            tmp.$message.hideLoading()
+                            this.$forceUpdate()
+                            //延迟,如果用户昵称是微信用户的话?
 
-						} else {
-							tmp.$message.hideLoading()
-							tmp.$message.showToast('微信登录失败');
+                            setTimeout(() => {
+                                if (tmp.currentInfo && tmp.currentInfo.id) {
+                                    if (tmp.currentInfo.nickName == '微信用户') {
+                                        tmp.$refs.popup_info && tmp.$refs.popup_info.open()
+                                    }
+                                }
+                            }, 500)
+                            // }
 
-						}
-					},
-					error: res => {
-						console.log('wx.login error', res);
-						tmp.$message.hideLoading()
+                        } else {
+                            tmp.$message.hideLoading()
+                            tmp.$message.showToast('微信登录失败');
 
-						tmp.$message.showToast('微信授权失败');
-					}
-				});
-			}
-		},
+                        }
+                    },
+                    error: res => {
+                        console.log('wx.login error', res);
+                        tmp.$message.hideLoading()
 
-		previewImg(url) {
-			if (url) {
-				uni.previewImage({
-					urls: [url]
-				})
-			}
-		},
-		checkFormValues(dto, keys) {
-			if (keys) {
-				for (var key of keys) {
-					if (!dto[key]) {
-						return false
-					}
-				}
-			}
-			return true
-		},
-		async refreshList(){
-			this.page.current = 1
-			await this.getList()
-		},
-		async getList(type='get') {
-			if (this.listApi) {
-				this.$message.showLoading()
-				const {
-					data
-				} = await this.$http.request(type, this.listApi, {
-					params: {
-						...this.query,
-						...this.page
-					},
-					data:{
-						...this.query,
-						...this.page
-					}
-				})
-				if (data) {
-					if (this.page.current == 1) {
-						this.list = data.records || []
-					} else {
-						//根据id去重正常
-						var ids = []
-						for (var item of this.list) {
-							ids.push(item.id)
-						}
-						for (var item of data.records) {
-							if (ids.indexOf(item.id) < 0) {
-								this.list.push(item)
-							}
-						}
+                        tmp.$message.showToast('微信授权失败');
+                    }
+                });
+            }
+        },
 
-					}
-					this.page.total = data.total || 0
-				}
-				this.$message.hideLoading()
-			}
+        previewImg(url) {
+            if (url) {
+                uni.previewImage({
+                    urls: [url]
+                })
+            }
+        },
+        checkFormValues(dto, keys) {
+            if (keys) {
+                for (var key of keys) {
+                    if (!dto[key]) {
+                        return false
+                    }
+                }
+            }
+            return true
+        },
+        async refreshList() {
+            this.page.current = 1
+            await this.getList()
+        },
+        async getList(type = 'get') {
+            if (this.listApi) {
+                this.$message.showLoading()
+                const {
+                    data
+                } = await this.$http.request(type, this.listApi, {
+                    params: {
+                        ...this.query,
+                        ...this.page
+                    },
+                    data: {
+                        ...this.query,
+                        ...this.page
+                    }
+                })
+                if (data) {
+                    if (this.page.current == 1) {
+                        this.list = data.records || []
+                    } else {
+                        //根据id去重正常
+                        var ids = []
+                        for (var item of this.list) {
+                            ids.push(item.id)
+                        }
+                        for (var item of data.records) {
+                            if (ids.indexOf(item.id) < 0) {
+                                this.list.push(item)
+                            }
+                        }
 
-		},
-		async getMore(type='get') {
-			if (this.page.total > this.page.current * this.page.size) {
-				this.page.current += 1
-				await this.getList(type)
-			}
-		},
-		backHome() {
-			uni.reLaunch({
-				url: '/pages/home/home'
-			})
-		},
-		goto(url, check = false) {
-			if (check) {
-				console.log('currentInfo', this.currentInfo)
-				if (!this.currentInfo.id) {
-					this.$message.showToast('请先登陆')
-					return
-				}
+                    }
+                    this.page.total = data.total || 0
+                }
+                this.$message.hideLoading()
+            }
 
-			}
-			uni.navigateTo({
-				url
-			})
-		},
-		backpage() {
-			// this.$router.go(-1)
-			uni.navigateBack()
-		}
-		// #ifdef APP || H5
-		,
-		async appdownload(url, name = '') {
-				await this.$message.confirm('确定下载此文件吗')
-				let _this = this
-				if (url) {
-					// var url2 = environments.httpBaseUri + `/api/download/file?fileName=${name}&filePath=` + url
-					// uni.downloadFile({
-					// 	url: url2,
-					// 	success: (res) => {
-					// 		if (res.statusCode === 200) {
-					// 			_this.$message.showToast('下载成功')
-					// 		} else {
-					// 			console.log(res)
-					// 			_this.$message.showToast('下载失败')
-					// 		}
-					// 	},
-					// 	fail: (res) => {
-					// 		console.log(res)
-					// 		_this.$message.showToast('下载失败')
-					// 	}
-					// });
-					_this.$message.showLoading()
+        },
+        async getMore(type = 'get') {
+            if (this.page.total > this.page.current * this.page.size) {
+                this.page.current += 1
+                await this.getList(type)
+            }
+        },
+        backHome() {
+            uni.reLaunch({
+                url: '/pages/home/home'
+            })
+        },
+        goto(url, check = false) {
+            if (check) {
+                console.log('currentInfo', this.currentInfo)
+                if (!this.currentInfo.id) {
+                    this.$message.showToast('请先登陆')
+                    return
+                }
 
-					uni.downloadFile({
-						url: url, //下载地址接口返回
-						success: (data) => {
-							_this.$message.hideLoading()
-							console.log('success', data)
-							if (data.statusCode === 200) {
-								//文件保存到本地
-								uni.saveFile({
-									tempFilePath: data.tempFilePath, //临时路径
-									success: function(res) {
-										uni.showToast({
-											icon: 'none',
-											mask: true,
-											title: '文件已保存:' + res
-												.savedFilePath, //保存路径
-											duration: 2000,
-										});
-										setTimeout(() => {
-											//打开文档查看
-											uni.openDocument({
-												filePath: res.savedFilePath,
-												success: function(res) {
-													// console.log('打开文档成功');
-												}
-											});
-										}, 2000)
-									},
-									fail: (err) => {
+            }
+            uni.navigateTo({
+                url
+            })
+        },
+        backpage() {
+            // this.$router.go(-1)
+            uni.navigateBack()
+        }
+        // #ifdef APP || H5
+        ,
+        async appdownload(url, name = '') {
+            await this.$message.confirm('确定下载此文件吗')
+            let _this = this
+            if (url) {
+                // var url2 = environments.httpBaseUri + `/api/download/file?fileName=${name}&filePath=` + url
+                // uni.downloadFile({
+                // 	url: url2,
+                // 	success: (res) => {
+                // 		if (res.statusCode === 200) {
+                // 			_this.$message.showToast('下载成功')
+                // 		} else {
+                // 			console.log(res)
+                // 			_this.$message.showToast('下载失败')
+                // 		}
+                // 	},
+                // 	fail: (res) => {
+                // 		console.log(res)
+                // 		_this.$message.showToast('下载失败')
+                // 	}
+                // });
+                _this.$message.showLoading()
 
-										console.log(err);
-										uni.showToast({
-											icon: 'none',
-											mask: true,
-											title: '下载成功保存失败',
-										});
-									},
-								});
-							}
-						},
-						fail: (err) => {
-							_this.$message.hideLoading()
+                uni.downloadFile({
+                    url: url, //下载地址接口返回
+                    success: (data) => {
+                        _this.$message.hideLoading()
+                        console.log('success', data)
+                        if (data.statusCode === 200) {
+                            //文件保存到本地
+                            uni.saveFile({
+                                tempFilePath: data.tempFilePath, //临时路径
+                                success: function (res) {
+                                    uni.showToast({
+                                        icon: 'none',
+                                        mask: true,
+                                        title: '文件已保存:' + res
+                                            .savedFilePath, //保存路径
+                                        duration: 2000,
+                                    });
+                                    setTimeout(() => {
+                                        //打开文档查看
+                                        uni.openDocument({
+                                            filePath: res.savedFilePath,
+                                            success: function (res) {
+                                                // console.log('打开文档成功');
+                                            }
+                                        });
+                                    }, 2000)
+                                },
+                                fail: (err) => {
 
-							console.log(err);
-							uni.showToast({
-								icon: 'none',
-								mask: true,
-								title: '失败请重新下载',
-							});
-						},
-					});
-				}
-			}
-			// #endif
-			// #ifdef MP
-			,
-		async wxdownload(url, name = '') {
-			await this.$message.confirm('是否要下载此文件')
-			var url2 = environments.httpBaseUri + `/api/download/file?fileName=${name}&filePath=` + url
+                                    console.log(err);
+                                    uni.showToast({
+                                        icon: 'none',
+                                        mask: true,
+                                        title: '下载成功保存失败',
+                                    });
+                                },
+                            });
+                        }
+                    },
+                    fail: (err) => {
+                        _this.$message.hideLoading()
 
-			let that = this
-			that.$message.showLoading()
-			// wx.sa
-			// wx.downloadFile({
-			// 	url: url2,
-			// 	success: res => {
-			// 		that.$message.showToast('下载成功')
+                        console.log(err);
+                        uni.showToast({
+                            icon: 'none',
+                            mask: true,
+                            title: '失败请重新下载',
+                        });
+                    },
+                });
+            }
+        }
+        // #endif
+        // #ifdef MP
+        ,
+        async wxdownload(url, name = '') {
+            await this.$message.confirm('是否要下载此文件')
+            var url2 = environments.httpBaseUri + `/api/download/file?fileName=${name}&filePath=` + url
 
-			// 	},
-			// 	fail: res => {
-			// 		that.$message.showToast('下载失败')
+            let that = this
+            that.$message.showLoading()
+            // wx.sa
+            // wx.downloadFile({
+            // 	url: url2,
+            // 	success: res => {
+            // 		that.$message.showToast('下载成功')
 
-			// 	},
-			// 	complete: res => {
-			// 		that.$message.hideLoading()
-			// 	}
-			// })
-			wx.downloadFile({
-				url: url,
-				timeout: 120000,
-				success(res) {
-					that.$message.hideLoading()
-					console.log('res', res)
-					if (res.statusCode === 200) {
-						const filePath = res.tempFilePath
-						if (filePath.endsWith('.jpg') ||
-							filePath.endsWith('.jpeg') ||
-							filePath.endsWith('.png') ||
-							filePath.endsWith('.jpg')) {
-							wx.saveImageToPhotosAlbum({
-								filePath: filePath,
-								success: function(res) {
-									that.$message.showToast('保存图片成功')
-								},
-								fail: function(res) {
-									that.$message.showToast('打开文档失败,非支持的类型')
-								}
-							})
+            // 	},
+            // 	fail: res => {
+            // 		that.$message.showToast('下载失败')
 
-						} else if (filePath.endsWith('.mp4') ||
-							filePath.endsWith('.flv') ||
-							filePath.endsWith('.avi') ||
-							filePath.endsWith('.wmv') ||
-							filePath.endsWith('.mpeg')) {
-							wx.saveVideoToPhotosAlbum({
-								filePath: filePath,
-								success: function(res) {
-									that.$message.showToast('保存视频成功')
-								},
-								fail: function(res) {
-									that.$message.showToast('打开文档失败,非支持的类型')
-								}
-							})
+            // 	},
+            // 	complete: res => {
+            // 		that.$message.hideLoading()
+            // 	}
+            // })
+            wx.downloadFile({
+                url: url,
+                timeout: 120000,
+                success(res) {
+                    that.$message.hideLoading()
+                    console.log('res', res)
+                    if (res.statusCode === 200) {
+                        const filePath = res.tempFilePath
+                        if (filePath.endsWith('.jpg') ||
+                            filePath.endsWith('.jpeg') ||
+                            filePath.endsWith('.png') ||
+                            filePath.endsWith('.jpg')) {
+                            wx.saveImageToPhotosAlbum({
+                                filePath: filePath,
+                                success: function (res) {
+                                    that.$message.showToast('保存图片成功')
+                                },
+                                fail: function (res) {
+                                    that.$message.showToast('打开文档失败,非支持的类型')
+                                }
+                            })
 
-						} else {
-							wx.openDocument({
-								filePath: filePath,
-								showMenu: true, //关键点
-								success: function(res) {
-									console.log('打开文档成功')
-								},
-								fail: function(res) {
-									that.$message.showToast('打开文档失败,非支持的类型')
-								}
-							})
-						}
-					} else {
-						that.$message.showToast('下载失败,服务器内部错误')
+                        } else if (filePath.endsWith('.mp4') ||
+                            filePath.endsWith('.flv') ||
+                            filePath.endsWith('.avi') ||
+                            filePath.endsWith('.wmv') ||
+                            filePath.endsWith('.mpeg')) {
+                            wx.saveVideoToPhotosAlbum({
+                                filePath: filePath,
+                                success: function (res) {
+                                    that.$message.showToast('保存视频成功')
+                                },
+                                fail: function (res) {
+                                    that.$message.showToast('打开文档失败,非支持的类型')
+                                }
+                            })
 
-					}
-				},
-				fail: res => {
-					that.$message.hideLoading()
-					that.$message.showToast('下载失败')
-				},
-				complete: res => {
+                        } else {
+                            wx.openDocument({
+                                filePath: filePath,
+                                showMenu: true, //关键点
+                                success: function (res) {
+                                    console.log('打开文档成功')
+                                },
+                                fail: function (res) {
+                                    that.$message.showToast('打开文档失败,非支持的类型')
+                                }
+                            })
+                        }
+                    } else {
+                        that.$message.showToast('下载失败,服务器内部错误')
 
-				}
-			})
-		}
-		// #endif
-	}
+                    }
+                },
+                fail: res => {
+                    that.$message.hideLoading()
+                    that.$message.showToast('下载失败')
+                },
+                complete: res => {
+
+                }
+            })
+        }
+        // #endif
+
+        // #ifdef PUB_CUSTOMER
+        ,
+        async submitShopping(dto) {
+			//提交到购物车中
+            this.$message.showLoading()
+            await this.$store.dispatch('submitShopping',dto);
+            this.$message.hideLoading()
+        }
+        // #endif
+    }
 }
 export default mixinsCommon
\ No newline at end of file
diff --git a/pages.json b/pages.json
index d289514..4accc4b 100644
--- a/pages.json
+++ b/pages.json
@@ -1,240 +1,255 @@
 {
-	// 如果您是通过uni_modules形式引入uView,可以忽略此配置
-	"easycom": {
-		"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
-	},
-	"pages": [{
-			"path": "pages/login/supplier-login",
-			"style": {
-				"navigationBarTitleText": "登录",
-				"enablePullDownRefresh": false,
-				"navigationStyle": "custom"
-			}
-		}, {
-			"path": "pages/home/supplier-home",
-			"style": {
-				"navigationBarTitleText": "首页",
-				"enablePullDownRefresh": true,
-				"navigationStyle": "custom"
-			}
+  // 如果您是通过uni_modules形式引入uView,可以忽略此配置
+  "easycom": {
+    "^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
+  },
+  "pages": [
+    {
+      "path": "pages/login/supplier-login",
+      "style": {
+        "navigationBarTitleText": "登录",
+        "enablePullDownRefresh": false,
+        "navigationStyle": "custom"
+      }
+    },
+    {
+      "path": "pages/home/supplier-home",
+      "style": {
+        "navigationBarTitleText": "首页",
+        "enablePullDownRefresh": true,
+        "navigationStyle": "custom"
+      }
+    },
+    // #ifdef PUB_CUSTOMER
+    {
+      "path": "pages/home/home",
+      "style": {
+        "navigationBarTitleText": "首页",
+        "enablePullDownRefresh": true,
+        "navigationStyle": "custom"
+      }
+    },
+    {
+      "path": "pages/user/address/address",
+      "style": {
+        "navigationBarTitleText": "收货地址",
+        "enablePullDownRefresh": false
+      }
+    },
+    // #endif
 
-		},
-		// #ifdef PUB_CUSTOMER
-		{
-			"path": "pages/home/home",
-			"style": {
-				"navigationBarTitleText": "首页",
-				"enablePullDownRefresh": true,
-				"navigationStyle": "custom"
-			}
+    // #ifdef PUB_SUPPLIER
+    {
+      "path": "pages/login/supplier-reg",
+      "style": {
+        "navigationBarTitleText": "申请入驻",
+        "navigationStyle": "custom"
+      }
+    },
+    // #endif
 
-		},
-		{
-			"path": "pages/user/address/address",
-			"style": {
-				"navigationBarTitleText": "收货地址",
-				"enablePullDownRefresh": false
-			}
-		},
-		// #endif 
-
-		// #ifdef PUB_SUPPLIER
-		{
-			"path": "pages/login/supplier-reg",
-			"style": {
-				"navigationBarTitleText": "申请入驻",
-				"navigationStyle": "custom"
-			}
-		},
-		// #endif 
-
-		// #ifdef PUB_PARTNER
-		{
-			"path": "pages/login/supplier-reg",
-			"style": {
-				"navigationBarTitleText": "申请入驻"
-			}
-		},
-		// #endif 
-		{
-			"path": "pages/user/supplier-user",
-			"style": {
-				"navigationBarTitleText": "我的",
-				"enablePullDownRefresh": true,
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/user/user-info/user-info",
-			"style": {
-				"navigationBarTitleText": "我的信息",
-				"enablePullDownRefresh": false
-			}
-		},
-		{
-			"path": "pages/notice/notice",
-			"style": {
-				"navigationBarTitleText": "通知公告",
-				"enablePullDownRefresh": false
-			}
-		},
-		{
-			"path": "pages/notice/list",
-			"style": {
-				"navigationBarTitleText": "通知公告",
-				"enablePullDownRefresh": true
-			}
-		},
-		{
-			"path": "pages/user/user-pwd/user-pwd",
-			"style": {
-				"navigationBarTitleText": "修改密码",
-				"enablePullDownRefresh": false
-			}
-		}
-
-	],
-
-	"subPackages": [{
-		"root": "sub_pages/supplier",
-		"pages": [
-			// #ifdef PUB_SUPPLIER
-			{
-				"path": "supplier-info/supplier-info",
-				"style": {
-					"navigationBarTitleText": "信息维护",
-					"enablePullDownRefresh": false
-				}
-			},
-			{
-				"path": "flower-manage/flower-manage",
-				"style": {
-					"navigationBarTitleText": "商品管理",
-					"enablePullDownRefresh": true
-				}
-			},
-			{
-				"path": "flower-manage/flower-add",
-				"style": {
-					"navigationBarTitleText": "",
-					"enablePullDownRefresh": false
-				}
-			},
-			// #endif
-			{
-				"path": "order-settlement/order-settlement",
-				"style": {
-					"navigationBarTitleText": "账单结算",
-					"enablePullDownRefresh": true
-				}
-			},
-
-			{
-				"path": "order-sale/order-sale",
-				"style": {
-					"navigationBarTitleText": "售后理赔",
-					"enablePullDownRefresh": true
-				}
-			},
-			{
-				"path": "order-records/order-records",
-				"style": {
-					"navigationBarTitleText": "扣款记录",
-					"enablePullDownRefresh": true,
-					"navigationBarBackgroundColor": "#E6F2EB"
-
-				}
-			},
-
-			{
-				"path": "protocol",
-				"style": {
-					"navigationBarTitleText": "协议",
-					"enablePullDownRefresh": false
-				}
-			}
-		]
+    // #ifdef PUB_PARTNER
+    {
+      "path": "pages/login/supplier-reg",
+      "style": {
+        "navigationBarTitleText": "申请入驻"
+      }
+    },
+    // #endif
+    {
+      "path": "pages/user/supplier-user",
+      "style": {
+        "navigationBarTitleText": "我的",
+        "enablePullDownRefresh": true,
+        "navigationStyle": "custom"
+      }
+    },
+    {
+      "path": "pages/user/user-info/user-info",
+      "style": {
+        "navigationBarTitleText": "我的信息",
+        "enablePullDownRefresh": false
+      }
+    },
+    {
+      "path": "pages/notice/notice",
+      "style": {
+        "navigationBarTitleText": "通知公告",
+        "enablePullDownRefresh": false
+      }
+    },
+    {
+      "path": "pages/notice/list",
+      "style": {
+        "navigationBarTitleText": "通知公告",
+        "enablePullDownRefresh": true
+      }
+    },
+    {
+      "path": "pages/user/user-pwd/user-pwd",
+      "style": {
+        "navigationBarTitleText": "修改密码",
+        "enablePullDownRefresh": false
+      }
+    }
+  ],
+  "subPackages": [
+    {
+      "root": "sub_pages/supplier",
+      "pages": [
+        // #ifdef PUB_SUPPLIER
+        {
+          "path": "supplier-info/supplier-info",
+          "style": {
+            "navigationBarTitleText": "信息维护",
+            "enablePullDownRefresh": false
+          }
+        },
+        {
+          "path": "flower-manage/flower-manage",
+          "style": {
+            "navigationBarTitleText": "商品管理",
+            "enablePullDownRefresh": true
+          }
+        },
+        {
+          "path": "flower-manage/flower-add",
+          "style": {
+            "navigationBarTitleText": "",
+            "enablePullDownRefresh": false
+          }
+        },
+        // #endif
+        {
+          "path": "order-settlement/order-settlement",
+          "style": {
+            "navigationBarTitleText": "账单结算",
+            "enablePullDownRefresh": true
+          }
+        },
+        {
+          "path": "order-sale/order-sale",
+          "style": {
+            "navigationBarTitleText": "售后理赔",
+            "enablePullDownRefresh": true
+          }
+        },
+        {
+          "path": "order-records/order-records",
+          "style": {
+            "navigationBarTitleText": "扣款记录",
+            "enablePullDownRefresh": true,
+            "navigationBarBackgroundColor": "#E6F2EB"
+          }
+        },
+        {
+          "path": "protocol",
+          "style": {
+            "navigationBarTitleText": "协议",
+            "enablePullDownRefresh": false
+          }
+        }
+      ]
+    },
+    {
+      "root": "sub_pages/partner",
+      "pages": [
+        // #ifdef PUB_PARTNER
+        {
+          "path": "partner-info/partner-info",
+          "style": {
+            "navigationBarTitleText": "信息维护",
+            "enablePullDownRefresh": false
+          }
+        },
+        {
+          "path": "order-manage/order-manage",
+          "style": {
+            "navigationBarTitleText": "订单管理",
+            "enablePullDownRefresh": true
+          }
+        },
+        {
+          "path": "markup-config/markup-config",
+          "style": {
+            "navigationBarTitleText": "加价配置",
+            "enablePullDownRefresh": true
+          }
+        }
+        // #endif
+      ]
+    },
+    {
+      "root": "sub_pages/customer",
+      "pages": [
+        // #ifdef PUB_CUSTOMER
 
 
-	}, {
-		"root": "sub_pages/partner",
-		"pages": [
-			// #ifdef PUB_PARTNER
-			{
-				"path": "partner-info/partner-info",
-				"style": {
-					"navigationBarTitleText": "信息维护",
-					"enablePullDownRefresh": false
-				}
-			},
-
-			{
-				"path": "order-manage/order-manage",
-				"style": {
-					"navigationBarTitleText": "订单管理",
-					"enablePullDownRefresh": true
-				}
-			},
-			{
-				"path": "markup-config/markup-config",
-				"style": {
-					"navigationBarTitleText": "加价配置",
-					"enablePullDownRefresh": true
-				}
-			}
-			// #endif
-		]
-	}, {
-		"root": "sub_pages/customer",
-		"pages": [
-			// #ifdef PUB_CUSTOMER 
-
-
-			{
-				"path": "trade/trade",
-				"style": {
-					"navigationBarTitleText": "交易大厅",
-					"enablePullDownRefresh": true
-				}
-			},
-			{
-				"path": "shopping/shopping",
-				"style": {
-					"navigationBarTitleText": "购物车",
-					"enablePullDownRefresh": true
-				}
-			},
-			{
-				"path": "trade/list",
-				"style": {
-					"navigationBarTitleText": "商品列表",
-					"enablePullDownRefresh": true
-				}
-			},
-			{
-				"path": "trade/detail",
-				"style": {
-					"navigationBarTitleText": "商品详情",
-					"enablePullDownRefresh": false
-
-				}
-			},
-			{
-				"path": "shop/shop",
-				"style": {
-					"navigationBarTitleText": "商家主页"
-				}
-			}
-			// #endif 
-		]
-	}],
-	"globalStyle": {
-		"navigationBarTextStyle": "black",
-		"navigationBarTitleText": "花满芫",
-		"navigationBarBackgroundColor": "#F8F8F8",
-		"backgroundColor": "#F8F8F8",
-		"app-plus": {
-			"background": "#efeff4"
-		}
-	}
+        {
+          "path": "trade/trade",
+          "style": {
+            "navigationBarTitleText": "交易大厅",
+            "enablePullDownRefresh": true
+          }
+        },
+        {
+          "path": "shopping/shopping",
+          "style": {
+            "navigationBarTitleText": "购物车",
+            "enablePullDownRefresh": true
+          }
+        },
+        {
+          "path": "shopping/confirm",
+          "style": {
+            "navigationBarTitleText": "订单详情"
+          }
+        },
+        {
+          "path": "trade/list",
+          "style": {
+            "navigationBarTitleText": "商品列表",
+            "enablePullDownRefresh": true
+          }
+        },
+        {
+          "path": "trade/detail",
+          "style": {
+            "navigationBarTitleText": "商品详情",
+            "enablePullDownRefresh": false
+          }
+        },
+        {
+          "path": "shop/shop",
+          "style": {
+            "navigationBarTitleText": "商家主页"
+          }
+        },
+        {
+          "path": "self/follow",
+          "style": {
+            "navigationBarTitleText": "我的关注",
+            "enablePullDownRefresh": true
+          }
+        },
+        {
+          "path": "self/collect",
+          "style": {
+            "navigationBarTitleText": "我的收藏",
+            "enablePullDownRefresh": true
+          }
+        }
+        // #endif
+      ]
+    }
+  ],
+  "globalStyle": {
+    "navigationBarTextStyle": "black",
+    "navigationBarTitleText": "花满芫",
+    "navigationBarBackgroundColor": "#F8F8F8",
+    "backgroundColor": "#F8F8F8",
+    "app-plus": {
+      "background": "#efeff4"
+    }
+  }
 }
\ No newline at end of file
diff --git a/pages/home/components/home-price.vue b/pages/home/components/home-price.vue
index 4065062..b96ad7d 100644
--- a/pages/home/components/home-price.vue
+++ b/pages/home/components/home-price.vue
@@ -1,84 +1,80 @@
 <template>
 	<view class="home-price">
 		<view class="flex t1">
-			<view>2024-06-03 09:20:19 花满芜成交均价</view>
+			<view>2024-06-03 09:20:19 花满芫成交均价</view>
 			<uni-icons class="m-l-a m-r-0" type="right"></uni-icons>
 		</view>
 		<view class="items" style="border-top: 2rpx solid #EEEEEE;">
 			<view class="flex" style="border-bottom: 2rpx solid #EEEEEE;padding-top: 24rpx;">
 				<view class="item flex1">
-					<view class="title">单头玫瑰</view>
+					<view class="title">{{list1[0]&&list1[0].name||''}}</view>
 					<view class="price">
-						19.66
+						{{list1[0]&&list1[0].avePrice||''}}
 					</view>
-					<view class="flex desc">
-						<view class="m-l-a m-r-a">+0.76</view>
-						<view class="m-l-a m-r-a text-right">+4.02%</view>
+					<view class="flex desc" v-if="list1[0]">
+						<view class="m-l-a m-r-a">{{list1[0]&&list1[0].avePriceDifference<0?'-':'+'}}{{list1[0]&&list1[0].avePriceDifference||''}}</view>
+						<view class="m-l-a m-r-a text-right">{{list1[0]&&list1[0].avePriceDifferenceRate<0?'-':'+'}}{{list1[0]&&list1[0].avePriceDifferenceRate*100||''}}%</view>
 					</view>
 				</view>
 				<view class="line"></view>
 				<view class="item flex1">
-					<view class="title">单头玫瑰</view>
+					<view class="title">{{list1[1]&&list1[1].name||''}}</view>
 					<view class="price">
-						19.66
-
+						{{list1[1]&&list1[1].avePrice||''}}
 					</view>
-					<view class="flex desc">
-						<view class="m-l-a m-r-a">+0.76</view>
-						<view class="m-l-a m-r-a text-right">+4.02%</view>
+					<view class="flex desc" v-if="list1[1]">
+						<view class="m-l-a m-r-a">{{list1[1]&&list1[1].avePriceDifference<0?'-':'+'}}{{list1[1]&&list1[1].avePriceDifference||''}}</view>
+						<view class="m-l-a m-r-a text-right">{{list1[1]&&list1[1].avePriceDifferenceRate<0?'-':'+'}}{{list1[1]&&list1[1].avePriceDifferenceRate*100||''}}%</view>
 					</view>
 				</view>
 				<view class="line"></view>
-				
 				<view class="item flex1">
-					<view class="title">单头玫瑰</view>
+					<view class="title">{{list1[2]&&list1[2].name||''}}</view>
 					<view class="price">
-						19.66
+						{{list1[2]&&list1[2].avePrice||''}}
 					</view>
-					<view class="flex desc">
-						<view class="m-l-a m-r-a">+0.76</view>
-						<view class="m-l-a m-r-a text-right">+4.02%</view>
+					<view class="flex desc" v-if="list1[2]">
+						<view class="m-l-a m-r-a">{{list1[2]&&list1[2].avePriceDifference<0?'-':'+'}}{{list1[2]&&list1[2].avePriceDifference||''}}</view>
+						<view class="m-l-a m-r-a text-right">{{list1[2]&&list1[2].avePriceDifferenceRate<0?'-':'+'}}{{list1[2]&&list1[2].avePriceDifferenceRate*100||''}}%</view>
 					</view>
 				</view>
 			</view>
 			<!-- <u-divider></u-divider> -->
-			<view class="flex" style="padding-top: 24rpx;">
+			<view class="flex" style="padding-top: 24rpx;" v-if="list2.length>0">
 				<view class="item flex1">
-					<view class="title">单头玫瑰</view>
+					<view class="title">{{list2[0]&&list2[0].name||''}}</view>
 					<view class="price">
-						19.66
+						{{list2[0]&&list2[0].avePrice||''}}
 					</view>
-					<view class="flex desc">
-						<view class="m-l-a m-r-a">+0.76</view>
-						<view class="m-l-a m-r-a text-right">+4.02%</view>
+					<view class="flex desc" v-if="list2[0]">
+						<view class="m-l-a m-r-a">{{list2[0]&&list2[0].avePriceDifference<0?'-':'+'}}{{list2[0]&&list2[0].avePriceDifference||''}}</view>
+						<view class="m-l-a m-r-a text-right">{{list2[0]&&list2[0].avePriceDifferenceRate<0?'-':'+'}}{{list2[0]&&list2[0].avePriceDifferenceRate*100||''}}%</view>
 					</view>
 				</view>
 				<view class="line"></view>
 				<view class="item flex1">
-					<view class="title">单头玫瑰</view>
+					<view class="title">{{list2[1]&&list2[1].name||''}}</view>
 					<view class="price">
-						19.66
-			
+						{{list2[1]&&list2[1].avePrice||''}}
 					</view>
-					<view class="flex desc">
-						<view class="m-l-a m-r-a">+0.76</view>
-						<view class="m-l-a m-r-a text-right">+4.02%</view>
+					<view class="flex desc" v-if="list2[1]">
+						<view class="m-l-a m-r-a">{{list2[1]&&list2[1].avePriceDifference<0?'-':'+'}}{{list2[1]&&list2[1].avePriceDifference||''}}</view>
+						<view class="m-l-a m-r-a text-right">{{list2[1]&&list2[1].avePriceDifferenceRate<0?'-':'+'}}{{list2[1]&&list2[1].avePriceDifferenceRate*100||''}}%</view>
 					</view>
 				</view>
 				<view class="line"></view>
-				
 				<view class="item flex1">
-					<view class="title">单头玫瑰</view>
+					<view class="title">{{list2[2]&&list2[2].name||''}}</view>
 					<view class="price">
-						19.66
+						{{list2[2]&&list2[2].avePrice||''}}
 					</view>
-					<view class="flex desc">
-						<view class="m-l-a m-r-a">+0.76</view>
-						<view class="m-l-a m-r-a text-right">+4.02%</view>
+					<view class="flex desc" v-if="list2[2]">
+						<view class="m-l-a m-r-a">{{list2[2]&&list2[2].avePriceDifference<0?'-':'+'}}{{list2[2]&&list2[2].avePriceDifference||''}}</view>
+						<view class="m-l-a m-r-a text-right">{{list2[2]&&list2[2].avePriceDifferenceRate<0?'-':'+'}}{{list2[2]&&list2[2].avePriceDifferenceRate*100||''}}%</view>
 					</view>
 				</view>
 			</view>
-			
+
 		</view>
 	</view>
 </template>
@@ -87,8 +83,27 @@
 	export default {
 		data() {
 			return {
-
+				list1: [],
+				list2: [],
 			};
+		},
+		mounted() {
+
+			const {
+				data
+			} = await this.$http.request('get', '/api/pub/customer/home', {
+				size: 6,
+			})
+			var list = data && data.records || []
+			this.list1 = []
+			this.list2 = []
+			for (var i = 0; i < list.length && i < 3; i++) {
+				this.list1.push(list[i])
+			}
+			for (var i = 3; i < list.length && i < 6; i++) {
+				this.list2.push(list[i])
+			}
+			
 		}
 	}
 </script>
diff --git a/pages/login/supplier-login.vue b/pages/login/supplier-login.vue
index eca449d..427b37b 100644
--- a/pages/login/supplier-login.vue
+++ b/pages/login/supplier-login.vue
@@ -11,13 +11,13 @@
 				<form class="cl">
 					<view class="t-a titles-top">
 						<view class="title-1">HELLO</view>
-						<view class="title-2">欢迎登录<span class="title-3">花满芜</span>
-						<!-- #ifdef PUB_SUPPLIER -->
-						<span>供应商管理平台</span>
-						<!-- #endif -->
-						<!-- #ifdef PUB_PARTNER -->
-						<span>合伙人管理平台</span>
-						<!-- #endif -->					
+						<view class="title-2">欢迎登录<span class="title-3">花满芫</span>
+						<!-- #ifdef PUB_SUPPLIER -->
+						<span>供应商管理平台</span>
+						<!-- #endif -->
+						<!-- #ifdef PUB_PARTNER -->
+						<span>合伙人管理平台</span>
+						<!-- #endif -->					
 						</view>
 					</view>
 					<view class="t-a input form-input" v-if="loginType=='pwd'">
diff --git a/pages/login/supplier-reg.vue b/pages/login/supplier-reg.vue
index 0ede898..0038663 100644
--- a/pages/login/supplier-reg.vue
+++ b/pages/login/supplier-reg.vue
@@ -31,7 +31,7 @@
 					<form class="cl">
 						<view class="t-a titles-top">
 							<view class="title-1">HELLO</view>
-							<view class="title-2">欢迎入驻<span class="title-3">花满芜</span></view>
+							<view class="title-2">欢迎入驻<span class="title-3">花满芫</span></view>
 						</view>
 
 
@@ -75,7 +75,7 @@
 								@click="protocal=!protocal" class="component-radio" :class="[protocal?'cur':'']">
 
 							</view>
-							<view class="topic-gray" @click="toProtocol">请仔细阅读《花满芜合伙人供应商入口小程序隐私保护指引》如您同意该指引,请勾选开始使用本小程序
+							<view class="topic-gray" @click="toProtocol">请仔细阅读《花满芫合伙人供应商入口小程序隐私保护指引》如您同意该指引,请勾选开始使用本小程序
 							</view>
 						</view>
 					</form>
diff --git a/store/index.js b/store/index.js
index 7452b61..190659b 100644
--- a/store/index.js
+++ b/store/index.js
@@ -1,412 +1,417 @@
 import http from '../plugins/http'
 import storage from '../plugins/storage.js'
 import message from '../plugins/message.js'
-// #ifndef VUE3
 import Vue from 'vue'
 import Vuex from 'vuex'
+
 Vue.use(Vuex)
 const store = new Vuex.Store({
-			// #endif
+    state: {
+        hasLogin: false,
+        isUniverifyLogin: false,
+        loginProvider: "",
+        openid: null,
+        testvuex: false,
+        colorIndex: 0,
+        colorList: ['#FF0000', '#00FF00', '#0000FF'],
+        noMatchLeftWindow: true,
+        active: 'componentPage',
+        leftWinActive: '/pages/component/view/view',
+        activeOpen: '',
+        menu: [],
+        univerifyErrorMsg: '',
+        currentInfo: {}, //个人用户信息
+        cache_address: {},
+        // remoteip:'',//服务器ip
+        sign: {
+            'enterprise': 0,
+            'info': 0,
+            'flower': 0,
+            'shopping': 0,
+        },
+        defaultaddress: {}
+    },
+    mutations: {
+
+        updateLogin(state, provider) {
+            console.log('updateLogin', provider)
+            state.hasLogin = provider && true || false;
+            if (!state.hasLogin) {
+                storage.removeItem('token')
+            }
+        },
+        login(state, provider) {
+            state.hasLogin = true;
+            state.loginProvider = provider;
+        },
+        logout(state) {
+            state.hasLogin = false
+            state.openid = null
+            state.currentInfo = {}
+            storage.removeItem('token')
+            message.showToast('退出登录成功')
+            // #ifdef APP
+            var KeepAliveModule = uni.requireNativePlugin("yh-nl") //保活组件
+
+            let ret = KeepAliveModule.stopLocation();
+            console.log('ret', ret)
+            // #endif
+            uni.redirectTo({
+                url: '/views/login/login'
+            })
+        },
+        setOpenid(state, openid) {
+            state.openid = openid
+        },
+        setDefaultAddress(state, defaultaddress) {
+            state.defaultaddress = defaultaddress
+        },
+        setTestTrue(state) {
+            state.testvuex = true
+        },
+        setTestFalse(state) {
+            state.testvuex = false
+        },
+        setColorIndex(state, index) {
+            state.colorIndex = index
+        },
+        setActive(state, tabPage) {
+            state.active = tabPage
+        },
+        setActiveOpen(state, activeOpen) {
+            state.activeOpen = activeOpen
+        },
+        setMenu(state, menu) {
+            state.menu = menu
+        },
+        setUniverifyLogin(state, payload) {
+            typeof payload !== 'boolean' ? payload = !!payload : '';
+            state.isUniverifyLogin = payload;
+        },
+        setUniverifyErrorMsg(state, payload = '') {
+            state.univerifyErrorMsg = payload
+        }
+    },
+    getters: {
+        currentColor(state) {
+            return state.colorList[state.colorIndex]
+        }
+    },
+    actions: {
+        sign_add: async function ({
+                                      commit,
+                                      state
+                                  }, key) {
+            console.log('sign_add', key)
+            state.sign[key] = 1
+        },
+        sign_clear: async function ({
+                                        commit,
+                                        state
+                                    }, key) {
+            console.log('sign_clear', key)
+            state.sign[key] = 0
+        },
+        // lazy loading openid
+        logout: async function ({
+                                    commit,
+                                    state
+                                }) {
+            commit('logout')
+        },
+        getUserOpenId: async function ({
+                                           commit,
+                                           state
+                                       }) {
+            return await new Promise((resolve, reject) => {
+                if (state.openid) {
+                    resolve(state.openid)
+                } else {
+                    uni.login({
+                        success: (data) => {
+                            commit('login')
+                            setTimeout(function () { //模拟异步请求服务器获取 openid
+                                const openid = '123456789'
+                                console.log(
+                                    'uni.request mock openid[' +
+                                    openid + ']');
+                                commit('setOpenid', openid)
+                                resolve(openid)
+                            }, 1000)
+                        },
+                        fail: (err) => {
+                            console.log('uni.login 接口调用失败,将无法正常使用开放接口等服务',
+                                err)
+                            reject(err)
+                        }
+                    })
+                }
+            })
+        },
+        getCurrentInfo: async function ({
+                                            commit,
+                                            state
+                                        }) {
+            //把权限获取到
+            // console.log('getCurrentInfo,getCurrentInfo')
+            const currentInfo = await http.request('get', '/api/current/user', {})
+            if (currentInfo && currentInfo.code == 0) {
+                // state.cMenu = cMenu
+                // state.roles = currentInfo.data.roles || []
+                state.currentInfo = currentInfo.data || {}
+                state.type = currentInfo.data.type || ''
+                state.spacecode = currentInfo.data.spacecode || ''
+                // if(reload){
+                // 	location.reload()
+                // }
+                commit("updateLogin", true)
+            } else {
+                commit("updateLogin", false)
+                //这种情况就是要跳转到登录页面
+            }
+        },
+        loginwx: async function ({
+                                     dispatch,
+                                     commit,
+                                     state
+                                 }, data) {
+            var code = data.code
+            let inviter = data.inviter || ''
+            console.log('')
+            const resp = await http.request('post', '/api/login/wechat', {
+                data: {
+                    code: code,
+                    imgurl: data.imgurl || '',
+                    nickname: data.nickname || '',
+                    inviter: inviter
+                },
+                // params:{
+                // 	code:code
+                // }
+            })
+            if (resp && resp.code == 0) {
+                state.isBind = true
+                storage.setItem("token", resp.data.access_token || "")
+                state.hasLogin = true
+                if (inviter) {
+                    storage.removeItem('inviter');
+                    storage.removeItem('inviterTime');
+                    storage.removeItem('inviterName');
+                }
+                await dispatch('getCurrentInfo')
+            } else {
+                message.showToast('登录失败.' + (resp && resp.msg))
+                storage.removeItem('openid');
+                storage.removeItem('tel');
+                storage.removeItem('token');
+            }
+            return resp
+        },
+        regUser: async function ({
+                                     commit,
+                                     dispatch,
+                                     state
+                                 }, data) {
+            {
+                const resp = await http.request('post', '/api/register/' + data.type, {
+                    data: {
+                        username: data.username,
+                        password: data.password,
+                        tel: data.phoneNumber || data.tel,
+                        smsCode: data.smsCode || '',
+                        dto: data.dto || undefined
+                    },
+                    params: {
+                        clientType: data.clientType || 'app'
+                    }
+                })
+                console.log('resp', resp)
+                if (resp && resp.code == 0) {
 
 
+                } else {
 
-			// #ifdef VUE3
-			import {
-				createStore
-			} from 'vuex'
-			const store = createStore({
-				// #endif
-				state: {
-					hasLogin: false,
-					isUniverifyLogin: false,
-					loginProvider: "",
-					openid: null,
-					testvuex: false,
-					colorIndex: 0,
-					colorList: ['#FF0000', '#00FF00', '#0000FF'],
-					noMatchLeftWindow: true,
-					active: 'componentPage',
-					leftWinActive: '/pages/component/view/view',
-					activeOpen: '',
-					menu: [],
-					univerifyErrorMsg: '',
-					currentInfo: {}, //个人用户信息
-					cache_address: {},
-					// remoteip:'',//服务器ip
-					sign: {
-						'enterprise': 0,
-						'info': 0,
-						'flower': 0,
-					},
-					defaultaddress: {}
-				},
-				mutations: {
+                }
+                return resp
+            }
 
-					updateLogin(state, provider) {
-						console.log('updateLogin', provider)
-						state.hasLogin = provider && true || false;
-						if (!state.hasLogin) {
-							storage.removeItem('token')
-						}
-					},
-					login(state, provider) {
-						state.hasLogin = true;
-						state.loginProvider = provider;
-					},
-					logout(state) {
-						state.hasLogin = false
-						state.openid = null
-						state.currentInfo = {}
-						storage.removeItem('token')
-						message.showToast('退出登录成功')
-						// #ifdef APP
-						var KeepAliveModule = uni.requireNativePlugin("yh-nl") //保活组件
+        },
+        loginPartner: async function ({
+                                          commit,
+                                          dispatch,
+                                          state
+                                      }, data) {
+            {
+                const resp = await http.request('post', '/api/login/partner' + ((data
+                    .phoneNumber || data.tel) ? '/phone' : ''), {
+                    data: {
+                        username: (data.phoneNumber || data.tel) ? (data.phoneNumber ||
+                            data.tel) : data.username,
+                        password: data.password,
+                        tel: data.phoneNumber || data.tel,
+                        smsCode: data.smsCode || ''
+                    },
+                    params: {
+                        clientType: data.clientType || 'app'
+                    }
+                })
+                console.log('resp', resp)
+                if (resp && resp.code == 0) {
+                    // await getCurrentInfo()
+                    // // this.$message.showToast('登录成功')
+                    // console.log(resp)
+                    storage.setItem('token', resp.data.access_token)
+                    commit("updateLogin", true)
+                    await dispatch('getCurrentInfo')
 
-						let ret = KeepAliveModule.stopLocation();
-						console.log('ret', ret)
-						// #endif
-						uni.redirectTo({
-							url: '/views/login/login'
-						})
-					},
-					setOpenid(state, openid) {
-						state.openid = openid
-					},
-					setDefaultAddress(state, defaultaddress) {
-						state.defaultaddress = defaultaddress
-					},
-					setTestTrue(state) {
-						state.testvuex = true
-					},
-					setTestFalse(state) {
-						state.testvuex = false
-					},
-					setColorIndex(state, index) {
-						state.colorIndex = index
-					},
-					setActive(state, tabPage) {
-						state.active = tabPage
-					},
-					setActiveOpen(state, activeOpen) {
-						state.activeOpen = activeOpen
-					},
-					setMenu(state, menu) {
-						state.menu = menu
-					},
-					setUniverifyLogin(state, payload) {
-						typeof payload !== 'boolean' ? payload = !!payload : '';
-						state.isUniverifyLogin = payload;
-					},
-					setUniverifyErrorMsg(state, payload = '') {
-						state.univerifyErrorMsg = payload
-					}
-				},
-				getters: {
-					currentColor(state) {
-						return state.colorList[state.colorIndex]
-					}
-				},
-				actions: {
-					sign_add: async function({
-						commit,
-						state
-					}, key) {
-						console.log('sign_add', key)
-						state.sign[key] = 1
-					},
-					sign_clear: async function({
-						commit,
-						state
-					}, key) {
-						console.log('sign_clear', key)
-						state.sign[key] = 0
-					},
-					// lazy loading openid
-					logout: async function({
-						commit,
-						state
-					}) {
-						commit('logout')
-					},
-					getUserOpenId: async function({
-						commit,
-						state
-					}) {
-						return await new Promise((resolve, reject) => {
-							if (state.openid) {
-								resolve(state.openid)
-							} else {
-								uni.login({
-									success: (data) => {
-										commit('login')
-										setTimeout(function() { //模拟异步请求服务器获取 openid
-											const openid = '123456789'
-											console.log(
-												'uni.request mock openid[' +
-												openid + ']');
-											commit('setOpenid', openid)
-											resolve(openid)
-										}, 1000)
-									},
-									fail: (err) => {
-										console.log('uni.login 接口调用失败,将无法正常使用开放接口等服务',
-											err)
-										reject(err)
-									}
-								})
-							}
-						})
-					},
-					getCurrentInfo: async function({
-						commit,
-						state
-					}) {
-						//把权限获取到
-						// console.log('getCurrentInfo,getCurrentInfo')
-						const currentInfo = await http.request('get', '/api/current/user', {
+                    console.log('login,reLaunch')
+                    // #ifdef APP
+                    var KeepAliveModule = uni.requireNativePlugin("yh-nl") //保活组件
 
-						})
-						if (currentInfo && currentInfo.code == 0) {
-							// state.cMenu = cMenu
-							// state.roles = currentInfo.data.roles || []
-							state.currentInfo = currentInfo.data || {}
-							state.type = currentInfo.data.type || ''
-							state.spacecode = currentInfo.data.spacecode || ''
-							// if(reload){
-							// 	location.reload()
-							// }
-							commit("updateLogin", true)
-						} else {
-							commit("updateLogin", false)
-							//这种情况就是要跳转到登录页面
-						}
-					},
-					loginwx: async function({
-						dispatch,
-						commit,
-						state
-					}, data) {
-						var code = data.code
-						let inviter = data.inviter || ''
-						console.log('')
-						const resp = await http.request('post', '/api/login/wechat', {
-							data: {
-								code: code,
-								imgurl: data.imgurl || '',
-								nickname: data.nickname || '',
-								inviter: inviter
-							},
-							// params:{
-							// 	code:code
-							// }
-						})
-						if (resp && resp.code == 0) {
-							state.isBind = true
-							storage.setItem("token", resp.data.access_token || "")
-							state.hasLogin = true
-							if (inviter) {
-								storage.removeItem('inviter');
-								storage.removeItem('inviterTime');
-								storage.removeItem('inviterName');
-							}
-							await dispatch('getCurrentInfo')
-						} else {
-							message.showToast('登录失败.' + (resp && resp.msg))
-							storage.removeItem('openid');
-							storage.removeItem('tel');
-							storage.removeItem('token');
-						}
-						return resp
-					},
-					regUser: async function({
-						commit,
-						dispatch,
-						state
-					}, data) {
-						{
-							const resp = await http.request('post', '/api/register/' + data.type, {
-								data: {
-									username: data.username,
-									password: data.password,
-									tel: data.phoneNumber || data.tel,
-									smsCode: data.smsCode || '',
-									dto: data.dto || undefined
-								},
-								params: {
-									clientType: data.clientType || 'app'
-								}
-							})
-							console.log('resp', resp)
-							if (resp && resp.code == 0) {
+                    KeepAliveModule && KeepAliveModule.startLocation({
+                        intervalTime: 5000, //定位间隔时间
+                        gaodeApiKey: "0eef1axxxxxx7964", //高德地图Key,已停用,引入插件配置
+                        locationMode: 1, //定位模式
+                        purpose: 0, //定位场景
+                        ifUpload: true, //是否上报服务器
+                        uploadUrl: "http://bio51-api.fixbug.fun/api/current/employee/location", //上报接口
+                        params: "{'lat':'1','lng':'3'}", //其他参数
+                        headers: "{'authorization1':'Bearer xOHeJhg'}",
+                    }, function (res) {
+                        console.log("启用结果:", res);
+                        let ret = KeepAliveModule.getCurrentLocation();
+                        console.log("启用结果2:", ret);
+                    });
+                    // #endif
+                    // uni.redirectTo({
+                    // 	url: '/views/app/app-home/app-home'
+                    // })
+                    uni.reLaunch({
+                        url: '/pages/home/supplier-home'
+                    })
+                } else {
+                    // this.$message.showToast('登录失败')
+
+                }
+                return resp
+            }
+
+        },
+        loginSupplier: async function ({
+                                           commit,
+                                           dispatch,
+                                           state
+                                       }, data) {
+            {
+                const resp = await http.request('post', '/api/login/supplier' + ((data
+                    .phoneNumber || data.tel) ? '/phone' : ''), {
+                    data: {
+                        username: (data.phoneNumber || data.tel) ? (data.phoneNumber ||
+                            data.tel) : data.username,
+                        password: data.password,
+                        tel: data.phoneNumber || data.tel,
+                        smsCode: data.smsCode || ''
+                    },
+                    params: {
+                        clientType: data.clientType || 'app'
+                    }
+                })
+                console.log('resp', resp)
+                if (resp && resp.code == 0) {
+                    // await getCurrentInfo()
+                    // // this.$message.showToast('登录成功')
+                    // console.log(resp)
+                    storage.setItem('token', resp.data.access_token)
+                    commit("updateLogin", true)
+                    await dispatch('getCurrentInfo')
+
+                    console.log('login,reLaunch')
+                    // #ifdef APP
+                    var KeepAliveModule = uni.requireNativePlugin("yh-nl") //保活组件
+
+                    KeepAliveModule && KeepAliveModule.startLocation({
+                        intervalTime: 5000, //定位间隔时间
+                        gaodeApiKey: "0eef1axxxxxx7964", //高德地图Key,已停用,引入插件配置
+                        locationMode: 1, //定位模式
+                        purpose: 0, //定位场景
+                        ifUpload: true, //是否上报服务器
+                        uploadUrl: "http://bio51-api.fixbug.fun/api/current/employee/location", //上报接口
+                        params: "{'lat':'1','lng':'3'}", //其他参数
+                        headers: "{'authorization1':'Bearer xOHeJhg'}",
+                    }, function (res) {
+                        console.log("启用结果:", res);
+                        let ret = KeepAliveModule.getCurrentLocation();
+                        console.log("启用结果2:", ret);
+                    });
+                    // #endif
+                    // uni.redirectTo({
+                    // 	url: '/views/app/app-home/app-home'
+                    // })
+                    uni.reLaunch({
+                        url: '/pages/home/supplier-home'
+                    })
+                } else {
+                    // this.$message.showToast('登录失败')
+
+                }
+                return resp
+            }
+
+        },
+
+        loginCustomer: async function ({
+                                           commit,
+                                           dispatch,
+                                           state
+                                       }, data) {
+            {
+                const resp = await http.request('post', '/api/login/customer' + (data
+                    .phoneNumber ? '/phone' : ''), {
+                    data: {
+                        username: (data.phoneNumber || data.tel) ? (data.phoneNumber ||
+                            data.tel) : data.username,
+                        password: data.password,
+                        tel: data.phoneNumber || data.tel,
+                        smsCode: data.smsCode || ''
+                    },
+                    params: {
+                        clientType: data.clientType || 'app'
+                    }
+                })
+                console.log('resp', resp)
+                if (resp && resp.code == 0) {
+                    storage.setItem('token', resp.data.access_token)
+                    commit("updateLogin", true)
+                    await dispatch('getCurrentInfo')
+                    uni.reLaunch({
+                        url: '/pages/home/home'
+                    })
+                } else {
 
 
-							} else {
+                }
+                return resp
+            }
 
-							}
-							return resp
-						}
+        },
+        submitShopping: async function ({commit, dispatch}, data) {
+            const resp = await http.request('post', '/api/api/customer/flower/cart/change-num', {
+                    data: {
+                        id: data.id,
+                        num: 1
+                    }
+                }
+            )
+            if (resp && resp.code === 0) {
+                message.showToast('添加购物车成功')
+                dispatch('sign_add', 'shopping')
+            } else {
 
-					},
-					loginPartner: async function({
-						commit,
-						dispatch,
-						state
-					}, data) {
-						{
-							const resp = await http.request('post', '/api/login/partner' + ((data
-								.phoneNumber || data.tel) ? '/phone' : ''), {
-								data: {
-									username: (data.phoneNumber || data.tel) ? (data.phoneNumber ||
-										data.tel) : data.username,
-									password: data.password,
-									tel: data.phoneNumber || data.tel,
-									smsCode: data.smsCode || ''
-								},
-								params: {
-									clientType: data.clientType || 'app'
-								}
-							})
-							console.log('resp', resp)
-							if (resp && resp.code == 0) {
-								// await getCurrentInfo()
-								// // this.$message.showToast('登录成功')
-								// console.log(resp)
-								storage.setItem('token', resp.data.access_token)
-								commit("updateLogin", true)
-								await dispatch('getCurrentInfo')
+            }
+            return resp
+        },
 
-								console.log('login,reLaunch')
-								// #ifdef APP
-								var KeepAliveModule = uni.requireNativePlugin("yh-nl") //保活组件
+    }
+})
 
-								KeepAliveModule && KeepAliveModule.startLocation({
-									intervalTime: 5000, //定位间隔时间
-									gaodeApiKey: "0eef1axxxxxx7964", //高德地图Key,已停用,引入插件配置
-									locationMode: 1, //定位模式
-									purpose: 0, //定位场景
-									ifUpload: true, //是否上报服务器
-									uploadUrl: "http://bio51-api.fixbug.fun/api/current/employee/location", //上报接口
-									params: "{'lat':'1','lng':'3'}", //其他参数
-									headers: "{'authorization1':'Bearer xOHeJhg'}",
-								}, function(res) {
-									console.log("启用结果:", res);
-									let ret = KeepAliveModule.getCurrentLocation();
-									console.log("启用结果2:", ret);
-								});
-								// #endif
-								// uni.redirectTo({
-								// 	url: '/views/app/app-home/app-home'
-								// })
-								uni.reLaunch({
-									url: '/pages/home/supplier-home'
-								})
-							} else {
-								// this.$message.showToast('登录失败')
-
-							}
-							return resp
-						}
-
-					},
-					loginSupplier: async function({
-						commit,
-						dispatch,
-						state
-					}, data) {
-						{
-							const resp = await http.request('post', '/api/login/supplier' + ((data
-								.phoneNumber || data.tel) ? '/phone' : ''), {
-								data: {
-									username: (data.phoneNumber || data.tel) ? (data.phoneNumber ||
-										data.tel) : data.username,
-									password: data.password,
-									tel: data.phoneNumber || data.tel,
-									smsCode: data.smsCode || ''
-								},
-								params: {
-									clientType: data.clientType || 'app'
-								}
-							})
-							console.log('resp', resp)
-							if (resp && resp.code == 0) {
-								// await getCurrentInfo()
-								// // this.$message.showToast('登录成功')
-								// console.log(resp)
-								storage.setItem('token', resp.data.access_token)
-								commit("updateLogin", true)
-								await dispatch('getCurrentInfo')
-
-								console.log('login,reLaunch')
-								// #ifdef APP
-								var KeepAliveModule = uni.requireNativePlugin("yh-nl") //保活组件
-
-								KeepAliveModule && KeepAliveModule.startLocation({
-									intervalTime: 5000, //定位间隔时间
-									gaodeApiKey: "0eef1axxxxxx7964", //高德地图Key,已停用,引入插件配置
-									locationMode: 1, //定位模式
-									purpose: 0, //定位场景
-									ifUpload: true, //是否上报服务器
-									uploadUrl: "http://bio51-api.fixbug.fun/api/current/employee/location", //上报接口
-									params: "{'lat':'1','lng':'3'}", //其他参数
-									headers: "{'authorization1':'Bearer xOHeJhg'}",
-								}, function(res) {
-									console.log("启用结果:", res);
-									let ret = KeepAliveModule.getCurrentLocation();
-									console.log("启用结果2:", ret);
-								});
-								// #endif
-								// uni.redirectTo({
-								// 	url: '/views/app/app-home/app-home'
-								// })
-								uni.reLaunch({
-									url: '/pages/home/supplier-home'
-								})
-							} else {
-								// this.$message.showToast('登录失败')
-
-							}
-							return resp
-						}
-
-					},
-
-					loginCustomer: async function({
-						commit,
-						dispatch,
-						state
-					}, data) {
-						{
-							const resp = await http.request('post', '/api/login/customer' + (data
-								.phoneNumber ? '/phone' : ''), {
-								data: {
-									username: (data.phoneNumber || data.tel) ? (data.phoneNumber ||
-										data.tel) : data.username,
-									password: data.password,
-									tel: data.phoneNumber || data.tel,
-									smsCode: data.smsCode || ''
-								},
-								params: {
-									clientType: data.clientType || 'app'
-								}
-							})
-							console.log('resp', resp)
-							if (resp && resp.code == 0) {
-								storage.setItem('token', resp.data.access_token)
-								commit("updateLogin", true)
-								await dispatch('getCurrentInfo')
-								uni.reLaunch({
-									url: '/pages/home/home'
-								})
-							} else {
-
-
-							}
-							return resp
-						}
-
-					},
-
-				}
-			})
-
-			export default store
\ No newline at end of file
+export default store
\ No newline at end of file
diff --git a/sub_pages/customer/self/collect.vue b/sub_pages/customer/self/collect.vue
new file mode 100644
index 0000000..3d40b8e
--- /dev/null
+++ b/sub_pages/customer/self/collect.vue
@@ -0,0 +1,150 @@
+<template>
+  <view class="page-collect">
+    <view class="search-container m-t-12 flex">
+      <view class="flex1 input">
+        <u-input placeholder="请输入花名" v-model="query.name">
+          <template slot="suffix">
+            <uni-icons color="#20613D" type="search" size="24" @tap="refreshList"></uni-icons>
+          </template>
+        </u-input>
+      </view>
+    </view>
+    <view class="component-filter-container">
+      <view class="flex1">
+        排序
+        <image src="../../../static/common/icon-arrow-down.png" class="icon-arrow-down"></image>
+      </view>
+      <view class="flex1">
+        {{ this.query.levelStr || '级别' }}
+        <image src="../../../static/common/icon-arrow-down.png" class="icon-arrow-down"
+               @click="level_show=true"></image>
+      </view>
+    </view>
+
+    <u-picker :show="level_show" @confirm="select_level" keyName="label" :columns="level_columns"
+              @cancel="level_show=false"></u-picker>
+    <u-picker :show="order_show" @confirm="select_order" keyName="label" :columns="order_columns"
+              @cancel="order_show=false"></u-picker>
+
+    <view class="trade-list-container">
+      <view class="trade-info-container" v-for="(dto,index) of list" :key="index">
+        <view class="title">
+          <view class="level m-r-15">{{dto.levelStr || '-'}}级</view>
+          <view class="">
+            {{dto.name || '-'}}
+          </view>
+        </view>
+        <view class="desc m-t-12">
+          <view class="m-r-15">已售:{{ dto.sales || 0}}</view>
+          <view class="m-r-15">剩余:{{dto.stock || 0}}</view>
+          <view class=" ">{{dto.unit||'-'}}支/扎</view>
+        </view>
+        <view class="flex m-t-12">
+          <view class="price m-r-a">
+            <span class="num">{{dto.price||'-'}}</span>
+            元/扎
+          </view>
+          <view class="m-l-a m-r-15">
+            <image src="../../../static/common/icon-kf.png" class="icon-kf m-l-15 img100"></image>
+
+          </view>
+          <view class="m-r-0 gwc" @click="submitShopping(dto)">
+            + 购物车
+          </view>
+        </view>
+      </view>
+
+    </view>
+  </view>
+</template>
+
+<script>
+export default {
+  async onPullDownRefresh() {
+    await this.refreshList()
+    uni.stopPullDownRefresh()
+  },
+  data() {
+    return {
+      query: {
+        name: '',
+        levelStr: '',
+        level: '',
+        column:'',
+        columnStr:'',
+      },
+      level_show: false,
+      level_columns: [[]],
+
+      order_show:false,
+      order_columns:[[]]
+    }
+  },
+  onLoad() {
+    this.listApi = '/api/collect/list'
+    this.$http.request('get', '/api/code/value', {
+      params: {
+        type: 'FLOWER_LEVEL'
+      }
+    }).then(res => {
+      var data = res.data
+      this.level_columns = [data || []]
+      this.columns_levels[0].unshift({
+        label: '全部',
+        value: ''
+      })
+    })
+
+    this.$http.request('get', '/api/code/value', {
+      params: {
+        type: 'FLOWER_ORDER_BY'
+      }
+    }).then(res => {
+      var data = res.data
+      this.order_columns = [data || []]
+      this.order_columns[0].unshift({
+        label: '默认',
+        value: ''
+      })
+    })
+  },
+  methods: {
+    select_level(e) {
+      this.level_show = false
+      this.query.levelStr = e.value[0].label
+      this.query.level = e.value[0].value
+    },
+    select_order(e) {
+      this.order_show = false
+      this.query.columnStr = e.value[0].label
+      this.query.column = e.value[0].value
+    },
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.page-collect {
+  .search-container {
+    display: flex;
+    margin: 12rpx 0rpx 20rpx 0rpx;
+    position: relative;
+    z-index: 1;
+
+    .input {
+      background-color: #fff !important;
+      border-radius: 8rpx;
+    }
+
+    .button {
+      min-width: 120rpx;
+      max-width: 120rpx;
+      margin-left: auto;
+      margin-right: 0rpx;
+      text-align: right;
+      line-height: 70rpx !important;
+    }
+  }
+}
+
+</style>
diff --git a/sub_pages/customer/self/follow.vue b/sub_pages/customer/self/follow.vue
new file mode 100644
index 0000000..22a77f8
--- /dev/null
+++ b/sub_pages/customer/self/follow.vue
@@ -0,0 +1,29 @@
+<template>
+	<view>
+		
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				
+			}
+		},
+		async onPullDownRefresh() {
+			await this.refreshList()
+			uni.stopPullDownRefresh()
+		},
+		onLoad(){
+			this.listApi = '/api/follow/list'
+		},
+		methods: {
+			
+		}
+	}
+</script>
+
+<style>
+
+</style>
diff --git a/sub_pages/customer/shopping/confirm.vue b/sub_pages/customer/shopping/confirm.vue
new file mode 100644
index 0000000..3f9eb68
--- /dev/null
+++ b/sub_pages/customer/shopping/confirm.vue
@@ -0,0 +1,103 @@
+<script>
+import {
+  mapState
+} from 'vuex'
+
+export default {
+  name: "订单详情",
+  computed: {
+    ...mapState({
+      address: state => {
+        return state.defaultaddress || {}
+      },
+    }),
+  },
+  watch: {
+    // address(nv, ov) {
+    //   if (nv && nv.id) {
+    //     //尝试更新一下
+    //
+    //   }
+    // }
+  },
+  async onShow() {
+    setTimeout(async () => {
+      if (this.address && this.address.id && this.cacheAddressId !== this.address.id) {
+        this.$message.showLoading()
+        const {code, data} = await this.$http.request('get', '/api/flower/customer/order/confirm/transports', {
+          data: {
+            addressId: this.address.id,
+            weight: this.dto.totalWeight || 0
+          }
+        })
+        this.$message.hideLoading()
+        this.transportList = []
+        if (code === 0) {
+          this.transportList = data || []
+        }
+      }
+    }, 200)
+  },
+  onLoad(options) {
+    let item = JSON.parse(decodeURIComponent(options.query.dto));
+    this.dto = {
+      ...this.dto,
+      ...item
+    }
+    //先获取直接的全部地址
+    // @ApiModelProperty(value = "订单商品")
+    //   private List<FlowerCartListDTO> flowers;
+    // @ApiModelProperty(value = "打包费")
+    //   private BigDecimal packing;
+    //todo 显示打包费等,然后再确认
+    // https://lanhuapp.com/web/#/item/project/detailDetach?pid=05830e81-7c59-4655-8253-4deb7c913b51&project_id=05830e81-7c59-4655-8253-4deb7c913b51&image_id=f7cc3e57-5367-4b99-a84e-99c38249aa66&fromEditor=true
+
+  },
+  data() {
+    return {
+      dto: {},
+      cacheAddressId: '',
+      transportList: [],
+      // private Long id;
+      // @ApiModelProperty(value = "名称")
+      // private String name;
+      // @ApiModelProperty(value = "英文名")
+      // private String enName;
+      // @ApiModelProperty(value = "运费")
+      // private BigDecimal fee;
+    }
+  }
+}
+</script>
+
+<template>
+  <view class="page-confirm">
+    <view>
+      <common-address-select ref="addressselect"></common-address-select>
+    </view>
+    <view>
+<!--     todo 查看商品列表,和选择运费 -->
+    </view>
+    <view class="bottom-price flex">
+      <view>
+        合计:¥ {{ dto.totalAmount||0 }} 元
+      </view>
+      <view class="button-green-1">
+        提交订单
+      </view>
+    </view>
+  </view>
+</template>
+
+<style scoped lang="scss">
+.page-confirm{
+
+  .bottom-price {
+    position: fixed;
+    left: 0rpx;
+    padding: 20rpx;
+    right: 0rpx;
+    bottom: 160rpx;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/sub_pages/customer/shopping/shopping.vue b/sub_pages/customer/shopping/shopping.vue
index 63c4619..54ca191 100644
--- a/sub_pages/customer/shopping/shopping.vue
+++ b/sub_pages/customer/shopping/shopping.vue
@@ -1,25 +1,352 @@
 <template>
-	<view>
-		
-		<view style="min-height:200rpx">
-		</view>
-		<common-footer flg="2"></common-footer>
-	</view>
+  <view class="shopping-container">
+    <view class="top-title"> 苏州市一价全含,市区内包邮派送到店
+    </view>
+    <view class="top-desc">
+      全程鲜花冷链专线,时效快,损耗小
+    </view>
+    <view class="flex">
+      <image class="icon-clock m-r-6" src="../../../static/common/icon-call.png"></image>
+      <view class="name">
+        客服电话 : &nbsp;&nbsp; <span class="topic-gray">{{ tel }}</span>
+      </view>
+    </view>
+    <view class="">
+      <no-data v-if="!list||list.length===0" style="width: 100%;"></no-data>
+      <view class="shopping-item m-t-20" v-for="(item,index) of list" :key="index">
+        <u-swipe-action>
+          <u-swipe-action-item
+              :options="options1"
+              @click="(e)=>{clickSwipeButton(item)}"
+          >
+            <view class="sup-title">
+              <radio :checked="ids.indexOf(item.id)>=0" @change="changeItem(item,'supplier')">></radio>
+              {{ item.supplierName || '-' }}
+            </view>
+            <u-divider></u-divider>
+            <view v-for="(dto,j) of item.flowerList" :key="j">
+              <u-divider v-if="j>0"></u-divider>
+              <view class="item-each flex">
+                <radio :checked="ids.indexOf(dto.id)>=0" @change="changeItem(dto,'flower')"></radio>
+                <image class="img img100 m-r-6" :src="dto.url||dto.cover"></image>
+                <view>
+                  <view class="title"><span>{{ dto.levelStr || '-' }}</span>&nbsp;&nbsp;{{ dto.name || '-' }}</view>
+                  <view class="price">
+                    {{ dto.price || '-' }}元/扎
+                  </view>
+                  <view class="desc m-t-12">
+                    <view class="m-r-15">剩余:{{ dto.stock || 0 }}</view>
+                  </view>
+                  <view class="button-icons flex">
+                    <uni-icons v-if="dto.num&&dto.num>=1" type="minus" size="32"
+                               @click="addnum(dto,-1)"></uni-icons>
+                    <view class="curnums" v-if="dto.num&&dto.num>=1">{{ dto.num }}</view>
+                    <uni-icons type="plus-filled" size="32" @click="addnum(dto,1)"></uni-icons>
+                  </view>
+                </view>
+              </view>
+            </view>
+          </u-swipe-action-item>
+        </u-swipe-action>
+      </view>
+
+    </view>
+    <view style="min-height:200rpx">
+    </view>
+    <view class="bottom-price flex">
+      <view>
+        <radio :checked="checkall" @change="selectAll"></radio>
+        全选
+      </view>
+      <view>
+        合计:¥ {{ totalprice }} 元
+      </view>
+      <view class="button-green-1">
+        提交订单
+      </view>
+    </view>
+    <view style="min-height:200rpx">
+    </view>
+    <common-footer flg="2"></common-footer>
+  </view>
 </template>
 
 <script>
-	export default {
-		data() {
-			return {
-				
-			}
-		},
-		methods: {
-			
-		}
-	}
+import http from "../../../plugins/http";
+
+export default {
+  data() {
+    return {
+      tel: '15974805814',
+      ids: [],
+      checkall: false,
+      options1: [{
+        text: '删除'
+      }]
+    }
+  },
+  onShow() {
+    if (this.sign['shopping']) {
+      this.init()
+    }
+  },
+  onLoad() {
+    this.init()
+  },
+  computed: {
+    totalprice() {
+
+      let totalprice = 0
+      this.list.forEach(dto => {
+        dto.flowerList.forEach(item => {
+          if (this.ids.indexOf(item.id) >= 0) {
+            totalprice += item.price * item.num
+          }
+        })
+      })
+      return totalprice.toFixed(2)
+    },
+    methods: {
+      async submitPay() {
+        // order/confirm/info
+        var arr = []
+        for (var j = 0; j < this.list.flowerList; j++) {
+
+          if (this.ids.indexOf(this.list.flowerList[j].id) >= 0) {
+            arr.push({
+              id: this.list.flowerList[j].id,
+              num: this.list.flowerList[j].num
+            })
+          }
+        }
+        if (this.arr.length < 1) {
+          return
+        }
+        this.$message.showLoading()
+        const {code, data} = await http.request('post', '/api/api/customer/order/confirm/info', {
+              data: {
+                flowers: arr,
+              }
+            }
+        )
+        this.$message.hideLoading()
+        if (code === 0) {
+          uni.navigateTo({
+            url: '/sub_pages/customer/shopping/confirm?dto=' + +encodeURIComponent(JSON.stringify(data))
+          })
+        }
+      },
+      async clickSwipeButton(item) {
+        //删除商品,重新加载数据?
+
+        this.$message.showLoading()
+        const {code} = await http.request('post', '/api/api/customer/flower/cart/change-num', {
+              data: {
+                id: dto.id,
+                num: addnum
+              }
+            }
+        )
+        this.$message.hideLoading()
+        if (code === 0) {
+          if (this.ids.indexOf(item.id) >= 0) {
+            this.ids.splice(this.ids.indexOf(item.id), 1)
+          }
+          for (var i = 0; i < this.list.length; i++) {
+            if (this.list[i].id === dto.supplierId) {
+              this.list[i].splice(i, 1)
+              if (this.list.flowerList.length === 1) {
+                if (this.ids.indexOf(this.list[i].id) >= 0) {
+                  this.ids.splice(this.ids.indexOf(this.list[i].id), 1)
+                }
+                this.list[i].flowerList.splice(0, 1)
+                this.list.splice(i, 1)
+              } else {
+                //只需要清楚这个元素
+                var k = -1
+                for (var j = 0; j < this.list[i].flowerList.length; j++) {
+                  if (this.list[i][j].id === item.id) {
+                    k = j;
+                    break
+                  }
+                }
+                this.list[i].flowerList.splice(k, 1)
+              }
+              break
+            }
+          }
+        }
+      }
+    },
+    selectAll() {
+      if (this.checkall) {
+        this.ids = []
+        this.checkall = false
+      } else {
+        list.for(dto => {
+          if (this.ids.indexOf(dto.id) < 0) {
+            this.ids.push(dto.id)
+          }
+          dto.flowerList.forEach(item => {
+            if (this.ids.indexOf(item.id) < 0) {
+              this.ids.push(item.id)
+            }
+          })
+        })
+      }
+    },
+    changeItem(dto, type) {
+      if (type === 'supplier') {
+        //全选上
+        if (this.ids.indexOf(dto.id) < 0) {
+          this.ids.push(dto.id)
+          dto.flowerList.forEach(item => {
+            if (this.ids.indexOf(item.id) < 0) {
+              this.ids.push(item.id)
+            }
+          })
+        } else {
+          this.checkall = false
+          this.ids.splice(this.ids.indexOf(dto.id), 1)
+          dto.flowerList.forEach(item => {
+            this.ids.splice(this.ids.indexOf(item.id), 1)
+          })
+        }
+
+      } else {
+        //更换个人的
+        if (this.ids.indexOf(dto.id) < 0) {
+          this.ids.push(dto.id)
+        } else {
+          this.checkall = false
+
+          if (this.ids.indexOf(dto.supplierId) >= 0) {
+            this.ids.splice(this.ids.indexOf(dto.supplierId), 1)
+          }
+        }
+
+      }
+    },
+    async addnum(dto, addnum) {
+      if (dto.num + addnum >= 0) {
+
+      } else {
+        return
+      }
+      this.$message.showLoading()
+      const {code} = await http.request('post', '/api/api/customer/flower/cart/change-num', {
+            data: {
+              id: dto.id,
+              num: addnum
+            }
+          }
+      )
+      this.$message.hideLoading()
+      if (code === 0) {
+        dto.num += addnum
+      }
+    },
+    async init() {
+      this.$message.showLoading()
+      await this.$store.dispatch('sign_clear', 'shopping');
+      const {code, data} = await this.$http.request('get', '/api/customer/flower/cart/list', {})
+      this.$message.hideLoading()
+      this.list = []
+      if (code === 0) {
+        this.list = data.list || []
+
+      }
+    }
+  }
+}
 </script>
 
-<style>
+<style lang="scss" scoped>
+.shopping-container {
+  background-color: rgba(255, 255, 255, 0.4);
+  padding: 20rpx 30rpx;
 
+  .bottom-price {
+    position: fixed;
+    left: 0rpx;
+    padding: 20rpx;
+    right: 0rpx;
+    bottom: 160rpx;
+  }
+
+  .shopping-item {
+    padding: 28rpx 22rpx;
+    position: relative;
+
+    .sup-title {
+
+    }
+
+    .item-each {
+      padding-left: 88rpx;
+
+      .img {
+        width: 124rpx;
+        height: 124rpx;
+      }
+
+      .title {
+        font-weight: 600;
+        font-size: 28rpx;
+
+        color: #000000;
+        line-height: 40rpx;
+
+        .level {
+          color: #20613D;
+        }
+      }
+
+      .price {
+        font-weight: 400;
+        font-size: 28rpx;
+        color: #CF0000;
+        line-height: 40rpx;
+      }
+
+      .desc {
+        font-weight: 400;
+        font-size: 24rpx;
+        color: #666666;
+        line-height: 34rpx;
+      }
+    }
+
+    .button-icons {
+      position: absolute;
+    }
+  }
+
+  .top-title {
+    font-size: 28rpx;
+    color: #000000;
+    line-height: 40rpx;
+  }
+
+  .top-desc {
+    font-size: 24rpx;
+    color: #666666;
+    line-height: 34rpx;
+  }
+
+  .top-kf {
+    background: linear-gradient(270deg, rgba(219, 244, 229, 0) 0%, #D5ECDE 100%);
+    border-radius: 8rpx;
+    font-weight: 400;
+    font-size: 24rpx;
+    color: #20613D;
+    line-height: 52rpx;
+    height: 52rpx;
+    padding-left: 26rpx;
+
+    .icon-clock {
+      margin-top: 9rpx;
+    }
+  }
+}
 </style>
diff --git a/sub_pages/customer/trade/detail.vue b/sub_pages/customer/trade/detail.vue
index f1330a8..5575bf8 100644
--- a/sub_pages/customer/trade/detail.vue
+++ b/sub_pages/customer/trade/detail.vue
@@ -1,345 +1,368 @@
 <template>
-	<view class="trade-detail">
-		<view class="top-img-container">
-			<image src="" class="top-img"></image>
-			<view class="icon-container">
-				<image src="../../../static/common/icon-sc.png" class="icon-sc"></image>
-				<view class="num">12</view>
-			</view>
-			<view class="icon-container">
-				<image src="../../../static/common/icon-shop.png" class="icon-shop"></image>
+  <view class="trade-detail">
+    <view class="top-img-container">
+      <image :src="dto.cover" class="top-img"></image>
+      <view class="icon-container">
+        <image src="../../../static/common/icon-sc.png" class="icon-sc"></image>
+        <view class="num">12</view>
+      </view>
+      <view class="icon-container">
+        <image src="../../../static/common/icon-shop.png" class="icon-shop"></image>
 
-			</view>
-		</view>
-		<view class="info-container">
-			<view class="title">
-				<view class="level m-r-15">B级</view>
-				<view class="">
-					{{dto.name || '-'}}
-				</view>
-			</view>
-			<view class="desc m-t-12">
-				<view class="m-r-15">已售:7</view>
-				<view class="m-r-15">剩余:13</view>
-				<view class=" ">10支/扎</view>
-			</view>
-			<view class="flex m-t-12">
-				<view class="price m-r-a">
-					<span class="num">28.01</span>
-					元/扎
-				</view>
-				<view class="m-l-a m-r-15">
-					<image src="../../../static/common/icon-kf.png" class="icon-kf m-l-15 img100"></image>
+      </view>
+    </view>
+    <view class="trade-info-container">
+      <view class="title">
+        <view class="level m-r-15">{{ dto.levelStr || '-' }}级</view>
+        <view class="">
+          {{ dto.name || '-' }}
+        </view>
+      </view>
+      <view class="desc m-t-12">
+        <view class="m-r-15">已售:{{ dto.sales || 0 }}</view>
+        <view class="m-r-15">剩余:{{ dto.stock || 0 }}</view>
+        <view class=" ">{{ dto.unit || '-' }}支/扎</view>
+      </view>
+      <view class="flex m-t-12">
+        <view class="price m-r-a">
+          <span class="num">{{ dto.price || '-' }}</span>
+          元/扎
+        </view>
+        <view class="m-l-a m-r-15">
+          <image src="../../../static/common/icon-kf.png" class="icon-kf m-l-15 img100"></image>
 
-				</view>
-				<view class="m-r-0 gwc">
-					+ 购物车
-				</view>
-			</view>
-		</view>
-		<view class="line">
+        </view>
+        <view class="m-r-0 gwc" @click="submitShopping(dto)">
+          + 购物车
+        </view>
+      </view>
+    </view>
+    <view class="line">
 
-		</view>
-		<view class="info-detail">
-			<view class="title-before-blue" style="padding-top: 0rpx;padding-bottom: 0rpx;">详情</view>
-			<view class="flex m-t-8">
-				<view class="label">枝长:</view>
-				<view class="value">70-75cm</view>
-			</view>
-			<view class="flex m-t-8">
-				<view class="label">枝粗:</view>
-				<view class="value">中等粗细</view>
-			</view>
-			<view class="flex m-t-8">
-				<view class="label">均匀度:</view>
-				<view class="value">1-2支不均匀</view>
-			</view>
-		</view>
-		<view class="line">
+    </view>
+    <view class="info-detail" v-if="dto.params">
+      <view class="title-before-blue" style="padding-top: 0rpx;padding-bottom: 0rpx;">详情</view>
+      <view class="flex m-t-8" v-for="(param,index) of dto.params" :key="index">
+        <view class="label">{{ param.name}}:</view>
+        <view class="value">{{ param.value || '-'}}</view>
+      </view>
+<!--      <view class="flex m-t-8">-->
+<!--        <view class="label">枝粗:</view>-->
+<!--        <view class="value">中等粗细</view>-->
+<!--      </view>-->
+<!--      <view class="flex m-t-8">-->
+<!--        <view class="label">均匀度:</view>-->
+<!--        <view class="value">1-2支不均匀</view>-->
+<!--      </view>-->
+    </view>
+    <view class="line">
 
-		</view>
+    </view>
 
-		<view class="info-brand m-t-12" @click.stop="openbrand">
-			<view class="title-before-blue" style="padding-top: 0rpx;padding-bottom: 0rpx;">店铺</view>
-			<view class="flex">
-				<image class="store-logo"></image>
-				<view>
-					<view class="store-name">花仙子</view>
-					<view class="store-address">云南省-昆明市-官渡区</view>
-				</view>
-				<view class="store-to m-l-a m-r-0">进入店铺</view>
-			</view>
-		</view>
-		<view class="m-t-20 shop-recommend-container">
-			<view class="shop-recommend-title">店铺推荐</view>
-			<view class="flex">
-				<view v-for="i in 3" :key="i" class="shop-recommend">
-					<image src="" class="shop-recommend-image"></image>
-					<view class="shop-recommend-title m-t-8">
-						<view class="level m-r-15">B级</view>
-						<view class="">
-							{{dto.name || '-'}}
-						</view>
-					</view>
-					<view class="shop-recommend-price m-t-8">
-						¥23.01/扎
-					</view>
-				</view>
-			</view>
-		</view>
-		<view class="line">
+    <view class="info-brand m-t-12" @click.stop="openbrand">
+      <view class="title-before-blue" style="padding-top: 0rpx;padding-bottom: 0rpx;">店铺</view>
+      <view class="flex">
+        <image class="store-logo"></image>
+        <view>
+          <view class="store-name">{{dto.supplierName||'-'}}</view>
+          <view class="store-address">{{dto.supplierStation||'-'}}</view>
+        </view>
+        <view class="store-to m-l-a m-r-0">进入店铺</view>
+      </view>
+    </view>
+    <view class="m-t-20 shop-recommend-container"  v-if="false">
+      <view class="shop-recommend-title">店铺推荐</view>
+      <view class="flex">
+        <view v-for="i in 3" :key="i" class="shop-recommend">
+          <image src="" class="shop-recommend-image"></image>
+          <view class="shop-recommend-title m-t-8">
+            <view class="level m-r-15">B级</view>
+            <view class="">
+              {{ dto.name || '-' }}
+            </view>
+          </view>
+          <view class="shop-recommend-price m-t-8">
+            ¥23.01/扎
+          </view>
+        </view>
+      </view>
+    </view>
+    <view class="line">
 
-		</view>
-		<view class="comment-container m-t-12">
-			<view class="title-before-blue" style="padding-top: 0rpx;padding-bottom: 0rpx;">
-				<view>评价</view>
-				<view class="desc">
-					7条评论
-					<uni-icons type="right" size="18" color="#B3B3B3"></uni-icons>
+    </view>
+    <view class="comment-container m-t-12" v-if="false">
+      <view class="title-before-blue" style="padding-top: 0rpx;padding-bottom: 0rpx;">
+        <view>评价</view>
+        <view class="desc">
+          7条评论
+          <uni-icons type="right" size="18" color="#B3B3B3"></uni-icons>
 
-				</view>
-			</view>
-			<view v-for="i in 3" :key="i" class="m-t-20 flex user-item">
-				<image class="user-icon m-r-10"></image>
-				<view>
-					<view class="name">用户名3370</view>
-					<view class="comment">非常棒,会回购</view>
-				</view>
-				<view class="stars">
+        </view>
+      </view>
+      <view v-for="i in 3" :key="i" class="m-t-20 flex user-item">
+        <image class="user-icon m-r-10"></image>
+        <view>
+          <view class="name">用户名3370</view>
+          <view class="comment">非常棒,会回购</view>
+        </view>
+        <view class="stars">
 
-				</view>
-				<view class="date">
-					04-07 08:00
-				</view>
-			</view>
-		</view>
+        </view>
+        <view class="date">
+          04-07 08:00
+        </view>
+      </view>
+    </view>
 
-	</view>
+  </view>
 </template>
 
 <script>
-	export default {
-		data() {
-			return {
-				dto: {
+export default {
+  data() {
+    return {
+      id: '',
+      dto: {}
+    }
+  },
+  onLoad(options) {
+    this.id = options.id || ''
+    if (this.id) {
+      this.getDetail()
+    }
+  },
+  methods: {
+    async getDetail() {
+      this.$message.showLoading()
+      const {
+        code,
+        data
+      } = await this.$http.request('get', '/api/customer/flower/list/view', {
+        params: {
+          id: this.id
+        }
+      })
+      if (code === 0) {
+        this.dto = {
+          ...data,
+        }
+      }
 
-				}
-			}
-		},
-		methods: {
-			openbrand() {
-				uni.navigateTo({
-					url: '/sub_pages/customer/shop/shop?id=' + (this.dto.id || '')
-				})
-			}
-		}
-	}
+      this.$message.hideLoading()
+
+    },
+    openbrand() {
+      uni.navigateTo({
+        url: '/sub_pages/customer/shop/shop?id=' + (this.dto.id || '')
+      })
+    }
+  }
+}
 </script>
 
 <style lang="scss" scoped>
-	.trade-detail {
-		background-color: #FFFFFF;
+.trade-detail {
+  background-color: #FFFFFF;
 
-		.info-container {
-			padding: 46rpx 30rpx;
-			border-radius: 40rpx 40rpx 0rpx 0rpx;
+  .trade-info-container {
+    padding: 46rpx 30rpx;
+    border-radius: 40rpx 40rpx 0rpx 0rpx;
 
-			.title {
-				font-weight: 600;
-				font-size: 36rpx;
-				color: #000000;
-				line-height: 50rpx;
+    .title {
+      font-weight: 600;
+      font-size: 36rpx;
+      color: #000000;
+      line-height: 50rpx;
 
-				.level {
-					color: #20613D;
-				}
-			}
+      .level {
+        color: #20613D;
+      }
+    }
 
-			.desc {
-				font-weight: 400;
-				font-size: 28rpx;
-				color: #666666;
-				line-height: 40rpx;
-			}
+    .desc {
+      font-weight: 400;
+      font-size: 28rpx;
+      color: #666666;
+      line-height: 40rpx;
+    }
 
-			.price {
-				font-weight: 600;
-				font-size: 28rpx;
-				color: #CF0000;
-				line-height: 40rpx;
+    .price {
+      font-weight: 600;
+      font-size: 28rpx;
+      color: #CF0000;
+      line-height: 40rpx;
 
-				.num {
-					font-size: 48rpx;
-					line-height: 66rpx;
-				}
-			}
+      .num {
+        font-size: 48rpx;
+        line-height: 66rpx;
+      }
+    }
 
-			.icon-kf {
-				width: 44rpx;
-				height: 44rpx;
-			}
+    .icon-kf {
+      width: 44rpx;
+      height: 44rpx;
+    }
 
-			.gwc {
-				width: 168rpx;
-				height: 48rpx;
-				border-radius: 30rpx;
-				border: 2rpx solid #20613D;
-				font-size: 24rpx;
-				color: #20613D;
-				line-height: 48rpx;
-				text-align: center;
-			}
+    .gwc {
+      width: 168rpx;
+      height: 48rpx;
+      border-radius: 30rpx;
+      border: 2rpx solid #20613D;
+      font-size: 24rpx;
+      color: #20613D;
+      line-height: 48rpx;
+      text-align: center;
+    }
 
-		}
+  }
 
-		.line {
-			min-height: 20rpx;
-			background: #F7F7F7;
-		}
+  .line {
+    min-height: 20rpx;
+    background: #F7F7F7;
+  }
 
-		.info-detail {
-			padding: 18rpx 30rpx;
+  .info-detail {
+    padding: 18rpx 30rpx;
 
-			.label {
-				font-weight: 400;
-				font-size: 28rpx;
-				color: #666666;
-				line-height: 40rpx;
-				min-width: 160rpx;
-				margin-right: 20rpx;
-			}
+    .label {
+      font-weight: 400;
+      font-size: 28rpx;
+      color: #666666;
+      line-height: 40rpx;
+      min-width: 160rpx;
+      margin-right: 20rpx;
+    }
 
-			.value {
-				font-weight: 400;
-				font-size: 28rpx;
-				color: #666666;
-				line-height: 40rpx;
-			}
-		}
+    .value {
+      font-weight: 400;
+      font-size: 28rpx;
+      color: #666666;
+      line-height: 40rpx;
+    }
+  }
 
-		.shop-recommend-title {
-			font-weight: 400;
-			font-size: 24rpx;
-			color: #666666;
-			line-height: 34rpx;
-		}
+  .shop-recommend-title {
+    font-weight: 400;
+    font-size: 24rpx;
+    color: #666666;
+    line-height: 34rpx;
+  }
 
 
-		.shop-recommend-container {
-			padding: 24rpx 30rpx;
+  .shop-recommend-container {
+    padding: 24rpx 30rpx;
 
-			.shop-recommend {
-				.shop-recommend-image {
-					width: 214rpx;
-					height: 214rpx;
-					background-size: 100% 100%;
-					border-radius: 8rpx;
-				}
+    .shop-recommend {
+      .shop-recommend-image {
+        width: 214rpx;
+        height: 214rpx;
+        background-size: 100% 100%;
+        border-radius: 8rpx;
+      }
 
-				.shop-recommend-title {
-					font-weight: 600;
-					font-size: 28rpx;
-					color: #000000;
-					line-height: 40rpx;
+      .shop-recommend-title {
+        font-weight: 600;
+        font-size: 28rpx;
+        color: #000000;
+        line-height: 40rpx;
 
-					.level {
-						color: #20613D;
-						;
-					}
-				}
-			}
-		}
+        .level {
+          color: #20613D;;
+        }
+      }
+    }
+  }
 
-		.comment-container {
-			padding: 18rpx 30rpx;
+  .comment-container {
+    padding: 18rpx 30rpx;
 
-			.desc {
-				font-weight: 400;
-				font-size: 24rpx;
-				color: #666666;
-				line-height: 34rpx;
-			}
+    .desc {
+      font-weight: 400;
+      font-size: 24rpx;
+      color: #666666;
+      line-height: 34rpx;
+    }
 
-			.user-item {
-				.user-icon {
-					width: 72rpx;
-					height: 72rpx;
-					background-size: 100% 100%;
-					border-radius: 50%;
-				}
+    .user-item {
+      .user-icon {
+        width: 72rpx;
+        height: 72rpx;
+        background-size: 100% 100%;
+        border-radius: 50%;
+      }
 
-				.name {
-					font-weight: 600;
-					font-size: 24rpx;
-					color: #000000;
-					line-height: 34rpx;
-				}
+      .name {
+        font-weight: 600;
+        font-size: 24rpx;
+        color: #000000;
+        line-height: 34rpx;
+      }
 
-				.comment {
-					font-weight: 400;
-					font-size: 24rpx;
-					color: #666666;
-					line-height: 34rpx;
-				}
+      .comment {
+        font-weight: 400;
+        font-size: 24rpx;
+        color: #666666;
+        line-height: 34rpx;
+      }
 
-				.date {
-					font-weight: 400;
-					font-size: 24rpx;
-					color: #666666;
-					line-height: 72rpx;
-				}
-			}
-		}
+      .date {
+        font-weight: 400;
+        font-size: 24rpx;
+        color: #666666;
+        line-height: 72rpx;
+      }
+    }
+  }
 
 
-		.top-img-container {
-			position: relative;
+  .top-img-container {
+    position: relative;
 
-			.top-img {
-				width: 750rpx;
-				height: 764rpx;
-			}
+    .top-img {
+      width: 750rpx;
+      height: 764rpx;
+    }
 
-			.icon-container {
-				position: absolute;
-				top: 20rpx;
-				width: 80rpx;
-				height: 80rpx;
-				background: rgba(0, 0, 0, 0.42);
+    .icon-container {
+      position: absolute;
+      top: 20rpx;
+      width: 80rpx;
+      height: 80rpx;
+      background: rgba(0, 0, 0, 0.42);
 
-				.icon-sc {
-					width: 54rpx;
-					height: 54rpx;
-					margin: 0 auto;
-					margin-top: 12rpx;
-				}
+      .icon-sc {
+        width: 54rpx;
+        height: 54rpx;
+        margin: 0 auto;
+        margin-top: 12rpx;
+      }
 
-				.icon-shop {
-					width: 54rpx;
-					height: 54rpx;
-					margin: 0 auto;
-					margin-top: 12rpx;
-				}
+      .icon-shop {
+        width: 54rpx;
+        height: 54rpx;
+        margin: 0 auto;
+        margin-top: 12rpx;
+      }
 
-				.num {
-					font-weight: 400;
-					font-size: 20rpx;
-					color: #FFFFFF;
-					line-height: 28rpx;
-					position: absolute;
-					top: 6prx;
-					right: 16rpx;
-				}
-			}
+      .num {
+        font-weight: 400;
+        font-size: 20rpx;
+        color: #FFFFFF;
+        line-height: 28rpx;
+        position: absolute;
+        top: 6prx;
+        right: 16rpx;
+      }
+    }
 
-			.icon-container:last-child {
-				left: 120rpx;
-			}
+    .icon-container:last-child {
+      left: 120rpx;
+    }
 
-			.icon-container:first-child {
-				left: 20rpx;
-			}
+    .icon-container:first-child {
+      left: 20rpx;
+    }
 
-		}
-	}
+  }
+}
 </style>
\ No newline at end of file
diff --git a/sub_pages/supplier/flower-manage/flower-add.vue b/sub_pages/supplier/flower-manage/flower-add.vue
index b11bc26..5caa9c1 100644
--- a/sub_pages/supplier/flower-manage/flower-add.vue
+++ b/sub_pages/supplier/flower-manage/flower-add.vue
@@ -539,8 +539,8 @@
 				}
 				var tmp = parseFloat(this.dto.price)
 				if (isNaN(tmp) || parseFloat('' + tmp).toFixed(3) !== parseFloat('' + this.dto.price).toFixed(3)) {
-					this.$message.showToast('商品价格格式错误,精确到分')
-					console.log('a1', ('' + tmp) )
+					this.$message.showToast('商品价格格式错误,精确到分')
+					console.log('a1', ('' + tmp) )
 					console.log('a1', ('' + this.dto.price))
 					return
 				}

--
Gitblit v1.9.3