Compare commits
95 Commits
4b90bd5928
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 967996429b | |||
| f88129f8a9 | |||
| 02ccd546bc | |||
| 4006e7f1c1 | |||
| 352f2b7bae | |||
| 1839bae545 | |||
| 93cb27238b | |||
| a0de3ce96d | |||
| 989c8468f0 | |||
| f8a864d740 | |||
| afde6d2024 | |||
| fe4b39ac97 | |||
| c25e5042dd | |||
| 27849503b3 | |||
| 5fdf071510 | |||
| ff3e62506c | |||
| 24accf803d | |||
| b5dcc80759 | |||
| a294116696 | |||
| d45f0b0ecd | |||
| 2a522e06a0 | |||
| af3bff6d80 | |||
| d9d57066fc | |||
| e34986d09d | |||
| 57adf91646 | |||
| 016c1de922 | |||
| a167d3f2ba | |||
| fb7bf53680 | |||
| cb453297be | |||
| a2f4f946ac | |||
| 67d5bb6874 | |||
| db20117500 | |||
| f3e4408dc0 | |||
| c2d13187f0 | |||
| 7155dedc8d | |||
| de8a6b9dc7 | |||
| 9c562143da | |||
| 21fb901580 | |||
| 29eb464772 | |||
| 6f5d696c2d | |||
| 14a3e467f8 | |||
| 889982f63e | |||
| 83e66ebb54 | |||
| e5f1199c45 | |||
| a2b9b8423c | |||
| b6311a5f6b | |||
| 7b322ed2b3 | |||
| 9352dff278 | |||
| 0ab41c4ce5 | |||
| a75df548be | |||
| b72cb2c3a2 | |||
| 245863ad82 | |||
| af15cd0325 | |||
| a2a85f1dd0 | |||
| 5d7a3517ee | |||
| c48eb66113 | |||
| c34397d567 | |||
| be4176e4b5 | |||
| 5711fe934e | |||
| b9663ed382 | |||
|
|
e2fe4f52a4 | ||
|
|
5a647fc92a | ||
|
|
a3bf4edeeb | ||
| 32327a9244 | |||
| d586115580 | |||
| 011ae1bf52 | |||
| dfb7156fab | |||
| 038cd24cc2 | |||
| cc365990e8 | |||
|
|
308bae1d29 | ||
|
|
985d602680 | ||
| d431e0585b | |||
| d5e0f98a6d | |||
| 8ba5dd4ffc | |||
| 19d89402dd | |||
| 73967c88ca | |||
|
|
9e0d1fdc9c | ||
| b7360d7e71 | |||
| 0657037748 | |||
| f6533e6027 | |||
|
|
7d2463d7c7 | ||
|
|
41abb2b6ff | ||
|
|
c71b1cace1 | ||
|
|
f79e864faf | ||
| 5857a1da8d | |||
| 3157a7efdf | |||
| 08c200ef83 | |||
| 1ac74cb471 | |||
| e88e83fed1 | |||
| 4df9aaece5 | |||
|
|
1c264cfbd8 | ||
|
|
a81f65a5a7 | ||
|
|
0372c0f69d | ||
|
|
0ef8b3060c | ||
|
|
f906230d65 |
90
.gitea/workflows/develop_build_commit.yaml
Normal file
90
.gitea/workflows/develop_build_commit.yaml
Normal file
@@ -0,0 +1,90 @@
|
||||
name: git commit 控制 AiDA WEB-Node.js 开发分支构建部署
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
push:
|
||||
branches:
|
||||
- dev_vite
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
if: "contains(github.event.head_commit.message, '[run build]')"
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [ 18.18.0 ]
|
||||
env:
|
||||
REMOTE_DEPLOY_PATH: /workspace/workspace_aida/DevelopVersion/develop-aida-web-front
|
||||
|
||||
steps:
|
||||
- name: 0.记录开始时间
|
||||
id: build_start_time
|
||||
run: echo "current_time=$(TZ='Asia/Hong_Kong' date '+%Y-%m-%d %H:%M:%S %Z')" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: 1.检出代码
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
ref: dev_vite
|
||||
|
||||
- name: 2.设置 Node.js 环境
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
- run: npm install
|
||||
- run: npm run build:dev
|
||||
- run: ls -l
|
||||
|
||||
- name: 3.同步文件到远程服务器
|
||||
uses: appleboy/scp-action@v0.1.7
|
||||
with:
|
||||
host: ${{ secrets.SERVER_HOST }}
|
||||
username: ${{ secrets.SERVER_USER }}
|
||||
key: ${{ secrets.SSH_KEY }}
|
||||
source: "./dist/*"
|
||||
target: ${{ env.REMOTE_DEPLOY_PATH }}
|
||||
ssh_options: "-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"
|
||||
strip_components: 0
|
||||
|
||||
- name: 4. 远程重载 Nginx 配置
|
||||
uses: appleboy/ssh-action@v1.0.3
|
||||
with:
|
||||
host: ${{ secrets.SERVER_HOST }}
|
||||
username: ${{ secrets.SERVER_USER }}
|
||||
key: ${{ secrets.SSH_KEY }}
|
||||
# 核心:执行 Nginx 重载命令
|
||||
script: |
|
||||
echo "尝试重载 Nginx 服务..."
|
||||
# 💡 注意:执行此命令需要服务器用户具有 sudo 权限,并且配置了 NOPASSWD。
|
||||
# 否则工作流可能会因为权限不足而失败。
|
||||
sudo systemctl reload nginx
|
||||
echo "Nginx 重载命令已发送。"
|
||||
|
||||
- name: 5.发送构建结果邮件
|
||||
if: always() # 无论上一步是否失败,都执行此步骤
|
||||
uses: dawidd6/action-send-mail@v3
|
||||
with:
|
||||
|
||||
from: ${{ secrets.MAIL_USERNAME }}
|
||||
# --- 邮件配置 ---
|
||||
server_address: smtp.gmail.com # 替换为你的SMTP服务器地址
|
||||
server_port: 465 # 替换为你的SMTP端口 (通常是465或587)
|
||||
username: ${{ secrets.MAIL_USERNAME }} # 存储在Secrets中的邮箱用户名
|
||||
password: ${{ secrets.MAIL_PASSWORD }} # 存储在Secrets中的邮箱密码
|
||||
subject: 'Gitea Actions 构建通知: ${{ job.status }} - AiDA back-java Develop'
|
||||
# 收件人列表,可以根据需要更改
|
||||
to: 'xupei3360@163.com,txli@aidlab.hk,cgzhou@aidlab.hk,zchengrong@yeah.net' # 替换为实际收件人邮箱
|
||||
|
||||
# --- 邮件正文内容 ---
|
||||
body: |
|
||||
项目: AiDA back-java Develop
|
||||
分支: dev/3.1_release_merge
|
||||
|
||||
🎉 构建结果: ${{ job.status }}
|
||||
|
||||
📅 构建时间: ${{ steps.build_start_time.outputs.current_time }}
|
||||
|
||||
🔗 构建链接: ${{ gitea.server_url }}/${{ gitea.repository.owner.name }}/${{ gitea.repository.name }}/actions/runs/${{ gitea.run_id }}
|
||||
|
||||
# 确保邮件内容为纯文本,或者你可以设置为 html: true 并调整 body
|
||||
content_type: text/plain
|
||||
85
.gitea/workflows/develop_build_manual.yaml
Normal file
85
.gitea/workflows/develop_build_manual.yaml
Normal file
@@ -0,0 +1,85 @@
|
||||
name: 手动触发 AiDA WEB-Node.js 开发分支构建部署
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [ 18.18.0 ]
|
||||
env:
|
||||
REMOTE_DEPLOY_PATH: /workspace/workspace_aida/DevelopVersion/develop-aida-web-front
|
||||
|
||||
steps:
|
||||
- name: 0.记录开始时间
|
||||
id: build_start_time
|
||||
run: echo "current_time=$(TZ='Asia/Hong_Kong' date '+%Y-%m-%d %H:%M:%S %Z')" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: 1.检出代码
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
ref: dev_vite
|
||||
|
||||
- name: 2.设置 Node.js 环境
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
- run: npm install
|
||||
- run: npm run build:dev
|
||||
- run: ls -l
|
||||
|
||||
- name: 3.同步文件到远程服务器
|
||||
uses: appleboy/scp-action@v0.1.7
|
||||
with:
|
||||
host: ${{ secrets.SERVER_HOST }}
|
||||
username: ${{ secrets.SERVER_USER }}
|
||||
key: ${{ secrets.SSH_KEY }}
|
||||
source: "./dist/*"
|
||||
target: ${{ env.REMOTE_DEPLOY_PATH }}
|
||||
ssh_options: "-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"
|
||||
strip_components: 0
|
||||
|
||||
- name: 4. 远程重载 Nginx 配置
|
||||
uses: appleboy/ssh-action@v1.0.3
|
||||
with:
|
||||
host: ${{ secrets.SERVER_HOST }}
|
||||
username: ${{ secrets.SERVER_USER }}
|
||||
key: ${{ secrets.SSH_KEY }}
|
||||
# 核心:执行 Nginx 重载命令
|
||||
script: |
|
||||
echo "尝试重载 Nginx 服务..."
|
||||
# 💡 注意:执行此命令需要服务器用户具有 sudo 权限,并且配置了 NOPASSWD。
|
||||
# 否则工作流可能会因为权限不足而失败。
|
||||
sudo systemctl reload nginx
|
||||
echo "Nginx 重载命令已发送。"
|
||||
|
||||
- name: 5.发送构建结果邮件
|
||||
if: always() # 无论上一步是否失败,都执行此步骤
|
||||
uses: dawidd6/action-send-mail@v3
|
||||
with:
|
||||
|
||||
from: ${{ secrets.MAIL_USERNAME }}
|
||||
# --- 邮件配置 ---
|
||||
server_address: smtp.gmail.com # 替换为你的SMTP服务器地址
|
||||
server_port: 465 # 替换为你的SMTP端口 (通常是465或587)
|
||||
username: ${{ secrets.MAIL_USERNAME }} # 存储在Secrets中的邮箱用户名
|
||||
password: ${{ secrets.MAIL_PASSWORD }} # 存储在Secrets中的邮箱密码
|
||||
subject: 'Gitea Actions 构建通知: ${{ job.status }} - AiDA back-java Develop'
|
||||
# 收件人列表,可以根据需要更改
|
||||
to: 'xupei3360@163.com,txli@aidlab.hk,cgzhou@aidlab.hk,zchengrong@yeah.net' # 替换为实际收件人邮箱
|
||||
|
||||
# --- 邮件正文内容 ---
|
||||
body: |
|
||||
项目: AiDA back-java Develop
|
||||
分支: dev/3.1_release_merge
|
||||
|
||||
🎉 构建结果: ${{ job.status }}
|
||||
|
||||
📅 构建时间: ${{ steps.build_start_time.outputs.current_time }}
|
||||
|
||||
🔗 构建链接: ${{ gitea.server_url }}/${{ gitea.repository.owner.name }}/${{ gitea.repository.name }}/actions/runs/${{ gitea.run_id }}
|
||||
|
||||
# 确保邮件内容为纯文本,或者你可以设置为 html: true 并调整 body
|
||||
content_type: text/plain
|
||||
78
.gitea/workflows/prod_build_manual.yaml
Normal file
78
.gitea/workflows/prod_build_manual.yaml
Normal file
@@ -0,0 +1,78 @@
|
||||
name: AiDA WEB-Node.js 生产分支构建部署
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [ 18.18.0 ]
|
||||
|
||||
steps:
|
||||
- name: 0.记录开始时间
|
||||
id: build_start_time
|
||||
run: echo "current_time=$(TZ='Asia/Hong_Kong' date '+%Y-%m-%d %H:%M:%S %Z')" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: 1.检出代码
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
ref: StableVersion
|
||||
|
||||
- name: 2.设置 Node.js 环境
|
||||
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.发送构建结果邮件
|
||||
if: always() # 无论上一步是否失败,都执行此步骤
|
||||
uses: dawidd6/action-send-mail@v3
|
||||
with:
|
||||
|
||||
from: ${{ secrets.MAIL_USERNAME }}
|
||||
# --- 邮件配置 ---
|
||||
server_address: smtp.gmail.com # 替换为你的SMTP服务器地址
|
||||
server_port: 465 # 替换为你的SMTP端口 (通常是465或587)
|
||||
username: ${{ secrets.MAIL_USERNAME }} # 存储在Secrets中的邮箱用户名
|
||||
password: ${{ secrets.MAIL_PASSWORD }} # 存储在Secrets中的邮箱密码
|
||||
subject: 'Gitea Actions 构建通知: ${{ job.status }} - AiDA back-java Develop'
|
||||
# 收件人列表,可以根据需要更改
|
||||
to: 'xupei3360@163.com,txli@aidlab.hk,cgzhou@aidlab.hk,zchengrong@yeah.net' # 替换为实际收件人邮箱
|
||||
|
||||
# --- 邮件正文内容 ---
|
||||
body: |
|
||||
项目: AiDA back-java Develop
|
||||
分支: dev/3.1_release_merge
|
||||
|
||||
🎉 构建结果: ${{ job.status }}
|
||||
|
||||
📅 构建时间: ${{ steps.build_start_time.outputs.current_time }}
|
||||
|
||||
🔗 构建链接: ${{ gitea.server_url }}/${{ gitea.repository.owner.name }}/${{ gitea.repository.name }}/actions/runs/${{ gitea.run_id }}
|
||||
|
||||
# 确保邮件内容为纯文本,或者你可以设置为 html: true 并调整 body
|
||||
content_type: text/plain
|
||||
81
.gitea/workflows/prod_build_schedule.yaml
Normal file
81
.gitea/workflows/prod_build_schedule.yaml
Normal file
@@ -0,0 +1,81 @@
|
||||
name: AiDA WEB-Node.js 生产分支构建部署
|
||||
on:
|
||||
schedule:
|
||||
# cron为UTC时区,构建时间=部署时间-8小时 {*分 (-8)时 *日 *月 *周} ---
|
||||
# 示例: 1月1日22点22分触发构建 cron写作 - '22 14 1 1 *'
|
||||
- cron: '00 14 23 3 *'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [ 18.18.0 ]
|
||||
|
||||
steps:
|
||||
- name: 0.记录开始时间
|
||||
id: build_start_time
|
||||
run: echo "current_time=$(TZ='Asia/Hong_Kong' date '+%Y-%m-%d %H:%M:%S %Z')" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: 1.检出代码
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
ref: StableVersion
|
||||
|
||||
- name: 2.设置 Node.js 环境
|
||||
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.发送构建结果邮件
|
||||
if: always() # 无论上一步是否失败,都执行此步骤
|
||||
uses: dawidd6/action-send-mail@v3
|
||||
with:
|
||||
|
||||
from: ${{ secrets.MAIL_USERNAME }}
|
||||
# --- 邮件配置 ---
|
||||
server_address: smtp.gmail.com # 替换为你的SMTP服务器地址
|
||||
server_port: 465 # 替换为你的SMTP端口 (通常是465或587)
|
||||
username: ${{ secrets.MAIL_USERNAME }} # 存储在Secrets中的邮箱用户名
|
||||
password: ${{ secrets.MAIL_PASSWORD }} # 存储在Secrets中的邮箱密码
|
||||
subject: 'Gitea Actions 构建通知: ${{ job.status }} - AiDA back-java Develop'
|
||||
# 收件人列表,可以根据需要更改
|
||||
to: 'cgzhou@aidlab.hk,zchengrong@yeah.net' # 替换为实际收件人邮箱
|
||||
|
||||
# --- 邮件正文内容 ---
|
||||
body: |
|
||||
项目: AiDA WEB-Node.js 生产分支构建部署
|
||||
分支: StableVersion
|
||||
|
||||
🎉 构建结果: ${{ job.status }}
|
||||
|
||||
📅 构建时间: ${{ steps.build_start_time.outputs.current_time }}
|
||||
|
||||
🔗 构建链接: ${{ gitea.server_url }}/${{ gitea.repository.owner.name }}/${{ gitea.repository.name }}/actions/runs/${{ gitea.run_id }}
|
||||
|
||||
# 确保邮件内容为纯文本,或者你可以设置为 html: true 并调整 body
|
||||
content_type: text/plain
|
||||
85
.gitea/workflows/research_build_manual.yaml
Normal file
85
.gitea/workflows/research_build_manual.yaml
Normal file
@@ -0,0 +1,85 @@
|
||||
name: 手动触发 AiDA WEB-Node.js 开发分支构建部署
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [ 18.18.0 ]
|
||||
env:
|
||||
REMOTE_DEPLOY_PATH: /workspace/workspace_aida/Research/research-aida-web-front
|
||||
|
||||
steps:
|
||||
- name: 0.记录开始时间
|
||||
id: build_start_time
|
||||
run: echo "current_time=$(TZ='Asia/Hong_Kong' date '+%Y-%m-%d %H:%M:%S %Z')" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: 1.检出代码
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
ref: research
|
||||
|
||||
- name: 2.设置 Node.js 环境
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
- run: npm install
|
||||
- run: npm run build:dev
|
||||
- run: ls -l
|
||||
|
||||
- name: 3.同步文件到远程服务器
|
||||
uses: appleboy/scp-action@v0.1.7
|
||||
with:
|
||||
host: ${{ secrets.SERVER_HOST }}
|
||||
username: ${{ secrets.SERVER_USER }}
|
||||
key: ${{ secrets.SSH_KEY }}
|
||||
source: "./dist/*"
|
||||
target: ${{ env.REMOTE_DEPLOY_PATH }}
|
||||
ssh_options: "-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"
|
||||
strip_components: 0
|
||||
|
||||
- name: 4. 远程重载 Nginx 配置
|
||||
uses: appleboy/ssh-action@v1.0.3
|
||||
with:
|
||||
host: ${{ secrets.SERVER_HOST }}
|
||||
username: ${{ secrets.SERVER_USER }}
|
||||
key: ${{ secrets.SSH_KEY }}
|
||||
# 核心:执行 Nginx 重载命令
|
||||
script: |
|
||||
echo "尝试重载 Nginx 服务..."
|
||||
# 💡 注意:执行此命令需要服务器用户具有 sudo 权限,并且配置了 NOPASSWD。
|
||||
# 否则工作流可能会因为权限不足而失败。
|
||||
sudo systemctl reload nginx
|
||||
echo "Nginx 重载命令已发送。"
|
||||
|
||||
- name: 5.发送构建结果邮件
|
||||
if: always() # 无论上一步是否失败,都执行此步骤
|
||||
uses: dawidd6/action-send-mail@v3
|
||||
with:
|
||||
|
||||
from: ${{ secrets.MAIL_USERNAME }}
|
||||
# --- 邮件配置 ---
|
||||
server_address: smtp.gmail.com # 替换为你的SMTP服务器地址
|
||||
server_port: 465 # 替换为你的SMTP端口 (通常是465或587)
|
||||
username: ${{ secrets.MAIL_USERNAME }} # 存储在Secrets中的邮箱用户名
|
||||
password: ${{ secrets.MAIL_PASSWORD }} # 存储在Secrets中的邮箱密码
|
||||
subject: 'Gitea Actions 构建通知: ${{ job.status }} - AiDA back-java Develop'
|
||||
# 收件人列表,可以根据需要更改
|
||||
to: 'xupei3360@163.com,txli@aidlab.hk,cgzhou@aidlab.hk,zchengrong@yeah.net' # 替换为实际收件人邮箱
|
||||
|
||||
# --- 邮件正文内容 ---
|
||||
body: |
|
||||
项目: AiDA back-java Develop
|
||||
分支: dev/3.1_release_merge
|
||||
|
||||
🎉 构建结果: ${{ job.status }}
|
||||
|
||||
📅 构建时间: ${{ steps.build_start_time.outputs.current_time }}
|
||||
|
||||
🔗 构建链接: ${{ gitea.server_url }}/${{ gitea.repository.owner.name }}/${{ gitea.repository.name }}/actions/runs/${{ gitea.run_id }}
|
||||
|
||||
# 确保邮件内容为纯文本,或者你可以设置为 html: true 并调整 body
|
||||
content_type: text/plain
|
||||
BIN
src/assets/images/socialMediaLogo/biliBliIcon.png
Normal file
BIN
src/assets/images/socialMediaLogo/biliBliIcon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 313 KiB |
BIN
src/assets/images/socialMediaLogo/instagramIcon.png
Normal file
BIN
src/assets/images/socialMediaLogo/instagramIcon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 370 KiB |
BIN
src/assets/images/socialMediaLogo/tikTokIcon.png
Normal file
BIN
src/assets/images/socialMediaLogo/tikTokIcon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 68 KiB |
BIN
src/assets/images/socialMediaLogo/xiaoHongShuIcon.png
Normal file
BIN
src/assets/images/socialMediaLogo/xiaoHongShuIcon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 191 KiB |
BIN
src/assets/images/socialMediaLogo/youTubeIcon.png
Normal file
BIN
src/assets/images/socialMediaLogo/youTubeIcon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 7.4 KiB |
BIN
src/assets/images/socialMediaLogo/zhiHuIcon.png
Normal file
BIN
src/assets/images/socialMediaLogo/zhiHuIcon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 299 KiB |
@@ -8,14 +8,6 @@
|
||||
"id": 2,
|
||||
"title":"AiDA X SFT AI Fashion Award 2024",
|
||||
"imgUrl": "/image/events/Fashion-Award-2024.png"
|
||||
},{
|
||||
"id": 3,
|
||||
"title":"✨New Year 2025!🎉Let's kick off the year with a burst of inspiration and design!",
|
||||
"imgUrl": "/image/events/AiDA2025-En.jpg"
|
||||
},{
|
||||
"id": 4,
|
||||
"title":"Welcome back !Subscribe with the discount code to enjoy 50% OFF!",
|
||||
"imgUrl": "/image/events/Welcome-back-En.jpg"
|
||||
}
|
||||
],
|
||||
"eventsItem":[
|
||||
@@ -96,106 +88,6 @@
|
||||
]
|
||||
}
|
||||
]
|
||||
},{
|
||||
"id":3,
|
||||
"title":"✨New Year 2025!🎉Let's kick off the year with a burst of inspiration and design!",
|
||||
"imgUrl": "/image/events/AiDA2025-En.jpg",
|
||||
"textList":[
|
||||
{
|
||||
"paragraph":[
|
||||
{
|
||||
"text":"Share your work and get 1 month of free access to AiDA!"
|
||||
}
|
||||
]
|
||||
},{
|
||||
"paragraph":[
|
||||
{
|
||||
"text":" Just do the following:"
|
||||
}
|
||||
]
|
||||
},{
|
||||
"paragraph":[
|
||||
{
|
||||
"text":" ✅Share your designs on AiDA's Gallery "
|
||||
},{
|
||||
"text":" ✅Add the tag #NewYear_2025 in the work description"
|
||||
},{
|
||||
"text":" ✅At least 20 likes "
|
||||
}
|
||||
]
|
||||
},{
|
||||
"paragraph":[
|
||||
{
|
||||
"text":"📅 Duration: January 1, 2025 – January 31, 2025"
|
||||
}
|
||||
]
|
||||
},{
|
||||
"paragraph":[
|
||||
{
|
||||
"text":"Join in the fun and embark on a new year's journey of design. Mix your creativity with tech to make amazing, unique creations! Get your friends to help you seize this opportunity! Invite them to give your design some love with their likes~💗"
|
||||
}
|
||||
]
|
||||
},{
|
||||
"paragraph":[
|
||||
{
|
||||
"text":"👍 AiDA is waiting for you to unlock a new world of design!"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},{
|
||||
"id":4,
|
||||
"title":"Welcome back !Subscribe with the discount code to enjoy 50% OFF!",
|
||||
"imgUrl": "/image/events/Welcome-back-En.jpg",
|
||||
"textList":[
|
||||
{
|
||||
"paragraph":[
|
||||
{
|
||||
"text":"💠 In February, AiDA underwent a legendary transformation"
|
||||
},{
|
||||
"text":"💠 A silky-smooth interface and a turbocharged upgrade to all functions"
|
||||
},{
|
||||
"text":"😆 Long-time users are saying: “Wait… is this still the AiDA I knew?!"
|
||||
}
|
||||
]
|
||||
},{
|
||||
"paragraph":[
|
||||
{
|
||||
"text":"Demo video👉 <a href='https://sg834.apps.aliyunpds.com/disk/s/R6SsxBaju9h' target='_blank'>https://sg834.apps.aliyunpds.com/disk/s/R6SsxBaju9h</a>"
|
||||
}
|
||||
]
|
||||
},{
|
||||
"paragraph":[
|
||||
{
|
||||
"text":"⚡️ To welcome back our trial users, we’ve prepared an exclusive design power-up:"
|
||||
},{
|
||||
"text":"✔️ Use the promo code「RIINRMKK」 and enjoy 50% off your subscription"
|
||||
},{
|
||||
"text":"✔️ Boost your efficiency by 60%—save hours on every project"
|
||||
},{
|
||||
"text":"✔️ sNo design background? No problem! Get stunning drafts in just 5 minutes"
|
||||
}
|
||||
]
|
||||
},{
|
||||
"paragraph":[
|
||||
{
|
||||
"text":"⏳ The countdown is on:"
|
||||
},{
|
||||
"text":"✨Ignite your creativity like a volcanic eruption"
|
||||
},{
|
||||
"text":"✨Let your inspiration flow like a cosmic waterfall"
|
||||
}
|
||||
]
|
||||
},{
|
||||
"paragraph":[
|
||||
{
|
||||
"text":"Promotional Code: <strong>RIINRMKK</strong>"
|
||||
},{
|
||||
"text":"Duration: June 10 to June 30, 2025 – After that, subscriptions return to full price. Don’t miss it!"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -8,15 +8,7 @@
|
||||
"id": 2,
|
||||
"title":"AiDA X SFT AI时尚设计比赛2024",
|
||||
"imgUrl": "/image/events/Fashion-Award-2024.png"
|
||||
},{
|
||||
"id": 3,
|
||||
"title":"🎉搭上2025的列车!打开新设计的大门!",
|
||||
"imgUrl": "/image/events/AiDA2025-Cn.jpg"
|
||||
},{
|
||||
"id": 4,
|
||||
"title":"设计时速狂飙!AiDA 618半价让灵感永不限流!",
|
||||
"imgUrl": "/image/events/Welcome-back-Cn.jpg"
|
||||
}
|
||||
}
|
||||
],
|
||||
"eventsItem":[
|
||||
{
|
||||
@@ -96,112 +88,6 @@
|
||||
]
|
||||
}
|
||||
]
|
||||
},{
|
||||
"id":3,
|
||||
"title":"🎉搭上2025的列车!打开新设计的大门!",
|
||||
"imgUrl": "/image/events/AiDA2025-Cn.jpg",
|
||||
"textList":[
|
||||
{
|
||||
"paragraph":[
|
||||
{
|
||||
"text":"快来发布作品获得1个月免费使用AiDA的福利!"
|
||||
}
|
||||
]
|
||||
},{
|
||||
"paragraph":[
|
||||
{
|
||||
"text":" 只需要:"
|
||||
}
|
||||
]
|
||||
},{
|
||||
"paragraph":[
|
||||
{
|
||||
"text":" ✅在AiDA将设计作品分享至广场/Gallery,"
|
||||
},{
|
||||
"text":" ✅点赞至少20"
|
||||
},{
|
||||
"text":" ✅在作品描述加上tag #NewYear_2025"
|
||||
}
|
||||
]
|
||||
},{
|
||||
"paragraph":[
|
||||
{
|
||||
"text":"📅 活动时间:2025.1.1—2025.1.31"
|
||||
}
|
||||
]
|
||||
},{
|
||||
"paragraph":[
|
||||
{
|
||||
"text":"快来参与,让我们共同开启新年的设计之旅,让创意与科技完美融合,创造出属于你的独一无二的作品!机会难得,叫上你的朋友们助你一臂之力,为你点上大拇指哦!"
|
||||
}
|
||||
]
|
||||
},{
|
||||
"paragraph":[
|
||||
{
|
||||
"text":"👍 点赞即启程,AiDA等你来解锁设计新世界!"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},{
|
||||
"id":4,
|
||||
"title":"设计时速狂飙!AiDA 618半价让灵感永不限流!",
|
||||
"imgUrl": "/image/events/Welcome-back-En.jpg",
|
||||
"textList":[
|
||||
{
|
||||
"paragraph":[
|
||||
{
|
||||
"text":"618的钟声敲响,AiDA的AI设计宇宙正式进入「超维折扣纪元」"
|
||||
}
|
||||
]
|
||||
},{
|
||||
"paragraph":[
|
||||
{
|
||||
"text":"💠 就在今年2月,AiDA完成史诗级进化"
|
||||
},{
|
||||
"text":"💠 界面如丝绸般顺滑,功能矩阵全面升级。"
|
||||
},{
|
||||
"text":"😆 旧版用户惊呼:这还是我认识的AiDA吗⁉️"
|
||||
}
|
||||
]
|
||||
},{
|
||||
"paragraph":[
|
||||
{
|
||||
"text":"演示视频👉 <a href='https://sg834.apps.aliyunpds.com/disk/s/R6SsxBaju9h' target='_blank'>https://sg834.apps.aliyunpds.com/disk/s/R6SsxBaju9h</a>"
|
||||
}
|
||||
]
|
||||
},{
|
||||
"paragraph":[
|
||||
{
|
||||
"text":"⚡️ 618特供「专属暴击福利」💥"
|
||||
},{
|
||||
"text":"✔️ 输入口令“RIINRMKK”订阅,直接享受半价!"
|
||||
},{
|
||||
"text":"✔️ 效率提升60%,设计实践节省一大半!"
|
||||
},{
|
||||
"text":"✔️ 零基础也能5分钟出稿,轻松搞定设计需求"
|
||||
}
|
||||
]
|
||||
},{
|
||||
"paragraph":[
|
||||
{
|
||||
"text":"⏳ 倒计时警报:"
|
||||
},{
|
||||
"text":"👉 让设计如火山喷发般炽热"
|
||||
},{
|
||||
"text":"👉 让灵感似银河倾泻般璀璨"
|
||||
}
|
||||
]
|
||||
},{
|
||||
"paragraph":[
|
||||
{
|
||||
"text":"优惠码:<strong>RIINRMKK</strong>"
|
||||
},{
|
||||
"text":"活动日期:2025.6.10-6.30(后续订阅费用将恢复至原价)"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -168,6 +168,7 @@ li {
|
||||
}
|
||||
.ant-modal-mask {
|
||||
background-color: #666666;
|
||||
opacity: 0.5;
|
||||
}
|
||||
.select_block {
|
||||
height: 4rem;
|
||||
|
||||
@@ -173,6 +173,7 @@ input:focus{
|
||||
}
|
||||
.ant-modal-mask{
|
||||
background-color: #666666;
|
||||
opacity: .5;
|
||||
}
|
||||
.select_block{
|
||||
height: 4rem;
|
||||
|
||||
@@ -350,6 +350,7 @@ export default defineComponent({
|
||||
margin-top: 1rem;
|
||||
justify-content: space-between;
|
||||
align-content: flex-start;
|
||||
padding-bottom: 2rem;
|
||||
// &::-webkit-scrollbar{display: none;}
|
||||
> .content_img_item{
|
||||
width: calc((50% - 1rem));
|
||||
@@ -368,9 +369,12 @@ export default defineComponent({
|
||||
> .material_content_list_loding{
|
||||
width: 100%;
|
||||
aspect-ratio: 1/1;
|
||||
height: 4rem;
|
||||
overflow: hidden;
|
||||
> img{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: contain;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,6 +333,7 @@ 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;
|
||||
|
||||
@@ -276,7 +276,6 @@ import { Modal,message } from "ant-design-vue";
|
||||
import { useI18n } from 'vue-i18n';
|
||||
import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
|
||||
import fullScreenImg from '@/component/HomePage/fullScreenImg.vue'
|
||||
import { debounce } from 'lodash-es'
|
||||
|
||||
export default defineComponent({
|
||||
components:{fullScreenImg},
|
||||
@@ -438,25 +437,35 @@ export default defineComponent({
|
||||
})
|
||||
|
||||
}
|
||||
let setChoose = debounce(async()=>{
|
||||
if(userDetail.value.systemList.indexOf(1) == -1){
|
||||
return message.info(t('newScaleImage.jsContent1'))
|
||||
}
|
||||
let flag = true
|
||||
let setChoose = async()=>{
|
||||
if(!flag) return
|
||||
flag = false
|
||||
try {
|
||||
if(userDetail.value.systemList.indexOf(1) == -1){
|
||||
message.info(t('newScaleImage.jsContent1'))
|
||||
return
|
||||
}
|
||||
|
||||
const targetDate = new Date('2025-09-01T00:00:00');
|
||||
// 解析输入日期字符串
|
||||
const inputDate = new Date(imgData.scaleImageData.createDate);
|
||||
if(inputDate < targetDate){
|
||||
return message.info(t('newScaleImage.jsContent2'))
|
||||
}
|
||||
if(imgData.scaleImageData.openSource == 0){
|
||||
return message.info(t('newScaleImage.jsContent2'))
|
||||
}
|
||||
let id = await getWorks(imgData.scaleImageData.id)
|
||||
router.push(`/home/history/${id}`)
|
||||
// router.push({name:'home',params: {id:imgData.scaleImageData.id,type:'Works'}})
|
||||
store.commit('setChooseIsDesign',false)
|
||||
},300)
|
||||
const targetDate = new Date('2025-09-01T00:00:00');
|
||||
// 解析输入日期字符串
|
||||
const inputDate = new Date(imgData.scaleImageData.createDate);
|
||||
if(inputDate < targetDate){
|
||||
message.info(t('newScaleImage.jsContent2'))
|
||||
return
|
||||
}
|
||||
if(imgData.scaleImageData.openSource == 0){
|
||||
message.info(t('newScaleImage.jsContent2'))
|
||||
return
|
||||
}
|
||||
let id = await getWorks(imgData.scaleImageData.id)
|
||||
await router.push(`/home/history/${id}`)
|
||||
store.commit('setChooseIsDesign',false)
|
||||
} finally {
|
||||
// 函数执行完成后恢复为 true,确保无论成功还是失败都能再次点击
|
||||
flag = true
|
||||
}
|
||||
}
|
||||
|
||||
let setCommentReply = (value:any,str:any)=>{
|
||||
imgData.commentReply.leve1Id = value.id
|
||||
|
||||
@@ -711,10 +711,9 @@ export default defineComponent({
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%,-50%);
|
||||
float: left;
|
||||
object-fit: contain;
|
||||
user-select:none;
|
||||
-webkit-user-drag: none;
|
||||
// float: left;
|
||||
// user-select:none;
|
||||
// -webkit-user-drag: none;
|
||||
}
|
||||
}
|
||||
.wh1{
|
||||
|
||||
@@ -145,7 +145,7 @@
|
||||
</div>
|
||||
<!-- 取消请求 -->
|
||||
<scaleImage ref="scaleImage"></scaleImage>
|
||||
<Cropper ref="Cropper" @handleCropperSuccess="handleCropperSuccess" @closeCropper="deletUploadFile()" :cropperFileData="cropperFileData" :isUpload="isUpload"></Cropper>
|
||||
<Cropper ref="Cropper" @handleCropperSuccess="handleCropperSuccess" @closeCropper="deletUploadFile()" :cropperFileData="cropperFileData" :isRound="false" :isUpload="isUpload"></Cropper>
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts">
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
</div>
|
||||
<div class="style marginBottom" v-if="show.style">
|
||||
<div class="text">{{$t('Habit.Style')}}:</div>
|
||||
<div class="center">{{ selectObject?.styleName?selectObject?.styleName:'All' }}</div>
|
||||
<div class="center">{{ selectObject?.styleName?selectObject?.styleName:$t('Header.All') }}</div>
|
||||
<div class="gallery_btn" @click="setStyle">{{ $t('Habit.Select') }}</div>
|
||||
</div>
|
||||
<div class="style brand marginBottom">
|
||||
|
||||
@@ -1250,13 +1250,15 @@ export default defineComponent({
|
||||
|
||||
> .item {
|
||||
margin-right: 1rem;
|
||||
width: calc(100% / 2 - 0.5rem);
|
||||
// width: calc(100% / 2 - 0.5rem);
|
||||
// height: 25rem;
|
||||
width: 12.7rem;
|
||||
height: 17.8rem;
|
||||
cursor: pointer;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
flex-shrink: 0;
|
||||
height: 25rem;
|
||||
position: relative;
|
||||
// &.active{
|
||||
// border: 2px solid;
|
||||
@@ -1532,6 +1534,8 @@ export default defineComponent({
|
||||
.ant-upload-select-picture-card {
|
||||
width: 12.7rem;
|
||||
height: 17.8rem;
|
||||
border-width: 1px;
|
||||
background: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,7 +22,8 @@
|
||||
:class="[
|
||||
{ recommended: item.recommended },
|
||||
{ monthly: monthlyOrYearly === 'monthly' },
|
||||
{ yearly: monthlyOrYearly === 'yearl' }
|
||||
{ yearly: monthlyOrYearly === 'yearl' },
|
||||
{ academic: item.type === 'academic' }
|
||||
]"
|
||||
>
|
||||
<div class="product_signUp_box">
|
||||
@@ -31,9 +32,15 @@
|
||||
<div class="info" :class="{ academic: item.type == 'academic' }">
|
||||
{{ item?.info }}
|
||||
</div>
|
||||
<div class="price" v-if="item.type != 'academic'">
|
||||
<div class="price " v-if="item.type != 'academic'">
|
||||
<div>{{ item?.price }}</div>
|
||||
<span :class="{ yearl: monthlyOrYearly == 'yearl' }">
|
||||
<span
|
||||
:class="[
|
||||
{ yearl: monthlyOrYearly == 'yearl' },
|
||||
{ personal: item.type === 'personal' }
|
||||
]"
|
||||
style="white-space: nowrap;"
|
||||
>
|
||||
{{ item?.detail }}
|
||||
</span>
|
||||
</div>
|
||||
@@ -43,18 +50,25 @@
|
||||
</div>
|
||||
<ul
|
||||
class="product_detail"
|
||||
:class="{ academic: item.type == 'academic' && !isSelectSuccessively }"
|
||||
:class="[
|
||||
{ academic: item.type == 'academic' && !isSelectSuccessively },
|
||||
{ chinese: isSelectSuccessively }
|
||||
]"
|
||||
>
|
||||
<li v-for="detailItem in item?.detailList">{{ detailItem }}</li>
|
||||
</ul>
|
||||
<div
|
||||
class="gallery_btn gallery_btn_radius"
|
||||
class="gallery_btn gallery_btn_radius submit"
|
||||
v-if="item?.btn != 'Contact us' && item?.btn != '联系我们'"
|
||||
@click="createAccount"
|
||||
>
|
||||
{{ item?.btn }}
|
||||
</div>
|
||||
<div class="gallery_btn gallery_btn_radius" v-else @click="handleContactUs">
|
||||
<div
|
||||
class="gallery_btn gallery_btn_radius submit"
|
||||
v-else
|
||||
@click="handleContactUs"
|
||||
>
|
||||
{{ item?.btn }}
|
||||
</div>
|
||||
</div>
|
||||
@@ -204,7 +218,7 @@ export default defineComponent({
|
||||
'支持草图创意和设计灵感教学',
|
||||
'基础3D设计功能'
|
||||
],
|
||||
btn: '立即开始'
|
||||
btn: '订阅'
|
||||
},
|
||||
{
|
||||
title: '教育版',
|
||||
@@ -317,7 +331,7 @@ export default defineComponent({
|
||||
{
|
||||
title: 'Free',
|
||||
img: CChargeIcon,
|
||||
type: 'personal',
|
||||
type: 'free',
|
||||
info: 'Your AI Fashion Design Assistant',
|
||||
price: 'HK$0',
|
||||
detail: '5 days · 50 credits',
|
||||
@@ -348,7 +362,7 @@ export default defineComponent({
|
||||
'Suitable for Individual Creator, Independent Designers and Fun for all Fashion Lovers',
|
||||
'Customer and Technical Support'
|
||||
],
|
||||
btn: 'Get Started'
|
||||
btn: 'Subscribe'
|
||||
},
|
||||
{
|
||||
title: 'Academic',
|
||||
@@ -620,6 +634,7 @@ export default defineComponent({
|
||||
border-radius: 1.3rem;
|
||||
margin: 0;
|
||||
margin-bottom: 2.8rem;
|
||||
padding: 2rem;
|
||||
padding-bottom: 1.3rem;
|
||||
}
|
||||
.product_signUp_box {
|
||||
@@ -655,14 +670,13 @@ export default defineComponent({
|
||||
font-weight: 400;
|
||||
font-size: 1.4rem;
|
||||
color: #797878;
|
||||
margin-bottom: 1.2rem;
|
||||
font-family: 'pingfang_regular';
|
||||
&.academic {
|
||||
margin-bottom: 0.4rem;
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
font-size: 1.25rem;
|
||||
margin-bottom: 1.25rem;
|
||||
// margin-bottom: 1.25rem;
|
||||
}
|
||||
}
|
||||
.price {
|
||||
@@ -697,8 +711,9 @@ export default defineComponent({
|
||||
font-size: 3.6rem;
|
||||
letter-spacing: -0.06rem;
|
||||
color: #1b223c;
|
||||
margin: 0.3rem 0;
|
||||
@media (max-width: 767px) {
|
||||
font-size: 3.14rem;
|
||||
font-size: 3rem;
|
||||
}
|
||||
}
|
||||
> span {
|
||||
@@ -712,6 +727,7 @@ export default defineComponent({
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
font-size: 1.2rem;
|
||||
margin-top: 1rem;
|
||||
// margin-left: 0.7rem;
|
||||
// margin-bottom: 1rem;
|
||||
}
|
||||
@@ -725,7 +741,6 @@ export default defineComponent({
|
||||
font-size: 1.4rem;
|
||||
position: absolute;
|
||||
width: 12.41rem;
|
||||
height: 3.4rem;
|
||||
line-height: 3.4rem;
|
||||
text-align: center;
|
||||
top: 0;
|
||||
@@ -744,6 +759,9 @@ export default defineComponent({
|
||||
border-top-right-radius: 1.1rem;
|
||||
border-bottom-left-radius: 0.4rem;
|
||||
font-size: 1rem;
|
||||
line-height: 2.5rem;
|
||||
font-weight: 500;
|
||||
width: 9rem;
|
||||
}
|
||||
}
|
||||
.product_detail {
|
||||
@@ -761,13 +779,10 @@ export default defineComponent({
|
||||
// margin-bottom: 0.3rem;
|
||||
font-size: 1.3rem;
|
||||
font-weight: 500;
|
||||
@media (max-width: 767px) {
|
||||
font-size: 1.15rem;
|
||||
}
|
||||
}
|
||||
li:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
// li:last-child {
|
||||
// margin-bottom: 0;
|
||||
// }
|
||||
}
|
||||
.gallery_btn {
|
||||
line-height: 4.6rem;
|
||||
@@ -777,6 +792,9 @@ export default defineComponent({
|
||||
font-size: 1.7rem;
|
||||
font-weight: 500;
|
||||
background-color: #1b223c;
|
||||
&:hover {
|
||||
background-color: #fff;
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
margin-top: 2.5rem;
|
||||
font-size: 1.25rem;
|
||||
@@ -810,12 +828,64 @@ export default defineComponent({
|
||||
.product_detail {
|
||||
padding-top: 3.1rem;
|
||||
justify-content: space-evenly;
|
||||
@media (max-width: 767px) {
|
||||
padding-top: 0;
|
||||
justify-content: flex-end;
|
||||
li {
|
||||
font-size: 1.6rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
width: 31.9rem;
|
||||
height: 41.1rem;
|
||||
padding: 2.09rem 2.09rem 2.11rem;
|
||||
&.academic {
|
||||
height: 52rem;
|
||||
}
|
||||
.product_signUp_box {
|
||||
.img {
|
||||
width: 3.4rem;
|
||||
height: 3.4rem;
|
||||
}
|
||||
.title {
|
||||
font-size: 2.3rem;
|
||||
margin-bottom: 0;
|
||||
letter-spacing: 0.05rem;
|
||||
}
|
||||
.info {
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
.price {
|
||||
margin-bottom: 0;
|
||||
div {
|
||||
font-size: 3.1rem;
|
||||
}
|
||||
span {
|
||||
font-size: 1.26rem;
|
||||
&.personal {
|
||||
font-size: 0.95rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
.product_detail {
|
||||
padding-top: 2rem;
|
||||
justify-content: flex-end;
|
||||
margin-bottom: 0;
|
||||
&.chinese{
|
||||
justify-content: space-evenly;
|
||||
}
|
||||
li {
|
||||
font-size: 1.15rem;
|
||||
}
|
||||
}
|
||||
.submit {
|
||||
margin-top: 2rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.submit {
|
||||
@media (max-width: 767px) {
|
||||
margin-top: 2rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -453,7 +453,8 @@ export default {
|
||||
jsContent4: '图片必须小于5MB',
|
||||
jsContent5: '图片已经上传是否继续上传',
|
||||
jsContent6: '输入的内容超过允许输入的最大长度',
|
||||
jsContent7: '请输入内容~'
|
||||
jsContent7: '请输入内容~',
|
||||
jsContent8: '请输入项目名字~'
|
||||
},
|
||||
ModelPlacement: {
|
||||
Registration: '新增模特',
|
||||
|
||||
@@ -466,7 +466,8 @@ export default {
|
||||
jsContent4: 'Image must smaller than 5MB!',
|
||||
jsContent5: 'This picture has been uploaded whether to continue uploading?',
|
||||
jsContent6: 'The entered content exceeds the maximum length.',
|
||||
jsContent7: 'Please enter content'
|
||||
jsContent7: 'Please enter content',
|
||||
jsContent8: 'Please enter the project name.'
|
||||
},
|
||||
ModelPlacement: {
|
||||
Registration: 'Registration',
|
||||
|
||||
@@ -393,6 +393,27 @@
|
||||
<span class="fi fi-rr-book-user"></span>
|
||||
<span class="select_item_des">{{ $t('Header.Tutorial') }}</span>
|
||||
</div>
|
||||
<div class="select_item logo">
|
||||
<a href="https://www.tiktok.com" target="_blank" >
|
||||
<img src="@/assets/images/socialMediaLogo/tikTokIcon.png" alt="">
|
||||
</a>
|
||||
<a href="https://www.instagram.com" target="_blank" >
|
||||
<img src="@/assets/images/socialMediaLogo/instagramIcon.png" alt="">
|
||||
</a>
|
||||
<a href="https://www.youtube.com" target="_blank" >
|
||||
<img src="@/assets/images/socialMediaLogo/youTubeIcon.png" alt="">
|
||||
</a>
|
||||
<a href="https://www.xiaohongshu.com" target="_blank" >
|
||||
<img src="@/assets/images/socialMediaLogo/xiaoHongShuIcon.png" alt="">
|
||||
</a>
|
||||
<a href="https://www.zhihu.com" target="_blank" >
|
||||
<img src="@/assets/images/socialMediaLogo/zhiHuIcon.png" alt="">
|
||||
</a>
|
||||
<a href="https://www.bilibili.com/" target="_blank" >
|
||||
<img src="@/assets/images/socialMediaLogo/biliBliIcon.png" alt="">
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="select_item_long"></div>
|
||||
<div class="select_item" @click="logout()">
|
||||
<span class="icon iconfont icon-tuichu"></span>
|
||||
@@ -561,7 +582,7 @@ export default defineComponent({
|
||||
const getIdExistToHistory = async () => {
|
||||
return await new Promise((resolve, reject) => {
|
||||
let value = {
|
||||
id: Number(route.query?.id || route.query?.history)
|
||||
id: Number(route.params?.id || route.query?.history)
|
||||
}
|
||||
Https.axiosPost(Https.httpUrls.historyProject, value)
|
||||
.then(rv => {
|
||||
@@ -582,9 +603,9 @@ export default defineComponent({
|
||||
}
|
||||
const key = Object.keys(query)?.[0]
|
||||
if (key) {
|
||||
if (query.id && !query.tools) {
|
||||
if (route.params?.id && !query.tools) {
|
||||
homeMainData.openType = 'history'
|
||||
homeMainData.openTypeChild = query.id
|
||||
homeMainData.openTypeChild = route.params?.id
|
||||
} else {
|
||||
homeMainData.openType = Object.keys(query)[0]
|
||||
homeMainData.openTypeChild = query[Object.keys(query)[0]]
|
||||
@@ -593,10 +614,6 @@ export default defineComponent({
|
||||
homeMainData.openTypeChild = ''
|
||||
homeMainData.openType = ''
|
||||
}
|
||||
if ((query?.id || query?.history) && !(await getIdExistToHistory())) {
|
||||
router.push('/home')
|
||||
return
|
||||
}
|
||||
} else {
|
||||
homeMainData.openType = ''
|
||||
homeMainData.openTypeChild = ''
|
||||
@@ -916,12 +933,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.query?.id || route.query?.history)) {
|
||||
if (item.id == (route.params?.id || route.query?.history)) {
|
||||
existToHistoryIndex = rv.page * rv.size + index + 1 - rv.size
|
||||
}
|
||||
})
|
||||
homeMainData.historyData.isNull = false
|
||||
if ((route.query?.id || route.query?.history) && isFound < 1) setScrollTop()
|
||||
if ((route.params?.id || route.query?.history) && isFound < 1) setScrollTop()
|
||||
} else {
|
||||
homeMainData.historyData.isNoData = true
|
||||
}
|
||||
@@ -2019,6 +2036,25 @@ export default defineComponent({
|
||||
font-weight: 500;
|
||||
}
|
||||
}
|
||||
.logo{
|
||||
padding: 1rem 0.5rem;
|
||||
gap: 1rem;
|
||||
cursor: auto;
|
||||
> a{
|
||||
width: 2.5rem;
|
||||
height: 2.5rem;
|
||||
border-radius: .5rem;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
> img{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
&:hover {
|
||||
background: #fff;
|
||||
}
|
||||
}
|
||||
.select_item_long {
|
||||
border-bottom: 1px solid #eceaea;
|
||||
margin: 2rem 0;
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
<template>
|
||||
<div class="homeRecommend_max">
|
||||
<div class="header">
|
||||
<img
|
||||
<img
|
||||
class="homeRecommend_logo"
|
||||
@click="turnToNewPage('/')"
|
||||
src="@/assets/images/homePage/aidaIcon.png"
|
||||
/>
|
||||
<div class="gallery_btn login white" @click="setLogin">{{ t('Login.Login') }}</div>
|
||||
<div class="gallery_btn" @click="signUp">{{ t('Login.SignUp') }}</div>
|
||||
<div class="language_btn">
|
||||
<div @click="handleChangeLanguage">
|
||||
<i class="fi fi-rr-globe"></i>
|
||||
{{ isChinese ? 'CN' : 'EN' }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="gallery_btn login white" @click="setLogin">{{ t('Login.Login') }}</div>
|
||||
<div class="gallery_btn" @click="signUp">{{ t('Login.SignUp') }}</div>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
@@ -229,8 +229,25 @@ export default defineComponent({
|
||||
.language_btn {
|
||||
color: #fff;
|
||||
cursor: pointer;
|
||||
font-size: 2.5rem;
|
||||
>div {
|
||||
display: flex;
|
||||
>i{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-size: 2.5rem;
|
||||
margin-right: .7rem;
|
||||
}
|
||||
}
|
||||
@media (max-width: 768px) {
|
||||
font-size: 1.5rem;
|
||||
color: #000;
|
||||
>div {
|
||||
>i{
|
||||
font-size: 1.5rem;
|
||||
margin-right: .7rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
> .gallery_btn {
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
:placeholder="t('batchGeneration.Search')"
|
||||
@search="searchHistoryList"
|
||||
/>
|
||||
<div class="history_table_content" ref="historyTable">
|
||||
<div class="history_table_content" ref="historyTable" @click.stop>
|
||||
<a-config-provider :locale="tableLocale">
|
||||
<a-table
|
||||
row-class-name="history_table_row"
|
||||
@@ -28,6 +28,14 @@
|
||||
}"
|
||||
>
|
||||
<template #bodyCell="{ column, text, record, index }">
|
||||
<div class="update_name" v-if="column?.key === 'collectionName'">
|
||||
<div v-if="updateName.selectIndex === index">
|
||||
<input type="text" v-model="updateName.currentName">
|
||||
</div>
|
||||
<div v-show="updateName.selectIndex !== index">{{ record.name }}</div>
|
||||
<i @click="setUpdateName(record.name,index)" v-show="updateName.selectIndex !== index" class="fi fi-rr-edit"></i>
|
||||
<i @click="submitUpdateName" v-show="updateName.selectIndex === index" class="fi fi-sr-check-circle"></i>
|
||||
</div>
|
||||
<div class="operate_list" v-if="column?.Operations">
|
||||
<div
|
||||
class="operate_item"
|
||||
@@ -213,6 +221,39 @@ export default defineComponent({
|
||||
selectCode: selectCode,
|
||||
designType: ''
|
||||
}
|
||||
const updateName = ref({
|
||||
currentName:'',
|
||||
selectIndex:-1,
|
||||
})
|
||||
const clearUpdateName = () => {
|
||||
updateName.value.currentName = ''
|
||||
updateName.value.selectIndex = -1
|
||||
document.removeEventListener('click',clearUpdateName)
|
||||
}
|
||||
const setUpdateName = (name,index) => {
|
||||
updateName.value.currentName = name
|
||||
updateName.value.selectIndex = index
|
||||
document.addEventListener('click',clearUpdateName)
|
||||
}
|
||||
const submitUpdateName = ()=>{
|
||||
if(updateName.value.currentName === collectionList.value[updateName.value.selectIndex].name){
|
||||
clearUpdateName()
|
||||
return
|
||||
}
|
||||
if(updateName.value.selectIndex != -1){
|
||||
if(!updateName.value.currentName)return message.info(t('HistoryPage.jsContent8'))
|
||||
let data = {
|
||||
id: collectionList.value[updateName.value.selectIndex].id, //library名字
|
||||
name: updateName.value.currentName //history id
|
||||
}
|
||||
Https.axiosPost(Https.httpUrls.projectSaveOrUpdate, data)
|
||||
.then(rv => {
|
||||
collectionList.value[updateName.value.selectIndex].name = updateName.value.currentName
|
||||
clearUpdateName()
|
||||
})
|
||||
.catch(res => {})
|
||||
}
|
||||
}
|
||||
provide('type', type)
|
||||
return {
|
||||
store,
|
||||
@@ -232,7 +273,10 @@ export default defineComponent({
|
||||
tableLocale,
|
||||
projectSetting,
|
||||
tableSearchBar,
|
||||
currentProjectPath
|
||||
currentProjectPath,
|
||||
updateName,
|
||||
setUpdateName,
|
||||
submitUpdateName,
|
||||
}
|
||||
},
|
||||
data() {
|
||||
@@ -608,6 +652,7 @@ export default defineComponent({
|
||||
customTableRow(record: any) {
|
||||
return {
|
||||
onDblclick: () => {
|
||||
if(this.updateName.selectIndex !== -1)return
|
||||
this.retrieveHome(record)
|
||||
}
|
||||
}
|
||||
@@ -726,6 +771,11 @@ export default defineComponent({
|
||||
}
|
||||
:deep(.ant-table-tbody > tr:hover) {
|
||||
background: #ededed;
|
||||
.update_name{
|
||||
> .fi-rr-edit{
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
}
|
||||
:deep(.ant-table-tbody > tr > td) {
|
||||
border: none;
|
||||
@@ -780,7 +830,26 @@ export default defineComponent({
|
||||
color: #000;
|
||||
}
|
||||
}
|
||||
|
||||
.update_name{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
> div{
|
||||
> input{
|
||||
width: 12rem;
|
||||
border-radius: .8rem;
|
||||
padding-left: 1.5rem;
|
||||
}
|
||||
}
|
||||
> i{
|
||||
margin-left: 1.5rem;
|
||||
cursor: pointer;
|
||||
font-size: 2rem;
|
||||
display: flex;
|
||||
}
|
||||
> .fi-rr-edit{
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
.operate_list {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@@ -788,7 +857,7 @@ export default defineComponent({
|
||||
padding: 0 1rem;
|
||||
|
||||
.operate_item {
|
||||
font-size: 1.6rem;
|
||||
// font-size: 1.4rem;
|
||||
font-family: Roboto;
|
||||
font-weight: 400;
|
||||
color: #007ee5;
|
||||
|
||||
@@ -79,7 +79,8 @@ import {
|
||||
nextTick,
|
||||
computed,
|
||||
onMounted,
|
||||
onBeforeUnmount
|
||||
onBeforeUnmount,
|
||||
watch
|
||||
} from 'vue'
|
||||
import { setCookie, getCookie, WriteCookie, clonAllCookie } from '@/tool/cookie'
|
||||
import { Https } from '@/tool/https'
|
||||
@@ -131,8 +132,26 @@ export default defineComponent({
|
||||
}
|
||||
}, 500)
|
||||
}
|
||||
|
||||
watch(
|
||||
() => data.isSelectSuccessively,
|
||||
val => {
|
||||
let str = ''
|
||||
if (val) {
|
||||
str = 'CHINESE_SIMPLIFIED'
|
||||
} else {
|
||||
str = 'ENGLISH'
|
||||
}
|
||||
localStorage.setItem('loginLanguage', str)
|
||||
}
|
||||
)
|
||||
|
||||
onMounted(() => {
|
||||
updataIsMoblie()
|
||||
const savedLang = localStorage.getItem('loginLanguage')
|
||||
if (savedLang) {
|
||||
data.isSelectSuccessively = savedLang === 'CHINESE_SIMPLIFIED'
|
||||
}
|
||||
window.addEventListener('resize', updataIsMoblie)
|
||||
})
|
||||
onBeforeUnmount(() => {
|
||||
@@ -301,7 +320,7 @@ export default defineComponent({
|
||||
display: flex;
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
column-gap: 0.9rem;
|
||||
column-gap: 0.9rem;
|
||||
.homeRecommend_logo {
|
||||
&.aid {
|
||||
width: 8rem;
|
||||
|
||||
@@ -147,11 +147,11 @@ export default defineComponent({
|
||||
}
|
||||
});
|
||||
//储存所有用户id和name
|
||||
Https.axiosGet(Https.httpUrls.getAllUserId,).then((rv: any) => {
|
||||
if (rv) {
|
||||
store.commit('setAllUserList',rv);
|
||||
}
|
||||
})
|
||||
// Https.axiosGet(Https.httpUrls.getAllUserId,).then((rv: any) => {
|
||||
// if (rv) {
|
||||
// store.commit('setAllUserList',rv);
|
||||
// }
|
||||
// })
|
||||
let allCountry = country
|
||||
sessionStorage.setItem('allCountry',JSON.stringify(allCountry));
|
||||
// state.nowPageName = state.rootSubmenuKeys[0].name
|
||||
|
||||
Reference in New Issue
Block a user