| | |
| | | </view> |
| | | </view> |
| | | |
| | | <!-- 访客列表 --> |
| | | <scroll-view scroll-y="true" class="visitor-list" @scrolltolower="loadMore"> |
| | | <view v-if="visitors.length > 0"> |
| | | <view class="visitor-item" v-for="(visitor, index) in visitors" :key="index"> |
| | | <image class="visitor-avatar" :src="visitor.avatar || '/static/default.png'" mode="aspectFill"></image> |
| | | <view class="visitor-info"> |
| | | <view class="visitor-header"> |
| | | <view class="visitor-name">{{visitor.user_name || '未知访客'}}</view> |
| | | <view class="visitor-time">{{formatTime(visitor.visit_time)}}</view> |
| | | </view> |
| | | <view v-if="visitor.company_name" class="visitor-company">{{visitor.company_name}}</view> |
| | | <view v-if="visitor.position" class="visitor-position">{{visitor.position}}</view> |
| | | <view class="visitor-action"> |
| | | <view class="action-btn" @click="viewCard(visitor.business_card_id)"> |
| | | <text class="icon iconfont icon-card"></text> |
| | | <text>查看名片</text> |
| | | <!-- 访客列表 --> |
| | | <scroll-view scroll-y="true" :width="screenWidth" class="visitor-list" @scrolltolower="loadMore"> |
| | | <view v-if="visitors.length > 0"> |
| | | <view class="visitor-item" v-for="(visitor, index) in visitors" :key="index"> |
| | | <image class="visitor-avatar" :src="visitor.avatar || '/static/default.png'" mode="aspectFill"> |
| | | </image> |
| | | <view class="visitor-info"> |
| | | <view class="visitor-header"> |
| | | <view class="visitor-name">{{visitor.user_name || '未知访客'}}</view> |
| | | <view class="visitor-time">{{formatTime(visitor.visit_time)}}</view> |
| | | </view> |
| | | <view class="action-btn" @click="contactVisitor(visitor)"> |
| | | <text class="icon iconfont icon-message"></text> |
| | | <text>联系访客</text> |
| | | <view v-if="visitor.company_name" class="visitor-company">{{visitor.company_name}}</view> |
| | | <view v-if="visitor.position" class="visitor-position">{{visitor.position}}</view> |
| | | <view class="visitor-action"> |
| | | <view class="action-btn" @click="viewCard(visitor.business_card_id)"> |
| | | <text class="icon iconfont icon-card"></text> |
| | | <text>查看名片</text> |
| | | </view> |
| | | <view class="action-btn" @click="contactVisitor(visitor)"> |
| | | <text class="icon iconfont icon-message"></text> |
| | | <text>联系访客</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <!-- 无数据提示 --> |
| | | <view v-else-if="!loading" class="no-data"> |
| | | <text class="icon iconfont icon-wushuju"></text> |
| | | <text class="text">暂无访客记录</text> |
| | | </view> |
| | | <!-- 无数据提示 --> |
| | | <view v-else-if="!loading" class="no-data"> |
| | | <text class="icon iconfont icon-wushuju"></text> |
| | | <text class="text">暂无访客记录</text> |
| | | </view> |
| | | |
| | | <!-- 加载中 --> |
| | | <view v-if="loading && visitors.length > 0" class="loading-more"> |
| | | <text>加载中...</text> |
| | | </view> |
| | | <!-- 加载中 --> |
| | | <view v-if="loading && visitors.length > 0" class="loading-more"> |
| | | <text>加载中...</text> |
| | | </view> |
| | | |
| | | <!-- 无更多数据 --> |
| | | <view v-if="!hasMore && visitors.length > 0" class="no-more"> |
| | | <text>没有更多了</text> |
| | | </view> |
| | | </scroll-view> |
| | | </view> |
| | | <!-- 无更多数据 --> |
| | | <view v-if="!hasMore && visitors.length > 0" class="no-more"> |
| | | <text>没有更多了</text> |
| | | </view> |
| | | </scroll-view> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | |
| | | page: 1, |
| | | list_rows: 10, |
| | | hasMore: true, |
| | | search: '' |
| | | search: '', |
| | | screenWidth: 0, // 屏幕宽度 |
| | | }; |
| | | }, |
| | | onLoad() { |
| | | this.getVisitors(); |
| | | const systemInfo = uni.getSystemInfoSync() |
| | | this.screenWidth = systemInfo.screenWidth * 2 - 70; |
| | | }, |
| | | methods: { |
| | | back() { |