From 33988b65f7818207e4cf2686cb9be46e3976958c Mon Sep 17 00:00:00 2001 From: xuxueyang <xuxy@fengyuntec.com> Date: 星期一, 29 七月 2024 18:16:04 +0800 Subject: [PATCH] update 售后、合伙人绑定二维码 --- pages/order/order-sale/order-sale.vue | 29 sub_pages/supplier/flower-manage/flower-add.vue | 5 manifest.json | 2 pages.json | 43 sub_pages/partner/partner-info/partner-code.vue | 183 ++++++ pages/login/supplier-reg.vue | 1054 ++++++++++++++++++++------------------ pages/order/order.vue | 2 pages/order/order-detail.vue | 218 +++++++ sub_pages/customer/customer-info/customer-info.vue | 2 pages/order/order-sale/order-sale-detail.vue | 27 pages/user/supplier-user.vue | 13 11 files changed, 998 insertions(+), 580 deletions(-) diff --git a/manifest.json b/manifest.json index 651a10c..a3c7ecb 100644 --- a/manifest.json +++ b/manifest.json @@ -49,7 +49,7 @@ "quickapp" : {}, /* 快应用特有相关 */ "mp-weixin" : { - "appid" : "wx1441324401626290", + "appid" : "wx3203fd935a6ffe09", "setting" : { "urlCheck" : false, "es6" : true, diff --git a/pages.json b/pages.json index 9ede212..ce91a3e 100644 --- a/pages.json +++ b/pages.json @@ -115,6 +115,19 @@ "style": { "navigationBarTitleText": "订单列表" } + }, + { + "path": "pages/order/order-sale/order-sale", + "style": { + "navigationBarTitleText": "售后理赔", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/order/order-sale/order-sale-detail", + "style": { + "navigationBarTitleText": "理赔单详情" + } } ], "subPackages": [{ @@ -167,26 +180,12 @@ "enablePullDownRefresh": true } }, + { - "path": "order-sale/order-sale", + "path": "order-settlement/order-settlement-detail", "style": { - "navigationBarTitleText": "售后理赔", - "enablePullDownRefresh": true + "navigationBarTitleText": "结算单详情" } - }, - { - "path" : "order-settlement/order-settlement-detail", - "style" : - { - "navigationBarTitleText" : "结算单详情" - } - }, - { - "path": "order-sale/order-sale-detail", - "style" : - { - "navigationBarTitleText" : "理赔单详情" - } } // #endif ] @@ -201,7 +200,15 @@ "navigationBarTitleText": "信息维护", "enablePullDownRefresh": false } - }, + }, + { + "path": "partner-info/partner-code", + "style": { + "navigationBarTitleText": "二维码", + "enablePullDownRefresh": false + } + }, + { "path": "order-manage/order-manage", "style": { diff --git a/pages/login/supplier-reg.vue b/pages/login/supplier-reg.vue index d79a3f4..85089a8 100644 --- a/pages/login/supplier-reg.vue +++ b/pages/login/supplier-reg.vue @@ -1,593 +1,627 @@ <template> - <view> - <view v-if="source==='step'" style="padding: 20rpx 0rpx;color: red;;background-color: #e6e6e6;"> - <!-- #ifdef PUB_PARTNER --> - <view style="padding: 20rpx;text-align: center;background-color: #fff;">仅限花满芫合伙人入驻</view> - <!-- #endif -->e + <view> + <view v-if="source==='step'" style="padding: 20rpx 0rpx;color: red;;background-color: #e6e6e6;"> + <!-- #ifdef PUB_PARTNER --> + <view style="padding: 20rpx;text-align: center;background-color: #fff;">仅限花满芫合伙人入驻</view> + <!-- #endif -->e - <view v-if="source==='step'" class="" style="background-color:#ffffff;padding: 20rpx;padding-top: 60rpx;"> - <u-steps current="1"> - <u-steps-item title="信息填写" class="u-steps-item"> - </u-steps-item> - <u-steps-item title="提交申请" class="u-steps-item"></u-steps-item> - </u-steps> - </view> - </view> + <view v-if="source==='step'" class="" style="background-color:#ffffff;padding: 20rpx;padding-top: 60rpx;"> + <u-steps current="1"> + <u-steps-item title="信息填写" class="u-steps-item"> + </u-steps-item> + <u-steps-item title="提交申请" class="u-steps-item"></u-steps-item> + </u-steps> + </view> + </view> - <view class="main-container login-container img100 relative" style="margin-top: 0rpx;"> - <image class="component-bg" - src="https://hmy-flower.oss-cn-shanghai.aliyuncs.com/a5/a54508de179a4942918ecb2c5a4aa9f5bg.png" - mode="scaleToFill"/> + <view class="main-container login-container img100 relative" style="margin-top: 0rpx;"> + <image class="component-bg" + src="https://hmy-flower.oss-cn-shanghai.aliyuncs.com/a5/a54508de179a4942918ecb2c5a4aa9f5bg.png" + mode="scaleToFill" /> - <view class="t-login top-bg"> + <view class="t-login top-bg"> - <view class="nav-title" v-if="source!=='step'" :style="{'padding-top':source==='step'?'60rpx':'unset' + <view class="nav-title" v-if="source!=='step'" :style="{'padding-top':source==='step'?'60rpx':'unset' ,'padding-bottom':source==='step'?'80rpx':'unset'}"> - <view> - 注册 - </view> - </view> - <view class="login" style="padding-top: 40rpx;"> - <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> + <view> + 注册 + </view> + </view> + <view class="login" style="padding-top: 40rpx;"> + <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> - <view class="t-a form-input" v-if="loginType=='code'"> - <u-input placeholder="请输入手机号" :border="false" v-model="phoneNumber"> - <template slot="suffix"> - <view class="get-code" :style="{'color':getCodeBtnColor}" @click.stop="getCode()"> - {{ getCodeText }} - </view> - </template> - </u-input> + <view class="t-a form-input" v-if="loginType=='code'"> + <u-input placeholder="请输入手机号" :border="false" v-model="phoneNumber"> + <template slot="suffix"> + <view class="get-code" :style="{'color':getCodeBtnColor}" @click.stop="getCode()"> + {{ getCodeText }} + </view> + </template> + </u-input> - <!-- <u-input type="text" name="userName" placeholder="请输入手机号" v-model="phoneNumber" + <!-- <u-input type="text" name="userName" placeholder="请输入手机号" v-model="phoneNumber" style="position: relative;z-index: 1;" /> --> - </view> + </view> - <view class="t-a form-input" v-if="loginType=='code'"> - <!-- <input type="text" name="userName" placeholder="请输入手机验证码" v-model="smsCode" + <view class="t-a form-input" v-if="loginType=='code'"> + <!-- <input type="text" name="userName" placeholder="请输入手机验证码" v-model="smsCode" style="position: relative;z-index: 1;" /> --> - <u-input placeholder="请输入手机验证码" :border="false" v-model="smsCode"></u-input> + <u-input placeholder="请输入手机验证码" :border="false" v-model="smsCode"></u-input> - </view> - <view class="t-a form-input" v-if="loginType=='code'"> - <!-- <input type="text" :password="true" name="password" placeholder="请输入密码" v-model="password" /> --> + </view> + <view class="t-a form-input" v-if="loginType=='code'"> - <u-input :password="true" :border="false" placeholder="请输入密码" v-model="password"></u-input> - </view> + <u-input :password="true" :border="false" placeholder="请输入密码" v-model="password"></u-input> + </view> - <!-- #ifndef PUB_CUSTOMER --> - <button @tap="reg('')" class="bottom-button">注 册</button> + <!-- #ifndef PUB_CUSTOMER --> + <button @tap="reg('')" class="bottom-button">注 册</button> - <!-- #endif --> - <!-- #ifdef PUB_CUSTOMER --> - <!-- open-type="getUserInfo"--> - <button @tap="wxreg('')" class="bottom-button">注 册</button> + <!-- #endif --> + <!-- #ifdef PUB_CUSTOMER --> + <!-- open-type="getUserInfo"--> + <button @tap="wxreg('')" + class="bottom-button">注册,{{!partnerId?'未绑定合伙人':`已绑定${partnerName}`}}</button> - <!-- #endif --> + <!-- #endif --> - <view class="flex"> - <view class="topic-font m-l-0 m-r-a" @click="backInfoPage" v-if="source==='step'">返回上一步 - </view> - <view class="topic-font m-l-a m-r-0" @click="toLogin">前往登录</view> + <view class="flex"> + <view class="topic-font m-l-0 m-r-a" @click="backInfoPage" v-if="source==='step'">返回上一步 + </view> + <!-- #ifdef PUB_CUSTOMER --> + <view class="topic-font m-l-a m-r-a" @click="scanPartnerCode" v-if="source==='step'">扫码绑定合伙人 + </view> + <!-- #endif --> + <view class="topic-font m-l-a m-r-0" @click="toLogin">前往登录</view> - </view> - <view class="flex flex-wrap-normal" - style="position: fixed;bottom: 40rpx;left: 40rpx;right: 40rpx;" v-if="false"> - <view :style="{'margin-top': '8rpx','margin-right': '12rpx','font-size':'24rpx'}" - @click="protocal=!protocal" class="component-radio" :class="[protocal?'cur':'']"> + </view> + <view class="flex flex-wrap-normal" + style="position: fixed;bottom: 40rpx;left: 40rpx;right: 40rpx;" v-if="false"> + <view :style="{'margin-top': '8rpx','margin-right': '12rpx','font-size':'24rpx'}" + @click="protocal=!protocal" class="component-radio" :class="[protocal?'cur':'']"> - </view> - <view class="topic-gray" @click="toProtocol">请仔细阅读《花满芫合伙人供应商入口小程序隐私保护指引》如您同意该指引,请勾选开始使用本小程序 - </view> - </view> - </form> - </view> - </view> - </view> - </view> + </view> + <view class="topic-gray" @click="toProtocol">请仔细阅读《花满芫合伙人供应商入口小程序隐私保护指引》如您同意该指引,请勾选开始使用本小程序 + </view> + </view> + </form> + </view> + </view> + </view> + </view> </template> <script> -// import util from '@/utils/util.js' -// import gzmzApi from '@/api/gzmzApi.js' -// import myCache from '@/utils/myCache.js' -export default { - data() { - return { - openId: '-1', + // import util from '@/utils/util.js' + // import gzmzApi from '@/api/gzmzApi.js' + // import myCache from '@/utils/myCache.js' + export default { + data() { + return { + openId: '-1', - userName: '', - password: '', + userName: '', + password: '', - phoneNumber: '', - smsCode: '', + phoneNumber: '', + smsCode: '', + partnerId: '', + partnerName: '', + checked: false, + loginType: 'code', //pwd和code,密码和验证码登录 + pcfvalue: undefined, + getCodeText: '获取验证码', + getCodeBtnColor: "#20613D", + getCodeisWaiting: false, + Timer: undefined, + protocal: false, + source: '', + // #ifdef PUB_SUPPLIER + apitype: 'supplier', + // #endif + // #ifdef PUB_PARTNER + apitype: 'partner', + // #endif + // #ifdef PUB_CUSTOMER + apitype: 'customer', + // #endif - checked: false, - loginType: 'code', //pwd和code,密码和验证码登录 - pcfvalue: undefined, - getCodeText: '获取验证码', - getCodeBtnColor: "#20613D", - getCodeisWaiting: false, - Timer: undefined, - protocal: false, - source: '', - // #ifdef PUB_SUPPLIER - apitype: 'supplier', - // #endif - // #ifdef PUB_PARTNER - apitype: 'partner', - // #endif - // #ifdef PUB_CUSTOMER - apitype: 'customer', - // #endif + }; + }, + onLoad(options) { + this.source = options.source || '' + }, + methods: { + async scanPartnerCode() { + await this.$message.confirm('确定要绑定合伙人吗?') + //扫二维码确认 + let that = this + uni.scanCode({ + success: async function(res) { + console.log('条码内容:' + res.result); + var dto = undefined + try { + dto = JSON.parse(res.result) + if (!!dto['userId']) { + that.partnerName = dto['name'] || '' + that.partnerId = dto['userId'] || '' + that.$message.showToast(`绑定合伙人${that.partnerName}成功`) + } else { + that.$message.showToast('二维码格式不正确扫码失败') + } + } catch (e) { + that.$message.showToast('二维码格式不正确扫码失败') + } + }, + fail() { + that.$message.showToast('扫码失败') - }; - }, - onLoad(options) { - this.source = options.source || '' - }, - methods: { - backInfoPage() { - console.log('backInfoPage') - uni.navigateBack() - }, - toProtocol() { - uni.navigateTo({ - url: '/sub_pages/supplier/protocol' - }) - }, - async getCode() { - // await this.$message.confirm('是否同意入驻协议') - // this.protocal = true - console.log('getCode') - setTimeout(() => { - uni.hideKeyboard() //隐藏已经显示的软键盘,如果软键盘没有显示则不做任何操作。 - }, 200) + } + }); - if (this.getCodeisWaiting) { - return; - } - if (!(/^1(3|4|5|6|7|8|9)\d{9}$/.test(this.phoneNumber))) { //校验手机号码是否有误 - uni.showToast({ - title: '请填写正确手机号码', - icon: "none" - }); - return false; - } - this.getCodeText = "发送中..." //发送验证码 - this.getCodeisWaiting = true; - this.getCodeBtnColor = "#000" //追加样式,修改颜色 - //示例用定时器模拟请求效果 - //setTimeout(()用于在指定的毫秒数后调用函数或计算表达式 - const { - code - } = await this.$http.request('post', '/api/sms/send/code', { - data: { - tel: this.phoneNumber, - userType: this.apitype - } - }) - if (code === 0) { - uni.showToast({ - title: '验证码已发送', - icon: "none" - }); - this.setTimer(); //调用定时器方法 - } else { - this.getCodeText = "获取验证码" //发送验证码 - this.getCodeisWaiting = false; - this.getCodeBtnColor = "#20613D"; - } - // setTimeout(() => { - // //弹出提示框 - // //示例默认1234,生产中请删除这一句。 - // // this.code = '1234'; //发送验证码,进行填入 + }, + backInfoPage() { + console.log('backInfoPage') + uni.navigateBack() + }, + toProtocol() { + uni.navigateTo({ + url: '/sub_pages/supplier/protocol' + }) + }, + async getCode() { + // await this.$message.confirm('是否同意入驻协议') + // this.protocal = true + console.log('getCode') + setTimeout(() => { + uni.hideKeyboard() //隐藏已经显示的软键盘,如果软键盘没有显示则不做任何操作。 + }, 200) - // }, 1000) - }, - //setTimer: 需要每隔一段时间执行一件事的的时候就需要使用SetTimer函数 - setTimer() { - let holdTime = 60; //定义变量并赋值 - this.getCodeText = "重新获取(60)" - //setInterval()是一个实现定时调用的函数,可按照指定的周期(以毫秒计)来调用函数或计算表达式。 - //setInterval方法会不停地调用函数,直到 clearInterval被调用或窗口被关闭。 - this.Timer = setInterval(() => { - if (holdTime <= 0) { - this.getCodeisWaiting = false; - this.getCodeBtnColor = "#20613D"; - this.getCodeText = "获取验证码" - clearInterval(this.Timer); //清除该函数 - return; //返回前面 - } - this.getCodeText = "重新获取(" + holdTime + ")" - holdTime--; - }, 1000) - }, - toLogin() { - uni.redirectTo({ - url: '/pages/login/supplier-login' - }) + if (this.getCodeisWaiting) { + return; + } + if (!(/^1(3|4|5|6|7|8|9)\d{9}$/.test(this.phoneNumber))) { //校验手机号码是否有误 + uni.showToast({ + title: '请填写正确手机号码', + icon: "none" + }); + return false; + } + this.getCodeText = "发送中..." //发送验证码 + this.getCodeisWaiting = true; + this.getCodeBtnColor = "#000" //追加样式,修改颜色 + //示例用定时器模拟请求效果 + //setTimeout(()用于在指定的毫秒数后调用函数或计算表达式 + const { + code + } = await this.$http.request('post', '/api/sms/send/code', { + data: { + tel: this.phoneNumber, + userType: this.apitype + } + }) + if (code === 0) { + uni.showToast({ + title: '验证码已发送', + icon: "none" + }); + this.setTimer(); //调用定时器方法 + } else { + this.getCodeText = "获取验证码" //发送验证码 + this.getCodeisWaiting = false; + this.getCodeBtnColor = "#20613D"; + } + // setTimeout(() => { + // //弹出提示框 + // //示例默认1234,生产中请删除这一句。 + // // this.code = '1234'; //发送验证码,进行填入 - }, - changeAll(e) { - this.pcfvalue = e.detail.value[0] - }, - // async wxreg(e) { - // wx.login({ - // success: async res => { - // if (res.code) { - // - // } - // }, - // fail() { - // this.$message.showToast('获取微信信息失败') - // } - // }) - // }, - wxreg(e) { - let tmp = this - wx.login({ - success: async res => { - console.log(res) - if (res.code) { - tmp.reg(res.code) - } else { - tmp.$message.showToast('微信登录失败'); - } - }, - error: res => { - console.log('wx.login error', res) - tmp.$message.showToast('获取微信信息失败:' + res); - } - }); - }, - async reg(wxcode) { - // console.log('e', e) - // this.$message.showLoading() - // const res = await wx.getUserProfile({ - // desc: '用于完善会员资料', - // }); - // console.log(res); - // this.$message.hideLoading() + // }, 1000) + }, + //setTimer: 需要每隔一段时间执行一件事的的时候就需要使用SetTimer函数 + setTimer() { + let holdTime = 60; //定义变量并赋值 + this.getCodeText = "重新获取(60)" + //setInterval()是一个实现定时调用的函数,可按照指定的周期(以毫秒计)来调用函数或计算表达式。 + //setInterval方法会不停地调用函数,直到 clearInterval被调用或窗口被关闭。 + this.Timer = setInterval(() => { + if (holdTime <= 0) { + this.getCodeisWaiting = false; + this.getCodeBtnColor = "#20613D"; + this.getCodeText = "获取验证码" + clearInterval(this.Timer); //清除该函数 + return; //返回前面 + } + this.getCodeText = "重新获取(" + holdTime + ")" + holdTime--; + }, 1000) + }, + toLogin() { + uni.redirectTo({ + url: '/pages/login/supplier-login' + }) - uni.showLoading({ - title: '登陆中' - }); - var that = this; - if (!that.phoneNumber) { - uni.showToast({ - title: '请输入手机号', - icon: 'none' - }); - return; - } - if (!that.smsCode) { - uni.showToast({ - title: '请输入手机验证码', - icon: 'none' - }); - return; - } - if (!that.password) { - uni.showToast({ - title: '请输入密码', - icon: 'none' - }); - return; - } - // if (this.pcfvalue == undefined) { - // util.showMyToast('必须勾选《用户服务协议》及《隐私政策》'); - // return; - // } - let post = { - tel: this.phoneNumber, - smsCode: this.smsCode, - password: this.password, - type: this.apitype - // openId: '123456789' - } - if (this.source === 'step') { - var tjson = '' - // #ifdef PUB_PARTNER - tjson = this.$storage.getItem('cache_partner_info') - // #endif - // #ifdef PUB_CUSTOMER - tjson = this.$storage.getItem('cache_customer_info') - // #endif + }, + changeAll(e) { + this.pcfvalue = e.detail.value[0] + }, + // async wxreg(e) { + // wx.login({ + // success: async res => { + // if (res.code) { + // + // } + // }, + // fail() { + // this.$message.showToast('获取微信信息失败') + // } + // }) + // }, + wxreg(e) { + let tmp = this + wx.login({ + success: async res => { + console.log(res) + if (res.code) { + tmp.reg(res.code) + } else { + tmp.$message.showToast('微信登录失败'); + } + }, + error: res => { + console.log('wx.login error', res) + tmp.$message.showToast('获取微信信息失败:' + res); + } + }); + }, + async reg(wxcode) { + // console.log('e', e) + // this.$message.showLoading() + // const res = await wx.getUserProfile({ + // desc: '用于完善会员资料', + // }); + // console.log(res); + // this.$message.hideLoading() - if (!tjson) { - this.$message.showToast('没有填写用户信息请返回重新填写') - return - } - var dto = JSON.parse(tjson) - post.dto = dto - } - post.wxcode = wxcode + uni.showLoading({ + title: '登陆中' + }); + var that = this; + if (!that.phoneNumber) { + uni.showToast({ + title: '请输入手机号', + icon: 'none' + }); + return; + } + if (!that.smsCode) { + uni.showToast({ + title: '请输入手机验证码', + icon: 'none' + }); + return; + } + if (!that.password) { + uni.showToast({ + title: '请输入密码', + icon: 'none' + }); + return; + } + // if (this.pcfvalue == undefined) { + // util.showMyToast('必须勾选《用户服务协议》及《隐私政策》'); + // return; + // } + let post = { + tel: this.phoneNumber, + smsCode: this.smsCode, + password: this.password, + type: this.apitype + // openId: '123456789' + } + if (this.source === 'step') { + var tjson = '' + // #ifdef PUB_PARTNER + tjson = this.$storage.getItem('cache_partner_info') + // #endif + // #ifdef PUB_CUSTOMER + tjson = this.$storage.getItem('cache_customer_info') + // #endif - // const { - // code - // } = await this.$http.request('get', '/api/login/admin') - const resp = await this.$store.dispatch('regUser', post); - // uni.hideLoading() + if (!tjson) { + this.$message.showToast('没有填写用户信息请返回重新填写') + return + } + var dto = JSON.parse(tjson) + dto.partnerId = this.partnerId || undefined + post.dto = dto + } + post.wxcode = wxcode - if (resp.code === 0) { + // const { + // code + // } = await this.$http.request('get', '/api/login/admin') + const resp = await this.$store.dispatch('regUser', post); + // uni.hideLoading() - // myCache.cache("userToken", res.data.accessToken) - // let userRes = await gzmzApi.getMemberInfo(); - // if (userRes.status) { - // myCache.cache("userInfo", JSON.stringify(userRes.data)) - // } - uni.showToast({ - title: '注册成功!', - icon: 'none' - }); - setTimeout(() => { - this.toLogin() - }, 1000); - // if (this.source == 'step') { - // // cache_partner_info - // var tjson = this.$storage.getItem('cache_partner_info') - // if (tjson) { - // var dto = JSON.parse(tjson) + if (resp.code === 0) { + + // myCache.cache("userToken", res.data.accessToken) + // let userRes = await gzmzApi.getMemberInfo(); + // if (userRes.status) { + // myCache.cache("userInfo", JSON.stringify(userRes.data)) + // } + uni.showToast({ + title: '注册成功!', + icon: 'none' + }); + setTimeout(() => { + this.toLogin() + }, 1000); + // if (this.source == 'step') { + // // cache_partner_info + // var tjson = this.$storage.getItem('cache_partner_info') + // if (tjson) { + // var dto = JSON.parse(tjson) - // this.$message.showLoading() - // const re = await this.$http.request('post', '/api/partner/addOrUpdate', { - // data: dto - // }) - // this.$message.hideLoading() - // if (re.code == 2000 || re.code == 0) { - // this.$storage.removeItem('cache_partner_info') + // this.$message.showLoading() + // const re = await this.$http.request('post', '/api/partner/addOrUpdate', { + // data: dto + // }) + // this.$message.hideLoading() + // if (re.code == 2000 || re.code == 0) { + // this.$storage.removeItem('cache_partner_info') - // this.toLogin() - // } else { - // this.$message.showToast('合伙人信息失效,请登录后重新填写提交审核') - // setTimeout(() => { - // this.toLogin() - // }, 1000); - // } + // this.toLogin() + // } else { + // this.$message.showToast('合伙人信息失效,请登录后重新填写提交审核') + // setTimeout(() => { + // this.toLogin() + // }, 1000); + // } - // } else { - // this.$message.showToast('合伙人信息失效,请登录后重新填写提交审核') - // setTimeout(() => { - // this.toLogin() - // }, 1000); - // } + // } else { + // this.$message.showToast('合伙人信息失效,请登录后重新填写提交审核') + // setTimeout(() => { + // this.toLogin() + // }, 1000); + // } - // } else { - // setTimeout(() => { - // this.toLogin() - // }, 1000); - // } + // } else { + // setTimeout(() => { + // this.toLogin() + // }, 1000); + // } - } else { - // uni.showToast({ - // title: '登录失败!', - // icon: 'none' - // }); - return - } + } else { + // uni.showToast({ + // title: '登录失败!', + // icon: 'none' + // }); + return + } - }, - tc1(id) { - uni.navigateTo({ - url: '/pages/users/xieyi?id=' + id, - }); - } - } -}; + }, + tc1(id) { + uni.navigateTo({ + url: '/pages/users/xieyi?id=' + id, + }); + } + } + }; </script> <style lang="scss" scoped> -.form-input { - background-color: #f8f7fc; - border-radius: 50rpx; - margin-bottom: 50rpx; - border: 1px solid #e9e9e9; + .form-input { + background-color: #f8f7fc; + border-radius: 50rpx; + margin-bottom: 50rpx; + border: 1px solid #e9e9e9; - /deep/ .u-input { - padding-left: 60rpx !important; - padding-right: 40rpx !important; - } + /deep/ .u-input { + padding-left: 60rpx !important; + padding-right: 40rpx !important; + } - /deep/ input { - height: 70rpx; - line-height: 70rpx; + /deep/ input { + height: 70rpx; + line-height: 70rpx; - } + } -} + } </style> <style lang="scss" scoped> -@import '@/pages/login/login.scss'; + @import '@/pages/login/login.scss'; -.main-container { - margin: 20px 0; -} + .main-container { + margin: 20px 0; + } -.img-a { - position: absolute; - width: 100%; - top: -150rpx; - right: 0; -} + .img-a { + position: absolute; + width: 100%; + top: -150rpx; + right: 0; + } -.img-b { - position: absolute; - width: 50%; - bottom: 0; - left: -120rpx; -} + .img-b { + position: absolute; + width: 50%; + bottom: 0; + left: -120rpx; + } -.to-home { - margin-top: 30rpx; - font-size: 30rpx; - color: #5af; - display: flex; - flex-direction: row-reverse; -} + .to-home { + margin-top: 30rpx; + font-size: 30rpx; + color: #5af; + display: flex; + flex-direction: row-reverse; + } -.t-login { - width: 100%; - margin: 0 auto; - font-size: 28rpx; - color: #000; -} + .t-login { + width: 100%; + margin: 0 auto; + font-size: 28rpx; + color: #000; + } -.t-login .bg { - width: 100%; - position: relative; -} + .t-login .bg { + width: 100%; + position: relative; + } -.t-login .login { - width: 650rpx; - margin: 60rpx auto; - margin-top: 0rpx; - font-size: 28rpx; - color: #000; -} + .t-login .login { + width: 650rpx; + margin: 60rpx auto; + margin-top: 0rpx; + font-size: 28rpx; + color: #000; + } -.t-login button { - font-size: 28rpx; - background: #5677fc; - color: #fff; - height: 90rpx; - line-height: 90rpx; - border-radius: 50rpx; - box-shadow: 0 5px 7px 0 rgba(86, 119, 252, 0.2); -} + .t-login button { + font-size: 28rpx; + background: #5677fc; + color: #fff; + height: 90rpx; + line-height: 90rpx; + border-radius: 50rpx; + box-shadow: 0 5px 7px 0 rgba(86, 119, 252, 0.2); + } -.t-login input { - padding: 0 20rpx 0 60rpx; - height: 90rpx; - line-height: 90rpx; - margin-bottom: 50rpx; - background: #f8f7fc; - border: 1px solid #e9e9e9; - font-size: 28rpx; - border-radius: 50rpx; -} + .t-login input { + padding: 0 20rpx 0 60rpx; + height: 90rpx; + line-height: 90rpx; + margin-bottom: 50rpx; + background: #f8f7fc; + border: 1px solid #e9e9e9; + font-size: 28rpx; + border-radius: 50rpx; + } -.t-login .t-a { - position: relative; + .t-login .t-a { + position: relative; - .get-code { - // position: absolute; - // right: 0rpx; - // top: 0rpx; - // z-index: 99; - // padding-top: 25rpx; - // bottom: 0; - // padding-right: 40rpx; - // padding-left: 20rpx; - } -} + .get-code { + // position: absolute; + // right: 0rpx; + // top: 0rpx; + // z-index: 99; + // padding-top: 25rpx; + // bottom: 0; + // padding-right: 40rpx; + // padding-left: 20rpx; + } + } -.t-login .t-a .icon { - width: 40rpx; - height: 40rpx; - position: absolute; - left: 24rpx; - top: 14rpx; - margin-right: 20rpx; -} + .t-login .t-a .icon { + width: 40rpx; + height: 40rpx; + position: absolute; + left: 24rpx; + top: 14rpx; + margin-right: 20rpx; + } -.t-login .t-a .line { - width: 2rpx; - height: 40rpx; - background-color: #dedede; - position: absolute; - top: 28rpx; - left: 98rpx; -} + .t-login .t-a .line { + width: 2rpx; + height: 40rpx; + background-color: #dedede; + position: absolute; + top: 28rpx; + left: 98rpx; + } -.t-login .t-b { - text-align: left; - font-size: 46rpx; - color: #000; - padding: 300rpx 0 30rpx 0; - font-weight: bold; -} + .t-login .t-b { + text-align: left; + font-size: 46rpx; + color: #000; + padding: 300rpx 0 30rpx 0; + font-weight: bold; + } -.t-login .t-b2 { - text-align: left; - font-size: 32rpx; - color: #aaaaaa; - padding: 0rpx 0 120rpx 0; -} + .t-login .t-b2 { + text-align: left; + font-size: 32rpx; + color: #aaaaaa; + padding: 0rpx 0 120rpx 0; + } -.t-login .t-c { - position: absolute; - right: 22rpx; - top: 22rpx; - background: #5677fc; - color: #fff; - font-size: 24rpx; - border-radius: 50rpx; - height: 50rpx; - line-height: 50rpx; - padding: 0 25rpx; - z-index: 999; -} + .t-login .t-c { + position: absolute; + right: 22rpx; + top: 22rpx; + background: #5677fc; + color: #fff; + font-size: 24rpx; + border-radius: 50rpx; + height: 50rpx; + line-height: 50rpx; + padding: 0 25rpx; + z-index: 999; + } -.t-login .t-d { - text-align: center; - color: #999; - margin: 80rpx 0; -} + .t-login .t-d { + text-align: center; + color: #999; + margin: 80rpx 0; + } -.t-login .t-e { - text-align: center; - width: 250rpx; - margin: 80rpx auto 0; -} + .t-login .t-e { + text-align: center; + width: 250rpx; + margin: 80rpx auto 0; + } -.t-login .t-g { - float: left; - width: 50%; -} + .t-login .t-g { + float: left; + width: 50%; + } -.t-login .t-e image { - width: 50rpx; - height: 50rpx; -} + .t-login .t-e image { + width: 50rpx; + height: 50rpx; + } -.t-login .t-f { - text-align: center; - margin: 200rpx 0 0 0; - color: #666; -} + .t-login .t-f { + text-align: center; + margin: 200rpx 0 0 0; + color: #666; + } -.t-login .t-f text { - margin-left: 20rpx; - color: #aaaaaa; - font-size: 27rpx; -} + .t-login .t-f text { + margin-left: 20rpx; + color: #aaaaaa; + font-size: 27rpx; + } -.t-login .uni-input-placeholder { - color: #000; -} + .t-login .uni-input-placeholder { + color: #000; + } -.cl { - zoom: 1; -} + .cl { + zoom: 1; + } -.cl:after { - clear: both; - display: block; - visibility: hidden; - height: 0; - content: '\20'; -} + .cl:after { + clear: both; + display: block; + visibility: hidden; + height: 0; + content: '\20'; + } </style> \ No newline at end of file diff --git a/pages/order/order-detail.vue b/pages/order/order-detail.vue index f0e61f5..4aab10e 100644 --- a/pages/order/order-detail.vue +++ b/pages/order/order-detail.vue @@ -4,6 +4,8 @@ return { id: '', dto: {}, + showSales: false, + submitForm: {}, type: '', // #ifdef PUB_CUSTOMER type: 'customer', @@ -106,7 +108,7 @@ } break case 'payAgain': { - await this.$message.confirm('是否确定重新') + await this.$message.confirm('是否确定重新支付') // 发送请求 this.$message.showLoading() const { @@ -143,7 +145,7 @@ case 'evaluate': { const res = await this.$message.confirm('', { editable: true, - title:'请输入评价信息' + title: '请输入评价信息' }) if (res.content && res.confirm) { // 发送请求 @@ -163,20 +165,127 @@ } } break - case 'couldRefund': { + case 'sales': { + //新增售后单 + //去新的页面加上这些选择? + this.submitForm = { + orderId: this.id, + imageList: [], + videoList: [], + reason: [], + orderItems: [], + } + this.showSales = true } default: break } - } + }, + changeSalesOrderItem(dto) { + if (this.submitForm.orderItems.indexOf(dto.id) < 0) { + this.submitForm.orderItems.push(dto.id) + } else { + this.submitForm.orderItems.splice(this.submitForm.orderItems.indexOf(dto.id), 1) + } + }, + deleteCheckImage(key, index) { + this.submitForm[key].splice(index, 1) + this.$forceUpdate() + }, + uploadIcon(key) { + console.log('that dto key', key) + const that = this + if (key === 'video') { + uni.chooseVideo({ + maxDuration: 30, + sourceType: ['camera', 'album'], + success: function(res) { + if (res.size > 1024 * 1024 * 50) { + that.$message.confirm('视频最多支持50M大小,超出大小限制') + return + } + if (res.tempFilePath) { + console.log('res.tempFilePath', res.tempFilePath) + that.$message.showLoading() + that.$http.upload(res.tempFilePath).then(async res => { + var pic = res.data && res.data.length > 0 && res.data[ + 0] + .url || '' + that.$message.hideLoading() + that.submitForm.videoList.push(pic || '') + + that.$forceUpdate() + }).catch(res => { + that.$message.hideLoading() + console.error(res) + }) + } + } + }); + } else { + + uni.chooseImage({ + count: 1, // 最多可以选择的图片张数,默认9 + sizeType: ['compressed'], //original 原图,compressed 压缩图,默认二者都有 + sourceType: ['camera', 'album'], //album 从相册选图,camera 使用相机,默认二者都有。如需直接开相机或直接选相册,请只使用一个选项 + success: function(res) { + let errMsg = res.errMsg + let tempFiles = res.tempFiles + if (errMsg === 'chooseImage:ok') { + // console.log(tempFiles[0]) + if (tempFiles[0].size > 1024 * 1024 * 5) { + that.$message.confirm('图片最多支持5M大小,超出大小限制') + return + } + that.$message.showLoading() + that.$http.upload(tempFiles[0].path).then(async res => { + console.log('res1', res) + var pic = res.data && res.data.length > 0 && res.data[ + 0] + .url || '' + that.$message.hideLoading() + that.submitForm.imageList.push(pic) + + that.$forceUpdate() + }).catch(res => { + that.$message.hideLoading() + console.error(res) + }) + } + } + }) + } + }, + + async submitSales() { + if (this.submitForm.orderItems.length < 1) { + this.$message.showToast('未选择需要售后的商品') + return + } + await this.$message.confirm('确定申请售后吗') + this.$message.showLoading() + const { + code, + data + } = await this.$http.request('post', '/api/customer/sales/add', { + data: { + ...this.submitForm + } + }) + this.$message.hideLoading() + if (code == 0) { + this.$message.showToast('提交成功') + this.showSales = false + } + }, }, } </script> <template> <view class="order-detail-page"> - <view class="top-tip flex "> + <view class="top-tip flex " v-if="!showSales"> <image src="/static/common/icon-order-status-SEND.png" class="icon-car m-r-6 img100"></image> <view> <view>{{ @@ -189,10 +298,10 @@ <view class="desc-gray">支付时间:{{dto.paymentTime}}</view> </view> </view> - <view class="address-container bg-white br-4 m-t-12"> + <view class="address-container bg-white br-4 m-t-12" v-if="!showSales"> <view class="flex"> <image src="/static/common/icon-loc.png" class="image m-r-10"></image> - + <view class="info"> <view class="title"> {{ dto.customer }} @@ -208,6 +317,8 @@ {{ item.supplierName }} </view> <view class="flex m-t-12"> + <radio :checked="submitForm.orderItems.indexOf(item.id)>=0" @click="changeSalesOrderItem(item)"></radio> + <image class="flower-img img100 m-r-6" :src="item.flowerCover" @click="previewImg(item.flowerCover)"> </image> <view class="flex1"> @@ -215,9 +326,6 @@ <view class="title"><span class="level">{{ item.flowerCategory }}</span><span class="level">{{ item.flowerLevelStr }}</span>{{ item.flowerName }} </view> - <!-- <view class="m-l-a m-r-0">--> - <!-- {{item.flowerCategory || '-'}}--> - <!-- </view>--> </view> <view class="each-list"> <view class="each-item"> @@ -248,7 +356,7 @@ </view> </view> - <view class="info-container bg-white br-4"> + <view class="info-container bg-white br-4" v-if="!showSales"> <view class="form-item"> <view class="label">订单编号:</view> <view class="value">{{ dto.orderNo || '-' }}</view> @@ -302,7 +410,7 @@ <view class="value">{{ dto.remarks || '-' }}</view> </view> </view> - <view class="info-container bg-white br-4 m-t-12"> + <view class="info-container bg-white br-4 m-t-12" v-if="!showSales"> <view class="form-item"> <view class="label">订单金额:</view> <view class="value">{{ dto.totalAmount || '-' }}</view> @@ -322,7 +430,7 @@ </view> - <view class="info-container bg-white br-4 m-t-12"> + <view class="info-container bg-white br-4 m-t-12" v-if="!showSales"> <view class="icon-view"> <image src="/static/common/icon-kf.png" class="icon-kf m-r-10 img100 icon"></image> 我的客服 @@ -339,11 +447,54 @@ </view> </view> + + <view class="info-container form bg-white br-4 m-t-12" v-if="showSales"> + <!-- 表单更新 --> + <view class="form-item"> + <view class="form-item-label"> + 理由 + </view> + <view class="form-item-value"> + <input v-model="submitForm.reason" clearable placeholder="请输入理由" class="form-input"></input> + </view> + </view> + <view class="form-item"> + <view class="form-item-label"> + 图片 + </view> + <view class="form-item-value m-l-a m-r-0"> + <view class="t-red" @click="uploadIcon('image')">上传</view> + </view> + </view> + <view class="flex p20" v-if="submitForm.imageList&&submitForm.imageList.length>0"> + <view class="m-t-12 m-r-10 " v-for="(timg,index) of submitForm.imageList" :key="index"> + <image class="check-img" :src="timg" @click.stop="previewImg(timg)"> + </image> + <view class="t-red text-center" @click.stop="deleteCheckImage('imageList',index)">删除</view> + </view> + </view> + <view class="form-item"> + <view class="form-item-label"> + 视频 + </view> + <view class="form-item-value m-l-a m-r-0"> + <view class="t-red" @click="uploadIcon('video')">上传</view> + </view> + </view> + <view class="flex p20" v-if="submitForm.videoList&&submitForm.videoList.length>0"> + <view class="m-t-12 m-r-10 " v-for="(timg,index) of submitForm.videoList" :key="index"> + <video :src="timg" style="display: block;margin: 0 auto;"></video> + + <view class="t-red text-center" @click.stop="deleteCheckImage('videoList',index)">删除</view> + </view> + </view> + </view> + <!-- #ifdef PUB_CUSTOMER --> <view class="button-space"></view> - <view class="buttons-bottom flex"> + <view class="buttons-bottom flex" v-if="!showSales"> <view class="button button-1" @click="buttonClick('refund')" v-if="dto.couldRefund">申请退款 </view> <view class="button button-1" @click="buttonClick('confirm')" v-if="dto.status ==='RECEIVE'"> 确认收货 @@ -352,10 +503,18 @@ </view> <view class="button button-1" @click="buttonClick('evaluate')" v-if=" dto.status === 'EVALUATE'"> 评价 </view> - <!-- <view class="button button-1" @click="buttonClick('couldRefund')" - v-if="dto.couldRefund"> 退款 - </view> --> - + <view class="button button-1" @click="buttonClick('sales')" + v-if=" dto.status === 'EVALUATE'||dto.status=='COMPLETED'"> 申请售后 + </view> + </view> + <view v-if="showSales"> + <view style="min-height:200rpx"> + </view> + <view class="bottom-price flex"> + <view class="button-green-1 m-l-a m-r-0" style="min-width: 240rpx" @click="submitSales"> + 提交售后申请({{submitForm.orderItems&&submitForm.orderItems.length||0}}) + </view> + </view> </view> <!-- #endif --> <!-- @@ -369,6 +528,29 @@ background: #F7F7F7; padding: 30rpx; + .check-img { + width: 96rpx; + height: 96rpx; + border-radius: 4rpx; + border: 2rpx dashed #CECECE; + } + + .bottom-price { + position: fixed; + background-color: #ffffff; + left: 0rpx; + padding: 20rpx; + padding-bottom: 40rpx; + right: 0rpx; + bottom: 0rpx; + + .button-green-1 { + min-width: 400rpx; + padding-left: 20rpx; + padding-right: 20rpx; + } + } + .button-space { min-height: 140rpx; } diff --git a/sub_pages/supplier/order-sale/order-sale-detail.vue b/pages/order/order-sale/order-sale-detail.vue similarity index 95% rename from sub_pages/supplier/order-sale/order-sale-detail.vue rename to pages/order/order-sale/order-sale-detail.vue index bbb1b4f..4923387 100644 --- a/sub_pages/supplier/order-sale/order-sale-detail.vue +++ b/pages/order/order-sale/order-sale-detail.vue @@ -11,6 +11,9 @@ // #ifdef PUB_PARTNER type: 'partner', // #endif + // #ifdef PUB_CUSTOMER + type: 'customer', + // #endif }; }, async onLoad(options) { @@ -18,7 +21,6 @@ this.id = options.id || '' if (this.id) { await this.getDetail() - this.getItemList() } }, methods: { @@ -54,16 +56,15 @@ <view class="address-container bg-white br-4 m-t-12"> <view class="flex"> <image src="/static/common/icon-loc.png" class="image m-r-10"></image> - - <!-- <view class="icon-loc m-r-10"> + + <!-- <view class="icon-loc m-r-10"> <image src="/static/common/icon-loc.png" class="image"></image> </view> --> <view class="info"> <view class="title"> {{ dto.customer }} - <view class="tel">{{ dto.customerTel }}</view> </view> - <view class="content">{{ dto.customerAddress }}</view> + <view class="content">{{ dto.customerTel }}</view> </view> </view> </view> @@ -72,7 +73,7 @@ <image class="icon-dp" src="/static/common/icon-dp.png"></image> {{ item.supplierName }} </view> - <view class="flex m-t-12"> + <view class="flex m-t-12 flex-wrap-normal"> <image class="flower-img img100 m-r-6" :src="item.flowerCover" @click="previewImg(item.flowerCover)"> </image> <view class="flex1"> @@ -100,12 +101,12 @@ <view class="each-item"> <view class="label">售价</view> <view class="value">¥{{ item.price || 0 }}</view> - + </view> <view class="each-item"> <view class="label">商品总金额</view> <view class="value">¥{{ item.total || 0 }}</view> - + </view> <view class="each-item"> <view class="label">责任方</view> @@ -154,7 +155,7 @@ </view> </view> - <view class="info-container bg-white br-4"> + <view class="info-container bg-white m-t-12 br-4"> <view class="form-item"> <view class="label">售后单号:</view> @@ -275,7 +276,8 @@ .address-container { padding: 28rpx; -.image { + + .image { // background-color: #20613D; border-radius: 50%; margin-top: 8rpx; @@ -284,6 +286,7 @@ height: 32rpx; // padding: 8rpx; } + // .icon-loc { // width: 48rpx; // height: 48rpx; @@ -371,8 +374,8 @@ margin-top: 6rpx; .each-item { - min-width: 30%; - max-width: 40%; + min-width: 40%; + max-width: 50%; text-align: center; margin-left: 0rpx; margin-right: auto; diff --git a/sub_pages/supplier/order-sale/order-sale.vue b/pages/order/order-sale/order-sale.vue similarity index 88% rename from sub_pages/supplier/order-sale/order-sale.vue rename to pages/order/order-sale/order-sale.vue index 2306b7f..81dc4ff 100644 --- a/sub_pages/supplier/order-sale/order-sale.vue +++ b/pages/order/order-sale/order-sale.vue @@ -11,10 +11,10 @@ <view class="order-sale-item br-4 list-item bg-white"> <view class="title flex"> <view>售后单号:{{item.salesNo}}</view> - <view class="m-l-a m-r-0 status">审核状态:{{item.auditStatusStr}}</view> + <view class="m-l-a m-r-0 status">审核状态:{{item.auditStatusStr||'-'}}</view> </view> <view class="line"></view> - <view class="form"> + <view class="sale-form"> <view class="form-item"> <view class="label" @click="copyTxt(item.orderNo)">订单单号</view> <view class="value">{{item.orderNo}}</view> @@ -70,7 +70,15 @@ } }, onLoad() { + // #ifdef PUB_SUPPLIER + this.listApi = '/api/supplier/sales/list' + // #endif + // #ifdef PUB_PARTNER this.listApi = '/api/partner/sales/list' + // #endif + // #ifdef PUB_CUSTOMER + this.listApi = '/api/customer/sales/list' + // #endif this.getList() }, @@ -93,7 +101,7 @@ }, toDetail(item) { uni.navigateTo({ - url: `/sub_pages/supplier/order-sale/order-sale-detail?id=${item.id}` + url: `/pages/order/order-sale/order-sale-detail?id=${item.id}` }) } } @@ -120,35 +128,32 @@ margin-bottom: 16rpx; } - .form { - display: flex; - flex-wrap: wrap; + .sale-form { + // display: flex; + // flex-wrap: wrap; .form-item { + display: flex; flex: 1; // min-width: 40%; // max-width: 50%; + line-height: 40rpx; + font-size: 28rpx; .label { font-weight: 400; - font-size: 24rpx; color: #666666; - line-height: 34rpx; } .label::after { content: ":"; font-weight: 400; - font-size: 24rpx; color: #666666; - line-height: 34rpx; } .value { font-weight: 400; - font-size: 24rpx; color: #000000; - line-height: 34rpx; } .value.red { diff --git a/pages/order/order.vue b/pages/order/order.vue index 7a3e36d..cc58a38 100644 --- a/pages/order/order.vue +++ b/pages/order/order.vue @@ -12,7 +12,7 @@ {name: '待发货', value: 'SEND'}, {name: '待收货', value: 'RECEIVE'}, {name: '待评价', value: 'EVALUATE'}, - {name: '售后', value: 'COMPLETED'}, + {name: '已完成', value: 'COMPLETED'}, {name: '已退款', value: 'REFUND'}, ] }; diff --git a/pages/user/supplier-user.vue b/pages/user/supplier-user.vue index f593ec7..ed93c6b 100644 --- a/pages/user/supplier-user.vue +++ b/pages/user/supplier-user.vue @@ -30,7 +30,7 @@ <view class="name" v-if="currentInfo.id"> <view class="t1"> {{ - (!!currentInfo.supplierDTO ? (currentInfo.supplierDTO.name) : "") || (!!currentInfo.customerDTO ? (currentInfo.customerDTO.name) : "") || currentInfo.nickName || currentInfo.loginName || '-' + (!!currentInfo.partnerDTO ? (currentInfo.partnerDTO.name) : "") || (!!currentInfo.supplierDTO ? (currentInfo.supplierDTO.name) : "") || (!!currentInfo.customerDTO ? (currentInfo.customerDTO.name) : "") || currentInfo.nickName || currentInfo.loginName || '-' }} <span v-if="currentInfo.supplierDTO&¤tInfo.supplierDTO.status!=='P'"> ({{ currentInfo.supplierDTO ? currentInfo.supplierDTO.statusStr : '' }})</span> @@ -93,7 +93,7 @@ <image src="../../static/images/customer/order/order-type-4.png" class="order-icon dpj"></image> <view>待评价</view> </view> - <view class="order-icons" @click="goto('/pages/order/order?status=COMPLETED',true)"> + <view class="order-icons" @click="goto('/pages/order/order-sale/order-sale',true)"> <image src="../../static/images/customer/order/order-type-5.png" class="order-icon sh"></image> <view>售后</view> </view> @@ -162,6 +162,15 @@ <uni-icons type="right"></uni-icons> </view> </view> + <!-- #ifdef PUB_PARTNER --> + <view class="user-util m-t-12 flex" v-if="selftype==='partner'" + @click="goto('/sub_pages/partner/partner-info/partner-code',true)"> + <view class="title">推广的注册二维码</view> + <view class="right-icon"> + <uni-icons type="right"></uni-icons> + </view> + </view> + <!-- #endif --> <view class="user-util m-t-12 flex" v-if="selftype==='supplier'" @click="goto('/sub_pages/supplier/supplier-info/supplier-info',true)"> <view class="title">店铺信息</view> diff --git a/sub_pages/customer/customer-info/customer-info.vue b/sub_pages/customer/customer-info/customer-info.vue index eb9fbee..527fb66 100644 --- a/sub_pages/customer/customer-info/customer-info.vue +++ b/sub_pages/customer/customer-info/customer-info.vue @@ -144,7 +144,7 @@ } this.init_area() - +// www.hmyxianhua.com/wx-jump }, diff --git a/sub_pages/partner/partner-info/partner-code.vue b/sub_pages/partner/partner-info/partner-code.vue new file mode 100644 index 0000000..0d43c5f --- /dev/null +++ b/sub_pages/partner/partner-info/partner-code.vue @@ -0,0 +1,183 @@ +<template> + <!-- 联系我们 --> + <!-- --> + <view class="contact-container"> + <view class="container" @click="saveCode"> + <!-- <image src="../../../static/uni.png" mode="aspectFit" class="code"></image> --> + <canvas type="2d" id="myQrcode" class="code"></canvas> + <view class="info"> + <view class="desc"> + <p>{{name||'-'}}的推广二维码</p> + <p style="font-size: 600;color: #000;">点击保存二维码</p> + </view> + </view> + </view> + </view> +</template> + +<script> + import drawQrcode from '@/plugins/weapp.qrcode.esm.js' + + export default { + data() { + return { + name: '', + userId: '', + canvas: undefined, + } + }, + onLoad(options) { + if (!this.currentInfo.partnerDTO) { + this.$message.showToast('请先完善合伙人信息') + return + } + this.name = this.currentInfo.partnerDTO.name || '佚名' + // this.userId = this.currentInfo.userId + this.initcode() + }, + methods: { + initcode() { + let that = this + const query = uni.createSelectorQuery() + + query.select('#myQrcode') + .fields({ + node: true, + size: true + }) + .exec((res) => { + var canvas = res[0].node + that.canvas = canvas + // 调用方法drawQrcode生成二维码 + drawQrcode({ + callback:function(e){ + console.log('drawQrcode callback',e) + }, + canvas: canvas, + canvasId: 'myQrcode', + width: 480, + height: 480, + padding: 30, + background: '#ffffff', + foreground: '#000000', + text: JSON.stringify({ + 'name': that.name, + 'userId': that.currentInfo.id, + 'version': '1.0.0' + }), + // text: `https://www.hmyxianhua.com/wx-c-jump/sub_pages/customer/customer-info/customer-info?name=${that.name}&userId=${that.currentInfo.id}` + // JSON.stringify({ + // 'name': that.name, + // 'userId': this.currentIn fo.id + // }), + }) + // .catch(e) { + // console.log('drawQrcode', e) + // } + }) + }, + saveCode() { + + // 获取临时路径(得到之后,想干嘛就干嘛了) + uni.canvasToTempFilePath({ + canvasId: 'myQrcode', + canvas: this.canvas, + x: 0, + y: 0, + width: 480, + height: 480, + destWidth: 260, + destHeight: 260, + success(res) { + console.log('二维码临时路径:', res.tempFilePath) + uni.saveImageToPhotosAlbum({ + filePath: res.tempFilePath, + success: function() { + console.log('save success'); + uni.showToast({ + title: '保存成功' + }) + }, + fail(res) { + // console.error(res) + uni.showToast({ + title: '保存失败。', + icon: 'error' + }) + } + }) + }, + fail(res) { + uni.showToast({ + title: '保存失败', + icon: 'error' + }) + } + }) + } + } + } +</script> + +<style lang="scss" scoped> + .contact-container { + position: relative; + + .container { + position: absolute; + top: 148rpx; + // width: 694rpx; + left: 30rpx; + right: 30rpx; + min-height: 712rpx; + // background: #FFFFFF; + border-radius: 20rpx; + + .code { + margin-left: auto; + margin-right: auto; + margin-top: 24rpx; + width: 482rpx; + height: 482rpx; + margin-bottom: 32rpx; + display: block; + } + + .info { + text-align: center; + + .desc { + font-weight: 400; + font-size: 28rpx; + color: #666666; + line-height: 40rpx; + font-style: normal; + margin-bottom: 126rpx; + + p { + line-height: 48rpx; + } + } + + .main { + font-weight: 600; + font-size: 48rpx; + color: #000000; + margin-top: 48rpx; + margin-bottom: 32rpx; + + } + } + } + + .top-image { + width: 418rpx; + height: 228rpx; + position: absolute; + top: 16rpx; + left: 50%; + transform: translateX(-50%); + + } + } +</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 2e3e7aa..b234d61 100644 --- a/sub_pages/supplier/flower-manage/flower-add.vue +++ b/sub_pages/supplier/flower-manage/flower-add.vue @@ -163,11 +163,6 @@ <view class="form-item bottom-border-no"> <view class="label">商品描述</view> <view class="m-l-a m-r-0 flex"> - <!-- <u-input type="textarea" v-model="dto.description" placeholder="请输入商品描述" type="number" - ></u-input> --> - <!-- <u--textarea v-model="dto.description" style="margin-top: 16px;" - placeholder="请输入商品描述" count></u--textarea> --> - <!-- <uni-easyinput v-model="dto.description" placeholder="请输入商品描述" ></uni-easyinput> --> </view> </view> -- Gitblit v1.9.3