Compare commits
41 Commits
271b8af4c4
...
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 |
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
@@ -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
@@ -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
@@ -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
@@ -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
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
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 任务完成。"
|
|
||||||
|
Before Width: | Height: | Size: 243 KiB |
|
Before Width: | Height: | Size: 240 KiB |
23
src/App.vue
@@ -1,16 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<router-view/>
|
<router-view/>
|
||||||
<div class="loading" v-show="loading"><a-spin :delay="0.5" /></div>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
|
||||||
import { computed } from 'vue';
|
|
||||||
import { useStore } from 'vuex';
|
|
||||||
const store = useStore();
|
|
||||||
const loading = computed(() => store.state.loading || store.state.view_loading);
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="less">
|
<style lang="less">
|
||||||
#app {
|
#app {
|
||||||
font-family: Avenir, Helvetica, Arial, sans-serif;
|
font-family: Avenir, Helvetica, Arial, sans-serif;
|
||||||
@@ -18,19 +9,7 @@
|
|||||||
-moz-osx-font-smoothing: grayscale;
|
-moz-osx-font-smoothing: grayscale;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
.loading{
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
background-color: rgba(0,0,0,0.4);
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
z-index: 999999999999;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
.ipad{
|
.ipad{
|
||||||
*{
|
*{
|
||||||
-webkit-touch-callout:none;
|
-webkit-touch-callout:none;
|
||||||
|
|||||||
BIN
src/assets/images/socialMediaLogo/biliBliIcon.png
Normal file
|
After Width: | Height: | Size: 313 KiB |
|
Before Width: | Height: | Size: 6.5 KiB |
@@ -1,10 +0,0 @@
|
|||||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<g clip-path="url(#clip0_2427_2565)">
|
|
||||||
<path d="M12 0C5.37264 0 0 5.37264 0 12C0 17.6275 3.87456 22.3498 9.10128 23.6467V15.6672H6.62688V12H9.10128V10.4198C9.10128 6.33552 10.9498 4.4424 14.9597 4.4424C15.72 4.4424 17.0318 4.59168 17.5685 4.74048V8.06448C17.2853 8.03472 16.7933 8.01984 16.1822 8.01984C14.2147 8.01984 13.4544 8.76528 13.4544 10.703V12H17.3741L16.7006 15.6672H13.4544V23.9122C19.3963 23.1946 24.0005 18.1354 24.0005 12C24 5.37264 18.6274 0 12 0Z" fill="#2C2C2C"/>
|
|
||||||
</g>
|
|
||||||
<defs>
|
|
||||||
<clipPath id="clip0_2427_2565">
|
|
||||||
<rect width="24" height="24" fill="white"/>
|
|
||||||
</clipPath>
|
|
||||||
</defs>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 691 B |
BIN
src/assets/images/socialMediaLogo/instagramIcon.png
Normal file
|
After Width: | Height: | Size: 370 KiB |
@@ -1,10 +0,0 @@
|
|||||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<g clip-path="url(#clip0_2427_2564)">
|
|
||||||
<path d="M22.2234 0H1.77187C0.792187 0 0 0.773438 0 1.72969V22.2656C0 23.2219 0.792187 24 1.77187 24H22.2234C23.2031 24 24 23.2219 24 22.2703V1.72969C24 0.773438 23.2031 0 22.2234 0ZM7.12031 20.4516H3.55781V8.99531H7.12031V20.4516ZM5.33906 7.43438C4.19531 7.43438 3.27188 6.51094 3.27188 5.37187C3.27188 4.23281 4.19531 3.30937 5.33906 3.30937C6.47813 3.30937 7.40156 4.23281 7.40156 5.37187C7.40156 6.50625 6.47813 7.43438 5.33906 7.43438ZM20.4516 20.4516H16.8937V14.8828C16.8937 13.5563 16.8703 11.8453 15.0422 11.8453C13.1906 11.8453 12.9094 13.2938 12.9094 14.7891V20.4516H9.35625V8.99531H12.7687V10.5609H12.8156C13.2891 9.66094 14.4516 8.70938 16.1813 8.70938C19.7859 8.70938 20.4516 11.0813 20.4516 14.1656V20.4516V20.4516Z" fill="#2C2C2C"/>
|
|
||||||
</g>
|
|
||||||
<defs>
|
|
||||||
<clipPath id="clip0_2427_2564">
|
|
||||||
<rect width="24" height="24" fill="white"/>
|
|
||||||
</clipPath>
|
|
||||||
</defs>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 997 B |
@@ -1,10 +0,0 @@
|
|||||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<g clip-path="url(#clip0_2426_2350)">
|
|
||||||
<path d="M23.5233 7.12823C23.5233 7.12823 23.2913 5.49009 22.5766 4.77079C21.6717 3.8241 20.6601 3.81946 20.196 3.76377C16.8733 3.52246 11.8846 3.52246 11.8846 3.52246H11.8754C11.8754 3.52246 6.88669 3.52246 3.564 3.76377C3.09994 3.81946 2.08828 3.8241 1.18336 4.77079C0.468703 5.49009 0.241312 7.12823 0.241312 7.12823C0.241312 7.12823 0 9.05409 0 10.9753V12.7759C0 14.6971 0.236672 16.6229 0.236672 16.6229C0.236672 16.6229 0.468703 18.2611 1.17872 18.9804C2.08364 19.9271 3.27164 19.8946 3.80067 19.9967C5.70333 20.1777 11.88 20.2334 11.88 20.2334C11.88 20.2334 16.8733 20.2241 20.196 19.9874C20.6601 19.9317 21.6717 19.9271 22.5766 18.9804C23.2913 18.2611 23.5233 16.6229 23.5233 16.6229C23.5233 16.6229 23.76 14.7017 23.76 12.7759V10.9753C23.76 9.05409 23.5233 7.12823 23.5233 7.12823ZM9.42511 14.9616V8.28374L15.8431 11.6343L9.42511 14.9616Z" fill="#2C2C2C"/>
|
|
||||||
</g>
|
|
||||||
<defs>
|
|
||||||
<clipPath id="clip0_2426_2350">
|
|
||||||
<rect width="23.76" height="23.76" fill="white"/>
|
|
||||||
</clipPath>
|
|
||||||
</defs>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 1.1 KiB |
BIN
src/assets/images/socialMediaLogo/tikTokIcon.png
Normal file
|
After Width: | Height: | Size: 68 KiB |
@@ -1,3 +0,0 @@
|
|||||||
<svg width="21" height="24" viewBox="0 0 21 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<path d="M14.9218 0H10.9175V16.1843C10.9175 18.1127 9.37747 19.6967 7.4609 19.6967C5.54433 19.6967 4.00424 18.1127 4.00424 16.1843C4.00424 14.2905 5.51011 12.7408 7.35825 12.672V8.60871C3.28553 8.67755 0 12.0177 0 16.1843C0 20.3854 3.35398 23.76 7.49514 23.76C11.6362 23.76 14.9902 20.351 14.9902 16.1843V7.88555C16.4961 8.98748 18.3442 9.64174 20.295 9.67619V5.61287C17.2833 5.50957 14.9218 3.03026 14.9218 0Z" fill="#2C2C2C"/>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 532 B |
BIN
src/assets/images/socialMediaLogo/xiaoHongShuIcon.png
Normal file
|
After Width: | Height: | Size: 191 KiB |
|
Before Width: | Height: | Size: 8.7 KiB |
BIN
src/assets/images/socialMediaLogo/youTubeIcon.png
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
src/assets/images/socialMediaLogo/zhiHuIcon.png
Normal file
|
After Width: | Height: | Size: 299 KiB |
@@ -1250,14 +1250,10 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte
|
|||||||
background: #000 !important;
|
background: #000 !important;
|
||||||
border-color: #000 !important;
|
border-color: #000 !important;
|
||||||
}
|
}
|
||||||
.ant-spin .ant-spin-dot {
|
|
||||||
width: 1.5em;
|
|
||||||
height: 1.5em;
|
|
||||||
}
|
|
||||||
.ant-spin-dot-item {
|
.ant-spin-dot-item {
|
||||||
background-color: #000000 !important;
|
background-color: #000000 !important;
|
||||||
width: 0.9em !important;
|
width: 9px !important;
|
||||||
height: 0.9em !important;
|
height: 9px !important;
|
||||||
}
|
}
|
||||||
.ant-spin {
|
.ant-spin {
|
||||||
color: #000;
|
color: #000;
|
||||||
|
|||||||
@@ -1378,14 +1378,10 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
//loding样式
|
//loding样式
|
||||||
.ant-spin .ant-spin-dot{
|
|
||||||
width: 1.5em;
|
|
||||||
height: 1.5em;
|
|
||||||
}
|
|
||||||
.ant-spin-dot-item{
|
.ant-spin-dot-item{
|
||||||
background-color: #000000 !important;
|
background-color: #000000 !important;
|
||||||
width: .9em !important;
|
width: 9px !important;
|
||||||
height: .9em !important;
|
height: 9px !important;
|
||||||
}
|
}
|
||||||
.ant-spin{
|
.ant-spin{
|
||||||
color: #000;
|
color: #000;
|
||||||
|
|||||||
@@ -86,16 +86,6 @@
|
|||||||
style="width: 250px"
|
style="width: 250px"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="admin_state_item" v-if="title?.value == 'Edit'">
|
|
||||||
<span>{{ $t('admin.SubscribePlan') }}: <span>*</span></span>
|
|
||||||
<a-select
|
|
||||||
v-model:value="subscriptionPlanId"
|
|
||||||
style="width: 250px"
|
|
||||||
:options="activePlanOptions"
|
|
||||||
:field-names="{ label: 'name', value: 'id' }"
|
|
||||||
:placeholder="$t('admin.SelectPlan')"
|
|
||||||
></a-select>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="allUserPoeration_btn admin_page">
|
<div class="allUserPoeration_btn admin_page">
|
||||||
<div class="admin_search_item" @click="cancelDsign">{{ $t('admin.Close') }}</div>
|
<div class="admin_search_item" @click="cancelDsign">{{ $t('admin.Close') }}</div>
|
||||||
@@ -106,7 +96,7 @@
|
|||||||
<a-spin size="large" />
|
<a-spin size="large" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script lang="ts">
|
<script>
|
||||||
import {
|
import {
|
||||||
defineComponent,
|
defineComponent,
|
||||||
ref,
|
ref,
|
||||||
@@ -115,7 +105,6 @@ import {
|
|||||||
onMounted,
|
onMounted,
|
||||||
nextTick,
|
nextTick,
|
||||||
toRefs,
|
toRefs,
|
||||||
computed,
|
|
||||||
} from "vue";
|
} from "vue";
|
||||||
import { Https } from "@/tool/https";
|
import { Https } from "@/tool/https";
|
||||||
import { Modal, message } from "ant-design-vue";
|
import { Modal, message } from "ant-design-vue";
|
||||||
@@ -125,23 +114,9 @@ import md5 from "md5";
|
|||||||
import { useI18n } from 'vue-i18n'
|
import { useI18n } from 'vue-i18n'
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
components: {},
|
components: {},
|
||||||
props: {
|
|
||||||
planOptions: {
|
|
||||||
type: Array,
|
|
||||||
default: () => []
|
|
||||||
}
|
|
||||||
},
|
|
||||||
emits: ["searchHistoryList"],
|
emits: ["searchHistoryList"],
|
||||||
setup(props, { emit }) {
|
setup(props, { emit }) {
|
||||||
const {t} = useI18n()
|
const {t} = useI18n()
|
||||||
const { planOptions } = toRefs(props)
|
|
||||||
// 筛选出状态为 ACTIVE 的订阅计划
|
|
||||||
const activePlanOptions = computed(() => {
|
|
||||||
if (!planOptions.value || !Array.isArray(planOptions.value)) {
|
|
||||||
return []
|
|
||||||
}
|
|
||||||
return planOptions.value.filter((plan: any) => plan.status === 'ACTIVE')
|
|
||||||
})
|
|
||||||
let operations = reactive({
|
let operations = reactive({
|
||||||
operationsModal: false,
|
operationsModal: false,
|
||||||
operationsEdit: false,
|
operationsEdit: false,
|
||||||
@@ -155,8 +130,6 @@ export default defineComponent({
|
|||||||
password: "",
|
password: "",
|
||||||
oldPassword: "",
|
oldPassword: "",
|
||||||
credits: "",
|
credits: "",
|
||||||
subscriptionPlanId: "",
|
|
||||||
oldSubscriptionPlanId: ""
|
|
||||||
});
|
});
|
||||||
let state = ref([
|
let state = ref([
|
||||||
{
|
{
|
||||||
@@ -190,18 +163,12 @@ export default defineComponent({
|
|||||||
// operationsData.validStartTime='2024-08-05T00:00:06'
|
// operationsData.validStartTime='2024-08-05T00:00:06'
|
||||||
// operationsData.validEndTime='2024-08-05T00:00:06'
|
// operationsData.validEndTime='2024-08-05T00:00:06'
|
||||||
operationsData.credits = data.creditsUsageLimit;
|
operationsData.credits = data.creditsUsageLimit;
|
||||||
operationsData.subscriptionPlanId = data.subscriptionPlanId || "";
|
|
||||||
operationsData.oldSubscriptionPlanId = data.subscriptionPlanId || "";
|
|
||||||
// operationsData.accountId = data.accountId
|
// operationsData.accountId = data.accountId
|
||||||
// operationsData.userName = data.userName
|
// operationsData.userName = data.userName
|
||||||
// operationsData.userEmail = data.userEmail
|
// operationsData.userEmail = data.userEmail
|
||||||
// operationsData.validStartTime = formatTime(data.validStartTime)
|
// operationsData.validStartTime = formatTime(data.validStartTime)
|
||||||
// operationsData.validEndTime = formatTime(data.validEndTime)
|
// operationsData.validEndTime = formatTime(data.validEndTime)
|
||||||
}
|
}
|
||||||
if (funStr.value == "Add") {
|
|
||||||
operationsData.subscriptionPlanId = "";
|
|
||||||
operationsData.oldSubscriptionPlanId = "";
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
let focus = (event) => {
|
let focus = (event) => {
|
||||||
if (operationsData.password == operationsData.oldPassword) {
|
if (operationsData.password == operationsData.oldPassword) {
|
||||||
@@ -220,7 +187,6 @@ export default defineComponent({
|
|||||||
userEmail: operationsData.userEmail,
|
userEmail: operationsData.userEmail,
|
||||||
userPassword: operationsData.password?md5(operationsData.password + "abc"):'',
|
userPassword: operationsData.password?md5(operationsData.password + "abc"):'',
|
||||||
userName: operationsData.userName,
|
userName: operationsData.userName,
|
||||||
subscriptionPlanId: operationsData.subscriptionPlanId
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
let setEditData = () => {
|
let setEditData = () => {
|
||||||
@@ -233,7 +199,6 @@ export default defineComponent({
|
|||||||
operationsData.password == operationsData.oldPassword
|
operationsData.password == operationsData.oldPassword
|
||||||
? null
|
? null
|
||||||
: md5(operationsData.password + "abc"),
|
: md5(operationsData.password + "abc"),
|
||||||
subscriptionPlanId: operationsData.subscriptionPlanId
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
let cancelDsign = () => {
|
let cancelDsign = () => {
|
||||||
@@ -242,8 +207,6 @@ export default defineComponent({
|
|||||||
operationsData.userEmail = "";
|
operationsData.userEmail = "";
|
||||||
operationsData.password = "";
|
operationsData.password = "";
|
||||||
operationsData.credits = "";
|
operationsData.credits = "";
|
||||||
operationsData.subscriptionPlanId = "";
|
|
||||||
operationsData.oldSubscriptionPlanId = "";
|
|
||||||
operations.operationsModal = false;
|
operations.operationsModal = false;
|
||||||
};
|
};
|
||||||
let setOk = () => {
|
let setOk = () => {
|
||||||
@@ -274,26 +237,11 @@ export default defineComponent({
|
|||||||
message.info("The email format is incorrect");
|
message.info("The email format is incorrect");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!data.userName || !data.userEmail || !data.subscriptionPlanId)
|
if (!data.userName || !data.userEmail)
|
||||||
return message.warning("Please check the input box marked with *");
|
return message.warning("Please check the input box marked with *");
|
||||||
const needSwitchPlan =
|
|
||||||
operationsData.subscriptionPlanId &&
|
|
||||||
operationsData.subscriptionPlanId !==
|
|
||||||
operationsData.oldSubscriptionPlanId;
|
|
||||||
Https.axiosPost(Https.httpUrls.addOrUpdateSubAccount, data).then(
|
Https.axiosPost(Https.httpUrls.addOrUpdateSubAccount, data).then(
|
||||||
(rv) => {
|
(rv) => {
|
||||||
if (rv) {
|
if (rv) {
|
||||||
if (needSwitchPlan) {
|
|
||||||
Https.axiosGet(
|
|
||||||
Https.httpUrls.switchSubAccountSubscribePlan,
|
|
||||||
{
|
|
||||||
params: {
|
|
||||||
targetSubscriptionPlanId: operationsData.subscriptionPlanId,
|
|
||||||
subAccId: operationsData.accountId,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
cancelDsign();
|
cancelDsign();
|
||||||
emit("searchHistoryList");
|
emit("searchHistoryList");
|
||||||
}
|
}
|
||||||
@@ -310,8 +258,6 @@ export default defineComponent({
|
|||||||
focus,
|
focus,
|
||||||
blur,
|
blur,
|
||||||
setOk,
|
setOk,
|
||||||
planOptions,
|
|
||||||
activePlanOptions
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
|
|||||||
@@ -902,7 +902,7 @@ const changeCanvas = async (command) => {
|
|||||||
...command, // 传递完整的命令数据
|
...command, // 传递完整的命令数据
|
||||||
};
|
};
|
||||||
emit("changeCanvas", commandData);
|
emit("changeCanvas", commandData);
|
||||||
if ((command.canUndo || command.canRedo) && props.enabledRedGreenMode) {
|
if (command.canUndo || command.canRedo) {
|
||||||
setTimeout(async () => {
|
setTimeout(async () => {
|
||||||
const imageData = await canvasManager.exportImage({
|
const imageData = await canvasManager.exportImage({
|
||||||
restoreOpacityInRedGreen: true, // 恢复红绿图模式下的透明度
|
restoreOpacityInRedGreen: true, // 恢复红绿图模式下的透明度
|
||||||
|
|||||||
@@ -555,17 +555,23 @@ export class ExportManager {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 获取固定图层对象的边界矩形(包含位置、尺寸、缩放等信息)
|
||||||
|
const fixedBounds = fixedLayerObject?.getBoundingRect?.();
|
||||||
|
|
||||||
// 使用固定图层的实际显示尺寸作为导出画布尺寸
|
// 使用固定图层的实际显示尺寸作为导出画布尺寸
|
||||||
const canvasWidth = Math.round(fixedLayerObject.width * fixedLayerObject.scaleX);
|
const canvasWidth = Math.round(fixedBounds.width);
|
||||||
const canvasHeight = Math.round(fixedLayerObject.height * fixedLayerObject.scaleY);
|
const canvasHeight = Math.round(fixedBounds.height);
|
||||||
|
|
||||||
console.log(`红绿图模式导出,画布尺寸: ${canvasWidth}x${canvasHeight}`);
|
console.log(`红绿图模式导出,画布尺寸: ${canvasWidth}x${canvasHeight}`);
|
||||||
|
console.log("固定图层边界:", fixedBounds);
|
||||||
|
|
||||||
// 创建固定尺寸的临时画布
|
// 创建固定尺寸的临时画布
|
||||||
const scaleFactor = 2; // 高清导出
|
const scaleFactor = 2; // 高清导出
|
||||||
const tempCanvas = document.createElement("canvas");
|
const tempCanvas = document.createElement("canvas");
|
||||||
tempCanvas.width = canvasWidth * scaleFactor;
|
tempCanvas.width = canvasWidth * scaleFactor;
|
||||||
tempCanvas.height = canvasHeight * scaleFactor;
|
tempCanvas.height = canvasHeight * scaleFactor;
|
||||||
|
tempCanvas.style.width = canvasWidth + "px";
|
||||||
|
tempCanvas.style.height = canvasHeight + "px";
|
||||||
|
|
||||||
const tempFabricCanvas = new fabric.StaticCanvas(tempCanvas, {
|
const tempFabricCanvas = new fabric.StaticCanvas(tempCanvas, {
|
||||||
width: canvasWidth,
|
width: canvasWidth,
|
||||||
@@ -578,7 +584,8 @@ export class ExportManager {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
// 获取裁剪路径对象(如果存在)
|
// 获取裁剪路径对象(如果存在)
|
||||||
const clipPathObject = await this._getClipPathObject(fixedLayerObject);
|
const clipPathObject = await this._getClipPathObject(fixedBounds);
|
||||||
|
|
||||||
// 克隆并添加所有对象到临时画布,需要调整位置相对于固定图层
|
// 克隆并添加所有对象到临时画布,需要调整位置相对于固定图层
|
||||||
for (let i = 0; i < objectsToExport.length; i++) {
|
for (let i = 0; i < objectsToExport.length; i++) {
|
||||||
const obj = objectsToExport[i];
|
const obj = objectsToExport[i];
|
||||||
@@ -587,20 +594,19 @@ export class ExportManager {
|
|||||||
restoreOpacityInRedGreen && true
|
restoreOpacityInRedGreen && true
|
||||||
);
|
);
|
||||||
if (cloned) {
|
if (cloned) {
|
||||||
|
// 调整对象位置:将原画布坐标转换为以固定图层为原点的相对坐标
|
||||||
cloned.set({
|
cloned.set({
|
||||||
left: 0,
|
left: cloned.left - fixedBounds.left,
|
||||||
top: 0,
|
top: cloned.top - fixedBounds.top,
|
||||||
originX: "left",
|
|
||||||
originY: "top",
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// 更新对象坐标
|
// 更新对象坐标
|
||||||
cloned.setCoords();
|
cloned.setCoords();
|
||||||
|
|
||||||
// 设置裁剪路径到对象
|
// 设置裁剪路径到对象
|
||||||
// if (clipPathObject) {
|
if (clipPathObject) {
|
||||||
// cloned.clipPath = clipPathObject;
|
cloned.clipPath = clipPathObject;
|
||||||
// }
|
}
|
||||||
|
|
||||||
tempFabricCanvas.add(cloned);
|
tempFabricCanvas.add(cloned);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -61,7 +61,7 @@
|
|||||||
<model
|
<model
|
||||||
ref="model"
|
ref="model"
|
||||||
:key="positionKey"
|
:key="positionKey"
|
||||||
@addDetail="addDetail"
|
|
||||||
@canvasReload="canvasReload"
|
@canvasReload="canvasReload"
|
||||||
@detailEdit="detailEdit"
|
@detailEdit="detailEdit"
|
||||||
@addSketch="()=>isEditPattern.value = ''"
|
@addSketch="()=>isEditPattern.value = ''"
|
||||||
@@ -78,16 +78,7 @@
|
|||||||
<div class="item detailRight" :class="{canvas:isEditPattern.value}">
|
<div class="item detailRight" :class="{canvas:isEditPattern.value}">
|
||||||
<div class="submit">
|
<div class="submit">
|
||||||
</div>
|
</div>
|
||||||
<div class="contentRight" v-if="currentDetailType === 'sketch' && !selectDetail?.newDetail?.[currentDetailType] && !selectDetail.sketchString && !isEditPattern.value">
|
<div class="contentRight" v-if="currentDetailType && !isEditPattern.value">
|
||||||
<img
|
|
||||||
style="width: 100%; height: 100%;object-fit: contain;"
|
|
||||||
:src="
|
|
||||||
'/image/toolsGuide/' +
|
|
||||||
(locale == 'ENGLISH' ? 'detailEN' : 'detailCN') +
|
|
||||||
'.png'
|
|
||||||
" alt="">
|
|
||||||
</div>
|
|
||||||
<div class="contentRight" v-else-if="currentDetailType && !isEditPattern.value">
|
|
||||||
<detailRight ref="detailRight"></detailRight>
|
<detailRight ref="detailRight"></detailRight>
|
||||||
<div class="btn"
|
<div class="btn"
|
||||||
v-show="
|
v-show="
|
||||||
@@ -111,7 +102,7 @@
|
|||||||
</div> -->
|
</div> -->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<addDetails ref="addDetails" @setSloganData="setSloganData"></addDetails>
|
|
||||||
</a-modal>
|
</a-modal>
|
||||||
<div class="mark_loading" v-show="loadingShow">
|
<div class="mark_loading" v-show="loadingShow">
|
||||||
<a-spin size="large" />
|
<a-spin size="large" />
|
||||||
@@ -137,18 +128,17 @@ import { useI18n } from 'vue-i18n'
|
|||||||
import addDetails from '@/component/Detail/addDetails.vue'
|
import addDetails from '@/component/Detail/addDetails.vue'
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
components:{
|
components:{
|
||||||
detailLeft,model,detailRight,canvasBox,addDetails
|
detailLeft,model,detailRight,canvasBox
|
||||||
},
|
},
|
||||||
emits:['destroy'],
|
emits:['destroy'],
|
||||||
setup(props,{emit}) {
|
setup(props,{emit}) {
|
||||||
const store = useStore();
|
const store = useStore();
|
||||||
const {locale} = useI18n()
|
|
||||||
const detailDom = reactive({
|
const detailDom = reactive({
|
||||||
model:null,
|
model:null,
|
||||||
canvasBox,
|
canvasBox,
|
||||||
detailRight,
|
detailRight,
|
||||||
detailLeft:null as any,
|
detailLeft:null as any,
|
||||||
addDetails:null as any,
|
|
||||||
})
|
})
|
||||||
const userDetail = computed(()=>{
|
const userDetail = computed(()=>{
|
||||||
return store.state.UserHabit.userDetail
|
return store.state.UserHabit.userDetail
|
||||||
@@ -516,17 +506,6 @@ export default defineComponent({
|
|||||||
sessionStorage.setItem('revocation', JSON.stringify(revocation));
|
sessionStorage.setItem('revocation', JSON.stringify(revocation));
|
||||||
sessionStorage.setItem('oppositeRevocation',JSON.stringify([]));
|
sessionStorage.setItem('oppositeRevocation',JSON.stringify([]));
|
||||||
}
|
}
|
||||||
|
|
||||||
const addDetail = () =>{
|
|
||||||
let addDetails:any = detailDom.addDetails
|
|
||||||
addDetails.init(detailData.selectDetail,'')
|
|
||||||
}
|
|
||||||
const setSloganData = (data:any)=>{
|
|
||||||
detailData.selectDetail.sketchString = data
|
|
||||||
if(detailData.currentDetailType == 'sketch' && detailData.selectDetail?.newDetail?.sketch){
|
|
||||||
detailData.selectDetail.newDetail.sketch = null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
onMounted(()=>{
|
onMounted(()=>{
|
||||||
window.addEventListener('resize', handleResize);
|
window.addEventListener('resize', handleResize);
|
||||||
})
|
})
|
||||||
@@ -539,7 +518,6 @@ export default defineComponent({
|
|||||||
})
|
})
|
||||||
|
|
||||||
return{
|
return{
|
||||||
locale,
|
|
||||||
...toRefs(detailDom),
|
...toRefs(detailDom),
|
||||||
...toRefs(detailData),
|
...toRefs(detailData),
|
||||||
closeModal,
|
closeModal,
|
||||||
@@ -553,8 +531,6 @@ export default defineComponent({
|
|||||||
canvasReload,
|
canvasReload,
|
||||||
modelOnLoad,
|
modelOnLoad,
|
||||||
sketchSysToLibrary,
|
sketchSysToLibrary,
|
||||||
addDetail,
|
|
||||||
setSloganData,
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -230,7 +230,7 @@ export default defineComponent({
|
|||||||
let size = {
|
let size = {
|
||||||
...detailData.canvasConfig,
|
...detailData.canvasConfig,
|
||||||
}
|
}
|
||||||
store.commit('DesignDetail/updataDetailItem',{maskUrl:value})
|
|
||||||
segmentImage(value,full,size).then(async (rv)=>{
|
segmentImage(value,full,size).then(async (rv)=>{
|
||||||
let front = detailData.frontBack.front[detailData.imgDomIndex]
|
let front = detailData.frontBack.front[detailData.imgDomIndex]
|
||||||
let back = detailData.frontBack.back[detailData.imgDomIndex]
|
let back = detailData.frontBack.back[detailData.imgDomIndex]
|
||||||
@@ -243,7 +243,7 @@ export default defineComponent({
|
|||||||
let base64 = await resizeImageWithNativeCanvas(front.oldMaskUrl,value)
|
let base64 = await resizeImageWithNativeCanvas(front.oldMaskUrl,value)
|
||||||
front.maskUrl = base64
|
front.maskUrl = base64
|
||||||
back.imageUrl = rv.targetBackUrl
|
back.imageUrl = rv.targetBackUrl
|
||||||
// store.commit('DesignDetail/updataDetailItem',{maskUrl:value})
|
store.commit('DesignDetail/updataDetailItem',{maskUrl:value})
|
||||||
})
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
<element v-show="currentDetailType == 'element'"></element>
|
<element v-show="currentDetailType == 'element'"></element>
|
||||||
<accessory v-show="currentDetailType == 'accessory'"></accessory>
|
<accessory v-show="currentDetailType == 'accessory'"></accessory>
|
||||||
<models v-show="currentDetailType == 'models'"></models>
|
<models v-show="currentDetailType == 'models'"></models>
|
||||||
|
<addDetails ref="addDetails" @setSloganData="setSloganData"></addDetails>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
@@ -21,12 +22,12 @@ import color from './colorBox/index.vue'
|
|||||||
import element from './element.vue'
|
import element from './element.vue'
|
||||||
import accessory from './accessory.vue'
|
import accessory from './accessory.vue'
|
||||||
import models from './models.vue'
|
import models from './models.vue'
|
||||||
|
import addDetails from '@/component/Detail/addDetails.vue'
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
components:{
|
components:{
|
||||||
sketch,print,color,element,models,accessory
|
sketch,print,color,addDetails,element,models,accessory
|
||||||
},
|
},
|
||||||
emit:['addDetail'],
|
|
||||||
setup(props,{emit}) {
|
setup(props,{emit}) {
|
||||||
const store = useStore();
|
const store = useStore();
|
||||||
const detailData = reactive({
|
const detailData = reactive({
|
||||||
@@ -44,7 +45,14 @@ export default defineComponent({
|
|||||||
sketch:null as any,
|
sketch:null as any,
|
||||||
})
|
})
|
||||||
const addDetail = () =>{
|
const addDetail = () =>{
|
||||||
emit('addDetail')
|
let addDetails:any = getDetailListDom.addDetails
|
||||||
|
addDetails.init(detailData.selectDetail,'')
|
||||||
|
}
|
||||||
|
const setSloganData = (data:any)=>{
|
||||||
|
detailData.selectDetail.sketchString = data
|
||||||
|
if(detailData.currentDetailType == 'sketch' && detailData.selectDetail?.newDetail?.sketch){
|
||||||
|
detailData.selectDetail.newDetail.sketch = null
|
||||||
|
}
|
||||||
}
|
}
|
||||||
const sketchSysToLibrary = ()=>{//系统sketch添加到library更新library
|
const sketchSysToLibrary = ()=>{//系统sketch添加到library更新library
|
||||||
getDetailListDom.sketch.sketchSysToLibrary()
|
getDetailListDom.sketch.sketchSysToLibrary()
|
||||||
@@ -55,6 +63,7 @@ export default defineComponent({
|
|||||||
...toRefs(getDetailListData),
|
...toRefs(getDetailListData),
|
||||||
...toRefs(getDetailListDom),
|
...toRefs(getDetailListDom),
|
||||||
addDetail,
|
addDetail,
|
||||||
|
setSloganData,
|
||||||
sketchSysToLibrary,
|
sketchSysToLibrary,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
<!-- <img :src="selectDetail?.sketchString?selectDetail?.sketchString:selectDetail.path" alt=""> -->
|
<!-- <img :src="selectDetail?.sketchString?selectDetail?.sketchString:selectDetail.path" alt=""> -->
|
||||||
<img :src="selectDetail.path" alt="">
|
<img :src="selectDetail.path" alt="">
|
||||||
<!-- <img :src="selectDetail.sketchString || selectDetail.path" alt=""> -->
|
<!-- <img :src="selectDetail.sketchString || selectDetail.path" alt=""> -->
|
||||||
<!-- <i :title="$t('DesignDetail.editSketchTitle')" class="fi fi-rs-pencil-paintbrush" @click.stop="openAddDetail"></i> -->
|
<i :title="$t('DesignDetail.editSketchTitle')" class="fi fi-rs-pencil-paintbrush" @click.stop="openAddDetail"></i>
|
||||||
</div>
|
</div>
|
||||||
<div class="select_sketch" v-else>
|
<div class="select_sketch" v-else>
|
||||||
<div>
|
<div>
|
||||||
|
|||||||
@@ -15,7 +15,6 @@
|
|||||||
<i class="icon iconfont icon-fanchehui" @click="oppositeRevocation"></i>
|
<i class="icon iconfont icon-fanchehui" @click="oppositeRevocation"></i>
|
||||||
<!-- 编辑 -->
|
<!-- 编辑 -->
|
||||||
<i class="fi fi-rr-edit" :title="$t('DesignDetail.editTitle')" :class="{active:isEditPattern.value == 'canvasEditor','pointerEventsNone':!selectDetail?.id}" @click="showDesignImgDetail('canvasEditor')"></i>
|
<i class="fi fi-rr-edit" :title="$t('DesignDetail.editTitle')" :class="{active:isEditPattern.value == 'canvasEditor','pointerEventsNone':!selectDetail?.id}" @click="showDesignImgDetail('canvasEditor')"></i>
|
||||||
<i class="fi fi-rs-pencil-paintbrush" :title="$t('DesignDetail.editSketchTitle')" :class="{'pointerEventsNone':!selectDetail?.id}" @click="()=>$emit('addDetail')"></i>
|
|
||||||
|
|
||||||
<i class="icon iconfont icon-clothes" :title="$t('Canvas.editFrontBack')" style="font-size: 3.2rem;" @click="showDesignImgDetail('redGreenExample')" :class="{active:isEditPattern.value == 'redGreenExample','pointerEventsNone':!selectDetail?.id}"></i>
|
<i class="icon iconfont icon-clothes" :title="$t('Canvas.editFrontBack')" style="font-size: 3.2rem;" @click="showDesignImgDetail('redGreenExample')" :class="{active:isEditPattern.value == 'redGreenExample','pointerEventsNone':!selectDetail?.id}"></i>
|
||||||
<!-- <i @click="showDesignImgDetail('redGreenExample')" :class="{active:isEditPattern.value == 'redGreenExample','pointerEventsNone':!selectDetail?.id}">
|
<!-- <i @click="showDesignImgDetail('redGreenExample')" :class="{active:isEditPattern.value == 'redGreenExample','pointerEventsNone':!selectDetail?.id}">
|
||||||
@@ -51,7 +50,7 @@ export default defineComponent({
|
|||||||
components:{
|
components:{
|
||||||
position,modelNav
|
position,modelNav
|
||||||
},
|
},
|
||||||
emits:['detailEdit','canvasReload','addSketch','revocation','oppositeRevocation','modelOnLoad','sketchSysToLibrary','addDetail'],
|
emits:['detailEdit','canvasReload','addSketch','revocation','oppositeRevocation','modelOnLoad','sketchSysToLibrary'],
|
||||||
setup(props,{emit}) {
|
setup(props,{emit}) {
|
||||||
const {t} = useI18n()
|
const {t} = useI18n()
|
||||||
const store = useStore();
|
const store = useStore();
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
:outputSize="option.size"
|
:outputSize="option.size"
|
||||||
:outputType="option.outputType"
|
:outputType="option.outputType"
|
||||||
:auto-crop="option.autoCrop"
|
:auto-crop="option.autoCrop"
|
||||||
:fixedBox="!isRound"
|
:fixedBox="isRound"
|
||||||
:movable="true"
|
:movable="true"
|
||||||
:fixed="isRound"
|
:fixed="isRound"
|
||||||
:auto-crop-width="option.autoCropWidth"
|
:auto-crop-width="option.autoCropWidth"
|
||||||
@@ -333,6 +333,7 @@ export default defineComponent({
|
|||||||
.cut_picture_review_block{
|
.cut_picture_review_block{
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: calc(100% - 6.8rem*1.2);
|
height: calc(100% - 6.8rem*1.2);
|
||||||
|
min-height: calc(100% - 6.8rem*1.2);
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
.next_step_button{
|
.next_step_button{
|
||||||
margin-top: 2rem;
|
margin-top: 2rem;
|
||||||
|
|||||||
@@ -1379,7 +1379,6 @@ export default defineComponent({
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
position: absolute;
|
|
||||||
}
|
}
|
||||||
img {
|
img {
|
||||||
// width: calc(10rem*1.2);
|
// width: calc(10rem*1.2);
|
||||||
|
|||||||
@@ -34,8 +34,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layout_centent" :class="{active:flex_direction}" id="layoutCentent">
|
<div class="layout_centent" :class="{active:flex_direction}" id="layoutCentent">
|
||||||
<div v-for="item,index in layoutList" :key="item" :class="moodbClassName[index]" class="modal_imgItem" v-layout="item" @mousedown="setpitch(item,index)" @touchstart="setpitch(item,index)" ref="content" :style="{'background-image':`url(${item.imgUrl})`,'transform':`scale(${item.zoom?item.zoom:1}) rotateZ(${item.angle?item.angle:0}deg)`}">
|
<div v-for="item,index in layoutList" :key="item" :class="moodbClassName[index]" class="modal_imgItem" v-layout="item" @mousedown="setpitch(item,index)" @touchstart="setpitch(item,index)" ref="content" >
|
||||||
<!-- <img crossOrigin="anonymous" :src="item.imgUrl" :style="{'transform':`translate(-50%, -50%) scale(${item.zoom?item.zoom:1}) rotateZ(${item.angle?item.angle:0}deg)`}" draggable="false" :class="moodbClassName[index]" v-modelImg> -->
|
<img crossOrigin="anonymous" :src="item.imgUrl" :style="{'transform':`translate(-50%, -50%) scale(${item.zoom?item.zoom:1}) rotateZ(${item.angle?item.angle:0}deg)`}" draggable="false" :class="moodbClassName[index]" v-modelImg>
|
||||||
<ul v-show="item.setPitch" class="layout_btn" >
|
<ul v-show="item.setPitch" class="layout_btn" >
|
||||||
<li class="layout_btn_top" v-compile.stop="'top'"></li>
|
<li class="layout_btn_top" v-compile.stop="'top'"></li>
|
||||||
<li class="layout_btn_bottom" v-compile.stop="'bottom'"></li>
|
<li class="layout_btn_bottom" v-compile.stop="'bottom'"></li>
|
||||||
@@ -736,7 +736,6 @@ export default defineComponent({
|
|||||||
setmoodb(item:any){
|
setmoodb(item:any){
|
||||||
this.moodbClassName = item
|
this.moodbClassName = item
|
||||||
this.$emit('setmoodbClass',this.moodbClassName)
|
this.$emit('setmoodbClass',this.moodbClassName)
|
||||||
this.styleObj.class = this.moodbClassName
|
|
||||||
if(this.content){
|
if(this.content){
|
||||||
for (item of (this.content as any)) {
|
for (item of (this.content as any)) {
|
||||||
item.classList.remove('active')
|
item.classList.remove('active')
|
||||||
@@ -773,7 +772,7 @@ export default defineComponent({
|
|||||||
initDomStyle(){
|
initDomStyle(){
|
||||||
nextTick(()=>{
|
nextTick(()=>{
|
||||||
this.content.forEach((item:any,index:any) => {
|
this.content.forEach((item:any,index:any) => {
|
||||||
if(this.styleObj.domStyle[index]?.left){
|
if(this.styleObj.domStyle[index]){
|
||||||
item.classList.add('active')
|
item.classList.add('active')
|
||||||
this.initStyle(item,this.styleObj.domStyle[index])
|
this.initStyle(item,this.styleObj.domStyle[index])
|
||||||
}
|
}
|
||||||
@@ -795,7 +794,7 @@ export default defineComponent({
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
initStyle(dom:any,style:any){
|
initStyle(dom:any,style:any){
|
||||||
if(!style || !dom)return
|
if(!style)return
|
||||||
for (const [property, value] of Object.entries(style)) {
|
for (const [property, value] of Object.entries(style)) {
|
||||||
|
|
||||||
dom.style.setProperty(property, value);
|
dom.style.setProperty(property, value);
|
||||||
@@ -807,7 +806,7 @@ export default defineComponent({
|
|||||||
this.styleObj.domStyle.push(this.setStyle(item.style))
|
this.styleObj.domStyle.push(this.setStyle(item.style))
|
||||||
this.domObj.dom.forEach((domName:any,index:any) => {
|
this.domObj.dom.forEach((domName:any,index:any) => {
|
||||||
let style = this.domObj.domStyle[index]
|
let style = this.domObj.domStyle[index]
|
||||||
let dom = item.querySelector(domName) || item
|
let dom = item.querySelector(domName)
|
||||||
this.styleObj[style].push(this.setStyle(dom.style))
|
this.styleObj[style].push(this.setStyle(dom.style))
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
@@ -841,6 +840,7 @@ export default defineComponent({
|
|||||||
let config:any = {headers:{'Content-Type':'multipart/form-data','Accept':'*/*' }}
|
let config:any = {headers:{'Content-Type':'multipart/form-data','Accept':'*/*' }}
|
||||||
Https.axiosPost(Https.httpUrls.elementUpload,param,config)
|
Https.axiosPost(Https.httpUrls.elementUpload,param,config)
|
||||||
.then((rv: any) => {
|
.then((rv: any) => {
|
||||||
|
// console.log(rv);
|
||||||
rv.imgUrl = rv.url
|
rv.imgUrl = rv.url
|
||||||
this.layout = false
|
this.layout = false
|
||||||
this.loadingShow = false
|
this.loadingShow = false
|
||||||
@@ -1062,12 +1062,27 @@ export default defineComponent({
|
|||||||
// height: 100%;
|
// height: 100%;
|
||||||
// }
|
// }
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-position: center;
|
|
||||||
background-size: cover;
|
|
||||||
&.active{
|
&.active{
|
||||||
position: absolute;
|
position: absolute;
|
||||||
}
|
}
|
||||||
|
img{
|
||||||
|
// object-fit: cover;
|
||||||
|
// width: 100%;
|
||||||
|
// height: 100%;
|
||||||
|
pointer-events: none;
|
||||||
|
float: left;
|
||||||
|
user-select:none;
|
||||||
|
-webkit-user-drag: none;
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate(-50%,-50%) scale(1);
|
||||||
|
}
|
||||||
|
::selection {
|
||||||
|
// background: rgba(0,0,0,0);
|
||||||
|
// background: yellow;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.wh1{
|
.wh1{
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<!-- <div class="icon" @click="toGmailLogin"> -->
|
<!-- <div class="icon" @click="toGmailLogin"> -->
|
||||||
<div class="icon">
|
<div class="icon">
|
||||||
<img src="@/assets/images/loginPage/gmailIcon.svg" alt="">
|
<img src="@/assets/images/loginPage/gmailIcon.svg" alt="">
|
||||||
<span>{{ displayText }}</span>
|
<span>{{ $props.text }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
props: {
|
props: {
|
||||||
text: {
|
text: {
|
||||||
type: String,
|
type: String,
|
||||||
default: ''
|
default: 'Sign in with Google'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
setup(props, { emit }) {
|
setup(props, { emit }) {
|
||||||
@@ -108,9 +108,6 @@
|
|||||||
const toGmailLogin = ()=>{
|
const toGmailLogin = ()=>{
|
||||||
message.info(t('account.canNotUtilize'))
|
message.info(t('account.canNotUtilize'))
|
||||||
}
|
}
|
||||||
const displayText = computed(() => {
|
|
||||||
return props.text || t('Login.LoginWithGoogle')
|
|
||||||
})
|
|
||||||
onBeforeUnmount(()=>{
|
onBeforeUnmount(()=>{
|
||||||
var existingScript = document.querySelector(`script[src="${data.scriptSrc}"]`);
|
var existingScript = document.querySelector(`script[src="${data.scriptSrc}"]`);
|
||||||
if(existingScript){
|
if(existingScript){
|
||||||
@@ -123,7 +120,6 @@
|
|||||||
})
|
})
|
||||||
return {
|
return {
|
||||||
toGmailLogin,
|
toGmailLogin,
|
||||||
displayText,
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -553,14 +553,13 @@ export default defineComponent({
|
|||||||
loginType: "EMAIL",
|
loginType: "EMAIL",
|
||||||
userId: this.userId,
|
userId: this.userId,
|
||||||
};
|
};
|
||||||
this.store.commit('set_loading', true)
|
this.$emit('update:isMask',true)
|
||||||
Https.axiosPost(Https.httpUrls.accountLogin, data)
|
Https.axiosPost(Https.httpUrls.accountLogin, data)
|
||||||
.then((rv: any) => {
|
.then((rv: any) => {
|
||||||
this.setSuccessLogin(rv);
|
this.setSuccessLogin(rv);
|
||||||
this.store.commit('set_loading', false)
|
|
||||||
})
|
})
|
||||||
.catch((res) => {
|
.catch((res) => {
|
||||||
this.store.commit('set_loading', false)
|
this.$emit('update:isMask',false)
|
||||||
});
|
});
|
||||||
},1000)
|
},1000)
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<div class="Container">
|
<div class="Container">
|
||||||
<div class="icon" @click="openWeiXinModel">
|
<div class="icon" @click="openWeiXinModel">
|
||||||
<img src="@/assets/images/loginPage/weiXinIcon.svg" alt="" />
|
<img src="@/assets/images/loginPage/weiXinIcon.svg" alt="" />
|
||||||
<span>{{ displayText }}</span>
|
<span>{{ $props.text }}</span>
|
||||||
</div>
|
</div>
|
||||||
<weiXinModel ref="weiXinModel"></weiXinModel>
|
<weiXinModel ref="weiXinModel"></weiXinModel>
|
||||||
</div>
|
</div>
|
||||||
@@ -18,7 +18,6 @@ import {
|
|||||||
toRefs,
|
toRefs,
|
||||||
} from "vue";
|
} from "vue";
|
||||||
import weiXinModel from "./weiXinModel.vue";
|
import weiXinModel from "./weiXinModel.vue";
|
||||||
import { useI18n } from 'vue-i18n'
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: "login",
|
name: "login",
|
||||||
components: {
|
components: {
|
||||||
@@ -27,25 +26,20 @@ export default defineComponent({
|
|||||||
props: {
|
props: {
|
||||||
text: {
|
text: {
|
||||||
type: String,
|
type: String,
|
||||||
default: ''
|
default: "Sign in with Wechat",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
setup(props) {
|
setup() {
|
||||||
let weiXinDom = reactive({
|
let weiXinDom = reactive({
|
||||||
weiXinModel: null,
|
weiXinModel: null,
|
||||||
});
|
});
|
||||||
const { t } = useI18n()
|
|
||||||
const openWeiXinModel = () => {
|
const openWeiXinModel = () => {
|
||||||
weiXinDom.weiXinModel.init();
|
weiXinDom.weiXinModel.init();
|
||||||
};
|
};
|
||||||
const displayText = computed(() => {
|
|
||||||
return props.text || t('Login.LoginWithWechat')
|
|
||||||
})
|
|
||||||
onMounted(() => {});
|
onMounted(() => {});
|
||||||
return {
|
return {
|
||||||
...toRefs(weiXinDom),
|
...toRefs(weiXinDom),
|
||||||
openWeiXinModel,
|
openWeiXinModel,
|
||||||
displayText,
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -113,8 +113,8 @@
|
|||||||
<img v-for="item in scaleImageData?.designPythonOutfitList" v-lazy="item.designUrl">
|
<img v-for="item in scaleImageData?.designPythonOutfitList" v-lazy="item.designUrl">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- <div v-if="userDetail.systemList.indexOf(1) > -1 && scaleImageData.isMine != 1 && scaleImageData.selected != 1 && scaleImageData.openSource != 0" class="started_btn" @click="setChoose" >{{$t('newScaleImage.SecondaryCreation')}}</div> -->
|
<div v-if="userDetail.systemList.indexOf(1) > -1 && scaleImageData.isMine != 1 && scaleImageData.selected != 1 && scaleImageData.openSource != 0" class="started_btn" @click="setChoose" >{{$t('newScaleImage.SecondaryCreation')}}</div>
|
||||||
<div v-if="userDetail.systemList.indexOf(1) > -1 && scaleImageData.openSource != 0" class="started_btn" @click="setChoose" >{{$t('newScaleImage.SecondaryCreation')}}</div>
|
<!-- <div v-if="systemUser.value == 1 && scaleImageData.isMine != 1 && scaleImageData.selected != 1" class="started_btn" @click="setChoose" :title="systemUser.value != 1?$t('newScaleImage.jsContent1'): scaleImageData.openSource == 0?$t('newScaleImage.jsContent2'):''" :class="{active:systemUser.value != 1?true:scaleImageData.openSource == 0}">{{$t('newScaleImage.SecondaryCreation')}}</div> -->
|
||||||
</div>
|
</div>
|
||||||
<div v-else class="newScaleImage_right_content_generate">
|
<div v-else class="newScaleImage_right_content_generate">
|
||||||
<div class="scaleImage_chunk_item content_left_generate_item">
|
<div class="scaleImage_chunk_item content_left_generate_item">
|
||||||
@@ -458,7 +458,6 @@ export default defineComponent({
|
|||||||
message.info(t('newScaleImage.jsContent2'))
|
message.info(t('newScaleImage.jsContent2'))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
store.state.Workspace.cachedRoutes = [];
|
|
||||||
let id = await getWorks(imgData.scaleImageData.id)
|
let id = await getWorks(imgData.scaleImageData.id)
|
||||||
await router.push(`/home/history/${id}`)
|
await router.push(`/home/history/${id}`)
|
||||||
store.commit('setChooseIsDesign',false)
|
store.commit('setChooseIsDesign',false)
|
||||||
|
|||||||
@@ -132,8 +132,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="modal_img_max">
|
<div class="modal_img_max">
|
||||||
<div v-if="!modalImg[0]?.id" class="modal_img" id="modal_img" :class="{active:flex_direction}">
|
<div v-if="!modalImg[0]?.id" class="modal_img" id="modal_img" :class="{active:flex_direction}">
|
||||||
<!-- <div class="modal_img" id="modal_img" :class="{active:flex_direction}"> -->
|
<div v-for="item,index in layoutList" :class="[moodb_className[index]]" class="modal_imgItem">
|
||||||
<div v-for="item,index in layoutList" :class="[moodb_className[index]]" :style="{'background-image':`url(${item.imgUrl})`}" class="modal_imgItem">
|
<img :src="item.imgUrl" v-modelImg>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-else class="modal_img">
|
<div v-else class="modal_img">
|
||||||
@@ -244,6 +244,30 @@ export default defineComponent({
|
|||||||
this.token = getCookie("token") || "";
|
this.token = getCookie("token") || "";
|
||||||
this.uploadUrl = getUploadUrl();
|
this.uploadUrl = getUploadUrl();
|
||||||
},
|
},
|
||||||
|
directives:{
|
||||||
|
modelImg:{
|
||||||
|
mounted(el) {
|
||||||
|
let parentNode = el.parentNode
|
||||||
|
if(parentNode.offsetHeight >= parentNode.offsetWidth){
|
||||||
|
el.style.height = 100+'%'
|
||||||
|
el.style.width = 'auto'
|
||||||
|
}else{
|
||||||
|
el.style.width = 100+'%'
|
||||||
|
el.style.height = 'auto'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
updated (el) {
|
||||||
|
let parentNode = el.parentNode
|
||||||
|
if(parentNode.offsetHeight >= parentNode.offsetWidth){
|
||||||
|
el.style.height = 100+'%'
|
||||||
|
el.style.width = 'auto'
|
||||||
|
}else{
|
||||||
|
el.style.width = 100+'%'
|
||||||
|
el.style.height = 'auto'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
open(num: Number) {
|
open(num: Number) {
|
||||||
this.openClick = num;
|
this.openClick = num;
|
||||||
@@ -421,7 +445,7 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.edieShow = true
|
this.edieShow = true
|
||||||
if(this.moodb_[arr.length-1].length == 1){
|
if(this.moodb_[arr.length-1].length == 2){
|
||||||
this.moodb_className = this.moodb_[arr.length-1][0]
|
this.moodb_className = this.moodb_[arr.length-1][0]
|
||||||
}else{
|
}else{
|
||||||
this.moodb_className = this.moodb_[arr.length-1][random]
|
this.moodb_className = this.moodb_[arr.length-1][random]
|
||||||
@@ -604,7 +628,6 @@ export default defineComponent({
|
|||||||
height: calc(5rem*1.2);
|
height: calc(5rem*1.2);
|
||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
||||||
&.modal_img::-webkit-scrollbar {
|
&.modal_img::-webkit-scrollbar {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
@@ -683,9 +706,15 @@ export default defineComponent({
|
|||||||
position: relative;
|
position: relative;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
background-repeat: no-repeat;
|
img{
|
||||||
background-position: center;
|
position: absolute;
|
||||||
background-size: cover;
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate(-50%,-50%);
|
||||||
|
// float: left;
|
||||||
|
// user-select:none;
|
||||||
|
// -webkit-user-drag: none;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.wh1{
|
.wh1{
|
||||||
width: 23%;
|
width: 23%;
|
||||||
|
|||||||
@@ -145,7 +145,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- 取消请求 -->
|
<!-- 取消请求 -->
|
||||||
<scaleImage ref="scaleImage"></scaleImage>
|
<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>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
|||||||
@@ -242,16 +242,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="prompt-input-container" v-show="!showMotion">
|
<div class="prompt-input-container" v-show="!showMotion">
|
||||||
<div class="title">
|
<div class="title">{{ $t('ProductImg.Prompt') }}</div>
|
||||||
<span>{{ $t('ProductImg.Prompt') }}</span>
|
|
||||||
<SvgIcon
|
|
||||||
class="cursor-icon"
|
|
||||||
@click="handleNavigateHelp"
|
|
||||||
name="CHelpFlip"
|
|
||||||
size="18"
|
|
||||||
color="#000"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<promptInput :content="prompt" ref="promptInputRef" />
|
<promptInput :content="prompt" ref="promptInputRef" />
|
||||||
</div>
|
</div>
|
||||||
<div class="transferPose" v-show="showMotion">
|
<div class="transferPose" v-show="showMotion">
|
||||||
@@ -389,7 +380,7 @@
|
|||||||
<a-spin size="large" />
|
<a-spin size="large" />
|
||||||
</div>
|
</div>
|
||||||
<template>
|
<template>
|
||||||
<Prompt v-if="scaleImageList[scaleImageIndex]?.resultType === 'ToProductImage'" v-model:showModal="showPromptAssist" />
|
<Prompt v-if="scaleImageList[scaleImageIndex]?.resultType === 'ToProductImage'" v-model:showModal="showPromptAssist" isDesignPage />
|
||||||
<PromptEditProduct v-if="scaleImageList[scaleImageIndex]?.resultType === 'Relight'" v-model:showModal="showPromptAssist" />
|
<PromptEditProduct v-if="scaleImageList[scaleImageIndex]?.resultType === 'Relight'" v-model:showModal="showPromptAssist" />
|
||||||
</template>
|
</template>
|
||||||
<Product
|
<Product
|
||||||
@@ -459,7 +450,7 @@ export default defineComponent({
|
|||||||
let userDetail: any = computed(() => {
|
let userDetail: any = computed(() => {
|
||||||
return store.state.UserHabit.userDetail
|
return store.state.UserHabit.userDetail
|
||||||
})
|
})
|
||||||
let { t, locale } = useI18n()
|
let { t } = useI18n()
|
||||||
const textareaRef = useTemplateRef<HTMLTextAreaElement>('textareaRef')
|
const textareaRef = useTemplateRef<HTMLTextAreaElement>('textareaRef')
|
||||||
const videoType = ref(2)
|
const videoType = ref(2)
|
||||||
const showMotion = computed(() => videoType.value === 1)
|
const showMotion = computed(() => videoType.value === 1)
|
||||||
@@ -608,13 +599,13 @@ export default defineComponent({
|
|||||||
})
|
})
|
||||||
const showPromptAssist = ref(false)
|
const showPromptAssist = ref(false)
|
||||||
const handleClickAssistBtn = () => {
|
const handleClickAssistBtn = () => {
|
||||||
// const { httpType } = store.state.Workspace.probjects
|
const { httpType } = store.state.Workspace.probjects
|
||||||
// const isSingleDesign = httpType === 'SINGLE_DESIGN'
|
const isSingleDesign = httpType === 'SINGLE_DESIGN'
|
||||||
// if (!isSingleDesign) {
|
if (!isSingleDesign) {
|
||||||
// const promptText = t('ProductImg.Series')
|
const promptText = t('ProductImg.Series')
|
||||||
// productimg.productimgSearchName = promptText
|
productimg.productimgSearchName = promptText
|
||||||
// return
|
return
|
||||||
// }
|
}
|
||||||
showPromptAssist.value = true
|
showPromptAssist.value = true
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1319,13 +1310,7 @@ export default defineComponent({
|
|||||||
return videoType.value === 3 ? false : true
|
return videoType.value === 3 ? false : true
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
const handleNavigateHelp = () => {
|
|
||||||
const url =
|
|
||||||
locale === 'CHINESE_SIMPLIFIED'
|
|
||||||
? 'https://aida-user-manual-chinese.super.site/2b08f755cedd80a985cffdf2af80c538'
|
|
||||||
: 'https://aida-user-manual.super.site/advanced-tool/animated-product-image/to-product-video-prompt-assist '
|
|
||||||
window.open(url,'_blank')
|
|
||||||
}
|
|
||||||
onBeforeUnmount(() => {
|
onBeforeUnmount(() => {
|
||||||
clearInterval(prductimgTime)
|
clearInterval(prductimgTime)
|
||||||
clearInterval(remPrductimgTime)
|
clearInterval(remPrductimgTime)
|
||||||
@@ -1389,8 +1374,7 @@ export default defineComponent({
|
|||||||
handlePlayNewVideo,
|
handlePlayNewVideo,
|
||||||
isNewVideoPlaying,
|
isNewVideoPlaying,
|
||||||
showDropdown,
|
showDropdown,
|
||||||
inputPlaceholder,
|
inputPlaceholder
|
||||||
handleNavigateHelp
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
@@ -1802,16 +1786,12 @@ export default defineComponent({
|
|||||||
:deep(.promptInput) {
|
:deep(.promptInput) {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
.title {
|
.title {
|
||||||
display: flex;
|
font-weight: 500;
|
||||||
align-items: center;
|
color: #000;
|
||||||
column-gap: 1rem;
|
font-size: 1.7rem;
|
||||||
.cursor-icon {
|
margin-bottom: 1.4rem;
|
||||||
display: flex;
|
}
|
||||||
width: auto;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
.prompt-container {
|
.prompt-container {
|
||||||
margin-top: 4rem;
|
margin-top: 4rem;
|
||||||
|
|||||||
@@ -682,7 +682,6 @@ export default defineComponent({
|
|||||||
store.commit("cancelDeleteDesignCollectionList",index);
|
store.commit("cancelDeleteDesignCollectionList",index);
|
||||||
}
|
}
|
||||||
const designMousedown = (e:any,design:any,str:string)=>{
|
const designMousedown = (e:any,design:any,str:string)=>{
|
||||||
collItemSize.isMove = false
|
|
||||||
if(str != 'disLike'){
|
if(str != 'disLike'){
|
||||||
if(design.resultType != 'Design' || designData.isUnfold)return
|
if(design.resultType != 'Design' || designData.isUnfold)return
|
||||||
if(str != 'like' && showDesignMark.value) return
|
if(str != 'like' && showDesignMark.value) return
|
||||||
@@ -696,6 +695,7 @@ export default defineComponent({
|
|||||||
startY = e.clientY,
|
startY = e.clientY,
|
||||||
left = item.el.offsetLeft,
|
left = item.el.offsetLeft,
|
||||||
top = item.el.offsetTop;
|
top = item.el.offsetTop;
|
||||||
|
collItemSize.isMove = false
|
||||||
let moveFun = (e:any) => {
|
let moveFun = (e:any) => {
|
||||||
collItemSize.isMove = true
|
collItemSize.isMove = true
|
||||||
let X = e.clientX - startX + left;
|
let X = e.clientX - startX + left;
|
||||||
@@ -1200,11 +1200,6 @@ export default defineComponent({
|
|||||||
likeDesignCollectionList.value.forEach((likeItem:any,index:any)=>{
|
likeDesignCollectionList.value.forEach((likeItem:any,index:any)=>{
|
||||||
if(likeItem?.childList?.length > 0){
|
if(likeItem?.childList?.length > 0){
|
||||||
let index = likeItem.childList.findIndex((item:any)=>{return item.taskId == listItem})
|
let index = likeItem.childList.findIndex((item:any)=>{return item.taskId == listItem})
|
||||||
likeItem.childList.forEach((item)=>{
|
|
||||||
if(item.sort > likeItem.childList[index].sort){
|
|
||||||
item.sort -= 1
|
|
||||||
}
|
|
||||||
})
|
|
||||||
likeItem.childList.splice(index,1)
|
likeItem.childList.splice(index,1)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<!-- <div v-show="openType === 'history'" class="function">
|
<!-- <div v-show="openType === 'history'" class="function">
|
||||||
<design :key="componentKey" ref="design"></design>
|
<design :key="componentKey" ref="design"></design>
|
||||||
</div> -->
|
</div> -->
|
||||||
<router-view v-show="
|
<router-view v-if="
|
||||||
(openType && openType != 'history' && !routeQuery.id) ||
|
(openType && openType != 'history' && !routeQuery.id) ||
|
||||||
$route.path != '/home'"
|
$route.path != '/home'"
|
||||||
@setTask="setTask"
|
@setTask="setTask"
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
<!-- <div v-else-if="routeQuery.id" class="function">
|
<!-- <div v-else-if="routeQuery.id" class="function">
|
||||||
<design :key="componentKey" ref="design"></design>
|
<design :key="componentKey" ref="design"></design>
|
||||||
</div> -->
|
</div> -->
|
||||||
<div v-if="!$route.params.id && !routeQuery.id" class="function">
|
<div v-else-if="!routeQuery.history" class="function">
|
||||||
<newPorject ref="newPorject" @newProject=newProject></newPorject>
|
<newPorject ref="newPorject" @newProject=newProject></newPorject>
|
||||||
</div>
|
</div>
|
||||||
<!-- <iframe src="https://kaput-relative-4bb.notion.site/ebd/22a8f755cedd809e98a2c8c6366ee701" width="100%" height="100%" frameborder="0" allowfullscreen /> -->
|
<!-- <iframe src="https://kaput-relative-4bb.notion.site/ebd/22a8f755cedd809e98a2c8c6366ee701" width="100%" height="100%" frameborder="0" allowfullscreen /> -->
|
||||||
@@ -55,16 +55,13 @@ export default defineComponent({
|
|||||||
const data = reactive({
|
const data = reactive({
|
||||||
openType:'',
|
openType:'',
|
||||||
componentKey:null,
|
componentKey:null,
|
||||||
isShowMark:true,
|
isShowMark:false,
|
||||||
routeQuery:{} as any,
|
routeQuery:{} as any,
|
||||||
selectObject:computed(()=>store.state.Workspace.probjects) as any,//选择的项目
|
selectObject:computed(()=>store.state.Workspace.probjects) as any,//选择的项目
|
||||||
chatData:null as any,
|
chatData:null as any,
|
||||||
dataLoad:true as any,
|
dataLoad:true as any,
|
||||||
cachedRoutes:computed(()=>store.state.Workspace.cachedRoutes),//
|
cachedRoutes:computed(()=>store.state.Workspace.cachedRoutes),//
|
||||||
})
|
})
|
||||||
onMounted(()=>{
|
|
||||||
data.isShowMark = false
|
|
||||||
})
|
|
||||||
let settingGetHistory:any = inject('settingGetHistory')
|
let settingGetHistory:any = inject('settingGetHistory')
|
||||||
const setIsShowMark = (boolean:boolean)=>{
|
const setIsShowMark = (boolean:boolean)=>{
|
||||||
data.isShowMark = boolean
|
data.isShowMark = boolean
|
||||||
|
|||||||
@@ -777,7 +777,6 @@ export default defineComponent({
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
const likeSetBtn = (id: any, str: string) => {
|
const likeSetBtn = (id: any, str: string) => {
|
||||||
console.log(1111)
|
|
||||||
data.likeList.forEach((item: any, index: any) => {
|
data.likeList.forEach((item: any, index: any) => {
|
||||||
if (item.id == id && id) {
|
if (item.id == id && id) {
|
||||||
if (str == 'zoom') {
|
if (str == 'zoom') {
|
||||||
@@ -815,7 +814,6 @@ export default defineComponent({
|
|||||||
let likeFile = (item: any, str: any, index: any) => {
|
let likeFile = (item: any, str: any, index: any) => {
|
||||||
let url
|
let url
|
||||||
let value = {}
|
let value = {}
|
||||||
console.log(props.isDesignPage)
|
|
||||||
if (str == 'like') {
|
if (str == 'like') {
|
||||||
value = {
|
value = {
|
||||||
likeOrDislike: 'like',
|
likeOrDislike: 'like',
|
||||||
|
|||||||
@@ -121,7 +121,7 @@ const promptList = computed(() => {
|
|||||||
return [t('ProductImg.UploadWithoutModel'), t('ProductImg.UploadWithModel')]
|
return [t('ProductImg.UploadWithoutModel'), t('ProductImg.UploadWithModel')]
|
||||||
} else {
|
} else {
|
||||||
// 如果是从design来的
|
// 如果是从design来的
|
||||||
if (props.isDesignPage) {
|
if (isSingleDesign) {
|
||||||
// SINGLE_DESIGN: 两个提示词
|
// SINGLE_DESIGN: 两个提示词
|
||||||
// 根据年龄和性别选择对应的提示词
|
// 根据年龄和性别选择对应的提示词
|
||||||
let firstPrompt: string // 不带模特的提示词
|
let firstPrompt: string // 不带模特的提示词
|
||||||
@@ -255,8 +255,8 @@ const exampleList = computed(() => {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
const { ageGroup, httpType, sex } = store.state.Workspace.probjects
|
const { ageGroup, httpType, sex } = store.state.Workspace.probjects
|
||||||
// const isSingleDesign = httpType === 'SINGLE_DESIGN'
|
const isSingleDesign = httpType === 'SINGLE_DESIGN'
|
||||||
// if (!isSingleDesign) return {}
|
if (!isSingleDesign) return {}
|
||||||
const isAdult = ageGroup === 'Adult'
|
const isAdult = ageGroup === 'Adult'
|
||||||
const isFemale = sex === 'Female'
|
const isFemale = sex === 'Female'
|
||||||
if (isAdult) {
|
if (isAdult) {
|
||||||
|
|||||||
@@ -1101,13 +1101,13 @@ export default defineComponent({
|
|||||||
|
|
||||||
const showPromptAssist = ref(false)
|
const showPromptAssist = ref(false)
|
||||||
const handleClickAssistBtn = () => {
|
const handleClickAssistBtn = () => {
|
||||||
// const { httpType } = store.state.Workspace.probjects
|
const { httpType } = store.state.Workspace.probjects
|
||||||
// const isSingleDesign = httpType === 'SINGLE_DESIGN'
|
const isSingleDesign = httpType === 'SINGLE_DESIGN'
|
||||||
// if (props.isDesignPage && !isSingleDesign) {
|
if (props.isDesignPage && !isSingleDesign) {
|
||||||
// const promptText = t('ProductImg.Series')
|
const promptText = t('ProductImg.Series')
|
||||||
// productImgData.searchName[props.productimgMenu.value] = promptText
|
productImgData.searchName[props.productimgMenu.value] = promptText
|
||||||
// return
|
return
|
||||||
// }
|
}
|
||||||
showPromptAssist.value = true
|
showPromptAssist.value = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -51,7 +51,7 @@
|
|||||||
<ul
|
<ul
|
||||||
class="product_detail"
|
class="product_detail"
|
||||||
:class="[
|
:class="[
|
||||||
{ academic: item.type == 'academic' },
|
{ academic: item.type == 'academic' && !isSelectSuccessively },
|
||||||
{ chinese: isSelectSuccessively }
|
{ chinese: isSelectSuccessively }
|
||||||
]"
|
]"
|
||||||
>
|
>
|
||||||
@@ -106,12 +106,12 @@ export default defineComponent({
|
|||||||
Yearly: '年度',
|
Yearly: '年度',
|
||||||
monthly: [
|
monthly: [
|
||||||
{
|
{
|
||||||
title: '试用版',
|
title: '免费版',
|
||||||
img: CChargeIcon,
|
img: CChargeIcon,
|
||||||
type: 'personal',
|
type: 'personal',
|
||||||
info: '您的AI时尚设计助手',
|
info: '您的AI时尚设计助手',
|
||||||
price: 'HK$0',
|
price: 'HK$0',
|
||||||
detail: '自注册之日起 5 天内 · 50 个积分',
|
detail: '5天·50积分',
|
||||||
highlight: '',
|
highlight: '',
|
||||||
discounts: '9折优惠',
|
discounts: '9折优惠',
|
||||||
detailList: [
|
detailList: [
|
||||||
@@ -185,12 +185,12 @@ export default defineComponent({
|
|||||||
],
|
],
|
||||||
yearl: [
|
yearl: [
|
||||||
{
|
{
|
||||||
title: '试用版',
|
title: '免费版',
|
||||||
img: CChargeIcon,
|
img: CChargeIcon,
|
||||||
type: 'personal',
|
type: 'personal',
|
||||||
info: '您的AI时尚设计助手',
|
info: '您的AI时尚设计助手',
|
||||||
price: 'HK$0',
|
price: 'HK$0',
|
||||||
detail: '自注册之日起 5 天内 · 50 个积分',
|
detail: '5天·50积分',
|
||||||
highlight: '',
|
highlight: '',
|
||||||
discounts: '9折优惠',
|
discounts: '9折优惠',
|
||||||
detailList: [
|
detailList: [
|
||||||
@@ -250,12 +250,12 @@ export default defineComponent({
|
|||||||
Yearly: 'Yearly',
|
Yearly: 'Yearly',
|
||||||
monthly: [
|
monthly: [
|
||||||
{
|
{
|
||||||
title: 'Trial',
|
title: 'Free',
|
||||||
img: CChargeIcon,
|
img: CChargeIcon,
|
||||||
type: 'personal',
|
type: 'personal',
|
||||||
info: 'Your AI Fashion Design Assistant',
|
info: 'Your AI Fashion Design Assistant',
|
||||||
price: 'HK$0',
|
price: 'HK$0',
|
||||||
detail: '5 days from sign-up · 50 credits',
|
detail: '5 days · 50 credits',
|
||||||
highlight: '',
|
highlight: '',
|
||||||
discounts: '10% off',
|
discounts: '10% off',
|
||||||
detailList: [
|
detailList: [
|
||||||
@@ -329,12 +329,12 @@ export default defineComponent({
|
|||||||
],
|
],
|
||||||
yearl: [
|
yearl: [
|
||||||
{
|
{
|
||||||
title: 'Trial',
|
title: 'Free',
|
||||||
img: CChargeIcon,
|
img: CChargeIcon,
|
||||||
type: 'personal',
|
type: 'free',
|
||||||
info: 'Your AI Fashion Design Assistant',
|
info: 'Your AI Fashion Design Assistant',
|
||||||
price: 'HK$0',
|
price: 'HK$0',
|
||||||
detail: '5 days from sign-up · 50 credits',
|
detail: '5 days · 50 credits',
|
||||||
highlight: '',
|
highlight: '',
|
||||||
discounts: '10% off',
|
discounts: '10% off',
|
||||||
detailList: [
|
detailList: [
|
||||||
|
|||||||
@@ -1530,21 +1530,7 @@ export default {
|
|||||||
Relight: '打光',
|
Relight: '打光',
|
||||||
ChatRobot: '对话生成',
|
ChatRobot: '对话生成',
|
||||||
Yes: '是',
|
Yes: '是',
|
||||||
No: '否',
|
No: '否'
|
||||||
SubscribePlan: '订阅计划',
|
|
||||||
SwitchPlanSuccess: '切换订阅计划成功',
|
|
||||||
SwitchPlanFailed: '切换订阅计划失败',
|
|
||||||
NoPlanSelected: '请先选择订阅计划',
|
|
||||||
PlanNameRequired: '请输入计划名称',
|
|
||||||
PlanNotFound: '计划不存在',
|
|
||||||
RenamePlanSuccess: '重命名成功',
|
|
||||||
RenamePlanFailed: '重命名失败',
|
|
||||||
RenamePlan: '重命名订阅计划',
|
|
||||||
PlanName: '计划名称',
|
|
||||||
InputPlanName: '请输入计划名称',
|
|
||||||
Cancel: '取消',
|
|
||||||
SelectPlan: '选择计划',
|
|
||||||
AllPlan: '全部'
|
|
||||||
},
|
},
|
||||||
Login: {
|
Login: {
|
||||||
Login: '登录',
|
Login: '登录',
|
||||||
@@ -1557,13 +1543,11 @@ export default {
|
|||||||
LoginMethod: '使用以下方式登录:',
|
LoginMethod: '使用以下方式登录:',
|
||||||
Individual: '个人账号',
|
Individual: '个人账号',
|
||||||
Academic: '学术账号',
|
Academic: '学术账号',
|
||||||
LogonToAiDA: '登录到AiDA 3.1',
|
LogoOnToAiDA: '登录到AiDA 3.1',
|
||||||
Infomation: '请填写以下信息',
|
Infomation: '请填写以下信息',
|
||||||
Device: '请使用iPad或电脑登录',
|
Device: '请使用iPad或电脑登录',
|
||||||
AgreePolicies: '请勾选条款、隐私政策和费用',
|
AgreePolicies: '请勾选条款、隐私政策和费用',
|
||||||
PasswordConditions: '您必须满足所有密码条件才能注册',
|
PasswordConditions: '您必须满足所有密码条件才能注册'
|
||||||
LoginWithGoogle: '使用谷歌账号登录',
|
|
||||||
LoginWithWechat: '使用微信登录',
|
|
||||||
},
|
},
|
||||||
LoginPersonal: {
|
LoginPersonal: {
|
||||||
Email: '邮箱',
|
Email: '邮箱',
|
||||||
|
|||||||
@@ -959,7 +959,7 @@ export default {
|
|||||||
MOSTPOPULAR: 'MOST POPULAR',
|
MOSTPOPULAR: 'MOST POPULAR',
|
||||||
Monthly: 'Monthly',
|
Monthly: 'Monthly',
|
||||||
Yearly: 'Yearly',
|
Yearly: 'Yearly',
|
||||||
promotionCode: 'Coupon Code',
|
promotionCode: 'Coupon',
|
||||||
use: 'Apply',
|
use: 'Apply',
|
||||||
PromoCodeError:
|
PromoCodeError:
|
||||||
'Please check if the promo code is correct or if the date has expired',
|
'Please check if the promo code is correct or if the date has expired',
|
||||||
@@ -1574,21 +1574,7 @@ export default {
|
|||||||
Relight: 'Relight',
|
Relight: 'Relight',
|
||||||
ChatRobot: 'ChatRobot',
|
ChatRobot: 'ChatRobot',
|
||||||
Yes: 'Yes',
|
Yes: 'Yes',
|
||||||
No: 'No',
|
No: 'No'
|
||||||
SubscribePlan:'Subscribe Plan',
|
|
||||||
SwitchPlanSuccess: 'Switch subscription plan successfully',
|
|
||||||
SwitchPlanFailed: 'Failed to switch subscription plan',
|
|
||||||
NoPlanSelected: 'Please select a subscription plan first',
|
|
||||||
PlanNameRequired: 'Please enter plan name',
|
|
||||||
PlanNotFound: 'Plan not found',
|
|
||||||
RenamePlanSuccess: 'Rename successfully',
|
|
||||||
RenamePlanFailed: 'Failed to rename',
|
|
||||||
RenamePlan: 'Rename Subscription Plan',
|
|
||||||
PlanName: 'Plan Name',
|
|
||||||
InputPlanName: 'Please enter plan name',
|
|
||||||
Cancel: 'Cancel',
|
|
||||||
SelectPlan: 'Select Plan',
|
|
||||||
AllPlan:'All'
|
|
||||||
},
|
},
|
||||||
Login: {
|
Login: {
|
||||||
Login: 'Login',
|
Login: 'Login',
|
||||||
@@ -1605,9 +1591,7 @@ export default {
|
|||||||
Infomation: 'Please fill your information below',
|
Infomation: 'Please fill your information below',
|
||||||
Device: 'If you need to design, please log in using an iPad or computer.',
|
Device: 'If you need to design, please log in using an iPad or computer.',
|
||||||
AgreePolicies: 'Please agree to all terms, privacy policy, and fees.',
|
AgreePolicies: 'Please agree to all terms, privacy policy, and fees.',
|
||||||
PasswordConditions: 'You must satisfy ALL password conditions to register.',
|
PasswordConditions: 'You must satisfy ALL password conditions to register.'
|
||||||
LoginWithGoogle: 'Sign in with Google',
|
|
||||||
LoginWithWechat: 'Sign in with Wechat',
|
|
||||||
},
|
},
|
||||||
LoginPersonal: {
|
LoginPersonal: {
|
||||||
Email: 'Email',
|
Email: 'Email',
|
||||||
|
|||||||
@@ -290,13 +290,6 @@ const routes: Array<RouteRecordRaw> = [
|
|||||||
component: () =>
|
component: () =>
|
||||||
import("@/component/Administrator/organization/organization.vue"),
|
import("@/component/Administrator/organization/organization.vue"),
|
||||||
},
|
},
|
||||||
{
|
|
||||||
path: "subscriptionPlan",
|
|
||||||
name: "subscriptionPlan",
|
|
||||||
meta: { enter: 3 },
|
|
||||||
component: () =>
|
|
||||||
import("@/component/Administrator/subscriptionPlan.vue"),
|
|
||||||
},
|
|
||||||
//企业版教育管理员页面
|
//企业版教育管理员页面
|
||||||
{
|
{
|
||||||
path: "allUserSE",
|
path: "allUserSE",
|
||||||
@@ -505,17 +498,12 @@ function isTimeRangePassed(timeRange) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
router.beforeEach((to: any, from, next) => {
|
router.beforeEach((to: any, from, next) => {
|
||||||
store.commit("set_view_loading", true);
|
|
||||||
//系统维护时间
|
//系统维护时间
|
||||||
const time = '2025-11-21T23:00:00 - 2025-11-22T00:00:00';
|
const time = '2025-11-21T23:00:00 - 2025-11-22T00:00:00';
|
||||||
if (isTimeRangePassed(time) == 'in_progress') {
|
if (isTimeRangePassed(time) == 'in_progress') {
|
||||||
// 系统维护
|
// 系统维护
|
||||||
const toName = to.name === 'upgrade';
|
const toName = to.name === 'upgrade';
|
||||||
if(to.query.status == 'admin'){
|
if(upgradeList.indexOf(to.path) > -1){
|
||||||
localStorage.setItem('isAdminVisit', 'true')
|
|
||||||
}
|
|
||||||
const isAdminVisit = localStorage.getItem('isAdminVisit') == 'true'
|
|
||||||
if(upgradeList.indexOf(to.path) > -1 || isAdminVisit){
|
|
||||||
next();
|
next();
|
||||||
}else{
|
}else{
|
||||||
if (toName) {
|
if (toName) {
|
||||||
@@ -525,7 +513,6 @@ router.beforeEach((to: any, from, next) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
localStorage.setItem('isAdminVisit', 'false')
|
|
||||||
|
|
||||||
// 机房用户
|
// 机房用户
|
||||||
let herfData = window.location.search.substring(1);
|
let herfData = window.location.search.substring(1);
|
||||||
@@ -553,7 +540,5 @@ router.beforeEach((to: any, from, next) => {
|
|||||||
|
|
||||||
// if(systemUser == 0){//游客用户只能进入这两个页面
|
// if(systemUser == 0){//游客用户只能进入这两个页面
|
||||||
});
|
});
|
||||||
router.afterEach((to, from) => {
|
|
||||||
store.commit("set_view_loading", false);
|
|
||||||
});
|
|
||||||
export default router;
|
export default router;
|
||||||
|
|||||||
@@ -13,18 +13,10 @@ export interface RootState{
|
|||||||
|
|
||||||
export default createStore<RootState>({
|
export default createStore<RootState>({
|
||||||
state: {
|
state: {
|
||||||
loading: false,
|
|
||||||
view_loading: false,
|
|
||||||
},
|
},
|
||||||
getters: {
|
getters: {
|
||||||
},
|
},
|
||||||
mutations: {
|
mutations: {
|
||||||
set_loading(state, v){
|
|
||||||
state.loading = v;
|
|
||||||
},
|
|
||||||
set_view_loading(state, v){
|
|
||||||
state.view_loading = v;
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
actions: {
|
actions: {
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -80,14 +80,12 @@ const userHabit : Module<UserHabit,RootState> = {
|
|||||||
systemList:[],
|
systemList:[],
|
||||||
expireTime:null,
|
expireTime:null,
|
||||||
language:'',
|
language:'',
|
||||||
organizationId: null,
|
|
||||||
timeData:{
|
timeData:{
|
||||||
isExpiration:false,
|
isExpiration:false,
|
||||||
text:''
|
text:''
|
||||||
},
|
},
|
||||||
subscriptionType:null,
|
subscriptionType:null,
|
||||||
subscriptionId:null,
|
subscriptionId:null,
|
||||||
subscriptionPlanId:null,
|
|
||||||
usernameModify:0,
|
usernameModify:0,
|
||||||
occupation:'',//职业
|
occupation:'',//职业
|
||||||
country:'',//国家
|
country:'',//国家
|
||||||
@@ -197,14 +195,12 @@ const userHabit : Module<UserHabit,RootState> = {
|
|||||||
systemList:[],
|
systemList:[],
|
||||||
expireTime:null,
|
expireTime:null,
|
||||||
language:'',
|
language:'',
|
||||||
organizationId: null,
|
|
||||||
timeData:{
|
timeData:{
|
||||||
isExpiration:false,
|
isExpiration:false,
|
||||||
text:''
|
text:''
|
||||||
},
|
},
|
||||||
subscriptionType:null,
|
subscriptionType:null,
|
||||||
subscriptionId:null,
|
subscriptionId:null,
|
||||||
subscriptionPlanId:null,
|
|
||||||
//是否是affiliate用户
|
//是否是affiliate用户
|
||||||
affiliate:false,
|
affiliate:false,
|
||||||
usernameModify:0,
|
usernameModify:0,
|
||||||
@@ -234,7 +230,6 @@ const userHabit : Module<UserHabit,RootState> = {
|
|||||||
state.userDetail.avatar = data.avatar//头像
|
state.userDetail.avatar = data.avatar//头像
|
||||||
state.userDetail.country = data.country//头像
|
state.userDetail.country = data.country//头像
|
||||||
state.userDetail.occupation = data.occupation//头像
|
state.userDetail.occupation = data.occupation//头像
|
||||||
state.userDetail.organizationId = data.organizationId //所属组织
|
|
||||||
state.userDetail.usernameModify = data.usernameModify//当月剩余修改次数
|
state.userDetail.usernameModify = data.usernameModify//当月剩余修改次数
|
||||||
state.userDetail.isBeginner = data.isBeginner == 1 ? true : false;//是否完成新手指引
|
state.userDetail.isBeginner = data.isBeginner == 1 ? true : false;//是否完成新手指引
|
||||||
state.userDetail.title = data.title//当月剩余修改次数
|
state.userDetail.title = data.title//当月剩余修改次数
|
||||||
@@ -320,7 +315,6 @@ const userHabit : Module<UserHabit,RootState> = {
|
|||||||
state.userDetail.status = data.status//当前订阅类型
|
state.userDetail.status = data.status//当前订阅类型
|
||||||
// state.userDetail.status = data.status || 'active'//当前订阅类型
|
// state.userDetail.status = data.status || 'active'//当前订阅类型
|
||||||
state.userDetail.subscriptionId = data.subscriptionId//最新订阅id
|
state.userDetail.subscriptionId = data.subscriptionId//最新订阅id
|
||||||
state.userDetail.subscriptionPlanId = data.subscriptionPlanId//最新订阅计划id
|
|
||||||
},
|
},
|
||||||
setUpgradePlan(state,data){
|
setUpgradePlan(state,data){
|
||||||
state.upgradePlan.value = data
|
state.upgradePlan.value = data
|
||||||
|
|||||||
@@ -177,12 +177,6 @@ const all = (t)=>{
|
|||||||
route:'/administrator/organization',
|
route:'/administrator/organization',
|
||||||
key:'sub13',
|
key:'sub13',
|
||||||
isShow:true,
|
isShow:true,
|
||||||
},{
|
|
||||||
name:'Subscription Plan',
|
|
||||||
icon:'usetime',
|
|
||||||
route:'/administrator/subscriptionPlan',
|
|
||||||
key:'sub14',
|
|
||||||
isShow:true,
|
|
||||||
}]
|
}]
|
||||||
}
|
}
|
||||||
const schoolOrEnterprise = (t) =>{
|
const schoolOrEnterprise = (t) =>{
|
||||||
|
|||||||
@@ -130,384 +130,377 @@ axios.interceptors.response.use((res) =>{
|
|||||||
return Promise.reject(data_new);
|
return Promise.reject(data_new);
|
||||||
});
|
});
|
||||||
export const Https = {
|
export const Https = {
|
||||||
httpUrls: {
|
httpUrls: {
|
||||||
interfaceUrl: '',
|
interfaceUrl: '',
|
||||||
parseGoogleCredential: '/api/third/party/parseGoogleCredential', //谷歌登录注册
|
parseGoogleCredential:'/api/third/party/parseGoogleCredential',//谷歌登录注册
|
||||||
parseWeChatCode: '/api/third/party/parseWeChatCode', //微信登录
|
parseWeChatCode:'/api/third/party/parseWeChatCode',//微信登录
|
||||||
accountIsLogin: '/api/account/isLogin', //判断用户是否登录
|
accountIsLogin:'/api/account/isLogin', //判断用户是否登录
|
||||||
accountLogin: `/api/account/login`, //账号密码登录接口
|
accountLogin:`/api/account/login`, //账号密码登录接口
|
||||||
organizationNameSearch: `/api/account/organizationNameSearch`, //查询学校或者企业版名字
|
organizationNameSearch:`/api/account/organizationNameSearch`, //查询学校或者企业版名字
|
||||||
getUserLanguage: `/api/account/getUserLanguage`, //获取当前用户语言
|
getUserLanguage:`/api/account/getUserLanguage`, //获取当前用户语言
|
||||||
changeUserLanguage: `/api/account/changeUserLanguage`, //切换用户当前语言
|
changeUserLanguage:`/api/account/changeUserLanguage`, //切换用户当前语言
|
||||||
uploadAvatar: `/api/account/uploadAvatar`, //修改头像
|
uploadAvatar:`/api/account/uploadAvatar`, //修改头像
|
||||||
editUserName: `/api/account/editUserName`, //修改用户名
|
editUserName:`/api/account/editUserName`, //修改用户名
|
||||||
updateUserInfo: `/api/account/updateUserInfo`, //修改国家职业
|
updateUserInfo:`/api/account/updateUserInfo`, //修改国家职业
|
||||||
accountDetail: `/api/account/getAccountDetail`, //用户详细信息
|
accountDetail:`/api/account/getAccountDetail`, //用户详细信息
|
||||||
|
|
||||||
trialUserLogout: `/api/account/trialUserLogout`, //试用用户退出登录接口
|
trialUserLogout:`/api/account/trialUserLogout`, //试用用户退出登录接口
|
||||||
completeGuidancet: `/api/account/completeGuidance`, //用户指引结束
|
completeGuidancet:`/api/account/completeGuidance`, //用户指引结束
|
||||||
|
|
||||||
getExpiredTime: `/api/account/getExpiredTime`, //获取用户到期时间
|
getExpiredTime:`/api/account/getExpiredTime`, //获取用户到期时间
|
||||||
|
|
||||||
addNoLoginRequired: `/api/third/party/addNoLoginRequired`, //机房用户注册
|
addNoLoginRequired:`/api/third/party/addNoLoginRequired`, //机房用户注册
|
||||||
deleteNoLoginRequired: `/api/third/party/deleteNoLoginRequired`, //机房用户注销
|
deleteNoLoginRequired:`/api/third/party/deleteNoLoginRequired`, //机房用户注销
|
||||||
noLoginRequired: `api/account/noLoginRequired`, //机房用户登录
|
noLoginRequired:`api/account/noLoginRequired`, //机房用户登录
|
||||||
existNoLoginRequired: `/api/third/party/existNoLoginRequired`, //获取唯一标识是否存在
|
existNoLoginRequired:`/api/third/party/existNoLoginRequired`, //获取唯一标识是否存在
|
||||||
|
|
||||||
deleteNoLoginRequiredNew: `/api/third/party/deleteNoLoginRequiredNew`, //机房用户注销
|
deleteNoLoginRequiredNew:`/api/third/party/deleteNoLoginRequiredNew`, //机房用户注销
|
||||||
addNoLoginRequiredNew: `api/third/party/addNoLoginRequiredNew`, //机房用户注册
|
addNoLoginRequiredNew:`api/third/party/addNoLoginRequiredNew`, //机房用户注册
|
||||||
updateNoLoginRequiredNew: `api/third/party/updateNoLoginRequiredNew`, //机房用户更新
|
updateNoLoginRequiredNew:`api/third/party/updateNoLoginRequiredNew`, //机房用户更新
|
||||||
|
|
||||||
|
endpoint:`api/third/party/your-secured-endpoint`, //获取唯一标识是否存在
|
||||||
|
|
||||||
|
|
||||||
endpoint: `api/third/party/your-secured-endpoint`, //获取唯一标识是否存在
|
designWorksRegister:'/api/account/designWorksRegister', //注册
|
||||||
|
designWorksRegisterCode:'/api/account/designWorksRegisterCode', //注册
|
||||||
|
|
||||||
|
|
||||||
designWorksRegister: '/api/account/designWorksRegister', //注册
|
preLogin:'/api/account/preLogin',//预先登入
|
||||||
designWorksRegisterCode: '/api/account/designWorksRegisterCode', //注册
|
schoolLogin:'/api/account/schoolLogin',//学校管理员登录
|
||||||
|
enterpriseLogin:'/api/account/enterpriseLogin',//企业管理员登录
|
||||||
|
accountSendEmail:`/api/account/sendEmail`, //发送邮件
|
||||||
|
accountResetPwd:'/api/account/resetPwd', //忘记密码修改
|
||||||
|
accountLogout:'/api/account/logout',//登出
|
||||||
|
accountBindEmail:'/api/account/bindEmail', //绑定邮箱
|
||||||
|
bindGoogle:'/api/account/bindGoogle', //绑定谷歌
|
||||||
|
bindWeChat:'/api/account/bindWeChat', //绑定微信
|
||||||
|
unbindGoogle:`/api/account/unbindGoogle`, //取消绑定谷歌
|
||||||
|
unbindWeChat:'/api/account/unbindWeChat', //取消绑定微信
|
||||||
|
elementGeneratePrint:'/api/element/generatePrint', //生成印花
|
||||||
|
elementSavePrint:'/api/element/savePrint',//保存印花
|
||||||
|
getRgbByTcx:'/api/element/getRgbByTcx', // 通过hsv值获取潘通信息
|
||||||
|
getRgbByHsv:'/api/element/getRgbByHsv', //通过hsv值获取潘通信息
|
||||||
|
elementDelete:'/api/element/delete', //删除上传的图片
|
||||||
|
designCollection:`/api/design/designCollection`, //设计 Conllection
|
||||||
|
reDesignCollection:`/api/design/reDesignCollection`,//重新设计 Conllection
|
||||||
|
countDesignProcess:'/api/design/countDesignProcess', //统计design进度
|
||||||
|
getDesignResult:'/api/design/getDesignResult', //查询design结果
|
||||||
|
designSort:`/api/design/sort`, //design排序
|
||||||
|
collectionLikeUpdate:`/api/history/collectionLikeUpdate`, //赋值排序
|
||||||
|
|
||||||
preLogin: '/api/account/preLogin', //预先登入
|
designProcess:`/api/design/designProcess`, //统计design进度
|
||||||
schoolLogin: '/api/account/schoolLogin', //学校管理员登录
|
designGetModel:`/api/design/getModel`, //导出获取模特链接
|
||||||
enterpriseLogin: '/api/account/enterpriseLogin', //企业管理员登录
|
|
||||||
accountSendEmail: `/api/account/sendEmail`, //发送邮件
|
|
||||||
accountResetPwd: '/api/account/resetPwd', //忘记密码修改
|
|
||||||
accountLogout: '/api/account/logout', //登出
|
|
||||||
accountBindEmail: '/api/account/bindEmail', //绑定邮箱
|
|
||||||
bindGoogle: '/api/account/bindGoogle', //绑定谷歌
|
|
||||||
bindWeChat: '/api/account/bindWeChat', //绑定微信
|
|
||||||
unbindGoogle: `/api/account/unbindGoogle`, //取消绑定谷歌
|
|
||||||
unbindWeChat: '/api/account/unbindWeChat', //取消绑定微信
|
|
||||||
elementGeneratePrint: '/api/element/generatePrint', //生成印花
|
|
||||||
elementSavePrint: '/api/element/savePrint', //保存印花
|
|
||||||
getRgbByTcx: '/api/element/getRgbByTcx', // 通过hsv值获取潘通信息
|
|
||||||
getRgbByHsv: '/api/element/getRgbByHsv', //通过hsv值获取潘通信息
|
|
||||||
elementDelete: '/api/element/delete', //删除上传的图片
|
|
||||||
designCollection: `/api/design/designCollection`, //设计 Conllection
|
|
||||||
reDesignCollection: `/api/design/reDesignCollection`, //重新设计 Conllection
|
|
||||||
countDesignProcess: '/api/design/countDesignProcess', //统计design进度
|
|
||||||
getDesignResult: '/api/design/getDesignResult', //查询design结果
|
|
||||||
designSort: `/api/design/sort`, //design排序
|
|
||||||
collectionLikeUpdate: `/api/history/collectionLikeUpdate`, //赋值排序
|
|
||||||
|
|
||||||
designProcess: `/api/design/designProcess`, //统计design进度
|
//充值相关
|
||||||
designGetModel: `/api/design/getModel`, //导出获取模特链接
|
productList:`/api/product/list`, //获取商品列表
|
||||||
|
payAlipay:`/api/ali-pay/trade/page/pay`, //支付宝确认支付
|
||||||
|
payAlipayHK:`/api/alipay-hk/createOrder`, //香港支付宝确认支付
|
||||||
|
payStripe:`/api/stripe/createOrder`, //Stripe支付
|
||||||
|
payPaypal:`/api/paypal/trade`, //paypal确认支付
|
||||||
|
getCredits:`/api/credits/getCredits`, //查询用户积分
|
||||||
|
|
||||||
//充值相关
|
cancelSubscription:`/api/stripe/cancelSubscription`, //取消订阅
|
||||||
productList: `/api/product/list`, //获取商品列表
|
|
||||||
payAlipay: `/api/ali-pay/trade/page/pay`, //支付宝确认支付
|
orderInfoList:`/api/order-info/list`, //查询订单列表
|
||||||
payAlipayHK: `/api/alipay-hk/createOrder`, //香港支付宝确认支付
|
getCreditsDetail:`/api/credits/getCreditsDetail`, //查询积分列表
|
||||||
payStripe: `/api/stripe/createOrder`, //Stripe支付
|
tradeRefundAlipay:`/api/ali-pay/trade/refund`, //支付宝退款
|
||||||
payPaypal: `/api/paypal/trade`, //paypal确认支付
|
tradeRefundPaypal:`/api/paypal/trade/refund`, //paypal退款
|
||||||
getCredits: `/api/credits/getCredits`, //查询用户积分
|
|
||||||
|
|
||||||
cancelSubscription: `/api/stripe/cancelSubscription`, //取消订阅
|
tradeQuery:`/api/ali-pay/trade/query/{orderNo}`, //查询订单状态
|
||||||
|
|
||||||
|
getRgbByHsvBatch:`/api/element/getRgbByHsvBatch`, //通过hsv值数组批量获取潘通信息
|
||||||
|
designLike:`/api/design/like`, //Design Like
|
||||||
|
designDislike: `/api/design/dislike`, //Design Dislike
|
||||||
|
queryUserGroup:`/api/history/queryUserGroup`, //History用户分页分组列表
|
||||||
|
deleteUserGroup:`/api/history/deleteUserGroup`, //History删除用户分组
|
||||||
|
updateUserGroupName:`/api/history/updateUserGroupName`, //History修改用户分组名
|
||||||
|
projectSaveOrUpdate:`/api/project/saveOrUpdate`, //History修改用户分组名
|
||||||
|
historyChoose:`/api/history/choose`, //History choose
|
||||||
|
getDesignDetail:`/api/design/detail/getDetail`,//查询design详情
|
||||||
|
addSysSketchToLibrary:`/api/library/addSysSketchToLibrary`,//把系统衣服添加的library
|
||||||
|
designSingleWithGradient:`/api/design/detail/designSingleWithGradient`,//查询需要更新mask列表
|
||||||
|
getNextSysElement:'/api/design/detail/getNextSysElement',//切换系统的element
|
||||||
|
detailPrintDot:'/api/design/detail/printDot',//print打点预览
|
||||||
|
designSingle:`/api/design/detail/designSingle`,//单个design
|
||||||
|
queryLibraryPage:`/api/library/queryLibraryPage`,//Library分页列表
|
||||||
|
libraryUpload:`/api/library/upload`, // Library文件上传
|
||||||
|
setSketchLibrary:`/api/library/updateLibraryLevel2Type`, // 修改图片类型
|
||||||
|
updateElementLevel2Type:`/api/element/updateElementLevel2Type`, // 修改拼贴上传的衣服类型
|
||||||
|
|
||||||
|
queryClassification:`/api/classification/queryClassification`,//标签类别查询
|
||||||
|
classificationSaveOrUpdate:`/api/classification/saveOrUpdate`,//标签类别新增修改
|
||||||
|
classificationDelete:`/api/classification/delete`,//标签类别新增修改
|
||||||
|
relationLibrary:`/api/classification/relationLibrary`,//标签类别新增修改
|
||||||
|
getRelClassificationIdList:`/api/classification/getRelClassificationIdList`,//标签类别新增修改
|
||||||
|
getRelPublicClassificationIdList:`/api/classification/getRelPublicClassificationIdList`,//多选获取公共标签
|
||||||
|
editRelPublicClassificationIdList:`/api/classification/editRelPublicClassificationIdList`,//多选修改公共标签
|
||||||
|
|
||||||
|
//模块化
|
||||||
|
llmStream:`/api/llm/streamNew`,//聊天
|
||||||
|
// llmStream:`/api/llm/stream`,//聊天
|
||||||
|
chatCreateProject:`/api/llm/chatCreateProject`,//聊天创建项目
|
||||||
|
getChatHistory:`/api/llm/getChatHistory`,//获取聊天历史记录
|
||||||
|
llmUploadFile:`/api/llm/uploadFile`,//聊天上传文件
|
||||||
|
|
||||||
|
saveOrUpdate:`/api/project/saveOrUpdate`,//模块化新增修改
|
||||||
|
getModuleContent:`/api/project/getModuleContent`,//获取模块内容
|
||||||
|
saveModuleContent:`/api/project/saveModuleContent`,//储存模块内容
|
||||||
|
historyProject:`/api/project/page`,//项目记录
|
||||||
|
projectDetail:`/api/project/delete`,//删除项目
|
||||||
|
//3d
|
||||||
|
threeDPage:`/api/project/threeDPage`,
|
||||||
|
downloadZip:`/api/project/downloadZip`,//下载zip
|
||||||
|
getThreeDSize:`/api/project/getThreeDSize`,//下载列表
|
||||||
|
getLayoutDetail:`/api/project/getLayoutDetail`,//获取3d详情
|
||||||
|
getThreeDGlb:`/api/project/getThreeDGlb`,
|
||||||
|
selectHistoryProject:`/api/project/choose`,//选择项目
|
||||||
|
getMannequinDetail:`/api/project/getMannequinDetail`,//模块化查看模特点位
|
||||||
|
modifyProportion:`/api/generate/modifyProportion`,//模特拉伸
|
||||||
|
addSysModelToLib:`/api/library/addSysModelToLib`,
|
||||||
|
poselikeOrDisike:`/api/generate/likeOrDislike`,//postTransform like
|
||||||
|
getAllPose:`/api/generate/getAllPose`,//获取动作
|
||||||
|
|
||||||
|
|
||||||
orderInfoList: `/api/order-info/list`, //查询订单列表
|
|
||||||
getCreditsDetail: `/api/credits/getCreditsDetail`, //查询积分列表
|
//拼贴
|
||||||
tradeRefundAlipay: `/api/ali-pay/trade/refund`, //支付宝退款
|
genSketchRecon:`/api/generate/genSketchRecon`,
|
||||||
tradeRefundPaypal: `/api/paypal/trade/refund`, //paypal退款
|
saveReconCanvas:`/api/generate/saveReconCanvas`,
|
||||||
|
|
||||||
|
//动作变换
|
||||||
|
poseTransform:`/api/generate/poseTransform`,
|
||||||
|
poseTransformResult:`/api/generate/poseTransformResult`,
|
||||||
|
|
||||||
|
batchUpdateLibraryName:'/api/library/batchUpdateLibraryName',//Library修改用户文件名
|
||||||
|
batchDeleteLibrary:'/api/library/batchDeleteLibrary',//删除library
|
||||||
|
queryLibraryTopAndBottomPage:'/api/library/queryLibraryTopAndBottomPage',//Library分页列表(查询top和bottom)
|
||||||
|
saveOrEditTemplatePoint:'/api/library/saveOrEditTemplatePoint',//保存或者编辑template打点
|
||||||
|
libraryModelsDot:'/api/library/modelsDot',//Models打点预览
|
||||||
|
chatStreamTest:`/api/python/chatStream`,//机器人助力
|
||||||
|
pictureLikeOrUnLike:`/api/python/pictureLikeOrUnLike`,//机器人生成图喜欢
|
||||||
|
getBloodBars:`/api/python/getBloodBars`,//机器人血条
|
||||||
|
//工作空间
|
||||||
|
workspaceDetail:`/api/workspace/detail`,//用户习惯详情
|
||||||
|
workspaceenumValues:`/api/workspace/enumValues`,//getSex
|
||||||
|
|
||||||
|
workspaceRemove:`/api/workspace/remove`,//删除用户习惯详情
|
||||||
|
workspacesaveOrUpdate:`/api/workspace/saveOrUpdate`,//修改用户习惯详情
|
||||||
|
getMannequins:`/api/workspace/getMannequins`,//模特
|
||||||
|
getStyleList:`/api/workspace/styleList`,//获取所有风格列表
|
||||||
|
|
||||||
|
workspaceList:`/api/workspace/list`,
|
||||||
|
sketchAndPrintGenerate:'/api/generate/sketchAndPrint',//sketchGenerate生成图片
|
||||||
|
|
||||||
tradeQuery: `/api/ali-pay/trade/query/{orderNo}`, //查询订单状态
|
generatePrepare:'/api/generate/prepare',//开始生成generate图片
|
||||||
|
generateStopWaiting:'/api/generate/stopWaiting',//取消生成
|
||||||
|
generateResult:'/api/generate/result',//获取生成结果
|
||||||
|
generateLike:'/api/generate/like',//喜欢ganerate图片
|
||||||
|
generateDislike:'/api/generate/dislike',//喜欢ganerate图片
|
||||||
|
imageToSketch:'/api/generate/imageToSketch',//成品图转为线稿
|
||||||
|
modifySketch:'/api/generate/modifySketch',//修改画布内容并且储存
|
||||||
|
|
||||||
getRgbByHsvBatch: `/api/element/getRgbByHsvBatch`, //通过hsv值数组批量获取潘通信息
|
elementUpload:`/api/element/upload`,//上传图片
|
||||||
designLike: `/api/design/like`, //Design Like
|
imageSegmentation:`/api/element/imageSegmentation`,//分割衣服
|
||||||
designDislike: `/api/design/dislike`, //Design Dislike
|
convertRelightElement:`/api/history/convertRelightElement`,//toproduct复制到上传图片位置
|
||||||
queryUserGroup: `/api/history/queryUserGroup`, //History用户分页分组列表
|
|
||||||
deleteUserGroup: `/api/history/deleteUserGroup`, //History删除用户分组
|
|
||||||
updateUserGroupName: `/api/history/updateUserGroupName`, //History修改用户分组名
|
|
||||||
projectSaveOrUpdate: `/api/project/saveOrUpdate`, //History修改用户分组名
|
|
||||||
historyChoose: `/api/history/choose`, //History choose
|
|
||||||
getDesignDetail: `/api/design/detail/getDetail`, //查询design详情
|
|
||||||
addSysSketchToLibrary: `/api/library/addSysSketchToLibrary`, //把系统衣服添加的library
|
|
||||||
designSingleWithGradient: `/api/design/detail/designSingleWithGradient`, //查询需要更新mask列表
|
|
||||||
getNextSysElement: '/api/design/detail/getNextSysElement', //切换系统的element
|
|
||||||
detailPrintDot: '/api/design/detail/printDot', //print打点预览
|
|
||||||
designSingle: `/api/design/detail/designSingle`, //单个design
|
|
||||||
queryLibraryPage: `/api/library/queryLibraryPage`, //Library分页列表
|
|
||||||
libraryUpload: `/api/library/upload`, // Library文件上传
|
|
||||||
setSketchLibrary: `/api/library/updateLibraryLevel2Type`, // 修改图片类型
|
|
||||||
updateElementLevel2Type: `/api/element/updateElementLevel2Type`, // 修改拼贴上传的衣服类型
|
|
||||||
|
|
||||||
queryClassification: `/api/classification/queryClassification`, //标签类别查询
|
// oldHis:`/oldHis/history/queryUserGroup`,//上传图片
|
||||||
classificationSaveOrUpdate: `/api/classification/saveOrUpdate`, //标签类别新增修改
|
sketchBoardsBoundingBox:`/api/design/sketchBoardsBoundingBox`,//裁剪sketch图片
|
||||||
classificationDelete: `/api/classification/delete`, //标签类别新增修改
|
|
||||||
relationLibrary: `/api/classification/relationLibrary`, //标签类别新增修改
|
|
||||||
getRelClassificationIdList: `/api/classification/getRelClassificationIdList`, //标签类别新增修改
|
|
||||||
getRelPublicClassificationIdList: `/api/classification/getRelPublicClassificationIdList`, //多选获取公共标签
|
|
||||||
editRelPublicClassificationIdList: `/api/classification/editRelPublicClassificationIdList`, //多选修改公共标签
|
|
||||||
|
|
||||||
//模块化
|
trialOrderList:`/api/account/trialOrderList`,//获取审批列表
|
||||||
llmStream: `/api/llm/streamNew`, //聊天
|
switchIsAutoApproval:`/api/account/switchIsAutoApproval`,//切换是否自动审批
|
||||||
// llmStream:`/api/llm/stream`,//聊天
|
getIsAutoApproval:`/api/account/getIsAutoApproval`,//获取是否自动审批
|
||||||
chatCreateProject: `/api/llm/chatCreateProject`, //聊天创建项目
|
trialOrderApproval:`/api/account/trialOrderApproval`,//通过审批
|
||||||
getChatHistory: `/api/llm/getChatHistory`, //获取聊天历史记录
|
trialOrderRefuse:`/api/account/trialOrderRefuse`,//拒绝审批
|
||||||
llmUploadFile: `/api/llm/uploadFile`, //聊天上传文件
|
|
||||||
|
//管理员接口
|
||||||
|
//查询所有试用用户
|
||||||
|
inquiryGetTrial:`/api/inquiry/getTrial`,//查询所有试用用户
|
||||||
|
getCities:`/api/inquiry/getCities`,//获取所有付款订单使用的国家
|
||||||
|
getUserInfo:`/api/inquiry/getUserInfo`,//查询所有用户
|
||||||
|
queryTransaction:`/api/inquiry/queryTransaction`,//查询交易记录
|
||||||
|
queryTransactionDownload:`/api/inquiry/queryTransaction/download`,//导出交易记录
|
||||||
|
createCoupon:`/api/stripe/createCoupon`,//创建优惠码
|
||||||
|
updatePromCodeInfo:`/api/stripe/updatePromCodeInfo`,//修改优惠码
|
||||||
|
getAllCoupons:`/api/stripe/getAllCoupons`,//查询优惠码列表
|
||||||
|
checkCoupon:`/api/stripe/checkCoupon`,//根据优惠码获取结算后的金额
|
||||||
|
deletePromCode:`/api/stripe/deletePromCode`,//删除优惠券
|
||||||
|
addOrganization:`/api/inquiry/addOrganization`,//添加企业版或者教育版
|
||||||
|
queryOrganization:`/api/inquiry/queryOrganization`,//查询企业版或者教育版
|
||||||
|
|
||||||
|
|
||||||
saveOrUpdate: `/api/project/saveOrUpdate`, //模块化新增修改
|
//云生成
|
||||||
getModuleContent: `/api/project/getModuleContent`, //获取模块内容
|
designCloud:`/api/design/designCloud`,//创建云生成
|
||||||
saveModuleContent: `/api/project/saveModuleContent`, //储存模块内容
|
cloudPage:`/api/design/cloudPage`,//创建云生成
|
||||||
historyProject: `/api/project/page`, //项目记录
|
cloudTaskDelete:`/api/design/cloudTaskDelete`,//删除云生成
|
||||||
projectDetail: `/api/project/delete`, //删除项目
|
cloudTaskNameUpdate:`/api/design/cloudTaskNameUpdate`,//修改云生成名字
|
||||||
//3d
|
getDesignCloudResult:`/api/design/getDesignCloudResult`,//查询这条云生成记录的所有内容
|
||||||
threeDPage: `/api/project/threeDPage`,
|
|
||||||
downloadZip: `/api/project/downloadZip`, //下载zip
|
|
||||||
getThreeDSize: `/api/project/getThreeDSize`, //下载列表
|
|
||||||
getLayoutDetail: `/api/project/getLayoutDetail`, //获取3d详情
|
|
||||||
getThreeDGlb: `/api/project/getThreeDGlb`,
|
|
||||||
selectHistoryProject: `/api/project/choose`, //选择项目
|
|
||||||
getMannequinDetail: `/api/project/getMannequinDetail`, //模块化查看模特点位
|
|
||||||
modifyProportion: `/api/generate/modifyProportion`, //模特拉伸
|
|
||||||
addSysModelToLib: `/api/library/addSysModelToLib`,
|
|
||||||
poselikeOrDisike: `/api/generate/likeOrDislike`, //postTransform like
|
|
||||||
getAllPose: `/api/generate/getAllPose`, //获取动作
|
|
||||||
|
|
||||||
//拼贴
|
//企业版教育版管理员页面
|
||||||
genSketchRecon: `/api/generate/genSketchRecon`,
|
subAccountList:`/api/account/subAccountList`,//查询子账号
|
||||||
saveReconCanvas: `/api/generate/saveReconCanvas`,
|
addOrUpdateSubAccount:`/api/account/addOrUpdateSubAccount`,//添加子账号
|
||||||
|
deleteSubAccount:`/api/account/deleteSubAccount`,//删除子账号
|
||||||
|
subAccountImportExcelDownload:`/api/account/subAccountImportExcelDownload`,//批量添加模板下载模板
|
||||||
|
exportAccountsToExcel:`/api/account/exportAccountsToExcel`,//教育版导出用户数据
|
||||||
|
getNextSequence:`/api/project/getNextSequence`,//批量添加模板下载模板
|
||||||
|
subAccountImport:`/api/account/subAccountImport`,//模板导入
|
||||||
|
getGenerateFrequency:`/api/inquiry/getGenerateFrequency`,//积分使用详情
|
||||||
|
getAllGenerateFuncName:`/api/inquiry/getAllGenerateFuncName`,//获取所有generate类型
|
||||||
|
|
||||||
//动作变换
|
//查询某个时间内design点击次数
|
||||||
poseTransform: `/api/generate/poseTransform`,
|
getDesignStatistic:`/api/inquiry/getDesignStatistic`,//拒绝审批
|
||||||
poseTransformResult: `/api/generate/poseTransformResult`,
|
getAllQuestionnaire:`/api/inquiry/getAllQuestionnaire`,//拒绝审批
|
||||||
|
getActiveUserFunc:`/api/inquiry/getActiveUserFunc`,//获取各模块功能
|
||||||
|
toProductImageElementDelete:`/api/history/toProductImageElementDelete`,//删除指定模块上传的内容
|
||||||
|
recentActiveUser:`/api/inquiry/recentActiveUser`,//获取近期活跃用户
|
||||||
|
recentActiveUserChart:`/api/inquiry/recentActiveUserChart`,//获取近期活跃用户图表数据
|
||||||
|
recentNewUser:`/api/inquiry/recentNewUser`,//获取近期新增用户
|
||||||
|
recentNewUserChart:`/api/inquiry/recentNewUserChart`,//获取新增用户图表
|
||||||
|
trialUserCountry:`/api/inquiry/trialUserCountry`,//试用用户国家-城市分布
|
||||||
|
conversionRate:`/api/inquiry/conversionRate`,//试用用户国家-城市分布
|
||||||
|
getAllUserId:`/api/inquiry/getAllUserId`,//获取所有用户id和Name
|
||||||
|
adminAddUser:`/api/inquiry/addUser`,//添加用户
|
||||||
|
modifyUser:`/api/inquiry/modifyUser`,//修改用户
|
||||||
|
publishSysMessage:`/api/message/publishSysMessage`,//发布系统任务
|
||||||
|
//affiliate接口
|
||||||
|
viewsIncrease:`/api/affiliate/viewsIncrease`,//增加访问量
|
||||||
|
affiliateRegistration:`/api/affiliate/registration`,//affiliate注册
|
||||||
|
personalCenter:`/api/affiliate/personalCenter`,//affiliate个人中心
|
||||||
|
affiliateList:`/api/affiliate/list`,//affiliate审批列表
|
||||||
|
updateCommission:`/api/affiliate/updateCommission`,//编辑佣金比例
|
||||||
|
editAffiliate:`/api/affiliate/editAffiliate`,//编辑affiliate
|
||||||
|
getEachAffiliateGeneratedRevenue:`/api/affiliate/getEachAffiliateGeneratedRevenue`,//affiliate每个用户根据日期查询收益
|
||||||
|
affiliateApproval:`/api/affiliate/approval`,//affiliate同意 审批
|
||||||
|
getPersonalMonthlyIncome:`/api/affiliate/getPersonalMonthlyIncome`,//affiliate图表接口
|
||||||
|
getReferrals:`/api/affiliate/getReferrals`,//affiliate Referral列表
|
||||||
|
editReferral:`/api/affiliate/editReferral`,//affiliate编辑referral
|
||||||
|
batchDeleteReferral:`/api/affiliate/batchDeleteReferral`,//affiliate删除referral
|
||||||
|
// batchDeleteReferral:`/api/affiliate/batchDeleteReferral`,//affiliate删除referral
|
||||||
|
|
||||||
|
getTasksList:`/api/tasks/getList`,//获取w为执行完的所有任务
|
||||||
|
getTasksHistory:`/api/tasks/getAllTask`,//获取所有任务列表
|
||||||
|
prepareForSR:`/api/python/prepareForSR`,//超分
|
||||||
|
|
||||||
|
|
||||||
batchUpdateLibraryName: '/api/library/batchUpdateLibraryName', //Library修改用户文件名
|
//作品广场
|
||||||
batchDeleteLibrary: '/api/library/batchDeleteLibrary', //删除library
|
publish:`/api/portfolio/publish`,//发布作品到作品广场
|
||||||
queryLibraryTopAndBottomPage: '/api/library/queryLibraryTopAndBottomPage', //Library分页列表(查询top和bottom)
|
getPorfolio:`/api/portfolio/page`,//查询作品广场
|
||||||
saveOrEditTemplatePoint: '/api/library/saveOrEditTemplatePoint', //保存或者编辑template打点
|
getPorfolioDetail:`/api/portfolio/detail`,//查询作品广场作品详情
|
||||||
libraryModelsDot: '/api/library/modelsDot', //Models打点预览
|
setPorfolioChoose:`/api/portfolio/choose`,//二次创作
|
||||||
chatStreamTest: `/api/python/chatStream`, //机器人助力
|
portfolioLike:`/api/portfolio/like`,//作品广场点赞
|
||||||
pictureLikeOrUnLike: `/api/python/pictureLikeOrUnLike`, //机器人生成图喜欢
|
portfolioNoLike:`/api/portfolio/unlike`,//作品广场取消点赞
|
||||||
getBloodBars: `/api/python/getBloodBars`, //机器人血条
|
portfolioComment:`/api/portfolio/comment`,//作品广场评论
|
||||||
//工作空间
|
portfolioCommentPage:`/api/portfolio/commentPage`,//作品广场评论列表
|
||||||
workspaceDetail: `/api/workspace/detail`, //用户习惯详情
|
commentDelete:`/api/portfolio/commentDelete`,//删除评论
|
||||||
workspaceenumValues: `/api/workspace/enumValues`, //getSex
|
porfolioDelete:`/api/portfolio/delete`,//删除作品
|
||||||
|
porfolioFollow:`/api/portfolio/follow`,//删除作品
|
||||||
|
porfolioFollow:`/api/portfolio/follow`,//关注
|
||||||
|
porfolioCancelFollow:`/api/portfolio/cancelFollow`,//取消关注
|
||||||
|
porfolioGetFolloweeList:`/api/portfolio/getFolloweeList`,//获取关注列表
|
||||||
|
porfolioGetFollowerList:`/api/portfolio/getFollowerList`,//获取粉丝列表
|
||||||
|
|
||||||
|
//product生成
|
||||||
|
toProduct:`/api/history/toProduct`,//开始生成
|
||||||
|
toProductImageResult:`/api/history/toProductImageResult`,//获取结果
|
||||||
|
toProductImageElementUpload:`/api/history/toProductImageElementUpload`,//上传
|
||||||
|
historyDeleteResult:`/api/history/deleteResult`,//relight toproduct删除
|
||||||
|
generateDeleteResult:`/api/generate/deleteResult`,//pose删除
|
||||||
|
|
||||||
|
productImageLike:`/api/history/productImageLike`,//like生成结果
|
||||||
|
productImageUnLike:`/api/history/productImageUnLike`,//取消like生成结果
|
||||||
|
productImageLikeList:`/api/history/productImageLikeList`,//like生成结果
|
||||||
|
|
||||||
|
//打光
|
||||||
|
relight:`/api/history/relight`,//开始生成
|
||||||
|
relightResult:`/api/history/relightResult`,//开始生成
|
||||||
|
|
||||||
|
//保存画布
|
||||||
|
canvasElementUpload:`/api/history/canvasElementUpload`,//画布上传临时图片
|
||||||
|
exportSave:`/api/history/exportSave`,//保存画布
|
||||||
|
exportSearch:`/api/history/exportSearch`,//保存画布
|
||||||
|
|
||||||
workspaceRemove: `/api/workspace/remove`, //删除用户习惯详情
|
//活动
|
||||||
workspacesaveOrUpdate: `/api/workspace/saveOrUpdate`, //修改用户习惯详情
|
activity:`/api/account/activity`,
|
||||||
getMannequins: `/api/workspace/getMannequins`, //模特
|
|
||||||
getStyleList: `/api/workspace/styleList`, //获取所有风格列表
|
|
||||||
|
|
||||||
workspaceList: `/api/workspace/list`,
|
//bradDNA
|
||||||
sketchAndPrintGenerate: '/api/generate/sketchAndPrint', //sketchGenerate生成图片
|
brandLogoUpload:`/api/history/brandLogoUpload`,//上传bradDNA
|
||||||
|
brandDNAGenerate:`/api/history/brandDNAGenerate`,//上传bradDNA
|
||||||
|
brandDNAUpload:`/api/history/brandDNAUpload`,//上传DNA图片
|
||||||
|
getInitializeProgress:`/api/history/getInitializeProgress`,//获取brand进度
|
||||||
|
brandDNADelete:`/api/history/brandDNADelete`,//删除brandDna
|
||||||
|
|
||||||
|
brandDNAPage:`/api/history/brandDNAPage`,//brand列表
|
||||||
|
brandDNASaveOrUpdate:`/api/history/brandDNASaveOrUpdate`,//提交个人信息
|
||||||
|
productImageInitialize:`/api/history/productImageInitialize`,//产品识别
|
||||||
|
//调查问卷
|
||||||
|
questionnaire:`/api/account/questionnaire`,//保存画布
|
||||||
|
|
||||||
generatePrepare: '/api/generate/prepare', //开始生成generate图片
|
//消息系统
|
||||||
generateStopWaiting: '/api/generate/stopWaiting', //取消生成
|
getUnreadCount:`/api/message/getUnreadCount`,//获取未读消息
|
||||||
generateResult: '/api/generate/result', //获取生成结果
|
setReadStatus:`/api/message/setReadStatus`,//设置消息已读
|
||||||
generateLike: '/api/generate/like', //喜欢ganerate图片
|
getHistoryNotification:`/api/message/getHistoryNotification`,//获取历史消息
|
||||||
generateDislike: '/api/generate/dislike', //喜欢ganerate图片
|
oneClickRead:`/api/message/oneClickRead`,//全部设为已读
|
||||||
imageToSketch: '/api/generate/imageToSketch', //成品图转为线稿
|
personalHomepage:`/api/account/personalHomepage`,//获取个人主页信息
|
||||||
modifySketch: '/api/generate/modifySketch', //修改画布内容并且储存
|
refreshMinioUrl:`/api/third/party/refreshMinioUrl`,//获取可以使用的minio地址
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
elementUpload: `/api/element/upload`, //上传图片
|
axiosGet(url,config) {
|
||||||
imageSegmentation: `/api/element/imageSegmentation`, //分割衣服
|
return new Promise((resolve, reject) => {
|
||||||
convertRelightElement: `/api/history/convertRelightElement`, //toproduct复制到上传图片位置
|
if(isLoginTime && url != '/api/portfolio/page') {
|
||||||
|
resolve('')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
axios.get(url,config).then(response => {
|
||||||
|
resolve(response)
|
||||||
|
}).catch((error) => {
|
||||||
|
reject(error)
|
||||||
|
})
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
// oldHis:`/oldHis/history/queryUserGroup`,//上传图片
|
axiosPut(url, data) {
|
||||||
sketchBoardsBoundingBox: `/api/design/sketchBoardsBoundingBox`, //裁剪sketch图片
|
return new Promise((resolve, reject) => {
|
||||||
|
if(isLoginTime && url != '/api/portfolio/page') {
|
||||||
|
resolve('')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
axios.put(url, data).then(response => {
|
||||||
|
resolve(response)
|
||||||
|
}).catch((error) => {
|
||||||
|
reject(error)
|
||||||
|
})
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
trialOrderList: `/api/account/trialOrderList`, //获取审批列表
|
axiosPost(url, data,config) {
|
||||||
switchIsAutoApproval: `/api/account/switchIsAutoApproval`, //切换是否自动审批
|
return new Promise((resolve, reject) => {
|
||||||
getIsAutoApproval: `/api/account/getIsAutoApproval`, //获取是否自动审批
|
if(isLoginTime && url != '/api/portfolio/page') {
|
||||||
trialOrderApproval: `/api/account/trialOrderApproval`, //通过审批
|
resolve('')
|
||||||
trialOrderRefuse: `/api/account/trialOrderRefuse`, //拒绝审批
|
return
|
||||||
|
}
|
||||||
|
axios.post(url, data,config).then(response => {
|
||||||
|
resolve(response)
|
||||||
|
}).catch((error) => {
|
||||||
|
reject(error)
|
||||||
|
})
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
//管理员接口
|
axiosDelete(url, newData) {
|
||||||
//查询所有试用用户
|
return new Promise((resolve, reject) => {
|
||||||
inquiryGetTrial: `/api/inquiry/getTrial`, //查询所有试用用户
|
if(isLoginTime && url != '/api/portfolio/page') {
|
||||||
getCities: `/api/inquiry/getCities`, //获取所有付款订单使用的国家
|
resolve('')
|
||||||
getUserInfo: `/api/inquiry/getUserInfo`, //查询所有用户
|
return
|
||||||
queryTransaction: `/api/inquiry/queryTransaction`, //查询交易记录
|
}
|
||||||
queryTransactionDownload: `/api/inquiry/queryTransaction/download`, //导出交易记录
|
axios.delete(url,{data:newData}).then(response => {
|
||||||
createCoupon: `/api/stripe/createCoupon`, //创建优惠码
|
resolve(response)
|
||||||
updatePromCodeInfo: `/api/stripe/updatePromCodeInfo`, //修改优惠码
|
}).catch((error) => {
|
||||||
getAllCoupons: `/api/stripe/getAllCoupons`, //查询优惠码列表
|
reject(error)
|
||||||
checkCoupon: `/api/stripe/checkCoupon`, //根据优惠码获取结算后的金额
|
})
|
||||||
deletePromCode: `/api/stripe/deletePromCode`, //删除优惠券
|
});
|
||||||
addOrganization: `/api/inquiry/addOrganization`, //添加企业版或者教育版
|
},
|
||||||
queryOrganization: `/api/inquiry/queryOrganization`, //查询企业版或者教育版
|
|
||||||
createSubscribePlan: '/api/subscription_plan/createPlan', // 创建订阅计划
|
|
||||||
deleteSubscribePlan: '/api/subscription_plan/deletePlan', // 删除订阅计划
|
|
||||||
updateSubscribePlan: '/api/subscription_plan/updatePlan', // 修改订阅计划
|
|
||||||
searchAllSubscribePlan: '/api/subscription_plan/searchByPage', // 分页查询所有订阅计划
|
|
||||||
searchSubscribeByOrg: '/api/subscription_plan/searchByOrganizationIdAndStatus', // 不分页查询
|
|
||||||
switchSubscribePlan: '/api/subscription_plan/switchSubscriptionPlan', // 切换管理员订阅计划
|
|
||||||
switchSubAccountSubscribePlan: '/api/subscription_plan/switchSubAccSubscriptionPlan', // 切换子账号订阅计划
|
|
||||||
|
|
||||||
//云生成
|
|
||||||
designCloud: `/api/design/designCloud`, //创建云生成
|
|
||||||
cloudPage: `/api/design/cloudPage`, //创建云生成
|
|
||||||
cloudTaskDelete: `/api/design/cloudTaskDelete`, //删除云生成
|
|
||||||
cloudTaskNameUpdate: `/api/design/cloudTaskNameUpdate`, //修改云生成名字
|
|
||||||
getDesignCloudResult: `/api/design/getDesignCloudResult`, //查询这条云生成记录的所有内容
|
|
||||||
|
|
||||||
//企业版教育版管理员页面
|
|
||||||
subAccountList: `/api/account/subAccountList`, //查询子账号
|
|
||||||
addOrUpdateSubAccount: `/api/account/addOrUpdateSubAccount`, //添加子账号
|
|
||||||
deleteSubAccount: `/api/account/deleteSubAccount`, //删除子账号
|
|
||||||
subAccountImportExcelDownload: `/api/account/subAccountImportExcelDownload`, //批量添加模板下载模板
|
|
||||||
exportAccountsToExcel: `/api/account/exportAccountsToExcel`, //教育版导出用户数据
|
|
||||||
getNextSequence: `/api/project/getNextSequence`, //批量添加模板下载模板
|
|
||||||
subAccountImport: `/api/account/subAccountImport`, //模板导入
|
|
||||||
getGenerateFrequency: `/api/inquiry/getGenerateFrequency`, //积分使用详情
|
|
||||||
getAllGenerateFuncName: `/api/inquiry/getAllGenerateFuncName`, //获取所有generate类型
|
|
||||||
|
|
||||||
//查询某个时间内design点击次数
|
|
||||||
getDesignStatistic: `/api/inquiry/getDesignStatistic`, //拒绝审批
|
|
||||||
getAllQuestionnaire: `/api/inquiry/getAllQuestionnaire`, //拒绝审批
|
|
||||||
getActiveUserFunc: `/api/inquiry/getActiveUserFunc`, //获取各模块功能
|
|
||||||
toProductImageElementDelete: `/api/history/toProductImageElementDelete`, //删除指定模块上传的内容
|
|
||||||
recentActiveUser: `/api/inquiry/recentActiveUser`, //获取近期活跃用户
|
|
||||||
recentActiveUserChart: `/api/inquiry/recentActiveUserChart`, //获取近期活跃用户图表数据
|
|
||||||
recentNewUser: `/api/inquiry/recentNewUser`, //获取近期新增用户
|
|
||||||
recentNewUserChart: `/api/inquiry/recentNewUserChart`, //获取新增用户图表
|
|
||||||
trialUserCountry: `/api/inquiry/trialUserCountry`, //试用用户国家-城市分布
|
|
||||||
conversionRate: `/api/inquiry/conversionRate`, //试用用户国家-城市分布
|
|
||||||
getAllUserId: `/api/inquiry/getAllUserId`, //获取所有用户id和Name
|
|
||||||
adminAddUser: `/api/inquiry/addUser`, //添加用户
|
|
||||||
modifyUser: `/api/inquiry/modifyUser`, //修改用户
|
|
||||||
publishSysMessage: `/api/message/publishSysMessage`, //发布系统任务
|
|
||||||
//affiliate接口
|
|
||||||
viewsIncrease: `/api/affiliate/viewsIncrease`, //增加访问量
|
|
||||||
affiliateRegistration: `/api/affiliate/registration`, //affiliate注册
|
|
||||||
personalCenter: `/api/affiliate/personalCenter`, //affiliate个人中心
|
|
||||||
affiliateList: `/api/affiliate/list`, //affiliate审批列表
|
|
||||||
updateCommission: `/api/affiliate/updateCommission`, //编辑佣金比例
|
|
||||||
editAffiliate: `/api/affiliate/editAffiliate`, //编辑affiliate
|
|
||||||
getEachAffiliateGeneratedRevenue: `/api/affiliate/getEachAffiliateGeneratedRevenue`, //affiliate每个用户根据日期查询收益
|
|
||||||
affiliateApproval: `/api/affiliate/approval`, //affiliate同意 审批
|
|
||||||
getPersonalMonthlyIncome: `/api/affiliate/getPersonalMonthlyIncome`, //affiliate图表接口
|
|
||||||
getReferrals: `/api/affiliate/getReferrals`, //affiliate Referral列表
|
|
||||||
editReferral: `/api/affiliate/editReferral`, //affiliate编辑referral
|
|
||||||
batchDeleteReferral: `/api/affiliate/batchDeleteReferral`, //affiliate删除referral
|
|
||||||
// batchDeleteReferral:`/api/affiliate/batchDeleteReferral`,//affiliate删除referral
|
|
||||||
|
|
||||||
getTasksList: `/api/tasks/getList`, //获取w为执行完的所有任务
|
|
||||||
getTasksHistory: `/api/tasks/getAllTask`, //获取所有任务列表
|
|
||||||
prepareForSR: `/api/python/prepareForSR`, //超分
|
|
||||||
|
|
||||||
//作品广场
|
|
||||||
publish: `/api/portfolio/publish`, //发布作品到作品广场
|
|
||||||
getPorfolio: `/api/portfolio/page`, //查询作品广场
|
|
||||||
getPorfolioDetail: `/api/portfolio/detail`, //查询作品广场作品详情
|
|
||||||
setPorfolioChoose: `/api/portfolio/choose`, //二次创作
|
|
||||||
portfolioLike: `/api/portfolio/like`, //作品广场点赞
|
|
||||||
portfolioNoLike: `/api/portfolio/unlike`, //作品广场取消点赞
|
|
||||||
portfolioComment: `/api/portfolio/comment`, //作品广场评论
|
|
||||||
portfolioCommentPage: `/api/portfolio/commentPage`, //作品广场评论列表
|
|
||||||
commentDelete: `/api/portfolio/commentDelete`, //删除评论
|
|
||||||
porfolioDelete: `/api/portfolio/delete`, //删除作品
|
|
||||||
porfolioFollow: `/api/portfolio/follow`, //删除作品
|
|
||||||
porfolioFollow: `/api/portfolio/follow`, //关注
|
|
||||||
porfolioCancelFollow: `/api/portfolio/cancelFollow`, //取消关注
|
|
||||||
porfolioGetFolloweeList: `/api/portfolio/getFolloweeList`, //获取关注列表
|
|
||||||
porfolioGetFollowerList: `/api/portfolio/getFollowerList`, //获取粉丝列表
|
|
||||||
|
|
||||||
//product生成
|
|
||||||
toProduct: `/api/history/toProduct`, //开始生成
|
|
||||||
toProductImageResult: `/api/history/toProductImageResult`, //获取结果
|
|
||||||
toProductImageElementUpload: `/api/history/toProductImageElementUpload`, //上传
|
|
||||||
historyDeleteResult: `/api/history/deleteResult`, //relight toproduct删除
|
|
||||||
generateDeleteResult: `/api/generate/deleteResult`, //pose删除
|
|
||||||
|
|
||||||
productImageLike: `/api/history/productImageLike`, //like生成结果
|
|
||||||
productImageUnLike: `/api/history/productImageUnLike`, //取消like生成结果
|
|
||||||
productImageLikeList: `/api/history/productImageLikeList`, //like生成结果
|
|
||||||
|
|
||||||
//打光
|
|
||||||
relight: `/api/history/relight`, //开始生成
|
|
||||||
relightResult: `/api/history/relightResult`, //开始生成
|
|
||||||
|
|
||||||
//保存画布
|
|
||||||
canvasElementUpload: `/api/history/canvasElementUpload`, //画布上传临时图片
|
|
||||||
exportSave: `/api/history/exportSave`, //保存画布
|
|
||||||
exportSearch: `/api/history/exportSearch`, //保存画布
|
|
||||||
|
|
||||||
//活动
|
|
||||||
activity: `/api/account/activity`,
|
|
||||||
|
|
||||||
//bradDNA
|
|
||||||
brandLogoUpload: `/api/history/brandLogoUpload`, //上传bradDNA
|
|
||||||
brandDNAGenerate: `/api/history/brandDNAGenerate`, //上传bradDNA
|
|
||||||
brandDNAUpload: `/api/history/brandDNAUpload`, //上传DNA图片
|
|
||||||
getInitializeProgress: `/api/history/getInitializeProgress`, //获取brand进度
|
|
||||||
brandDNADelete: `/api/history/brandDNADelete`, //删除brandDna
|
|
||||||
|
|
||||||
brandDNAPage: `/api/history/brandDNAPage`, //brand列表
|
|
||||||
brandDNASaveOrUpdate: `/api/history/brandDNASaveOrUpdate`, //提交个人信息
|
|
||||||
productImageInitialize: `/api/history/productImageInitialize`, //产品识别
|
|
||||||
//调查问卷
|
|
||||||
questionnaire: `/api/account/questionnaire`, //保存画布
|
|
||||||
|
|
||||||
//消息系统
|
|
||||||
getUnreadCount: `/api/message/getUnreadCount`, //获取未读消息
|
|
||||||
setReadStatus: `/api/message/setReadStatus`, //设置消息已读
|
|
||||||
getHistoryNotification: `/api/message/getHistoryNotification`, //获取历史消息
|
|
||||||
oneClickRead: `/api/message/oneClickRead`, //全部设为已读
|
|
||||||
personalHomepage: `/api/account/personalHomepage`, //获取个人主页信息
|
|
||||||
refreshMinioUrl: `/api/third/party/refreshMinioUrl` //获取可以使用的minio地址
|
|
||||||
},
|
|
||||||
|
|
||||||
axiosGet(url, config) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
if (isLoginTime && url != '/api/portfolio/page') {
|
|
||||||
resolve('')
|
|
||||||
return
|
|
||||||
}
|
|
||||||
axios
|
|
||||||
.get(url, config)
|
|
||||||
.then(response => {
|
|
||||||
resolve(response)
|
|
||||||
})
|
|
||||||
.catch(error => {
|
|
||||||
reject(error)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
axiosPut(url, data) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
if (isLoginTime && url != '/api/portfolio/page') {
|
|
||||||
resolve('')
|
|
||||||
return
|
|
||||||
}
|
|
||||||
axios
|
|
||||||
.put(url, data)
|
|
||||||
.then(response => {
|
|
||||||
resolve(response)
|
|
||||||
})
|
|
||||||
.catch(error => {
|
|
||||||
reject(error)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
axiosPost(url, data, config) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
if (isLoginTime && url != '/api/portfolio/page') {
|
|
||||||
resolve('')
|
|
||||||
return
|
|
||||||
}
|
|
||||||
axios
|
|
||||||
.post(url, data, config)
|
|
||||||
.then(response => {
|
|
||||||
resolve(response)
|
|
||||||
})
|
|
||||||
.catch(error => {
|
|
||||||
reject(error)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
axiosDelete(url, newData) {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
if (isLoginTime && url != '/api/portfolio/page') {
|
|
||||||
resolve('')
|
|
||||||
return
|
|
||||||
}
|
|
||||||
axios
|
|
||||||
.delete(url, { data: newData })
|
|
||||||
.then(response => {
|
|
||||||
resolve(response)
|
|
||||||
})
|
|
||||||
.catch(error => {
|
|
||||||
reject(error)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,14 +17,14 @@
|
|||||||
mode="inline"
|
mode="inline"
|
||||||
@click="handleClick"
|
@click="handleClick"
|
||||||
>
|
>
|
||||||
<div v-for="(menu) in rootSubmenuKeys" :key="`menu-${menu.key}`" >
|
<div v-for="(menu) in rootSubmenuKeys" :key="menu.key" >
|
||||||
<a-menu-item :key="`item-${menu.key}`" :name="menu.name" :route="menu.route" v-if="!menu.children">
|
<a-menu-item :key="menu.key" :name="menu.name" :route="menu.route" v-if="!menu.children">
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<span :class="['icon','iconfont', 'menu_icon', menu.icon]"></span>
|
<span :class="['icon','iconfont', 'menu_icon', menu.icon]"></span>
|
||||||
</template>
|
</template>
|
||||||
<span class="menu_title" :title="menu.name">{{menu.name}}</span>
|
<span class="menu_title" :title="menu.name">{{menu.name}}</span>
|
||||||
</a-menu-item>
|
</a-menu-item>
|
||||||
<a-sub-menu :key="`sub-${menu.key}`" v-else>
|
<a-sub-menu :key="menu.key" v-else>
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<span :class="['icon','iconfont', 'menu_icon', menu.icon]"></span>
|
<span :class="['icon','iconfont', 'menu_icon', menu.icon]"></span>
|
||||||
</template>
|
</template>
|
||||||
@@ -67,7 +67,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { LoadingOutlined } from "@ant-design/icons-vue";
|
import { LoadingOutlined } from "@ant-design/icons-vue";
|
||||||
import { message, Upload } from "ant-design-vue";
|
import { message, Upload } from "ant-design-vue";
|
||||||
import { defineComponent, onMounted, h, ref, nextTick, computed,reactive, toRefs, onBeforeMount, watch } from "vue";
|
import { defineComponent, onMounted, h, ref, nextTick, computed,reactive, toRefs, onBeforeMount } from "vue";
|
||||||
import { MailOutlined, AppstoreOutlined, SettingOutlined } from '@ant-design/icons-vue';
|
import { MailOutlined, AppstoreOutlined, SettingOutlined } from '@ant-design/icons-vue';
|
||||||
import { Https } from "@/tool/https";
|
import { Https } from "@/tool/https";
|
||||||
import { useStore } from "vuex";
|
import { useStore } from "vuex";
|
||||||
@@ -102,38 +102,11 @@ export default defineComponent({
|
|||||||
// 5,7
|
// 5,7
|
||||||
rootSubmenuKeys: [],
|
rootSubmenuKeys: [],
|
||||||
openKeys: [],
|
openKeys: [],
|
||||||
selectedKeys: [],
|
selectedKeys: ['sub1'],
|
||||||
nowPageName:'All User',//当前页面名称
|
nowPageName:'All User',//当前页面名称
|
||||||
});
|
});
|
||||||
let routers:any = ref([])
|
let routers:any = ref([])
|
||||||
|
|
||||||
const syncMenuStatus = (path:string)=>{
|
|
||||||
if(!state.rootSubmenuKeys.length)return
|
|
||||||
let matched = false
|
|
||||||
state.rootSubmenuKeys.some((item:any)=>{
|
|
||||||
if(item.children){
|
|
||||||
const target = item.children.find((child:any)=>child.route === path)
|
|
||||||
if(target){
|
|
||||||
state.selectedKeys = [target.key]
|
|
||||||
state.openKeys = [`sub-${item.key}`]
|
|
||||||
state.nowPageName = target.name
|
|
||||||
matched = true
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}else if(item.route === path){
|
|
||||||
state.selectedKeys = [`item-${item.key}`]
|
|
||||||
state.openKeys = []
|
|
||||||
state.nowPageName = item.name
|
|
||||||
matched = true
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
})
|
|
||||||
if(!matched){
|
|
||||||
state.selectedKeys = []
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const onOpenChange = (openKeys: string[]) => {
|
const onOpenChange = (openKeys: string[]) => {
|
||||||
const latestOpenKey:any = openKeys.find(key => state.openKeys.indexOf(key) === -1);
|
const latestOpenKey:any = openKeys.find(key => state.openKeys.indexOf(key) === -1);
|
||||||
@@ -177,12 +150,24 @@ export default defineComponent({
|
|||||||
state.rootSubmenuKeys = adminRouter.all(t);
|
state.rootSubmenuKeys = adminRouter.all(t);
|
||||||
}
|
}
|
||||||
const route = router.currentRoute.value
|
const route = router.currentRoute.value
|
||||||
const isMenuRoute = state.rootSubmenuKeys.some((item:any) => item.route === route.path || item.children?.some((child:any)=>child.route === route.path))
|
if(state.rootSubmenuKeys.some((item:any) => item.route === route.path) || route.path == "/administrator"){
|
||||||
// 如果是管理员首页或未匹配菜单,才重定向到首个菜单;否则保持当前路由,避免刷新回到 allUser
|
|
||||||
if (route.path === "/administrator" || !isMenuRoute) {
|
|
||||||
router.push(state.rootSubmenuKeys[0].route)
|
router.push(state.rootSubmenuKeys[0].route)
|
||||||
|
}else{
|
||||||
|
router.push('/administrator')
|
||||||
}
|
}
|
||||||
syncMenuStatus(router.currentRoute.value.path)
|
// state.rootSubmenuKeys.forEach((item:any) => {
|
||||||
|
// if(item.children){
|
||||||
|
// item.children.forEach((item:any) => {
|
||||||
|
// if(item.route == router.currentRoute.value.path){
|
||||||
|
// state.selectedKeys[0] = item.key
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
// }else{
|
||||||
|
// if(item.route == router.currentRoute.value.path){
|
||||||
|
// state.selectedKeys[0] = item.key
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// });
|
||||||
//储存所有用户id和name
|
//储存所有用户id和name
|
||||||
Https.axiosGet(Https.httpUrls.getAllUserId,).then((rv: any) => {
|
Https.axiosGet(Https.httpUrls.getAllUserId,).then((rv: any) => {
|
||||||
if (rv) {
|
if (rv) {
|
||||||
@@ -207,11 +192,8 @@ export default defineComponent({
|
|||||||
// router.push(state.rootSubmenuKeys[0].route)
|
// router.push(state.rootSubmenuKeys[0].route)
|
||||||
|
|
||||||
})
|
})
|
||||||
watch(()=>router.currentRoute.value.path,(path)=>{
|
onBeforeMount(()=>{
|
||||||
syncMenuStatus(path)
|
state.selectedKeys = ['sub1']
|
||||||
},{immediate:true})
|
|
||||||
onBeforeMount(()=>{
|
|
||||||
state.selectedKeys = []
|
|
||||||
})
|
})
|
||||||
return {
|
return {
|
||||||
...toRefs(state),
|
...toRefs(state),
|
||||||
|
|||||||
@@ -394,23 +394,23 @@
|
|||||||
<span class="select_item_des">{{ $t('Header.Tutorial') }}</span>
|
<span class="select_item_des">{{ $t('Header.Tutorial') }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="select_item logo">
|
<div class="select_item logo">
|
||||||
<a href="https://www.tiktok.com/@aida_codecreate" target="_blank" >
|
<a href="https://www.tiktok.com" target="_blank" >
|
||||||
<img src="@/assets/images/socialMediaLogo/tikTokIcon.svg" alt="">
|
<img src="@/assets/images/socialMediaLogo/tikTokIcon.png" alt="">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://www.facebook.com/CodeCreateAI" target="_blank" >
|
<a href="https://www.instagram.com" target="_blank" >
|
||||||
<img src="@/assets/images/socialMediaLogo/faceBookIcon.svg" alt="">
|
<img src="@/assets/images/socialMediaLogo/instagramIcon.png" alt="">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://www.youtube.com/@AiDA-3.1" target="_blank" >
|
<a href="https://www.youtube.com" target="_blank" >
|
||||||
<img src="@/assets/images/socialMediaLogo/socialIcons.svg" alt="">
|
<img src="@/assets/images/socialMediaLogo/youTubeIcon.png" alt="">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://www.linkedin.com/company/code-create-limited" target="_blank" >
|
<a href="https://www.xiaohongshu.com" target="_blank" >
|
||||||
<img src="@/assets/images/socialMediaLogo/linkedinIcon.svg" alt="">
|
<img src="@/assets/images/socialMediaLogo/xiaoHongShuIcon.png" alt="">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://xhslink.com/m/5Ony2FapizV" target="_blank" >
|
<a href="https://www.zhihu.com" target="_blank" >
|
||||||
<img src="@/assets/images/socialMediaLogo/xiaoHongShuIcon.svg" alt="">
|
<img src="@/assets/images/socialMediaLogo/zhiHuIcon.png" alt="">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://space.bilibili.com/3546717609789876?spm_id_from=333.788.upinfo.head.click" target="_blank" >
|
<a href="https://www.bilibili.com/" target="_blank" >
|
||||||
<img src="@/assets/images/socialMediaLogo/biliBliIcon.svg" alt="">
|
<img src="@/assets/images/socialMediaLogo/biliBliIcon.png" alt="">
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -427,12 +427,11 @@
|
|||||||
<div class="userSystem" v-show="pastDuePage">
|
<div class="userSystem" v-show="pastDuePage">
|
||||||
{{ $t('Header.pastDue') }}
|
{{ $t('Header.pastDue') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="router" v-if="!loading">
|
<div class="router" v-if="!getLangIsShowMark">
|
||||||
<home
|
<home
|
||||||
ref="home"
|
ref="home"
|
||||||
@setNewProject="() => (leftShow = true)"
|
@setNewProject="() => (leftShow = true)"
|
||||||
@setTask="setTask"
|
@setTask="setTask"
|
||||||
:key="userDetail.language"
|
|
||||||
></home>
|
></home>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -443,10 +442,10 @@
|
|||||||
<UpgradePlan ref="UpgradePlan"></UpgradePlan>
|
<UpgradePlan ref="UpgradePlan"></UpgradePlan>
|
||||||
<TaskPage ref="TaskPage"></TaskPage>
|
<TaskPage ref="TaskPage"></TaskPage>
|
||||||
|
|
||||||
<!-- <div class="mark_loading" v-show="loading">
|
<div class="mark_loading" v-show="getLangIsShowMark">
|
||||||
<a-spin size="large" />
|
<a-spin size="large" />
|
||||||
</div> -->
|
</div>
|
||||||
<!-- <RobotAssist v-if="!loading"></RobotAssist> -->
|
<!-- <RobotAssist v-if="!getLangIsShowMark"></RobotAssist> -->
|
||||||
<scaleVideo ref="scaleVideo"></scaleVideo>
|
<scaleVideo ref="scaleVideo"></scaleVideo>
|
||||||
<!-- 进行续订 -->
|
<!-- 进行续订 -->
|
||||||
<renew ref="renew"></renew>
|
<renew ref="renew"></renew>
|
||||||
@@ -583,7 +582,7 @@ export default defineComponent({
|
|||||||
const getIdExistToHistory = async () => {
|
const getIdExistToHistory = async () => {
|
||||||
return await new Promise((resolve, reject) => {
|
return await new Promise((resolve, reject) => {
|
||||||
let value = {
|
let value = {
|
||||||
id: Number(route.query?.id || route.query?.history)
|
id: Number(route.params?.id || route.query?.history)
|
||||||
}
|
}
|
||||||
Https.axiosPost(Https.httpUrls.historyProject, value)
|
Https.axiosPost(Https.httpUrls.historyProject, value)
|
||||||
.then(rv => {
|
.then(rv => {
|
||||||
@@ -604,9 +603,9 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
const key = Object.keys(query)?.[0]
|
const key = Object.keys(query)?.[0]
|
||||||
if (key) {
|
if (key) {
|
||||||
if (query.id && !query.tools) {
|
if (route.params?.id && !query.tools) {
|
||||||
homeMainData.openType = 'history'
|
homeMainData.openType = 'history'
|
||||||
homeMainData.openTypeChild = query.id
|
homeMainData.openTypeChild = route.params?.id
|
||||||
} else {
|
} else {
|
||||||
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]]
|
||||||
@@ -615,10 +614,6 @@ export default defineComponent({
|
|||||||
homeMainData.openTypeChild = ''
|
homeMainData.openTypeChild = ''
|
||||||
homeMainData.openType = ''
|
homeMainData.openType = ''
|
||||||
}
|
}
|
||||||
if ((query?.id || query?.history) && !(await getIdExistToHistory())) {
|
|
||||||
router.push('/home')
|
|
||||||
return
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
homeMainData.openType = ''
|
homeMainData.openType = ''
|
||||||
homeMainData.openTypeChild = ''
|
homeMainData.openTypeChild = ''
|
||||||
@@ -661,7 +656,7 @@ export default defineComponent({
|
|||||||
})
|
})
|
||||||
|
|
||||||
let activeCredits = ref(false)
|
let activeCredits = ref(false)
|
||||||
let loading = computed(() => (store.state.loading))
|
let getLangIsShowMark = ref(true)
|
||||||
let messageNum = computed(() => {
|
let messageNum = computed(() => {
|
||||||
return store.state.UserHabit.messageSystem.messageNum
|
return store.state.UserHabit.messageSystem.messageNum
|
||||||
})
|
})
|
||||||
@@ -938,12 +933,12 @@ export default defineComponent({
|
|||||||
rv.content.forEach((item, index) => {
|
rv.content.forEach((item, index) => {
|
||||||
let str = categorizeDate(item.updateTime) + 'list'
|
let str = categorizeDate(item.updateTime) + 'list'
|
||||||
homeMainData.navTypeList.history[str].push(item)
|
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
|
existToHistoryIndex = rv.page * rv.size + index + 1 - rv.size
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
homeMainData.historyData.isNull = false
|
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 {
|
} else {
|
||||||
homeMainData.historyData.isNoData = true
|
homeMainData.historyData.isNoData = true
|
||||||
}
|
}
|
||||||
@@ -1075,7 +1070,7 @@ export default defineComponent({
|
|||||||
isMurmur,
|
isMurmur,
|
||||||
credits,
|
credits,
|
||||||
activeCredits,
|
activeCredits,
|
||||||
loading,
|
getLangIsShowMark,
|
||||||
messageNum,
|
messageNum,
|
||||||
messageType,
|
messageType,
|
||||||
...toRefs(stateList),
|
...toRefs(stateList),
|
||||||
@@ -1133,11 +1128,11 @@ export default defineComponent({
|
|||||||
this.store
|
this.store
|
||||||
.dispatch('getLangType')
|
.dispatch('getLangType')
|
||||||
.then(() => {
|
.then(() => {
|
||||||
this.store.commit('set_loading', false)
|
this.getLangIsShowMark = false
|
||||||
resolve()
|
resolve()
|
||||||
})
|
})
|
||||||
.catch(() => {
|
.catch(() => {
|
||||||
this.store.commit('set_loading', false)
|
this.getLangIsShowMark = false
|
||||||
reject()
|
reject()
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
@@ -1339,7 +1334,7 @@ export default defineComponent({
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
setLang(v) {
|
setLang(v) {
|
||||||
this.store.commit('set_loading', true)
|
this.getLangIsShowMark = true
|
||||||
Https.axiosGet(Https.httpUrls.changeUserLanguage, { params: { language: v } })
|
Https.axiosGet(Https.httpUrls.changeUserLanguage, { params: { language: v } })
|
||||||
.then(rv => {
|
.then(rv => {
|
||||||
if (rv) {
|
if (rv) {
|
||||||
@@ -1356,11 +1351,11 @@ export default defineComponent({
|
|||||||
window.location.reload()
|
window.location.reload()
|
||||||
// window.location.href = '/home';
|
// window.location.href = '/home';
|
||||||
}
|
}
|
||||||
this.store.commit('set_loading', false)
|
this.getLangIsShowMark = false
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch(() => {
|
.catch(() => {
|
||||||
this.store.commit('set_loading', false)
|
this.getLangIsShowMark = false
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -2043,15 +2038,16 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
.logo{
|
.logo{
|
||||||
padding: 1rem 0.5rem;
|
padding: 1rem 0.5rem;
|
||||||
gap: 1.8rem;
|
gap: 1rem;
|
||||||
cursor: auto;
|
cursor: auto;
|
||||||
justify-content: center;
|
|
||||||
> a{
|
> a{
|
||||||
width: auto;
|
width: 2.5rem;
|
||||||
height: 2.4rem;
|
height: 2.5rem;
|
||||||
|
border-radius: .5rem;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
display: flex;
|
display: flex;
|
||||||
> img{
|
> img{
|
||||||
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -175,7 +175,7 @@ export default defineComponent({
|
|||||||
if (record.text == 1) {
|
if (record.text == 1) {
|
||||||
str = useI18n().t('newScaleImage.Original')
|
str = useI18n().t('newScaleImage.Original')
|
||||||
} else {
|
} else {
|
||||||
str = `@${record.record.originalAccountName}/${record.record.originalPortfolioName}`
|
str = `@${record.record.userLikeGroupVO.originalAccountName}/${record.record.userLikeGroupVO.originalPortfolioName}`
|
||||||
}
|
}
|
||||||
// let time = formatTime(record.text / 1000, 'YYYY-MM-DD hh:mm:ss')
|
// let time = formatTime(record.text / 1000, 'YYYY-MM-DD hh:mm:ss')
|
||||||
return str
|
return str
|
||||||
@@ -857,7 +857,7 @@ export default defineComponent({
|
|||||||
padding: 0 1rem;
|
padding: 0 1rem;
|
||||||
|
|
||||||
.operate_item {
|
.operate_item {
|
||||||
font-size: 1.6rem;
|
// font-size: 1.4rem;
|
||||||
font-family: Roboto;
|
font-family: Roboto;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
color: #007ee5;
|
color: #007ee5;
|
||||||
|
|||||||
@@ -43,12 +43,15 @@
|
|||||||
<span>{{ t('Login.LogonToAiDA') }}</span>
|
<span>{{ t('Login.LogonToAiDA') }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="info" v-show="!loginType">{{ t('Login.Infomation') }}</div>
|
<div class="info" v-show="!loginType">{{ t('Login.Infomation') }}</div>
|
||||||
<personal ref="personal" v-if="loginType == 'personal'"></personal>
|
<personal ref="personal" v-if="loginType == 'personal'" v-model:isMask="isMask"></personal>
|
||||||
<school ref="school" v-if="loginType == 'school'"></school>
|
<school ref="school" v-if="loginType == 'school'"></school>
|
||||||
<enterprise ref="enterprise" v-if="loginType == 'enterprise'"></enterprise>
|
<enterprise ref="enterprise" v-if="loginType == 'enterprise'"></enterprise>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="mark_loading" v-show="isMask">
|
||||||
|
<a-spin size="large" />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -100,6 +103,7 @@ export default defineComponent({
|
|||||||
|
|
||||||
const loginData = reactive({
|
const loginData = reactive({
|
||||||
loginType: "",
|
loginType: "",
|
||||||
|
isMask: false,
|
||||||
});
|
});
|
||||||
const dataDom = reactive({
|
const dataDom = reactive({
|
||||||
personal: null as any,
|
personal: null as any,
|
||||||
|
|||||||