Authored by Tao

add news

... ... @@ -58,3 +58,4 @@ export const sign = (op) => {
signUtils.setSign(p, md5(`${str}_${str.length}`).toString());
};
... ...
... ... @@ -2,9 +2,9 @@
<div class="news-list" v-if="list.length > 0">
<div class="news-list-title" v-if="isTitle">最新消息</div>
<ul class="news-list-content">
<li v-for="(item, key) in list" :key="key" @click="jump(item)">
<div class="news-list-name">{{ item.name }}</div>
<div class="news-list-time">{{ item.time }}</div>
<li v-for="(item, key) in list" :key="key">
<div class="news-list-name">{{ item.content }}</div>
<div class="news-list-time">{{ item.createTime }}</div>
</li>
</ul>
</div>
... ... @@ -24,9 +24,7 @@ export default {
}
},
methods: {
jump(item) {
console.log(item);
}
}
};
</script>
... ... @@ -44,7 +42,7 @@ export default {
border-bottom: 1px solid #eeeeee;
font-size: 28px;
.news-list-name { color: #000000 }
.news-list-time { color: #999999 }
.news-list-time { color: #999999; margin-top: 20px }
}
}
}
... ...
... ... @@ -2,10 +2,10 @@
<div class="news-tab">
<div class="tab-item" v-for="(item, key) in list" :key="key" @click="jump(item)">
<div class="tab-item-icon">
<img :src="item.url" :alt="item.alt" />
<span class="tab-item-tips" v-if="item.num > 0">{{ item.num }}</span>
<img :src="item.imgUrl" :alt="item.alt" />
<span class="tab-item-tips" v-if="item.unReadCount > 0">{{ item.unReadCount }}</span>
</div>
<div class="tab-item-name">{{ item.name }}</div>
<div class="tab-item-name">{{ item.description }}</div>
</div>
</div>
</template>
... ... @@ -26,8 +26,8 @@ export default {
},
methods: {
jump(item) {
const { name, id } = item;
this.$router.push({name:'newsDetail',query: {name,id}})
const { type, description } = item;
this.$router.push({name:'newsDetail',query: {type,description}})
}
}
};
... ...
... ... @@ -4,11 +4,12 @@
<Scroll
ref="scroll"
:options="options"
@pulling-up="onPullingUp">
@pulling-up="onPullingUp"
:data="newsList.list">
<div class="news-content">
<Title :title="msg"></Title>
<Tab :list="tabMeun"></Tab>
<List :list="list"></List>
<Tab :list="newsList.tabList"></Tab>
<List :list="newsList && newsList.list || []"></List>
</div>
</Scroll>
</div>
... ... @@ -33,51 +34,25 @@ export default {
pullUpLoad: true
},
msg: '消息',
list: [
{"name":"您的商品AIR JORDAN 4 RETRO PURE MONEY 2017已被用户下单,请及时发货","time":"2018.08.08 17:20"},
{"name":"您的商品AIR JORDAN 4 RETRO PURE MONEY 2017已被用户下单,请及时发货","time":"2018.08.08 17:20"},
{"name":"您的商品AIR JORDAN 4 RETRO PURE MONEY 2017已被用户下单,请及时发货","time":"2018.08.08 17:20"},
{"name":"您的商品AIR JORDAN 4 RETRO PURE MONEY 2017已被用户下单,请及时发货","time":"2018.08.08 17:20"}, {"name":"您的商品AIR JORDAN 4 RETRO PURE MONEY 2017已被用户下单,请及时发货","time":"2018.08.08 17:20"},
],
tabMeun: [
{
"url":"https://ss2.baidu.com/6ONYsjip0QIZ8tyhnq/it/u=3746507390,1548579672&fm=173&app=49&f=JPEG?w=500&h=200&s=4DB1AC50E4A059010AD00F57020050F6",
"alt":'',
"num":22,
"name":"购买通知",
"id":1,
},
{
"url":"https://ss2.baidu.com/6ONYsjip0QIZ8tyhnq/it/u=3746507390,1548579672&fm=173&app=49&f=JPEG?w=500&h=200&s=4DB1AC50E4A059010AD00F57020050F6",
"alt":'',
"num":22,
"name":"出售通知",
"id":2,
},
{
"url":"https://ss2.baidu.com/6ONYsjip0QIZ8tyhnq/it/u=3746507390,1548579672&fm=173&app=49&f=JPEG?w=500&h=200&s=4DB1AC50E4A059010AD00F57020050F6",
"alt":'',
"num":0,
"name":"系统通知",
"id":3,
}
]
}
},
computed: {
...mapState(['newsList']),
},
mounted() {
this.fetchNewsList();
let params = {
type: '',
isPage: true
}
this.fetchNewsList(params);
this.fetchNewsTabList();
},
created() {
},
methods: {
...mapActions(['fetchNewsList']),
...mapActions(['fetchNewsList','fetchNewsTabList']),
async onPullingUp() {
console.log('触发分页')
await this.fetchNewsList();
this.$refs.scroll.forceUpdate();
}
... ...
... ... @@ -4,10 +4,11 @@
<Scroll
ref="scroll"
:options="options"
@pulling-up="onPullingUp">
@pulling-up="onPullingUp"
:data="newsList.list">
<div class="news-content">
<Title :title="title"></Title>
<List :list="list" :isTitle="false"></List>
<List :list="newsList && newsList.list || []" :isTitle="false"></List>
</div>
</Scroll>
</div>
... ... @@ -19,7 +20,7 @@ import { Style, Scroll } from 'cube-ui'
import { createNamespacedHelpers } from 'vuex';
import Title from './components/title';
import List from './components/list';
const { mapState, mapActions } = createNamespacedHelpers('home/newsDetail');
const { mapState, mapActions } = createNamespacedHelpers('home/news');
export default {
data() {
... ... @@ -31,6 +32,7 @@ export default {
pullUpLoad: true
},
title: '',
type: '',
list: [
{"name":"您的商品AIR JORDAN 4 RETRO PURE MONEY 2017已被用户下单,请及时发货","time":"2018.08.08 17:20"},
{"name":"您的商品AIR JORDAN 4 RETRO PURE MONEY 2017已被用户下单,请及时发货","time":"2018.08.08 17:20"},
... ... @@ -43,17 +45,24 @@ export default {
...mapState(['newsList']),
},
mounted() {
this.fetchNewsList();
let params = {
type: this.type,
isPage: true
}
this.fetchNewsList(params);
},
created() {
this.title = this.$route.query.name;
this.title = this.$route.query.description;
this.type = this.$route.query.type;
},
methods: {
...mapActions(['fetchNewsList']),
async onPullingUp() {
console.log('触发分页')
await this.fetchNewsList();
let params = {
type: this.type,
isPage: false
}
await this.fetchNewsList(params);
this.$refs.scroll.forceUpdate();
}
},
... ...
import Vue from 'vue';
import moment from 'moment';
import * as Types from './types';
export default function() {
... ... @@ -7,29 +7,60 @@ export default function() {
state: {
newsList: {
list: [],
tabList: [],
page: 0,
limit: 10,
totalPage: 0,
uid: '500031170',
},
},
mutations: {
[Types.FETCH_NEWS_LIST](state, { list }) {
Vue.set(state.newsList, 'list', list);
// Vue.set(state.channelList, 'page', productlist.page);
state.newsList.list = state.newsList.list.concat(list.list);
state.newsList.page = list.page;
state.newsList.totalPage = list.totalPage;
},
[Types.FETCH_NEWS_TAB_LIST](state, { list }) {
state.newsList.tabList = list;
},
},
actions: {
async fetchNewsList({ commit, state }) {
console.log('111');
let page = state.newsList.list.page || 1;
let size = state.newsList.list.page_size || 10;
const result = await this.$api.post('/api/ufo/home/noticelist', {
page,
size,
lastedTime: 0
async fetchNewsList({ commit, state }, obj) {
let page = state.newsList.page + 1;
let uid = state.newsList.uid;
let limit = state.newsList.limit;
let totalPage = state.newsList.totalPage;
let type = obj && obj.type;
let isPage = obj && obj.isPage;
console.log(state.newsList.totalPage);
console.log('页码2');
// 页面跳转重置page页码
isPage ? page = 1 : state.newsList.page + 1;
if (page === totalPage) {
return false;
}
const result = await this.$api.post('/api/ufo/home/newsList', {
page, uid, type, limit
});
if (result.code === 200) {
// 时间戳转换 moment
result.data.list.map((res) => {
res.createTime = moment(new Date(res.createTime * 1000)).format('YYYY.MM.DD HH:mm');
});
commit(Types.FETCH_NEWS_LIST, {list: result.data});
}
},
async fetchNewsTabList({ commit, state }) {
let uid = '500031170';
const result = await this.$api.post('/api/ufo/home/newsListTab', { uid });
if (result.code === 200) {
commit(Types.FETCH_NEWS_TAB_LIST, {list: result.data});
}
},
},
};
}
... ...
... ... @@ -5,6 +5,7 @@ export const FETCH_NOTICE_LIST_SUCCESS = 'FETCH_NOTICE_LIST_SUCCESS';
export const FETCH_CHANNEL = 'FETCH_CHANNEL';
export const FETCH_PRODUCT = 'FETCH_PRODUCT';
export const FETCH_NEWS_LIST = 'FETCH_NEWS_LIST';
export const FETCH_NEWS_TAB_LIST = 'FETCH_NEWS_TAB_LIST';
export const FETCH_FAVORITE_LIST_REQUEST = 'FETCH_FAVORITE_LIST_REQUEST';
export const FETCH_FAVORITE_LIST_FAILD = 'FETCH_FAVORITE_LIST_FAILD';
... ...
... ... @@ -68,4 +68,18 @@ module.exports = {
uid: { type: Number, require: true },
},
},
'/api/ufo/home/newsList': {
ufo: true,
api: 'ufo.users.listInboxs',
params: {
uid: { type: Number },
},
},
'/api/ufo/home/newsListTab': {
ufo: true,
api: 'ufo.users.listInboxTypeInfo',
params: {
uid: { type: Number },
},
},
};
... ...