You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

431 lines
11 KiB

1 year ago
import { urlPrefix, ossAK, ossHost } from '../../config/index';
import Toast from 'tdesign-miniprogram/toast/index';
var sMD5 = require('../../utils/spark-md5.js');
Page({
/**
* 页面的初始数据
*/
data: {
frontUrl: "",
afterUrl: "",
left: '86',
styleList: [],
styleSelectIndex: 0,
example_source: '',
example_thumb: '',
input_img_count: 0,
generate_img_count: 0,
model_id: 0,
prompt_id: 0,
jd_count: 1,
model_name: '',
style: 'border: 2rpx solid rgba(220,220,220,1);border-radius: 12rpx;',
gridConfig: {
column: 1,
width: 760,
height: 90,
},
uploadStatus: true,
imageStatus: false,
generateStatus: false,
thumb_image: '',
thumb_list: [],
memoList: [],
gText: true,
gLoading: false,
promptList: [],
cWidth: 0,
cHeight: 0,
historyImgSelectIndex: -1,
historyImgList: []
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
this.loadStyleList();
this.loadHistoryList();
},
//获取风格列表
loadStyleList() {
let that = this;
wx.request({
url: urlPrefix + '/QingLong/HuiYa/wxGetConvertChildModel',
method: "POST",
header: {
'content-type': 'application/x-www-form-urlencoded'
},
data: {
token: wx.getStorageSync('token')
},
success(res) {
if (res.data.token) {
wx.setStorageSync('token', res.data.token);
}
if (res.data.success) {
that.setData({ styleList: res.data.data, afterUrl: res.data.data[0].view_before_img_url, frontUrl: res.data.data[0].view_after_img_url, prompt_id: res.data.data[0].prompt_id });
that.getStyleInfo();
}
}
});
},
//获取历史相册
loadHistoryList() {
let that = this;
wx.request({
url: urlPrefix + '/QingLong/HuiYa/wxUserImgHistory',
method: "POST",
header: {
'content-type': 'application/x-www-form-urlencoded'
},
data: {
token: wx.getStorageSync('token'),
page: 1,
limit: 6
},
success(res) {
if (res.data.token) {
wx.setStorageSync('token', res.data.token);
}
that.setData({
historyImgList: res.data.data
});
}
});
},
//获取风格的信息
getStyleInfo() {
let that = this;
wx.request({
url: urlPrefix + '/QingLong/HuiYa/wxGetModelPrompt',
method: "POST",
header: {
'content-type': 'application/x-www-form-urlencoded'
},
data: {
token: wx.getStorageSync('token'),
model_id: 49,
prompt_id: this.data.prompt_id
},
success(res) {
if (res.data.token) {
wx.setStorageSync('token', res.data.token);
}
that.setData({
jd_count: res.data.record.jd_count,
input_img_count: res.data.record.input_img_count
});
}
});
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
//上传图片
uploadAddHandle(e) {
let that = this;
let _file = e.detail.files[0];
let _fileUrl = _file.url;
9 months ago
console.log(_fileUrl)
1 year ago
let fileExtension = _file.name.split('.').pop();
let fileName = this.getGuid() + "." + fileExtension;
let key = "Images/Upload/" + fileName;
if (fileExtension == 'png' || fileExtension == 'jpg' || fileExtension == 'jpeg') {
wx.getImageInfo({
src: _fileUrl,
success(res) {
let cW = res.width;
let cH = res.height;
let cWidth = cW;
let cHeight = cH;
//如果宽或高小于384为不允许
if (cW < 384 || cH < 384) {
Toast({
context: that,
selector: '#t-toast',
message: '图片分辨率过小!',
});
return;
} else {
if (cW > cH) {
if (cH > 1024) {
cHeight = 1024;
cWidth = parseInt((cW * 1024) / cH);
}
} else if (cW < cH) {
if (cW > 1024) {
cWidth = 1024;
cHeight = parseInt((cH * 1024) / cW);
}
} else {
cWidth = 1024;
cHeight = 1024;
}
}
that.setData({ cWidth: cWidth, cHeight: cHeight });
const ctx = wx.createCanvasContext('attendCanvasId');
ctx.drawImage(_fileUrl, 0, 0, cWidth, cHeight);
ctx.draw(false, function () {
setTimeout(() => {
wx.canvasToTempFilePath({
x: 0,
y: 0,
width: cWidth,
height: cHeight,
destWidth: cWidth,
destHeight: cHeight,
canvasId: 'attendCanvasId',
success(res) {
_fileUrl = res.tempFilePath;
wx.request({
url: urlPrefix + '/QingLong/HuiYa/wxGetSignature',
method: "POST",
data: {
token: wx.getStorageSync('token'),
},
header: {
'content-type': 'application/x-www-form-urlencoded'
},
success(res) {
if (res.data.token) {
wx.setStorageSync('token', res.data.token);
}
let signature = res.data.data.signature;
let policy = res.data.data.policy;
wx.uploadFile({
url: ossHost,
filePath: _fileUrl,
name: 'file',
formData: {
OSSAccessKeyId: ossAK,
key,
policy,
signature
},
success: (res) => {
if (res.statusCode === 204) {
let uploadBtnFlg = true;
let imgArr = that.data.thumb_list.concat('http://hzkc.oss-cn-beijing.aliyuncs.com/Images/Upload/' + fileName);
if (imgArr.length == that.data.input_img_count) {
uploadBtnFlg = false;
}
that.setData({
uploadStatus: uploadBtnFlg,
imageStatus: true,
thumb_list: imgArr
});
}
}
});
}
});
}
});
}, 200);
});
}
});
} else {
Toast({
context: this,
selector: '#t-toast',
message: '只允许上传.png、.jpg、.jpep 格式!',
});
}
},
exampleHandle(e) {
let _url = this.data.example_source;
wx.previewImage({
urls: [_url]
});
},
closeIconTap(e) {
let imgArr = this.data.thumb_list;
imgArr.splice(e.target.id, 1);
this.setData({
uploadStatus: true,
thumb_list: imgArr
});
},
generateHandle(e) {
let that = this;
if (this.data.imageStatus) {
if (this.data.thumb_list.length != this.data.input_img_count) {
Toast({
context: this,
selector: '#t-toast',
message: '需上传2张照片',
});
return;
} else {
this.setData({ gText: false, gLoading: true });
wx.request({
url: urlPrefix + '/QingLong/HuiYa/wxAddTask',
method: "POST",
header: {
'content-type': 'application/x-www-form-urlencoded'
},
data: {
token: wx.getStorageSync('token'),
model_id: 49,
prompt_id: this.data.prompt_id,
source_img_url: this.data.thumb_list.join(","),
count: 1
},
success(res) {
if (res.data.token) {
wx.setStorageSync('token', res.data.token);
}
if (res.data.success) {
that.setData({ generateStatus: true });
Toast({
context: this,
duration: 3500,
theme: 'success',
selector: '#t-toast',
message: res.data.estimation_finish_time,
});
} else {
Toast({
context: this,
theme: 'fail',
selector: '#t-toast',
message: res.data.message,
});
return;
}
}
});
}
} else {
Toast({
context: this,
selector: '#t-toast',
message: '请上传照片!',
});
}
},
toast_close(e) {
if (this.data.generateStatus) {
wx.navigateBack({
delta: 1
});
}
},
historyImgHandle(e) {
this.setData({ historyImgSelectIndex: e.currentTarget.dataset.index })
if (this.data.input_img_count == 1) {
this.setData({
thumb_list: [this.data.historyImgList[e.currentTarget.dataset.index].source_img_url],
uploadStatus: false,
imageStatus: true
});
} else {
if (this.data.thumb_list.length == 2) {
this.setData({
uploadStatus: false,
imageStatus: true
});
} else {
let imgArr = this.data.thumb_list.concat(this.data.historyImgList[e.currentTarget.dataset.index].source_img_url);
this.setData({
thumb_list: imgArr,
uploadStatus: false,
imageStatus: true
});
}
}
},
ballMoveEvent(e) {
let left = e.touches[0].pageX
let rightLimit = wx.getSystemInfoSync().windowWidth - 222 //减去页面内边距
if (left < 0) {
left = 0;
}
if (left >= rightLimit) {
left = rightLimit;
}
this.setData({
left
});
},
styleClickHandle(e) {
let styleObj = this.data.styleList[e.target.id];
this.setData({ afterUrl: styleObj.view_before_img_url, frontUrl: styleObj.view_after_img_url, styleSelectIndex: e.target.id, prompt_id: styleObj.prompt_id });
this.getStyleInfo();
},
getGuid() {
var guid = ""
for (var i = 1; i <= 32; i++) {
var n = Math.floor(Math.random() * 16.0).toString(16);
guid += n;
if ((i == 8) || (i == 12) || (i == 16) || (i == 20))
guid += "-";
}
return guid;
},
});