修复页面bug

This commit is contained in:
X1627315083
2025-08-26 10:14:34 +08:00
parent cfe449f094
commit b6b554424b
49 changed files with 501 additions and 134 deletions

1
components.d.ts vendored
View File

@@ -20,7 +20,6 @@ declare module 'vue' {
AModal: typeof import('ant-design-vue/es')['Modal'] AModal: typeof import('ant-design-vue/es')['Modal']
APagination: typeof import('ant-design-vue/es')['Pagination'] APagination: typeof import('ant-design-vue/es')['Pagination']
APopover: typeof import('ant-design-vue/es')['Popover'] APopover: typeof import('ant-design-vue/es')['Popover']
AProgress: typeof import('ant-design-vue/es')['Progress']
ARangePicker: typeof import('ant-design-vue/es')['RangePicker'] ARangePicker: typeof import('ant-design-vue/es')['RangePicker']
ASelect: typeof import('ant-design-vue/es')['Select'] ASelect: typeof import('ant-design-vue/es')['Select']
ASelectOption: typeof import('ant-design-vue/es')['SelectOption'] ASelectOption: typeof import('ant-design-vue/es')['SelectOption']

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

View File

@@ -4,6 +4,7 @@ body,
margin: 0; margin: 0;
padding: 0; padding: 0;
height: 100%; height: 100%;
font-weight: 500;
font-family: pingfang_medium, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; font-family: pingfang_medium, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
overflow: hidden; overflow: hidden;
--aida-fsize2: calc(2.6rem); --aida-fsize2: calc(2.6rem);
@@ -19,6 +20,19 @@ input {
outline: none; outline: none;
border: 0.1rem solid #dcdfe6; border: 0.1rem solid #dcdfe6;
} }
input[type="radio"] {
accent-color: #000;
/* 统一修改选中颜色 */
}
input[type="number"] {
-moz-appearance: textfield;
/* Firefox */
}
/* Chrome/Safari等Webkit浏览器 */
input[type="number"]::-webkit-outer-spin-button,
input[type="number"]::-webkit-inner-spin-button {
-webkit-appearance: none;
}
@media (max-width: 768px) { @media (max-width: 768px) {
.mdhidden { .mdhidden {
display: none !important; display: none !important;
@@ -62,19 +76,25 @@ li {
width: calc(100% - 2rem); width: calc(100% - 2rem);
} }
.ant-slider.system_silder .ant-slider-rail { .ant-slider.system_silder .ant-slider-rail {
height: 0.6rem; height: 1rem;
border-radius: 0.3rem; border-radius: 4rem;
background: #F2F0FD; background: #F2F0FD;
} }
.ant-slider.system_silder .ant-slider-track { .ant-slider.system_silder .ant-slider-track {
height: 0.6rem; height: 1rem;
border-radius: 0.3rem; border-radius: 3rem;
background: #000; background: #000;
} }
.ant-slider.system_silder .ant-slider-handle { .ant-slider.system_silder .ant-slider-handle {
margin-top: -0.4rem; margin-top: 0.1rem;
top: 0;
height: 1.7rem;
width: 1.7rem;
border: solid 0.2rem #000; border: solid 0.2rem #000;
} }
.ant-slider.system_silder .ant-slider-step {
height: 1rem;
}
.ant-slider:hover .ant-slider-handle { .ant-slider:hover .ant-slider-handle {
box-shadow: rgba(0, 0, 0, 0.16) 0px 0 0 4px; box-shadow: rgba(0, 0, 0, 0.16) 0px 0 0 4px;
} }
@@ -88,7 +108,6 @@ li {
.ant-slider-handle { .ant-slider-handle {
background-color: #000000 !important; background-color: #000000 !important;
border: none !important; border: none !important;
margin-top: -4px;
} }
.ant-slider-handle:hover { .ant-slider-handle:hover {
box-shadow: 0 0 0 5px rgba(0, 0, 0, 0.2); box-shadow: 0 0 0 5px rgba(0, 0, 0, 0.2);
@@ -233,7 +252,7 @@ li {
font-size: 1.6rem; font-size: 1.6rem;
} }
.gallery_btn.gallery_btn_radius { .gallery_btn.gallery_btn_radius {
border-radius: 1.4rem; border-radius: 1.3rem;
} }
.gallery_btn.gallery_btn:hover { .gallery_btn.gallery_btn:hover {
background-color: #fff; background-color: #fff;
@@ -913,6 +932,11 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte
box-shadow: none; box-shadow: none;
height: calc(65rem*1.2); height: calc(65rem*1.2);
} }
@media (max-width: 768px) {
.generalModel {
height: calc(48rem*1.2);
}
}
.generalModel.fullScreen { .generalModel.fullScreen {
max-width: 100%; max-width: 100%;
} }
@@ -938,7 +962,6 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte
font-size: 1.4rem; font-size: 1.4rem;
padding: 6rem 7rem; padding: 6rem 7rem;
position: relative; position: relative;
} }
.generalModel .fi-rr-down-to-line, .generalModel .fi-rr-down-to-line,
.generalModel .fi-rr-arrow-small-right, .generalModel .fi-rr-arrow-small-right,
@@ -989,6 +1012,12 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte
justify-content: center; justify-content: center;
z-index: 2; z-index: 2;
} }
@media (max-width: 768px) {
.generalModel .generalModel_btn .generalModel_closeIcon {
width: 2.5rem;
height: 2.5rem;
}
}
.generalModel .generalModel_btn .generalModel_closeIcon > svg { .generalModel .generalModel_btn .generalModel_closeIcon > svg {
flex-shrink: 0; flex-shrink: 0;
border-radius: 50%; border-radius: 50%;
@@ -1792,6 +1821,7 @@ textarea:focus {
align-items: center; align-items: center;
flex-wrap: wrap; flex-wrap: wrap;
justify-content: space-between; justify-content: space-between;
width: 100%;
} }
.collection_modal_body .input_border .input_box .inputShowText, .collection_modal_body .input_border .input_box .inputShowText,
.design_detail_modal_component .input_border .input_box .inputShowText, .design_detail_modal_component .input_border .input_box .inputShowText,
@@ -2156,14 +2186,15 @@ textarea:focus {
.generalMenu_printModel_upload .input_border .fi, .generalMenu_printModel_upload .input_border .fi,
.generate .input_border .fi { .generate .input_border .fi {
margin-right: 1rem; margin-right: 1rem;
display: flex;
cursor: pointer; cursor: pointer;
transition: all 0.3s; transition: all 0.3s;
position: relative; position: relative;
z-index: 4; z-index: 4;
width: 4rem; width: 4rem;
align-items: center; display: flex;
min-height: 3rem;
justify-content: center; justify-content: center;
align-items: center;
} }
.collection_modal_body .input_border .fi.fi-br-loading, .collection_modal_body .input_border .fi.fi-br-loading,
.design_detail_modal_component .input_border .fi.fi-br-loading, .design_detail_modal_component .input_border .fi.fi-br-loading,

View File

@@ -2126,6 +2126,11 @@ textarea:focus{
width: 4rem; width: 4rem;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
display: flex;
min-height: 3rem;
justify-content: center;
align-items: center;
&.fi-br-loading{ &.fi-br-loading{
height: 100%; height: 100%;
background-color: rgba(0, 0, 0, 0); background-color: rgba(0, 0, 0, 0);
@@ -2146,6 +2151,7 @@ textarea:focus{
span{ span{
position: absolute; position: absolute;
width: 100%; width: 100%;
} }
.ant-upload-select-picture-card{ .ant-upload-select-picture-card{
width: 100%; width: 100%;

View File

@@ -139,6 +139,7 @@ export default defineComponent({
width: 100%; width: 100%;
.account_generalMessage_center{ .account_generalMessage_center{
.account_generalMessage_item{ .account_generalMessage_item{
font-size: var(--aida-fsize1-6);
.account_generalMessage_item_right{ .account_generalMessage_item_right{
display: flex; display: flex;
align-items: center; align-items: center;

View File

@@ -147,6 +147,7 @@ export default defineComponent({
width: 100%; width: 100%;
.account_generalMessage_center{ .account_generalMessage_center{
.account_generalMessage_item{ .account_generalMessage_item{
font-size: var(--aida-fsize1-6);
.account_generalMessage_item_right{ .account_generalMessage_item_right{
display: flex; display: flex;
align-items: center; align-items: center;

View File

@@ -1,8 +1,9 @@
<template> <template>
<transition name="fade"> <transition name="fade">
<div v-if="visible" class="liquify-panel"> <div v-if="visible" class="liquify-panel" :class="{active:!closePanel}">
<div class="btn" @click="setClosePanel"><i class="fi fi-br-angle-left"></i></div>
<div class="liquify-panel-header"> <div class="liquify-panel-header">
<div class="header-title">液化工具</div> <div class="header-title">{{ $t('liquifyPanel.LiquefactionTool') }}</div>
<!-- <div class="header-actions"> <!-- <div class="header-actions">
<button class="header-btn cancel-btn" @click="cancel">取消</button> <button class="header-btn cancel-btn" @click="cancel">取消</button>
<button class="header-btn confirm-btn" @click="confirm">完成</button> <button class="header-btn confirm-btn" @click="confirm">完成</button>
@@ -251,6 +252,12 @@ const showDistortion = computed(() => {
return ["crystal", "edge"].includes(currentMode.value); return ["crystal", "edge"].includes(currentMode.value);
}); });
//打开隐藏操作面板
const closePanel = ref(false)
const setClosePanel = ()=>{
closePanel.value = !closePanel.value
}
// 监听当前工具变化 - 参考 SelectionPanel 的实现方式 // 监听当前工具变化 - 参考 SelectionPanel 的实现方式
watch( watch(
() => props.activeTool, () => props.activeTool,
@@ -262,6 +269,7 @@ watch(
// 如果面板未显示且有合适的目标对象,则显示面板 // 如果面板未显示且有合适的目标对象,则显示面板
if (!visible.value) { if (!visible.value) {
visible.value = true; visible.value = true;
closePanel.value = true
// 检查是否有可液化的对象 // 检查是否有可液化的对象
checkAndShowPanel(); checkAndShowPanel();
} }
@@ -451,6 +459,7 @@ function showPanel(event) {
console.log("未选择有效图像或图层不适合液化操作"); console.log("未选择有效图像或图层不适合液化操作");
} }
visible.value = true; // 仍然显示面板以便用户看到提示 visible.value = true; // 仍然显示面板以便用户看到提示
closePanel.value = true
return; return;
} }
@@ -463,6 +472,7 @@ function showPanel(event) {
if (!targetObj) { if (!targetObj) {
console.log("未选择有效的图像对象"); console.log("未选择有效的图像对象");
visible.value = true; // 仍然显示面板以便显示提示 visible.value = true; // 仍然显示面板以便显示提示
closePanel.value = true
return; return;
} }
@@ -509,6 +519,7 @@ function showPanel(event) {
} }
visible.value = true; visible.value = true;
closePanel.value = true
isEditing.value = true; isEditing.value = true;
// 初始化液化管理器并准备液化环境 // 初始化液化管理器并准备液化环境
@@ -1623,6 +1634,25 @@ function stopPressTimer() {
color: #333; color: #333;
border: 1px solid rgba(0, 0, 0, 0.05); border: 1px solid rgba(0, 0, 0, 0.05);
padding-bottom: 12px; padding-bottom: 12px;
&.active{
transform: translateY(100%);
> .btn{
> i{
transform: rotate(90deg);
}
}
}
> .btn{
width: 100%;
text-align: center;
cursor: pointer;
> i{
font-size: 1.4rem;
display: block;
transform: rotate(270deg);
}
}
} }
.fade-enter-active, .fade-enter-active,

View File

@@ -1,6 +1,7 @@
<template> <template>
<transition name="fade"> <transition name="fade">
<div class="selection-toolbar" v-if="visible"> <div class="selection-toolbar" v-if="visible" :class="{active:!closePanel}">
<div class="btn" @click="setClosePanel"><i class="fi fi-br-angle-left"></i></div>
<!-- 顶部选区类型工具栏 --> <!-- 顶部选区类型工具栏 -->
<div class="toolbar-section"> <div class="toolbar-section">
<div class="toolbar-header"> <div class="toolbar-header">
@@ -238,6 +239,11 @@ const fillColor = ref("#000000");
const hasSelection = ref(false); const hasSelection = ref(false);
const showFeatherDialog = ref(false); const showFeatherDialog = ref(false);
const showColorPicker = ref(false); const showColorPicker = ref(false);
//打开隐藏操作面板
const closePanel = ref(false)
const setClosePanel = ()=>{
closePanel.value = !closePanel.value
}
// 国际化 // 国际化
const { t } = useI18n(); const { t } = useI18n();
@@ -289,6 +295,7 @@ watch(
*/ */
function show() { function show() {
visible.value = true; visible.value = true;
closePanel.value = true
checkSelectionStatus(); checkSelectionStatus();
} }
@@ -512,6 +519,25 @@ function confirmColorPicker() {
color: #333; color: #333;
border: 1px solid rgba(0, 0, 0, 0.05); border: 1px solid rgba(0, 0, 0, 0.05);
user-select: none; user-select: none;
&.active{
transform: translateY(100%);
> .btn{
> i{
transform: rotate(90deg);
}
}
}
> .btn{
width: 100%;
text-align: center;
cursor: pointer;
> i{
font-size: 1.4rem;
display: block;
transform: rotate(270deg);
}
}
} }
/* 平板和手机适配 */ /* 平板和手机适配 */

View File

@@ -1,18 +1,20 @@
<!-- filepath: /Users/aaron/work/pc/air/canvasEdit/src/components/CanvasEditor/components/TextEditorPanel.vue --> <!-- filepath: /Users/aaron/work/pc/air/canvasEdit/src/components/CanvasEditor/components/TextEditorPanel.vue -->
<template> <template>
<div v-if="visible" class="text-editor-panel" :class="{ 'is-active': visible }"> <div v-if="visible" class="text-editor-panel" :class="{ 'is-active': visible,active:!closePanel }">
<div class="btn" @click="setClosePanel"><i class="fi fi-br-angle-left"></i></div>
<div class="text-editor-panel-header"> <div class="text-editor-panel-header">
<div class="header-btn import-btn">编辑文本样式</div> <div class="header-btn import-btn">{{ $t('Canvas.EditTextStyle') }}</div>
<div class="header-actions"> <div class="header-actions">
<div class="header-btn cancel-btn" @click="close">取消</div> <div class="header-btn cancel-btn" @click="close">{{ $t('Canvas.close') }}</div>
<div class="header-btn confirm-btn" @click="confirmEdit">完成</div> <div class="header-btn confirm-btn" @click="confirmEdit">{{ $t('Canvas.confirmEdit') }}</div>
</div> </div>
</div> </div>
<div class="text-editor-content"> <div class="text-editor-content">
<!-- 字体选择列表 --> <!-- 字体选择列表 -->
<div class="edit-column font-column"> <div class="edit-column font-column">
<div class="column-header">字体</div> <div class="column-header">{{ $t('Canvas.fontFamily') }}</div>
<div class="font-list"> <div class="font-list">
<div <div
v-for="font in availableFonts" v-for="font in availableFonts"
@@ -28,7 +30,7 @@
<!-- 样式选择区域 --> <!-- 样式选择区域 -->
<div class="edit-column style-column"> <div class="edit-column style-column">
<div class="column-header">样式</div> <div class="column-header">{{ $t('Canvas.fontStyle') }}</div>
<div class="style-preview"> <div class="style-preview">
<div class="style-name">Regular</div> <div class="style-name">Regular</div>
<div class="style-sample" :style="{ fontFamily }">Regular</div> <div class="style-sample" :style="{ fontFamily }">Regular</div>
@@ -37,10 +39,10 @@
<!-- 设计参数区域 --> <!-- 设计参数区域 -->
<div class="edit-column design-column"> <div class="edit-column design-column">
<div class="column-header">设计</div> <div class="column-header">{{ $t('Canvas.design') }}</div>
<div class="param-item"> <div class="param-item">
<div class="param-label">尺寸</div> <div class="param-label">{{ $t('Canvas.size') }}</div>
<div class="param-control"> <div class="param-control">
<input <input
type="range" type="range"
@@ -55,7 +57,7 @@
</div> </div>
<div class="param-item"> <div class="param-item">
<div class="param-label">字符间距</div> <div class="param-label">{{ $t('Canvas.charSpacing') }}</div>
<div class="param-control"> <div class="param-control">
<input <input
type="range" type="range"
@@ -71,7 +73,7 @@
</div> </div>
<div class="param-item"> <div class="param-item">
<div class="param-label">行距</div> <div class="param-label">{{ $t('Canvas.lineHeight') }}</div>
<div class="param-control"> <div class="param-control">
<input <input
type="range" type="range"
@@ -102,7 +104,7 @@
</div> --> </div> -->
<div class="param-item"> <div class="param-item">
<div class="param-label">不透明度</div> <div class="param-label">{{ $t('Canvas.opacity') }}</div>
<div class="param-control"> <div class="param-control">
<input <input
type="range" type="range"
@@ -120,7 +122,7 @@
<!-- 字体属性区域 --> <!-- 字体属性区域 -->
<div class="edit-column props-column"> <div class="edit-column props-column">
<div class="column-header">字体属性</div> <div class="column-header">{{ $t('Canvas.property') }}</div>
<div class="text-alignment"> <div class="text-alignment">
<div <div
@@ -178,7 +180,7 @@
</div> </div>
<!-- 添加字体色控制区域 --> <!-- 添加字体色控制区域 -->
<div class="background-controls"> <div class="background-controls">
<div class="bg-header">字体色</div> <div class="bg-header">{{ $t('Canvas.fontColor') }}</div>
<div class="bg-options"> <div class="bg-options">
<div class="style-btn color-btn" @click="openColorPicker('text')"> <div class="style-btn color-btn" @click="openColorPicker('text')">
<div class="style-icon color-icon" :style="{ backgroundColor: textColor }"></div> <div class="style-icon color-icon" :style="{ backgroundColor: textColor }"></div>
@@ -187,7 +189,7 @@
</div> </div>
<!-- 添加背景色控制区域 --> <!-- 添加背景色控制区域 -->
<div class="background-controls"> <div class="background-controls">
<div class="bg-header">背景色</div> <div class="bg-header">{{ $t('Canvas.BGColor') }}</div>
<div class="bg-options"> <div class="bg-options">
<div class="style-btn color-btn" @click="openColorPicker('background')"> <div class="style-btn color-btn" @click="openColorPicker('background')">
<div <div
@@ -207,7 +209,7 @@
:class="{ active: hasTransparentBg }" :class="{ active: hasTransparentBg }"
@click="setTransparentBackground" @click="setTransparentBackground"
> >
透明 {{ $t('Canvas.BGOpacity') }}
</div> </div>
</div> </div>
</div> </div>
@@ -218,7 +220,7 @@
<div v-if="showColorPicker" class="color-picker-modal"> <div v-if="showColorPicker" class="color-picker-modal">
<div class="color-picker-container"> <div class="color-picker-container">
<div class="color-picker-header"> <div class="color-picker-header">
<span>{{ colorPickerMode === "text" ? "选择文字颜色" : "选择背景颜色" }}</span> <span>{{ colorPickerMode === "text" ? $t('Canvas.SelectTextColor') : $t('Canvas.SelectBGColor') }}</span>
<div class="close-color-picker" @click="closeColorPicker">×</div> <div class="close-color-picker" @click="closeColorPicker">×</div>
</div> </div>
<div class="color-picker-content"> <div class="color-picker-content">
@@ -232,7 +234,7 @@
@click="selectPresetColor(color)" @click="selectPresetColor(color)"
></div> ></div>
</div> </div>
<div class="confirm-color-btn" @click="confirmColorSelection">确定</div> <div class="confirm-color-btn" @click="confirmColorSelection">{{ $t('Canvas.ok') }}</div>
</div> </div>
</div> </div>
</div> </div>
@@ -349,6 +351,11 @@ export default {
return Math.round(lineHeight.value * fontSize.value); return Math.round(lineHeight.value * fontSize.value);
}); });
//打开隐藏操作面板
const closePanel = ref(false)
const setClosePanel = ()=>{
closePanel.value = !closePanel.value
}
// 方法 // 方法
const showEditor = (event) => { const showEditor = (event) => {
const { textObject: eventTextObject, layer: eventLayer } = event.detail; const { textObject: eventTextObject, layer: eventLayer } = event.detail;
@@ -362,6 +369,8 @@ export default {
// 显示面板 // 显示面板
visible.value = true; visible.value = true;
closePanel.value = true
}; };
const close = () => { const close = () => {
@@ -626,6 +635,8 @@ export default {
textColor, textColor,
backgroundColor, backgroundColor,
opacity, opacity,
setClosePanel,
closePanel,
hasTransparentBg, hasTransparentBg,
fontWeight, fontWeight,
fontStyle, fontStyle,
@@ -692,6 +703,25 @@ export default {
border-top: 1px solid rgba(0, 0, 0, 0.05); border-top: 1px solid rgba(0, 0, 0, 0.05);
border-bottom: 1px solid rgba(0, 0, 0, 0.05); border-bottom: 1px solid rgba(0, 0, 0, 0.05);
overflow: hidden; overflow: hidden;
&.active{
transform: translateY(100%);
> .btn{
> i{
transform: rotate(90deg);
}
}
}
> .btn{
width: 100%;
text-align: center;
cursor: pointer;
> i{
font-size: 1.4rem;
display: block;
transform: rotate(270deg);
}
}
} }
.text-editor-panel.is-active { .text-editor-panel.is-active {

View File

@@ -290,7 +290,7 @@ export default defineComponent({
color, color,
designType:(newData && detailData.currentDetailType == 'sketch' && isCurrent)?newData.designType:list[i].designType, designType:(newData && detailData.currentDetailType == 'sketch' && isCurrent)?newData.designType:list[i].designType,
id:(newData && detailData.currentDetailType == 'sketch' && isCurrent)?newData.id:list[i].id, id:(newData && detailData.currentDetailType == 'sketch' && isCurrent)?newData.id:list[i].id,
// maskMinioUrl:'', maskMinioUrl:list[i]?.maskMinioUrl,
// maskUrl:'', // maskUrl:'',
maskUrl:list[i].maskUrl, maskUrl:list[i].maskUrl,
offset, offset,
@@ -333,7 +333,7 @@ export default defineComponent({
modelType:(detailData.currentDetailType == 'models' && detailData.designDetail.newModel)?detailData.designDetail.newModel.type:detailData.designDetail.oldModel?detailData.designDetail.oldModel.type:'', modelType:(detailData.currentDetailType == 'models' && detailData.designDetail.newModel)?detailData.designDetail.newModel.type:detailData.designDetail.oldModel?detailData.designDetail.oldModel.type:'',
timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone, timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone,
processId:userDetail.value.userId, processId:userDetail.value.userId,
probjectId:store.state.Workspace.probjects, probjectId:store.state.Workspace.probjects.id,
} }
detailData.loadingShow = true detailData.loadingShow = true
Https.axiosPost(Https.httpUrls.designSingle, data).then((rv)=>{ Https.axiosPost(Https.httpUrls.designSingle, data).then((rv)=>{
@@ -363,7 +363,7 @@ export default defineComponent({
modelType:(detailData.currentDetailType == 'models' && detailData.designDetail.newModel)?detailData.designDetail.newModel.type:detailData.designDetail.oldModel?detailData.designDetail.oldModel.type:'', modelType:(detailData.currentDetailType == 'models' && detailData.designDetail.newModel)?detailData.designDetail.newModel.type:detailData.designDetail.oldModel?detailData.designDetail.oldModel.type:'',
timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone, timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone,
processId:userDetail.value.userId, processId:userDetail.value.userId,
probjectId:store.state.Workspace.probjects, probjectId:store.state.Workspace.probjects.id,
} }
detailData.loadingShow = true detailData.loadingShow = true
Https.axiosPost(Https.httpUrls.designSingle, data).then((rv)=>{ Https.axiosPost(Https.httpUrls.designSingle, data).then((rv)=>{

View File

@@ -221,9 +221,10 @@ export default defineComponent({
const index = detailData.designDetail.clothes.findIndex(item => item.id === detailData.selectDetail.id); const index = detailData.designDetail.clothes.findIndex(item => item.id === detailData.selectDetail.id);
console.log(index,detailData.selectDetail.id) console.log(index,detailData.selectDetail.id)
await new Promise<void>((resolve, reject) => { await new Promise<void>((resolve, reject) => {
let canvasJSON = detailDom.editCanvas.getJSON() if(!detailDom?.editCanvas)return resolve()
let canvasJSON = detailDom?.editCanvas?.getJSON()
let canvasData = JSON.parse(canvasJSON) let canvasData = JSON.parse(canvasJSON)
if(!canvasData)return if(!canvasData)return resolve()
canvasData.canvas.objects.forEach((objectsItem:any) => { canvasData.canvas.objects.forEach((objectsItem:any) => {
if(objectsItem.type == 'image')objectsItem.minioUrl = getMinioUrl(objectsItem.src) if(objectsItem.type == 'image')objectsItem.minioUrl = getMinioUrl(objectsItem.src)
}); });

View File

@@ -943,6 +943,8 @@ export default defineComponent({
width: auto; width: auto;
height: auto; height: auto;
min-width: 60%; min-width: 60%;
overflow-y: auto;
overflow-x: hidden;
// max-height: 80%; // max-height: 80%;
position: relative; position: relative;
>img{ >img{

View File

@@ -1,6 +1,9 @@
<template> <template>
<div class="modelindex"> <div class="modelindex">
<div class="modelindex_left"> <div class="modelindex_left">
<div class="back" v-show="isEditPattern.value">
<i class="fi fi-br-angle-left" @click="setBack"></i>
</div>
<modelNav @canvasReload="()=>$emit('canvasReload')" @addSketch="()=>$emit('addSketch')" @deleteItem="deleteItem"></modelNav> <modelNav @canvasReload="()=>$emit('canvasReload')" @addSketch="()=>$emit('addSketch')" @deleteItem="deleteItem"></modelNav>
</div> </div>
<div class="modelindex_right"> <div class="modelindex_right">
@@ -112,6 +115,9 @@ export default defineComponent({
},1000) },1000)
} }
const setBack = ()=>{
emit('detailEdit','edit')
}
onMounted(()=>{ onMounted(()=>{
window.addEventListener('resize', handleResize); window.addEventListener('resize', handleResize);
}) })
@@ -128,6 +134,7 @@ export default defineComponent({
deleteItem, deleteItem,
oppositeRevocation, oppositeRevocation,
mousedownDesignImg, mousedownDesignImg,
setBack,
} }
}, },
@@ -196,6 +203,30 @@ export default defineComponent({
} }
.modelindex_left{ .modelindex_left{
justify-content: center; justify-content: center;
position: relative;
> .back{
position: absolute;
font-size: 3.6rem;
font-weight: 500;
display: flex;
align-items: center;
margin-bottom: 1.2rem;
top: 8rem;
left: 0;
> i {
margin-right: 2.8rem;
font-size: 2rem;
display: flex;
cursor: pointer;
align-items: center;
width: 4.6rem;
height: 4.6rem;
border-radius: 1.2rem;
display: flex;
justify-content: center;
border: 1px solid #D8DADC;
}
}
} }
} }

View File

@@ -1,5 +1,5 @@
<template> <template>
<div class="modelNavBox"> <div class="modelNavBox" :class="{'modelNavBox_active':designDetail.clothes.length == 5}">
<div class="modelNav" ref="modelNav" :style="{height:prentHeight}"> <div class="modelNav" ref="modelNav" :style="{height:prentHeight}">
<div class="modelNav_item item" <div class="modelNav_item item"
v-for="item,index in designDetail.clothes" v-for="item,index in designDetail.clothes"
@@ -259,6 +259,9 @@ export default defineComponent({
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.modelNavBox{ .modelNavBox{
&.modelNavBox_active{
margin-top: 12rem;
}
.modelNav_item{ .modelNav_item{
width: 12rem; width: 12rem;
height: 12rem; height: 12rem;

View File

@@ -187,8 +187,8 @@
v-show="item?.imgUrl" v-show="item?.imgUrl"
class="delete_like_file_block left1" class="delete_like_file_block left1"
> >
<i v-if="!item.like" class="fi fi-rr-heart" @click="likeFile(item,'like')"></i> <i v-if="!item.like" class="fi fi-rr-heart" @click.stop="likeFile(item,'like',index)"></i>
<i v-else class="fi fi-sr-heart" :adminLike="!!item.like" @click.stop="likeFile(item,'noLike')"></i> <i v-else class="fi fi-sr-heart" :adminLike="!!item.like" @click.stop="likeFile(item,'noLike',index)"></i>
</div> </div>
<div v-show="item?.imgUrl" class="delete_like_file_block left"> <div v-show="item?.imgUrl" class="delete_like_file_block left">
<i class="fi fi-bs-expand-arrows-alt" @click.stop="scaleImage(index)"></i> <i class="fi fi-bs-expand-arrows-alt" @click.stop="scaleImage(index)"></i>
@@ -938,7 +938,7 @@ export default defineComponent({
// } // }
// } // }
}, },
likeFile(item:any,str:string){ likeFile(item:any,str:string,index:number){
if(str == 'like'){ if(str == 'like'){
let level2Type = '' let level2Type = ''
if(this.upload.level1Type == "Sketchboard"){ if(this.upload.level1Type == "Sketchboard"){
@@ -960,8 +960,11 @@ export default defineComponent({
} }
).catch(res=>{ ).catch(res=>{
}); });
this.fileList[index].state = ''
this.generageAdd(item)
}else{ }else{
this.fileList[index].state = 'delete'
this.generageAdd(item)
let data = { let data = {
generateDetailId:item.id, generateDetailId:item.id,
timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone

View File

@@ -32,7 +32,7 @@
<div class="generalModel_btn" :class="[driver__.driver?'hideEvents':'']"> <div class="generalModel_btn" :class="[driver__.driver?'hideEvents':'']">
<div class="generalModel_closeIcon" @click.stop="cancelDsign()"> <div class="generalModel_closeIcon" @click.stop="cancelDsign()">
<!-- <i class="fi fi-rr-cross-small"></i> --> <!-- <i class="fi fi-rr-cross-small"></i> -->
<svg width="100%" height="100%" viewBox="0 0 46 46" fill="none" xmlns="http://www.w3.org/2000/svg"> <svg width="46" height="46" viewBox="0 0 46 46" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="23" cy="23" r="23" fill="white" fill-opacity="0.3"/> <circle cx="23" cy="23" r="23" fill="white" fill-opacity="0.3"/>
<rect x="32.5063" y="12" width="3" height="29" rx="1.5" transform="rotate(45 32.5063 12)" fill="white"/> <rect x="32.5063" y="12" width="3" height="29" rx="1.5" transform="rotate(45 32.5063 12)" fill="white"/>
<rect x="34.6274" y="32.5059" width="3" height="29" rx="1.5" transform="rotate(135 34.6274 32.5059)" fill="white"/> <rect x="34.6274" y="32.5059" width="3" height="29" rx="1.5" transform="rotate(135 34.6274 32.5059)" fill="white"/>

View File

@@ -524,7 +524,7 @@ export default defineComponent({
message.info(t('ProductImg.jsContent2')) message.info(t('ProductImg.jsContent2'))
return return
} }
let imageStrength = productImgData.similarity == 100? 95 :productImgData.similarity let imageStrength = 70 / 100 * productImgData.similarity
let data:any ={ let data:any ={
prompt:productImgData.searchName[productimgMenu.value.value], prompt:productImgData.searchName[productimgMenu.value.value],
toProductImageVOList:selectArr, toProductImageVOList:selectArr,
@@ -606,7 +606,16 @@ export default defineComponent({
// productImgData.generateList[productimgMenu.value.value] = [] // productImgData.generateList[productimgMenu.value.value] = []
// } // }
let index = productImgData.generateList.findIndex((obj:any) => obj.taskId === element.taskId); let index = productImgData.generateList.findIndex((obj:any) => obj.taskId === element.taskId);
productImgData.generateList[index] = element console.log(123123)
productImgData.generateList[index] = {
...element,
prompt:productImgData.searchName[productimgMenu.value.value],
modelName:productimgMenu.value.value,
sourceUrl:productImgData.selectGenerate?.sourceUrl || productImgData.selectGenerate?.productImage,
status:null,
resultType:productImgData.selectGenerate?.resultType,
}
console.log(productImgData.generateList)
// productImgData.generateList[productimgMenu.value.value].unshift(element) // productImgData.generateList[productimgMenu.value.value].unshift(element)
}else if(element.status == 'Fail'){ }else if(element.status == 'Fail'){
let index = productImgData.generateList.findIndex((obj:any) => obj.taskId === element.taskId); let index = productImgData.generateList.findIndex((obj:any) => obj.taskId === element.taskId);

View File

@@ -34,9 +34,10 @@
<div v-show="scaleImageList[scaleImageIndex]?.resultType == 'Relight'" class="productImg_content_item_title productImg_content_item_title_similarity"> <div v-show="scaleImageList[scaleImageIndex]?.resultType == 'Relight'" class="productImg_content_item_title productImg_content_item_title_similarity">
<span>{{$t('ProductImg.SelectionFunction')}}</span> <span>{{$t('ProductImg.SelectionFunction')}}</span>
</div> </div>
<div v-show="scaleImageList[scaleImageIndex]?.resultType == 'Relight'" class="productImg_content_item_Direction generalModel_state_item" style="margin-bottom: 1rem;"> <!-- 暂时去掉 -->
<!-- <div v-show="scaleImageList[scaleImageIndex]?.resultType == 'Relight'" class="productImg_content_item_Direction generalModel_state_item" style="margin-bottom: 1rem;">
<a-select size="large" style="width: 100%;" v-model:value="speedData.value" :options="speedList" :field-names="{ label: 'relightLabel', value: 'value' }"></a-select> <a-select size="large" style="width: 100%;" v-model:value="speedData.value" :options="speedList" :field-names="{ label: 'relightLabel', value: 'value' }"></a-select>
</div> </div> -->
<div v-show="scaleImageList[scaleImageIndex]?.resultType == 'ToProductImage' && speedData.value != 'flux'" class="productImg_content_item_title productImg_content_item_title_similarity"> <div v-show="scaleImageList[scaleImageIndex]?.resultType == 'ToProductImage' && speedData.value != 'flux'" class="productImg_content_item_title productImg_content_item_title_similarity">
<span>{{$t('ProductImg.Similarity')}}</span> <span>{{$t('ProductImg.Similarity')}}</span>
</div> </div>
@@ -46,7 +47,7 @@
:tooltipVisible="false" :tooltipVisible="false"
:step="5" :step="5"
@afterChange="()=>{}" @afterChange="()=>{}"
:max="70" :max="100"
> >
</a-slider> </a-slider>
<input style="margin-left: 2rem;" type="number" readonly v-model="productimgSimilarity"> <input style="margin-left: 2rem;" type="number" readonly v-model="productimgSimilarity">
@@ -295,7 +296,8 @@ export default defineComponent({
elementId:scaleImageList.value[scaleImageIndex.value].elementId, elementId:scaleImageList.value[scaleImageIndex.value].elementId,
elementType:scaleImageList.value[scaleImageIndex.value].elementType, elementType:scaleImageList.value[scaleImageIndex.value].elementType,
} }
let imageStrength = productimg.productimgSimilarity == 100? 95 :productimg.productimgSimilarity // let imageStrength = productimg.productimgSimilarity == 100? 95 :productimg.productimgSimilarity
let imageStrength = 70 / 100 * productimg.productimgSimilarity
let data:any ={ let data:any ={
direction:productimg.productimgRelightDirection, direction:productimg.productimgRelightDirection,
prompt:productimg.productimgSearchName, prompt:productimg.productimgSearchName,
@@ -527,22 +529,20 @@ export default defineComponent({
}, },
methods: { methods: {
setUserData(item:any){ setUserData(item:any){
console.log(item)
this.productimgSearchName = item.prompt this.productimgSearchName = item.prompt
this.productimgSimilarity = 100 - item.imageStrength * 100 this.productimgSimilarity = 100 - item.imageStrength * 100
this.productimgRelightDirection = item.direction this.productimgRelightDirection = item.direction
console.log(this.productimgSearchName) // let list = this.speedTypeList.toPorductImg
let list = this.speedTypeList.toPorductImg if(this.speedList.length == 0)return
if(list.length == 0)return
let modelName = '' let modelName = ''
if(!item.modelName){ if(!item.modelName){
modelName = '' modelName = ''
}else{ }else{
modelName = item.modelName modelName = item.modelName
} }
list.forEach((item:any)=>{ this.speedList.forEach((item:any)=>{
if(modelName == item.value){ if(modelName == item.value){
this.speedData = item this.speedData = {...item}
} }
}) })
}, },
@@ -562,7 +562,7 @@ export default defineComponent({
}else{ }else{
this.speedList = this.speedTypeList.toPorductImg this.speedList = this.speedTypeList.toPorductImg
} }
this.speedData = JSON.parse(JSON.stringify(this.speedList[0])) // this.speedData = JSON.parse(JSON.stringify(this.speedList[0]))
document.addEventListener('keydown',this.setKeydown) document.addEventListener('keydown',this.setKeydown)
this.setUserData(list[index]) this.setUserData(list[index])
this.$nextTick() this.$nextTick()

View File

@@ -41,10 +41,33 @@
<i v-else class="fi fi-br-check" @click="editChek('brandSlogan')"></i> <i v-else class="fi fi-br-check" @click="editChek('brandSlogan')"></i>
</div> </div>
</div> </div>
<div style="flex:1;text-align: right;" v-show="fall?.list?.length > 0"> <div class="compute" style="flex:1;text-align: right;" v-show="fall?.list?.length > 0">
<div class="gallery_btn" v-show="schedule.num == 1||(schedule.num == 0 && !schedule.state)" @click="compute">{{$t('brandDNA.Compute')}}</div> <!-- <div @click="setProgress(50)">123123123</div> -->
<div v-show="schedule.num != 1"> <div class="gallery_btn" @click="compute" :class="{'loading':!(schedule.num == 1||(schedule.num == 0 && !schedule.state))}">
<a-progress style="width:20rem;" :percent="schedule.num * 100" size="small" :showInfo="false" /> {{$t('brandDNA.Compute')}}
<svg width="15" height="15" viewBox="0 0 100 100" v-show="!(schedule.num == 1||(schedule.num == 0 && !schedule.state))">
<circle
cx="50"
cy="50"
r="40"
fill="none"
stroke="#1a1a1a"
stroke-width="15"
/>
<circle
cx="50"
cy="50"
r="40"
fill="none"
stroke="#fff"
stroke-width="15"
stroke-linecap="round"
:stroke-dasharray="circumference"
:stroke-dashoffset="dashOffset"
transform="rotate(-90 50 50)"
/>
</svg>
</div> </div>
</div> </div>
</div> </div>
@@ -335,7 +358,9 @@ export default defineComponent({
Https.axiosPost(Https.httpUrls.getInitializeProgress,{brandId:data.detail.id}).then((res:any)=>{ Https.axiosPost(Https.httpUrls.getInitializeProgress,{brandId:data.detail.id}).then((res:any)=>{
data.schedule.num = res.percent data.schedule.num = res.percent
data.schedule.state = res.analyzed data.schedule.state = res.analyzed
if(res.percent == 1 || !res.analyzed){return clearTimeout(data.getProgressTime)} if(res.percent == 1 || !res.analyzed){
return clearTimeout(data.getProgressTime)
}
data.getProgressTime = setTimeout(()=>{ data.getProgressTime = setTimeout(()=>{
getProgress() getProgress()
},5000) },5000)
@@ -406,8 +431,27 @@ export default defineComponent({
data.selectImgList.push(item.id) data.selectImgList.push(item.id)
} }
} }
const progress = ref(50);
const radius = 40; // 半径调整
const strokeWidth = 15; // 描边加粗以便在小尺寸下可见
const circumference = computed(() => {
return 2 * Math.PI * radius;
});
const dashOffset = computed(() => {
const progressDecimal = data.schedule.num / 100;
return circumference.value * (1 - progressDecimal);
});
const adjustProgress = (amount) => {
data.schedule.num = Math.min(Math.max(data.schedule.num + amount, 0), 100);
};
// 设置特定进度值
const setProgress = (value) => {
data.schedule.num = value;
};
onBeforeUnmount(()=>{ onBeforeUnmount(()=>{
clearInterval(data.getProgressTime) clearInterval(data.getProgressTime)
clearTimeout(data.getProgressTime)
}) })
return{ return{
...toRefs(dataDom), ...toRefs(dataDom),
@@ -425,6 +469,9 @@ export default defineComponent({
deleteBatchPic, deleteBatchPic,
deleteSinglePic, deleteSinglePic,
selectImg, selectImg,
circumference,
dashOffset,
setProgress,
} }
}, },
directives:{ directives:{
@@ -463,6 +510,25 @@ export default defineComponent({
border-bottom: 1px solid #ccc; border-bottom: 1px solid #ccc;
padding-bottom: 1rem; padding-bottom: 1rem;
margin-bottom: 1rem; margin-bottom: 1rem;
.compute{
> div{
position: relative;
padding-right: 2rem;
}
.gallery_btn{
&.loading{
pointer-events: none;
color: #5F5F5F;
}
}
svg{
transform: translateY(2.5px);
circle{
transition: all .3s;
}
}
}
> .logo{ > .logo{
position: relative; position: relative;
margin-right: 3rem; margin-right: 3rem;

View File

@@ -191,11 +191,11 @@ export default defineComponent({
//获取列表 //获取列表
getCreditsDetailList() { getCreditsDetailList() {
let startTime = '00:00:00' let startTime = '00:00:00'
let endTime = '00:00:00' let endTime = '23:59:59'
let startDate: any = this.rangePickerValue[0] let startDate: any = this.rangePickerValue?.[0]
? this.rangePickerValue[0]+' '+startTime ? this.rangePickerValue[0]+' '+startTime
: ""; : "";
let endDate: any = this.rangePickerValue[1] let endDate: any = this.rangePickerValue?.[1]
? this.rangePickerValue[1]+' '+endTime ? this.rangePickerValue[1]+' '+endTime
: ""; : "";
let data = { let data = {

View File

@@ -130,12 +130,13 @@ export default defineComponent({
let value:any = { let value:any = {
projectId:data.selectObject.id, projectId:data.selectObject.id,
} }
console.log(str)
store.dispatch('getProjectData',str).then((data)=>{ store.dispatch('getProjectData',str).then((data)=>{
if(!data[str])return if(!data[str])return
value[str] = data[str] value[str] = data[str]
if(!value[str] || value[str]?.length == 0)return // if(!value[str] || value[str]?.length == 0)return
Https.axiosPost(Https.httpUrls.saveModuleContent, value).then((rv)=>{ Https.axiosPost(Https.httpUrls.saveModuleContent, value).then((rv)=>{
if(rv?.boundingBox)store.commit('setShowSketchboard',rv.boundingBox) if(str == 'sketchBoard')store.commit('setShowSketchboard',rv.boundingBox)
}) })
}) })
} }

View File

@@ -154,8 +154,8 @@
</div> </div>
<div class="modal_accomplish"> <div class="modal_accomplish">
<div class="modal_img"> <div class="modal_img">
<div v-for="item,index in sketchboardList" :key="item" class="modal_imgItem" :class="[driver__.driver?'showEvents':'']" > <div v-for="item,index in sketchboardList" :key="item.id" class="modal_imgItem" :class="[driver__.driver?'showEvents':'']" >
<img v-lazy="item.imgUrl"> <img v-lazy="item.imgUrl" :key="item.imgUrl">
<sketchCategory :disignTypeList="sketchCatecoryList" :generateList="sketchboardList" :isSpread="true" :item="item" :driver__="driver__.driver"></sketchCategory> <sketchCategory :disignTypeList="sketchCatecoryList" :generateList="sketchboardList" :isSpread="true" :item="item" :driver__="driver__.driver"></sketchCategory>
<!-- 在sketch 和print暂时关闭like --> <!-- 在sketch 和print暂时关闭like -->
<!-- <div <!-- <div
@@ -173,7 +173,7 @@
</label> </label>
</div> </div>
<div class="moreBox" @click.stop> <div class="moreBox" @click.stop>
<more level1Type="Sketchboard" :moreList="['edit','down','enlargement','delete']" :item="item" :index="index" @deleteFile="deleteFile" @scaleImage="scaleImage"></more> <more level1Type="Sketchboard" :moreList="['edit','down','enlargement','delete']" :item="item" :list="sketchboardList" :index="index" @deleteFile="deleteFile" @scaleImage="scaleImage"></more>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -107,7 +107,6 @@ export default defineComponent({
originalIdSource:props.item.resData.designType, originalIdSource:props.item.resData.designType,
type:props.level1Type, type:props.level1Type,
} }
console.log(data)
Https.axiosPost(Https.httpUrls.modifySketch, data).then( Https.axiosPost(Https.httpUrls.modifySketch, data).then(
(rv) => { (rv) => {
// rv.imgUrl = rv.url // rv.imgUrl = rv.url

View File

@@ -45,7 +45,7 @@
v-model:value="productimgSimilarity" v-model:value="productimgSimilarity"
:tooltipVisible="false" :tooltipVisible="false"
:step="5" :step="5"
:max="70" :max="100"
@afterChange="()=>{}" @afterChange="()=>{}"
> >
</a-slider> </a-slider>
@@ -354,7 +354,8 @@ setup(props:any,{emit}) {
} }
let getPrductimg = async ()=>{ let getPrductimg = async ()=>{
let obj = getData() let obj = getData()
let imageStrength = productimg.productimgSimilarity == 100? 95 :productimg.productimgSimilarity // let imageStrength = productimg.productimgSimilarity == 100? 95 :productimg.productimgSimilarity
let imageStrength = 70 / 100 * productimg.productimgSimilarity
let data:any ={ let data:any ={
direction:productimg.productimgRelightDirection, direction:productimg.productimgRelightDirection,
prompt:productimg.productimgSearchName, prompt:productimg.productimgSearchName,

View File

@@ -173,7 +173,7 @@
@mouseenter.stop="gifPlay($event,design)" @mouseenter.stop="gifPlay($event,design)"
@mouseleave.stop="gifPause($event,design)" > @mouseleave.stop="gifPause($event,design)" >
<!-- <div :style="{'background-image': `url(${design?.designOutfitUrl||design?.url})`}" class="content_img" v-if="design?.designOutfitUrl||design?.url" :key="design?.designOutfitUrl" designType="like" :index="index"></div> --> <!-- <div :style="{'background-image': `url(${design?.designOutfitUrl||design?.url})`}" class="content_img" v-if="design?.designOutfitUrl||design?.url" :key="design?.designOutfitUrl" designType="like" :index="index"></div> -->
<img class="content_img" v-if="design?.designOutfitUrl||design?.url" :src="design?.designOutfitUrl||design?.url" <img class="content_img" v-else-if="design?.designOutfitUrl||design?.url" :src="design?.designOutfitUrl||design?.url"
:key="design?.status" designType="like" :index="index"/> :key="design?.status" designType="like" :index="index"/>
<a-spin v-show="!design?.designOutfitUrl && !design?.url && !design?.firstFrameUrl" size="large"></a-spin> <a-spin v-show="!design?.designOutfitUrl && !design?.url && !design?.firstFrameUrl" size="large"></a-spin>
@@ -910,6 +910,7 @@ export default defineComponent({
} }
const addGenerateImg = async (data:any)=>{ const addGenerateImg = async (data:any)=>{
if(!data.id)return if(!data.id)return
console.log(data)
await nextTick().then(()=>{ await nextTick().then(()=>{
designData.isUnfold = true designData.isUnfold = true
uploadLikeDom() uploadLikeDom()
@@ -1035,6 +1036,11 @@ export default defineComponent({
designData.selectLikeDesign[index].elementType = element.elementType designData.selectLikeDesign[index].elementType = element.elementType
designData.selectLikeDesign[index].elementId = element.elementId designData.selectLikeDesign[index].elementId = element.elementId
designData.selectLikeDesign[index].id = element.id designData.selectLikeDesign[index].id = element.id
if(element?.videoUrl){
designData.selectLikeDesign[index].firstFrameUrl = element.firstFrameUrl
designData.selectLikeDesign[index].videoUrl = element.videoUrl
designData.selectLikeDesign[index].gifUrl = element.gifUrl
}
} }
}); });
} }
@@ -1047,6 +1053,11 @@ export default defineComponent({
likeItem.childList[index].elementType = element.elementType likeItem.childList[index].elementType = element.elementType
likeItem.childList[index].elementId = element.elementId likeItem.childList[index].elementId = element.elementId
likeItem.childList[index].id = element.id likeItem.childList[index].id = element.id
if(element?.videoUrl){
likeItem.childList[index].id.firstFrameUrl = element.firstFrameUrl
likeItem.childList[index].id.videoUrl = element.videoUrl
likeItem.childList[index].id.gifUrl = element.gifUrl
}
} }
}) })
} }
@@ -1203,9 +1214,9 @@ export default defineComponent({
state = false state = false
Https.axiosPost(url, data).then( Https.axiosPost(url, data).then(
(rv) => { (rv) => {
if(type == 'PoseTransfer'){ // if(type == 'PoseTransfer'){
rv = [rv] // rv = [rv]
} // }
state = true state = true
rv.forEach((element:any) => { rv.forEach((element:any) => {
if(element?.status == 'Success'){ if(element?.status == 'Success'){

View File

@@ -127,6 +127,9 @@ export default defineComponent({
data.libraryList = item.modelList data.libraryList = item.modelList
} }
}); });
if(rv.length == 1){
data.libraryList = []
}
if(data.libraryList?.[0]==null)data.systemUser=true if(data.libraryList?.[0]==null)data.systemUser=true
if(!data.systemUser){ if(!data.systemUser){
data.modelList = data.libraryList data.modelList = data.libraryList
@@ -396,6 +399,7 @@ export default defineComponent({
// max-height: calc(100% - 20rem); // max-height: calc(100% - 20rem);
height: 100%; height: 100%;
position: relative; position: relative;
flex: 1;
> .item{ > .item{
width: 25rem; width: 25rem;
height: 55rem; height: 55rem;
@@ -461,9 +465,10 @@ export default defineComponent({
position: sticky; position: sticky;
flex-shrink: 0; flex-shrink: 0;
background: #fff; background: #fff;
margin: auto 0; // margin: auto 0;
> .upload{ > .upload{
height: 55rem; height: 100%;
// height: 55rem;
width: 29rem; width: 29rem;
border: 1px dashed transparent; border: 1px dashed transparent;
background: linear-gradient(#fff, #fff) padding-box, repeating-linear-gradient(-45deg, #fff 0, #fff 0.3em, #000 0, #000 0.6em); background: linear-gradient(#fff, #fff) padding-box, repeating-linear-gradient(-45deg, #fff 0, #fff 0.3em, #000 0, #000 0.6em);

View File

@@ -49,7 +49,7 @@
:isState="openType =='relight'" :isState="openType =='relight'"
v-if="openType == 'relight'" v-if="openType == 'relight'"
></toProductRelight> ></toProductRelight>
<poseTransfer v-if="openType == 'poseTransfer'" :source="source" :isDesignPage="true" @setLike="designLike" ref="poseTransfer"></poseTransfer> <poseTransfer v-if="openType == 'poseTransfer'" @unLike="unLike" :source="source" :isDesignPage="true" @setLike="designLike" ref="poseTransfer"></poseTransfer>
<div v-if="openType == 'editCanvas'" class="canvasBox" :class="{editCanvas:openType == 'editCanvas'}"> <div v-if="openType == 'editCanvas'" class="canvasBox" :class="{editCanvas:openType == 'editCanvas'}">
<div class="canvas" ref="canvasBox"> <div class="canvas" ref="canvasBox">
<editCanvas <editCanvas

View File

@@ -52,6 +52,7 @@ export default defineComponent({
chatData:null as any, chatData:null as any,
dataLoad:true as any, dataLoad:true as any,
}) })
console.log(data.selectObject)
let settingGetHistory:any = inject('settingGetHistory') let settingGetHistory:any = inject('settingGetHistory')
const setIsShowMark = (boolean:boolean)=>{ const setIsShowMark = (boolean:boolean)=>{
data.isShowMark = boolean data.isShowMark = boolean
@@ -62,6 +63,12 @@ export default defineComponent({
newPorject:null as any, newPorject:null as any,
chatDom:null as any, chatDom:null as any,
}) })
watch(() => data.selectObject.styleId,()=>{
if((data.selectObject?.id == route.query?.history) && route.query?.history){
getHistory(route.query.history)
}
})
watch(() => route.query, watch(() => route.query,
(query:any, oldQuery:any) => { (query:any, oldQuery:any) => {
data.routeQuery = query data.routeQuery = query

View File

@@ -90,12 +90,15 @@
<div v-show="isGenerate && !remGenerate" class="generage_btn started_btn"> <div v-show="isGenerate && !remGenerate" class="generage_btn started_btn">
<i class="fi fi-br-loading"></i> <i class="fi fi-br-loading"></i>
</div> </div>
<div v-show="remGenerate" @click="removeGenerate" class="generage_btn started_btn"> <div v-show="remGenerate" @click="setRemoveGenerate" class="generage_btn started_btn">
{{$t('Generate.Close')}} {{$t('Generate.Close')}}
</div> </div>
</div> </div>
</div> </div>
<div class="likeBox"> <div class="likeBox">
<!-- {{ locale }}
<img src="@/assets/images/homePage/toolsGuide/productCN.png" alt="">
<img src="@/assets/images/homePage/toolsGuide/productEN.png" alt=""> -->
<div class="element"> <div class="element">
<div class="title"><i class="fi fi-rs-comments"></i><span>{{$t('poseTransfer.LikeVideo')}}</span></div> <div class="title"><i class="fi fi-rs-comments"></i><span>{{$t('poseTransfer.LikeVideo')}}</span></div>
<div class="content"> <div class="content">
@@ -148,7 +151,7 @@ export default defineComponent({
}, },
emit:['unLike'], emit:['unLike'],
setup(props,{emit}) { setup(props,{emit}) {
const {t} = useI18n() const {t,locale} = useI18n()
const store = useStore(); const store = useStore();
const data:any = reactive({ const data:any = reactive({
button:{ button:{
@@ -302,7 +305,7 @@ export default defineComponent({
}) })
} }
const setGenerate = (dataList:any)=>{ const setGenerate = (dataList:any)=>{
let list:any = dataList let list:any = [dataList]
data.waitList = list data.waitList = list
let state = true let state = true
data.generateTime = setInterval(()=>{ data.generateTime = setInterval(()=>{
@@ -347,7 +350,7 @@ export default defineComponent({
}); });
},10000) },10000)
} }
const removeGenerate = ()=>{ const setRemoveGenerate = ()=>{
//取消操作 //取消操作
data.isGenerate = false data.isGenerate = false
data.remGenerate = false data.remGenerate = false
@@ -355,7 +358,7 @@ export default defineComponent({
if(data.waitList){ if(data.waitList){
// let str = data.waitList.map((obj:any) => obj.taskId).join(','); // let str = data.waitList.map((obj:any) => obj.taskId).join(',');
let value = { let value = {
uniqueId:data.waitList, uniqueId:data.waitList[0],
userId:store.state.UserHabit.userDetail.userId, userId:store.state.UserHabit.userDetail.userId,
timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone, timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone,
type: 'PoseTransferation' type: 'PoseTransferation'
@@ -476,13 +479,18 @@ export default defineComponent({
if(props.isDesignPage){ if(props.isDesignPage){
emit('unLike',item) emit('unLike',item)
} }
console.log(props.isDesignPage)
} }
Https.axiosPost(Https.httpUrls.poselikeOrDisike, {},{params:value}).then( Https.axiosPost(Https.httpUrls.poselikeOrDisike, {},{params:value}).then(
(rv) => { (rv) => {
if(str == 'like'){ if(str == 'like'){
item.newLike = true item.newLike = true
let value = { let value = {
likedList:[item], likedList:[{
...item,
sort:rv.sort,
parentId:rv.parentId,
}],
str:'add', str:'add',
index:-1, index:-1,
} }
@@ -490,7 +498,9 @@ export default defineComponent({
data.noLikeList.splice(index,1) data.noLikeList.splice(index,1)
}else{ }else{
let value = { let value = {
likedList:[item], likedList:[{
...item,
}],
str:'splice', str:'splice',
index:index, index:index,
} }
@@ -539,13 +549,11 @@ export default defineComponent({
watch(()=>data.noLikeList.length,(newVal,oldVal)=>{ watch(()=>data.noLikeList.length,(newVal,oldVal)=>{
nextTick(()=>{ nextTick(()=>{
let list = store.state.HomeStoreModule.poseTransfer.list let list = store.state.HomeStoreModule.poseTransfer.list
let taskIdList = list.filter((item:any)=>!item.videoUrl) let taskIdList = list.filter((item:any)=>!item.videoUrl)[0]
console.log(taskIdList)
if(taskIdList.length > 0){ if(taskIdList.length > 0){
data.isGenerate = true data.isGenerate = true
data.remGenerate = true data.remGenerate = true
console.log(taskIdList) setGenerate(taskIdList[0].taskId)
setGenerate([taskIdList[0].taskId])
} }
}) })
},{immediate: true }) },{immediate: true })
@@ -569,13 +577,14 @@ export default defineComponent({
getUploadUrl, getUploadUrl,
beforeUpload, beforeUpload,
fileUploadChange, fileUploadChange,
removeGenerate, setRemoveGenerate,
likeSetBtn, likeSetBtn,
noLikeSetBtn, noLikeSetBtn,
selectPose, selectPose,
openSpeed, openSpeed,
setSpeed, setSpeed,
setUploadDelete, setUploadDelete,
locale,
} }
}, },
directives:{ directives:{

View File

@@ -70,7 +70,7 @@
@afterChange="setSimilarity" @afterChange="setSimilarity"
:tooltipVisible="false" :tooltipVisible="false"
:step="5" :step="5"
:max="70" :max="100"
> >
</a-slider> </a-slider>
<input style="margin-left: 2rem;" type="number" readonly v-model="similarity"> <input style="margin-left: 2rem;" type="number" readonly v-model="similarity">
@@ -78,9 +78,10 @@
<div v-show="productimgMenu.value == 'Relight'" class="productImg_content_item_title productImg_content_item_title_similarity"> <div v-show="productimgMenu.value == 'Relight'" class="productImg_content_item_title productImg_content_item_title_similarity">
<span>{{$t('ProductImg.SelectionFunction')}}</span> <span>{{$t('ProductImg.SelectionFunction')}}</span>
</div> </div>
<div v-show="productimgMenu.value == 'Relight'" class="productImg_content_item_Direction generalModel_state_item"> <!-- 暂时去掉 -->
<!-- <div v-show="productimgMenu.value == 'Relight'" class="productImg_content_item_Direction generalModel_state_item">
<a-select size="large" style="width: 100%;" v-model:value="speedData.value" :options="speedList" :field-names="{ label: 'relightLabel', value: 'value' }"></a-select> <a-select size="large" style="width: 100%;" v-model:value="speedData.value" :options="speedList" :field-names="{ label: 'relightLabel', value: 'value' }"></a-select>
</div> </div> -->
<div v-show="productimgMenu.value == 'Relight' && speedData.value != 'flux'" class="productImg_content_item_title productImg_content_item_title_similarity"> <div v-show="productimgMenu.value == 'Relight' && speedData.value != 'flux'" class="productImg_content_item_title productImg_content_item_title_similarity">
<span>{{$t('ProductImg.RelightDirection')}}</span> <span>{{$t('ProductImg.RelightDirection')}}</span>
</div> </div>
@@ -145,6 +146,7 @@
<div class="productImg_right"> <div class="productImg_right">
<div class="productImg_right_item_box generalScroll"> <div class="productImg_right_item_box generalScroll">
<div class="content_header_left"> <div class="content_header_left">
<i class="fi fi-rs-comments"></i><span class="content_header_des"> <i class="fi fi-rs-comments"></i><span class="content_header_des">
@@ -152,6 +154,14 @@
</span> </span>
</div> </div>
<div class="content"> <div class="content">
<img
class="guide"
v-if="locale == 'ENGLISH' && likeList[productimgMenu.value] == 0 && generateList[productimgMenu.value] == 0"
:src="'/src/assets/images/homePage/toolsGuide/' + (productimgMenu.value == 'ToProductImage'?'productEN':'relightEN') + '.png'" alt="">
<img
class="guide"
v-else-if="likeList[productimgMenu.value] == 0 && generateList[productimgMenu.value] == 0"
:src="'/src/assets/images/homePage/toolsGuide/' + (productimgMenu.value == 'ToProductImage'?'productCN':'relightCN') + '.png'" alt="">
<generalDrag ref="generalDragLeft" :type="productimgMenu.value" :isCopy="!isDesignPage" @setBtn="selectSetBtn" :isDelete="false" :isLike="true" :list="likeList[productimgMenu.value]"></generalDrag> <generalDrag ref="generalDragLeft" :type="productimgMenu.value" :isCopy="!isDesignPage" @setBtn="selectSetBtn" :isDelete="false" :isLike="true" :list="likeList[productimgMenu.value]"></generalDrag>
</div> </div>
<!-- </div> --> <!-- </div> -->
@@ -243,7 +253,7 @@ export default defineComponent({
let userDetail:any= computed(()=>{ let userDetail:any= computed(()=>{
return store.state.UserHabit.userDetail return store.state.UserHabit.userDetail
}) })
const {t} = useI18n() const {t,locale} = useI18n()
const upload:any = ref({ const upload:any = ref({
projectId:computed(()=>store.state.Workspace.probjects.id) projectId:computed(()=>store.state.Workspace.probjects.id)
}) })
@@ -563,7 +573,7 @@ export default defineComponent({
message.info(t('ProductImg.jsContent2')) message.info(t('ProductImg.jsContent2'))
return return
} }
let imageStrength = productImgData.similarity == 100? 95 :productImgData.similarity let imageStrength = 70 / 100 * productImgData.similarity
let data:any ={ let data:any ={
prompt:productImgData.searchName[props.productimgMenu.value], prompt:productImgData.searchName[props.productimgMenu.value],
toProductImageVOList:selectArr, toProductImageVOList:selectArr,
@@ -644,7 +654,10 @@ export default defineComponent({
if(element.status == 'Success'){ if(element.status == 'Success'){
element.imgUrl = element.url element.imgUrl = element.url
let index = productImgData.generateList[props.productimgMenu.value].findIndex((obj:any) => obj.taskId === element.taskId); let index = productImgData.generateList[props.productimgMenu.value].findIndex((obj:any) => obj.taskId === element.taskId);
productImgData.generateList[props.productimgMenu.value][index] = element productImgData.generateList[props.productimgMenu.value][index] = {
...element,
modelName:speed.speedData.value,
}
// productImgData.generateList[props.productimgMenu.value].unshift(element) // productImgData.generateList[props.productimgMenu.value].unshift(element)
data = data.filter((item:any) => item !== element.taskId); data = data.filter((item:any) => item !== element.taskId);
}else if(element.status == 'Fail'){ }else if(element.status == 'Fail'){
@@ -899,6 +912,7 @@ export default defineComponent({
ifMaximumLength, ifMaximumLength,
openSpeed, openSpeed,
setSpeed, setSpeed,
locale,
}; };
}, },
directives:{ directives:{
@@ -1285,6 +1299,15 @@ export default defineComponent({
position: relative; position: relative;
flex: 1; flex: 1;
overflow: hidden; overflow: hidden;
.guide{
position: absolute;
width: 50rem;
left: 50%;
top: 50%;
transform: translate(-50%,-50%);
max-height: 100%;
object-fit: contain;
}
} }
> .btnLeft,> .btnRight{ > .btnLeft,> .btnRight{
position: absolute; position: absolute;

View File

@@ -280,13 +280,18 @@ methods: {
} }
} }
.habitSetStyle_ok{ .habitSetStyle_ok{
width: 60%; width: 100%;
text-align: center; text-align: center;
margin: 0 auto;
display: flex; display: flex;
justify-content: space-around; justify-content: space-around;
justify-content: flex-end;
>div{ >div{
width: 40%; width: 12rem;
line-height: 6rem;
text-align: center;
border-radius: 3rem;
height: auto;
margin-left: 2rem;
} }
} }
} }

View File

@@ -1,3 +1,6 @@
import { fontFamily } from "html2canvas/dist/types/css/property-descriptors/font-family";
import { opacity } from "html2canvas/dist/types/css/property-descriptors/opacity";
export default { export default {
Header: { Header: {
hello: "你好", hello: "你好",
@@ -1253,6 +1256,24 @@ export default {
MediumCoarse:'中粗', MediumCoarse:'中粗',
Pachytene:'粗线', Pachytene:'粗线',
Watercolour:'水彩', Watercolour:'水彩',
//添加文字弹窗面板
EditTextStyle:'编辑文本样式',
close:'取消',
confirmEdit:'确认',
fontFamily:'字体',
fontStyle:'样式',
design:'设计',
size:'尺寸',
charSpacing:'字符间距',
lineHeight:'行高',
opacity:'透明度',
property:'字体属性',
fontColor:'字体颜色',
BGColor:'背景色',
BGOpacity:'透明',
SelectTextColor:'选择文字颜色',
SelectBGColor:'选择背景颜色',
ok:'确定',
}, },
speedList:{ speedList:{
High:'高级', High:'高级',
@@ -1273,6 +1294,7 @@ export default {
pressure:'压力', pressure:'压力',
distortion:'失真', distortion:'失真',
power:'动力', power:'动力',
LiquefactionTool:'液化工具',
}, },
event:{ event:{
back:'返回' back:'返回'

View File

@@ -185,7 +185,7 @@ export default {
generationSetting: "Generation Setting", generationSetting: "Generation Setting",
GenerationParameters: "Generation Parameters", GenerationParameters: "Generation Parameters",
AdjustYourGenerationSetting: "Adjust your generation setting", AdjustYourGenerationSetting: "Adjust your generation setting",
ProjectName: "Project name", ProjectName: "Project Name",
Role: "Role", Role: "Role",
Adult: "Adult", Adult: "Adult",
Child: "Child", Child: "Child",
@@ -1253,6 +1253,24 @@ export default {
MediumCoarse:'Medium Coarse', MediumCoarse:'Medium Coarse',
Pachytene:'Coarse', Pachytene:'Coarse',
Watercolour:'Watercolour', Watercolour:'Watercolour',
//添加文字弹窗面板
EditTextStyle:'Edit Text Style',
close:'Close',
confirmEdit:'OK',
fontFamily:'Font Family',
fontStyle:'Font Style',
design:'Design',
size:'Size',
charSpacing:'Character Pitch',
lineHeight:'Line Height',
opacity:'Opacity',
property:'Font Property',
fontColor:'Font Color',
BGColor:'Background Color',
BGOpacity:'Opacity',
SelectTextColor:'Select Text Color',
SelectBGColor:'Select Background Color',
ok:'OK',
}, },
speedList:{ speedList:{
High:'High', High:'High',
@@ -1273,6 +1291,7 @@ export default {
pressure:'Pressure', pressure:'Pressure',
distortion:'Distortion', distortion:'Distortion',
power:'Power', power:'Power',
LiquefactionTool:'Liquefaction Tool',
}, },
event:{ event:{
back:'Back' back:'Back'

View File

@@ -254,9 +254,16 @@ const routes: Array<RouteRecordRaw> = [
path: "affiliateAudit", path: "affiliateAudit",
name: "affiliateAudit", name: "affiliateAudit",
meta: { enter: 3 }, meta: { enter: 3 },
component: () => component: () =>import("@/component/Administrator/affiliate/affiliateAudit/affiliateAudit.vue"),
import("@/component/Administrator/affiliate/affiliateAudit.vue"),
}, },
{
path: "affiliateReferral",
name: "affiliateReferral",
meta: {
enter: 3,
},
component: () =>import("@/component/Administrator/affiliate/affiliateReferral/index.vue"),
},
{ {
path: "TransactionTable", path: "TransactionTable",
name: "TransactionTable", name: "TransactionTable",
@@ -311,6 +318,14 @@ const routes: Array<RouteRecordRaw> = [
}, },
component: () => import("@/views/affiliate/affiliatePage.vue"), component: () => import("@/views/affiliate/affiliatePage.vue"),
children: [ children: [
{
path: "",
name: "defaultAffiliateHome",
meta: {
enter: 2,
},
component: () => import("@/component/affiliate/home.vue"),
},
{ {
path: "/affiliateHome", path: "/affiliateHome",
name: "affiliateHome", name: "affiliateHome",
@@ -318,14 +333,6 @@ const routes: Array<RouteRecordRaw> = [
enter: 2, enter: 2,
}, },
component: () => import("@/component/affiliate/home.vue"), component: () => import("@/component/affiliate/home.vue"),
},
{
path: "/affiliateReferral",
name: "affiliateReferral",
meta: {
enter: 2,
},
component: () => import("@/component/affiliate/Referral/index.vue"),
}, },
], ],
}, },

View File

@@ -34,6 +34,7 @@ const DesignDetail : Module<DesignDetail,RootState> = {
} }
let front:any = [] let front:any = []
let back:any = [] let back:any = []
console.log(data)
// let printZIndex = // let printZIndex =
data.clothes.forEach((v:any,index:any)=>{ data.clothes.forEach((v:any,index:any)=>{
// if(!v?.partialDesignDTO){ // if(!v?.partialDesignDTO){
@@ -49,6 +50,8 @@ const DesignDetail : Module<DesignDetail,RootState> = {
left:0, left:0,
top:0, top:0,
} }
v.maskMinioUrl = v.layersObject?.[0]?.maskMinioUrl
v.maskUrl = v.layersObject?.[0]?.maskUrl
v.layersObject[i].designOpenrtionBtn = false v.layersObject[i].designOpenrtionBtn = false
if(v.layersObject[i].imageCategory.indexOf("back") == -1){ if(v.layersObject[i].imageCategory.indexOf("back") == -1){
front[index] = v.layersObject[i] front[index] = v.layersObject[i]

View File

@@ -200,7 +200,7 @@ const UploadFilesModule : Module<UploadFiles,RootState> = {
}, },
setShowSketchboard(state,files){ setShowSketchboard(state,files){
state.showSketchboard = files state.showSketchboard = files?files:[]
}, },
clearShowSketchboard(state,files){ clearShowSketchboard(state,files){
state.showSketchboard = [] state.showSketchboard = []

View File

@@ -261,7 +261,7 @@ const userHabit : Module<UserHabit,RootState> = {
*/ */
state.userDetail.affiliate = data.affiliate state.userDetail.affiliate = data.affiliate
state.userDetail.systemUser = data.systemUser state.userDetail.systemUser = data.systemUser
// state.userDetail.systemUser = 3 state.userDetail.systemUser = 3
// 身份列表1可以使用aida系统2:可以使用affiliate页面3系统管理员用户 // 身份列表1可以使用aida系统2:可以使用affiliate页面3系统管理员用户
state.userDetail.systemList = [] state.userDetail.systemList = []
if(data.systemUser != 0)state.userDetail.systemList.push(1) if(data.systemUser != 0)state.userDetail.systemList.push(1)

View File

@@ -70,7 +70,6 @@ const Workspace : Module<DesignDetail,RootState> = {
state.projectList = list state.projectList = list
}, },
setProbject(state,data){ setProbject(state,data){
console.log(data)
for (const key in data) { for (const key in data) {
if(data[key] == undefined)continue if(data[key] == undefined)continue
state.probjects[key] = data[key] state.probjects[key] = data[key]

View File

@@ -120,11 +120,27 @@ const adminRouter = {
// }, // },
], ],
},{ },{
name:'Approval Affiliate', name:'Affiliate',
icon:'usetime', icon:'usetime',
route:'/administrator/affiliateAudit', expandIcon:'icon-xiala',
key:'sub10', key:'sub10',
isShow:true, isShow:true,
children: [
{
name:'Approval Affiliate',
route:'/administrator/affiliateAudit',
icon:'',
key:'sub10-1',
isShow:true,
},
{
name:'Affiliate Referral',
route:'/administrator/affiliateReferral',
icon:'',
key:'sub10-2',
isShow:true,
},
],
},{ },{
name:'Transaction', name:'Transaction',
icon:'usetime', icon:'usetime',

View File

@@ -1,5 +1,6 @@
<template> <template>
<div class="homeMain_max"> <div class="homeMain_max">
<div class="leftBox" :class="{leftHide:leftShow}"> <div class="leftBox" :class="{leftHide:leftShow}">
<div class="left"> <div class="left">
<div class="title"> <div class="title">
@@ -43,7 +44,7 @@
<div class="timeType" v-if="historyTypeItem == 'Yesterdaylist' && item.Yesterdaylist.length>0">{{$t('Header.Yesterday')}}</div> <div class="timeType" v-if="historyTypeItem == 'Yesterdaylist' && item.Yesterdaylist.length>0">{{$t('Header.Yesterday')}}</div>
<div class="timeType" v-if="historyTypeItem == 'WithinAWeeklist' && item.WithinAWeeklist.length>0">{{$t('Header.WithinAWeek')}}</div> <div class="timeType" v-if="historyTypeItem == 'WithinAWeeklist' && item.WithinAWeeklist.length>0">{{$t('Header.WithinAWeek')}}</div>
<div class="timeType" v-if="historyTypeItem == 'Earlierlist' && item.Earlierlist.length>0">{{$t('Header.Earlier')}}</div> <div class="timeType" v-if="historyTypeItem == 'Earlierlist' && item.Earlierlist.length>0">{{$t('Header.Earlier')}}</div>
<div v-for="childItem,index in item[historyTypeItem]" class="detailItem history" @click="setHistory(item,childItem)" :class="{active:openTypeChild == childItem.id}"> <div v-for="childItem,index in item[historyTypeItem]" :key="childItem.name" class="detailItem history" @click="setHistory(item,childItem)" :class="{active:openTypeChild == childItem.id}">
<div class="text" style="width: 100%;"> <div class="text" style="width: 100%;">
<span :title="childItem.name" v-show="!childItem.editName">{{ childItem.name }}</span> <span :title="childItem.name" v-show="!childItem.editName">{{ childItem.name }}</span>
<textarea v-model="historyData.historyTextarea" v-show="childItem.editName" @click.stop></textarea> <textarea v-model="historyData.historyTextarea" v-show="childItem.editName" @click.stop></textarea>
@@ -129,10 +130,10 @@
<div class="right"> <div class="right">
<div class="user"> <div class="user">
<div class="left" v-show="leftShow"> <div class="left" v-show="leftShow">
<svg @click="()=>leftShow=!leftShow" class="leftShowOrHide" xmlns="http://www.w3.org/2000/svg" width="2rem" height="2rem" fill="currentColor" viewBox="0 0 24 24" data-v-1c7326d6=""><path fill-rule="evenodd" d="M6 5a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h2V5H6Zm4 0v14h8a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1h-8ZM3 6a3 3 0 0 1 3-3h12a3 3 0 0 1 3 3v12a3 3 0 0 1-3 3H6a3 3 0 0 1-3-3V6Z" clip-rule="evenodd" data-v-1c7326d6=""></path></svg> <svg @click="()=>leftShow=!leftShow" class="leftShowOrHide" xmlns="http://www.w3.org/2000/svg" width="3rem" height="3rem" fill="currentColor" viewBox="0 0 24 24" data-v-1c7326d6=""><path fill-rule="evenodd" d="M6 5a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h2V5H6Zm4 0v14h8a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1h-8ZM3 6a3 3 0 0 1 3-3h12a3 3 0 0 1 3 3v12a3 3 0 0 1-3 3H6a3 3 0 0 1-3-3V6Z" clip-rule="evenodd" data-v-1c7326d6=""></path></svg>
<div class="newObj marginT2" @click="newProject"> <div class="newObj marginT2" @click="newProject" >
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 25 24"><path stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12.5 5v14m-7-7h14"></path></svg> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 25 24"><path stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12.5 5v14m-7-7h14"></path></svg>
<p>{{$t('Header.NewProject')}}</p> <p style="white-space: nowrap;">{{$t('Header.NewProject')}}</p>
</div> </div>
</div> </div>
<div class="trialApproval"> <div class="trialApproval">
@@ -317,7 +318,7 @@ export default defineComponent({
openTypeChild:'', openTypeChild:'',
isLanguage:false, isLanguage:false,
userDetailLanguage:computed(()=>store.state.UserHabit.userDetail.language), userDetailLanguage:computed(()=>store.state.UserHabit.userDetail.language),
openTypeList:computed(()=>openTypeList(t)), openTypeList:[],
projectSetting:null, projectSetting:null,
historyData:{ historyData:{
isNoData:false, isNoData:false,
@@ -336,6 +337,10 @@ export default defineComponent({
}, },
bathGenerationList:["poseTransfer","SERIES_DESIGN","toProduct","relight"] bathGenerationList:["poseTransfer","SERIES_DESIGN","toProduct","relight"]
}) })
watch(()=>locale.value,(newVal)=>{
homeMainData.openTypeList = openTypeList(t)
}, { immediate: true })
const historyData = reactive({ const historyData = reactive({
}) })
@@ -561,10 +566,15 @@ export default defineComponent({
} }
const settingGetHistory = ()=>{ const settingGetHistory = ()=>{
homeMainData.historyData.page = 1 homeMainData.historyData.page = 1
homeMainData.openTypeList.history.Todaylist = [] homeMainData.openTypeList.history = {
homeMainData.openTypeList.history.Yesterdaylist = [] icon:"fi-br-time-past",
homeMainData.openTypeList.history.WithinAWeeklist = [] label:"History",
homeMainData.openTypeList.history.Earlierlist = [] value:"history",
Todaylist:[],
Yesterdaylist:[],
WithinAWeeklist:[],
Earlierlist:[],
}
homeMainData.historyData.isShowLoading = false homeMainData.historyData.isShowLoading = false
homeMainData.historyData.isNoData = false homeMainData.historyData.isNoData = false
isFound = 0//表示是否找到当前id的记录 isFound = 0//表示是否找到当前id的记录

View File

@@ -108,15 +108,6 @@ export default defineComponent({
// }, // },
// ], // ],
}, },
{
name:'Affiliate Referral',
route:'/affiliateReferral',
icon:'yonghu',
expandIcon:'icon-xiala',
key:'sub2',
isShow:true,
},
], ],
openKeys: [], openKeys: [],
selectedKeys: ['sub1'], selectedKeys: ['sub1'],

View File

@@ -702,7 +702,7 @@ export default defineComponent({
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
@import url("https://fonts.googleapis.com/css2?family=Quicksand:wght@400;700&display=swap"); // @import url("https://fonts.googleapis.com/css2?family=Quicksand:wght@400;700&display=swap");
.feedbackSurvey { .feedbackSurvey {
font-family: "Quicksand", sans-serif; font-family: "Quicksand", sans-serif;
font-family: 'Roboto', sans-serif; font-family: 'Roboto', sans-serif;