Authored by yyq

more action

<template>
<div v-transfer-dom :data-transfer="transfer">
<div v-transfer-dom :data-transfer="transfer" :class="actionCls">
<transition name="action-sheet-mask">
<div class="yoho-popup-mask" @click="maskClick" v-if="mask && isVisible"></div>
</transition>
<transition name="action-sheet-move">
<div class="yoho-popup" :class="actionCls" v-show="isVisible" :style="{'z-index': zIndex}">
<div class="yoho-popup-container">
<div class="yoho-popup-content">
<div class="detail">
<div class="yoho-popup" v-show="isVisible" :style="{'z-index': zIndex}">
<div class="yoho-popup-container" :style="{'max-height': maxHeight + 'px', 'height': contentHeight}">
<slot></slot>
</div>
</div>
</div>
</div>
</transition>
</div>
</template>
... ... @@ -46,9 +42,11 @@ export default {
data() {
return {
isVisible: false,
maxHeight: 0
};
},
mounted() {
this.maxHeight = document.body.offsetHeight;
this.$watch('visible', (newVal) => {
if (newVal) {
this.show();
... ... @@ -62,6 +60,9 @@ export default {
computed: {
actionCls() {
return [{ 'yoho-action-sheet': this.full }];
},
contentHeight() {
return this.full ? `${this.maxHeight - 20}px` : 'auto';
}
},
methods: {
... ... @@ -120,7 +121,8 @@ export default {
.yoho-popup-mask {
display: block;
background: #ccc;
background: #000;
opacity: 0.6;
position: absolute;
z-index: 99;
top: 0;
... ... @@ -130,35 +132,38 @@ export default {
}
.yoho-popup {
width: 100%;
position: fixed;
left: 0;
right: 0;
top: 0;
bottom: 0;
.yoho-popup-container {
border-radius: 8PX 8PX 0 0;
z-index: 2;
background-color: #fff;
position: relative;
}
&:after {
content: "";
width: 100%;
height: 200px;
position: absolute;
top: 20PX;
left: 0;
right: 0;
bottom: 0;
background-color: #fff;
overflow: hidden;
bottom: -200px;
z-index: -1;
background: #fff;
}
}
.yoho-action-sheet {
.yoho-popup-content {
height: 100%;
}
.yoho-popup-mask {
background: #ccc;
opacity: 1;
}
.detail {
position: relative;
width: 100%;
height: 100%;
.yoho-popup-container {
border-radius: 8PX 8PX 0 0;
overflow: hidden;
}
}
</style>
... ...
... ... @@ -38,18 +38,7 @@ export default {
},
methods: {
onMore() {
this.$createActionSheet({
data: [{
content: '投诉'
}],
onSelect: () => {
this.$createToast({
txt: '投诉成功',
type: 'correct',
time: 1000
}).show();
}
}).show();
this.$emit('on-show-more');
},
toUserPage() {
if (this.share) {
... ...
<template>
<div class="article-item">
<ArticleItemHeader :type="type" :thumb="thumb" :share="share" :data="headerData" :lazy="lazy" @on-follow="onFollow"></ArticleItemHeader>
<ArticleItemHeader :type="type" :thumb="thumb" :share="share" :data="headerData" :lazy="lazy" @on-follow="onFollow" @on-show-more="onShowMore"></ArticleItemHeader>
<ArticleItemSlide :type="type" :thumb="thumb" :share="share" :data="slideData" :slide-index="data.blockIndex" :lazy="lazy"></ArticleItemSlide>
<ProductGroup :thumb="thumb" v-if="productListData.length" :share="share" :data="productListData" :lazy="lazy"></ProductGroup>
<ArticleItemIntro :thumb="thumb" :type="type" :share="share" :data="introData" @on-expand="onExpand" @on-expanding="onExpanding" @on-show-guang="onShowGuang" @on-show-comment="onShowComment"></ArticleItemIntro>
... ... @@ -126,6 +126,9 @@ export default {
onShowComment() {
this.$emit('on-show-comment', {articleId: this.data.articleId, index: this.index});
},
onShowMore() {
this.$emit('on-show-more', this.data);
}
},
components: {ArticleItemHeader, ArticleItemSlide, ArticleItemIntro, ArticleItemComment}
};
... ...
... ... @@ -12,7 +12,7 @@
<WidgetFollow :share="share" class="widget-follow" :author-uid="currentAuthor.authorUid" :follow="currentAuthor.hasAttention === 'Y'" @on-follow="follow => onFollow(currentAuthor, follow)"></WidgetFollow>
</template>
</LayoutHeader>
<LayoutRecycleList :size="10" :thumbs="thumbs" ref="scroll" @scroll="onScroll" :offset="2000" :on-fetch="onFetch">
<LayoutRecycleList :size="10" :thumbs="thumbs" :remove="deleteArticle" ref="scroll" @scroll="onScroll" :offset="2000" :on-fetch="onFetch">
<template class="article-item" #item="{ data: {data, index} }">
<ArticleItem
:id="`item${index}`"
... ... @@ -24,7 +24,8 @@
@on-follow="follow => onFollow(data, follow)"
@on-resize="onResize"
@on-show-guang="onShowGuang"
@on-show-comment="onShowComment"></ArticleItem>
@on-show-comment="onShowComment"
@on-show-more="onShowMore"></ArticleItem>
<div :id="`ph${index}`"></div>
</template>
</LayoutRecycleList>
... ... @@ -38,6 +39,7 @@
@on-comment="onActionComment"
@on-page-ready="onPageReady"></Comment>
</YohoActionSheet>
<MoreActionSheet transfer ref="moreAction" @on-follow="onFollow" @on-delete="onDelete"></MoreActionSheet>
</div>
</template>
... ... @@ -45,7 +47,8 @@
import {throttle} from 'lodash';
import ArticleItem from './article-item';
import ArticleActionSheet from '../detail/article-action-sheet';
import {createNamespacedHelpers} from 'vuex';
import MoreActionSheet from '../detail/more-action-sheet';
import {mapState, createNamespacedHelpers} from 'vuex';
const {mapMutations} = createNamespacedHelpers('article');
export default {
... ... @@ -75,6 +78,7 @@ export default {
showCommentAction: false,
showCommentActioning: false,
showArticleDetailAction: false,
showMoreAction: true,
inx: 0,
scrollTop: 0,
showHeader: false,
... ... @@ -86,7 +90,8 @@ export default {
hasAttention: 'N',
isShare: false,
authorType: 1
}
},
deleteArticle: {}
};
},
activated() {
... ... @@ -94,6 +99,9 @@ export default {
this.$refs.scroll.$el.scrollTop = this.scrollTop;
}
},
computed: {
...mapState(['yoho'])
},
methods: {
...mapMutations(['ASYNC_ARTICLE_COMMENT', 'CHANGE_AUTHOR_FOLLOW']),
toUserPage() {
... ... @@ -120,6 +128,18 @@ export default {
this.$refs.comment.init();
});
},
async onShowMore(article) {
if (this.yoho && this.yoho.context.isLogin && !this._uid) {
let user = await this.$sdk.getUser();
this._uid = user.uid;
}
this.$refs.moreAction.show(article, this._uid);
},
onDelete(articleId) {
this.deleteArticle = {articleId};
},
onPageReady({success}) {
if (success && this.showCommentAction) {
this.$refs.commentAction.show();
... ... @@ -182,7 +202,8 @@ export default {
},
components: {
ArticleItem,
ArticleActionSheet
ArticleActionSheet,
MoreActionSheet
}
};
</script>
... ...
<template>
<YohoActionSheet class="more-action-sheet" ref="actionSheet">
<div class="action-wrap">
<div class="action-list">
<div class="action-item" v-for="(i, index) in list" :key="index" v-show="!i.hide" @click="onClick(i.fnName)">
<p class="icon">
<span class="iconfont" :class="i.icon"></span>
</p>
<p class="name">{{i.name}}</p>
</div>
</div>
<div class="cancel" @click="hide">取消</div>
</div>
</YohoActionSheet>
</template>
<script>
import {createNamespacedHelpers} from 'vuex';
const articleStore = createNamespacedHelpers('article');
const userStore = createNamespacedHelpers('user');
export default {
name: 'MoreActionSheetPage',
data() {
return {
list: [
{
icon: 'icon-fav-cancel',
name: '取消关注',
fnName: 'actionCancelFav'
},
{
icon: 'icon-warn',
name: '举报',
fnName: 'actionrReport'
},
{
icon: 'icon-delete',
name: '删除',
fnName: 'actionDelete'
}
]
};
},
methods: {
...articleStore.mapActions(['reportArticle', 'deleteArticle']),
...userStore.mapActions(['followUser']),
show(params, uid) {
params = params || {};
this.list[0].hide = params.hasAttention !== 'Y';
this.list[2].hide = params.authorUid !== uid || params.authorUid !== 1;
this.list = [...this.list];
this._params = params;
this.$refs.actionSheet.show();
},
hide() {
this.$refs.actionSheet.hide();
},
actionrReport() {
this.$createToast({
txt: '举报成功',
type: 'correct',
time: 1000
}).show();
this.reportArticle(this._params.articleId);
},
actionCancelFav() {
let {authorUid, authorType} = this._params;
return this.$emit('on-follow', this._params);
this.followUser({
followUid: authorUid,
status: false,
authorType
}).then(res => {
if (res.code === 200) {
this.$emit('on-follow', this._params);
}
});
},
actionDelete() {
this.$createDialog({
type: 'confirm',
title: '确认删除该文章?',
confirmBtn: {
text: '确定',
active: true,
disabled: false,
href: 'javascript:;'
},
cancelBtn: {
text: '取消',
active: false,
disabled: false,
href: 'javascript:;'
},
onConfirm: () => {
this.deleteArticle(this._params.articleId).then(res => {
if (res.code === 200) {
this.$emit('on-delete', this._params.articleId);
} else {
this.$createToast({
type: 'warn',
time: 1000,
txt: '删除失败了'
}).show();
}
});
}
}).show()
},
onClick(name) {
this[name] && this[name]();
this.hide();
}
}
};
</script>
<style scoped lang="scss">
/deep/ .yoho-popup {
&:after,
> .yoho-popup-container {
background-color: rgba(255, 255, 255, 0.9);
}
}
.action-wrap {
color: #444;
.action-list {
width: 100%;
padding: 20px 40px;
border-bottom: 1PX solid #d7d7d7;
display: flex;
justify-content: space-around;
}
.action-item {
width: 128px;
padding: 12px 0;
.icon {
width: 88px;
height: 88px;
line-height: 92px;
border-radius: 50%;
margin: 0 auto 16px;
background-color: #fff;
text-align: center;
overflow: hidden;
}
.iconfont {
font-size: 48px;
color: #b0b0b0;
}
.name {
font-size: 24px;
text-align: center;
transform: scale(0.9, 0.9);
opacity: 0.65;
}
}
.cancel {
line-height: 88px;
font-size: 32px;
letter-spacing: 0.05px;
text-align: center;
}
}
</style>
... ...
@font-face {font-family: "iconfont";
src: url('iconfont.eot?t=1551098188585'); /* IE9 */
src: url('iconfont.eot?t=1551098188585#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2'),
url('iconfont.woff?t=1551098188585') format('woff'),
url('iconfont.ttf?t=1551098188585') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */
url('iconfont.svg?t=1551098188585#iconfont') format('svg'); /* iOS 4.1- */
src: url('iconfont.eot?t=1551944025614'); /* IE9 */
src: url('iconfont.eot?t=1551944025614#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2'),
url('iconfont.woff?t=1551944025614') format('woff'),
url('iconfont.ttf?t=1551944025614') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */
url('iconfont.svg?t=1551944025614#iconfont') format('svg'); /* iOS 4.1- */
}
.iconfont {
... ... @@ -99,3 +99,15 @@
content: "\e7b4";
}
.icon-warn:before {
content: "\e7b6";
}
.icon-fav-cancel:before {
content: "\e7b8";
}
.icon-delete:before {
content: "\e7ba";
}
... ...
... ... @@ -83,6 +83,15 @@ Created by iconfont
<glyph glyph-name="zan-bold" unicode="&#59316;" d="M881.732267 578.082133c69.290667 0 108.1344-52.974933 108.066133-136.942933l-0.2048-2.798933-44.6464-372.736c-0.341333-73.864533-58.504533-134.3488-130.730667-134.3488H136.533333a34.133333 34.133333 0 0 0-34.133333 34.133333V496.8448a34.133333 34.133333 0 0 0 34.133333 34.133333h182.818134c35.771733 107.1104 62.805333 184.866133 75.776 215.722667 29.354667 70.314667 59.938133 101.102933 116.804266 113.4592C517.256533 861.320533 522.922667 861.866667 528.5888 861.866667c42.666667 0 95.095467-28.808533 127.7952-72.567467 36.4544-48.810667 50.7904-114.2784 31.3344-195.106133l-3.8912-16.110934h197.973333z m0-68.266666H640.546133a34.133333 34.133333 0 0 0-33.1776 42.052266l9.0112 37.751467 4.983467 20.48c14.609067 60.8256 4.778667 105.540267-19.6608 138.376533-20.343467 27.2384-52.974933 45.124267-73.1136 45.124267a13.038933 13.038933 0 0 1-2.2528-0.136533c-32.290133-7.031467-46.6944-21.572267-68.266667-73.181867-12.834133-30.72-42.871467-117.486933-81.851733-234.427733a34.133333 34.133333 0 0 0-36.317867-23.210667L170.666667 462.779733v-463.189333h643.549866c33.9968 0 62.2592 29.4912 62.6688 70.314667l44.714667 374.442666c-0.2048 47.172267-13.858133 65.536-39.867733 65.536zM296.413867 504.354133h68.266666v-538.965333h-68.266666z" horiz-adv-x="1024" />
<glyph glyph-name="warn" unicode="&#59318;" d="M549.290667 743.552a42.666667 42.666667 0 0 1-74.581334 0l-354.133333-637.482667A42.666667 42.666667 0 0 1 157.866667 42.66666699999996h708.266666a42.666667 42.666667 0 0 1 37.333334 63.402666l-354.133334 637.44z m74.581333 41.386667l354.176-637.44A128 128 0 0 0 866.133333-42.66666699999996H157.866667a128 128 0 0 0-111.914667 190.165334l354.133333 637.44a128 128 0 0 0 223.786667 0zM512 597.333333a42.666667 42.666667 0 0 0 42.666667-42.666666v-256a42.666667 42.666667 0 1 0-85.333334 0V554.666667a42.666667 42.666667 0 0 0 42.666667 42.666666zM512 170.66666699999996m-42.666667 0a42.666667 42.666667 0 1 1 85.333334 0 42.666667 42.666667 0 1 1-85.333334 0Z" horiz-adv-x="1024" />
<glyph glyph-name="fav-cancel" unicode="&#59320;" d="M706.688 810.666667c138.410667 0 249.770667-116.906667 249.770667-260.096 0-61.781333-20.906667-120.362667-59.306667-167.978667l-89.301333-103.936a42.666667 42.666667 0 1 0-64.725334 55.594667l88.448 102.912c25.386667 31.488 39.552 71.253333 39.552 113.408C871.125333 647.552 797.013333 725.333333 706.688 725.333333c-54.314667 0-112.085333-60.586667-167.893333-191.488-14.762667-34.56-63.744-34.56-78.506667 0C404.48 664.704 346.794667 725.333333 292.48 725.333333 202.112 725.333333 128 647.552 128 550.570667c0-42.197333 14.165333-81.92 38.656-112.384l365.226667-425.045334a42.666667 42.666667 0 1 0-64.682667-55.594666L101.034667 383.57333300000005A265.557333 265.557333 0 0 0 42.666667 550.570667C42.666667 693.76 154.026667 810.666667 292.48 810.666667c79.872 0 147.968-55.850667 207.061333-162.304C558.677333 754.773333 626.773333 810.666667 706.688 810.666667zM640 170.66666699999996h213.333333a42.666667 42.666667 0 0 0 0-85.333334h-213.333333a42.666667 42.666667 0 0 0 0 85.333334z" horiz-adv-x="1024" />
<glyph glyph-name="delete" unicode="&#59322;" d="M128 640h768a42.666667 42.666667 0 0 0 0-85.333333H128a42.666667 42.666667 0 1 0 0 85.333333zM725.333333 624.2133329999999h-85.333333c0 57.514667-56.149333 106.666667-128 106.666667s-128-49.152-128-106.666667H298.666667c0 107.392 96.682667 192 213.333333 192s213.333333-84.608 213.333333-192zM256 554.666667v-512h512V554.666667H256z m0 85.333333h512a85.333333 85.333333 0 0 0 85.333333-85.333333v-512a85.333333 85.333333 0 0 0-85.333333-85.333334H256a85.333333 85.333333 0 0 0-85.333333 85.333334V554.666667a85.333333 85.333333 0 0 0 85.333333 85.333333zM341.333333 426.666667m42.666667 0l0 0q42.666667 0 42.666667-42.666667l0-170.666667q0-42.666667-42.666667-42.666666l0 0q-42.666667 0-42.666667 42.666666l0 170.666667q0 42.666667 42.666667 42.666667ZM469.333333 426.666667m42.666667 0l0 0q42.666667 0 42.666667-42.666667l0-170.666667q0-42.666667-42.666667-42.666666l0 0q-42.666667 0-42.666667 42.666666l0 170.666667q0 42.666667 42.666667 42.666667ZM597.333333 426.666667m42.666667 0l0 0q42.666667 0 42.666667-42.666667l0-170.666667q0-42.666667-42.666667-42.666666l0 0q-42.666667 0-42.666667 42.666666l0 170.666667q0 42.666667 42.666667 42.666667Z" horiz-adv-x="1024" />
</font>
... ...
... ... @@ -225,5 +225,15 @@ export default {
commit(Types.FETCH_GUANG_SUCCESS, result);
},
async reportArticle(actions, {articleId}) {
const result = await this.$api.post('/api/grass/reportIllegalArticle', {articleId});
return result;
},
async deleteArticle(actions, {articleId}) {
const result = await this.$api.post('/api/grass/deleteGrassArticle', {articleId});
return result;
}
};
... ...
... ... @@ -230,4 +230,18 @@ module.exports = {
authorType: {type: Number},
}
},
'/api/grass/reportIllegalArticle': {
api: 'app.grass.reportIllegalArticle',
auth: true,
params: {
articleId: {type: Number}
}
},
'/api/grass/deleteGrassArticle': {
api: 'app.grass.deleteGrassArticle',
auth: true,
params: {
articleId: {type: Number}
}
}
};
... ...