Merge branch 'dev_vite' of http://18.167.251.121:10003/aidlab/aida_front into dev_vite

This commit is contained in:
zhangyh
2025-09-23 16:53:57 +08:00
24 changed files with 121 additions and 49 deletions

BIN
dist.7z

Binary file not shown.

View File

@@ -50,10 +50,10 @@
<div v-if="!isEditEmail">{{ userDetail.email }}</div> <div v-if="!isEditEmail">{{ userDetail.email }}</div>
<input v-else type="text" :value="editEmail"> <input v-else type="text" :value="editEmail">
</div> </div>
<!-- <div class="icon"> <div class="icon">
<i v-if="!isEditEmail" class="fi fi-rr-edit" @click="openEdit('email')"></i> <i v-if="!isEditEmail" class="fi fi-rr-edit" @click="openEdit('email')"></i>
<i v-else class="fi fi-br-check" @click="editChek('email')"></i> <i v-else class="fi fi-br-check" @click="editChek('email')"></i>
</div> --> </div>
</div> </div>
</div> </div>
<div class="content_item_user_left_detail_bottom"> <div class="content_item_user_left_detail_bottom">

View File

@@ -78,13 +78,24 @@
type="text" type="text"
style="width: 220px" style="width: 220px"
/> />
</div>
<div class="admin_state_item">
<!-- <div class="admin_state_item" > -->
<span>Start Time: <span>*</span></span>
<a-space direction="vertical" style="width: 220px">
<a-date-picker
v-model:value="startTime"
:disabled="title != 'Add'"
style="width: 220px"
/>
</a-space>
</div> </div>
<div class="admin_state_item"> <div class="admin_state_item">
<!-- <div class="admin_state_item" > --> <!-- <div class="admin_state_item" > -->
<span>End Time: <span>*</span></span> <span>End Time: <span>*</span></span>
<a-space direction="vertical" style="width: 220px"> <a-space direction="vertical" style="width: 220px">
<a-date-picker <a-date-picker
v-model:value="rangePickerValue" v-model:value="endTime"
:disabled="title != 'Add'" :disabled="title != 'Add'"
style="width: 220px" style="width: 220px"
/> />
@@ -156,7 +167,8 @@ export default defineComponent({
title: "", title: "",
}); });
let operationsData = reactive({ let operationsData = reactive({
rangePickerValue: "", endTime: "",
startTime: "",
percentOff: "", percentOff: "",
commissionRate: "", commissionRate: "",
maxRedemptions: "", maxRedemptions: "",
@@ -178,12 +190,17 @@ export default defineComponent({
operationsData.cooperator = data.cooperator; operationsData.cooperator = data.cooperator;
operationsData.paidCommission = data.paidCommission; operationsData.paidCommission = data.paidCommission;
operationsData.remark = data.remark; operationsData.remark = data.remark;
operationsData.rangePickerValue = dayjs( operationsData.endTime = dayjs(
new Date(data.redeemBy * 1000).toISOString().split("T")[0], new Date(data.redeemBy * 1000).toISOString().split("T")[0],
"YYYY/MM/DD" "YYYY/MM/DD"
); );
operationsData.startTime = dayjs(
new Date(data.startTime * 1000).toISOString().split("T")[0],
"YYYY/MM/DD"
);
console.log(data)
// operationsData.rangePickerValue='2024-08-05T00:00:06' // operationsData.endTime='2024-08-05T00:00:06'
// operationsData.validEndTime='2024-08-05T00:00:06' // operationsData.validEndTime='2024-08-05T00:00:06'
// operationsData.commissionRate = data.commissionRate // operationsData.commissionRate = data.commissionRate
// operationsData.maxRedemptions = data.maxRedemptions // operationsData.maxRedemptions = data.maxRedemptions
@@ -192,20 +209,23 @@ export default defineComponent({
} }
}; };
let setAddData = () => { let setAddData = () => {
const timestampMs = const emdTimeMs =
new Date(operationsData.rangePickerValue).getTime() / 1000; // 直接获取毫秒时间戳 new Date(operationsData.endTime).getTime() / 1000; // 直接获取毫秒时间戳
const startTimeMs =
new Date(operationsData.startTime).getTime() / 1000; // 直接获取毫秒时间戳
return { return {
percentOff: operationsData.percentOff, percentOff: operationsData.percentOff,
maxRedemptions: operationsData.maxRedemptions, maxRedemptions: operationsData.maxRedemptions,
commissionRate: operationsData.commissionRate, commissionRate: operationsData.commissionRate,
timestamp: timestampMs, endTime: emdTimeMs,
startTime: startTimeMs,
cooperator: operationsData.cooperator, cooperator: operationsData.cooperator,
remark: operationsData.remark, remark: operationsData.remark,
}; };
}; };
let setEditData = () => { let setEditData = () => {
const timestampMs = const timestampMs =
new Date(operationsData.rangePickerValue).getTime() / 1000; // 直接获取毫秒时间戳 new Date(operationsData.endTime).getTime() / 1000; // 直接获取毫秒时间戳
return { return {
id: operationsData.id, id: operationsData.id,
paidCommission: operationsData.commissionRate, paidCommission: operationsData.commissionRate,
@@ -214,7 +234,8 @@ export default defineComponent({
}; };
}; };
let cancelDsign = () => { let cancelDsign = () => {
operationsData.rangePickerValue = ""; operationsData.endTime = "";
operationsData.startTime = "";
operationsData.percentOff = ""; operationsData.percentOff = "";
operationsData.commissionRate = ""; operationsData.commissionRate = "";
operationsData.maxRedemptions = ""; operationsData.maxRedemptions = "";
@@ -228,7 +249,7 @@ export default defineComponent({
let data; let data;
if (operations.title == "Add") { if (operations.title == "Add") {
data = setAddData(); data = setAddData();
if (!data.commissionRate || !data.timestamp || !data.percentOff) if (!data.commissionRate || !data.startTime || !data.percentOff || !data.endTime)
return message.warning("Please check the input box marked with *"); return message.warning("Please check the input box marked with *");
Https.axiosPost(Https.httpUrls.createCoupon, data).then((rv) => { Https.axiosPost(Https.httpUrls.createCoupon, data).then((rv) => {
if (rv) { if (rv) {

View File

@@ -18,7 +18,7 @@ const emit = defineEmits([
"undo-redo-status-changed", "undo-redo-status-changed",
"trigger-library" "trigger-library"
]); ]);
const {t} = useI18n() const {t,locale} = useI18n()
const props = defineProps({ const props = defineProps({
activeTool: String, activeTool: String,
minimapEnabled: { minimapEnabled: {
@@ -166,6 +166,16 @@ const normalToolsList = ref([
icon: { name: "CFont", size: "20" }, icon: { name: "CFont", size: "20" },
class: "text-btn", class: "text-btn",
}, },
{
id: "help",
title: t("Canvas.help"),
action: () => openTutorial(),
icon: { name: "CHelp", size: "30" },
class: "text-btn",
style: {
'margin-top': 'auto',
},
},
]); ]);
// 红绿图模式工具列表 // 红绿图模式工具列表
@@ -244,6 +254,14 @@ function addText() {
emit("add-text"); emit("add-text");
} }
function openTutorial() {
if(locale == 'ENGLISH'){
window.open('https://aida-user-manual.super.site/specific-scenarios/freely-sketching-in-canvas', '_blank');
}else{
window.open('https://aida-user-manual-chinese.super.site/%e4%bd%bf%e7%94%a8%e7%94%bb%e5%b8%83%e8%bf%9b%e8%a1%8c%e7%bc%96%e8%be%91 ', '_blank');
}
}
function undo() { function undo() {
if (!canUndo.value) return; if (!canUndo.value) return;
undoFun(); undoFun();

View File

@@ -357,7 +357,7 @@ export default defineComponent({
designSingleItemDTOList:clothes, designSingleItemDTOList:clothes,
isPreview:true, isPreview:true,
// ifSubmit:designItemDetail.isPreview, // ifSubmit:designItemDetail.isPreview,
gender:workspace?.sex == 'Male'?1:0, gender:workspace?.sex,
sketchString:'', sketchString:'',
modelId:(detailData.currentDetailType == 'models' && detailData.designDetail.newModel)?detailData.designDetail.newModel.id:detailData.designDetail.oldModel?detailData.designDetail.oldModel.id:'', modelId:(detailData.currentDetailType == 'models' && detailData.designDetail.newModel)?detailData.designDetail.newModel.id:detailData.designDetail.oldModel?detailData.designDetail.oldModel.id:'',
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:'',
@@ -567,15 +567,17 @@ export default defineComponent({
height: 100%; height: 100%;
overflow: hidden; overflow: hidden;
&.detailLeft{ &.detailLeft{
width: 34rem; width: 30rem;
// width: 34rem; // width: 34rem;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
} }
&.isEditPattern{width: 0px;} &.isEditPattern{width: 0px;}
&.model{ &.model{
width: 50rem; width: 45rem;
margin: 0 10rem; // width: 50rem;
margin: 0 8rem;
// margin: 0 10rem;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
} }

View File

@@ -16,14 +16,6 @@
imageMode:'contains', imageMode:'contains',
}" }"
ref="editCanvas"> ref="editCanvas">
<template #customToolsBottom="{ toolButtonProps }">
<!-- 也可以直接使用普通的按钮 -->
<div class="custom-tool-btn" :class="{active:currentView === 'redGreenExample'}" style="margin-top: auto;" @click="editFront('redGreenExample')">
<SvgIcon name="CHelp" size="30" />
<div class="tool-tooltip">{{ $t('Canvas.help') }}</div>
</div>
</template>
</editCanvas> </editCanvas>
<!-- <canvasContent ref="canvasContent"></canvasContent> --> <!-- <canvasContent ref="canvasContent"></canvasContent> -->
</div> </div>
@@ -35,6 +27,7 @@
ref="editFrontBack"> ref="editFrontBack">
</editFrontBack> --> </editFrontBack> -->
<editCanvas v-if="canvasLoad" :config="canvasConfig" <editCanvas v-if="canvasLoad" :config="canvasConfig"
@canvasInit="canvasInit"
:enabledRedGreenMode="true" :enabledRedGreenMode="true"
:clothingImageUrl="selectDetail.path" :clothingImageUrl="selectDetail.path"
:redGreenImageUrl="frontBack.front[imgDomIndex].maskUrl" :redGreenImageUrl="frontBack.front[imgDomIndex].maskUrl"

View File

@@ -70,7 +70,7 @@ export default defineComponent({
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.detailLeft{ .detailLeft{
width: 34rem; // width: 34rem;
// width: 100%; // width: 100%;
height: 100%; height: 100%;
display: flex; display: flex;

View File

@@ -179,8 +179,11 @@ export default defineComponent({
> .switch_type_item{ > .switch_type_item{
position: relative; position: relative;
cursor: pointer; cursor: pointer;
margin-right: 6.5rem; margin-right: 4rem;
font-size: 1.8rem; font-size: 1.8rem;
> .detailText{
font-size: 1.6rem;
}
} }
> .switch_type_item::before { > .switch_type_item::before {
position: absolute; position: absolute;

View File

@@ -940,6 +940,9 @@ export default defineComponent({
flex: 1; flex: 1;
overflow: hidden; overflow: hidden;
position: relative; position: relative;
margin: 2rem 0;
width: 80%;
align-self: center;
> .mark_loading{ > .mark_loading{
position: absolute; position: absolute;
} }

View File

@@ -4,7 +4,7 @@
v-model:visible="cutPicuterModal" v-model:visible="cutPicuterModal"
:footer="null" :footer="null"
:get-container="() => $refs.cutPrictureModal" :get-container="() => $refs.cutPrictureModal"
width="78%" width="75%"
:maskClosable="false" :maskClosable="false"
:centered="true" :centered="true"
:closable="false" :closable="false"

View File

@@ -365,6 +365,7 @@ export default defineComponent({
title:this.selectSex, title:this.selectSex,
surname:this.surname, surname:this.surname,
givenName:this.givenName, givenName:this.givenName,
userId:this.userDetail.userId,
}; };
if(this.loginTime){ if(this.loginTime){
this.loginTime = false this.loginTime = false

View File

@@ -502,6 +502,7 @@ export default defineComponent({
if(item.isChecked){ if(item.isChecked){
obj.elementId = item.id obj.elementId = item.id
obj.elementType = item.type obj.elementType = item.type
obj.elementType = obj.elementType == 'Relight'?'ToProductImage':obj.elementType
selectArr.push(JSON.parse(JSON.stringify(obj))) selectArr.push(JSON.parse(JSON.stringify(obj)))
} }
}) })

View File

@@ -296,6 +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,
} }
obj.elementType = obj.elementType == 'Relight'?'ToProductImage':obj.elementType
// let imageStrength = productimg.productimgSimilarity == 100? 95 :productimg.productimgSimilarity // let imageStrength = productimg.productimgSimilarity == 100? 95 :productimg.productimgSimilarity
let imageStrength = 70 / 100 * productimg.productimgSimilarity let imageStrength = 70 / 100 * productimg.productimgSimilarity
let data:any ={ let data:any ={

View File

@@ -126,6 +126,10 @@ export default defineComponent({
}) })
const cancelDsign = ()=>{ const cancelDsign = ()=>{
data.showLoadsBrandDNA = false; data.showLoadsBrandDNA = false;
data.brandName = ''
data.brandSlogan = ''
data.generateText = ''
data.uploadList = []
} }
const upFileUploadChange = (value:any)=>{ const upFileUploadChange = (value:any)=>{
let file = value.file; let file = value.file;

View File

@@ -355,11 +355,11 @@ export default defineComponent({
this.fileList.splice(moodboard,1) this.fileList.splice(moodboard,1)
this.store.commit("setMoodboardFile", this.fileList); this.store.commit("setMoodboardFile", this.fileList);
} }
if(this.store.state.UploadFilesModule.moodboard.length == 0){ // if(this.store.state.UploadFilesModule.moodboard.length == 0){
this.store.commit("clearMoodTemplateId"); this.store.commit("clearMoodTemplateId");
this.layoutList = [] this.layoutList = []
this.edieShow = false this.edieShow = false
} // }
}, },
openSetData() { openSetData() {
let arr = JSON.parse( let arr = JSON.parse(

View File

@@ -1818,7 +1818,19 @@ export default defineComponent({
}, },
getSkecthBoard(boardData: any) { getSkecthBoard(boardData: any) {
console.log(boardData,this.store.state.Workspace.probjects)
boardData = boardData || [] boardData = boardData || []
const mapB = new Map();
boardData.forEach(item => {
if (item.categoryValue !== undefined) {
mapB.set(item.categoryValue, true);
}
});
boardData.filter(item =>
item.categoryValue !== undefined && mapB.has(item.categoryValue)
);
console.log(boardData)
let sketchBoards = boardData.map((v: any) => { let sketchBoards = boardData.map((v: any) => {
let data = { let data = {
designType: v.resData.designType, designType: v.resData.designType,

View File

@@ -228,6 +228,7 @@ export default defineComponent({
let uploadElementData = { let uploadElementData = {
str:'add', str:'add',
list:rv.uploadElement, list:rv.uploadElement,
isGetModule:true,
} }
store.commit('setUploadElement',uploadElementData) store.commit('setUploadElement',uploadElementData)

View File

@@ -27,11 +27,11 @@
<div class="text">{{$t('Habit.Gender')}}:</div> <div class="text">{{$t('Habit.Gender')}}:</div>
<div class="radio"> <div class="radio">
<label> <label>
<input type="radio" :disabled="status == 'edit'" name="gender" v-model="selectObject.sex" value="Female"> <input type="radio" name="gender" v-model="selectObject.sex" value="Female">
<span>{{$t('Habit.Female')}}</span> <span>{{$t('Habit.Female')}}</span>
</label> </label>
<label> <label>
<input type="radio" :disabled="status == 'edit'" name="gender" v-model="selectObject.sex" value="Male"> <input type="radio" name="gender" v-model="selectObject.sex" value="Male">
<span>{{$t('Habit.Male')}}</span> <span>{{$t('Habit.Male')}}</span>
</label> </label>
</div> </div>

View File

@@ -39,8 +39,7 @@
}" }"
:headers="{ Authorization: token }" :headers="{ Authorization: token }"
:before-upload="beforeUpload" :before-upload="beforeUpload"
v-model:file-list="fileList" :multiple="!!upload.projectId"
:multiple="true"
accept=".jpg,.png,.jpeg,.bmp" accept=".jpg,.png,.jpeg,.bmp"
@change="(file) => fileUploadChange(file)" @change="(file) => fileUploadChange(file)"
> >
@@ -136,6 +135,7 @@ import generalDrag from '@/component/modules/generalDrag.vue';
import { getUploadUrl,isMoible,getMinioUrl } from "@/tool/util"; import { getUploadUrl,isMoible,getMinioUrl } from "@/tool/util";
import { getCookie,setCookie } from "@/tool/cookie"; import { getCookie,setCookie } from "@/tool/cookie";
import showViewVideo from "@/tool/mount"; import showViewVideo from "@/tool/mount";
import router from '@/router';
export default defineComponent({ export default defineComponent({
components:{ components:{
@@ -156,6 +156,7 @@ export default defineComponent({
setup(props,{emit}) { setup(props,{emit}) {
const {t,locale} = useI18n() const {t,locale} = useI18n()
const store = useStore(); const store = useStore();
const route = useRoute();
const data:any = reactive({ const data:any = reactive({
button:{ button:{
left:false, left:false,
@@ -381,6 +382,11 @@ export default defineComponent({
} }
} }
let isSelectObject = false let isSelectObject = false
watch(()=>route?.query,(newVal)=>{
if(!newVal.id){
isSelectObject = false
}
},{immediate:true})
let beforeUpload = async (file: any)=>{ let beforeUpload = async (file: any)=>{
const isJpgOrPng = const isJpgOrPng =
file.type === "image/jpeg" || file.type === "image/jpeg" ||
@@ -394,6 +400,7 @@ export default defineComponent({
if (!isLt2M) { if (!isLt2M) {
message.info(useI18n().t('MoodboardUpload.jsContent4')); message.info(useI18n().t('MoodboardUpload.jsContent4'));
} }
console.log(data?.upload,isSelectObject)
if(!data?.upload?.projectId && !isSelectObject){ if(!data?.upload?.projectId && !isSelectObject){
isSelectObject = true isSelectObject = true
await createProbject() await createProbject()
@@ -409,28 +416,28 @@ export default defineComponent({
file.imgUrl = res.data.url; file.imgUrl = res.data.url;
file.id = res.data.id file.id = res.data.id
data.currentList.forEach((listItem:any)=>listItem.isChecked = false) data.currentList.forEach((listItem:any)=>listItem.isChecked = false)
data.fileList.forEach((listItem:any)=>{ // data.fileList.forEach((listItem:any)=>{
if(listItem.id == file.id){ // if(listItem.id == file.id){
listItem.isChecked = true // listItem.isChecked = true
}else{ // }else{
listItem.isChecked = false // listItem.isChecked = false
} // }
}) // })
file.type = 'ProductElement' file.type = 'ProductElement'
// if(props.productimgMenu.value == 'Relight'){ // if(props.productimgMenu.value == 'Relight'){
// file.type = "ToProductImage" // file.type = "ToProductImage"
// } // }
data.selectImg = res.data data.selectImg = res.data
data.fileList.filter((v: any) => v.status === "done"); // data.fileList.filter((v: any) => v.status === "done");
let storeData = { let storeData = {
str:'add', str:'add',
list:[file] list:[file]
} }
store.commit('setUploadElement',storeData) store.commit('setUploadElement',storeData)
}else{ }else{
bor = false bor = false
} }
// this.showFileList = productImgData.fileList
} else if (file.status === "error") { } else if (file.status === "error") {
bor = false bor = false
} }

View File

@@ -563,6 +563,7 @@ export default defineComponent({
}else{ }else{
obj.elementId = item.id obj.elementId = item.id
obj.elementType = item.resultType || 'ProductElement' obj.elementType = item.resultType || 'ProductElement'
obj.elementType = obj.elementType == 'Relight'?'ToProductImage':obj.elementType
} }
obj.parentId = item?.parentId || item?.userLikeSortId, obj.parentId = item?.parentId || item?.userLikeSortId,
selectArr.push(JSON.parse(JSON.stringify(obj))) selectArr.push(JSON.parse(JSON.stringify(obj)))

View File

@@ -229,7 +229,7 @@ const DesignDetail : Module<DesignDetail,RootState> = {
left:item.layersObject[i].position?.[1] * scale + 'px', left:item.layersObject[i].position?.[1] * scale + 'px',
width:item.layersObject[i].imageSize?.[0] * scale + 'px', width:item.layersObject[i].imageSize?.[0] * scale + 'px',
height:item.layersObject[i].imageSize?.[1] * scale + 'px', height:item.layersObject[i].imageSize?.[1] * scale + 'px',
zIndex:v?.style?.zIndex?v.style.zIndex:state.frontBack.front.length zIndex:v?.style?.zIndex?v.style.zIndex:v.priority?v.priority:state.frontBack.front.length
} }
item.layersObject[i].centers={ item.layersObject[i].centers={
left:0, left:0,

View File

@@ -95,6 +95,9 @@ const HomeStoreModule : Module<DesignDetail,RootState> = {
} }
}, },
setUploadElement(state,data){ setUploadElement(state,data){
if(data?.isGetModule){
state.uploadElement = []
}
if(data.str == 'add'){ if(data.str == 'add'){
state.uploadElement.unshift(...data.list) state.uploadElement.unshift(...data.list)
}else{ }else{

View File

@@ -4,7 +4,7 @@
<div class="administrator_title "> <div class="administrator_title ">
<div class="modal_title_text" @click="setBack"> <div class="modal_title_text" @click="setBack">
<i class="fi fi-sr-left"></i> <i class="fi fi-sr-left"></i>
<div class="modal_title_intro administrator_title_text">{{ $t('upgradePlan.Back') }}Back</div> <div class="modal_title_intro administrator_title_text">{{ $t('upgradePlan.Back') }}</div>
</div> </div>
</div> </div>
<div class="modal_title_text">{{ $t('Header.Administrator') }}</div> <div class="modal_title_text">{{ $t('Header.Administrator') }}</div>

View File

@@ -402,10 +402,10 @@ export default defineComponent({
homeMainData.openType = Object.keys(query)[0] homeMainData.openType = Object.keys(query)[0]
homeMainData.openTypeChild = query[Object.keys(query)[0]] homeMainData.openTypeChild = query[Object.keys(query)[0]]
} }
if((query?.id || query?.history) && !await getIdExistToHistory()){ // if((query?.id || query?.history) && !await getIdExistToHistory()){
router.push('/home') // router.push('/home')
return // return
} // }
}else{ }else{
homeMainData.openType = '' homeMainData.openType = ''
homeMainData.openTypeChild = '' homeMainData.openTypeChild = ''