first commit

This commit is contained in:
编码猿
2024-09-27 02:06:13 +08:00
commit 852d94fbb9
36760 changed files with 3274413 additions and 0 deletions

View File

@@ -0,0 +1,11 @@
{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
// launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
"version": "0.0",
"configurations": [{
"type": "uniCloud",
"default": {
"launchtype": "remote"
}
}
]
}

View File

@@ -0,0 +1,19 @@
<script>
export default {
onLaunch: function() {
console.log('App Launch')
},
onShow: function() {
console.log('App Show')
},
onHide: function() {
console.log('App Hide')
}
}
</script>
<style>
uni-swiper {
height: 350px;
}
</style>

View File

@@ -0,0 +1,17 @@
export default {
// devBaseUrl: 'http://115.159.153.142:9020/h5',
devBaseUrl: '/api',
testBaseUrl: '',
prodBaseUrl: '',
apiList: {
index: '/index', // 首页
radio: '/radio', //radio
newsDetail: '/newsDetail', // 新闻页面接口
liveDetail: '/liveDetail', //直播详情
channelComment: '/channelComment', //包河TV评论
channelList: '/channelList', //包河TV
interactDetail: '/interactDetail' ,// 用户注册接口
videoDetail: '/videoDetail',//视频页面接口
liveList: '/liveList', // 融媒直播
},
}

View File

@@ -0,0 +1,51 @@
import config from "../config";
class Http {
get(params) {
uni.showLoading({ title: '请求中..' });
return new Promise((success,error) => {
uni.request({
url: this.CheckBaseUrl()+params.url,
data: params.data,
method: 'GET',
header: Object.assign({
token: uni.getStorageSync('token')
},params.header),
success: (res) => {
success(this.ResponseCheck(res.data));
},
fail: (err) => {
console.log("6");
console.log(err);
}
});
})
}
post() {}
ResponseCheck(res) {
uni.hideLoading();
switch (res.resultCode) {
case '000':
return res.data
break;
case '500':
uni.showToast({
title: res.message,
duration: 2000
});
throw new Error(res.message);
break;
}
}
CheckBaseUrl() {
if (process.env.NODE_ENV === 'development') {
return config.devBaseUrl;
} else {
return config.prodBaseUrl;
}
}
}
export default new Http();

View File

@@ -0,0 +1,3 @@
li {
font-size: 30px;
}

View File

@@ -0,0 +1,96 @@
.apps {
margin-left: 11.5125rpx;
margin-right: 12rpx;
margin-left: 23rpx;
}
.apps .p1 {
margin-top: 49rpx;
font-size: 36rpx;
line-height: 22.5rpx;
color: #333333;
}
.apps .p2 {
margin-top: 18rpx;
font-family: PingFangSC-Medium;
font-size: 23rpx;
font-weight: normal;
font-stretch: normal;
line-height: 21.6rpx;
letter-spacing: 0rem;
color: #999999;
}
.apps .jianjie {
margin-top: 50rpx;
display: flex;
justify-content: space-between;
}
.apps .jianjie .left {
display: flex;
align-items: center;
}
.apps .jianjie .left img {
margin-right: 4.9875rpx;
width: 26rpx;
height: 27rpx;
}
.apps .jianjie .left p {
color: #999999;
font-size: 12rpx;
font-weight: normal;
font-stretch: normal;
line-height: 22.5rpx;
letter-spacing: 0rpx;
}
.apps .jianjie .right {
display: flex;
justify-content: flex-end;
align-items: center;
position: relative;
}
.apps .jianjie .right p {
font-family: PingFangSC-Medium;
font-size: 24rpx;
line-height: 14.4rpx;
letter-spacing: 0rpx;
color: #999999;
}
.apps .jianjie .right img {
margin-left: 5.5125rpx;
width: 17rpx;
height: 10rpx;
}
.apps .jianjie .right .aaa {
right: 0;
font-size: 12rpx;
color: #999999;
position: absolute;
top: 10px;
width: 80px;
}
.apps .jianjie .right .active {
display: none;
}
.apps .jianjie .right .none {
display: block !important;
}
.apps .msg {
margin-top: 38rpx;
display: flex;
justify-content: space-between;
align-items: center;
}
.apps .msg p {
font-family: PingFangSC-Medium;
font-size: 13.9875rpx;
font-weight: normal;
font-stretch: normal;
line-height: 16.8rpx;
color: #333333;
}
.apps .msg img {
width: 150rpx;
height: 56rpx;
}
/deep/ .comment .title[data-v-72477f54] {
margin-left: 15rpx;
}

View File

@@ -0,0 +1,97 @@
.apps {
margin-left: 11.5125rpx;
margin-right: 12rpx;
margin-left: 23rpx;
.p1 {
margin-top: 49rpx;
font-size: 36rpx;
line-height: 22.5rpx;
color: #333333;
}
.p2 {
margin-top: 18rpx;
font-family: PingFangSC-Medium;
font-size: 23rpx;
font-weight: normal;
font-stretch: normal;
line-height: 21.6rpx;
letter-spacing: 0rem;
color: #999999;
}
.jianjie {
margin-top: 50rpx;
display: flex;
justify-content: space-between;
.left {
display: flex;
align-items: center;
img {
margin-right: 4.9875rpx;
width: 26rpx;
height: 27rpx;
}
p {
color: #999999;
font-size: 12rpx;
font-weight: normal;
font-stretch: normal;
line-height: 22.5rpx;
letter-spacing: 0rpx;
}
}
.right {
display: flex;
justify-content: flex-end;
align-items: center;
position: relative;
p {
font-family: PingFangSC-Medium;
font-size: 24rpx;
line-height: 14.4rpx;
letter-spacing: 0rpx;
color: #999999;
}
img {
margin-left: 5.5125rpx;
width: 17rpx;
height: 10rpx;
}
.aaa {
right: 0;
font-size: 12rpx;
color: #999999;
position: absolute;
top: 10px;
width: 80px;
}
.active{
display: none;
}
.none{
display: block !important;
}
}
}
.msg {
margin-top: 38rpx;
display: flex;
justify-content: space-between;
align-items: center;
p {
font-family: PingFangSC-Medium;
font-size: 13.9875rpx;
font-weight: normal;
font-stretch: normal;
line-height: 16.8rpx;
color: #333333;
}
img {
width: 150rpx;
height: 56rpx;
}
}
}
/deep/.comment .title[data-v-72477f54]{
margin-left: 15rpx;
}

View File

@@ -0,0 +1,89 @@
import http from "../http";
import config from "../config";
export default class IndexServer {
async getIndex(data = {}, header = {}) {
return await http.get({
url: config.apiList.index,
data: data,
header: header
});
}
//radio
async radio(data = {}, header = {}) {
return await http.get({
url: config.apiList.radio,
data: data,
header: header
});
}
async interactDetail (data = {}, header = {}) {
// eslint-disable-next-line no-return-await
return await http.get({
url: config.apiList.interactDetail,
data: data,
headers: header
})
}
async videoDetail (data = {}, header = {}) {
// eslint-disable-next-line no-return-await
return await http.get({
url: config.apiList.videoDetail,
data: data,
headers: header
})
}
//直播详情
async liveDetail(data = {}, header = {}) {
return await http.get({
url: config.apiList.liveDetail,
data: data,
header: header
});
}
//包河TV评论
async channelComment(data = {}, header = {}) {
return await http.get({
url: config.apiList.channelComment,
data: data,
header: header
});
}
//包河TV
async channelList(data = {}, header = {}) {
return await http.get({
url: config.apiList.channelList,
data: data,
header: header
});
}
// 融媒直播
async liveList (data = {}, header = {}) {
return await http.get({
url: config.apiList.liveList,
data: data,
headers: header
})
}
async newsDetail (data = {}, header = {}) {
return await http.get({
url: config.apiList.newsDetail,
data: data,
headers: header
})
}
}

View File

@@ -0,0 +1,5 @@
import http from '../http'
import config from '../config'
export default class NewsService {
}

View File

@@ -0,0 +1,7 @@
import IndexServer from "./IndexServer";
import NewsService from "./NewsService";
export default {
index: new IndexServer(),
news: new NewsService()
}

View File

@@ -0,0 +1,81 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript" src="../layui/jquery-3.2.1.min.js"></script>
<style>
div#newCss {
border: 1px solid #999;
width: 504px;
height: 140px;
}
</style>
</head>
<body>
<h4>rem样式</h4>
<textarea id="css" cols="60" rows="10"></textarea>
<br />
<input type="button" value="rem转换rpx" onclick="rem2rpx()" />
<h4>转换后的样式</h4>
<div id="newCss"></div>
<input id="aaa">
<input id="bbb">
<script type="text/javascript">
function rem2rpx() {
var oldCss = document.getElementById("css").value.trim(); //".similar_recommend .title{margin:.3rem 0 0;padding-top:.4rem;color:#666;font-size:.28rem;}"
//对原样式根据rem进行拆分成数组,这样除了最后一个元素,数组前边的几个元素都是以原rem样式数值结尾
//拆分后的格式:[".similar_recommend{background:#fff;border-radius:.1", ";height:7.4", ";margin-top:-.3", "}"]
var newCssArr = oldCss.split("rem")
var newCss = "" //转换后新的样式变量
for(var i in newCssArr) {
if(i < newCssArr.length - 1) {
//非最后一个元素,对字符串按照:再次拆分,把rem样式的数值分离出来进行转换
var str = newCssArr[i]
var idx = str.lastIndexOf(':')
var prevStr = str.substring(0, idx + 1)
var nextStr = "" //nextStr格式为 -.3 , -3 , 3 , .3
if(str.indexOf('-.') > -1) {
//nextStr格式为-.3rem或-3rem
nextStr = str.substring(str.indexOf(':-') + 2, str.length)
//nextStr格式为.3rem或3rem
if(nextStr.indexOf('.') > -1) {
nextStr = "0" + nextStr
}
nextStr = "-" + parseInt(nextStr * 100) + "rpx"
} else {
nextStr = str.substring(idx + 1, str.length)
//处理 nextStr="1px .2"的情况
var index = nextStr.indexOf(' ')
if(index >= 0) {
let str1 = nextStr.substring(0, index)
let str2 = nextStr.substring(index + 1, nextStr.length)
str2 = str2.indexOf('.') > -1 ? "0" + str2 : str2
str2 = parseInt(str2 * 100) + "rpx"
nextStr = str1 + ' ' + str2
} else {
nextStr = nextStr.indexOf('.') > -1 ? "0" + nextStr : nextStr
nextStr = parseInt(nextStr * 100) + "rpx"
}
}
//重组数组内的样式字符串
newCss += prevStr + "" + nextStr
} else {
//追加最后一个数组元素
newCss += newCssArr[i]
}
}
document.getElementById("newCss").innerHTML = newCss
}
$("#bbb").keydown(function(event) {
if(event.which == 13) {
console.log("ok")
}
});
</script>
</body>
</html>

View File

@@ -0,0 +1,33 @@
<template lang="pug">
.Allcomment
span 打开APP查看全部评论
</template>
<script>
export default {
name: "AllComment",
}
</script>
<style scoped lang="less">
.Allcomment{
width: 351px;
height: 44px;
border-radius: 4px;
border: solid 1px #d0302c;
text-align: center;
margin-left: 0.307rem;
line-height: 1.5;
span{
width: 139px;
height: 13px;
font-family: PingFangSC-Medium;
font-size: 14px;
font-weight: normal;
font-stretch: normal;
line-height: 24px;
letter-spacing: 0px;
color: #d0302c;
}
}
</style>

View File

@@ -0,0 +1,116 @@
<template lang="pug">
.comment
.title 全部评论
ul.list(v-if="commentList.length != 0")
li(v-for="(item,index) in commentList")
img(class="tx" :src="item.image")
.right
.right_top
.name
p {{ item.nick_name }}
span {{ item.create_time }}
.zan
img(src="/static/img/icon/give_thumbs-up.png")
span {{ item.praise_count }}
.right_bottom {{ item.content }}
.nodata(v-else)
img(src="/static/img/hm_bg_img_no.png")
p 快来发表你的评论吧
</template>
<script>
export default {
name: 'Comment',
props: {
commentList: {
type: Array,
default: () => []
}
},
data () {
return {}
},
created () {
},
methods: {}
}
</script>
<style scoped lang="less">
.comment {
.title {
height: 15.5px;
background-color: #ffffff;
font-family: PingFangSC-Bold;
font-size: 16px;
color: #333333;
padding: 0 0.32rem;
box-sizing: border-box;
line-height: 16.8px;
margin-bottom: 0.373rem;
}
.list {
padding: 0 0.32rem;
box-sizing: border-box;
li {
display: flex;
justify-content: flex-start;
margin-bottom: 0.933rem;
.tx {
width: 0.933rem;
height: 0.947rem;
margin-right: 0.267rem;
border-radius: 100%;
}
.right {
.right_top {
margin-bottom: 0.507rem;
display: flex;
justify-content: space-between;
align-items: center;
.name {
font-size: 0;
p {
font-size: 0.373rem;
color: #333333;
}
span {
font-size: 0.267rem;
color: #999999;
}
}
.zan {
img {
width: 0.347rem;
height: 0.36rem;
margin-right: 0.133rem;
vertical-align: middle;
}
span {
font-size: 0.32rem;
color: #999999;
}
}
}
.right_bottom {
font-size: 0.373rem;
color: #333333;
}
}
}
}
.nodata {
text-align: center;
margin-top: 0.84rem;
img {
width: 209px;
height: 175px;
margin-bottom: 0.68rem;
}
p {
font-size: 14px;
color: #999999;
}
}
}
</style>

View File

@@ -0,0 +1,128 @@
<template lang="pug">
.recommend2
.recommend(v-if="vertical")
.recommend-title
span 相关推荐
ul
li(v-for='(item) in relevant')
.recommend-text
span {{item.title}}
p {{item.create_time}}
.recommend-img
img(:src='item.icon')
.recommend1(v-else)
.recommend-title1
span 相关推荐
ul
li(v-for='(val) in relevant')
.recommend-img1
img(:src='val.icon')
span {{val.title}}
</template>
<script>
export default {
name: 'Recommend',
props: {
relevant: {
type: Array,
default: () => []
},
NewsList: {
type: Array,
default: () => []
},
vertical: {
type: Boolean,
default: true
}
},
methods: {
}
}
</script>
<style scoped lang="less">
.recommend2{
padding-right: 25rpx;
.recommend1 {
padding-left: 24rpx;
border-top: 1rpx solid #f3f3f3;
.recommend-title1{
height: 100rpx;
overflow: hidden;
span {
display: block;
margin-top: 32rpx;
font-size: 32rpx;
font-weight: 700;
}
}
ul {
display: flex;
overflow-x: scroll;
border-bottom: 1px solid #f3f3f3;
padding: 0!important;
li {
list-style: none;
margin-left: 24rpx;
span{
display: block;
margin-top: 0;
margin-bottom: 40rpx;
font-size: 28rpx;
}
.recommend-img1 img{
width: 274rpx;
height: 156rpx;
border-radius: 4rpx;
}
}
}
}
.recommend {
padding-left: 24rpx;
border-top: 16rpx solid #f3f3f3;
border-bottom: 29rpx solid #f3f3f3;
.recommend-title{
height: 101rpx;
overflow: hidden;
span {
display: block;
margin-top: 36rpx;
font-size: 32rpx;
}
}
ul {
padding-right: 23rpx;
padding-left: 23rpx;
li {
height: 258rpx;
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: 1px solid #f3f3f3;
.recommend-text {
display: flex;
flex-flow: column;
span{
width: 312rpx;
font-size: 32rpx;
}
p {
margin-top: 40rpx;
font-size: 24rpx;
color: #999999;
}
}
.recommend-img img{
width: 226rpx;
height: 170rpx;
border-radius: 4rpx;
}
}
}
}
}
</style>

View File

@@ -0,0 +1,53 @@
<template lang="pug">
.title
.title-left
img.logo(src="../static/img/icon/gw_img_logo.png")
img.text-img(src="../static/img/icon/logo_text_icon.png")
button 打开
</template>
<script>
export default {
name: "Top",
};
</script>
<style scoped lang="less">
.title {
height: 100rpx;
display: flex;
justify-content: space-between;
align-items: center;
background-color: #4c4c4c;
display: flex;
left: 0;
right: 0;
top: 0;
.title-left {
margin-left: 12rpx;
display: flex;
align-items: center;
.logo {
margin-top: 5.625rpx;
width: 65rpx;
height: 65rpx;
}
.text-img {
margin-left: 9.4875rpx;
width: 132rpx;
height: 46rpx;
}
}
button {
width: 144rpx;
height: 52rpx;
line-height: 52rpx;
margin-right: 19.9875rpx;
color: #fff;
background-color: #d0302c;
border-radius: 8rpx;
border: none;
font-size: 12rpx;
}
}
</style>

View File

@@ -0,0 +1,87 @@
<template>
<div class="tvlist">
<div v-for="(item, index) in TvList" :key="index" @click="tolink(item)">
<span :class="item.id == currentId ? 's_active' : ''">{{
item.title
}}</span
><img v-if="item.id == currentId" src="/static/img/act-list.gif" />
</div>
</div>
</template>
<script>
export default {
name: "TvList",
props: {
showIcon: {
type: Boolean,
default: true,
},
showActive: {
type: Boolean,
default: true,
},
},
data() {
return {
currentId: 0,
//保存的是首页第二个包河TV接口里的数据
TvList: [],
};
},
created() {
this.getList();
this.changeStaus();
},
methods: {
changeStaus() {
let id = this.$route.query.id;
if (id != undefined) {
this.currentId = id;
}
},
//首页第二个包河TV接口
async getList() {
this.TvList = await this.$http.index.channelList({
page: this.page,
count: 20,
});
console.log(this.TvList);
},
//点击跳转带参数
tolink(item) {
uni.navigateTo({
url: `/pages/watchtv/watchtv?url=${item.play_url}&id=${item.id}`,
});
},
},
};
</script>
<style scoped lang="less">
.tvlist {
div {
height: 120rpx;
background-color: #ffffff;
display: flex;
align-items: center;
justify-content: space-between;
padding-left: 0.813rem;
padding-right: 0.36rem;
box-sizing: border-box;
border-bottom: 0.013rem solid #e5e5e5;
span {
font-family: PingFangSC-Bold;
font-size: 0.427rem;
color: #333333;
}
.s_active {
color: #d0302c !important;
}
img {
width: 27rpx;
height: 30rpx;
}
}
}
</style>

View File

@@ -0,0 +1,59 @@
<template>
<view class="swiper_list">
<swiper class="swiper"
:autoplay="autoplay"
:current="currentIndex"
:interval="interval"
@change="SwiperChange">
<swiper-item v-for="(item,index) in list" :key="index">
<img :src="item.url" alt="">
</swiper-item>
</swiper>
<div class="numbers">{{ currentIndex + 1 }} / {{ list.length }}</div>
</view>
</template>
<script>
export default {
props: {
list: {
type: Array,
default: () => []
}
},
data() {
return {
autoplay: true,
interval: 3000,
currentIndex: 0
}
},
methods: {
SwiperChange(e) {
this.currentIndex = e.detail.current
}
}
}
</script>
<style scoped>
.swiper_list {
position: relative;
}
.numbers {
width: 50px;
height: 24px;
background-color: #000000;
border-radius: 12px;
opacity: 0.6;
color: #ffffff;
font-size: 13px;
text-align: center;
line-height: 24px;
position: absolute;
right: 10px;
bottom: 20px;
}
</style>

View File

@@ -0,0 +1,54 @@
<template>
<view class="mysss">
<!--#ifdef H5-->
<view class="video-js" ref="video">
</view>
<!-- #endif -->
<!--#ifdef APP-PLUS-->
<video
class="my_video"
object-fit="fill"
:src="src"
controls></video>
<!-- #endif -->
</view>
</template>
<script>
//
export default {
props: {
src: {
type: String,
default: ''
}
},
data() {
return {
};
},
mounted() {
// #ifdef H5
var video = document.createElement('video')
video.id = 'video'
video.style = 'width: 100%;height: 150px;'
video.controls = true
var source = document.createElement('source')
source.src = this.src
video.appendChild(source)
this.$refs.video.$el.appendChild(video)
videojs('video')
// #endif
},
}
</script>
<style>
.my_video {
width: 100%;
}
</style>

View File

@@ -0,0 +1,29 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>
<%= htmlWebpackPlugin.options.title %>
</title>
<!-- Open Graph data -->
<!-- <meta property="og:title" content="Title Here" /> -->
<!-- <meta property="og:url" content="http://www.example.com/" /> -->
<!-- <meta property="og:image" content="http://example.com/image.jpg" /> -->
<!-- <meta property="og:description" content="Description Here" /> -->
<script>
var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || CSS.supports('top: constant(a)'))
document.write('<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + (coverSupport ? ', viewport-fit=cover' : '') + '" />')
</script>
<link rel="stylesheet" href="<%= BASE_URL %>static/index.<%= VUE_APP_INDEX_CSS_HASH %>.css" />
<link href="https://unpkg.com/video.js/dist/video-js.min.css" rel="stylesheet">
<script src="https://unpkg.com/video.js/dist/video.min.js"></script>
</head>
<body>
<noscript>
<strong>Please enable JavaScript to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>

View File

@@ -0,0 +1,28 @@
import Vue from 'vue'
import App from './App'
import http from './common/service/_';
import top from './components/Top';
import video from './components/video';
import comment from './components/Comment';
import tvlist from './components/TvList';
import recommend from './components/Recommend';
import allComment from './components/AllComment';
Vue.component('top',top);
Vue.component('video',video);
Vue.component('recommend',recommend);
Vue.component('videoes',video);
Vue.component('comment',comment);
Vue.component('tvlist',tvlist);
Vue.component('allComment',allComment);
Vue.config.productionTip = false
Vue.prototype.$http = http;
App.mpType = 'app'
const app = new Vue({
...App
})
app.$mount()

View File

@@ -0,0 +1,88 @@
{
"name": "hahah",
"appid": "__UNI__8E176DC",
"description": "",
"versionName": "1.0.1",
"versionCode": 101,
"transformPx": false,
/* 5+App特有相关 */
"app-plus": {
"usingComponents": true,
"nvueStyleCompiler": "uni-app",
"compilerVersion": 3,
"splashscreen": {
"alwaysShowBeforeRender": true,
"waiting": true,
"autoclose": true,
"delay": 0
},
/* 模块配置 */
"modules": {
"VideoPlayer": {}
},
/* 应用发布信息 */
"distribute": {
/* android打包配置 */
"android": {
"permissions": [
"<uses-feature android:name=\"android.hardware.camera\"/>",
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
]
},
/* ios打包配置 */
"ios": {},
/* SDK配置 */
"sdkConfigs": {
"ad": {}
}
}
},
/* 快应用特有相关 */
"quickapp": {},
/* 小程序特有相关 */
"mp-weixin": {
"appid": "",
"setting": {
"urlCheck": false
},
"usingComponents": true
},
"mp-alipay": {
"usingComponents": true
},
"mp-baidu": {
"usingComponents": true
},
"mp-toutiao": {
"usingComponents": true
},
"uniStatistics": {
"enable": false
},
"h5": {
"devServer": {
"proxy": {
"/api": {
"target": "https://zbhapi.ahtv.cn/h5",
"changeOrigin": true,
"secure": false,
"pathRewrite": {
"^/api": "/"
}
}
}
}
}
}

View File

@@ -0,0 +1,3 @@
{
"lockfileVersion": 1
}

View File

@@ -0,0 +1,94 @@
{
"pages": [{
"path": "pages/index/index",
"style": {
"navigationBarTitleText": "首页",
"enablePullDownRefresh": true,
"app-plus": {
"bounce": "none",
"titleNView": {
"buttons": [{
"type": "share",
"text": "分享",
"fontSize": "18"
}],
"backButton": {
"background": "#00FF00"
}
}
}
}
},
{
"path": "pages/about/about",
"style": {
"navigationBarTitleText": "我的"
}
},
{
"path": "pages/Info/Info",
"style": {
"navigationBarTitleText": "详情"
}
}, {
"path": "pages/videolive/videolive",
"style": {
"navigationBarTitleText": "电视直播"
}
}, {
"path": "pages/watchtv/watchtv",
"style": {
"navigationBarTitleText": "看电视"
}
}, {
"path": "pages/invitation/invitation",
"style": {
"navigationBarTitleText": "帖子分享"
}
},
{
"path": "pages/News/News",
"style": {
"navigationBarTitleText": "新闻资讯",
"enablePullDownRefresh": false
}
}, {
"path": "pages/demand/demand",
"style": {
"navigationBarTitleText": "视频分享"
}
}, {
"path": "pages/Tv/Tv",
"style": {
"navigationBarTitleText": "再包河",
"enablePullDownRefresh": false
}
}
],
"globalStyle": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "uni-app",
"navigationBarBackgroundColor": "#F8F8F8",
"backgroundColor": "#F8F8F8"
},
"tabBar": {
"color": "#7A7E83",
"selectedColor": "#3cc51f",
"borderStyle": "black",
"backgroundColor": "#ffffff",
"list": [{
"pagePath": "pages/index/index",
"text": "首页"
}, {
"pagePath": "pages/about/about",
"text": "我的"
}]
}
}

View File

@@ -0,0 +1,23 @@
<template lang="pug">
.info {{ id }}
</template>
<script>
export default {
data() {
return {
id: 0
}
},
onLoad(params) {
this.id = params.id
},
methods: {
}
}
</script>
<style>
</style>

View File

@@ -0,0 +1,103 @@
<template lang="pug">
.news
top
.news-content
.news-title {{NewsList.title}}
.news-date
span {{NewsList.create_time}}
span {{NewsList.viewer_count}}
div(v-html="NewsList.content" :class="isMore ? 'news-body' : ''")
.show( @click="isMore = !isMore" v-if="isMore")
img(src='/static/img/select-down.png' class='select')
button 打开APP阅读全文
recommend(:relevant="relevant",:vertical="vertical")
comment
</template>
<script>
export default {
data() {
return {
isMore: true,
NewsList: [],
relevant: [],
vertical:true
}
},
created () {
this.getVideoDetail()
},
methods: {
async getVideoDetail () {
let res = await this.$http.index.newsDetail({
id: "461"
})
this.NewsList = res.detail
this.relevant = res.recommend
console.log(res)
}
},
}
</script>
<style scoped lang="less">
.news-content {
padding-left: 23rpx;
padding-right: 25rpx;
.news-title {
font-size: 40rpx;
margin-bottom: 38rpx;
}
.news-date {
font-size: 24rpx;
span {
margin-left: 22rpx;
color: #999999;
}
}
.news-body {
height: 1131rpx;
margin-top: 38rpx;
font-size: 32rpx;
overflow: hidden;
}
.show {
//position: relative;
display: block;
margin-top: 22rpx;
text-align: center;
.select {
width: 52rpx;
}
.back {
position: absolute;
top: 0;
left: 350rpx;
z-index: -1;
opacity: 0.5;
width: 52rpx;
height: 40rpx;
}
button {
width: 702rpx;
height: 88rpx;
background-color: #d0302c;
border-radius: 8rpx;
font-size: 28rpx;
color: #ffffff;
border: none;
}
}
}
</style>

View File

@@ -0,0 +1,28 @@
<template>
<view>
<p>在包河(首页第二个)</p>
</view>
</template>
<script>
export default {
data() {
return {};
},
created(){
this.getList();
},
methods: {
async getList() {
let res = await this.$http.index.channelList({
page: this.page,
count: 20,
});
console.log(res);
},
},
};
</script>
<style>
</style>

View File

@@ -0,0 +1,104 @@
<template lang="pug">
ul
li(v-for='item in liveArr' @click="enterInfo(item)")
.li-top
img(class='context' :src='item.coverimage')
// 右上角
img(v-if='item.status == 10' class='state' src='/static/img/icon/live_lab_ing.png')
img(v-else-if='item.status == 3' class='state' src='/static/img/icon/live_lab_notice_big.png')
img(v-else='item.status == 1 || 2' class='playback' src='/static/img/icon/live_lab_playback_big.png')
.time(v-if='item.status == 10') 直播时间:{{item.start_time}}
.subscribe(v-if='item.status == 3') {{item.appointment_count}}人预约
.subscribe(v-else-if='item.status == 1 || 2') {{item.appointment_count}}人看过
.subscribe(v-else='item.status == 10') {{item.appointment_count}}人在看
span {{item.title}}
</template>
<script>
export default {
created () {
this.liveList()
},
data () {
return {
liveArr: []
}
},
methods: {
async liveList () {
let res = await this.$http.index.liveList({
})
this.liveArr = res.list
console.log(res)
},
enterInfo(item) {
uni.navigateTo({
url: `/pages/videolive/videolive?id=${item.id}`,
});
},
}
}
</script>
<style scoped lang="less">
ul{
margin-top: 31rpx;
border-top: 1rpx solid #f5f5f5;
padding-left: 21rpx;
padding-right: 23rpx;
li{
position: relative;
margin-bottom: 0.533rem;
.li-top {
.context {
width: 702rpx;
height: 309rpx;
}
.state {
position: absolute;
top: 14rpx;
right: 14rpx;
width: 114rpx;
height: 36rpx;
}
.playback {
position: absolute;
top: 14rpx;
right: 14rpx;
width: 60rpx;
height: 36rpx;
}
.time {
position: absolute;
top: 40%;
left: 50%;
transform: translate(-50%, -50%);
width: 280rpx;
height: 40rpx;
background-color: #000000;
border-radius: 20rpx;
opacity: 0.7;
align-items: center;
text-align: center;
color: #fff;
font-size: 22rpx;
}
.subscribe {
position: absolute;
right: 13rpx;
bottom: 12rpx;
font-size: 22rpx;
color: #ffffff;
}
}
}
span {
display: block;
font-size: 30rpx;
}
}
</style>

View File

@@ -0,0 +1,175 @@
<template lang="pug">
.demand
top
view
swiper(class="swiper" :indicator-dots='indicatorDots', :autoplay='autoplay', :interval='interval', :duration='duration')
swiper-item
view.swiper-item A
swiper-item
view.swiper-item B
swiper-item
view.swiper-item C
.demand_a
.demand_b( v-if="Return.detail.image_url" )
img(class="tx" :src='Return.detail.image_url')
.demand_c
p {{Return.detail.nick_name}}
span {{Return.detail.create_time}}
span {{Return.detail.content}}
comment
allComment
</template>
<script>
import swiperImg from '../../components/swiper.vue'
export default {
name: 'demand',
components:{
swiperImg
},
data () {
return {
background: ['color1', 'color2', 'color3'],
indicatorDots: true,
autoplay: true,
interval: 2000,
duration: 500,
swiperList:[
{ img:'/static/sky01.jpg',
title:'星空1',
content:'安静笼罩著夏夜巨大的星空,覆盖著整个地球,温柔地无声无息'
},
{ img:'/static/sky02.jpg',
title:'星空2',
content:'星星就像一盏盏小电灯,在空中闪烁'
},
{ img:'/static/sky03.jpg',
title:'星空3',
content: '我在星空的这一端,你在星空的那一端,相隔很远这很远。灿烂的永恒,无尽的遥远,再也无法相见..'
}, { img:'/static/sky04.jpg',
title:'星空4',
content: '一切都如生命一般,在悄然地发生着变化,就如这黑夜一样,失去了光明,却得到了星空.'
},
],
Return: {},
images: []
}
},
created () {
this.getdemand()
},
methods: {
async getdemand () {
let res = await this.$http.index.interactDetail({
id: '218'
})
console.log(res)
this.Return = res
this.images = res.detail.image
},
changeIndicatorDots(e) {
this.indicatorDots = !this.indicatorDots
},
changeAutoplay(e) {
this.autoplay = !this.autoplay
},
intervalChange(e) {
this.interval = e.target.value
},
durationChange(e) {
this.duration = e.target.value
}
// onChange (index) {
// this.current = index
// }
},
}
</script>
<style scoped lang="less">
.demand {
.van-swipe {
width: 10rem;
height: 13.427rem;
.van-swipe-item {
img {
height: 100%;
}
}
.custom-indicator {
position: absolute;
right: 5px;
bottom: 5px;
padding: 2px 5px;
font-size: 12px;
border-radius: 30%;
background: rgba(0, 0, 0, 0.1);
}
}
.demand_a {
margin: 0.333rem;
.demand_b {
display: flex;
img {
margin-right: 0.213rem;
margin-left: 0.32rem;
width: 38px;
height: 41px;
border-radius: 50%;
}
.demand_c {
p {
width: 80px;
height: 13px;
font-family: PingFangSC-Bold;
font-size: 14px;
font-weight: normal;
font-stretch: normal;
line-height: 17px;
letter-spacing: 0px;
color: #333333;
}
span {
width: 1.467rem;
height: 0.307rem;
font-family: PingFangSC-Medium;
font-size: 0.32rem;
font-weight: normal;
font-stretch: normal;
line-height: 0.747rem;
letter-spacing: 0rem;
color: #999999;
}
}
}
span {
width: 351px;
height: 85px;
font-family: PingFangSC-Medium;
font-size: 16px;
font-weight: normal;
font-stretch: normal;
line-height: 25px;
letter-spacing: 0px;
color: #333333;
}
}
.comment {
margin-bottom: 0.533rem;
}
.allComment {
margin-bottom: 0.533rem;
}
}
</style>

View File

@@ -0,0 +1,80 @@
<template>
<view class="content">
<swiperComponents :list="test"></swiperComponents>
<videoComponents
src="https://d2zihajmogu5jn.cloudfront.net/sintel/rendition/rendition.m3u8?assetId=4034862675001&videoId=4034552795001"
></videoComponents>
<image class="logo" src="/static/logo.png"></image>
<ul>
<li v-for="(item, index) in list" :key="index" @click="enterInfo(item)">
{{ item.title }}
</li>
</ul>
<uni-collapse accordion="true">
<uni-collapse-item title="标题文字">
<view style="padding: 30rpx"> 手风琴效果 </view>
</uni-collapse-item>
<uni-collapse-item title="标题文字">
<view style="padding: 30rpx"> 手风琴效果 </view>
</uni-collapse-item>
<uni-collapse-item title="标题文字">
<view style="padding: 30rpx"> 手风琴效果 </view>
</uni-collapse-item>
</uni-collapse>
</view>
</template>
<script>
import videoComponents from "../../components/video";
import swiperComponents from "../../components/swiper";
export default {
data() {
return {
test: [
{ url: 'https://zbhresources.ahtv.cn/app/uploads/202003/13/iOS_493662ea30aa7c4bede66a055ae82f3b.png' },
{ url: 'https://zbhresources.ahtv.cn/app/uploads/202003/13/iOS_152e3d7660b8d0be3d32203a0f6b2263.png' }
],
list: [
{ id: 1, title: "测试1" },
{ id: 2, title: "测试2" },
{ id: 3, title: "测试3" },
],
};
},
created() {
this.radio();
},
onLoad() {},
methods: {
async getIndex() {
let res = await this.$http.index.getIndex({
id: 455,
});
console.log(res);
},
async radio() {
let aaa = await this.$http.index.radio();
console.log(aaa);
},
enterInfo(item) {
uni.navigateTo({
url: `/pages/Info/Info?id=${item.id}`,
});
},
},
components: {
videoComponents,
swiperComponents
},
};
</script>
<style scoped lang="less">
@import "../../common/less/page/index.less";
</style>

View File

@@ -0,0 +1,173 @@
<template lang="pug">
.invitation
top
video
.invitation_a
span {{Return.detail.title}}
.invitation_b
span {{Return.detail.create_time}}
.invitation_c
.left
.left_a
img(class='xing' src='/static/img/icon/collection-icon.png')
span 收藏
.left_b
img(class='zan' src='/static/img/icon/give_thumbs-up.png')
span {{Return.detail.like_count}}
.right( @click="boom" )
span 简介
img(:src="booker ? '/static/img/icon/open-just.png' : '/static/img/icon/open-close.png'")
.invitation_d(v-show='booker')
span 简介内容简介内容简介内容简介内容简介内容简介内容简介内容简介内容简介内容
comment
allComment
</template>
<script>
export default {
name: 'invitation',
data () {
return {
booker: false,
Return: {}
}
},
created () {
this.getvideoDetail()
},
methods: {
async getvideoDetail () {
let res = await this.$http.index.videoDetail({
id: '147'
})
console.log(res)
this.Return = res
},
boom (e) {
this.booker = !this.booker;
}
},
}
</script>
<style scoped lang="less">
.invitation {
uni-video {
width: 100%;
height: 422rpx;
}
.invitation_a {
margin: 0.878rem 0.693rem 0.493rem 0.307rem;
span {
width: 337.5px;
height: 44px;
font-family: PingFangSC-Bold;
font-size: 18px;
font-weight: normal;
font-stretch: normal;
line-height: 28.5px;
letter-spacing: 0px;
color: #333333;
}
.invitation_b {
span {
width: 103.5px;
height: 9px;
font-family: PingFangSC-Medium;
font-size: 11.5px;
font-weight: normal;
font-stretch: normal;
line-height: 21.6px;
letter-spacing: 0px;
color: #999999;
}
.invitation_c {
display: flex;
justify-content: space-between;
.left {
display: flex;
.left_a {
img {
width: 14px;
height: 14px;
}
span {
width: 0.613rem;
height: 0.307rem;
font-family: PingFangSC-Medium;
font-size: 0.32rem;
font-weight: normal;
font-stretch: normal;
line-height: 0.6rem;
letter-spacing: 0rem;
}
}
.left_b {
img {
width: 14px;
height: 14px;
}
span {
width: 0.613rem;
height: 0.307rem;
font-family: PingFangSC-Medium;
font-size: 0.32rem;
font-weight: normal;
font-stretch: normal;
line-height: 0.6rem;
letter-spacing: 0rem;
}
}
}
.right {
span {
width: 0.627rem;
height: 0.307rem;
font-family: PingFangSC-Medium;
font-size: 0.32rem;
font-weight: normal;
font-stretch: normal;
line-height: 0.384rem;
letter-spacing: 0rem;
color: #999999;
}
img {
width: 8.5px;
height: 5px;
}
}
}
}
}
.invitation_d{
.active{
display: none;
}
.none{
display: block !important;
}
margin: 0.32rem;
span{
width: 348.5px;
height: 34.5px;
font-family: PingFangSC-Medium;
font-size: 14px;
font-weight: normal;
font-stretch: normal;
line-height: 23.5px;
letter-spacing: 0px;
color: #999999;
}
}
}
</style>

View File

@@ -0,0 +1,75 @@
<template>
<div class="big">
<top></top>
<videoes :src="live.play_url"></videoes>
<div class="apps">
<p class="p1">{{ live.title }}</p>
<p class="p2">{{ live.viewer_count }}人预约</p>
<div class="jianjie">
<div class="left">
<img src="/static/img/icon/give_thumbs-up.png" />
<p>{{ live.collection_count }}</p>
</div>
<div class="right" @click="dianji">
<p>简介</p>
<img
:src="
stat
? '/static/img/icon/open-close.png'
: '/static/img/icon/open-just.png'
"
/>
<div class="aaa" v-show="stat">{{ live.des }}</div>
</div>
</div>
<div class="msg" v-if="live.appointment_count == 2">
<p>{{ live.start_time }}</p>
<img src="/static/img/yuyue.png" />
</div>
</div>
<comment></comment>
</div>
</template>
<script>
//appointment_count==0表示正在直播,appointment_count==2表示有预约
export default {
data() {
return {
stat: false,
live: [],
el:{}
};
},
created() {
this.liveDetail();
console.log('----------',this.el.id);
},
onLoad(el){
this.el=el;
},
methods: {
dianji() {
this.stat = !this.stat;
},
//直播详情接口
async liveDetail() {
let res = await this.$http.index.liveDetail({
//id:478,482
live_id: this.el.id,
});
this.live = res.live;
console.log(this.live);
},
},
};
</script>
<style lang='less' scoped>
@import "../../common/less/page/vidiolive.less";
uni-video {
width: 100%;
height: 422rpx;
}
</style>

View File

@@ -0,0 +1,81 @@
<template>
<div>
<top></top>
<videoes :src='videoUrl.src'></videoes>
<view class="end-title">
  <view @tap="change(0)" :class="{ btna: btnnum == 0 }">频道</view>
 <view @tap="change(1)" :class="{ btna: btnnum == 1 }">评论</view>
</view>
<view class="end-cont" :class="{ dis: btnnum == 0 }">
<tvlist></tvlist>
</view>
<view class="end-cont" :class="{ dis: btnnum == 1 }">
<comment :comment-list="CommentArr"></comment>
</view>
</div>
</template>
<script>
export default {
//此页面需要调包河TV评论接口,拿到值保存,然后传到comment组件中去
data() {
return {
btnnum: 0,
videoUrl: [],
CommentArr: [],
dataList: [],
};
},
onLoad(el) {
this.dataList = el;
},
created() {
console.log(this.dataList.id);
console.log(this.dataList.url);
console.log(this.videoUrl.src);
this.videoUrl.push({
type: "audio/x-mpegurl",
src: this.dataList.url,
});
this.getTvComment();
},
methods: {
change(e) {
this.btnnum = e;
},
async getTvComment() {
let res = await this.$http.index.channelComment({
object_id: this.dataList.id,
});
this.CommentArr = res.list;
},
},
};
</script>
<style scoped>
.end-title {
display: flex;
height: 120rpx;
line-height: 120rpx;
}
.end-title view {
flex-grow: 1;
text-align: center;
}
.end-cont {
display: none;
}
.btna {
color: #ffffff;
color: red;
}
.dis {
display: block;
}
uni-video {
width: 100%;
}
</style>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 652 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

@@ -0,0 +1,76 @@
/**
* 这里是uni-app内置的常用样式变量
*
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
*
*/
/**
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
*
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
*/
/* 颜色变量 */
/* 行为相关颜色 */
$uni-color-primary: #007aff;
$uni-color-success: #4cd964;
$uni-color-warning: #f0ad4e;
$uni-color-error: #dd524d;
/* 文字基本颜色 */
$uni-text-color:#333;//基本色
$uni-text-color-inverse:#fff;//反色
$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息
$uni-text-color-placeholder: #808080;
$uni-text-color-disable:#c0c0c0;
/* 背景颜色 */
$uni-bg-color:#ffffff;
$uni-bg-color-grey:#f8f8f8;
$uni-bg-color-hover:#f1f1f1;//点击状态颜色
$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色
/* 边框颜色 */
$uni-border-color:#c8c7cc;
/* 尺寸变量 */
/* 文字尺寸 */
$uni-font-size-sm:24rpx;
$uni-font-size-base:28rpx;
$uni-font-size-lg:32rpx;
/* 图片尺寸 */
$uni-img-size-sm:40rpx;
$uni-img-size-base:52rpx;
$uni-img-size-lg:80rpx;
/* Border Radius */
$uni-border-radius-sm: 4rpx;
$uni-border-radius-base: 6rpx;
$uni-border-radius-lg: 12rpx;
$uni-border-radius-circle: 50%;
/* 水平间距 */
$uni-spacing-row-sm: 10px;
$uni-spacing-row-base: 20rpx;
$uni-spacing-row-lg: 30rpx;
/* 垂直间距 */
$uni-spacing-col-sm: 8rpx;
$uni-spacing-col-base: 16rpx;
$uni-spacing-col-lg: 24rpx;
/* 透明度 */
$uni-opacity-disabled: 0.3; // 组件禁用态的透明度
/* 文章场景相关 */
$uni-color-title: #2C405A; // 文章标题颜色
$uni-font-size-title:40rpx;
$uni-color-subtitle: #555555; // 二级标题颜色
$uni-font-size-subtitle:36rpx;
$uni-color-paragraph: #3F536E; // 文章段落颜色
$uni-font-size-paragraph:30rpx;

View File

@@ -0,0 +1,4 @@
## 1.1.6(2021-02-05)
- 优化 组件引用关系,通过uni_modules引用组件
## 1.1.5(2021-02-05)
- 调整为uni_modules目录规范

View File

@@ -0,0 +1,220 @@
<template>
<view :class="{ 'uni-collapse-cell--disabled': disabled,'uni-collapse-cell--notdisabled': !disabled, 'uni-collapse-cell--open': isOpen,'uni-collapse-cell--hide':!isOpen }"
class="uni-collapse-cell">
<view :class="{ 'uni-collapse-cell--disabled': disabled}" class="uni-collapse-cell__title" @click="onClick">
<image v-if="thumb" :src="thumb" class="uni-collapse-cell__title-img" />
<text class="uni-collapse-cell__title-text">{{ title }}</text>
<!-- #ifdef MP-ALIPAY -->
<view :class="{ 'uni-collapse-cell__title-arrow-active': isOpen, 'uni-collapse-cell--animation': showAnimation === true }"
class="uni-collapse-cell__title-arrow">
<uni-icons color="#bbb" size="20" type="arrowdown" />
</view>
<!-- #endif -->
<!-- #ifndef MP-ALIPAY -->
<uni-icons :class="{ 'uni-collapse-cell__title-arrow-active': isOpen, 'uni-collapse-cell--animation': showAnimation === true }"
class="uni-collapse-cell__title-arrow" color="#bbb" size="20" type="arrowdown" />
<!-- #endif -->
</view>
<view :class="{'uni-collapse-cell__content--hide':!isOpen}" class="uni-collapse-cell__content">
<view :class="{ 'uni-collapse-cell--animation': showAnimation === true }" class="uni-collapse-cell__wrapper" :style="{'transform':isOpen?'translateY(0)':'translateY(-50%)','-webkit-transform':isOpen?'translateY(0)':'translateY(-50%)'}">
<slot />
</view>
</view>
</view>
</template>
<script>
/**
* CollapseItem 折叠面板子组件
* @description 折叠面板子组件
* @property {String} title 标题文字
* @property {String} thumb 标题左侧缩略图
* @property {Boolean} disabled = [true|false] 是否展开面板
* @property {Boolean} showAnimation = [true|false] 开启动画
*/
export default {
name: 'UniCollapseItem',
props: {
title: {
// 列表标题
type: String,
default: ''
},
name: {
// 唯一标识符
type: [Number, String],
default: 0
},
disabled: {
// 是否禁用
type: Boolean,
default: false
},
showAnimation: {
// 是否显示动画
type: Boolean,
default: false
},
open: {
// 是否展开
type: Boolean,
default: false
},
thumb: {
// 缩略图
type: String,
default: ''
}
},
data() {
return {
isOpen: false
}
},
watch: {
open(val) {
this.isOpen = val
}
},
inject: ['collapse'],
created() {
this.isOpen = this.open
this.nameSync = this.name ? this.name : this.collapse.childrens.length
this.collapse.childrens.push(this)
if (String(this.collapse.accordion) === 'true') {
if (this.isOpen) {
let lastEl = this.collapse.childrens[this.collapse.childrens.length - 2]
if (lastEl) {
this.collapse.childrens[this.collapse.childrens.length - 2].isOpen = false
}
}
}
},
methods: {
onClick() {
if (this.disabled) {
return
}
if (String(this.collapse.accordion) === 'true') {
this.collapse.childrens.forEach(vm => {
if (vm === this) {
return
}
vm.isOpen = false
})
}
this.isOpen = !this.isOpen
this.collapse.onChange && this.collapse.onChange()
this.$forceUpdate()
}
}
}
</script>
<style lang="scss" scoped>
.uni-collapse-cell {
flex-direction: column;
border-color: $uni-border-color;
border-bottom-width: 1px;
border-bottom-style: solid;
}
.uni-collapse-cell--hover {
background-color: $uni-bg-color-hover;
}
.uni-collapse-cell--open {
background-color: $uni-bg-color-hover;
}
.uni-collapse-cell--disabled {
background-color: $uni-bg-color-hover;
/* #ifdef H5 */
cursor: not-allowed !important;
/* #endif */
// opacity: 0.3;
}
.uni-collapse-cell--hide {
height: 48px;
}
.uni-collapse-cell--animation {
// transition: transform 0.3s ease;
transition-property: transform;
transition-duration: 0.3s;
transition-timing-function: ease;
}
.uni-collapse-cell__title {
padding: 12px 12px;
position: relative;
/* #ifndef APP-NVUE */
display: flex;
width: 100%;
box-sizing: border-box;
/* #endif */
height: 48px;
line-height: 24px;
flex-direction: row;
justify-content: space-between;
align-items: center;
/* #ifdef H5 */
cursor: pointer;
/* #endif */
}
.uni-collapse-cell__title:active {
background-color: $uni-bg-color-hover;
}
.uni-collapse-cell__title-img {
height: $uni-img-size-base;
width: $uni-img-size-base;
margin-right: 10px;
}
.uni-collapse-cell__title-arrow {
width: 20px;
height: 20px;
transform: rotate(0deg);
transform-origin: center center;
}
.uni-collapse-cell__title-arrow-active {
transform: rotate(180deg);
}
.uni-collapse-cell__title-text {
flex: 1;
font-size: $uni-font-size-base;
/* #ifndef APP-NVUE */
white-space: nowrap;
color: inherit;
/* #endif */
/* #ifdef APP-NVUE */
lines: 1;
/* #endif */
overflow: hidden;
text-overflow: ellipsis;
}
.uni-collapse-cell__content {
overflow: hidden;
}
.uni-collapse-cell__wrapper {
/* #ifndef APP-NVUE */
display: flex;
/* #endif */
flex-direction: column;
}
.uni-collapse-cell__content--hide {
height: 0px;
line-height: 0px;
}
</style>

View File

@@ -0,0 +1,59 @@
<template>
<view class="uni-collapse">
<slot />
</view>
</template>
<script>
/**
* Collapse 折叠面板
* @description 展示可以折叠 / 展开的内容区域
* @tutorial https://ext.dcloud.net.cn/plugin?id=23
* @property {Boolean} accordion = [true|false] 是否开启手风琴效果是否开启手风琴效果
* @event {Function} change 切换面板时触发,activeNames(Array):展开状态的uniCollapseItem的 name 值
*/
export default {
name: 'UniCollapse',
props: {
accordion: {
// 是否开启手风琴效果
type: [Boolean, String],
default: false
}
},
data() {
return {}
},
provide() {
return {
collapse: this
}
},
created() {
this.childrens = []
},
methods: {
onChange() {
let activeItem = []
this.childrens.forEach((vm, index) => {
if (vm.isOpen) {
activeItem.push(vm.nameSync)
}
})
this.$emit('change', activeItem)
}
}
}
</script>
<style lang="scss" scoped>
.uni-collapse {
/* #ifndef APP-NVUE */
width: 100%;
display: flex;
/* #endif */
/* #ifdef APP-NVUE */
flex: 1;
/* #endif */
flex-direction: column;
background-color: $uni-bg-color;
}
</style>

View File

@@ -0,0 +1,84 @@
{
"id": "uni-collapse",
"displayName": "Collapse 折叠面板",
"version": "1.1.6",
"description": " collapse uni-ui 折叠面板 手风琴",
"keywords": [
"Collapse",
"组件,可以折叠",
"/",
"展开的内容区域。"
],
"repository": "https://github.com/dcloudio/uni-ui",
"engines": {
"HBuilderX": ""
},
"directories": {
"example": "../../temps/example_temps"
},
"dcloudext": {
"category": [
"前端组件",
"通用组件"
],
"sale": {
"regular": {
"price": "0.00"
},
"sourcecode": {
"price": "0.00"
}
},
"contact": {
"qq": ""
},
"declaration": {
"ads": "无",
"data": "无",
"permissions": "无"
},
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
},
"uni_modules": {
"dependencies": [
"uni-icons"
],
"encrypt": [],
"platforms": {
"cloud": {
"tcb": "y",
"aliyun": "y"
},
"client": {
"App": {
"app-vue": "y",
"app-nvue": "y"
},
"H5-mobile": {
"Safari": "y",
"Android Browser": "y",
"微信浏览器(Android)": "y",
"QQ浏览器(Android)": "y"
},
"H5-pc": {
"Chrome": "y",
"IE": "y",
"Edge": "y",
"Firefox": "y",
"Safari": "y"
},
"小程序": {
"微信": "y",
"阿里": "y",
"百度": "y",
"字节跳动": "y",
"QQ": "y"
},
"快应用": {
"华为": "u",
"联盟": "u"
}
}
}
}
}

View File

@@ -0,0 +1,107 @@
## Collapse 折叠面板
> 代码块: `uCollapse`
> 关联组件:`uni-collapse-item`、`uni-icons`。
展示可以折叠 / 展开的内容区域。
### 安装方式
本组件符合[easycom](https://uniapp.dcloud.io/collocation/pages?id=easycom)规范,`HBuilderX 2.5.5`起,只需将本组件导入项目,在页面`template`中即可直接使用,无需在页面中`import`和注册`components`。
如需通过`npm`方式使用`uni-ui`组件,另见文档:[https://ext.dcloud.net.cn/plugin?id=55](https://ext.dcloud.net.cn/plugin?id=55)
### 基本用法
在 ``template`` 中引用组件
```html
<!-- 一般用法 -->
<uni-collapse @change="change">
<uni-collapse-item title="标题文字">
<uni-list>
<uni-list-item title="标题文字" thumb="https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/460d46d0-4fcc-11eb-8ff1-d5dcf8779628.png"></uni-list-item>
<uni-list-item title="标题文字" note="描述信息" thumb="https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/460d46d0-4fcc-11eb-8ff1-d5dcf8779628.png"></uni-list-item>
<uni-list-item title="标题文字" note="描述信息" show-extra-icon="true" :extra-icon="{color: '#4cd964',size: '22',type: 'spinner'}"></uni-list-item>
</uni-list>
</uni-collapse-item>
<uni-collapse-item title="默认开启" open="true">
<view style="padding: 30rpx;"> 折叠内容主体,可自定义内容及样式 </view>
</uni-collapse-item>
<uni-collapse-item title="禁用状态" disabled="true">
<view style="padding: 30rpx;"> 禁用状态 </view>
</uni-collapse-item>
</uni-collapse>
<!-- 手风琴效果 -->
<uni-collapse accordion="true">
<uni-collapse-item title="标题文字">
<view style="padding: 30rpx;">
手风琴效果
</view>
</uni-collapse-item>
<uni-collapse-item title="标题文字">
<view style="padding: 30rpx;">
手风琴效果
</view>
</uni-collapse-item>
<uni-collapse-item title="标题文字">
<view style="padding: 30rpx;">
手风琴效果
</view>
</uni-collapse-item>
</uni-collapse>
<!-- 带图标 -->
<uni-collapse>
<uni-collapse-item title="标题文字" thumb="https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/460d46d0-4fcc-11eb-8ff1-d5dcf8779628.png">
<view style="padding: 30rpx;">
折叠内容主体,可自定义内容及样式
</view>
</uni-collapse-item>
<uni-collapse-item title="标题文字" thumb="https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/460d46d0-4fcc-11eb-8ff1-d5dcf8779628.png">
<view style="padding: 30rpx;">
折叠内容主体,可自定义内容及样式
</view>
</uni-collapse-item>
</uni-collapse>
```
## API
### Collapse Props
|属性名 |类型 |默认值 |说明 |
|:-: |:-: |:-: |:-: |
|accordion |Boolean|false |是否开启手风琴效果 |
### Collapse Event
|事件称名 |说明 |返回值 |
|:-: |:-: :-: |
|@change |切换面板时触发 |activeNames(Array):展开状态的uniCollapseItem的name值|
### Collapse Methods
|方法名称 |说明 |
|:-: |:-: |
|resize |更新当前列表高度,只有 `animation:true` 下生效|
> - resize 方法解决动态添加数据,带动画的折叠面板高度不更新的问题
> - 需要在数据渲染完毕之后使用 `resize` 方法。推荐在 `this.nextTick()` 中使用
### CollapseItem Props
|属性名 |类型 |默认值 |说明 |
|:-: |:-: |:-: |:-: |
|title |String |- |标题文字 |
|thumb |String |- |标题左侧缩略图 |
|disabled |Boolean|false |是否禁用 |
|open |Boolean|false |是否展开面板 |
|showAnimation |Boolean |false |开启动画 |

View File

@@ -0,0 +1,2 @@
## 1.1.4(2021-02-05)
- 调整为uni_modules目录规范

View File

@@ -0,0 +1,132 @@
export default {
"pulldown": "\ue588",
"refreshempty": "\ue461",
"back": "\ue471",
"forward": "\ue470",
"more": "\ue507",
"more-filled": "\ue537",
"scan": "\ue612",
"qq": "\ue264",
"weibo": "\ue260",
"weixin": "\ue261",
"pengyouquan": "\ue262",
"loop": "\ue565",
"refresh": "\ue407",
"refresh-filled": "\ue437",
"arrowthindown": "\ue585",
"arrowthinleft": "\ue586",
"arrowthinright": "\ue587",
"arrowthinup": "\ue584",
"undo-filled": "\ue7d6",
"undo": "\ue406",
"redo": "\ue405",
"redo-filled": "\ue7d9",
"bars": "\ue563",
"chatboxes": "\ue203",
"camera": "\ue301",
"chatboxes-filled": "\ue233",
"camera-filled": "\ue7ef",
"cart-filled": "\ue7f4",
"cart": "\ue7f5",
"checkbox-filled": "\ue442",
"checkbox": "\ue7fa",
"arrowleft": "\ue582",
"arrowdown": "\ue581",
"arrowright": "\ue583",
"smallcircle-filled": "\ue801",
"arrowup": "\ue580",
"circle": "\ue411",
"eye-filled": "\ue568",
"eye-slash-filled": "\ue822",
"eye-slash": "\ue823",
"eye": "\ue824",
"flag-filled": "\ue825",
"flag": "\ue508",
"gear-filled": "\ue532",
"reload": "\ue462",
"gear": "\ue502",
"hand-thumbsdown-filled": "\ue83b",
"hand-thumbsdown": "\ue83c",
"hand-thumbsup-filled": "\ue83d",
"heart-filled": "\ue83e",
"hand-thumbsup": "\ue83f",
"heart": "\ue840",
"home": "\ue500",
"info": "\ue504",
"home-filled": "\ue530",
"info-filled": "\ue534",
"circle-filled": "\ue441",
"chat-filled": "\ue847",
"chat": "\ue263",
"mail-open-filled": "\ue84d",
"email-filled": "\ue231",
"mail-open": "\ue84e",
"email": "\ue201",
"checkmarkempty": "\ue472",
"list": "\ue562",
"locked-filled": "\ue856",
"locked": "\ue506",
"map-filled": "\ue85c",
"map-pin": "\ue85e",
"map-pin-ellipse": "\ue864",
"map": "\ue364",
"minus-filled": "\ue440",
"mic-filled": "\ue332",
"minus": "\ue410",
"micoff": "\ue360",
"mic": "\ue302",
"clear": "\ue434",
"smallcircle": "\ue868",
"close": "\ue404",
"closeempty": "\ue460",
"paperclip": "\ue567",
"paperplane": "\ue503",
"paperplane-filled": "\ue86e",
"person-filled": "\ue131",
"contact-filled": "\ue130",
"person": "\ue101",
"contact": "\ue100",
"images-filled": "\ue87a",
"phone": "\ue200",
"images": "\ue87b",
"image": "\ue363",
"image-filled": "\ue877",
"location-filled": "\ue333",
"location": "\ue303",
"plus-filled": "\ue439",
"plus": "\ue409",
"plusempty": "\ue468",
"help-filled": "\ue535",
"help": "\ue505",
"navigate-filled": "\ue884",
"navigate": "\ue501",
"mic-slash-filled": "\ue892",
"search": "\ue466",
"settings": "\ue560",
"sound": "\ue590",
"sound-filled": "\ue8a1",
"spinner-cycle": "\ue465",
"download-filled": "\ue8a4",
"personadd-filled": "\ue132",
"videocam-filled": "\ue8af",
"personadd": "\ue102",
"upload": "\ue402",
"upload-filled": "\ue8b1",
"starhalf": "\ue463",
"star-filled": "\ue438",
"star": "\ue408",
"trash": "\ue401",
"phone-filled": "\ue230",
"compose": "\ue400",
"videocam": "\ue300",
"trash-filled": "\ue8dc",
"download": "\ue403",
"chatbubble-filled": "\ue232",
"chatbubble": "\ue202",
"cloud-download": "\ue8e4",
"cloud-upload-filled": "\ue8e5",
"cloud-upload": "\ue8e6",
"cloud-download-filled": "\ue8e9",
"headphones":"\ue8bf",
"shop":"\ue609"
}

View File

@@ -0,0 +1,81 @@
{
"id": "uni-icons",
"displayName": "Icons 图标",
"version": "1.1.4",
"description": "图标组件,用于展示移动端常见的图标,可自定义颜色、大小。",
"keywords": [
"icon",
"图标",
"uni-icons"
],
"repository": "https://github.com/dcloudio/uni-ui",
"engines": {
"HBuilderX": ""
},
"directories": {
"example": "../../temps/example_temps"
},
"dcloudext": {
"category": [
"前端组件",
"通用组件"
],
"sale": {
"regular": {
"price": "0.00"
},
"sourcecode": {
"price": "0.00"
}
},
"contact": {
"qq": ""
},
"declaration": {
"ads": "无",
"data": "无",
"permissions": "无"
},
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
},
"uni_modules": {
"dependencies": [],
"encrypt": [],
"platforms": {
"cloud": {
"tcb": "y",
"aliyun": "y"
},
"client": {
"App": {
"app-vue": "y",
"app-nvue": "y"
},
"H5-mobile": {
"Safari": "y",
"Android Browser": "y",
"微信浏览器(Android)": "y",
"QQ浏览器(Android)": "y"
},
"H5-pc": {
"Chrome": "y",
"IE": "y",
"Edge": "y",
"Firefox": "y",
"Safari": "y"
},
"小程序": {
"微信": "y",
"阿里": "y",
"百度": "y",
"字节跳动": "y",
"QQ": "y"
},
"快应用": {
"华为": "u",
"联盟": "u"
}
}
}
}
}

View File

@@ -0,0 +1,43 @@
## Icons 图标
> 代码块: `uIcons`
用于展示 icons 图标 。
### 安装方式
本组件符合[easycom](https://uniapp.dcloud.io/collocation/pages?id=easycom)规范,`HBuilderX 2.5.5`起,只需将本组件导入项目,在页面`template`中即可直接使用,无需在页面中`import`和注册`components`。
如需通过`npm`方式使用`uni-ui`组件,另见文档:[https://ext.dcloud.net.cn/plugin?id=55](https://ext.dcloud.net.cn/plugin?id=55)
### 基本用法
在 ``template`` 中使用组件
```html
<uni-icons type="contact" size="30"></uni-icons>
```
## 图标示例
点击复制图标类型
<icons-layouts></icons-layouts>
## API
### Icons Props
|属性名 |类型 |默认值 |说明 |
|:-: |:-: |:-: |:-: |
|size |Number |24 |图标大小 |
|type |String |- |图标图案,参考示例 |
|color |String |- |图标颜色 |
### Icons Events
|事件名 |说明 |返回值|
|:-: |:-: |:-: |
|@click|点击 Icon 触发事件|- |

View File

@@ -0,0 +1 @@
https://service.dcloud.net.cn/build/download/276f4020-9920-11eb-a30b-a1b2b6467ab3

View File

@@ -0,0 +1 @@
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

View File

@@ -0,0 +1,3 @@
andrCertfile=/Applications/HBuilderX-Alpha.app/Contents/HBuilderX/plugins/app-safe-pack/Test.keystore
andrCertAlias=test
andrCertPass=ep/Tdjka4Y7WYqDB6/S7dw==

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1,25 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<script>
var __UniViewStartTime__ = Date.now();
var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
CSS.supports('top: constant(a)'))
document.write(
'<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
(coverSupport ? ', viewport-fit=cover' : '') + '" />')
</script>
<title>View</title>
<link rel="stylesheet" href="view.css" />
</head>
<body>
<div id="app"></div>
<script src="__uniappes6.js"></script>
<script src="view.umd.min.js"></script>
<script src="app-view.js"></script>
</body>
</html>

View File

@@ -0,0 +1,8 @@
var isReady=false;var onReadyCallbacks=[];
var isServiceReady=false;var onServiceReadyCallbacks=[];
var __uniConfig = {"pages":["pages/index/index","pages/about/about","pages/Info/Info"],"window":{"navigationBarTextStyle":"black","navigationBarTitleText":"uni-app","navigationBarBackgroundColor":"#F8F8F8","backgroundColor":"#F8F8F8"},"tabBar":{"color":"#7A7E83","selectedColor":"#3cc51f","borderStyle":"black","backgroundColor":"#ffffff","list":[{"pagePath":"pages/index/index","text":"首页"},{"pagePath":"pages/about/about","text":"我的"}]},"nvueCompiler":"uni-app","nvueStyleCompiler":"uni-app","renderer":"auto","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":false},"appname":"hahah","compilerVersion":"3.1.8","entryPagePath":"pages/index/index","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000}};
var __uniRoutes = [{"path":"/pages/index/index","meta":{"isQuit":true,"isTabBar":true},"window":{"navigationBarTitleText":"首页","enablePullDownRefresh":true,"bounce":"none","titleNView":{"buttons":[{"type":"share","text":"分享","fontSize":"18"}],"backButton":{"background":"#00FF00"}}}},{"path":"/pages/about/about","meta":{"isQuit":true,"isTabBar":true},"window":{"navigationBarTitleText":"我的"}},{"path":"/pages/Info/Info","meta":{},"window":{"navigationBarTitleText":"详情"}}];
__uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
__uniConfig.onServiceReady=function(callback){if(__uniConfig.serviceReady){callback()}else{onServiceReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"serviceReady",{get:function(){return isServiceReady},set:function(val){isServiceReady=val;if(!isServiceReady){return}const callbacks=onServiceReadyCallbacks.slice(0);onServiceReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
service.register("uni-app-config",{create(a,b,c){if(!__uniConfig.viewport){var d=b.weex.config.env.scale,e=b.weex.config.env.deviceWidth,f=Math.ceil(e/d);Object.assign(__uniConfig,{viewport:f,defaultFontSize:Math.round(f/20)})}return{instance:{__uniConfig:__uniConfig,__uniRoutes:__uniRoutes,global:void 0,window:void 0,document:void 0,frames:void 0,self:void 0,location:void 0,navigator:void 0,localStorage:void 0,history:void 0,Caches:void 0,screen:void 0,alert:void 0,confirm:void 0,prompt:void 0,fetch:void 0,XMLHttpRequest:void 0,WebSocket:void 0,webkit:void 0,print:void 0}}}});

View File

@@ -0,0 +1 @@
(function(e){function r(r){for(var n,l,i=r[0],p=r[1],a=r[2],c=0,s=[];c<i.length;c++)l=i[c],Object.prototype.hasOwnProperty.call(o,l)&&o[l]&&s.push(o[l][0]),o[l]=0;for(n in p)Object.prototype.hasOwnProperty.call(p,n)&&(e[n]=p[n]);f&&f(r);while(s.length)s.shift()();return u.push.apply(u,a||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,i=1;i<t.length;i++){var p=t[i];0!==o[p]&&(n=!1)}n&&(u.splice(r--,1),e=l(l.s=t[0]))}return e}var n={},o={"app-config":0},u=[];function l(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,l),t.l=!0,t.exports}l.m=e,l.c=n,l.d=function(e,r,t){l.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},l.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.t=function(e,r){if(1&r&&(e=l(e)),8&r)return e;if(4&r&&"object"===typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(l.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)l.d(t,n,function(r){return e[r]}.bind(null,n));return t},l.n=function(e){var r=e&&e.__esModule?function(){return e["default"]}:function(){return e};return l.d(r,"a",r),r},l.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},l.p="/";var i=this["webpackJsonp"]=this["webpackJsonp"]||[],p=i.push.bind(i);i.push=r,i=i.slice();for(var a=0;a<i.length;a++)r(i[a]);var f=p;t()})([]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
{"@platforms":["android","iPhone","iPad"],"id":"__UNI__8E176DC","name":"hahah","version":{"name":"1.0.1","code":101},"description":"","launch_path":"__uniappview.html","developer":{"name":"","email":"","url":""},"permissions":{"VideoPlayer":{},"UniNView":{"description":"UniNView原生渲染"}},"plus":{"useragent":{"value":"uni-app","concatenate":true},"splashscreen":{"target":"id:1","autoclose":true,"waiting":true,"delay":0},"popGesture":"close","launchwebview":{"id":"1","kernel":"WKWebview"},"statusbar":{"immersed":"supportedDevice","style":"dark","background":"#F8F8F8"},"usingComponents":true,"nvueStyleCompiler":"uni-app","compilerVersion":3,"distribute":{"google":{"permissions":["<uses-feature android:name=\"android.hardware.camera\"/>","<uses-feature android:name=\"android.hardware.camera.autofocus\"/>","<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.CAMERA\"/>","<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>","<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>","<uses-permission android:name=\"android.permission.READ_LOGS\"/>","<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>","<uses-permission android:name=\"android.permission.VIBRATE\"/>","<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>","<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"],"packagename":"uni.UNI8E176DC","password":"","aliasname":"","keystore":"html5plus://test","custompermissions":true},"apple":{"devices":"universal"},"plugins":{"ad":{},"audio":{"mp3":{"description":"Android平台录音支持MP3格式文件"}}},"orientation":["portrait-primary"],"icons":{"ios":{"prerendered":"false","iphone":{"app@2x":"","app@3x":"","spotlight@2x":"","spotlight@3x":"","settings@2x":"","settings@3x":"","notification@2x":"","notification@3x":""},"appstore":"","ipad":{"app":"","app@2x":"","proapp@2x":"","spotlight":"","spotlight@2x":"","settings":"","settings@2x":"","notification":"","notification@2x":""}},"android":{"hdpi":"icon-android-hdpi.png","xhdpi":"icon-android-xhdpi.png","xxhdpi":"icon-android-xxhdpi.png","xxxhdpi":"icon-android-xxxhdpi.png"}},"splashscreen":{}},"allowsInlineMediaPlayback":true,"safearea":{"background":"#ffffff","bottom":{"offset":"auto"}},"uni-app":{"compilerVersion":"3.1.8","control":"uni-v3","nvueCompiler":"uni-app","renderer":"auto","nvue":{"flex-direction":"column"},"nvueLaunchMode":"normal"},"tabBar":{"color":"#7A7E83","selectedColor":"#3cc51f","borderStyle":"rgba(0,0,0,0.4)","backgroundColor":"#ffffff","list":[{"pagePath":"pages/index/index","text":"首页"},{"pagePath":"pages/about/about","text":"我的"}],"height":"50px","child":["lauchwebview"],"selected":0},"launch_path":"__uniappview.html","adid":"125309060407"}}

Some files were not shown because too many files have changed in this diff Show More