Преглед на файлове

Merge branch 'developer' of http://git.caimei365.com/caimei-repository/caimei-applets-caimei into developer

zhengjinyi преди 1 година
родител
ревизия
bb5be40e0b

+ 50 - 80
pages/goods/components/cm-product-doc.vue

@@ -50,8 +50,9 @@
                                 class="cm-video"
                                 ref="myVideo"
                                 :id="'myVideo' + index"
-                                :src="item.fileUrl"
+                                :src="myDecrypt([item.fileUrl])[0]"
                                 :style="videoStyle['myVideo' + index]"
+                                referrer-policy='origin'
                                 controls
                                 show-fullscreen-btn
                                 show-mute-btn
@@ -119,6 +120,7 @@
 
 <script>
 import { mapState } from 'vuex'
+import CryptoJS from '@/utils/crypto-js/crypto.js'
 export default {
     props: {
         product: {
@@ -179,7 +181,7 @@ export default {
                 false, // 正常访问
                 { text: '请登录后查看!', btn: '去登录', redirect: '/pages/login/login' },
                 { text: '请升级成为会员机构后方可查看!', btn: '去升级', redirect: '/pages/login/apply' },
-                { text: '请升级成为医美会员机构后方可查看!', btn: '去升级', redirect: '/pages/login/apply' },
+                { text: '医美资质机构可查看完整内容!', btn: '升级医美资质', redirect: '/pages/login/apply' },
                 { text: '需抵扣100采美豆方可查看!', btn: '去查看', redirect: 10 },
                 { text: '无权限查看!', btn: '确认' }
             ]
@@ -269,7 +271,7 @@ export default {
                 rh = (rw * h) / w
             }
             // 使用set向videoStyle添加样式信息
-            this.$set(this.videoStyle, e.currentTarget.id, `width:${rw}rpx;height:${rh}rpx;`)
+            this.$set(this.videoStyle, e.currentTarget.id, `width:${rw}rpx;height:${400}rpx;`)
         },
         // 视频播放
         handlePlayer(id, info) {
@@ -291,19 +293,7 @@ export default {
         },
         // 监听video时长
         onPlayVideo(e) {
-            console.log(e)
-            const allTime = parseInt((e.detail.duration % 3600) / 60) // 获取分钟
-            const inPlay = parseInt((e.detail.duration % 3600) / 60)
-            if (this.permission === 2 || this.permission === 4 || this.permission === 1) {
-                if (allTime >= 10 && 3 < inPlay) {
-                    this.handleStop(e.target.id)
-                    this.checkPermission()
-                }
-                if (allTime < 10) {
-                    this.handleStop(e.target.id)
-                    this.checkPermission()
-                }
-            }
+            this.checkPermission()
         },
         // 开始播放
         handelPlay(id) {
@@ -343,37 +333,17 @@ export default {
             if (info) {
                 this.GetStatisticsAddPv(1, info.archiveContentId)
             }
-            if (this.permission === 2 || this.permission === 4 || this.permission === 1) {
-                if (previewImageList.length >= 5) {
-                    if (index < 2) {
-                        uni.previewImage({
-                            current: index,
-                            indicator: 'number',
-                            urls: previewImageList,
-                            loop: true,
-                            success() {
-                                that.$emit('previewImage', true)
-                            }
-                        })
-                    } else {
-                        if (this.checkPermission()) return
-                    }
-                } else {
-                    if (this.checkPermission()) return
+            if (this.checkPermission()) return
+            const that = this
+            uni.previewImage({
+                current: index,
+                indicator: 'number',
+                urls: previewImageList,
+                loop: true,
+                success() {
+                    that.$emit('previewImage', true)
                 }
-            } else {
-                if (this.checkPermission()) return
-                const that = this
-                uni.previewImage({
-                    current: index,
-                    indicator: 'number',
-                    urls: previewImageList,
-                    loop: true,
-                    success() {
-                        that.$emit('previewImage', true)
-                    }
-                })
-            }
+            })
         },
         //用户权限校验拦截
         checkPermission() {
@@ -385,6 +355,27 @@ export default {
             this.showModal = true
             return -1
         },
+        myDecrypt(
+            word,
+            iv = CryptoJS.enc.Utf8.parse('caimei--20240103'),
+            key = CryptoJS.enc.Utf8.parse('caimei--20240103')
+        ) {
+            if (word) {
+                return word.map(e => {
+                    if (e) {
+                        const encryptedHexStr = CryptoJS.enc.Base64.parse(e)
+                        const srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr)
+                        const decrypt = CryptoJS.AES.decrypt(srcs, key, {
+                            iv,
+                            mode: CryptoJS.mode.CBC,
+                            padding: CryptoJS.pad.NoPadding
+                        })
+                        const decryptedStr = decrypt.toString(CryptoJS.enc.Utf8)
+                        return decryptedStr.toString()
+                    } else return ''
+                })
+            } else return []
+        },
         // modal 按钮点击
         handleModalClick(e) {
             // 点击确认按钮
@@ -445,35 +436,15 @@ export default {
         },
         // 文件预览
         previewFile(file) {
-            // if (this.checkPermission()) return
-            // // 获取文件后缀
-            // const index = file.fileName.lastIndexOf('.')
-            // const suffix = file.fileName.substring(index)
-            if (uni.getStorageSync('fileInfo')) {
-                uni.removeStorageSync('fileInfo')
-            }
-            if (file) {
-                this.GetStatisticsAddPv(1, file.archiveContentId)
-            }
-            uni.setStorageSync('fileInfo', file.content || '文章预览')
-            this.openDocument(file)
-            // if (suffix === '.doc' || suffix === '.ppt' || suffix === '.pptx' || suffix === '.docx') {
-            //     //先将链接缓存
-            //     uni.setStorageSync('openLink', file.htmlUrl)
-            //     this.openDocument(file.fileUrl)
-            //     // this.$api.navigateTo('/pages/h5/article/path?key=openLink&type=1')
-            // } else if (suffix === '.pdf') {
-            //     //先将链接缓存
-            //     uni.setStorageSync('openLink', file.fileUrl)
-            //     this.$api.navigateTo('/pages/h5/article/path?key=openLink&type=2')
-            // } else {
-            //     // 不支持的文件
-            //     return uni.showModal({
-            //         content: `${suffix}类型文件暂不支持预览`,
-            //         cancelColor: '#666',
-            //         confirmColor: '#FF5B00'
-            //     })
-            // }
+            if (this.checkPermission()) return
+            const link = this.myDecrypt([file.fileUrl])[0].split('?')[0] || ''
+            const domainUrl = process.env.NODE_ENV === 'development' ? 'https://material-b.caimei365.com' : 'https://material.caimei365.com'
+            const url = `${domainUrl}/preview?t=3&url=${link}&isSp=1`
+            uni.setStorageSync('databaseurl', url)
+            console.log(link, url)
+            uni.navigateTo({
+              	url: `/pages/h5/article/path?databaseurl=1`
+            })
         },
         // 打开文档
         openDocument(file) {
@@ -679,13 +650,12 @@ export default {
             color: #b2b2b2;
         }
         .cm-img-list {
-            display: flex;
-            justify-content: flex-start;
-            flex-wrap: wrap;
+            display: grid;
+            grid-template-columns: repeat(3, 1fr);
             &.cm-list {
                 image {
-                    width: 162rpx;
-                    height: 162rpx;
+                    width: 210rpx;
+                    height: 210rpx;
                     margin: 18rpx 18rpx 0 0;
                     box-sizing: border-box;
                     border-radius: 6rpx;

+ 4 - 0
pages/h5/article/path.vue

@@ -23,6 +23,10 @@
             if(option.link) {
                 this.activityPath = option.link
                 return
+            }
+            if (option.databaseurl) {
+                this.activityPath = uni.getStorageSync('databaseurl')
+                console.log(this.activityPath)
             }
             this.initPath(option)
 		},

+ 46 - 39
pages/seller/notice/components/notice-cell.vue

@@ -1,61 +1,68 @@
 <template name="notice-cell">
-	<!-- 通知消息 -->
-	<view>
-		<!-- 服务通知 -->
-		<template v-if="cellType === 1">
-			<view class="tui-notice-cell clearfix">
-				<view class="tui-cell-top">
-					<view class="cell-title"> {{ cell.shopTieredType | noticeUsersFilters }} </view>
-					<view class="cell-time"> {{ cell.time }} </view>
-				</view>
+    <!-- 通知消息 -->
+    <view>
+        <!-- 服务通知 -->
+        <template v-if="cellType === 1">
+            <view class="tui-notice-cell clearfix">
+                <view class="tui-cell-top">
+                    <view class="cell-title">{{ cell.shopTieredType | noticeUsersFilters }}</view>
+                    <view class="cell-time">{{ cell.time }}</view>
+                </view>
                 <view class="cell-info" v-if="cell.shopTieredType !== 7 && cell.shopTieredType !== 1">
                     <view class="club-cell">
-                        机构名称:<text>{{cell.name}}</text>
+                        机构名称:
+                        <text>{{ cell.name }}</text>
                     </view>
-                    <view class="club-cell">
-                        联系人:<text>{{cell.userName}}</text>
+                    <view class="club-cell" v-if="cell.shopTieredType <= 8">
+                        联系人:
+                        <text>{{ cell.userName }}</text>
                     </view>
-                    <view class="club-cell">
-                        手机号:<text>{{cell.mobile}}</text>
+                    <view class="club-cell" v-if="cell.shopTieredType <= 8">
+                        手机号:
+                        <text>{{ cell.mobile }}</text>
                     </view>
                     <view class="club-cell" v-if="cell.shopTieredType === 2">
-                        上一任销售:<text>{{cell.superUserName}}</text>
+                        上一任销售:
+                        <text>{{ cell.superUserName }}</text>
                     </view>
                     <view class="club-cell" v-if="cell.shopTieredType === 3">
-                        下一任销售:<text>{{cell.superUserName}}</text>
+                        下一任销售:
+                        <text>{{ cell.superUserName }}</text>
                     </view>
                 </view>
-               <view class="cell-info" v-if="cell.shopTieredType === 7">
-                    {{ noticeSellerUserText(cell) }}
-                </view>
-				<view class="tui-cell-content" v-if="cell.shopTieredType === 7"> 
-					关注点:{{cell.content}}
-				</view> 
-                <view class="tui-cell-content" v-if="cell.shopTieredType !== 7">
-                	{{ noticeSellerUserText(cell) }}
-                </view>
-                <view class="tui-cell-button" v-if="cell.shopTieredType === 2 || cell.shopTieredType === 4 || cell.shopTieredType === 7">
+                <view class="cell-info" v-if="cell.shopTieredType === 7 || cell.shopTieredType === 10">{{ noticeSellerUserText(cell) }}</view>
+                <view class="tui-cell-content" v-if="cell.shopTieredType === 7 || cell.shopTieredType === 10">关注点:{{ cell.content || '' }}</view>
+                <view class="tui-cell-content" v-if="cell.shopTieredType !== 7">{{ noticeSellerUserText(cell) }}</view>
+                <view
+                    class="tui-cell-button"
+                    v-if="
+                        cell.shopTieredType === 2 ||
+                            cell.shopTieredType === 4 ||
+                            cell.shopTieredType === 7 ||
+                            cell.shopTieredType === 10
+                    "
+                >
                     <button @click="$emit('trampInfo', cell)">立即查看</button>
                 </view>
-			</view>
-		</template>
-	</view>
+            </view>
+        </template>
+    </view>
 </template>
 
 <script>
 import { mapState, mapMutations } from 'vuex'
 import noticeMixins from '../mixins/notice.mixins.js'
 export default {
-	mixins: [noticeMixins],
-	name: 'notice-cell',
-	props: {
-		cellType:{
-			type:Number
-		},
-		cell: {
-			type: Object
-		}
-	},
+    mixins: [noticeMixins],
+    name: 'notice-cell',
+    props: {
+        cellType: {
+            type: Number
+        },
+        cell: {
+            type: Object
+        }
+    }
 }
 </script>
 

+ 71 - 0
pages/seller/notice/components/notice-server-tab.vue

@@ -0,0 +1,71 @@
+<template>
+    <view class="tabList">
+        <view
+            v-for="item in tabList"
+            :key="item.type"
+            class="tab"
+            @click="changeAct(item)"
+            :class="activeLink === item.type ? 'active' : ''"
+        >
+            {{ item.value }}
+        </view>
+    </view>
+</template>
+
+<script>
+export default {
+    props: {
+        value: {
+            type: String,
+            default: () => ''
+        }
+    },
+    data() {
+        return {
+            tabList: [
+                {
+                    type: '',
+                    value: '机构访问通知'
+                },
+                {
+                    type: '1',
+                    value: '内容库访问通知'
+                }
+            ],
+            activeLink: ''
+        }
+    },
+    methods: {
+        changeAct(item) {
+            this.activeLink = item.type
+            this.$emit('input', this.activeLink)
+        }
+    }
+}
+</script>
+
+<style scoped lang="scss">
+.tabList {
+    display: flex;
+    position: sticky;
+    top: 0;
+    left: 24rpx;
+    align-items: center;
+    z-index: 999;
+    .tab {
+        background-color: #fff;
+        white-space: nowrap;
+        text-align: center;
+        flex: 1;
+        padding: 10rpx;
+        margin-bottom: 24rpx;
+        font-size: 28rpx;
+        font-weight: bold;
+        box-sizing: border-box;
+        &.active {
+            color: #ff5800;
+            border-color: 1px solid #ff5800;
+        }
+    }
+}
+</style>

+ 120 - 91
pages/seller/notice/components/trajectory.vue

@@ -1,92 +1,121 @@
-<template>
-    <view class="trajectory">
-        <view class="title">访问轨迹</view>
-        <time-axis v-for="item in trajectoryList" :key="item.userID">
-            <template #title>
-                <text>{{item.accessTime}}(停留时长{{ item.accessDuration }})</text>
-            </template>
-            <template #content>
-                <view class="time-axis-content">
-                    <image :src="item.titleImage || '../../../../static/temp/icon-new@2x.png'" class="axis-product" mode=""></image>
-                    <view class="axis-product-info">
-                        <view class="product-title">【{{item.pageType | pageTypeChange}}】</view>
-                        <view class="product-info" v-if="item.title">{{item.title}}</view>
-                    </view>
-                </view>
-            </template>
-        </time-axis>
-    </view>
-</template>
-
-<script>
-import TimeAxis from './time-axis.vue'
-export default {
-    props: {
-        trajectoryList: {
-            type: Array,
-            default: () => ([])
-        }
-    },
-    components: {
-        TimeAxis
-    },
-    filters: {
-        pageTypeChange(val) {
-            const obj = {
-                '6': '商品',
-                '11': '文章',
-                '8': '搜索记录'
-            }
-            return obj[val]
-        }
-    },
-    data() {
-        return {}
-    }
-}
-</script>
-
-<style lang="scss">
-.trajectory {
-    margin: 24rpx auto;
-    width: 702rpx;
-    background-color: #fff;
-    border-radius: 16rpx;
-    padding: 40rpx 32rpx;
-    box-sizing: border-box;
-    .title {
-        color: #333333;
-        font-size: 28rpx;
-        font-weight: bold;
-        margin-bottom: 30rpx;
-    }
-}
-.axis-product {
-    width: 136rpx;
-    height: 136rpx;
-    object-fit: contain;
-}
-.axis-product-info {
-    display: flex;
-    flex-direction: column;
-    height: 136rpx;
-    width: 426rpx;
-    color: #333333;
-    font-size: 26rpx;
-    margin-left: 24rpx;
-    .product-info {
-        margin-top: 16rpx;
-        overflow: hidden;
-        -webkit-line-clamp: 2;
-        text-overflow: ellipsis;
-        display: -webkit-box;
-        -webkit-box-orient: vertical;
-        height: 73rpx;
-        width: 426rpx;
-    }
-}
-.time-axis-content {
-    display: flex;
-    align-items: center;
-}
+<template>
+    <view class="trajectory">
+        <view class="title">访问轨迹</view>
+        <time-axis v-for="item,index in trajectoryList" :key="index">
+            <template #title>
+                <text>{{ item.accessTime }}(停留时长{{ item.accessDuration }})</text>
+            </template>
+            <template #content>
+                <view class="time-axis-content" @click.native="handleLink(item)">
+                    <image
+                        :src="fileType(item)"
+                        class="axis-product"
+                        mode=""
+                    ></image>
+                    <view class="axis-product-info">
+                        <view class="product-title">【{{ item.pageType | pageTypeChange }}】</view>
+                        <view class="product-info" v-if="item.title">{{ item.title }}</view>
+                    </view>
+                </view>
+            </template>
+        </time-axis>
+    </view>
+</template>
+
+<script>
+import TimeAxis from './time-axis.vue'
+export default {
+    props: {
+        trajectoryList: {
+            type: Array,
+            default: () => []
+        }
+    },
+    components: {
+        TimeAxis
+    },
+    filters: {
+        pageTypeChange(val) {
+            const obj = {
+                '6': '商品',
+                '11': '文章',
+                '8': '搜索记录',
+                '69': '文件',
+                '70': '图片',
+                '71': '视频'
+            }
+            return obj[val]
+        },
+    },
+    data() {
+        return {}
+    },
+    methods: {
+        handleLink(item) {
+            if (Number(item.pageType) >= 69) {
+                console.log(item.pagePath)
+                uni.setStorageSync('databaseurl', item.pagePath)
+                uni.navigateTo({
+                    url: `/pages/h5/article/path?databaseurl=1`
+                })
+            }
+        },
+        fileType(item) {
+            if (item.titleImage) return item.titleImage
+            if (item.title && Number(item.pageType) === 69) {
+                return item.title?.indexOf('.pdf') !== -1
+                    ? 'https://static.caimei365.com/app/mini-database/H5-pdf.png'
+                    : item.title?.indexOf('.docx') !== -1
+                    ? 'https://static.caimei365.com/app/mini-database/H5-doc.png'
+                    : 'https://static.caimei365.com/app/mini-database/H5-ppt.png'
+            }
+            else return '../../../../static/temp/icon-new@2x.png'
+        }
+    }
+}
+</script>
+
+<style lang="scss">
+.trajectory {
+    margin: 24rpx auto;
+    width: 702rpx;
+    background-color: #fff;
+    border-radius: 16rpx;
+    padding: 40rpx 32rpx;
+    box-sizing: border-box;
+    .title {
+        color: #333333;
+        font-size: 28rpx;
+        font-weight: bold;
+        margin-bottom: 30rpx;
+    }
+}
+.axis-product {
+    width: 136rpx;
+    height: 136rpx;
+    object-fit: contain;
+}
+.axis-product-info {
+    display: flex;
+    flex-direction: column;
+    height: 136rpx;
+    width: 426rpx;
+    color: #333333;
+    font-size: 26rpx;
+    margin-left: 24rpx;
+    .product-info {
+        margin-top: 16rpx;
+        overflow: hidden;
+        -webkit-line-clamp: 2;
+        text-overflow: ellipsis;
+        display: -webkit-box;
+        -webkit-box-orient: vertical;
+        height: 73rpx;
+        width: 426rpx;
+    }
+}
+.time-axis-content {
+    display: flex;
+    align-items: center;
+}
 </style>

+ 2 - 2
pages/seller/notice/components/visits-cell.vue

@@ -2,10 +2,10 @@
     <view class="visits-cell" @click="$emit('handlerVisits', visitsInfo)">
         <view class="visits-club">
             <image :src="visitsInfo.image || '/static/icon-user-active@3x.png'" mode="" class="visits-author"></image>
-            <view>{{visitsInfo.name}}</view>
+            <view>{{visitsInfo.name || '游客'}}</view>
         </view>
         <view class="visits-content">
-            <view class="container">
+            <view class="container" v-if="visitsInfo.linkMan && visitsInfo.contractMobile">
                 <view class="visits-name">
                     {{ visitsInfo.linkMan }}
                 </view>

+ 6 - 2
pages/seller/notice/mixins/notice.mixins.js

@@ -8,7 +8,9 @@ const noticeMixins = {
                3: '机构转移通知',
                4: '机构分配通知',
                7: '机构访问通知',
-               8: '机构回收通知'
+               8: '机构回收通知',
+               9: '客户注册通知',
+               10: '客户访问通知'
            }
            return map[value]
        },
@@ -21,7 +23,9 @@ const noticeMixins = {
                 3: '系统已将你的机构转移给其他销售人员,你已无权管理该客户。',
                 4: '系统已为你分配机构客户,请及时跟进。',
                 7: `昨日【${cell.name}...】等${cell.sum}家机构客户访问了采美商城`,
-                8: '系统已将你的机构客户进行回收,你已无权管理该客户。'
+                8: '系统已将你的机构客户进行回收,你已无权管理该客户。',
+                9: `昨日【${cell.name}...】通过您的内容库资料分享注册成为了机构客户`,
+                10: `昨日【${cell.name}...】等${cell.sum}家机构客户访问了您的内容库资料分享`
             }
             return map[cell.shopTieredType]
         },

+ 14 - 8
pages/seller/notice/service/Institutional_visits.vue

@@ -22,17 +22,22 @@ export default {
         return {
             visitsList: [],
             accDateTime: '',
-            spId: ''
+            spId: '',
+            type: ''
         }
     },
     async onLoad(options) {
         this.spId = options.spId
         const { data } = await this.SellerService.getVisitesClubList({
             spId: options.spId,
-            accDateTime: options.accDateTime
+            accDateTime: options.accDateTime,
+            type: options.type || ''
         })
         this.visitsList = data
-        this.accDateTime = data[0].accessDate
+        this.accDateTime = options.accDateTime
+        if (options.type) {
+            this.type = options.type || ''
+        }
 		console.log('options', options, 'visitsList', data)
     },
     onReachBottom() {
@@ -47,16 +52,17 @@ export default {
             this.$api.navigateTo(
                 '/pages/seller/notice/service/visits_details?spId=' +
                     this.spId +
-                    '&clubId=' +
-                    $event.clubId +
+                '&clubId=' +
+                    ($event.clubId || '') +
                     '&accessTime=' +
-                    $event.accessTime.substr(0, 10)
+                    this.accDateTime + '&type=' + this.type
             )
         },
 		async getVisitesClubList() {
 			const { data } = await this.SellerService.getVisitesClubList({
-			    spId: options.spId,
-			    accDateTime: options.accDateTime
+			    spId: this.spId,
+			    accDateTime: this.accDateTime,
+                type: this.type
 			})
 			this.visitsList = data
 			console.log('visitsList', this.visitsList)

+ 24 - 12
pages/seller/notice/service/service.vue

@@ -7,7 +7,8 @@
             :isLoading="true"
             :loadingType="5"
         ></tui-skeleton>
-        <view class="container">
+        <view class="container">
+            <tab-list v-model="params.type" />
             <view v-for="(cell, index) in messageList" class="info-card" :key="index">
                 <view class="tui-notice clearfix">
                     <tui-swipe-action :operateWidth="80" :backgroundColor="'#F7F7F7'">
@@ -29,11 +30,13 @@
 </template>
 
 <script>
-import { mapState, mapMutations } from 'vuex'
+import { mapState, mapMutations } from 'vuex'
+import tabList from '../components/notice-server-tab.vue'
 import noticeCell from '../components/notice-cell.vue'
 export default {
     components: {
-        noticeCell
+        noticeCell,
+        tabList
     },
     data() {
         return {
@@ -43,15 +46,25 @@ export default {
                 pageNum: 1,
                 pageSize: 10,
                 source: 2,
-                commonId: ''
+                commonId: '',
+                type: ''
             },
             messageList: [], // 信息列表
             userInfo: {},
-            isLastPage: false, //  是否是最后一页
+            isLastPage: false, //  是否是最后一页
+            showDataBase: false
         }
-    },
-    mounted() {
-        this.getMessageList({isRefresh: false})
+    },
+    watch: {
+        'params.type': {
+            handler(val) {
+                this.messageList = []
+                this.getMessageList({ isRefresh: true })
+            }
+        }
+    },
+    mounted() {
+        this.getMessageList({ isRefresh: false })
     },
     methods: {
         // 请求信息列表
@@ -87,16 +100,16 @@ export default {
         // 详情
         async trampInfo($event) {
             const time = $event.time.replace(/[年月日]/g, '-')
-            if ($event.shopTieredType === 7) {
+            if ($event.shopTieredType === 7 || $event.shopTieredType === 10) {
                 this.$api.navigateTo(
                     '/pages/seller/notice/service/Institutional_visits?spId=' +
                         this.userInfo.serviceProviderId +
                         '&accDateTime=' +
-                        time.substr(0, 10)
+                        $event.time + '&type=' + this.params.type
                 )
             } else {
                 const {data} = await this.SellerService.getFindUserId({id: $event.clubId, userType: 1})
-                this.$api.navigateTo('/pages/seller/club/club-portrait?userId=' + data.data)
+                this.$api.navigateTo('/pages/seller/club/club-portrait?userId=' + data)
             }
         }
     },
@@ -117,7 +130,6 @@ export default {
 
 <style scopde lang="scss">
 .container {
-    padding: 24rpx;
     box-sizing: border-box;
 }
 .info-card {

+ 26 - 16
pages/seller/notice/service/visits_details.vue

@@ -4,9 +4,7 @@
         <template>
             <view class="details-title"><visits-cell @handlerVisits="handlerVisits" :visits-info="visitsInfo" /></view>
         </template>
-        <view class="trajectory">
-            <Trajectory :trajectory-list="detailList"/>
-        </view>
+        <view class="trajectory"><Trajectory :trajectory-list="detailList" /></view>
     </view>
 </template>
 
@@ -23,24 +21,31 @@ export default {
             visitsInfo: {},
             accessTime: '', // 访问日期
             spId: '', // 协销id
-            clubId: '' ,// 机构id
-            detailList: []
+            clubId: '', // 机构id
+            detailList: [],
+            type: '',
         }
     },
     async onLoad(options) {
         this.accessTime = options.accessTime
         this.spId = options.spId
-        this.clubId = options.clubId
-		const { data } = await this.SellerService.getVisitesClubInfo({accessTime: options.accessTime, spId: options.spId, clubId: options.clubId})
-		this.detailList = data
-		this.visitsInfo = {
-		    image: data[0].image,
-		    linkMan: data[0].linkMan,
-		    contractMobile: data[0].contractMobile,
-		    pageLabel: data[0].pageLabel,
+        this.clubId = options.clubId
+        this.type = options.type
+        const { data } = await this.SellerService.getVisitesClubInfo({
+            accessTime: options.accessTime,
+            spId: options.spId,
+            clubId: options.clubId || '',
+            type: options.type || ''
+        })
+        this.detailList = data
+        this.visitsInfo = {
+            image: data[0].image,
+            linkMan: data[0].linkMan,
+            contractMobile: data[0].contractMobile,
+            pageLabel: data[0].pageLabel,
             name: data[0].name
-		}
-		console.log('options', options, 'visitsInfo', data, '详情', this.visitsInfo)
+        }
+        console.log('options', options, 'visitsInfo', data, '详情', this.visitsInfo)
     },
     mounted() {
         this.getVisitesClubDetail()
@@ -48,7 +53,12 @@ export default {
     methods: {
         handlerVisits($event) {},
         async getVisitesClubDetail() {
-            const {data} = await this.SellerService.getVisitesClubInfo({accessTime: this.accessTime, spId: this.spId, clubId: this.clubId})
+            const { data } = await this.SellerService.getVisitesClubInfo({
+                accessTime: this.accessTime,
+                spId: this.spId,
+                clubId: this.clubId,
+                type: this.type
+            })
             this.detailList = data
             this.visitsInfo = {
                 image: data[0].image,

Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
utils/crypto-js/crypto.js


Някои файлове не бяха показани, защото твърде много файлове са промени