common/self.scss | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
pages.json | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
pages/home/components/home-category.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
pages/home/components/home-price.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
pages/login/supplier-login.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
pages/login/supplier-reg.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
pages/user/supplier-user.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
pages/user/user-info/user-info.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
store/index.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
sub_pages/customer/customer-info/customer-info.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
sub_pages/customer/shopping/confirm.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
sub_pages/customer/shopping/shopping.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
sub_pages/customer/trade/list.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
sub_pages/partner/partner-info/partner-info.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
common/self.scss
@@ -237,7 +237,9 @@ .m-r-80 { margin-right: 160rpx; } .m-b-12{ margin-bottom: 24rpx; } .m-b-20 { margin-bottom: 40rpx; } pages.json
@@ -36,8 +36,6 @@ } }, // #endif // #ifdef PUB_SUPPLIER { "path": "pages/login/supplier-reg", "style": { @@ -45,16 +43,6 @@ "navigationStyle": "custom" } }, // #endif // #ifdef PUB_PARTNER { "path": "pages/login/supplier-reg", "style": { "navigationBarTitleText": "申请入驻" } }, // #endif { "path": "pages/user/supplier-user", "style": { @@ -217,8 +205,13 @@ "root": "sub_pages/customer", "pages": [ // #ifdef PUB_CUSTOMER { "path": "customer-info/customer-info", "style": { "navigationBarTitleText": "信息维护", "enablePullDownRefresh": false } }, { "path": "trade/trade", "style": { pages/home/components/home-category.vue
@@ -38,7 +38,7 @@ methods: { toList(item){ uni.navigateTo({ url:'//sub_pages/customer/trade/list?categoryId='+item.id url:'/sub_pages/customer/trade/list?categoryId='+item.id }) } }, pages/home/components/home-price.vue
@@ -9,7 +9,7 @@ <view class="item flex1"> <view class="title">{{list1[0]&&list1[0].name||''}}</view> <view class="price"> {{list1[0]&&list1[0].avePrice||''}} {{list1[0]&&list1[0].avePrice||'-'}} </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> @@ -20,7 +20,7 @@ <view class="item flex1"> <view class="title">{{list1[1]&&list1[1].name||''}}</view> <view class="price"> {{list1[1]&&list1[1].avePrice||''}} {{list1[1]&&list1[1].avePrice||'-'}} </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> @@ -31,7 +31,7 @@ <view class="item flex1"> <view class="title">{{list1[2]&&list1[2].name||''}}</view> <view class="price"> {{list1[2]&&list1[2].avePrice||''}} {{list1[2]&&list1[2].avePrice||'-'}} </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> @@ -44,7 +44,7 @@ <view class="item flex1"> <view class="title">{{list2[0]&&list2[0].name||''}}</view> <view class="price"> {{list2[0]&&list2[0].avePrice||''}} {{list2[0]&&list2[0].avePrice||'-'}} </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> @@ -55,7 +55,7 @@ <view class="item flex1"> <view class="title">{{list2[1]&&list2[1].name||''}}</view> <view class="price"> {{list2[1]&&list2[1].avePrice||''}} {{list2[1]&&list2[1].avePrice||'-'}} </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> @@ -66,7 +66,7 @@ <view class="item flex1"> <view class="title">{{list2[2]&&list2[2].name||''}}</view> <view class="price"> {{list2[2]&&list2[2].avePrice||''}} {{list2[2]&&list2[2].avePrice||'-'}} </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> pages/login/supplier-login.vue
@@ -58,11 +58,13 @@ <view class="topic-font" v-if="loginType=='pwd'" @click="loginType='code'">手机验证码登录</view> <view class="topic-font" v-if="loginType=='code'" @click="loginType='pwd'">账号密码登录</view> <!-- #ifndef PUB_CUSTOMER --> <view class="topic-font m-l-a m-r-0" @click="toReg">前往注册</view> <!-- #ifdef PUB_CUSTOMER --> <view class="topic-font m-l-a m-r-0" @click="toHome">返回首页</view> <!-- #endif --> </view> </form> </view> </view> @@ -184,6 +186,11 @@ holdTime--; }, 1000) }, toHome(){ uni.redirectTo({ url: '/pages//pages/home/home' }) }, toReg() { // uni.switchTab({ // url: '/pages/index/index' @@ -200,8 +207,12 @@ url: '/pages/login/supplier-reg' }) // #endif // #ifdef PUB_CUSTOMER addstr = '?source=step' uni.navigateTo({ url: '/sub_pages/customer/customer-info/customer-info' + addstr }) // #endif }, changeAll(e) { this.pcfvalue = e.detail.value[0] @@ -260,7 +271,7 @@ const resp = await this.$store.dispatch(this.apitype, post); // uni.hideLoading() if (resp.code == 0) { if (resp.code === 0) { // myCache.cache("userToken", res.data.accessToken) // let userRes = await gzmzApi.getMemberInfo(); pages/login/supplier-reg.vue
@@ -1,7 +1,10 @@ <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 v-if="source==='step'" class="" style="background-color: #fff;margin-top: 20rpx;padding: 20rpx;"> <u-steps current="1"> <u-steps-item title="信息填写" class="u-steps-item"> @@ -66,8 +69,9 @@ <button @tap="login()" class="bottom-button">注 册</button> <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-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> <view class="flex flex-wrap-normal" style="position: fixed;bottom: 40rpx;left: 40rpx;right: 40rpx;" v-if="false"> @@ -113,6 +117,9 @@ // #endif // #ifdef PUB_PARTNER apitype: 'partner', // #endif // #ifdef PUB_CUSTOMER apitype: 'customer', // #endif }; @@ -161,7 +168,7 @@ userType: this.apitype } }) if (code == 0) { if (code === 0) { uni.showToast({ title: '验证码已发送', icon: "none" @@ -243,11 +250,17 @@ type: this.apitype // openId: '123456789' } if (this.source == 'step') { var tjson = this.$storage.getItem('cache_partner_info') if (this.source === 'step') { var tjson = '' // #ifdef PUB_PARTNER tjson = this.$storage.getItem('cache_partner_info') // #endif // #ifdef PUB_CUSTOMER this.$storage.getItem('cache_customer_info') // #endif if (!tjson) { this.$message.showToast('没有合伙人信息请返回重新填写') this.$message.showToast('没有填写用户信息请返回重新填写') return } var dto = JSON.parse(tjson) @@ -260,7 +273,7 @@ const resp = await this.$store.dispatch('regUser', post); // uni.hideLoading() if (resp.code == 0) { if (resp.code === 0) { // myCache.cache("userToken", res.data.accessToken) // let userRes = await gzmzApi.getMemberInfo(); @@ -296,7 +309,6 @@ // this.toLogin() // }, 1000); // } // } else { pages/user/supplier-user.vue
@@ -32,8 +32,9 @@ </view> <view class="t2">{{ currentInfo.tel || '暂无电话' }}</view> </view> <view class="name" v-if="!currentInfo.id" open-type="getUserInfo" @click.stop="getUserProfile" <view class="name" v-if="!currentInfo.id" open-type="getUserInfo" @click.stop="toCustomerLogin" style="font-size: 48rpx;margin-top: 16rpx;"> <!-- getUserProfile --> {{ '点击登陆' }} </view> <image class="icon-setting" src="../../static/common/icon-setting.png" mode="aspectFit"></image> @@ -138,7 +139,7 @@ </view> <!-- #endif --> <view class="user-utils m-20"> <view class="user-util m-t-12 flex" @click="goto('/pages/user/user-info/user-info',true)"> <view class="user-util m-t-12 flex" @click="goto('/sub_pages/customer/customer-info/customer-info',true)"> <view class="title">个人信息</view> <view class="right-icon"> <uni-icons type="right"></uni-icons> @@ -302,9 +303,12 @@ uni.makePhoneCall({ phoneNumber: this.tel //仅为示例 }); } }, toCustomerLogin() { uni.navigateTo({ url: '/pages/login/supplier-login' }) }, } } </script> pages/user/user-info/user-info.vue
@@ -60,7 +60,7 @@ </template> <script> const appId = 'wxafc5aaa0fc79532b'; //需要替换成实际的 const appId = 'wx1441324401626290'; //需要替换成实际的 import WXBizDataCrypt from '@/plugins/WXBizDataCrypt.js'; import { mapState store/index.js
@@ -380,7 +380,7 @@ } }) console.log('resp', resp) if (resp && resp.code == 0) { if (resp && resp.code === 0) { storage.setItem('token', resp.data.access_token) commit("updateLogin", true) await dispatch('getCurrentInfo') @@ -396,7 +396,7 @@ }, submitShopping: async function ({commit, dispatch}, data) { const resp = await http.request('post', '/api/api/customer/flower/cart/change-num', { const resp = await http.request('post', '/api/customer/flower/cart/change-num', { data: { id: data.id, num: 1 sub_pages/customer/customer-info/customer-info.vue
对比新文件 @@ -0,0 +1,373 @@ <template> <view class="container-page" style="padding: 0rpx;"> <view v-if="source==='step'" class="m-t-20"> <u-steps current="0"> <u-steps-item title="信息填写" class="u-steps-item" style="font-size: 28rpx;"> </u-steps-item> <u-steps-item title="提交申请" class="u-steps-item"></u-steps-item> </u-steps> </view> <view class="p20"> <view class="form-item before-line"> <view class="label required">店铺名称</view> <view class="m-l-a m-r-0 flex"> <input v-model="dto.name" placeholder="请输入联系人姓名" style="margin-top: 16px;text-align: right;"></input> </view> </view> <view class="form-item before-line"> <view class="label ">地区</view> <view class="m-l-a m-r-0 flex " :class="[!dto['province']?'desc-gray':'']"> <uni-data-picker :area="true" @change="(e)=>{PickArea(dto,e)}" placeholder="" :localdata="regionDataPlus"> {{ dto['province'] || '请选择' }}{{ dto['city'] && ('/' + dto['city']) || '' }}{{ dto['region'] && ('/' + dto['region']) || '' }} </uni-data-picker> <u-icon class="m-l-a" name="arrow-right"></u-icon> </view> </view> <view class="form-item before-line"> <view class="label ">地址</view> <view class="m-l-a m-r-0 flex"> <input v-model="dto.address" placeholder="请输入地址" style="margin-top: 16px;text-align: right;"></input> </view> </view> <view class="form-item before-line"> <view class="label ">店铺简介</view> <view class="m-l-a m-r-0 flex1"> <view class="m-t-12 m-b-12"> <u-textarea v-model="dto.description" placeholder="请输入店铺简介"> </u-textarea> </view> <!-- <input v-model="dto.description" placeholder="请输入地址"--> <!-- style="margin-top: 16px;text-align: right;"></input>--> </view> </view> <view class="form-item before-line m-t-20" @click="uploadIcon"> <view class="label ">上传店铺封面</view> <view class="m-l-a m-r-0 flex m-b-12"> <view class="component-button-upload"> </view> </view> </view> <view class="flex p20" style="padding-top: 0rpx;padding-bottom: 10rpx" v-if="dto.cover"> <view class="m-t-12 m-r-10"> <image class="banner-img" :src="dto.cover" @click.stop="previewImg(dto.cover)"> </image> <view class="t-red text-center" @click.stop="dto.cover=''">删除</view> </view> </view> <view class="button-green-1 m-t-20 button-fixed-bottom before-line " @click="submit"> {{source==='step'?'下一步':'更新'}} </view> </view> <view style="min-height: 200rpx;"> </view> </view> </template> <script> import environments from '@/environments' import { mapState } from 'vuex' export default { data() { return { id: '', source: '', refresh: false, api: '', dto: { cover: '', address: '', id: '', userId: '', name: '', description: '', province: '', city: '', region: '', }, requireFields: [ { name: '店铺名称', key: 'name' } ], regionDataPlus: [], } }, onLoad(options) { //判断是不是来自登录步骤,是等话需要从缓存里面拿信息 this.source = options.source || '' if (this.source === 'step') { var tjson = this.$storage.getItem('cache_customer_info') if (tjson) { this.dto = { ...this.dto, ...JSON.parse(tjson) } } } else { this.getCurrentInfo() } this.init_area() }, methods: { PickArea(item, e) { console.log('PickArea', item, e) if (e.detail.value) { this.dto.province = '' this.dto.city = '' this.dto.region = '' if (e.detail.value.length <= 3) { if (!!e.detail.value[0]) this.dto.province = e.detail.value[0].value if (!!e.detail.value[1]) this.dto.city = e.detail.value[1].value if (!!e.detail.value[2]) this.dto.region = e.detail.value[2].value } else { //说明有重复的 var plusnum = e.detail.value.length - 3 if (!!e.detail.value[plusnum + 0]) this.dto.province = e.detail.value[plusnum + 0].value if (!!e.detail.value[plusnum + 1]) this.dto.city = e.detail.value[plusnum + 1].value if (!!e.detail.value[plusnum + 2]) this.dto.region = e.detail.value[plusnum + 2].value } this.$forceUpdate() } }, async init_area() { const res = await this.$http.request('get', '/api/pub/china/area/json') // console.log('area', JSON.parse(res.data)) this.regionDataPlus = res.data && JSON.parse(res.data.replaceAll('code', 'value').replaceAll('name', 'text')) || [] }, async getCurrentInfo() { this.$message.showLoading() const { code, data } = await this.$http.request('get', "/api/current/customer", {}) if (code === 0) { this.dto = { ...data, } this.dto.userId = this.currentInfo.id } this.$message.hideLoading() }, async submit() { for (var field of this.requireFields) { if (!this.dto[field.key]) { this.$message.showToast(`${field.name}信息未填写`) return } } await this.$message.confirm(`是否确定提交更新信息`) if (this.source === 'step') { //先保存下来,进入下一步,然后注册成功后再保存 this.$storage.setItem("cache_customer_info", JSON.stringify({ ...this.dto })) uni.navigateTo({ url: '/pages/login/supplier-reg?source=step' }) } else { var dto = { ...this.dto, } this.$message.showLoading() const re = await this.$http.request('post', '/api/customer/addOrUpdate', { data: dto }) this.$message.hideLoading() if (re.code == 2000 || re.code == 0) { this.$message.showToast('操作成功') this.$store.dispatch('getCurrentInfo') this.backpage() } else { console.log('error re', re) if (re.code === 30000 && Array.isArray(re.msg)) { this.$message.showToast('字段未填写完整') } } } }, uploadIcon() { const that = this uni.chooseImage({ count: 1, // 最多可以选择的图片张数,默认9 sizeType: ['original', 'compressed'], //original 原图,compressed 压缩图,默认二者都有 sourceType: ['camera', 'album'], //album 从相册选图,camera 使用相机,默认二者都有。如需直接开相机或直接选相册,请只使用一个选项 success: function ({ errMsg, tempFiles }) { if (errMsg === 'chooseImage:ok') { if (tempFiles[0].size > 1024 * 1024 * 5) { that.$message.confirm('图片最多支持5M大小,超出大小限制') return } that.$message.showLoading() that.$http.upload(tempFiles[0].path).then(async res => { var pic = res.data && res.data.length > 0 && res.data[ 0] || {} that.$message.hideLoading() that.dto.cover = (pic || {}).url || '' console.log('pic',that.dto) that.$forceUpdate() }).catch(res => { that.$message.hideLoading() }) } } }) }, }, computed: { ...mapState(['currentInfo']) }, components: {} } </script> <style lang="scss" scoped> .banner-img { width: 96rpx; height: 96rpx; border-radius: 4rpx; border: 2rpx dashed #CECECE; } .form-item { // padding: 40rpx; border-bottom: 2rpx solid #F3F3F3; display: flex; // height: 100px; .label { width: 300rpx; line-height: 60px; } .flex { line-height: 60px; .flex1 { flex: 1; text-align: center; color: var(--selfblue) } } } .form-item.bottom-border-no { border-bottom: none; } .container-page { padding: 40rpx; background-color: #FFFFFF; // min-height: calc(100vh - 80rpx); min-height: 100vh; } .style { width: fit-content; margin: 0 auto; line-height: 64rpx; border-radius: 8rpx; padding-left: 20rpx; padding-right: 20rpx; // padding-top: 5rpx; // padding-bottom: 5rpx; border: 2rpx solid var(--selfblue); background-color: var(--selfbluebg); min-width: 100rpx; } .style-1 { border: 1px solid rgb(122, 187, 255); border: 1px solid #409EFF; color: #409EFF; background-color: rgb(240, 247, 255); } .style-2 { border: 1px solid rgb(255, 184, 78); border: 1px solid #FE9044; color: #FE9044; background-color: rgb(255, 247, 235); } .style-3 { border: 1px solid #19be6b; color: #19be6b; background-color: rgb(231, 244, 238); } .style-4 { border: 1px solid #F56c6c; color: #F56c6c; background-color: rgb(254, 243, 243); } </style> sub_pages/customer/shopping/confirm.vue
@@ -186,20 +186,24 @@ <view class="form-item p10"> <view class="label">特殊需求</view> <view class="m-l-a m-r-0 flex text-right"> <view class="m-l-a m-r-0 flex1 text-right"> <view class="m-t-12 m-b-12"> <u-textarea v-model="dto.remarks" placeholder="请输入特殊需求"> </u-textarea> </view> </view> </view> <view class="form-item p10"> <view class="label">留言</view> <view class="m-l-a m-r-0 flex text-right"> <view class="m-l-a m-r-0 flex1 text-right"> <view class="m-t-12 m-b-12"> <u-textarea v-model="dto.remarks" placeholder="填写内容需与卖家协商并确认"> </u-textarea> </view> </view> </view> </view> <view class="bottom-price flex"> sub_pages/customer/shopping/shopping.vue
@@ -106,6 +106,7 @@ }) return totalprice.toFixed(2) }, }, methods: { async submitPay() { // order/confirm/info @@ -140,7 +141,7 @@ //删除商品,重新加载数据? this.$message.showLoading() const {code} = await http.request('post', '/api/api/customer/flower/cart/change-num', { const {code} = await http.request('post', '/api/customer/flower/cart/change-num', { data: { id: dto.id, num: addnum @@ -237,7 +238,7 @@ return } this.$message.showLoading() const {code} = await http.request('post', '/api/api/customer/flower/cart/change-num', { const {code} = await http.request('post', '/api/customer/flower/cart/change-num', { data: { id: dto.id, num: addnum @@ -260,7 +261,6 @@ } } }, } } </script> sub_pages/customer/trade/list.vue
@@ -303,7 +303,7 @@ return } this.$message.showLoading() const {code} = await http.request('post', '/api/api/customer/flower/cart/change-num', { const {code} = await http.request('post', '/api/customer/flower/cart/change-num', { data: { id: item.id, num: addnum sub_pages/partner/partner-info/partner-info.vue
@@ -65,7 +65,7 @@ <view class="form-item before-line m-t-20" @click="uploadIcon('idCards')"> <view class="label required">上传身份证正反面</view> <view class="m-l-a m-r-0 flex"> <view class="component-button-upload" @click="uploadIcon('idCards')"> <view class="component-button-upload"> </view>