Browse Source

准备本地数据

pull/19/head
zyronon 4 years ago
parent
commit
e66a84e980
  1. 5854
      src/assets/data/resource.js
  2. 2
      src/main.js
  3. 92
      src/mock/index.js
  4. 6
      src/pages/me/Me.less
  5. 59
      src/pages/me/Me.vue
  6. 24
      src/pages/me/Uploader.less
  7. 30
      src/pages/me/Uploader.vue
  8. 32
      src/store/index.js

5854
src/assets/data/resource.js

File diff suppressed because it is too large Load Diff

2
src/main.js

@ -2,7 +2,7 @@ import * as Vue from 'vue'
import App from './App.vue' import App from './App.vue'
import mitt from 'mitt' import mitt from 'mitt'
import './assets/scss/index.less' import './assets/scss/index.less'
// import './mock'// 导入 mock 数据处理 import './mock'// 导入 mock 数据处理
import api from './api' import api from './api'
import router from "./router"; import router from "./router";
import store from "./store"; import store from "./store";

92
src/mock/index.js

@ -2,6 +2,20 @@ import Mock from 'mockjs'
import globalMethods from '../utils/global-methods' import globalMethods from '../utils/global-methods'
import resource from "../assets/data/resource.js"; import resource from "../assets/data/resource.js";
function getParams(options) {
let params = globalMethods.$parseURL(options.url).params
params.pageNo = ~~params.pageNo
params.pageSize = ~~params.pageSize
return params
}
function getPage(options) {
let params = getParams(options)
let offset = params.pageNo * params.pageSize
let limit = params.pageNo * params.pageSize + params.pageSize
return {limit, offset, pageNo: params.pageNo}
}
Mock.setup({ Mock.setup({
timeout: '500-1000' timeout: '500-1000'
}) })
@ -10,17 +24,12 @@ let allRecommendVideos = []
for (let i = 0; i < 10; i++) { for (let i = 0; i < 10; i++) {
allRecommendVideos = allRecommendVideos.concat(resource.videos) allRecommendVideos = allRecommendVideos.concat(resource.videos)
} }
Mock.mock(/recommended/, options => { Mock.mock(/recommended/, options => {
let params = globalMethods.$parseURL(options.url).params let page = getPage(options)
params.pageNo = ~~params.pageNo
params.pageSize = ~~params.pageSize
let offset = params.pageNo * params.pageSize
let limit = params.pageNo * params.pageSize + params.pageSize
return Mock.mock({ return Mock.mock({
data: { data: {
total: allRecommendVideos.length, total: allRecommendVideos.length,
list: allRecommendVideos.slice(offset, limit), list: allRecommendVideos.slice(page.offset, page.limit),
}, code: 200, msg: '', }, code: 200, msg: '',
}) })
} }
@ -69,41 +78,52 @@ Mock.Random.extend({
Mock.mock('me', data) Mock.mock('me', data)
}()) }())
Mock.mock(/my/, options => { Mock.mock(/my/, options => {
let params = globalMethods.$parseURL(options.url).params let page = getPage(options)
params.pageNo = ~~params.pageNo
params.pageSize = ~~params.pageSize
let offset = params.pageNo * params.pageSize
let limit = params.pageNo * params.pageSize + params.pageSize
return Mock.mock({ return Mock.mock({
data: { data: {
pageNo: params.pageNo, pageNo: page.pageNo,
total: resource.my.length, total: resource.my.length,
list: resource.my.slice(offset, limit), list: resource.my.slice(page.offset, page.limit),
}, code: 200, msg: '',
})
})
Mock.mock(/like/, options => {
let page = getPage(options)
return Mock.mock({
data: {
pageNo: page.pageNo,
total: resource.my.length,
list: resource.like.slice(page.offset, page.limit),
}, code: 200, msg: '',
})
})
Mock.mock(/private1/, options => {
let page = getPage(options)
return Mock.mock({
data: {
pageNo: page.pageNo,
total: resource.my.length,
list: resource.private1.slice(page.offset, page.limit),
}, code: 200, msg: '', }, code: 200, msg: '',
}) })
}) })
Mock.mock(/collect/, options => {
let page = getPage(options)
return Mock.mock({
data: {
pageNo: page.pageNo,
video: {
total: 0,
list: [],
},
audio: {
total: 0,
list: [],
}
}, code: 200, msg: '',
})
})
!(function private1() {
// let data = {total: Mock.Random.natural(1, 20)}
// data[`list|${data.total > pageSize ? pageSize : data.total}`] = [{'like|10000-990000': 1000000, src: '@imgs'}]
let data = {total: 4}
data[`list|${data.total}`] = [{'like|10000-990000': 1000000, src: '@imgs'}]
Mock.mock(/private/, Mock.mock({data, code: 200, msg: '',}))
}())
!(function like() {
// let data = {total: Mock.Random.natural(1, 20)}
// data[`list|${data.total > pageSize ? pageSize : data.total}`] = [{'like|10000-990000': 1000000, src: '@imgs'}]
let data = {total: 11}
data[`list|${data.total}`] = [{'like|10000-990000': 1000000, src: '@imgs'}]
Mock.mock(/like/, Mock.mock({data, code: 200, msg: '',}))
}())
!(function collect() {
// let data = {total: Mock.Random.natural(1, 20)}
// data[`list|${data.total > pageSize ? pageSize : data.total}`] = [{'like|10000-990000': 1000000, src: '@imgs'}]
let data = {total: 5}
data[`list|${data.total}`] = [{'like|10000-990000': 1000000, src: '@imgs'}]
Mock.mock(/collect/, Mock.mock({data, code: 200, msg: '',}))
}())

6
src/pages/me/Me.less

@ -316,7 +316,7 @@
.number { .number {
color: @second-text-color; color: @second-text-color;
padding-bottom: 2rem; padding-bottom: 1rem;
border-bottom: 1px solid @line-color; border-bottom: 1px solid @line-color;
display: flex; display: flex;
align-items: center; align-items: center;
@ -339,6 +339,10 @@
height: 1.2rem; height: 1.2rem;
margin-left: .6rem; margin-left: .6rem;
} }
.text{
white-space: pre-wrap;
}
} }
.more { .more {

59
src/pages/me/Me.vue

@ -37,22 +37,22 @@
<span>获赞</span> <span>获赞</span>
<span class="num">18</span> <span class="num">18</span>
</div> </div>
<div class="text">
<span>粉丝</span>
<span class="num">62</span>
</div>
<div class="text"> <div class="text">
<span>关注</span> <span>关注</span>
<span class="num">8</span> <span class="num">8</span>
</div> </div>
<div class="text">
<span>粉丝</span>
<span class="num">62</span>
</div>
</div> </div>
</div> </div>
<div class="description"> <div class="description">
<p class="name f22 mt1r mb1r">ttentau</p> <p class="name f22 mt1r mb1r">{{ userinfo.nickname }}</p>
<div class="number mb1r"> <div class="number mb1r">
<span class="mr1r">私密账号</span> <span class="mr1r" v-if="userinfo.is_private">私密账号</span>
<span>抖音号605128307</span> <span>抖音号{{ userinfo.unique_id }}</span>
<img src="../../assets/img/icon/me/qrcode-gray.png" alt="" @click.stop="$nav('/my-card')"> <img src="../../assets/img/icon/me/qrcode-gray.png" alt="" @click.stop="$nav('/my-card')">
</div> </div>
<div class="signature f12" @click="$nav('/edit-userinfo-item',{type:3})"> <div class="signature f12" @click="$nav('/edit-userinfo-item',{type:3})">
@ -60,16 +60,20 @@
<span>点击添加介绍让大家认识你...</span> <span>点击添加介绍让大家认识你...</span>
<img src="../../assets/img/icon/me/write-gray.png" alt=""> <img src="../../assets/img/icon/me/write-gray.png" alt="">
</template> </template>
<span v-else class="text">{{ userinfo.desc }}</span> <div v-else class="text" v-html="userinfo.desc"></div>
</div> </div>
<div class="more"> <div class="more">
<div class="age item" v-if="userinfo.birthday"> <div class="age item" v-if="userinfo.birthday">
<img v-if="userinfo.sex === '女'" src="../../assets/img/icon/me/woman.png" alt=""> <img v-if="userinfo.sex == 0" src="../../assets/img/icon/me/woman.png" alt="">
<img v-if="userinfo.sex === '男'" src="../../assets/img/icon/me/man.png" alt=""> <img v-if="userinfo.sex == 1" src="../../assets/img/icon/me/man.png" alt="">
<span>{{ filterAge(userinfo.birthday) }}</span> <span>{{ filterAge(userinfo.birthday) }}</span>
</div> </div>
<div class="item" v-if="userinfo.location"> <div class="item" v-if="userinfo.province || userinfo.city">
{{ userinfo.location }} {{ userinfo.province }}
<template v-if="userinfo.province && userinfo.city">
-
</template>
{{ userinfo.city }}
</div> </div>
<div class="item" v-if="userinfo.school.name"> <div class="item" v-if="userinfo.school.name">
{{ userinfo.school.name }} {{ userinfo.school.name }}
@ -389,7 +393,34 @@ export default {
tempScroll: false, tempScroll: false,
acceleration: 1.2, acceleration: 1.2,
sprint: 15, sprint: 15,
canScroll: true canScroll: true,
localAuthor: {
"id": "93864497380",
"unique_id_modify_time": "1630393144",
"unique_id": "10040050",
"favoriting_count": 143,
"avatar": require('../../assets/img/icon/avatar/1.png'),
"city": "北京",
"school": "中央戏剧学院",
"province": null,
"country": "",
"location": "",
"birthday": "2002-01-01",
"cover": "https://p3.douyinpic.com/obj/c8510002be9a3a61aad2?from=116350172",
"following_count": 66,
"follower_count": 235000,
"aweme_count": 1796000,
"nickname": "我是小睿耶",
"phone": "",
"sex": "",
"last_login_time": "1630423555",
"create_time": "1630423555",
"status": 1,
"desc": `一个普普通通学表演的
看到的人都能开开心心
`,
"is_private": 0
}
} }
}, },
computed: { computed: {
@ -482,7 +513,7 @@ export default {
switch (newVal) { switch (newVal) {
case 0: case 0:
res = await this.$api.videos.my({pageNo: this.videos.my.pageNo, pageSize: this.pageSize,}) res = await this.$api.videos.my({pageNo: this.videos.my.pageNo, pageSize: this.pageSize,})
console.log(res) console.log(res)
if (res.code === this.SUCCESS) this.videos.my = res.data if (res.code === this.SUCCESS) this.videos.my = res.data
break break
case 1: case 1:

24
src/pages/me/Uploader.less

@ -349,9 +349,9 @@
color: white; color: white;
transform: translateY(-2rem); transform: translateY(-2rem);
.number { .number, .certification {
color: @second-text-color; margin-bottom: 1rem;
padding-bottom: 2rem; padding-bottom: 1rem;
border-bottom: 1px solid @line-color; border-bottom: 1px solid @line-color;
display: flex; display: flex;
align-items: center; align-items: center;
@ -362,6 +362,20 @@
} }
} }
.number {
color: @second-text-color;
img {
margin-left: .5rem;
}
}
.certification {
img {
width: 1.6rem;
margin-right: .5rem;
}
}
} }
.signature { .signature {
@ -374,6 +388,10 @@
height: 1.2rem; height: 1.2rem;
margin-left: .6rem; margin-left: .6rem;
} }
.text {
white-space: pre-wrap;
}
} }
.more { .more {

30
src/pages/me/Uploader.vue

@ -41,26 +41,30 @@
<div class="heat"> <div class="heat">
<div class="text"> <div class="text">
<span>获赞</span> <span>获赞</span>
<span class="num">{{ localAuthor.favoriting_count }}</span> <span class="num">{{ $likeNum(localAuthor.aweme_count) }}</span>
</div>
<div class="text">
<span>粉丝</span>
<span class="num">{{ localAuthor.follower_count }}</span>
</div> </div>
<div class="text"> <div class="text">
<span>关注</span> <span>关注</span>
<span class="num">{{ localAuthor.following_count }}</span> <span class="num">{{ localAuthor.following_count }}</span>
</div> </div>
<div class="text">
<span>粉丝</span>
<span class="num">{{ $likeNum(localAuthor.follower_count) }}</span>
</div>
</div> </div>
</div> </div>
<div class="description"> <div class="description">
<p class="name f22 mt1r mb1r">{{ localAuthor.nickname }}</p> <p class="name f22 mt1r mb1r">{{ localAuthor.nickname }}</p>
<div class="number mb1r"> <div class="certification" v-if="localAuthor.certification ">
<img src="../../assets/img/icon/me/certification.webp">
{{ localAuthor.certification }}
</div>
<div class="number" v-else>
<span>抖音号{{ localAuthor.unique_id }}</span> <span>抖音号{{ localAuthor.unique_id }}</span>
<img src="../../assets/img/icon/me/qrcode-gray.png" alt="" @click.stop="$nav('/my-card')"> <img src="../../assets/img/icon/me/qrcode-gray.png" alt="" @click.stop="$nav('/my-card')">
</div> </div>
<div class="signature f12" v-if="localAuthor.desc"> <div class="signature f12" v-if="localAuthor.desc">
<span class="text">{{ localAuthor.desc }}</span> <div class="text" v-html="localAuthor.desc"></div>
</div> </div>
<div class="more"> <div class="more">
<div class="age item" v-if="localAuthor.birthday"> <div class="age item" v-if="localAuthor.birthday">
@ -68,8 +72,12 @@
<img v-if="localAuthor.sex === '1'" src="../../assets/img/icon/me/man.png" alt=""> <img v-if="localAuthor.sex === '1'" src="../../assets/img/icon/me/man.png" alt="">
<span>{{ filterAge(localAuthor.birthday) }}</span> <span>{{ filterAge(localAuthor.birthday) }}</span>
</div> </div>
<div class="item" v-if="localAuthor.location"> <div class="item" v-if="localAuthor.province || localAuthor.city">
{{ localAuthor.location }} {{ localAuthor.province }}
<template v-if="localAuthor.province && localAuthor.city">
-
</template>
{{ localAuthor.city }}
</div> </div>
<div class="item" v-if="localAuthor.school?.name"> <div class="item" v-if="localAuthor.school?.name">
{{ localAuthor.school?.name }} {{ localAuthor.school?.name }}
@ -362,7 +370,7 @@ export default {
}, },
isOnThisPage(newVal) { isOnThisPage(newVal) {
if (newVal) { if (newVal) {
this.getAuthor() // this.getAuthor()
} }
} }
}, },
@ -374,7 +382,7 @@ export default {
this.refs.maxSlideHeight = this.$refs.videoSlideRowList.wrapperHeight this.refs.maxSlideHeight = this.$refs.videoSlideRowList.wrapperHeight
this.initSlideHeight = this.bodyHeight - 50 - this.refs.descHeight this.initSlideHeight = this.bodyHeight - 50 - this.refs.descHeight
this.canTransformY = this.refs.descHeight - this.floatHeight this.canTransformY = this.refs.descHeight - this.floatHeight
this.getAuthor() // this.getAuthor()
}) })
this.videoItemHeight = this.bodyWidth / 3 * 1.2 + 2 this.videoItemHeight = this.bodyWidth / 3 * 1.2 + 2
bus.on('baseSlide-moved', () => this.canScroll = false) bus.on('baseSlide-moved', () => this.canScroll = false)

32
src/store/index.js

@ -11,20 +11,34 @@ const store = Vuex.createStore({
maskDialogMode: 'dark', maskDialogMode: 'dark',
version: '17.1.0', version: '17.1.0',
userinfo: { userinfo: {
id: 1,
name: '',
account: '',
desc: '',
sex: '男',
birthday: '1992-03-09',
location: "中国-四川-成都",
school: { school: {
name: '西南交通大学', name: '中央戏剧学院',
department: null, department: null,
joinTime: null, joinTime: null,
education: null, education: null,
displayType: enums.DISPLAY_TYPE.ALL, displayType: enums.DISPLAY_TYPE.ALL,
} },
"id": "93864497380",
"unique_id_modify_time": "1630393144",
"unique_id": "10040050",
"favoriting_count": 143,
"avatar": require('../assets/img/icon/avatar/1.png'),
"city": "成都",
"province": '四川',
"country": "中国",
"birthday": "2002-01-01",
"cover": "https://p3.douyinpic.com/obj/c8510002be9a3a61aad2?from=116350172",
"following_count": 66,
"follower_count": 235000,
"aweme_count": 1796000,
"nickname": "我是小睿耶",
"phone": "",
"sex": "",
"last_login_time": "1630423555",
"create_time": "1630423555",
"status": 1,
"desc": `一个普普通通学表演的\n看到的人都能开开心心`,
"is_private": 0
}, },
friends: { friends: {
"all": [ "all": [

Loading…
Cancel
Save