|                                                                                                                                                            |  | <template>  <view class="content">    <!-- 小程序环境使用web-view加载StPageFlip -->    <web-view       :src="webviewUrl"       @message="handleMessage"      class="webview-container"    ></web-view>        <!-- 控制按钮    <view class="controls">      <button @click="prevPage" :disabled="currentPage <= 0" class="control-btn">上一页</button>      <text class="page-info">{{ currentPage + 1 }} / {{ totalPages }}</text>      <button @click="nextPage" :disabled="currentPage >= totalPages - 1" class="control-btn">下一页</button>    </view> -->  </view></template>
<script>export default {    data() {        return {            // 当前页码
            currentPage: 0,            // 总页数
            totalPages: 6,            // webview URL - 需要部署到服务器或使用本地路径
            webviewUrl: 'https://hfllll.github.io/My/', // 请替换为实际的服务器地址
            // 本地测试可以使用: '/static/stpageflip.html'
        };    },    methods: {        // 处理来自webview的消息
        handleMessage(e) {            console.log('收到webview消息:', e.detail.data);            const data = e.detail.data[0]; // 小程序webview消息格式
                        if (data.type === 'pageFlip') {                this.currentPage = data.currentPage;                this.totalPages = data.totalPages;            } else if (data.type === 'stateChange') {                console.log('翻页状态变化:', data.state);                if (data.state === 'flipping') {                    uni.showToast({                        title: '翻页中',                        duration: 500,                        icon: 'none'                    });                }            }        },                // 上一页
        prevPage() {            this.sendMessageToWebview({                type: 'prevPage'            });        },                // 下一页
        nextPage() {            this.sendMessageToWebview({                type: 'nextPage'            });        },                // 跳转到指定页面
        turnToPage(pageNumber) {            this.sendMessageToWebview({                type: 'turnToPage',                pageNumber: pageNumber            });        },                // 向webview发送消息
        sendMessageToWebview(data) {            // 注意:小程序向webview发送消息需要特殊处理
            // 这里只是示例,实际可能需要其他方式
            console.log('向webview发送消息:', data);        }    },        onLoad() {        console.log('StPageFlip翻页组件加载完成');    }}</script>
<style lang="scss" scoped>page {    width: 100%;    height: 100%;}
.content {    width: 100%;    height: 100vh;    position: relative;    background: #f5f5f5;}
.webview-container {    width: 100%;    height: calc(100vh - 80px);}
.controls {    position: fixed;    bottom: 0;    left: 0;    right: 0;    height: 80px;    background: rgba(255, 255, 255, 0.95);    backdrop-filter: blur(10px);    display: flex;    align-items: center;    justify-content: space-between;    padding: 0 30px;    box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1);    z-index: 1000;}
.control-btn {    padding: 12px 24px;    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);    color: white;    border: none;    border-radius: 25px;    font-size: 16px;    font-weight: 500;    box-shadow: 0 4px 15px rgba(102, 126, 234, 0.3);    transition: all 0.3s ease;}
.control-btn:active {    transform: translateY(2px);    box-shadow: 0 2px 8px rgba(102, 126, 234, 0.3);}
.control-btn:disabled {    background: #bdc3c7;    color: #7f8c8d;    box-shadow: none;    transform: none;}
.page-info {    font-size: 16px;    font-weight: 500;    color: #2c3e50;    background: rgba(255, 255, 255, 0.8);    padding: 8px 16px;    border-radius: 20px;    border: 1px solid #e0e0e0;}</style>
 |