chore: 初始化仓库基线(AGENTS.md、git 规范、敏感文件排除)
@@ -0,0 +1,15 @@
|
||||
// babel-preset-taro 更多选项和默认值:
|
||||
// https://github.com/NervJS/taro/blob/next/packages/babel-preset-taro/README.md
|
||||
module.exports = {
|
||||
presets: [
|
||||
[
|
||||
'taro',
|
||||
{
|
||||
framework: 'react',
|
||||
ts: 'true',
|
||||
compiler: 'webpack5',
|
||||
},
|
||||
],
|
||||
],
|
||||
plugins: [],
|
||||
};
|
||||
@@ -0,0 +1,22 @@
|
||||
import type { UserConfigExport } from '@tarojs/cli';
|
||||
export default {
|
||||
logger: {
|
||||
quiet: false,
|
||||
stats: true,
|
||||
},
|
||||
mini: {},
|
||||
h5: {
|
||||
devServer: {
|
||||
open: false, //禁止自动打开浏览器
|
||||
proxy: [
|
||||
{
|
||||
context: ['/api', '/ws'],
|
||||
target: 'http://localhost:3000',
|
||||
changeOrigin: true,
|
||||
secure: false,
|
||||
ws: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
} satisfies UserConfigExport<'webpack5'>;
|
||||
@@ -0,0 +1,108 @@
|
||||
import { defineConfig, type UserConfigExport } from '@tarojs/cli';
|
||||
import TsconfigPathsPlugin from 'tsconfig-paths-webpack-plugin';
|
||||
import devConfig from './dev';
|
||||
import prodConfig from './prod';
|
||||
import vitePluginImp from 'vite-plugin-imp';
|
||||
// https://taro-docs.jd.com/docs/next/config#defineconfig-辅助函数
|
||||
export default defineConfig<'webpack5'>(async (merge, { command, mode }) => {
|
||||
const baseConfig: UserConfigExport<'webpack5'> = {
|
||||
projectName: 'taro_template',
|
||||
date: '2025-12-10',
|
||||
designWidth: 375,
|
||||
deviceRatio: {
|
||||
640: 2.34 / 2,
|
||||
750: 1,
|
||||
375: 2,
|
||||
828: 1.81 / 2,
|
||||
},
|
||||
sourceRoot: 'src',
|
||||
outputRoot: process.env.TARO_OUTPUT_DIR || 'dist',
|
||||
plugins: ['@tarojs/plugin-html'],
|
||||
defineConstants: {},
|
||||
copy: {
|
||||
patterns: [],
|
||||
options: {},
|
||||
},
|
||||
framework: 'react',
|
||||
compiler: {
|
||||
type: 'webpack5',
|
||||
prebundle: {
|
||||
enable: false,
|
||||
},
|
||||
},
|
||||
cache: {
|
||||
enable: false, // Webpack 持久化缓存配置,建议开启。默认配置请参考:https://docs.taro.zone/docs/config-detail#cache
|
||||
},
|
||||
mini: {
|
||||
postcss: {
|
||||
pxtransform: {
|
||||
enable: true,
|
||||
config: {
|
||||
selectorBlackList: ['nut-'],
|
||||
},
|
||||
},
|
||||
cssModules: {
|
||||
enable: true, // 开启 CSS Modules
|
||||
config: {
|
||||
namingPattern: 'module', // 仅 *.module.scss 生效
|
||||
generateScopedName: '[name]__[local]___[hash:base64:5]',
|
||||
},
|
||||
},
|
||||
},
|
||||
webpackChain(chain) {
|
||||
chain.resolve.plugin('tsconfig-paths').use(TsconfigPathsPlugin);
|
||||
},
|
||||
},
|
||||
h5: {
|
||||
publicPath: '/',
|
||||
staticDirectory: 'static',
|
||||
output: {
|
||||
filename: 'js/[name].[hash:8].js',
|
||||
chunkFilename: 'js/[name].[chunkhash:8].js',
|
||||
},
|
||||
miniCssExtractPluginOption: {
|
||||
ignoreOrder: true,
|
||||
filename: 'css/[name].[hash].css',
|
||||
chunkFilename: 'css/[name].[chunkhash].css',
|
||||
},
|
||||
postcss: {
|
||||
autoprefixer: {
|
||||
enable: true,
|
||||
config: {},
|
||||
},
|
||||
cssModules: {
|
||||
enable: true, // 开启 CSS Modules
|
||||
config: {
|
||||
namingPattern: 'module', // 仅 *.module.scss 生效
|
||||
generateScopedName: '[name]__[local]___[hash:base64:5]',
|
||||
},
|
||||
},
|
||||
pxtransform: {
|
||||
enable: true,
|
||||
config: {
|
||||
selectorBlackList: ['body'],
|
||||
baseFontSize: 37.5,
|
||||
unitPrecision: 5,
|
||||
},
|
||||
},
|
||||
},
|
||||
webpackChain(chain) {
|
||||
chain.resolve.plugin('tsconfig-paths').use(TsconfigPathsPlugin);
|
||||
},
|
||||
},
|
||||
rn: {
|
||||
appName: 'taroDemo',
|
||||
postcss: {
|
||||
cssModules: {
|
||||
enable: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
if (process.env.NODE_ENV === 'development') {
|
||||
// 本地开发构建配置(不混淆压缩)
|
||||
return merge({}, baseConfig, devConfig);
|
||||
}
|
||||
// 生产构建配置(默认开启压缩混淆等)
|
||||
return merge({}, baseConfig, prodConfig);
|
||||
});
|
||||
@@ -0,0 +1,25 @@
|
||||
import type { UserConfigExport } from '@tarojs/cli';
|
||||
export default {
|
||||
mini: {
|
||||
optimizeMainPackage: {
|
||||
enable: true,
|
||||
},
|
||||
minify: {
|
||||
enable: true,
|
||||
config: {
|
||||
keep_classnames: false,
|
||||
keep_fnames: false,
|
||||
mangle: {
|
||||
toplevel: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
treeShaking: {
|
||||
enable: true,
|
||||
},
|
||||
uglify: {
|
||||
enable: true,
|
||||
},
|
||||
},
|
||||
h5: {},
|
||||
} satisfies UserConfigExport<'webpack5'>;
|
||||
@@ -0,0 +1 @@
|
||||
.h5-button,.h5-form,.h5-input,.h5-label,.h5-textarea,image,navigator,page,scroll-view,swiper,swiper-item,text,view{-webkit-box-sizing:border-box;box-sizing:border-box}page{background-color:#f5f6f7;color:#1d2129;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,PingFang SC,Hiragino Sans GB,sans-serif;font-size:28rpx;line-height:1.5}
|
||||
@@ -0,0 +1,29 @@
|
||||
/**
|
||||
* @license React
|
||||
* react-reconciler-constants.production.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @license React
|
||||
* react-reconciler.production.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @license React
|
||||
* scheduler.production.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
@@ -0,0 +1 @@
|
||||
{"pages":["pages/login/index","pages/dashboard/index","pages/rooms/index","pages/rooms/detail/index","pages/devices/index","pages/devices/control/index","pages/alerts/index","pages/thresholds/index","pages/video/index","pages/video/player/index","pages/settings/index"],"window":{"backgroundTextStyle":"dark","navigationBarBackgroundColor":"#10b981","navigationBarTitleText":"蚕房监控","navigationBarTextStyle":"white","backgroundColor":"#f5f6f7"},"tabBar":{"color":"#86909c","selectedColor":"#10b981","backgroundColor":"#ffffff","borderStyle":"white","list":[{"pagePath":"pages/dashboard/index","text":"仪表盘","iconPath":"assets/tabbar/dashboard.png","selectedIconPath":"assets/tabbar/dashboard-selected.png"},{"pagePath":"pages/rooms/index","text":"蚕房","iconPath":"assets/tabbar/rooms.png","selectedIconPath":"assets/tabbar/rooms-selected.png"},{"pagePath":"pages/devices/index","text":"设备","iconPath":"assets/tabbar/devices.png","selectedIconPath":"assets/tabbar/devices-selected.png"},{"pagePath":"pages/alerts/index","text":"告警","iconPath":"assets/tabbar/alerts.png","selectedIconPath":"assets/tabbar/alerts-selected.png"},{"pagePath":"pages/video/index","text":"视频","iconPath":"assets/tabbar/video.png","selectedIconPath":"assets/tabbar/video-selected.png"}]}}
|
||||
@@ -0,0 +1 @@
|
||||
@import "./app-origin.wxss";@import "./common.wxss";
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 940 B |
@@ -0,0 +1,663 @@
|
||||
<wxs module="xs" src="./utils.wxs" />
|
||||
<template name="taro_tmpl">
|
||||
<template is="{{xs.a(0, item.nn, '')}}" data="{{i:item,c:1,l:xs.f('',item.nn)}}" wx:for="{{root.cn}}" wx:key="sid" />
|
||||
</template>
|
||||
|
||||
<template name="tmpl_0_0">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" bindtouchstart="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" animation="{{i.p0}}" bindanimationstart="eh" bindanimationiteration="eh" bindanimationend="eh" bindtransitionend="eh" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" catchtouchmove="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_0_6">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" animation="{{i.p0}}" style="{{i.st}}" class="{{i.cl}}" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_0_3">
|
||||
<view style="{{i.st}}" class="{{i.cl}}" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_0_1">
|
||||
<view style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_0_8">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" bindtouchstart="eh" bindtouchmove="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" animation="{{i.p0}}" bindanimationstart="eh" bindanimationiteration="eh" bindanimationend="eh" bindtransitionend="eh" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_0_5">
|
||||
<text selectable="{{xs.b(i.p3,!1)}}" space="{{i.p4}}" decode="{{xs.b(i.p0,!1)}}" user-select="{{xs.b(i.p5,false)}}" overflow="{{i.p2||visible}}" max-lines="{{i.p1}}" style="{{i.st}}" class="{{i.cl}}" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</text>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_0_7">
|
||||
<text selectable="{{xs.b(i.p3,!1)}}" space="{{i.p4}}" decode="{{xs.b(i.p0,!1)}}" bindtouchstart="eh" bindtouchmove="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" user-select="{{xs.b(i.p5,false)}}" overflow="{{i.p2||visible}}" max-lines="{{i.p1}}" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</text>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_0_14">
|
||||
<button size="{{i.p18||'default'}}" type="{{i.p19}}" plain="{{xs.b(i.p12,!1)}}" disabled="{{i.p2}}" loading="{{xs.b(i.p9,!1)}}" form-type="{{i.p3}}" open-type="{{i.p11}}" hover-class="{{i.p4||'button-hover'}}" hover-stop-propagation="{{xs.b(i.p7,!1)}}" hover-start-time="{{xs.b(i.p5,20)}}" hover-stay-time="{{xs.b(i.p6,70)}}" name="{{i.p10}}" bindagreeprivacyauthorization="eh" bindtouchstart="eh" bindtouchmove="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" lang="{{i.p8||en}}" session-from="{{i.p16}}" send-message-title="{{i.p15}}" send-message-path="{{i.p14}}" send-message-img="{{i.p13}}" app-parameter="{{i.p0}}" show-message-card="{{xs.b(i.p17,false)}}" business-id="{{i.p1}}" bindgetuserinfo="eh" bindcontact="eh" bindgetphonenumber="eh" bindgetrealtimephonenumber="eh" bindchooseavatar="eh" binderror="eh" bindopensetting="eh" bindlaunchapp="eh" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</button>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_0_33">
|
||||
<template is="{{xs.c(i, 'tmpl_0_')}}" data="{{i:i,c:c}}" />
|
||||
</template>
|
||||
|
||||
<template name="tmpl_0_33_focus">
|
||||
<input value="{{i.p25}}" type="{{i.p24||''}}" password="{{xs.b(i.p12,!1)}}" placeholder="{{i.p13}}" placeholder-style="{{i.p15}}" placeholder-class="{{i.p14||'input-placeholder'}}" disabled="{{i.p8}}" maxlength="{{xs.b(i.p10,140)}}" cursor-spacing="{{xs.b(i.p7,0)}}" focus="{{xs.b(i.focus,!1)}}" confirm-type="{{i.p4||'done'}}" confirm-hold="{{xs.b(i.p3,!1)}}" cursor="{{xs.b(i.p5,-1)}}" selection-start="{{xs.b(i.p23,-1)}}" selection-end="{{xs.b(i.p22,-1)}}" bindinput="eh" bindfocus="eh" bindblur="eh" bindconfirm="eh" name="{{i.p11}}" always-embed="{{xs.b(i.p1,false)}}" adjust-position="{{xs.b(i.p0,true)}}" hold-keyboard="{{xs.b(i.p9,false)}}" safe-password-cert-path="{{i.p16}}" safe-password-length="{{i.p18}}" safe-password-time-stamp="{{i.p21}}" safe-password-nonce="{{i.p19}}" safe-password-salt="{{i.p20}}" safe-password-custom-hash="{{i.p17}}" auto-fill="{{i.p2}}" cursor-color="{{i.p6}}" bindkeyboardheightchange="eh" bindnicknamereview="eh" bindselectionchange="eh" bindkeyboardcompositionstart="eh" bindkeyboardcompositionupdate="eh" bindkeyboardcompositionend="eh" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}"></input>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_0_33_blur">
|
||||
<input value="{{i.p25}}" type="{{i.p24||''}}" password="{{xs.b(i.p12,!1)}}" placeholder="{{i.p13}}" placeholder-style="{{i.p15}}" placeholder-class="{{i.p14||'input-placeholder'}}" disabled="{{i.p8}}" maxlength="{{xs.b(i.p10,140)}}" cursor-spacing="{{xs.b(i.p7,0)}}" confirm-type="{{i.p4||'done'}}" confirm-hold="{{xs.b(i.p3,!1)}}" cursor="{{xs.b(i.p5,-1)}}" selection-start="{{xs.b(i.p23,-1)}}" selection-end="{{xs.b(i.p22,-1)}}" bindinput="eh" bindfocus="eh" bindblur="eh" bindconfirm="eh" name="{{i.p11}}" always-embed="{{xs.b(i.p1,false)}}" adjust-position="{{xs.b(i.p0,true)}}" hold-keyboard="{{xs.b(i.p9,false)}}" safe-password-cert-path="{{i.p16}}" safe-password-length="{{i.p18}}" safe-password-time-stamp="{{i.p21}}" safe-password-nonce="{{i.p19}}" safe-password-salt="{{i.p20}}" safe-password-custom-hash="{{i.p17}}" auto-fill="{{i.p2}}" cursor-color="{{i.p6}}" bindkeyboardheightchange="eh" bindnicknamereview="eh" bindselectionchange="eh" bindkeyboardcompositionstart="eh" bindkeyboardcompositionupdate="eh" bindkeyboardcompositionend="eh" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}"></input>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_0_56">
|
||||
<picker mode="{{i.p6||'selector'}}" disabled="{{i.p1}}" range="{{i.p8}}" range-key="{{i.p9}}" value="{{i.p11}}" start="{{i.p10}}" end="{{i.p2}}" fields="{{i.p3||'day'}}" custom-item="{{i.p0}}" name="{{i.p7}}" bindcancel="eh" bindchange="eh" bindcolumnchange="eh" header-text="{{i.p4}}" level="{{i.p5||region}}" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</picker>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_0_77">
|
||||
<switch checked="{{xs.b(i.p0,!1)}}" disabled="{{i.p2}}" type="{{i.p4||'switch'}}" color="{{i.p1||'#04BE02'}}" bindchange="eh" name="{{i.p3}}" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}"></switch>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_0_66">
|
||||
<scroll-view scroll-x="{{xs.b(i.p34,!1)}}" scroll-y="{{xs.b(i.p35,!1)}}" upper-threshold="{{xs.b(i.p38,50)}}" lower-threshold="{{xs.b(i.p10,50)}}" scroll-top="{{i.p32}}" scroll-left="{{i.p31}}" scroll-into-view="{{i.p28}}" scroll-with-animation="{{xs.b(i.p33,!1)}}" enable-back-to-top="{{xs.b(i.p5,false)}}" bindscrolltoupper="eh" bindscrolltolower="eh" bindscroll="eh" bindtouchstart="eh" bindtouchmove="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" animation="{{i.p0}}" bindanimationstart="eh" bindanimationiteration="eh" bindanimationend="eh" bindtransitionend="eh" enable-flex="{{xs.b(i.p6,false)}}" scroll-anchoring="{{xs.b(i.p27,false)}}" enhanced="{{xs.b(i.p8,false)}}" using-sticky="{{xs.b(i.p39,false)}}" paging-enabled="{{xs.b(i.p13,false)}}" enable-passive="{{xs.b(i.p7,false)}}" refresher-enabled="{{xs.b(i.p17,false)}}" refresher-threshold="{{xs.b(i.p18,45)}}" refresher-default-style="{{i.p16||'black'}}" refresher-background="{{i.p14||'#FFF'}}" refresher-triggered="{{xs.b(i.p19,false)}}" bounces="{{xs.b(i.p2,true)}}" show-scrollbar="{{xs.b(i.p36,true)}}" fast-deceleration="{{xs.b(i.p9,false)}}" type="{{i.p37||'list'}}" associative-container="{{i.p1||''}}" reverse="{{xs.b(i.p26,false)}}" clip="{{xs.b(i.p4,true)}}" cache-extent="{{i.p3}}" min-drag-distance="{{xs.b(i.p11,18)}}" scroll-into-view-within-extent="{{xs.b(i.p30,false)}}" scroll-into-view-alignment="{{i.p29||'start'}}" padding="{{i.p12||[0,0,0,0]}}" refresher-two-level-enabled="{{xs.b(i.p21,false)}}" refresher-two-level-triggered="{{xs.b(i.p25,false)}}" refresher-two-level-threshold="{{xs.b(i.p24,150)}}" refresher-two-level-close-threshold="{{xs.b(i.p20,80)}}" refresher-two-level-scroll-enabled="{{xs.b(i.p23,false)}}" refresher-ballistic-refresh-enabled="{{xs.b(i.p15,false)}}" refresher-two-level-pinned="{{xs.b(i.p22,false)}}" binddragstart="eh" binddragging="eh" binddragend="eh" bindrefresherpulling="eh" bindrefresherrefresh="eh" bindrefresherrestore="eh" bindrefresherabort="eh" bindscrollstart="eh" bindscrollend="eh" bindrefresherwillrefresh="eh" bindrefresherstatuschange="eh" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</scroll-view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_0_4">
|
||||
<image src="{{i.p4}}" mode="{{i.p2||'scaleToFill'}}" lazy-load="{{xs.b(i.p1,!1)}}" webp="{{xs.b(i.p5,false)}}" show-menu-by-longpress="{{xs.b(i.p3,false)}}" fade-in="{{xs.b(i.p0,false)}}" style="{{i.st}}" class="{{i.cl}}" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</image>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_0_2">
|
||||
<image src="{{i.p4}}" mode="{{i.p2||'scaleToFill'}}" lazy-load="{{xs.b(i.p1,!1)}}" binderror="eh" bindload="eh" bindtouchstart="eh" bindtouchmove="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" webp="{{xs.b(i.p5,false)}}" show-menu-by-longpress="{{xs.b(i.p3,false)}}" fade-in="{{xs.b(i.p0,false)}}" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</image>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_0_81">
|
||||
<video src="{{i.p41}}" duration="{{i.p11}}" controls="{{xs.b(i.p7,!0)}}" danmu-list="{{i.p9}}" danmu-btn="{{i.p8}}" enable-danmu="{{i.p13}}" autoplay="{{xs.b(i.p4,!1)}}" loop="{{xs.b(i.p20,!1)}}" muted="{{xs.b(i.p21,!1)}}" initial-time="{{xs.b(i.p16,0)}}" page-gesture="{{xs.b(i.p23,!1)}}" direction="{{i.p10}}" show-progress="{{xs.b(i.p38,!0)}}" show-fullscreen-btn="{{xs.b(i.p35,!0)}}" show-play-btn="{{xs.b(i.p37,!0)}}" show-center-play-btn="{{xs.b(i.p34,!0)}}" enable-progress-gesture="{{xs.b(i.p15,!0)}}" object-fit="{{i.p22||'contain'}}" poster="{{i.p26}}" show-mute-btn="{{xs.b(i.p36,!1)}}" bindplay="eh" bindpause="eh" bindended="eh" bindtimeupdate="eh" bindfullscreenchange="eh" bindwaiting="eh" binderror="eh" animation="{{i.p1}}" bindanimationstart="eh" bindanimationiteration="eh" bindanimationend="eh" bindtransitionend="eh" title="{{i.p42}}" play-btn-position="{{i.p25||'bottom'}}" enable-play-gesture="{{xs.b(i.p14,false)}}" auto-pause-if-navigate="{{xs.b(i.p2,true)}}" auto-pause-if-open-native="{{xs.b(i.p3,true)}}" vslide-gesture="{{xs.b(i.p43,false)}}" vslide-gesture-in-fullscreen="{{xs.b(i.p44,true)}}" show-bottom-progress="{{xs.b(i.p32,true)}}" ad-unit-id="{{i.p0}}" poster-for-crawler="{{i.p27}}" show-casting-button="{{xs.b(i.p33,false)}}" picture-in-picture-mode="{{i.p24||[]}}" enable-auto-rotation="{{xs.b(i.p12,false)}}" show-screen-lock-button="{{xs.b(i.p39,false)}}" show-snapshot-button="{{xs.b(i.p40,false)}}" show-background-playback-button="{{xs.b(i.p31,false)}}" background-poster="{{i.p5}}" referrer-policy="{{i.p30||'no-referrer'}}" is-drm="{{xs.b(i.p17,false)}}" is-live="{{xs.b(i.p18,false)}}" provision-url="{{i.p29}}" certificate-url="{{i.p6}}" license-url="{{i.p19}}" preferred-peak-bit-rate="{{i.p28}}" bindprogress="eh" bindloadedmetadata="eh" bindcontrolstoggle="eh" bindenterpictureinpicture="eh" bindleavepictureinpicture="eh" bindseekcomplete="eh" bindcastinguserselect="eh" bindcastingstatechange="eh" bindcastinginterrupt="eh" bindadload="eh" bindaderror="eh" bindadclose="eh" bindadplay="eh" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</video>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_0_9">
|
||||
<block>{{i.v}}</block>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_1_0">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" bindtouchstart="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" animation="{{i.p0}}" bindanimationstart="eh" bindanimationiteration="eh" bindanimationend="eh" bindtransitionend="eh" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" catchtouchmove="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_1_6">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" animation="{{i.p0}}" style="{{i.st}}" class="{{i.cl}}" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_1_3">
|
||||
<view style="{{i.st}}" class="{{i.cl}}" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_1_1">
|
||||
<view style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_1_8">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" bindtouchstart="eh" bindtouchmove="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" animation="{{i.p0}}" bindanimationstart="eh" bindanimationiteration="eh" bindanimationend="eh" bindtransitionend="eh" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_1_5">
|
||||
<text selectable="{{xs.b(i.p3,!1)}}" space="{{i.p4}}" decode="{{xs.b(i.p0,!1)}}" user-select="{{xs.b(i.p5,false)}}" overflow="{{i.p2||visible}}" max-lines="{{i.p1}}" style="{{i.st}}" class="{{i.cl}}" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</text>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_1_7">
|
||||
<text selectable="{{xs.b(i.p3,!1)}}" space="{{i.p4}}" decode="{{xs.b(i.p0,!1)}}" bindtouchstart="eh" bindtouchmove="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" user-select="{{xs.b(i.p5,false)}}" overflow="{{i.p2||visible}}" max-lines="{{i.p1}}" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</text>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_1_66">
|
||||
<scroll-view scroll-x="{{xs.b(i.p34,!1)}}" scroll-y="{{xs.b(i.p35,!1)}}" upper-threshold="{{xs.b(i.p38,50)}}" lower-threshold="{{xs.b(i.p10,50)}}" scroll-top="{{i.p32}}" scroll-left="{{i.p31}}" scroll-into-view="{{i.p28}}" scroll-with-animation="{{xs.b(i.p33,!1)}}" enable-back-to-top="{{xs.b(i.p5,false)}}" bindscrolltoupper="eh" bindscrolltolower="eh" bindscroll="eh" bindtouchstart="eh" bindtouchmove="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" animation="{{i.p0}}" bindanimationstart="eh" bindanimationiteration="eh" bindanimationend="eh" bindtransitionend="eh" enable-flex="{{xs.b(i.p6,false)}}" scroll-anchoring="{{xs.b(i.p27,false)}}" enhanced="{{xs.b(i.p8,false)}}" using-sticky="{{xs.b(i.p39,false)}}" paging-enabled="{{xs.b(i.p13,false)}}" enable-passive="{{xs.b(i.p7,false)}}" refresher-enabled="{{xs.b(i.p17,false)}}" refresher-threshold="{{xs.b(i.p18,45)}}" refresher-default-style="{{i.p16||'black'}}" refresher-background="{{i.p14||'#FFF'}}" refresher-triggered="{{xs.b(i.p19,false)}}" bounces="{{xs.b(i.p2,true)}}" show-scrollbar="{{xs.b(i.p36,true)}}" fast-deceleration="{{xs.b(i.p9,false)}}" type="{{i.p37||'list'}}" associative-container="{{i.p1||''}}" reverse="{{xs.b(i.p26,false)}}" clip="{{xs.b(i.p4,true)}}" cache-extent="{{i.p3}}" min-drag-distance="{{xs.b(i.p11,18)}}" scroll-into-view-within-extent="{{xs.b(i.p30,false)}}" scroll-into-view-alignment="{{i.p29||'start'}}" padding="{{i.p12||[0,0,0,0]}}" refresher-two-level-enabled="{{xs.b(i.p21,false)}}" refresher-two-level-triggered="{{xs.b(i.p25,false)}}" refresher-two-level-threshold="{{xs.b(i.p24,150)}}" refresher-two-level-close-threshold="{{xs.b(i.p20,80)}}" refresher-two-level-scroll-enabled="{{xs.b(i.p23,false)}}" refresher-ballistic-refresh-enabled="{{xs.b(i.p15,false)}}" refresher-two-level-pinned="{{xs.b(i.p22,false)}}" binddragstart="eh" binddragging="eh" binddragend="eh" bindrefresherpulling="eh" bindrefresherrefresh="eh" bindrefresherrestore="eh" bindrefresherabort="eh" bindscrollstart="eh" bindscrollend="eh" bindrefresherwillrefresh="eh" bindrefresherstatuschange="eh" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</scroll-view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_2_0">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" bindtouchstart="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" animation="{{i.p0}}" bindanimationstart="eh" bindanimationiteration="eh" bindanimationend="eh" bindtransitionend="eh" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" catchtouchmove="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_2_6">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" animation="{{i.p0}}" style="{{i.st}}" class="{{i.cl}}" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_2_3">
|
||||
<view style="{{i.st}}" class="{{i.cl}}" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_2_1">
|
||||
<view style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_2_8">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" bindtouchstart="eh" bindtouchmove="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" animation="{{i.p0}}" bindanimationstart="eh" bindanimationiteration="eh" bindanimationend="eh" bindtransitionend="eh" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_2_5">
|
||||
<text selectable="{{xs.b(i.p3,!1)}}" space="{{i.p4}}" decode="{{xs.b(i.p0,!1)}}" user-select="{{xs.b(i.p5,false)}}" overflow="{{i.p2||visible}}" max-lines="{{i.p1}}" style="{{i.st}}" class="{{i.cl}}" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</text>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_2_7">
|
||||
<text selectable="{{xs.b(i.p3,!1)}}" space="{{i.p4}}" decode="{{xs.b(i.p0,!1)}}" bindtouchstart="eh" bindtouchmove="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" user-select="{{xs.b(i.p5,false)}}" overflow="{{i.p2||visible}}" max-lines="{{i.p1}}" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</text>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_2_66">
|
||||
<scroll-view scroll-x="{{xs.b(i.p34,!1)}}" scroll-y="{{xs.b(i.p35,!1)}}" upper-threshold="{{xs.b(i.p38,50)}}" lower-threshold="{{xs.b(i.p10,50)}}" scroll-top="{{i.p32}}" scroll-left="{{i.p31}}" scroll-into-view="{{i.p28}}" scroll-with-animation="{{xs.b(i.p33,!1)}}" enable-back-to-top="{{xs.b(i.p5,false)}}" bindscrolltoupper="eh" bindscrolltolower="eh" bindscroll="eh" bindtouchstart="eh" bindtouchmove="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" animation="{{i.p0}}" bindanimationstart="eh" bindanimationiteration="eh" bindanimationend="eh" bindtransitionend="eh" enable-flex="{{xs.b(i.p6,false)}}" scroll-anchoring="{{xs.b(i.p27,false)}}" enhanced="{{xs.b(i.p8,false)}}" using-sticky="{{xs.b(i.p39,false)}}" paging-enabled="{{xs.b(i.p13,false)}}" enable-passive="{{xs.b(i.p7,false)}}" refresher-enabled="{{xs.b(i.p17,false)}}" refresher-threshold="{{xs.b(i.p18,45)}}" refresher-default-style="{{i.p16||'black'}}" refresher-background="{{i.p14||'#FFF'}}" refresher-triggered="{{xs.b(i.p19,false)}}" bounces="{{xs.b(i.p2,true)}}" show-scrollbar="{{xs.b(i.p36,true)}}" fast-deceleration="{{xs.b(i.p9,false)}}" type="{{i.p37||'list'}}" associative-container="{{i.p1||''}}" reverse="{{xs.b(i.p26,false)}}" clip="{{xs.b(i.p4,true)}}" cache-extent="{{i.p3}}" min-drag-distance="{{xs.b(i.p11,18)}}" scroll-into-view-within-extent="{{xs.b(i.p30,false)}}" scroll-into-view-alignment="{{i.p29||'start'}}" padding="{{i.p12||[0,0,0,0]}}" refresher-two-level-enabled="{{xs.b(i.p21,false)}}" refresher-two-level-triggered="{{xs.b(i.p25,false)}}" refresher-two-level-threshold="{{xs.b(i.p24,150)}}" refresher-two-level-close-threshold="{{xs.b(i.p20,80)}}" refresher-two-level-scroll-enabled="{{xs.b(i.p23,false)}}" refresher-ballistic-refresh-enabled="{{xs.b(i.p15,false)}}" refresher-two-level-pinned="{{xs.b(i.p22,false)}}" binddragstart="eh" binddragging="eh" binddragend="eh" bindrefresherpulling="eh" bindrefresherrefresh="eh" bindrefresherrestore="eh" bindrefresherabort="eh" bindscrollstart="eh" bindscrollend="eh" bindrefresherwillrefresh="eh" bindrefresherstatuschange="eh" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</scroll-view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_3_0">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" bindtouchstart="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" animation="{{i.p0}}" bindanimationstart="eh" bindanimationiteration="eh" bindanimationend="eh" bindtransitionend="eh" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" catchtouchmove="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_3_6">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" animation="{{i.p0}}" style="{{i.st}}" class="{{i.cl}}" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_3_3">
|
||||
<view style="{{i.st}}" class="{{i.cl}}" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_3_1">
|
||||
<view style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_3_8">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" bindtouchstart="eh" bindtouchmove="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" animation="{{i.p0}}" bindanimationstart="eh" bindanimationiteration="eh" bindanimationend="eh" bindtransitionend="eh" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_3_5">
|
||||
<text selectable="{{xs.b(i.p3,!1)}}" space="{{i.p4}}" decode="{{xs.b(i.p0,!1)}}" user-select="{{xs.b(i.p5,false)}}" overflow="{{i.p2||visible}}" max-lines="{{i.p1}}" style="{{i.st}}" class="{{i.cl}}" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</text>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_3_7">
|
||||
<text selectable="{{xs.b(i.p3,!1)}}" space="{{i.p4}}" decode="{{xs.b(i.p0,!1)}}" bindtouchstart="eh" bindtouchmove="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" user-select="{{xs.b(i.p5,false)}}" overflow="{{i.p2||visible}}" max-lines="{{i.p1}}" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</text>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_3_66">
|
||||
<scroll-view scroll-x="{{xs.b(i.p34,!1)}}" scroll-y="{{xs.b(i.p35,!1)}}" upper-threshold="{{xs.b(i.p38,50)}}" lower-threshold="{{xs.b(i.p10,50)}}" scroll-top="{{i.p32}}" scroll-left="{{i.p31}}" scroll-into-view="{{i.p28}}" scroll-with-animation="{{xs.b(i.p33,!1)}}" enable-back-to-top="{{xs.b(i.p5,false)}}" bindscrolltoupper="eh" bindscrolltolower="eh" bindscroll="eh" bindtouchstart="eh" bindtouchmove="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" animation="{{i.p0}}" bindanimationstart="eh" bindanimationiteration="eh" bindanimationend="eh" bindtransitionend="eh" enable-flex="{{xs.b(i.p6,false)}}" scroll-anchoring="{{xs.b(i.p27,false)}}" enhanced="{{xs.b(i.p8,false)}}" using-sticky="{{xs.b(i.p39,false)}}" paging-enabled="{{xs.b(i.p13,false)}}" enable-passive="{{xs.b(i.p7,false)}}" refresher-enabled="{{xs.b(i.p17,false)}}" refresher-threshold="{{xs.b(i.p18,45)}}" refresher-default-style="{{i.p16||'black'}}" refresher-background="{{i.p14||'#FFF'}}" refresher-triggered="{{xs.b(i.p19,false)}}" bounces="{{xs.b(i.p2,true)}}" show-scrollbar="{{xs.b(i.p36,true)}}" fast-deceleration="{{xs.b(i.p9,false)}}" type="{{i.p37||'list'}}" associative-container="{{i.p1||''}}" reverse="{{xs.b(i.p26,false)}}" clip="{{xs.b(i.p4,true)}}" cache-extent="{{i.p3}}" min-drag-distance="{{xs.b(i.p11,18)}}" scroll-into-view-within-extent="{{xs.b(i.p30,false)}}" scroll-into-view-alignment="{{i.p29||'start'}}" padding="{{i.p12||[0,0,0,0]}}" refresher-two-level-enabled="{{xs.b(i.p21,false)}}" refresher-two-level-triggered="{{xs.b(i.p25,false)}}" refresher-two-level-threshold="{{xs.b(i.p24,150)}}" refresher-two-level-close-threshold="{{xs.b(i.p20,80)}}" refresher-two-level-scroll-enabled="{{xs.b(i.p23,false)}}" refresher-ballistic-refresh-enabled="{{xs.b(i.p15,false)}}" refresher-two-level-pinned="{{xs.b(i.p22,false)}}" binddragstart="eh" binddragging="eh" binddragend="eh" bindrefresherpulling="eh" bindrefresherrefresh="eh" bindrefresherrestore="eh" bindrefresherabort="eh" bindscrollstart="eh" bindscrollend="eh" bindrefresherwillrefresh="eh" bindrefresherstatuschange="eh" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</scroll-view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_4_0">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" bindtouchstart="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" animation="{{i.p0}}" bindanimationstart="eh" bindanimationiteration="eh" bindanimationend="eh" bindtransitionend="eh" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" catchtouchmove="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_4_6">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" animation="{{i.p0}}" style="{{i.st}}" class="{{i.cl}}" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_4_3">
|
||||
<view style="{{i.st}}" class="{{i.cl}}" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_4_1">
|
||||
<view style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_4_8">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" bindtouchstart="eh" bindtouchmove="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" animation="{{i.p0}}" bindanimationstart="eh" bindanimationiteration="eh" bindanimationend="eh" bindtransitionend="eh" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_4_5">
|
||||
<text selectable="{{xs.b(i.p3,!1)}}" space="{{i.p4}}" decode="{{xs.b(i.p0,!1)}}" user-select="{{xs.b(i.p5,false)}}" overflow="{{i.p2||visible}}" max-lines="{{i.p1}}" style="{{i.st}}" class="{{i.cl}}" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</text>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_4_7">
|
||||
<text selectable="{{xs.b(i.p3,!1)}}" space="{{i.p4}}" decode="{{xs.b(i.p0,!1)}}" bindtouchstart="eh" bindtouchmove="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" user-select="{{xs.b(i.p5,false)}}" overflow="{{i.p2||visible}}" max-lines="{{i.p1}}" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</text>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_5_0">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" bindtouchstart="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" animation="{{i.p0}}" bindanimationstart="eh" bindanimationiteration="eh" bindanimationend="eh" bindtransitionend="eh" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" catchtouchmove="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_5_6">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" animation="{{i.p0}}" style="{{i.st}}" class="{{i.cl}}" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_5_3">
|
||||
<view style="{{i.st}}" class="{{i.cl}}" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_5_1">
|
||||
<view style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_5_8">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" bindtouchstart="eh" bindtouchmove="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" animation="{{i.p0}}" bindanimationstart="eh" bindanimationiteration="eh" bindanimationend="eh" bindtransitionend="eh" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_5_5">
|
||||
<text selectable="{{xs.b(i.p3,!1)}}" space="{{i.p4}}" decode="{{xs.b(i.p0,!1)}}" user-select="{{xs.b(i.p5,false)}}" overflow="{{i.p2||visible}}" max-lines="{{i.p1}}" style="{{i.st}}" class="{{i.cl}}" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</text>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_5_7">
|
||||
<text selectable="{{xs.b(i.p3,!1)}}" space="{{i.p4}}" decode="{{xs.b(i.p0,!1)}}" bindtouchstart="eh" bindtouchmove="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" user-select="{{xs.b(i.p5,false)}}" overflow="{{i.p2||visible}}" max-lines="{{i.p1}}" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</text>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_6_0">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" bindtouchstart="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" animation="{{i.p0}}" bindanimationstart="eh" bindanimationiteration="eh" bindanimationend="eh" bindtransitionend="eh" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" catchtouchmove="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_6_6">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" animation="{{i.p0}}" style="{{i.st}}" class="{{i.cl}}" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_6_3">
|
||||
<view style="{{i.st}}" class="{{i.cl}}" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_6_1">
|
||||
<view style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_6_8">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" bindtouchstart="eh" bindtouchmove="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" animation="{{i.p0}}" bindanimationstart="eh" bindanimationiteration="eh" bindanimationend="eh" bindtransitionend="eh" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_6_7">
|
||||
<text selectable="{{xs.b(i.p3,!1)}}" space="{{i.p4}}" decode="{{xs.b(i.p0,!1)}}" bindtouchstart="eh" bindtouchmove="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" user-select="{{xs.b(i.p5,false)}}" overflow="{{i.p2||visible}}" max-lines="{{i.p1}}" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</text>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_7_0">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" bindtouchstart="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" animation="{{i.p0}}" bindanimationstart="eh" bindanimationiteration="eh" bindanimationend="eh" bindtransitionend="eh" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" catchtouchmove="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_7_6">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" animation="{{i.p0}}" style="{{i.st}}" class="{{i.cl}}" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_7_3">
|
||||
<view style="{{i.st}}" class="{{i.cl}}" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_7_1">
|
||||
<view style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_7_8">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" bindtouchstart="eh" bindtouchmove="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" animation="{{i.p0}}" bindanimationstart="eh" bindanimationiteration="eh" bindanimationend="eh" bindtransitionend="eh" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_7_7">
|
||||
<text selectable="{{xs.b(i.p3,!1)}}" space="{{i.p4}}" decode="{{xs.b(i.p0,!1)}}" bindtouchstart="eh" bindtouchmove="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" user-select="{{xs.b(i.p5,false)}}" overflow="{{i.p2||visible}}" max-lines="{{i.p1}}" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</text>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_8_0">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" bindtouchstart="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" animation="{{i.p0}}" bindanimationstart="eh" bindanimationiteration="eh" bindanimationend="eh" bindtransitionend="eh" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" catchtouchmove="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_8_6">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" animation="{{i.p0}}" style="{{i.st}}" class="{{i.cl}}" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_8_3">
|
||||
<view style="{{i.st}}" class="{{i.cl}}" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_8_1">
|
||||
<view style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_8_8">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" bindtouchstart="eh" bindtouchmove="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" animation="{{i.p0}}" bindanimationstart="eh" bindanimationiteration="eh" bindanimationend="eh" bindtransitionend="eh" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_8_7">
|
||||
<text selectable="{{xs.b(i.p3,!1)}}" space="{{i.p4}}" decode="{{xs.b(i.p0,!1)}}" bindtouchstart="eh" bindtouchmove="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" user-select="{{xs.b(i.p5,false)}}" overflow="{{i.p2||visible}}" max-lines="{{i.p1}}" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</text>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_9_0">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" bindtouchstart="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" animation="{{i.p0}}" bindanimationstart="eh" bindanimationiteration="eh" bindanimationend="eh" bindtransitionend="eh" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" catchtouchmove="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_9_6">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" animation="{{i.p0}}" style="{{i.st}}" class="{{i.cl}}" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_9_3">
|
||||
<view style="{{i.st}}" class="{{i.cl}}" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_9_1">
|
||||
<view style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_9_8">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" bindtouchstart="eh" bindtouchmove="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" animation="{{i.p0}}" bindanimationstart="eh" bindanimationiteration="eh" bindanimationend="eh" bindtransitionend="eh" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_9_7">
|
||||
<text selectable="{{xs.b(i.p3,!1)}}" space="{{i.p4}}" decode="{{xs.b(i.p0,!1)}}" bindtouchstart="eh" bindtouchmove="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" user-select="{{xs.b(i.p5,false)}}" overflow="{{i.p2||visible}}" max-lines="{{i.p1}}" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</text>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_10_0">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" bindtouchstart="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" animation="{{i.p0}}" bindanimationstart="eh" bindanimationiteration="eh" bindanimationend="eh" bindtransitionend="eh" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" catchtouchmove="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_10_6">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" animation="{{i.p0}}" style="{{i.st}}" class="{{i.cl}}" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_10_3">
|
||||
<view style="{{i.st}}" class="{{i.cl}}" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_10_1">
|
||||
<view style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_10_8">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" bindtouchstart="eh" bindtouchmove="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" animation="{{i.p0}}" bindanimationstart="eh" bindanimationiteration="eh" bindanimationend="eh" bindtransitionend="eh" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_10_7">
|
||||
<text selectable="{{xs.b(i.p3,!1)}}" space="{{i.p4}}" decode="{{xs.b(i.p0,!1)}}" bindtouchstart="eh" bindtouchmove="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" user-select="{{xs.b(i.p5,false)}}" overflow="{{i.p2||visible}}" max-lines="{{i.p1}}" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</text>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_11_0">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" bindtouchstart="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" animation="{{i.p0}}" bindanimationstart="eh" bindanimationiteration="eh" bindanimationend="eh" bindtransitionend="eh" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" catchtouchmove="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_11_6">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" animation="{{i.p0}}" style="{{i.st}}" class="{{i.cl}}" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_11_3">
|
||||
<view style="{{i.st}}" class="{{i.cl}}" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_11_1">
|
||||
<view style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_11_8">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" bindtouchstart="eh" bindtouchmove="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" animation="{{i.p0}}" bindanimationstart="eh" bindanimationiteration="eh" bindanimationend="eh" bindtransitionend="eh" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_11_7">
|
||||
<text selectable="{{xs.b(i.p3,!1)}}" space="{{i.p4}}" decode="{{xs.b(i.p0,!1)}}" bindtouchstart="eh" bindtouchmove="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" user-select="{{xs.b(i.p5,false)}}" overflow="{{i.p2||visible}}" max-lines="{{i.p1}}" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</text>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_12_0">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" bindtouchstart="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" animation="{{i.p0}}" bindanimationstart="eh" bindanimationiteration="eh" bindanimationend="eh" bindtransitionend="eh" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" catchtouchmove="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_12_6">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" animation="{{i.p0}}" style="{{i.st}}" class="{{i.cl}}" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_12_3">
|
||||
<view style="{{i.st}}" class="{{i.cl}}" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_12_1">
|
||||
<view style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_12_8">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" bindtouchstart="eh" bindtouchmove="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" animation="{{i.p0}}" bindanimationstart="eh" bindanimationiteration="eh" bindanimationend="eh" bindtransitionend="eh" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_12_7">
|
||||
<text selectable="{{xs.b(i.p3,!1)}}" space="{{i.p4}}" decode="{{xs.b(i.p0,!1)}}" bindtouchstart="eh" bindtouchmove="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" user-select="{{xs.b(i.p5,false)}}" overflow="{{i.p2||visible}}" max-lines="{{i.p1}}" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</text>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_13_0">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" bindtouchstart="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" animation="{{i.p0}}" bindanimationstart="eh" bindanimationiteration="eh" bindanimationend="eh" bindtransitionend="eh" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" catchtouchmove="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_13_6">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" animation="{{i.p0}}" style="{{i.st}}" class="{{i.cl}}" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_13_3">
|
||||
<view style="{{i.st}}" class="{{i.cl}}" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_13_1">
|
||||
<view style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_13_8">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" bindtouchstart="eh" bindtouchmove="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" animation="{{i.p0}}" bindanimationstart="eh" bindanimationiteration="eh" bindanimationend="eh" bindtransitionend="eh" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_13_7">
|
||||
<text selectable="{{xs.b(i.p3,!1)}}" space="{{i.p4}}" decode="{{xs.b(i.p0,!1)}}" bindtouchstart="eh" bindtouchmove="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" user-select="{{xs.b(i.p5,false)}}" overflow="{{i.p2||visible}}" max-lines="{{i.p1}}" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.a(c, item.nn, l)}}" data="{{i:item,c:c+1,l:xs.f(l,item.nn)}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</text>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_14_0">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" bindtouchstart="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" animation="{{i.p0}}" bindanimationstart="eh" bindanimationiteration="eh" bindanimationend="eh" bindtransitionend="eh" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" catchtouchmove="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.e(15)}}" data="{{i:item,c:c,l:l}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_14_6">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" animation="{{i.p0}}" style="{{i.st}}" class="{{i.cl}}" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.e(15)}}" data="{{i:item,c:c,l:l}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_14_3">
|
||||
<view style="{{i.st}}" class="{{i.cl}}" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.e(15)}}" data="{{i:item,c:c,l:l}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_14_1">
|
||||
<view style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.e(15)}}" data="{{i:item,c:c,l:l}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_14_8">
|
||||
<view hover-class="{{i.p1||'none'}}" hover-stop-propagation="{{xs.b(i.p4,!1)}}" hover-start-time="{{xs.b(i.p2,50)}}" hover-stay-time="{{xs.b(i.p3,400)}}" bindtouchstart="eh" bindtouchmove="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" animation="{{i.p0}}" bindanimationstart="eh" bindanimationiteration="eh" bindanimationend="eh" bindtransitionend="eh" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.e(15)}}" data="{{i:item,c:c,l:l}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_14_7">
|
||||
<text selectable="{{xs.b(i.p3,!1)}}" space="{{i.p4}}" decode="{{xs.b(i.p0,!1)}}" bindtouchstart="eh" bindtouchmove="eh" bindtouchend="eh" bindtouchcancel="eh" bindlongpress="eh" user-select="{{xs.b(i.p5,false)}}" overflow="{{i.p2||visible}}" max-lines="{{i.p1}}" style="{{i.st}}" class="{{i.cl}}" bindtap="eh" id="{{i.uid||i.sid}}" data-sid="{{i.sid}}">
|
||||
<template is="{{xs.e(15)}}" data="{{i:item,c:c,l:l}}" wx:for="{{i.cn}}" wx:key="sid" />
|
||||
</text>
|
||||
</template>
|
||||
|
||||
<template name="tmpl_15_container">
|
||||
<block wx:if="{{i.nn === '9'}}">
|
||||
<template is="tmpl_0_9" data="{{i:i}}" />
|
||||
</block>
|
||||
<block wx:else>
|
||||
<comp i="{{i}}" l="{{l}}" />
|
||||
</block>
|
||||
</template>
|
||||
@@ -0,0 +1 @@
|
||||
.index-module__container___shrmH{-webkit-align-items:flex-end;display:-webkit-flex;display:-ms-flexbox;display:flex;-ms-flex-align:end;align-items:flex-end;gap:4rpx;padding:0 8rpx}.index-module__bar___aJN5t{border-radius:4rpx 4rpx 0 0;-webkit-flex:1;-ms-flex:1;flex:1;min-height:8rpx;opacity:.7;-webkit-transition:height .25s ease;transition:height .25s ease}.index-module__barActive___rMkol{opacity:1}.index-module__empty___dSdl8{-webkit-align-items:center;display:-webkit-flex;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.index-module__emptyText___NDPIc{color:#86909c;font-size:24rpx}
|
||||
@@ -0,0 +1 @@
|
||||
"use strict";(wx["webpackJsonp"]=wx["webpackJsonp"]||[]).push([[367],{},function(n){var t=function(t){return n(n.s=t)};n.O(0,[107,216],function(){return t(4560)});n.O()}]);
|
||||
@@ -0,0 +1 @@
|
||||
{"component":true,"styleIsolation":"apply-shared","usingComponents":{"comp":"./comp"}}
|
||||
@@ -0,0 +1,3 @@
|
||||
<import src="./base.wxml" />
|
||||
<wxs module="xs" src="./utils.wxs" />
|
||||
<template is="{{'tmpl_0_' + i.nn}}" data="{{i:i,c:1,l:xs.f('',i.nn)}}" />
|
||||
@@ -0,0 +1 @@
|
||||
{"navigationBarTitleText":"告警","enablePullDownRefresh":true,"usingComponents":{"comp":"../../comp"}}
|
||||
@@ -0,0 +1,2 @@
|
||||
<import src="../../base.wxml"/>
|
||||
<template is="taro_tmpl" data="{{root:root}}" />
|
||||
@@ -0,0 +1 @@
|
||||
.index-module__alertsPage___Mt1hb{background:#f5f6f7;min-height:100vh;padding-bottom:48rpx}.index-module__filterBar___qucyV{background:#fff;-webkit-box-shadow:0 2rpx 12rpx rgba(0,0,0,.08);box-shadow:0 2rpx 12rpx rgba(0,0,0,.08);display:-webkit-flex;display:-ms-flexbox;display:flex;gap:24rpx;padding:16rpx 32rpx}.index-module__filterTab___Q8syU{border-radius:8rpx;color:#4e5969;-webkit-flex:1;-ms-flex:1;flex:1;font-size:24rpx;padding:8rpx 0;text-align:center;-webkit-transition:all .25s ease;transition:all .25s ease}.index-module__filterTabActive___v0CCa{background:#10b981;color:#fff;font-weight:500}.index-module__alarmList___WJzMc{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:16rpx;padding:24rpx 32rpx}.index-module__alarmCard___cDjQ0{background:#fff;border-left:8rpx solid transparent;border-radius:12rpx;-webkit-box-shadow:0 2rpx 12rpx rgba(0,0,0,.08);box-shadow:0 2rpx 12rpx rgba(0,0,0,.08);padding:24rpx 32rpx}.index-module__alarmHeader___XIgTf{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-justify-content:space-between;-ms-flex-pack:justify;-webkit-align-items:flex-start;justify-content:space-between;-ms-flex-align:start;align-items:flex-start;margin-bottom:16rpx}.index-module__alarmTitleRow___epnNk{-webkit-align-items:center;display:-webkit-flex;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-flex:1;-ms-flex:1;flex:1;gap:16rpx;min-width:0}.index-module__alarmIcon___kRdgX{-webkit-flex-shrink:0;font-size:32rpx;-ms-flex-negative:0;flex-shrink:0}.index-module__alarmTitle___qCs8_{color:#1d2129;font-size:28rpx;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.index-module__alarmSeverity___JJaRQ{border-radius:4rpx;-webkit-flex-shrink:0;font-size:22rpx;padding:4rpx 16rpx;white-space:nowrap;-ms-flex-negative:0;flex-shrink:0;margin-left:16rpx}.index-module__alarmMessage___EfNLD{color:#4e5969;display:-webkit-box;font-size:24rpx;line-height:1.8;margin-bottom:16rpx;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;text-overflow:ellipsis}.index-module__alarmMeta___ax5Yr{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:24rpx;margin-bottom:16rpx}.index-module__metaItem___By5Jb{-webkit-align-items:center;display:-webkit-flex;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;color:#86909c;font-size:22rpx;gap:4rpx}.index-module__alarmFooter___VeZ6q{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-justify-content:space-between;-ms-flex-pack:justify;-webkit-align-items:center;justify-content:space-between;-ms-flex-align:center;align-items:center;border-top:2rpx solid #f2f3f5;padding-top:16rpx}.index-module__alarmTime___FdoBM{color:#86909c;font-size:22rpx}.index-module__ackBtn___WDQFD{border-radius:48rpx;font-size:22rpx;padding:8rpx 24rpx;-webkit-transition:all .25s ease;transition:all .25s ease;white-space:nowrap}.index-module__ackBtn___WDQFD:active{opacity:.85;-webkit-transform:scale(.98);-ms-transform:scale(.98);transform:scale(.98)}.index-module__ackBtnPrimary____ZGZG{background:#10b981;color:#fff}.index-module__ackBtnDone___rLDZ9{background:#f2f3f5;color:#86909c}.index-module__ackBtnClip___R9nSK{background:rgba(22,93,255,.1);color:#165dff}.index-module__clipBtn___DhKu1{display:-webkit-flex;display:-ms-flexbox;display:flex;gap:16rpx}.index-module__loadingWrap___kZY36{-webkit-align-items:center;display:-webkit-flex;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding:48rpx 0}.index-module__loadingText___K_VR8{color:#86909c;font-size:24rpx}.index-module__errorWrap___a82vC{-webkit-align-items:center;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding:48rpx 0}.index-module__errorIcon___mqt4L{font-size:56rpx;margin-bottom:16rpx}.index-module__errorText___mCaUz{color:#86909c;font-size:24rpx}.index-module__retryBtn___VTzVl{background:#10b981;border-radius:48rpx;color:#fff;font-size:24rpx;margin-top:24rpx;padding:8rpx 32rpx}.index-module__emptyWrap___bmGKI{-webkit-align-items:center;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding:120rpx 0}.index-module__emptyIcon___OqBUa{font-size:80rpx;margin-bottom:24rpx}.index-module__emptyText___bXhq_{color:#86909c;font-size:28rpx}
|
||||
@@ -0,0 +1 @@
|
||||
{"navigationBarTitleText":"仪表盘","enablePullDownRefresh":true,"usingComponents":{"comp":"../../comp"}}
|
||||
@@ -0,0 +1,2 @@
|
||||
<import src="../../base.wxml"/>
|
||||
<template is="taro_tmpl" data="{{root:root}}" />
|
||||
@@ -0,0 +1 @@
|
||||
{"navigationBarTitleText":"设备控制","usingComponents":{"comp":"../../../comp"}}
|
||||
@@ -0,0 +1,2 @@
|
||||
<import src="../../../base.wxml"/>
|
||||
<template is="taro_tmpl" data="{{root:root}}" />
|
||||
@@ -0,0 +1 @@
|
||||
{"navigationBarTitleText":"设备","enablePullDownRefresh":true,"usingComponents":{"comp":"../../comp"}}
|
||||
@@ -0,0 +1,2 @@
|
||||
<import src="../../base.wxml"/>
|
||||
<template is="taro_tmpl" data="{{root:root}}" />
|
||||
@@ -0,0 +1 @@
|
||||
"use strict";(wx["webpackJsonp"]=wx["webpackJsonp"]||[]).push([[3],{1386:function(e,n,s){var a=s(8774),t=s(2688),i=s(5861),l=s(9439),o=s(7294),r=s(1515),u=s(2954),c=s.n(u),d={loginPage:"index-module__loginPage___GpNPu",header:"index-module__header___e8fXV",logo:"index-module__logo___BRHWC",title:"index-module__title___hfVnG",subtitle:"index-module__subtitle___QCYHJ",formCard:"index-module__formCard___usoTi",formItem:"index-module__formItem___sVXxY",formLabel:"index-module__formLabel___qvBRx",inputWrap:"index-module__inputWrap___eD55v",inputIcon:"index-module__inputIcon___Z6G9X",input:"index-module__input___IkOcz",loginButton:"index-module__loginButton___ZBTH7",loginButtonText:"index-module__loginButtonText___CAUoj",hint:"index-module__hint___HW7v8",defaultCred:"index-module__defaultCred___xRMGy"},_=s(8776),x=s(3851),m=s(5893),h=function(){var e=(0,o.useState)("admin"),n=(0,l.Z)(e,2),s=n[0],a=n[1],u=(0,o.useState)("silk@123"),h=(0,l.Z)(u,2),p=h[0],f=h[1],v=(0,o.useState)(!1),g=(0,l.Z)(v,2),j=g[0],N=g[1],b=(0,x.o)(),I=b.setAuth,T=b.token;(0,o.useEffect)(function(){T&&c().switchTab({url:"/pages/dashboard/index"})},[T]);var w=function(){var e=(0,i.Z)((0,t.Z)().m(function e(){var n,a;return(0,t.Z)().w(function(e){while(1)switch(e.p=e.n){case 0:if(s.trim()&&p.trim()){e.n=1;break}return c().showToast({title:"\u8bf7\u8f93\u5165\u8d26\u53f7\u548c\u5bc6\u7801",icon:"none"}),e.a(2);case 1:return N(!0),e.p=2,e.n=3,(0,_.x)({username:s.trim(),password:p});case 3:n=e.v,I(n.accessToken,n.refreshToken,n.user),console.log("[Auth] \u767b\u5f55\u6210\u529f:",n.user.username),c().showToast({title:"\u767b\u5f55\u6210\u529f",icon:"success"}),setTimeout(function(){c().switchTab({url:"/pages/dashboard/index"})},500),e.n=5;break;case 4:e.p=4,a=e.v,console.error("[Auth] \u767b\u5f55\u5931\u8d25:",a),c().showToast({title:a instanceof Error?a.message:"\u767b\u5f55\u5931\u8d25",icon:"none"});case 5:return e.p=5,N(!1),e.f(5);case 6:return e.a(2)}},e,null,[[2,4,5,6]])}));return function(){return e.apply(this,arguments)}}();return(0,m.jsxs)(r.G7,{className:d.loginPage,children:[(0,m.jsxs)(r.G7,{className:d.header,children:[(0,m.jsx)(r.G7,{className:d.logo,children:(0,m.jsx)(r.xv,{children:"\ud83d\udc1b"})}),(0,m.jsx)(r.xv,{className:d.title,children:"\u8695\u623f\u73af\u5883\u76d1\u63a7"}),(0,m.jsx)(r.xv,{className:d.subtitle,children:"\u667a\u80fd\u8695\u4e1a\u73af\u5883\u76d1\u6d4b\u7ba1\u7406\u5e73\u53f0"})]}),(0,m.jsxs)(r.G7,{className:d.formCard,children:[(0,m.jsxs)(r.G7,{className:d.formItem,children:[(0,m.jsx)(r.xv,{className:d.formLabel,children:"\u8d26\u53f7"}),(0,m.jsxs)(r.G7,{className:d.inputWrap,children:[(0,m.jsx)(r.xv,{className:d.inputIcon,children:"\ud83d\udc64"}),(0,m.jsx)(r.II,{className:d.input,type:"text",placeholder:"\u8bf7\u8f93\u5165\u8d26\u53f7",value:s,onInput:function(e){return a(e.detail.value)},maxlength:50})]})]}),(0,m.jsxs)(r.G7,{className:d.formItem,children:[(0,m.jsx)(r.xv,{className:d.formLabel,children:"\u5bc6\u7801"}),(0,m.jsxs)(r.G7,{className:d.inputWrap,children:[(0,m.jsx)(r.xv,{className:d.inputIcon,children:"\ud83d\udd12"}),(0,m.jsx)(r.II,{className:d.input,password:!0,placeholder:"\u8bf7\u8f93\u5165\u5bc6\u7801",value:p,onInput:function(e){return f(e.detail.value)},maxlength:50})]})]}),(0,m.jsx)(r.zx,{className:d.loginButton,loading:j,disabled:j,onClick:w,children:(0,m.jsx)(r.xv,{className:d.loginButtonText,children:j?"\u767b\u5f55\u4e2d...":"\u767b \u5f55"})}),(0,m.jsxs)(r.G7,{className:d.hint,children:[(0,m.jsx)(r.xv,{children:"\u9ed8\u8ba4\u8d26\u53f7: "}),(0,m.jsx)(r.xv,{className:d.defaultCred,children:"admin"}),(0,m.jsx)(r.xv,{children:" / \u5bc6\u7801: "}),(0,m.jsx)(r.xv,{className:d.defaultCred,children:"silk@123"})]})]})]})},p=h,f={navigationBarTitleText:"\u767b\u5f55",navigationStyle:"custom"},v=(0,a.R4)(p,"pages/login/index",{root:{cn:[]}},f||{});p&&p.behaviors&&(v.behaviors=(v.behaviors||[]).concat(p.behaviors));Page(v)}},function(e){var n=function(n){return e(e.s=n)};e.O(0,[107,216,592],function(){return n(1386)});e.O()}]);
|
||||
@@ -0,0 +1 @@
|
||||
{"navigationBarTitleText":"登录","navigationStyle":"custom","usingComponents":{"comp":"../../comp"}}
|
||||
@@ -0,0 +1,2 @@
|
||||
<import src="../../base.wxml"/>
|
||||
<template is="taro_tmpl" data="{{root:root}}" />
|
||||
@@ -0,0 +1 @@
|
||||
.index-module__loginPage___GpNPu{background:-webkit-linear-gradient(290deg,#10b981,#059669 40%,#f5f6f7 0,#f5f6f7);background:linear-gradient(160deg,#10b981,#059669 40%,#f5f6f7 0,#f5f6f7);display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;min-height:100vh;padding:0 32rpx}.index-module__header___e8fXV{-webkit-align-items:center;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-bottom:60rpx;padding-top:140rpx;-ms-flex-align:center;align-items:center}.index-module__logo___BRHWC{-webkit-align-items:center;background:hsla(0,0%,100%,.25);border-radius:999rpx;display:-webkit-flex;display:-ms-flexbox;display:flex;height:120rpx;width:120rpx;-ms-flex-align:center;align-items:center;-webkit-justify-content:center;-ms-flex-pack:center;font-size:56rpx;justify-content:center;margin-bottom:24rpx}.index-module__title___hfVnG{color:#fff;font-size:40rpx;font-weight:700;margin-bottom:8rpx}.index-module__subtitle___QCYHJ{color:hsla(0,0%,100%,.85);font-size:24rpx}.index-module__formCard___usoTi{background:#fff;border-radius:16rpx;-webkit-box-shadow:0 8rpx 32rpx rgba(0,0,0,.15);box-shadow:0 8rpx 32rpx rgba(0,0,0,.15);margin-top:48rpx;padding:48rpx 32rpx}.index-module__formItem___sVXxY{margin-bottom:32rpx}.index-module__formLabel___qvBRx{color:#4e5969;display:block;font-size:24rpx;margin-bottom:16rpx}.index-module__inputWrap___eD55v{-webkit-align-items:center;display:-webkit-flex;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;border-bottom:2rpx solid #e5e6eb;padding:16rpx 0}.index-module__inputIcon___Z6G9X{color:#86909c;font-size:36rpx;margin-right:16rpx}.index-module__input___IkOcz{color:#1d2129;-webkit-flex:1;-ms-flex:1;flex:1;font-size:28rpx;height:64rpx}.index-module__loginButton___ZBTH7{-webkit-align-items:center;background:-webkit-linear-gradient(315deg,#10b981,#34d399);background:linear-gradient(135deg,#10b981,#34d399);border-radius:48rpx;display:-webkit-flex;display:-ms-flexbox;display:flex;height:96rpx;width:100%;-ms-flex-align:center;align-items:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;margin-top:32rpx;-webkit-transition:all .25s ease;transition:all .25s ease}.index-module__loginButton___ZBTH7:active{opacity:.9;-webkit-transform:scale(.98);-ms-transform:scale(.98);transform:scale(.98)}.index-module__loginButton___ZBTH7:disabled{opacity:.5}.index-module__loginButtonText___CAUoj{color:#fff;font-size:32rpx;font-weight:500}.index-module__hint___HW7v8{color:#86909c;font-size:22rpx;line-height:1.8;margin-top:32rpx;text-align:center}.index-module__defaultCred___xRMGy{color:#10b981;font-weight:500}
|
||||
@@ -0,0 +1 @@
|
||||
{"navigationBarTitleText":"蚕房详情","enablePullDownRefresh":true,"usingComponents":{"comp":"../../../comp"}}
|
||||
@@ -0,0 +1,2 @@
|
||||
<import src="../../../base.wxml"/>
|
||||
<template is="taro_tmpl" data="{{root:root}}" />
|
||||
@@ -0,0 +1 @@
|
||||
{"navigationBarTitleText":"蚕房","enablePullDownRefresh":true,"usingComponents":{"comp":"../../comp"}}
|
||||
@@ -0,0 +1,2 @@
|
||||
<import src="../../base.wxml"/>
|
||||
<template is="taro_tmpl" data="{{root:root}}" />
|
||||
@@ -0,0 +1 @@
|
||||
.index-module__roomsPage___a4jYP{background:#f5f6f7;min-height:100vh;padding:24rpx 32rpx 48rpx}.index-module__roomList___b33tH{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:24rpx}.index-module__roomCard___uSnYu{background:#fff;border-radius:12rpx;-webkit-box-shadow:0 2rpx 12rpx rgba(0,0,0,.08);box-shadow:0 2rpx 12rpx rgba(0,0,0,.08);padding:32rpx;-webkit-transition:all .25s ease;transition:all .25s ease}.index-module__roomCard___uSnYu:active{opacity:.95;-webkit-transform:scale(.98);-ms-transform:scale(.98);transform:scale(.98)}.index-module__roomCardHeader___q6uUs{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-justify-content:space-between;-ms-flex-pack:justify;-webkit-align-items:flex-start;justify-content:space-between;-ms-flex-align:start;align-items:flex-start;margin-bottom:24rpx}.index-module__roomNameRow___eH_Px{-webkit-align-items:center;display:-webkit-flex;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-flex:1;-ms-flex:1;flex:1;gap:16rpx;min-width:0}.index-module__roomIcon___GMrrO{-webkit-flex-shrink:0;font-size:36rpx;-ms-flex-negative:0;flex-shrink:0}.index-module__roomName___nvw31{color:#1d2129;font-size:32rpx;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.index-module__roomStatus___XkgPS{border-radius:4rpx;-webkit-flex-shrink:0;font-size:22rpx;padding:4rpx 16rpx;white-space:nowrap;-ms-flex-negative:0;flex-shrink:0;margin-left:16rpx}.index-module__statusActive___Th1f7{background:rgba(0,180,42,.1);color:#00b42a}.index-module__statusAlarm___gTw3t{background:rgba(245,63,63,.1);color:#f53f3f}.index-module__statusMaintenance___KenKf{background:rgba(255,125,0,.1);color:#ff7d00}.index-module__statusInactive___TlDAO{background:rgba(134,144,156,.1);color:#86909c}.index-module__roomInfo___sxqsW{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:24rpx;margin-bottom:24rpx}.index-module__infoItem___lbZHf{-webkit-align-items:center;display:-webkit-flex;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:4rpx}.index-module__infoIcon___s0C9V{font-size:24rpx}.index-module__infoText___Bqg63{color:#4e5969;font-size:24rpx}.index-module__roomDesc___Xe2aE{color:#86909c;display:-webkit-box;font-size:24rpx;line-height:1.8;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;text-overflow:ellipsis}.index-module__roomCode___Jo17s{color:#86909c;font-size:22rpx;margin-top:16rpx}.index-module__loadingWrap___GhtDa{-webkit-align-items:center;display:-webkit-flex;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding:48rpx 0}.index-module__loadingText___pc6DM{color:#86909c;font-size:24rpx}.index-module__errorWrap___Bps4U{-webkit-align-items:center;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding:48rpx 0}.index-module__errorIcon___LOvxH{font-size:56rpx;margin-bottom:16rpx}.index-module__errorText___CKzHr{color:#86909c;font-size:24rpx}.index-module__retryBtn___PTNG1{background:#10b981;border-radius:48rpx;color:#fff;font-size:24rpx;margin-top:24rpx;padding:8rpx 32rpx}.index-module__emptyWrap___al9PY{-webkit-align-items:center;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding:120rpx 0}.index-module__emptyIcon___utdxE{font-size:80rpx;margin-bottom:24rpx}.index-module__emptyText___DX9m7{color:#86909c;font-size:28rpx}
|
||||
@@ -0,0 +1 @@
|
||||
{"navigationBarTitleText":"设置","usingComponents":{"comp":"../../comp"}}
|
||||
@@ -0,0 +1,2 @@
|
||||
<import src="../../base.wxml"/>
|
||||
<template is="taro_tmpl" data="{{root:root}}" />
|
||||
@@ -0,0 +1 @@
|
||||
.index-module__settingsPage___e4OOt{background:#f5f6f7;min-height:100vh;padding-bottom:48rpx}.index-module__profileCard___x2Mm4{-webkit-align-items:center;background:-webkit-linear-gradient(315deg,#10b981,#059669);background:linear-gradient(135deg,#10b981,#059669);display:-webkit-flex;display:-ms-flexbox;display:flex;padding:48rpx 32rpx;-ms-flex-align:center;align-items:center;gap:24rpx}.index-module__avatar___jGUXh{-webkit-align-items:center;background:hsla(0,0%,100%,.25);border-radius:999rpx;display:-webkit-flex;display:-ms-flexbox;display:flex;height:120rpx;width:120rpx;-ms-flex-align:center;align-items:center;-webkit-justify-content:center;-ms-flex-pack:center;-webkit-flex-shrink:0;font-size:56rpx;justify-content:center;-ms-flex-negative:0;flex-shrink:0}.index-module__profileInfo___A9OaO{-webkit-flex:1;-ms-flex:1;flex:1;min-width:0}.index-module__profileName___XeXIk{color:#fff;font-size:36rpx;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.index-module__profileRole___FNiNg{color:hsla(0,0%,100%,.85);font-size:24rpx;margin-top:4rpx}.index-module__profileEmail___E_pGP{color:hsla(0,0%,100%,.7);font-size:22rpx;margin-top:4rpx;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.index-module__section___UVl60{margin:24rpx 32rpx 0}.index-module__sectionTitle___G2Llq{color:#86909c;font-size:24rpx;margin-bottom:16rpx;padding-left:8rpx}.index-module__menuList___wybvQ{background:#fff;border-radius:12rpx;-webkit-box-shadow:0 2rpx 12rpx rgba(0,0,0,.08);box-shadow:0 2rpx 12rpx rgba(0,0,0,.08);overflow:hidden}.index-module__menuItem___xgY58{-webkit-align-items:center;display:-webkit-flex;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;border-bottom:2rpx solid #f2f3f5;padding:24rpx 32rpx;-webkit-transition:all .25s ease;transition:all .25s ease}.index-module__menuItem___xgY58:active{background:#f2f3f5}.index-module__menuItem___xgY58:last-child{border-bottom:none}.index-module__menuIcon___LmrOJ{-webkit-flex-shrink:0;font-size:36rpx;margin-right:24rpx;text-align:center;width:48rpx;-ms-flex-negative:0;flex-shrink:0}.index-module__menuLabel___qkCUi{color:#1d2129;-webkit-flex:1;-ms-flex:1;flex:1;font-size:28rpx}.index-module__menuArrow___aRAjw{color:#86909c;font-size:24rpx}.index-module__menuValue___RCdHF{color:#86909c;font-size:24rpx;margin-right:8rpx}.index-module__serverCard___CmshN{background:#fff;border-radius:12rpx;-webkit-box-shadow:0 2rpx 12rpx rgba(0,0,0,.08);box-shadow:0 2rpx 12rpx rgba(0,0,0,.08);padding:32rpx}.index-module__serverLabel___KBMXv{color:#4e5969;display:block;font-size:24rpx;margin-bottom:16rpx}.index-module__serverInput___RUyi0{background:#f5f6f7;border-radius:8rpx;-webkit-box-sizing:border-box;box-sizing:border-box;color:#1d2129;font-size:24rpx;height:80rpx;padding:0 24rpx;width:100%}.index-module__serverHint___RnmI1{color:#86909c;font-size:22rpx;line-height:1.5;margin-bottom:24rpx;margin-top:16rpx}.index-module__serverBtns___imFVc{display:-webkit-flex;display:-ms-flexbox;display:flex;gap:16rpx}.index-module__serverBtn___W_8E0{-webkit-align-items:center;border-radius:48rpx;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:1;-ms-flex:1;flex:1;height:64rpx;-ms-flex-align:center;align-items:center;-webkit-justify-content:center;-ms-flex-pack:center;-webkit-box-sizing:border-box;box-sizing:border-box;justify-content:center;line-height:normal;margin:0;padding:0;-webkit-transition:all .25s ease;transition:all .25s ease}.index-module__serverBtn___W_8E0::after{border:none}.index-module__serverBtn___W_8E0:active{opacity:.85;-webkit-transform:scale(.98);-ms-transform:scale(.98);transform:scale(.98)}.index-module__serverBtnPrimary___qzWhV{background:#10b981}.index-module__serverBtnDefault___umenV{background:#f5f6f7}.index-module__serverBtnText___nSsZJ{color:#fff;font-size:24rpx;font-weight:500}.index-module__serverBtnTextDefault___CNbNE{color:#4e5969;font-size:24rpx;font-weight:500}.index-module__logoutBtn___WTmK5{-webkit-align-items:center;background:#fff;border-radius:48rpx;display:-webkit-flex;display:-ms-flexbox;display:flex;height:96rpx;margin:48rpx 32rpx 0;-ms-flex-align:center;align-items:center;-webkit-justify-content:center;-ms-flex-pack:center;-webkit-box-shadow:0 2rpx 12rpx rgba(0,0,0,.08);box-shadow:0 2rpx 12rpx rgba(0,0,0,.08);justify-content:center;-webkit-transition:all .25s ease;transition:all .25s ease}.index-module__logoutBtn___WTmK5:active{opacity:.85;-webkit-transform:scale(.98);-ms-transform:scale(.98);transform:scale(.98)}.index-module__logoutText___lDhj5{color:#f53f3f;font-size:28rpx;font-weight:500}.index-module__versionText___VCg6v{color:#86909c;font-size:22rpx;margin-top:48rpx;text-align:center}
|
||||
@@ -0,0 +1 @@
|
||||
{"navigationBarTitleText":"阈值管理","enablePullDownRefresh":true,"usingComponents":{"comp":"../../comp"}}
|
||||
@@ -0,0 +1,2 @@
|
||||
<import src="../../base.wxml"/>
|
||||
<template is="taro_tmpl" data="{{root:root}}" />
|
||||
@@ -0,0 +1 @@
|
||||
{"navigationBarTitleText":"视频监控","enablePullDownRefresh":true,"usingComponents":{"comp":"../../comp"}}
|
||||
@@ -0,0 +1,2 @@
|
||||
<import src="../../base.wxml"/>
|
||||
<template is="taro_tmpl" data="{{root:root}}" />
|
||||
@@ -0,0 +1 @@
|
||||
{"navigationBarTitleText":"视频播放","navigationBarBackgroundColor":"#000000","navigationBarTextStyle":"white","backgroundColor":"#000000","usingComponents":{"comp":"../../../comp"}}
|
||||
@@ -0,0 +1,2 @@
|
||||
<import src="../../../base.wxml"/>
|
||||
<template is="taro_tmpl" data="{{root:root}}" />
|
||||
@@ -0,0 +1 @@
|
||||
.index-module__playerPage___ByHCI{background:#000;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;min-height:100vh}.index-module__videoContainer___OLC4T{-webkit-align-items:center;background:#000;display:-webkit-flex;display:-ms-flexbox;display:flex;height:422rpx;width:100%;-ms-flex-align:center;align-items:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;position:relative}.index-module__video___qAKku{height:100%;width:100%}.index-module__videoPlaceholder___TefSp{-webkit-align-items:center;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;-webkit-justify-content:center;-ms-flex-pack:center;color:hsla(0,0%,100%,.5);justify-content:center}.index-module__placeholderIcon___NWHor{font-size:80rpx;margin-bottom:24rpx}.index-module__placeholderText___SGwT7{font-size:24rpx}.index-module__loadingOverlay___rqYZl{-webkit-align-items:center;bottom:0;display:-webkit-flex;display:-ms-flexbox;display:flex;left:0;position:absolute;right:0;top:0;-ms-flex-align:center;align-items:center;-webkit-justify-content:center;-ms-flex-pack:center;background:rgba(0,0,0,.6);justify-content:center}.index-module__loadingText___Ifu_q{color:#fff;font-size:28rpx}.index-module__controls___eOh8z{background:#1a1a1a;padding:32rpx}.index-module__cameraTitle___x3eQT{color:#fff;font-size:32rpx;font-weight:600;margin-bottom:24rpx}.index-module__formatSelector___CsPOE{display:-webkit-flex;display:-ms-flexbox;display:flex;gap:16rpx;margin-bottom:24rpx}.index-module__formatChip___dAbt7{background:#333;border-radius:8rpx;color:hsla(0,0%,100%,.6);-webkit-flex:1;-ms-flex:1;flex:1;font-size:24rpx;padding:16rpx 0;text-align:center;-webkit-transition:all .25s ease;transition:all .25s ease;white-space:nowrap}.index-module__formatChipActive___moz6Y{background:#10b981;color:#fff}.index-module__playBtn___E3hdI{-webkit-align-items:center;background:-webkit-linear-gradient(315deg,#10b981,#34d399);background:linear-gradient(135deg,#10b981,#34d399);border-radius:48rpx;display:-webkit-flex;display:-ms-flexbox;display:flex;height:96rpx;width:100%;-ms-flex-align:center;align-items:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-transition:all .25s ease;transition:all .25s ease}.index-module__playBtn___E3hdI:active{opacity:.9;-webkit-transform:scale(.98);-ms-transform:scale(.98);transform:scale(.98)}.index-module__playBtnText___xX4mO{color:#fff;font-size:28rpx;font-weight:500}.index-module__infoSection___bUeNm{background:#1a1a1a;margin-top:2rpx;padding:32rpx}.index-module__infoTitle___pCe5i{color:#fff;font-size:28rpx;font-weight:500;margin-bottom:24rpx}.index-module__infoRow___rusZh{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-justify-content:space-between;-ms-flex-pack:justify;border-bottom:2rpx solid #333;justify-content:space-between;padding:16rpx 0}.index-module__infoLabel___cNNUy{color:hsla(0,0%,100%,.6);font-size:24rpx}.index-module__infoValue___zwJy3{color:#fff;font-size:24rpx}.index-module__errorWrap___nx392{-webkit-align-items:center;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding:48rpx 0}.index-module__errorIcon___W473b{font-size:56rpx;margin-bottom:16rpx}.index-module__errorText___D_4Z7{color:hsla(0,0%,100%,.6);font-size:24rpx}
|
||||
@@ -0,0 +1,70 @@
|
||||
{
|
||||
"miniprogramRoot": "./",
|
||||
"cloudfunctionRoot": "cloudfunctions/",
|
||||
"projectname": "silk-miniapp",
|
||||
"description": "智慧蚕房",
|
||||
"appid": "wxddd7ba2ffc4cc712",
|
||||
"setting": {
|
||||
"urlCheck": false,
|
||||
"es6": false,
|
||||
"enhance": false,
|
||||
"compileHotReLoad": false,
|
||||
"postcss": false,
|
||||
"preloadBackgroundData": false,
|
||||
"minified": false,
|
||||
"newFeature": true,
|
||||
"autoAudits": false,
|
||||
"coverView": true,
|
||||
"showShadowRootInWxmlPanel": false,
|
||||
"scopeDataCheck": false,
|
||||
"useCompilerModule": false,
|
||||
"compileWorklet": false,
|
||||
"uglifyFileName": false,
|
||||
"uploadWithSourceMap": true,
|
||||
"packNpmManually": false,
|
||||
"packNpmRelationList": [],
|
||||
"minifyWXSS": true,
|
||||
"minifyWXML": true,
|
||||
"localPlugins": false,
|
||||
"disableUseStrict": false,
|
||||
"useCompilerPlugins": false,
|
||||
"condition": false,
|
||||
"swc": false,
|
||||
"disableSWC": true,
|
||||
"babelSetting": {
|
||||
"ignore": [],
|
||||
"disablePlugins": [],
|
||||
"outputPath": ""
|
||||
}
|
||||
},
|
||||
"compileType": "miniprogram",
|
||||
"simulatorType": "wechat",
|
||||
"simulatorPluginLibVersion": {},
|
||||
"condition": {},
|
||||
"packOptions": {
|
||||
"ignore": [
|
||||
{
|
||||
"type": "file",
|
||||
"value": "node_modules"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"value": "src"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"value": "config"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"value": ".git"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"value": "dist/js/*.LICENSE.txt"
|
||||
}
|
||||
],
|
||||
"include": []
|
||||
},
|
||||
"editorSetting": {}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
(function(){"use strict";var n={},t={};function r(e){var o=t[e];if(void 0!==o)return o.exports;var u=t[e]={exports:{}};return n[e].call(u.exports,u,u.exports,r),u.exports}r.m=n,function(){var n=[];r.O=function(t,e,o,u){if(!e){var i=1/0;for(l=0;l<n.length;l++){e=n[l][0],o=n[l][1],u=n[l][2];for(var f=!0,c=0;c<e.length;c++)(!1&u||i>=u)&&Object.keys(r.O).every(function(n){return r.O[n](e[c])})?e.splice(c--,1):(f=!1,u<i&&(i=u));if(f){n.splice(l--,1);var a=o();void 0!==a&&(t=a)}}return t}u=u||0;for(var l=n.length;l>0&&n[l-1][2]>u;l--)n[l]=n[l-1];n[l]=[e,o,u]}}(),function(){r.n=function(n){var t=n&&n.__esModule?function(){return n["default"]}:function(){return n};return r.d(t,{a:t}),t}}(),function(){var n,t=Object.getPrototypeOf?function(n){return Object.getPrototypeOf(n)}:function(n){return n.__proto__};r.t=function(e,o){if(1&o&&(e=this(e)),8&o)return e;if("object"===typeof e&&e){if(4&o&&e.__esModule)return e;if(16&o&&"function"===typeof e.then)return e}var u=Object.create(null);r.r(u);var i={};n=n||[null,t({}),t([]),t(t)];for(var f=2&o&&e;"object"==typeof f&&!~n.indexOf(f);f=t(f))Object.getOwnPropertyNames(f).forEach(function(n){i[n]=function(){return e[n]}});return i["default"]=function(){return e},r.d(u,i),u}}(),function(){r.d=function(n,t){for(var e in t)r.o(t,e)&&!r.o(n,e)&&Object.defineProperty(n,e,{enumerable:!0,get:t[e]})}}(),function(){r.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"===typeof window)return window}}()}(),function(){r.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)}}(),function(){r.r=function(n){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})}}(),function(){var n={666:0};r.O.j=function(t){return 0===n[t]};var t=function(t,e){var o,u,i=e[0],f=e[1],c=e[2],a=0;if(i.some(function(t){return 0!==n[t]})){for(o in f)r.o(f,o)&&(r.m[o]=f[o]);if(c)var l=c(r)}for(t&&t(e);a<i.length;a++)u=i[a],r.o(n,u)&&n[u]&&n[u][0](),n[u]=0;return r.O(l)},e=wx["webpackJsonp"]=wx["webpackJsonp"]||[];e.forEach(t.bind(null,0)),e.push=t.bind(null,e.push.bind(e))}()})();
|
||||
@@ -0,0 +1,42 @@
|
||||
module.exports = {
|
||||
a: function (l, n, s) {
|
||||
var a = ["8","0","22","6","3","1","13","7","5","69","70","35","27","66","75","76","63"]
|
||||
var b = ["5","69","70","35","27","66","75","76","63"]
|
||||
if (a.indexOf(n) === -1) {
|
||||
l = 0
|
||||
}
|
||||
if (b.indexOf(n) > -1) {
|
||||
var u = s.split(',')
|
||||
var depth = 0
|
||||
for (var i = 0; i < u.length; i++) {
|
||||
if (u[i] === n) depth++
|
||||
}
|
||||
l = depth
|
||||
}
|
||||
if (l >= 15) {
|
||||
return 'tmpl_15_container'
|
||||
}
|
||||
return 'tmpl_' + l + '_' + n
|
||||
},
|
||||
b: function (a, b) {
|
||||
return a === undefined ? b : a
|
||||
},
|
||||
c: function(i, prefix) {
|
||||
var s = i.focus !== undefined ? 'focus' : 'blur'
|
||||
return prefix + i.nn + '_' + s
|
||||
},
|
||||
d: function (a) {
|
||||
return a === undefined ? {} : a
|
||||
},
|
||||
e: function (n) {
|
||||
return 'tmpl_' + n + '_container'
|
||||
},
|
||||
f: function (l, n) {
|
||||
var b = ["5","69","70","35","27","66","75","76","63"]
|
||||
if (b.indexOf(n) > -1) {
|
||||
if (l) l += ','
|
||||
l += n
|
||||
}
|
||||
return l
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
|
||||
|
||||
/**
|
||||
* @license React
|
||||
* react-jsx-runtime.production.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @license React
|
||||
* react.production.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @license React
|
||||
* use-sync-external-store-shim.production.js
|
||||
*
|
||||
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @license React
|
||||
* use-sync-external-store-shim/with-selector.production.js
|
||||
*
|
||||
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
@@ -0,0 +1,91 @@
|
||||
{
|
||||
"name": "silk-miniapp",
|
||||
"version": "1.0.0",
|
||||
"private": true,
|
||||
"description": "蚕房环境监控系统 - Taro 小程序",
|
||||
"templateInfo": {
|
||||
"name": "react",
|
||||
"typescript": true,
|
||||
"css": "Sass",
|
||||
"framework": "React"
|
||||
},
|
||||
"scripts": {
|
||||
"build:weapp": "taro build --type weapp",
|
||||
"build:swan": "taro build --type swan",
|
||||
"build:alipay": "taro build --type alipay",
|
||||
"build:tt": "taro build --type tt",
|
||||
"build:h5": "taro build --type h5",
|
||||
"build:rn": "taro build --type rn",
|
||||
"build:qq": "taro build --type qq",
|
||||
"build:jd": "taro build --type jd",
|
||||
"build:quickapp": "taro build --type quickapp",
|
||||
"dev:weapp": "npm run build:weapp -- --watch",
|
||||
"dev:swan": "npm run build:swan -- --watch",
|
||||
"dev:alipay": "npm run build:alipay -- --watch",
|
||||
"dev:tt": "npm run build:tt -- --watch",
|
||||
"dev:h5": "npm run build:h5 -- --watch",
|
||||
"dev:rn": "npm run build:rn -- --watch",
|
||||
"dev:qq": "npm run build:qq -- --watch",
|
||||
"dev:jd": "npm run build:jd -- --watch",
|
||||
"dev:quickapp": "npm run build:quickapp -- --watch"
|
||||
},
|
||||
"browserslist": [
|
||||
"last 3 versions",
|
||||
"Android >= 4.1",
|
||||
"ios >= 8"
|
||||
],
|
||||
"author": "",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.21.5",
|
||||
"@tarojs/components": "4.1.9",
|
||||
"@tarojs/helper": "4.1.9",
|
||||
"@tarojs/plugin-framework-react": "4.1.9",
|
||||
"@tarojs/plugin-html": "4.1.9",
|
||||
"@tarojs/plugin-platform-alipay": "4.1.9",
|
||||
"@tarojs/plugin-platform-h5": "4.1.9",
|
||||
"@tarojs/plugin-platform-tt": "4.1.9",
|
||||
"@tarojs/plugin-platform-weapp": "4.1.9",
|
||||
"@tarojs/react": "4.1.9",
|
||||
"@tarojs/runtime": "4.1.9",
|
||||
"@tarojs/shared": "4.1.9",
|
||||
"@tarojs/taro": "4.1.9",
|
||||
"ajv": "^8.20.0",
|
||||
"ajv-keywords": "^5.1.0",
|
||||
"classnames": "^2.5.0",
|
||||
"dayjs": "^1.11.10",
|
||||
"react": "^18.0.0",
|
||||
"react-dom": "^18.0.0",
|
||||
"zustand": "^4.5.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.8.0",
|
||||
"@babel/plugin-proposal-class-properties": "7.14.5",
|
||||
"@babel/preset-react": "^7.24.1",
|
||||
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.5",
|
||||
"@tarojs/cli": "4.1.9",
|
||||
"@tarojs/taro-loader": "4.1.9",
|
||||
"@tarojs/webpack5-runner": "4.1.9",
|
||||
"@types/node": "^18.15.11",
|
||||
"@types/react": "^18.0.0",
|
||||
"@types/webpack-env": "^1.13.6",
|
||||
"@typescript-eslint/eslint-plugin": "^6.2.0",
|
||||
"@typescript-eslint/parser": "^6.2.0",
|
||||
"babel-plugin-import": "^1.13.8",
|
||||
"babel-preset-taro": "4.1.9",
|
||||
"eslint": "^8.12.0",
|
||||
"eslint-config-taro": "4.1.9",
|
||||
"eslint-plugin-import": "^2.12.0",
|
||||
"eslint-plugin-react": "^7.8.2",
|
||||
"eslint-plugin-react-hooks": "^4.2.0",
|
||||
"minidev": "^2.2.5",
|
||||
"miniprogram-ci": "^2.1.26",
|
||||
"postcss": "^8.4.18",
|
||||
"react-refresh": "^0.11.0",
|
||||
"stylelint": "^14.4.0",
|
||||
"ts-node": "^10.9.1",
|
||||
"tsconfig-paths-webpack-plugin": "^4.0.1",
|
||||
"tt-ide-cli": "^0.1.31",
|
||||
"typescript": "^5.1.0",
|
||||
"webpack": "5.78.0"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
{
|
||||
"miniprogramRoot": "dist/",
|
||||
"cloudfunctionRoot": "cloudfunctions/",
|
||||
"projectname": "silk-miniapp",
|
||||
"description": "智慧蚕房",
|
||||
"appid": "wxddd7ba2ffc4cc712",
|
||||
"setting": {
|
||||
"urlCheck": false,
|
||||
"es6": false,
|
||||
"enhance": false,
|
||||
"compileHotReLoad": false,
|
||||
"postcss": false,
|
||||
"preloadBackgroundData": false,
|
||||
"minified": false,
|
||||
"newFeature": true,
|
||||
"autoAudits": false,
|
||||
"coverView": true,
|
||||
"showShadowRootInWxmlPanel": false,
|
||||
"scopeDataCheck": false,
|
||||
"useCompilerModule": false,
|
||||
"compileWorklet": false,
|
||||
"uglifyFileName": false,
|
||||
"uploadWithSourceMap": true,
|
||||
"packNpmManually": false,
|
||||
"packNpmRelationList": [],
|
||||
"minifyWXSS": true,
|
||||
"minifyWXML": true,
|
||||
"localPlugins": false,
|
||||
"disableUseStrict": false,
|
||||
"useCompilerPlugins": false,
|
||||
"condition": false,
|
||||
"swc": false,
|
||||
"disableSWC": true,
|
||||
"babelSetting": {
|
||||
"ignore": [],
|
||||
"disablePlugins": [],
|
||||
"outputPath": ""
|
||||
}
|
||||
},
|
||||
"compileType": "miniprogram",
|
||||
"simulatorType": "wechat",
|
||||
"simulatorPluginLibVersion": {},
|
||||
"condition": {},
|
||||
"packOptions": {
|
||||
"ignore": [
|
||||
{
|
||||
"value": "node_modules",
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"value": "src",
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"value": "config",
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"value": ".git",
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"value": "dist/js/*.LICENSE.txt",
|
||||
"type": "file"
|
||||
}
|
||||
],
|
||||
"include": []
|
||||
},
|
||||
"editorSetting": {},
|
||||
"libVersion": "2.33.0"
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"libVersion": "3.15.2",
|
||||
"projectname": "miniapp",
|
||||
"condition": {},
|
||||
"setting": {
|
||||
"urlCheck": false,
|
||||
"coverView": true,
|
||||
"lazyloadPlaceholderEnable": false,
|
||||
"skylineRenderEnable": false,
|
||||
"preloadBackgroundData": false,
|
||||
"autoAudits": false,
|
||||
"useApiHook": true,
|
||||
"showShadowRootInWxmlPanel": false,
|
||||
"useStaticServer": false,
|
||||
"useLanDebug": false,
|
||||
"showES6CompileOption": false,
|
||||
"compileHotReLoad": true,
|
||||
"checkInvalidKey": true,
|
||||
"ignoreDevUnusedFiles": true,
|
||||
"bigPackageSizeSupport": false
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"miniprogramRoot": "./",
|
||||
"projectname": "taro_template",
|
||||
"description": "taro_template",
|
||||
"appid": "touristappid",
|
||||
"setting": {
|
||||
"urlCheck": true,
|
||||
"es6": false,
|
||||
"postcss": false,
|
||||
"minified": false
|
||||
},
|
||||
"compileType": "miniprogram"
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
import { get, post } from './request';
|
||||
import type { Alarm, AlarmQuery } from '@/types';
|
||||
|
||||
export function getAlarms(query?: AlarmQuery): Promise<Alarm[]> {
|
||||
return get<Alarm[]>('/alarms', query as unknown as Record<string, unknown>);
|
||||
}
|
||||
|
||||
export function acknowledgeAlarm(id: string): Promise<unknown> {
|
||||
return post<unknown>(`/alarms/${id}/ack`);
|
||||
}
|
||||
|
||||
export function getAlarmClipUrl(id: string): string {
|
||||
return `/alarms/${id}/clip`;
|
||||
}
|
||||
|
||||
export function getAlarmClip(id: string): Promise<unknown> {
|
||||
return get<unknown>(`/alarms/${id}/clip`);
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
import { get, post } from './request';
|
||||
import type { LoginRequest, LoginResponse, User } from '@/types';
|
||||
|
||||
export function login(data: LoginRequest): Promise<LoginResponse> {
|
||||
return post<LoginResponse>('/auth/login', data as unknown as Record<string, unknown>);
|
||||
}
|
||||
|
||||
export function getCurrentUser(): Promise<User> {
|
||||
return get<User>('/auth/me');
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
import Taro from '@tarojs/taro';
|
||||
|
||||
// ============================================
|
||||
// API 配置 - 支持动态切换后端地址
|
||||
// ============================================
|
||||
|
||||
const isH5 = process.env.TARO_ENV === 'h5';
|
||||
|
||||
// 默认 API 地址(H5 通过 devServer 代理转发,小程序直接使用完整 URL)
|
||||
const DEFAULT_API_BASE_URL = isH5 ? '/api/v1' : 'http://100.83.103.1:3000/api/v1';
|
||||
|
||||
const STORAGE_KEY = 'apiBaseUrl';
|
||||
|
||||
/**
|
||||
* 获取当前 API 基础地址(带 /api/v1 后缀)
|
||||
* 优先从 Storage 读取自定义地址,否则使用默认值
|
||||
*/
|
||||
export function getApiBaseUrl(): string {
|
||||
const custom = Taro.getStorageSync(STORAGE_KEY);
|
||||
return custom || DEFAULT_API_BASE_URL;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置自定义 API 基础地址
|
||||
* 传入空字符串则清除自定义地址,恢复默认值
|
||||
*/
|
||||
export function setApiBaseUrl(url: string): void {
|
||||
if (url) {
|
||||
Taro.setStorageSync(STORAGE_KEY, url);
|
||||
} else {
|
||||
Taro.removeStorageSync(STORAGE_KEY);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取服务器地址(不带 /api/v1 后缀),用于设置页展示
|
||||
*/
|
||||
export function getServerUrl(): string {
|
||||
const baseUrl = getApiBaseUrl();
|
||||
return baseUrl.replace(/\/api\/v1\/?$/, '');
|
||||
}
|
||||
|
||||
// 保留导出以兼容现有代码(模块加载时的默认值,实际请求请使用 getApiBaseUrl())
|
||||
export const API_BASE_URL = DEFAULT_API_BASE_URL;
|
||||
|
||||
export function getWsUrl(token: string): string {
|
||||
const baseUrl = getApiBaseUrl();
|
||||
|
||||
// 如果是完整 URL,从中推导 WS 地址
|
||||
if (baseUrl.startsWith('http')) {
|
||||
const serverUrl = baseUrl.replace(/\/api\/v1\/?$/, '');
|
||||
const wsUrl = serverUrl.replace(/^http/, 'ws');
|
||||
return `${wsUrl}/ws?token=${token}`;
|
||||
}
|
||||
|
||||
// H5 相对路径 - 使用 window.location 推导
|
||||
if (isH5) {
|
||||
const protocol = typeof window !== 'undefined' && window.location.protocol === 'https:' ? 'wss:' : 'ws:';
|
||||
const host = typeof window !== 'undefined' ? window.location.host : 'localhost:3000';
|
||||
return `${protocol}//${host}/ws?token=${token}`;
|
||||
}
|
||||
|
||||
return `ws://100.83.103.1:3000/ws?token=${token}`;
|
||||
}
|
||||
|
||||
export const REQUEST_TIMEOUT = 15000;
|
||||
|
||||
export function resolveUrl(path: string): string {
|
||||
if (path.startsWith('http://') || path.startsWith('https://')) return path;
|
||||
const base = getApiBaseUrl().replace(/\/api\/v1$/, '');
|
||||
return base + path;
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
import { get, post } from './request';
|
||||
import type { Device, ControlCommand } from '@/types';
|
||||
|
||||
export function getDevices(params?: Record<string, unknown>): Promise<Device[]> {
|
||||
return get<Device[]>('/devices', params);
|
||||
}
|
||||
|
||||
export function getDevice(id: string): Promise<Device> {
|
||||
return get<Device>(`/devices/${id}`);
|
||||
}
|
||||
|
||||
export function sendControl(command: ControlCommand): Promise<unknown> {
|
||||
return post<unknown>('/control/send', command as unknown as Record<string, unknown>);
|
||||
}
|
||||
|
||||
export function getControlLogs(params?: Record<string, unknown>): Promise<unknown[]> {
|
||||
return get<unknown[]>('/control/logs', params);
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
import Taro from '@tarojs/taro';
|
||||
import { getApiBaseUrl } from './config';
|
||||
|
||||
export interface RequestOptions {
|
||||
url: string;
|
||||
method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
|
||||
data?: Record<string, unknown>;
|
||||
params?: Record<string, unknown>;
|
||||
header?: Record<string, string>;
|
||||
}
|
||||
|
||||
function buildQueryString(params?: Record<string, unknown>): string {
|
||||
if (!params) return '';
|
||||
const entries = Object.entries(params).filter(
|
||||
([, v]) => v !== undefined && v !== null && v !== ''
|
||||
);
|
||||
if (entries.length === 0) return '';
|
||||
const qs = entries
|
||||
.map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(String(v))}`)
|
||||
.join('&');
|
||||
return `?${qs}`;
|
||||
}
|
||||
|
||||
export async function request<T = unknown>(options: RequestOptions): Promise<T> {
|
||||
const token = Taro.getStorageSync('token');
|
||||
const baseUrl = getApiBaseUrl();
|
||||
const queryString = buildQueryString(options.params);
|
||||
const fullUrl = `${baseUrl}${options.url}${queryString}`;
|
||||
|
||||
const header: Record<string, string> = {
|
||||
'Content-Type': 'application/json',
|
||||
...options.header,
|
||||
};
|
||||
|
||||
if (token) {
|
||||
header['Authorization'] = `Bearer ${token}`;
|
||||
}
|
||||
|
||||
try {
|
||||
const res = await Taro.request({
|
||||
url: fullUrl,
|
||||
method: options.method || 'GET',
|
||||
data: options.data,
|
||||
header,
|
||||
timeout: 15000,
|
||||
});
|
||||
|
||||
if (res.statusCode === 401) {
|
||||
console.warn('[Request] 401 未授权,清除登录状态');
|
||||
Taro.removeStorageSync('token');
|
||||
Taro.removeStorageSync('refreshToken');
|
||||
Taro.removeStorageSync('user');
|
||||
Taro.reLaunch({ url: '/pages/login/index' });
|
||||
throw new Error('登录已过期,请重新登录');
|
||||
}
|
||||
|
||||
if (res.statusCode >= 400) {
|
||||
const errMsg =
|
||||
(res.data && typeof res.data === 'object' && 'message' in res.data
|
||||
? String((res.data as { message: unknown }).message)
|
||||
: null) || `请求失败 (${res.statusCode})`;
|
||||
console.error(`[Request] ${options.method || 'GET'} ${options.url} 失败:`, res.statusCode, res.data);
|
||||
throw new Error(errMsg);
|
||||
}
|
||||
|
||||
return res.data as T;
|
||||
} catch (error) {
|
||||
if (error instanceof Error && error.message === '登录已过期,请重新登录') {
|
||||
throw error;
|
||||
}
|
||||
console.error(`[Request] ${options.method || 'GET'} ${options.url} 异常:`, error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
export function get<T = unknown>(url: string, params?: Record<string, unknown>): Promise<T> {
|
||||
return request<T>({ url, method: 'GET', params });
|
||||
}
|
||||
|
||||
export function post<T = unknown>(
|
||||
url: string,
|
||||
data?: Record<string, unknown>
|
||||
): Promise<T> {
|
||||
return request<T>({ url, method: 'POST', data });
|
||||
}
|
||||
|
||||
export function patch<T = unknown>(
|
||||
url: string,
|
||||
data?: Record<string, unknown>
|
||||
): Promise<T> {
|
||||
return request<T>({ url, method: 'PATCH', data });
|
||||
}
|
||||
|
||||
export function del<T = unknown>(url: string): Promise<T> {
|
||||
return request<T>({ url, method: 'DELETE' });
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
import { get } from './request';
|
||||
import type { Room } from '@/types';
|
||||
|
||||
export function getRooms(): Promise<Room[]> {
|
||||
return get<Room[]>('/rooms');
|
||||
}
|
||||
|
||||
export function getRoomById(id: string): Promise<Room> {
|
||||
return get<Room>(`/rooms/${id}`);
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
import { get } from './request';
|
||||
import type { TelemetryRecord, TelemetryQuery, RealtimeMetric, TrendPoint } from '@/types';
|
||||
import { normalizeMetricKey, getMetricName, getMetricUnit, metricStatus } from '@/utils/format';
|
||||
|
||||
export function getTelemetry(query: TelemetryQuery): Promise<TelemetryRecord[]> {
|
||||
return get<TelemetryRecord[]>('/telemetry', query as unknown as Record<string, unknown>);
|
||||
}
|
||||
|
||||
export function getLatestTelemetry(deviceKey: string): Promise<TelemetryRecord[]> {
|
||||
return get<TelemetryRecord[]>(`/telemetry/${deviceKey}/latest`);
|
||||
}
|
||||
|
||||
// 将遥测记录归一化为指标展示格式(对齐 app 端 normalizeRealtime)
|
||||
export function normalizeRealtime(records: TelemetryRecord[]): RealtimeMetric[] {
|
||||
const latestByMetric = new Map<string, TelemetryRecord>();
|
||||
for (const record of records) {
|
||||
const key = normalizeMetricKey(record.metric);
|
||||
const prev = latestByMetric.get(key);
|
||||
if (!prev || new Date(record.timestamp).getTime() > new Date(prev.timestamp).getTime()) {
|
||||
latestByMetric.set(key, record);
|
||||
}
|
||||
}
|
||||
|
||||
return Array.from(latestByMetric.entries()).map(([key, record]) => ({
|
||||
key,
|
||||
name: getMetricName(key) || record.metric,
|
||||
value: Number(record.value),
|
||||
unit: getMetricUnit(key) || '',
|
||||
status: metricStatus(key, Number(record.value)),
|
||||
}));
|
||||
}
|
||||
|
||||
// 获取趋势数据用于图表展示(对齐 app 端 fetchTrend)
|
||||
export async function fetchTrend(hours = 24): Promise<TrendPoint[]> {
|
||||
const to = new Date();
|
||||
const from = new Date(to.getTime() - hours * 3600 * 1000);
|
||||
const records = await getTelemetry({
|
||||
from: from.toISOString(),
|
||||
to: to.toISOString(),
|
||||
limit: 1000,
|
||||
});
|
||||
|
||||
return records
|
||||
.slice()
|
||||
.reverse()
|
||||
.reduce<TrendPoint[]>((acc, record) => {
|
||||
const key = normalizeMetricKey(record.metric);
|
||||
if (!['temp', 'humidity', 'co2'].includes(key)) return acc;
|
||||
const time = record.timestamp.slice(11, 16); // HH:mm
|
||||
const point = acc.find((item) => item.time === time) ?? { time };
|
||||
(point as unknown as Record<string, string | number | undefined>)[key] = Number(record.value);
|
||||
if (!acc.includes(point)) acc.push(point);
|
||||
return acc;
|
||||
}, []);
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
import { get, post, patch, del } from './request';
|
||||
import type { Threshold, ThresholdInput } from '@/types';
|
||||
|
||||
export function getThresholds(): Promise<Threshold[]> {
|
||||
return get<Threshold[]>('/thresholds');
|
||||
}
|
||||
|
||||
export function createThreshold(data: ThresholdInput): Promise<Threshold> {
|
||||
return post<Threshold>('/thresholds', data as unknown as Record<string, unknown>);
|
||||
}
|
||||
|
||||
export function updateThreshold(id: string, data: Partial<ThresholdInput>): Promise<Threshold> {
|
||||
return patch<Threshold>(`/thresholds/${id}`, data as unknown as Record<string, unknown>);
|
||||
}
|
||||
|
||||
export function deleteThreshold(id: string): Promise<unknown> {
|
||||
return del<unknown>(`/thresholds/${id}`);
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
import { get, post } from './request';
|
||||
import type { Camera, VideoPlayRequest, VideoPlayResponse, VideoClip, VideoClipQuery } from '@/types';
|
||||
|
||||
export function getCameras(): Promise<Camera[]> {
|
||||
return get<Camera[]>('/video/cameras');
|
||||
}
|
||||
|
||||
export function playCamera(id: number, data: VideoPlayRequest): Promise<VideoPlayResponse> {
|
||||
return post<VideoPlayResponse>(`/video/cameras/${id}/play`, data as unknown as Record<string, unknown>);
|
||||
}
|
||||
|
||||
export function getVideoClips(query?: VideoClipQuery): Promise<VideoClip[]> {
|
||||
return get<VideoClip[]>('/video/clips', query as unknown as Record<string, unknown>);
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
export default defineAppConfig({
|
||||
pages: [
|
||||
'pages/login/index',
|
||||
'pages/dashboard/index',
|
||||
'pages/rooms/index',
|
||||
'pages/rooms/detail/index',
|
||||
'pages/devices/index',
|
||||
'pages/devices/control/index',
|
||||
'pages/alerts/index',
|
||||
'pages/thresholds/index',
|
||||
'pages/video/index',
|
||||
'pages/video/player/index',
|
||||
'pages/settings/index',
|
||||
],
|
||||
window: {
|
||||
backgroundTextStyle: 'dark',
|
||||
navigationBarBackgroundColor: '#10b981',
|
||||
navigationBarTitleText: '蚕房监控',
|
||||
navigationBarTextStyle: 'white',
|
||||
backgroundColor: '#f5f6f7',
|
||||
},
|
||||
tabBar: {
|
||||
color: '#86909c',
|
||||
selectedColor: '#10b981',
|
||||
backgroundColor: '#ffffff',
|
||||
borderStyle: 'white',
|
||||
list: [
|
||||
{
|
||||
pagePath: 'pages/dashboard/index',
|
||||
text: '仪表盘',
|
||||
iconPath: 'assets/tabbar/dashboard.png',
|
||||
selectedIconPath: 'assets/tabbar/dashboard-selected.png',
|
||||
},
|
||||
{
|
||||
pagePath: 'pages/rooms/index',
|
||||
text: '蚕房',
|
||||
iconPath: 'assets/tabbar/rooms.png',
|
||||
selectedIconPath: 'assets/tabbar/rooms-selected.png',
|
||||
},
|
||||
{
|
||||
pagePath: 'pages/devices/index',
|
||||
text: '设备',
|
||||
iconPath: 'assets/tabbar/devices.png',
|
||||
selectedIconPath: 'assets/tabbar/devices-selected.png',
|
||||
},
|
||||
{
|
||||
pagePath: 'pages/alerts/index',
|
||||
text: '告警',
|
||||
iconPath: 'assets/tabbar/alerts.png',
|
||||
selectedIconPath: 'assets/tabbar/alerts-selected.png',
|
||||
},
|
||||
{
|
||||
pagePath: 'pages/video/index',
|
||||
text: '视频',
|
||||
iconPath: 'assets/tabbar/video.png',
|
||||
selectedIconPath: 'assets/tabbar/video-selected.png',
|
||||
},
|
||||
],
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,12 @@
|
||||
@use '@/styles/compat.scss';
|
||||
@use '@/styles/variables.scss' as *;
|
||||
|
||||
// 全局样式
|
||||
page {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'PingFang SC', 'Hiragino Sans GB',
|
||||
sans-serif;
|
||||
font-size: $font-size-md;
|
||||
line-height: $line-height-normal;
|
||||
color: $color-text-primary;
|
||||
background-color: $color-bg-page;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
import React, { useEffect } from 'react';
|
||||
import { useDidShow, useDidHide } from '@tarojs/taro';
|
||||
import { useStore } from '@/store/useStore';
|
||||
import './app.scss';
|
||||
|
||||
function App(props) {
|
||||
const restoreSession = useStore((s) => s.restoreSession);
|
||||
|
||||
useEffect(() => {
|
||||
restoreSession();
|
||||
}, [restoreSession]);
|
||||
|
||||
useDidShow(() => {});
|
||||
useDidHide(() => {});
|
||||
|
||||
return props.children;
|
||||
}
|
||||
|
||||
export default App;
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
@@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#10b981" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9" fill="#10b981" fill-opacity="0.15"/>
|
||||
<path d="M13.73 21a2 2 0 0 1-3.46 0"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 295 B |
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#999999" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"/>
|
||||
<path d="M13.73 21a2 2 0 0 1-3.46 0"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 262 B |
|
After Width: | Height: | Size: 1.2 KiB |
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#10b981" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||||
<rect x="3" y="3" width="7" height="9" rx="1" fill="#10b981" fill-opacity="0.15"/>
|
||||
<rect x="14" y="3" width="7" height="5" rx="1" fill="#10b981" fill-opacity="0.15"/>
|
||||
<rect x="14" y="12" width="7" height="9" rx="1" fill="#10b981" fill-opacity="0.15"/>
|
||||
<rect x="3" y="16" width="7" height="5" rx="1" fill="#10b981" fill-opacity="0.15"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 505 B |
|
After Width: | Height: | Size: 1.1 KiB |