xiebaomin 1 yıl önce
ebeveyn
işleme
360c9c9b20

+ 68 - 29
components/cm-share-popup/cm-seller-modal.vue

@@ -1,42 +1,58 @@
 <template>
     <view class="seller-card" v-if="sellerUserId !== 0">
-        <view class="seller-card-mine" v-if="!modal" @click="modal=true"></view>
-        <tui-modal class="sellerMode" @click="handleClick" @cancel="hideModal" :show="modal" custom>
+        <view class="seller-card-mine" v-if="!modal" @click="modal = true">
+            <image
+                :src="userInfo.image || 'https://static.caimei365.com/app/img/icon/default-head.png'"
+                style="width: 100%;height: 100%;object-fit: contain;"
+                mode=""
+            ></image>
+        </view>
+        <tui-modal class="sellerMode" @cancel="hideModal" :show="modal" custom>
             <view class="tui-modal-custom">
-                <view class="close" @click="modal=false">
-                    <image src="https://static.caimei365.com/app/img/supplier-login/close.png" style="width: 100%;height: 100%;" mode=""></image>
+                <view class="close" @click="modal = false">
+                    <image
+                        src="https://static.caimei365.com/app/img/supplier-login/close.png"
+                        style="width: 100%;height: 100%;"
+                        mode=""
+                    ></image>
                 </view>
-                <view class="card" :style="{backgroundImage: `url(${imgUrl})`, backgroundSize: '100% 100%'}">
+                <view class="card" :style="{ backgroundImage: `url(${imgUrl})`, backgroundSize: '100% 100%' }">
                     <view class="logo">
-                        <image src="https://static.caimei365.com/app/img/icon/logo-fanbai.png" mode="" class="titleImgUrl"></image>
+                        <image
+                            src="https://static.caimei365.com/app/img/icon/logo-fanbai.png"
+                            mode=""
+                            class="titleImgUrl"
+                        ></image>
                     </view>
                     <view class="card-contain">
                         <view style="display: flex;">
                             <view class="card-head">
-                                <image src="https://static.caimei365.com/app/img/icon/default-head.png" mode="" class="head"></image>
+                                <image
+                                    :src="
+                                        userInfo.image || 'https://static.caimei365.com/app/img/icon/default-head.png'
+                                    "
+                                    mode=""
+                                    class="head"
+                                ></image>
                             </view>
                             <view class="card-info">
                                 <view class="card-info-head">
-                                    <view class="card-name">
-                                        未知
-                                    </view>
-                                    <view class="card-info-tab">
-                                        客户经理
-                                    </view>
-                                </view>
-                                <view class="card-info-iphone">
-                                    158-8958-6633
+                                    <view class="card-name">{{ userInfo.linkMan }}</view>
+                                    <view class="card-info-tab">客户经理</view>
                                 </view>
+                                <view class="card-info-iphone">{{ userInfo.contractMobile }}</view>
                             </view>
                         </view>
                         <view class="card-qrcode">
                             <view class="qrcode-message">
-                                <image :show-menu-by-longpress="true" src="" class="qrcode" mode=""></image>
-                            </view>
-                            <view class="tips">
-                                长按或扫二维码
-                                联系我
+                                <image
+                                    :show-menu-by-longpress="true"
+                                    :src="userInfo.qrCode || ''"
+                                    class="qrcode"
+                                    mode=""
+                                ></image>
                             </view>
+                            <view class="tips">长按或扫二维码 联系我</view>
                         </view>
                     </view>
                 </view>
@@ -57,21 +73,28 @@ export default {
         return {
             modal: false,
             imgUrl: 'https://static.caimei365.com/app/img/icon/bg-card.png',
+            userInfo: {},
+            userId: ''
         }
     },
     mounted() {
         this.initData()
     },
     methods: {
-        handleClick() {},
         hideModal() {
             this.modal = false
         },
         initData() {
+            this.userId = uni.getStorageSync('sellerUserId') || this.sellerUserId
             if(this.sellerUserId > 0) {
+                this.getUserInfo()
                 this.modal = true
             }
         },
+        async getUserInfo() {
+            const { data } = await this.SellerService.GetSellerHome({ userId: this.userId })
+            this.userInfo = data
+        }
     }
 }
 </script>
@@ -82,10 +105,26 @@ export default {
     right: 20rpx;
     width: 80rpx;
     height: 80rpx;
-    border: 1px solid;
     z-index: 99;
-    bottom: 500rpx;
+    bottom: 380rpx;
     border-radius: 50%;
+    &::after {
+        content: '客户经理';
+        width: 100rpx;
+        height: 30rpx;
+        position: absolute;
+        color: #fff;
+        font-size: 18rpx;
+        font-weight: bold;
+        background-color: #FF5B00;
+        bottom: 0;
+        left: 0;
+        border-radius: 20rpx;
+        text-align: center;
+        line-height: 30rpx;
+        box-shadow: 0rpx 3rpx 6rpx 1rpx rgba(255,92,0,0.16);
+        transform: translate(-12%, 70%);
+    }
 }
 .tui-modal-custom {
     .close {
@@ -102,7 +141,7 @@ export default {
     top: -150%;
     width: 702rpx;
     height: 340rpx;
-    background: #FF5B00;
+    background: #ff5b00;
     border-radius: 16rpx;
     opacity: 1;
     margin: 0 auto;
@@ -131,14 +170,14 @@ export default {
             align-items: center;
             margin-bottom: 13rpx;
             .card-name {
-                color: #FFFFFF;
+                color: #ffffff;
                 font-size: 40rpx;
                 font-weight: bold;
             }
             .card-info-tab {
                 width: 88rpx;
                 height: 31rpx;
-                background-color: #FFBB00;
+                background-color: #ffbb00;
                 color: #fff;
                 font-size: 22rpx;
                 padding: 0 8rpx;
@@ -146,7 +185,7 @@ export default {
             }
         }
         .card-info-iphone {
-            color: #FFFFFF;
+            color: #ffffff;
             font-size: 28rpx;
         }
         .card-qrcode {
@@ -166,4 +205,4 @@ export default {
         }
     }
 }
-</style>
+</style>

+ 31 - 34
components/cm-share-popup/cm-share-popup.vue

@@ -12,7 +12,7 @@
 <script>
 import DrawPoster from './draw-poster.js'
 import {mapState} from 'vuex'
-import { codeQueryStr } from '@/pages/goods/mixins/share.helper.js'
+import { generateWxUnlimited, enCodeQueryStr } from '@/pages/goods/mixins/share.helper.js'
 import simpleSharePopup from './simple-share-popup/simple-share-popup.vue'
 export default {
     name: 'cm-share-popup',
@@ -42,7 +42,7 @@ export default {
                 linkMan: '', // 用户名
                 contractMobile: '', // 用户手机号
                 /* 页面参数 */
-                query: '/', // 查询参数字符串
+                query: '', // 查询参数字符串
                 path: '', // 页面路径
                 qrCodeImage: '', //页面二维码,小程序二维码
 
@@ -62,6 +62,13 @@ export default {
         ...mapState(['userInfo'])
     },
     methods: {
+        async getUserInfo() {
+            const { data } = await this.SellerService.GetSellerHome({ userId: this.userInfo.userId })
+            this.posterData.image = data.image // 用户头像
+            this.posterData.qrCode = data.qrCode // 用户二维码
+            this.posterData.linkMan = data.linkMan // 用户名
+            this.posterData.contractMobile = data.contractMobile // 用户手机号
+        },
         // 分享操作
         onPopupClick(e) {
             if (e.type === 'create-poster') {
@@ -94,29 +101,13 @@ export default {
             try {
                 uni.showLoading({ title: '正在生成海报' })
                 if (!this.posterUrl) {
+                    await this.getUserInfo()
                     this.posterData = { ...this.posterData, ...this.data }
-                    const userProfile = await this.SellerService.GetSellerHome({ userId: this.userInfo.userId })
-                    console.log('userProfile', userProfile)
-                    this.posterData.image = '' // 用户头像
-                    this.posterData.qrCode = '' // 用户二维码
-                    this.posterData.linkMan = '' // 用户名
-                    this.posterData.contractMobile = '' // 用户手机号
-                    // const { data: qrCodeImage } = await this.SellerService.wxUnlimited({
-                    //     page: this.posterData.path || 'pages/index/index',
-                    //     scene: codeQueryStr(this.posterData.query),
-                    //     check_path: process.env.NODE_ENV === 'production', // 是否校验页面
-                    //     env_version: process.env.NODE_ENV === 'production' ? 'release' : 'trial', // 正式版 or 开发版
-                    //     width: 200, // 二维码宽度
-                    //     auto_color: false, // 自动颜色
-                    //     line_color: { 'r': 0, 'g': 0, 'b': 0 }, // 线条颜色
-                    //     is_hyaline: true // 透明底
-                    // })
-                    // const { data: qrCodeImage } = await generateWxUnlimited({
+                    // const { data: qrCodeImage } = await generateWxUnlimited(this, {
                     //     pagePath: this.posterData.path,
-                    //     queryStr: this.posterData.query
+                    //     queryStr: `type=1&sellerUserId=${this.userInfo.userId}`
                     // })
                     // this.posterData.qrCodeImage = qrCodeImage
-                    // this.posterData.qrCodeImage = ''
 
                     switch (this.type) {
                         case 'product':
@@ -129,14 +120,13 @@ export default {
                             await this.createNormalPoster()
                     }
 
-                    // const {tempFilePath} = await this.canvasToTempFilePath()
-                    // this.posterUrl = tempFilePath
+                    const {tempFilePath} = await this.canvasToTempFilePath()
+                    this.posterUrl = tempFilePath
                 }
                 uni.hideLoading()
                 // 下载完成后转发
-                // wx.showShareImageMenu({ path: this.posterUrl })
+                wx.showShareImageMenu({ path: this.posterUrl })
                 this.onShare()
-                // console.log(this.posterUrl)
             } catch (e) {
                 console.log(e)
             } finally {
@@ -202,7 +192,11 @@ export default {
                     subTitle: '强烈为你推荐该商品',
                     coverUrl: this.posterData.productImage,
                     // ewmUrl: this.posterData.qrCodeImage,
-                    textArray: this.generateTextArray()
+                    textArray: this.generateTextArray(),
+                    image: this.posterData.image,
+                    qrCode: this.posterData.qrCode, // 用户二维码
+                    linkMan: this.posterData.linkMan, // 用户名
+                    contractMobile: this.posterData.contractMobile, // 用户手机号
                 })
                 return await drawPoster.draw()
             } catch (e) {
@@ -217,10 +211,14 @@ export default {
                 const drawPoster = new DrawPoster(ctx, {
                     avatarUrl: this.posterData.avatar,
                     userName: this.posterData.username,
-                    subTitle: '强烈为你推荐该活动',
-                    coverUrl: this.posterData.activityImage,
-                    ewmUrl: this.posterData.qrCodeImage,
-                    textArray: this.generateTextArray()
+                    subTitle: '强烈为你推荐该商品',
+                    coverUrl: this.posterData.productImage,
+                    // ewmUrl: this.posterData.qrCodeImage,
+                    textArray: this.generateTextArray(),
+                    image: this.posterData.image,
+                    qrCode: this.posterData.qrCode, // 用户二维码
+                    linkMan: this.posterData.linkMan, // 用户名
+                    contractMobile: this.posterData.contractMobile, // 用户手机号
                 })
                 return await drawPoster.draw()
             } catch (e) {
@@ -236,7 +234,7 @@ export default {
                     avatarUrl: this.posterData.avatar,
                     userName: this.posterData.username,
                     subTitle: '强烈为你推荐该商城',
-                    textArray: ['', '护肤上颜选,正品', '有好货~~']
+                    textArray: ['']
                 })
                 return await drawPoster.draw()
             } catch (e) {
@@ -250,10 +248,9 @@ export default {
 <style lang="scss" scoped>
 .poster-canvas {
     position: fixed;
-    top: 0;
-    left: 0;
+    top: -9999px;
+    left: -9999px;
     width: 375px;
     height: 610px;
-    border: 1px solid;
 }
 </style>

+ 24 - 78
components/cm-share-popup/draw-poster.js

@@ -7,7 +7,7 @@ const defaultOptions = () => ({
     bgImageUrl: 'https://static.caimei365.com/app/mini-hehe/icon/bg-share-01.png',
     userBg: 'https://static.caimei365.com/app/img/icon/bg-card.png',
     userTitleBg: 'https://static.caimei365.com/app/img/icon/logo-fanbai.png',
-    // ewmUrl: 'https://static.caimei365.com/app/mini-hehe/icon/icon-ewm-hehe.jpg',
+    ewmUrl: 'https://static.caimei365.com/app/mini-hehe/icon/icon-ewm-hehe.jpg',
     textArray: [],
     scale: 0.5,
 })
@@ -36,37 +36,6 @@ export default class DrawPoster {
             }
         })
     }
-    // 绘制海报头部(用户信息区域)
-    async drawHeader() {
-        try {
-            const { avatarUrl, userName, scale, subTitle } = this.options
-            const [error, result] = await uni.downloadFile({ url: avatarUrl })
-            if (error) return
-
-            // 绘制用户头像
-            this.ctx.beginPath()
-            this.ctx.arc(116 * scale, 108 * scale, 60 * scale, 0, 2 * Math.PI)
-            this.ctx.setFillStyle('#fff')
-            this.ctx.fill()
-            this.ctx.clip()
-            this.ctx.drawImage(result.tempFilePath, 56 * scale, 48 * scale, 120 * scale, 120 * scale)
-            this.ctx.restore()
-
-            // 绘制用户名和推荐语
-            this.ctx.setFillStyle('#FFFFFF')
-            this.ctx.font = 'bold 10px sans-serif'
-            this.ctx.setFontSize(40 * scale)
-            this.ctx.fillText(userName, 205 * scale, 96 * scale, 350 * scale)
-            this.ctx.font = 'normal 10px sans-serif'
-            this.ctx.setFontSize(26 * scale)
-            this.ctx.fillText(subTitle, 205 * scale, 150 * scale, 350 * scale)
-
-            this.ctx.save()
-            return Promise.resolve(true)
-        } catch (e) {
-            return Promise.reject(e)
-        }
-    }
     // 绘制背景
     async drawBgImage() {
         try {
@@ -74,7 +43,6 @@ export default class DrawPoster {
             const [error, result] = await uni.downloadFile({ url: bgImageUrl })
             if (error) return
             this.ctx.setFillStyle('#999999')
-            // this.ctx.drawImage(result.tempFilePath, 0, 0, 750 * scale, 1220 * scale)
             this.ctx.save()
             return Promise.resolve(true)
         } catch (e) {
@@ -100,7 +68,6 @@ export default class DrawPoster {
 
             this.ctx.beginPath()
             this.drawRoundRect(28 * scale, 28 * scale, 694 * scale, 878 * scale, 8)
-            // this.ctx.rect(28 * scale, 28 * scale, 694 * scale, 878 * scale)
             await this.drawCoverImage()
             await this.drawFooterText()
             await this.drawEwmImage()
@@ -115,7 +82,7 @@ export default class DrawPoster {
             const { coverUrl, scale } = this.options
             const [error, result] = await uni.downloadFile({ url: coverUrl })
             if (error) return
-            this.ctx.drawImage(result.tempFilePath, 56 * scale, 24 * scale, 638 * scale, 678 * scale)
+            this.ctx.drawImage(result.tempFilePath, 56 * scale, 56 * scale, 638 * scale, 658 * scale)
             return Promise.resolve(true)
         } catch (e) {
             return Promise.reject(e)
@@ -124,11 +91,13 @@ export default class DrawPoster {
     // 绘制名片封面
     async drawUserCoverImage() {
         try {
-            const { userBg, scale } = this.options
-            const [error, result] = await uni.downloadFile({ url: userBg })
-            if (error) return
-            this.drawBorderReduisImage(result.tempFilePath, 28 * scale, 920 * scale, 694 * scale, 290 * scale, 8)
+            const { userBg, scale, image, qrCode, linkMan, contractMobile } = this.options
+            await this.drawBorderReduisImage(userBg, 28 * scale, 920 * scale, 694 * scale, 290 * scale, 8)
             await this.drawUserCardInner() // 绘制名片内容
+            await this.drawCircleImg(image, 120 * scale, 1090 * scale, 30) //头像
+            this.drawFontText(40 * scale, 200 * scale, 1070 * scale, '#fff', linkMan, 'bold')
+            this.drawFontText(30 * scale, 200 * scale, 1130 * scale, '#fff', contractMobile, '400')
+            await this.drawBorderReduisImage(qrCode, 520 * scale, 1000 * scale, 170 * scale, 170 * scale, 8)
             return Promise.resolve(true)
         } catch (e) {
             return Promise.reject(e)
@@ -136,21 +105,18 @@ export default class DrawPoster {
     }
     async drawUserCardInner() {
         try {
-            const { userTitleBg, scale, avatarUrl } = this.options
+            const { userTitleBg, scale } = this.options
             const [error, result] = await uni.downloadFile({ url: userTitleBg })
-            
             if (error) return
-            // this.drawBorderReduisImage(result.tempFilePath, 28 * scale, 920 * scale, 694 * scale, 280 * scale, 8)
             this.ctx.drawImage(result.tempFilePath, 56 * scale, 940 * scale, 200 * scale, 70 * scale)
-            await this.drawCircleImg(avatarUrl, 170 * scale, 1000 * scale, 50)
             return Promise.resolve(true)
         } catch (e) {
             return Promise.reject(e)
         }
     }
-    
     async drawCircleImg(img, x, y, r) {
         const [error, result] = await uni.downloadFile({ url: img })
+        console.log('result', result, x, y, r)
         if (error) return
         this.ctx.save()
         this.ctx.beginPath()
@@ -158,9 +124,12 @@ export default class DrawPoster {
         this.ctx.arc(x, y, r, 0, 2 * Math.PI)
         this.ctx.clip()
         this.ctx.drawImage(result.tempFilePath, x - r, y - r, size, size)
+        console.log('x - r, y - r, size, size', x - r, y - r, size, size)
         this.ctx.restore()
     }
-    drawBorderReduisImage(imgUrl, bg_x, bg_y, bg_w, bg_h, bg_r) {
+    async drawBorderReduisImage(imgUrl, bg_x, bg_y, bg_w, bg_h, bg_r) {
+        const [error, result] = await uni.downloadFile({ url: imgUrl })
+        if (error) return
         this.ctx.save()
         this.ctx.beginPath()
         this.ctx.arc(bg_x + bg_r, bg_y + bg_r, bg_r, Math.PI, Math.PI*1.5)
@@ -168,9 +137,16 @@ export default class DrawPoster {
         this.ctx.arc(bg_x + bg_w - bg_r, bg_y + bg_h - bg_r, bg_r, 0, Math.PI * 0.5)
         this.ctx.arc(bg_x + bg_r, bg_y + bg_h - bg_r, bg_r, Math.PI * 0.5, Math.PI)
         this.ctx.clip()
-        this.ctx.drawImage(imgUrl, bg_x, bg_y, bg_w, bg_h)
+        this.ctx.drawImage(result.tempFilePath, bg_x, bg_y, bg_w, bg_h)
         this.ctx.restore()
     }
+    // 绘制文字
+    drawFontText(fontsize, x, y, color, text, bold) {
+        this.ctx.beginPath()
+        this.ctx.font = `${bold} ${fontsize}px sans-serif`
+        this.ctx.setFillStyle(color)
+        this.ctx.fillText(text, x, y)
+    }
     // 绘制底部
     drawFooterText(callback) {
         const { scale, textArray } = this.options
@@ -180,47 +156,17 @@ export default class DrawPoster {
             textArray.forEach((txt, index) => {
                 this.ctx.setFontSize(30 * scale)
                 this.ctx.setFillStyle('#333')
-
-                if (txt && index === 0) {
-                    this.drawPrice(txt)
-                } else {
-                    this.ctx.fillText(txt, 56 * scale, (678 + 56 * index) * scale)
-                }
+                this.ctx.fillText(txt, 56 * scale, (710 + 56 * index) * scale)
             })
         }
     }
-
-    drawPrice(txt) {
-        const { scale } = this.options
-        const txts = (txt.startsWith('¥') ? txt.slice(1) : txt).split('¥')
-        let txtLeft = 60 * scale
-        txts.forEach((priceText, index) => {
-            if (index === 0) {
-                this.ctx.setFillStyle('#FF457B')
-                this.ctx.setFontSize(24 * scale)
-                this.ctx.fillText('¥', txtLeft, 954 * scale)
-                const m1 = this.ctx.measureText('¥')
-                this.ctx.setFontSize(40 * scale)
-                this.ctx.fillText(priceText, txtLeft + m1.width, 954 * scale)
-                const m2 = this.ctx.measureText(priceText)
-                txtLeft = txtLeft + m1.width + m2.width + 8
-            } else {
-                this.ctx.setFillStyle('#999')
-                this.ctx.setFontSize(24 * scale)
-                this.ctx.fillText('¥' + priceText, txtLeft, 954 * scale)
-                let m = this.ctx.measureText('¥' + priceText)
-                this.ctx.fillRect(txtLeft, 946 * scale, m.width + 4, 1)
-            }
-        })
-    }
-
     // 绘制底部二维码
     async drawEwmImage() {
         try {
             const { ewmUrl, scale } = this.options
             const [error, result] = await uni.downloadFile({ url: ewmUrl })
             if (error) return
-            this.ctx.drawImage(result.tempFilePath, 524 * scale, 678 * scale, 160 * scale, 160 * scale)
+            this.ctx.drawImage(result.tempFilePath, 524 * scale, 720 * scale, 160 * scale, 160 * scale)
             return Promise.resolve(true)
         } catch (e) {
             return Promise.reject(e)

+ 8 - 6
pages/goods/mixins/share.helper.js

@@ -29,7 +29,8 @@ const queryKeyOfMap = {
     'keyWord': 'k',
     'productId': 'p',
     'jumpState': 'j',
-    'collageId': 'c'
+    'collageId': 'c',
+    'sellerUserId': 'u'
 }
 
 const enQueryKeyOfMap = {
@@ -40,7 +41,8 @@ const enQueryKeyOfMap = {
     'k': 'keyWord',
     'p': 'productId',
     'j': 'jumpState',
-    'c': 'collageId'
+    'c': 'collageId',
+    'u': 'sellerUserId'
 }
 
 // 创建二维码保存路径
@@ -58,12 +60,12 @@ function createQrcodeDir(callback) {
 
 
 /* 生成二维码链接 */
-export const generateWxUnlimited = async (params) => {
+export const generateWxUnlimited = async (that, params) => {
     try {
         // 从服务端获取二维码arrayBuffer
-        return await this.SellerService.wxUnlimited({
-            page: params.pagePath || 'pages/index/index',
-            scene: codeQueryStr(params.queryStr),
+        return await that.SellerService.wxUnlimited({
+            page: params.pagePath,
+            scene: params.queryStr,
             check_path: process.env.NODE_ENV === 'production', // 是否校验页面
             env_version: process.env.NODE_ENV === 'production' ? 'release' : 'trial', // 正式版 or 开发版
             width: 200, // 二维码宽度

+ 4 - 3
pages/goods/product.vue

@@ -138,11 +138,11 @@
 									<view class="p-title-name" :class="product.beautyActFlag == '1' ? 'indent' : ''">
 										{{ product.name == undefined ? '' : product.name }}
 									</view>
-		<!-- 							<button open-type="share" class="p-title-share tui-share-position" @tap="onShare">
+									<button open-type="share" class="p-title-share tui-share-position" @tap="onShare" v-if="userInfo.userIdentity !== 1">
 										<view class=""><text class="iconfont icon-fenxiang1"></text></view>
 										<view class="">分享</view>
-									</button> -->
-                                    <button class="p-title-share tui-share-position" @click="handleShare">
+									</button>
+                                    <button class="p-title-share tui-share-position" @click="handleShare" v-else>
                                         <view class=""><text class="iconfont icon-fenxiang1"></text></view>
                                         <view class="">分享</view>
                                     </button>
@@ -811,6 +811,7 @@ export default {
 		}
         console.log('options', option)
         this.sellerUserId = option.sellerUserId
+        uni.setStorage('sellerUserId', option.sellerUserId)
 		this.getWinHeight()
 	},
 	onReady() {

+ 875 - 796
pages/login/register.vue

@@ -1,109 +1,125 @@
 <template>
-	<view class="container register" :style="{ paddingTop: CustomBar + 'px' }">
-		<cu-custom :navbar-data="nvabarData" @navigateBack="hanldNavigateBack"></cu-custom>
-		<view class="register-main clearfix">
-			<view class="register-logo">
-				<image class="logo" src="https://static.caimei365.com/app/img/icon/logo@2x.png" mode=""></image>
-			</view>
-			<view class="register-row clearfix">
-				<view class="register-from">
-					<view class="label">联系人:</view>
-					<input
-						class="row-input"
-						type="text"
-						name="input"
-						v-model="params.userName"
-						placeholder="请输入机构联系人姓名"
-						maxlength="6"
-					/>
-				</view>
-			</view>
-			<view class="register-row clearfix">
-				<view class="register-from">
-					<view class="label">手机号:</view>
-					<input
-						class="row-input"
-						type="number"
-						name="input"
-						v-model="params.bindMobile"
-						placeholder="请输入联系人常用手机号"
-						maxlength="11"
-					/>
-				</view>
-			</view>
-			<view class="register-row clearfix">
-				<view class="register-from">
-					<view class="label">短信验证码:</view>
-					<input
-						class="row-input code"
-						type="text"
-						v-model="params.smsCode"
-						placeholder="请输入短信验证码"
-						maxlength="6"
-					/>
-					<view class="row-btn" :class="[isMobileDisabled ? 'disabled' : '']">
-						<button
-							class="row-input"
-							type="button"
-							@click.stop="getMobileCodeFn"
-							:disabled="isMobileDisabled"
-						>
-							{{ mobileCodeText }}
-						</button>
-					</view>
-				</view>
-			</view>
-			<view class="register-row clearfix">
-				<view class="register-from">
-					<view class="label">登录密码:</view>
-					<input
-						class="row-input"
-						type="password"
-						name="input"
-						v-model="params.password"
-						placeholder="密码必须为8-16位字母数字组合"
-						maxlength="16"
-					/>
-				</view>
-			</view>
-			<view class="register-row clearfix">
-				<view class="register-from">
-					<view class="label">确认密码:</view>
-					<input
-						class="row-input"
-						type="password"
-						name="input"
-						v-model="params.passWordConfirm"
-						placeholder="请确认密码"
-						maxlength="16"
-					/>
-				</view>
-			</view>
-			<view class="register-main clearfix">
-				<view class="register-agree">
-					<view class="agree-text" @tap.stop="agreeCheck()">
-						<button
-							class="checkbox iconfont"
-							:class="[isCheck ? 'icon-gouxuan' : 'icon-weigouxuan']"
-						></button>
-						我已阅读并同意
-						<text @click.stop="this.$api.navigateTo('/pages/service/service?id=1036&title=机构协议')"
-							>《机构协议》</text
-						>
-						<text @click.stop="this.$api.navigateTo('/pages/service/service?id=1023&title=用户协议')"
-							>《用户协议》</text
-						>及
-						<text @click.stop="this.$api.navigateTo('/pages/service/service?id=1013&title=隐私权政策')"
-							>《隐私权政策》</text
-						>
-					</view>
-				</view>
-				<view class="register-row ">
-					<view class="register-btn sub" @click.stop="registerStepsfirst">注册</view>
-				</view>
-			</view>
-		</view>
-	</view>
+    <view class="container register" :style="{ paddingTop: CustomBar + 'px' }">
+        <cu-custom :navbar-data="nvabarData" @navigateBack="hanldNavigateBack"></cu-custom>
+        <view class="register-main clearfix">
+            <view class="register-logo">
+                <image class="logo" src="https://static.caimei365.com/app/img/icon/logo@2x.png" mode=""></image>
+            </view>
+            <view class="register-row clearfix">
+                <view class="register-from">
+                    <view class="label">联系人:</view>
+                    <input
+                        class="row-input"
+                        type="text"
+                        name="input"
+                        v-model="params.userName"
+                        placeholder="请输入机构联系人姓名"
+                        maxlength="6"
+                    />
+                </view>
+            </view>
+            <view class="register-row clearfix">
+                <view class="register-from">
+                    <view class="label">手机号:</view>
+                    <input
+                        class="row-input"
+                        type="number"
+                        name="input"
+                        v-model="params.bindMobile"
+                        placeholder="请输入联系人常用手机号"
+                        maxlength="11"
+                    />
+                </view>
+            </view>
+            <view class="register-row clearfix">
+                <view class="register-from">
+                    <view class="label">短信验证码:</view>
+                    <input
+                        class="row-input code"
+                        type="text"
+                        v-model="params.smsCode"
+                        placeholder="请输入短信验证码"
+                        maxlength="6"
+                    />
+                    <view class="row-btn" :class="[isMobileDisabled ? 'disabled' : '']">
+                        <button
+                            class="row-input"
+                            type="button"
+                            @click.stop="getMobileCodeFn"
+                            :disabled="isMobileDisabled"
+                        >
+                            {{ mobileCodeText }}
+                        </button>
+                    </view>
+                </view>
+            </view>
+            <view class="register-row clearfix">
+                <view class="register-from">
+                    <view class="label">登录密码:</view>
+                    <input
+                        class="row-input"
+                        type="password"
+                        name="input"
+                        v-model="params.password"
+                        placeholder="密码必须为8-16位字母数字组合"
+                        maxlength="16"
+                    />
+                </view>
+            </view>
+            <view class="register-row clearfix">
+                <view class="register-from">
+                    <view class="label">确认密码:</view>
+                    <input
+                        class="row-input"
+                        type="password"
+                        name="input"
+                        v-model="params.passWordConfirm"
+                        placeholder="请确认密码"
+                        maxlength="16"
+                    />
+                </view>
+            </view>
+            <view class="register-row clearfix">
+                <view class="tab-label">是否需要为你匹配专属客户经理:</view>
+                <view class="tips">建议选择“需要”,采美专业的客户经理会为您提供更多支持,帮助您 轻松采购!</view>
+                <view class="check">
+                    <view
+                        class="radio"
+                        :class="item.id === params.isSp ? 'isActive' : ''"
+                        @click="params.isSp = item.id"
+                        v-for="(item, index) in checkRadio"
+                        :key="item.id"
+                    >
+                        {{ item.label }}
+                    </view>
+                </view>
+            </view>
+            <view class="register-main clearfix">
+                <view class="register-agree">
+                    <view class="agree-text" @tap.stop="agreeCheck()">
+                        <button
+                            class="checkbox iconfont"
+                            :class="[isCheck ? 'icon-gouxuan' : 'icon-weigouxuan']"
+                        ></button>
+                        我已阅读并同意
+                        <text @click.stop="this.$api.navigateTo('/pages/service/service?id=1036&title=机构协议')">
+                            《机构协议》
+                        </text>
+                        <text @click.stop="this.$api.navigateTo('/pages/service/service?id=1023&title=用户协议')">
+                            《用户协议》
+                        </text>
+                        及
+                        <text @click.stop="this.$api.navigateTo('/pages/service/service?id=1013&title=隐私权政策')">
+                            《隐私权政策》
+                        </text>
+                    </view>
+                </view>
+                <view class="register-row ">
+                    <view class="register-btn sub" @click.stop="registerStepsfirst">注册</view>
+                </view>
+            </view>
+        </view>
+    </view>
 </template>
 
 <script>
@@ -114,702 +130,765 @@ import mpvueCityPicker from '@/components/mpvue-citypicker/mpvueCityPicker.vue'
 import { beautyList, mentuzCampNullList, medicaCampNullList } from '@/common/json/data.json.js' //本地数据
 import { uploadFileImage } from '@/services/public.js'
 export default {
-	components: {
-		mpvueCityPicker
-	},
-	data() {
-		return {
-			nvabarData: {
-				//顶部自定义导航
-				showCapsule: 1, // 是否显示左上角图标  1表示显示  0表示不显示,
-				showSearch: 0,
-				title: '机构注册', // 导航栏 中间的标题
-				haveBack: true,
-				textLeft: this.$store.state.isIphone
-			},
-			CustomBar: this.CustomBar, // 顶部导航栏高度
-			isMobileDisabled: false, //手机验证码按钮控制
-			mobilCount: '', //倒计时
-			mobileCodeText: '获取验证码',
-			mobilTime: null,
-			params: {
-				userName: '',
-				bindMobile: '',
-				isAgreed: 0,
-				password: '',
-				passWordConfirm: '',
-				smsCode: '',
-				avatarUrl: '',
-				nickName: '',
-				source: 1,
-				unionId: ''
-			},
-			imageCode: '', //图形验证码
-			imageCodeUrl: '', //图形验证码图片
-			imageCodetoken: '', //图形验证校验
-			isCheck: false, //是否勾选协议
-			userID: '', //机构userID
-			clubID: '' //机构ID
-		}
-	},
-	onLoad(option) {},
-	computed: {
-		...mapState(['isWxAuthorize'])
-	},
-	methods: {
-		...mapMutations(['login', 'wxLogin']),
-		hanldNavigateBack() {
-			this.$util.modal('', '注册尚未完成,确定放弃注册吗?', '确定', '取消', true, () => {
-				uni.navigateBack({
-					delta: 1
-				})
-			})
-		},
+    components: {
+        mpvueCityPicker
+    },
+    data() {
+        return {
+            nvabarData: {
+                //顶部自定义导航
+                showCapsule: 1, // 是否显示左上角图标  1表示显示  0表示不显示,
+                showSearch: 0,
+                title: '机构注册', // 导航栏 中间的标题
+                haveBack: true,
+                textLeft: this.$store.state.isIphone
+            },
+            checkRadio: [
+                // 是否需要分配客户经理
+                {
+                    id: 1,
+                    label: '需要'
+                },
+                {
+                    id: 0,
+                    label: '不需要'
+                }
+            ],
+            CustomBar: this.CustomBar, // 顶部导航栏高度
+            isMobileDisabled: false, //手机验证码按钮控制
+            mobilCount: '', //倒计时
+            mobileCodeText: '获取验证码',
+            mobilTime: null,
+            params: {
+                userName: '',
+                bindMobile: '',
+                isAgreed: 0,
+                password: '',
+                passWordConfirm: '',
+                smsCode: '',
+                avatarUrl: '',
+                nickName: '',
+                source: 1,
+                unionId: '',
+                isSp: 1,
+                spId: uni.getStorageSync('sellerUserId') || '', // 协销分享的id
+            },
+            imageCode: '', //图形验证码
+            imageCodeUrl: '', //图形验证码图片
+            imageCodetoken: '', //图形验证校验
+            isCheck: false, //是否勾选协议
+            userID: '', //机构userID
+            clubID: '' //机构ID
+        }
+    },
+    onLoad(option) {},
+    computed: {
+        ...mapState(['isWxAuthorize'])
+    },
+    methods: {
+        ...mapMutations(['login', 'wxLogin']),
+        hanldNavigateBack() {
+            this.$util.modal('', '注册尚未完成,确定放弃注册吗?', '确定', '取消', true, () => {
+                uni.navigateBack({
+                    delta: 1
+                })
+            })
+        },
 
-		registerStepsfirst() {
-			if (this.params.userName == '') {
-				this.$util.msg('请输入联系人名称', 2000)
-				return
-			}
-			if (this.params.bindMobile == '') {
-				this.$util.msg('请输入手机号', 2000)
-				return
-			}
-			if (!this.$reg.isMobile(this.params.bindMobile)) {
-				this.$util.msg('手机格式不正确', 2000)
-				return
-			}
-			if (this.params.smsCode == '') {
-				this.$util.msg('请输入手机验证码', 2000)
-				return
-			}
-			if (!this.$reg.isMobileCode(this.params.smsCode)) {
-				this.$util.msg('验证码格式不正确', 2000)
-				return
-			}
-			if (this.params.password == '') {
-				this.$util.msg('请输入密码', 2000)
-				return
-			}
-			if (!this.$reg.checkPwd(this.params.password)) {
-				this.$util.msg('密码必须为8-16位字母数字的组合', 2000)
-				return
-			}
-			if (this.params.passWordConfirm == '') {
-				this.$util.msg('请再次确认密码', 2000)
-				return
-			}
-			if (this.params.passWordConfirm !== this.params.password) {
-				this.$util.msg('两次输入的密码不一致', 2000)
-				return
-			}
-			if (this.params.isAgreed == 0) {
-				this.$util.msg('请勾选同意协议', 2000)
-				return
-			}
-			this.params.unionId = uni.getStorageSync('unionId')
-			this.GetUserProfile()
-		},
-		GetUserProfile() {
-			//获取用户微信个人信息
-			const self = this
-			wx.getUserProfile({
-				desc: '采美采购商城小程序获取您的信息', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
-				success(res) {
-					console.log('微信获取用户信息新API', res)
-					self.wxLogin(res.userInfo)
-					self.params.nickName = res.userInfo.nickName
-					self.params.avatarUrl = res.userInfo.avatarUrl
-					self.UserRegisterClub(self.params)
-					// 友盟自定义事件
-					if (process.env.NODE_ENV != 'development') {
-						self.$uma.trackEvent('Um_Event_ConfirmRegister', {
-							Um_Key_PageName: '注册机构',
-							Um_Key_PageCategory: '注册机构页面'
-						})
-					}
-				},
-				fail() {
-					self.$util.msg('授权失败', 2000)
-				}
-			})
-		},
-		UserRegisterClub(params) {
-			this.UserService.UserRegisterClub(params)
-				.then(response => {
-					wxLogin.wxLoginAuthorize()
-					setTimeout(() => {
-						this.$api.switchTabTo('/pages/tabBar/user/user')
-					}, 2000)
-				})
-				.catch(error => {
-					this.$util.msg(error.msg, 2000)
-				})
-		},
-		storeUpdataeStatus(data) {
-			uni.setStorageSync('token', data.token)
-			this.$store.commit('updateStatus', data)
-			this.login(data)
-		},
-		getMobileCodeFn() {
-			if (this.params.bindMobile == '') {
-				this.$util.msg('请输入手机号', 2000)
-				return
-			}
-			if (!this.$reg.isMobile(this.params.bindMobile)) {
-				this.$util.msg('请输入正确的手机号', 2000)
-				return
-			}
-			let params = {
-				mobile: this.params.bindMobile,
-				isCheckCaptcha: 1,
-				activateCodeType: 2,
-				platformType: 2
-			}
-			this.isMobileDisabled = true
-			this.PublicService.GetRegisterMobileCode(params)
-				.then(response => {
-					this.$util.msg('验证短信已发送', 2000)
-					const TIME_COUNT = 60
-					if (!this.mobilTime) {
-						this.mobilCount = TIME_COUNT
-						this.isMobileDisabled = true
-						this.mobilTime = setInterval(() => {
-							if (this.mobilCount > 1 && this.mobilCount <= TIME_COUNT) {
-			  			this.mobilCount--
-								this.mobileCodeText = this.mobilCount + 's重新发送'
-							} else {
-								this.isMobileDisabled = false
-								clearInterval(this.mobilTime)
-								this.mobilTime = null
-								this.mobileCodeText = '获取验证码'
-							}
-						}, 1000)
-					}
-				})
-				.catch(error => {
-					this.$util.msg(error.msg, 2000)
-					this.isMobileDisabled = false
-				})
-		},
-		agreeCheck() {
-			this.isCheck = !this.isCheck
-			if (this.isCheck) {
-				this.params.isAgreed = 1
-			} else {
-				this.params.isAgreed = 0
-			}
-		},
-		async InitAuthorize() {
-			//是否已授权 0:为取消授权 1:为已授权 2:为未操作
-			wxLogin.wxLoginQuick()
-		}
-	},
-	onShow() {
-		this.InitAuthorize()
-	}
+        registerStepsfirst() {
+            if (this.params.userName == '') {
+                this.$util.msg('请输入联系人名称', 2000)
+                return
+            }
+            if (this.params.bindMobile == '') {
+                this.$util.msg('请输入手机号', 2000)
+                return
+            }
+            if (!this.$reg.isMobile(this.params.bindMobile)) {
+                this.$util.msg('手机格式不正确', 2000)
+                return
+            }
+            if (this.params.smsCode == '') {
+                this.$util.msg('请输入手机验证码', 2000)
+                return
+            }
+            if (!this.$reg.isMobileCode(this.params.smsCode)) {
+                this.$util.msg('验证码格式不正确', 2000)
+                return
+            }
+            if (this.params.password == '') {
+                this.$util.msg('请输入密码', 2000)
+                return
+            }
+            if (!this.$reg.checkPwd(this.params.password)) {
+                this.$util.msg('密码必须为8-16位字母数字的组合', 2000)
+                return
+            }
+            if (this.params.passWordConfirm == '') {
+                this.$util.msg('请再次确认密码', 2000)
+                return
+            }
+            if (this.params.passWordConfirm !== this.params.password) {
+                this.$util.msg('两次输入的密码不一致', 2000)
+                return
+            }
+            if (this.params.isAgreed == 0) {
+                this.$util.msg('请勾选同意协议', 2000)
+                return
+            }
+            this.params.unionId = uni.getStorageSync('unionId')
+            this.GetUserProfile()
+        },
+        GetUserProfile() {
+            //获取用户微信个人信息
+            const self = this
+            wx.getUserProfile({
+                desc: '采美采购商城小程序获取您的信息', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
+                success(res) {
+                    console.log('微信获取用户信息新API', res)
+                    self.wxLogin(res.userInfo)
+                    self.params.nickName = res.userInfo.nickName
+                    self.params.avatarUrl = res.userInfo.avatarUrl
+                    self.UserRegisterClub(self.params)
+                    // 友盟自定义事件
+                    if (process.env.NODE_ENV != 'development') {
+                        self.$uma.trackEvent('Um_Event_ConfirmRegister', {
+                            Um_Key_PageName: '注册机构',
+                            Um_Key_PageCategory: '注册机构页面'
+                        })
+                    }
+                },
+                fail() {
+                    self.$util.msg('授权失败', 2000)
+                }
+            })
+        },
+        UserRegisterClub(params) {
+            this.UserService.UserRegisterClub(params)
+                .then(response => {
+                    wxLogin.wxLoginAuthorize()
+                    setTimeout(() => {
+                        this.$api.switchTabTo('/pages/tabBar/user/user')
+                    }, 2000)
+                })
+                .catch(error => {
+                    this.$util.msg(error.msg, 2000)
+                })
+        },
+        storeUpdataeStatus(data) {
+            uni.setStorageSync('token', data.token)
+            this.$store.commit('updateStatus', data)
+            this.login(data)
+        },
+        getMobileCodeFn() {
+            if (this.params.bindMobile == '') {
+                this.$util.msg('请输入手机号', 2000)
+                return
+            }
+            if (!this.$reg.isMobile(this.params.bindMobile)) {
+                this.$util.msg('请输入正确的手机号', 2000)
+                return
+            }
+            let params = {
+                mobile: this.params.bindMobile,
+                isCheckCaptcha: 1,
+                activateCodeType: 2,
+                platformType: 2
+            }
+            this.isMobileDisabled = true
+            this.PublicService.GetRegisterMobileCode(params)
+                .then(response => {
+                    this.$util.msg('验证短信已发送', 2000)
+                    const TIME_COUNT = 60
+                    if (!this.mobilTime) {
+                        this.mobilCount = TIME_COUNT
+                        this.isMobileDisabled = true
+                        this.mobilTime = setInterval(() => {
+                            if (this.mobilCount > 1 && this.mobilCount <= TIME_COUNT) {
+                                this.mobilCount--
+                                this.mobileCodeText = this.mobilCount + 's重新发送'
+                            } else {
+                                this.isMobileDisabled = false
+                                clearInterval(this.mobilTime)
+                                this.mobilTime = null
+                                this.mobileCodeText = '获取验证码'
+                            }
+                        }, 1000)
+                    }
+                })
+                .catch(error => {
+                    this.$util.msg(error.msg, 2000)
+                    this.isMobileDisabled = false
+                })
+        },
+        agreeCheck() {
+            this.isCheck = !this.isCheck
+            if (this.isCheck) {
+                this.params.isAgreed = 1
+            } else {
+                this.params.isAgreed = 0
+            }
+        },
+        async InitAuthorize() {
+            //是否已授权 0:为取消授权 1:为已授权 2:为未操作
+            wxLogin.wxLoginQuick()
+        }
+    },
+    onShow() {
+        this.InitAuthorize()
+    }
 }
 </script>
 
 <style lang="scss">
 .register {
-	width: 100%;
-	height: 100%;
-	box-sizing: border-box;
-	background-size: contain;
-	.register-main {
-		width: 100%;
-		height: auto;
-		position: relative;
-		.register-consult {
-			width: 110rpx;
-			height: 68rpx;
-			background: linear-gradient(223deg, rgba(225, 86, 21, 0.6) 0%, rgba(225, 86, 10, 0.3) 100%);
-			border-radius: 34rpx 0 0 34rpx;
-			position: absolute;
-			right: 0;
-			bottom: 120rpx;
-			text-align: left;
-			line-height: 68rpx;
-			padding-left: 20rpx;
-			.icon-kefunv {
-				font-size: 48rpx;
-				color: #31313b;
-				float: left;
-			}
-			.text {
-				font-size: $font-size-24;
-				display: block;
-				float: left;
-				width: 60rpx;
-				line-height: 30rpx;
-				color: #ffffff;
-				margin-top: 6rpx;
-			}
-		}
-		.register-agree {
-			display: flex;
-			flex-direction: column;
-			align-items: center;
-			margin: 100rpx 0 20rpx 0;
-			.agree-text {
-				.checkbox {
-					float: left;
-					margin: 4rpx 6rpx 0 0;
-					color: #999999;
-					font-size: $font-size-34;
-					&.icon-gouxuan {
-						color: $color-system;
-					}
-				}
-				font-size: $font-size-22;
-				line-height: 44rpx;
-				color: #999999;
-				text {
-					color: #1890f9;
-				}
-			}
-		}
-		.register-logo {
-			width: 100%;
-			display: flex;
-			flex-direction: column;
-			align-items: center;
-			height: 284rpx;
-			padding: 60rpx 0 40rpx 0;
-			.logo {
-				width: 611rpx;
-				height: 284rpx;
-				display: block;
-			}
-		}
-		&.detailed {
-			padding-bottom: 330rpx;
-		}
-		.register-row {
-			width: 100%;
-			height: auto;
-			padding: 0 75rpx;
-			margin-bottom: 30rpx;
-			box-sizing: border-box;
-			&.none {
-				margin-bottom: 0;
-			}
-			&.login {
-				display: flex;
-			}
-			.register-text {
-				line-height: 44rpx;
-				margin-top: 100rpx;
-				font-size: $font-size-24;
-				color: #999999;
-				text-align: justify;
-				.txt {
-					margin-right: 15rpx;
-				}
-			}
-			.register-title {
-				line-height: 44rpx;
-				font-size: $font-size-24;
-				color: $text-color;
-				text-align: left;
-				&.first {
-					margin-top: 20rpx;
-				}
-			}
-			.register-tip {
-				line-height: 64rpx;
-				font-size: $font-size-24;
-				color: #cecece;
-				text-align: left;
-			}
-			.register-from {
-				width: 100%;
-				height: 80rpx;
-				background: #ffffff;
-				position: relative;
-				border-bottom: 1px solid #e1e1e1;
-				.label {
-					text-align: left;
-					font-size: $font-size-28;
-					color: #666666;
-					line-height: 88rpx;
-					float: left;
-				}
-				.row-input {
-					width: 440rpx;
-					padding-left: 10rpx;
-					font-size: $font-size-28;
-					color: $text-color;
-					line-height: 80rpx;
-					float: left;
-					height: 80rpx;
-					&.none {
-						color: #999999;
-					}
-					&.picker {
-						text-align: left;
-						color: #333333;
-					}
-					&.keshi {
-						width: 550rpx;
-					}
-					&.code {
-						width: 264rpx;
-					}
-				}
-				&.img-btn {
-					width: 220rpx;
-					height: 80rpx;
-					padding: 0;
-					float: left;
-					background: #ffffff;
-					display: block;
-					.vscodeimg {
-						width: 150rpx;
-						height: 80rpx;
-						float: left;
-						display: flex;
-						flex-direction: column;
-						align-items: center;
-						border-radius: 14rpx;
-						image {
-							width: 150rpx;
-							height: 80rpx;
-							border-radius: 14rpx;
-						}
-					}
-					.vscod-refresh {
-						width: 70rpx;
-						float: right;
-						text-align: right;
-						display: flex;
-						flex-direction: column;
-						align-items: center;
-						line-height: 44rpx;
-						.icon-shuaxin {
-							font-size: 48rpx;
-							color: #333333;
-						}
-						.ref-text {
-							font-size: 24rpx;
-							color: #333333;
-						}
-					}
-				}
-				&.imgcode {
-					width: 410rpx;
-					float: left;
-					margin-right: 20rpx;
-					.row-input {
-						width: 230rpx;
-					}
-				}
-				.row-btn {
-					width: 180rpx;
-					height: 64rpx;
-					float: left;
-					background: $btn-confirm;
-					padding: 0;
-					border-radius: 32rpx;
-					.row-input {
-						width: 180rpx;
-						height: 64rpx;
-						line-height: 64rpx;
-						padding: 0;
-						color: #ffffff;
-						background: $btn-confirm;
-						text-align: center;
-						border-radius: 32rpx;
-						&.other {
-							width: 180rpx;
-							background: #f7f7f7;
-							margin-right: 20rpx;
-						}
-						&.none {
-							background: #f7f7f7;
-						}
-					}
-					&.disabled {
-						background: #f7f7f7;
-						.row-input {
-							background: #f7f7f7;
-							color: #999999;
-							font-size: 24rpx;
-						}
-					}
-				}
-				&.picker {
-					padding: 0 24rpx;
-					width: 654rpx;
-					height: 88rpx;
-					line-height: 88rpx;
-					.label {
-						line-height: 88rpx;
-					}
-					.row-input {
-						width: 470rpx;
-						height: 88rpx;
-						line-height: 88rpx;
-						padding-left: 30rpx;
-					}
-				}
-				&.radio {
-					padding: 0 24rpx;
-					width: 654rpx;
-					height: 288rpx;
-					.row-input {
-						width: 100%;
-						height: 88rpx;
-						line-height: 88rpx;
-						padding-left: 0;
-					}
-					.row-radio {
-						float: left;
-						transform: scale(0.8);
-					}
-					.row-text {
-						width: 100rpx;
-						text-align: center;
-						float: left;
-					}
-				}
-				&.group {
-					padding: 0 24rpx;
-					width: 654rpx;
-					height: auto;
-					background: #ffffff;
-					margin-top: 30rpx;
-					.label {
-						line-height: 76rpx;
-					}
-					.row-input {
-						width: 100%;
-						height: 88rpx;
-						line-height: 88rpx;
-						padding-left: 0;
-					}
-					.row-radio {
-						float: left;
-					}
-					.row-text {
-						width: 100rpx;
-						text-align: center;
-						float: left;
-					}
-				}
-				&.btn {
-					margin-top: 0;
-				}
-				.content-class {
-					margin: 20rpx auto;
-					display: flex;
-					flex-flow: row wrap;
-					justify-content: space-between;
-					align-items: center;
-					&.btn {
-						margin: 0 auto;
-						margin-left: 116rpx;
-					}
-					.row-input {
-						display: flex;
-						width: 220rpx;
-						height: 40rpx;
-						padding: 24rpx;
-						text-align: left;
-						border-radius: 10rpx;
-						font-size: $font-size-28;
-						color: $text-color;
-					}
-					.confirm-btn {
-						width: 200rpx;
-						height: 88rpx;
-						border-radius: 10rpx;
-						line-height: 88rpx;
-						text-align: center;
-						&.other {
-							width: 213rpx;
-						}
-						&.none {
-							color: #ffffff;
-							background: $btn-confirm;
-						}
-						&.disabled {
-							color: #999999;
-						}
-					}
-					.item {
-						width: 155rpx;
-						height: 60rpx;
-						font-size: $font-size-28;
-						line-height: 60rpx;
-						border-radius: 10rpx;
-						margin: 10rpx;
-						text-align: center;
-						box-sizing: border-box;
-						border: 1rpx solid #efefef;
-						float: left;
-						checkbox {
-							display: none;
-						}
-					}
-					.on {
-						border-color: $color-system;
-						color: $color-system;
-					}
-				}
-			}
-			.row-login {
-				flex: 1;
-				font-size: $font-size-28;
-				color: $text-color;
-				text-align: left;
-			}
-			.row-logincode {
-				flex: 1;
-				font-size: $font-size-28;
-				color: $text-color;
-				text-align: right;
-			}
-			.icon-xiayibu {
-				width: 88rpx;
-				height: 88rpx;
-				position: absolute;
-				right: 0;
-				top: 0;
-				line-height: 88rpx;
-				text-align: center;
-			}
-			&.text-textarea {
-				background: #ffffff;
-				.textarea {
-					width: 654rpx;
-					height: 180rpx;
-					background: #f7f7f7;
-					padding: 24rpx;
-					font-size: $font-size-28;
-					color: $text-color;
-					z-index: 1;
-					border-radius: 14rpx;
-				}
-				.textarea.hide {
-					opacity: 0;
-				}
-				.textarea.show {
-					color: #999999;
-				}
-			}
-		}
-		.register-picture {
-			height: 102rpx;
-			margin: 30rpx 0;
-			width: 42%;
-			float: left;
-			&.zz {
-				width: 100%;
-			}
-			.label {
-				float: left;
-				font-size: $font-size-28;
-				color: $text-color;
-				line-height: 102rpx;
-				width: 150rpx;
-				text-align: right;
-				&.zz {
-					width: 230rpx;
-				}
-			}
-			.upload-picture {
-				float: left;
-				height: 100rpx;
-				.upload-none {
-					width: 100rpx;
-					height: 100rpx;
-					text-align: center;
-					line-height: 100rpx;
-					color: #999999;
-					border: 1px solid #999999;
-					border-radius: 10rpx;
-					margin: 0 20rpx;
-					.iconfont {
-						font-size: $font-size-28;
-					}
-				}
-				.upload-image {
-					width: 100rpx;
-					height: 100rpx;
-					border-radius: 10rpx;
-					margin: 0 20rpx;
-					position: relative;
-					image {
-						width: 100rpx;
-						height: 100rpx;
-						border-radius: 10rpx;
-					}
-					.upload-del {
-						width: 40rpx;
-						height: 40rpx;
-						position: absolute;
-						top: -20rpx;
-						right: -20rpx;
-						line-height: 40rpx;
-						text-align: center;
-						.iconfont {
-							font-size: $font-size-32;
-							color: #999999;
-						}
-					}
-				}
-			}
-		}
-		.register-input {
-			width: 654rpx;
-			height: 40rpx;
-			padding: 24rpx;
-			margin: 0 auto;
-			margin-bottom: 60rpx;
-			background: #f7f7f7;
-			border-radius: 14rpx;
-			.input {
-				width: 100%;
-				height: 100%;
-				background: #f7f7f7;
-				font-size: $font-size-28;
-				line-height: 40rpx;
-				color: #333333;
-				border-radius: 14rpx;
-			}
-		}
-		.register-fiexd {
-			width: 100%;
-			height: auto;
-			position: fixed;
-			bottom: 0;
-			left: 0;
-			z-index: 999;
-			background: #ffffff;
-		}
-		.register-btn {
-			width: 100%;
-			height: 88rpx;
-			border-radius: 44rpx;
-			font-size: $font-size-28;
-			line-height: 88rpx;
-			color: #ffffff;
-			margin: 0 auto;
-			text-align: center;
-			background: $btn-confirm;
-			margin-top: 96rpx;
-			&.none {
-				border: 1px solid $color-system;
-				background: #ffffff;
-				color: $color-system;
-				margin-top: 0;
-			}
-			&.sub {
-				margin-top: 0;
-			}
-		}
-	}
+    width: 100%;
+    height: 100%;
+    box-sizing: border-box;
+    background-size: contain;
+    .register-main {
+        width: 100%;
+        height: auto;
+        position: relative;
+        .register-consult {
+            width: 110rpx;
+            height: 68rpx;
+            background: linear-gradient(223deg, rgba(225, 86, 21, 0.6) 0%, rgba(225, 86, 10, 0.3) 100%);
+            border-radius: 34rpx 0 0 34rpx;
+            position: absolute;
+            right: 0;
+            bottom: 120rpx;
+            text-align: left;
+            line-height: 68rpx;
+            padding-left: 20rpx;
+            .icon-kefunv {
+                font-size: 48rpx;
+                color: #31313b;
+                float: left;
+            }
+            .text {
+                font-size: $font-size-24;
+                display: block;
+                float: left;
+                width: 60rpx;
+                line-height: 30rpx;
+                color: #ffffff;
+                margin-top: 6rpx;
+            }
+        }
+        .register-agree {
+            display: flex;
+            flex-direction: column;
+            align-items: center;
+            margin: 100rpx 0 20rpx 0;
+            .agree-text {
+                .checkbox {
+                    float: left;
+                    margin: 4rpx 6rpx 0 0;
+                    color: #999999;
+                    font-size: $font-size-34;
+                    &.icon-gouxuan {
+                        color: $color-system;
+                    }
+                }
+                font-size: $font-size-22;
+                line-height: 44rpx;
+                color: #999999;
+                text {
+                    color: #1890f9;
+                }
+            }
+        }
+        .register-logo {
+            width: 100%;
+            display: flex;
+            flex-direction: column;
+            align-items: center;
+            height: 284rpx;
+            padding: 60rpx 0 40rpx 0;
+            .logo {
+                width: 611rpx;
+                height: 284rpx;
+                display: block;
+            }
+        }
+        &.detailed {
+            padding-bottom: 330rpx;
+        }
+        .register-row {
+            width: 100%;
+            height: auto;
+            padding: 0 75rpx;
+            margin-bottom: 30rpx;
+            box-sizing: border-box;
+            .tab-label {
+                color: #666666;
+                font-size: 28rpx;
+            }
+            .tips {
+                color: #ff5b00;
+                font-size: 20rpx;
+            }
+            .check{
+                display: flex;
+                align-item: center;
+                margin-top: 24rpx;
+                .radio {
+                    color: #666666;
+                    font-size: 28rpx;
+                    padding-left: 60rpx;
+                    position: relative;
+                    margin-right: 56rpx;
+                    &::before {
+                        content: '';
+                        width: 32rpx;
+                        height: 32rpx;
+                        border: 1px solid #B2B2B2;
+                        border-radius: 50%;
+                        position: absolute;
+                        left: 0;
+                    }
+                }
+                .isActive {
+                    &::before {
+                        border: 1px solid #FF5B00;
+                        content: '';
+                        width: 32rpx;
+                        height: 32rpx;
+                        border-radius: 50%;
+                        position: absolute;
+                        left: 0;
+                    }
+                    &::after {
+                        content: '';
+                        width: 16rpx;
+                        height: 16rpx;
+                        border-radius: 50%;
+                        position: absolute;
+                        left: 0;
+                        background-color: #FF5B00;
+                        transform: translate(60%, 60%);
+                    }
+                }
+            }
+            &.none {
+                margin-bottom: 0;
+            }
+            &.login {
+                display: flex;
+            }
+            .register-text {
+                line-height: 44rpx;
+                margin-top: 100rpx;
+                font-size: $font-size-24;
+                color: #999999;
+                text-align: justify;
+                .txt {
+                    margin-right: 15rpx;
+                }
+            }
+            .register-title {
+                line-height: 44rpx;
+                font-size: $font-size-24;
+                color: $text-color;
+                text-align: left;
+                &.first {
+                    margin-top: 20rpx;
+                }
+            }
+            .register-tip {
+                line-height: 64rpx;
+                font-size: $font-size-24;
+                color: #cecece;
+                text-align: left;
+            }
+            .register-from {
+                width: 100%;
+                height: 80rpx;
+                background: #ffffff;
+                position: relative;
+                border-bottom: 1px solid #e1e1e1;
+                .label {
+                    text-align: left;
+                    font-size: $font-size-28;
+                    color: #666666;
+                    line-height: 88rpx;
+                    float: left;
+                }
+                .row-input {
+                    width: 440rpx;
+                    padding-left: 10rpx;
+                    font-size: $font-size-28;
+                    color: $text-color;
+                    line-height: 80rpx;
+                    float: left;
+                    height: 80rpx;
+                    &.none {
+                        color: #999999;
+                    }
+                    &.picker {
+                        text-align: left;
+                        color: #333333;
+                    }
+                    &.keshi {
+                        width: 550rpx;
+                    }
+                    &.code {
+                        width: 264rpx;
+                    }
+                }
+                &.img-btn {
+                    width: 220rpx;
+                    height: 80rpx;
+                    padding: 0;
+                    float: left;
+                    background: #ffffff;
+                    display: block;
+                    .vscodeimg {
+                        width: 150rpx;
+                        height: 80rpx;
+                        float: left;
+                        display: flex;
+                        flex-direction: column;
+                        align-items: center;
+                        border-radius: 14rpx;
+                        image {
+                            width: 150rpx;
+                            height: 80rpx;
+                            border-radius: 14rpx;
+                        }
+                    }
+                    .vscod-refresh {
+                        width: 70rpx;
+                        float: right;
+                        text-align: right;
+                        display: flex;
+                        flex-direction: column;
+                        align-items: center;
+                        line-height: 44rpx;
+                        .icon-shuaxin {
+                            font-size: 48rpx;
+                            color: #333333;
+                        }
+                        .ref-text {
+                            font-size: 24rpx;
+                            color: #333333;
+                        }
+                    }
+                }
+                &.imgcode {
+                    width: 410rpx;
+                    float: left;
+                    margin-right: 20rpx;
+                    .row-input {
+                        width: 230rpx;
+                    }
+                }
+                .row-btn {
+                    width: 180rpx;
+                    height: 64rpx;
+                    float: left;
+                    background: $btn-confirm;
+                    padding: 0;
+                    border-radius: 32rpx;
+                    .row-input {
+                        width: 180rpx;
+                        height: 64rpx;
+                        line-height: 64rpx;
+                        padding: 0;
+                        color: #ffffff;
+                        background: $btn-confirm;
+                        text-align: center;
+                        border-radius: 32rpx;
+                        &.other {
+                            width: 180rpx;
+                            background: #f7f7f7;
+                            margin-right: 20rpx;
+                        }
+                        &.none {
+                            background: #f7f7f7;
+                        }
+                    }
+                    &.disabled {
+                        background: #f7f7f7;
+                        .row-input {
+                            background: #f7f7f7;
+                            color: #999999;
+                            font-size: 24rpx;
+                        }
+                    }
+                }
+                &.picker {
+                    padding: 0 24rpx;
+                    width: 654rpx;
+                    height: 88rpx;
+                    line-height: 88rpx;
+                    .label {
+                        line-height: 88rpx;
+                    }
+                    .row-input {
+                        width: 470rpx;
+                        height: 88rpx;
+                        line-height: 88rpx;
+                        padding-left: 30rpx;
+                    }
+                }
+                &.radio {
+                    padding: 0 24rpx;
+                    width: 654rpx;
+                    height: 288rpx;
+                    .row-input {
+                        width: 100%;
+                        height: 88rpx;
+                        line-height: 88rpx;
+                        padding-left: 0;
+                    }
+                    .row-radio {
+                        float: left;
+                        transform: scale(0.8);
+                    }
+                    .row-text {
+                        width: 100rpx;
+                        text-align: center;
+                        float: left;
+                    }
+                }
+                &.group {
+                    padding: 0 24rpx;
+                    width: 654rpx;
+                    height: auto;
+                    background: #ffffff;
+                    margin-top: 30rpx;
+                    .label {
+                        line-height: 76rpx;
+                    }
+                    .row-input {
+                        width: 100%;
+                        height: 88rpx;
+                        line-height: 88rpx;
+                        padding-left: 0;
+                    }
+                    .row-radio {
+                        float: left;
+                    }
+                    .row-text {
+                        width: 100rpx;
+                        text-align: center;
+                        float: left;
+                    }
+                }
+                &.btn {
+                    margin-top: 0;
+                }
+                .content-class {
+                    margin: 20rpx auto;
+                    display: flex;
+                    flex-flow: row wrap;
+                    justify-content: space-between;
+                    align-items: center;
+                    &.btn {
+                        margin: 0 auto;
+                        margin-left: 116rpx;
+                    }
+                    .row-input {
+                        display: flex;
+                        width: 220rpx;
+                        height: 40rpx;
+                        padding: 24rpx;
+                        text-align: left;
+                        border-radius: 10rpx;
+                        font-size: $font-size-28;
+                        color: $text-color;
+                    }
+                    .confirm-btn {
+                        width: 200rpx;
+                        height: 88rpx;
+                        border-radius: 10rpx;
+                        line-height: 88rpx;
+                        text-align: center;
+                        &.other {
+                            width: 213rpx;
+                        }
+                        &.none {
+                            color: #ffffff;
+                            background: $btn-confirm;
+                        }
+                        &.disabled {
+                            color: #999999;
+                        }
+                    }
+                    .item {
+                        width: 155rpx;
+                        height: 60rpx;
+                        font-size: $font-size-28;
+                        line-height: 60rpx;
+                        border-radius: 10rpx;
+                        margin: 10rpx;
+                        text-align: center;
+                        box-sizing: border-box;
+                        border: 1rpx solid #efefef;
+                        float: left;
+                        checkbox {
+                            display: none;
+                        }
+                    }
+                    .on {
+                        border-color: $color-system;
+                        color: $color-system;
+                    }
+                }
+            }
+            .row-login {
+                flex: 1;
+                font-size: $font-size-28;
+                color: $text-color;
+                text-align: left;
+            }
+            .row-logincode {
+                flex: 1;
+                font-size: $font-size-28;
+                color: $text-color;
+                text-align: right;
+            }
+            .icon-xiayibu {
+                width: 88rpx;
+                height: 88rpx;
+                position: absolute;
+                right: 0;
+                top: 0;
+                line-height: 88rpx;
+                text-align: center;
+            }
+            &.text-textarea {
+                background: #ffffff;
+                .textarea {
+                    width: 654rpx;
+                    height: 180rpx;
+                    background: #f7f7f7;
+                    padding: 24rpx;
+                    font-size: $font-size-28;
+                    color: $text-color;
+                    z-index: 1;
+                    border-radius: 14rpx;
+                }
+                .textarea.hide {
+                    opacity: 0;
+                }
+                .textarea.show {
+                    color: #999999;
+                }
+            }
+        }
+        .register-picture {
+            height: 102rpx;
+            margin: 30rpx 0;
+            width: 42%;
+            float: left;
+            &.zz {
+                width: 100%;
+            }
+            .label {
+                float: left;
+                font-size: $font-size-28;
+                color: $text-color;
+                line-height: 102rpx;
+                width: 150rpx;
+                text-align: right;
+                &.zz {
+                    width: 230rpx;
+                }
+            }
+            .upload-picture {
+                float: left;
+                height: 100rpx;
+                .upload-none {
+                    width: 100rpx;
+                    height: 100rpx;
+                    text-align: center;
+                    line-height: 100rpx;
+                    color: #999999;
+                    border: 1px solid #999999;
+                    border-radius: 10rpx;
+                    margin: 0 20rpx;
+                    .iconfont {
+                        font-size: $font-size-28;
+                    }
+                }
+                .upload-image {
+                    width: 100rpx;
+                    height: 100rpx;
+                    border-radius: 10rpx;
+                    margin: 0 20rpx;
+                    position: relative;
+                    image {
+                        width: 100rpx;
+                        height: 100rpx;
+                        border-radius: 10rpx;
+                    }
+                    .upload-del {
+                        width: 40rpx;
+                        height: 40rpx;
+                        position: absolute;
+                        top: -20rpx;
+                        right: -20rpx;
+                        line-height: 40rpx;
+                        text-align: center;
+                        .iconfont {
+                            font-size: $font-size-32;
+                            color: #999999;
+                        }
+                    }
+                }
+            }
+        }
+        .register-input {
+            width: 654rpx;
+            height: 40rpx;
+            padding: 24rpx;
+            margin: 0 auto;
+            margin-bottom: 60rpx;
+            background: #f7f7f7;
+            border-radius: 14rpx;
+            .input {
+                width: 100%;
+                height: 100%;
+                background: #f7f7f7;
+                font-size: $font-size-28;
+                line-height: 40rpx;
+                color: #333333;
+                border-radius: 14rpx;
+            }
+        }
+        .register-fiexd {
+            width: 100%;
+            height: auto;
+            position: fixed;
+            bottom: 0;
+            left: 0;
+            z-index: 999;
+            background: #ffffff;
+        }
+        .register-btn {
+            width: 100%;
+            height: 88rpx;
+            border-radius: 44rpx;
+            font-size: $font-size-28;
+            line-height: 88rpx;
+            color: #ffffff;
+            margin: 0 auto;
+            text-align: center;
+            background: $btn-confirm;
+            margin-top: 96rpx;
+            &.none {
+                border: 1px solid $color-system;
+                background: #ffffff;
+                color: $color-system;
+                margin-top: 0;
+            }
+            &.sub {
+                margin-top: 0;
+            }
+        }
+    }
 }
 </style>

+ 10 - 1
pages/notice/club/components/notice-cell.vue

@@ -39,9 +39,18 @@
 		<template v-if="cellType === 3">
 			<view class="tui-notice-cell clearfix">
 				<view class="tui-cell-top">
-					<view class="cell-title"> {{ cell.messageType | noticeUsersFilters }} </view>
+                    <view class="cell-title" v-if="cell.shopTieredType > 1"> {{ cell.shopTieredType | noticeSellerFilters }} </view>
+					<view class="cell-title" v-else> {{ cell.messageType | noticeUsersFilters }} </view>
 					<view class="cell-time"> {{ cell.time }} </view>
 				</view>
+                <view class="tui-cell-seller" v-if="cell.shopTieredType > 4">
+                    <view class="seller">
+                       客户经理:<text>{{cell.superUserName}}</text>
+                    </view>
+                    <view class="seller">
+                        手机号码:<text>{{cell.mobile}}</text>
+                    </view>
+                </view>
 				<view class="tui-cell-content"> 
 					{{ noticeUsersText(cell)}}
 				</view> 

+ 11 - 1
pages/notice/club/mixins/notice.mixins.js

@@ -37,6 +37,14 @@ const noticeMixins = {
                 3: '优惠券待领取通知'
             }
             return map[value]
+        },
+        noticeSellerFilters(value) {
+            // 客户经理分配通知  5,客户经理分配通知。6,客户经理重新分配通知
+            const map = {
+                5: '采美平台已为您匹配专属客户经理,为您提供专业咨询服务。',
+                6: '因公司内部人员调整需要,采美平台已为您更换了新客户经理。',
+            }
+            return map[value]
         }
     },
     methods: {
@@ -137,7 +145,9 @@ const noticeMixins = {
                 4: `您已获得采美平台赠送的${cell.content}超级会员,在服务期内每月可领多张大额优惠券,还有更多超级会员专属权益等您体验,快去看看吧 >>>`,
                 5: '恭喜您成功升级为资质机构用户!现在可以查看更多商品的信息啦,采美平台也将为您提供更多专业服务。',
                 6: '您的账号升级资质机构失败!赶快去修改资料重新提交吧 >>>',
-                7: `恭喜您(微信昵称:${cell.content})成功成为机构运营人员,祝您开启愉快的采购之旅。`
+                7: `恭喜您(微信昵称:${cell.content})成功成为机构运营人员,祝您开启愉快的采购之旅。`,
+                8: '采美平台已为您匹配专属客户经理,为您提供专业咨询服务。',
+                9: '因公司内部人员调整需要,采美平台已为您更换了新客户经理。'
             }
             return map[cell.accountType]
         },

+ 11 - 0
pages/notice/club/notice-serve.vue

@@ -139,6 +139,17 @@ page {
 			float: right;
 		}
 	}
+    .tui-cell-seller {
+        margin-bottom: 16rpx;
+        .seller {
+            color: #333333;
+            font-size: 28rpx;
+            margin-bottom: 16rpx;
+            text {
+                color: #666666;
+            }
+        }
+    }
 	.tui-cell-content{
 		width: 100%;
 		height: auto;

Dosya farkı çok büyük olduğundan ihmal edildi
+ 580 - 554
pages/seller/club/list.vue


+ 8 - 14
pages/seller/components/message.vue

@@ -17,9 +17,9 @@
     			</view>
     		</view>
     		<view class="container-notice">
-    			<view class="notice-cell" @click="$api.navigateTo('/pages/seller/notice/service/service?messageType=1')">
+    			<view class="notice-cell" @click="$api.navigateTo('/pages/seller/notice/service/service')">
     				<view class="notice-cell-icon">
-    					<image class="icon-image" :src="StaticUrl + 'icon/icon-notice-serve@2x.png'" mode=""></image>
+    					<image class="icon-image" :src="StaticUrl + 'icon/seller-server.png'" mode=""></image>
     				</view>
     				<view class="notice-cell-text"> 服务通知 <text class="cell-text">官方</text> </view>
     				<view class="notice-cell-badge" v-if="notificationCount > 0">
@@ -43,7 +43,6 @@
                 StaticUrl: this.$Static,
                 notificationCount: 100,
                 skeletonShow: false,
-                clubId: 0,
                 allCount:0,
                 tradeCount: 0,
                 accountCount: 0,
@@ -69,9 +68,8 @@
             this.initData()
         },
         methods: {
-            ...mapMutations(['updateSellerNoticeNum']),
             initData() {
-                this.updateSellerNoticeNum()
+                this.getSellerNoticeSpCount()
             },
             // 请求信息列表
             async getMessageList(){
@@ -84,7 +82,7 @@
             		this.$util.msg('暂无未读消息', 2000)
             		return
             	}
-            	this.UserService.authUpdateMessageAsRead({ commonId:this.clubId,messageType: '' })
+            	this.SellerService.updateSpMessageAsRead({ commonId:this.userInfo.serviceProviderId, messageType: 3 })
                 .then(response => {
                     uni.vibrateShort({
                         success: function() {
@@ -99,21 +97,17 @@
                 })
             },
             // 协销账户
-            getUserAuthClubMessageCount() {
+            getSellerNoticeSpCount() {
             	//供应商详情
-            	this.UserService.getUserAuthClubMessageCount({ commonId: this.clubId })
+            	this.SellerService.getSellerNoticeSpCount({ commonId: this.userInfo.serviceProviderId, messageType: 3 })
             		.then(response => {
-            			this.allCount = response.data.count
-            			this.tradeCount = response.data.tradeCount // 交易物流
-            			this.accountCount = response.data.account // 账户通知
-            			this.notificationCount = response.data.notificationCount // 服务通知
-            			this.promotionCount = response.data.promotionCount // 优惠促销
+                        console.log(response)
+                        this.notificationCount = response.data.accountCount
             			this.skeletonShow = false //预加载圆圈隐藏
             		})
             		.catch(error => {
             			this.$util.msg(error.msg, 2000)
             		})
-            	this.skeletonShow = false
             },
         }
     }

+ 19 - 28
pages/seller/notice/components/notice-cell.vue

@@ -5,32 +5,34 @@
 		<template v-if="cellType === 1">
 			<view class="tui-notice-cell clearfix">
 				<view class="tui-cell-top">
-					<view class="cell-title"> {{ cell.messageType | noticeUsersFilters }} </view>
+					<view class="cell-title"> {{ cell.shopTieredType | noticeUsersFilters }} </view>
 					<view class="cell-time"> {{ cell.time }} </view>
 				</view>
-                <view class="cell-info" v-if="false">
+                <view class="cell-info" v-if="cell.shopTieredType !== 7 && cell.shopTieredType !== 1">
                     <view class="club-cell">
-                        机构名称:<text>西安聚美汇医疗美容</text>
+                        机构名称:<text>{{cell.name}}</text>
                     </view>
                     <view class="club-cell">
-                        联系人:<text>西安聚美汇医疗美容</text>
+                        联系人:<text>{{cell.userName}}</text>
                     </view>
                     <view class="club-cell">
-                        手机号:<text>西安聚美汇医疗美容</text>
+                        手机号:<text>{{cell.mobile}}</text>
                     </view>
-                    <view class="club-cell">
-                        上一任销售:<text></text>
+                    <view class="club-cell" v-if="cell.shopTieredType === 2">
+                        上一任销售:<text>{{cell.superUserName}}</text>
+                    </view>
+                    <view class="club-cell" v-if="cell.shopTieredType === 3">
+                        下一任销售:<text>{{cell.superUserName}}</text>
                     </view>
                 </view>
-                <view class="cell-info" v-else>
-                    昨日【广州市美洋阳医疗美容...】等5家机构客户访问
-                    了采美商城
-                </view>
+<!--                <view class="cell-info" v-if="cell.shopTieredType === 7">
+                    {{ noticeSellerUserText(cell) }}
+                </view> -->
 				<view class="tui-cell-content"> 
-					{{ noticeUsersText(cell)}}
+					{{ noticeSellerUserText(cell) }}
 				</view> 
-                <view class="tui-cell-button">
-                    <button @click="$emit('trampInfo', cell.id)">立即查看</button>
+                <view class="tui-cell-button" v-if="cell.shopTieredType === 2 || cell.shopTieredType === 4 || cell.shopTieredType === 7">
+                    <button @click="$emit('trampInfo', cell)">立即查看</button>
                 </view>
 			</view>
 		</template>
@@ -51,23 +53,12 @@ export default {
 			type: Object
 		}
 	},
-	data() {
-		return {
-			
-		}
-	},
-	created() {
-		
-	},
-	methods: {
-		
-	}
 }
 </script>
 
 <style lang="scss" scoped>
 .cell-info {
-    padding: 33rpx 0;
+    padding: 0 0 33rpx 0;
     line-height: 48rpx;
     color: #666666;
 }
@@ -81,8 +72,8 @@ export default {
     }
 }
 .tui-cell-button {
-    padding: 15rpx 0;
-    height: 95rpx;
+    padding: 15rpx 0 0 0;
+    height: 70rpx;
     box-sizing: border-box;
     button {
         width: 160rpx;

+ 19 - 15
pages/seller/notice/components/trajectory.vue

@@ -1,20 +1,17 @@
 <template>
     <view class="trajectory">
-        <view class="title">
-            访问轨迹
-        </view>
-        <time-axis>
+        <view class="title">访问轨迹</view>
+        <time-axis v-for="item in trajectoryList" :key="item.id">
             <template #title>
-                <text>08-28   18:30</text>
+                <text>{{item.time}}</text>
             </template>
             <template #content>
                 <view class="time-axis-content">
-                    <image src="../../../../static/temp/icon-new@2x.png" class="axis-product" mode=""></image>
-                                    <view class="axis-product-info">
-                                        <view class="product-title">【商品】</view>
-                                        <view class="product-info">Prostrolane Nature-B 珀洛丽肽焕活
-                    修颜精华液</view>
-                                    </view>
+                    <image :src="item.image || '../../../../static/temp/icon-new@2x.png'" class="axis-product" mode=""></image>
+                    <view class="axis-product-info">
+                        <view class="product-title">【{{item.title}}】</view>
+                        <view class="product-info">{{item.content}}</view>
+                    </view>
                 </view>
             </template>
         </time-axis>
@@ -24,13 +21,20 @@
 <script>
 import TimeAxis from './time-axis.vue'
 export default {
-    props: {},
+    props: {
+        trajectoryList: {
+            type: Array,
+            default: () => ([
+                {}
+            ])
+        }
+    },
     components: {
-        TimeAxis,
+        TimeAxis
     },
     data() {
         return {}
-    },
+    }
 }
 </script>
 
@@ -68,4 +72,4 @@ export default {
     display: flex;
     align-items: center;
 }
-</style>
+</style>

+ 15 - 8
pages/seller/notice/components/visits-cell.vue

@@ -1,16 +1,16 @@
 <template>
-    <view class="visits-cell" @click="$emit('handlerVisits', visitsInfo.id)">
+    <view class="visits-cell" @click="$emit('handlerVisits', visitsInfo)">
         <view class="visits-club">
-            <image src="/static/icon-user-active@3x.png" mode="" class="visits-author"></image>
-            <view>广州市渼洋阳医疗美容诊所有限公司</view>
+            <image :src="visitsInfo.image || '/static/icon-user-active@3x.png'" mode="" class="visits-author"></image>
+            <view>{{visitsInfo.name || '广州市渼洋阳医疗美容诊所有限公司'}}</view>
         </view>
         <view class="visits-content">
             <view class="container">
                 <view class="visits-name">
-                    李淑霞
+                    {{ visitsInfo.linkMan || '李淑霞'}}
                 </view>
                 <view class="visits-phone">
-                    13922400399
+                    {{ visitsInfo.contractMobile || '13922400399'}}
                 </view>
             </view>
             <view class="container">
@@ -18,8 +18,7 @@
                     关注点:
                 </view>
                 <view class="visits-concern">
-                    黄金微针,水光针,微针,小气泡,热玛吉
-                    激光,光子嫩肤
+                    {{ visitsInfo.pageLabel || '黄金微针,水光针,微针,小气泡,热玛吉激光,光子嫩肤'}}
                 </view>
             </view>
         </view>
@@ -31,7 +30,15 @@ export default {
     props: {
         visitsInfo: {
             type: Object,
-            default: () => {}
+            default: () => ({
+                image: '',
+                pageLabel: '',
+                name: '',
+                linkMan: '',
+                contractMobile: '',
+                accessTime: '2023-08-29',
+                clubId: '1111'
+            })
         }
     }
 }

+ 14 - 124
pages/seller/notice/mixins/notice.mixins.js

@@ -1,140 +1,30 @@
 // 机构通知消息 
 const noticeMixins = {
-    data() {
-
-    },
     filters: {
        noticeUsersFilters(value) {
-           // 账户通知状态 1.注册成功通知 2.购买超级会员成功 3.超级会员到期提醒 4.超级会员到期提醒 5.升级资质机构成功 6.升级资质机构失败 7.成为机构运营人员通知
            const map = {
-               1: '注册成功通知',
-               2: '购买超级会员成功',
-               3: '超级会员到期提醒',
-               4: '系统赠送超级会员',
-               5: '升级资质机构成功',
-               6: '升级资质机构失败',
-               7: '成为机构运营人员通知'
+               1: '上架费',
+               2: '机构分配通知',
+               3: '机构转移通知',
+               4: '机构分配通知',
+               7: '机构访问通知',
+               8: '机构回收通知'
            }
            return map[value]
        },
     },
     methods: {
-        getUserAuthClubMessageList() {
-            this.UserService.getUserAuthClubMessageList(this.listQuery)
-                .then(response => {
-                    let data = response.data
-                    this.hasNextPage = response.data.hasNextPage
-                    if (data.list && data.list.length > 0) {
-                        this.isEmpty = false
-                        this.list = [...data.list]
-                        this.pullFlag = false
-                        setTimeout(() => {
-                            this.pullFlag = true
-                        }, 500)
-                        if (this.hasNextPage) {
-                            this.pullUpOn = false
-                            this.nomoreText = '上拉显示更多'
-                        } else {
-                            if (this.list.length < 5) {
-                                this.pullUpOn = true
-                                this.loadding = false
-                            } else {
-                                this.pullUpOn = false
-                                this.loadding = false
-                                this.nomoreText = '到底了~'
-                            }
-                        }
-                    } else {
-                        this.isEmpty = true
-                    }
-                    this.skeletonShow = false
-                })
-                .catch(error => {
-                    this.$util.msg(error.msg, 2000)
-                })
-        },
-        getReachBottomData() {
-            //上拉加载
-            this.listQuery.pageNum += 1
-            this.UserService.getUserAuthClubMessageList(this.listQuery)
-                .then(response => {
-                    let data = response.data
-                    if (data.list && data.list.length > 0) {
-                        this.hasNextPage = data.hasNextPage
-                        this.list = this.list.concat(data.list)
-                        this.pullFlag = false // 防上拉暴滑
-                        setTimeout(() => {
-                            this.pullFlag = true
-                        }, 500)
-                        if (this.hasNextPage) {
-                            this.pullUpOn = false
-                            this.nomoreText = '上拉显示更多'
-                        } else {
-                            this.pullUpOn = false
-                            this.loadding = false
-                            this.nomoreText = '到底了~'
-                        }
-                    }
-                })
-                .catch(error => {
-                    this.$util.msg(error.msg, 2000)
-                })
-        },
-        deleteBtn(id,index) {
-            // 删除通知消息
-            this.UserService.authDeleteMessage({ id: id })
-                .then(response => {
-                    let _this = this
-                    uni.vibrateShort({
-                        success: function() {
-                            _this.listQuery.pageNum = 1
-                            _this.getUserAuthClubMessageList()
-                            // _this.list.splice(index, 1) 
-                        }
-                    })
-                })
-                .catch(error => {
-                    console.log('error=>', error.msg)
-                })
-        },
-        noticeOrderText(cell) { // 交易物流通知文案
-            const map = {
-                1: '您已成功下单!',
-                2: '您的订单已支付完成,将立即安排发货!',
-                3: `您的订单已${cell.refundType === 1 ? '部分退' : '全部退'}款/货成功!退款金额¥${cell.content},到账时间可能存在延迟,具体以支付方通知为准。`,
-                4: `${cell.content}`,
-                5: '您的订单已发货,请您留意物流变化!',
-                6: '您的订单因超时已被系统自动确认收货!'
-            }
-            return map[cell.orderMessageType]
-        },
-        noticeUsersText(cell) { // 账户通知文案
+        noticeSellerUserText(cell) {
             const map = {
-                1: '欢迎成为采美机构用户,祝您开启愉快的采购之旅。',
-                2: `您已成功购买${cell.content}采美平台超级会员服务,在服务期内每月可领多张大额优惠券,还有更多超级会员专属权益等您体验,快去看看吧 >>>`,
-                3: `您的超级会员服务将于${cell.content}到期,到期后将无法享受专属会员权益,赶快去续费吧 >>>`,
-                4: `您已获得采美平台赠送的${cell.content}超级会员,在服务期内每月可领多张大额优惠券,还有更多超级会员专属权益等您体验,快去看看吧 >>>`,
-                5: '恭喜您成功升级为资质机构用户!现在可以查看更多商品的信息啦,采美平台也将为您提供更多专业服务。',
-                6: '您的账号升级资质机构失败!赶快去修改资料重新提交吧 >>>',
-                7: `恭喜您(微信昵称:${cell.content})成功成为机构运营人员,祝您开启愉快的采购之旅。`
+                1: `${cell.content}`,
+                2: '系统已为你分配机构客户,请及时跟进。',
+                3: '系统已将你的机构转移给其他销售人员,你已无权管理该客户。',
+                4: '系统已为你分配机构客户,请及时跟进。',
+                7: `${cell.content}`,
+                8: '系统已将你的机构客户进行回收,你已无权管理该客户。'
             }
-            return map[cell.accountType]
+            return map[cell.shopTieredType]
         },
-        // noticeCouponText(cell) { // 优惠促销通知文案
-        //     const copunMap = {
-        //         0: `采美平台送您${cell.couponFee}元优惠券,众多大牌正品等着您,赶快去领取下单吧 >>>`,
-        //         1: `采美平台${cell.content}类商品大优惠,特送您${cell.couponFee}元优惠券,赶快去领取下单吧 >>>`,
-        //         2: `为了答谢您对采美平台的支持,采美送您${cell.couponFee}元优惠券,赶快去领取下单吧 >>>`,
-        //         3: `【${cell.content}】赠送您${cell.couponFee}元的店铺专属优惠券,众多火爆商品等您来!赶快去领取下单吧 >>>`,
-        //         4: `恭喜成功注册采美平台,现赠送您${cell.couponFee}元新用户优惠券,赶快去领取下单吧 >>>`,
-        //     }
-        //     const map = {
-        //         1: copunMap[cell.couponType],
-        //         2: `您有${cell.couponFee}元优惠券将于${cell.content}过期,赶快去查看使用吧 >>>`,
-        //         3: `您有${cell.couponFee}元优惠券尚未领取,优惠券将于${cell.content}后下架,赶快去领取下单吧 >>>`,
-        //     }
-        //     return map[cell.couponMessageType]
-        // }
     }
 }
 

+ 49 - 12
pages/seller/notice/service/Institutional_visits.vue

@@ -1,12 +1,13 @@
 <template>
     <view class="visitor">
-        <view class="visits-time">
-            2023-08-28
-        </view>
+        <view class="visits-time">{{ accDateTime }}</view>
         <template>
-            <view>
-                <visits-cell @handlerVisits="handlerVisits" :visits-info="visitsInfo"/>
-            </view>
+            <visits-cell
+                @handlerVisits="handlerVisits"
+                :visits-info="visitsInfo"
+                v-for="visitsInfo in visitsList"
+                :key="visitsInfo.clubId"
+            />
         </template>
     </view>
 </template>
@@ -19,14 +20,50 @@ export default {
     },
     data() {
         return {
-            visitsInfo: {
-                id: 1
-            }
+            visitsList: [{
+                image: '',
+                pageLabel: '',
+                name: '',
+                linkMan: '',
+                contractMobile: '',
+                accessTime: '2023-08-29',
+                clubId: '1111'
+            }],
+            accDateTime: '',
+            userInfo: {}
         }
     },
+    onLoad(options) {
+        this.accDateTime = options.accDateTime
+    },
+    mounted() {
+        this.userInfo = uni.getStorageSync('userInfo')
+        this.getVisitesClubList()
+    },
+    onReachBottom() {
+    },
+    onPullDownRefresh() {
+    	//下拉刷新
+    	this.getVisitesClubList()
+    	uni.stopPullDownRefresh()
+    },
     methods: {
         handlerVisits($event) {
-            this.$api.navigateTo('/pages/seller/notice/service/visits_details?id=' + $event)
+            this.$api.navigateTo(
+                '/pages/seller/notice/service/visits_details?spId=' +
+                    this.userInfo.serviceProviderId +
+                    '&clubId=' +
+                    $event.clubId +
+                    '&accessTime=' +
+                    $event.accessTime
+            )
+        },
+        async getVisitesClubList() {
+            const { data } = await this.SellerService.getVisitesClubList({
+                spId: this.userInfo.serviceProviderId,
+                accDateTime: this.accDateTime
+            })
+            this.visitsList = data.list
         }
     }
 }
@@ -34,7 +71,7 @@ export default {
 
 <style lang="scss">
 page {
-	background-color: #f7f7f7;
+    background-color: #f7f7f7;
 }
 .visitor {
     .visits-time {
@@ -44,4 +81,4 @@ page {
         padding: 40rpx 0 24rpx 16rpx;
     }
 }
-</style>
+</style>

+ 135 - 93
pages/seller/notice/service/service.vue

@@ -1,27 +1,27 @@
 <template>
     <view class="service">
         <tui-skeleton
-        	v-if="skeletonShow"
-        	backgroundColor="#fafafa"
-        	borderRadius="10rpx"
-        	:isLoading="true"
-        	:loadingType="5"
+            v-if="skeletonShow"
+            backgroundColor="#fafafa"
+            borderRadius="10rpx"
+            :isLoading="true"
+            :loadingType="5"
         ></tui-skeleton>
         <view class="container">
             <view v-for="(cell, index) in messageList" class="info-card" :key="index">
                 <view class="tui-notice clearfix">
-                	<tui-swipe-action :operateWidth="80" :backgroundColor="'#F7F7F7'">
-                		<template v-slot:content>
-                			<notice-cell :cellType="1" :cell="cell" @trampInfo="trampInfo"></notice-cell>
-                		</template>
-                		<template v-slot:button>
-                			<view class="tui-custom-btn_box">
-                				<view class="tui-custom-btn" @click.stop="deleteBtn(cell.id,index)">
-                					<text class="iconfont icon-shanchu3"></text>
-                				</view>
-                			</view>
-                		</template>
-                	</tui-swipe-action>
+                    <tui-swipe-action :operateWidth="80" :backgroundColor="'#F7F7F7'">
+                        <template v-slot:content>
+                            <notice-cell :cellType="1" :cell="cell" @trampInfo="trampInfo"></notice-cell>
+                        </template>
+                        <template v-slot:button>
+                            <view class="tui-custom-btn_box">
+                                <view class="tui-custom-btn" @click.stop="deleteBtn(cell.id, index)">
+                                    <text class="iconfont icon-shanchu3"></text>
+                                </view>
+                            </view>
+                        </template>
+                    </tui-swipe-action>
                 </view>
             </view>
         </view>
@@ -38,35 +38,76 @@ export default {
     data() {
         return {
             skeletonShow: false, // 刷新
+            params: {
+                messageType: 3,
+                pageNum: 1,
+                pageSize: 10,
+                source: 2,
+                commonId: ''
+            },
             messageList: [
                 {
                     id: 1,
-                    messageType: 1,
+                    shopTieredType: 7,
                     time: '2023年8月29日',
-                    accountType: 1,
                     content: '大黄蜂'
                 }
             ], // 信息列表
+            userInfo: {}
         }
     },
+    mounted() {
+        this.getMessageList()
+    },
     methods: {
         // 请求信息列表
-        async getMessageList(){
-            console.log(1111)
+        async getMessageList() {
+            this.userInfo = uni.getStorageSync('userInfo')
+            this.params.commonId = this.userInfo.serviceProviderId
+            const { data } = await this.SellerService.getSellerNotice(this.params)
+            this.messageList = [...this.messageList, ...data.list]
         },
         // 删除
-        deleteBtn() {},
+        deleteBtn(id, index) {
+            // 删除通知消息
+            this.UserService.authDeleteMessage({ id: id })
+                .then(response => {
+                    uni.vibrateShort({
+                        success: () => {
+                            this.params.pageSize = this.params.pageNum * this.params.pageSize
+                            this.params.pageNum = 1
+                            this.getMessageList()
+                        }
+                    })
+                })
+                .catch(error => {
+                    console.log('error=>', error.msg)
+                })
+        },
         // 详情
         trampInfo($event) {
-            this.$api.navigateTo('/pages/seller/notice/service/Institutional_visits?id=' + $event)
+            const time = $event.time.replace(/[年月日]/g, '-')
+            if ($event.shopTieredType === 7) {
+                this.$api.navigateTo(
+                    '/pages/seller/notice/service/Institutional_visits?spId=' +
+                        this.userInfo.serviceProviderId +
+                        '&accDateTime=' +
+                        time.substr(0, time.length - 1)
+                )
+            } else {
+                this.$api.navigateTo('/pages/seller/club/club-portrait?userId=' + $event.clubId)
+            }
         }
     },
     onPullDownRefresh() {
-        console.log('刷新')
+        this.params.pageSize = 10
+        this.params.pageNum = 1
+        this.getMessageList()
         uni.stopPullDownRefresh()
     },
     onReachBottom() {
-        console.log('到底了')
+        this.params.pageNum += 1
+        this.getMessageList()
     }
 }
 </script>
@@ -81,85 +122,86 @@ export default {
     box-sizing: border-box;
 }
 page {
-	background-color: #f7f7f7;
+    background-color: #f7f7f7;
 }
 .container-main {
-	width: 100%;
-	box-sizing: border-box;
-	padding: 24rpx 0;
-	.empty-container-image {
-		width: 260rpx;
-		height: 260rpx;
-		margin-top: -300rpx;
-	}
+    width: 100%;
+    box-sizing: border-box;
+    padding: 24rpx 0;
+    .empty-container-image {
+        width: 260rpx;
+        height: 260rpx;
+        margin-top: -300rpx;
+    }
 }
-.tui-swipeout-content{
-	white-space:normal !important;
+.tui-swipeout-content {
+    white-space: normal !important;
 }
-.tui-notice{
-	margin-bottom: 24rpx;
+.tui-notice {
+    margin-bottom: 24rpx;
 }
 .tui-notice-cell {
-	width: 702rpx;
-	height: auto;
-	background-color: #ffffff;
-	border-radius: 16rpx;
-	box-sizing: border-box;
-	padding:0 24rpx;
-	margin: 0 auto;
-	.tui-cell-top{
-		width: 100%;
-		height: 105rpx;
-		line-height: 105rpx;
+    width: 702rpx;
+    height: auto;
+    background-color: #ffffff;
+    border-radius: 16rpx;
+    box-sizing: border-box;
+    padding: 24rpx;
+    margin: 0 auto;
+    .tui-cell-top {
+        width: 100%;
+        height: 105rpx;
+        line-height: 105rpx;
         border-bottom: 1px solid #ccc;
-		.cell-title{
-			font-size: 32rpx;
-			color: #333333;
-			float: left;
-			font-weight: bold;
-		}
-		.cell-time{
-			font-size: 24rpx;
-			color: #999999;
-			float: right;
-		}
-	}
-	.tui-cell-content{
-		width: 100%;
-		height: auto;
-		box-sizing: border-box;
-		border-radius: 8rpx;
-		line-height: 44rpx;
-		padding: 24rpx;
-		background-color: #F7F7F7;
-		font-size: 28rpx;
-		color: #333333;
-		text-align: justify;
-	}
+        margin-bottom: 33rpx;
+        .cell-title {
+            font-size: 32rpx;
+            color: #333333;
+            float: left;
+            font-weight: bold;
+        }
+        .cell-time {
+            font-size: 24rpx;
+            color: #999999;
+            float: right;
+        }
+    }
+    .tui-cell-content {
+        width: 100%;
+        height: auto;
+        box-sizing: border-box;
+        border-radius: 8rpx;
+        line-height: 44rpx;
+        padding: 24rpx;
+        background-color: #f7f7f7;
+        font-size: 28rpx;
+        color: #333333;
+        text-align: justify;
+    }
 }
 .tui-custom-btn_box {
-	width: 80px;
-	height: 100%;
-	padding: 0 20rpx;
-	box-sizing: border-box;
-	display: flex;
-	align-items: center;
-	justify-content: center;
-	background-color: #f7f7f7;
+    width: 80px;
+    height: 100%;
+    padding: 0 20rpx;
+    box-sizing: border-box;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    background-color: #f7f7f7;
 }
 
 .tui-custom-btn {
-	width: 56rpx;
-	height: 56rpx;
-	border-radius: 50%;
-	background-color: #f94b4b;
-	color: #ffffff;
-	display: flex;
-	align-items: center;
-	justify-content: center;
-	flex-shrink: 0;
-	.icon-shanchu3 {
-		font-size: 32rpx;
-	}
+    width: 56rpx;
+    height: 56rpx;
+    border-radius: 50%;
+    background-color: #f94b4b;
+    color: #ffffff;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    flex-shrink: 0;
+    .icon-shanchu3 {
+        font-size: 32rpx;
+    }
 }
 </style>

+ 28 - 9
pages/seller/notice/service/visits_details.vue

@@ -1,12 +1,8 @@
 <template>
     <view class="details">
-        <view class="visits-time">
-            2023-08-28
-        </view>
+        <view class="visits-time">{{ accessTime }}</view>
         <template>
-            <view class="details-title">
-                <visits-cell @handlerVisits="handlerVisits" :visits-info="visitsInfo"/>
-            </view>
+            <view class="details-title"><visits-cell @handlerVisits="handlerVisits" :visits-info="visitsInfo" /></view>
         </template>
         <view class="trajectory">
             <Trajectory />
@@ -26,12 +22,35 @@ export default {
         return {
             visitsInfo: {
                 id: 1
-            }
+            },
+            accessTime: '', // 访问日期
+            spId: '', // 协销id
+            clubId: '' ,// 机构id
+            detailList: {}
         }
     },
+    onLoad(options) {
+        this.accessTime = options.accessTime
+        this.spId = options.spId
+        this.clubId = options.clubId
+    },
+    mounted() {
+        this.getVisitesClubDetail()
+    },
     methods: {
         handlerVisits($event) {
-            this.$api.navigateTo('/pages/seller/notice/service/visits_details?id=' + $event)
+            this.$api.navigateTo(
+                '/pages/seller/notice/service/visits_details?spId=' +
+                    this.spId +
+                    '&clubId=' +
+                    this.clubId +
+                    '&accessTime=' +
+                    this.accessTime
+            )
+        },
+        async getVisitesClubDetail() {
+            const {data} = await this.SellerService.getVisitesClubInfo({accessTime: this.accessTime, spId: this.spId, clubId: this.clubId})
+            this.detailList = data
         }
     }
 }
@@ -52,4 +71,4 @@ page {
         margin-bottom: 24rpx;
     }
 }
-</style>
+</style>

+ 6 - 1
pages/seller/remarks/business-card.vue

@@ -14,7 +14,7 @@
         <view class="select-item" @click.native="$api.navigateTo('/pages/seller/remarks/mine-qrcode')">
             <view class="select-title">二维码</view>
             <view class="select-content">
-                <image class="aov" :src="info.qrcode" mode="" v-if="info.qrcode"></image>
+                <image class="aov" :src="info.qrCode" mode="" v-if="info.qrCode"></image>
                 <text v-else>无</text>
                 <text class="cell-more iconfont icon-xiayibu"></text>
             </view>
@@ -51,6 +51,11 @@ export default {
         this.userInfo = uni.getStorageSync('userInfo')
         this.getUserInfo()
     },
+    onload() {
+        uni.$on('updated', () => {
+            this.getUserInfo()
+        })
+    },
     methods: {
         itemClick(e) {
             if (e.index === 1) {

+ 11 - 8
pages/seller/remarks/components/activity-analysis.vue

@@ -1,24 +1,26 @@
 <template>
     <view class="activity-analysis">
-        <image src="../../../../static/icon-user-active@3x.png" class="analysis-img" mode=""></image>
+        <image src="https://static.caimei365.com/app/img/icon/icon-club@3x.png" class="analysis-img" mode=""></image>
         <view class="analysis-content">
             <view class="analysis-club">
                 {{clubInfo.name}}
             </view>
             <view class="analysis-tab">
-                <view class="tab-item">
+                <view class="tab-item" @click.stop="$api.navigateTo('/pages/service/service?id=1041&title=标签说明')">
                     {{clubInfo.activeState}}
+                    <text class="iconfont icon-xiayibu"></text>
                 </view>
-                <view class="tab-item">
+                <view class="tab-item" @click.stop="$api.navigateTo('/pages/service/service?id=1041&title=标签说明')">
                     {{clubInfo.customerValue}}
+                    <text class="iconfont icon-xiayibu"></text>
                 </view>
             </view>
             <view class="analysis-info">
                 <view>
-                    {{ club.linkMan }}
+                    {{ clubInfo.linkMan }}
                 </view>
                 <view>
-                    {{ club.contractMobile }}
+                    {{ clubInfo.contractMobile }}
                 </view>
             </view>
         </view>
@@ -33,9 +35,6 @@ export default {
             default: () => ({})
         }
     },
-    data() {
-        return {}
-    },
 }
 </script>
 
@@ -72,6 +71,10 @@ export default {
                 line-height: 40rpx;
                 font-size: 22rpx;
                 color: #FF5B00;
+                .icon-xiayibu {
+                	font-size: 20rpx;
+                	margin-left: 10rpx;
+                }
             }
         }
         .analysis-info {

+ 2 - 2
pages/seller/remarks/components/analysis-card.vue

@@ -8,7 +8,7 @@
                 <view>(6个月内有登录商城等行为)</view>
             </template>
         </analysis-card-item>
-        <analysis-card-item :isSubtitle="true" :num="analysisInfo.livelyClubProportion"> 
+        <analysis-card-item :isSubtitle="true" :num="analysisInfo.noLivelyClub"> 
             <template #title>
                 <view>不活跃机构</view>
             </template>
@@ -16,7 +16,7 @@
                 <view>(6个月内未登录商城等行为)</view>
             </template>
         </analysis-card-item>
-        <analysis-card-item :isPercentage="true" :num="analysisInfo.noLivelyClub">
+        <analysis-card-item :isPercentage="true" :num="analysisInfo.livelyClubProportion">
             <template #title>
                 <view>活跃机构占比</view>
             </template>

+ 10 - 4
pages/seller/remarks/components/mine-card.vue

@@ -6,25 +6,25 @@
         <view class="card-contain">
             <view style="display: flex;">
                 <view class="card-head">
-                    <image src="https://static.caimei365.com/app/img/icon/default-head.png" mode="" class="head"></image>
+                    <image :src="userInfo.image || 'https://static.caimei365.com/app/img/icon/default-head.png'" mode="" class="head"></image>
                 </view>
                 <view class="card-info">
                     <view class="card-info-head">
                         <view class="card-name">
-                            未知
+                            {{userInfo.linkMan}}
                         </view>
                         <view class="card-info-tab">
                             客户经理
                         </view>
                     </view>
                     <view class="card-info-iphone">
-                        158-8958-6633
+                        {{ userInfo.contractMobile }}
                     </view>
                 </view>
             </view>
             <view class="card-qrcode">
                 <view class="qrcode-message">
-                    <image :show-menu-by-longpress="true" src="" class="qrcode" mode=""></image>
+                    <image :show-menu-by-longpress="true" :src="userInfo.qrCode || ''" class="qrcode" mode=""></image>
                 </view>
                 <view class="tips">
                     长按或扫二维码
@@ -37,6 +37,12 @@
 
 <script>
 export default {
+    props: {
+        userInfo: {
+            type: Object,
+            default: () => ({})
+        }
+    },
     data() {
         return {
             imgUrl: 'https://static.caimei365.com/app/img/icon/bg-card.png',

+ 40 - 2
pages/seller/remarks/institutional-activity-analysis.vue

@@ -66,8 +66,36 @@ export default {
                 }
             ],
             dataList: {},
-            clubList: [], // 机构列表
-            pageNum: 1
+            clubList: [{
+                name: 'ceshi机构',
+                activeState: '忠诚用户',
+                customerValue: '忠诚用户',
+                linkMan: 'ceshi',
+                contractMobile: '12654641'
+            },
+            {
+                name: 'ceshi机构',
+                activeState: '忠诚用户',
+                customerValue: '忠诚用户',
+                linkMan: 'ceshi',
+                contractMobile: '12654641'
+            },
+            {
+                name: 'ceshi机构',
+                activeState: '忠诚用户',
+                customerValue: '忠诚用户',
+                linkMan: 'ceshi',
+                contractMobile: '12654641'
+            },
+            {
+                name: 'ceshi机构',
+                activeState: '忠诚用户',
+                customerValue: '忠诚用户',
+                linkMan: 'ceshi',
+                contractMobile: '12654641'
+            }], // 机构列表
+            pageNum: 1,
+            isLastPage: true, // 是否是最后一页
         }
     },
     mounted() {
@@ -84,6 +112,13 @@ export default {
             }
         }
     },
+    onReachBottom() {
+        if (!this.isLastPage) {
+            this.pageNum++
+            this.getClubList()
+        }
+        console.log('触底刷新')
+    },
     methods: {
         handleChangeActive(e) {
             this.currentTab = e
@@ -158,6 +193,9 @@ export default {
 .analysis-list {
     padding: 38rpx 24rpx;
     box-sizing: border-box;
+    .list {
+        margin-top: 40rpx;
+    }
     .analysis-tabs {
         color: #666666;
         display: flex;

+ 14 - 2
pages/seller/remarks/mine-card.vue

@@ -1,6 +1,6 @@
 <template>
     <view class="mine-card">
-        <mine-card></mine-card>
+        <mine-card :userInfo="userInfo"></mine-card>
         <view class="tips">
             商城名片(方便买家在商城联系您)
         </view>
@@ -14,8 +14,20 @@ export default {
         MineCard,
     },
     data() {
-        return {}
+        return {
+            userInfo: {}
+        }
     },
+    mounted() {
+        this.userInfo = uni.getStorageSync('userInfo')
+        this.getUserInfo()
+    },
+    methods: {
+        async getUserInfo() {
+            const { data } = await this.SellerService.GetSellerHome({ userId: this.userInfo.userId })
+            this.userInfo = data
+        },
+    }
 }
 </script>
 

+ 50 - 15
pages/seller/remarks/mine-qrcode.vue

@@ -1,41 +1,71 @@
 <template>
     <view class="mine-qrcode">
-        <view class="handlerUpload">
-            <image src="" mode="" v-if="userInfo.qrcode"></image>
+        <view class="handlerUpload" @click="handlerUploadQrcode">
+            <image class="qrcode" :src="qrcode" mode="" v-if="qrcode"></image>
             <text v-else>
                 请点击上传二维码
             </text>
         </view>
-        <button class="upload">上传二维码</button>
+        <button class="upload" @click="handlerUploadQrcode">上传二维码</button>
         <button class="save-qrcode" :class="active && 'active'" @click="handlerSave">保存</button>
     </view>
 </template>
 
 <script>
+import { uploadFileImage } from '@/services/public.js'
 export default {
     data() {
         return {
             active: false,
-            userInfo: {
-                qrcode: ''
-            }
+            userInfo: {},
+            info: {},
+            qrcode: ''
         }
     },
     watch: {
-        'userInfo.qrcode': {
-            handler(val) {
-                if (val) {
-                    this.active = true
-                }
-            },
-            immediate: true,
-            deep: true
+        qrcode(val) {
+            if (val) {
+                this.active = true
+            }
         }
     },
+    mounted() {
+        this.userInfo = uni.getStorageSync('userInfo')
+        this.getUserInfo()
+    },
     methods: {
         handlerSave() {
             if (this.active) {
-                this.$api.navigateTo('/pages/seller/remarks/mine-card')
+                this.upload()
+                setTimeout(() => {
+                    this.$api.navigateTo('/pages/seller/remarks/mine-card')
+                }, 1000)
+            }
+        },
+        handlerUploadQrcode() {
+            uploadFileImage().then(res => {
+                this.$util.msg('请稍后')
+                this.qrcode = JSON.parse(res.data).data
+            })
+        },
+        async getUserInfo() {
+            const { data } = await this.SellerService.GetSellerHome({ userId: this.userInfo.userId })
+            this.userInfo = data
+            this.qrcode = data.qrCode
+        },
+        upload() {
+            if (this.qrcode) {
+                this.SellerService.updateSellerInfo({
+                    userId: this.userInfo.userId,
+                    image: this.userInfo.image,
+                    qrCode: this.qrcode
+                }).then(res => {
+                    this.getUserInfo()
+                    this.showActionSheet = false
+                    uni
+                })
+            } else {
+                this.$util.msg('请上传二维码图片')
             }
         }
     }
@@ -56,6 +86,11 @@ export default {
         color: #B2B2B2;
         font-size: 24rpx;
         border-radius: 16rpx;
+        .qrcode {
+            width: 420rpx;
+            height: 420rpx;
+            object-fit: contain;
+        }
     }
     .upload {
         margin: 101rpx auto 0 auto;

+ 1 - 0
pages/tabBar/home/index.vue

@@ -133,6 +133,7 @@ export default {
 	onLoad(options) {
         if (options.sellerUserId) {
             this.sellerUserId = options.sellerUserId
+            uni.setStorage('sellerUserId', options.sellerUserId)
         }
     },
     computed: {

+ 52 - 3
services/sellse.service.js

@@ -386,8 +386,7 @@ export default class SellerService {
 	    return this.AjaxService.post({ 
 	        url:'/user/wxacode', 
 	        data, 
-	        isLoading: true ,
-	           
+	        isLoading: true,
 	    })
     }
     /**
@@ -411,7 +410,7 @@ export default class SellerService {
         })
     }
     /**
-     * 更新协销信息
+     * 更新协销本人信息
      */
     updateSellerInfo(data = {}) {
         return this.AjaxService.get({
@@ -420,4 +419,54 @@ export default class SellerService {
             isLoading: true 
         })
     }
+    /**
+     * 协销消息通知
+     */
+    getSellerNotice(data = {}) {
+        return this.AjaxService.get({
+            url:'/user/login/auth/SpMessageList', 
+            data, 
+            isLoading: true 
+        })
+    }
+    /**
+     * 协销站内消息未读数
+     */
+    getSellerNoticeSpCount(data = {}) {
+        return this.AjaxService.get({
+            url:'/user/login/auth/SpCount', 
+            data, 
+            isLoading: true 
+        })
+    }
+    /**
+     * 协销站内消息清除标记
+     */
+    updateSpMessageAsRead(data = {}) {
+        return this.AjaxService.get({
+            url:'/user/login/auth/updateSpMessageAsRead', 
+            data, 
+            isLoading: true 
+        })
+    }
+    /**
+     * 机构访问列表
+     */
+    getVisitesClubList(data = {}) {
+        return this.AjaxService.get({
+            url:'/user/seller/getBehaviorRecordClub', 
+            data, 
+            isLoading: true 
+        })
+    }
+    /**
+     * 访问机构详情
+     */
+    getVisitesClubInfo(data = {}) {
+        return this.AjaxService.get({
+            url:'/user/seller/getBehaviorRecordclubFrom', 
+            data, 
+            isLoading: true 
+        })
+    }
 }

+ 7 - 4
store/index.js

@@ -5,7 +5,9 @@ import authorize from '../common/config/authorize.js'
 import * as caimeiApi from '@/common/config/caimeiApi.js'
 import ajaxService from '@/services/ajax.service.js'
 import UserService from '@/services/user.service.js'
+import SellerService from '@/services/sellse.service.js'
 const getUserService = new UserService(ajaxService)
+const getSellerService = new SellerService(ajaxService)
 Vue.use(Vuex)
 const store = new Vuex.Store({
     state: {
@@ -108,12 +110,13 @@ const store = new Vuex.Store({
                     })
                 })
         },
-        async updateSellerNoticeNum(state) { // 更新通知消息数量
+        async updateSellerNoticeNum(state) { // 更新协销通知消息数量
             const userInfo = await caimeiApi.getStorage()
-            const commonId = userInfo.clubId ? userInfo.clubId : 0
-            getUserService.getAuthClubCount({ commonId: commonId })
+            const commonId = userInfo.serviceProviderId ? userInfo.serviceProviderId : 0
+            console.log(userInfo, commonId)
+            getSellerService.getSellerNoticeSpCount({ commonId: commonId, messageType: 3 })
                 .then(response => {
-                    state.noticeNum = response.data.count
+                    state.noticeNum = response.data.accountCount
                     if (state.noticeNum >= 100) {
                         uni.setTabBarBadge({
                             index: 2,

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor