<template>
	<view class="goods">
		<view class="goods-hd">
			<view class="item">
				<view class="a">文章标题<text>*</text></view>
				<view class="b">
					<input v-model="detail.title" placeholder="请输入文章标题" type="text"/>
				</view>
			</view>
			<view class="item">
				<view class="a">文章分类<text>*</text></view>
				<view class="b" @click="openPage(1)">
					<view class="select" :class="tabMIndex>= 0?'select-on':''">{{tabMIndex>=0? list[tabMIndex].name:'请输入分类名称'}}<u-icon name="arrow-right"></u-icon></view>
				</view>
			</view>
			<view class="items">
				<view class="a">封面图片<text>*</text></view>
				<view class="c">
					<u-upload :action="action" :header="header" @on-uploaded="success" width="180" height="180" :file-list="fileList" :custom-btn="true" max-count="1">
						<template v-slot:addBtn>
							<view class="slot-btn" hover-class="slot-btn__hover" hover-stay-time="150">
								<image src="/static/news/icon-upload.png"></image>
								<view class="1">上传图片</view>
							</view>
						</template>
					</u-upload>
				</view>
			</view>
			<view class="items">
				<view class="a">文章内容<text>*</text></view>
				<view class="b">
					<editor id="editor" class="ql-container" placeholder="开始输入..." show-img-size show-img-toolbar
						show-img-resize @statuschange="onStatusChange" @input="inputEditor" :read-only="readOnly" @ready="onEditorReady">
					</editor>
				</view>
			</view>
		</view>
		<view class="goods-fd">
			<view class="btn" @click="toSubmit()">保存</view>
		</view>
		<u-popup v-model="isShow" mode="bottom" border-radius="12" mask-close-able="false" closeable>
			<view class="goods-classify">
				<view class="goods-classify-hd">
					<view class="a" @click="openPage(4)"><u-icon name="plus"></u-icon>新增分类</view>文章分类</view>
				<view class="goods-classify-bd">
					<scroll-view scroll-y class="m">
						<view class="item" v-for="(a,i) in list" @click="tabMItem(i,a.category_id)"><view :class="tabMIndex == i?'item-on':''">{{a.name}}</view></view>
					</scroll-view>
				</view>
			</view>	
		</u-popup>
	</view>
</template>

<script>
	import Config from '@/core/config'
	import * as ArticleApi from '@/api/article'
    import * as CategoryApi from '@/api/article/category'
	export default {
		data() {
			return {
				action: "",
				fileList: [],
				detail: {},
				formats: {},
				isShow: false,
				checked: false,
				value: "",
				popupType: 1,
				tabMIndex: -1,
				type: -1,
				articleId: '',
				clickFlag: true,
			};
		},
		onLoad(o) {
			console.log(o)
			this.articleId = o.articleId;
			this.type = o.type;
			uni.setNavigationBarTitle({
				title: !this.articleId?'新增文章':'编辑文章'
			})
			if(this.articleId){
				this.getArticleDetail();
			}else {
				this.getCategoryList();
			}
		},
		onReady() {
			this.action = (Config.get('apiUrl')+'upload/image').replace("index.php?s=/","")
			this.header = {
				'Storeid': uni.getStorageSync('Store').storeInfo.store_id,
				'Access-Token': uni.getStorageSync('AccessToken'),
				'platform': "MP-WEIXIN",
			}
			uni.$on("reloadClasssify",this.getCategoryList())
		},
		methods: {
			//接受上传返回的数据
			success(list) {
				if(list.length > 0){
					const {response} = list[0];
					if(response.status == 200){
						uni.showToast({
							title: "上传成功"
						})
						this.detail.image_id = response.data.fileInfo.file_id
					}
				}
			},
			// 获取文章详情
			async getArticleDetail() {
			  const that = this;
			  const {status, message, data} = await ArticleApi.detail(this.articleId);
			  if(status == 200){
			  	this.detail = data.detail
				if( data.detail.image_url){
					this.fileList = [{
						url: data.detail.image_url
					}]
				}
				setTimeout(()=>{
					if(that.editorCtx){
						that.editorCtx.setContents({
							html: data.detail.content
						})    
					}
				},500)
				
				this.getCategoryList(1);
			  }
			},
			// 获取文章分类数据
			async getCategoryList(type) {
			  const that = this;
			  const {status, message, data} = await CategoryApi.list();
			  if(status == 200){
				  if(type == 1){
					  if(data.list && data.list.length > 0){
						  data.list.map((a,i)=>{
							  if(a.category_id == that.detail.category_id){
								  that.tabMIndex = i
							  }
						  })
					  }
				  }
				  
				  this.list = data.list;
			  }
			},
			//提交修改
			async toSubmit(){
				if(!this.detail.title){
					uni.showToast({
						icon: "none",
						title: "文章标题不能为空！"
					})
					return ;
				}
				if(!this.detail.category_id){
					uni.showToast({
						icon: "none",
						title: "请选择分类！"
					})
					return ;
				}
				if(!this.detail.image_id){
					uni.showToast({
						icon: "none",
						title: "请上传封面！"
					})
					return ;
				}
				if(!this.detail.content){
					uni.showToast({
						icon: "none",
						title: "文章内容不能为空！"
					})
					return ;
				}
				if(this.clickFlag == false){
					return ;
				}
				this.clickFlag = false
				const { status, message } = this.articleId? await ArticleApi.edit({
					article_id: this.articleId,
					title: this.detail.title,
					category_id: this.detail.category_id,
					image_id: this.detail.image_id,
					content: this.detail.content,
					sort: 2,
					status: 1
				}):await ArticleApi.add({
					title: this.detail.title,
					category_id: this.detail.category_id,
					image_id: this.detail.image_id,
					content: this.detail.content,
					sort: 2,
					status: 1
				});
				if(status == 200){
					this.clickFlag = true
					uni.showToast({
						title: "提交成功"
					})
					setTimeout(()=>{
						uni.navigateBack({
							delta: 1
						})
					},2000)
				}else{
					this.clickFlag = true
					uni.showToast({
						icon: "none",
						title: message
					})
				}
			},
			inputEditor(e) {
				this.detail.content = e.detail.html
			},
			onStatusChange(e) {
				const formats = e.detail
				this.formats = formats
			},
			onEditorReady() {
				uni.createSelectorQuery().select('#editor').context((res) => {
					this.editorCtx = res.context
				}).exec()
				 
			},
			openPage(i){
				if(i == 1){
					this.isShow = true;
				}else if(i == 4){
					this.isShow = false;
					uni.navigateTo({
						url: "/pages/news/article/classify"
					})
				}
			},
			tabMItem(index,category_id) {
				this.tabMIndex = index;
				this.detail.category_id = category_id
				this.isShow = false;
			},
		}
	}
</script>

<style lang="scss" scoped>
.goods{
	.ql-container {
		  box-sizing: border-box;
		  width: 100%;
		  color: #212121;
		  font-size: 26rpx;
		  overflow: auto;
		  padding: 10rpx 10rpx 20rpx 10rpx;
		  border: 1px solid #ECECEC;
	}
	padding: 0 0 130rpx;
	overflow: hidden;
	&-hd{
		background-color: #fff;
		padding: 0 25rpx 0;
		overflow: hidden;
		margin-bottom: 20rpx;
		.item{
			padding: 20rpx 30rpx;
			line-height: 50rpx;
			font-size: 28rpx;
			color: #212121;
			display: flex;
			align-items: center;
			justify-content: space-between;
			border-bottom: 1px solid #F7F7F7;
			.a{
				text{
					color: #F34A40;
					margin-left: 5rpx;
				}
			}		
			.b{	
				font-size: 28rpx;
				color: #212121;
				display: flex;
				align-items: center;
				justify-content: flex-end;
				flex: 1;
				input{
					font-size: 28rpx;
					color: #212121;
					flex: 1;
					line-height: 50rpx;
					font-size: 28rpx;
					color: #212121;
					text-align: right;
					margin-right: 10rpx;
				}
				.select{
					width: 100%;
					display: flex;
					align-items: center;
					color: #C7C7C7;
					justify-content: flex-end;
					&-on{
						color: #212121;
					}
				}
			}
		}
		.items{
				padding: 20rpx 30rpx;
				line-height: 50rpx;
				font-size: 28rpx;
				color: #212121;
				border-bottom: 1px solid #F7F7F7;
				position: relative;
				.a{
					flex: 1;
					display: flex;
					align-items: center;
					input{
						flex: 1;
						font-size: 26rpx;
						color: #212121;
						line-height: 50rpx;
						margin-left: 20rpx;
					}
					text{
						color: #F34A40;
						margin-left: 5rpx;
					}
					.select{
						flex: 1;
					}
					.tip{
						margin-left: 15rpx;
						font-size: 24rpx;
						font-weight: 500;
						color: #9F9F9F;
					}
				}
				.b{
					padding-top: 10rpx;
					font-size: 24rpx;
					font-weight: 400;
					color: #C7C7C7;
				}
				.d{
					position: absolute;
					right: 20rpx;
					top: 20rpx;
					z-index: 2;
					font-size: 28rpx;
					font-weight: 400;
					color: #212121;
				}
				.c{
					padding-top: 20rpx;
					overflow: hidden;
					.slot-btn{
						width: 180rpx;
						height: 180rpx;
						background: #F6F6F6;
						border-radius: 10rpx;
						border: 1px solid #C0C0C0;
						text-align: center;
						font-size: 28rpx;
						font-weight: 500;
						color: #6D6D6D;
						.l{
							line-height: 30rpx;
						}
						image{
							width: 50rpx;
							height: 50rpx;
							display: block;
							margin: 0 auto;
							margin-top: 30rpx;
						}
					}
				}
			}
		
	}	
	&-fd{
		width: 100%;
		position: fixed;
		left: 0;
		bottom: 0;
		padding: 30rpx;
		z-index: 99;
		background-color: #fafafa;
		box-sizing: border-box;
		.btn{
			width: 630rpx;
			line-height: 88rpx;
			background: #F34A40;
			border-radius: 88rpx;
			text-align: center;
			font-size: 28rpx;
			font-weight: 500;
			color: #FFFFFF;
			margin: 0 auto;
		}
	}
	&-classify{
		width: 100%;
		overflow: hidden;
		&-hd{
			padding: 30rpx 60rpx;
			position: relative;
			font-size: 32rpx;
			font-weight: 500;
			color: #303030;
			text-align: center;
			.a{
				display: flex;
				align-items: center;
				font-size: 28rpx;
				font-weight: 500;
				color: #FF624F;
				position: absolute;
				top: 30rpx;
				left: 40rpx;
				z-index: 2;
			}
		}
		&-bd{
			overflow: hidden;
			display: flex;
			align-items: flex-start;
			.l{
				width: 210rpx;
				height: 560rpx;
				background-color: #F7F8FA;
				.item{
					text-overflow: ellipsis;
					overflow: hidden;
					height: 70rpx;
					font-size: 28rpx;
					font-weight: 400;
					color: #303030;
					white-space: nowrap;
					line-height: 70rpx;
					padding-left: 30rpx;
					box-sizing: border-box;
					text-align: left;
					&-on{
						background-color: #fff;
						font-weight: 500;
					}
				}
			}
			.m{
				width: 100%;
				text-align: center;
				max-height: 560rpx;
				.item{
					text-overflow: ellipsis;
					overflow: hidden;
					height: 70rpx;
					font-size: 28rpx;
					font-weight: 400;
					color: #303030;
					white-space: nowrap;
					line-height: 70rpx;
					padding-left: 80rpx;
					box-sizing: border-box;
					text-align: left;
					&-on{
						color: #FF624F;
					}
				}
			}
			.r{
				width: 540rpx;
				height: 560rpx;
				.item{
					text-overflow: ellipsis;
					overflow: hidden;
					height: 70rpx;
					font-size: 28rpx;
					font-weight: 400;
					color: #303030;
					white-space: nowrap;
					line-height: 70rpx;
					padding-left: 80rpx;
					box-sizing: border-box;
					&-on{
						color: #FF624F;
					}
				}
			}
		}
	}
}
</style>
