Compare commits

44 Commits

Author SHA1 Message Date
X1627315083
7da3dcb0d7 Merge remote-tracking branch 'origin/StableVersion' into dev_vite 2025-12-18 11:01:04 +08:00
李志鹏
fd80e2d3c7 导出红绿图问题 2025-12-17 14:49:17 +08:00
X1627315083
b52c96fa67 edit product生成失败导致sort异常 2025-12-17 13:36:58 +08:00
X1627315083
3d202e32c2 修复detail有时候无法打开问题,修复detail中红绿图修改后preview没有及时试用最新红绿图 2025-12-16 17:36:20 +08:00
dcb63f88ae 添加 prod_build_manual.yaml 2025-11-29 00:08:32 +08:00
X1627315083
8dd9ddc93e fix 2025-11-28 17:17:46 +08:00
X1627315083
2dc6bd1346 Merge branch 'StableVersion' of ssh://18.167.251.121:10002/aidlab/aida_front into StableVersion 2025-11-28 17:12:44 +08:00
X1627315083
703d9cf781 注册页面移动端样式调整 2025-11-28 17:10:45 +08:00
a89c199ea8 删除 .gitea/workflows/prod_build_manual.yaml 2025-11-28 14:04:38 +08:00
5dc7514f05 上传文件至「.gitea/workflows」 2025-11-28 11:31:15 +08:00
925541ab99 style: 移动端样式 2025-11-27 13:39:22 +08:00
b800ca6b74 style: 文案间距 2025-11-27 11:39:27 +08:00
4a4afc4b10 style: 价格标签间距 2025-11-27 11:39:19 +08:00
26a55cea1d bugfix: 年度订阅按钮 2025-11-27 11:39:12 +08:00
5e68456707 Merge branch 'StableVersion' of ssh://18.167.251.121:10002/aidlab/aida_front into StableVersion 2025-11-27 10:47:57 +08:00
e992aa0ecd feat: 注册页语言切换 2025-11-27 10:47:53 +08:00
X1627315083
69c32905e1 调整悬浮样式 2025-11-27 10:35:19 +08:00
X1627315083
c582de3f60 删除活动页面前两个内容 2025-11-27 10:31:25 +08:00
X1627315083
0a8074eef8 调整首页切换语言位置 2025-11-27 10:30:56 +08:00
4b90bd5928 style: 移动端注册页面顶部logo 2025-11-27 10:29:18 +08:00
4376c8c313 style: 分辨率适配 2025-11-27 10:28:39 +08:00
4746ff22a1 style: 注册页面套餐item样式 2025-11-27 10:27:03 +08:00
68f8a413bf style: 订阅弹窗样式 2025-11-27 10:26:28 +08:00
c10d05ead2 style: 注册页面手机端适配 2025-11-27 10:26:24 +08:00
de641d18d7 feat: 统一注册页面"联系我们"样式,并在打开邮箱失败时复制邮件地址 2025-11-27 10:26:19 +08:00
zhangyh
8a0beee181 feat: 进入主页同步登录页语言 2025-11-27 10:25:01 +08:00
zhangyh
3dcb6330e3 feat: i18n 2025-11-27 10:24:52 +08:00
X1627315083
4bd8a54b34 调整首页切换语言位置 2025-11-27 10:24:21 +08:00
X1627315083
8368c9382a 修复detail选择颜色bug 2025-11-27 10:23:05 +08:00
f2463da8cc bugfix: editdesignType弹窗编辑产品图的prompt assist弹窗 2025-11-25 17:32:19 +08:00
6b8027f449 bugfix: design弹窗转产品图/编辑产品图的placeholder 2025-11-25 17:32:13 +08:00
zhangyh
8c3fea8a24 Merge branch 'dev_vite' into StableVersion 2025-11-24 17:41:56 +08:00
X1627315083
819093db8c 调整注册订阅页面结构 2025-11-24 17:40:43 +08:00
zhangyh
7dcfc3e705 Revert "情绪版布局调整"
This reverts commit f86c18cf3a.
2025-11-24 17:32:24 +08:00
zhangyh
7bb8b227b4 Merge branch 'dev_vite' into StableVersion 2025-11-24 17:26:26 +08:00
X1627315083
3d2fddbe7b 调整history字体大小 2025-11-24 17:11:09 +08:00
zhangyh
9662610b1b Merge branch 'dev_vite' into StableVersion 2025-11-24 15:37:28 +08:00
zhangyh
56f958173b bugfix: editdesignType弹窗问题 2025-11-24 15:08:28 +08:00
zhangyh
0e57e4de46 bugfix: 成人男装单品prompt assist图片错误 2025-11-24 14:52:16 +08:00
X1627315083
b0e365dcde Merge remote-tracking branch 'origin/dev_vite' into StableVersion 2025-11-24 13:33:00 +08:00
X1627315083
5497f4fdbc Merge remote-tracking branch 'origin/dev_vite' into StableVersion 2025-11-24 11:49:31 +08:00
zhangyh
3d6b622eef Merge branch 'dev_vite' into StableVersion 2025-11-22 01:19:33 +08:00
zhangyh
38ac7da504 Merge branch 'dev_vite' into StableVersion 2025-11-22 01:16:05 +08:00
X1627315083
1c895710d8 Merge remote-tracking branch 'origin/dev_vite' into StableVersion 2025-11-21 16:41:29 +08:00
9 changed files with 79 additions and 29 deletions

53
prod_build_manual.yaml Normal file
View File

@@ -0,0 +1,53 @@
name: AiDA WEB-Node.js StableVersion 分支构建部署
on:
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [ 18.18.0 ]
steps:
- name: 1.检出代码
uses: actions/checkout@v4
with:
ref: StableVersion
- name: 2.打印当前分支信息
run: |
echo "Current branch being deployed is: $(git rev-parse --abbrev-ref HEAD)"
echo "The code is from the 'main' branch, as specified in 'actions/checkout'."
- name: 3.设置 Node.js 环境 ${{ matrix.node-version }}
uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node-version }}
- run: npm install
- run: npm run build
- run: ls -l
- name: 3.5. 手动安装 AWS CLI v2 # 新增步骤:确保 aws 命令可用
run: |
echo "安装 AWS CLI V2..."
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install --update
aws --version
echo "AWS CLI V2 安装完成。"
- name: 4.配置 AWS 凭证
uses: aws-actions/configure-aws-credentials@main
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: 'ap-east-1'
- name: 5.同步 dist 目录到 S3
run: |
aws s3 sync dist/ s3://${{ secrets.S3_BUCKET_NAME }}/ --acl public-read
- name: 6.部署完成
run: echo "构建和部署到 S3 任务完成。"

View File

@@ -902,7 +902,7 @@ const changeCanvas = async (command) => {
...command, // 传递完整的命令数据
};
emit("changeCanvas", commandData);
if (command.canUndo || command.canRedo) {
if ((command.canUndo || command.canRedo) && props.enabledRedGreenMode) {
setTimeout(async () => {
const imageData = await canvasManager.exportImage({
restoreOpacityInRedGreen: true, // 恢复红绿图模式下的透明度

View File

@@ -555,23 +555,17 @@ export class ExportManager {
);
}
// 获取固定图层对象的边界矩形(包含位置、尺寸、缩放等信息)
const fixedBounds = fixedLayerObject?.getBoundingRect?.();
// 使用固定图层的实际显示尺寸作为导出画布尺寸
const canvasWidth = Math.round(fixedBounds.width);
const canvasHeight = Math.round(fixedBounds.height);
const canvasWidth = Math.round(fixedLayerObject.width * fixedLayerObject.scaleX);
const canvasHeight = Math.round(fixedLayerObject.height * fixedLayerObject.scaleY);
console.log(`红绿图模式导出,画布尺寸: ${canvasWidth}x${canvasHeight}`);
console.log("固定图层边界:", fixedBounds);
// 创建固定尺寸的临时画布
const scaleFactor = 2; // 高清导出
const tempCanvas = document.createElement("canvas");
tempCanvas.width = canvasWidth * scaleFactor;
tempCanvas.height = canvasHeight * scaleFactor;
tempCanvas.style.width = canvasWidth + "px";
tempCanvas.style.height = canvasHeight + "px";
const tempFabricCanvas = new fabric.StaticCanvas(tempCanvas, {
width: canvasWidth,
@@ -584,8 +578,7 @@ export class ExportManager {
try {
// 获取裁剪路径对象(如果存在)
const clipPathObject = await this._getClipPathObject(fixedBounds);
const clipPathObject = await this._getClipPathObject(fixedLayerObject);
// 克隆并添加所有对象到临时画布,需要调整位置相对于固定图层
for (let i = 0; i < objectsToExport.length; i++) {
const obj = objectsToExport[i];
@@ -594,19 +587,20 @@ export class ExportManager {
restoreOpacityInRedGreen && true
);
if (cloned) {
// 调整对象位置:将原画布坐标转换为以固定图层为原点的相对坐标
cloned.set({
left: cloned.left - fixedBounds.left,
top: cloned.top - fixedBounds.top,
left: 0,
top: 0,
originX: "left",
originY: "top",
});
// 更新对象坐标
cloned.setCoords();
// 设置裁剪路径到对象
if (clipPathObject) {
cloned.clipPath = clipPathObject;
}
// if (clipPathObject) {
// cloned.clipPath = clipPathObject;
// }
tempFabricCanvas.add(cloned);
}

View File

@@ -230,7 +230,7 @@ export default defineComponent({
let size = {
...detailData.canvasConfig,
}
store.commit('DesignDetail/updataDetailItem',{maskUrl:value})
segmentImage(value,full,size).then(async (rv)=>{
let front = detailData.frontBack.front[detailData.imgDomIndex]
let back = detailData.frontBack.back[detailData.imgDomIndex]
@@ -243,7 +243,7 @@ export default defineComponent({
let base64 = await resizeImageWithNativeCanvas(front.oldMaskUrl,value)
front.maskUrl = base64
back.imageUrl = rv.targetBackUrl
store.commit('DesignDetail/updataDetailItem',{maskUrl:value})
// store.commit('DesignDetail/updataDetailItem',{maskUrl:value})
})
}

View File

@@ -30,7 +30,7 @@
:outputSize="option.size"
:outputType="option.outputType"
:auto-crop="option.autoCrop"
:fixedBox="isRound"
:fixedBox="!isRound"
:movable="true"
:fixed="isRound"
:auto-crop-width="option.autoCropWidth"
@@ -333,7 +333,6 @@ export default defineComponent({
.cut_picture_review_block{
width: 100%;
height: calc(100% - 6.8rem*1.2);
min-height: calc(100% - 6.8rem*1.2);
margin: 0 auto;
.next_step_button{
margin-top: 2rem;

View File

@@ -145,7 +145,7 @@
</div>
<!-- 取消请求 -->
<scaleImage ref="scaleImage"></scaleImage>
<Cropper ref="Cropper" @handleCropperSuccess="handleCropperSuccess" @closeCropper="deletUploadFile()" :cropperFileData="cropperFileData" :isRound="false" :isUpload="isUpload"></Cropper>
<Cropper ref="Cropper" @handleCropperSuccess="handleCropperSuccess" @closeCropper="deletUploadFile()" :cropperFileData="cropperFileData" :isUpload="isUpload"></Cropper>
</div>
</template>
<script lang="ts">

View File

@@ -682,6 +682,7 @@ export default defineComponent({
store.commit("cancelDeleteDesignCollectionList",index);
}
const designMousedown = (e:any,design:any,str:string)=>{
collItemSize.isMove = false
if(str != 'disLike'){
if(design.resultType != 'Design' || designData.isUnfold)return
if(str != 'like' && showDesignMark.value) return
@@ -695,7 +696,6 @@ export default defineComponent({
startY = e.clientY,
left = item.el.offsetLeft,
top = item.el.offsetTop;
collItemSize.isMove = false
let moveFun = (e:any) => {
collItemSize.isMove = true
let X = e.clientX - startX + left;

View File

@@ -583,7 +583,7 @@ export default defineComponent({
const getIdExistToHistory = async () => {
return await new Promise((resolve, reject) => {
let value = {
id: Number(route.params?.id || route.query?.history)
id: Number(route.query?.id || route.query?.history)
}
Https.axiosPost(Https.httpUrls.historyProject, value)
.then(rv => {
@@ -604,9 +604,9 @@ export default defineComponent({
}
const key = Object.keys(query)?.[0]
if (key) {
if (route.params?.id && !query.tools) {
if (query.id && !query.tools) {
homeMainData.openType = 'history'
homeMainData.openTypeChild = route.params?.id
homeMainData.openTypeChild = query.id
} else {
homeMainData.openType = Object.keys(query)[0]
homeMainData.openTypeChild = query[Object.keys(query)[0]]
@@ -615,6 +615,10 @@ export default defineComponent({
homeMainData.openTypeChild = ''
homeMainData.openType = ''
}
if ((query?.id || query?.history) && !(await getIdExistToHistory())) {
router.push('/home')
return
}
} else {
homeMainData.openType = ''
homeMainData.openTypeChild = ''
@@ -934,12 +938,12 @@ export default defineComponent({
rv.content.forEach((item, index) => {
let str = categorizeDate(item.updateTime) + 'list'
homeMainData.navTypeList.history[str].push(item)
if (item.id == (route.params?.id || route.query?.history)) {
if (item.id == (route.query?.id || route.query?.history)) {
existToHistoryIndex = rv.page * rv.size + index + 1 - rv.size
}
})
homeMainData.historyData.isNull = false
if ((route.params?.id || route.query?.history) && isFound < 1) setScrollTop()
if ((route.query?.id || route.query?.history) && isFound < 1) setScrollTop()
} else {
homeMainData.historyData.isNoData = true
}

View File

@@ -857,7 +857,7 @@ export default defineComponent({
padding: 0 1rem;
.operate_item {
// font-size: 1.4rem;
font-size: 1.6rem;
font-family: Roboto;
font-weight: 400;
color: #007ee5;