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 @@
a03e2cb2-2ccc-409d-bfd5-74c0f1aee91f

View File

@@ -0,0 +1,3 @@
> 1%
last 2 versions
not dead

23
项目合集/在包河/code/.gitignore vendored Normal file
View File

@@ -0,0 +1,23 @@
.DS_Store
node_modules
/dist
# local env files
.env.local
.env.*.local
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

View File

@@ -0,0 +1 @@
fc48cfdf-7cee-4b76-900c-b01787afdb16

View File

@@ -0,0 +1,19 @@
# ddd
## Project setup
```
npm install
```
### Compiles and hot-reloads for development
```
npm run serve
```
### Compiles and minifies for production
```
npm run build
```
### Customize configuration
See [Configuration Reference](https://cli.vuejs.org/config/).

View File

@@ -0,0 +1,5 @@
module.exports = {
presets: [
'@vue/cli-plugin-babel/preset'
]
}

11160
项目合集/在包河/code/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,32 @@
{
"name": "ddd",
"version": "0.1.0",
"private": true,
"scripts": {
"start": "vue-cli-service serve --mode development",
"build": "vue-cli-service build --mode production"
},
"dependencies": {
"axios": "^0.20.0",
"core-js": "^3.6.5",
"lib-flexible": "^0.3.2",
"vant": "^2.10.6",
"videojs-contrib-hls": "^5.15.0",
"vue": "^2.6.11",
"vue-router": "^3.2.0",
"vue-video-player": "^5.0.2",
"vuex": "^3.4.0"
},
"devDependencies": {
"@vue/cli-plugin-babel": "~4.5.0",
"@vue/cli-plugin-router": "~4.5.0",
"@vue/cli-plugin-vuex": "~4.5.0",
"@vue/cli-service": "~4.5.0",
"less": "^3.0.4",
"less-loader": "^5.0.0",
"postcss-pxtorem": "^5.1.1",
"pug-html-loader": "^1.1.5",
"pug-plain-loader": "^1.0.0",
"vue-template-compiler": "^2.6.11"
}
}

View File

@@ -0,0 +1 @@
0eed1dc9-db63-491c-abdb-072ec639d39d

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

View File

@@ -0,0 +1 @@
24508621-4523-4900-8371-3690c3f16f77

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: 652 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

View File

@@ -0,0 +1 @@
e33e42bc-5186-474b-992e-648eed79fd71

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: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 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

View File

@@ -0,0 +1,17 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title><%= htmlWebpackPlugin.options.title %></title>
</head>
<body>
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>

View File

@@ -0,0 +1 @@
754d2398-7876-472d-8320-79fc70185784

View File

@@ -0,0 +1,36 @@
<template lang="pug">
#app
router-view
</template>
<script>
export default {
data () {
return {
}
},
created(){
},
methods: {
},
components: {
}
}
</script>
<style lang="less">
@import "~@less/utils/normalize.less";
.content {
img {
width: 100%;
}
span {
font-size: 15px;
line-height: 25px;
}
}
</style>

View File

@@ -0,0 +1 @@
2937fc5e-db23-4505-90ae-79944589e27b

View File

@@ -0,0 +1 @@
c776e11e-516c-45c3-bb33-3426d2ddcedd

View File

@@ -0,0 +1 @@
6b2d0344-a769-41ce-9432-4b46834263d5

View File

@@ -0,0 +1,304 @@
@red50: #ffebee;
@red100: #ffcdd2;
@red200: #ef9a9a;
@red300: #e57373;
@red400: #ef5350;
@red500: #f44336;
@red600: #e53935;
@red700: #d32f2f;
@red800: #c62828;
@red900: #b71c1c;
@redA100: #ff8a80;
@redA200: #ff5252;
@redA400: #ff1744;
@redA700: #d50000;
@red: @red500;
@pink50: #fce4ec;
@pink100: #f8bbd0;
@pink200: #f48fb1;
@pink300: #f06292;
@pink400: #ec407a;
@pink500: #e91e63;
@pink600: #d81b60;
@pink700: #c2185b;
@pink800: #ad1457;
@pink900: #880e4f;
@pinkA100: #ff80ab;
@pinkA200: #ff4081;
@pinkA400: #f50057;
@pinkA700: #c51162;
@pink: @pink500;
@purple50: #f3e5f5;
@purple100: #e1bee7;
@purple200: #ce93d8;
@purple300: #ba68c8;
@purple400: #ab47bc;
@purple500: #9c27b0;
@purple600: #8e24aa;
@purple700: #7b1fa2;
@purple800: #6a1b9a;
@purple900: #4a148c;
@purpleA100: #ea80fc;
@purpleA200: #e040fb;
@purpleA400: #d500f9;
@purpleA700: #aa00ff;
@purple: @purple500;
@deepPurple50: #ede7f6;
@deepPurple100: #d1c4e9;
@deepPurple200: #b39ddb;
@deepPurple300: #9575cd;
@deepPurple400: #7e57c2;
@deepPurple500: #673ab7;
@deepPurple600: #5e35b1;
@deepPurple700: #512da8;
@deepPurple800: #4527a0;
@deepPurple900: #311b92;
@deepPurpleA100: #b388ff;
@deepPurpleA200: #7c4dff;
@deepPurpleA400: #651fff;
@deepPurpleA700: #6200ea;
@deepPurple: @deepPurple500;
@indigo50: #e8eaf6;
@indigo100: #c5cae9;
@indigo200: #9fa8da;
@indigo300: #7986cb;
@indigo400: #5c6bc0;
@indigo500: #3f51b5;
@indigo600: #3949ab;
@indigo700: #303f9f;
@indigo800: #283593;
@indigo900: #1a237e;
@indigoA100: #8c9eff;
@indigoA200: #536dfe;
@indigoA400: #3d5afe;
@indigoA700: #304ffe;
@indigo: @indigo500;
@blue50: #e3f2fd;
@blue100: #bbdefb;
@blue200: #90caf9;
@blue300: #64b5f6;
@blue400: #42a5f5;
@blue500: #2196f3;
@blue600: #1e88e5;
@blue700: #1976d2;
@blue800: #1565c0;
@blue900: #0d47a1;
@blueA100: #82b1ff;
@blueA200: #448aff;
@blueA400: #2979ff;
@blueA700: #2962ff;
@blue: @blue500;
@lightBlue50: #e1f5fe;
@lightBlue100: #b3e5fc;
@lightBlue200: #81d4fa;
@lightBlue300: #4fc3f7;
@lightBlue400: #29b6f6;
@lightBlue500: #03a9f4;
@lightBlue600: #039be5;
@lightBlue700: #0288d1;
@lightBlue800: #0277bd;
@lightBlue900: #01579b;
@lightBlueA100: #80d8ff;
@lightBlueA200: #40c4ff;
@lightBlueA400: #00b0ff;
@lightBlueA700: #0091ea;
@lightBlue: @lightBlue500;
@cyan50: #e0f7fa;
@cyan100: #b2ebf2;
@cyan200: #80deea;
@cyan300: #4dd0e1;
@cyan400: #26c6da;
@cyan500: #00bcd4;
@cyan600: #00acc1;
@cyan700: #0097a7;
@cyan800: #00838f;
@cyan900: #006064;
@cyanA100: #84ffff;
@cyanA200: #18ffff;
@cyanA400: #00e5ff;
@cyanA700: #00b8d4;
@cyan: @cyan500;
@teal50: #e0f2f1;
@teal100: #b2dfdb;
@teal200: #80cbc4;
@teal300: #4db6ac;
@teal400: #26a69a;
@teal500: #009688;
@teal600: #00897b;
@teal700: #00796b;
@teal800: #00695c;
@teal900: #004d40;
@tealA100: #a7ffeb;
@tealA200: #64ffda;
@tealA400: #1de9b6;
@tealA700: #00bfa5;
@teal: @teal500;
@green50: #e8f5e9;
@green100: #c8e6c9;
@green200: #a5d6a7;
@green300: #81c784;
@green400: #66bb6a;
@green500: #4caf50;
@green600: #43a047;
@green700: #388e3c;
@green800: #2e7d32;
@green900: #1b5e20;
@greenA100: #b9f6ca;
@greenA200: #69f0ae;
@greenA400: #00e676;
@greenA700: #00c853;
@green: @green500;
@lightGreen50: #f1f8e9;
@lightGreen100: #dcedc8;
@lightGreen200: #c5e1a5;
@lightGreen300: #aed581;
@lightGreen400: #9ccc65;
@lightGreen500: #8bc34a;
@lightGreen600: #7cb342;
@lightGreen700: #689f38;
@lightGreen800: #558b2f;
@lightGreen900: #33691e;
@lightGreenA100: #ccff90;
@lightGreenA200: #b2ff59;
@lightGreenA400: #76ff03;
@lightGreenA700: #64dd17;
@lightGreen: @lightGreen500;
@lime50: #f9fbe7;
@lime100: #f0f4c3;
@lime200: #e6ee9c;
@lime300: #dce775;
@lime400: #d4e157;
@lime500: #cddc39;
@lime600: #c0ca33;
@lime700: #afb42b;
@lime800: #9e9d24;
@lime900: #827717;
@limeA100: #f4ff81;
@limeA200: #eeff41;
@limeA400: #c6ff00;
@limeA700: #aeea00;
@lime: @lime500;
@yellow50: #fffde7;
@yellow100: #fff9c4;
@yellow200: #fff59d;
@yellow300: #fff176;
@yellow400: #ffee58;
@yellow500: #ffeb3b;
@yellow600: #fdd835;
@yellow700: #fbc02d;
@yellow800: #f9a825;
@yellow900: #f57f17;
@yellowA100: #ffff8d;
@yellowA200: #ffff00;
@yellowA400: #ffea00;
@yellowA700: #ffd600;
@yellow: @yellow500;
@amber50: #fff8e1;
@amber100: #ffecb3;
@amber200: #ffe082;
@amber300: #ffd54f;
@amber400: #ffca28;
@amber500: #ffc107;
@amber600: #ffb300;
@amber700: #ffa000;
@amber800: #ff8f00;
@amber900: #ff6f00;
@amberA100: #ffe57f;
@amberA200: #ffd740;
@amberA400: #ffc400;
@amberA700: #ffab00;
@amber: @amber500;
@orange50: #fff3e0;
@orange100: #ffe0b2;
@orange200: #ffcc80;
@orange300: #ffb74d;
@orange400: #ffa726;
@orange500: #ff9800;
@orange600: #fb8c00;
@orange700: #f57c00;
@orange800: #ef6c00;
@orange900: #e65100;
@orangeA100: #ffd180;
@orangeA200: #ffab40;
@orangeA400: #ff9100;
@orangeA700: #ff6d00;
@orange: @orange500;
@deepOrange50: #fbe9e7;
@deepOrange100: #ffccbc;
@deepOrange200: #ffab91;
@deepOrange300: #ff8a65;
@deepOrange400: #ff7043;
@deepOrange500: #ff5722;
@deepOrange600: #f4511e;
@deepOrange700: #e64a19;
@deepOrange800: #d84315;
@deepOrange900: #bf360c;
@deepOrangeA100: #ff9e80;
@deepOrangeA200: #ff6e40;
@deepOrangeA400: #ff3d00;
@deepOrangeA700: #dd2c00;
@deepOrange: @deepOrange500;
@brown50: #efebe9;
@brown100: #d7ccc8;
@brown200: #bcaaa4;
@brown300: #a1887f;
@brown400: #8d6e63;
@brown500: #795548;
@brown600: #6d4c41;
@brown700: #5d4037;
@brown800: #4e342e;
@brown900: #3e2723;
@brown: @brown500;
@blueGrey50: #eceff1;
@blueGrey100: #cfd8dc;
@blueGrey200: #b0bec5;
@blueGrey300: #90a4ae;
@blueGrey400: #78909c;
@blueGrey500: #607d8b;
@blueGrey600: #546e7a;
@blueGrey700: #455a64;
@blueGrey800: #37474f;
@blueGrey900: #263238;
@blueGrey: @blueGrey500;
@grey50: #fafafa;
@grey100: #f5f5f5;
@grey200: #eeeeee;
@grey300: #e0e0e0;
@grey400: #bdbdbd;
@grey500: #9e9e9e;
@grey600: #757575;
@grey700: #616161;
@grey800: #424242;
@grey900: #212121;
@grey: @grey500;
@black: #000000;
@white: #ffffff;
@transparent: rgba(0, 0, 0, 0);
@fullBlack: rgba(0, 0, 0, 1);
@darkBlack: rgba(0, 0, 0, 0.87);
@lightBlack: rgba(0, 0, 0, 0.54);
@minBlack: rgba(0, 0, 0, 0.26);
@faintBlack: rgba(0, 0, 0, 0.12);
@fullWhite: rgba(255, 255, 255, 1);
@darkWhite: rgba(255, 255, 255, 0.87);
@lightWhite: rgba(255, 255, 255, 0.54);

View File

@@ -0,0 +1,43 @@
@import "./index.less";
@fontFamily: Roboto, Lato, sans-serif;
// primary and accent
@primaryColor: @blue; // 主色
@secondaryColor: @pinkA200;
@successColor: @green;
@warningColor: @yellow600;
@errorColor: @red;
@infoColor: @blue;
@trackColor: @grey400;
// textColor or borderColor
@textColor: @darkBlack;
@secondaryTextColor: fade(@fullBlack, 54%);
@alternateTextColor: @white;
@borderColor: fade(@fullBlack, 12%);
@disabledColor: fade(@fullBlack, 38%);
// background
@backgroundColor: @grey50;
@dialogBackgroundColor: @white; // dialogs or cards
@chipBackgroundColor: @grey300;
// icon color
@activeIconColor: fade(@fullBlack, 54%);
@inActiveIconColor: fade(@fullBlack, 38%);
// spaceing
@iconSize: 24px;
@desktopGutter: 24px;
@desktopGutterMore: 32px;
@desktopGutterLess: 16px;
@desktopGutterMini: 8px;
@desktopKeylineIncrement: 64px;
@desktopDropDownMenuItemHeight: 32px;
@desktopDropDownMenuFontSize: 15px;
@desktopDrawerMenuItemHeight: 48px;
@desktopSubheaderHeight: 48px;
@desktopToolbarHeight: 56px;
// animate
@easeOutFunction: cubic-bezier(0.23, 1, 0.32, 1);
@easeInOutFunction: cubic-bezier(0.445, 0.05, 0.55, 0.95);

View File

@@ -0,0 +1 @@
021ecff6-0393-4205-a29d-052267bc2bb5

View File

@@ -0,0 +1,4 @@
@import "../color/var.less";
h2 {
color: @successColor;
}

View File

@@ -0,0 +1,43 @@
@import "../color/var.less";
@import "../utils/mixins";
.Radio {
.title {
font-size: 0.48rem;
color: #000000;
margin-top: 1.347rem;
margin-bottom: 0.84rem;
text-align: center;
}
.default_frontcover {
width: 7.467rem;
height: 7.467rem;
.imgCenter();
}
.process {
width: 7.467rem;
height: 1.2rem;
.imgCenter();
margin-top: 0.667rem;
}
.action {
display: flex;
justify-content: space-between;
margin: 0 auto;
width: 7.467rem;
align-items: center;
margin-top: 0.733rem;
.refresh {
width: 0.52rem;
height: 0.52rem;
}
.play {
width: 1.6rem;
height: 1.6rem;
}
.list {
width: 0.587rem;
height: 0.52rem;
}
}
}

View File

@@ -0,0 +1 @@
0f6e8cd5-5e76-4701-af9e-5549f9d201e7

View File

@@ -0,0 +1,315 @@
.imgCenter {
display: block;
margin: 0 auto;
}
.transition(@d) {
-webkit-transition-duration: @d;
transition-duration: @d;
}
.delay(@d) {
-webkit-transition-delay: @d;
transition-delay: @d;
}
.transform(@t) {
-webkit-transform: @t;
transform: @t;
}
.transform-origin(@to) {
-webkit-transform-origin: @to;
transform-origin: @to;
}
.translate3d(@x:0, @y:0, @z:0) {
-webkit-transform: translate3d(@x,@y,@z);
transform: translate3d(@x,@y,@z);
}
.animation (@a) {
-webkit-animation: @a;
animation: @a;
}
.scrollable() {
overflow: auto;
-webkit-overflow-scrolling: touch;
}
.flex-shrink(@fs) {
-webkit-box-flex: @fs;
-webkit-flex-shrink: @fs;
-ms-flex: 0 @fs auto;
flex-shrink: @fs;
}
.clearfix() {
&:after,
&:before {
content: " ";
display: table;
}
&:after {
clear: both;
}
}
.hairline(@position, @color) when (@position = top) {
&:before {
content: '';
position: absolute;
left: 0;
top: 0;
bottom: auto;
right: auto;
height: 1px;
width: 100%;
background-color: @color;
display: block;
z-index: 15;
// .transform-origin(50% 0%);
html.pixel-ratio-2 & {
.transform(scaleY(0.5));
}
html.pixel-ratio-3 & {
.transform(scaleY(0.33));
}
}
}
.hairline(@position, @color) when (@position = left) {
&:before {
content: '';
position: absolute;
left: 0;
top: 0;
bottom: auto;
right: auto;
width: 1px;
height: 100%;
background-color: @color;
display: block;
z-index: 15;
// .transform-origin(0% 50%);
html.pixel-ratio-2 & {
.transform(scaleX(0.5));
}
html.pixel-ratio-3 & {
.transform(scaleX(0.33));
}
}
}
.hairline(@position, @color) when (@position = bottom) {
&:after {
content: '';
position: absolute;
left: 0;
bottom: 0;
right: auto;
top: auto;
height: 1px;
width: 100%;
background-color: @color;
display: block;
z-index: 15;
html.pixel-ratio-2 & {
.transform(scaleY(0.5));
}
html.pixel-ratio-3 & {
.transform(scaleY(0.33));
}
}
}
.hairline(@position, @color) when (@position = right) {
&:after {
content: '';
position: absolute;
right: 0;
top: 0;
left: auto;
bottom: auto;
width: 1px;
height: 100%;
background-color: @color;
display: block;
z-index: 15;
// .transform-origin(100% 50%);
html.pixel-ratio-2 & {
.transform(scaleX(0.5));
}
html.pixel-ratio-3 & {
.transform(scaleX(0.33));
}
}
}
// For right and bottom
.hairline-remove(@position) when not (@position = left) and not (@position = top) {
&:after {
display: none;
}
}
// For left and top
.hairline-remove(@position) when not (@position = right) and not (@position = bottom) {
&:before {
display: none;
}
}
// For right and bottom
.hairline-color(@position, @color) when not (@position = left) and not (@position = top) {
&:after {
background-color: @color;
}
}
// For left and top
.hairline-color(@position, @color) when not (@position = right) and not (@position = bottom) {
&:before {
background-color: @color;
}
}
// Encoded SVG Background
.encoded-svg-background(@svg) {
@url: `encodeURIComponent(@{svg})`;
background-image: url("data:image/svg+xml;charset=utf-8,@{url}");
}
// Preserve3D
.preserve3d() {
-webkit-transform-style: preserve-3d;
-moz-transform-style: preserve-3d;
-ms-transform-style: preserve-3d;
transform-style: preserve-3d;
}
// Shadow
.depth(@level:1) {
& when (@level = 0) {
box-shadow: none;
}
& when (@level = 1) {
box-shadow: 0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12);
}
& when (@level = 2) {
box-shadow: 0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);
}
& when (@level = 3) {
box-shadow: 0 3px 3px -2px rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 1px 8px 0 rgba(0,0,0,.12);
}
& when (@level = 4) {
box-shadow: 0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);
}
& when (@level = 5) {
box-shadow: 0 3px 5px -1px rgba(0,0,0,.2),0 5px 8px 0 rgba(0,0,0,.14),0 1px 14px 0 rgba(0,0,0,.12);
}
& when (@level = 6) {
box-shadow: 0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12);
}
& when (@level = 7) {
box-shadow: 0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);
}
& when (@level = 8) {
box-shadow: 0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);
}
& when (@level = 9) {
box-shadow: 0 5px 6px -3px rgba(0,0,0,.2),0 9px 12px 1px rgba(0,0,0,.14),0 3px 16px 2px rgba(0,0,0,.12);
}
& when (@level = 10) {
box-shadow: 0 6px 6px -3px rgba(0,0,0,.2),0 10px 14px 1px rgba(0,0,0,.14),0 4px 18px 3px rgba(0,0,0,.12);
}
& when (@level = 11) {
box-shadow: 0 6px 7px -4px rgba(0,0,0,.2),0 11px 15px 1px rgba(0,0,0,.14),0 4px 20px 3px rgba(0,0,0,.12);
}
& when (@level = 12) {
box-shadow: 0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12);
}
& when (@level = 13) {
box-shadow: 0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12);
}
& when (@level = 14) {
box-shadow: 0 7px 9px -4px rgba(0,0,0,.2),0 14px 21px 2px rgba(0,0,0,.14),0 5px 26px 4px rgba(0,0,0,.12);
}
& when (@level = 15) {
box-shadow: 0 8px 9px -5px rgba(0,0,0,.2),0 15px 22px 2px rgba(0,0,0,.14),0 6px 28px 5px rgba(0,0,0,.12);
}
& when (@level = 16) {
box-shadow: 0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12);
}
& when (@level = 17) {
box-shadow: 0 8px 11px -5px rgba(0,0,0,.2),0 17px 26px 2px rgba(0,0,0,.14),0 6px 32px 5px rgba(0,0,0,.12);
}
& when (@level = 18) {
box-shadow: 0 9px 11px -5px rgba(0,0,0,.2),0 18px 28px 2px rgba(0,0,0,.14),0 7px 34px 6px rgba(0,0,0,.12);
}
& when (@level = 19) {
box-shadow: 0 9px 12px -6px rgba(0,0,0,.2),0 19px 29px 2px rgba(0,0,0,.14),0 7px 36px 6px rgba(0,0,0,.12);
}
& when (@level = 20) {
box-shadow: 0 10px 13px -6px rgba(0,0,0,.2),0 20px 31px 3px rgba(0,0,0,.14),0 8px 38px 7px rgba(0,0,0,.12);
}
& when (@level = 21) {
box-shadow: 0 10px 13px -6px rgba(0,0,0,.2),0 21px 33px 3px rgba(0,0,0,.14),0 8px 40px 7px rgba(0,0,0,.12);
}
& when (@level = 22) {
box-shadow: 0 10px 14px -6px rgba(0,0,0,.2),0 22px 35px 3px rgba(0,0,0,.14),0 8px 42px 7px rgba(0,0,0,.12);
}
& when (@level = 23) {
box-shadow: 0 11px 14px -7px rgba(0,0,0,.2),0 23px 36px 3px rgba(0,0,0,.14),0 9px 44px 8px rgba(0,0,0,.12);
}
& when (@level = 24) {
box-shadow: 0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12);
}
// & when (@level = 1) {
// box-shadow: rgba(0, 0, 0, 0.117647) 0px 1px 6px, rgba(0, 0, 0, 0.117647) 0px 1px 4px;
// }
// & when (@level = 2) {
// box-shadow: rgba(0, 0, 0, 0.156863) 0px 3px 10px, rgba(0, 0, 0, 0.227451) 0px 3px 10px;
// }
// & when (@level = 3) {
// box-shadow: rgba(0, 0, 0, 0.188235) 0px 10px 30px, rgba(0, 0, 0, 0.227451) 0px 6px 10px;
// }
// & when (@level = 4) {
// box-shadow: rgba(0, 0, 0, 0.247059) 0px 14px 45px, rgba(0, 0, 0, 0.219608) 0px 10px 18px;
// }
// & when (@level = 5) {
// box-shadow: rgba(0, 0, 0, 0.298039) 0px 19px 60px, rgba(0, 0, 0, 0.219608) 0px 15px 20px;
// }
}
// Highlighted Links
.active-highlight(@color:rgba(255, 255, 255, 0.15)){
&:before {
content: '';
width: 100%;
height: 100%;
position: absolute;
left: 0;
top: 0;
background-color: @color;
background-repeat: no-repeat;
background-position: center;
background-size: 100% 100%;
opacity: 0;
pointer-events: none;
.transition(600ms);
}
&.active-state:before,
html:not(.watch-active-state) &:active:before {
opacity: 1;
.transition(150ms);
}
}
.active-highlight-color(@color) {
&:before {
background-image: -webkit-radial-gradient(center, circle cover, @color 66%, rgba(red(@color),green(@color),blue(@color),0) 66%);
background-image: radial-gradient(circle at center, @color 66%, rgba(red(@color),green(@color),blue(@color),0) 66%);
}
}
// No Scrollbar
.no-scrollbar() {
&::-webkit-scrollbar {
display: none !important;
width: 0 !important;
height: 0 !important;
-webkit-appearance: none;
opacity: 0 !important;
}
}
.ellipsis() {
white-space:nowrap;
text-overflow:ellipsis;
overflow:hidden;
word-wrap: break-word;
}

View File

@@ -0,0 +1,428 @@
//.van-tabs__line {
// width: 0.36667rem !important;
//}
#vjs_video_3 {
width: 100%;
}
.vjs-time-control{
display:block !important;
}
.vjs-remaining-time{
display: none !important;
}
html {
font-family: sans-serif; /* 1 */
-ms-text-size-adjust: 100%; /* 2 */
-webkit-text-size-adjust: 100%; /* 2 */
}
/**
* Remove the margin in all browsers (opinionated).
*/
body,p,ul,li,h1,h2,h3,h4,h5,h6 {
margin: 0;
}
/* HTML5 display definitions
========================================================================== */
/**
* Add the correct display in IE 9-.
* 1. Add the correct display in Edge, IE, and Firefox.
* 2. Add the correct display in IE.
*/
article,
aside,
details, /* 1 */
figcaption,
figure,
footer,
header,
main, /* 2 */
menu,
nav,
section,
summary { /* 1 */
display: block;
}
/**
* Add the correct display in IE 9-.
*/
audio,
canvas,
progress,
video {
display: inline-block;
}
/**
* Add the correct display in iOS 4-7.
*/
audio:not([controls]) {
display: none;
height: 0;
}
/**
* Add the correct vertical alignment in Chrome, Firefox, and Opera.
*/
progress {
vertical-align: baseline;
}
/**
* Add the correct display in IE 10-.
* 1. Add the correct display in IE.
*/
template, /* 1 */
[hidden] {
display: none;
}
/* Links
========================================================================== */
/**
* 1. Remove the gray background on active links in IE 10.
* 2. Remove gaps in links underline in iOS 8+ and Safari 8+.
*/
a {
background-color: transparent; /* 1 */
-webkit-text-decoration-skip: objects; /* 2 */
}
/**
* Remove the outline on focused links when they are also active or hovered
* in all browsers (opinionated).
*/
a:active,
a:hover {
outline-width: 0;
}
/* Text-level semantics
========================================================================== */
/**
* 1. Remove the bottom border in Firefox 39-.
* 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
*/
abbr[title] {
border-bottom: none; /* 1 */
text-decoration: underline; /* 2 */
text-decoration: underline dotted; /* 2 */
}
/**
* Prevent the duplicate application of `bolder` by the next rule in Safari 6.
*/
b,
strong {
font-weight: inherit;
}
/**
* Add the correct font weight in Chrome, Edge, and Safari.
*/
b,
strong {
font-weight: bolder;
}
/**
* Add the correct font style in Android 4.3-.
*/
dfn {
font-style: italic;
}
/**
* Correct the font size and margin on `h1` elements within `section` and
* `article` contexts in Chrome, Firefox, and Safari.
*/
h1 {
font-size: 2em;
margin: 0.67em 0;
}
/**
* Add the correct background and color in IE 9-.
*/
mark {
background-color: #ff0;
color: #000;
}
/**
* Add the correct font size in all browsers.
*/
small {
font-size: 80%;
}
/**
* Prevent `sub` and `sup` elements from affecting the line height in
* all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
/* Embedded content
========================================================================== */
/**
* Remove the border on images inside links in IE 10-.
*/
img {
border-style: none;
}
/**
* Hide the overflow in IE.
*/
svg:not(:root) {
overflow: hidden;
}
/* Grouping content
========================================================================== */
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
code,
kbd,
pre,
samp {
font-family: monospace, monospace; /* 1 */
font-size: 1em; /* 2 */
}
/**
* Add the correct margin in IE 8.
*/
figure {
margin: 1em 40px;
}
/**
* 1. Add the correct box sizing in Firefox.
* 2. Show the overflow in Edge and IE.
*/
hr {
box-sizing: content-box; /* 1 */
height: 0; /* 1 */
overflow: visible; /* 2 */
}
/* Forms
========================================================================== */
/**
* 1. Change font properties to `inherit` in all browsers (opinionated).
* 2. Remove the margin in Firefox and Safari.
*/
button,
input,
select,
textarea {
font: inherit; /* 1 */
margin: 0; /* 2 */
}
/**
* Restore the font weight unset by the previous rule.
*/
optgroup {
font-weight: bold;
}
/**
* Show the overflow in IE.
* 1. Show the overflow in Edge.
*/
button,
input { /* 1 */
overflow: visible;
}
/**
* Remove the inheritance of text transform in Edge, Firefox, and IE.
* 1. Remove the inheritance of text transform in Firefox.
*/
button,
select { /* 1 */
text-transform: none;
}
/**
* 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
* controls in Android 4.
* 2. Correct the inability to style clickable types in iOS and Safari.
*/
button,
html [type="button"], /* 1 */
[type="reset"],
[type="submit"] {
-webkit-appearance: button; /* 2 */
}
/**
* Remove the inner border and padding in Firefox.
*/
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
border-style: none;
padding: 0;
}
/**
* Restore the focus styles unset by the previous rule.
*/
button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
outline: 1px dotted ButtonText;
}
/**
* Change the border, margin, and padding in all browsers (opinionated).
*/
fieldset {
border: 1px solid #c0c0c0;
margin: 0 2px;
padding: 0.35em 0.625em 0.75em;
}
/**
* 1. Correct the text wrapping in Edge and IE.
* 2. Correct the color inheritance from `fieldset` elements in IE.
* 3. Remove the padding so developers are not caught out when they zero out
* `fieldset` elements in all browsers.
*/
legend {
box-sizing: border-box; /* 1 */
color: inherit; /* 2 */
display: table; /* 1 */
max-width: 100%; /* 1 */
padding: 0; /* 3 */
white-space: normal; /* 1 */
}
/**
* Remove the default vertical scrollbar in IE.
*/
textarea {
overflow: auto;
}
/**
* 1. Add the correct box sizing in IE 10-.
* 2. Remove the padding in IE 10-.
*/
[type="checkbox"],
[type="radio"] {
box-sizing: border-box; /* 1 */
padding: 0; /* 2 */
}
/**
* Correct the cursor style of increment and decrement buttons in Chrome.
*/
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
/**
* 1. Correct the odd appearance in Chrome and Safari.
* 2. Correct the outline style in Safari.
*/
[type="search"] {
-webkit-appearance: textfield; /* 1 */
outline-offset: -2px; /* 2 */
}
/**
* Remove the inner padding and cancel buttons in Chrome and Safari on OS X.
*/
[type="search"]::-webkit-search-cancel-button,
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
* Correct the text style of placeholders in Chrome, Edge, and Safari.
*/
::-webkit-input-placeholder {
color: inherit;
opacity: 0.54;
}
/**
* 1. Correct the inability to style clickable types in iOS and Safari.
* 2. Change font properties to `inherit` in Safari.
*/
::-webkit-file-upload-button {
-webkit-appearance: button; /* 1 */
font: inherit; /* 2 */
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

@@ -0,0 +1 @@
380570b7-f8b7-4086-812b-19b6c851995e

View File

@@ -0,0 +1,113 @@
<template lang="pug">
.Comment
ItemHeader
.list
div(v-if="commentList.length != 0")
.item(v-for="(item,index) in commentList" :key="index")
img.auth(:src="item.logo")
.right_info
.info_top
.top_left
p {{item.auth}}
span {{item.time}}
.top_right
img.zan(src="/img/icon/give_thumbs-up.png")
span {{ item.zan }}
.info_text {{item.content}}
.nodata(v-else)
img(src="/img/hm_bg_img_no.png")
p 快来发表你的评论吧
</template>
<script>
import ItemHeader from "./ItemHeader";
export default {
name: "Comment",
props: {
commentList: {
type: Array,
default: []
}
},
provide: {
title: '全部评论',
},
components: {
ItemHeader
}
}
</script>
<style scoped lang="less">
.Comment {
padding: 0.48rem 0.32rem;
box-sizing: border-box;
.list {
.item {
display: flex;
justify-content: space-between;
margin-bottom: 0.933rem;
.auth {
width: 0.933rem;
height: 0.933rem;
margin-right: 0.267rem;
}
.right_info {
width: 89%;
.info_top {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 0.307rem;
.top_left {
p {
font-size: 0.373rem;
line-height: 0.56rem;
color: #333333;
}
span {
font-size: 0.267rem;
color: #999999;
}
}
.top_right {
display: flex;
align-items: center;
img {
width: 0.347rem;
height: 0.36rem;
margin-right: 0.133rem;
vertical-align: bottom;
}
span {
font-size: 0.32rem;
color: #999999;
}
}
}
.info_text {
font-size: 0.373rem;
color: #333333;
}
}
}
.nodata {
width: 5.56rem;
margin: 0 auto;
margin-top: 0.6rem;
text-align: center;
img {
width: 5.56rem;
height: 4.653rem;
}
p {
margin-top: 0.68rem;
font-size: 0.373rem;
color: #999999;
}
}
}
}
</style>

View File

@@ -0,0 +1,70 @@
<template lang="pug">
.hello
h1 {{ msg }}
p
| For a guide and recipes on how to configure / customize this project,
br
| check out the
a(href='https://cli.vuejs.org', target='_blank', rel='noopener') vue-cli documentation
| .
h3 Installed CLI Plugins
ul
li
a(href='https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel', target='_blank', rel='noopener') babel
li
a(href='https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-router', target='_blank', rel='noopener') router
li
a(href='https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-vuex', target='_blank', rel='noopener') vuex
h3 Essential Links
ul
li
a(href='https://vuejs.org', target='_blank', rel='noopener') Core Docs
li
a(href='https://forum.vuejs.org', target='_blank', rel='noopener') Forum
li
a(href='https://chat.vuejs.org', target='_blank', rel='noopener') Community Chat
li
a(href='https://twitter.com/vuejs', target='_blank', rel='noopener') Twitter
li
a(href='https://news.vuejs.org', target='_blank', rel='noopener') News
h3 Ecosystem
ul
li
a(href='https://router.vuejs.org', target='_blank', rel='noopener') vue-router
li
a(href='https://vuex.vuejs.org', target='_blank', rel='noopener') vuex
li
a(href='https://github.com/vuejs/vue-devtools#vue-devtools', target='_blank', rel='noopener') vue-devtools
li
a(href='https://vue-loader.vuejs.org', target='_blank', rel='noopener') vue-loader
li
a(href='https://github.com/vuejs/awesome-vue', target='_blank', rel='noopener') awesome-vue
</template>
<script>
export default {
name: 'HelloWorld',
props: {
msg: String
}
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped lang="less">
h3 {
margin: 40px 0 0;
}
ul {
list-style-type: none;
padding: 0;
}
li {
display: inline-block;
margin: 0 10px;
}
a {
color: #42b983;
}
</style>

View File

@@ -0,0 +1,28 @@
<template lang="pug">
.itemHeader
.title {{title}}
</template>
<script>
export default {
name: "ItemHeader",
inject: ['title']
// props: {
// title: {
// type: String,
// default: ''
// }
// }
}
</script>
<style scoped lang="less">
.itemHeader {
.title {
height: 1.347rem;
line-height: 1.347rem;
font-size: 0.427rem;
color: #333333;
}
}
</style>

View File

@@ -0,0 +1,49 @@
<template lang="pug">
.swiper
van-swipe(@change='onChange')
van-swipe-item(v-for="(v,i) in swiper" :key="i")
img(:src="v")
template(#indicator='')
.custom {{ current + 1 }} / {{ swiper.length }}
</template>
<script>
export default {
name: "Swiper",
props: {
swiper: {
type: Array,
default: []
}
},
data () {
return {
current: 0,
}
},
methods: {
onChange(index) {
this.current = index;
},
}
}
</script>
<style scoped lang="less">
.swiper {
img {
width: 100%;
}
}
.custom {
position: absolute;
right: 0.533rem;
bottom: 0.627rem;
padding: 0.147rem 0.373rem;
font-size: 0.373rem;
background-color: rgb(0 0 0 / 0.6);
border-radius: 0.32rem;
color: #fff;
}
</style>

View File

@@ -0,0 +1,58 @@
<template lang="pug">
.tvList
.listItem(v-for="(item,index) in listData" :key="index" @click="itemClick(index)")
span(:class="index==active ? 'red' : '' ") {{ item.title }}
img(src="/img/act-list.gif" v-if="index==active")
</template>
<script>
export default {
name: "TvList",
props: {
listData: {
type: Array,
default: []
},
isActive: {
default: null
}
},
data() {
return {
active: this.isActive
}
},
async created() {
},
methods: {
itemClick(i) {
this.active = i;
this.$emit("change",i)
},
},
}
</script>
<style scoped lang="less">
.listItem {
display: flex;
justify-content: space-between;
padding: 0.507rem 0.813rem;
align-items: center;
border-top: 1px solid #e5e5e5;
.red {
color: red;
}
span {
font-size: 0.427rem;
}
img {
width: 0.36rem;
height: 0.4rem;
}
&:last-child {
border-bottom: 1px solid #e5e5e5;
}
}
</style>

View File

@@ -0,0 +1,62 @@
<template lang="pug">
.video
h2 视频播放
video-player.video-player-box(ref='videoPlayer'
:options='playerOptions',
:playsinline='true')
</template>
<script>
import 'videojs-contrib-hls';
export default {
name: "Live",
props: {
videoUrl: {
type: String
}
},
data() {
return {
playerOptions: {
playbackRates: [0.5, 1.0, 1.5, 2.0],
autoplay: false,
muted: false,
loop: false,
preload: 'none',
language: 'zh-CN',
aspectRatio: '16:9',
fluid: false,
sources: [{
type: 'application/x-mpegURL',
src: this.videoUrl,
}],
poster: '',
notSupportedMessage: '此视频暂无法播放,请稍后再试',
controlBar: {
// 当前时间和总时间的 分隔符
timeDivider: true,
//当前播放时间
currentTimeDisplay: true,
// 总时间
durationDisplay: true,
/**
* 区分 currentTimeDisplay,timeDivider,durationDisplay
* remainingTimeDisplay显示默认样式只显示当前播放时间一般
* 为false
*/
remainingTimeDisplay: false,
fullscreenToggle: true
}
}
}
},
created() {
console.log(this.videoUrl)
console.log(this.playerOptions.sources[0])
}
}
</script>
<style scoped>
</style>

View File

@@ -0,0 +1,130 @@
<template lang="pug">
.recommend
ItemHeader
//- 文章资讯页面的相关布局
.content_theme1(v-if=" theme == 'theme1'")
.item(v-for="(item,index) in list" :key="index" @click="enterInfo(item.id)")
//- router-link(:to={ path: "realTimeInfo", query: { id: item.id } })
.item_text
p {{ item.title}}
span {{ item.create_time}}
img.item_img(:src="item.icon")
// 视频页面的相关推荐布局
.content_theme2(v-else)
.item
.item_f(v-for="(item,index) in list" :key="index")
.f_time
img(:src="item.img")
.zz
span {{ item.videoTime}}
p(:class="index == 0 ? 'active': '' ") {{ item.title.substring(0,17)+'...'}}
</template>
<script>
import ItemHeader from "./ItemHeader";
export default {
props: {
theme: {
type: String,
default: 'theme1'
},
list: {
type: Array,
default: []
}
},
methods: {
enterInfo(id) {
this.$router.push({
path: '/realTimeInfo',
query: {
id: id
}
})
}
},
components: {
ItemHeader
}
}
</script>
<style scoped lang="less">
.recommend {
padding: 0.48rem 0.32rem;
box-sizing: border-box;
.content_theme1 {
.item {
display: flex;
justify-content: space-between;
margin-top: 0.2rem;
.item_text{
p {
font-size: 0.427rem;
line-height: 0.667rem;
color: #333333;
margin-bottom: 0.23rem;
}
span {
font-size: 0.32rem;
line-height: 0.747rem;
color: #999999;
}
}
.item_img{
width: 3.013rem;
height: 2.267rem;
border-radius: 0.053rem;
}
}
}
.content_theme2 {
.item {
display: flex;
overflow-x: auto;
.item_f {
.f_time {
width: 3.653rem;
height: 2.08rem;
border-radius: 0.053rem;
position: relative;
img {
width: 100%;
height: 100%;
}
.zz {
position: absolute;
width: 94%;
height: 93%;
z-index: 2;
background: #0000005c;
left: 4px;
top: 3px;
}
span {
position: absolute;
right: 0.187rem;
bottom: 0.173rem;
font-size: 0.293rem;
color: #ffffff;
z-index: 3;
}
}
p {
width: 3.653rem;
font-size: 0.373rem;
line-height: 0.627rem;
color: #333333;
}
.active {
color: #d0302c !important;
}
}
}
}
}
</style>

View File

@@ -0,0 +1 @@
99ec67ad-0975-4a5d-973d-41e142e3143f

View File

@@ -0,0 +1,27 @@
import http from "../service";
import Vant from 'vant';
import VueVideoPlayer from 'vue-video-player'
import 'vant/lib/index.css';
import 'video.js/dist/video-js.css'
export default {
AjaxConfig: {
// 开发阶段的请求基地址
DevUrl: 'https://zbhapi.ahtv.cn/h5/',
// DevUrl: 'http://115.159.153.142:9010',
// 正式阶段的请求基地址
ProdUrl: 'http://115.159.153.142:9020/',
UrlList: {
Radio: 'radio',
TvList: 'channelList',
newsDetail: 'newsDetail'
}
},
NotVuePlugin: [
{ n: '$http', v: http }
],
VuePlugin: [
Vant,
VueVideoPlayer
]
}

View File

@@ -0,0 +1 @@
11e54b10-a547-475d-bca3-be9d2373f498

View File

@@ -0,0 +1,87 @@
import axios from "axios";
import Utils from "../utils";
import { Toast, Dialog } from 'vant';
class Axios {
constructor() {
this.requestInterceptors()
this.responseInterceptors()
}
/**
* GET请求
* @param {*} object params
* {
* url: '',
* data: {}
* }
*/
async get(params) {
this.setBaseUrl()
return await axios.get(params.url, {
params: params.data
})
}
/**
* post 请求
*/
async post(params) {
this.setBaseUrl()
return await axios.post(params.url, params.data)
}
setBaseUrl () {
axios.defaults.baseURL = Utils.checkUrl();
}
/**
* 请求拦截器
*/
requestInterceptors() {
axios.interceptors.request.use(function (config) {
// 在发送请求之前做些什么
Toast.loading({
duration: 0,
forbidClick: true,
message: '数据加载中....',
});
return config;
}, function (error) {
// 对请求错误做些什么
return Promise.reject(error);
});
}
/**
* 响应拦截器
* 对响应数据做点什么
*/
responseInterceptors() {
axios.interceptors.response.use(function (response) {
Toast.clear();
switch (response.data.resultCode) {
case '500':
Dialog.alert({
title: '出现错误',
message: `${response.data.resultCode}${response.data.message}`,
});
// 出现错误,不希望返回数据给前端页面,那么这时候将程序在这里断掉
throw new Error(`${response.data.resultCode}${response.data.message}`)
break;
case '000':
return response.data.data;
break
}
}, function (error) {
// 对响应错误做点什么
return Promise.reject(error);
});
}
}
export default new Axios();

View File

@@ -0,0 +1,17 @@
import 'lib-flexible/flexible'
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import Config from './config'
Vue.config.productionTip = false
Config.VuePlugin.forEach(v => Vue.use(v))
Config.NotVuePlugin.forEach(v => Vue.prototype[v.n] = v.v)
new Vue({
router,
store,
render: h => h(App)
}).$mount('#app')

View File

@@ -0,0 +1 @@
c40b1519-8a8d-4cd2-960f-bacc7175e44f

View File

@@ -0,0 +1,43 @@
import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)
const routes = [
{
path: '/',
name: 'Home',
component: () => import(/* webpackChunkName: "about" */ '../views/Home.vue')
},
{
path: '/Radio',
name: 'Radio',
component: () => import(/* webpackChunkName: "about" */ '../views/Radio.vue')
},
{
path: '/Tv',
name: 'Tv',
component: () => import(/* webpackChunkName: "about" */ '../views/Tv.vue')
},
{
path: '/TvInfo',
name: 'TvInfo',
component: () => import(/* webpackChunkName: "about" */ '../views/TvInfo.vue')
},
{
path: '/Live',
name: 'Live',
component: () => import(/* webpackChunkName: "about" */ '../views/Live.vue')
},
{
path: '/realTimeInfo',
name: 'realTimeInfo',
component: () => import(/* webpackChunkName: "about" */ '../views/realTimeInfo.vue')
}
]
const router = new VueRouter({
routes
})
export default router

View File

@@ -0,0 +1 @@
b8380c06-884d-4659-89b3-c57cec9ac2c6

View File

@@ -0,0 +1,13 @@
import Config from "../config";
import Axios from "../http/axios";
class DetailService {
async newsDetail(data) {
return await Axios.get({
url: Config.AjaxConfig.UrlList.newsDetail,
data: data
})
}
}
export default new DetailService();

View File

@@ -0,0 +1,13 @@
import Config from "../config";
import Axios from "../http/axios";
class RadioService {
async Radio(data) {
return await Axios.get({
url: Config.AjaxConfig.UrlList.Radio,
data: data
})
}
}
export default new RadioService();

View File

@@ -0,0 +1,13 @@
import Config from "../config";
import Axios from "../http/axios";
class TvService {
async TvList(data) {
return await Axios.get({
url: Config.AjaxConfig.UrlList.TvList,
data: data
})
}
}
export default new TvService();

View File

@@ -0,0 +1,9 @@
import RadioService from "./RadioService"
import TvService from "./TvService"
import DetailService from "./DetailService"
export default {
RadioService: RadioService,
TvService: TvService,
DetailService: DetailService,
}

View File

@@ -0,0 +1 @@
6832fdf2-ce4f-4339-b59a-f57e671d3c2b

View File

@@ -0,0 +1,15 @@
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
state: {
},
mutations: {
},
actions: {
},
modules: {
}
})

View File

@@ -0,0 +1 @@
f2abcfc6-2d17-4933-963f-d4fc8e93aa38

View File

@@ -0,0 +1,14 @@
import Config from "../config"
class Utils {
checkUrl() {
// 开发阶段
if (process.env.NODE_ENV == "development") {
return Config.AjaxConfig.DevUrl
// 正式阶段
} else {
return Config.AjaxConfig.ProdUrl
}
}
}
export default new Utils;

View File

@@ -0,0 +1 @@
161eef9f-1843-4eac-99bc-24fac9af9574

View File

@@ -0,0 +1,50 @@
<template lang="pug">
.home
van-tabs(v-model='active',
line-width="20"
animated
@change="changeTabs"
swipeable)
van-tab(title="包河Radio")
Radio
van-tab(title="包河TV")
Tv
van-tab(title="融媒直播")
Live
</template>
<script>
import Radio from "./Radio";
import Tv from "./Tv";
import Live from "./Live";
export default {
data () {
return {
active: 0
}
},
created() {
this.active = parseInt(this.$route.query.active)
},
methods: {
changeTabs(index) {
this.$router.push({
path: '/',
query: {
active: this.active
}
})
}
},
components: {
Radio,
Tv,
Live
}
}
</script>
<style lang="less">
</style>

View File

@@ -0,0 +1,84 @@
<template lang="pug">
.Live
Recommend(theme="theme1" :list="RecommendList")
Comment(:comment-list="CommentList")
Swiper(:swiper="SwiperList")
</template>
<script>
import Recommend from "../components/recommend";
import Comment from "../components/Comment";
import Swiper from "../components/Swiper";
export default {
name: "Live",
components: {
Recommend,
Comment,
Swiper
},
provide: {
title: '相关推荐',
},
data() {
return {
// title: '相关推荐',
RecommendList: [
{
title: '合肥首个铁路主题公园来了!规模等于两个逍遥津!目测会火,位置在这' ,
img: '/img/recommend_right.png',
date: '2019-10-6',
videoTime: '03:07'
},
{
title: '合肥首个铁路主题公园来了!规模等于两个逍遥津!目测会火,位置在这' ,
img: '/img/recommend_right.png',
date: '2019-10-6',
videoTime: '03:07'
},
{
title: '合肥首个铁路主题公园来了!规模等于两个逍遥津!目测会火,位置在这' ,
img: '/img/recommend_right.png',
date: '2019-10-6',
videoTime: '03:07'
},
{
title: '合肥首个铁路主题公园来了!规模等于两个逍遥津!目测会火,位置在这' ,
img: '/img/recommend_right.png',
date: '2019-10-6',
videoTime: '03:07'
},
{
title: '合肥首个铁路主题公园来了!规模等于两个逍遥津!目测会火,位置在这' ,
img: '/img/recommend_right.png',
date: '2019-10-6',
videoTime: '03:07'
},
],
CommentList: [
{
logo: '/img/radio_up.png',
auth: '呆小瓜',
time: '3秒前',
zan: 15,
content: "这里是评论的文字这里是评论的文字这里是评论的文字这里是评论的文字这里是评论的文字这里是评论的文字这里是评论的文字"
},
{
logo: '/img/radio_up.png',
auth: '哈哈哈',
time: '10秒前',
zan: 999,
content: "错误的分为非威风无法威锋网成为"
}
],
SwiperList: [
'/img/banner.png','/img/banner.png','/img/banner.png','/img/banner.png','/img/banner.png'
]
}
}
}
</script>
<style scoped>
</style>

View File

@@ -0,0 +1,79 @@
<template lang="pug">
.Radio
.title 包河之声
img(class="default_frontcover" :src="list.default_frontcover")
img(class="process" :src="GifIcon")
.action
img.refresh(src="/img/live_broadcast_icon.png")
img.play(:src="AudioIcon" @click="PlayAudio")
img.list(src="/img/program_list_icon.png")
video-player.video-player-box(ref='videoPlayer', v-show="false"
:options='playerOptions',
:playsinline='true')
</template>
<script>
import 'videojs-contrib-hls';
export default {
name: "Radio",
data() {
return {
list: {},
AudioIcon: "/img/radio_up.png",
GifIcon: "/img/sound_spectrum.png",
playerOptions: {
height: '360',
autoplay: false,
muted: false,
language: 'en',
playbackRates: [0.7, 1.0, 1.5, 2.0],
sources: [{
type: 'application/x-mpegURL',
src: "http://vjs.zencdn.net/v/oceans.mp4",
}],
poster: "https://surmon-china.github.io/vue-quill-editor/static/images/surmon-1.jpg",
notSupportedMessage: '此视频暂无法播放,请稍后再试'
}
}
},
created() {
this.GetRadio()
},
mounted() {
},
methods: {
async GetRadio() {
this.list = await this.$http.RadioService.Radio({});
console.log(this.list)
this.playerOptions.sources[0].src = "http://video.geekhelp.cn/vue34"
// this.playerOptions.sources[0].src = this.list.play_url
},
/**
* 点击按钮播放
* @constructor
*/
PlayAudio() {
// 播放按钮
if (this.AudioIcon.includes("radio_up")) {
this.AudioIcon = "/img/radio_stop.png"
this.GifIcon = "/img/sound_spectrum.gif"
this.$refs.videoPlayer.player.play()
} else {
this.AudioIcon = "/img/radio_up.png"
this.GifIcon = "/img/sound_spectrum.png"
this.$refs.videoPlayer.player.pause()
}
}
}
}
</script>
<style scoped lang="less">
@import "~@less/page/Radio.less";
</style>

View File

@@ -0,0 +1,45 @@
<template lang="pug">
.TV
TvList(:list-data="list" :is-show="false" @change="EnterInfo")
</template>
<script>
import TvList from "@/components/TvList"
export default {
name: "Tv",
components: {
TvList
},
data() {
return {
list: [],
params: {
page: 1,
count: 15
}
}
},
async created() {
await this.GetTvList()
},
methods: {
EnterInfo(index) {
this.$router.push({
path: '/TvInfo',
query: {
id: index
}
})
},
async GetTvList() {
let res = await this.$http.TvService.TvList(this.params);
this.list = res;
console.log(res)
}
}
}
</script>
<style scoped>
</style>

View File

@@ -0,0 +1,57 @@
<template lang="pug">
.TvInfo
Video(:video-url="VideoUrl" v-if="VideoUrl.length != 0")
TvList(:list-data="list" :is-active="index" @change="EnterInfo")
</template>
<script>
import TvList from "@/components/TvList";
import Video from "@/components/Video";
export default {
name: "TvInfo",
data() {
return {
list: [],
params: {
page: 1,
count: 15
},
VideoUrl: '',
index: this.$route.query.id
}
},
beforeRouteUpdate(to, from, next) {
this.GetTvList()
next()
},
async created() {
await this.GetTvList()
},
methods: {
EnterInfo(index) {
this.index = index;
this.$router.push({
path: '/TvInfo',
query: {
id: index
}
})
},
async GetTvList() {
let res = await this.$http.TvService.TvList(this.params);
// this.VideoUrl = res[this.index].play_url;
this.VideoUrl = "http://video.geekhelp.cn/vue34";
this.list = res;
}
},
components: {
TvList,
Video
},
}
</script>
<style scoped>
</style>

View File

@@ -0,0 +1,67 @@
<template lang="pug">
.realTimeInfo(v-if="Object.keys(list).length != 0")
.infoConten
p.title {{list.detail.title}}
p.text {{list.detail.publish_time}} 浏览量{{list.detail.viewer_count}}
.content(v-html="list.detail.content")
Recommend(theme="theme1" :list="list.recommend" )
Comment(:comment-list="list.comment")
</template>
<script>
import Comment from "@com/Comment";
import Recommend from "@com/recommend";
import Swiper from "@com/Swiper";
export default {
name: "realTimeInfo",
data () {
return {
list: {}
}
},
provide: {
title: '相关推荐',
},
created() {
this.getData(this.$route.query.id)
},
methods: {
async getData(id) {
this.list = await this.$http.DetailService.newsDetail({ id: id });
}
},
beforeRouteUpdate (to, from, next) {
this.getData(to.query.id)
next()
},
components: {
Recommend,
Comment,
Swiper
},
}
</script>
<style scoped lang="less">
.infoConten {
padding-left: 0.307rem;
padding-right: 0.307rem;
.title {
font-size: 0.533rem;
line-height: 0.72rem;
letter-spacing: 0.013rem;
color: #333333;
margin-bottom: 0.507rem;
}
.text {
font-family: PingFang-SC-Medium;
font-size: 0.32rem;
color: #999999;
margin-bottom: 0.907rem;
}
}
</style>

View File

@@ -0,0 +1,37 @@
const path = require('path');
module.exports = {
publicPath: './',
css: {
loaderOptions: {
postcss: {
plugins: [
require('postcss-pxtorem')({
rootValue: 37.5, // 换算的基数
selectorBlackList: ['weui', 'mu'], // 忽略转换正则匹配项
propList: ['*'],
}),
]
}
}
},
chainWebpack: (config) => {
// 配置pug的
config.module.rule('pug')
.test(/\.pug$/)
.use('pug-html-loader')
.loader('pug-html-loader')
.end();
// 路径别名
config.resolve.alias
.set('@',resolve('src'))
.set('@com',resolve('src/components'))
.set('@less',resolve('src/assets/less'))
}
}
function resolve(dir) {
return path.join(__dirname, dir);
}

View File

@@ -0,0 +1,69 @@
1
模块:
【韩想】 1首页
radio
tv
融媒直播
【朱静】2新闻资讯页面 (app没有连接通过地址访问)
未展开
展开
【赵俊凯】3视频播放页面 (app没有连接通过地址访问)
简洁展开
简洁未展开
【朱静】4视频直播页面 (通过 融媒直播 点击进入)
视频未开始直播
视频已开始直播
【韩想】 5帖子页面 (app没有连接通过地址访问)
【赵俊凯】6看电视 (通过 tv 点击进入)
看电视详情的频道
看电视详情的有评论
看电视详情的无评论
组件封装
【完成】【朱静】 1相关推荐组件 vue
【完成】【朱静】 2全部评论组件
【赵俊凯】3打开app查看全部评论
【韩想】 4顶部在包河头部
【完成】【刘兵】5视频播放组件
【赵俊凯】6轮播图封装成组件
【完成】【韩想】 7TV列表也是组件
html
query: { id: 1 }
<router-link :to="{ path: '/rrr' , params: { page: 1 } }"></router-link>
<a href="/rrr?id=1"></a>
<a href="/rrr/1"></a>
js
this.$router.push({
name: '',
paths: '',
query: { // rrr?id=1
id: 1
},
params: { // rrr/1
id: 1
}
})
query: http://www.a.com?id=1&page=2&name=222
params: http://www.a.com/1/2/222
query: this.$route.query.xxx
params: this.$route.params.xxx 需要后端配置路由重写进行支持

View File

@@ -0,0 +1,29 @@
## 1李跃文蓝湖账户密码
蓝湖登录地址:[https://lanhuapp.com/web/#/user/login](https://lanhuapp.com/web/#/user/login)
用户名1179374943@qq.com
密码lyw117937
## 2SVN 账户
项目地址:[https://htsvn.ahtv.cn/svn/hmbh_H5](https://htsvn.ahtv.cn/svn/hmbh_H5)
账户liub01
密码WCSnQmj9na7CfNki
## 3接口文档
地址:[http://115.159.153.142:89/web/#/42?page_id=1096](http://115.159.153.142:89/web/#/42?page_id=1096)
密码zbh2019
分享接口
http://htwx.ahtv.cn/htwx/share/index
方法POST
参数url:base64加密的分享页地址
返回值:
{ "appId": "wxd78ad1c7e16e3eff", "nonceStr": "nIasJhlVgFWqAIya", "timestamp": 1575859870, "url": "http://htwx.ahtv.cn/wx2/dist/app.html#/video/?video_id=28048", "signature": "af34059cdc49bade7c5e08f3a98d7c84e39974ba", "rawString": "jsapi_ticket=HoagFKDcsGMVCIY2vOjf9mB8IL3KSXoUfAAOBvIO0W2W1JUFUaiPMLrNeGBkxMq2I5kHvMn6pBBJaA5TKhiSbA&noncestr=nIasJhlVgFWqAIya&timestamp=1575859870&url=http://htwx.ahtv.cn/wx2/dist/app.html#/video/?video_id=28048"}