panhui пре 5 година
родитељ
комит
a984a1a1bb

+ 1 - 1
.env.development

@@ -1,4 +1,4 @@
-VUE_APP_BASE_URL=http://192.168.50.104:8080
+VUE_APP_BASE_URL=http://localhost:8080
 VUE_APP_PHONE=862160797117
 VUE_APP_EMAIL=imttech@itoc.com.cn
 VUE_APP_PRODUCTSTATUS=PENDING_REVIEW,NOW_ON_SHELF

+ 36 - 2
src/components/News/Grid.vue

@@ -2,7 +2,9 @@
     <div class="news-grid news" @click="navigateTo('/pagesNews/Detail?id=' + info.id, false)">
         <van-image :src="info.img" fit="cover" height="490rpx" custom-class="my-img" />
         <div class="news-grid-info" v-if="info.type !== 'TECHNICAL_INFORMATION'">
-            <div class="text1">{{ info.title }}</div>
+            <div class="text1">
+                <van-tag type="warning" v-if="isList && info.top">置顶</van-tag><span>{{ info.title }}</span>
+            </div>
             <div class="activity" v-if="isActivity">
                 <div class="activity-info">
                     <van-icon name="http://imttech.oss-cn-hangzhou.aliyuncs.com/micro/iocn_didian.png" />
@@ -41,7 +43,8 @@
         </div>
         <div class="news-info-only" v-else>
             <div class="text">
-                {{ info.title }}
+                <van-tag type="warning" v-if="isList && info.top">置顶</van-tag>
+                <span>{{ info.title }}</span>
             </div>
         </div>
     </div>
@@ -62,6 +65,10 @@ export default {
         activityId: {
             type: Number,
             default: 0
+        },
+        isList: {
+            type: Boolean,
+            default: false
         }
     },
     data() {
@@ -136,6 +143,33 @@ export default {
         }
     }
 }
+
+.text {
+    ._van-tag {
+        vertical-align: middle;
+        height: 16px;
+        display: inline-block;
+        margin-right: 3px;
+        line-height: 32rpx;
+        --tag-warning-color: #ef8207;
+    }
+    span {
+        vertical-align: middle;
+    }
+}
+.text1 {
+    ._van-tag {
+        vertical-align: middle;
+        height: 16px;
+        display: inline-block;
+        margin-right: 3px;
+        line-height: 32rpx;
+        --tag-warning-color: #ef8207;
+    }
+    span {
+        vertical-align: middle;
+    }
+}
 </style>
 <style lang="less">
 .my-img {

+ 28 - 1
src/components/News/Row.vue

@@ -2,7 +2,10 @@
     <div class="news" @click="navigateTo('/pagesNews/Detail?id=' + info.id, false)">
         <van-image :src="info.img" fit="cover" width="280rpx" height="200rpx" custom-class="my-img" />
         <div class="news-info">
-            <div class="text1">{{ info.title }}</div>
+            <div class="text1">
+                <van-tag type="warning" v-if="isList && info.top">置顶</van-tag>
+                <span> {{ info.title }}</span>
+            </div>
             <p v-if="info.type === 'INDUSTRY_NEWS'">{{ info.createdAt }}</p>
         </div>
     </div>
@@ -15,6 +18,10 @@ export default {
             default: () => {
                 return {};
             }
+        },
+        isList: {
+            type: Boolean,
+            default: false
         }
     },
     data() {
@@ -40,6 +47,12 @@ export default {
             font-size: 16px;
             color: #000000;
             line-height: 24px;
+            ._van-tag {
+                vertical-align: middle;
+            }
+            span {
+                vertical-align: middle;
+            }
         }
 
         p {
@@ -51,6 +64,20 @@ export default {
     //     background-color: darken(#fff, 10);
     // }
 }
+
+.text1 {
+    ._van-tag {
+        vertical-align: middle;
+        height: 16px;
+        display: inline-block;
+        margin-right: 3px;
+        line-height: 32rpx;
+        --tag-warning-color: #ef8207;
+    }
+    span {
+        vertical-align: middle;
+    }
+}
 </style>
 <style lang="less">
 .my-img {

+ 3 - 2
src/main.js

@@ -41,7 +41,7 @@ Vue.i18n.set('zh');
 
 Vue.prototype.$store = store;
 
-Vue.prototype.$toast = function(title, icon) {
+Vue.prototype.$toast = function (title, icon) {
     if (!icon) {
         icon = 'none';
     }
@@ -56,7 +56,7 @@ function $loading(title) {
         title: title || ''
     });
 }
-$loading.close = function() {
+$loading.close = function () {
     wx.hideLoading();
 };
 Vue.prototype.$loading = $loading;
@@ -171,6 +171,7 @@ export default {
         },
         usingComponents: {
             robot: '/native/robot/index',
+            'mine-node': 'native/mineNode/index',
             'van-button': '/native/vant/button/index',
             'van-tabs': '/native/vant/tabs/index',
             'van-tab': '/native/vant/tab/index',

+ 15 - 0
src/native/mineNode/index.js

@@ -0,0 +1,15 @@
+const componentOptions = {
+    // 组件选项
+    options: {
+        multipleSlots: true
+    },
+    behaviors: [],
+    properties: {
+        htmlData: {
+            type: Array,
+            value: []
+        }
+    },
+};
+
+Component(componentOptions);

+ 3 - 0
src/native/mineNode/index.json

@@ -0,0 +1,3 @@
+{
+  "component": true
+}

+ 969 - 0
src/native/mineNode/index.wxml

@@ -0,0 +1,969 @@
+<!-- 基础元素 -->
+<template name="octoParseVideo">
+    <!-- 增加video标签支持,并循环添加 -->
+    <view class="{{item.classStr}} octoParse-{{item.tag}}" style="{{item.styleStr}}">
+        <video class="{{item.classStr}} octoParse-{{item.tag}}-video" src="{{item.attr.src}}"></video>
+    </view>
+</template>
+<template name="octoParseImg">
+    <image data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="{{item.classStr}} octoParse-{{item.tag}}" data-from="{{item.from}}" data-src="{{item.attr.src}}" data-idx="{{item.imgIndex}}" src="{{item.attr.src}}" mode="widthFix" style="{{item.styleStr}}" />
+</template>
+<template name="WxTextView">
+    <view class="WxTextView octoParse-inline" style="{{item.styleStr}}">{{item.text}}</view>
+</template>
+<template name="octoParseBr">
+    <text>\n</text>
+</template>
+<!-- 入口模版 -->
+<template name="octoParse">
+    <block wx:for="{{nodes}}" wx:key="index">
+        <template is="octoParse0" data="{{item}}" />
+    </block>
+</template>
+<!-- 循环模版 -->
+<template name="octoParse0">
+    <!-- <template is="octoParse1" data="{{item}}" /> -->
+    <!-- 判断是否是标签节点 -->
+    <block wx:if="{{item.node == 'element'}}">
+        <block wx:if="{{item.tag == 'button'}}">
+            <button type="default" size="mini">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse1" data="{{item}}" />
+                </block>
+            </button>
+        </block>
+        <!-- li类型 -->
+        <block wx:elif="{{item.tag == 'li'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="{{item.classStr}} octoParse-li" style="{{item.styleStr}}">
+                <view class="{{item.classStr}} octoParse-li-inner">
+                    <view class="{{item.classStr}} octoParse-li-text">
+                        <view class="{{item.classStr}} octoParse-li-circle"></view>
+                    </view>
+                    <view class="{{item.classStr}} octoParse-li-text">
+                        <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                            <template is="octoParse1" data="{{item}}" />
+                        </block>
+                    </view>
+                </view>
+            </view>
+        </block>
+        <!-- video类型 -->
+        <block wx:elif="{{item.tag == 'video'}}">
+            <template is="octoParseVideo" data="{{item}}" />
+        </block>
+        <!-- img类型 -->
+        <block wx:elif="{{item.tag == 'img'}}">
+            <template is="octoParseImg" data="{{item}}" />
+        </block>
+        <!-- a类型 -->
+        <block data-tag="{{item.tag}}" wx:elif="{{item.tag == 'a'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="octoParse-inline {{item.classStr}} octoParse-{{item.tag}}" data-src="{{item.attr.href}}" style="{{item.styleStr}}">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse1" data="{{item}}" />
+                </block>
+            </view>
+        </block>
+        <block wx:elif="{{item.tag == 'table'}}">
+            <view class="{{item.classStr}} octoParse-{{item.tag}}" style="{{item.styleStr}}">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse1" data="{{item}}" />
+                </block>
+            </view>
+        </block>
+        <block wx:elif="{{item.tag == 'br'}}">
+            <template is="octoParseBr"></template>
+        </block>
+        <!-- 其他块级标签 -->
+        <block data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" wx:elif="{{item.tagType == 'block'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="{{item.classStr}} octoParse-{{item.tag}}" style="{{item.styleStr}}">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse1" data="{{item}}" />
+                </block>
+            </view>
+        </block>
+        <!-- 内联标签 -->
+        <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" wx:else class="{{item.classStr}} octoParse-{{item.tag}} octoParse-{{item.tagType}}" style="{{item.styleStr}}">
+            <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                <template is="octoParse1" data="{{item}}" />
+            </block>
+        </view>
+    </block>
+    <!-- 判断是否是文本节点 -->
+    <block wx:elif="{{item.node == 'text'}}">
+        <!-- 如果是,直接进行 -->
+        <template is="WxTextView" data="{{item}}" />
+    </block>
+</template>
+<!-- 循环模版 -->
+<template name="octoParse1">
+    <!-- <template is="octoParse2" data="{{item}}" /> -->
+    <!-- 判断是否是标签节点 -->
+    <block wx:if="{{item.node == 'element'}}">
+        <block wx:if="{{item.tag == 'button'}}">
+            <button type="default" size="mini">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse2" data="{{item}}" />
+                </block>
+            </button>
+        </block>
+        <!-- li类型 -->
+        <block wx:elif="{{item.tag == 'li'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="{{item.classStr}} octoParse-li" style="{{item.styleStr}}">
+                <view class="{{item.classStr}} octoParse-li-inner">
+                    <view class="{{item.classStr}} octoParse-li-text">
+                        <view class="{{item.classStr}} octoParse-li-circle"></view>
+                    </view>
+                    <view class="{{item.classStr}} octoParse-li-text">
+                        <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                            <template is="octoParse2" data="{{item}}" />
+                        </block>
+                    </view>
+                </view>
+            </view>
+        </block>
+        <!-- video类型 -->
+        <block wx:elif="{{item.tag == 'video'}}">
+            <template is="octoParseVideo" data="{{item}}" />
+        </block>
+        <!-- img类型 -->
+        <block wx:elif="{{item.tag == 'img'}}">
+            <template is="octoParseImg" data="{{item}}" />
+        </block>
+        <!-- a类型 -->
+        <block wx:elif="{{item.tag == 'a'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="octoParse-inline {{item.classStr}} octoParse-{{item.tag}}" data-src="{{item.attr.href}}" style="{{item.styleStr}}">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse2" data="{{item}}" />
+                </block>
+            </view>
+        </block>
+        <block wx:elif="{{item.tag == 'br'}}">
+            <template is="octoParseBr"></template>
+        </block>
+        <!-- 其他块级标签 -->
+        <block data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" wx:elif="{{item.tagType == 'block'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="{{item.classStr}} octoParse-{{item.tag}}" style="{{item.styleStr}}">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse2" data="{{item}}" />
+                </block>
+            </view>
+        </block>
+        <!-- 内联标签 -->
+        <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" wx:else class="{{item.classStr}} octoParse-{{item.tag}} octoParse-{{item.tagType}}" style="{{item.styleStr}}">
+            <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                <template is="octoParse2" data="{{item}}" />
+            </block>
+        </view>
+    </block>
+    <!-- 判断是否是文本节点 -->
+    <block wx:elif="{{item.node == 'text'}}">
+        <!-- 如果是,直接进行 -->
+        <template is="WxTextView" data="{{item}}" />
+    </block>
+</template>
+<!-- 循环模版 -->
+<template name="octoParse2">
+    <!-- <template is="octoParse3" data="{{item}}" /> -->
+    <!-- 判断是否是标签节点 -->
+    <block wx:if="{{item.node == 'element'}}">
+        <block wx:if="{{item.tag == 'button'}}">
+            <button type="default" size="mini">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse3" data="{{item}}" />
+                </block>
+            </button>
+        </block>
+        <!-- li类型 -->
+        <block wx:elif="{{item.tag == 'li'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="{{item.classStr}} octoParse-li" style="{{item.styleStr}}">
+                <view class="{{item.classStr}} octoParse-li-inner">
+                    <view class="{{item.classStr}} octoParse-li-text">
+                        <view class="{{item.classStr}} octoParse-li-circle"></view>
+                    </view>
+                    <view class="{{item.classStr}} octoParse-li-text">
+                        <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                            <template is="octoParse3" data="{{item}}" />
+                        </block>
+                    </view>
+                </view>
+            </view>
+        </block>
+        <!-- video类型 -->
+        <block wx:elif="{{item.tag == 'video'}}">
+            <template is="octoParseVideo" data="{{item}}" />
+        </block>
+        <!-- img类型 -->
+        <block wx:elif="{{item.tag == 'img'}}">
+            <template is="octoParseImg" data="{{item}}" />
+        </block>
+        <!-- a类型 -->
+        <block wx:elif="{{item.tag == 'a'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="octoParse-inline {{item.classStr}} octoParse-{{item.tag}}" data-src="{{item.attr.href}}" style="{{item.styleStr}}">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse3" data="{{item}}" />
+                </block>
+            </view>
+        </block>
+        <block wx:elif="{{item.tag == 'br'}}">
+            <template is="octoParseBr"></template>
+        </block>
+        <!-- 其他块级标签 -->
+        <block data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" wx:elif="{{item.tagType == 'block'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="{{item.classStr}} octoParse-{{item.tag}}" style="{{item.styleStr}}">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse3" data="{{item}}" />
+                </block>
+            </view>
+        </block>
+        <!-- 内联标签 -->
+        <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" wx:else class="{{item.classStr}} octoParse-{{item.tag}} octoParse-{{item.tagType}}" style="{{item.styleStr}}">
+            <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                <template is="octoParse3" data="{{item}}" />
+            </block>
+        </view>
+    </block>
+    <!-- 判断是否是文本节点 -->
+    <block wx:elif="{{item.node == 'text'}}">
+        <!-- 如果是,直接进行 -->
+        <template is="WxTextView" data="{{item}}" />
+    </block>
+</template>
+<!-- 循环模版 -->
+<template name="octoParse3">
+    <!-- <template is="octoParse4" data="{{item}}" /> -->
+    <!-- 判断是否是标签节点 -->
+    <block wx:if="{{item.node == 'element'}}">
+        <block wx:if="{{item.tag == 'button'}}">
+            <button type="default" size="mini">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse4" data="{{item}}" />
+                </block>
+            </button>
+        </block>
+        <!-- li类型 -->
+        <block wx:elif="{{item.tag == 'li'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="{{item.classStr}} octoParse-li" style="{{item.styleStr}}">
+                <view class="{{item.classStr}} octoParse-li-inner">
+                    <view class="{{item.classStr}} octoParse-li-text">
+                        <view class="{{item.classStr}} octoParse-li-circle"></view>
+                    </view>
+                    <view class="{{item.classStr}} octoParse-li-text">
+                        <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                            <template is="octoParse4" data="{{item}}" />
+                        </block>
+                    </view>
+                </view>
+            </view>
+        </block>
+        <!-- video类型 -->
+        <block wx:elif="{{item.tag == 'video'}}">
+            <template is="octoParseVideo" data="{{item}}" />
+        </block>
+        <!-- img类型 -->
+        <block wx:elif="{{item.tag == 'img'}}">
+            <template is="octoParseImg" data="{{item}}" />
+        </block>
+        <!-- a类型 -->
+        <block wx:elif="{{item.tag == 'a'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="octoParse-inline {{item.classStr}} octoParse-{{item.tag}}" data-src="{{item.attr.href}}" style="{{item.styleStr}}">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse4" data="{{item}}" />
+                </block>
+            </view>
+        </block>
+        <block wx:elif="{{item.tag == 'br'}}">
+            <template is="octoParseBr"></template>
+        </block>
+        <!-- 其他块级标签 -->
+        <block data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" wx:elif="{{item.tagType == 'block'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="{{item.classStr}} octoParse-{{item.tag}}" style="{{item.styleStr}}">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse4" data="{{item}}" />
+                </block>
+            </view>
+        </block>
+        <!-- 内联标签 -->
+        <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" wx:else class="{{item.classStr}} octoParse-{{item.tag}} octoParse-{{item.tagType}}" style="{{item.styleStr}}">
+            <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                <template is="octoParse4" data="{{item}}" />
+            </block>
+        </view>
+    </block>
+    <!-- 判断是否是文本节点 -->
+    <block wx:elif="{{item.node == 'text'}}">
+        <!-- 如果是,直接进行 -->
+        <template is="WxTextView" data="{{item}}" />
+    </block>
+</template>
+<!-- 循环模版 -->
+<template name="octoParse4">
+    <!-- <template is="octoParse5" data="{{item}}" /> -->
+    <!-- 判断是否是标签节点 -->
+    <block wx:if="{{item.node == 'element'}}">
+        <block wx:if="{{item.tag == 'button'}}">
+            <button type="default" size="mini">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse5" data="{{item}}" />
+                </block>
+            </button>
+        </block>
+        <!-- li类型 -->
+        <block wx:elif="{{item.tag == 'li'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="{{item.classStr}} octoParse-li" style="{{item.styleStr}}">
+                <view class="{{item.classStr}} octoParse-li-inner">
+                    <view class="{{item.classStr}} octoParse-li-text">
+                        <view class="{{item.classStr}} octoParse-li-circle"></view>
+                    </view>
+                    <view class="{{item.classStr}} octoParse-li-text">
+                        <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                            <template is="octoParse5" data="{{item}}" />
+                        </block>
+                    </view>
+                </view>
+            </view>
+        </block>
+        <!-- video类型 -->
+        <block wx:elif="{{item.tag == 'video'}}">
+            <template is="octoParseVideo" data="{{item}}" />
+        </block>
+        <!-- img类型 -->
+        <block wx:elif="{{item.tag == 'img'}}">
+            <template is="octoParseImg" data="{{item}}" />
+        </block>
+        <!-- a类型 -->
+        <block wx:elif="{{item.tag == 'a'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="octoParse-inline {{item.classStr}} octoParse-{{item.tag}}" data-src="{{item.attr.href}}" style="{{item.styleStr}}">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse5" data="{{item}}" />
+                </block>
+            </view>
+        </block>
+        <block wx:elif="{{item.tag == 'br'}}">
+            <template is="octoParseBr"></template>
+        </block>
+        <!-- 其他块级标签 -->
+        <block wx:elif="{{item.tagType == 'block'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="{{item.classStr}} octoParse-{{item.tag}}" style="{{item.styleStr}}">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse5" data="{{item}}" />
+                </block>
+            </view>
+        </block>
+        <!-- 内联标签 -->
+        <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" wx:else class="{{item.classStr}} octoParse-{{item.tag}} octoParse-{{item.tagType}}" style="{{item.styleStr}}">
+            <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                <template is="octoParse5" data="{{item}}" />
+            </block>
+        </view>
+    </block>
+    <!-- 判断是否是文本节点 -->
+    <block wx:elif="{{item.node == 'text'}}">
+        <!-- 如果是,直接进行 -->
+        <template is="WxTextView" data="{{item}}" />
+    </block>
+</template>
+<!-- 循环模版 -->
+<template name="octoParse5">
+    <!-- <template is="octoParse6" data="{{item}}" /> -->
+    <!-- 判断是否是标签节点 -->
+    <block wx:if="{{item.node == 'element'}}">
+        <block wx:if="{{item.tag == 'button'}}">
+            <button type="default" size="mini">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse6" data="{{item}}" />
+                </block>
+            </button>
+        </block>
+        <!-- li类型 -->
+        <block wx:elif="{{item.tag == 'li'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="{{item.classStr}} octoParse-li" style="{{item.styleStr}}">
+                <view class="{{item.classStr}} octoParse-li-inner">
+                    <view class="{{item.classStr}} octoParse-li-text">
+                        <view class="{{item.classStr}} octoParse-li-circle"></view>
+                    </view>
+                    <view class="{{item.classStr}} octoParse-li-text">
+                        <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                            <template is="octoParse6" data="{{item}}" />
+                        </block>
+                    </view>
+                </view>
+            </view>
+        </block>
+        <!-- video类型 -->
+        <block wx:elif="{{item.tag == 'video'}}">
+            <template is="octoParseVideo" data="{{item}}" />
+        </block>
+        <!-- img类型 -->
+        <block wx:elif="{{item.tag == 'img'}}">
+            <template is="octoParseImg" data="{{item}}" />
+        </block>
+        <!-- a类型 -->
+        <block wx:elif="{{item.tag == 'a'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="octoParse-inline {{item.classStr}} octoParse-{{item.tag}}" data-src="{{item.attr.href}}" style="{{item.styleStr}}">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse6" data="{{item}}" />
+                </block>
+            </view>
+        </block>
+        <block wx:elif="{{item.tag == 'br'}}">
+            <template is="octoParseBr"></template>
+        </block>
+        <!-- 其他块级标签 -->
+        <block wx:elif="{{item.tagType == 'block'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="{{item.classStr}} octoParse-{{item.tag}}" style="{{item.styleStr}}">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse6" data="{{item}}" />
+                </block>
+            </view>
+        </block>
+        <!-- 内联标签 -->
+        <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" wx:else class="{{item.classStr}} octoParse-{{item.tag}} octoParse-{{item.tagType}}" style="{{item.styleStr}}">
+            <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                <template is="octoParse6" data="{{item}}" />
+            </block>
+        </view>
+    </block>
+    <!-- 判断是否是文本节点 -->
+    <block wx:elif="{{item.node == 'text'}}">
+        <!-- 如果是,直接进行 -->
+        <template is="WxTextView" data="{{item}}" />
+    </block>
+</template>
+<!-- 循环模版 -->
+<template name="octoParse6">
+    <!-- <template is="octoParse7" data="{{item}}" /> -->
+    <!-- 判断是否是标签节点 -->
+    <block wx:if="{{item.node == 'element'}}">
+        <block wx:if="{{item.tag == 'button'}}">
+            <button type="default" size="mini">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse7" data="{{item}}" />
+                </block>
+            </button>
+        </block>
+        <!-- li类型 -->
+        <block wx:elif="{{item.tag == 'li'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="{{item.classStr}} octoParse-li" style="{{item.styleStr}}">
+                <view class="{{item.classStr}} octoParse-li-inner">
+                    <view class="{{item.classStr}} octoParse-li-text">
+                        <view class="{{item.classStr}} octoParse-li-circle"></view>
+                    </view>
+                    <view class="{{item.classStr}} octoParse-li-text">
+                        <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                            <template is="octoParse7" data="{{item}}" />
+                        </block>
+                    </view>
+                </view>
+            </view>
+        </block>
+        <!-- video类型 -->
+        <block wx:elif="{{item.tag == 'video'}}">
+            <template is="octoParseVideo" data="{{item}}" />
+        </block>
+        <!-- img类型 -->
+        <block wx:elif="{{item.tag == 'img'}}">
+            <template is="octoParseImg" data="{{item}}" />
+        </block>
+        <!-- a类型 -->
+        <block wx:elif="{{item.tag == 'a'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="octoParse-inline {{item.classStr}} octoParse-{{item.tag}}" data-src="{{item.attr.href}}" style="{{item.styleStr}}">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse7" data="{{item}}" />
+                </block>
+            </view>
+        </block>
+        <block wx:elif="{{item.tag == 'br'}}">
+            <template is="octoParseBr"></template>
+        </block>
+        <!-- 其他块级标签 -->
+        <block wx:elif="{{item.tagType == 'block'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="{{item.classStr}} octoParse-{{item.tag}}" style="{{item.styleStr}}">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse7" data="{{item}}" />
+                </block>
+            </view>
+        </block>
+        <!-- 内联标签 -->
+        <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" wx:else class="{{item.classStr}} octoParse-{{item.tag}} octoParse-{{item.tagType}}" style="{{item.styleStr}}">
+            <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                <template is="octoParse7" data="{{item}}" />
+            </block>
+        </view>
+    </block>
+    <!-- 判断是否是文本节点 -->
+    <block wx:elif="{{item.node == 'text'}}">
+        <!-- 如果是,直接进行 -->
+        <template is="WxTextView" data="{{item}}" />
+    </block>
+</template>
+<!-- 循环模版 -->
+<template name="octoParse7">
+    <!-- <template is="octoParse8" data="{{item}}" /> -->
+    <!-- 判断是否是标签节点 -->
+    <block wx:if="{{item.node == 'element'}}">
+        <block wx:if="{{item.tag == 'button'}}">
+            <button type="default" size="mini">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse8" data="{{item}}" />
+                </block>
+            </button>
+        </block>
+        <!-- li类型 -->
+        <block wx:elif="{{item.tag == 'li'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="{{item.classStr}} octoParse-li" style="{{item.styleStr}}">
+                <view class="{{item.classStr}} octoParse-li-inner">
+                    <view class="{{item.classStr}} octoParse-li-text">
+                        <view class="{{item.classStr}} octoParse-li-circle"></view>
+                    </view>
+                    <view class="{{item.classStr}} octoParse-li-text">
+                        <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                            <template is="octoParse8" data="{{item}}" />
+                        </block>
+                    </view>
+                </view>
+            </view>
+        </block>
+        <!-- video类型 -->
+        <block wx:elif="{{item.tag == 'video'}}">
+            <template is="octoParseVideo" data="{{item}}" />
+        </block>
+        <!-- img类型 -->
+        <block wx:elif="{{item.tag == 'img'}}">
+            <template is="octoParseImg" data="{{item}}" />
+        </block>
+        <!-- a类型 -->
+        <block wx:elif="{{item.tag == 'a'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="octoParse-inline {{item.classStr}} octoParse-{{item.tag}}" data-src="{{item.attr.href}}" style="{{item.styleStr}}">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse8" data="{{item}}" />
+                </block>
+            </view>
+        </block>
+        <block wx:elif="{{item.tag == 'br'}}">
+            <template is="octoParseBr"></template>
+        </block>
+        <!-- 其他块级标签 -->
+        <block wx:elif="{{item.tagType == 'block'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="{{item.classStr}} octoParse-{{item.tag}}" style="{{item.styleStr}}">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse8" data="{{item}}" />
+                </block>
+            </view>
+        </block>
+        <!-- 内联标签 -->
+        <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" wx:else class="{{item.classStr}} octoParse-{{item.tag}} octoParse-{{item.tagType}}" style="{{item.styleStr}}">
+            <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                <template is="octoParse8" data="{{item}}" />
+            </block>
+        </view>
+    </block>
+    <!-- 判断是否是文本节点 -->
+    <block wx:elif="{{item.node == 'text'}}">
+        <!-- 如果是,直接进行 -->
+        <template is="WxTextView" data="{{item}}" />
+    </block>
+</template>
+<!-- 循环模版 -->
+<template name="octoParse8">
+    <!-- <template is="octoParse9" data="{{item}}" /> -->
+    <!-- 判断是否是标签节点 -->
+    <block wx:if="{{item.node == 'element'}}">
+        <block wx:if="{{item.tag == 'button'}}">
+            <button type="default" size="mini">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse9" data="{{item}}" />
+                </block>
+            </button>
+        </block>
+        <!-- li类型 -->
+        <block wx:elif="{{item.tag == 'li'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="{{item.classStr}} octoParse-li" style="{{item.styleStr}}">
+                <view class="{{item.classStr}} octoParse-li-inner">
+                    <view class="{{item.classStr}} octoParse-li-text">
+                        <view class="{{item.classStr}} octoParse-li-circle"></view>
+                    </view>
+                    <view class="{{item.classStr}} octoParse-li-text">
+                        <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                            <template is="octoParse9" data="{{item}}" />
+                        </block>
+                    </view>
+                </view>
+            </view>
+        </block>
+        <!-- video类型 -->
+        <block wx:elif="{{item.tag == 'video'}}">
+            <template is="octoParseVideo" data="{{item}}" />
+        </block>
+        <!-- img类型 -->
+        <block wx:elif="{{item.tag == 'img'}}">
+            <template is="octoParseImg" data="{{item}}" />
+        </block>
+        <!-- a类型 -->
+        <block wx:elif="{{item.tag == 'a'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="octoParse-inline {{item.classStr}} octoParse-{{item.tag}}" data-src="{{item.attr.href}}" style="{{item.styleStr}}">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse9" data="{{item}}" />
+                </block>
+            </view>
+        </block>
+        <block wx:elif="{{item.tag == 'br'}}">
+            <template is="octoParseBr"></template>
+        </block>
+        <!-- 其他块级标签 -->
+        <block wx:elif="{{item.tagType == 'block'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="{{item.classStr}} octoParse-{{item.tag}}" style="{{item.styleStr}}">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse9" data="{{item}}" />
+                </block>
+            </view>
+        </block>
+        <!-- 内联标签 -->
+        <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" wx:else class="{{item.classStr}} octoParse-{{item.tag}} octoParse-{{item.tagType}}" style="{{item.styleStr}}">
+            <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                <template is="octoParse9" data="{{item}}" />
+            </block>
+        </view>
+    </block>
+    <!-- 判断是否是文本节点 -->
+    <block wx:elif="{{item.node == 'text'}}">
+        <!-- 如果是,直接进行 -->
+        <template is="WxTextView" data="{{item}}" />
+    </block>
+</template>
+<!-- 循环模版 -->
+<template name="octoParse9">
+    <!-- <template is="octoParse10" data="{{item}}" /> -->
+    <!-- 判断是否是标签节点 -->
+    <block wx:if="{{item.node == 'element'}}">
+        <block wx:if="{{item.tag == 'button'}}">
+            <button type="default" size="mini">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse10" data="{{item}}" />
+                </block>
+            </button>
+        </block>
+        <!-- li类型 -->
+        <block wx:elif="{{item.tag == 'li'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="{{item.classStr}} octoParse-li" style="{{item.styleStr}}">
+                <view class="{{item.classStr}} octoParse-li-inner">
+                    <view class="{{item.classStr}} octoParse-li-text">
+                        <view class="{{item.classStr}} octoParse-li-circle"></view>
+                    </view>
+                    <view class="{{item.classStr}} octoParse-li-text">
+                        <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                            <template is="octoParse10" data="{{item}}" />
+                        </block>
+                    </view>
+                </view>
+            </view>
+        </block>
+        <!-- video类型 -->
+        <block wx:elif="{{item.tag == 'video'}}">
+            <template is="octoParseVideo" data="{{item}}" />
+        </block>
+        <!-- img类型 -->
+        <block wx:elif="{{item.tag == 'img'}}">
+            <template is="octoParseImg" data="{{item}}" />
+        </block>
+        <!-- a类型 -->
+        <block wx:elif="{{item.tag == 'a'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="octoParse-inline {{item.classStr}} octoParse-{{item.tag}}" data-src="{{item.attr.href}}" style="{{item.styleStr}}">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse10" data="{{item}}" />
+                </block>
+            </view>
+        </block>
+        <block wx:elif="{{item.tag == 'br'}}">
+            <template is="octoParseBr"></template>
+        </block>
+        <!-- 其他块级标签 -->
+        <block wx:elif="{{item.tagType == 'block'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="{{item.classStr}} octoParse-{{item.tag}}" style="{{item.styleStr}}">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse10" data="{{item}}" />
+                </block>
+            </view>
+        </block>
+        <!-- 内联标签 -->
+        <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" wx:else class="{{item.classStr}} octoParse-{{item.tag}} octoParse-{{item.tagType}}" style="{{item.styleStr}}">
+            <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                <template is="octoParse10" data="{{item}}" />
+            </block>
+        </view>
+    </block>
+    <!-- 判断是否是文本节点 -->
+    <block wx:elif="{{item.node == 'text'}}">
+        <!-- 如果是,直接进行 -->
+        <template is="WxTextView" data="{{item}}" />
+    </block>
+</template>
+<!-- 循环模版 -->
+<template name="octoParse10">
+    <!-- <template is="octoParse11" data="{{item}}" /> -->
+    <!-- 判断是否是标签节点 -->
+    <block wx:if="{{item.node == 'element'}}">
+        <block wx:if="{{item.tag == 'button'}}">
+            <button type="default" size="mini">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse11" data="{{item}}" />
+                </block>
+            </button>
+        </block>
+        <!-- li类型 -->
+        <block wx:elif="{{item.tag == 'li'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="{{item.classStr}} octoParse-li" style="{{item.styleStr}}">
+                <view class="{{item.classStr}} octoParse-li-inner">
+                    <view class="{{item.classStr}} octoParse-li-text">
+                        <view class="{{item.classStr}} octoParse-li-circle"></view>
+                    </view>
+                    <view class="{{item.classStr}} octoParse-li-text">
+                        <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                            <template is="octoParse11" data="{{item}}" />
+                        </block>
+                    </view>
+                </view>
+            </view>
+        </block>
+        <!-- video类型 -->
+        <block wx:elif="{{item.tag == 'video'}}">
+            <template is="octoParseVideo" data="{{item}}" />
+        </block>
+        <!-- img类型 -->
+        <block wx:elif="{{item.tag == 'img'}}">
+            <template is="octoParseImg" data="{{item}}" />
+        </block>
+        <!-- a类型 -->
+        <block wx:elif="{{item.tag == 'a'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="octoParse-inline {{item.classStr}} octoParse-{{item.tag}}" data-src="{{item.attr.href}}" style="{{item.styleStr}}">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse11" data="{{item}}" />
+                </block>
+            </view>
+        </block>
+        <block wx:elif="{{item.tag == 'br'}}">
+            <template is="octoParseBr"></template>
+        </block>
+        <!-- 其他块级标签 -->
+        <block wx:elif="{{item.tagType == 'block'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="{{item.classStr}} octoParse-{{item.tag}}" style="{{item.styleStr}}">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse11" data="{{item}}" />
+                </block>
+            </view>
+        </block>
+        <!-- 内联标签 -->
+        <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" wx:else class="{{item.classStr}} octoParse-{{item.tag}} octoParse-{{item.tagType}}" style="{{item.styleStr}}">
+            <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                <template is="octoParse11" data="{{item}}" />
+            </block>
+        </view>
+    </block>
+    <!-- 判断是否是文本节点 -->
+    <block wx:elif="{{item.node == 'text'}}">
+        <!-- 如果是,直接进行 -->
+        <template is="WxTextView" data="{{item}}" />
+    </block>
+</template>
+<!-- 循环模版 -->
+<template name="octoParse11">
+    <!-- <template  is="octoParse12" data="{{item}}" /> -->
+    <!-- 判断是否是标签节点 -->
+    <block wx:if="{{item.node == 'element'}}">
+        <block wx:if="{{item.tag == 'button'}}">
+            <button type="default" size="mini">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template  is="octoParse12" data="{{item}}" />
+                </block>
+            </button>
+        </block>
+        <!-- li类型 -->
+        <block wx:elif="{{item.tag == 'li'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="{{item.classStr}} octoParse-li" style="{{item.styleStr}}">
+                <view class="{{item.classStr}} octoParse-li-inner">
+                    <view class="{{item.classStr}} octoParse-li-text">
+                        <view class="{{item.classStr}} octoParse-li-circle"></view>
+                    </view>
+                    <view class="{{item.classStr}} octoParse-li-text">
+                        <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                            <template  is="octoParse12" data="{{item}}" />
+                        </block>
+                    </view>
+                </view>
+            </view>
+        </block>
+        <!-- video类型 -->
+        <block wx:elif="{{item.tag == 'video'}}">
+            <template is="octoParseVideo" data="{{item}}" />
+        </block>
+        <!-- img类型 -->
+        <block wx:elif="{{item.tag == 'img'}}">
+            <template is="octoParseImg" data="{{item}}" />
+        </block>
+        <!-- a类型 -->
+        <block wx:elif="{{item.tag == 'a'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="octoParse-inline {{item.classStr}} octoParse-{{item.tag}}" data-src="{{item.attr.href}}" style="{{item.styleStr}}">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse12" data="{{item}}" />
+                </block>
+            </view>
+        </block>
+        <block wx:elif="{{item.tag == 'br'}}">
+            <template is="octoParseBr"></template>
+        </block>
+        <!-- 其他块级标签 -->
+        <block wx:elif="{{item.tagType == 'block'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="{{item.classStr}} octoParse-{{item.tag}}" style="{{item.styleStr}}">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template  is="octoParse12" data="{{item}}" />
+                </block>
+            </view>
+        </block>
+        <!-- 内联标签 -->
+        <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" wx:else class="{{item.classStr}} octoParse-{{item.tag}} octoParse-{{item.tagType}}" style="{{item.styleStr}}">
+            <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                <template  is="octoParse12" data="{{item}}" />
+            </block>
+        </view>
+    </block>
+    <!-- 判断是否是文本节点 -->
+    <block wx:elif="{{item.node == 'text'}}">
+        <!-- 如果是,直接进行 -->
+        <template is="WxTextView" data="{{item}}" />
+    </block>
+</template>
+<template name="octoParse12">
+    <!-- <template  is="octoParse12" data="{{item}}" /> -->
+    <!-- 判断是否是标签节点 -->
+    <block wx:if="{{item.node == 'element'}}">
+        <block wx:if="{{item.tag == 'button'}}">
+            <button type="default" size="mini">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse13" data="{{item}}" />
+                </block>
+            </button>
+        </block>
+        <!-- li类型 -->
+        <block wx:elif="{{item.tag == 'li'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="{{item.classStr}} octoParse-li" style="{{item.styleStr}}">
+                <view class="{{item.classStr}} octoParse-li-inner">
+                    <view class="{{item.classStr}} octoParse-li-text">
+                        <view class="{{item.classStr}} octoParse-li-circle"></view>
+                    </view>
+                    <view class="{{item.classStr}} octoParse-li-text">
+                        <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                            <template is="octoParse13" data="{{item}}" />
+                        </block>
+                    </view>
+                </view>
+            </view>
+        </block>
+        <!-- video类型 -->
+        <block wx:elif="{{item.tag == 'video'}}">
+            <template is="octoParseVideo" data="{{item}}" />
+        </block>
+        <!-- img类型 -->
+        <block wx:elif="{{item.tag == 'img'}}">
+            <template is="octoParseImg" data="{{item}}" />
+        </block>
+        <!-- a类型 -->
+        <block wx:elif="{{item.tag == 'a'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="octoParse-inline {{item.classStr}} octoParse-{{item.tag}}" data-src="{{item.attr.href}}" style="{{item.styleStr}}">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse13" data="{{item}}" />
+                </block>
+            </view>
+        </block>
+        <block wx:elif="{{item.tag == 'br'}}">
+            <template is="octoParseBr"></template>
+        </block>
+        <!-- 其他块级标签 -->
+        <block wx:elif="{{item.tagType == 'block'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="{{item.classStr}} octoParse-{{item.tag}}" style="{{item.styleStr}}">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse13" data="{{item}}" />
+                </block>
+            </view>
+        </block>
+        <!-- 内联标签 -->
+        <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" wx:else class="{{item.classStr}} octoParse-{{item.tag}} octoParse-{{item.tagType}}" style="{{item.styleStr}}">
+            <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                <template is="octoParse13" data="{{item}}" />
+            </block>
+        </view>
+    </block>
+    <!-- 判断是否是文本节点 -->
+    <block wx:elif="{{item.node == 'text'}}">
+        <!-- 如果是,直接进行 -->
+        <template is="WxTextView" data="{{item}}" />
+    </block>
+</template>
+
+<template name="octoParse13">
+    <!-- <template  is="octoParse12" data="{{item}}" /> -->
+    <!-- 判断是否是标签节点 -->
+    <block wx:if="{{item.node == 'element'}}">
+        <block wx:if="{{item.tag == 'button'}}">
+            <button type="default" size="mini">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse14" data="{{item}}" />
+                </block>
+            </button>
+        </block>
+        <!-- li类型 -->
+        <block wx:elif="{{item.tag == 'li'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="{{item.classStr}} octoParse-li" style="{{item.styleStr}}">
+                <view class="{{item.classStr}} octoParse-li-inner">
+                    <view class="{{item.classStr}} octoParse-li-text">
+                        <view class="{{item.classStr}} octoParse-li-circle"></view>
+                    </view>
+                    <view class="{{item.classStr}} octoParse-li-text">
+                        <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                            <template is="octoParse14" data="{{item}}" />
+                        </block>
+                    </view>
+                </view>
+            </view>
+        </block>
+        <!-- video类型 -->
+        <block wx:elif="{{item.tag == 'video'}}">
+            <template is="octoParseVideo" data="{{item}}" />
+        </block>
+        <!-- img类型 -->
+        <block wx:elif="{{item.tag == 'img'}}">
+            <template is="octoParseImg" data="{{item}}" />
+        </block>
+        <!-- a类型 -->
+        <block wx:elif="{{item.tag == 'a'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="octoParse-inline {{item.classStr}} octoParse-{{item.tag}}" data-src="{{item.attr.href}}" style="{{item.styleStr}}">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse14" data="{{item}}" />
+                </block>
+            </view>
+        </block>
+        <block wx:elif="{{item.tag == 'br'}}">
+            <template is="octoParseBr"></template>
+        </block>
+        <!-- 其他块级标签 -->
+        <block wx:elif="{{item.tagType == 'block'}}">
+            <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" class="{{item.classStr}} octoParse-{{item.tag}}" style="{{item.styleStr}}">
+                <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                    <template is="octoParse14" data="{{item}}" />
+                </block>
+            </view>
+        </block>
+        <!-- 内联标签 -->
+        <view data-tag="{{item.tag}}" data-class="{{item.classStr}}" data-id="{{item.attr.id}}" wx:else class="{{item.classStr}} octoParse-{{item.tag}} octoParse-{{item.tagType}}" style="{{item.styleStr}}">
+            <block wx:for="{{item.nodes}}" wx:for-item="item" wx:key="index">
+                <template is="octoParse14" data="{{item}}" />
+            </block>
+        </view>
+    </block>
+    <!-- 判断是否是文本节点 -->
+    <block wx:elif="{{item.node == 'text'}}">
+        <!-- 如果是,直接进行 -->
+        <template is="WxTextView" data="{{item}}" />
+    </block>
+</template>
+<view class="octoParse">
+    <template is="octoParse" data="{{nodes:htmlData}}" />
+</view>

+ 195 - 0
src/native/mineNode/index.wxss

@@ -0,0 +1,195 @@
+.octoParse{
+    margin: 0 5px;
+    font-family: Helvetica,sans-serif;
+    font-size: 28rpx;
+    color: #666;
+    line-height: 1.8;
+}
+.octoParse-inline{
+    display: inline;
+    margin: 0;
+    padding: 0;
+}
+/*//标题 */
+.octoParse-div{margin: 0;padding: 0;}
+.octoParse-h1{ font-size:2em; margin: .67em 0 }
+.octoParse-h2{ font-size:1.5em; margin: .75em 0 }
+.octoParse-h3{ font-size:1.17em; margin: .83em 0 }
+.octoParse-h4{ margin: 1.12em 0}
+.octoParse-h5 { font-size:.83em; margin: 1.5em 0 }
+.octoParse-h6{ font-size:.75em; margin: 1.67em 0 }
+
+.octoParse-h1 {
+  font-size: 18px;
+  font-weight: 400;
+  margin-bottom: .9em;
+}
+.octoParse-h2 {
+  font-size: 16px;
+  font-weight: 400;
+  margin-bottom: .34em;
+}
+.octoParse-h3 {
+  font-weight: 400;
+  font-size: 15px;
+  margin-bottom: .34em;
+}
+.octoParse-h4 {
+  font-weight: 400;
+  font-size: 14px;
+  margin-bottom: .24em;
+}
+.octoParse-h5 {
+  font-weight: 400;
+  font-size: 13px;
+  margin-bottom: .14em;
+}
+.octoParse-h6 {
+  font-weight: 400;
+  font-size: 12px;
+  margin-bottom: .04em;
+}
+
+.octoParse-h1, .octoParse-h2, .octoParse-h3, .octoParse-h4, .octoParse-h5, .octoParse-h6, .octoParse-b, .octoParse-strong  { font-weight: bolder }
+
+.octoParse-i,.octoParse-cite,.octoParse-em,.octoParse-var,.octoParse-address{font-style:italic}
+.octoParse-pre,.octoParse-tt,.octoParse-code,.octoParse-kbd,.octoParse-samp{font-family:monospace}
+.octoParse-pre{white-space:pre}
+.octoParse-big{font-size:1.17em}
+.octoParse-small,.octoParse-sub,.octoParse-sup{font-size:.83em}
+.octoParse-sub{vertical-align:sub}
+.octoParse-sup{vertical-align:super}
+.octoParse-s,.octoParse-strike,.octoParse-del{text-decoration:line-through}
+/*octoParse-自定义个性化的css样式*/
+/*增加video的css样式*/
+.octoParse-strong,.octoParse-s{display: inline}
+.octoParse-a{
+    color: deepskyblue;
+    word-break:break-all;
+    overflow:auto;
+}
+
+.octoParse-video{
+    text-align: center;
+    margin: 10px 0;
+}
+
+.octoParse-video-video{
+    width:100%;
+}
+
+.octoParse-img{
+    /*background-color: #efefef;*/
+    overflow: hidden;
+}
+
+.octoParse-blockquote {
+    margin: 0;
+    padding:10px 0 10px 5px;
+    font-family:Courier, Calibri,"宋体";
+    background:#f5f5f5;
+    border-left: 3px solid #dbdbdb;
+}
+
+.octoParse-code,.octoParse-wxxxcode-style{
+    display: inline;
+    background:#f5f5f5;
+}
+.octoParse-ul{
+    margin: 20rpx 10rpx;
+}
+
+.octoParse-li,.octoParse-li-inner{
+    display: flex;
+    align-items: baseline;
+    margin: 10rpx 0;
+}
+.octoParse-li-text{
+    align-items: center;
+    line-height: 20px;
+}
+
+.octoParse-li-circle{
+    display: inline-flex;
+    width: 5px;
+    height: 5px;
+    background-color: #333;
+    margin-right: 5px;
+}
+
+.octoParse-li-square{
+    display: inline-flex;
+    width: 10rpx;
+    height: 10rpx;
+    background-color: #333;
+    margin-right: 5px;
+}
+.octoParse-li-ring{
+    display: inline-flex;
+    width: 10rpx;
+    height: 10rpx;
+    border: 2rpx solid #333;
+    border-radius: 50%;
+    background-color: #fff;
+    margin-right: 5px;
+}
+
+/*.octoParse-table{
+    width: 100%;
+    height: 400px;
+}
+.octoParse-thead,.octoParse-tfoot,.octoParse-tr{
+    display: flex;
+    flex-direction: row;
+}
+.octoParse-th,.octoParse-td{
+    display: flex;
+    width: 580px;
+    overflow: auto;
+}*/
+
+.octoParse-u {
+  text-decoration: underline;
+}
+.octoParse-hide{
+    display: none;
+}
+.WxEmojiView{
+    align-items: center;
+}
+.wxEmoji{
+    width: 16px;
+    height:16px;
+}
+.octoParse-tr{
+	display: flex;
+	border-right:1px solid #e0e0e0;
+	border-bottom:1px solid #e0e0e0;
+	border-top:1px solid #e0e0e0;
+}
+.octoParse-th,
+.octoParse-td{
+	flex:1;
+	padding:5px;
+	font-size:28rpx;
+	border-left:1px solid #e0e0e0;
+	word-break: break-all;
+}
+.octoParse-td:last{
+	border-top:1px solid #e0e0e0;
+}
+.octoParse-th{
+	background:#f0f0f0;
+	border-top:1px solid #e0e0e0;
+}
+.octoParse-del{
+    display: inline;
+}
+.octoParse-figure {
+  overflow: hidden;
+}
+.WxTextView{
+    font-size: 16px;
+    color: #000;
+    line-height: 22px;
+}

+ 1 - 1
src/pages/Home.vue

@@ -366,7 +366,7 @@ export default {
         }
     },
     onLoad() {
-        getBanner('HOME').then(res => {
+        getBanner('HOME', !this.isChinese).then(res => {
             console.log(res);
             this.banners = res;
         });

+ 3 - 3
src/pagesHome/Brand.vue

@@ -31,12 +31,12 @@
                 />
             </div>
 
-            <scroll-view scroll-x style="width: 100%;">
+            <scroll-view scroll-x style="width: 100%">
                 <div class="hot-list">
                     <div class="hot-item" v-for="item in vendors" :key="item.id">
                         <vendor-grid :info="item"></vendor-grid>
                     </div>
-                    <div style="min-width: 16px; height: 100%;"></div>
+                    <div style="min-width: 16px; height: 100%"></div>
                 </div>
             </scroll-view>
 
@@ -162,7 +162,7 @@ export default {
     },
     mixins: [searchList, pages],
     onLoad() {
-        getBanner('VENDOR').then(res => {
+        getBanner('VENDOR', !this.isChinese).then(res => {
             console.log(res);
             this.banners = res;
         });

+ 1 - 1
src/pagesHome/Product.vue

@@ -166,7 +166,7 @@ export default {
             });
         }
 
-        getBanner('PRODUCT').then(res => {
+        getBanner('PRODUCT', !this.isChinese).then(res => {
             this.banners = res;
         });
     },

+ 40 - 3
src/pagesNews/Detail.vue

@@ -48,8 +48,8 @@
 
             <div class="detail">
                 <h2>{{ isActivity ? $t('huo-dong') : $t('xin-wen') }}{{ $t('xiang-qing') }}</h2>
-
-                <div class="html" v-html="info.content"></div>
+                <mine-node :htmlData="detail"></mine-node>
+                <!-- <div class="html" v-html="detail"></div> -->
             </div>
         </div>
 
@@ -79,13 +79,15 @@
 import Banner from '../components/Banner.vue';
 import CustomBar from '../components/bar/CustomBar.vue';
 import FixedButton from '../components/FixedButton';
+import octoparse from 'octoparse';
 export default {
     data() {
         return {
             informationId: 0,
             info: {},
             activityId: 0,
-            detailImgList: []
+            detailImgList: [],
+            detail: []
         };
     },
     computed: {
@@ -116,7 +118,25 @@ export default {
         this.informationId = options.id;
         this.$http.get('/information/get/' + options.id).then(res => {
             this.info = res;
+            let options = {
+                visitors: {
+                    img(node) {
+                        console.log(node);
+                        if (node.classStr === 'blockImg') {
+                            node.styleStr = 'display:block;width:100%;height:auto';
+                        } else {
+                            node.styleStr = `width:${node.attr.width}px;height:${
+                                node.attr.width
+                            }px;${node.attr.style.join(';')}`;
+                        }
+                        node.bindTap = () => {
+                            console.log(node.src);
+                        };
+                    }
+                }
+            };
             this.getImgList(res.content);
+            this.detail = octoparse.htmlParse(res.content, options);
         });
     },
     onShow() {
@@ -155,6 +175,22 @@ export default {
                     }
                 });
         },
+        getImgWidt(detailImg) {
+            if (detailImg) {
+                var width = detailImg
+                    .split('<img class="none"')
+                    .map(item => {
+                        return item.split('/>')[0];
+                    })
+                    .map(item => {
+                        return item.split('width="').length > 1 ? item.split('width="')[1] : '';
+                    })
+                    .map(item => {
+                        return item.split('"')[0];
+                    });
+                console.log(width);
+            }
+        },
         getImgList(detailImg) {
             if (detailImg) {
                 this.detailImgList = detailImg
@@ -263,6 +299,7 @@ export default {
     padding: 50px 0;
     .html {
         padding-top: 14px;
+        color: #000;
     }
 }
 

+ 5 - 4
src/pagesNews/News.vue

@@ -39,12 +39,12 @@
                 <div class="list">
                     <template v-if="pageType === 'bigImg'">
                         <block v-for="item in list" :key="item.id">
-                            <news-grid :info="item"></news-grid>
+                            <news-grid :info="item" isList></news-grid>
                         </block>
                     </template>
                     <template v-if="pageType === 'default'">
                         <block v-for="item in list" :key="item.id">
-                            <news-row :info="item"></news-row>
+                            <news-row :info="item" isList></news-row>
                         </block>
                     </template>
                 </div>
@@ -94,7 +94,7 @@ export default {
         listQuery() {
             return {
                 query: { type: this.hotActive ? [...this.informations][this.hotActive - 1].key : '', status: 'PASS' },
-                sort: 'top,asc;auditTime,desc;sort,desc'
+                sort: 'top,desc;auditTime,desc;sort,desc'
             };
         },
         pageType() {
@@ -123,7 +123,8 @@ export default {
                     ? [...this.informations][index - 1].key
                     : [...InformationType].map(item => {
                           return item[0];
-                      })
+                      }),
+                !this.isChinese
             ).then(res => {
                 this.$refs.banner.init();
                 this.banners = res;

+ 24 - 13
src/pagesProduct/Detail.vue

@@ -79,7 +79,7 @@
                 <div class="vendor" @click="navigateTo('/pagesVendor/Detail?id=' + vendorInfo.id)">
                     <image
                         :src="vendorInfo.logo"
-                        style="width: 60px; height: 60px; border-radius: 4px; border: 1px solid #f2f4f5;"
+                        style="width: 60px; height: 60px; border-radius: 4px; border: 1px solid #f2f4f5"
                     />
                     <!-- <van-image class="logo" :radius="4" :src="vendorInfo.logo" :width="60" :height="60" /> -->
                     <div class="vendor-info">
@@ -123,10 +123,11 @@
                                 />
                             </div>
                             <div class="tips" v-html="introduction"></div>
+
                             <van-divider />
                             <!-- <rich-text v-if="detailImg" :nodes="detailImg"></rich-text> -->
                             <div class="detailhtml">
-                                <div v-html="detailImg" v-if="detailImg"></div>
+                                <mine-node :htmlData="detail"></mine-node>
                             </div>
                         </div>
                     </van-tab>
@@ -200,6 +201,7 @@ import Parameter from '../components/product/Parameter.vue';
 import { mapState } from 'vuex';
 import { saveBrowse } from '../utils/commont';
 import Dialog from '../native/vant/dialog/dialog';
+import octoparse from 'octoparse';
 export default {
     components: { CustomBar, Banner, Parameter },
     data() {
@@ -212,7 +214,8 @@ export default {
             collectionType: 'PRODUCT',
             detailImgList: [],
             showBtn: false,
-            screenHeight: 300
+            screenHeight: 300,
+            detail: []
         };
     },
     mixins: [collection],
@@ -268,15 +271,6 @@ export default {
                 return '';
             }
         },
-        detailImg() {
-            let detail = this.productInfo.detailImg || '';
-            if (detail) {
-                detail = detail.replace(/&Oslash;/g, '');
-                detail = detail.replace(/<img/g, `<img bindtap='clickImg' `);
-                detail = detail.replace(/<video/g, `<video style='width:345px;height:180px' `);
-            }
-            return detail;
-        },
         isIntented() {
             const list = [...this.intentionList];
             return list
@@ -310,7 +304,24 @@ export default {
                     // res.detailImg = new String(res.detailImg.getBytes('ISO-8859-1'), 'UTF-8');
                     this.productInfo = res;
                     this.getImgList(res.detailImg);
-
+                    let options = {
+                        visitors: {
+                            img(node) {
+                                console.log(node);
+                                if (node.classStr === 'blockImg') {
+                                    node.styleStr = 'display:block;width:100%;height:auto';
+                                } else {
+                                    node.styleStr = `width:${node.attr.width}px;height:${
+                                        node.attr.width
+                                    }px;${node.attr.style.join(';')}`;
+                                }
+                            },
+                            video(node) {
+                                console.log(node);
+                            }
+                        }
+                    };
+                    this.detail = octoparse.htmlParse(res.detailImg, options);
                     if (res.video) {
                         wx.setNavigationBarColor({
                             frontColor: '#ffffff',

+ 4 - 2
src/utils/commont.js

@@ -1,13 +1,15 @@
 import http from '../plugins/http';
 
-function getBanner(key) {
+function getBanner(key, isEN = false) {
     return http.http
         .post(
             '/banner/all',
             {
                 query: {
                     position: key,
-                    isMa: true
+                    isMa: true,
+                    del: false,
+                    isEN: isEN
                 }
             },
             {