<template>
	<view class="wrap">
		<view class="desc-box">
			<text class="title">内容描述</text>
			<textarea  class="desc-input" v-model="contentDesc"
			placeholder="请输入内容描述~" />
			<!-- <view class="bottom-box">
				<view class="keyTips" @click="clickRandomKey()"></view>
				<view class="limit">{{drawDesc.length}}/50</view>
			</view> -->
		</view>
		<view class="desc-box">
			<text class="title">场景描述</text>
			<textarea  class="desc-input" v-model="sceneDesc"
			placeholder="描述一下你们的场景吧~" />
			<!-- <view class="bottom-box">
				<view class="keyTips" @click="clickRandomKey()"></view>
				<view class="limit">{{drawDesc.length}}/50</view>
			</view> -->
		</view>
		
		<view class="type-box">
			<text class="title">风格选择</text>
			<view class="type-item-box">
				<view class="type-item"  v-for="(item, index) in paintStyle" @click="selectType(index)"
				:style="{ backgroundImage: `url(${item.imgUrl})` }"
				:class="curType == index? 'active' : ''">
					<view class="title">
						{{item.name}}
					</view>
				</view>
			</view>
		</view>
		
		<view class="draw-button" @click="getDraw()">
			生成图片
		</view>
		
	
	</view>
</template>

<script>
	import {getPaintStyle, getPrompt, textToImg, checkUserCanAiPaint} from '@/api/paint.js';
	export default {
		data() {
			return {
				sceneDesc: '',
				contentDesc: '',
				paintStyle:[],
				curType: 0,
				userInfo: {},
				checkData:{
					checkCanPaint: false, //true已达到最大绘画上限;false未达最高上限
				},
			}
		},
		onLoad() {
			this.getPaintStyleList();
			// this.getPrompt();
		},
		onShow() {
			this.checkLogin();
			this.checkUserCanAiPaint();
		},
		methods: {
			selectType(index) {
				this.curType = index
			},
			//获取绘画风格
			async getPaintStyleList() {
				const res = await getPaintStyle();
				if (res.data.code === 200) {
					this.paintStyle = res.data.data
					//console.log('this.paintStyle',this.paintStyle)
				}else {
					uni.showModal({
						content: '绘画风格加载失败！',
						showCancel: false
					});
				}
			},
			//判断是否达到免费AI绘画次数上限
			async checkUserCanAiPaint(){
				let that = this;
				const data = {
					userId: that.userInfo.id,
					platform: 1,
					appType: 0
				}
				const res = await checkUserCanAiPaint(data);
					//console.log('res绘画',res)
					if(res.data.code === 200){
						if(res.data.data === true){
							that.checkData.checkCanPaint = true;
						}else{
							that.checkData.checkCanPaint = false;
						}
					}else{
						return uni.showModal({
							content: '检查绘画上限失败！',
							showCancel: false
						});
					}
			},
			//判断是否登录
			checkLogin(){
				let that = this;
				that.userInfo = uni.getStorageSync('userInfo');
				console.log('userInfo：',that.userInfo)
				let token = uni.getStorageSync('token');
				if((Object.keys(that.userInfo).length==0) && (Object.keys(token).length==0)){
					console.error('尚未登录!');
					uni.showModal({
						title:'提示',
						content:'您还没有登录!点击确定跳转登录界面以体验服务',
						success(res) {
							if (res.confirm) {
								//跳转登录界面
								uni.switchTab({
									url: '/pages/userInfo/userInfo'
								});
							}else if(res.cancel){
								uni.showToast({
									title:'登录获取更好的服务体验哟!',
									duration: 2000
								});
							} 
						}
					});
				}
			},
			getDraw() {
				// if(this.userInfo.isVip != 1) {
				// 	uni.showModal({
				// 		title:'此功能仅限VIP使用',
				// 		content: '开通VIP获得更多权益',
				// 	})
				// 	return
				// }
				if(!this.contentDesc || !this.sceneDesc) {
					uni.showToast({
						title: '请输入描述~',
						duration: 2000,
						icon: 'none'
					});
					return
				}
				const that = this;
				
				//跳转详情页生成图片
				uni.showModal({
					title: '温馨提示',
					content: '任务创建完成,点击跳转生成内容！',
					success(res) {
						if(res.confirm){
							const data = {
								prompt: that.contentDesc,
								scenePrompt: that.sceneDesc,
								styleName: that.paintStyle[that.curType].styleName,
								painterId: that.userInfo.id,
								painterName: that.userInfo.username,
								appType: 0,
								platform: 1,
							}
							uni.navigateTo({
								 url: './loverPainResult?data='+JSON.stringify(data)
							})
						}
					}
				});

				
			}
		}
		
	}
</script>

<style lang="scss" scoped>
.wrap {
  padding: 20px;
  width: 100%;
  min-height: 100vh;
  background-color: #faf0f3;
  .draw-button {
  	position: fixed;
  	left: 50%;
  	bottom: 50rpx;
  	transform: translateX(-50%);
  	background: linear-gradient(#fc1f8d, #d2158a);
  	width: 400rpx;
  	height: 100rpx;
  	border-radius: 50rpx;
  	display: flex;
  	flex-direction: column;
  	justify-content: center;
  	align-items: center;
  	color: #fff;
  	font-size: 20px;
  			
  }
  
  .desc-box {
	  margin-bottom: 10px;
  	.title {
  		color: #fff;
  		font-size: 18px;
  		// margin-bottom: 20px;
		color: #fc1f8d;
		font-weight: bold;
  	}
  	.desc-input {
		border: 2px solid #fc1f8d;
  		margin-top: 5px;
  		width: 100%;
  		height: 200rpx;
  		background-color: #fff;
  		border-radius: 8px;
  		padding: 20rpx;
  		box-sizing: border-box;
  		// color: #fff;
  	}
  }
  .type-box {
	  .title {
  		color: #fff;
  		font-size: 18px;
  		// margin-bottom: 5px;
		color: #fc1f8d;
		font-weight: bold;
	   }
	  .type-item-box {
		  margin-top: 5px;
		  display: flex;
		  justify-content: space-between;
		  flex-wrap: wrap;
		  .type-item {
			  width: 160rpx;
			  height: 160rpx;
			  background-size: 100% 100%;
			  border-radius: 5px;
			  box-sizing: border-box;
			  position: relative;
			  .title {
				  position: absolute;
				  bottom: 0px;
				  width: 100%;
				  background-color: rgba(255, 255, 255, 0.7);
				  color: #fc1f8d;
				  text-align: center;
				  font-size: 14px;
			  }
			  
		  }
		  .active {
		  	border: 4px solid #fc1f8d;
		  }
	  }
  }
}
</style>