| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736 | 
							- <template src="./viewMask.html">
 
- </template>
 
- <script>
 
- 	const util = require('@/utils/util.js').default;
 
- 	// const config = require('@/services/url$config.js');
 
- 	import touchHandle from '@/mixins/touchHandle.js';
 
- 	// import requestConfig from '@/static/lib/requestConfig';
 
- 	// const app = getApp(); //获取应用实例
 
- 	export default {
 
- 		mixins: [touchHandle],
 
- 		data: function() {
 
- 			return {
 
- 				currentIndex:0,	//当前看到的图片序号
 
- 				showAIImage: false,//是否显示当前AI结果集合 默认不显示,因为没有
 
- 				aiImagesList:[
 
- 				],//AI生成的图片列表
 
- 				
 
- 				styleList: [], //风格列表数据
 
- 				curStyleIndex: 0, //当前选中的风格序号
 
- 				aiFlag:false,
 
- 				aiImage: "",
 
- 				inputBase64Url: "",
 
- 				taskId: "", // 图生图任务ID
 
- 				img2imgTimer: null,
 
- 				imageWidth: 750,
 
- 				imageHeight: 448,
 
- 				showAIFlag:false,//继续生成状态切换标志
 
- 				checked:false,
 
- 				shottingImg:'',
 
- 				count:0,
 
- 				random:1,
 
- 				disableAble:false,
 
- 				spaceTypes: [{
 
- 						icon: "",
 
- 						title: "卧室",
 
- 						subtitle: "0个布局",
 
- 						englishRemark: "bedroom",
 
- 					},
 
- 					{
 
- 						icon: "",
 
- 						title: "客厅",
 
- 						subtitle: "0个布局",
 
- 						englishRemark: "living room",
 
- 					},
 
- 					{
 
- 						icon: "",
 
- 						title: "餐厅",
 
- 						subtitle: "0个布局",
 
- 						englishRemark: "dinning room",
 
- 					},
 
- 					{
 
- 						icon: "",
 
- 						title: "厨房",
 
- 						subtitle: "0个个布局",
 
- 						englishRemark: "kitchen",
 
- 					},
 
- 					{
 
- 						icon: "",
 
- 						title: "玄关",
 
- 						subtitle: "0个布局",
 
- 						englishRemark: "hallway",
 
- 					},
 
- 					{
 
- 						icon: "",
 
- 						title: "卫生间",
 
- 						subtitle: "0个布局",
 
- 						englishRemark: "bathroom",
 
- 					},
 
- 					{
 
- 						icon: "",
 
- 						title: "衣帽间",
 
- 						subtitle: "0个布局",
 
- 						englishRemark: "walkin closet",
 
- 					},
 
- 					{
 
- 						icon: "",
 
- 						title: "收纳",
 
- 						subtitle: "0个布局",
 
- 						englishRemark: "storage room",
 
- 					},
 
- 					{
 
- 						icon: "",
 
- 						title: "阳台",
 
- 						subtitle: "0个布局",
 
- 						englishRemark: "balcony",
 
- 					},
 
- 					{
 
- 						icon: "",
 
- 						title: "飘窗",
 
- 						subtitle: "0个布局",
 
- 						englishRemark: "bay window",
 
- 					},
 
- 					{
 
- 						icon: "",
 
- 						title: "链接空间",
 
- 						subtitle: "0个布局",
 
- 						englishRemark: "connecting space between two rooms",
 
- 					},
 
- 					{
 
- 						icon: "",
 
- 						title: "自定义",
 
- 						subtitle: "0个布局",
 
- 						englishRemark: "room",
 
- 					},
 
- 				],
 
- 				myloading:false,
 
- 				loadingMsg:'',
 
- 				screenWidth:0,
 
- 				screenHeight:0,
 
- 			}
 
- 		},
 
- 		props:{
 
- 			spaceObj: {
 
- 				type: Object,
 
- 				default: null,
 
- 			},
 
- 		},
 
- 		watch: {
 
- 			spaceObj(newVal, oldVal) {
 
- 				if (newVal == null) {
 
- 					return;
 
- 				}
 
- 				console.log("当前空间数据view-mark-watch:", newVal);
 
- 				this.getAiBeautyFamily();
 
- 				// this.curSpaceArea = parseFloat(
 
- 				// 	(newVal.spaceWidth * newVal.spaceHeight) / 10000
 
- 				// ).toFixed(2);
 
- 				// this.getOverallArrangementDetailsList();
 
- 			},
 
- 		},
 
- 		mounted() {//组件挂载时事件
 
- 			// console.warn("***mounted-nav***",this.seedItem)
 
- 			// if(this.seedItem){
 
- 			// 	this.title = this.seedItem.seedText;
 
- 			// }
 
- 			this.screenWidth = window.screen.width;
 
- 			this.screenHeight = window.screen.height;
 
- 			if(window.innerWidth && window.screen.width){
 
- 				screenWidth = Math.min(window.innerWidth,window.screen.width)
 
- 			}
 
- 			if(window.innerHeight && window.screen.height){
 
- 				screenHeight = Math.min(window.innerHeight,window.screen.height)
 
- 			}
 
- 		},
 
- 		// 页面被展示时执行
 
- 		onPageShow: function() {  
 
- 			
 
- 		},
 
- 		//页面被隐藏时执行
 
-         onPageHide: function() {
 
-         },
 
- 		beforeDestroy:function(){
 
- 			console.warn("***beforeDestroy***");//更新到页面上的数据
 
- 			this.clearInterval();
 
- 		},
 
- 		computed: {
 
- 			aiData() {
 
- 				return this.$store.state.aiData;
 
- 			},
 
- 			curHouseObj() {
 
- 				return this.$store.state.curHouseObj;
 
- 			},
 
- 		},
 
- 		methods:{
 
- 			swiperChangeImg(e){
 
- 				this.currentIndex = e.detail?e.detail.current:e;
 
- 				this.checked = this.aiImagesList[this.currentIndex].checked;
 
- 				console.warn("***swiperChangeImg***",this.checked);//更新到页面上的数据
 
- 			},
 
- 			//视角切换
 
- 			switchActor(){
 
- 				// this.$parent.clearHandle()
 
- 				this.$emit('switchActor');
 
- 				this.showAIImage = false;//隐藏AI结果集合-执行切换视角
 
- 				let index = this.$parent.currentActor.userIndex;//当前视角的序号
 
- 				let nextIndex = (index + 1) % this.$parent.actors.length;
 
- 				let param = {
 
- 					type: 'CLK', //埋点类型
 
- 					clkId: 'clk_2cmina_23080417', //点击ID
 
- 					clkName: 'changeangle_clk', //点击前往的页面名称
 
- 					clkParams: {
 
- 						locusName: "视角切换",
 
- 						type:this.$parent.actors[nextIndex].actorEum
 
- 					}
 
- 				};
 
- 				util.trackRequest(param);
 
- 			},
 
- 			showOrHideWebGl(){
 
- 				// this.$parent.clearHandle()
 
- 				this.showAIImage = !this.showAIImage;
 
- 				let param = {
 
- 					type: 'CLK', //埋点类型
 
- 					clkId: 'clk_2cmina_23080415', //点击ID
 
- 					clkName: 'contrast_clk', //点击前往的页面名称
 
- 					clkParams: {
 
- 						locusName: "对比",
 
- 					}
 
- 				};
 
- 				util.trackRequest(param);
 
- 				// setTimeout(()=> {
 
- 				// 	if(this.showAIImage==true){
 
- 				// 		this.$parent.clearHandle()
 
- 				// 	}else{
 
- 				// 		this.$parent.attendEvent()
 
- 				// 	}
 
- 				// }, 100);
 
- 			},
 
- 			//保存到相册
 
- 			save() {
 
- 			    //表示canvas正在绘制,不能进行保存
 
- 			    if (!this.aiImagesList || this.aiImagesList.length==0) {
 
- 			        return false;
 
- 			    }
 
- 				var _resultImg = this.aiImagesList[this.currentIndex].image;
 
- 			    //正在选择照片,不能生效
 
- 			    if (!_resultImg || _resultImg.length==0) {
 
- 					this.showToast("请选中图片后再试!");
 
- 			        return false;
 
- 			    }
 
- 			    var para = {
 
- 			        type: 'CLK', //埋点类型
 
- 			        clkId: 'clk_2cmina_56', //点击ID,固定
 
- 			        clkName: "share-savepic", //点击名称
 
- 			        expand: {
 
- 			            "resultImg": (_resultImg || ""),
 
- 			        },
 
- 			    }
 
- 			    util.trackRequest(para);
 
- 				if(navigator.userAgent.toLocaleLowerCase().includes('micromessenger')){
 
- 					this.$message("请长按图片保存!");
 
- 				}else{
 
- 					this.saveImageHandle(_resultImg);
 
- 				}
 
- 			},
 
- 			downloadIamge(imgsrc) {  //下载图片地址和图片名
 
- 				var fileName = "4DImage" + util.formatDate(new Date(), "yyyyMMddhhmmss") + '.jpg';
 
- 				const image = new Image();
 
- 				// 解决跨域 Canvas 污染问题
 
- 				image.setAttribute("crossOrigin", "anonymous");
 
- 				image.onload = ()=> {
 
- 					// let canvas = document.createElement("canvas");
 
- 					// canvas.width = image.width;
 
- 					// canvas.height = image.height;
 
- 					// const context = canvas.getContext("2d");
 
- 					// context.drawImage(image, 0, 0, image.width, image.height);
 
- 					// const url = canvas.toDataURL("image/jpg"); //得到图片的base64编码数据
 
- 					const a = document.createElement("a"); // 生成一个a元素
 
- 					const event = new MouseEvent("click"); // 创建一个单击事件
 
- 					a.download = fileName || "photo"; // 设置图片名称
 
- 					a.href = imgsrc; // 将生成的URL设置为a.href属性
 
- 					a.dispatchEvent(event); // 触发a的单击事件
 
- 					this.showToast("保存成功!");
 
- 				};
 
- 				image.src = imgsrc;
 
- 			},
 
- 			saveImageHandle(_resultImg){
 
- 				let param = {
 
- 					type: 'CLK', //埋点类型
 
- 					clkId: 'clk_2cmina_23080414', //点击ID
 
- 					clkName: 'download_clk', //点击前往的页面名称
 
- 					clkParams: {
 
- 						locusName: "下载",
 
- 						img:_resultImg
 
- 					}
 
- 				};
 
- 				util.trackRequest(param);
 
- 				this.downloadIamge(_resultImg);
 
- 			},
 
- 		
 
- 			//选项变更
 
- 			changeAIImg() {
 
- 				// let lastPage = getCurrentPages()[getCurrentPages().length - 2] ? getCurrentPages()[getCurrentPages().length - 2].$vm : null;
 
- 				this.checked = !this.checked;//变更选项
 
- 				this.aiImagesList[this.currentIndex].checked = this.checked;
 
- 				console.warn("***changeAIImg***",this.checked,this.aiData)
 
- 				if(this.aiData){//给上一个页面回传生成的数据
 
- 					let space = this.aiData.find(it=>{
 
- 						return it.spaceId == this.spaceObj.spaceId
 
- 					})
 
- 					if(space){
 
- 						space.aiImagesList[this.currentIndex].checked = this.checked;
 
- 					}
 
- 				}
 
- 				if(this.checked){
 
- 					let param = {
 
- 						type: 'CLK', //埋点类型
 
- 						clkId: 'clk_2cmina_23080418', //点击ID
 
- 						clkName: 'chooseprogramme_clk', //点击前往的页面名称
 
- 						clkParams: {
 
- 							locusName: "选定风格/视角",
 
- 							style:this.styleList[this.curStyleIndex].styleName,
 
- 							img:this.aiImagesList[this.currentIndex].image,
 
- 						}
 
- 					};
 
- 					util.trackRequest(param);
 
- 				}
 
- 			},
 
- 			rightScroll(){//右滑
 
- 				if(this.currentIndex <= (this.aiImagesList.length - 1) && this.currentIndex > 0){
 
- 					// this.currentIndex --;
 
- 					this.$refs.carousel.prev();
 
- 				}
 
- 			},
 
- 			leftScroll(){//继续生成
 
- 				if(this.currentIndex != this.aiImagesList.length - 1){
 
- 					if(this.currentIndex<this.aiImagesList.length - 1){
 
- 						// this.currentIndex ++;
 
- 						this.$refs.carousel.next();
 
- 					}
 
- 					return false;
 
- 				}
 
- 				console.log("***leftScroll***",this.currentIndex,this.aiImagesList.length)
 
- 				this.aiSubmit(2);//继续生成下一张
 
- 			},
 
- 			//返回上一页
 
- 			goback(){
 
- 				this.$router.go(-1);
 
- 			},
 
- 			mynavigateFuc(e) {
 
- 				if (e) {
 
- 					// this.$parent.clearHandle();
 
- 					let param = {
 
- 						type: 'CLK', //埋点类型
 
- 						clkId: 'clk_2cmina_23080408', //点击ID
 
- 						clkName: 'WeCom_clk', //点击前往的页面名称
 
- 						clkParams: {
 
- 							locusName: "联系定制",
 
- 						}
 
- 					};
 
- 					util.trackRequest(param);
 
- 					if(window.__wxjs_environment === 'miniprogram'){
 
- 						wx.miniProgram.navigateTo({url: '/pages/transfer/transfer?event=openCustomerServiceChat&houseId='+this.$store.state.houseId})
 
- 					}else{
 
- 						this.$message.warning("敬请期待");
 
- 					}
 
- 					// setTimeout(()=> {
 
- 					// 	if(this.showAIImage==true){
 
- 					// 		this.$parent.clearHandle()
 
- 					// 	}else{
 
- 					// 		this.$parent.attendEvent()
 
- 					// 	}
 
- 					// }, 100);
 
- 				}
 
- 			},
 
- 			catchTapEvent:function(){
 
- 				return false;
 
- 			},
 
- 			//获取AI风格列表
 
- 			async getAiBeautyFamily() {
 
- 				// const spaceName = this.spaceTypes[this.spaceObj.spaceType - 1].title;
 
- 				let res = await requestConfig("getHardboundEffects", {
 
- 					"houseId": this.$route.query.houseId,
 
- 					"spaceType": this.spaceObj.spaceType,
 
- 					"spaceName": this.spaceObj.spaceName,
 
- 				});
 
- 				this.styleList = [];
 
- 				if (res.success) {
 
- 					let list = res.list;
 
- 					this.styleList = list;
 
- 				}
 
- 				if(!this.styleList || this.styleList.length==0){
 
- 					this.disableAble = true;//不能点击-没有风格
 
- 					let unit = this.screenWidth / 750;//单位rpm 对应 px 的值
 
- 					this.$parent.canvasHeight = this.screenHeight - (208 * unit);
 
- 					this.$parent.camera.aspect = this.screenWidth / this.$parent.canvasHeight;
 
- 					this.$parent.camera.updateProjectionMatrix();
 
- 					this.$parent.renderer.setSize(this.screenWidth, this.$parent.canvasHeight);
 
- 				}else{
 
- 					this.disableAble = false;//可以点击
 
- 				}
 
- 			},
 
- 			clearInterval() {
 
- 				if (this.img2imgTimer) {
 
- 					clearInterval(this.img2imgTimer);
 
- 					this.img2imgTimer = null;
 
- 				}
 
- 				this.random = 1;
 
- 				this.myloading = false;
 
- 			},
 
- 			//风格选择
 
- 			selectStyle(idx){
 
- 				if(this.curStyleIndex == idx){
 
- 					return false
 
- 				}
 
- 				this.curStyleIndex = idx;
 
- 				let param = {
 
- 					type: 'CLK', //埋点类型
 
- 					clkId: 'clk_2cmina_23080416', //点击ID
 
- 					clkName: 'AIstyle_ret_clk', //点击前往的页面名称
 
- 					clkParams: {
 
- 						locusName: "AI 风格",
 
- 						type:this.styleList[this.curStyleIndex].styleName
 
- 					}
 
- 				};
 
- 				util.trackRequest(param);
 
- 			},
 
- 			// AI渲染
 
- 			async aiSubmit(type) {
 
- 				if(!this.styleList || this.styleList.length==0 || this.curStyleIndex==-1
 
- 				|| !this.styleList[this.curStyleIndex].prompt || !this.styleList[this.curStyleIndex].negativePrompt){
 
- 					return false;
 
- 				}
 
- 				// 防止连续点击处理
 
- 				if (this.aiFlag) {
 
- 					return
 
- 				}
 
- 				this.aiFlag = true;
 
- 				if (this.aiImage == "" || !this.aiImage) {
 
- 					this.aiImage = ""; // https://dm.static.elab-plus.com/CE4/backImg.png
 
- 				}
 
- 				this.aiImage = "";
 
- 			
 
- 				this.clearInterval();
 
- 				if(!this.showAIImage){
 
- 					this.myloading = true;
 
- 					this.loadingMsg = "设计中...";
 
- 					// this.$store.state.loading = true;
 
- 					// this.$store.state.loadingMsg="设计中...";
 
- 				}
 
- 				
 
- 				// this.inputBase64Url = await this.shottingAction(2);//开始截图-返回的是base64的数据
 
- 				// this.startServer();
 
- 				// let base64 = await this.$parent.shottingAction(2);//开始截图-返回的是base64
 
- 				let shottingImg = await this.$parent.shottingAction();//开始截图-返回的是图片地址
 
- 				if(!shottingImg){
 
- 					this.showToast("渲染失败,请重试");
 
- 					return false;
 
- 				}
 
- 				// ?x-oss-process=image/auto-orient,1/quality,Q_46/format,jpg //阿里OSS
 
- 				// "?imageMogr2/auto-orient/format/webp/blur/1x0/quality/75";//七牛云压缩图片
 
- 				shottingImg += "?x-oss-process=image/auto-orient,1/quality,Q_46/format,jpg";//压缩图片
 
- 				this.shottingImg = shottingImg;
 
- 				this.changeImg2Base64(this.shottingImg, false);
 
- 				console.warn("***shottingImg***",this.shottingImg)
 
- 				if(type==1){
 
- 					let param = {
 
- 						type: 'CLK', //埋点类型
 
- 						clkId: 'clk_2cmina_23080413', //点击ID
 
- 						clkName: 'AIcreate_clk', //点击前往的页面名称
 
- 						clkParams: {
 
- 							locusName: "AI生成",
 
- 							userparamter:{
 
- 								shottingImg:this.shottingImg,
 
- 								style:this.styleList[this.curStyleIndex].styleName
 
- 							}
 
- 						}
 
- 					};
 
- 					util.trackRequest(param);
 
- 				}else{
 
- 					let param = {
 
- 						type: 'CLK', //埋点类型
 
- 						clkId: 'clk_2cmina_23080419', //点击ID
 
- 						clkName: 'continueAIcreate_clk', //点击前往的页面名称
 
- 						clkParams: {
 
- 							locusName: "继续生成",
 
- 							userparamter:{
 
- 								shottingImg:this.shottingImg,
 
- 								style:this.styleList[this.curStyleIndex].styleName
 
- 							}
 
- 						}
 
- 					};
 
- 					util.trackRequest(param);
 
- 				}
 
- 			},
 
- 			image2Base64(imgUrl) {//导入的图片路径
 
- 				var toBase64= new Promise(function(resolve, reject){
 
- 				    window.URL = window.URL || window.webkitURL;
 
- 				    var xhr = new XMLHttpRequest();
 
- 				    xhr.open("get", imgUrl, true);
 
- 				    // 至关重要
 
- 				    xhr.responseType = "blob";//文件流
 
- 				    xhr.onload = function (res) {
 
- 				        if (res.currentTarget.status == 200) {
 
- 				            //得到一个blob对象
 
- 				            var blob = res.currentTarget.response;
 
- 				            // 至关重要
 
- 				            let oFileReader = new FileReader();
 
- 				            oFileReader.onloadend = function (e) {
 
- 					            let base64 = e.target.result;//base64
 
- 					            resolve(base64)
 
- 				            };
 
- 				            oFileReader.readAsDataURL(blob);
 
- 				        }
 
- 			        }
 
- 				    xhr.send();
 
- 			    });
 
- 				return toBase64;
 
- 			},
 
- 			changeImg2Base64(url, isRepeat) {
 
- 				var self = this;
 
- 				if(isRepeat && self.inputBase64Url){//重复使用
 
- 					self.startServer();
 
- 				}else{
 
- 					// self.inputBase64Url = Base64Url;
 
- 					// console.log("生成inputBase64Url");
 
- 					this.image2Base64(url).then(base64 => {
 
- 						self.inputBase64Url = base64;
 
- 						self.startServer();
 
- 					})
 
- 					// uni.request({
 
- 					// 	url: url,
 
- 					// 	method: "GET",
 
- 					// 	responseType: "arraybuffer",
 
- 					// 	success: async (res) => {
 
- 					// 		let base64 = wx.arrayBufferToBase64(res.data);
 
- 					// 		let Base64Url = "data:image/jpeg;base64," + base64;
 
- 					// 		// console.log('base64:', Base64Url);
 
- 					// 		self.inputBase64Url = Base64Url;
 
- 					// 		console.log("生成inputBase64Url");
 
- 					// 		self.startServer();
 
- 					// 	},
 
- 					// });
 
- 				}
 
- 			},
 
- 			//开始图生图流程
 
- 			async startServer() {
 
- 				if(!this.styleList || this.curStyleIndex < 0 || !this.styleList[this.curStyleIndex].imgUrl){
 
- 					return false
 
- 				}
 
- 				let imgUrl = this.styleList[this.curStyleIndex].imgUrl;
 
- 				// let base64Url = await this.image2Base64(imgUrl);
 
- 				let data = {
 
- 					"configType": "AI_Biography",
 
- 					"keyvalue": "ControlNet_IpAdapter",
 
- 					"model": "ip-adapter_xl [4209e9f7]",
 
- 					"cpu": "ip-adapter_clip_sdxl",
 
- 					"session_hash": Date.now(),
 
- 					"weight": 1.5,
 
- 					"number1": -1,
 
- 					"number2": -1,
 
- 					"number3": 0,
 
- 					"number4": 1,
 
- 					// "imageBase64": base64Url,
 
- 					"imageUrl":imgUrl,
 
- 				}
 
- 				let res1 = await requestConfig("AIuploadImgControlNet", data);
 
- 				if(!res1 || !res1.single){
 
- 					this.showToast("渲染失败,请重试");
 
- 					this.aiFlag = false;
 
- 					this.aiImage = "";
 
- 					return false;
 
- 				}
 
- 				let session_hash = data.session_hash;
 
- 				data.model = "sai_xl_canny_256lora [566f20af]";
 
- 				data.keyvalue =  "ControlNet_Canny";
 
- 				data.cpu =  "canny";
 
- 				data.weight =  0.8;
 
- 				data.number1 =  100;
 
- 				data.number2 =  200;
 
- 				data.number3 =  0;
 
- 				data.number4 =  1;
 
- 				data.imageBase64 = this.inputBase64Url;
 
- 				
 
- 				let res2 = await requestConfig("AIuploadImgControlNet", data);
 
- 				if(!res2 || !res2.success){
 
- 					this.showToast("渲染失败,请重试");
 
- 					this.aiFlag = false;
 
- 					this.aiImage = "";
 
- 					return false;
 
- 				}
 
- 				data.model = "t2iadapter_seg_sd14v1 [6387afb5]";
 
- 				data.keyvalue =  "ControlNet_Seg";
 
- 				data.cpu =  "seg_ofade20k";
 
- 				data.weight =  0.8;
 
- 				data.number1 =  -1;
 
- 				data.number2 =  -1;
 
- 				data.number3 =  0;
 
- 				data.number4 =  1;
 
- 				data.imageBase64 = this.inputBase64Url;
 
- 				let res3 = await requestConfig("AIuploadImgControlNet", data);
 
- 				if(!res3 || !res3.success){
 
- 					this.showToast("渲染失败,请重试");
 
- 					this.aiFlag = false;
 
- 					this.aiImage = "";
 
- 					return false;
 
- 				}
 
- 				const prompt = this.styleList[this.curStyleIndex].prompt;
 
- 				const noPromot = this.styleList[this.curStyleIndex].negativePrompt;
 
- 				let unit = 768 / this.screenWidth;
 
- 				this.imageWidth = parseInt((this.screenWidth * unit).toFixed());
 
- 				this.imageHeight = parseInt((this.$parent.canvasHeight * unit).toFixed());
 
- 				var parmas = {
 
- 					negativePrompt: noPromot,
 
- 					prompt: prompt,
 
- 					"batchSize": 1,
 
- 					brandId: $config.brandId,
 
- 					height: this.imageHeight,
 
- 					width: this.imageWidth,
 
- 					"moduleType": "AI_Biography",
 
- 					"keyword":"img_2_img",
 
- 					"steps":20,
 
- 					"sampler":"DDIM",
 
- 					"controlNetSessionHash":session_hash,
 
- 					"cfgScale":12,
 
- 					"denoising":0.9
 
- 				};
 
- 				let res = await requestConfig("generateTaskImgToImgForAliyun", parmas);
 
- 				console.log("图生图结果:", res);
 
- 				if(this.$parent.pvCurPageName!="room_show"){//说明用户切换页面了
 
- 					console.warn("***用户已经退出页面***")
 
- 					return false;
 
- 				}
 
- 				let that = this;
 
- 				if (res.success && res.single) {
 
- 					if(typeof(res.single)=="object"){
 
- 					// if(true){
 
- 						let cot = res.single.queueCount || 1;
 
- 						this.showToast("正有"+cot+"人排队,预计等待"+cot*25+"秒",10000);
 
- 						this.aiImage = "";
 
- 						this.aiFlag = false;
 
- 						this.clearInterval();
 
- 						return false;
 
- 					}
 
- 					this.taskId = res.single;
 
- 					if (!this.img2imgTimer) {
 
- 						this.count = 0;
 
- 						this.random = 1;
 
- 						this.img2imgTimer = setInterval(() => {
 
- 							this.count ++;
 
- 							this.getResultForImgToImg();
 
- 						}, 1000);
 
- 					}
 
- 				}else{
 
- 					this.aiFlag = false;
 
- 					this.aiImage = "";
 
- 					this.showToast("渲染失败,请重试")
 
- 				}
 
- 			},
 
- 			// 轮询获取图片结果
 
- 			async getResultForImgToImg() {
 
- 				var parmas = {
 
- 					id: this.taskId,
 
- 				};
 
- 				let res = await requestConfig("generateProcess", parmas);
 
- 				// let lastPage = getCurrentPages()[getCurrentPages().length - 2] ? getCurrentPages()[getCurrentPages().length - 2].$vm : null;
 
- 				// console.warn("图生图轮询结果:", res);
 
- 				if (res.success && res.single) {
 
- 					if (res.single.inQueue == false) {
 
- 						if (res.single.urls) {
 
- 							// uni.hideLoading();
 
- 							this.aiFlag = false;
 
- 							this.random = 100;
 
- 							console.warn("图生图轮询结束: ", res);
 
- 							this.aiImage = res.single.urls[0];
 
- 							this.showAIFlag = true;
 
- 							let newImage = this.aiImage;
 
- 							let aiStyleName = this.styleList[this.curStyleIndex].styleName;
 
- 							let _data = {
 
- 								image:newImage,
 
- 								checked:false,
 
- 								list:[newImage],
 
- 							}
 
- 							this.aiImagesList.push(_data);
 
- 							this.showAIImage = true;//显示AI结果集合-因为生成了AI图片
 
- 							if(this.$parent && typeof(this.$parent.clearHandle)=="function" ){
 
- 								this.$parent.clearHandle();
 
- 							}
 
- 							let cpAiData = JSON.parse(JSON.stringify(this.aiData)) || []
 
- 							if(cpAiData){//给上一个页面回传生成的数据
 
- 								let space = cpAiData.find(it=>{
 
- 									return it.houseFloor == this.curHouseObj.houseFloor && it.spaceId == this.spaceObj.spaceId
 
- 								})
 
- 								if(space){
 
- 									let data ={
 
- 										aiStyleName:aiStyleName,
 
- 										image:newImage,
 
- 										checked:false,
 
- 									}
 
- 									space.aiImagesList.push(data);
 
- 								}else{//不存在则构建数据
 
- 									let data = {
 
- 										houseFloor:this.curHouseObj.houseFloor,//当前的楼层
 
- 										spaceId:this.spaceObj.spaceId,
 
- 										aiImagesList:[
 
- 											{
 
- 												aiStyleName:aiStyleName,
 
- 												image:newImage,
 
- 												checked:false,
 
- 											}
 
- 										]
 
- 									}
 
- 									cpAiData.push(data)
 
- 								}
 
- 								this.$store.dispatch('setAiData', cpAiData)
 
- 							}
 
- 							this.clearInterval();
 
- 							if(this.aiImagesList.length>1){
 
- 								setTimeout(()=>{
 
- 									// this.$refs.carousel.next();
 
- 									this.$refs.carousel.setActiveItem(this.aiImagesList.length-1);//切换到最后一张
 
- 								}, 1000);
 
- 							}
 
- 						} else {
 
- 							if (!res.success) {
 
- 								this.showToast("渲染失败,请重试")
 
- 								this.aiFlag = false;
 
- 								this.aiImage = "";
 
- 								this.clearInterval();
 
- 							}else {
 
- 								this.random = parseInt(this.count * 2);
 
- 								if(this.random>=100){
 
- 									this.random = 99;
 
- 								}
 
- 								if(!this.showAIImage){
 
- 									// this.$store.state.loadingMsg='生成中…' + this.random + '%';
 
- 									this.loadingMsg = '生成中…' + this.random + '%';
 
- 								}else{
 
- 								}
 
- 							}
 
- 						}
 
- 					} else {
 
- 						let cot = res.single.queueCount || 1;
 
- 						this.showToast("正有"+cot+"人排队,预计等待"+cot*25+"秒",10000);
 
- 						this.aiImage = "";
 
- 						this.aiFlag = false;
 
- 						this.clearInterval();
 
- 					}
 
- 				}
 
- 			},
 
- 			showToast(title,time=3000){
 
- 				this.$store.state.loading = true;
 
- 				this.$store.state.loadingMsg = title || "";
 
- 				setTimeout(()=>{
 
- 					this.$store.state.loading = false;
 
- 				}, time);
 
- 			}
 
- 		}
 
- 	}
 
- </script>
 
- <style lang="scss" scoped>
 
-     @import "./viewMask.scss";
 
- </style>
 
- <style lang="css" scoped>
 
- 	/* @import "@/common/css/common.css"; */
 
- </style>
 
 
  |