feat: refactor midjourney image creating page
@@ -80,6 +80,7 @@ func (h *MidJourneyHandler) Image(c *gin.Context) {
 | 
				
			|||||||
	var data struct {
 | 
						var data struct {
 | 
				
			||||||
		SessionId string  `json:"session_id"`
 | 
							SessionId string  `json:"session_id"`
 | 
				
			||||||
		Prompt    string  `json:"prompt"`
 | 
							Prompt    string  `json:"prompt"`
 | 
				
			||||||
 | 
							NegPrompt string  `json:"neg_prompt"`
 | 
				
			||||||
		Rate      string  `json:"rate"`
 | 
							Rate      string  `json:"rate"`
 | 
				
			||||||
		Model     string  `json:"model"`
 | 
							Model     string  `json:"model"`
 | 
				
			||||||
		Chaos     int     `json:"chaos"`
 | 
							Chaos     int     `json:"chaos"`
 | 
				
			||||||
@@ -87,6 +88,8 @@ func (h *MidJourneyHandler) Image(c *gin.Context) {
 | 
				
			|||||||
		Seed      int64   `json:"seed"`
 | 
							Seed      int64   `json:"seed"`
 | 
				
			||||||
		Stylize   int     `json:"stylize"`
 | 
							Stylize   int     `json:"stylize"`
 | 
				
			||||||
		Img       string  `json:"img"`
 | 
							Img       string  `json:"img"`
 | 
				
			||||||
 | 
							Tile      bool    `json:"tile"`
 | 
				
			||||||
 | 
							Quality   float32 `json:"quality"`
 | 
				
			||||||
		Weight    float32 `json:"weight"`
 | 
							Weight    float32 `json:"weight"`
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if err := c.ShouldBindJSON(&data); err != nil {
 | 
						if err := c.ShouldBindJSON(&data); err != nil {
 | 
				
			||||||
@@ -119,6 +122,15 @@ func (h *MidJourneyHandler) Image(c *gin.Context) {
 | 
				
			|||||||
	if data.Raw {
 | 
						if data.Raw {
 | 
				
			||||||
		prompt += " --style raw"
 | 
							prompt += " --style raw"
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						if data.Quality > 0 {
 | 
				
			||||||
 | 
							prompt += fmt.Sprintf(" --q %.2f", data.Quality)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if data.NegPrompt != "" {
 | 
				
			||||||
 | 
							prompt += fmt.Sprintf(" --no %s", data.NegPrompt)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if data.Tile {
 | 
				
			||||||
 | 
							prompt += " --tile "
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	if data.Model != "" && !strings.Contains(prompt, "--v") && !strings.Contains(prompt, "--niji") {
 | 
						if data.Model != "" && !strings.Contains(prompt, "--v") && !strings.Contains(prompt, "--niji") {
 | 
				
			||||||
		prompt += fmt.Sprintf(" %s", data.Model)
 | 
							prompt += fmt.Sprintf(" %s", data.Model)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
| 
		 Before Width: | Height: | Size: 476 KiB After Width: | Height: | Size: 476 KiB  | 
| 
		 Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB  | 
| 
		 Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB  | 
| 
		 Before Width: | Height: | Size: 526 KiB After Width: | Height: | Size: 526 KiB  | 
| 
		 Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB  | 
| 
		 Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB  | 
| 
		 Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB  | 
| 
		 Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB  | 
| 
		 Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB  | 
| 
		 Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB  | 
| 
		 Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB  | 
| 
		 Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB  | 
| 
		 Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB  | 
| 
		 Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB  | 
| 
		 Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB  | 
| 
		 Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB  | 
@@ -35,7 +35,6 @@
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
.page-mj .inner .mj-box .mj-params .param-line .el-icon {
 | 
					.page-mj .inner .mj-box .mj-params .param-line .el-icon {
 | 
				
			||||||
  position: relative;
 | 
					  position: relative;
 | 
				
			||||||
  top: 3px;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
.page-mj .inner .mj-box .mj-params .param-line .grid-content {
 | 
					.page-mj .inner .mj-box .mj-params .param-line .grid-content {
 | 
				
			||||||
  background-color: #383838;
 | 
					  background-color: #383838;
 | 
				
			||||||
@@ -43,26 +42,62 @@
 | 
				
			|||||||
  padding: 8px 14px;
 | 
					  padding: 8px 14px;
 | 
				
			||||||
  display: flex;
 | 
					  display: flex;
 | 
				
			||||||
  cursor: pointer;
 | 
					  cursor: pointer;
 | 
				
			||||||
 | 
					  margin-bottom: 10px;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
.page-mj .inner .mj-box .mj-params .param-line .grid-content:hover {
 | 
					.page-mj .inner .mj-box .mj-params .param-line .grid-content:hover {
 | 
				
			||||||
  background-color: #585858;
 | 
					  background-color: #585858;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					.page-mj .inner .mj-box .mj-params .param-line .grid-content .icon {
 | 
				
			||||||
 | 
					  width: 20px;
 | 
				
			||||||
 | 
					  height: 20px;
 | 
				
			||||||
 | 
					  margin-bottom: 5px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
.page-mj .inner .mj-box .mj-params .param-line .grid-content .shape {
 | 
					.page-mj .inner .mj-box .mj-params .param-line .grid-content .shape {
 | 
				
			||||||
  width: 16px;
 | 
					  width: 16px;
 | 
				
			||||||
  height: 16px;
 | 
					  height: 16px;
 | 
				
			||||||
  margin-right: 5px;
 | 
					  margin-bottom: 5px;
 | 
				
			||||||
  border: 1px solid #c4c4c4;
 | 
					  border: 1px solid #c4c4c4;
 | 
				
			||||||
  border-radius: 3px;
 | 
					  border-radius: 3px;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
.page-mj .inner .mj-box .mj-params .param-line .grid-content .shape.vertical {
 | 
					.page-mj .inner .mj-box .mj-params .param-line .grid-content .shape.size9-16 {
 | 
				
			||||||
  width: 12px;
 | 
					  width: 9px;
 | 
				
			||||||
  height: 20px;
 | 
					  height: 16px;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
.page-mj .inner .mj-box .mj-params .param-line .grid-content .shape.horizontal {
 | 
					.page-mj .inner .mj-box .mj-params .param-line .grid-content .shape.size16-9 {
 | 
				
			||||||
  height: 12px;
 | 
					  height: 9px;
 | 
				
			||||||
  width: 20px;
 | 
					  width: 16px;
 | 
				
			||||||
  position: relative;
 | 
					  position: relative;
 | 
				
			||||||
  top: 3px;
 | 
					  margin: 4px 0 7px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-mj .inner .mj-box .mj-params .param-line .grid-content .shape.size3-4 {
 | 
				
			||||||
 | 
					  width: 12px;
 | 
				
			||||||
 | 
					  height: 16px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-mj .inner .mj-box .mj-params .param-line .grid-content .shape.size4-3 {
 | 
				
			||||||
 | 
					  height: 12px;
 | 
				
			||||||
 | 
					  width: 16px;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  margin: 4px 0 4px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-mj .inner .mj-box .mj-params .param-line .grid-content .shape.size2-3 {
 | 
				
			||||||
 | 
					  width: 11px;
 | 
				
			||||||
 | 
					  height: 16px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-mj .inner .mj-box .mj-params .param-line .grid-content .shape.size3-2 {
 | 
				
			||||||
 | 
					  height: 11px;
 | 
				
			||||||
 | 
					  width: 16px;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  margin: 4px 0 5px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-mj .inner .mj-box .mj-params .param-line .grid-content .shape.size1-2 {
 | 
				
			||||||
 | 
					  width: 8px;
 | 
				
			||||||
 | 
					  height: 16px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-mj .inner .mj-box .mj-params .param-line .grid-content .shape.size2-1 {
 | 
				
			||||||
 | 
					  height: 8px;
 | 
				
			||||||
 | 
					  width: 16px;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  margin: 4px 0 8px;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
.page-mj .inner .mj-box .mj-params .param-line .grid-content.active {
 | 
					.page-mj .inner .mj-box .mj-params .param-line .grid-content.active {
 | 
				
			||||||
  color: #47fff1;
 | 
					  color: #47fff1;
 | 
				
			||||||
@@ -76,6 +111,7 @@
 | 
				
			|||||||
  border: 1px solid #454545;
 | 
					  border: 1px solid #454545;
 | 
				
			||||||
  border-radius: 5px;
 | 
					  border-radius: 5px;
 | 
				
			||||||
  padding: 10px;
 | 
					  padding: 10px;
 | 
				
			||||||
 | 
					  margin-bottom: 10px;
 | 
				
			||||||
  display: flex;
 | 
					  display: flex;
 | 
				
			||||||
  flex-flow: column;
 | 
					  flex-flow: column;
 | 
				
			||||||
  align-items: center;
 | 
					  align-items: center;
 | 
				
			||||||
@@ -98,10 +134,20 @@
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
.page-mj .inner .mj-box .mj-params .param-line .form-item-inner {
 | 
					.page-mj .inner .mj-box .mj-params .param-line .form-item-inner {
 | 
				
			||||||
  display: flex;
 | 
					  display: flex;
 | 
				
			||||||
 | 
					  align-items: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-mj .inner .mj-box .mj-params .param-line .form-item-inner .el-select {
 | 
				
			||||||
 | 
					  --el-select-input-focus-border-color: #47fff1;
 | 
				
			||||||
 | 
					  --el-input-focus-border-color: #47fff1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-mj .inner .mj-box .mj-params .param-line .form-item-inner .el-input__wrapper {
 | 
				
			||||||
 | 
					  background: #383838;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-mj .inner .mj-box .mj-params .param-line .form-item-inner .el-input__inner {
 | 
				
			||||||
 | 
					  color: #fff;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
.page-mj .inner .mj-box .mj-params .param-line .form-item-inner .el-icon {
 | 
					.page-mj .inner .mj-box .mj-params .param-line .form-item-inner .el-icon {
 | 
				
			||||||
  margin-left: 10px;
 | 
					  margin-left: 10px;
 | 
				
			||||||
  margin-top: 2px;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
.page-mj .inner .mj-box .mj-params .param-line .img-uploader .el-upload {
 | 
					.page-mj .inner .mj-box .mj-params .param-line .img-uploader .el-upload {
 | 
				
			||||||
  border: 1px dashed var(--el-border-color);
 | 
					  border: 1px dashed var(--el-border-color);
 | 
				
			||||||
@@ -123,19 +169,11 @@
 | 
				
			|||||||
  text-align: center;
 | 
					  text-align: center;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
.page-mj .inner .mj-box .mj-params .param-line.pt {
 | 
					.page-mj .inner .mj-box .mj-params .param-line.pt {
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					  align-items: center;
 | 
				
			||||||
  padding-top: 5px;
 | 
					  padding-top: 5px;
 | 
				
			||||||
  padding-bottom: 5px;
 | 
					  padding-bottom: 5px;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
.page-mj .inner .mj-box .submit-btn {
 | 
					 | 
				
			||||||
  padding: 10px 15px 0 15px;
 | 
					 | 
				
			||||||
  text-align: center;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
.page-mj .inner .mj-box .submit-btn .el-button {
 | 
					 | 
				
			||||||
  width: 100%;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
.page-mj .inner .mj-box .submit-btn .el-button span {
 | 
					 | 
				
			||||||
  color: #2d3a4b;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
.page-mj .inner .el-form .el-form-item__label {
 | 
					.page-mj .inner .el-form .el-form-item__label {
 | 
				
			||||||
  color: #fff;
 | 
					  color: #fff;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -149,6 +187,86 @@
 | 
				
			|||||||
  color: #fff;
 | 
					  color: #fff;
 | 
				
			||||||
  overflow-x: hidden;
 | 
					  overflow-x: hidden;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					.page-mj .inner .task-list-box .task-list-inner .el-tabs {
 | 
				
			||||||
 | 
					  --el-tabs-header-height: 55px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-mj .inner .task-list-box .task-list-inner .el-tabs__item {
 | 
				
			||||||
 | 
					  color: #fff;
 | 
				
			||||||
 | 
					  font-size: 18px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-mj .inner .task-list-box .task-list-inner .title-tabs .el-tabs__item.is-active {
 | 
				
			||||||
 | 
					  color: #47fff1;
 | 
				
			||||||
 | 
					  font-size: 18px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-mj .inner .task-list-box .task-list-inner .title-tabs .el-tabs__active-bar {
 | 
				
			||||||
 | 
					  background-color: #47fff1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-mj .inner .task-list-box .task-list-inner .title-tabs .el-tabs__content {
 | 
				
			||||||
 | 
					  padding: 10px 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-mj .inner .task-list-box .task-list-inner .el-textarea {
 | 
				
			||||||
 | 
					  --el-input-focus-border-color: #47fff1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-mj .inner .task-list-box .task-list-inner .el-textarea__inner {
 | 
				
			||||||
 | 
					  background: transparent;
 | 
				
			||||||
 | 
					  color: #fff;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-mj .inner .task-list-box .task-list-inner .el-input__wrapper {
 | 
				
			||||||
 | 
					  background: transparent;
 | 
				
			||||||
 | 
					  padding: 5px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-mj .inner .task-list-box .task-list-inner .text {
 | 
				
			||||||
 | 
					  margin-bottom: 10px;
 | 
				
			||||||
 | 
					  color: #6b778c;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-mj .inner .task-list-box .task-list-inner .param-line.pt {
 | 
				
			||||||
 | 
					  padding-top: 5px;
 | 
				
			||||||
 | 
					  padding-bottom: 5px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-mj .inner .task-list-box .task-list-inner .form-item-inner {
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					  align-items: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-mj .inner .task-list-box .task-list-inner .form-item-inner .el-icon {
 | 
				
			||||||
 | 
					  margin-left: 10px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-mj .inner .task-list-box .task-list-inner .el-form-item__label {
 | 
				
			||||||
 | 
					  color: #fff;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-mj .inner .task-list-box .task-list-inner .img-uploader .el-upload {
 | 
				
			||||||
 | 
					  border: 1px dashed var(--el-border-color);
 | 
				
			||||||
 | 
					  border-radius: 6px;
 | 
				
			||||||
 | 
					  cursor: pointer;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  overflow: hidden;
 | 
				
			||||||
 | 
					  width: 300px;
 | 
				
			||||||
 | 
					  transition: var(--el-transition-duration-fast);
 | 
				
			||||||
 | 
					  margin-bottom: 20px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-mj .inner .task-list-box .task-list-inner .img-uploader .el-upload:hover {
 | 
				
			||||||
 | 
					  border-color: var(--el-color-primary);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-mj .inner .task-list-box .task-list-inner .img-uploader .el-upload .el-icon.uploader-icon {
 | 
				
			||||||
 | 
					  font-size: 28px;
 | 
				
			||||||
 | 
					  color: #8c939d;
 | 
				
			||||||
 | 
					  width: 100%;
 | 
				
			||||||
 | 
					  height: 120px;
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-mj .inner .task-list-box .task-list-inner .submit-btn {
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					  margin: 20px 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-mj .inner .task-list-box .task-list-inner .submit-btn .el-button {
 | 
				
			||||||
 | 
					  width: 200px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-mj .inner .task-list-box .task-list-inner .submit-btn .text-info {
 | 
				
			||||||
 | 
					  width: 100%;
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					  justify-content: right;
 | 
				
			||||||
 | 
					  align-items: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
.page-mj .inner .task-list-box .running-job-list .job-item {
 | 
					.page-mj .inner .task-list-box .running-job-list .job-item {
 | 
				
			||||||
  width: 100%;
 | 
					  width: 100%;
 | 
				
			||||||
  padding: 2px;
 | 
					  padding: 2px;
 | 
				
			||||||
@@ -253,5 +371,4 @@
 | 
				
			|||||||
  margin-left: 10px;
 | 
					  margin-left: 10px;
 | 
				
			||||||
  cursor: pointer;
 | 
					  cursor: pointer;
 | 
				
			||||||
  position: relative;
 | 
					  position: relative;
 | 
				
			||||||
  top: 2px;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -54,7 +54,7 @@
 | 
				
			|||||||
              background-color #585858
 | 
					              background-color #585858
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            .icon{
 | 
					            .icon {
 | 
				
			||||||
              width 20px
 | 
					              width 20px
 | 
				
			||||||
              height 20px
 | 
					              height 20px
 | 
				
			||||||
              margin-bottom 5px
 | 
					              margin-bottom 5px
 | 
				
			||||||
@@ -162,17 +162,20 @@
 | 
				
			|||||||
          .form-item-inner {
 | 
					          .form-item-inner {
 | 
				
			||||||
            display flex
 | 
					            display flex
 | 
				
			||||||
            align-items: center
 | 
					            align-items: center
 | 
				
			||||||
            
 | 
					
 | 
				
			||||||
            .el-select {
 | 
					            .el-select {
 | 
				
			||||||
              --el-select-input-focus-border-color: #47FFF1;
 | 
					              --el-select-input-focus-border-color: #47FFF1;
 | 
				
			||||||
              --el-input-focus-border-color: #47FFF1;
 | 
					              --el-input-focus-border-color: #47FFF1;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            .el-input__wrapper {
 | 
					            .el-input__wrapper {
 | 
				
			||||||
              background: #383838;
 | 
					              background: #383838;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            .el-input__inner {
 | 
					            .el-input__inner {
 | 
				
			||||||
              color: #fff
 | 
					              color: #fff
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            .el-icon {
 | 
					            .el-icon {
 | 
				
			||||||
              margin-left 10px
 | 
					              margin-left 10px
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@@ -211,19 +214,6 @@
 | 
				
			|||||||
          padding-bottom 5px
 | 
					          padding-bottom 5px
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					 | 
				
			||||||
      .submit-btn {
 | 
					 | 
				
			||||||
        padding 10px 15px 0 15px
 | 
					 | 
				
			||||||
        text-align center
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        .el-button {
 | 
					 | 
				
			||||||
          width 100%
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
          span {
 | 
					 | 
				
			||||||
            color #2D3A4B
 | 
					 | 
				
			||||||
          }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    .el-form {
 | 
					    .el-form {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -72,6 +72,86 @@
 | 
				
			|||||||
  color: #fff;
 | 
					  color: #fff;
 | 
				
			||||||
  overflow-x: hidden;
 | 
					  overflow-x: hidden;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					.page-sd .inner .task-list-box .task-list-inner .el-tabs {
 | 
				
			||||||
 | 
					  --el-tabs-header-height: 55px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-sd .inner .task-list-box .task-list-inner .el-tabs__item {
 | 
				
			||||||
 | 
					  color: #fff;
 | 
				
			||||||
 | 
					  font-size: 18px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-sd .inner .task-list-box .task-list-inner .title-tabs .el-tabs__item.is-active {
 | 
				
			||||||
 | 
					  color: #47fff1;
 | 
				
			||||||
 | 
					  font-size: 18px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-sd .inner .task-list-box .task-list-inner .title-tabs .el-tabs__active-bar {
 | 
				
			||||||
 | 
					  background-color: #47fff1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-sd .inner .task-list-box .task-list-inner .title-tabs .el-tabs__content {
 | 
				
			||||||
 | 
					  padding: 10px 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-sd .inner .task-list-box .task-list-inner .el-textarea {
 | 
				
			||||||
 | 
					  --el-input-focus-border-color: #47fff1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-sd .inner .task-list-box .task-list-inner .el-textarea__inner {
 | 
				
			||||||
 | 
					  background: transparent;
 | 
				
			||||||
 | 
					  color: #fff;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-sd .inner .task-list-box .task-list-inner .el-input__wrapper {
 | 
				
			||||||
 | 
					  background: transparent;
 | 
				
			||||||
 | 
					  padding: 5px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-sd .inner .task-list-box .task-list-inner .text {
 | 
				
			||||||
 | 
					  margin-bottom: 10px;
 | 
				
			||||||
 | 
					  color: #6b778c;
 | 
				
			||||||
 | 
					  font-size: 15px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-sd .inner .task-list-box .task-list-inner .param-line.pt {
 | 
				
			||||||
 | 
					  padding-top: 5px;
 | 
				
			||||||
 | 
					  padding-bottom: 5px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-sd .inner .task-list-box .task-list-inner .form-item-inner {
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					  align-items: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-sd .inner .task-list-box .task-list-inner .form-item-inner .el-icon {
 | 
				
			||||||
 | 
					  margin-left: 10px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-sd .inner .task-list-box .task-list-inner .el-form-item__label {
 | 
				
			||||||
 | 
					  color: #fff;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-sd .inner .task-list-box .task-list-inner .img-uploader .el-upload {
 | 
				
			||||||
 | 
					  border: 1px dashed var(--el-border-color);
 | 
				
			||||||
 | 
					  border-radius: 6px;
 | 
				
			||||||
 | 
					  cursor: pointer;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  overflow: hidden;
 | 
				
			||||||
 | 
					  width: 300px;
 | 
				
			||||||
 | 
					  transition: var(--el-transition-duration-fast);
 | 
				
			||||||
 | 
					  margin-bottom: 20px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-sd .inner .task-list-box .task-list-inner .img-uploader .el-upload:hover {
 | 
				
			||||||
 | 
					  border-color: var(--el-color-primary);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-sd .inner .task-list-box .task-list-inner .img-uploader .el-upload .el-icon.uploader-icon {
 | 
				
			||||||
 | 
					  font-size: 28px;
 | 
				
			||||||
 | 
					  color: #8c939d;
 | 
				
			||||||
 | 
					  width: 100%;
 | 
				
			||||||
 | 
					  height: 120px;
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-sd .inner .task-list-box .task-list-inner .submit-btn {
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					  margin: 20px 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-sd .inner .task-list-box .task-list-inner .submit-btn .el-button {
 | 
				
			||||||
 | 
					  width: 200px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.page-sd .inner .task-list-box .task-list-inner .submit-btn .text-info {
 | 
				
			||||||
 | 
					  width: 100%;
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					  justify-content: right;
 | 
				
			||||||
 | 
					  align-items: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
.page-sd .inner .task-list-box .running-job-list .job-item {
 | 
					.page-sd .inner .task-list-box .running-job-list .job-item {
 | 
				
			||||||
  width: 100%;
 | 
					  width: 100%;
 | 
				
			||||||
  padding: 2px;
 | 
					  padding: 2px;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,24 +8,29 @@
 | 
				
			|||||||
    .el-tabs {
 | 
					    .el-tabs {
 | 
				
			||||||
      --el-tabs-header-height: 55px;
 | 
					      --el-tabs-header-height: 55px;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    .el-tabs__item {
 | 
					    .el-tabs__item {
 | 
				
			||||||
      color: #fff;
 | 
					      color: #fff;
 | 
				
			||||||
      font-size: 18px;
 | 
					      font-size: 18px;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    .title-tabs .el-tabs__item.is-active {
 | 
					    .title-tabs .el-tabs__item.is-active {
 | 
				
			||||||
        color: #47FFF1;
 | 
					      color: #47FFF1;
 | 
				
			||||||
        font-size: 18px;
 | 
					      font-size: 18px;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    .title-tabs .el-tabs__active-bar {
 | 
					    .title-tabs .el-tabs__active-bar {
 | 
				
			||||||
       background-color: #47FFF1;
 | 
					      background-color: #47FFF1;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    .title-tabs .el-tabs__content {
 | 
					    .title-tabs .el-tabs__content {
 | 
				
			||||||
      padding: 10px 0;
 | 
					      padding: 10px 0;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    .el-textarea {
 | 
					    .el-textarea {
 | 
				
			||||||
        --el-input-focus-border-color: #47FFF1;
 | 
					      --el-input-focus-border-color: #47FFF1;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    .el-textarea__inner {
 | 
					    .el-textarea__inner {
 | 
				
			||||||
      background: transparent;
 | 
					      background: transparent;
 | 
				
			||||||
      color: #fff;
 | 
					      color: #fff;
 | 
				
			||||||
@@ -36,8 +41,8 @@
 | 
				
			|||||||
      padding 5px
 | 
					      padding 5px
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    .text{
 | 
					    .text {
 | 
				
			||||||
      margin-bottom: 10px;  
 | 
					      margin-bottom: 10px;
 | 
				
			||||||
      color: #6b778c;
 | 
					      color: #6b778c;
 | 
				
			||||||
      font-size: 15px
 | 
					      font-size: 15px
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -85,16 +90,20 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    .submit-btn{
 | 
					    .submit-btn {
 | 
				
			||||||
        margin: 20px 0
 | 
					      display flex
 | 
				
			||||||
 | 
					      margin: 20px 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        .el-icon.submit-icon {
 | 
					      .el-button {
 | 
				
			||||||
          font-size: 28px
 | 
					        width 200px
 | 
				
			||||||
          width 100%
 | 
					      }
 | 
				
			||||||
          height: 100px
 | 
					
 | 
				
			||||||
          text-align: center
 | 
					      .text-info {
 | 
				
			||||||
          margin-right: 10px
 | 
					        width 100%
 | 
				
			||||||
        }
 | 
					        display flex
 | 
				
			||||||
 | 
					        justify-content right
 | 
				
			||||||
 | 
					        align-items center
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,58 +1,59 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
	<div class="home">
 | 
					  <div class="home">
 | 
				
			||||||
		<div class="navigator">
 | 
					    <div class="navigator">
 | 
				
			||||||
			<div class="logo">
 | 
					      <div class="logo">
 | 
				
			||||||
				<el-link href="/">
 | 
					        <el-link href="/">
 | 
				
			||||||
					<el-image :src="logo" />
 | 
					          <el-image :src="logo"/>
 | 
				
			||||||
				</el-link>
 | 
					        </el-link>
 | 
				
			||||||
				<div class="divider"></div>
 | 
					        <div class="divider"></div>
 | 
				
			||||||
			</div>
 | 
					      </div>
 | 
				
			||||||
			<ul class="nav-items">
 | 
					      <ul class="nav-items">
 | 
				
			||||||
				<li v-for="item in navs" :key="item.path">
 | 
					        <li v-for="item in navs" :key="item.path">
 | 
				
			||||||
					<el-tooltip effect="light" :content="item.title" placement="right">
 | 
					          <!--          <el-tooltip effect="light" :content="item.title" placement="right">-->
 | 
				
			||||||
						<a @click="changeNav(item)" :class="item.path === curPath ? 'active' : ''">
 | 
					          <!--            -->
 | 
				
			||||||
							<el-image :src="item.icon_path" :width="20" v-if="item.icon_path" />
 | 
					          <!--          </el-tooltip>-->
 | 
				
			||||||
							<i :class="'iconfont icon-' + item.icon" v-else></i>
 | 
					          <a @click="changeNav(item)" :class="item.path === curPath ? 'active' : ''">
 | 
				
			||||||
						</a>
 | 
					            <el-image :src="item.icon_path" :width="20" v-if="item.icon_path"/>
 | 
				
			||||||
					</el-tooltip>
 | 
					            <i :class="'iconfont icon-' + item.icon" v-else></i>
 | 
				
			||||||
					<div :class="item.path === curPath ? 'title active' : 'title'">{{ item.title }}</div>
 | 
					          </a>
 | 
				
			||||||
				</li>
 | 
					          <div :class="item.path === curPath ? 'title active' : 'title'">{{ item.title }}</div>
 | 
				
			||||||
			</ul>
 | 
					        </li>
 | 
				
			||||||
		</div>
 | 
					      </ul>
 | 
				
			||||||
		<div class="content">
 | 
					    </div>
 | 
				
			||||||
			<router-view v-slot="{ Component }">
 | 
					    <div class="content">
 | 
				
			||||||
				<transition name="move" mode="out-in">
 | 
					      <router-view v-slot="{ Component }">
 | 
				
			||||||
					<component :is="Component"></component>
 | 
					        <transition name="move" mode="out-in">
 | 
				
			||||||
				</transition>
 | 
					          <component :is="Component"></component>
 | 
				
			||||||
			</router-view>
 | 
					        </transition>
 | 
				
			||||||
		</div>
 | 
					      </router-view>
 | 
				
			||||||
	</div>
 | 
					    </div>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<script setup>
 | 
					<script setup>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { useRouter } from "vue-router";
 | 
					import {useRouter} from "vue-router";
 | 
				
			||||||
import { checkSession } from "@/action/session";
 | 
					import {checkSession} from "@/action/session";
 | 
				
			||||||
import { isMobile } from "@/utils/libs";
 | 
					import {isMobile} from "@/utils/libs";
 | 
				
			||||||
import { ref } from "vue";
 | 
					import {ref} from "vue";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const router = useRouter();
 | 
					const router = useRouter();
 | 
				
			||||||
const logo = '/images/icon-logo.png';
 | 
					const logo = '/images/logo.png';
 | 
				
			||||||
const navs = ref([
 | 
					const navs = ref([
 | 
				
			||||||
  {path: "/chat", icon_path: "/images/chat.png", title: "对话聊天"},
 | 
					  {path: "/chat", icon_path: "/images/chat.png", title: "对话聊天"},
 | 
				
			||||||
  {path: "/mj", icon_path: "/images/mj.png", title: "MJ 绘画"},
 | 
					  {path: "/mj", icon_path: "/images/mj.png", title: "MJ 绘画"},
 | 
				
			||||||
  {path: "/sd", icon_path: "/images/sd.png", title: "SD 绘画"},
 | 
					  {path: "/sd", icon_path: "/images/sd.png", title: "SD 绘画"},
 | 
				
			||||||
  {path: "/apps", icon: "menu", title: "应用中心"},
 | 
					  {path: "/apps", icon: "menu", title: "应用中心"},
 | 
				
			||||||
  {path: "/images-wall", icon: "image-list", title: "作品展示"},
 | 
					  {path: "/images-wall", icon: "image-list", title: "作品展示"},
 | 
				
			||||||
  {path: "/knowledge", icon: "book", title: "我的知识库"},
 | 
					  {path: "/knowledge", icon: "book", title: "知识库"},
 | 
				
			||||||
  {path: "/member", icon: "vip-user", title: "会员计划"},
 | 
					  {path: "/member", icon: "vip-user", title: "会员计划"},
 | 
				
			||||||
  {path: "/invite", icon: "share", title: "推广计划"},
 | 
					  {path: "/invite", icon: "share", title: "推广计划"},
 | 
				
			||||||
])
 | 
					])
 | 
				
			||||||
const curPath = ref(router.currentRoute.value.path)
 | 
					const curPath = ref(router.currentRoute.value.path)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const changeNav = (item) => {
 | 
					const changeNav = (item) => {
 | 
				
			||||||
	curPath.value = item.path
 | 
					  curPath.value = item.path
 | 
				
			||||||
	router.push(item.path)
 | 
					  router.push(item.path)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -85,9 +86,9 @@ const changeNav = (item) => {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    .nav-items {
 | 
					    .nav-items {
 | 
				
			||||||
		margin-top: 20px;
 | 
					      margin-top: 20px;
 | 
				
			||||||
		padding-left: 10px;
 | 
					      padding-left: 10px;
 | 
				
			||||||
		padding-right: 10px;
 | 
					      padding-right: 10px;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      li {
 | 
					      li {
 | 
				
			||||||
        margin-bottom 15px
 | 
					        margin-bottom 15px
 | 
				
			||||||
@@ -116,13 +117,14 @@ const changeNav = (item) => {
 | 
				
			|||||||
          color #47fff1
 | 
					          color #47fff1
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		.title{
 | 
					        .title {
 | 
				
			||||||
			font-size: 12px
 | 
					          font-size: 12px
 | 
				
			||||||
			padding-top: 5px 
 | 
					          padding-top: 5px
 | 
				
			||||||
			color: #e5e7eb;
 | 
					          color: #e5e7eb;
 | 
				
			||||||
			text-align: center;
 | 
					          text-align: center;
 | 
				
			||||||
		}
 | 
					        }
 | 
				
			||||||
		.active {
 | 
					
 | 
				
			||||||
 | 
					        .active {
 | 
				
			||||||
          color #47fff1
 | 
					          color #47fff1
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -57,7 +57,10 @@
 | 
				
			|||||||
      <el-form :model="item" label-width="120px" ref="formRef" :rules="rules">
 | 
					      <el-form :model="item" label-width="120px" ref="formRef" :rules="rules">
 | 
				
			||||||
        <el-form-item label="所属平台:" prop="platform">
 | 
					        <el-form-item label="所属平台:" prop="platform">
 | 
				
			||||||
          <el-select v-model="item.platform" placeholder="请选择平台">
 | 
					          <el-select v-model="item.platform" placeholder="请选择平台">
 | 
				
			||||||
            <el-option v-for="item in platforms" :value="item.value" :key="item.value">{{ item.name }}</el-option>
 | 
					            <el-option v-for="item in platforms" :value="item.value" :label="item.name" :key="item.value">{{
 | 
				
			||||||
 | 
					                item.name
 | 
				
			||||||
 | 
					              }}
 | 
				
			||||||
 | 
					            </el-option>
 | 
				
			||||||
          </el-select>
 | 
					          </el-select>
 | 
				
			||||||
        </el-form-item>
 | 
					        </el-form-item>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -66,7 +69,10 @@
 | 
				
			|||||||
        </el-form-item>
 | 
					        </el-form-item>
 | 
				
			||||||
        <el-form-item label="用途:" prop="type">
 | 
					        <el-form-item label="用途:" prop="type">
 | 
				
			||||||
          <el-select v-model="item.type" placeholder="请选择用途">
 | 
					          <el-select v-model="item.type" placeholder="请选择用途">
 | 
				
			||||||
            <el-option v-for="item in types" :value="item.value" :key="item.value">{{ item.name }}</el-option>
 | 
					            <el-option v-for="item in types" :value="item.value" :label="item.name" :key="item.value">{{
 | 
				
			||||||
 | 
					                item.name
 | 
				
			||||||
 | 
					              }}
 | 
				
			||||||
 | 
					            </el-option>
 | 
				
			||||||
          </el-select>
 | 
					          </el-select>
 | 
				
			||||||
        </el-form-item>
 | 
					        </el-form-item>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -53,7 +53,10 @@
 | 
				
			|||||||
      <el-form :model="item" label-width="120px" ref="formRef" :rules="rules">
 | 
					      <el-form :model="item" label-width="120px" ref="formRef" :rules="rules">
 | 
				
			||||||
        <el-form-item label="所属平台:" prop="platform">
 | 
					        <el-form-item label="所属平台:" prop="platform">
 | 
				
			||||||
          <el-select v-model="item.platform" placeholder="请选择平台">
 | 
					          <el-select v-model="item.platform" placeholder="请选择平台">
 | 
				
			||||||
            <el-option v-for="item in platforms" :value="item.value" :key="item.value">{{ item.name }}</el-option>
 | 
					            <el-option v-for="item in platforms" :value="item.value" :label="item.name" :key="item.value">{{
 | 
				
			||||||
 | 
					                item.name
 | 
				
			||||||
 | 
					              }}
 | 
				
			||||||
 | 
					            </el-option>
 | 
				
			||||||
          </el-select>
 | 
					          </el-select>
 | 
				
			||||||
        </el-form-item>
 | 
					        </el-form-item>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||