Prechádzať zdrojové kódy

完成创作 生成排队 部分

XSXS 8 mesiacov pred
rodič
commit
65ef7f837a

+ 84 - 47
common/util.js

@@ -1,52 +1,89 @@
 function friendlyDate(timestamp) {
-	var formats = {
-		'year': '%n% 年前',
-		'month': '%n% 月前',
-		'day': '%n% 天前',
-		'hour': '%n% 小时前',
-		'minute': '%n% 分钟前',
-		'second': '%n% 秒前',
-	};
+    var formats = {
+        'year': '%n% 年前',
+        'month': '%n% 月前',
+        'day': '%n% 天前',
+        'hour': '%n% 小时前',
+        'minute': '%n% 分钟前',
+        'second': '%n% 秒前',
+    };
 
-	var now = Date.now();
-	var seconds = Math.floor((now - timestamp) / 1000);
-	var minutes = Math.floor(seconds / 60);
-	var hours = Math.floor(minutes / 60);
-	var days = Math.floor(hours / 24);
-	var months = Math.floor(days / 30);
-	var years = Math.floor(months / 12);
+    var now = Date.now();
+    var seconds = Math.floor((now - timestamp) / 1000);
+    var minutes = Math.floor(seconds / 60);
+    var hours = Math.floor(minutes / 60);
+    var days = Math.floor(hours / 24);
+    var months = Math.floor(days / 30);
+    var years = Math.floor(months / 12);
 
-	var diffType = '';
-	var diffValue = 0;
-	if (years > 0) {
-		diffType = 'year';
-		diffValue = years;
-	} else {
-		if (months > 0) {
-			diffType = 'month';
-			diffValue = months;
-		} else {
-			if (days > 0) {
-				diffType = 'day';
-				diffValue = days;
-			} else {
-				if (hours > 0) {
-					diffType = 'hour';
-					diffValue = hours;
-				} else {
-					if (minutes > 0) {
-						diffType = 'minute';
-						diffValue = minutes;
-					} else {
-						diffType = 'second';
-						diffValue = seconds === 0 ? (seconds = 1) : seconds;
-					}
-				}
-			}
-		}
-	}
-	return formats[diffType].replace('%n%', diffValue);
+    var diffType = '';
+    var diffValue = 0;
+    if (years > 0) {
+        diffType = 'year';
+        diffValue = years;
+    } else {
+        if (months > 0) {
+            diffType = 'month';
+            diffValue = months;
+        } else {
+            if (days > 0) {
+                diffType = 'day';
+                diffValue = days;
+            } else {
+                if (hours > 0) {
+                    diffType = 'hour';
+                    diffValue = hours;
+                } else {
+                    if (minutes > 0) {
+                        diffType = 'minute';
+                        diffValue = minutes;
+                    } else {
+                        diffType = 'second';
+                        diffValue = seconds === 0 ? (seconds = 1) : seconds;
+                    }
+                }
+            }
+        }
+    }
+    return formats[diffType].replace('%n%', diffValue);
 }
-export {
-	friendlyDate
+
+function getStorage(key) {
+  //#ifdef H5
+    const value = localStorage.getItem(key);
+    return value !== null && value !== undefined ? value : undefined;
+  //#endif
+  //#ifndef H5
+    const value = uni.getStorageSync(key);
+    return value !== null && value !== undefined ? value : undefined;
+  //#endif
 }
+
+ 
+function setStorage(key, value) {
+  //#ifdef H5
+    localStorage.setItem(key, value);
+  //#endif
+  //#ifndef H5
+    return uni.setStorageSync(key, value);
+  //#endif
+}
+
+ 
+
+function removeStorage(key) {
+  //#ifdef H5
+    localStorage.removeItem(key);
+  //#endif
+  //#ifndef H5
+    return uni.removeStorageSync(key);
+  //#endif
+}
+ 
+
+export {
+    friendlyDate,
+    getStorage,
+    setStorage,
+    removeStorage
+}

+ 51 - 0
node_modules/picocolors/types.d.ts

@@ -0,0 +1,51 @@
+export type Formatter = (input: string | number | null | undefined) => string
+
+export interface Colors {
+	isColorSupported: boolean
+
+	reset: Formatter
+	bold: Formatter
+	dim: Formatter
+	italic: Formatter
+	underline: Formatter
+	inverse: Formatter
+	hidden: Formatter
+	strikethrough: Formatter
+
+	black: Formatter
+	red: Formatter
+	green: Formatter
+	yellow: Formatter
+	blue: Formatter
+	magenta: Formatter
+	cyan: Formatter
+	white: Formatter
+	gray: Formatter
+
+	bgBlack: Formatter
+	bgRed: Formatter
+	bgGreen: Formatter
+	bgYellow: Formatter
+	bgBlue: Formatter
+	bgMagenta: Formatter
+	bgCyan: Formatter
+	bgWhite: Formatter
+
+	blackBright: Formatter
+	redBright: Formatter
+	greenBright: Formatter
+	yellowBright: Formatter
+	blueBright: Formatter
+	magentaBright: Formatter
+	cyanBright: Formatter
+	whiteBright: Formatter
+
+	bgBlackBright: Formatter
+	bgRedBright: Formatter
+	bgGreenBright: Formatter
+	bgYellowBright: Formatter
+	bgBlueBright: Formatter
+	bgMagentaBright: Formatter
+	bgCyanBright: Formatter
+	bgWhiteBright: Formatter
+}

+ 9 - 8
node_modules/zhouWei-request/js_sdk/requestConfig.js

@@ -27,7 +27,7 @@ let $http = new request({
 });
 
 // 添加获取七牛云token的方法
-$http.getQnToken = function(callback){
+$http.getQnToken = function(callback) {
 	//该地址需要开发者自行配置(每个后台的接口风格都不一样)
 	$http.get("api/kemean/aid/qn_upload").then(data => {
 		/*
@@ -46,7 +46,7 @@ $http.getQnToken = function(callback){
 	});
 }
 // 添加获取阿里云token的方法
-$http.getAliToken = function(callback){
+$http.getAliToken = function(callback) {
 	//该地址需要开发者自行配置(每个后台的接口风格都不一样)
 	$http.get("api/open/v1/ali_oss_upload").then(data => {
 		/*
@@ -90,7 +90,7 @@ $http.requestStart = function(options) {
 		// 文件最大字节: options.maxSize 可以在调用方法的时候加入参数
 		let maxSize = options.maxSize || '';
 		for (let item of options.files) {
-			if(item.fileType == 'image'){
+			if (item.fileType == 'image') {
 				if (maxSize && item.size > maxSize) {
 					setTimeout(() => {
 						uni.showToast({
@@ -100,7 +100,7 @@ $http.requestStart = function(options) {
 					}, 500);
 					return false;
 				}
-			} else if(item.fileType == "video"){
+			} else if (item.fileType == "video") {
 				if (item.duration < 3) {
 					setTimeout(() => {
 						uni.showToast({
@@ -141,7 +141,7 @@ $http.dataFactory = async function(res) {
 	});
 	if (res.response.statusCode && res.response.statusCode == 200) {
 		let httpData = res.response.data;
-		if (typeof (httpData) == "string") {
+		if (typeof(httpData) == "string") {
 			httpData = JSON.parse(httpData);
 		}
 		/*********以下只是模板(及共参考),需要开发者根据各自的接口返回类型修改*********/
@@ -159,7 +159,7 @@ $http.dataFactory = async function(res) {
 					content: content,
 					confirmText: "去登录",
 					cancelText: "再逛会",
-					success: function (res) {
+					success: function(res) {
 						loginPopupNum--;
 						if (res.confirm) {
 							uni.navigateTo({
@@ -200,7 +200,8 @@ $http.dataFactory = async function(res) {
 	}
 };
 // 错误回调
-$http.requestError = function (e) {
+$http.requestError = function(e) {
+	console.log('请求错误信息: ', e);
 	// e.statusCode === 0 是参数效验错误抛出的
 	if (e.statusCode === 0) {
 		throw e;
@@ -211,4 +212,4 @@ $http.requestError = function (e) {
 		});
 	}
 }
-export default $http;
+export default $http;

+ 2 - 2
pages/AboutUs/xieyi.vue

@@ -57,10 +57,10 @@
 			}
 		},
 		onLoad() {
-			this.getAppVersion()
+			// this.getAppVersion()
 		},
 		onShow() {
-			this.loadData();
+			// this.loadData();
 		},
 		methods: {
 			onBack() {},

+ 4 - 2
pages/index/index.scss

@@ -282,8 +282,10 @@
 	}
 
 	.blankHeight {
-		width: 500rpx;
-		height: 500rpx;
+		// width: 500rpx;
+		// height: 500rpx;
+		width: 100%;
+		height: 144rpx;
 	}
 	.benner-box{
 		box-sizing: border-box;

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 574 - 550
pages/index/index.vue


+ 3 - 0
pages/make/make.scss

@@ -1,4 +1,7 @@
 
+	.container{
+		padding-bottom: 144rpx;
+	}
 	.swiper {
 		height: 100%;
 	}

+ 659 - 575
pages/makedetail/makeDetail.scss

@@ -1,603 +1,687 @@
 // 导入FontAwesome
-@import url('https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css');
+@import url("https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css");
 
 page {
-	background-color: #ffffff;
-	width: 100%;
-	color: #333;
-	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
+  background: #f2f6f2;
+  width: 100%;
+  color: #333;
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica,
+    Arial, sans-serif;
 }
 .page {
-	background-color: #ffffff;
-	width: 100%;
+  background: #f2f6f2;
+  width: 100%;
 }
 
 /* 自定义导航栏样式 */
 .custom-navbar {
-	display: flex;
-	flex-direction: row;
-	align-items: center;
-	justify-content: space-between;
-	width: 100%;
-	height: 90rpx;
-	padding: 0 20rpx;
-	padding-top: var(--status-bar-height);
-	background-color: #ffffff;
-	position: sticky;
-	top: 0;
-	z-index: 100;
-	
-	.navbar-left {
-		width: 80rpx;
-		height: 80rpx;
-		display: flex;
-		align-items: center;
-		justify-content: center;
-		
-		.fa-angle-left {
-			font-size: 48rpx;
-			color: #333;
-		}
-	}
-	
-	.navbar-center {
-		flex: 1;
-		display: flex;
-		justify-content: flex-start;
-		align-items: center;
-		margin-left: 10rpx;
-		
-		.navbar-title {
-			display: flex;
-			align-items: center;
-			
-			.navbar-avatar {
-				width: 50rpx;
-				height: 50rpx;
-				border-radius: 25rpx;
-				margin-right: 10rpx;
-			}
-			
-			.navbar-text {
-				font-size: 32rpx;
-				font-weight: bold;
-				color: #333;
-				margin-right: 10rpx;
-			}
-			
-			.navbar-badge {
-				font-size: 22rpx;
-				color: #f0ad4e;
-				background-color: rgba(240, 173, 78, 0.1);
-				padding: 2rpx 10rpx;
-				border-radius: 10rpx;
-				border: 1rpx solid #f0ad4e;
-			}
-		}
-	}
-	
-	.navbar-right {
-		width: 80rpx;
-		height: 80rpx;
-		display: flex;
-		justify-content: center;
-		align-items: center;
-		
-		.fa-ellipsis-h {
-			font-size: 36rpx;
-			color: #333;
-		}
-	}
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  justify-content: space-between;
+  width: 100%;
+  height: 90rpx;
+  padding: 0 20rpx;
+  padding-top: var(--status-bar-height);
+  background-color: #ffffff;
+  position: sticky;
+  top: 0;
+  z-index: 100;
+
+  .navbar-left {
+    width: 80rpx;
+    height: 80rpx;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+
+    .fa-angle-left {
+      font-size: 48rpx;
+      color: #333;
+    }
+  }
+
+  .navbar-center {
+    flex: 1;
+    display: flex;
+    justify-content: flex-start;
+    align-items: center;
+    margin-left: 10rpx;
+
+    .navbar-title {
+      display: flex;
+      align-items: center;
+
+      .navbar-avatar {
+        width: 50rpx;
+        height: 50rpx;
+        border-radius: 25rpx;
+        margin-right: 10rpx;
+      }
+
+      .navbar-text {
+        font-size: 32rpx;
+        font-weight: bold;
+        color: #333;
+        margin-right: 10rpx;
+      }
+
+      .navbar-badge {
+        font-size: 22rpx;
+        color: #f0ad4e;
+        background-color: rgba(240, 173, 78, 0.1);
+        padding: 2rpx 10rpx;
+        border-radius: 10rpx;
+        border: 1rpx solid #f0ad4e;
+      }
+    }
+  }
+
+  .navbar-right {
+    width: 80rpx;
+    height: 80rpx;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+
+    .fa-ellipsis-h {
+      font-size: 36rpx;
+      color: #333;
+    }
+  }
 }
 
 .header {
-	display: flex;
-	flex-direction: row;
-	justify-content: flex-start;
-	align-items: center;
-	width: 750rpx;height: 320rpx;
-	padding-top: calc(var(--status-bar-height) + 0rpx);
-	.left {
-		display: flex;flex-direction: row;width:200rpx;height:120rpx;
-		justify-content: center;
-		padding-left:50rpx;
-		image {
-			width:124rpx;height:40rpx;
-		}
-	}
+  display: flex;
+  flex-direction: row;
+  justify-content: flex-start;
+  align-items: center;
+  width: 750rpx;
+  height: 320rpx;
+  padding-top: calc(var(--status-bar-height) + 0rpx);
+  .left {
+    display: flex;
+    flex-direction: row;
+    width: 200rpx;
+    height: 120rpx;
+    justify-content: center;
+    padding-left: 50rpx;
+    image {
+      width: 124rpx;
+      height: 40rpx;
+    }
+  }
 }
 .thread {
-	height: 20rpx;
+  height: 20rpx;
 }
 .thread2 {
-	height: 60rpx;
+  height: 60rpx;
 }
 .topUser {
-	width:750rpx;
-	height:750rpx;
-	position: relative;
-	overflow: hidden;
-	.home_image{
-		width: 100%;
-		height: 100%;
-		transition: transform 0.3s ease;
-		
-		&:active {
-			transform: scale(1.05);
-		}
-	}
-	.image-indicator {
-		position: absolute;
-		top: 30rpx;
-		right: 30rpx;
-		background-color: rgba(0, 0, 0, 0.5);
-		color: #fff;
-		padding: 8rpx 16rpx;
-		border-radius: 20rpx;
-		font-size: 24rpx;
-	}
-	.list {
-		position: absolute;
-		bottom: 20rpx;
-		width:100%;
-		display: flex;
-		flex-direction: row;
-		justify-content: center;
-		align-items: flex-end;
-		padding: 0 20rpx;
-		overflow-x: auto;
-		
-		&::-webkit-scrollbar {
-			display: none;
-		}
-		
-		.img {
-			width:84rpx;height:84rpx;margin: 0 10rpx;
-			transition: all 0.3s ease;
-			image {
-				width:84rpx;height:84rpx;border-radius: 16rpx;border: solid 4rpx #fff;
-				box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.2);
-			}
-		}
-		.active {
-			width:136rpx;height:136rpx;
-			image {
-				width:136rpx;height:136rpx;border-radius: 24rpx;border: solid 4rpx #fff;
-				box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.3);
-			}
-		}
-	}
+  width: 750rpx;
+  height: 750rpx;
+  position: relative;
+  overflow: hidden;
+  .home_image {
+    width: 100%;
+    height: 100%;
+    transition: transform 0.3s ease;
+
+    &:active {
+      transform: scale(1.05);
+    }
+  }
+  .image-indicator {
+    position: absolute;
+    top: 30rpx;
+    right: 30rpx;
+    background-color: rgba(0, 0, 0, 0.5);
+    color: #fff;
+    padding: 8rpx 16rpx;
+    border-radius: 20rpx;
+    font-size: 24rpx;
+  }
+  .list {
+    position: absolute;
+    bottom: 20rpx;
+    width: 100%;
+    display: flex;
+    flex-direction: row;
+    justify-content: center;
+    align-items: flex-end;
+    padding: 0 20rpx;
+    overflow-x: auto;
+
+    &::-webkit-scrollbar {
+      display: none;
+    }
+
+    .img {
+      width: 84rpx;
+      height: 84rpx;
+      margin: 0 10rpx;
+      transition: all 0.3s ease;
+      image {
+        width: 84rpx;
+        height: 84rpx;
+        border-radius: 16rpx;
+        border: solid 4rpx #fff;
+        box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.2);
+      }
+    }
+    .active {
+      width: 136rpx;
+      height: 136rpx;
+      image {
+        width: 136rpx;
+        height: 136rpx;
+        border-radius: 24rpx;
+        border: solid 4rpx #fff;
+        box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.3);
+      }
+    }
+  }
 }
 .body {
-	width:750rpx;margin-top:-60rpx;
-	border-radius: 40rpx 40rpx 0 0;padding-top:30rpx;
-	display: flex;flex-direction: column;justify-content: flex-start;align-items: flex-start;
-	box-shadow: 0 -10rpx 20rpx rgba(0, 0, 0, 0.05);
-	position: relative;
-	z-index: 10;
-	.article-header {
-		display: flex;
-		flex-direction: column;
-		justify-content: flex-start;
-		align-items: flex-start;
-		padding: 40rpx 50rpx 20rpx;
-		width: 100%;
-		box-sizing: border-box;
-		
-		.title {
-			font-size: 40rpx;
-			font-weight: bold;
-			color: #222;
-			margin-bottom: 20rpx;
-			line-height: 1.4;
-		}
-		
-		.meta-info {
-			display: flex;
-			flex-direction: row;
-			flex-wrap: wrap;
-			color: #999;
-			font-size: 26rpx;
-			
-			.meta-item {
-				display: flex;
-				align-items: center;
-				margin-right: 30rpx;
-				margin-bottom: 10rpx;
-				
-				.meta-text {
-					margin-left: 8rpx;
-				}
-			}
-		}
-	}
-	.divider {
-		height: 1rpx;
-		background-color: #eee;
-		width: 650rpx;
-		margin: 10rpx auto 30rpx;
-	}
-	.article-content {
-		padding: 0 50rpx 40rpx;
-		width: 100%;
-		box-sizing: border-box;
-		
-		.content {
-			font-size: 32rpx;
-			color: #333;
-			line-height: 1.8;
-			text-align: justify;
-		}
-	}
-	.article-footer {
-		width: 100%;
-		padding: 20rpx 0;
-		border-top: 1rpx solid #f0f0f0;
-		
-		.action-bar {
-			display: flex;
-			justify-content: space-around;
-			align-items: center;
-			
-			.action-item {
-				display: flex;
-				flex-direction: column;
-				align-items: center;
-				padding: 20rpx 0;
-				
-				.fa {
-					font-size: 40rpx;
-					color: #666;
-					margin-bottom: 10rpx;
-					
-					&.liked {
-						color: #ff5151;
-					}
-				}
-				
-				.action-text {
-					font-size: 24rpx;
-					color: #666;
-				}
-				
-				&:active {
-					opacity: 0.7;
-				}
-			}
-		}
-	}
+  width: 750rpx;
+  margin-top: -60rpx;
+  border-radius: 40rpx 40rpx 0 0;
+  padding-top: 30rpx;
+  display: flex;
+  flex-direction: column;
+  justify-content: flex-start;
+  align-items: flex-start;
+  box-shadow: 0 -10rpx 20rpx rgba(0, 0, 0, 0.05);
+  position: relative;
+  z-index: 10;
+  .article-header {
+    display: flex;
+    flex-direction: column;
+    justify-content: flex-start;
+    align-items: flex-start;
+    padding: 40rpx 50rpx 20rpx;
+    width: 100%;
+    box-sizing: border-box;
+
+    .title {
+      font-size: 40rpx;
+      font-weight: bold;
+      color: #222;
+      margin-bottom: 20rpx;
+      line-height: 1.4;
+    }
+
+    .meta-info {
+      display: flex;
+      flex-direction: row;
+      flex-wrap: wrap;
+      color: #999;
+      font-size: 26rpx;
+
+      .meta-item {
+        display: flex;
+        align-items: center;
+        margin-right: 30rpx;
+        margin-bottom: 10rpx;
+
+        .meta-text {
+          margin-left: 8rpx;
+        }
+      }
+    }
+  }
+  .divider {
+    height: 1rpx;
+    background-color: #eee;
+    width: 650rpx;
+    margin: 10rpx auto 30rpx;
+  }
+  .article-content {
+    padding: 0 50rpx 40rpx;
+    width: 100%;
+    box-sizing: border-box;
+
+    .content {
+      font-size: 32rpx;
+      color: #333;
+      line-height: 1.8;
+      text-align: justify;
+    }
+  }
+  .article-footer {
+    width: 100%;
+    padding: 20rpx 0;
+    border-top: 1rpx solid #f0f0f0;
+
+    .action-bar {
+      display: flex;
+      justify-content: space-around;
+      align-items: center;
+
+      .action-item {
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        padding: 20rpx 0;
+
+        .fa {
+          font-size: 40rpx;
+          color: #666;
+          margin-bottom: 10rpx;
+
+          &.liked {
+            color: #ff5151;
+          }
+        }
+
+        .action-text {
+          font-size: 24rpx;
+          color: #666;
+        }
+
+        &:active {
+          opacity: 0.7;
+        }
+      }
+    }
+  }
 }
+// 灵感模式的样式
+.inspiration-content {
+  width: 700rpx;
+  min-height: 1000rpx;
+  padding: 0;
+  margin: 0 auto;
+  // background: url("../../static/makedetail/cz_img_zhanshi.png") top center/100%  no-repeat;
+  box-sizing: border-box;
+  overflow: hidden;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  flex-direction: column; 
 
+ image{
+  width: 100%;
+  height: auto;
+  margin: 0;
+ }
+ .inspirationPictures{
+  border-radius: 0px 0px 32rpx 32rpx;
+  border: 2rpx solid #000000;
+ }
+}
+
+// 作品描述
+.workDescription {
+  margin: 20rpx 28rpx 80rpx 28rpx;
+  background: #fff;
+  border-radius: 20rpx;
+  padding: 22rpx 28rpx 32rpx 28rpx;
+  .workDescription-title {
+    font-weight: 400;
+    font-family: "PingFang SC-Bold";
+    font-size: 36rpx;
+    display: flex;
+    align-content: center;
+    padding-bottom: 24rpx;
+    .pen {
+      width: 36rpx;
+      height: 36rpx;
+      margin-top: 10rpx;
+      margin-left: 5rpx;
+    }
+  }
+  .workDescription-content {
+    font-size: 28rpx;
+    color: #1f1f1f;
+  }
+}
+
+.floating-bar {
+  background: #ffffff;
+  border-radius: 20rpx;
+  color: #1f1f1f;
+}
 /* 底部漂浮栏样式 */
 .floating-bar {
-	position: fixed;
-	bottom: 0;
-	left: 0;
-	right: 0;
-	background-color: #fff;
-	box-shadow: 0 -2rpx 10rpx rgba(0, 0, 0, 0.1);
-	padding: 20rpx 30rpx;
-	padding-bottom: calc(20rpx + env(safe-area-inset-bottom));
-	z-index: 100;
-	
-	.floating-bar-content {
-	  display: flex;
-	  align-items: center;
-	  
-	  .add-note-btn {
-		flex: 1;
-		height: 80rpx;
-		background-color: #f5f5f5;
-		border-radius: 40rpx;
-		display: flex;
-		justify-content: center;
-		align-items: center;
-		margin-right: 20rpx;
-		max-width: 160rpx;
-		
-		text {
-		  font-size: 28rpx;
-		  color: #666;
-		}
-		
-		&:active {
-		  background-color: #e5e5e5;
-		}
-	  }
-	  
-	  .publish-btn {
-		flex: 3;
-		height: 80rpx;
-		background: linear-gradient(90deg, #8a2be2, #9932cc);
-		border-radius: 40rpx;
-		display: flex;
-		justify-content: center;
-		align-items: center;
-		
-		text {
-		  font-size: 30rpx;
-		  color: #fff;
-		  font-weight: 500;
-		}
-		
-		&:active {
-		  opacity: 0.9;
-		}
-	  }
-	}
+  position: fixed;
+  bottom: 0;
+  left: 0;
+  right: 0;
+  background-color: #fff;
+  box-shadow: 0 -2rpx 10rpx rgba(0, 0, 0, 0.1);
+  padding: 20rpx 30rpx;
+  padding-bottom: calc(20rpx + env(safe-area-inset-bottom));
+  z-index: 100;
+
+  .floating-bar-content {
+    display: flex;
+    align-items: center;
+
+    .add-note-btn {
+      border-radius: 58rpx;
+      border: 4rpx solid #000000;
+      display: flex;
+      justify-content: center;
+      align-items: center;
+      width: 220rpx;
+      height: 80rpx;
+
+      &:active {
+        background-color: #e5e5e5;
+      }
+    }
+    text {
+      font-family: PingFang SC, PingFang SC;
+      font-weight: 400;
+      font-size: 16px;
+      color: #1f1f1f;
+    }
+    .publish-btn {
+      flex: 3;
+      height: 80rpx;
+      background: #1f1f1f;
+      margin-left: 20rpx;
+      border-radius: 40rpx;
+      display: flex;
+      justify-content: center;
+      align-items: center;
+      text {
+        color: #fff;
+      }
+
+      &:active {
+        opacity: 0.9;
+      }
+    }
   }
-  
-  /* 弹窗样式 */
-  .popup-mask {
-	position: fixed;
-	top: 0;
-	left: 0;
-	right: 0;
-	bottom: 0;
-	background-color: rgba(0, 0, 0, 0.5);
-	z-index: 998;
+}
+
+/* 弹窗样式 */
+.popup-mask {
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  background-color: rgba(0, 0, 0, 0.5);
+  z-index: 998;
+}
+
+.note-popup {
+  position: fixed;
+  bottom: 0;
+  left: 0;
+  right: 0;
+  background-color: #fff;
+  border-radius: 30rpx 30rpx 0 0;
+  z-index: 999;
+  overflow: hidden;
+  animation: slideUp 0.3s ease;
+
+  .popup-header {
+    padding: 30rpx;
+    text-align: center;
+    border-bottom: 1rpx solid #f0f0f0;
+
+    .popup-title {
+      font-size: 32rpx;
+      font-weight: bold;
+      color: #333;
+    }
   }
-  
-  .note-popup {
-	position: fixed;
-	bottom: 0;
-	left: 0;
-	right: 0;
-	background-color: #fff;
-	border-radius: 30rpx 30rpx 0 0;
-	z-index: 999;
-	overflow: hidden;
-	animation: slideUp 0.3s ease;
-	
-	.popup-header {
-	  padding: 30rpx;
-	  text-align: center;
-	  border-bottom: 1rpx solid #f0f0f0;
-	  
-	  .popup-title {
-		font-size: 32rpx;
-		font-weight: bold;
-		color: #333;
-	  }
-	}
-	
-	.popup-content {
-	  padding: 30rpx;
-	  
-	  .note-textarea {
-		width: 100%;
-		height: 300rpx;
-		background-color: #f8f8f8;
-		border-radius: 16rpx;
-		padding: 20rpx;
-		font-size: 28rpx;
-		color: #333;
-		box-sizing: border-box;
-	  }
-	  
-	  .word-count {
-		text-align: right;
-		font-size: 24rpx;
-		color: #999;
-		margin-top: 10rpx;
-	  }
-	}
-	
-	/* 像素颜色显示区域样式 */
-	.pixel-color {
-		display: flex;
-		align-items: center;
-		margin: 15rpx 0;
-		padding: 12rpx 16rpx;
-		background: #f9f9f9;
-		border-radius: 12rpx;
-		
-		.color-box {
-			width: 40rpx;
-			height: 40rpx;
-			border-radius: 8rpx;
-			margin-right: 16rpx;
-			border: 1px solid #eee;
-			box-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.1);
-			
-			&.loading {
-				background: linear-gradient(45deg, #f0f0f0 25%, #e0e0e0 25%, #e0e0e0 50%, #f0f0f0 50%, #f0f0f0 75%, #e0e0e0 75%);
-				background-size: 10rpx 10rpx;
-				animation: loading 1s linear infinite;
-			}
-		}
-		
-		.color-info {
-			display: flex;
-			flex-direction: column;
-		}
-		
-		.color-text {
-			font-size: 24rpx;
-			color: #666;
-			margin-bottom: 4rpx;
-		}
-		
-		.color-value {
-			font-size: 24rpx;
-			color: #333;
-			font-family: monospace;
-			margin-bottom: 4rpx;
-		}
-		
-		.color-hex {
-			font-size: 24rpx;
-			color: #444;
-			font-family: monospace;
-			font-weight: bold;
-		}
-		
-		&.loading {
-			background: #f5f5f5;
-		}
-	}
-	
-	@keyframes loading {
-		from { background-position: 0 0; }
-		to { background-position: 20rpx 0; }
-	}
-	
-	.popup-footer {
-	  display: flex;
-	  border-top: 1rpx solid #f0f0f0;
-	  
-	  .cancel-btn, .confirm-btn {
-		flex: 1;
-		height: 100rpx;
-		display: flex;
-		justify-content: center;
-		align-items: center;
-		
-		text {
-		  font-size: 30rpx;
-		}
-	  }
-	  
-	  .cancel-btn {
-		background-color: #f5f5f5;
-		
-		text {
-		  color: #666;
-		}
-		
-		&:active {
-		  background-color: #e5e5e5;
-		}
-	  }
-	  
-	  .confirm-btn {
-		background-color: #8a2be2;
-		
-		text {
-		  color: #fff;
-		}
-		
-		&:active {
-		  background-color: #7a1bd2;
-		}
-	  }
-	}
+
+  .popup-content {
+    padding: 30rpx;
+
+    .note-textarea {
+      width: 100%;
+      height: 300rpx;
+      background-color: #f8f8f8;
+      border-radius: 16rpx;
+      padding: 20rpx;
+      font-size: 28rpx;
+      color: #333;
+      box-sizing: border-box;
+    }
+
+    .word-count {
+      text-align: right;
+      font-size: 24rpx;
+      color: #999;
+      margin-top: 10rpx;
+    }
+  }
+
+  /* 像素颜色显示区域样式 */
+  .pixel-color {
+    display: flex;
+    align-items: center;
+    margin: 15rpx 0;
+    padding: 12rpx 16rpx;
+    background: #f9f9f9;
+    border-radius: 12rpx;
+
+    .color-box {
+      width: 40rpx;
+      height: 40rpx;
+      border-radius: 8rpx;
+      margin-right: 16rpx;
+      border: 1px solid #eee;
+      box-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.1);
+
+      &.loading {
+        background: linear-gradient(
+          45deg,
+          #f0f0f0 25%,
+          #e0e0e0 25%,
+          #e0e0e0 50%,
+          #f0f0f0 50%,
+          #f0f0f0 75%,
+          #e0e0e0 75%
+        );
+        background-size: 10rpx 10rpx;
+        animation: loading 1s linear infinite;
+      }
+    }
+
+    .color-info {
+      display: flex;
+      flex-direction: column;
+    }
+
+    .color-text {
+      font-size: 24rpx;
+      color: #666;
+      margin-bottom: 4rpx;
+    }
+
+    .color-value {
+      font-size: 24rpx;
+      color: #333;
+      font-family: monospace;
+      margin-bottom: 4rpx;
+    }
+
+    .color-hex {
+      font-size: 24rpx;
+      color: #444;
+      font-family: monospace;
+      font-weight: bold;
+    }
+
+    &.loading {
+      background: #f5f5f5;
+    }
   }
-  
-  @keyframes slideUp {
-	from {
-	  transform: translateY(100%);
-	}
-	to {
-	  transform: translateY(0);
-	}
+
+  @keyframes loading {
+    from {
+      background-position: 0 0;
+    }
+    to {
+      background-position: 20rpx 0;
+    }
   }
-	/* 添加新样式 */
-	.lyrics-overlay {
-		position: absolute;
-		top: 0;
-		left: 0;
-		right: 0;
-		bottom: 0;
-		display: flex;
-		justify-content: center;
-		align-items: center;
-		background-color: rgba(0, 0, 0, 0.4);
-		padding: 30rpx;
-		cursor: grab;
-		
-		.lyrics-text {
-			color: #fff;
-			font-size: 36rpx;
-			text-align: center;
-			text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.5);
-			font-weight: 500;
-			line-height: 1.6;
-		}
-	}
-	
-	.lyrics-overlay:active {
-		cursor: grabbing;
-	}
-	
-	.play-button {
-		position: absolute;
-		top: 50%;
-		left: 50%;
-		transform: translate(-50%, -50%);
-		width: 120rpx;
-		height: 120rpx;
-		background-color: rgba(0, 0, 0, 0.6);
-		border-radius: 60rpx;
-		display: flex;
-		justify-content: center;
-		align-items: center;
-		z-index: 10;
-		
-		.fa {
-			color: #fff;
-			font-size: 60rpx;
-		}
-		
-		&:active {
-			background-color: rgba(0, 0, 0, 0.8);
-			transform: translate(-50%, -50%) scale(0.95);
-		}
-	}
-	
-	.creation-details {
-		margin-top: 30rpx;
-		
-		.detail-item {
-			margin-bottom: 20rpx;
-			
-			.detail-label {
-				font-size: 28rpx;
-				color: #666;
-				margin-right: 10rpx;
-			}
-			
-			.detail-value {
-				font-size: 28rpx;
-				color: #333;
-			}
-		}
-	}
-	
-	.status-info {
-		margin-top: 40rpx;
-		
-		.queue-info {
-			.queue-text {
-				font-size: 28rpx;
-				color: #666;
-				margin-bottom: 10rpx;
-			}
-			
-			.progress-bar {
-				height: 16rpx;
-				background-color: #f0f0f0;
-				border-radius: 8rpx;
-				overflow: hidden;
-				
-				.progress-fill {
-					height: 100%;
-					background: linear-gradient(90deg, #2979ff, #36d6ff);
-					border-radius: 8rpx;
-				}
-			}
-		}
-	}
-	
-	.error-message {
-		margin-top: 30rpx;
-		padding: 20rpx;
-		background-color: #fff5f5;
-		border-radius: 12rpx;
-		border-left: 8rpx solid #ff5151;
-		
-		.error-text {
-			font-size: 28rpx;
-			color: #ff5151;
-		}
-	}
+
+  .popup-footer {
+    display: flex;
+    border-top: 1rpx solid #f0f0f0;
+
+    .cancel-btn,
+    .confirm-btn {
+      flex: 1;
+      height: 100rpx;
+      display: flex;
+      justify-content: center;
+      align-items: center;
+
+      text {
+        font-size: 30rpx;
+      }
+    }
+
+    .cancel-btn {
+      background-color: #f5f5f5;
+
+      text {
+        color: #666;
+      }
+
+      &:active {
+        background-color: #e5e5e5;
+      }
+    }
+
+    .confirm-btn {
+      background-color: #8a2be2;
+
+      text {
+        color: #fff;
+      }
+
+      &:active {
+        background-color: #7a1bd2;
+      }
+    }
+  }
+}
+
+@keyframes slideUp {
+  from {
+    transform: translateY(100%);
+  }
+  to {
+    transform: translateY(0);
+  }
+}
+/* 添加新样式 */
+.lyrics-overlay {
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  background-color: rgba(0, 0, 0, 0.4);
+  padding: 30rpx;
+  cursor: grab;
+
+  .lyrics-text {
+    color: #fff;
+    font-size: 36rpx;
+    text-align: center;
+    text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.5);
+    font-weight: 500;
+    line-height: 1.6;
+  }
+}
+
+.lyrics-overlay:active {
+  cursor: grabbing;
+}
+
+.play-button {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  transform: translate(-50%, -50%);
+  width: 120rpx;
+  height: 120rpx;
+  background-color: rgba(0, 0, 0, 0.6);
+  border-radius: 60rpx;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  z-index: 10;
+
+  .fa {
+    color: #fff;
+    font-size: 60rpx;
+  }
+
+  &:active {
+    background-color: rgba(0, 0, 0, 0.8);
+    transform: translate(-50%, -50%) scale(0.95);
+  }
+}
+
+.creation-details {
+  margin-top: 30rpx;
+
+  .detail-item {
+    margin-bottom: 20rpx;
+
+    .detail-label {
+      font-size: 28rpx;
+      color: #666;
+      margin-right: 10rpx;
+    }
+
+    .detail-value {
+      font-size: 28rpx;
+      color: #333;
+    }
+  }
+}
+
+.status-info {
+  margin-top: 40rpx;
+
+  .queue-info {
+    .queue-text {
+      font-size: 28rpx;
+      color: #666;
+      margin-bottom: 10rpx;
+    }
+
+    .progress-bar {
+      height: 16rpx;
+      background-color: #f0f0f0;
+      border-radius: 8rpx;
+      overflow: hidden;
+
+      .progress-fill {
+        height: 100%;
+        background: linear-gradient(90deg, #2979ff, #36d6ff);
+        border-radius: 8rpx;
+      }
+    }
+  }
+}
+
+.error-message {
+  margin-top: 30rpx;
+  padding: 20rpx;
+  background-color: #fff5f5;
+  border-radius: 12rpx;
+  border-left: 8rpx solid #ff5151;
+
+  .error-text {
+    font-size: 28rpx;
+    color: #ff5151;
+  }
+}

+ 811 - 627
pages/makedetail/makeDetail.vue

@@ -6,6 +6,8 @@
 				href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
 		</view>
 
+
+
 		<!-- 顶部导航栏 -->
 		<view class="custom-navbar">
 			<view class="navbar-left" @click="goBack">
@@ -13,134 +15,283 @@
 			</view>
 			<view class="navbar-center">
 				<view class="navbar-title">
-					<image class="navbar-avatar" :src="myinfo.avatar" mode="aspectFill"></image>
+					<image class="navbar-avatar" :src="myinfo.avator" mode="aspectFill"></image>
 					<text class="navbar-text">{{ myinfo.nickname }}</text>
 					<text class="navbar-badge" v-if="myinfo.is_vip > 0">VIP</text>
+					<!-- <image style=" width: 34rpx;  height: 34rpx;" v-if="myinfo.is_vip > 0" src="@/static/me/icon-vip1.png" mode=""></image> -->
+
 				</view>
 			</view>
 			<view class="navbar-right" @click="showActionSheet">
 				<text class="fa fa-ellipsis-h"></text>
 			</view>
 		</view>
-
-		<!-- 内容头图区域 -->
-		<view class="topUser" ref="ImageBox">
-			<image :src="home_image" class="home_image" mode="aspectFill"></image>
-
-			<!-- 图片指示器 -->
-			<!-- <view class="image-indicator" v-if="image_list.length > 1">
-				<text>{{ selImg + 1 }}/{{ image_list.length }}</text>
-			</view> -->
-
-			<!-- 音乐类型时显示歌词 -->
-			<view class="lyrics-overlay" v-if="queueDetail.task_type == 2" @mousedown="startDrag" @mouseup="stopDrag" @mousemove="drag">
-				<text class="lyrics-text" ref="lyricsText" :style="{ transform: `translateY(${offsetY}px)` }">{{ queueDetail.description }}</text>
+		<!-- 灵感 -->
+		<template v-if="queueDetail.task_type == 1">
+			<view class="inspiration-content">
+				<image src="../../static/makedetail/cz_img_zhanshi.png" mode="widthFix"></image>
+				<image :src="home_image" class="inspirationPictures" mode="widthFix"></image>
 			</view>
-
-			<!-- 音乐类型且状态为9时显示播放按钮 -->
-			<view class="play-button" v-if="queueDetail.task_type == 2 && queueDetail.status >= 9" @click="toggleAudio">
-				<text class="fa" :class="isPlaying ? 'fa-pause' : 'fa-play'"></text>
+			<!-- 内容头图区域 -->
+			<view class="topUser" ref="ImageBox" v-if="false">
+				<image :src="home_image" class="home_image" mode="aspectFill"></image>
 			</view>
 
+			<view class="body" v-if="false">
+				<view class="article-header">
+					<text class="title">{{ queueDetail.title }}</text>
 
-		</view>
+					<!-- 显示第一个像素的颜色 -->
+					<view class="pixel-color" v-if="pixelColor">
+						<view class="color-box"
+							:style="{ backgroundColor: `rgb(${pixelColor.r}, ${pixelColor.g}, ${pixelColor.b})` }">
+						</view>
+						<view class="color-info">
+							<text class="color-text">左上角像素RGB值:</text>
+							<text class="color-value">R:{{ pixelColor.r }} G:{{ pixelColor.g }} B:{{ pixelColor.b
+							}}</text>
+							<text class="color-hex">HEX: {{ rgbToHex(pixelColor.r, pixelColor.g, pixelColor.b) }}</text>
+						</view>
+					</view>
 
-		<view class="body">
-			<view class="article-header">
-				<text class="title">{{ queueDetail.title }}</text>
-
-				<!-- 显示第一个像素的颜色 -->
-				<view class="pixel-color" v-if="pixelColor">
-					<view class="color-box"
-						:style="{backgroundColor: `rgb(${pixelColor.r}, ${pixelColor.g}, ${pixelColor.b})`}"></view>
-					<view class="color-info">
-						<text class="color-text">左上角像素RGB值:</text>
-						<text class="color-value">R:{{pixelColor.r}} G:{{pixelColor.g}} B:{{pixelColor.b}}</text>
-						<text class="color-hex">HEX: {{rgbToHex(pixelColor.r, pixelColor.g, pixelColor.b)}}</text>
+					<!-- 颜色加载中状态 -->
+					<view class="pixel-color loading"
+						v-else-if="home_image && home_image !== '../../static/home/avator.png'">
+						<view class="color-box loading"></view>
+						<!-- <text class="color-text">正在获取像素颜色...</text> -->
 					</view>
-				</view>
 
-				<!-- 颜色加载中状态 -->
-				<view class="pixel-color loading"
-					v-else-if="home_image && home_image !== '../../static/home/avator.png'">
-					<view class="color-box loading"></view>
-					<!-- <text class="color-text">正在获取像素颜色...</text> -->
+					<view class="meta-info">
+						<view class="meta-item">
+							<text class="fa fa-clock-o"></text>
+							<text class="meta-text">{{ queueDetail.create_time }}</text>
+						</view>
+						<view class="meta-item">
+							<text class="fa fa-tag"></text>
+							<text class="meta-text">{{ queueDetail.task_type == 1 ? '灵感创作' : '音乐创作' }}</text>
+						</view>
+						<view class="meta-item">
+							<text class="fa fa-circle" :style="getStatusStyle(queueDetail.status)"></text>
+							<text class="meta-text">{{ getStatusText(queueDetail.status) }}</text>
+						</view>
+					</view>
 				</view>
 
-				<view class="meta-info">
-					<view class="meta-item">
-						<text class="fa fa-clock-o"></text>
-						<text class="meta-text">{{ queueDetail.create_time }}</text>
+				<view class="divider"></view>
+
+				<view class="article-content">
+					<!-- 灵感创作显示description -->
+					<view v-if="queueDetail.task_type == 1">
+						<text class="content">{{ queueDetail.description }}</text>
+
+						<!-- 显示创作详情 -->
+						<view class="creation-details">
+							<view class="detail-item" v-if="queueDetail.action">
+								<text class="detail-label">行为动作:</text>
+								<text class="detail-value">{{ queueDetail.action }}</text>
+							</view>
+							<view class="detail-item" v-if="queueDetail.environment">
+								<text class="detail-label">主体环境:</text>
+								<text class="detail-value">{{ queueDetail.environment }}</text>
+							</view>
+							<view class="detail-item" v-if="queueDetail.subject">
+								<text class="detail-label">主体形象:</text>
+								<text class="detail-value">{{ queueDetail.subject }}</text>
+							</view>
+							<view class="detail-item" v-if="queueDetail.style">
+								<text class="detail-label">参考风格:</text>
+								<text class="detail-value">{{ queueDetail.style }}</text>
+							</view>
+						</view>
 					</view>
-					<view class="meta-item">
-						<text class="fa fa-tag"></text>
-						<text class="meta-text">{{ queueDetail.task_type == 1 ? '灵感创作' : '音乐创作' }}</text>
+
+					<!-- 音乐创作显示lyrics -->
+					<view v-else-if="queueDetail.task_type == 2">
+						<text class="content">{{ queueDetail.lyrics }}</text>
+
+						<!-- 音乐创作显示歌曲名称 -->
+						<view class="creation-details">
+							<view class="detail-item" v-if="queueDetail.song_name">
+								<text class="detail-label">歌曲名称:</text>
+								<text class="detail-value">{{ queueDetail.song_name }}</text>
+							</view>
+						</view>
 					</view>
-					<view class="meta-item">
-						<text class="fa fa-circle" :style="getStatusStyle(queueDetail.status)"></text>
-						<text class="meta-text">{{ getStatusText(queueDetail.status) }}</text>
+
+					<!-- 显示状态信息 -->
+					<view class="status-info" v-if="queueDetail.status < 4">
+						<view class="queue-info">
+							<text class="queue-text">队列位置:
+								{{ queueDetail.queue_position }}/{{ queueDetail.all_position }}</text>
+							<view class="progress-bar">
+								<view class="progress-fill" :style="{ width: getProgressWidth() }"></view>
+							</view>
+						</view>
+					</view>
+
+					<!-- 显示错误信息 -->
+					<view class="error-message" v-if="queueDetail.status == 3">
+						<text class="error-text">{{ queueDetail.error_msg }}</text>
 					</view>
 				</view>
+
+
+
 			</view>
 
-			<view class="divider"></view>
+		</template>
+		<!-- 音乐 -->
+		<template v-else-if="queueDetail.task_type == 2">
+			<!-- 内容头图区域 -->
+			<view class="topUser" ref="ImageBox">
+				<image :src="home_image" class="home_image" mode="aspectFill"></image>
+
+				<!-- 图片指示器 -->
+				<!-- <view class="image-indicator" v-if="image_list.length > 1">
+				<text>{{ selImg + 1 }}/{{ image_list.length }}</text>
+			</view> -->
 
-			<view class="article-content">
-				<!-- 灵感创作显示description -->
-				<view v-if="queueDetail.task_type == 1">
-					<text class="content">{{ queueDetail.description }}</text>
+				<!-- 音乐类型时显示歌词 -->
+				<view class="lyrics-overlay" v-if="queueDetail.task_type == 2" @mousedown="startDrag"
+					@mouseup="stopDrag" @mousemove="drag">
+					<text class="lyrics-text" ref="lyricsText" :style="{ transform: `translateY(${offsetY}px)` }">{{
+						queueDetail.description }}</text>
 				</view>
 
-				<!-- 音乐创作显示lyrics -->
-				<view v-if="queueDetail.task_type == 2">
-					<text class="content">{{ queueDetail.lyrics }}</text>
+				<!-- 音乐类型且状态为9时显示播放按钮 -->
+				<view class="play-button" v-if="queueDetail.task_type == 2 && queueDetail.status >= 9"
+					@click="toggleAudio">
+					<text class="fa" :class="isPlaying ? 'fa-pause' : 'fa-play'"></text>
 				</view>
 
-				<!-- 显示创作详情 -->
-				<view class="creation-details" v-if="queueDetail.task_type == 1">
-					<view class="detail-item" v-if="queueDetail.action">
-						<text class="detail-label">行为动作:</text>
-						<text class="detail-value">{{ queueDetail.action }}</text>
-					</view>
-					<view class="detail-item" v-if="queueDetail.environment">
-						<text class="detail-label">主体环境:</text>
-						<text class="detail-value">{{ queueDetail.environment }}</text>
+
+			</view>
+
+			<view class="body">
+				<view class="article-header">
+					<text class="title">{{ queueDetail.title }}</text>
+
+					<!-- 显示第一个像素的颜色 -->
+					<view class="pixel-color" v-if="pixelColor">
+						<view class="color-box"
+							:style="{ backgroundColor: `rgb(${pixelColor.r}, ${pixelColor.g}, ${pixelColor.b})` }">
+						</view>
+						<view class="color-info">
+							<text class="color-text">左上角像素RGB值:</text>
+							<text class="color-value">R:{{ pixelColor.r }} G:{{ pixelColor.g }} B:{{ pixelColor.b
+							}}</text>
+							<text class="color-hex">HEX: {{ rgbToHex(pixelColor.r, pixelColor.g, pixelColor.b) }}</text>
+						</view>
 					</view>
-					<view class="detail-item" v-if="queueDetail.subject">
-						<text class="detail-label">主体形象:</text>
-						<text class="detail-value">{{ queueDetail.subject }}</text>
+
+					<!-- 颜色加载中状态 -->
+					<view class="pixel-color loading"
+						v-else-if="home_image && home_image !== '../../static/home/avator.png'">
+						<view class="color-box loading"></view>
+						<!-- <text class="color-text">正在获取像素颜色...</text> -->
 					</view>
-					<view class="detail-item" v-if="queueDetail.style">
-						<text class="detail-label">参考风格:</text>
-						<text class="detail-value">{{ queueDetail.style }}</text>
+
+					<view class="meta-info">
+						<view class="meta-item">
+							<text class="fa fa-clock-o"></text>
+							<text class="meta-text">{{ queueDetail.create_time }}</text>
+						</view>
+						<view class="meta-item">
+							<text class="fa fa-tag"></text>
+							<text class="meta-text">{{ queueDetail.task_type == 1 ? '灵感创作' : '音乐创作' }}</text>
+						</view>
+						<view class="meta-item">
+							<text class="fa fa-circle" :style="getStatusStyle(queueDetail.status)"></text>
+							<text class="meta-text">{{ getStatusText(queueDetail.status) }}</text>
+						</view>
 					</view>
 				</view>
 
-				<!-- 音乐创作显示歌曲名称 -->
-				<view class="creation-details" v-if="queueDetail.task_type == 2">
-					<view class="detail-item" v-if="queueDetail.song_name">
-						<text class="detail-label">歌曲名称:</text>
-						<text class="detail-value">{{ queueDetail.song_name }}</text>
+				<view class="divider"></view>
+
+				<view class="article-content">
+					<!-- 灵感创作显示description -->
+					<view v-if="queueDetail.task_type == 1">
+						<text class="content">{{ queueDetail.description }}</text>
+
+						<!-- 显示创作详情 -->
+						<view class="creation-details">
+							<view class="detail-item" v-if="queueDetail.action">
+								<text class="detail-label">行为动作:</text>
+								<text class="detail-value">{{ queueDetail.action }}</text>
+							</view>
+							<view class="detail-item" v-if="queueDetail.environment">
+								<text class="detail-label">主体环境:</text>
+								<text class="detail-value">{{ queueDetail.environment }}</text>
+							</view>
+							<view class="detail-item" v-if="queueDetail.subject">
+								<text class="detail-label">主体形象:</text>
+								<text class="detail-value">{{ queueDetail.subject }}</text>
+							</view>
+							<view class="detail-item" v-if="queueDetail.style">
+								<text class="detail-label">参考风格:</text>
+								<text class="detail-value">{{ queueDetail.style }}</text>
+							</view>
+						</view>
 					</view>
-				</view>
 
-				<!-- 显示状态信息 -->
-				<view class="status-info" v-if="queueDetail.status < 4">
-					<view class="queue-info">
-						<text class="queue-text">队列位置:
-							{{ queueDetail.queue_position }}/{{ queueDetail.all_position }}</text>
-						<view class="progress-bar">
-							<view class="progress-fill" :style="{ width: getProgressWidth() }"></view>
+					<!-- 音乐创作显示lyrics -->
+					<view v-else-if="queueDetail.task_type == 2">
+						<text class="content">{{ queueDetail.lyrics }}</text>
+
+						<!-- 音乐创作显示歌曲名称 -->
+						<view class="creation-details">
+							<view class="detail-item" v-if="queueDetail.song_name">
+								<text class="detail-label">歌曲名称:</text>
+								<text class="detail-value">{{ queueDetail.song_name }}</text>
+							</view>
+						</view>
+					</view>
+
+					<!-- 显示状态信息 -->
+					<view class="status-info" v-if="queueDetail.status < 4">
+						<view class="queue-info">
+							<text class="queue-text">队列位置:
+								{{ queueDetail.queue_position }}/{{ queueDetail.all_position }}</text>
+							<view class="progress-bar">
+								<view class="progress-fill" :style="{ width: getProgressWidth() }"></view>
+							</view>
 						</view>
 					</view>
-				</view>
 
-				<!-- 显示错误信息 -->
-				<view class="error-message" v-if="queueDetail.status == 3">
-					<text class="error-text">{{ queueDetail.error_msg }}</text>
+					<!-- 显示错误信息 -->
+					<view class="error-message" v-if="queueDetail.status == 3">
+						<text class="error-text">{{ queueDetail.error_msg }}</text>
+					</view>
 				</view>
 			</view>
+
+		</template>
+
+
+		<!-- 作品描述 -->
+		<view class="workDescription">
+			<view class="workDescription-title">
+				<view>创作描述 </view>
+				<image class="pen" src="@/static/icon/wd_icon_bianji.png"></image>
+			</view>
+			<view class="workDescription-content">
+				{{ queueDetail.lyrics ||queueDetail.description}}
+			</view>
 		</view>
+		<!-- 作品描述 -->
+		<view class="workDescription" v-if="queueDetail.content">
+			<view class="workDescription-title">
+				<view>创作描述 </view>
+				<image class="pen" src="@/static/icon/wd_icon_bianji.png"></image>
+			</view>
+			<view class="workDescription-content">
+				{{ noteContent}}
+			</view>
+		</view>
+
+
+
 
 		<view class="thread2"></view>
 
@@ -154,7 +305,7 @@
 		<!-- 底部漂浮栏 -->
 		<view class="floating-bar" v-if="queueDetail.status == 9">
 			<view class="floating-bar-content">
-				<view class="add-note-btn" @click="showAddNotePopup">
+				<view class="add-note-btn" @click="openContentPopUpWindow">
 					<text>添加说明</text>
 				</view>
 				<view class="publish-btn" @click="publishWork">
@@ -164,7 +315,7 @@
 		</view>
 
 		<!-- 添加说明弹窗 -->
-		<view class="popup-mask" v-if="showNotePopup" @click="closeAddNotePopup"></view>
+		<!-- <view class="popup-mask" v-if="showNotePopup" @click="closeAddNotePopup"></view>
 		<view class="note-popup" v-if="showNotePopup">
 			<view class="popup-header">
 				<text class="popup-title">添加说明</text>
@@ -172,7 +323,7 @@
 			<view class="popup-content">
 				<textarea class="note-textarea" v-model="noteContent" placeholder="请描述你想添加的内容。"
 					maxlength="500"></textarea>
-				<view class="word-count">{{noteContent.length}}/500</view>
+				<view class="word-count">{{ noteContent.length }}/500</view>
 			</view>
 			<view class="popup-footer">
 				<view class="cancel-btn" @click="closeAddNotePopup">
@@ -182,606 +333,639 @@
 					<text>确认</text>
 				</view>
 			</view>
-		</view>
+		</view> -->
+
+
+
+		<NicknamePopup title="添加说明" subtitle="" class="openContentPopUpWindow"
+			ref="openContentPopUpWindow">
+			<template slot="content"> 
+				<uv-textarea v-model="noteContent" maxlength="500" count placeholder="请描述你添加的内容"></uv-textarea>
+
+				<view class="btn-box" @click="confirmAddNote">确认</view>
+			</template>
+		</NicknamePopup>
+
 	</view>
 </template>
 
 <script>
-	import previewImage from '@/components/kxj-previewImage/kxj-previewImage.vue'; //引用插件
+import previewImage from '@/components/kxj-previewImage/kxj-previewImage.vue'; //引用插件
+import NicknamePopup from '@/components/NicknamePopup/NicknamePopup.vue';
+
+export default {
+	components: {
+		previewImage,
+		NicknamePopup
+	},
+	data() {
+		return {
+			title: '',
+			arcID: 0,
+			selImg: 0,
+			home_image: '',
+			myinfo: {},
+			tag_list: [],
+			image_list: [],
+			imgs: [],
+			descs: [],
+			isPlaying: false,
+			audioPlayer: null,
+			showNotePopup: false,
+			noteContent: '',
+			pixelColor: null, // 存储像素颜色值
+
+			// 队列详情数据
+			queueDetail: {
+				id: 0,
+				sso_id: 0,
+				task_type: 1,
+				title: '',
+				description: '',
+				action: '',
+				environment: '',
+				subject: '',
+				style: '',
+				song_name: '',
+				lyrics: '',
+				generate_uuid: '',
+				result_images: '',
+				result_audio: '',
+				queue_position: 0,
+				status: 1,
+				generate_status: 1,
+				points_cost: 0,
+				error_msg: '',
+				create_time: '',
+				update_time: '',
+				all_position: 0
+			},
+			myinfo: {},
+			offsetY: 0,
+			isDragging: false,
+			startY: 0,
+			initialOffsetY: 0
+		}
+	},
+	onLoad(parms) {
+		let self = this;
+		this.arcID = parms.id || 9;
+		this.getMyInfo();
+	},
+	onShow() {
+		this.loadData();
+	},
+	onReady() {
+		// 获取音频元素
+		this.audioPlayer = uni.createInnerAudioContext();
+		this.audioPlayer.onEnded(() => {
+			this.isPlaying = false;
+		});
+	},
+	onUnload() {
+		// 页面卸载时停止音频播放
+		if (this.audioPlayer) {
+			this.audioPlayer.stop();
+			this.audioPlayer.destroy();
+		}
+	},
+	mounted() {
+
+	},
+	methods: {
+		
+		openContentPopUpWindow() {
+			this.$refs.openContentPopUpWindow.open();
+		},
+		closeContentPopUpWindow() { 
+			this.$refs.openContentPopUpWindow.close();
 
-	export default {
-		components: {
-			previewImage
 		},
-		data() {
-			return {
-				title: '',
-				arcID: 0,
-				selImg: 0,
-				home_image: '',
-				myinfo: {},
-				tag_list: [],
-				image_list: [],
-				imgs: [],
-				descs: [],
-				isPlaying: false,
-				audioPlayer: null,
-				showNotePopup: false,
-				noteContent: '',
-				pixelColor: null, // 存储像素颜色值
-
-				// 队列详情数据
-				queueDetail: {
-					id: 0,
-					sso_id: 0,
-					task_type: 1,
-					title: '',
-					description: '',
-					action: '',
-					environment: '',
-					subject: '',
-					style: '',
-					song_name: '',
-					lyrics: '',
-					generate_uuid: '',
-					result_images: '',
-					result_audio: '',
-					queue_position: 0,
-					status: 1,
-					generate_status: 1,
-					points_cost: 0,
-					error_msg: '',
-					create_time: '',
-					update_time: '',
-					all_position: 0
-				},
-				myinfo: {},
-				offsetY: 0,
-				isDragging: false,
-				startY: 0,
-				initialOffsetY: 0
+		// 获取图片第一个像素的RGB值
+		getImagePixelColor() {
+			console.log("图片加载完成,准备获取像素颜色");
+
+			// 清空之前的颜色值,进入加载状态
+			this.pixelColor = null;
+
+			// 如果是默认图片或空图片,则直接返回
+			if (!this.home_image || this.home_image === '../../static/home/avator.png') {
+				console.log("无有效图片,不获取像素颜色");
+				return;
 			}
+
+			// 使用uni.getImageInfo获取图片信息
+			uni.getImageInfo({
+				src: this.home_image,
+				success: (res) => {
+					console.log("图片信息:", res);
+
+					// 创建临时canvas绘制上下文
+					const ctx = uni.createCanvasContext('pixelCanvas', this);
+
+					// 修改绘制参数,确保只绘制图片左上角的一小块区域
+					// drawImage(图片路径, 源图片裁剪x, 源图片裁剪y, 源图片裁剪宽度, 源图片裁剪高度, canvas目标x, canvas目标y, canvas目标宽度, canvas目标高度)
+					// 这里我们只从源图片左上角裁剪10x10的区域,绘制到canvas的左上角
+					ctx.drawImage(res.path, 0, 0, 10, 10, 0, 0, 10, 10);
+
+					ctx.draw(false, () => {
+						// 绘制完成后,获取像素数据
+						setTimeout(() => { // 添加短暂延迟确保绘制完成
+							uni.canvasGetImageData({
+								canvasId: 'pixelCanvas',
+								x: 0, // 获取(0,0)位置的像素
+								y: 0,
+								width: 1,
+								height: 1,
+								success: (res) => {
+									// 获取像素RGB值
+									this.pixelColor = {
+										r: res.data[0],
+										g: res.data[1],
+										b: res.data[2],
+										a: res.data[3]
+									};
+									console.log("第一个像素的RGB值:", this
+										.pixelColor);
+								},
+								fail: (err) => {
+									console.error("获取像素数据失败:", err);
+									// 显示错误提示
+									uni.showToast({
+										title: '获取颜色失败',
+										icon: 'none',
+										duration: 2000
+									});
+								}
+							});
+						}, 100);
+					});
+				},
+				fail: (err) => {
+					console.error("获取图片信息失败:", err);
+					// 显示错误提示
+					uni.showToast({
+						title: '图片加载失败',
+						icon: 'none',
+						duration: 2000
+					});
+				}
+			});
 		},
-		onLoad(parms) {
-			let self = this;
-			this.arcID = parms.id || 9;
-			this.getMyInfo();
+		// 返回上一页
+		goBack() {
+			uni.navigateBack({
+				delta: 1
+			});
 		},
-		onShow() {
-			this.loadData();
+		getMyInfo() {
+			uni.request({
+				url: this.$apiHost + '/My/getnum',
+				method: 'GET',
+				header: {
+					'content-type': 'application/json',
+					'sign': getApp().globalData.headerSign
+				},
+				data: {
+					uuid: getApp().globalData.uuid
+				},
+				success: (res) => {
+					console.log("获取用户信息:", res.data);
+					this.myinfo = res.data
+				}
+			})
+
 		},
-		onReady() {
-			// 获取音频元素
-			this.audioPlayer = uni.createInnerAudioContext();
-			this.audioPlayer.onEnded(() => {
-				this.isPlaying = false;
-			});
+		selPhoto(item, sel) {
+			this.selImg = sel;
+			this.home_image = this.image_list[sel];
 		},
-		onUnload() {
-			// 页面卸载时停止音频播放
-			if (this.audioPlayer) {
-				this.audioPlayer.stop();
-				this.audioPlayer.destroy();
-			}
+		toArr(imgs) {
+			let arr = imgs.split("|");
+			return arr;
 		},
-		mounted() {
-
+		previewOpen(imgs1, index) {
+			this.imgs = imgs1.split("|");
+			setTimeout(() => this.$refs.previewImage.open(index), 0)
+			// 传入当前选中的图片地址或序号
+			return; //如需测试和uni原生预览差别可注释这两行
 		},
-		methods: {
-			// 获取图片第一个像素的RGB值
-			getImagePixelColor() {
-				console.log("图片加载完成,准备获取像素颜色");
-
-				// 清空之前的颜色值,进入加载状态
-				this.pixelColor = null;
-
-				// 如果是默认图片或空图片,则直接返回
-				if (!this.home_image || this.home_image === '../../static/home/avator.png') {
-					console.log("无有效图片,不获取像素颜色");
-					return;
-				}
-
-				// 使用uni.getImageInfo获取图片信息
-				uni.getImageInfo({
-					src: this.home_image,
-					success: (res) => {
-						console.log("图片信息:", res);
-
-						// 创建临时canvas绘制上下文
-						const ctx = uni.createCanvasContext('pixelCanvas', this);
-
-						// 修改绘制参数,确保只绘制图片左上角的一小块区域
-						// drawImage(图片路径, 源图片裁剪x, 源图片裁剪y, 源图片裁剪宽度, 源图片裁剪高度, canvas目标x, canvas目标y, canvas目标宽度, canvas目标高度)
-						// 这里我们只从源图片左上角裁剪10x10的区域,绘制到canvas的左上角
-						ctx.drawImage(res.path, 0, 0, 10, 10, 0, 0, 10, 10);
-
-						ctx.draw(false, () => {
-							// 绘制完成后,获取像素数据
-							setTimeout(() => { // 添加短暂延迟确保绘制完成
-								uni.canvasGetImageData({
-									canvasId: 'pixelCanvas',
-									x: 0, // 获取(0,0)位置的像素
-									y: 0,
-									width: 1,
-									height: 1,
-									success: (res) => {
-										// 获取像素RGB值
-										this.pixelColor = {
-											r: res.data[0],
-											g: res.data[1],
-											b: res.data[2],
-											a: res.data[3]
-										};
-										console.log("第一个像素的RGB值:", this
-											.pixelColor);
-									},
-									fail: (err) => {
-										console.error("获取像素数据失败:", err);
-										// 显示错误提示
-										uni.showToast({
-											title: '获取颜色失败',
-											icon: 'none',
-											duration: 2000
-										});
-									}
-								});
-							}, 100);
-						});
-					},
-					fail: (err) => {
-						console.error("获取图片信息失败:", err);
-						// 显示错误提示
-						uni.showToast({
-							title: '图片加载失败',
-							icon: 'none',
-							duration: 2000
-						});
-					}
-				});
-			},
-			// 返回上一页
-			goBack() {
-				uni.navigateBack({
-					delta: 1
-				});
-			},
-			getMyInfo() {
-				uni.request({
-					url: this.$apiHost + '/My/getnum',
-					method: 'GET',
-					header: {
-						'content-type': 'application/json',
-						'sign': getApp().globalData.headerSign
-					},
-					data: {
-						uuid: getApp().globalData.uuid
-					},
-					success: (res) => {
-						console.log("获取用户信息:", res.data);
-						this.myinfo = res.data
-					}
-				})
-
-			},
-			selPhoto(item, sel) {
-				this.selImg = sel;
-				this.home_image = this.image_list[sel];
-			},
-			toArr(imgs) {
-				let arr = imgs.split("|");
-				return arr;
-			},
-			previewOpen(imgs1, index) {
-				this.imgs = imgs1.split("|");
-				setTimeout(() => this.$refs.previewImage.open(index), 0)
-				// 传入当前选中的图片地址或序号
-				return; //如需测试和uni原生预览差别可注释这两行
-			},
-			// 切换音频播放状态
-			toggleAudio() {
-				if (!this.queueDetail.result_audio) return;
-
-				if (this.isPlaying) {
-					this.audioPlayer.pause();
-					this.isPlaying = false;
-				} else {
-					this.audioPlayer.src = this.queueDetail.result_audio;
-					this.audioPlayer.play();
-					this.isPlaying = true;
-				}
-			},
-			// 获取状态文本
-			getStatusText(status) {
-				const statusMap = {
-					1: '排队中',
-					2: '生成中',
-					3: '生成失败',
-					4: '已完成',
-					9: '已完成'
-				};
-				return statusMap[status] || '未知状态';
-			},
-			// 获取状态样式
-			getStatusStyle(status) {
-				const colorMap = {
-					1: '#ffa500', // 橙色 - 排队中
-					2: '#2979ff', // 蓝色 - 生成中
-					3: '#ff5151', // 红色 - 生成失败
-					4: '#4caf50', // 绿色 - 已完成
-					9: '#4caf50' // 绿色 - 已完成
-				};
-				return `color: ${colorMap[status] || '#999'}`;
-			},
-			// 获取进度条宽度
-			getProgressWidth() {
-				if (this.queueDetail.all_position === 0) return '0%';
-				const progress = (1 - (this.queueDetail.queue_position / this.queueDetail.all_position)) * 100;
-				return `${progress}%`;
-			},
-			// 加载数据
-			loadData() {
-				uni.showLoading({
-					title: '加载中...'
-				});
-				let that = this;
-				uni.request({
-					url: this.$apiHost + '/WorkAI/getQueueDetail',
-					data: {
-						uuid: getApp().globalData.uuid,
-						id: this.arcID
-					},
-					header: {
-						"content-type": "application/json",
-						'sign': getApp().globalData.headerSign
-					},
-					success: (res) => {
-						console.log("队列详情:", res.data);
-						if (res.data.success === "yes") {
-							// 更新队列详情
-							this.queueDetail = res.data.data;
-							this.noteContent = res.data.data.content;
-
-							// 更新图片列表
-							if (this.queueDetail.result_images && this.queueDetail.result_images !== "") {
-								this.image_list = this.queueDetail.result_images.split(",");
-								this.home_image = this.image_list[0];
-
-								// 当图片更新后,手动触发获取像素颜色(因为图片可能从缓存加载,不会触发@load事件)
-								// setTimeout(() => {
-								// 	that.getImagePixelColor();
-								// }, 500);
-							} else {
-								this.home_image = "../../static/home/avator.png";
-							}
+		// 切换音频播放状态
+		toggleAudio() {
+			if (!this.queueDetail.result_audio) return;
 
-							// 如果是音频类型,设置音频源
-							if (this.queueDetail.task_type == 2 && this.queueDetail.result_audio) {
-								this.audioPlayer.src = this.queueDetail.result_audio;
-							}
+			if (this.isPlaying) {
+				this.audioPlayer.pause();
+				this.isPlaying = false;
+			} else {
+				this.audioPlayer.src = this.queueDetail.result_audio;
+				this.audioPlayer.play();
+				this.isPlaying = true;
+			}
+		},
+		// 获取状态文本
+		getStatusText(status) {
+			const statusMap = {
+				1: '排队中',
+				2: '生成中',
+				3: '生成失败',
+				4: '已完成',
+				9: '已完成'
+			};
+			return statusMap[status] || '未知状态';
+		},
+		// 获取状态样式
+		getStatusStyle(status) {
+			const colorMap = {
+				1: '#ffa500', // 橙色 - 排队中
+				2: '#2979ff', // 蓝色 - 生成中
+				3: '#ff5151', // 红色 - 生成失败
+				4: '#4caf50', // 绿色 - 已完成
+				9: '#4caf50' // 绿色 - 已完成
+			};
+			return `color: ${colorMap[status] || '#999'}`;
+		},
+		// 获取进度条宽度
+		getProgressWidth() {
+			if (this.queueDetail.all_position === 0) return '0%';
+			const progress = (1 - (this.queueDetail.queue_position / this.queueDetail.all_position)) * 100;
+			return `${progress}%`;
+		},
+		// 加载数据
+		loadData() {
+			uni.showLoading({
+				title: '加载中...'
+			});
+			let that = this;
+			uni.request({
+				url: this.$apiHost + '/WorkAI/getQueueDetail',
+				data: {
+					uuid: getApp().globalData.uuid,
+					id: this.arcID
+				},
+				header: {
+					"content-type": "application/json",
+					'sign': getApp().globalData.headerSign
+				},
+				success: (res) => {
+					console.log("队列详情:", res.data);
+					if (res.data.success === "yes") {
+						// 更新队列详情
+						this.queueDetail = res.data.data;
+						this.noteContent = res.data.data.content;
+
+						// 更新图片列表
+						if (this.queueDetail.result_images && this.queueDetail.result_images !== "") {
+							this.image_list = this.queueDetail.result_images.split(",");
+							this.home_image = this.image_list[0];
+
+							// 当图片更新后,手动触发获取像素颜色(因为图片可能从缓存加载,不会触发@load事件)
+							// setTimeout(() => {
+							// 	that.getImagePixelColor();
+							// }, 500);
 						} else {
-							uni.showToast({
-								title: '获取详情失败',
-								icon: 'none'
-							});
+							this.home_image = "../../static/home/avator.png";
+						}
+
+						// 如果是音频类型,设置音频源
+						if (this.queueDetail.task_type == 2 && this.queueDetail.result_audio) {
+							this.audioPlayer.src = this.queueDetail.result_audio;
 						}
-					},
-					complete: () => {
-						uni.hideLoading();
-					},
-					fail: (e) => {
-						console.log("请求失败:", e);
+					} else {
 						uni.showToast({
-							title: '网络请求失败',
+							title: '获取详情失败',
 							icon: 'none'
 						});
 					}
-				});
-			},
-			showActionSheet() {
-				// 显示操作列表
-				uni.showActionSheet({
-					itemList: ['修改封面', '删除作品'],
-					success: (res) => {
-						switch (res.tapIndex) {
-							case 0:
-								// 修改封面
-								this.editCover();
-								break;
-							case 1:
-								// 删除作品
-								this.deleteWork();
-								break;
-						}
-					},
-					fail: (res) => {
-						console.log(res.errMsg);
+				},
+				complete: () => {
+					uni.hideLoading();
+				},
+				fail: (e) => {
+					console.log("请求失败:", e);
+					uni.showToast({
+						title: '网络请求失败',
+						icon: 'none'
+					});
+				}
+			});
+		},
+		showActionSheet() {
+			// 显示操作列表
+			uni.showActionSheet({
+				itemList: ['修改封面', '删除作品'],
+				success: (res) => {
+					switch (res.tapIndex) {
+						case 0:
+							// 修改封面
+							this.editCover();
+							break;
+						case 1:
+							// 删除作品
+							this.deleteWork();
+							break;
 					}
-				});
-			},
-			// 修改封面
-			editCover() {
-				var _self = this;
-				uni.chooseImage({
-					count: 1,
-					sizeType: ['compressed'],
-					sourceType: ['album', 'camera'],
-					success: function(res) {
-						console.log('res:', res)
-						if (res.tempFilePaths.length > 0) {
-							_self.imglocal = res.tempFilePaths[0]
-							const tempFilePaths = res.tempFilePaths[0];
-							console.log('tempFilePaths:', tempFilePaths);
-							const uploadTask = uni.uploadFile({
-								url: _self.$apiHost + '/Xweb/upload_img?skey=' + _self.skey,
-								filePath: res.tempFilePaths[0],
-								name: 'file',
-								success: function(uploadFileRes) {
-									let resdata = JSON.parse(uploadFileRes.data)
-									console.log('Success11:', uploadFileRes);
-									console.log('Success21:', resdata);
-									if (resdata.success == 'yes') {
-										_self.home_image = resdata.url;
-										// 调用修改封面接口
-										uni.request({
-											url: _self.$apiHost + '/WorkAI/queueAction',
-											method: 'GET',
-											data: {
-												uuid: getApp().globalData.uuid,
-												act: 'editImg',
-												result_images: resdata.url,
-												id: _self.arcID
-											},
-											header: {
-												'content-type': 'application/json',
-												'sign': getApp().globalData.headerSign
-											},
-											success: (res) => {
-												if (res.data.success === "yes") {
-													uni.showToast({
-														title: '修改封面成功',
-														icon: 'success'
-													});
-												} else {
-													uni.showToast({
-														title: '修改封面失败',
-														icon: 'none'
-													});
-												}
-											},
-											fail: () => {
+				},
+				fail: (res) => {
+					console.log(res.errMsg);
+				}
+			});
+		},
+		// 修改封面
+		editCover() {
+			var _self = this;
+			uni.chooseImage({
+				count: 1,
+				sizeType: ['compressed'],
+				sourceType: ['album', 'camera'],
+				success: function (res) {
+					console.log('res:', res)
+					if (res.tempFilePaths.length > 0) {
+						_self.imglocal = res.tempFilePaths[0]
+						const tempFilePaths = res.tempFilePaths[0];
+						console.log('tempFilePaths:', tempFilePaths);
+						const uploadTask = uni.uploadFile({
+							url: _self.$apiHost + '/Xweb/upload_img?skey=' + _self.skey,
+							filePath: res.tempFilePaths[0],
+							name: 'file',
+							success: function (uploadFileRes) {
+								let resdata = JSON.parse(uploadFileRes.data)
+								console.log('Success11:', uploadFileRes);
+								console.log('Success21:', resdata);
+								if (resdata.success == 'yes') {
+									_self.home_image = resdata.url;
+									// 调用修改封面接口
+									uni.request({
+										url: _self.$apiHost + '/WorkAI/queueAction',
+										method: 'GET',
+										data: {
+											uuid: getApp().globalData.uuid,
+											act: 'editImg',
+											result_images: resdata.url,
+											id: _self.arcID
+										},
+										header: {
+											'content-type': 'application/json',
+											'sign': getApp().globalData.headerSign
+										},
+										success: (res) => {
+											if (res.data.success === "yes") {
+												uni.showToast({
+													title: '修改封面成功',
+													icon: 'success'
+												});
+											} else {
 												uni.showToast({
 													title: '修改封面失败',
 													icon: 'none'
 												});
 											}
-										});
-									}
-								},
-								fail: function(uploadFileFail) {
-									console.log('Error:', uploadFileFail.data);
-									uni.showToast({
-										title: '图片上传失败',
-										icon: 'none'
+										},
+										fail: () => {
+											uni.showToast({
+												title: '修改封面失败',
+												icon: 'none'
+											});
+										}
 									});
 								}
-							});
-						}
-					},
-					error: function(e) {
-						console.log(e);
-						uni.showToast({
-							title: '选择图片失败',
-							icon: 'none'
+							},
+							fail: function (uploadFileFail) {
+								console.log('Error:', uploadFileFail.data);
+								uni.showToast({
+									title: '图片上传失败',
+									icon: 'none'
+								});
+							}
 						});
 					}
-				});
-			},
-			// 删除作品
-			deleteWork() {
-				// 显示确认对话框
-				uni.showModal({
-					title: '确认删除',
-					content: '确定要删除这个作品吗?',
-					confirmColor: '#ff5151',
-					success: (res) => {
-						if (res.confirm) {
-							// 用户点击确定,执行删除操作
-							this.confirmDelete();
-						}
+				},
+				error: function (e) {
+					console.log(e);
+					uni.showToast({
+						title: '选择图片失败',
+						icon: 'none'
+					});
+				}
+			});
+		},
+		// 删除作品
+		deleteWork() {
+			// 显示确认对话框
+			uni.showModal({
+				title: '确认删除',
+				content: '确定要删除这个作品吗?',
+				confirmColor: '#ff5151',
+				success: (res) => {
+					if (res.confirm) {
+						// 用户点击确定,执行删除操作
+						this.confirmDelete();
 					}
-				});
-			},
-			// 确认删除
-			confirmDelete() {
-				uni.showLoading({
-					title: '删除中...'
-				});
+				}
+			});
+		},
+		// 确认删除
+		confirmDelete() {
+			uni.showLoading({
+				title: '删除中...'
+			});
 
-				uni.request({
-					url: this.$apiHost + '/WorkAI/queueAction',
-					method: 'GET',
-					data: {
-						uuid: getApp().globalData.uuid,
-						act: 'del',
-						id: this.arcID
-					},
-					header: {
-						'content-type': 'application/json',
-						'sign': getApp().globalData.headerSign
-					},
-					success: (res) => {
-						uni.hideLoading();
-						if (res.data.success === "yes") {
-							uni.showToast({
-								title: '删除成功',
-								icon: 'success'
-							});
-							// 删除成功后返回上一页
-							setTimeout(() => {
-								uni.navigateBack({
-									delta: 1
-								});
-							}, 1500);
-						} else {
-							uni.showToast({
-								title: '删除失败',
-								icon: 'none'
+			uni.request({
+				url: this.$apiHost + '/WorkAI/queueAction',
+				method: 'GET',
+				data: {
+					uuid: getApp().globalData.uuid,
+					act: 'del',
+					id: this.arcID
+				},
+				header: {
+					'content-type': 'application/json',
+					'sign': getApp().globalData.headerSign
+				},
+				success: (res) => {
+					uni.hideLoading();
+					if (res.data.success === "yes") {
+						uni.showToast({
+							title: '删除成功',
+							icon: 'success'
+						});
+						// 删除成功后返回上一页
+						setTimeout(() => {
+							uni.navigateBack({
+								delta: 1
 							});
-						}
-					},
-					fail: () => {
-						uni.hideLoading();
+						}, 1500);
+					} else {
 						uni.showToast({
 							title: '删除失败',
 							icon: 'none'
 						});
 					}
-				});
-			},
-			// 显示添加说明弹窗
-			showAddNotePopup() {
-				this.showNotePopup = true;
-			},
-			// 关闭添加说明弹窗
-			closeAddNotePopup() {
-				this.showNotePopup = false;
-			},
-			// 确认添加说明
-			confirmAddNote() {
-				if (!this.noteContent.trim()) {
+				},
+				fail: () => {
+					uni.hideLoading();
 					uni.showToast({
-						title: '请输入说明内容',
+						title: '删除失败',
 						icon: 'none'
 					});
-					return;
 				}
-
-				uni.showLoading({
-					title: '保存中...'
+			});
+		},
+		// 显示添加说明弹窗
+		showAddNotePopup() {
+			this.showNotePopup = true;
+		},
+		// 关闭添加说明弹窗
+		closeAddNotePopup() {
+			this.showNotePopup = false;
+		},
+		// 确认添加说明
+		confirmAddNote() {
+			if (!this.noteContent.trim()) {
+				uni.showToast({
+					title: '请输入说明内容',
+					icon: 'none'
 				});
+				return;
+			}
 
-				uni.request({
-					url: this.$apiHost + '/WorkAI/queueAction',
-					method: 'GET',
-					data: {
-						uuid: getApp().globalData.uuid,
-						act: 'editContent',
-						content: this.noteContent,
-						id: this.arcID
-					},
-					header: {
-						'content-type': 'application/json',
-						'sign': getApp().globalData.headerSign
-					},
-					success: (res) => {
-						uni.hideLoading();
-						if (res.data.success === "yes") {
-							uni.showToast({
-								title: '添加说明成功',
-								icon: 'success'
-							});
-							this.showNotePopup = false;
-							// this.noteContent = '';
-							// 重新加载数据
-							this.loadData();
-						} else {
-							uni.showToast({
-								title: '添加说明失败',
-								icon: 'none'
-							});
-						}
-					},
-					fail: () => {
-						uni.hideLoading();
+			uni.showLoading({
+				title: '保存中...'
+			});
+
+			uni.request({
+				url: this.$apiHost + '/WorkAI/queueAction',
+				method: 'GET',
+				data: {
+					uuid: getApp().globalData.uuid,
+					act: 'editContent',
+					content: this.noteContent,
+					id: this.arcID
+				},
+				header: {
+					'content-type': 'application/json',
+					'sign': getApp().globalData.headerSign
+				},
+				success: (res) => {
+					uni.hideLoading();
+					if (res.data.success === "yes") {
+						uni.showToast({
+							title: '添加说明成功',
+							icon: 'success'
+						});
+						this.noteContent = '';
+						this.closeContentPopUpWindow();
+						// 重新加载数据
+						this.loadData();
+					} else {
 						uni.showToast({
 							title: '添加说明失败',
 							icon: 'none'
 						});
 					}
-				});
-			},
-			// 发布作品
-			publishWork() {
-				uni.showLoading({
-					title: '发布中...'
-				});
+				},
+				fail: () => {
+					uni.hideLoading();
+					uni.showToast({
+						title: '添加说明失败',
+						icon: 'none'
+					});
+				}
+			});
+		},
+		// 发布作品
+		publishWork() {
+			uni.showLoading({
+				title: '发布中...'
+			});
 
-				uni.request({
-					url: this.$apiHost + '/WorkAI/queueAction',
-					method: 'GET',
-					data: {
-						uuid: getApp().globalData.uuid,
-						act: 'fabu',
-						id: this.arcID
-					},
-					header: {
-						'content-type': 'application/json',
-						'sign': getApp().globalData.headerSign
-					},
-					success: (res) => {
-						console.log("resddd", res.data);
-						uni.hideLoading();
-						if (res.data.success === "yes") {
-							uni.showToast({
-								title: '发布成功',
-								icon: 'success'
-							});
-							// 重新加载数据
-							// this.loadData();
-						} else {
-							uni.showToast({
-								title: res.data.str || '发布失败',
-								icon: 'none'
-							});
-						}
-					},
-					fail: () => {
-						uni.hideLoading();
+			uni.request({
+				url: this.$apiHost + '/WorkAI/queueAction',
+				method: 'GET',
+				data: {
+					uuid: getApp().globalData.uuid,
+					act: 'fabu',
+					id: this.arcID
+				},
+				header: {
+					'content-type': 'application/json',
+					'sign': getApp().globalData.headerSign
+				},
+				success: (res) => {
+					console.log("resddd", res.data);
+					uni.hideLoading();
+					if (res.data.success === "yes") {
 						uni.showToast({
-							title: '发布失败',
+							title: '发布成功',
+							icon: 'success'
+						});
+						// 重新加载数据
+						// this.loadData();
+					} else {
+						uni.showToast({
+							title: res.data.str || '发布失败',
 							icon: 'none'
 						});
 					}
-				});
-			},
-			startDrag(event) {
-				this.isDragging = true;
-				this.startY = event.clientY;
-				this.initialOffsetY = this.offsetY || 0;
-			},
-			stopDrag() {
-				this.isDragging = false;
-			},
-			drag(event) {
-				if (this.isDragging) {
-					const deltaY = event.clientY - this.startY;
-					const newOffsetY = this.initialOffsetY + deltaY;
+				},
+				fail: () => {
+					uni.hideLoading();
+					uni.showToast({
+						title: '发布失败',
+						icon: 'none'
+					});
+				}
+			});
+		},
+		startDrag(event) {
+			this.isDragging = true;
+			this.startY = event.clientY;
+			this.initialOffsetY = this.offsetY || 0;
+		},
+		stopDrag() {
+			this.isDragging = false;
+		},
+		drag(event) {
+			if (this.isDragging) {
+				const deltaY = event.clientY - this.startY;
+				const newOffsetY = this.initialOffsetY + deltaY;
 
-					// Get the height of the lyrics text
-					const lyricsTextHeight = this.$refs.lyricsText ? this.$refs.lyricsText.$el.clientHeight : 0;
-					const imageBoxHeight = this.$refs.ImageBox ? this.$refs.ImageBox.$el.clientHeight : 0;
+				// Get the height of the lyrics text
+				const lyricsTextHeight = this.$refs.lyricsText ? this.$refs.lyricsText.$el.clientHeight : 0;
+				const imageBoxHeight = this.$refs.ImageBox ? this.$refs.ImageBox.$el.clientHeight : 0;
 
 
-					// Define the threshold limits based on the height of the lyrics text
-					const minY = -lyricsTextHeight + 50 + imageBoxHeight; // Allow some space above
-					const maxY = lyricsTextHeight/2;  // Allow some space below
+				// Define the threshold limits based on the height of the lyrics text
+				const minY = -lyricsTextHeight + 50 + imageBoxHeight; // Allow some space above
+				const maxY = lyricsTextHeight / 2;  // Allow some space below
 
-					// Apply the limits
-					this.offsetY = Math.min(Math.max(newOffsetY, minY), maxY);
+				// Apply the limits
+				this.offsetY = Math.min(Math.max(newOffsetY, minY), maxY);
 
-					// Log the height and current offset
-					console.log('Lyrics Text Height:', lyricsTextHeight);
-					console.log('Current Offset Y:', this.offsetY);
-					console.log(this);
-				}
-			},
-			rgbToHex(r, g, b) {
-				return '#' + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);
+				// Log the height and current offset
+				console.log('Lyrics Text Height:', lyricsTextHeight);
+				console.log('Current Offset Y:', this.offsetY);
+				console.log(this);
 			}
+		},
+		rgbToHex(r, g, b) {
+			return '#' + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);
 		}
 	}
+}
 </script>
 
 <style scoped lang="scss">
-	@import 'makeDetail.scss';
+@import 'makeDetail.scss';
+.openContentPopUpWindow {
+  ::v-deep.uv-textarea {
+    width: 694rpx !important;
+    border-radius: 20rpx !important;
+    border: 1rpx solid #000000 !important;
+    margin: 0 auto;
+    margin-bottom: 44rpx;
+	min-height: 300rpx;
+  }
+}
+
 </style>

+ 94 - 16
pages/makedetail/makeImgDetail.vue

@@ -31,7 +31,7 @@
 			</view>
 			<view class="preview-card">
 				<image src="@/static/makedetail/cz_icon_jiazai.png" mode="aspectFit"></image>
-				<view class="text1">排队中1/262</view>
+				<view class="text1">排队中{{ queuePosition + '/' + allPosition }}</view>
 				<view class="text2">退出不影响继续生成</view>
 			</view>
 		</view>
@@ -40,7 +40,7 @@
 			<view class="section-title">创作预览</view>
 			<view class="preview-card">
 				<image src="@/static/makedetail/cz_icon_shengcheng.png" mode="aspectFit"></image>
-				<view class="text1">生成中0%</view>
+				<view class="text1">生成中{{ progress }}%</view>
 				<view class="text2">退出不影响继续生成</view>
 			</view>
 		</view>
@@ -51,7 +51,7 @@
 			<view class="description-section">
 				<view class="section-header">
 					<text class="section-title">创作描述<text style="display: none;" class="required">*</text></text>
-					<view class="clear-text" @click="clearDescription">
+					<view class="clear-text" @click="doYouWantToEdit() ? state() : clearDescription">
 						<image src="/static/clear.png" mode="aspectFit"></image>
 						<view class="clear-box">
 							<image src="@/static/makedetail/cz_icon_qingkongwenben.png" class="edit"></image>
@@ -60,37 +60,40 @@
 					</view>
 				</view>
 				<textarea auto-height class="input-area" v-model="description" placeholder="请输入描述语,例如:穿着白色运动服,外表俊朗..."
-					maxlength="1000" @input="onDescriptionInput" disabled="doYouWantToEdit"></textarea>
+					maxlength="1000" @input="onDescriptionInput" :disabled="doYouWantToEdit()"></textarea>
 				<view class="word-count">{{ descriptionLength }}/1000</view>
 			</view>
 
 			<!-- 行为动作选择区 -->
 			<view class="action-section">
 				<view class="section-title">行为动作</view>
-				<input class="input-box" v-model="action" placeholder="可输入也可点击推荐词" />
+				<input :disabled="doYouWantToEdit()" class="input-box" v-model="action" placeholder="可输入也可点击推荐词" />
 				<view class="tag-group">
-					<text class="tag" v-for="(item, index) in actionTags" :key="index" @click="selectAction(item)"
-						:class="{ active: action == item }">{{ item }}</text>
+					<text class="tag" v-for="(item, index) in actionTags" :key="index"
+						@click="doYouWantToEdit() ? state() : selectAction(item)" :class="{ active: action == item }">{{
+							item }}</text>
 				</view>
 			</view>
 
 			<!-- 主体环境选择区 -->
 			<view class="environment-section">
 				<view class="section-title">主体环境</view>
-				<input class="input-box" v-model="environment" placeholder="可输入也可点击推荐词" />
+				<input class="input-box" v-model="environment" :disabled="doYouWantToEdit()" placeholder="可输入也可点击推荐词" />
 				<view class="tag-group">
 					<text class="tag" v-for="(item, index) in environmentTags" :key="index"
-						@click="selectEnvironment(item)" :class="{ active: environment == item }">{{ item }}</text>
+						@click="doYouWantToEdit() ? state() : selectEnvironment(item)"
+						:class="{ active: environment == item }">{{ item }}</text>
 				</view>
 			</view>
 
 			<!-- 主体形象选择区 -->
 			<view class="image-section">
 				<view class="section-title">主体形象</view>
-				<input class="input-box" v-model="image" placeholder="可输入也可点击推荐词" />
+				<input class="input-box" v-model="image" :disabled="doYouWantToEdit()" placeholder="可输入也可点击推荐词" />
 				<view class="tag-group">
-					<text class="tag" v-for="(item, index) in imageTags" :key="index" @click="selectImage(item)"
-						:class="{ active: image == item }">{{ item
+					<text class="tag" v-for="(item, index) in imageTags" :key="index"
+						@click="doYouWantToEdit() ? state() : selectImage(item)" :class="{ active: image == item }">{{
+							item
 						}}</text>
 				</view>
 			</view>
@@ -99,7 +102,8 @@
 				<view class="section-title">选择参考风格<text style="display: none;" class="required">*</text></view>
 				<scroll-view class="style-scroll" scroll-x>
 					<view class="style-item" v-for="(item, index) in styleList" :key="index"
-						:class="{ 'active': selectedStyle === index }" @click="selectStyle(index)">
+						:class="{ 'active': selectedStyle === index }"
+						@click="doYouWantToEdit() ? state() : selectStyle(index)">
 						<image :src="item.image" mode="aspectFill"></image>
 						<text>{{ item.name }}</text>
 					</view>
@@ -109,12 +113,12 @@
 
 			<!-- 底部按钮 -->
 			<view class="bottom-button">
-				<button v-if="!doYouWantToEdit" class="generate-btn" @click="generateImage">立即生成
+				<button v-if="doYouWantToEdit" class="generate-btn" @click="generateImage">立即生成
 					<image src="/static/icon/coin_cd.png" mode="aspectFit"></image>
 					10
 				</button>
 
-				<view v-else class="generate-btn prohibit"  >生成中
+				<view v-else class="generate-btn prohibit">生成中
 				</view>
 
 
@@ -132,6 +136,9 @@
 export default {
 	data() {
 		return {
+			queuePosition: '0',
+			allPosition: '0',
+			progress: '', //创作进度 
 			description: '',
 			descriptionLength: 0,
 			action: '',
@@ -149,6 +156,14 @@ export default {
 				name: '国风新锋',
 				image: '../../static/dome/fenge.png'
 			},
+			{
+				name: '萌系治愈',
+				image: '../../static/dome/fenge.png'
+			},
+			{
+				name: '萌系治愈',
+				image: '../../static/dome/fenge.png'
+			},
 			{
 				name: '萌系治愈',
 				image: '../../static/dome/fenge.png'
@@ -163,11 +178,27 @@ export default {
 	onLoad(e) {
 		// this.checkQueueStatus()
 		this.getMyInfo();
-	}, 
+		if (e.id) {
+			this.getQueueDetail(e.id)
+		}
+	},
 	methods: {
 		doYouWantToEdit() {
 			return this.inQueue || this.queuing
 		},
+		state() {
+			if (this.inQueue) {
+				uni.showToast({
+					title: '正在创作中无法修改',
+					icon: 'none'
+				})
+			} else if (this.queuing) {
+				uni.showToast({
+					title: '正在排队中无法修改',
+					icon: 'none'
+				})
+			}
+		},
 		goBack() {
 			uni.navigateBack()
 		},
@@ -238,6 +269,7 @@ export default {
 		selectStyle(index) {
 			this.selectedStyle = index
 		},
+		 
 		generateImage() {
 			if (!this.description) {
 				uni.showToast({
@@ -297,6 +329,52 @@ export default {
 					});
 				}
 			})
+		},
+		getQueueDetail(id) {
+			if (!id) {
+				return
+			}
+			let that = this
+			uni.request({
+				url: this.$apiHost + '/WorkAI/getQueueDetail',
+				data: {
+					uuid: getApp().globalData.uuid,
+					id: id
+				},
+				header: {
+					'Content-Type': 'application/x-www-form-urlencoded',
+					'sign': getApp().globalData.headerSign
+				},
+				dataType: 'json',
+				success: (res) => {
+					console.log("查询单个结果:", res.data);
+					if (res.data.success == "yes") {
+						var { queuePosition, allPosition, progress, description, action, environment, environment, style } = res.data.data
+						that.queuePosition = queuePosition
+						that.allPosition = allPosition
+						that.progress = progress
+						that.description = description
+						that.action = action
+						that.environment = environment
+						that.selectedStyle = that.styleList.findIndex(item => item.name == style)
+						if (queuePosition == allPosition) {
+							// 创作中逻辑
+							that.inQueue = true
+						} else if (queuePosition < allPosition) {
+							// 排队中逻辑
+							that.queuing = true
+
+						}
+					}
+				},
+				fail: (err) => {
+					console.log('查询失败失败:', err);
+					uni.showToast({
+						title: '查询失败请求失败',
+						icon: 'none'
+					});
+				}
+			})
 		}
 	}
 }

+ 16 - 12
pages/makedetail/makeMusicDetail.scss

@@ -210,6 +210,9 @@
     .input-section {
       margin-bottom: 20rpx;
       animation: fadeIn 0.5s ease;
+      position: relative;
+      left: 0;
+      top: 0;
 
       .label {
         font-size: 28rpx;
@@ -256,20 +259,16 @@
         justify-content: flex-end;
         align-items: center;
         margin-top: 16rpx;
+        position: absolute;
+        bottom: 35rpx;
+        right: 40rpx;
 
         .ai-btn {
-          color: #007aff;
-          font-size: 28rpx;
-          font-weight: 500;
-          padding: 10rpx 20rpx;
-          border-radius: 30rpx;
-          background: rgba(0, 122, 255, 0.1);
-          transition: all 0.3s ease;
-
-          &:active {
-            background: rgba(0, 122, 255, 0.2);
-            transform: scale(0.98);
-          }
+       image{
+        width: 134rpx;
+        height: 52rpx;
+        margin-left: 20rpx;
+       }
         }
       }
 
@@ -277,6 +276,11 @@
         font-size: 24rpx;
         color: #999;
       }
+      .lyricCount{
+        position: absolute;
+        bottom:50rpx;
+        right: 40rpx;
+      }
     }
 
     .style-section {

+ 81 - 7
pages/makedetail/makeMusicDetail.vue

@@ -76,18 +76,21 @@
 			<!-- 歌曲名称输入 -->
 			<view class="input-section">
 				<text class="label">歌曲名称</text>
-				<input type="text" placeholder="请输入名称..." class="input-field" maxlength="30" v-model="songName" />
-				<text class="count">{{ songName.length }}/30</text>
+				<input type="text" placeholder="请输入名称..." class="input-field" maxlength="30" v-model="songName"
+					:disabled="doYouWantToEdit()" />
+				<text class="count lyricCount">{{ songName.length }}/30</text>
 			</view>
 
 			<!-- 创作歌词输入 -->
 			<view class="input-section">
 				<text class="label">创作歌词</text>
 				<textarea placeholder="请在此处输入您想要进行联想的内容或者歌词" class="textarea-field" maxlength="800" v-model="lyrics"
-					:style="{ height: textareaHeight + 'px' }" @input="onTextareaInput" />
+					:disabled="doYouWantToEdit()" :style="{ height: textareaHeight + 'px' }" @input="onTextareaInput" />
 				<view class="textarea-footer">
 					<text class="count">{{ lyrics.length }}/800</text>
-					<text class="ai-btn" v-if="false">AI润词</text>
+					<text class="ai-btn" v-if="false">
+						<image src="@/static/makedetail/cz_btn_airunse.png"></image>
+					</text>
 				</view>
 			</view>
 
@@ -118,14 +121,15 @@
 				</view>
 				<view class="tags">
 					<text v-for="(tag, index) in currentTags" :key="index"
-						:class="['tag', { active: selectedTags[selectedTab].includes(tag) }]" @click="toggleTag(tag)">
+						:class="['tag', { active: selectedTags[selectedTab].includes(tag) }]"
+						@click="doYouWantToEdit() ? state() : toggleTag(tag)">
 						{{ tag }}
 					</text>
 				</view>
 			</view>
 		</view>
 
-		 
+
 
 		<!-- 底部按钮 -->
 		<view class="bottom-button">
@@ -174,9 +178,12 @@ export default {
 			myinfo: {}
 		}
 	},
-	onLoad() {
+	onLoad(e) {
 		// this.checkQueueStatus();
 		this.getMyInfo();
+		if (e.id) {
+			this.getQueueDetail(e.id)
+		}
 	},
 	computed: {
 		currentTags() {
@@ -264,6 +271,7 @@ export default {
 				...this.selectedTags.era,
 				...this.selectedTags.instrument
 			];
+			console.log(this.lyrics, this.songName,);
 
 			let that = this
 			uni.request({
@@ -323,13 +331,79 @@ export default {
 				this.selectedTab = tab;
 				// 不再清空已选择的标签
 			}
+		}, 
+		state() {
+			if (this.inQueue) {
+				uni.showToast({
+					title: '正在创作中无法修改',
+					icon: 'none'
+				})
+			} else if (this.queuing) {
+				uni.showToast({
+					title: '正在排队中无法修改',
+					icon: 'none'
+				})
+			}
 		},
+		
 		toggleTag(tag) {
 			if (this.selectedTags[this.selectedTab].includes(tag)) {
 				this.selectedTags[this.selectedTab] = this.selectedTags[this.selectedTab].filter(t => t !== tag);
 			} else {
 				this.selectedTags[this.selectedTab].push(tag);
 			}
+		},
+		getQueueDetail(id) {
+			if (!id) {
+				return
+			}
+			let that = this
+			uni.request({
+				url: this.$apiHost + '/WorkAI/getQueueDetail',
+				data: {
+					uuid: getApp().globalData.uuid,
+					id: id
+				},
+				header: {
+					'Content-Type': 'application/x-www-form-urlencoded',
+					'sign': getApp().globalData.headerSign
+				},
+				dataType: 'json',
+				success: (res) => {
+					console.log("查询单个结果:", res.data);
+					if (res.data.success == "yes") {
+						var { queuePosition, allPosition, song_name,lyrics,style} = res.data.data
+						that.songName=song_name
+						that.lyrics =lyrics
+ 
+						const styles = style.split(',');
+						styles.forEach(tag => {
+							for (const [key, tags] of Object.entries(that.tagOptions)) {
+								if (tags.includes(tag)) {
+									that.selectedTags[key].push(tag);
+									break;
+								}
+							}
+						});
+
+						if (queuePosition == allPosition) {
+							// 创作中逻辑
+							that.inQueue = true
+						} else if (queuePosition < allPosition) {
+							// 排队中逻辑
+							that.queuing = true
+
+						}
+					}
+				},
+				fail: (err) => {
+					console.log('查询失败失败:', err);
+					uni.showToast({
+						title: '查询失败请求失败',
+						icon: 'none'
+					});
+				}
+			})
 		}
 	}
 }

+ 1 - 0
pages/message/mailMessage.scss

@@ -1,5 +1,6 @@
 page {
 	background-color: #FFFFFF;
+	padding-bottom: 144rpx;
 }
 .page {
 	background-color: #FFFFFF;

+ 0 - 1
pages/my/editInfo.vue

@@ -195,7 +195,6 @@ export default {
 		closePropUp() {
 			this.$refs.openNicknamePopUpWindow.close();
 			this.$refs.openContentPopUpWindow.close();
-
 		},
 		onBack() { },
 		onPreview() { },

+ 1 - 1
pages/my/follow.vue

@@ -12,7 +12,7 @@
 
 		<view class="follow-list">
 			<view class="follow-item" v-for="(item, index) in currentList" :key="index">
-				<CircleAvatar class="avator" :src="item.avatar"></CircleAvatar>
+				<CircleAvatar class="avator" :src="item.avator"></CircleAvatar>
 				<view class="info">
 					<view class="top-box">
 						<view class="name">{{ item.name }}</view>

+ 2 - 1
pages/my/my.scss

@@ -1,11 +1,12 @@
 page {
   background-color: #fff;
   padding-top: var(--status-bar-height);
+  padding-bottom: 144rpx;
 }
 .page {
   background-color: #fff;
   width: 100%;
-  height: 100vh;
+  min-height: 100vh;
 }
 .topBody {
   width: 750rpx;

+ 510 - 554
pages/my/my.vue

@@ -1,115 +1,87 @@
 <template>
-  <view class="page">
-    <view class="topBody">
-      <view class="header">
-        <view class="card-box">
-          <view class="card-top">
-            <view class="top-box">
-              <view class="hello-box"> Hello! </view>
-              <view class="settingBtn-box">
-                <image src="@/static/me/wd_icon_fenxian.png" mode=""></image>
-                <image
-                  src="@/static/me/wd_icon_shezhi.png"
-                  mode=""
-                  @click="navigateToSettings"
-                ></image>
-              </view>
-            </view>
-            <view class="userinfo-box" @click="goPage('/pages/my/editInfo')">
-              <view class="userinfo-left">
-                <CircleAvatar
-                  class="avator"
-                  :src="myinfo.avator"
-                ></CircleAvatar>
-              </view>
-              <view class="userinfo-right">
-                <view class="nickname">
-                  <text class="one-omit">{{ myinfo.nickname }}</text>
-                  <image
-                    src="../../static/icon/wd_icon_nan.png"
-                    mode="widthFix"
-                    v-if="myinfo.sex_id == 1"
-                  />
-                  <image
-                    src="../../static/icon/wd_icon_nv.png"
-                    mode="widthFix"
-                    v-else-if="myinfo.sex_id == 2"
-                  />
-                  <view class="level">Lv{{ myinfo.my_level }}</view>
-                </view>
-                <view class="label">
-                  <view v-for="(item, index) in aihao_tags" :key="index + item">
-                    {{ item }}
-                  </view>
-                </view>
-              </view>
-            </view>
-            <view class="intro_row">
-              <block v-if="myinfo.content == ''">
-                <text class="intro_text two-omit">添加简介</text>
-                <image
-                  src="@/static/icon/wd_icon_edit.png"
-                  mode="widthFix"
-                  class="add_icon"
-                />
-              </block>
-              <uv-text v-else class="intro_text two-omit">
-                {{ myinfo.content }}
-              </uv-text>
-            </view>
-            <view class="bom">
-              <view class="follow_info" @click="navigateToFollow">
-                <view class="follow-box">
-                  <view class="num">{{ myinfo.num_attention }}</view>
-                  <view class="label">关注</view>
-                </view>
-                <view class="separator"></view>
-                <view class="follow-box">
-                  <view class="num">{{ myinfo.num_fans }}</view>
-                  <view class="label">粉丝</view>
-                </view>
-                <view class="separator"></view>
-                <view class="follow-box">
-                  <view class="num">{{ myinfo.num_like }}</view>
-                  <view class="label">获赞</view>
-                </view>
-              </view>
-              <view class="points-box">
-                <view class="points">
-                  <image src="@/static/icon/wd_icon_coin.png" mode=""></image>
-                  {{ myinfo.num_gmm }}
-                </view>
-                <view class="points">
-                  <image
-                    src="@/static/icon/wd_icon_xingyuan.png"
-                    mode=""
-                  ></image>
-                  {{ myinfo.num_gmd }}
-                </view>
-              </view>
-            </view>
-          </view>
-          <view class="card-bom" @click="goPage('/pages/vip/index')">
-            <view class="content-box">
-              <image
-                v-if="false"
-                src="@/static/me/icon-vip2.png"
-                mode=""
-              ></image>
-              <image
-                v-else-if="0"
-                src="@/static/me/icon-vip1.png"
-                mode=""
-              ></image>
-              <image v-else src="@/static/me/icon-vip0.png" mode=""></image>
-              <text v-if="true">开启专属会员权益</text>
-              <text v-else>会员权益生效中</text>
-            </view>
-            <image src="@/static/me/wd_icon_jiantou.png" mode=""></image>
-          </view>
-        </view>
-      </view>
-      <!-- <view class="header1">
+	<view class="page">
+		<view class="topBody">
+			<view class="header">
+				<view class="card-box">
+					<view class="card-top">
+						<view class="top-box">
+							<view class="hello-box"> Hello! </view>
+							<view class="settingBtn-box">
+								<image src="@/static/me/wd_icon_fenxian.png" mode=""></image>
+								<image src="@/static/me/wd_icon_shezhi.png" mode="" @click="navigateToSettings"></image>
+							</view>
+						</view>
+						<view class="userinfo-box" @click="goPage('/pages/my/editInfo')">
+							<view class="userinfo-left">
+								<CircleAvatar class="avator" :src="myinfo.avator"></CircleAvatar>
+							</view>
+							<view class="userinfo-right">
+								<view class="nickname">
+									<text class="one-omit">{{ myinfo.nickname }}</text>
+									<image src="../../static/icon/wd_icon_nan.png" mode="widthFix"
+										v-if="myinfo.sex_id == 1" />
+									<image src="../../static/icon/wd_icon_nv.png" mode="widthFix"
+										v-else-if="myinfo.sex_id == 2" />
+									<view class="level">Lv{{ myinfo.my_level }}</view>
+								</view>
+								<view class="label">
+									<view v-for="(item, index) in aihao_tags" :key="index + item">
+										{{ item }}
+									</view>
+								</view>
+							</view>
+						</view>
+						<view class="intro_row">
+							<block v-if="myinfo.content == ''">
+								<text class="intro_text two-omit">添加简介</text>
+								<image src="@/static/icon/wd_icon_edit.png" mode="widthFix" class="add_icon" />
+							</block>
+							<uv-text v-else class="intro_text two-omit">
+								{{ myinfo.content }}
+							</uv-text>
+						</view>
+						<view class="bom">
+							<view class="follow_info" @click="navigateToFollow">
+								<view class="follow-box">
+									<view class="num">{{ myinfo.num_attention }}</view>
+									<view class="label">关注</view>
+								</view>
+								<view class="separator"></view>
+								<view class="follow-box">
+									<view class="num">{{ myinfo.num_fans }}</view>
+									<view class="label">粉丝</view>
+								</view>
+								<view class="separator"></view>
+								<view class="follow-box">
+									<view class="num">{{ myinfo.num_like }}</view>
+									<view class="label">获赞</view>
+								</view>
+							</view>
+							<view class="points-box">
+								<view class="points">
+									<image src="@/static/icon/wd_icon_coin.png" mode=""></image>
+									{{ myinfo.num_gmm }}
+								</view>
+								<view class="points">
+									<image src="@/static/icon/wd_icon_xingyuan.png" mode=""></image>
+									{{ myinfo.num_gmd }}
+								</view>
+							</view>
+						</view>
+					</view>
+					<view class="card-bom" @click="goPage('/pages/vip/index')">
+						<view class="content-box">
+							<image v-if="false" src="@/static/me/icon-vip2.png" mode=""></image>
+							<image v-else-if="0" src="@/static/me/icon-vip1.png" mode=""></image>
+							<image v-else src="@/static/me/icon-vip0.png" mode=""></image>
+							<text v-if="true">开启专属会员权益</text>
+							<text v-else>会员权益生效中</text>
+						</view>
+						<image src="@/static/me/wd_icon_jiantou.png" mode=""></image>
+					</view>
+				</view>
+			</view>
+			<!-- <view class="header1">
 				<view class="topBg"></view>
 				<view class="settingBtn" @click="navigateToSettings">
 					<image src="/static/me/setting.png"></image>
@@ -167,29 +139,21 @@
 					</view>
 				</view>
 			</view> -->
-      <!-- <view class="whiteItem">
+			<!-- <view class="whiteItem">
 				<view class="btn">开启专属会员权益</view>
 			</view> -->
-      <view class="myinfo">
-        <!-- <view class="line"></view> -->
-        <view class="tablist">
-          <view
-            class="item"
-            :class="{ active: activeTab === 0 }"
-            @click="switchTab(0)"
-            >我的作品
-            <view class="indicator-triangle"> </view>
-          </view>
-          <view
-            class="item"
-            :class="{ active: activeTab === 1 }"
-            @click="switchTab(1)"
-            >生成中
-            <view class="indicator-triangle"> </view>
-          </view>
-        </view>
-        <view class="numlist1" v-if="activeTab === 0" style="margin-top: 60rpx">
-          <!-- 	<view class="item" v-for="(item, index) in worksList" :key="index" @click="goWork(item)">
+			<view class="myinfo">
+				<!-- <view class="line"></view> -->
+				<view class="tablist">
+					<view class="item" :class="{ active: activeTab === 0 }" @click="switchTab(0)">我的作品
+						<view class="indicator-triangle"> </view>
+					</view>
+					<view class="item" :class="{ active: activeTab === 1 }" @click="switchTab(1)">生成中
+						<view class="indicator-triangle"> </view>
+					</view>
+				</view>
+				<view class="numlist1" v-if="activeTab === 0" style="margin-top: 60rpx">
+					<!-- 	<view class="item" v-for="(item, index) in worksList" :key="index" @click="goWork(item)">
 						<view v-if="item.task_type == 1" class="icon-box">
 							<image :class="'icon' + item.images" :src="item.images ||
 								item.img_url ||
@@ -214,447 +178,439 @@
 							仅个人可见
 						</view>
 					</view> -->
-          <WorkItem
-            v-for="(item, index) in worksList"
-            :secrecy="true"
-            :key="index"
-            :item="item"
-            @click="goWork(item)"
-          />
-        </view>
-        <view class="numlist2" v-if="activeTab === 1" style="margin-top: 60rpx">
-            <view class="item" v-for="(item, index) in worksList" :key="index">
-              <view class="num" @click="goWork(item)">
-                <WorkItem :item="item" />
+					<WorkItem v-for="(item, index) in worksList" :secrecy="true" :key="index" :item="item"
+						@click="goWork(item)" />
+				</view>
+				<view class="numlist2" v-if="activeTab === 1" style="margin-top: 60rpx">
+					<view class="item" v-for="(item, index) in worksList" :key="index">
+						<view class="num" @click="goWork(item)">
+							<WorkItem :item="item" />
 
-                <image
-                  class="incomplete-bg"
-                  v-if="item.status != 9"
-                  src="@/static/me/wd_bg_zhizuozhong.png"
-                />
-                <view class="maskLayer"></view>
-                <!-- 当activeTab为1时显示队列状态 -->
-                <view class="queue-status">
+							<image class="incomplete-bg" v-if="item.status != 9"
+								src="@/static/me/wd_bg_zhizuozhong.png" />
+							<view class="maskLayer"></view>
+							<!-- 当activeTab为1时显示队列状态 -->
+							<view class="queue-status">
 
-                  <!-- 排队中 -->
-                  <view v-if="item.status === 1" class="status-text">
-					<!-- 排队中 -->
-                    <image class="state-img" src="@/static/me/wd_icon_paiduizhong.png"></image>
-                    <!-- ({{ item.queue_position }}/{{ item.all_position }}) -->
-                  </view>
-                  <!-- 生成失败 -->
-                  <view
-				  v-if="item.status === 3 || item.status === 4"
-				  class="status-text"
-                  > 
-				  <!-- 生成失败 -->
-                    <image class="state-img" src="@/static/me/wd_icon_zhizuoshibai.png"></image>
-                  </view>
-                  <!-- 制作中 -->
-                  <view v-else-if="item.status < 9" class="status-text">
-					<!-- 制作中 -->
-                    <image class="state-img" src="@/static/me/wd_icon_zhizuozhong.png"></image>
-                  </view>
-                  <!-- 创作完成 -->
-                  <view v-else-if="item.status === 9" class="status-text">
-					<!-- 创作完成 -->
-                    <image class="state-img" src="@/static/me/wd_icon_chuangzuowancheng.png"></image>
-                  </view>
-                </view>
-                <view class="name">{{
+								<!-- 排队中 -->
+								<view v-if="item.status === 1" class="status-text">
+									<!-- 排队中 -->
+									<image class="state-img" src="@/static/me/wd_icon_paiduizhong.png"></image>
+									<!-- ({{ item.queue_position }}/{{ item.all_position }}) -->
+								</view>
+								<!-- 生成失败 -->
+								<view v-if="item.status === 3 || item.status === 4" class="status-text">
+									<!-- 生成失败 -->
+									<image class="state-img" src="@/static/me/wd_icon_zhizuoshibai.png"></image>
+								</view>
+								<!-- 制作中 -->
+								<view v-else-if="item.status < 9" class="status-text">
+									<!-- 制作中 -->
+									<image class="state-img" src="@/static/me/wd_icon_zhizuozhong.png"></image>
+								</view>
+								<!-- 创作完成 -->
+								<view v-else-if="item.status === 9" class="status-text">
+									<!-- 创作完成 -->
+									<image class="state-img" src="@/static/me/wd_icon_chuangzuowancheng.png"></image>
+								</view>
+							</view>
+							<view class="name">{{
                   item.title || item.description || "作品" + index
                 }}</view>
 
-                <!-- 显示任务类型标签 -->
-                <view class="task-type-tag">
-					<image 
-					style="width: 120rpx; height:36rpx; "
-                   v-if="item.task_type === 1"
-                  src="@/static/me/wd_icon_lingganchuangzuo.png"
-                />
-					<image  
-					style="width: 82rpx; height:36rpx;"
-                   v-else-if="item.task_type === 2"
-                  src="@/static/me/wd_icon_yinyue.png"
-                />
-                  <!-- <text v-if="item.task_type === 1">灵感创作</text>
+							<!-- 显示任务类型标签 -->
+							<view class="task-type-tag">
+								<image style="width: 120rpx; height:36rpx; " v-if="item.task_type === 1"
+									src="@/static/me/wd_icon_lingganchuangzuo.png" />
+								<image style="width: 82rpx; height:36rpx;" v-else-if="item.task_type === 2"
+									src="@/static/me/wd_icon_yinyue.png" />
+								<!-- <text v-if="item.task_type === 1">灵感创作</text>
                   <text v-else-if="item.task_type === 2">音乐</text> -->
-                </view>
-              </view>
-            </view>
-        </view>
+							</view>
+						</view>
+					</view>
+				</view>
 
-        <!-- 加载更多提示 -->
-        <!-- <view class="loading-more" v-if="isLoading">加载中...</view>
+				<!-- 加载更多提示 -->
+				<!-- <view class="loading-more" v-if="isLoading">加载中...</view>
 				<view class="no-more" v-if="!hasMore && worksList.length > 0">没有更多作品了</view>
 				<view class="no-more" v-if="!hasMore && worksList.length === 0">暂无作品</view> -->
-      </view>
-      <view style="width: 100%; text-align: center"
-        >杭州智潮创意科技有限公司</view
-      >
+			</view>
+			<view style="width: 100%; text-align: center">杭州智潮创意科技有限公司</view>
 
-      <view class="blankHeight"></view>
-      <view class="blankHeight"></view>
-    </view>
+			<view class="blankHeight"></view>
+			<view class="blankHeight"></view>
+		</view>
 
-    <!-- 确认框 -->
-    <CustomConfirm ref="customConfirm"></CustomConfirm>
-    <!-- 提示框 -->
-    <DialogBox ref="DialogBox"></DialogBox>
-    <tabbar-view
-      :tabbars="tabbars"
-      :currentIndex="4"
-      ref="tabbar"
-    ></tabbar-view>
-  </view>
+		<!-- 确认框 -->
+		<CustomConfirm ref="customConfirm"></CustomConfirm>
+		<!-- 提示框 -->
+		<DialogBox ref="DialogBox"></DialogBox>
+		<tabbar-view :tabbars="tabbars" :currentIndex="4" ref="tabbar"></tabbar-view>
+	</view>
 </template>
 
 <script>
-import tabbarView from "@/components/tabbar/tabbar.vue";
-import tabbar from "@/mixins/tabbar";
-import CustomConfirm from "@/components/custome-confirm/customeConfirm.vue";
-import CircleAvatar from "@/components/CircleAvatar/CircleAvatar.vue";
-import meCard from "@/components/meCard/meCard.vue";
-import WorkItem from "@/components/WorkItem/WorkItem.vue";
-export default {
-  components: {
-    tabbarView,
-    CustomConfirm,
-    CircleAvatar,
-    meCard,
-    WorkItem,
-  },
-  mixins: [tabbar],
-  data() {
-    return {
-      title: "",
-      sel: 1,
-      myinfo: {
-        avator: "../../static/logo.png",
-        nickname: "王思思",
-        join_name: "注册日期:2024年5月",
-        num_1: 0,
-        num_2: 0,
-        num_3: 0,
-        num_4: 0,
-        is_login: "no",
-        num_history: 0,
-        num_collection: 0,
-      },
-      aihao_tags: [],
-      menu_list: [],
-      data_list: [
-        {
-          url: "https://e.zhichao.art/AI_images/a_1112_10.png",
-        },
-        {
-          url: "https://e.zhichao.art/AI_images/a_1112_108.png",
-        },
-        {
-          url: "https://e.zhichao.art/AI_images/a_1112_113.png",
-        },
-        {
-          url: "https://e.zhichao.art/AI_images/a_1112_13.png",
-        },
-        {
-          url: "https://e.zhichao.art/AI_images/a_1112_137.png",
-        },
-        {
-          url: "https://e.zhichao.art/AI_images/a_1112_141.png",
-        },
-        {
-          url: "https://e.zhichao.art/AI_images/a_1114__562.png",
-        },
-        {
-          url: "https://e.zhichao.art/AI_images/a_1114__568.png",
-        },
-        {
-          url: "https://e.zhichao.art/AI_images/a_1114__569.png",
-        },
-        {
-          url: "https://e.zhichao.art/AI_images/a_1114__570.png",
-        },
-        {
-          url: "https://e.zhichao.art/AI_images/a_1114__571.png",
-        },
-        {
-          url: "https://e.zhichao.art/AI_images/a_1114__575.png",
-        },
-      ],
-      activeTab: 0,
-      offset: 0,
-      hasMore: true,
-      isLoading: false,
-      worksList: [],
-    };
-  },
-  onLoad() {
-    // setTimeout(function() {
-    // 	uni.setNavigationBarColor({
-    // 		frontColor: '#ffffff',
-    // 		backgroundColor: '#00000000',
-    // 		animation: {
-    // 			duration: 400,
-    // 			timingFunc: 'easeIn'
-    // 		}
-    // 	})
-    // }, 200);
-  },
-  onShow() {
-    uni.$emit("check_login", () => {});
-    // this.loadData();
-    this.offset = 0;
-    this.hasMore = true;
-    this.worksList = [];
-    this.loadInfo();
-    this.loadWorksList();
-  },
-  onReachBottom() {
-    if (this.hasMore && !this.isLoading) {
-      this.loadMoreWorks();
-    }
-  },
-  methods: {
-    async showConfirm() {
-      let that = this;
-      this.$refs["customConfirm"]
-        .confirm({
-          title: "确认解绑",
-          content: "解绑微信账号后将无法继续使用它登录该App账号?",
-          DialogType: "inquiry",
-          btn1: "再考虑一下",
-          btn2: "确认解绑",
-          animation: 0,
-        })
-        .then((res) => {});
-    },
-    onBack() {},
-    chkSel() {
-      if (this.sel == 1) {
-        this.sel = 0;
-      } else {
-        this.sel = 1;
-      }
-    },
-    goPage(page) {
-      if (page == "kefu") {
-        let that = this;
-        // #ifdef APP-PLUS
-        plus.share.getServices((res) => {
-          const wechat = res.find((i) => i.id === "weixin");
-          if (wechat) {
-            wechat.openCustomerServiceChat(
-              {
-                corpid: "wwbc06aa8311b6ac08",
-                // url: 'https://work.weixin.qq.com/kfid/kfc4b0bcb4038d00a50'
-                url: that.myinfo.wxkf,
-              },
-              (src) => {
-                console.log("success:");
-              },
-              (err) => {
-                console.log("error:");
-              }
-            );
-          } else {
-            uni.showToast({
-              title: "没有检测到微信,请先安装",
-              icon: "error",
-            });
-          }
-        });
-        // #endif
-      } else if (page != "") {
-        uni.navigateTo({
-          url: page,
-        });
-      }
-    },
-    loadInfo() {
-      console.log({
-        uuid: getApp().globalData.uuid,
-        skey: getApp().globalData.skey,
-      });
-      uni.request({
-        url: this.$apiHost + "/User/getinfo",
-        data: {
-          uuid: getApp().globalData.uuid,
-          skey: getApp().globalData.skey,
-        },
-        header: {
-          "content-type": "application/json",
-          sign: getApp().globalData.headerSign,
-        },
-        success: (res) => {
-          console.log("----:", JSON.parse(JSON.stringify(res.data)));
-          if (res.data.need_login == "yes") {
-            // getApp().globalData.skey = "";
-            // getApp().globalData.uuid = "";
-            uni.removeStorageSync("wapptoken");
-            uni.redirectTo({
-              url: "/pages/login/login",
-            });
-            return;
-          }
-          if (res.data.aihao) {
-            this.aihao_tags = res.data.aihao.split(",");
-          }
-          this.myinfo = res.data;
-        },
-        complete: (com) => {
-          // uni.hideLoading();
-        },
-        fail: (e) => {
-          console.log("----e:", e);
-        },
-      });
-    },
-    onLogout() {
-      let that = this;
-      this.$refs["DialogBox"]
-        .confirm({
-          title: "提示",
-          content: "确定退出吗?",
-          DialogType: "inquiry",
-          btn1: "取消",
-          btn2: "退出",
-          animation: 0,
-        })
-        .then((res) => {
-          uni.request({
-            url: that.$apiHost + "/My/logout",
-            data: {
-              uuid: getApp().globalData.uuid,
-              skey: getApp().globalData.skey,
-            },
-            header: {
-              "content-type": "application/json",
-              sign: getApp().globalData.headerSign,
-            },
-            success: (res) => {
-              console.log("----:", res.data);
-              // getApp().globalData.skey = "";
-              // getApp().globalData.uuid = "";
-              uni.removeStorageSync("wapptoken");
-              uni.redirectTo({
-                url: "/pages/login/login",
-              });
-            },
-            complete: (com) => {
-              // uni.hideLoading();
-            },
-            fail: (e) => {
-              console.log("----e:", e);
-            },
-          });
-        });
-    },
-    switchTab(index) {
-      this.activeTab = index;
-      this.offset = 0;
-      this.hasMore = true;
-      this.worksList = [];
-      this.loadWorksList();
-    },
-    loadWorksList() {
-      if (this.isLoading) return;
-      this.isLoading = true;
+	import tabbarView from "@/components/tabbar/tabbar.vue";
+	import tabbar from "@/mixins/tabbar";
+	import CustomConfirm from "@/components/custome-confirm/customeConfirm.vue";
+	import CircleAvatar from "@/components/CircleAvatar/CircleAvatar.vue";
+	import meCard from "@/components/meCard/meCard.vue";
+	import WorkItem from "@/components/WorkItem/WorkItem.vue";
+	export default {
+		components: {
+			tabbarView,
+			CustomConfirm,
+			CircleAvatar,
+			meCard,
+			WorkItem,
+		},
+		mixins: [tabbar],
+		data() {
+			return {
+				title: "",
+				sel: 1,
+				myinfo: {
+					avator: "../../static/logo.png",
+					nickname: "王思思",
+					join_name: "注册日期:2024年5月",
+					num_1: 0,
+					num_2: 0,
+					num_3: 0,
+					num_4: 0,
+					is_login: "no",
+					num_history: 0,
+					num_collection: 0,
+				},
+				aihao_tags: [],
+				menu_list: [],
+				data_list: [{
+						url: "https://e.zhichao.art/AI_images/a_1112_10.png",
+					},
+					{
+						url: "https://e.zhichao.art/AI_images/a_1112_108.png",
+					},
+					{
+						url: "https://e.zhichao.art/AI_images/a_1112_113.png",
+					},
+					{
+						url: "https://e.zhichao.art/AI_images/a_1112_13.png",
+					},
+					{
+						url: "https://e.zhichao.art/AI_images/a_1112_137.png",
+					},
+					{
+						url: "https://e.zhichao.art/AI_images/a_1112_141.png",
+					},
+					{
+						url: "https://e.zhichao.art/AI_images/a_1114__562.png",
+					},
+					{
+						url: "https://e.zhichao.art/AI_images/a_1114__568.png",
+					},
+					{
+						url: "https://e.zhichao.art/AI_images/a_1114__569.png",
+					},
+					{
+						url: "https://e.zhichao.art/AI_images/a_1114__570.png",
+					},
+					{
+						url: "https://e.zhichao.art/AI_images/a_1114__571.png",
+					},
+					{
+						url: "https://e.zhichao.art/AI_images/a_1114__575.png",
+					},
+				],
+				activeTab: 0,
+				offset: 0,
+				hasMore: true,
+				isLoading: false,
+				worksList: [],
+			};
+		},
+		onLoad() {
+			// setTimeout(function() {
+			// 	uni.setNavigationBarColor({
+			// 		frontColor: '#ffffff',
+			// 		backgroundColor: '#00000000',
+			// 		animation: {
+			// 			duration: 400,
+			// 			timingFunc: 'easeIn'
+			// 		}
+			// 	})
+			// }, 200);
+		},
+		onShow() {
+			uni.$emit("check_login", () => {});
+			// this.loadData();
+			this.offset = 0;
+			this.hasMore = true;
+			this.worksList = [];
+			this.loadInfo();
+			this.loadWorksList();
+		},
+		onReachBottom() {
+			if (this.hasMore && !this.isLoading) {
+				this.loadMoreWorks();
+			}
+		},
+		methods: {
+			async showConfirm() {
+				let that = this;
+				this.$refs["customConfirm"]
+					.confirm({
+						title: "确认解绑",
+						content: "解绑微信账号后将无法继续使用它登录该App账号?",
+						DialogType: "inquiry",
+						btn1: "再考虑一下",
+						btn2: "确认解绑",
+						animation: 0,
+					})
+					.then((res) => {});
+			},
+			onBack() {},
+			chkSel() {
+				if (this.sel == 1) {
+					this.sel = 0;
+				} else {
+					this.sel = 1;
+				}
+			},
+			goPage(page) {
+				if (page == "kefu") {
+					let that = this;
+					// #ifdef APP-PLUS
+					plus.share.getServices((res) => {
+						const wechat = res.find((i) => i.id === "weixin");
+						if (wechat) {
+							wechat.openCustomerServiceChat({
+									corpid: "wwbc06aa8311b6ac08",
+									// url: 'https://work.weixin.qq.com/kfid/kfc4b0bcb4038d00a50'
+									url: that.myinfo.wxkf,
+								},
+								(src) => {
+									console.log("success:");
+								},
+								(err) => {
+									console.log("error:");
+								}
+							);
+						} else {
+							uni.showToast({
+								title: "没有检测到微信,请先安装",
+								icon: "error",
+							});
+						}
+					});
+					// #endif
+				} else if (page != "") {
+					uni.navigateTo({
+						url: page,
+					});
+				}
+			},
+			loadInfo() {
+				console.log({
+					uuid: getApp().globalData.uuid,
+					skey: getApp().globalData.skey,
+				});
+				uni.request({
+					url: this.$apiHost + "/User/getinfo",
+					data: {
+						uuid: getApp().globalData.uuid,
+						skey: getApp().globalData.skey,
+					},
+					header: {
+						"content-type": "application/json",
+						sign: getApp().globalData.headerSign,
+					},
+					success: (res) => {
+						console.log("----:", JSON.parse(JSON.stringify(res.data)));
+						if (res.data.need_login == "yes") {
+							// getApp().globalData.skey = "";
+							// getApp().globalData.uuid = "";
+							uni.removeStorageSync("wapptoken");
+							uni.redirectTo({
+								url: "/pages/login/login",
+							});
+							return;
+						}
+						if (res.data.aihao) {
+							this.aihao_tags = res.data.aihao.split(",");
+						}
+						this.myinfo = res.data;
+					},
+					complete: (com) => {
+						// uni.hideLoading();
+					},
+					fail: (e) => {
+						console.log("----e:", e);
+					},
+				});
+			},
+			onLogout() {
+				let that = this;
+				this.$refs["DialogBox"]
+					.confirm({
+						title: "提示",
+						content: "确定退出吗?",
+						DialogType: "inquiry",
+						btn1: "取消",
+						btn2: "退出",
+						animation: 0,
+					})
+					.then((res) => {
+						uni.request({
+							url: that.$apiHost + "/My/logout",
+							data: {
+								uuid: getApp().globalData.uuid,
+								skey: getApp().globalData.skey,
+							},
+							header: {
+								"content-type": "application/json",
+								sign: getApp().globalData.headerSign,
+							},
+							success: (res) => {
+								console.log("----:", res.data);
+								// getApp().globalData.skey = "";
+								// getApp().globalData.uuid = "";
+								uni.removeStorageSync("wapptoken");
+								uni.redirectTo({
+									url: "/pages/login/login",
+								});
+							},
+							complete: (com) => {
+								// uni.hideLoading();
+							},
+							fail: (e) => {
+								console.log("----e:", e);
+							},
+						});
+					});
+			},
+			switchTab(index) {
+				this.activeTab = index;
+				this.offset = 0;
+				this.hasMore = true;
+				this.worksList = [];
+				this.loadWorksList();
+			},
+			loadWorksList() {
+				if (this.isLoading) return;
+				this.isLoading = true;
 
-      // 根据activeTab选择不同的API
-      let apiUrl = "";
-      if (this.activeTab === 0) {
-        apiUrl = "/Work/getlist";
-      } else {
-        apiUrl = "/WorkAI/getMyQueueList";
-      }
+				// 根据activeTab选择不同的API
+				let apiUrl = "";
+				if (this.activeTab === 0) {
+					apiUrl = "/Work/getlist";
+				} else {
+					apiUrl = "/WorkAI/getMyQueueList";
+				}
 
-      uni.request({
-        url: this.$apiHost + apiUrl,
-        data: {
-          uuid: getApp().globalData.uuid,
-          skey: getApp().globalData.skey,
-          type: "my", // 固定为my,表示获取自己的作品
-          offset: this.offset,
-          status: this.activeTab === 0 ? 1 : undefined, // 只有我的作品需要status参数
-        },
-        header: {
-          "content-type": "application/json",
-          sign: getApp().globalData.headerSign,
-        },
-        success: (res) => {
-          console.log("列表数据:", JSON.parse(JSON.stringify(res.data)));
-          if (res.data.success == "yes" && res.data.list) {
-            if (res.data.list.length > 0) {
-              this.worksList = [...this.worksList, ...res.data.list];
-              this.offset += res.data.list.length;
-            }
+				uni.request({
+					url: this.$apiHost + apiUrl,
+					data: {
+						uuid: getApp().globalData.uuid,
+						skey: getApp().globalData.skey,
+						type: "my", // 固定为my,表示获取自己的作品
+						offset: this.offset,
+						status: this.activeTab === 0 ? 1 : undefined, // 只有我的作品需要status参数
+					},
+					header: {
+						"content-type": "application/json",
+						sign: getApp().globalData.headerSign,
+					},
+					success: (res) => {
+						console.log("列表数据:", JSON.parse(JSON.stringify(res.data)));
+						if (res.data.success == "yes" && res.data.list) {
+							if (res.data.list.length > 0) {
+								this.worksList = [...this.worksList, ...res.data.list];
+								this.offset += res.data.list.length;
+							}
 
-            if (res.data.list.length < 20) {
-              this.hasMore = false;
-            }
-          } else {
-            this.hasMore = false;
-          }
+							if (res.data.list.length < 20) {
+								this.hasMore = false;
+							}
+						} else {
+							this.hasMore = false;
+						}
 
-          // 只有在"我的作品"标签下才更新data_list
-          if (this.activeTab === 0) {
-            this.updateDataList();
-          }
-        },
-        complete: () => {
-          this.isLoading = false;
-        },
-        fail: (e) => {
-          console.log("请求列表失败:", e);
-          this.isLoading = false;
-        },
-      });
-    },
-    loadMoreWorks() {
-      if (this.hasMore && !this.isLoading) {
-        this.loadWorksList();
-      }
-    },
-    updateDataList() {
-      this.data_list = this.worksList.map((item) => {
-        return {
-          url:
-            item.images || item.img_url || item.url || "../../static/logo.png",
-          title: item.title || item.description || "作品",
-          id: item.id,
-        };
-      });
-    },
-    goWork(item) {
-      uni.$emit("check_login", () => {});
-      if (this.activeTab == 0) {
-        uni.navigateTo({
-          url: "/pages/index/workDetail?id=" + item.id,
-        });
-      } else {
-        if (item.status >= 9) {
-          uni.navigateTo({
-            url: "/pages/makedetail/makeDetail?id=" + item.id,
-          });
-        }
-      }
-    },
-    navigateToSettings() {
-      uni.$emit("check_login", () => {
-        uni.navigateTo({
-          url: "/pages/my/setting",
-        });
-      });
-    },
-    navigateToFollow() {
-     uni.navigateTo({
-       url: "/pages/my/follow",
-     });
-    },
-  },
-};
+						// 只有在"我的作品"标签下才更新data_list
+						if (this.activeTab === 0) {
+							this.updateDataList();
+						}
+					},
+					complete: () => {
+						this.isLoading = false;
+					},
+					fail: (e) => {
+						console.log("请求列表失败:", e);
+						this.isLoading = false;
+					},
+				});
+			},
+			loadMoreWorks() {
+				if (this.hasMore && !this.isLoading) {
+					this.loadWorksList();
+				}
+			},
+			updateDataList() {
+				this.data_list = this.worksList.map((item) => {
+					return {
+						url: item.images || item.img_url || item.url || "../../static/logo.png",
+						title: item.title || item.description || "作品",
+						id: item.id,
+					};
+				});
+			},
+			goWork(item) {
+				uni.$emit("check_login", () => {});
+				// , //任务状态(1:排队中,3:生成失败,4:生成失败,9:创作完成)
+				if (this.activeTab == 0) {
+					uni.navigateTo({
+						url: "/pages/index/workDetail?id=" + item.id,
+					});
+				} else {
+					if (item.status >= 9) {
+						uni.navigateTo({
+							url: "/pages/makedetail/makeDetail?id=" + item.id,
+						});
+					}
+					if (item.status < 9 && item.status != 3 && item.status != 4) {
+						// <!-- <text v-if="item.task_type === 1">灵感创作</text>
+						// <text v-else-if="item.task_type === 2">音乐</text> -->
+						var url = ''
+						if(item.task_type === 1){
+							url="/makedetail/makeImgDetail"
+						}
+						if(item.task_type === 2){
+							url="/makedetail/makeMusicDetail"
+						}
+						if(url){
+							uni.navigateTo({
+							url: "/pages"+ url +"?id=" + item.id,
+						});
+						}
+						
+					}
+				}
+			},
+			navigateToSettings() {
+				uni.$emit("check_login", () => {
+					uni.navigateTo({
+						url: "/pages/my/setting",
+					});
+				});
+			},
+			navigateToFollow() {
+				uni.navigateTo({
+					url: "/pages/my/follow",
+				});
+			},
+		},
+	};
 </script>
 
 <style scoped lang="scss">
-@import "my.scss";
+	@import "my.scss";
 </style>

+ 46 - 20
pages/my/security.vue

@@ -13,10 +13,10 @@
 
     <!-- 账号安全组 -->
     <view class="group">
-      <view class="item" @click="goPage('/pages/my/editMobile?originalPhoneNumber='+ phoneNumber)">
+      <view class="item" @click="goPage('/pages/my/editMobile?originalPhoneNumber=' + phoneNumber)">
         <text class="title">手机号</text>
         <view class="right">
-          <text class="value">{{ formatPhoneNumber( phoneNumber )|| '未绑定' }}</text>
+          <text class="value">{{ formatPhoneNumber(phoneNumber) || '未绑定' }}</text>
           <image class="arrow" src="../../static/me/arrow_right_gray.png" mode="widthFix"></image>
         </view>
       </view>
@@ -49,11 +49,12 @@
 
     <!-- 删除账号组 -->
     <view class="group">
-      <view class="item"  @click="goPage('/pages/my/DelMemConfirm')" >
+      <view class="item" @click="goPage('/pages/my/DelMemConfirm')">
         <text class="title red">删除用户</text>
         <view class="right">
           <text class="value red">注销账户</text>
-          <image class="arrow" style="width: 30rpx; height: 30rpx;" src="../../static/me/wd_icon_jiantou_red.png" mode="widthFix"></image>
+          <image class="arrow" style="width: 30rpx; height: 30rpx;" src="../../static/me/wd_icon_jiantou_red.png"
+            mode="widthFix"></image>
         </view>
       </view>
     </view>
@@ -66,7 +67,7 @@
 
 
 export default {
-  components: {   }, // 注册组件
+  components: {}, // 注册组件
   data() {
     return {
       phoneNumber: '', // 用户手机号 
@@ -90,18 +91,18 @@ export default {
           "content-type": "application/json",
           sign: getApp().globalData.headerSign,
         },
-        success: (res) => { 
+        success: (res) => {
           this.phoneNumber = res.data.mobile;
           this.wechat = res.data.wechat;
         },
-        complete: (com) => { 
+        complete: (com) => {
         },
         fail: (e) => {
           console.log("----e:", e);
         },
       });
     },
-    goPage(url) { 
+    goPage(url) {
       uni.navigateTo({
         url: url
       })
@@ -112,19 +113,44 @@ export default {
       // 	title: '暂未开放',
       // 	icon: 'none'
       // })
+      if (this.wechat == '' || this.wechat == null) {
+        uni.showToast({
+              title:'暂未开通绑定微信',
+              icon: 'none'
+            })
+      }
       this.$refs['DialogBox'].confirm({
-          title: '确认解绑',
-          content: '解绑微信账号后将无法继续使用它登录该App账号',
-          DialogType: 'inquiry',
-          btn1: '再考虑一下',
-          btn2: '确认解绑',
-          animation: 0
-        }).then(() => {
-          uni.showToast({
-            title: '暂未开放',
-            icon: 'none'
-          })
-        })
+        title: '确认解绑',
+        content: '解绑微信账号后将无法继续使用它登录该App账号',
+        DialogType: 'inquiry',
+        btn1: '再考虑一下',
+        btn2: '确认解绑',
+        animation: 0
+      }).then(() => {
+        uni.request({
+          url: this.$apiHost + "/User/getinfo",
+          data: {
+            uuid: getApp().globalData.uuid,
+          },
+          header: {
+            "content-type": "application/json",
+            sign: getApp().globalData.headerSign,
+          },
+          success: (res) => {
+            uni.showToast({
+              title: res.data.str,
+              icon: 'none'
+            })
+          },
+          complete: (com) => {
+          },
+          fail: (e) => {
+            console.log("----e:", e);
+          },
+        });
+
+
+      })
     },
     bindQQ() {
       // QQ绑定逻辑

+ 16 - 4
pages/my/setting.vue

@@ -28,8 +28,8 @@
 						<text>{{ item.name }}</text>
 					</view>
 					<view class="item-right">
-						<switch v-if="item.switch == 1" color="#acf934" @change="switch1Change" checked
-							class="custom-switch" style="transform:scale(0.7)" />
+						<switch v-if="item.switch == 1" color="#acf934" @change="switch1Change"
+							:checked="isContentRecommendation" class="custom-switch" style="transform:scale(0.7)" />
 						<image v-else class="arrow" src="../../static/me/arrow_right_gray.png" mode="widthFix"></image>
 					</view>
 				</view>
@@ -52,6 +52,7 @@
 
 <script>
 import CustomerServicePopup from '@/components/CustomerServicePopup/CustomerServicePopup.vue'
+import { getStorage, setStorage, removeStorage } from '@/common/util.js'
 export default {
 	components: { CustomerServicePopup },
 	data() {
@@ -112,14 +113,23 @@ export default {
 				'icon': '../../static/me/wd_icon_lianxikefu.png',
 				'propup': 'customPopup'
 			}
-			]
+			],
+			isContentRecommendation: true,
 		}
 	},
 	onLoad() {
 		this.getAppVersion()
+
 	},
 	onShow() {
 		this.loadData();
+		// 
+		var isContentRecommendation = getStorage('isContentRecommendation')
+		if (isContentRecommendation != undefined) {
+			this.isContentRecommendation = isContentRecommendation == 'false' ? false : true  
+		} else {
+			setStorage('isContentRecommendation', true)
+		}
 	},
 	methods: {
 		openCustomPopup() {
@@ -143,7 +153,9 @@ export default {
 			});
 		},
 		switch1Change(e) {
-			alert(e.detail.value, "改变了")
+			console.log(e.detail.value,55555555555);
+			
+			setStorage('isContentRecommendation', e.detail.value)
 		},
 		onBack() { },
 		chkSel() {

BIN
static/icon/wd_icon_bianji.png


BIN
static/makedetail/cz_img_zhanshi.png


Niektoré súbory nie sú zobrazené, pretože je v týchto rozdielových dátach zmenené mnoho súborov